From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pve-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9])
	by lore.proxmox.com (Postfix) with ESMTPS id 230021FF164
	for <inbox@lore.proxmox.com>; Fri, 14 Feb 2025 14:40:05 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 63E6E1AABE;
	Fri, 14 Feb 2025 14:40:00 +0100 (CET)
From: Gabriel Goller <g.goller@proxmox.com>
To: pve-devel@lists.proxmox.com
Date: Fri, 14 Feb 2025 14:39:41 +0100
Message-Id: <20250214133951.344500-2-g.goller@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250214133951.344500-1-g.goller@proxmox.com>
References: <20250214133951.344500-1-g.goller@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.032 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_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 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. [net.rs, proxmox.com, lib.rs]
Subject: [pve-devel] [PATCH proxmox-ve-rs 01/11] add crate with common
 network types
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

VGhlIG5ldyBwcm94bW94LW5ldHdvcmstdHlwZXMgY3JhdGUgaG9sZHMgc29tZSBjb21tb24gdHlw
ZXMgdGhhdCBhcmUKdXNlZCBieSBwcm94bW94LWZyciwgcHJveG1veC12ZS1jb25maWcgYW5kIHBy
b3htb3gtcGVybC1ycy4gVGhlc2UgdHlwZXMKYXJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50
IHByb3htb3gtZnJyIHRvIGJlIGEgZGVwZW5kZW5jeSBvZgpwcm94bW94LXZlLWNvbmZpZyBvciB2
aWNlLXZlcnNhIChvciBhdCBsZWFzdCBpdCBzaG91bGQgYmUgZmVhdHVyZS1nYXRlZCkuClRoZXkg
c2hvdWxkIGJlIGluZGVwZW5kZW50LgoKU2lnbmVkLW9mZi1ieTogR2FicmllbCBHb2xsZXIgPGcu
Z29sbGVyQHByb3htb3guY29tPgotLS0KIENhcmdvLnRvbWwgICAgICAgICAgICAgICAgICAgICAg
IHwgICA2ICsKIHByb3htb3gtbmV0d29yay10eXBlcy9DYXJnby50b21sIHwgIDE1ICsrCiBwcm94
bW94LW5ldHdvcmstdHlwZXMvc3JjL2xpYi5ycyB8ICAgMSArCiBwcm94bW94LW5ldHdvcmstdHlw
ZXMvc3JjL25ldC5ycyB8IDIzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZp
bGVzIGNoYW5nZWQsIDI2MSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgcHJveG1v
eC1uZXR3b3JrLXR5cGVzL0NhcmdvLnRvbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LW5l
dHdvcmstdHlwZXMvc3JjL2xpYi5ycwogY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtbmV0d29y
ay10eXBlcy9zcmMvbmV0LnJzCgpkaWZmIC0tZ2l0IGEvQ2FyZ28udG9tbCBiL0NhcmdvLnRvbWwK
aW5kZXggZGM3ZjMxMmZiOGE5Li5lNDUyYzkzMWU3OGMgMTAwNjQ0Ci0tLSBhL0NhcmdvLnRvbWwK
KysrIGIvQ2FyZ28udG9tbApAQCAtMSw2ICsxLDcgQEAKIFt3b3Jrc3BhY2VdCiBtZW1iZXJzID0g
WwogICAgICJwcm94bW94LXZlLWNvbmZpZyIsCisgICAgInByb3htb3gtbmV0d29yay10eXBlcyIs
CiBdCiBleGNsdWRlID0gWwogICAgICJidWlsZCIsCkBAIC0xNSwzICsxNiw4IEBAIGhvbWVwYWdl
ID0gImh0dHBzOi8vcHJveG1veC5jb20iCiBleGNsdWRlID0gWyAiZGViaWFuIiBdCiBydXN0LXZl
cnNpb24gPSAiMS44MiIKIAorW3dvcmtzcGFjZS5kZXBlbmRlbmNpZXNdCitwcm94bW94LXNlY3Rp
b24tY29uZmlnID0gIjIuMS4xIgorc2VyZGUgPSAiMSIKK3NlcmRlX3dpdGggPSAiMy44LjEiCit0
aGlzZXJyb3IgPSAiMS4wLjU5IgpkaWZmIC0tZ2l0IGEvcHJveG1veC1uZXR3b3JrLXR5cGVzL0Nh
cmdvLnRvbWwgYi9wcm94bW94LW5ldHdvcmstdHlwZXMvQ2FyZ28udG9tbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkzZjRkZjg3YTU5ZgotLS0gL2Rldi9udWxsCisr
KyBiL3Byb3htb3gtbmV0d29yay10eXBlcy9DYXJnby50b21sCkBAIC0wLDAgKzEsMTUgQEAKK1tw
YWNrYWdlXQorbmFtZSA9ICJwcm94bW94LW5ldHdvcmstdHlwZXMiCit2ZXJzaW9uID0gIjAuMS4w
IgorYXV0aG9ycy53b3Jrc3BhY2UgPSB0cnVlCitlZGl0aW9uLndvcmtzcGFjZSA9IHRydWUKK2xp
Y2Vuc2Uud29ya3NwYWNlID0gdHJ1ZQoraG9tZXBhZ2Uud29ya3NwYWNlID0gdHJ1ZQorZXhjbHVk
ZS53b3Jrc3BhY2UgPSB0cnVlCitydXN0LXZlcnNpb24ud29ya3NwYWNlID0gdHJ1ZQorCitbZGVw
ZW5kZW5jaWVzXQordGhpc2Vycm9yID0geyB3b3Jrc3BhY2UgPSB0cnVlIH0KK2FueWhvdyA9ICIx
Igorc2VyZGUgPSB7IHdvcmtzcGFjZSA9IHRydWUsIGZlYXR1cmVzID0gWyAiZGVyaXZlIiBdIH0K
K3NlcmRlX3dpdGggPSB7IHdvcmtzcGFjZSA9IHRydWUgfQpkaWZmIC0tZ2l0IGEvcHJveG1veC1u
ZXR3b3JrLXR5cGVzL3NyYy9saWIucnMgYi9wcm94bW94LW5ldHdvcmstdHlwZXMvc3JjL2xpYi5y
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY5ZmFmMmZmNjU0Mgot
LS0gL2Rldi9udWxsCisrKyBiL3Byb3htb3gtbmV0d29yay10eXBlcy9zcmMvbGliLnJzCkBAIC0w
LDAgKzEgQEAKK3B1YiBtb2QgbmV0OwpkaWZmIC0tZ2l0IGEvcHJveG1veC1uZXR3b3JrLXR5cGVz
L3NyYy9uZXQucnMgYi9wcm94bW94LW5ldHdvcmstdHlwZXMvc3JjL25ldC5ycwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjVmZGJlMzkyMDgwMAotLS0gL2Rldi9udWxs
CisrKyBiL3Byb3htb3gtbmV0d29yay10eXBlcy9zcmMvbmV0LnJzCkBAIC0wLDAgKzEsMjM5IEBA
Cit1c2Ugc3RkOjp7Zm10OjpEaXNwbGF5LCBzdHI6OkZyb21TdHJ9OworCit1c2Ugc2VyZGU6OlNl
cmlhbGl6ZTsKK3VzZSBzZXJkZV93aXRoOjp7RGVzZXJpYWxpemVGcm9tU3RyLCBTZXJpYWxpemVE
aXNwbGF5fTsKK3VzZSB0aGlzZXJyb3I6OkVycm9yOworCisjW2Rlcml2ZShFcnJvciwgRGVidWcp
XQorcHViIGVudW0gTmV0RXJyb3IgeworICAgICNbZXJyb3IoIlNvbWUgb2N0ZXRzIGFyZSBtaXNz
aW5nIildCisgICAgV3JvbmdMZW5ndGgsCisgICAgI1tlcnJvcigiVGhlIE5FVCBzZWxlY3RvciBt
dXN0IGJlIHR3byBjaGFyYWN0ZXJzIHdpZGUgYW5kIGJlIDAwIildCisgICAgSW52YWxpZE5ldFNl
bGVjdG9yLAorICAgICNbZXJyb3IoIkludmFsaWQgQUZJICh3cm9uZyBzaXplIG9yIHBvc2l0aW9u
KSIpXQorICAgIEludmFsaWRBRkksCisgICAgI1tlcnJvcigiSW52YWxpZCBBcmVhICh3cm9uZyBz
aXplIG9yIHBvc2l0aW9uKSIpXQorICAgIEludmFsaWRBcmVhLAorICAgICNbZXJyb3IoIkludmFs
aWQgU3lzdGVtSWQgKHdyb25nIHNpemUgb3IgcG9zaXRpb24pIildCisgICAgSW52YWxpZFN5c3Rl
bUlkLAorfQorCisvLy8gQWRkcmVzcyBGYW1pbHkgYXV0aG9yaXR5IElkZW50aWZpZXIgLSA0OSBU
aGUgQUZJIHZhbHVlIDQ5IGlzIHdoYXQgSVMtSVMgKGFuZCBvcGVuZmFicmljKSB1c2VzCisvLy8g
Zm9yIHByaXZhdGUgYWRkcmVzc2luZy4KKyNbZGVyaXZlKAorICAgIERlYnVnLCBEZXNlcmlhbGl6
ZUZyb21TdHIsIFNlcmlhbGl6ZURpc3BsYXksIENsb25lLCBIYXNoLCBQYXJ0aWFsRXEsIEVxLCBQ
YXJ0aWFsT3JkLCBPcmQsCispXQorc3RydWN0IE5ldEFGSShTdHJpbmcpOworCitpbXBsIERlZmF1
bHQgZm9yIE5ldEFGSSB7CisgICAgZm4gZGVmYXVsdCgpIC0+IFNlbGYgeworICAgICAgICBTZWxm
KCI0OSIudG9fb3duZWQoKSkKKyAgICB9Cit9CisKK2ltcGwgRGlzcGxheSBmb3IgTmV0QUZJIHsK
KyAgICBmbiBmbXQoJnNlbGYsIGY6ICZtdXQgc3RkOjpmbXQ6OkZvcm1hdHRlcjwnXz4pIC0+IHN0
ZDo6Zm10OjpSZXN1bHQgeworICAgICAgICB3cml0ZSEoZiwgInt9Iiwgc2VsZi4wKQorICAgIH0K
K30KKworaW1wbCBGcm9tU3RyIGZvciBOZXRBRkkgeworICAgIHR5cGUgRXJyID0gTmV0RXJyb3I7
CisKKyAgICBmbiBmcm9tX3N0cihzOiAmc3RyKSAtPiBSZXN1bHQ8U2VsZiwgU2VsZjo6RXJyPiB7
CisgICAgICAgIGlmIHMubGVuKCkgIT0gMiB7CisgICAgICAgICAgICBFcnIoTmV0RXJyb3I6Oklu
dmFsaWRBRkkpCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBPayhTZWxmKHMudG9fb3du
ZWQoKSkpCisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vLyBBcmVhIGlkZW50aWZpZXI6IDAwMDEg
SVMtSVMgYXJlYSBudW1iZXIgKG51bWVyaWNhbCBhcmVhIDEpCisvLy8gVGhlIHNlY29uZCBwYXJ0
IChzeXN0ZW0pIG9mIHRoZSBgbmV0YCBpZGVudGlmaWVyLiBFdmVyeSBub2RlIGhhcyB0byBoYXZl
IGEgZGlmZmVyZW50IHN5c3RlbQorLy8vIG51bWJlci4KKyNbZGVyaXZlKERlYnVnLCBEZXNlcmlh
bGl6ZUZyb21TdHIsIFNlcmlhbGl6ZSwgQ2xvbmUsIEhhc2gsIFBhcnRpYWxFcSwgRXEsIFBhcnRp
YWxPcmQsIE9yZCldCitzdHJ1Y3QgTmV0QXJlYShTdHJpbmcpOworCitpbXBsIERlZmF1bHQgZm9y
IE5ldEFyZWEgeworICAgIGZuIGRlZmF1bHQoKSAtPiBTZWxmIHsKKyAgICAgICAgU2VsZigiMDAw
MSIudG9fb3duZWQoKSkKKyAgICB9Cit9CisKK2ltcGwgRGlzcGxheSBmb3IgTmV0QXJlYSB7Cisg
ICAgZm4gZm10KCZzZWxmLCBmOiAmbXV0IHN0ZDo6Zm10OjpGb3JtYXR0ZXI8J18+KSAtPiBzdGQ6
OmZtdDo6UmVzdWx0IHsKKyAgICAgICAgd3JpdGUhKGYsICJ7fSIsIHNlbGYuMCkKKyAgICB9Cit9
CisKK2ltcGwgRnJvbVN0ciBmb3IgTmV0QXJlYSB7CisgICAgdHlwZSBFcnIgPSBOZXRFcnJvcjsK
KworICAgIGZuIGZyb21fc3RyKHM6ICZzdHIpIC0+IFJlc3VsdDxTZWxmLCBTZWxmOjpFcnI+IHsK
KyAgICAgICAgaWYgcy5sZW4oKSAhPSA0IHsKKyAgICAgICAgICAgIEVycihOZXRFcnJvcjo6SW52
YWxpZEFyZWEpCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBPayhTZWxmKHMudG9fb3du
ZWQoKSkpCisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vLyBTeXN0ZW0gaWRlbnRpZmllcjogMTky
MS42ODAwLjEwMDIgLSBmb3Igc3lzdGVtIGlkZW50aWZpZXJzIHdlIHJlY29tbWVuZCB0byB1c2Ug
SVAgYWRkcmVzcyBvcgorLy8vIE1BQyBhZGRyZXNzIG9mIHRoZSByb3V0ZXIgaXRzZWxmLiBUaGUg
d2F5IHRvIGNvbnN0cnVjdCB0aGlzIGlzIHRvIGtlZXAgYWxsIG9mIHRoZSB6ZXJvZXMgb2YgdGhl
CisvLy8gcm91dGVyIElQIGFkZHJlc3MsIGFuZCB0aGVuIGNoYW5nZSB0aGUgcGVyaW9kcyBmcm9t
IGJlaW5nIGV2ZXJ5IHRocmVlIG51bWJlcnMgdG8gZXZlcnkgZm91cgorLy8vIG51bWJlcnMuIFRo
ZSBhZGRyZXNzIHRoYXQgaXMgbGlzdGVkIGhlcmUgaXMgMTkyLjE2OC4xLjIsIHdoaWNoIGlmIGV4
cGFuZGVkIHdpbGwgdHVybiBpbnRvCisvLy8gMTkyLjE2OC4wMDEuMDAyLiBUaGVuIGFsbCBvbmUg
aGFzIHRvIGRvIGlzIG1vdmUgdGhlIGRvdHMgdG8gaGF2ZSBmb3VyIG51bWJlcnMgaW5zdGVhZCBv
ZiB0aHJlZS4KKy8vLyBUaGlzIGdpdmVzIHVzIDE5MjEuNjgwMC4xMDAyLgorI1tkZXJpdmUoRGVi
dWcsIERlc2VyaWFsaXplRnJvbVN0ciwgU2VyaWFsaXplLCBDbG9uZSwgSGFzaCwgUGFydGlhbEVx
LCBFcSwgUGFydGlhbE9yZCwgT3JkKV0KK3N0cnVjdCBOZXRTeXN0ZW1JZChTdHJpbmcpOworCitp
bXBsIERpc3BsYXkgZm9yIE5ldFN5c3RlbUlkIHsKKyAgICBmbiBmbXQoJnNlbGYsIGY6ICZtdXQg
c3RkOjpmbXQ6OkZvcm1hdHRlcjwnXz4pIC0+IHN0ZDo6Zm10OjpSZXN1bHQgeworICAgICAgICB3
cml0ZSEoZiwgInt9Iiwgc2VsZi4wKQorICAgIH0KK30KKworaW1wbCBGcm9tU3RyIGZvciBOZXRT
eXN0ZW1JZCB7CisgICAgdHlwZSBFcnIgPSBOZXRFcnJvcjsKKworICAgIGZuIGZyb21fc3RyKHM6
ICZzdHIpIC0+IFJlc3VsdDxTZWxmLCBTZWxmOjpFcnI+IHsKKyAgICAgICAgaWYgcy5zcGxpdCgi
LiIpLmNvdW50KCkgIT0gMyB8fCBzLnNwbGl0KCIuIikuYW55KHxvY3RldHwgb2N0ZXQubGVuKCkg
IT0gNCkgeworICAgICAgICAgICAgRXJyKE5ldEVycm9yOjpJbnZhbGlkQXJlYSkKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIE9rKFNlbGYocy50b19vd25lZCgpKSkKKyAgICAgICAgfQor
ICAgIH0KK30KKworLy8vIE5FVCBzZWxlY3RvcjogMDAgTXVzdCBhbHdheXMgYmUgMDAuIFRoaXMg
c2V0dGluZyBpbmRpY2F0ZXMg4oCcdGhpcyBzeXN0ZW3igJ0gb3Ig4oCcbG9jYWwgc3lzdGVtLuKA
nQorI1tkZXJpdmUoRGVidWcsIERlc2VyaWFsaXplRnJvbVN0ciwgU2VyaWFsaXplLCBDbG9uZSwg
SGFzaCwgUGFydGlhbEVxLCBFcSwgUGFydGlhbE9yZCwgT3JkKV0KK3N0cnVjdCBOZXRTZWxlY3Rv
cihTdHJpbmcpOworCitpbXBsIERlZmF1bHQgZm9yIE5ldFNlbGVjdG9yIHsKKyAgICBmbiBkZWZh
dWx0KCkgLT4gU2VsZiB7CisgICAgICAgIFNlbGYoIjAwIi50b19vd25lZCgpKQorICAgIH0KK30K
KworaW1wbCBEaXNwbGF5IGZvciBOZXRTZWxlY3RvciB7CisgICAgZm4gZm10KCZzZWxmLCBmOiAm
bXV0IHN0ZDo6Zm10OjpGb3JtYXR0ZXI8J18+KSAtPiBzdGQ6OmZtdDo6UmVzdWx0IHsKKyAgICAg
ICAgd3JpdGUhKGYsICJ7fSIsIHNlbGYuMCkKKyAgICB9Cit9CisKK2ltcGwgRnJvbVN0ciBmb3Ig
TmV0U2VsZWN0b3IgeworICAgIHR5cGUgRXJyID0gTmV0RXJyb3I7CisKKyAgICBmbiBmcm9tX3N0
cihzOiAmc3RyKSAtPiBSZXN1bHQ8U2VsZiwgU2VsZjo6RXJyPiB7CisgICAgICAgIGlmIHMubGVu
KCkgIT0gMiB7CisgICAgICAgICAgICBFcnIoTmV0RXJyb3I6OkludmFsaWROZXRTZWxlY3RvcikK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIE9rKFNlbGYocy50b19vd25lZCgpKSkKKyAg
ICAgICAgfQorICAgIH0KK30KKworLy8vIFRoZSBmaXJzdCBwYXJ0IChhcmVhKSBvZiB0aGUgYG5l
dGAgaWRlbnRpZmllci4gVGhlIGVudGlyZSBPcGVuRmFicmljIGZhYnJpYyBoYXMgdG8gaGF2ZSB0
aGUKKy8vLyBzYW1lIGFyZWEuCisvLy8gZi5lLjogIjQ5LjAwMDEiCisjW2Rlcml2ZSgKKyAgICBE
ZWJ1ZywgRGVzZXJpYWxpemVGcm9tU3RyLCBTZXJpYWxpemVEaXNwbGF5LCBDbG9uZSwgSGFzaCwg
UGFydGlhbEVxLCBFcSwgUGFydGlhbE9yZCwgT3JkLAorKV0KK3B1YiBzdHJ1Y3QgTmV0IHsKKyAg
ICBhZmk6IE5ldEFGSSwKKyAgICBhcmVhOiBOZXRBcmVhLAorICAgIHN5c3RlbTogTmV0U3lzdGVt
SWQsCisgICAgc2VsZWN0b3I6IE5ldFNlbGVjdG9yLAorfQorCitpbXBsIEZyb21TdHIgZm9yIE5l
dCB7CisgICAgdHlwZSBFcnIgPSBOZXRFcnJvcjsKKworICAgIGZuIGZyb21fc3RyKHM6ICZzdHIp
IC0+IFJlc3VsdDxTZWxmLCBTZWxmOjpFcnI+IHsKKyAgICAgICAgaWYgcy5zcGxpdCgiLiIpLmNv
dW50KCkgIT0gNiB7CisgICAgICAgICAgICByZXR1cm4gRXJyKE5ldEVycm9yOjpXcm9uZ0xlbmd0
aCk7CisgICAgICAgIH0KKyAgICAgICAgbGV0IG11dCBpdGVyID0gcy5zcGxpdCgiLiIpOworICAg
ICAgICBsZXQgYWZpID0gaXRlci5uZXh0KCkub2tfb3IoTmV0RXJyb3I6Oldyb25nTGVuZ3RoKT87
CisgICAgICAgIGxldCBhcmVhID0gaXRlci5uZXh0KCkub2tfb3IoTmV0RXJyb3I6Oldyb25nTGVu
Z3RoKT87CisgICAgICAgIGxldCBzeXN0ZW0gPSBmb3JtYXQhKAorICAgICAgICAgICAgInt9Lnt9
Lnt9IiwKKyAgICAgICAgICAgIGl0ZXIubmV4dCgpLm9rX29yKE5ldEVycm9yOjpXcm9uZ0xlbmd0
aCk/LAorICAgICAgICAgICAgaXRlci5uZXh0KCkub2tfb3IoTmV0RXJyb3I6Oldyb25nTGVuZ3Ro
KT8sCisgICAgICAgICAgICBpdGVyLm5leHQoKS5va19vcihOZXRFcnJvcjo6V3JvbmdMZW5ndGgp
PworICAgICAgICApOworICAgICAgICBsZXQgc2VsZWN0b3IgPSBpdGVyLm5leHQoKS5va19vcihO
ZXRFcnJvcjo6V3JvbmdMZW5ndGgpPzsKKyAgICAgICAgT2soU2VsZiB7CisgICAgICAgICAgICBh
Zmk6IGFmaS5wYXJzZSgpPywKKyAgICAgICAgICAgIGFyZWE6IGFyZWEucGFyc2UoKT8sCisgICAg
ICAgICAgICBzeXN0ZW06IHN5c3RlbS5wYXJzZSgpPywKKyAgICAgICAgICAgIHNlbGVjdG9yOiBz
ZWxlY3Rvci5wYXJzZSgpPywKKyAgICAgICAgfSkKKyAgICB9Cit9CisKK2ltcGwgRGlzcGxheSBm
b3IgTmV0IHsKKyAgICBmbiBmbXQoJnNlbGYsIGY6ICZtdXQgc3RkOjpmbXQ6OkZvcm1hdHRlcjwn
Xz4pIC0+IHN0ZDo6Zm10OjpSZXN1bHQgeworICAgICAgICB3cml0ZSEoCisgICAgICAgICAgICBm
LAorICAgICAgICAgICAgInt9Lnt9Lnt9Lnt9IiwKKyAgICAgICAgICAgIHNlbGYuYWZpLCBzZWxm
LmFyZWEsIHNlbGYuc3lzdGVtLCBzZWxmLnNlbGVjdG9yCisgICAgICAgICkKKyAgICB9Cit9CisK
KyNbY2ZnKHRlc3QpXQorbW9kIHRlc3RzIHsKKyAgICB1c2Ugc3VwZXI6Oio7CisKKyAgICAjW3Rl
c3RdCisgICAgZm4gdGVzdF9uZXRfZnJvbV9zdHIoKSB7CisgICAgICAgIGxldCBpbnB1dCA9ICI0
OS4wMDAxLjE5MjEuNjgwMC4xMDAyLjAwIjsKKyAgICAgICAgbGV0IG5ldCA9IGlucHV0LnBhcnNl
Ojo8TmV0PigpLmV4cGVjdCgidGhpcyBuZXQgc2hvdWxkIHBhcnNlIik7CisgICAgICAgIGFzc2Vy
dF9lcSEobmV0LmFmaSwgTmV0QUZJKCI0OSIudG9fb3duZWQoKSkpOworICAgICAgICBhc3NlcnRf
ZXEhKG5ldC5hcmVhLCBOZXRBcmVhKCIwMDAxIi50b19vd25lZCgpKSk7CisgICAgICAgIGFzc2Vy
dF9lcSEobmV0LnN5c3RlbSwgTmV0U3lzdGVtSWQoIjE5MjEuNjgwMC4xMDAyIi50b19vd25lZCgp
KSk7CisgICAgICAgIGFzc2VydF9lcSEobmV0LnNlbGVjdG9yLCBOZXRTZWxlY3RvcigiMDAiLnRv
X293bmVkKCkpKTsKKworICAgICAgICBsZXQgaW5wdXQgPSAiNDUuMDIwMC4wMTAwLjEwMDEuMDAx
MC4wMSI7CisgICAgICAgIGxldCBuZXQgPSBpbnB1dC5wYXJzZTo6PE5ldD4oKS5leHBlY3QoInRo
aXMgbmV0IHNob3VsZCBwYXJzZSIpOworICAgICAgICBhc3NlcnRfZXEhKG5ldC5hZmksIE5ldEFG
SSgiNDUiLnRvX293bmVkKCkpKTsKKyAgICAgICAgYXNzZXJ0X2VxIShuZXQuYXJlYSwgTmV0QXJl
YSgiMDIwMCIudG9fb3duZWQoKSkpOworICAgICAgICBhc3NlcnRfZXEhKG5ldC5zeXN0ZW0sIE5l
dFN5c3RlbUlkKCIwMTAwLjEwMDEuMDAxMCIudG9fb3duZWQoKSkpOworICAgICAgICBhc3NlcnRf
ZXEhKG5ldC5zZWxlY3RvciwgTmV0U2VsZWN0b3IoIjAxIi50b19vd25lZCgpKSk7CisgICAgfQor
CisgICAgI1t0ZXN0XQorICAgIGZuIHRlc3RfbmV0X2Zyb21fc3RyX2ZhaWxlZCgpIHsKKyAgICAg
ICAgbGV0IGlucHV0ID0gIjQ5LjAwMDEuMTkyMS42ODAwLjEwMDIuMDAwIjsKKyAgICAgICAgYXNz
ZXJ0IShtYXRjaGVzISgKKyAgICAgICAgICAgIGlucHV0LnBhcnNlOjo8TmV0PigpLAorICAgICAg
ICAgICAgRXJyKE5ldEVycm9yOjpJbnZhbGlkTmV0U2VsZWN0b3IpCisgICAgICAgICkpOworCisg
ICAgICAgIGxldCBpbnB1dCA9ICI0OS4wMDAxLjE5MjEuNjgwMC4xMDAyLjAwLjAwIjsKKyAgICAg
ICAgYXNzZXJ0IShtYXRjaGVzIShpbnB1dC5wYXJzZTo6PE5ldD4oKSwgRXJyKE5ldEVycm9yOjpX
cm9uZ0xlbmd0aCkpKTsKKworICAgICAgICBsZXQgaW5wdXQgPSAiNDkuMDAwMS4xOTIxLjY4MDAu
MTAwMDIuMDAiOworICAgICAgICBhc3NlcnQhKG1hdGNoZXMhKGlucHV0LnBhcnNlOjo8TmV0Pigp
LCBFcnIoTmV0RXJyb3I6OkludmFsaWRBcmVhKSkpOworCisgICAgICAgIGxldCBpbnB1dCA9ICI0
MDkuMDAwMS4xOTIxLjY4MDAuMTAwMi4wMCI7CisgICAgICAgIGFzc2VydCEobWF0Y2hlcyEoaW5w
dXQucGFyc2U6OjxOZXQ+KCksIEVycihOZXRFcnJvcjo6SW52YWxpZEFGSSkpKTsKKworICAgICAg
ICBsZXQgaW5wdXQgPSAiNDkuMDAwMDEuMTkyMS42ODAwLjEwMDIuMDAiOworICAgICAgICBhc3Nl
cnQhKG1hdGNoZXMhKGlucHV0LnBhcnNlOjo8TmV0PigpLCBFcnIoTmV0RXJyb3I6OkludmFsaWRB
cmVhKSkpOworICAgIH0KKworICAgICNbdGVzdF0KKyAgICBmbiB0ZXN0X25ldF9kaXNwbGF5KCkg
eworICAgICAgICBsZXQgbmV0ID0gTmV0IHsKKyAgICAgICAgICAgIGFmaTogTmV0QUZJKCI0OSIu
dG9fb3duZWQoKSksCisgICAgICAgICAgICBhcmVhOiBOZXRBcmVhKCIwMDAxIi50b19vd25lZCgp
KSwKKyAgICAgICAgICAgIHN5c3RlbTogTmV0U3lzdGVtSWQoIjE5MjEuNjgwMC4xMDAyIi50b19v
d25lZCgpKSwKKyAgICAgICAgICAgIHNlbGVjdG9yOiBOZXRTZWxlY3RvcigiMDAiLnRvX293bmVk
KCkpLAorICAgICAgICB9OworICAgICAgICBhc3NlcnRfZXEhKGZvcm1hdCEoIntuZXR9IiksICI0
OS4wMDAxLjE5MjEuNjgwMC4xMDAyLjAwIik7CisgICAgfQorfQorCi0tIAoyLjM5LjUKCgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1h
aWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94
bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==