From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12920 invoked by alias); 21 May 2014 11:43:28 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 12897 invoked by uid 89); 21 May 2014 11:43:27 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.1 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 3 recipients X-HELO: mail-lb0-f180.google.com Received: from mail-lb0-f180.google.com (HELO mail-lb0-f180.google.com) (209.85.217.180) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 21 May 2014 11:43:18 +0000 Received: by mail-lb0-f180.google.com with SMTP id p9so1473575lbv.11 for ; Wed, 21 May 2014 04:43:13 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.152.246.11 with SMTP id xs11mr1209440lac.73.1400672593565; Wed, 21 May 2014 04:43:13 -0700 (PDT) Received: by 10.112.13.9 with HTTP; Wed, 21 May 2014 04:43:13 -0700 (PDT) In-Reply-To: <53710071.9040901@marino.st> References: <5352D100.9040108@marino.st> <5362DC9B.8090709@marino.st> <5363E0F4.4060900@marino.st> <53649694.6050508@marino.st> <536C671F.4080100@redhat.com> <536C8059.8090304@marino.st> <5370FDD9.8030802@redhat.com> <53710071.9040901@marino.st> Date: Wed, 21 May 2014 11:43:00 -0000 Message-ID: Subject: Re: Contributing new gcc targets: i386-*-dragonfly and x86-64-*-dragonfly From: Jonathan Wakely To: John Marino Cc: Jeff Law , "Joseph S. Myers" , gcc-patches , Gerald Pfeifer , "manu at gcc dot gnu.org" , "Eric Botcazou (gnu.org)" Content-Type: multipart/mixed; boundary=001a11341e1662f26c04f9e78075 X-SW-Source: 2014-05/txt/msg01743.txt.bz2 --001a11341e1662f26c04f9e78075 Content-Type: text/plain; charset=UTF-8 Content-length: 1100 On 12 May 2014 18:10, John Marino wrote: > On 5/12/2014 18:59, Jeff Law wrote: >> On 05/09/14 01:14, John Marino wrote: >>> >>> 1) Patch updated online as requested >>> 2) At this exact point in time, we probably can share the files >>> 3) I might debate that we should share the files - that would imply >>> reviewing the existing counterpart files for NetBSD and OpenBSD and >>> combining when equivalent. >> Let's go ahead and keep the files separate. We can always go back and >> combine them at a later date if we see the need. >> >> So with that in mind, the patch is good to go with the gnat thread stuff >> removed. >> >> Do you have write access, or do you you need someone to commit the >> change for you? > > Thanks, Jeff! > I do not have write access, but jwakely has graciously offered to commit > this patchset when it achieves approval, so I guess he's on deck! Bootstrapped on x86_64-unknown-dragonfly3.6 and x86_64-unknown-linux-gnu, committed to trunk as http://gcc.gnu.org/r210694 John, thanks for contributing the target support and for persevering with the review process :-) --001a11341e1662f26c04f9e78075 Content-Type: text/plain; charset=US-ASCII; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hvgj3hth0 Content-length: 77190 Y29tbWl0IDkwYzljNzM3YmU3MmQwMjhhYzI0OWM4MDUwNWRjYjJjNWQxNDdk ZTkKQXV0aG9yOiBKb25hdGhhbiBXYWtlbHkgPGp3YWtlbHlAcmVkaGF0LmNv bT4KRGF0ZTogICBUdWUgTWF5IDIwIDE2OjQ5OjI4IDIwMTQgKzAxMDAKCiAg ICAyMDE0LTA1LTIxICBKb2huIE1hcmlubyAgPGdudWdjY0BtYXJpbm8uc3Q+ CiAgICAKICAgIGdjYzoKICAgIAogICAgCSogY29uZmlnLmdjYyAoKi0qLWRy YWdvbmZseSopOiBOZXcgdGFyZ2V0LgogICAgCSogY29uZmlndXJlLmFjOiBE ZXRlY3QgZGxfaXRlcmF0ZV9waGRyICgqZnJlZWJzZCosICpkcmFnb25mbHkq KS4KICAgIAkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KICAgIAkqIGNvbmZp Zy9kcmFnb25mbHktc3RkaW50Lmg6IE5ldy4KICAgIAkqIGNvbmZpZy9kcmFn b25mbHkuaDogTmV3LgogICAgCSogY29uZmlnL2RyYWdvbmZseS5vcHQ6IE5l dy4KICAgIAkqIGNvbmZpZy9pMzg2L2RyYWdvbmZseS5oOiBOZXcuCiAgICAJ KiBnaW5jbHVkZS9zdGRkZWYuaDogRGV0ZWN0IF9QVFJESUZGX1RfREVDTEFS RUQgZm9yIERyYWdvbkZseS4KICAgIAogICAgaW5jbHVkZToKICAgIAogICAg CSogbGliZXJ0eS5oOiBVc2UgYmFzZW5hbWUgZnVuY3Rpb24gb24gRHJhZ29u Rmx5LgogICAgCiAgICBsaWJjaWxrcnRzOgogICAgCiAgICAJKiBydW50aW1l L29zLXVuaXguYyAoX19EcmFnb25GbHlfXyk6IE5ldyB0YXJnZXQuCiAgICAK ICAgIGxpYmdjYzoKICAgIAogICAgCSogY29uZmlnLmhvc3QgKCotKi1kcmFn b25mbHkqKTogTmV3IHRhcmdldC4KICAgIAkqIGNydHN0dWZmLmM6IE1ha2Ug ZGxfaXRlcmF0ZV9zdXBwb3J0IGdlbmVyaWMgb24gKmJzZC4KICAgIAkqIGVu YWJsZS1leGVjdXRlLXN0YWNrLW1wcm90ZWN0LmM6IEFsd2F5cyBtcHJvdGVj dCBvbiBGcmVlQlNELgogICAgCSogdW53aW5kLWR3Mi1mZGUtZGlwLmM6IEFk ZCBkbF9pdGVyYXRlX3BociBzdXBwb3J0IGZvciBEcmFnb25GbHkuCiAgICAJ KiBjb25maWcvaTM4Ni9kcmFnb25mbHktdW53aW5kLmg6IE5ldy4KICAgIAog ICAgbGliaXRtOgogICAgCiAgICAJKiBjb25maWd1cmUudGd0ICgqLSotZHJh Z29uZmx5Kik6IE5ldyB0YXJnZXQuCiAgICAKICAgIGxpYnN0ZGMrKy12MzoK ICAgIAogICAgCSogYWNpbmNsdWRlLm00ICgqLSotZHJhZ29uZmx5Kik6IE5l dyB0YXJnZXQuCiAgICAJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCiAgICAJ KiBjb25maWd1cmUuaG9zdCAoKi0qLWRyYWdvbmZseSopOiBOZXcgdGFyZ2V0 LgogICAgCSogY29uZmlnL2xvY2FsZS9kcmFnb25mbHkvY19sb2NhbGUuY2M6 IE5ldy4KICAgIAkqIGNvbmZpZy9sb2NhbGUvZHJhZ29uZmx5L2N0eXBlX21l bWJlcnMuY2M6IE5ldy4KICAgIAkqIGNvbmZpZy9vcy9ic2QvZHJhZ29uZmx5 L2N0eXBlX2Jhc2UuaDogTmV3LgogICAgCSogY29uZmlnL29zL2JzZC9kcmFn b25mbHkvY3R5cGVfY29uZmlndXJlX2NoYXIuY2M6IE5ldy4KICAgIAkqIGNv bmZpZy9vcy9ic2QvZHJhZ29uZmx5L2N0eXBlX2lubGluZS5oOiBOZXcuCiAg ICAJKiBjb25maWcvb3MvYnNkL2RyYWdvbmZseS9vc19kZWZpbmVzLmg6IE5l dy4KCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9jb25maWcu Z2NjCmluZGV4IGRlMDEwZGEuLmJmMDUzODUgMTAwNjQ0Ci0tLSBhL2djYy9j b25maWcuZ2NjCisrKyBiL2djYy9jb25maWcuZ2NjCkBAIC02MjEsNiArNjIx LDI2IEBAIGNhc2UgJHt0YXJnZXR9IGluCiAgICAgIiIgfCB5ZXMgfCBwb3Np eCkgdGhyZWFkX2ZpbGU9J3Bvc2l4JyA7OwogICBlc2FjCiAgIDs7CisqLSot ZHJhZ29uZmx5KikKKyAgZ2FzPXllcworICBnbnVfbGQ9eWVzCisgIHRtYWtl X2ZpbGU9InQtc2xpYmdjYyIKKyAgY2FzZSAke2VuYWJsZV90aHJlYWRzfSBp bgorICAgICIiIHwgeWVzIHwgcG9zaXgpCisgICAgICB0aHJlYWRfZmlsZT0n cG9zaXgnCisgICAgICA7OworICAgIG5vIHwgc2luZ2xlKQorICAgICAgIyBM ZXQgdGhlc2Ugbm9uLXBvc2l4IHRocmVhZCBzZWxlY3Rpb25zIGZhbGwgdGhy b3VnaCBpZiByZXF1ZXN0ZWQKKyAgICAgIDs7CisgICAgKikKKyAgICAgIGVj aG8gJ1Vua25vd24gdGhyZWFkIGNvbmZpZ3VyYXRpb24gZm9yIERyYWdvbkZs eSBCU0QnCisgICAgICBleGl0IDEKKyAgICAgIDs7CisgIGVzYWMKKyAgZXh0 cmFfb3B0aW9ucz0iJGV4dHJhX29wdGlvbnMgcnBhdGgub3B0IGRyYWdvbmZs eS5vcHQiCisgIGRlZmF1bHRfdXNlX2N4YV9hdGV4aXQ9eWVzCisgIHVzZV9n Y2Nfc3RkaW50PXdyYXAKKyAgOzsKICotKi1mcmVlYnNkKikKICAgIyBUaGlz IGlzIHRoZSBnZW5lcmljIEVMRiBjb25maWd1cmF0aW9uIG9mIEZyZWVCU0Qu ICBMYXRlcgogICAjIG1hY2hpbmUtc3BlY2lmaWMgc2VjdGlvbnMgbWF5IHJl ZmluZSBhbmQgYWRkIHRvIHRoaXMKQEAgLTEzMjEsNiArMTM0MSwxNCBAQCB4 ODZfNjQtKi1yZG9zKikKICAgICB0bV9maWxlPSIke3RtX2ZpbGV9IGkzODYv dW5peC5oIGkzODYvYXR0LmggZGJ4ZWxmLmggZWxmb3MuaCBuZXdsaWItc3Rk aW50LmggaTM4Ni9pMzg2ZWxmLmggaTM4Ni94ODYtNjQuaCBpMzg2L3Jkb3Mu aCBpMzg2L3Jkb3M2NC5oIgogICAgIHRtYWtlX2ZpbGU9ImkzODYvdC1pMzg2 ZWxmIHQtc3ZyNCIKICAgICA7OworaVszNDU2N104Ni0qLWRyYWdvbmZseSop CisJdG1fZmlsZT0iJHt0bV9maWxlfSBpMzg2L3VuaXguaCBpMzg2L2F0dC5o IGRieGVsZi5oIGVsZm9zLmggZHJhZ29uZmx5LmggZHJhZ29uZmx5LXN0ZGlu dC5oIGkzODYvZHJhZ29uZmx5LmgiCisJdG1ha2VfZmlsZT0iJHt0bWFrZV9m aWxlfSBpMzg2L3QtY3J0c3R1ZmYiCisJOzsKK3g4Nl82NC0qLWRyYWdvbmZs eSopCisJdG1fZmlsZT0iJHt0bV9maWxlfSBpMzg2L3VuaXguaCBpMzg2L2F0 dC5oIGRieGVsZi5oIGVsZm9zLmggZHJhZ29uZmx5LmggZHJhZ29uZmx5LXN0 ZGludC5oIGkzODYveDg2LTY0LmggaTM4Ni9kcmFnb25mbHkuaCIKKwl0bWFr ZV9maWxlPSIke3RtYWtlX2ZpbGV9IGkzODYvdC1jcnRzdHVmZiIKKwk7Owog aVszNDU2N104Ni0qLWZyZWVic2QqKQogCXRtX2ZpbGU9IiR7dG1fZmlsZX0g aTM4Ni91bml4LmggaTM4Ni9hdHQuaCBkYnhlbGYuaCBlbGZvcy5oICR7ZmJz ZF90bV9maWxlfSBpMzg2L2ZyZWVic2QuaCIKIAk7OwpAQCAtNDA2MCw2ICs0 MDg4LDggQEAgY2FzZSAke3RhcmdldH0gaW4KIAkJOzsKIAlpWzM0NTY3XTg2 LSotbWluZ3cqIHwgeDg2XzY0LSotbWluZ3cqKQogCQk7OworCWlbMzQ1Njdd ODYtKi1kcmFnb25mbHkqIHwgeDg2XzY0LSotZHJhZ29uZmx5KikKKwkJOzsK IAlpWzM0NTY3XTg2LSotZnJlZWJzZCogfCB4ODZfNjQtKi1mcmVlYnNkKikK IAkJOzsKIAlpYTY0Ki0qLWxpbnV4KikKZGlmZiAtLWdpdCBhL2djYy9jb25m aWcvZHJhZ29uZmx5LXN0ZGludC5oIGIvZ2NjL2NvbmZpZy9kcmFnb25mbHkt c3RkaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZjBiYjMwZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy9jb25maWcvZHJhZ29u Zmx5LXN0ZGludC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qIERlZmluaXRpb25z IGZvciA8c3RkaW50Lmg+IHR5cGVzIGZvciBEcmFnb25GbHkgc3lzdGVtcy4K KyAgIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5IEpvaG4gTWFyaW5vIDxnbnVn Y2NAbWFyaW5vLnN0PgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisK K0dDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQordGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywg b3IgKGF0IHlvdXIgb3B0aW9uKQorYW55IGxhdGVyIHZlcnNpb24uCisKK0dD QyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK K0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisKK1VuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJl IGdyYW50ZWQgYWRkaXRpb25hbAorcGVybWlzc2lvbnMgZGVzY3JpYmVkIGlu IHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgor My4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCithIGNvcHkgb2Yg dGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOworc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09Q WUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCis8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjZGVmaW5lIFNJ R19BVE9NSUNfVFlQRSAgICJpbnQiCisKKyNkZWZpbmUgSU5UOF9UWVBFICAg ICAgICAgInNpZ25lZCBjaGFyIgorI2RlZmluZSBJTlQxNl9UWVBFICAgICAg ICAic2hvcnQgaW50IgorI2RlZmluZSBJTlQzMl9UWVBFICAgICAgICAiaW50 IgorI2RlZmluZSBJTlQ2NF9UWVBFICAgICAgICAoTE9OR19UWVBFX1NJWkUg PT0gNjQgPyAibG9uZyBpbnQiIDogImxvbmcgbG9uZyBpbnQiKQorI2RlZmlu ZSBVSU5UOF9UWVBFICAgICAgICAidW5zaWduZWQgY2hhciIKKyNkZWZpbmUg VUlOVDE2X1RZUEUgICAgICAgInNob3J0IHVuc2lnbmVkIGludCIKKyNkZWZp bmUgVUlOVDMyX1RZUEUgICAgICAgInVuc2lnbmVkIGludCIKKyNkZWZpbmUg VUlOVDY0X1RZUEUgICAgICAgKExPTkdfVFlQRV9TSVpFID09IDY0ID8gImxv bmcgdW5zaWduZWQgaW50IiA6ICJsb25nIGxvbmcgdW5zaWduZWQgaW50IikK KworI2RlZmluZSBJTlRfTEVBU1Q4X1RZUEUgICBJTlQ4X1RZUEUKKyNkZWZp bmUgSU5UX0xFQVNUMTZfVFlQRSAgSU5UMTZfVFlQRQorI2RlZmluZSBJTlRf TEVBU1QzMl9UWVBFICBJTlQzMl9UWVBFCisjZGVmaW5lIElOVF9MRUFTVDY0 X1RZUEUgIElOVDY0X1RZUEUKKyNkZWZpbmUgVUlOVF9MRUFTVDhfVFlQRSAg VUlOVDhfVFlQRQorI2RlZmluZSBVSU5UX0xFQVNUMTZfVFlQRSBVSU5UMTZf VFlQRQorI2RlZmluZSBVSU5UX0xFQVNUMzJfVFlQRSBVSU5UMzJfVFlQRQor I2RlZmluZSBVSU5UX0xFQVNUNjRfVFlQRSBVSU5UNjRfVFlQRQorCisjZGVm aW5lIElOVF9GQVNUOF9UWVBFICAgIElOVDMyX1RZUEUKKyNkZWZpbmUgSU5U X0ZBU1QxNl9UWVBFICAgSU5UMzJfVFlQRQorI2RlZmluZSBJTlRfRkFTVDMy X1RZUEUgICBJTlQzMl9UWVBFCisjZGVmaW5lIElOVF9GQVNUNjRfVFlQRSAg IElOVDY0X1RZUEUKKyNkZWZpbmUgVUlOVF9GQVNUOF9UWVBFICAgVUlOVDMy X1RZUEUKKyNkZWZpbmUgVUlOVF9GQVNUMTZfVFlQRSAgVUlOVDMyX1RZUEUK KyNkZWZpbmUgVUlOVF9GQVNUMzJfVFlQRSAgVUlOVDMyX1RZUEUKKyNkZWZp bmUgVUlOVF9GQVNUNjRfVFlQRSAgVUlOVDY0X1RZUEUKKworI2RlZmluZSBJ TlRQVFJfVFlQRSAgICAgICAoTE9OR19UWVBFX1NJWkUgPT0gNjQgPyAgSU5U NjRfVFlQRSA6ICBJTlQzMl9UWVBFKQorI2RlZmluZSBVSU5UUFRSX1RZUEUg ICAgICAoTE9OR19UWVBFX1NJWkUgPT0gNjQgPyBVSU5UNjRfVFlQRSA6IFVJ TlQzMl9UWVBFKQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9kcmFnb25mbHku aCBiL2djYy9jb25maWcvZHJhZ29uZmx5LmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMTE1YzI1ZAotLS0gL2Rldi9udWxsCisrKyBi L2djYy9jb25maWcvZHJhZ29uZmx5LmgKQEAgLTAsMCArMSwxMjkgQEAKKy8q IEJhc2UgY29uZmlndXJhdGlvbiBmaWxlIGZvciBhbGwgRHJhZ29uRmx5IHRh cmdldHMuCisgICBDb3B5cmlnaHQgKEMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisgICBDb250cmlidXRlZCBieSBKb2huIE1hcmlu byA8Z251Z2NjQG1hcmluby5zdD4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0NDLgorCitHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoraXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKK2FueSBsYXRlciB2ZXJzaW9u LgorCitHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKK2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCitNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorCitVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywg eW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKK3Blcm1pc3Npb25zIGRlc2Ny aWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZl cnNpb24KKzMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorYSBj b3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsKK3NlZSB0aGUgZmlsZXMgQ09QWUlORzMg YW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNl ZQorPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI3Vu ZGVmICBUQVJHRVRfT1NfQ1BQX0JVSUxUSU5TCisjZGVmaW5lIFRBUkdFVF9P U19DUFBfQlVJTFRJTlMoKSAgICAgICAgICAgIFwKKyAgZG8gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgYnVp bHRpbl9kZWZpbmVfc3RkICgidW5peCIpOyAgICAgICAgIFwKKyAgICAgICBi dWlsdGluX2RlZmluZSAoIl9fRHJhZ29uRmx5X18iKTsgICAgXAorICAgICAg IGJ1aWx0aW5fYXNzZXJ0ICgic3lzdGVtPXVuaXgiKTsgICAgICBcCisgICAg ICAgYnVpbHRpbl9hc3NlcnQgKCJzeXN0ZW09YnNkIik7ICAgICAgIFwKKyAg ICAgICBidWlsdGluX2Fzc2VydCAoInN5c3RlbT1EcmFnb25GbHkiKTsgXAor ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgIHdoaWxlICgwKQorCisjdW5kZWYgIENQUF9TUEVDCisjZGVmaW5lIENQ UF9TUEVDIFwKKyAiJShjcHBfY3B1KSAlKGNwcF9hcmNoKSAle3Bvc2l4Oi1E X1BPU0lYX1NPVVJDRX0iCisKKyN1bmRlZiAgU1RBUlRGSUxFX1NQRUMKKyNk ZWZpbmUgU1RBUlRGSUxFX1NQRUMJXAorICAiJXshc2hhcmVkOiBcCisgICAg ICV7cGc6Z2NydDEubyVzfSBcCisgICAgICV7IXBnOiBcCisgICAgICAgJXtw OmdjcnQxLm8lc30gXAorICAgICAgICV7IXA6IFwKKyAgICAgICAgICV7cHJv ZmlsZTogZ2NydDEubyVzfSBcCisgICAgICAgICAleyFwcm9maWxlOiBcCisg ICAgICAgICAgICV7cGllOiBTY3J0MS5vJXM7OmNydDEubyVzfX19fX0gXAor ICAgY3J0aS5vJXMgXAorICAgJXtzaGFyZWR8cGllOmNydGJlZ2luUy5vJXM7 OmNydGJlZ2luLm8lc30iCisKKyN1bmRlZiAgRU5ERklMRV9TUEVDCisjZGVm aW5lIEVOREZJTEVfU1BFQyBcCisgICIle3NoYXJlZHxwaWU6Y3J0ZW5kUy5v JXM7OmNydGVuZC5vJXN9IGNydG4ubyVzIgorCisjdW5kZWYgIExJQl9TUEVD CisjZGVmaW5lIExJQl9TUEVDIFwKKyAgIiV7cHRocmVhZDotbHB0aHJlYWR9 IC1sYyIKKworI2lmIGRlZmluZWQoSEFWRV9MRF9FSF9GUkFNRV9IRFIpCisj ZGVmaW5lIExJTktfRUhfU1BFQyAiLS1laC1mcmFtZS1oZHIiCisjZW5kaWYK KworLyogUHJvdmlkZSBhIExJTktfU1BFQyBhcHByb3ByaWF0ZSBmb3IgRHJh Z29uRmx5LiAgSGVyZSB3ZSBwcm92aWRlIHN1cHBvcnQKKyAgIGZvciB0aGUg c3BlY2lhbCBHQ0Mgb3B0aW9ucyAtc3RhdGljIGFuZCAtc2hhcmVkLCB3aGlj aCBhbGxvdyB1cyB0bworICAgbGluayB0aGluZ3MgaW4gb25lIG9mIHRoZXNl IHRocmVlIG1vZGVzIGJ5IGFwcGx5aW5nIHRoZSBhcHByb3ByaWF0ZQorICAg Y29tYmluYXRpb25zIG9mIG9wdGlvbnMgYXQgbGluay10aW1lLgorCisgICBX aGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBs aW5rIGlzIG5vdCBiZWluZworICAgZG9uZS4gICovCisKKyNkZWZpbmUgREZC U0RfTElOS19TUEVDIFwKKyAiJXtwOiVuY29uc2lkZXIgdXNpbmcgJy1wZycg aW5zdGVhZCBvZiAnLXAnIHdpdGggZ3Byb2YoMSl9IFwKKyAgJXt2Oi1WfSBc CisgICV7YXNzZXJ0Kn0gJXtSKn0gJXtycGF0aCp9ICV7ZGVmc3ltKn0gXAor ICAle3NoYXJlZDotQnNoYXJlYWJsZSAle2gqfSAle3NvbmFtZSp9fSBcCisg ICV7IXNoYXJlZDogXAorICAgJXshc3RhdGljOiBcCisgICAgJXtyZHluYW1p YzotZXhwb3J0LWR5bmFtaWN9IFwKKyAgICAtZHluYW1pYy1saW5rZXIgJShk ZmJzZF9keW5hbWljX2xpbmtlcikgXAorICAgfSBcCisgICAle3N0YXRpYzot QnN0YXRpY30gXAorICB9IFwKKyAgJXshc3RhdGljOi0taGFzaC1zdHlsZT1n bnV9IFwKKyAgJXtzeW1ib2xpYzotQnN5bWJvbGljfSIKKworI3VuZGVmICBM SU5LX1NQRUMKKyNkZWZpbmUgTElOS19TUEVDIERGQlNEX0xJTktfU1BFQwor CisjZGVmaW5lIERGQlNEX0RZTkFNSUNfTElOS0VSICIvdXNyL2xpYmV4ZWMv bGQtZWxmLnNvLjIiCisKKworLyogVXNlIC0tYXMtbmVlZGVkIC1sZ2NjX3Mg Zm9yIGVoIHN1cHBvcnQuICAqLworI2lmZGVmIEhBVkVfTERfQVNfTkVFREVE CisjZGVmaW5lIFVTRV9MRF9BU19ORUVERUQgMQorI2VuZGlmCisKKy8qKioq KioqKioqKioqKioqKioqKioqKipbICBUYXJnZXQgc3R1ZmYgIF0qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogQWxsIERyYWdv bkZseSBBcmNoaXRlY3R1cmVzIHN1cHBvcnQgdGhlIEVMRiBvYmplY3QgZmls ZSBmb3JtYXQuICAqLworI3VuZGVmICBPQkpFQ1RfRk9STUFUX0VMRgorI2Rl ZmluZSBPQkpFQ1RfRk9STUFUX0VMRgorCisvKiBEb24ndCBhc3N1bWUgYW55 dGhpbmcgYWJvdXQgdGhlIGhlYWRlciBmaWxlcy4gICovCisjdW5kZWYgIE5P X0lNUExJQ0lUX0VYVEVSTl9DCisjZGVmaW5lIE5PX0lNUExJQ0lUX0VYVEVS Tl9DCTEKKworLyogRm9sbG93IERyYWdvbkZseSdzIHN0YW5kYXJkIGhlYWRl cnMgKDxtYWNoaW5lL3N0ZGludC5oPiwgZXRjLi4uKS4gICovCisKKyN1bmRl ZiAgV0NIQVJfVFlQRQorI2RlZmluZSBXQ0hBUl9UWVBFICJpbnQiCisKKyN1 bmRlZiAgV0lOVF9UWVBFCisjZGVmaW5lIFdJTlRfVFlQRSAiaW50IgorCisv KiBDb2RlIGdlbmVyYXRpb24gcGFyYW1ldGVycy4gICovCisKKy8qIFVzZSBw ZXJpb2RzIHJhdGhlciB0aGFuIGRvbGxhciBzaWducyBpbiBzcGVjaWFsIGcr KyBhc3NlbWJsZXIgbmFtZXMuCisgICBUaGlzIGVuc3VyZXMgdGhlIGNvbmZp Z3VyYXRpb24ga25vd3Mgb3VyIHN5c3RlbSBjb3JyZWN0bHkgc28gd2UgY2Fu IGxpbmsKKyAgIHdpdGggbGlicmFyaWVzIGNvbXBpbGVkIHdpdGggdGhlIG5h dGl2ZSBjYy4gICovCisjdW5kZWYgTk9fRE9MTEFSX0lOX0xBQkVMCisKKy8q IFVzZWQgYnkgbGliZ2NjMi5jLiAgV2Ugc3VwcG9ydCBmaWxlIGxvY2tpbmcg d2l0aCBmY250bCAvIEZfU0VUTEtXLgorICAgVGhpcyBlbmFibGVzIHRoZSB0 ZXN0IGNvdmVyYWdlIGNvZGUgdG8gdXNlIGZpbGUgbG9ja2luZyB3aGVuIGV4 aXRpbmcgYQorICAgcHJvZ3JhbSwgd2hpY2ggYXZvaWRzIHJhY2UgY29uZGl0 aW9ucyBpZiB0aGUgcHJvZ3JhbSBoYXMgZm9ya2VkLiAgKi8KKyNkZWZpbmUg VEFSR0VUX1BPU0lYX0lPCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2RyYWdv bmZseS5vcHQgYi9nY2MvY29uZmlnL2RyYWdvbmZseS5vcHQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg3ODI4ZAotLS0gL2Rldi9u dWxsCisrKyBiL2djYy9jb25maWcvZHJhZ29uZmx5Lm9wdApAQCAtMCwwICsx LDY0IEBACis7IERyYWdvbkZseSBCU0Qgb3B0aW9ucy4KKworOyBDb3B5cmln aHQgKEMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7 Cis7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKzsKKzsgR0NDIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkgaXQgdW5kZXIKKzsgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKzsg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKKzsgdmVyc2lvbi4KKzsKKzsgR0ND IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQorOyBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBv cgorOyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzsgZm9yIG1vcmUgZGV0 YWlscy4KKzsKKzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzsgYWxvbmcgd2l0 aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKzsg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCis7IFNlZSB0aGUg R0NDIGludGVybmFscyBtYW51YWwgKG9wdGlvbnMudGV4aSkgZm9yIGEgZGVz Y3JpcHRpb24gb2YgdGhpcyBmaWxlJ3MgZm9ybWF0LgorCis7IFBsZWFzZSB0 cnkgdG8ga2VlcCB0aGlzIGZpbGUgaW4gQVNDSUkgY29sbGF0aW5nIG9yZGVy LgorCithc3NlcnQKK0RyaXZlciBTZXBhcmF0ZQorCithc3NlcnQ9CitEcml2 ZXIgSm9pbmVkT3JNaXNzaW5nCisKK2RlZnN5bQorRHJpdmVyIFNlcGFyYXRl CisKK2RlZnN5bT0KK0RyaXZlciBKb2luZWRPck1pc3NpbmcKKworcG9zaXgK K0RyaXZlcgorCitwcm9maWxlCitEcml2ZXIKKworcHRocmVhZAorRHJpdmVy CisKK3JkeW5hbWljCitEcml2ZXIKKworcnBhdGgtbGluaworRHJpdmVyIFNl cGFyYXRlCisKK3JwYXRoLWxpbms9CitEcml2ZXIgSm9pbmVkT3JNaXNzaW5n CisKK3JwYXRoPQorRHJpdmVyIEpvaW5lZE9yTWlzc2luZworCitzb25hbWUK K0RyaXZlciBTZXBhcmF0ZQorCitzb25hbWU9CitEcml2ZXIgSm9pbmVkT3JN aXNzaW5nCisKKzsgVGhpcyBjb21tZW50IGlzIHRvIGVuc3VyZSB3ZSByZXRh aW4gdGhlIGJsYW5rIGxpbmUgYWJvdmUuCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL2kzODYvZHJhZ29uZmx5LmggYi9nY2MvY29uZmlnL2kzODYvZHJhZ29u Zmx5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzEz NjJkNQotLS0gL2Rldi9udWxsCisrKyBiL2djYy9jb25maWcvaTM4Ni9kcmFn b25mbHkuaApAQCAtMCwwICsxLDEwNCBAQAorLyogRGVmaW5pdGlvbnMgZm9y IEludGVsIDM4NiBydW5uaW5nIERyYWdvbkZseSB3aXRoIEVMRiBmb3JtYXQK KyAgIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5IEpvaG4gTWFyaW5vIDxnbnVn Y2NAbWFyaW5vLnN0PgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisK K0dDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQordGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywg b3IgKGF0IHlvdXIgb3B0aW9uKQorYW55IGxhdGVyIHZlcnNpb24uCisKK0dD QyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK K0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisKK1VuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJl IGdyYW50ZWQgYWRkaXRpb25hbAorcGVybWlzc2lvbnMgZGVzY3JpYmVkIGlu IHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgor My4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCithIGNvcHkgb2Yg dGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOworc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09Q WUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCis8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisKKy8qIE92ZXJy aWRlIHRoZSBkZWZhdWx0IGNvbW1lbnQtc3RhcnRlciBvZiAiLyIuICAqLwor I3VuZGVmICBBU01fQ09NTUVOVF9TVEFSVAorI2RlZmluZSBBU01fQ09NTUVO VF9TVEFSVCAiIyIKKworI3VuZGVmICBBU01fQVBQX09OCisjZGVmaW5lIEFT TV9BUFBfT04gIiNBUFBcbiIKKworI3VuZGVmICBBU01fQVBQX09GRgorI2Rl ZmluZSBBU01fQVBQX09GRiAiI05PX0FQUFxuIgorCisjdW5kZWYgIERCWF9S RUdJU1RFUl9OVU1CRVIKKyNkZWZpbmUgREJYX1JFR0lTVEVSX05VTUJFUihu KSBcCisgIChUQVJHRVRfNjRCSVQgPyBkYng2NF9yZWdpc3Rlcl9tYXBbbl0g OiBzdnI0X2RieF9yZWdpc3Rlcl9tYXBbbl0pCisKKyN1bmRlZiAgTk9fUFJP RklMRV9DT1VOVEVSUworI2RlZmluZSBOT19QUk9GSUxFX0NPVU5URVJTCTEK KworLyogVGVsbCBmaW5hbC5jIHRoYXQgd2UgZG9uJ3QgbmVlZCBhIGxhYmVs IHBhc3NlZCB0byBtY291bnQuICAqLworCisjdW5kZWYgIE1DT1VOVF9OQU1F CisjZGVmaW5lIE1DT1VOVF9OQU1FICIubWNvdW50IgorCisvKiBNYWtlIGdj YyBhZ3JlZSB3aXRoIDxtYWNoaW5lL2Fuc2kuaD4uICAqLworCisjdW5kZWYg IFNJWkVfVFlQRQorI2RlZmluZSBTSVpFX1RZUEUJKFRBUkdFVF82NEJJVCA/ ICJsb25nIHVuc2lnbmVkIGludCIgOiAidW5zaWduZWQgaW50IikKKworI3Vu ZGVmICBQVFJESUZGX1RZUEUKKyNkZWZpbmUgUFRSRElGRl9UWVBFCShUQVJH RVRfNjRCSVQgPyAibG9uZyBpbnQiIDogImludCIpCisKKyN1bmRlZiAgV0NI QVJfVFlQRV9TSVpFCisjZGVmaW5lIFdDSEFSX1RZUEVfU0laRQkoVEFSR0VU XzY0QklUID8gMzIgOiBCSVRTX1BFUl9XT1JEKQorCisjdW5kZWYgIFNVQlRB UkdFVF9FWFRSQV9TUEVDUwkvKiBpMzg2LmggYm9ndXNseSBkZWZpbmVzIGl0 LiAgKi8KKyNkZWZpbmUgU1VCVEFSR0VUX0VYVFJBX1NQRUNTIFwKKyAgeyAi ZGZic2RfZHluYW1pY19saW5rZXIiLCBERkJTRF9EWU5BTUlDX0xJTktFUiB9 CisKKy8qIEEgQyBzdGF0ZW1lbnQgdG8gb3V0cHV0IHRvIHRoZSBzdGRpbyBz dHJlYW0gRklMRSBhbiBhc3NlbWJsZXIKKyAgIGNvbW1hbmQgdG8gYWR2YW5j ZSB0aGUgbG9jYXRpb24gY291bnRlciB0byBhIG11bHRpcGxlIG9mIDE8PExP RworICAgYnl0ZXMgaWYgaXQgaXMgd2l0aGluIE1BWF9TS0lQIGJ5dGVzLgor CisgICBUaGlzIGlzIHVzZWQgdG8gYWxpZ24gY29kZSBsYWJlbHMgYWNjb3Jk aW5nIHRvIEludGVsIHJlY29tbWVuZGF0aW9ucy4gICovCisKKyNpZmRlZiBI QVZFX0dBU19NQVhfU0tJUF9QMkFMSUdOCisjdW5kZWYgIEFTTV9PVVRQVVRf TUFYX1NLSVBfQUxJR04KKyNkZWZpbmUgQVNNX09VVFBVVF9NQVhfU0tJUF9B TElHTihGSUxFLCBMT0csIE1BWF9TS0lQKQkJCQkJXAorICBpZiAoKExPRykg IT0gMCkgewkJCQkJCQkJCQkJCQkJXAorICAgIGlmICgoTUFYX1NLSVApID09 IDApIGZwcmludGYgKChGSUxFKSwgIlx0LnAyYWxpZ24gJWRcbiIsIChMT0cp KTsJXAorICAgIGVsc2UgZnByaW50ZiAoKEZJTEUpLCAiXHQucDJhbGlnbiAl ZCwsJWRcbiIsIChMT0cpLCAoTUFYX1NLSVApKTsJXAorICB9CisjZW5kaWYK KworLyogRG9uJ3QgZGVmYXVsdCB0byBwY2Mtc3RydWN0LXJldHVybiwgd2Ug d2FudCB0byByZXRhaW4gY29tcGF0aWJpbGl0eSB3aXRoCisgICBvbGRlciBn Y2MgdmVyc2lvbnMgQU5EIHBjYy1zdHJ1Y3QtcmV0dXJuIGlzIG5vbnJlZW50 cmFudC4KKyAgIChldmVuIHRob3VnaCB0aGUgU1ZSNCBBQkkgZm9yIHRoZSBp Mzg2IHNheXMgdGhhdCByZWNvcmRzIGFuZCB1bmlvbnMgYXJlCisgICByZXR1 cm5lZCBpbiBtZW1vcnkpLiAgKi8KKworI3VuZGVmICBERUZBVUxUX1BDQ19T VFJVQ1RfUkVUVVJOCisjZGVmaW5lIERFRkFVTFRfUENDX1NUUlVDVF9SRVRV Uk4gMAorCisvKiBEcmFnb25GbHkgc2V0cyB0aGUgcm91bmRpbmcgcHJlY2lz aW9uIG9mIHRoZSBGUFUgdG8gNTMgYml0cy4gIExldCB0aGUKKyAgIGNvbXBp bGVyIGdldCB0aGUgY29udGVudHMgb2YgPGZsb2F0Lmg+IGFuZCBzdGQ6Om51 bWVyaWNfbGltaXRzIGNvcnJlY3QuICAqLworI3VuZGVmIFRBUkdFVF85Nl9S T1VORF81M19MT05HX0RPVUJMRQorI2RlZmluZSBUQVJHRVRfOTZfUk9VTkRf NTNfTE9OR19ET1VCTEUgKCFUQVJHRVRfNjRCSVQpCisKKy8qIFB1dCBhbGwg KnRmIHJvdXRpbmVzIGluIGxpYmdjYy4gICovCisjdW5kZWYgTElCR0NDMl9I QVNfVEZfTU9ERQorI2RlZmluZSBMSUJHQ0MyX0hBU19URl9NT0RFIDEKKyNk ZWZpbmUgTElCR0NDMl9URl9DRVhUIHEKKyNkZWZpbmUgVEZfU0laRSAxMTMK KworLyogU3RhdGljIHN0YWNrIGNoZWNraW5nIGlzIHN1cHBvcnRlZCBieSBt ZWFucyBvZiBwcm9iZXMuICAqLworI2RlZmluZSBTVEFDS19DSEVDS19TVEFU SUNfQlVJTFRJTiAxCisKKy8qIFN1cHBvcnQgZm9yIGkzODYgd2FzIHJlbW92 ZWQgZnJvbSBEcmFnb25GbHkgaW4gMjAwNyAgKi8KKyNkZWZpbmUgU1VCVEFS R0VUMzJfREVGQVVMVF9DUFUgImk0ODYiCisKKyNkZWZpbmUgVEFSR0VUX0FT TV9GSUxFX0VORCBmaWxlX2VuZF9pbmRpY2F0ZV9leGVjX3N0YWNrCmRpZmYg LS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwpp bmRleCBhMzM5YTBmLi4yODFjZThlIDEwMDY0NAotLS0gYS9nY2MvY29uZmln dXJlLmFjCisrKyBiL2djYy9jb25maWd1cmUuYWMKQEAgLTUwMTksNiArNTAx OSwxMyBAQCBjYXNlICIkdGFyZ2V0IiBpbgogICAgICAgZ2NjX2N2X3Rhcmdl dF9kbF9pdGVyYXRlX3BoZHI9bm8KICAgICBmaQogICAgIDs7CisgICotKi1k cmFnb25mbHkqIHwgKi0qLWZyZWVic2QqKQorICAgIGlmIGdyZXAgZGxfaXRl cmF0ZV9waGRyICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvbGlua19lbGYuaCA+ IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICBnY2NfY3ZfdGFyZ2V0X2Rs X2l0ZXJhdGVfcGhkcj15ZXMKKyAgICBlbHNlCisgICAgICBnY2NfY3ZfdGFy Z2V0X2RsX2l0ZXJhdGVfcGhkcj1ubworICAgIGZpCisgICAgOzsKIGVzYWMK IEdDQ19UQVJHRVRfVEVNUExBVEUoW1RBUkdFVF9ETF9JVEVSQVRFX1BIRFJd KQogaWYgdGVzdCB4JGdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZV9waGRyID0g eHllczsgdGhlbgpkaWZmIC0tZ2l0IGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5o IGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCmluZGV4IGNmYThkZjMuLjYyZTg5 M2EgMTAwNjQ0Ci0tLSBhL2djYy9naW5jbHVkZS9zdGRkZWYuaAorKysgYi9n Y2MvZ2luY2x1ZGUvc3RkZGVmLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBfVFlQ RV93Y2hhcl90OwogI2lmbmRlZiBfQlNEX1BUUkRJRkZfVF8KICNpZm5kZWYg X19faW50X3B0cmRpZmZfdF9oCiAjaWZuZGVmIF9HQ0NfUFRSRElGRl9UCisj aWZuZGVmIF9QVFJESUZGX1RfREVDTEFSRUQgLyogRHJhZ29uRmx5ICovCiAj ZGVmaW5lIF9QVFJESUZGX1QKICNkZWZpbmUgX1RfUFRSRElGRl8KICNkZWZp bmUgX1RfUFRSRElGRgpAQCAtMTQxLDEwICsxNDIsMTIgQEAgX1RZUEVfd2No YXJfdDsKICNkZWZpbmUgX0JTRF9QVFJESUZGX1RfCiAjZGVmaW5lIF9fX2lu dF9wdHJkaWZmX3RfaAogI2RlZmluZSBfR0NDX1BUUkRJRkZfVAorI2RlZmlu ZSBfUFRSRElGRl9UX0RFQ0xBUkVECiAjaWZuZGVmIF9fUFRSRElGRl9UWVBF X18KICNkZWZpbmUgX19QVFJESUZGX1RZUEVfXyBsb25nIGludAogI2VuZGlm CiB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OworI2VuZGlm IC8qIF9QVFJESUZGX1RfREVDTEFSRUQgKi8KICNlbmRpZiAvKiBfR0NDX1BU UkRJRkZfVCAqLwogI2VuZGlmIC8qIF9fX2ludF9wdHJkaWZmX3RfaCAqLwog I2VuZGlmIC8qIF9CU0RfUFRSRElGRl9UXyAqLwpAQCAtMTk4LDYgKzIwMSw3 IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7CiAjZGVm aW5lIF9HQ0NfU0laRV9UCiAjZGVmaW5lIF9TSVpFVF8KICNpZiAoZGVmaW5l ZCAoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA+PSA1KSkgXAorICB8 fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIFwKICAgfHwgZGVmaW5lZChfX0Zy ZWVCU0Rfa2VybmVsX18pCiAvKiBfX3NpemVfdCBpcyBhIHR5cGVkZWYgb24g RnJlZUJTRCA1LCBtdXN0IG5vdCB0cmFzaCBpdC4gKi8KICNlbGlmIGRlZmlu ZWQgKF9fVk1TX18pCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYmliZXJ0eS5o IGIvaW5jbHVkZS9saWJpYmVydHkuaAppbmRleCA3OGM0MmViLi43ZmQwNzAz IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpYmliZXJ0eS5oCisrKyBiL2luY2x1 ZGUvbGliaWJlcnR5LmgKQEAgLTEwNiw3ICsxMDYsMTAgQEAgZXh0ZXJuIGlu dCBjb3VudGFyZ3YgKGNoYXIqKik7CiAgICB0byBmaW5kIHRoZSBkZWNsYXJh dGlvbiBzbyBwcm92aWRlIGEgZnVsbHkgcHJvdG90eXBlZCBvbmUuICBJZiBp dAogICAgaXMgMSwgd2UgZm91bmQgaXQgc28gZG9uJ3QgcHJvdmlkZSBhbnkg ZGVjbGFyYXRpb24gYXQgYWxsLiAgKi8KICNpZiAhSEFWRV9ERUNMX0JBU0VO QU1FCi0jaWYgZGVmaW5lZCAoX19HTlVfTElCUkFSWV9fICkgfHwgZGVmaW5l ZCAoX19saW51eF9fKSB8fCBkZWZpbmVkIChfX0ZyZWVCU0RfXykgfHwgZGVm aW5lZCAoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykgfHwg ZGVmaW5lZCAoX19DWUdXSU5fXykgfHwgZGVmaW5lZCAoX19DWUdXSU4zMl9f KSB8fCBkZWZpbmVkIChfX01JTkdXMzJfXykgfHwgZGVmaW5lZCAoSEFWRV9E RUNMX0JBU0VOQU1FKQorI2lmIGRlZmluZWQgKF9fR05VX0xJQlJBUllfXyAp IHx8IGRlZmluZWQgKF9fbGludXhfXykgXAorIHx8IGRlZmluZWQgKF9fRnJl ZUJTRF9fKSB8fCBkZWZpbmVkIChfX09wZW5CU0RfXykgfHwgZGVmaW5lZCAo X19OZXRCU0RfXykgXAorIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pIHx8IGRl ZmluZWQgKF9fQ1lHV0lOMzJfXykgfHwgZGVmaW5lZCAoX19NSU5HVzMyX18p IFwKKyB8fCBkZWZpbmVkIChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkIChI QVZFX0RFQ0xfQkFTRU5BTUUpIAogZXh0ZXJuIGNoYXIgKmJhc2VuYW1lIChj b25zdCBjaGFyICopIEFUVFJJQlVURV9SRVRVUk5TX05PTk5VTEwgQVRUUklC VVRFX05PTk5VTEwoMSk7CiAjZWxzZQogLyogRG8gbm90IGFsbG93IGJhc2Vu YW1lIHRvIGJlIHVzZWQgaWYgdGhlcmUgaXMgbm8gcHJvdG90eXBlIHNlZW4u ICBXZQpkaWZmIC0tZ2l0IGEvbGliY2lsa3J0cy9ydW50aW1lL29zLXVuaXgu YyBiL2xpYmNpbGtydHMvcnVudGltZS9vcy11bml4LmMKaW5kZXggYzlkZGJi Yy4uY2I1ODJkZCAxMDA2NDQKLS0tIGEvbGliY2lsa3J0cy9ydW50aW1lL29z LXVuaXguYworKysgYi9saWJjaWxrcnRzL3J1bnRpbWUvb3MtdW5peC5jCkBA IC01NCw2ICs1NCw4IEBACiAjZWxpZiBkZWZpbmVkIF9fQVBQTEVfXwogIyAg IGluY2x1ZGUgPHN5cy9zeXNjdGwuaD4KICAgICAvLyBVc2VzIHN5c2NvbmYo X1NDX05QUk9DRVNTT1JTX09OTE4pIGluIHZlcmJvc2Ugb3V0cHV0CisjZWxp ZiBkZWZpbmVkICBfX0RyYWdvbkZseV9fCisvLyBObyBhZGRpdGlvbmFsIGlu Y2x1ZGUgZmlsZXMKICNlbGlmIGRlZmluZWQgIF9fRnJlZUJTRF9fCiAvLyBO byBhZGRpdGlvbmFsIGluY2x1ZGUgZmlsZXMKICNlbGlmIGRlZmluZWQgX19D WUdXSU5fXwpAQCAtMzc0LDcgKzM3Niw3IEBAIENPTU1PTl9TWVNERVAgaW50 IF9fY2lsa3J0c19oYXJkd2FyZV9jcHVfY291bnQodm9pZCkKICAgICBhc3Nl cnQoKHVuc2lnbmVkKWNvdW50ID09IGNvdW50KTsKIAogICAgIHJldHVybiBj b3VudDsKLSNlbGlmIGRlZmluZWQgIF9fRnJlZUJTRF9fIHx8IGRlZmluZWQg X19DWUdXSU5fXworI2VsaWYgZGVmaW5lZCAgX19GcmVlQlNEX18gfHwgZGVm aW5lZCBfX0NZR1dJTl9fIHx8IGRlZmluZWQgX19EcmFnb25GbHlfXwogICAg IGludCBuY29yZXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxOKTsK IAogICAgIHJldHVybiBuY29yZXM7CkBAIC00MDIsNiArNDA0LDkgQEAgQ09N TU9OX1NZU0RFUCB2b2lkIF9fY2lsa3J0c195aWVsZCh2b2lkKQogICAgIC8v IE9uIE1hY09TLCBjYWxsIHNjaGVkX3lpZWxkIHRvIHlpZWxkIHF1YW50dW0u ICBJJ20gbm90IHN1cmUgd2h5IHdlCiAgICAgLy8gZG9uJ3QgZG8gdGhpcyBv biBMaW51eCBhbHNvLgogICAgIHNjaGVkX3lpZWxkKCk7CisjZWxpZiBkZWZp bmVkKF9fRHJhZ29uRmx5X18pCisgICAgLy8gT24gRHJhZ29uRmx5IEJTRCwg Y2FsbCBzY2hlZF95aWVsZCB0byB5aWVsZCBxdWFudHVtLgorICAgIHNjaGVk X3lpZWxkKCk7CiAjZWxpZiBkZWZpbmVkKF9fTUlDX18pCiAgICAgLy8gT24g TUlDLCBwdGhyZWFkX3lpZWxkKCkgcmVhbGx5IHRyYXNoZXMgdGhpbmdzLiAg QXJjaCdzIG1lYXN1cmVtZW50cwogICAgIC8vIHNob3dlZCB0aGF0IGNhbGxp bmcgX21tX2RlbGF5XzMyKCkgKG9yIGRvaW5nIG5vdGhpbmcpIHdhcyBhIGJl dHRlcgpkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy5ob3N0IGIvbGliZ2Nj L2NvbmZpZy5ob3N0CmluZGV4IGY0YTc0MjguLjVmMTNhOWYgMTAwNjQ0Ci0t LSBhL2xpYmdjYy9jb25maWcuaG9zdAorKysgYi9saWJnY2MvY29uZmlnLmhv c3QKQEAgLTIwNyw2ICsyMDcsMTEgQEAgY2FzZSAke2hvc3R9IGluCiAgIHRt YWtlX2ZpbGU9IiR0bWFrZV9maWxlIHQtZGFyd2luICR7Y3B1X3R5cGV9L3Qt ZGFyd2luIHQtbGliZ2NjLXBpYyB0LXNsaWJnY2MtZGFyd2luIgogICBleHRy YV9wYXJ0cz0iY3J0My5vIGNydHRtcy5vIGNydHRtZS5vIgogICA7OworKi0q LWRyYWdvbmZseSopCisgIHRtYWtlX2ZpbGU9IiR0bWFrZV9maWxlIHQtY3J0 c3R1ZmYtcGljIHQtbGliZ2NjLXBpYyB0LWVoLWR3Mi1kaXAiCisgIHRtYWtl X2ZpbGU9IiR0bWFrZV9maWxlIHQtc2xpYmdjYyB0LXNsaWJnY2MtZ2xkIHQt c2xpYmdjYy1lbGYtdmVyIgorICBleHRyYV9wYXJ0cz0iY3J0YmVnaW4ubyBj cnRlbmQubyBjcnRiZWdpblMubyBjcnRlbmRTLm8iCisgIDs7CiAqLSotZnJl ZWJzZCopCiAgICMgVGhpcyBpcyB0aGUgZ2VuZXJpYyBFTEYgY29uZmlndXJh dGlvbiBvZiBGcmVlQlNELiAgTGF0ZXIKICAgIyBtYWNoaW5lLXNwZWNpZmlj IHNlY3Rpb25zIG1heSByZWZpbmUgYW5kIGFkZCB0byB0aGlzCkBAIC0zMDIs NyArMzA3LDggQEAgY2FzZSAke2hvc3R9IGluCiBlc2FjCiAKIGNhc2UgJHto b3N0fSBpbgotKi0qLWRhcndpbiogfCAqLSotZnJlZWJzZCogfCAqLSotbmV0 YnNkKiB8ICotKi1vcGVuYnNkKiB8ICotKi1zb2xhcmlzMiopCisqLSotZGFy d2luKiB8ICotKi1kcmFnb25mbHkqIHwgKi0qLWZyZWVic2QqIHwgKi0qLW5l dGJzZCogfCAqLSotb3BlbmJzZCogfCBcCisgICotKi1zb2xhcmlzMiopCiAg IGVuYWJsZV9leGVjdXRlX3N0YWNrPWVuYWJsZS1leGVjdXRlLXN0YWNrLW1w cm90ZWN0LmMKICAgOzsKIGlbMzQ1NjddODYtKi1taW5ndyogfCB4ODZfNjQt Ki1taW5ndyopCkBAIC01NDUsNiArNTUxLDE0IEBAIGlbMzQ1NjddODYtKi1l bGYqKQogeDg2XzY0LSotZWxmKikKIAl0bWFrZV9maWxlPSIkdG1ha2VfZmls ZSBpMzg2L3QtY3J0c3R1ZmYgdC1jcnRzdHVmZi1waWMgdC1saWJnY2MtcGlj IgogCTs7CitpWzM0NTY3XTg2LSotZHJhZ29uZmx5KikKKwl0bWFrZV9maWxl PSIke3RtYWtlX2ZpbGV9IGkzODYvdC1kcmFnb25mbHkgaTM4Ni90LWNydHN0 dWZmIgorCW1kX3Vud2luZF9oZWFkZXI9aTM4Ni9kcmFnb25mbHktdW53aW5k LmgKKwk7OworeDg2XzY0LSotZHJhZ29uZmx5KikKKwl0bWFrZV9maWxlPSIk e3RtYWtlX2ZpbGV9IGkzODYvdC1kcmFnb25mbHkgaTM4Ni90LWNydHN0dWZm IgorCW1kX3Vud2luZF9oZWFkZXI9aTM4Ni9kcmFnb25mbHktdW53aW5kLmgK Kwk7OwogaVszNDU2N104Ni0qLWZyZWVic2QqKQogCXRtYWtlX2ZpbGU9IiR7 dG1ha2VfZmlsZX0gaTM4Ni90LWZyZWVic2QgaTM4Ni90LWNydHN0dWZmIgog CTs7CkBAIC0xMjYyLDYgKzEyNzYsNyBAQCBpWzM0NTY3XTg2LSotZGFyd2lu KiB8IHg4Nl82NC0qLWRhcndpbiogfCBcCiAgIGlbMzQ1NjddODYtKi1zb2xh cmlzMiogfCB4ODZfNjQtKi1zb2xhcmlzMi4xWzAtOV0qIHwgXAogICBpWzM0 NTY3XTg2LSotY3lnd2luKiB8IHg4Nl82NC0qLWN5Z3dpbiogfCBcCiAgIGlb MzQ1NjddODYtKi1taW5ndyogfCB4ODZfNjQtKi1taW5ndyogfCBcCisgIGlb MzQ1NjddODYtKi1kcmFnb25mbHkqIHwgeDg2XzY0LSotZHJhZ29uZmx5KiB8 IFwKICAgaVszNDU2N104Ni0qLWZyZWVic2QqIHwgeDg2XzY0LSotZnJlZWJz ZCogfCBcCiAgIGlbMzQ1NjddODYtKi1vcGVuYnNkKiB8IHg4Nl82NC0qLW9w ZW5ic2QqKQogICAJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSB0LXNvZnRm cC10ZiIKZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvaTM4Ni9kcmFnb25m bHktdW53aW5kLmggYi9saWJnY2MvY29uZmlnL2kzODYvZHJhZ29uZmx5LXVu d2luZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNm ZWE1ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnY2MvY29uZmlnL2kzODYv ZHJhZ29uZmx5LXVud2luZC5oCkBAIC0wLDAgKzEsMTgwIEBACisvKiBEV0FS RjIgRUggdW53aW5kaW5nIHN1cHBvcnQgZm9yIERyYWdvbkZseSBCU0Q6IEFN RCB4ODYtNjQgYW5kIHg4Ni4KKyAgIENvcHlyaWdodCAoQykgMjAxNCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRyaWJ1dGVkIGJ5 IEpvaG4gTWFyaW5vIDxnbnVnY2NAbWFyaW5vLnN0PgorCitUaGlzIGZpbGUg aXMgcGFydCBvZiBHQ0MuCisKK0dDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorYW55IGxh dGVyIHZlcnNpb24uCisKK0dDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK K01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisKK1VuZGVyIFNlY3Rpb24gNyBvZiBHUEwg dmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorcGVybWlz c2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4 Y2VwdGlvbiwgdmVyc2lvbgorMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYW5kCithIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhj ZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworc2VlIHRoZSBmaWxl cyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4g IElmIG5vdCwgc2VlCis8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworCisvKiBEbyBjb2RlIHJlYWRpbmcgdG8gaWRlbnRpZnkgYSBzaWdu YWwgZnJhbWUsIGFuZCBzZXQgdGhlIGZyYW1lCisgICBzdGF0ZSBkYXRhIGFw cHJvcHJpYXRlbHkuICBTZWUgdW53aW5kLWR3Mi5jIGZvciB0aGUgc3RydWN0 cy4gKi8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5 cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxz eXMvdWNvbnRleHQuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3NpZ2ZyYW1lLmg+ CisKKworI2RlZmluZSBSRUdfTkFNRShyZWcpCXNmX3VjLnVjX21jb250ZXh0 Lm1jXyMjIHJlZworCisjaWZkZWYgX194ODZfNjRfXworI2RlZmluZSBNRF9G QUxMQkFDS19GUkFNRV9TVEFURV9GT1IgeDg2XzY0X2RyYWdvbmZseV9mYWxs YmFja19mcmFtZV9zdGF0ZQorCisKK3N0YXRpYyB2b2lkCit4ODZfNjRfc2ln dHJhbXBfcmFuZ2UgKHVuc2lnbmVkIGNoYXIgKipzdGFydCwgdW5zaWduZWQg Y2hhciAqKmVuZCkKK3sKKyAgdW5zaWduZWQgbG9uZyBwc19zdHJpbmdzOwor ICBpbnQgbWliWzJdOworICBzaXplX3QgbGVuOworCisgIG1pYlswXSA9IENU TF9LRVJOOworICBtaWJbMV0gPSBLRVJOX1BTX1NUUklOR1M7CisgIGxlbiA9 IHNpemVvZiAocHNfc3RyaW5ncyk7CisgIHN5c2N0bCAobWliLCAyLCAmcHNf c3RyaW5ncywgJmxlbiwgTlVMTCwgMCk7CisKKyAgKnN0YXJ0ID0gKHVuc2ln bmVkIGNoYXIgKilwc19zdHJpbmdzIC0gMzI7CisgICplbmQgICA9ICh1bnNp Z25lZCBjaGFyICopcHNfc3RyaW5nczsKK30KKworCitzdGF0aWMgX1Vud2lu ZF9SZWFzb25fQ29kZQoreDg2XzY0X2RyYWdvbmZseV9mYWxsYmFja19mcmFt ZV9zdGF0ZQorKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKmNvbnRleHQsIF9V bndpbmRfRnJhbWVTdGF0ZSAqZnMpCit7CisgIHVuc2lnbmVkIGNoYXIgKnBj ID0gY29udGV4dC0+cmE7CisgIHVuc2lnbmVkIGNoYXIgKnNpZ3RyYW1wX3N0 YXJ0LCAqc2lndHJhbXBfZW5kOworICBzdHJ1Y3Qgc2lnZnJhbWUgKnNmOwor ICBsb25nIG5ld19jZmE7CisKKyAgeDg2XzY0X3NpZ3RyYW1wX3JhbmdlKCZz aWd0cmFtcF9zdGFydCwgJnNpZ3RyYW1wX2VuZCk7CisgIGlmIChwYyA+PSBz aWd0cmFtcF9lbmQgfHwgcGMgPCBzaWd0cmFtcF9zdGFydCkKKyAgICByZXR1 cm4gX1VSQ19FTkRfT0ZfU1RBQ0s7CisKKyAgc2YgPSAoc3RydWN0IHNpZ2Zy YW1lICopIGNvbnRleHQtPmNmYTsKKyAgbmV3X2NmYSA9IHNmLT5SRUdfTkFN RShyc3ApOworICBmcy0+cmVncy5jZmFfaG93ID0gQ0ZBX1JFR19PRkZTRVQ7 CisgIC8qIFJlZ2lzdGVyIDcgaXMgcnNwICAqLworICBmcy0+cmVncy5jZmFf cmVnID0gNzsKKyAgZnMtPnJlZ3MuY2ZhX29mZnNldCA9IG5ld19jZmEgLSAo bG9uZykgY29udGV4dC0+Y2ZhOworCisgIC8qIFRoZSBTVlI0IHJlZ2lzdGVy IG51bWJlcmluZyBtYWNyb3MgYXJlbid0IHVzYWJsZSBpbiBsaWJnY2MuICAq LworICBmcy0+cmVncy5yZWdbMF0uaG93ID0gUkVHX1NBVkVEX09GRlNFVDsK KyAgZnMtPnJlZ3MucmVnWzBdLmxvYy5vZmZzZXQgPSAobG9uZykmc2YtPlJF R19OQU1FKHJheCkgLSBuZXdfY2ZhOworICBmcy0+cmVncy5yZWdbMV0uaG93 ID0gUkVHX1NBVkVEX09GRlNFVDsKKyAgZnMtPnJlZ3MucmVnWzFdLmxvYy5v ZmZzZXQgPSAobG9uZykmc2YtPlJFR19OQU1FKHJkeCkgLSBuZXdfY2ZhOwor ICBmcy0+cmVncy5yZWdbMl0uaG93ID0gUkVHX1NBVkVEX09GRlNFVDsKKyAg ZnMtPnJlZ3MucmVnWzJdLmxvYy5vZmZzZXQgPSAobG9uZykmc2YtPlJFR19O QU1FKHJjeCkgLSBuZXdfY2ZhOworICBmcy0+cmVncy5yZWdbM10uaG93ID0g UkVHX1NBVkVEX09GRlNFVDsKKyAgZnMtPnJlZ3MucmVnWzNdLmxvYy5vZmZz ZXQgPSAobG9uZykmc2YtPlJFR19OQU1FKHJieCkgLSBuZXdfY2ZhOworICBm cy0+cmVncy5yZWdbNF0uaG93ID0gUkVHX1NBVkVEX09GRlNFVDsKKyAgZnMt PnJlZ3MucmVnWzRdLmxvYy5vZmZzZXQgPSAobG9uZykmc2YtPlJFR19OQU1F KHJzaSkgLSBuZXdfY2ZhOworICBmcy0+cmVncy5yZWdbNV0uaG93ID0gUkVH X1NBVkVEX09GRlNFVDsKKyAgZnMtPnJlZ3MucmVnWzVdLmxvYy5vZmZzZXQg PSAobG9uZykmc2YtPlJFR19OQU1FKHJkaSkgLSBuZXdfY2ZhOworICBmcy0+ cmVncy5yZWdbNl0uaG93ID0gUkVHX1NBVkVEX09GRlNFVDsKKyAgZnMtPnJl Z3MucmVnWzZdLmxvYy5vZmZzZXQgPSAobG9uZykmc2YtPlJFR19OQU1FKHJi cCkgLSBuZXdfY2ZhOworICBmcy0+cmVncy5yZWdbOF0uaG93ID0gUkVHX1NB VkVEX09GRlNFVDsKKyAgZnMtPnJlZ3MucmVnWzhdLmxvYy5vZmZzZXQgPSAo bG9uZykmc2YtPlJFR19OQU1FKHI4KSAtIG5ld19jZmE7CisgIGZzLT5yZWdz LnJlZ1s5XS5ob3cgPSBSRUdfU0FWRURfT0ZGU0VUOworICBmcy0+cmVncy5y ZWdbOV0ubG9jLm9mZnNldCA9IChsb25nKSZzZi0+UkVHX05BTUUocjkpIC0g bmV3X2NmYTsKKyAgZnMtPnJlZ3MucmVnWzEwXS5ob3cgPSBSRUdfU0FWRURf T0ZGU0VUOworICBmcy0+cmVncy5yZWdbMTBdLmxvYy5vZmZzZXQgPSAobG9u Zykmc2YtPlJFR19OQU1FKHIxMCkgLSBuZXdfY2ZhOworICBmcy0+cmVncy5y ZWdbMTFdLmhvdyA9IFJFR19TQVZFRF9PRkZTRVQ7CisgIGZzLT5yZWdzLnJl Z1sxMV0ubG9jLm9mZnNldCA9IChsb25nKSZzZi0+UkVHX05BTUUocjExKSAt IG5ld19jZmE7CisgIGZzLT5yZWdzLnJlZ1sxMl0uaG93ID0gUkVHX1NBVkVE X09GRlNFVDsKKyAgZnMtPnJlZ3MucmVnWzEyXS5sb2Mub2Zmc2V0ID0gKGxv bmcpJnNmLT5SRUdfTkFNRShyMTIpIC0gbmV3X2NmYTsKKyAgZnMtPnJlZ3Mu cmVnWzEzXS5ob3cgPSBSRUdfU0FWRURfT0ZGU0VUOworICBmcy0+cmVncy5y ZWdbMTNdLmxvYy5vZmZzZXQgPSAobG9uZykmc2YtPlJFR19OQU1FKHIxMykg LSBuZXdfY2ZhOworICBmcy0+cmVncy5yZWdbMTRdLmhvdyA9IFJFR19TQVZF RF9PRkZTRVQ7CisgIGZzLT5yZWdzLnJlZ1sxNF0ubG9jLm9mZnNldCA9IChs b25nKSZzZi0+UkVHX05BTUUocjE0KSAtIG5ld19jZmE7CisgIGZzLT5yZWdz LnJlZ1sxNV0uaG93ID0gUkVHX1NBVkVEX09GRlNFVDsKKyAgZnMtPnJlZ3Mu cmVnWzE1XS5sb2Mub2Zmc2V0ID0gKGxvbmcpJnNmLT5SRUdfTkFNRShyMTUp IC0gbmV3X2NmYTsKKyAgZnMtPnJlZ3MucmVnWzE2XS5ob3cgPSBSRUdfU0FW RURfT0ZGU0VUOworICBmcy0+cmVncy5yZWdbMTZdLmxvYy5vZmZzZXQgPSAo bG9uZykmc2YtPlJFR19OQU1FKHJpcCkgLSBuZXdfY2ZhOworICBmcy0+cmV0 YWRkcl9jb2x1bW4gPSAxNjsKKyAgZnMtPnNpZ25hbF9mcmFtZSA9IDE7Cisg IHJldHVybiBfVVJDX05PX1JFQVNPTjsKK30KKworI2Vsc2UgLyogTmV4dCBz ZWN0aW9uIGlzIGZvciBpMzg2ICAqLworCisjZGVmaW5lIE1EX0ZBTExCQUNL X0ZSQU1FX1NUQVRFX0ZPUiB4ODZfZHJhZ29uZmx5X2ZhbGxiYWNrX2ZyYW1l X3N0YXRlCisKKworc3RhdGljIHZvaWQKK3g4Nl9zaWd0cmFtcF9yYW5nZSAo dW5zaWduZWQgY2hhciAqKnN0YXJ0LCB1bnNpZ25lZCBjaGFyICoqZW5kKQor eworICB1bnNpZ25lZCBsb25nIHBzX3N0cmluZ3M7CisgIGludCBtaWJbMl07 CisgIHNpemVfdCBsZW47CisKKyAgbWliWzBdID0gQ1RMX0tFUk47CisgIG1p YlsxXSA9IEtFUk5fUFNfU1RSSU5HUzsKKyAgbGVuID0gc2l6ZW9mIChwc19z dHJpbmdzKTsKKyAgc3lzY3RsIChtaWIsIDIsICZwc19zdHJpbmdzLCAmbGVu LCBOVUxMLCAwKTsKKworICAqc3RhcnQgPSAodW5zaWduZWQgY2hhciAqKXBz X3N0cmluZ3MgLSAxMjg7CisgICplbmQgICA9ICh1bnNpZ25lZCBjaGFyICop cHNfc3RyaW5nczsKK30KKworCitzdGF0aWMgX1Vud2luZF9SZWFzb25fQ29k ZQoreDg2X2RyYWdvbmZseV9mYWxsYmFja19mcmFtZV9zdGF0ZQorKHN0cnVj dCBfVW53aW5kX0NvbnRleHQgKmNvbnRleHQsIF9VbndpbmRfRnJhbWVTdGF0 ZSAqZnMpCit7CisgIHVuc2lnbmVkIGNoYXIgKnBjID0gY29udGV4dC0+cmE7 CisgIHVuc2lnbmVkIGNoYXIgKnNpZ3RyYW1wX3N0YXJ0LCAqc2lndHJhbXBf ZW5kOworICBzdHJ1Y3Qgc2lnZnJhbWUgKnNmOworICBsb25nIG5ld19jZmE7 CisKKyAgeDg2X3NpZ3RyYW1wX3JhbmdlKCZzaWd0cmFtcF9zdGFydCwgJnNp Z3RyYW1wX2VuZCk7CisKKyAgaWYgKHBjID49IHNpZ3RyYW1wX2VuZCB8fCBw YyA8IHNpZ3RyYW1wX3N0YXJ0KQorICAgIHJldHVybiBfVVJDX0VORF9PRl9T VEFDSzsKKworICBzZiA9IChzdHJ1Y3Qgc2lnZnJhbWUgKikgY29udGV4dC0+ Y2ZhOworICBuZXdfY2ZhID0gc2YtPlJFR19OQU1FKGVzcCk7CisgIGZzLT5y ZWdzLmNmYV9ob3cgPSBDRkFfUkVHX09GRlNFVDsKKyAgZnMtPnJlZ3MuY2Zh X3JlZyA9IDQ7CisgIGZzLT5yZWdzLmNmYV9vZmZzZXQgPSBuZXdfY2ZhIC0g KGxvbmcpIGNvbnRleHQtPmNmYTsKKworICAvKiBUaGUgU1ZSNCByZWdpc3Rl ciBudW1iZXJpbmcgbWFjcm9zIGFyZW4ndCB1c2FibGUgaW4gbGliZ2NjLiAg Ki8KKyAgZnMtPnJlZ3MucmVnWzBdLmhvdyA9IFJFR19TQVZFRF9PRkZTRVQ7 CisgIGZzLT5yZWdzLnJlZ1swXS5sb2Mub2Zmc2V0ID0gKGxvbmcpJnNmLT5S RUdfTkFNRShlYXgpIC0gbmV3X2NmYTsKKyAgZnMtPnJlZ3MucmVnWzNdLmhv dyA9IFJFR19TQVZFRF9PRkZTRVQ7CisgIGZzLT5yZWdzLnJlZ1szXS5sb2Mu b2Zmc2V0ID0gKGxvbmcpJnNmLT5SRUdfTkFNRShlYngpIC0gbmV3X2NmYTsK KyAgZnMtPnJlZ3MucmVnWzFdLmhvdyA9IFJFR19TQVZFRF9PRkZTRVQ7Cisg IGZzLT5yZWdzLnJlZ1sxXS5sb2Mub2Zmc2V0ID0gKGxvbmcpJnNmLT5SRUdf TkFNRShlY3gpIC0gbmV3X2NmYTsKKyAgZnMtPnJlZ3MucmVnWzJdLmhvdyA9 IFJFR19TQVZFRF9PRkZTRVQ7CisgIGZzLT5yZWdzLnJlZ1syXS5sb2Mub2Zm c2V0ID0gKGxvbmcpJnNmLT5SRUdfTkFNRShlZHgpIC0gbmV3X2NmYTsKKyAg ZnMtPnJlZ3MucmVnWzZdLmhvdyA9IFJFR19TQVZFRF9PRkZTRVQ7CisgIGZz LT5yZWdzLnJlZ1s2XS5sb2Mub2Zmc2V0ID0gKGxvbmcpJnNmLT5SRUdfTkFN RShlc2kpIC0gbmV3X2NmYTsKKyAgZnMtPnJlZ3MucmVnWzddLmhvdyA9IFJF R19TQVZFRF9PRkZTRVQ7CisgIGZzLT5yZWdzLnJlZ1s3XS5sb2Mub2Zmc2V0 ID0gKGxvbmcpJnNmLT5SRUdfTkFNRShlZGkpIC0gbmV3X2NmYTsKKyAgZnMt PnJlZ3MucmVnWzVdLmhvdyA9IFJFR19TQVZFRF9PRkZTRVQ7CisgIGZzLT5y ZWdzLnJlZ1s1XS5sb2Mub2Zmc2V0ID0gKGxvbmcpJnNmLT5SRUdfTkFNRShl YnApIC0gbmV3X2NmYTsKKyAgZnMtPnJlZ3MucmVnWzhdLmhvdyA9IFJFR19T QVZFRF9PRkZTRVQ7CisgIGZzLT5yZWdzLnJlZ1s4XS5sb2Mub2Zmc2V0ID0g KGxvbmcpJnNmLT5SRUdfTkFNRShlaXApIC0gbmV3X2NmYTsKKyAgZnMtPnJl dGFkZHJfY29sdW1uID0gODsKKyAgZnMtPnNpZ25hbF9mcmFtZSA9IDE7Cisg IHJldHVybiBfVVJDX05PX1JFQVNPTjsKK30KKyNlbmRpZiAvKiBpZmRlZiBf X3g4Nl82NF9fICAqLwpkaWZmIC0tZ2l0IGEvbGliZ2NjL2NydHN0dWZmLmMg Yi9saWJnY2MvY3J0c3R1ZmYuYwppbmRleCAxMmJlZDRiLi4yYzU2YWYzIDEw MDY0NAotLS0gYS9saWJnY2MvY3J0c3R1ZmYuYworKysgYi9saWJnY2MvY3J0 c3R1ZmYuYwpAQCAtNzksMTEgKzc5LDE2IEBAIGNhbGxfICMjIEZVTkMgKHZv aWQpCQkJCQlcCiB9CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoVEFSR0VUX0RM X0lURVJBVEVfUEhEUikgJiYgXAorICAgKGRlZmluZWQoX19EcmFnb25GbHlf XykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpCisjZGVmaW5lIEJTRF9ETF9J VEVSQVRFX1BIRFJfQVZBSUxBQkxFCisjZW5kaWYKKyAKICNpZiBkZWZpbmVk KE9CSkVDVF9GT1JNQVRfRUxGKSBcCiAgICAgJiYgIWRlZmluZWQoT0JKRUNU X0ZPUk1BVF9GTEFUKSBcCiAgICAgJiYgZGVmaW5lZChIQVZFX0xEX0VIX0ZS QU1FX0hEUikgXAogICAgICYmICFkZWZpbmVkKGluaGliaXRfbGliYykgJiYg IWRlZmluZWQoQ1JUU1RVRkZUX08pIFwKLSAgICAmJiBkZWZpbmVkKF9fRnJl ZUJTRF9fKSAmJiBfX0ZyZWVCU0RfXyA+PSA3CisgICAgJiYgZGVmaW5lZChC U0RfRExfSVRFUkFURV9QSERSX0FWQUlMQUJMRSkKICNpbmNsdWRlIDxsaW5r Lmg+CiAjIGRlZmluZSBVU0VfUFRfR05VX0VIX0ZSQU1FCiAjZW5kaWYKZGlm ZiAtLWdpdCBhL2xpYmdjYy9lbmFibGUtZXhlY3V0ZS1zdGFjay1tcHJvdGVj dC5jIGIvbGliZ2NjL2VuYWJsZS1leGVjdXRlLXN0YWNrLW1wcm90ZWN0LmMK aW5kZXggMDk2YWJlYS4uZTNmYjNiNiAxMDA2NDQKLS0tIGEvbGliZ2NjL2Vu YWJsZS1leGVjdXRlLXN0YWNrLW1wcm90ZWN0LmMKKysrIGIvbGliZ2NjL2Vu YWJsZS1leGVjdXRlLXN0YWNrLW1wcm90ZWN0LmMKQEAgLTMzLDIwICszMyw3 IEBAIHN0YXRpYyBpbnQgbmVlZF9lbmFibGVfZXhlY19zdGFjazsKIHN0YXRp YyB2b2lkIGNoZWNrX2VuYWJsaW5nICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgo dW51c2VkKSk7CiBleHRlcm4gdm9pZCBfX2VuYWJsZV9leGVjdXRlX3N0YWNr ICh2b2lkICopOwogCi0jaWYgZGVmaW5lZCBfX0ZyZWVCU0RfXwotI2luY2x1 ZGUgPHN5cy9zeXNjdGwuaD4KLQotc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVf XyAoKGNvbnN0cnVjdG9yKSkKLWNoZWNrX2VuYWJsaW5nICh2b2lkKQotewot ICBpbnQgcHJvdCA9IDA7Ci0gIHNpemVfdCBsZW4gPSBzaXplb2YgKHByb3Qp OwotCi0gIHN5c2N0bGJ5bmFtZSAoImtlcm4uc3RhY2twcm90IiwgJnByb3Qs ICZsZW4sIE5VTEwsIDApOwotICBpZiAocHJvdCAhPSBTVEFDS19QUk9UX1JX WCkKLSAgICBuZWVkX2VuYWJsZV9leGVjX3N0YWNrID0gMTsKLX0KLSNlbGlm IGRlZmluZWQgX19zdW5fXyAmJiBkZWZpbmVkIF9fc3ZyNF9fCisjaWYgZGVm aW5lZCBfX3N1bl9fICYmIGRlZmluZWQgX19zdnI0X18KIHN0YXRpYyB2b2lk IF9fYXR0cmlidXRlX18gKChjb25zdHJ1Y3RvcikpCiBjaGVja19lbmFibGlu ZyAodm9pZCkKIHsKZGlmZiAtLWdpdCBhL2xpYmdjYy91bndpbmQtZHcyLWZk ZS1kaXAuYyBiL2xpYmdjYy91bndpbmQtZHcyLWZkZS1kaXAuYwppbmRleCBk NmMwNTIxLi5iN2I5ZjkxIDEwMDY0NAotLS0gYS9saWJnY2MvdW53aW5kLWR3 Mi1mZGUtZGlwLmMKKysrIGIvbGliZ2NjL3Vud2luZC1kdzItZmRlLWRpcC5j CkBAIC01OCw3ICs1OCw4IEBACiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKGlu aGliaXRfbGliYykgJiYgZGVmaW5lZChIQVZFX0xEX0VIX0ZSQU1FX0hEUikg XAotICAgICYmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF9f ID49IDcKKyAgICAmJiBkZWZpbmVkKFRBUkdFVF9ETF9JVEVSQVRFX1BIRFIp IFwKKyAgICAmJiAoZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVk KF9fRnJlZUJTRF9fKSkKICMgZGVmaW5lIEVsZlcgX19FbGZOCiAjIGRlZmlu ZSBVU0VfUFRfR05VX0VIX0ZSQU1FCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xp Yml0bS9jb25maWd1cmUudGd0IGIvbGliaXRtL2NvbmZpZ3VyZS50Z3QKaW5k ZXggNDRjMWExNC4uMjliNjkyZiAxMDA2NDQKLS0tIGEvbGliaXRtL2NvbmZp Z3VyZS50Z3QKKysrIGIvbGliaXRtL2NvbmZpZ3VyZS50Z3QKQEAgLTE0MSw3 ICsxNDEsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCiAgICotKi1nbnUqIHwg Ki0qLWsqYnNkKi1nbnUgXAogICB8ICotKi1uZXRic2QqIHwgKi0qLWZyZWVi c2QqIHwgKi0qLW9wZW5ic2QqIFwKICAgfCAqLSotc29sYXJpczIqIHwgKi0q LXN5c3Y0KiB8ICotKi1ocHV4MTEqIFwKLSAgfCAqLSotZGFyd2luKiB8ICot Ki1haXgqKQorICB8ICotKi1kYXJ3aW4qIHwgKi0qLWFpeCogfCAqLSotZHJh Z29uZmx5KikKIAkjIFBPU0lYIHN5c3RlbS4gIFRoZSBPUyBpcyBzdXBwb3J0 ZWQuCiAJOzsKIApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2FjaW5jbHVk ZS5tNCBiL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQKaW5kZXggNTU0Mjdj ZC4uNjliMTY1ZiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2FjaW5jbHVk ZS5tNAorKysgYi9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00CkBAIC0xOTg5 LDYgKzE5ODksOSBAQCBBQ19ERUZVTihbR0xJQkNYWF9FTkFCTEVfQ0xPQ0FM RV0sIFsKICAgICAgIGRhcndpbiogfCBmcmVlYnNkKikKIAllbmFibGVfY2xv Y2FsZV9mbGFnPWRhcndpbgogCTs7CisgICAgICBkcmFnb25mbHkqKQorCWVu YWJsZV9jbG9jYWxlX2ZsYWc9ZHJhZ29uZmx5CisJOzsKICAgICAgIG9wZW5i c2QqKQogCWVuYWJsZV9jbG9jYWxlX2ZsYWc9bmV3bGliCiAJOzsKQEAgLTIw ODEsNiArMjA4NCwyMyBAQCBBQ19ERUZVTihbR0xJQkNYWF9FTkFCTEVfQ0xP Q0FMRV0sIFsKICAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9j YWxlL2dlbmVyaWMvYysrbG9jYWxlX2ludGVybmFsLmgKICAgICAgIDs7CiAK KyAgICBkcmFnb25mbHkpCisgICAgICBBQ19NU0dfUkVTVUxUKGRyYWdvbmZs eSkKKworICAgICAgQ0xPQ0FMRV9IPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy9j X2xvY2FsZS5oCisgICAgICBDTE9DQUxFX0NDPWNvbmZpZy9sb2NhbGUvZHJh Z29uZmx5L2NfbG9jYWxlLmNjCisgICAgICBDQ09ERUNWVF9DQz1jb25maWcv bG9jYWxlL2dlbmVyaWMvY29kZWN2dF9tZW1iZXJzLmNjCisgICAgICBDQ09M TEFURV9DQz1jb25maWcvbG9jYWxlL2dlbmVyaWMvY29sbGF0ZV9tZW1iZXJz LmNjCisgICAgICBDQ1RZUEVfQ0M9Y29uZmlnL2xvY2FsZS9kcmFnb25mbHkv Y3R5cGVfbWVtYmVycy5jYworICAgICAgQ01FU1NBR0VTX0g9Y29uZmlnL2xv Y2FsZS9nZW5lcmljL21lc3NhZ2VzX21lbWJlcnMuaAorICAgICAgQ01FU1NB R0VTX0NDPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy9tZXNzYWdlc19tZW1iZXJz LmNjCisgICAgICBDTU9ORVlfQ0M9Y29uZmlnL2xvY2FsZS9nZW5lcmljL21v bmV0YXJ5X21lbWJlcnMuY2MKKyAgICAgIENOVU1FUklDX0NDPWNvbmZpZy9s b2NhbGUvZ2VuZXJpYy9udW1lcmljX21lbWJlcnMuY2MKKyAgICAgIENUSU1F X0g9Y29uZmlnL2xvY2FsZS9nZW5lcmljL3RpbWVfbWVtYmVycy5oCisgICAg ICBDVElNRV9DQz1jb25maWcvbG9jYWxlL2dlbmVyaWMvdGltZV9tZW1iZXJz LmNjCisgICAgICBDTE9DQUxFX0lOVEVSTkFMX0g9Y29uZmlnL2xvY2FsZS9n ZW5lcmljL2MrK2xvY2FsZV9pbnRlcm5hbC5oCisgICAgICA7OworCiAgICAg Z251KQogICAgICAgQUNfTVNHX1JFU1VMVChnbnUpCiAKZGlmZiAtLWdpdCBh L2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2RyYWdvbmZseS9jX2xvY2Fs ZS5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2RyYWdvbmZseS9j X2xvY2FsZS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li42YzUwM2RiCi0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYzL2Nv bmZpZy9sb2NhbGUvZHJhZ29uZmx5L2NfbG9jYWxlLmNjCkBAIC0wLDAgKzEs Mjk5IEBACisvLyBXcmFwcGVyIGZvciB1bmRlcmx5aW5nIEMtbGFuZ3VhZ2Ug bG9jYWxpemF0aW9uIC0qLSBDKysgLSotCisKKy8vIENvcHlyaWdodCAoQykg MjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vCisvLyBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4g IFRoaXMgbGlicmFyeSBpcyBmcmVlCisvLyBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKKy8v IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKy8vIGFu eSBsYXRlciB2ZXJzaW9uLgorCisvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8v IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisvLyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor CisvLyBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFy ZSBncmFudGVkIGFkZGl0aW9uYWwKKy8vIHBlcm1pc3Npb25zIGRlc2NyaWJl ZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNp b24KKy8vIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCisKKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAor Ly8gYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlv biBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKy8vIHNlZSB0aGUgZmlsZXMg Q09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJ ZiBub3QsIHNlZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorCisvLworLy8gSVNPIEMrKyAxNDg4MjogMjIuOCAgU3RhbmRhcmQgbG9j YWxlIGNhdGVnb3JpZXMuCisvLworCisvLyBXcml0dGVuIGJ5IEJlbmphbWlu IEtvc25payA8YmtvekByZWRoYXQuY29tPgorCisjaW5jbHVkZSA8Y2Vycm5v PiAgLy8gRm9yIGVycm5vCisjaW5jbHVkZSA8Y21hdGg+ICAvLyBGb3IgaXNp bmYsIGZpbml0ZSwgZmluaXRlZiwgZmFicworI2luY2x1ZGUgPGNzdGRsaWI+ ICAvLyBGb3Igc3Ryb2YsIHN0cnRvbGQKKyNpbmNsdWRlIDxjc3RyaW5nPgor I2luY2x1ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDxsb2NhbGU+CisjaW5jbHVk ZSA8bGltaXRzPgorCisjaWZkZWYgX0dMSUJDWFhfSEFWRV9JRUVFRlBfSAor I2luY2x1ZGUgPGllZWVmcC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBzdGQg X0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQoreworX0dMSUJDWFhfQkVH SU5fTkFNRVNQQUNFX1ZFUlNJT04KKworICB0ZW1wbGF0ZTw+CisgICAgdm9p ZAorICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZmxvYXQm IF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAorCQkgICBjb25zdCBf X2NfbG9jYWxlJikgdGhyb3coKQorICAgIHsKKyAgICAgIC8vIEFzc3VtZXMg X19zIGZvcm1hdHRlZCBmb3IgIkMiIGxvY2FsZS4KKyAgICAgIGNoYXIqIF9f b2xkID0gc2V0bG9jYWxlKExDX0FMTCwgMCk7CisgICAgICBjb25zdCBzaXpl X3QgX19sZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKKyAgICAgIGNoYXIqIF9f c2F2ID0gbmV3IGNoYXJbX19sZW5dOworICAgICAgbWVtY3B5KF9fc2F2LCBf X29sZCwgX19sZW4pOworICAgICAgc2V0bG9jYWxlKExDX0FMTCwgIkMiKTsK KyAgICAgIGNoYXIqIF9fc2FuaXR5OworICAgICAgYm9vbCBfX292ZXJmbG93 ID0gZmFsc2U7CisKKyNpZiAhX19GTFRfSEFTX0lORklOSVRZX18KKyAgICAg IGVycm5vID0gMDsKKyNlbmRpZgorCisjaWZkZWYgX0dMSUJDWFhfSEFWRV9T VFJUT0YKKyAgICAgIF9fdiA9IHN0cnRvZihfX3MsICZfX3Nhbml0eSk7Cisj ZWxzZQorICAgICAgZG91YmxlIF9fZCA9IHN0cnRvZChfX3MsICZfX3Nhbml0 eSk7CisgICAgICBfX3YgPSBzdGF0aWNfY2FzdDxmbG9hdD4oX19kKTsKKyNp ZmRlZiBfR0xJQkNYWF9IQVZFX0ZJTklURUYKKyAgICAgIGlmICghZmluaXRl ZiAoX192KSkKKwlfX292ZXJmbG93ID0gdHJ1ZTsKKyNlbGlmIGRlZmluZWQg KF9HTElCQ1hYX0hBVkVfRklOSVRFKQorICAgICAgaWYgKCFmaW5pdGUgKHN0 YXRpY19jYXN0PGRvdWJsZT4gKF9fdikpKQorCV9fb3ZlcmZsb3cgPSB0cnVl OworI2VsaWYgZGVmaW5lZCAoX0dMSUJDWFhfSEFWRV9JU0lORikKKyAgICAg IGlmIChpc2luZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPiAoX192KSkpCisJX19v dmVyZmxvdyA9IHRydWU7CisjZWxzZQorICAgICAgaWYgKGZhYnMoX19kKSA+ IG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpCisJX19vdmVyZmxvdyA9 IHRydWU7CisjZW5kaWYKKyNlbmRpZiAvLyBfR0xJQkNYWF9IQVZFX1NUUlRP RgorCisgICAgICAvLyBfR0xJQkNYWF9SRVNPTFZFX0xJQl9ERUZFQ1RTCisg ICAgICAvLyAyMy4gTnVtX2dldCBvdmVyZmxvdyByZXN1bHQuCisgICAgICBp ZiAoX19zYW5pdHkgPT0gX19zIHx8ICpfX3Nhbml0eSAhPSAnXDAnKQorCXsK KwkgIF9fdiA9IDAuMGY7CisJICBfX2VyciA9IGlvc19iYXNlOjpmYWlsYml0 OworCX0KKyAgICAgIGVsc2UgaWYgKF9fb3ZlcmZsb3cKKyNpZiBfX0ZMVF9I QVNfSU5GSU5JVFlfXworCSAgICAgICB8fCBfX3YgPT0gbnVtZXJpY19saW1p dHM8ZmxvYXQ+OjppbmZpbml0eSgpCisJICAgICAgIHx8IF9fdiA9PSAtbnVt ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpCisjZWxzZQorCSAgICAg ICB8fCAoKF9fdiA+IDEuMGYgfHwgX192IDwgLTEuMGYpICYmIGVycm5vID09 IEVSQU5HRSkKKyNlbmRpZgorCSAgICAgICkKKwl7CisJICBpZiAoX192ID4g MC4wZikKKwkgICAgX192ID0gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgo KTsKKwkgIGVsc2UKKwkgICAgX192ID0gLW51bWVyaWNfbGltaXRzPGZsb2F0 Pjo6bWF4KCk7CisJICBfX2VyciA9IGlvc19iYXNlOjpmYWlsYml0OworCX0K KworICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOworICAgICAgZGVs ZXRlIFtdIF9fc2F2OworICAgIH0KKworICB0ZW1wbGF0ZTw+CisgICAgdm9p ZAorICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZG91Ymxl JiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKKwkJICAgY29uc3Qg X19jX2xvY2FsZSYpIHRocm93KCkKKyAgICB7CisgICAgICAvLyBBc3N1bWVz IF9fcyBmb3JtYXR0ZWQgZm9yICJDIiBsb2NhbGUuCisgICAgICBjaGFyKiBf X29sZCA9IHNldGxvY2FsZShMQ19BTEwsIDApOworICAgICAgY29uc3Qgc2l6 ZV90IF9fbGVuID0gc3RybGVuKF9fb2xkKSArIDE7CisgICAgICBjaGFyKiBf X3NhdiA9IG5ldyBjaGFyW19fbGVuXTsKKyAgICAgIG1lbWNweShfX3Nhdiwg X19vbGQsIF9fbGVuKTsKKyAgICAgIHNldGxvY2FsZShMQ19BTEwsICJDIik7 CisgICAgICBjaGFyKiBfX3Nhbml0eTsKKworI2lmICFfX0RCTF9IQVNfSU5G SU5JVFlfXworICAgICAgZXJybm8gPSAwOworI2VuZGlmCisKKyAgICAgIF9f diA9IHN0cnRvZChfX3MsICZfX3Nhbml0eSk7CisKKyAgICAgIC8vIF9HTElC Q1hYX1JFU09MVkVfTElCX0RFRkVDVFMKKyAgICAgIC8vIDIzLiBOdW1fZ2V0 IG92ZXJmbG93IHJlc3VsdC4KKyAgICAgIGlmIChfX3Nhbml0eSA9PSBfX3Mg fHwgKl9fc2FuaXR5ICE9ICdcMCcpCisJeworCSAgX192ID0gMC4wOworCSAg X19lcnIgPSBpb3NfYmFzZTo6ZmFpbGJpdDsKKwl9CisgICAgICBlbHNlIGlm ICgKKyNpZiBfX0RCTF9IQVNfSU5GSU5JVFlfXworCSAgICAgICBfX3YgPT0g bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKQorCSAgICAgICB8 fCBfX3YgPT0gLW51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkp CisjZWxzZQorCSAgICAgICAoX192ID4gMS4wIHx8IF9fdiA8IC0xLjApICYm IGVycm5vID09IEVSQU5HRSkKKyNlbmRpZgorCXsKKwkgIGlmIChfX3YgPiAw LjApCisJICAgIF9fdiA9IG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgp OworCSAgZWxzZQorCSAgICBfX3YgPSAtbnVtZXJpY19saW1pdHM8ZG91Ymxl Pjo6bWF4KCk7CisJICBfX2VyciA9IGlvc19iYXNlOjpmYWlsYml0OworCX0K KworICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOworICAgICAgZGVs ZXRlIFtdIF9fc2F2OworICAgIH0KKworICB0ZW1wbGF0ZTw+CisgICAgdm9p ZAorICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgbG9uZyBk b3VibGUmIF9fdiwKKwkJICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBj b25zdCBfX2NfbG9jYWxlJikgdGhyb3coKQorICAgIHsKKyAgICAgIC8vIEFz c3VtZXMgX19zIGZvcm1hdHRlZCBmb3IgIkMiIGxvY2FsZS4KKyAgICAgIGNo YXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgMCk7CisgICAgICBjb25z dCBzaXplX3QgX19sZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKKyAgICAgIGNo YXIqIF9fc2F2ID0gbmV3IGNoYXJbX19sZW5dOworICAgICAgbWVtY3B5KF9f c2F2LCBfX29sZCwgX19sZW4pOworICAgICAgc2V0bG9jYWxlKExDX0FMTCwg IkMiKTsKKworI2lmICFfX0xEQkxfSEFTX0lORklOSVRZX18KKyAgICAgIGVy cm5vID0gMDsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfR0xJQkNYWF9IQVZF X1NUUlRPTEQpICYmICFkZWZpbmVkKF9HTElCQ1hYX0hBVkVfQlJPS0VOX1NU UlRPTEQpCisgICAgICBjaGFyKiBfX3Nhbml0eTsKKyAgICAgIF9fdiA9IHN0 cnRvbGQoX19zLCAmX19zYW5pdHkpOworCisgICAgICAvLyBfR0xJQkNYWF9S RVNPTFZFX0xJQl9ERUZFQ1RTCisgICAgICAvLyAyMy4gTnVtX2dldCBvdmVy ZmxvdyByZXN1bHQuCisgICAgICBpZiAoX19zYW5pdHkgPT0gX19zIHx8ICpf X3Nhbml0eSAhPSAnXDAnKQorI2Vsc2UKKyAgICAgIHR5cGVkZWYgY2hhcl90 cmFpdHM8Y2hhcj46OmludF90eXBlIGludF90eXBlOworICAgICAgaW50IF9f cCA9IHNzY2FuZihfX3MsICIlTGYiLCAmX192KTsKKworICAgICAgaWYgKCFf X3AgfHwgc3RhdGljX2Nhc3Q8aW50X3R5cGU+KF9fcCkgPT0gY2hhcl90cmFp dHM8Y2hhcj46OmVvZigpKQorI2VuZGlmCisJeworCSAgX192ID0gMC4wbDsK KwkgIF9fZXJyID0gaW9zX2Jhc2U6OmZhaWxiaXQ7CisJfQorICAgICAgIGVs c2UgaWYgKAorI2lmIF9fTERCTF9IQVNfSU5GSU5JVFlfXworCQlfX3YgPT0g bnVtZXJpY19saW1pdHM8bG9uZyBkb3VibGU+OjppbmZpbml0eSgpCisJCXx8 IF9fdiA9PSAtbnVtZXJpY19saW1pdHM8bG9uZyBkb3VibGU+OjppbmZpbml0 eSgpKQorI2Vsc2UKKwkJKF9fdiA+IDEuMGwgfHwgX192IDwgLTEuMGwpICYm IGVycm5vID09IEVSQU5HRSkKKyNlbmRpZgorCXsKKwkgIGlmIChfX3YgPiAw LjBsKQorCSAgICBfX3YgPSBudW1lcmljX2xpbWl0czxsb25nIGRvdWJsZT46 Om1heCgpOworCSAgZWxzZQorCSAgICBfX3YgPSAtbnVtZXJpY19saW1pdHM8 bG9uZyBkb3VibGU+OjptYXgoKTsKKwkgIF9fZXJyID0gaW9zX2Jhc2U6OmZh aWxiaXQ7CisJfQorCisgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7 CisgICAgICBkZWxldGUgW10gX19zYXY7CisgICAgfQorCisKKyAgLyogIERy YWdvbkZseSdzIGltcGxlbWVudGF0aW9uIG9mIHNldGxvY2FsZSB3b24ndCBh Y2NlcHQgc29tZXRoaW5nIGxpa2UKKyAgICAgICJkZV9ERSIuICBBY2NvcmRp bmcgdG8gbmxzIG1hbnBhZ2UsIHRoZSBleHBlY3RlZCBmb3JtYXQgaXM6Cisg ICAgICBsYW5ndWFnZVtfdGVycml0b3J5XVsuY29kZXNldF1bQG1vZGlmaWVy XSwgYnV0IGl0IHNlZW1zIHRoYXQgYm90aAorICAgICAgdGhlIF90ZXJyaXRv cnkgYW5kIC5jb2Rlc2V0IGNvbXBvbmVudHMgYXJlIHJlcXVpcmVkLgorICAg ICAgCisgICAgICBBcyBhbiBhdHRlbXB0IHRvIGNvcnJlY3QgZm9yIHRoaXMs IHdlJ2xsIHRhY2sgb24gIi5VVEYtOCIgaWYgCisgICAgICBhIHBlcmlvZCBp cyBub3QgZGV0ZWN0ZWQgaW4gdGhlIGxvY2FsZSBzdHJpbmcuICAKKworICAg ICAgVGhlcmUgYXJlIG5vIGxvY2FsZXMgd2l0aCBtb2RpZmllcnMgb24gRHJh Z29uRmx5IHNvIGlmIGZvdW5kLCB0aGV5CisgICAgICB3aWxsIGp1c3QgYmUg c3RyaXBwZWQgb2ZmIHNpbGVudGx5LiAgZS5nICJkZV9ERUBldXJvIiB3aWxs IGJlIHJlZHVjZWQKKyAgICAgIHRvICJkZV9ERSIuICBUaGUgVVRGLTggZGVm YXVsdCB3b3VsZCBiZSBhZGRlZCBhZnRlciB0aGF0LgorICAqLworCisgIHZv aWQKKyAgbG9jYWxlOjpmYWNldDo6X1NfY3JlYXRlX2NfbG9jYWxlKF9fY19s b2NhbGUmIF9fY2xvYywgY29uc3QgY2hhciogX19zLAorCQkJCSAgICBfX2Nf bG9jYWxlKQorICB7CisgICAgY29uc3Qgc2l6ZV90IHNpemVfX3MgPSAoX19z ID09IE5VTEwpID8gMSA6IHN0cmxlbiAoX19zKTsKKyAgICBjb25zdCBjaGFy IFVURjhbXSA9ICIuVVRGLTgiOworICAgIGNoYXIgbG9jYWxzcGVjW3NpemVf X3MgKyA2ICsgMV07CisgICAgCisgICAgaWYgKF9fcyA9PSBOVUxMKSB7Cisg ICAgICAgbG9jYWxzcGVjWzBdID0gTlVMTDsKKyAgICB9IGVsc2UgeworICAg ICAgIHN0cmNweSAobG9jYWxzcGVjLCBfX3MpOworICAgICAgIGNoYXIgKiBw Y2ggPSBzdHJjaHIgKGxvY2Fsc3BlYywgJ0AnKTsKKyAgICAgICBpZiAocGNo ICE9IE5VTEwpCisgICAgICAgICAgKnBjaCA9IDA7CisKKyAgICAgICBpZiAo ICAoc3RyY2hyIChfX3MsICcuJykgPT0gTlVMTCkKKyAgICAgICAgICAmJiAo c3RyY21wIChfX3MsICJDIikgIT0gMCkKKyAgICAgICAgICAmJiAoc3RyY21w IChfX3MsICJQT1NJWCIpICE9IDApKQorICAgICAgICAgIHN0cm5jYXQgKGxv Y2Fsc3BlYywgVVRGOCwgNik7CisgICAgfQorCisgICAgY29uc3QgY2hhciAq IHJlc3VsdCA9IHN0ZDo6c2V0bG9jYWxlKExDX0FMTCwgbG9jYWxzcGVjKTsK KyAgICAKKyAgICBpZiAoKHN0cmNtcChyZXN1bHQsICJDIikgIT0gMCkgJiYg KHN0cmNtcCAocmVzdWx0LCBsb2NhbHNwZWMpICE9IDApKQorICAgICAgX190 aHJvd19ydW50aW1lX2Vycm9yKF9fTigibG9jYWxlOjpmYWNldDo6X1NfY3Jl YXRlX2NfbG9jYWxlICIKKwkJCSAgICAibmFtZSBub3QgdmFsaWQiKSk7Cisg ICAgX19jbG9jID0gMDsKKyAgfQorCisgIHZvaWQKKyAgbG9jYWxlOjpmYWNl dDo6X1NfZGVzdHJveV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MpCisg IHsgX19jbG9jID0gMDsgfQorCisgIF9fY19sb2NhbGUKKyAgbG9jYWxlOjpm YWNldDo6X1NfY2xvbmVfY19sb2NhbGUoX19jX2xvY2FsZSYpIHRocm93KCkK KyAgeyByZXR1cm4gX19jX2xvY2FsZSgpOyB9CisKKyAgX19jX2xvY2FsZQor ICBsb2NhbGU6OmZhY2V0OjpfU19sY19jdHlwZV9jX2xvY2FsZShfX2NfbG9j YWxlLCBjb25zdCBjaGFyKikKKyAgeyByZXR1cm4gX19jX2xvY2FsZSgpOyB9 CisKK19HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgorfSAvLyBuYW1l c3BhY2UKKworbmFtZXNwYWNlIF9fZ251X2N4eCBfR0xJQkNYWF9WSVNJQklM SVRZKGRlZmF1bHQpCit7CitfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVS U0lPTgorCisgIGNvbnN0IGNoYXIqIGNvbnN0IGNhdGVnb3J5X25hbWVzWzYg KyBfR0xJQkNYWF9OVU1fQ0FURUdPUklFU10gPQorICAgIHsKKyAgICAgICJM Q19DVFlQRSIsCisgICAgICAiTENfTlVNRVJJQyIsCisgICAgICAiTENfVElN RSIsCisgICAgICAiTENfQ09MTEFURSIsCisgICAgICAiTENfTU9ORVRBUlki LAorICAgICAgIkxDX01FU1NBR0VTIgorICAgIH07CisKK19HTElCQ1hYX0VO RF9OQU1FU1BBQ0VfVkVSU0lPTgorfSAvLyBuYW1lc3BhY2UKKworbmFtZXNw YWNlIHN0ZCBfR0xJQkNYWF9WSVNJQklMSVRZKGRlZmF1bHQpCit7CitfR0xJ QkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgorCisgIGNvbnN0IGNoYXIq IGNvbnN0KiBjb25zdCBsb2NhbGU6Ol9TX2NhdGVnb3JpZXMgPSBfX2dudV9j eHg6OmNhdGVnb3J5X25hbWVzOworCitfR0xJQkNYWF9FTkRfTkFNRVNQQUNF X1ZFUlNJT04KK30gLy8gbmFtZXNwYWNlCisKKy8vIFhYWCBHTElCQ1hYX0FC SSBEZXByZWNhdGVkCisjaWZkZWYgX0dMSUJDWFhfTE9OR19ET1VCTEVfQ09N UEFUCisjZGVmaW5lIF9HTElCQ1hYX0xEQkxfQ09NUEFUKGRibCwgbGRibCkg XAorICBleHRlcm4gIkMiIHZvaWQgbGRibCAodm9pZCkgX19hdHRyaWJ1dGVf XyAoKGFsaWFzICgjZGJsKSkpCitfR0xJQkNYWF9MREJMX0NPTVBBVChfWlN0 MTRfX2NvbnZlcnRfdG9fdklkRXZQS2NSVF9SU3QxMl9Jb3NfSW9zdGF0ZVJL UGksIF9aU3QxNF9fY29udmVydF90b192SWVFdlBLY1JUX1JTdDEyX0lvc19J b3N0YXRlUktQaSk7CisjZW5kaWYgLy8gX0dMSUJDWFhfTE9OR19ET1VCTEVf Q09NUEFUCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2Fs ZS9kcmFnb25mbHkvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9j b25maWcvbG9jYWxlL2RyYWdvbmZseS9jdHlwZV9tZW1iZXJzLmNjCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZTU4ZmIKLS0tIC9k ZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9kcmFn b25mbHkvY3R5cGVfbWVtYmVycy5jYwpAQCAtMCwwICsxLDE3MyBAQAorLy8g c3RkOjpjdHlwZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lv biAtKi0gQysrIC0qLQorCisvLyBDb3B5cmlnaHQgKEMpIDIwMTQgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLworLy8gVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJh cnkgaXMgZnJlZQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCisvLyB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZQorLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVy c2lvbi4KKworLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworLy8gVW5kZXIg U2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBh ZGRpdGlvbmFsCisvLyBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdD QyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisvLyAzLjEs IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LgorCisvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKy8vIGEgY29weSBv ZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07CisvLyBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFu ZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUK Ky8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworLy8KKy8v IElTTyBDKysgMTQ4ODI6IDIyLjIuMS4xLjIgIGN0eXBlIHZpcnR1YWwgZnVu Y3Rpb25zLgorLy8KKworLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsg PGJrb3pAcmVkaGF0LmNvbT4KKworI2luY2x1ZGUgPGxvY2FsZT4KKyNpbmNs dWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgorI2luY2x1ZGUgPGNz dGRsaWI+CisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxjc3RkaW8+ CisKK25hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0 KQoreworICAvLyBOQjogVGhlIG90aGVyIGN0eXBlPGNoYXI+IHNwZWNpYWxp emF0aW9ucyBhcmUgaW4gc3JjL2xvY2FsZS5jYyBhbmQKKyAgLy8gdmFyaW91 cyAvY29uZmlnL29zLyogZmlsZXMuCisKKyAgY3R5cGVfYnluYW1lPGNoYXI+ OjpjdHlwZV9ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZz KQorICA6IGN0eXBlPGNoYXI+KDAsIGZhbHNlLCBfX3JlZnMpIAorICB7IAkJ CisgICAgaWYgKHN0ZDo6c3RyY21wKF9fcywgIkMiKSAhPSAwICYmIHN0ZDo6 c3RyY21wKF9fcywgIlBPU0lYIikgIT0gMCkKKyAgICAgIHsKKwl0aGlzLT5f U19kZXN0cm95X2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlKTsK Kwl0aGlzLT5fU19jcmVhdGVfY19sb2NhbGUodGhpcy0+X01fY19sb2NhbGVf Y3R5cGUsIF9fcyk7IAorICAgICAgfQorICB9CisKKyAgY3R5cGVfYnluYW1l PGNoYXI+Ojp+Y3R5cGVfYnluYW1lKCkKKyAgeyB9CisKKyNpZmRlZiBfR0xJ QkNYWF9VU0VfV0NIQVJfVCAgCisgIGN0eXBlPHdjaGFyX3Q+OjpfX3dtYXNr X3R5cGUKKyAgY3R5cGU8d2NoYXJfdD46Ol9NX2NvbnZlcnRfdG9fd21hc2so CisgICAgY29uc3QgbWFzayBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19tKSBjb25zdCB0aHJvdygpCisgIHsKKyAgICAvLyBEcmFnb25GbHkgdXNl cyB0aGUgc2FtZSBjb2RlcyBmb3IgJ2NoYXInIGFzICd3Y2hhcl90Jywgc28g dGhpcyByb3V0aW5lCisgICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWQuCisgICAg cmV0dXJuIF9fd21hc2tfdHlwZSgpOworICB9OworICAKKyAgd2NoYXJfdAor ICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG91cHBlcih3Y2hhcl90IF9fYykgY29u c3QKKyAgeyByZXR1cm4gdG93dXBwZXIoX19jKTsgfQorCisgIGNvbnN0IHdj aGFyX3QqCisgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b3VwcGVyKHdjaGFyX3Qq IF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0CisgIHsKKyAgICB3 aGlsZSAoX19sbyA8IF9faGkpCisgICAgICB7CisgICAgICAgICpfX2xvID0g dG93dXBwZXIoKl9fbG8pOworICAgICAgICArK19fbG87CisgICAgICB9Cisg ICAgcmV0dXJuIF9faGk7CisgIH0KKyAgCisgIHdjaGFyX3QKKyAgY3R5cGU8 d2NoYXJfdD46OmRvX3RvbG93ZXIod2NoYXJfdCBfX2MpIGNvbnN0CisgIHsg cmV0dXJuIHRvd2xvd2VyKF9fYyk7IH0KKyAgCisgIGNvbnN0IHdjaGFyX3Qq CisgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b2xvd2VyKHdjaGFyX3QqIF9fbG8s IGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0CisgIHsKKyAgICB3aGlsZSAo X19sbyA8IF9faGkpCisgICAgICB7CisgICAgICAgICpfX2xvID0gdG93bG93 ZXIoKl9fbG8pOworICAgICAgICArK19fbG87CisgICAgICB9CisgICAgcmV0 dXJuIF9faGk7CisgIH0KKworICB3Y2hhcl90CisgIGN0eXBlPHdjaGFyX3Q+ OjoKKyAgZG9fd2lkZW4oY2hhciBfX2MpIGNvbnN0CisgIHsgcmV0dXJuIF9N X3dpZGVuW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9fYyldOyB9CisK KyAgY29uc3QgY2hhciogCisgIGN0eXBlPHdjaGFyX3Q+OjoKKyAgZG9fd2lk ZW4oY29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19oaSwgd2NoYXJf dCogX19kZXN0KSBjb25zdAorICB7CisgICAgd2hpbGUgKF9fbG8gPCBfX2hp KQorICAgICAgeworCSpfX2Rlc3QgPSBfTV93aWRlbltzdGF0aWNfY2FzdDx1 bnNpZ25lZCBjaGFyPigqX19sbyldOworCSsrX19sbzsKKwkrK19fZGVzdDsK KyAgICAgIH0KKyAgICByZXR1cm4gX19oaTsKKyAgfQorCisgIGNoYXIKKyAg Y3R5cGU8d2NoYXJfdD46OgorICBkb19uYXJyb3cod2NoYXJfdCBfX3djLCBj aGFyIF9fZGZhdWx0KSBjb25zdAorICB7IAorICAgIGlmIChfX3djID49IDAg JiYgX193YyA8IDEyOCAmJiBfTV9uYXJyb3dfb2spCisgICAgICByZXR1cm4g X01fbmFycm93W19fd2NdOworICAgIGNvbnN0IGludCBfX2MgPSB3Y3RvYihf X3djKTsKKyAgICByZXR1cm4gKF9fYyA9PSBFT0YgPyBfX2RmYXVsdCA6IHN0 YXRpY19jYXN0PGNoYXI+KF9fYykpOyAKKyAgfQorCisgIGNvbnN0IHdjaGFy X3QqCisgIGN0eXBlPHdjaGFyX3Q+OjoKKyAgZG9fbmFycm93KGNvbnN0IHdj aGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGksIGNoYXIgX19kZmF1 bHQsIAorCSAgICBjaGFyKiBfX2Rlc3QpIGNvbnN0CisgIHsKKyAgICBpZiAo X01fbmFycm93X29rKQorICAgICAgd2hpbGUgKF9fbG8gPCBfX2hpKQorCXsK KwkgIGlmICgqX19sbyA+PSAwICYmICpfX2xvIDwgMTI4KQorCSAgICAqX19k ZXN0ID0gX01fbmFycm93WypfX2xvXTsKKwkgIGVsc2UKKwkgICAgeworCSAg ICAgIGNvbnN0IGludCBfX2MgPSB3Y3RvYigqX19sbyk7CisJICAgICAgKl9f ZGVzdCA9IChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxj aGFyPihfX2MpKTsKKwkgICAgfQorCSAgKytfX2xvOworCSAgKytfX2Rlc3Q7 CisJfQorICAgIGVsc2UKKyAgICAgIHdoaWxlIChfX2xvIDwgX19oaSkKKwl7 CisJICBjb25zdCBpbnQgX19jID0gd2N0b2IoKl9fbG8pOworCSAgKl9fZGVz dCA9IChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxjaGFy PihfX2MpKTsKKwkgICsrX19sbzsKKwkgICsrX19kZXN0OworCX0KKyAgICBy ZXR1cm4gX19oaTsKKyAgfQorCisgIHZvaWQKKyAgY3R5cGU8d2NoYXJfdD46 Ol9NX2luaXRpYWxpemVfY3R5cGUoKSB0aHJvdygpCisgIHsKKyAgICB3aW50 X3QgX19pOworICAgIGZvciAoX19pID0gMDsgX19pIDwgMTI4OyArK19faSkK KyAgICAgIHsKKwljb25zdCBpbnQgX19jID0gd2N0b2IoX19pKTsKKwlpZiAo X19jID09IEVPRikKKwkgIGJyZWFrOworCWVsc2UKKwkgIF9NX25hcnJvd1tf X2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oX19jKTsKKyAgICAgIH0KKyAgICBp ZiAoX19pID09IDEyOCkKKyAgICAgIF9NX25hcnJvd19vayA9IHRydWU7Cisg ICAgZWxzZQorICAgICAgX01fbmFycm93X29rID0gZmFsc2U7CisgICAgZm9y IChzaXplX3QgX19pID0gMDsKKwkgX19pIDwgc2l6ZW9mKF9NX3dpZGVuKSAv IHNpemVvZih3aW50X3QpOyArK19faSkKKyAgICAgIF9NX3dpZGVuW19faV0g PSBidG93YyhfX2kpOworICB9CisjZW5kaWYgLy8gIF9HTElCQ1hYX1VTRV9X Q0hBUl9UCit9CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL29z L2JzZC9kcmFnb25mbHkvY3R5cGVfYmFzZS5oIGIvbGlic3RkYysrLXYzL2Nv bmZpZy9vcy9ic2QvZHJhZ29uZmx5L2N0eXBlX2Jhc2UuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTViMjQ4Ci0tLSAvZGV2L251 bGwKKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9ic2QvZHJhZ29uZmx5 L2N0eXBlX2Jhc2UuaApAQCAtMCwwICsxLDU4IEBACisvLyBMb2NhbGUgc3Vw cG9ydCAtKi0gQysrIC0qLQorCisvLyBDb3B5cmlnaHQgKEMpIDIwMTQgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLworLy8gVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxp YnJhcnkgaXMgZnJlZQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCisvLyB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZQorLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIg dmVyc2lvbi4KKworLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisvLyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworLy8gVW5k ZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRl ZCBhZGRpdGlvbmFsCisvLyBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhl IEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisvLyAz LjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLgorCisvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKy8vIGEgY29w eSBvZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07CisvLyBzZWUgdGhlIGZpbGVzIENPUFlJTkcz IGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBz ZWUKKy8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworLy8K Ky8vIElTTyBDKysgMTQ4ODI6IDIyLjEgIExvY2FsZXMKKy8vCisKKy8vIElu Zm9ybWF0aW9uIGFzIGdsZWFuZWQgZnJvbSAvdXNyL2luY2x1ZGUvY3R5cGUu aCBvbiBEcmFnb25GbHkuCisKK25hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklT SUJJTElUWShkZWZhdWx0KQoreworX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNF X1ZFUlNJT04KKworICAvLy8gQGJyaWVmICBCYXNlIGNsYXNzIGZvciBjdHlw ZS4KKyAgc3RydWN0IGN0eXBlX2Jhc2UKKyAgeworICAgIC8vIE5vbi1zdGFu ZGFyZCB0eXBlZGVmcy4KKyAgICB0eXBlZGVmIGNvbnN0IGludCoJCV9fdG9f dHlwZTsKKworICAgIC8vIE5COiBPZmZzZXRzIGludG8gY3R5cGU8Y2hhcj46 Ol9NX3RhYmxlIGZvcmNlIGEgcGFydGljdWxhciBzaXplCisgICAgLy8gb24g dGhlIG1hc2sgdHlwZS4gQmVjYXVzZSBvZiB0aGlzLCB3ZSBkb24ndCB1c2Ug YW4gZW51bS4KKyAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcJbWFzazsKKyAg ICBzdGF0aWMgY29uc3QgbWFzayB1cHBlcgk9IF9DVFlQRV9VOworICAgIHN0 YXRpYyBjb25zdCBtYXNrIGxvd2VyIAk9IF9DVFlQRV9MOworICAgIHN0YXRp YyBjb25zdCBtYXNrIGFscGhhIAk9IF9DVFlQRV9BOworICAgIHN0YXRpYyBj b25zdCBtYXNrIGRpZ2l0IAk9IF9DVFlQRV9EOworICAgIHN0YXRpYyBjb25z dCBtYXNrIHhkaWdpdCAJPSBfQ1RZUEVfWDsKKyAgICBzdGF0aWMgY29uc3Qg bWFzayBzcGFjZSAJPSBfQ1RZUEVfUzsKKyAgICBzdGF0aWMgY29uc3QgbWFz ayBwcmludCAJPSBfQ1RZUEVfUjsKKyAgICBzdGF0aWMgY29uc3QgbWFzayBn cmFwaCAJPSBfQ1RZUEVfQSB8IF9DVFlQRV9EIHwgX0NUWVBFX1A7CisgICAg c3RhdGljIGNvbnN0IG1hc2sgY250cmwgCT0gX0NUWVBFX0M7CisgICAgc3Rh dGljIGNvbnN0IG1hc2sgcHVuY3QgCT0gX0NUWVBFX1A7CisgICAgc3RhdGlj IGNvbnN0IG1hc2sgYWxudW0gCT0gX0NUWVBFX0EgfCBfQ1RZUEVfRDsKKyAg fTsKKworX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCit9IC8vIG5h bWVzcGFjZQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9i c2QvZHJhZ29uZmx5L2N0eXBlX2NvbmZpZ3VyZV9jaGFyLmNjIGIvbGlic3Rk YysrLXYzL2NvbmZpZy9vcy9ic2QvZHJhZ29uZmx5L2N0eXBlX2NvbmZpZ3Vy ZV9jaGFyLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjExZmEyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvY29u ZmlnL29zL2JzZC9kcmFnb25mbHkvY3R5cGVfY29uZmlndXJlX2NoYXIuY2MK QEAgLTAsMCArMSw5OSBAQAorLy8gTG9jYWxlIHN1cHBvcnQgLSotIEMrKyAt Ki0KKworLy8gQ29weXJpZ2h0IChDKSAyMDE0IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorLy8KKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUK Ky8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0IHVuZGVyIHRoZQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKy8vIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3Ig KGF0IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisKKy8v IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8v IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKy8vIFVuZGVyIFNlY3Rpb24gNyBv ZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAor Ly8gcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBM aWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorLy8gMy4xLCBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworLy8gWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYW5kCisvLyBhIGNvcHkgb2YgdGhlIEdDQyBS dW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOworLy8gc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5S VU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisvLyA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKy8qKiBAZmlsZSBjdHlwZV9j b25maWd1cmVfY2hhci5jYyAqLworCisvLworLy8gSVNPIEMrKyAxNDg4Mjog MjIuMSAgTG9jYWxlcworLy8KKworI2luY2x1ZGUgPGxvY2FsZT4KKyNpbmNs dWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPGNzdHJpbmc+CisKK25hbWVzcGFj ZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQoreworX0dMSUJD WFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KKworLy8gSW5mb3JtYXRpb24g YXMgZ2xlYW5lZCBmcm9tIC91c3IvaW5jbHVkZS9jdHlwZS5oCisgIAorICBj b25zdCBjdHlwZV9iYXNlOjptYXNrKgorICBjdHlwZTxjaGFyPjo6Y2xhc3Np Y190YWJsZSgpIHRocm93KCkKKyAgeyByZXR1cm4gMDsgfQorCisgIGN0eXBl PGNoYXI+OjpjdHlwZShfX2NfbG9jYWxlLCBjb25zdCBtYXNrKiBfX3RhYmxl LCBib29sIF9fZGVsLCAKKwkJICAgICBzaXplX3QgX19yZWZzKSAKKyAgOiBm YWNldChfX3JlZnMpLCBfTV9kZWwoX190YWJsZSAhPSAwICYmIF9fZGVsKSwg CisgIF9NX3RvdXBwZXIoTlVMTCksIF9NX3RvbG93ZXIoTlVMTCksIAorICBf TV90YWJsZShfX3RhYmxlID8gX190YWJsZSA6IGNsYXNzaWNfdGFibGUoKSkg CisgIHsgCisgICAgbWVtc2V0KF9NX3dpZGVuLCAwLCBzaXplb2YoX01fd2lk ZW4pKTsKKyAgICBfTV93aWRlbl9vayA9IDA7CisgICAgbWVtc2V0KF9NX25h cnJvdywgMCwgc2l6ZW9mKF9NX25hcnJvdykpOworICAgIF9NX25hcnJvd19v ayA9IDA7CisgIH0KKworICBjdHlwZTxjaGFyPjo6Y3R5cGUoY29uc3QgbWFz ayogX190YWJsZSwgYm9vbCBfX2RlbCwgc2l6ZV90IF9fcmVmcykgCisgIDog ZmFjZXQoX19yZWZzKSwgX01fZGVsKF9fdGFibGUgIT0gMCAmJiBfX2RlbCks IAorICBfTV90b3VwcGVyKE5VTEwpLCBfTV90b2xvd2VyKE5VTEwpLCAKKyAg X01fdGFibGUoX190YWJsZSA/IF9fdGFibGUgOiBjbGFzc2ljX3RhYmxlKCkp IAorICB7IAorICAgIG1lbXNldChfTV93aWRlbiwgMCwgc2l6ZW9mKF9NX3dp ZGVuKSk7CisgICAgX01fd2lkZW5fb2sgPSAwOworICAgIG1lbXNldChfTV9u YXJyb3csIDAsIHNpemVvZihfTV9uYXJyb3cpKTsKKyAgICBfTV9uYXJyb3df b2sgPSAwOworICB9CisKKyAgY2hhcgorICBjdHlwZTxjaGFyPjo6ZG9fdG91 cHBlcihjaGFyIF9fYykgY29uc3QKKyAgeyByZXR1cm4gOjp0b3VwcGVyKChp bnQpIF9fYyk7IH0KKworICBjb25zdCBjaGFyKgorICBjdHlwZTxjaGFyPjo6 ZG9fdG91cHBlcihjaGFyKiBfX2xvdywgY29uc3QgY2hhciogX19oaWdoKSBj b25zdAorICB7CisgICAgd2hpbGUgKF9fbG93IDwgX19oaWdoKQorICAgICAg eworCSpfX2xvdyA9IDo6dG91cHBlcigoaW50KSAqX19sb3cpOworCSsrX19s b3c7CisgICAgICB9CisgICAgcmV0dXJuIF9faGlnaDsKKyAgfQorCisgIGNo YXIKKyAgY3R5cGU8Y2hhcj46OmRvX3RvbG93ZXIoY2hhciBfX2MpIGNvbnN0 CisgIHsgcmV0dXJuIDo6dG9sb3dlcigoaW50KSBfX2MpOyB9CisKKyAgY29u c3QgY2hhciogCisgIGN0eXBlPGNoYXI+Ojpkb190b2xvd2VyKGNoYXIqIF9f bG93LCBjb25zdCBjaGFyKiBfX2hpZ2gpIGNvbnN0CisgIHsKKyAgICB3aGls ZSAoX19sb3cgPCBfX2hpZ2gpCisgICAgICB7CisJKl9fbG93ID0gOjp0b2xv d2VyKChpbnQpICpfX2xvdyk7CisJKytfX2xvdzsKKyAgICAgIH0KKyAgICBy ZXR1cm4gX19oaWdoOworICB9CisKK19HTElCQ1hYX0VORF9OQU1FU1BBQ0Vf VkVSU0lPTgorfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL2xpYnN0ZGMr Ky12My9jb25maWcvb3MvYnNkL2RyYWdvbmZseS9jdHlwZV9pbmxpbmUuaCBi L2xpYnN0ZGMrKy12My9jb25maWcvb3MvYnNkL2RyYWdvbmZseS9jdHlwZV9p bmxpbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45 ODQ2NjVlCi0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYzL2NvbmZp Zy9vcy9ic2QvZHJhZ29uZmx5L2N0eXBlX2lubGluZS5oCkBAIC0wLDAgKzEs MTMzIEBACisvLyBMb2NhbGUgc3VwcG9ydCAtKi0gQysrIC0qLQorCisvLyBD b3B5cmlnaHQgKEMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisvLworLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08g QysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQorLy8gc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQg dW5kZXIgdGhlCisvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorLy8gRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBv cHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworLy8gVGhpcyBsaWJy YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworLy8gVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJz aW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFsCisvLyBwZXJtaXNz aW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhj ZXB0aW9uLCB2ZXJzaW9uCisvLyAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCisvLyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhbmQKKy8vIGEgY29weSBvZiB0aGUgR0NDIFJ1bnRpbWUgTGli cmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07CisvLyBz ZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVz cGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKy8vIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKworLyoqIEBmaWxlIGJpdHMvY3R5cGVfaW5saW5l LmgKKyAqICBUaGlzIGlzIGFuIGludGVybmFsIGhlYWRlciBmaWxlLCBpbmNs dWRlZCBieSBvdGhlciBsaWJyYXJ5IGhlYWRlcnMuCisgKiAgRG8gbm90IGF0 dGVtcHQgdG8gdXNlIGl0IGRpcmVjdGx5LiBAaGVhZGVybmFtZXtsb2NhbGV9 CisgKi8KKworLy8KKy8vIElTTyBDKysgMTQ4ODI6IDIyLjEgIExvY2FsZXMK Ky8vCisKKy8vIGN0eXBlIGJpdHMgdG8gYmUgaW5saW5lZCBnbyBoZXJlLiBO b24taW5saW5hYmxlIChpZSB2aXJ0dWFsIGRvXyopCisvLyBmdW5jdGlvbnMg Z28gaW4gY3R5cGUuY2MKKworbmFtZXNwYWNlIHN0ZCBfR0xJQkNYWF9WSVNJ QklMSVRZKGRlZmF1bHQpCit7CitfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Vf VkVSU0lPTgorCisgIGJvb2wKKyAgY3R5cGU8Y2hhcj46OgorICBpcyhtYXNr IF9fbSwgY2hhciBfX2MpIGNvbnN0CisgIHsKKyAgICBpZiAoX01fdGFibGUp CisgICAgICByZXR1cm4gX01fdGFibGVbc3RhdGljX2Nhc3Q8dW5zaWduZWQg Y2hhcj4oX19jKV0gJiBfX207CisgICAgZWxzZQorICAgICAgcmV0dXJuIF9f aXN0eXBlKF9fYywgX19tKTsKKyAgfQorCisgIGNvbnN0IGNoYXIqCisgIGN0 eXBlPGNoYXI+OjoKKyAgaXMoY29uc3QgY2hhciogX19sb3csIGNvbnN0IGNo YXIqIF9faGlnaCwgbWFzayogX192ZWMpIGNvbnN0CisgIHsKKyAgICBpZiAo X01fdGFibGUpCisgICAgICB3aGlsZSAoX19sb3cgPCBfX2hpZ2gpCisJKl9f dmVjKysgPSBfTV90YWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigq X19sb3crKyldOworICAgIGVsc2UKKyAgICAgIGZvciAoO19fbG93IDwgX19o aWdoOyArK19fdmVjLCArK19fbG93KQorCXsKKwkgICpfX3ZlYyA9IF9fbWFz a3J1bmUgKCpfX2xvdywgdXBwZXIgfCBsb3dlciB8IGFscGhhIHwgZGlnaXQg fCB4ZGlnaXQKKwkJCSAgICAgICB8IHNwYWNlIHwgcHJpbnQgfCBncmFwaCB8 IGNudHJsIHwgcHVuY3QgfCBhbG51bSk7CisJfQorICAgIHJldHVybiBfX2hp Z2g7CisgIH0KKworICBjb25zdCBjaGFyKgorICBjdHlwZTxjaGFyPjo6Cisg IHNjYW5faXMobWFzayBfX20sIGNvbnN0IGNoYXIqIF9fbG93LCBjb25zdCBj aGFyKiBfX2hpZ2gpIGNvbnN0CisgIHsKKyAgICBpZiAoX01fdGFibGUpCisg ICAgICB3aGlsZSAoX19sb3cgPCBfX2hpZ2gKKwkgICAgICYmICEoX01fdGFi bGVbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKl9fbG93KV0gJiBfX20p KQorCSsrX19sb3c7CisgICAgZWxzZQorICAgICAgd2hpbGUgKF9fbG93IDwg X19oaWdoICYmICF0aGlzLT5pcyhfX20sICpfX2xvdykpCisJKytfX2xvdzsK KyAgICByZXR1cm4gX19sb3c7CisgIH0KKworICBjb25zdCBjaGFyKgorICBj dHlwZTxjaGFyPjo6CisgIHNjYW5fbm90KG1hc2sgX19tLCBjb25zdCBjaGFy KiBfX2xvdywgY29uc3QgY2hhciogX19oaWdoKSBjb25zdAorICB7CisgICAg aWYgKF9NX3RhYmxlKQorICAgICAgd2hpbGUgKF9fbG93IDwgX19oaWdoCisJ ICAgICAmJiAoX01fdGFibGVbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o Kl9fbG93KV0gJiBfX20pICE9IDApCisJKytfX2xvdzsKKyAgICBlbHNlCisg ICAgICB3aGlsZSAoX19sb3cgPCBfX2hpZ2ggJiYgdGhpcy0+aXMoX19tLCAq X19sb3cpICE9IDApCisJKytfX2xvdzsKKyAgICByZXR1cm4gX19sb3c7Cisg IH0KKworI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCisgIGlubGluZSBi b29sCisgIGN0eXBlPHdjaGFyX3Q+OjoKKyAgZG9faXMobWFzayBfX20sIHdj aGFyX3QgX19jKSBjb25zdAorICB7CisgICAgcmV0dXJuIF9faXN0eXBlIChf X2MsIF9fbSk7CisgIH0KKworICBpbmxpbmUgY29uc3Qgd2NoYXJfdCoKKyAg Y3R5cGU8d2NoYXJfdD46OgorICBkb19pcyhjb25zdCB3Y2hhcl90KiBfX2xv LCBjb25zdCB3Y2hhcl90KiBfX2hpLCBtYXNrKiBfX3ZlYykgY29uc3QKKyAg eworICAgIGZvciAoOyBfX2xvIDwgX19oaTsgKytfX3ZlYywgKytfX2xvKQor ICAgICAgKl9fdmVjID0gX19tYXNrcnVuZSAoKl9fbG8sIHVwcGVyIHwgbG93 ZXIgfCBhbHBoYSB8IGRpZ2l0IHwgeGRpZ2l0CisJCQkgICB8IHNwYWNlIHwg cHJpbnQgfCBncmFwaCB8IGNudHJsIHwgcHVuY3QgfCBhbG51bSk7CisgICAg cmV0dXJuIF9faGk7CisgIH0KKworICBpbmxpbmUgY29uc3Qgd2NoYXJfdCoK KyAgY3R5cGU8d2NoYXJfdD46OgorICBkb19zY2FuX2lzKG1hc2sgX19tLCBj b25zdCB3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpKSBjb25z dAorICB7CisgICAgd2hpbGUgKF9fbG8gPCBfX2hpICYmICEgX19pc3R5cGUg KCpfX2xvLCBfX20pKQorICAgICAgKytfX2xvOworICAgIHJldHVybiBfX2xv OworICB9CisKKyAgaW5saW5lIGNvbnN0IHdjaGFyX3QqCisgIGN0eXBlPHdj aGFyX3Q+OjoKKyAgZG9fc2Nhbl9ub3QobWFzayBfX20sIGNvbnN0IGNoYXJf dHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdAorICB7 CisgICAgd2hpbGUgKF9fbG8gPCBfX2hpICYmIF9faXN0eXBlICgqX19sbywg X19tKSkKKyAgICAgICsrX19sbzsKKyAgICByZXR1cm4gX19sbzsKKyAgfQor I2VuZGlmCisKK19HTElCQ1hYX0VORF9OQU1FU1BBQ0VfVkVSU0lPTgorfSAv LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcv b3MvYnNkL2RyYWdvbmZseS9vc19kZWZpbmVzLmggYi9saWJzdGRjKystdjMv Y29uZmlnL29zL2JzZC9kcmFnb25mbHkvb3NfZGVmaW5lcy5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNjBlZWIKLS0tIC9kZXYv bnVsbAorKysgYi9saWJzdGRjKystdjMvY29uZmlnL29zL2JzZC9kcmFnb25m bHkvb3NfZGVmaW5lcy5oCkBAIC0wLDAgKzEsMzIgQEAKKy8vIFNwZWNpZmlj IGRlZmluaXRpb25zIGZvciBCU0QgIC0qLSBDKysgLSotCisKKy8vIENvcHly aWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K Ky8vCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysg TGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisvLyBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRl ciB0aGUKKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisvLyBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlv bikKKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorCisvLyBUaGlzIGxpYnJhcnkg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorCisvLyBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24g MywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKy8vIHBlcm1pc3Npb25z IGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRp b24sIHZlcnNpb24KKy8vIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKy8vIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFuZAorLy8gYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5 IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKy8vIHNlZSB0 aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0 aXZlbHkuICBJZiBub3QsIHNlZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorCisKKyNpZm5kZWYgX0dMSUJDWFhfT1NfREVGSU5FUwor I2RlZmluZSBfR0xJQkNYWF9PU19ERUZJTkVTIDEKKworLy8gU3lzdGVtLXNw ZWNpZmljICNkZWZpbmUsIHR5cGVkZWZzLCBjb3JyZWN0aW9ucywgZXRjLCBn byBoZXJlLiAgVGhpcworLy8gZmlsZSB3aWxsIGNvbWUgYmVmb3JlIGFsbCBv dGhlcnMuCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2Nv bmZpZ3VyZS5ob3N0IGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0Cmlu ZGV4IGRjNmM5NzcuLmExMjg3MWEgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12 My9jb25maWd1cmUuaG9zdAorKysgYi9saWJzdGRjKystdjMvY29uZmlndXJl Lmhvc3QKQEAgLTI2MCw2ICsyNjAsOSBAQCBjYXNlICIke2hvc3Rfb3N9IiBp bgogICAgIG9zX2luY2x1ZGVfZGlyPSJvcy9kamdwcCIKICAgICBlcnJvcl9j b25zdGFudHNfZGlyPSJvcy9kamdwcCIKICAgICA7OworICBkcmFnb25mbHkq KQorICAgIG9zX2luY2x1ZGVfZGlyPSJvcy9ic2QvZHJhZ29uZmx5IgorICAg IDs7CiAgIGZyZWVic2QqKQogICAgIG9zX2luY2x1ZGVfZGlyPSJvcy9ic2Qv ZnJlZWJzZCIKICAgICA7Owo= --001a11341e1662f26c04f9e78075--