From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 87EB81FF16E for ; Tue, 29 Oct 2024 15:58:58 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A39208860; Tue, 29 Oct 2024 15:59:01 +0100 (CET) Mime-Version: 1.0 Date: Tue, 29 Oct 2024 15:58:25 +0100 Message-Id: To: "Proxmox Backup Server development discussion" From: "Hannes Laimer" X-Mailer: aerc 0.18.2-63-gf2d413e8dedd References: <20240904141155.350454-1-h.laimer@proxmox.com> <20240904141155.350454-8-h.laimer@proxmox.com> <1728907855.3hw8kydnft.astroid@yuna.none> In-Reply-To: <1728907855.3hw8kydnft.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.385 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox-backup v12 07/26] api: admin: add (un)mount endpoint for removable datastores X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" T24gTW9uIE9jdCAxNCwgMjAyNCBhdCAzOjQyIFBNIENFU1QsIEZhYmlhbiBHcsO8bmJpY2hsZXIg d3JvdGU6Cj4gT24gU2VwdGVtYmVyIDQsIDIwMjQgNDoxMSBwbSwgSGFubmVzIExhaW1lciB3cm90 ZToKPiA+IFNpZ25lZC1vZmYtYnk6IEhhbm5lcyBMYWltZXIgPGgubGFpbWVyQHByb3htb3guY29t Pgo+ID4gLS0tCj4gPiAgcGJzLWFwaS10eXBlcy9zcmMvbWFpbnRlbmFuY2UucnMgfCAgIDQgKwo+ ID4gIHNyYy9hcGkyL2FkbWluL2RhdGFzdG9yZS5ycyAgICAgIHwgMjQzICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDIzNyBpbnNlcnRpb25zKCsp LCAxMCBkZWxldGlvbnMoLSkKPgo+IGEgcHJldHR5IHN1YnN0YW50aWFsIHBhdGNoIC0gbm8gY29t bWl0IG1lc3NhZ2UgYXQgYWxsPz8KPgo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvcGJzLWFwaS10eXBl cy9zcmMvbWFpbnRlbmFuY2UucnMgYi9wYnMtYXBpLXR5cGVzL3NyYy9tYWludGVuYW5jZS5ycwo+ ID4gaW5kZXggOWY1MTI5MmUuLjYwMTgxMjU4IDEwMDY0NAo+ID4gLS0tIGEvcGJzLWFwaS10eXBl cy9zcmMvbWFpbnRlbmFuY2UucnMKPiA+ICsrKyBiL3Bicy1hcGktdHlwZXMvc3JjL21haW50ZW5h bmNlLnJzCj4gPiBAQCAtNzgsNiArNzgsMTAgQEAgcHViIHN0cnVjdCBNYWludGVuYW5jZU1vZGUg ewo+ID4gIH0KPiA+ICAKPiA+ICBpbXBsIE1haW50ZW5hbmNlTW9kZSB7Cj4gPiArICAgIHB1YiBm biBuZXcodHk6IE1haW50ZW5hbmNlVHlwZSwgbWVzc2FnZTogT3B0aW9uPFN0cmluZz4pIC0+IFNl bGYgewo+ID4gKyAgICAgICAgU2VsZiB7IHR5LCBtZXNzYWdlIH0KPiA+ICsgICAgfQo+ID4gKwo+ Cj4gbml0OiBpZiB3ZSB3YW50IHRoaXMsIGl0IHNob3VsZCBiZSBpbiBpdHMgb3duIHBhdGNoIGFu ZCBjb252ZXJ0IGV4aXN0aW5nCj4gY29uc3RydWN0aW9ucyBhcyB3ZWxsLi4gb3IgdGhpcyBjb3Vs ZCBiZSBkcm9wcGVkIGFuZCB0aGUgY2FsbCB0byBgbmV3YAo+IGJlbG93IGNvdWxkIGp1c3QgaW5p dCB0aGUgc3RydWN0Li4KPgo+ID4gICAgICAvLy8gVXNlZCBmb3IgZGVjaWRpbmcgd2hldGhlciB0 aGUgZGF0YXN0b3JlIGlzIGNsZWFyZWQgZnJvbSB0aGUgaW50ZXJuYWwgY2FjaGUgYWZ0ZXIgdGhl IGxhc3QKPiA+ICAgICAgLy8vIHRhc2sgZmluaXNoZXMsIHNvIGFsbCBvcGVuIGZpbGVzIGFyZSBj bG9zZWQuCj4gPiAgICAgIHB1YiBmbiBpc19vZmZsaW5lKCZzZWxmKSAtPiBib29sIHsKPiA+IGRp ZmYgLS1naXQgYS9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMgYi9zcmMvYXBpMi9hZG1pbi9k YXRhc3RvcmUucnMKPiA+IGluZGV4IDk3NjYxN2Q5Li4zYzk1ODg4ZCAxMDA2NDQKPiA+IC0tLSBh L3NyYy9hcGkyL2FkbWluL2RhdGFzdG9yZS5ycwo+ID4gKysrIGIvc3JjL2FwaTIvYWRtaW4vZGF0 YXN0b3JlLnJzCj4gPiBAQCAtMyw3ICszLDcgQEAKPiA+ICB1c2Ugc3RkOjpjb2xsZWN0aW9uczo6 SGFzaFNldDsKPiA+ICB1c2Ugc3RkOjpmZmk6Ok9zU3RyOwo+ID4gIHVzZSBzdGQ6Om9zOjp1bml4 OjpmZmk6Ok9zU3RyRXh0Owo+ID4gLXVzZSBzdGQ6OnBhdGg6OlBhdGhCdWY7Cj4gPiArdXNlIHN0 ZDo6cGF0aDo6e1BhdGgsIFBhdGhCdWZ9Owo+ID4gIHVzZSBzdGQ6OnN5bmM6OkFyYzsKPiA+ICAK PiA+ICB1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9Owo+ID4gQEAgLTEzLDcg KzEzLDcgQEAgdXNlIGh5cGVyOjp7aGVhZGVyLCBCb2R5LCBSZXNwb25zZSwgU3RhdHVzQ29kZX07 Cj4gPiAgdXNlIHNlcmRlOjpEZXNlcmlhbGl6ZTsKPiA+ICB1c2Ugc2VyZGVfanNvbjo6e2pzb24s IFZhbHVlfTsKPiA+ICB1c2UgdG9raW9fc3RyZWFtOjp3cmFwcGVyczo6UmVjZWl2ZXJTdHJlYW07 Cj4gPiAtdXNlIHRyYWNpbmc6OntpbmZvLCB3YXJufTsKPiA+ICt1c2UgdHJhY2luZzo6e2RlYnVn LCBpbmZvLCB3YXJufTsKPiA+ICAKPiA+ICB1c2UgcHJveG1veF9hc3luYzo6YmxvY2tpbmc6Oldy YXBwZWRSZWFkZXJTdHJlYW07Cj4gPiAgdXNlIHByb3htb3hfYXN5bmM6Ontpbzo6QXN5bmNDaGFu bmVsV3JpdGVyLCBzdHJlYW06OkFzeW5jUmVhZGVyU3RyZWFtfTsKPiA+IEBAIC0yOSw2ICsyOSw3 IEBAIHVzZSBwcm94bW94X3N5czo6ZnM6OnsKPiA+ICAgICAgZmlsZV9yZWFkX2ZpcnN0bGluZSwg ZmlsZV9yZWFkX29wdGlvbmFsX3N0cmluZywgcmVwbGFjZV9maWxlLCBDcmVhdGVPcHRpb25zLAo+ ID4gIH07Cj4gPiAgdXNlIHByb3htb3hfdGltZTo6Q2FsZW5kYXJFdmVudDsKPiA+ICt1c2UgcHJv eG1veF93b3JrZXJfdGFzazo6V29ya2VyVGFza0NvbnRleHQ7Cj4gPiAgCj4gPiAgdXNlIHB4YXI6 OmFjY2Vzc29yOjphaW86OkFjY2Vzc29yOwo+ID4gIHVzZSBweGFyOjpFbnRyeUtpbmQ7Cj4gPiBA QCAtMzYsMTIgKzM3LDEyIEBAIHVzZSBweGFyOjpFbnRyeUtpbmQ7Cj4gPiAgdXNlIHBic19hcGlf dHlwZXM6OnsKPiA+ICAgICAgcHJpbnRfbnNfYW5kX3NuYXBzaG90LCBwcmludF9zdG9yZV9hbmRf bnMsIEF1dGhpZCwgQmFja3VwQ29udGVudCwgQmFja3VwTmFtZXNwYWNlLCBCYWNrdXBUeXBlLAo+ ID4gICAgICBDb3VudHMsIENyeXB0TW9kZSwgRGF0YVN0b3JlQ29uZmlnLCBEYXRhU3RvcmVMaXN0 SXRlbSwgRGF0YVN0b3JlU3RhdHVzLAo+ID4gLSAgICBHYXJiYWdlQ29sbGVjdGlvbkpvYlN0YXR1 cywgR3JvdXBMaXN0SXRlbSwgSm9iU2NoZWR1bGVTdGF0dXMsIEtlZXBPcHRpb25zLCBPcGVyYXRp b24sCj4gPiAtICAgIFBydW5lSm9iT3B0aW9ucywgU25hcHNob3RMaXN0SXRlbSwgU25hcHNob3RW ZXJpZnlTdGF0ZSwgQkFDS1VQX0FSQ0hJVkVfTkFNRV9TQ0hFTUEsCj4gPiAtICAgIEJBQ0tVUF9J RF9TQ0hFTUEsIEJBQ0tVUF9OQU1FU1BBQ0VfU0NIRU1BLCBCQUNLVVBfVElNRV9TQ0hFTUEsIEJB Q0tVUF9UWVBFX1NDSEVNQSwKPiA+IC0gICAgREFUQVNUT1JFX1NDSEVNQSwgSUdOT1JFX1ZFUklG SUVEX0JBQ0tVUFNfU0NIRU1BLCBNQVhfTkFNRVNQQUNFX0RFUFRILCBOU19NQVhfREVQVEhfU0NI RU1BLAo+ID4gLSAgICBQUklWX0RBVEFTVE9SRV9BVURJVCwgUFJJVl9EQVRBU1RPUkVfQkFDS1VQ LCBQUklWX0RBVEFTVE9SRV9NT0RJRlksIFBSSVZfREFUQVNUT1JFX1BSVU5FLAo+ID4gLSAgICBQ UklWX0RBVEFTVE9SRV9SRUFELCBQUklWX0RBVEFTVE9SRV9WRVJJRlksIFVQSUQsIFVQSURfU0NI RU1BLAo+ID4gKyAgICBHYXJiYWdlQ29sbGVjdGlvbkpvYlN0YXR1cywgR3JvdXBMaXN0SXRlbSwg Sm9iU2NoZWR1bGVTdGF0dXMsIEtlZXBPcHRpb25zLCBNYWludGVuYW5jZU1vZGUsCj4gPiArICAg IE1haW50ZW5hbmNlVHlwZSwgT3BlcmF0aW9uLCBQcnVuZUpvYk9wdGlvbnMsIFNuYXBzaG90TGlz dEl0ZW0sIFNuYXBzaG90VmVyaWZ5U3RhdGUsCj4gPiArICAgIEJBQ0tVUF9BUkNISVZFX05BTUVf U0NIRU1BLCBCQUNLVVBfSURfU0NIRU1BLCBCQUNLVVBfTkFNRVNQQUNFX1NDSEVNQSwgQkFDS1VQ X1RJTUVfU0NIRU1BLAo+ID4gKyAgICBCQUNLVVBfVFlQRV9TQ0hFTUEsIERBVEFTVE9SRV9TQ0hF TUEsIElHTk9SRV9WRVJJRklFRF9CQUNLVVBTX1NDSEVNQSwgTUFYX05BTUVTUEFDRV9ERVBUSCwK PiA+ICsgICAgTlNfTUFYX0RFUFRIX1NDSEVNQSwgUFJJVl9EQVRBU1RPUkVfQVVESVQsIFBSSVZf REFUQVNUT1JFX0JBQ0tVUCwgUFJJVl9EQVRBU1RPUkVfTU9ESUZZLAo+ID4gKyAgICBQUklWX0RB VEFTVE9SRV9QUlVORSwgUFJJVl9EQVRBU1RPUkVfUkVBRCwgUFJJVl9EQVRBU1RPUkVfVkVSSUZZ LCBVUElELCBVUElEX1NDSEVNQSwKPiA+ICAgICAgVkVSSUZJQ0FUSU9OX09VVERBVEVEX0FGVEVS X1NDSEVNQSwKPiA+ICB9Owo+ID4gIHVzZSBwYnNfY2xpZW50OjpweGFyOjp7Y3JlYXRlX3Rhciwg Y3JlYXRlX3ppcH07Cj4gPiBAQCAtNTcsOCArNTgsOCBAQCB1c2UgcGJzX2RhdGFzdG9yZTo6aW5k ZXg6OkluZGV4RmlsZTsKPiA+ICB1c2UgcGJzX2RhdGFzdG9yZTo6bWFuaWZlc3Q6OntCYWNrdXBN YW5pZmVzdCwgQ0xJRU5UX0xPR19CTE9CX05BTUUsIE1BTklGRVNUX0JMT0JfTkFNRX07Cj4gPiAg dXNlIHBic19kYXRhc3RvcmU6OnBydW5lOjpjb21wdXRlX3BydW5lX2luZm87Cj4gPiAgdXNlIHBi c19kYXRhc3RvcmU6OnsKPiA+IC0gICAgY2hlY2tfYmFja3VwX293bmVyLCB0YXNrX3RyYWNraW5n LCBCYWNrdXBEaXIsIEJhY2t1cEdyb3VwLCBEYXRhU3RvcmUsIExvY2FsQ2h1bmtSZWFkZXIsCj4g PiAtICAgIFN0b3JlUHJvZ3Jlc3MsIENBVEFMT0dfTkFNRSwKPiA+ICsgICAgY2hlY2tfYmFja3Vw X293bmVyLCBpc19kYXRhc3RvcmVfYXZhaWxhYmxlLCB0YXNrX3RyYWNraW5nLCBCYWNrdXBEaXIs IEJhY2t1cEdyb3VwLCBEYXRhU3RvcmUsCj4gPiArICAgIExvY2FsQ2h1bmtSZWFkZXIsIFN0b3Jl UHJvZ3Jlc3MsIENBVEFMT0dfTkFNRSwKPiA+ICB9Owo+ID4gIHVzZSBwYnNfdG9vbHM6Ompzb246 OnJlcXVpcmVkX3N0cmluZ19wYXJhbTsKPiA+ICB1c2UgcHJveG1veF9yZXN0X3NlcnZlcjo6e2Zv cm1hdHRlciwgV29ya2VyVGFza307Cj4gPiBAQCAtMjM4NCw2ICsyMzg1LDIyNiBAQCBwdWIgYXN5 bmMgZm4gc2V0X2JhY2t1cF9vd25lcigKPiA+ICAgICAgLmF3YWl0Pwo+ID4gIH0KPiA+ICAKPiA+ ICsvLy8gSGVyZSB3ZQo+ID4gKy8vLwo+ID4gKy8vLyAxLiBtb3VudCB0aGUgcmVtb3ZhYmxlIGRl dmljZSB0byBgPFBCU19SVU5fRElSPi9tb3VudC88UkFORE9NX1VVSUQ+YAo+ID4gKy8vLyAyLiBi aW5kIG1vdW50IGA8UEJTX1JVTl9ESVI+L21vdW50LzxSQU5ET01fVVVJRD4vPGRhdGFzdG9yZS5w YXRoPmAgdG8gYC9tbnQvZGF0YXN0b3JlLzxkYXRhc3RvcmUubmFtZT5gCj4gPiArLy8vIDMuIHVu bW91bnQgYDxQQlNfUlVOX0RJUj4vbW91bnQvPFJBTkRPTV9VVUlEPmAKPgo+IGNvdWxkbid0IHdl IGluc3RlYWQgbW91bnQgZGlyZWN0bHksIGFuZCBhZGFwdCBnZXRfYWJzb2x1dGVfcGF0aCB0bwo+ IHJldHVybiAvbW50L2RhdGFzdG9yZS97ZGF0YXN0b3JlLm5hbWV9L3tkYXRhc3RvcmUucGF0aH0g Pwo+CgpidXQgdGhlbiB3ZSB3b3VsZCBlaXRoZXIgbW91bnQgYWxsLCBvciBub25lLCBvZiB0aGUg ZGF0YXN0b3JlcyBvbiB0aGUKZGV2aWNlLgoKPiB0aGUgImNvbmN1cnJlbnQgbW91bnRzIiBjYW4g YmUgc29sdmVkIGJ5IGxvY2tpbmcgKHVzaW5nIHRoZSBVVUlEIG9yCj4gZGF0YXN0b3JlIG5hbWUg YXMgbG9jayBzY29wZSkgb3IgYnkgZ29pbmcgdmlhIGEgTW91bnQgbWFpbnRlbmFuY2UgbW9kZS4u Cj4KCnllcywgSSdtIGp1c3Qgbm90IHN1cmUgdGhhdCBsb2NraW5nIHJlYWxseSBhZGRzIHNvbWV0 aGluZy4gV2UKY2FuIG1vdW50IGluIHBhcmFsZWxsLCB3ZSBqdXN0IGhhdmUgdG8gbWFrZSBzdXJl IHdlIGRvbid0IHVzZSB0aGUgc2FtZSB0bXAKZGlyIG5hbWUgZm9yIGl0LgoKPiBzZWVtcyB0byBt ZSBsaWtlIHRoZXJlJ3MgYSBsb3QgbGVzcyB0aGF0IGNvdWxkIGdvIHdyb25nL2ZhaWwgaW4gdGhh dAo+IGNhc2U/IGJ1dCBtYXliZSBJIGFtIG1pc3Npbmcgc29tZSBiYWNrZ3JvdW5kIHRoYXQgc2hv dWxkIGhhdmUgYmVlbiBpbgo+IHRoZSBjb21taXQgbWVzc2FnZSA7KQo+Cgptb3N0IG9mIHdoYXQg Y2FuIGdvIHdyb25nIGNvbWVzIGZyb20gbmVlZGluZyBhIGJ1bmNoIG9mIHRtcCB0aGluZ3MgYW5k CnRoZSAoYmluZCkgbW91bnRpbmcgdGhhdCBoYXBwZW5zLCB0aGF0IHdvdWxkIHN0aWxsIGhhcHBl biwgZXZlbgpub24tY29uY3VycmVudGx5LgoKPiBpZiBJIHRoaW5rIG9mIHRoZSBzZW1hbnRpY3Mg b2YgInJlbW92YWJsZSBkYXRhc3RvcmVzIiwgdGhlbiBpZiB3ZSB3YW50Cj4gdG8gc3VwcG9ydCBt dWx0aXBsZSBzdWNoIGRhdGFzdG9yZXMgb24gYSBzaW5nbGUgZGV2aWNlIChhdCBsZWFzdCBhcyBh bgo+IG9wdGlvbiBpbiB0aGUgZnV0dXJlKSwgdGhlbiB1bm1vdW50aW5nIG9ubHkgbWFrZXMgc2Vu c2Ugd2hlbiB0aGlua2luZyBvZgo+IHRoZSBiYWNraW5nIGRldmljZSAoYWZ0ZXIgYWxsLCBJIHdh bnQgdG8gdW5tb3VudCB0byB1bnBsdWcgaXQsIGFuZCBJCj4gZG9uJ3Qgd2FudCB0byBkbyB0aGF0 IDEwIHRpbWVzIGlmIHRoZSBiYWNraW5nIGRldmljZXMgY29udGFpbnMgMTAKPiBkYXRhc3RvcmVz LCBhbmQga2VlcCB0cmFjayBvZiB0aGVtIGFsbCwgYW5kIGVuc3VyZSBub3RoaW5nIG1vdW50cyB0 aGVtCj4gYWdhaW4gaW4gdGhlIG1lYW50aW1lLCAuLikuLiBzbyBvbmx5IG1vdW50aW5nIGl0IG9u Y2UgaW4gdGhlIGZpcnN0IHBsYWNlCj4gKGFuZCBwb2ludGluZyB0aGUgZGF0YXN0b3JlIGF0IHRo ZSByZWxldmFudCBzdWJkaXIgb2YgdGhlIG1vdW50cG9pbnQpCj4gc2VlbXMgbGlrZSB0aGUgYmV0 dGVyIG9wdGlvbj8KPgoKV2UgY291bGQgbm90IGF1dG8gbW91bnQgaWYgYSBkZXZpY2UgdGhhdCBj b250YWlucyBtdWx0aXBsZSBkYXRhc3RvcmVzLCBzbwp3aGF0IHNvbWVvbmUgbW91bnRlZCB0aGV5 IGFsc28gaGF2ZSB0byB1bm1vdW50LiBJIGZlZWwgbGlrZSBjbGlja2luZwoidW5tb3VudCIgb24g b25lIGRhdGFzdG9yZSBhbmQgNCBvdGhlciBvbmVzIGFsc28gZW5kIHVwIHVuLW1vdW50ZWQgaXMK bm90IHJlYWxseSBzb21ldGhpbmcgSSdkIGV4cGVjdCwgYWxzbyB3ZSdkIGhhdmUgdG8gdHJhY2sg YWN0aXZlCm9wZXJhdGlvbnMgb24gYWxsIG9mIHRoZW0gd2hlbiB1bm91bnRpbmcsIHdoaWNoIHdl IGNhbiBkbywgYnV0IGlkay4uLgpUaGlzIGNvdWxkIG1ha2Ugc2Vuc2UgaWYgd2UgaGFkIHRoZSBu b3Rpb24gb2YgYSBkZXZpY2UsIGFuZCB1bm1vdW50aW5nCnRoZSBkZWl2Y2UgdW5tb3VudHMgYWxs IHRoaXMgZGF0YXN0b3JlcywgYnV0IEkgZG9uJ3QgdGhpbmsgdGhhdCBpcyB3aGF0IHdlIHdhbnQu Cgo+ID4gKy8vLwo+ID4gKy8vLyBsZWF2aW5nIHVzIHdpdGggdGhlIGRhdGFzdG9yZSBiZWluZyBt b3VudGVkIGRpcmVjdGx5IHdpdGggaXRzIG5hbWUgdW5kZXIgL21udC9kYXRhc3RvcmUvLi4uCj4g PiArLy8vCj4gPiArLy8vIFRoZSByZWFzb24gZm9yIHRoZSByYW5kb21pemVkIGRldmljZSBtb3Vu dGluZyBwYXRocyBpcyB0byBhdm9pZCB0d28gdGFza3MgdHJ5aW5nIHRvIG1vdW50IHRvCj4gPiAr Ly8vIHRoZSBzYW1lIHBhdGgsIHRoaXMgaXMgKnZlcnkqIHVubGlrZWx5IHNpbmNlIHRoZSBkZXZp Y2UgaXMgb25seSBtb3VudGVkIHJlYWxseSBzaG9ydGx5LCBidXQKPiA+ICsvLy8gdGVjaG5pY2Fs bHkgcG9zc2libGUuCj4gPiArcHViIGZuIGRvX21vdW50X2RldmljZShkYXRhc3RvcmU6IERhdGFT dG9yZUNvbmZpZykgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ID4gKyAgICBpZiBsZXQgKFNvbWUo dXVpZCksIFNvbWUobW91bnRfcG9pbnQpKSA9ICgKPiA+ICsgICAgICAgIGRhdGFzdG9yZS5iYWNr aW5nX2RldmljZS5hc19yZWYoKSwKPiA+ICsgICAgICAgIGRhdGFzdG9yZS5nZXRfbW91bnRfcG9p bnQoKSwKPiA+ICsgICAgKSB7Cj4gPiArICAgICAgICBpZiBwYnNfZGF0YXN0b3JlOjppc19kYXRh c3RvcmVfYXZhaWxhYmxlKCZkYXRhc3RvcmUpIHsKPiA+ICsgICAgICAgICAgICBiYWlsISgiZGF0 YXN0b3JlICd7fScgaXMgYWxyZWFkeSBtb3VudGVkIiwgZGF0YXN0b3JlLm5hbWUpOwo+ID4gKyAg ICAgICAgfQo+ID4gKyAgICAgICAgbGV0IHRtcF9tb3VudF9wYXRoID0gZm9ybWF0ISgKPiA+ICsg ICAgICAgICAgICAie30vezp4fSIsCj4gPiArICAgICAgICAgICAgcGJzX2J1aWxkY2ZnOjpydW5k aXIhKCIvbW91bnQiKSwKPiA+ICsgICAgICAgICAgICBwcm94bW94X3V1aWQ6OlV1aWQ6OmdlbmVy YXRlKCkKPiA+ICsgICAgICAgICk7Cj4gPiArCj4gPiArICAgICAgICBsZXQgZGVmYXVsdF9vcHRp b25zID0gcHJveG1veF9zeXM6OmZzOjpDcmVhdGVPcHRpb25zOjpuZXcoKTsKPiA+ICsgICAgICAg IHByb3htb3hfc3lzOjpmczo6Y3JlYXRlX3BhdGgoCj4gPiArICAgICAgICAgICAgJnRtcF9tb3Vu dF9wYXRoLAo+ID4gKyAgICAgICAgICAgIFNvbWUoZGVmYXVsdF9vcHRpb25zLmNsb25lKCkpLAo+ ID4gKyAgICAgICAgICAgIFNvbWUoZGVmYXVsdF9vcHRpb25zLmNsb25lKCkpLAo+ID4gKyAgICAg ICAgKT87Cj4gPiArCj4gPiArICAgICAgICBkZWJ1ZyEoIm1vdW50aW5nICd7dXVpZH0nIHRvICd7 fSciLCB0bXBfbW91bnRfcGF0aCk7Cj4gPiArICAgICAgICBjcmF0ZTo6dG9vbHM6OmRpc2tzOjpt b3VudF9ieV91dWlkKHV1aWQsIFBhdGg6Om5ldygmdG1wX21vdW50X3BhdGgpKT87Cj4gPiArCj4g PiArICAgICAgICBsZXQgZnVsbF9zdG9yZV9wYXRoID0gZm9ybWF0ISgKPiA+ICsgICAgICAgICAg ICAie3RtcF9tb3VudF9wYXRofS97fSIsCj4gPiArICAgICAgICAgICAgZGF0YXN0b3JlLnBhdGgu dHJpbV9zdGFydF9tYXRjaGVzKCcvJykKPiA+ICsgICAgICAgICk7Cj4gPiArCj4gPiArICAgICAg ICBwcm94bW94X3N5czo6ZnM6OmNyZWF0ZV9wYXRoKAo+ID4gKyAgICAgICAgICAgICZtb3VudF9w b2ludCwKPiA+ICsgICAgICAgICAgICBTb21lKGRlZmF1bHRfb3B0aW9ucy5jbG9uZSgpKSwKPiA+ ICsgICAgICAgICAgICBTb21lKGRlZmF1bHRfb3B0aW9ucy5jbG9uZSgpKSwKPiA+ICsgICAgICAg ICk/Owo+ID4gKwo+ID4gKyAgICAgICAgLy8gY2FuJ3QgYmUgY3JlYXRlZCBiZWZvcmUgaXQgaXMg bW91bnRlZCwgc28gd2UgaGF2ZSB0byBkbyBpdCBoZXJlCj4gPiArICAgICAgICBwcm94bW94X3N5 czo6ZnM6OmNyZWF0ZV9wYXRoKAo+ID4gKyAgICAgICAgICAgICZmdWxsX3N0b3JlX3BhdGgsCj4g PiArICAgICAgICAgICAgU29tZShkZWZhdWx0X29wdGlvbnMuY2xvbmUoKSksCj4gPiArICAgICAg ICAgICAgU29tZShkZWZhdWx0X29wdGlvbnMuY2xvbmUoKSksCj4gPiArICAgICAgICApPzsKPgo+ IHNob3VsZG4ndCB0aGlzIGNyZWF0ZV9wYXRoIGNhbGwgYmUgbGltaXRlZCB0byB0aGUgaW5pdGlh bCBjcmVhdGlvbiBvZgo+IHRoZSBkYXRhc3RvcmU/IGluIGFsbCBvdGhlciBjYXNlcyBpdCBzaG91 bGQgYWxyZWFkeSBiZSB0aGVyZS4uCj4KCndlJ2QgaGF2ZSB0byBjaGVjayBpZiBgLmNodW5rcy9g IGV4aXN0cyBmb3IgdGhhdCwgYW5kCmNyZWF0ZV9wYXRoIGFscmVhZHkga2luZCBvZiBkb2VzIHRo YXQuIEJ1dCBtYW51YWxseSBjaGVja2luZwppcyBwcm9iYWJseSBhIGxpdHRsZSBmYXN0ZXIoPykK Cj4gPiArCj4gPiArICAgICAgICBpbmZvISgKPiA+ICsgICAgICAgICAgICAibW91bnRpbmcgJ3t9 Jyh7fSkgdG8gJ3t9JyIsCj4gPiArICAgICAgICAgICAgZGF0YXN0b3JlLm5hbWUsIGRhdGFzdG9y ZS5wYXRoLCBtb3VudF9wb2ludAo+ID4gKyAgICAgICAgKTsKPiA+ICsgICAgICAgIGlmIGxldCBF cnIoZXJyKSA9Cj4gPiArICAgICAgICAgICAgY3JhdGU6OnRvb2xzOjpkaXNrczo6YmluZF9tb3Vu dChQYXRoOjpuZXcoJmZ1bGxfc3RvcmVfcGF0aCksIFBhdGg6Om5ldygmbW91bnRfcG9pbnQpKQo+ ID4gKyAgICAgICAgewo+ID4gKyAgICAgICAgICAgIGRlYnVnISgidW5tb3VudGluZyAne30nIiwg dG1wX21vdW50X3BhdGgpOwo+ID4gKyAgICAgICAgICAgIGxldCBfID0gY3JhdGU6OnRvb2xzOjpk aXNrczo6dW5tb3VudF9ieV9tb3VudHBvaW50KCZ0bXBfbW91bnRfcGF0aCk7Cj4gPiArICAgICAg ICAgICAgbGV0IF8gPSBzdGQ6OmZzOjpyZW1vdmVfZGlyKHN0ZDo6cGF0aDo6UGF0aDo6bmV3KCZ0 bXBfbW91bnRfcGF0aCkpOwo+ID4gKyAgICAgICAgICAgIHJldHVybiBFcnIoZm9ybWF0X2VyciEo Cj4gPiArICAgICAgICAgICAgICAgICJEYXRhc3RvcmUgJ3t9JyBjb3VuZCBub3QgYmUgbW91bnRl ZDoge30uIiwKPiA+ICsgICAgICAgICAgICAgICAgZGF0YXN0b3JlLm5hbWUsCj4gPiArICAgICAg ICAgICAgICAgIGVycgo+ID4gKyAgICAgICAgICAgICkpOwo+ID4gKyAgICAgICAgfQo+ID4gKwo+ ID4gKyAgICAgICAgZGVidWchKCJ1bm1vdW50aW5nICd7fSciLCB0bXBfbW91bnRfcGF0aCk7Cj4g PiArICAgICAgICBjcmF0ZTo6dG9vbHM6OmRpc2tzOjp1bm1vdW50X2J5X21vdW50cG9pbnQoJnRt cF9tb3VudF9wYXRoKT87Cj4gPiArICAgICAgICBzdGQ6OmZzOjpyZW1vdmVfZGlyKHN0ZDo6cGF0 aDo6UGF0aDo6bmV3KCZ0bXBfbW91bnRfcGF0aCkpPzsKPiA+ICsKPiA+ICsgICAgICAgIE9rKCgp KQo+ID4gKyAgICB9IGVsc2Ugewo+ID4gKyAgICAgICAgRXJyKGZvcm1hdF9lcnIhKAo+ID4gKyAg ICAgICAgICAgICJEYXRhc3RvcmUgJ3t9JyBjYW5ub3QgYmUgbW91bnRlZCBiZWNhdXNlIGl0IGlz IG5vdCByZW1vdmFibGUuIiwKPiA+ICsgICAgICAgICAgICBkYXRhc3RvcmUubmFtZQo+ID4gKyAg ICAgICAgKSkKPiA+ICsgICAgfQo+ID4gK30KPiA+ICsKPiA+ICsjW2FwaSgKPiA+ICsgICAgcHJv dGVjdGVkOiB0cnVlLAo+ID4gKyAgICBpbnB1dDogewo+ID4gKyAgICAgICAgcHJvcGVydGllczog ewo+ID4gKyAgICAgICAgICAgIHN0b3JlOiB7Cj4gPiArICAgICAgICAgICAgICAgIHNjaGVtYTog REFUQVNUT1JFX1NDSEVNQSwKPiA+ICsgICAgICAgICAgICB9LAo+ID4gKyAgICAgICAgfQo+ID4g KyAgICB9LAo+ID4gKyAgICByZXR1cm5zOiB7Cj4gPiArICAgICAgICBzY2hlbWE6IFVQSURfU0NI RU1BLAo+ID4gKyAgICB9LAo+ID4gKyAgICBhY2Nlc3M6IHsKPiA+ICsgICAgICAgIHBlcm1pc3Np b246ICZQZXJtaXNzaW9uOjpQcml2aWxlZ2UoJlsiZGF0YXN0b3JlIiwgIntzdG9yZX0iXSwgUFJJ Vl9EQVRBU1RPUkVfQVVESVQsIGZhbHNlKSwKPiA+ICsgICAgfSwKPiA+ICspXQo+ID4gKy8vLyBN b3VudCByZW1vdmFibGUgZGF0YXN0b3JlLgo+ID4gK3B1YiBmbiBtb3VudChzdG9yZTogU3RyaW5n LCBycGNlbnY6ICZtdXQgZHluIFJwY0Vudmlyb25tZW50KSAtPiBSZXN1bHQ8VmFsdWUsIEVycm9y PiB7Cj4gPiArICAgIGxldCAoc2VjdGlvbl9jb25maWcsIF9kaWdlc3QpID0gcGJzX2NvbmZpZzo6 ZGF0YXN0b3JlOjpjb25maWcoKT87Cj4gPiArICAgIGxldCBkYXRhc3RvcmU6IERhdGFTdG9yZUNv bmZpZyA9IHNlY3Rpb25fY29uZmlnLmxvb2t1cCgiZGF0YXN0b3JlIiwgJnN0b3JlKT87Cj4gPiAr Cj4gPiArICAgIGlmIGRhdGFzdG9yZS5iYWNraW5nX2RldmljZS5pc19ub25lKCkgewo+ID4gKyAg ICAgICAgYmFpbCEoImRhdGFzdG9yZSAne3N0b3JlfScgaXMgbm90IHJlbW92YWJsZSIpOwo+ID4g KyAgICB9Cj4gPiArCj4gPiArICAgIGxldCBhdXRoX2lkOiBBdXRoaWQgPSBycGNlbnYuZ2V0X2F1 dGhfaWQoKS51bndyYXAoKS5wYXJzZSgpPzsKPiA+ICsgICAgbGV0IHRvX3N0ZG91dCA9IHJwY2Vu di5lbnZfdHlwZSgpID09IFJwY0Vudmlyb25tZW50VHlwZTo6Q0xJOwo+ID4gKwo+ID4gKyAgICBs ZXQgdXBpZCA9IFdvcmtlclRhc2s6Om5ld190aHJlYWQoCj4gPiArICAgICAgICAibW91bnQtZGV2 aWNlIiwKPiA+ICsgICAgICAgIFNvbWUoc3RvcmUpLAo+ID4gKyAgICAgICAgYXV0aF9pZC50b19z dHJpbmcoKSwKPiA+ICsgICAgICAgIHRvX3N0ZG91dCwKPiA+ICsgICAgICAgIG1vdmUgfF93b3Jr ZXJ8IGRvX21vdW50X2RldmljZShkYXRhc3RvcmUpLAo+ID4gKyAgICApPzsKPiA+ICsKPiA+ICsg ICAgT2soanNvbiEodXBpZCkpCj4gPiArfQo+ID4gKwo+ID4gK2ZuIGRvX3VubW91bnRfZGV2aWNl KAo+ID4gKyAgICBkYXRhc3RvcmU6IERhdGFTdG9yZUNvbmZpZywKPiA+ICsgICAgd29ya2VyOiBP cHRpb248JmR5biBXb3JrZXJUYXNrQ29udGV4dD4sCj4gPiArKSAtPiBSZXN1bHQ8KCksIEVycm9y PiB7Cj4gPiArICAgIGxldCBtdXQgYWN0aXZlX29wZXJhdGlvbnMgPSB0YXNrX3RyYWNraW5nOjpn ZXRfYWN0aXZlX29wZXJhdGlvbnMoJmRhdGFzdG9yZS5uYW1lKT87Cj4gPiArICAgIGxldCBtdXQg b2xkX3N0YXR1cyA9IFN0cmluZzo6bmV3KCk7Cj4gPiArICAgIHdoaWxlIGFjdGl2ZV9vcGVyYXRp b25zLnJlYWQgKyBhY3RpdmVfb3BlcmF0aW9ucy53cml0ZSA+IDAgewo+ID4gKyAgICAgICAgaWYg bGV0IFNvbWUod29ya2VyKSA9IHdvcmtlciB7Cj4gPiArICAgICAgICAgICAgaWYgd29ya2VyLmFi b3J0X3JlcXVlc3RlZCgpIHsKPiA+ICsgICAgICAgICAgICAgICAgYmFpbCEoImFib3J0ZWQsIGR1 ZSB0byB1c2VyIHJlcXVlc3QiKTsKPiA+ICsgICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAg bGV0IHN0YXR1cyA9IGZvcm1hdCEoCj4gPiArICAgICAgICAgICAgICAgICJjYW5ub3QgdW5tb3Vu dCB5ZXQsIHN0aWxsIHt9IHJlYWQgYW5kIHt9IHdyaXRlIG9wZXJhdGlvbnMgYWN0aXZlIiwKPiA+ ICsgICAgICAgICAgICAgICAgYWN0aXZlX29wZXJhdGlvbnMucmVhZCwgYWN0aXZlX29wZXJhdGlv bnMud3JpdGUKPiA+ICsgICAgICAgICAgICApOwo+ID4gKyAgICAgICAgICAgIGlmIHN0YXR1cyAh PSBvbGRfc3RhdHVzIHsKPiA+ICsgICAgICAgICAgICAgICAgaW5mbyEoIntzdGF0dXN9Iik7Cj4g PiArICAgICAgICAgICAgICAgIG9sZF9zdGF0dXMgPSBzdGF0dXM7Cj4gPiArICAgICAgICAgICAg fQo+ID4gKyAgICAgICAgfQo+ID4gKyAgICAgICAgc3RkOjp0aHJlYWQ6OnNsZWVwKHN0ZDo6dGlt ZTo6RHVyYXRpb246OmZyb21fbWlsbGlzKDI1MCkpOwo+Cj4gSSB0aGluayBvbmNlIHBlciBzZWNv bmQgaXMgcHJvYmFibHkgZW5vdWdoPyBvbiBhIGJ1c3kvYmlnIHNlcnZlciB0aGVyZQo+IG1pZ2h0 IGJlIGEgbG90IG9mIG9wZXJhdGlvbnMgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3IgKGFuZCB0aHVz IGEgbG90IG9mCj4gZGVjcmVtZW50cyBvZiB0aGUgY291bnRlcnMpLi4KPgoKbWFrZXMgc2Vuc2UK Cj4gPiArICAgICAgICBhY3RpdmVfb3BlcmF0aW9ucyA9IHRhc2tfdHJhY2tpbmc6OmdldF9hY3Rp dmVfb3BlcmF0aW9ucygmZGF0YXN0b3JlLm5hbWUpPzsKPiA+ICsgICAgfQo+ID4gKyAgICBpZiBs ZXQgU29tZShtb3VudF9wb2ludCkgPSBkYXRhc3RvcmUuZ2V0X21vdW50X3BvaW50KCkgewo+Cj4g c2hvdWxkbid0IHRoaXMgaWYgYmUgcmlnaHQgYXQgdGhlIHN0YXJ0Pwo+Cgp0aGlzIGZuIGlzIG9u bHkgY2FsbGVkIGluIHRoZSB1bm1vdW50IGVuZHBvaW50LCB3aGljaCBkb2VzIHRoaXMgY2hlY2su CkJ1dCBjaGVja2luZyBhZ2FpbiB3b3VsZG4ndCBodXJ0LCBJIGd1ZXNzIAoKPiA+ICsgICAgICAg IGNyYXRlOjp0b29sczo6ZGlza3M6OnVubW91bnRfYnlfbW91bnRwb2ludCgmbW91bnRfcG9pbnQp PzsKPiA+ICsKPiA+ICsgICAgICAgIGxldCBfbG9jayA9IHBic19jb25maWc6OmRhdGFzdG9yZTo6 bG9ja19jb25maWcoKT87Cj4gPiArICAgICAgICBsZXQgKG11dCBzZWN0aW9uX2NvbmZpZywgX2Rp Z2VzdCkgPSBwYnNfY29uZmlnOjpkYXRhc3RvcmU6OmNvbmZpZygpPzsKPiA+ICsgICAgICAgIGxl dCBtdXQgc3RvcmVfY29uZmlnOiBEYXRhU3RvcmVDb25maWcgPQo+ID4gKyAgICAgICAgICAgIHNl Y3Rpb25fY29uZmlnLmxvb2t1cCgiZGF0YXN0b3JlIiwgJmRhdGFzdG9yZS5uYW1lKT87Cj4KPiBz aG91bGQgd2UgcmUtY2hlY2sgdGhlIGN1cnJlbnQgbWFpbnRlbmFuY2VfbW9kZSBoZXJlIHRvIGF2 b2lkIHJhY2VzPwo+CgpJIHRoaW5rIHRoZSBvbmx5IHRoaW5nIHdlIGNvdWxkIHJhY2UgYWdhaW5z dCBhcmUgb3RoZXIgdW5tb3VudCB0YXNrcywKYW5kIGJvdGggd291bGQgc2V0IGl0IHRvIGBOb25l YAoKPiA+ICsgICAgICAgIHN0b3JlX2NvbmZpZy5tYWludGVuYW5jZV9tb2RlID0gTm9uZTsKPgo+ IHNob3VsZCB1c2Ugc2V0X21haW50ZW5hbmNlX21vZGUKPgoKd2Ugc2V0IHRoZSBtYWludGVuYW5j ZSB0byBgVW5tb3VudGAgYmVmb3JlIHN0YXJ0aW5nIHRoZSB1bm1vdW50aW5nLCB3ZQpjYW4ndCBs ZWF2ZSB0aGF0IGV4Y2VwdCBieSBzZXR0aW5nIGl0IGxpa2UgdGhpcy4gSWYgc29tZXRoaW5nIHNo b3VsZCBnbwp3cm9uZyB3ZSB3YW50IHRoaXMgbG9ja2VkIGluLCBzbyB0byBzYXkuIFNvIG1hbnVh bGx5IGV4YW1pbmlnIHRoZQpzaXR1YXRpb24sIGFuZCBlZGl0aW5nIHRoZSBjb25maWcgZmlsZSBp cyBuZWVkZWQuCgo+ID4gKyAgICAgICAgc2VjdGlvbl9jb25maWcuc2V0X2RhdGEoJmRhdGFzdG9y ZS5uYW1lLCAiZGF0YXN0b3JlIiwgJnN0b3JlX2NvbmZpZyk/Owo+ID4gKyAgICAgICAgcGJzX2Nv bmZpZzo6ZGF0YXN0b3JlOjpzYXZlX2NvbmZpZygmc2VjdGlvbl9jb25maWcpPzsKPiA+ICsgICAg fQo+ID4gKyAgICBPaygoKSkKPiA+ICt9Cj4gPiArCj4gPiArI1thcGkoCj4gPiArICAgIHByb3Rl Y3RlZDogdHJ1ZSwKPiA+ICsgICAgaW5wdXQ6IHsKPiA+ICsgICAgICAgIHByb3BlcnRpZXM6IHsK PiA+ICsgICAgICAgICAgICBzdG9yZTogeyBzY2hlbWE6IERBVEFTVE9SRV9TQ0hFTUEgfSwKPiA+ ICsgICAgICAgIH0sCj4gPiArICAgIH0sCj4gPiArICAgIHJldHVybnM6IHsKPiA+ICsgICAgICAg IHNjaGVtYTogVVBJRF9TQ0hFTUEsCj4gPiArICAgIH0sCj4gPiArICAgIGFjY2Vzczogewo+ID4g KyAgICAgICAgcGVybWlzc2lvbjogJlBlcm1pc3Npb246OlByaXZpbGVnZSgmWyJkYXRhc3RvcmUi LCAie3N0b3JlfSJdLCBQUklWX0RBVEFTVE9SRV9NT0RJRlksIHRydWUpLAo+ID4gKyAgICB9Cj4g PiArKV0KPiA+ICsvLy8gVW5tb3VudCBhIHJlbW92YWJsZSBkZXZpY2UgdGhhdCBpcyBhc3NvY2lh dGVkIHdpdGggdGhlIGRhdGFzdG9yZQo+ID4gK3B1YiBhc3luYyBmbiB1bm1vdW50KHN0b3JlOiBT dHJpbmcsIHJwY2VudjogJm11dCBkeW4gUnBjRW52aXJvbm1lbnQpIC0+IFJlc3VsdDxWYWx1ZSwg RXJyb3I+IHsKPiA+ICsgICAgbGV0IF9sb2NrID0gcGJzX2NvbmZpZzo6ZGF0YXN0b3JlOjpsb2Nr X2NvbmZpZygpPzsKPiA+ICsgICAgbGV0IChtdXQgc2VjdGlvbl9jb25maWcsIF9kaWdlc3QpID0g cGJzX2NvbmZpZzo6ZGF0YXN0b3JlOjpjb25maWcoKT87Cj4gPiArICAgIGxldCBtdXQgZGF0YXN0 b3JlOiBEYXRhU3RvcmVDb25maWcgPSBzZWN0aW9uX2NvbmZpZy5sb29rdXAoImRhdGFzdG9yZSIs ICZzdG9yZSk/Owo+ID4gKwo+ID4gKyAgICBpZiBkYXRhc3RvcmUuYmFja2luZ19kZXZpY2UuaXNf bm9uZSgpIHsKPiA+ICsgICAgICAgIGJhaWwhKCJkYXRhc3RvcmUgJ3tzdG9yZX0nIGlzIG5vdCBy ZW1vdmFibGUiKTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBpZiAhaXNfZGF0YXN0b3JlX2F2 YWlsYWJsZSgmZGF0YXN0b3JlKSB7Cj4gPiArICAgICAgICBiYWlsISgiZGF0YXN0b3JlICd7c3Rv cmV9JyBpcyBub3QgbW91bnRlZCIpOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGRhdGFzdG9y ZS5zZXRfbWFpbnRlbmFuY2VfbW9kZShTb21lKE1haW50ZW5hbmNlTW9kZTo6bmV3KE1haW50ZW5h bmNlVHlwZTo6VW5tb3VudCwgTm9uZSkpKT87Cj4gPiArICAgIHNlY3Rpb25fY29uZmlnLnNldF9k YXRhKCZzdG9yZSwgImRhdGFzdG9yZSIsICZkYXRhc3RvcmUpPzsKPiA+ICsgICAgcGJzX2NvbmZp Zzo6ZGF0YXN0b3JlOjpzYXZlX2NvbmZpZygmc2VjdGlvbl9jb25maWcpPzsKPiA+ICsKPiA+ICsg ICAgZHJvcChfbG9jayk7Cj4gPiArCj4gPiArICAgIGxldCBhdXRoX2lkOiBBdXRoaWQgPSBycGNl bnYuZ2V0X2F1dGhfaWQoKS51bndyYXAoKS5wYXJzZSgpPzsKPiA+ICsgICAgbGV0IHRvX3N0ZG91 dCA9IHJwY2Vudi5lbnZfdHlwZSgpID09IFJwY0Vudmlyb25tZW50VHlwZTo6Q0xJOwo+ID4gKwo+ ID4gKyAgICBpZiBsZXQgT2socHJveHlfcGlkKSA9IHByb3htb3hfcmVzdF9zZXJ2ZXI6OnJlYWRf cGlkKHBic19idWlsZGNmZzo6UFJPWE1PWF9CQUNLVVBfUFJPWFlfUElEX0ZOKQo+ID4gKyAgICB7 Cj4gPiArICAgICAgICBsZXQgc29jayA9IHByb3htb3hfZGFlbW9uOjpjb21tYW5kX3NvY2tldDo6 cGF0aF9mcm9tX3BpZChwcm94eV9waWQpOwo+ID4gKyAgICAgICAgbGV0IF8gPSBwcm94bW94X2Rh ZW1vbjo6Y29tbWFuZF9zb2NrZXQ6OnNlbmRfcmF3KAo+ID4gKyAgICAgICAgICAgIHNvY2ssCj4g PiArICAgICAgICAgICAgJmZvcm1hdCEoCj4gPiArICAgICAgICAgICAgICAgICJ7e1wiY29tbWFu ZFwiOlwidXBkYXRlLWRhdGFzdG9yZS1jYWNoZVwiLFwiYXJnc1wiOlwie31cIn19XG4iLAo+ID4g KyAgICAgICAgICAgICAgICAmc3RvcmUKPiA+ICsgICAgICAgICAgICApLAo+ID4gKyAgICAgICAg KQo+ID4gKyAgICAgICAgLmF3YWl0Owo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGxldCB1cGlk ID0gV29ya2VyVGFzazo6bmV3X3RocmVhZCgKPiA+ICsgICAgICAgICJ1bm1vdW50LWRldmljZSIs Cj4gPiArICAgICAgICBTb21lKHN0b3JlKSwKPiA+ICsgICAgICAgIGF1dGhfaWQudG9fc3RyaW5n KCksCj4gPiArICAgICAgICB0b19zdGRvdXQsCj4gPiArICAgICAgICBtb3ZlIHx3b3JrZXJ8IGRv X3VubW91bnRfZGV2aWNlKGRhdGFzdG9yZSwgU29tZSgmd29ya2VyKSksCj4gPiArICAgICk/Owo+ ID4gKwo+ID4gKyAgICBPayhqc29uISh1cGlkKSkKPiA+ICt9Cj4gPiArCj4gPiAgI1tzb3J0YWJs ZV0KPiA+ICBjb25zdCBEQVRBU1RPUkVfSU5GT19TVUJESVJTOiBTdWJkaXJNYXAgPSAmWwo+ID4g ICAgICAoCj4gPiBAQCAtMjQyMiw2ICsyNjQzLDcgQEAgY29uc3QgREFUQVNUT1JFX0lORk9fU1VC RElSUzogU3ViZGlyTWFwID0gJlsKPiA+ICAgICAgICAgICAgICAuZ2V0KCZBUElfTUVUSE9EX0xJ U1RfR1JPVVBTKQo+ID4gICAgICAgICAgICAgIC5kZWxldGUoJkFQSV9NRVRIT0RfREVMRVRFX0dS T1VQKSwKPiA+ICAgICAgKSwKPiA+ICsgICAgKCJtb3VudCIsICZSb3V0ZXI6Om5ldygpLnBvc3Qo JkFQSV9NRVRIT0RfTU9VTlQpKSwKPiA+ICAgICAgKAo+ID4gICAgICAgICAgIm5hbWVzcGFjZSIs Cj4gPiAgICAgICAgICAvLyBGSVhNRTogbW92ZSBpbnRvIGRhdGFzdG9yZTo6IHN1Yi1tb2R1bGU/ IQo+ID4gQEAgLTI0NTYsNiArMjY3OCw3IEBAIGNvbnN0IERBVEFTVE9SRV9JTkZPX1NVQkRJUlM6 IFN1YmRpck1hcCA9ICZbCj4gPiAgICAgICAgICAgICAgLmRlbGV0ZSgmQVBJX01FVEhPRF9ERUxF VEVfU05BUFNIT1QpLAo+ID4gICAgICApLAo+ID4gICAgICAoInN0YXR1cyIsICZSb3V0ZXI6Om5l dygpLmdldCgmQVBJX01FVEhPRF9TVEFUVVMpKSwKPiA+ICsgICAgKCJ1bm1vdW50IiwgJlJvdXRl cjo6bmV3KCkucG9zdCgmQVBJX01FVEhPRF9VTk1PVU5UKSksCj4gPiAgICAgICgKPiA+ICAgICAg ICAgICJ1cGxvYWQtYmFja3VwLWxvZyIsCj4gPiAgICAgICAgICAmUm91dGVyOjpuZXcoKS51cGxv YWQoJkFQSV9NRVRIT0RfVVBMT0FEX0JBQ0tVUF9MT0cpLAo+ID4gLS0gCj4gPiAyLjM5LjIKPiA+ IAo+ID4gCj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gPiBwYnMtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiBwYnMtZGV2ZWxAbGlzdHMucHJv eG1veC5jb20KPiA+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xp c3RpbmZvL3Bicy1kZXZlbAo+ID4gCj4gPiAKPiA+IAo+Cj4KPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IHBicy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBw YnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KPiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2Nn aS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwKCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KcGJzLWRldmVsIG1haWxpbmcgbGlzdApwYnMtZGV2 ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21h aWxtYW4vbGlzdGluZm8vcGJzLWRldmVsCg==