X-Original-To: alpine-aports@mail.alpinelinux.org Delivered-To: alpine-aports@mail.alpinelinux.org Received: from mail.alpinelinux.org (dallas-a1.alpinelinux.org [127.0.0.1]) by mail.alpinelinux.org (Postfix) with ESMTP id E7AC5DC0431 for ; Sat, 9 Jan 2016 21:05:40 +0000 (UTC) Received: from st11p00im-asmtp004.me.com (st11p00im-asmtp004.me.com [17.172.80.98]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by mail.alpinelinux.org (Postfix) with ESMTPS id B9074DC001E for ; Sat, 9 Jan 2016 21:05:40 +0000 (UTC) X-Mailinglist: alpine-aports Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: MIME-version: 1.0 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8" Received: from alpine.lan (c-98-226-153-66.hsd1.il.comcast.net [98.226.153.66]) by st11p00im-asmtp004.me.com (Oracle Communications Messaging Server 7.0.5.36.0 64bit (built Sep 8 2015)) with ESMTPSA id <0O0P00MIDEKS1320@st11p00im-asmtp004.me.com> for alpine-aports@lists.alpinelinux.org; Sat, 09 Jan 2016 21:05:39 +0000 (GMT) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-01-09_11:,, signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 clxscore=1015 suspectscore=4 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1510270003 definitions=main-1601090400 From: Ben Allen To: alpine-aports@lists.alpinelinux.org Cc: Ben Allen Subject: [alpine-aports] [PATCH v2] main/nftables: Update init script Date: Sat, 09 Jan 2016 21:04:20 +0000 Message-id: <1452373460-3759-1-git-send-email-bensallen@me.com> X-Mailer: git-send-email 2.7.0 In-reply-to: <1452228294-12662-1-git-send-email-bensallen@me.com> References: <1452228294-12662-1-git-send-email-bensallen@me.com> X-Virus-Scanned: ClamAV using ClamSMTP VXBkYXRpbmcgbWFpbi9uZnRhYmxlcyBpbml0IHNjcmlwdC4gQmFzZWQgb24gdGhlIG5ld2VyIEdl bnRvbyBpbml0IHNjcmlwdDogaHR0cHM6Ly9naXR3ZWIuZ2VudG9vLm9yZy9yZXBvL2dlbnRvby5n aXQvdHJlZS9uZXQtZmlyZXdhbGwvbmZ0YWJsZXMvZmlsZXMvbmZ0YWJsZXMuaW5pdC1yMi4gTWVy Z2VkIG5mdGFibGVzLnNoIGZyb20gR2VudG9vJ3MgdmVyc2lvbiBpbnRvIHRoZSBpbml0IHNjcmlw dCBpdHNlbGYsIGFuZCByZW1vdmVkIHRoZSBsZWdhY3kgZnVuY3Rpb25hbGl0eS4gQWRkaW5nIGRl c2NyaXB0aW9ucyBmb3IgZWFjaCBhY3Rpb24gYXMgd2VsbC4NCi0tLQ0KQ2hhbmdlcyB2MSAtPiB2 MjoNCiAtIERvbid0IGV4cG9zZSBjbGVhciBhcyBhIGNvbW1hbmQuIFN0b3AgcHJvdmlkZXMgdGhl IHNhbWUgZnVuY3Rpb25hbGl0eSwgYW5kIHJlbW92aW5nIHRoZSBlYmVnaW4gaW4gY2xlYXIgbWFr ZXMgbWVzc2FnaW5nIGNsZWFuZXIuDQogLSBTaW1wbGlmeSByZWxvYWQgdG8ganVzdCBjYWxsIHN0 YXJ0IHNpbmNlIGl0IHRoZXkgZG8gdGhlIHNhbWUgdGhpbmcuDQogLSBGaXggIyEgbGluZSB0byBi ZSAvc2Jpbi9vcGVucmMtcnVuLg0KDQogbWFpbi9uZnRhYmxlcy9BUEtCVUlMRCAgICAgICB8ICAg OCArLQ0KIG1haW4vbmZ0YWJsZXMvbmZ0YWJsZXMuaW5pdGQgfCAxOTIgKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIDIgZmlsZXMgY2hhbmdlZCwgOTEgaW5zZXJ0 aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQ0KIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUg bWFpbi9uZnRhYmxlcy9uZnRhYmxlcy5pbml0ZA0KDQpkaWZmIC0tZ2l0IGEvbWFpbi9uZnRhYmxl cy9BUEtCVUlMRCBiL21haW4vbmZ0YWJsZXMvQVBLQlVJTEQNCmluZGV4IDJjOTM5MzkuLmMxMjUz OTggMTAwNjQ0DQotLS0gYS9tYWluL25mdGFibGVzL0FQS0JVSUxEDQorKysgYi9tYWluL25mdGFi bGVzL0FQS0JVSUxEDQpAQCAtMiw3ICsyLDcgQEANCiAjIE1haW50YWluZXI6IFPDtnJlbiBUZW1w ZWwgPHNvZXJlbithbHBpbmVAc29lcmVuLXRlbXBlbC5uZXQ+DQogcGtnbmFtZT1uZnRhYmxlcw0K IHBrZ3Zlcj0wLjUNCi1wa2dyZWw9MA0KK3BrZ3JlbD0xDQogcGtnZGVzYz0iTmV0ZmlsdGVyIHRh YmxlcyB1c2Vyc3BhY2UgdG9vbHMiDQogdXJsPSJodHRwOi8vbmV0ZmlsdGVyLm9yZy9wcm9qZWN0 cy9uZnRhYmxlcy8iDQogYXJjaD0iYWxsIg0KQEAgLTU3LDEwICs1NywxMCBAQCBwYWNrYWdlKCkg ew0KIA0KIG1kNXN1bXM9Ijk0YmZlMWM1NGJjYjlmNmVkOTc0ODM1ZjJmY2E4MDY5ICBuZnRhYmxl cy0wLjUudGFyLmJ6Mg0KIDUyMjczYTU0OGY3Y2JmZTE3YmE5YmE5N2IxMGNmNjg1ICBuZnRhYmxl cy5jb25mZA0KLTYzZTMzMGQ1MTRhZWQ4MzljZTk5ODVjM2NiOTE4ZTJjICBuZnRhYmxlcy5pbml0 ZCINCisxMjg5NzdjMWJiNmMxN2M4YWYwMDQzMGY2NmJhODAyOSAgbmZ0YWJsZXMuaW5pdGQiDQog c2hhMjU2c3Vtcz0iMWZiNmRmZjMzM2Q4YTRmYzM0N2NiYmUyNzNiZjkwNWEyNjM0YjI3YThjMzlk ZjBkM2E0NWQ1YTNmZGUxMGFkNiAgbmZ0YWJsZXMtMC41LnRhci5iejINCiA4ZjA5YWIzZjg2ZjMy NmQzYjc4ZGNhNTBkYjBiZmRkZTJkOGJmNWU1ZDQ1ZTM0OTVhODM2ZWRlYmU5OWVjMmZmICBuZnRh Ymxlcy5jb25mZA0KLTc4Nzg3Mzg5OWMwN2M3NGU4ZDI2NzMxOTIyZGYyZDI2ZWNiOThlMWMyZTJj YTljZGYyNDUwZjg1NjIxNzMwZmYgIG5mdGFibGVzLmluaXRkIg0KKzEwODFmYzk4MDRiZDNkYjlm N2JjOGMyMDQ1MTk3MTVmZGJhYTFlMzgxOWZkNjdjOWEyZGFkNDY5YThlYzE3MDIgIG5mdGFibGVz LmluaXRkIg0KIHNoYTUxMnN1bXM9ImQ1YWM0NmJhZGEyNjUyMmU1OTQ2MWUzNmQ3OTNhMmY0ZGJm NDJlMDcwZDcxYWMzMzI1OWQ4NmIzNDNjMGQ3NDM2OTc1OTg4YjdlNzg3OGMzNDBmOWQ4MTQ3OWEx MWE2NjUxOGYxMzA3Mzg0NjM1YWUwMjI5YjJmOTY5ZjhmMzQyICBuZnRhYmxlcy0wLjUudGFyLmJ6 Mg0KIGY3MDllMjAzZDk0OTM4MGRjZThmZmRhZWQ2MTZjMDQ3MjgwZDNmZTc0NDhiYjAyNGE2ZjZj MDFhMTdjMTFiZjdjYWFhNWY2N2I0MTJiYzkwYzliZmY0Y2U5MWE2ZmQ1ZTUyNzBkMjU5ZGMzMGZk Y2RhODFkZDJmNjIyMWFkMGQ4ICBuZnRhYmxlcy5jb25mZA0KLWM5OWVjYzAzYjE5NjE1YWE1M2M2 YjhkYmVjMmIyMDA2YjI4YjhmNDQ4MTdlMDhhMzBhNDg5NzBjMTAwZjQwODc3Y2ZiNmMyMTRlYjZi MzZiNmNkMDUxN2EwZTA3ZDA3ZjExNTdkOTMwNjYxYTMxYWM0NmZiYzJlYzBkM2E1MDJkICBuZnRh Ymxlcy5pbml0ZCINCitlYmVhMTBlNjg0ZmQ2ZTI1M2MzMzRkYzk5N2U3ZmUwMjQ1OWMzODViM2Rj ZGQ4MGZiNjg0MDQ3NWY1YjU5Nzg2Zjk4ZGUwNmY0NDkwMjQyMzMxODVhYWJkZTA0YTc3YzcwOTI1 NTM1YjhkYTBjMGEwNTcyZDFjNDg3ZjZkNDUwNCAgbmZ0YWJsZXMuaW5pdGQiDQpkaWZmIC0tZ2l0 IGEvbWFpbi9uZnRhYmxlcy9uZnRhYmxlcy5pbml0ZCBiL21haW4vbmZ0YWJsZXMvbmZ0YWJsZXMu aW5pdGQNCm9sZCBtb2RlIDEwMDY0NA0KbmV3IG1vZGUgMTAwNzU1DQppbmRleCAyMTFlZDczLi42 ZmY1ZGMwDQotLS0gYS9tYWluL25mdGFibGVzL25mdGFibGVzLmluaXRkDQorKysgYi9tYWluL25m dGFibGVzL25mdGFibGVzLmluaXRkDQpAQCAtMyw2NiArMywxMDIgQEANCiAjIENvcHlyaWdodCAx OTk5LTIwMTQgR2VudG9vIEZvdW5kYXRpb24NCiAjIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjINCiANCi1leHRyYV9jb21tYW5k cz0iY2xlYXIgbGlzdCBwYW5pYyBzYXZlIg0KK2V4dHJhX2NvbW1hbmRzPSJsaXN0IHBhbmljIHNh dmUiDQogZXh0cmFfc3RhcnRlZF9jb21tYW5kcz0icmVsb2FkIg0KIA0KK2Rlc2NyaXB0aW9uPSJN YW5hZ2UgbmZ0YWJsZSBiYXNlZCBmaXJld2FsbC4iDQorZGVzY3JpcHRpb25fc2F2ZT0iU2F2ZSBj dXJyZW50IG5mdGFibGVzIHJ1bGVzZXRzIHRvIGRpc2suIg0KK2Rlc2NyaXB0aW9uX2xpc3Q9IkRp c3BsYXlzIHRoZSBjdXJyZW50IG5mdGFibGVzIHJ1bGVzZXQuIg0KK2Rlc2NyaXB0aW9uX3Bhbmlj PSJJbW1lZGlhdGVseSBkcm9wIGFsbCBwYWNrZXRzIG9uIGFsbCBpbnRlcmZhY2VzLiINCitkZXNj cmlwdGlvbl9yZWxvYWQ9IkNsZWFyIGN1cnJlbnQgcnVsZXNldHMgYW5kIGxvYWQgcnVsZXNldHMg ZnJvbSB0aGUgc2F2ZWQgcnVsZXNldCBmaWxlcy4iDQorDQogZGVwZW5kKCkgew0KICAgICBuZWVk IGxvY2FsbW91bnQgIzQzNDc3NA0KICAgICBiZWZvcmUgbmV0DQogfQ0KIA0KLWNoZWNra2VybmVs KCkgew0KLSAgICBpZiAhIG5mdCBsaXN0IHRhYmxlcyA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCi0g ICAgICAgIGVlcnJvciAiWW91ciBrZXJuZWwgbGFja3MgbmZ0YWJsZXMgc3VwcG9ydCwgcGxlYXNl IGxvYWQiDQotICAgICAgICBlZXJyb3IgImFwcHJvcHJpYXRlIG1vZHVsZXMgYW5kIHRyeSBhZ2Fp bi4iDQotICAgICAgICByZXR1cm4gMQ0KLSAgICBmaQ0KK3N0YXJ0X3ByZSgpIHsNCisgICAgY2hl Y2trZXJuZWwgfHwgcmV0dXJuIDENCisgICAgY2hlY2tjb25maWcgfHwgcmV0dXJuIDENCiAgICAg cmV0dXJuIDANCiB9DQogDQotY2hlY2tjb25maWcoKSB7DQotICAgIGlmIFsgISAtZiAke05GVEFC TEVTX1NBVkV9IF07IHRoZW4NCi0gICAgICAgIGVlcnJvciAiTm90IHN0YXJ0aW5nIG5mdGFibGVz LiAgRmlyc3QgY3JlYXRlIHNvbWUgcnVsZXMgdGhlbiBydW46Ig0KLSAgICAgICAgZWVycm9yICJy Yy1zZXJ2aWNlIG5mdGFibGVzIHNhdmUiDQotICAgICAgICByZXR1cm4gMQ0KLSAgICBmaQ0KK2Ns ZWFyKCkgew0KKyAgICBuZnQgZmx1c2ggcnVsZXNldCB8fCByZXR1cm4gMQ0KICAgICByZXR1cm4g MA0KIH0NCiANCi1nZXRmYW1pbGllcygpIHsNCi0gICAgbG9jYWwgZmFtaWxpZXMNCi0gICAgZm9y IGwzZiBpbiBpcCBhcnAgaXA2IGJyaWRnZSBpbmV0OyBkbw0KLSAgICAgICAgaWYgbmZ0IGxpc3Qg dGFibGVzICR7bDNmfSA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuDQotICAgICAgICAgICAgZmFtaWxp ZXM9IiR7ZmFtaWxpZXN9JHtsM2Z9ICINCi0gICAgICAgIGZpDQotICAgIGRvbmUNCi0gICAgZWNo byAke2ZhbWlsaWVzfQ0KK2xpc3QoKSB7DQorICAgIG5mdCBsaXN0IHJ1bGVzZXQgfHwgcmV0dXJu IDENCisgICAgcmV0dXJuIDANCiB9DQogDQotY2xlYXJORlQoKSB7DQotICAgIG5mdCBmbHVzaCBy dWxlc2V0DQorcGFuaWMoKSB7DQorICAgIGNoZWNra2VybmVsIHx8IHJldHVybiAxDQorICAgIGlm IHNlcnZpY2Vfc3RhcnRlZCAke1JDX1NWQ05BTUV9OyB0aGVuDQorICAgICAgICByYy1zZXJ2aWNl ICR7UkNfU1ZDTkFNRX0gc3RvcA0KKyAgICBmaQ0KKw0KKyAgICBlYmVnaW4gIkRyb3BwaW5nIGFs bCBwYWNrZXRzIg0KKyAgICBjbGVhcg0KKyAgICBpZiBuZnQgY3JlYXRlIHRhYmxlIGlwIGZpbHRl ciA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCisJbmZ0IC1mIC9kZXYvc3RkaW4gPDwtRU9GDQorCSAg ICB0YWJsZSBpcCBmaWx0ZXIgew0KKwkgICAgICAgICAgICAgICAgICAgIGNoYWluIGlucHV0IHsN CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBmaWx0ZXIgaG9vayBp bnB1dCBwcmlvcml0eSAwOw0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk cm9wDQorCSAgICAgICAgICAgICAgICAgICAgfQ0KKwkgICAgICAgICAgICAgICAgICAgIGNoYWlu IGZvcndhcmQgew0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIGZp bHRlciBob29rIGZvcndhcmQgcHJpb3JpdHkgMDsNCisJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZHJvcA0KKwkgICAgICAgICAgICAgICAgICAgIH0NCisJICAgICAgICAgICAg ICAgICAgICBjaGFpbiBvdXRwdXQgew0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0eXBlIGZpbHRlciBob29rIG91dHB1dCBwcmlvcml0eSAwOw0KKwkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkcm9wDQorCSAgICAgICAgICAgICAgICAgICAgfQ0KKwkg ICAgfQ0KKwlFT0YNCisgICAgZmkNCisgICAgaWYgbmZ0IGNyZWF0ZSB0YWJsZSBpcDYgZmlsdGVy ID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKwluZnQgLWYgL2Rldi9zdGRpbiA8PC1FT0YNCisJICAg IHRhYmxlIGlwNiBmaWx0ZXIgew0KKwkgICAgICAgICAgICAgICAgICAgIGNoYWluIGlucHV0IHsN CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBmaWx0ZXIgaG9vayBp bnB1dCBwcmlvcml0eSAwOw0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk cm9wDQorCSAgICAgICAgICAgICAgICAgICAgfQ0KKwkgICAgICAgICAgICAgICAgICAgIGNoYWlu IGZvcndhcmQgew0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIGZp bHRlciBob29rIGZvcndhcmQgcHJpb3JpdHkgMDsNCisJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZHJvcA0KKwkgICAgICAgICAgICAgICAgICAgIH0NCisJICAgICAgICAgICAg ICAgICAgICBjaGFpbiBvdXRwdXQgew0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0eXBlIGZpbHRlciBob29rIG91dHB1dCBwcmlvcml0eSAwOw0KKwkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkcm9wDQorCSAgICAgICAgICAgICAgICAgICAgfQ0KKwkg ICAgfQ0KKwlFT0YNCisgICAgZmkNCiB9DQogDQotYWRkcGFuaWN0YWJsZSgpIHsNCi0gICAgbG9j YWwgbDNmPSQxDQotICAgIG5mdCBhZGQgdGFibGUgJHtsM2Z9IHBhbmljDQotICAgIG5mdCBhZGQg Y2hhaW4gJHtsM2Z9IHBhbmljIGlucHV0IFx7IHR5cGUgZmlsdGVyIGhvb2sgaW5wdXQgcHJpb3Jp dHkgMFw7IFx9DQotICAgIG5mdCBhZGQgY2hhaW4gJHtsM2Z9IHBhbmljIG91dHB1dCBceyB0eXBl IGZpbHRlciBob29rIG91dHB1dCBwcmlvcml0eSAwXDsgXH0NCi0gICAgbmZ0IGFkZCBjaGFpbiAk e2wzZn0gcGFuaWMgZm9yd2FyZCBceyB0eXBlIGZpbHRlciBob29rIGZvcndhcmQgcHJpb3JpdHkg MFw7IFx9DQotICAgIG5mdCBhZGQgcnVsZSAke2wzZn0gcGFuaWMgaW5wdXQgZHJvcA0KLSAgICBu ZnQgYWRkIHJ1bGUgJHtsM2Z9IHBhbmljIG91dHB1dCBkcm9wDQotICAgIG5mdCBhZGQgcnVsZSAk e2wzZn0gcGFuaWMgZm9yd2FyZCBkcm9wDQorcmVsb2FkKCkgew0KKyAgICBzdGFydA0KIH0NCiAN Ci1zdGFydF9wcmUoKSB7DQotICAgIGNoZWNra2VybmVsIHx8IHJldHVybiAxDQotICAgIGNoZWNr Y29uZmlnIHx8IHJldHVybiAxDQotCXJldHVybiAwDQorc2F2ZSgpIHsNCisgICAgZWJlZ2luICJT YXZpbmcgbmZ0YWJsZXMgc3RhdGUiDQorICAgIGNoZWNrcGF0aCAtcSAtZCAiJChkaXJuYW1lICIk e05GVEFCTEVTX1NBVkV9IikiDQorICAgIGNoZWNrcGF0aCAtcSAtbSAwNjAwIC1mICIke05GVEFC TEVTX1NBVkV9Ig0KKyAgICBsb2NhbCB0bXBfc2F2ZT0iJHtORlRBQkxFU19TQVZFfS50bXAiDQor ICAgIG5mdCBsaXN0IHJ1bGVzZXQgPiAke3RtcF9zYXZlfQ0KKyAgICByZXR2YWw9JD8NCisgICAg aWYgWyAke3JldHZhbH0gXTsgdGhlbg0KKyAgICAgICBtdiAke3RtcF9zYXZlfSAke05GVEFCTEVT X1NBVkV9DQorICAgIGZpDQorICAgIHJldHVybiAkPw0KIH0NCiANCiBzdGFydCgpIHsNCisgICAg Y2xlYXINCiAgICAgZWJlZ2luICJMb2FkaW5nIG5mdGFibGVzIHN0YXRlIGFuZCBzdGFydGluZyBm aXJld2FsbCINCi0gICAgY2xlYXJORlQNCiAgICAgbmZ0IC1mICR7TkZUQUJMRVNfU0FWRX0NCiAg ICAgZWVuZCAkPw0KIH0NCkBAIC03Myw3OCArMTA5LDI0IEBAIHN0b3AoKSB7DQogICAgIGZpDQog DQogICAgIGViZWdpbiAiU3RvcHBpbmcgZmlyZXdhbGwiDQotICAgIGNsZWFyTkZUDQorICAgIGNs ZWFyDQogICAgIGVlbmQgJD8NCiB9DQogDQotcmVsb2FkKCkgew0KLSAgICBjaGVja2tlcm5lbCB8 fCByZXR1cm4gMQ0KLSAgICAjIGNoZWNrcnVsZXMgfHwgcmV0dXJuIDENCi0gICAgZWJlZ2luICJG bHVzaGluZyBmaXJld2FsbCINCi0gICAgY2xlYXJORlQNCi0NCi0gICAgc3RhcnQNCi19DQotDQot Y2xlYXIoKSB7DQotICAgIGNsZWFyTkZUDQotfQ0KLQ0KLWxpc3QoKSB7DQotICAgIGxvY2FsIGwz Zg0KLQ0KLSAgICBmb3IgbDNmIGluICQoZ2V0ZmFtaWxpZXMpOyBkbw0KLSAgICAgICAgbmZ0IGxp c3QgdGFibGVzICR7bDNmfSB8IHdoaWxlIHJlYWQgbGluZTsgZG8NCi0gICAgICAgICAgICBsaW5l PSQoZWNobyAke2xpbmV9IHwgc2VkICJzL3RhYmxlL3RhYmxlICR7bDNmfS8iKQ0KLSAgICAgICAg ICAgIGVjaG8gIiQobmZ0IGxpc3QgJHtsaW5lfSkiDQotICAgICAgICBkb25lDQotICAgIGRvbmUN Ci19DQotDQotc2F2ZSgpIHsNCi0gICAgZWJlZ2luICJTYXZpbmcgbmZ0YWJsZXMgc3RhdGUiDQot ICAgIGNoZWNrcGF0aCAtcSAtZCAiJChkaXJuYW1lICIke05GVEFCTEVTX1NBVkV9IikiDQotICAg IGNoZWNrcGF0aCAtcSAtbSAwNjAwIC1mICIke05GVEFCTEVTX1NBVkV9Ig0KLQ0KLSAgICBsb2Nh bCBsM2YgbGluZSB0bXBfc2F2ZT0iJHtORlRBQkxFU19TQVZFfS50bXAiDQotDQotICAgIHRvdWNo ICIke3RtcF9zYXZlfSINCi0gICAgZm9yIGwzZiBpbiAkKGdldGZhbWlsaWVzKTsgZG8NCi0gICAg ICAgIG5mdCBsaXN0IHRhYmxlcyAke2wzZn0gfCB3aGlsZSByZWFkIGxpbmU7IGRvDQotICAgICAg ICAgICAgbGluZT0kKGVjaG8gJHtsaW5lfSB8IHNlZCAicy90YWJsZS90YWJsZSAke2wzZn0vIikN Ci0gICAgICAgICAgICAjIFRoZSBiZWxvdyBzdWJzdGl0dXRpb24gZml4ZXMgYW4gaXNzdWUgd2hl cmUgbmZ0IC1uIG91dHB1dCBtYXkgbm90DQotICAgICAgICAgICAgIyBhbHdheXMgYmUgcGFyc2Fi bGUgYnkgbmZ0IC1mLiAgRm9yIGV4YW1wbGUsIG5mdCAtbiBtaWdodCBwcmludA0KLSAgICAgICAg ICAgICMNCi0gICAgICAgICAgICAjICAgICBpcDYgc2FkZHIgOjoxIGlwNiBkYWRkciA6OjEgY291 bnRlciBwYWNrZXRzIDAgYnl0ZXMgMCBhY2NlcHQNCi0gICAgICAgICAgICAjDQotICAgICAgICAg ICAgIyBidXQgbmZ0IC1mIHJlZnVzZXMgdG8gcGFyc2UgdGhhdCBzdHJpbmcgd2l0aCBlcnJvcjoN Ci0gICAgICAgICAgICAjDQotICAgICAgICAgICAgIyAgICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9t IGludGVybmFsOjA6MC0wOg0KLSAgICAgICAgICAgICMgICAgIC92YXIvbGliL25mdGFibGVzL3J1 bGVzLXNhdmU6MToxLTI6IEVycm9yOiBDb3VsZCBub3QgcHJvY2VzcyBydWxlOg0KLSAgICAgICAg ICAgICMgICAgIEludmFsaWQgYXJndW1lbnQNCi0gICAgICAgICAgICAjICAgICB0YWJsZSBpcDYg ZmlsdGVyIHsNCi0gICAgICAgICAgICAjICAgICBeXg0KLSAgICAgICAgICAgIGVjaG8gIiQobmZ0 ICR7U0FWRV9PUFRJT05TfSBsaXN0ICR7bGluZX0gfFwNCi0gICAgICAgICAgICAgICAgICAgIHNl ZCAncy9cKDo6WzAtOWEtZkEtRl1cK1wpXChbXi9dXCkvXDFcLzEyOFwyL2cnKSIgPj4gIiR7dG1w X3NhdmV9Ig0KLSAgICAgICAgZG9uZQ0KLSAgICBkb25lDQotICAgIG12ICIke3RtcF9zYXZlfSIg IiR7TkZUQUJMRVNfU0FWRX0iDQorY2hlY2tjb25maWcoKSB7DQorICAgIGlmIFsgISAtZiAke05G VEFCTEVTX1NBVkV9IF07IHRoZW4NCisgICAgICAgIGVlcnJvciAiTm90IHN0YXJ0aW5nIG5mdGFi bGVzLiBGaXJzdCBjcmVhdGUgc29tZSBydWxlcyB0aGVuIHJ1bjoiDQorICAgICAgICBlZXJyb3Ig InJjLXNlcnZpY2UgbmZ0YWJsZXMgc2F2ZSINCisgICAgICAgIHJldHVybiAxDQorICAgIGZpDQor ICAgIHJldHVybiAwDQogfQ0KIA0KLXBhbmljKCkgew0KLSAgICBjaGVja2tlcm5lbCB8fCByZXR1 cm4gMQ0KLSAgICBpZiBzZXJ2aWNlX3N0YXJ0ZWQgJHtSQ19TVkNOQU1FfTsgdGhlbg0KLSAgICAg ICAgcmMtc2VydmljZSAke1JDX1NWQ05BTUV9IHN0b3ANCitjaGVja2tlcm5lbCgpIHsNCisgICAg aWYgISBuZnQgbGlzdCB0YWJsZXMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICAgICAgICBlZXJy b3IgIllvdXIga2VybmVsIGxhY2tzIG5mdGFibGVzIHN1cHBvcnQsIHBsZWFzZSBsb2FkIg0KKyAg ICAgICAgZWVycm9yICJhcHByb3ByaWF0ZSBtb2R1bGVzIGFuZCB0cnkgYWdhaW4uIg0KKyAgICAg ICAgcmV0dXJuIDENCiAgICAgZmkNCi0NCi0gICAgZWJlZ2luICJEcm9wcGluZyBhbGwgcGFja2V0 cyINCi0gICAgY2xlYXJORlQNCi0NCi0gICAgbG9jYWwgbDNmDQotICAgIGZvciBsM2YgaW4gJChn ZXRmYW1pbGllcyk7IGRvDQotICAgICAgICBjYXNlICR7bDNmfSBpbg0KLSAgICAgICAgICAgIGlw KSBhZGRwYW5pY3RhYmxlICR7bDNmfSA7Ow0KLSAgICAgICAgICAgIGlwNikgYWRkcGFuaWN0YWJs ZSAke2wzZn0gOzsNCi0gICAgICAgIGVzYWMNCi0gICAgZG9uZQ0KKyAgICByZXR1cm4gMA0KIH0N Ci0tIA0KMi43LjANCg0KDQoNCi0tLQ0KVW5zdWJzY3JpYmU6ICBhbHBpbmUtYXBvcnRzK3Vuc3Vi c2NyaWJlQGxpc3RzLmFscGluZWxpbnV4Lm9yZw0KSGVscDogICAgICAgICBhbHBpbmUtYXBvcnRz K2hlbHBAbGlzdHMuYWxwaW5lbGludXgub3JnDQotLS0NCg==