From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by sourceware.org (Postfix) with ESMTPS id D7EDA3857BBB for ; Mon, 20 Jun 2022 12:52:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D7EDA3857BBB X-IronPort-AV: E=McAfee;i="6400,9594,10380"; a="305322901" X-IronPort-AV: E=Sophos;i="5.92,306,1650956400"; d="scan'208,217";a="305322901" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jun 2022 05:52:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,306,1650956400"; d="scan'208,217";a="714614363" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga004.jf.intel.com with ESMTP; 20 Jun 2022 05:52:14 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 20 Jun 2022 05:52:14 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 20 Jun 2022 05:52:13 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Mon, 20 Jun 2022 05:52:13 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.173) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Mon, 20 Jun 2022 05:52:13 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CGK7xz75Tn2FDNDHK0zpukajRKY9Yu1Z9iGEdu5jUrLnwjlgEdw91JXCSb7u00hsYJ29hxIqnBPMDHYWJLlOXsvf85twYLf7/1kCTPvIbhlRQYmyJxUhK9YfphxV2sO9mrDYfT1qUuYvTjIaf0z3pM+xwDjE5yiWdh2MujQvEUcAGREHOOYMm23hZ8PeAuCySz0tE5mWNAqQ21eEaNzl5B3xOV70/RoGNB/0jvtVTiZuOeim5x5giI0h4utmATYPc95ygaal48udJHbiOQmK/orclaHFgOU0NGiWQtwKCXg8UT+H/0GtXfbokvu+oDdBpNa9Thf/81KYsMXtWY117w== 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=WxE5mslfdMBA9MjEH6FKoUACmBeJeclMYN50w4z7FnY=; b=mIyKtGmjemftdGJujYgQ6KZhpp290pwiXU7JUXy8V+qd3ndZl6QqHaVvnMlz2EzELttp/GW3q+j3b6HfAkrFzbkOJnJbi3VriyGUNKY4a38ul+eHLaQH0KrOAOLL1ST1w9PcScUQcfgTy5jWA5NR7IsehmekQEG5HGjmV9el7agn6si9PAj4KLhCmE7jYwmJTzOYG8UVdCKP3YmrZIql6PKg977fo0+/HaguYMD+RrYCfeW9KczAb8kI5DPkAkHhvC34NeTP85Q8gbJ1+dsGM+VdXqLp4EFnBUIRkkVKDVj63+py41B95ewflZ1FEZcHkxzGJZkm5Dm35egodH6FVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM8PR11MB5749.namprd11.prod.outlook.com (2603:10b6:8:10::15) by DM6PR11MB4089.namprd11.prod.outlook.com (2603:10b6:5:198::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.19; Mon, 20 Jun 2022 12:52:11 +0000 Received: from DM8PR11MB5749.namprd11.prod.outlook.com ([fe80::4c:7f74:797d:837e]) by DM8PR11MB5749.namprd11.prod.outlook.com ([fe80::4c:7f74:797d:837e%4]) with mapi id 15.20.5353.020; Mon, 20 Jun 2022 12:52:11 +0000 From: "Metzger, Markus T" To: Zied Guermazi CC: "gdb-patches@sourceware.org" Subject: RE: [PATCH v6 4/7] start/stop btrace with coresight etm and collect etm buffer on linux os Thread-Topic: [PATCH v6 4/7] start/stop btrace with coresight etm and collect etm buffer on linux os Thread-Index: AQHXVmSkqAUefHvSUEqqod7Fdy2bxKshRWiQgfyztwCAAGu0sIAwLeQAgAwH3lA= Date: Mon, 20 Jun 2022 12:52:11 +0000 Message-ID: References: <20210531213307.275079-1-zied.guermazi@trande.de> <20210531213307.275079-5-zied.guermazi@trande.de> <761d9b7e-09f3-7c00-1f8f-df9af83c5aba@trande.de> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5279cf20-0286-4cf8-244f-08da52bbb12b x-ms-traffictypediagnostic: DM6PR11MB4089:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: mfgf1e+jQfKTREMVZB/peo6uBCkSHExWlpJVo8QUCoiWR2lPJXtWm4/brnbaXCEPo5lrNUW8Rj3R4JKCTrKwujsus2enZgqEbIecQG0wMmYBncSRzqGoROKvSn/hGEHR/lqSOiGUlIAssb6PN0bGTDSBj6ceJMi5+ukItH72Ez5r7w8TL/eEqHypm1LrMnF7eiXsLQ/1EMiqQFMtf/ZBsfns8oC1gRPHHkQTmmFIeb6OKzQfxIGgdawp7msZmrm6fvwgBOmHnLYHiV0QKgqahqQUw0lkVTyF4QCNZmw/vu4DMxfhmdO5yQzWrRVfU8qcXIL/Pk7rjEfbpVKUtnURg9/e3/58Loi8tilaPA2hGiILHZzcQNhSK1AUFeGZovi58yA2UtSvCd0z6L4Ny0TkcBq1adVZZn0GpNLvvp0ICjWpPy1UoZ8rHav9j1Yu2fNY581uBFl4SnWdrRgk9xzgnM+l+6Ux+OOn49Vk85GJ0OshVCNqOTqjSF7pmNUwCUgpFEI3DB9fH279abKl34SjZWY5XR761qlEAkiKPI78XuweYE0XCjOFGMzOb9sgd2kSnjPsXi1Is3UffrLv6jqtgQQZwmeUo1IMpff4+SYyRC/G/C6PKDCmuKmwoA9ektSDHSKlxYRQx17OYDzlVnUmmIqfOQ1nCW7vG38tDbV/+OBGlPHUWNRtp4tJCB/WwbslgFEKf6bfQ6gQJ6O8k0UgZua5XztT+NQq1dArVuqT18vjRyWahPV/d+4SV5F8W2emylY6Jo7n2HScZ4Hgqw7YN4Jwc/k9IBnstASiL2lEp5U= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5749.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(376002)(366004)(39860400002)(396003)(136003)(346002)(76116006)(316002)(26005)(6916009)(9686003)(71200400001)(66446008)(64756008)(66556008)(41300700001)(478600001)(8676002)(4326008)(66946007)(33656002)(66476007)(186003)(6506007)(66574015)(8936002)(9326002)(83380400001)(5660300002)(38070700005)(53546011)(52536014)(2906002)(166002)(38100700002)(122000001)(86362001)(82960400001)(55016003)(30864003)(7696005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UXVLQWc0WG5OSFRaWEhZVDRiQXl6ZzZZZnJBd0ZFOEdyN09KOWtPa0hqTUJP?= =?utf-8?B?a0hkUlBraEdwNWJKVG5ZbmgvSnNrVzVqQVVRNmJKOUlPRGxwa1dFSHNiS2NQ?= =?utf-8?B?anc2L0N3ODdKNVozQkY4czVTNzFWZ2EzNFROOUVaRWtiSlNpenY1MlJlRlh3?= =?utf-8?B?a3R3RkdOYkU4d01YaG5TNmc4TXRWMWhsUWRjblY2K3A5bmpVUExjVUV6ZStk?= =?utf-8?B?NXFqOE1WNmZ6V1VXN1ozT2syQXN0SFBQS21UR251alpnSFZDMW1iblMwRlJy?= =?utf-8?B?MXJmV3M5RjlsdGtnWXVIRHR1L2RBMVhiaEtTK2JxM0IwdjRWUEVJQVVGc2g3?= =?utf-8?B?eHhHOU1JOVkzU2RqQWxqQ2xKZmJMTHVqa2xGOXZPSS8xRE5xMFpCTEtMcHJ0?= =?utf-8?B?REVUMTRFM2NaZUxJcDJmY2FOelpMenkzOVpKMUJsNnhkOWtsbHdSbWxEOFpi?= =?utf-8?B?L1l3VGh5Y1prRjBTMi9zbFRSclBMVFlMaHNxWndXSGNjdHh6SUZicXhtTUph?= =?utf-8?B?anJhS1Nxc0VnbkZFejRhdTFlay9odStpRHNnRlhOVlUyaWxrVEQxQXZZR2tI?= =?utf-8?B?SzJZS1hQMXhUbnp1VThzTktQcEZQMUNTeFM3c2ErZzRNTGt6ZzBubW9lT29p?= =?utf-8?B?RVNtWWxWUzU0SHUwbUZBWXlYd0tqWDJTZThmaHFYdi9vd2dLZ1RneDFYTGZX?= =?utf-8?B?NkJOVEs3MGcxd3V1b0w2WGtMbmZjd2ZUbFlmQzdUcnczVWMzMVhrYTMxTzZE?= =?utf-8?B?ZjhDOTZmdXIzVkxpbE96MmVpN1Rkb21iTkNGNVNzYlhsMVFHQzQzU1pHT0xC?= =?utf-8?B?MWhpNHJLUFRHS1d1L0h4b2NHMnJXM3pHdDZTWmQ3YmFtTnZ0UjlpakVHeE05?= =?utf-8?B?Q0NxRTUvM1A5T3ZLVkpHalBxd3JIOFUyWFpaSE00amlPcDZha3E5YlVRd2Q3?= =?utf-8?B?YVJZc0t0ODBPTEUxTGlBUWh3N3lrdWVFTVB6VUU0Y0ZRaFBONkJ3Qjh0SnNo?= =?utf-8?B?NEowdXl6RU05SU1ldTdUZFM3clhPSWRJYUl0ZVg0RWRDM0ZuYXJGbzRNVzRM?= =?utf-8?B?U3Z4LzMrNDFXcmdaRFR5SHRMN2N3MThDWjA2cWFFRzM1Z1Z4cnRNaVRrSGdU?= =?utf-8?B?UWd6YVhKQ2o5UXZ5cGRtWGQzUno1K1REQ1NPQ3IvUmordkVEbEtoc25ZTFE1?= =?utf-8?B?d1J6RnhRU0NYU3RPTmw3eG9nLzUrN1RhU1pNK0lMNGtMRk9GWWwzTGRxeVpQ?= =?utf-8?B?c2ttb1cyMFJTam5SeTc2TkpXK0ZJU2R2RnBCSkFFMmk0V1ZhYzRRdHR3QzNj?= =?utf-8?B?cU9ORjh5NXVkdUxBT0xhUFlLU0JBVmdTSEczMHpBT0RCcUJBUS8yamNob0M5?= =?utf-8?B?YmFQNHRGamVxT1dzL0ZFa2lGQ0tyaHpRb0FWSFh1MVdnRWh6K2RPMFdjOXdx?= =?utf-8?B?QjNWd0FIalFQTThvZE9jQnFRbTcxU1VsTEJxbzRUZXEzcXNYT1hObkFMK2NL?= =?utf-8?B?TzVzZ0phUGE2dEhzWU9pNlYxTTRXdGN3Z1V1czBRZ0NsODZIV1dlWURWcnF4?= =?utf-8?B?emtJeTBhcWpjd2lCTXIvTTM4TW8zWVBKME5wT0RIVlRjbzgyL1I2cDk2Ky9n?= =?utf-8?B?Z2h6SzN2QVB1WGd4cHdqODRrOXNUSCtPaWpTWHkxaFJjTnEydjlxK1VFTC9W?= =?utf-8?B?cTdlQmxFcXFyRUhsRmNqNFlPaTNZdU9DVXFENkxvSlMzK2hDTC8xdklLV0tZ?= =?utf-8?B?NFRZdnNNSTFzaTNOZkhvTFdlREo3NEhiVEpOa0ZjeE5sYjlpV2VIVXVDajR4?= =?utf-8?B?anA3L25Nd0lXNlVqMTJsWDRLMERpUEtvcTNtQVpFQjR1a1BhK0ZGZVZ1NFFR?= =?utf-8?B?MEFKRkQrQUd1bnhXT2R1MThCWjZJZVpIZUJVS0IyY0ZNbzBnTDdyRG11Zkt2?= =?utf-8?B?Qnh1QmNZb0hwMVlzNVU3eXBSMU1LK2NieU8xRTVjd1F1Y2ZWbUxWREFTWFlk?= =?utf-8?B?Tmp0K1ZMQXpCaEpWWXRUQjd6cE9xTXM3bFZVYnU4Kys2M3VrVDJqb0tXK2lG?= =?utf-8?B?UjNYSzN5Z0d3eXZNblZhV0J6TFpzTlArcDZVcGhVYURKeUNHbWVQZHlMNHhw?= =?utf-8?B?K0Q3WGZoSytObnoxNFBLdkl0WGZ0M1gycURYZEo2RlNIYk55QWZZb0xQeUdm?= =?utf-8?B?REpYd2F0YXIvbE9TdUo1UkhqZFF6MHRySDRTOVJMc3h4Qkh1bStmWlg3d3Ix?= =?utf-8?B?QlFUNTM0cTFIbEJlZytjeXNNMTdFRUc0cklWSmhjMkdwYTh6UjZISlBSSXVU?= =?utf-8?B?ejBydFlweGpRc3dyTW9YVU5vK2hiMHNid3JNWm03bWc3M0VGTUpKZz09?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5749.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5279cf20-0286-4cf8-244f-08da52bbb12b X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jun 2022 12:52:11.0634 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: xTrA0eYtw6UTYAbzud7F/mQrKNFFYO+SrKNcVOp5j/K1/Ie+A49D8Hkuaj+U3ZKP6ITomDr8hillndGiX2TtGbU+zqX7WlNVrzraqtSsut8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4089 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FOREIGN_BODY1, HTML_MESSAGE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jun 2022 12:52:31 -0000 SGVsbG8gWmllZCwNCg0KDQovKiBvcGVuIHRoZSBzY29wZWQgZmQuICovDQoNCnN0YXRpYyBzY29w ZWRfZmQgKg0KcGVyZl9ldmVudF9vcGVuICggY29uc3Qgc3RydWN0IHBlcmZfZXZlbnRfYXR0ciAq ZXZlbnRfYXR0cmlidXRlcywgY29uc3QgaW50IHBpZCkNCg0KVGhlIHB1cnBvc2Ugb2YgdGhvc2Ug c2NvcGVkXyBjbGFzc2VzIGlzIHRvIGFsbG9jYXRlZCBvYmplY3RzIG9uIHRoZSBzdGFjayB0byBo YXZlIHRoZW0gZGVzdHJveSB0aGVpciBjb250ZW50IGluIGNhc2Ugb2YgZXhjZXB0aW9ucy4NCg0K SW4gdGhlIGFib3ZlIGV4YW1wbGUsIHBlcmZfZXZlbnRfb3BlbigpIG1heSB1c2UgYSBzY29wZWRf ZmQgaW50ZXJuYWxseSBidXQgd291bGQgcmV0dXJuIHRoZSBhY3R1YWwgZmlsZSBkZXNjcmlwdG9y IGFmdGVyIHJlbGVhc2luZyBpdC4gIFRoZSBjYWxsZXIgbWF5IHB1dCB0aGUgcmV0dXJuZWQgZmls ZSBkZXNjcmlwdG9yIGludG8gaXRzIG93biBzY29wZWRfZmQgb2JqZWN0IG9uIGl0cyBzdGFjay4N Cg0KcmVnYXJkcywNCm1hcmt1cy4NCg0KDQoNCi8qIG9wZW4gdGhlIHNjb3BlZCBmZC4gKi8NCg0K c3RhdGljIHNjb3BlZF9mZCAqDQpwZXJmX2V2ZW50X29wZW4gKCBjb25zdCBzdHJ1Y3QgcGVyZl9l dmVudF9hdHRyICpldmVudF9hdHRyaWJ1dGVzLCBjb25zdCBpbnQgcGlkKQ0KDQovKk9wZW4gdGhl IHNjb3BlZCBtbWFwIGRhdGEgKi8NCg0Kc3RhdGljIHNjb3BlZF9tbWFwKg0KcGVyZl9ldmVudF9t bWFwX2RhdGEgKGNvbnN0IHNjb3BlZF9mZCogZmQsIHNpemVfdCogc2l6ZSwgc2l6ZV90IHBhZ2Vf c2l6ZSkNCg0KYW5kDQoNCi8qT3BlbiB0aGUgc2NvcGVkIG1tYXAgYXV4ICovDQpzdGF0aWMgc2Nv cGVkX21tYXAqDQpwZXJmX2V2ZW50X21tYXBfYXV4IChjb25zdCBzY29wZWRfZmQqIGZkLCBzdHJ1 Y3QgcGVyZl9ldmVudF9tbWFwX3BhZ2UgKmhlYWRlciwgc2l6ZV90KiBzaXplLCBzaXplX3QgcGFn ZV9zaXplKQ0KDQphbmQgY2FsbCB0aGVtIHdpdGhpbiBsaW51eF9lbmFibGVfYnRzLCBsaW51eF9l bmFibGVfcHQgYW5kIGxpbnV4X2VuYWJsZV9ldG0NCg0KSSB0cmllZCB0d28gYWx0ZXJuYXRpdmVz IGFuZCBib3RoIG9mIHRoZW0gZmFpbGVkOg0KDQotIEFsdGVybmF0aXZlIDE6IGluc3RhbnRpYXRl IHRoZSByZXR1cm5lZCBzY29wZWRfbW1hcCBvbiB0aGUgc3RhY2sgb2YgdGhlIHBlcmZfZXZlbnRf bW1hcF9kYXRhIGFuZCBwZXJmX2V2ZW50X21tYXBfYXV4OiB0aGUgY29tcGlsZXIgcmVmdXNlZCB0 byBhc3NpZ24gdGhlIHNjb3BlZF9tbWFwIHZhcmlhYmxlcyBhbmQgdGhleSB3aWxsIG5vdCBiZSB2 YWxpZCBhbnltb3JlIGluIHRoZSBsaW51eF9lbmFibGVfYnRzLCBsaW51eF9lbmFibGVfcHQgYW5k IGxpbnV4X2VuYWJsZV9ldG0NCg0KLSBBbHRlcm5hdGl2ZSAyOiBpbnN0YW50aWF0ZSB0aGUgcmV0 dXJuZWQgc2NvcGVkX21tYXAgb24gdGhlIGhlYXAgYnkgYWxsb2NhdGluZyB0aGVtLiB0aGUgY29t cGlsZXIgY29tcGlsZXMgYnV0LCBvbmNlIHdlIHN0b3AgdGhlIHRyYWNpbmcgd2UgY2EgY2FuIG5v dCBzdGFydCBpdCBhZ2FpbiBjYXVzZSB0aGUgcmVzb3VyY2VzIGFyZSBidXN5Lg0KDQpmb3IgdGhl IHRpbWUgYmVpbmcgSSB3aWxsIHB1dCB0aGlzIHJlZmFjdG9yaW5nIGFjdGlvbiBvbiBob2xkLg0K DQpBbnkgaWRlYSBvciBzdXBwb3J0IHRvIHByb2dyZXNzIGZ1cnRoZXIgYXJlIHdlbGNvbWUNCg0K DQoNCktpbmQgUmVnYXJkcw0KDQpaaWVkIEd1ZXJtYXppDQoNCg0KT24gMTMuMDUuMjIgMDc6MzEs IE1ldHpnZXIsIE1hcmt1cyBUIHdyb3RlOg0KSGVsbG8gWmllZCwNCg0KDQorY3NfZXRtX2dldF9y ZWdpc3RlciAoaW50IGNwdSwgY29uc3QgY2hhciAqcGF0aCkNCg0KK3sNCg0KWy4uLl0NCg0KKw0K DQorICB1aW50MzJfdCB2YWwgPSAwOw0KDQorDQoNCisgIGludCAgZm91bmQgPSBmc2NhbmYgKGZp bGUuZ2V0ICgpLCAiMHgleCIsICZ2YWwpOw0KDQorICBpZiAoZm91bmQgIT0gMSkNCg0KKyAgICBl cnJvciAoXygiRmFpbGVkIHRvIHJlYWQgY29yZXNpZ2h0IHJlZ2lzdGVyIGZyb20gJXMuIiksIGZp bGVuYW1lKTsNCg0KKyAgcmV0dXJuIHZhbDsNCg0KDQpbWmllZF0gZXhpc3RpbmcgY29kZSBpbiB0 aGlzIGZpbGUgaGFzIGFuIGVtcHR5IGxpbmUgYmVmb3JlIHRoZSBsYXN0IHJldHVybiBldmVyeXdo ZXJlLiBzaGFsbCBJIHN0aWNrIHRvIHRoaXMgY29udmVudGlvbj8gZWxpbWluYXRpbmcgdGhlIGVt cHR5IGxpbmVzIGJlZm9yZSByZXR1cm5zIHdpbGwgYnJpbmcgaW5jb25zaXN0ZW5jeSBpbiB0aGUg ZmlsZS4gd2hpY2ggY29kaW5nIGNvbnZlbnRpb24gZG8gd2UgaGF2ZSB0byBhcHBseSBoZXJlPw0K DQoNClllcywgbGV04oCZcyBzdGljayB0byB0aGF0IGFuZCBhZGQgdGhlIGVtcHR5IGxpbmUuDQoN Cg0KDQpzbyBib3RoIHBlcmZfZXZlbnRfbW1hcF9kYXRhIHBlcmZfZXZlbnRfbW1hcF9hdXggY2Fu IGJlIGluIGZhY3QgcmVkdWNlZCB0byBvbmUgZnVuY3Rpb24gaWYgd2UgZ2l2ZSBzaXplX3Qgc2l6 ZSwgc2l6ZV90IHBhZ2Vfc2l6ZSwgaW50IG9mZnNldCBhcyBwYXJhbWV0ZXJzLg0KDQpCVFMgYWxs b2NhdGVzIHRoZSBkYXRhIGJ1ZmZlciBpbmNsdWRpbmcgdGhlIGhlYWRlciwgd2hlcmVhcyBQVCBh bGxvY2F0ZXMgdGhlIGF1eCBidWZmZXIgcGx1cyB0aGUgaGVhZGVyLiAgV2UgY2FuIHN0aWxsIG1h a2UgaXQgb25lIGZ1bmN0aW9uLCBvZiBjb3Vyc2UsIGJ1dCBJIGRvbuKAmXQgdGhpbmsgdGhhdCBp dCB3aWxsIGJlIGFueSBlYXNpZXIgdG8gcmVhZCB0aGF0IHdheS4NCg0KDQoNCjItIGhvdyB0byBi cmluZyB0aGlzIGNoYW5nZSB0byB0aGUgbWFpbnN0cmVhbS4gaGVyZSB3ZSBoYXZlIHR3byBhbHRl cm5hdGl2ZXMgOiBlaXRoZXIgSSBkbyB0aGlzIHJlc3RydWN0dXJpbmcgZm9yIGV0bSBvbmx5IGFu ZCB0aGVuIHlvdSB0YWtlIGNhcmUgb2YgdXNpbmcgdGhlIGhlbHBlciBmdW5jdGlvbnMgZm9yIGJ0 cyBhbmQgcHQgb3IgSSBjb21taXQgaXQgYXMgaXQgaXMgYW5kIHRoZW4gSSBpc3N1ZSBhIHBhdGNo IGZvciB0aGlzIHBvaW50IG9ubHkgZm9yIGJ0cyBQVCBhbmQgRVRNLiBXaGF0IGRvIHlvdSBwcmVm ZXI/DQoNCklkZWFsbHksIHdl4oCZZCBmaXJzdCByZXN0cnVjdHVyZSB0aGUgZXhpc3RpbmcgY29k ZSwgdGhlbiBhZGQgdGhlIG5ldyB1c2UuICBBcmUgeW91IGFibGUgdG8gdGVzdCBCVFMgYW5kIFBU Pw0KDQpSZWdhcmRzLA0KTWFya3VzLg0KDQoNCkZyb206IFppZWQgR3Vlcm1hemkgPHppZWQuZ3Vl cm1hemlAdHJhbmRlLmRlPjxtYWlsdG86emllZC5ndWVybWF6aUB0cmFuZGUuZGU+DQpTZW50OiBG cmlkYXksIE1heSAxMywgMjAyMiAxMjo1MiBBTQ0KVG86IE1ldHpnZXIsIE1hcmt1cyBUIDxtYXJr dXMudC5tZXR6Z2VyQGludGVsLmNvbT48bWFpbHRvOm1hcmt1cy50Lm1ldHpnZXJAaW50ZWwuY29t PjsgZ2RiLXBhdGNoZXNAc291cmNld2FyZS5vcmc8bWFpbHRvOmdkYi1wYXRjaGVzQHNvdXJjZXdh cmUub3JnPg0KU3ViamVjdDogUmU6IFtQQVRDSCB2NiA0LzddIHN0YXJ0L3N0b3AgYnRyYWNlIHdp dGggY29yZXNpZ2h0IGV0bSBhbmQgY29sbGVjdCBldG0gYnVmZmVyIG9uIGxpbnV4IG9zDQoNCg0K SGVsbG8gTWFya3VzLA0KDQp0aGFua3MgZm9yIHlvdXIgZmVlZGJhY2ssIGJlbG93IGFyZSB0aGUg cmV3b3JraW5nIGNvbW1lbnRzLg0KDQovWmllZA0KT24gMjMuMDYuMjEgMTA6MDAsIE1ldHpnZXIs IE1hcmt1cyBUIHdyb3RlOg0KDQpIZWxsbyBaaWVkLA0KDQoNCg0KVGhpcyBwYXRjaCBpbXBsZW1l bnQgdGhlIGxvd2VyIGxheWVyIGZvciBzdGFydGluZyBhZCBzdG9wcGluZw0KDQpBUk0gQ29yZVNp Z2h0IHRyYWNpbmcgb24gbGludXggdGFyZ2V0cyBmb3IgYXJtIGFuZCBhYXJjaDY0DQoNCg0KDQpU aGUgcGF0Y2ggbG9va3MgZ29vZCBvdmVyYWxsLiAgVGhlcmUgYXJlIGEgZmV3IHN0eWxlIG5pdHMg YW5kIEknZCBhc2sgeW91IHRvDQoNCnNwbGl0IHRoZSBQQUdFX1NJWkUgY2hhbmdlcyBpbnRvIGEg c2VwYXJhdGUgcGF0Y2ggYXMgdGhleSBhcmUgdW5yZWxhdGVkLg0KDQoNCg0KVGhlbiwgdGhlcmUn cyB0aGUgZGlzY3Vzc2lvbiBhYm91dCBzaGFyaW5nIHBlcmZfZXZlbnQgYnVmZmVyIG1hcHBpbmcu DQoNCkkgcG9pbnRlZCBvdXQgd2hpY2ggcGFydHMgSSBiZWxpZXZlIGNhbiBiZSBzaGFyZWQuDQoN Cg0KDQoNCg0KKy8qIFRlYXJkb3duIGJyYW5jaCB0cmFjaW5nLiAgKi8NCg0KKw0KDQordm9pZA0K DQorYXJtX2xpbnV4X25hdF90YXJnZXQ6OnRlYXJkb3duX2J0cmFjZSAoc3RydWN0IGJ0cmFjZV90 YXJnZXRfaW5mbyAqdGluZm8pDQoNCit7DQoNCisgIC8qIElnbm9yZSBlcnJvcnMuICAqLw0KDQor ICBsaW51eF9kaXNhYmxlX2J0cmFjZSAodGluZm8pOw0KDQorfQ0KDQorDQoNCitlbnVtIGJ0cmFj ZV9lcnJvcg0KDQorYXJtX2xpbnV4X25hdF90YXJnZXQ6OnJlYWRfYnRyYWNlIChzdHJ1Y3QgYnRy YWNlX2RhdGEgKmRhdGEsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnRy YWNlX3RhcmdldF9pbmZvICpidGluZm8sDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnVtIGJ0cmFjZV9yZWFkX3R5cGUgdHlwZSkNCg0KK3sNCg0KKyAgcmV0dXJuIGxpbnV4X3JlYWRf YnRyYWNlIChkYXRhLCBidGluZm8sIHR5cGUpOw0KDQorfQ0KDQorDQoNCisvKiBTZWUgdG9fYnRy YWNlX2NvbmYgaW4gdGFyZ2V0LmguICAqLw0KDQorDQoNCitjb25zdCBzdHJ1Y3QgYnRyYWNlX2Nv bmZpZyAqDQoNCithcm1fbGludXhfbmF0X3RhcmdldDo6YnRyYWNlX2NvbmYgKGNvbnN0IHN0cnVj dCBidHJhY2VfdGFyZ2V0X2luZm8gKmJ0aW5mbykNCg0KK3sNCg0KKyAgcmV0dXJuIGxpbnV4X2J0 cmFjZV9jb25mIChidGluZm8pOw0KDQorfQ0KDQoNCg0KVGhlcmUncyBzb21lIGluY29uc2lzdGVu Y3kgaW4gY29tbWVudHMgb24gZnVuY3Rpb25zIHJhbmdpbmcgZnJvbSBubyBjb21tZW50DQoNCm92 ZXIgcmVmZXJyaW5nIHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQgc3RydWN0LCB0byBhbiBvd24gY29t bWVudC4NCltaaWVkXSBJIHdpbGwgYWxpZ24gdGhlIGNvbW1lbnRzLiBwbGVhc2Ugbm90aWNlIHRo YXQgdGhlIHNhbWUgYXBwbGllcyB0byB4ODYtbGludXgtbmF0LmMgKGl0IHdhcyBhIGNvcHktcGFz dGUgZnJvbSBpdCkNCg0KDQoNCg0KDQoNCg0KDQoNCkBAIC00ODMsMTAgKzQ4NywxMSBAQCBsaW51 eF9lbmFibGVfYnRzIChwdGlkX3QgcHRpZCwgY29uc3Qgc3RydWN0DQoNCmJ0cmFjZV9jb25maWdf YnRzICpjb25mKQ0KDQogIHNjb3BlZF9mZCBmZCAoc3lzY2FsbCAoU1lTX3BlcmZfZXZlbnRfb3Bl biwgJmJ0cy0+YXR0ciwgcGlkLCAtMSwgLTEsIDApKTsNCg0KICBpZiAoZmQuZ2V0ICgpIDwgMCkN Cg0KICAgIGRpYWdub3NlX3BlcmZfZXZlbnRfb3Blbl9mYWlsICgpOw0KDQorICBsb25nIHBhZ2Vf c2l6ZSA9IHN5c2NvbmYgKF9TQ19QQUdFU0laRSk7DQoNCg0KDQpQbGVhc2Ugc3BsaXQgdGhvc2Ug UEFHRV9TSVpFIGNoYW5nZXMgaW50byBhIHNlcGFyYXRlIHBhdGNoLiAgVGhpcyBpcyB1bnJlbGF0 ZWQNCg0KdG8gd2hhdCB0aGlzIHBhdGNoIGlzIGRvaW5nLg0KDQoNCg0KTm90ZSB0aGF0IFBBR0Vf U0laRSB3YXMgdW5zaWduZWQgd2hlcmVhcyBzeXNjb25mICgpIHJldHVybnMgYSBzaWduZWQgaW50 ZWdlci4NCg0KSSdkIGV4cGVjdCBjb21waWxlcnMgdG8gcmVxdWlyZSBwcm9wZXIgY2FzdGluZy4N CltaaWVkXSBkb25lDQoNCg0KDQoNCg0KDQoNCg0KDQorLyogRW5hYmxlIEFSTSBDb3JlU2lnaHQg RVRNIHRyYWNpbmcuICAqLw0KDQorDQoNCitzdGF0aWMgc3RydWN0IGJ0cmFjZV90YXJnZXRfaW5m byAqDQoNCitsaW51eF9lbmFibGVfZXRtIChwdGlkX3QgcHRpZCwgY29uc3Qgc3RydWN0IGJ0cmFj ZV9jb25maWdfZXRtICpjb25mKQ0KDQorew0KDQpbLi4uXQ0KDQorICBldG0tPmF0dHIuc2FtcGxl X3R5cGUgPSBQRVJGX1NBTVBMRV9DUFU7DQoNCisgIGV0bS0+YXR0ci5yZWFkX2Zvcm1hdCA9IFBF UkZfRk9STUFUX0lEOw0KDQorICBldG0tPmF0dHIuc2FtcGxlX2lkX2FsbCA9IDE7DQoNCg0KDQpZ b3UgZW5hYmxlIHNhbXBsaW5nLiAgV291bGRuJ3QgeW91IG5lZWQgdG8gbW1hcCB0aGUgZGF0YSBi dWZmZXIsIGFzIHdlbGw/DQpbWmllZF0gaXQgaXMgbm90IG5lZWRlZCBmb3IgY3VycmVudCBpbXBs ZW1lbnRhdGlvbi4gcmVtb3ZlZC4NCg0KDQoNCg0KDQoNCg0KDQoNClRoaXMgLi4uDQoNCg0KDQor ICBlcnJubyA9IDA7DQoNCisgIHNjb3BlZF9mZCBmZCAoc3lzY2FsbCAoU1lTX3BlcmZfZXZlbnRf b3BlbiwgJmV0bS0+YXR0ciwgcGlkLCAtMSwgLTEsIDApKTsNCg0KKyAgaWYgKGZkLmdldCAoKSA8 IDApDQoNCisgICAgZGlhZ25vc2VfcGVyZl9ldmVudF9vcGVuX2ZhaWwgKCk7DQoNCisNCg0KKyAg LyogQWxsb2NhdGUgdGhlIGNvbmZpZ3VyYXRpb24gcGFnZS4gICovDQoNCisgIGxvbmcgcGFnZV9z aXplID0gc3lzY29uZiAoX1NDX1BBR0VTSVpFKTsNCg0KKyAgc2NvcGVkX21tYXAgZGF0YSAobnVs bHB0ciwgcGFnZV9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLA0KDQpNQVBfU0hBUkVELA0K DQorICAgICAgICAgICAgIGZkLmdldCAoKSwgMCk7DQoNCisgIGlmIChkYXRhLmdldCAoKSA9PSBN QVBfRkFJTEVEKQ0KDQorICAgIGVycm9yIChfKCJGYWlsZWQgdG8gbWFwIHRyYWNlIHVzZXIgcGFn ZTogJXMuIiksIHNhZmVfc3RyZXJyb3IgKGVycm5vKSk7DQoNCisNCg0KKyAgc3RydWN0IHBlcmZf ZXZlbnRfbW1hcF9wYWdlICpoZWFkZXIgPSAoc3RydWN0IHBlcmZfZXZlbnRfbW1hcF9wYWdlICop DQoNCisgICAgZGF0YS5nZXQgKCk7DQoNCisNCg0KKyAgaGVhZGVyLT5hdXhfb2Zmc2V0ID0gaGVh ZGVyLT5kYXRhX29mZnNldCArIGhlYWRlci0+ZGF0YV9zaXplOw0KDQorICAvKiBDb252ZXJ0IHRo ZSByZXF1ZXN0ZWQgc2l6ZSBpbiBieXRlcyB0byBwYWdlcyAocm91bmRpbmcgdXApLiAgKi8NCg0K KyAgcGFnZXMgPSAoKHNpemVfdCkgY29uZi0+c2l6ZSAvIHBhZ2Vfc2l6ZQ0KDQorICAgICArICgo Y29uZi0+c2l6ZSAlIHBhZ2Vfc2l6ZSkgPT0gMCA/IDAgOiAxKSk7DQoNCisgIC8qIFdlIG5lZWQg YXQgbGVhc3Qgb25lIHBhZ2UuICAqLw0KDQorICBpZiAocGFnZXMgPT0gMCkNCg0KKyAgICBwYWdl cyA9IDE7DQoNCisNCg0KKyAgLyogVGhlIGJ1ZmZlciBzaXplIGNhbiBiZSByZXF1ZXN0ZWQgaW4g cG93ZXJzIG9mIHR3byBwYWdlcy4gIEFkanVzdCBQQUdFUw0KDQorICAgICB0byB0aGUgbmV4dCBw b3dlciBvZiB0d28uICAqLw0KDQorICBmb3IgKHBnID0gMDsgcGFnZXMgIT0gKChzaXplX3QpIDEg PDwgcGcpOyArK3BnKQ0KDQorICAgIGlmICgocGFnZXMgJiAoKHNpemVfdCkgMSA8PCBwZykpICE9 IDApDQoNCisgICAgICBwYWdlcyArPSAoKHNpemVfdCkgMSA8PCBwZyk7DQoNCisNCg0KKyAgLyog V2UgdHJ5IHRvIGFsbG9jYXRlIHRoZSByZXF1ZXN0ZWQgc2l6ZS4NCg0KKyAgICAgSWYgdGhhdCBm YWlscywgdHJ5IHRvIGdldCBhcyBtdWNoIGFzIHdlIGNhbi4gICovDQoNCisgIHNjb3BlZF9tbWFw IGF1eDsNCg0KKyAgZm9yICg7IHBhZ2VzID4gMDsgcGFnZXMgPj49IDEpDQoNCisgICAgew0KDQor ICAgICAgc2l6ZV90IGxlbmd0aDsNCg0KKyAgICAgIF9fdTY0IGRhdGFfc2l6ZTsNCg0KKyAgICAg IGRhdGFfc2l6ZSA9IChfX3U2NCkgcGFnZXMgKiBwYWdlX3NpemU7DQoNCisNCg0KKyAgICAgIC8q IERvbid0IGFzayBmb3IgbW9yZSB0aGFuIHdlIGNhbiByZXByZXNlbnQgaW4gdGhlIGNvbmZpZ3Vy YXRpb24uICAqLw0KDQorICAgICAgaWYgKChfX3U2NCkgVUlOVF9NQVggPCBkYXRhX3NpemUpDQoN CisgIGNvbnRpbnVlOw0KDQorDQoNCisgICAgICBsZW5ndGggPSAoc2l6ZV90KSBkYXRhX3NpemU7 DQoNCisNCg0KKyAgICAgIC8qIENoZWNrIGZvciBvdmVyZmxvd3MuICAqLw0KDQorICAgICAgaWYg KChfX3U2NCkgbGVuZ3RoICE9IGRhdGFfc2l6ZSkNCg0KKyAgY29udGludWU7DQoNCisNCg0KKyAg ICAgIGhlYWRlci0+YXV4X3NpemUgPSBkYXRhX3NpemU7DQoNCisNCg0KKyAgICAgIGVycm5vID0g MDsNCg0KKyAgICAgIGF1eC5yZXNldCAobnVsbHB0ciwgbGVuZ3RoLCBQUk9UX1JFQUQsIE1BUF9T SEFSRUQsIGZkLmdldCAoKSwNCg0KKyAgICAgICAgICBoZWFkZXItPmF1eF9vZmZzZXQpOw0KDQor ICAgICAgaWYgKGF1eC5nZXQgKCkgIT0gTUFQX0ZBSUxFRCkNCg0KKyAgYnJlYWs7DQoNCisgICAg fQ0KDQorICBpZiAocGFnZXMgPT0gMCkNCg0KKyAgICBlcnJvciAoXygiRmFpbGVkIHRvIG1hcCB0 cmFjZSBidWZmZXI6ICVzLiIpLCBzYWZlX3N0cmVycm9yIChlcnJubykpOw0KDQorDQoNCisgIGV0 bS0+ZXRtLnNpemUgPSBhdXguc2l6ZSAoKTsNCg0KKyAgZXRtLT5ldG0ubWVtID0gKGNvbnN0IHVp bnQ4X3QgKikgYXV4LnJlbGVhc2UgKCk7DQoNCisgIGV0bS0+ZXRtLmRhdGFfaGVhZCA9ICZoZWFk ZXItPmF1eF9oZWFkOw0KDQorICBldG0tPmV0bS5sYXN0X2hlYWQgPSBoZWFkZXItPmF1eF90YWls Ow0KDQorICBldG0tPmhlYWRlciA9IChzdHJ1Y3QgcGVyZl9ldmVudF9tbWFwX3BhZ2UgKikgZGF0 YS5yZWxlYXNlICgpOw0KDQorICBnZGJfYXNzZXJ0IChldG0tPmhlYWRlciA9PSBoZWFkZXIpOw0K DQoNCg0KLi4uIGNhbiBiZSBzaGFyZWQgd2l0aCBidHJhY2VfZW5hYmxlX3B0ICgpIGJ5IGludHJv ZHVjaW5nIHNvbWUNCg0KDQoNCnBlcmZfZXZlbnRfb3Blbl9hdXggKHN0cnVjdCBwZXJmX2V2ZW50 X2J1ZmZlciAqLCBjb25zdCBzdHJ1Y3QgcGVyZl9ldmVudF9hdHRyICopDQoNCg0KDQpoZWxwZXIu DQoNCg0KDQpBbmQgaWYgeW91IGluZGVlZCBuZWVkIHRvIG1tYXAgdGhlIGRhdGEgYnVmZmVyLCBh cyB3ZWxsLCB3ZSBjYW4gc2hhcmUgdGhhdCB3aXRoDQoNCmJ0cmFjZV9lbmFibGVfYnRzICgpLCBh bHRob3VnaCB3ZSdkIG5lZWQgc29tZSBtb3JlIHJlc3RydWN0dXJpbmcgdG8gbGVhdmUNCg0KcGVy Zl9ldmVudF9vcGVuIHRvIHRoZSBjYWxsZXIgYW5kIGp1c3QgYWxsb2NhdGUgdGhlIGRhdGEgYW5k IGF1eCBidWZmZXJzIHVzaW5nDQoNCnR3byBoZWxwZXJzIC0gdGhleSB3b3VsZCBhZ2FpbiBsb29r IHZlcnkgc2ltaWxhciBidXQgbmVlZCB0byB0b3VjaCBhIGRpZmZlcmVudA0KDQpzZXQgb2YgZmll bGRzIGluIHRoZSBoZWFkZXIsIHNvIEknZCBrZWVwIHRob3NlIHNlcGFyYXRlLg0KDQoNCg0KYnRy YWNlX2VuYWJsZV9mb28gKCkgd291bGQgdGhlbiBiZWNvbWUNCg0Kew0KDQogIHBlcmZfZXZlbnRf b3BlbiAoKQ0KDQogIHBlcmZfZXZlbnRfbW1hcF9kYXRhICgpDQoNCiAgcGVyZl9ldmVudF9tbWFw X2F1eCAoKSAgLyogbm90IGZvciBidHMgKi8NCg0KfQ0KDQoNCg0KW1ppZWRdIEkgbGlrZSB0aGUg aWRlYSwgdGhlcmUgYXJlIHR3byBhc3BlY3RzIHRoYXQgd2UgbmVlZCB0byBjb25zaWRlciB0byBi cmluZyBpdCB0byB0aGUgbWFpbnN0cmVhbSBjb2RlOg0KDQotIDE6IGludGVyZmFjZSBhbmQgc2Nv cGUgZGVmaW5pdGlvbg0KDQpzdGF0aWMgc2NvcGVkX2ZkIHBlcmZfZXZlbnRfb3BlbiAoIGNvbnN0 IHN0cnVjdCBwZXJmX2V2ZW50X2F0dHIgKmV2ZW50X2F0dHJpYnV0ZXMsICBjb25zdCBpbnQgcGlk ICkNCg0Kew0KDQogIGVycm5vID0gMDsNCiAgc2NvcGVkX2ZkIGZkIChzeXNjYWxsIChTWVNfcGVy Zl9ldmVudF9vcGVuLCBldmVudF9hdHRyaWJ1dGVzLCBwaWQsIC0xLCAtMSwgMCkpOw0KICBpZiAo ZmQuZ2V0ICgpIDwgMCkNCiAgICBkaWFnbm9zZV9wZXJmX2V2ZW50X29wZW5fZmFpbCAoKTsNCg0K ICByZXR1cm4gZmQ7DQoNCn0NCg0KdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgb3BlbiB0aGUgZmls ZSBkZXNjcmlwdG9yIGFuZCByZXR1cm4gaXQNCg0Kc3RhdGljIHNjb3BlZF9tbWFwIGRhdGEgcGVy Zl9ldmVudF9tbWFwX2RhdGEgKGNvbnN0IHNjb3BlZF9mZCBmZCwgc2l6ZV90IHNpemUsIHNpemVf dCBwYWdlX3NpemUsIGludCBvZmZzZXQpDQoNCnsNCg0KIC8vYWx0ZXJuYXRpdmUgMSBqdXN0IGNy ZWF0ZSBpdCBhbmQgcmV0dXJuIGl0DQoNCiAgLyogQWxsb2NhdGUgdGhlIGNvbmZpZ3VyYXRpb24g cGFnZS4gKi8NCiAgc2NvcGVkX21tYXAgZGF0YSAobnVsbHB0ciwgcGFnZV9zaXplLCBQUk9UX1JF QUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELA0KICAgICAgICAgICAgZmQuZ2V0ICgpLCAwKTsN CiAgaWYgKGRhdGEuZ2V0ICgpID09IE1BUF9GQUlMRUQpDQogICAgZXJyb3IgKF8oIkZhaWxlZCB0 byBtYXAgdHJhY2UgdXNlciBwYWdlOiAlcy4iKSwgc2FmZV9zdHJlcnJvciAoZXJybm8pKTsNCg0K ICByZXR1cm4gZGF0YTsNCg0KIC8vYWx0ZXJuYXRpdmUgMiwgY3JlYXRlIGl0IGl0IGFuZCBtYWtl IHN1cmUgdGhhdCB3ZSByZXNpemUgaXQgdG8gdGhlIGhpZ2hlc3QgcG9zc2libGUgcG93ZXIgb2Yg MiBzdXBwb3J0ZWQgYnkgdGhlIHN5c3RlbQ0KDQovKiBDb252ZXJ0IHRoZSByZXF1ZXN0ZWQgc2l6 ZSBpbiBieXRlcyB0byBwYWdlcyAocm91bmRpbmcgdXApLiAgKi8NCiAgcGFnZXMgPSBzaXplIC8g cGFnZV9zaXplDQogICAgICAgKyAoc2l6ZSAlIHBhZ2Vfc2l6ZSkgPT0gMCA/IDAgOiAxKSk7DQog IC8qIFdlIG5lZWQgYXQgbGVhc3Qgb25lIHBhZ2UuICAqLw0KICBpZiAocGFnZXMgPT0gMCkNCiAg ICBwYWdlcyA9IDE7DQoNCiAgLyogVGhlIGJ1ZmZlciBzaXplIGNhbiBiZSByZXF1ZXN0ZWQgaW4g cG93ZXJzIG9mIHR3byBwYWdlcy4gIEFkanVzdCBQQUdFUw0KICAgICB0byB0aGUgbmV4dCBwb3dl ciBvZiB0d28uICAqLw0KICBmb3IgKHBnID0gMDsgcGFnZXMgIT0gKChzaXplX3QpIDEgPDwgcGcp OyArK3BnKQ0KICAgIGlmICgocGFnZXMgJiAoKHNpemVfdCkgMSA8PCBwZykpICE9IDApDQogICAg ICBwYWdlcyArPSAoKHNpemVfdCkgMSA8PCBwZyk7DQoNCiAgLyogV2UgdHJ5IHRvIGFsbG9jYXRl IHRoZSByZXF1ZXN0ZWQgc2l6ZS4NCiAgICAgSWYgdGhhdCBmYWlscywgdHJ5IHRvIGdldCBhcyBt dWNoIGFzIHdlIGNhbi4gICovDQogIHNjb3BlZF9tbWFwIGRhdGE7DQogIGZvciAoOyBwYWdlcyA+ IDA7IHBhZ2VzID4+PSAxKQ0KICAgIHsNCiAgICAgIHNpemVfdCBsZW5ndGg7DQogICAgICBfX3U2 NCBkYXRhX3NpemU7DQoNCiAgICAgIGRhdGFfc2l6ZSA9IChfX3U2NCkgcGFnZXMgKiBwYWdlX3Np emU7DQoNCiAgICAgIC8qIERvbid0IGFzayBmb3IgbW9yZSB0aGFuIHdlIGNhbiByZXByZXNlbnQg aW4gdGhlIGNvbmZpZ3VyYXRpb24uICAqLw0KICAgICAgaWYgKChfX3U2NCkgVUlOVF9NQVggPCBk YXRhX3NpemUpDQogICAgY29udGludWU7DQoNCiAgICAgIHNpemUgPSAoc2l6ZV90KSBkYXRhX3Np emU7DQogICAgICBsZW5ndGggPSBzaXplICsgcGFnZV9zaXplOw0KDQogICAgICAvKiBDaGVjayBm b3Igb3ZlcmZsb3dzLiAgKi8NCiAgICAgIGlmICgoX191NjQpIGxlbmd0aCAhPSBkYXRhX3NpemUg KyBwYWdlX3NpemUpDQogICAgY29udGludWU7DQoNCiAgICAgIGVycm5vID0gMDsNCiAgICAgIC8q IFRoZSBudW1iZXIgb2YgcGFnZXMgd2UgcmVxdWVzdCBuZWVkcyB0byBiZSBhIHBvd2VyIG9mIHR3 by4gICovDQogICAgICBkYXRhLnJlc2V0IChudWxscHRyLCBsZW5ndGgsIFBST1RfUkVBRCwgTUFQ X1NIQVJFRCwgZmQuZ2V0ICgpLCBvZmZzZXQpOw0KICAgICAgaWYgKGRhdGEuZ2V0ICgpICE9IE1B UF9GQUlMRUQpDQogICAgYnJlYWs7DQogICAgfQ0KDQogIGlmIChwYWdlcyA9PSAwKQ0KICAgIGVy cm9yIChfKCJGYWlsZWQgdG8gbWFwIHRyYWNlIGJ1ZmZlcjogJXMuIiksIHNhZmVfc3RyZXJyb3Ig KGVycm5vKSk7DQoNCn0NCg0Kc3RhdGljIHNjb3BlZF9tbWFwIHBlcmZfZXZlbnRfbW1hcF9hdXgg KGNvbnN0IHNjb3BlZF9mZCBmZCwgc2l6ZV90IHNpemUsIHNpemVfdCBwYWdlX3NpemUsIGludCBv ZmZzZXQpDQoNCnsNCg0KLy9pZGVtLCB0aGUgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBwcmV2aW91 cyBvbmUgaXQgaXMgb25seSB0aGUgb2Zmc2V0IGluIGRhdGEucmVzZXQgY2FsbCB0aGF0IGNoYW5n ZXMNCg0KfQ0KDQpzbyBib3RoIHBlcmZfZXZlbnRfbW1hcF9kYXRhIHBlcmZfZXZlbnRfbW1hcF9h dXggY2FuIGJlIGluIGZhY3QgcmVkdWNlZCB0byBvbmUgZnVuY3Rpb24gaWYgd2UgZ2l2ZSBzaXpl X3Qgc2l6ZSwgc2l6ZV90IHBhZ2Vfc2l6ZSwgaW50IG9mZnNldCBhcyBwYXJhbWV0ZXJzLg0KDQoy LSBob3cgdG8gYnJpbmcgdGhpcyBjaGFuZ2UgdG8gdGhlIG1haW5zdHJlYW0uIGhlcmUgd2UgaGF2 ZSB0d28gYWx0ZXJuYXRpdmVzIDogZWl0aGVyIEkgZG8gdGhpcyByZXN0cnVjdHVyaW5nIGZvciBl dG0gb25seSBhbmQgdGhlbiB5b3UgdGFrZSBjYXJlIG9mIHVzaW5nIHRoZSBoZWxwZXIgZnVuY3Rp b25zIGZvciBidHMgYW5kIHB0IG9yIEkgY29tbWl0IGl0IGFzIGl0IGlzIGFuZCB0aGVuIEkgaXNz dWUgYSBwYXRjaCBmb3IgdGhpcyBwb2ludCBvbmx5IGZvciBidHMgUFQgYW5kIEVUTS4gV2hhdCBk byB5b3UgcHJlZmVyPw0KDQoNCg0KDQoNCisgIGxlbmd0aCA9IGZyZWFkIChidWZmZXIsIDEsIGxl bmd0aCwgZmlsZS5nZXQgKCkpOw0KDQorICBidWZmZXJbbGVuZ3RoXT0nXDAnOw0KDQoNCg0KU3Bh Y2VzIGFyb3VuZCA9Lg0KW1ppZWRdIGRvbmUuDQoNCg0KDQoNCg0KDQoNCisgIHdoaWxlICgoLS1s ZW5ndGgpICE9IDApDQoNCisgICAgew0KDQorICAgICAgaWYgKChidWZmZXJbbGVuZ3RoXSA9PSAn LCcpIHx8IChidWZmZXJbbGVuZ3RoXSA9PSAnLScpKQ0KDQorICB7DQoNCisgICAgbGVuZ3RoKys7 DQoNCisgICAgYnJlYWs7DQoNCisgIH0NCg0KKyAgICB9DQoNCisNCg0KKyAgaW50IGNwdV9jb3Vu dDsNCg0KKyAgaW50IGZvdW5kID0gc3NjYW5mICgmYnVmZmVyW2xlbmd0aF0sICIlZCIsICZjcHVf Y291bnQpOw0KDQorICBpZiAoZm91bmQgPCAxKQ0KDQorICAgIGVycm9yIChfKCJGYWlsZWQgdG8g Z2V0IGNwdSBjb3VudCBpbiAlczogJXMuIiksDQoNCisgICAgICAgYnVmZmVyLCBzYWZlX3N0cmVy cm9yIChlcnJubykpOw0KDQorDQoNCisgIGNwdV9jb3VudCArKzsNCg0KKyAgcmV0dXJuIChjcHVf Y291bnQpOw0KDQoNCg0KTm8gbmVlZCBmb3IgKCkuDQpbWmllZF0gZG9uZS4NCg0KDQoNCg0KDQoN Cg0KDQoNCisgIGNoYXIgZmlsZW5hbWVbUEFUSF9NQVhdOw0KDQorICBzbnByaW50ZiAoZmlsZW5h bWUsIFBBVEhfTUFYLA0KDQoNCg0Kc2l6ZW9mIChmaWxlbmFtZSkNCltaaWVkXSBkb25lLg0KDQoN Cg0KDQoNCg0KDQorICBjaGFyIGZpbGVuYW1lW1BBVEhfTUFYXTsNCg0KKw0KDQorICAvKiBHZXQg Y29yZXNpZ2h0IHJlZ2lzdGVyIGZyb20gc3lzZnMuICAqLw0KDQorICBzbnByaW50ZiAoZmlsZW5h bWUsIFBBVEhfTUFYLA0KDQoNCg0Kc2l6ZW9mIChmaWxlbmFtZSkNCltaaWVkXSBkb25lDQoNCg0K DQoNCg0KDQoNCisgICAgICAiL3N5cy9idXMvZXZlbnRfc291cmNlL2RldmljZXMvY3NfZXRtL2Nw dSVkLyVzIiwgY3B1LCBwYXRoKTsNCg0KKyAgZXJybm8gPSAwOw0KDQorICBnZGJfZmlsZV91cCBm aWxlID0gZ2RiX2ZvcGVuX2Nsb2V4ZWMgKGZpbGVuYW1lLCAiciIpOw0KDQorICBpZiAoZmlsZS5n ZXQgKCkgPT0gbnVsbHB0cikNCg0KKyAgICBlcnJvciAoXygiRmFpbGVkIHRvIG9wZW4gJXM6ICVz LiIpLCBmaWxlbmFtZSwgc2FmZV9zdHJlcnJvciAoZXJybm8pKTsNCg0KKw0KDQorICB1aW50MzJf dCB2YWwgPSAwOw0KDQorDQoNCisgIGludCAgZm91bmQgPSBmc2NhbmYgKGZpbGUuZ2V0ICgpLCAi MHgleCIsICZ2YWwpOw0KDQorICBpZiAoZm91bmQgIT0gMSkNCg0KKyAgICBlcnJvciAoXygiRmFp bGVkIHRvIHJlYWQgY29yZXNpZ2h0IHJlZ2lzdGVyIGZyb20gJXMuIiksIGZpbGVuYW1lKTsNCg0K KyAgcmV0dXJuIHZhbDsNCg0KK30NCg0KDQoNCkVtcHR5IGxpbmUgYmVmb3JlIHJldHVybj8gIEkn ZCBhbHNvIHJlbW92ZSB0aGUgZW1wdHkgbGluZSBiZXR3ZWVuIHRoZQ0KDQpkZWNsYXJhdGlvbiBv ZiB2YWwgYW5kIHRoZSBjYWxsIHRvIGZzY2FuZiAoKS4NCg0KDQoNClRoZXJlIGFyZSBzZXZlcmFs IHZlcnkgc2ltaWxhciBmdW5jdGlvbnMgaW4gdGhpcyBwYXRjaCBhbmQgZWFjaCBpcyBzdHJ1Y3R1 cmVkDQoNCmRpZmZlcmVudGx5Og0KDQoNCg0KK3BlcmZfZXZlbnRfZXRtX2V2ZW50X3R5cGUgKCkN Cg0KK3sNCg0KWy4uLl0NCg0KKw0KDQorICBpbnQgdHlwZSwgZm91bmQgPSBmc2NhbmYgKGZpbGUu Z2V0ICgpLCAiJWQiLCAmdHlwZSk7DQoNCisgIGlmIChmb3VuZCAhPSAxKQ0KDQorICAgIGVycm9y IChfKCJGYWlsZWQgdG8gcmVhZCB0aGUgRVRNIGV2ZW50IHR5cGUgZnJvbSAlcy4iKSwgZmlsZW5h bWUpOw0KDQorDQoNCisgIHJldHVybiB0eXBlOw0KDQoNCg0KK2dldF9jcHVfY291bnQgKHZvaWQp DQoNCit7DQoNClsuLi5dDQoNCisNCg0KKyAgaW50IGNwdV9jb3VudDsNCg0KKyAgaW50IGZvdW5k ID0gc3NjYW5mICgmYnVmZmVyW2xlbmd0aF0sICIlZCIsICZjcHVfY291bnQpOw0KDQorICBpZiAo Zm91bmQgPCAxKQ0KDQorICAgIGVycm9yIChfKCJGYWlsZWQgdG8gZ2V0IGNwdSBjb3VudCBpbiAl czogJXMuIiksDQoNCisgICAgICAgICAgICAgYnVmZmVyLCBzYWZlX3N0cmVycm9yIChlcnJubykp Ow0KDQorDQoNCisgIGNwdV9jb3VudCArKzsNCg0KKyAgcmV0dXJuIChjcHVfY291bnQpOw0KDQoN Cg0KK3BlcmZfZXZlbnRfZXRtX2V2ZW50X3NpbmsgKGNvbnN0IHN0cnVjdCBidHJhY2VfY29uZmln X2V0bSAqY29uZikNCg0KK3sNCg0KWy4uLl0NCg0KKw0KDQorICB1bnNpZ25lZCBpbnQgc2luazsN Cg0KKyAgaW50ICBmb3VuZCA9IGZzY2FuZiAoZmlsZS5nZXQgKCksICIweCV4IiwgJnNpbmspOw0K DQorICBpZiAoZm91bmQgIT0gMSkNCg0KKyAgICBlcnJvciAoXygiRmFpbGVkIHRvIHJlYWQgdGhl IEVUTSBzaW5rIGZyb20gJXMuIiksIGZpbGVuYW1lKTsNCg0KKw0KDQorICByZXR1cm4gc2luazsN Cg0KDQoNCitjc19ldG1fZ2V0X3JlZ2lzdGVyIChpbnQgY3B1LCBjb25zdCBjaGFyICpwYXRoKQ0K DQorew0KDQpbLi4uXQ0KDQorDQoNCisgIHVpbnQzMl90IHZhbCA9IDA7DQoNCisNCg0KKyAgaW50 ICBmb3VuZCA9IGZzY2FuZiAoZmlsZS5nZXQgKCksICIweCV4IiwgJnZhbCk7DQoNCisgIGlmIChm b3VuZCAhPSAxKQ0KDQorICAgIGVycm9yIChfKCJGYWlsZWQgdG8gcmVhZCBjb3Jlc2lnaHQgcmVn aXN0ZXIgZnJvbSAlcy4iKSwgZmlsZW5hbWUpOw0KDQorICByZXR1cm4gdmFsOw0KDQoNCltaaWVk XSBleGlzdGluZyBjb2RlIGluIHRoaXMgZmlsZSBoYXMgYW4gZW1wdHkgbGluZSBiZWZvcmUgdGhl IGxhc3QgcmV0dXJuIGV2ZXJ5d2hlcmUuIHNoYWxsIEkgc3RpY2sgdG8gdGhpcyBjb252ZW50aW9u PyBlbGltaW5hdGluZyB0aGUgZW1wdHkgbGluZXMgYmVmb3JlIHJldHVybnMgd2lsbCBicmluZyBp bmNvbnNpc3RlbmN5IGluIHRoZSBmaWxlLiB3aGljaCBjb2RpbmcgY29udmVudGlvbiBkbyB3ZSBo YXZlIHRvIGFwcGx5IGhlcmU/DQoNCg0KDQoNCg0KKw0KDQorI2RlZmluZSBDT1JFU0lHSFRfRVRN X1BNVV9TRUVEICAweDEwDQoNCisNCg0KKy8qIENhbGN1bGF0ZSB0cmFjZV9pZCBmb3IgdGhpcyBj cHUNCg0KKyAgIHRvIGJlIGtlcHQgYWxpZ25lZCB3aXRoIGNvcmVzaWdodC1wbXUuaC4gICovDQoN CisNCg0KK3N0YXRpYyBpbmxpbmUgaW50DQoNCitjb3Jlc2lnaHRfZ2V0X3RyYWNlX2lkIChpbnQg Y3B1KQ0KDQorew0KDQorICByZXR1cm4gKENPUkVTSUdIVF9FVE1fUE1VX1NFRUQgKyAoY3B1ICog MikpOw0KDQoNCg0KSW4gcGF0Y2ggMywgeW91IHdyb3RlDQoNCg0KDQorICAvKiBUcmFjZSBpZCBm b3IgdGhpcyB0aHJlYWQuDQoNCisgICAgIE9uIGEgbGludXggc3lzdGVtLCB0cmFjZV9pZCBpcyBh c3NpZ25lZCBwZXIgY3B1LiBUaGUga2VybmVsIGNvcGllcw0KDQorICAgICB0aGUgdHJhY2VzIG9m IGVhY2ggdGhyZWFkIGluIGEgZGVkaWNhdGVkIHJpbmcgYnVmZmVyLiBCeSB0aGlzLA0KDQorICAg ICB0cmFjZXMgYmVsb25naW5nIHRvIGRpZmZlcmVudCB0aHJlYWRzIGFyZSBkZS1tdWx0aXBsZXhl ZC4NCg0KKyAgICAgT24gYW4gUlRPUyBzeXN0ZW0sIGVzcGVjaWFsbHkgd2hlbiByb3V0aW5nIHRo ZSB0cmFjZXMgb3V0c2lkZSBvZiB0aGUgU29DLA0KDQorICAgICB0aGUgT1MgaGFzIG5vIG90aGVy IG1lYW4gZm9yIGRlLW11bHRpcGxleGluZyB0aGUgdHJhY2VzIHRoYW4NCg0KKyAgICAgdGhlIHRy YWNlX2lkLiBUaGUgaGFyZHdhcmUgKEVUTSBJUCkgcmVzZXJ2ZXMgNyBiaXRzIGZvciB0aGUgdHJh Y2VfaWQuDQoNCisgICAgIE9uIGxpbnV4IHN5c3RlbSB0cmFjZSBpZCBpcyBub3QgbmVlZGVkLCBz ZXQgaXQgdG8gMHhGRiB0byBpZ25vcmUgaXQNCg0KKyAgICAgZHVyaW5nIHBhcnNpbmcuICAqLw0K DQorICB1aW50OF90IHRyYWNlX2lkOw0KDQoNCg0KU2hvdWxkIHRoaXMgZnVuY3Rpb24gcmV0dXJu IHVpbnQ4X3QgYW5kIGNoZWNrIHRoYXQgdGhlIElEIGlzIDcgYml0IG1heD8NCltaaWVkXSBkb25l LCByZXNlcnZlZCBhbmQgbm90IGFsbG93ZWQgdmFsdWVzIGFyZSBhbHNvIGdlbmVyYXRpbmcgYSB3 YXJuaW5nIG5vdy4NCg0KDQoNCg0KDQoNCg0KDQoNCitzdGF0aWMgdm9pZA0KDQorZmlsbF9ldG1f dHJhY2VfcGFyYW1zIChzdHJ1Y3QgY3NfZXRtX3RyYWNlX3BhcmFtcyAqZXRtX3RyYWNlX3BhcmFt cywgaW50DQoNCmNwdSkNCg0KK3sNCg0KKyAgaWYgKGNzX2V0bV9pc19ldG12NCAoY3B1KSA9PSB0 cnVlKQ0KDQoNCg0KTm8gbmVlZCBmb3IgZXhwbGljaXQgY2hlY2tzIG9uIGJvb2wuDQpbWmllZF0g ZG9uZS4NCg0KDQoNCg0KDQoNCg0KDQoNCitzdGF0aWMgdm9pZA0KDQorbGludXhfZmlsbF9idHJh Y2VfZXRtX2NvbmZpZyAoc3RydWN0IGJ0cmFjZV90YXJnZXRfaW5mbyAqdGluZm8sDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnRyYWNlX2RhdGFfZXRtX2NvbmZpZyAqY29uZikN Cg0KK3sNCg0KKw0KDQorICBjc19ldG1fdHJhY2VfcGFyYW1zIGV0bV90cmFjZV9wYXJhbXM7DQoN Cg0KDQpQbGVhc2UgZGVjbGFyZSBhdCBpbml0aWFsaXphdGlvbiB0aW1lLg0KW1ppZWRdIHB1c2hl ZCBmb3J3YXJkcyBiZWZvcmUgdGhlIGZvciBsb29wDQoNCg0KDQoNCg0KDQoNCisgIGNvbmYtPmNw dV9jb3VudCA9IGdldF9jcHVfY291bnQgKCk7DQoNCisgIGNvbmYtPmV0bV90cmFjZV9wYXJhbXMg PSBuZXcgc3RkOjp2ZWN0b3I8Y3NfZXRtX3RyYWNlX3BhcmFtcz47DQoNCisgIGZvciAoaW50IGkg PSAwOyBpIDwgY29uZi0+Y3B1X2NvdW50OyBpKyspDQoNCisgICAgew0KDQorICAgICAgZmlsbF9l dG1fdHJhY2VfcGFyYW1zICgmZXRtX3RyYWNlX3BhcmFtcyxpKTsNCg0KKyAgICAgIGNvbmYtPmV0 bV90cmFjZV9wYXJhbXMtPnB1c2hfYmFjayAoZXRtX3RyYWNlX3BhcmFtcyk7DQoNCisgICAgfQ0K DQoNCg0KV2UgbmVlZCB0byBhdm9pZCBsZWFraW5nIHRoZSB2ZWN0b3Igd2hlbiBmaWxsX2V0bV90 cmFjZV9wYXJhbXMgKCkgdGhyb3dzLg0KDQoNCg0KDQoNCg0KDQorc3RhdGljIGVudW0gYnRyYWNl X2Vycm9yDQoNCitsaW51eF9yZWFkX2V0bSAoc3RydWN0IGJ0cmFjZV9kYXRhX2V0bSAqYnRyYWNl LA0KDQorICAgICAgICAgc3RydWN0IGJ0cmFjZV90YXJnZXRfaW5mbyAqdGluZm8sDQoNCisgICAg ICAgICBlbnVtIGJ0cmFjZV9yZWFkX3R5cGUgdHlwZSkNCg0KK3sNCg0KKyAgc3RydWN0IHBlcmZf ZXZlbnRfYnVmZmVyICpldG07DQoNCisgIGV0bSA9ICZ0aW5mby0+dmFyaWFudC5ldG0uZXRtOw0K DQoNCg0KUGxlYXNlIGNvbWJpbmUuICBObyBmb3J3YXJkIGRlY2xhcmF0aW9ucyBhbnltb3JlLiAg VGhlIG9sZCBjb2RlIHdhcyB3cml0dGVuDQoNCndoZW4gR0RCIHdhcyBzdGlsbCBDLg0KW1ppZWRd IGRvbmUuDQoNCg0KDQoNCg0KDQoNCg0KDQpyZWdhcmRzLA0KDQptYXJrdXMuDQoNCkludGVsIERl dXRzY2hsYW5kIEdtYkgNCg0KUmVnaXN0ZXJlZCBBZGRyZXNzOiBBbSBDYW1wZW9uIDEwLCA4NTU3 OSBOZXViaWJlcmcsIEdlcm1hbnkNCg0KVGVsOiArNDkgODkgOTkgODg1My0wLCB3d3cuaW50ZWwu ZGU8aHR0cDovL3d3dy5pbnRlbC5kZT4gPGh0dHA6Ly93d3cuaW50ZWwuZGU+PGh0dHA6Ly93d3cu aW50ZWwuZGU+DQoNCk1hbmFnaW5nIERpcmVjdG9yczogQ2hyaXN0aW4gRWlzZW5zY2htaWQsIFNo YXJvbiBIZWNrLCBUaWZmYW55IERvb24gU2lsdmENCg0KQ2hhaXJwZXJzb24gb2YgdGhlIFN1cGVy dmlzb3J5IEJvYXJkOiBOaWNvbGUgTGF1DQoNClJlZ2lzdGVyZWQgT2ZmaWNlOiBNdW5pY2gNCg0K Q29tbWVyY2lhbCBSZWdpc3RlcjogQW10c2dlcmljaHQgTXVlbmNoZW4gSFJCIDE4NjkyOA0KDQoN Ci0tDQoNCg0KDQpaaWVkIEd1ZXJtYXppDQpmb3VuZGVyDQoNClRyYW5kZSBHbWJIDQpMZXVzY2hu ZXJzdHJhw59lIDINCjY5NDY5IFdlaW5oZWltL0dlcm1hbnkNCg0KTW9iaWxlOiArNDkxNzIyNjQ1 MTI3DQptYWlsdG86emllZC5ndWVybWF6aUB0cmFuZGUuZGUNCg0KVHJhbmRlIEdtYkgNCkxldXNj aG5lcnN0cmHDn2UgMiwgRC02OTQ2OSBXZWluaGVpbTsgVGVsZWZvbjogKzQ5MTcyMjY0NTEyNw0K U2l0eiBkZXIgR2VzZWxsc2NoYWZ0OiBXZWluaGVpbS0gUmVnaXN0ZXJnZXJpY2h0OiBBRyBNYW5u aGVpbSBIUkIgNzM2MjA5IC0gR2VzY2jDpGZ0c2bDvGhydW5nOiBaaWVkIEd1ZXJtYXppDQoNCkNv bmZpZGVudGlhbGl0eSBOb3RlDQpUaGlzIG1lc3NhZ2UgaXMgaW50ZW5kZWQgb25seSBmb3IgdGhl IHVzZSBvZiB0aGUgbmFtZWQgcmVjaXBpZW50KHMpIGFuZCBtYXkgY29udGFpbiBjb25maWRlbnRp YWwgYW5kL29yIHByaXZpbGVnZWQgaW5mb3JtYXRpb24uIElmIHlvdSBhcmUgbm90IHRoZSBpbnRl bmRlZCByZWNpcGllbnQsIHBsZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYW5kIGRlbGV0ZSB0aGUg bWVzc2FnZS4gQW55IHVuYXV0aG9yaXplZCB1c2Ugb2YgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5l ZCBpbiB0aGlzIG1lc3NhZ2UgaXMgcHJvaGliaXRlZC4NCg0KDQoNCkludGVsIERldXRzY2hsYW5k IEdtYkgNClJlZ2lzdGVyZWQgQWRkcmVzczogQW0gQ2FtcGVvbiAxMCwgODU1NzkgTmV1YmliZXJn LCBHZXJtYW55DQpUZWw6ICs0OSA4OSA5OSA4ODUzLTAsIHd3dy5pbnRlbC5kZTxodHRwOi8vd3d3 LmludGVsLmRlPg0KTWFuYWdpbmcgRGlyZWN0b3JzOiBDaHJpc3RpbiBFaXNlbnNjaG1pZCwgU2hh cm9uIEhlY2ssIFRpZmZhbnkgRG9vbiBTaWx2YQ0KQ2hhaXJwZXJzb24gb2YgdGhlIFN1cGVydmlz b3J5IEJvYXJkOiBOaWNvbGUgTGF1DQpSZWdpc3RlcmVkIE9mZmljZTogTXVuaWNoDQpDb21tZXJj aWFsIFJlZ2lzdGVyOiBBbXRzZ2VyaWNodCBNdWVuY2hlbiBIUkIgMTg2OTI4DQoNCg0KDQpJbnRl bCBEZXV0c2NobGFuZCBHbWJIClJlZ2lzdGVyZWQgQWRkcmVzczogQW0gQ2FtcGVvbiAxMCwgODU1 NzkgTmV1YmliZXJnLCBHZXJtYW55ClRlbDogKzQ5IDg5IDk5IDg4NTMtMCwgd3d3LmludGVsLmRl IDxodHRwOi8vd3d3LmludGVsLmRlPgpNYW5hZ2luZyBEaXJlY3RvcnM6IENocmlzdGluIEVpc2Vu c2NobWlkLCBTaGFyb24gSGVjaywgVGlmZmFueSBEb29uIFNpbHZhICAKQ2hhaXJwZXJzb24gb2Yg dGhlIFN1cGVydmlzb3J5IEJvYXJkOiBOaWNvbGUgTGF1ClJlZ2lzdGVyZWQgT2ZmaWNlOiBNdW5p Y2gKQ29tbWVyY2lhbCBSZWdpc3RlcjogQW10c2dlcmljaHQgTXVlbmNoZW4gSFJCIDE4NjkyOAo=