From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 87F8D899A9 for ; Tue, 18 Oct 2022 08:23:51 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7805125591 for ; Tue, 18 Oct 2022 08:23:51 +0200 (CEST) Received: from mail02.cetsi.fr (mail02.cetsi.fr [91.151.64.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Tue, 18 Oct 2022 08:23:48 +0200 (CEST) Received: from CYLNEXC01.cyllene.corp (unknown [10.0.250.28]) by mail02.cetsi.fr (Postfix) with ESMTP id 0CEE44050287 for ; Tue, 18 Oct 2022 08:23:47 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 mail02.cetsi.fr 0CEE44050287 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groupe-cyllene.com; s=dkim; t=1666074227; bh=uAwgjcYmCXrShBk4BMM7mJ1ztMvVjb2j4v/SUKq9jiY=; h=From:To:Subject:Date:References:In-Reply-To:From; b=onsg7K7nv9gliEXlFjs63ThEq9t6hksd+MfS10BOSQ0y5YxFp1lytY6eDJA2kPW1q GaqjxdBsV3Mk9l8AWNgaIzWwwJvPn9qqoDnsGqLGgzJ4tuKTT/uYQAfXsT/6UdCihs CxoHnYA7l5gtvDQBMyDYQPRmzyGc7ZxkSIbY7alg= Received: from CYLNEXC01.cyllene.corp (10.0.250.28) by CYLNEXC01.cyllene.corp (10.0.250.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Tue, 18 Oct 2022 08:23:45 +0200 Received: from FRA01-PR2-obe.outbound.protection.outlook.com (10.0.250.254) by CYLNEXC01.cyllene.corp (10.0.250.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31 via Frontend Transport; Tue, 18 Oct 2022 08:23:45 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wn5lKY7v2EDeXNjFQk/9/Xf/FAc9i8WIxjoCSc2dJQnFqFRgjSIVI/uzIaBnSUhRdm0W1NQ6SfRCJTJo0hTvcNUPs0vprp9koNyjNHJE3b+QICZOMM5ewUpq+Wh7ADdSWyPdiu/qoC3v440w1cQqkoicnmEekQtexPP76zs+J7seBc8hWIoASwpGi1Lg8kpkb04LZcVvVTGo5kgctW5tzWRb7qwKL2gEi+pP1z5DkLUfDKx56IH7oWR/mawyf3hJDlzYi0nlAXJa/QtM+S6Ng5+l/JwkD/W/krmdBHjYzMMOOOtwEtZ5o0gXhajNClODVqyIcPxgCdHcQTX13XjonQ== 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=uAwgjcYmCXrShBk4BMM7mJ1ztMvVjb2j4v/SUKq9jiY=; b=VSOdDPcy5RSAnmrfpibK9TfWKj9HBgxYhxoYobRwkwhqYNMhYbEGtVmRMftWxAE9x+RYNSFf0hJlfdWLl4tj19lq/fIcymBqQM3wkO0c22vsMD7ni1auafgqA5sXNbnJIWLd6hnCRkn+RJT3YyJnybUkKzgUE0AiVcF5+oRhTxR+a6OVGPmfTYiPifLkkeYDzMILSFDSnu1ZmMk6yba/vCxQNedC/lfiQPPJ6SGanESf+3gttIypMemhdZ4vTDLaexSffWPViO8bS9qJb32P445x4maYWgFikB+5g47KuUGd+CZLRmuzQZBeYzFW9ALPCsA5aFqn1ExxwjG0hn7eeQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=groupe-cyllene.com; dmarc=pass action=none header.from=groupe-cyllene.com; dkim=pass header.d=groupe-cyllene.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=groupecyllene.onmicrosoft.com; s=selector2-groupecyllene-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uAwgjcYmCXrShBk4BMM7mJ1ztMvVjb2j4v/SUKq9jiY=; b=Ot2/bx73wM4YU0lgeiF+Z8JOURQaIHwp0ipL1wYke7LHCE6b/zpcQy0lq8FlhkTd8oKDQw5QB+45Gf1jxL3E/pcazjUY/N7mOYJ2YZYepLAFzMe4Y0EgHYAJ1LnTS74OzrHKG1EGSrdrlGHIqSUoBaKqVPDD7BT2GUYZ2oef4PU= Received: from MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:32::17) by MRZP264MB2086.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:f::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.33; Tue, 18 Oct 2022 06:23:45 +0000 Received: from MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM ([fe80::6c2d:e529:cb69:feeb]) by MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM ([fe80::6c2d:e529:cb69:feeb%5]) with mapi id 15.20.5723.033; Tue, 18 Oct 2022 06:23:45 +0000 From: "DERUMIER, Alexandre" To: "pve-devel@lists.proxmox.com" Thread-Topic: [pve-devel] [PATCH v6 qemu-server 2/6] mtunnel: add API endpoints Thread-Index: AQHY0zkTcXIWLGSa+0SN2Pg6cR4Zuq4TzeeA Date: Tue, 18 Oct 2022 06:23:45 +0000 Message-ID: <348d9d2d-525d-9231-5b5c-82080361885c@groupe-cyllene.com> References: <20220928125059.1139296-1-f.gruenbichler@proxmox.com> <20220928125059.1139296-9-f.gruenbichler@proxmox.com> In-Reply-To: <20220928125059.1139296-9-f.gruenbichler@proxmox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=groupe-cyllene.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MR1P264MB2481:EE_|MRZP264MB2086:EE_ x-ms-office365-filtering-correlation-id: 072f383e-45aa-483d-54e1-08dab0d14fb2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Ob32V+OcxXmNOUT3chX57n+QjN/PQjb3jlTIM4fF2EU6ZGkurkCT0Wi2DEZZDaoKQXRvki/toZe1owVBFXN+HxEkoRfk0if449fuIHNgxpMqeNLm3oCm1UjrGEKPiU5tnCb+dTz09KVDLknC2/jhg6xg9wShNV6OIVjxD+pow7DOXwkbLpABe/GKZaJfEWKsu/ByRhknocBlFeuXIkmfW8RFUKPaCmUgxc0swd6SlHf1YAAs/SKH4i0luJkXK4fVotaPKaL2CzdHehpAIjh0VcSK3GFtSxGofb+JHq/llq1fxDWMHvzpj40Qbo9Jrj/koVrA7VKsmhxglGq3SCQGJSqpqCc0OKYsBtbLWdf5ZuIe1CyWVmSkTd1IXDpMPDo7DOPM3Q2ZYq7SwAUXCa0FFaGAw0xCdWpiZVYUywYeTswTIDw+8WJRD3P2PrAl5vqJpD3Rtcs09/OgEnNCy8GKxHD/bQjZ0RqfnF0acV/YyEEtlMDtvyLcj9tn32hMxDh3PZnCK3Fdc8FPtaAfFdrJxJqRgClz3DfaleP7B+HPOUPLmBu8ud3PoaX6TReKrMjULAdEsQ/xtpvjah7zA0OFTfPQq56Kxoa2F40GHLVrKRQgxR+CI8hbTYn7NjkNc0x85xHhrPZs7TvP3gcVyddvDrDBKXF2g3Aqe7mzaDXopZ82qYCFmsgakXU3LmOu76MDIDPiUqatWF8EK2UYqnPrP2Bi7xDDIw72cTHWeVY2BhCVLVsAiLrzcULd3dSnkCjq5BQKMNCe5HmEJ64CNdVLffDs/f/4o4kYXJlGSKanbQavz8suydZuDFJ5La1y0ejifNuqD/7KgiQtCB1l8V9NPA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230022)(4636009)(376002)(366004)(396003)(136003)(39850400004)(346002)(451199015)(38100700002)(31686004)(6486002)(478600001)(71200400001)(6512007)(26005)(36756003)(6506007)(66556008)(66476007)(66946007)(76116006)(41300700001)(6916009)(8936002)(83380400001)(8676002)(30864003)(316002)(38070700005)(122000001)(91956017)(66574015)(31696002)(2906002)(4001150100001)(186003)(64756008)(66446008)(5660300002)(2616005)(86362001)(43740500002)(45980500001)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?amEvWjJJMStyMmdNQ283ck1ZRnhreWRWU05ZTHdDaHZ4cHlxTmZyUTQrdGpW?= =?utf-8?B?YjdhakJJeWJGbjF1Rkkvby9BeGJONmp6N3VvNG5wcWpMdFUzSjJtelJ0ZUkz?= =?utf-8?B?Y05PMGtwZlRTVWVCQnJFaUQ5Y3hKbVArT3hCZlZWYmJlWjdGdHp4V1lGdndT?= =?utf-8?B?Q1RMVHRRZFdDdFBjRW45YVpKTTd6TTkxMXI2NnlFclJEWjh5M0JsN2hsUkt0?= =?utf-8?B?bkkvNVN1QXRITDNFT1BrK0ovRFpqYm54VC84Q241N0s3Y216cjhlcXNSWkRZ?= =?utf-8?B?bWxTVmcxMnJGdVNBelBad0V6QzlweWJnNW1hRlp1bTJxT1RYL0d4bEYwNHJ3?= =?utf-8?B?RkdLMUdtVFJuWjlvcWNwS09jLzZjc2dVeE4vN0hhVS9IOFdLTG9xWEJ4cWQx?= =?utf-8?B?eEM1cW8yQjNWUW5SaVNTMm5WYjhlR2xmVG9BdlF4eHVOc3J6K0h2VVdmRFRI?= =?utf-8?B?akVEQ1ZtWGVtTmJqaUFhNWk1ampNMnZHeWhMYUd3dmpyNi9ka05LcVlaZWxa?= =?utf-8?B?ZmlmUy9tK2hJcFZpaUlKZ0xaeUlGeGNlT2FCTTQrbnBwL3RRRWNxUGJLV2pZ?= =?utf-8?B?THlOcDF1NjRja0Y0WkcxWFhCUXR4ZlZwVW4wKzNlYlFncUhMNFJ1WFJoWk9O?= =?utf-8?B?d29CWTVxcXJaWDExZ09ldlZxM2JkSWg4SmRSV1dONXFBRHU3Y0VZY0oxZVF4?= =?utf-8?B?ZTJ5WjRmRFl6NnloanBYellvZUhia1RJMm5FelVyN29YdHlJK1FTNXg5MTJX?= =?utf-8?B?Zm16MVhtVWpqUFZobDVKMWt4WGUxazRDRGNQSlNFbDNZOE9sYVZMd3pkL3BZ?= =?utf-8?B?L3pac1V0OVBkaHpHRjI4MHhTYk9aNFJVa0VsQW1CRGZaK244UnkrVmlOa1c5?= =?utf-8?B?TDBuZTE4QUM0blRoMDhoK1piTittdUFYMlNIeFVKNzQ0eENIb1JMbk1Kd2JX?= =?utf-8?B?YlFoaUFQMktuUk9ENHVxOWpFSnJlUVhnQTJNS0J0NGp0VFRJekkrVU9uV2pt?= =?utf-8?B?VlgrYm56MWc4RkRDa1RnSmJPam9qcG5KNGdnRWxlUGszMW5HakdQV05CZnd5?= =?utf-8?B?MUJXYmpkcnozK0xqckVSblBvZFJEa0pzU3FQL01CWXNIT3dEM0ZyU09weHFC?= =?utf-8?B?WDBtSXpBZzM3ZXkwTDRiWEZmU2FyQS9iQ2tyTmtFR3RrT3doTTBBYkc0dGNq?= =?utf-8?B?QU5EM09FVFdSL2VlaHRtRWZVS1dXTk42VGdBZmtQQXpldHNpbXhGVVBmUjJZ?= =?utf-8?B?ZHlQSkZLZ01FUjF5RStoVjluajhUT2hjSXZDSzhUWmZlcWJRZ3M4MU52UTNq?= =?utf-8?B?YzNLWFdGMngzcTZ3ZjNJTTBaeFhZZ09HblpRbHI3Mmk4R1FCWXh3V3ViYW9q?= =?utf-8?B?ZUF6bTdPYXlkb2ZNSDBMWjVWdkVwRTdxZUQyL3RnalVmcUJ3Y21QN1NveDcz?= =?utf-8?B?aDZGMkNQeDd6Z3g2eEpvMEh3ODJGcTJlTG81V2ZvQ25kMnM3emhIbXdlOVVI?= =?utf-8?B?Z0dnRENjTWhkVzFxbFBZZ0JPOW1wSXlFdGxHUzl4WUgvMHF3VENrOUR4RjdC?= =?utf-8?B?eVBKbmJNN3dlVmNBUXNJcWg0WGlTZldQYVFHSmlCWldicDcwaVU0Q3BYa1hR?= =?utf-8?B?VmFSU21vTGE2OUNOa3ROU1M3TUsxbkZDNGduajNoejZYRWZPNFl2R3JyQnhN?= =?utf-8?B?QlluUTd4RzR3Q0VIc1dmYU8vcDNMR2c4OWtxZml0Nyt5d08yZWlGMlpjOTI3?= =?utf-8?B?TFY4ZFJoUzA1c1JUOFpEM0o0U3dVcFFvMnp4ZElpUi94Nmt6ZDAwQ3dXQlFO?= =?utf-8?B?ZUQ4ZGltSWE2cnd0VE9iR3BIaC9yMk5Yc2pRZzBpVHVBS2dlQkJCdWVLWURz?= =?utf-8?B?YVFVOStNem1HWURqMms5R0ZJWEFma1JTQStiaVk1WWx4clQ3b3dpMXRlWG5W?= =?utf-8?B?ZmJTWm9KY0N0S1N5YXZRN2ZZOS9MTWN1Y0ErZEo1UHlYMmRLalc0dnlENnND?= =?utf-8?B?Q2c2WUdIM0F0RVM2MkZtMHI2eHg3Njd2VGtqVkEvYXhOM0crNzJMLy91cG9I?= =?utf-8?B?ZmhFenh2SSs0cmh6NVZBRDRldnJjV3FkQmlUelRMeXVEVytIMU83b2EzZU5m?= =?utf-8?B?dVFuUWZBakpMTndQM0Ywb2d2aEU3WnVjakRFTVlqaDRTc0tCY3JQRVRSY0g2?= =?utf-8?Q?Yey9gUBimuPH7uFdYuSOOUPHgMlMTTzoywBpXIE5fer/?= Content-Type: text/plain; charset="utf-8" Content-ID: <2C80F31E73556146882423BACA66D0BE@FRAP264.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MR1P264MB2481.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 072f383e-45aa-483d-54e1-08dab0d14fb2 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2022 06:23:45.7775 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: ee11ccf7-112c-4284-848b-f229745e715b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 4GgYppynSza4HMrkABkVJWgphuTCIXNuay7ov8pK7qp5zSsoC1dcNr2xG/p4Q7TnjIj4MbTh0J0hJb3UrOqSE5Il9JLupRYs0SJiFEAS9p3MehRpxo/NP8uNaLYc4jom X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRZP264MB2086 X-OriginatorOrg: groupe-cyllene.com X-SPAM-LEVEL: Spam detection results: 0 AWL -0.220 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain NICE_REPLY_A -0.001 Looks like a legit reply (A) POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [groupe-cyllene.com, qemu.pm, groupecyllene.onmicrosoft.com] Subject: Re: [pve-devel] [PATCH v6 qemu-server 2/6] mtunnel: add API endpoints X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Oct 2022 06:23:51 -0000 SSB0aGluayBpdCdzIG1pc3NpbmcgY2xlYW5pbmcgb2Ygdm0gb24gcmVtb3RlIHN0b3JhZ2UsDQoN CmlmIG1pZ3JhdGlvbiBpcyBhYm9ydGVkIG9uIHBoYXNlMSBvciBwaGFzZTIuDQoNCkl0IHNhZmUg dG8gZGVsZXRlIHZtIGNvbmYgJiYgZGlzayBvbiByZW1vdGVob3N0IHVudGlsIHRoZSBlbmQgb2Yg dGhlIHBoYXNlMiwNCndoZW4gZGlzayBhcmUgc3dpdGNoZWQuDQoNCg0KSWYgam9iIGlzIGFib3J0 ZWQsIEl0IHRyaWdnZXIgIm10dW5uZWwgZXhpdGVkIHVuZXhwZWN0ZWRseSIgb24gDQpyZW1vdGVo b3N0LCB3aXRob3V0IGFueSBjbGVhbmluZy4NCihhbmQgZXZlbiBpbiBwaGFzZTJfY2xlYW51cCwg cmVtb3RlaG9zdCBkb24ndCByZWNlaXZlIHRoZSAic3RvcCIgY29tbWFuZCANCmluIHRoZSB0dW5u ZWwpDQoNCg0KDQpleGFtcGxlMToNCg0Kb24gcGhhc2UxLCBJIGhhZCBhIGhhbmdpbmcgc291cmNl IHN0b3JhZ2UsIGFuZCB0aGUgam9iIHdhcyBoYW5pbmcgb24gDQpzY2FuX2xvY2FsX3ZvbHVtZXMo KS4NCg0KSSBoYXZlIG1hbnVhbGx5IGFib3J0ZWQgdGhlIGpvYi4NCg0Kb24gc291cmNlOg0KIjIw MjItMTAtMTggMDY6MDA6MjUgbG9jYWwgV1MgdHVubmVsIHZlcnNpb246IDINCjIwMjItMTAtMTgg MDY6MDA6MjUgcmVtb3RlIFdTIHR1bm5lbCB2ZXJzaW9uOiAyDQoyMDIyLTEwLTE4IDA2OjAwOjI1 IG1pbmltdW0gcmVxdWlyZWQgV1MgdHVubmVsIHZlcnNpb246IDINCndlYnNvY2tldCB0dW5uZWwg c3RhcnRlZA0KMjAyMi0xMC0xOCAwNjowMDoyNSBzdGFydGluZyBtaWdyYXRpb24gb2YgVk0gMTEx IHRvIG5vZGUgJ2Zvcm1hdGlvbmt2bTEnIA0KKDEwLjMuOTQuMTApDQp0dW5uZWw6IC0+IHNlbmRp bmcgY29tbWFuZCAiYndsaW1pdCIgdG8gcmVtb3RlDQp0dW5uZWw6IDwtIGdvdCByZXBseQ0KQ01E IHdlYnNvY2tldCB0dW5uZWwgZGllZDogY29tbWFuZCAncHJveG1veC13ZWJzb2NrZXQtdHVubmVs JyBmYWlsZWQ6IA0KaW50ZXJydXB0ZWQgYnkgc2lnbmFsDQoNCjIwMjItMTAtMTggMDY6MDI6MDMg RVJST1I6IFByb2JsZW0gZm91bmQgd2hpbGUgc2Nhbm5pbmcgdm9sdW1lcyAtIHJiZCANCmVycm9y OiBpbnRlcnJ1cHRlZCBieSBzaWduYWwNCjIwMjItMTAtMTggMDY6MDI6MDMgYWJvcnRpbmcgcGhh c2UgMSAtIGNsZWFudXAgcmVzb3VyY2VzDQoyMDIyLTEwLTE4IDA2OjAyOjA0IEVSUk9SOiB3cml0 aW5nIHRvIHR1bm5lbCBmYWlsZWQ6IGJyb2tlbiBwaXBlDQoyMDIyLTEwLTE4IDA2OjAyOjA0IEVS Uk9SOiBtaWdyYXRpb24gYWJvcnRlZCAoZHVyYXRpb24gMDA6MDE6MzkpOiANClByb2JsZW0gZm91 bmQgd2hpbGUgc2Nhbm5pbmcgdm9sdW1lcyAtIHJiZCBlcnJvcjogaW50ZXJydXB0ZWQgYnkgc2ln bmFsDQoiDQoNCg0Kb24gcmVtb3RlIGhvc3Q6DQoNCiINCm10dW5uZWwgc3RhcnRlZA0KcmVjZWl2 ZWQgY29tbWFuZCAndmVyc2lvbicNClRBU0sgRVJST1I6IG10dW5uZWwgZXhpdGVkIHVuZXhwZWN0 ZWRseQ0KIg0Kd2l0aCBhIGxvY2sgb24gdGhlIHZtIGNvbmZpZy4gKG5vIGRpc2sgY3JlYXRlZCB5 ZXQpLg0KDQoNCg0KDQoNCmV4YW1wbGUyOg0KbWFudWFsbHkgYWJvcnQgam9iIHdoZW4gZGlzayB0 cmFuc2ZlcnQgaXMgcnVubmluZw0KDQoNCm9uIHNvdXJjZToNCiINCnR1bm5lbDogLT4gc2VuZGlu ZyBjb21tYW5kICJ2ZXJzaW9uIiB0byByZW1vdGUNCnR1bm5lbDogPC0gZ290IHJlcGx5DQoyMDIy LTEwLTE4IDA2OjM1OjQ3IGxvY2FsIFdTIHR1bm5lbCB2ZXJzaW9uOiAyDQoyMDIyLTEwLTE4IDA2 OjM1OjQ3IHJlbW90ZSBXUyB0dW5uZWwgdmVyc2lvbjogMg0KMjAyMi0xMC0xOCAwNjozNTo0NyBt aW5pbXVtIHJlcXVpcmVkIFdTIHR1bm5lbCB2ZXJzaW9uOiAyDQp3ZWJzb2NrZXQgdHVubmVsIHN0 YXJ0ZWQNCjIwMjItMTAtMTggMDY6MzU6NDcgc3RhcnRpbmcgbWlncmF0aW9uIG9mIFZNIDExMSB0 byBub2RlICdmb3JtYXRpb25rdm0xJyANCigxMC4zLjk0LjEwKQ0KdG90byBtb25wYnMNCnRvdG8g cmVwbGljYXQyeA0KdHVubmVsOiAtPiBzZW5kaW5nIGNvbW1hbmQgImJ3bGltaXQiIHRvIHJlbW90 ZQ0KdHVubmVsOiA8LSBnb3QgcmVwbHkNCg0KMjAyMi0xMC0xOCAwNjozNTo0OCBmb3VuZCBsb2Nh bCBkaXNrICdyZXBsaWNhdDJ4OnZtLTExMS1kaXNrLTAnIChpbiANCmN1cnJlbnQgVk0gY29uZmln KQ0KMjAyMi0xMC0xOCAwNjozNTo0OCBtYXBwZWQ6IG5ldDAgZnJvbSB2bWJyMCB0byB2bWJyMA0K MjAyMi0xMC0xOCAwNjozNTo0OCBtYXBwZWQ6IG5ldDEgZnJvbSB2bWJyMCB0byB2bWJyMA0KMjAy Mi0xMC0xOCAwNjozNTo0OCBBbGxvY2F0aW5nIHZvbHVtZSBmb3IgZHJpdmUgJ3Njc2kwJyBvbiBy ZW1vdGUgDQpzdG9yYWdlICdsb2NhbC1sdm0nLi4NCnR1bm5lbDogLT4gc2VuZGluZyBjb21tYW5k ICJkaXNrIiB0byByZW1vdGUNCnR1bm5lbDogPC0gZ290IHJlcGx5DQoyMDIyLTEwLTE4IDA2OjM1 OjQ5IHZvbHVtZSAncmVwbGljYXQyeDp2bS0xMTEtZGlzay0wJyBpcyANCidsb2NhbC1sdm06dm0t MTAwMDUtZGlzay0wJyBvbiB0aGUgdGFyZ2V0DQp0dW5uZWw6IC0+IHNlbmRpbmcgY29tbWFuZCAi Y29uZmlnIiB0byByZW1vdGUNCnR1bm5lbDogPC0gZ290IHJlcGx5DQp0dW5uZWw6IC0+IHNlbmRp bmcgY29tbWFuZCAic3RhcnQiIHRvIHJlbW90ZQ0KdHVubmVsOiA8LSBnb3QgcmVwbHkNCjIwMjIt MTAtMTggMDY6MzU6NTIgU2V0dGluZyB1cCB0dW5uZWwgZm9yICcvcnVuL3FlbXUtc2VydmVyLzEx MS5taWdyYXRlJw0KMjAyMi0xMC0xOCAwNjozNTo1MiBTZXR0aW5nIHVwIHR1bm5lbCBmb3IgJy9y dW4vcWVtdS1zZXJ2ZXIvMTExX25iZC5taWdyYXRlJw0KMjAyMi0xMC0xOCAwNjozNTo1MiBzdGFy dGluZyBzdG9yYWdlIG1pZ3JhdGlvbg0KMjAyMi0xMC0xOCAwNjozNTo1MiBzY3NpMDogc3RhcnQg bWlncmF0aW9uIHRvIA0KbmJkOnVuaXg6L3J1bi9xZW11LXNlcnZlci8xMTFfbmJkLm1pZ3JhdGU6 ZXhwb3J0bmFtZT1kcml2ZS1zY3NpMA0KZHJpdmUgbWlycm9yIGlzIHN0YXJ0aW5nIGZvciBkcml2 ZS1zY3NpMA0KdHVubmVsOiBhY2NlcHRlZCBuZXcgY29ubmVjdGlvbiBvbiAnL3J1bi9xZW11LXNl cnZlci8xMTFfbmJkLm1pZ3JhdGUnDQp0dW5uZWw6IHJlcXVlc3RpbmcgV1MgdGlja2V0IHZpYSB0 dW5uZWwNCnR1bm5lbDogZXN0YWJsaXNoZWQgbmV3IFdTIGZvciBmb3J3YXJkaW5nICcvcnVuL3Fl bXUtc2VydmVyLzExMV9uYmQubWlncmF0ZScNCmRyaXZlLXNjc2kwOiB0cmFuc2ZlcnJlZCAwLjAg QiBvZiAzMi4wIEdpQiAoMC4wMCUpIGluIDBzDQpkcml2ZS1zY3NpMDogdHJhbnNmZXJyZWQgMTAx LjAgTWlCIG9mIDMyLjAgR2lCICgwLjMxJSkgaW4gMXMNCmRyaXZlLXNjc2kwOiB0cmFuc2ZlcnJl ZCAyMDkuMCBNaUIgb2YgMzIuMCBHaUIgKDAuNjQlKSBpbiAycw0KZHJpdmUtc2NzaTA6IHRyYW5z ZmVycmVkIDMxOC4wIE1pQiBvZiAzMi4wIEdpQiAoMC45NyUpIGluIDNzDQpkcml2ZS1zY3NpMDog dHJhbnNmZXJyZWQgNDI4LjAgTWlCIG9mIDMyLjAgR2lCICgxLjMxJSkgaW4gNHMNCg0KZHJpdmUt c2NzaTA6IENhbmNlbGxpbmcgYmxvY2sgam9iDQpDTUQgd2Vic29ja2V0IHR1bm5lbCBkaWVkOiBj b21tYW5kICdwcm94bW94LXdlYnNvY2tldC10dW5uZWwnIGZhaWxlZDogDQppbnRlcnJ1cHRlZCBi eSBzaWduYWwNCg0KZHJpdmUtc2NzaTA6IERvbmUuDQoyMDIyLTEwLTE4IDA2OjM2OjMxIEVSUk9S OiBvbmxpbmUgbWlncmF0ZSBmYWlsdXJlIC0gYmxvY2sgam9iIChtaXJyb3IpIA0KZXJyb3I6IGlu dGVycnVwdGVkIGJ5IHNpZ25hbA0KMjAyMi0xMC0xOCAwNjozNjozMSBhYm9ydGluZyBwaGFzZSAy IC0gY2xlYW51cCByZXNvdXJjZXMNCjIwMjItMTAtMTggMDY6MzY6MzEgbWlncmF0ZV9jYW5jZWwN CjIwMjItMTAtMTggMDY6MzY6MzEgRVJST1I6IHdyaXRpbmcgdG8gdHVubmVsIGZhaWxlZDogYnJv a2VuIHBpcGUNCjIwMjItMTAtMTggMDY6MzY6MzEgRVJST1I6IG1pZ3JhdGlvbiBmaW5pc2hlZCB3 aXRoIHByb2JsZW1zIChkdXJhdGlvbiANCjAwOjAwOjQ0KQ0KDQpUQVNLIEVSUk9SOiBtaWdyYXRp b24gcHJvYmxlbXMNCiINCg0Kb24gcmVtb3RlIGhvc3Q6DQoiDQptdHVubmVsIHN0YXJ0ZWQNCnJl Y2VpdmVkIGNvbW1hbmQgJ3ZlcnNpb24nDQpyZWNlaXZlZCBjb21tYW5kICdid2xpbWl0Jw0KcmVj ZWl2ZWQgY29tbWFuZCAnZGlzaycNCiAgIFdBUk5JTkc6IFlvdSBoYXZlIG5vdCB0dXJuZWQgb24g cHJvdGVjdGlvbiBhZ2FpbnN0IHRoaW4gcG9vbHMgcnVubmluZyANCm91dCBvZiBzcGFjZS4NCiAg IFdBUk5JTkc6IFNldCBhY3RpdmF0aW9uL3RoaW5fcG9vbF9hdXRvZXh0ZW5kX3RocmVzaG9sZCBi ZWxvdyAxMDAgdG8gDQp0cmlnZ2VyIGF1dG9tYXRpYyBleHRlbnNpb24gb2YgdGhpbiBwb29scyBi ZWZvcmUgdGhleSBnZXQgZnVsbC4NCiAgIExvZ2ljYWwgdm9sdW1lICJ2bS0xMDAwNS1kaXNrLTAi IGNyZWF0ZWQuDQogICBXQVJOSU5HOiBTdW0gb2YgYWxsIHRoaW4gdm9sdW1lIHNpemVzICg2OS4w MCBHaUIpIGV4Y2VlZHMgdGhlIHNpemUgb2YgDQp0aGluIHBvb2wgcHZlL2RhdGEgYW5kIHRoZSBh bW91bnQgb2YgZnJlZSBzcGFjZSBpbiB2b2x1bWUgZ3JvdXAgKDEzLjg3IEdpQikuDQpyZWNlaXZl ZCBjb21tYW5kICdjb25maWcnDQp1cGRhdGUgVk0gMTAwMDU6IC1ib290IG9yZGVyPXNjc2kwO2lk ZTI7bmV0MCAtY29yZXMgNCAtaWRlMiANCm5vbmUsbWVkaWE9Y2Ryb20gLW1hY2hpbmUgcGMtaTQ0 MGZ4LTYuMiAtbWVtb3J5IDIwNDggLW5hbWUgZGViaWFuOCAtbmV0MCANCnZpcnRpbz01RTo1NzpD NzowMTpDQjpGQyxicmlkZ2U9dm1icjAsZmlyZXdhbGw9MSxxdWV1ZXM9Mix0YWc9OTQgLW5ldDEg DQp2aXJ0aW89NUU6NTc6Qzc6MDE6Q0I6RkUsYnJpZGdlPXZtYnIwLGZpcmV3YWxsPTEscXVldWVz PTIsdGFnPTk0IC1udW1hIDAgDQotb3N0eXBlIGwyNiAtc2NzaTAgbG9jYWwtbHZtOnZtLTEwMDA1 LWRpc2stMCxmb3JtYXQ9cmF3LHNpemU9MzJHIC1zY3NpaHcgDQp2aXJ0aW8tc2NzaS1wY2kgLXNt YmlvczEgdXVpZD01YmQ2OGJjOC1jMGZkLTRmNTAtOTY0OS1mNzhhOGY4MDVlNGMgDQotc29ja2V0 cyAyDQpyZWNlaXZlZCBjb21tYW5kICdzdGFydCcNCm1pZ3JhdGlvbiBsaXN0ZW5zIG9uIHVuaXg6 L3J1bi9xZW11LXNlcnZlci8xMDAwNS5taWdyYXRlDQpzdG9yYWdlIG1pZ3JhdGlvbiBsaXN0ZW5z IG9uIA0KbmJkOnVuaXg6L3J1bi9xZW11LXNlcnZlci8xMDAwNV9uYmQubWlncmF0ZTpleHBvcnRu YW1lPWRyaXZlLXNjc2kwIA0Kdm9sdW1lOmxvY2FsLWx2bTp2bS0xMDAwNS1kaXNrLTAsZm9ybWF0 PXJhdyxzaXplPTMyRw0KcmVjZWl2ZWQgY29tbWFuZCAndGlja2V0Jw0KVEFTSyBFUlJPUjogbXR1 bm5lbCBleGl0ZWQgdW5leHBlY3RlZGx5DQoiDQoNCndpdGggYSBsb2NrIG9uIHRoZSB2bWNvbmZp ZyBpbiBtaWdyYXRlIHN0YXRlLg0KDQoNCkxlIDI4LzA5LzIyIMOgIDE0OjUwLCBGYWJpYW4gR3LD vG5iaWNobGVyIGEgw6ljcml0wqA6DQo+IHRoZSBmb2xsb3dpbmcgdHdvIGVuZHBvaW50cyBhcmUg dXNlZCBmb3IgbWlncmF0aW9uIG9uIHRoZSByZW1vdGUgc2lkZQ0KPiANCj4gUE9TVCAvbm9kZXMv Tk9ERS9xZW11L1ZNSUQvbXR1bm5lbA0KPiANCj4gd2hpY2ggY3JlYXRlcyBhbmQgbG9ja3MgYW4g ZW1wdHkgVk0gY29uZmlnLCBhbmQgc3Bhd25zIHRoZSBtYWluIHFtdHVubmVsDQo+IHdvcmtlciB3 aGljaCBiaW5kcyB0byBhIFZNLXNwZWNpZmljIFVOSVggc29ja2V0Lg0KPiANCj4gdGhpcyB3b3Jr ZXIgaGFuZGxlcyBKU09OLWVuY29kZWQgbWlncmF0aW9uIGNvbW1hbmRzIGNvbWluZyBpbiB2aWEg dGhpcw0KPiBVTklYIHNvY2tldDoNCj4gLSBjb25maWcgKHNldCB0YXJnZXQgVk0gY29uZmlnKQ0K PiAtLSBjaGVja3MgcGVybWlzc2lvbnMgZm9yIHVwZGF0aW5nIGNvbmZpZw0KPiAtLSBzdHJpcHMg cGVuZGluZyBjaGFuZ2VzIGFuZCBzbmFwc2hvdHMNCj4gLS0gc2V0cyAob3B0aW9uYWwpIGZpcmV3 YWxsIGNvbmZpZw0KPiAtIGRpc2sgKGFsbG9jYXRlIGRpc2sgZm9yIE5CRCBtaWdyYXRpb24pDQo+ IC0tIGNoZWNrcyBwZXJtaXNzaW9uIGZvciB0YXJnZXQgc3RvcmFnZQ0KPiAtLSByZXR1cm5zIGRy aXZlIHN0cmluZyBmb3IgYWxsb2NhdGVkIHZvbHVtZQ0KPiAtIGRpc2staW1wb3J0LCBxdWVyeS1k aXNrLWltcG9ydCwgYndsaW1pdA0KPiAtLSBoYW5kbGVkIGJ5IFBWRTo6U3RvcmFnZVR1bm5lbA0K PiAtIHN0YXJ0IChyZXR1cm5pbmcgbWlncmF0aW9uIGluZm8pDQo+IC0gZnN0cmltICh2aWEgYWdl bnQpDQo+IC0gdGlja2V0IChjcmVhdGVzIGEgdGlja2V0IGZvciBhIFdTIGNvbm5lY3Rpb24gdG8g YSBzcGVjaWZpYyBzb2NrZXQpDQo+IC0gcmVzdW1lDQo+IC0gc3RvcA0KPiAtIG5iZHN0b3ANCj4g LSB1bmxvY2sNCj4gLSBxdWl0ICgrIGNsZWFudXApDQo+IA0KPiB0aGlzIHdvcmtlciBzZXJ2ZXMg YXMgYSByZXBsYWNlbWVudCBmb3IgYm90aCAncW0gbXR1bm5lbCcgYW5kIHZhcmlvdXMNCj4gbWFu dWFsIGNhbGxzIHZpYSBTU0guIHRoZSBBUEkgY2FsbCB3aWxsIHJldHVybiBhIHRpY2tldCB2YWxp ZCBmb3INCj4gY29ubmVjdGluZyB0byB0aGUgd29ya2VyJ3MgVU5JWCBzb2NrZXQgdmlhIGEgd2Vi c29ja2V0IGNvbm5lY3Rpb24uDQo+IA0KPiBHRVQrV2ViU29ja2V0IHVwZ3JhZGUgL25vZGVzL05P REUvcWVtdS9WTUlEL210dW5uZWx3ZWJzb2NrZXQNCj4gDQo+IGdldHMgY2FsbGVkIGZvciBjb25u ZWN0aW5nIHRvIGEgVU5JWCBzb2NrZXQgdmlhIHdlYnNvY2tldCBmb3J3YXJkaW5nLA0KPiBpLmUu IG9uY2UgZm9yIHRoZSBtYWluIGNvbW1hbmQgbXR1bm5lbCwgYW5kIG9uY2UgZWFjaCBmb3IgdGhl IG1lbW9yeQ0KPiBtaWdyYXRpb24gYW5kIGVhY2ggTkJEIGRyaXZlLW1pcnJvci9zdG9yYWdlIG1p Z3JhdGlvbi4NCj4gDQo+IGFjY2VzcyBpcyBndWFyZGVkIGJ5IGEgc2hvcnQtbGl2ZWQgdGlja2V0 IGJpbmRpbmcgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlcg0KPiB0byB0aGUgc29ja2V0IHBhdGguIHN1 Y2ggdGlja2V0cyBjYW4gYmUgcmVxdWVzdGVkIG92ZXIgdGhlIG1haW4gbXR1bm5lbCwNCj4gd2hp Y2gga2VlcHMgdHJhY2sgb2Ygc29ja2V0IHBhdGhzIGN1cnJlbnRseSB1c2VkIGJ5IHRoYXQNCj4g bXR1bm5lbC9taWdyYXRpb24gaW5zdGFuY2UuDQo+IA0KPiBlYWNoIGNvbW1hbmQgaGFuZGxlciBz aG91bGQgY2hlY2sgcHJpdmlsZWdlcyBmb3IgdGhlIHJlcXVlc3RlZCBhY3Rpb24gaWYNCj4gbmVj ZXNzYXJ5Lg0KPiANCj4gYm90aCBtdHVubmVsIGFuZCBtdHVubmVsd2Vic29ja2V0IGVuZHBvaW50 cyBhcmUgbm90IHByb3hpZWQsIHRoZQ0KPiBjbGllbnQvY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZv ciBlbnN1cmluZyB0aGUgcGFzc2VkICdub2RlJyBwYXJhbWV0ZXINCj4gYW5kIHRoZSBlbmRwb2lu dCBoYW5kbGluZyB0aGUgY2FsbCBhcmUgbWF0Y2hpbmcuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBG YWJpYW4gR3LDvG5iaWNobGVyIDxmLmdydWVuYmljaGxlckBwcm94bW94LmNvbT4NCj4gLS0tDQo+ IA0KPiBOb3RlczoNCj4gICAgICB2NjoNCj4gICAgICAtIGNoZWNrIGZvciBTeXMuSW5jb21pbmcg aW4gbXR1bm5lbA0KPiAgICAgIC0gYWRkIGRlZmluZWRuZXNzIGNoZWNrcyBpbiAnY29uZmlnJyBj b21tYW5kDQo+ICAgICAgLSBzd2l0Y2ggdG8gdm1fcnVubmluZ19sb2NhbGx5IGluICdyZXN1bWUn IGNvbW1hbmQNCj4gICAgICAtIG1vdmVkICRzb2NrZXRfYWRkciBjbG9zZXIgdG8gdXNhZ2UNCj4g ICAgICB2NToNCj4gICAgICAtIHVzIHZtX3J1bm5pbmdfbG9jYWxseQ0KPiAgICAgIC0gbW92ZSAn JHNvY2tldF9hZGRyJyBkZWNsYXJhdGlvbiBjbG9zZXIgdG8gdXNhZ2UNCj4gICAgICB2NDoNCj4g ICAgICAtIGFkZCB0aW1lb3V0IHRvIGFjY2VwdCgpDQo+ICAgICAgLSBtb3ZlICdid2xpbWl0JyB0 byBQVkU6OlN0b3JhZ2VUdW5uZWwgYW5kIGV4dGVuZCBpdA0KPiAgICAgIC0gbWFyayBtdHVubmVs KHdlYnNvY2tldCkgYXMgbm9uLXByb3hpZWQsIGFuZCBjaGVjayAkbm9kZSBhY2NvcmRpbmdseQ0K PiAgICAgIHYzOg0KPiAgICAgIC0gaGFuZGxlIG1ldGEgYW5kIHZtZ2VuaWQgYmV0dGVyDQo+ICAg ICAgLSBoYW5kbGUgZmFpbHVyZSBvZiAnY29uZmlnJyB1cGRhdGluZw0KPiAgICAgIC0gbW92ZSAn ZGlzay1pbXBvcnQnIGFuZCAncXVlcnktZGlzay1pbXBvcnQnIGhhbmRsZXJzIHRvIHB2ZS1ndWVz dC1jb21tb24NCj4gICAgICAtIGltcHJvdmUgdHVubmVsIGV4aXQgYnkgbGV0dGluZyBjbGllbnQg Y2xvc2UgdGhlIGNvbm5lY3Rpb24NCj4gICAgICAtIHVzZSBzdHJpY3QgVk0gY29uZmlnIHBhcnNl cg0KPiAgICAgIHYyOiBpbmNvcnBvcmF0ZWQgRmFiaWFuIEVibmVyJ3MgZmVlZGJhY2ssIG1haW5s eToNCj4gICAgICAtIHVzZSBtb2RpZmllZCBuYmQgYWxsb2MgaGVscGVyIGluc3RlYWQgb2YgZHVw bGljYXRpbmcNCj4gICAgICAtIGZpeCBkaXNrIGNsZWFudXAsIGFsc28gY2xlYW51cCBpbXBvcnRl ZCBkaXNrcw0KPiAgICAgIC0gZml4IGZpcmV3YWxsLWNvbmYgdnMgZmlyZXdhbGwtY29uZmlnIG1p c21hdGNoDQo+ICAgICAgDQo+ICAgICAgcmVxdWlyZXMNCj4gICAgICAtIHB2ZS1hY2Nlc3MtY29u dHJvbCB3aXRoIHR1bm5lbCB0aWNrZXQgc3VwcG9ydCAoYWxyZWFkeSBtYXJrZWQgaW4gZC9jb250 cm9sKQ0KPiAgICAgIC0gcHZlLWFjY2Vzcy1jb250cm9sIHdpdGggU3lzLkluY29taW5nIHByaXZp bGVnZSAobm90IHlldCBhcHBsaWVkL2J1bXBlZCEpDQo+ICAgICAgLSBwdmUtaHR0cC1zZXJ2ZXIg d2l0aCB3ZWJzb2NrZXQgZml4ZXMgKGNvdWxkIGJlIGRvbmUgdmlhIGJyZWFrcz8gb3IgYnVtcGVk IGluDQo+ICAgICAgICBwdmUtbWFuYWdlci4uKQ0KPiANCj4gICBQVkUvQVBJMi9RZW11LnBtIHwg NTI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystDQo+ICAg ZGViaWFuL2NvbnRyb2wgICB8ICAgMiArLQ0KPiAgIDIgZmlsZXMgY2hhbmdlZCwgNTI3IGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvUFZFL0FQSTIvUWVt dS5wbSBiL1BWRS9BUEkyL1FlbXUucG0NCj4gaW5kZXggM2VjMzFjMjYuLjkyNzBjYTc0IDEwMDY0 NA0KPiAtLS0gYS9QVkUvQVBJMi9RZW11LnBtDQo+ICsrKyBiL1BWRS9BUEkyL1FlbXUucG0NCj4g QEAgLTQsMTAgKzQsMTMgQEAgdXNlIHN0cmljdDsNCj4gICB1c2Ugd2FybmluZ3M7DQo+ICAgdXNl IEN3ZCAnYWJzX3BhdGgnOw0KPiAgIHVzZSBOZXQ6OlNTTGVheTsNCj4gLXVzZSBQT1NJWDsNCj4g ICB1c2UgSU86OlNvY2tldDo6SVA7DQo+ICt1c2UgSU86OlNvY2tldDo6VU5JWDsNCj4gK3VzZSBJ UEM6Ok9wZW4zOw0KPiArdXNlIEpTT047DQo+ICAgdXNlIFVSSTo6RXNjYXBlOw0KPiAgIHVzZSBD cnlwdDo6T3BlblNTTDo6UmFuZG9tOw0KPiArdXNlIFNvY2tldCBxdyhTT0NLX1NUUkVBTSk7DQo+ ICAgDQo+ICAgdXNlIFBWRTo6Q2x1c3RlciBxdyAoY2ZzX3JlYWRfZmlsZSBjZnNfd3JpdGVfZmls ZSk7Ow0KPiAgIHVzZSBQVkU6OlJSRDsNCj4gQEAgLTM4LDYgKzQxLDcgQEAgdXNlIFBWRTo6VlpE dW1wOjpQbHVnaW47DQo+ICAgdXNlIFBWRTo6RGF0YUNlbnRlckNvbmZpZzsNCj4gICB1c2UgUFZF OjpTU0hJbmZvOw0KPiAgIHVzZSBQVkU6OlJlcGxpY2F0aW9uOw0KPiArdXNlIFBWRTo6U3RvcmFn ZVR1bm5lbDsNCj4gICANCj4gICBCRUdJTiB7DQo+ICAgICAgIGlmICghJEVOVntQVkVfR0VORVJB VElOR19ET0NTfSkgew0KPiBAQCAtMTA4Nyw2ICsxMDkxLDcgQEAgX19QQUNLQUdFX18tPnJlZ2lz dGVyX21ldGhvZCh7DQo+ICAgCSAgICB7IHN1YmRpciA9PiAnc3BpY2Vwcm94eScgfSwNCj4gICAJ ICAgIHsgc3ViZGlyID0+ICdzZW5ka2V5JyB9LA0KPiAgIAkgICAgeyBzdWJkaXIgPT4gJ2ZpcmV3 YWxsJyB9LA0KPiArCSAgICB7IHN1YmRpciA9PiAnbXR1bm5lbCcgfSwNCj4gICAJICAgIF07DQo+ ICAgDQo+ICAgCXJldHVybiAkcmVzOw0KPiBAQCAtNDk2NSw0ICs0OTcwLDUyNCBAQCBfX1BBQ0tB R0VfXy0+cmVnaXN0ZXJfbWV0aG9kKHsNCj4gICAJcmV0dXJuIFBWRTo6UWVtdVNlcnZlcjo6Q2xv dWRpbml0OjpkdW1wX2Nsb3VkaW5pdF9jb25maWcoJGNvbmYsICRwYXJhbS0+e3ZtaWR9LCAkcGFy YW0tPnt0eXBlfSk7DQo+ICAgICAgIH19KTsNCj4gICANCj4gK19fUEFDS0FHRV9fLT5yZWdpc3Rl cl9tZXRob2Qoew0KPiArICAgIG5hbWUgPT4gJ210dW5uZWwnLA0KPiArICAgIHBhdGggPT4gJ3t2 bWlkfS9tdHVubmVsJywNCj4gKyAgICBtZXRob2QgPT4gJ1BPU1QnLA0KPiArICAgIHByb3RlY3Rl ZCA9PiAxLA0KPiArICAgIGRlc2NyaXB0aW9uID0+ICdNaWdyYXRpb24gdHVubmVsIGVuZHBvaW50 IC0gb25seSBmb3IgaW50ZXJuYWwgdXNlIGJ5IFZNIG1pZ3JhdGlvbi4nLA0KPiArICAgIHBlcm1p c3Npb25zID0+IHsNCj4gKwljaGVjayA9Pg0KPiArCVsgJ2FuZCcsDQo+ICsJICBbJ3Blcm0nLCAn L3Ztcy97dm1pZH0nLCBbICdWTS5BbGxvY2F0ZScgXV0sDQo+ICsJICBbJ3Blcm0nLCAnLycsIFsg J1N5cy5JbmNvbWluZycgXV0sDQo+ICsJXSwNCj4gKwlkZXNjcmlwdGlvbiA9PiAiWW91IG5lZWQg J1ZNLkFsbG9jYXRlJyBwZXJtaXNzaW9ucyBvbiAnL3Ztcy97dm1pZH0nIGFuZCBTeXMuSW5jb21p bmciIC4NCj4gKwkgICAgICAgICAgICAgICAiIG9uICcvJy4gRnVydGhlciBwZXJtaXNzaW9uIGNo ZWNrcyBoYXBwZW4gZHVyaW5nIHRoZSBhY3R1YWwgbWlncmF0aW9uLiIsDQo+ICsgICAgfSwNCj4g KyAgICBwYXJhbWV0ZXJzID0+IHsNCj4gKwlhZGRpdGlvbmFsUHJvcGVydGllcyA9PiAwLA0KPiAr CXByb3BlcnRpZXMgPT4gew0KPiArCSAgICBub2RlID0+IGdldF9zdGFuZGFyZF9vcHRpb24oJ3B2 ZS1ub2RlJyksDQo+ICsJICAgIHZtaWQgPT4gZ2V0X3N0YW5kYXJkX29wdGlvbigncHZlLXZtaWQn KSwNCj4gKwkgICAgc3RvcmFnZXMgPT4gew0KPiArCQl0eXBlID0+ICdzdHJpbmcnLA0KPiArCQlm b3JtYXQgPT4gJ3B2ZS1zdG9yYWdlLWlkLWxpc3QnLA0KPiArCQlvcHRpb25hbCA9PiAxLA0KPiAr CQlkZXNjcmlwdGlvbiA9PiAnTGlzdCBvZiBzdG9yYWdlcyB0byBjaGVjayBwZXJtaXNzaW9uIGFu ZCBhdmFpbGFiaWxpdHkuIFdpbGwgYmUgY2hlY2tlZCBhZ2FpbiBmb3IgYWxsIGFjdHVhbGx5IHVz ZWQgc3RvcmFnZXMgZHVyaW5nIG1pZ3JhdGlvbi4nLA0KPiArCSAgICB9LA0KPiArCX0sDQo+ICsg ICAgfSwNCj4gKyAgICByZXR1cm5zID0+IHsNCj4gKwlhZGRpdGlvbmFsUHJvcGVydGllcyA9PiAw LA0KPiArCXByb3BlcnRpZXMgPT4gew0KPiArCSAgICB1cGlkID0+IHsgdHlwZSA9PiAnc3RyaW5n JyB9LA0KPiArCSAgICB0aWNrZXQgPT4geyB0eXBlID0+ICdzdHJpbmcnIH0sDQo+ICsJICAgIHNv Y2tldCA9PiB7IHR5cGUgPT4gJ3N0cmluZycgfSwNCj4gKwl9LA0KPiArICAgIH0sDQo+ICsgICAg Y29kZSA9PiBzdWIgew0KPiArCW15ICgkcGFyYW0pID0gQF87DQo+ICsNCj4gKwlteSAkcnBjZW52 ID0gUFZFOjpSUENFbnZpcm9ubWVudDo6Z2V0KCk7DQo+ICsJbXkgJGF1dGh1c2VyID0gJHJwY2Vu di0+Z2V0X3VzZXIoKTsNCj4gKw0KPiArCW15ICRub2RlID0gZXh0cmFjdF9wYXJhbSgkcGFyYW0s ICdub2RlJyk7DQo+ICsJbXkgJHZtaWQgPSBleHRyYWN0X3BhcmFtKCRwYXJhbSwgJ3ZtaWQnKTsN Cj4gKw0KPiArCW15ICRzdG9yYWdlcyA9IGV4dHJhY3RfcGFyYW0oJHBhcmFtLCAnc3RvcmFnZXMn KTsNCj4gKw0KPiArCW15ICRub2RlbmFtZSA9IFBWRTo6SU5vdGlmeTo6bm9kZW5hbWUoKTsNCj4g Kw0KPiArCXJhaXNlX3BhcmFtX2V4Yyh7IG5vZGUgPT4gIm5vZGUgbmVlZHMgdG8gYmUgJ2xvY2Fs aG9zdCcgb3IgbG9jYWwgaG9zdG5hbWUgJyRub2RlbmFtZSciIH0pDQo+ICsJICAgIGlmICRub2Rl IG5lICdsb2NhbGhvc3QnICYmICRub2RlIG5lICRub2RlbmFtZTsNCj4gKw0KPiArCSRub2RlID0g JG5vZGVuYW1lOw0KPiArDQo+ICsJbXkgJHN0b3JlY2ZnID0gUFZFOjpTdG9yYWdlOjpjb25maWco KTsNCj4gKwlmb3JlYWNoIG15ICRzdG9yZWlkIChQVkU6OlRvb2xzOjpzcGxpdF9saXN0KCRzdG9y YWdlcykpIHsNCj4gKwkgICAgJGNoZWNrX3N0b3JhZ2VfYWNjZXNzX21pZ3JhdGUtPigkcnBjZW52 LCAkYXV0aHVzZXIsICRzdG9yZWNmZywgJHN0b3JlaWQsICRub2RlKTsNCj4gKwl9DQo+ICsNCj4g KwlQVkU6OkNsdXN0ZXI6OmNoZWNrX2Nmc19xdW9ydW0oKTsNCj4gKw0KPiArCW15ICRsb2NrID0g J2NyZWF0ZSc7DQo+ICsJZXZhbCB7IFBWRTo6UWVtdUNvbmZpZy0+Y3JlYXRlX2FuZF9sb2NrX2Nv bmZpZygkdm1pZCwgMCwgJGxvY2spOyB9Ow0KPiArDQo+ICsJcmFpc2VfcGFyYW1fZXhjKHsgdm1p ZCA9PiAidW5hYmxlIHRvIGNyZWF0ZSBlbXB0eSBWTSBjb25maWcgLSAkQCJ9KQ0KPiArCSAgICBp ZiAkQDsNCj4gKw0KPiArCW15ICRyZWFsY21kID0gc3ViIHsNCj4gKwkgICAgbXkgJHN0YXRlID0g ew0KPiArCQlzdG9yZWNmZyA9PiBQVkU6OlN0b3JhZ2U6OmNvbmZpZygpLA0KPiArCQlsb2NrID0+ ICRsb2NrLA0KPiArCQl2bWlkID0+ICR2bWlkLA0KPiArCSAgICB9Ow0KPiArDQo+ICsJICAgIG15 ICRydW5fbG9ja2VkID0gc3ViIHsNCj4gKwkJbXkgKCRjb2RlLCAkcGFyYW1zKSA9IEBfOw0KPiAr CQlyZXR1cm4gUFZFOjpRZW11Q29uZmlnLT5sb2NrX2NvbmZpZygkc3RhdGUtPnt2bWlkfSwgc3Vi IHsNCj4gKwkJICAgIG15ICRjb25mID0gUFZFOjpRZW11Q29uZmlnLT5sb2FkX2NvbmZpZygkc3Rh dGUtPnt2bWlkfSk7DQo+ICsNCj4gKwkJICAgICRzdGF0ZS0+e2NvbmZ9ID0gJGNvbmY7DQo+ICsN Cj4gKwkJICAgIGRpZSAiRW5jb3VudGVyZWQgd3JvbmcgbG9jayAtIGFib3J0aW5nIG10dW5uZWwg Y29tbWFuZCBoYW5kbGluZy5cbiINCj4gKwkJCWlmICRzdGF0ZS0+e2xvY2t9ICYmICFQVkU6OlFl bXVDb25maWctPmhhc19sb2NrKCRjb25mLCAkc3RhdGUtPntsb2NrfSk7DQo+ICsNCj4gKwkJICAg IHJldHVybiAkY29kZS0+KCRwYXJhbXMpOw0KPiArCQl9KTsNCj4gKwkgICAgfTsNCj4gKw0KPiAr CSAgICBteSAkY21kX2Rlc2MgPSB7DQo+ICsJCWNvbmZpZyA9PiB7DQo+ICsJCSAgICBjb25mID0+ IHsNCj4gKwkJCXR5cGUgPT4gJ3N0cmluZycsDQo+ICsJCQlkZXNjcmlwdGlvbiA9PiAnRnVsbCBW TSBjb25maWcsIGFkYXB0ZWQgZm9yIHRhcmdldCBjbHVzdGVyL25vZGUnLA0KPiArCQkgICAgfSwN Cj4gKwkJICAgICdmaXJld2FsbC1jb25maWcnID0+IHsNCj4gKwkJCXR5cGUgPT4gJ3N0cmluZycs DQo+ICsJCQlkZXNjcmlwdGlvbiA9PiAnVk0gZmlyZXdhbGwgY29uZmlnJywNCj4gKwkJCW9wdGlv bmFsID0+IDEsDQo+ICsJCSAgICB9LA0KPiArCQl9LA0KPiArCQlkaXNrID0+IHsNCj4gKwkJICAg IGZvcm1hdCA9PiBQVkU6OkpTT05TY2hlbWE6OmdldF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS1xbS1p bWFnZS1mb3JtYXQnKSwNCj4gKwkJICAgIHN0b3JhZ2UgPT4gew0KPiArCQkJdHlwZSA9PiAnc3Ry aW5nJywNCj4gKwkJCWZvcm1hdCA9PiAncHZlLXN0b3JhZ2UtaWQnLA0KPiArCQkgICAgfSwNCj4g KwkJICAgIGRyaXZlID0+IHsNCj4gKwkJCXR5cGUgPT4gJ29iamVjdCcsDQo+ICsJCQlkZXNjcmlw dGlvbiA9PiAncGFyc2VkIGRyaXZlIGluZm9ybWF0aW9uIHdpdGhvdXQgdm9saWQgYW5kIGZvcm1h dCcsDQo+ICsJCSAgICB9LA0KPiArCQl9LA0KPiArCQlzdGFydCA9PiB7DQo+ICsJCSAgICBzdGFy dF9wYXJhbXMgPT4gew0KPiArCQkJdHlwZSA9PiAnb2JqZWN0JywNCj4gKwkJCWRlc2NyaXB0aW9u ID0+ICdwYXJhbXMgcGFzc2VkIHRvIHZtX3N0YXJ0X25vbG9jaycsDQo+ICsJCSAgICB9LA0KPiAr CQkgICAgbWlncmF0ZV9vcHRzID0+IHsNCj4gKwkJCXR5cGUgPT4gJ29iamVjdCcsDQo+ICsJCQlk ZXNjcmlwdGlvbiA9PiAnbWlncmF0ZV9vcHRzIHBhc3NlZCB0byB2bV9zdGFydF9ub2xvY2snLA0K PiArCQkgICAgfSwNCj4gKwkJfSwNCj4gKwkJdGlja2V0ID0+IHsNCj4gKwkJICAgIHBhdGggPT4g ew0KPiArCQkJdHlwZSA9PiAnc3RyaW5nJywNCj4gKwkJCWRlc2NyaXB0aW9uID0+ICdzb2NrZXQg cGF0aCBmb3Igd2hpY2ggdGhlIHRpY2tldCBzaG91bGQgYmUgdmFsaWQuIG11c3QgYmUga25vd24g dG8gY3VycmVudCBtdHVubmVsIGluc3RhbmNlLicsDQo+ICsJCSAgICB9LA0KPiArCQl9LA0KPiAr CQlxdWl0ID0+IHsNCj4gKwkJICAgIGNsZWFudXAgPT4gew0KPiArCQkJdHlwZSA9PiAnYm9vbGVh bicsDQo+ICsJCQlkZXNjcmlwdGlvbiA9PiAncmVtb3ZlIFZNIGNvbmZpZyBhbmQgZGlza3MsIGFi b3J0aW5nIG1pZ3JhdGlvbicsDQo+ICsJCQlkZWZhdWx0ID0+IDAsDQo+ICsJCSAgICB9LA0KPiAr CQl9LA0KPiArCQknZGlzay1pbXBvcnQnID0+ICRQVkU6OlN0b3JhZ2VUdW5uZWw6OmNtZF9zY2hl bWEtPnsnZGlzay1pbXBvcnQnfSwNCj4gKwkJJ3F1ZXJ5LWRpc2staW1wb3J0JyA9PiAkUFZFOjpT dG9yYWdlVHVubmVsOjpjbWRfc2NoZW1hLT57J3F1ZXJ5LWRpc2staW1wb3J0J30sDQo+ICsJCWJ3 bGltaXQgPT4gJFBWRTo6U3RvcmFnZVR1bm5lbDo6Y21kX3NjaGVtYS0+e2J3bGltaXR9LA0KPiAr CSAgICB9Ow0KPiArDQo+ICsJICAgIG15ICRjbWRfaGFuZGxlcnMgPSB7DQo+ICsJCSd2ZXJzaW9u JyA9PiBzdWIgew0KPiArCQkgICAgIyBjb21wYXJlZCBhZ2FpbnN0IG90aGVyIGVuZCdzIHZlcnNp b24NCj4gKwkJICAgICMgYnVtcC9yZXNldCBmb3IgYnJlYWtpbmcgY2hhbmdlcw0KPiArCQkgICAg IyBidW1wL2J1bXAgZm9yIG9wdC1pbiBjaGFuZ2VzDQo+ICsJCSAgICByZXR1cm4gew0KPiArCQkJ YXBpID0+IDIsDQo+ICsJCQlhZ2UgPT4gMCwNCj4gKwkJICAgIH07DQo+ICsJCX0sDQo+ICsJCSdj b25maWcnID0+IHN1YiB7DQo+ICsJCSAgICBteSAoJHBhcmFtcykgPSBAXzsNCj4gKw0KPiArCQkg ICAgIyBwYXJzZSBhbmQgd3JpdGUgb3V0IFZNIEZXIGNvbmZpZyBpZiBnaXZlbg0KPiArCQkgICAg aWYgKG15ICRmd19jb25mID0gJHBhcmFtcy0+eydmaXJld2FsbC1jb25maWcnfSkgew0KPiArCQkJ bXkgKCRwYXRoLCAkZmgpID0gUFZFOjpUb29sczo6dGVtcGZpbGVfY29udGVudHMoJGZ3X2NvbmYs IDcwMCk7DQo+ICsNCj4gKwkJCW15ICRlbXB0eV9jb25mID0gew0KPiArCQkJICAgIHJ1bGVzID0+ IFtdLA0KPiArCQkJICAgIG9wdGlvbnMgPT4ge30sDQo+ICsJCQkgICAgYWxpYXNlcyA9PiB7fSwN Cj4gKwkJCSAgICBpcHNldCA9PiB7fSAsDQo+ICsJCQkgICAgaXBzZXRfY29tbWVudHMgPT4ge30s DQo+ICsJCQl9Ow0KPiArCQkJbXkgJGNsdXN0ZXJfZndfY29uZiA9IFBWRTo6RmlyZXdhbGw6Omxv YWRfY2x1c3RlcmZ3X2NvbmYoKTsNCj4gKw0KPiArCQkJIyBUT0RPOiBhZGQgZmxhZyBmb3Igc3Ry aWN0IHBhcnNpbmc/DQo+ICsJCQkjIFRPRE86IGFkZCBpbXBvcnQgc3ViIHRoYXQgZG9lcyBhbGwg dGhpcyBnaXZlbiByYXcgY29udGVudD8NCj4gKwkJCW15ICR2bWZ3X2NvbmYgPSBQVkU6OkZpcmV3 YWxsOjpnZW5lcmljX2Z3X2NvbmZpZ19wYXJzZXIoJHBhdGgsICRjbHVzdGVyX2Z3X2NvbmYsICRl bXB0eV9jb25mLCAndm0nKTsNCj4gKwkJCSR2bWZ3X2NvbmYtPnt2bWlkfSA9ICRzdGF0ZS0+e3Zt aWR9Ow0KPiArCQkJUFZFOjpGaXJld2FsbDo6c2F2ZV92bWZ3X2NvbmYoJHN0YXRlLT57dm1pZH0s ICR2bWZ3X2NvbmYpOw0KPiArDQo+ICsJCQkkc3RhdGUtPntjbGVhbnVwfS0+e2Z3fSA9IDE7DQo+ ICsJCSAgICB9DQo+ICsNCj4gKwkJICAgIG15ICRjb25mX2ZuID0gImluY29taW5nL3FlbXUtc2Vy dmVyLyRzdGF0ZS0+e3ZtaWR9LmNvbmYiOw0KPiArCQkgICAgbXkgJG5ld19jb25mID0gUFZFOjpR ZW11U2VydmVyOjpwYXJzZV92bV9jb25maWcoJGNvbmZfZm4sICRwYXJhbXMtPntjb25mfSwgMSk7 DQo+ICsJCSAgICBkZWxldGUgJG5ld19jb25mLT57bG9ja307DQo+ICsJCSAgICBkZWxldGUgJG5l d19jb25mLT57ZGlnZXN0fTsNCj4gKw0KPiArCQkgICAgIyBUT0RPIGhhbmRsZSBwcm9wZXJseT8N Cj4gKwkJICAgIGRlbGV0ZSAkbmV3X2NvbmYtPntzbmFwc2hvdHN9Ow0KPiArCQkgICAgZGVsZXRl ICRuZXdfY29uZi0+e3BhcmVudH07DQo+ICsJCSAgICBkZWxldGUgJG5ld19jb25mLT57cGVuZGlu Z307DQo+ICsNCj4gKwkJICAgICMgbm90IGhhbmRsZWQgYnkgdXBkYXRlX3ZtX2FwaQ0KPiArCQkg ICAgbXkgJHZtZ2VuaWQgPSBkZWxldGUgJG5ld19jb25mLT57dm1nZW5pZH07DQo+ICsJCSAgICBt eSAkbWV0YSA9IGRlbGV0ZSAkbmV3X2NvbmYtPnttZXRhfTsNCj4gKw0KPiArCQkgICAgJG5ld19j b25mLT57dm1pZH0gPSAkc3RhdGUtPnt2bWlkfTsNCj4gKwkJICAgICRuZXdfY29uZi0+e25vZGV9 ID0gJG5vZGU7DQo+ICsNCj4gKwkJICAgIFBWRTo6UWVtdUNvbmZpZy0+cmVtb3ZlX2xvY2soJHN0 YXRlLT57dm1pZH0sICdjcmVhdGUnKTsNCj4gKw0KPiArCQkgICAgZXZhbCB7DQo+ICsJCQkkdXBk YXRlX3ZtX2FwaS0+KCRuZXdfY29uZiwgMSk7DQo+ICsJCSAgICB9Ow0KPiArCQkgICAgaWYgKG15 ICRlcnIgPSAkQCkgew0KPiArCQkJIyByZXZlcnQgdG8gbG9ja2VkIHByZXZpb3VzIGNvbmZpZw0K PiArCQkJbXkgJGNvbmYgPSBQVkU6OlFlbXVDb25maWctPmxvYWRfY29uZmlnKCRzdGF0ZS0+e3Zt aWR9KTsNCj4gKwkJCSRjb25mLT57bG9ja30gPSAnY3JlYXRlJzsNCj4gKwkJCVBWRTo6UWVtdUNv bmZpZy0+d3JpdGVfY29uZmlnKCRzdGF0ZS0+e3ZtaWR9LCAkY29uZik7DQo+ICsNCj4gKwkJCWRp ZSAkZXJyOw0KPiArCQkgICAgfQ0KPiArDQo+ICsJCSAgICBteSAkY29uZiA9IFBWRTo6UWVtdUNv bmZpZy0+bG9hZF9jb25maWcoJHN0YXRlLT57dm1pZH0pOw0KPiArCQkgICAgJGNvbmYtPntsb2Nr fSA9ICdtaWdyYXRlJzsNCj4gKwkJICAgICRjb25mLT57dm1nZW5pZH0gPSAkdm1nZW5pZCBpZiBk ZWZpbmVkKCR2bWdlbmlkKTsNCj4gKwkJICAgICRjb25mLT57bWV0YX0gPSAkbWV0YSBpZiBkZWZp bmVkKCRtZXRhKTsNCj4gKwkJICAgIFBWRTo6UWVtdUNvbmZpZy0+d3JpdGVfY29uZmlnKCRzdGF0 ZS0+e3ZtaWR9LCAkY29uZik7DQo+ICsNCj4gKwkJICAgICRzdGF0ZS0+e2xvY2t9ID0gJ21pZ3Jh dGUnOw0KPiArDQo+ICsJCSAgICByZXR1cm47DQo+ICsJCX0sDQo+ICsJCSdid2xpbWl0JyA9PiBz dWIgew0KPiArCQkgICAgbXkgKCRwYXJhbXMpID0gQF87DQo+ICsJCSAgICByZXR1cm4gUFZFOjpT dG9yYWdlVHVubmVsOjpoYW5kbGVfYndsaW1pdCgkcGFyYW1zKTsNCj4gKwkJfSwNCj4gKwkJJ2Rp c2snID0+IHN1YiB7DQo+ICsJCSAgICBteSAoJHBhcmFtcykgPSBAXzsNCj4gKw0KPiArCQkgICAg bXkgJGZvcm1hdCA9ICRwYXJhbXMtPntmb3JtYXR9Ow0KPiArCQkgICAgbXkgJHN0b3JlaWQgPSAk cGFyYW1zLT57c3RvcmFnZX07DQo+ICsJCSAgICBteSAkZHJpdmUgPSAkcGFyYW1zLT57ZHJpdmV9 Ow0KPiArDQo+ICsJCSAgICAkY2hlY2tfc3RvcmFnZV9hY2Nlc3NfbWlncmF0ZS0+KCRycGNlbnYs ICRhdXRodXNlciwgJHN0YXRlLT57c3RvcmVjZmd9LCAkc3RvcmVpZCwgJG5vZGUpOw0KPiArDQo+ ICsJCSAgICBteSAkc3RvcmFnZW1hcCA9IHsNCj4gKwkJCWRlZmF1bHQgPT4gJHN0b3JlaWQsDQo+ ICsJCSAgICB9Ow0KPiArDQo+ICsJCSAgICBteSAkc291cmNlX3ZvbHVtZXMgPSB7DQo+ICsJCQkn ZGlzaycgPT4gWw0KPiArCQkJICAgIHVuZGVmLA0KPiArCQkJICAgICRzdG9yZWlkLA0KPiArCQkJ ICAgIHVuZGVmLA0KPiArCQkJICAgICRkcml2ZSwNCj4gKwkJCSAgICAwLA0KPiArCQkJICAgICRm b3JtYXQsDQo+ICsJCQldLA0KPiArCQkgICAgfTsNCj4gKw0KPiArCQkgICAgbXkgJHJlcyA9IFBW RTo6UWVtdVNlcnZlcjo6dm1fbWlncmF0ZV9hbGxvY19uYmRfZGlza3MoJHN0YXRlLT57c3RvcmVj Zmd9LCAkc3RhdGUtPnt2bWlkfSwgJHNvdXJjZV92b2x1bWVzLCAkc3RvcmFnZW1hcCk7DQo+ICsJ CSAgICBpZiAoZGVmaW5lZCgkcmVzLT57ZGlza30pKSB7DQo+ICsJCQkkc3RhdGUtPntjbGVhbnVw fS0+e3ZvbHVtZXN9LT57JHJlcy0+e2Rpc2t9LT57dm9saWR9fSA9IDE7DQo+ICsJCQlyZXR1cm4g JHJlcy0+e2Rpc2t9Ow0KPiArCQkgICAgfSBlbHNlIHsNCj4gKwkJCWRpZSAiZmFpbGVkIHRvIGFs bG9jYXRlIE5CRCBkaXNrLi5cbiI7DQo+ICsJCSAgICB9DQo+ICsJCX0sDQo+ICsJCSdkaXNrLWlt cG9ydCcgPT4gc3ViIHsNCj4gKwkJICAgIG15ICgkcGFyYW1zKSA9IEBfOw0KPiArDQo+ICsJCSAg ICAkY2hlY2tfc3RvcmFnZV9hY2Nlc3NfbWlncmF0ZS0+KA0KPiArCQkJJHJwY2VudiwNCj4gKwkJ CSRhdXRodXNlciwNCj4gKwkJCSRzdGF0ZS0+e3N0b3JlY2ZnfSwNCj4gKwkJCSRwYXJhbXMtPntz dG9yYWdlfSwNCj4gKwkJCSRub2RlDQo+ICsJCSAgICApOw0KPiArDQo+ICsJCSAgICAkcGFyYW1z LT57dW5peH0gPSAiL3J1bi9xZW11LXNlcnZlci8kc3RhdGUtPnt2bWlkfS5zdG9yYWdlIjsNCj4g Kw0KPiArCQkgICAgcmV0dXJuIFBWRTo6U3RvcmFnZVR1bm5lbDo6aGFuZGxlX2Rpc2tfaW1wb3J0 KCRzdGF0ZSwgJHBhcmFtcyk7DQo+ICsJCX0sDQo+ICsJCSdxdWVyeS1kaXNrLWltcG9ydCcgPT4g c3ViIHsNCj4gKwkJICAgIG15ICgkcGFyYW1zKSA9IEBfOw0KPiArDQo+ICsJCSAgICByZXR1cm4g UFZFOjpTdG9yYWdlVHVubmVsOjpoYW5kbGVfcXVlcnlfZGlza19pbXBvcnQoJHN0YXRlLCAkcGFy YW1zKTsNCj4gKwkJfSwNCj4gKwkJJ3N0YXJ0JyA9PiBzdWIgew0KPiArCQkgICAgbXkgKCRwYXJh bXMpID0gQF87DQo+ICsNCj4gKwkJICAgIG15ICRpbmZvID0gUFZFOjpRZW11U2VydmVyOjp2bV9z dGFydF9ub2xvY2soDQo+ICsJCQkkc3RhdGUtPntzdG9yZWNmZ30sDQo+ICsJCQkkc3RhdGUtPnt2 bWlkfSwNCj4gKwkJCSRzdGF0ZS0+e2NvbmZ9LA0KPiArCQkJJHBhcmFtcy0+e3N0YXJ0X3BhcmFt c30sDQo+ICsJCQkkcGFyYW1zLT57bWlncmF0ZV9vcHRzfSwNCj4gKwkJICAgICk7DQo+ICsNCj4g Kw0KPiArCQkgICAgaWYgKCRpbmZvLT57bWlncmF0ZX0tPntwcm90b30gbmUgJ3VuaXgnKSB7DQo+ ICsJCQlQVkU6OlFlbXVTZXJ2ZXI6OnZtX3N0b3AodW5kZWYsICRzdGF0ZS0+e3ZtaWR9LCAxLCAx KTsNCj4gKwkJCWRpZSAibWlncmF0aW9uIG92ZXIgbm9uLVVOSVggc29ja2V0cyBub3QgcG9zc2li bGVcbiI7DQo+ICsJCSAgICB9DQo+ICsNCj4gKwkJICAgIG15ICRzb2NrZXQgPSAkaW5mby0+e21p Z3JhdGV9LT57YWRkcn07DQo+ICsJCSAgICBjaG93biAkc3RhdGUtPntzb2NrZXRfdWlkfSwgLTEs ICRzb2NrZXQ7DQo+ICsJCSAgICAkc3RhdGUtPntzb2NrZXRzfS0+eyRzb2NrZXR9ID0gMTsNCj4g Kw0KPiArCQkgICAgbXkgJHVuaXhfc29ja2V0cyA9ICRpbmZvLT57bWlncmF0ZX0tPnt1bml4X3Nv Y2tldHN9Ow0KPiArCQkgICAgZm9yZWFjaCBteSAkc29ja2V0IChAJHVuaXhfc29ja2V0cykgew0K PiArCQkJY2hvd24gJHN0YXRlLT57c29ja2V0X3VpZH0sIC0xLCAkc29ja2V0Ow0KPiArCQkJJHN0 YXRlLT57c29ja2V0c30tPnskc29ja2V0fSA9IDE7DQo+ICsJCSAgICB9DQo+ICsJCSAgICByZXR1 cm4gJGluZm87DQo+ICsJCX0sDQo+ICsJCSdmc3RyaW0nID0+IHN1YiB7DQo+ICsJCSAgICBpZiAo UFZFOjpRZW11U2VydmVyOjpxZ2FfY2hlY2tfcnVubmluZygkc3RhdGUtPnt2bWlkfSkpIHsNCj4g KwkJCWV2YWwgeyBtb25fY21kKCRzdGF0ZS0+e3ZtaWR9LCAiZ3Vlc3QtZnN0cmltIikgfTsNCj4g KwkJCXdhcm4gImZzdHJpbSBmYWlsZWQ6ICRAXG4iIGlmICRAOw0KPiArCQkgICAgfQ0KPiArCQkg ICAgcmV0dXJuOw0KPiArCQl9LA0KPiArCQknc3RvcCcgPT4gc3ViIHsNCj4gKwkJICAgIFBWRTo6 UWVtdVNlcnZlcjo6dm1fc3RvcCh1bmRlZiwgJHN0YXRlLT57dm1pZH0sIDEsIDEpOw0KPiArCQkg ICAgcmV0dXJuOw0KPiArCQl9LA0KPiArCQknbmJkc3RvcCcgPT4gc3ViIHsNCj4gKwkJICAgIFBW RTo6UWVtdVNlcnZlcjo6bmJkX3N0b3AoJHN0YXRlLT57dm1pZH0pOw0KPiArCQkgICAgcmV0dXJu Ow0KPiArCQl9LA0KPiArCQkncmVzdW1lJyA9PiBzdWIgew0KPiArCQkgICAgaWYgKFBWRTo6UWVt dVNlcnZlcjo6SGVscGVyczo6dm1fcnVubmluZ19sb2NhbGx5KCRzdGF0ZS0+e3ZtaWR9KSkgew0K PiArCQkJUFZFOjpRZW11U2VydmVyOjp2bV9yZXN1bWUoJHN0YXRlLT57dm1pZH0sIDEsIDEpOw0K PiArCQkgICAgfSBlbHNlIHsNCj4gKwkJCWRpZSAiVk0gJHN0YXRlLT57dm1pZH0gbm90IHJ1bm5p bmdcbiI7DQo+ICsJCSAgICB9DQo+ICsJCSAgICByZXR1cm47DQo+ICsJCX0sDQo+ICsJCSd1bmxv Y2snID0+IHN1YiB7DQo+ICsJCSAgICBQVkU6OlFlbXVDb25maWctPnJlbW92ZV9sb2NrKCRzdGF0 ZS0+e3ZtaWR9LCAkc3RhdGUtPntsb2NrfSk7DQo+ICsJCSAgICBkZWxldGUgJHN0YXRlLT57bG9j a307DQo+ICsJCSAgICByZXR1cm47DQo+ICsJCX0sDQo+ICsJCSd0aWNrZXQnID0+IHN1YiB7DQo+ ICsJCSAgICBteSAoJHBhcmFtcykgPSBAXzsNCj4gKw0KPiArCQkgICAgbXkgJHBhdGggPSAkcGFy YW1zLT57cGF0aH07DQo+ICsNCj4gKwkJICAgIGRpZSAiTm90IGFsbG93ZWQgdG8gZ2VuZXJhdGUg dGlja2V0IGZvciB1bmtub3duIHNvY2tldCAnJHBhdGgnXG4iDQo+ICsJCQlpZiAhZGVmaW5lZCgk c3RhdGUtPntzb2NrZXRzfS0+eyRwYXRofSk7DQo+ICsNCj4gKwkJICAgIHJldHVybiB7IHRpY2tl dCA9PiBQVkU6OkFjY2Vzc0NvbnRyb2w6OmFzc2VtYmxlX3R1bm5lbF90aWNrZXQoJGF1dGh1c2Vy LCAiL3NvY2tldC8kcGF0aCIpIH07DQo+ICsJCX0sDQo+ICsJCSdxdWl0JyA9PiBzdWIgew0KPiAr CQkgICAgbXkgKCRwYXJhbXMpID0gQF87DQo+ICsNCj4gKwkJICAgIGlmICgkcGFyYW1zLT57Y2xl YW51cH0pIHsNCj4gKwkJCWlmICgkc3RhdGUtPntjbGVhbnVwfS0+e2Z3fSkgew0KPiArCQkJICAg IFBWRTo6RmlyZXdhbGw6OnJlbW92ZV92bWZ3X2NvbmYoJHN0YXRlLT57dm1pZH0pOw0KPiArCQkJ fQ0KPiArDQo+ICsJCQlmb3IgbXkgJHZvbGlkIChrZXlzICRzdGF0ZS0+e2NsZWFudXB9LT57dm9s dW1lc30tPiUqKSB7DQo+ICsJCQkgICAgcHJpbnQgImZyZWVpbmcgdm9sdW1lICckdm9saWQnIGFz IHBhcnQgb2YgY2xlYW51cFxuIjsNCj4gKwkJCSAgICBldmFsIHsgUFZFOjpTdG9yYWdlOjp2ZGlz a19mcmVlKCRzdGF0ZS0+e3N0b3JlY2ZnfSwgJHZvbGlkKSB9Ow0KPiArCQkJICAgIHdhcm4gJEAg aWYgJEA7DQo+ICsJCQl9DQo+ICsNCj4gKwkJCVBWRTo6UWVtdVNlcnZlcjo6ZGVzdHJveV92bSgk c3RhdGUtPntzdG9yZWNmZ30sICRzdGF0ZS0+e3ZtaWR9LCAxKTsNCj4gKwkJICAgIH0NCj4gKw0K PiArCQkgICAgcHJpbnQgInN3aXRjaGluZyB0byBleGl0LW1vZGUsIHdhaXRpbmcgZm9yIGNsaWVu dCB0byBkaXNjb25uZWN0XG4iOw0KPiArCQkgICAgJHN0YXRlLT57ZXhpdH0gPSAxOw0KPiArCQkg ICAgcmV0dXJuOw0KPiArCQl9LA0KPiArCSAgICB9Ow0KPiArDQo+ICsJICAgICRydW5fbG9ja2Vk LT4oc3ViIHsNCj4gKwkJbXkgJHNvY2tldF9hZGRyID0gIi9ydW4vcWVtdS1zZXJ2ZXIvJHN0YXRl LT57dm1pZH0ubXR1bm5lbCI7DQo+ICsJCXVubGluayAkc29ja2V0X2FkZHI7DQo+ICsNCj4gKwkJ JHN0YXRlLT57c29ja2V0fSA9IElPOjpTb2NrZXQ6OlVOSVgtPm5ldygNCj4gKwkgICAgICAgICAg ICBUeXBlID0+IFNPQ0tfU1RSRUFNKCksDQo+ICsJCSAgICBMb2NhbCA9PiAkc29ja2V0X2FkZHIs DQo+ICsJCSAgICBMaXN0ZW4gPT4gMSwNCj4gKwkJKTsNCj4gKw0KPiArCQkkc3RhdGUtPntzb2Nr ZXRfdWlkfSA9IGdldHB3bmFtKCd3d3ctZGF0YScpDQo+ICsJCSAgICBvciBkaWUgIkZhaWxlZCB0 byByZXNvbHZlIHVzZXIgJ3d3dy1kYXRhJyB0byBudW1lcmljIFVJRFxuIjsNCj4gKwkJY2hvd24g JHN0YXRlLT57c29ja2V0X3VpZH0sIC0xLCAkc29ja2V0X2FkZHI7DQo+ICsJICAgIH0pOw0KPiAr DQo+ICsJICAgIHByaW50ICJtdHVubmVsIHN0YXJ0ZWRcbiI7DQo+ICsNCj4gKwkgICAgbXkgJGNv bm4gPSBldmFsIHsgUFZFOjpUb29sczo6cnVuX3dpdGhfdGltZW91dCgzMDAsIHN1YiB7ICRzdGF0 ZS0+e3NvY2tldH0tPmFjY2VwdCgpIH0pIH07DQo+ICsJICAgIGlmICgkQCkgew0KPiArCQl3YXJu ICJGYWlsZWQgdG8gYWNjZXB0IHR1bm5lbCBjb25uZWN0aW9uIC0gJEBcbiI7DQo+ICsNCj4gKwkJ d2FybiAiUmVtb3ZpbmcgdHVubmVsIHNvY2tldC4uXG4iOw0KPiArCQl1bmxpbmsgJHN0YXRlLT57 c29ja2V0fTsNCj4gKw0KPiArCQl3YXJuICJSZW1vdmluZyB0ZW1wb3JhcnkgVk0gY29uZmlnLi5c biI7DQo+ICsJCSRydW5fbG9ja2VkLT4oc3ViIHsNCj4gKwkJICAgIFBWRTo6UWVtdVNlcnZlcjo6 ZGVzdHJveV92bSgkc3RhdGUtPntzdG9yZWNmZ30sICRzdGF0ZS0+e3ZtaWR9LCAxKTsNCj4gKwkJ fSk7DQo+ICsNCj4gKwkJZGllICJFeGl0aW5nIG10dW5uZWxcbiI7DQo+ICsJICAgIH0NCj4gKw0K PiArCSAgICAkc3RhdGUtPntjb25ufSA9ICRjb25uOw0KPiArDQo+ICsJICAgIG15ICRyZXBseV9l cnIgPSBzdWIgew0KPiArCQlteSAoJG1zZykgPSBAXzsNCj4gKw0KPiArCQlteSAkcmVwbHkgPSBK U09OOjplbmNvZGVfanNvbih7DQo+ICsJCSAgICBzdWNjZXNzID0+IEpTT046OmZhbHNlLA0KPiAr CQkgICAgbXNnID0+ICRtc2csDQo+ICsJCX0pOw0KPiArCQkkY29ubi0+cHJpbnQoIiRyZXBseVxu Iik7DQo+ICsJCSRjb25uLT5mbHVzaCgpOw0KPiArCSAgICB9Ow0KPiArDQo+ICsJICAgIG15ICRy ZXBseV9vayA9IHN1YiB7DQo+ICsJCW15ICgkcmVzKSA9IEBfOw0KPiArDQo+ICsJCSRyZXMtPntz dWNjZXNzfSA9IEpTT046OnRydWU7DQo+ICsJCW15ICRyZXBseSA9IEpTT046OmVuY29kZV9qc29u KCRyZXMpOw0KPiArCQkkY29ubi0+cHJpbnQoIiRyZXBseVxuIik7DQo+ICsJCSRjb25uLT5mbHVz aCgpOw0KPiArCSAgICB9Ow0KPiArDQo+ICsJICAgIHdoaWxlIChteSAkbGluZSA9IDwkY29ubj4p IHsNCj4gKwkJY2hvbXAgJGxpbmU7DQo+ICsNCj4gKwkJIyB1bnRhaW50LCB3ZSB2YWxpZGF0ZSBi ZWxvdyBpZiBuZWVkZWQNCj4gKwkJKCRsaW5lKSA9ICRsaW5lID1+IC9eKC4qKSQvOw0KPiArCQlt eSAkcGFyc2VkID0gZXZhbCB7IEpTT046OmRlY29kZV9qc29uKCRsaW5lKSB9Ow0KPiArCQlpZiAo JEApIHsNCj4gKwkJICAgICRyZXBseV9lcnItPigiZmFpbGVkIHRvIHBhcnNlIGNvbW1hbmQgLSAk QCIpOw0KPiArCQkgICAgbmV4dDsNCj4gKwkJfQ0KPiArDQo+ICsJCW15ICRjbWQgPSBkZWxldGUg JHBhcnNlZC0+e2NtZH07DQo+ICsJCWlmICghZGVmaW5lZCgkY21kKSkgew0KPiArCQkgICAgJHJl cGx5X2Vyci0+KCInY21kJyBtaXNzaW5nIik7DQo+ICsJCX0gZWxzaWYgKCRzdGF0ZS0+e2V4aXR9 KSB7DQo+ICsJCSAgICAkcmVwbHlfZXJyLT4oInR1bm5lbCBpcyBpbiBleGl0LW1vZGUsIHByb2Nl c3NpbmcgJyRjbWQnIGNtZCBub3QgcG9zc2libGUiKTsNCj4gKwkJICAgIG5leHQ7DQo+ICsJCX0g ZWxzaWYgKG15ICRoYW5kbGVyID0gJGNtZF9oYW5kbGVycy0+eyRjbWR9KSB7DQo+ICsJCSAgICBw cmludCAicmVjZWl2ZWQgY29tbWFuZCAnJGNtZCdcbiI7DQo+ICsJCSAgICBldmFsIHsNCj4gKwkJ CWlmICgkY21kX2Rlc2MtPnskY21kfSkgew0KPiArCQkJICAgIFBWRTo6SlNPTlNjaGVtYTo6dmFs aWRhdGUoJGNtZF9kZXNjLT57JGNtZH0sICRwYXJzZWQpOw0KPiArCQkJfSBlbHNlIHsNCj4gKwkJ CSAgICAkcGFyc2VkID0ge307DQo+ICsJCQl9DQo+ICsJCQlteSAkcmVzID0gJHJ1bl9sb2NrZWQt PigkaGFuZGxlciwgJHBhcnNlZCk7DQo+ICsJCQkkcmVwbHlfb2stPigkcmVzKTsNCj4gKwkJICAg IH07DQo+ICsJCSAgICAkcmVwbHlfZXJyLT4oImZhaWxlZCB0byBoYW5kbGUgJyRjbWQnIGNvbW1h bmQgLSAkQCIpDQo+ICsJCQlpZiAkQDsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJICAgICRyZXBseV9l cnItPigidW5rbm93biBjb21tYW5kICckY21kJyBnaXZlbiIpOw0KPiArCQl9DQo+ICsJICAgIH0N Cj4gKw0KPiArCSAgICBpZiAoJHN0YXRlLT57ZXhpdH0pIHsNCj4gKwkJcHJpbnQgIm10dW5uZWwg ZXhpdGVkXG4iOw0KPiArCSAgICB9IGVsc2Ugew0KPiArCQlkaWUgIm10dW5uZWwgZXhpdGVkIHVu ZXhwZWN0ZWRseVxuIjsNCj4gKwkgICAgfQ0KPiArCX07DQo+ICsNCj4gKwlteSAkc29ja2V0X2Fk ZHIgPSAiL3J1bi9xZW11LXNlcnZlci8kdm1pZC5tdHVubmVsIjsNCj4gKwlteSAkdGlja2V0ID0g UFZFOjpBY2Nlc3NDb250cm9sOjphc3NlbWJsZV90dW5uZWxfdGlja2V0KCRhdXRodXNlciwgIi9z b2NrZXQvJHNvY2tldF9hZGRyIik7DQo+ICsJbXkgJHVwaWQgPSAkcnBjZW52LT5mb3JrX3dvcmtl cigncW10dW5uZWwnLCAkdm1pZCwgJGF1dGh1c2VyLCAkcmVhbGNtZCk7DQo+ICsNCj4gKwlyZXR1 cm4gew0KPiArCSAgICB0aWNrZXQgPT4gJHRpY2tldCwNCj4gKwkgICAgdXBpZCA9PiAkdXBpZCwN Cj4gKwkgICAgc29ja2V0ID0+ICRzb2NrZXRfYWRkciwNCj4gKwl9Ow0KPiArICAgIH19KTsNCj4g Kw0KPiArX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCh7DQo+ICsgICAgbmFtZSA9PiAnbXR1 bm5lbHdlYnNvY2tldCcsDQo+ICsgICAgcGF0aCA9PiAne3ZtaWR9L210dW5uZWx3ZWJzb2NrZXQn LA0KPiArICAgIG1ldGhvZCA9PiAnR0VUJywNCj4gKyAgICBwZXJtaXNzaW9ucyA9PiB7DQo+ICsJ ZGVzY3JpcHRpb24gPT4gIllvdSBuZWVkIHRvIHBhc3MgYSB0aWNrZXQgdmFsaWQgZm9yIHRoZSBz ZWxlY3RlZCBzb2NrZXQuIFRpY2tldHMgY2FuIGJlIGNyZWF0ZWQgdmlhIHRoZSBtdHVubmVsIEFQ SSBjYWxsLCB3aGljaCB3aWxsIGNoZWNrIHBlcm1pc3Npb25zIGFjY29yZGluZ2x5LiIsDQo+ICsg ICAgICAgIHVzZXIgPT4gJ2FsbCcsICMgY2hlY2sgaW5zaWRlDQo+ICsgICAgfSwNCj4gKyAgICBk ZXNjcmlwdGlvbiA9PiAnTWlncmF0aW9uIHR1bm5lbCBlbmRwb2ludCBmb3Igd2Vic29ja2V0IHVw Z3JhZGUgLSBvbmx5IGZvciBpbnRlcm5hbCB1c2UgYnkgVk0gbWlncmF0aW9uLicsDQo+ICsgICAg cGFyYW1ldGVycyA9PiB7DQo+ICsJYWRkaXRpb25hbFByb3BlcnRpZXMgPT4gMCwNCj4gKwlwcm9w ZXJ0aWVzID0+IHsNCj4gKwkgICAgbm9kZSA9PiBnZXRfc3RhbmRhcmRfb3B0aW9uKCdwdmUtbm9k ZScpLA0KPiArCSAgICB2bWlkID0+IGdldF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS12bWlkJyksDQo+ ICsJICAgIHNvY2tldCA9PiB7DQo+ICsJCXR5cGUgPT4gInN0cmluZyIsDQo+ICsJCWRlc2NyaXB0 aW9uID0+ICJ1bml4IHNvY2tldCB0byBmb3J3YXJkIHRvIiwNCj4gKwkgICAgfSwNCj4gKwkgICAg dGlja2V0ID0+IHsNCj4gKwkJdHlwZSA9PiAic3RyaW5nIiwNCj4gKwkJZGVzY3JpcHRpb24gPT4g InRpY2tldCByZXR1cm4gYnkgaW5pdGlhbCAnbXR1bm5lbCcgQVBJIGNhbGwsIG9yIHJldHJpZXZl ZCB2aWEgJ3RpY2tldCcgdHVubmVsIGNvbW1hbmQiLA0KPiArCSAgICB9LA0KPiArCX0sDQo+ICsg ICAgfSwNCj4gKyAgICByZXR1cm5zID0+IHsNCj4gKwl0eXBlID0+ICJvYmplY3QiLA0KPiArCXBy b3BlcnRpZXMgPT4gew0KPiArCSAgICBwb3J0ID0+IHsgdHlwZSA9PiAnc3RyaW5nJywgb3B0aW9u YWwgPT4gMSB9LA0KPiArCSAgICBzb2NrZXQgPT4geyB0eXBlID0+ICdzdHJpbmcnLCBvcHRpb25h bCA9PiAxIH0sDQo+ICsJfSwNCj4gKyAgICB9LA0KPiArICAgIGNvZGUgPT4gc3ViIHsNCj4gKwlt eSAoJHBhcmFtKSA9IEBfOw0KPiArDQo+ICsJbXkgJHJwY2VudiA9IFBWRTo6UlBDRW52aXJvbm1l bnQ6OmdldCgpOw0KPiArCW15ICRhdXRodXNlciA9ICRycGNlbnYtPmdldF91c2VyKCk7DQo+ICsN Cj4gKwlteSAkbm9kZW5hbWUgPSBQVkU6OklOb3RpZnk6Om5vZGVuYW1lKCk7DQo+ICsJbXkgJG5v ZGUgPSBleHRyYWN0X3BhcmFtKCRwYXJhbSwgJ25vZGUnKTsNCj4gKw0KPiArCXJhaXNlX3BhcmFt X2V4Yyh7IG5vZGUgPT4gIm5vZGUgbmVlZHMgdG8gYmUgJ2xvY2FsaG9zdCcgb3IgbG9jYWwgaG9z dG5hbWUgJyRub2RlbmFtZSciIH0pDQo+ICsJICAgIGlmICRub2RlIG5lICdsb2NhbGhvc3QnICYm ICRub2RlIG5lICRub2RlbmFtZTsNCj4gKw0KPiArCW15ICR2bWlkID0gJHBhcmFtLT57dm1pZH07 DQo+ICsJIyBjaGVjayBWTSBleGlzdHMNCj4gKwlQVkU6OlFlbXVDb25maWctPmxvYWRfY29uZmln KCR2bWlkKTsNCj4gKw0KPiArCW15ICRzb2NrZXQgPSAkcGFyYW0tPntzb2NrZXR9Ow0KPiArCVBW RTo6QWNjZXNzQ29udHJvbDo6dmVyaWZ5X3R1bm5lbF90aWNrZXQoJHBhcmFtLT57dGlja2V0fSwg JGF1dGh1c2VyLCAiL3NvY2tldC8kc29ja2V0Iik7DQo+ICsNCj4gKwlyZXR1cm4geyBzb2NrZXQg PT4gJHNvY2tldCB9Ow0KPiArICAgIH19KTsNCj4gKw0KPiAgIDE7DQo+IGRpZmYgLS1naXQgYS9k ZWJpYW4vY29udHJvbCBiL2RlYmlhbi9jb250cm9sDQo+IGluZGV4IGE5MGVjZDZmLi5jZTQ2OWNi ZCAxMDA2NDQNCj4gLS0tIGEvZGViaWFuL2NvbnRyb2wNCj4gKysrIGIvZGViaWFuL2NvbnRyb2wN Cj4gQEAgLTMzLDcgKzMzLDcgQEAgRGVwZW5kczogZGJ1cywNCj4gICAgICAgICAgICBsaWJqc29u LXBlcmwsDQo+ICAgICAgICAgICAgbGlianNvbi14cy1wZXJsLA0KPiAgICAgICAgICAgIGxpYm5l dC1zc2xlYXktcGVybCwNCj4gLSAgICAgICAgIGxpYnB2ZS1hY2Nlc3MtY29udHJvbCAoPj0gNS4w LTcpLA0KPiArICAgICAgICAgbGlicHZlLWFjY2Vzcy1jb250cm9sICg+PSA3LjAtNyksDQo+ICAg ICAgICAgICAgbGlicHZlLWNsdXN0ZXItcGVybCwNCj4gICAgICAgICAgICBsaWJwdmUtY29tbW9u LXBlcmwgKD49IDcuMS00KSwNCj4gICAgICAgICAgICBsaWJwdmUtZ3Vlc3QtY29tbW9uLXBlcmwg KD49IDQuMS0xKSwNCg0K