From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E7993C352A4 for ; Tue, 11 Feb 2020 01:24:03 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2BC982082F for ; Tue, 11 Feb 2020 01:24:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="EEs5V+AV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2BC982082F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:42140 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1KHS-0006qP-43 for qemu-devel@archiver.kernel.org; Mon, 10 Feb 2020 20:24:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34915) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1JdA-00033t-QA for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j1Jcz-00040M-IE for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:24 -0500 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:59190) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j1Jcx-0004pJ-QV for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:42:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1581381731; x=1612917731; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NdepcLantTP/eRX+3kK6KNbRP4t/EIWon5x/mnITRGM=; b=EEs5V+AV+BH9zhfS9X+/778sB/vq4UAmmpMA/csnTZFJhRApXso5YVZh UrWxw261K704CXmlyzas/vCkXT8ZUVjRF23U6OKYVr9c3ThSpLKVQH40C ZsJksn3oYYMlXqtJ+eRjwTDI2kYlofHxlYBp/gv9XSNv2MqHEdMfMnIMM 4=; Received: from unknown (HELO ironmsg03-sd.qualcomm.com) ([10.53.140.143]) by alexa-out-sd-02.qualcomm.com with ESMTP; 10 Feb 2020 16:41:03 -0800 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg03-sd.qualcomm.com with ESMTP; 10 Feb 2020 16:41:03 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id F36A91B5F; Mon, 10 Feb 2020 18:41:02 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH 56/66] Hexagon HVX import semantics Date: Mon, 10 Feb 2020 18:40:34 -0600 Message-Id: <1581381644-13678-57-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1581381644-13678-1-git-send-email-tsimpson@quicinc.com> References: <1581381644-13678-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 199.106.114.39 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, Taylor Simpson , philmd@redhat.com, aleksandar.m.mail@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SW1wb3J0ZWQgZnJvbSB0aGUgSGV4YWdvbiBhcmNoaXRlY3R1cmUgbGlicmFyeQogICAgaW1wb3J0 ZWQvYWxsZXh0LmlkZWYgICAgICAgICAgIFRvcCBsZXZlbCBmaWxlIGZvciBhbGwgZXh0ZW5zaW9u cwogICAgaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYgICAgICAgIEhWWCBpbnN0cnVjdGlvbiBkZWZp bml0aW9ucwoKU2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMu Y29tPgotLS0KIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGV4dC5pZGVmICAgIHwgICAyNSAr CiB0YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYgICB8ICAgIDEgKwogdGFyZ2V0 L2hleGFnb24vaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYgfCAyODA5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDI4MzUgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGV4dC5pZGVmCiBjcmVh dGUgbW9kZSAxMDA2NDQgdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYKCmRp ZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxleHQuaWRlZiBiL3RhcmdldC9o ZXhhZ29uL2ltcG9ydGVkL2FsbGV4dC5pZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmE1OTI5NzEKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRl ZC9hbGxleHQuaWRlZgpAQCAtMCwwICsxLDI1IEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAx OSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor ICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworLyoKKyAq IFRvcCBsZXZlbCBmaWxlIGZvciBhbGwgaW5zdHJ1Y3Rpb24gc2V0IGV4dGVuc2lvbnMKKyAqLwor I2RlZmluZSBFWFROQU1FIG1tdmVjCisjZGVmaW5lIEVYVFNUUiAibW12ZWMiCisjaW5jbHVkZSAi bW12ZWMvZXh0LmlkZWYiCisjdW5kZWYgRVhUTkFNRQorI3VuZGVmIEVYVFNUUgpkaWZmIC0tZ2l0 IGEvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWxsaWRlZnMuZGVmIGIvdGFyZ2V0L2hleGFnb24v aW1wb3J0ZWQvYWxsaWRlZnMuZGVmCmluZGV4IDQ4NjQwNDYuLmRkN2FjMTcgMTAwNjQ0Ci0tLSBh L3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGlkZWZzLmRlZgorKysgYi90YXJnZXQvaGV4YWdv bi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYKQEAgLTg5LDMgKzg5LDQgQEAKICNpbmNsdWRlICJzaGlm dC5pZGVmIgogI2luY2x1ZGUgInN5c3RlbS5pZGVmIgogI2luY2x1ZGUgInN1Ymluc25zLmlkZWYi CisjaW5jbHVkZSAiYWxsZXh0LmlkZWYiCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbXBv cnRlZC9tbXZlYy9leHQuaWRlZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21tdmVjL2V4dC5p ZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZjgyM2IKLS0tIC9kZXYv bnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9tbXZlYy9leHQuaWRlZgpAQCAtMCww ICsxLDI4MDkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE5IFF1YWxjb21tIElubm92YXRp b24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKgorKgorKgorKiAgICAgSE9ZQTogTVVMVEkgTUVESUEgSU5TVFJVQ0lUT05TCisqCisq CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgRVhUSU5TTgorI2Rl ZmluZSBFWFRJTlNOIFE2SU5TTgorI2RlZmluZSBfX1NFTEZfREVGX0VYVElOU04gMQorI2VuZGlm CisKKyNpZm5kZWYgTk9fTU1WRUMKKworI2RlZmluZSBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBD T0RFKSBcCit7IFwKKyAgICBmSElERShpbnQgaTspIFwKKyAgICBmVkZPUkVBQ0goV0lEVEgsIGkp IHtcCisgICAgICAgIENPREUgO1wKKyAgICB9IFwKK30KKworCisKKworI2RlZmluZSBJVEVSQVRP Ul9JTlNOX0FOWV9TTE9UKFdJRFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihW Nl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBLEFfTk9U RV9BTllfUkVTT1VSQ0UpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUp KQorCisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCxUQUcsU1lOVEFY LFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9BTllfU0xPVChXSURUSCxUQUcs U1lOVEFYMixERVNDUixDT0RFKSBcCitERUZfQ1ZJX01BUFBJTkcoVjZfIyNUQUcjI19hbHQsIFNZ TlRBWCwgU1lOVEFYMikKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX0RPVUJMRV9W RUMoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5U QVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkFfRFYsQV9OT1RFX0FOWTJfUkVT T1VSQ0UpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisKKyNk ZWZpbmUgSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCxUQUcsU1lOVEFY LFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVD KFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpIFwKK0RFRl9DVklfTUFQUElORyhWNl8jI1RB RyMjX2FsdCwgU1lOVEFYLCBTWU5UQVgyKQorCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9TSElG VF9TTE9UKFdJRFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywg U1lOVEFYLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZTLEFfTk9URV9TSElGVF9S RVNPVVJDRSksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKwor CisjZGVmaW5lIElURVJBVE9SX0lOU05fU0hJRlRfU0xPVF9WVl9MQVRFKFdJRFRILFRBRyxTWU5U QVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhU RU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZTLEFfQ1ZJX1ZWX0xBVEUsQV9OT1RFX1NISUZUX1JFU09VUkNF KSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJ VEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixD T0RFKSBcCitJVEVSQVRPUl9JTlNOX1NISUZUX1NMT1QoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1Is Q09ERSkgXAorREVGX0NWSV9NQVBQSU5HKFY2XyMjVEFHIyNfYWx0LCBTWU5UQVgsIFNZTlRBWDIp CisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1QoV0lEVEgsVEFHLFNZTlRBWCxE RVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJ T04sQV9DVkksQV9DVklfVlAsQV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UpLCAgXAorREVTQ1IsIERP X0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU04yX1BF Uk1VVEVfU0xPVChXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFU T1JfSU5TTl9QRVJNVVRFX1NMT1QoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorREVG X0NWSV9NQVBQSU5HKFY2XyMjVEFHIyNfYWx0LCBTWU5UQVgsIFNZTlRBWDIpCisKKyNkZWZpbmUg SVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfREVQKFdJRFRILFRBRyxTWU5UQVgsREVTQ1IsQ09E RSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfTk9URV9ERVBSRUNBVEVE LEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQLEFfTk9URV9QRVJNVVRFX1JFU09VUkNFKSwKKwor CisjZGVmaW5lIElURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVF9ERVAoV0lEVEgsVEFHLFNZTlRB WCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RFUChX SURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RFKSBcCitERUZfQ1ZJX01BUFBJTkcoVjZfIyNUQUcj I19hbHQsIFNZTlRBWCwgU1lOVEFYMikKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1VVEVf U0xPVF9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihW Nl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQX1ZTLEFf Tk9URV9QRVJNVVRFX1JFU09VUkNFLEFfTk9URV9TSElGVF9SRVNPVVJDRSksICBcCitERVNDUiwg RE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9Q RVJNVVRFX1NMT1RfRE9VQkxFX1ZFQ19ERVAoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBc CitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9OT1RFX0RFUFJFQ0FURUQsQV9F WFRFTlNJT04sQV9DVkksQV9DVklfVlBfVlMsQV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UsQV9OT1RF X1NISUZUX1JFU09VUkNFKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RF KSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyhXSURU SCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9QRVJNVVRF X1NMT1RfRE9VQkxFX1ZFQyhXSURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RFKSBcCitERUZfQ1ZJ X01BUFBJTkcoVjZfIyNUQUcjI19hbHQsIFNZTlRBWCwgU1lOVEFYMikKKworI2RlZmluZSBJVEVS QVRPUl9JTlNOX01QWV9TTE9UKFdJRFRILFRBRywgU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElO U04oVjZfIyNUQUcsIFNZTlRBWCwgXAorQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9W WCxBX05PVEVfTVBZX1JFU09VUkNFKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRI LCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX01QWV9TTE9UX0xBVEUoV0lEVEgsVEFH LCBTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBcCitBVFRS SUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZYLEFfTk9URV9NUFlfUkVTT1VSQ0UsQV9DVklf TEFURSksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZp bmUgSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgyLERFU0NS LENPREUpIFwKK0lURVJBVE9SX0lOU05fTVBZX1NMT1QoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1Is Q09ERSkgXAorREVGX0NWSV9NQVBQSU5HKFY2XyMjVEFHIyNfYWx0LCBTWU5UQVgsIFNZTlRBWDIp CisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfTEFURShXSURUSCxUQUcsIFNZTlRB WCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0lURVJBVE9SX0lOU05fTVBZX1NMT1RfTEFURShXSURU SCxUQUcsIFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorREVGX0NWSV9NQVBQSU5HKFY2XyMjVEFHIyNf YWx0LCBTWU5UQVgsIFNZTlRBWDIpCisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX01QWV9TTE9U X0RPVUJMRV9WRUMoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMj VEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlhfRFYsQV9OT1RF X01QWURWX1JFU09VUkNFKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RF KSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKFdJRFRILFRB RyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX01QWV9TTE9UX0RP VUJMRV9WRUMoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorREVGX0NWSV9NQVBQSU5H KFY2XyMjVEFHIyNfYWx0LCBTWU5UQVgsIFNZTlRBWDIpCisKKworCisKKyNkZWZpbmUgSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQzIoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgyLERF U0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lP TixBX0NWSSxBX0NWSV9WWF9EVixBX0NWSV9WWF9WU1JDMF9JU19EU1QsQV9OT1RFX01QWURWX1JF U09VUkNFKSwgREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKSBcCitERUZfQ1ZJ X01BUFBJTkcoVjZfIyNUQUcjI19hbHQsIFNZTlRBWCwgU1lOVEFYMikKKworI2RlZmluZSBJVEVS QVRPUl9JTlNOX1NMT1QyX0RPVUJMRV9WRUMoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBc CitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9D VklfVlhfRFYsQV9DVklfRUFSTFksQV9SRVNUUklDVF9TTE9UMk9OTFksQV9OT1RFX01QWURWX1JF U09VUkNFKSwgREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5l IFZFQ19ERUZfTUFQUElORzIoVEFHLCBTWU5UQVgxX21hcHBlZCwgU1lOVEFYMSwgU1lOVEFYMl9t YXBwZWQsIFNZTlRBWDIpIFwKK0RFRl9DVklfTUFQUElORyhWNl8jI1RBRywgU1lOVEFYMV9tYXBw ZWQsIFNZTlRBWDEpIFwKK0RFRl9DVklfTUFQUElORyhWNl8jI1RBRyMjX2FsdCwgU1lOVEFYMl9t YXBwZWQsIFNZTlRBWDFfbWFwcGVkKQorCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9WSElTVExJ S0UoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5U QVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfNFNMT1QsQV9DVklfUkVRVUlSRVNf VE1QTE9BRCksICBcCitERVNDUiwgZkhJREUobW12ZWN0b3JfdCBpbnB1dDspIGlucHV0ID0gZlRN UFZEQVRBKCk7IERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisKKworCisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogTU1WRUNUT1IgTUVNT1JZIE9QRVJB VElPTlMgLSBOTyBOQVBBTEkgVjEKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKKworCisjZGVmaW5lIElURVJBVE9SX0lOU05fTVBZX1NMT1RfRE9VQkxFX1ZFQ19OT1Yx KFdJRFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFY LCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZYX0RWLEFfTk9URV9NUFlEVl9SRVNP VVJDRSxBX05PVEVfTk9OQVBBTElWMSksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURU SCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQ19O T1YxKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9JTlNO X01QWV9TTE9UX0RPVUJMRV9WRUNfTk9WMShXSURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RFKSBc CitERUZfQ1ZJX01BUFBJTkcoVjZfIyNUQUcjI19hbHQsIFNZTlRBWCwgU1lOVEFYMikKKworCisK KyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxE RVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJ T04sQV9DVkksQV9DVklfVlMsQV9OT1RFX1NISUZUX1JFU09VUkNFLEFfTk9URV9OT05BUEFMSVYx KSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJ VEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgyLERF U0NSLENPREUpIFwKK0lURVJBVE9SX0lOU05fU0hJRlRfU0xPVF9OT1YxKFdJRFRILFRBRyxTWU5U QVgyLERFU0NSLENPREUpIFwKK0RFRl9DVklfTUFQUElORyhWNl8jI1RBRyMjX2FsdCwgU1lOVEFY LCBTWU5UQVgyKQorCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9OT1YxKFdJRFRI LFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRS SUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBLEFfTk9URV9BTllfUkVTT1VSQ0UsQV9OT1RF X05PTkFQQUxJVjEpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQor CisjZGVmaW5lIElURVJBVE9SX0lOU04yX0FOWV9TTE9UX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxT WU5UQVgyLERFU0NSLENPREUpIFwKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1RfTk9WMShXSURUSCxU QUcsU1lOVEFYMixERVNDUixDT0RFKSBcCitERUZfQ1ZJX01BUFBJTkcoVjZfIyNUQUcjI19hbHQs IFNZTlRBWCwgU1lOVEFYMikKKworCisjZGVmaW5lIElURVJBVE9SX0lOU05fTVBZX1NMT1RfTk9W MShXSURUSCxUQUcsIFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5U QVgsIFwKK0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlgsQV9OT1RFX01QWV9SRVNP VVJDRSxBX05PVEVfTk9OQVBBTElWMSksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURU SCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfTk9WMShXSURU SCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRU UklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUCxBX05PVEVfUEVSTVVURV9SRVNPVVJDRSxB X05PVEVfTk9OQVBBTElWMSksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09E RSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UVF9OT1YxKFdJRFRILFRB RyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xP VChXSURUSCxUQUcsU1lOVEFYMixERVNDUixDT0RFKSBcCitERUZfQ1ZJX01BUFBJTkcoVjZfIyNU QUcjI19hbHQsIFNZTlRBWCwgU1lOVEFYMikKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1V VEVfU0xPVF9ERVBUX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNO KFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9OT1RFX0RFUFJFQ0FURUQsQV9FWFRFTlNJT04s QV9DVkksQV9DVklfVlAsQV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UsQV9OT1RFX05PTkFQQUxJVjEp LAorCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UX0RFUFRfTk9WMShXSURU SCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9QRVJNVVRF X1NMT1RfREVQX05PVjEoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorREVGX0NWSV9N QVBQSU5HKFY2XyMjVEFHIyNfYWx0LCBTWU5UQVgsIFNZTlRBWDIpCisKKyNkZWZpbmUgSVRFUkFU T1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQ19OT1YxKFdJRFRILFRBRyxTWU5UQVgsREVT Q1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5TSU9O LEFfQ1ZJLEFfQ1ZJX1ZQX1ZTLEFfTk9URV9QRVJNVVRFX1JFU09VUkNFLEFfTk9URV9TSElGVF9S RVNPVVJDRSxBX05PVEVfTk9OQVBBTElWMSksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShX SURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxF X1ZFQ19ERVBUX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2 XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9OT1RFX0RFUFJFQ0FURUQsQV9FWFRFTlNJT04sQV9D VkksQV9DVklfVlBfVlMsQV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UsQV9OT1RFX1NISUZUX1JFU09V UkNFLEFfTk9URV9OT05BUEFMSVYxKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRI LCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZF Q19OT1YxKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9J TlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDX05PVjEoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1Is Q09ERSkgXAorREVGX0NWSV9NQVBQSU5HKFY2XyMjVEFHIyNfYWx0LCBTWU5UQVgsIFNZTlRBWDIp CisKKyNkZWZpbmUgTkFSUk9XSU5HX1NISUZUX05PVjEoSVRFUlNJWkUsVEFHLERTVE0sRFNUVFlQ RSxTUkNUWVBFLFNZTk9QVFMsU0FURlVOQyxSTkRGVU5DLFNIQU1UTUFTSykgXAorSVRFUkFUT1Jf SU5TTl9TSElGVF9TTE9UX05PVjEoSVRFUlNJWkUsVEFHLCBcCisiVmQzMi4iICNEU1RUWVBFICI9 dmFzcihWdTMyLiIgI1NSQ1RZUEUgIixWdjMyLiIgI1NSQ1RZUEUgIixSdDgpIiAjU1lOT1BUUywg XAorIlZlY3RvciBzaGlmdCByaWdodCBhbmQgc2h1ZmZsZSIsIFwKKwlmSElERShmUlQ4Tk9URSgp KVwKKyAgICBmSElERShpbnQgKXNoYW10ID0gUnRWICYgU0hBTVRNQVNLOyBcCisgICAgRFNUTSgw LFZkVi5TUkNUWVBFW2ldLFNBVEZVTkMoUk5ERlVOQyhWdlYuU1JDVFlQRVtpXSxzaGFtdCkgPj4g c2hhbXQpKTsgXAorICAgIERTVE0oMSxWZFYuU1JDVFlQRVtpXSxTQVRGVU5DKFJOREZVTkMoVnVW LlNSQ1RZUEVbaV0sc2hhbXQpID4+IHNoYW10KSkpCisKKyNkZWZpbmUgTU1WRUNfQVZHU19OT1Yx KFRZUEUsVFlQRTIsREVTQ1IsIFdJRFRILCBERVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllf U0xPVF9OT1YxKFdJRFRILHZhdmcjI1RZUEUsICAgICAgICAgICAgICAgICAgICAgICAgIlZkMzI9 dmF2ZyJUWVBFMiIoVnUzMixWdjMyKSIsICAgICAgICAgICJWZDMyLiIjREVTVCI9dmF2ZyhWdTMy LiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAgICAgICAiVmVjdG9yIEF2ZXJhZ2UgIkRFU0NSLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gID0gZlZBVkdT KCAgICAgICBXSURUSCwgIFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKSBcCitJVEVSQVRPUl9JTlNO Ml9BTllfU0xPVF9OT1YxKFdJRFRILHZhdmcjI1RZUEUjI3JuZCwgICAgICAgICAgICAgICAgICAg IlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKTpybmQiLCAgICAgICJWZDMyLiIjREVTVCI9dmF2 ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIik6cm5kIiwgICAgICAiVmVjdG9yIEF2ZXJhZ2UgJSBS b3VuZCJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gID0g ZlZBVkdTUk5EKCAgICBXSURUSCwgIFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKSBcCitJVEVSQVRP Ul9JTlNOMl9BTllfU0xPVF9OT1YxKFdJRFRILHZuYXZnIyNUWVBFLCAgICAgICAgICAgICAgICAg ICAgICAgIlZkMzI9dm5hdmciVFlQRTIiKFZ1MzIsVnYzMikiLCAgICAgICAgICJWZDMyLiIjREVT VCI9dm5hdmcoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiwgICAgICAgICAiVmVjdG9yIE5lZ2F0 aXZlIEF2ZXJhZ2UgIkRFU0NSLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1Rb aV0gID0gZlZOQVZHUyggICAgICBXSURUSCwgIFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKQorCisg ICNkZWZpbmUgTU1WRUNfQVZHVV9OT1YxKFRZUEUsVFlQRTIsREVTQ1IsIFdJRFRILCBERVNULFNS QylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9OT1YxKFdJRFRILHZhdmcjI1RZUEUsICAgICAg ICAgICAgICAgICAgICAgICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKSIsICAgICAgICAg IlZkMzIuIiNERVNUIj12YXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICAgICAgICAiVmVj dG9yIEF2ZXJhZ2UgIkRFU0NSLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VmRWLkRFU1RbaV0gPSBmVkFWR1UoICAgV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkg XAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfTk9WMShXSURUSCx2YXZnIyNUWVBFIyNybmQsICAg ICAgICAgICAgICAgICAgICJWZDMyPXZhdmciVFlQRTIiKFZ1MzIsVnYzMik6cm5kIiwgICAgICJW ZDMyLiIjREVTVCI9dmF2ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIik6cm5kIiwgICAgIlZlY3Rv ciBBdmVyYWdlICUgUm91bmQiREVTQ1IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZk Vi5ERVNUW2ldID0gZlZBVkdVUk5EKFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpCisK KworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIE1NVkVDVE9SIE1F TU9SWSBPUEVSQVRJT05TCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor CisjZGVmaW5lIE1NVkVDX0VBQ0hfRUEoVEFHLERFU0NSLEFUVFJJQixOVCxTWU5UQVhBLFNZTlRB WEIsQkVIKSBcCitFWFRJTlNOKFY2XyMjVEFHIyNfcGksICAgICAgU1lOVEFYQSAiKFJ4MzIrKyNz MykiIE5UIFNZTlRBWEIsQVRUUklCLERFU0NSLHsgZkVBX1JFRyhSeFYpOyBCRUg7IGZQTV9JKFJ4 VixWRUNfU0NBTEUoc2lWKSk7IH0pIFwKK0VYVElOU04oVjZfIyNUQUcjI19haSwgICAgICBTWU5U QVhBICIoUnQzMisjczQpIiBOVCBTWU5UQVhCLEFUVFJJQixERVNDUix7IGZFQV9SSShSdFYsVkVD X1NDQUxFKHNpVikpOyBCRUg7fSkgXAorRVhUSU5TTihWNl8jI1RBRyMjX3BwdSwgICAgICBTWU5U QVhBICIoUngzMisrTXUyKSIgTlQgU1lOVEFYQixBVFRSSUIsREVTQ1IseyBmRUFfUkVHKFJ4Vik7 IEJFSDsgZlBNX00oUnhWLE11Vik7IH0pIFwKKworCisjZGVmaW5lIE1NVkVDX0NPTkRfRUFDSF9F QV9UUlVFKFRBRyxERVNDUixBVFRSSUIsTlQsU1lOVEFYQSxTWU5UQVhCLFNZTlRBWFAsQkVIKSBc CitFWFRJTlNOKFY2XyMjVEFHIyNfcHJlZF9waSwgICAgICAiaWYgKCIgI1NZTlRBWFAgIjQpICIg U1lOVEFYQSAiKFJ4MzIrKyNzMykiIE5UIFNZTlRBWEIsIEFUVFJJQixERVNDUiwgeyBpZiAoZkxT Qk9MRChTWU5UQVhQIyNWKSkgeyBmRUFfUkVHKFJ4Vik7IEJFSDsgZlBNX0koUnhWLHNpVipmVkVD U0laRSgpKTsgfSBlbHNlIHtDQU5DRUw7fX0pIFwKK0VYVElOU04oVjZfIyNUQUcjI19wcmVkX2Fp LCAgICAgICJpZiAoIiAjU1lOVEFYUCAiNCkgIiBTWU5UQVhBICIoUnQzMisjczQpIiBOVCBTWU5U QVhCLCBBVFRSSUIsREVTQ1IsICB7IGlmIChmTFNCT0xEKFNZTlRBWFAjI1YpKSB7IGZFQV9SSShS dFYsc2lWKmZWRUNTSVpFKCkpOyBCRUg7fSBlbHNlIHtDQU5DRUw7fX0pIFwKK0VYVElOU04oVjZf IyNUQUcjI19wcmVkX3BwdSwgICAgICJpZiAoIiAjU1lOVEFYUCAiNCkgIiBTWU5UQVhBICIoUngz MisrTXUyKSIgTlQgU1lOVEFYQixBVFRSSUIsREVTQ1IsICB7IGlmIChmTFNCT0xEKFNZTlRBWFAj I1YpKSB7IGZFQV9SRUcoUnhWKTsgQkVIOyBmUE1fTShSeFYsTXVWKTsgfSBlbHNlIHtDQU5DRUw7 fX0pIFwKKworI2RlZmluZSBNTVZFQ19DT05EX0VBQ0hfRUFfRkFMU0UoVEFHLERFU0NSLEFUVFJJ QixOVCxTWU5UQVhBLFNZTlRBWEIsU1lOVEFYUCxCRUgpIFwKK0VYVElOU04oVjZfIyNUQUcjI19u cHJlZF9waSwgICAgICJpZiAoISIgI1NZTlRBWFAgIjQpICIgU1lOVEFYQSAiKFJ4MzIrKyNzMyki IE5UIFNZTlRBWEIsQVRUUklCLERFU0NSLHsgaWYgKGZMU0JPTEROT1QoU1lOVEFYUCMjVikpIHsg ZkVBX1JFRyhSeFYpOyBCRUg7IGZQTV9JKFJ4VixzaVYqZlZFQ1NJWkUoKSk7IH0gZWxzZSB7Q0FO Q0VMO319KSBcCitFWFRJTlNOKFY2XyMjVEFHIyNfbnByZWRfYWksICAgICAiaWYgKCEiICNTWU5U QVhQICI0KSAiIFNZTlRBWEEgIihSdDMyKyNzNCkiIE5UIFNZTlRBWEIsQVRUUklCLERFU0NSLCB7 IGlmIChmTFNCT0xETk9UKFNZTlRBWFAjI1YpKSB7IGZFQV9SSShSdFYsc2lWKmZWRUNTSVpFKCkp OyBCRUg7fSBlbHNlIHtDQU5DRUw7fX0pIFwKK0VYVElOU04oVjZfIyNUQUcjI19ucHJlZF9wcHUs ICAgICJpZiAoISIgI1NZTlRBWFAgIjQpICIgU1lOVEFYQSAiKFJ4MzIrK011MikiIE5UIFNZTlRB WEIsQVRUUklCLERFU0NSLHsgaWYgKGZMU0JPTEROT1QoU1lOVEFYUCMjVikpIHsgZkVBX1JFRyhS eFYpOyBCRUg7IGZQTV9NKFJ4VixNdVYpOyB9IGVsc2Uge0NBTkNFTDt9fSkKKworI2RlZmluZSBN TVZFQ19DT05EX0VBQ0hfRUEoVEFHLERFU0NSLEFUVFJJQixOVCxTWU5UQVhBLFNZTlRBWEIsU1lO VEFYUCxCRUgpIFwKK01NVkVDX0NPTkRfRUFDSF9FQV9UUlVFKFRBRyxERVNDUixBVFRSSUIsTlQs U1lOVEFYQSxTWU5UQVhCLFNZTlRBWFAsQkVIKSBcCitNTVZFQ19DT05EX0VBQ0hfRUFfRkFMU0Uo VEFHLERFU0NSLEFUVFJJQixOVCxTWU5UQVhBLFNZTlRBWEIsU1lOVEFYUCxCRUgpCisKKworI2Rl ZmluZSBWRUNfU0NBTEUoWCkgWCpmVkVDU0laRSgpCisKKworI2RlZmluZSBNTVZFQ19MRChUQUcs REVTQ1IsQVRUUklCLE5UKSBNTVZFQ19FQUNIX0VBKFRBRyxERVNDUixBVFRSSUIsTlQsIlZkMzI9 dm1lbSIsIiIsZkxPQURNTVYoRUEsVmRWKSkKKyNkZWZpbmUgTU1WRUNfTERDKFRBRyxERVNDUixB VFRSSUIsTlQpIE1NVkVDX0VBQ0hfRUEoVEFHIyNfY3VyLERFU0NSLEFUVFJJQixOVCwiVmQzMi5j dXI9dm1lbSIsIiIsZkxPQURNTVYoRUEsVmRWKSkKKyNkZWZpbmUgTU1WRUNfTERUKFRBRyxERVND UixBVFRSSUIsTlQpIE1NVkVDX0VBQ0hfRUEoVEFHIyNfdG1wLERFU0NSLEFUVFJJQixOVCwiVmQz Mi50bXA9dm1lbSIsIiIsZkxPQURNTVYoRUEsVmRWKSkKKyNkZWZpbmUgTU1WRUNfTERVKFRBRyxE RVNDUixBVFRSSUIsTlQpIE1NVkVDX0VBQ0hfRUEoVEFHLERFU0NSLEFUVFJJQixOVCwiVmQzMj12 bWVtdSIsIiIsZkxPQURNTVZVKEVBLFZkVikpCisKKworI2RlZmluZSBNTVZFQ19TVFEoVEFHLERF U0NSLEFUVFJJQixOVCkgXAorTU1WRUNfRUFDSF9FQShUQUcjI19xcHJlZCxERVNDUixBVFRSSUIs TlQsImlmIChRdjQpIHZtZW0iLCI9VnMzMiIsZlNUT1JFTU1WUShFQSxWc1YsUXZWKSkgXAorTU1W RUNfRUFDSF9FQShUQUcjI19ucXByZWQsREVTQ1IsQVRUUklCLE5ULCJpZiAoIVF2NCkgdm1lbSIs Ij1WczMyIixmU1RPUkVNTVZOUShFQSxWc1YsUXZWKSkKKworREVGX0NWSV9NQVBQSU5HKFY2X3N0 dXAwLCAgImlmIChQdjQpIHZtZW11KFJ0MzIpPVZzMzIiLCAgImlmIChQdjQpIHZtZW11KFJ0MzIr IzApPVZzMzIiKQorREVGX0NWSV9NQVBQSU5HKFY2X3N0dW5wMCwgImlmICghUHY0KSB2bWVtdShS dDMyKT1WczMyIiwgICJpZiAoIVB2NCkgdm1lbXUoUnQzMisjMCk9VnMzMiIpCisKKworCisjZGVm aW5lIFpNRU0oT1ApIFwKK3tcCisJZkhJREUoc2l6ZTRzX3Qgc3RyaWRlOylcCisJZkhJREUoc2l6 ZTRzX3QgTjspXAorCWZISURFKHNpemU0c190IFpOOylcCisJZkhJREUoc2l6ZTRzX3Qgd2luOylc CisJZkhJREUoc2l6ZTRzX3Qgd2lkdGg7KVwKKwlmSElERShzaXplNHNfdCBFQVU9RUE7KVwKKwlO ID0gZlZFQ1NJWkUoKTtcCisJWk4gPSAyKk47IFwKKwlzdHJpZGUgPSAoMSsoRUEmMSkpICogKE4v NCk7XAorCXdpbiA9IDMqc3RyaWRlO1wKKwl3aWR0aCA9IFpOLXdpbjtcCisJaWYgKHdpZHRoPk4p IHtcCisJCXdpZHRoID0gTjtcCisJfVwKKwlFQSAmPSB+MztcCisJZkhJREUobW12ZWN0b3JfdCBU TVA7KVwKKwlmSElERShmTE9BRFpfTE9BRChFQSxFQVUsd2lkdGgsVE1QKTspXAorCWlmICgoRUEg JSB3aWR0aCkgPT0wKSB7XAorCQlPUChFQSx3aWR0aCxaTixOLFRNUCk7XAorCX1cCisJZkhJREUo ZkVMU0VfQ0FOQ0VMWigpOylcCit9XAorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIE1BUFBJTkcgRk9SIFZNRU1z CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworCisjZGVmaW5lIEFUVFJfVk1FTSBBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9W TSxBX05PVEVfVk1FTSxBX05PVEVfQU5ZX1JFU09VUkNFLEFfVk1FTQorI2RlZmluZSBBVFRSX1ZN RU1VIEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZNLEFfTk9URV9WTUVNLEFfTk9URV9QRVJNVVRF X1JFU09VUkNFLEFfQ1ZJX1ZQLEFfVk1FTVUKKworCitNTVZFQ19MRCh2TDMyYiwgICJBbGlnbmVk IFZlY3RvciBMb2FkIiwgICAgICAgIEFUVFJJQlMoQVRUUl9WTUVNLEFfTE9BRCxBX0NWSV9WQSks KQorTU1WRUNfTERDKHZMMzJiLCAgIkFsaWduZWQgVmVjdG9yIExvYWQgQ3VyIiwJQVRUUklCUyhB VFRSX1ZNRU0sQV9MT0FELEFfQ1ZJX05FVyxBX0NWSV9WQSksKQorTU1WRUNfTERUKHZMMzJiLCAg IkFsaWduZWQgVmVjdG9yIExvYWQgVG1wIiwJQVRUUklCUyhBVFRSX1ZNRU0sQV9MT0FELEFfQ1ZJ X1RNUCksKQorCitNTVZFQ19DT05EX0VBQ0hfRUEodkwzMmIsIkNvbmRpdGlvbmFsIEFsaWduZWQg VmVjdG9yIExvYWQiLEFUVFJJQlMoQVRUUl9WTUVNLEFfTE9BRCxBX0NWSV9WQSksLCJWZDMyPXZt ZW0iLCxQdixmTE9BRE1NVihFQSxWZFYpOykKK01NVkVDX0NPTkRfRUFDSF9FQSh2TDMyYl9jdXIs IkNvbmRpdGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQgQ3VyIixBVFRSSUJTKEFUVFJfVk1FTSxB X0xPQUQsQV9DVklfVkEsQV9DVklfTkVXKSwsIlZkMzIuY3VyPXZtZW0iLCxQdixmTE9BRE1NVihF QSxWZFYpOykKK01NVkVDX0NPTkRfRUFDSF9FQSh2TDMyYl90bXAsIkNvbmRpdGlvbmFsIEFsaWdu ZWQgVmVjdG9yIExvYWQgVG1wIixBVFRSSUJTKEFUVFJfVk1FTSxBX0xPQUQsQV9DVklfVE1QKSws IlZkMzIudG1wPXZtZW0iLCxQdixmTE9BRE1NVihFQSxWZFYpOykKKworTU1WRUNfRUFDSF9FQSh2 UzMyYiwiQWxpZ25lZCBWZWN0b3IgU3RvcmUiLEFUVFJJQlMoQVRUUl9WTUVNLEFfU1RPUkUsQV9S RVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCwidm1lbSIsIj1WczMyIixmU1RPUkVNTVYoRUEs VnNWKSkKK01NVkVDX0NPTkRfRUFDSF9FQSh2UzMyYiwiQWxpZ25lZCBWZWN0b3IgU3RvcmUiLEFU VFJJQlMoQVRUUl9WTUVNLEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCwi dm1lbSIsIj1WczMyIixQdixmU1RPUkVNTVYoRUEsVnNWKSkKKworCitNTVZFQ19TVFEodlMzMmIs ICAiQWxpZ25lZCBWZWN0b3IgU3RvcmUiLCAgICAgIEFUVFJJQlMoQVRUUl9WTUVNLEFfU1RPUkUs QV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCkKKworTU1WRUNfTERVKHZMMzJVYiwgIlVu YWxpZ25lZCBWZWN0b3IgTG9hZCIsICAgICBBVFRSSUJTKEFUVFJfVk1FTVUsQV9MT0FELEFfUkVT VFJJQ1RfTk9TTE9UMSksKQorCitNTVZFQ19FQUNIX0VBKHZTMzJVYiwiVW5hbGlnbmVkIFZlY3Rv ciBTdG9yZSIsQVRUUklCUyhBVFRSX1ZNRU1VLEFfU1RPUkUsQV9SRVNUUklDVF9OT1NMT1QxKSws InZtZW11IiwiPVZzMzIiLGZTVE9SRU1NVlUoRUEsVnNWKSkKKworTU1WRUNfQ09ORF9FQUNIX0VB KHZTMzJVYiwiVW5hbGlnbmVkIFZlY3RvciBTdG9yZSIsQVRUUklCUyhBVFRSX1ZNRU1VLEFfU1RP UkUsQV9SRVNUUklDVF9OT1NMT1QxKSwsInZtZW11IiwiPVZzMzIiLFB2LGZTVE9SRU1NVlUoRUEs VnNWKSkKKworTU1WRUNfRUFDSF9FQSh2UzMyYl9uZXcsIkFsaWduZWQgVmVjdG9yIFN0b3JlIE5l dyIsQVRUUklCUyhBVFRSX1ZNRU0sQV9TVE9SRSxBX0NWSV9ORVcsQV9SRVNUUklDVF9TSU5HTEVf TUVNX0ZJUlNULEFfRE9UTkVXVkFMVUUsQV9SRVNUUklDVF9TTE9UME9OTFkpLCwidm1lbSIsIj1P czgubmV3IixmU1RPUkVNTVYoRUEsZk5FV1ZSRUcoT3NOKSkpCisKKy8vIFY2NSBzdG9yZSByZWxh c2UsIHplcm8gYnl0ZSBzdG9yZQorTU1WRUNfRUFDSF9FQSh2UzMyYl9zcmxzLCJBbGlnbmVkIFZl Y3RvciBTY2F0dGVyIFJlbGVhc2UiLEFUVFJJQlMoQVRUUl9WTUVNLEFfU1RPUkUsQV9DVklfU0NB VFRFUl9SRUxFQVNFLEFfQ1ZJX05FVyxBX1JFU1RSSUNUX1NMT1QwT05MWSksLCJ2bWVtIiwiOnNj YXR0ZXJfcmVsZWFzZSIsZlNUT1JFUkVMRUFTRShFQSwwKSkKKworCisKK01NVkVDX0NPTkRfRUFD SF9FQSh2UzMyYl9uZXcsIkFsaWduZWQgVmVjdG9yIFN0b3JlIE5ldyIsQVRUUklCUyhBVFRSX1ZN RU0sQV9TVE9SRSxBX0NWSV9ORVcsQV9SRVNUUklDVF9TSU5HTEVfTUVNX0ZJUlNULEFfRE9UTkVX VkFMVUUsQV9SRVNUUklDVF9TTE9UME9OTFkpLCwidm1lbSIsIj1PczgubmV3IixQdixmU1RPUkVN TVYoRUEsZk5FV1ZSRUcoT3NOKSkpCisKKworLy8gTG9hZHMKK0RFRl9DVklfTUFQUElORyhWNl9s ZDAsICAgIlZkMzI9dm1lbShSdDMyKSIsICAiVmQzMj12bWVtKFJ0MzIrIzApIikKK0RFRl9DVklf TUFQUElORyhWNl9sZHUwLCAgIlZkMzI9dm1lbXUoUnQzMikiLCAiVmQzMj12bWVtdShSdDMyKyMw KSIpCisKK0RFRl9DVklfTUFQUElORyhWNl9sZHAwLCAgICJpZiAoUHY0KSBWZDMyPXZtZW0oUnQz MikiLCAgImlmIChQdjQpIFZkMzI9dm1lbShSdDMyKyMwKSIpCitERUZfQ1ZJX01BUFBJTkcoVjZf bGRucDAsICAiaWYgKCFQdjQpIFZkMzI9dm1lbShSdDMyKSIsICAiaWYgKCFQdjQpIFZkMzI9dm1l bShSdDMyKyMwKSIpCitERUZfQ1ZJX01BUFBJTkcoVjZfbGRjcDAsICAiaWYgKFB2NCkgVmQzMi5j dXI9dm1lbShSdDMyKSIsICJpZiAoUHY0KSBWZDMyLmN1cj12bWVtKFJ0MzIrIzApIikKK0RFRl9D VklfTUFQUElORyhWNl9sZHRwMCwgICJpZiAoUHY0KSBWZDMyLnRtcD12bWVtKFJ0MzIpIiwgImlm IChQdjQpIFZkMzIudG1wPXZtZW0oUnQzMisjMCkiKQorREVGX0NWSV9NQVBQSU5HKFY2X2xkY25w MCwgICJpZiAoIVB2NCkgVmQzMi5jdXI9dm1lbShSdDMyKSIsICJpZiAoIVB2NCkgVmQzMi5jdXI9 dm1lbShSdDMyKyMwKSIpCitERUZfQ1ZJX01BUFBJTkcoVjZfbGR0bnAwLCAgImlmICghUHY0KSBW ZDMyLnRtcD12bWVtKFJ0MzIpIiwgImlmICghUHY0KSBWZDMyLnRtcD12bWVtKFJ0MzIrIzApIikK KworCisKKworLy8gU3RvcmVzCitERUZfQ1ZJX01BUFBJTkcoVjZfc3QwLCAgICAidm1lbShSdDMy KT1WczMyIiwgICAgICJ2bWVtKFJ0MzIrIzApPVZzMzIiKQorREVGX0NWSV9NQVBQSU5HKFY2X3N0 bjAsICAgInZtZW0oUnQzMik9T3M4Lm5ldyIsICAidm1lbShSdDMyKyMwKT1PczgubmV3IikKK0RF Rl9DVklfTUFQUElORyhWNl9zdHEwLCAgICJpZiAoUXY0KSB2bWVtKFJ0MzIpPVZzMzIiLCAgICAg ImlmIChRdjQpIHZtZW0oUnQzMisjMCk9VnMzMiIpCitERUZfQ1ZJX01BUFBJTkcoVjZfc3RucTAs ICAiaWYgKCFRdjQpIHZtZW0oUnQzMik9VnMzMiIsICAgICAiaWYgKCFRdjQpIHZtZW0oUnQzMisj MCk9VnMzMiIpCitERUZfQ1ZJX01BUFBJTkcoVjZfc3RwMCwgICAiaWYgKFB2NCkgdm1lbShSdDMy KT1WczMyIiwgICAgICJpZiAoUHY0KSB2bWVtKFJ0MzIrIzApPVZzMzIiKQorREVGX0NWSV9NQVBQ SU5HKFY2X3N0bnAwLCAgImlmICghUHY0KSB2bWVtKFJ0MzIpPVZzMzIiLCAgICAgImlmICghUHY0 KSB2bWVtKFJ0MzIrIzApPVZzMzIiKQorCisKK0RFRl9DVklfTUFQUElORyhWNl9zdHUwLCAgICJ2 bWVtdShSdDMyKT1WczMyIiwgICJ2bWVtdShSdDMyKyMwKT1WczMyIikKKworCisKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogTU1WRUNUT1IgTUVNT1JZIE9QRVJBVElP TlMgLSBOT04gVEVNUE9SQUwKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisKKyNkZWZpbmUgQVRUUl9WTUVNX05UIEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZNLEFfTk9U RV9WTUVNLEFfTlRfVk1FTSxBX05PVEVfTlRfVk1FTSxBX05PVEVfQU5ZX1JFU09VUkNFLEFfVk1F TQorCitNTVZFQ19FQUNIX0VBKHZTMzJiX250LCJBbGlnbmVkIFZlY3RvciBTdG9yZSAtIE5vbiB0 ZW1wb3JhbCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9TVE9SRSxBX1JFU1RSSUNUX1NMT1QwT05M WSxBX0NWSV9WQSksIjpudCIsInZtZW0iLCI9VnMzMiIsZlNUT1JFTU1WKEVBLFZzVikpCitNTVZF Q19DT05EX0VBQ0hfRUEodlMzMmJfbnQsIkFsaWduZWQgVmVjdG9yIFN0b3JlIC0gTm9uIHRlbXBv cmFsIixBVFRSSUJTKEFUVFJfVk1FTV9OVCxBX1NUT1JFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFf Q1ZJX1ZBKSwiOm50Iiwidm1lbSIsIj1WczMyIixQdixmU1RPUkVNTVYoRUEsVnNWKSkKKworTU1W RUNfRUFDSF9FQSh2UzMyYl9udF9uZXcsIkFsaWduZWQgVmVjdG9yIFN0b3JlIE5ldyAtIE5vbiB0 ZW1wb3JhbCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9TVE9SRSxBX0NWSV9ORVcsQV9SRVNUUklD VF9TSU5HTEVfTUVNX0ZJUlNULEFfRE9UTkVXVkFMVUUsQV9SRVNUUklDVF9TTE9UME9OTFkpLCI6 bnQiLCJ2bWVtIiwiPU9zOC5uZXciLGZTVE9SRU1NVihFQSxmTkVXVlJFRyhPc04pKSkKK01NVkVD X0NPTkRfRUFDSF9FQSh2UzMyYl9udF9uZXcsIkFsaWduZWQgVmVjdG9yIFN0b3JlIE5ldyAtIE5v biB0ZW1wb3JhbCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9TVE9SRSxBX0NWSV9ORVcsQV9SRVNU UklDVF9TSU5HTEVfTUVNX0ZJUlNULEFfRE9UTkVXVkFMVUUsQV9SRVNUUklDVF9TTE9UME9OTFkp LCI6bnQiLCJ2bWVtIiwiPU9zOC5uZXciLFB2LGZTVE9SRU1NVihFQSxmTkVXVlJFRyhPc04pKSkK KworCitNTVZFQ19TVFEodlMzMmJfbnQsICAiQWxpZ25lZCBWZWN0b3IgU3RvcmUgLSBOb24gdGVt cG9yYWwiLCAgICAgIEFUVFJJQlMoQVRUUl9WTUVNX05ULEFfU1RPUkUsQV9SRVNUUklDVF9TTE9U ME9OTFksQV9DVklfVkEpLCI6bnQiKQorCitNTVZFQ19MRCh2TDMyYl9udCwgICJBbGlnbmVkIFZl Y3RvciBMb2FkIC0gTm9uIHRlbXBvcmFsIiwgICAgICAgQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9M T0FELEFfQ1ZJX1ZBKSwiOm50IikKK01NVkVDX0xEQyh2TDMyYl9udCwgICJBbGlnbmVkIFZlY3Rv ciBMb2FkIEN1ciAtIE5vbiB0ZW1wb3JhbCIsCUFUVFJJQlMoQVRUUl9WTUVNX05ULEFfTE9BRCxB X0NWSV9ORVcsQV9DVklfVkEpLCI6bnQiKQorTU1WRUNfTERUKHZMMzJiX250LCAgIkFsaWduZWQg VmVjdG9yIExvYWQgVG1wIC0gTm9uIHRlbXBvcmFsIiwJQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9M T0FELEFfQ1ZJX1RNUCksIjpudCIpCisKK01NVkVDX0NPTkRfRUFDSF9FQSh2TDMyYl9udCwiQ29u ZGl0aW9uYWwgQWxpZ25lZCBWZWN0b3IgTG9hZCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9DVklf VkEpLCwiVmQzMj12bWVtIiwiOm50IixQdixmTE9BRE1NVihFQSxWZFYpOykKK01NVkVDX0NPTkRf RUFDSF9FQSh2TDMyYl9udF9jdXIsIkNvbmRpdGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQgQ3Vy IixBVFRSSUJTKEFUVFJfVk1FTV9OVCxBX0NWSV9WQSxBX0NWSV9ORVcpLCwiVmQzMi5jdXI9dm1l bSIsIjpudCIsUHYsZkxPQURNTVYoRUEsVmRWKTspCitNTVZFQ19DT05EX0VBQ0hfRUEodkwzMmJf bnRfdG1wLCJDb25kaXRpb25hbCBBbGlnbmVkIFZlY3RvciBMb2FkIFRtcCIsQVRUUklCUyhBVFRS X1ZNRU1fTlQsQV9DVklfVE1QKSwsIlZkMzIudG1wPXZtZW0iLCI6bnQiLFB2LGZMT0FETU1WKEVB LFZkVik7KQorCisKKy8vIExvYWRzCitERUZfQ1ZJX01BUFBJTkcoVjZfbGRudDAsICAgIlZkMzI9 dm1lbShSdDMyKTpudCIsICAiVmQzMj12bWVtKFJ0MzIrIzApOm50IikKK0RFRl9DVklfTUFQUElO RyhWNl9sZHBudDAsICAgImlmIChQdjQpIFZkMzI9dm1lbShSdDMyKTpudCIsICAiaWYgKFB2NCkg VmQzMj12bWVtKFJ0MzIrIzApOm50IikKK0RFRl9DVklfTUFQUElORyhWNl9sZG5wbnQwLCAgICJp ZiAoIVB2NCkgVmQzMj12bWVtKFJ0MzIpOm50IiwgICJpZiAoIVB2NCkgVmQzMj12bWVtKFJ0MzIr IzApOm50IikKK0RFRl9DVklfTUFQUElORyhWNl9sZGNwbnQwLCAgImlmIChQdjQpIFZkMzIuY3Vy PXZtZW0oUnQzMik6bnQiLCAiaWYgKFB2NCkgVmQzMi5jdXI9dm1lbShSdDMyKyMwKTpudCIpCitE RUZfQ1ZJX01BUFBJTkcoVjZfbGR0cG50MCwgICJpZiAoUHY0KSBWZDMyLnRtcD12bWVtKFJ0MzIp Om50IiwgImlmIChQdjQpIFZkMzIudG1wPXZtZW0oUnQzMisjMCk6bnQiKQorREVGX0NWSV9NQVBQ SU5HKFY2X2xkY25wbnQwLCAgImlmICghUHY0KSBWZDMyLmN1cj12bWVtKFJ0MzIpOm50IiwgImlm ICghUHY0KSBWZDMyLmN1cj12bWVtKFJ0MzIrIzApOm50IikKK0RFRl9DVklfTUFQUElORyhWNl9s ZHRucG50MCwgICJpZiAoIVB2NCkgVmQzMi50bXA9dm1lbShSdDMyKTpudCIsICJpZiAoIVB2NCkg VmQzMi50bXA9dm1lbShSdDMyKyMwKTpudCIpCisKKworLy8gU3RvcmVzCitERUZfQ1ZJX01BUFBJ TkcoVjZfc3RudDAsICAgICJ2bWVtKFJ0MzIpOm50PVZzMzIiLCAgICAgInZtZW0oUnQzMisjMCk6 bnQ9VnMzMiIpCitERUZfQ1ZJX01BUFBJTkcoVjZfc3RubnQwLCAgICJ2bWVtKFJ0MzIpOm50PU9z OC5uZXciLCAgInZtZW0oUnQzMisjMCk6bnQ9T3M4Lm5ldyIpCitERUZfQ1ZJX01BUFBJTkcoVjZf c3RxbnQwLCAgICJpZiAoUXY0KSB2bWVtKFJ0MzIpOm50PVZzMzIiLCAgICAgImlmIChRdjQpIHZt ZW0oUnQzMisjMCk6bnQ9VnMzMiIpCitERUZfQ1ZJX01BUFBJTkcoVjZfc3RucW50MCwgICJpZiAo IVF2NCkgdm1lbShSdDMyKTpudD1WczMyIiwgICAgICJpZiAoIVF2NCkgdm1lbShSdDMyKyMwKTpu dD1WczMyIikKK0RFRl9DVklfTUFQUElORyhWNl9zdHBudDAsICAgImlmIChQdjQpIHZtZW0oUnQz Mik6bnQ9VnMzMiIsICAgICAiaWYgKFB2NCkgdm1lbShSdDMyKyMwKTpudD1WczMyIikKK0RFRl9D VklfTUFQUElORyhWNl9zdG5wbnQwLCAgImlmICghUHY0KSB2bWVtKFJ0MzIpOm50PVZzMzIiLCAg ICAgImlmICghUHY0KSB2bWVtKFJ0MzIrIzApOm50PVZzMzIiKQorCisKKworI3VuZGVmIFZFQ19T Q0FMRQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqIFZlY3RvciBBbGlnbm1lbnQKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgVkFMSUdOQihTSElGVCkgIFwKKyAgICBm SElERShpbnQgaTspIFwKKyAgICBmb3IoaSA9IDA7IGkgPCBmVkJZVEVTKCk7IGkrKykge1wKKyAg ICAgICAgVmRWLnViW2ldID0gKGkrU0hJRlQ+PWZWQllURVMoKSkgPyBWdVYudWJbaStTSElGVC1m VkJZVEVTKCldIDogVnZWLnViW2krU0hJRlRdO1wKKwl9CisKK0VYVElOU04oVjZfdmFsaWduYiwg ICJWZDMyPXZhbGlnbihWdTMyLFZ2MzIsUnQ4KSIsICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJ LEFfQ1ZJX1ZQLEFfTk9URV9QRVJNVVRFX1JFU09VUkNFLEFfTk9URV9SVDgpLCJBbGlnbiBUd28g dmVjdG9ycyBieSBSdDggYXMgY29udHJvbCIsCit7CisJdW5zaWduZWQgc2hpZnQgPSBSdFYgJiAo ZlZCWVRFUygpLTEpOworCVZBTElHTkIoc2hpZnQpCit9KQorRVhUSU5TTihWNl92bGFsaWduYiwg IlZkMzI9dmxhbGlnbihWdTMyLFZ2MzIsUnQ4KSIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkks QV9DVklfVlAsQV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UsQV9OT1RFX1JUOCksIkFsaWduIFR3byB2 ZWN0b3JzIGJ5IFJ0OCBhcyBjb250cm9sIiwKK3sKKwl1bnNpZ25lZCBzaGlmdCA9IGZWQllURVMo KSAtIChSdFYgJiAoZlZCWVRFUygpLTEpKTsKKwlWQUxJR05CKHNoaWZ0KQorfSkKK0VYVElOU04o VjZfdmFsaWduYmksICJWZDMyPXZhbGlnbihWdTMyLFZ2MzIsI3UzKSIsIAlBVFRSSUJTKEFfRVhU RU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQLEFfTk9URV9QRVJNVVRFX1JFU09VUkNFKSwiQWxpZ24gVHdv IHZlY3RvcnMgYnkgI3UzIGFzIGNvbnRyb2wiLAoreworCVZBTElHTkIodWlWKQorfSkKK0VYVElO U04oVjZfdmxhbGlnbmJpLCJWZDMyPXZsYWxpZ24oVnUzMixWdjMyLCN1MykiLCBBVFRSSUJTKEFf RVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQLEFfTk9URV9QRVJNVVRFX1JFU09VUkNFKSwiQWxpZ24g VHdvIHZlY3RvcnMgYnkgI3UzIGFzIGNvbnRyb2wiLAoreworCXVuc2lnbmVkIHNoaWZ0ID0gZlZC WVRFUygpIC0gdWlWOworCVZBTElHTkIoc2hpZnQpCit9KQorCitFWFRJTlNOKFY2X3Zyb3IsICJW ZDMyPXZyb3IoVnUzMixSdDMyKSIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlAs QV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UpLAorIkFsaWduIFR3byB2ZWN0b3JzIGJ5IFJ0MzIgYXMg Y29udHJvbCIsCit7CisJZkhJREUoaW50IGs7KQorCWZvciAoaz0wO2s8ZlZCWVRFUygpO2srKykg eworCQlWZFYudWJba10gPSBWdVYudWJbKGsrUnRWKSYoZlZCWVRFUygpLTEpXTsKKwl9CisJfSkK KworCisKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisqIFVucGFjayBlbGVtZW50cyB3aXRoIHplcm8vc2lnbiBl eHRlbmQgYW5kIGNyb3NzIGxhbmUgcGVybXV0ZQorKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9JTlNOMl9Q RVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyg4LHZ1bnBhY2t1YiwgICJWZGQzMj12dW5wYWNrdWIoVnUz MikiLCAiVmRkMzIudWg9dnVucGFjayhWdTMyLnViKSIsICJVbnBhY2sgYnl0ZSB3aXRoIHplcm8t ZXh0ZW5kIiwgICAgIGZWQVJSQVlfRUxFTUVOVF9BQ0NFU1MoVmRkViwgdWgsIGkpICA9IGZaRThf MTYoIFZ1Vi51YltpXSkpCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyg4 LHZ1bnBhY2tiLCAgICJWZGQzMj12dW5wYWNrYihWdTMyKSIsICAiVmRkMzIuaD12dW5wYWNrKFZ1 MzIuYikiLCAgICJVbnBhY2sgYnl0ZXMgd2l0aCBzaWduLWV4dGVuZCIsICAgIGZWQVJSQVlfRUxF TUVOVF9BQ0NFU1MoVmRkViwgaCwgIGkpICA9IGZTRThfMTYoIFZ1Vi5iW2ldICkpCitJVEVSQVRP Ul9JTlNOMl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2dW5wYWNrdWgsICJWZGQzMj12dW5w YWNrdWgoVnUzMikiLCAiVmRkMzIudXc9dnVucGFjayhWdTMyLnVoKSIsICJVbnBhY2sgaGFsdmVz IHdpdGggemVyby1leHRlbmQiLCAgIGZWQVJSQVlfRUxFTUVOVF9BQ0NFU1MoVmRkViwgdXcsIGkp ICA9IGZaRTE2XzMyKFZ1Vi51aFtpXSkpCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9V QkxFX1ZFQygxNix2dW5wYWNraCwgICJWZGQzMj12dW5wYWNraChWdTMyKSIsICAiVmRkMzIudz12 dW5wYWNrKFZ1MzIuaCkiLCAgICJVbnBhY2sgaGFsdmVzIHdpdGggc2lnbi1leHRlbmQiLCAgIGZW QVJSQVlfRUxFTUVOVF9BQ0NFU1MoVmRkViwgdywgIGkpICA9IGZTRTE2XzMyKFZ1Vi5oW2ldICkp CisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDgsIHZ1bnBhY2tvYiwg IlZ4eDMyfD12dW5wYWNrb2IoVnUzMikiLCAiVnh4MzIuaHw9dnVucGFja28oVnUzMi5iKSIsICJV bnBhY2sgYnl0ZSB0byBvZGQgYnl0ZXMgIiwgICAgICAgZlZBUlJBWV9FTEVNRU5UX0FDQ0VTUyhW eHhWLCB1aCwgaSkgfD0gZlpFOF8xNiggVnVWLnViW2ldKTw8OCkKK0lURVJBVE9SX0lOU04yX1BF Uk1VVEVfU0xPVF9ET1VCTEVfVkVDKDE2LHZ1bnBhY2tvaCwgIlZ4eDMyfD12dW5wYWNrb2goVnUz MikiLCAiVnh4MzIud3w9dnVucGFja28oVnUzMi5oKSIsICJVbnBhY2sgaGFsdmVzIHRvIG9kZCBo YWx2ZXMiLCAgICAgZlZBUlJBWV9FTEVNRU5UX0FDQ0VTUyhWeHhWLCB1dywgaSkgfD0gZlpFMTZf MzIoVnVWLnVoW2ldKTw8MTYpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIFBhY2sgZWxlbWVudHMgYW5kIGNyb3Nz IGxhbmUgcGVybXV0ZQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCisgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDE2 LCB2cGFja2ViLCAgIlZkMzI9dnBhY2tlYihWdTMyLFZ2MzIpIiwgIlZkMzIuYj12cGFja2UoVnUz Mi5oLFZ2MzIuaCkiLAorICJQYWNrICBieXRlcyIsCisgICAgVmRWLnViW2ldICAgICAgICAgICAg ICAgPSBmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKTsKKyAgICBWZFYudWJbaStmVkVMRU0oMTYpXSAg ICA9IGZHRVRVQllURSgwLCBWdVYudWhbaV0pKQorCisgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9T TE9UKDMyLCB2cGFja2VoLCAgIlZkMzI9dnBhY2tlaChWdTMyLFZ2MzIpIiwgIlZkMzIuaD12cGFj a2UoVnUzMi53LFZ2MzIudykiLAorICJQYWNrICBoYWxmd29yZHMiLAorICAgIFZkVi51aFtpXSAg ICAgICAgICAgICAgID0gZkdFVFVIQUxGKDAsIFZ2Vi51d1tpXSk7CisgICAgVmRWLnVoW2krZlZF TEVNKDMyKV0gICAgPSBmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSkKKworICBJVEVSQVRPUl9JTlNO Ml9QRVJNVVRFX1NMT1QoMTYsIHZwYWNrb2IsICAiVmQzMj12cGFja29iKFZ1MzIsVnYzMikiLCAi VmQzMi5iPXZwYWNrbyhWdTMyLmgsVnYzMi5oKSIsCisgIlBhY2sgIGJ5dGVzIiwKKyAgICBWZFYu dWJbaV0gICAgICAgICAgICAgICA9IGZHRVRVQllURSgxLCBWdlYudWhbaV0pOworICAgIFZkVi51 YltpK2ZWRUxFTSgxNildICAgID0gZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSkpCisKKyBJVEVSQVRP Ul9JTlNOMl9QRVJNVVRFX1NMT1QoMzIsIHZwYWNrb2gsICAiVmQzMj12cGFja29oKFZ1MzIsVnYz MikiLCAiVmQzMi5oPXZwYWNrbyhWdTMyLncsVnYzMi53KSIsCisgIlBhY2sgIGhhbGZ3b3JkcyIs CisgICAgVmRWLnVoW2ldICAgICAgICAgICAgICAgPSBmR0VUVUhBTEYoMSwgVnZWLnV3W2ldKTsK KyAgICBWZFYudWhbaStmVkVMRU0oMzIpXSAgICA9IGZHRVRVSEFMRigxLCBWdVYudXdbaV0pKQor CisKKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDE2LCB2cGFja2h1Yl9zYXQsICAiVmQz Mj12cGFja2h1YihWdTMyLFZ2MzIpOnNhdCIsICJWZDMyLnViPXZwYWNrKFZ1MzIuaCxWdjMyLmgp OnNhdCIsCisgIlBhY2sgdWJ5dGVzIHdpdGggc2F0dXJhdGlvbiIsCisgICAgVmRWLnViW2ldICAg ICAgICAgICAgICAgPSBmVlNBVFVCKFZ2Vi5oW2ldKTsKKyAgICBWZFYudWJbaStmVkVMRU0oMTYp XSAgICA9IGZWU0FUVUIoVnVWLmhbaV0pKQorCisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xP VCgxNiwgdnBhY2toYl9zYXQsICAiVmQzMj12cGFja2hiKFZ1MzIsVnYzMik6c2F0IiwgIlZkMzIu Yj12cGFjayhWdTMyLmgsVnYzMi5oKTpzYXQiLAorICJQYWNrIGJ5dGVzIHdpdGggc2F0dXJhdGlv biIsCisgICAgVmRWLmJbaV0gICAgICAgICAgICAgICA9IGZWU0FUQihWdlYuaFtpXSk7CisgICAg VmRWLmJbaStmVkVMRU0oMTYpXSAgICA9IGZWU0FUQihWdVYuaFtpXSkpCisKKworSVRFUkFUT1Jf SU5TTjJfUEVSTVVURV9TTE9UKDMyLCB2cGFja3d1aF9zYXQsICAiVmQzMj12cGFja3d1aChWdTMy LFZ2MzIpOnNhdCIsICJWZDMyLnVoPXZwYWNrKFZ1MzIudyxWdjMyLncpOnNhdCIsCisgIlBhY2sg dWJ5dGVzIHdpdGggc2F0dXJhdGlvbiIsCisgICAgVmRWLnVoW2ldICAgICAgICAgICAgICAgPSBm VlNBVFVIKFZ2Vi53W2ldKTsKKyAgICBWZFYudWhbaStmVkVMRU0oMzIpXSAgICA9IGZWU0FUVUgo VnVWLndbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1QoMzIsIHZwYWNrd2hfc2F0 LCAgIlZkMzI9dnBhY2t3aChWdTMyLFZ2MzIpOnNhdCIsICJWZDMyLmg9dnBhY2soVnUzMi53LFZ2 MzIudyk6c2F0IiwKKyAiUGFjayBieXRlcyB3aXRoIHNhdHVyYXRpb24iLAorICAgIFZkVi5oW2ld ICAgICAgICAgICAgICAgPSBmVlNBVEgoVnZWLndbaV0pOworICAgIFZkVi5oW2krZlZFTEVNKDMy KV0gICAgPSBmVlNBVEgoVnVWLndbaV0pKQorCisKKworCisKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBaZXJvL1NpZ24g RXh0ZW5kIHdpdGggaW4tbGFuZSBwZXJtdXRlCisqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lOU04yX0FO WV9TTE9UX0RPVUJMRV9WRUMoMTYsdnpiLCJWZGQzMj12enh0YihWdTMyKSIsIlZkZDMyLnVoPXZ6 eHQoVnUzMi51YikiLAorIlZlY3RvciBaZXJvIEV4dGVuZCBCeXRlcyIsCisgICAgVmRkVi52WzBd LnVoW2ldID0gZlpFOF8xNihmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSk7CisgICAgVmRkVi52WzFd LnVoW2ldID0gZlpFOF8xNihmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkpCisKK0lURVJBVE9SX0lO U04yX0FOWV9TTE9UX0RPVUJMRV9WRUMoMTYsdnNiLCJWZGQzMj12c3h0YihWdTMyKSIsIlZkZDMy Lmg9dnN4dChWdTMyLmIpIiwKKyJWZWN0b3IgU2lnbiBFeHRlbmQgQnl0ZXMiLAorICAgIFZkZFYu dlswXS5oW2ldID0gZlNFOF8xNihmR0VUQllURSgwLCBWdVYuaFtpXSkpOworICAgIFZkZFYudlsx XS5oW2ldID0gZlNFOF8xNihmR0VUQllURSgxLCBWdVYuaFtpXSkpKQorCitJVEVSQVRPUl9JTlNO Ml9BTllfU0xPVF9ET1VCTEVfVkVDKDMyLHZ6aCwiVmRkMzI9dnp4dGgoVnUzMikiLCJWZGQzMi51 dz12enh0KFZ1MzIudWgpIiwKKyJWZWN0b3IgWmVybyBFeHRlbmQgaGFsZndvcmRzIiwKKyAgICBW ZGRWLnZbMF0udXdbaV0gPSBmWkUxNl8zMihmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSk7CisgICAg VmRkVi52WzFdLnV3W2ldID0gZlpFMTZfMzIoZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSkpKQorCitJ VEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKDMyLHZzaCwiVmRkMzI9dnN4dGgoVnUz MikiLCJWZGQzMi53PXZzeHQoVnUzMi5oKSIsCisiVmVjdG9yIFNpZ24gRXh0ZW5kIGhhbGZ3b3Jk cyIsCisgICAgVmRkVi52WzBdLndbaV0gPSBmU0UxNl8zMihmR0VUSEFMRigwLCBWdVYud1tpXSkp OworICAgIFZkZFYudlsxXS53W2ldID0gZlNFMTZfMzIoZkdFVEhBTEYoMSwgVnVWLndbaV0pKSkK KworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorKgorKgorKgorKiAgICAgICAgICAgICAgIE1NVkVDVE9SIFJF RFVDVElPTgorKgorKgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisqICAyLVdBWSBSRURVQ1RJT04gLSBVTlNJR05FRCBC WVRFIEJZIEJZVEUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDE2LHZkbXB5YnVzLCJWZDMyPXZkbXB5YnVz KFZ1MzIsUnQzMikiLCJWZDMyLmg9dmRtcHkoVnUzMi51YixSdDMyLmIpIiwKKyJWZWN0b3IgRHVh bCBNdWx0aXBseS1BY2N1bXVsYXRlcyB1bnNpZ25lZCBieXRlcyBieSBieXRlcyIsCisgICAgVmRW LmhbaV0gICA9IGZNUFk4VVMoIGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMipp KSAlIDQsIFJ0VikpOworICAgIFZkVi5oW2ldICArPSBmTVBZOFVTKCBmR0VUVUJZVEUoMSwgVnVW LnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZ X1NMT1QoMTYsdmRtcHlidXNfYWNjLCJWeDMyKz12ZG1weWJ1cyhWdTMyLFJ0MzIpIiwiVngzMi5o Kz12ZG1weShWdTMyLnViLFJ0MzIuYikiLAorIlZlY3RvciBEdWFsIE11bHRpcGx5LUFjY3VtdWxh dGVzIHVuc2lnbmVkIGJ5dGVzIGJ5ICBieXRlcywgYW5kIGFjY3VtdWxhdGUiLAorICAgIFZ4Vi5o W2ldICs9IGZNUFk4VVMoIGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMippKSAl IDQsIFJ0VikpOworICAgIFZ4Vi5oW2ldICs9IGZNUFk4VVMoIGZHRVRVQllURSgxLCBWdVYudWhb aV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpKQorCisKKworSVRFUkFUT1JfSU5TTjJfTVBZ X1NMT1RfRE9VQkxFX1ZFQygxNix2ZG1weWJ1c19kdiwiVmRkMzI9dmRtcHlidXMoVnV1MzIsUnQz MikiLCJWZGQzMi5oPXZkbXB5KFZ1dTMyLnViLFJ0MzIuYikiLAorIlZlY3RvciBEdWFsIE11bHRp cGx5LUFjY3VtdWxhdGVzIHVuc2lnbmVkIGJ5dGVzIGJ5ICBieXRlcywgYW5kIGFjY3VtdWxhdGUg U2xpZGluZyBXaW5kb3cgUmVkdWN0aW9uIiwKKyAgICBWZGRWLnZbMF0uaFtpXSAgPSBmTVBZOFVT KGZHRVRVQllURSgwLCBWdXVWLnZbMF0udWhbaV0pLGZHRVRCWVRFKCgyKmkpICUgNCwgUnRWKSk7 CisgICAgVmRkVi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVo W2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworCisgICAgVmRkVi52WzFdLmhbaV0gID0g Zk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSxmR0VUQllURSgoMippKSAlIDQs IFJ0VikpOworICAgIFZkZFYudlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYu dlsxXS51aFtpXSksZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2ZG1weWJ1c19kdl9hY2MsIlZ4eDMyKz12ZG1weWJ1cyhW dXUzMixSdDMyKSIsIlZ4eDMyLmgrPXZkbXB5KFZ1dTMyLnViLFJ0MzIuYikiLAorIlZlY3RvciBE dWFsIE11bHRpcGx5LUFjY3VtdWxhdGVzIHVuc2lnbmVkIGJ5dGVzIGJ5ICBieXRlcywgYW5kIGFj Y3VtdWxhdGUgU2xpZGluZyBXaW5kb3cgUmVkdWN0aW9uIiwKKyAgICBWeHhWLnZbMF0uaFtpXSAr PSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVWLnZbMF0udWhbaV0pLGZHRVRCWVRFKCgyKmkpICUg NCwgUnRWKSk7CisgICAgVnh4Vi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1 Vi52WzBdLnVoW2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworCisgICAgVnh4Vi52WzFd LmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSxmR0VUQllURSgo MippKSAlIDQsIFJ0VikpOworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRF KDAsIFZ1dVYudlsxXS51aFtpXSksZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworCisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgMi1XQVkgUkVE VUNUSU9OIC0gSEFMRiBCWSBCWVRFCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZkbXB5aGIsIlZkMzI9dmRt cHloYihWdTMyLFJ0MzIpIiwiVmQzMi53PXZkbXB5KFZ1MzIuaCxSdDMyLmIpIiwKKyJEdWFsLVZl Y3RvciAyLUVsZW1lbnQgSGFsZiB4IEJ5dGUgUmVkdWN0aW9uIHdpdGggU2xpZGluZyBXaW5kb3cg T3ZlcmxhcCIsCisgICAgVmRWLndbaV0gID0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0p LGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7CisgICAgVmRWLndbaV0gKz0gZk1QWTE2U1MoZkdF VEhBTEYoMSwgVnVWLndbaV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UKDMyLHZkbXB5aGJfYWNjLCJWeDMyKz12ZG1weWhiKFZ1MzIsUnQzMiki LCJWeDMyLncrPXZkbXB5KFZ1MzIuaCxSdDMyLmIpIiwKKyJEdWFsLVZlY3RvciAyLUVsZW1lbnQg SGFsZiB4IEJ5dGUgUmVkdWN0aW9uIHdpdGggU2xpZGluZyBXaW5kb3cgT3ZlcmxhcCIsCisgICAg VnhWLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLGZHRVRCWVRFKCgyKmkr MCklNCwgUnRWKSk7CisgICAgVnhWLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndb aV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9ET1VCTEVfVkVDKDMyLHZkbXB5aGJfZHYsIlZkZDMyPXZkbXB5aGIoVnV1MzIsUnQzMiki LCJWZGQzMi53PXZkbXB5KFZ1dTMyLmgsUnQzMi5iKSIsCisiRHVhbC1WZWN0b3IgMi1FbGVtZW50 IEhhbGYgeCBCeXRlIFJlZHVjdGlvbiB3aXRoIFNsaWRpbmcgV2luZG93IE92ZXJsYXAiLAorICAg IFZkZFYudlswXS53W2ldICA9IGZNUFkxNlNTKGZHRVRIQUxGKDAsIFZ1dVYudlswXS53W2ldKSxm R0VUQllURSgoMippKzApJTQsIFJ0VikpOworICAgIFZkZFYudlswXS53W2ldICs9IGZNUFkxNlNT KGZHRVRIQUxGKDEsIFZ1dVYudlswXS53W2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOwor CisgICAgVmRkVi52WzFdLndbaV0gID0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnV1Vi52WzBdLndb aV0pLGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0gKz0gZk1Q WTE2U1MoZkdFVEhBTEYoMCwgVnV1Vi52WzFdLndbaV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRW KSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWhiX2R2 X2FjYywiVnh4MzIrPXZkbXB5aGIoVnV1MzIsUnQzMikiLCJWeHgzMi53Kz12ZG1weShWdXUzMi5o LFJ0MzIuYikiLAorIkR1YWwtVmVjdG9yIDItRWxlbWVudCBIYWxmIHggQnl0ZSBSZWR1Y3Rpb24g d2l0aCBTbGlkaW5nIFdpbmRvdyBPdmVybGFwIiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZ MTZTUyhmR0VUSEFMRigwLCBWdXVWLnZbMF0ud1tpXSksZkdFVEJZVEUoKDIqaSswKSU0LCBSdFYp KTsKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdXVWLnZbMF0u d1tpXSksZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKworICAgIFZ4eFYudlsxXS53W2ldICs9 IGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1dVYudlswXS53W2ldKSxmR0VUQllURSgoMippKzApJTQs IFJ0VikpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxGKDAsIFZ1dVYu dlsxXS53W2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpKQorCisKKworCisKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgMi1XQVkgUkVEVUNUSU9O IC0gSEFMRiBCWSBIQUxGCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWh2c2F0 LCJWZDMyPXZkbXB5aChWdTMyLFZ2MzIpOnNhdCIsIlZkMzIudz12ZG1weShWdTMyLmgsVnYzMi5o KTpzYXQiLAorIlZlY3RvciBoYWxmd29yZCBtdWx0aXBseSwgYWNjdW11bGF0ZSBwYWlycywgc2F0 IHRvIHdvcmQiLAorICAgIGZISURFKHNpemU4c190IGFjY3VtOykKKyAgICBhY2N1bSAgICA9IGZN UFkxNlNTKGZHRVRIQUxGKDAsVnVWLndbaV0pLGZHRVRIQUxGKDAsIFZ2Vi53W2ldKSk7CisgICAg YWNjdW0gICArPSBmTVBZMTZTUyhmR0VUSEFMRigxLFZ1Vi53W2ldKSxmR0VUSEFMRigxLCBWdlYu d1tpXSkpOworICAgIFZkVi53W2ldID0gZlZTQVRXKGFjY3VtKSkKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWh2c2F0X2FjYywiVngzMis9dmRtcHloKFZ1MzIs VnYzMik6c2F0IiwiVngzMi53Kz12ZG1weShWdTMyLmgsVnYzMi5oKTpzYXQiLAorIlZlY3RvciBo YWxmd29yZCBtdWx0aXBseSwgYWNjdW11bGF0ZSBwYWlycywgc2F0IHRvIHdvcmQiLAorICAgIGZI SURFKHNpemU4c190IGFjY3VtOykKKyAgICBhY2N1bSAgICA9IGZNUFkxNlNTKGZHRVRIQUxGKDAs VnVWLndbaV0pLGZHRVRIQUxGKDAsIFZ2Vi53W2ldKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZT UyhmR0VUSEFMRigxLFZ1Vi53W2ldKSxmR0VUSEFMRigxLCBWdlYud1tpXSkpOworICAgIFZ4Vi53 W2ldID0gZlZTQVRXKFZ4Vi53W2ldK2FjY3VtKSkKKworCisvKiBWRE1QWUggKi8KKworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWhzYXQsIlZkMzI9dmRtcHloKFZ1 MzIsUnQzMik6c2F0IiwiVmQzMi53PXZkbXB5KFZ1MzIuaCxSdDMyLmgpOnNhdCIsCisiVmVjdG9y IGhhbGZ3b3JkIG11bHRpcGx5LCBhY2N1bXVsYXRlIHBhaXJzLCBzYXR1cmF0ZSB0byB3b3JkIiwK KyAgICBmSElERShzaXplOHNfdCBhY2N1bTspCisgICAgYWNjdW0gICAgPSBmTVBZMTZTUyhmR0VU SEFMRigwLCBWdVYud1tpXSksZkdFVEhBTEYoMCwgUnRWKSk7CisgICAgYWNjdW0gICArPSBmTVBZ MTZTUyhmR0VUSEFMRigxLCBWdVYud1tpXSksZkdFVEhBTEYoMSwgUnRWKSk7CisgICAgVmRWLndb aV0gPSBmVlNBVFcoYWNjdW0pKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVD KDMyLHZkbXB5aHNhdF9hY2MsIlZ4MzIrPXZkbXB5aChWdTMyLFJ0MzIpOnNhdCIsIlZ4MzIudys9 dmRtcHkoVnUzMi5oLFJ0MzIuaCk6c2F0IiwKKyJWZWN0b3IgaGFsZndvcmQgbXVsdGlwbHksIGFj Y3VtdWxhdGUgcGFpcnMsIHNhdHVyYXRlIHRvIHdvcmQiLAorICAgIGZISURFKHNpemU4c190KSBh Y2N1bSA9IFZ4Vi53W2ldOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVW LndbaV0pLGZHRVRIQUxGKDAsIFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1MoZkdFVEhB TEYoMSwgVnVWLndbaV0pLGZHRVRIQUxGKDEsIFJ0VikpOworICAgIFZ4Vi53W2ldID0gZlZTQVRX KGFjY3VtKSkKKworCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2 ZG1weWhpc2F0LCJWZDMyPXZkbXB5aChWdXUzMixSdDMyKTpzYXQiLCJWZDMyLnc9dmRtcHkoVnV1 MzIuaCxSdDMyLmgpOnNhdCIsCisiRHVhbCBWZWN0b3IgU2lnbmVkIEhhbGZ3b3JkIGJ5IFNpZ25l ZCBIYWxmd29yZCAyLVdheSBSZWR1Y3Rpb24gdG8gSGFsZndvcmQgd2l0aCBzYXR1cmF0aW9uIiwK KyAgICBmSElERShzaXplOHNfdCBhY2N1bTspCisgICAgYWNjdW0gICAgPSBmTVBZMTZTUyhmR0VU SEFMRigxLFZ1dVYudlswXS53W2ldKSxmR0VUSEFMRigwLFJ0VikpOworICAgIGFjY3VtICAgKz0g Zk1QWTE2U1MoZkdFVEhBTEYoMCxWdXVWLnZbMV0ud1tpXSksZkdFVEhBTEYoMSxSdFYpKTsKKyAg ICBWZFYud1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RP VUJMRV9WRUMoMzIsdmRtcHloaXNhdF9hY2MsIlZ4MzIrPXZkbXB5aChWdXUzMixSdDMyKTpzYXQi LCJWeDMyLncrPXZkbXB5KFZ1dTMyLmgsUnQzMi5oKTpzYXQiLAorIkR1YWwgVmVjdG9yIFNpZ25l ZCBIYWxmd29yZCBieSBTaWduZWQgSGFsZndvcmQgMi1XYXkgUmVkdWN0aW9uIHRvIEhhbGZ3b3Jk IHdpdGggYWNjdW11bGF0aW9uIGFuZCBzYXR1cmF0aW9uIiwKKyAgICBmSElERShzaXplOHNfdCkg YWNjdW0gPSBWeFYud1tpXTsKKyAgICBhY2N1bSAgICs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1 Vi52WzBdLndbaV0pLGZHRVRIQUxGKDAsUnRWKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZTUyhm R0VUSEFMRigwLFZ1dVYudlsxXS53W2ldKSxmR0VUSEFMRigxLFJ0VikpOworICAgIFZ4Vi53W2ld ID0gZlZTQVRXKGFjY3VtKSkKKworCisKKworCisKKworLyogVkRNUFlIU1UgKi8KK0lURVJBVE9S X0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRtcHloc3VzYXQsIlZkMzI9dmRtcHloc3Uo VnUzMixSdDMyKTpzYXQiLCJWZDMyLnc9dmRtcHkoVnUzMi5oLFJ0MzIudWgpOnNhdCIsCisiVmVj dG9yIGhhbGZ3b3JkIG11bHRpcGx5LCBhY2N1bXVsYXRlIHBhaXJzLCBzYXR1cmF0ZSB0byB3b3Jk IiwKKyAgICBmSElERShzaXplOHNfdCBhY2N1bTspCisgICAgYWNjdW0gICAgPSBmTVBZMTZTVShm R0VUSEFMRigwLCBWdVYud1tpXSksZkdFVFVIQUxGKDAsIFJ0VikpOworICAgIGFjY3VtICAgKz0g Zk1QWTE2U1UoZkdFVEhBTEYoMSwgVnVWLndbaV0pLGZHRVRVSEFMRigxLCBSdFYpKTsKKyAgICBW ZFYud1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJM RV9WRUMoMzIsdmRtcHloc3VzYXRfYWNjLCJWeDMyKz12ZG1weWhzdShWdTMyLFJ0MzIpOnNhdCIs IlZ4MzIudys9dmRtcHkoVnUzMi5oLFJ0MzIudWgpOnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIG11 bHRpcGx5LCBhY2N1bXVsYXRlIHBhaXJzLCBzYXR1cmF0ZSB0byB3b3JkIiwKKyAgICBmSElERShz aXplOHNfdCkgYWNjdW09VnhWLndbaV07CisgICAgYWNjdW0gICArPSBmTVBZMTZTVShmR0VUSEFM RigwLCBWdVYud1tpXSksZkdFVFVIQUxGKDAsIFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1QWTE2 U1UoZkdFVEhBTEYoMSwgVnVWLndbaV0pLGZHRVRVSEFMRigxLCBSdFYpKTsKKyAgICBWeFYud1tp XSA9IGZWU0FUVyhhY2N1bSkpCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVf VkVDKDMyLHZkbXB5aHN1aXNhdCwiVmQzMj12ZG1weWhzdShWdXUzMixSdDMyLCMxKTpzYXQiLCJW ZDMyLnc9dmRtcHkoVnV1MzIuaCxSdDMyLnVoLCMxKTpzYXQiLAorIkR1YWwgVmVjdG9yIFNpZ25l ZCBIYWxmd29yZCBieSBTaWduZWQgSGFsZndvcmQgMi1XYXkgUmVkdWN0aW9uIHRvIEhhbGZ3b3Jk IHdpdGggc2F0dXJhdGlvbiIsCisgICAgZkhJREUoc2l6ZThzX3QgYWNjdW07KQorICAgIGFjY3Vt ICAgID0gZk1QWTE2U1UoZkdFVEhBTEYoMSxWdXVWLnZbMF0ud1tpXSksZkdFVFVIQUxGKDAsUnRW KSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZTVShmR0VUSEFMRigwLFZ1dVYudlsxXS53W2ldKSxm R0VUVUhBTEYoMSxSdFYpKTsKKyAgICBWZFYud1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKK0lURVJB VE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRtcHloc3Vpc2F0X2FjYywiVngzMis9 dmRtcHloc3UoVnV1MzIsUnQzMiwjMSk6c2F0IiwiVngzMi53Kz12ZG1weShWdXUzMi5oLFJ0MzIu dWgsIzEpOnNhdCIsCisiRHVhbCBWZWN0b3IgU2lnbmVkIEhhbGZ3b3JkIGJ5IFNpZ25lZCBIYWxm d29yZCAyLVdheSBSZWR1Y3Rpb24gdG8gSGFsZndvcmQgd2l0aCBhY2N1bXVsYXRpb24gYW5kIHNh dHVyYXRpb24iLAorICAgIGZISURFKHNpemU4c190KSBhY2N1bT1WeFYud1tpXTsKKyAgICBhY2N1 bSAgICs9IGZNUFkxNlNVKGZHRVRIQUxGKDEsIFZ1dVYudlswXS53W2ldKSxmR0VUVUhBTEYoMCxS dFYpKTsKKyAgICBhY2N1bSAgICs9IGZNUFkxNlNVKGZHRVRIQUxGKDAsIFZ1dVYudlsxXS53W2ld KSxmR0VUVUhBTEYoMSxSdFYpKTsKKyAgICBWeFYud1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKKwor CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIDMtV0FZ IFJFRFVDVElPTiAtIFVOU0lHTkVEIEJZVEUgQlkgIEJZVEUKKyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworCisgSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9V QkxFX1ZFQygxNix2dG1weWIsICJWZGQzMj12dG1weWIoVnV1MzIsUnQzMikiLCAiVmRkMzIuaD12 dG1weShWdXUzMi5iLFJ0MzIuYikiLAorIkR1YWwgVmVjdG9yIDN4MSBSZWR1Y3Rpb24iLAorICAg IFZkZFYudlswXS5oW2ldICA9IGZNUFk4U1MoZkdFVEJZVEUoMCxWdXVWLnZbMF0uaFtpXSksIGZH RVRCWVRFKCgyKmkgICklNCwgUnRWKSk7CisgICAgVmRkVi52WzBdLmhbaV0gKz0gZk1QWThTUyhm R0VUQllURSgxLFZ1dVYudlswXS5oW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKyAg ICBWZGRWLnZbMF0uaFtpXSArPSBmR0VUQllURSgwLFZ1dVYudlsxXS5oW2ldKTsKKworICAgIFZk ZFYudlsxXS5oW2ldICA9IGZNUFk4U1MoZkdFVEJZVEUoMSxWdXVWLnZbMF0uaFtpXSksIGZHRVRC WVRFKCgyKmkgICklNCwgUnRWKSk7CisgICAgVmRkVi52WzFdLmhbaV0gKz0gZk1QWThTUyhmR0VU QllURSgwLFZ1dVYudlsxXS5oW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKyAgICBW ZGRWLnZbMV0uaFtpXSArPSBmR0VUQllURSgxLFZ1dVYudlsxXS5oW2ldKSkKKworCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZ0bXB5Yl9hY2MsICJWeHgzMis9dnRtcHli KFZ1dTMyLFJ0MzIpIiwgIlZ4eDMyLmgrPXZ0bXB5KFZ1dTMyLmIsUnQzMi5iKSIsCisiRHVhbCBW ZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisgICAgVnh4Vi52WzBdLmhbaV0gKz0gZk1QWThTUyhmR0VU QllURSgwLFZ1dVYudlswXS5oW2ldKSwgZkdFVEJZVEUoKDIqaSAgKSU0LCBSdFYpKTsKKyAgICBW eHhWLnZbMF0uaFtpXSArPSBmTVBZOFNTKGZHRVRCWVRFKDEsVnV1Vi52WzBdLmhbaV0pLCBmR0VU QllURSgoMippKzEpJTQsIFJ0VikpOworICAgIFZ4eFYudlswXS5oW2ldICs9IGZHRVRCWVRFKDAs VnV1Vi52WzFdLmhbaV0pOworCisgICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1QWThTUyhmR0VUQllU RSgxLFZ1dVYudlswXS5oW2ldKSwgZkdFVEJZVEUoKDIqaSAgKSU0LCBSdFYpKTsKKyAgICBWeHhW LnZbMV0uaFtpXSArPSBmTVBZOFNTKGZHRVRCWVRFKDAsVnV1Vi52WzFdLmhbaV0pLCBmR0VUQllU RSgoMippKzEpJTQsIFJ0VikpOworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZHRVRCWVRFKDEsVnV1 Vi52WzFdLmhbaV0pKQorCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygx Nix2dG1weWJ1cywgIlZkZDMyPXZ0bXB5YnVzKFZ1dTMyLFJ0MzIpIiwgIlZkZDMyLmg9dnRtcHko VnV1MzIudWIsUnQzMi5iKSIsCisiRHVhbCBWZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisgICAgVmRk Vi52WzBdLmhbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMCxWdXVWLnZbMF0udWhbaV0pLCBmR0VU QllURSgoMippICApJTQsIFJ0VikpOworICAgIFZkZFYudlswXS5oW2ldICs9IGZNUFk4VVMoZkdF VFVCWVRFKDEsVnV1Vi52WzBdLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKyAg ICBWZGRWLnZbMF0uaFtpXSArPSBmR0VUVUJZVEUoMCxWdXVWLnZbMV0udWhbaV0pOworCisgICAg VmRkVi52WzFdLmhbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMSxWdXVWLnZbMF0udWhbaV0pLCBm R0VUQllURSgoMippICApJTQsIFJ0VikpOworICAgIFZkZFYudlsxXS5oW2ldICs9IGZNUFk4VVMo ZkdFVFVCWVRFKDAsVnV1Vi52WzFdLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsK KyAgICBWZGRWLnZbMV0uaFtpXSArPSBmR0VUVUJZVEUoMSxWdXVWLnZbMV0udWhbaV0pKQorCitJ VEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZ0bXB5YnVzX2FjYywgIlZ4eDMy Kz12dG1weWJ1cyhWdXUzMixSdDMyKSIsICJWeHgzMi5oKz12dG1weShWdXUzMi51YixSdDMyLmIp IiwKKyJEdWFsIFZlY3RvciAzeDEgUmVkdWN0aW9uIiwKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBm TVBZOFVTKGZHRVRVQllURSgwLFZ1dVYudlswXS51aFtpXSksIGZHRVRCWVRFKCgyKmkgICklNCwg UnRWKSk7CisgICAgVnh4Vi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSxWdXVWLnZb MF0udWhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworICAgIFZ4eFYudlswXS5oW2ld ICs9IGZHRVRVQllURSgwLFZ1dVYudlsxXS51aFtpXSk7CisKKyAgICBWeHhWLnZbMV0uaFtpXSAr PSBmTVBZOFVTKGZHRVRVQllURSgxLFZ1dVYudlswXS51aFtpXSksIGZHRVRCWVRFKCgyKmkgICkl NCwgUnRWKSk7CisgICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMCxWdXVW LnZbMV0udWhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworICAgIFZ4eFYudlsxXS5o W2ldICs9IGZHRVRVQllURSgxLFZ1dVYudlsxXS51aFtpXSkpCisKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2dG1weWhiLCAiVmRkMzI9dnRtcHloYihWdXUzMixSdDMy KSIsICJWZGQzMi53PXZ0bXB5KFZ1dTMyLmgsUnQzMi5iKSIsCisiRHVhbCBWZWN0b3IgM3gxIFJl ZHVjdGlvbiIsCisgICAgVmRkVi52WzBdLndbaV0gPSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1dVYu dlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgoMippKzApJTQsIFJ0VikpKTsKKyAgICBWZGRW LnZbMF0ud1tpXSs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2 KGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpOworICAgIFZkZFYudlswXS53W2ldKz0gZkdFVEhB TEYoMCxWdXVWLnZbMV0ud1tpXSk7CisKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZNUFkxNlNTKGZH RVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkrMCklNCwgUnRW KSkpOworICAgIFZkZFYudlsxXS53W2ldKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCxWdXVWLnZbMV0u d1tpXSksIGZTRThfMTYoZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSk7CisgICAgVmRkVi52WzFd LndbaV0rPSBmR0VUSEFMRigxLFZ1dVYudlsxXS53W2ldKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZ X1NMT1RfRE9VQkxFX1ZFQygzMix2dG1weWhiX2FjYywgIlZ4eDMyKz12dG1weWhiKFZ1dTMyLFJ0 MzIpIiwgIlZ4eDMyLncrPXZ0bXB5KFZ1dTMyLmgsUnQzMi5iKSIsCisiRHVhbCBWZWN0b3IgM3gx IFJlZHVjdGlvbiIsCisgICAgVnh4Vi52WzBdLndbaV0rPSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1 dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgoMippKzApJTQsIFJ0VikpKTsKKyAgICBW eHhWLnZbMF0ud1tpXSs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLCBmU0U4 XzE2KGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpOworICAgIFZ4eFYudlswXS53W2ldKz0gZkdF VEhBTEYoMCxWdXVWLnZbMV0ud1tpXSk7CisKKyAgICBWeHhWLnZbMV0ud1tpXSs9IGZNUFkxNlNT KGZHRVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkrMCklNCwg UnRWKSkpOworICAgIFZ4eFYudlsxXS53W2ldKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCxWdXVWLnZb MV0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSk7CisgICAgVnh4Vi52 WzFdLndbaV0rPSBmR0VUSEFMRigxLFZ1dVYudlsxXS53W2ldKSkKKworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIDQtV0FZIFJFRFVDVElPTiAtIFVO U0lHTkVEIEJZVEUgQlkgVU5TSUdORUQgQllURQorKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2cm1w eXViLCJWZDMyPXZybXB5dWIoVnUzMixSdDMyKSIsIlZkMzIudXc9dnJtcHkoVnUzMi51YixSdDMy LnViKSIsCisiVmVjdG9yIE11bHRpcGx5LUFjY3VtdWxhdGUgUmVkdWNlIHdpdGggNCBieXRlIGNv ZWZmaWNpZW50cyIsCisgICAgVmRWLnV3W2ldICA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsVnVWLnV3 W2ldKSwgZkdFVFVCWVRFKDAsUnRWKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVC WVRFKDEsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDEsUnRWKSk7CisgICAgVmRWLnV3W2ldICs9IGZN UFk4VVUoZkdFVFVCWVRFKDIsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDIsUnRWKSk7CisgICAgVmRW LnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDMsUnRW KSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZybXB5dWJfYWNjLCJWeDMyKz12cm1w eXViKFZ1MzIsUnQzMikiLCJWeDMyLnV3Kz12cm1weShWdTMyLnViLFJ0MzIudWIpIiwKKyJWZWN0 b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIEFj Y3VtdWxhdGUiLAorICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgwLFZ1Vi51d1tp XSksIGZHRVRVQllURSgwLFJ0VikpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllU RSgxLFZ1Vi51d1tpXSksIGZHRVRVQllURSgxLFJ0VikpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZ OFVVKGZHRVRVQllURSgyLFZ1Vi51d1tpXSksIGZHRVRVQllURSgyLFJ0VikpOworICAgIFZ4Vi51 d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgzLFZ1Vi51d1tpXSksIGZHRVRVQllURSgzLFJ0Vikp KQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZybXB5dWJ2LCJWZDMyPXZybXB5dWIo VnUzMixWdjMyKSIsIlZkMzIudXc9dnJtcHkoVnUzMi51YixWdjMyLnViKSIsCisiVmVjdG9yIE11 bHRpcGx5LUFjY3VtdWxhdGUgUmVkdWNlIHdpdGggNCBieXRlIGNvZWZmaWNpZW50cyIsCisgICAg VmRWLnV3W2ldICA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDAs VnZWLnV3W2ldKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsVnVWLnV3 W2ldKSwgZkdFVFVCWVRFKDEsVnZWLnV3W2ldKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUo ZkdFVFVCWVRFKDIsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDIsVnZWLnV3W2ldKSk7CisgICAgVmRW LnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDMsVnZW LnV3W2ldKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdnJtcHl1 YnZfYWNjLCJWeDMyKz12cm1weXViKFZ1MzIsVnYzMikiLCJWeDMyLnV3Kz12cm1weShWdTMyLnVi LFZ2MzIudWIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5 dGUgY29lZmZpY2llbnRzIEFjY3VtdWxhdGUiLAorICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZH RVRVQllURSgwLFZ1Vi51d1tpXSksIGZHRVRVQllURSgwLFZ2Vi51d1tpXSkpOworICAgIFZ4Vi51 d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgxLFZ1Vi51d1tpXSksIGZHRVRVQllURSgxLFZ2Vi51 d1tpXSkpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgyLFZ1Vi51d1tpXSks IGZHRVRVQllURSgyLFZ2Vi51d1tpXSkpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRV QllURSgzLFZ1Vi51d1tpXSksIGZHRVRVQllURSgzLFZ2Vi51d1tpXSkpKQorCitJVEVSQVRPUl9J TlNOMl9NUFlfU0xPVCgzMix2cm1weWJ2LCJWZDMyPXZybXB5YihWdTMyLFZ2MzIpIiwiVmQzMi53 PXZybXB5KFZ1MzIuYixWdjMyLmIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1 Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIiwKKyAgICBWZFYud1tpXSAgPSBmTVBZOFNTKGZH RVRCWVRFKDAsIFZ1Vi53W2ldKSwgZkdFVEJZVEUoMCwgVnZWLndbaV0pKTsKKyAgICBWZFYud1tp XSArPSBmTVBZOFNTKGZHRVRCWVRFKDEsIFZ1Vi53W2ldKSwgZkdFVEJZVEUoMSwgVnZWLndbaV0p KTsKKyAgICBWZFYud1tpXSArPSBmTVBZOFNTKGZHRVRCWVRFKDIsIFZ1Vi53W2ldKSwgZkdFVEJZ VEUoMiwgVnZWLndbaV0pKTsKKyAgICBWZFYud1tpXSArPSBmTVBZOFNTKGZHRVRCWVRFKDMsIFZ1 Vi53W2ldKSwgZkdFVEJZVEUoMywgVnZWLndbaV0pKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9ET1VCTEVfVkVDKDMyLHZybXB5YnZfYWNjLCJWeDMyKz12cm1weWIoVnUzMixWdjMyKSIs IlZ4MzIudys9dnJtcHkoVnUzMi5iLFZ2MzIuYikiLAorIlZlY3RvciBNdWx0aXBseS1BY2N1bXVs YXRlIFJlZHVjZSB3aXRoIDQgYnl0ZSBjb2VmZmljaWVudHMiLAorICAgIFZ4Vi53W2ldICs9IGZN UFk4U1MoZkdFVEJZVEUoMCwgVnVWLndbaV0pLCBmR0VUQllURSgwLCBWdlYud1tpXSkpOworICAg IFZ4Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMSwgVnVWLndbaV0pLCBmR0VUQllURSgxLCBW dlYud1tpXSkpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMiwgVnVWLndbaV0p LCBmR0VUQllURSgyLCBWdlYud1tpXSkpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZ VEUoMywgVnVWLndbaV0pLCBmR0VUQllURSgzLCBWdlYud1tpXSkpKQorCisKK0lURVJBVE9SX0lO U04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdnJtcHl1YmksIlZkZDMyPXZybXB5dWIoVnV1MzIs UnQzMiwjdTEpIiwiVmRkMzIudXc9dnJtcHkoVnV1MzIudWIsUnQzMi51YiwjdTEpIiwKKyJEdWFs IFZlY3RvciBVbnNpZ25lZCBCeXRlIEJ5IFNpZ25lZCBCeXRlIDQtd2F5IFJlZHVjdGlvbiB0byBX b3JkIiwKKyAgICBWZGRWLnZbMF0udXdbaV0gID0gZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52 W3VpViA/IDE6MF0udXdbaV0pLGZHRVRVQllURSgoMC11aVYpICYgMHgzLFJ0VikpOworICAgIFZk ZFYudlswXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgxLCBWdXVWLnZbMCAgICAgICAgXS51 d1tpXSksZkdFVFVCWVRFKCgxLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzBdLnV3W2ld ICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUVUJZ VEUoKDItdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWZGRWLnZbMF0udXdbaV0gKz0gZk1QWThVVShm R0VUVUJZVEUoMywgVnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMy11aVYpICYg MHgzLFJ0VikpOworCisgICAgVmRkVi52WzFdLnV3W2ldICA9IGZNUFk4VVUoZkdFVFVCWVRFKDAs IFZ1dVYudlsxICAgICAgICBdLnV3W2ldKSxmR0VUVUJZVEUoKDItdWlWKSAmIDB4MyxSdFYpKTsK KyAgICBWZGRWLnZbMV0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMSwgVnV1Vi52WzEgICAg ICAgIF0udXdbaV0pLGZHRVRVQllURSgoMy11aVYpICYgMHgzLFJ0VikpOworICAgIFZkZFYudlsx XS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgyLCBWdXVWLnZbdWlWID8gMTowXS51d1tpXSks ZkdFVFVCWVRFKCgwLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzFdLnV3W2ldICs9IGZN UFk4VVUoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUVUJZVEUoKDEt dWlWKSAmIDB4MyxSdFYpKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVD KDMyLHZybXB5dWJpX2FjYywiVnh4MzIrPXZybXB5dWIoVnV1MzIsUnQzMiwjdTEpIiwiVnh4MzIu dXcrPXZybXB5KFZ1dTMyLnViLFJ0MzIudWIsI3UxKSIsCisiRHVhbCBWZWN0b3IgVW5zaWduZWQg Qnl0ZSBCeSBTaWduZWQgQnl0ZSA0LXdheSBSZWR1Y3Rpb24gd2l0aCBhY2N1bXVsYXRlIGFuZCBz YXR1cmF0aW9uIHRvIFdvcmQiLAorICAgIFZ4eFYudlswXS51d1tpXSArPSBmTVBZOFVVKGZHRVRV QllURSgwLCBWdXVWLnZbdWlWID8gMTowXS51d1tpXSksZkdFVFVCWVRFKCgwLXVpVikgJiAweDMs UnRWKSk7CisgICAgVnh4Vi52WzBdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsIFZ1dVYu dlswICAgICAgICBdLnV3W2ldKSxmR0VUVUJZVEUoKDEtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBW eHhWLnZbMF0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMiwgVnV1Vi52WzAgICAgICAgIF0u dXdbaV0pLGZHRVRVQllURSgoMi11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYudlswXS51d1tp XSArPSBmTVBZOFVVKGZHRVRVQllURSgzLCBWdXVWLnZbMCAgICAgICAgXS51d1tpXSksZkdFVFVC WVRFKCgzLXVpVikgJiAweDMsUnRWKSk7CisKKyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZk1QWThV VShmR0VUVUJZVEUoMCwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMi11aVYp ICYgMHgzLFJ0VikpOworICAgIFZ4eFYudlsxXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgx LCBWdXVWLnZbMSAgICAgICAgXS51d1tpXSksZkdFVFVCWVRFKCgzLXVpVikgJiAweDMsUnRWKSk7 CisgICAgVnh4Vi52WzFdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIsIFZ1dVYudlt1aVYg PyAxOjBdLnV3W2ldKSxmR0VUVUJZVEUoKDAtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWeHhWLnZb MV0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAgICAgIF0udXdbaV0p LGZHRVRVQllURSgoMS11aVYpICYgMHgzLFJ0VikpKQorCisKKworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIDQtV0FZIFJFRFVDVElPTiAtIFVOU0lH TkVEIEJZVEUgQlkgIEJZVEUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2cm1weWJ1cywiVmQzMj12cm1w eWJ1cyhWdTMyLFJ0MzIpIiwiVmQzMi53PXZybXB5KFZ1MzIudWIsUnQzMi5iKSIsCisiVmVjdG9y IE11bHRpcGx5LUFjY3VtdWxhdGUgUmVkdWNlIHdpdGggNCBieXRlIGNvZWZmaWNpZW50cyIsCisg ICAgVmRWLndbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMCxWdVYudXdbaV0pLCBmR0VUQllURSgw LFJ0VikpOworICAgIFZkVi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwg ZkdFVEJZVEUoMSxSdFYpKTsKKyAgICBWZFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgyLFZ1 Vi51d1tpXSksIGZHRVRCWVRFKDIsUnRWKSk7CisgICAgVmRWLndbaV0gKz0gZk1QWThVUyhmR0VU VUJZVEUoMyxWdVYudXdbaV0pLCBmR0VUQllURSgzLFJ0VikpKQorCisKK0lURVJBVE9SX0lOU04y X01QWV9TTE9UKDMyLHZybXB5YnVzX2FjYywiVngzMis9dnJtcHlidXMoVnUzMixSdDMyKSIsIlZ4 MzIudys9dnJtcHkoVnUzMi51YixSdDMyLmIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0 ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIiwKKyAgICBWeFYud1tpXSArPSBmTVBZ OFVTKGZHRVRVQllURSgwLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDAsUnRWKSk7CisgICAgVnhWLndb aV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSxWdVYudXdbaV0pLCBmR0VUQllURSgxLFJ0VikpOwor ICAgIFZ4Vi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsVnVWLnV3W2ldKSwgZkdFVEJZVEUo MixSdFYpKTsKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgzLFZ1Vi51d1tpXSks IGZHRVRCWVRFKDMsUnRWKSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygzMix2cm1weWJ1c2ksIlZkZDMyPXZybXB5YnVzKFZ1dTMyLFJ0MzIsI3UxKSIsIlZkZDMyLnc9 dnJtcHkoVnV1MzIudWIsUnQzMi5iLCN1MSkiLAorIkR1YWwgVmVjdG9yIFVuc2lnbmVkIEJ5dGUg QnkgU2lnbmVkIEJ5dGUgNC13YXkgUmVkdWN0aW9uIHRvIFdvcmQiLAorICAgIFZkZFYudlswXS53 W2ldICA9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlt1aVYgPyAxOjBdLnV3W2ldKSxmR0VU QllURSgoMC11aVYpICYgMHgzLFJ0VikpOworICAgIFZkZFYudlswXS53W2ldICs9IGZNUFk4VVMo ZkdFVFVCWVRFKDEsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMS11aVYpICYg MHgzLFJ0VikpOworICAgIFZkZFYudlswXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsIFZ1 dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMi11aVYpICYgMHgzLFJ0VikpOworICAg IFZkZFYudlswXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgICBd LnV3W2ldKSxmR0VUQllURSgoMy11aVYpICYgMHgzLFJ0VikpOworCisgICAgVmRkVi52WzFdLndb aV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMCwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRC WVRFKCgyLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0gKz0gZk1QWThVUyhm R0VUVUJZVEUoMSwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRCWVRFKCgzLXVpVikgJiAw eDMsUnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMiwgVnV1 Vi52W3VpViA/IDE6MF0udXdbaV0pLGZHRVRCWVRFKCgwLXVpVikgJiAweDMsUnRWKSk7CisgICAg VmRkVi52WzFdLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAgICAgIF0u dXdbaV0pLGZHRVRCWVRFKCgxLXVpVikgJiAweDMsUnRWKSkpCisKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cm1weWJ1c2lfYWNjLCJWeHgzMis9dnJtcHlidXMoVnV1 MzIsUnQzMiwjdTEpIiwiVnh4MzIudys9dnJtcHkoVnV1MzIudWIsUnQzMi5iLCN1MSkiLAorIkR1 YWwgVmVjdG9yIFVuc2lnbmVkIEJ5dGUgQnkgU2lnbmVkIEJ5dGUgNC13YXkgUmVkdWN0aW9uIHdp dGggYWNjdW11bGF0ZSBhbmQgc2F0dXJhdGlvbiB0byBXb3JkIiwKKyAgICBWeHhWLnZbMF0ud1tp XSArPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVWLnZbdWlWID8gMTowXS51d1tpXSksZkdFVEJZ VEUoKDAtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZOFVTKGZH RVRVQllURSgxLCBWdXVWLnZbMCAgICAgICAgXS51d1tpXSksZkdFVEJZVEUoKDEtdWlWKSAmIDB4 MyxSdFYpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgyLCBWdXVW LnZbMCAgICAgICAgXS51d1tpXSksZkdFVEJZVEUoKDItdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBW eHhWLnZbMF0ud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgzLCBWdXVWLnZbMCAgICAgICAgXS51 d1tpXSksZkdFVEJZVEUoKDMtdWlWKSAmIDB4MyxSdFYpKTsKKworICAgIFZ4eFYudlsxXS53W2ld ICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlsxICAgICAgICBdLnV3W2ldKSxmR0VUQllU RSgoMi11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFk4VVMoZkdF VFVCWVRFKDEsIFZ1dVYudlsxICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMy11aVYpICYgMHgz LFJ0VikpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsIFZ1dVYu dlt1aVYgPyAxOjBdLnV3W2ldKSxmR0VUQllURSgoMC11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4 eFYudlsxXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgICBdLnV3 W2ldKSxmR0VUQllURSgoMS11aVYpICYgMHgzLFJ0VikpKQorCisKKworCitJVEVSQVRPUl9JTlNO Ml9NUFlfU0xPVCgzMix2cm1weWJ1c3YsIlZkMzI9dnJtcHlidXMoVnUzMixWdjMyKSIsIlZkMzIu dz12cm1weShWdTMyLnViLFZ2MzIuYikiLAorIlZlY3RvciBNdWx0aXBseS1BY2N1bXVsYXRlIFJl ZHVjZSB3aXRoIDQgYnl0ZSBjb2VmZmljaWVudHMiLAorICAgIFZkVi53W2ldICA9IGZNUFk4VVMo ZkdFVFVCWVRFKDAsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMCxWdlYud1tpXSkpOworICAgIFZkVi53 W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMSxWdlYud1tp XSkpOworICAgIFZkVi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsVnVWLnV3W2ldKSwgZkdF VEJZVEUoMixWdlYud1tpXSkpOworICAgIFZkVi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDMs VnVWLnV3W2ldKSwgZkdFVEJZVEUoMyxWdlYud1tpXSkpKQorCisKK0lURVJBVE9SX0lOU04yX01Q WV9TTE9UX0RPVUJMRV9WRUMoMzIsdnJtcHlidXN2X2FjYywiVngzMis9dnJtcHlidXMoVnUzMixW djMyKSIsIlZ4MzIudys9dnJtcHkoVnUzMi51YixWdjMyLmIpIiwKKyJWZWN0b3IgTXVsdGlwbHkt QWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIiwKKyAgICBWeFYud1tp XSArPSBmTVBZOFVTKGZHRVRVQllURSgwLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDAsVnZWLndbaV0p KTsKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgxLFZ1Vi51d1tpXSksIGZHRVRC WVRFKDEsVnZWLndbaV0pKTsKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgyLFZ1 Vi51d1tpXSksIGZHRVRCWVRFKDIsVnZWLndbaV0pKTsKKyAgICBWeFYud1tpXSArPSBmTVBZOFVT KGZHRVRVQllURSgzLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDMsVnZWLndbaV0pKSkKKworCisKKwor CisKKworCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyogIDItV0FZIFJFRFVDVElPTiAtIFNBRAorKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMo MzIsdmRzYWR1aCwiVmRkMzI9dmRzYWR1aChWdXUzMixSdDMyKSIsIlZkZDMyLnV3PXZkc2FkKFZ1 dTMyLnVoLFJ0MzIudWgpIiwKKyJEdWFsIFZlY3RvciBIYWxmd29yZCBieSBCeXRlIDQtV2F5IFJl ZHVjdGlvbiB0byBXb3JkIiwKKyAgICBWZGRWLnZbMF0udXdbaV0gID0gZkFCUyhmR0VUVUhBTEYo MCwgVnV1Vi52WzBdLnV3W2ldKSAtIGZHRVRVSEFMRigwLFJ0VikpOworICAgIFZkZFYudlswXS51 d1tpXSArPSBmQUJTKGZHRVRVSEFMRigxLCBWdXVWLnZbMF0udXdbaV0pIC0gZkdFVFVIQUxGKDEs UnRWKSk7CisgICAgVmRkVi52WzFdLnV3W2ldICA9IGZBQlMoZkdFVFVIQUxGKDEsIFZ1dVYudlsw XS51d1tpXSkgLSBmR0VUVUhBTEYoMCxSdFYpKTsKKyAgICBWZGRWLnZbMV0udXdbaV0gKz0gZkFC UyhmR0VUVUhBTEYoMCwgVnV1Vi52WzFdLnV3W2ldKSAtIGZHRVRVSEFMRigxLFJ0VikpKQorCitJ VEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkc2FkdWhfYWNjLCJWeHgzMis9 dmRzYWR1aChWdXUzMixSdDMyKSIsIlZ4eDMyLnV3Kz12ZHNhZChWdXUzMi51aCxSdDMyLnVoKSIs CisiRHVhbCBWZWN0b3IgSGFsZndvcmQgYnkgQnl0ZSA0LVdheSBSZWR1Y3Rpb24gdG8gV29yZCIs CisgICAgVnh4Vi52WzBdLnV3W2ldICs9IGZBQlMoZkdFVFVIQUxGKDAsIFZ1dVYudlswXS51d1tp XSkgLSBmR0VUVUhBTEYoMCxSdFYpKTsKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0gZkFCUyhmR0VU VUhBTEYoMSwgVnV1Vi52WzBdLnV3W2ldKSAtIGZHRVRVSEFMRigxLFJ0VikpOworICAgIFZ4eFYu dlsxXS51d1tpXSArPSBmQUJTKGZHRVRVSEFMRigxLCBWdXVWLnZbMF0udXdbaV0pIC0gZkdFVFVI QUxGKDAsUnRWKSk7CisgICAgVnh4Vi52WzFdLnV3W2ldICs9IGZBQlMoZkdFVFVIQUxGKDAsIFZ1 dVYudlsxXS51d1tpXSkgLSBmR0VUVUhBTEYoMSxSdFYpKSkKKworCisKKworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICA0LVdBWSBSRURVQ1RJT04gLSBT QUQKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cnNhZHViaSwiVmRkMzI9dnJz YWR1YihWdXUzMixSdDMyLCN1MSkiLCJWZGQzMi51dz12cnNhZChWdXUzMi51YixSdDMyLnViLCN1 MSkiLAorIkR1YWwgVmVjdG9yIEhhbGZ3b3JkIGJ5IEJ5dGUgNC1XYXkgUmVkdWN0aW9uIHRvIFdv cmQiLAorICAgIFZkZFYudlswXS51d1tpXSAgPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1 dVYudlt1aVY/MTowXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDAtdWlWKSYzLFJ0Vikp KTsKKyAgICBWZGRWLnZbMF0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVW LnZbMCAgICAgIF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgxLXVpVikmMyxSdFYpKSk7 CisgICAgVmRkVi52WzBdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52 WzAgICAgICBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMi11aVYpJjMsUnRWKSkpOwor ICAgIFZkZFYudlswXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlsw ICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDMtdWlWKSYzLFJ0VikpKTsKKwor ICAgIFZkZFYudlsxXS51d1tpXSAgPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1dVYudlsx ICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDItdWlWKSYzLFJ0VikpKTsKKyAg ICBWZGRWLnZbMV0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVWLnZbMSAg ICAgIF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgzLXVpVikmMyxSdFYpKSk7CisgICAg VmRkVi52WzFdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52W3VpVj8x OjBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMC11aVYpJjMsUnRWKSkpOworICAgIFZk ZFYudlsxXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAg XS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDEtdWlWKSYzLFJ0VikpKSkKKworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cnNhZHViaV9hY2MsIlZ4eDMyKz12cnNh ZHViKFZ1dTMyLFJ0MzIsI3UxKSIsIlZ4eDMyLnV3Kz12cnNhZChWdXUzMi51YixSdDMyLnViLCN1 MSkiLAorIkR1YWwgVmVjdG9yIEhhbGZ3b3JkIGJ5IEJ5dGUgNC1XYXkgUmVkdWN0aW9uIHRvIFdv cmQiLAorICAgIFZ4eFYudlswXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1 dVYudlt1aVY/MTowXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDAtdWlWKSYzLFJ0Vikp KTsKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVW LnZbMCAgICAgIF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgxLXVpVikmMyxSdFYpKSk7 CisgICAgVnh4Vi52WzBdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52 WzAgICAgICBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMi11aVYpJjMsUnRWKSkpOwor ICAgIFZ4eFYudlswXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlsw ICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDMtdWlWKSYzLFJ0VikpKTsKKwor ICAgIFZ4eFYudlsxXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1dVYudlsx ICAgICAgXS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDItdWlWKSYzLFJ0VikpKTsKKyAg ICBWeHhWLnZbMV0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVWLnZbMSAg ICAgIF0udXdbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgzLXVpVikmMyxSdFYpKSk7CisgICAg Vnh4Vi52WzFdLnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52W3VpVj8x OjBdLnV3W2ldKSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMC11aVYpJjMsUnRWKSkpOworICAgIFZ4 eFYudlsxXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAg XS51d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDEtdWlWKSYzLFJ0VikpKSkKKworCisKKwor CisKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICogTU1WRUNUT1IgU0hJRlRJTkcKKyAqICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKy8vIE1hY3JvIHRvIHNoaWZ0IGFyaXRobWV0aWNhbGx5IGxlZnQvcmlnaHQgYW5kIGJ5 IGVpdGhlciBSVCBvciBWdgorCisjZGVmaW5lIFZfU0hJRlQoVFlQRSwgREVTQywgU0laRSwgTE9H U0laRSwgQ0FTVFRZUEUpICAgXAorSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVChTSVpFLHZhc3Ij I1RZUEUsICAgIlZkMzI9dmFzciIgI1RZUEUgIihWdTMyLFJ0MzIpIiwiVmQzMi4iI1RZUEUiPXZh c3IoVnUzMi4iI1RZUEUiLFJ0MzIpIiwgICAgICAgICAiVmVjdG9yIGFyaXRobWV0aWMgc2hpZnQg cmlnaHQgIiBERVNDLCAgICBWZFYuVFlQRVtpXSAgICAgPSAoVnVWLlRZUEVbaV0gICAgPj4gKFJ0 ViAmIChTSVpFLTEpKSkpIFwKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoU0laRSx2YXNsIyNU WVBFLCAgICJWZDMyPXZhc2wiICNUWVBFICIoVnUzMixSdDMyKSIsIlZkMzIuIiNUWVBFIj12YXNs KFZ1MzIuIiNUWVBFIixSdDMyKSIsICAgICAgICAgIlZlY3RvciBhcml0aG1ldGljIHNoaWZ0IGxl ZnQgICIgREVTQywgICAgVmRWLlRZUEVbaV0gICAgID0gKFZ1Vi5UWVBFW2ldICAgIDw8IChSdFYg JiAoU0laRS0xKSkpKSBcCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFNJWkUsdmxzciMjVFlQ RSwgICAiVmQzMj12bHNyIiAjVFlQRSAiKFZ1MzIsUnQzMikiLCJWZDMyLnUiI1RZUEUiPXZsc3Io VnUzMi51IiNUWVBFIixSdDMyKSIsICAgICAgICJWZWN0b3IgbG9naWNhbCBzaGlmdCByaWdodCAi ICAgIERFU0MsICAgIFZkVi51IyNUWVBFW2ldICA9IChWdVYudSMjVFlQRVtpXSA+PiAoUnRWICYg KFNJWkUtMSkpKSkgXAorSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVChTSVpFLHZhc3IjI1RZUEUj I3YsIlZkMzI9dmFzciIgI1RZUEUgIihWdTMyLFZ2MzIpIiwiVmQzMi4iI1RZUEUiPXZhc3IoVnUz Mi4iI1RZUEUiLFZ2MzIuIiNUWVBFIikiLCAiVmVjdG9yIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQg IiBERVNDLCAgICBWZFYuVFlQRVtpXSAgICAgPSBmQklESVJfQVNISUZUUihWdVYuVFlQRVtpXSwg ZlNYVE4oKExPR1NJWkUrMSksU0laRSxWdlYuVFlQRVtpXSksQ0FTVFRZUEUpKSBcCitJVEVSQVRP Ul9JTlNOMl9TSElGVF9TTE9UKFNJWkUsdmFzbCMjVFlQRSMjdiwiVmQzMj12YXNsIiAjVFlQRSAi KFZ1MzIsVnYzMikiLCJWZDMyLiIjVFlQRSI9dmFzbChWdTMyLiIjVFlQRSIsVnYzMi4iI1RZUEUi KSIsICJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCBsZWZ0ICAiIERFU0MsICAgIFZkVi5UWVBFW2ld ICAgICA9IGZCSURJUl9BU0hJRlRMKFZ1Vi5UWVBFW2ldLCAgZlNYVE4oKExPR1NJWkUrMSksU0la RSxWdlYuVFlQRVtpXSksQ0FTVFRZUEUpKSBcCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFNJ WkUsdmxzciMjVFlQRSMjdiwiVmQzMj12bHNyIiAjVFlQRSAiKFZ1MzIsVnYzMikiLCJWZDMyLiIj VFlQRSI9dmxzcihWdTMyLiIjVFlQRSIsVnYzMi4iI1RZUEUiKSIsICJWZWN0b3IgbG9naWNhbCBz aGlmdCByaWdodCAiICAgIERFU0MsICAgIFZkVi51IyNUWVBFW2ldICA9IGZCSURJUl9MU0hJRlRS KFZ1Vi51IyNUWVBFW2ldLCBmU1hUTigoTE9HU0laRSsxKSxTSVpFLFZ2Vi5UWVBFW2ldKSxDQVNU VFlQRSkpIFwKKworVl9TSElGVCh3LCAid29yZCIsICAgMzIsNSw0XzQpCitWX1NISUZUKGgsICJo YWxmd29yZCIsIDE2LDQsMl8yKQorCitJVEVSQVRPUl9JTlNOX1NISUZUX1NMT1QoOCx2bHNyYiwi VmQzMi51Yj12bHNyKFZ1MzIudWIsUnQzMikiLCJ2ZWMgbG9nIHNoaWZ0IHJpZ2h0IGJ5dGVzIiwg VmRWLmJbaV0gPSBWdVYudWJbaV0gPj4gKFJ0ViAmIDB4NykpCisKK0lURVJBVE9SX0lOU04yX1NI SUZUX1NMT1QoMzIsdnJvdHIsIlZkMzI9dnJvdHIoVnUzMixWdjMyKSIsIlZkMzIudXc9dnJvdHIo VnUzMi51dyxWdjMyLnV3KSIsIlZlY3RvciB3b3JkIHJvdGF0ZSByaWdodCIsIFZkVi51d1tpXSA9 ICgoVnVWLnV3W2ldID4+IChWdlYudXdbaV0gJiAweDFmKSkgfCAoVnVWLnV3W2ldIDw8ICgzMiAt IChWdlYudXdbaV0gJiAweDFmKSkpKSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogTU1WRUNUT1IgU0hJ RlQgQU5EIFBFUk1VVEUKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9T TE9UX0RPVUJMRV9WRUMoMzIsdmFzcl9pbnRvLCJWeHgzMj12YXNyaW50byhWdTMyLFZ2MzIpIiwi Vnh4MzIudz12YXNyaW50byhWdTMyLncsVnYzMi53KSIsIkFTUiB2ZWN0b3IgMSBlbGVtZW50cyBh bmQgb3ZlcmxheSBkcm9wcGluZyBiaXRzIHRvIE1TQiBvZiB2ZWN0b3IgMiBlbGVtZW50cyIsCisg ICAgZkhJREUoaW50NjRfdCApIHNoaWZ0ID0gKGZTRTMyXzY0KFZ1Vi53W2ldKSA8PCAzMik7Cisg ICAgZkhJREUoaW50NjRfdCApIG1hc2sgID0gKCgoZlNFMzJfNjQoVnh4Vi52WzBdLndbaV0pKSA8 PCAzMikgfCBmWkUzMl82NChWeHhWLnZbMF0ud1tpXSkpOworICAgIGZISURFKGludDY0X3QpIGxv bWFzayA9ICgoKGZTRTMyXzY0KDEpKSA8PCAzMikgLSAxKTsKKyAgICBmSElERShpbnQgKSBjb3Vu dCA9IC0oMHg0MCAmIFZ2Vi53W2ldKSArIChWdlYud1tpXSAmIDB4M2YpOworICAgIGZISURFKGlu dDY0X3QgKSByZXN1bHQgPSAoY291bnQgPT0gLTB4NDApID8gMCA6ICgoKGNvdW50IDwgMCkgPyAo KHNoaWZ0IDw8IC0oY291bnQpKSB8IChtYXNrICYgKGxvbWFzayA8PCAtKGNvdW50KSkpKSA6ICgo c2hpZnQgPj4gY291bnQpIHwgKG1hc2sgJiAobG9tYXNrID4+IGNvdW50KSkpKSk7CisgICAgVnh4 Vi52WzFdLndbaV0gPSAoKHJlc3VsdCA+PiAzMikgJiAweGZmZmZmZmZmKTsKKyAgICBWeHhWLnZb MF0ud1tpXSA9IChyZXN1bHQgJiAweGZmZmZmZmZmKSkKKworI2RlZmluZSBORVdfTkFSUk9XSU5H X1NISUZUIDEKKworI2lmIE5FV19OQVJST1dJTkdfU0hJRlQKKyNkZWZpbmUgTkFSUk9XSU5HX1NI SUZUKElURVJTSVpFLFRBRyxEU1RNLERTVFRZUEUsU1JDVFlQRSxTWU5PUFRTLFNBVEZVTkMsUk5E RlVOQyxTSEFNVE1BU0spIFwKK0lURVJBVE9SX0lOU05fU0hJRlRfU0xPVChJVEVSU0laRSxUQUcs IFwKKyJWZDMyLiIgI0RTVFRZUEUgIj12YXNyKFZ1MzIuIiAjU1JDVFlQRSAiLFZ2MzIuIiAjU1JD VFlQRSAiLFJ0OCkiICNTWU5PUFRTLCBcCisiVmVjdG9yIHNoaWZ0IHJpZ2h0IGFuZCBzaHVmZmxl IiwgXAorCWZISURFKGZSVDhOT1RFKCkpXAorICAgIGZISURFKGludCApc2hhbXQgPSBSdFYgJiBT SEFNVE1BU0s7IFwKKyAgICBEU1RNKDAsVmRWLlNSQ1RZUEVbaV0sU0FURlVOQyhSTkRGVU5DKFZ2 Vi5TUkNUWVBFW2ldLHNoYW10KSA+PiBzaGFtdCkpOyBcCisgICAgRFNUTSgxLFZkVi5TUkNUWVBF W2ldLFNBVEZVTkMoUk5ERlVOQyhWdVYuU1JDVFlQRVtpXSxzaGFtdCkgPj4gc2hhbXQpKSkKKwor CisKKworCisvKiBXT1JEIFRPIEhBTEYqLworCitOQVJST1dJTkdfU0hJRlQoMzIsdmFzcndoLGZT RVRIQUxGLGgsdywsZkVDSE8sZlZOT1JPVU5ELDB4RikKK05BUlJPV0lOR19TSElGVCgzMix2YXNy d2hzYXQsZlNFVEhBTEYsaCx3LDpzYXQsZlZTQVRILGZWTk9ST1VORCwweEYpCitOQVJST1dJTkdf U0hJRlQoMzIsdmFzcndocm5kc2F0LGZTRVRIQUxGLGgsdyw6cm5kOnNhdCxmVlNBVEgsZlZST1VO RCwweEYpCitOQVJST1dJTkdfU0hJRlQoMzIsdmFzcnd1aHJuZHNhdCxmU0VUSEFMRix1aCx3LDpy bmQ6c2F0LGZWU0FUVUgsZlZST1VORCwweEYpCitOQVJST1dJTkdfU0hJRlQoMzIsdmFzcnd1aHNh dCxmU0VUSEFMRix1aCx3LDpzYXQsZlZTQVRVSCxmVk5PUk9VTkQsMHhGKQorTkFSUk9XSU5HX1NI SUZUKDMyLHZhc3J1d3Vocm5kc2F0LGZTRVRIQUxGLHVoLHV3LDpybmQ6c2F0LGZWU0FUVUgsZlZS T1VORCwweEYpCisKK05BUlJPV0lOR19TSElGVF9OT1YxKDMyLHZhc3J1d3Voc2F0LGZTRVRIQUxG LHVoLHV3LDpzYXQsZlZTQVRVSCxmVk5PUk9VTkQsMHhGKQorTkFSUk9XSU5HX1NISUZUKDE2LHZh c3JodWJzYXQsZlNFVEJZVEUsdWIsaCw6c2F0LGZWU0FUVUIsZlZOT1JPVU5ELDB4NykKK05BUlJP V0lOR19TSElGVCgxNix2YXNyaHVicm5kc2F0LGZTRVRCWVRFLHViLGgsOnJuZDpzYXQsZlZTQVRV QixmVlJPVU5ELDB4NykKK05BUlJPV0lOR19TSElGVCgxNix2YXNyaGJzYXQsZlNFVEJZVEUsYixo LDpzYXQsZlZTQVRCLGZWTk9ST1VORCwweDcpCitOQVJST1dJTkdfU0hJRlQoMTYsdmFzcmhicm5k c2F0LGZTRVRCWVRFLGIsaCw6cm5kOnNhdCxmVlNBVEIsZlZST1VORCwweDcpCisKK05BUlJPV0lO R19TSElGVF9OT1YxKDE2LHZhc3J1aHVic2F0LGZTRVRCWVRFLHViLHVoLDpzYXQsZlZTQVRVQixm Vk5PUk9VTkQsMHg3KQorTkFSUk9XSU5HX1NISUZUX05PVjEoMTYsdmFzcnVodWJybmRzYXQsZlNF VEJZVEUsdWIsdWgsOnJuZDpzYXQsZlZTQVRVQixmVlJPVU5ELDB4NykKKworI2Vsc2UKK0lURVJB VE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndoLCJWZDMyPXZhc3J3aChWdTMyLFZ2MzIsUnQ4 KSIsIlZkMzIuaD12YXNyKFZ1MzIudyxWdjMyLncsUnQ4KSIsCisiVmVjdG9yIGFyaXRobWV0aWMg c2hpZnQgcmlnaHQgd29yZHMsIHNodWZmbGUgZXZlbiBoYWxmd29yZHMiLAorCWZISURFKGZSVDhO T1RFKCkpXAorICAgIGZTRVRIQUxGKDAsVmRWLndbaV0sIChWdlYud1tpXSA+PiAoUnRWICYgMHhG KSkpOworICAgIGZTRVRIQUxGKDEsVmRWLndbaV0sIChWdVYud1tpXSA+PiAoUnRWICYgMHhGKSkp KQorCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndoc2F0LCJWZDMyPXZhc3J3 aChWdTMyLFZ2MzIsUnQ4KTpzYXQiLCJWZDMyLmg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6c2F0 IiwKKyJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3b3Jkcywgc2h1ZmZsZSBldmVuIGhh bGZ3b3JkcyIsCisJZkhJREUoZlJUOE5PVEUoKSlcCisgICAgZlNFVEhBTEYoMCxWZFYud1tpXSwg ZlZTQVRIKFZ2Vi53W2ldID4+IChSdFYgJiAweEYpKSk7CisgICAgZlNFVEhBTEYoMSxWZFYud1tp XSwgZlZTQVRIKFZ1Vi53W2ldID4+IChSdFYgJiAweEYpKSkpCisKK0lURVJBVE9SX0lOU04yX1NI SUZUX1NMT1QoMzIsdmFzcndocm5kc2F0LCJWZDMyPXZhc3J3aChWdTMyLFZ2MzIsUnQ4KTpybmQ6 c2F0IiwiVmQzMi5oPXZhc3IoVnUzMi53LFZ2MzIudyxSdDgpOnJuZDpzYXQiLAorIlZlY3RvciBh cml0aG1ldGljIHNoaWZ0IHJpZ2h0IHdvcmRzLCBzaHVmZmxlIGV2ZW4gaGFsZndvcmRzIiwKKwlm SElERShmUlQ4Tk9URSgpKVwKKyAgICBmSElERShpbnQgKSBzaGFtdCA9IFJ0ViAmIDB4RjsKKyAg ICBmU0VUSEFMRigwLFZkVi53W2ldLCBmVlNBVEgoICAoVnZWLndbaV0gKyBmQklESVJfQVNISUZU TCgxLChzaGFtdC0xKSw0XzgpICkgPj4gc2hhbXQpKTsKKyAgICBmU0VUSEFMRigxLFZkVi53W2ld LCBmVlNBVEgoICAoVnVWLndbaV0gKyBmQklESVJfQVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkg Pj4gc2hhbXQpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgzMix2YXNyd3Vocm5kc2F0 LCJWZDMyPXZhc3J3dWgoVnUzMixWdjMyLFJ0OCk6cm5kOnNhdCIsIlZkMzIudWg9dmFzcihWdTMy LncsVnYzMi53LFJ0OCk6cm5kOnNhdCIsCisiVmVjdG9yIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQg d29yZHMsIHNodWZmbGUgZXZlbiBoYWxmd29yZHMiLAorCWZISURFKGZSVDhOT1RFKCkpXAorICAg IGZISURFKGludCApIHNoYW10ID0gUnRWICYgMHhGOworICAgIGZTRVRIQUxGKDAsVmRWLndbaV0s IGZWU0FUVUgoICAoVnZWLndbaV0gKyBmQklESVJfQVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkg Pj4gc2hhbXQpKTsKKyAgICBmU0VUSEFMRigxLFZkVi53W2ldLCBmVlNBVFVIKCAgKFZ1Vi53W2ld ICsgZkJJRElSX0FTSElGVEwoMSwoc2hhbXQtMSksNF84KSApID4+IHNoYW10KSkpCisKK0lURVJB VE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcnd1aHNhdCwiVmQzMj12YXNyd3VoKFZ1MzIsVnYz MixSdDgpOnNhdCIsIlZkMzIudWg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6c2F0IiwKKyJWZWN0 b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3b3Jkcywgc2h1ZmZsZSBldmVuIGhhbGZ3b3JkcyIs CisJZkhJREUoZlJUOE5PVEUoKSlcCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmVlNBVFVI KFZ2Vi53W2ldID4+IChSdFYgJiAweEYpKSk7CisgICAgZlNFVEhBTEYoMSwgVmRWLnV3W2ldLCBm VlNBVFVIKFZ1Vi53W2ldID4+IChSdFYgJiAweEYpKSkpCisKK0lURVJBVE9SX0lOU04yX1NISUZU X1NMT1QoMzIsdmFzcnV3dWhybmRzYXQsIlZkMzI9dmFzcnV3dWgoVnUzMixWdjMyLFJ0OCk6cm5k OnNhdCIsIlZkMzIudWg9dmFzcihWdTMyLnV3LFZ2MzIudXcsUnQ4KTpybmQ6c2F0IiwKKyJWZWN0 b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3b3Jkcywgc2h1ZmZsZSBldmVuIGhhbGZ3b3JkcyIs CisJZkhJREUoZlJUOE5PVEUoKSlcCisgICAgZkhJREUoaW50ICkgc2hhbXQgPSBSdFYgJiAweEY7 CisgICAgZlNFVEhBTEYoMCxWZFYud1tpXSwgZlZTQVRVSCggIChWdlYudXdbaV0gKyBmQklESVJf QVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkgPj4gc2hhbXQpKTsKKyAgICBmU0VUSEFMRigxLFZk Vi53W2ldLCBmVlNBVFVIKCAgKFZ1Vi51d1tpXSArIGZCSURJUl9BU0hJRlRMKDEsKHNoYW10LTEp LDRfOCkgKSA+PiBzaGFtdCkpKQorI2VuZGlmCisKKworCitJVEVSQVRPUl9JTlNOMl9TSElGVF9T TE9UKDMyLHZyb3VuZHdoLCJWZDMyPXZyb3VuZHdoKFZ1MzIsVnYzMik6c2F0IiwiVmQzMi5oPXZy b3VuZChWdTMyLncsVnYzMi53KTpzYXQiLAorIlZlY3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMs IHNodWZmbGUgcmVzdWx0YW50IGhhbGZ3b3JkcyIsCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ld LCBmVlNBVEgoKFZ2Vi53W2ldICsgZkNPTlNUTEwoMHg4MDAwKSkgPj4gMTYpKTsKKyAgICBmU0VU SEFMRigxLCBWZFYudXdbaV0sIGZWU0FUSCgoVnVWLndbaV0gKyBmQ09OU1RMTCgweDgwMDApKSA+ PiAxNikpKQorCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZyb3VuZHd1aCwiVmQzMj12 cm91bmR3dWgoVnUzMixWdjMyKTpzYXQiLCJWZDMyLnVoPXZyb3VuZChWdTMyLncsVnYzMi53KTpz YXQiLAorIlZlY3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50IGhh bGZ3b3JkcyIsCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmVlNBVFVIKChWdlYud1tpXSAr IGZDT05TVExMKDB4ODAwMCkpID4+IDE2KSk7CisgICAgZlNFVEhBTEYoMSwgVmRWLnV3W2ldLCBm VlNBVFVIKChWdVYud1tpXSArIGZDT05TVExMKDB4ODAwMCkpID4+IDE2KSkpCisKK0lURVJBVE9S X0lOU04yX1NISUZUX1NMT1QoMzIsdnJvdW5kdXd1aCwiVmQzMj12cm91bmR1d3VoKFZ1MzIsVnYz Mik6c2F0IiwiVmQzMi51aD12cm91bmQoVnUzMi51dyxWdjMyLnV3KTpzYXQiLAorIlZlY3RvciBy b3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50IGhhbGZ3b3JkcyIsCisgICAg ZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmVlNBVFVIKChWdlYudXdbaV0gKyBmQ09OU1RMTCgweDgw MDApKSA+PiAxNikpOworICAgIGZTRVRIQUxGKDEsIFZkVi51d1tpXSwgZlZTQVRVSCgoVnVWLnV3 W2ldICsgZkNPTlNUTEwoMHg4MDAwKSkgPj4gMTYpKSkKKworCisKKworCisvKiBIQUxGIFRPIEJZ VEUqLworCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDE2LHZyb3VuZGhiLCJWZDMyPXZyb3Vu ZGhiKFZ1MzIsVnYzMik6c2F0IiwiVmQzMi5iPXZyb3VuZChWdTMyLmgsVnYzMi5oKTpzYXQiLAor IlZlY3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50IGhhbGZ3b3Jk cyIsCisgICAgZlNFVEJZVEUoMCwgVmRWLnVoW2ldLCBmVlNBVEIoKFZ2Vi5oW2ldICsgMHg4MCkg Pj4gOCkpOworICAgIGZTRVRCWVRFKDEsIFZkVi51aFtpXSwgZlZTQVRCKChWdVYuaFtpXSArIDB4 ODApID4+IDgpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgxNix2cm91bmRodWIsIlZk MzI9dnJvdW5kaHViKFZ1MzIsVnYzMik6c2F0IiwiVmQzMi51Yj12cm91bmQoVnUzMi5oLFZ2MzIu aCk6c2F0IiwKKyJWZWN0b3Igcm91bmQgd29yZHMgdG8gaGFsdmVzLCBzaHVmZmxlIHJlc3VsdGFu dCBoYWxmd29yZHMiLAorICAgIGZTRVRCWVRFKDAsIFZkVi51aFtpXSwgZlZTQVRVQigoVnZWLmhb aV0gKyAweDgwKSA+PiA4KSk7CisgICAgZlNFVEJZVEUoMSwgVmRWLnVoW2ldLCBmVlNBVFVCKChW dVYuaFtpXSArIDB4ODApID4+IDgpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgxNix2 cm91bmR1aHViLCJWZDMyPXZyb3VuZHVodWIoVnUzMixWdjMyKTpzYXQiLCJWZDMyLnViPXZyb3Vu ZChWdTMyLnVoLFZ2MzIudWgpOnNhdCIsCisiVmVjdG9yIHJvdW5kIHdvcmRzIHRvIGhhbHZlcywg c2h1ZmZsZSByZXN1bHRhbnQgaGFsZndvcmRzIiwKKyAgICBmU0VUQllURSgwLCBWZFYudWhbaV0s IGZWU0FUVUIoKFZ2Vi51aFtpXSArIDB4ODApID4+IDgpKTsKKyAgICBmU0VUQllURSgxLCBWZFYu dWhbaV0sIGZWU0FUVUIoKFZ1Vi51aFtpXSArIDB4ODApID4+IDgpKSkKKworCitJVEVSQVRPUl9J TlNOMl9TSElGVF9TTE9UKDMyLHZhc2x3X2FjYywiVngzMis9dmFzbHcoVnUzMixSdDMyKSIsIlZ4 MzIudys9dmFzbChWdTMyLncsUnQzMikiLAorIlZlY3RvciBzaGlmdCBhZGQgd29yZCIsCisgICAg VnhWLndbaV0gICs9ICAoVnVWLndbaV0gPDwgKFJ0ViAmICgzMi0xKSkpKQorCitJVEVSQVRPUl9J TlNOMl9TSElGVF9TTE9UKDMyLHZhc3J3X2FjYywiVngzMis9dmFzcncoVnUzMixSdDMyKSIsIlZ4 MzIudys9dmFzcihWdTMyLncsUnQzMikiLAorIlZlY3RvciBzaGlmdCBhZGQgd29yZCIsCisgICAg VnhWLndbaV0gICs9ICAoVnVWLndbaV0gPj4gKFJ0ViAmICgzMi0xKSkpKQorCitJVEVSQVRPUl9J TlNOMl9TSElGVF9TTE9UX05PVjEoMTYsdmFzbGhfYWNjLCJWeDMyKz12YXNsaChWdTMyLFJ0MzIp IiwiVngzMi5oKz12YXNsKFZ1MzIuaCxSdDMyKSIsCisiVmVjdG9yIHNoaWZ0IGFkZCBoYWxmd29y ZCIsCisgICAgVnhWLmhbaV0gICs9ICAoVnVWLmhbaV0gPDwgKFJ0ViAmICgxNi0xKSkpKQorCitJ VEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UX05PVjEoMTYsdmFzcmhfYWNjLCJWeDMyKz12YXNyaChW dTMyLFJ0MzIpIiwiVngzMi5oKz12YXNyKFZ1MzIuaCxSdDMyKSIsCisiVmVjdG9yIHNoaWZ0IGFk ZCBoYWxmd29yZCIsCisgICAgVnhWLmhbaV0gICs9ICAoVnVWLmhbaV0gPj4gKFJ0ViAmICgxNi0x KSkpKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogTU1WRUNUT1IgRUxFTUVOVC1XSVNFIEFS SVRITUVUSUMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyog TUFDUk9TIEdPIElOIE1BQ1JPUy5ERUYgTk9UIEhFUkUhISEKKyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor CisKKyNkZWZpbmUgTU1WRUNfQUJTRElGRihUWVBFLFRZUEUyLERFU0NSLCBXSURUSCwgREVTVCxT UkMpXAorSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoV0lEVEgsIHZhYnNkaWZmIyNUWVBFLCAgICAg ICAgICAgICAgICAgICAiVmQzMj12YWJzZGlmZiJUWVBFMiIoVnUzMixWdjMyKSIgLCJWZDMyLiIj REVTVCI9dmFic2RpZmYoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiAsICAgICAiVmVjdG9yIEFi c29sdXRlIG9mIERpZmZlcmVuY2UgIkRFU0NSLCAgIFZkVi5ERVNUW2ldID0gKFZ1Vi5TUkNbaV0g PiBWdlYuU1JDW2ldKSA/IChWdVYuU1JDW2ldIC0gVnZWLlNSQ1tpXSkgOiAoVnZWLlNSQ1tpXSAt IFZ1Vi5TUkNbaV0pKQorCisjZGVmaW5lIE1NVkVDX0FERFVfU0FUKFRZUEUsVFlQRTIsREVTQ1Is IFdJRFRILCBERVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCwgdmFkZCMj VFlQRSMjc2F0LCAgICAgICAgICAgICAgICAgICJWZDMyPXZhZGQiVFlQRTIiKFZ1MzIsVnYzMik6 c2F0IiAsICAgICJWZDMyLiIjREVTVCI9dmFkZChWdTMyLiIjU1JDIixWdjMyLiIjU1JDIik6c2F0 IiwgICAgIlZlY3RvciBBZGQgJiBTYXR1cmF0ZSAiREVTQ1IsICAgICAgICAgICAgVmRWLkRFU1Rb aV0gPSBmVlVBRERTQVQoV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSlcCitJVEVSQVRP Ul9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKFdJRFRILCB2YWRkIyNUWVBFIyNzYXRfZHYsICAg ICJWZGQzMj12YWRkIlRZUEUyIihWdXUzMixWdnYzMik6c2F0IiwgICJWZGQzMi4iI0RFU1QiPXZh ZGQoVnV1MzIuIiNTUkMiLFZ2djMyLiIjU1JDIik6c2F0IiwgIkRvdWJsZSBWZWN0b3IgQWRkICYg U2F0dXJhdGUgIkRFU0NSLCAgICBWZGRWLnZbMF0uREVTVFtpXSA9IGZWVUFERFNBVChXSURUSCwg VnV1Vi52WzBdLlNSQ1tpXSxWdnZWLnZbMF0uU1JDW2ldKTsgVmRkVi52WzFdLkRFU1RbaV0gPSBm VlVBRERTQVQoV0lEVEgsIFZ1dVYudlsxXS5TUkNbaV0sVnZ2Vi52WzFdLlNSQ1tpXSkpXAorSVRF UkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsIHZzdWIjI1RZUEUjI3NhdCwgICAgICAgICAgICAg ICAgICAiVmQzMj12c3ViIlRZUEUyIihWdTMyLFZ2MzIpOnNhdCIsICAgICAiVmQzMi4iI0RFU1Qi PXZzdWIoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpOnNhdCIsICAgICJWZWN0b3IgQWRkICYgU2F0 dXJhdGUgIkRFU0NSLCAgICAgICAgICAgIFZkVi5ERVNUW2ldID0gZlZVU1VCU0FUKFdJRFRILCAg VnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxF X1ZFQyhXSURUSCwgdnN1YiMjVFlQRSMjc2F0X2R2LCAgICAiVmRkMzI9dnN1YiJUWVBFMiIoVnV1 MzIsVnZ2MzIpOnNhdCIsICAiVmRkMzIuIiNERVNUIj12c3ViKFZ1dTMyLiIjU1JDIixWdnYzMi4i I1NSQyIpOnNhdCIsICJEb3VibGUgVmVjdG9yIEFkZCAmIFNhdHVyYXRlICJERVNDUiwgICAgVmRk Vi52WzBdLkRFU1RbaV0gPSBmVlVTVUJTQVQoV0lEVEgsIFZ1dVYudlswXS5TUkNbaV0sVnZ2Vi52 WzBdLlNSQ1tpXSk7IFZkZFYudlsxXS5ERVNUW2ldID0gZlZVU1VCU0FUKFdJRFRILCBWdXVWLnZb MV0uU1JDW2ldLFZ2dlYudlsxXS5TUkNbaV0pKVwKKworI2RlZmluZSBNTVZFQ19BRERTX1NBVChU WVBFLFRZUEUyLERFU0NSLCBXSURUSCxERVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xP VChXSURUSCwgdmFkZCMjVFlQRSMjc2F0LCAgICAgICAgICAgICAgICAgICJWZDMyPXZhZGQiVFlQ RTIiKFZ1MzIsVnYzMik6c2F0IiAsICAgICJWZDMyLiIjREVTVCI9dmFkZChWdTMyLiIjU1JDIixW djMyLiIjU1JDIik6c2F0IiwgICAgIlZlY3RvciBBZGQgJiBTYXR1cmF0ZSAiREVTQ1IsICAgICAg ICAgICAgVmRWLkRFU1RbaV0gPSBmVlNBRERTQVQoV0lEVEgsICBWdVYuU1JDW2ldLCAgVnZWLlNS Q1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCwgdmFkZCMj VFlQRSMjc2F0X2R2LCAgICAiVmRkMzI9dmFkZCJUWVBFMiIoVnV1MzIsVnZ2MzIpOnNhdCIsICAi VmRkMzIuIiNERVNUIj12YWRkKFZ1dTMyLiIjU1JDIixWdnYzMi4iI1NSQyIpOnNhdCIsICJEb3Vi bGUgVmVjdG9yIEFkZCAmIFNhdHVyYXRlICJERVNDUiwgICAgVmRkVi52WzBdLkRFU1RbaV0gPSBm VlNBRERTQVQoV0lEVEgsIFZ1dVYudlswXS5TUkNbaV0sIFZ2dlYudlswXS5TUkNbaV0pOyBWZGRW LnZbMV0uREVTVFtpXSA9IGZWU0FERFNBVChXSURUSCwgVnV1Vi52WzFdLlNSQ1tpXSwgVnZ2Vi52 WzFdLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsIHZzdWIjI1RZUEUj I3NhdCwgICAgICAgICAgICAgICAgICAiVmQzMj12c3ViIlRZUEUyIihWdTMyLFZ2MzIpOnNhdCIs ICAgICAiVmQzMi4iI0RFU1QiPXZzdWIoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpOnNhdCIsICAg ICJWZWN0b3IgQWRkICYgU2F0dXJhdGUgIkRFU0NSLCAgICAgICAgICAgIFZkVi5ERVNUW2ldID0g ZlZTU1VCU0FUKFdJRFRILCAgVnVWLlNSQ1tpXSwgIFZ2Vi5TUkNbaV0pKVwKK0lURVJBVE9SX0lO U04yX0FOWV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsIHZzdWIjI1RZUEUjI3NhdF9kdiwgICAgIlZk ZDMyPXZzdWIiVFlQRTIiKFZ1dTMyLFZ2djMyKTpzYXQiLCAgIlZkZDMyLiIjREVTVCI9dnN1YihW dXUzMi4iI1NSQyIsVnZ2MzIuIiNTUkMiKTpzYXQiLCAiRG91YmxlIFZlY3RvciBBZGQgJiBTYXR1 cmF0ZSAiREVTQ1IsICAgIFZkZFYudlswXS5ERVNUW2ldID0gZlZTU1VCU0FUKFdJRFRILCBWdXVW LnZbMF0uU1JDW2ldLCBWdnZWLnZbMF0uU1JDW2ldKTsgVmRkVi52WzFdLkRFU1RbaV0gPSBmVlNT VUJTQVQoV0lEVEgsIFZ1dVYudlsxXS5TUkNbaV0sIFZ2dlYudlsxXS5TUkNbaV0pKVwKKworI2Rl ZmluZSBNTVZFQ19BVkdVKFRZUEUsVFlQRTIsREVTQ1IsIFdJRFRILCBERVNULFNSQylcCitJVEVS QVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCx2YXZnIyNUWVBFLCAgICAgICAgICAgICAgICAgICAg ICAgICJWZDMyPXZhdmciVFlQRTIiKFZ1MzIsVnYzMikiLCAgICAgICAgICJWZDMyLiIjREVTVCI9 dmF2ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAgICAgIlZlY3RvciBBdmVyYWdlICJE RVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZkVi5ERVNUW2ldID0g ZlZBVkdVKCAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwKK0lURVJBVE9SX0lO U04yX0FOWV9TTE9UKFdJRFRILHZhdmcjI1RZUEUjI3JuZCwgICAgICAgICAgICAgICAgICAgIlZk MzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKTpybmQiLCAgICAgIlZkMzIuIiNERVNUIj12YXZnKFZ1 MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKTpybmQiLCAgICAiVmVjdG9yIEF2ZXJhZ2UgJSBSb3VuZCJE RVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gPSBmVkFWR1VS TkQoV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkKKworCisKKyNkZWZpbmUgTU1WRUNf QVZHUyhUWVBFLFRZUEUyLERFU0NSLCBXSURUSCwgREVTVCxTUkMpXAorSVRFUkFUT1JfSU5TTjJf QU5ZX1NMT1QoV0lEVEgsdmF2ZyMjVFlQRSwgICAgICAgICAgICAgICAgICAgICAgICAiVmQzMj12 YXZnIlRZUEUyIihWdTMyLFZ2MzIpIiwgICAgICAgICAgIlZkMzIuIiNERVNUIj12YXZnKFZ1MzIu IiNTUkMiLFZ2MzIuIiNTUkMiKSIsICAgICAgICAgICJWZWN0b3IgQXZlcmFnZSAiREVTQ1IsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVTVFtpXSAgPSBmVkFWR1Mo ICAgICAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwKK0lURVJBVE9SX0lOU04y X0FOWV9TTE9UKFdJRFRILHZhdmcjI1RZUEUjI3JuZCwgICAgICAgICAgICAgICAgICAgIlZkMzI9 dmF2ZyJUWVBFMiIoVnUzMixWdjMyKTpybmQiLCAgICAgICJWZDMyLiIjREVTVCI9dmF2ZyhWdTMy LiIjU1JDIixWdjMyLiIjU1JDIik6cm5kIiwgICAgICAiVmVjdG9yIEF2ZXJhZ2UgJSBSb3VuZCJE RVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gID0gZlZBVkdT Uk5EKCAgICBXSURUSCwgIFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKSBcCitJVEVSQVRPUl9JTlNO Ml9BTllfU0xPVChXSURUSCx2bmF2ZyMjVFlQRSwgICAgICAgICAgICAgICAgICAgICAgICJWZDMy PXZuYXZnIlRZUEUyIihWdTMyLFZ2MzIpIiwgICAgICAgICAiVmQzMi4iI0RFU1QiPXZuYXZnKFZ1 MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICAgICAgICAgIlZlY3RvciBOZWdhdGl2ZSBBdmVyYWdl ICJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZkVi5ERVNUW2ldICA9IGZWTkFW R1MoICAgICAgV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkKKworCisKKworCisKKwor I2RlZmluZSBNTVZFQ19BRERXUkFQKFRZUEUsVFlQRTIsIERFU0NSLCBXSURUSCAsIERFU1QsU1JD KVwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILCB2YWRkIyNUWVBFLCAgICAgICAgICAg ICAgICAgICJWZDMyPXZhZGQiVFlQRTIiKFZ1MzIsVnYzMikiICwgICAgICJWZDMyLiIjREVTVCI9 dmFkZChWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAiVmVjdG9yIEFkZCAiREVTQ1IsICAg ICAgICAgIFZkVi5ERVNUW2ldID0gIFZ1Vi5TUkNbaV0gKyAgVnZWLlNSQ1tpXSlcCitJVEVSQVRP Ul9JTlNOMl9BTllfU0xPVChXSURUSCwgdnN1YiMjVFlQRSwgICAgICAgICAgICAgICAgICAiVmQz Mj12c3ViIlRZUEUyIihWdTMyLFZ2MzIpIiAsICAgICAiVmQzMi4iI0RFU1QiPXZzdWIoVnUzMi4i I1NSQyIsVnYzMi4iI1NSQyIpIiwgICAgIlZlY3RvciBTdWIgIkRFU0NSLCAgICAgICAgICBWZFYu REVTVFtpXSA9ICBWdVYuU1JDW2ldIC0gIFZ2Vi5TUkNbaV0pXAorSVRFUkFUT1JfSU5TTjJfQU5Z X1NMT1RfRE9VQkxFX1ZFQyhXSURUSCwgdmFkZCMjVFlQRSMjX2R2LCAgIlZkZDMyPXZhZGQiVFlQ RTIiKFZ1dTMyLFZ2djMyKSIgLCAgIlZkZDMyLiIjREVTVCI9dmFkZChWdXUzMi4iI1NSQyIsVnZ2 MzIuIiNTUkMiKSIsICJEb3VibGUgVmVjdG9yIEFkZCAiREVTQ1IsICAgVmRkVi52WzBdLkRFU1Rb aV0gPSBWdXVWLnZbMF0uU1JDW2ldICsgVnZ2Vi52WzBdLlNSQ1tpXTsgVmRkVi52WzFdLkRFU1Rb aV0gPSBWdXVWLnZbMV0uU1JDW2ldICsgVnZ2Vi52WzFdLlNSQ1tpXSlcCitJVEVSQVRPUl9JTlNO Ml9BTllfU0xPVF9ET1VCTEVfVkVDKFdJRFRILCB2c3ViIyNUWVBFIyNfZHYsICAiVmRkMzI9dnN1 YiJUWVBFMiIoVnV1MzIsVnZ2MzIpIiAsICAiVmRkMzIuIiNERVNUIj12c3ViKFZ1dTMyLiIjU1JD IixWdnYzMi4iI1NSQyIpIiwgIkRvdWJsZSBWZWN0b3IgU3ViICJERVNDUiwgICBWZGRWLnZbMF0u REVTVFtpXSA9IFZ1dVYudlswXS5TUkNbaV0gLSBWdnZWLnZbMF0uU1JDW2ldOyBWZGRWLnZbMV0u REVTVFtpXSA9IFZ1dVYudlsxXS5TUkNbaV0gLSBWdnZWLnZbMV0uU1JDW2ldKSBcCisKKworCisK KworLyogV3JhcHBpbmcgQWRkcyAqLworTU1WRUNfQUREV1JBUChiLCAgICAiYiIsICAgICJCeXRl IiwgICAgICAgICA4LCAgIGIsIGIpOworTU1WRUNfQUREV1JBUChoLCAgICAiaCIsICAgICJIYWxm d29yZCIsICAgICAxNiwgIGgsIGgpOworTU1WRUNfQUREV1JBUCh3LCAgICAidyIsICAgICJXb3Jk IiwgICAgICAgICAzMiwgICB3LCAgICB3KTsKKworLyogU2F0dXJhdGluZyBBZGRzICovCitNTVZF Q19BRERVX1NBVCh1YiwgInViIiwgICAgIlVuc2lnbmVkIEJ5dGUiLCAgICAgICAgOCwgICB1Yiwg ICAgdWIpOworTU1WRUNfQUREVV9TQVQodWgsICJ1aCIsICAgICJVbnNpZ25lZCBIYWxmd29yZCIs ICAgIDE2LCAgdWgsICAgIHVoKTsKK01NVkVDX0FERFVfU0FUKHV3LCAidXciLCAgICAiVW5zaWdu ZWQgd29yZCIsICAgIDMyLCAgdXcsICAgIHV3KTsKK01NVkVDX0FERFNfU0FUKGIsICAiYiIsICAg ICAiYnl0ZSIsICAgICAgICAgICAgIDgsICBiLCAgICAgYik7CitNTVZFQ19BRERTX1NBVChoLCAg ImgiLCAgICAgIkhhbGZ3b3JkIiwgICAgICAgICAgICAgMTYsICBoLCAgICAgaCk7CitNTVZFQ19B RERTX1NBVCh3LCAgInciLCAgICAgIldvcmQiLCAgICAgICAgICAgICAgICAgMzIsICB3LCAgICAg dyk7CisKKworLyogQXZlcmFnaW5nIEluc3RydWN0aW9ucyAqLworTU1WRUNfQVZHVSh1YiwidWIi LCAgICAgIlVuc2lnbmVkIEJ5dGUiLCAgICAgOCwgICB1YiwgICB1Yik7CitNTVZFQ19BVkdVKHVo LCJ1aCIsICAgICAiVW5zaWduZWQgSGFsZndvcmQiLCAxNiwgIHVoLCAgIHVoKTsKK01NVkVDX0FW R1VfTk9WMSh1dywidXciLCAgICAgIlVuc2lnbmVkIFdvcmQiLCAgICAgMzIsICB1dywgICB1dyk7 CitNTVZFQ19BVkdTX05PVjEoYiwgICAiYiIsICAgICJCeXRlIiwgICAgICAgICAgICAgICA4LCAg IGIsICAgYik7CitNTVZFQ19BVkdTKGgsICAgImgiLCAgICAiSGFsZndvcmQiLCAgICAgICAgICAx NiwgICBoLCAgIGgpOworTU1WRUNfQVZHUyh3LCAgICJ3IiwgICAgIldvcmQiLCAgICAgICAgICAg ICAgMzIsICAgdywgICB3KTsKKworCisvKiBBYnNvbHV0ZSBEaWZmZXJlbmNlICovCitNTVZFQ19B QlNESUZGKHViLCJ1YiIsICAiVW5zaWduZWQgQnl0ZSIsICAgICAgICA4LCAgIHViLCAgICB1Yik7 CitNTVZFQ19BQlNESUZGKHVoLCJ1aCIsICAiVW5zaWduZWQgSGFsZndvcmQiLCAgICAxNiwgIHVo LCAgICB1aCk7CitNTVZFQ19BQlNESUZGKGgsImgiLCAgICAgICAgIkhhbGZ3b3JkIiwgICAgICAg ICAgICAgMTYsICB1aCwgICAgaCk7CitNTVZFQ19BQlNESUZGKHcsInciLCAgICAgICAgIldvcmQi LCAgICAgICAgICAgICAgICAgMzIsICB1dywgICAgdyk7CisKK0lURVJBVE9SX0lOU04yX0FOWV9T TE9UKDgsdm5hdmd1YiwgIlZkMzI9dm5hdmd1YihWdTMyLFZ2MzIpIiwgIlZkMzIuYj12bmF2ZyhW dTMyLnViLFZ2MzIudWIpIiwKKyJWZWN0b3IgTmVnYXRpdmUgQXZlcmFnZSBVbnNpZ25lZCBCeXRl IiwgVmRWLmJbaV0gICA9IGZWTkFWR1UoOCwgVnVWLnViW2ldLCBWdlYudWJbaV0pKQorCitJVEVS QVRPUl9JTlNOX0FOWV9TTE9UKDMyLHZhZGRjYXJyeXNhdCwiVmQzMi53PXZhZGQoVnUzMi53LFZ2 MzIudyxRczQpOmNhcnJ5OnNhdCIsImFkZCB3L2NhcnJ5IGFuZCBzYXR1cmF0ZSIsCitWZFYud1tp XSA9IGZWU0FUVyhWdVYud1tpXStWdlYud1tpXStmR0VUUUJJVChRc1YsaSo0KSkpCisKK0lURVJB VE9SX0lOU05fQU5ZX1NMT1QoMzIsdmFkZGNhcnJ5LCJWZDMyLnc9dmFkZChWdTMyLncsVnYzMi53 LFF4NCk6Y2FycnkiLCJhZGQgdy9jYXJyeSIsCitWZFYud1tpXSA9IFZ1Vi53W2ldK1Z2Vi53W2ld K2ZHRVRRQklUKFF4VixpKjQpOworZlNFVFFCSVRTKFF4Viw0LDB4Riw0KmksLWZDQVJSWV9GUk9N X0FERDMyKFZ1Vi53W2ldLFZ2Vi53W2ldLGZHRVRRQklUKFF4VixpKjQpKSkpCisKK0lURVJBVE9S X0lOU05fQU5ZX1NMT1QoMzIsdnN1YmNhcnJ5LCJWZDMyLnc9dnN1YihWdTMyLncsVnYzMi53LFF4 NCk6Y2FycnkiLCJhZGQgdy9jYXJyeSIsCitWZFYud1tpXSA9IFZ1Vi53W2ldK35WdlYud1tpXStm R0VUUUJJVChReFYsaSo0KTsKK2ZTRVRRQklUUyhReFYsNCwweEYsNCppLC1mQ0FSUllfRlJPTV9B REQzMihWdVYud1tpXSx+VnZWLndbaV0sZkdFVFFCSVQoUXhWLGkqNCkpKSkKKworSVRFUkFUT1Jf SU5TTl9BTllfU0xPVCgzMix2YWRkY2FycnlvLCJWZDMyLncsUWU0PXZhZGQoVnUzMi53LFZ2MzIu dyk6Y2FycnkiLCJhZGQgdy9jYXJyeSBvdXQtb25seSIsCitWZFYud1tpXSA9IFZ1Vi53W2ldK1Z2 Vi53W2ldOworZlNFVFFCSVRTKFFlViw0LDB4Riw0KmksLWZDQVJSWV9GUk9NX0FERDMyKFZ1Vi53 W2ldLFZ2Vi53W2ldLDApKSkKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVCgzMix2c3ViY2Fycnlv LCJWZDMyLncsUWU0PXZzdWIoVnUzMi53LFZ2MzIudyk6Y2FycnkiLCJzdWJ0cmFjdCB3L2NhcnJ5 IG91dC1vbmx5IiwKK1ZkVi53W2ldID0gVnVWLndbaV0rflZ2Vi53W2ldKzE7CitmU0VUUUJJVFMo UWVWLDQsMHhGLDQqaSwtZkNBUlJZX0ZST01fQUREMzIoVnVWLndbaV0sflZ2Vi53W2ldLDEpKSkK KworCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDMyLHZzYXRkdywiVmQzMi53PXZzYXRkdyhWdTMy LncsVnYzMi53KSIsIlNhdHVyYXRlIGZyb20gNjQtYml0cyAoaGlnaGVyIDMyLWJpdHMgY29tZSBm cm9tIGZpcnN0IHZlY3RvcikgdG8gMzItYml0cyIsVmRWLndbaV0gPSBmVlNBVERXKFZ1Vi53W2ld LFZ2Vi53W2ldKSkKKworCisjZGVmaW5lIE1NVkVDX0FERFNBVF9NSVgoVEFHRU5ELFNBVEYsV0lE VEgsREVTVCxTUkMxLFNSQzIpXAorSVRFUkFUT1JfSU5TTl9BTllfU0xPVChXSURUSCwgdmFkZCMj VEFHRU5ELCJWZDMyLiIjREVTVCI9dmFkZChWdTMyLiIjU1JDMSIsVnYzMi4iI1NSQzIiKTpzYXQi LCAgICAiVmVjdG9yIEFkZCBtaXhlZCIsIFZkVi5ERVNUW2ldID0gIFNBVEYoVnVWLlNSQzFbaV0g KyAgVnZWLlNSQzJbaV0pKVwKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoV0lEVEgsIHZzdWIjI1RB R0VORCwiVmQzMi4iI0RFU1QiPXZzdWIoVnUzMi4iI1NSQzEiLFZ2MzIuIiNTUkMyIik6c2F0Iiwg ICAgIlZlY3RvciBTdWIgbWl4ZWQiLCBWZFYuREVTVFtpXSA9ICBTQVRGKFZ1Vi5TUkMxW2ldIC0g IFZ2Vi5TUkMyW2ldKSlcCisKK01NVkVDX0FERFNBVF9NSVgodWJ1YmJfc2F0LGZWU0FUVUIsOCx1 Yix1YixiKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIFdJREVOSU5HCisq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9ET1VCTEVfVkVDKDE2LHZhZGR1YmgsIlZkZDMyPXZhZGR1YihWdTMyLFZ2MzIpIiwiVmRk MzIuaD12YWRkKFZ1MzIudWIsVnYzMi51YikiLAorIlZlY3RvciBhZGRpdGlvbiB3aXRoIHdpZGVu IGludG8gdHdvIHZlY3RvcnMiLAorICAgIFZkZFYudlswXS5oW2ldID0gZlpFOF8xNihmR0VUVUJZ VEUoMCwgVnVWLnVoW2ldKSkgKyBmWkU4XzE2KGZHRVRVQllURSgwLCBWdlYudWhbaV0pKTsKKyAg ICBWZGRWLnZbMV0uaFtpXSA9IGZaRThfMTYoZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSkpICsgZlpF OF8xNihmR0VUVUJZVEUoMSwgVnZWLnVoW2ldKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9U X0RPVUJMRV9WRUMoMTYsdnN1YnViaCwiVmRkMzI9dnN1YnViKFZ1MzIsVnYzMikiLCJWZGQzMi5o PXZzdWIoVnUzMi51YixWdjMyLnViKSIsCisiVmVjdG9yIHN1YnRyYWN0aW9uIHdpdGggd2lkZW4g aW50byB0d28gdmVjdG9ycyIsCisgICAgVmRkVi52WzBdLmhbaV0gPSBmWkU4XzE2KGZHRVRVQllU RSgwLCBWdVYudWhbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ2Vi51aFtpXSkpOworICAg IFZkZFYudlsxXS5oW2ldID0gZlpFOF8xNihmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkgLSBmWkU4 XzE2KGZHRVRVQllURSgxLCBWdlYudWhbaV0pKSkKKworCisKK0lURVJBVE9SX0lOU04yX01QWV9T TE9UX0RPVUJMRV9WRUMoMzIsdmFkZGh3LCJWZGQzMj12YWRkaChWdTMyLFZ2MzIpIiwiVmRkMzIu dz12YWRkKFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgYWRkaXRpb24gd2l0aCB3aWRlbiBpbnRv IHR3byB2ZWN0b3JzIiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZHRVRIQUxGKDAsIFZ1Vi53W2ld KSArIGZHRVRIQUxGKDAsIFZ2Vi53W2ldKTsKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZHRVRIQUxG KDEsIFZ1Vi53W2ldKSArIGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSkKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2c3ViaHcsIlZkZDMyPXZzdWJoKFZ1MzIsVnYzMikiLCJW ZGQzMi53PXZzdWIoVnUzMi5oLFZ2MzIuaCkiLAorIlZlY3RvciBzdWJ0cmFjdGlvbiB3aXRoIHdp ZGVuIGludG8gdHdvIHZlY3RvcnMiLAorICAgIFZkZFYudlswXS53W2ldID0gZkdFVEhBTEYoMCwg VnVWLndbaV0pIC0gZkdFVEhBTEYoMCwgVnZWLndbaV0pOworICAgIFZkZFYudlsxXS53W2ldID0g ZkdFVEhBTEYoMSwgVnVWLndbaV0pIC0gZkdFVEhBTEYoMSwgVnZWLndbaV0pKQorCisKK0lURVJB VE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmFkZHVodywiVmRkMzI9dmFkZHVoKFZ1 MzIsVnYzMikiLCJWZGQzMi53PXZhZGQoVnUzMi51aCxWdjMyLnVoKSIsCisiVmVjdG9yIGFkZGl0 aW9uIHdpdGggd2lkZW4gaW50byB0d28gdmVjdG9ycyIsCisgICAgVmRkVi52WzBdLndbaV0gPSBm WkUxNl8zMihmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSkgKyBmWkUxNl8zMihmR0VUVUhBTEYoMCwg VnZWLnV3W2ldKSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBmWkUxNl8zMihmR0VUVUhBTEYoMSwg VnVWLnV3W2ldKSkgKyBmWkUxNl8zMihmR0VUVUhBTEYoMSwgVnZWLnV3W2ldKSkpCisKK0lURVJB VE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdnN1YnVodywiVmRkMzI9dnN1YnVoKFZ1 MzIsVnYzMikiLCJWZGQzMi53PXZzdWIoVnUzMi51aCxWdjMyLnVoKSIsCisiVmVjdG9yIHN1YnRy YWN0aW9uIHdpdGggd2lkZW4gaW50byB0d28gdmVjdG9ycyIsCisgICAgVmRkVi52WzBdLndbaV0g PSBmWkUxNl8zMihmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSkgLSBmWkUxNl8zMihmR0VUVUhBTEYo MCwgVnZWLnV3W2ldKSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBmWkUxNl8zMihmR0VUVUhBTEYo MSwgVnVWLnV3W2ldKSkgLSBmWkUxNl8zMihmR0VUVUhBTEYoMSwgVnZWLnV3W2ldKSkpCisKKwor CitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZhZGRod19hY2MsIlZ4eDMy Kz12YWRkaChWdTMyLFZ2MzIpIiwiVnh4MzIudys9dmFkZChWdTMyLmgsVnYzMi5oKSIsCisiVmVj dG9yIGFkZGl0aW9uIHdpdGggd2lkZW4gaW50byB0d28gdmVjdG9ycyIsCisgICAgVnh4Vi52WzBd LndbaV0gKz0gZkdFVEhBTEYoMCwgVnVWLndbaV0pICsgZkdFVEhBTEYoMCwgVnZWLndbaV0pOwor ICAgIFZ4eFYudlsxXS53W2ldICs9IGZHRVRIQUxGKDEsIFZ1Vi53W2ldKSArIGZHRVRIQUxGKDEs IFZ2Vi53W2ldKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2YWRk dWh3X2FjYywiVnh4MzIrPXZhZGR1aChWdTMyLFZ2MzIpIiwiVnh4MzIudys9dmFkZChWdTMyLnVo LFZ2MzIudWgpIiwKKyJWZWN0b3IgYWRkaXRpb24gd2l0aCB3aWRlbiBpbnRvIHR3byB2ZWN0b3Jz IiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmR0VUVUhBTEYoMCwgVnVWLndbaV0pICsgZkdFVFVI QUxGKDAsIFZ2Vi53W2ldKTsKKyAgICBWeHhWLnZbMV0ud1tpXSArPSBmR0VUVUhBTEYoMSwgVnVW LndbaV0pICsgZkdFVFVIQUxGKDEsIFZ2Vi53W2ldKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NM T1RfRE9VQkxFX1ZFQygxNix2YWRkdWJoX2FjYywiVnh4MzIrPXZhZGR1YihWdTMyLFZ2MzIpIiwi Vnh4MzIuaCs9dmFkZChWdTMyLnViLFZ2MzIudWIpIiwKKyJWZWN0b3IgYWRkaXRpb24gd2l0aCB3 aWRlbiBpbnRvIHR3byB2ZWN0b3JzIiwKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBmR0VUVUJZVEUo MCwgVnVWLmhbaV0pICsgZkdFVFVCWVRFKDAsIFZ2Vi5oW2ldKTsKKyAgICBWeHhWLnZbMV0uaFtp XSArPSBmR0VUVUJZVEUoMSwgVnVWLmhbaV0pICsgZkdFVFVCWVRFKDEsIFZ2Vi5oW2ldKSkKKwor CitERUZfQ1ZJX01BUFBJTkcoVjZfdmQwLCAgIlZkMzI9IzAiLCAgIlZkMzI9dnhvcihWMzEsVjMx KSIpCitERUZfQ1ZJX01BUFBJTkcoVjZfdmRkMCwgICJWZGQzMj0jMCIsICAiVmRkMzIudz12c3Vi KFYzMTozMC53LFYzMTozMC53KSIpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyogICBDb25kaXRpb25hbAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmlu ZSBDT05EQUREU1VCKFdJRFRILFRBR0VORCxMSFNZTixSSFNZTixERVNDUixMSEJFSCxSSEJFSCkg XAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsdmFkZCMjVEFHRU5EIyNxLCJpZiAoUXY0 LiIjVEFHRU5EIikgIkxIU1lOIis9IlJIU1lOLCJpZiAoUXY0KSAiTEhTWU4iKz0iUkhTWU4sREVT Q1IsTEhCRUg9ZkNPTkRNQVNLIyNXSURUSChRdlYsaSxMSEJFSCtSSEJFSCxMSEJFSCkpIFwKK0lU RVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZzdWIjI1RBR0VORCMjcSwiaWYgKFF2NC4iI1RB R0VORCIpICJMSFNZTiItPSJSSFNZTiwiaWYgKFF2NCkgIkxIU1lOIi09IlJIU1lOLERFU0NSLExI QkVIPWZDT05ETUFTSyMjV0lEVEgoUXZWLGksTEhCRUgtUkhCRUgsTEhCRUgpKSBcCitJVEVSQVRP Ul9JTlNOMl9BTllfU0xPVChXSURUSCx2YWRkIyNUQUdFTkQjI25xLCJpZiAoIVF2NC4iI1RBR0VO RCIpICJMSFNZTiIrPSJSSFNZTiwiaWYgKCFRdjQpICJMSFNZTiIrPSJSSFNZTixERVNDUixMSEJF SD1mQ09ORE1BU0sjI1dJRFRIKFF2VixpLExIQkVILExIQkVIK1JIQkVIKSkgXAorSVRFUkFUT1Jf SU5TTjJfQU5ZX1NMT1QoV0lEVEgsdnN1YiMjVEFHRU5EIyNucSwiaWYgKCFRdjQuIiNUQUdFTkQi KSAiTEhTWU4iLT0iUkhTWU4sImlmICghUXY0KSAiTEhTWU4iLT0iUkhTWU4sREVTQ1IsTEhCRUg9 ZkNPTkRNQVNLIyNXSURUSChRdlYsaSxMSEJFSCxMSEJFSC1SSEJFSCkpIFwKKworQ09OREFERFNV Qig4LGIsIlZ4MzIuYiIsIlZ1MzIuYiIsIkNvbmRpdGlvbmFsIGFkZC9zdWIgQnl0ZSIsVnhWLnVi W2ldLFZ1Vi51YltpXSkKK0NPTkRBRERTVUIoMTYsaCwiVngzMi5oIiwiVnUzMi5oIiwiQ29uZGl0 aW9uYWwgYWRkL3N1YiBIYWxmIixWeFYuaFtpXSxWdVYuaFtpXSkKK0NPTkRBRERTVUIoMzIsdywi VngzMi53IiwiVnUzMi53IiwiQ29uZGl0aW9uYWwgYWRkL3N1YiBXb3JkIixWeFYud1tpXSxWdVYu d1tpXSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgQUJTT0xVVEUgVkFMVUVTCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKy8vIFY2NQorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1Rf Tk9WMSg4LHZhYnNiLCAgICAgICAgIlZkMzI9dmFic2IoVnUzMikiLCAgICAgIlZkMzIuYj12YWJz KFZ1MzIuYikiLCAgICAgIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiBieXRlcyIsICAgIFZkVi5i W2ldICA9ICBmQUJTKFZ1Vi5iW2ldKSkKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX05PVjEoOCx2 YWJzYl9zYXQsICAgICJWZDMyPXZhYnNiKFZ1MzIpOnNhdCIsICJWZDMyLmI9dmFicyhWdTMyLmIp OnNhdCIsICJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2YgYnl0ZXMiLCAgICBWZFYuYltpXSAgPSAg ZlZTQVRCKGZBQlMoZlNFOF8xNihWdVYuYltpXSkpKSkKKworCitJVEVSQVRPUl9JTlNOMl9BTllf U0xPVCgxNix2YWJzaCwgICAgICAgICJWZDMyPXZhYnNoKFZ1MzIpIiwgICAgICJWZDMyLmg9dmFi cyhWdTMyLmgpIiwgICAgICJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2YgaGFsZndvcmRzIiwgICAg VmRWLmhbaV0gID0gIGZBQlMoVnVWLmhbaV0pKQorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMTYs dmFic2hfc2F0LCAgICAiVmQzMj12YWJzaChWdTMyKTpzYXQiLCAiVmQzMi5oPXZhYnMoVnUzMi5o KTpzYXQiLCAiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIGhhbGZ3b3JkcyIsICAgIFZkVi5oW2ld ICA9ICBmVlNBVEgoZkFCUyhmU0UxNl8zMihWdVYuaFtpXSkpKSkKK0lURVJBVE9SX0lOU04yX0FO WV9TTE9UKDMyLHZhYnN3LCAgICAgICAgIlZkMzI9dmFic3coVnUzMikiLCAgICAgIlZkMzIudz12 YWJzKFZ1MzIudykiLCAgICAgIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsICAgICAg ICBWZFYud1tpXSAgPSAgZkFCUyhWdVYud1tpXSkpCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgz Mix2YWJzd19zYXQsICAgICJWZDMyPXZhYnN3KFZ1MzIpOnNhdCIsICJWZDMyLnc9dmFicyhWdTMy LncpOnNhdCIsICJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLCAgICAgICAgVmRWLndb aV0gID0gIGZWU0FUVyhmQUJTKGZTRTMyXzY0KFZ1Vi53W2ldKSkpKQorCisKK0RFRl9DVklfTUFQ UElORyhWNl92YWJzdWJfYWx0LCAgIlZkMzIudWI9dmFicyhWdTMyLmIpIiwgICJWZDMyLmI9dmFi cyhWdTMyLmIpIikKK0RFRl9DVklfTUFQUElORyhWNl92YWJzdWhfYWx0LCAgIlZkMzIudWg9dmFi cyhWdTMyLmgpIiwgICJWZDMyLmg9dmFicyhWdTMyLmgpIikKK0RFRl9DVklfTUFQUElORyhWNl92 YWJzdXdfYWx0LCAgIlZkMzIudXc9dmFicyhWdTMyLncpIiwgICJWZDMyLnc9dmFicyhWdTMyLncp IikKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBNTVZFQ1RPUiBNVUxUSVBMSUNBVElP TlMKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKiBCeXRlIGJ5IEJ5dGUgKi8KK0lURVJBVE9S X0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWJ2LCJWZGQzMj12bXB5YihWdTMyLFZ2 MzIpIiwiVmRkMzIuaD12bXB5KFZ1MzIuYixWdjMyLmIpIiwKKyJWZWN0b3IgYWJzb2x1dGUgdmFs dWUgb2Ygd29yZHMiLAorICAgIFZkZFYudlswXS5oW2ldID0gIGZNUFk4U1MoZkdFVEJZVEUoMCwg VnVWLmhbaV0pLCBmR0VUQllURSgwLCBWdlYuaFtpXSkpOworICAgIFZkZFYudlsxXS5oW2ldID0g IGZNUFk4U1MoZkdFVEJZVEUoMSwgVnVWLmhbaV0pLCBmR0VUQllURSgxLCBWdlYuaFtpXSkpKQor CitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHlidl9hY2MsIlZ4eDMy Kz12bXB5YihWdTMyLFZ2MzIpIiwiVnh4MzIuaCs9dm1weShWdTMyLmIsVnYzMi5iKSIsCisiVmVj dG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWeHhWLnZbMF0uaFtpXSArPSAgZk1Q WThTUyhmR0VUQllURSgwLCBWdVYuaFtpXSksIGZHRVRCWVRFKDAsIFZ2Vi5oW2ldKSk7CisgICAg Vnh4Vi52WzFdLmhbaV0gKz0gIGZNUFk4U1MoZkdFVEJZVEUoMSwgVnVWLmhbaV0pLCBmR0VUQllU RSgxLCBWdlYuaFtpXSkpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMo MTYsdm1weXVidiwiVmRkMzI9dm1weXViKFZ1MzIsVnYzMikiLCJWZGQzMi51aD12bXB5KFZ1MzIu dWIsVnYzMi51YikiLAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAgVmRk Vi52WzBdLnVoW2ldID0gIGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRVQllU RSgwLCBWdlYudWhbaV0pICk7CisgICAgVmRkVi52WzFdLnVoW2ldID0gIGZNUFk4VVUoZkdFVFVC WVRFKDEsIFZ1Vi51aFtpXSksIGZHRVRVQllURSgxLCBWdlYudWhbaV0pICkpCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weXVidl9hY2MsIlZ4eDMyKz12bXB5dWIo VnUzMixWdjMyKSIsIlZ4eDMyLnVoKz12bXB5KFZ1MzIudWIsVnYzMi51YikiLAorIlZlY3RvciBh YnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAgVnh4Vi52WzBdLnVoW2ldICs9ICBmTVBZOFVV KGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKSApOworICAg IFZ4eFYudlsxXS51aFtpXSArPSAgZk1QWThVVShmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwgZkdF VFVCWVRFKDEsIFZ2Vi51aFtpXSkgKSkKKworCisKKworCisKK0lURVJBVE9SX0lOU04yX01QWV9T TE9UX0RPVUJMRV9WRUMoMTYsdm1weWJ1c3YsIlZkZDMyPXZtcHlidXMoVnUzMixWdjMyKSIsIlZk ZDMyLmg9dm1weShWdTMyLnViLFZ2MzIuYikiLAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3 b3JkcyIsCisgICAgVmRkVi52WzBdLmhbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUoMCwgVnVWLnVo W2ldKSwgZkdFVEJZVEUoMCwgVnZWLmhbaV0pKTsKKyAgICBWZGRWLnZbMV0uaFtpXSAgPSBmTVBZ OFVTKGZHRVRVQllURSgxLCBWdVYudWhbaV0pLCBmR0VUQllURSgxLCBWdlYuaFtpXSkpKQorCitJ VEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHlidXN2X2FjYywiVnh4MzIr PXZtcHlidXMoVnUzMixWdjMyKSIsIlZ4eDMyLmgrPXZtcHkoVnUzMi51YixWdjMyLmIpIiwKKyJW ZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZ4eFYudlswXS5oW2ldICArPSBm TVBZOFVTKGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUQllURSgwLCBWdlYuaFtpXSkpOwor ICAgIFZ4eFYudlsxXS5oW2ldICArPSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdVYudWhbaV0pLCBm R0VUQllURSgxLCBWdlYuaFtpXSkpKQorCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9E T1VCTEVfVkVDKDE2LHZtcGFidXN2LCJWZGQzMj12bXBhYnVzKFZ1dTMyLFZ2djMyKSIsIlZkZDMy Lmg9dm1wYShWdXUzMi51YixWdnYzMi5iKSIsCisiVmVydGljYWwgQnl0ZSBNdWx0aXBseSIsCisg ICAgVmRkVi52WzBdLmhbaV0gPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVWLnZbMF0udWhbaV0p LCBmR0VUQllURSgwLCBWdnZWLnZbMF0udWhbaV0pKSArIGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1 dVYudlsxXS51aFtpXSksIGZHRVRCWVRFKDAsIFZ2dlYudlsxXS51aFtpXSkpOworICAgIFZkZFYu dlsxXS5oW2ldID0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSwgZkdFVEJZ VEUoMSwgVnZ2Vi52WzBdLnVoW2ldKSkgKyBmTVBZOFVTKGZHRVRVQllURSgxLCBWdXVWLnZbMV0u dWhbaV0pLCBmR0VUQllURSgxLCBWdnZWLnZbMV0udWhbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXBhYnV1diwiVmRkMzI9dm1wYWJ1dShWdXUzMixWdnYz MikiLCJWZGQzMi5oPXZtcGEoVnV1MzIudWIsVnZ2MzIudWIpIiwKKyJWZXJ0aWNhbCBCeXRlIE11 bHRpcGx5IiwKKyAgICBWZGRWLnZbMF0uaFtpXSA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1dVYu dlswXS51aFtpXSksIGZHRVRVQllURSgwLCBWdnZWLnZbMF0udWhbaV0pKSArIGZNUFk4VVUoZkdF VFVCWVRFKDAsIFZ1dVYudlsxXS51aFtpXSksIGZHRVRVQllURSgwLCBWdnZWLnZbMV0udWhbaV0p KTsKKyAgICBWZGRWLnZbMV0uaFtpXSA9IGZNUFk4VVUoZkdFVFVCWVRFKDEsIFZ1dVYudlswXS51 aFtpXSksIGZHRVRVQllURSgxLCBWdnZWLnZbMF0udWhbaV0pKSArIGZNUFk4VVUoZkdFVFVCWVRF KDEsIFZ1dVYudlsxXS51aFtpXSksIGZHRVRVQllURSgxLCBWdnZWLnZbMV0udWhbaV0pKSkKKwor CisKKworCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aHYs IlZkZDMyPXZtcHloKFZ1MzIsVnYzMikiLCJWZGQzMi53PXZtcHkoVnUzMi5oLFZ2MzIuaCkiLAor IlZlY3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorICAgIFZkZFYudlswXS53W2ld ID0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLCBmR0VUSEFMRigwLCBWdlYud1tpXSkp OworICAgIFZkZFYudlsxXS53W2ldID0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0pLCBm R0VUSEFMRigxLCBWdlYud1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVf VkVDKDMyLHZtcHlodl9hY2MsIlZ4eDMyKz12bXB5aChWdTMyLFZ2MzIpIiwiVnh4MzIudys9dm1w eShWdTMyLmgsVnYzMi5oKSIsCisiVmVjdG9yIGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBseSIs CisgICAgVnh4Vi52WzBdLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLCBm R0VUSEFMRigwLCBWdlYud1tpXSkpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFkxNlNTKGZH RVRIQUxGKDEsIFZ1Vi53W2ldKSwgZkdFVEhBTEYoMSwgVnZWLndbaV0pKSkKKworSVRFUkFUT1Jf SU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5dWh2LCJWZGQzMj12bXB5dWgoVnUzMixW djMyKSIsIlZkZDMyLnV3PXZtcHkoVnUzMi51aCxWdjMyLnVoKSIsCisiVmVjdG9yIGJ5IFZlY3Rv ciBVbnNpZ25lZCBIYWxmd29yZCBNdWx0aXBseSIsCisgICAgVmRkVi52WzBdLnV3W2ldID0gZk1Q WTE2VVUoZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSksIGZHRVRVSEFMRigwLCBWdlYudXdbaV0pKTsK KyAgICBWZGRWLnZbMV0udXdbaV0gPSBmTVBZMTZVVShmR0VUVUhBTEYoMSwgVnVWLnV3W2ldKSwg ZkdFVFVIQUxGKDEsIFZ2Vi51d1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VC TEVfVkVDKDMyLHZtcHl1aHZfYWNjLCJWeHgzMis9dm1weXVoKFZ1MzIsVnYzMikiLCJWeHgzMi51 dys9dm1weShWdTMyLnVoLFZ2MzIudWgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIFVuc2lnbmVkIEhh bGZ3b3JkIE11bHRpcGx5IiwKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0gZk1QWTE2VVUoZkdFVFVI QUxGKDAsIFZ1Vi51d1tpXSksIGZHRVRVSEFMRigwLCBWdlYudXdbaV0pKTsKKyAgICBWeHhWLnZb MV0udXdbaV0gKz0gZk1QWTE2VVUoZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSksIGZHRVRVSEFMRigx LCBWdlYudXdbaV0pKSkKKworCisKKy8qIFZlY3RvciBieSBWZWN0b3IgKi8KK0lURVJBVE9SX0lO U04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWh2c3JzLCJWZDMyPXZtcHloKFZ1MzIsVnYz Mik6PDwxOnJuZDpzYXQiLCJWZDMyLmg9dm1weShWdTMyLmgsVnYzMi5oKTo8PDE6cm5kOnNhdCIs CisiVmVjdG9yIGhhbGZ3b3JkIG11bHRpcGx5IHdpdGggcm91bmQsIHNoaWZ0LCBhbmQgc2F0MTYi LAorICAgIFZkVi5oW2ldID0gZlZTQVRIKGZHRVRIQUxGKDEsZlZTQVQoZlJPVU5EKChmTVBZMTZT UyhWdVYuaFtpXSxWdlYuaFtpXSAgICApPDwxKSkpKSkpCisKKworCisKKworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aHVzLCAiVmRkMzI9dm1weWh1cyhWdTMyLFZ2 MzIpIiwiVmRkMzIudz12bXB5KFZ1MzIuaCxWdjMyLnVoKSIsCisiVmVjdG9yIGJ5IFZlY3RvciBI YWxmd29yZCBNdWx0aXBseSIsCisgICAgVmRkVi52WzBdLndbaV0gPSBmTVBZMTZTVShmR0VUSEFM RigwLCBWdVYud1tpXSksIGZHRVRVSEFMRigwLCBWdlYudXdbaV0pKTsKKyAgICBWZGRWLnZbMV0u d1tpXSA9IGZNUFkxNlNVKGZHRVRIQUxGKDEsIFZ1Vi53W2ldKSwgZkdFVFVIQUxGKDEsIFZ2Vi51 d1tpXSkpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWh1 c19hY2MsICJWeHgzMis9dm1weWh1cyhWdTMyLFZ2MzIpIiwiVnh4MzIudys9dm1weShWdTMyLmgs VnYzMi51aCkiLAorIlZlY3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorICAgIFZ4 eFYudlswXS53W2ldICs9IGZNUFkxNlNVKGZHRVRIQUxGKDAsIFZ1Vi53W2ldKSwgZkdFVFVIQUxG KDAsIFZ2Vi51d1tpXSkpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFkxNlNVKGZHRVRIQUxG KDEsIFZ1Vi53W2ldKSwgZkdFVFVIQUxGKDEsIFZ2Vi51d1tpXSkpKQorCisKKworCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHlpaCwiVmQzMj12bXB5aWgoVnUzMixW djMyKSIsIlZkMzIuaD12bXB5aShWdTMyLmgsVnYzMi5oKSIsCisiVmVjdG9yIGJ5IFZlY3RvciBI YWxmd29yZCBNdWx0aXBseSIsCisgICAgVmRWLmhbaV0gPSBmTVBZMTZTUyhWdVYuaFtpXSwgVnZW LmhbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcHlpaF9h Y2MsIlZ4MzIrPXZtcHlpaChWdTMyLFZ2MzIpIiwiVngzMi5oKz12bXB5aShWdTMyLmgsVnYzMi5o KSIsCisiVmVjdG9yIGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBseSIsCisgICAgVnhWLmhbaV0g Kz0gZk1QWTE2U1MoVnVWLmhbaV0sIFZ2Vi5oW2ldKSkKKworCisKKy8qIDMyeDMyIGhpZ2ggaGFs ZiAvIGZyYWMgKi8KKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZt cHlld3VoLCJWZDMyPXZtcHlld3VoKFZ1MzIsVnYzMikiLCJWZDMyLnc9dm1weWUoVnUzMi53LFZ2 MzIudWgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5IiwKK1ZkVi53W2ld ID0gZk1QWTMyMTZTVShWdVYud1tpXSwgZkdFVFVIQUxGKDAsIFZ2Vi53W2ldKSkgPj4gMTYpCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weW93aCwiVmQzMj12bXB5 b3doKFZ1MzIsVnYzMik6PDwxOnNhdCIsIlZkMzIudz12bXB5byhWdTMyLncsVnYzMi5oKTo8PDE6 c2F0IiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5IiwKK1ZkVi53W2ldID0g ZlZTQVRXKCgoKGZNUFkzMjE2U1MoVnVWLndbaV0sIGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSkgPj4g MTQpICsgMCkgPj4gMSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMy LHZtcHlvd2hfcm5kLCJWZDMyPXZtcHlvd2goVnUzMixWdjMyKTo8PDE6cm5kOnNhdCIsIlZkMzIu dz12bXB5byhWdTMyLncsVnYzMi5oKTo8PDE6cm5kOnNhdCIsCisiVmVjdG9yIGJ5IFZlY3RvciBI YWxmd29yZCBNdWx0aXBseSIsCitWZFYud1tpXSA9IGZWU0FUVygoKChmTVBZMzIxNlNTKFZ1Vi53 W2ldLCBmR0VUSEFMRigxLCBWdlYud1tpXSkpID4+IDE0KSArIDEpID4+IDEpKSkKKworSVRFUkFU T1JfSU5TTl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlld3VoXzY0LCJWZGQzMj12bXB5ZShW dTMyLncsVnYzMi51aCkiLAorIldvcmQgdGltZXMgSGFsZndvcmQgTXVsdGlwbHksIDY0LWJpdCBy ZXN1bHQiLAorCWZISURFKHNpemU4c190IHByb2Q7KQorCXByb2QgPSBmTVBZMzJTVShWdVYud1tp XSxmR0VUVUhBTEYoMCxWdlYud1tpXSkpOworCVZkZFYudlsxXS53W2ldID0gcHJvZCA+PiAxNjsK KwlWZGRWLnZbMF0ud1tpXSA9IHByb2QgPDwgMTYpCisKK0lURVJBVE9SX0lOU05fTVBZX1NMT1Rf RE9VQkxFX1ZFQygzMix2bXB5b3doXzY0X2FjYywiVnh4MzIrPXZtcHlvKFZ1MzIudyxWdjMyLmgp IiwKKyJXb3JkIHRpbWVzIEhhbGZ3b3JkIE11bHRpcGx5LCA2NC1iaXQgcmVzdWx0IiwKKwlmSElE RShzaXplOHNfdCBwcm9kOykKKwlwcm9kID0gZk1QWTMyU1MoVnVWLndbaV0sZkdFVEhBTEYoMSxW dlYud1tpXSkpICArIGZTRTMyXzY0KFZ4eFYudlsxXS53W2ldKTsKKwlWeHhWLnZbMV0ud1tpXSA9 IHByb2QgPj4gMTY7CisJZlNFVEhBTEYoMCwgVnh4Vi52WzBdLndbaV0sIFZ4eFYudlswXS53W2ld ID4+IDE2KTsKKwlmU0VUSEFMRigxLCBWeHhWLnZbMF0ud1tpXSwgcHJvZCAmIDB4MDAwMGZmZmYp KQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlvd2hfc2FjYywi VngzMis9dm1weW93aChWdTMyLFZ2MzIpOjw8MTpzYXQ6c2hpZnQiLCJWeDMyLncrPXZtcHlvKFZ1 MzIudyxWdjMyLmgpOjw8MTpzYXQ6c2hpZnQiLAorIlZlY3RvciBieSBWZWN0b3IgSGFsZndvcmQg TXVsdGlwbHkiLAorSVYxREVBRCgpIFZ4Vi53W2ldID0gZlZTQVRXKCgoKChWeFYud1tpXSArIGZN UFkzMjE2U1MoVnVWLndbaV0sIGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSkpID4+IDE0KSArIDApID4+ IDEpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5b3doX3Ju ZF9zYWNjLCJWeDMyKz12bXB5b3doKFZ1MzIsVnYzMik6PDwxOnJuZDpzYXQ6c2hpZnQiLCJWeDMy LncrPXZtcHlvKFZ1MzIudyxWdjMyLmgpOjw8MTpybmQ6c2F0OnNoaWZ0IiwKKyJWZWN0b3IgYnkg VmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5IiwKK0lWMURFQUQoKSBWeFYud1tpXSA9IGZWU0FUVygo KCgoVnhWLndbaV0gKyBmTVBZMzIxNlNTKFZ1Vi53W2ldLCBmR0VUSEFMRigxLCBWdlYud1tpXSkp KSA+PiAxNCkgKyAxKSA+PiAxKSkpCisKKy8qIEZvciAzMngzMiBpbnRlZ2VyIC8gbG93IGhhbGYg Ki8KKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVCgzMix2bXB5aWVvaCwiVmQzMi53PXZtcHlpZW8o VnUzMi5oLFZ2MzIuaCkiLCJPZGQvRXZlbiBtdWx0aXBseSBmb3IgMzJ4MzIgbG93IGhhbGYiLAor CVZkVi53W2ldID0gKGZHRVRIQUxGKDAsVnVWLndbaV0pKmZHRVRIQUxGKDEsVnZWLndbaV0pKSA8 PCAxNikKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aWV3dWgs IlZkMzI9dm1weWlld3VoKFZ1MzIsVnYzMikiLCJWZDMyLnc9dm1weWllKFZ1MzIudyxWdjMyLnVo KSIsCisiVmVjdG9yIGJ5IFZlY3RvciBXb3JkIGJ5IEhhbGZ3b3JkIE11bHRpcGx5IiwKK0lWMURF QUQoKSAgICBWZFYud1tpXSA9IGZNUFkzMjE2U1UoVnVWLndbaV0sIGZHRVRVSEFMRigwLCBWdlYu d1tpXSkpICkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aW93 aCwiVmQzMj12bXB5aW93aChWdTMyLFZ2MzIpIiwiVmQzMi53PXZtcHlpbyhWdTMyLncsVnYzMi5o KSIsCisiVmVjdG9yIGJ5IFZlY3RvciBXb3JkIGJ5IEhhbGZ3b3JkIE11bHRpcGx5IiwKK0lWMURF QUQoKSAgICBWZFYud1tpXSA9IGZNUFkzMjE2U1MoVnVWLndbaV0sIGZHRVRIQUxGKDEsIFZ2Vi53 W2ldKSkgKQorCisvKiBBZGQgYmFjayB0aGVzZS4uLiAqLworCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlpZXdoX2FjYywiVngzMis9dm1weWlld2goVnUzMixWdjMy KSIsIlZ4MzIudys9dm1weWllKFZ1MzIudyxWdjMyLmgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIFdv cmQgYnkgSGFsZndvcmQgTXVsdGlwbHkiLAorVnhWLndbaV0gPSBWeFYud1tpXSArIGZNUFkzMjE2 U1MoVnVWLndbaV0sIGZHRVRIQUxGKDAsIFZ2Vi53W2ldKSkgKQorCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlpZXd1aF9hY2MsIlZ4MzIrPXZtcHlpZXd1aChWdTMy LFZ2MzIpIiwiVngzMi53Kz12bXB5aWUoVnUzMi53LFZ2MzIudWgpIiwKKyJWZWN0b3IgYnkgVmVj dG9yIFdvcmQgYnkgSGFsZndvcmQgTXVsdGlwbHkiLAorVnhWLndbaV0gPSBWeFYud1tpXSArIGZN UFkzMjE2U1UoVnVWLndbaV0sIGZHRVRVSEFMRigwLCBWdlYud1tpXSkpICkKKworCisKKworCisK KworLyogVmVjdG9yIGJ5IFNjYWxhciAqLworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxF X1ZFQygxNix2bXB5dWIsIlZkZDMyPXZtcHl1YihWdTMyLFJ0MzIpIiwiVmRkMzIudWg9dm1weShW dTMyLnViLFJ0MzIudWIpIiwKKyJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAg IFZkZFYudlswXS51aFtpXSAgPSBmTVBZOFVVKGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VU VUJZVEUoKDIqaSswKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMV0udWhbaV0gID0gZk1QWThVVShm R0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwgZkdFVFVCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKK0lU RVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weXViX2FjYywiVnh4MzIrPXZt cHl1YihWdTMyLFJ0MzIpIiwiVnh4MzIudWgrPXZtcHkoVnUzMi51YixSdDMyLnViKSIsCisiVmVj dG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWeHhWLnZbMF0udWhbaV0gKz0gZk1Q WThVVShmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSwgZkdFVFVCWVRFKCgyKmkrMCklNCwgUnRWKSk7 CisgICAgVnh4Vi52WzFdLnVoW2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSks IGZHRVRVQllURSgoMippKzEpJTQsIFJ0VikpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9U X0RPVUJMRV9WRUMoMTYsdm1weWJ1cywiVmRkMzI9dm1weWJ1cyhWdTMyLFJ0MzIpIiwiVmRkMzIu aD12bXB5KFZ1MzIudWIsUnQzMi5iKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRz IiwKKyAgICBWZGRWLnZbMF0uaFtpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdVYudWhbaV0p LCBmR0VUQllURSgoMippKzApJTQsIFJ0VikpOworICAgIFZkZFYudlsxXS5oW2ldICA9IGZNUFk4 VVMoZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSksIGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWJ1c19hY2MsIlZ4eDMy Kz12bXB5YnVzKFZ1MzIsUnQzMikiLCJWeHgzMi5oKz12bXB5KFZ1MzIudWIsUnQzMi5iKSIsCisi VmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBm TVBZOFVTKGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMippKzApJTQsIFJ0Vikp OworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSks IGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf RE9VQkxFX1ZFQygxNix2bXBhYnVzLCJWZGQzMj12bXBhYnVzKFZ1dTMyLFJ0MzIpIiwiVmRkMzIu aD12bXBhKFZ1dTMyLnViLFJ0MzIuYikiLAorIlZlcnRpY2FsIEJ5dGUgTXVsdGlwbHkiLAorICAg IFZkZFYudlswXS5oW2ldID0gZk1QWThVUyhmR0VUVUJZVEUoMCwgVnV1Vi52WzBdLnVoW2ldKSwg ZkdFVEJZVEUoMCwgUnRWKSkgKyBmTVBZMTZTUyhmR0VUVUJZVEUoMCwgVnV1Vi52WzFdLnVoW2ld KSwgZkdFVEJZVEUoMSwgUnRWKSk7CisgICAgVmRkVi52WzFdLmhbaV0gPSBmTVBZOFVTKGZHRVRV QllURSgxLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllURSgyLCBSdFYpKSArIGZNUFkxNlNTKGZH RVRVQllURSgxLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUQllURSgzLCBSdFYpKSkKKworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXBhYnVzX2FjYywiVnh4MzIrPXZtcGFi dXMoVnV1MzIsUnQzMikiLCJWeHgzMi5oKz12bXBhKFZ1dTMyLnViLFJ0MzIuYikiLAorIlZlcnRp Y2FsIEJ5dGUgTXVsdGlwbHkiLAorICAgIFZ4eFYudlswXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVC WVRFKDAsIFZ1dVYudlswXS51aFtpXSksIGZHRVRCWVRFKDAsIFJ0VikpICsgZk1QWTE2U1MoZkdF VFVCWVRFKDAsIFZ1dVYudlsxXS51aFtpXSksIGZHRVRCWVRFKDEsIFJ0VikpOworICAgIFZ4eFYu dlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1dVYudlswXS51aFtpXSksIGZHRVRC WVRFKDIsIFJ0VikpICsgZk1QWTE2U1MoZkdFVFVCWVRFKDEsIFZ1dVYudlsxXS51aFtpXSksIGZH RVRCWVRFKDMsIFJ0VikpKQorCisvLyBWNjUKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9V QkxFX1ZFQ19OT1YxKDE2LHZtcGFidXUsIlZkZDMyPXZtcGFidXUoVnV1MzIsUnQzMikiLCJWZGQz Mi5oPXZtcGEoVnV1MzIudWIsUnQzMi51YikiLAorIlZlcnRpY2FsIEJ5dGUgTXVsdGlwbHkiLAor ICAgIFZkZFYudlswXS51aFtpXSA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1dVYudlswXS51aFtp XSksIGZHRVRVQllURSgwLCBSdFYpKSArIGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1dVYudlsxXS51 aFtpXSksIGZHRVRVQllURSgxLCBSdFYpKTsKKyAgICBWZGRWLnZbMV0udWhbaV0gPSBmTVBZOFVV KGZHRVRVQllURSgxLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUVUJZVEUoMiwgUnRWKSkgKyBmTVBZ OFVVKGZHRVRVQllURSgxLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUVUJZVEUoMywgUnRWKSkpCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUNfTk9WMSgxNix2bXBhYnV1X2FjYywi Vnh4MzIrPXZtcGFidXUoVnV1MzIsUnQzMikiLCJWeHgzMi5oKz12bXBhKFZ1dTMyLnViLFJ0MzIu dWIpIiwKKyJWZXJ0aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAgICBWeHhWLnZbMF0udWhbaV0gKz0g Zk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52WzBdLnVoW2ldKSwgZkdFVFVCWVRFKDAsIFJ0Vikp ICsgZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52WzFdLnVoW2ldKSwgZkdFVFVCWVRFKDEsIFJ0 VikpOworICAgIFZ4eFYudlsxXS51aFtpXSArPSBmTVBZOFVVKGZHRVRVQllURSgxLCBWdXVWLnZb MF0udWhbaV0pLCBmR0VUVUJZVEUoMiwgUnRWKSkgKyBmTVBZOFVVKGZHRVRVQllURSgxLCBWdXVW LnZbMV0udWhbaV0pLCBmR0VUVUJZVEUoMywgUnRWKSkpCisKKworCisKKy8qIEhhbGYgYnkgQnl0 ZSAqLworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXBhaGIsIlZkZDMy PXZtcGFoYihWdXUzMixSdDMyKSIsIlZkZDMyLnc9dm1wYShWdXUzMi5oLFJ0MzIuYikiLAorIlZl cnRpY2FsIEJ5dGUgTXVsdGlwbHkiLAorICAgIFZkZFYudlswXS53W2ldID0gZk1QWTE2U1MoZkdF VEhBTEYoMCwgVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDAsIFJ0VikpKSArIGZN UFkxNlNTKGZHRVRIQUxGKDAsIFZ1dVYudlsxXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgxLCBS dFYpKSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdXVWLnZb MF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMiwgUnRWKSkpICsgZk1QWTE2U1MoZkdFVEhBTEYo MSwgVnV1Vi52WzFdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDMsIFJ0VikpKSkKKworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXBhaGJfYWNjLCJWeHgzMis9dm1wYWhi KFZ1dTMyLFJ0MzIpIiwiVnh4MzIudys9dm1wYShWdXUzMi5oLFJ0MzIuYikiLAorIlZlcnRpY2Fs IEJ5dGUgTXVsdGlwbHkiLAorICAgIFZ4eFYudlswXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxG KDAsIFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgwLCBSdFYpKSkgKyBmTVBZMTZT UyhmR0VUSEFMRigwLCBWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMSwgUnRWKSkp OworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1dVYudlswXS53 W2ldKSwgZlNFOF8xNihmR0VUQllURSgyLCBSdFYpKSkgKyBmTVBZMTZTUyhmR0VUSEFMRigxLCBW dXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMywgUnRWKSkpKQorCisvKiBIYWxmIGJ5 IEJ5dGUgKi8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1wYXVoYiwi VmRkMzI9dm1wYXVoYihWdXUzMixSdDMyKSIsIlZkZDMyLnc9dm1wYShWdXUzMi51aCxSdDMyLmIp IiwKKyJWZXJ0aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZNUFkx NlVTKGZHRVRVSEFMRigwLCBWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMCwgUnRW KSkpICsgZk1QWTE2VVMoZkdFVFVIQUxGKDAsIFZ1dVYudlsxXS53W2ldKSwgZlNFOF8xNihmR0VU QllURSgxLCBSdFYpKSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBmTVBZMTZVUyhmR0VUVUhBTEYo MSwgVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDIsIFJ0VikpKSArIGZNUFkxNlVT KGZHRVRVSEFMRigxLCBWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMywgUnRWKSkp KQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcGF1aGJfYWNjLCJW eHgzMis9dm1wYXVoYihWdXUzMixSdDMyKSIsIlZ4eDMyLncrPXZtcGEoVnV1MzIudWgsUnQzMi5i KSIsCisiVmVydGljYWwgQnl0ZSBNdWx0aXBseSIsCisgICAgVnh4Vi52WzBdLndbaV0gKz0gZk1Q WTE2VVMoZkdFVFVIQUxGKDAsIFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgwLCBS dFYpKSkgKyBmTVBZMTZVUyhmR0VUVUhBTEYoMCwgVnV1Vi52WzFdLndbaV0pLCBmU0U4XzE2KGZH RVRCWVRFKDEsIFJ0VikpKTsKKyAgICBWeHhWLnZbMV0ud1tpXSArPSBmTVBZMTZVUyhmR0VUVUhB TEYoMSwgVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDIsIFJ0VikpKSArIGZNUFkx NlVTKGZHRVRVSEFMRigxLCBWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMywgUnRW KSkpKQorCisKKworCisKKworCisvKiBIYWxmIGJ5IEhhbGYgKi8KK0lURVJBVE9SX0lOU04yX01Q WV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWgsIlZkZDMyPXZtcHloKFZ1MzIsUnQzMikiLCJWZGQz Mi53PXZtcHkoVnUzMi5oLFJ0MzIuaCkiLAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3Jk cyIsCisgICAgVmRkVi52WzBdLndbaV0gPSAgZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0p LCBmR0VUSEFMRigwLCBSdFYpKTsKKyAgICBWZGRWLnZbMV0ud1tpXSA9ICBmTVBZMTZTUyhmR0VU SEFMRigxLCBWdVYud1tpXSksIGZHRVRIQUxGKDEsIFJ0VikpKQorCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVF9ET1VCTEVfVkVDX05PVjEoMzIsdm1weWhfYWNjLCJWeHgzMis9dm1weWgoVnUzMixS dDMyKSIsIlZ4eDMyLncrPXZtcHkoVnUzMi5oLFJ0MzIuaCkiLAorIlZlY3RvciBldmVuIGhhbGZ3 b3JkcyB3aXRoIHNjYWxhciBsb3dlciBoYWxmd29yZCBtdWx0aXBseSB3aXRoIHNoaWZ0IGFuZCBz YXQzMiIsCisgICAgVnh4Vi52WzBdLndbaV0gPSAgZkNBU1Q4cyhWeHhWLnZbMF0ud1tpXSkgKyBm TVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSksIGZHRVRIQUxGKDAsIFJ0VikpOworICAgIFZ4 eFYudlsxXS53W2ldID0gIGZDQVNUOHMoVnh4Vi52WzFdLndbaV0pICsgZk1QWTE2U1MoZkdFVEhB TEYoMSwgVnVWLndbaV0pLCBmR0VUSEFMRigxLCBSdFYpKSkKKworCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHloc2F0X2FjYywiVnh4MzIrPXZtcHloKFZ1MzIsUnQz Mik6c2F0IiwiVnh4MzIudys9dm1weShWdTMyLmgsUnQzMi5oKTpzYXQiLAorIlZlY3RvciBldmVu IGhhbGZ3b3JkcyB3aXRoIHNjYWxhciBsb3dlciBoYWxmd29yZCBtdWx0aXBseSB3aXRoIHNoaWZ0 IGFuZCBzYXQzMiIsCisgICAgVnh4Vi52WzBdLndbaV0gPSAgZlZTQVRXKGZDQVNUOHMoVnh4Vi52 WzBdLndbaV0pICsgZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLCBmR0VUSEFMRigwLCBS dFYpKSk7CisgICAgVnh4Vi52WzFdLndbaV0gPSAgZlZTQVRXKGZDQVNUOHMoVnh4Vi52WzFdLndb aV0pICsgZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0pLCBmR0VUSEFMRigxLCBSdFYpKSkp CisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHloc3MsIlZk MzI9dm1weWgoVnUzMixSdDMyKTo8PDE6c2F0IiwiVmQzMi5oPXZtcHkoVnUzMi5oLFJ0MzIuaCk6 PDwxOnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIGJ5IGhhbGZ3b3JkIG11bHRpcGx5LCBzaGlmdCBi eSAxLCBhbmQgdGFrZSB1cHBlciAxNiBtc2IiLAorICAgICAgICAgIGZTRVRIQUxGKDAsVmRWLndb aV0sZlZTQVRIKGZHRVRIQUxGKDEsZlZTQVQoKGZNUFkxNlNTKGZHRVRIQUxGKDAsVnVWLndbaV0p LGZHRVRIQUxGKDAsUnRWKSk8PDEpKSkpKTsKKyAgICAgICAgICBmU0VUSEFMRigxLFZkVi53W2ld LGZWU0FUSChmR0VUSEFMRigxLGZWU0FUKChmTVBZMTZTUyhmR0VUSEFMRigxLFZ1Vi53W2ldKSxm R0VUSEFMRigxLFJ0VikpPDwxKSkpKSk7CispCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RP VUJMRV9WRUMoMzIsdm1weWhzcnMsIlZkMzI9dm1weWgoVnUzMixSdDMyKTo8PDE6cm5kOnNhdCIs IlZkMzIuaD12bXB5KFZ1MzIuaCxSdDMyLmgpOjw8MTpybmQ6c2F0IiwKKyJWZWN0b3IgaGFsZndv cmQgd2l0aCBzY2FsYXIgaGFsZndvcmQgbXVsdGlwbHkgd2l0aCByb3VuZCwgc2hpZnQsIGFuZCBz YXQxNiIsCisgICAgICAgZlNFVEhBTEYoMCxWZFYud1tpXSxmVlNBVEgoZkdFVEhBTEYoMSxmVlNB VChmUk9VTkQoKGZNUFkxNlNTKGZHRVRIQUxGKDAsVnVWLndbaV0pLGZHRVRIQUxGKDAsUnRWKSk8 PDEpKSkpKSk7CisgICAgICAgZlNFVEhBTEYoMSxWZFYud1tpXSxmVlNBVEgoZkdFVEhBTEYoMSxm VlNBVChmUk9VTkQoKGZNUFkxNlNTKGZHRVRIQUxGKDEsVnVWLndbaV0pLGZHRVRIQUxGKDEsUnRW KSk8PDEpKSkpKSk7CispCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygz Mix2bXB5dWgsIlZkZDMyPXZtcHl1aChWdTMyLFJ0MzIpIiwiVmRkMzIudXc9dm1weShWdTMyLnVo LFJ0MzIudWgpIiwKKyJWZWN0b3IgZXZlbiBoYWxmd29yZCB1bnNpZ25lZCBtdWx0aXBseSBieSBz Y2FsYXIiLAorICAgIFZkZFYudlswXS51d1tpXSA9IGZNUFkxNlVVKGZHRVRVSEFMRigwLCBWdVYu dXdbaV0pLGZHRVRVSEFMRigwLFJ0VikpOworICAgIFZkZFYudlsxXS51d1tpXSA9IGZNUFkxNlVV KGZHRVRVSEFMRigxLCBWdVYudXdbaV0pLGZHRVRVSEFMRigxLFJ0VikpKQorCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weXVoX2FjYywiVnh4MzIrPXZtcHl1aChW dTMyLFJ0MzIpIiwiVnh4MzIudXcrPXZtcHkoVnUzMi51aCxSdDMyLnVoKSIsCisiVmVjdG9yIGV2 ZW4gaGFsZndvcmQgdW5zaWduZWQgbXVsdGlwbHkgYnkgc2NhbGFyIiwKKyAgICBWeHhWLnZbMF0u dXdbaV0gKz0gZk1QWTE2VVUoZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSksZkdFVFVIQUxGKDAsUnRW KSk7CisgICAgVnh4Vi52WzFdLnV3W2ldICs9IGZNUFkxNlVVKGZHRVRVSEFMRigxLCBWdVYudXdb aV0pLGZHRVRVSEFMRigxLFJ0VikpKQorCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyogIEhBTEYgQlkgQllURQorKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgxNix2 bXB5aWhiLCJWZDMyPXZtcHlpaGIoVnUzMixSdDMyKSIsIlZkMzIuaD12bXB5aShWdTMyLmgsUnQz Mi5iKSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBtdWx0aXBseSwga2VlcCBsb3dlciByZXN1bHQi LAorVmRWLmhbaV0gID0gZk1QWTE2U1MoVnVWLmhbaV0sIGZHRVRCWVRFKGkgJSA0LCBSdFYpICkp CisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDE2LHZtcHlpaGJfYWNjLCJWeDMyKz12bXB5aWhi KFZ1MzIsUnQzMikiLCJWeDMyLmgrPXZtcHlpKFZ1MzIuaCxSdDMyLmIpIiwKKyJWZWN0b3Igd29y ZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxvd2VyIHJlc3VsdCIsCitWeFYuaFtpXSArPSBmTVBZ MTZTUyhWdVYuaFtpXSwgZkdFVEJZVEUoaSAlIDQsIFJ0VikgKSkKKworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIFdPUkQgQlkgQllURQorKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVCgzMix2bXB5aXdiLCJWZDMyPXZtcHlpd2IoVnUzMixSdDMyKSIsIlZkMzIudz12bXB5 aShWdTMyLncsUnQzMi5iKSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBtdWx0aXBseSwga2VlcCBs b3dlciByZXN1bHQiLAorVmRWLndbaV0gID0gZk1QWTMyU1MoVnVWLndbaV0sIGZHRVRCWVRFKGkg JSA0LCBSdFYpICkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZtcHlpd2JfYWNjLCJW eDMyKz12bXB5aXdiKFZ1MzIsUnQzMikiLCJWeDMyLncrPXZtcHlpKFZ1MzIudyxSdDMyLmIpIiwK KyJWZWN0b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxvd2VyIHJlc3VsdCIsCitWeFYu d1tpXSArPSBmTVBZMzJTUyhWdVYud1tpXSwgZkdFVEJZVEUoaSAlIDQsIFJ0VikgKSkKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1QoMzIsdm1weWl3dWIsIlZkMzI9dm1weWl3dWIoVnUzMixSdDMy KSIsIlZkMzIudz12bXB5aShWdTMyLncsUnQzMi51YikiLAorIlZlY3RvciB3b3JkIGJ5IGJ5dGUg bXVsdGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwKK1ZkVi53W2ldICA9IGZNUFkzMlNTKFZ1Vi53 W2ldLCBmR0VUVUJZVEUoaSAlIDQsIFJ0VikgKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Qo MzIsdm1weWl3dWJfYWNjLCJWeDMyKz12bXB5aXd1YihWdTMyLFJ0MzIpIiwiVngzMi53Kz12bXB5 aShWdTMyLncsUnQzMi51YikiLAorIlZlY3RvciB3b3JkIGJ5IGJ5dGUgbXVsdGlwbHksIGtlZXAg bG93ZXIgcmVzdWx0IiwKK1Z4Vi53W2ldICs9IGZNUFkzMlNTKFZ1Vi53W2ldLCBmR0VUVUJZVEUo aSAlIDQsIFJ0VikgKSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyogIFdPUkQgQlkgSEFMRgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZt cHlpd2gsIlZkMzI9dm1weWl3aChWdTMyLFJ0MzIpIiwiVmQzMi53PXZtcHlpKFZ1MzIudyxSdDMy LmgpIiwKKyJWZWN0b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxvd2VyIHJlc3VsdCIs CitWZFYud1tpXSAgPSBmTVBZMzJTUyhWdVYud1tpXSwgZkdFVEhBTEYoaSAlIDIsIFJ0VikpKQor CitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlpd2hfYWNjLCJWeDMy Kz12bXB5aXdoKFZ1MzIsUnQzMikiLCJWeDMyLncrPXZtcHlpKFZ1MzIudyxSdDMyLmgpIiwKKyJW ZWN0b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxvd2VyIHJlc3VsdCIsCitWeFYud1tp XSArPSBmTVBZMzJTUyhWdVYud1tpXSwgZkdFVEhBTEYoaSAlIDIsIFJ0VikpKQorCisKKworCisK KworCisKKworCisKKworCisKKworCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIE1NVkVD VE9SIExPR0lDQUwgT1BFUkFUSU9OUworICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworSVRFUkFUT1JfSU5T Tl9BTllfU0xPVCgxNix2YW5kLCJWZDMyPXZhbmQoVnUzMixWdjMyKSIsICJWZWN0b3IgTG9naWNh bCBBbmQiLCBWZFYudWhbaV0gPSBWdVYudWhbaV0gJiBWdlYuaFtpXSkKK0lURVJBVE9SX0lOU05f QU5ZX1NMT1QoMTYsdm9yLCAiVmQzMj12b3IoVnUzMixWdjMyKSIsICAiVmVjdG9yIExvZ2ljYWwg T3IiLCBWZFYudWhbaV0gPSBWdVYudWhbaV0gfCBWdlYuaFtpXSkKK0lURVJBVE9SX0lOU05fQU5Z X1NMT1QoMTYsdnhvciwiVmQzMj12eG9yKFZ1MzIsVnYzMikiLCAiVmVjdG9yIExvZ2ljYWwgWE9S IiwgICAgVmRWLnVoW2ldID0gVnVWLnVoW2ldIF4gVnZWLmhbaV0pCitJVEVSQVRPUl9JTlNOX0FO WV9TTE9UKDE2LHZub3QsIlZkMzI9dm5vdChWdTMyKSIsICAgICAiVmVjdG9yIExvZ2ljYWwgTk9U IiwgVmRWLnVoW2ldID0gflZ1Vi51aFtpXSkKKworCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9MQVRFKDgsIHZhbmRxcnQsCisiVmQzMi51Yj12YW5kKFF1NC51YixSdDMyLnViKSIsICJW ZDMyPXZhbmQoUXU0LFJ0MzIpIiwgIkluc2VydCBQcmVkaWNhdGUgaW50byBWZWN0b3IiLAorICAg IFZkVi51YltpXSA9IGZHRVRRQklUKFF1VixpKSA/IGZHRVRVQllURShpICUgNCwgUnRWKSA6IDAp CisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0xBVEUoOCwgdmFuZHFydF9hY2MsCisiVngzMi51 Ynw9dmFuZChRdTQudWIsUnQzMi51YikiLCAiVngzMnw9dmFuZChRdTQsUnQzMikiLCAgIkluc2Vy dCBQcmVkaWNhdGUgaW50byBWZWN0b3IiLAorICAgIFZ4Vi51YltpXSB8PSAoZkdFVFFCSVQoUXVW LGkpKSA/IGZHRVRVQllURShpICUgNCwgUnRWKSA6IDApCisKK0lURVJBVE9SX0lOU04yX01QWV9T TE9UX0xBVEUoOCwgdmFuZG5xcnQsCisiVmQzMi51Yj12YW5kKCFRdTQudWIsUnQzMi51YikiLCAi VmQzMj12YW5kKCFRdTQsUnQzMikiLCAiSW5zZXJ0IFByZWRpY2F0ZSBpbnRvIFZlY3RvciIsCisg ICAgVmRWLnViW2ldID0gIWZHRVRRQklUKFF1VixpKSA/IGZHRVRVQllURShpICUgNCwgUnRWKSA6 IDApCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0xBVEUoOCwgdmFuZG5xcnRfYWNjLAorIlZ4 MzIudWJ8PXZhbmQoIVF1NC51YixSdDMyLnViKSIsICJWeDMyfD12YW5kKCFRdTQsUnQzMikiLCAg Ikluc2VydCBQcmVkaWNhdGUgaW50byBWZWN0b3IiLAorICAgIFZ4Vi51YltpXSB8PSAhKGZHRVRR QklUKFF1VixpKSkgPyBmR0VUVUJZVEUoaSAlIDQsIFJ0VikgOiAwKQorCisKK0lURVJBVE9SX0lO U04yX01QWV9TTE9UX0xBVEUoOCwgdmFuZHZydCwKKyJRZDQudWI9dmFuZChWdTMyLnViLFJ0MzIu dWIpIiwgIlFkND12YW5kKFZ1MzIsUnQzMikiLCAiSW5zZXJ0IGludG8gUHJlZGljYXRlIiwKKyAg ICBmU0VUUUJJVChRZFYsaSwoKFZ1Vi51YltpXSAmIGZHRVRVQllURShpICUgNCwgUnRWKSkgIT0g MCkgPyAxIDogMCkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0xBVEUoOCwgdmFuZHZydF9h Y2MsCisiUXg0LnVifD12YW5kKFZ1MzIudWIsUnQzMi51YikiLCAiUXg0fD12YW5kKFZ1MzIsUnQz MikiLCAiSW5zZXJ0IGludG8gUHJlZGljYXRlICIsCisgICAgZlNFVFFCSVQoUXhWLGksZkdFVFFC SVQoUXhWLGkpfCgoKFZ1Vi51YltpXSAmIGZHRVRVQllURShpICUgNCwgUnRWKSkgIT0gMCkgPyAx IDogMCkpKQorCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDgsdmFuZHZxdiwiVmQzMj12YW5kKFF2 NCxWdTMyKSIsIk1hc2sgb2ZmIGJ5dGVzIiwKK1ZkVi5iW2ldID0gZkdFVFFCSVQoUXZWLGkpID8g VnVWLmJbaV0gOiAwKQorSVRFUkFUT1JfSU5TTl9BTllfU0xPVCg4LHZhbmR2bnF2LCJWZDMyPXZh bmQoIVF2NCxWdTMyKSIsIk1hc2sgb2ZmIGJ5dGVzIiwKK1ZkVi5iW2ldID0gIWZHRVRRQklUKFF2 VixpKSA/IFZ1Vi5iW2ldIDogMCkKKworCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICogQ29tcGFyZSBWZWN0b3Igd2l0aCBWZWN0b3IKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjZGVm aW5lIFZDTVAoREVTVCwgQVNSQywgQVNSQ09QLCBDTVAsIE4sIFNSQywgTUFTSywgV0lEVEgpICAg ICAgICBcCit7IFwKKyAgICAgICBmb3IoZkhJREUoaW50KSBpID0gMDsgaSA8IGZWQllURVMoKTsg aSArPSBXSURUSCkgeyBcCisJCWZTRVRRQklUUyhERVNULFdJRFRILE1BU0ssaSxBU1JDIEFTUkNP UCAoKFZ1Vi5TUkNbaS9XSURUSF0gQ01QIFZ2Vi5TUkNbaS9XSURUSF0pID8gTUFTSyA6IDApKTsg XAorICAgIH0gXAorICAgICAgIH0KKworI2RlZmluZSBNTVZFQ19DTVBFUU1BUChULFQyLFQzKSBc CitERUZfQ1ZJX01BUFBJTkcoVjZfTUFQX2VxIyNULCAgICAgICJRZDQ9dmNtcC5lcShWdTMyLiIg VDIgIixWdjMyLiIgVDIgIikiLCAiUWQ0PXZjbXAuZXEoVnUzMi4iIFQzICIsVnYzMi4iIFQzICIp IikgXAorREVGX0NWSV9NQVBQSU5HKFY2X01BUF9lcSMjVCMjX2FuZCwiUXg0Jj12Y21wLmVxKFZ1 MzIuIiBUMiAiLFZ2MzIuIiBUMiAiKSIsICJReDQmPXZjbXAuZXEoVnUzMi4iIFQzICIsVnYzMi4i IFQzICIpIikgXAorREVGX0NWSV9NQVBQSU5HKFY2X01BUF9lcSMjVCMjX2lvciwiUXg0fD12Y21w LmVxKFZ1MzIuIiBUMiAiLFZ2MzIuIiBUMiAiKSIsICJReDR8PXZjbXAuZXEoVnUzMi4iIFQzICIs VnYzMi4iIFQzICIpIikgXAorREVGX0NWSV9NQVBQSU5HKFY2X01BUF9lcSMjVCMjX3hvciwiUXg0 Xj12Y21wLmVxKFZ1MzIuIiBUMiAiLFZ2MzIuIiBUMiAiKSIsICJReDRePXZjbXAuZXEoVnUzMi4i IFQzICIsVnYzMi4iIFQzICIpIikKKworI2RlZmluZSBNTVZFQ19DTVBHVChUWVBFLFRZUEUyLFRZ UEUzLERFU0NSLE4sTUFTSyxXSURUSCxTUkMpIFwKK0VYVElOU04oVjZfdmd0IyNUWVBFLCAgICAg ICAiUWQ0PXZjbXAuZ3QoVnUzMi4iIFRZUEUyICIsVnYzMi4iIFRZUEUyICIpIiwgIEFUVFJJQlMo QV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEsQV9OT1RFX0FOWV9SRVNPVVJDRSksIERFU0NSIiBn cmVhdGVyIHRoYW4iLCBcCisJVkNNUChRZFYsICwgLCA+LCBOLCBTUkMsIE1BU0ssIFdJRFRIKSkg XAorRVhUSU5TTihWNl92Z3QjI1RZUEUjI19hbmQsICJReDQmPXZjbXAuZ3QoVnUzMi4iIFRZUEUy ICIsVnYzMi4iIFRZUEUyICIpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSxB X05PVEVfQU5ZX1JFU09VUkNFKSwgREVTQ1IiIGdyZWF0ZXIgdGhhbiB3aXRoIHByZWRpY2F0ZS1h bmQiLCBcCisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgsTUFTSyxpKSwgJiwgPiwgTiwg U1JDLCBNQVNLLCBXSURUSCkpIFwKK0VYVElOU04oVjZfdmd0IyNUWVBFIyNfb3IsICAiUXg0fD12 Y21wLmd0KFZ1MzIuIiBUWVBFMiAiLFZ2MzIuIiBUWVBFMiAiKSIsIEFUVFJJQlMoQV9FWFRFTlNJ T04sQV9DVkksQV9DVklfVkEsQV9OT1RFX0FOWV9SRVNPVVJDRSksIERFU0NSIiBncmVhdGVyIHRo YW4gd2l0aCBwcmVkaWNhdGUtb3IiLCBcCisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgs TUFTSyxpKSwgfCwgPiwgTiwgU1JDLCBNQVNLLCBXSURUSCkpIFwKK0VYVElOU04oVjZfdmd0IyNU WVBFIyNfeG9yLCAiUXg0Xj12Y21wLmd0KFZ1MzIuIiBUWVBFMiAiLFZ2MzIuIiBUWVBFMiAiKSIs IEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEsQV9OT1RFX0FOWV9SRVNPVVJDRSks IERFU0NSIiBncmVhdGVyIHRoYW4gd2l0aCBwcmVkaWNhdGUteG9yIiwgXAorCVZDTVAoUXhWLCBm R0VUUUJJVFMoUXhWLFdJRFRILE1BU0ssaSksIF4sID4sIE4sIFNSQywgTUFTSywgV0lEVEgpKQor CisjZGVmaW5lIE1NVkVDX0NNUChUWVBFLFRZUEUyLFRZUEUzLERFU0NSLE4sTUFTSywgV0lEVEgs IFNSQylcCitNTVZFQ19DTVBHVChUWVBFLFRZUEUyLFRZUEUzLERFU0NSLE4sTUFTSyxXSURUSCxT UkMpIFwKK0VYVElOU04oVjZfdmVxIyNUWVBFLCAgICAgICAiUWQ0PXZjbXAuZXEoVnUzMi4iIFRZ UEUyICIsVnYzMi4iIFRZUEUyICIpIiwgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklf VkEsQV9OT1RFX0FOWV9SRVNPVVJDRSksIERFU0NSIiBlcXVhbCB0byIsIFwKKwlWQ01QKFFkViwg LCAsID09LCBOLCBTUkMsIE1BU0ssIFdJRFRIKSkgXAorRVhUSU5TTihWNl92ZXEjI1RZUEUjI19h bmQsICJReDQmPXZjbXAuZXEoVnUzMi4iIFRZUEUyICIsVnYzMi4iIFRZUEUyICIpIiwgQVRUUklC UyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSxBX05PVEVfQU5ZX1JFU09VUkNFKSwgREVTQ1Ii IGVxdWFsdG8gd2l0aCBwcmVkaWNhdGUtYW5kIiwgXAorCVZDTVAoUXhWLCBmR0VUUUJJVFMoUXhW LFdJRFRILE1BU0ssaSksICYsID09LCBOLCBTUkMsIE1BU0ssIFdJRFRIKSkgXAorRVhUSU5TTihW Nl92ZXEjI1RZUEUjI19vciwgICJReDR8PXZjbXAuZXEoVnUzMi4iIFRZUEUyICIsVnYzMi4iIFRZ UEUyICIpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSxBX05PVEVfQU5ZX1JF U09VUkNFKSwgREVTQ1IiIGVxdWFsdG8gd2l0aCBwcmVkaWNhdGUtb3IiLCBcCisJVkNNUChReFYs IGZHRVRRQklUUyhReFYsV0lEVEgsTUFTSyxpKSwgfCwgPT0sIE4sIFNSQywgTUFTSywgV0lEVEgp KSBcCitFWFRJTlNOKFY2X3ZlcSMjVFlQRSMjX3hvciwgIlF4NF49dmNtcC5lcShWdTMyLiIgVFlQ RTIgIixWdjMyLiIgVFlQRTIgIikiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZB LEFfTk9URV9BTllfUkVTT1VSQ0UpLCBERVNDUiIgZXF1YWx0byB3aXRoIHByZWRpY2F0ZS14b3Ii LCBcCisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgsTUFTSyxpKSwgXiwgPT0sIE4sIFNS QywgTUFTSywgV0lEVEgpKQorCisKK01NVkVDX0NNUCh3LCJ3IiwiIiwiVmVjdG9yIFdvcmQgQ29t cGFyZSAiLCBmVkVMRU0oMzIpLCAweEYsIDQsIHcpCitNTVZFQ19DTVAoaCwiaCIsIiIsIlZlY3Rv ciBIYWxmIENvbXBhcmUgIiwgZlZFTEVNKDE2KSwgMHgzLCAyLCBoKQorTU1WRUNfQ01QKGIsImIi LCIiLCJWZWN0b3IgSGFsZiBDb21wYXJlICIsIGZWRUxFTSg4KSwgIDB4MSwgMSwgYikKK01NVkVD X0NNUEdUKHV3LCJ1dyIsIiIsIlZlY3RvciBVbnNpZ25lZCBIYWxmIENvbXBhcmUgIiwgZlZFTEVN KDMyKSwgMHhGLCA0LHV3KQorTU1WRUNfQ01QR1QodWgsInVoIiwiIiwiVmVjdG9yIFVuc2lnbmVk IEhhbGYgQ29tcGFyZSAiLCBmVkVMRU0oMTYpLCAweDMsIDIsdWgpCitNTVZFQ19DTVBHVCh1Yiwi dWIiLCIiLCJWZWN0b3IgVW5zaWduZWQgQnl0ZSBDb21wYXJlICIsIGZWRUxFTSg4KSwgIDB4MSwg MSx1YikKKworTU1WRUNfQ01QRVFNQVAodXcsInV3IiwidyIpCitNTVZFQ19DTVBFUU1BUCh1aCwi dWgiLCJoIikKK01NVkVDX0NNUEVRTUFQKHViLCJ1YiIsImIiKQorCisKKworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBQcmVkaWNhdGUgT3Bl cmF0aW9ucworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCitFWFRJTlNOKFY2X3ByZWRfc2NhbGFyMiwgIlFkND12c2V0cShSdDMyKSIsICAgICAg ICAgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUCxBX05PVEVfUEVSTVVURV9SRVNP VVJDRSksICAgIlNldCBWZWN0b3IgUHJlZGljYXRlICIsCit7CisgICAgZkhJREUoaW50IGk7KQor ICAgIGZvcihpID0gMDsgaSA8IGZWQllURVMoKTsgaSsrKSBmU0VUUUJJVChRZFYsaSwoaSA8IChS dFYgJiAoZlZCWVRFUygpLTEpKSkgPyAxIDogMCk7Cit9KQorCitFWFRJTlNOKFY2X3ByZWRfc2Nh bGFyMnYyLCAiUWQ0PXZzZXRxMihSdDMyKSIsICAgICAgICAgQVRUUklCUyhBX0VYVEVOU0lPTixB X0NWSSxBX0NWSV9WUCxBX05PVEVfUEVSTVVURV9SRVNPVVJDRSksICAgIlNldCBWZWN0b3IgUHJl ZGljYXRlICIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZvcihpID0gMDsgaSA8IGZWQllU RVMoKTsgaSsrKSBmU0VUUUJJVChRZFYsaSwoaSA8PSAoKFJ0Vi0xKSAmIChmVkJZVEVTKCktMSkp KSA/IDEgOiAwKTsKK30pCisKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgs IHNodWZmZXF3LCAiUWQ0Lmg9dnNodWZmZShRczQudyxRdDQudykiLCJTaHJpbmsgUHJlZGljYXRl IiwgZlNFVFFCSVQoUWRWLGksIChpICYgMikgPyBmR0VUUUJJVChRc1YsaS0yKSA6IGZHRVRRQklU KFF0VixpKSApICk7CitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX0RPVUJMRV9WRUMoOCwgc2h1ZmZl cWgsICJRZDQuYj12c2h1ZmZlKFFzNC5oLFF0NC5oKSIsIlNocmluayBQcmVkaWNhdGUiLCBmU0VU UUJJVChRZFYsaSwgKGkgJiAxKSA/IGZHRVRRQklUKFFzVixpLTEpIDogZkdFVFFCSVQoUXRWLGkp ICkgKTsKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyg4LCBwcmVkX29yLCAiUWQ0 PW9yKFFzNCxRdDQpIiwiVmVjdG9yIFByZWRpY2F0ZSBPciIsIGZTRVRRQklUKFFkVixpLGZHRVRR QklUKFFzVixpKSB8fCBmR0VUUUJJVChRdFYsaSkgKSApOworSVRFUkFUT1JfSU5TTl9BTllfU0xP VF9ET1VCTEVfVkVDKDgsIHByZWRfYW5kLCAiUWQ0PWFuZChRczQsUXQ0KSIsIlZlY3RvciBQcmVk aWNhdGUgQW5kIiwgZlNFVFFCSVQoUWRWLGksZkdFVFFCSVQoUXNWLGkpICYmIGZHRVRRQklUKFF0 VixpKSApICk7CitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UX0RPVUJMRV9WRUMoOCwgcHJlZF94b3Is ICJRZDQ9eG9yKFFzNCxRdDQpIiwiVmVjdG9yIFByZWRpY2F0ZSBYb3IiLCBmU0VUUUJJVChRZFYs aSxmR0VUUUJJVChRc1YsaSkgXiBmR0VUUUJJVChRdFYsaSkgKSApOworSVRFUkFUT1JfSU5TTl9B TllfU0xPVF9ET1VCTEVfVkVDKDgsIHByZWRfb3JfbiwgIlFkND1vcihRczQsIVF0NCkiLCJWZWN0 b3IgUHJlZGljYXRlIE9yIHdpdGggbm90IiwgZlNFVFFCSVQoUWRWLGksZkdFVFFCSVQoUXNWLGkp IHx8ICFmR0VUUUJJVChRdFYsaSkgKSApOworSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVf VkVDKDgsIHByZWRfYW5kX24sICJRZDQ9YW5kKFFzNCwhUXQ0KSIsIlZlY3RvciBQcmVkaWNhdGUg QW5kICB3aXRoIG5vdCIsIGZTRVRRQklUKFFkVixpLGZHRVRRQklUKFFzVixpKSAmJiAhZkdFVFFC SVQoUXRWLGkpICkgKTsKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoOCwgcHJlZF9ub3QsICJRZDQ9 bm90KFFzNCkiLCJWZWN0b3IgUHJlZGljYXRlIE5vdCIsIGZTRVRRQklUKFFkVixpLCFmR0VUUUJJ VChRc1YsaSkgKSApOworCisKKworRVhUSU5TTihWNl92Y21vdiwgICJpZiAoUHM0KSBWZDMyPVZ1 MzIiLCAgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSxBX05PVEVfQU5ZX1JFU09V UkNFKSwgICAiQ29uZGl0aW9uYWwgTW92IiwKK3sKK2lmIChmTFNCT0xEKFBzVikpCXsKKwlmSElE RShpbnQgaTspCisJZlZGT1JFQUNIKDgsIGkpIHsKKwkJVmRWLnViW2ldID0gVnVWLnViW2ldOwor CX0KKwl9IGVsc2Uge0NBTkNFTDt9Cit9KQorCitFWFRJTlNOKFY2X3ZuY21vdiwgICJpZiAoIVBz NCkgVmQzMj1WdTMyIiwgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEsQV9OT1RF X0FOWV9SRVNPVVJDRSksICAgIkNvbmRpdGlvbmFsIE1vdiIsCit7CitpZiAoZkxTQk9MRE5PVChQ c1YpKQl7CisJZkhJREUoaW50IGk7KQorCWZWRk9SRUFDSCg4LCBpKSB7CisJCVZkVi51YltpXSA9 IFZ1Vi51YltpXTsKKwl9CisJfSBlbHNlIHtDQU5DRUw7fQorfSkKKworRVhUSU5TTihWNl92Y2Nv bWJpbmUsICAiaWYgKFBzNCkgVmRkMzI9dmNvbWJpbmUoVnUzMixWdjMyKSIsCUFUVFJJQlMoQV9F WFRFTlNJT04sQV9DVkksQV9DVklfVkFfRFYsQV9OT1RFX0FOWTJfUkVTT1VSQ0UpLCAgICJDb25k aXRpb25hbCBDb21iaW5lIiwKK3sKK2lmIChmTFNCT0xEKFBzVikpCXsKKwlmSElERShpbnQgaTsp CisJZlZGT1JFQUNIKDgsIGkpIHsKKwkJVmRkVi52WzBdLnViW2ldID0gVnZWLnViW2ldOworCQlW ZGRWLnZbMV0udWJbaV0gPSBWdVYudWJbaV07CisJfQorCX0gZWxzZSB7Q0FOQ0VMO30KK30pCisK K0VYVElOU04oVjZfdm5jY29tYmluZSwgICJpZiAoIVBzNCkgVmRkMzI9dmNvbWJpbmUoVnUzMixW djMyKSIsCUFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkFfRFYsQV9OT1RFX0FOWTJf UkVTT1VSQ0UpLCAgICJDb25kaXRpb25hbCBDb21iaW5lIiwKK3sKK2lmIChmTFNCT0xETk9UKFBz VikpCXsKKwlmSElERShpbnQgaTspCisJZlZGT1JFQUNIKDgsIGkpIHsKKwkJVmRkVi52WzBdLnVi W2ldID0gVnZWLnViW2ldOworCQlWZGRWLnZbMV0udWJbaV0gPSBWdVYudWJbaV07CisJfQorCX0g ZWxzZSB7Q0FOQ0VMO30KK30pCisKKworCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDgsdm11eCwi VmQzMj12bXV4KFF0NCxWdTMyLFZ2MzIpIiwKKyJWZWN0b3IgU2VsZWN0IEVsZW1lbnQgOC1iaXQi LAorICAgIFZkVi51YltpXSA9IGZHRVRRQklUKFF0VixpKSA/IFZ1Vi51YltpXSA6IFZ2Vi51Yltp XSkKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsdnN3YXAsIlZkZDMyPXZz d2FwKFF0NCxWdTMyLFZ2MzIpIiwKKyJWZWN0b3IgU3dhcCBFbGVtZW50IDgtYml0IiwKKyAgICBW ZGRWLnZbMF0udWJbaV0gPSAgZkdFVFFCSVQoUXRWLGkpID8gVnVWLnViW2ldIDogVnZWLnViW2ld OworCVZkZFYudlsxXS51YltpXSA9ICFmR0VUUUJJVChRdFYsaSkgPyBWdVYudWJbaV0gOiBWdlYu dWJbaV0pCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIE1NVkVDVE9SIFNPUlRJTkcK KyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgTU1WRUNfU09SVChUWVBFLFRZUEUy LERFU0NSLEVMRU1FTlRTSVpFLFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChFTEVNRU5U U0laRSx2bWF4IyNUWVBFLCAiVmQzMj12bWF4IiBUWVBFMiAiKFZ1MzIsVnYzMikiLCAiVmQzMi4i I1NSQyI9dm1heChWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAiVmVjdG9yICIgREVTQ1IgIiBt YXgiLCBWZFYuU1JDW2ldID0gKFZ1Vi5TUkNbaV0gPiBWdlYuU1JDW2ldKSA/IFZ1Vi5TUkNbaV0g OiAgVnZWLlNSQ1tpXSkgIFwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKEVMRU1FTlRTSVpFLHZt aW4jI1RZUEUsICJWZDMyPXZtaW4iIFRZUEUyICIoVnUzMixWdjMyKSIsICJWZDMyLiIjU1JDIj12 bWluKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICJWZWN0b3IgIiBERVNDUiAiIG1pbiIsIFZk Vi5TUkNbaV0gPSAoVnVWLlNSQ1tpXSA8IFZ2Vi5TUkNbaV0pID8gVnVWLlNSQ1tpXSA6ICBWdlYu U1JDW2ldKQorCitNTVZFQ19TT1JUKGIsImIiLCAic2lnbmVkIGJ5dGUiLCAgICA4LCAgYik7CitN TVZFQ19TT1JUKHViLCJ1YiIsICJ1bnNpZ25lZCBieXRlIiwgICAgOCwgIHViKTsKK01NVkVDX1NP UlQodWgsInVoIiwgInVuc2lnbmVkIGhhbGZ3b3JkIiwxNiwgdWgpOworTU1WRUNfU09SVChoLCAg ICJoIiwgICAgImhhbGZ3b3JkIiwgICAgICAgICAxNiwgaCk7CitNTVZFQ19TT1JUKHcsICAgInci LCAgICAid29yZCIsICAgICAgICAgICAgIDMyLCB3KTsKKworCisKKworCisKKworCisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisqIFNIVUZGTEVTCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgxNix2c2F0 aHViLCJWZDMyPXZzYXRodWIoVnUzMixWdjMyKSIsIlZkMzIudWI9dnNhdChWdTMyLmgsVnYzMi5o KSIsCisiU2F0dXJhdGUgYW5kIHBhY2sgMzIgaGFsZndvcmRzIHRvIDMyIHVuc2lnbmVkIGJ5dGVz LCBhbmQgaW50ZXJsZWF2ZSB0aGVtIiwKKyAgICBmU0VUQllURSgwLCBWZFYudWhbaV0sIGZWU0FU VUIoVnZWLmhbaV0pKTsKKyAgICBmU0VUQllURSgxLCBWZFYudWhbaV0sIGZWU0FUVUIoVnVWLmhb aV0pKSkKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMzIsdnNhdHdoLCJWZDMyPXZzYXR3aChW dTMyLFZ2MzIpIiwiVmQzMi5oPXZzYXQoVnUzMi53LFZ2MzIudykiLAorIlNhdHVyYXRlIGFuZCBw YWNrIDE2IHdvcmRzIHRvIDE2IGhhbGZ3b3JkcywgYW5kIGludGVybGVhdmUgdGhlbSIsCisgICAg ZlNFVEhBTEYoMCwgVmRWLndbaV0sIGZWU0FUSChWdlYud1tpXSkpOworICAgIGZTRVRIQUxGKDEs IFZkVi53W2ldLCBmVlNBVEgoVnVWLndbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1Qo MzIsdnNhdHV3dWgsIlZkMzI9dnNhdHV3dWgoVnUzMixWdjMyKSIsIlZkMzIudWg9dnNhdChWdTMy LnV3LFZ2MzIudXcpIiwKKyJTYXR1cmF0ZSBhbmQgcGFjayAxNiB3b3JkcyB0byAxNiBoYWxmd29y ZHMsIGFuZCBpbnRlcmxlYXZlIHRoZW0iLAorICAgIGZTRVRIQUxGKDAsIFZkVi53W2ldLCBmVlNB VFVIKFZ2Vi51d1tpXSkpOworICAgIGZTRVRIQUxGKDEsIFZkVi53W2ldLCBmVlNBVFVIKFZ1Vi51 d1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgxNix2c2h1ZmZlYiwiVmQzMj12c2h1 ZmZlYihWdTMyLFZ2MzIpIiwiVmQzMi5iPXZzaHVmZmUoVnUzMi5iLFZ2MzIuYikiLAorIlNodWZm bGUgaGFsZiB3b3JkcyB3aXRoIGluIGEgbGFuZSIsCisgICAgZlNFVEJZVEUoMCwgVmRWLnVoW2ld LCBmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKSk7CisgICAgZlNFVEJZVEUoMSwgVmRWLnVoW2ldLCBm R0VUVUJZVEUoMCwgVnVWLnVoW2ldKSkpCisKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKDE2LHZz aHVmZm9iLCJWZDMyPXZzaHVmZm9iKFZ1MzIsVnYzMikiLCJWZDMyLmI9dnNodWZmbyhWdTMyLmIs VnYzMi5iKSIsCisiU2h1ZmZsZSBoYWxmIHdvcmRzIHdpdGggaW4gYSBsYW5lIiwKKyAgICBmU0VU QllURSgwLCBWZFYudWhbaV0sIGZHRVRVQllURSgxLCBWdlYudWhbaV0pKTsKKyAgICBmU0VUQllU RSgxLCBWZFYudWhbaV0sIGZHRVRVQllURSgxLCBWdVYudWhbaV0pKSkKKworSVRFUkFUT1JfSU5T TjJfQU5ZX1NMT1QoMzIsdnNodWZlaCwiVmQzMj12c2h1ZmZlaChWdTMyLFZ2MzIpIiwiVmQzMi5o PXZzaHVmZmUoVnUzMi5oLFZ2MzIuaCkiLAorIlNodWZmbGUgaGFsZiB3b3JkcyB3aXRoIGluIGEg bGFuZSIsCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmR0VUVUhBTEYoMCwgVnZWLnV3W2ld KSk7CisgICAgZlNFVEhBTEYoMSwgVmRWLnV3W2ldLCBmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSkp CisKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKDMyLHZzaHVmb2gsIlZkMzI9dnNodWZmb2goVnUz MixWdjMyKSIsIlZkMzIuaD12c2h1ZmZvKFZ1MzIuaCxWdjMyLmgpIiwKKyJTaHVmZmxlIGhhbGYg d29yZHMgd2l0aCBpbiBhIGxhbmUiLAorICAgIGZTRVRIQUxGKDAsIFZkVi51d1tpXSwgZkdFVFVI QUxGKDEsIFZ2Vi51d1tpXSkpOworICAgIGZTRVRIQUxGKDEsIFZkVi51d1tpXSwgZkdFVFVIQUxG KDEsIFZ1Vi51d1tpXSkpKQorCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogRG91YmxlIFZl Y3RvciBTaHVmZmxlcworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0RFRl9DVklfTUFQUElORyhWNl92 dHJhbjJ4Ml9tYXAsICJ2dHJhbnMyeDIoVnkzMixWeDMyLFJ0MzIpIiwidnNodWZmKFZ5MzIsVngz MixSdDMyKSIpCisKKworRVhUSU5TTihWNl92c2h1ZmYsICJ2c2h1ZmYoVnkzMixWeDMyLFJ0MzIp IiwKK0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlBfVlMsQV9DVklfRUFSTFksQV9O T1RFX1BFUk1VVEVfUkVTT1VSQ0UsQV9OT1RFX1NISUZUX1JFU09VUkNFKSwKKyIyeDItPjJ4MiB0 cmFuc3Bvc2UsIGZvciBtdWx0aXBsZSBkYXRhIHNpemVzLCBpbnBsYWNlIiwKK3sKKwlmSElERShp bnQgb2Zmc2V0OykKKwlmb3IgKG9mZnNldD0xOyBvZmZzZXQ8ZlZCWVRFUygpOyBvZmZzZXQ8PD0x KSB7CisJCWlmICggUnRWICYgb2Zmc2V0KSB7CisJCQkgICAgZkhJREUoaW50IGs7KSBcCisJCQkJ ZlZGT1JFQUNIKDgsIGspIHtcCisJCQkJaWYgKCEoIGsgJiBvZmZzZXQpKSB7CisJCQkJCWZTV0FQ QihWeVYudWJba10sIFZ4Vi51YltrK29mZnNldF0pOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKwl9 KQorCitFWFRJTlNOKFY2X3ZzaHVmZnZkZCwgIlZkZDMyPXZzaHVmZihWdTMyLFZ2MzIsUnQ4KSIs CitBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQX1ZTLEFfTk9URV9QRVJNVVRFX1JF U09VUkNFLEFfTk9URV9TSElGVF9SRVNPVVJDRSxBX05PVEVfUlQ4KSwKKyIyeDItPjJ4MiB0cmFu c3Bvc2UgZm9yIG11bHRpcGxlIGRhdGEgc2l6ZXMiLAoreworCWZISURFKGludCBvZmZzZXQ7KQor CVZkZFYudlswXSA9IFZ2VjsKKwlWZGRWLnZbMV0gPSBWdVY7CisJZm9yIChvZmZzZXQ9MTsgb2Zm c2V0PGZWQllURVMoKTsgb2Zmc2V0PDw9MSkgeworCQlpZiAoIFJ0ViAmIG9mZnNldCkgeworCQkJ ICAgIGZISURFKGludCBrOykgXAorCQkJCWZWRk9SRUFDSCg4LCBrKSB7XAorCQkJCWlmICghKCBr ICYgb2Zmc2V0KSkgeworCQkJCQlmU1dBUEIoVmRkVi52WzFdLnViW2tdLCBWZGRWLnZbMF0udWJb aytvZmZzZXRdKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJfSkKKworRVhUSU5TTihWNl92ZGVh bCwgInZkZWFsKFZ5MzIsVngzMixSdDMyKSIsCitBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFf Q1ZJX1ZQX1ZTLEFfQ1ZJX0VBUkxZLEFfTk9URV9QRVJNVVRFX1JFU09VUkNFLEFfTk9URV9TSElG VF9SRVNPVVJDRSksCisiIHZlY3RvciAtIHZlY3RvciBkZWFsIC0gb3IgZGVpbnRlcmxlYXZlLCBm b3IgbXVsdGlwbGUgZGF0YSBzaXplcywgaW5wbGFjZSIsCit7CisJZkhJREUoaW50IG9mZnNldDsp CisJZm9yIChvZmZzZXQ9ZlZCWVRFUygpPj4xOyBvZmZzZXQ+MDsgb2Zmc2V0Pj49MSkgeworCQlp ZiAoIFJ0ViAmIG9mZnNldCkgeworCQkJICAgIGZISURFKGludCBrOykgXAorCQkJCWZWRk9SRUFD SCg4LCBrKSB7XAorCQkJCWlmICghKCBrICYgb2Zmc2V0KSkgeworCQkJCQlmU1dBUEIoVnlWLnVi W2tdLCBWeFYudWJbaytvZmZzZXRdKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJfSkKKworRVhU SU5TTihWNl92ZGVhbHZkZCwgIlZkZDMyPXZkZWFsKFZ1MzIsVnYzMixSdDgpIiwKK0FUVFJJQlMo QV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlBfVlMsQV9OT1RFX1BFUk1VVEVfUkVTT1VSQ0UsQV9O T1RFX1NISUZUX1JFU09VUkNFLEFfTk9URV9SVDgpLAorIiB2ZWN0b3IgLSB2ZWN0b3IgZGVhbCAt IG9yIGRlaW50ZXJsZWF2ZSwgZm9yIG11bHRpcGxlIGRhdGEgc2l6ZXMiLAoreworCWZISURFKGlu dCBvZmZzZXQ7KQorCVZkZFYudlswXSA9IFZ2VjsKKwlWZGRWLnZbMV0gPSBWdVY7CisJZm9yIChv ZmZzZXQ9ZlZCWVRFUygpPj4xOyBvZmZzZXQ+MDsgb2Zmc2V0Pj49MSkgeworCQlpZiAoIFJ0ViAm IG9mZnNldCkgeworCQkJICAgIGZISURFKGludCBrOykgXAorCQkJCWZWRk9SRUFDSCg4LCBrKSB7 XAorCQkJCWlmICghKCBrICYgb2Zmc2V0KSkgeworCQkJCQlmU1dBUEIoVmRkVi52WzFdLnViW2td LCBWZGRWLnZbMF0udWJbaytvZmZzZXRdKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJfSkKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworCisKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxF X1ZFQygzMix2c2h1Zm9laCwiVmRkMzI9dnNodWZmb2VoKFZ1MzIsVnYzMikiLCJWZGQzMi5oPXZz aHVmZm9lKFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgU2h1ZmZsZSBoYWxmIHdvcmRzIiwKKyAg ICBmU0VUSEFMRigwLCBWZGRWLnZbMF0udXdbaV0sIGZHRVRVSEFMRigwLCBWdlYudXdbaV0pKTsK KyAgICBmU0VUSEFMRigxLCBWZGRWLnZbMF0udXdbaV0sIGZHRVRVSEFMRigwLCBWdVYudXdbaV0p KTsKKyAgICBmU0VUSEFMRigwLCBWZGRWLnZbMV0udXdbaV0sIGZHRVRVSEFMRigxLCBWdlYudXdb aV0pKTsKKyAgICBmU0VUSEFMRigxLCBWZGRWLnZbMV0udXdbaV0sIGZHRVRVSEFMRigxLCBWdVYu dXdbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQygxNix2c2h1Zm9l YiwiVmRkMzI9dnNodWZmb2ViKFZ1MzIsVnYzMikiLCJWZGQzMi5iPXZzaHVmZm9lKFZ1MzIuYixW djMyLmIpIiwKKyJWZWN0b3IgU2h1ZmZsZSBieXRlcyIsCisgICAgZlNFVEJZVEUoMCwgVmRkVi52 WzBdLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKSk7CisgICAgZlNFVEJZVEUoMSwgVmRk Vi52WzBdLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSk7CisgICAgZlNFVEJZVEUoMCwg VmRkVi52WzFdLnVoW2ldLCBmR0VUVUJZVEUoMSwgVnZWLnVoW2ldKSk7CisgICAgZlNFVEJZVEUo MSwgVmRkVi52WzFdLnVoW2ldLCBmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkpCisKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorKiBEZWFsCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVCgzMiwgdmRl YWxoLCAiVmQzMj12ZGVhbGgoVnUzMikiLCAiVmQzMi5oPXZkZWFsKFZ1MzIuaCkiLAorIkRlYWwg SGFsZndvcmRzIiwKKyAgICBWZFYudWhbaSAgXSA9IGZHRVRVSEFMRigwLCBWdVYudXdbaV0pOwor ICAgIFZkVi51aFtpK2ZWRUxFTSgzMildID0gZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSkpCisKK0lU RVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVCgxNiwgdmRlYWxiLCAiVmQzMj12ZGVhbGIoVnUzMiki LCAiVmQzMi5iPXZkZWFsKFZ1MzIuYikiLAorIkRlYWwgSGFsZndvcmRzIiwKKyAgICBWZFYudWJb aSAgIF0gPSBmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKTsKKyAgICBWZFYudWJbaStmVkVMRU0oMTYp XSA9IGZHRVRVQllURSgxLCBWdVYudWhbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NM T1QoMzIsIHZkZWFsYjR3LCAgIlZkMzI9dmRlYWxiNHcoVnUzMixWdjMyKSIsICJWZDMyLmI9dmRl YWxlKFZ1MzIuYixWdjMyLmIpIiwKKyJEZWFsIFR3byBWZWN0b3JzIEJ5dGVzIiwKKyAgICBWZFYu dWJbMCtpIF0gPSBmR0VUVUJZVEUoMCwgVnZWLnV3W2ldKTsKKyAgICBWZFYudWJbZlZFTEVNKDMy KStpIF0gPSBmR0VUVUJZVEUoMiwgVnZWLnV3W2ldKTsKKyAgICBWZFYudWJbMipmVkVMRU0oMzIp K2ldID0gZkdFVFVCWVRFKDAsIFZ1Vi51d1tpXSk7CisgICAgVmRWLnViWzMqZlZFTEVNKDMyKStp XSA9IGZHRVRVQllURSgyLCBWdVYudXdbaV0pKQorCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIHNodWZmbGUKKyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDMyLCB2c2h1ZmZoLCAiVmQzMj12c2h1 ZmZoKFZ1MzIpIiwgIlZkMzIuaD12c2h1ZmYoVnUzMi5oKSIsCisiRGVhbCBIYWxmd29yZHMiLAor ICAgIGZTRVRIQUxGKDAsIFZkVi51d1tpXSwgVnVWLnVoW2ldKTsKKyAgICBmU0VUSEFMRigxLCBW ZFYudXdbaV0sIFZ1Vi51aFtpK2ZWRUxFTSgzMildKSkKKworSVRFUkFUT1JfSU5TTjJfUEVSTVVU RV9TTE9UKDE2LCB2c2h1ZmZiLCAiVmQzMj12c2h1ZmZiKFZ1MzIpIiwgIlZkMzIuYj12c2h1ZmYo VnUzMi5iKSIsCisiRGVhbCBIYWxmd29yZHMiLAorICAgIGZTRVRCWVRFKDAsIFZkVi51aFtpXSwg VnVWLnViW2ldKTsKKyAgICBmU0VUQllURSgxLCBWZFYudWhbaV0sIFZ1Vi51YltpK2ZWRUxFTSgx NildKSkKKworCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyogSU5TRVJUIEFORCBFWFRSQUNUCisqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitFWFRJTlNOKFY2 X2V4dHJhY3R3LCAiUmQzMj12ZXh0cmFjdChWdTMyLFJzMzIpIiwKK0FUVFJJQlMoQV9FWFRFTlNJ T04sQV9DVkksQV9DVklfVkEsQV9SRVNUUklDVF9OT1BBQ0tFVCxBX0NWSV9FWFRSQUNULEFfTk9U RV9OT1BBQ0tFVCxBX01FTUxJS0UsQV9SRVNUUklDVF9TTE9UME9OTFkpLAorIkV4dHJhY3QgYW4g ZWxlbWVudCBmcm9tIGEgdmVjdG9yIHRvIHNjYWxhciIsCitmSElERSh3YXJuKCJSZE49JWQgVnVO PSVkIFJzTj0lZCBSc1Y9MHglMDh4IHdpZHg9JWQiLFJkTixWdU4sUnNOLFJzViwoKFJzViAmIChm VkJZVEVTKCktMSkpID4+IDIpKTspCitSZFYgPSBWdVYudXdbIChSc1YgJiAoZlZCWVRFUygpLTEp KSA+PiAyXTsKK2ZISURFKHdhcm4oIlJkVj0weCUwOHgiLFJkVik7KSkKKworREVGX0NWSV9NQVBQ SU5HKFY2X2V4dHJhY3R3X2FsdCwiUmQzMi53PXZleHRyYWN0KFZ1MzIsUnMzMikiLCJSZDMyPXZl eHRyYWN0KFZ1MzIsUnMzMikiKQorCitFWFRJTlNOKFY2X3ZpbnNlcnR3ciwgIlZ4MzIudz12aW5z ZXJ0KFJ0MzIpIiwKK0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlgsQV9DVklfTEFU RSxBX05PVEVfTVBZX1JFU09VUkNFKSwKKyJJbnNlcnQgV29yZCBTY2FsYXIgaW50byBWZWN0b3Ii LAorVnhWLnV3WzBdID0gUnRWOykKKworCisKKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9MQVRF KDMyLGx2c3BsYXR3LCAiVmQzMj12c3BsYXQoUnQzMikiLCAiUmVwbGljYXRlcyBzY2FsYXIgYWNj cm9zcyB3b3JkcyBpbiB2ZWN0b3IiLCBWZFYudXdbaV0gPSBSdFYpCisKK0lURVJBVE9SX0lOU05f TVBZX1NMT1RfTEFURSgxNixsdnNwbGF0aCwgIlZkMzIuaD12c3BsYXQoUnQzMikiLCAiUmVwbGlj YXRlcyBzY2FsYXIgYWNjcm9zcyBoYWx2ZXMgaW4gdmVjdG9yIiwgVmRWLnVoW2ldID0gUnRWKQor CitJVEVSQVRPUl9JTlNOX01QWV9TTE9UX0xBVEUoOCxsdnNwbGF0YiwgIlZkMzIuYj12c3BsYXQo UnQzMikiLCAiUmVwbGljYXRlcyBzY2FsYXIgYWNjcm9zcyBieXRlcyBpbiB2ZWN0b3IiLCBWZFYu dWJbaV0gPSBSdFYpCisKKworREVGX0NWSV9NQVBQSU5HKFY2X3Zhc3NpZ25wLCJWZGQzMj1WdXUz MiIsIlZkZDMyPXZjb21iaW5lKFZ1dS5IMzIsVnV1LkwzMikiKQorCitJVEVSQVRPUl9JTlNOX0FO WV9TTE9UKDMyLHZhc3NpZ24sIlZkMzI9VnUzMiIsIkNvcHkgYSB2ZWN0b3IiLFZkVi53W2ldPVZ1 Vi53W2ldKQorCisKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyg4LHZjb21iaW5l LCJWZGQzMj12Y29tYmluZShWdTMyLFZ2MzIpIiwKKyJWZWN0b3IgYXNzaWduLCBBbnkgdHdvIHRv IFZlY3RvciBQYWlyIiwKKyAgICBWZGRWLnZbMF0udWJbaV0gPSBWdlYudWJbaV07CisgICAgVmRk Vi52WzFdLnViW2ldID0gVnVWLnViW2ldKQorCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorKiBHRU5FUkFMIFBFUk1VVEUgTkVUV09SS1MKKyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCitFWFRJTlNOKFY2X3ZkZWx0YSwg IlZkMzI9dmRlbHRhKFZ1MzIsVnYzMikiLCAgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFf Q1ZJX1ZQLEFfTk9URV9QRVJNVVRFX1JFU09VUkNFKSwKKyJSZXZlcnNlIEJlbmVzIEJ1dHRlcmZs eSBuZXR3b3JrICIsCit7CisgICAgZkhJREUoaW50IG9mZnNldDspCisgICAgZkhJREUoaW50IGs7 KQorICAgIGZvciAob2Zmc2V0PWZWQllURVMoKTsgKG9mZnNldD4+PTEpPjA7ICkgeworICAgICAg ICBmb3IgKGsgPSAwOyBrPGZWQllURVMoKTsgaysrKSB7CisgICAgICAgICAgICBWZFYudWJba10g PSAoVnZWLnViW2tdJm9mZnNldCkgPyBWdVYudWJba15vZmZzZXRdIDogVnVWLnViW2tdOworICAg ICAgICB9CisgICAgICAgIGZvciAoayA9IDA7IGs8ZlZCWVRFUygpOyBrKyspIHsKKyAgICAgICAg ICAgIFZ1Vi51YltrXSA9IFZkVi51YltrXTsKKyAgICAgICAgfQorICAgIH0KK30pCisKKworRVhU SU5TTihWNl92cmRlbHRhLCAiVmQzMj12cmRlbHRhKFZ1MzIsVnYzMikiLCAgQVRUUklCUyhBX0VY VEVOU0lPTixBX0NWSSxBX0NWSV9WUCxBX05PVEVfUEVSTVVURV9SRVNPVVJDRSksCisiRm9yd2Fy ZCBCZW5lcyBCdXR0ZXJmbHkgbmV0d29yayAiLAoreworCWZISURFKGludCBvZmZzZXQ7KQorICAg IGZISURFKGludCBrOykKKyAgICBmb3IgKG9mZnNldD0xOyBvZmZzZXQ8ZlZCWVRFUygpOyBvZmZz ZXQ8PD0xKXsKKyAgICAgICAgZm9yIChrID0gMDsgazxmVkJZVEVTKCk7IGsrKykgeworICAgICAg ICAgICAgVmRWLnViW2tdID0gKFZ2Vi51YltrXSZvZmZzZXQpID8gVnVWLnViW2teb2Zmc2V0XSA6 IFZ1Vi51YltrXTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGsgPSAwOyBrPGZWQllURVMoKTsg aysrKSB7CisgICAgICAgICAgICBWdVYudWJba10gPSBWZFYudWJba107CisgICAgICAgIH0KKyAg ICB9Cit9KQorCisKKworCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmNsMHcsIlZk MzI9dmNsMHcoVnUzMikiLCJWZDMyLnV3PXZjbDAoVnUzMi51dykiLCAgICAgICAgICJDb3VudCBM ZWFkaW5nIFplcm9zIGluIFdvcmQiLCAgICAgVmRWLnV3W2ldPWZDTDFfNCh+VnVWLnV3W2ldKSkK K0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMTYsdmNsMGgsIlZkMzI9dmNsMGgoVnUzMikiLCJW ZDMyLnVoPXZjbDAoVnUzMi51aCkiLCAgICAgICAgICJDb3VudCBMZWFkaW5nIFplcm9zIGluIFdv cmQiLCAgICBWZFYudWhbaV09ZkNMMV8yKH5WdVYudWhbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9T SElGVF9TTE9UKDMyLHZub3JtYW10dywiVmQzMj12bm9ybWFtdHcoVnUzMikiLCJWZDMyLnc9dm5v cm1hbXQoVnUzMi53KSIsIk5vcm0gQW1vdW50IFdvcmQiLAorVmRWLndbaV09Zk1BWChmQ0wxXzQo flZ1Vi53W2ldKSxmQ0wxXzQoVnVWLndbaV0pKS0xOyBmSElERShJVjFERUFEKCk7KSkKK0lURVJB VE9SX0lOU04yX1NISUZUX1NMT1QoMTYsdm5vcm1hbXRoLCJWZDMyPXZub3JtYW10aChWdTMyKSIs IlZkMzIuaD12bm9ybWFtdChWdTMyLmgpIiwiTm9ybSBBbW91bnQgSGFsZndvcmQiLAorVmRWLmhb aV09Zk1BWChmQ0wxXzIoflZ1Vi5oW2ldKSxmQ0wxXzIoVnVWLmhbaV0pKS0xOyBmSElERShJVjFE RUFEKCk7KSkKKworSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UX1ZWX0xBVEUoMzIsdmFkZGNsYncs IlZkMzIudz12YWRkKHZjbGIoVnUzMi53KSxWdjMyLncpIiwKKyJDb3VudCBsZWFkaW5nIGJpdHMg YW5kIGFkZCIsCitWZFYud1tpXSA9IGZNQVgoZkNMMV80KH5WdVYud1tpXSksZkNMMV80KFZ1Vi53 W2ldKSkgKyBWdlYud1tpXSkKKworSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UX1ZWX0xBVEUoMTYs dmFkZGNsYmgsIlZkMzIuaD12YWRkKHZjbGIoVnUzMi5oKSxWdjMyLmgpIiwKKyJDb3VudCBsZWFk aW5nIGJpdHMgYW5kIGFkZCIsCitWZFYuaFtpXSA9IGZNQVgoZkNMMV8yKH5WdVYuaFtpXSksZkNM MV8yKFZ1Vi5oW2ldKSkgKyBWdlYuaFtpXSkKKworCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9U KDE2LHZwb3Bjb3VudGgsIlZkMzI9dnBvcGNvdW50aChWdTMyKSIsIlZkMzIuaD12cG9wY291bnQo VnUzMi5oKSIsICAgIkNvdW50IExlYWRpbmcgWmVyb3MgaW4gV29yZCIsICBWZFYudWhbaV09ZkNP VU5UT05FU18yKFZ1Vi51aFtpXSkpCisKKworI2RlZmluZSBmSElTVChJTlBVVFZFQykgXAorCWZV QVJDSF9OT1RFX1BVTVBfNFgoKTsgXAorCWZISURFKGludCBsYW5lOykgXAorCWZISURFKG1tdmVj dG9yX3QgdG1wOykgXAorCWZWRk9SRUFDSCgxMjgsIGxhbmUpIHsgXAorCQlmb3IgKGZISURFKGlu dCApaT0wOyBpPDEyOC84OyArK2kpIHsgXAorCQkJdW5zaWduZWQgY2hhciB2YWx1ZSA9IElOUFVU VkVDLnViWygxMjgvOCkqbGFuZStpXTsgXAorCQkJdW5zaWduZWQgY2hhciByZWdubyA9IHZhbHVl Pj4zOyBcCisJCQl1bnNpZ25lZCBjaGFyIGVsZW1lbnQgPSB2YWx1ZSAmIDc7IFwKKwkJCVJFQURf RVhUX1ZSRUcocmVnbm8sdG1wLDApOyBcCisJCQl0bXAudWhbKDEyOC8xNikqbGFuZSsoZWxlbWVu dCldKys7IFwKKwkJCVdSSVRFX0VYVF9WUkVHKHJlZ25vLHRtcCxFWFRfTkVXKTsgXAorCQl9IFwK Kwl9CisKKyNkZWZpbmUgZkhJU1RRKElOUFVUVkVDLFFWQUwpIFwKKwlmVUFSQ0hfTk9URV9QVU1Q XzRYKCk7IFwKKwlmSElERShpbnQgbGFuZTspIFwKKwlmSElERShtbXZlY3Rvcl90IHRtcDspIFwK KwlmVkZPUkVBQ0goMTI4LCBsYW5lKSB7IFwKKwkJZm9yIChmSElERShpbnQgKWk9MDsgaTwxMjgv ODsgKytpKSB7IFwKKwkJCXVuc2lnbmVkIGNoYXIgdmFsdWUgPSBJTlBVVFZFQy51YlsoMTI4Lzgp KmxhbmUraV07IFwKKwkJCXVuc2lnbmVkIGNoYXIgcmVnbm8gPSB2YWx1ZT4+MzsgXAorCQkJdW5z aWduZWQgY2hhciBlbGVtZW50ID0gdmFsdWUgJiA3OyBcCisJCQlSRUFEX0VYVF9WUkVHKHJlZ25v LHRtcCwwKTsgXAorCQkJaWYgKGZHRVRRQklUKFFWQUwsMTI4LzgqbGFuZStpKSkgdG1wLnVoWygx MjgvMTYpKmxhbmUrKGVsZW1lbnQpXSsrOyBcCisJCQlXUklURV9FWFRfVlJFRyhyZWdubyx0bXAs RVhUX05FVyk7IFwKKwkJfSBcCisJfQorCisKKworRVhUSU5TTihWNl92aGlzdCwgInZoaXN0IixB VFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJXzRTTE9ULEFfQ1ZJX1JFUVVJUkVTX1RNUExP QUQpLCAidmhpc3QgaW5zdHJ1Y3Rpb24iLHsgZkhJREUobW12ZWN0b3JfdCBpbnB1dFZlYzspIGlu cHV0VmVjPWZUTVBWREFUQSgpOyBmSElTVChpbnB1dFZlYyk7IH0pCitFWFRJTlNOKFY2X3ZoaXN0 cSwgInZoaXN0KFF2NCkiLEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfNFNMT1QsQV9D VklfUkVRVUlSRVNfVE1QTE9BRCksICJ2aGlzdCBpbnN0cnVjdGlvbiIseyBmSElERShtbXZlY3Rv cl90IGlucHV0VmVjOykgaW5wdXRWZWM9ZlRNUFZEQVRBKCk7IGZISVNUUShpbnB1dFZlYyxRdlYp OyB9KQorCisjdW5kZWYgZkhJU1QKKyN1bmRlZiBmSElTVFEKKworCisvKiAqKioqIFdFSUdIVEVE IEhJU1RPR1JBTSAqKioqICovCisKKworI2lmIDEKKyNkZWZpbmUgV0hJU1QoRUwsTUFTSyxCU0hJ RlQsQ09ORCxTQVRGKSBcCisJZkhJREUodW5zaWduZWQgaW50KSBidWNrZXQgPSBmR0VUVUJZVEUo MCxpbnB1dC5oW2ldKTsgXAorCWZISURFKHVuc2lnbmVkIGludCkgd2VpZ2h0ID0gZkdFVFVCWVRF KDEsaW5wdXQuaFtpXSk7IFwKKwlmSElERSh1bnNpZ25lZCBpbnQpIHZpbmRleCA9IChidWNrZXQg Pj4gMykgJiAweDFGOyBcCisJZkhJREUodW5zaWduZWQgaW50KSBlbGluZGV4ID0gKChpPj5CU0hJ RlQpICYgKH5NQVNLKSkgfCAoKGJ1Y2tldD4+QlNISUZUKSAmIE1BU0spOyBcCisJZkhJREUobW12 ZWN0b3JfdCB0bXA7KSBcCisJUkVBRF9FWFRfVlJFRyh2aW5kZXgsdG1wLDApOyBcCisJQ09ORCB0 bXAuRUxbZWxpbmRleF0gPSBTQVRGKHRtcC5FTFtlbGluZGV4XSArIHdlaWdodCk7IFwKKwlXUklU RV9FWFRfVlJFRyh2aW5kZXgsdG1wLEVYVF9ORVcpOyBcCisJZlVBUkNIX05PVEVfUFVNUF8yWCgp OworCitJVEVSQVRPUl9JTlNOX1ZISVNUTElLRSgxNix2d2hpc3QyNTYsInZ3aGlzdDI1NiIsInZl Y3RvciB3ZWlnaHRlZCBoaXN0b2dyYW0gaGFsZndvcmQgY291bnRlcnMiLCBXSElTVCh1aCw3LDAs LCkpCitJVEVSQVRPUl9JTlNOX1ZISVNUTElLRSgxNix2d2hpc3QyNTZxLCJ2d2hpc3QyNTYoUXY0 KSIsInZlY3RvciB3ZWlnaHRlZCBoaXN0b2dyYW0gaGFsZndvcmQgY291bnRlcnMiLCBXSElTVCh1 aCw3LDAsaWYgKGZHRVRRQklUKFF2ViwyKmkpKSwpKQorSVRFUkFUT1JfSU5TTl9WSElTVExJS0Uo MTYsdndoaXN0MjU2X3NhdCwidndoaXN0MjU2OnNhdCIsInZlY3RvciB3ZWlnaHRlZCBoaXN0b2dy YW0gaGFsZndvcmQgY291bnRlcnMiLCBXSElTVCh1aCw3LDAsLGZWU0FUVUgpKQorSVRFUkFUT1Jf SU5TTl9WSElTVExJS0UoMTYsdndoaXN0MjU2cV9zYXQsInZ3aGlzdDI1NihRdjQpOnNhdCIsInZl Y3RvciB3ZWlnaHRlZCBoaXN0b2dyYW0gaGFsZndvcmQgY291bnRlcnMiLCBXSElTVCh1aCw3LDAs aWYgKGZHRVRRQklUKFF2ViwyKmkpKSxmVlNBVFVIKSkKK0lURVJBVE9SX0lOU05fVkhJU1RMSUtF KDE2LHZ3aGlzdDEyOCwidndoaXN0MTI4IiwidmVjdG9yIHdlaWdodGVkIGhpc3RvZ3JhbSB3b3Jk IGNvdW50ZXJzIiwgV0hJU1QodXcsMywxLCwpKQorSVRFUkFUT1JfSU5TTl9WSElTVExJS0UoMTYs dndoaXN0MTI4cSwidndoaXN0MTI4KFF2NCkiLCJ2ZWN0b3Igd2VpZ2h0ZWQgaGlzdG9ncmFtIHdv cmQgY291bnRlcnMiLCBXSElTVCh1dywzLDEsaWYgKGZHRVRRQklUKFF2ViwyKmkpKSwpKQorSVRF UkFUT1JfSU5TTl9WSElTVExJS0UoMTYsdndoaXN0MTI4bSwidndoaXN0MTI4KCN1MSkiLCJ2ZWN0 b3Igd2VpZ2h0ZWQgaGlzdG9ncmFtIHdvcmQgY291bnRlcnMiLCBXSElTVCh1dywzLDEsaWYgKChi dWNrZXQgJiAxKSA9PSB1aVYpLCkpCitJVEVSQVRPUl9JTlNOX1ZISVNUTElLRSgxNix2d2hpc3Qx MjhxbSwidndoaXN0MTI4KFF2NCwjdTEpIiwidmVjdG9yIHdlaWdodGVkIGhpc3RvZ3JhbSB3b3Jk IGNvdW50ZXJzIiwgV0hJU1QodXcsMywxLGlmICgoKGJ1Y2tldCAmIDEpID09IHVpVikgJiYgZkdF VFFCSVQoUXZWLDIqaSkpLCkpCisKKworI2VuZGlmCisKKworCisvKiAqKioqKiogICBsb29rdXAg dGFibGUgaW5zdHJ1Y3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKiAg Ki8KKworLyogVXNlIGxvdyBiaXRzIGZyb20gaWR4IHRvIGNob29zZSBuZXh0LWJpZ2dlciBlbGVt ZW50cyBmcm9tIHZlY3RvciwgdGhlbiB1c2UgTFNCIGZyb20gaWR4IHRvIGNob29zZSBvZGQgb3Ig ZXZlbiBlbGVtZW50ICovCisKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UKDgsdmx1dHZ2Yiwi VmQzMi5iPXZsdXQzMihWdTMyLmIsVnYzMi5iLFJ0OCkiLCJ2ZWN0b3ItdmVjdG9yIHRhYmxlIGxv b2t1cCIsCitmSElERShmUlQ4Tk9URSgpKQorZkhJREUodW5zaWduZWQgaW50IGlkeDspIGZISURF KGludCBtYXRjaHZhbDspIGZISURFKGludCBvZGRoYWxmOykKK21hdGNodmFsID0gUnRWICYgMHg3 Oworb2RkaGFsZiA9IChSdFYgPj4gKGZWRUNMT0dTSVpFKCktNikpICYgMHgxOworaWR4ID0gVnVW LnViW2ldOworVmRWLmJbaV0gPSAoKGlkeCAmIDB4RTApID09IChtYXRjaHZhbCA8PCA1KSkgPyBm R0VUQllURShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxFTSgxNildKSA6IDApCisKKworSVRFUkFU T1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyg4LHZsdXR2dmJfb3JhY2MsIlZ4MzIuYnw9 dmx1dDMyKFZ1MzIuYixWdjMyLmIsUnQ4KSIsInZlY3Rvci12ZWN0b3IgdGFibGUgbG9va3VwIiwK K2ZISURFKGZSVDhOT1RFKCkpCitmSElERSh1bnNpZ25lZCBpbnQgaWR4OykgZkhJREUoaW50IG1h dGNodmFsOykgZkhJREUoaW50IG9kZGhhbGY7KQorbWF0Y2h2YWwgPSBSdFYgJiAweDc7CitvZGRo YWxmID0gKFJ0ViA+PiAoZlZFQ0xPR1NJWkUoKS02KSkgJiAweDE7CitpZHggPSBWdVYudWJbaV07 CitWeFYuYltpXSB8PSAoKGlkeCAmIDB4RTApID09IChtYXRjaHZhbCA8PCA1KSkgPyBmR0VUQllU RShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxFTSgxNildKSA6IDApCisKK0lURVJBVE9SX0lOU05f UEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoMTYsdmx1dHZ3aCwiVmRkMzIuaD12bHV0MTYoVnUzMi5i LFZ2MzIuaCxSdDgpIiwidmVjdG9yLXZlY3RvciB0YWJsZSBsb29rdXAiLAorZkhJREUoZlJUOE5P VEUoKSkKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElERShpbnQgbWF0Y2h2YWw7KSBmSElE RShpbnQgb2RkaGFsZjspCittYXRjaHZhbCA9IFJ0ViAmIDB4RjsKK29kZGhhbGYgPSAoUnRWID4+ IChmVkVDTE9HU0laRSgpLTYpKSAmIDB4MTsKK2lkeCA9IGZHRVRVQllURSgwLFZ1Vi51aFtpXSk7 CitWZGRWLnZbMF0uaFtpXSA9ICgoaWR4ICYgMHhGMCkgPT0gKG1hdGNodmFsIDw8IDQpKSA/IGZH RVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pIDogMDsKK2lkeCA9IGZHRVRV QllURSgxLFZ1Vi51aFtpXSk7CitWZGRWLnZbMV0uaFtpXSA9ICgoaWR4ICYgMHhGMCkgPT0gKG1h dGNodmFsIDw8IDQpKSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0p IDogMCkKKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2bHV0dndo X29yYWNjLCJWeHgzMi5ofD12bHV0MTYoVnUzMi5iLFZ2MzIuaCxSdDgpIiwidmVjdG9yLXZlY3Rv ciB0YWJsZSBsb29rdXAiLAorZkhJREUoZlJUOE5PVEUoKSkKK2ZISURFKHVuc2lnbmVkIGludCBp ZHg7KSBmSElERShpbnQgbWF0Y2h2YWw7KSBmSElERShpbnQgb2RkaGFsZjspCittYXRjaHZhbCA9 IGZHRVRVQllURSgwLFJ0VikgJiAweEY7CitvZGRoYWxmID0gKFJ0ViA+PiAoZlZFQ0xPR1NJWkUo KS02KSkgJiAweDE7CitpZHggPSBmR0VUVUJZVEUoMCxWdVYudWhbaV0pOworVnh4Vi52WzBdLmhb aV0gfD0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdFVEhBTEYob2RkaGFs ZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwOworaWR4ID0gZkdFVFVCWVRFKDEsVnVWLnVo W2ldKTsKK1Z4eFYudlsxXS5oW2ldIHw9ICgoaWR4ICYgMHhGMCkgPT0gKG1hdGNodmFsIDw8IDQp KSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pIDogMCkKKworSVRF UkFUT1JfSU5TTl9QRVJNVVRFX1NMT1QoOCx2bHV0dnZiaSwiVmQzMi5iPXZsdXQzMihWdTMyLmIs VnYzMi5iLCN1MykiLCJ2ZWN0b3ItdmVjdG9yIHRhYmxlIGxvb2t1cCIsCitmSElERSh1bnNpZ25l ZCBpbnQgaWR4OykgZkhJREUoaW50IG1hdGNodmFsOykgZkhJREUoaW50IG9kZGhhbGY7KQorbWF0 Y2h2YWwgPSB1aVYgJiAweDc7CitvZGRoYWxmID0gKHVpViA+PiAoZlZFQ0xPR1NJWkUoKS02KSkg JiAweDE7CitpZHggPSBWdVYudWJbaV07CitWZFYuYltpXSA9ICgoaWR4ICYgMHhFMCkgPT0gKG1h dGNodmFsIDw8IDUpKSA/IGZHRVRCWVRFKG9kZGhhbGYsVnZWLmhbaWR4ICUgZlZFTEVNKDE2KV0p IDogMCkKKworCitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDgsdmx1dHZ2 Yl9vcmFjY2ksIlZ4MzIuYnw9dmx1dDMyKFZ1MzIuYixWdjMyLmIsI3UzKSIsInZlY3Rvci12ZWN0 b3IgdGFibGUgbG9va3VwIiwKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElERShpbnQgbWF0 Y2h2YWw7KSBmSElERShpbnQgb2RkaGFsZjspCittYXRjaHZhbCA9IHVpViAmIDB4NzsKK29kZGhh bGYgPSAodWlWID4+IChmVkVDTE9HU0laRSgpLTYpKSAmIDB4MTsKK2lkeCA9IFZ1Vi51YltpXTsK K1Z4Vi5iW2ldIHw9ICgoaWR4ICYgMHhFMCkgPT0gKG1hdGNodmFsIDw8IDUpKSA/IGZHRVRCWVRF KG9kZGhhbGYsVnZWLmhbaWR4ICUgZlZFTEVNKDE2KV0pIDogMCkKKworSVRFUkFUT1JfSU5TTl9Q RVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2bHV0dndoaSwiVmRkMzIuaD12bHV0MTYoVnUzMi5i LFZ2MzIuaCwjdTMpIiwidmVjdG9yLXZlY3RvciB0YWJsZSBsb29rdXAiLAorZkhJREUodW5zaWdu ZWQgaW50IGlkeDspIGZISURFKGludCBtYXRjaHZhbDspIGZISURFKGludCBvZGRoYWxmOykKK21h dGNodmFsID0gdWlWICYgMHhGOworb2RkaGFsZiA9ICh1aVYgPj4gKGZWRUNMT0dTSVpFKCktNikp ICYgMHgxOworaWR4ID0gZkdFVFVCWVRFKDAsVnVWLnVoW2ldKTsKK1ZkZFYudlswXS5oW2ldID0g KChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdFVEhBTEYob2RkaGFsZixWdlYu d1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwOworaWR4ID0gZkdFVFVCWVRFKDEsVnVWLnVoW2ldKTsK K1ZkZFYudlsxXS5oW2ldID0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdF VEhBTEYob2RkaGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwKQorCitJVEVSQVRPUl9J TlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDE2LHZsdXR2d2hfb3JhY2NpLCJWeHgzMi5ofD12 bHV0MTYoVnUzMi5iLFZ2MzIuaCwjdTMpIiwidmVjdG9yLXZlY3RvciB0YWJsZSBsb29rdXAiLAor ZkhJREUodW5zaWduZWQgaW50IGlkeDspIGZISURFKGludCBtYXRjaHZhbDspIGZISURFKGludCBv ZGRoYWxmOykKK21hdGNodmFsID0gdWlWICYgMHhGOworb2RkaGFsZiA9ICh1aVYgPj4gKGZWRUNM T0dTSVpFKCktNikpICYgMHgxOworaWR4ID0gZkdFVFVCWVRFKDAsVnVWLnVoW2ldKTsKK1Z4eFYu dlswXS5oW2ldIHw9ICgoaWR4ICYgMHhGMCkgPT0gKG1hdGNodmFsIDw8IDQpKSA/IGZHRVRIQUxG KG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pIDogMDsKK2lkeCA9IGZHRVRVQllURSgx LFZ1Vi51aFtpXSk7CitWeHhWLnZbMV0uaFtpXSB8PSAoKGlkeCAmIDB4RjApID09IChtYXRjaHZh bCA8PCA0KSkgPyBmR0VUSEFMRihvZGRoYWxmLFZ2Vi53W2lkeCAlIGZWRUxFTSgzMildKSA6IDAp CisKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UKDgsdmx1dHZ2Yl9ubSwiVmQzMi5iPXZsdXQz MihWdTMyLmIsVnYzMi5iLFJ0OCk6bm9tYXRjaCIsInZlY3Rvci12ZWN0b3IgdGFibGUgbG9va3Vw IiwKK2ZISURFKGZSVDhOT1RFKCkpCitmSElERSh1bnNpZ25lZCBpbnQgaWR4OykgZkhJREUoaW50 IG9kZGhhbGY7KSBmSElERShpbnQgbWF0Y2h2YWw7KQorICAgIG1hdGNodmFsID0gUnRWICYgMHg3 OworICAgIG9kZGhhbGYgPSAoUnRWID4+IChmVkVDTE9HU0laRSgpLTYpKSAmIDB4MTsKKyAgICBp ZHggPSBWdVYudWJbaV07CisgICAgaWR4ID0gKGlkeCYweDFGKSB8IChtYXRjaHZhbDw8NSk7Cisg ICAgVmRWLmJbaV0gPSBmR0VUQllURShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxFTSgxNildKSkK KworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2bHV0dndoX25tLCJW ZGQzMi5oPXZsdXQxNihWdTMyLmIsVnYzMi5oLFJ0OCk6bm9tYXRjaCIsInZlY3Rvci12ZWN0b3Ig dGFibGUgbG9va3VwIiwKK2ZISURFKGZSVDhOT1RFKCkpCitmSElERSh1bnNpZ25lZCBpbnQgaWR4 OykgZkhJREUoaW50IG9kZGhhbGY7KSBmSElERShpbnQgbWF0Y2h2YWw7KQorICAgIG1hdGNodmFs ID0gUnRWICYgMHhGOworICAgIG9kZGhhbGYgPSAoUnRWID4+IChmVkVDTE9HU0laRSgpLTYpKSAm IDB4MTsKKyAgICBpZHggPSBmR0VUVUJZVEUoMCxWdVYudWhbaV0pOworICAgIGlkeCA9IChpZHgm MHgwRikgfCAobWF0Y2h2YWw8PDQpOworICAgIFZkZFYudlswXS5oW2ldID0gZkdFVEhBTEYob2Rk aGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSk7CisgICAgaWR4ID0gZkdFVFVCWVRFKDEsVnVW LnVoW2ldKTsKKyAgICBpZHggPSAoaWR4JjB4MEYpIHwgKG1hdGNodmFsPDw0KTsKKyAgICBWZGRW LnZbMV0uaFtpXSA9IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pKQor CisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitOT04gTElORUFSIC0gVjY1CisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9JTlNOX1NMT1QyX0RPVUJMRV9WRUMoMTYsdm1w YWhoc2F0LCJWeDMyLmg9dm1wYShWeDMyLmgsVnUzMi5oLFJ0dDMyLmgpOnNhdCIsInBpZWNld2lz ZSBsaW5lYXIgYXBwcm94aW1hdGlvbiIsCisgICAgVnhWLmhbaV09IGZWU0FUSCggKCAoIGZNUFkx NlNTKFZ4Vi5oW2ldLFZ1Vi5oW2ldKTw8MSkgKyAoZkdFVEhBTEYoKCAoVnVWLmhbaV0+PjE0KSYw eDMpLCBSdHRWICk8PDE1KSk+PjE2KSkKKworCitJVEVSQVRPUl9JTlNOX1NMT1QyX0RPVUJMRV9W RUMoMTYsdm1wYXVodWhzYXQsIlZ4MzIuaD12bXBhKFZ4MzIuaCxWdTMyLnVoLFJ0dDMyLnVoKTpz YXQiLCJwaWVjZXdpc2UgbGluZWFyIGFwcHJveGltYXRpb24iLAorICAgIFZ4Vi5oW2ldPSBmVlNB VEgoICggIGZNUFkxNlNVKFZ4Vi5oW2ldLFZ1Vi51aFtpXSkgKyAoZkdFVFVIQUxGKCgoVnVWLnVo W2ldPj4xNCkmMHgzKSwgUnR0ViApPDwxNSkpPj4xNikpCisKK0lURVJBVE9SX0lOU05fU0xPVDJf RE9VQkxFX1ZFQygxNix2bXBzdWh1aHNhdCwiVngzMi5oPXZtcHMoVngzMi5oLFZ1MzIudWgsUnR0 MzIudWgpOnNhdCIsInBpZWNld2lzZSBsaW5lYXIgYXBwcm94aW1hdGlvbiIsCisgICAgVnhWLmhb aV09IGZWU0FUSCggKCAgZk1QWTE2U1UoVnhWLmhbaV0sVnVWLnVoW2ldKSAtIChmR0VUVUhBTEYo KChWdVYudWhbaV0+PjE0KSYweDMpLCBSdHRWICk8PDE1KSk+PjE2KSkKKworCitJVEVSQVRPUl9J TlNOX1NMT1QyX0RPVUJMRV9WRUMoMTYsdmx1dDQsIlZkMzIuaD12bHV0NChWdTMyLnVoLFJ0dDMy LmgpIiwiNCBlbnRyeSBsb29rdXAgdGFibGUiLAorICAgIFZkVi5oW2ldPSBmR0VUSEFMRiggICgo VnVWLmhbaV0+PjE0KSYweDMpLCBSdHRWICkpCisKKworCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CitWNjUKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lOU05fTVBZX1NMT1Rf Tk9WMSgzMix2bXB5dWhlLCJWZDMyLnV3PXZtcHllKFZ1MzIudWgsUnQzMi51aCkiLAorIlZlY3Rv ciBldmVuIGhhbGZ3b3JkIHVuc2lnbmVkIG11bHRpcGx5IGJ5IHNjYWxhciIsCisgICAgVmRWLnV3 W2ldID0gZk1QWTE2VVUoZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSksZkdFVFVIQUxGKDAsUnRWKSkp CisKKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9OT1YxKDMyLHZtcHl1aGVfYWNjLCJWeDMyLnV3 Kz12bXB5ZShWdTMyLnVoLFJ0MzIudWgpIiwKKyJWZWN0b3IgZXZlbiBoYWxmd29yZCB1bnNpZ25l ZCBtdWx0aXBseSBieSBzY2FsYXIiLAorICAgIFZ4Vi51d1tpXSArPSBmTVBZMTZVVShmR0VUVUhB TEYoMCwgVnVWLnV3W2ldKSxmR0VUVUhBTEYoMCxSdFYpKSkKKworCisKKworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorIFZlY3JvciBISS9MT1cgYWNjZXNzb3JzCisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworREVGX0NWSV9NQVBQSU5HKFY2X2hpLCAiVmQzMj1oaShWc3MzMikiLCJWZDMyPVZzcy5I MzIiKQorREVGX0NWSV9NQVBQSU5HKFY2X2xvLCAiVmQzMj1sbyhWc3MzMikiLCJWZDMyPVZzcy5M MzIiKQorCisKKworCitFWFRJTlNOKFY2X3ZnYXRoZXJtdywgICJ2dG1wLnc9dmdhdGhlcihSdDMy LE11MixWdjMyLncpLnciLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixB X0NWSV9WQSxBX0NWSV9WTSxBX0NWSV9UTVBfRFNULEFfRUFfUEFHRUNST1NTLEFfTUVNU0laRV80 QixBX01FTUxJS0UsQV9DVklfR0FUSEVSX0FERFJfNEIsQV9OT1RFX0FOWV9SRVNPVVJDRSksICJH YXRoZXIgV29yZHMiLAoreworICAgIGZISURFKGludCBpOykKKwlmSElERShpbnQgZWxlbWVudF9z aXplID0gNDspCisgICAgZkhJREUoZkdBVEhFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXpl KTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYs IGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgIEVBID0gUnRW K1Z2Vi51d1tpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9HQVRIRVJfV09SRChFQSwgVnZWLnV3W2ld LCBpLE11Vik7CisgICAgfQorICAgIGZHQVRIRVJfRklOSVNIKCkKK30pCitFWFRJTlNOKFY2X3Zn YXRoZXJtaCwgICJ2dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdjMyLmgpLmgiLCBBVFRSSUJTKEFf RVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NWSV9WTSxBX0NWSV9UTVBf RFNULEFfRUFfUEFHRUNST1NTLEFfTUVNU0laRV8yQixBX01FTUxJS0UsQV9DVklfR0FUSEVSX0FE RFJfMkIsQV9OT1RFX0FOWV9SRVNPVVJDRSksICJHYXRoZXIgaGFsZndvcmRzIiwKK3sKKyAgICBm SElERShpbnQgaTspCisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7KQorICAgIGZISURFKGZH QVRIRVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVW LCBlbGVtZW50X3NpemUpOworICAgIGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZW Rk9SRUFDSCgxNiwgaSkgeworICAgICAgICBFQSA9IFJ0VitWdlYudWhbaV07CisgICAgICAgIGZW TE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEKEVBLCBWdlYudWhbaV0sIGksTXVWKTsKKyAgICB9Cisg ICAgZkdBVEhFUl9GSU5JU0goKQorfSkKKworCisKK0VYVElOU04oVjZfdmdhdGhlcm1odywgICJ2 dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdnYzMi53KS5oIiwgQVRUUklCUyhBX0VYVEVOU0lPTixB X0NWSSxBX0NWSV9HQVRIRVIsQV9DVklfVkFfRFYsQV9DVklfVk0sQV9DVklfVE1QX0RTVCxBX0VB X1BBR0VDUk9TUyxBX01FTVNJWkVfMkIsQV9NRU1MSUtFLEFfQ1ZJX0dBVEhFUl9BRERSXzRCLEFf Tk9URV9BTllfUkVTT1VSQ0UpLCAiR2F0aGVyIGhhbGZ3b3JkcyIsCit7CisgICAgZkhJREUoaW50 IGk7KQorICAgIGZISURFKGludCBqOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gMjspCisg ICAgZkhJREUoZkdBVEhFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZM QVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6 ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgZm9yKGogPSAwOyBqIDwgMjsgaisr KSB7CisgICAgICAgICAgICBFQSA9IFJ0VitWdnZWLnZbal0udXdbaV07CisgICAgICAgICAgICBm VkxPR19WVENNX0dBVEhFUl9IQUxGV09SRF9EVihFQSwgVnZ2Vi52W2pdLnV3W2ldLCAoMippK2op LGksaixNdVYpOworICAgICAgICB9CisgICAgfQorICAgICBmR0FUSEVSX0ZJTklTSCgpCit9KQor CisKK0VYVElOU04oVjZfdmdhdGhlcm13cSwgICJpZiAoUXM0KSB2dG1wLnc9dmdhdGhlcihSdDMy LE11MixWdjMyLncpLnciLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixB X0NWSV9WQSxBX0NWSV9WTSxBX0NWSV9UTVBfRFNULEFfRUFfUEFHRUNST1NTLEFfTUVNU0laRV80 QixBX01FTUxJS0UsQV9DVklfR0FUSEVSX0FERFJfNEIsQV9OT1RFX0FOWV9SRVNPVVJDRSksICJH YXRoZXIgV29yZHMiLAoreworICAgIGZISURFKGludCBpOykKKwlmSElERShpbnQgZWxlbWVudF9z aXplID0gNDspCisgICAgZkhJREUoZkdBVEhFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXpl KTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYs IGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgIEVBID0gUnRW K1Z2Vi51d1tpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9HQVRIRVJfV09SRFEoRUEsIFZ2Vi51d1tp XSwgaSxRc1YsTXVWKTsKKyAgICB9CisgICAgZkdBVEhFUl9GSU5JU0goKQorfSkKK0VYVElOU04o VjZfdmdhdGhlcm1ocSwgICJpZiAoUXM0KSB2dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdjMyLmgp LmgiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NW SV9WTSxBX0NWSV9UTVBfRFNULEFfRUFfUEFHRUNST1NTLEFfTUVNU0laRV8yQixBX01FTUxJS0Us QV9DVklfR0FUSEVSX0FERFJfMkIsQV9OT1RFX0FOWV9SRVNPVVJDRSksICJHYXRoZXIgaGFsZndv cmRzIiwKK3sKKyAgICBmSElERShpbnQgaTspCisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7 KQorICAgIGZISURFKGZHQVRIRVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRfc2l6ZSk7KQorICAg IGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAgIGZWQUxJR04oUnRWLCBlbGVtZW50 X3NpemUpOworICAgIGZWRk9SRUFDSCgxNiwgaSkgeworICAgICAgICBFQSA9IFJ0VitWdlYudWhb aV07CisgICAgICAgIGZWTE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEUShFQSwgVnZWLnVoW2ldLCBp LFFzVixNdVYpOworICAgIH0KKyAgICBmR0FUSEVSX0ZJTklTSCgpCit9KQorCisKKworRVhUSU5T TihWNl92Z2F0aGVybWh3cSwgICJpZiAoUXM0KSB2dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdnYz Mi53KS5oIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9HQVRIRVIsQV9DVklfVkFf RFYsQV9DVklfVk0sQV9DVklfVE1QX0RTVCxBX0VBX1BBR0VDUk9TUyxBX01FTVNJWkVfMkIsQV9N RU1MSUtFLEFfQ1ZJX0dBVEhFUl9BRERSXzRCLEFfTk9URV9BTllfUkVTT1VSQ0UpLCAiR2F0aGVy IGhhbGZ3b3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKGludCBqOykKKwlm SElERShpbnQgZWxlbWVudF9zaXplID0gMjspCisgICAgZkhJREUoZkdBVEhFUl9JTklUKCBSdFYs IE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7 CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7 CisgICAgICAgZm9yKGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAgICAgICBFQSA9IFJ0VitW dnZWLnZbal0udXdbaV07CisgICAgICAgICAgICBmVkxPR19WVENNX0dBVEhFUl9IQUxGV09SRFFf RFYoRUEsIFZ2dlYudltqXS51d1tpXSwgKDIqaStqKSxpLGosUXNWLE11Vik7CisgICAgICAgfQor ICAgIH0KKyAgICBmR0FUSEVSX0ZJTklTSCgpCit9KQorCisKKworRVhUSU5TTihWNl92c2NhdHRl cm13ICwgInZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIudykudz1WdzMyIiwgQVRUUklCUyhBX0VYVEVO U0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfRUFfUEFHRUNST1NT LEFfTUVNU0laRV80QixBX0NWSV9HQVRIRVJfQUREUl80QixBX01FTUxJS0UsQV9OT1RFX0FOWV9S RVNPVVJDRSksICJTY2F0dGVyIFdvcmRzIiwKK3sKKyAgICBmSElERShpbnQgaTspCisJZkhJREUo aW50IGVsZW1lbnRfc2l6ZSA9IDQ7KQorICAgIGZISURFKGZTQ0FUVEVSX0lOSVQoIFJ0ViwgTXVW LCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsKKyAg ICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVBQ0goMzIsIGkpIHsKKyAg ICAgICAgRUEgPSBSdFYrVnZWLnV3W2ldOworICAgICAgICBmVkxPR19WVENNX1dPUkQoRUEsIFZ2 Vi51d1tpXSwgVndWLGksTXVWKTsKKyAgICB9CisgICAgZlNDQVRURVJfRklOSVNIKDApCit9KQor CisKKworRVhUSU5TTihWNl92c2NhdHRlcm1oICwgInZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIuaCku aD1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZB LEFfQ1ZJX1ZNLEFfRUFfUEFHRUNST1NTLEFfTUVNU0laRV8yQixBX0NWSV9HQVRIRVJfQUREUl8y QixBX01FTUxJS0UsQV9OT1RFX0FOWV9SRVNPVVJDRSksICJTY2F0dGVyIGhhbGZXb3JkcyIsCit7 CisgICAgZkhJREUoaW50IGk7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSAyOykKKyAgICBm SElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNU QllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7 CisgICAgZlZGT1JFQUNIKDE2LCBpKSB7CisgICAgICAgIEVBID0gUnRWK1Z2Vi51aFtpXTsKKyAg ICAgICAgZlZMT0dfVlRDTV9IQUxGV09SRChFQSxWdlYudWhbaV0sVndWLGksTXVWKTsKKyAgICB9 CisgICAgZlNDQVRURVJfRklOSVNIKDApCit9KQorCisKK0VYVElOU04oVjZfdnNjYXR0ZXJtd19h ZGQsICAidnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53KS53Kz1WdzMyIiwgQVRUUklCUyhBX0VYVEVO U0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfRUFfUEFHRUNST1NT LEFfTUVNU0laRV80QixBX0NWSV9HQVRIRVJfQUREUl80QixBX01FTUxJS0UsQV9DVklfU0NBVFRF Ul9XT1JEX0FDQyxBX05PVEVfQU5ZX1JFU09VUkNFKSwgIlNjYXR0ZXIgV29yZHMtQWRkIiwKK3sK KyAgICBmSElERShpbnQgaTspCisgICAgZkhJREUoaW50IEFMSUdOTUVOVD00OykKKwlmSElERShp bnQgZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUoZlNDQVRURVJfSU5JVCggUnRWLCBNdVYs IGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAg IGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgzMiwgaSkgeworICAg ICAgICBFQSA9IChSdFYrZlZBTElHTihWdlYudXdbaV0sQUxJR05NRU5UKSk7CisgICAgICAgIGZW TE9HX1ZUQ01fV09SRF9JTkNSRU1FTlQoRUEsVnZWLnV3W2ldLFZ3VixpLEFMSUdOTUVOVCxNdVYp OworICAgIH0KKyAgICBmSElERShmTE9HX1NDQVRURVJfT1AoNCk7KQorICAgIGZTQ0FUVEVSX0ZJ TklTSCgxKQorfSkKKworRVhUSU5TTihWNl92c2NhdHRlcm1oX2FkZCwgICJ2c2NhdHRlcihSdDMy LE11MixWdjMyLmgpLmgrPVZ3MzIiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ND QVRURVIsQV9DVklfVkEsQV9DVklfVk0sQV9FQV9QQUdFQ1JPU1MsQV9NRU1TSVpFXzJCLEFfQ1ZJ X0dBVEhFUl9BRERSXzJCLEFfQ1ZJX1NDQVRURVJfQUNDLEFfTUVNTElLRSxBX05PVEVfQU5ZX1JF U09VUkNFKSwgIlNjYXR0ZXIgaGFsZndvcmQtQWRkIiwKK3sKKyAgICBmSElERShpbnQgaTspCisg ICAgZkhJREUoaW50IEFMSUdOTUVOVD0yOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gMjsp CisgICAgZkhJREUoZlNDQVRURVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRfc2l6ZSk7KQorICAg IGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAgIGZWQUxJR04oUnRWLCBlbGVtZW50 X3NpemUpOworICAgIGZWRk9SRUFDSCgxNiwgaSkgeworICAgICAgICBFQSA9IChSdFYrZlZBTElH TihWdlYudWhbaV0sQUxJR05NRU5UKSk7CisgICAgICAgIGZWTE9HX1ZUQ01fSEFMRldPUkRfSU5D UkVNRU5UKEVBLFZ2Vi51aFtpXSxWd1YsaSxBTElHTk1FTlQsTXVWKTsKKyAgICB9CisgICAgZkhJ REUoZkxPR19TQ0FUVEVSX09QKDIpOykKKyAgICBmU0NBVFRFUl9GSU5JU0goMSkKK30pCisKKwor RVhUSU5TTihWNl92c2NhdHRlcm13cSwgICJpZiAoUXM0KSB2c2NhdHRlcihSdDMyLE11MixWdjMy LncpLnc9VnczMiIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfU0NBVFRFUixBX0NW SV9WQSxBX0NWSV9WTSxBX0VBX1BBR0VDUk9TUyxBX01FTVNJWkVfNEIsQV9DVklfR0FUSEVSX0FE RFJfNEIsQV9NRU1MSUtFLEFfTk9URV9BTllfUkVTT1VSQ0UpLCAiU2NhdHRlciBXb3JkcyBjb25k aXRpb25hbCIsCit7CisgICAgZkhJREUoaW50IGk7KQorCWZISURFKGludCBlbGVtZW50X3NpemUg PSA0OykKKyAgICBmSElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTsp CisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVs ZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgIEVBID0gUnRWK1Z2 Vi51d1tpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9XT1JEUShFQSxWdlYudXdbaV0sIFZ3VixpLFFz VixNdVYpOworICAgIH0KKyAgICBmU0NBVFRFUl9GSU5JU0goMCkKK30pCisKK0VYVElOU04oVjZf dnNjYXR0ZXJtaHEsICAiaWYgKFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIsVnYzMi5oKS5oPVZ3MzIi LCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklfVkEsQV9DVklf Vk0sQV9FQV9QQUdFQ1JPU1MsQV9NRU1TSVpFXzJCLEFfQ1ZJX0dBVEhFUl9BRERSXzJCLEFfTUVN TElLRSxBX05PVEVfQU5ZX1JFU09VUkNFKSwgIlNjYXR0ZXIgSGFsZldvcmRzIGNvbmRpdGlvbmFs IiwKK3sKKyAgICBmSElERShpbnQgaTspCisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7KQor ICAgIGZISURFKGZTQ0FUVEVSX0lOSVQoIFJ0ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBm VkxBU1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9z aXplKTsKKyAgICBmVkZPUkVBQ0goMTYsIGkpIHsKKyAgICAgICAgRUEgPSBSdFYrVnZWLnVoW2ld OworICAgICAgICBmVkxPR19WVENNX0hBTEZXT1JEUShFQSxWdlYudWhbaV0sVndWLGksUXNWLE11 Vik7CisgICAgfQorICAgIGZTQ0FUVEVSX0ZJTklTSCgwKQorfSkKKworCisKKworRVhUSU5TTihW Nl92c2NhdHRlcm1odyAsICJ2c2NhdHRlcihSdDMyLE11MixWdnYzMi53KS5oPVZ3MzIiLCBBVFRS SUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklfVkFfRFYsQV9DVklfVk0s QV9FQV9QQUdFQ1JPU1MsQV9NRU1TSVpFXzJCLEFfQ1ZJX0dBVEhFUl9BRERSXzRCLEFfTUVNTElL RSxBX05PVEVfQU5ZMl9SRVNPVVJDRSksICJTY2F0dGVyIFdvcmRzIiwKK3sKKyAgICBmSElERShp bnQgaTspCisgICAgZkhJREUoaW50IGo7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSAyOykK KyAgICBmSElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAg ZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRf c2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgIGZvcihqID0gMDsgaiA8IDI7 IGorKykgeworICAgICAgICAgICAgRUEgPSBSdFYrVnZ2Vi52W2pdLnV3W2ldOworICAgICAgICAg ICAgZlZMT0dfVlRDTV9IQUxGV09SRF9EVihFQSxWdnZWLnZbal0udXdbaV0sVndWLCgyKmkraiks aSxqLE11Vik7CisgICAgICAgIH0KKyAgICB9CisgICAgZlNDQVRURVJfRklOSVNIKDApCit9KQor CisKKworRVhUSU5TTihWNl92c2NhdHRlcm1od3EsICAiaWYgKFFzNCkgdnNjYXR0ZXIoUnQzMixN dTIsVnZ2MzIudykuaD1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FU VEVSLEFfQ1ZJX1ZBX0RWLEFfQ1ZJX1ZNLEFfRUFfUEFHRUNST1NTLEFfTUVNU0laRV8yQixBX0NW SV9HQVRIRVJfQUREUl80QixBX01FTUxJS0UsQV9OT1RFX0FOWTJfUkVTT1VSQ0UpLCAiU2NhdHRl ciBoYWxmd29yZHMgY29uZGl0aW9uYWwiLAoreworICAgIGZISURFKGludCBpOykKKyAgICBmSElE RShpbnQgajspCisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7KQorICAgIGZISURFKGZTQ0FU VEVSX0lOSVQoIFJ0ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11Viwg ZWxlbWVudF9zaXplKTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZP UkVBQ0goMzIsIGkpIHsKKyAgICAgICAgZm9yKGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAg ICAgICBFQSA9IFJ0VitWdnZWLnZbal0udXdbaV07CisgICAgICAgICAgICBmVkxPR19WVENNX0hB TEZXT1JEUV9EVihFQSxWdnZWLnZbal0udXdbaV0sVndWLCgyKmkraiksUXNWLGksaixNdVYpOwor ICAgICAgICB9CisgICAgfQorICAgIGZTQ0FUVEVSX0ZJTklTSCgwKQorfSkKKworRVhUSU5TTihW Nl92c2NhdHRlcm1od19hZGQsICAidnNjYXR0ZXIoUnQzMixNdTIsVnZ2MzIudykuaCs9VnczMiIs IEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfU0NBVFRFUixBX0NWSV9WQV9EVixBX0NW SV9WTSxBX0VBX1BBR0VDUk9TUyxBX01FTVNJWkVfMkIsQV9DVklfR0FUSEVSX0FERFJfNEIsQV9D VklfU0NBVFRFUl9BQ0MsQV9NRU1MSUtFLEFfTk9URV9BTlkyX1JFU09VUkNFKSwgIlNjYXR0ZXIg aGFsZndvcmRzLWFkZCIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKGludCBqOykK KyAgICBmSElERShpbnQgQUxJR05NRU5UPTI7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSAy OykKKyAgICBmSElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisg ICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1l bnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgIGZvcihqID0gMDsgaiA8 IDI7IGorKykgeworICAgICAgICAgICAgIEVBID0gIFJ0ViArIGZWQUxJR04oVnZ2Vi52W2pdLnV3 W2ldLEFMSUdOTUVOVCk7OworICAgICAgICAgICAgIGZWTE9HX1ZUQ01fSEFMRldPUkRfSU5DUkVN RU5UX0RWKEVBLFZ2dlYudltqXS51d1tpXSxWd1YsKDIqaStqKSxpLGosQUxJR05NRU5ULE11Vik7 CisgICAgICAgIH0KKyAgICB9CisgICAgZkhJREUoZkxPR19TQ0FUVEVSX09QKDIpOykKKyAgICBm U0NBVFRFUl9GSU5JU0goMSkKK30pCitERUZfQ1ZJX01BUFBJTkcoVjZfdnNjYXR0ZXJtd19hbHQs ICAidnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53KT1WdzMyLnciLCAgInZzY2F0dGVyKFJ0MzIsTXUy LFZ2MzIudykudz1WdzMyIikKK0RFRl9DVklfTUFQUElORyhWNl92c2NhdHRlcm13aF9hbHQsICAi dnNjYXR0ZXIoUnQzMixNdTIsVnZ2MzIudyk9VnczMi5oIiwgICJ2c2NhdHRlcihSdDMyLE11MixW dnYzMi53KS5oPVZ3MzIiKQorREVGX0NWSV9NQVBQSU5HKFY2X3ZzY2F0dGVybWhfYWx0LCAgInZz Y2F0dGVyKFJ0MzIsTXUyLFZ2MzIuaCk9VnczMi5oIiwgICJ2c2NhdHRlcihSdDMyLE11MixWdjMy LmgpLmg9VnczMiIpCisKK0RFRl9DVklfTUFQUElORyhWNl92c2NhdHRlcm13X2FkZF9hbHQsICAi dnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53KSs9VnczMi53IiwgICJ2c2NhdHRlcihSdDMyLE11MixW djMyLncpLncrPVZ3MzIiKQorREVGX0NWSV9NQVBQSU5HKFY2X3ZzY2F0dGVybXdoX2FkZF9hbHQs ICAidnNjYXR0ZXIoUnQzMixNdTIsVnZ2MzIudykrPVZ3MzIuaCIsICAidnNjYXR0ZXIoUnQzMixN dTIsVnZ2MzIudykuaCs9VnczMiIpCitERUZfQ1ZJX01BUFBJTkcoVjZfdnNjYXR0ZXJtaF9hZGRf YWx0LCAgInZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIuaCkrPVZ3MzIuaCIsICAidnNjYXR0ZXIoUnQz MixNdTIsVnYzMi5oKS5oKz1WdzMyIikKKworREVGX0NWSV9NQVBQSU5HKFY2X3ZzY2F0dGVybXdx X2FsdCwgICJpZiAoUXM0KSB2c2NhdHRlcihSdDMyLE11MixWdjMyLncpPVZ3MzIudyIsICAiaWYg KFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53KS53PVZ3MzIiKQorREVGX0NWSV9NQVBQSU5H KFY2X3ZzY2F0dGVybXdocV9hbHQsICAiaWYgKFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIsVnZ2MzIu dyk9VnczMi5oIiwgICJpZiAoUXM0KSB2c2NhdHRlcihSdDMyLE11MixWdnYzMi53KS5oPVZ3MzIi KQorREVGX0NWSV9NQVBQSU5HKFY2X3ZzY2F0dGVybWhxX2FsdCwgICJpZiAoUXM0KSB2c2NhdHRl cihSdDMyLE11MixWdjMyLmgpPVZ3MzIuaCIsICAiaWYgKFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIs VnYzMi5oKS5oPVZ3MzIiKQorCitFWFRJTlNOKFY2X3ZwcmVmaXhxYiwiVmQzMi5iPXByZWZpeHN1 bShRdjQpIiwgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZTLEFfQ1ZJX0VBUkxZ LEFfTk9URV9TSElGVF9SRVNPVVJDRSksICAicGFyYWxsZWwgcHJlZml4IHN1bSBvZiBRIGludG8g Ynl0ZSIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKHNpemUxdV90IGFjYyA9IDA7 KQorICAgIGZWRk9SRUFDSCg4LCBpKSB7CisgICAgICAgIGFjYyArPSBmR0VUUUJJVChRdlYsaSk7 CisgICAgICAgIFZkVi51YltpXSA9IGFjYzsKKyAgICB9CisgICAgfSApCitFWFRJTlNOKFY2X3Zw cmVmaXhxaCwiVmQzMi5oPXByZWZpeHN1bShRdjQpIiwgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFf Q1ZJLEFfQ1ZJX1ZTLEFfQ1ZJX0VBUkxZLEFfTk9URV9TSElGVF9SRVNPVVJDRSksICAicGFyYWxs ZWwgcHJlZml4IHN1bSBvZiBRIGludG8gaGFsZndvcmRzIiwKK3sKKyAgICBmSElERShpbnQgaTsp CisgICAgZkhJREUoc2l6ZTJ1X3QgYWNjID0gMDspCisgICAgZlZGT1JFQUNIKDE2LCBpKSB7Cisg ICAgICAgIGFjYyArPSBmR0VUUUJJVChRdlYsaSoyKzApOworICAgICAgICBhY2MgKz0gZkdFVFFC SVQoUXZWLGkqMisxKTsKKyAgICAgICAgVmRWLnVoW2ldID0gYWNjOworICAgIH0KKyAgICB9ICkK K0VYVElOU04oVjZfdnByZWZpeHF3LCJWZDMyLnc9cHJlZml4c3VtKFF2NCkiLCAgIEFUVFJJQlMo QV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlMsQV9DVklfRUFSTFksQV9OT1RFX1NISUZUX1JFU09V UkNFKSwgICJwYXJhbGxlbCBwcmVmaXggc3VtIG9mIFEgaW50byB3b3JkcyIsCit7CisgICAgZkhJ REUoaW50IGk7KQorICAgIGZISURFKHNpemU0dV90IGFjYyA9IDA7KQorICAgIGZWRk9SRUFDSCgz MiwgaSkgeworICAgICAgICBhY2MgKz0gZkdFVFFCSVQoUXZWLGkqNCswKTsKKyAgICAgICAgYWNj ICs9IGZHRVRRQklUKFF2VixpKjQrMSk7CisgICAgICAgIGFjYyArPSBmR0VUUUJJVChRdlYsaSo0 KzIpOworICAgICAgICBhY2MgKz0gZkdFVFFCSVQoUXZWLGkqNCszKTsKKyAgICAgICAgVmRWLnV3 W2ldID0gYWNjOworICAgIH0KKyAgICB9ICkKKworCisKKworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgREVCVUcgVmVjdG9yL1JlZ2lzdGVyIFByaW50aW5nCisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCisjZGVmaW5lIFBSSU5UX1ZVKFRZUEUsIFRZUEUyLCBDT1VOVClcCisgICAgaW50IGk7 ICBcCisgICAgc2l6ZTR1X3QgdmVjX2xlbiA9IGZWQllURVMoKTtcCisgICAgZnByaW50ZihzdGRv dXQsIlYlMmQ6ICIsVnVOKTsgIFwKKyAgICBmb3IgKGk9MDtpPHZlY19sZW4+PkNPVU5UO2krKykg eyAgICAgICAgIFwKKyAgICAgICAgZnByaW50ZihzdGRvdXQsVFlQRTIgIiAiLCBWdVYuVFlQRVtp XSk7IFwKKyAgICB9OyAgXAorICAgIGZwcmludGYoc3Rkb3V0LCJcXG4iKTsgIFwKKwlmZmx1c2go c3Rkb3V0KTtcCisKK0VYVElOU04oVjZfcHYzMiwgICAgInB2MzIoVnUzMikiLCAgIEFUVFJJQlMo QV9FWFRFTlNJT04sQV9DVkksQV9WREJHLEFfRkFLRUlOU04pLCJQcmludCBhIFZlY3RvciIsICB7 ICAgUFJJTlRfVlUodXcsICIlMDh4IiwgMik7ICAgIH0pCitFWFRJTlNOKFY2X3B2MzJkLCAgICJw djMyZChWdTMyKSIsICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfVkRCRyxBX0ZBS0VJTlNO KSwiUHJpbnQgYSBWZWN0b3IiLCAgeyAgIFBSSU5UX1ZVKHcsICAiJTEwZCIsIDIpOyAgICB9KQor RVhUSU5TTihWNl9wdjMyZHUsICAicHYzMmR1KFZ1MzIpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixB X0NWSSxBX1ZEQkcsQV9GQUtFSU5TTiksIlByaW50IGEgVmVjdG9yIiwgIHsgICBQUklOVF9WVSh1 dywgIiUxMHUiLCAyKTsgICAgfSkKK0VYVElOU04oVjZfcHY2NGQsICAgInB2NjRkKFZ1MzIpIiwg IEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9WREJHLEFfRkFLRUlOU04pLCJQcmludCBhIFZl Y3RvciIsICB7ICAgUFJJTlRfVlUodWQsICIlbGxpIiwgNCk7ICAgIH0pCitFWFRJTlNOKFY2X3B2 MTYsICAgICJwdjE2KFZ1MzIpIiwgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfVkRCRyxB X0ZBS0VJTlNOKSwiUHJpbnQgYSBWZWN0b3IiLCAgeyAgIFBSSU5UX1ZVKHVoLCAiJTA0eCIsIDEp OyAgIH0pCitFWFRJTlNOKFY2X3B2MTZkLCAgICJwdjE2ZChWdTMyKSIsICBBVFRSSUJTKEFfRVhU RU5TSU9OLEFfQ1ZJLEFfVkRCRyxBX0ZBS0VJTlNOKSwiUHJpbnQgYSBWZWN0b3IiLCAgeyAgIFBS SU5UX1ZVKGgsICAiJTVkIiwgIDEpOyAgIH0pCitFWFRJTlNOKFY2X3B2OGQsICAgICJwdjhkKFZ1 MzIpIiwgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfVkRCRyxBX0ZBS0VJTlNOKSwiUHJp bnQgYSBWZWN0b3IiLCAgeyAgIFBSSU5UX1ZVKHViLCAiJTN1IiwgIDApOyAgIH0pCitFWFRJTlNO KFY2X3B2OCwgICAgICJwdjgoVnUzMikiLCAgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFf VkRCRyxBX0ZBS0VJTlNOKSwiUHJpbnQgYSBWZWN0b3IiLCAgeyAgIFBSSU5UX1ZVKHViLCAiJTAy eCIsIDApOyAgIH0pCitFWFRJTlNOKFY2X3ByZWcsICAgICJwcmVnKFJ1MzIpIiwgICBBVFRSSUJT KEFfRVhURU5TSU9OLEFfQ1ZJLEFfVkRCRyxBX0ZBS0VJTlNOKSwiUHJpbnQgYSBzY2FsYXIiLCAg eyAgIHByaW50ZigiUiUwMmQ9MHglMDh4XFxuIiwgUnVOLCBSdVYpO30pCitFWFRJTlNOKFY2X3By ZWdkLCAgICJwcmVnZChSdTMyKSIsICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfVkRCRyxB X0ZBS0VJTlNOKSwiUHJpbnQgYSBzY2FsYXIiLCAgeyAgIHByaW50ZigiUiUwMmQ9JTEwZFxcbiIs IFJ1TiwgUnVWKTsgfSkKK0VYVElOU04oVjZfcHJlZ2YsICAgInByZWdmKFJ1MzIpIiwgIEFUVFJJ QlMoQV9FWFRFTlNJT04sQV9DVkksQV9WREJHLEFfRkFLRUlOU04pLCJQcmludCBhIHNjYWxhciIs ICB7ICAgcHJpbnRmKCJSJTAyZD0lZlxcbiIsIFJ1TiwgKGZsb2F0KVJ1Vik7IH0pCisKK0VYVElO U04oVjZfcHosICAgCSJweihadTIpIiwgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9WREJH LEFfRkFLRUlOU04pLCJQcmludCBhIHNjYWxhciIsICB7CisJZnByaW50ZihzdGRvdXQsIlolZDpc XG4iLCBadU4pOworCWZvcihpbnQgbT0wLCBsPTA7IGwgPCBmVkJZVEVTKCkvNC84OyBsKyspCisJ eworCQlmcHJpbnRmKHN0ZG91dCwiXFx0Iik7CisJCWZvcihpbnQgayA9IDA7IGsgPCA4OyBrKyss bSsrKQorCQkJZnByaW50ZihzdGRvdXQsIiV4ICIsIFp1Vi53W21dKTsKKwkJZnByaW50ZihzdGRv dXQsIlxcbiIpOworCX0KKwlmcHJpbnRmKHN0ZG91dCwiXFxuIik7CisJZmZsdXNoKHN0ZG91dCk7 Cit9KQorCisKKworCitFWFRJTlNOKFY2X3BwcmVkLCAgICJwcHJlZChRczQpIiwgICBBVFRSSUJT KEFfRVhURU5TSU9OLEFfQ1ZJLEFfVkRCRyxBX0ZBS0VJTlNOKSwiUHJpbnQgUHJlZGljYXRlcyIs CisgICAgaW50IGo7CisgICAgZnByaW50ZihzdGRvdXQsIlElZDogWyIsUXNOKTsKKyAgICBmb3Ig KGogPSAwOyBqIDwgZlZCWVRFUygpLTE7IGorKyl7CisgICAgICAgIGZwcmludGYoc3Rkb3V0LCIl MXgsIiwgZkdFVFFCSVQoUXNWLGopKTsKKyAgICB9CisgICAgZnByaW50ZihzdGRvdXQsIiUxeCIs IGZHRVRRQklUKFFzVixqKSk7CisgICAgZnByaW50ZihzdGRvdXQsIl1cXG4iKTsKKwlmZmx1c2go c3Rkb3V0KTsKKykKKworCisKKworI3VuZGVmIEFUVFJfVk1FTQorI3VuZGVmIEFUVFJfVk1FTVUK KyN1bmRlZiBBVFRSX1ZNRU1fTlQKKworI2VuZGlmIC8qIE5PX01NVkVDICovCisKKyNpZmRlZiBf X1NFTEZfREVGX0VYVElOU04KKyN1bmRlZiBFWFRJTlNOCisjdW5kZWYgX19TRUxGX0RFRl9FWFRJ TlNOCisjZW5kaWYKLS0gCjIuNy40Cgo=