From: Thomas Leonard Subject: [PATCH ARM v3 7/7] mini-os: initial ARM support Date: Wed, 11 Jun 2014 11:30:18 +0100 Message-ID: <1402482618-15269-8-git-send-email-talex5@gmail.com> References: <1402482618-15269-1-git-send-email-talex5@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Wufnz-0002iX-K8 for xen-devel@lists.xenproject.org; Wed, 11 Jun 2014 10:30:56 +0000 Received: by mail-wi0-f196.google.com with SMTP id f8so286863wiw.11 for ; Wed, 11 Jun 2014 03:30:51 -0700 (PDT) In-Reply-To: <1402482618-15269-1-git-send-email-talex5@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Thomas Leonard , Dave.Scott@eu.citrix.com, anil@recoil.org, stefano.stabellini@eu.citrix.com, samuel.thibault@ens-lyon.org List-Id: xen-devel@lists.xenproject.org RnJvbTogS2FyaW0gUmFzbGFuIDxrYXJpbS5hbGxhaC5haG1lZEBnbWFpbC5jb20+CgpPbiBBUk0s IE1pbmktT1Mgd2lsbCBib290IGFuZCBkaXNwbGF5IHNvbWUgb3V0cHV0IG9uIHRoZSBjb25zb2xl LgpUZXN0ZWQgd2l0aDoKCm1ha2UgWEVOX1RBUkdFVF9BUkNIPWFybTMyIENST1NTX0NPTVBJTEU9 YXJtLWxpbnV4LWdudWVhYmloZi0gXAoJQ09ORklHX1RFU1Q9eSBDT05GSUdfU1RBUlRfTkVUV09S Sz1uIENPTkZJR19CTEtGUk9OVD1uIFwKCUNPTkZJR19ORVRGUk9OVD1uIENPTkZJR19GQkZST05U PW4gQ09ORklHX0tCREZST05UPW4gXAoJQ09ORklHX0NPTlNGUk9OVD1uIENPTkZJR19YQz1uIC1q NAoKU2lnbmVkLW9mZi1ieTogS2FyaW0gQWxsYWggQWhtZWQgPGthcmltLmFsbGFoLmFobWVkQGdt YWlsLmNvbT4KW3RhbGV4NUBnbWFpbC5jb206IG1hZGUgeDg2XzY0IHN1cHBvcnQgd29yayBhZ2Fp bl0KW3RhbGV4NUBnbWFpbC5jb206IHNwbGl0IGludG8gbXVsdGlwbGUgcGF0Y2hlc10KW3RhbGV4 NUBnbWFpbC5jb206IHJlLWVuYWJsZWQgZm9yY2VfZXZ0Y2huX2NhbGxiYWNrXQpbdGFsZXg1QGdt YWlsLmNvbTogZW5hYmxlIHJlZ3VsYXIgY29uc29sZV0KW3RhbGV4NUBnbWFpbC5jb206IGZpeGVk IGluaXRpYWxpc2F0aW9uIGNvZGU6Ci0gQ29uZmlndXJlIHdyaXRlLWJhY2sgY2FjaGluZyBpbiBw YWdlIHRhYmxlLiBUaGlzIGlzIG5lZWRlZCBmb3IKICByZWxpYWJsZSBoeXBlcmNhbGxzIHRvIFhl biAodGhhbmtzIHRvIEp1bGllbiBHcmFsbCkuCi0gVXNlICJjbGllbnQgbW9kZSIgZm9yIGFjY2Vz cyBjb250cm9sIChkb21haW5zIGFyZSBkZXByZWNhdGVkLAogIGFjY29yZGluZyB0byBBUk0gQ29y dGV4LUEgU2VyaWVzIFByb2dyYW1tZXLigJlzIEd1aWRlIHZlcnNpb24gNC4wLAogIHNlY3Rpb24g OS42LjQpLgotIEVuYWJsZSBtb3JlIFNDVExSIGZlYXR1cmVzIChpY2FjaGUsIGJyYW5jaCBwcmVk aWN0aW9uKV0KW3RhbGV4NUBnbWFpbC5jb206IHVzZSBWaXJ0dWFsIENvdW50IHJlZ2lzdGVyIGZv ciBtb25vdG9uaWMgdGltZV0KW3RhbGV4NUBnbWFpbC5jb206IGZpeGVkIEhZUEVSVklTT1Jfc2h1 dGRvd25dClt0YWxleDVAZ21haWwuY29tOiBnZXQgeGVuc3RvcmUgZGV0YWlscyBmcm9tIGh5cGVy dmlzb3JdClt0YWxleDVAZ21haWwuY29tOiB1c2UgR0NDIGltcGxlbWVudGF0aW9uIG9mIGRpdmlz aW9uXQpbdGFsZXg1QGdtYWlsLmNvbTogaW5jbHVkZSBoeXBlcnZpc29yLmggZnJvbSBvcy5oLCBh cyBvbiB4ODZdClt0YWxleDVAZ21haWwuY29tOiBjbGVhbmVkIHVwIGludGVycnVwdCBoYW5kbGVy cyBhbmQgdGhyZWFkaW5nXQpbdGFsZXg1QGdtYWlsLmNvbTogY2FsbCBleGl0X3RocmVhZCB3aGVu IGEgdGhyZWFkIHJldHVybnNdClt0YWxleDVAZ21haWwuY29tOiBpbXBsZW1lbnRlZCBibG9ja19k b21haW4gZm9yIEFSTV0KW3RhbGV4NUBnbWFpbC5jb206IGZpeGVkIGhhbmcgd2hlbiBlbmFibGlu ZyBpbnRlcnJ1cHRzXQpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgTGVvbmFyZCA8dGFsZXg1QGdtYWls LmNvbT4KLS0tCiBleHRyYXMvbWluaS1vcy9BUk0tVE9ETy50eHQgICAgICAgICAgICAgICAgICB8 ICAxNyArKwogZXh0cmFzL21pbmktb3MvQ29uZmlnLm1rICAgICAgICAgICAgICAgICAgICAgfCAg IDIgKwogZXh0cmFzL21pbmktb3MvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgfCAgMTQg KysKIGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL01ha2VmaWxlICAgICAgICAgICAgIHwgIDMyICsr KwogZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vYXJjaC5tayAgICAgICAgICAgICAgfCAgIDYgKwog ZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vYXJtMzIuUyAgICAgICAgICAgICAgfCAxNDkgKysrKysr KysrKysrKysKIGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL2V2ZW50cy5jICAgICAgICAgICAgIHwg IDI0ICsrKwogZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vaHlwZXJjYWxsczMyLlMgICAgICAgfCAg ODggKysrKysrKysKIGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL21pbmlvcy1hcm0zMi5sZHMgICAg IHwgIDczICsrKysrKysKIGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL21tLmMgICAgICAgICAgICAg ICAgIHwgIDQ0ICsrKysKIGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL3NjaGVkLmMgICAgICAgICAg ICAgIHwgIDM3ICsrKysKIGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL3NldHVwLmMgICAgICAgICAg ICAgIHwgMTAyICsrKysrKysrKysKIGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL3RpbWUuYyAgICAg ICAgICAgICAgIHwgMjAyICsrKysrKysrKysrKysrKysrKwogZXh0cmFzL21pbmktb3MvZHJpdmVy cy9naWMuYyAgICAgICAgICAgICAgICAgfCAxODAgKysrKysrKysrKysrKysrKwogZXh0cmFzL21p bmktb3MvZXZlbnRzLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIGV4dHJhcy9taW5p LW9zL2h5cGVydmlzb3IuYyAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGV4dHJhcy9taW5pLW9z L2luY2x1ZGUvYXJtL2FyY2hfbGltaXRzLmggICAgIHwgICA5ICsKIGV4dHJhcy9taW5pLW9zL2lu Y2x1ZGUvYXJtL2FyY2hfbW0uaCAgICAgICAgIHwgIDM3ICsrKysKIGV4dHJhcy9taW5pLW9zL2lu Y2x1ZGUvYXJtL2FyY2hfc2NoZWQuaCAgICAgIHwgIDIyICsrCiBleHRyYXMvbWluaS1vcy9pbmNs dWRlL2FybS9hcmNoX3NwaW5sb2NrLmggICB8ICA0OSArKysrKwogZXh0cmFzL21pbmktb3MvaW5j bHVkZS9hcm0vaHlwZXJjYWxsLWFybTMyLmggfCAxNzMgKysrKysrKysrKysrKysrKwogZXh0cmFz L21pbmktb3MvaW5jbHVkZS9hcm0vb3MuaCAgICAgICAgICAgICAgfCAyOTQgKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBleHRyYXMvbWluaS1vcy9pbmNsdWRlL2FybS90cmFwcy5oICAgICAg ICAgICB8ICAyMCArKwogZXh0cmFzL21pbmktb3MvaW5jbHVkZS9naWMuaCAgICAgICAgICAgICAg ICAgfCAgIDEgKwogZXh0cmFzL21pbmktb3MvaW5jbHVkZS9oeXBlcnZpc29yLmggICAgICAgICAg fCAgIDQgKwogZXh0cmFzL21pbmktb3MvaW5jbHVkZS9tbS5oICAgICAgICAgICAgICAgICAgfCAg IDIgKwogZXh0cmFzL21pbmktb3MvaW5jbHVkZS90eXBlcy5oICAgICAgICAgICAgICAgfCAgMTIg Ky0KIGV4dHJhcy9taW5pLW9zL2tlcm5lbC5jICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICsK IGV4dHJhcy9taW5pLW9zL3NjaGVkLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIDI5 IGZpbGVzIGNoYW5nZWQsIDE2MTEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBleHRyYXMvbWluaS1vcy9BUk0tVE9ETy50eHQKIGNyZWF0ZSBtb2RlIDEw MDc1NSBleHRyYXMvbWluaS1vcy9hcmNoL2FybS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL2FyY2gubWsKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHRy YXMvbWluaS1vcy9hcmNoL2FybS9hcm0zMi5TCiBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0cmFzL21p bmktb3MvYXJjaC9hcm0vZXZlbnRzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHRyYXMvbWluaS1v cy9hcmNoL2FybS9oeXBlcmNhbGxzMzIuUwogY3JlYXRlIG1vZGUgMTAwNzU1IGV4dHJhcy9taW5p LW9zL2FyY2gvYXJtL21pbmlvcy1hcm0zMi5sZHMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHRyYXMv bWluaS1vcy9hcmNoL2FybS9tbS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0cmFzL21pbmktb3Mv YXJjaC9hcm0vc2NoZWQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dHJhcy9taW5pLW9zL2FyY2gv YXJtL3NldHVwLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHRyYXMvbWluaS1vcy9hcmNoL2FybS90 aW1lLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHRyYXMvbWluaS1vcy9kcml2ZXJzL2dpYy5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZXh0cmFzL21pbmktb3MvaW5jbHVkZS9hcm0vYXJjaF9saW1pdHMu aAogY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dHJhcy9taW5pLW9zL2luY2x1ZGUvYXJtL2FyY2hfbW0u aAogY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dHJhcy9taW5pLW9zL2luY2x1ZGUvYXJtL2FyY2hfc2No ZWQuaAogY3JlYXRlIG1vZGUgMTAwNzU1IGV4dHJhcy9taW5pLW9zL2luY2x1ZGUvYXJtL2FyY2hf c3BpbmxvY2suaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dHJhcy9taW5pLW9zL2luY2x1ZGUvYXJt L2h5cGVyY2FsbC1hcm0zMi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0cmFzL21pbmktb3MvaW5j bHVkZS9hcm0vb3MuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dHJhcy9taW5pLW9zL2luY2x1ZGUv YXJtL3RyYXBzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHRyYXMvbWluaS1vcy9pbmNsdWRlL2dp Yy5oCgpkaWZmIC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvQVJNLVRPRE8udHh0IGIvZXh0cmFzL21p bmktb3MvQVJNLVRPRE8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3 NGEzMDQKLS0tIC9kZXYvbnVsbAorKysgYi9leHRyYXMvbWluaS1vcy9BUk0tVE9ETy50eHQKQEAg LTAsMCArMSwxNyBAQAorKiBvcy5oIGJpdCBtYW5pcHVsYXRpb24sIHdyaXRlIG9wdGltaXplZCBh c3NlbWJseSBjb2RlCisqIHN1cHBvcnQgYWJvcnQgZXhjZXB0aW9uIGhhbmRsaW5nICggYW5kIG90 aGVycyApCisqIHNjaGVkdWxpbmchCisqIHVzZSBwcm9wZXIgbWVtb3J5IHR5cGVzIGFuZCBlbmFi bGUgY2FjaGVzIChMMSBhbmQgTDIpCisqIFVzZSBMRFJFWCBhbmQgU1RSRVggaW4geGNoZyBpbXBs ZW1lbnRhdGlvbiAoIGNvZGUgYWxyZWFkeSB0aGVyZSBidXQgaXQgY2F1c2VzIGFuIGFib3J0LCBJ IHRoaW5rIGJlY2F1c2Ugb2YgdXNpbmcgc3Ryb25nLW9yZGVyZWQgbWVtb3J5IHdpdGggZGlzYWJs ZWQgTDEgY2FjaGVzIC0gc29tZXRoaW5nIHRvIGRvIHdpdGggdGhlIGltcGxlbWVudGF0aW9uIG9m IHRoZSBtb25pdG9yIG9uIGNvcnRleC1hNyApCisqIGdpYyByZXF1ZXN0X2lycSBpbXBsZW1lbnRh dGlvbiwgY3VycmVudGx5IGFsbCBJUlFzIGFsbCBoYXJkY29kZWQgaW4gZ2ljIGlycSBoYW5kbGVy LgorKiB1c2UgZGV2aWNlIHRyZWUgaW5zdGVhZCBvZiB0aGUgY3VycmVudGx5IGhhcmRjb2RlZCB2 YWx1ZXMKKyogQWRkIHZpcnR1YWwgbWVtb3J5IHN1cHBvcnQgYW5kIG1ha2UgdnN0YXJ0ID0gMCAo IHVzZSA0ayBkZXNjcmlwdG9ycyBpbnN0ZWFkIG9mIDFNIGRlc2NyaXB0b3JzICkKKyogc2NoZWQK KyogZmluaV9nbnR0YWIKKyogZmluaV90aW1lCisqIGJpbmRfKgorKiBhZGQgbXVsdGlwbGUgY3B1 IHN1cHBvcnQgKD8pCisqIG1hcF9mcmFtZXMKKyogY2xlYW4gdXAgdGhlIGNvZGUgYW5kIHJlbW92 ZSByZWR1bmRlbnQgY29kZSBiZXR3ZWVuIGFybSBhbmQgeDg2CisqIG1ha2Ugc3VyZSB0aGF0IHdh bGxjbG9jayBpcyBmdW5jdGlvbmluZyBwcm9wZXJseQorKiBldnRjaG5fZ2V0X3BlZXJjb250ZXh0 CmRpZmYgLS1naXQgYS9leHRyYXMvbWluaS1vcy9Db25maWcubWsgYi9leHRyYXMvbWluaS1vcy9D b25maWcubWsKaW5kZXggZDYxODc3Yi4uNGVjZGU1NCAxMDA2NDQKLS0tIGEvZXh0cmFzL21pbmkt b3MvQ29uZmlnLm1rCisrKyBiL2V4dHJhcy9taW5pLW9zL0NvbmZpZy5tawpAQCAtMTIsNiArMTIs OCBAQCBleHBvcnQgWEVOX0lOVEVSRkFDRV9WRVJTSU9OCiAjIElmIG5vdCB4ODYgdGhlbiB1c2Ug JChYRU5fVEFSR0VUX0FSQ0gpCiBpZmVxICgkKGZpbmRzdHJpbmcgeDg2XywkKFhFTl9UQVJHRVRf QVJDSCkpLHg4Nl8pCiBUQVJHRVRfQVJDSF9GQU0gPSB4ODYKK2Vsc2UgaWZlcSAoJChmaW5kc3Ry aW5nIGFybSwkKFhFTl9UQVJHRVRfQVJDSCkpLGFybSkKK1RBUkdFVF9BUkNIX0ZBTSA9IGFybQog ZWxzZQogVEFSR0VUX0FSQ0hfRkFNID0gJChYRU5fVEFSR0VUX0FSQ0gpCiBlbmRpZgpkaWZmIC0t Z2l0IGEvZXh0cmFzL21pbmktb3MvTWFrZWZpbGUgYi9leHRyYXMvbWluaS1vcy9NYWtlZmlsZQpp bmRleCA1YWY0MGFkLi4xYmZlMzU0IDEwMDY0NAotLS0gYS9leHRyYXMvbWluaS1vcy9NYWtlZmls ZQorKysgYi9leHRyYXMvbWluaS1vcy9NYWtlZmlsZQpAQCAtNzYsNiArNzYsMTQgQEAgVEFSR0VU IDo9IG1pbmktb3MKICMgU3ViZGlyZWN0b3JpZXMgY29tbW9uIHRvIG1pbmktb3MKIFNVQkRJUlMg Oj0gbGliIHhlbmJ1cyBjb25zb2xlCiAKK2lmZXEgKCQoWEVOX1RBUkdFVF9BUkNIKSxhcm0zMikK KyMgQVJNIGRyaXZlcnMKK3NyYy15ICs9IGRyaXZlcnMvZ2ljLmMKKworIyBOZWVkIGxpYmdjYy5h IGZvciBkaXZpc2lvbiBoZWxwZXJzCitMRExJQlMgKz0gYCQoQ0MpIC1wcmludC1saWJnY2MtZmls ZS1uYW1lYAorZW5kaWYKKwogc3JjLSQoQ09ORklHX0JMS0ZST05UKSArPSBibGtmcm9udC5jCiBz cmMtJChDT05GSUdfVFBNRlJPTlQpICs9IHRwbWZyb250LmMKIHNyYy0kKENPTkZJR19UUE1fVElT KSArPSB0cG1fdGlzLmMKQEAgLTk2LDcgKzEwNCw5IEBAIHNyYy15ICs9IHNjaGVkLmMKIHNyYy0k KENPTkZJR19URVNUKSArPSB0ZXN0LmMKIAogc3JjLXkgKz0gbGliL2N0eXBlLmMKK2lmbmVxICgk KFhFTl9UQVJHRVRfQVJDSCksYXJtMzIpCiBzcmMteSArPSBsaWIvbWF0aC5jCitlbmRpZgogc3Jj LXkgKz0gbGliL3ByaW50Zi5jCiBzcmMteSArPSBsaWIvc3RhY2tfY2hrX2ZhaWwuYwogc3JjLXkg Kz0gbGliL3N0cmluZy5jCkBAIC0xODUsNyArMTk1LDExIEBAICQoT0JKX0RJUikvJChUQVJHRVQp OiAkKE9CSlMpICQoQVBQX08pIGFyY2hfbGliCiAJJChMRCkgLXIgJChMREZMQUdTKSAkKEhFQURf T0JKKSAkKEFQUF9PKSAkKE9CSlMpICQoTERBUkNITElCKSAkKExETElCUykgLW8gJEAubwogCSQo T0JKQ09QWSkgLXcgLUcgJChHTE9CQUxfUFJFRklYKSogLUcgX3N0YXJ0ICRALm8gJEAubwogCSQo TEQpICQoTERGTEFHUykgJChMREZMQUdTX0ZJTkFMKSAkQC5vICQoRVhUUkFfT0JKUykgLW8gJEAK K2lmZXEgKCQoWEVOX1RBUkdFVF9BUkNIKSxhcm0zMikKKwkkKE9CSkNPUFkpIC1PIGJpbmFyeSAk QCAkQC5pbWcKK2Vsc2UKIAlnemlwIC1mIC05IC1jICRAID4kQC5negorZW5kaWYKIAogLlBIT05Z OiBjbGVhbiBhcmNoX2NsZWFuCiAKZGlmZiAtLWdpdCBhL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJt L01ha2VmaWxlIGIvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vTWFrZWZpbGUKbmV3IGZpbGUgbW9k ZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGI3ODY1MQotLS0gL2Rldi9udWxsCisrKyBiL2V4dHJh cy9taW5pLW9zL2FyY2gvYXJtL01ha2VmaWxlCkBAIC0wLDAgKzEsMzIgQEAKKyMKKyMgQVJNIGFy Y2hpdGVjdHVyZSBzcGVjaWZpYyBtYWtlZmlsZXMuCisjCisKK1hFTl9ST09UID0gJChDVVJESVIp Ly4uLy4uLy4uLy4uCitpbmNsdWRlICQoWEVOX1JPT1QpL0NvbmZpZy5taworaW5jbHVkZSAuLi8u Li9Db25maWcubWsKKworIyBpbmNsdWRlIGFyY2gubWsgaGFzIHRvIGJlIGJlZm9yZSBtaW5pb3Mu bWshCisKK2luY2x1ZGUgYXJjaC5taworaW5jbHVkZSAuLi8uLi9taW5pb3MubWsKKworIyBTb3Vy Y2VzIGhlcmUgYXJlIGFsbCAqLmMgKHdpdGhvdXQgJChYRU5fVEFSR0VUX0FSQ0gpLlMpCisjIFRo aXMgaXMgaGFuZGxlZCBpbiAkKEhFQURfQVJDSF9PQkopCitBUkNIX1NSQ1MgOj0gJCh3aWxkY2Fy ZCAqLmMpCisKKyMgVGhlIG9iamVjdHMgYnVpbHQgZnJvbSB0aGUgc291cmNlcy4KK0FSQ0hfT0JK UyA6PSAkKHBhdHN1YnN0ICUuYywkKE9CSl9ESVIpLyUubywkKEFSQ0hfU1JDUykpCisKK0FSQ0hf T0JKUyArPSBoeXBlcmNhbGxzMzIubworCithbGw6ICQoT0JKX0RJUikvJChBUkNIX0xJQikKKwor IyAkKEhFQURfQVJDSF9PQkopIGlzIG9ubHkgYnVpbHQgaGVyZSwgbmVlZGVkIG9uIGxpbmtpbmcK KyMgaW4gLi4vLi4vTWFrZWZpbGUuCiskKE9CSl9ESVIpLyQoQVJDSF9MSUIpOiAkKEFSQ0hfT0JK UykgJChPQkpfRElSKS8kKEhFQURfQVJDSF9PQkopCisJJChBUikgcnYgJChPQkpfRElSKS8kKEFS Q0hfTElCKSAkKEFSQ0hfT0JKUykKKworY2xlYW46CisJcm0gLWYgJChPQkpfRElSKS8kKEFSQ0hf TElCKSAkKEFSQ0hfT0JKUykgJChPQkpfRElSKS8kKEhFQURfQVJDSF9PQkopCisKZGlmZiAtLWdp dCBhL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL2FyY2gubWsgYi9leHRyYXMvbWluaS1vcy9hcmNo L2FybS9hcmNoLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNjUwZmMK LS0tIC9kZXYvbnVsbAorKysgYi9leHRyYXMvbWluaS1vcy9hcmNoL2FybS9hcmNoLm1rCkBAIC0w LDAgKzEsNiBAQAoraWZlcSAoJChYRU5fVEFSR0VUX0FSQ0gpLGFybTMyKQorQVJDSF9DRkxBR1Mg IDo9IC1tYXJjaD1hcm12Ny1hIC1tYXJtIC1mbXMtZXh0ZW5zaW9ucyAtRF9fYXJtX18gLURYRU5f SEFWRV9QVl9HVUVTVF9FTlRSWSAjLURDUFVfRVhDTFVTSVZFX0xEU1QKK0VYVFJBX0lOQyArPSAk KFRBUkdFVF9BUkNIX0ZBTSkvJChYRU5fVEFSR0VUX0FSQ0gpCitFWFRSQV9TUkMgKz0gYXJjaC8k KEVYVFJBX0lOQykKK2VuZGlmCisKZGlmZiAtLWdpdCBhL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJt L2FybTMyLlMgYi9leHRyYXMvbWluaS1vcy9hcmNoL2FybS9hcm0zMi5TCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MjUyOTUKLS0tIC9kZXYvbnVsbAorKysgYi9leHRyYXMv bWluaS1vcy9hcmNoL2FybS9hcm0zMi5TCkBAIC0wLDAgKzEsMTQ5IEBACisjZGVmaW5lIFBIWVNf U1RBUlQgKDB4ODAwMDgwMDApCisKKy5zZWN0aW9uIC50ZXh0CisKKy5nbG9ibCBfc3RhcnQKK19z dGFydDoKKwlAIHpJbWFnZSBoZWFkZXIKKy5yZXB0ICAgOAorICAgICAgICBtb3YgICAgIHIwLCBy MAorLmVuZHIKKyAgICAgICAgYiAgICAgICByZXNldAorICAgICAgICAud29yZCAgIDB4MDE2ZjI4 MTggICAgICBAIE1hZ2ljIG51bWJlcnMgdG8gaGVscCB0aGUgbG9hZGVyCisgICAgICAgIC53b3Jk ICAgX3N0YXJ0CQlAIGFic29sdXRlIGxvYWQvcnVuIHpJbWFnZSBhZGRyZXNzCisgICAgICAgIC53 b3JkICAgX2VuZCAtIF9zdGFydCAgIEAgekltYWdlIHNpemUKKwlAIGVuZCBvZiB6SW1hZ2UgaGVh ZGVyCisKK0AgQ2FsbGVkIGF0IGJvb3QgdGltZS4gU2V0cyB1cCBNTVUsIGV4Y2VwdGlvbiB2ZWN0 b3JzIGFuZCBzdGFjaywgYW5kIHRoZW4gY2FsbHMgQyBzZXR1cCgpIGZ1bmN0aW9uLgorQCA9PiBy MiAtPiBEVEIKK0AgPD0gbmV2ZXIgcmV0dXJucworcmVzZXQ6CisJQCBGaWxsIGluIHRoZSB0b3At bGV2ZWwgdHJhbnNsYXRpb24gdGFibGUgKGF0IHBhZ2VfZGlyKS4KKwlAIFBvcHVsYXRlIHRoZSB3 aG9sZSBwYWdlZGlyIHdpdGggMU1CIHNlY3Rpb24gZGVzY3JpcHRvcnMuCisJQCBURVhbMjowXSBD IEIgPSAwMDEgMSAxIChvdXRlciBhbmQgaW5uZXIgd3JpdGUtYmFjaywgd3JpdGUtYWxsb2NhdGUp CisJbGRyCXIwLCA9KDB4MiArICAJCS8qIFNlY3Rpb24gZW50cnkgKi8gXAorCQkgICAgICAweGMg KyAgCQkvKiBDIEIgKi8gXAorCQkgICAgICAoMyA8PCAxMCkgKyAJLyogUmVhZC93cml0ZSAqLyBc CisJCSAgICAgICgxIDw8IDEyKSArCS8qIFRFWCAqLyBcCisJCSAgICAgICgxIDw8IDE2KSArCS8q IFNoYXJhYmxlICovIFwKKwkJICAgICAgKDE8PDE5KSkJCS8qIE5vbi1zZWN1cmUgKi8KKwlsZHIJ cjEsID1wYWdlX2RpcgorCWFkZAlyMywgcjEsICM0KjQqMTAyNAlAIExpbWl0ICg0IEdCIGFkZHJl c3Mgc3BhY2UsIDQgYnl0ZSBlbnRyaWVzKQorCisxOgorCXN0cglyMCwgW3IxXSwjNAkJQCB3cml0 ZSB0aGUgc2VjdGlvbiBlbnRyeQorCWFkZAlyMCwgcjAsICMxIDw8IDIwIAlAIG5leHQgcGh5c2lj YWwgcGFnZQorCWNtcAlyMSwgcjMKKwlibmUJMWIKKworCUAgVGVsbCB0aGUgc3lzdGVtIHdoZXJl IG91ciBuZXcgdGFibGUgaXMgbG9jYXRlZC4KKwlsZHIJcjMsID1wYWdlX2RpcgorCW1jcglwMTUs IDAsIHIzLCBjMiwgYzAsIDAJQCBzZXQgdHRicjAKKworCUAgU2V0IGFjY2VzcyBwZXJtaXNzaW9u IGZvciBkb21haW5zCisJQCBEb21haW5zIGFyZSBkZXByZWNhdGVkLCBidXQgd2UgaGF2ZSB0byBj b25maWd1cmUgdGhlbSBhbnl3YXkuCisJQCBXZSBtYXJrIGV2ZXJ5IHBhZ2UgYXMgYmVpbmcgZG9t YWluIDAgYW5kIHNldCBkb21haW4gMCB0byAiY2xpZW50IG1vZGUiCisJQCAoY2xpZW50IG1vZGUg PSB1c2UgYWNjZXNzIGZsYWdzIGluIHBhZ2UgdGFibGUpLgorCW1vdglyMCwgIzEJCQlAIDEgPSBj bGllbnQKKwltY3IJcDE1LCAwLCByMCwgYzMsIGMwLCAwCUAgREFDUgorCisJQCBJbnZhbGlkYXRl IFRMQgorCW1jcglwMTUsIDAsIHIxLCBjOCwgYzcsIDAJQCBUTEJJQUxMCisKKwlAIEVuYWJsZSBN TVUgLyBTQ1RMUgorCW1yYwlwMTUsIDAsIHIxLCBjMSwgYzAsIDAJQCBTQ1RMUgorCW9ycglyMSwg cjEsICMweDcJCUAgKGRjYWNoZSwgYmFycmllcnMsIE1NVSkKKwlvcnIJcjEsIHIxLCAjMyA8PCAx MQlAIChpY2FjaGUsIGJyYW5jaCBwcmVkaWN0aW9uKQorCW1jcglwMTUsIDAsIHIxLCBjMSwgYzAs IDAJQCBTQ1RMUgorCWlzYgorCisJQCBTZXQgVkJBUiAtPiBleGNlcHRpb25fdmVjdG9yX3RhYmxl CisJQCBTQ1RMUi5WID0gMAorCWFkcglyMCwgZXhjZXB0aW9uX3ZlY3Rvcl90YWJsZQorCW1jcglw MTUsIDAsIHIwLCBjMTIsIGMwLCAwCisKKwlAIEluaXRpYWxpc2UgMTYgS0Igc3RhY2sKKwlsZHIJ c3AsID1zdGFja19lbmQKKworCW1vdglyMCwgcjIJCQlAIEMgd2FudHMgdGhlIERUQiBwb2ludGVy IGluIHIwCisJYglhcmNoX2luaXQKKworLnB1c2hzZWN0aW9uIC5kYXRhCisuYWxpZ24JMTQKK3Bh Z2VfZGlyOgorCS5maWxsICg0KjEwMjQpLCA0LCAweDAKKworLmFsaWduIDEyCisuZ2xvYmwgc2hh cmVkX2luZm9fcGFnZQorc2hhcmVkX2luZm9fcGFnZToKKwkuZmlsbCAoMTAyNCksIDQsIDB4MAor CisuYWxpZ24gMworLmdsb2JsIHN0YWNrCitzdGFjazoKKwkuZmlsbCAoNCoxMDI0KSwgNCwgMHgw CitzdGFja19lbmQ6CisKKy5hbGlnbiAzCitpcnFzdGFjazoKKwkuZmlsbCAoMTAyNCksIDQsIDB4 MAoraXJxc3RhY2tfZW5kOgorLnBvcHNlY3Rpb24KKworQCBleGNlcHRpb24gYmFzZSBhZGRyZXNz CisuYWxpZ24gNQorLmdsb2JsIGV4Y2VwdGlvbl92ZWN0b3JfdGFibGUKK2V4Y2VwdGlvbl92ZWN0 b3JfdGFibGU6CisJYgkuIEAgcmVzZXQKKwliCS4gQCB1bmRlZmluZWQgaW5zdHJ1Y3Rpb24KKwli CS4gQCBzdXBlcnZpc29yIGNhbGwKKwliCS4gQCBwcmVmZXRjaCBjYWxsCisJYgkuIEAgcHJlZmV0 Y2ggYWJvcnQKKwliCS4gQCBkYXRhIGFib3J0IC8vRklYTUUgQ0xSRVgKKwliCWlycV9oYW5kbGVy IEAgaXJxCisJLndvcmQgMHhlN2YwMDBmMCAgICBAIGFib3J0IG9uIEZJUQorCitpcnFfaGFuZGxl cjoKKwlsZHIJc3AsID1pcnFzdGFja19lbmQKKwlwdXNoCXtyMCAtIHIxMiwgcjE0fQorCisJbGRy CXIwLCBJUlFfaGFuZGxlcgorCWNtcAlyMCwgIzAKKwkud29yZAkweDA3ZjAwMGYwICAgIEAgdW5k ZXEgLSBwYW5pYyBpZiBubyBoYW5kbGVyCisJYmx4CXIwCisKKwlAIFJldHVybiBmcm9tIElSUQor CXBvcAl7cjAgLSByMTIsIHIxNH0KKwlzdWJzCXBjLCBsciwgIzQKKworLmdsb2JsIElSUV9oYW5k bGVyCitJUlFfaGFuZGxlcjoKKwkubG9uZwkweDAKKworCisuZ2xvYmwgX19hcmNoX3N3aXRjaF90 aHJlYWRzCitAID0+IHIwID0gcHJldi0+c3AKK0AgICAgcjEgPSBuZXh0LT5zcAorQCA8PSByZXR1 cm5zIHRvIG5leHQgdGhyZWFkJ3Mgc2F2ZWQgcmV0dXJuIGFkZHJlc3MKK19fYXJjaF9zd2l0Y2hf dGhyZWFkczoKKwlzdG1pYQlyMCwge3NwLCBscn0JQCBTdG9yZSBjdXJyZW50IHNwIGFuZCBpcCB0 byBwcmV2J3Mgc3RydWN0IHRocmVhZAorCXN0cglmcCwgW3NwLCAjLTRdCUAgU3RvcmUgZnAgb24g dGhlIG9sZCBzdGFjaworCisJbGRtaWEJcjEsIHtzcCwgbHJ9CUAgTG9hZCBuZXcgc3AsIGlwIGZy b20gbmV4dCdzIHN0cnVjdCB0aHJlYWQKKwlsZHIJZnAsIFtzcCwgIy00XQlAIFJlc3RvcmUgZnAg ZnJvbSB0aGUgc3RhY2sKKworCW1vdglwYywgbHIKKworQCBUaGlzIGlzIGNhbGxlZCBpZiB5b3Ug dHJ5IHRvIGRpdmlkZSBieSB6ZXJvLiBGb3Igbm93LCB3ZSBtYWtlIGEgc3VwZXJ2aXNvciBjYWxs LAorQCB3aGljaCB3aWxsIG1ha2UgdXMgaGFsdC4KKy5nbG9ibCByYWlzZQorcmFpc2U6CisJc3Zj CTAKKworLmdsb2JsIGFybV9zdGFydF90aHJlYWQKK2FybV9zdGFydF90aHJlYWQ6CisJcG9wCXty MCwgcjF9CisJQCByMCA9IHVzZXIgZGF0YQorCUAgcjEgLT4gdGhyZWFkJ3MgbWFpbiBmdW5jdGlv bgorCWxkcglsciwgPWV4aXRfdGhyZWFkCisJYngJcjEKZGlmZiAtLWdpdCBhL2V4dHJhcy9taW5p LW9zL2FyY2gvYXJtL2V2ZW50cy5jIGIvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vZXZlbnRzLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkNjM3ZQotLS0gL2Rldi9udWxs CisrKyBiL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL2V2ZW50cy5jCkBAIC0wLDAgKzEsMjQgQEAK KyNpbmNsdWRlIDxtaW5pLW9zL29zLmg+CisjaW5jbHVkZSA8bWluaS1vcy9ldmVudHMuaD4KKyNp bmNsdWRlIDxtaW5pLW9zL2h5cGVydmlzb3IuaD4KKworc3RhdGljIHZvaWQgdmlycV9kZWJ1Zyhl dnRjaG5fcG9ydF90IHBvcnQsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCB2b2lkICpwYXJhbXMpCit7 CisgICAgcHJpbnRrKCJSZWNlaXZlZCBhIHZpcnFfZGVidWcgZXZlbnRcbiIpOworfQorCitldnRj aG5fcG9ydF90IGRlYnVnX3BvcnQgPSAtMTsKK3ZvaWQgYXJjaF9pbml0X2V2ZW50cyh2b2lkKSB7 CisgICAgZGVidWdfcG9ydCA9IGJpbmRfdmlycShWSVJRX0RFQlVHLCAoZXZ0Y2huX2hhbmRsZXJf dCl2aXJxX2RlYnVnLCAwKTsKKyAgICBpZihkZWJ1Z19wb3J0ID09IC0xKQorICAgICAgICBCVUco KTsKKyAgICB1bm1hc2tfZXZ0Y2huKGRlYnVnX3BvcnQpOworfQorCit2b2lkIGFyY2hfZmluaV9l dmVudHModm9pZCkgeworICAgIGlmKGRlYnVnX3BvcnQgIT0gLTEpCisgICAgeworICAgICAgICBt YXNrX2V2dGNobihkZWJ1Z19wb3J0KTsKKyAgICAgICAgdW5iaW5kX2V2dGNobihkZWJ1Z19wb3J0 KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9leHRyYXMvbWluaS1vcy9hcmNoL2FybS9oeXBlcmNh bGxzMzIuUyBiL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL2h5cGVyY2FsbHMzMi5TCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZjIxYzQKLS0tIC9kZXYvbnVsbAorKysgYi9l eHRyYXMvbWluaS1vcy9hcmNoL2FybS9oeXBlcmNhbGxzMzIuUwpAQCAtMCwwICsxLDg4IEBACisj ZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfdHJhcF90YWJsZSAgICAgICAgMAorI2RlZmluZSBfX0hZ UEVSVklTT1JfbW11X3VwZGF0ZSAgICAgICAgICAgIDEKKyNkZWZpbmUgX19IWVBFUlZJU09SX3Nl dF9nZHQgICAgICAgICAgICAgICAyCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zdGFja19zd2l0Y2gg ICAgICAgICAgMworI2RlZmluZSBfX0hZUEVSVklTT1Jfc2V0X2NhbGxiYWNrcyAgICAgICAgIDQK KyNkZWZpbmUgX19IWVBFUlZJU09SX2ZwdV90YXNrc3dpdGNoICAgICAgICA1CisjZGVmaW5lIF9f SFlQRVJWSVNPUl9zY2hlZF9vcF9jb21wYXQgICAgICAgNiAvKiBjb21wYXQgc2luY2UgMHgwMDAz MDEwMSAqLworI2RlZmluZSBfX0hZUEVSVklTT1JfcGxhdGZvcm1fb3AgICAgICAgICAgIDcKKyNk ZWZpbmUgX19IWVBFUlZJU09SX3NldF9kZWJ1Z3JlZyAgICAgICAgICA4CisjZGVmaW5lIF9fSFlQ RVJWSVNPUl9nZXRfZGVidWdyZWcgICAgICAgICAgOQorI2RlZmluZSBfX0hZUEVSVklTT1JfdXBk YXRlX2Rlc2NyaXB0b3IgICAgMTAKKyNkZWZpbmUgX19IWVBFUlZJU09SX21lbW9yeV9vcCAgICAg ICAgICAgIDEyCisjZGVmaW5lIF9fSFlQRVJWSVNPUl9tdWx0aWNhbGwgICAgICAgICAgICAxMwor I2RlZmluZSBfX0hZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcgICAgMTQKKyNkZWZpbmUgX19I WVBFUlZJU09SX3NldF90aW1lcl9vcCAgICAgICAgIDE1CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9l dmVudF9jaGFubmVsX29wX2NvbXBhdCAxNiAvKiBjb21wYXQgc2luY2UgMHgwMDAzMDIwMiAqLwor I2RlZmluZSBfX0hZUEVSVklTT1JfeGVuX3ZlcnNpb24gICAgICAgICAgMTcKKyNkZWZpbmUgX19I WVBFUlZJU09SX2NvbnNvbGVfaW8gICAgICAgICAgIDE4CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9w aHlzZGV2X29wX2NvbXBhdCAgICAxOSAvKiBjb21wYXQgc2luY2UgMHgwMDAzMDIwMiAqLworI2Rl ZmluZSBfX0hZUEVSVklTT1JfZ3JhbnRfdGFibGVfb3AgICAgICAgMjAKKyNkZWZpbmUgX19IWVBF UlZJU09SX3ZtX2Fzc2lzdCAgICAgICAgICAgIDIxCisjZGVmaW5lIF9fSFlQRVJWSVNPUl91cGRh dGVfdmFfbWFwcGluZ19vdGhlcmRvbWFpbiAyMgorI2RlZmluZSBfX0hZUEVSVklTT1JfaXJldCAg ICAgICAgICAgICAgICAgMjMgLyogeDg2IG9ubHkgKi8KKyNkZWZpbmUgX19IWVBFUlZJU09SX3Zj cHVfb3AgICAgICAgICAgICAgIDI0CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9zZXRfc2VnbWVudF9i YXNlICAgICAyNSAvKiB4ODYvNjQgb25seSAqLworI2RlZmluZSBfX0hZUEVSVklTT1JfbW11ZXh0 X29wICAgICAgICAgICAgMjYKKyNkZWZpbmUgX19IWVBFUlZJU09SX3hzbV9vcCAgICAgICAgICAg ICAgIDI3CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9ubWlfb3AgICAgICAgICAgICAgICAyOAorI2Rl ZmluZSBfX0hZUEVSVklTT1Jfc2NoZWRfb3AgICAgICAgICAgICAgMjkKKyNkZWZpbmUgX19IWVBF UlZJU09SX2NhbGxiYWNrX29wICAgICAgICAgIDMwCisjZGVmaW5lIF9fSFlQRVJWSVNPUl94ZW5v cHJvZl9vcCAgICAgICAgICAzMQorI2RlZmluZSBfX0hZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9v cCAgICAgMzIKKyNkZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3AgICAgICAgICAgIDMzCisj ZGVmaW5lIF9fSFlQRVJWSVNPUl9odm1fb3AgICAgICAgICAgICAgICAzNAorI2RlZmluZSBfX0hZ UEVSVklTT1Jfc3lzY3RsICAgICAgICAgICAgICAgMzUKKyNkZWZpbmUgX19IWVBFUlZJU09SX2Rv bWN0bCAgICAgICAgICAgICAgIDM2CisjZGVmaW5lIF9fSFlQRVJWSVNPUl9rZXhlY19vcCAgICAg ICAgICAgICAzNworI2RlZmluZSBfX0hZUEVSVklTT1JfdG1lbV9vcCAgICAgICAgICAgICAgMzgK KyNkZWZpbmUgX19IWVBFUlZJU09SX3hjX3Jlc2VydmVkX29wICAgICAgIDM5IC8qIHJlc2VydmVk IGZvciBYZW5DbGllbnQgKi8KKworCisKKyNkZWZpbmUgX19IVkMoaW1tMTYpIC5sb25nICgoMHhF MTQwMDA3MCB8ICgoKGltbTE2KSAmIDB4RkZGMCkgPDwgNCkgfCAoKGltbTE2KSAmIDB4MDAwRikp ICYgMHhGRkZGRkZGRikKKworI2RlZmluZSBYRU5fSU1NIDB4RUExCisKKyNkZWZpbmUgSFlQRVJD QUxMX1NJTVBMRShoeXBlcmNhbGwpCQlcCisuZ2xvYmwgSFlQRVJWSVNPUl8jI2h5cGVyY2FsbDsJ CQlcCisuYWxpZ24gNCwweDkwOwkJCQkJXAorSFlQRVJWSVNPUl8jI2h5cGVyY2FsbDoJCQkJXAor ICAgICAgICBtb3YgcjEyLCAjX19IWVBFUlZJU09SXyMjaHlwZXJjYWxsOwlcCisgICAgICAgIF9f SFZDKFhFTl9JTU0pOwkJCQlcCisgICAgICAgIG1vdiBwYywgbHI7CisKKyNkZWZpbmUgX2h5cGVy Y2FsbDAgSFlQRVJDQUxMX1NJTVBMRQorI2RlZmluZSBfaHlwZXJjYWxsMSBIWVBFUkNBTExfU0lN UExFCisjZGVmaW5lIF9oeXBlcmNhbGwyIEhZUEVSQ0FMTF9TSU1QTEUKKyNkZWZpbmUgX2h5cGVy Y2FsbDMgSFlQRVJDQUxMX1NJTVBMRQorI2RlZmluZSBfaHlwZXJjYWxsNCBIWVBFUkNBTExfU0lN UExFCisKK19oeXBlcmNhbGwxKHNldF90cmFwX3RhYmxlKTsKK19oeXBlcmNhbGw0KG1tdV91cGRh dGUpOworX2h5cGVyY2FsbDQobW11ZXh0X29wKTsKK19oeXBlcmNhbGwyKHNldF9nZHQpOworX2h5 cGVyY2FsbDIoc3RhY2tfc3dpdGNoKTsKK19oeXBlcmNhbGwzKHNldF9jYWxsYmFja3MpOworX2h5 cGVyY2FsbDEoZnB1X3Rhc2tzd2l0Y2gpOworX2h5cGVyY2FsbDIoc2NoZWRfb3ApOworX2h5cGVy Y2FsbDEoc2V0X3RpbWVyX29wKTsKK19oeXBlcmNhbGwyKHNldF9kZWJ1Z3JlZyk7CitfaHlwZXJj YWxsMShnZXRfZGVidWdyZWcpOworX2h5cGVyY2FsbDIodXBkYXRlX2Rlc2NyaXB0b3IpOworX2h5 cGVyY2FsbDIobWVtb3J5X29wKTsKK19oeXBlcmNhbGwyKG11bHRpY2FsbCk7CitfaHlwZXJjYWxs Myh1cGRhdGVfdmFfbWFwcGluZyk7CitfaHlwZXJjYWxsMihldmVudF9jaGFubmVsX29wKTsKK19o eXBlcmNhbGwyKHhlbl92ZXJzaW9uKTsKK19oeXBlcmNhbGwzKGNvbnNvbGVfaW8pOworX2h5cGVy Y2FsbDEocGh5c2Rldl9vcCk7CitfaHlwZXJjYWxsMyhncmFudF90YWJsZV9vcCk7CitfaHlwZXJj YWxsNCh1cGRhdGVfdmFfbWFwcGluZ19vdGhlcmRvbWFpbik7CitfaHlwZXJjYWxsMih2bV9hc3Np c3QpOworX2h5cGVyY2FsbDModmNwdV9vcCk7CitfaHlwZXJjYWxsMihzZXRfc2VnbWVudF9iYXNl KTsKK19oeXBlcmNhbGwyKG5taV9vcCk7CitfaHlwZXJjYWxsMShzeXNjdGwpOworX2h5cGVyY2Fs bDEoZG9tY3RsKTsKK19oeXBlcmNhbGwyKGh2bV9vcCk7CmRpZmYgLS1naXQgYS9leHRyYXMvbWlu aS1vcy9hcmNoL2FybS9taW5pb3MtYXJtMzIubGRzIGIvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0v bWluaW9zLWFybTMyLmxkcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43OTNm MGRlCi0tLSAvZGV2L251bGwKKysrIGIvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vbWluaW9zLWFy bTMyLmxkcwpAQCAtMCwwICsxLDczIEBACitPVVRQVVRfQVJDSChhcm0pCitFTlRSWShfc3RhcnQp CitTRUNUSU9OUworeworICAuID0gMHg4MDAwODAwMDsKKyAgX3RleHQgPSAuOwkJCS8qIFRleHQg YW5kIHJlYWQtb25seSBkYXRhICovCisgIC50ZXh0IDogeworCSooLnRleHQpCisJKiguZ251Lndh cm5pbmcpCisJfSA9IDB4OTA5MAorCisgIF9ldGV4dCA9IC47CQkJLyogRW5kIG9mIHRleHQgc2Vj dGlvbiAqLworCisgIC5yb2RhdGEgOiB7ICooLnJvZGF0YSkgKigucm9kYXRhLiopIH0KKyAgLiA9 IEFMSUdOKDQwOTYpOworICBfZXJvZGF0YSA9IC47CisKKyAgLyogbmV3bGliIGluaXRpYWxpemF0 aW9uIGZ1bmN0aW9ucyAqLworICAuID0gQUxJR04oMzIgLyA4KTsKKyAgUFJPVklERSAoX19wcmVp bml0X2FycmF5X3N0YXJ0ID0gLik7CisgIC5wcmVpbml0X2FycmF5ICAgICA6IHsgKigucHJlaW5p dF9hcnJheSkgfQorICBQUk9WSURFIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7CisgIFBST1ZJ REUgKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOworICAuaW5pdF9hcnJheSAgICAgOiB7ICooLmlu aXRfYXJyYXkpIH0KKyAgUFJPVklERSAoX19pbml0X2FycmF5X2VuZCA9IC4pOworICBQUk9WSURF IChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKKyAgLmZpbmlfYXJyYXkgICAgIDogeyAqKC5maW5p X2FycmF5KSB9CisgIFBST1ZJREUgKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKKworICAuY3RvcnMg OiB7CisgICAgICAgIF9fQ1RPUl9MSVNUX18gPSAuOworICAgICAgICAqKC5jdG9ycykKKwlDT05T VFJVQ1RPUlMKKyAgICAgICAgTE9ORygwKQorICAgICAgICBfX0NUT1JfRU5EX18gPSAuOworICAg ICAgICB9CisKKyAgLmR0b3JzIDogeworICAgICAgICBfX0RUT1JfTElTVF9fID0gLjsKKyAgICAg ICAgKiguZHRvcnMpCisgICAgICAgIExPTkcoMCkKKyAgICAgICAgX19EVE9SX0VORF9fID0gLjsK KyAgICAgICAgfQorCisgIC5kYXRhIDogewkJCS8qIERhdGEgKi8KKwkqKC5kYXRhKQorCX0KKwor ICBfZWRhdGEgPSAuOwkJCS8qIEVuZCBvZiBkYXRhIHNlY3Rpb24gKi8KKworICBfX2Jzc19zdGFy dCA9IC47CQkvKiBCU1MgKi8KKyAgLmJzcyA6IHsKKwkqKC5ic3MpCisgICAgICAgICooLmFwcC5i c3MpCisJfQorICBfZW5kID0gLiA7CisKKyAgLyogU2VjdGlvbnMgdG8gYmUgZGlzY2FyZGVkICov CisgIC9ESVNDQVJELyA6IHsKKwkqKC50ZXh0LmV4aXQpCisJKiguZGF0YS5leGl0KQorCSooLmV4 aXRjYWxsLmV4aXQpCisJfQorCisgIC8qIFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovCisg IC5zdGFiIDAgOiB7ICooLnN0YWIpIH0KKyAgLnN0YWJzdHIgMCA6IHsgKiguc3RhYnN0cikgfQor ICAuc3RhYi5leGNsIDAgOiB7ICooLnN0YWIuZXhjbCkgfQorICAuc3RhYi5leGNsc3RyIDAgOiB7 ICooLnN0YWIuZXhjbHN0cikgfQorICAuc3RhYi5pbmRleCAwIDogeyAqKC5zdGFiLmluZGV4KSB9 CisgIC5zdGFiLmluZGV4c3RyIDAgOiB7ICooLnN0YWIuaW5kZXhzdHIpIH0KKyAgLmNvbW1lbnQg MCA6IHsgKiguY29tbWVudCkgfQorfQpkaWZmIC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvYXJjaC9h cm0vbW0uYyBiL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL21tLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uM2U3OTdjMgotLS0gL2Rldi9udWxsCisrKyBiL2V4dHJhcy9taW5p LW9zL2FyY2gvYXJtL21tLmMKQEAgLTAsMCArMSw0NCBAQAorI2luY2x1ZGUgPGNvbnNvbGUuaD4K KyNpbmNsdWRlIDxhcm0vYXJjaF9tbS5oPgorCisjZGVmaW5lIFBIWVNfU1RBUlQgKDB4ODAwMDgw MDAgKyAoMTAwMCAqIDQgKiAxMDI0KSkKKyNkZWZpbmUgUEhZU19TSVpFICg0MCoxMDI0KjEwMjQp CisKK3N0YXRpYyB2b2lkIGJ1aWxkX3BhZ2V0YWJsZSh1bnNpZ25lZCBsb25nICpzdGFydF9wZm4s IHVuc2lnbmVkIGxvbmcgKm1heF9wZm4pCit7CisgICAgLy8gRklYTUUgQ3JlYXRlIHNtYWxsIHBh Z2VzIGRlc2NyaXB0b3JzIGhlcmUgaW5zdGVhZCBvZiB0aGUgMU0gc3VwZXJwYWdlcyBjcmVhdGVk IGVhcmxpZXIuCisgICAgcmV0dXJuOworfQorCit1bnNpZ25lZCBsb25nIGFsbG9jYXRlX29uZGVt YW5kKHVuc2lnbmVkIGxvbmcgbiwgdW5zaWduZWQgbG9uZyBhbGlnbm1lbnQpCit7CisgICAgLy8g RklYTUUKKyAgICBCVUcoKTsKK30KKwordm9pZCBhcmNoX2luaXRfbW0odW5zaWduZWQgbG9uZyog c3RhcnRfcGZuX3AsIHVuc2lnbmVkIGxvbmcqIG1heF9wZm5fcCkKK3sKKyAgICBwcmludGsoIiAg ICBfdGV4dDogJXAoVkEpXG4iLCAmX3RleHQpOworICAgIHByaW50aygiICAgIF9ldGV4dDogJXAo VkEpXG4iLCAmX2V0ZXh0KTsKKyAgICBwcmludGsoIiAgICBfZXJvZGF0YTogJXAoVkEpXG4iLCAm X2Vyb2RhdGEpOworICAgIHByaW50aygiICAgIF9lZGF0YTogJXAoVkEpXG4iLCAmX2VkYXRhKTsK KyAgICBwcmludGsoIiAgICBzdGFjayBzdGFydDogJXAoVkEpXG4iLCBzdGFjayk7CisgICAgcHJp bnRrKCIgICAgX2VuZDogJXAoVkEpXG4iLCAmX2VuZCk7CisKKyAgICAvLyBGSVhNRSBHZXQgZnJv bSBkdCEKKyAgICAqc3RhcnRfcGZuX3AgPSAoKCh1bnNpZ25lZCBsb25nKSZfZW5kKSA+PiBQQUdF X1NISUZUKSArIDEwMDA7CisgICAgKm1heF9wZm5fcCA9ICgodW5zaWduZWQgbG9uZykmX2VuZCAr IFBIWVNfU0laRSkgPj4gUEFHRV9TSElGVDsKKworICAgIHByaW50aygiICAgIHN0YXJ0X3Bmbjog JWx4XG4iLCAqc3RhcnRfcGZuX3ApOworICAgIHByaW50aygiICAgIG1heF9wZm46ICVseFxuIiwg Km1heF9wZm5fcCk7CisKKyAgICBidWlsZF9wYWdldGFibGUoc3RhcnRfcGZuX3AsIG1heF9wZm5f cCk7Cit9CisKK3ZvaWQgYXJjaF9pbml0X3AybSh1bnNpZ25lZCBsb25nIG1heF9wZm4pCit7Cit9 CisKK3ZvaWQgYXJjaF9pbml0X2RlbWFuZF9tYXBwaW5nX2FyZWEodW5zaWduZWQgbG9uZyBjdXJf cGZuKQoreworfQpkaWZmIC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vc2NoZWQuYyBi L2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL3NjaGVkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMTMwNmMxYgotLS0gL2Rldi9udWxsCisrKyBiL2V4dHJhcy9taW5pLW9zL2Fy Y2gvYXJtL3NjaGVkLmMKQEAgLTAsMCArMSwzNyBAQAorI2luY2x1ZGUgPG1pbmktb3Mvc2NoZWQu aD4KKyNpbmNsdWRlIDxtaW5pLW9zL3htYWxsb2MuaD4KKwordm9pZCBhcm1fc3RhcnRfdGhyZWFk KHZvaWQpOworCisvKiBBcmNoaXRlY3R1cmUgc3BlY2lmaWMgc2V0dXAgb2YgdGhyZWFkIGNyZWF0 aW9uICovCitzdHJ1Y3QgdGhyZWFkKiBhcmNoX2NyZWF0ZV90aHJlYWQoY2hhciAqbmFtZSwgdm9p ZCAoKmZ1bmN0aW9uKSh2b2lkICopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHRocmVhZCAqdGhyZWFkOworCisgICAgdGhyZWFk ID0geG1hbGxvYyhzdHJ1Y3QgdGhyZWFkKTsKKyAgICAvKiBXZSBjYW4ndCB1c2UgbGF6eSBhbGxv Y2F0aW9uIGhlcmUgc2luY2UgdGhlIHRyYXAgaGFuZGxlciBydW5zIG9uIHRoZSBzdGFjayAqLwor ICAgIHRocmVhZC0+c3RhY2sgPSAoY2hhciAqKWFsbG9jX3BhZ2VzKFNUQUNLX1NJWkVfUEFHRV9P UkRFUik7CisgICAgdGhyZWFkLT5uYW1lID0gbmFtZTsKKyAgICBwcmludGsoIlRocmVhZCBcIiVz XCI6IHBvaW50ZXI6IDB4JWx4LCBzdGFjazogMHglbHhcbiIsIG5hbWUsIHRocmVhZCwKKyAgICAg ICAgICAgIHRocmVhZC0+c3RhY2spOworCisgICAgLyogU2F2ZSBwb2ludGVyIHRvIHRoZSB0aHJl YWQgb24gdGhlIHN0YWNrLCB1c2VkIGJ5IGN1cnJlbnQgbWFjcm8gKi8KKyAgICAqKCh1bnNpZ25l ZCBsb25nICopdGhyZWFkLT5zdGFjaykgPSAodW5zaWduZWQgbG9uZyl0aHJlYWQ7CisKKyAgICAv KiBQdXNoIHRoZSBkZXRhaWxzIHRvIHBhc3MgdG8gYXJtX3N0YXJ0X3RocmVhZCBvbnRvIHRoZSBz dGFjayAqLworICAgIGludCAqc3AgPSAoaW50ICopICh0aHJlYWQtPnN0YWNrICsgU1RBQ0tfU0la RSk7CisgICAgKigtLXNwKSA9IChpbnQpIGZ1bmN0aW9uOworICAgICooLS1zcCkgPSAoaW50KSBk YXRhOworICAgIHRocmVhZC0+c3AgPSAodW5zaWduZWQgbG9uZykgc3A7CisKKyAgICB0aHJlYWQt PmlwID0gKHVuc2lnbmVkIGxvbmcpIGFybV9zdGFydF90aHJlYWQ7CisKKyAgICByZXR1cm4gdGhy ZWFkOworfQorCit2b2lkIHJ1bl9pZGxlX3RocmVhZCh2b2lkKQoreworICAgIF9fYXNtX18gX192 b2xhdGlsZV9fICgibW92IHNwLCAlMDsgbW92IHBjLCAlMSI6OiJyIihpZGxlX3RocmVhZC0+c3Ap LCAiciIoaWRsZV90aHJlYWQtPmlwKSk7CisgICAgLyogTmV2ZXIgYXJyaXZlIGhlcmUhICovCit9 CmRpZmYgLS1naXQgYS9leHRyYXMvbWluaS1vcy9hcmNoL2FybS9zZXR1cC5jIGIvZXh0cmFzL21p bmktb3MvYXJjaC9hcm0vc2V0dXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4zNjU0Y2M1Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vc2V0 dXAuYwpAQCAtMCwwICsxLDEwMiBAQAorI2luY2x1ZGUgPG1pbmktb3Mvb3MuaD4KKyNpbmNsdWRl IDxtaW5pLW9zL2tlcm5lbC5oPgorI2luY2x1ZGUgPHhlbi94ZW4uaD4KKyNpbmNsdWRlIDx4ZW4v bWVtb3J5Lmg+CisjaW5jbHVkZSA8eGVuL2h2bS9wYXJhbXMuaD4KKyNpbmNsdWRlIDxhcm0vYXJj aF9tbS5oPgorCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgc3RhcnQtb2YtZGF5IGlu Zm8sIHN1Y2ggYXMgcGFnZXRhYmxlIGJhc2UgcG9pbnRlciwKKyAqIGFkZHJlc3Mgb2YgdGhlIHNo YXJlZF9pbmZvIHN0cnVjdHVyZSwgYW5kIHRoaW5ncyBsaWtlIHRoYXQuCisgKiBPbiB4ODYsIHRo ZSBoeXBlcnZpc29yIHBhc3NlcyBpdCB0byB1cy4gT24gQVJNLCB3ZSBmaWxsIGl0IGluIG91cnNl bHZlcy4KKyAqLwordW5pb24gc3RhcnRfaW5mb191bmlvbiBzdGFydF9pbmZvX3VuaW9uOworCisv KgorICogU2hhcmVkIHBhZ2UgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgaHlwZXJ2aXNvci4K KyAqIEV2ZW50cyBmbGFncyBnbyBoZXJlLCBmb3IgZXhhbXBsZS4KKyAqLworc2hhcmVkX2luZm9f dCAqSFlQRVJWSVNPUl9zaGFyZWRfaW5mbzsKKworZXh0ZXJuIGNoYXIgc2hhcmVkX2luZm9fcGFn ZVtQQUdFX1NJWkVdOworCitzdGF0aWMgaW50IGh2bV9nZXRfcGFyYW1ldGVyKGludCBpZHgsIHVp bnQ2NF90ICp2YWx1ZSkKK3sKKyAgICBzdHJ1Y3QgeGVuX2h2bV9wYXJhbSB4aHY7CisgICAgaW50 IHJldDsKKworICAgIHhodi5kb21pZCA9IERPTUlEX1NFTEY7CisgICAgeGh2LmluZGV4ID0gaWR4 OworICAgIHJldCA9IEhZUEVSVklTT1JfaHZtX29wKEhWTU9QX2dldF9wYXJhbSwgJnhodik7Cisg ICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgQlVHKCk7CisgICAgfQorICAgICp2YWx1ZSA9IHho di52YWx1ZTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBnZXRfY29uc29sZSh2 b2lkKQoreworICAgIHVpbnQ2NF90IHYgPSAtMTsKKworICAgIGh2bV9nZXRfcGFyYW1ldGVyKEhW TV9QQVJBTV9DT05TT0xFX0VWVENITiwgJnYpOworICAgIHN0YXJ0X2luZm8uY29uc29sZS5kb21V LmV2dGNobiA9IHY7CisKKyAgICBodm1fZ2V0X3BhcmFtZXRlcihIVk1fUEFSQU1fQ09OU09MRV9Q Rk4sICZ2KTsKKyAgICBzdGFydF9pbmZvLmNvbnNvbGUuZG9tVS5tZm4gPSB2OworCisgICAgcHJp bnRrKCJDb25zb2xlIGlzIG9uIHBvcnQgJWRcbiIsIHN0YXJ0X2luZm8uY29uc29sZS5kb21VLmV2 dGNobik7CisgICAgcHJpbnRrKCJDb25zb2xlIHJpbmcgaXMgYXQgbWZuICV4XG4iLCBzdGFydF9p bmZvLmNvbnNvbGUuZG9tVS5tZm4pOworfQorCit2b2lkIGdldF94ZW5idXModm9pZCkKK3sKKyAg ICB1aW50NjRfdCB2YWx1ZTsKKworICAgIGlmIChodm1fZ2V0X3BhcmFtZXRlcihIVk1fUEFSQU1f U1RPUkVfRVZUQ0hOLCAmdmFsdWUpKQorCUJVRygpOworCisgICAgc3RhcnRfaW5mby5zdG9yZV9l dnRjaG4gPSAoaW50KXZhbHVlOworCisgICAgaWYoaHZtX2dldF9wYXJhbWV0ZXIoSFZNX1BBUkFN X1NUT1JFX1BGTiwgJnZhbHVlKSkKKwlCVUcoKTsKKyAgICBzdGFydF9pbmZvLnN0b3JlX21mbiA9 ICh1bnNpZ25lZCBsb25nKXZhbHVlOworfQorCisvKgorICogSU5JVElBTCBDIEVOVFJZIFBPSU5U LgorICovCit2b2lkIGFyY2hfaW5pdCh2b2lkICpkdGJfcG9pbnRlcikKK3sKKyAgICBzdHJ1Y3Qg eGVuX2FkZF90b19waHlzbWFwIHhhdHA7CisKKyAgICBtZW1zZXQoJl9fYnNzX3N0YXJ0LCAwLCAm X2VuZCAtICZfX2Jzc19zdGFydCk7CisKKyAgICBwcmludGsoImR0Yl9wb2ludGVyIDogJXhcbiIs IGR0Yl9wb2ludGVyKTsKKworICAgIC8qIE1hcCBzaGFyZWRfaW5mbyBwYWdlICovCisgICAgeGF0 cC5kb21pZCA9IERPTUlEX1NFTEY7CisgICAgeGF0cC5pZHggPSAwOworICAgIHhhdHAuc3BhY2Ug PSBYRU5NQVBTUEFDRV9zaGFyZWRfaW5mbzsKKyAgICB4YXRwLmdwZm4gPSB2aXJ0X3RvX3Bmbihz aGFyZWRfaW5mb19wYWdlKTsKKyAgICBpZiAoSFlQRVJWSVNPUl9tZW1vcnlfb3AoWEVOTUVNX2Fk ZF90b19waHlzbWFwLCAmeGF0cCkgIT0gMCkKKyAgICAgICAgQlVHKCk7CisgICAgSFlQRVJWSVNP Ul9zaGFyZWRfaW5mbyA9IChzdHJ1Y3Qgc2hhcmVkX2luZm8gKilzaGFyZWRfaW5mb19wYWdlOwor CisgICAgLyogRmlsbCBpbiBzdGFydF9pbmZvICovCisgICAgZ2V0X2NvbnNvbGUoKTsKKyAgICBn ZXRfeGVuYnVzKCk7CisKKyAgICBzdGFydF9rZXJuZWwoKTsKK30KKwordm9pZAorYXJjaF9maW5p KHZvaWQpCit7CisKK30KKwordm9pZAorYXJjaF9kb19leGl0KHZvaWQpCit7Cit9CmRpZmYgLS1n aXQgYS9leHRyYXMvbWluaS1vcy9hcmNoL2FybS90aW1lLmMgYi9leHRyYXMvbWluaS1vcy9hcmNo L2FybS90aW1lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY4Njg3Mwot LS0gL2Rldi9udWxsCisrKyBiL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL3RpbWUuYwpAQCAtMCww ICsxLDIwMiBAQAorI2luY2x1ZGUgPG1pbmktb3Mvb3MuaD4KKyNpbmNsdWRlIDxtaW5pLW9zL2h5 cGVydmlzb3IuaD4KKyNpbmNsdWRlIDxtaW5pLW9zL2V2ZW50cy5oPgorI2luY2x1ZGUgPG1pbmkt b3MvdHJhcHMuaD4KKyNpbmNsdWRlIDxtaW5pLW9zL3R5cGVzLmg+CisjaW5jbHVkZSA8bWluaS1v cy90aW1lLmg+CisjaW5jbHVkZSA8bWluaS1vcy9saWIuaD4KKworLy8jZGVmaW5lIFZUSU1FUl9E RUJVRworI2lmZGVmIFZUSU1FUl9ERUJVRworI2RlZmluZSBERUJVRyhfZiwgX2EuLi4pIFwKKyAg ICBwcmludGsoIk1JTklfT1MoZmlsZT12dGltZXIuYywgbGluZT0lZCkgIiBfZiAsIF9fTElORV9f LCAjIyBfYSkKKyNlbHNlCisjZGVmaW5lIERFQlVHKF9mLCBfYS4uLikgICAgKCh2b2lkKTApCisj ZW5kaWYKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICogVGltZSBmdW5jdGlvbnMKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCitzdGF0aWMgdWludDY0X3QgY250dmN0X2F0X2luaXQ7CitzdGF0aWMgdWludDMy X3QgY291bnRlcl9mcmVxOworCisvKiBDb21wdXRlIHdpdGggOTYgYml0IGludGVybWVkaWF0ZSBy ZXN1bHQ6IChhKmIpL2MgKi8KK3VpbnQ2NF90IG11bGRpdjY0KHVpbnQ2NF90IGEsIHVpbnQzMl90 IGIsIHVpbnQzMl90IGMpCit7CisgICAgdW5pb24geworICAgICAgICB1aW50NjRfdCBsbDsKKyAg ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGxvdywgaGlnaDsKKyAgICAgICAg fSBsOworICAgIH0gdSwgcmVzOworICAgIHVpbnQ2NF90IHJsLCByaDsKKworICAgIHUubGwgPSBh OworICAgIHJsID0gKHVpbnQ2NF90KXUubC5sb3cgKiAodWludDY0X3QpYjsKKyAgICByaCA9ICh1 aW50NjRfdCl1LmwuaGlnaCAqICh1aW50NjRfdCliOworICAgIHJoICs9IChybCA+PiAzMik7Cisg ICAgcmVzLmwuaGlnaCA9IHJoIC8gYzsKKyAgICByZXMubC5sb3cgPSAoKChyaCAlIGMpIDw8IDMy KSArIChybCAmIDB4ZmZmZmZmZmYpKSAvIGM7CisgICAgcmV0dXJuIHJlcy5sbDsKK30KKworc3Rh dGljIGlubGluZSBzX3RpbWVfdCB0aWNrc190b19ucyh1aW50NjRfdCB0aWNrcykKK3sKKyAgICBy ZXR1cm4gbXVsZGl2NjQodGlja3MsIFNFQ09ORFMoMSksIGNvdW50ZXJfZnJlcSk7Cit9CisKK3N0 YXRpYyBpbmxpbmUgdWludDY0X3QgbnNfdG9fdGlja3Moc190aW1lX3QgbnMpCit7CisgICAgcmV0 dXJuIG11bGRpdjY0KG5zLCBjb3VudGVyX2ZyZXEsIFNFQ09ORFMoMSkpOworfQorCisvKiBUaGVz ZSBhcmUgcGVyaWRpY2FsbHkgdXBkYXRlZCBpbiBzaGFyZWRfaW5mbywgYW5kIHRoZW4gY29waWVk IGhlcmUuICovCitzdHJ1Y3Qgc2hhZG93X3RpbWVfaW5mbyB7CisgICAgdWludDY0X3QgdHNjX3Rp bWVzdGFtcDsgICAgIC8qIFRTQyBhdCBsYXN0IHVwZGF0ZSBvZiB0aW1lIHZhbHMuICAqLworICAg IHVpbnQ2NF90IHN5c3RlbV90aW1lc3RhbXA7ICAvKiBUaW1lLCBpbiBuYW5vc2Vjcywgc2luY2Ug Ym9vdC4gICAgKi8KKyAgICB1aW50MzJfdCB0c2NfdG9fbnNlY19tdWw7CisgICAgdWludDMyX3Qg dHNjX3RvX3VzZWNfbXVsOworICAgIGludCB0c2Nfc2hpZnQ7CisgICAgdWludDMyX3QgdmVyc2lv bjsKK307CitzdGF0aWMgc3RydWN0IHRpbWVzcGVjIHNoYWRvd190czsKK3N0YXRpYyB1aW50MzJf dCBzaGFkb3dfdHNfdmVyc2lvbjsKKworc3RhdGljIHN0cnVjdCBzaGFkb3dfdGltZV9pbmZvIHNo YWRvdzsKKworc3RhdGljIHZvaWQgZ2V0X3RpbWVfdmFsdWVzX2Zyb21feGVuKHZvaWQpCit7Cisg ICAgc3RydWN0IHZjcHVfdGltZV9pbmZvICAgICpzcmMgPSAmSFlQRVJWSVNPUl9zaGFyZWRfaW5m by0+dmNwdV9pbmZvWzBdLnRpbWU7CisKKyAgICAgZG8geworICAgICAgICBzaGFkb3cudmVyc2lv biA9IHNyYy0+dmVyc2lvbjsKKyAgICAgICAgcm1iKCk7CisgICAgICAgIHNoYWRvdy50c2NfdGlt ZXN0YW1wICAgICA9IHNyYy0+dHNjX3RpbWVzdGFtcDsKKyAgICAgICAgc2hhZG93LnN5c3RlbV90 aW1lc3RhbXAgID0gc3JjLT5zeXN0ZW1fdGltZTsKKyAgICAgICAgc2hhZG93LnRzY190b19uc2Vj X211bCAgID0gc3JjLT50c2NfdG9fc3lzdGVtX211bDsKKyAgICAgICAgc2hhZG93LnRzY19zaGlm dCAgICAgICAgID0gc3JjLT50c2Nfc2hpZnQ7CisgICAgICAgIHJtYigpOworICAgIH0KKyAgICB3 aGlsZSAoKHNyYy0+dmVyc2lvbiAmIDEpIHwgKHNoYWRvdy52ZXJzaW9uIF4gc3JjLT52ZXJzaW9u KSk7CisKKyAgICBzaGFkb3cudHNjX3RvX3VzZWNfbXVsID0gc2hhZG93LnRzY190b19uc2VjX211 bCAvIDEwMDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgcmVhZF92aXJ0dWFsX2NvdW50 KHZvaWQpCit7CisgICAgdWludDMyX3QgY19sbywgY19oaTsKKyAgICBfX2FzbV9fIF9fdm9sYXRp bGVfXygiaXNiO21ycmMgcDE1LCAxLCAlMCwgJTEsIGMxNCI6Ij1yIihjX2xvKSwgIj1yIihjX2hp KSk7CisgICAgcmV0dXJuICgoKHVpbnQ2NF90KSBjX2hpKSA8PCAzMikgKyBjX2xvOworfQorCisv KiBtb25vdG9uaWNfY2xvY2soKTogcmV0dXJucyAjIG9mIG5hbm9zZWNvbmRzIHBhc3NlZCBzaW5j ZSB0aW1lX2luaXQoKQorICogICAgICAgIE5vdGU6IFRoaXMgZnVuY3Rpb24gaXMgcmVxdWlyZWQg dG8gcmV0dXJuIGFjY3VyYXRlCisgKiAgICAgICAgdGltZSBldmVuIGluIHRoZSBhYnNlbmNlIG9m IG11bHRpcGxlIHRpbWVyIHRpY2tzLgorICovCit1aW50NjRfdCBtb25vdG9uaWNfY2xvY2sodm9p ZCkKK3sKKyAgICBzX3RpbWVfdCB0aW1lID0gdGlja3NfdG9fbnMocmVhZF92aXJ0dWFsX2NvdW50 KCkgLSBjbnR2Y3RfYXRfaW5pdCk7CisgICAgLy9wcmludGsoIm1vbm90b25pY19jbG9jazogJWxs dSAoJWxsdSlcbiIsIHRpbWUsIE5TRUNfVE9fU0VDKHRpbWUpKTsKKyAgICByZXR1cm4gdGltZTsK K30KKworc3RhdGljIHZvaWQgdXBkYXRlX3dhbGxjbG9jayh2b2lkKQoreworICAgIHNoYXJlZF9p bmZvX3QgKnMgPSBIWVBFUlZJU09SX3NoYXJlZF9pbmZvOworCisgICAgZG8geworICAgICAgICBz aGFkb3dfdHNfdmVyc2lvbiA9IHMtPndjX3ZlcnNpb247CisgICAgICAgIHJtYigpOworICAgICAg ICBzaGFkb3dfdHMudHZfc2VjICA9IHMtPndjX3NlYzsKKyAgICAgICAgc2hhZG93X3RzLnR2X25z ZWMgPSBzLT53Y19uc2VjOworICAgICAgICBybWIoKTsKKyAgICB9CisgICAgd2hpbGUgKChzLT53 Y192ZXJzaW9uICYgMSkgfCAoc2hhZG93X3RzX3ZlcnNpb24gXiBzLT53Y192ZXJzaW9uKSk7Cit9 CisKKworaW50IGdldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYsIHZvaWQgKnR6KQorewor ICAgIHVpbnQ2NF90IG5zZWMgPSBtb25vdG9uaWNfY2xvY2soKTsKKyAgICBuc2VjICs9IHNoYWRv d190cy50dl9uc2VjOworCisgICAgdHYtPnR2X3NlYyA9IHNoYWRvd190cy50dl9zZWM7CisgICAg dHYtPnR2X3NlYyArPSBOU0VDX1RPX1NFQyhuc2VjKTsKKyAgICB0di0+dHZfdXNlYyA9IE5TRUNf VE9fVVNFQyhuc2VjICUgMTAwMDAwMDAwMFVMKTsKKworICAgIHJldHVybiAwOworfQorCit2b2lk IHNldF92dGltZXJfY29tcGFyZSh1aW50NjRfdCB2YWx1ZSkgeworICAgIHVpbnQzMl90IHgsIHk7 CisKKyAgICBERUJVRygiTmV3IENvbXBhcmVWYWx1ZSA6ICVsbHhcbiIsIHZhbHVlKTsKKyAgICB4 ID0gMHhGRkZGRkZGRlVMTCAmIHZhbHVlOworICAgIHkgPSAodmFsdWUgPj4gMzIpICYgMHhGRkZG RkZGRjsKKworICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJtY3JyIHAxNSwgMywgJTAsICUxLCBj MTRcbiIKKyAgICAgICAgICAgICJpc2IiOjoiciIoeCksICJyIih5KSk7CisKKyAgICBfX2FzbV9f IF9fdm9sYXRpbGVfXygibW92ICUwLCAjMHgxXG4iCisgICAgICAgICAgICAibWNyIHAxNSwgMCwg JTAsIGMxNCwgYzMsIDFcbiIgLyogRW5hYmxlIHRpbWVyIGFuZCB1bm1hc2sgdGhlIG91dHB1dCBz aWduYWwgKi8KKyAgICAgICAgICAgICJpc2IiOiI9ciIoeCkpOworfQorCit2b2lkIHVuc2V0X3Z0 aW1lcl9jb21wYXJlKHZvaWQpIHsKKyAgICB1aW50MzJfdCB4OworCisgICAgX19hc21fXyBfX3Zv bGF0aWxlX18oIm1vdiAlMCwgIzB4MlxuIgorICAgICAgICAgICAgIm1jciBwMTUsIDAsICUwLCBj MTQsIGMzLCAxXG4iIC8qIERpc2FibGUgdGltZXIgYW5kIG1hc2sgdGhlIG91dHB1dCBzaWduYWwg Ki8KKyAgICAgICAgICAgICJpc2IiOiI9ciIoeCkpOworfQorCit2b2lkIGJsb2NrX2RvbWFpbihz X3RpbWVfdCB1bnRpbCkKK3sKKyAgICB1aW50NjRfdCB1bnRpbF9jb3VudCA9IG5zX3RvX3RpY2tz KHVudGlsKSArIGNudHZjdF9hdF9pbml0OworICAgIEFTU0VSVChpcnFzX2Rpc2FibGVkKCkpOwor ICAgIGlmIChyZWFkX3ZpcnR1YWxfY291bnQoKSA8IHVudGlsX2NvdW50KQorICAgIHsKKyAgICAg ICAgc2V0X3Z0aW1lcl9jb21wYXJlKHVudGlsX2NvdW50KTsKKyAgICAgICAgLy9jaGFyIGJ1Zltd ID0gInNsZWVwXG4iOyAodm9pZClIWVBFUlZJU09SX2NvbnNvbGVfaW8oQ09OU09MRUlPX3dyaXRl LCBzdHJsZW4oYnVmKSwgYnVmKTsKKyAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIndmaSIp OworICAgICAgICAvL2NoYXIgd2FrZVtdID0gIndha2VcbiI7ICh2b2lkKUhZUEVSVklTT1JfY29u c29sZV9pbyhDT05TT0xFSU9fd3JpdGUsIHN0cmxlbih3YWtlKSwgd2FrZSk7CisgICAgICAgIHVu c2V0X3Z0aW1lcl9jb21wYXJlKCk7CisKKyAgICAgICAgLyogR2l2ZSB0aGUgSVJRIGhhbmRsZXIg YSBjaGFuY2UgdG8gaGFuZGxlIHdoYXRldmVyIHdva2UgdXMgdXAuICovCisgICAgICAgIGxvY2Fs X2lycV9lbmFibGUoKTsKKyAgICAgICAgbG9jYWxfaXJxX2Rpc2FibGUoKTsKKyAgICB9Cit9CisK K3ZvaWQgdGltZXJfaGFuZGxlcihldnRjaG5fcG9ydF90IHBvcnQsIHN0cnVjdCBwdF9yZWdzICpy ZWdzLCB2b2lkICppZ24pCit7CisgICAgREVCVUcoIlRpbWVyIGtpY2tcbiIpOworICAgIGdldF90 aW1lX3ZhbHVlc19mcm9tX3hlbigpOworICAgIHVwZGF0ZV93YWxsY2xvY2soKTsKK30KKworZXZ0 Y2huX3BvcnRfdCB0aW1lcl9wb3J0ID0gLTE7CisKK3ZvaWQgaW5pdF90aW1lKHZvaWQpCit7Cisg ICAgcHJpbnRrKCJJbml0aWFsaXNpbmcgdGltZXIgaW50ZXJmYWNlXG4iKTsKKworICAgIF9fYXNt X18gX192b2xhdGlsZV9fKCJtcmMgcDE1LCAwLCAlMCwgYzE0LCBjMCwgMCI6Ij1yIihjb3VudGVy X2ZyZXEpKTsKKyAgICBjbnR2Y3RfYXRfaW5pdCA9IHJlYWRfdmlydHVhbF9jb3VudCgpOworICAg IHByaW50aygiVmlydHVhbCBDb3VudCByZWdpc3RlciBpcyAlbGx4LCBmcmVxID0gJWQgSHpcbiIs IGNudHZjdF9hdF9pbml0LCBjb3VudGVyX2ZyZXEpOworCisgICAgdGltZXJfcG9ydCA9IGJpbmRf dmlycShWSVJRX1RJTUVSLCAoZXZ0Y2huX2hhbmRsZXJfdCl0aW1lcl9oYW5kbGVyLCAwKTsKKyAg ICBpZih0aW1lcl9wb3J0ID09IC0xKQorICAgICAgICBCVUcoKTsKKyAgICB1bm1hc2tfZXZ0Y2hu KHRpbWVyX3BvcnQpOworfQorCit2b2lkIGZpbmlfdGltZSh2b2lkKQoreworICAgIGlmKHRpbWVy X3BvcnQgIT0gLTEpCisgICAgeworICAgICAgICBtYXNrX2V2dGNobih0aW1lcl9wb3J0KTsKKyAg ICAgICAgdW5iaW5kX2V2dGNobih0aW1lcl9wb3J0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9l eHRyYXMvbWluaS1vcy9kcml2ZXJzL2dpYy5jIGIvZXh0cmFzL21pbmktb3MvZHJpdmVycy9naWMu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTMxZjAxCi0tLSAvZGV2L251 bGwKKysrIGIvZXh0cmFzL21pbmktb3MvZHJpdmVycy9naWMuYwpAQCAtMCwwICsxLDE4MCBAQAor Ly8gQVJNIEdJQyBpbXBsZW1lbnRhdGlvbgorCisjaW5jbHVkZSA8bWluaS1vcy9vcy5oPgorI2lu Y2x1ZGUgPG1pbmktb3MvaHlwZXJ2aXNvci5oPgorCisvLyNkZWZpbmUgVkdJQ19ERUJVRworI2lm ZGVmIFZHSUNfREVCVUcKKyNkZWZpbmUgREVCVUcoX2YsIF9hLi4uKSBcCisgICAgREVCVUcoIk1J TklfT1MoZmlsZT12Z2ljLmMsIGxpbmU9JWQpICIgX2YgLCBfX0xJTkVfXywgIyMgX2EpCisjZWxz ZQorI2RlZmluZSBERUJVRyhfZiwgX2EuLi4pICAgICgodm9pZCkwKQorI2VuZGlmCisKK2V4dGVy biB1bnNpZ25lZCBsb25nIElSUV9oYW5kbGVyOworCitzdHJ1Y3QgZ2ljIHsKKyAgICB2b2xhdGls ZSBjaGFyICpnaWNkX2Jhc2U7CisgICAgdm9sYXRpbGUgY2hhciAqZ2ljY19iYXNlOworfTsKKwor c3RhdGljIHN0cnVjdCBnaWMgZ2ljOworCisvLyBEaXN0cmlidXRvciBJbnRlcmZhY2UKKyNkZWZp bmUgR0lDRF9DVExSICAgICAgICAweDAKKyNkZWZpbmUgR0lDRF9JU0VOQUJMRVIgICAgMHgxMDAK KyNkZWZpbmUgR0lDRF9QUklPUklUWSAgICAweDQwMAorI2RlZmluZSBHSUNEX0lUQVJHRVRTUiAg ICAweDgwMAorI2RlZmluZSBHSUNEX0lDRkdSICAgICAgICAweEMwMAorCisvLyBDUFUgSW50ZXJm YWNlCisjZGVmaW5lIEdJQ0NfQ1RMUiAgICAweDAKKyNkZWZpbmUgR0lDQ19QTVIgICAgMHg0Cisj ZGVmaW5lIEdJQ0NfSUFSICAgIDB4YworI2RlZmluZSBHSUNDX0VPSVIgICAgMHgxMAorI2RlZmlu ZSBHSUNDX0hQUElSICAgIDB4MTgKKworI2RlZmluZSBnaWNkKGdpYywgb2Zmc2V0KSAoKGdpYykt PmdpY2RfYmFzZSArIChvZmZzZXQpKQorI2RlZmluZSBnaWNjKGdpYywgb2Zmc2V0KSAoKGdpYykt PmdpY2NfYmFzZSArIChvZmZzZXQpKQorCisjZGVmaW5lIFJFRyhhZGRyKSAoKHVpbnQzMl90ICop KGFkZHIpKQorCitzdGF0aWMgaW5saW5lIHVpbnQzMl90IFJFR19SRUFEMzIodm9sYXRpbGUgdWlu dDMyX3QgKmFkZHIpCit7CisgICAgdWludDMyX3QgdmFsdWU7CisgICAgX19hc21fXyBfX3ZvbGF0 aWxlX18oImxkciAlMCwgWyUxXSI6Ij0mciIodmFsdWUpOiJyIihhZGRyKSk7CisgICAgcm1iKCk7 CisgICAgcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgUkVHX1dSSVRFMzIo dm9sYXRpbGUgdWludDMyX3QgKmFkZHIsIHVuc2lnbmVkIGludCB2YWx1ZSkKK3sKKyAgICBfX2Fz bV9fIF9fdm9sYXRpbGVfXygic3RyICUwLCBbJTFdIjo6InIiKHZhbHVlKSwgInIiKGFkZHIpKTsK KyAgICB3bWIoKTsKK30KKworc3RhdGljIHZvaWQgZ2ljX3NldF9wcmlvcml0eShzdHJ1Y3QgZ2lj ICpnaWMsIHVuc2lnbmVkIGNoYXIgaXJxX251bWJlciwgdW5zaWduZWQgY2hhciBwcmlvcml0eSkK K3sKKyAgICB1aW50MzJfdCB2YWx1ZTsKKyAgICB2YWx1ZSA9IFJFR19SRUFEMzIoUkVHKGdpY2Qo Z2ljLCBHSUNEX1BSSU9SSVRZKSkgKyBpcnFfbnVtYmVyKTsKKyAgICB2YWx1ZSAmPSB+KDB4ZmYg PDwgKDggKiAoaXJxX251bWJlciAmIDB4MykpKTsgLy8gc2V0IHByaW9yaXR5IHRvICcwJworICAg IHZhbHVlIHw9IHByaW9yaXR5IDw8ICg4ICogKGlycV9udW1iZXIgJiAweDMpKTsgLy8gYWRkIG91 ciBwcmlvcml0eQorICAgIFJFR19XUklURTMyKFJFRyhnaWNkKGdpYywgR0lDRF9QUklPUklUWSkp ICsgaXJxX251bWJlciwgdmFsdWUpOworfQorCitzdGF0aWMgdm9pZCBnaWNfcm91dGVfaW50ZXJy dXB0KHN0cnVjdCBnaWMgKmdpYywgdW5zaWduZWQgY2hhciBpcnFfbnVtYmVyLCB1bnNpZ25lZCBj aGFyIGNwdV9zZXQpCit7CisgICAgdWludDMyX3QgdmFsdWU7CisgICAgdmFsdWUgPSBSRUdfUkVB RDMyKFJFRyhnaWNkKGdpYywgR0lDRF9JVEFSR0VUU1IpKSArIGlycV9udW1iZXIpOworICAgIHZh bHVlICY9IH4oMHhmZiA8PCAoOCAqIChpcnFfbnVtYmVyICYgMHgzKSkpOyAvLyBzZXQgcHJpb3Jp dHkgdG8gJzAnCisgICAgdmFsdWUgfD0gY3B1X3NldCA8PCAoOCAqIChpcnFfbnVtYmVyICYgMHgz KSk7IC8vIGFkZCBvdXIgcHJpb3JpdHkKKyAgICBSRUdfV1JJVEUzMihSRUcoZ2ljZChnaWMsIEdJ Q0RfSVRBUkdFVFNSKSkgKyBpcnFfbnVtYmVyLCB2YWx1ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGdp Y19lbmFibGVfaW50ZXJydXB0KHN0cnVjdCBnaWMgKmdpYywgdW5zaWduZWQgY2hhciBpcnFfbnVt YmVyLAorICAgICAgICB1bnNpZ25lZCBjaGFyIGNwdV9zZXQsIHVuc2lnbmVkIGNoYXIgbGV2ZWxf c2Vuc2l0aXZlLCB1bnNpZ25lZCBjaGFyIHBwaSkKK3sKKyAgICB2b2lkICpzZXRfZW5hYmxlX3Jl ZzsKKyAgICB2b2lkICpjZmdfcmVnOworCisgICAgLy8gc2V0IHByaW9yaXR5CisgICAgZ2ljX3Nl dF9wcmlvcml0eShnaWMsIGlycV9udW1iZXIsIDB4MCk7CisKKyAgICAvLyBzZXQgdGFyZ2V0IGNw dXMgZm9yIHRoaXMgaW50ZXJydXB0CisgICAgZ2ljX3JvdXRlX2ludGVycnVwdChnaWMsIGlycV9u dW1iZXIsIGNwdV9zZXQpOworCisgICAgLy8gc2V0IGxldmVsL2VkZ2UgdHJpZ2dlcmVkCisgICAg Y2ZnX3JlZyA9ICh2b2lkICopZ2ljZChnaWMsIEdJQ0RfSUNGR1IpOworICAgIGxldmVsX3NlbnNp dGl2ZSA/IGNsZWFyX2JpdCgoaXJxX251bWJlciAqIDIpICsgMSwgY2ZnX3JlZykgOiBzZXRfYml0 KChpcnFfbnVtYmVyICogMikgKyAxLCBjZmdfcmVnKTsKKyAgICBpZihwcGkpCisgICAgICAgIGNs ZWFyX2JpdCgoaXJxX251bWJlciAqIDIpLCBjZmdfcmVnKTsKKworICAgIHdtYigpOworCisgICAg Ly8gZW5hYmxlIGZvcndhcmRpbmcgaW50ZXJydXB0IGZyb20gZGlzdHJpYnV0b3IgdG8gY3B1IGlu dGVyZmFjZQorICAgIHNldF9lbmFibGVfcmVnID0gKHZvaWQgKilnaWNkKGdpYywgR0lDRF9JU0VO QUJMRVIpOworICAgIHNldF9iaXQoaXJxX251bWJlciwgc2V0X2VuYWJsZV9yZWcpOworICAgIHdt YigpOworfQorCitzdGF0aWMgdm9pZCBnaWNfZW5hYmxlX2ludGVycnVwdHMoc3RydWN0IGdpYyAq Z2ljKQoreworICAgIC8vIEdsb2JhbCBlbmFibGUgZm9yd2FyZGluZyBpbnRlcnJ1cHRzIGZyb20g ZGlzdHJpYnV0b3IgdG8gY3B1IGludGVyZmFjZQorICAgIFJFR19XUklURTMyKFJFRyhnaWNkKGdp YywgR0lDRF9DVExSKSksIDB4MDAwMDAwMDEpOworCisgICAgLy8gR2xvYmFsIGVuYWJsZSBzaWdu YWxsaW5nIG9mIGludGVycnVwdCBmcm9tIHRoZSBjcHUgaW50ZXJmYWNlCisgICAgUkVHX1dSSVRF MzIoUkVHKGdpY2MoZ2ljLCBHSUNDX0NUTFIpKSwgMHgwMDAwMDAwMSk7Cit9CisKK3N0YXRpYyB2 b2lkIGdpY19kaXNhYmxlX2ludGVycnVwdHMoc3RydWN0IGdpYyAqZ2ljKQoreworICAgIC8vIEds b2JhbCBkaXNhYmxlIHNpZ25hbGxpbmcgb2YgaW50ZXJydXB0IGZyb20gdGhlIGNwdSBpbnRlcmZh Y2UKKyAgICBSRUdfV1JJVEUzMihSRUcoZ2ljYyhnaWMsIEdJQ0NfQ1RMUikpLCAweDAwMDAwMDAw KTsKKworICAgIC8vIEdsb2JhbCBkaXNhYmxlIGZvcndhcmRpbmcgaW50ZXJydXB0cyBmcm9tIGRp c3RyaWJ1dG9yIHRvIGNwdSBpbnRlcmZhY2UKKyAgICBSRUdfV1JJVEUzMihSRUcoZ2ljZChnaWMs IEdJQ0RfQ1RMUikpLCAweDAwMDAwMDAwKTsKK30KKworc3RhdGljIHZvaWQgZ2ljX2NwdV9zZXRf cHJpb3JpdHkoc3RydWN0IGdpYyAqZ2ljLCBjaGFyIHByaW9yaXR5KQoreworICAgIFJFR19XUklU RTMyKFJFRyhnaWNjKGdpYywgR0lDQ19QTVIpKSwgcHJpb3JpdHkgJiAweDAwMDAwMEZGKTsKK30K Kworc3RhdGljIHZvaWQgZ2ljX3NldF9oYW5kbGVyKHVuc2lnbmVkIGxvbmcgZ2ljX2hhbmRsZXIp IHsKKyAgICBJUlFfaGFuZGxlciA9IGdpY19oYW5kbGVyOworfQorCitzdGF0aWMgdW5zaWduZWQg bG9uZyBnaWNfcmVhZGlhcihzdHJ1Y3QgZ2ljICpnaWMpIHsKKyAgICByZXR1cm4gUkVHX1JFQUQz MihSRUcoZ2ljYyhnaWMsIEdJQ0NfSUFSKSkpICYgMHgwMDAwMDNGRjsgLy8gSW50ZXJydXB0IElE Cit9CisKK3N0YXRpYyB2b2lkIGdpY19lb2lyKHN0cnVjdCBnaWMgKmdpYywgdWludDMyX3QgaXJx KSB7CisgICAgUkVHX1dSSVRFMzIoUkVHKGdpY2MoZ2ljLCBHSUNDX0VPSVIpKSwgaXJxICYgMHgw MDAwMDNGRik7Cit9CisKKy8vRklYTUUgR2V0IGV2ZW50X2lycSBmcm9tIGR0CisjZGVmaW5lIEVW RU5UU19JUlEgMzEKKyNkZWZpbmUgVklSVFVBTFRJTUVSX0lSUSAyNworCisvL0ZJWE1FIE1vdmUg dG8gYSBoZWFkZXIgZmlsZQordm9pZCB0aW1lcl9oYW5kbGVyKGV2dGNobl9wb3J0X3QgcG9ydCwg c3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHZvaWQgKmlnbik7CisKK3N0YXRpYyB2b2lkIGdpY19oYW5k bGVyKHZvaWQpIHsKKyAgICB1bnNpZ25lZCBpbnQgaXJxID0gZ2ljX3JlYWRpYXIoJmdpYyk7CisK KyAgICBERUJVRygiSVJRIHJlY2VpdmVkIDogJWlcbiIsIGlycSk7CisgICAgc3dpdGNoKGlycSkg eworICAgIGNhc2UgRVZFTlRTX0lSUToKKyAgICAgICAgZG9faHlwZXJ2aXNvcl9jYWxsYmFjayhO VUxMKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWSVJUVUFMVElNRVJfSVJROgorICAgICAg ICB0aW1lcl9oYW5kbGVyKDAsIE5VTEwsIDApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0 OgorICAgICAgICBERUJVRygiVW5oYW5kbGVkIGlycVxuIik7CisgICAgICAgIGJyZWFrOworICAg IH0KKworICAgIERFQlVHKCJFSVJRXG4iKTsKKworICAgIGdpY19lb2lyKCZnaWMsIGlycSk7Cit9 CisKK3ZvaWQgZ2ljX2luaXQodm9pZCkgeworICAgIC8vIEZJWE1FIEdldCBmcm9tIGR0IQorICAg IGdpYy5naWNkX2Jhc2UgPSAoY2hhciAqKTB4MmMwMDEwMDBVTEw7CisgICAgZ2ljLmdpY2NfYmFz ZSA9IChjaGFyICopMHgyYzAwMjAwMFVMTDsKKyAgICB3bWIoKTsKKworICAgIGdpY19zZXRfaGFu ZGxlcigodW5zaWduZWQgbG9uZylnaWNfaGFuZGxlcik7CisKKyAgICBnaWNfZGlzYWJsZV9pbnRl cnJ1cHRzKCZnaWMpOworICAgIGdpY19jcHVfc2V0X3ByaW9yaXR5KCZnaWMsIDB4ZmYpOworCisJ LyogTXVzdCBjYWxsIGdpY19lbmFibGVfaW50ZXJydXB0cyBiZWZvcmUgZW5hYmxpbmcgaW5kaXZp ZHVhbCBpbnRlcnJ1cHRzLCBvdGhlcndpc2Ugb3VyIElSUSBoYW5kbGVyCisJICogZ2V0cyBjYWxs ZWQgZW5kbGVzc2x5IHdpdGggc3B1cmlvdXMgaW50ZXJydXB0cy4gKi8KKwlnaWNfZW5hYmxlX2lu dGVycnVwdHMoJmdpYyk7CisKKyAgICBnaWNfZW5hYmxlX2ludGVycnVwdCgmZ2ljLCBFVkVOVFNf SVJRIC8qIGludGVycnVwdCBudW1iZXIgKi8sIDB4MSAvKmNwdV9zZXQqLywgMSAvKmxldmVsX3Nl bnNpdGl2ZSovLCAwIC8qIHBwaSAqLyk7CisgICAgZ2ljX2VuYWJsZV9pbnRlcnJ1cHQoJmdpYywg VklSVFVBTFRJTUVSX0lSUSAvKiBpbnRlcnJ1cHQgbnVtYmVyICovLCAweDEgLypjcHVfc2V0Ki8s IDEgLypsZXZlbF9zZW5zaXRpdmUqLywgMSAvKiBwcGkgKi8pOworfQpkaWZmIC0tZ2l0IGEvZXh0 cmFzL21pbmktb3MvZXZlbnRzLmMgYi9leHRyYXMvbWluaS1vcy9ldmVudHMuYwppbmRleCBkNjA2 MzBiLi43OWJhMjg2IDEwMDY0NAotLS0gYS9leHRyYXMvbWluaS1vcy9ldmVudHMuYworKysgYi9l eHRyYXMvbWluaS1vcy9ldmVudHMuYwpAQCAtMjQ2LDcgKzI0Niw4IEBAIGludCBldnRjaG5fYmlu ZF9pbnRlcmRvbWFpbihkb21pZF90IHBhbCwgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCwKIAog aW50IGV2dGNobl9nZXRfcGVlcmNvbnRleHQoZXZ0Y2huX3BvcnRfdCBsb2NhbF9wb3J0LCBjaGFy ICpjdHgsIGludCBzaXplKQogewotICAgIGludCByYzsKKyAgICBpbnQgcmMgPSAwOworI2lmbmRl ZiBfX2FybV9fCQkJLyogVE9ETyAqLwogICAgIHVpbnQzMl90IHNpZDsKICAgICBzdHJ1Y3QgeGVu X2ZsYXNrX29wIG9wOwogICAgIG9wLmNtZCA9IEZMQVNLX0dFVF9QRUVSX1NJRDsKQEAgLTI2MSw2 ICsyNjIsNyBAQCBpbnQgZXZ0Y2huX2dldF9wZWVyY29udGV4dChldnRjaG5fcG9ydF90IGxvY2Fs X3BvcnQsIGNoYXIgKmN0eCwgaW50IHNpemUpCiAgICAgb3AudS5zaWRfY29udGV4dC5zaXplID0g c2l6ZTsKICAgICBzZXRfeGVuX2d1ZXN0X2hhbmRsZShvcC51LnNpZF9jb250ZXh0LmNvbnRleHQs IGN0eCk7CiAgICAgcmMgPSBfaHlwZXJjYWxsMShpbnQsIHhzbV9vcCwgJm9wKTsKKyNlbmRpZgog ICAgIHJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvaHlwZXJ2aXNv ci5jIGIvZXh0cmFzL21pbmktb3MvaHlwZXJ2aXNvci5jCmluZGV4IGI0Njg4YTAuLjJhMTJlYzQg MTAwNjQ0Ci0tLSBhL2V4dHJhcy9taW5pLW9zL2h5cGVydmlzb3IuYworKysgYi9leHRyYXMvbWlu aS1vcy9oeXBlcnZpc29yLmMKQEAgLTczLDE4ICs3MywyNiBAQCB2b2lkIGRvX2h5cGVydmlzb3Jf Y2FsbGJhY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAKIHZvaWQgZm9yY2VfZXZ0Y2huX2NhbGxi YWNrKHZvaWQpCiB7CisjaWZkZWYgWEVOX0hBVkVfUFZfVVBDQUxMX01BU0sKICAgICBpbnQgc2F2 ZTsKKyNlbmRpZgogICAgIHZjcHVfaW5mb190ICp2Y3B1OwogICAgIHZjcHUgPSAmSFlQRVJWSVNP Ul9zaGFyZWRfaW5mby0+dmNwdV9pbmZvW3NtcF9wcm9jZXNzb3JfaWQoKV07CisjaWZkZWYgWEVO X0hBVkVfUFZfVVBDQUxMX01BU0sKICAgICBzYXZlID0gdmNwdS0+ZXZ0Y2huX3VwY2FsbF9tYXNr OworI2VuZGlmCiAKICAgICB3aGlsZSAodmNwdS0+ZXZ0Y2huX3VwY2FsbF9wZW5kaW5nKSB7Cisj aWZkZWYgWEVOX0hBVkVfUFZfVVBDQUxMX01BU0sKICAgICAgICAgdmNwdS0+ZXZ0Y2huX3VwY2Fs bF9tYXNrID0gMTsKKyNlbmRpZgogICAgICAgICBiYXJyaWVyKCk7CiAgICAgICAgIGRvX2h5cGVy dmlzb3JfY2FsbGJhY2soTlVMTCk7CiAgICAgICAgIGJhcnJpZXIoKTsKKyNpZmRlZiBYRU5fSEFW RV9QVl9VUENBTExfTUFTSwogICAgICAgICB2Y3B1LT5ldnRjaG5fdXBjYWxsX21hc2sgPSBzYXZl OwogICAgICAgICBiYXJyaWVyKCk7CisjZW5kaWYKICAgICB9OwogfQogCkBAIC0xMTAsNyArMTE4 LDkgQEAgaW5saW5lIHZvaWQgdW5tYXNrX2V2dGNobih1aW50MzJfdCBwb3J0KQogICAgICAgICAg ICAgICAmdmNwdV9pbmZvLT5ldnRjaG5fcGVuZGluZ19zZWwpICkKICAgICB7CiAgICAgICAgIHZj cHVfaW5mby0+ZXZ0Y2huX3VwY2FsbF9wZW5kaW5nID0gMTsKKyNpZmRlZiBYRU5fSEFWRV9QVl9V UENBTExfTUFTSwogICAgICAgICBpZiAoICF2Y3B1X2luZm8tPmV2dGNobl91cGNhbGxfbWFzayAp CisjZW5kaWYKICAgICAgICAgICAgIGZvcmNlX2V2dGNobl9jYWxsYmFjaygpOwogICAgIH0KIH0K ZGlmZiAtLWdpdCBhL2V4dHJhcy9taW5pLW9zL2luY2x1ZGUvYXJtL2FyY2hfbGltaXRzLmggYi9l eHRyYXMvbWluaS1vcy9pbmNsdWRlL2FybS9hcmNoX2xpbWl0cy5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmJhZTk5ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9leHRyYXMvbWlu aS1vcy9pbmNsdWRlL2FybS9hcmNoX2xpbWl0cy5oCkBAIC0wLDAgKzEsOSBAQAorI2lmbmRlZiBf X0FSQ0hfTElNSVRTX0hfXworI2RlZmluZSBfX0FSQ0hfTElNSVRTX0hfXworCisjaW5jbHVkZSA8 bW0uaD4KKworI2RlZmluZSBfX1NUQUNLX1NJWkVfUEFHRV9PUkRFUiAgMgorI2RlZmluZSBfX1NU QUNLX1NJWkUgKDQgKiBQQUdFX1NJWkUpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZXh0cmFzL21p bmktb3MvaW5jbHVkZS9hcm0vYXJjaF9tbS5oIGIvZXh0cmFzL21pbmktb3MvaW5jbHVkZS9hcm0v YXJjaF9tbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMzk1M2IKLS0t IC9kZXYvbnVsbAorKysgYi9leHRyYXMvbWluaS1vcy9pbmNsdWRlL2FybS9hcmNoX21tLmgKQEAg LTAsMCArMSwzNyBAQAorI2lmbmRlZiBfQVJDSF9NTV9IXworI2RlZmluZSBfQVJDSF9NTV9IXwor CitleHRlcm4gY2hhciBfdGV4dCwgX2V0ZXh0LCBfZXJvZGF0YSwgX2VkYXRhLCBfZW5kLCBfX2Jz c19zdGFydDsKK2V4dGVybiBjaGFyIHN0YWNrW107CisKKyNkZWZpbmUgUEFHRV9TSElGVCAgICAg ICAgMTIKKyNkZWZpbmUgUEFHRV9TSVpFICAgICAgICAoMSA8PCBQQUdFX1NISUZUKQorI2RlZmlu ZSBQQUdFX01BU0sgICAgICAgKH4oUEFHRV9TSVpFLTEpKQorCisjZGVmaW5lIEwxX1BBR0VUQUJM RV9TSElGVCAgICAgIDEyCisKKyNpZiAwCisjZGVmaW5lIFZJUlRfU1RBUlQgICAgICAgICAgICAg ICAgICgodW5zaWduZWQgbG9uZykmX3RleHQpCisjZWxzZQorI2RlZmluZSBWSVJUX1NUQVJUICAg ICAgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpMCkKKyNlbmRpZgorCisjZGVmaW5lIHRvX3Bo eXMoeCkgICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZykoeCktVklSVF9TVEFSVCkKKyNk ZWZpbmUgdG9fdmlydCh4KSAgICAgICAgICAgICAgICAgKCh2b2lkICopKCh1bnNpZ25lZCBsb25n KSh4KStWSVJUX1NUQVJUKSkKKworI2RlZmluZSBQRk5fVVAoeCkgICAgKCgoeCkgKyBQQUdFX1NJ WkUtMSkgPj4gTDFfUEFHRVRBQkxFX1NISUZUKQorI2RlZmluZSBQRk5fRE9XTih4KSAgICAoKHgp ID4+IEwxX1BBR0VUQUJMRV9TSElGVCkKKyNkZWZpbmUgUEZOX1BIWVMoeCkgICAgKCh1aW50NjRf dCkoeCkgPDwgTDFfUEFHRVRBQkxFX1NISUZUKQorI2RlZmluZSBQSFlTX1BGTih4KSAgICAoKHgp ID4+IEwxX1BBR0VUQUJMRV9TSElGVCkKKworI2RlZmluZSB2aXJ0X3RvX3BmbihfdmlydCkgICAg ICAgICAoUEZOX0RPV04odG9fcGh5cyhfdmlydCkpKQorI2RlZmluZSB2aXJ0X3RvX21mbihfdmly dCkgICAgICAgICAoMCkKKyNkZWZpbmUgbWFjaF90b192aXJ0KF9tYWNoKSAgICAgICAgKDApCisj ZGVmaW5lIHZpcnRfdG9fbWFjaChfdmlydCkgICAgICAgICgwKQorI2RlZmluZSBtZm5fdG9fdmly dChfbWZuKSAgICAgICAgICAodG9fdmlydChQRk5fUEhZUyhfbWZuKSkpCisjZGVmaW5lIHBmbl90 b192aXJ0KF9wZm4pICAgICAgICAgICh0b192aXJ0KFBGTl9QSFlTKF9wZm4pKSkKKworLy8gRklY TUUKKyNkZWZpbmUgbWFwX2ZyYW1lcyhmLCBuKSAoTlVMTCkKKworI2VuZGlmCmRpZmYgLS1naXQg YS9leHRyYXMvbWluaS1vcy9pbmNsdWRlL2FybS9hcmNoX3NjaGVkLmggYi9leHRyYXMvbWluaS1v cy9pbmNsdWRlL2FybS9hcmNoX3NjaGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZTIzMDdlZAotLS0gL2Rldi9udWxsCisrKyBiL2V4dHJhcy9taW5pLW9zL2luY2x1ZGUv YXJtL2FyY2hfc2NoZWQuaApAQCAtMCwwICsxLDIyIEBACisKKyNpZm5kZWYgX19BUkNIX1NDSEVE X0hfXworI2RlZmluZSBfX0FSQ0hfU0NIRURfSF9fCisKKyNpbmNsdWRlICJhcmNoX2xpbWl0cy5o IgorCitzdGF0aWMgaW5saW5lIHN0cnVjdCB0aHJlYWQqIGdldF9jdXJyZW50KHZvaWQpCit7Cisg ICBzdHJ1Y3QgdGhyZWFkICoqY3VycmVudDsKKyAgIHVuc2lnbmVkIGxvbmcgc3A7CisgICBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoIm1vdiAlMCwgc3AiOiI9ciIoc3ApKTsKKyAgICBjdXJyZW50ID0g KHZvaWQgKikodW5zaWduZWQgbG9uZykoc3AgJiB+KF9fU1RBQ0tfU0laRS0xKSk7CisgICAgcmV0 dXJuICpjdXJyZW50OworfQorCisKK2V4dGVybiB2b2lkIF9fYXJjaF9zd2l0Y2hfdGhyZWFkcyh1 bnNpZ25lZCBsb25nICpwcmV2Y3R4LCB1bnNpZ25lZCBsb25nICpuZXh0Y3R4KTsKKworI2RlZmlu ZSBhcmNoX3N3aXRjaF90aHJlYWRzKHByZXYsbmV4dCkgX19hcmNoX3N3aXRjaF90aHJlYWRzKCYo cHJldiktPnNwLCAmKG5leHQpLT5zcCkKKworCisjZW5kaWYgLyogX19BUkNIX1NDSEVEX0hfXyAq LwpkaWZmIC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvaW5jbHVkZS9hcm0vYXJjaF9zcGlubG9jay5o IGIvZXh0cmFzL21pbmktb3MvaW5jbHVkZS9hcm0vYXJjaF9zcGlubG9jay5oCm5ldyBmaWxlIG1v ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ1N2YxNTAKLS0tIC9kZXYvbnVsbAorKysgYi9leHRy YXMvbWluaS1vcy9pbmNsdWRlL2FybS9hcmNoX3NwaW5sb2NrLmgKQEAgLTAsMCArMSw0OSBAQAor CisKKyNpZm5kZWYgX19BUkNIX0FTTV9TUElOTE9DS19ICisjZGVmaW5lIF9fQVJDSF9BU01fU1BJ TkxPQ0tfSAorCisjaW5jbHVkZSAib3MuaCIKKworCisjZGVmaW5lIEFSQ0hfU1BJTl9MT0NLX1VO TE9DS0VEIHsgMSB9CisKKy8qCisgKiBTaW1wbGUgc3BpbiBsb2NrIG9wZXJhdGlvbnMuICBUaGVy ZSBhcmUgdHdvIHZhcmlhbnRzLCBvbmUgY2xlYXJzIElSUSdzCisgKiBvbiB0aGUgbG9jYWwgcHJv Y2Vzc29yLCBvbmUgZG9lcyBub3QuCisgKgorICogV2UgbWFrZSBubyBmYWlybmVzcyBhc3N1bXB0 aW9ucy4gVGhleSBoYXZlIGEgY29zdC4KKyAqLworCisjZGVmaW5lIGFyY2hfc3Bpbl9pc19sb2Nr ZWQoeCkgICAgKCoodm9sYXRpbGUgc2lnbmVkIGNoYXIgKikoJih4KS0+c2xvY2spIDw9IDApCisj ZGVmaW5lIGFyY2hfc3Bpbl91bmxvY2tfd2FpdCh4KSBkbyB7IGJhcnJpZXIoKTsgfSB3aGlsZShz cGluX2lzX2xvY2tlZCh4KSkKKworLyoKKyAqIFRoaXMgd29ya3MuIERlc3BpdGUgYWxsIHRoZSBj b25mdXNpb24uCisgKiAoZXhjZXB0IG9uIFBQcm8gU01QIG9yIGlmIHdlIGFyZSB1c2luZyBPT1NU T1JFKQorICogKFBQcm8gZXJyYXRhIDY2LCA5MikKKyAqLworCitzdGF0aWMgaW5saW5lIHZvaWQg X3Jhd19zcGluX3VubG9jayhzcGlubG9ja190ICpsb2NrKQoreworICAgIHhjaGcoJmxvY2stPnNs b2NrLCAxKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgX3Jhd19zcGluX3RyeWxvY2soc3Bpbmxv Y2tfdCAqbG9jaykKK3sKKyAgICByZXR1cm4geGNoZygmbG9jay0+c2xvY2ssIDApICE9IDAgPyAx IDogMDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9yYXdfc3Bpbl9sb2NrKHNwaW5sb2NrX3Qg KmxvY2spCit7CisgICAgdm9sYXRpbGUgaW50IHdhc19sb2NrZWQ7CisgICAgZG8geworICAgICAg ICB3YXNfbG9ja2VkID0geGNoZygmbG9jay0+c2xvY2ssIDApID09IDAgPyAxIDogMDsKKyAgICB9 IHdoaWxlKHdhc19sb2NrZWQpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX3Jhd19zcGluX2xv Y2tfZmxhZ3MgKHNwaW5sb2NrX3QgKmxvY2ssIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCit7Cit9CisK KyNlbmRpZgpkaWZmIC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvaW5jbHVkZS9hcm0vaHlwZXJjYWxs LWFybTMyLmggYi9leHRyYXMvbWluaS1vcy9pbmNsdWRlL2FybS9oeXBlcmNhbGwtYXJtMzIuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmMxYzAzCi0tLSAvZGV2L251bGwK KysrIGIvZXh0cmFzL21pbmktb3MvaW5jbHVkZS9hcm0vaHlwZXJjYWxsLWFybTMyLmgKQEAgLTAs MCArMSwxNzMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGh5cGVyY2FsbC1hcm0zMi5o CisgKiAKKyAqIENvcGllZCBmcm9tIFhlbkxpbnV4LgorICogCisgKiBDb3B5cmlnaHQgKGMpIDIw MDItMjAwNCwgSyBBIEZyYXNlcgorICogCisgKiA2NC1iaXQgdXBkYXRlczoKKyAqICAgQmVuamFt aW4gTGl1IDxiZW5qYW1pbi5saXVAaW50ZWwuY29tPgorICogICBKdW4gTmFrYWppbWEgPGp1bi5u YWthamltYUBpbnRlbC5jb20+CisgKiAKKyAqIFRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQg c2VwYXJhdGVseSBmcm9tIHRoZSBMaW51eCBrZXJuZWwsIG9yCisgKiBpbmNvcnBvcmF0ZWQgaW50 byBvdGhlciBzb2Z0d2FyZSBwYWNrYWdlcywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGxpY2Vu c2U6CisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc291cmNlIGZpbGUg KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAorICogcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwKKyAqIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLAorICogYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0bworICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICogCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl ZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh cmUuCisgKiAKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P IEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAq IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVm IF9fSFlQRVJDQUxMX0FSTV9IX18KKyNkZWZpbmUgX19IWVBFUkNBTExfQVJNX0hfXworCisjaW5j bHVkZSA8eGVuL3hlbi5oPgorI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPG1pbmkt b3MvbW0uaD4KKworaW5saW5lIGludAorSFlQRVJWSVNPUl9tbXVfdXBkYXRlKAorICAgIG1tdV91 cGRhdGVfdCAqcmVxLCBpbnQgY291bnQsIGludCAqc3VjY2Vzc19jb3VudCwgZG9taWRfdCBkb21p ZCk7CisKK2lubGluZSBpbnQKK0hZUEVSVklTT1JfbW11ZXh0X29wKAorICAgIHN0cnVjdCBtbXVl eHRfb3AgKm9wLCBpbnQgY291bnQsIGludCAqc3VjY2Vzc19jb3VudCwgZG9taWRfdCBkb21pZCk7 CisKK2lubGluZSBpbnQKK0hZUEVSVklTT1Jfc2V0X2dkdCgKKyAgICB1bnNpZ25lZCBsb25nICpm cmFtZV9saXN0LCBpbnQgZW50cmllcyk7CisKK2lubGluZSBpbnQKK0hZUEVSVklTT1Jfc3RhY2tf c3dpdGNoKAorICAgIHVuc2lnbmVkIGxvbmcgc3MsIHVuc2lnbmVkIGxvbmcgZXNwKTsKKworaW5s aW5lIGludAorSFlQRVJWSVNPUl9zZXRfY2FsbGJhY2tzKAorICAgIHVuc2lnbmVkIGxvbmcgZXZl bnRfYWRkcmVzcywgdW5zaWduZWQgbG9uZyBmYWlsc2FmZV9hZGRyZXNzLCAKKyAgICB1bnNpZ25l ZCBsb25nIHN5c2NhbGxfYWRkcmVzcyk7CisKK2lubGluZSBpbnQKK0hZUEVSVklTT1JfZnB1X3Rh c2tzd2l0Y2goCisgICAgaW50IHNldCk7CisKK2lubGluZSBpbnQKK0hZUEVSVklTT1Jfc2NoZWRf b3AoCisgICAgaW50IGNtZCwgdm9pZCAqYXJnKTsKKworc3RhdGljIGlubGluZSBpbnQKK0hZUEVS VklTT1Jfc2h1dGRvd24oCisgICAgdW5zaWduZWQgaW50IHJlYXNvbikKK3sKKyAgICBzdHJ1Y3Qg c2NoZWRfc2h1dGRvd24gc2h1dGRvd24gPSB7IC5yZWFzb24gPSByZWFzb24gfTsKKwlIWVBFUlZJ U09SX3NjaGVkX29wKFNDSEVET1Bfc2h1dGRvd24sICZzaHV0ZG93bik7Cit9CisKK2lubGluZSBs b25nCitIWVBFUlZJU09SX3NldF90aW1lcl9vcCgKKyAgICB1aW50NjRfdCB0aW1lb3V0KTsKKwor aW5saW5lIGludAorSFlQRVJWSVNPUl9zZXRfZGVidWdyZWcoCisgICAgaW50IHJlZywgdW5zaWdu ZWQgbG9uZyB2YWx1ZSk7CisKK2lubGluZSB1bnNpZ25lZCBsb25nCitIWVBFUlZJU09SX2dldF9k ZWJ1Z3JlZygKKyAgICBpbnQgcmVnKTsKKworaW5saW5lIGludAorSFlQRVJWSVNPUl91cGRhdGVf ZGVzY3JpcHRvcigKKyAgICB1bnNpZ25lZCBsb25nIG1hLCB1bnNpZ25lZCBsb25nIHdvcmQpOwor CitpbmxpbmUgaW50CitIWVBFUlZJU09SX21lbW9yeV9vcCgKKyAgICB1bnNpZ25lZCBpbnQgY21k LCB2b2lkICphcmcpOworCitpbmxpbmUgaW50CitIWVBFUlZJU09SX211bHRpY2FsbCgKKyAgICB2 b2lkICpjYWxsX2xpc3QsIGludCBucl9jYWxscyk7CisKK2lubGluZSBpbnQKK0hZUEVSVklTT1Jf dXBkYXRlX3ZhX21hcHBpbmcoCisgICAgdW5zaWduZWQgbG9uZyB2YSwgcHRlX3QgbmV3X3ZhbCwg dW5zaWduZWQgbG9uZyBmbGFncyk7CisKK2lubGluZSBpbnQKK0hZUEVSVklTT1JfZXZlbnRfY2hh bm5lbF9vcCgKKyAgICAgICBpbnQgY21kLCB2b2lkICpvcCk7CisKK2lubGluZSBpbnQKK0hZUEVS VklTT1JfeGVuX3ZlcnNpb24oCisgICAgaW50IGNtZCwgdm9pZCAqYXJnKTsKKworaW5saW5lIGlu dAorSFlQRVJWSVNPUl9jb25zb2xlX2lvKAorICAgIGludCBjbWQsIGludCBjb3VudCwgY2hhciAq c3RyKTsKKworaW5saW5lIGludAorSFlQRVJWSVNPUl9waHlzZGV2X29wKAorICAgIHZvaWQgKnBo eXNkZXZfb3ApOworCitpbmxpbmUgaW50CitIWVBFUlZJU09SX2dyYW50X3RhYmxlX29wKAorICAg IHVuc2lnbmVkIGludCBjbWQsIHZvaWQgKnVvcCwgdW5zaWduZWQgaW50IGNvdW50KTsKKworaW5s aW5lIGludAorSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFwcGluZ19vdGhlcmRvbWFpbigKKyAgICB1 bnNpZ25lZCBsb25nIHZhLCBwdGVfdCBuZXdfdmFsLCB1bnNpZ25lZCBsb25nIGZsYWdzLCBkb21p ZF90IGRvbWlkKTsKKworaW5saW5lIGludAorSFlQRVJWSVNPUl92bV9hc3Npc3QoCisgICAgdW5z aWduZWQgaW50IGNtZCwgdW5zaWduZWQgaW50IHR5cGUpOworCitpbmxpbmUgaW50CitIWVBFUlZJ U09SX3ZjcHVfb3AoCisgICAgaW50IGNtZCwgaW50IHZjcHVpZCwgdm9pZCAqZXh0cmFfYXJncyk7 CisKK2lubGluZSBpbnQKK0hZUEVSVklTT1Jfc2V0X3NlZ21lbnRfYmFzZSgKKyAgICBpbnQgcmVn LCB1bnNpZ25lZCBsb25nIHZhbHVlKTsKKworaW5saW5lIGludAorSFlQRVJWSVNPUl9zdXNwZW5k KAorICAgIHVuc2lnbmVkIGxvbmcgc3JlYyk7CisKK2lubGluZSBpbnQKK0hZUEVSVklTT1Jfbm1p X29wKAorICAgIHVuc2lnbmVkIGxvbmcgb3AsCisgICAgdW5zaWduZWQgbG9uZyBhcmcpOworCitp bmxpbmUgaW50CitIWVBFUlZJU09SX3N5c2N0bCgKKyAgICB1bnNpZ25lZCBsb25nIG9wKTsKKwor aW5saW5lIGludAorSFlQRVJWSVNPUl9kb21jdGwoCisgICAgdW5zaWduZWQgbG9uZyBvcCk7CisK K2lubGluZSBpbnQKK0hZUEVSVklTT1JfaHZtX29wKAorICAgIHVuc2lnbmVkIGxvbmcgb3AsIHZv aWQgKmFyZyk7CisKKyNlbmRpZiAvKiBfX0hZUEVSQ0FMTF9YODZfNjRfSF9fICovCisKKy8qCisg KiBMb2NhbCB2YXJpYWJsZXM6CisgKiAgYy1maWxlLXN0eWxlOiAibGludXgiCisgKiAgaW5kZW50 LXRhYnMtbW9kZTogdAorICogIGMtaW5kZW50LWxldmVsOiA4CisgKiAgYy1iYXNpYy1vZmZzZXQ6 IDgKKyAqICB0YWItd2lkdGg6IDgKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvZXh0cmFzL21p bmktb3MvaW5jbHVkZS9hcm0vb3MuaCBiL2V4dHJhcy9taW5pLW9zL2luY2x1ZGUvYXJtL29zLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjYzRhZgotLS0gL2Rldi9udWxs CisrKyBiL2V4dHJhcy9taW5pLW9zL2luY2x1ZGUvYXJtL29zLmgKQEAgLTAsMCArMSwyOTQgQEAK KyNpZm5kZWYgX09TX0hfCisjZGVmaW5lIF9PU19IXworCisjaWZuZGVmIF9fQVNTRU1CTFlfXwor CisjaW5jbHVkZSA8bWluaS1vcy9oeXBlcnZpc29yLmg+CisjaW5jbHVkZSA8bWluaS1vcy90eXBl cy5oPgorI2luY2x1ZGUgPHhlbi94ZW4uaD4KKwordm9pZCBhcmNoX2Zpbmkodm9pZCk7CisKKyNk ZWZpbmUgQlVHKCkgd2hpbGUoMSl7fQorCisjZGVmaW5lIHNtcF9wcm9jZXNzb3JfaWQoKSAwCisK KyNkZWZpbmUgYmFycmllcigpIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5IikK KworZXh0ZXJuIHNoYXJlZF9pbmZvX3QgKkhZUEVSVklTT1Jfc2hhcmVkX2luZm87CisKKy8vIGRp c2FibGUgaW50ZXJydXB0cworc3RhdGljIGlubGluZSBfX2NsaSh2b2lkKSB7CisgICAgaW50IHg7 CisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIm1ycyAlMCwgY3BzcjtjcHNpZCBpIjoiPXIiKHgp OjoibWVtb3J5Iik7Cit9CisKKy8vIGVuYWJsZSBpbnRlcnJ1cHRzCitzdGF0aWMgaW5saW5lIF9f c3RpKHZvaWQpIHsKKyAgICBpbnQgeDsKKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygibXJzICUw LCBjcHNyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiYmljICUwLCAlMCwgIzB4ODBcbiIK KyAgICAgICAgICAgICAgICAgICAgICAgICJtc3IgY3Bzcl9jLCAlMCIKKyAgICAgICAgICAgICAg ICAgICAgICAgIDoiPXIiKHgpOjoibWVtb3J5Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGly cXNfZGlzYWJsZWQoKSB7CisgICAgaW50IHg7CisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIm1y cyAlMCwgY3BzclxuIjoiPXIiKHgpOjoibWVtb3J5Iik7CisgICAgcmV0dXJuICh4ICYgMHg4MCk7 Cit9CisKKyNkZWZpbmUgbG9jYWxfaXJxX3NhdmUoeCkgeyBcCisgICAgX19hc21fXyBfX3ZvbGF0 aWxlX18oIm1ycyAlMCwgY3BzcjtjcHNpZCBpOyBhbmQgJTAsICUwLCAjMHg4MCI6Ij1yIih4KTo6 Im1lbW9yeSIpOyAgICBcCit9CisKKyNkZWZpbmUgbG9jYWxfaXJxX3Jlc3RvcmUoeCkgeyAgICBc CisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIm1zciBjcHNyX2MsICUwIjo6InIiKHgpOiJtZW1v cnkiKTsgICAgXAorfQorCisjZGVmaW5lIGxvY2FsX3NhdmVfZmxhZ3MoeCkgICAgeyBcCisgICAg ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJtcnMgJTAsIGNwc3I7IGFuZCAlMCwgJTAsIDB4ODAi OiI9ciIoeCk6OiJtZW1vcnkiKTsgICAgXAorfQorCisjZGVmaW5lIGxvY2FsX2lycV9kaXNhYmxl KCkgICAgX19jbGkoKQorI2RlZmluZSBsb2NhbF9pcnFfZW5hYmxlKCkgX19zdGkoKQorCisjaWYg ZGVmaW5lZChfX2FybV9fKQorI2RlZmluZSBtYigpIF9fYXNtX18oImRtYiIpOworI2RlZmluZSBy bWIoKSBfX2FzbV9fKCJkbWIiKTsKKyNkZWZpbmUgd21iKCkgX19hc21fXygiZG1iIik7CisjZWxp ZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorI2RlZmluZSBtYigpCisjZGVmaW5lIHJtYigpCisjZGVm aW5lIHdtYigpCisjZWxzZQorI2Vycm9yIHVuZGVmaW5lZCBhcmNoaXRlY3R1cmUKKyNlbmRpZgor CisjZGVmaW5lIExPQ0tfUFJFRklYICIiCisjZGVmaW5lIExPQ0sgIiIKKworI2RlZmluZSB1bmxp a2VseSh4KSAgX19idWlsdGluX2V4cGVjdCgoeCksMCkKKyNkZWZpbmUgbGlrZWx5KHgpICBfX2J1 aWx0aW5fZXhwZWN0KCh4KSwxKQorCisjZGVmaW5lIEFERFIgKCoodm9sYXRpbGUgbG9uZyAqKSBh ZGRyKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKiogYXJtICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisjaWZkZWYgX19JTlNJREVfTUlOSU9TX18KKyNpZiBkZWZpbmVkIChf X2FybV9fKQorI2RlZmluZSB4Y2hnKHB0cix2KSAoKF9fdHlwZW9mX18oKihwdHIpKSlfX3hjaGco KHVuc2lnbmVkIGxvbmcpKHYpLChwdHIpLHNpemVvZigqKHB0cikpKSkKKyNkZWZpbmUgX194Zyh4 KSAoKHZvbGF0aWxlIGxvbmcgKikoeCkpCisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBf X3hjaGcodW5zaWduZWQgbG9uZyB4LCB2b2xhdGlsZSB2b2lkICogcHRyLCBpbnQgc2l6ZSkKK3sK KyAgICAvL1RPRE8KKyAgICB1bnNpZ25lZCB2b2xhdGlsZSBsb25nIHksIHRtcCA9IDA7CisgICAg c3dpdGNoKHNpemUpeworICAgIGNhc2UgMToKKyNpZiBDUFVfRVhDTFVTSVZFX0xEU1QKKyAgICAg ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIjE6bGRyZXhiICUwLCBbJTFdXG4iCisgICAgICAgICAg ICAic3RyZXhiICUzLCAlMiwgWyUxXVxuIgorICAgICAgICAgICAgImNtcCAlMywgIzFcbiIKKyAg ICAgICAgICAgICJiZXEgMWJcblxuIgorICAgICAgICAgICAgImRtYlxuIjoiPSZyIih5KToiciIo cHRyKSwgInIiKHgpLCAiciIodG1wKToibWVtb3J5Iik7CisjZWxzZQorICAgICAgICB5ID0gKCoo Y2hhciAqKXB0cikgJiAweDAwMDAwMGZmOworICAgICAgICAqKChjaGFyICopcHRyKSA9IChjaGFy KXg7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorI2lmIENQVV9FWENMVVNJ VkVfTERTVAorICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiMTpsZHJleGggJTAsIFslMV1c biIKKyAgICAgICAgICAgICJzdHJleGggJTMsICUyLCBbJTFdXG4iCisgICAgICAgICAgICAiY21w ICUzLCAjMVxuIgorICAgICAgICAgICAgImJlcSAxYlxuXG4iCisgICAgICAgICAgICAiZG1iXG4i OiI9JnIiKHkpOiJyIihwdHIpLCAiciIoeCksICJyIih0bXApOiJtZW1vcnkiKTsKKyNlbHNlCisg ICAgICAgIHkgPSAoKihzaG9ydCAqKXB0cikgJiAweDAwMDBmZmZmOworICAgICAgICAqKChzaG9y dCAqKXB0cikgPSAoc2hvcnQpeDsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0 OiAvLyA0CisjaWYgQ1BVX0VYQ0xVU0lWRV9MRFNUCisgICAgICAgIF9fYXNtX18gX192b2xhdGls ZV9fKCIxOmxkcmV4ICUwLCBbJTFdXG4iCisgICAgICAgICAgICAic3RyZXggJTMsICUyLCBbJTFd XG4iCisgICAgICAgICAgICAiY21wICUzLCAjMVxuIgorICAgICAgICAgICAgImJlcSAxYlxuXG4i CisgICAgICAgICAgICAiZG1iXG4iOiI9JnIiKHkpOiJyIihwdHIpLCAiciIoeCksICJyIih0bXAp OiJtZW1vcnkiKTsKKyNlbHNlCisgICAgICAgIHkgPSAoKih1bnNpZ25lZCBsb25nICopcHRyKSAm IDB4ZmZmZmZmZmY7CisgICAgICAgICooKHVuc2lnbmVkIGxvbmcgKilwdHIpID0geDsKKyNlbmRp ZgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHk7Cit9CisKKy8qKgorICogdGVz dF9hbmRfY2xlYXJfYml0IC0gQ2xlYXIgYSBiaXQgYW5kIHJldHVybiBpdHMgb2xkIHZhbHVlCisg KiBAbnI6IEJpdCB0byBjbGVhcgorICogQGFkZHI6IEFkZHJlc3MgdG8gY291bnQgZnJvbQorICoK KyAqIFRoaXMgb3BlcmF0aW9uIGlzIGF0b21pYyBhbmQgY2Fubm90IGJlIHJlb3JkZXJlZC4KKyAq IEl0IGFsc28gaW1wbGllcyBhIG1lbW9yeSBiYXJyaWVyLgorICovCitzdGF0aWMgX19pbmxpbmVf XyBpbnQgdGVzdF9hbmRfY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCit7 CisgICAgLy9UT0RPCisgICAgdW5zaWduZWQgbG9uZyAqdG1wID0gKHVuc2lnbmVkIGxvbmcgKilh ZGRyOworCisgICAgaW50IHggPSB0bXBbbnIgPj4gNV0gJiAoMSA8PCAobnIgJiAweDFmKSk7Cisg ICAgdG1wW25yID4+IDVdICY9IH4oMSA8PCAobnIgJiAweDFmKSk7CisgICAgcmV0dXJuIHg7Cit9 CisKK3N0YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRp bGUgdm9pZCAqIGFkZHIpCit7CisgICAgLy9UT0RPCisgICAgdW5zaWduZWQgbG9uZyAqdG1wID0g KHVuc2lnbmVkIGxvbmcgKilhZGRyOworCisgICAgaW50IHggPSB0bXBbbnIgPj4gNV0gJiAoMSA8 PCAobnIgJiAweDFmKSk7CisgICAgdG1wW25yID4+IDVdIHw9ICgxIDw8IChuciAmIDB4MWYpKTsK KyAgICByZXR1cm4geDsKK30KKworc3RhdGljIF9faW5saW5lX18gaW50IGNvbnN0YW50X3Rlc3Rf Yml0KGludCBuciwgY29uc3Qgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCit7CisgICAgLy9UT0RPCisg ICAgdW5zaWduZWQgbG9uZyAqdG1wID0gKHVuc2lnbmVkIGxvbmcgKilhZGRyOworICAgIHJldHVy biB0bXBbbnIgPj4gNV0gJiAoMSA8PCAobnIgJiAweDFmKSk7Cit9CisKK3N0YXRpYyBfX2lubGlu ZV9fIGludCB2YXJpYWJsZV90ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIGNvbnN0IHZvaWQgKiBh ZGRyKQoreworICAgIC8vVE9ETzoKKyAgICB1bnNpZ25lZCBsb25nICp0bXAgPSAodW5zaWduZWQg bG9uZyAqKWFkZHI7CisgICAgcmV0dXJuIHRtcFtuciA+PiA1XSAmICgxIDw8IChuciAmIDB4MWYp KTsKK30KKworLy9UT0RPCisjZGVmaW5lIHRlc3RfYml0KG5yLGFkZHIpICgoKHVuc2lnbmVkIGxv bmcgKilhZGRyKVtuciA+PiA1XSAmICgxIDw8IChuciAmIDB4MWYpKSkKKworCisvKioKKyAqIHNl dF9iaXQgLSBBdG9taWNhbGx5IHNldCBhIGJpdCBpbiBtZW1vcnkKKyAqIEBucjogdGhlIGJpdCB0 byBzZXQKKyAqIEBhZGRyOiB0aGUgYWRkcmVzcyB0byBzdGFydCBjb3VudGluZyBmcm9tCisgKgor ICogVGhpcyBmdW5jdGlvbiBpcyBhdG9taWMgYW5kIG1heSBub3QgYmUgcmVvcmRlcmVkLiAgU2Vl IF9fc2V0X2JpdCgpCisgKiBpZiB5b3UgZG8gbm90IHJlcXVpcmUgdGhlIGF0b21pYyBndWFyYW50 ZWVzLgorICogTm90ZSB0aGF0IEBuciBtYXkgYmUgYWxtb3N0IGFyYml0cmFyaWx5IGxhcmdlOyB0 aGlzIGZ1bmN0aW9uIGlzIG5vdAorICogcmVzdHJpY3RlZCB0byBhY3Rpbmcgb24gYSBzaW5nbGUt d29yZCBxdWFudGl0eS4KKyAqLworc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBu ciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCit7CisgICAgLy9UT0RPOgorICAgIHVuc2lnbmVkIGxv bmcgKnRtcCA9ICh1bnNpZ25lZCBsb25nICopYWRkcjsKKyAgICB0bXBbbnIgPj4gNV0gfD0gKDEg PDwgKG5yICYgMHgxZikpOworfQorCisvKioKKyAqIGNsZWFyX2JpdCAtIENsZWFycyBhIGJpdCBp biBtZW1vcnkKKyAqIEBucjogQml0IHRvIGNsZWFyCisgKiBAYWRkcjogQWRkcmVzcyB0byBzdGFy dCBjb3VudGluZyBmcm9tCisgKgorICogY2xlYXJfYml0KCkgaXMgYXRvbWljIGFuZCBtYXkgbm90 IGJlIHJlb3JkZXJlZC4gIEhvd2V2ZXIsIGl0IGRvZXMKKyAqIG5vdCBjb250YWluIGEgbWVtb3J5 IGJhcnJpZXIsIHNvIGlmIGl0IGlzIHVzZWQgZm9yIGxvY2tpbmcgcHVycG9zZXMsCisgKiB5b3Ug c2hvdWxkIGNhbGwgc21wX21iX19iZWZvcmVfY2xlYXJfYml0KCkgYW5kL29yIHNtcF9tYl9fYWZ0 ZXJfY2xlYXJfYml0KCkKKyAqIGluIG9yZGVyIHRvIGVuc3VyZSBjaGFuZ2VzIGFyZSB2aXNpYmxl IG9uIG90aGVyIHByb2Nlc3NvcnMuCisgKi8KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgY2xlYXJf Yml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCit7CisgICAgLy9UT0RPCisgICAgdW5z aWduZWQgbG9uZyAqdG1wID0gKHVuc2lnbmVkIGxvbmcgKilhZGRyOworICAgIHRtcFtuciA+PiA1 XSAmPSAodW5zaWduZWQgbG9uZyl+KDEgPDwgKG5yICYgMHgxZikpOworfQorCisvKioKKyAqIF9f ZmZzIC0gZmluZCBmaXJzdCBiaXQgaW4gd29yZC4KKyAqIEB3b3JkOiBUaGUgd29yZCB0byBzZWFy Y2gKKyAqCisgKiBVbmRlZmluZWQgaWYgbm8gYml0IGV4aXN0cywgc28gY29kZSBzaG91bGQgY2hl Y2sgYWdhaW5zdCAwIGZpcnN0LgorICovCitzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25n IF9fZmZzKHVuc2lnbmVkIGxvbmcgd29yZCkKK3sKKyAgICAvL1RPRE8KKyAgICBpbnQgaW5kZXgg PSAwOworICAgIHdoaWxlKCEod29yZCAmICgxIDw8IGluZGV4KyspKSl7fTsKKworICAgIHJldHVy biBpbmRleCAtIDE7Cit9CisKKy8vRklYTUUKKyNkZWZpbmUgcmR0c2NsbCh2YWwpICh2YWwgPSAw KQorCisjZGVmaW5lIHdybXNyKG1zcix2YWwxLHZhbDIpICgwKQorCisjZGVmaW5lIHdybXNybCht c3IsdmFsKSB3cm1zcihtc3IsKHVpbnQzMl90KSgodWludDY0X3QpKHZhbCkpLCgodWludDY0X3Qp KHZhbCkpPj4zMikKKworCisjZWxzZSAvKiBpZmRlZiBfX2FybV9fICovCisjZXJyb3IgIlVuc3Vw cG9ydGVkIGFyY2hpdGVjdHVyZSIKKyNlbmRpZgorI2VuZGlmIC8qIGlmZGVmIF9fSU5TSURFX01J TklPUyAqLworCisvKioqKioqKioqKioqKioqKioqKioqIGNvbW1vbiBhcm0zMiBhbmQgYXJtNjQg ICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdHJ1Y3QgX19zeW5jaF94Y2hnX2R1bW15 IHsgdW5zaWduZWQgbG9uZyBhWzEwMF07IH07CisjZGVmaW5lIF9fc3luY2hfeGcoeCkgKChzdHJ1 Y3QgX19zeW5jaF94Y2hnX2R1bW15ICopKHgpKQorCisjZGVmaW5lIHN5bmNoX2NtcHhjaGcocHRy LCBvbGQsIG5ldykgKDApCisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX3N5bmNoX2Nt cHhjaGcodm9sYXRpbGUgdm9pZCAqcHRyLAorICAgICAgICB1bnNpZ25lZCBsb25nIG9sZCwKKyAg ICAgICAgdW5zaWduZWQgbG9uZyBuZXcsIGludCBzaXplKQoreworICAgIC8vVE9ETzoKKyAgICAv L0JVRygpOworICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgc3lu Y2hfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQoreworICAgIC8vVE9ETzoK KyAgICBzZXRfYml0KG5yLCBhZGRyKTsKK30KKworc3RhdGljIF9faW5saW5lX18gdm9pZCBzeW5j aF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKK3sKKyAgICAvL1RPRE86 CisgICAgY2xlYXJfYml0KG5yLCBhZGRyKTsKK30KKworc3RhdGljIF9faW5saW5lX18gaW50IHN5 bmNoX3Rlc3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKK3sKKyAg ICAvL1RPRE86CisgICAgcmV0dXJuIHRlc3RfYW5kX3NldF9iaXQobnIsIGFkZHIpOworfQorCitz dGF0aWMgX19pbmxpbmVfXyBpbnQgc3luY2hfdGVzdF9hbmRfY2xlYXJfYml0KGludCBuciwgdm9s YXRpbGUgdm9pZCAqIGFkZHIpCit7CisgICAgLy9UT0RPOgorICAgIHJldHVybiB0ZXN0X2FuZF9j bGVhcl9iaXQobnIsIGFkZHIpOworfQorCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgc3luY2hfY29u c3RfdGVzdF9iaXQoaW50IG5yLCBjb25zdCB2b2xhdGlsZSB2b2lkICogYWRkcikKK3sKKyAgICAv L1RPRE86CisgICAgcmV0dXJuIGNvbnN0X3Rlc3RfYml0KG5yLCBhZGRyKTsKK30KKworc3RhdGlj IF9faW5saW5lX18gaW50IHN5bmNoX3Zhcl90ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQg KiBhZGRyKQoreworICAgIC8vVE9ETzoKKyAgICByZXR1cm4gdmFyX3Rlc3RfYml0KG5yLCBhZGRy KTsKK30KKworI2RlZmluZSBzeW5jaF90ZXN0X2JpdChucixhZGRyKSB0ZXN0X2JpdChuciwgYWRk cikKKworCisjdW5kZWYgQUREUgorCisjZW5kaWYgLyogbm90IGFzc2VtYmx5ICovCisKKyNlbmRp ZgpkaWZmIC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvaW5jbHVkZS9hcm0vdHJhcHMuaCBiL2V4dHJh cy9taW5pLW9zL2luY2x1ZGUvYXJtL3RyYXBzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNzA0ZGYyMgotLS0gL2Rldi9udWxsCisrKyBiL2V4dHJhcy9taW5pLW9zL2luY2x1 ZGUvYXJtL3RyYXBzLmgKQEAgLTAsMCArMSwyMCBAQAorI2lmbmRlZiBfVFJBUFNfSF8KKyNkZWZp bmUgX1RSQVBTX0hfCisKK3N0cnVjdCBwdF9yZWdzIHsKKyAgICB1bnNpZ25lZCBsb25nIHIwOwor ICAgIHVuc2lnbmVkIGxvbmcgcjE7CisgICAgdW5zaWduZWQgbG9uZyByMjsKKyAgICB1bnNpZ25l ZCBsb25nIHIzOworICAgIHVuc2lnbmVkIGxvbmcgcjQ7CisgICAgdW5zaWduZWQgbG9uZyByNTsK KyAgICB1bnNpZ25lZCBsb25nIHI2OworICAgIHVuc2lnbmVkIGxvbmcgcjc7CisgICAgdW5zaWdu ZWQgbG9uZyByODsKKyAgICB1bnNpZ25lZCBsb25nIHI5OworICAgIHVuc2lnbmVkIGxvbmcgcjEw OworICAgIHVuc2lnbmVkIGxvbmcgcjExOworICAgIHVuc2lnbmVkIGxvbmcgcjEyOworfTsKKwor I2VuZGlmCmRpZmYgLS1naXQgYS9leHRyYXMvbWluaS1vcy9pbmNsdWRlL2dpYy5oIGIvZXh0cmFz L21pbmktb3MvaW5jbHVkZS9naWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5jZWFkMmU1Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0cmFzL21pbmktb3MvaW5jbHVkZS9naWMu aApAQCAtMCwwICsxIEBACit2b2lkIGdpY19pbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvZXh0cmFz L21pbmktb3MvaW5jbHVkZS9oeXBlcnZpc29yLmggYi9leHRyYXMvbWluaS1vcy9pbmNsdWRlL2h5 cGVydmlzb3IuaAppbmRleCBhNjJjYjc4Li4wNTJmNGY4IDEwMDY0NAotLS0gYS9leHRyYXMvbWlu aS1vcy9pbmNsdWRlL2h5cGVydmlzb3IuaAorKysgYi9leHRyYXMvbWluaS1vcy9pbmNsdWRlL2h5 cGVydmlzb3IuaApAQCAtMTgsNiArMTgsMTAgQEAKICNpbmNsdWRlIDxoeXBlcmNhbGwteDg2XzMy Lmg+CiAjZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pCiAjaW5jbHVkZSA8aHlwZXJjYWxsLXg4Nl82 NC5oPgorI2VsaWYgZGVmaW5lZChfX2FybV9fKQorI2luY2x1ZGUgPGh5cGVyY2FsbC1hcm0zMi5o PgorI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyNpbmNsdWRlIDxoeXBlcmNhbGwtYXJtNjQu aD4KICNlbHNlCiAjZXJyb3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSIKICNlbmRpZgpkaWZm IC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvaW5jbHVkZS9tbS5oIGIvZXh0cmFzL21pbmktb3MvaW5j bHVkZS9tbS5oCmluZGV4IGE5NGNkNmQuLjY0NGM3ZGUgMTAwNjQ0Ci0tLSBhL2V4dHJhcy9taW5p LW9zL2luY2x1ZGUvbW0uaAorKysgYi9leHRyYXMvbWluaS1vcy9pbmNsdWRlL21tLmgKQEAgLTI5 LDYgKzI5LDggQEAKICNpbmNsdWRlIDx4ZW4vYXJjaC14ODZfMzIuaD4KICNlbGlmIGRlZmluZWQo X194ODZfNjRfXykKICNpbmNsdWRlIDx4ZW4vYXJjaC14ODZfNjQuaD4KKyNlbGlmIGRlZmluZWQo X19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKKyNpbmNsdWRlIDx4ZW4vYXJjaC1hcm0u aD4KICNlbHNlCiAjZXJyb3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSIKICNlbmRpZgpkaWZm IC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvaW5jbHVkZS90eXBlcy5oIGIvZXh0cmFzL21pbmktb3Mv aW5jbHVkZS90eXBlcy5oCmluZGV4IDY2NDBlZGUuLjkzMWU4NTMgMTAwNjQ0Ci0tLSBhL2V4dHJh cy9taW5pLW9zL2luY2x1ZGUvdHlwZXMuaAorKysgYi9leHRyYXMvbWluaS1vcy9pbmNsdWRlL3R5 cGVzLmgKQEAgLTI3LDcgKzI3LDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgICAgIHVfY2hh cjsKIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgICAgICB1X2ludDsKIHR5cGVkZWYgdW5zaWduZWQg bG9uZyAgICAgICB1X2xvbmc7CiAjZW5kaWYKLSNpZmRlZiBfX2kzODZfXworI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykKIHR5cGVkZWYgbG9uZyBsb25nICAgICAgICAg ICBxdWFkX3Q7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgdV9xdWFkX3Q7CiAKQEAgLTQw LDcgKzQwLDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgIHVfcXVhZF90OwogdHlwZWRl ZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHB0ZTsgfSBwdGVfdDsKICNlbmRpZiAvKiBfX2kzODZf XyB8fCBfX3g4Nl82NF9fICovCiAKLSNpZmRlZiBfX3g4Nl82NF9fCisjaWYgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQogI2RlZmluZSBfX3B0ZSh4KSAoKHB0ZV90 KSB7ICh4KSB9ICkKICNlbHNlCiAjZGVmaW5lIF9fcHRlKHgpICh7IHVuc2lnbmVkIGxvbmcgbG9u ZyBfeCA9ICh4KTsgICAgICAgIFwKQEAgLTUxLDEwICs1MSwxMCBAQCB0eXBlZGVmIHN0cnVjdCB7 IHVuc2lnbmVkIGxvbmcgcHRlOyB9IHB0ZV90OwogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1 ZGUgPHN0ZGludC5oPgogI2Vsc2UKLSNpZmRlZiBfX2kzODZfXworI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX19hcm1fXykKIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgICAgICB1aW50 cHRyX3Q7CiB0eXBlZGVmIGludCAgICAgICAgICAgICAgICAgaW50cHRyX3Q7Ci0jZWxpZiBkZWZp bmVkKF9feDg2XzY0X18pCisjZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19h YXJjaDY0X18pCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgdWludHB0cl90OwogdHlwZWRl ZiBsb25nICAgICAgICAgICAgICAgIGludHB0cl90OwogI2VuZGlmIC8qIF9faTM4Nl9fIHx8IF9f eDg2XzY0X18gKi8KQEAgLTY0LDEwICs2NCwxMCBAQCB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVp bnQxNl90OwogdHlwZWRlZiAgIHNpZ25lZCBzaG9ydCBpbnQxNl90OwogdHlwZWRlZiB1bnNpZ25l ZCBpbnQgdWludDMyX3Q7CiB0eXBlZGVmICAgc2lnbmVkIGludCBpbnQzMl90OwotI2lmZGVmIF9f aTM4Nl9fCisjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKQogdHlwZWRl ZiAgIHNpZ25lZCBsb25nIGxvbmcgaW50NjRfdDsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n IHVpbnQ2NF90OwotI2VsaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorI2VsaWYgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQogdHlwZWRlZiAgIHNpZ25lZCBsb25nIGlu dDY0X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludDY0X3Q7CiAjZW5kaWYKZGlmZiAtLWdp dCBhL2V4dHJhcy9taW5pLW9zL2tlcm5lbC5jIGIvZXh0cmFzL21pbmktb3Mva2VybmVsLmMKaW5k ZXggYjlhYjBhMi4uY2RmNTkyOCAxMDA2NDQKLS0tIGEvZXh0cmFzL21pbmktb3Mva2VybmVsLmMK KysrIGIvZXh0cmFzL21pbmktb3Mva2VybmVsLmMKQEAgLTQ2LDYgKzQ2LDEwIEBACiAjaW5jbHVk ZSA8eGVuL2ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8eGVuL3ZlcnNpb24uaD4KIAorI2lmZGVmIF9f YXJtX18KKyNpbmNsdWRlIDxtaW5pLW9zL2dpYy5oPgorI2VuZGlmCisKIHVpbnQ4X3QgeGVuX2Zl YXR1cmVzW1hFTkZFQVRfTlJfU1VCTUFQUyAqIDMyXTsKIAogdm9pZCBzZXR1cF94ZW5fZmVhdHVy ZXModm9pZCkKQEAgLTE0Niw2ICsxNTAsMTAgQEAgdm9pZCBzdGFydF9rZXJuZWwodm9pZCkKICAg ICBjcmVhdGVfdGhyZWFkKCJzaHV0ZG93biIsIHNodXRkb3duX3RocmVhZCwgTlVMTCk7CiAjZW5k aWYKIAorI2lmZGVmIF9fYXJtX18KKyAgICBnaWNfaW5pdCgpOworI2VuZGlmCisKICAgICAvKiBD YWxsIChwb3NzaWJseSBvdmVycmlkZGVuKSBhcHBfbWFpbigpICovCiAgICAgYXBwX21haW4oJnN0 YXJ0X2luZm8pOwogCmRpZmYgLS1naXQgYS9leHRyYXMvbWluaS1vcy9zY2hlZC5jIGIvZXh0cmFz L21pbmktb3Mvc2NoZWQuYwppbmRleCAxNzQ5NDVlLi5lZDNmOGMwIDEwMDY0NAotLS0gYS9leHRy YXMvbWluaS1vcy9zY2hlZC5jCisrKyBiL2V4dHJhcy9taW5pLW9zL3NjaGVkLmMKQEAgLTE0NSw2 ICsxNDUsOSBAQCBzdHJ1Y3QgdGhyZWFkKiBjcmVhdGVfdGhyZWFkKGNoYXIgKm5hbWUsIHZvaWQg KCpmdW5jdGlvbikodm9pZCAqKSwgdm9pZCAqZGF0YSkKICAgICB1bnNpZ25lZCBsb25nIGZsYWdz OwogICAgIC8qIENhbGwgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHNldHVwLiAqLwogICAgIHRocmVh ZCA9IGFyY2hfY3JlYXRlX3RocmVhZChuYW1lLCBmdW5jdGlvbiwgZGF0YSk7CisgICAgaWYoIXRo cmVhZCkKKyAgICAJQlVHKCk7IC8vRm9yIG5vdywgRklYTUUgc2hvdWxkIGp1c3QgcmV0dXJuIE5V TEwKKwogICAgIC8qIE5vdCBydW5hYmxlLCBub3QgZXhpdGVkLCBub3Qgc2xlZXBpbmcgKi8KICAg ICB0aHJlYWQtPmZsYWdzID0gMDsKICAgICB0aHJlYWQtPndha2V1cF90aW1lID0gMExMOwotLSAK Mi4wLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=