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==