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 5CE901FF16B for ; Tue, 26 Aug 2025 18:02:04 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id EC7B38359; Tue, 26 Aug 2025 18:02:02 +0200 (CEST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756224083; x=1756828883; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iHvxVxrSSE4sE05np44dmx1bD/kPl5nUqXHZ9K5t+p0=; b=oNWQ4vOBxKlaUp6MNGTgZHnCn/SteNU3Wm/+uuNBkWxpWEXh1jchQWQ5NCVfQwVq7Q VFcnXMuP/UhPtk1PjRbLgEGxYYnJrCV8V+1vCgwsvZAxWKgEcze2nLwgCqcVPGUBKoIi thAc4igxW2FUDk3rQRIFwemMUkm/qFDgb5KKHTOFTyWCu+h/rGaRp+UBXX+R+UrTVn0S WvvmsJn+OD8G950biGcEoWAjM0W6DoWgrLza0qR9iEZz2jKo6uDHIHQa50i5Sx4e5+lc HT/7dtDLuiRdCzLzhlmdnS5crMf6Egv99ngS62CmSwQfn3Y6pxRUiHxwazcDUBLTeXCf G/YQ== X-Gm-Message-State: AOJu0Yzn096Od9HM8GQ8wBw4hBGymAB/uuY3PDNZZOvVL0SyFIweNEzv 5EsTAdNF+rHKoHkTo85XUNWiyqWSBIdMlJNUQWP2ImKhUe13oc0ZsqaI2C6eQXV/ X-Gm-Gg: ASbGncu8ZFevqu7puHJVCVtfXqQ2gsvfpRpmQubuEPmE3Yh7c7Y2VWaXBvqdfAlfOcl yN/uq5gWSjXkCU5RYzvOA0vVUMSkxWyuhBHdfoHcVvR/Hd5jFAJRhCwqARggh2LuYk4JPJhZU7w 7t4rELgaaarGPS1o+RQTxjTnPk58YiG4qY4SKIZp0m9TPIZoe+E0QChFjNCVBYol5kWA/Z2BiOZ 8Xc5Pov12mYTMogxw35hPemxvn1GSuW/lEnNSfG6ie6xdmAvo1hsaLoywKsTfWTDPY0oj1bEmZB s9FIk05yBgQREp1vgSi7HEYfLYIRxBbjFiPAXqd4cUwxgttvFhaF2VHftm/ahizX8xiongnJtLt PWaU3jOTWNwksyVW55jEutt9igmXL0mS84q/0T6pOivhppcSRK3eeSaptebFg X-Google-Smtp-Source: AGHT+IHmMhqKXsg/t8uIhY3Om0oEZ/HtGkkS8+vxRpNXkUWu09SqIrQF5HgonZTQ/WJy8zA1Lx4ArA== X-Received: by 2002:a05:6402:d08:b0:617:9bff:be16 with SMTP id 4fb4d7f45d1cf-61c1b5ed4bemr13013258a12.22.1756224083126; Tue, 26 Aug 2025 09:01:23 -0700 (PDT) X-Received: by 2002:a05:6000:26c2:b0:3c3:ae31:7183 with SMTP id ffacd0b85a97d-3c5dc734292mr9277912f8f.34.1756224081919; Tue, 26 Aug 2025 09:01:21 -0700 (PDT) MIME-Version: 1.0 References: <20250825041128.132814-1-thomas@atskinner.net> <20250825041128.132814-5-thomas@atskinner.net> In-Reply-To: From: Thomas Skinner Date: Tue, 26 Aug 2025 11:00:55 -0500 X-Gmail-Original-Message-ID: X-Gm-Features: Ac12FXz1GKZq-j291tivUUTyc-4DY6OToBX-zOSJRbXBbgUP_yXaDT2OYP_c6go Message-ID: To: Daniel Kral X-SPAM-LEVEL: Spam detection results: 0 AWL -0.157 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 FREEMAIL_FORGED_FROMDOMAIN 0.001 2nd level domains in From and EnvelopeFrom freemail headers are different FREEMAIL_FROM 0.001 Sender email is commonly abused enduser mail provider HEADER_FROM_DIFFERENT_DOMAINS 0.001 From and EnvelopeFrom 2nd level mail domains are different KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment 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 RCVD_IN_DNSWL_NONE -0.0001 Sender listed at https://www.dnswl.org/, no trust RCVD_IN_MSPIKE_H2 0.001 Average reputation (+2) SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH ha-manager 2/2] add api getter/setter for node maintenance mode 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: , Reply-To: Proxmox VE development discussion Cc: Proxmox VE development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" T24gVHVlLCBBdWcgMjYsIDIwMjUgYXQgNDozOOKAr0FNIERhbmllbCBLcmFsIDxkLmtyYWxAcHJv eG1veC5jb20+IHdyb3RlOgo+Cj4gVGhhbmtzIGZvciB3b3JraW5nIG9uIHRoaXMhCj4KPiBJIGhh dmUgYWRkZWQgc29tZSBjb21tZW50cyBpbmxpbmUuIFBsZWFzZSBydW4gYG1ha2UgdGlkeWAgb24g dGhpcyBwYXRjaAo+IChhbmQgb3RoZXIgcGF0Y2hlcyBmb3IgdGhhdCBzYWtlKSB0byBhdXRvbWF0 aWNhbGx5IHJlZm9ybWF0IHRoZSBjb2RlLgo+Cj4gU2VlIFswXSBmb3IgbW9yZSBpbmZvcm1hdGlv bi4KPgo+IFswXSBodHRwczovL2dpdC5wcm94bW94LmNvbS8/cD1wcm94bW94LXBlcmx0aWR5Lmdp dDthPXN1bW1hcnkKCkkgdGhvdWdodCBJIGRpZCB0aGlzIG9uIGFsbCBvZiB0aGVtLCBidXQgSSB3 aWxsIGRvIGl0IGFnYWluIGp1c3QgaW4gY2FzZS4KCj4KPiBPbiBNb24gQXVnIDI1LCAyMDI1IGF0 IDY6MTEgQU0gQ0VTVCwgVGhvbWFzIFNraW5uZXIgd3JvdGU6Cj4gPiBTaWduZWQtb2ZmLWJ5OiBU aG9tYXMgU2tpbm5lciA8dGhvbWFzQGF0c2tpbm5lci5uZXQ+Cj4gPiAtLS0KPiA+ICBkZWJpYW4v cHZlLWhhLW1hbmFnZXIuaW5zdGFsbCB8ICAgMSArCj4gPiAgc3JjL1BWRS9BUEkyL0hBL01ha2Vm aWxlICAgICAgfCAgIDIgKy0KPiA+ICBzcmMvUFZFL0FQSTIvSEEvTm9kZXMucG0gICAgICB8IDE3 NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgMyBmaWxlcyBjaGFuZ2Vk LCAxNzggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvUFZFL0FQSTIvSEEvTm9kZXMucG0KPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZGViaWFuL3B2 ZS1oYS1tYW5hZ2VyLmluc3RhbGwgYi9kZWJpYW4vcHZlLWhhLW1hbmFnZXIuaW5zdGFsbAo+ID4g aW5kZXggMmU2YjdkNS4uZWM4NTAzNyAxMDA2NDQKPiA+IC0tLSBhL2RlYmlhbi9wdmUtaGEtbWFu YWdlci5pbnN0YWxsCj4gPiArKysgYi9kZWJpYW4vcHZlLWhhLW1hbmFnZXIuaW5zdGFsbAo+ID4g QEAgLTE1LDYgKzE1LDcgQEAKPiA+ICAvdXNyL3NoYXJlL21hbi9tYW44L3B2ZS1oYS1jcm0uOC5n ego+ID4gIC91c3Ivc2hhcmUvbWFuL21hbjgvcHZlLWhhLWxybS44Lmd6Cj4gPiAgL3Vzci9zaGFy ZS9wZXJsNS9QVkUvQVBJMi9IQS9Hcm91cHMucG0KPiA+ICsvdXNyL3NoYXJlL3Blcmw1L1BWRS9B UEkyL0hBL05vZGVzLnBtCj4gPiAgL3Vzci9zaGFyZS9wZXJsNS9QVkUvQVBJMi9IQS9SZXNvdXJj ZXMucG0KPiA+ICAvdXNyL3NoYXJlL3Blcmw1L1BWRS9BUEkyL0hBL1J1bGVzLnBtCj4gPiAgL3Vz ci9zaGFyZS9wZXJsNS9QVkUvQVBJMi9IQS9TdGF0dXMucG0KPiA+IGRpZmYgLS1naXQgYS9zcmMv UFZFL0FQSTIvSEEvTWFrZWZpbGUgYi9zcmMvUFZFL0FQSTIvSEEvTWFrZWZpbGUKPiA+IGluZGV4 IDg2YzEwMTMuLjQ1ZDcxNGIgMTAwNjQ0Cj4gPiAtLS0gYS9zcmMvUFZFL0FQSTIvSEEvTWFrZWZp bGUKPiA+ICsrKyBiL3NyYy9QVkUvQVBJMi9IQS9NYWtlZmlsZQo+ID4gQEAgLTEsNCArMSw0IEBA Cj4gPiAtU09VUkNFUz1SZXNvdXJjZXMucG0gR3JvdXBzLnBtIFJ1bGVzLnBtIFN0YXR1cy5wbQo+ ID4gK1NPVVJDRVM9UmVzb3VyY2VzLnBtIEdyb3Vwcy5wbSBOb2Rlcy5wbSBSdWxlcy5wbSBTdGF0 dXMucG0KPiA+Cj4gPiAgLlBIT05ZOiBpbnN0YWxsCj4gPiAgaW5zdGFsbDoKPiA+IGRpZmYgLS1n aXQgYS9zcmMvUFZFL0FQSTIvSEEvTm9kZXMucG0gYi9zcmMvUFZFL0FQSTIvSEEvTm9kZXMucG0K PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwLi4yYWZjM2EzCj4gPiAt LS0gL2Rldi9udWxsCj4gPiArKysgYi9zcmMvUFZFL0FQSTIvSEEvTm9kZXMucG0KPiA+IEBAIC0w LDAgKzEsMTc2IEBACj4gPiArcGFja2FnZSBQVkU6OkFQSTI6OkhBOjpOb2Rlczo6Tm9kZWluZm87 Cj4KPiBXaHkgdXNlIHR3byBwYWNrYWdlcyBpbiB0aGlzIGZpbGUgaGVyZT8gQUZBSUNUIHRoaXMg c2VlbXMgbGlrZSBpdCBpcwo+IGNvcHktcGFzdGVkIGZyb20gUFZFOjpBUEkyOjpOb2RlcyBhbmQg Y291bGQgdmVyeSB3ZWxsIGJlIGEgc2luZ2xlCj4gcGFja2FnZSBhcyB0aGF0J3MgbXVjaCBjbGVh bmVyIHRoYW4gaGF2aW5nIHR3byBwYWNrYWdlcyBpbiBvbmUgZmlsZS4KClllcywgSSBkaWQgdXNl IHRoYXQgZmlsZSBhcyB0aGUgc291cmNlIGZvciB0aGlzIHBhY2thZ2UuIEl0IGNvdWxkIHZlcnkK d2VsbCBiZSBvbmUgcGFja2FnZSwgZXNwZWNpYWxseSBpZiBpdCB3YXMgcGxhY2VkIGVsc2V3aGVy ZSBpbiB0aGUgQVBJLgpJIHdhcyB0cnlpbmcgdG8gbWlycm9yIHRoZSBiZWhhdmlvciBvZiB0aGUg ZXhpc3Rpbmcgbm9kZXMgZGlyIGluIHRoZQpBUEkuCgo+IEFsc28gaXQgc2VlbXMgbGlrZSB3ZSBk byB0aGF0IHNlbGRvbWx5Ogo+Cj4gIyByZyAtbyAtYyAtZyAiKi5wbSIgIl5wYWNrYWdlIiAuIHwg YXdrIC1GOiAne2lmICgkMiA+IDEpe3ByaW50ICQxfX0nCj4gLi9wdmUtZ3Vlc3QtY29tbW9uL3Ny Yy9QVkUvUmVwbGljYXRpb25Db25maWcucG0KPiAuL3B2ZS1idWlsZHBrZy9QVkUvQnVpbGRQS0cv VG9vbHMucG0KPiAuL3B2ZS1zdG9yYWdlL3NyYy9QVkUvU3RvcmFnZS9FU1hpUGx1Z2luLnBtCj4g Li9wdmUtbWFuYWdlci9QVkUvQVBJMi9Ob2Rlcy5wbQo+IC4vcHZlLW1hbmFnZXIvUFZFL0NMSS9w dmVfbmV0d29ya19pbnRlcmZhY2VfcGlubmluZy5wbQo+IC4vcHZlLWZpcmV3YWxsL3NyYy9QVkUv QVBJMi9GaXJld2FsbC9WTS5wbQo+IC4vcHZlLWZpcmV3YWxsL3NyYy9QVkUvQVBJMi9GaXJld2Fs bC9SdWxlcy5wbQo+IC4vcHZlLWZpcmV3YWxsL3NyYy9QVkUvQVBJMi9GaXJld2FsbC9JUFNldC5w bQo+IC4vcHZlLWZpcmV3YWxsL3NyYy9QVkUvQVBJMi9GaXJld2FsbC9BbGlhc2VzLnBtCj4KPiA+ ICsKPiA+ICt1c2Ugc3RyaWN0Owo+ID4gK3VzZSB3YXJuaW5nczsKPiA+ICsKPiA+ICt1c2UgUFZF OjpTYWZlU3lzbG9nOwo+ID4gK3VzZSBQVkU6OlRvb2xzIHF3KGV4dHJhY3RfcGFyYW0pOwo+ID4g K3VzZSBQVkU6OkNsdXN0ZXIgcXcoY2ZzX3JlYWRfZmlsZSBjZnNfd3JpdGVfZmlsZSk7Cj4gPiAr dXNlIFBWRTo6SEE6OkNvbmZpZzsKPiA+ICt1c2UgSFRUUDo6U3RhdHVzIHF3KDpjb25zdGFudHMp Owo+ID4gK3VzZSBTdG9yYWJsZSBxdyhkY2xvbmUpOwo+ID4gK3VzZSBQVkU6OkpTT05TY2hlbWEg cXcoZ2V0X3N0YW5kYXJkX29wdGlvbik7Cj4gPiArdXNlIFBWRTo6UlBDRW52aXJvbm1lbnQ7Cj4K PiBhcmUgZXh0cmFjdF9wYXJhbSwgY2ZzX3tyZWFkLHdyaXRlfV9maWxlLCBkY2xvbmUgdXNlZD8K Pgo+IG5pdDogZWl0aGVyIHdheSwgdXNlIHN0YXRlbWVudHMgc2hvdWxkIGZvbGxvdyB0aGUgZGVw ZW5kZW5jaWVzIHN0eWxlCj4gZ3VpZGUgWzFdLCBpLmUuIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xs b3dpbmc6Cj4KPgo+IHVzZSBIVFRQOjpTdGF0dXMgcXcoOmNvbnN0YW50cyk7Cj4gdXNlIFN0b3Jh YmxlIHF3KGRjbG9uZSk7Cj4KPiB1c2UgUFZFOjpDbHVzdGVyIHF3KGNmc19yZWFkX2ZpbGUgY2Zz X3dyaXRlX2ZpbGUpOwo+IHVzZSBQVkU6OkpTT05TY2hlbWEgcXcoZ2V0X3N0YW5kYXJkX29wdGlv bik7Cj4gdXNlIFBWRTo6UlBDRW52aXJvbm1lbnQ7Cj4gdXNlIFBWRTo6U2FmZVN5c2xvZzsKPiB1 c2UgUFZFOjpUb29scyBxdyhleHRyYWN0X3BhcmFtKTsKPgo+IHVzZSBQVkU6OkhBOjpDb25maWc7 Cj4KPgo+IFsxXSBodHRwczovL3B2ZS5wcm94bW94LmNvbS93aWtpL1BlcmxfU3R5bGVfR3VpZGUj RGVwZW5kZW5jaWVzCgpJIHdpbGwgY2xlYW4gdGhlc2UgdXAgaW4gYSB2MiBwYXRjaC4KCj4gPiAr Cj4gPiArdXNlIFBWRTo6UkVTVEhhbmRsZXI7Cj4gPiArCj4gPiArdXNlIGJhc2UgcXcoUFZFOjpS RVNUSGFuZGxlcik7Cj4gPiArCj4gPiArX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCh7Cj4g PiArICAgIG5hbWUgPT4gJ2luZGV4JywKPiA+ICsgICAgcGF0aCA9PiAnJywKPiA+ICsgICAgbWV0 aG9kID0+ICdHRVQnLAo+ID4gKyAgICBwZXJtaXNzaW9ucyA9PiB7IHVzZXIgPT4gJ2FsbCcgfSwK PiA+ICsgICAgZGVzY3JpcHRpb24gPT4gIk5vZGUgaW5kZXguIiwKPiA+ICsgICAgcGFyYW1ldGVy cyA9PiB7Cj4gPiArICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyA9PiAwLAo+ID4gKyAgICAg ICAgcHJvcGVydGllcyA9PiB7Cj4gPiArICAgICAgICAgICAgbm9kZSA9PiBnZXRfc3RhbmRhcmRf b3B0aW9uKCdwdmUtbm9kZScpLAo+ID4gKyAgICAgICAgfSwKPiA+ICsgICAgfSwKPiA+ICsgICAg cmV0dXJucyA9PiB7Cj4gPiArICAgICAgICB0eXBlID0+ICdhcnJheScsCj4gPiArICAgICAgICBp dGVtcyA9PiB7Cj4gPiArICAgICAgICAgICAgdHlwZSA9PiAib2JqZWN0IiwKPiA+ICsgICAgICAg ICAgICBwcm9wZXJ0aWVzID0+IHt9LAo+ID4gKyAgICAgICAgfSwKPiA+ICsgICAgICAgIGxpbmtz ID0+IFt7IHJlbCA9PiAnY2hpbGQnLCBocmVmID0+ICJ7bmFtZX0iIH1dLAo+ID4gKyAgICB9LAo+ ID4gKyAgICBjb2RlID0+IHN1YiB7Cj4gPiArICAgICAgICBteSAoJHBhcmFtKSA9IEBfOwo+ID4g Kwo+ID4gKyAgICAgICAgbXkgJHJlc3VsdCA9IFsKPiA+ICsgICAgICAgICAgICB7IG5hbWUgPT4g J21haW50ZW5hbmNlJyB9LAo+ID4gKyAgICAgICAgXTsKPiA+ICsKPiA+ICsgICAgICAgIHJldHVy biAkcmVzdWx0Owo+ID4gKyAgICB9LAo+ID4gK30pOwo+Cj4gSG0sIHdlIGRvIHRoYXQgZGlmZmVy ZW50bHkgYXJvdW5kIHRoZSBBUEkgZW5kcG9pbnRzLCBidXQgYXQgbGVhc3QgZm9yCj4gdGhlIEhB LXJlbGF0ZWQgQVBJIGVuZHBvaW50cyB3ZSBkb24ndCBsaXN0IHRoZSBzdWJkaXJlY3Rvcmllcywg YnV0Cj4gb3V0cHV0IHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgZW50aXR5IGl0c2VsZiwgZS5nLiBm b3IgSEEgcmVzb3VyY2VzOgo+Cj4KPiArIGhhCj4gfAo+ICstKyByZXNvdXJjZXMgICAgIC0gR0VU ICAgIExpc3QgSEEgcmVzb3VyY2VzLgo+ICAgKyAgICAgICAgICAgICAgIC0gUE9TVCAgIENyZWF0 ZSBhIG5ldyBIQSByZXNvdXJjZS4KPiAgIHwKPiAgICstKyB7c2lkfSAgICAgICAtIEdFVCAgICBS ZWFkIHJlc291cmNlIGNvbmZpZ3VyYXRpb24uCj4gICAgICsgICAgICAgICAgICAgLSBQVVQgICAg VXBkYXRlIHJlc291cmNlIGNvbmZpZ3VyYXRpb24uCj4gICAgICsgICAgICAgICAgICAgLSBERUxF VEUgRGVsZXRlIHJlc291cmNlIGNvbmZpZ3VyYXRpb24uCj4gICAgIHwKPiAgICAgKy0rIG1pZ3Jh dGUgICAtIFBPU1QgICBSZXF1ZXN0IHJlc291cmNlIG1pZ3JhdGlvbiB0byBhbm90aGVyIG5vZGUu Cj4gICAgICAgKyByZWxvY2F0ZSAgLSBQT1NUICAgUmVxdWVzdCByZXNvdXJjZSByZWxvY2F0aW9u IHRvIGFub3RoZXIgbm9kZS4KPgo+Cj4gT2YgY291cnNlLCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2Ug Zm9yIGEgUE9TVC9ERUxFVEUgQVBJIGVuZHBvaW50IGZvcgo+IG5vZGVzLCBidXQgaXQgY291bGQg c3RpbGwgYmUgdXNlZnVsIHRvIG1ha2UgdGhlCj4gR0VUIC9jbHVzdGVyL2hhL25vZGVzL3tub2Rl fSByb3V0ZSBpbmZvcm1hdGlvbmFsLCBlLmcuLCBvdXRwdXQgdGhlCj4gY3VycmVudCBtYWludGVu YW5jZSBzdGF0ZSBhbmQgcG9zc2libHkgb3RoZXIgaW5mb3JtYXRpb24gYWJvdXQgbm9kZXMKPiB0 aGVyZS4KPgo+IFNvIHNvbWV0aGluZyBsaWtlIHRoaXM6Cj4KPiArIGhhCj4gfAo+ICstKyBub2Rl cyAgICAgICAgIC0gR0VUICAgIExpc3QgSEEgbm9kZXMuCj4gICB8Cj4gICArLSsge25vZGV9ICAg ICAgLSBHRVQgICAgUmVhZCBIQSBub2RlIGluZm9ybWF0aW9uLgo+Cj4gLi4uCj4KPiA+ICsKPiA+ ICtfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJfbWV0aG9kKHsKPiA+ICsgICAgbmFtZSA9PiAnbWFpbnRl bmFuY2Vfc3RhdGUnLAo+ID4gKyAgICBwYXRoID0+ICdtYWludGVuYW5jZScsCj4gPiArICAgIG1l dGhvZCA9PiAnR0VUJywKPiA+ICsgICAgcGVybWlzc2lvbnMgPT4geyB1c2VyID0+ICdhbGwnIH0s Cj4gPiArICAgIGRlc2NyaXB0aW9uID0+ICJHZXQgdGhlIG5vZGUgbWFpbnRlbmFuY2Ugc3RhdGUu IiwKPiA+ICsgICAgcGVybWlzc2lvbnMgPT4gewo+ID4gKyBjaGVjayA9PiBbJ3Blcm0nLCAnLycs IFsgJ1N5cy5BdWRpdCcgXV0sCj4gPiArICAgIH0sCj4gPiArICAgIHBhcmFtZXRlcnMgPT4gewo+ ID4gKyAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXMgPT4gMCwKPiA+ICsgICAgICAgIHByb3Bl cnRpZXMgPT4gewo+ID4gKyAgICAgICAgICAgIG5vZGUgPT4gZ2V0X3N0YW5kYXJkX29wdGlvbign cHZlLW5vZGUnKSwKPiA+ICsgICAgICAgIH0sCj4gPiArICAgIH0sCj4gPiArICAgIHJldHVybnMg PT4gewo+ID4gKyAgICAgICAgdHlwZSA9PiAib2JqZWN0IiwKPiA+ICsgICAgICAgIHByb3BlcnRp ZXMgPT4ge30sCj4gPiArICAgIH0sCj4gPiArICAgIGNvZGUgPT4gc3ViIHsKPiA+ICsgICAgICAg IG15ICgkcGFyYW0pID0gQF87Cj4gPiArCj4gPiArIG15ICRzdGF0dXMgPSBQVkU6OkhBOjpDb25m aWc6OnJlYWRfbWFuYWdlcl9zdGF0dXMoKTsKPiA+ICsKPiA+ICsgbXkgJGRhdGEgPSB7Cj4gPiAr ICAgICAgICAgICAgcmVxdWVzdCA9PiAkc3RhdHVzLT57bm9kZV9yZXF1ZXN0fS0+eyRwYXJhbS0+ e25vZGV9fSwKPiA+ICsgICAgICAgICAgICBzdGF0dXMgPT4gJHN0YXR1cy0+e25vZGVfc3RhdHVz fS0+eyRwYXJhbS0+e25vZGV9fSwKPiA+ICsgICAgICAgIH07Cj4gPiArCj4gPiArIHJldHVybiAk ZGF0YTsKPiA+ICsgICAgfSwKPiA+ICt9KTsKPgo+IEkgdGhpbmsgdGhlIEdFVCAvY2x1c3Rlci9o YS9ub2Rlcy97bm9kZX0vbWFpbnRlbmFuY2UgQVBJIGVuZHBvaW50IHNob3VsZAo+IGJlIGludGVn cmF0ZWQgaW50byB0aGUgR0VUIC9jbHVzdGVyL2hhL25vZGVzL3tub2RlfSBpbnN0ZWFkIGFzIHB1 dHRpbmcgYQo+IG5vZGUgaW4vb3V0IG9mIG1haW50ZW5hbmNlIG1vZGUgaXMgb25seSBhbiBhY3Rp b24sIGJ1dCB0aGUgc3RhdGUgY291bGQKPiBiZSBtb3JlIHRoYW4ganVzdCB0aGUgbm9kZSBiZWlu ZyBpbiBtYWludGVuYW5jZSBtb2RlLgo+Cj4gT24gc2Vjb25kIHRob3VnaHQsIGlzIHRoaXMgQVBJ IGVuZHBvaW50IGV2ZW4gdXNlZCBhdCBhbGwgaW4gdGhlIHBhdGNoCj4gc2VyaWVzPwoKVGhlIEFQ SSBpc24ndCBzcGVjaWZpY2FsbHkgdXNlZCBoZXJlLCBidXQgd2UgaGF2ZSBmb3VuZCBpdCB1c2Vm dWwgaW4Kb3VyIGxvY2FsIGJyYW5jaCB0byBoYXZlIGl0IHNvIHRoYXQgd2UgY2FuIHF1ZXJ5IHRo ZSB0cmFuc2l0aW9uIG9mIHRoZQpzdGF0ZSBvZiBhIGhvc3QgZGlyZWN0bHkuIEkgZmlndXJlZCBz b21lb25lIGVsc2UgbWlnaHQgZmluZCBpdCB1c2VmdWwKYXMgd2VsbCwgc28gSSBsZWZ0IGl0IGlu IGhlcmUuIElmIGl0IHNob3VsZCBiZSByZW1vdmVkLCBJIGNhbiByZW1vdmUKaXQgaW4gdGhlIHYy IHNlcmllcy4KCj4gPiArCj4gPiArX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCAoewo+ID4g KyAgICBuYW1lID0+ICdtYWludGVuYW5jZV9zZXQnLAo+ID4gKyAgICBwcm90ZWN0ZWQgPT4gMSwK PiA+ICsgICAgcGF0aCA9PiAnbWFpbnRlbmFuY2UnLAo+ID4gKyAgICBtZXRob2QgPT4gJ1BPU1Qn LAo+ID4gKyAgICBkZXNjcmlwdGlvbiA9PiAiQ2hhbmdlIHRoZSBub2RlLW1haW50ZW5hbmNlIHJl cXVlc3Qgc3RhdGUuIiwKPiA+ICsgICAgcGVybWlzc2lvbnMgPT4gewo+ID4gKyBjaGVjayA9PiBb J3Blcm0nLCAnLycsIFsgJ1N5cy5Db25zb2xlJyBdXSwKPiA+ICsgICAgfSwKPiA+ICsgICAgcGFy YW1ldGVycyA9PiB7Cj4gPiArIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0+IDAsCj4gPiArIHByb3Bl cnRpZXMgPT4gewo+ID4gKyAgICAgbm9kZSA9PiBnZXRfc3RhbmRhcmRfb3B0aW9uKCdwdmUtbm9k ZScpLAo+ID4gKyAgICAgZGlzYWJsZSA9PiB7Cj4gPiArIGRlc2NyaXB0aW9uID0+ICJSZXF1ZXN0 cyBkaXNhYmxpbmcgb3IgZW5hYmxpbmcgbWFpbnRlbmFuY2UtbW9kZS4iLAo+ID4gKyB0eXBlID0+ ICdib29sZWFuJywKPgo+IEhtLCBJIHNlZSB0aGF0IHRoYXQgcGFydCBpcyBmcm9tIHRoZSBDTEkg aGFuZGxlciwgYnV0IHRoZXJlIGBkaXNhYmxlYCBpcwo+IG9ubHkgdXNlZCBmb3IgdHdvIGRpZmZl cmVudCBzdWJjb21tYW5kcyBgZW5hYmxlYCBhbmQgYGRpc2FibGVgLCBzbwo+IHdvdWxkbid0IGl0 IGJlIG5lYXRlciB0byBoYXZlIHR3byBBUEkgZW5kcG9pbnRzIGZvciB0aGF0IGluc3RlYWQ/IExp a2UKPiBmb3IgZXhhbXBsZSB0aGUgQVBJIGVuZHBvaW50cyBmb3IgVk0vY29udGFpbmVyIHN0YXJ0 L3N0b3AvLi4uLCBlLmcuCj4KPiAtIFBPU1QgZW5hYmxlX21haW50ZW5hbmNlCj4gLSBQT1NUIGRp c2FibGVfbWFpbnRlbmFuY2UKCkZvciB0aGlzLCBJIHdhcyBtaXJyb3JpbmcgdGhlIGV4aXN0aW5n IHVuZGVybHlpbmcgQVBJIGNhbGxzIGFzIGxpc3RlZApiZWxvdywgYnV0IEkgYWdyZWUgdGhhdCBl bmFibGUvZGlzYWJsZSB3b3VsZCBiZSBtb3JlIGNsZWFyLiBJJ2xsIHB1dAp0aGF0IGluIHRoZSB2 MiBzZXJpZXMuCgo+IEVpdGhlciB3YXksIHRoZSBDTEkgY29tbWFuZCBzaG91bGQgdGhlbiB1c2Ug dGhpcyBBUEkgaGFuZGxlciBpbnN0ZWFkIG9mCj4gdGhlIENMSSBoYW5kbGVyIHRvIGhhdmUgdGhl IGxvZ2ljIGF0IG9uZSBwbGFjZSBvbmx5LCBpLmUuIGluCj4gaGFfbWFuYWdlci5wbQo+Cj4gJ25v ZGUtbWFpbnRlbmFuY2UnID0+IHsKPiAgICAgZW5hYmxlID0+IFtfX1BBQ0tBR0VfXywgJ25vZGUt bWFpbnRlbmFuY2Utc2V0JywgWydub2RlJ10sIHsgZGlzYWJsZSA9PiAwIH1dLAo+ICAgICBkaXNh YmxlID0+IFtfX1BBQ0tBR0VfXywgJ25vZGUtbWFpbnRlbmFuY2Utc2V0JywgWydub2RlJ10sIHsg ZGlzYWJsZSA9PiAxIH1dLAo+IH0sCj4KPiBzaG91bGQgdGhlbiBiZSBjaGFuZ2VkIHRvOgo+Cj4g J25vZGUtbWFpbnRlbmFuY2UnID0+IHsKPiAgICAgZW5hYmxlID0+IFsnUFZFOjpBUEkyOjpIQTo6 Tm9kZXMnLCAnZW5hYmxlX21haW50ZW5hbmNlJywgWydub2RlJ11dLAo+ICAgICBkaXNhYmxlID0+ IFsnUFZFOjpBUEkyOjpIQTo6Tm9kZXMnLCAnZGlzYWJsZV9tYWludGVuYW5jZScsIFsnbm9kZSdd XSwKPiB9LAoKV2lsbCB1cGRhdGUgdGhpcyBpbiB0aGUgdjIgc2VyaWVzLgoKPgo+ID4gKyAgICAg fSwKPiA+ICsgfSwKPiA+ICsgICAgfSwKPiA+ICsgICAgcmV0dXJucyA9PiB7IHR5cGUgPT4gJ251 bGwnIH0sCj4gPiArICAgIGNvZGUgPT4gc3ViIHsKPiA+ICsgbXkgKCRwYXJhbSkgPSBAXzsKPiA+ ICsKPiA+ICsgUFZFOjpDbHVzdGVyOjpjaGVja19ub2RlX2V4aXN0cygkcGFyYW0tPntub2RlfSk7 Cj4gPiArCj4gPiArIG15ICRjbWQgPSAkcGFyYW0tPntkaXNhYmxlfSA/ICdkaXNhYmxlLW5vZGUt bWFpbnRlbmFuY2UnIDogJ2VuYWJsZS1ub2RlLW1haW50ZW5hbmNlJzsKPiA+ICsgUFZFOjpIQTo6 Q29uZmlnOjpxdWV1ZV9jcm1fY29tbWFuZHMoIiRjbWQgJHBhcmFtLT57bm9kZX0iKTsKPiA+ICsK PiA+ICsgcmV0dXJuIHVuZGVmOwo+ID4gKyAgICB9Cj4gPiArfSk7Cj4gPiArCj4gPiArcGFja2Fn ZSBQVkU6OkFQSTI6OkhBOjpOb2RlczsKPiA+ICsKPiA+ICt1c2Ugc3RyaWN0Owo+ID4gK3VzZSB3 YXJuaW5nczsKPiA+ICsKPiA+ICt1c2UgUFZFOjpSRVNUSGFuZGxlcjsKPiA+ICt1c2UgUFZFOjpK U09OU2NoZW1hIHF3KGdldF9zdGFuZGFyZF9vcHRpb24pOwo+ID4gK3VzZSBQVkU6OlJQQ0Vudmly b25tZW50Owo+ID4gK3VzZSBQVkU6OkNsdXN0ZXI7Cj4gPiArCj4gPiArdXNlIGJhc2UgcXcoUFZF OjpSRVNUSGFuZGxlcik7Cj4gPiArCj4gPiArX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCh7 Cj4gPiArICAgIHN1YmNsYXNzID0+ICJQVkU6OkFQSTI6OkhBOjpOb2Rlczo6Tm9kZWluZm8iLAo+ ID4gKyAgICBwYXRoID0+ICd7bm9kZX0nLAo+ID4gK30pOwo+ID4gKwo+ID4gK19fUEFDS0FHRV9f LT5yZWdpc3Rlcl9tZXRob2Qoewo+ID4gKyAgICBuYW1lID0+ICdpbmRleCcsCj4gPiArICAgIHBh dGggPT4gJycsCj4gPiArICAgIG1ldGhvZCA9PiAnR0VUJywKPiA+ICsgICAgcGVybWlzc2lvbnMg PT4geyB1c2VyID0+ICdhbGwnIH0sCj4gPiArICAgIGRlc2NyaXB0aW9uID0+ICJDbHVzdGVyIEhB IG5vZGUgaW5kZXguIiwKPgo+IG5pdDogZm9yIGNvbnNpc3RlbmN5J3Mgc2FrZSB3aXRoIHRoZSBI QSBBUEkgZW5kcG9pbnRzLCB0aGlzIGNvdWxkIGUuZy4KPiBiZSAiTGlzdCBIQSBub2Rlcy4iLi4g ZXZlbiB0aG91Z2ggdGhleSBkb24ndCByZWFsbHkgYmVsb25nIHRvIHRoZSBIQS4uCj4KPiA+ICsg ICAgcGFyYW1ldGVycyA9PiB7Cj4gPiArICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllcyA9PiAw LAo+ID4gKyAgICAgICAgcHJvcGVydGllcyA9PiB7fSwKPiA+ICsgICAgfSwKPiA+ICsgICAgcmV0 dXJucyA9PiB7Cj4gPiArICAgICAgICB0eXBlID0+ICdhcnJheScsCj4gPiArICAgICAgICBpdGVt cyA9PiB7Cj4gPiArICAgICAgICAgICAgdHlwZSA9PiAib2JqZWN0IiwKPiA+ICsgICAgICAgICAg ICBwcm9wZXJ0aWVzID0+IHsKPiA+ICsgICAgICAgICAgICAgICAgbm9kZSA9PiBnZXRfc3RhbmRh cmRfb3B0aW9uKCdwdmUtbm9kZScpLAo+ID4gKyAgICAgICAgICAgIH0sCj4gPiArICAgICAgICB9 LAo+ID4gKyAgICAgICAgbGlua3MgPT4gW3sgcmVsID0+ICdjaGlsZCcsIGhyZWYgPT4gIntub2Rl fSIgfV0sCj4gPiArICAgIH0sCj4gPiArICAgIGNvZGUgPT4gc3ViIHsKPiA+ICsgICAgICAgIG15 ICgkcGFyYW0pID0gQF87Cj4gPiArCj4gPiArICAgICAgICBteSAkcnBjZW52ID0gUFZFOjpSUENF bnZpcm9ubWVudDo6Z2V0KCk7Cj4gPiArICAgICAgICBteSAkYXV0aHVzZXIgPSAkcnBjZW52LT5n ZXRfdXNlcigpOwo+ID4gKwo+ID4gKyAgICAgICAgbXkgJGNsaW5mbyA9IFBWRTo6Q2x1c3Rlcjo6 Z2V0X2NsaW5mbygpOwo+ID4gKyAgICAgICAgbXkgJHJlcyA9IFtdOwo+ID4gKwo+ID4gKyAgICAg ICAgbXkgJG5vZGVsaXN0ID0gUFZFOjpDbHVzdGVyOjpnZXRfbm9kZWxpc3QoKTsKPiA+ICsgICAg ICAgIG15ICRtZW1iZXJzID0gUFZFOjpDbHVzdGVyOjpnZXRfbWVtYmVycygpOwo+ID4gKyAgICAg ICAgbXkgJHJyZCA9IFBWRTo6Q2x1c3Rlcjo6cnJkX2R1bXAoKTsKPiA+ICsKPiA+ICsgICAgICAg IGZvcmVhY2ggbXkgJG5vZGUgKEAkbm9kZWxpc3QpIHsKPiA+ICsgICAgICAgICAgICBteSAkY2Fu X2F1ZGl0ID0gJHJwY2Vudi0+Y2hlY2soJGF1dGh1c2VyLCAiL25vZGVzLyRub2RlIiwgWydTeXMu QXVkaXQnXSwgMSk7Cj4KPiAkY2FuX2F1ZGl0IGlzIG5ldmVyIHVzZWQgaGVyZSBhbmQgdGhlIGNo ZWNrIGhhcyAkbm9lcnIgc2V0LCBzbyBpdAo+IGRvZXNuJ3QgZG8gYW55dGhpbmcuLgo+Cj4gVGhl IG1vcmUgSSB0aGluayBhYm91dCBpdCwgSSdtIHNvbWV3aGF0IGluY2xpbmVkIHRvIHJlZ2lzdGVy IHRoZSB3aG9sZQo+IHN1YmNsYXNzIHVuZGVyIC9ub2Rlcy97bm9kZX0vaGEvLi4uIGluc3RlYWQg b2YgL2NsdXN0ZXIvaGEvbm9kZXMvLi4uIHRvCj4gbm90IGR1cGxpY2F0ZSB0aGUgaW5mb3JtYXRp b24gb2YgYSBub2RlbGlzdCwgd2hpY2ggaXMgcHJvdmlkZWQgYnkKPiBwdmUtY2x1c3RlciBhbmQg dGhlcmUgd291bGQgYmUgc29tZXRoaW5nIHdyb25nIHdpdGggdGhlIEhBIE1hbmFnZXIKPiBhbnl3 YXkgaWYgdGhvc2UgYXJlIG91dC1vZi1zeW5jIGFuZCBhbGwgdGhlIEhBLXJlbGF0ZWQgaW5mb3Jt YXRpb24gY2FuCj4gdGhlbiBsaXZlIGluIGEgbm9kZS1zcGVjaWZpYyAiaGEiIHN1YmRpcmVjdG9y eS4KPgo+IFRoZW4gdGhpcyBBUEkgaGFuZGxlciB3b3VsZG4ndCBiZSBuZWVkZWQgYW55bW9yZSBh dCBhbGwuCgpJZiB0aGlzIGlzIGhvdyBQcm94bW94IHdvdWxkIGxpa2UgaXQsIHRoYXQgbWFrZXMg aXQgbXVjaCBlYXNpZXIgSU1PLiBJCndhc24ndCBzdXJlIHdoaWNoIG9uZSB0byBpbmNsdWRlIGl0 IHVuZGVyLCBzbyBJIHB1dCBpdCB1bmRlciB0aGUKY2x1c3RlciBwYXRoIHNpbmNlIGEgY2x1c3Rl ciBtdXN0IGJlIGNyZWF0ZWQgdG8gZXZlbiBoYXZlIHRoZSBIQQpmZWF0dXJlc2V0LiBJJ20gZ29v ZCB3aXRoIGVpdGhlciwgSSBqdXN0IG5lZWQgdG8ga25vdyBzbyB0aGF0IEkga25vdwp3aGF0IHRv IHVwZGF0ZSBmb3IgYSB2MiBzZXJpZXMuCgo+ID4gKyAgICAgICAgICAgIG15ICRlbnRyeSA9IHsg bm9kZSA9PiAkbm9kZSB9Owo+ID4gKwo+ID4gKyAgICAgICAgICAgIHB1c2ggQCRyZXMsICRlbnRy eTsKPiA+ICsgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgIHJldHVybiAkcmVzOwo+ID4gKyAg ICB9LAo+ID4gK30pOwo+ID4gKwo+ID4gKzE7Cj4KPgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxA bGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxt YW4vbGlzdGluZm8vcHZlLWRldmVsCg==