From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Leonard Subject: Re: [PATCH ARM v5 19/20] mini-os: initial ARM support Date: Mon, 30 Jun 2014 20:12:10 +0100 Message-ID: References: <1403782117-15125-1-git-send-email-talex5@gmail.com> <1403782117-15125-20-git-send-email-talex5@gmail.com> <53AF0A0E.6000504@linaro.org> 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 1X1gzv-0007kJ-56 for xen-devel@lists.xenproject.org; Mon, 30 Jun 2014 19:12:15 +0000 Received: by mail-ob0-f171.google.com with SMTP id nu7so9345029obb.2 for ; Mon, 30 Jun 2014 12:12:11 -0700 (PDT) In-Reply-To: <53AF0A0E.6000504@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Julien Grall Cc: xen-devel@lists.xenproject.org, Stefano Stabellini , David Scott , Samuel Thibault , Anil Madhavapeddy List-Id: xen-devel@lists.xenproject.org T24gMjggSnVuZSAyMDE0IDE5OjMxLCBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBsaW5hcm8u b3JnPiB3cm90ZToKPgo+Cj4gT24gMjYvMDYvMTQgMTI6MjgsIFRob21hcyBMZW9uYXJkIHdyb3Rl Ogo+Pgo+PiBPbiBBUk0sIE1pbmktT1Mgd2lsbCBib290IGFuZCBkaXNwbGF5IHNvbWUgb3V0cHV0 IG9uIHRoZSBjb25zb2xlLgo+PiBUZXN0ZWQgd2l0aDoKPj4KPj4gbWFrZSBYRU5fVEFSR0VUX0FS Q0g9YXJtMzIgQ1JPU1NfQ09NUElMRT1hcm0tbGludXgtZ251ZWFiaWhmLSBcCj4+ICAgICAgICAg Q09ORklHX1RFU1Q9eSBDT05GSUdfU1RBUlRfTkVUV09SSz1uIENPTkZJR19CTEtGUk9OVD1uIFwK Pj4gICAgICAgICBDT05GSUdfTkVURlJPTlQ9biBDT05GSUdfRkJGUk9OVD1uIENPTkZJR19LQkRG Uk9OVD1uIFwKPj4gICAgICAgICBDT05GSUdfQ09OU0ZST05UPW4gQ09ORklHX1hDPW4gLWo0Cj4+ Cj4+IFNpZ25lZC1vZmYtYnk6IEthcmltIEFsbGFoIEFobWVkIDxrYXJpbS5hbGxhaC5haG1lZEBn bWFpbC5jb20+Cj4+IFt0YWxleDVAZ21haWwuY29tOiBtYWRlIHg4Nl82NCBzdXBwb3J0IHdvcmsg YWdhaW5dCj4+IFt0YWxleDVAZ21haWwuY29tOiBzcGxpdCBpbnRvIG11bHRpcGxlIHBhdGNoZXNd Cj4+IFt0YWxleDVAZ21haWwuY29tOiByZS1lbmFibGVkIGZvcmNlX2V2dGNobl9jYWxsYmFja10K Pj4gW3RhbGV4NUBnbWFpbC5jb206IGVuYWJsZSByZWd1bGFyIGNvbnNvbGVdCj4+IFt0YWxleDVA Z21haWwuY29tOiBmaXhlZCBpbml0aWFsaXNhdGlvbiBjb2RlOgo+PiAtIENvbmZpZ3VyZSB3cml0 ZS1iYWNrIGNhY2hpbmcgaW4gcGFnZSB0YWJsZS4gVGhpcyBpcyBuZWVkZWQgZm9yCj4+ICAgIHJl bGlhYmxlIGh5cGVyY2FsbHMgdG8gWGVuICh0aGFua3MgdG8gSnVsaWVuIEdyYWxsKS4KPj4gLSBV c2UgImNsaWVudCBtb2RlIiBmb3IgYWNjZXNzIGNvbnRyb2wgKGRvbWFpbnMgYXJlIGRlcHJlY2F0 ZWQsCj4+ICAgIGFjY29yZGluZyB0byBBUk0gQ29ydGV4LUEgU2VyaWVzIFByb2dyYW1tZXLigJlz IEd1aWRlIHZlcnNpb24gNC4wLAo+PiAgICBzZWN0aW9uIDkuNi40KS4KPj4gLSBFbmFibGUgbW9y ZSBTQ1RMUiBmZWF0dXJlcyAoaWNhY2hlLCBicmFuY2ggcHJlZGljdGlvbildCj4+IFt0YWxleDVA Z21haWwuY29tOiB1c2UgVmlydHVhbCBDb3VudCByZWdpc3RlciBmb3IgbW9ub3RvbmljIHRpbWVd Cj4+IFt0YWxleDVAZ21haWwuY29tOiBmaXhlZCBIWVBFUlZJU09SX3NodXRkb3duXQo+PiBbdGFs ZXg1QGdtYWlsLmNvbTogZ2V0IHhlbnN0b3JlIGRldGFpbHMgZnJvbSBoeXBlcnZpc29yXQo+PiBb dGFsZXg1QGdtYWlsLmNvbTogdXNlIEdDQyBpbXBsZW1lbnRhdGlvbiBvZiBkaXZpc2lvbl0KPj4g W3RhbGV4NUBnbWFpbC5jb206IGNsZWFuZWQgdXAgaW50ZXJydXB0IGhhbmRsZXJzIGFuZCB0aHJl YWRpbmddCj4+IFt0YWxleDVAZ21haWwuY29tOiBjYWxsIGV4aXRfdGhyZWFkIHdoZW4gYSB0aHJl YWQgcmV0dXJuc10KPj4gW3RhbGV4NUBnbWFpbC5jb206IGltcGxlbWVudGVkIGJsb2NrX2RvbWFp biBmb3IgQVJNXQo+PiBbdGFsZXg1QGdtYWlsLmNvbTogZml4ZWQgaGFuZyB3aGVuIGVuYWJsaW5n IGludGVycnVwdHNdCj4+IFt0YWxleDVAZ21haWwuY29tOiBhZGRlZCAtbWFyY2g9YXJtdjctYSB0 byBmbGFnc10KPj4gW3RhbGV4NUBnbWFpbC5jb206IENMUkVYIGFmdGVyIGhhbmRsaW5nIElSUXNd Cj4+IFt0YWxleDVAZ21haWwuY29tOiB1bmJpbmQgZGVidWcgcG9ydCBhdCBzaHV0ZG93bl0KPj4g W3RhbGV4NUBnbWFpbC5jb206IGFsbG93IHVuYWxpZ25lZCBhY2Nlc3Nlc10KPj4gW3RhbGV4NUBn bWFpbC5jb206IGZpeCB6SW1hZ2UgaGVhZGVyIGZvciBYU0EtOTVdCj4+IFt0YWxleDVAZ21haWwu Y29tOiBnZXQgUkFNIGJhc2UgYW5kIHNpemUgZnJvbSB0aGUgRkRUXQo+PiBbdGFsZXg1QGdtYWls LmNvbTogZ2V0IEdJQyBhZGRyZXNzZXMgZnJvbSBGRFRdCj4+IFt0YWxleDVAZ21haWwuY29tOiBh ZGRlZCBBUk0gZ3JhbnQgdGFibGUgaW5pdGlhbGlzYXRpb25dCj4+IFt0YWxleDVAZ21haWwuY29t OiBhZGRlZCBtaXNzaW5nIGNvcHlyaWdodCBoZWFkZXIgdG8gaHlwZXJjYWxsczMyLlNdCj4+IFt0 YWxleDVAZ21haWwuY29tOiBtb3ZlZCBHSUMgZHJpdmVyIHRvIGFybSBkaXJlY3RvcnldCj4+IFt0 YWxleDVAZ21haWwuY29tOiBmaXhlcyBzdWdnZXN0ZWQgYnkgSnVsaWVuIEdyYWxsOgo+PiAtIFJl bW92ZWQgdW5uZWNlc3NhcnkgaXNiLgo+PiAtIFJlbmFtZWQgR0lDRF9QUklPUklUWSB0byBHSUNE X0lQUklPUklUWVIuCj4+IC0gQ2hhbmdlIElSUSBudW1iZXIgdHlwZSBmcm9tIHVuc2lnbmVkIGNo YXIgdG8gaW50Lgo+PiAtIEFkZGVkIHZvbGF0aWxlIHRvIHtzZXQsY2xlYXJ9X2JpdF9ub25fYXRv bWljLgo+PiAtIEZpeGVkIHNvbWUgY29tbWVudHMuCj4+IC0gQ2hlY2sgY29tcGF0aWJsZSBwcm9w ZXJ0aWVzIGluIERUQi5dCj4+IFt0YWxleDVAZ21haWwuY29tOiBtYWRlIGltYWdlIHJlbG9jYXRh YmxlXQo+PiBbdGFsZXg1QGdtYWlsLmNvbTogYWRkZWQgbWZuX3RvX3BmbiBhbmQgcGZuX3RvX21m bl0KPgo+Cj4gSUhNTyBhbGwgdGhlc2UgY2hhbmdlcyBkb2Vzbid0IGJlbG9uZyB0byB0aGUgY29t bWl0IG1lc3NhZ2UsIGkuZSBzaG91bGQgbm90Cj4gYXBwZWFyIGluIHRoZSBjb21taXQgbWVzc2Fn ZSB3aGVuIElhbiB3aWxsIGFwcGx5IHlvdXIgY29tbWl0IG1lc3NhZ2UuCgpBcyBJIHVuZGVyc3Rh bmQgaXQsIGFzIEknbSBub3QgdGhlIGF1dGhvciBvZiB0aGUgcGF0Y2gsIGl0J3MgcG9saXRlIHRv CmluZGljYXRlIGhvdyBJIGhhdmUgbW9kaWZpZWQgaXQuIEknbSB0cnlpbmcgdG8gZm9sbG93IHRo ZSBndWlkZWxpbmVzCmhlcmU6CgoiUnVsZSAoYikgYWxsb3dzIHlvdSB0byBhZGp1c3QgdGhlIGNv ZGUsIGJ1dCB0aGVuIGl0IGlzIHZlcnkgaW1wb2xpdGUKdG8gY2hhbmdlIG9uZSBzdWJtaXR0ZXIn cyBjb2RlIGFuZCBtYWtlIGhpbSBlbmRvcnNlIHlvdXIgYnVncy4gVG8Kc29sdmUgdGhpcyBwcm9i bGVtLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBhZGQgYSBsaW5lIGJldHdlZW4gdGhlCmxh c3QgU2lnbmVkLW9mZi1ieSBoZWFkZXIgYW5kIHlvdXJzLCBpbmRpY2F0aW5nIHRoZSBuYXR1cmUg b2YgeW91cgpjaGFuZ2VzLiIKCmh0dHA6Ly9naXQua2VybmVsLm9yZy9jZ2l0L2xpbnV4L2tlcm5l bC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3RyZWUvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0 Y2hlcz9pZD00ZThhMjM3MmY5MjU1YTE0NjRlZjQ4OGVkOTI1NDU1ZjUzZmJkYWExI24zMzgKCj4g SSB3b3VsZCBtb3ZlIHRoZW0gaW4gYSBjaGFuZ2Vsb2cuIFlvdSBjYW4gc2VwYXJhdGUgdGhlIGNv bW1pdCBtZXNzYWdlIGFuZAo+IHRoZSBjaGFuZ2Vsb2cgYnkgLS0tIGFuZCBhIG5ld2xpbmUuIEV2 ZXJ5dGhpbmcgYWZ0ZXIgdGhlIC0tLSB3aWxsIGJlIHJlbW92ZWQKPiBieSBnaXQgYW0uCj4KPj4g U2lnbmVkLW9mZi1ieTogVGhvbWFzIExlb25hcmQgPHRhbGV4NUBnbWFpbC5jb20+Cj4+IC0tLQo+ PiAgIGV4dHJhcy9taW5pLW9zL0FSTS1UT0RPLnR4dCAgICAgICAgICAgICAgfCAgIDYgKwo+PiAg IGV4dHJhcy9taW5pLW9zL0NvbmZpZy5tayAgICAgICAgICAgICAgICAgfCAgIDIgKwo+PiAgIGV4 dHJhcy9taW5pLW9zL01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgIDkgKysKPj4gICBleHRy YXMvbWluaS1vcy9hcmNoL2FybS9NYWtlZmlsZSAgICAgICAgIHwgIDMyICsrKysKPj4gICBleHRy YXMvbWluaS1vcy9hcmNoL2FybS9hcmNoLm1rICAgICAgICAgIHwgICA3ICsKPj4gICBleHRyYXMv bWluaS1vcy9hcmNoL2FybS9hcm0zMi5TICAgICAgICAgIHwgMjY2Cj4+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPj4gICBleHRyYXMvbWluaS1vcy9hcmNoL2FybS9ldmVudHMuYyAg ICAgICAgIHwgIDMwICsrKysKPj4gICBleHRyYXMvbWluaS1vcy9hcmNoL2FybS9naWMuYyAgICAg ICAgICAgIHwgMjIyCj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgZXh0cmFzL21p bmktb3MvYXJjaC9hcm0vaHlwZXJjYWxsczMyLlMgICB8ICA3NSArKysrKysrKysKPj4gICBleHRy YXMvbWluaS1vcy9hcmNoL2FybS9taW5pb3MtYXJtMzIubGRzIHwgIDc1ICsrKysrKysrKwo+PiAg IGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL21tLmMgICAgICAgICAgICAgfCAxMzQgKysrKysrKysr KysrKysrKwo+PiAgIGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL3NjaGVkLmMgICAgICAgICAgfCAg MzcgKysrKysKPj4gICBleHRyYXMvbWluaS1vcy9hcmNoL2FybS9zZXR1cC5jICAgICAgICAgIHwg MTE2ICsrKysrKysrKysrKysrCj4+ICAgZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vdGltZS5jICAg ICAgICAgICB8IDIwMiArKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGV4dHJhcy9taW5pLW9z L2tlcm5lbC5jICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KPj4gICAxNSBmaWxlcyBjaGFuZ2Vk LCAxMjE0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgZXh0cmFzL21pbmktb3MvQVJNLVRPRE8udHh0Cj4+ICAgY3JlYXRlIG1vZGUgMTAwNzU1IGV4 dHJhcy9taW5pLW9zL2FyY2gvYXJtL01ha2VmaWxlCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4 dHJhcy9taW5pLW9zL2FyY2gvYXJtL2FyY2gubWsKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0 cmFzL21pbmktb3MvYXJjaC9hcm0vYXJtMzIuUwo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHRy YXMvbWluaS1vcy9hcmNoL2FybS9ldmVudHMuYwo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHRy YXMvbWluaS1vcy9hcmNoL2FybS9naWMuYwo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHRyYXMv bWluaS1vcy9hcmNoL2FybS9oeXBlcmNhbGxzMzIuUwo+PiAgIGNyZWF0ZSBtb2RlIDEwMDc1NSBl eHRyYXMvbWluaS1vcy9hcmNoL2FybS9taW5pb3MtYXJtMzIubGRzCj4+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL21tLmMKPj4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vc2NoZWQuYwo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBleHRyYXMvbWluaS1vcy9hcmNoL2FybS9zZXR1cC5jCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGV4dHJhcy9taW5pLW9zL2FyY2gvYXJtL3RpbWUuYwo+Pgo+PiBkaWZmIC0tZ2l0IGEvZXh0cmFz L21pbmktb3MvQ29uZmlnLm1rIGIvZXh0cmFzL21pbmktb3MvQ29uZmlnLm1rCj4+IGluZGV4IGQ2 MTg3N2IuLjRlY2RlNTQgMTAwNjQ0Cj4+IC0tLSBhL2V4dHJhcy9taW5pLW9zL0NvbmZpZy5tawo+ PiArKysgYi9leHRyYXMvbWluaS1vcy9Db25maWcubWsKPj4gQEAgLTEyLDYgKzEyLDggQEAgZXhw b3J0IFhFTl9JTlRFUkZBQ0VfVkVSU0lPTgo+PiAgICMgSWYgbm90IHg4NiB0aGVuIHVzZSAkKFhF Tl9UQVJHRVRfQVJDSCkKPj4gICBpZmVxICgkKGZpbmRzdHJpbmcgeDg2XywkKFhFTl9UQVJHRVRf QVJDSCkpLHg4Nl8pCj4+ICAgVEFSR0VUX0FSQ0hfRkFNID0geDg2Cj4+ICtlbHNlIGlmZXEgKCQo ZmluZHN0cmluZyBhcm0sJChYRU5fVEFSR0VUX0FSQ0gpKSxhcm0pCj4+ICtUQVJHRVRfQVJDSF9G QU0gPSBhcm0KPj4gICBlbHNlCj4+ICAgVEFSR0VUX0FSQ0hfRkFNID0gJChYRU5fVEFSR0VUX0FS Q0gpCj4+ICAgZW5kaWYKPj4gZGlmZiAtLWdpdCBhL2V4dHJhcy9taW5pLW9zL01ha2VmaWxlIGIv ZXh0cmFzL21pbmktb3MvTWFrZWZpbGUKPj4gaW5kZXggOTMxY2QwNS4uMDFkOGFmMCAxMDA2NDQK Pj4gLS0tIGEvZXh0cmFzL21pbmktb3MvTWFrZWZpbGUKPj4gKysrIGIvZXh0cmFzL21pbmktb3Mv TWFrZWZpbGUKPj4gQEAgLTc4LDYgKzc4LDkgQEAgVEFSR0VUIDo9IG1pbmktb3MKPj4gICBTVUJE SVJTIDo9IGxpYiB4ZW5idXMgY29uc29sZQo+Pgo+PiAgIGlmZXEgKCQoWEVOX1RBUkdFVF9BUkNI KSxhcm0zMikKPj4gKyMgTmVlZCBsaWJnY2MuYSBmb3IgZGl2aXNpb24gaGVscGVycwo+PiArTERM SUJTICs9IGAkKENDKSAtcHJpbnQtbGliZ2NjLWZpbGUtbmFtZWAKPgo+Cj4gT09JLCBob3cgbXVj aCBjb2RlIGRvZXMgYWRkIGxpYmdjYyBmb3IgdGhlIGRpdmlzaW9uIGhlbHBlcnM/CgpIYXJkIHRv IHNheS4gbGliZ2NjLmEgY29udGFpbnMgbWFueSBmaWxlcywgYnV0IHRoZSBvbmVzIHdpdGggImRp diIgaW4KdGhlIG5hbWUgY29tZSB0byBhYm91dCA2N0ssIHNvIHByb2JhYmx5IGxlc3MgdGhhbiB0 aGF0LgoKPj4gZGlmZiAtLWdpdCBhL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL01ha2VmaWxlCj4+ IGIvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vTWFrZWZpbGUKPj4gbmV3IGZpbGUgbW9kZSAxMDA3 NTUKPj4gaW5kZXggMDAwMDAwMC4uOGI3ODY1MQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2V4 dHJhcy9taW5pLW9zL2FyY2gvYXJtL01ha2VmaWxlCj4+IEBAIC0wLDAgKzEsMzIgQEAKPj4gKyMK Pj4gKyMgQVJNIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBtYWtlZmlsZXMuCj4+ICsjCj4+ICsKPj4g K1hFTl9ST09UID0gJChDVVJESVIpLy4uLy4uLy4uLy4uCj4+ICtpbmNsdWRlICQoWEVOX1JPT1Qp L0NvbmZpZy5tawo+PiAraW5jbHVkZSAuLi8uLi9Db25maWcubWsKPj4gKwo+PiArIyBpbmNsdWRl IGFyY2gubWsgaGFzIHRvIGJlIGJlZm9yZSBtaW5pb3MubWshCj4+ICsKPj4gK2luY2x1ZGUgYXJj aC5tawo+PiAraW5jbHVkZSAuLi8uLi9taW5pb3MubWsKPj4gKwo+PiArIyBTb3VyY2VzIGhlcmUg YXJlIGFsbCAqLmMgKHdpdGhvdXQgJChYRU5fVEFSR0VUX0FSQ0gpLlMpCj4+ICsjIFRoaXMgaXMg aGFuZGxlZCBpbiAkKEhFQURfQVJDSF9PQkopCj4+ICtBUkNIX1NSQ1MgOj0gJCh3aWxkY2FyZCAq LmMpCj4+ICsKPj4gKyMgVGhlIG9iamVjdHMgYnVpbHQgZnJvbSB0aGUgc291cmNlcy4KPj4gK0FS Q0hfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKE9CSl9ESVIpLyUubywkKEFSQ0hfU1JDUykpCj4+ ICsKPj4gK0FSQ0hfT0JKUyArPSBoeXBlcmNhbGxzMzIubwo+PiArCj4+ICthbGw6ICQoT0JKX0RJ UikvJChBUkNIX0xJQikKPj4gKwo+PiArIyAkKEhFQURfQVJDSF9PQkopIGlzIG9ubHkgYnVpbHQg aGVyZSwgbmVlZGVkIG9uIGxpbmtpbmcKPj4gKyMgaW4gLi4vLi4vTWFrZWZpbGUuCj4+ICskKE9C Sl9ESVIpLyQoQVJDSF9MSUIpOiAkKEFSQ0hfT0JKUykgJChPQkpfRElSKS8kKEhFQURfQVJDSF9P QkopCj4+ICsgICAgICAgJChBUikgcnYgJChPQkpfRElSKS8kKEFSQ0hfTElCKSAkKEFSQ0hfT0JK UykKPj4gKwo+PiArY2xlYW46Cj4+ICsgICAgICAgcm0gLWYgJChPQkpfRElSKS8kKEFSQ0hfTElC KSAkKEFSQ0hfT0JKUykKPj4gJChPQkpfRElSKS8kKEhFQURfQVJDSF9PQkopCj4+ICsKPj4gZGlm ZiAtLWdpdCBhL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL2FyY2gubWsKPj4gYi9leHRyYXMvbWlu aS1vcy9hcmNoL2FybS9hcmNoLm1rCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAw MDAwMDAuLmFiMjBkOTkKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9leHRyYXMvbWluaS1vcy9h cmNoL2FybS9hcmNoLm1rCj4+IEBAIC0wLDAgKzEsNyBAQAo+PiAraWZlcSAoJChYRU5fVEFSR0VU X0FSQ0gpLGFybTMyKQo+PiArREVGX0FTRkxBR1MgKz0gLW1hcmNoPWFybXY3LWEKPj4gK0FSQ0hf Q0ZMQUdTICA6PSAtbWFyY2g9YXJtdjctYSAtbWFybSAtZm1zLWV4dGVuc2lvbnMgLURfX2FybV9f Cj4+IC1EWEVOX0hBVkVfUFZfR1VFU1RfRU5UUlkgIy1EQ1BVX0VYQ0xVU0lWRV9MRFNUCj4+ICtF WFRSQV9JTkMgKz0gJChUQVJHRVRfQVJDSF9GQU0pLyQoWEVOX1RBUkdFVF9BUkNIKQo+PiArRVhU UkFfU1JDICs9IGFyY2gvJChFWFRSQV9JTkMpCj4+ICtlbmRpZgo+PiArCj4+IGRpZmYgLS1naXQg YS9leHRyYXMvbWluaS1vcy9hcmNoL2FybS9hcm0zMi5TCj4+IGIvZXh0cmFzL21pbmktb3MvYXJj aC9hcm0vYXJtMzIuUwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi5k ZTc0ZWQ5Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0v YXJtMzIuUwo+PiBAQCAtMCwwICsxLDI2NiBAQAo+PiArQCBWaXJ0dWFsIGFkZHJlc3Mgb2YgdGhl IHN0YXJ0IG9mIFJBTSAoYW55IHZhbHVlIHdpbGwgZG8sIGJ1dCBpdCBtdXN0IGJlCj4+ICtAIHNl Y3Rpb24tYWxpZ25lZCkuIFVwZGF0ZSB0aGUgbGRzIHNjcmlwdCBpZiBjaGFuZ2VkLgo+PiArI2Rl ZmluZSBWSVJUX0JBU0UgMHg0MDAwMDAKPj4gKwo+PiArQCBPZmZzZXQgb2YgdGhlIGtlcm5lbCB3 aXRoaW4gdGhlIFJBTS4gVGhpcyBpcyBhIHpJbWFnZSBjb252ZW50aW9uIHdoaWNoCj4+IHdlCj4+ ICtAIHJlbHkgb24uCj4+ICsjZGVmaW5lIFpJTUFHRV9LRVJORUxfT0ZGU0VUIDB4ODAwMAo+Cj4K PiBIbW1tLi4uIHRoaXMgaXMgbm90IGEgekltYWdlIGNvbnZlbnRpb24uLi4gSUlSQyBMaW51eCBp cyB1c2luZyB0aGlzIG9mZnNldAo+IHRvIGhhdmUgZW5vdWdoIHNwYWNlIHRvIGNyZWF0ZSBzdGFy dHVwIHBhZ2UgdGFibGUgZHVyaW5nIGJvb3QuCgpPSywgc28gdGhpcyBpcyBhIGNvbnZlbnRpb24g b2YgTGludXggb25seT8gSSBmb3VuZCB0aGlzIHJlZmVyZW5jZToKCmh0dHA6Ly93d3cuc2ltdGVj LmNvLnVrL3Byb2R1Y3RzL1NXTElOVVgvZmlsZXMvYm9vdGluZ19hcnRpY2xlLmh0bWwKCiJEZXNw aXRlIHRoZSBhYmlsaXR5IHRvIHBsYWNlIHpJbWFnZSBhbnl3aGVyZSB3aXRoaW4gbWVtb3J5LApj b252ZW50aW9uIGhhcyBpdCB0aGF0IGl0IGlzIGxvYWRlZCBhdCB0aGUgYmFzZSBvZiBwaHlzaWNh bCBSQU0gcGx1cwphbiBvZmZzZXQgb2YgMHg4MDAwICgzMkspLiBUaGlzIGxlYXZlcyBzcGFjZSBm b3IgdGhlIHBhcmFtZXRlciBibG9jawp1c3VhbGx5IHBsYWNlZCBhdCBvZmZzZXQgMHgxMDAsIHpl cm8gcGFnZSBleGNlcHRpb24gdmVjdG9ycyBhbmQgcGFnZQp0YWJsZXMuIFRoaXMgY29udmVudGlv biBpcyAqdmVyeSogY29tbW9uLiIKCj4gVGhlIExpbnV4IHpJbWFnZSBpcyBhYmxlIHRvIHJlbG9j YXRlIGl0c2VsZiBpbiB0aGUgbWVtb3J5IHRvIHJlc3BlY3QgdGhpcwo+IGNvbnZlbnRpb24uIEJ1 dCB0aGUgekltYWdlIGl0c2VsZiBjYW4gYmUgbG9hZGVkIGFueXdoZXJlIGluIHRoZSBtZW1vcnku Cj4KPiBCeSBsb29raW5nIHRvIHlvdXIgY29kZSBiZWxvdyB5b3VyIGFyZSByZWx5aW5nIHRoYXQg dGhlIGtlcm5lbCB3aWxsIGJlCj4gbG9hZGVkIGF0IDB4WFhYWDgwMDAgd2hpY2ggaXMgaW5jb3Jy ZWN0LiBUaGlzIG9mZnNldCBpcyBvZGQgYW5kIG1ha2Ugb3RoZXIKPiBrZXJuZWwgKHN1Y2ggYXMg RnJlZUJTRCkgcmVxdWlyaW5nIHRoZSBzYW1lIHRyaWNrIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRo ZQo+IExpbnV4IGJvb3QgcHJvdG9jb2wuCgpTb3JyeSwgSSBkb24ndCB1bmRlcnN0YW5kIHRoaXMu IFlvdSdyZSBzYXlpbmcgdGhhdCBYZW4ncyBjaG9pY2Ugb2YKMHg4MDAwIGZvcmNlcyBGcmVlQlNE IHRvIHN1cHBvcnQgdGhpcyBvZmZzZXQgdG9vPyBCdXQgdGhhdCBpc24ndApjYXVzZWQgYnkgYW55 dGhpbmcgaW4gTWluaS1PUy4KCj4gSSBwbGFuIHRvIHNlbmQgYSBwYXRjaCB0byByZXF1aXJlIHRo ZSBzdGFydCBhZGRyZXNzIHRvIGJlIDJNQiBhbGlnbmVkLCBzbwo+IGtlcm5lbHMgd2lsbCBiZSBh YmxlIHRvIHVzZSAyTUIgKGZvciBMUEFFKSBhbmQgMU1CIHNlY3Rpb24gZm9yIHRoZXJlIGVhcmx5 Cj4gcGFnZSB0YWJsZS4KPgo+IElmIHRoZSBrZXJuZWwgd2FudHMgYW5vdGhlciBhbGlnbm1lbnQs IHRoZW4geW91IHdpbGwgaGF2ZSB0byByZWxvY2F0ZQo+IHlvdXJzZWxmLiBFdmVuIHRob3VnaCBp biB5b3VyIGNhc2UsIHlvdSBkb24ndCBuZWVkIHRoaXMgb2RkIDB4WFhYWDgwMDAuCgpJdCdzIHZl cnkgY29udmVuaWVudCB0byBrbm93IGF0IGxlYXN0IHRoZSBvZmZzZXQgd2hlcmUgd2Ugd2lsbCBi ZQpsb2FkZWQuIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBtb3ZlIHRoZSBpbWFnZSBhcm91bmQgaW4g bWVtb3J5IHdpdGgKbG9hZHMgYW5kIHN0b3Jlcy4gSSB0aGluayB0aGVyZSBpcyBzb21lIHdvcmsg Z29pbmcgb24gdG8gc2hhcmUgaW1hZ2VzCmJldHdlZW4gVk1zIChmb3IgcnVubmluZyBsYXJnZSBu dW1iZXJzIG9mIFZNcyBvbiBvbmUgbWFjaGluZSkuIEkgZG9uJ3QKa25vdyB0aGUgZGV0YWlscywg YnV0IHByZXN1bWFibHkgaXQgd291bGQgYmUgZWFzaWVyIHRvIHN1cHBvcnQgdGhhdCBpZgp0aGUg aW1hZ2UncyB0ZXh0IHNlY3Rpb24gY2FuIGJlIG1hcHBlZCByZWFkLW9ubHkuCgo+IFsuLl0KPgo+ Cj4+ICsgICAgICAgQCBGaWxsIGluIHRoZSB3aG9sZSB0b3AtbGV2ZWwgdHJhbnNsYXRpb24gdGFi bGUgKGF0IHBhZ2VfZGlyKS4KPj4gKyAgICAgICBAIFBvcHVsYXRlIHRoZSB3aG9sZSBwYWdlZGly IHdpdGggMU1CIHNlY3Rpb24gZGVzY3JpcHRvcnMuCj4+ICsKPj4gKyAgICAgICBtb3YgICAgIHIx LCByNyAgICAgICAgICAgICAgICAgIEAgcjEgLT4gZmlyc3Qgc2VjdGlvbiBlbnRyeQo+PiArICAg ICAgIGFkZCAgICAgcjMsIHIxLCAjNCo0KjEwMjQgICAgICAgQCBsaW1pdCAoNCBHQiBhZGRyZXNz IHNwYWNlLCA0Cj4+IGJ5dGUgZW50cmllcykKPj4gKyAgICAgICBvcnIgICAgIHIwLCByOCwgcjkg ICAgICAgICAgICAgIEAgcjAgPSBlbnRyeSBtYXBwaW5nIHNlY3Rpb24gemVybwo+PiB0byBzdGFy dCBvZiBwaHlzaWNhbCBSQU0KPj4gKzE6Cj4+ICsgICAgICAgc3RyICAgICByMCwgW3IxXSwjNCAg ICAgICAgICAgICBAIHdyaXRlIHRoZSBzZWN0aW9uIGVudHJ5Cj4+ICsgICAgICAgYWRkICAgICBy MCwgcjAsICMxIDw8IDIwICAgICAgICBAIG5leHQgcGh5c2ljYWwgcGFnZSAod3JhcHMpCj4+ICsg ICAgICAgY21wICAgICByMSwgcjMKPj4gKyAgICAgICBibmUgICAgIDFiCj4KPgo+IEkgd291bGQg ZG9jdW1lbnQgYSBiaXQgbW9yZSB0aGlzIHBhcnQuIEl0IHRvb2sgbWUgYSBiaXQgb2YgdGltZSB0 bwo+IHVuZGVyc3RhbmQgdGhhdCB5b3UgbWFwcGluZyB0aGUgd2hvbGUgYWRkcmVzcyBzcGFjZSBp biBhbiBvZGQgbWFubmVyLgoKQ291bGQgeW91IHN1Z2dlc3Qgc29tZXRoaW5nPyBJdCdzIGhhcmQg dG8ga25vdyB3aGF0IG90aGVyIHBlb3BsZSB3aWxsCmZpbmQgY29uZnVzaW5nLiBGb3IgcmVmZXJl bmNlLCBoZXJlJ3MgdGhlIGV4aXN0aW5nIGNvbW1lbnQgaW4gdGhlIGNvZGUKd2hlcmUgSSB0cmll ZCB0byBleHBsYWluIHRoZSBzY2hlbWU6CgogICAgQCBQcm9ibGVtOiB0aGUgQyBjb2RlIHdhbnRz IHRvIGJlIGF0IGEga25vd24gYWRkcmVzcyAoVklSVF9CQVNFKSwKYnV0IFhlbiBtaWdodAogICAg QCBsb2FkIHVzIGFueXdoZXJlLiBXZSBpbml0aWFsaXNlIHRoZSBNTVUgKG1hcHBpbmcgdmlydHVh bCB0bwpwaHlzaWNhbCBAIGFkZHJlc3NlcykKICAgIEAgc28gZXZlcnl0aGluZyBlbmRzIHVwIHdo ZXJlIHRoZSBjb2RlIGV4cGVjdHMgaXQgdG8gYmUuCiAgICBACiAgICBAIFdlIGNhbGN1bGF0ZSB0 aGUgb2ZmZXQgYmV0d2VlbiB3aGVyZSB0aGUgbGlua2VyIHRob3VnaHQgX3N0YXJ0CndvdWxkIGJl IGFuZCB3aGVyZQogICAgQCBpdCBhY3R1YWxseSBpcyBhbmQgaW5pdGlhbGlzZSB0aGUgcGFnZSB0 YWJsZXMgdG8gaGF2ZSB0aGF0Cm9mZnNldCBmb3IgZXZlcnkgcGFnZS4KICAgIEAKICAgIEAgV2hl biB3ZSB0dXJuIG9uIHRoZSBNTVUsIHdlJ3JlIHN0aWxsIGV4ZWN1dGluZyBhdCB0aGUgb2xkCmFk ZHJlc3MuIFdlIGRvbid0IHdhbnQKICAgIEAgdGhlIGNvZGUgdG8gZGlzYXBwZWFyIGZyb20gdW5k ZXIgdXMuIFNvIHdlIGhhdmUgdG8gZG8gdGhlCm1hcHBpbmcgaW4gc3RhZ2VzOgogICAgQAogICAg QCAxLiBzZXQgdXAgYSBtYXBwaW5nIHRvIG91ciBjdXJyZW50IHBhZ2UgZnJvbSBib3RoIGl0cyBj dXJyZW50CmFuZCBkZXNpcmVkIGFkZHJlc3NlcwogICAgQCAyLiBlbmFibGUgdGhlIE1NVQogICAg QCAzLiBqdW1wIHRvIHRoZSBuZXcgYWRkcmVzcwogICAgQCA0LiByZW1hcCBhbGwgdGhlIG90aGVy IHBhZ2VzIHdpdGggdGhlIGNhbGN1bGF0ZWQgb2Zmc2V0Cgo+IFdoaWxlIGl0J3MgZmluZSBmb3Ig YSBmaXJzdCB2ZXJzaW9uIG9mIE1pbmktT1Mgc3VwcG9ydCBmb3IgQVJNLiBJdCB0aGluayBhdAo+ IGxvbmcgdGVybSB5b3Ugd2FudCB0byBtYXAgb25seSBuZWNlc3NhcnkgYmFuayByYW5rLiBJdCB3 aWxsIGJlIGVhc2llciB0bwo+IGNhdGNoIHByb2dyYW1taW5nIGVycm9yIGFuZCBhdm9pZCB0byB0 cmFwIGluIHRoZSBoeXBlcnZpc29yIGJlY2F1c2UgdGhlCj4gcGh5c2ljYWwgYWRkcmVzcyBkb2Vz bid0IGV4aXN0LgoKWWVzLCB0aGlzIGlzIGp1c3QgdGhlIGJvb3QgY29kZS4gRXZlbnR1YWxseSwg dGhlIEMgY29kZSBzaG91bGQgbWFrZQp0aGUgLnRleHQgcmVhZC1vbmx5IChhbmQgdW5tYXAgcGFn ZXMgdGhhdCBkb24ndCBleGlzdCwgYWx0aG91Z2ggSQpkb24ndCB0aGluayB0aGVyZSdzIGN1cnJl bnRseSBhbnkgZGlzYWR2YW50YWdlIHRvIGhhdmluZyB0aGUgdHJhcApjYXVzZWQgYnkgdGhlIHNl Y29uZCBzdGFnZSBwYWdlIHRhYmxlcykuIEkgYWxzbyB3YW50IHRvIGFkZCBndWFyZApwYWdlcyB0 byB0aGUgdGhyZWFkIHN0YWNrcyBvbmNlIHRoZXNlIGluaXRpYWwgcGF0Y2hlcyBhcmUgaW4uCgo+ IEZ1dGhlcm1vcmUsIHRoZSBkYXRhIGFib3J0IHNlbnQgYnkgdGhlIGh5cGVydmlzb3IgaXMgb2Rk IChkZWJ1ZyBzbXRoKS4KCkNvdWxkIHlvdSBleHBsYWluIHdoYXQgeW91IG1lYW4gYnkgIm9kZCIg aGVyZT8KCj4+ICsucHVzaHNlY3Rpb24gLmRhdGEKPj4gK19kYXRhOgo+PiArLmFsaWduIDE0Cj4+ ICsuZ2xvYmwgcGFnZV9kaXIKPj4gK0AgRWFjaCB3b3JkIG1hcHMgb25lIDFNQiB2aXJ0dWFsIHNl Y3Rpb24gdG8gYSBwaHlzaWNhbCBzZWN0aW9uCj4+ICtwYWdlX2RpcjoKPj4gKyAgICAgICAuZmls bCAoNCoxMDI0KSwgNCwgMHgwCj4+ICsKPj4gKy5hbGlnbiAxMgo+PiArLmdsb2JsIHNoYXJlZF9p bmZvX3BhZ2UKPj4gK3NoYXJlZF9pbmZvX3BhZ2U6Cj4+ICsgICAgICAgLmZpbGwgKDEwMjQpLCA0 LCAweDAKPj4gKwo+PiArLmFsaWduIDMKPj4gKy5nbG9ibCBzdGFjawo+PiArc3RhY2s6Cj4+ICsg ICAgICAgLmZpbGwgKDQqMTAyNCksIDQsIDB4MAo+PiArc3RhY2tfZW5kOgo+PiArCj4+ICsuYWxp Z24gMwo+PiAraXJxc3RhY2s6Cj4+ICsgICAgICAgLmZpbGwgKDEwMjQpLCA0LCAweDAKPj4gK2ly cXN0YWNrX2VuZDoKPj4gKwo+PiArLmdsb2JsIHBoeXNpY2FsX2FkZHJlc3Nfb2Zmc2V0Cj4+ICtw aHlzaWNhbF9hZGRyZXNzX29mZnNldDoKPj4gKyAgICAgICAubG9uZyAgIDAKPj4gKwo+PiArLnBv cHNlY3Rpb24KPgo+Cj4gQW55IHJlYXNvbiB0byBkZWZpbmUgdGhlc2VzIHZhcmlhYmxlcyBpbiBB U00gcmF0aGVyIHRoYW4gQz8KCkkgbm9ybWFsbHkgcHJlZmVyIHRvIGRlZmluZSB2YXJpYWJsZXMg aW4gdGhlIG1vZHVsZSB0aGF0IHNldHMgdGhlbSwKYnV0IGl0IGRvZXNuJ3QgbWFrZSBtdWNoIGRp ZmZlcmVuY2UgdG8gbWUuCgpUaG91Z2ggcGVyaGFwcyB0aGV5IHNob3VsZCBiZSBtb3ZlZCB0byB0 aGUgLmJzcyBzZWN0aW9uIChleGNlcHQgZm9yCnRoZSBwYWdlIHRhYmxlLCB3aGljaCBjb3VsZCBi ZSBtb3ZlZCB0byB0aGUgc3RhcnQgb2YgUkFNIHRvIHNpbXBsaWZ5CnRoaW5ncykuCgo+PiBkaWZm IC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vZ2ljLmMgYi9leHRyYXMvbWluaS1vcy9h cmNoL2FybS9naWMuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi41 NjQxZWIwCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0v Z2ljLmMKPj4gQEAgLTAsMCArMSwyMjIgQEAKPj4gKy8vIEFSTSBHSUMgaW1wbGVtZW50YXRpb24K Pj4gKwo+PiArI2luY2x1ZGUgPG1pbmktb3Mvb3MuaD4KPj4gKyNpbmNsdWRlIDxtaW5pLW9zL2h5 cGVydmlzb3IuaD4KPj4gKyNpbmNsdWRlIDxsaWJmZHQuaD4KPj4gKwo+PiArLy8jZGVmaW5lIFZH SUNfREVCVUcKPj4gKyNpZmRlZiBWR0lDX0RFQlVHCj4+ICsjZGVmaW5lIERFQlVHKF9mLCBfYS4u LikgXAo+PiArICAgIERFQlVHKCJNSU5JX09TKGZpbGU9dmdpYy5jLCBsaW5lPSVkKSAiIF9mICwg X19MSU5FX18sICMjIF9hKQo+Cj4KPiBEaWQgeW91IGludGVuZCB0byB1c2UgcHJpbnRrIGhlcmU/ CgpJdCBkb2VzIGxvb2sgb2RkLiBJJ2xsIHRha2UgYSBsb29rLgoKPiBbLi5dCj4KPgo+PiArdm9p ZCBnaWNfaW5pdCh2b2lkKSB7Cj4+ICsgICAgZ2ljLmdpY2RfYmFzZSA9IE5VTEw7Cj4+ICsgICAg aW50IG5vZGUgPSAwOwo+PiArICAgIGludCBkZXB0aCA9IDA7Cj4+ICsgICAgZm9yICg7OykKPj4g KyAgICB7Cj4+ICsgICAgICAgIG5vZGUgPSBmZHRfbmV4dF9ub2RlKGRldmljZV90cmVlLCBub2Rl LCAmZGVwdGgpOwo+PiArICAgICAgICBpZiAobm9kZSA8PSAwIHx8IGRlcHRoIDwgMCkKPj4gKyAg ICAgICAgICAgIGJyZWFrOwo+PiArCj4+ICsgICAgICAgIGlmIChmZHRfZ2V0cHJvcChkZXZpY2Vf dHJlZSwgbm9kZSwgImludGVycnVwdC1jb250cm9sbGVyIiwgTlVMTCkpCj4+IHsKPj4gKyAgICAg ICAgICAgIGludCBsZW4gPSAwOwo+PiArCj4+ICsgICAgICAgICAgICBpZiAoZmR0X25vZGVfY2hl Y2tfY29tcGF0aWJsZShkZXZpY2VfdHJlZSwgbm9kZSwKPj4gImFybSxjb3J0ZXgtYTE1LWdpYyIp ICYmCj4+ICsgICAgICAgICAgICAgICAgZmR0X25vZGVfY2hlY2tfY29tcGF0aWJsZShkZXZpY2Vf dHJlZSwgbm9kZSwKPj4gImFybSxjb3J0ZXgtYTktZ2ljIikgJiYKPgo+Cj4gSSBkb24ndCB0aGlu ayB0aGlzIGNvbXBhdGlibGUgaXMgbmVjZXNzYXJ5LiBDb3J0ZXggQTkgZG9lc24ndCBzdXBwb3J0 Cj4gdmlydHVhbGlzYXRpb24uCgpPSy4gSSB3YXMganVzdCBtYXRjaGluZyBvbiB0aGUgdmFsdWVz IHRoYXQgWGVuIHByb3ZpZGVzLiBhMTUtZ2ljCnNob3VsZCBiZSBmaW5lIG9uIGl0cyBvd24sIHRo b3VnaC4KCj4+ICsgICAgICAgICAgICAgICAgZmR0X25vZGVfY2hlY2tfY29tcGF0aWJsZShkZXZp Y2VfdHJlZSwgbm9kZSwKPj4gImFybSxjb3J0ZXgtYTctZ2ljIikpIHsKPj4gKyAgICAgICAgICAg ICAgICBwcmludGsoIlNraXBwaW5nIGluY29tcGF0aWJsZSBpbnRlcnJ1cHQtY29udHJvbGxlcgo+ PiBub2RlXG4iKTsKPj4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4gKyAgICAgICAgICAg IH0KPj4gKwo+PiArICAgICAgICAgICAgY29uc3QgdWludDY0X3QgKnJlZyA9IGZkdF9nZXRwcm9w KGRldmljZV90cmVlLCBub2RlLCAicmVnIiwKPj4gJmxlbik7Cj4+ICsgICAgICAgICAgICBpZiAo cmVnID09IE5VTEwgfHwgbGVuICE9IDMyKSB7Cj4KPgo+IEFzIGFza2VkIG9uIHRoZSBwcmV2aW91 cyB2ZXJzaW9uLCBpZiB5b3UgcGxhbiB0byBhc3N1bWUgc3BlY2lmaWMgcmFuZ2Ugc2l6ZQo+IGZv ciB0aGUgdGltZS1iZWluZywgcGxlYXNlIGV4cGxhaW4gdGhlIDMyLgoKT0ssIHNvIHdlIGhhdmUg dHdvIHJlZ2lzdGVycyAoR0lDQyBhbmQgR0lDRCksIGVhY2ggb2Ygd2hpY2ggY29udGFpbnMKdHdv IHBhcnRzIChhbiBhZGRyZXNzIGFuZCBhIHNpemUpLCBlYWNoIG9mIHdoaWNoIGlzIGEgNjQtYml0 IHZhbHVlICg4CmJ5dGVzKS4gU28gMiAqIDIgKiA4ID0gMzIuIFNob3VsZCBJIGNoZWNrIHRoaXMg YXMgYSBtaW5pbXVtLCBvcgpyZXF1aXJlIGl0IHRvIG1hdGNoIGV4YWN0bHk/Cgo+PiArICAgICAg ICAgICAgICAgIC8qIFRPRE86IHN1cHBvcnQgb3RoZXIgZm9ybWF0cyAqLwo+PiArICAgICAgICAg ICAgICAgIHByaW50aygiQmFkICdyZWcnIHByb3BlcnR5OiAlcCAlZFxuIiwgcmVnLCBsZW4pOwo+ PiArICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+PiArICAgICAgICAgICAgfQo+PiArICAgICAg ICAgICAgZ2ljLmdpY2RfYmFzZSA9IHRvX3ZpcnQoKGxvbmcpIGZkdDY0X3RvX2NwdShyZWdbMF0p KTsKPj4gKyAgICAgICAgICAgIGdpYy5naWNjX2Jhc2UgPSB0b192aXJ0KChsb25nKSBmZHQ2NF90 b19jcHUocmVnWzJdKSk7Cj4KPgo+IEFGQUlVLCB5b3VyIGFyZSBtYXBwaW5nIHRoZSBHSUMgcmVn aW9uIHdpdGggbm9ybWFsIGF0dHJpYnV0ZS4gV2l0aCB0aGlzCj4gYXR0cmlidXRlLCB0aGUgcHJv Y2Vzc29yIG1heSByZW9yZGVyIHRoZSB3cml0ZSBpbiB0aGUgZGV2aWNlIG1lbW9yeSwgcHJlbG9h ZAo+IG1lbW9yeSwgY2FjaGluZy4uLi4gV2hpY2ggaXMgY29tcGxldGVseSB3cm9uZyBpbiB0aGlz IGNhc2UuIEknbSBzYSBiaXQKPiBzdXJwcmlzZWQgdGhhdCBpdCB3b3JrcyBjb3JyZWN0bHkuIFlv dSBoYXZlIHRvIG1hcCB0aG9zZXMgcmVnaW9ucyBhcyBkZXZpY2UKPiBtZW1vcnkuCgpJIGJlbGll dmUgdGhhdCB0aGUgQVJNIHVzZXMgdGhlIG1vc3QgcmVzdHJpY3RpdmUgbWVtb3J5IHR5cGUgZnJv bSB0aGUKdHdvIHN0YWdlcyBvZiB0aGUgdHJhbnNsYXRpb24gdGFibGUsIHNvIGlmIFhlbiBtYXBz IGl0IGFzIGRldmljZQptZW1vcnkgdGhlbiBpdCB3aWxsIHdvcmsuIFdlIGNhbiBzZXQgaXQgaGVy ZSBhcyB3ZWxsLCB0aG91Z2guCgooc2VlICJPdmVybGF5aW5nIHRoZSBtZW1vcnkgdHlwZSBhdHRy aWJ1dGUiIGluIHRoZSBBcmNoaXRlY3R1cmUKUmVmZXJlbmNlIE1hbnVhbCkKCj4gWy4uXQo+Cj4K Pj4gZGlmZiAtLWdpdCBhL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL2h5cGVyY2FsbHMzMi5TCj4+ IGIvZXh0cmFzL21pbmktb3MvYXJjaC9hcm0vaHlwZXJjYWxsczMyLlMKPj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uMGQ3NjYyZAo+PiAtLS0gL2Rldi9udWxsCj4+ICsr KyBiL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL2h5cGVyY2FsbHMzMi5TCj4KPgo+IFsuLl0KPgo+ Cj4+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9tZW1vcnlfb3AgICAgICAgICAgICAxMgo+PiArI2Rl ZmluZSBfX0hZUEVSVklTT1JfeGVuX3ZlcnNpb24gICAgICAgICAgMTcKPj4gKyNkZWZpbmUgX19I WVBFUlZJU09SX2NvbnNvbGVfaW8gICAgICAgICAgIDE4Cj4+ICsjZGVmaW5lIF9fSFlQRVJWSVNP Ul9ncmFudF90YWJsZV9vcCAgICAgICAyMAo+PiArI2RlZmluZSBfX0hZUEVSVklTT1JfdmNwdV9v cCAgICAgICAgICAgICAgMjQKPj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX3hzbV9vcCAgICAgICAg ICAgICAgIDI3Cj4+ICsjZGVmaW5lIF9fSFlQRVJWSVNPUl9zY2hlZF9vcCAgICAgICAgICAgICAy OQo+PiArI2RlZmluZSBfX0hZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcCAgICAgMzIKPj4gKyNk ZWZpbmUgX19IWVBFUlZJU09SX3BoeXNkZXZfb3AgICAgICAgICAgIDMzCj4+ICsjZGVmaW5lIF9f SFlQRVJWSVNPUl9odm1fb3AgICAgICAgICAgICAgICAzNAo+PiArI2RlZmluZSBfX0hZUEVSVklT T1Jfc3lzY3RsICAgICAgICAgICAgICAgMzUKPj4gKyNkZWZpbmUgX19IWVBFUlZJU09SX2RvbWN0 bCAgICAgICAgICAgICAgIDM2Cj4KPgo+IEhtbW0uLi4gd2h5IGRvIHlvdSBoYXJkY29kZSB0aG9z ZSBudW1iZXJzIGhlcmU/IENhbid0IHlvdSBpbmNsdWRlIHRoZQo+IGNvcnJlY3QgaGVhZGVyPwoK R29vZCBpZGVhLgoKPiBbLi5dCj4KPgo+PiBkaWZmIC0tZ2l0IGEvZXh0cmFzL21pbmktb3MvYXJj aC9hcm0vbWluaW9zLWFybTMyLmxkcwo+PiBiL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL21pbmlv cy1hcm0zMi5sZHMKPj4gbmV3IGZpbGUgbW9kZSAxMDA3NTUKPj4gaW5kZXggMDAwMDAwMC4uYjE4 Y2E1NQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2V4dHJhcy9taW5pLW9zL2FyY2gvYXJtL21p bmlvcy1hcm0zMi5sZHMKPj4gQEAgLTAsMCArMSw3NSBAQAo+PiArT1VUUFVUX0FSQ0goYXJtKQo+ PiArRU5UUlkoX3N0YXJ0KQo+PiArU0VDVElPTlMKPj4gK3sKPj4gKyAgLiA9IDB4NDA4MDAwOwo+ Cj4KPiBJIHdvdWxkIHVzZSB0aGUgcHJlcHJvY2Vzc29yIHRvIGF2b2lkIGhhcmRjb2RpbmcgYWRk cmVzcyBoZXJlLiBJdCB3aWxsIGhlbHAKPiBsYXRlciBpZiBzb21lb25lIHdhbnRzIHRvIGNoYW5n ZSB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBrZXJuZWwuCgpPSy4KCj4gWy4uXQo+Cj4+IGRp ZmYgLS1naXQgYS9leHRyYXMvbWluaS1vcy9hcmNoL2FybS9tbS5jIGIvZXh0cmFzL21pbmktb3Mv YXJjaC9hcm0vbW0uYwo+Cj4KPgo+IFsuLl0KPgo+Cj4+ICt2b2lkIGFyY2hfaW5pdF9tbSh1bnNp Z25lZCBsb25nICpzdGFydF9wZm5fcCwgdW5zaWduZWQgbG9uZyAqbWF4X3Bmbl9wKQo+Cj4KPiBb Li5dCj4KPgo+PiArCj4+ICsgICAgLyogWGVuIHdpbGwgYWx3YXlzIHByb3ZpZGUgdXMgYXQgbGVh c3Qgb25lIGJhbmsgb2YgbWVtb3J5Lgo+PiArICAgICAqIE1pbmktT1Mgd2lsbCB1c2UgdGhlIGZp cnN0IGJhbmsgZm9yIHRoZSB0aW1lLWJlaW5nLiAqLwo+PiArICAgIHJlZ3MgPSBmZHRfZ2V0cHJv cChkZXZpY2VfdHJlZSwgbWVtb3J5LCAicmVnIiwgJnByb3BfbGVuKTsKPj4gKyAgICBpZiAocmVn cyA9PSBOVUxMIHx8IHByb3BfbGVuICE9IDE2KSB7Cj4KPgo+IFNhbWUgcmVtYXJrIGFzIGluIGdp Y19pbml0LiBQbGVhc2UgZXhwbGFpbiB3aGVyZSBkb2VzIGNvbWUgZnJvbSB0aGUgMTYuCgpPSy4K Cj4gWy4uXQo+Cj4KPj4gKyAgICAgICAgLyogVE9ETzogc3VwcG9ydCBvdGhlciBmb3JtYXRzICov Cj4+ICsgICAgICAgIHByaW50aygiQmFkICdyZWcnIHByb3BlcnR5OiAlcCAlZFxuIiwgcmVncywg cHJvcF9sZW4pOwo+PiArICAgICAgICBCVUcoKTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICB1bnNp Z25lZCBpbnQgZW5kID0gKHVuc2lnbmVkIGludCkgJl9lbmQ7Cj4+ICsgICAgdW5zaWduZWQgaW50 IG1lbV9iYXNlID0gZmR0NjRfdG9fY3B1KHJlZ3NbMF0pOwo+PiArICAgIHVuc2lnbmVkIGludCBt ZW1fc2l6ZSA9IGZkdDY0X3RvX2NwdShyZWdzWzFdKTsKPgo+Cj4gSW4gZ2VuZXJhbCBpZiB5b3Ug aGF2ZSB0byBjYXN0L2NyZWF0ZSBhIHZhcmlhYmxlIHRvIGNvbnRhaW4gYSBwaHlzaWNhbAo+IGFk ZHJlc3MuIFBsZWFzZSBtYWtlIGNyZWF0ZSBhIHR5cGUgcGFkZHJfdCBhbmQgdXNlIGl0Lgo+Cj4g V2hlbiBzb21lb25lIHdpbGwgaW1wbGVtZW50IGFybTY0IHN1cHBvcnQgaXQgd2lsbCBoYXZlIGxl c3MgdHJvdWJsZSBiZWNhdXNlCj4gd2UgY2FzdCBjb3JyZWN0bHkgY2FzdCB0aGUgdmFsdWUuCgpH b29kIGlkZWEuCgo+IElJUkMsIHRoZXJlIGlzIGZldyBvdGhlciBwbGFjZSB3aGVyZSBpdCdzIHRo ZSBzYW1lIHByb2JsZW0uCj4KPgo+PiArLyogR2V0IFhlbidzIHN1Z2dlc3RlZCBwaHlzaWNhbCBw YWdlIGFzc2lnbm1lbnRzIGZvciB0aGUgZ3JhbnQgdGFibGUuICovCj4+ICtzdGF0aWMgdW5zaWdu ZWQgbG9uZyBnZXRfZ250dGFiX2Jhc2Uodm9pZCkKPj4gK3sKPj4gKyAgICBpbnQgaHlwZXJ2aXNv cjsKPj4gKyAgICBpbnQgbGVuID0gMDsKPj4gKyAgICBjb25zdCB1aW50NjRfdCAqcmVnczsKPj4g KyAgICB1bnNpZ25lZCBpbnQgZ250dGFiX2Jhc2U7Cj4+ICsKPj4gKyAgICBoeXBlcnZpc29yID0g ZmR0X25vZGVfb2Zmc2V0X2J5X2NvbXBhdGlibGUoZGV2aWNlX3RyZWUsIC0xLAo+PiAieGVuLHhl biIpOwo+PiArICAgIEJVR19PTihoeXBlcnZpc29yIDwgMCk7Cj4+ICsKPj4gKyAgICByZWdzID0g ZmR0X2dldHByb3AoZGV2aWNlX3RyZWUsIGh5cGVydmlzb3IsICJyZWciLCAmbGVuKTsKPj4gKyAg ICBpZiAocmVncyA9PSBOVUxMIHx8IGxlbiAhPSAxNikgewo+PiArICAgICAgICAvKiBUT0RPOiBz dXBwb3J0IG90aGVyIGZvcm1hdHMgKi8KPgo+Cj4gUGxlYXNlIGV4cGxhaW4gd2h5IHRoZSAxNi4K Ck9LLgoKPj4gKyAgICAgICAgcHJpbnRrKCJCYWQgJ3JlZycgcHJvcGVydHk6ICVwICVkXG4iLCBy ZWdzLCBsZW4pOwo+PiArICAgICAgICBCVUcoKTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBnbnR0 YWJfYmFzZSA9IGZkdDY0X3RvX2NwdShyZWdzWzBdKTsKPgo+Cj4gVGhpcyBsb29rIG9kZC4uLiB5 b3UgYXJlIHVzaW5nIHVuc2lnbmVkIGludCBmb3IgdGhlIHZhcmlhYmxlIGJ1dCB0aGUKPiBmdW5j dGlvbiBpcyByZXR1cm4gdW5zaWduZWQgbG9uZy4KCk9LLgoKPj4gKyAgICBwcmludGsoIkZEVCBz dWdnZXN0cyBncmFudCB0YWJsZSBiYXNlICVseFxuIiwgZ250dGFiX2Jhc2UpOwo+PiArCj4+ICsg ICAgcmV0dXJuIGdudHRhYl9iYXNlOwo+PiArfQo+Cj4KPiBbLi5dCj4KPiBSZWdhcmRzLAo+Cj4g LS0KPiBKdWxpZW4gR3JhbGwKClRoYW5rcywKCgotLSAKRHIgVGhvbWFzIExlb25hcmQgICAgICAg IGh0dHA6Ly8waW5zdGFsbC5uZXQvCkdQRzogOTI0MiA5ODA3IEM5ODUgM0MwNyA0NEE2ICA4QjlB IEFFMDcgODI4MCA1OUE1IDNDQzEKR1BHOiBEQTk4IDI1QUUgQ0FEMCA4OTc1IDdDREEgIEJEOEUg MDcxMyAzRjk2IENBNzQgRDhCQQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK