From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id DB539A04B5; Thu, 29 Oct 2020 21:54:23 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6412CC9DC; Thu, 29 Oct 2020 21:54:21 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2065.outbound.protection.outlook.com [40.107.21.65]) by dpdk.org (Postfix) with ESMTP id 2E4ABC9D8 for ; Thu, 29 Oct 2020 21:54:19 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VQxJr/zv3MF/NmBr9kuZWtAOtwA0tSHc0l/ea4xshBU=; b=LcR0L2eE/CoFycd3an/xLboJJ+Z+jblaU9I64WV2VQp32Tk7OJqRnHTdRr+oBVXLYex33gHMt73buGl4ss5a9G3OhPsp+3povBasmiTbaqa6NTnJNDlFA1dKCTq8+d1cTnVL7L0IlMKZv9BlloIdT/hTA8OhK1IiVd6BJmhM4sY= Received: from DB8PR09CA0002.eurprd09.prod.outlook.com (2603:10a6:10:a0::15) by VI1PR08MB3359.eurprd08.prod.outlook.com (2603:10a6:803:3e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.18; Thu, 29 Oct 2020 20:54:16 +0000 Received: from DB5EUR03FT053.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:a0:cafe::34) by DB8PR09CA0002.outlook.office365.com (2603:10a6:10:a0::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.18 via Frontend Transport; Thu, 29 Oct 2020 20:54:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT053.mail.protection.outlook.com (10.152.21.119) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3520.15 via Frontend Transport; Thu, 29 Oct 2020 20:54:15 +0000 Received: ("Tessian outbound 68da730eaaba:v64"); Thu, 29 Oct 2020 20:54:15 +0000 X-CR-MTA-TID: 64aa7808 Received: from e622a0d4fd23.4 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 5BBDF0FE-7DE6-4BE4-B513-91FCF7614533.1; Thu, 29 Oct 2020 20:54:10 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e622a0d4fd23.4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 29 Oct 2020 20:54:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MQmb14vfoUM2aGHcg3n5Q5ij4k3H52xPxaj8bYp36upFud6bqosLTeaEnoQ/WNa3ZlxtH5LJsnrRZvZ1ppbBy31pq9KXhKbbcCBceDVJz3DJu1xddMRl3ru5uO9epCrj6fLNhNog5XM1alk58fXFMIf5JGxREoLcHQOuDl07onOKcXx5MRGyzeBMN6gNTDkw1KGy9Wk4GxIkNS/iDvGdzN0e6YiAmKoLrK6jCL0Qv5S0bF12EyO1ftd8ANnVSll11wCK/enKzpxtYtyeizTdp2ya4wrChaYjUQttmfAifDEJhnfdD7HOcXmJq5hAAD77eLUE622yYtuhUAeJb5HdJw== 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-SenderADCheck; bh=VQxJr/zv3MF/NmBr9kuZWtAOtwA0tSHc0l/ea4xshBU=; b=J6zgu+eAZAIrVEDfAN1+USLMfX8mbEZ4oWlI7Ue8X1L7bhbPL8Cd0OtzayboWji7WTkW5jn/4bkdAxykBkWksuZzuWXHZtma9dNdkSAlZcY+QSbVcQZow+5PYh7iOx35Tdb3SjCI67YaMNgoMg8fhu2MHoL8P3Lx6Bj2qx0AaNkFjYgkkq8YyMC4fuq/lmcrwe3L628C/WQz4qgomTCEe+RqMqtx+Sl+GlbvgGMQayEPCC1sqD7pTyhhjHrRGo8h8GaNoJMffs5PymQrxMAuwRRh2GsQBM1ewGu19cfK13BTPW0AikWbsQz0nf5mIHcHGNIbPfDE+YH1uFbVScit9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VQxJr/zv3MF/NmBr9kuZWtAOtwA0tSHc0l/ea4xshBU=; b=LcR0L2eE/CoFycd3an/xLboJJ+Z+jblaU9I64WV2VQp32Tk7OJqRnHTdRr+oBVXLYex33gHMt73buGl4ss5a9G3OhPsp+3povBasmiTbaqa6NTnJNDlFA1dKCTq8+d1cTnVL7L0IlMKZv9BlloIdT/hTA8OhK1IiVd6BJmhM4sY= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by DB7PR08MB3082.eurprd08.prod.outlook.com (2603:10a6:5:1d::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.23; Thu, 29 Oct 2020 20:54:07 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::7814:9c1:781f:475d]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::7814:9c1:781f:475d%4]) with mapi id 15.20.3499.028; Thu, 29 Oct 2020 20:54:07 +0000 From: Honnappa Nagarahalli To: =?utf-8?B?SnVyYWogTGlua2XFoQ==?= , "bruce.richardson@intel.com" , Ruifeng Wang , Phil Yang , "vcchunga@amazon.com" , Dharmik Thakkar , "jerinjacobk@gmail.com" , "hemant.agrawal@nxp.com" CC: "dev@dpdk.org" , nd , Honnappa Nagarahalli , nd Thread-Topic: [PATCH v4 2/6] build: refactor Arm build Thread-Index: AQHWq9bPhcaoO33KoUuGpt+rWvzyyqmsHFuwgAIzPwCAALDZMA== Date: Thu, 29 Oct 2020 20:54:07 +0000 Message-ID: References: <1603280261-20206-1-git-send-email-juraj.linkes@pantheon.tech> <1603464488-25493-1-git-send-email-juraj.linkes@pantheon.tech> <1603464488-25493-3-git-send-email-juraj.linkes@pantheon.tech> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: CCA0A6B21BBEE948B348060781D917E6.0 x-checkrecipientchecked: true Authentication-Results-Original: pantheon.tech; dkim=none (message not signed) header.d=none; pantheon.tech; dmarc=none action=none header.from=arm.com; x-originating-ip: [70.113.13.105] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c70be6bc-e28f-496c-9add-08d87c4ccc34 x-ms-traffictypediagnostic: DB7PR08MB3082:|VI1PR08MB3359: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: sNY2X5oyfHnLaam3s4ZlJUKIBmuoEHZEUZ9ltNfDpAOq1Y/3j2qy2ANb4daVIw1XvY+1NDzrbypZ8f+trHSio3SqVzNDOZL6x0h5gGD8PQ8sCer47/i1YLlGCMHCm0nPvc4jS2iiZ0EdRfuhK1lZ+XFERtUm2E/2n2h1AKFY7DhQ+C6j4EqSt4S/KNRACAmIHcQj/hzlAO07F5XettlT/qvbBTSTeuZZwV8nrD9Hb1oH9lvz890XEPkWDbVRvQvgpmZhXrb+TJgew2dvA961fQPOjgh4KH2wjhdpq718/I30DKlIRIqQQ1r7xqjbrN0Iqd5fN7AEDfNl5l9/oQeQTQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(396003)(376002)(346002)(366004)(136003)(54906003)(110136005)(316002)(478600001)(8676002)(8936002)(33656002)(55016002)(52536014)(71200400001)(4326008)(83380400001)(186003)(26005)(6506007)(76116006)(30864003)(86362001)(5660300002)(66446008)(64756008)(2906002)(66556008)(7696005)(66476007)(66946007)(9686003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: OS7foA5u30qTna271RxxGsuAvU1wG3G1g33qtEBXvqo8dstO5lMOdspE7fpejplIHOjWZXrv8VDn80cD7YpNd7bSThQzTuPGsmTiZDVP2ZyPiDfBNbQg6tJX8s118QAtOuy4SMm4vRoFwtgedyWEiBiCAim689qBnnC8vTg9WLS5esFNsudj56hou6YXfgacn1XJJZMKlISDYZ/GSygBVtzwq4ns1pP9n7DIcz/pdMhPVnyLgsvEhmD9hhG7Q63rpU+iCDygW6Sc6KJSmLO8s52UDzvbFam3Wzt8oXe9eYwt1Dh1QPUIL6JwiTAkZmzFPaQtwQuRDDBooqpA8o/VOtumgeAGk5H5bsB0pg9sra5HYRnn3RqAp0+KwjSW2UcbXEe9yjdZRf8mPVrHwjrRpyEdvyUUb8Dc9BPNdthtHXoAGC/2efex+Cei1sKBnrJrrGtc+ZZxFv86lyIEUP/iLImnGzs6qMkuKKjDVqGOfd90tQtiZM7t7LVFaRLIiE+BIQyr/deNZcqvUT5mazNejOJtFVcheYYxseWKdVTiw4ofLGJKtfWB7GQsLzzuoquiS89cIGJv5ELJ7htlwq0wD94gWJd/HFK+DsgC8rwydHZQfUW0RmLL7Ga0OJkyYkofoFS4wq3lbKNaS9D+aA6K6w== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3082 Original-Authentication-Results: pantheon.tech; dkim=none (message not signed) header.d=none; pantheon.tech; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT053.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: fc6ea4d6-99cf-4c24-d3c7-08d87c4cc739 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: A2ihKiB9LNdOn38zuBHJ/n8efsxHFnzzulrzHzSim8S9FCHk5wsZbFX7yFNiCWS0KNXGfBF46+mNEbK1CiecW0Kck4vPu0ohSQmzoOfqdy7BW2dLBLAmuNzmqgaOLYZenD3AD0uzgftAdaHAbrPFnyeuvqmpZ7qSDR8KfvBDJP9KkZJ8XrMcM7coquK11UX18O7O1NnpnJItTFCtWVtdIfFM0G9792N5LlbbJzG4nhvoqD8vFkoJjhcmc1wd9WQ6ADFRNIyLWHAHLHYum25ovplUWCu40RWhUtdEjPLlHwH4L7C+PvGKTtX0jVb8OIUYPphkrXOdoxYRD9FAt+BM01to5/6RLtOOU5487APeTjunpve8T8kQ6EAkz75CyweZWeMoaoPdM4Jwu+3BlB6Bzg== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(346002)(136003)(376002)(396003)(39860400002)(46966005)(2906002)(82310400003)(52536014)(356005)(5660300002)(86362001)(336012)(83380400001)(8676002)(55016002)(8936002)(30864003)(70586007)(70206006)(33656002)(9686003)(478600001)(186003)(82740400003)(47076004)(7696005)(26005)(316002)(81166007)(54906003)(110136005)(6506007)(4326008); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2020 20:54:15.8218 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c70be6bc-e28f-496c-9add-08d87c4ccc34 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT053.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3359 Subject: Re: [dpdk-dev] [PATCH v4 2/6] build: refactor Arm build X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" PiA+IDxzbmlwPg0KPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvY29uZmlnL2FybS9tZXNvbi5idWls ZCBiL2NvbmZpZy9hcm0vbWVzb24uYnVpbGQgaW5kZXgNCj4gPiA+IDQ5MTg0MmNhZC4uNmMzMWFi MTY3IDEwMDY0NA0KPiA+ID4gLS0tIGEvY29uZmlnL2FybS9tZXNvbi5idWlsZA0KPiA+ID4gKysr IGIvY29uZmlnL2FybS9tZXNvbi5idWlsZA0KPiA+ID4gQEAgLTMsMTIgKzMsMTIgQEANCj4gPiA+ ICAjIENvcHlyaWdodChjKSAyMDE3IENhdml1bSwgSW5jDQo+ID4gPiAgIyBDb3B5cmlnaHQoYykg MjAyMCBQQU5USEVPTi50ZWNoIHMuci5vLg0KPiA+ID4NCj4gPiA+IC0jIGZvciBjaGVja2luZyBk ZWZpbmVzIHdlIG5lZWQgdG8gdXNlIHRoZSBjb3JyZWN0IGNvbXBpbGVyIGZsYWdzDQo+ID4gPiAt bWFyY2hfb3B0ID0gJy1tYXJjaD1AMEAnLmZvcm1hdChtYWNoaW5lKQ0KPiA+ID4gLQ0KPiA+ID4g KyMgc2V0IGFybV9mb3JjZV9uYXRpdmVfbWFyY2ggaWYgeW91IHdhbnQgdG8gdXNlIG1hY2hpbmUg YXJncyBiZWxvdw0KPiA+ID4gKyMgaW5zdGVhZCBvZiBkaXNjb3ZlcmVkIHZhbHVlczsgb25seSB3 b3JrcyB3aGVuIGRvaW5nIGFuIGFjdHVhbA0KPiA+ID4gK25hdGl2ZSBidWlsZA0KPiA+ID4gIGFy bV9mb3JjZV9uYXRpdmVfbWFyY2ggPSBmYWxzZQ0KPiA+ID4gLWFybV9mb3JjZV9nZW5lcmljX21h cmNoID0gKG1hY2hpbmUgPT0gJ2dlbmVyaWMnKQ0KPiA+ID4gK25hdGl2ZV9tYWNoaW5lX2FyZ3Mg PSBbJy1tYXJjaD1uYXRpdmUnLCAnLW10dW5lPW5hdGl2ZSddDQo+ID4gPg0KPiA+DQo+ID4gWy4u Ll0NCj4gPg0KPiA+ID4gLQ0KPiA+ID4gLW1hY2hpbmVfYXJnc19kZWZhdWx0ID0gWw0KPiA+ID4g LQlbJ2RlZmF1bHQnLCBbJy1tYXJjaD1hcm12OC1hK2NyYycsICctbW91dGxpbmUtYXRvbWljcydd XSwNCj4gPiA+IC0JWyduYXRpdmUnLCBbJy1tYXJjaD1uYXRpdmUnXV0sDQo+ID4gPiAtCVsnMHhk MDMnLCBbJy1tY3B1PWNvcnRleC1hNTMnXV0sDQo+ID4gPiAtCVsnMHhkMDQnLCBbJy1tY3B1PWNv cnRleC1hMzUnXV0sDQo+ID4gPiAtCVsnMHhkMDcnLCBbJy1tY3B1PWNvcnRleC1hNTcnXV0sDQo+ ID4gPiAtCVsnMHhkMDgnLCBbJy1tY3B1PWNvcnRleC1hNzInXV0sDQo+ID4gPiAtCVsnMHhkMDkn LCBbJy1tY3B1PWNvcnRleC1hNzMnXV0sDQo+ID4gPiAtCVsnMHhkMGEnLCBbJy1tY3B1PWNvcnRl eC1hNzUnXV0sDQo+ID4gPiAtCVsnMHhkMGInLCBbJy1tY3B1PWNvcnRleC1hNzYnXV0sDQo+ID4g PiAtCVsnMHhkMGMnLCBbJy1tYXJjaD1hcm12OC4yLWErY3JjK2NyeXB0bycsICctbWNwdT1uZW92 ZXJzZS1uMSddLA0KPiA+ID4gZmxhZ3NfbjFzZHBfZXh0cmFdXQ0KPiA+ID4gLQ0KPiA+ID4gLW1h Y2hpbmVfYXJnc19jYXZpdW0gPSBbDQo+ID4gPiAtCVsnZGVmYXVsdCcsIFsnLW1hcmNoPWFybXY4 LWErY3JjK2NyeXB0bycsJy1tY3B1PXRodW5kZXJ4J11dLA0KPiA+ID4gLQlbJ25hdGl2ZScsIFsn LW1hcmNoPW5hdGl2ZSddXSwNCj4gPiA+IC0JWycweGExJywgWyctbWNwdT10aHVuZGVyeHQ4OCdd LCBmbGFnc190aHVuZGVyeF9leHRyYV0sDQo+ID4gPiAtCVsnMHhhMicsIFsnLW1jcHU9dGh1bmRl cnh0ODEnXSwgZmxhZ3NfdGh1bmRlcnhfZXh0cmFdLA0KPiA+ID4gLQlbJzB4YTMnLCBbJy1tY3B1 PXRodW5kZXJ4dDgzJ10sIGZsYWdzX3RodW5kZXJ4X2V4dHJhXSwNCj4gPiA+IC0JWycweGFmJywg WyctbWFyY2g9YXJtdjguMS1hK2NyYytjcnlwdG8nLCctbWNwdT10aHVuZGVyeDJ0OTknXSwNCj4g PiA+IGZsYWdzX3RodW5kZXJ4Ml9leHRyYV0sDQo+ID4gPiAtCVsnMHhiMicsIFsnLW1hcmNoPWFy bXY4LjItYStjcmMrY3J5cHRvK2xzZScsJy1tY3B1PW9jdGVvbnR4MiddLA0KPiA+ID4gZmxhZ3Nf b2N0ZW9udHgyX2V4dHJhXV0NCj4gPiA+IC0NCj4gPiA+IC1tYWNoaW5lX2FyZ3NfZW1hZyA9IFsN Cj4gPiA+IC0JWydkZWZhdWx0JywgWyctbWFyY2g9YXJtdjgtYStjcmMrY3J5cHRvJywgJy1tdHVu ZT1lbWFnJ11dLA0KPiA+ID4gLQlbJ25hdGl2ZScsIFsnLW1hcmNoPW5hdGl2ZSddXV0NCj4gPiA+ ICsJWydSVEVfVVNFX0MxMV9NRU1fTU9ERUwnLCB0cnVlXQ0KPiA+ID4gK10NCj4gPiA+ICsjIGFy bSBjb25maWcgKGltcGxlbWVudGVyIDB4NDEpIGlzIHRoZSBkZWZhdWx0IGNvbmZpZw0KPiA+ID4g K3BuX2NvbmZpZ19kZWZhdWx0DQo+ID4gV2hhdCBkb2VzIGl0IG1lYW4gYnkgJ2RlZmF1bHQnIGhl cmU/IEkgYW0gc29tZXdoYXQgY29uZnVzZWQgYmV0d2Vlbg0KPiAnZGVmYXVsdCcNCj4gPiBhbmQg J2dlbmVyaWMnLiBXZSBzaG91bGQgbG9vayB0byByZW1vdmUgJ2RlZmF1bHQnIGFzIG11Y2ggYXMg cG9zc2libGUNCj4gPiBhbmQgc3RpY2sgd2l0aCAnZ2VuZXJpYycuDQo+ID4NCj4gDQo+IFRoaXMg ZGVmYXVsdCBtZWFucyB3aGF0IGRlZmF1bHQgbWVhbnMsIG5vIHNwZWNpYWwgbWVhbmluZywgdGhh dCBpcyBpZiB0aGVyZSBpc24ndA0KPiBhIG1vcmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgZGVm YXVsdCB0byB0aGlzIG9uZS4gSXQncyBwb3NzaWJsZSB0aGF0IGdlbmVyaWMgaXMNCj4gYmV0dGVy LCBidXQgbm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgdXNpbmcgc29tZXRoaW5nIGVsc2UgdGhh biBkZWZhdWx0IG9yDQo+IGdlbmVyaWMgbWlnaHQgYmUgdGhlIGJlc3QgdG8gYXZvaWQgY29uZnVz aW9uLiBQb3NzaWJseSBqdXN0IHBhcnRfbnVtYmVyX2FybSwNCj4gd2hpY2ggd2lsbCBtYWtlIGl0 IGluIGxpbmUgd2l0aCB0aGUgb3RoZXIgdmFyIG5hbWVzLg0KQWdyZWUsIGJldHRlciB0byBjYWxs IGl0ICdwYXJ0X251bWJlcl9hcm0nLg0KDQo+IA0KPiA+ID4gKz0gew0KPiA+ID4gKwknZ2VuZXJp Yyc6IFtbJy1tYXJjaD1hcm12OC1hK2NyYycsICctbW91dGxpbmUtYXRvbWljcyddXSwNCj4gPiBJ IGxpa2UgdGhhdCB3ZSBoYXZlIHRha2VuIG91dCAnbmF0aXZlJyBmcm9tIHRoaXMgbGlzdC4gV291 bGQgaXQgYmUNCj4gPiBwb3NzaWJsZSB0byB0YWtlIG91dCAnZ2VuZXJpYycgZnJvbSB0aGlzIGFu ZCBvdGhlcnMgYmVsb3cuIFRoaXMgaXMNCj4gPiBiZWNhdXNlIHRoZSBiaW5hcnkgYnVpbHQgd2l0 aCAnZ2VuZXJpYycgYnVpbGQgc2hvdWxkIHJ1biBvbiBhbnkgQXJtDQo+ID4gcGxhdGZvcm0uIFRo ZXJlIGlzIG5vIGRlcGVuZGVuY3kgb24gYW55IHVuZGVybHlpbmcgcGxhdGZvcm0uDQo+ID4NCj4g DQo+IFRoaXMgYWN0dWFsbHkgbWVhbnMgZ2VuZXJpYyBwYXJ0IGZvciB0aGUgaW1wbGVtZW50ZXIs IG5vdCBnZW5lcmljIGZvcg0KPiBldmVyeXRoaW5nLiBJIHVuZGVyc3RhbmQgdGhpcyBpcyBoZXJl IHRvIHByb2R1Y2UgYmluYXJpZXMgdGhhdCB3b3VsZCBydW4gb24NCj4gZXZlcnl0aGluZyBmcm9t IHRoYXQgaW1wZWxlbWV0ZXIgKGluIGxpbmUgb2Ygd2hhdCB5b3UgbWVudGlvbiBiZWxvdywgdGhp cw0KPiB3b3VsZCBiZSBpbXBsZW1lbnRlci1nZW5lcmljIGNvbmZpZ3VyYXRpb24sIGEgZm91cnRo IGNhdGVnb3J5KS4gSW4gbXkNCj4gcGF0Y2hzZXQsIGl0J3MgYWxzbyBhIGZhbGxiYWNrIHdoZW4g YnVpbGRpbmcgZm9yIGFuIHVua25vd24gcGFydCBudW1iZXIgZnJvbQ0KPiB0aGUgaW1wbGVtZW50 ZXIuDQpXZSBkbyBub3QgbmVlZCBpbXBsZW1lbnRlci1nZW5lcmljIGJpbmFyaWVzL2J1aWxkLiBI b3dldmVyLCB3ZSB3aWxsIGhhdmUgc29tZSBwYXJhbWV0ZXJzIHRoYXQgYXJlIGNvbW1vbiBhY3Jv c3MgYWxsIHRoZSBwYXJ0IG51bWJlcnMgZnJvbSB0aGF0IGltcGxlbWVudGVyIChwcm9iYWJseSB3 ZSBzaG91bGQgbm90IGNhbGwgaXQgYXMgJ2ltcGxlbWVudGVyLWdlbmVyaWMnIHRvIGF2b2lkIGNv bmZ1c2lvbi4gTWF5IGJlICdpbXBsZW1lbnRlci1jb21tb24tZmxhZ3MnIG9yICdpbXBsZW1lbnRl ci1mbGFncy1leHRyYScpLiBUaG9zZSBwYXJhbWV0ZXJzIGNhbiBiZSB1c2VkIGZvciBldmVyeSBw YXJ0IG51bWJlci4NCg0KSWYgd2Uga25vdyB0aGUgaW1wbGVtZW50ZXIsIHdlIHdpbGwgaGF2ZSB0 aGUgcGFydCBudW1iZXIgYXMgd2VsbCAodGhpcyBpcyBwYXJ0IG9mIHRoZSBBcm0gYXJjaGl0ZWN0 dXJlIGRlZmluaXRpb24pLiBVbmtub3duIHBhcnQgbnVtYmVyIHNob3VsZCByZXN1bHQgaW4gYW4g ZXJyb3IgbWVzc2FnZS4NCg0KPiANCj4gU2luY2UgdGhpcyBpcyBub3QgZ2VuZXJpYyBmb3IgZXZl cnl0aGluZywgb25seSBmb3IgdGhlIGltcGxlbWVudGVyLCB3ZSdyZSBsYWNraW5nDQo+IHRoZSB0 cnVlIGNvbW1vbiBkZWZhdWx0IG1hY2hpbmUgYXJncyBmb3IgZXZlcnl0aGluZy4NCj4gDQo+ID4g PiArCScweGQwMyc6IFtbJy1tY3B1PWNvcnRleC1hNTMnXV0sDQo+ID4gPiArCScweGQwNCc6IFtb Jy1tY3B1PWNvcnRleC1hMzUnXV0sDQo+ID4gPiArCScweGQwNyc6IFtbJy1tY3B1PWNvcnRleC1h NTcnXV0sDQo+ID4gPiArCScweGQwOCc6IFtbJy1tY3B1PWNvcnRleC1hNzInXV0sDQo+ID4gPiAr CScweGQwOSc6IFtbJy1tY3B1PWNvcnRleC1hNzMnXV0sDQo+ID4gPiArCScweGQwYSc6IFtbJy1t Y3B1PWNvcnRleC1hNzUnXV0sDQo+ID4gPiArCScweGQwYic6IFtbJy1tY3B1PWNvcnRleC1hNzYn XV0sDQo+ID4gPiArCScweGQwYyc6IFtbJy1tYXJjaD1hcm12OC4yLWErY3JjK2NyeXB0bycsICct bWNwdT1uZW92ZXJzZS1uMSddLA0KPiA+ID4gK2ZsYWdzX24xc2RwX2V4dHJhXQ0KPiA+ICdmbGFn c19uMXNkcF9leHRyYScgZG9lcyBub3QgZml0IGhlcmUuIEZvciB0aGUgcGFydCBudW1iZXIgJzB4 ZDBjJw0KPiA+IHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIFNvQ3MgKE4xU0RQIGlzIG9uZSBvZiB0 aGVtKS4gU28sIGlmIHRoZSBTb0MgaXMNCj4gPiBub3Qga25vd24sIGJ1dCBpZiB3ZSBrbm93IHRo YXQgdGhlIENQVSBpcyBOMSwgdGhlbiB3ZSBzaG91bGQgYnVpbGQgYSBOMS0NCj4gR2VuZXJpYyBi dWlsZC4NCj4gDQo+IFRoaXMgc2hvdWxkIGJlIGNvcmUtZ2VuZXJpYyBjb25maWd1cmF0aW9uLCBJ IGNhbiByZW5hbWUgaXQgdG8NCj4gZmxhZ3NfbjFnZW5lcmljX2V4dHJhLg0KQWdyZWUuDQoNCj4g DQo+ID4gU28sIGZyb20gbXkgcGVyc3BlY3RpdmUsIHRoZXJlIGFyZSAzIGtpbmRzIG9mIGJpbmFy aWVzOg0KPiA+IDEpIGdlbmVyaWMgLSBiZXN0IHBvcnRhYmlsaXR5IC0gIChwb3NzaWJseSkgbGVh c3Qgb3B0aW1pemVkIGZvciBhDQo+ID4gZ2l2ZW4gcGxhdGZvcm0NCj4gPiAyKSBDb3JlLUdlbmVy aWMgKGZvciBleDogTjEtZ2VuZXJpYykgLSBQb3J0YWJsZSBvbiBhbGwgTjEgYmFzZWQgU29Dcw0K PiA+IG9ubHkgLSBPcHRpbWl6ZWQgZm9yIE4xIGNvcmVzDQo+ID4gMykgU29DIHNwZWNpZmljIC0g KHBvc3NpYmx5KSBOb3QgcG9ydGFibGUgLSBNb3N0IG9wdGltaXplZCBmb3IgdGhlIFNvQw0KPiA+ DQo+IA0KPiBUaGUgZm91cnRoIGNhdGVnb3J5IEkgbWVudGlvbmVkIGFib3ZlLCBpbXBsZW1lbnRl ci1nZW5lcmljLCBpcyB1c2VkIGluIGhvdw0KV2Ugc2hvdWxkIG5vdCBoYXZlIHRoaXMgY2F0ZWdv cnkuDQoNCj4gdGhlIGFybSBjb25maWd1cmF0aW9uIGlzIGN1cnJlbnRseSBwcm9jZXNzZWQ6DQo+ IDEpIGRlZmF1bHQgY29uZmlndXJhdGlvbg0KPiBBZGRlZCB0by9vdmVyd3JpdHRlbiBieQ0KPiAy KSBpbXBsZW1lbnRlciBjb25maWd1cmF0aW9uIChvbmUgb2Ygd2hpY2ggaXMgdGhlIGNvbmZpZ3Vy YXRpb24gZm9yIGdlbmVyaWMNCj4gYnVpbGQpIEFkZGVkIHRvL292ZXJ3cml0dGVuIGJ5DQpUaGlz IHNob3VsZCBiZSBqdXN0IHBhcmFtZXRlcnMgdGhhdCBhcmUgY29tbW9uIGFjcm9zcyBhbGwgdGhl IHBhcnQgbnVtYmVycyBvZiB0aGF0IGltcGxlbWVudGVyIChmb3IgZXg6IFJURV9DQUNIRV9MSU5F X1NJWkUgPSAxMjgpLCBub3QgYSBidWlsZC4NCg0KPiAzKSBwYXJ0IG51bWJlciAob3IgY29yZS1n ZW5lcmljKSBjb25maWd1cmF0aW9uIEFkZGVkIHRvL292ZXJ3cml0dGVuIGJ5DQo+IDQpIFNvQyBj b25maWd1cmF0aW9uICh3aGF0IHdlJ3JlIGFkZGluZyBub3cpDQo+IA0KPiBJdCdzIG5vdCBvcmdh bml6ZWQgYXMgY2xlYW5seSAtIHRoZSBtYWNoaW5lIGFyZ3MgY29udGFpbiBib3RoIDIpIGFuZCAz KS4NCj4gRGVwZW5kaW5nIG9uIHdoYXQgd2Ugd2FudCB0byBkbyB3aXRoIHRoZSAnZ2VuZXJpYycg cGFydCBudW1iZXIgSSdsbCBhZGp1c3QgdGhlDQo+IGNvbmZpZyBvcmdhbml6YXRpb24uDQo+IA0K PiA+ICB9IHBuX2NvbmZpZ19jYXZpdW0gPSB7DQo+ID4gPiArCSdnZW5lcmljJzogW1snLW1hcmNo PWFybXY4LWErY3JjK2NyeXB0bycsICctbWNwdT10aHVuZGVyeCddXSwNCj4gPiAnZ2VuZXJpYycg ZG9lcyBub3QgbWFrZSBzZW5zZSBoZXJlLg0KPiA+DQo+ID4gPiArCScweGExJzogW1snLW1jcHU9 dGh1bmRlcnh0ODgnXSwgZmxhZ3NfdGh1bmRlcnhfZXh0cmFdLA0KPiA+ID4gKwknMHhhMic6IFtb Jy1tY3B1PXRodW5kZXJ4dDgxJ10sIGZsYWdzX3RodW5kZXJ4X2V4dHJhXSwNCj4gPiA+ICsJJzB4 YTMnOiBbWyctbWNwdT10aHVuZGVyeHQ4MyddLCBmbGFnc190aHVuZGVyeF9leHRyYV0sDQo+ID4g PiArCScweGFmJzogW1snLW1hcmNoPWFybXY4LjEtYStjcmMrY3J5cHRvJywnLW1jcHU9dGh1bmRl cngydDk5J10sDQo+ID4gPiBmbGFnc190aHVuZGVyeDJfZXh0cmFdLA0KPiA+ID4gKwknMHhiMic6 IFtbJy1tYXJjaD1hcm12OC4yLWErY3JjK2NyeXB0bytsc2UnLCctbWNwdT1vY3Rlb250eDInXSwN Cj4gPiA+ICtmbGFnc19vY3Rlb250eDJfZXh0cmFdLCB9IHBuX2NvbmZpZ19lbWFnID0gew0KPiA+ ID4gKwknZ2VuZXJpYyc6IFtbJy1tYXJjaD1hcm12OC1hK2NyYytjcnlwdG8nLCAnLW10dW5lPWVt YWcnXV0gfQ0KPiA+IFNhbWUgaGVyZS4NCj4gPiBJIHVuZGVyc3RhbmQgdGhhdCB0aGlzIGlzIGNv bWluZyBmcm9tIHRoZSBleGlzdGluZyBjb2RlLiBCdXQsIEkgdGhpbmsNCj4gPiB3ZSBzaG91bGQg dHJ5IHRvIHNldCBpdCByaWdodC4NCj4gPg0KPiANCj4gVGhlIGdlbmVyaWMgY29uZmlnIGZvciB0 aGVzZSBtYWtlcyBzZW5zZSBpZiBhIGZvdXJ0aCBjYXRlZ29yeSwgaW1wbGVtZW50ZXItDQo+IGdl bmVyaWMgbWFrZXMgc2Vuc2UuDQo+IEZvciBleGFtcGxlLCBmb3IgcGFydF9udW1iZXJfY29uZmln X2VtYWcgdGhpcyBtZWFuczogZm9yIGltcGxlbWVudGVyDQo+IF8weDUwIChBbXBlcmUgQ29tcHV0 aW5nKSB1c2UgdGhlIGdlbmVyaWMgbWFjaGluZSBhcmdzIGlmIHRoZXJlJ3Mgbm90aGluZw0KPiBt b3JlIHNwZWNpZmljICh3aGljaCB0aGVyZSBpc24ndCAtIG5vIG90aGVyIHBhcnQgbnVtYmVyKS4N ClRoZXJlIHNob3VsZCBiZSBhIHBhcnQgbnVtYmVyIGZvciB0aGlzLiBOb3Qgc3VyZSB3aHkgaXQg aXMgbm90IHByZXNlbnQgaGVyZS4gSSB3aWxsIGZpbmQgb3V0IHRoZSBpbmZvLg0KDQo+IA0KPiA+ ID4NCj4gPiA+ICAjIyBBcm0gaW1wbGVtZW50ZXIgSUQgKEFSTSBEREkgMDQ4N0MuYSwgU2VjdGlv biBHNy4yLjEwNiwgUGFnZQ0KPiA+ID4gRzctNTMyMSkNCj4gPiBOaXQsIFdvdWxkIGJlIGdvb2Qg dG8gcmVtb3ZlIHRoZSByZWZlcmVuY2UgdG8gdGhlIGRvYw0KPiA+DQo+IA0KPiBJcyB0aGF0IGJl Y2F1c2UgdGhlIGRvY3MgbWVudGlvbmVkIGhlcmUgbWF5IG5vdCBiZSB0aGUgbW9zdCByZWNlbnQ/ IEl0IHdhcw0KPiB1c2VmdWwgdG8gbWUgaW4gdW5kZXJzdGFuZGluZyB3aGVyZSB0aGUgaW1wbGVt ZW50ZXIvcGFydCBudW1iZXIgdmFsdWVzDQo+IGNvbWUgZnJvbS4NClllcywgbWFpbmx5IGJlY2F1 c2UgdGhlIHNwZWMgZ2V0cyB1cGRhdGVkLiBJbnN0ZWFkIHlvdSBjb3VsZCBzYXkgIlJlZmVyIHRv IE1JRFIgaW4gQXJtIEFyY2hpdGVjdHVyZSBSZWZlcmVuY2UgTWFudWFsIikNCg0KPiANCj4gPiA+ IC1pbXBsX2dlbmVyaWMgPSBbJ0dlbmVyaWMgYXJtdjgnLCBmbGFnc19nZW5lcmljLA0KPiA+ID4g bWFjaGluZV9hcmdzX2RlZmF1bHRdDQo+ID4gPiAtaW1wbF8weDQxID0gWydBcm0nLCBmbGFnc19h cm0sIG1hY2hpbmVfYXJnc19kZWZhdWx0XQ0KPiA+ID4gLWltcGxfMHg0MiA9IFsnQnJvYWRjb20n LCBmbGFnc19nZW5lcmljLCBtYWNoaW5lX2FyZ3NfZGVmYXVsdF0NCj4gPiA+IC1pbXBsXzB4NDMg PSBbJ0Nhdml1bScsIGZsYWdzX2Nhdml1bSwgbWFjaGluZV9hcmdzX2Nhdml1bV0NCj4gPiA+IC1p bXBsXzB4NDQgPSBbJ0RFQycsIGZsYWdzX2dlbmVyaWMsIG1hY2hpbmVfYXJnc19kZWZhdWx0XQ0K PiA+ID4gLWltcGxfMHg0OSA9IFsnSW5maW5lb24nLCBmbGFnc19nZW5lcmljLCBtYWNoaW5lX2Fy Z3NfZGVmYXVsdF0NCj4gPiA+IC1pbXBsXzB4NGQgPSBbJ01vdG9yb2xhJywgZmxhZ3NfZ2VuZXJp YywgbWFjaGluZV9hcmdzX2RlZmF1bHRdDQo+ID4gPiAtaW1wbF8weDRlID0gWydOVklESUEnLCBm bGFnc19nZW5lcmljLCBtYWNoaW5lX2FyZ3NfZGVmYXVsdF0NCj4gPiA+IC1pbXBsXzB4NTAgPSBb J0FtcGVyZSBDb21wdXRpbmcnLCBmbGFnc19lbWFnLCBtYWNoaW5lX2FyZ3NfZW1hZ10NCj4gPiA+ IC1pbXBsXzB4NTEgPSBbJ1F1YWxjb21tJywgZmxhZ3NfZ2VuZXJpYywgbWFjaGluZV9hcmdzX2Rl ZmF1bHRdDQo+ID4gPiAtaW1wbF8weDUzID0gWydTYW1zdW5nJywgZmxhZ3NfZ2VuZXJpYywgbWFj aGluZV9hcmdzX2RlZmF1bHRdDQo+ID4gPiAtaW1wbF8weDU2ID0gWydNYXJ2ZWxsIEFSTUFEQScs IGZsYWdzX2FybWFkYSwgbWFjaGluZV9hcmdzX2RlZmF1bHRdDQo+ID4gPiAtaW1wbF8weDY5ID0g WydJbnRlbCcsIGZsYWdzX2dlbmVyaWMsIG1hY2hpbmVfYXJnc19kZWZhdWx0XQ0KPiA+ID4gLWlt cGxfZHBhYSA9IFsnTlhQIERQQUEnLCBmbGFnc19kcGFhLCBtYWNoaW5lX2FyZ3NfZGVmYXVsdF0N Cj4gPiA+ICtpbXBsX2dlbmVyaWMgPSBbJ0dlbmVyaWMgYXJtdjgnLCBmbGFnc19nZW5lcmljLCBw bl9jb25maWdfZGVmYXVsdF0NCj4gPiA+ICtpbXBsXzB4NDEgPSBbJ0FybScsIGZsYWdzX2FybSwg cG5fY29uZmlnX2RlZmF1bHRdDQo+ID4gPiAraW1wbF8weDQyID0gWydCcm9hZGNvbScsIGZsYWdz X2dlbmVyaWMsIHBuX2NvbmZpZ19kZWZhdWx0XQ0KPiA+ID4gK2ltcGxfMHg0MyA9IFsnQ2F2aXVt JywgZmxhZ3NfY2F2aXVtLCBwbl9jb25maWdfY2F2aXVtXQ0KPiA+ID4gK2ltcGxfMHg0NCA9IFsn REVDJywgZmxhZ3NfZ2VuZXJpYywgcG5fY29uZmlnX2RlZmF1bHRdDQo+ID4gPiAraW1wbF8weDQ5 ID0gWydJbmZpbmVvbicsIGZsYWdzX2dlbmVyaWMsIHBuX2NvbmZpZ19kZWZhdWx0XQ0KPiA+ID4g K2ltcGxfMHg0ZCA9IFsnTW90b3JvbGEnLCBmbGFnc19nZW5lcmljLCBwbl9jb25maWdfZGVmYXVs dF0NCj4gPiA+ICtpbXBsXzB4NGUgPSBbJ05WSURJQScsIGZsYWdzX2dlbmVyaWMsIHBuX2NvbmZp Z19kZWZhdWx0XQ0KPiA+ID4gK2ltcGxfMHg1MCA9IFsnQW1wZXJlIENvbXB1dGluZycsIGZsYWdz X2VtYWcsIHBuX2NvbmZpZ19lbWFnXQ0KPiA+ID4gK2ltcGxfMHg1MSA9IFsnUXVhbGNvbW0nLCBm bGFnc19nZW5lcmljLCBwbl9jb25maWdfZGVmYXVsdF0NCj4gPiA+ICtpbXBsXzB4NTMgPSBbJ1Nh bXN1bmcnLCBmbGFnc19nZW5lcmljLCBwbl9jb25maWdfZGVmYXVsdF0NCj4gPiA+ICtpbXBsXzB4 NTYgPSBbJ01hcnZlbGwgQVJNQURBJywgZmxhZ3NfYXJtYWRhLCBwbl9jb25maWdfZGVmYXVsdF0N Cj4gPiA+ICtpbXBsXzB4NjkgPSBbJ0ludGVsJywgZmxhZ3NfZ2VuZXJpYywgcG5fY29uZmlnX2Rl ZmF1bHRdIGltcGxfZHBhYSA9DQo+ID4gPiArWydOWFAgRFBBQScsIGZsYWdzX2RwYWEsIHBuX2Nv bmZpZ19kZWZhdWx0XQ0KPiA+ID4NCj4gPiA+ICBkcGRrX2NvbmYuc2V0KCdSVEVfQVJDSF9BUk0n LCAxKQ0KPiA+ID4gIGRwZGtfY29uZi5zZXQoJ1JURV9GT1JDRV9JTlRSSU5TSUNTJywgMSkNCj4g PiA+DQo+ID4gPiAgaWYgZHBka19jb25mLmdldCgnUlRFX0FSQ0hfMzInKQ0KPiA+ID4gKwkjIGFy bXY3IGJ1aWxkDQo+ID4gPiAgCWRwZGtfY29uZi5zZXQoJ1JURV9DQUNIRV9MSU5FX1NJWkUnLCA2 NCkNCj4gPiA+ICAJZHBka19jb25mLnNldCgnUlRFX0FSQ0hfQVJNdjcnLCAxKQ0KPiA+ID4gIAkj IHRoZSBtaW5pbXVtIGFyY2hpdGVjdHVyZSBzdXBwb3J0ZWQsIGFybXY3LWEsIG5lZWRzIHRoZSBm b2xsb3dpbmcsDQo+ID4gPiAgCSMgbWsvbWFjaGluZS9hcm12N2EvcnRlLnZhcnMubWsgc2V0cyBp dCB0b28NCj4gPiA+ICAJbWFjaGluZV9hcmdzICs9ICctbWZwdT1uZW9uJw0KPiA+ID4gIGVsc2UN Cj4gPiA+IC0JZHBka19jb25mLnNldCgnUlRFX0NBQ0hFX0xJTkVfU0laRScsIDEyOCkNCj4gPiA+ IC0JZHBka19jb25mLnNldCgnUlRFX0FSQ0hfQVJNNjQnLCAxKQ0KPiA+ID4gKwkjIGFhcmNoNjQg YnVpbGQNCj4gPiA+ICsJaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkNCj4gPiA+ICsJCWlm IG1hY2hpbmUgPT0gJ2dlbmVyaWMnDQo+ID4gPiArCQkJIyBkZWZhdWx0IGJ1aWxkDQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eIEdl bmVyaWMgYnVpbGQ/DQo+ID4NCj4gDQo+IEFscmVhZHkgYWRkcmVzc2VkIGluIHRoZSBuZXh0IHZl cnNpb24uDQo+IA0KPiA+ID4gKwkJCWltcGxfY29uZmlnID0gaW1wbF9nZW5lcmljDQo+ID4gPiAr CQkJcGFydF9udW1iZXIgPSAnZ2VuZXJpYycNCj4gPiA+ICsJCWVsc2UNCj4gPiA+ICsJCQkjIG5h dGl2ZSBidWlsZA0KPiA+ID4gKwkJCSMgVGhlIHNjcmlwdCByZXR1cm5zIFsnSW1wbGVtZW50ZXIn LCAnVmFyaWFudCcsDQo+ID4gPiAnQXJjaGl0ZWN0dXJlJywNCj4gPiA+ICsJCQkjICdQcmltYXJ5 IFBhcnQgbnVtYmVyJywgJ1JldmlzaW9uJ10NCj4gPiA+ICsJCQlkZXRlY3RfdmVuZG9yID0gZmlu ZF9wcm9ncmFtKGpvaW5fcGF0aHMoDQo+ID4gPiArCQkJCQltZXNvbi5jdXJyZW50X3NvdXJjZV9k aXIoKSwNCj4gPiA+ICdhcm12OF9tYWNoaW5lLnB5JykpDQo+ID4gPiArCQkJY21kID0gcnVuX2Nv bW1hbmQoZGV0ZWN0X3ZlbmRvci5wYXRoKCkpDQo+ID4gPiArCQkJaWYgY21kLnJldHVybmNvZGUo KSA9PSAwDQo+ID4gPiArCQkJCWNtZF9vdXRwdXQgPQ0KPiA+ID4gY21kLnN0ZG91dCgpLnRvX2xv d2VyKCkuc3RyaXAoKS5zcGxpdCgnICcpDQo+ID4gPiArCQkJZW5kaWYNCj4gPiA+ICsJCQlpZiBh cm1fZm9yY2VfbmF0aXZlX21hcmNoID09IHRydWUNCj4gPiA+ICsJCQkJcGFydF9udW1iZXIgPSAn bmF0aXZlJw0KPiA+ID4gKwkJCWVsc2UNCj4gPiA+ICsJCQkJcGFydF9udW1iZXIgPSBjbWRfb3V0 cHV0WzNdDQo+ID4gPiArCQkJZW5kaWYNCj4gPiA+ICsJCQkjIFNldCB0byBnZW5lcmljIGltcGxl bWVudGVyIGlmIGltcGxlbWVudGVyIGlzIG5vdA0KPiA+ID4gZm91bmQNCj4gPiA+ICsJCQlpbXBs X2NvbmZpZyA9IGdldF92YXJpYWJsZSgnaW1wbF8nICsgY21kX291dHB1dFswXSwNCj4gPiA+ICdp bXBsX2dlbmVyaWMnKQ0KPiA+ID4gKwkJZW5kaWYNCj4gPiA+ICsJZWxzZQ0KPiA+ID4gKwkJIyBj cm9zcyBidWlsZA0KPiA+ID4gKwkJaW1wbF9pZCA9IG1lc29uLmdldF9jcm9zc19wcm9wZXJ0eSgn aW1wbGVtZW50ZXJfaWQnLA0KPiA+ID4gJ2dlbmVyaWMnKQ0KPiA+ID4gKwkJcGFydF9udW1iZXIg PSBtZXNvbi5nZXRfY3Jvc3NfcHJvcGVydHkoJ3BhcnRfbnVtYmVyJywNCj4gPiA+ICdnZW5lcmlj JykNCj4gPiA+ICsJCWltcGxfY29uZmlnID0gZ2V0X3ZhcmlhYmxlKCdpbXBsXycgKyBpbXBsX2lk KQ0KPiA+ID4gKwllbmRpZg0KPiA+ID4NCj4gPiA+IC0JbWFjaGluZSA9IFtdDQo+ID4gPiAtCWNt ZF9nZW5lcmljID0gWydnZW5lcmljJywgJycsICcnLCAnZGVmYXVsdCcsICcnXQ0KPiA+ID4gLQlj bWRfb3V0cHV0ID0gY21kX2dlbmVyaWMgIyBTZXQgZ2VuZXJpYyBieSBkZWZhdWx0DQo+ID4gPiAt CW1hY2hpbmVfYXJncyA9IFtdICMgQ2xlYXIgcHJldmlvdXMgbWFjaGluZSBhcmdzDQo+ID4gPiAt CWlmIGFybV9mb3JjZV9nZW5lcmljX21hcmNoIGFuZCBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQo KQ0KPiA+ID4gLQkJbWFjaGluZSA9IGltcGxfZ2VuZXJpYw0KPiA+ID4gLQkJaW1wbF9wbiA9ICdk ZWZhdWx0Jw0KPiA+ID4gKwltZXNzYWdlKCdBcm0gaW1wbGVtZW50ZXI6ICcgKyBpbXBsX2NvbmZp Z1swXSkNCj4gPiA+ICsJbWVzc2FnZSgnQXJtIHBhcnQgbnVtYmVyOiAnICsgcGFydF9udW1iZXIp DQo+ID4gPiArDQo+ID4gPiArCWltcGxlbWVudGVyX2ZsYWdzID0gaW1wbF9jb25maWdbMV0NCj4g PiA+ICsJcGFydF9udW1iZXJfY29uZmlnID0gaW1wbF9jb25maWdbMl0NCj4gPiA+ICsNCj4gPiA+ ICsJaWYgcGFydF9udW1iZXJfY29uZmlnLmhhc19rZXkocGFydF9udW1iZXIpDQo+ID4gPiArCQkj IHVzZSB0aGUgc3BlY2lmaWVkIHBhcnRfbnVtYmVyIG1hY2hpbmUgYXJncyBpZiBmb3VuZA0KPiA+ ID4gKwkJcGFydF9udW1iZXJfY29uZmlnID0gcGFydF9udW1iZXJfY29uZmlnW3BhcnRfbnVtYmVy XQ0KPiA+ID4gKwllbGlmIHBhcnRfbnVtYmVyID09ICduYXRpdmUnDQo+ID4gPiArCQkjIHVzZSBu YXRpdmUgbWFjaGluZSBhcmdzDQo+ID4gPiArCQlwYXJ0X251bWJlcl9jb25maWcgPSBbW25hdGl2 ZV9tYWNoaW5lX2FyZ3NdXQ0KPiA+ID4gIAllbGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgp DQo+ID4gPiAtCQkjIFRoZSBzY3JpcHQgcmV0dXJucyBbJ0ltcGxlbWVudGVyJywgJ1ZhcmlhbnQn LCAnQXJjaGl0ZWN0dXJlJywNCj4gPiA+IC0JCSMgJ1ByaW1hcnkgUGFydCBudW1iZXInLCAnUmV2 aXNpb24nXQ0KPiA+ID4gLQkJZGV0ZWN0X3ZlbmRvciA9IGZpbmRfcHJvZ3JhbShqb2luX3BhdGhz KA0KPiA+ID4gLQkJCQltZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwNCj4gPiA+ICdhcm12OF9t YWNoaW5lLnB5JykpDQo+ID4gPiAtCQljbWQgPSBydW5fY29tbWFuZChkZXRlY3RfdmVuZG9yLnBh dGgoKSkNCj4gPiA+IC0JCWlmIGNtZC5yZXR1cm5jb2RlKCkgPT0gMA0KPiA+ID4gLQkJCWNtZF9v dXRwdXQgPSBjbWQuc3Rkb3V0KCkudG9fbG93ZXIoKS5zdHJpcCgpLnNwbGl0KCcNCj4gPiA+ICcp DQo+ID4gPiAtCQllbmRpZg0KPiA+ID4gLQkJIyBTZXQgdG8gZ2VuZXJpYyBpZiB2YXJpYWJsZSBp cyBub3QgZm91bmQNCj4gPiA+IC0JCW1hY2hpbmUgPSBnZXRfdmFyaWFibGUoJ2ltcGxfJyArIGNt ZF9vdXRwdXRbMF0sIFsnZ2VuZXJpYyddKQ0KPiA+ID4gLQkJaWYgbWFjaGluZVswXSA9PSAnZ2Vu ZXJpYycNCj4gPiA+IC0JCQltYWNoaW5lID0gaW1wbF9nZW5lcmljDQo+ID4gPiAtCQkJY21kX291 dHB1dCA9IGNtZF9nZW5lcmljDQo+ID4gPiAtCQllbmRpZg0KPiA+ID4gLQkJaW1wbF9wbiA9IGNt ZF9vdXRwdXRbM10NCj4gPiA+IC0JCWlmIGFybV9mb3JjZV9uYXRpdmVfbWFyY2ggPT0gdHJ1ZQ0K PiA+ID4gLQkJCWltcGxfcG4gPSAnbmF0aXZlJw0KPiA+ID4gLQkJZW5kaWYNCj4gPiA+ICsJCSMg ZGVmYXVsdCB0byBnZW5lcmljIG1hY2hpbmUgYXJncyBpZiBwYXJ0X251bWJlciBpcyBub3QgZm91 bmQNCj4gPiA+ICsJCSMgYW5kIG5vdCBmb3JjaW5nIG5hdGl2ZSBtYWNoaW5lIGFyZ3MNCj4gPiA+ ICsJCSMgYnV0IGRvbid0IGRlZmF1bHQgaW4gY3Jvc3MtYnVpbGRzOyBpZiBwYXJ0X251bWJlciBp cyBzcGVjaWZpZWQNCj4gPiA+ICsJCSMgaW5jb3JyZWN0bHkgaW4gYSBjcm9zcy1maWxlLCBpdCBu ZWVkcyB0byBiZSBmaXhlZCB0aGVyZQ0KPiA+ID4gKwkJcGFydF9udW1iZXJfY29uZmlnID0gcGFy dF9udW1iZXJfY29uZmlnWydnZW5lcmljJ10NCj4gPiA+ICAJZWxzZQ0KPiA+ID4gLQkJaW1wbF9p ZCA9IG1lc29uLmdldF9jcm9zc19wcm9wZXJ0eSgnaW1wbGVtZW50b3JfaWQnLA0KPiA+ID4gJ2dl bmVyaWMnKQ0KPiA+ID4gLQkJaW1wbF9wbiA9IG1lc29uLmdldF9jcm9zc19wcm9wZXJ0eSgnaW1w bGVtZW50b3JfcG4nLA0KPiA+ID4gJ2RlZmF1bHQnKQ0KPiA+ID4gLQkJbWFjaGluZSA9IGdldF92 YXJpYWJsZSgnaW1wbF8nICsgaW1wbF9pZCkNCj4gPiA+ICsJCSMgY3Jvc3MgYnVpbGQgYW5kIHBh cnQgbnVtYmVyIGlzIG5vdCBpbiBwYXJ0X251bWJlcl9jb25maWcNCj4gPiA+ICsJCWVycm9yKCdD cm9zcyBidWlsZCBwYXJ0IG51bWJlciAwQDAgbm90DQo+ID4gPiBmb3VuZC4nLmZvcm1hdChwYXJ0 X251bWJlcikpDQo+ID4gPiAgCWVuZGlmDQo+ID4gPg0KPiA+ID4gLQkjIEFwcGx5IENvbW1vbiBE ZWZhdWx0cy4gVGhlc2Ugc2V0dGluZ3MgbWF5IGJlIG92ZXJ3cml0dGVuIGJ5DQo+ID4gPiBtYWNo aW5lDQo+ID4gPiAtCSMgc2V0dGluZ3MgbGF0ZXIuDQo+ID4gPiAtCWZvcmVhY2ggZmxhZzogZmxh Z3NfY29tbW9uX2RlZmF1bHQNCj4gPiA+IC0JCWlmIGZsYWcubGVuZ3RoKCkgPiAwDQo+ID4gPiAt CQkJZHBka19jb25mLnNldChmbGFnWzBdLCBmbGFnWzFdKQ0KPiA+ID4gKwlkcGRrX2ZsYWdzID0g ZmxhZ3NfY29tbW9uX2RlZmF1bHQgKyBpbXBsZW1lbnRlcl9mbGFncw0KPiA+ID4gKw0KPiA+ID4g KwlpZiBwYXJ0X251bWJlcl9jb25maWcubGVuZ3RoKCkgPiAxDQo+ID4gPiArCQlkcGRrX2ZsYWdz ICs9IHBhcnRfbnVtYmVyX2NvbmZpZ1sxXQ0KPiA+ID4gKwllbmRpZg0KPiA+ID4gKw0KPiA+ID4g KwltYWNoaW5lX2FyZ3MgPSBbXSAjIENsZWFyIHByZXZpb3VzIG1hY2hpbmUgYXJncw0KPiA+ID4g Kwlmb3JlYWNoIGZsYWc6IHBhcnRfbnVtYmVyX2NvbmZpZ1swXQ0KPiA+ID4gKwkJaWYgY2MuaGFz X2FyZ3VtZW50KGZsYWcpDQo+ID4gPiArCQkJbWFjaGluZV9hcmdzICs9IGZsYWcNCj4gPiA+ICAJ CWVuZGlmDQo+ID4gPiAgCWVuZGZvcmVhY2gNCj4gPiA+DQo+ID4gPiAtCW1lc3NhZ2UoJ0ltcGxl bWVudGVyIDogJyArIG1hY2hpbmVbMF0pDQo+ID4gPiAtCWZvcmVhY2ggZmxhZzogbWFjaGluZVsx XQ0KPiA+ID4gKwlmb3JlYWNoIGZsYWc6IGRwZGtfZmxhZ3MNCj4gPiA+ICAJCWlmIGZsYWcubGVu Z3RoKCkgPiAwDQo+ID4gPiAgCQkJZHBka19jb25mLnNldChmbGFnWzBdLCBmbGFnWzFdKQ0KPiA+ ID4gIAkJZW5kaWYNCj4gPiA+ICAJZW5kZm9yZWFjaA0KPiA+ID4gLQ0KPiA+ID4gLQlmb3JlYWNo IG1hcmc6IG1hY2hpbmVbMl0NCj4gPiA+IC0JCWlmIG1hcmdbMF0gPT0gaW1wbF9wbg0KPiA+ID4g LQkJCWZvcmVhY2ggZmxhZzogbWFyZ1sxXQ0KPiA+ID4gLQkJCQlpZiBjYy5oYXNfYXJndW1lbnQo ZmxhZykNCj4gPiA+IC0JCQkJCW1hY2hpbmVfYXJncyArPSBmbGFnDQo+ID4gPiAtCQkJCWVuZGlm DQo+ID4gPiAtCQkJZW5kZm9yZWFjaA0KPiA+ID4gLQkJCSMgQXBwbHkgYW55IGV4dHJhIG1hY2hp bmUgc3BlY2lmaWMgZmxhZ3MuDQo+ID4gPiAtCQkJZm9yZWFjaCBmbGFnOiBtYXJnLmdldCgyLCBm bGFnc19kZWZhdWx0X2V4dHJhKQ0KPiA+ID4gLQkJCQlpZiBmbGFnLmxlbmd0aCgpID4gMA0KPiA+ ID4gLQkJCQkJZHBka19jb25mLnNldChmbGFnWzBdLCBmbGFnWzFdKQ0KPiA+ID4gLQkJCQllbmRp Zg0KPiA+ID4gLQkJCWVuZGZvcmVhY2gNCj4gPiA+IC0JCWVuZGlmDQo+ID4gPiAtCWVuZGZvcmVh Y2gNCj4gPiA+ICBlbmRpZg0KPiA+ID4gLW1lc3NhZ2UobWFjaGluZV9hcmdzKQ0KPiA+ID4gKw0K PiA+ID4gK21lc3NhZ2UoJ1VzaW5nIG1hY2hpbmUgYXJnczogQDBAJy5mb3JtYXQobWFjaGluZV9h cmdzKSkNCj4gPiA+DQo+ID4gPiAgaWYgKGNjLmdldF9kZWZpbmUoJ19fQVJNX05FT04nLCBhcmdz OiBtYWNoaW5lX2FyZ3MpICE9ICcnIG9yDQo+ID4gPiAgICAgIGNjLmdldF9kZWZpbmUoJ19fYWFy Y2g2NF9fJywgYXJnczogbWFjaGluZV9hcmdzKSAhPSAnJykNCj4gPiA+IC0tDQo+ID4gPiAyLjIw LjENCg0K