From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Osipenko Subject: Re: [PATCH 7/7] drm/tegra: Add kerneldoc for UAPI Date: Sat, 19 May 2018 00:07:15 +0300 Message-ID: References: <20180517154132.10058-1-thierry.reding@gmail.com> <20180517154132.10058-8-thierry.reding@gmail.com> <2628cd65-3aa1-300e-c952-4a5914544fb6@gmail.com> <20180518201202.GA21358@ulmo> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180518201202.GA21358@ulmo> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: linux-tegra@vger.kernel.org, dri-devel@lists.freedesktop.org, Mikko Perttunen List-Id: linux-tegra@vger.kernel.org T24gMTguMDUuMjAxOCAyMzoxMiwgVGhpZXJyeSBSZWRpbmcgd3JvdGU6Cj4gT24gRnJpLCBNYXkg MTgsIDIwMTggYXQgMDg6MTk6NTVQTSArMDMwMCwgRG1pdHJ5IE9zaXBlbmtvIHdyb3RlOgo+PiBP biAxNy4wNS4yMDE4IDE4OjQxLCBUaGllcnJ5IFJlZGluZyB3cm90ZToKPj4+IEZyb206IFRoaWVy cnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4+Pgo+Pj4gRG9jdW1lbnQgdGhlIHVzZXJz cGFjZSBBQkkgd2l0aCBrZXJuZWxkb2MgdG8gcHJvdmlkZSBzb21lIGluZm9ybWF0aW9uIG9uCj4+ PiBob3cgdG8gdXNlIGl0Lgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0 cmVkaW5nQG52aWRpYS5jb20+Cj4+PiAtLS0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2Vt LmMgIHwgICA0ICstCj4+PiAgaW5jbHVkZS91YXBpL2RybS90ZWdyYV9kcm0uaCB8IDQ4MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+Pj4gIDIgZmlsZXMgY2hhbmdlZCwgNDY4 IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMKPj4+ IGluZGV4IDM4N2JhMWRmYmUwZC4uZTI5ODdhMTk1NDFkIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3RlZ3JhL2dlbS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2Vt LmMKPj4+IEBAIC0yOTEsMTAgKzI5MSwxMCBAQCBzdHJ1Y3QgdGVncmFfYm8gKnRlZ3JhX2JvX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzaXplX3Qgc2l6ZSwKPj4+ICAJaWYgKGVyciA8 IDApCj4+PiAgCQlnb3RvIHJlbGVhc2U7Cj4+PiAgCj4+PiAtCWlmIChmbGFncyAmIERSTV9URUdS QV9HRU1fQ1JFQVRFX1RJTEVEKQo+Pj4gKwlpZiAoZmxhZ3MgJiBEUk1fVEVHUkFfR0VNX1RJTEVE KQo+Pj4gIAkJYm8tPnRpbGluZy5tb2RlID0gVEVHUkFfQk9fVElMSU5HX01PREVfVElMRUQ7Cj4+ PiAgCj4+PiAtCWlmIChmbGFncyAmIERSTV9URUdSQV9HRU1fQ1JFQVRFX0JPVFRPTV9VUCkKPj4+ ICsJaWYgKGZsYWdzICYgRFJNX1RFR1JBX0dFTV9CT1RUT01fVVApCj4+PiAgCQliby0+ZmxhZ3Mg fD0gVEVHUkFfQk9fQk9UVE9NX1VQOwo+Pj4gIAo+Pj4gIAlyZXR1cm4gYm87Cj4+PiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS91YXBpL2RybS90ZWdyYV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vdGVn cmFfZHJtLmgKPj4+IGluZGV4IDk5ZTE1ZDgyZDFlOS4uODZhN2IxZTc1NTlkIDEwMDY0NAo+Pj4g LS0tIGEvaW5jbHVkZS91YXBpL2RybS90ZWdyYV9kcm0uaAo+Pj4gKysrIGIvaW5jbHVkZS91YXBp L2RybS90ZWdyYV9kcm0uaAo+Pj4gQEAgLTI5LDE0NiArMjksNTk4IEBACj4+PiAgZXh0ZXJuICJD IiB7Cj4+PiAgI2VuZGlmCj4+PiAgCj4+PiAtI2RlZmluZSBEUk1fVEVHUkFfR0VNX0NSRUFURV9U SUxFRCAgICAgKDEgPDwgMCkKPj4+IC0jZGVmaW5lIERSTV9URUdSQV9HRU1fQ1JFQVRFX0JPVFRP TV9VUCAoMSA8PCAxKQo+Pj4gKyNkZWZpbmUgRFJNX1RFR1JBX0dFTV9USUxFRAkJKDEgPDwgMCkK Pj4+ICsjZGVmaW5lIERSTV9URUdSQV9HRU1fQk9UVE9NX1VQCQkoMSA8PCAxKQo+Pj4gKyNkZWZp bmUgRFJNX1RFR1JBX0dFTV9GTEFHUwkJKERSTV9URUdSQV9HRU1fVElMRUQgfCBcCj4+PiArCQkJ CQkgRFJNX1RFR1JBX0dFTV9CT1RUT01fVVApCj4+Cj4+IFRoZSBjdXJyZW50IHVzZXJzcGFjZSB3 b24ndCBjb21waWxlIHdpdGggdGhlIGFib3ZlIGNoYW5nZXMsIHNvIHRoaXMgaXMgdGhlIEFCSQo+ PiBicmVha2FnZS4gUGxlYXNlIGtlZXAgdGhlIG9sZCBEUk1fVEVHUkFfR0VNX0NSRUFURV8qIERS TV9URUdSQV9HRU1fKiBmbGFncyBmb3Igbm93Lgo+IAo+IEl0IGxvb2tzIGxpa2UgSSBmdW1ibGVk IHRoaXMgZHVyaW5nIGEgcmViYXNlIGFuZCBkaWRuJ3QgY2F0Y2ggaXQuIEkndmUKPiBsZWZ0IHRo ZSBvcmlnaW5hbCBmbGFncyBpbi4KPiAKPiBbLi4uXQo+Pj4gKy8qKgo+Pj4gKyAqIHN0cnVjdCBk cm1fdGVncmFfc3luY3B0X3JlYWQgLSBwYXJhbWV0ZXJzIGZvciB0aGUgcmVhZCBzeW5jcG9pbnQg SU9DVEwKPj4+ICsgKi8KPj4+ICBzdHJ1Y3QgZHJtX3RlZ3JhX3N5bmNwdF9yZWFkIHsKPj4+ICsJ LyoqCj4+PiArCSAqIEBpZDoKPj4+ICsJICoKPj4+ICsJICogSUQgb2YgdGhlIHN5bmNwb2ludCB0 byByZWFkIHRoZSBjdXJyZW50IHZhbHVlIGZyb20uCj4+PiArCSAqLwo+Pj4gIAlfX3UzMiBpZDsK Pj4+ICsKPj4+ICsJLyoqCj4+PiArCSAqIEB2YWx1ZToKPj4+ICsJICoKPj4+ICsJICogUmV0dXJu IGxvY2F0aW9uIGZvciB0aGUgY3VycmVudCBzeW5jcG9pbnQgdmFsdWUuCj4+PiArCSAqLz4gIAlf X3UzMiB2YWx1ZTsKPj4+ICB9Owo+Pgo+PiBXaGF0IGFib3V0Ogo+Pgo+PiBSZXR1cm5lZCB2YWx1 ZSBvZiB0aGUgZ2l2ZW4gc3luY3BvaW50Lgo+Pgo+PiBDb3VsZCB3ZSByZXBsYWNlICJyZXR1cm4g bG9jYXRpb24gZm9yIHRoZS4uIiB3aXRoIGp1c3QgIlJldHVybmVkLi4iIGluIG90aGVyCj4+IHBs YWNlcyB0b28/IE15IG1pbmQgaXMgc3R1dHRlcmluZyB3aGlsZSByZWFkaW5nICJsb2NhdGlvbiBm b3IgdGhlIHZhbHVlIiwgdGhvdWdoCj4+IEkga25vdyB0aGF0IG15IGVuZ2xpc2ggaXNuJ3QgaWRl YWwgYW5kIG1heWJlIGl0J3Mgb25seSBtZS4KPiAKPiBIb3cgYWJvdXQgc29tZXRoaW5nIGEgbGl0 dGxlIG1vcmUgZXhwbGljaXQsIGxpa2U6Cj4gCj4gCVRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBz eW5jcG9pbnQuIFdpbGwgYmUgc2V0IGJ5IHRoZSBrZXJuZWwKPiAJdXBvbiBzdWNjZXNzZnVsIGNv bXBsZXRpb24gb2YgdGhlIElPQ1RMLgo+IAo+ID8KClRoYXQncyBiZXR0ZXIuCgpNYXliZSB3ZSBj b3VsZCBhbHNvIHVzZSBmb3JtYXQgbGlrZSB0aGlzOgoKLyoqCiAqIHN0cnVjdCBkcm1fdGVncmFf c3luY3B0X3JlYWQgLSBwYXJhbWV0ZXJzIGZvciB0aGUgcmVhZCBzeW5jcG9pbnQgSU9DVEwKICog QGlkOgkJSUQgb2YgdGhlIHN5bmNwb2ludCB0byByZWFkIHRoZSBjdXJyZW50IHZhbHVlIGZyb20u CiAqIEB2YWx1ZToJUmV0dXJuIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHN5bmNwb2ludC4KICovCnN0 cnVjdCBkcm1fdGVncmFfc3luY3B0X3JlYWQgewoJX191MzIgaWQ7CglfX3UzMiB2YWx1ZTsKfTsK Cj4gCj4+PiAgCj4+PiArLyoqCj4+PiArICogc3RydWN0IGRybV90ZWdyYV9zeW5jcHRfaW5jciAt IHBhcmFtZXRlcnMgZm9yIHRoZSBpbmNyZW1lbnQgc3luY3BvaW50IElPQ1RMCj4+PiArICovCj4+ PiAgc3RydWN0IGRybV90ZWdyYV9zeW5jcHRfaW5jciB7Cj4+PiArCS8qKgo+Pj4gKwkgKiBAaWQ6 Cj4+PiArCSAqCj4+PiArCSAqIElEIG9mIHRoZSBzeW5jcG9pbnQgdG8gcmVhZCB0aGUgY3VycmVu dCB2YWx1ZSBmcm9tLgo+Pj4gKwkgKi8KPj4KPj4gQ3V0LW4tcGFzdGVkIGNvbW1lbnQuIENoYW5n ZSB0bzoKPj4KPj4gSUQgb2YgdGhlIHN5bmNwb2ludCB0byBpbmNyZW1lbnQuCj4gCj4gR29vZCBj YXRjaC4gRml4ZWQuCj4gCj4+PiAgCV9fdTMyIGlkOwo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICog QHBhZDoKPj4+ICsJICoKPj4+ICsJICogU3RydWN0dXJlIHBhZGRpbmcgdGhhdCBtYXkgYmUgdXNl ZCBpbiB0aGUgZnV0dXJlLiBNdXN0IGJlIDAuCj4+PiArCSAqLwo+Pj4gIAlfX3UzMiBwYWQ7Cj4+ PiAgfTsKPj4+ICAKPj4+ICsvKioKPj4+ICsgKiBzdHJ1Y3QgZHJtX3RlZ3JhX3N5bmNwdF93YWl0 IC0gcGFyYW1ldGVycyBmb3IgdGhlIHdhaXQgc3luY3BvaW50IElPQ1RMCj4+PiArICovCj4+PiAg c3RydWN0IGRybV90ZWdyYV9zeW5jcHRfd2FpdCB7Cj4+PiArCS8qKgo+Pj4gKwkgKiBAaWQ6Cj4+ PiArCSAqCj4+PiArCSAqIElEIG9mIHRoZSBzeW5jcG9pbnQgdG8gd2FpdCBvbi4KPj4+ICsJICov Cj4+PiAgCV9fdTMyIGlkOwo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICogQHRocmVzaDoKPj4+ICsJ ICoKPj4+ICsJICogVGhyZXNob2xkIHZhbHVlIGZvciB3aGljaCB0byB3YWl0Lgo+Pj4gKwkgKi8K Pj4+ICAJX191MzIgdGhyZXNoOwo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICogQHRpbWVvdXQ6Cj4+ PiArCSAqCj4+PiArCSAqIFRpbWVvdXQsIGluIG1pbGxpc2Vjb25kcywgdG8gd2FpdC4KPj4+ICsJ ICovCj4+PiAgCV9fdTMyIHRpbWVvdXQ7Cj4+PiArCj4+PiArCS8qKgo+Pj4gKwkgKiBAdmFsdWU6 Cj4+PiArCSAqCj4+PiArCSAqIFJldHVybiB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgc3luY3BvaW50 IHZhbHVlLgo+Pj4gKwkgKi8KPj4gSnVzdDoKPj4KPj4gUmV0dXJuZWQgdmFsdWUgb2YgdGhlIHN5 bmNwb2ludC4KPiAKPiBXaWxsIHJld29yZCB0aGlzIHNpbWlsYXIgdG8gdGhlIGFib3ZlLgo+IAo+ Pj4gIAlfX3UzMiB2YWx1ZTsKPj4+ICB9Owo+Pj4gIAo+Pj4gICNkZWZpbmUgRFJNX1RFR1JBX05P X1RJTUVPVVQJKDB4ZmZmZmZmZmYpCj4+PiAgCj4+PiArLyoqCj4+PiArICogc3RydWN0IGRybV90 ZWdyYV9vcGVuX2NoYW5uZWwgLSBwYXJhbWV0ZXJzIGZvciB0aGUgb3BlbiBjaGFubmVsIElPQ1RM Cj4+PiArICovCj4+PiAgc3RydWN0IGRybV90ZWdyYV9vcGVuX2NoYW5uZWwgewo+Pj4gKwkvKioK Pj4+ICsJICogQGNsaWVudDoKPj4+ICsJICoKPj4+ICsJICogVGhlIGNsaWVudCBJRCBmb3IgdGhp cyBjaGFubmVsLgo+Pj4gKwkgKi8KPj4+ICAJX191MzIgY2xpZW50Owo+Pj4gKwo+Pj4gKwkvKioK Pj4+ICsJICogQHBhZDoKPj4+ICsJICoKPj4+ICsJICogU3RydWN0dXJlIHBhZGRpbmcgdGhhdCBt YXkgYmUgdXNlZCBpbiB0aGUgZnV0dXJlLiBNdXN0IGJlIDAuCj4+PiArCSAqLwo+Pj4gIAlfX3Uz MiBwYWQ7Cj4+PiArCj4+PiArCS8qKgo+Pj4gKwkgKiBAY29udGV4dDoKPj4+ICsJICoKPj4+ICsJ ICogUmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgYXBwbGljYXRpb24gY29udGV4dCBvZiB0aGlzIGNo YW5uZWwuIFRoaXMKPj4+ICsJICogY29udGV4dCBuZWVkcyB0byBiZSBwYXNzZWQgdG8gdGhlIERS TV9URUdSQV9DSEFOTkVMX0NMT1NFIG9yIHRoZQo+Pj4gKwkgKiBEUk1fVEVHUkFfU1VCTUlUIElP Q1RMcy4KPj4+ICsJICovCj4+PiAgCV9fdTY0IGNvbnRleHQ7Cj4+PiAgfTsKPj4+ICAKPj4+ICsv KioKPj4+ICsgKiBzdHJ1Y3QgZHJtX3RlZ3JhX2Nsb3NlX2NoYW5uZWwgLSBwYXJhbWV0ZXJzIGZv ciB0aGUgY2xvc2UgY2hhbm5lbCBJT0NUTAo+Pj4gKyAqLwo+Pj4gIHN0cnVjdCBkcm1fdGVncmFf Y2xvc2VfY2hhbm5lbCB7Cj4+PiArCS8qKgo+Pj4gKwkgKiBAY29udGV4dDoKPj4+ICsJICoKPj4+ ICsJICogVGhlIGFwcGxpY2F0aW9uIGNvbnRleHQgb2YgdGhpcyBjaGFubmVsLiBUaGlzIGlzIG9i dGFpbmVkIGZyb20gdGhlCj4+PiArCSAqIERSTV9URUdSQV9PUEVOX0NIQU5ORUwgSU9DVEwuCj4+ PiArCSAqLwo+Pj4gIAlfX3U2NCBjb250ZXh0Owo+Pj4gIH07Cj4+PiAgCj4+PiArLyoqCj4+PiAr ICogc3RydWN0IGRybV90ZWdyYV9nZXRfc3luY3B0IC0gcGFyYW1ldGVycyBmb3IgdGhlIGdldCBz eW5jcG9pbnQgSU9DVEwKPj4+ICsgKi8KPj4+ICBzdHJ1Y3QgZHJtX3RlZ3JhX2dldF9zeW5jcHQg ewo+Pj4gKwkvKioKPj4+ICsJICogQGNvbnRleHQ6Cj4+PiArCSAqCj4+PiArCSAqIFRoZSBhcHBs aWNhdGlvbiBjb250ZXh0IGlkZW50aWZ5aW5nIHRoZSBjaGFubmVsIGZvciB3aGljaCB0byBvYnRh aW4KPj4+ICsJICogdGhlIHN5bmNwb2ludCBJRC4KPj4+ICsJICovCj4+PiAgCV9fdTY0IGNvbnRl eHQ7Cj4+PiArCj4+PiArCS8qKgo+Pj4gKwkgKiBAaW5kZXg6Cj4+PiArCSAqCj4+PiArCSAqIENo YW5uZWwtcmVsYXRpdmUgaW5kZXggb2YgdGhlIHN5bmNwb2ludCBmb3Igd2hpY2ggdG8gb2J0YWlu IHRoZSBJRC4KPj4+ICsJICovCj4+PiAgCV9fdTMyIGluZGV4Owo+Pgo+PiBDbGllbnQtcmVsYXRp dmUuIEFuZCB3aGF0IGFib3V0Ogo+Pgo+PiBDbGllbnRzIHN5bmNwb2ludCBpbmRleCBmb3Igd2hp Y2ggdG8gb2J0YWluIHRoZSBJRC4KPiAKPiBJJ2xsIHRyeSB0byBmaW5kIHNvbWUgYmV0dGVyIHdv cmRpbmcgZm9yIHRoaXMuCj4gCj4+PiArCj4+PiArCS8qKgo+Pj4gKwkgKiBAaWQ6Cj4+PiArCSAq Cj4+PiArCSAqIFJldHVybiBsb2NhdGlvbiBmb3IgdGhlIElEIG9mIHRoZSBnaXZlbiBzeW5jcG9p bnQuCj4+PiArCSAqLwo+Pj4gIAlfX3UzMiBpZDsKPj4+ICB9Oz4KPj4+ICsvKioKPj4+ICsgKiBz dHJ1Y3QgZHJtX3RlZ3JhX2dldF9zeW5jcHRfYmFzZSAtIHBhcmFtZXRlcnMgZm9yIHRoZSBnZXQg d2FpdCBiYXNlIElPQ1RMCj4+PiArICovCj4+PiAgc3RydWN0IGRybV90ZWdyYV9nZXRfc3luY3B0 X2Jhc2Ugewo+Pj4gKwkvKioKPj4+ICsJICogQGNvbnRleHQ6Cj4+PiArCSAqCj4+PiArCSAqIFRo ZSBhcHBsaWNhdGlvbiBjb250ZXh0IGlkZW50aWZ5aW5nIGZvciB3aGljaCBjaGFubmVsIHRvIG9i dGFpbiB0aGUKPj4+ICsJICogd2FpdCBiYXNlLgo+Pj4gKwkgKi8KPj4+ICAJX191NjQgY29udGV4 dDsKPj4+ICsKPj4+ICsJLyoqCj4+PiArCSAqIEBzeW5jcHQ6Cj4+PiArCSAqCj4+PiArCSAqIElE IG9mIHRoZSBzeW5jcG9pbnQgZm9yIHdoaWNoIHRvIG9idGFpbiB0aGUgd2FpdCBiYXNlLgo+Pj4g KwkgKi8KPj4+ICAJX191MzIgc3luY3B0Owo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICogQGlkOgo+ Pj4gKwkgKgo+Pj4gKwkgKiBSZXR1cm4gbG9jYXRpb24gZm9yIHRoZSBJRCBvZiB0aGUgd2FpdCBi YXNlLgo+Pj4gKwkgKi8KPj4+ICAJX191MzIgaWQ7Cj4+PiAgfTsKPj4+ICAKPj4+ICsvKioKPj4+ ICsgKiBzdHJ1Y3QgZHJtX3RlZ3JhX3N5bmNwdCAtIHN5bmNwb2ludCBpbmNyZW1lbnQgb3BlcmF0 aW9uCj4+PiArICovCj4+PiAgc3RydWN0IGRybV90ZWdyYV9zeW5jcHQgewo+Pj4gKwkvKioKPj4+ ICsJICogQGlkOgo+Pj4gKwkgKgo+Pj4gKwkgKiBJRCBvZiB0aGUgc3luY3BvaW50IHRvIG9wZXJh dGUgb24uCj4+PiArCSAqLwo+Pj4gIAlfX3UzMiBpZDsKPj4+ICsKPj4+ICsJLyoqCj4+PiArCSAq IEBpbmNyczoKPj4+ICsJICoKPj4+ICsJICogTnVtYmVyIG9mIGluY3JlbWVudHMgdG8gcGVyZm9y bSBmb3IgdGhlIHN5bmNwb2ludC4KPj4+ICsJICovCj4+PiAgCV9fdTMyIGluY3JzOwo+Pj4gIH07 Cj4+PiAgCj4+PiArLyoqCj4+PiArICogc3RydWN0IGRybV90ZWdyYV9jbWRidWYgLSBzdHJ1Y3R1 cmUgZGVzY3JpYmluZyBhIGNvbW1hbmQgYnVmZmVyCj4+PiArICovCj4+PiAgc3RydWN0IGRybV90 ZWdyYV9jbWRidWYgewo+Pj4gKwkvKioKPj4+ICsJICogQGhhbmRsZToKPj4+ICsJICoKPj4+ICsJ ICogSGFuZGxlIHRvIGEgR0VNIG9iamVjdCBjb250YWluaW5nIHRoZSBjb21tYW5kIGJ1ZmZlci4K Pj4+ICsJICovCj4+PiAgCV9fdTMyIGhhbmRsZTsKPj4+ICsKPj4+ICsJLyoqCj4+PiArCSAqIEBv ZmZzZXQ6Cj4+PiArCSAqCj4+PiArCSAqIE9mZnNldCwgaW4gYnl0ZXMsIGludG8gdGhlIEdFTSBv YmplY3QgaWRlbnRpZmllZCBieSBAaGFuZGxlIGF0Cj4+PiArCSAqIHdoaWNoIHRoZSBjb21tYW5k IGJ1ZmZlciBzdGFydHMuCj4+PiArCSAqLwo+Pj4gIAlfX3UzMiBvZmZzZXQ7Cj4+PiArCj4+PiAr CS8qKgo+Pj4gKwkgKiBAd29yZHM6Cj4+PiArCSAqCj4+PiArCSAqIE51bWJlciBvZiAzMi1iaXQg d29yZHMgaW4gdGhpcyBjb21tYW5kIGJ1ZmZlci4KPj4+ICsJICovCj4+PiAgCV9fdTMyIHdvcmRz Owo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICogQHBhZDoKPj4+ICsJICoKPj4+ICsJICogU3RydWN0 dXJlIHBhZGRpbmcgdGhhdCBtYXkgYmUgdXNlZCBpbiB0aGUgZnV0dXJlLiBNdXN0IGJlIDAuCj4+ PiArCSAqLwo+Pj4gIAlfX3UzMiBwYWQ7Cj4+PiAgfTsKPj4+ICAKPj4+ICsvKioKPj4+ICsgKiBz dHJ1Y3QgZHJtX3RlZ3JhX3JlbG9jIC0gR0VNIG9iamVjdCByZWxvY2F0aW9uIHN0cnVjdHVyZQo+ Pj4gKyAqLwo+Pj4gIHN0cnVjdCBkcm1fdGVncmFfcmVsb2Mgewo+Pj4gIAlzdHJ1Y3Qgewo+Pj4g KwkJLyoqCj4+PiArCQkgKiBAY21kYnVmLmhhbmRsZToKPj4+ICsJCSAqCj4+PiArCQkgKiBIYW5k bGUgdG8gdGhlIEdFTSBvYmplY3QgY29udGFpbmluZyB0aGUgY29tbWFuZCBidWZmZXIgZm9yCj4+ PiArCQkgKiB3aGljaCB0byBwZXJmb3JtIHRoaXMgR0VNIG9iamVjdCByZWxvY2F0aW9uLgo+Pj4g KwkJICovCj4+PiAgCQlfX3UzMiBoYW5kbGU7Cj4+PiArCj4+PiArCQkvKioKPj4+ICsJCSAqIEBj bWRidWYub2Zmc2V0Ogo+Pj4gKwkJICoKPj4+ICsJCSAqIE9mZnNldCBpbnRvIHRoZSBjb21tYW5k IGJ1ZmZlciBhdCB3aGljaCB0byBpbnNlcnQgdGhlIHRoZQo+Pgo+PiBPZmZzZXQsIGluIGJ5dGVz LAo+IAo+IERvbmUuCj4gCj4+PiArCQkgKiByZWxvY2F0ZWQgYWRkcmVzcy4KPj4+ICsJCSAqLwo+ Pj4gIAkJX191MzIgb2Zmc2V0Owo+Pj4gIAl9IGNtZGJ1ZjsKPj4+ICAJc3RydWN0IHsKPj4+ICsJ CS8qKgo+Pj4gKwkJICogQHRhcmdldC5oYW5kbGU6Cj4+PiArCQkgKgo+Pj4gKwkJICogSGFuZGxl IHRvIHRoZSBHRU0gb2JqZWN0IHRvIGJlIHJlbG9jYXRlZC4KPj4+ICsJCSAqLwo+Pj4gIAkJX191 MzIgaGFuZGxlOwo+Pj4gKwo+Pj4gKwkJLyoqCj4+PiArCQkgKiBAdGFyZ2V0Lm9mZnNldDoKPj4+ ICsJCSAqCj4+PiArCQkgKiBPZmZzZXQgaW50byB0aGUgdGFyZ2V0IEdFTSBvYmplY3QgYXQgd2hp Y2ggdGhlIHJlbG9jYXRlZAo+Pgo+PiBPZmZzZXQsIGluIGJ5dGVzLAo+IAo+IERvbmUuCj4gCj4+ PiArCQkgKiBkYXRhIHN0YXJ0cy4KPj4+ICsJCSAqLwo+Pj4gIAkJX191MzIgb2Zmc2V0Owo+Pj4g IAl9IHRhcmdldDsKPj4+ICsKPj4+ICsJLyoqCj4+PiArCSAqIEBzaGlmdDoKPj4+ICsJICoKPj4+ ICsJICogVGhlIG51bWJlciBvZiBiaXRzIGJ5IHdoaWNoIHRvIHNoaWZ0IHJlbG9jYXRlZCBhZGRy ZXNzZXMuCj4+PiArCSAqLwo+Pj4gIAlfX3UzMiBzaGlmdDsKPj4+ICsKPj4+ICsJLyoqCj4+PiAr CSAqIEBwYWQ6Cj4+PiArCSAqCj4+PiArCSAqIFN0cnVjdHVyZSBwYWRkaW5nIHRoYXQgbWF5IGJl IHVzZWQgaW4gdGhlIGZ1dHVyZS4gTXVzdCBiZSAwLgo+Pj4gKwkgKi8KPj4+ICAJX191MzIgcGFk Owo+Pj4gIH07Cj4+PiAgCj4+PiArLyoqCj4+PiArICogc3RydWN0IGRybV90ZWdyYV93YWl0Y2hr IC0gd2FpdCBjaGVjayBzdHJ1Y3R1cmUKPj4+ICsgKi8KPj4+ICBzdHJ1Y3QgZHJtX3RlZ3JhX3dh aXRjaGsgewo+Pj4gKwkvKioKPj4+ICsJICogQGhhbmRsZToKPj4+ICsJICoKPj4+ICsJICogSGFu ZGxlIHRvIHRoZSBHRU0gb2JqZWN0IGNvbnRhaW5pbmcgYSBjb21tYW5kIHN0cmVhbSBvbiB3aGlj aCB0bwo+Pj4gKwkgKiBwZXJmb3JtIHRoZSB3YWl0IGNoZWNrLgo+Pj4gKwkgKi8KPj4+ICAJX191 MzIgaGFuZGxlOwo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICogQG9mZnNldDoKPj4+ICsJICoKPj4+ ICsJICogT2Zmc2V0LCBpbiBieXRlcywgb2YgdGhlIGxvY2F0aW9uIGluIHRoZSBjb21tYW5kIHN0 cmVhbSB0byBwZXJmb3JtCj4+PiArCSAqIHRoZSB3YWl0IGNoZWNrIG9uLgo+Pj4gKwkgKi8KPj4+ ICAJX191MzIgb2Zmc2V0Owo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICogQHN5bmNwdDoKPj4+ICsJ ICoKPj4+ICsJICogSUQgb2YgdGhlIHN5bmNwb2ludCB0byB3YWl0IGNoZWNrLgo+Pj4gKwkgKi8K Pj4+ICAJX191MzIgc3luY3B0Owo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICogQHRocmVzaDoKPj4+ ICsJICoKPj4+ICsJICogVGhyZXNob2xkIHZhbHVlIGZvciB3aGljaCB0byBjaGVjay4KPj4+ICsJ ICovCj4+PiAgCV9fdTMyIHRocmVzaDsKPj4+ICB9Owo+Pj4gIAo+Pj4gKy8qKgo+Pj4gKyAqIHN0 cnVjdCBkcm1fdGVncmFfc3VibWl0IC0gam9iIHN1Ym1pc3Npb24gc3RydWN0dXJlCj4+PiArICov Cj4+PiAgc3RydWN0IGRybV90ZWdyYV9zdWJtaXQgewo+Pj4gKwkvKioKPj4+ICsJICogQGNvbnRl eHQ6Cj4+PiArCSAqCj4+PiArCSAqIFRoZSBhcHBsaWNhdGlvbiBjb250ZXh0IGlkZW50aWZ5aW5n IHRoZSBjaGFubmVsIHRvIHVzZSBmb3IgdGhlCj4+PiArCSAqIGV4ZWN1dGlvbiBvZiB0aGlzIGpv Yi4KPj4+ICsJICovCj4+PiAgCV9fdTY0IGNvbnRleHQ7Cj4+PiArCj4+PiArCS8qKgo+Pj4gKwkg KiBAbnVtX3N5bmNwdHM6Cj4+PiArCSAqCj4+PiArCSAqIFRoZSBudW1iZXIgb2Ygc3luY3BvaW50 cyBvcGVyYXRlZCBvbiBieSB0aGlzIGpvYi4KPj4+ICsJICovCj4+PiAgCV9fdTMyIG51bV9zeW5j cHRzOwo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICogQG51bV9jbWRidWZzOgo+Pj4gKwkgKgo+Pj4g KwkgKiBUaGUgbnVtYmVyIG9mIGNvbW1hbmQgYnVmZmVycyB0byBleGVjdXRlIGFzIHBhcnQgb2Yg dGhpcyBqb2IuCj4+PiArCSAqLwo+Pj4gIAlfX3UzMiBudW1fY21kYnVmczsKPj4+ICsKPj4+ICsJ LyoqCj4+PiArCSAqIEBudW1fcmVsb2NzOgo+Pj4gKwkgKgo+Pj4gKwkgKiBUaGUgbnVtYmVyIG9m IHJlbG9jYXRpb25zIHRvIHBlcmZvcm0gYmVmb3JlIGV4ZWN1dGluZyB0aGlzIGpvYi4KPj4+ICsJ ICovCj4+PiAgCV9fdTMyIG51bV9yZWxvY3M7Cj4+PiArCj4+PiArCS8qKgo+Pj4gKwkgKiBAbnVt X3dhaXRjaGtzOgo+Pj4gKwkgKgo+Pj4gKwkgKiBUaGUgbnVtYmVyIG9mIHdhaXQgY2hlY2tzIHRv IHBlcmZvcm0gYXMgcGFydCBvZiB0aGlzIGpvYi4KPj4+ICsJICovCj4+PiAgCV9fdTMyIG51bV93 YWl0Y2hrczsKPj4+ICsKPj4+ICsJLyoqCj4+PiArCSAqIEB3YWl0Y2hrX21hc2s6Cj4+PiArCSAq Cj4+PiArCSAqIEJpdG1hc2sgb2YgdmFsaWQgd2FpdCBjaGVja3MuCj4+PiArCSAqLwo+Pj4gIAlf X3UzMiB3YWl0Y2hrX21hc2s7Cj4+PiArCj4+PiArCS8qKgo+Pj4gKwkgKiBAdGltZW91dDoKPj4+ ICsJICoKPj4+ICsJICogVGltZW91dCwgaW4gbWlsbGlzZWNvbmRzLCBiZWZvcmUgdGhpcyBqb2Ig aXMgY2FuY2VsbGVkLgo+Pj4gKwkgKi8KPj4+ICAJX191MzIgdGltZW91dDsKPj4+ICsKPj4+ICsJ LyoqCj4+PiArCSAqIEBzeW5jcHRzOgo+Pj4gKwkgKgo+Pj4gKwkgKiBBIHBvaW50ZXIgdG8gQG51 bV9zeW5jcHRzICZzdHJ1Y3QgZHJtX3RlZ3JhX3N5bmNwdCBzdHJ1Y3R1cmVzIHRoYXQKPj4+ICsJ ICogc3BlY2lmeSB0aGUgc3luY3BvaW50IG9wZXJhdGlvbnMgcGVyZm9ybWVkIGFzIHBhcnQgb2Yg dGhpcyBqb2IuCj4+PiArCSAqLwo+Pj4gIAlfX3U2NCBzeW5jcHRzOwo+Pj4gKwo+Pj4gKwkvKioK Pj4+ICsJICogQGNtZGJ1ZnM6Cj4+PiArCSAqCj4+PiArCSAqIEEgcG9pbnRlciB0byBAbnVtX2Nt ZGJ1ZnMgJnN0cnVjdCBkcm1fdGVncmFfY21kYnVmX2xlZ2FjeQo+Pgo+PiBXZSBkb24ndCBoYXZl IGRybV90ZWdyYV9jbWRidWZfbGVnYWN5IHlldCwgc2hvdWxkIGJlIGRybV90ZWdyYV9jbWRidWYu Cj4gCj4gRG9uZS4KPiAKPj4+ICsJICogc3RydWN0dXJlcyB0aGF0IGRlZmluZSB0aGUgY29tbWFu ZCBidWZmZXJzIHRvIGV4ZWN1dGUgYXMgcGFydCBvZgo+Pj4gKwkgKiB0aGlzIGpvYi4KPj4+ICsJ ICovCj4+PiAgCV9fdTY0IGNtZGJ1ZnM7Cj4+PiArCj4+PiArCS8qKgo+Pj4gKwkgKiBAcmVsb2Nz Ogo+Pj4gKwkgKgo+Pj4gKwkgKiBBIHBvaW50ZXIgdG8gQG51bV9yZWxvY3MgJnN0cnVjdCBkcm1f dGVncmFfcmVsb2NfbGVnYWN5IHN0cnVjdHVyZXMKPj4+ICsJICogdGhhdCBzcGVjaWZ5IHRoZSBy ZWxvY2F0aW9ucyB0aGF0IG5lZWQgdG8gYmUgcGVyZm9ybWVkIGJlZm9yZQo+Pj4gKwkgKiBleGVj dXRpbmcgdGhpcyBqb2IuCj4+PiArCSAqLwo+Pgo+PiBTYW1lIGFzIGZvciBkcm1fdGVncmFfY21k YnVmX2xlZ2FjeS4KPiAKPiBEb25lLgo+IAo+Pj4gIAlfX3U2NCByZWxvY3M7Cj4+PiArCj4+PiAr CS8qKgo+Pj4gKwkgKiBAd2FpdGNoa3M6Cj4+PiArCSAqCj4+PiArCSAqIEEgcG9pbnRlciB0byBA bnVtX3dhaXRjaGtzICZzdHJ1Y3QgZHJtX3RlZ3JhX3dhaXRjaGsgc3RydWN0dXJlcwo+Pj4gKwkg KiB0aGF0IHNwZWNpZnkgdGhlIHdhaXQgY2hlY2tzIHRvIGJlIHBlcmZvcm1lZCB3aGlsZSBleGVj dXRpbmcgdGhpcwo+Pj4gKwkgKiBqb2IuCj4+PiArCSAqLwo+Pj4gIAlfX3U2NCB3YWl0Y2hrczsK Pj4+IC0JX191MzIgZmVuY2U7CQkvKiBSZXR1cm4gdmFsdWUgKi8KPj4+ICAKPj4+IC0JX191MzIg cmVzZXJ2ZWRbNV07CS8qIGZ1dHVyZSBleHBhbnNpb24gKi8KPj4+ICsJLyoqCj4+PiArCSAqIEBm ZW5jZToKPj4+ICsJICoKPj4+ICsJICogUmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgdGhyZXNob2xk IG9mIHRoZSBzeW5jcG9pbnQgYXNzb2NpYXRlZCB3aXRoCj4+PiArCSAqIHRoaXMgam9iLiBUaGlz IGNhbiBiZSB1c2VkIHdpdGggdGhlIERSTV9URUdSQV9TWU5DUFRfV0FJVCBJT0NUTCB0bwo+Pj4g KwkgKiB3YWl0IGZvciB0aGlzIGpvYiB0byBiZSBmaW5pc2hlZC4KPj4+ICsJICovCj4+PiArCV9f dTMyIGZlbmNlOwo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICogQHJlc2VydmVkOgo+Pj4gKwkgKgo+ Pj4gKwkgKiBUaGlzIGZpZWxkIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLiBNdXN0IGJlIDAu Cj4+PiArCSAqLwo+Pj4gKwlfX3UzMiByZXNlcnZlZFs1XTsKPj4+ICB9Owo+Pj4gIAo+Pj4gICNk ZWZpbmUgRFJNX1RFR1JBX0dFTV9USUxJTkdfTU9ERV9QSVRDSCAwCj4+PiAgI2RlZmluZSBEUk1f VEVHUkFfR0VNX1RJTElOR19NT0RFX1RJTEVEIDEKPj4+ICAjZGVmaW5lIERSTV9URUdSQV9HRU1f VElMSU5HX01PREVfQkxPQ0sgMgo+Pj4gIAo+Pj4gKy8qKgo+Pj4gKyAqIHN0cnVjdCBkcm1fdGVn cmFfZ2VtX3NldF90aWxpbmcgLSBwYXJhbWV0ZXJzIGZvciB0aGUgc2V0IHRpbGluZyBJT0NUTAo+ Pj4gKyAqLwo+Pj4gIHN0cnVjdCBkcm1fdGVncmFfZ2VtX3NldF90aWxpbmcgewo+Pj4gLQkvKiBp bnB1dCAqLwo+Pj4gKwkvKioKPj4+ICsJICogQGhhbmRsZToKPj4+ICsJICoKPj4+ICsJICogSGFu ZGxlIHRvIHRoZSBHRU0gb2JqZWN0IGZvciB3aGljaCB0byBzZXQgdGhlIHRpbGluZyBwYXJhbWV0 ZXJzLgo+Pj4gKwkgKi8KPj4+ICAJX191MzIgaGFuZGxlOwo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJ ICogQG1vZGU6Cj4+PiArCSAqCj4+PiArCSAqIFRoZSB0aWxpbmcgbW9kZSB0byBzZXQuIE11c3Qg YmUgb25lIG9mOgo+Pj4gKwkgKgo+Pj4gKwkgKiBEUk1fVEVHUkFfR0VNX1RJTElOR19NT0RFX1BJ VENICj4+PiArCSAqICAgcGl0Y2ggbGluZWFyIGZvcm1hdAo+Pj4gKwkgKgo+Pj4gKwkgKiBEUk1f VEVHUkFfR0VNX1RJTElOR19NT0RFX1RJTEVECj4+PiArCSAqICAgMTZ4MTYgdGlsaW5nIGZvcm1h dAo+Pj4gKwkgKgo+Pj4gKwkgKiBEUk1fVEVHUkFfR0VNX1RJTElOR19NT0RFX0JMT0NLCj4+PiAr CSAqICAgMTZCeDIgdGlsaW5nIGZvcm1hdAo+Pj4gKwkgKi8KPj4+ICAJX191MzIgbW9kZTsKPj4+ ICsKPj4+ICsJLyoqCj4+PiArCSAqIEB2YWx1ZToKPj4+ICsJICoKPj4+ICsJICogVGhlIHZhbHVl IHRvIHNldCBmb3IgdGhlIHRpbGluZyBtb2RlIHBhcmFtZXRlci4KPj4+ICsJICovCj4+PiAgCV9f dTMyIHZhbHVlOwo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICogQHBhZDoKPj4+ICsJICoKPj4+ICsJ ICogU3RydWN0dXJlIHBhZGRpbmcgdGhhdCBtYXkgYmUgdXNlZCBpbiB0aGUgZnV0dXJlLiBNdXN0 IGJlIDAuCj4+PiArCSAqLwo+Pj4gIAlfX3UzMiBwYWQ7Cj4+PiAgfTsKPj4+ICAKPj4+ICsvKioK Pj4+ICsgKiBzdHJ1Y3QgZHJtX3RlZ3JhX2dlbV9nZXRfdGlsaW5nIC0gcGFyYW1ldGVycyBmb3Ig dGhlIGdldCB0aWxpbmcgSU9DVEwKPj4+ICsgKi8KPj4+ICBzdHJ1Y3QgZHJtX3RlZ3JhX2dlbV9n ZXRfdGlsaW5nIHsKPj4+IC0JLyogaW5wdXQgKi8KPj4+ICsJLyoqCj4+PiArCSAqIEBoYW5kbGU6 Cj4+PiArCSAqCj4+PiArCSAqIEhhbmRsZSB0byB0aGUgR0VNIG9iamVjdCBmb3Igd2hpY2ggdG8g cXVlcnkgdGhlIHRpbGluZyBwYXJhbWV0ZXJzLgo+Pj4gKwkgKi8KPj4+ICAJX191MzIgaGFuZGxl Owo+Pj4gLQkvKiBvdXRwdXQgKi8KPj4+ICsKPj4+ICsJLyoqCj4+PiArCSAqIEBtb2RlOgo+Pj4g KwkgKgo+Pj4gKwkgKiBSZXR1cm4gbG9jYXRpb24gZm9yIHRoZSB0aWxpbmcgbW9kZS4KPj4+ICsJ ICovCj4+PiAgCV9fdTMyIG1vZGU7Cj4+PiArCj4+PiArCS8qKgo+Pj4gKwkgKiBAdmFsdWU6Cj4+ PiArCSAqCj4+PiArCSAqIFJldHVybiBsb2NhdGlvbiBmb3IgdGhlIHRpbGluZyBtb2RlIHBhcmFt ZXRlci4KPj4+ICsJICovCj4+PiAgCV9fdTMyIHZhbHVlOwo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJ ICogQHBhZDoKPj4+ICsJICoKPj4+ICsJICogU3RydWN0dXJlIHBhZGRpbmcgdGhhdCBtYXkgYmUg dXNlZCBpbiB0aGUgZnV0dXJlLiBNdXN0IGJlIDAuCj4+PiArCSAqLwo+Pj4gIAlfX3UzMiBwYWQ7 Cj4+PiAgfTsKPj4+ICAKPj4+IC0jZGVmaW5lIERSTV9URUdSQV9HRU1fQk9UVE9NX1VQCQkoMSA8 PCAwKQo+Pj4gLSNkZWZpbmUgRFJNX1RFR1JBX0dFTV9GTEFHUwkJKERSTV9URUdSQV9HRU1fQk9U VE9NX1VQKQo+Pj4gLQo+Pj4gKy8qKgo+Pj4gKyAqIHN0cnVjdCBkcm1fdGVncmFfZ2VtX3NldF9m bGFncyAtIHBhcmFtZXRlcnMgZm9yIHRoZSBzZXQgZmxhZ3MgSU9DVEwKPj4+ICsgKi8KPj4+ICBz dHJ1Y3QgZHJtX3RlZ3JhX2dlbV9zZXRfZmxhZ3Mgewo+Pj4gLQkvKiBpbnB1dCAqLwo+Pj4gKwkv KioKPj4+ICsJICogQGhhbmRsZToKPj4+ICsJICoKPj4+ICsJICogSGFuZGxlIHRvIHRoZSBHRU0g b2JqZWN0IGZvciB3aGljaCB0byBzZXQgdGhlIGZsYWdzLgo+Pj4gKwkgKi8KPj4+ICAJX191MzIg aGFuZGxlOwo+Pj4gLQkvKiBvdXRwdXQgKi8KPj4+ICsKPj4+ICsJLyoqCj4+PiArCSAqIEBmbGFn czoKPj4+ICsJICoKPj4+ICsJICogVGhlIGZsYWdzIHRvIHNldCBmb3IgdGhlIEdFTSBvYmplY3Qu Cj4+PiArCSAqLwo+Pj4gIAlfX3UzMiBmbGFnczsKPj4+ICB9Owo+Pj4gIAo+Pj4gKy8qKgo+Pj4g KyAqIHN0cnVjdCBkcm1fdGVncmFfZ2VtX2dldF9mbGFncyAtIHBhcmFtZXRlcnMgZm9yIHRoZSBn ZXQgZmxhZ3MgSU9DVEwKPj4+ICsgKi8KPj4+ICBzdHJ1Y3QgZHJtX3RlZ3JhX2dlbV9nZXRfZmxh Z3Mgewo+Pj4gLQkvKiBpbnB1dCAqLwo+Pj4gKwkvKioKPj4+ICsJICogQGhhbmRsZToKPj4+ICsJ ICoKPj4+ICsJICogSGFuZGxlIHRvIHRoZSBHRU0gb2JqZWN0IGZvciB3aGljaCB0byBxdWVyeSB0 aGUgZmxhZ3MuCj4+PiArCSAqLwo+Pj4gIAlfX3UzMiBoYW5kbGU7Cj4+PiAtCS8qIG91dHB1dCAq Lwo+Pj4gKwo+Pj4gKwkvKioKPj4+ICsJICogQGZsYWdzOgo+Pj4gKwkgKgo+Pj4gKwkgKiBSZXR1 cm4gbG9jYXRpb24gZm9yIHRoZSBmbGFncyBxdWVyaWVkIGZyb20gdGhlIEdFTSBvYmplY3QuCj4+ PiArCSAqLwo+Pj4gIAlfX3UzMiBmbGFnczsKPj4+ICB9Owo+Pj4gIAo+IAo+IFRoYW5rcyBmb3Ig dGhlIHJldmlldy4gSSdtIGdvaW5nIHRvIHRoaW5rIGFib3V0IGEgYmV0dGVyIHdvcmRpbmcgZm9y Cj4gc29tZSBvZiB0aGUgZGVzY3JpcHRpb25zIGFuZCBzZW5kIG91dCBhIG5ldyB2ZXJzaW9uIG9m IHRoaXMgcGF0Y2gKPiBpbmRpdmlkdWFsbHksIGZvciByZXZpZXcuCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK