From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (EUR02-AM5-obe.outbound.protection.outlook.com [40.107.0.63]) by mx.groups.io with SMTP id smtpd.web12.8370.1595927096367116822 for ; Tue, 28 Jul 2020 02:04:57 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=mILrAZ4I; spf=pass (domain: arm.com, ip: 40.107.0.63, mailfrom: pierre.gondois@arm.com) 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=Xs5M204D7Jtb0a7Y+rViDzzGUscCuyL6NsLTxu8w/5s=; b=mILrAZ4IfoGIQ5a8bkquF86jsp+R0RIVRDnMRsOSDUCBc3APeDrSpNwqK8MMy59V544IfDQLC1C1jbPgF90FmQYoK0ORTIvuxpBE7rFwqQpiacR5EaT2LwxB4LOKm6CbscnJlcoxHRZmbjowBQlS2DHT1YwvIiFsy1D3hkkvrjw= Received: from AM6PR08CA0037.eurprd08.prod.outlook.com (2603:10a6:20b:c0::25) by AM5PR0801MB1937.eurprd08.prod.outlook.com (2603:10a6:203:4b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.22; Tue, 28 Jul 2020 09:04:53 +0000 Received: from VE1EUR03FT027.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:c0:cafe::cb) by AM6PR08CA0037.outlook.office365.com (2603:10a6:20b:c0::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.22 via Frontend Transport; Tue, 28 Jul 2020 09:04:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=bestguesspass 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 VE1EUR03FT027.mail.protection.outlook.com (10.152.18.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.10 via Frontend Transport; Tue, 28 Jul 2020 09:04:52 +0000 Received: ("Tessian outbound 73b502bf693a:v62"); Tue, 28 Jul 2020 09:04:52 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: b54e0ca492631cf6 X-CR-MTA-TID: 64aa7808 Received: from b21943b703e6.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 1A694DE6-7132-4E2B-B1F9-C9B2DF7EDC74.1; Tue, 28 Jul 2020 09:04:46 +0000 Received: from EUR03-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id b21943b703e6.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 28 Jul 2020 09:04:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SUw1qaHaD0iEjx3QYJ1wEcVKO03aSuiouvObscczpkkjNFK7ECN+OIIGSbZ1gZx2/Bz+RrkHbcJOHnqmovi9CqC9mtzFtO5zy9nI7cLJXNriAm5OtVSlIj8ijugX9kWk7CIBmVIFhwptW7KfSXoWCeyHEilQ01RvzCJ7iJGQ9CDmCE01FuWWGQ2xMGqQWRkYp869vjzPaE+I0ew7YXwXrP9VJAsUp81gAPSrpITmPlLArH+NNRPOlqzYWUurTBTQ75mjALVYmS3Nli+VXKXJkczYDuVsiIuVOx0hgxRSJb/v/imWxp5cny0XEFadrequRM7eaAbhfHnzPW5rRsHXrQ== 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=Xs5M204D7Jtb0a7Y+rViDzzGUscCuyL6NsLTxu8w/5s=; b=IElMlR6yUWCCWq4Dtf2j1NHs9+HUpWreo84MJ7mVDpJzWsVYJPwbFWyPR2ROzQpjN4qXUxU7BgdYwQSxtClv/E2OIwD90++fPvb2hF9K6zeL1v6AVMSZmStNw+m1lijajuv1kjpzGojFyxJ0A66fwClA1kfwcl0kpXKEitXEkmVTyQKqrcca7fBYu/UNXZ60JPBd4/NhU5CFfKQLpBSJ/8Mw2+c8kBHpZjDrSYbps14Ms9vnyhYnT7S2f5A5/p3ZFFXiuTe4iKsjPMby61ecPolIgpqVFQdyTXLkPiIumYhG/IxMXTCznfq6YamGgzXCjUDeoGfLgQuLcbAFnhZx4Q== 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=Xs5M204D7Jtb0a7Y+rViDzzGUscCuyL6NsLTxu8w/5s=; b=mILrAZ4IfoGIQ5a8bkquF86jsp+R0RIVRDnMRsOSDUCBc3APeDrSpNwqK8MMy59V544IfDQLC1C1jbPgF90FmQYoK0ORTIvuxpBE7rFwqQpiacR5EaT2LwxB4LOKm6CbscnJlcoxHRZmbjowBQlS2DHT1YwvIiFsy1D3hkkvrjw= Received: from DB7PR08MB3113.eurprd08.prod.outlook.com (2603:10a6:5:20::21) by DB7PR08MB3434.eurprd08.prod.outlook.com (2603:10a6:10:42::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.24; Tue, 28 Jul 2020 09:04:44 +0000 Received: from DB7PR08MB3113.eurprd08.prod.outlook.com ([fe80::e11b:cdfd:f08f:efde]) by DB7PR08MB3113.eurprd08.prod.outlook.com ([fe80::e11b:cdfd:f08f:efde%6]) with mapi id 15.20.3216.033; Tue, 28 Jul 2020 09:04:44 +0000 From: "PierreGondois" To: "devel@edk2.groups.io" , "masahisa.kojima@linaro.org" , Leif Lindholm CC: "Gao, Liming" , Sami Mujawar , Tomas Pilar , "Feng, Bob C" , Ard Biesheuvel Subject: Re: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML bytecode arrays into .obj file Thread-Topic: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML bytecode arrays into .obj file Thread-Index: AQHWT7DRSvW9E3EdSUC4ooX+Tb5FuakbnJyAgAAGZoCAAC7vgIAAfgAAgAAQMYCAAHtAgA== Date: Tue, 28 Jul 2020 09:04:44 +0000 Message-ID: References: <20200701140604.5292-1-pierre.gondois@arm.com> <20200701140604.5292-5-pierre.gondois@arm.com> <20200727135825.GZ1337@vanye> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=arm.com; x-originating-ip: [2a00:23c5:ee0d:ab00:46c:bf01:f89c:1233] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 2900b16e-ed0c-42d9-27fb-08d832d54a55 x-ms-traffictypediagnostic: DB7PR08MB3434:|AM5PR0801MB1937: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:2276;OLM:2276; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: IKr4zkT7HPEzB2XYlNmndb2fLRoLsPHLCiuiXgx2SZi275unMuvAkHryXGThvEvt2DlPU2IsmAyorz4UAKjs6VreHckvpay5OLQVYAJoRoaEkzfI+ax40PA1VF2XhtuVJ3xI/FLh9VRoUbAp9RxDf0WW2XSpjs5zqjIyYc5dBKhoo7h+oyxekClH1LpganQz5AWCnIjChVIDri2fBPN9rjB4b0r4JxUVt1X0+b9hdKS8Lay2CBHTqE+eGH4582HJUq3cka/LdRndB+Y7gi+EFjv8Bpbd5oKfQfRWVXOMZqL6jYllruAwqQZvVXclnjNHjLREQbKJDF4ta+w6dmZfKTFJ6CvlhjIHLdSSztuOaP01tCNMgaKm+9C6qz7F2AoNAuwnALAkRSgtRnfLrHGKiq26OUDo33poYDzzNEnDLVZfTR0xA96B6YNSwb1H92hmDJR/g2lXMZ86SeFsRvyxI3D+I62NYa1MUliCLRkCa/o= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB7PR08MB3113.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(366004)(39860400002)(346002)(396003)(136003)(376002)(86362001)(30864003)(110136005)(6506007)(5660300002)(4326008)(9686003)(83380400001)(52536014)(54906003)(64756008)(66556008)(66476007)(66446008)(55016002)(76116006)(66946007)(186003)(71200400001)(8936002)(478600001)(316002)(53546011)(7696005)(966005)(2906002)(8676002)(33656002)(142923001)(21314003)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: +Ncp7YSmU64TBqw75lsiofwQneEeCToEblBxceM2kKmLgq30AFaadxQbzzi5XfAcpMPzb8Om66JuogVWCDgOxBkVKUFgrpKKPoC6Z1ChvTbSeYwSoMLUh9wEXZ8Wpll5rizodWIEToRW8GzXY8TSMqxwqUPU0f8Mgl3WfIzgFzEykRlRb1lYb0/TTd+21LfTdo90gVikiPtGMmGfIGt6goMloUlhOUzrJSH2Q0u8Q3qzYsS3WyL1oetOe0i609VGG69u9/Pa53jsVoyUA8RL4aTTs20zQSOpEhcOryLI7+3JhnDboBFQvZxfirUFVNx+6Fp8Xg/bDW3f+d7rl5UitVpxpbpszR1qGhuXt9/CzjJ31+n7z0kMM3AHtP9mou6/9FTn6hQf4/6kVxsjuyssMMLETE49G5Q13ptCJqoVdcHc8A/7jk+pDyRKUrlw7lF9ijt+aUahoOv7hp0UXcYJAibHmEOs5+JWOQQXuJJ4LiRehSct1w8dWTbGx5tXzF7eWN0FcWKO4K3SHNNeugeVAsDCzL7MRpQfYcoXOjeqdrcjhnIjvE5qAslw7/EXVCXo MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3434 Original-Authentication-Results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=arm.com; Return-Path: Pierre.Gondois@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT027.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: ed86c566-aa6d-4011-ce28-08d832d54540 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z9tIh0lEun27poKguqBjPl+B0Qd1JKy9X79KJ4kyDokazQGatiWuMTFK2xEEVAhnJZMHXA6f5ovUVn/8yX1dlU6RLGmI3xLGEsZ73OeNmERP3f4j6uHGPlhIwXr9rNxhfas5bSUdYQyZUGBiG1xyPLjez2odqUokLmPT1oQJY3up6tyyrnjlzJ4pHm9eLC73WKGE5GA3PmkxxMkKHOUk/ZfuGJre7MDVvw03g99xzh5DV6+7yw2z9R5x5YlPkDO9A7ILA41bhSohLCzvF2MB2kYtiq9i2wxYWzCBRysEZ9Vx+N9U908f8d0/TLY7txtBdR8xOG4goythVbfTaXQ0hob/ul2uRw+82cesokANxRFcyJ1apaMg5iuFTV6p/zx1UJMIq10l6eqe/838VzCJAo6KLRDh9Mku9UjC2buMvQV+PFPXemudX3XhVeBtE2SlhgVTZAgn4CXHeJtxmUEELpVkb6y6r9B3C5wWy5WwNAu0kxxOOv73rFAgErj7SuC13VgYyXqFqu1WgDpNDPLITg== 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;SFTY:;SFS:(4636009)(39860400002)(396003)(136003)(376002)(346002)(46966005)(8936002)(55016002)(6506007)(7696005)(70206006)(52536014)(70586007)(53546011)(9686003)(5660300002)(110136005)(36906005)(2906002)(4326008)(8676002)(316002)(54906003)(186003)(26005)(966005)(478600001)(30864003)(336012)(86362001)(33656002)(356005)(83380400001)(82310400002)(82740400003)(81166007)(47076004)(142923001)(21314003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jul 2020 09:04:52.7913 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2900b16e-ed0c-42d9-27fb-08d832d54a55 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: VE1EUR03FT027.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1937 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGVsbG8gTWFzYWhpc2EsDQoNCk1heWJlIHlvdSB3aWxsIGhhdmUgdG8gZGVsZXRlL3JlLWdlbmVy YXRlIHRoZSBidWlsZF9ydWxlLnR4dCBhbmQgdG9vbHNfZGVmLnR4dCBmaWxlcyB0aGF0IHlvdSBo YXZlLiBUaGlzIHBhdGNoIG1ha2VzIHRoZSBidWlsZCBzeXN0ZW0gZ2VuZXJhdGUgYSAuYW1saSBm aWxlIGZvciBlYWNoIC5hc2wgZmlsZS4gSWYgdGhlcmUgaXMgbm8gRW1tYy5hbWxpIGluIHlvdXIg QnVpbGQgZGlyZWN0b3J5LCB0aGlzIG1pZ2h0IGJlIHRoZSByZWFzb24uDQoNClJlZ2FyZHMsDQpQ aWVycmUNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IGRldmVsQGVkazIuZ3Jv dXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIE1hc2FoaXNhIEtvamlt YSB2aWEgZ3JvdXBzLmlvDQpTZW50OiBUdWVzZGF5LCBKdWx5IDI4LCAyMDIwIDI6MzggQU0NClRv OiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT4NCkNjOiBkZXZlbEBlZGsyLmdyb3Vw cy5pbzsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgUGllcnJlIEdvbmRvaXMg PFBpZXJyZS5Hb25kb2lzQGFybS5jb20+OyBTYW1pIE11amF3YXIgPFNhbWkuTXVqYXdhckBhcm0u Y29tPjsgVG9tYXMgUGlsYXIgPFRvbWFzLlBpbGFyQGFybS5jb20+OyBGZW5nLCBCb2IgQyA8Ym9i LmMuZmVuZ0BpbnRlbC5jb20+OyBBcmQgQmllc2hldXZlbCA8QXJkLkJpZXNoZXV2ZWxAYXJtLmNv bT4NClN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHY1IDQvNV0gQmFzZVRvb2xzOiBD b21waWxlIEFNTCBieXRlY29kZSBhcnJheXMgaW50byAub2JqIGZpbGUNCg0KSGkgTGVpZiwNCg0K PiA+IE1hc2FoaXNhIC0gc2luY2UgQXJkIGlzIHN0aWxsIG9uIGhvbGlkYXksIGNvdWxkIHlvdSBj cmVhdGUgYSBwYXRjaA0KPiA+IGFuZCBzZW5kIG91dCBmb3IgbWUgdG8gcmV2aWV3PyBFaXRoZXIg b25lIG9mIHRoZSBmaWxlcyBuZWVkcyB0byBiZQ0KPiA+IHJlbmFtZWQsIG9yIHdlIG5lZWQgdG8g bW92ZSB0aGUgLmFzbCBmaWxlcyAoRW1tYy5hc2wgYW5kIE9wdGVlLmFzbCkNCj4gPiBpbnRvIGEg c3ViZGlyZWN0b3J5Lg0KDQpQcm9iYWJseSBJJ20gbWlzc2luZyBzb21ldGhpbmcsIGJ1dCBteSBi dWlsZCBmb3IgRGV2ZWxvcGVyYm94IHBsYXRmb3JtIGlzIHN1Y2Nlc3NmdWwsIHdpdGggdGhlIGxh dGVzdCBlZGsyL2VkazItcGxhdGZvcm1zIGFzIG9mIHRvZGF5Lg0KDQpNeSBidWlsZCBvcHRpb24g aXM6DQotLS0NCmV4cG9ydCBUQVJHRVQ9UGxhdGZvcm0vU29jaW9uZXh0L0RldmVsb3BlckJveC9E ZXZlbG9wZXJCb3guZHNjDQpleHBvcnQgUFJPRklMRT1ERUJVRw0KZXhwb3J0IEFSQ0g9QUFSQ0g2 NA0KZXhwb3J0IFRPT0xfQ0hBSU5fVEFHPUdDQzUNCg0KYnVpbGQgLW4gJE5VTV9DUFVTIC1hICRB UkNIIC1iICRQUk9GSUxFIC10ICRUT09MX0NIQUlOX1RBRyAtcCAkVEFSR0VUIC1EIFNFQ1VSRV9C T09UX0VOQUJMRT1UUlVFIC1EIFg2NEVNVV9FTkFCTEU9VFJVRSAtRCBUUE0yX0VOQUJMRT1UUlVF DQotLS0NCg0KR0NDIHZlcnNpb24gaXMgImdjYy1saW5hcm8tNi40LjEtMjAxNy4xMS14ODZfNjRf YWFyY2g2NC1saW51eC1nbnUvYmluL2FhcmNoNjQtbGludXgtZ251LSIuDQoNClNvbWUgT3V0cHV0 IGRpcmVjdG9yeSBpbmZvcm1hdGlvbjoNCn4vc3JjL3VlZmkvQnVpbGQvRGV2ZWxvcGVyQm94JCBm aW5kIC58Z3JlcCAtaSBlbW1jIC4vREVCVUdfR0NDNS9BQVJDSDY0L1NpbGljb24vU29jaW9uZXh0 L1N5blF1YWNlci9Ecml2ZXJzL1BsYXRmb3JtRHhlL1BsYXRmb3JtRHhlL09VVFBVVC9FbW1jLmlp aQ0KLi9ERUJVR19HQ0M1L0FBUkNINjQvU2lsaWNvbi9Tb2Npb25leHQvU3luUXVhY2VyL0RyaXZl cnMvUGxhdGZvcm1EeGUvUGxhdGZvcm1EeGUvT1VUUFVUL0VtbWMub2JqLmRlcHMNCi4vREVCVUdf R0NDNS9BQVJDSDY0L1NpbGljb24vU29jaW9uZXh0L1N5blF1YWNlci9Ecml2ZXJzL1BsYXRmb3Jt RHhlL1BsYXRmb3JtRHhlL09VVFBVVC9FbW1jLmlpaWkNCi4vREVCVUdfR0NDNS9BQVJDSDY0L1Np bGljb24vU29jaW9uZXh0L1N5blF1YWNlci9Ecml2ZXJzL1BsYXRmb3JtRHhlL1BsYXRmb3JtRHhl L09VVFBVVC9FbW1jLm9iag0KLi9ERUJVR19HQ0M1L0FBUkNINjQvU2lsaWNvbi9Tb2Npb25leHQv U3luUXVhY2VyL0RyaXZlcnMvUGxhdGZvcm1EeGUvUGxhdGZvcm1EeGUvT1VUUFVUL0VtbWMuYW1s LmRlcHMNCi4vREVCVUdfR0NDNS9BQVJDSDY0L1NpbGljb24vU29jaW9uZXh0L1N5blF1YWNlci9E cml2ZXJzL1BsYXRmb3JtRHhlL1BsYXRmb3JtRHhlL09VVFBVVC9FbW1jLmFtbA0KLi9ERUJVR19H Q0M1L0FBUkNINjQvU2lsaWNvbi9Tb2Npb25leHQvU3luUXVhY2VyL0RyaXZlcnMvUGxhdGZvcm1E eGUvUGxhdGZvcm1EeGUvT1VUUFVUL0VtbWMuaQ0KDQpSZWdhcmRzLA0KTWFzYWhpc2ENCg0KT24g VHVlLCAyOCBKdWwgMjAyMCBhdCAwOTo0MCwgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwu Y29tPiB3cm90ZToNCj4NCj4gUGllcnJlOg0KPiAgIFRoYW5rcyBmb3IgeW91ciBpbnZlc3RpZ2F0 aW9uLiBGb3Igbm93LCB0aGUgbW9kdWxlIHdpbGwgcmVuYW1lIHNvdXJjZSBmaWxlIHRvIGF2b2lk IHRoZSBmaWxlIGNvbmZsaWN0LiBDYW4geW91IHN1Ym1pdCBvbmUgQlogZm9yIEJhc2VUb29scyB0 byBlbmhhbmNlIHRoZSBsb2dpYyBmb3IgdGhlIGF1dG9nZW4gc291cmNlIGZpbGU/IFRoaXMgbmVl ZHMgbW9yZSBkaXNjdXNzaW9uLg0KPg0KPiAgIFllcy4gSSBhZ3JlZSB0byBwbGFjZSB0aGUgZ2Vu ZXJhdGVkIHNvdXJjZSBmaWxlIGludG8gJChERUJVR19ESVIpLiBZb3UgY2FuIG1ha2UgYW5vdGhl ciBwYXRjaCBmb3IgdGhpcyBjaGFuZ2UuDQo+DQo+IFRoYW5rcw0KPiBMaW1pbmcNCj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVs QGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YNCj4gUGllcnJlR29uZG9pcw0KPiBTZW50OiAy MDIw5bm0N+aciDI45pelIDE6MTANCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBHYW8sIExp bWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBMZWlmDQo+IExpbmRob2xtIDxsZWlmQG51dmlh aW5jLmNvbT47IE1hc2FoaXNhIEtvamltYQ0KPiA8bWFzYWhpc2Eua29qaW1hQGxpbmFyby5vcmc+ DQo+IENjOiBTYW1pIE11amF3YXIgPFNhbWkuTXVqYXdhckBhcm0uY29tPjsgVG9tYXMgUGlsYXIN Cj4gPFRvbWFzLlBpbGFyQGFybS5jb20+OyBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5j b20+OyBBcmQNCj4gQmllc2hldXZlbCA8QXJkLkJpZXNoZXV2ZWxAYXJtLmNvbT4NCj4gU3ViamVj dDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjUgNC81XSBCYXNlVG9vbHM6IENvbXBpbGUgQU1M DQo+IGJ5dGVjb2RlIGFycmF5cyBpbnRvIC5vYmogZmlsZQ0KPg0KPiBIZWxsbywNCj4NCj4gTGlt aW5nOg0KPiBJIGRpZG4ndCBmaW5kIGFueXRoaW5nIHByZXZlbnRpbmcgZnJvbSBoYXZpbmcgYSAu dmZyIGFuZCAuYyBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBpbiB0aGUgc2FtZSBzY29wZS4NCj4N Cj4gRXZlcnlib2R5Og0KPiBUaGUgLmMgZmlsZXMgZ2VuZXJhdGVkIChmcm9tIGVpdGhlciAudmZy IG9yIC5hc2wpIGFyZSBnZW5lcmF0ZWQgaW4gdGhlIEJ1aWxkLy4uLi4vT1VUUFVULyBkaXJlY3Rv cnksIHdpdGggdGhlaXIgb3JpZ2luYWwgc3ViZGlyZWN0b3J5IHN0cmlwcGVkLiBJbiB0aGUgZXhh bXBsZSBiZWxvdywgdGhlIC5jLCAudmZyIGFuZCAuYXNsIGZpbGVzIGhhdmUgYmVlbiBwbGFjZWQg aW4gc3ViZGlyZWN0b3JpZXMgaW4gZWRrMi9lZGsyLXBsYXRmb3Jtcy4gVGhlIHJlY2lwZXMgdGhh dCBoYXZlIGJlZW4gZ2VuZXJhdGVkIGFyZToNCj4gJChPVVRQVVRfRElSKS9FbW1jLm9iaiA6ICQo T1VUUFVUX0RJUikvQXNsRGlyL0VtbWMuYyAoZnJvbSBFbW1jLmFzbCkNCj4gJChPVVRQVVRfRElS KS9JcDRDb25maWcyLm9iaiA6ICQoREVCVUdfRElSKS9WZnJEaXIvSXA0Q29uZmlnMi5jIChmcm9t DQo+IElwNENvbmZpZzIudmZyKSAkKE9VVFBVVF9ESVIpL0NEaXIvRW1tYy5vYmogOg0KPiAkKFdP UktTUEFDRSkvZWRrMi1wbGF0Zm9ybXMvU2lsaWNvbi9Tb2Npb25leHQvU3luUXVhY2VyL0RyaXZl cnMvUGxhdGZvDQo+IHJtRHhlL0NEaXIvRW1tYy5jIChmcm9tIEVtbWMuYykNCj4NCj4gVGhlIG9u bHkgc3ViZGlyZWN0b3J5IHRoYXQgcmVtYWlucyBpcyB0aGUgb25lIGZyb20gdGhlIC5jIGZpbGVz LiBJbmRlZWQsIHRoZSBidWlsZCBzeXN0ZW0gbWlnaHQgZGV0ZWN0cyBzdWJkaXJlY3RvcmllcyBm cm9tIHRoZSAuaW5mIGZpbGUgbG9jYXRpb24uIEFzIHRoZSAuYyBmaWxlIGlzIGdlbmVyYXRlZCBp biB0aGUgT1VUUFVUIGRpcmVjdG9yeSB3aGVyZSB0aGVyZSBpcyBubyAuaW5mIGZpbGUsIGl0IGdl dHMgc3RyaXBwZWQuDQo+IFRoaXMgbWVhbnMgdGhhdCBpZiBhIHN1YmRpcmVjdG9yeSBpcyBjcmVh dGVkLCBpdCBpcyBmb3IgdGhlIC5jIGZpbGUsIGJ1dCBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBt b2RpZnkgdGhpcy4NCj4NCj4gQWRkaW5nIGEgcHJlL3Bvc3RmaXggdG8gdGhlIGdlbmVyYXRlZCAu YyBmaWxlbmFtZSBzZWVtcyBhIGJldHRlciBhcHByb2FjaCB0byBtZS4gSXQgd291bGQgcmVxdWly ZSBtb2RpZnlpbmcgYnVpbGRfcnVsZS50ZW1wbGF0ZSwgYW5kIGNob29zZSB3aGljaCBwcmUvcG9z dGZpeCB0byBhZGQuDQo+DQo+IEFub3RoZXIgcG9pbnQgaXMgdGhhdCB0aGUgLmMgZmlsZSBnZW5l cmF0ZWQgZnJvbSB0aGUgLmMgZmlsZSBpcyBwbGFjZWQgaW4gdGhlICQoREVCVUdfRElSKSwgd2hl biB0aGUgb25lIGNvbWluZyBmcm9tIHRoZSAuYXNsIGZpbGUgaXMgcGxhY2VkIGluICQoT1VUUFVU X0RJUikuIE1heWJlIGl0IHNob3VsZCBiZSBtb2RpZmllZCB0byAkKERFQlVHX0RJUikgYXN3ZWxs Lg0KPg0KPiBSZWdhcmRzLA0KPiBQaWVycmUNCj4NCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBP biBCZWhhbGYgT2YgTGltaW5nDQo+IEdhbyB2aWEgZ3JvdXBzLmlvDQo+IFNlbnQ6IE1vbmRheSwg SnVseSAyNywgMjAyMCAzOjIxIFBNDQo+IFRvOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5j LmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBQaWVycmUNCj4gR29uZG9pcyA8UGllcnJlLkdv bmRvaXNAYXJtLmNvbT47IE1hc2FoaXNhIEtvamltYQ0KPiA8bWFzYWhpc2Eua29qaW1hQGxpbmFy by5vcmc+DQo+IENjOiBTYW1pIE11amF3YXIgPFNhbWkuTXVqYXdhckBhcm0uY29tPjsgVG9tYXMg UGlsYXINCj4gPFRvbWFzLlBpbGFyQGFybS5jb20+OyBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0Bp bnRlbC5jb20+OyBBcmQNCj4gQmllc2hldXZlbCA8QXJkLkJpZXNoZXV2ZWxAYXJtLmNvbT4NCj4g U3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjUgNC81XSBCYXNlVG9vbHM6IENvbXBp bGUgQU1MDQo+IGJ5dGVjb2RlIGFycmF5cyBpbnRvIC5vYmogZmlsZQ0KPg0KPiBMZWlmOg0KPiAg IFZGUiBmaWxlIGhhcyB0aGUgc2ltaWxhciBjYXNlLiBWRlIgaXMgY29udmVydGVkIHRvIHh4eC5j LCB0aGVuIGNvbXBpbGUgaXQgdG8gb2JqIGZpbGUuDQo+DQo+IEJvYjoNCj4gICBIYXMgQmFzZVRv b2xzIHN1Y2ggZGV0ZWN0aW9uIGlmIFZGUiBhbmQgQyBzb3VyY2UgZmlsZSBoYXZlIHRoZSBzYW1l IGZpbGUgbmFtZT8NCj4NCj4gVGhhbmtzDQo+IExpbWluZw0KPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gRnJvbTogTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWluYy5jb20+DQo+ ID4gU2VudDogTW9uZGF5LCBKdWx5IDI3LCAyMDIwIDk6NTggUE0NCj4gPiBUbzogZGV2ZWxAZWRr Mi5ncm91cHMuaW87IHBpZXJyZS5nb25kb2lzQGFybS5jb207IE1hc2FoaXNhIEtvamltYQ0KPiA+ IDxtYXNhaGlzYS5rb2ppbWFAbGluYXJvLm9yZz4NCj4gPiBDYzogc2FtaS5tdWphd2FyQGFybS5j b207IHRvbWFzLnBpbGFyQGFybS5jb207IEZlbmcsIEJvYiBDDQo+ID4gPGJvYi5jLmZlbmdAaW50 ZWwuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgQXJkDQo+ID4gQmll c2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAYXJtLmNvbT4NCj4gPiBTdWJqZWN0OiBSZTogW2VkazIt ZGV2ZWxdIFtQQVRDSCB2NSA0LzVdIEJhc2VUb29sczogQ29tcGlsZSBBTUwNCj4gPiBieXRlY29k ZSBhcnJheXMgaW50byAub2JqIGZpbGUNCj4gPg0KPiA+IEhpIFBpZXJyZSwgKCtNYXNhaGlzYSkN Cj4gPg0KPiA+IFRoaXMgY29tbWl0ICgwYTRhYTIwZThkNDQpIG1hZGUgZm9yIGFuIGV4Y2l0aW5n IHN0YXJ0IHRvIG15IHdlZWsuDQo+ID4NCj4gPiBTb2Npb25leHQncyBEZXZlbG9wZXJib3ggZmFp bGVkIHRvIGJ1aWxkIGZvciBtZSwgd2l0aCB0aGUNCj4gPiBzcGVjdGFjdWxhciBlcnJvciBtZXNz YWdlOg0KPiA+DQo+ID4gL3Vzci9saWIvZ2NjLWNyb3NzL2FhcmNoNjQtbGludXgtZ251LzgvLi4v Li4vLi4vLi4vYWFyY2g2NC1saW51eC1nbnUvYmluL2xkOg0KPiA+IERXQVJGIGVycm9yOiBjb3Vs ZCBub3QgZmluZCBhYmJyZXYgbnVtYmVyIDU5MTINCj4gPiAvdG1wL2NjS3Q0Z2FNLmx0cmFuczAu bHRyYW5zLm86IGluIGZ1bmN0aW9uIGBSZWdpc3RlckRldmljZXMnOg0KPiA+IDxhcnRpZmljaWFs PjooLnRleHQuUmVnaXN0ZXJEZXZpY2VzKzB4YjApOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvDQo+ ID4gYFJlZ2lzdGVyRW1tYycNCj4gPg0KPiA+IEdDQzQ5ICh3aXRob3V0IGx0bykgYW5kIENMQU5H MzggcHJvZmlsZXMgZ2l2ZSBtdWNoIHRoZSBzYW1lIHJlc3VsdCwNCj4gPiB3aXRoIHNsaWdodGx5 IGxlc3MgZXNvdGVyaWMgbWVzc2FnZXMuDQo+ID4NCj4gPiBUaGUgcmVhc29uIGZvciB0aGlzIHR1 cm5lZCBvdXQgdG8gYmUgdGhhdCBlZGsyLXBsYXRmb3Jtcw0KPiA+IFNpbGljb24vU29jaW9uZXh0 L1N5blF1YWNlci9Ecml2ZXJzL1BsYXRmb3JtRHhlLyBoYXMgYm90aCBhbg0KPiA+IEVtbWMuYXNs IGFuZCBhbiBFbW1jLmMgZmlsZSwgd2hpY2ggYWZ0ZXIgdGhpcyBwYXRjaCBib3RoIGdlbmVyYXRl IGFuDQo+ID4gRW1tYy5vYmogaW4gdGhlIHNhbWUgb3V0cHV0IGRpcmVjdG9yeS4NCj4gPg0KPiA+ IEkgdGhpbmsgdGhlIGNvcnJlY3QgY291cnNlIG9mIGFjdGlvbiBpcyB0byBmaXggdGhpcyBpbiB0 aGUgU3luUXVhY2VyDQo+ID4gZHJpdmVyLCBidXQgSSBhbSByZXBvcnRpbmcgaXQgaGVyZSBzbyB3 ZSBnZXQgaXQgbG9nZ2VkIGluIHRoZSBsaXN0DQo+ID4gYXJjaGl2ZXMuDQo+ID4NCj4gPiBJdCB3 b3VsZCBvZiBjb3Vyc2UgYmUgZ29vZCBpZiB0aGUgYnVpbGQgc3lzdGVtIGNvdWxkIGRldGVjdCBh bmQgd2Fybg0KPiA+IG92ZXIgY2FzZXMgbGlrZSB0aGlzLCByYXRoZXIgdGhhbiBzaWxlbnRseSBv dmVyd3JpdGluZyBleGlzdGluZw0KPiA+IG9iamVjdCBmaWxlcy4NCj4gPg0KPiA+IE1hc2FoaXNh IC0gc2luY2UgQXJkIGlzIHN0aWxsIG9uIGhvbGlkYXksIGNvdWxkIHlvdSBjcmVhdGUgYSBwYXRj aA0KPiA+IGFuZCBzZW5kIG91dCBmb3IgbWUgdG8gcmV2aWV3PyBFaXRoZXIgb25lIG9mIHRoZSBm aWxlcyBuZWVkcyB0byBiZQ0KPiA+IHJlbmFtZWQsIG9yIHdlIG5lZWQgdG8gbW92ZSB0aGUgLmFz bCBmaWxlcyAoRW1tYy5hc2wgYW5kIE9wdGVlLmFzbCkNCj4gPiBpbnRvIGEgc3ViZGlyZWN0b3J5 Lg0KPiA+DQo+ID4gQmVzdCBSZWdhcmRzLA0KPiA+DQo+ID4gTGVpZg0KPiA+DQo+ID4gT24gV2Vk LCBKdWwgMDEsIDIwMjAgYXQgMTU6MDY6MDMgKzAxMDAsIFBpZXJyZUdvbmRvaXMgd3JvdGU6DQo+ ID4gPiBGcm9tOiBQaWVycmUgR29uZG9pcyA8cGllcnJlLmdvbmRvaXNAYXJtLmNvbT4NCj4gPiA+ DQo+ID4gPiBUaGUgQW1sVG9IZXggc2NyaXB0IGFuZCBQb3NpeC9XaW5kb3dzTGlrZSB3cmFwcGVy cyBjb252ZXJ0IGFuIEFNTA0KPiA+ID4gZmlsZSB0byBhIC5oZXggZmlsZSwgY29udGFpbmluZyBh IEMgYXJyYXkgc3RvcmluZyBBTUwgYnl0ZWNvZGUuDQo+ID4gPiBUaGlzICIuaGV4IiBmaWxlIGNh biB0aGVuIGJlIGluY2x1ZGVkIGluIGEgQyBmaWxlLCBhbGxvd2luZyB0bw0KPiA+ID4gYWNjZXNz IHRoZSBBTUwgYnl0ZWNvZGUgZnJvbSB0aGlzIEMgZmlsZS4NCj4gPiA+DQo+ID4gPiBUaGUgRURL MiBidWlsZCBzeXN0ZW0gZG9lc24ndCBhbGxvdyB0byBhIGRlcGljdCBkZXBlbmRlbmN5IG9yZGVy cw0KPiA+ID4gYmV0d2VlbiBmaWxlcyBvZiBkaWZmZXJlbnQgbGFuZ3VhZ2VzLiBGb3IgaW5zdGFu Y2UsIGluIGEgbW9kdWxlDQo+ID4gPiBjb250YWluaW5nIGEgIi5jIiBmaWxlIGFuZCBhICIuYXNs IiwgdGhlICIuYyINCj4gPiA+IGZpbGUgbWF5IG9yIG1heSBub3QgYmUgYnVpbHQgcHJpb3IgdG8g dGhlICIuYXNsIiBmaWxlLg0KPiA+ID4gVGhpcyBwcmV2ZW50cyBhbnkgaW5jbHVzaW9uIG9mIGEg Z2VuZXJhdGVkICIuaGV4IiBpbiBhICIuYyIgZmlsZQ0KPiA+ID4gc2luY2UgdGhpcyBsYXRlciAi LmhleCIgZmlsZSBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQuDQo+ID4gPg0K PiA+ID4gVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgQW1sVG9DIHNjcmlwdCB0byBnZW5lcmF0ZSBh IEMgZmlsZSBpbnN0ZWFkDQo+ID4gPiBvZiBhICIuaGV4IiBmaWxlLg0KPiA+ID4gSXQgYWxzbyBh ZGRzIHRoZSBnZW5lcmF0aW9uIG9mIGFuIGludGVybWVkaWF0ZSAiLmFtbGkiIGZpbGUgd2hlbg0K PiA+ID4gY29tcGlsaW5nIGFuIEFTTCBmaWxlLCBhbmQgYWRkcyBhIHJ1bGUgdG8gY29udmVydCB0 aGlzICIuYW1saSIgdG8NCj4gPiA+IGEgQyBmaWxlLg0KPiA+ID4NCj4gPiA+IFRoaXMgYWxsb3dz IHRvIGdlbmVyYXRlIGEgQyBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTCBieXRlY29kZSBmcm9tDQo+ ID4gPiBhbiBBU0wgZmlsZS4gVGhpcyBDIGZpbGUgd2lsbCB0aGVuIGJlIGhhbmRsZWQgYnkgdGhl IEVESzIgYnVpbGQNCj4gPiA+IHN5c3RlbSB0byBnZW5lcmF0ZSBhbiBvYmplY3QgZmlsZS4NCj4g PiA+IFRodXMsIG5vIGZpbGUgaW5jbHVzaW9uIHdpbGwgYmUgcmVxdWlyZWQgYW55bW9yZS4gVGhl IEMgZmlsZQ0KPiA+ID4gcmVxdWlyaW5nIHRoZSBBTUwgYnl0ZWNvZGUgYXMgYSBDIGFycmF5LCBh bmQgdGhlIEFTTCBmaWxlLCB3aWxsIGJlDQo+ID4gPiBjb21waWxlZCBpbmRlcGVuZGVudGx5LiBU aGUgQyBhcnJheSBtdXN0IGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwNCj4gPiA+IHN5bWJvbC4g VGhlIGxpbmtlciBpcyByZXNvbHZpbmcgdGhlIHJlZmVyZW5jZSB0byB0aGUgQyBhcnJheSBzeW1i b2wuDQo+ID4gPg0KPiA+ID4gVG8gc3VtbWFyaXplLCB0aGUgZmxvdyBnb2VzIGFzOg0KPiA+ID4g IC0xLiBBU0wgZmlsZSBpcyBjb21waWxlZCB0byBBTUw7DQo+ID4gPiAgLTIuIEFNTCBmaWxlIGlz IGNvcGllZCB0byBhICIuYW1saSIgaW50ZXJtZWRpYXRlIGZpbGU7ICAtMy4gRURLMg0KPiA+ID4g YnVpbGQgc3lzdGVtIGFwcGxpZXMgdGhlIHJ1bGUgcmVsZXZhbnQgdG8gIi5hbWxpIg0KPiA+ID4g ICAgICBmaWxlcy4gVGhpcyBpcywgY2FsbGluZyB0aGUgIkFtbFRvQyIgc2NyaXB0LCBnZW5lcmF0 aW5nDQo+ID4gPiAgICAgIGEgQyBmaWxlIGZyb20gdGhlICIuYW1saSIgZmlsZTsgIC00LiBFREsy IGJ1aWxkIHN5c3RlbQ0KPiA+ID4gYXBwbGllcyB0aGUgcnVsZSByZWxldmFudCB0byBDIGZpbGVz Lg0KPiA+ID4gICAgICBUaGlzIGlzIGNyZWF0aW5nIGFuIG9iamVjdCBmaWxlLg0KPiA+ID4gIC01 LiBFREsyIGJ1aWxkIHN5c3RlbSBsaW5rcyB0aGUgb2JqZWN0IGZpbGUgY29udGFpbmluZyB0aGUN Cj4gPiA+ICAgICAgQU1MIGJ5dGVjb2RlIHdpdGggdGhlIG9iamVjdCBmaWxlIHJlcXVpcmluZyBp dC4NCj4gPiA+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBQaWVycmUgR29uZG9pcyA8UGllcnJlLkdv bmRvaXNAYXJtLmNvbT4NCj4gPiA+IFN1Z2dlc3RlZC1ieTogVG9tYXMgUGlsYXIgPFRvbWFzLlBp bGFyQGFybS5jb20+DQo+ID4gPiAtLS0NCj4gPiA+DQo+ID4gPiBUaGUgY2hhbmdlcyBjYW4gYmUg c2VlbiBhdDoNCj4gPiA+IGh0dHBzOi8vZ2l0aHViLmNvbS9QaWVycmVBUk0vZWRrMi9jb21taXRz LzgwM19Db21waWxlX0FNTF9ieXRlY29kZQ0KPiA+ID4gX2ENCj4gPiA+IHJyYXlfaW50b19PQkpf ZmlsZV92NQ0KPiA+ID4NCj4gPiA+IE5vdGVzOg0KPiA+ID4gICAgIHYxOg0KPiA+ID4gICAgICAt IEFkZCBhIG5ldyBydWxlIHRvIHRoZSBidWlsZF9ydWxlLnRlbXBsYXRlIGZpbGUgdG8NCj4gPiA+ ICAgICAgICBnZW5lcmF0ZSAiLm9iaiIgZmlsZXMgZnJvbSAuYXNsIGZpbGVzLCBhbmQgbW9kaWZ5 DQo+ID4gPiAgICAgICAgdGhlIEFtbFRvQyBzY3JpcHQgYWNjb3JkaW5nbHkuIFtQaWVycmVdDQo+ ID4gPiAgICAgdjI6DQo+ID4gPiAgICAgIC0gUmVzdHJpY3QgdGhlIHJ1bGUgdG8gRFhFX0RSSVZF Ui4gVGhpcyBhbGxvd3MgdG8gYnVpbGQNCj4gPiA+ICAgICAgICB0aGUgT3ZtZlBrZywgd2hpY2gg d2FzIG5vdCB0aGUgY2FzZSBpbiB2MS4gW1BpZXJyZV0NCj4gPiA+ICAgICB2MzoNCj4gPiA+ICAg ICAgLSBDaGFuZ2VkICJTaWduZWQtb2ZmLWJ5IiB0byAiU3VnZ2VzdGVkLWJ5Ii4gW0JvYl0NCj4g PiA+ICAgICB2NDoNCj4gPiA+ICAgICAtIE5vIG1vZGlmaWNhdGlvbi4gUmUtc2VuZGluZyB0aGUg cGF0Y2ggd2l0aCBiYXNlNjQNCj4gPiA+ICAgICAgIGVuY29kaW5nIHRvIGNvbnNlcnZlIHRoZSBy aWdodCBsaW5lIGVuZGluZ3MuIFtCb2JdDQo+ID4gPiAgICAgdjU6DQo+ID4gPiAgICAgIC0gTm8g bW9kaWZpY2F0aW9uLiBbUGllcnJlXQ0KPiA+ID4NCj4gPiA+ICBCYXNlVG9vbHMvQ29uZi9idWls ZF9ydWxlLnRlbXBsYXRlICAgICAgIHwgMTUgKysrLQ0KPiA+ID4gIEJhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL0FtbFRvQy9BbWxUb0MucHkgfCA4Mg0KPiA+ID4gKysrKysrKystLS0tLS0tLS0tLS0N Cj4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygt KQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvQ29uZi9idWlsZF9ydWxlLnRl bXBsYXRlDQo+ID4gPiBiL0Jhc2VUb29scy9Db25mL2J1aWxkX3J1bGUudGVtcGxhdGUNCj4gPiA+ IGluZGV4DQo+ID4gPiAwODIyYjY4MWZjZDlmNjFjNjUwOGU2ZjkzZmZjMzFmYTcwZmQ3MDU5Li5j MDM0ODY5OTE1OTE0OTM2ZTI4ZjY0YTYNCj4gPiA+IGFhDQo+ID4gPiBkYmEwOGUwMTY5ZGE0NCAx MDA3NTUNCj4gPiA+IC0tLSBhL0Jhc2VUb29scy9Db25mL2J1aWxkX3J1bGUudGVtcGxhdGUNCj4g PiA+ICsrKyBiL0Jhc2VUb29scy9Db25mL2J1aWxkX3J1bGUudGVtcGxhdGUNCj4gPiA+IEBAIC00 MTksNiArNDE5LDcgQEANCj4gPiA+DQo+ID4gPiAgICAgIDxPdXRwdXRGaWxlPg0KPiA+ID4gICAg ICAgICAgJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFtbA0KPiA+ID4gKyAg ICAgICAgJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFtbGkNCj4gPiA+DQo+ ID4gPiAgICAgIDxFeHRyYURlcGVuZGVuY3k+DQo+ID4gPiAgICAgICAgICAkKE1BS0VfRklMRSkN Cj4gPiA+IEBAIC00MjgsMTQgKzQyOSwyNCBAQA0KPiA+ID4gICAgICAgICAgIiQoQVNMUFApIiAk KERFUFNfRkxBR1MpICQoQVNMUFBfRkxBR1MpICQoSU5DKQ0KPiA+ID4gL0kke3NfcGF0aH0gJChP VVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmkgPg0KPiA+ICQoT1VUUFVUX0RJUiko Kykke3NfZGlyfSgrKSR7c19iYXNlfS5paWkNCj4gPiA+ICAgICAgICAgIFRyaW0gLS1zb3VyY2Ut Y29kZSAtbCAtbyAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uaWlpaSAkKE9V VFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uaWlpDQo+ID4gPiAgICAgICAgICAiJChB U0wpIiAkKEFTTF9GTEFHUykgJChBU0xfT1VURkxBR1MpJHtkc3R9ICQoT1VUUFVUX0RJUikoKykk e3NfZGlyfSgrKSR7c19iYXNlfS5paWlpDQo+ID4gPiAtICAgICAgICAtQW1sVG9IZXggJChPVVRQ VVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFtbA0KPiA+ID4gKyAgICAgICAgJChDUCkg JChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFtbA0KPiA+ID4gKyAkKE9VVFBV VF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uYW1saQ0KPiA+ID4NCj4gPiA+ICAgICAgPENv bW1hbmQuR0NDPg0KPiA+ID4gICAgICAgICAgVHJpbSAtLWFzbC1maWxlIC0tYXNsLWRlcHMgLW8g JChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmkgLWkgJChJTkNfTElTVCkgJHtz cmN9DQo+ID4gPiAgICAgICAgICAiJChBU0xQUCkiICQoREVQU19GTEFHUykgJChBU0xQUF9GTEFH UykgJChJTkMpDQo+ID4gPiAtSSR7c19wYXRofSAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykk e3NfYmFzZX0uaSA+DQo+ID4gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9Lmlp aQ0KPiA+ID4gICAgICAgICAgVHJpbSAtLXNvdXJjZS1jb2RlIC1sIC1vICQoT1VUUFVUX0RJUiko Kykke3NfZGlyfSgrKSR7c19iYXNlfS5paWlpICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7 c19iYXNlfS5paWkNCj4gPiA+ICAgICAgICAgICIkKEFTTCkiICQoQVNMX0ZMQUdTKSAkKEFTTF9P VVRGTEFHUykke2RzdH0gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmlpaWkN Cj4gPiA+IC0gICAgICAgIC1BbWxUb0hleCAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3Nf YmFzZX0uYW1sDQo+ID4gPiArICAgICAgICAkKENQKSAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0o Kykke3NfYmFzZX0uYW1sDQo+ID4gPiArICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19i YXNlfS5hbWxpDQo+ID4gPiArDQo+ID4gPiArW0FjcGktTWFjaGluZS1MYW5ndWFnZS1GaWxlLXRv LUMuRFhFX0RSSVZFUl0NCj4gPiA+ICsgICAgPElucHV0RmlsZT4NCj4gPiA+ICsgICAgICAgID8u YW1saQ0KPiA+ID4gKw0KPiA+ID4gKyAgICA8T3V0cHV0RmlsZT4NCj4gPiA+ICsgICAgICAgICR7 c19wYXRofSgrKSR7c19iYXNlfS5jDQo+ID4gPiArDQo+ID4gPiArICAgIDxDb21tYW5kPg0KPiA+ ID4gKyAgICAgICAgLUFtbFRvQyAke3NyY30NCj4gPiA+DQo+ID4gPiAgW0MtQ29kZS1GaWxlLkFj cGlUYWJsZV0NCj4gPiA+ICAgICAgPElucHV0RmlsZT4NCj4gPiA+IGRpZmYgLS1naXQgYS9CYXNl VG9vbHMvU291cmNlL1B5dGhvbi9BbWxUb0MvQW1sVG9DLnB5DQo+ID4gPiBiL0Jhc2VUb29scy9T b3VyY2UvUHl0aG9uL0FtbFRvQy9BbWxUb0MucHkNCj4gPiA+IGluZGV4DQo+ID4gPiA2NDNkYjI5 MTBlMzdhY2ZkZDgwYWMxOGQyODhjOTIxMzIwYTc5Y2UxLi4zNDZkZTcxNTlkZTcwMmQ4NjBiYmQ4 MDkNCj4gPiA+IGRkDQo+ID4gPiBiZTgxNzVmMTQ5M2NmYiAxMDA2NDQNCj4gPiA+IC0tLSBhL0Jh c2VUb29scy9Tb3VyY2UvUHl0aG9uL0FtbFRvQy9BbWxUb0MucHkNCj4gPiA+ICsrKyBiL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL0FtbFRvQy9BbWxUb0MucHkNCj4gPiA+IEBAIC0xLDkgKzEsOSBA QA0KPiA+ID4gICMjIEBmaWxlDQo+ID4gPiAgIw0KPiA+ID4gLSMgQ29udmVydCBhbiBBTUwgZmls ZSB0byBhIC5oZXggZmlsZSBjb250YWluaW5nIHRoZSBBTUwgYnl0ZWNvZGUNCj4gPiA+IHN0b3Jl ZCBpbiBhDQo+ID4gPiArIyBDb252ZXJ0IGFuIEFNTCBmaWxlIHRvIGEgLmMgZmlsZSBjb250YWlu aW5nIHRoZSBBTUwgYnl0ZWNvZGUNCj4gPiA+ICtzdG9yZWQgaW4gYQ0KPiA+ID4gICMgQyBhcnJh eS4NCj4gPiA+IC0jIEJ5IGRlZmF1bHQsICJUYWJsZXNcRHNkdC5hbWwiIHdpbGwgZ2VuZXJhdGUg IlRhYmxlc1xEc2R0LmhleCIuDQo+ID4gPiAtIyAiVGFibGVzXERzZHQuaGV4IiB3aWxsIGNvbnRh aW4gYSBDIGFycmF5IG5hbWVkICJkc2R0X2FtbF9jb2RlIg0KPiA+ID4gdGhhdCBjb250YWlucw0K PiA+ID4gKyMgQnkgZGVmYXVsdCwgIlRhYmxlc1xEc2R0LmFtbCIgd2lsbCBnZW5lcmF0ZSAiVGFi bGVzXERzZHQuYyIuDQo+ID4gPiArIyAiVGFibGVzXERzZHQuYyIgd2lsbCBjb250YWluIGEgQyBh cnJheSBuYW1lZCAiZHNkdF9hbWxfY29kZSINCj4gPiA+ICt0aGF0IGNvbnRhaW5zDQo+ID4gPiAg IyB0aGUgQU1MIGJ5dGVjb2RlLg0KPiA+ID4gICMNCj4gPiA+ICAjIENvcHlyaWdodCAoYykgMjAy MCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPiBAQA0KPiA+ID4gLTE3LDMx ICsxNywyNiBAQCBmcm9tIENvbW1vbi5CdWlsZFRvb2xFcnJvciBpbXBvcnQgKiAgaW1wb3J0IHN5 cw0KPiA+ID4gaW1wb3J0IG9zDQo+ID4gPg0KPiA+ID4gK19fZGVzY3JpcHRpb25fXyA9ICIiIg0K PiA+ID4gK0NvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuYyBmaWxlIGNvbnRhaW5pbmcgdGhlIEFN TCBieXRlY29kZQ0KPiA+ID4gK3N0b3JlZCBpbiBhIEMgYXJyYXkuIEJ5IGRlZmF1bHQsIFRhYmxl c1xEc2R0LmFtbCB3aWxsIGdlbmVyYXRlIFRhYmxlc1xEc2R0LmMuDQo+ID4gPiArVGFibGVzXERz ZHQuYyB3aWxsIGNvbnRhaW4gYSBDIGFycmF5IG5hbWVkICJkc2R0X2FtbF9jb2RlIiB0aGF0DQo+ ID4gPiArY29udGFpbnMgdGhlIEFNTCBieXRlY29kZS4NCj4gPiA+ICsiIiINCj4gPiA+ICsNCj4g PiA+ICAjIyBQYXJzZSB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4NCj4gPiA+ICAjDQo+ID4g PiAgIyBAcmV0dmFsIEEgYXJncGFyc2UuTmFtZVNwYWNlIGluc3RhbmNlLCBjb250YWluaW5nIHBh cnNlZCB2YWx1ZXMuDQo+ID4gPiAgIw0KPiA+ID4gIGRlZiBQYXJzZUFyZ3MoKToNCj4gPiA+ICAg ICAgIyBJbml0aWFsaXplIHRoZSBwYXJzZXIuDQo+ID4gPiAtICAgIFBhcnNlciA9IGFyZ3BhcnNl LkFyZ3VtZW50UGFyc2VyKA0KPiA+ID4gLSAgICAgIGRlc2NyaXB0aW9uPSJDb252ZXJ0IGFuIEFN TCBmaWxlIHRvIGEgLmhleCBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTCAiICsgXA0KPiA+ID4gLSAg ICAgICAgICAgICAgICAgICJieXRlY29kZSBzdG9yZWQgaW4gYSBDIGFycmF5LiBCeSBkZWZhdWx0 LCAiICsgXA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICJcIlRhYmxlc1xcRHNkdC5hbWxcIiB3 aWxsIGdlbmVyYXRlIiArIFwNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAiXCJUYWJsZXNcXERz ZHQuaGV4XCIuIFwiVGFibGVzXFxEc2R0LmhleFwiIHdpbGwgIiArIFwNCj4gPiA+IC0gICAgICAg ICAgICAgICAgICAiY29udGFpbiBhIEMgYXJyYXkgbmFtZWQgXCJkc2R0X2FtbF9jb2RlXCIgdGhh dCAiICsgXA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICJjb250YWlucyB0aGUgQU1MIGJ5dGVj b2RlLiINCj4gPiA+IC0gICAgICApDQo+ID4gPiArICAgIFBhcnNlciA9IGFyZ3BhcnNlLkFyZ3Vt ZW50UGFyc2VyKGRlc2NyaXB0aW9uPV9fZGVzY3JpcHRpb25fXykNCj4gPiA+DQo+ID4gPiAgICAg ICMgRGVmaW5lIHRoZSBwb3NzaWJsZSBhcmd1bWVudHMuDQo+ID4gPiAtICAgIFBhcnNlci5hZGRf YXJndW1lbnQoDQo+ID4gPiAtICAgICAgZGVzdD0iSW5wdXRGaWxlIiwNCj4gPiA+IC0gICAgICBo ZWxwPSJQYXRoIHRvIGFuIGlucHV0IEFNTCBmaWxlIHRvIGdlbmVyYXRlIGEgLmhleCBmaWxlIGZy b20uIg0KPiA+ID4gLSAgICAgICkNCj4gPiA+IC0gICAgUGFyc2VyLmFkZF9hcmd1bWVudCgNCj4g PiA+IC0gICAgICAiLW8iLCAiLS1vdXQtZGlyIiwgZGVzdD0iT3V0RGlyIiwNCj4gPiA+IC0gICAg ICBoZWxwPSJPdXRwdXQgZGlyZWN0b3J5IHdoZXJlIHRoZSAuaGV4IGZpbGUgd2lsbCBiZSBnZW5l cmF0ZWQuICIgKyBcDQo+ID4gPiAtICAgICAgICAgICAiRGVmYXVsdCBpcyB0aGUgaW5wdXQgZmls ZSdzIGRpcmVjdG9yeS4iDQo+ID4gPiAtICAgICAgKQ0KPiA+ID4gKyAgICBQYXJzZXIuYWRkX2Fy Z3VtZW50KGRlc3Q9IklucHV0RmlsZSIsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg aGVscD0iUGF0aCB0byBhbiBpbnB1dCBBTUwgZmlsZSB0byBnZW5lcmF0ZSBhIC5jIGZpbGUgZnJv bS4iKQ0KPiA+ID4gKyAgICBQYXJzZXIuYWRkX2FyZ3VtZW50KCItbyIsICItLW91dC1kaXIiLCBk ZXN0PSJPdXREaXIiLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Ik91dHB1 dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5jIGZpbGUNCj4gPiA+ICsgd2lsbCBiZSBnZW5lcmF0ZWQu IERlZmF1bHQgaXMgdGhlIGlucHV0IGZpbGUncyBkaXJlY3RvcnkuIikNCj4gPiA+DQo+ID4gPiAg ICAgICMgUGFyc2UgdGhlIGlucHV0IGFyZ3VtZW50cy4NCj4gPiA+ICAgICAgQXJncyA9IFBhcnNl ci5wYXJzZV9hcmdzKCkNCj4gPiA+IEBAIC01NSw5ICs1MCw3IEBAIGRlZiBQYXJzZUFyZ3MoKToN Cj4gPiA+ICAgICAgICAgIHdpdGggb3BlbihBcmdzLklucHV0RmlsZSwgInJiIikgYXMgZkluOg0K PiA+ID4gICAgICAgICAgICAgIFNpZ25hdHVyZSA9IHN0cihmSW4ucmVhZCg0KSkNCj4gPiA+ICAg ICAgICAgICAgICBpZiAoIkRTRFQiIG5vdCBpbiBTaWduYXR1cmUpIGFuZCAoIlNTRFQiIG5vdCBp biBTaWduYXR1cmUpOg0KPiA+ID4gLSAgICAgICAgICAgICAgICBFZGtMb2dnZXIuaW5mbygiSW52 YWxpZCBmaWxlIHR5cGUuICIgKyBcDQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiRmlsZSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgIiArIFwNCj4gPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJEU0RUIG9yIFNTRFQgc2lnbmF0dXJlOiAlcyIgJSBBcmdz LklucHV0RmlsZSkNCj4gPiA+ICsgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmluZm8oIkludmFs aWQgZmlsZSB0eXBlLiBGaWxlIGRvZXMgbm90DQo+ID4gPiArIGhhdmUgYSB2YWxpZCBEU0RUIG9y IFNTRFQgc2lnbmF0dXJlOiB7fSIuZm9ybWF0KEFyZ3MuSW5wdXRGaWxlKSkNCj4gPiA+ICAgICAg ICAgICAgICAgICAgcmV0dXJuIE5vbmUNCj4gPiA+DQo+ID4gPiAgICAgICMgR2V0IHRoZSBiYXNl bmFtZSBvZiB0aGUgaW5wdXQgZmlsZS4NCj4gPiA+IEBAIC02Niw0MiArNTksMzkgQEAgZGVmIFBh cnNlQXJncygpOg0KPiA+ID4NCj4gPiA+ICAgICAgIyBJZiBubyBvdXRwdXQgZGlyZWN0b3J5IGlz IHNwZWNpZmllZCwgb3V0cHV0IHRvIHRoZSBpbnB1dCBkaXJlY3RvcnkuDQo+ID4gPiAgICAgIGlm IG5vdCBBcmdzLk91dERpcjoNCj4gPiA+IC0gICAgICAgIEFyZ3MuT3V0cHV0RmlsZSA9IG9zLnBh dGguam9pbigNCj4gPiA+IC0gICAgICAgICAgb3MucGF0aC5kaXJuYW1lKEFyZ3MuSW5wdXRGaWxl KSwNCj4gPiA+IC0gICAgICAgICAgQmFzZU5hbWUgKyAiLmhleCINCj4gPiA+IC0gICAgICAgICAg KQ0KPiA+ID4gKyAgICAgICAgQXJncy5PdXRwdXRGaWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGgu ZGlybmFtZShBcmdzLklucHV0RmlsZSksDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQmFzZU5hbWUgKyAiLmMiKQ0KPiA+ID4gICAgICBlbHNlOg0KPiA+ID4g ICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKEFyZ3MuT3V0RGlyKToNCj4gPiA+ICAgICAg ICAgICAgICBvcy5ta2RpcihBcmdzLk91dERpcikNCj4gPiA+IC0gICAgICAgIEFyZ3MuT3V0cHV0 RmlsZSA9IG9zLnBhdGguam9pbihBcmdzLk91dERpciwgQmFzZU5hbWUgKyAiLmhleCIpDQo+ID4g PiArICAgICAgICBBcmdzLk91dHB1dEZpbGUgPSBvcy5wYXRoLmpvaW4oQXJncy5PdXREaXIsIEJh c2VOYW1lICsNCj4gPiA+ICsgIi5jIikNCj4gPiA+DQo+ID4gPiAgICAgIEFyZ3MuQmFzZU5hbWUg PSBCYXNlTmFtZQ0KPiA+ID4NCj4gPiA+ICAgICAgcmV0dXJuIEFyZ3MNCj4gPiA+DQo+ID4gPiAt IyMgQ29udmVydCBhbiBBTUwgZmlsZSB0byBhIC5oZXggZmlsZSBjb250YWluaW5nIHRoZSBBTUwg Ynl0ZWNvZGUNCj4gPiA+IHN0b3JlZA0KPiA+ID4gKyMjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8g YSAuYyBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTCBieXRlY29kZQ0KPiA+ID4gK3N0b3JlZA0KPiA+ ID4gICMgIGluIGEgQyBhcnJheS4NCj4gPiA+ICAjDQo+ID4gPiAgIyBAcGFyYW0gIElucHV0Rmls ZSAgICAgUGF0aCB0byB0aGUgaW5wdXQgQU1MIGZpbGUuDQo+ID4gPiAtIyBAcGFyYW0gIE91dHB1 dEZpbGUgICAgUGF0aCB0byB0aGUgb3V0cHV0IC5oZXggZmlsZSB0byBnZW5lcmF0ZS4NCj4gPiA+ ICsjIEBwYXJhbSAgT3V0cHV0RmlsZSAgICBQYXRoIHRvIHRoZSBvdXRwdXQgLmMgZmlsZSB0byBn ZW5lcmF0ZS4NCj4gPiA+ICAjIEBwYXJhbSAgQmFzZU5hbWUgICAgICBCYXNlIG5hbWUgb2YgdGhl IGlucHV0IGZpbGUuDQo+ID4gPiAtIyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhbHNv IHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgLmhleCBmaWxlLg0KPiA+ID4gKyMgICAgICAgICAg ICAgICAgICAgICAgIFRoaXMgaXMgYWxzbyB0aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIC5jIGZp bGUuDQo+ID4gPiAgIw0KPiA+ID4gLWRlZiBBbWxUb0hleChJbnB1dEZpbGUsIE91dHB1dEZpbGUs IEJhc2VOYW1lKToNCj4gPiA+ICtkZWYgQW1sVG9DKElucHV0RmlsZSwgT3V0cHV0RmlsZSwgQmFz ZU5hbWUpOg0KPiA+ID4NCj4gPiA+IC0gICAgTWFjcm9OYW1lID0gIl9fe31fSEVYX18iLmZvcm1h dChCYXNlTmFtZS51cHBlcigpKQ0KPiA+ID4gICAgICBBcnJheU5hbWUgPSBCYXNlTmFtZS5sb3dl cigpICsgIl9hbWxfY29kZSINCj4gPiA+ICsgICAgRmlsZUhlYWRlciA9XA0KPiA+ID4gKyIiIg0K PiA+ID4gKy8vIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgZnJvbToNCj4gPiA+ICsvLyAg IC1QeXRob24gc2NyaXB0OiB7fQ0KPiA+ID4gKy8vICAgLUlucHV0IEFNTCBmaWxlOiB7fQ0KPiA+ ID4gKw0KPiA+ID4gKyIiIg0KPiA+ID4NCj4gPiA+ICAgICAgd2l0aCBvcGVuKElucHV0RmlsZSwg InJiIikgYXMgZkluLCBvcGVuKE91dHB1dEZpbGUsICJ3IikgYXMgZk91dDoNCj4gPiA+ICAgICAg ICAgICMgV3JpdGUgaGVhZGVyLg0KPiA+ID4gLSAgICAgICAgZk91dC53cml0ZSgiLy8gVGhpcyBm aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tOlxuIiArIFwNCj4gPiA+IC0gICAgICAgICAgICAg ICAgICAgIi8vIFx0UHl0aG9uIHNjcmlwdDogIiArIFwNCj4gPiA+IC0gICAgICAgICAgICAgICAg ICAgb3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSArICJcbiIgKyBcDQo+ID4gPiAtICAgICAgICAg ICAgICAgICAgICIvLyBcdElucHV0IEFNTCBmaWxlOiAiICsgXA0KPiA+ID4gLSAgICAgICAgICAg ICAgICAgICBvcy5wYXRoLmFic3BhdGgoSW5wdXRGaWxlKSArICJcblxuIiArIFwNCj4gPiA+IC0g ICAgICAgICAgICAgICAgICAgIiNpZm5kZWYge31cbiIuZm9ybWF0KE1hY3JvTmFtZSkgKyBcDQo+ ID4gPiAtICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIHt9XG5cbiIuZm9ybWF0KE1hY3JvTmFt ZSkNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgKQ0KPiA+ID4gKyAgICAgICAgZk91dC53cml0 ZShGaWxlSGVhZGVyLmZvcm1hdChvcy5wYXRoLmFic3BhdGgoSW5wdXRGaWxlKSwNCj4gPiA+ICsg b3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpDQo+ID4gPg0KPiA+ID4gICAgICAgICAgIyBXcml0 ZSB0aGUgYXJyYXkgYW5kIGl0cyBjb250ZW50Lg0KPiA+ID4gICAgICAgICAgZk91dC53cml0ZSgi dW5zaWduZWQgY2hhciB7fVtdID0ge3tcbg0KPiA+ID4gIi5mb3JtYXQoQXJyYXlOYW1lKSkgQEAg LTExNSwxNSArMTA1LDEyIEBAIGRlZiBBbWxUb0hleChJbnB1dEZpbGUsIE91dHB1dEZpbGUsIEJh c2VOYW1lKToNCj4gPiA+ICAgICAgICAgICAgICBieXRlID0gZkluLnJlYWQoMSkNCj4gPiA+ICAg ICAgICAgIGZPdXQud3JpdGUoIlxufTtcbiIpDQo+ID4gPg0KPiA+ID4gLSAgICAgICAgIyBXcml0 ZSBmb290ZXIuDQo+ID4gPiAtICAgICAgICBmT3V0LndyaXRlKCIjZW5kaWYgLy8ge31cbiIuZm9y bWF0KE1hY3JvTmFtZSkpDQo+ID4gPiAtDQo+ID4gPiAgIyMgTWFpbiBtZXRob2QNCj4gPiA+ICAj DQo+ID4gPiAgIyBUaGlzIG1ldGhvZDoNCj4gPiA+ICAjICAgMS0gIEluaXRpYWxpemUgYW4gRWRr TG9nZ2VyIGluc3RhbmNlLg0KPiA+ID4gICMgICAyLSAgUGFyc2VzIHRoZSBpbnB1dCBhcmd1bWVu dHMuDQo+ID4gPiAtIyAgIDMtICBDb252ZXJ0cyBhbiBBTUwgZmlsZSB0byBhIC5oZXggZmlsZSBj b250YWluaW5nIHRoZSBBTUwgYnl0ZWNvZGUgc3RvcmVkDQo+ID4gPiArIyAgIDMtICBDb252ZXJ0 cyBhbiBBTUwgZmlsZSB0byBhIC5jIGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlIHN0 b3JlZA0KPiA+ID4gICMgICAgICAgaW4gYSBDIGFycmF5Lg0KPiA+ID4gICMNCj4gPiA+ICAjIEBy ZXR2YWwgMCAgICAgU3VjY2Vzcy4NCj4gPiA+IEBAIC0xMzksMTAgKzEyNiw5IEBAIGRlZiBNYWlu KCk6DQo+ID4gPiAgICAgICAgICBpZiBub3QgQ29tbWFuZEFyZ3VtZW50czoNCj4gPiA+ICAgICAg ICAgICAgICByZXR1cm4gMQ0KPiA+ID4NCj4gPiA+IC0gICAgICAgICMgQ29udmVydCBhbiBBTUwg ZmlsZSB0byBhIC5oZXggZmlsZSBjb250YWluaW5nIHRoZSBBTUwgYnl0ZWNvZGUgc3RvcmVkDQo+ ID4gPiArICAgICAgICAjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuYyBmaWxlIGNvbnRhaW5p bmcgdGhlIEFNTA0KPiA+ID4gKyBieXRlY29kZSBzdG9yZWQNCj4gPiA+ICAgICAgICAgICMgaW4g YSBDIGFycmF5Lg0KPiA+ID4gLSAgICAgICAgQW1sVG9IZXgoQ29tbWFuZEFyZ3VtZW50cy5JbnB1 dEZpbGUsIENvbW1hbmRBcmd1bWVudHMuT3V0cHV0RmlsZSwNCj4gPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgIENvbW1hbmRBcmd1bWVudHMuQmFzZU5hbWUpDQo+ID4gPiArICAgICAgICBB bWxUb0MoQ29tbWFuZEFyZ3VtZW50cy5JbnB1dEZpbGUsDQo+ID4gPiArIENvbW1hbmRBcmd1bWVu dHMuT3V0cHV0RmlsZSwgQ29tbWFuZEFyZ3VtZW50cy5CYXNlTmFtZSkNCj4gPiA+ICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOg0KPiA+ID4gICAgICAgICAgcHJpbnQoZSkNCj4gPiA+ICAgICAg ICAgIHJldHVybiAxDQo+ID4gPiAtLQ0KPiA+ID4gJ0d1aWQoQ0UxNjU2NjktM0VGMy00OTNGLUI4 NUQtNjE5MEVFNUI5NzU5KScNCj4gPiA+DQo+ID4gPg0KPg0KPg0KPg0KPiBJTVBPUlRBTlQgTk9U SUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBj b25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRo ZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVs eSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1 c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBp biBhbnkgbWVkaXVtLiBUaGFuayB5b3UuDQo+DQo+DQo+DQoNCg0KDQpJTVBPUlRBTlQgTk9USUNF OiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25m aWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBp bnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBh bmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2Ug aXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBh bnkgbWVkaXVtLiBUaGFuayB5b3UuDQo=