From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Noah Lavine Newsgroups: gmane.lisp.guile.devel Subject: Storing JIT Code Date: Sun, 18 Jul 2010 22:01:36 -0400 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016367d6298daea4a048bb3f2ee X-Trace: dough.gmane.org 1279504925 25015 80.91.229.12 (19 Jul 2010 02:02:05 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 19 Jul 2010 02:02:05 +0000 (UTC) To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Mon Jul 19 04:02:03 2010 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Oaffu-0005dJ-Tt for guile-devel@m.gmane.org; Mon, 19 Jul 2010 04:02:02 +0200 Original-Received: from localhost ([127.0.0.1]:37657 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Oafft-0002Yf-M9 for guile-devel@m.gmane.org; Sun, 18 Jul 2010 22:01:45 -0400 Original-Received: from [140.186.70.92] (port=53415 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Oaffn-0002YR-4s for guile-devel@gnu.org; Sun, 18 Jul 2010 22:01:40 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Oaffm-0003bI-1H for guile-devel@gnu.org; Sun, 18 Jul 2010 22:01:39 -0400 Original-Received: from mail-iw0-f169.google.com ([209.85.214.169]:50179) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Oaffl-0003b9-JK for guile-devel@gnu.org; Sun, 18 Jul 2010 22:01:37 -0400 Original-Received: by iwn2 with SMTP id 2so5237926iwn.0 for ; Sun, 18 Jul 2010 19:01:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received:date :x-google-sender-auth:message-id:subject:from:to:content-type; bh=nGgAZqRFD00SDxx2+9dmoG5ema8MdijG3FOI+Htb5TA=; b=NqJbGY3Lc7YhSkcVEtwUXGUs79XMl8PTc0d+QRmKMwRt9Tb7OOzchJuX2pjiveYq6i PlEGUHI0HiDPltB9DPe9wkarE0wqLL94EZTPvXfpVVz2fBMu50z7dkZPsOGIwLUaFnke 6wCO1q+c0nciquVMwaJE/J+89rZIJfKtYFJA0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; b=vsFIqjUOXZzGvtMK8dz9FYzgl2Y0Sw7oyqYmMuCiqz8rl7gEW2HPs/VaQnS7qWnjxB c1/2Qwo17C7VQRIduB6n9ROZv2LgT/tBWhAus6URujXMQKuk7q/p6KsAWHMDCXI2LHQ6 nxfkY7vOs1t0fTM2nStjfgqCJHcxDdJLYNSKQ= Original-Received: by 10.231.191.74 with SMTP id dl10mr5047229ibb.157.1279504896681; Sun, 18 Jul 2010 19:01:36 -0700 (PDT) Original-Received: by 10.231.19.133 with HTTP; Sun, 18 Jul 2010 19:01:36 -0700 (PDT) X-Google-Sender-Auth: 2esi8wSIVM3ISqmhtwVLFi1oPWc X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:10693 Archived-At: --0016367d6298daea4a048bb3f2ee Content-Type: text/plain; charset=ISO-8859-1 Hello, Attached are some patches I made for storing JIT code associated with objcode objects. These are based on some threads a few weeks ago in which we discussed how to handle JIT code, with the eventual goal of adding a JIT compiler to Guile (I'm working on it). The goal is to have a piece of JIT code associated with each objcode object. Another possibility would be to associate them with procedure objects, but that was rejected because it would make the procedure object 5 words long, which might mess up caching. I've tried two ways to do this so far: putting the JIT code in a struct scm_objcode and putting it in the SCM object that always wraps one of those structs. I tried the first way first, but I hit problems because strings of bytecode are expected to be valid C structs, and adding a pointer would require leaving more space there, which would leak abstractions. Therefore, these patches implement the second way. (A possible third way would be to put the JIT code in a property.) The first patch adds the extra slot to the SCM object and initializes it to C's NULL. This required changing a few functions in objcode.c to make the SCMs differently. Unfortunately, I also had to change all of the statically-generated objcode objects in continuations.c, control.c, gsubr.c, foreign.c, and smob.c, so the patch is quite long. The second patch adds some infrastructure to the VM to call a dummy JIT compiler, cache its results, and run the resulting code if any is generated. I set up a return convention so that the JIT compiler can fail to compile things and the VM will run as usual, which I think will be useful while there is a partially-complete compiler. (Although I'm not convinced I've chosen the best values for it. Currently a NULL jitcode means we've never tried to compile, and an SCM_BOOL_F means we tried and failed, and therefore won't try again. Are there better choices?) I'm afraid these patches will require the set of small fixes I just emailed, because one of the diffs modifies a comment that was added in one of those patches. I believe the first patch is complete, but the second patch is quite rough still. What do you think of them? Noah --0016367d6298daea4a048bb3f2ee Content-Type: application/octet-stream; name="0001-Add-JIT-pointers.patch" Content-Disposition: attachment; filename="0001-Add-JIT-pointers.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gbso3u8c0 RnJvbSBmZGUxNGEwYTIxYzY4ODk3ODA5M2M3ODk4OTliZDgzMWY3Y2ViMmRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIExhdmluZSA8bmxhdmluZUBoYXZlcmZvcmQuZWR1PgpE YXRlOiBTdW4sIDE4IEp1bCAyMDEwIDEzOjMwOjUzIC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gQWRk IEpJVCBwb2ludGVycwoKQWRkIGEgZmlmdGggbWFjaGluZSB3b3JkIHRvIHRoZSBTQ00gb2JqZWN0 cyB0aGF0IGhvbGQgc3RydWN0IHNjbV9vYmpjb2RlcyB0bwpzdG9yZSBKSVQgY29kZSBjb3JyZXNw b25kaW5nIHRvIHRoYXQgb2JqZWN0IGNvZGUsIGFuZCBpbml0aWFsaXplIHRoZW0gdG8KTlVMTC4K LS0tCiBsaWJndWlsZS9jb250aW51YXRpb25zLmMgfCAgICAzICstCiBsaWJndWlsZS9jb250cm9s LmMgICAgICAgfCAgICAzICstCiBsaWJndWlsZS9mb3JlaWduLmMgICAgICAgfCAgIDUyICsrKyst LS0KIGxpYmd1aWxlL2dzdWJyLmMgICAgICAgICB8ICAzNzQgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBsaWJndWlsZS9vYmpjb2Rlcy5jICAgICAgfCAgIDM3 ICsrKystLQogbGliZ3VpbGUvb2JqY29kZXMuaCAgICAgIHwgICAgMiArCiBsaWJndWlsZS9zbW9i LmMgICAgICAgICAgfCAgIDQ3ICsrKystLQogNyBmaWxlcyBjaGFuZ2VkLCAzNDUgaW5zZXJ0aW9u cygrKSwgMTczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYmd1aWxlL2NvbnRpbnVhdGlv bnMuYyBiL2xpYmd1aWxlL2NvbnRpbnVhdGlvbnMuYwppbmRleCBlZDQ3NmE4Li5lOTk3NGUxIDEw MDY0NAotLS0gYS9saWJndWlsZS9jb250aW51YXRpb25zLmMKKysrIGIvbGliZ3VpbGUvY29udGlu dWF0aW9ucy5jCkBAIC05OCw3ICs5OCw4IEBAIHN0YXRpYyBjb25zdCB0eXBlIHN5bSMjX191bmFs aWduZWRbXQogICBTQ01fREVDTEFSRV9TVEFUSUNfQUxJR05FRF9BUlJBWSAoc2NtX3RfdWludDgs IHN5bSMjX19ieXRlY29kZSk7ICAgICAgXAogICBTQ01fU1RBVElDX0FMSUdORURfQVJSQVkgKDgs IHNjbV90X2NlbGwsIHN5bSMjX19jZWxscykgPSB7ICAgICAgICAgICAgXAogICAgIHsgU1RBVElD X09CSkNPREVfVEFHLCBTQ01fUEFDSyAoc3ltIyNfX2J5dGVjb2RlKSB9LCAgICAgICAgICAgICAg ICAgXAotICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0s ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgTlVMTCB9ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAogICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogICBzdGF0aWMgY29uc3QgU0NNIHN5bSA9IFNDTV9QQUNLIChz eW0jI19fY2VsbHMpOyAgICAgICAgICAgICAgICAgICAgICAgXAogICBTQ01fU1RBVElDX0FMSUdO RURfQVJSQVkgKDgsIHNjbV90X3VpbnQ4LCBzeW0jI19fYnl0ZWNvZGUpCmRpZmYgLS1naXQgYS9s aWJndWlsZS9jb250cm9sLmMgYi9saWJndWlsZS9jb250cm9sLmMKaW5kZXggY2FmNzllYi4uZmNh MzlhYiAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvY29udHJvbC5jCisrKyBiL2xpYmd1aWxlL2NvbnRy b2wuYwpAQCAtMTA1LDcgKzEwNSw4IEBAIHN0YXRpYyBjb25zdCB0eXBlIHN5bSMjX191bmFsaWdu ZWRbXQogICBTQ01fREVDTEFSRV9TVEFUSUNfQUxJR05FRF9BUlJBWSAoc2NtX3RfdWludDgsIHN5 bSMjX19ieXRlY29kZSk7ICAgICAgXAogICBTQ01fU1RBVElDX0FMSUdORURfQVJSQVkgKDgsIHNj bV90X2NlbGwsIHN5bSMjX19jZWxscykgPSB7ICAgICAgICAgICAgXAogICAgIHsgU1RBVElDX09C SkNPREVfVEFHLCBTQ01fUEFDSyAoc3ltIyNfX2J5dGVjb2RlKSB9LCAgICAgICAgICAgICAgICAg XAotICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgTlVMTCB9ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog ICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAogICBzdGF0aWMgY29uc3QgU0NNIHN5bSA9IFNDTV9QQUNLIChzeW0j I19fY2VsbHMpOyAgICAgICAgICAgICAgICAgICAgICAgXAogICBTQ01fU1RBVElDX0FMSUdORURf QVJSQVkgKDgsIHNjbV90X3VpbnQ4LCBzeW0jI19fYnl0ZWNvZGUpCmRpZmYgLS1naXQgYS9saWJn dWlsZS9mb3JlaWduLmMgYi9saWJndWlsZS9mb3JlaWduLmMKaW5kZXggYzU0MWQxMy4uNmY2OGNi YSAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvZm9yZWlnbi5jCisrKyBiL2xpYmd1aWxlL2ZvcmVpZ24u YwpAQCAtNzg4LDIwICs3ODgsMjIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCiAjdW5kZWYgQ09E RQogI3VuZGVmIE1FVEEKLSN1bmRlZiBPQkpDT0RFX0hFQURFUgorLyogZG9uJ3QgdW5kZWYgT0JK Q09ERV9IRUFERVIgYmVjYXVzZSB0aGUgaW5pdCBmdW5jdGlvbiB3aWxsIHVzZQorICogaXQgdG8g dmVyaWZ5IHRoYXQgaXQncyB0aGUgcmlnaHQgc2l6ZS4gKi8KICN1bmRlZiBNRVRBX0hFQURFUgog CiAvKgotIChkZWZ1biBnZW5lcmF0ZS1vYmpjb2RlLWNlbGxzIChuKQotICAgIkdlbmVyYXRlIG9i amNvZGUgY2VsbHMgZm9yIHVwIHRvIE4gYXJndW1lbnRzIgotICAgKGludGVyYWN0aXZlICJwIikK LSAgIChsZXQgKChpIDApKQotICAgICAod2hpbGUgKDwgaSBuKQotICAgICAgIChpbnNlcnQKLSAg ICAgICAgKGZvcm1hdCAiICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5 dGVjb2RlLmJ5dGVzICsgJWQpIH0sXG4iCi0gICAgICAgICAgICAgICAgKCogKCsgNCA0IDggNCA0 IDMyKSBpKSkpCi0gICAgICAgKGluc2VydCAiICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDAp IH0sXG4iKQotICAgICAgIChzZXRxIGkgKDErIGkpKSkpKQorKGRlZnVuIGdlbmVyYXRlLW9iamNv ZGUtY2VsbHMgKG4pCisgICJHZW5lcmF0ZSBvYmpjb2RlIGNlbGxzIGZvciB1cCB0byBOIGFyZ3Vt ZW50cyIKKyAgKGludGVyYWN0aXZlICJwIikKKyAgKGxldCAoKGkgMCkpCisgICAgKHdoaWxlICg8 IGkgbikKKyAgICAgIChpbnNlcnQKKyAgICAgICAoZm9ybWF0ICIgICAgeyBTVEFUSUNfT0JKQ09E RV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAlZCkgfSxcbiIKKyAgICAgICAg ICAgICAgICgqICgrIDQgNCA4IDQgNCAzMikgaSkpKQorICAgICAgKGluc2VydCAiICAgIHsgU0NN X0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sXG4iKQorICAgICAgKGluc2VydCAiICAgIHsgTlVMTCwg MCB9LFxuIikKKyAgICAgIChzZXRxIGkgKDErIGkpKSkpKQogKi8KICNkZWZpbmUgU1RBVElDX09C SkNPREVfVEFHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIFNDTV9Q QUNLIChzY21fdGM3X29iamNvZGUgfCAoU0NNX0ZfT0JKQ09ERV9JU19TVEFUSUMgPDwgOCkpCkBA IC04MDksNDUgKzgxMSw1NSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CiBzdGF0aWMgY29uc3Qgc3Ry dWN0CiB7CiAgIHNjbV90X3VpbnQ2NCBkdW1teTsgLyogYWxpZ25tZW50ICovCi0gIHNjbV90X2Nl bGwgY2VsbHNbMTAgKiAyXTsgLyogMTAgZG91YmxlIGNlbGxzICovCisgIHNjbV90X2NlbGwgY2Vs bHNbMTAgKiAzXTsgLyogMTAgc2l4LXdvcmQgY2VsbHMgKGxhc3Qgd29yZCB1bnVzZWQpICovCiB9 IG9iamNvZGVfY2VsbHMgPSB7CiAgIDAsCiAgIC8qIEMtdSAxIDAgTS14IGdlbmVyYXRlLW9iamNv ZGUtY2VsbHMgUkVUICovCi0gIHsKKyAgeyAKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NN X1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDApIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01f UEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywg U0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDU2KSB9LAogICAgIHsgU0NNX0JPT0xfRiwg U0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9U QUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAxMTIpIH0sCiAgICAgeyBTQ01fQk9P TF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpD T0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDE2OCkgfSwKICAgICB7IFND TV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogICAgIHsgU1RBVElD X09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgMjI0KSB9LAogICAg IHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBT VEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAyODApIH0s CiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAg ICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDMz NikgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9 LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVz ICsgMzkyKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxM LCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUu Ynl0ZXMgKyA0NDgpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7 IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRl Y29kZS5ieXRlcyArIDUwNCkgfSwKLSAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9Cisg ICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgfQog fTsKIAogc3RhdGljIGNvbnN0IFNDTSBvYmpjb2RlX3RyYW1wb2xpbmVzWzEwXSA9IHsKICAgU0NN X1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxz LmNlbGxzKzIpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys0KSwKKyAgU0NNX1BB Q0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMyksCiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNl bGxzKzYpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys4KSwKLSAgU0NNX1BBQ0sg KG9iamNvZGVfY2VsbHMuY2VsbHMrMTApLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxs cys5KSwKICAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTIpLAotICBTQ01fUEFDSyAo b2JqY29kZV9jZWxscy5jZWxscysxNCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxz KzE2KSwKKyAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTUpLAogICBTQ01fUEFDSyAo b2JqY29kZV9jZWxscy5jZWxscysxOCksCisgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxz KzIxKSwKKyAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMjQpLAorICBTQ01fUEFDSyAo b2JqY29kZV9jZWxscy5jZWxscysyNyksCiB9OwogCiBzdGF0aWMgU0NNCmRpZmYgLS1naXQgYS9s aWJndWlsZS9nc3Vici5jIGIvbGliZ3VpbGUvZ3N1YnIuYwppbmRleCBhZjFjMDMxLi5jZWFkZGM2 IDEwMDY0NAotLS0gYS9saWJndWlsZS9nc3Vici5jCisrKyBiL2xpYmd1aWxlL2dzdWJyLmMKQEAg LTI3NCwzNiArMjc0LDM5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKICN1bmRlZiBBQwogI3VuZGVm IEJDCiAjdW5kZWYgQUJDCi0jdW5kZWYgT0JKQ09ERV9IRUFERVIKKy8qIGRvbid0IHVuZGVmIE9C SkNPREVfSEVBREVSIGJlY2F1c2Ugc2NtX2luaXRfZ3N1YnIgd2lsbCB1c2UgaXQgdG8gdmVyaWZ5 CisgKiB0aGF0IGl0cyBzaXplIGlzIGNvcnJlY3QuICovCiAjdW5kZWYgTUVUQV9IRUFERVIKICN1 bmRlZiBNRVRBCiAKIC8qCiAgOzsgKG5hcmdzICogbmFyZ3MpICsgbm9wdCArIHJlc3QgKiAobmFy Z3MgKyAxKQotIChkZWZ1biBnZW5lcmF0ZS1vYmpjb2RlLWNlbGxzLWhlbHBlciAobikKLSAgICJH ZW5lcmF0ZSBvYmpjb2RlIGNlbGxzIGZvciBOIGFyZ3VtZW50cyIKLSAgIChpbnRlcmFjdGl2ZSAi cCIpCi0gICAoaW5zZXJ0IChmb3JtYXQgIiAgICAvXCogJWQgYXJndW1lbnRzICpcL1xuIiBuKSkK LSAgIChsZXQgKChucmVxIG4pKQotICAgICAod2hpbGUgKDw9IDAgbnJlcSkKLSAgICAgICAobGV0 ICgobm9wdCAoLSBuIG5yZXEpKSkKLSAgICAgICAgIChpbnNlcnQKLSAgICAgICAgICAoZm9ybWF0 ICIgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMg KyAlZCkgfSxcbiIKLSAgICAgICAgICAgICAgICAgICgqICgrIDQgNCAxNiA0IDQgMzIpCi0gICAg ICAgICAgICAgICAgICAgICAoKyAoKiBuIG4pIG5vcHQpKSkpCi0gICAgICAgICAoaW5zZXJ0ICIg ICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSxcbiIpCi0gICAgICAgICAoc2V0cSBucmVx ICgxLSBucmVxKSkpKQotICAgICAoaW5zZXJ0ICJcbiIpCi0gICAgIChzZXRxIG5yZXEgKDEtIG4p KQotICAgICAod2hpbGUgKDw9IDAgbnJlcSkKLSAgICAgICAobGV0ICgobm9wdCAoLSBuIG5yZXEg MSkpKQotICAgICAgICAgKGluc2VydAotICAgICAgICAgIChmb3JtYXQgIiAgICB7IFNUQVRJQ19P QkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArICVkKSB9LFxuIgotICAg ICAgICAgICAgICAgICAgKCogKCsgNCA0IDE2IDQgNCAzMikKLSAgICAgICAgICAgICAgICAgICAg ICgrICgqIG4gbikgbm9wdCBuIDEpKSkpCi0gICAgICAgICAoaW5zZXJ0ICIgICAgeyBTQ01fQk9P TF9GLCBTQ01fUEFDSyAoMCkgfSxcbiIpCi0gICAgICAgICAoc2V0cSBucmVxICgxLSBucmVxKSkp KQotICAgICAoaW5zZXJ0ICJcbiIpKSkKKyhkZWZ1biBnZW5lcmF0ZS1vYmpjb2RlLWNlbGxzLWhl bHBlciAobikKKyAgIkdlbmVyYXRlIG9iamNvZGUgY2VsbHMgZm9yIE4gYXJndW1lbnRzIgorICAo aW50ZXJhY3RpdmUgInAiKQorICAoaW5zZXJ0IChmb3JtYXQgIiAgICAvXCogJWQgYXJndW1lbnRz ICpcL1xuIiBuKSkKKyAgKGxldCAoKG5yZXEgbikpCisgICAgKHdoaWxlICg8PSAwIG5yZXEpCisg ICAgICAobGV0ICgobm9wdCAoLSBuIG5yZXEpKSkKKyAgICAgICAgKGluc2VydAorICAgICAgICAg KGZvcm1hdCAiICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2Rl LmJ5dGVzICsgJWQpIH0sXG4iCisgICAgICAgICAgICAgICAgICgqICgrIDQgNCAxNiA0IDQgMzIp CisgICAgICAgICAgICAgICAgICAgICgrICgqIG4gbikgbm9wdCkpKSkKKyAgICAgICAgKGluc2Vy dCAiICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sXG4iKQorICAgICAgICAoaW5zZXJ0 ICIgICAgeyBOVUxMLCAwIH0sXG4iKQorICAgICAgICAoc2V0cSBucmVxICgxLSBucmVxKSkpKQor ICAgIChpbnNlcnQgIlxuIikKKyAgICAoc2V0cSBucmVxICgxLSBuKSkKKyAgICAod2hpbGUgKDw9 IDAgbnJlcSkKKyAgICAgIChsZXQgKChub3B0ICgtIG4gbnJlcSAxKSkpCisgICAgICAgIChpbnNl cnQKKyAgICAgICAgIChmb3JtYXQgIiAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sg KHJhd19ieXRlY29kZS5ieXRlcyArICVkKSB9LFxuIgorICAgICAgICAgICAgICAgICAoKiAoKyA0 IDQgMTYgNCA0IDMyKQorICAgICAgICAgICAgICAgICAgICAoKyAoKiBuIG4pIG5vcHQgbiAxKSkp KQorICAgICAgICAoaW5zZXJ0ICIgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSxcbiIp CisgICAgICAgIChpbnNlcnQgIiAgICB7IE5VTEwsIDAgfSxcbiIpCisgICAgICAgIChzZXRxIG5y ZXEgKDEtIG5yZXEpKSkpCisgICAgKGluc2VydCAiXG4iKSkpCiAKICAoZGVmdW4gZ2VuZXJhdGUt b2JqY29kZS1jZWxscyAobikKICAgICJHZW5lcmF0ZSBvYmpjb2RlIGNlbGxzIGZvciB1cCB0byBO IGFyZ3VtZW50cyIKQEAgLTMyMCw3ICszMjMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CiBzdGF0 aWMgY29uc3Qgc3RydWN0CiB7CiAgIHNjbV90X3VpbnQ2NCBkdW1teTsgLyogYWxpZ25tZW50ICov Ci0gIHNjbV90X2NlbGwgY2VsbHNbMTIxICogMl07IC8qIDExKjExIGRvdWJsZSBjZWxscyAqLwor ICBzY21fdF9jZWxsIGNlbGxzWzEyMSAqIDNdOyAvKiAxMSoxMSB0cmlwbGUgY2VsbHMgKGxhc3Qg d29yZCB1bnVzZWQpICovCiB9IG9iamNvZGVfY2VsbHMgPSB7CiAgIDAsCiAgIC8qIEMtdSAxIDAg TS14IGdlbmVyYXRlLW9iamNvZGUtY2VsbHMgUkVUICovCkBAIC0zMjgsMjc3ICszMzEsMzk4IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QKICAgICAvKiAwIGFyZ3VtZW50cyAqLwogICAgIHsgU1RBVElD X09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgMCkgfSwKICAgICB7 IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogCiAKICAgICAv KiAxIGFyZ3VtZW50cyAqLwogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3 X2J5dGVjb2RlLmJ5dGVzICsgNjQpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkg fSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sg KHJhd19ieXRlY29kZS5ieXRlcyArIDEyOCkgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNL ICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFND TV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAxOTIpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBT Q01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKIAogICAgIC8qIDIgYXJndW1lbnRzICov CiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMg KyAyNTYpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEws IDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5i eXRlcyArIDMyMCkgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsg TlVMTCwgMCB9LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVj b2RlLmJ5dGVzICsgMzg0KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisg ICAgeyBOVUxMLCAwIH0sCiAKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJh d19ieXRlY29kZS5ieXRlcyArIDQ0OCkgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgw KSB9LAorICAgIHsgTlVMTCwgMCB9LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFD SyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgNTEyKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BB Q0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAKICAgICAvKiAzIGFyZ3VtZW50cyAqLwogICAg IHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgNTc2 KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0s CiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMg KyA2NDApIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEws IDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5i eXRlcyArIDcwNCkgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsg TlVMTCwgMCB9LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVj b2RlLmJ5dGVzICsgNzY4KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisg ICAgeyBOVUxMLCAwIH0sCiAKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJh d19ieXRlY29kZS5ieXRlcyArIDgzMikgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgw KSB9LAorICAgIHsgTlVMTCwgMCB9LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFD SyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgODk2KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BB Q0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFND TV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA5NjApIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBT Q01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKIAogICAgIC8qIDQgYXJndW1lbnRzICov CiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMg KyAxMDI0KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxM LCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUu Ynl0ZXMgKyAxMDg4KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAg eyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0 ZWNvZGUuYnl0ZXMgKyAxMTUyKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0s CisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChy YXdfYnl0ZWNvZGUuYnl0ZXMgKyAxMjE2KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sg KDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9Q QUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAxMjgwKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NN X1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RB RywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDEzNDQpIH0sCiAgICAgeyBTQ01fQk9P TF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpD T0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDE0MDgpIH0sCiAgICAgeyBT Q01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJ Q19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDE0NzIpIH0sCiAg ICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7 IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDE1MzYp IH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwK IAogICAgIC8qIDUgYXJndW1lbnRzICovCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9Q QUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAxNjAwKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NN X1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcs IFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAxNjY0KSB9LAogICAgIHsgU0NNX0JPT0xf RiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09E RV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAxNzI4KSB9LAogICAgIHsgU0NN X0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNf T0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAxNzkyKSB9LAogICAg IHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBT VEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAxODU2KSB9 LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAg ICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAx OTIwKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAw IH0sCiAKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5i eXRlcyArIDE5ODQpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7 IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRl Y29kZS5ieXRlcyArIDIwNDgpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwK KyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJh d19ieXRlY29kZS5ieXRlcyArIDIxMTIpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAo MCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BB Q0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDIxNzYpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01f UEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywg U0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDIyNDApIH0sCiAgICAgeyBTQ01fQk9PTF9G LCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKIAogICAgIC8qIDYgYXJndW1lbnRz ICovCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0 ZXMgKyAyMzA0KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBO VUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNv ZGUuYnl0ZXMgKyAyMzY4KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisg ICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdf Ynl0ZWNvZGUuYnl0ZXMgKyAyNDMyKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDAp IH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNL IChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAyNDk2KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BB Q0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFND TV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAyNTYwKSB9LAogICAgIHsgU0NNX0JPT0xfRiwg U0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9U QUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAyNjI0KSB9LAogICAgIHsgU0NNX0JP T0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JK Q09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAyNjg4KSB9LAogICAgIHsg U0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAKICAgICB7IFNU QVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDI3NTIpIH0s CiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAg ICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDI4 MTYpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAg fSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRl cyArIDI4ODApIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5V TEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29k ZS5ieXRlcyArIDI5NDQpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAg ICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19i eXRlY29kZS5ieXRlcyArIDMwMDgpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkg fSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sg KHJhd19ieXRlY29kZS5ieXRlcyArIDMwNzIpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFD SyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKIAogICAgIC8qIDcgYXJndW1lbnRzICovCiAgICAg eyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAzMTM2 KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0s CiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMg KyAzMjAwKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxM LCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUu Ynl0ZXMgKyAzMjY0KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAg eyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0 ZWNvZGUuYnl0ZXMgKyAzMzI4KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0s CisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChy YXdfYnl0ZWNvZGUuYnl0ZXMgKyAzMzkyKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sg KDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9Q QUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAzNDU2KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NN X1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcs IFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAzNTIwKSB9LAogICAgIHsgU0NNX0JPT0xf RiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09E RV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAzNTg0KSB9LAogICAgIHsgU0NN X0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAKICAgICB7IFNUQVRJ Q19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDM2NDgpIH0sCiAg ICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7 IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDM3MTIp IH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwK ICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyAr IDM3NzYpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEws IDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5i eXRlcyArIDM4NDApIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7 IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRl Y29kZS5ieXRlcyArIDM5MDQpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwK KyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJh d19ieXRlY29kZS5ieXRlcyArIDM5NjgpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAo MCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BB Q0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDQwMzIpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01f UEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKIAogICAgIC8qIDggYXJndW1lbnRzICovCiAg ICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA0 MDk2KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAw IH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0 ZXMgKyA0MTYwKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBO VUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNv ZGUuYnl0ZXMgKyA0MjI0KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisg ICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdf Ynl0ZWNvZGUuYnl0ZXMgKyA0Mjg4KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDAp IH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNL IChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA0MzUyKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BB Q0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFND TV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA0NDE2KSB9LAogICAgIHsgU0NNX0JPT0xfRiwg U0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9U QUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA0NDgwKSB9LAogICAgIHsgU0NNX0JP T0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JK Q09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA0NTQ0KSB9LAogICAgIHsg U0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFU SUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA0NjA4KSB9LAog ICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAKICAg ICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDQ2 NzIpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAg fSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRl cyArIDQ3MzYpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5V TEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29k ZS5ieXRlcyArIDQ4MDApIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAg ICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19i eXRlY29kZS5ieXRlcyArIDQ4NjQpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkg fSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sg KHJhd19ieXRlY29kZS5ieXRlcyArIDQ5MjgpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFD SyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NN X1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDQ5OTIpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBT Q01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RB RywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDUwNTYpIH0sCiAgICAgeyBTQ01fQk9P TF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpD T0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDUxMjApIH0sCiAgICAgeyBT Q01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKIAogICAgIC8qIDkg YXJndW1lbnRzICovCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0 ZWNvZGUuYnl0ZXMgKyA1MTg0KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0s CisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChy YXdfYnl0ZWNvZGUuYnl0ZXMgKyA1MjQ4KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sg KDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9Q QUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA1MzEyKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NN X1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcs IFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA1Mzc2KSB9LAogICAgIHsgU0NNX0JPT0xf RiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09E RV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA1NDQwKSB9LAogICAgIHsgU0NN X0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNf T0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA1NTA0KSB9LAogICAg IHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBT VEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA1NTY4KSB9 LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAg ICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA1 NjMyKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAw IH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0 ZXMgKyA1Njk2KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBO VUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNv ZGUuYnl0ZXMgKyA1NzYwKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisg ICAgeyBOVUxMLCAwIH0sCiAKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJh d19ieXRlY29kZS5ieXRlcyArIDU4MjQpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAo MCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BB Q0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDU4ODgpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01f UEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywg U0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDU5NTIpIH0sCiAgICAgeyBTQ01fQk9PTF9G LCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RF X1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDYwMTYpIH0sCiAgICAgeyBTQ01f Qk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJQ19P QkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDYwODApIH0sCiAgICAg eyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNU QVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDYxNDQpIH0s CiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAg ICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDYy MDgpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAg fSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRl cyArIDYyNzIpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5V TEwsIDAgfSwKICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29k ZS5ieXRlcyArIDYzMzYpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAg ICB7IE5VTEwsIDAgfSwKIAogICAgIC8qIDEwIGFyZ3VtZW50cyAqLwogICAgIHsgU1RBVElDX09C SkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgNjQwMCkgfSwKICAgICB7 IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogICAgIHsgU1RB VElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgNjQ2NCkgfSwK ICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogICAg IHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgNjUy OCkgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9 LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVz ICsgNjU5MikgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVM TCwgMCB9LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2Rl LmJ5dGVzICsgNjY1NikgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAg IHsgTlVMTCwgMCB9LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5 dGVjb2RlLmJ5dGVzICsgNjcyMCkgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9 LAorICAgIHsgTlVMTCwgMCB9LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAo cmF3X2J5dGVjb2RlLmJ5dGVzICsgNjc4NCkgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNL ICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01f UEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgNjg0OCkgfSwKICAgICB7IFNDTV9CT09MX0YsIFND TV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFH LCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgNjkxMikgfSwKICAgICB7IFNDTV9CT09M X0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogICAgIHsgU1RBVElDX09CSkNP REVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgNjk3NikgfSwKICAgICB7IFND TV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogICAgIHsgU1RBVElD X09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgNzA0MCkgfSwKICAg ICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogCiAgICAg eyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA3MTA0 KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0s CiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMg KyA3MTY4KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxM LCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUu Ynl0ZXMgKyA3MjMyKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAg eyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0 ZWNvZGUuYnl0ZXMgKyA3Mjk2KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0s CisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChy YXdfYnl0ZWNvZGUuYnl0ZXMgKyA3MzYwKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sg KDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9Q QUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA3NDI0KSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NN X1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcs IFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA3NDg4KSB9LAogICAgIHsgU0NNX0JPT0xf RiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JKQ09E RV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA3NTUyKSB9LAogICAgIHsgU0NN X0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNf T0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA3NjE2KSB9LAogICAg IHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBT VEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA3NjgwKSB9 LAotICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0KKyAgICB7IFNDTV9CT09MX0YsIFND TV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogICB9CiB9OwogICAKQEAgLTYwOSw3ICs3 MzMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CiAgICAoaW5zZXJ0IChmb3JtYXQgIiAgL1wqICVk IGFyZ3VtZW50cyAqXC9cbiIgbikpCiAgICAobGV0ICgoaSAoKiBuIG4pKSkKICAgICAgKHdoaWxl ICg8IGkgKCogKDErIG4pICgxKyBuKSkpCi0gICAgICAgKGluc2VydCAoZm9ybWF0ICIgIFNDTV9Q QUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKyVkKSxcbiIgKCogaSAyKSkpCisgICAgICAgKGluc2Vy dCAoZm9ybWF0ICIgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKyVkKSxcbiIgKCogaSAz KSkpCiAgICAgICAgKHNldHEgaSAoMSsgaSkpKQogICAgICAoaW5zZXJ0ICJcbiIpKSkKIApAQCAt NjI3LDE0NCArNzUxLDE0NCBAQCBzdGF0aWMgY29uc3QgU0NNIHNjbV9zdWJyX29iamNvZGVfdHJh bXBvbGluZXNbMTIxXSA9IHsKICAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMCksCiAK ICAgLyogMSBhcmd1bWVudHMgKi8KLSAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMiks Ci0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzQpLAorICBTQ01fUEFDSyAob2JqY29k ZV9jZWxscy5jZWxscyszKSwKICAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrNiksCisg IFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzkpLAogCiAgIC8qIDIgYXJndW1lbnRzICov Ci0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzgpLAotICBTQ01fUEFDSyAob2JqY29k ZV9jZWxscy5jZWxscysxMCksCiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzEyKSwK LSAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTQpLAotICBTQ01fUEFDSyAob2JqY29k ZV9jZWxscy5jZWxscysxNiksCi0KLSAgLyogMyBhcmd1bWVudHMgKi8KKyAgU0NNX1BBQ0sgKG9i amNvZGVfY2VsbHMuY2VsbHMrMTUpLAogICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysx OCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIwKSwKLSAgU0NNX1BBQ0sgKG9i amNvZGVfY2VsbHMuY2VsbHMrMjIpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysy MSksCiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzI0KSwKLSAgU0NNX1BBQ0sgKG9i amNvZGVfY2VsbHMuY2VsbHMrMjYpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysy OCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzMwKSwKIAotICAvKiA0IGFyZ3Vt ZW50cyAqLwotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszMiksCi0gIFNDTV9QQUNL IChvYmpjb2RlX2NlbGxzLmNlbGxzKzM0KSwKKyAgLyogMyBhcmd1bWVudHMgKi8KKyAgU0NNX1BB Q0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMjcpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5j ZWxscyszMCksCisgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzMzKSwKICAgU0NNX1BB Q0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMzYpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5j ZWxscyszOCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzQwKSwKKyAgU0NNX1BB Q0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMzkpLAogICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5j ZWxscys0MiksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzQ0KSwKLSAgU0NNX1BB Q0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrNDYpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5j ZWxscys0OCksCisgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzQ1KSwKIAotICAvKiA1 IGFyZ3VtZW50cyAqLwotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys1MCksCi0gIFND TV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzUyKSwKKyAgLyogNCBhcmd1bWVudHMgKi8KKyAg U0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrNDgpLAorICBTQ01fUEFDSyAob2JqY29kZV9j ZWxscy5jZWxscys1MSksCiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzU0KSwKLSAg U0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrNTYpLAotICBTQ01fUEFDSyAob2JqY29kZV9j ZWxscy5jZWxscys1OCksCisgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzU3KSwKICAg U0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrNjApLAotICBTQ01fUEFDSyAob2JqY29kZV9j ZWxscy5jZWxscys2MiksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzY0KSwKKyAg U0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrNjMpLAogICBTQ01fUEFDSyAob2JqY29kZV9j ZWxscy5jZWxscys2NiksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzY4KSwKLSAg U0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrNzApLAotCi0gIC8qIDYgYXJndW1lbnRzICov CisgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzY5KSwKICAgU0NNX1BBQ0sgKG9iamNv ZGVfY2VsbHMuY2VsbHMrNzIpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys3NCks Ci0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzc2KSwKKworICAvKiA1IGFyZ3VtZW50 cyAqLworICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys3NSksCiAgIFNDTV9QQUNLIChv Ympjb2RlX2NlbGxzLmNlbGxzKzc4KSwKLSAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMr ODApLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys4MiksCisgIFNDTV9QQUNLIChv Ympjb2RlX2NlbGxzLmNlbGxzKzgxKSwKICAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMr ODQpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys4NiksCi0gIFNDTV9QQUNLIChv Ympjb2RlX2NlbGxzLmNlbGxzKzg4KSwKKyAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMr ODcpLAogICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys5MCksCi0gIFNDTV9QQUNLIChv Ympjb2RlX2NlbGxzLmNlbGxzKzkyKSwKLSAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMr OTQpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys5MyksCiAgIFNDTV9QQUNLIChv Ympjb2RlX2NlbGxzLmNlbGxzKzk2KSwKLQotICAvKiA3IGFyZ3VtZW50cyAqLwotICBTQ01fUEFD SyAob2JqY29kZV9jZWxscy5jZWxscys5OCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNl bGxzKzEwMCksCisgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzk5KSwKICAgU0NNX1BB Q0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTAyKSwKLSAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMu Y2VsbHMrMTA0KSwKLSAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTA2KSwKKyAgU0NN X1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTA1KSwKKworICAvKiA2IGFyZ3VtZW50cyAqLwog ICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxMDgpLAotICBTQ01fUEFDSyAob2JqY29k ZV9jZWxscy5jZWxscysxMTApLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxMTIp LAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxMTEpLAogICBTQ01fUEFDSyAob2Jq Y29kZV9jZWxscy5jZWxscysxMTQpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysx MTYpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxMTgpLAorICBTQ01fUEFDSyAo b2JqY29kZV9jZWxscy5jZWxscysxMTcpLAogICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxs cysxMjApLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxMjIpLAotICBTQ01fUEFD SyAob2JqY29kZV9jZWxscy5jZWxscysxMjQpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5j ZWxscysxMjMpLAogICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxMjYpLAotCi0gIC8q IDggYXJndW1lbnRzICovCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzEyOCksCi0g IFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzEzMCksCisgIFNDTV9QQUNLIChvYmpjb2Rl X2NlbGxzLmNlbGxzKzEyOSksCiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzEzMiks Ci0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzEzNCksCi0gIFNDTV9QQUNLIChvYmpj b2RlX2NlbGxzLmNlbGxzKzEzNiksCisgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzEz NSksCiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzEzOCksCi0gIFNDTV9QQUNLIChv Ympjb2RlX2NlbGxzLmNlbGxzKzE0MCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxz KzE0MiksCisgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzE0MSksCiAgIFNDTV9QQUNL IChvYmpjb2RlX2NlbGxzLmNlbGxzKzE0NCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNl bGxzKzE0NiksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzE0OCksCisKKyAgLyog NyBhcmd1bWVudHMgKi8KKyAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTQ3KSwKICAg U0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTUwKSwKLSAgU0NNX1BBQ0sgKG9iamNvZGVf Y2VsbHMuY2VsbHMrMTUyKSwKLSAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTU0KSwK KyAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTUzKSwKICAgU0NNX1BBQ0sgKG9iamNv ZGVfY2VsbHMuY2VsbHMrMTU2KSwKLSAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTU4 KSwKLSAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMTYwKSwKLQotICAvKiA5IGFyZ3Vt ZW50cyAqLworICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxNTkpLAogICBTQ01fUEFD SyAob2JqY29kZV9jZWxscy5jZWxscysxNjIpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5j ZWxscysxNjQpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxNjYpLAorICBTQ01f UEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxNjUpLAogICBTQ01fUEFDSyAob2JqY29kZV9jZWxs cy5jZWxscysxNjgpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxNzApLAotICBT Q01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxNzIpLAorICBTQ01fUEFDSyAob2JqY29kZV9j ZWxscy5jZWxscysxNzEpLAogICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxNzQpLAot ICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxNzYpLAotICBTQ01fUEFDSyAob2JqY29k ZV9jZWxscy5jZWxscysxNzgpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxNzcp LAogICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxODApLAotICBTQ01fUEFDSyAob2Jq Y29kZV9jZWxscy5jZWxscysxODIpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysx ODQpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxODMpLAogICBTQ01fUEFDSyAo b2JqY29kZV9jZWxscy5jZWxscysxODYpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxs cysxODgpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxOTApLAorICBTQ01fUEFD SyAob2JqY29kZV9jZWxscy5jZWxscysxODkpLAorCisgIC8qIDggYXJndW1lbnRzICovCiAgIFND TV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzE5MiksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2Nl bGxzLmNlbGxzKzE5NCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzE5NiksCisg IFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzE5NSksCiAgIFNDTV9QQUNLIChvYmpjb2Rl X2NlbGxzLmNlbGxzKzE5OCksCi0KLSAgLyogMTAgYXJndW1lbnRzICovCi0gIFNDTV9QQUNLIChv Ympjb2RlX2NlbGxzLmNlbGxzKzIwMCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxz KzIwMiksCisgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIwMSksCiAgIFNDTV9QQUNL IChvYmpjb2RlX2NlbGxzLmNlbGxzKzIwNCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNl bGxzKzIwNiksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIwOCksCisgIFNDTV9Q QUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIwNyksCiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxz LmNlbGxzKzIxMCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIxMiksCi0gIFND TV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIxNCksCisgIFNDTV9QQUNLIChvYmpjb2RlX2Nl bGxzLmNlbGxzKzIxMyksCiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIxNiksCi0g IFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIxOCksCi0gIFNDTV9QQUNLIChvYmpjb2Rl X2NlbGxzLmNlbGxzKzIyMCksCisgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIxOSks CiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIyMiksCi0gIFNDTV9QQUNLIChvYmpj b2RlX2NlbGxzLmNlbGxzKzIyNCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIy NiksCisgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIyNSksCiAgIFNDTV9QQUNLIChv Ympjb2RlX2NlbGxzLmNlbGxzKzIyOCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxz KzIzMCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIzMiksCisgIFNDTV9QQUNL IChvYmpjb2RlX2NlbGxzLmNlbGxzKzIzMSksCiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNl bGxzKzIzNCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIzNiksCi0gIFNDTV9Q QUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIzOCksCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxz LmNlbGxzKzI0MCkKKyAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMjM3KSwKKyAgU0NN X1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMrMjQwKSwKKworICAvKiA5IGFyZ3VtZW50cyAqLwor ICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyNDMpLAorICBTQ01fUEFDSyAob2JqY29k ZV9jZWxscy5jZWxscysyNDYpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyNDkp LAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyNTIpLAorICBTQ01fUEFDSyAob2Jq Y29kZV9jZWxscy5jZWxscysyNTUpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysy NTgpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyNjEpLAorICBTQ01fUEFDSyAo b2JqY29kZV9jZWxscy5jZWxscysyNjQpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxs cysyNjcpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyNzApLAorICBTQ01fUEFD SyAob2JqY29kZV9jZWxscy5jZWxscysyNzMpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5j ZWxscysyNzYpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyNzkpLAorICBTQ01f UEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyODIpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxs cy5jZWxscysyODUpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyODgpLAorICBT Q01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyOTEpLAorICBTQ01fUEFDSyAob2JqY29kZV9j ZWxscy5jZWxscysyOTQpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyOTcpLAor CisgIC8qIDEwIGFyZ3VtZW50cyAqLworICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysz MDApLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszMDMpLAorICBTQ01fUEFDSyAo b2JqY29kZV9jZWxscy5jZWxscyszMDYpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxs cyszMDkpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszMTIpLAorICBTQ01fUEFD SyAob2JqY29kZV9jZWxscy5jZWxscyszMTUpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5j ZWxscyszMTgpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszMjEpLAorICBTQ01f UEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszMjQpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxs cy5jZWxscyszMjcpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszMzApLAorICBT Q01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszMzMpLAorICBTQ01fUEFDSyAob2JqY29kZV9j ZWxscy5jZWxscyszMzYpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszMzkpLAor ICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszNDIpLAorICBTQ01fUEFDSyAob2JqY29k ZV9jZWxscy5jZWxscyszNDUpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszNDgp LAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszNTEpLAorICBTQ01fUEFDSyAob2Jq Y29kZV9jZWxscy5jZWxscyszNTQpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysz NTcpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszNjApLAogfTsKIAogLyogKG5h cmdzICogbmFyZ3MpICsgbm9wdCArIHJlc3QgKiAobmFyZ3MgKyAxKSAqLwpkaWZmIC0tZ2l0IGEv bGliZ3VpbGUvb2JqY29kZXMuYyBiL2xpYmd1aWxlL29iamNvZGVzLmMKaW5kZXggNDFhNTk5MC4u NzY3YzBhYyAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvb2JqY29kZXMuYworKysgYi9saWJndWlsZS9v Ympjb2Rlcy5jCkBAIC00NCwxMSArNDQsMTMgQEAgdmVyaWZ5ICgoKHNpemVvZiAoU0NNX09CSkNP REVfQ09PS0lFKSAtIDEpICYgNykgPT0gMCk7CiAgKiBPYmpjb2RlIHR5cGUKICAqLwogCi0vKiBh biBvYmpjb2RlIFNDTSBvYmplY3QgaXMgYSBmb3VyLXdvcmQgb2JqZWN0IGNvbnRhaW5pbmcKKy8q IGFuIG9iamNvZGUgU0NNIG9iamVjdCBpcyBhIGZpdmUtd29yZCBvYmplY3QgY29udGFpbmluZwog ICAgLSBzY21fdGM3X29iamNvZGUgfCB0aGUgZmxhZ3MgZm9yIHRoaXMgb2JqY29kZQogICAgLSB0 aGUgc3RydWN0IHNjbV9vYmpjb2RlIEMgb2JqZWN0CiAgICAtIHRoZSBwYXJlbnQgb2YgdGhpcyBv Ympjb2RlLCBpZiB0aGlzIGlzIGEgc2xpY2UsIG9yICNmIGlmIG5vbmUKICAgIC0gdGhlIGZpbGUg ZGVzY3JpcHRvciB0aGlzIG9iamNvZGUgY2FtZSBmcm9tIGlmIHRoaXMgd2FzIG1tYXBlZCwgb3Ig MCBpZiBub25lCisgICAtIHRoZSBKSVQgY29kZSBmb3IgdGhpcyBvYmplY3QsIE5VTEwgaWYgd2Un dmUgbmV2ZXIgdHJpZWQgdG8gSklUIHRoaXMsCisgICAgIGFuZCAjZiBpZiB3ZSB0cmllZCBhbmQg ZmFpbGVkLgogKi8KIAogc3RhdGljIFNDTQpAQCAtOTcsMTAgKzk5LDEyIEBAIG1ha2Vfb2JqY29k ZV9ieV9tbWFwIChpbnQgZmQpCiAJCQkJCQkgICArIGRhdGEtPm1ldGFsZW4pKSk7CiAgICAgfQog Ci0gIHNyZXQgPSBzY21fZG91YmxlX2NlbGwgKHNjbV90Yzdfb2JqY29kZSB8IChTQ01fRl9PQkpD T0RFX0lTX01NQVA8PDgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NtX3RfYml0cyko YWRkciArIHN0cmxlbiAoU0NNX09CSkNPREVfQ09PS0lFKSksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgIFNDTV9VTlBBQ0sgKFNDTV9CT09MX0YpLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2NtX3RfYml0cylmZCk7CisgIHNyZXQgPSBzY21fd29yZHMgKHNjbV90Yzdfb2JqY29kZSB8 IChTQ01fRl9PQkpDT0RFX0lTX01NQVA8PDgpLCA1KTsKKyAgU0NNX0dDX1NFVF9DRUxMX1dPUkQg KHNyZXQsIDEsCisgICAgICAgICAgICAgICAgICAgICAgIChzY21fdF9iaXRzKShhZGRyICsgc3Ry bGVuKFNDTV9PQkpDT0RFX0NPT0tJRSkpKTsKKyAgU0NNX0dDX1NFVF9DRUxMX1dPUkQgKHNyZXQs IDIsIFNDTV9VTlBBQ0sgKFNDTV9CT09MX0YpKTsKKyAgU0NNX0dDX1NFVF9DRUxMX1dPUkQgKHNy ZXQsIDMsIChzY21fdF9iaXRzKWZkKTsKKyAgU0NNX0dDX1NFVF9DRUxMX1dPUkQgKHNyZXQsIDQs IChzY21fdF9iaXRzKU5VTEwpOwogCiAgIC8qIEZJWE1FOiB3ZSBsZWFrIG91cnNlbHZlcyBhbmQg dGhlIGZpbGUgZGVzY3JpcHRvci4gYnV0IHRoZW4gYWdhaW4gc28gZG9lcwogICAgICBkbG9wZW4o KS4gKi8KQEAgLTExNCw2ICsxMTgsNyBAQCBzY21fY19tYWtlX29iamNvZGVfc2xpY2UgKFNDTSBw YXJlbnQsIGNvbnN0IHNjbV90X3VpbnQ4ICpwdHIpCiB7CiAgIGNvbnN0IHN0cnVjdCBzY21fb2Jq Y29kZSAqZGF0YSwgKnBhcmVudF9kYXRhOwogICBjb25zdCBzY21fdF91aW50OCAqcGFyZW50X2Jh c2U7CisgIFNDTSByZXQ7CiAKICAgU0NNX1ZBTElEQVRFX09CSkNPREUgKDEsIHBhcmVudCk7CiAg IHBhcmVudF9kYXRhID0gU0NNX09CSkNPREVfREFUQSAocGFyZW50KTsKQEAgLTEzNyw4ICsxNDIs MTIgQEAgc2NtX2NfbWFrZV9vYmpjb2RlX3NsaWNlIChTQ00gcGFyZW50LCBjb25zdCBzY21fdF91 aW50OCAqcHRyKQogICBhc3NlcnQgKFNDTV9DX09CSkNPREVfQkFTRSAoZGF0YSkgKyBkYXRhLT5s ZW4gKyBkYXRhLT5tZXRhbGVuCiAJICA8PSBwYXJlbnRfYmFzZSArIHBhcmVudF9kYXRhLT5sZW4g KyBwYXJlbnRfZGF0YS0+bWV0YWxlbik7CiAKLSAgcmV0dXJuIHNjbV9kb3VibGVfY2VsbCAoc2Nt X3RjN19vYmpjb2RlIHwgKFNDTV9GX09CSkNPREVfSVNfU0xJQ0U8PDgpLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2NtX3RfYml0cylkYXRhLCBTQ01fVU5QQUNLIChwYXJlbnQpLCAwKTsK KyAgcmV0ID0gc2NtX3dvcmRzIChzY21fdGM3X29iamNvZGUsIDUpOworICBTQ01fR0NfU0VUX0NF TExfV09SRCAocmV0LCAxLCAoc2NtX3RfYml0cylkYXRhKTsKKyAgU0NNX0dDX1NFVF9DRUxMX1dP UkQgKHJldCwgMiwgU0NNX1VOUEFDSyAocGFyZW50KSk7CisgIFNDTV9HQ19TRVRfQ0VMTF9XT1JE IChyZXQsIDMsIDApOworICBTQ01fR0NfU0VUX0NFTExfV09SRCAocmV0LCA0LCBOVUxMKTsKKyAg cmV0dXJuIHJldDsKIH0KICN1bmRlZiBGVU5DX05BTUUKIApAQCAtMTc5LDcgKzE4OCw4IEBAIFND TV9ERUZJTkUgKHNjbV9ieXRlY29kZV90b19vYmpjb2RlLCAiYnl0ZWNvZGUtPm9iamNvZGUiLCAx LCAwLCAwLAogICBzaXplX3Qgc2l6ZTsKICAgY29uc3Qgc2NtX3RfdWludDggKmNfYnl0ZWNvZGU7 CiAgIHN0cnVjdCBzY21fb2JqY29kZSAqZGF0YTsKLQorICBTQ00gcmV0OworICAKICAgaWYgKCFz Y21faXNfYnl0ZXZlY3RvciAoYnl0ZWNvZGUpKQogICAgIHNjbV93cm9uZ190eXBlX2FyZyAoRlVO Q19OQU1FLCAxLCBieXRlY29kZSk7CiAKQEAgLTE4NywxNyArMTk3LDIyIEBAIFNDTV9ERUZJTkUg KHNjbV9ieXRlY29kZV90b19vYmpjb2RlLCAiYnl0ZWNvZGUtPm9iamNvZGUiLCAxLCAwLCAwLAog ICBjX2J5dGVjb2RlID0gKGNvbnN0IHNjbV90X3VpbnQ4KilTQ01fQllURVZFQ1RPUl9DT05URU5U UyAoYnl0ZWNvZGUpOwogICAKICAgU0NNX0FTU0VSVF9SQU5HRSAoMCwgYnl0ZWNvZGUsIHNpemUg Pj0gc2l6ZW9mKHN0cnVjdCBzY21fb2JqY29kZSkpOworCiAgIGRhdGEgPSAoc3RydWN0IHNjbV9v Ympjb2RlKiljX2J5dGVjb2RlOwogCiAgIGlmIChkYXRhLT5sZW4gKyBkYXRhLT5tZXRhbGVuICE9 IChzaXplIC0gc2l6ZW9mICgqZGF0YSkpKQogICAgIHNjbV9taXNjX2Vycm9yIChGVU5DX05BTUUs ICJiYWQgYnl0ZXZlY3RvciBzaXplICh+YSAhPSB+YSkiLAogCQkgICAgc2NtX2xpc3RfMiAoc2Nt X2Zyb21fc2l6ZV90IChzaXplKSwKIAkJCQlzY21fZnJvbV91aW50MzIgKHNpemVvZiAoKmRhdGEp ICsgZGF0YS0+bGVuICsgZGF0YS0+bWV0YWxlbikpKTsKLQorICAKICAgLyogZm9vbGlzaGx5LCB3 ZSBhc3N1bWUgdGhhdCBhcyBsb25nIGFzIGJ5dGVjb2RlIGlzIGFyb3VuZCwgdGhhdCBjX2J5dGVj b2RlCiAgICAgIHdpbGwgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoOyBwZXJoYXBzIGEgYmFkIGFzc3Vt cHRpb24/ICovCi0gIHJldHVybiBzY21fZG91YmxlX2NlbGwgKHNjbV90Yzdfb2JqY29kZSB8IChT Q01fRl9PQkpDT0RFX0lTX0JZVEVWRUNUT1I8PDgpLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2NtX3RfYml0cylkYXRhLCBTQ01fVU5QQUNLIChieXRlY29kZSksIDApOworICByZXQgPSBz Y21fd29yZHMgKHNjbV90Yzdfb2JqY29kZSB8IChTQ01fRl9PQkpDT0RFX0lTX0JZVEVWRUNUT1I8 PDgpLCA1KTsKKyAgU0NNX0dDX1NFVF9DRUxMX1dPUkQgKHJldCwgMSwgKHNjbV90X2JpdHMpZGF0 YSk7CisgIFNDTV9HQ19TRVRfQ0VMTF9XT1JEIChyZXQsIDIsIFNDTV9VTlBBQ0sgKGJ5dGVjb2Rl KSk7CisgIFNDTV9HQ19TRVRfQ0VMTF9XT1JEIChyZXQsIDMsIDApOworICBTQ01fR0NfU0VUX0NF TExfV09SRCAocmV0LCA0LCBOVUxMKTsKKyAgcmV0dXJuIHJldDsKIH0KICN1bmRlZiBGVU5DX05B TUUKIApkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvb2JqY29kZXMuaCBiL2xpYmd1aWxlL29iamNvZGVz LmgKaW5kZXggMmJmZjlhYS4uYjkyZThlZiAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvb2JqY29kZXMu aAorKysgYi9saWJndWlsZS9vYmpjb2Rlcy5oCkBAIC01NCw2ICs1NCw4IEBAIHN0cnVjdCBzY21f b2JqY29kZQogI2RlZmluZSBTQ01fT0JKQ09ERV9JU19CWVRFVkVDVE9SKHgpIChTQ01fT0JKQ09E RV9GTEFHUyAoeCkgJiBTQ01fRl9PQkpDT0RFX0lTX0JZVEVWRUNUT1IpCiAjZGVmaW5lIFNDTV9P QkpDT0RFX0lTX1NMSUNFKHgpIChTQ01fT0JKQ09ERV9GTEFHUyAoeCkgJiBTQ01fRl9PQkpDT0RF X0lTX1NMSUNFKQogCisjZGVmaW5lIFNDTV9PQkpDT0RFX0pJVENPREUoeCkgKFNDTV9DRUxMX1dP UkQgKCh4KSwgNCkpCisKIFNDTSBzY21fY19tYWtlX29iamNvZGVfc2xpY2UgKFNDTSBwYXJlbnQs IGNvbnN0IHNjbV90X3VpbnQ4ICpwdHIpOwogU0NNX0FQSSBTQ00gc2NtX2xvYWRfb2JqY29kZSAo U0NNIGZpbGUpOwogU0NNX0FQSSBTQ00gc2NtX29iamNvZGVfcCAoU0NNIG9iaik7CmRpZmYgLS1n aXQgYS9saWJndWlsZS9zbW9iLmMgYi9saWJndWlsZS9zbW9iLmMKaW5kZXggNjU4MjYxMi4uN2Q4 YWJiMiAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvc21vYi5jCisrKyBiL2xpYmd1aWxlL3Ntb2IuYwpA QCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKIHN0YXRpYyBjb25zdCBzdHJ1 Y3QKIHsKICAgc2NtX3RfdWludDY0IGR1bW15OyAvKiBhbGlnbm1lbnQgKi8KLSAgc2NtX3RfY2Vs bCBjZWxsc1sxNiAqIDJdOyAvKiA0KjQgZG91YmxlIGNlbGxzICovCisgIHNjbV90X2NlbGwgY2Vs bHNbMTYgKiAzXTsgLyogNCo0IHRyaXBsZSBjZWxscyAobGFzdCBjZWxsIHVudXNlZCkgKi8KIH0g b2JqY29kZV9jZWxscyA9IHsKICAgMCwKICAgLyogQy11IDMgTS14IGdlbmVyYXRlLW9iamNvZGUt Y2VsbHMgUkVUICovCkBAIC0yNjksNDUgKzI2OSw2MiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CiAg ICAgLyogMCBhcmd1bWVudHMgKi8KICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sg KHJhd19ieXRlY29kZS5ieXRlcyArIDApIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAo MCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKKwogCiAgICAgLyogMSBhcmd1bWVudHMgKi8KICAgICB7 IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDY0KSB9 LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAg ICAgeyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAx MjgpIH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAg fSwKIAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5 dGVzICsgMTkyKSB9LAogICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBO VUxMLCAwIH0sCiAKICAgICAvKiAyIGFyZ3VtZW50cyAqLwogICAgIHsgU1RBVElDX09CSkNPREVf VEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgMjU2KSB9LAogICAgIHsgU0NNX0JP T0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JK Q09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyAzMjApIH0sCiAgICAgeyBT Q01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJ Q19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDM4NCkgfSwKICAg ICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogCiAgICAg eyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA0NDgp IH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwK ICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyAr IDUxMikgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwg MCB9LAogCiAgICAgLyogMyBhcmd1bWVudHMgKi8KICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywg U0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDU3NikgfSwKICAgICB7IFNDTV9CT09MX0Ys IFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogICAgIHsgU1RBVElDX09CSkNPREVf VEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5dGVzICsgNjQwKSB9LAogICAgIHsgU0NNX0JP T0xfRiwgU0NNX1BBQ0sgKDApIH0sCisgICAgeyBOVUxMLCAwIH0sCiAgICAgeyBTVEFUSUNfT0JK Q09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA3MDQpIH0sCiAgICAgeyBT Q01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwKICAgICB7IFNUQVRJ Q19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyArIDc2OCkgfSwKICAg ICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogCiAgICAg eyBTVEFUSUNfT0JKQ09ERV9UQUcsIFNDTV9QQUNLIChyYXdfYnl0ZWNvZGUuYnl0ZXMgKyA4MzIp IH0sCiAgICAgeyBTQ01fQk9PTF9GLCBTQ01fUEFDSyAoMCkgfSwKKyAgICB7IE5VTEwsIDAgfSwK ICAgICB7IFNUQVRJQ19PQkpDT0RFX1RBRywgU0NNX1BBQ0sgKHJhd19ieXRlY29kZS5ieXRlcyAr IDg5NikgfSwKICAgICB7IFNDTV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwg MCB9LAogICAgIHsgU1RBVElDX09CSkNPREVfVEFHLCBTQ01fUEFDSyAocmF3X2J5dGVjb2RlLmJ5 dGVzICsgOTYwKSB9LAotICAgIHsgU0NNX0JPT0xfRiwgU0NNX1BBQ0sgKDApIH0KKyAgICB7IFND TV9CT09MX0YsIFNDTV9QQUNLICgwKSB9LAorICAgIHsgTlVMTCwgMCB9LAogICB9CiB9OwogICAK QEAgLTMxNywyNSArMzM0LDI1IEBAIHN0YXRpYyBjb25zdCBTQ00gc2NtX3Ntb2Jfb2JqY29kZV90 cmFtcG9saW5lc1sxNl0gPSB7CiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzApLAog CiAgIC8qIDEgYXJndW1lbnRzICovCi0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzIp LAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys0KSwKKyAgU0NNX1BBQ0sgKG9iamNv ZGVfY2VsbHMuY2VsbHMrMyksCiAgIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzYpLAor ICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys5KSwKIAogICAvKiAyIGFyZ3VtZW50cyAq LwotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys4KSwKLSAgU0NNX1BBQ0sgKG9iamNv ZGVfY2VsbHMuY2VsbHMrMTApLAogICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysxMiks Ci0gIFNDTV9QQUNLIChvYmpjb2RlX2NlbGxzLmNlbGxzKzE0KSwKLSAgU0NNX1BBQ0sgKG9iamNv ZGVfY2VsbHMuY2VsbHMrMTYpLAotCi0gIC8qIDMgYXJndW1lbnRzICovCisgIFNDTV9QQUNLIChv Ympjb2RlX2NlbGxzLmNlbGxzKzE1KSwKICAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMr MTgpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyMCksCi0gIFNDTV9QQUNLIChv Ympjb2RlX2NlbGxzLmNlbGxzKzIyKSwKKyAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMr MjEpLAogICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyNCksCi0gIFNDTV9QQUNLIChv Ympjb2RlX2NlbGxzLmNlbGxzKzI2KSwKLSAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2VsbHMr MjgpLAotICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszMCkKKworICAvKiAzIGFyZ3Vt ZW50cyAqLworICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscysyNyksCisgIFNDTV9QQUNL IChvYmpjb2RlX2NlbGxzLmNlbGxzKzMwKSwKKyAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2Vs bHMrMzMpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscyszNiksCisgIFNDTV9QQUNL IChvYmpjb2RlX2NlbGxzLmNlbGxzKzM5KSwKKyAgU0NNX1BBQ0sgKG9iamNvZGVfY2VsbHMuY2Vs bHMrNDIpLAorICBTQ01fUEFDSyAob2JqY29kZV9jZWxscy5jZWxscys0NSksCiB9OwogCiAvKiAo bmFyZ3MgKiBuYXJncykgKyBub3B0ICsgcmVzdCAqIChuYXJncyArIDEpICovCi0tIAoxLjcuMQoK --0016367d6298daea4a048bb3f2ee Content-Type: application/octet-stream; name="0002-Add-JIT-Infrastructure.patch" Content-Disposition: attachment; filename="0002-Add-JIT-Infrastructure.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gbso4wor1 RnJvbSAxMGQ0N2M1NTYxOTE3ZWIwYjliN2ZjNWEzZWYwMTU0ZmYzODkyNWZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIExhdmluZSA8bmxhdmluZUBoYXZlcmZvcmQuZWR1PgpE YXRlOiBTdW4sIDE4IEp1bCAyMDEwIDEzOjM1OjI3IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gQWRk IEpJVCBJbmZyYXN0cnVjdHVyZQoKQWRkIGEgZHVtbXkgSklUIGNvbXBpbGVyLCBhbmQgdGhlIGlu ZnJhc3RydWN0dXJlIHRvIGludm9rZSBpdCBvbiBvYmplY3QgY29kZSwKcnVuIHRoZSBKSVQgY29k ZSBpZiBpdCdzIGdlbmVyYXRlZCwgYW5kIGNhY2hlIHRoZSBKSVQgY29kZSBmb3IgZnV0dXJlIHVz ZS4KLS0tCiBsaWJndWlsZS9NYWtlZmlsZS5hbSAgIHwgICAgMiArCiBsaWJndWlsZS9pbml0LmMg ICAgICAgIHwgICAgNCArKy0KIGxpYmd1aWxlL3ZtLWVuZ2luZS5jICAgfCAgIDIyICsrKysrKysr KysrKysrKystCiBsaWJndWlsZS92bS1lbmdpbmUuaCAgIHwgICAgMiArCiBsaWJndWlsZS92bS1p LXN5c3RlbS5jIHwgICAxNyArKysrKysrKysrKysrCiBsaWJndWlsZS92bS1qaXQuYyAgICAgIHwg ICA2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxp Ymd1aWxlL3ZtLWppdC5oICAgICAgfCAgIDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIDcgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgbGliZ3VpbGUvdm0taml0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs aWJndWlsZS92bS1qaXQuaAoKZGlmZiAtLWdpdCBhL2xpYmd1aWxlL01ha2VmaWxlLmFtIGIvbGli Z3VpbGUvTWFrZWZpbGUuYW0KaW5kZXggNWVlYThkYy4uM2RhMDAwOSAxMDA2NDQKLS0tIGEvbGli Z3VpbGUvTWFrZWZpbGUuYW0KKysrIGIvbGliZ3VpbGUvTWFrZWZpbGUuYW0KQEAgLTIxMCw2ICsy MTAsNyBAQCBsaWJndWlsZV9AR1VJTEVfRUZGRUNUSVZFX1ZFUlNJT05AX2xhX1NPVVJDRVMgPQkJ CQlcCiAJdmVjdG9ycy5jCQkJCVwKIAl2ZXJzaW9uLmMJCQkJXAogCXZtLmMJCQkJCVwKKwl2bS1q aXQuYwkJCQlcCiAJdnBvcnRzLmMJCQkJXAogCXdlYWtzLmMKIApAQCAtNTgzLDYgKzU4NCw3IEBA IG1vZGluY2x1ZGVfSEVBREVSUyA9CQkJCVwKIAl2ZWN0b3JzLmgJCQkJXAogCXZtLWVuZ2luZS5o CQkJCVwKIAl2bS1leHBhbmQuaAkJCQlcCisJdm0taml0LmgJCQkJXAogCXZtLmgJCQkJCVwKIAl2 cG9ydHMuaAkJCQlcCiAJd2Vha3MuaApkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvaW5pdC5jIGIvbGli Z3VpbGUvaW5pdC5jCmluZGV4IDQ4NDM5MTAuLjdjODhhNGEgMTAwNjQ0Ci0tLSBhL2xpYmd1aWxl L2luaXQuYworKysgYi9saWJndWlsZS9pbml0LmMKQEAgLTEyOCw2ICsxMjgsNyBAQAogI2luY2x1 ZGUgImxpYmd1aWxlL3ZlY3RvcnMuaCIKICNpbmNsdWRlICJsaWJndWlsZS92ZXJzaW9uLmgiCiAj aW5jbHVkZSAibGliZ3VpbGUvdm0uaCIKKyNpbmNsdWRlICJsaWJndWlsZS92bS1qaXQuaCIKICNp bmNsdWRlICJsaWJndWlsZS92cG9ydHMuaCIKICNpbmNsdWRlICJsaWJndWlsZS93ZWFrcy5oIgog I2luY2x1ZGUgImxpYmd1aWxlL2d1YXJkaWFucy5oIgpAQCAtNTQ2LDcgKzU0Nyw4IEBAIHNjbV9p X2luaXRfZ3VpbGUgKFNDTV9TVEFDS0lURU0gKmJhc2UpCiAgIHNjbV9pbml0X3dlYWtzICgpOwog ICBzY21faW5pdF9ndWFyZGlhbnMgKCk7IC8qIHJlcXVpcmVzIHNtb2JfcHJlaGlzdG9yeSAqLwog ICBzY21faW5pdF92cG9ydHMgKCk7Ci0gIHNjbV9pbml0X3N0YW5kYXJkX3BvcnRzICgpOyAgLyog UmVxdWlyZXMgZnBvcnRzICovCisgIHNjbV9pbml0X2ppdCAoKTsKKyAgc2NtX2luaXRfc3RhbmRh cmRfcG9ydHMgKCk7ICAvKiBSZXF1aXJlcyBmcG9ydHMsIGppdCAqLwogICBzY21faW5pdF9leHBh bmQgKCk7ICAgLyogUmVxdWlyZXMgc3RydWN0cyAqLwogICBzY21faW5pdF9tZW1vaXplICgpOyAg LyogUmVxdWlyZXMgc21vYl9wcmVoaXN0b3J5ICovCiAgIHNjbV9pbml0X2V2YWwgKCk7ICAgICAv KiBSZXF1aXJlcyBzbW9iX3ByZWhpc3RvcnkgKi8KZGlmZiAtLWdpdCBhL2xpYmd1aWxlL3ZtLWVu Z2luZS5jIGIvbGliZ3VpbGUvdm0tZW5naW5lLmMKaW5kZXggN2Y0NjQxYS4uYTU2N2E4NSAxMDA2 NDQKLS0tIGEvbGliZ3VpbGUvdm0tZW5naW5lLmMKKysrIGIvbGliZ3VpbGUvdm0tZW5naW5lLmMK QEAgLTMxLDcgKzMxLDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSAidm0tZW5naW5lLmgiCi0KKyNp bmNsdWRlICJ0YWdzLmgiIC8qIGZvciBTQ01fQk9PTF9GICovCiAKIHN0YXRpYyBTQ00KIFZNX05B TUUgKFNDTSB2bSwgU0NNIHByb2dyYW0sIFNDTSAqYXJndiwgaW50IG5hcmdzKQpAQCAtNDcsNiAr NDcsNyBAQCBWTV9OQU1FIChTQ00gdm0sIFNDTSBwcm9ncmFtLCBTQ00gKmFyZ3YsIGludCBuYXJn cykKICAgU0NNICpvYmplY3RzID0gTlVMTDsJCQkvKiBjb25zdGFudCBvYmplY3RzICovCiAgIHNp emVfdCBvYmplY3RfY291bnQgPSAwOyAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIE9CSkVDVFMg Ki8KICAgU0NNICpzdGFja19saW1pdCA9IHZwLT5zdGFja19saW1pdDsJLyogc3RhY2sgbGltaXQg YWRkcmVzcyAqLworICBqaXRmICpqaXRjb2RlID0gTlVMTDsgIC8qIEpJVCBjb2RlLCBpZiBhbnkg Ki8KIAogICBTQ00gZHluc3RhdGUgPSBTQ01fSV9DVVJSRU5UX1RIUkVBRC0+ZHluYW1pY19zdGF0 ZTsKICAgc2NtX3RfaW50NjQgdm1fY29va2llID0gdnAtPmNvb2tpZSsrOwpAQCAtODAsNiArODEs MTAgQEAgVk1fTkFNRSAoU0NNIHZtLCBTQ00gcHJvZ3JhbSwgU0NNICphcmd2LCBpbnQgbmFyZ3Mp CiAgIHsKICAgICBTQ00gcHJvZyA9IHByb2dyYW07CiAKKyAgICAvKiBwcm9ncmFtIGNvdWxkIGFs c28gYmUgYSBzbW9iLiBtYXliZSBvdGhlciB0aGluZ3M/ICovCisgICAgaWYgKFNDTV9QUk9HUkFN X1AocHJvZ3JhbSkpCisgICAgICBqaXRjb2RlID0gKGppdGYgKilTQ01fT0JKQ09ERV9KSVRDT0RF KFNDTV9QUk9HUkFNX09CSkNPREUocHJvZ3JhbSkpOworCiAgICAgLyogQm9vdCBwcm9ncmFtICov CiAgICAgcHJvZ3JhbSA9IHZtX21ha2VfYm9vdF9wcm9ncmFtIChuYXJncyk7CiAKQEAgLTEwNSw2 ICsxMTAsMjEgQEAgVk1fTkFNRSAoU0NNIHZtLCBTQ00gcHJvZ3JhbSwgU0NNICphcmd2LCBpbnQg bmFyZ3MpCiAKICAgLyogTGV0J3MgZ28hICovCiAgIEJPT1RfSE9PSyAoKTsKKworICBpZiAoaml0 Y29kZSA9PSBOVUxMKSB7CisgICAgaml0Y29kZSA9IGppdF9vYmpjb2RlKGJwKTsKKyAgICBTQ01f T0JKQ09ERV9KSVRDT0RFKFNDTV9QUk9HUkFNX09CSkNPREUocHJvZ3JhbSkpID0gaml0Y29kZTsK KyAgfQorICBpZiAoaml0Y29kZSAhPSBTQ01fQk9PTF9GKSB7CisgICAgc2NtX3RfdWludDggKnNp cCA9IGlwOworICAgIFNDTSAqc3NwID0gc3A7CisgICAgU0NNICpzZnAgPSBmcDsKKyAgICBTQ01f SklUQ09ERV9FTlRFUihqaXRjb2RlLCBzaXAsIHNzcCwgc2ZwKTsKKyAgICBpcCA9IHNpcDsKKyAg ICBzcCA9IHNzcDsKKyAgICBmcCA9IHNmcDsKKyAgfQorICAvKiBpZiB0aGUgaml0Y29kZSBydW5z LCB3ZSdsbCBzdGlsbCB3YW50IHRvIGRvIE5FWFQgYWZ0ZXJ3YXJkcyAqLwogICBORVhUOwogCiAj aWZuZGVmIEhBVkVfTEFCRUxTX0FTX1ZBTFVFUwpkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvdm0tZW5n aW5lLmggYi9saWJndWlsZS92bS1lbmdpbmUuaAppbmRleCA4MzY2NDhjLi5iOTBlNDgxIDEwMDY0 NAotLS0gYS9saWJndWlsZS92bS1lbmdpbmUuaAorKysgYi9saWJndWlsZS92bS1lbmdpbmUuaApA QCAtOTAsNiArOTAsOCBAQAogI2RlZmluZSBGUF9SRUcKICNlbmRpZgogCisjaW5jbHVkZSAidm0t aml0LmgiCisKIAwKIC8qCiAgKiBDYWNoZS9TeW5jCmRpZmYgLS1naXQgYS9saWJndWlsZS92bS1p LXN5c3RlbS5jIGIvbGliZ3VpbGUvdm0taS1zeXN0ZW0uYwppbmRleCAxMWY4YWUwLi41NDk5YmNm IDEwMDY0NAotLS0gYS9saWJndWlsZS92bS1pLXN5c3RlbS5jCisrKyBiL2xpYmd1aWxlL3ZtLWkt c3lzdGVtLmMKQEAgLTc0NCw2ICs3NDQsNyBAQCBWTV9ERUZJTkVfSU5TVFJVQ1RJT04gKDUzLCBu ZXdfZnJhbWUsICJuZXctZnJhbWUiLCAwLCAwLCAzKQogCiBWTV9ERUZJTkVfSU5TVFJVQ1RJT04g KDU0LCBjYWxsLCAiY2FsbCIsIDEsIC0xLCAxKQogeworICAoaml0ZiAqKWppdGNvZGUgPSBOVUxM OwogICBuYXJncyA9IEZFVENIICgpOwogCiAgdm1fY2FsbDoKQEAgLTc3OCw2ICs3NzksMjIgQEAg Vk1fREVGSU5FX0lOU1RSVUNUSU9OICg1NCwgY2FsbCwgImNhbGwiLCAxLCAtMSwgMSkKICAgaXAg PSBTQ01fQ19PQkpDT0RFX0JBU0UgKGJwKTsKICAgRU5URVJfSE9PSyAoKTsKICAgQVBQTFlfSE9P SyAoKTsKKworICBqaXRjb2RlID0gU0NNX09CSkNPREVfSklUQ09ERShTQ01fUFJPR1JBTV9PQkpD T0RFKHByb2dyYW0pKTsKKyAgaWYgKGppdGNvZGUgPT0gTlVMTCkgeworICAgIGppdGNvZGUgPSBq aXRfb2JqY29kZShicCk7CisgICAgU0NNX09CSkNPREVfSklUQ09ERShTQ01fUFJPR1JBTV9PQkpD T0RFKHByb2dyYW0pKSA9IGppdGNvZGU7CisgIH0KKyAgaWYgKGppdGNvZGUgIT0gU0NNX0JPT0xf RikgeworICAgIHNjbV90X3VpbnQ4ICpzaXAgPSBpcDsKKyAgICBTQ00gKnNzcCA9IHNwOworICAg IFNDTSAqc2ZwID0gZnA7CisgICAgU0NNX0pJVENPREVfRU5URVIoaml0Y29kZSwgc2lwLCBzc3As IHNmcCk7CisgICAgaXAgPSBzaXA7CisgICAgc3AgPSBzc3A7CisgICAgZnAgPSBzZnA7CisgIH0K KyAgLyogaWYgdGhlIGppdGNvZGUgcnVucywgd2UnbGwgc3RpbGwgd2FudCB0byBkbyBORVhUIGFm dGVyd2FyZHMgKi8KICAgTkVYVDsKIH0KIApkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvdm0taml0LmMg Yi9saWJndWlsZS92bS1qaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k OWE0YTA4Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ3VpbGUvdm0taml0LmMKQEAgLTAsMCArMSw2 MCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJsaWJndWlsZS9pbnN0cnVjdGlv bnMuaCIKKyNpbmNsdWRlICJsaWJndWlsZS9zbmFyZi5oIgorI2luY2x1ZGUgImxpYmd1aWxlL29i amNvZGVzLmgiCisjaW5jbHVkZSAibGliZ3VpbGUvc3ltYm9scy5oIgorI2luY2x1ZGUgImxpYmd1 aWxlL2xpc3QuaCIKKyNpbmNsdWRlICJsaWJndWlsZS90YWdzLmgiCisjaW5jbHVkZSAibGliZ3Vp bGUvc3RyaW5ncy5oIiAvKiBmb3Igc2NtX2Zyb21fbG9jYWxlX3N0cmluZywgZm9yIHRoZSBpbml0 IGZ1bmN0aW9uICovCisjaW5jbHVkZSAibGliZ3VpbGUvc3RydWN0LmgiCisjaW5jbHVkZSAibGli Z3VpbGUvbnVtYmVycy5oIgorCisjaW5jbHVkZSAibGliZ3VpbGUvdm0taml0LmgiIC8qIGRlZmlu ZXMgc3RydWN0IHNjbV9qaXRfY29kZSAqLworI2luY2x1ZGUgImxpZ2h0bmluZy5oIgorCisvKiBT Q00gaml0Y29kZV92dGFibGUgPSBOVUxMOyAqLworCisvKiBqaXRfb2JqY29kZTogdGhpcyBwcm9j ZWR1cmUgZWl0aGVyIEpJVHMgdGhlIGdpdmVuIG9iamVjdCBjb2RlLCBhbmQgcmV0dXJucyBhCisg KiBwb2ludGVyIHRvIGFuIHNjbV9qaXRfY29kZSBvYmplY3Qgd2l0aCB0aGUgcmVzdWx0cywgb3Ig U0NNX0JPT0xfRiBpZiBpdAorICogY291bGRuJ3Qgaml0IHRoZSBjb2RlLiB0aGlzIHdpbGwgbW9z dCBsaWtlbHkgb2NjdXIgaWYgdGhlIGppdHRlciBoaXRzIGFuCisgKiBvYmplY3QgY29kZSB0aGF0 IGl0IGRvZXNuJ3Qga25vdyBob3cgdG8gdHJhbnNsYXRlLiAqLworaml0ZiAqaml0X29iamNvZGUo c3RydWN0IHNjbV9vYmpjb2RlICpvYmpjb2RlKQoreworICAvKiBTQ00gY29kZTsgKi8KKyAgaml0 ZiAqY29kZTsKKyAgaml0X2luc24gKmJ1ZmZlciwgKmVuZDsKKworICBidWZmZXIgPSBzY21fZ2Nf Y2FsbG9jKDMyICogc2l6ZW9mIChqaXRfaW5zbiksICJKSVQgaW5zdHJ1Y3Rpb24gYnVmZmVyIik7 CisgIGlmIChidWZmZXIgPT0gTlVMTCkKKyAgICByZXR1cm4gKGppdGYgKilTQ01fQk9PTF9GOwor CisgIC8qIE1ha2UgYSB0ZXN0IGZ1bmN0aW9uICovCisgIGppdF9zZXRfaXAoYnVmZmVyKTsKKyAg aml0X3Byb2xvZygzKTsKKyAgaml0X21vdmlfcChKSVRfUjAsICJKSVQgY29kZSBjYWxsZWQhXG4i KTsKKyAgaml0X3ByZXBhcmUoMSk7CisgIGppdF9wdXNoYXJnX3AoSklUX1IwKTsKKyAgaml0X2Zp bmlzaChwcmludGYpOworICBqaXRfcmV0KCk7CisKKyAgZW5kID0gKGppdF9pbnNuICopaml0X2dl dF9pcCgpLnB0cjsKKyAgaml0X2ZsdXNoX2NvZGUoYnVmZmVyLCBlbmQpOworCisgIC8qIE1ha2Ug dGhlIHN0cnVjdCAqLworICAvKiBjb2RlID0gc2NtX2NfbWFrZV9zdHJ1Y3R2KGppdGNvZGVfdnRh YmxlLCAxLCAxLCAoc2NtX3RfYml0cyAqKWJ1ZmZlcik7ICovCisgIGNvZGUgPSBzY21fZ2NfbWFs bG9jIChzaXplb2YgKGppdGYgKiksICJhIHRhYmxlIG9mIHBvaW50ZXJzIHRvIG1hY2hpbmUgY29k ZSIpOworICBpZiAoY29kZSA9PSBOVUxMKQorICAgIHJldHVybiAoaml0ZiAqKVNDTV9CT09MX0Y7 CisgIAorICAqY29kZSA9IChqaXRmICopYnVmZmVyOworCisgIHJldHVybiBjb2RlOworfQorCit2 b2lkIHNjbV9pbml0X2ppdCAodm9pZCkKK3sKKyAgLyogaml0Y29kZV92dGFibGUgPSBzY21fbWFr ZV92dGFibGUgKHNjbV9mcm9tX2xvY2FsZV9zdHJpbmcoInBPIiksIFNDTV9VTkRFRklORUQpOyAq LworICAKKyAgcmV0dXJuOworfQpkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvdm0taml0LmggYi9saWJn dWlsZS92bS1qaXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjUxZmVm Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ3VpbGUvdm0taml0LmgKQEAgLTAsMCArMSwzOSBAQAor I2lmbmRlZiBfU0NNX1ZNX0pJVF9IXworI2RlZmluZSBfU0NNX1ZNX0pJVF9IXworCisjaW5jbHVk ZSAiX3NjbS5oIgorI2luY2x1ZGUgImxpYmd1aWxlL3N0cnVjdC5oIgorCisvKiBqaXR0ZWQgY29k ZSBmb3IgYSBwcm9jZWR1cmUgd2lsbCBiZSBzdG9yZWQgYXMgYW4gYXJyYXkgb2YgcG9pbnRlcnMg dG8gdGhlCisgKiBibG9ja3Mgb2YgdGhlIG1hY2hpbmUgY29kZS4gdGhlIGdlbmVyYXRlZCBtYWNo aW5lIGNvZGUgd2lsbCBleHBlY3QgdGhpcyBhcnJheQorICogdG8gYmUgYXZhaWxhYmxlIChob3c/ KSB3aGVuIGl0IGlzIGNhbGxlZCwgYW5kIGFsbCBtYWNoaW5lIGNvZGUgYnJhbmNoZXMgd2lsbAor ICogaW5kaXJlY3QgdGhyb3VnaCB0aGlzIGFycmF5LiB0aGlzIGlzIGRvbmUgdG8gbWFrZSB0aGUg Y29kZSByZWxvY2F0YWJsZTogYXMKKyAqIGxvbmcgYXMgdGhlIGJsb2NrIGFycmF5IHBvaW50cyB0 byB0aGUgY29ycmVjdCBibG9ja3MsIHRoZW4gdGhlIGNvZGUgY2FuIGJlCisgKiBsb2FkZWQgYW55 d2hlcmUgaW4gbWVtb3J5LiB0aGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IHdpbGwgYWxsb3cg dXMgdG8KKyAqIHN0b3JlIHRoZSBjb2RlIHRvIGEgLmdvIGZpbGUgYW5kIG1tYXAoKSBpdCBiYWNr IGludG8gbWVtb3J5IGFuZCBoYXZlIGl0IHN0aWxsCisgKiB3b3JrLCB3aGljaCB3aWxsIGFsbG93 IGZhc3Qgc3RhcnR1cHMuIGlmIHdlJ3JlIHN0b3JpbmcgY29kZSBmb3IgYSBwcm9jZWR1cmUsCisg KiB0aGUgZmlyc3QgcG9pbnRlciBpbiB0aGUgYmxvY2sgYXJyYXkgd2lsbCBwb2ludCB0byB0aGUg cHJvY2VkdXJlIGVudHJ5IHBvaW50LgorICoKKyAqIGEgYmxvY2sgaXMgYSBiYXNpYyBibG9jayBv ZiB0aGUgb2JqZWN0IGNvZGUuIGl0J3Mgbm90IHJlYWxseSBhIGJhc2ljIGJsb2NrCisgKiBmcm9t IHRoZSBKSVQgcGVyc3BlY3RpdmUsIGJlY2F1c2UgYWxsIG9mIHRoZSBpbnN0cnVjdGlvbnMgYXJl IGltcGxlbWVudGVkIGFzCisgKiBjYWxscyB0byBDIGZ1bmN0aW9ucy4KKyAqCisgKiAob25lIGNv dWxkIGFsc28gaW1wbGVtZW50IHBvc2l0aW9uLWluZGVwZW5kZW50IGNvZGUgYnkgb25seSB1c2lu ZyByZWxhdGl2ZQorICogYnJhbmNoZXMsIGJ1dCBpdCdzIG5vdCBjbGVhciB0aGF0IEdOVSBMaWdo dG5pbmcgc3VwcG9ydHMgdGhpcywgc28gSSdsbCB1c2UKKyAqIHRoZSB0YWJsZSBtZXRob2QuKSAq LworCit0eXBlZGVmIHZvaWQgKCpqaXRmKSh2b2lkICpibG9ja19wb2ludGVycywgc2NtX3RfdWlu dDggKippcCwKKyAgICAgICAgICAgICAgICAgICAgIFNDTSAqKnNwLCBTQ00gKipmcCk7CisKKy8q IHRoZSBmaXJzdCBibG9jayBpcyBudW1iZXIgMS4gKi8KKyNkZWZpbmUgU0NNX0NfSklUQ09ERV9C TE9DSyhibG9ja19wb2ludGVycywgbikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICgq KChibG9ja19wb2ludGVycykgKyAobikgLSAxKSkKKyAgLyogIFNDTV9TVFJVQ1RfU0xPVF9SRUYo b2JqLCBuIC0gMSkgKi8KKyNkZWZpbmUgU0NNX0pJVENPREVfRU5URVIob2JqLCBpcCwgc3AsIGZw KSAgICAgICAgICAgICAgICAgICAgXAorICAoKGppdGYpKFNDTV9DX0pJVENPREVfQkxPQ0sob2Jq LCAxKSkpKFNDTV9DX0pJVENPREVfQkxPQ0sob2JqLCAxKSwgJmlwLCAmc3AsICZmcCkKKworaml0 ZiAqaml0X29iamNvZGUoc3RydWN0IHNjbV9vYmpjb2RlICpvYmpjb2RlKTsKKwordm9pZCBzY21f aW5pdF9qaXQgKHZvaWQpOworCisjZW5kaWYgLyogbm90IF9TQ01fVk1fSklUX0hfICovCi0tIAox LjcuMQoK --0016367d6298daea4a048bb3f2ee--