From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dhcBU-0002qO-Rk for barebox@lists.infradead.org; Tue, 15 Aug 2017 13:47:50 +0000 Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dhcB6-0007jG-6A for barebox@lists.infradead.org; Tue, 15 Aug 2017 15:46:40 +0200 Received: from jbe by dude.hi.pengutronix.de with local (Exim 4.89) (envelope-from ) id 1dhcB5-00040Y-Sf for barebox@lists.infradead.org; Tue, 15 Aug 2017 15:46:39 +0200 From: Juergen Borleis Date: Tue, 15 Aug 2017 15:46:36 +0200 Message-Id: <20170815134636.21236-8-jbe@pengutronix.de> In-Reply-To: <20170815134636.21236-1-jbe@pengutronix.de> References: <20170815134636.21236-1-jbe@pengutronix.de> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH 7/7] docs: rework and extend the 'state' and 'bootchooser' documentation To: barebox@lists.infradead.org TWFueSBsaW5rcyBiZXR3ZWVuIHNlY3Rpb25zIGFuZCBleGFtcGxlcyB3ZXJlIGFkZGVkIHRvIGdp dmUgdGhlIGRldmVsb3Blcgp0aGUgaGVscCB0byBnZXQgaXQgd29yay4KClNpZ25lZC1vZmYtYnk6 IEp1ZXJnZW4gQm9ybGVpcyA8amJlQHBlbmd1dHJvbml4LmRlPgotLS0KIC4uLi9kZXZpY2V0cmVl L2JpbmRpbmdzL2JhcmVib3gvYmFyZWJveCxzdGF0ZS5yc3QgIHwgMzMyICsrKysrKy0tLS0KIERv Y3VtZW50YXRpb24vdXNlci9ib290Y2hvb3Nlci5yc3QgICAgICAgICAgICAgICAgIHwgNDkzICsr KysrKysrKysrLS0tLQogRG9jdW1lbnRhdGlvbi91c2VyL3N0YXRlLnJzdCAgICAgICAgICAgICAg ICAgICAgICAgfCA2OTYgKysrKysrKysrKysrKysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDEy MDQgaW5zZXJ0aW9ucygrKSwgMzE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50 YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9iYXJlYm94L2JhcmVib3gsc3RhdGUucnN0IGIvRG9j dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2JhcmVib3gvYmFyZWJveCxzdGF0ZS5yc3QK aW5kZXggNDBkN2JjMmU2Li40YjFhYWRlNjYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2 aWNldHJlZS9iaW5kaW5ncy9iYXJlYm94L2JhcmVib3gsc3RhdGUucnN0CisrKyBiL0RvY3VtZW50 YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9iYXJlYm94L2JhcmVib3gsc3RhdGUucnN0CkBAIC0x LDU1ICsxLDg5IEBACiAuLiBfYmFyZWJveCxzdGF0ZToKIAotYmFyZWJveCBzdGF0ZQorQmFyZWJv eCBzdGF0ZQogPT09PT09PT09PT09PQogCi1PdmVydmlldwotLS0tLS0tLS0KK0EgKnN0YXRlKiB2 YXJpYWJsZSBzZXQgY2FuIGJlIGZ1bGx5IGRlc2NyaWJlZCBhcyBhIGRldmljZXRyZWUgYmFzZWQg KnN0YXRlKiBub2RlLgorVGhpcyAqc3RhdGUqIG5vZGUgY291bGQgYmUgcGFydCBvZiB0aGUgcmVn dWxhciBwbGF0Zm9ybSdzIGRldmljZXRyZWUgYmxvYiBvciBpdAorY291bGQgYmUgYW4gZXh0cmEg ZGV2aWNldHJlZSBzb2xlbHkgZm9yIHRoZSAqc3RhdGUqLgogCitEZXZpY2V0cmVlICpzdGF0ZSog Tm9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQm9hcmRzIG9mdGVuIGhhdmUgdGhlIG5l ZWQgdG8gc3RvcmUgdmFyaWFibGVzIGluIHBlcnNpc3RlbnQgbWVtb3J5LgotVGhlIGNvbnN0cmFp bnRzIGFyZSBvZnRlbiBkaWZmZXJlbnQgZnJvbSB3aGF0IHRoZSByZWd1bGFyIGVudmlyb25tZW50 Ci1jYW4gZG86CitBICpzdGF0ZSogbm9kZSBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIGEgc2V0 IG9mIHZhcmlhYmxlcyBhbG9uZyB3aXRoIGEKK3BsYWNlIHdoZXJlIHRoZSB2YXJpYWJsZSBzZXQg Z2V0cyBzdG9yZWQuCiAKLSogY29tcGFjdCBiaW5hcnkgZm9ybWF0IHRvIG1ha2UgaXQgc3VpdGFi bGUgZm9yIHNtYWxsIEVFUFJPTXMvTVJBTXMKLSogYXRvbWljIHNhdmUvcmVzdG9yZSBvZiB0aGUg d2hvbGUgdmFyaWFibGUgc2V0Ci0qIHJlZHVuZGFuY3kKK1JlcXVpcmVkIFByb3BlcnRpZXMKKyMj IyMjIyMjIyMjIyMjIyMjIyMKIAotYGBiYXJlYm94LHN0YXRlYGAgaXMgYSBmcmFtZXdvcmsgdG8g ZGVzY3JpYmUsIGFjY2Vzcywgc3RvcmUgYW5kCi1yZXN0b3JlIGEgc2V0IG9mIHZhcmlhYmxlcy4g QSBzdGF0ZSB2YXJpYWJsZSBzZXQgY2FuIGJlIGZ1bGx5Ci1kZXNjcmliZWQgaW4gYSBkZXZpY2V0 cmVlIG5vZGUuIFRoaXMgbm9kZSBjb3VsZCBiZSBwYXJ0IG9mIHRoZSByZWd1bGFyCi1kZXZpY2V0 cmVlIGJsb2Igb3IgaXQgY291bGQgYmUgYW4gZXh0cmEgZGV2aWNldHJlZSBzb2xlbHkgZm9yIHRo ZQotc3RhdGUuIFRoZSBzdGF0ZSB2YXJpYWJsZSBzZXQgY29udGFpbnMgdmFyaWFibGVzIG9mIGRp ZmZlcmVudCB0eXBlcwotYW5kIGEgcGxhY2UgdG8gc3RvcmUgdGhlIHZhcmlhYmxlIHNldC4KKyog YGBjb21wYXRpYmxlYGA6IHNob3VsZCBiZSBgYGJhcmVib3gsc3RhdGVgYAorKiBgYG1hZ2ljYGA6 IGEgMzJiaXQgbnVtYmVyCisqIGBgYmFja2VuZGBgOiBwaGFuZGxlIHRvIHBlcnNpc3RlbnQgbWVt b3J5CisqIGBgYmFja2VuZC10eXBlYGA6IGRlZmluZXMgdGhlICpzdGF0ZSogdmFyaWFibGUgc2V0 IHN0b3JhZ2UgZm9ybWF0CisqIGFkZGl0aW9uYWxseSBhICpzdGF0ZSogbm9kZSBtdXN0IGhhdmUg YW4gYWxpYXMgaW4gdGhlIGBgL2FsaWFzZXNgYCBub2RlIHBvaW50aW5nCisgIHRvIGl0LgogCi1B IHN0YXRlIG5vZGUgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiBhIHNldCBvZiB2YXJpYWJsZXMg YWxvbmcgd2l0aCBhCi1wbGFjZSB3aGVyZSB0aGUgdmFyaWFibGVzIGFyZSBzdG9yZWQuCisuLiBf YmFyZWJveCxzdGF0ZV9tYWdpYzoKIAotUmVxdWlyZWQgcHJvcGVydGllczoKK1RoZSBgYG1hZ2lj YGAgcHJvcGVydHkgaXMgYSB1bmlxdWUgbnVtYmVyIHdoaWNoIGlkZW50aWZpZXMgdGhlICpzdGF0 ZSogdmFyaWFibGUKK3NldCdzIHZhcmlhYmxlIHR5cGVzIGFuZCB0aGVpciBsYXlvdXQuIEl0IHNo b3VsZCBiZSBrZXB0IHN0YWJsZSBhcyBsb25nIGFzIHRoZQordmFyaWFibGUgdHlwZXMgYW5kIHRo ZSBsYXlvdXQgYXJlIGtlcHQgc3RhYmxlLiBJdCBzaG91bGQgYWxzbyBiZSBrZXB0IHN0YWJsZQor aWYgbmV3IHRyYWlsaW5nIHZhcmlhYmxlcyBhcmUgYWRkZWQgdG8gdGhlIGV4aXN0aW5nIGxheW91 dCB0byBiZSBiYWNrd2FyZAorY29tcGF0aWJsZS4gT25seSBpZiB0aGUgKnN0YXRlKiB2YXJpYWJs ZSBzZXQncyB2YXJpYWJsZSB0eXBlcyBhbmQvb3IgdGhlaXIgbGF5b3V0CitjaGFuZ2UsIHRoZSBg YG1hZ2ljYGAgcHJvcGVydHkncyBudW1iZXIgbXVzdCBiZSBjaGFuZ2VkIHRvIGJlIHVuaXF1ZSBh Z2Fpbgord2l0aCB0aGUgbmV3ICpzdGF0ZSogdmFyaWFibGUgc2V0J3MgY29udGVudC4KIAotKiBg YGNvbXBhdGlibGVgYDogc2hvdWxkIGJlIGBgYmFyZWJveCxzdGF0ZWBgOwotKiBgYG1hZ2ljYGA6 IEEgMzJiaXQgbnVtYmVyIHVzZWQgYXMgYSBtYWdpYyB0byBpZGVudGlmeSB0aGUgc3RhdGUKLSog YGBiYWNrZW5kYGA6IGNvbnRhaW5zIGEgcGhhbmRsZSB0byB0aGUgZGV2aWNlL3BhcnRpdGlvbiB3 aGljaCBob2xkcyB0aGUKLSAgYWN0dWFsIHN0YXRlIGRhdGEuCi0qIGBgYmFja2VuZC10eXBlYGA6 IHNob3VsZCBiZSBgYHJhd2BgIG9yIGBgZHRiYGAuCi0qIGFkZGl0aW9uYWxseSBhIHN0YXRlIG5v ZGUgbXVzdCBoYXZlIGFuIGFsaWFzIGluIHRoZSAvYWxpYXNlcy8gbm9kZSBwb2ludGluZwotICB0 byBpdC4KKy4uIGltcG9ydGFudDo6IFlvdSBzaG91bGQgbm90IHVzZSB0aGUgdmFsdWVzIDB4MjM1 NGZkZjMgYW5kIDB4MTRmYTJkMDIgZm9yIHlvdXIKKyAgIG1hZ2ljIHZhbHVlLiBUaGV5J3JlIGFs cmVhZHkgcmVzZXJ2ZWQgYnkgdGhlIGBgZGlyZWN0YGAgYW5kIGBgY2lyY3VsYXJgYAorICAgc3Rv cmFnZSBiYWNrZW5kcy4KIAotT3B0aW9uYWwgcHJvcGVydGllczoKK1RoZSBgYGJhY2tlbmRgYCBw cm9wZXJ0eSB1c2VzIHRoZSAqcGhhbmRsZSogbWVjaGFuaXNtIHRvIGxpbmsgdGhlICpzdGF0ZSog dG8KK2EgcmVhbCBwZXJzaXN0ZW50IG1lbW9yeS4gUmVmZXIgOnJlZjpgQmFja2VuZCA8c3RhdGVf ZnJhbWV3b3JrLGJhY2tlbmRzPmAgZm9yCitzdXBwb3J0ZWQgcGVyc2lzdGVudCBtZW1vcmllcy4K IAotKiBgYGFsZ29gYDogQSBITUFDIGFsZ29yaXRobSB1c2VkIHRvIGRldGVjdCBtYW5pcHVsYXRp b24gb2YgdGhlIGRhdGEKLSAgb3IgaGVhZGVyLCBzZW5zaWJsZSB2YWx1ZXMgZm9sbG93IHRoaXMg cGF0dGVybiBgYGhtYWMoPEhBU0g+KWBgLAotICBlLmcuIGBgaG1hYyhzaGEyNTYpYGAuIE9ubHkg dXNlZCBmb3IgYGByYXdgYC4KLSogYGBiYWNrZW5kLXN0cmlkZXNpemVgYDogTWF4aW11bSBzaXpl IHBlciBjb3B5IG9mIHRoZSBkYXRhLiBPbmx5IGltcG9ydGFudCBmb3IKLSAgbm9uLU1URCBkZXZp Y2VzCi0qIGBgYmFja2VuZC1zdG9yYWdlLXR5cGVgYDogTm9ybWFsbHkgdGhlIGNvcnJlY3Qgc3Rv cmFnZSB0eXBlIGlzIGRldGVjdGVkIGF1dG8tCi0gIG1hdGljYWxseS4gVGhlIGNpcmN1bGFyIGJh Y2tlbmQgc3VwcG9ydHMgdGhlIG9wdGlvbiBgYG5vbmNpcmN1bGFyYGAgdG8gZmFsbAotICBiYWNr IHRvIGFuIG9sZCBzdG9yYWdlIGZvcm1hdC4KK1RoZSBgYGJhY2tlbmQtdHlwZWBgIHNob3VsZCBi ZSBgYHJhd2BgIG9yIGBgZHRiYGAuIFJlZmVyCis6cmVmOmBCYWNrZW5kIFR5cGVzIDxzdGF0ZV9m cmFtZXdvcmssYmFja2VuZF90eXBlcz5gIGZvciBmdXJ0aGVyIGRldGFpbHMuCiAKLVZhcmlhYmxl IG5vZGVzCi0tLS0tLS0tLS0tLS0tLQorT3B0aW9uYWwgUHJvcGVydGllcworIyMjIyMjIyMjIyMj IyMjIyMjIwogCi1UaGVzZSBhcmUgc3Vibm9kZXMgb2YgYSBzdGF0ZSBub2RlIGVhY2ggZGVzY3Jp YmluZyBhIHNpbmdsZQorKiBgYGJhY2tlbmQtc3RyaWRlc2l6ZWBgOiBzdHJpZGUgY291bnRlZCBp biBieXRlcy4gU2VlIG5vdGUgYmVsb3cuCisqIGBgYmFja2VuZC1zdG9yYWdlLXR5cGVgYDogRGVm aW5lcyB0aGUgYmFja2VuZCBzdG9yYWdlIHR5cGUgdG8gYGBkaXJlY3RgYCBvcgorICBgYGNpcmN1 bGFyYGAuIERlZmF1bHRzIHRvIGBgY2lyY3VsYXJgYCBmb3IgbWVkaWEgd2hpY2ggcmVxdWlyZXMg ZXJhc2UgY3ljbGVzLgorKiBgYGFsZ29gYDogQSBITUFDIGFsZ29yaXRobSB1c2VkIHRvIGRldGVj dCBtYW5pcHVsYXRpb24gb2YgdGhlIGRhdGEKKyAgb3IgaGVhZGVyLCBzZW5zaWJsZSB2YWx1ZXMg Zm9sbG93IHRoaXMgcGF0dGVybiBgYGhtYWMoPEhBU0g+KWBgLAorICBlLmcuIGBgaG1hYyhzaGEy NTYpYGAuIE9ubHkgYXZhaWxhYmxlIGZvciB0aGUgYGBiYWNrZW5kLXR5cGVgYCBgYHJhd2BgLgor CisuLiBub3RlOjogRm9yIHRoZSBgYGJhY2tlbmQtc3RvcmFnZS10eXBlYGAgdGhlIGtleXdvcmQg YGBub25jaXJjdWxhcmBgIGlzIHN0aWxsCisgICBzdXBwb3J0ZWQgYXMgYSBmYWxsIGJhY2sgdG8g YW4gb2xkIHN0b3JhZ2UgZm9ybWF0LiBSZWNvbW1lbmRhdGlvbiBpcyB0byBub3QKKyAgIHVzZSB0 aGlzIHR5cGUgYW55bW9yZS4KKworLi4gX2JhcmVib3gsc3RhdGVfYmFja2VuZF9zdHJpZGVzaXpl OgorCitUaGUgYGBiYWNrZW5kLXN0cmlkZXNpemVgYCBpcyBzdGlsbCBvcHRpb25hbCBidXQgcmVx dWlyZWQgd2hlbmV2ZXIgdGhlCit1bmRlcmxheWluZyBiYWNrZW5kIGRvZXNuJ3QgcHJvdmlkZSBh biBpbmZvcm1hdGlvbiBob3cgdG8gcGFkIGFuIGluc3RhbmNlIG9mIGEKKypzdGF0ZSogdmFyaWFi bGUgc2V0LiBUaGlzIGlzIHZhbGlkIGZvciBhbGwgdW5kZXJsYXlpbmcgYmFja2VuZHMgd2hpY2gg c3VwcG9ydHMKK3dyaXRlcyBvbiBhIGJ5dGUtYnktYnl0ZSBtYW5uZXIgb3IgZG9uJ3QgaGF2ZSBl cmFzZWJsb2NrcyAoRUVQUk9NLCBTUkFNIGFuZCBOT1IKK3R5cGUgZmxhc2ggYmFja2VuZHMpLgor VGhlIGBgYmFja2VuZC1zdHJpZGVzaXplYGAgdmFsdWUgaXMgdXNlZCBieSB0aGUgYGBkaXJlY3Rg YCBiYWNrZW5kIHN0b3JhZ2UgdHlwZQordG8gcGxhY2UgdGhlIHJlZHVuZGFudCAqc3RhdGUqIHZh cmlhYmxlIHNldCBjb3BpZXMgc2lkZSBieSBzaWRlIGluIHRoZSBiYWNrZW5kLgorQW5kIGl0J3Mg dXNlZCBieSB0aGUgYGBjaXJjdWxhcmBgIGJhY2tlbmQgc3RvcmFnZSB0eXBlIHRvIHBsYWNlIHRo ZSAqc3RhdGUqCit2YXJpYWJsZSBzZXQgY29waWVzIHNpZGUgYnkgc2lkZSBpbnRvIHRoZSBlcmFz ZWJsb2NrLgorWW91IHNob3VsZCBjYWxjdWxhdGUgdGhlIGBgYmFja2VuZC1zdHJpZGVzaXplYGAg dmFsdWUgdmVyeSBjYXJlZnVsbHkgYmFzZWQgb24KK3RoZSB1c2VkIGBgYmFja2VuZC10eXBlYGAs IHRoZSBzaXplIG9mIHRoZSB1c2VkIGJhY2tlbmQgKGUuZy4gcGFydGl0aW9uIHNpemUKK2ZvciBl eGFtcGxlKSBhbmQgaXRzIGVyYXNlYmxvY2sgc2l6ZS4gUmVmZXIKKzpyZWY6YEJhY2tlbmQgVHlw ZXMgPHN0YXRlX2ZyYW1ld29yayxiYWNrZW5kX3R5cGVzPmAuCisKKy4uIG5vdGU6OiBJdCBtaWdo dCBiZSB1c2VmdWwgdG8gYWRkIHNvbWUgc3BhcmUgc3BhY2UgdG8gdGhlCisgICBgYGJhY2tlbmQt c3RyaWRlc2l6ZWBgIHRvIGVuc3VyZSB0aGUgYWJpbGl0eSB0byBleHRlbmQgdGhlICpzdGF0ZSog dmFyaWFibGUKKyAgIHNldCBsYXRlciBvbi4KKworLi4gX2JhcmVib3gsc3RhdGVfdmFyaWFibGU6 CisKK1ZhcmlhYmxlIFN1Ym5vZGVzCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGVzZSBhcmUgc3Vi bm9kZXMgb2YgYSAqc3RhdGUqIG5vZGUgZWFjaCBkZXNjcmliaW5nIGEgc2luZ2xlCiB2YXJpYWJs ZS4gVGhlIG5vZGUgbmFtZSBtYXkgZW5kIHdpdGggYGBAPEFERFJFU1M+YGAsIGJ1dCB0aGUgc3Vm Zml4IGlzCiBzdHJpcHBlZCBmcm9tIHRoZSB2YXJpYWJsZSBuYW1lLgogCkBAIC01NywxMDUgKzkx LDE2MSBAQCBTdGF0ZSB2YXJpYWJsZXMgaGF2ZSBhIHR5cGUuIEN1cnJlbnR5IHN1cHBvcnRlZCB0 eXBlcyBhcmU6IGBgdWludDhgYCwKIGBgdWludDMyYGAsIGBgZW51bTMyYGAsIGBgbWFjYGAgYWRk cmVzcyBvciBgYHN0cmluZ2BgIChmaXhlZCBsZW5ndGggc3RyaW5nKS4KIFZhcmlhYmxlIGxlbmd0 aCBzdHJpbmdzIGFyZSBub3QgcGxhbm5lZC4KIAotUmVxdWlyZWQgcHJvcGVydGllczoKK1JlcXVp cmVkIFByb3BlcnRpZXMKKyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogKiBgYHJlZ2BgOiBTdGFuZGFy ZCBgYHJlZ2BgIHByb3BlcnR5IHdpdGggYGAjYWRkcmVzcy1jZWxscyA9IDwxPmBgIGFuZAogICBg YCNzaXplLWNlbGxzID0gPDE+YGAuIERlZmluZXMgdGhlIGBgb2Zmc2V0YGAgYW5kIGBgc2l6ZWBg IG9mIHRoZQotICB2YXJpYWJsZSBpbiB0aGUgYGByYXdgYCBiYWNrZW5kLiBgYHNpemVgYCBtdXN0 IGZpdCB0aGUgbm9kZQorICB2YXJpYWJsZSBpbiB0aGUgYGByYXdgYCBiYWNrZW5kLiBgYHNpemVg YCAqKm11c3QgZml0KiogdGhlIG5vZGUKICAgYGB0eXBlYGAuIFZhcmlhYmxlcyBhcmUgbm90IGFs bG93ZWQgdG8gb3ZlcmxhcC4KLSogYGB0eXBlYGA6IFNob3VsZCBiZSBgYHVpbnQ4YGAsIGBgdWlu dDMyYGAsIGBgaW50MzJgYC4gYGBlbnVtMzJgYCwgYGBtYWNgYAorKiBgYHR5cGVgYDogU2hvdWxk IGJlIGBgdWludDhgYCwgYGB1aW50MzJgYCwgYGBlbnVtMzJgYCwgYGBtYWNgYAogICBvciBgYHN0 cmluZ2BgIGZvciB0aGUgdHlwZSBvZiB0aGUgdmFyaWFibGUKLSogYGBuYW1lc2BgOiBGb3IgYGBl bnVtMzJgYCB2YWx1ZXMgb25seSwgdGhpcyBzcGVjaWZpZXMgdGhlIHZhbHVlcwotICBwb3NzaWJs ZSBmb3IgYGBlbnVtMzJgYC4KLQotT3B0aW9uYWwgcHJvcGVydGllczoKLQotKiBgYGRlZmF1bHRg YDogVGhlIGRlZmF1bHQgdmFsdWUgaWYgdGhlIHZhcmlhYmxlIGNhbm5vdCBiZSByZWFkIGZyb20K LSAgc3RvcmFnZS4gRm9yIGBgZW51bTMyYGAgdmFsdWVzIGl0IGlzIGFuIGludGVnZXIgcmVwcmVz ZW50aW5nIGFuCi0gIG9mZnNldCBpbnRvIHRoZSBuYW1lcyBhcnJheS4KLQotRXhhbXBsZTo6Ci0K LSAgL2FsaWFzZXMgewotICAJc3RhdGUgPSAmc3RhdGU7Ci0gIH07Ci0KLSAgc3RhdGU6IHN0YXRl IHsKLSAgCW1hZ2ljID0gPDB4MjcwMzE5Nzc+OwotICAJY29tcGF0aWJsZSA9ICJiYXJlYm94LHN0 YXRlIjsKLSAgCWJhY2tlbmQtdHlwZSA9ICJyYXciOwotICAJYmFja2VuZCA9IDwmc3RhdGVfcGFy dD47Ci0KLSAgCWZvbyB7Ci0gIAkJcmVnID0gPDB4MDAgMHg0PjsKLSAgCQl0eXBlID0gInVpbnQz MiI7Ci0gIAkJZGVmYXVsdCA9IDwweDA+OwotICAJfTsKLQotICAJYmFyIHsKLSAgCQlyZWcgPSA8 MHgxMCAweDQ+OwotICAJCXR5cGUgPSAiZW51bTMyIjsKLSAgCQluYW1lcyA9ICJiYXoiLCAicXV4 IjsKLSAgCQlkZWZhdWx0ID0gPDE+OwotICAJfTsKLSAgfTsKLQotICAmbmFuZF9mbGFzaCB7Ci0g IAlwYXJ0aXRpb25zIHsKLSAgCQljb21wYXRpYmxlID0gImZpeGVkLXBhcnRpdGlvbnMiOwotICAJ CSNhZGRyZXNzLWNlbGxzID0gPDE+OwotICAJCSNzaXplLWNlbGxzID0gPDE+OwotICAJCXN0YXRl X3BhcnQ6IHN0YXRlQDEwMDAwIHsKLSAgCQkJbGFiZWwgPSAic3RhdGUiOwotICAJCQlyZWcgPSA8 MHgxMDAwMCAweDEwMDAwPjsKLSAgCQl9OwotICAJfTsKLSAgfTsKLQotVmFyaWFibGUgVHlwZXMK LS0tLS0tLS0tLS0tLS0tCi0KLSogYGB1aW50OGBgOgotKiBgYHVpbnQzMmBgOgotKiBgYGludDMy YGA6Ci0qIGBgZW51bTMyYGA6IFRoZSBgYGRlZmF1bHRgYCB2YWx1ZSBpcyBhbiBpbnRlZ2VyIHJl cHJlc2VudGluZyBhbgotICBvZmZzZXQgaW50byB0aGUgbmFtZXMgYXJyYXkuCi0qIGBgbWFjYGA6 Ci0qIGBgc3RyaW5nYGA6IFRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBleGNsdWRpbmcgdGhlIHRy YWlsaW5nIDAgaXMKLSAgZGV0ZXJtaW5lZCBieSB0aGUgbGVuZ3RoIGdpdmVuIGluIHRoZSBgYHJl Z2BgIHByb3BlcnR5LgotCi1CYWNrZW5kcwotLS0tLS0tLS0KLQotQ3VycmVudGx5IHR3byBiYWNr ZW5kcyBleGlzdC4gVGhlIHJhdyBiYWNrZW5kIGlzIGEgdmVyeSBjb21wYWN0IGZvcm1hdAotY29u c2lzdGluZyBvZiBhIG1hZ2ljIHZhbHVlIGZvciBpZGVudGlmaWNhdGlvbiwgdGhlIHJhdyB2YWx1 ZXMgYW5kIGEKLUNSQy4gVHdvIGNvcGllcyBhcmUgbWFpbnRhaW5lZCBmb3IgbWFraW5nIHN1cmUg dGhhdCBkdXJpbmcgdXBkYXRlIHRoZQotc3RvcmFnZSBkZXZpY2Ugc3RpbGwgY29udGFpbnMgYSB2 YWxpZCBzdGF0ZS4gVGhlIGR0YiBiYWNrZW5kIHN0b3JlcwotdGhlIHN0YXRlIGFzIGEgZGV2aWNl dHJlZSBiaW5hcnkgYmxvYi4gVGhpcyBpcyBleGFjdGx5IHRoZSBvcmlnaW5hbAotZGV2aWNldHJl ZSBkZXNjcmlwdGlvbiBvZiB0aGUgc3RhdGUgaXRzZWxmLCBidXQgYWRkaXRpb25hbGx5IGNvbnRh aW5zCi10aGUgYWN0dWFsIHZhbHVlcyBvZiB0aGUgdmFyaWFibGVzLiBVbmxpa2UgdGhlIHJhdyBz dGF0ZSBiYWNrZW5kIHRoZQotZHRiIHN0YXRlIGJhY2tlbmQgY2FuIGRlc2NyaWJlIGl0c2VsZi4K KyogYGBuYW1lc2BgOiBGb3IgYGBlbnVtMzJgYCB2YWx1ZXMgb25seSwgdGhpcyBzcGVjaWZpZXMg dGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IKKyAgYGBlbnVtMzJgYC4KKworT3B0aW9uYWwgUHJvcGVy dGllcworIyMjIyMjIyMjIyMjIyMjIyMjIworCisqIGBgZGVmYXVsdGBgOiBUaGUgZGVmYXVsdCB2 YWx1ZSBpZiB0aGUgdmFyaWFibGUncyBjb250ZW50IGNhbm5vdCBiZSByZWFkIGZyb20KKyAgdGhl IGJhY2tlbmQuIEZvciBgYGVudW0zMmBgIHZhbHVlcyBpdCBpcyBhbiBpbnRlZ2VyIHJlcHJlc2Vu dGluZyBhbiBvZmZzZXQKKyAgaW50byB0aGUgbmFtZXMgYXJyYXkuCisKKy4uIG5vdGU6OiBTaW5j ZSB0aGUgYGBkZWZhdWx0YGAgcHJvcGVydHkgaXMgb3B0aW9uYWwsIGtlZXAgaW4gbWluZCB5b3Ug bWF5IG5lZWQKKyAgIGEgdmFsaWQgZGVmYXVsdCB2YWx1ZSBpZiBvdGhlciBpbnN0YW5jZXMgKGxp a2UgdGhlIGJvb3RjaG9vc2VyIGZvciBleGFtcGxlKQorICAgZGVwZW5kcyBvbiBpdC4gRHVlIHRv IHRoaXMsIGEgYGBkZWZhdWx0YGAgbWlnaHQgYmUgYSByZXF1aXJlZCBwcm9wZXJ0eSBpbnN0ZWFk LgorCitWYXJpYWJsZSBFeGFtcGxlcworIyMjIyMjIyMjIyMjIyMjIyMKKworYGB1aW50OGBgOgor CisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisgICB1aW50OF9leGFtcGxlQDAgeworICAgICAgIHJl ZyA9IDwweDAgMHgxPjsKKyAgICAgICB0eXBlID0gInVpbnQ4IjsKKyAgICAgICBkZWZhdWx0ID0g PDB4MDA+OworICAgfTsKKworYGB1aW50MzJgYDoKKworLi4gY29kZS1ibG9jazo6IHRleHQKKwor ICAgdWludDMyX2V4YW1wbGVAMCB7CisgICAgICAgcmVnID0gPDB4MCAweDQ+OworICAgICAgIHR5 cGUgPSAidWludDMyIjsKKyAgICAgICBkZWZhdWx0ID0gPDEwMD47CisgICB9OworCitgYGVudW0z MmBgOgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisgICBlbnVtX2V4YW1wbGVAMCB7CisgICAg ICAgcmVnID0gPDB4MCAweDQ+OworICAgICAgIHR5cGUgPSAiZW51bTMyIjsKKyAgICAgICBuYW1l cyA9ICJ2YWx1ZSMxIiwgInZhbHVlIzIiOworICAgICAgIGRlZmF1bHQgPSA8MT47IC8qIHNlbGVj dHMgInZhbHVlIzIiIGFzIHRoZSBkZWZhdWx0ICovCisgICB9OworCitgYG1hY2BgOgorCisuLiBj b2RlLWJsb2NrOjogdGV4dAorCisgICBtYWNfZXhhbXBsZUAwIHsKKyAgICAgICByZWcgPSA8MHgw IDB4Nj47CisgICAgICAgdHlwZSA9ICJtYWMiOworICAgfTsKKworU2luY2UgYSAnTUFDJyBpcyBh IHVuaXF1ZSBzeXN0ZW0gaWRlbnRpZmllciBpdCBtYWtlcyBubyBzZW5zZSBmb3IgYSBkZWZhdWx0 Cit2YWx1ZSBoZXJlLiBJdCBtdXN0IGJlIHNldCBpbmRpdmlkdWFsbHkgYXQgcnVuLXRpbWUgaW5z dGVhZC4KKworYGBzdHJpbmdgYDoKKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgbmFtZSB7 CisgICAgICAgcmVnID0gPDB4MCAweDEwPjsKKyAgICAgICB0eXBlID0gInN0cmluZyI7CisgICB9 OworCitJbiB0aGlzIGV4YW1wbGUgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGlzIGxpbWl0ZWQg dG8gMTYgY2hhcmFjdGVycy4KKworLi4gX2JhcmVib3gsc3RhdGVfaG1hYzoKIAogSE1BQwogLS0t LQogCi1XaXRoIHRoZSBvcHRpb25hbCBwcm9wZXJ0eSBgYGFsZ28gPSAiaG1hYyg8SEFTSD4pIjtg YCBhIEhNQUMgYWxnb3JpdGhtCi1jYW4gYmUgZGVmaW5lZCB0byBkZXRlY3QgdW5hdXRob3JpemVk IG1vZGlmaWNhdGlvbiBvZiB0aGUgc3RhdGUncworV2l0aCB0aGUgb3B0aW9uYWwgcHJvcGVydHkg YGBhbGdvID0gImhtYWMoPEhBU0g+KSI7YGAgYW4gSE1BQyBhbGdvcml0aG0KK2NhbiBiZSBkZWZp bmVkIHRvIGRldGVjdCB1bmF1dGhvcml6ZWQgbW9kaWZpY2F0aW9uIG9mIHRoZSBzdGF0ZSdzIHZh cmlhYmxlIHNldAogaGVhZGVyIGFuZC9vciBkYXRhLiBGb3IgdGhpcyB0byB3b3JrIHRoZSBITUFD IGFuZCB0aGUgc2VsZWN0ZWQgaGFzaAogYWxnb3JpdGhtIGhhdmUgdG8gYmUgY29tcGlsZWQgaW50 byBiYXJlYm94LgogCiBUaGUgc2hhcmVkIHNlY3JldCBmb3IgdGhlIEhNQUMgaXMgcmVxdWVzdGVk IHZpYQogYGBrZXlzdG9yZV9nZXRfc2VjcmV0KClgYCwgdXNpbmcgdGhlIHN0YXRlJ3MgbmFtZSwg ZnJvbSB0aGUgYmFyZWJveAogc2ltcGxlIGtleXN0b3JlLiBJdCdzIHVwIHRvIHRoZSBkZXZlbG9w ZXIgdG8gcG9wdWxhdGUgdGhlIGtleXN0b3JlIHZpYQotYGBrZXlzdG9yZV9zZXRfc2VjcmV0KClg YCBpbiBiZWZvcmVoYW5kLgorYGBrZXlzdG9yZV9zZXRfc2VjcmV0KClgYCBpbiBiZWZvcmVoYW5k LiBSZWZlciA6cmVmOmBjb21tYW5kX2tleXN0b3JlYCBmb3IKK2Z1cnRoZXIgZGV0YWlscy4KKwor Li4gX2JhcmVib3gsc3RhdGVfc2V0dXA6CisKK0NvbmZpZ3VyaW5nIHRoZSAqc3RhdGUqIHZhcmlh YmxlIHNldAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NpbmNlIHRo ZSAqc3RhdGUqIHZhcmlhYmxlIHNldCBpcyBpbnRlbmRlZCB0byBiZSBzaGFyZWQgYmV0d2VlbiB0 aGUgYm9vdGxvYWRlcgorYW5kIHRoZSBrZXJuZWwsIHRoZSB2aWV3IHRvIHRoZSAqc3RhdGUqIHZh cmlhYmxlIHNldCBtdXN0IGJlIHRoZSBzYW1lIGluIGJvdGgKK3dvcmxkcy4KKworVGhpcyBjYW4g YmUgYWNoaWV2ZWQgYnkgZGVmaW5pbmcgYWxsICpzdGF0ZSogdmFyaWFibGUgc2V0IHJlbGF0ZWQg ZGVmaW5pdGlvbnMKK2luc2lkZSB0aGUgYmFyZWJveCdzIGRldmljZXRyZWUgb25seS4gSXQncyAq Km5vdCoqIHJlcXVpcmVkIHRvIGtlZXAgYW5kIG1haW50YWluCit0aGUgc2FtZSBpbmZvcm1hdGlv biBpbnNpZGUgdGhlIExpbnV4IGtlcm5lbCdzIGRldmljZXRyZWUgYWdhaW4uCisKK1doZW4gYmFy ZWJveCBpcyBpbnN0cnVjdGVkIHRvIGxvYWQgYW5kIGZvcndhcmQgYSBkZXZpY2V0cmVlIHRvIGEg TGludXgga2VybmVsCit0byBiZSBzdGFydGVkLCBpdCAic2lsZW50bHkiIGNvcGllcyBhbGwgKnN0 YXRlKiB2YXJpYWJsZSBzZXQgcmVsYXRlZCBkZWZpbml0aW9ucworZnJvbSBpdHMgb3duIGRldmlj ZXRyZWUgaW50byB0aGUgTGludXgga2VybmVsIGRldmljZXRyZWUuIFRoaXMgd2F5IGJvdGggd29y bGRzCitiZWhhdmUgdGhlIHNhbWUgd2hlbiAqc3RhdGUqIHZhcmlhYmxlIHNldHMgc2hvdWxkIGJl IHJlYWQgb3IgbW9kaWZpZWQuCisKK0luIG9yZGVyIHRvIGVuYWJsZSBiYXJlYm94IHRvIGNvcHkg dGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIHRvIGEgZGVkaWNhdGVkCitsb2NhdGlvbiBpbnNpZGUg dGhlIExpbnV4IGtlcm5lbCBkZXZpY2V0cmVlIHRoZSBuYW1lIG9mIHRoZSBtZW1vcnkgbm9kZSB0 bworc3RvcmUgdGhlICpzdGF0ZSogdmFyaWFibGUgc2V0IG11c3QgYmUgdGhlIHNhbWUgaW4gdGhl IGJhcmVib3gncyBkZXZpY2V0cmVlCithbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBkZXZpY2V0 cmVlLgorCitXaXRoIHRoaXMgImludGVyY29ubmVjdGlvbiIgYmFyZWJveCBleHRlbmRzIHRoZSBv cGVyYXRpbmcgc3lzdGVtJ3MgZGV2aWNldHJlZQord2l0aDoKKworLSB0aGUgbGF5b3V0IGFuZCB2 YXJpYWJsZSBkZWZpbml0aW9uIG9mIHRoZSAqc3RhdGUqIHZhcmlhYmxlIHNldCAoaW4gY2FzZSBv ZgorICB0aGUgYGByYXdgYCBiYWNrZW5kLXR5cGUpCistIHRoZSBzdG9yZSBkZWZpbml0aW9uIChi YWNrZW5kIHR5cGUsIGJhY2tlbmQgc3RvcmFnZSB0eXBlIGFuZCBzbyBvbikKKy0gcGFydGl0aW9u aW5nIGluZm9ybWF0aW9uIGZvciB0aGUgcGVyc2lzdGVudCBtZW1vcnkgaW4gcXVlc3Rpb24gKG9u IGRlbWFuZCkKKy0gdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgYmFja2VuZCBhbmQgdGhlIG1l bW9yeSAoZGV2aWNlLCBwYXJ0aXRpb24pCisKK0V4YW1wbGU6CisKK0xldHMgYXNzdW1lIHRoZSBi YXJlYm94J3MgZGV2aWNldHJlZSB1c2VzIHRoZSBuYW1lIGBgcGVyc2lzdGVudF9zdGF0ZV9tZW1v cnlAMDFgYAordG8gZGVmaW5lIGl0cyBvd24gKnN0YXRlKiB2YXJpYWJsZSBzZXQgYmFja2VuZC4K KworQmFyZWJveCdzIGRldmljZXRyZWUgZGVmaW5lczoKKworLi4gY29kZS1ibG9jazo6IHRleHQK KworICAgcGVyc2lzdGVudF9zdGF0ZV9tZW1vcnlAMDEgeworICAgICAgIGNvbXBhdGlibGUgPSAi c29tZXZhbHVlIjsKKyAgICAgICByZWcgPSA8MT47CisKKyAgICAgICAjYWRkcmVzcy1jZWxscyA9 IDwxPjsKKyAgICAgICAjc2l6ZS1jZWxscyA9IDwxPjsKKworICAgICAgIHN0YXRlOiBwYXJ0aXRp b25AMCB7CisgICAgICAgICAgICBsYWJlbCA9ICJzdGF0ZSI7CisgICAgICAgICAgICByZWcgPSA8 MHgwIDB4MTAwPjsKKyAgICAgICB9OworICAgfTsKIAotRnJvbnRlbmQKLS0tLS0tLS0tCitUaGUg b3BlcmF0aW5nIHN5c3RlbSdzIGRldmljZXRyZWUgZGVmaW5lcyBpbnN0ZWFkOgogCi1BcyBmcm9u dGVuZCBhIHN0YXRlIGluc3RhbmNlIGlzIGEgcmVndWxhciBiYXJlYm94IGRldmljZSB3aGljaCBo YXMKLWRldmljZSBwYXJhbWV0ZXJzIGZvciB0aGUgc3RhdGUgdmFyaWFibGVzLiBXaXRoIHRoaXMg dGhlIHZhcmlhYmxlcyBjYW4KLWJlIGFjY2Vzc2VkIGxpa2Ugbm9ybWFsIHNoZWxsIHZhcmlhYmxl cy4gVGhlIGBgc3RhdGVgYCBjb21tYW5kIGlzIHVzZWQKLXRvIHNhdmUvcmVzdG9yZSBhIHN0YXRl IHRvIHRoZSBiYWNrZW5kIGRldmljZS4KKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CiAKLUFmdGVyIGlu aXRpYWxpemluZyB0aGUgdmFyaWFibGUgY2FuIGJlIGFjY2Vzc2VkIHdpdGggYGAkc3RhdGUuZm9v YGAuCi1gYHN0YXRlIC1zYGAgc3RvcmVzIHRoZSBzdGF0ZSB0byBlZXByb20uCisgICBwZXJzaXN0 ZW50X3N0YXRlX21lbW9yeUAwMSB7CisgICAgICAgY29tcGF0aWJsZSA9ICJzb21ldmFsdWUiOwor ICAgICAgIHJlZyA9IDwxPjsKKyAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzZXIv Ym9vdGNob29zZXIucnN0IGIvRG9jdW1lbnRhdGlvbi91c2VyL2Jvb3RjaG9vc2VyLnJzdAppbmRl eCBjZWYxZDRhYmIuLjNkNDczYjU5NiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi91c2VyL2Jv b3RjaG9vc2VyLnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL3VzZXIvYm9vdGNob29zZXIucnN0CkBA IC0xLDE3OCArMSwyMTcgQEAKKy4uIF9ib290Y2hvb3NlcjoKKwogQmFyZWJveCBCb290Y2hvb3Nl cgogPT09PT09PT09PT09PT09PT09PQogCiBJbiBtYW55IGNhc2VzIGVtYmVkZGVkIHN5c3RlbXMg YXJlIGxheWVkIG91dCByZWR1bmRhbnRseSB3aXRoIG11bHRpcGxlCi1rZXJuZWxzIGFuZCBtdWx0 aXBsZSByb290IGZpbGUgc3lzdGVtcy4gVGhlIGJvb3RjaG9vc2VyIGZyYW1ld29yayBwcm92aWRl cwora2VybmVscyBhbmQgbXVsdGlwbGUgcm9vdCBmaWxlIHN5c3RlbXMuIFRoZSAqYm9vdGNob29z ZXIqIGZyYW1ld29yayBwcm92aWRlcwogdGhlIGJ1aWxkaW5nIGJsb2NrcyB0byBtb2RlbCBkaWZm ZXJlbnQgdXNlIGNhc2VzIHdpdGhvdXQgdGhlIG5lZWQgdG8gc3RhcnQKIGZyb20gc2NyYXRjaCBv dmVyIGFuZCBvdmVyIGFnYWluLgogCi1UaGUgYm9vdGNob29zZXIgd29ya3Mgb24gYWJzdHJhY3Qg Ym9vdCB0YXJnZXRzLCBlYWNoIHdpdGggYSBzZXQgb2YgcHJvcGVydGllcworVGhlICpib290Y2hv b3Nlciogd29ya3Mgb24gYWJzdHJhY3QgYm9vdCB0YXJnZXRzLCBlYWNoIHdpdGggYSBzZXQgb2Yg cHJvcGVydGllcwogYW5kIGltcGxlbWVudHMgYW4gYWxnb3JpdGhtIHdoaWNoIHNlbGVjdHMgdGhl IGhpZ2hlc3QgcHJpb3JpdHkgdGFyZ2V0IHRvIGJvb3QuCiAKIEJvb3RjaG9vc2VyIFRhcmdldHMK IC0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSBib290Y2hvb3NlciB0YXJnZXQgcmVwcmVzZW50cyBv bmUgdGFyZ2V0IHRoYXQgYmFyZWJveCBjYW4gYm9vdC4gSXQgY29uc2lzdHMKK0EgKmJvb3RjaG9v c2VyKiBib290IHRhcmdldCByZXByZXNlbnRzIG9uZSB0YXJnZXQgdGhhdCBiYXJlYm94IGNhbiBi b290LiBJdCBjb25zaXN0cwogb2YgYSBzZXQgb2YgdmFyaWFibGVzIGluIHRoZSBgYGdsb2JhbC5i b290Y2hvb3Nlci48dGFyZ2V0bmFtZT5gYCBuYW1lc3BhY2UuIFRoZQotZm9sbG93aW5nIGNvbmZp Z3VyYXRpb24gdmFyaWFibGVzIGFyZSBuZWVkZWQgdG8gZGVzY3JpYmUgYSBib290Y2hvb3NlciB0 YXJnZXQ6Citmb2xsb3dpbmcgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgYXJlIG5lZWRlZCB0byBk ZXNjcmliZSBhICpib290Y2hvb3NlciogYm9vdCB0YXJnZXQ6CiAKIGBgZ2xvYmFsLmJvb3RjaG9v c2VyLjx0YXJnZXRuYW1lPi5ib290YGAKLSAgVGhpcyBjb250cm9scyB3aGF0IGJhcmVib3ggYWN0 dWFsbHkgYm9vdHMgZm9yIHRoaXMgdGFyZ2V0LiBUaGlzIHN0cmluZyBjYW4gY29udGFpbgotICBh bnl0aGluZyB0aGF0IHRoZSA6cmVmOmBib290IDxjb21tYW5kX2Jvb3Q+YCBjb21tYW5kIHVuZGVy c3RhbmRzLgorICBUaGlzIGNvbnRyb2xzIHdoYXQgYmFyZWJveCBhY3R1YWxseSBib290cyBmb3Ig dGhpcyBib290IHRhcmdldC4gVGhpcyBzdHJpbmcgY2FuCisgIGNvbnRhaW4gYW55dGhpbmcgdGhh dCB0aGUgOnJlZjpgYm9vdCA8Y29tbWFuZF9ib290PmAgY29tbWFuZCB1bmRlcnN0YW5kcy4KIAog YGBnbG9iYWwuYm9vdGNob29zZXIuPHRhcmdldG5hbWU+LmRlZmF1bHRfYXR0ZW1wdHNgYAotICBU aGUgZGVmYXVsdCBudW1iZXIgb2YgYXR0ZW1wdHMgdGhhdCBhIHRhcmdldCBzaGFsbCBiZSB0cmll ZCBzdGFydGluZy4KKyAgVGhlIGRlZmF1bHQgbnVtYmVyIG9mIGF0dGVtcHRzIHRoYXQgYSBib290 IHRhcmdldCBzaGFsbCBiZSB0cmllZCBiZWZvcmUgc2tpcHBpbmcgaXQuCiBgYGdsb2JhbC5ib290 Y2hvb3Nlci48dGFyZ2V0bmFtZT4uZGVmYXVsdF9wcmlvcml0eWBgCi0gIFRoZSBkZWZhdWx0IHBy aW9yaXR5IG9mIGEgdGFyZ2V0LgorICBUaGUgZGVmYXVsdCBwcmlvcml0eSBvZiBhIGJvb3QgdGFy Z2V0LgogCiAKLUFkZGl0aW9uYWxseSB0aGUgZm9sbG93aW5nIHJ1bnRpbWUgdmFyaWFibGVzIGFy ZSBuZWVkZWQuIFVubGlua2UgdGhlIGNvbmZpZ3VyYXRpb24KLXZhcmlhYmxlcyB0aGVzZSBhcmUg YXV0b21hdGljYWxseSBjaGFuZ2VkIGJ5IHRoZSBib290Y2hvb3NlciBhbGdvcml0aG06CitBZGRp dGlvbmFsbHkgdGhlIGZvbGxvd2luZyBydW4tdGltZSB2YXJpYWJsZXMgYXJlIG5lZWRlZC4gVW5s aWtlIHRoZSBjb25maWd1cmF0aW9uCit2YXJpYWJsZXMgdGhlaXIgdmFsdWVzIGFyZSBhdXRvbWF0 aWNhbGx5IHVwZGF0ZWQgYnkgdGhlICpib290Y2hvb3NlciogYWxnb3JpdGhtOgogCiBgYGdsb2Jh bC5ib290Y2hvb3Nlci48dGFyZ2V0bmFtZT4ucHJpb3JpdHlgYAotICBUaGUgY3VycmVudCBwcmlv cml0eSBvZiB0aGUgdGFyZ2V0LiBIaWdoZXIgbnVtYmVycyBoYXZlIGhpZ2hlciBwcmlvcml0aWVz LiBBIHByaW9yaXR5Ci0gIG9mIDAgbWVhbnMgdGhlIHRhcmdldCBpcyBkaXNhYmxlZCBhbmQgd29u J3QgYmUgc3RhcnRlZC4KKyAgVGhlIGN1cnJlbnQgYGBwcmlvcml0eWBgIG9mIHRoZSBib290IHRh cmdldC4gSGlnaGVyIG51bWJlcnMgaGF2ZSBoaWdoZXIgcHJpb3JpdGllcy4KKyAgQSBgYHByaW9y aXR5YGAgb2YgMCBtZWFucyB0aGUgYm9vdCB0YXJnZXQgaXMgZGlzYWJsZWQgYW5kIHdvbid0IGJl IHN0YXJ0ZWQuCiBgYGdsb2JhbC5ib290Y2hvb3Nlci48dGFyZ2V0bmFtZT4ucmVtYWluaW5nX2F0 dGVtcHRzYGAKLSAgVGhlIHJlbWFpbmluZ19hdHRlbXB0cyBjb3VudGVyLiBPbmx5IHRhcmdldHMg d2l0aCBhIHJlbWFpbmluZ19hdHRlbXB0cyBjb3VudGVyID4gMAotICBhcmUgc3RhcnRlZC4KKyAg VGhlIGBgcmVtYWluaW5nX2F0dGVtcHRzYGAgY291bnRlci4gT25seSBib290IHRhcmdldHMgd2l0 aCBhIGBgcmVtYWluaW5nX2F0dGVtcHRzYGAKKyAgY291bnRlciA+IDAgYXJlIHN0YXJ0ZWQuCisK K1RoZSAqYm9vdGNob29zZXIqIGFsZ29yaXRobSBnZW5lcmFsbHkgb25seSBzdGFydHMgYm9vdCB0 YXJnZXRzIHRoYXQgaGF2ZSBhIGBgcHJpb3JpdHlgYAorPiAwIGFuZCBhIGBgcmVtYWluaW5nX2F0 dGVtcHRzYGAgY291bnRlciA+IDAuCiAKLVRoZSBib290Y2hvb3NlciBhbGdvcml0aG0gZ2VuZXJh bGx5IG9ubHkgc3RhcnRzIHRhcmdldHMgdGhhdCBoYXZlIGEgcHJpb3JpdHkKLT4gMCBhbmQgYSBy ZW1haW5pbmdfYXR0ZW1wdHMgY291bnRlciA+IDAuCisuLiBfYm9vdGNob29zZXIsYWxnb3JpdGht OgogCiBUaGUgQm9vdGNob29zZXIgQWxnb3JpdGhtCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAKLVRoZSBib290Y2hvb3NlciBhbGdvcml0aG0gaXMgdmVyeSBzaW1wbGUuIEl0IHdvcmtzIHdp dGggdHdvIHZhcmlhYmxlcyBwZXIgdGFyZ2V0Ci1hbmQgc29tZSBvcHRpb25hbCBmbGFncy4gVGhl IHZhcmlhYmxlcyBhcmUgdGhlIHJlbWFpbmluZ19hdHRlbXB0cyBjb3VudGVyIHRoYXQKLXRlbGxz IGhvdyBtYW55IHRpbWVzIHRoZSB0YXJnZXQgd2lsbCBiZSBzdGFydGVkLiBUaGUgb3RoZXIgdmFy aWFibGUgaXMgdGhlIHByaW9yaXR5LAotdGhlIHRhcmdldCB3aXRoIHRoZSBoaWdoZXN0IHByaW9y aXR5IHdpbGwgYmUgdXNlZCBmaXJzdCwgYSB6ZXJvIHByaW9yaXR5IG1lYW5zCi10aGUgdGFyZ2V0 IGlzIGRpc2FibGVkLgotCi1XaGVuIGJvb3RpbmcsIGJvb3RjaG9vc2VyIHN0YXJ0cyB0aGUgdGFy Z2V0IHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgdGhhdCBoYXMgYQotbm9uemVybyByZW1haW5p bmdfYXR0ZW1wdHMgY291bnRlci4gV2l0aCBldmVyeSBzdGFydCBvZiBhIHRhcmdldCB0aGUgcmVt YWluaW5nCi1hdHRlbXB0cyBjb3VudGVyIG9mIHRoaXMgdGFyZ2V0IGlzIGRlY3JlbWVudGVkIGJ5 IG9uZS4gVGhpcyBtZWFucyBldmVyeSB0YXJnZXRzCi1yZW1haW5pbmdfYXR0ZW1wdHMgY291bnRl ciByZWFjaGVzIHplcm8gc29vbmVyIG9yIGxhdGVyIGFuZCB0aGUgdGFyZ2V0IHdvbid0IGJlCi1i b290ZWQgYW55bW9yZS4gVG8gcHJldmVudCB0aGF0LCB0aGUgcmVtYWluaW5nX2F0dGVtcHRzIGNv dW50ZXIgbXVzdCBiZSByZXNldCB0bwotaXRzIGRlZmF1bHQuIFRoZXJlIGFyZSBkaWZmZXJlbnQg ZmxhZ3MgaW4gdGhlIGJvb3RjaG9vc2VyIHdoaWNoIGNvbnRyb2wgcmVzZXR0aW5nCi10aGUgcmVt YWluaW5nX2F0dGVtcHRzIGNvdW50ZXIsIGNvbnRyb2xsZWQgYnkgdGhlIGBgZ2xvYmFsLmJvb3Rj aG9vc2VyLnJlc2V0X2F0dGVtcHRzYGAKLXZhcmlhYmxlLiBJdCBob2xkcyBhIGxpc3Qgb2Ygc3Bh Y2Ugc2VwYXJhdGVkIGZsYWdzLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgotCi0tIGBgcG93ZXItb25g YDogVGhlIHJlbWFpbmluZ19hdHRlbXB0cyBjb3VudGVycyBvZiBhbGwgZW5hYmxlZCB0YXJnZXRz IGFyZSByZXNldAotICBhZnRlciBhIHBvd2VyLW9uIHJlc2V0IChgYCRnbG9iYWwuc3lzdGVtLnJl c2V0PSJQT1IiYGApLiBUaGlzIG1lYW5zIGFmdGVyIGEgcG93ZXIKLSAgY3ljbGUgYWxsIHRhcmdl dHMgd2lsbCBiZSB0cmllZCBhZ2FpbiBmb3IgdGhlIGNvbmZpZ3VyZWQgbnVtYmVyIG9mIHJldHJp ZXMKLS0gYGBhbGwtemVyb2BgOiBUaGUgcmVtYWluaW5nX2F0dGVtcHRzIGNvdW50ZXJzIG9mIGFs bCBlbmFibGVkIHRhcmdldHMgYXJlIHJlc2V0Ci0gIHdoZW4gbm9uZSBvZiB0aGVtIGhhcyBhbnkg cmVtYWluaW5nX2F0dGVtcHRzIGxlZnQuCi0KLUFkZGl0aW9uYWxseSB0aGUgcmVtYWluaW5nX2F0 dGVtcHRzIGNvdW50ZXIgY2FuIGJlIHJlc2V0IG1hbnVhbGx5IHVzaW5nIHRoZQotOnJlZjpgY29t bWFuZF9ib290Y2hvb3NlcmAgY29tbWFuZC4gVGhpcyBhbGxvd3MgZm9yIGN1c3RvbSBjb25kaXRp b25zIHVuZGVyIHdoaWNoCi1hIHN5c3RlbSBpcyBtYXJrZWQgYXMgZ29vZC4KK1RoZSAqYm9vdGNo b29zZXIqIGFsZ29yaXRobSBpcyB2ZXJ5IHNpbXBsZS4gSXQgd29ya3Mgd2l0aCB0d28gdmFyaWFi bGVzIHBlciBib290IHRhcmdldAorYW5kIHNvbWUgb3B0aW9uYWwgZmxhZ3MuIFRoZSB2YXJpYWJs ZXMgYXJlIHRoZSBgYHJlbWFpbmluZ19hdHRlbXB0c2BgIGNvdW50ZXIgdGhhdAordGVsbHMgaG93 IG1hbnkgdGltZXMgdGhlIGJvb3QgdGFyZ2V0IHdpbGwgYmUgc3RhcnRlZC4gVGhlIG90aGVyIHZh cmlhYmxlIGlzIHRoZSBgYHByaW9yaXR5YGAsCit0aGUgYm9vdCB0YXJnZXQgd2l0aCB0aGUgaGln aGVzdCBgYHByaW9yaXR5YGAgd2lsbCBiZSB1c2VkIGZpcnN0LCBhIHplcm8gYGBwcmlvcml0eWBg CittZWFucyB0aGUgYm9vdCB0YXJnZXQgaXMgZGlzYWJsZWQuCisKK1doZW4gYm9vdGluZywgKmJv b3RjaG9vc2VyKiBzdGFydHMgdGhlIGJvb3QgdGFyZ2V0IHdpdGggdGhlIGhpZ2hlc3QgYGBwcmlv cml0eWBgIHRoYXQKK2hhcyBhIG5vbi16ZXJvIGBgcmVtYWluaW5nX2F0dGVtcHRzYGAgY291bnRl ci4gV2l0aCBldmVyeSBzdGFydCBvZiBhIGJvb3QgdGFyZ2V0IHRoZQorYGByZW1haW5pbmdfYXR0 ZW1wdHNgYCBjb3VudGVyIG9mIHRoaXMgYm9vdCB0YXJnZXQgaXMgZGVjcmVtZW50ZWQgYnkgb25l LiBUaGlzIG1lYW5zCitldmVyeSBib290IHRhcmdldCdzIGBgcmVtYWluaW5nX2F0dGVtcHRzYGAg Y291bnRlciByZWFjaGVzIHplcm8gc29vbmVyIG9yIGxhdGVyIGFuZAordGhlIGJvb3QgdGFyZ2V0 IHdvbid0IGJlIGJvb3RlZCBhbnltb3JlLiBUbyBwcmV2ZW50IHRoYXQsIHRoZSBgYHJlbWFpbmlu Z19hdHRlbXB0c2BgCitjb3VudGVyIG11c3QgYmUgcmVzZXQgdG8gaXRzIGRlZmF1bHQuIFRoZXJl IGFyZSBkaWZmZXJlbnQgZmxhZ3MgaW4gdGhlCisqYm9vdGNob29zZXIqIHdoaWNoIGNvbnRyb2wg cmVzZXR0aW5nIHRoZSBgYHJlbWFpbmluZ19hdHRlbXB0c2BgIGNvdW50ZXIsCitjb250cm9sbGVk IGJ5IHRoZSBgYGdsb2JhbC5ib290Y2hvb3Nlci5yZXNldF9hdHRlbXB0c2BgIHZhcmlhYmxlLiBJ dCBob2xkcyBhCitsaXN0IG9mIHNwYWNlIHNlcGFyYXRlZCBmbGFncy4gUG9zc2libGUgdmFsdWVz IGFyZToKKworLSBlbXB0eTogY291bnRlcnMgd2lsbCBuZXZlciBiZSByZXNldAorLSBgYHBvd2Vy LW9uYGA6IFRoZSBgYHJlbWFpbmluZ19hdHRlbXB0c2BgIGNvdW50ZXJzIG9mIGFsbCBlbmFibGVk IGJvb3QgdGFyZ2V0cyBhcmUgcmVzZXQKKyAgYWZ0ZXIgYSBgYHBvd2VyLW9uYGAgcmVzZXQgKGBg JGdsb2JhbC5zeXN0ZW0ucmVzZXQ9IlBPUiJgYCkuIFRoaXMgbWVhbnMgYWZ0ZXIgYSBwb3dlcgor ICBjeWNsZSBhbGwgYm9vdCB0YXJnZXRzIHdpbGwgYmUgdHJpZWQgYWdhaW4gZm9yIHRoZSBjb25m aWd1cmVkIG51bWJlciBvZiByZXRyaWVzLgorLSBgYGFsbC16ZXJvYGA6IFRoZSBgYHJlbWFpbmlu Z19hdHRlbXB0c2BgIGNvdW50ZXJzIG9mIGFsbCBlbmFibGVkIGJvb3QgdGFyZ2V0cyBhcmUKKyAg cmVzZXQgd2hlbiBub25lIG9mIHRoZW0gaGFzIGFueSBgYHJlbWFpbmluZ19hdHRlbXB0c2BgIGxl ZnQuCisKK0FkZGl0aW9uYWxseSB0aGUgYGByZW1haW5pbmdfYXR0ZW1wdHNgYCBjb3VudGVyIGNh biBiZSByZXNldCBtYW51YWxseSB1c2luZyB0aGUKKzpyZWY6YGJvb3RjaG9zZXIgY29tbWFuZCA8 Y29tbWFuZF9ib290Y2hvb3Nlcj5gLiBUaGlzIGFsbG93cyBmb3IgY3VzdG9tIGNvbmRpdGlvbnMK K3VuZGVyIHdoaWNoIGEgc3lzdGVtIGlzIG1hcmtlZCBhcyBnb29kLgogSW4gY2FzZSBvbmx5IHRo ZSBib290ZWQgc3lzdGVtIGl0c2VsZiBrbm93cyB3aGVuIGl0IGlzIGluIGEgZ29vZCBzdGF0ZSwg dGhlCi1iYXJlYm94LXN0YXRlIHRvb2wgZnJvbSB0aGUgZHQtdXRpbHNfIHBhY2thZ2UgY2FuIGJl IHVzZWQgdG8gcmVzZXQgdGhlIHJlbWFpbmluZ19hdHRlbXB0cwotY291bnRlciBmcm9tIHRoZSBj dXJyZW50bHkgcnVubmluZyBzeXN0ZW0uCitiYXJlYm94LXN0YXRlIHRvb2wgZnJvbSB0aGUgZHQt dXRpbHNfIHBhY2thZ2UgY2FuIGJlIHVzZWQgdG8gcmVzZXQgdGhlCitgYHJlbWFpbmluZ19hdHRl bXB0c2BgIGNvdW50ZXIgZnJvbSB0aGUgcnVubmluZyBzeXN0ZW0uCiAKIC4uIF9kdC11dGlsczog aHR0cDovL2dpdC5wZW5ndXRyb25peC5kZS8/cD10b29scy9kdC11dGlscy5naXQ7YT1zdW1tYXJ5 CiAKLUJvb3RjaG9vc2VyIEdlbmVyYWwgT3B0aW9ucworR2VuZXJhbCBCb290Y2hvb3NlciBPcHRp b25zCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQWRkaXRpb25hbGx5IHRvIHRoZSB0 YXJnZXQgb3B0aW9ucyBkZXNjcmliZWQgYWJvdmUsIGJvb3RjaG9vc2VyIGhhcyBzb21lIGdlbmVy YWwKLW9wdGlvbnMgbm90IHNwZWNpZmljIHRvIGFueSB0YXJnZXQuCitJbiBhZGRpdGlvbiB0byB0 aGUgYm9vdCB0YXJnZXQgb3B0aW9ucyBkZXNjcmliZWQgYWJvdmUsICpib290Y2hvb3NlciogaGFz IHNvbWUgZ2VuZXJhbAorb3B0aW9ucyBub3Qgc3BlY2lmaWMgdG8gYW55IGJvb3QgdGFyZ2V0Lgog CiBgYGdsb2JhbC5ib290Y2hvb3Nlci5kaXNhYmxlX29uX3plcm9fYXR0ZW1wdHNgYAotICBCb29s ZWFuIGZsYWcuIElmIHNldCB0byAxLCBib290Y2hvb3NlciBkaXNhYmxlcyBhIHRhcmdldCAoc2V0 cyBwcmlvcml0eSB0byAwKSB3aGVuZXZlcgotICB0aGUgcmVtYWluaW5nIGF0dGVtcHRzIGNvdW50 ZXIgcmVhY2hlcyAwLgorICBCb29sZWFuIGZsYWcuIElmIHNldCB0byAxLCAqYm9vdGNob29zZXIq IGRpc2FibGVzIGEgYm9vdCB0YXJnZXQgKHNldHMgcHJpb3JpdHkKKyAgdG8gMCkgd2hlbmV2ZXIg dGhlIHJlbWFpbmluZyBhdHRlbXB0cyBjb3VudGVyIHJlYWNoZXMgMC4KIGBgZ2xvYmFsLmJvb3Rj aG9vc2VyLmRlZmF1bHRfYXR0ZW1wdHNgYAotICBUaGUgZGVmYXVsdCBudW1iZXIgb2YgYXR0ZW1w dHMgdGhhdCBhIHRhcmdldCBzaGFsbCBiZSB0cmllZCBzdGFydGluZywgdXNlZCB3aGVuIG5vdAot ICBvdmVyd3JpdHRlbiB3aXRoIHRoZSB0YXJnZXQgc3BlY2lmaWMgdmFyaWFibGUgb2YgdGhlIHNh bWUgbmFtZS4KKyAgVGhlIGRlZmF1bHQgbnVtYmVyIG9mIGF0dGVtcHRzIHRoYXQgYSBib290IHRh cmdldCBzaGFsbCBiZSB0cmllZCBiZWZvcmUgc2tpcHBpbmcKKyAgaXQsIHVzZWQgd2hlbiBub3Qg b3ZlcndyaXR0ZW4gd2l0aCB0aGUgYm9vdCB0YXJnZXQgc3BlY2lmaWMgdmFyaWFibGUgb2YgdGhl IHNhbWUKKyAgbmFtZS4KIGBgZ2xvYmFsLmJvb3RjaG9vc2VyLmRlZmF1bHRfcHJpb3JpdHlgYAot ICBUaGUgZGVmYXVsdCBwcmlvcml0eSBvZiBhIHRhcmdldCB3aGVuIG5vdCBvdmVyd3JpdHRlbiB3 aXRoIHRoZSB0YXJnZXQgc3BlY2lmaWMgdmFyaWFibGUKLSAgb2YgdGhlIHNhbWUgbmFtZS4KKyAg VGhlIGRlZmF1bHQgcHJpb3JpdHkgb2YgYSBib290IHRhcmdldCB3aGVuIG5vdCBvdmVyd3JpdHRl biB3aXRoIHRoZSB0YXJnZXQKKyAgc3BlY2lmaWMgdmFyaWFibGUgb2YgdGhlIHNhbWUgbmFtZS4K IGBgZ2xvYmFsLmJvb3RjaG9vc2VyLnJlc2V0X2F0dGVtcHRzYGAKLSAgQSBzcGFjZSBzZXBhcmF0 ZWQgbGlzdCBvZiBldmVudHMgdGhhdCBjYXVzZSBib290Y2hvb3NlciB0byByZXNldCB0aGUKLSAg cmVtYWluaW5nX2F0dGVtcHRzIGNvdW50ZXJzIG9mIGVhY2ggdGFyZ2V0IHRoYXQgaGFzIGEgbm9u IHplcm8gcHJpb3JpdHkuIFBvc3NpYmxlIHZhbHVlczoKLQotICAqIGVtcHR5OiBjb3VudGVycyB3 aWxsIG5ldmVyIGJlIHJlc2V0YGAKLSAgKiBwb3dlci1vbjogY291bnRlcnMgd2lsbCBiZSByZXNl dCBhZnRlciBwb3dlci1vbi1yZXNldAotICAqIGFsbC16ZXJvOiBjb3VudGVycyB3aWxsIGJlIHJl c2V0IHdoZW4gYWxsIHRhcmdldHMgaGF2ZSB6ZXJvIHJlbWFpbmluZyBhdHRlbXB0cworICBBbHJl YWR5IGRlc2NyaWJlZCBpbiA6cmVmOmBCb290Y2hvb3NlciBBbGdvcml0aG0gPGJvb3RjaG9vc2Vy LGFsZ29yaXRobT5gCiBgYGdsb2JhbC5ib290Y2hvb3Nlci5yZXNldF9wcmlvcml0aWVzYGAKLSAg QSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBldmVudHMgdGhhdCBjYXVzZSBib290Y2hvb3NlciB0 byByZXNldCB0aGUgcHJpb3JpdGllcyBvZgotICBhbGwgdGFyZ2V0cy4gUG9zc2libGUgdmFsdWVz OgorICBBIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGV2ZW50cyB0aGF0IGNhdXNlICpib290Y2hv b3NlciogdG8gcmVzZXQgdGhlIHByaW9yaXRpZXMgb2YKKyAgYWxsIGJvb3QgdGFyZ2V0cy4gUG9z c2libGUgdmFsdWVzOgogCiAgICogZW1wdHk6IHByaW9yaXRpZXMgd2lsbCBuZXZlciBiZSByZXNl dAotICAqIGFsbC16ZXJvOiBwcmlvcml0aWVzIHdpbGwgYmUgcmVzZXQgd2hlbiBhbGwgdGFyZ2V0 cyBoYXZlIHplcm8gcHJpb3JpdHkKKyAgKiBgYGFsbC16ZXJvYGA6IHByaW9yaXRpZXMgd2lsbCBi ZSByZXNldCB3aGVuIGFsbCB0YXJnZXRzIGhhdmUgemVybyBwcmlvcml0eQogYGBnbG9iYWwuYm9v dGNob29zZXIucmV0cnlgYAotICBJZiBzZXQgdG8gMSwgYm9vdGNob29zZXIgcmV0cmllcyBib290 aW5nIHVudGlsIG9uZSBzdWNjZWVkcyBvciBubyBtb3JlIHZhbGlkIHRhcmdldHMKLSAgZXhpc3Qu CisgIElmIHNldCB0byAxLCAqYm9vdGNob29zZXIqIHJldHJpZXMgYm9vdGluZyB1bnRpbCBvbmUg c3VjY2VlZHMgb3Igbm8gbW9yZSB2YWxpZAorICBib290IHRhcmdldHMgZXhpc3QuCisgIE90aGVy d2lzZSB0aGUgYGBib290YGAgY29tbWFuZCB3aWxsIHJldHVybiB3aXRoIGFuIGVycm9yIGFmdGVy IHRoZSBmaXJzdCBmYWlsZWQKKyAgYm9vdCB0YXJnZXQuCiBgYGdsb2JhbC5ib290Y2hvb3Nlci5z dGF0ZV9wcmVmaXhgYAotICBWYXJpYWJsZSBwcmVmaXggd2hlbiBib290Y2hvb3NlciBpcyB1c2Vk IHdpdGggdGhlIHN0YXRlIGZyYW1ld29yayBhcyBiYWNrZW5kIGZvciBzdG9yaW5nCi0gIHJ1bnRp bWUgZGF0YSwgc2VlIGJlbG93LgorICBWYXJpYWJsZSBwcmVmaXggd2hlbiAqYm9vdGNob29zZXIq IGlzIHVzZWQgd2l0aCB0aGUgKnN0YXRlKiBmcmFtZXdvcmsgYXMgYmFja2VuZAorICBmb3Igc3Rv cmluZyBydW4tdGltZSBkYXRhLCBzZWUgYmVsb3cuCiBgYGdsb2JhbC5ib290Y2hvb3Nlci50YXJn ZXRzYGAKLSAgU3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgdGFyZ2V0cyB0aGF0IGFyZSB1c2VkLiBG b3IgZWFjaCBlbnRyeSBpbiB0aGUgbGlzdCBhIGNvcnJlc3BvbmRpbmcKKyAgU3BhY2Ugc2VwYXJh dGVkIGxpc3Qgb2YgYm9vdCB0YXJnZXRzIHRoYXQgYXJlIHVzZWQuIEZvciBlYWNoIGVudHJ5IGlu IHRoZSBsaXN0CisgIGEgY29ycmVzcG9uZGluZwogICBzZXQgb2YgYGBnbG9iYWwuYm9vdGNob29z ZXIuPHRhcmdldG5hbWU+Ljx2YXJpYWJsZW5hbWU+YGAgdmFyaWFibGVzIG11c3QgZXhpc3QuCiBg YGdsb2JhbC5ib290Y2hvb3Nlci5sYXN0X2Nob3NlbmBgCi0gIGJvb3RjaG9vc2VyIHNldHMgdGhp cyB0byB0aGUgdGFyZ2V0IHRoYXQgd2FzIGNob3NlbiBvbiBsYXN0IGJvb3QgKGluZGV4KS4KLQot VXNpbmcgdGhlIFN0YXRlIEZyYW1ld29yayBhcyBCYWNrZW5kIGZvciBSdW50aW1lIFZhcmlhYmxl IERhdGEKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0KLU5vcm1hbGx5IHRoZSBkYXRhIHRoYXQgaXMgbW9kaWZpZWQgYnkgdGhl IGJvb3RjaG9vc2VyIGR1cmluZyBydW50aW1lIGlzIHN0b3JlZAotaW4gZ2xvYmFsIHZhcmlhYmxl cyAoYmFja2VkIHdpdGggTlYpLiBBbHRlcm5hdGl2ZWx5IHRoZSA6cmVmOmBzdGF0ZV9mcmFtZXdv cmtgCi1jYW4gYmUgdXNlZCBmb3IgdGhpcyBkYXRhLCB3aGljaCBhbGxvd3MgdG8gc3RvcmUgdGhp cyBkYXRhIHJlZHVuZGFudGx5Ci1hbmQgaW4gc21hbGwgRUVQUk9NIHNwYWNlcy4gU2VlIDpyZWY6 YHN0YXRlX2ZyYW1ld29ya2AgdG8gc2V0dXAgdGhlIHN0YXRlIGZyYW1ld29yay4KLUR1cmluZyBi YXJlYm94IHJ1bnRpbWUgZWFjaCBzdGF0ZSBpbnN0YW5jZSB3aWxsIGNyZWF0ZSBhIGRldmljZQot KHVzdWFsbHkgbmFtZWQgJ3N0YXRlJyB3aGVuIG9ubHkgb25lIGlzIHVzZWQpIHdpdGggYSBzZXQg b2YgcGFyYW1ldGVycy4gU2V0Ci1gYGdsb2JhbC5ib290Y2hvb3Nlci5zdGF0ZV9wcmVmaXhgYCB0 byB0aGUgbmFtZSBvZiB0aGUgZGV2aWNlIGFuZCBvcHRpb25hbGx5IHRoZQotbmFtZXNwYWNlIGlu c2lkZSB0aGlzIGRldmljZS4gRm9yIGV4YW1wbGUgd2hlbiB5b3VyIHN0YXRlIGRldmljZSBpcyBj YWxsZWQgJ3N0YXRlJwotYW5kIGluc2lkZSB0aGF0IHRoZSAnYm9vdGNob29zZXInIG5hbWVzcGFj ZSBpcyB1c2VkIGZvciBkZXNjcmliaW5nIHRoZSB0YXJnZXRzLAotdGhlbiBzZXQgYGBnbG9iYWwu Ym9vdGNob29zZXIuc3RhdGVfcHJlZml4YGAgdG8gYGBzdGF0ZS5ib290Y2hvb3NlcmBgLgorICAq Ym9vdGNob29zZXIqIHNldHMgdGhpcyB0byB0aGUgYm9vdCB0YXJnZXQgdGhhdCB3YXMgY2hvc2Vu IG9uIGxhc3QgYm9vdCAoaW5kZXgpLgogCi1FeGFtcGxlCi0tLS0tLS0tCisuLiBfYm9vdGNob29z ZXIsc2V0dXBfZXhhbXBsZToKKworU2V0dXAgRXhhbXBsZQorLS0tLS0tLS0tLS0tLQorCitXZSB3 YW50IHRvIHNldCB1cCBhIHJlZHVuZGFudCBtYWNoaW5lIHdpdGggdHdvIGJvb3RhYmxlIHN5c3Rl bXMgd2l0aGluIG9uZSBzaGFyZWQKK21lbW9yeSwgaGVyZSBhIE5BTkQgdHlwZSBmbGFzaCBtZW1v cnkgd2l0aCBhIFVCSSBwYXJ0aXRpb24uIFdlIGhhdmUgYSA1MTIgTWlCIE5BTkQKK3R5cGUgZmxh c2gsIHRvIGJlIHVzZWQgb25seSBmb3IgdGhlIHJvb3QgZmlsZXN5c3RlbS4gVGhlIGRldmljZXRy ZWUgZG9lc24ndAorZGVmaW5lIGFueSBwYXJ0aXRpb24sIGJlY2F1c2Ugd2Ugd2FudCB0byBydW4g b25lIFVCSSBwYXJ0aXRpb24gd2l0aCB0d28gdm9sdW1lbnMKK2ZvciB0aGUgcmVkdW5kYW50IHJv b3QgZmlsZXN5c3RlbXMgb24gdGhpcyBmbGFzaCBtZW1vcnkuCisKKy4uIGNvZGUtYmxvY2s6OiB0 ZXh0CiAKLVRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgdG8gaW5pdGlhbGl6ZSB0d28g dGFyZ2V0cywgJ3N5c3RlbTAnIGFuZCAnc3lzdGVtMScuCi1Cb3RoIGJvb3QgZnJvbSBhbiBVQklG UyBvbiBuYW5kMCwgdGhlIGZvcm1lciBoYXMgYSBwcmlvcml0eSBvZiAyMSBhbmQgYm9vdHMgZnJv bQotdGhlIHZvbHVtZSAnc3lzdGVtMCcgd2hlcmVhcyB0aGUgbGF0dGVyIGhhcyBhIHByaW9yaXR5 IG9mIDIwIGFuZCBib290cyBmcm9tCi10aGUgdm9sdW1lICdzeXN0ZW0xJy4KKyAgIG5hbmRAMCB7 CisgICAgICBbLi4uXQorICAgfTsKKworSW4gb3JkZXIgdG8gY29uZmlndXJlIHRoaXMgbWFjaGlu ZSB0aGUgZm9sbG93aW5nIHN0ZXBzIGNhbiBiZSB1c2VkOgogCiAuLiBjb2RlLWJsb2NrOjogc2gK IAotICAjIGluaXRpYWxpemUgdGFyZ2V0ICdzeXN0ZW0wJwotICBudiBib290Y2hvb3Nlci5zeXN0 ZW0wLmJvb3Q9bmFuZDAudWJpLnN5c3RlbTAKLSAgbnYgYm9vdGNob29zZXIuc3lzdGVtMC5kZWZh dWx0X2F0dGVtcHRzPTMKLSAgbnYgYm9vdGNob29zZXIuc3lzdGVtMC5kZWZhdWx0X3ByaW9yaXR5 PTIxCisgICB1Ymlmb3JtYXQgL2Rldi9uYW5kMCAteQorICAgdWJpYXR0YWNoIC9kZXYvbmFuZDAK KyAgIHViaW1rdm9sIC9kZXYvbmFuZDAudWJpIHJvb3RfZmlsZXN5c3RlbV8xIDI1Nk1pQgorICAg dWJpbWt2b2wgL2Rldi9uYW5kMC51Ymkgcm9vdF9maWxlc3lzdGVtXzIgMAorCitUaGUgbGFzdCBj b21tYW5kIGNyZWF0ZXMgYSB2b2x1bWUgd2hpY2ggZmlsbHMgdGhlIHJlbWFpbmluZyBhdmFpbGFi bGUgc3BhY2UKK29uIHRoZSBOQU5EIHR5cGUgZmxhc2ggbWVtb3J5LCB3aGljaCB3aWxsIGJlIG1v c3Qgb2YgdGhlIHRpbWUgc21hbGxlciB0aGFuCisyNTYgTWlCIGR1ZSB0byBmYWN0b3J5IGJhZCBi bG9ja3MgYW5kIGxvc3QgZGF0YSBibG9ja3MgZm9yIFVCSSdzIG1hbmFnZW1lbnQuCisKK0FmdGVy IHRoaXMgcHJlcGFyYXRpb24gd2UgY2FuIGZpbmQgdHdvIGRldmljZXMgaW4gYGAvZGV2YGA6CisK Ky0gYGBuYW5kMC51Ymkucm9vdF9maWxlc3lzdGVtXzFgYAorLSBgYG5hbmQwLnViaS5yb290X2Zp bGVzeXN0ZW1fMmBgCisKK1RoZXNlIHR3byBkZXZpY2VzIGNhbiBub3cgYmUgcG9wdWxhdGVkIHdp dGggdGhlaXIgZmlsZXN5c3RlbSBjb250ZW50LiBJbiBvdXIKK2V4YW1wbGUgaGVyZSB3ZSBhZGRp dGlvbmFsbHkgYXNzdW1lLCB0aGF0IHRoZXNlIHJvb3QgZmlsZXN5c3RlbXMgY29udGFpbiBhIExp bnV4CitrZXJuZWwgd2l0aCBpdHMgY29ycmVzcG9uZGluZyBkZXZpY2V0cmVlIHZpYSBib290IHNw ZWMgKHJlZmVyIHRvCis6cmVmOmBCb290bG9hZGVyIFNwZWMgPGJvb3Rsb2FkZXJfc3BlYz5gIGZv ciBmdXJ0aGVyIGRldGFpbHMpLgorCitFaXRoZXIgZGV2aWNlIGNhbiBiZSBib290ZWQgd2l0aCB0 aGUgOnJlZjpgYm9vdCA8Y29tbWFuZF9ib290PmAgY29tbWFuZCBjb21tYW5kLAorYW5kIHRodXMg Y2FuIGJlIHVzZWQgYnkgdGhlICpib290Y2hvb3NlciogYW5kIHdlIGNhbiBzdGFydCB0byBjb25m aWd1cmUgdGhlCisqYm9vdGNob29zZXIqIHZhcmlhYmxlcy4KKworVGhlIGZvbGxvd2luZyBleGFt cGxlIHNob3dzIGhvdyB0byBpbml0aWFsaXplIHR3byBib290IHRhcmdldHMsIGBgc3lzdGVtMWBg IGFuZAorYGBzeXN0ZW0yYGAuIEJvdGggYm9vdCBmcm9tIGEgVUJJRlMgb24gYGBuYW5kMGBgLCB0 aGUgZm9ybWVyIGhhcyBhIHByaW9yaXR5IG9mCisyMSBhbmQgYm9vdHMgZnJvbSB0aGUgdm9sdW1l IGBgcm9vdF9maWxlc3lzdGVtXzFgYCB3aGVyZWFzIHRoZSBsYXR0ZXIgaGFzIGEKK3ByaW9yaXR5 IG9mIDIwIGFuZCBib290cyBmcm9tIHRoZSB2b2x1bWUgYGByb290X2ZpbGVzeXN0ZW1fMmBgLgor CisuLiBjb2RlLWJsb2NrOjogc2gKIAogICAjIGluaXRpYWxpemUgdGFyZ2V0ICdzeXN0ZW0xJwot ICBudiBib290Y2hvb3Nlci5zeXN0ZW0xLmJvb3Q9bmFuZDAudWJpLnN5c3RlbTEKKyAgbnYgYm9v dGNob29zZXIuc3lzdGVtMS5ib290PW5hbmQwLnViaS5yb290X2ZpbGVzeXN0ZW1fMQogICBudiBi b290Y2hvb3Nlci5zeXN0ZW0xLmRlZmF1bHRfYXR0ZW1wdHM9MwotICBudiBib290Y2hvb3Nlci5z eXN0ZW0xLmRlZmF1bHRfcHJpb3JpdHk9MjAKKyAgbnYgYm9vdGNob29zZXIuc3lzdGVtMS5kZWZh dWx0X3ByaW9yaXR5PTIxCisKKyAgIyBpbml0aWFsaXplIHRhcmdldCAnc3lzdGVtMicKKyAgbnYg Ym9vdGNob29zZXIuc3lzdGVtMi5ib290PW5hbmQwLnViaS5yb290X2ZpbGVzeXN0ZW1fMgorICBu diBib290Y2hvb3Nlci5zeXN0ZW0yLmRlZmF1bHRfYXR0ZW1wdHM9MworICBudiBib290Y2hvb3Nl ci5zeXN0ZW0yLmRlZmF1bHRfcHJpb3JpdHk9MjAKIAogICAjIG1ha2UgdGFyZ2V0cyBrbm93bgot ICBudiBib290Y2hvb3Nlci50YXJnZXRzPSJzeXN0ZW0wIHN5c3RlbTEiCisgIG52IGJvb3RjaG9v c2VyLnRhcmdldHM9InN5c3RlbTEgc3lzdGVtMiIKIAogICAjIHJldHJ5IHVudGlsIG9uZSB0YXJn ZXQgc3VjY2VlZHMKLSAgbnYgYm9vdGNob29zZXIucmV0cnk9InRydWUiCisgIG52IGJvb3RjaG9v c2VyLnJldHJ5PTEKIAogICAjIEZpcnN0IHRyeSBib290Y2hvb3Nlciwgd2hlbiBubyB0YXJnZXRz IHJlbWFpbiBib290IGZyb20gbmV0d29yawogICBudiBib290LmRlZmF1bHQ9ImJvb3RjaG9vc2Vy IG5ldCIKIAotTm90ZSB0aGF0IHRoaXMgZXhhbXBsZSBpcyBmb3IgdGVzdGluZywgbm9ybWFsbHkg dGhlIE5WIHZhcmlhYmxlcyB3b3VsZCBiZQotaW5pdGlhbGl6ZWQgZGlyZWN0bHkgYnkgZmlsZXMg aW4gdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQsIG5vdCB3aXRoIGEgc2NyaXB0LgorLi4gbm90ZTo6 IFRoaXMgZXhhbXBsZSBpcyBmb3IgdGVzdGluZyBvbmx5LCBub3JtYWxseSB0aGUgTlYgdmFyaWFi bGVzIHdvdWxkIGJlCisgICBpbml0aWFsaXplZCBkaXJlY3RseSBieSBmaWxlcyBpbiB0aGUgZGVm YXVsdCBlbnZpcm9ubWVudCwgbm90IHdpdGggYSBzY3JpcHQuCisKK1RoZSBydW4tdGltZSB2YWx1 ZXMgYXJlIHN0b3JlZCBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXMgd2VsbC4gQWx0ZXJuYXRp dmVseSwKK3RoZXkgY2FuIGJlIHN0b3JlZCBpbiBhICpzdGF0ZSogdmFyaWFibGUgc2V0IGluc3Rl YWQuIFJlZmVyIHRvCis6cmVmOmB1c2luZyB0aGUgc3RhdGUgZnJhbWV3b3JrIDxib290Y2hvb3Nl cixzdGF0ZV9mcmFtZXdvcms+YCBmb3IgZnVydGhlcgorZGV0YWlscy4KIAogU2NlbmFyaW9zCiAt LS0tLS0tLS0KIAotVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBzb21lIHNjZW5hcmlvcyB0aGF0IGNh biBiZSBzb2x2ZWQgd2l0aCBib290Y2hvb3Nlci4gQWxsCi1zY2VuYXJpb3MgYXNzdW1lIG11bHRp cGxlIHNsb3RzIHRoYXQgY2FuIGJlIGJvb3RlZCwgd2hlcmUgJ211bHRpcGxlJyBpcyBhbnl0aGlu ZwotaGlnaGVyIHRoYW4gb25lLgorVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBzb21lIHNjZW5hcmlv cyB0aGF0IGNhbiBiZSBoYW5kbGVkIGJ5IGJvb3RjaG9vc2VyLiBBbGwKK3NjZW5hcmlvcyBhc3N1 bWUgbXVsdGlwbGUgYm9vdCB0YXJnZXRzIHRoYXQgY2FuIGJlIGJvb3RlZCwgd2hlcmUgJ211bHRp cGxlJyBpcworYW55dGhpbmcgaGlnaGVyIHRoYW4gb25lLgogCiBTY2VuYXJpbyAxCiAjIyMjIyMj IyMjCiAKLUEgc3lzdGVtIHRoYXQgc2hhbGwgYWx3YXlzIGJvb3Qgd2l0aG91dCB1c2VyIGludGVy YWN0aW9uLiBTdGF5aW5nIGluIHRoZSBib290bG9hZGVyCi1pcyBub3QgYW4gb3B0aW9uLiBJbiB0 aGlzIHNjZW5hcmlvIGEgdGFyZ2V0IGlzIHN0YXJ0ZWQgZm9yIHRoZSBjb25maWd1cmVkIG51bWJl cgotb2YgcmVtYWluaW5nIGF0dGVtcHRzLiBJZiBpdCBjYW5ub3Qgc3VjY2Vzc2Z1bGx5IGJlIHN0 YXJ0ZWQsIHRoZSBuZXh0IHRhcmdldCBpcyBjaG9zZW4uCi1UaGlzIGhhcHBlbnMgdW50aWwgbm8g dGFyZ2V0cyBhcmUgbGVmdCB0byBzdGFydCwgdGhlbiBhbGwgcmVtYWluaW5nIGF0dGVtcHRzIGFy ZQotcmVzZXQgdG8gdGhlaXIgZGVmYXVsdHMgYW5kIHRoZSBmaXJzdCB0YXJnZXQgaXMgdHJpZWQg YWdhaW4uCistIGEgc3lzdGVtIHRoYXQgc2hhbGwgYWx3YXlzIGJvb3Qgd2l0aG91dCB1c2VyIGlu dGVyYWN0aW9uCistIHN0YXlpbmcgaW4gdGhlIGJvb3Rsb2FkZXIgaXMgbm90IGFuIG9wdGlvbi4K KworSW4gdGhpcyBzY2VuYXJpbyBhIGJvb3QgdGFyZ2V0IGlzIHN0YXJ0ZWQgZm9yIHRoZSBjb25m aWd1cmVkIG51bWJlciBvZiByZW1haW5pbmcKK2F0dGVtcHRzLiBJZiBpdCBjYW5ub3QgYmUgc3Rh cnRlZCBzdWNjZXNzZnVsbHksIHRoZSBuZXh0IGJvb3QgdGFyZ2V0IGlzIGNob3Nlbi4KK1RoaXMg cmVwZWF0cyB1bnRpbCBubyBib290IHRhcmdldHMgYXJlIGxlZnQgdG8gc3RhcnQsIHRoZW4gYWxs IHJlbWFpbmluZyBhdHRlbXB0cworYXJlIHJlc2V0IHRvIHRoZWlyIGRlZmF1bHRzIGFuZCB0aGUg Zmlyc3QgYm9vdCB0YXJnZXQgaXMgdHJpZWQgYWdhaW4uCiAKIFNldHRpbmdzCiBeXl5eXl5eXgpA QCAtMTg2LDIyICsyMjUsMjYgQEAgU2V0dGluZ3MKIERlcGxveW1lbnQKIF5eXl5eXl5eXl4KIAot Iy4gYmFyZWJveCBvciBmbGFzaCByb2JvdCBmaWxscyBhbGwgc2xvdHMgd2l0aCB2YWxpZCBzeXN0 ZW1zLgotIy4gVGhlIGFsbC16ZXJvIHNldHRpbmdzIHdpbGwgbGVhZCB0byBhdXRvbWF0aWNhbGx5 IGVuYWJsaW5nIHRoZSBzbG90cywgbm8KLSAgIGRlZmF1bHQgc2V0dGluZ3MgYXJlIG5lZWRlZCBo ZXJlLgorIy4gYmFyZWJveCBvciBmbGFzaCByb2JvdCBmaWxscyBhbGwgYm9vdCB0YXJnZXRzIHdp dGggdmFsaWQgc3lzdGVtcy4KKyMuIFRoZSBhbGwtemVybyBzZXR0aW5ncyB3aWxsIGxlYWQgdG8g YXV0b21hdGljYWxseSBlbmFibGluZyB0aGUgYm9vdCB0YXJnZXRzLAorICAgbm8gZGVmYXVsdCBz ZXR0aW5ncyBhcmUgbmVlZGVkIGhlcmUuCiAKIFJlY292ZXJ5CiBeXl5eXl5eXgogCi1SZWNvdmVy eSB3aWxsIG9ubHkgYmUgY2FsbGVkIHdoZW4gYWxsIHRhcmdldHMgYXJlIG5vdCBzdGFydGFibGUg KFRoYXQgaXMsIG5vIHZhbGlkCi1LZXJuZWwgZm91bmQgb3IgcmVhZCBmYWlsdXJlKS4gT25jZSBh IHRhcmdldCBpcyBzdGFydGFibGUgKEEgdmFsaWQga2VybmVsIGlzIGZvdW5kCi1hbmQgc3RhcnRl ZCkgQm9vdGNob29zZXIgd2lsbCBuZXZlciBmYWxsIHRocm91Z2ggdG8gdGhlIHJlY292ZXJ5IHRh cmdldC4KK1JlY292ZXJ5IHdpbGwgb25seSBiZSBjYWxsZWQgd2hlbiBhbGwgYm9vdCB0YXJnZXRz IGFyZSBub3Qgc3RhcnRhYmxlIChUaGF0IGlzLAorbm8gdmFsaWQga2VybmVsIGZvdW5kIG9yIHJl YWQgZmFpbHVyZSkuIE9uY2UgYSBib290IHRhcmdldCBpcyBzdGFydGFibGUgKGEKK3ZhbGlkIGtl cm5lbCBpcyBmb3VuZCBhbmQgc3RhcnRlZCkgKmJvb3RjaG9vc2VyKiB3aWxsIG5ldmVyIGZhbGwg dGhyb3VnaCB0bwordGhlIHJlY292ZXJ5IGJvb3QgdGFyZ2V0LgogCiBTY2VuYXJpbyAyCiAjIyMj IyMjIyMjCiAKLUEgc3lzdGVtIHdpdGggbXVsdGlwbGUgc2xvdHMsIGEgc2xvdCB0aGF0IHdhcyBi b290ZWQgdGhyZWUgdGltZXMgd2l0aG91dCBzdWNjZXNzCi1zaGFsbCBuZXZlciBiZSBib290ZWQg YWdhaW4gKGV4Y2VwdCBhZnRlciB1cGRhdGUgb3IgdXNlciBpbnRlcmFjdGlvbikuCistIGEgc3lz dGVtIHdpdGggbXVsdGlwbGUgYm9vdCB0YXJnZXRzCistIG9uZSByZWNvdmVyeSBzeXN0ZW0KKwor QSBib290IHRhcmdldCB0aGF0IHdhcyBib290ZWQgdGhyZWUgdGltZXMgd2l0aG91dCBzdWNjZXNz IHNoYWxsIG5ldmVyIGJlIGJvb3RlZAorYWdhaW4gKGV4Y2VwdCBhZnRlciB1cGRhdGUgb3IgdXNl ciBpbnRlcmFjdGlvbikuCiAKIFNldHRpbmdzCiBeXl5eXl5eXgpAQCAtMjE2LDIzICsyNTksMjcg QEAgU2V0dGluZ3MKIERlcGxveW1lbnQKIF5eXl5eXl5eXl4KIAotIy4gYmFyZWJveCBvciBmbGFz aCByb2JvdCBmaWxscyBhbGwgc2xvdHMgd2l0aCB2YWxpZCBzeXN0ZW1zLgotIy4gYmFyZWJveCBv ciBmbGFzaCByb2JvdCBtYXJrcyBzbG90cyBhcyBnb29kIG9yIHN0YXRlIGNvbnRhaW5zIG5vbiB6 ZXJvCisjLiBiYXJlYm94IG9yIGZsYXNoIHJvYm90IGZpbGxzIGFsbCBib290IHRhcmdldHMgd2l0 aCB2YWxpZCBzeXN0ZW1zLgorIy4gYmFyZWJveCBvciBmbGFzaCByb2JvdCBtYXJrcyBib290IHRh cmdldHMgYXMgZ29vZCBvciAqc3RhdGUqIGNvbnRhaW5zIG5vbiB6ZXJvCiAgICBkZWZhdWx0cyBm b3IgdGhlIHJlbWFpbmluZ19hdHRlbXB0cy9wcmlvcml0aWVzLgogCiBSZWNvdmVyeQogXl5eXl5e Xl4KLWRvbmUgYnkgJ3JlY292ZXJ5JyBib290IHRhcmdldCB3aGljaCBpcyBib290ZWQgYWZ0ZXIg dGhlIGJvb3RjaG9vc2VyIGZhbGxzIHRocm91Z2ggZHVlIHRvCi10aGUgbGFjayBvZiBib290YWJs ZSB0YXJnZXRzLiBUaGlzIHRhcmdldCBjYW4gYmU6CiAKLS0gQSBzeXN0ZW0gdGhhdCB3aWxsIGJl IGJvb3RlZCBhcyByZWNvdmVyeS4KLS0gQSBiYXJlYm94IHNjcmlwdCB0aGF0IHdpbGwgYmUgc3Rh cnRlZC4KK0RvbmUgYnkgJ3JlY292ZXJ5JyBib290IHRhcmdldCB3aGljaCBpcyBib290ZWQgYWZ0 ZXIgdGhlICpib290Y2hvb3NlciogZmFsbHMKK3Rocm91Z2ggZHVlIHRvIHRoZSBsYWNrIG9mIGJv b3RhYmxlIHRhcmdldHMuIFRoaXMgYm9vdCB0YXJnZXQgY2FuIGJlOgorCistIGEgc3lzdGVtIHRo YXQgd2lsbCBiZSBib290ZWQgYXMgcmVjb3ZlcnkuCistIGEgYmFyZWJveCBzY3JpcHQgdGhhdCB3 aWxsIGJlIHN0YXJ0ZWQuCiAKIFNjZW5hcmlvIDMKICMjIyMjIyMjIyMKIAotQSBzeXN0ZW0gd2l0 aCBtdWx0aXBsZSBzbG90cyBhbmQgb25lIHJlY292ZXJ5IHN5c3RlbS4gQm9vdGluZyBhIHNsb3Qg dGhyZWUgdGltZXMKLXdpdGhvdXQgc3VjY2VzcyBkaXNhYmxlcyBpdC4gQSBwb3dlciBjeWNsZSBz aGFsbCBub3QgYmUgY291bnRlZCBhcyBmYWlsZWQgYm9vdC4KKy0gYSBzeXN0ZW0gd2l0aCBtdWx0 aXBsZSBib290IHRhcmdldHMKKy0gb25lIHJlY292ZXJ5IHN5c3RlbQorLSBhIHBvd2VyIGN5Y2xl IHNoYWxsIG5vdCBiZSBjb3VudGVkIGFzIGZhaWxlZCBib290LgorCitCb290aW5nIGEgYm9vdCB0 YXJnZXQgdGhyZWUgdGltZXMgd2l0aG91dCBzdWNjZXNzIGRpc2FibGVzIGl0LgogCiBTZXR0aW5n cwogXl5eXl5eXl4KQEAgLTI0NywzMyArMjk0LDIwNSBAQCBTZXR0aW5ncwogRGVwbG95bWVudAog Xl5eXl5eXl5eXgogCi0jLiBiYXJlYm94IG9yIGZsYXNoIHJvYm90IGZpbGxzIGFsbCBzbG90cyB3 aXRoIHZhbGlkIHN5c3RlbXMuCi0jLiBiYXJlYm94IG9yIGZsYXNoIHJvYm90IG1hcmtzIHNsb3Rz IGFzIGdvb2QuCisjLiBiYXJlYm94IG9yIGZsYXNoIHJvYm90IGZpbGxzIGFsbCBib290IHRhcmdl dHMgd2l0aCB2YWxpZCBzeXN0ZW1zLgorIy4gYmFyZWJveCBvciBmbGFzaCByb2JvdCBtYXJrcyBi b290IHRhcmdldHMgYXMgZ29vZC4KIAogUmVjb3ZlcnkKIF5eXl5eXl5eCiAKLURvbmUgYnkgJ3Jl Y292ZXJ5JyBib290IHRhcmdldCB3aGljaCBpcyBib290ZWQgYWZ0ZXIgdGhlIGJvb3RjaG9vc2Vy IGZhbGxzIHRocm91Z2gKLWR1ZSB0byB0aGUgbGFjayBvZiBib290YWJsZSB0YXJnZXRzLiBUaGlz IHRhcmdldCBjYW4gYmU6CitEb25lIGJ5ICdyZWNvdmVyeScgYm9vdCB0YXJnZXQgd2hpY2ggaXMg Ym9vdGVkIGFmdGVyIHRoZSAqYm9vdGNob29zZXIqIGZhbGxzCit0aHJvdWdoIGR1ZSB0byB0aGUg bGFjayBvZiBib290YWJsZSB0YXJnZXRzLiBUaGlzIHRhcmdldCBjYW4gYmU6CisKKy0gYSBzeXN0 ZW0gdGhhdCB3aWxsIGJlIGJvb3RlZCBhcyByZWNvdmVyeS4KKy0gYSBiYXJlYm94IHNjcmlwdCB0 aGF0IHdpbGwgYmUgc3RhcnRlZC4KIAotLSBBIHN5c3RlbSB0aGF0IHdpbGwgYmUgYm9vdGVkIGFz IHJlY292ZXJ5LgotLSBBIGJhcmVib3ggc2NyaXB0IHRoYXQgd2lsbCBiZSBzdGFydGVkLgorLi4g X2Jvb3RjaG9vc2VyLHN0YXRlX2ZyYW1ld29yazoKKworVXNpbmcgdGhlICpTdGF0ZSogRnJhbWV3 b3JrIGFzIEJhY2tlbmQgZm9yIFJ1bi1UaW1lIFZhcmlhYmxlIERhdGEKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Vz dWFsbHkgdGhlICpib290Y2hvb3NlciogbW9kaWZpZXMgaXRzIGRhdGEgaW4gZ2xvYmFsIHZhcmlh YmxlcyB3aGljaCBhcmUKK2Nvbm5lY3RlZCB0byA6cmVmOmBub24gdm9sYXRpbGUgdmFyaWFibGVz IDxjb25maWdfZGV2aWNlPmAuCisKK0FsdGVybmF0aXZlbHkgdGhlIDpyZWY6YHN0YXRlX2ZyYW1l d29ya2AgY2FuIGJlIHVzZWQgZm9yIHRoaXMgZGF0YSwgd2hpY2gKK2FsbG93cyB0byBzdG9yZSB0 aGlzIGRhdGEgcmVkdW5kYW50bHkgaW4gc29tZSBraW5kIG9mIHBlcnNpc3RlbnQgbWVtb3J5Lgor CitJbiBvcmRlciB0byBsZXQgdGhlICpib290Y2hvb3NlciogdXNlIHRoZSAqc3RhdGUqIGZyYW1l d29yayBmb3IgaXRzIHN0b3JhZ2UKK2JhY2tlbmQsIGNvbmZpZ3VyZSB0aGUgYGBib290Y2hvb3Nl ci5zdGF0ZV9wcmVmaXhgYCB2YXJpYWJsZSB3aXRoIHRoZSAqc3RhdGUqCit2YXJpYWJsZSBzZXQg aW5zdGFuY2UgbmFtZS4KKworVXN1YWxseSBhIGdlbmVyaWMgKnN0YXRlKiB2YXJpYWJsZSBzZXQg aW4gdGhlIGRldmljZXRyZWUgaXMgZGVmaW5lZCBsaWtlIHRoaXMKKyhyZWZlciB0byA6cmVmOmBi YXJlYm94LHN0YXRlYCBmb3IgbW9yZSBkZXRhaWxzKToKKworLi4gY29kZS1ibG9jazo6IHRleHQK KworICAgc29tZV9raW5kX29mX3N0YXRlIHsKKyAgICAgIFsuLi5dCisgICB9OworCitBdCBiYXJl Ym94IHJ1bi10aW1lIHRoaXMgd2lsbCByZXN1bHQgaW4gYSAqc3RhdGUqIHZhcmlhYmxlIHNldCBp bnN0YW5jZSBjYWxsZWQKKypzb21lX2tpbmRfb2Zfc3RhdGUqLiBZb3UgY2FuIGFsc28gc3RvcmUg dmFyaWFibGVzIHVucmVsYXRlZCB0byAqYm9vdGNob29zZXIqIChhCitzZXJpYWwgbnVtYmVyLCBN QUMgYWRkcmVzcywg4oCmKSBpbiBpdC4KKworRXh0ZW5kaW5nIHRoaXMgKnN0YXRlKiB2YXJpYWJs ZSBzZXQgYnkgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgdGhlICpib290Y2hvb3NlcioKK2lzIHNp bXBseSBkb25lIGJ5IGFkZGluZyBzbyBjYWxsZWQgJ2Jvb3QgdGFyZ2V0cycgYW5kIG9wdGlvbmFs bHkgb25lIGBgbGFzdF9jaG9zZW5gYAorbm9kZS4gSXQgdGhlbiBsb29rcyBsaWtlOgorCisuLiBj b2RlLWJsb2NrOjogdGV4dAorCisgICBzb21lX2tpbmRfb2Zfc3RhdGUgeworICAgICBbLi4uXQor ICAgICBib290X3RhcmdldF8xIHsKKyAgICAgICAgIFsuLi5dCisgICAgIH07CisgICAgIGJvb3Rf dGFyZ2V0XzIgeworICAgICAgICAgWy4uLl0KKyAgICAgfTsKKyAgIH07CisKK0l0IGNvdWxkIG1h a2VzIHNlbnNlIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgKmJvb3RjaG9vc2VyKiBv cGVyYXRpb24KK2luIHRoZSAqc3RhdGUqIHZhcmlhYmxlIHNldCBhcyB3ZWxsLiBJbiBvcmRlciB0 byBkbyBzbywgYWRkIGEgbm9kZSB3aXRoIHRoZSBuYW1lCitgYGxhc3RfY2hvc2VuYGAgdG8gdGhl ICpzdGF0ZSogdmFyaWFibGUgc2V0LiAqYm9vdGNob29zZXIqIHdpbGwgdXNlIGl0IGlmIHByZXNl bnQuCitUaGUgKnN0YXRlJyB2YXJpYWJsZSBzZXQgZGVmaW5pdGlvbiB0aGVuIGxvb2tzIGxpa2U6 CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgIHNvbWVfa2luZF9vZl9zdGF0ZSB7CisgICAg IFsuLi5dCisgICAgIGJvb3RfdGFyZ2V0XzEgeworICAgICAgICAgWy4uLl0KKyAgICAgfTsKKyAg ICAgYm9vdF90YXJnZXRfMiB7CisgICAgICAgICBbLi4uXQorICAgICB9OworICAgICBsYXN0X2No b3NlbiB7CisgICAgICAgICByZWcgPSA8b2Zmc2V0IDB4ND47CisgICAgICAgICB0eXBlID0gInVp bnQzMiI7CisgICAgIH07CisgICB9OworCitUaGUgYGBib290X3RhcmdldF8qYGAgbmFtZXMgc2hv d24gYWJvdmUgYXJlbid0IHZhcmlhYmxlcyB0aGVtc2VsdmVzIChsaWtlIHRoZSBvdGhlcgordmFy aWFibGVzIGluIHRoZSAqc3RhdGUqIHZhcmlhYmxlIHNldCksIHRoZXkgYXJlIG5hbWVkIGNvbnRh aW5lcnMgaW5zdGVhZCwgd2hpY2gKK2FyZSB1c2VkIHRvIGdyb3VwIHZhcmlhYmxlcyBzcGVjaWZp YyB0byAqYm9vdGNob29zZXIqLgorCitBICdib290IHRhcmdldCcgY29udGFpbmVyIGhhcyB0aGUg Zm9sbG93aW5nIGZpeGVkIGNvbnRlbnQ6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgIHNv bWVfYm9vdF90YXJnZXQgeworICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDE+OworICAgICAg ICAgICNzaXplLWNlbGxzID0gPDE+OworCisgICAgICAgICAgcmVtYWluaW5nX2F0dGVtcHRzIHsK KyAgICAgICAgICAgICAgWy4uLl0KKyAgICAgICAgICAgICAgZGVmYXVsdCA9IDxzb21lIHZhbHVl PjsgLyogLT4gcmVhZCBub3RlIGJlbG93ICovCisgICAgICAgICAgfTsKKworICAgICAgICAgIHBy aW9yaXR5IHsKKyAgICAgICAgICAgICAgWy4uLl0KKyAgICAgICAgICAgICAgZGVmYXVsdCA9IDxz b21lIHZhbHVlPjsgLyogLT4gcmVhZCBub3RlIGJlbG93ICovCisgICAgICAgICAgfTsKKyAgIH07 CisKKy4uIGltcG9ydGFudDo6IFNpbmNlIGVhY2ggdmFyaWFibGUgaW4gYSAqc3RhdGUqIHZhcmlh YmxlIHNldCByZXF1aXJlcyBhIGBgcmVnYGAKKyAgIHByb3BlcnR5LCB0aGUgdmFsdWUgb2YgaXRz IGBgcmVnYGAgcHJvcGVydHkgbXVzdCBiZSB1bmlxdWUsIGUuZy4gdGhlIG9mZnNldHMKKyAgIG11 c3QgYmUgY29uc2VjdXRpdmUgZnJvbSBhIGdsb2JhbCBwb2ludCBvZiB2aWV3LCBhcyB0aGV5IGRl c2NyaWJlIHRoZQorICAgc3RvcmFnZSBsYXlvdXQgaW4gdGhlIGJhY2tlbmQgbWVtb3J5LgorCitT bywgYGByZW1haW5pbmdfYXR0ZW1wdHNgYCBhbmQgYGBwcmlvcml0eWBgIGFyZSByZXF1aXJlZCB2 YXJpYWJsZSBub2RlcyBhbmQgYXJlCit1c2VkIHRvIHNldHVwIHRoZSBjb3JyZXNwb25kaW5nIHJ1 bi10aW1lIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUKK2BgZ2xvYmFsLmJvb3RjaG9vc2Vy Ljx0YXJnZXRuYW1lPmBgIG5hbWVzcGFjZS4KKworLi4gaW1wb3J0YW50OjogSXQgaXMgaW1wb3J0 YW50IHRvIHByb3ZpZGUgYSBgYGRlZmF1bHRgYCB2YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZQorICAg Zm9yIHRoZSBjYXNlIHdoZW4gdGhlICpzdGF0ZSogdmFyaWFibGUgc2V0IGJhY2tlbmQgbWVtb3J5 IGlzIHVuaW5pdGlhbGl6ZWQuCisgICBUaGlzIGlzIGFsc28gdHJ1ZSBpZiBkZWZhdWx0IHZhbHVl cyB0aHJvdWdoIHRoZSAqYm9vdGNob29zZXIncyogZW52aXJvbm1lbnQKKyAgIHZhcmlhYmxlcyBh cmUgZGVmaW5lZCAoZS5nLiBgYGJvb3RjaG9vc2VyLmRlZmF1bHRfYXR0ZW1wdHNgYCwKKyAgIGBg Ym9vdGNob29zZXIuZGVmYXVsdF9wcmlvcml0eWBgIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIGJv b3QgdGFyZ2V0IHNwZWNpZmljCisgICB2YXJpYWJsZXMpLiBUaGUgZm9ybWVyIG9uZXMgYXJlIGZv cndhcmRlZCB0byB0aGUgKmJvb3RjaG9vc2VyKiB0byBtYWtlIGEKKyAgIGRlY2lzaW9uLCB0aGUg bGF0dGVyIG9uZXMgYXJlIHVzZWQgYnkgdGhlICpib290Y2hvb3NlciogdG8gbWFrZSBhIGRlY2lz aW9uCisgICB0aGUgbmV4dCB0aW1lLgorCitFeGFtcGxlCisjIyMjIyMjCisKK0ZvciB0aGlzIGV4 YW1wbGUgd2UgdXNlIHRoZSBzYW1lIHN5c3RlbSBhbmQgaXRzIHNldHVwIGRlc2NyaWJlZCBpbgor OnJlZjpgc2V0dXAgZXhhbXBsZSA8Ym9vdGNob29zZXIsc2V0dXBfZXhhbXBsZT5gLiBUaGUgcmVz dWx0aW5nIGRldmljZXRyZWUKK2NvbnRlbnQgZm9yIHRoZSAqc3RhdGUqIHZhcmlhYmxlIHNldCBs b29rcyBsaWtlOgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisgICBzeXN0ZW1fc3RhdGUgewor ICAgICAgICBbLi4uXQorICAgICAgICBzeXN0ZW0xIHsKKyAgICAgICAgICAgICAjYWRkcmVzcy1j ZWxscyA9IDwxPjsKKyAgICAgICAgICAgICAjc2l6ZS1jZWxscyA9IDwxPjsKKyAgICAgICAgICAg ICByZW1haW5pbmdfYXR0ZW1wdHNAMCB7CisgICAgICAgICAgICAgICAgIHJlZyA9IDwweDAgMHg0 PjsKKyAgICAgICAgICAgICAgICAgdHlwZSA9ICJ1aW50MzIiOworICAgICAgICAgICAgICAgICBk ZWZhdWx0ID0gPDM+OworICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgcHJpb3JpdHlANCB7 CisgICAgICAgICAgICAgICAgIHJlZyA9IDwweDQgMHg0PjsKKyAgICAgICAgICAgICAgICAgdHlw ZSA9ICJ1aW50MzIiOworICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gPDIwPjsKKyAgICAgICAg ICAgICB9OworICAgICAgICB9OworCisgICAgICAgIHN5c3RlbTIgeworICAgICAgICAgICAgICNh ZGRyZXNzLWNlbGxzID0gPDE+OworICAgICAgICAgICAgICNzaXplLWNlbGxzID0gPDE+OworICAg ICAgICAgICAgIHJlbWFpbmluZ19hdHRlbXB0c0A4IHsKKyAgICAgICAgICAgICAgICAgcmVnID0g PDB4OCAweDQ+OworICAgICAgICAgICAgICAgICB0eXBlID0gInVpbnQzMiI7CisgICAgICAgICAg ICAgICAgIGRlZmF1bHQgPSA8Mz47CisgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICBwcmlv cml0eUBjIHsKKyAgICAgICAgICAgICAgICAgcmVnID0gPDB4YyAweDQ+OworICAgICAgICAgICAg ICAgICB0eXBlID0gInVpbnQzMiI7CisgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSA8MjE+Owor ICAgICAgICAgICAgIH07CisgICAgICAgIH07CisKKyAgICAgICAgbGFzdF9jaG9zZW5AMTAgewor ICAgICAgICAgICAgIHJlZyA9IDwweDEwIDB4ND47CisgICAgICAgICAgICAgdHlwZSA9ICJ1aW50 MzIiOworICAgICAgICB9OworICAgfTsKKworLi4gaW1wb3J0YW50OjogV2hpbGUgdGhlIGBgc3lz dGVtMS8yYGAgbm9kZXMgc3VnZ2VzdCBhIGRpZmZlcmVudCBuYW1lc3BhY2UgaW5zaWRlIHRoZQor ICAgKnN0YXRlKiB2YXJpYWJsZSBzZXQsIHRoZSBhY3R1YWwgdmFyaWFibGUncyBgYHJlZ2BgLXBy b3BlcnRpZXMgYW5kIHRoZWlyIG9mZnNldAorICAgcGFydCBhcmUgYWx3YXlzIHJlbGF0aXZlIHRv IHRoZSB3aG9sZSAqc3RhdGUqIHZhcmlhYmxlIHNldCBhbmQgdGh1cyBtdXN0IGJlCisgICBjb25z ZWN1dGl2ZSBnbG9iYWxseS4KKworVG8gbWFrZSAqYm9vdGNob29zZXIqIHVzZSB0aGUgc28gY2Fs bGVkIGBgc3lzdGVtX3N0YXRlYGAgKnN0YXRlKiB2YXJpYWJsZSBzZXQKK2luc3RlYWQgb2YgdGhl IE5WIHJ1bi10aW1lIGVudmlyb25tZW50IHZhcmlhYmxlcywgd2UganVzdCBzZXQ6CisKKy4uIGNv ZGUtYmxvY2s6OiB0ZXh0CisKKyAgIGdsb2JhbC5ib290Y2hvb3Nlci5zdGF0ZV9wcmVmaXg9c3lz dGVtX3N0YXRlCisKKy4uIG5vdGU6OiBJdHMgYSBnb29kIGlkZWEgdG8ga2VlcCB0aGUgYGBib290 Y2hvb3Nlci48dGFyZ2V0bmFtZT4uZGVmYXVsdF9wcmlvcml0eWBgCisgICBhbmQgYGBib290Y2hv b3Nlci48dGFyZ2V0bmFtZT4uZGVmYXVsdF9hdHRlbXB0c2BgIHZhbHVlcyBpbiBzeW5jIHdpdGgg dGhlCisgICBjb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWVzIGluIHRoZSBkZXZpY2V0cmVlLgog CiBVcGRhdGluZyBzeXN0ZW1zCiAtLS0tLS0tLS0tLS0tLS0tCiAKLVVwZGF0aW5nIGEgc2xvdCBp cyB0aGUgc2FtZSBhbW9uZyB0aGUgZGlmZmVyZW50IHNjZW5hcmlvcy4gSXQgaXMgYXNzdW1lZCB0 aGF0IHRoZQotdXBkYXRlIGlzIGRvbmUgdW5kZXIgYSBydW5uaW5nIExpbnV4IHN5c3RlbSB3aGlj aCBjYW4gYmUgb25lIG9mIHRoZSByZWd1bGFyIGJvb3RjaG9vc2VyCi1zbG90cyBvciBhIGRlZGlj YXRlZCByZWNvdmVyeSBzeXN0ZW0uIEZvciB0aGUgcmVndWxhciBzbG90cyB1cGRhdGluZyBpcyBk b25lIGxpa2U6Ci0KLS0gU2V0IHRoZSBwcmlvcml0eSBvZiB0aGUgaW5hY3RpdmUgc2xvdCB0byAw LgotLSBVcGRhdGUgdGhlIGluYWN0aXZlIHNsb3QuCi0tIFNldCBwcmlvcml0eSBvZiB0aGUgaW5h Y3RpdmUgc2xvdCB0byBhIGhpZ2hlciB2YWx1ZSB0aGFuIHRoZSBhY3RpdmUgc2xvdC4KLS0gU2V0 IHJlbWFpbmluZ19hdHRlbXB0cyBvZiB0aGUgaW5hY3RpdmUgc2xvdCB0byBub256ZXJvLgorVXBk YXRpbmcgYSBib290IHRhcmdldCBpcyB0aGUgc2FtZSBhbW9uZyB0aGUgZGlmZmVyZW50IHNjZW5h cmlvcy4gSXQgaXMgYXNzdW1lZAordGhhdCB0aGUgdXBkYXRlIGlzIGRvbmUgdW5kZXIgYSBydW5u aW5nIExpbnV4IHN5c3RlbSB3aGljaCBjYW4gYmUgb25lIG9mIHRoZQorcmVndWxhciAqYm9vdGNo b29zZXIqIGJvb3QgdGFyZ2V0cyBvciBhIGRlZGljYXRlZCByZWNvdmVyeSBzeXN0ZW0uIEZvciB0 aGUKK3JlZ3VsYXIgKmJvb3RjaG9vc2VyKiBib290IHRhcmdldHMgdXBkYXRpbmcgaXMgZG9uZSBs aWtlOgorCistIERpc2FibGUgdGhlIGluYWN0aXZlIChlLmcuIG5vdCB1c2VkIHJpZ2h0IG5vdykg Ym9vdCB0YXJnZXQgYnkgc2V0dGluZyBpdHMKKyAgYGBwcmlvcml0eWBgIHRvIDAuCistIFVwZGF0 ZSB0aGUgaW5hY3RpdmUgYm9vdCB0YXJnZXQuCistIFNldCBgYHJlbWFpbmluZ19hdHRlbXB0c2Bg IG9mIHRoZSBpbmFjdGl2ZSBib290IHRhcmdldCB0byBub256ZXJvLgorLSBFbmFibGUgdGhlIGlu YWN0aXZlIGJvb3QgdGFyZ2V0IGJ5IHNldHRpbmcgaXRzIGBgcHJpb3JpdHlgYCB0byBhIGhpZ2hl ciB2YWx1ZQorICB0aGFuIGFueSBvdGhlciBib290IHRhcmdldCAoaW5jbHVkaW5nIHRoZSB1c2Vk IG9uZSByaWdodCBub3cpLgogLSBSZWJvb3QuCi0tIElmIG5lY2Vzc2FyeSB1cGRhdGUgdGhlIG5v dyBpbmFjdGl2ZSwgbm90IHlldCB1cGRhdGVkIHNsb3QgdGhlIHNhbWUgd2F5LgorLSBJZiBuZWNl c3NhcnkgdXBkYXRlIHRoZSBub3cgaW5hY3RpdmUsIG5vdCB5ZXQgdXBkYXRlZCBib290IHRhcmdl dCB0aGUgc2FtZSB3YXkuCiAKLU9uZSB3YXkgb2YgdXBkYXRpbmcgc3lzdGVtcyBpcyB1c2luZyBS QVVDXyB3aGljaCBpbnRlZ3JhdGVzIHdlbGwgd2l0aCB0aGUgYm9vdGNob29zZXIKK09uZSB3YXkg b2YgdXBkYXRpbmcgc3lzdGVtcyBpcyB1c2luZyBSQVVDXyB3aGljaCBpbnRlZ3JhdGVzIHdlbGwg d2l0aCB0aGUgKmJvb3RjaG9vc2VyKgogaW4gYmFyZWJveC4KIAotLi4gX1JBVUM6IGh0dHBzOi8v cmF1Yy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvIFJBVUMgKAorLi4gX1JBVUM6IGh0dHBzOi8v cmF1Yy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9u L3VzZXIvc3RhdGUucnN0IGIvRG9jdW1lbnRhdGlvbi91c2VyL3N0YXRlLnJzdAppbmRleCA3M2M0 YmU4MTUuLjdkNmM1NzcwZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi91c2VyL3N0YXRlLnJz dAorKysgYi9Eb2N1bWVudGF0aW9uL3VzZXIvc3RhdGUucnN0CkBAIC0zLDY1ICszLDY0MyBAQAog QmFyZWJveCBTdGF0ZSBGcmFtZXdvcmsKID09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBz dGF0ZSBmcmFtZXdvcmsgaXMgYnVpbGQgdG8gZXhjaGFuZ2UgZGF0YSBiZXR3ZWVuIEJhcmVib3gg YW5kIExpbnV4Ci11c2Vyc3BhY2UgdXNpbmcgYSBub24tdm9sYXRpbGUgc3RvcmFnZS4gVGhlcmUg YXJlIHNldmVyYWwgY29tcG9uZW50cyBpbnZvbHZlZC4KLUJhcmVib3ggaGFzIGEgc3RhdGUgZHJp dmVyIHRvIGFjY2VzcyB0aGUgdmFyaWFibGVzLiBGb3IgdGhlIExpbnV4IFVzZXJzcGFjZQotdGhl cmUgaXMgYSB1c2Vyc3BhY2UgdG9vbC4KLQotRGV2aWNldHJlZQotLS0tLS0tLS0tLQotCi1DdXJy ZW50bHkgdGhlIGRldmljZXRyZWUgZGVmaW5lcyB0aGUgbGF5b3V0IG9mIHRoZSB2YXJpYWJsZXMg YW5kIGRhdGEuCi1WYXJpYWJsZXMgYXJlIGZpeGVkIHNpemUuIFNldmVyYWwgdHlwZXMgYXJlIHN1 cHBvcnRlZCwgc2VlIHRoZSBiaW5kaW5nCi1kb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgotCi1E YXRhIEZvcm1hdHMKLS0tLS0tLS0tLS0tLQotCi1UaGUgc3RhdGUgZGF0YSBjYW4gYmUgc3RvcmVk IGluIGRpZmZlcmVudCB3YXlzLiBDdXJyZW50bHkgdHdvIGZvcm1hdHMgYXJlCi1hdmFpbGFibGUs IGBgcmF3YGAgYW5kIGBgZHRiYGAuIEJvdGggZm9ybWF0IHRoZSBzdGF0ZSBkYXRhIGRpZmZlcmVu dGx5LgotQmFzaWNhbGx5IHRoZXNlIGFyZSBzZXJpYWxpemVycy4gVGhlIHJhdyBzZXJpYWxpemVy IGFkZGl0aW9uYWxseSBzdXBwb3J0cyBhCi1ITUFDIGFsZ29yaXRobSB0byBkZXRlY3QgbWFuaXB1 bGF0aW9ucy4KLQotVGhlIGRhdGEgaXMgYWx3YXlzIHN0b3JlZCBpbiBhIGxvZ2ljYWwgdW5pdCBj YWxsZWQgYGBidWNrZXRgYC4gQSBgYGJ1Y2tldGBgIGhhcwotaXRzIG93biBzaXplIGRlcGVuZGlu ZyBvbiBzb21lIGV4dGVybmFsIGNvbnRyYWludHMuIFRoZXNlIGNvbnRyYWludHMgYXJlIGxpc3Rl ZAotaW4gbW9yZSBkZXRhaWwgYmVsb3cgZGVwZW5kaW5nIG9uIHRoZSB1c2VkIG1lbW9yeSB0eXBl IGFuZCBzdG9yYWdlIGJhY2tlbmQuIEEKLWBgYnVja2V0YGAgc3RvcmVzIGV4YWN0bHkgb25lIHN0 YXRlLiBBIGRlZmF1bHQgbnVtYmVyIG9mIHRocmVlIGJ1Y2tldHMgaXMgdXNlZAotdG8gc3RvcmUg ZGF0YSByZWR1bmRhbnRlbHkuCi0KLVJlZHVuZGFuY3kKLS0tLS0tLS0tLS0KLQotVGhlIHN0YXRl IGZyYW1ld29yayBpcyBzYWZlIGFnYWluc3QgcG93ZXJmYWlsdXJlcyBkdXJpbmcgd3JpdGUgb3Bl cmF0aW9ucy4gVG8KLWFyY2hpZXZlIHRoYXQgbXVsdGlwbGUgYnVja2V0cyBhcmUgc3RvcmVkIHRv IGRpc2suIFdoZW4gd3JpdGluZyBhbGwgYnVja2V0cyBhcmUKLXdyaXR0ZW4gaW4gb3JkZXIuIFdo ZW4gcmVhZGluZywgdGhlIGJ1Y2tldHMgYXJlIHJlYWQgaW4gb3JkZXIgYW5kIHRoZSBmaXJzdAot b25lIGZvdW5kIHRoYXQgcGFzc2VzIENSQyB0ZXN0cyBpcyB1c2VkLiBXaGVuIGFsbCBkYXRhIGlz IHJlYWQgdGhlIGJ1Y2tldHMKLWNvbnRhaW5pbmcgaW52YWxpZCBvciBvdXRkYXRlZCBkYXRhIGFy ZSB3cml0dGVuIHdpdGggdGhlIGRhdGEganVzdCByZWFkLiBBbHNvCi1OQU5EIGJsb2NrcyBuZWVk IGNsZWFudXAgZHVlIHRvIGV4Y2Vzc2l2ZSBiaXRmbGlwcyBhcmUgcmV3cml0dGVuIGluIHRoaXMg c3RlcC4KLVdpdGggdGhpcyBpdCBpcyBtYWRlIHN1cmUgdGhhdCBhZnRlciBzdWNjZXNzZnVsIGlu aXRpYWxpemF0aW9uIG9mIGEgc3RhdGUgdGhlCi1kYXRhIG9uIHRoZSBzdG9yYWdlIGRldmljZSBp cyBjb25zaXN0ZW50IGFuZCByZWR1bmRhbnQuCi0KLVN0b3JhZ2UgQmFja2VuZHMKLS0tLS0tLS0t LS0tLS0tLS0KLQotVGhlIHNlcmlhbGl6ZWQgZGF0YSBjYW4gYmUgc3RvcmVkIHRvIGRpZmZlcmVu dCBiYWNrZW5kcy4gQ3VycmVudGx5IHR3bwotaW1wbGVtZW50YXRpb25zIGV4aXN0LCBgYGNpcmN1 bGFyYGAgYW5kIGBgZGlyZWN0YGAuIFRoZSBzdGF0ZSBmcmFtZXdvcmsgYXV0b21hdGljYWxseQot c2VsZWN0cyB0aGUgY29ycmVjdCBiYWNrZW5kIGRlcGVuZGluZyBvbiB0aGUgc3RvcmFnZSBtZWRp dW0uIE1lZGlhIHJlcXVpcmluZwotZXJhc2Ugb3BlcmF0aW9ucyAoTkFORCwgTk9SIGZsYXNoKSB1 c2UgdGhlIGBgY2lyY3VsYXJgYCBiYWNrZW5kLCBvdGhlcnMgdXNlIHRoZSBgYGRpcmVjdGBgCi1i YWNrZW5kLiBUaGUgcHVycG9zZSBvZiB0aGUgYGBjaXJjdWxhcmBgIGJhY2tlbmQgaXMgdG8gc2F2 ZSBlcmFzZSBjeWNsZXMgd2hpY2ggbWF5Ci13ZWFyIG91dCB0aGUgZmxhc2ggYmxvY2tzLiBJdCBj b250aW51b3VzbHkgZmlsbHMgZXJhc2VibG9ja3Mgd2l0aCB1cGRhdGVkIGRhdGEKLWFuZCBvbmx5 IHdoZW4gYW4gZXJhc2VibG9jayBpZiBmdWxseSB3cml0dGVuIGVyYXNlcyBpdCBhbmQgc3RhcnRz IG92ZXIgd3JpdGluZwotbmV3IGRhdGEgdG8gdGhlIHNhbWUgZXJhc2VibG9jayBhZ2Fpbi4KLQot Rm9yIGFsbCBiYWNrZW5kcyBtdWx0aXBsZSBjb3BpZXMgYXJlIHdyaXR0ZW4gdG8gaGFuZGxlIHJl YWQgZXJyb3JzLgotCi1Db21tYW5kcworQm9hcmRzIG9mdGVuIGhhdmUgdGhlIG5lZWQgdG8gc3Rv cmUgdmFyaWFibGUgc2V0cyBpbiBwZXJzaXN0ZW50IG1lbW9yeS4gYmFyZWJveAorY291bGQgaGFu ZGxlIHRoYXQgd2l0aCBpdHMgcmVndWxhciBlbnZpcm9ubWVudC4gQnV0IHRoZSBjb25zdHJhaW50 cyBmb3Igc3VjaCBhCit2YXJpYWJsZSBzZXQgYXJlIG9mdGVuIGRpZmZlcmVudCBmcm9tIHdoYXQg dGhlIHJlZ3VsYXIgZW52aXJvbm1lbnQgY2FuIGRvOgorCisqIGNvbXBhY3QgYmluYXJ5IGZvcm1h dCB0byBtYWtlIGl0IHN1aXRhYmxlIGZvciBzbWFsbCBub24tdm9sYXRpbGUgbWVtb3JpZXMKKyog YXRvbWljIHNhdmUvcmVzdG9yZSBvZiB0aGUgd2hvbGUgdmFyaWFibGUgc2V0CisqIHJlZHVuZGFu Y3kKKworKnN0YXRlKiBpcyBhIGZyYW1ld29yayB0byBkZXNjcmliZSwgYWNjZXNzLCBzdG9yZSBh bmQgcmVzdG9yZSBhIHNldCBvZiB2YXJpYWJsZXMKK2FuZCBpcyBwcmVwYXJlZCB0byBleGNoYW5n ZS9zaGFyZSBkYXRhIGJldHdlZW4gYmFyZWJveCBhbmQgTGludXggdXNlcnNwYWNlIHVzaW5nCitz b21lIGtpbmQgb2YgcGVyc2lzdGVudCBtZW1vcnkuCisKK0FscmVhZHkga25vd24gdXNlcnMgb2Yg dGhlICpzdGF0ZSogaW5mb3JtYXRpb24gYXJlIHRoZSA6cmVmOmBib290Y2hvb3NlcmAgYW5kCitS QVVDXy4KKworLi4gX1JBVUM6IGh0dHBzOi8vcmF1Yy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3Qv CisKK2JhcmVib3ggaXRzZWxmIHVzZXMgYSAqc3RhdGUqIGRyaXZlciB0byBhY2Nlc3MgdGhlIHZh cmlhYmxlcyBpbiB0aGUKK3BlcnNpc3RlbnQgbWVtb3J5LiBGb3IgdGhlIExpbnV4IHJ1bi10aW1l IHRoZXJlIGlzIGEgdXNlcnNwYWNlIHRvb2xfIHRvIGRvCit0aGUgc2FtZS4KKworLi4gX3Rvb2w6 IGh0dHBzOi8vZ2l0LnBlbmd1dHJvbml4LmRlL2NnaXQvdG9vbHMvZHQtdXRpbHMvCisKK1RvIGRl ZmluZSBhICpzdGF0ZSogdmFyaWFibGUgc2V0LCBhIGRldmljZXRyZWUgYmFzZWQgZGVzY3JpcHRp b24gaXMgdXNlZC4gUmVmZXIgdG8KKzpyZWY6YGJhcmVib3gsc3RhdGVgIGZvciBmdXJ0aGVyIGRl dGFpbHMuCisKK1RoZXJlIGFyZSBzZXZlcmFsIHNvZnR3YXJlIGNvbXBvbmVudHMgaW52b2x2ZWQs IHdoaWNoIGFyZSBkZXNjcmliZWQgaW4gdGhpcworc2VjdGlvbi4KKworLi4gX3N0YXRlX2ZyYW1l d29yayxiYWNrZW5kczoKKworQmFja2VuZHMgKGUuZy4gU3VwcG9ydGVkIE1lbW9yeSBUeXBlcykK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NvbWUgbm9uLXZvbGF0 aWxlIG1lbW9yeSBpcyBuZWVkIGZvciBzdG9yaW5nIGEgKnN0YXRlKiB2YXJpYWJsZSBzZXQ6CisK Ky0gYWxsIGtpbmRzIG9mIE5PUiBmbGFzaCBtZW1vcmllcworLSBhbGwga2luZHMgb2YgTkFORCBm bGFzaCBtZW1vcmllcworLSBNUkFNCistIEVFUFJPTQorLSBhbGwga2luZCBvZiBTUkFNcyAoYmFj a3VwIGJhdHRlcnkgYXNzdW1lZCkKKworRm9yIGNsYXNzaWMgTVREcyAoTk9SL05BTkQvU1JBTSks IGEgcGFydGl0aW9uIGlzIHJlcXVpcmVkIGFuZCB1bmRlcnN0b29kIGJ5Cit0aGUgTGludXgga2Vy bmVsIGFzIHdlbGwgdG8gZGVmaW5lIHRoZSBsb2NhdGlvbiBpbnNpZGUgdGhlIGRldmljZSB3aGVy ZSB0byBzdG9yZQordGhlICpzdGF0ZSogdmFyaWFibGUgc2V0LiBGb3Igbm9uLU1URHMgKE1SQU0v RUVQUk9NKSBhIGRpZmZlcmVudCBhcHByb2FjaCBpcworcmVxdWlyZWQgdG8gZGVmaW5lIHRoZSBs b2NhdGlvbiB3aGVyZSB0byBzdG9yZSB0aGUgKnN0YXRlKiB2YXJpYWJsZSBzZXQuCisKKy4uIF9z dGF0ZV9mcmFtZXdvcmssYmFja2VuZF90eXBlczoKKworQmFja2VuZC1UeXBlcyAoZS5nLiAqc3Rh dGUqIHN0b3JhZ2UgZm9ybWF0KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorCitUaGUgKnN0YXRlKiB2YXJpYWJsZSBzZXQgaXRzZWxmIGNhbiBiZSBzdG9yZWQg aW4gZGlmZmVyZW50IHdheXMuIEN1cnJlbnRseSB0d28KK2Zvcm1hdHMgYXJlIGF2YWlsYWJsZSwg YGByYXdgYCBhbmQgYGBkdGJgYC4KKworQm90aCBzZXJpYWxpemUgdGhlICpzdGF0ZSogdmFyaWFi bGUgc2V0IGRpZmZlcmVudGx5LgorCisuLiBub3RlOjogVGhlIGBgcmF3YGAgc2VyaWFsaXplciBh ZGRpdGlvbmFsbHkgc3VwcG9ydHMgYW4gSE1BQyBhbGdvcml0aG0gdG8KKyAgIGRldGVjdCBtYW5p cHVsYXRpb25zLiBSZWZlciB0byA6cmVmOmBITUFDIDxiYXJlYm94LHN0YXRlX2htYWM+YCBmb3Ig ZnVydGhlcgorICAgZGV0YWlscy4KKworLi4gX3N0YXRlX2ZyYW1ld29yayxyYXc6CisKK1RoZSBg YHJhd2BgICpzdGF0ZSogc3RvcmFnZSBmb3JtYXQKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworYGByYXdgYCBtZWFucyB0aGUgKnN0YXRlKiB2YXJpYWJsZSBzZXQgaXMgYSBz aW1wbGUgYmluYXJ5IGRhdGEgYmxvYiBvbmx5LiBJbgorb3JkZXIgdG8gaGFuZGxlIGl0LCB0aGUg KnN0YXRlKiBmcmFtZXdvcmsgcHV0cyBhIG1hbmFnZW1lbnQgaGVhZGVyIGluIGZyb250IG9mCit0 aGUgYmluYXJ5IGRhdGEgYmxvYiB3aXRoIHRoZSBmb2xsb3dpbmcgY29udGVudCBhbmQgbGF5b3V0 OgorCisgKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKworIHwgT2Zmc2V0ICB8ICAgU2l6ZSAgfCAgICBDb250ZW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyArLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCisgfCAgMHgwMCAgIHwgNCBieXRlcyB8ICdtYWdpYyB2YWx1ZScgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAorICstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyB8ICAweDA0ICAgfCAy IGJ5dGVzIHwgcmVzZXJ2ZWQsIGZpbGxlZCB3aXRoIHplcm8gYml0cyAgICAgICAgICAgICAgICAg ICB8CisgKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKworIHwgIDB4MDYgICB8IDIgYnl0ZXMgfCBieXRlIGNvdW50 IG9mIGJpbmFyeSBkYXRhIGJsb2IgICAgICAgICAgICAgICAgICAgIHwKKyArLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCisgfCAgMHgwOCAgIHwgNCBieXRlcyB8IENSQzMyIG9mIGJpbmFyeSBkYXRhIGJsb2IgKG9m ZnNldCAweDEwLi4uKSAgICAgICAgfAorICstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyB8ICAweDBjICAgfCA0 IGJ5dGVzIHwgQ1JDMzIgb2YgaGVhZGVyIChvZmZzZXQgMHgwMC4uLjB4MGIpICAgICAgICAgICAg ICB8CisgKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKworIHwgMHgxMC4uLiB8ICAgICAgICAgfCBiaW5hcnkgZGF0 YSBibG9iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyArLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCisKKy0gJ21hZ2ljIHZhbHVlJyBpcyBhbiB1bnNpZ25lZCB2YWx1ZSB3aXRoIG5hdGl2ZSBl bmRpYW5uZXNzLCByZWZlciB0bworICA6cmVmOmAnbWFnaWMnIHByb3BlcnR5IDxiYXJlYm94LHN0 YXRlX21hZ2ljPmAgYWJvdXQgaXRzIHZhbHVlLgorLSAnYnl0ZSBjb3VudCcgaXMgYW4gdW5zaWdu ZWQgdmFsdWUgd2l0aCBuYXRpdmUgZW5kaWFubmVzcworLSAnYmluYXJ5IGRhdGEgYmxvYiBDUkMz MicgaXMgYW4gdW5zaWduZWQgdmFsdWUgd2l0aCBuYXRpdmUgZW5kaWFubmVzcworLSAnaGVhZGVy IENSQzMyJyBpcyBhbiB1bnNpZ25lZCB2YWx1ZSB3aXRoIG5hdGl2ZSBlbmRpYW5uZXNzCisKKy4u IG5vdGU6OiB0aGUgMzItYml0IENSQyBjYWxjdWxhdGlvbiB1c2VzIHRoZSBwb2x5bm9taWFsOgor CisgIHheMzIreF4yNit4XjIzK3heMjIreF4xNit4XjEyK3heMTEreF4xMCt4XjgreF43K3heNSt4 XjQreF4yK3grMQorCitTaW5jZSB0aGUgYmluYXJ5IGRhdGEgYmxvYiBoYXMgbm8gYnVpbHQtaW4g ZGVzY3JpcHRpb24gb2YgdGhlIGVtYmVkZGVkICpzdGF0ZSoKK3ZhcmlhYmxlIHNldCwgaXQgZGVw ZW5kcyBvbiBhbiBleHRlcm5hbCBsYXlvdXQgZGVmaW5pdGlvbiB0byBlbmNvZGUKK2FuZCBkZWNv ZGUgaXQgY29ycmVjdGx5LiBBIGRldmljZXRyZWUgYmFzZWQgZGVzY3JpcHRpb24gaXMgdXNlZCB0 byBkZXNjcmliZSB0aGUKK2VtYmVkZGVkICpzdGF0ZSogdmFyaWFibGUgc2V0LiBSZWZlciB0bwor OnJlZjpgVmFyaWFibGUgU3Vibm9kZXMgPGJhcmVib3gsc3RhdGVfdmFyaWFibGU+YCBmb3IgZnVy dGhlciBkZXRhaWxzLgorCisuLiBpbXBvcnRhbnQ6OiBJdCBpcyBpbXBvcnRhbnQgdG8gc2hhcmUg dGhpcyBsYXlvdXQgZGVmaW5pdGlvbiBpbiBhbGwKKyAgICd3b3JsZHMnIHdoaWNoIHdhbnQgdG8g cmVhZCBvciBtYW5pcHVsYXRlIHRoZSAqc3RhdGUqIHZhcmlhYmxlIHNldC4gVGhpcworICAgaW5j bHVkZXMgb2Zmc2V0cywgc2l6ZXMgYW5kIGVuZGlhbmVzc2VzIG9mIHRoZSBiaW5hcnkgZGF0YS4g UmVmZXIgdG8KKyAgIDpyZWY6YENvbmZpZ3VyaW5nIHRoZSBzdGF0ZSB2YXJpYWJsZSBzZXQgPGJh cmVib3gsc3RhdGVfc2V0dXA+YCBvbiBob3cgdG8KKyAgIHNldHVwIGJhcmVib3ggdG8gZW5zdXJl IHRoaXMgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IGZvciBkZXZpY2V0cmVlIGJhc2VkCisgICBvcGVy YXRpbmcgc3lzdGVtcy4KKworLi4gbm90ZTo6IFdoZW4gY2FsY3VsYXRpbmcgdGhlIGBgYmFja2Vu ZC1zdHJpZGVzaXplYGAgdGFrZSB0aGUgaGVhZGVyIG92ZXJoZWFkCisgICBpbnRvIGFjY291bnQu IFRoZSBoZWFkZXIgb3ZlcmhlYWQgaXMgYWx3YXlzIDE2IGJ5dGVzLgorCisuLiBfc3RhdGVfZnJh bWV3b3JrLGR0YjoKKworVGhlIGBgZHRiYGAgKnN0YXRlKiBzdG9yYWdlIGZvcm1hdAorIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisuLiBub3RlOjogVGhlIGBgZHRiYGAgYmFj a2VuZCB0eXBlIGlzbid0IHdlbGwgdGVzdGVkLiBVc2UgdGhlIGBgcmF3YGAgYmFja2VuZAorICAg ICAgICAgIHdoZW4gaW4gZG91YnQuCisKK1RoZSBgYGR0YmBgIGJhY2tlbmQgdHlwZSBzdG9yZXMg dGhlICpzdGF0ZSogdmFyaWFibGUgc2V0IGFzIGEgZGV2aWNldHJlZSBiaW5hcnkKK2Jsb2IuIFRo aXMgaXMgZXhhY3RseSB0aGUgb3JpZ2luYWwgZGV2aWNldHJlZSBkZXNjcmlwdGlvbiBvZiB0aGUg KnN0YXRlKiB2YXJpYWJsZQorc2V0IGl0c2VsZiwgYnV0IGFkZGl0aW9uYWxseSBjb250YWlucyB0 aGUgYWN0dWFsIHZhbHVlcyBvZiB0aGUgdmFyaWFibGUgc2V0LgorVW5saWtlIHRoZSBgYHJhd2Bg ICpzdGF0ZSogYmFja2VuZCB0aGUgYGBkdGJgYCAqc3RhdGUqIGJhY2tlbmQgY2FuIGRlc2NyaWJl IGl0c2VsZi4KKworLi4gX3N0YXRlX2ZyYW1ld29yayxiYWNrZW5kX3N0b3JhZ2VfdHlwZToKKwor QmFja2VuZCBTdG9yYWdlIFR5cGVzIChlLmcuIG1lZGlhIHN0b3JhZ2UgbGF5b3V0KQorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc2VyaWFs aXplZCBkYXRhIChgYHJhd2BgIG9yIGBgZHRiYGApIGNhbiBiZSBzdG9yZWQgdG8gZGlmZmVyZW50 IGJhY2tlbmQKK3N0b3JhZ2UgdHlwZXMuIFRoZXNlIHR5cGVzIGFyZSBkZWRpY2F0ZWQgdG8gZGlm ZmVyZW50IG1lbW9yeSB0eXBlcy4KKworQ3VycmVudGx5IHR3byBiYWNrZW5kIHN0b3JhZ2UgdHlw ZSBpbXBsZW1lbnRhdGlvbnMgZG8gZXhpc3QsIGBgY2lyY3VsYXJgYCBhbmQKK2BgZGlyZWN0YGAu CisKK1RoZSBzdGF0ZSBmcmFtZXdvcmsgY2FuIHNlbGVjdCB0aGUgY29ycmVjdCBiYWNrZW5kIHN0 b3JhZ2UgdHlwZSBkZXBlbmRpbmcgb24gdGhlCitiYWNrZW5kIG1lZGl1bS4gTWVkaWEgcmVxdWly aW5nIGVyYXNlIG9wZXJhdGlvbnMgKE5BTkQsIE5PUiBmbGFzaCkgZGVmYXVsdHMgdG8KK3RoZSBg YGNpcmN1bGFyYGAgYmFja2VuZCBzdG9yYWdlIHR5cGUgYXV0b21hdGljYWxseS4gSW4gY29udHJh c3QgRUVQUk9NcyBhbmQKK1JBTXMgYXJlIGNhbmRpZGF0ZXMgZm9yIHRoZSBgYGRpcmVjdGBgIGJh Y2tlbmQgc3RvcmFnZSB0eXBlLgorCitEaXJlY3QgU3RvcmFnZSBCYWNrZW5kCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKK1RoaXMga2luZCBvZiBiYWNrZW5kIHN0b3JhZ2UgdHlwZSBpcyBpbnRl bmRlZCB0byBiZSB1c2VkIHdpdGggcGVyc2lzdGVudCBSQU1zIG9yCitFRVBST01zLgorVGhlc2Ug bWVkaWEgYXJlIGNoYXJhY3Rlcml6ZWQgYnk6CisKKy0gbWVtb3J5IGNlbGxzIGNhbiBiZSBzaW1w bHkgd3JpdHRlbiBhdCBhbnkgdGltZSAobm8gcHJldmlvdXMgZXJhc2UgcmVxdWlyZWQpCistIG1l bW9yeSBjZWxscyBjYW4gYmUgd3JpdHRlbiBhcyBvZnRlbiBhcyByZXF1aXJlZCAodW5saW10ZWQg b3IgdmVyeSBoaWdoIGVuZHVyYW5jZSkKKy0gY2FuIGJlIHdyaXR0ZW4gb24gYSBieXRlLWJ5LWJ5 dGUgbWFubmVyCisKK0V4YW1wbGU6IE1SQU0gd2l0aCA2NCBieXRlcyBhdCBkZXZpY2UncyBvZmZz ZXQgMDoKKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgIDAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4M2YKKyAgICAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsKKyAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworV3JpdGlu ZyB0aGUgKnN0YXRlKiB2YXJpYWJsZSBzZXQgYWx3YXlzIGhhcHBlbnMgYXQgdGhlIHNhbWUgb2Zm c2V0OgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisgICAgMCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzZgorICAgICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKworICAgIHwgICAgICAgICAgICAgICAgIGNvcHkgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisuLiBpbXBv cnRhbnQ6OiBUaGUgYGBkaXJlY3RgYCBzdG9yYWdlIGJhY2tlbmQgbmVlZHMgOCBieXRlcyBvZiBh ZGRpdGlvbmFsIHNwYWNlCisgICBwZXIgKnN0YXRlKiB2YXJpYWJsZSBzZXQgZm9yIGl0cyBtZXRh IGRhdGEuCisKK0NpcmN1bGFyIFN0b3JhZ2UgQmFja2VuZAorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKK1RoaXMga2luZCBvZiBiYWNrZW5kIHN0b3JhZ2UgdHlwZSBpcyBpbnRlbmRlZCB0byBi ZSB1c2VkIHdpdGggcmVndWxhciBmbGFzaCBtZW1vcnkgZGV2aWNlcy4KKworRmxhc2ggbWVtb3Jp ZXMgYXJlIGNoYXJhY3Rlcml6ZWQgYnk6CisKKy0gb25seSBlcmFzZWQgbWVtb3J5IGNlbGxzIGNh biBiZSB3cml0dGVuIHdpdGggbmV3IGRhdGEKKy0gd3JpdHRlbiBkYXRhIGNhbm5vdCBiZSB3cml0 dGVuIHR3aWNlIChhdCBsZWFzdCBub3QgZm9yIG1vZGVybiBmbGFzaCBkZXZpY2VzKQorLSBlcmFz ZSBjYW4gaGFwcGVuIG9uIGVyYXNlYmxvY2sgc2l6ZXMgb25seSAoZGV0ZWN0YWJsZSwgcGh5c2lj YWwgdmFsdWUpCistIGFuIGVyYXNlYmxvY2sgb25seSBzdXBwb3J0cyBhIGxpbWl0ZWQgbnVtYmVy IG9mIHdyaXRlLWVyYXNlLWN5Y2xlcyAoYXMgbG93IGFzIGEgZmV3IHRob3VzYW5kIGN5Y2xlcykK KworVGhlIHB1cnBvc2Ugb2YgdGhlIGBgY2lyY3VsYXJgYCBiYWNrZW5kIHN0b3JhZ2UgdHlwZSBp cyB0byBzYXZlIGVyYXNlIGN5Y2xlcword2hpY2ggbWF5IHdlYXIgb3V0IHRoZSBmbGFzaCdzIGVy YXNlYmxvY2tzLiBUaGlzIHR5cGUgaW5zdGVhZCBpbmNyZW1lbnRhbGx5IGZpbGxzCithbiBlcmFz ZWJsb2NrIHdpdGggdXBkYXRlZCBkYXRhIGFuZCBvbmx5IHdoZW4gYW4gZXJhc2VibG9jaworaXMg ZnVsbHkgd3JpdHRlbiwgaXQgZXJhc2VzIGl0IGFuZCBzdGFydHMgb3ZlciB3cml0aW5nIG5ldyBk YXRhIHRvIHRoZSBzYW1lCitlcmFzZWJsb2NrIGFnYWluLgorCisqKk5PUiB0eXBlIGZsYXNoIG1l bW9yeSBpcyBhZGRpdGlvbmFsbHkgY2hhcmFjdGVyaXplZCBieSoqCisKKy0gY2FuIGJlIHdyaXR0 ZW4gb24gYSBieXRlLWJ5LWJ5dGUgbWFubmVyCisKKy4uIF9zdGF0ZV9mcmFtZXdvcmssbm9yOgor CitFeGFtcGxlOiBOT1IgdHlwZSBmbGFzaCBtZW1vcnkgd2l0aCA2NCBraUIgZXJhc2VibG9jayBz aXplCisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICAwICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MGZmZmYKKyAgICAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rCisgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICB8 PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBlcmFzZWJsb2NrIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLT58CisKK1dyaXRpbmcgdGhlICpzdGF0ZSogdmFyaWFibGUgc2V0IHRoZSB2ZXJ5 IGZpcnN0IHRpbWU6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICAwCisgICAgKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICB8ICAgY29weSAgICAgfAorICAgIHwgICAgIzEgICAg ICB8CisgICAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICB8PC0gc3RyaWRlIC0+fAor ICAgIHw8LS0tLSBlcmFzZWJsb2NrIC0tLS0tLS0KKworJ2NvcHkjMScgd2lsbCBiZSB1c2VkLgor CitDaGFuZ2luZyB0aGUgKnN0YXRlKiB2YXJpYWJsZSBzZXQgdGhlIGZpcnN0IHRpbWUgKGUuZy4g d3JpdGluZyBpdCB0aGUgc2Vjb25kIHRpbWUpOgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisg ICAgMAorICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgIHwg ICBjb3B5ICAgICB8ICAgY29weSAgICAgfAorICAgIHwgICAgIzEgICAgICB8ICAgICMyICAgICAg fAorICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgIHw8LSBz dHJpZGUgLT58PC0gc3RyaWRlIC0+fAorICAgIHw8LS0tLS0tLS0tLS0tLSBlcmFzZWJsb2NrIC0t LS0tLS0tLS0tCisKKydjb3B5IzInIHdpbGwgbm93IGJlIHVzZWQgYW5kICdjb3B5IzEnIHdpbGwg YmUgaWdub3JlZC4KKworQ2hhbmdpbmcgdGhlICpzdGF0ZSogdmFyaWFibGUgc2V0IHRoZSBuLXRo IHRpbWU6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICAwICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MGZmZmYKKyAg ICArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSAtLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rCisgICAgfCAgIGNvcHkgICAgIHwgICBjb3B5ICAgICB8ICAgICAgICAg ICAgICAgIHwgICAgY29weSAgICB8ICAgY29weSAgICAgfAorICAgIHwgICAgIzEgICAgICB8ICAg ICMyICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICNuLTEgICAgfCAgICAjbiAgICAgIHwKKyAg ICArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSAtLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rCisgICAgfDwtIHN0cmlkZSAtPnw8LSBzdHJpZGUgLT58ICAgICAgICAg ICAgICAgIHw8LSBzdHJpZGUgLT58PC0gc3RyaWRlIC0+fAorICAgIHw8LS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBlcmFzZWJsb2NrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPnwKKwor J2NvcHkjbicgd2lsbCBub3cgYmUgdXNlZCBhbmQgYWxsIG90aGVyIGNvcGllcyB3aWxsIGJlIGln bm9yZWQuCisKK1RoZSBuZXh0IHRpbWUgdGhlICpzdGF0ZSogdmFyaWFibGUgc2V0IGNoYW5nZXMg YWdhaW4sIHRoZSB3aG9sZSBibG9jayB3aWxsIGJlCitlcmFzZWQgYW5kIHRoZSAqc3RhdGUqIHZh cmlhYmxlIHNldCBnZXRzIHN0b3JlZCBhdCB0aGUgZmlyc3QgcG9zaXRpb24gaW5zaWRlCit0aGUg ZXJhc2VibG9jayBhZ2Fpbi4gVGhpcyByZWR1Y2VzIHRoZSBuZWVkIGZvciBhIGZsYXNoIG1lbW9y eSBlcmFzZSBieSBmYWN0b3JzLgorCisqKk5BTkQgdHlwZSBmbGFzaCBtZW1vcnkgaXMgYWRkaXRp b25hbGx5IGNoYXJhY3Rlcml6ZWQgYnkqKgorCistIG9yZ2FuaXplZCBpbiBwYWdlcyAoc2l6ZSBp cyBhIGRldGVjdGFibGUsIHBoeXNpY2FsIHZhbHVlKQorLSB3cml0ZXMgY2FuIG9ubHkgaGFwcGVu IGluIG11bHRpcGxlcyBvZiB0aGUgcGFnZSBzaXplICh3aGljaCBtdWNoIGxlc3MgdGhhbiB0aGUg ZXJhc2VibG9jayBzaXplKQorLSBwYXJ0aWFsbHkgd3JpdGluZyBhIHBhZ2UgY2FuIGJlIGxpbWl0 ZWQgaW4gY291bnQgb3IgYmUgZW50aXJlbHkgZm9yYmlkZGVuIChpbgorICB0aGUgY2FzZSBvZiAq TUxDKiBOQU5EcykKKworRXhhbXBsZTogTkFORCB0eXBlIGZsYXNoIG1lbW9yeSB3aXRoIDEyOCBr aUIgZXJhc2VibG9jayBzaXplIGFuZCAyIGtpQiBwYWdlCitzaXplIGFuZCBhIDIga2lCIHdyaXRl IHNpemUKKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgIDAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDAwMAorICAgICst LS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLSAtLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0t Ky0tLS0tLSsKKyAgICB8IHBhZ2UgfCBwYWdlIHwgcGFnZSB8IHBhZ2UgfCAgICAgICAgIHwgcGFn ZSB8IHBhZ2UgfCBwYWdlIHwgcGFnZSB8CisgICAgfCAgIzEgIHwgICMyICB8ICAjMyAgfCAgIzQg IHwgICAgICAgICB8ICM2MSAgfCAjNjIgIHwgIzYzICB8ICM2NCAgfAorICAgICstLS0tLS0rLS0t LS0tKy0tLS0tLSstLS0tLS0rLS0tLSAtLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLSsK KyAgICB8PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGVyYXNlYmxvY2sgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLT58CisKK1dyaXRpbmcgdGhlICpzdGF0ZSogdmFyaWFibGUgc2V0IHRoZSB2 ZXJ5IGZpcnN0IHRpbWU6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICB8PC0tLSBwYWdl ICMxLS0tLT58CisgICAgKy0tLS0tLS0rLS0tLS0tLS0tKy0tCisgICAgfCBjb3B5ICB8ICAgICAg ICAgfAorICAgIHwgICMxICAgfCAgICAgICAgIHwKKyAgICArLS0tLS0tLSstLS0tLS0tLS0rLS0K KyAgICB8PC0tLS0gZXJhc2VibG9jayAtLS0KKworJ2NvcHkjMScgd2lsbCBiZSB1c2VkLgorCitD aGFuZ2luZyB0aGUgKnN0YXRlKiB2YXJpYWJsZSBzZXQgdGhlIGZpcnN0IHRpbWUgKGUuZy4gd3Jp dGluZyBpdCB0aGUgc2Vjb25kIHRpbWUpOgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisgICAg fDwtLSBwYWdlICMxIC0tPnw8LS0gcGFnZSAjMiAtLT58CisgICAgKy0tLS0tLS0rLS0tLS0tLSst LS0tLS0tKy0tLS0tLS0rLS0tLQorICAgIHwgY29weSAgfCAgICAgICB8IGNvcHkgIHwgICAgICAg fAorICAgIHwgICMxICAgfCAgICAgICB8ICAjMiAgIHwgICAgICAgfAorICAgICstLS0tLS0tKy0t LS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0KKyAgICB8PC0tLS0tLS0tLSBlcmFzZWJsb2NrIC0t LS0tLS0tLS0tLS0tCisKKydjb3B5IzInIHdpbGwgbm93IGJlIHVzZWQgYW5kICdjb3B5IzEnIHdp bGwgYmUgaWdub3JlZC4KKworQ2hhbmdpbmcgdGhlICpzdGF0ZSogdmFyaWFibGUgc2V0IHRoZSA2 NHRoIHRpbWU6CisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAgICB8PC0tIHBhZ2UgIzEgLS0+ fDwtLSBwYWdlICMyIC0tPnwgICAgICAgIHw8LSBwYWdlICM2MyAtLT58PC0gcGFnZSAjNjQgLS0+ fAorICAgICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tICAgIC0tKy0tLS0tLS0r LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rCisgICAgfCBjb3B5ICB8ICAgICAgIHwgY29weSAgfCAg ICAgICB8ICAgICAgICB8IGNvcHkgIHwgICAgICAgfCBjb3B5ICB8ICAgICAgIHwKKyAgICB8ICAj MSAgIHwgICAgICAgfCAgIzIgICB8ICAgICAgIHwgICAgICAgIHwgICM2MyAgfCAgICAgICB8ICAj NjQgIHwgICAgICAgfAorICAgICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tICAg IC0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rCisgICAgfDwtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSBlcmFzZWJsb2NrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t PnwKKworJ2NvcHkjbicgd2lsbCBub3cgYmUgdXNlZCBhbmQgYWxsIG90aGVyIGNvcGllcyB3aWxs IGJlIGlnbm9yZWQuCisKK1RoZSBuZXh0IHRpbWUgdGhlICpzdGF0ZSogdmFyaWFibGUgc2V0IGNo YW5nZXMgYWdhaW4sIHRoZSBlcmFzZWJsb2NrIHdpbGwgYmUKK2VyYXNlZCBhbmQgdGhlICpzdGF0 ZSogdmFyaWFibGUgc2V0IGdldHMgc3RvcmVkIGF0IHRoZSBmaXJzdCBwb3NpdGlvbiBpbnNpZGUK K3RoZSBlcmFzZWJsb2NrIGFnYWluLiBUaGlzIHNpZ25pZmljYW50bHkgcmVkdWNlcyB0aGUgbmVl ZCBmb3IgYSBibG9jayBlcmFzZXMuCisKKy4uIGltcG9ydGFudDo6IE9uZSBjb3B5IG9mIHRoZSAq c3RhdGUqIHZhcmlhYmxlIHNldCBpcyBsaW1pdGVkIHRvIHRoZSBwYWdlIHNpemUKKyAgIG9mIHRo ZSB1c2VkIGJhY2tlbmQgKGUuZy4gTkFORCB0eXBlIGZsYXNoIG1lbW9yeSkKKworUmVkdW5kYW50 ICpzdGF0ZSogdmFyaWFibGUgc2V0IGNvcGllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorCitUbyBhdm9pZCBkYXRhIGxvc3Mgd2hlbiBjaGFuZ2luZyB0aGUgKnN0YXRl KiB2YXJpYWJsZSBzZXQsIG1vcmUgdGhhbiBvbmUKKypzdGF0ZSogdmFyaWFibGUgc2V0IGNvcHkg Y2FuIGJlIHN0b3JlZCBpbnRvIHRoZSBiYWNrZW5kLiBXaGVuZXZlciB0aGUgKnN0YXRlKgordmFy aWFibGUgc2V0IGNoYW5nZXMsIG9ubHkgb25lICpzdGF0ZSogdmFyaWFibGUgc2V0IGNvcHkgZ2V0 cyBjaGFuZ2VkIGF0IGEgdGltZS4KK0luIHRoZSBjYXNlIG9mIGFuIGludGVycnVwdGlvbiBhbmQv b3IgcG93ZXIgbG9zcyByZXN1bHRpbmcgaW50byBhbiBpbmNvbXBsZXRlCit3cml0ZSB0byB0aGUg YmFja2VuZCwgdGhlIHN5c3RlbSBjYW4gZmFsbCBiYWNrIHRvIGEgZGlmZmVyZW50ICpzdGF0ZSog dmFyaWFibGUKK3NldCBjb3B5IChwcmV2aW91cyAqc3RhdGUqIHZhcmlhYmxlIHNldCkuCisKK0Rp cmVjdCBTdG9yYWdlIEJhY2tlbmQgUmVkdW5kYW5jeQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKK0ZvciB0aGlzIGtpbmQgb2YgYmFja2VuZCBzdG9yYWdlIHR5cGUgYSB2YWx1 ZSBmb3IgdGhlIHN0cmlkZSBzaXplIG11c3QgYmUKK2RlZmluZWQgYnkgdGhlIGRldmVsb3BlciAo cmVmZXIgdG8KKzpyZWY6YGJhY2tlbmQtc3RyaWRlc2l6ZSA8YmFyZWJveCxzdGF0ZV9iYWNrZW5k X3N0cmlkZXNpemU+YCkuCisKK0l0IGFsd2F5cyBzdG9yZXMgKip0aHJlZSoqIHJlZHVuZGFudCBj b3BpZXMgb2YgdGhlIGJhY2tlbmQtdHlwZS4gS2VlcCB0aGlzIGluCittaW5kIHdoZW4gY2FsY3Vs YXRpbmcgdGhlIHN0cmlkZSBzaXplIGFuZCBkZWZpbmluZyB0aGUgYmFja2VuZCBzaXplIChlLmcu IHRoZQorc2l6ZSBvZiBhIHBhcnRpdGlvbikuCisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKyAg ICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0rCisgICAgfCByZWR1bmRhbnQgY29weSB8IGZyZWUgfCByZWR1bmRh bnQgY29weSB8IGZyZWUgfCByZWR1bmRhbnQgY29weSB8IGZyZWUgfAorICAgICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLSsKKyAgICB8PC0tLS0gc3RyaWRlIHNpemUgLS0tLT58PC0tLS0gc3RyaWRlIHNpemUgLS0t LT58PC0tLS0gc3RyaWRlIHNpemUgLS0tLT58CisKKy4uIGltcG9ydGFudDo6IFRoZSBgYGRpcmVj dGBgIHN0b3JhZ2UgYmFja2VuZCBuZWVkcyA4IGJ5dGVzIG9mIGFkZGl0aW9uYWwgc3BhY2UKKyAg IHBlciAqc3RhdGUqIHZhcmlhYmxlIHNldCBmb3IgaXRzIG1ldGEgZGF0YS4gS2VlcCB0aGlzIGlu IG1pbmQgd2hlbiBjYWxjdWxhdGluZworICAgdGhlIHN0cmlkZXNpemUuIEZvciBleGFtcGxlLCBp ZiB5b3VyIHZhcmlhYmxlIHNldCBuZWVkcyA4IGJ5dGVzLCB0aGUgYGByYXdgYAorICAgaGVhZGVy IG5lZWRzIDE2IGJ5dGVzIGFuZCB0aGUgYGBkaXJlY3RgYCBzdG9yYWdlIGJhY2tlbmQgYWRkaXRp b25hbGx5IDggYnl0ZXMuCisgICBUaGUgZnVsbCBzcGFjZSBmb3Igb25lICpzdGF0ZSogdmFyaWFi bGUgc2V0IGlzIG5vdyA4ICsgMTYgKyA4ID0gMzIgYnl0ZXMuCisKK0NpcmN1bGFyIFN0b3JhZ2Ug QmFja2VuZCBSZWR1bmRhbmN5CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CisqKk5PUiB0eXBlIGZsYXNoIG1lbW9yeSoqCisKK1JlZHVuZGFudCBjb3BpZXMgb2YgdGhlICpz dGF0ZSogdmFyaWFibGUgc2V0IGFyZSBzdG9yZWQgYmFzZWQgb24gdGhlIG1lbW9yeSdzCitlcmFz ZWJsb2NrcyBhbmQgdGhpcyBzaXplIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgYXQgcnVuLXRp bWUuCitJdCBuZWVkcyBhIHN0cmlkZSBzaXplIGFzIHdlbGwsIGJlY2F1c2UgYSBOT1IgdHlwZSBm bGFzaCBtZW1vcnkgY2FuIGJlIHdyaXR0ZW4KK29uIGEgYnl0ZS1ieS1ieXRlIG1hbm5lci4KK0lu IGNvbnRyYXN0IHRvIHRoZSBgYGRpcmVjdGBgIHN0b3JhZ2UgYmFja2VuZCByZWR1bmRhbmN5LCB0 aGUKK3N0cmlkZSBzaXplIGZvciB0aGUgYGBjaXJjdWxhcmBgIHN0b3JhZ2UgYmFja2VuZCByZWR1 bmRhbmN5IGRlZmluZXMgdGhlCitzaWRlLWJ5LXNpZGUgbG9jYXRpb24gb2YgdGhlICpzdGF0ZSog dmFyaWFibGUgc2V0IGNvcGllcy4KKworLi4gY29kZS1ibG9jazo6IHRleHQKKworICAgIHw8WD58 PFg+fC4uLgorICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLQorICAgIHxDIzF8QyMyfEMjM3xDIzR8QyM1fCAgICAg ICAgICAgIHxDIzF8QyMyfEMjM3xDIzR8QyM1fCAgICAgICAgICAgIHwKKyAgICArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0KKyAgICB8PC0tLS0tLS0tLSBlcmFzZWJsb2NrIC0tLS0tLS0tLT58PC0tLS0tLS0tLSBlcmFz ZWJsb2NrIC0tLS0tLS0tLT58PC0KKyAgICB8PC0tLS0tLS0gcmVkdW5kYW50IGFyZWEgLS0tLS0t LT58PC0tLS0tLS0gcmVkdW5kYW50IGFyZWEgLS0tLS0tLT58PC0KKworKjxYPiogZGVmaW5lcyB0 aGUgc3RyaWRlIHNpemUsICpDIzEqLCAqQyMyKiB0aGUgKnN0YXRlKiB2YXJpYWJsZSBzZXQgY29w aWVzLgorCitTaW5jZSB0aGVzZSBraW5kcyBvZiBNVEQgZGV2aWNlcyBhcmUgcGFydGl0aW9uZWQs IGl0cyBhIGdvb2QgcHJhY3RpY2UgdG8gYWx3YXlzCityZXNlcnZlIG11bHRpcGxlIGVyYXNlYmxv Y2tzIGZvciB0aGUgYmFyZWJveCdzICpzdGF0ZSogZmVhdHVyZS4gS2VlcCBpbiBtaW5kOgorRXZl biBOT1IgdHlwZSBmbGFzaCBtZW1vcmllcyBjYW4gYmUgd29ybiBvdXQuCisKKyoqTkFORCB0eXBl IGZsYXNoIG1lbW9yeSoqCisKK1JlZHVuZGFudCBjb3BpZXMgb2YgdGhlICpzdGF0ZSogdmFyaWFi bGUgc2V0IGFyZSBzdG9yZWQgYmFzZWQgb24gdGhlIG1lbW9yeSdzCitlcmFzZWJsb2NrcyBhbmQg dGhpcyBzaXplIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgYXQgcnVuLXRpbWUuCisKKy4uIGNv ZGUtYmxvY2s6OiB0ZXh0CisKKyAgICArLS0tLS0tKy0tLS0tLSstLS0gLS0tKy0tLS0tLSstLS0t LS0rLS0tLS0tKy0tLS0tLSstLS0gLS0tKy0tLS0tLSstLS0tLS0rLS0KKyAgICB8IGNvcHkgfCBj b3B5IHwgICAgICAgfCBjb3B5IHwgY29weSB8IGNvcHkgfCBjb3B5IHwgICAgICAgfCBjb3B5IHwg Y29weSB8CisgICAgfCAgIzEgIHwgICMyICB8ICAgICAgIHwgIzYzICB8ICM2NCAgfCAgIzEgIHwg ICMyICB8ICAgICAgIHwgIzYzICB8ICM2NCAgfAorICAgICstLS0tLS0rLS0tLS0tKy0tLSAtLS0r LS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLSAtLS0rLS0tLS0tKy0tLS0tLSstLQorICAg IHw8LS0tLS0tLS0tLS0gZXJhc2VibG9jayAtLS0tLS0tLS0tPnw8LS0tLS0tLS0tLS0gZXJhc2Vi bG9jayAtLS0tLS0tLS0tPnw8LQorICAgIHw8LS0tLS0tLS0gcmVkdW5kYW50IGFyZWEgLS0tLS0t LS0tPnw8LS0tLS0tLS0gcmVkdW5kYW50IGFyZWEgLS0tLS0tLS0tPnw8LQorCitTaW5jZSB0aGVz ZSBraW5kcyBvZiBNVEQgZGV2aWNlcyBhcmUgcGFydGl0aW9uZWQsIGl0cyBhIGdvb2QgcHJhY3Rp Y2UgdG8gYWx3YXlzCityZXNlcnZlIG11bHRpcGxlIGVyYXNlYmxvY2tzIGZvciB0aGUgYmFyZWJv eCdzICpzdGF0ZSogZmVhdHVyZS4gS2VlcCBpbiBtaW5kOgorTkFORCB0eXBlIGZsYXNoIG1lbW9y aWVzIGNhbiBiZSB3b3JuIG91dCwgZmFjdG9yeSBiYWQgYmxvY2tzIGNhbiBleGlzdCBmcm9tIHRo ZQorYmVnaW5uaW5nLgorCitIYW5kbGluZyBvZiBCYWQgQmxvY2tzCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisKK05BTkQgdHlwZSBmbGFzaCBtZW1vcnkgY2FuIGhhdmUgZmFjdG9yeSBiYWQgZXJh c2VibG9ja3MgYW5kIG1vcmUgYmFkCitlcmFzZWJsb2NrcyBjYW4gYXBwZWFyIG92ZXIgdGhlIGxp ZmUgdGltZSBvZiB0aGUgbWVtb3J5LiBUaGV5IGFyZSBkZXRlY3RlZCBieQordGhlIE1URCBsYXll ciwgbWFya2VkIGFzIGJhZCBhbmQgbmV2ZXIgdXNlZCBhZ2Fpbi4KKworLi4gaW1wb3J0YW50Ojog SWYgTkFORCB0eXBlIGZsYXNoIG1lbW9yeSBzaG91bGQgYmUgdXNlZCBhcyBhIGJhY2tlbmQsIGF0 IGxlYXN0CisgICB0aHJlZSBlcmFzZWJsb2NrcyBhcmUgdXNlZCB0byBrZWVwIHRocmVlIHJlZHVu ZGFudCBjb3BpZXMgb2YgdGhlICpzdGF0ZSoKKyAgIHZhcmlhYmxlIHNldC4gWW91IHNob3VsZCBh ZGQgc29tZSBzcGFyZSBlcmFzZWJsb2NrcyB0byB0aGUgYmFja2VuZAorICAgcGFydGl0aW9uIGJ5 IGluY3JlYXNpbmcgdGhlIHBhcnRpdGlvbidzIHNpemUgdG8gYSBzdWl0YWJsZSB2YWx1ZSB0byBo YW5kbGUKKyAgIGZhY3RvcnkgYmFkIGVyYXNlYmxvY2tzIGFuZCB3b3JuLW91dCBlcmFzZWJsb2Nr cy4KKworRXhhbXBsZXMKKy0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZXMgaW50ZW5k cyB0byBzaG93IGhvdyB0byBzZXR1cCBhbmQgaW50ZXJjb25uZWN0IGFsbAorcmVxdWlyZWQgY29t cG9uZW50cyBmb3IgdmFyaW91cyBub24tdm9sYXRpbGUgbWVtb3JpZXMuCisKK0FsbCBleGFtcGxl cyB1c2UganVzdCBvbmUgKnN0YXRlKiB2YXJpYWJsZSBvZiB0eXBlICp1aW50OCogbmFtZWQgYGB2 YXJpYWJsZWBgCit0byBrZWVwIHRoZW0gc2ltcGxlLiBGb3IgdGhlIGBgcmF3YGAgYmFja2VuZC10 eXBlIGl0IG1lYW5zIG9uZSAqc3RhdGUqCit2YXJpYWJsZSBzZXQgaGFzIGEgc2l6ZSBvZiAxNyBi eXRlcyAoMTYgYnl0ZXMgaGVhZGVyIHBsdXMgb25lIGJ5dGUgdmFyaWFibGVzKS4KKworLi4gbm90 ZTo6IFRoZSBtZW50aW9uZWQgYGBhbGlhc2VzYGAgYW5kIHRoZSAqc3RhdGUqIHZhcmlhYmxlIHNl dCBub2RlIGVudHJpZXMKKyAgIGFyZSBtZW1iZXJzIG9mIHRoZSBkZXZpY2V0cmVlJ3Mgcm9vdCBu b2RlLgorCisuLiBub3RlOjogRm9yIGEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUg dXNlZCAqc3RhdGUqIHZhcmlhYmxlIHNldAorICAgcHJvcGVydGllcyBoZXJlLCByZWZlciB0byA6 cmVmOmBiYXJlYm94LHN0YXRlYC4KKworTk9SIGZsYXNoIG1lbW9yaWVzCisjIyMjIyMjIyMjIyMj IyMjIyMKKworVGhpcyB0eXBlIG9mIG1lbW9yeSBjYW4gYmUgd3JpdHRlbiBvbiBhIHNpbmdsZSBi eXRlL3dvcmQgYmFzaXMgKGRlcGVuZGluZyBvbiBpdHMgYnVzCit3aWR0aCksIGJ1dCBtdXN0IGJl IGVyYXNlZCBwcmlvciB3cml0aW5nIHRoZSBzYW1lIGJ5dGUvd29yZCBhZ2FpbiBhbmQgZXJhc2lu ZworbXVzdCBoYXBwZW4gb24gYW4gZXJhc2VibG9jayBiYXNpcy4gVHlwaWNhbCBlcmFzZWJsb2Nr IHNpemVzIGFyZSAxMjgga2lCIG9yCisobXVjaCkgbGFyZ2VyIGZvciBwYXJhbGxlbCBOT1IgZmxh c2hlcyBhbmQgNCBraUIgb3IgbGFyZ2VyIGZvciBzZXJpYWwgTk9SCitmbGFzaGVzLgorCitGcm9t IHRoZSBMaW51eCBrZXJuZWwgcGVyc3BlY3RpdmUgdGhpcyB0eXBlIG9mIG1lbW9yeSBpcyBhICpN ZW1vcnkgVGVjaG5vbG9naWUKK0RldmljZSogKGFrYSAnTVREJykgYW5kIGhhbmRsZWQgYnkgYmFy ZWJveCBpbiB0aGUgc2FtZSBtYW5uZXIuIEl0IG5lZWRzIGEKK3BhcnRpdGlvbiBjb25maWd1cmF0 aW9uLgorCitUaGUgZm9sbG93aW5nIGRldmljZXRyZWUgbm9kZSBlbnRyeSBkZWZpbmVzIHNvbWUg a2luZCBvZiBOT1IgZmxhc2ggbWVtb3J5IGFuZAorYSBwYXJ0aXRpb24gYXQgYSBzcGVjaWZpYyBv ZmZzZXQgdG8gYmUgdXNlZCBhcyB0aGUgYmFja2VuZCBmb3IgdGhlCisqc3RhdGUqIHZhcmlhYmxl IHNldC4KKworLi4gY29kZS1ibG9jazo6IHRleHQKKworCW5vcmZsYXNoQDAgeworCQliYWNrZW5k X3N0YXRlX25vcjogcGFydGl0aW9uQDEyMDAwMCB7CisJCQlbLi4uXQorCQl9OworCX07CisKK1dp dGggdGhpcyAnYmFja2VuZCcgZGVmaW5pdGlvbiBpdHMgcG9zc2libGUgdG8gZGVmaW5lIHRoZSAq c3RhdGUqIHZhcmlhYmxlIHNldAorY29udGVudCwgaXRzIGJhY2tlbmQtdHlwZSBhbmQgKnN0YXRl KiB2YXJpYWJsZSBzZXQgbGF5b3V0LgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisJYWxpYXNl cyB7CisJCXN0YXRlID0gJnN0YXRlX25vcjsKKwl9OworCisJc3RhdGVfbm9yOiBub3Jfc3RhdGVf bWVtb3J5IHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+Owor CQljb21wYXRpYmxlID0gImJhcmVib3gsc3RhdGUiOworCQltYWdpYyA9IDwweDUxMjg5MGEwPjsK KwkJYmFja2VuZC10eXBlID0gInJhdyI7CisJCWJhY2tlbmQgPSA8JmJhY2tlbmRfc3RhdGVfbm9y PjsKKwkJYmFja2VuZC1zdG9yYWdlLXR5cGUgPSAiY2lyY3VsYXIiOworCQliYWNrZW5kLXN0cmlk ZXNpemUgPSA8MzI+OworCisJCXZhcmlhYmxlIHsKKwkJCXJlZyA9IDwweDAgMHgxPjsKKwkJCXR5 cGUgPSJ1aW50OCI7CisJCQlkZWZhdWx0ID0gPDB4MT47CisJCX07CisJfTsKKworTkFORCBmbGFz aCBtZW1vcmllcworIyMjIyMjIyMjIyMjIyMjIyMjIworCitUaGlzIHR5cGUgb2YgbWVtb3J5IGNh biBiZSB3cml0dGVuIG9uIGEgKnBhZ2UqIGJhc2UgKHR5cGljYWxseSA1MTIgYnl0ZXMsCisyMDQ4 IG9yIChtdWNoKSBsYXJnZXIpLCBidXQgbXVzdCBiZSBlcmFzZWQgcHJpb3Igd3JpdGluZyB0aGUg c2FtZSBwYWdlIGFnYWluIGFuZAorZXJhc2luZyBtdXN0IGhhcHBlbiBvbiBhbiBlcmFzZWJsb2Nr IGJhc2UuIFR5cGljYWwgZXJhc2VibG9jayBzaXplcyBhcmUKKzY0IGtpQiBvciAobXVjaCkgbGFy Z2VyLgorCitGcm9tIHRoZSBMaW51eCBrZXJuZWwgcGVyc3BlY3RpdmUgdGhpcyB0eXBlIG9mIG1l bW9yeSBpcyBhICpNZW1vcnkgVGVjaG5vbG9naWUKK0RldmljZSogKGFrYSAnTVREJykgYW5kIGhh bmRsZWQgYnkgYmFyZWJveCBpbiB0aGUgc2FtZSBtYW5uZXIuIEl0IG5lZWRzIGEKK3BhcnRpdGlv biBjb25maWd1cmF0aW9uLgorCitUaGUgZm9sbG93aW5nIGRldmljZXRyZWUgbm9kZSBlbnRyeSBk ZWZpbmVzIHNvbWUga2luZCBvZiBOQU5EIGZsYXNoIG1lbW9yeSBhbmQKK2EgcGFydGl0aW9uIGF0 IGEgc3BlY2lmaWMgb2Zmc2V0IGluc2lkZSBpdCB0byBiZSB1c2VkIGFzIHRoZSBiYWNrZW5kIGZv ciB0aGUKKypzdGF0ZSogdmFyaWFibGUgc2V0LgorCisuLiBjb2RlLWJsb2NrOjogdGV4dAorCisJ bmFuZGZsYXNoQDAgeworCQliYWNrZW5kX3N0YXRlX25hbmQ6IHBhcnRpdGlvbkA1MDAwMDAgewor CQkJWy4uLl0KKwkJfTsKKwl9OworCitXaXRoIHRoaXMgJ2JhY2tlbmQnIGRlZmluaXRpb24gaXRz IHBvc3NpYmxlIHRvIGRlZmluZSB0aGUgKnN0YXRlKiB2YXJpYWJsZSBzZXQKK2NvbnRlbnQsIGl0 cyBiYWNrZW5kLXR5cGUgYW5kICpzdGF0ZSogdmFyaWFibGUgbGF5b3V0LgorCisuLiBjb2RlLWJs b2NrOjogdGV4dAorCisJYWxpYXNlcyB7CisJCXN0YXRlID0gJnN0YXRlX25hbmQ7CisJfTsKKwor CXN0YXRlX25hbmQ6IG5hbmRfc3RhdGVfbWVtb3J5IHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47 CisJCSNzaXplLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gImJhcmVib3gsc3RhdGUiOwor CQltYWdpYyA9IDwweGFiNjc0MjFmPjsKKwkJYmFja2VuZC10eXBlID0gInJhdyI7CisJCWJhY2tl bmQgPSA8JmJhY2tlbmRfc3RhdGVfbmFuZD47CisJCWJhY2tlbmQtc3RvcmFnZS10eXBlID0gImNp cmN1bGFyIjsKKworCQl2YXJpYWJsZSB7CisJCQlyZWcgPSA8MHgwIDB4MT47CisJCQl0eXBlID0i dWludDgiOworCQkJZGVmYXVsdCA9IDwweDE+OworCQl9OworCX07CisKK1NSQU0KKyMjIyMKKwor VGhpcyB0eXBlIG9mIG1lbW9yeSBjYW4gYmUgd3JpdHRlbiBvbiBhIGJ5dGUgYmFzZSBhbmQgdGhl cmUgaXMgbm8gbmVlZCBmb3IgYW4KK2VyYXNlIHByaW9yIHdyaXRpbmcgYSBuZXcgdmFsdWUuCisK K0Zyb20gdGhlIExpbnV4IGtlcm5lbCBwZXJzcGVjdGl2ZSB0aGlzIHR5cGUgb2YgbWVtb3J5IGlz IGEgKk1lbW9yeSBUZWNobm9sb2dpZQorRGV2aWNlKiAoYWthICdNVEQnKSBhbmQgaGFuZGxlZCBi eSBiYXJlYm94IGluIHRoZSBzYW1lIG1hbm5lci4gSXQgbmVlZHMgYQorcGFydGl0aW9uIGRlZmlu aXRpb24uCisKK1RoZSBmb2xsb3dpbmcgZGV2aWNldHJlZSBub2RlIGVudHJ5IGRlZmluZXMgc29t ZSBraW5kIG9mIFNSQU0gbWVtb3J5IGFuZAorYSBwYXJ0aXRpb24gYXQgYSBzcGVjaWZpYyBvZmZz ZXQgaW5zaWRlIGl0IHRvIGJlIHVzZWQgYXMgdGhlIGJhY2tlbmQgZm9yIHRoZQorKnN0YXRlKiB2 YXJpYWJsZSBzZXQuCisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKwlzcmFtQDAgeworCQliYWNr ZW5kX3N0YXRlX3NyYW06IHBhcnRpdGlvbkAxMDAwMCB7CisJCQlbLi4uXQorCQl9OworCX07CisK K1dpdGggdGhpcyAnYmFja2VuZCcgZGVmaW5pdGlvbiBpdHMgcG9zc2libGUgdG8gZGVmaW5lIHRo ZSAqc3RhdGUqIHZhcmlhYmxlIHNldAorY29udGVudCwgaXRzIGJhY2tlbmQtdHlwZSBhbmQgKnN0 YXRlKiB2YXJpYWJsZSBsYXlvdXQuCisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKwlhbGlhc2Vz IHsKKwkJc3RhdGUgPSAmc3RhdGVfc3JhbTsKKwl9OworCisJc3RhdGVfc3JhbTogc3JhbV9zdGF0 ZV9tZW1vcnkgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47 CisJCWNvbXBhdGlibGUgPSAiYmFyZWJveCxzdGF0ZSI7CisJCW1hZ2ljID0gPDB4YWI2NzQyMWY+ OworCQliYWNrZW5kLXR5cGUgPSAicmF3IjsKKwkJYmFja2VuZCA9IDwmYmFja2VuZF9zdGF0ZV9z cmFtPjsKKwkJYmFja2VuZC1zdG9yYWdlLXR5cGUgPSAiZGlyZWN0IjsKKwkJYmFja2VuZC1zdHJp ZGVzaXplID0gPDMyPjsKKworCQl2YXJpYWJsZSB7CisJCQlyZWcgPSA8MHgwIDB4MT47CisJCQl0 eXBlID0idWludDgiOworCQkJZGVmYXVsdCA9IDwweDE+OworCQl9OworCX07CisKK0VFUFJPTQor IyMjIyMjCisKK1RoaXMgdHlwZSBvZiBtZW1vcnkgY2FuIGJlIHdyaXR0ZW4gb24gYSBieXRlIGJh c2UgYW5kIG11c3QgYmUgZXJhc2VkIHByaW9yCit3cml0aW5nLCBidXQgaW4gY29udHJhc3QgdG8g dGhlIG90aGVyIGZsYXNoIG1lbW9yaWVzLCBhbiBFRVBST00gZG9lcyB0aGUgZXJhc2UKK29mIHRo ZSBhZGRyZXNzIHRvIGJlIHdyaXR0ZW4gdG8gYnkgaXRzIG93biwgc28gaXRzIHRyYW5zcGFyZW50 IHRvIHRoZQorYXBwbGljYXRpb24uCisKK1doaWxlIGZyb20gdGhlIExpbnV4IGtlcm5lbCBwZXJz cGVjdGl2ZSB0aGlzIHR5cGUgb2YgbWVtb3J5IGRvZXMgbm90IHN1cHBvcnQKK3BhcnRpdGlvbnMs IGJhcmVib3ggYW5kIHRoZSAqc3RhdGUqIHVzZXJsYW5kIHRvb2wgd2lsbCB1c2UgcGFydGl0aW9u IGRlZmluaXRpb25zCitvbiBhbiBFRVBST00gbWVtb3J5IGFzIHdlbGwsIHRvIGV4YWN0bHkgZGVm aW5lIHRoZSBsb2NhdGlvbiBpbiBhIGdlbmVyaWMgbWFubmVyCit3aXRoaW4gdGhlIEVFUFJPTS4K KworLi4gY29kZS1ibG9jazo6IHRleHQKKworCWVlcHJvbUA1MCB7CisJCXBhcnRpdGlvbnMgewor CQkJY29tcGF0aWJsZSA9ICJmaXhlZC1wYXJ0aXRpb25zIjsKKwkJCSNzaXplLWNlbGxzID0gPDE+ OworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQliYWNrZW5kX3N0YXRlX2VlcHJvbTogZWVw cm9tX3N0YXRlX21lbW9yeUA0MDAgeworCQkJCXJlZyA9IDwweDQwMCAweDEwMD47CisJCQkJbGFi ZWwgPSAic3RhdGUtZWVwcm9tIjsKKwkJCX07CisJCX07CisJfTsKK307CisKK1dpdGggdGhpcyAn YmFja2VuZCcgZGVmaW5pdGlvbiBpdHMgcG9zc2libGUgdG8gZGVmaW5lIHRoZSAqc3RhdGUqIHZh cmlhYmxlIHNldAorY29udGVudCwgaXRzIGJhY2tlbmQtdHlwZSBhbmQgKnN0YXRlKiB2YXJpYWJs ZSBsYXlvdXQuCisKKy4uIGNvZGUtYmxvY2s6OiB0ZXh0CisKKwlhbGlhc2VzIHsKKwkJc3RhdGUg PSAmc3RhdGVfZWVwcm9tOworCX07CisKKwlzdGF0ZV9lZXByb206IGVlcHJvbV9tZW1vcnkgewor CQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbXBhdGli bGUgPSAiYmFyZWJveCxzdGF0ZSI7CisJCW1hZ2ljID0gPDB4MzQ0NjgyZGI+OworCQliYWNrZW5k LXR5cGUgPSAicmF3IjsKKwkJYmFja2VuZCA9IDwmYmFja2VuZF9zdGF0ZV9lZXByb20+OworCQli YWNrZW5kLXN0b3JhZ2UtdHlwZSA9ICJkaXJlY3QiOworCQliYWNrZW5kLXN0cmlkZXNpemUgPSA8 MzI+OworCisJCXZhcmlhYmxlIHsKKwkJCXJlZyA9IDwweDAgMHgxPjsKKwkJCXR5cGUgPSJ1aW50 OCI7CisJCQlkZWZhdWx0ID0gPDB4MT47CisJCX07CisJfTsKKworRnJvbnRlbmQKIC0tLS0tLS0t CiAKLVRoZSBgYHN0YXRlYGAgY29tbWFuZCBjYW4gYmUgdXNlZCB0byBzdG9yZSBhbmQgbWFuaXB1 bGF0ZSB0aGUgc3RhdGUuIFVzaW5nCi1gYHN0YXRlYGAgd2l0aG91dCBhcmd1bWVudCBsaXN0cyB5 b3UgYWxsIGF2YWlsYWJsZSBzdGF0ZXMgd2l0aCB0aGVpciBuYW1lLgotYGBkZXZpbmZvIFNUQVRF X05BTUVgYCBzaG93cyB5b3UgYWxsIHZhcmlhYmxlcyBhbmQgdGhlaXIgdmFsdWVzLiBgYHN0YXRl IC1zYGAKLXN0b3JlcyB0aGUgc3RhdGUuCitBcyBmcm9udGVuZCBhICpzdGF0ZSogaW5zdGFuY2Ug aXMgYSByZWd1bGFyIGJhcmVib3ggZGV2aWNlIHdoaWNoIGhhcworZGV2aWNlIHBhcmFtZXRlcnMg Zm9yIHRoZSAqc3RhdGUqIHZhcmlhYmxlcy4gV2l0aCB0aGlzIHRoZSB2YXJpYWJsZXMgY2FuCiti ZSBhY2Nlc3NlZCBsaWtlIG5vcm1hbCBzaGVsbCB2YXJpYWJsZXMuIFRoZSBgYHN0YXRlYGAgY29t bWFuZCBpcyB1c2VkCit0byBzYXZlL3Jlc3RvcmUgYSAqc3RhdGUqIHZhcmlhYmxlIHNldCB0byB0 aGUgYmFja2VuZCBkZXZpY2UuCiAKLVN0YXJ0aW5nIEJhcmVib3ggd2lsbCBhdXRvbWF0aWNhbGx5 IGxvYWQgdGhlIGxhc3Qgd3JpdHRlbiBzdGF0ZS4gSWYgbG9hZGluZyB0aGUKLXN0YXRlIGZhaWxz IHRoZSBkZWZhdWx0cyBhcmUgdXNlZC4KK0FmdGVyIGluaXRpYWxpemluZyB0aGUgdmFyaWFibGUg Y2FuIGJlIGFjY2Vzc2VkIHdpdGggYGAkc3RhdGUuZm9vYGAuCitgYHN0YXRlIC1zYGAgc3RvcmVz IHRoZSAqc3RhdGUqIHRvIHRoZSBiYWNrZW5kIGRldmljZS4KLS0gCjIuMTEuMAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmJhcmVib3ggbWFpbGluZyBs aXN0CmJhcmVib3hAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2JhcmVib3gK