From mboxrd@z Thu Jan 1 00:00:00 1970 From: leon@leon.nu Subject: [PATCH v4] ASoC: Add new Realtek ALC5632 CODEC driver. Date: Sat, 5 Nov 2011 12:38:02 +0200 Message-ID: <4eb51219.8238df0a.64ec.ffffdb00@mx.google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-fx0-f51.google.com (mail-fx0-f51.google.com [209.85.161.51]) by alsa0.perex.cz (Postfix) with ESMTP id E49C4245B3 for ; Sat, 5 Nov 2011 11:38:18 +0100 (CET) Received: by faao24 with SMTP id o24so3731191faa.38 for ; Sat, 05 Nov 2011 03:38:18 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: broonie@opensource.wolfsonmicro.com, lrg@ti.com Cc: alsa-devel@alsa-project.org, Andrey Danin , Leon Romanovsky List-Id: alsa-devel@alsa-project.org RnJvbTogTGVvbiBSb21hbm92c2t5IDxsZW9uQGxlb24ubnU+CgpUaGlzIGRyaXZlciBpbXBsZW1l bnRzIGJhc2ljIGZ1bmN0aW9uYWxpdHksIHVzaW5nIEnCskMgZm9yIHRoZSBjb250cm9sCmNoYW5u ZWwuCgpTaWduZWQtb2ZmLWJ5OiBMZW9uIFJvbWFub3Zza3kgPGxlb25AbGVvbi5udT4KU2lnbmVk LW9mZi1ieTogQW5kcmV5IERhbmluIDxkYW5pbmRyZXlAbWFpbC5ydT4KCi0tLQp2NDoKKiBVc2Ug ZGV2X2luZm8gaW5zdGVhZCBkZXZfZXJyIGZvciBpbmZvcm1hdGlvbiBtZXNzYWdlcy4KKiBVc2Ug RUlOVkFMIGZvciBpbmNvcnJlY3QgcGxsX2lkLgoqIE1hcmsgY2FjaGUgYXMgbmVlZGVkIHRvIHN5 bmMgb24gcmVzdW1lLgoqIFVzZSBtYXNrIGZvciBwb3dlciByZWdpc3RlcnMgdG8gcHJvdGVjdCBy ZXNlcnZlZCBiaXRzLgoqIE1vdmUgcG93ZXIgbWFuYWdlbWVudCBsb2dpYyBmcm9tIHByb2JlIHRv IHNldF9iaWFzIGZ1bmN0aW9uLgoqIFJlbW92ZSByZWZlcmVuY2VzIHRvIHNvdW5kIHBsYXRmb3Jt IGRldmljZS4KdjM6CiogREFDIGlzIG5vdyBoYW5kbGVkIGJ5IERBUE0KKiBQb3dlciBkb3duIGNv bnRyb2wgY29ycmVjdCBoYW5kbGluZy4KKiBGaXhlZCBzcGVha2VyIGRhcG0gcm91dGVzLgoqIFJl bW92ZSB1bnVzZWQgdmFyaWFibGVzLgoqIFN5bmMgc3RyZWFtIG5hbWVzIGluIERBUE0gYW5kIGNv ZGVjIGRhaS4KKiBVc2UgdXBkYXRlIGJpdHMgaW5zdGVhZCB3cml0ZSB0byByZWcgaW4gcG93ZXIg ZGVwb3AgZnVuY3Rpb24uCiogUmVuYW1lIFJvdXRlIHRvIEFCLUQgQW1wIE11eAoqIEFkZCBzbmQg Y29udHJvbHMgdG8gY29kZWMgZHJpdmVyLiBEb24ndCByZWdpc3RlciBpdCBpbiBwcm9iZS4KKiBB ZGQgZGFwbSB3aWRnZXRzIGFuZCByb3V0ZXMgdG8gY29kZWMgZHJpdmVyLiBEb24ndCByZWdpc3Rl ciBpdC4KKiBEb24ndCBmb3JjZSBwb3dlciBmb3Igc3BrIGFwbSwgbWFpbiBpMnMuIEl0IGlzIGRl c2NyaWJlZCBpbiBEQVBNLgoqIFNldCBzeW1tZXRyaWNfcmF0ZXMgZmxhZyB0byBwcmV2ZW50IGRp ZmZlcmVudCByYXRlcyBmb3IgcGxheWJhY2sgYW5kIGNhcHR1cmUuCiogUmVtb3ZlZCBjb21tZW50 ZWQgREVCVUcgZGVmaW5pdGlvbi4KKiBVc2UgU09DIGluZnJhc3RydWN0dXJlIHN5bmMgY2FjaGUg bWVjaGFuaXNtLgoqIFJlbW92ZSBub24gcG9zc2libGUgSUYgc3dpdGNoLgoqIEZpeCBpbmRlbnRh dGlvbiBpc3N1ZXMKKiBDb252ZXJ0IGFsYzU2MzIgTUlDQklBUyB0byBhIHN1cHBseSB3aWRnZXQK KiBSZW1vdmUgY29kZWMgaW5wdXQgcGFyYW1ldGVyCiogUmVtb3ZlIFZFUlNJT04gZGVmaW5lCiog UmVtb3ZlIHVubmVjZXNzYXJ5IGRldl9rZnJlZSgpIGFuZCB1cGRhdGUgY29weXJpZ2h0IG5vdGlj ZQoqIENvbnRyb2wgc3BlYWtlciBhbXBsaWZpZXIgd2l0aCBEQVBNLgoqIExldCBtYWNoaW5lIGRy aXZlciBjaG9vc2UgbWFzdGVyL3NsYXZlIG1vZGUgZm9yIHRoZSBjb2RlYy4KKiBDbGVhbiB1cC4g cmVtb3ZlZCBkZXZfZGJnLgoqIFVzZSBkZXZtX2t6YWxsb2MvZGV2bV9remZyZWUgZm9yIG1lbW9y eSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbi4KKiBGaXhlZCBzdGVyZW8gaGVhZHBob25lcyBwbGF5 YmFjay4KKiBTZXQgdXAgY29ycmVjdCBuYW1lIGZvciBTdGVyZW8gREFDIHZvbHVtZSBpdGVtLgp2 MjogRnJlZSBmcm9tIGNoZWNrcGF0Y2ggd2FybmluZ3MKdjE6IEluaXRpYWwgY29kZSBkcm9wCi0t LQotLS0KIHNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZyAgIHwgICAgMyArCiBzb3VuZC9zb2MvY29k ZWNzL01ha2VmaWxlICB8ICAgIDIgKwogc291bmQvc29jL2NvZGVjcy9hbGM1NjMyLmMgfCAxMTUz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzb3VuZC9zb2Mv Y29kZWNzL2FsYzU2MzIuaCB8ICAyNDkgKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxNDA3 IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQv c29jL2NvZGVjcy9hbGM1NjMyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC9zb2MvY29kZWNz L2FsYzU2MzIuaAoKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZyBiL3NvdW5k L3NvYy9jb2RlY3MvS2NvbmZpZwppbmRleCA0NTg0NTE0Li42ODRjYzE1IDEwMDY0NAotLS0gYS9z b3VuZC9zb2MvY29kZWNzL0tjb25maWcKKysrIGIvc291bmQvc29jL2NvZGVjcy9LY29uZmlnCkBA IC0yNiw2ICsyNiw3IEBAIGNvbmZpZyBTTkRfU09DX0FMTF9DT0RFQ1MKIAlzZWxlY3QgU05EX1NP Q19BSzQ2NDIgaWYgSTJDCiAJc2VsZWN0IFNORF9TT0NfQUs0NjcxIGlmIEkyQwogCXNlbGVjdCBT TkRfU09DX0FMQzU2MjMgaWYgSTJDCisJc2VsZWN0IFNORF9TT0NfQUxDNTYzMiBpZiBJMkMKIAlz ZWxlY3QgU05EX1NPQ19DUTAwOTNWQyBpZiBNRkRfREFWSU5DSV9WT0lDRUNPREVDCiAJc2VsZWN0 IFNORF9TT0NfQ1M0Mkw1MSBpZiBJMkMKIAlzZWxlY3QgU05EX1NPQ19DUzQyNzAgaWYgSTJDCkBA IC0xNjgsNiArMTY5LDggQEAgY29uZmlnIFNORF9TT0NfQUs0NjcxCiAKIGNvbmZpZyBTTkRfU09D X0FMQzU2MjMKICAgICAgICB0cmlzdGF0ZQorY29uZmlnIFNORF9TT0NfQUxDNTYzMgorCXRyaXN0 YXRlCiAKIGNvbmZpZyBTTkRfU09DX0NRMDA5M1ZDCiAJdHJpc3RhdGUKZGlmZiAtLWdpdCBhL3Nv dW5kL3NvYy9jb2RlY3MvTWFrZWZpbGUgYi9zb3VuZC9zb2MvY29kZWNzL01ha2VmaWxlCmluZGV4 IGEyYzc4NDIuLjJlZDU3OTAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvTWFrZWZpbGUK KysrIGIvc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZQpAQCAtMjksNiArMjksNyBAQCBzbmQtc29j LXBjbTMwMDgtb2JqcyA6PSBwY20zMDA4Lm8KIHNuZC1zb2MtcnQ1NjMxLW9ianMgOj0gcnQ1NjMx Lm8KIHNuZC1zb2Mtc2d0bDUwMDAtb2JqcyA6PSBzZ3RsNTAwMC5vCiBzbmQtc29jLWFsYzU2MjMt b2JqcyA6PSBhbGM1NjIzLm8KK3NuZC1zb2MtYWxjNTYzMi1vYmpzIDo9IGFsYzU2MzIubwogc25k LXNvYy1zbjk1MDMxLW9ianMgOj0gc245NTAzMS5vCiBzbmQtc29jLXNwZGlmLW9ianMgOj0gc3Bk aWZfdHJhbnNjaWV2ZXIubwogc25kLXNvYy1zc20yNjAyLW9ianMgOj0gc3NtMjYwMi5vCkBAIC0x MTMsNiArMTE0LDcgQEAgb2JqLSQoQ09ORklHX1NORF9TT0NfQUs0NjQxKQkrPSBzbmQtc29jLWFr NDY0MS5vCiBvYmotJChDT05GSUdfU05EX1NPQ19BSzQ2NDIpCSs9IHNuZC1zb2MtYWs0NjQyLm8K IG9iai0kKENPTkZJR19TTkRfU09DX0FLNDY3MSkJKz0gc25kLXNvYy1hazQ2NzEubwogb2JqLSQo Q09ORklHX1NORF9TT0NfQUxDNTYyMykgICAgKz0gc25kLXNvYy1hbGM1NjIzLm8KK29iai0kKENP TkZJR19TTkRfU09DX0FMQzU2MzIpCSs9IHNuZC1zb2MtYWxjNTYzMi5vCiBvYmotJChDT05GSUdf U05EX1NPQ19DUTAwOTNWQykgKz0gc25kLXNvYy1jcTkzdmMubwogb2JqLSQoQ09ORklHX1NORF9T T0NfQ1M0Mkw1MSkJKz0gc25kLXNvYy1jczQybDUxLm8KIG9iai0kKENPTkZJR19TTkRfU09DX0NT NDI3MCkJKz0gc25kLXNvYy1jczQyNzAubwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9h bGM1NjMyLmMgYi9zb3VuZC9zb2MvY29kZWNzL2FsYzU2MzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi42ODQ2NWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQvc29jL2Nv ZGVjcy9hbGM1NjMyLmMKQEAgLTAsMCArMSwxMTUzIEBACisvKgorKiBhbGM1NjMyLmMgIC0tICBB TEM1NjMyIEFMU0EgU29DIEF1ZGlvIENvZGVjCisqCisqIENvcHlyaWdodCAoQykgMjAxMSBUaGUg QUMxMDAgS2VybmVsIFRlYW0gPGFjMTAwQGxpc3RzLmxhdWNocGFkLm5ldD4KKyoKKyogQXV0aG9y czogIExlb24gUm9tYW5vdnNreSA8bGVvbkBsZW9uLm51PgorKiAgICAgICAgICAgQW5kcmV5IERh bmluIDxkYW5pbmRyZXlAbWFpbC5ydT4KKyogICAgICAgICAgIElseWEgUGV0cm92IDxpbHlhLm11 cm9tZWNAZ21haWwuY29tPgorKiAgICAgICAgICAgTWFyYyBEaWV0cmljaCA8bWFydmluMjRAZ214 LmRlPgorKgorKiBCYXNlZCBvbiBhbGM1NjIzLmMgYnkgQXJuYXVkIFBhdGFyZAorKgorKiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMiBhcworKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbi4KKyovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvZGVs YXkuaD4KKyNpbmNsdWRlIDxsaW51eC9wbS5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxzb3VuZC9jb3JlLmg+CisjaW5jbHVkZSA8 c291bmQvcGNtLmg+CisjaW5jbHVkZSA8c291bmQvcGNtX3BhcmFtcy5oPgorI2luY2x1ZGUgPHNv dW5kL3Rsdi5oPgorI2luY2x1ZGUgPHNvdW5kL3NvYy5oPgorI2luY2x1ZGUgPHNvdW5kL2luaXR2 YWwuaD4KKworI2luY2x1ZGUgImFsYzU2MzIuaCIKKworLyoKKyAqIEFMQzU2MzIgcmVnaXN0ZXIg Y2FjaGUKKyAqLworc3RhdGljIGNvbnN0IHUxNiBhbGM1NjMyX3JlZ19kZWZhdWx0c1tdID0gewor CTB4NTlCNCwgMHgwMDAwLCAweDgwODAsIDB4MDAwMCwgLyogMCAqLworCTB4ODA4MCwgMHgwMDAw LCAweDgwODAsIDB4MDAwMCwgLyogNCAqLworCTB4QzgwMCwgMHgwMDAwLCAweEU4MDgsIDB4MDAw MCwgLyogOCAqLworCTB4MTAxMCwgMHgwMDAwLCAweDA4MDgsIDB4MDAwMCwgLyogMTIgKi8KKwkw eEVFMEYsIDB4MDAwMCwgMHhDQkNCLCAweDAwMDAsIC8qIDE2ICovCisJMHg3RjdGLCAweDAwMDAs IDB4MDAwMCwgMHgwMDAwLCAvKiAyMCAqLworCTB4RTAxMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAw MCwgLyogMjQgKi8KKwkweDgwMDgsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIC8qIDI4ICovCisJ MHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAvKiAzMiAqLworCTB4MDBDMCwgMHgwMDAw LCAweEVGMDAsIDB4MDAwMCwgLyogMzYgKi8KKwkweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAw MDAsIC8qIDQwICovCisJMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAvKiA0NCAqLwor CTB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgLyogNDggKi8KKwkweDgwMDAsIDB4MDAw MCwgMHgwMDAwLCAweDAwMDAsIC8qIDUyICovCisJMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgw MDAwLCAvKiA1NiAqLworCTB4MDAwMCwgMHgwMDAwLCAweDgwMDAsIDB4MDAwMCwgLyogNjAgKi8K KwkweDBDMEEsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIC8qIDY0ICovCisJMHgwMDAwLCAweDAw MDAsIDB4MDAwMCwgMHgwMDAwLCAvKiA2OCAqLworCTB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4 MDAwMCwgLyogNzIgKi8KKwkweEJFM0UsIDB4MDAwMCwgMHhCRTNFLCAweDAwMDAsIC8qIDc2ICov CisJMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAvKiA4MCAqLworCTB4ODAzQSwgMHgw MDAwLCAweDAwMDAsIDB4MDAwMCwgLyogODQgKi8KKwkweDAwMDAsIDB4MDAwMCwgMHgwMDA5LCAw eDAwMDAsIC8qIDg4ICovCisJMHgwMDAwLCAweDAwMDAsIDB4MzAwMCwgMHgwMDAwLCAvKiA5MiAq LworCTB4MzA3NSwgMHgwMDAwLCAweDEwMTAsIDB4MDAwMCwgLyogOTYgKi8KKwkweDMxMTAsIDB4 MDAwMCwgMHgwMDAwLCAweDAwMDAsIC8qIDEwMCAqLworCTB4MDU1MywgMHgwMDAwLCAweDAwMDAs IDB4MDAwMCwgLyogMTA0ICovCisJMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAvKiAx MDggKi8KK307CisKKy8qIGNvZGVjIHByaXZhdGUgZGF0YSAqLworc3RydWN0IGFsYzU2MzJfcHJp diB7CisJZW51bSBzbmRfc29jX2NvbnRyb2xfdHlwZSBjb250cm9sX3R5cGU7CisJdm9pZCAqY29u dHJvbF9kYXRhOworCXN0cnVjdCBtdXRleCBtdXRleDsKKwl1OCBpZDsKKwl1bnNpZ25lZCBpbnQg c3lzY2xrOworfTsKKworc3RhdGljIGludCBhbGM1NjMyX3ZvbGF0aWxlX3JlZ2lzdGVyKHN0cnVj dCBzbmRfc29jX2NvZGVjICpjb2RlYywKKwkJCQkJCQl1bnNpZ25lZCBpbnQgcmVnKQoreworCXN3 aXRjaCAocmVnKSB7CisJY2FzZSBBTEM1NjMyX1JFU0VUOgorCWNhc2UgQUxDNTYzMl9QV1JfRE9X Tl9DVFJMX1NUQVRVUzoKKwljYXNlIEFMQzU2MzJfR1BJT19QSU5fU1RBVFVTOgorCWNhc2UgQUxD NTYzMl9PVkVSX0NVUlJfU1RBVFVTOgorCWNhc2UgQUxDNTYzMl9ISURfQ1RSTF9EQVRBOgorCWNh c2UgQUxDNTYzMl9FUV9DVFJMOgorCQlyZXR1cm4gMTsKKworCWRlZmF1bHQ6CisJCWJyZWFrOwor CX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGludCBhbGM1NjMyX3Jlc2V0KHN0 cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYykKK3sKKwlzbmRfc29jX3dyaXRlKGNvZGVjLCBBTEM1 NjMyX1JFU0VULCAwKTsKKwlyZXR1cm4gc25kX3NvY19yZWFkKGNvZGVjLCBBTEM1NjMyX1JFU0VU KTsKK30KKworc3RhdGljIGludCBhbXBfbWl4ZXJfZXZlbnQoc3RydWN0IHNuZF9zb2NfZGFwbV93 aWRnZXQgKncsCisJc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsIGludCBldmVudCkKK3sK KwkvKiB0byBwb3dlci1vbi9vZmYgY2xhc3MtZCBhbXAgZ2VuZXJhdG9ycy9zcGVha2VyICovCisJ LyogbmVlZCB0byB3cml0ZSB0byAnaW5kZXgtNDZoJyByZWdpc3RlciA6ICAgICAgICAqLworCS8q IHNvIHdyaXRlIGluZGV4IG51bSAoaGVyZSAweDQ2KSB0byByZWcgMHg2YSAgICAgKi8KKwkvKiBh bmQgdGhlbiAweGZmZmYvMCB0byByZWcgMHg2YyAgICAgICAgICAgICAgICAgICovCisJc25kX3Nv Y193cml0ZSh3LT5jb2RlYywgQUxDNTYzMl9ISURfQ1RSTF9JTkRFWCwgMHg0Nik7CisKKwlzd2l0 Y2ggKGV2ZW50KSB7CisJY2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNVToKKwkJc25kX3NvY193cml0 ZSh3LT5jb2RlYywgQUxDNTYzMl9ISURfQ1RSTF9EQVRBLCAweEZGRkYpOworCQlicmVhazsKKwlj YXNlIFNORF9TT0NfREFQTV9QT1NUX1BNRDoKKwkJc25kX3NvY193cml0ZSh3LT5jb2RlYywgQUxD NTYzMl9ISURfQ1RSTF9EQVRBLCAwKTsKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIDA7Cit9CisK Ky8qCisgKiBBTEM1NjMyIENvbnRyb2xzCisgKi8KKworLyogLTM0LjVkYiBtaW4gc2NhbGUsIDEu NWRiIHN0ZXBzLCBubyBtdXRlICovCitzdGF0aWMgY29uc3QgREVDTEFSRV9UTFZfREJfU0NBTEUo dm9sX3RsdiwgLTM0NTAsIDE1MCwgMCk7CisvKiAtNDYuNWRiIG1pbiBzY2FsZSwgMS41ZGIgc3Rl cHMsIG5vIG11dGUgKi8KK3N0YXRpYyBjb25zdCBERUNMQVJFX1RMVl9EQl9TQ0FMRShocF90bHYs IC00NjUwLCAxNTAsIDApOworLyogLTE2LjVkYiBtaW4gc2NhbGUsIDEuNWRiIHN0ZXBzLCBubyBt dXRlICovCitzdGF0aWMgY29uc3QgREVDTEFSRV9UTFZfREJfU0NBTEUoYWRjX3JlY190bHYsIC0x NjUwLCAxNTAsIDApOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBib29zdF90bHZbXSA9IHsK KwlUTFZfREJfUkFOR0VfSEVBRCgzKSwKKwkwLCAwLCBUTFZfREJfU0NBTEVfSVRFTSgwLCAwLCAw KSwKKwkxLCAxLCBUTFZfREJfU0NBTEVfSVRFTSgyMDAwLCAwLCAwKSwKKwkyLCAyLCBUTFZfREJf U0NBTEVfSVRFTSgzMDAwLCAwLCAwKSwKK307CisvKiAwZGIgbWluIHNjYWxlLCA2IGRiIHN0ZXBz LCBubyBtdXRlICovCitzdGF0aWMgY29uc3QgREVDTEFSRV9UTFZfREJfU0NBTEUoZGlnX3Rsdiwg MCwgNjAwLCAwKTsKKy8qIDBkYiBtaW4gc2NhbGVtIDAuNzVkYiBzdGVwcywgbm8gbXV0ZSAqLwor c3RhdGljIGNvbnN0IERFQ0xBUkVfVExWX0RCX1NDQUxFKHZkYWNfdGx2LCAtMzUyNSwgMDc1LCAw KTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGFsYzU2MzJfdm9sX3Nu ZF9jb250cm9sc1tdID0geworCS8qIGxlZnQgc3RhcnRzIGF0IGJpdCA4LCByaWdodCBhdCBiaXQg MCAqLworCS8qIDMxIHN0ZXBzICg1IGJpdCksIC00Ni41ZGIgc2NhbGUgKi8KKwlTT0NfRE9VQkxF X1RMVigiTGluZSBQbGF5YmFjayBWb2x1bWUiLAorCQkJQUxDNTYzMl9TUEtfT1VUX1ZPTCwgOCwg MCwgMzEsIDEsIGhwX3RsdiksCisJLyogYml0IDE1IG11dGVzIGxlZnQsIGJpdCA3IHJpZ2h0ICov CisJU09DX0RPVUJMRSgiTGluZSBQbGF5YmFjayBTd2l0Y2giLAorCQkJQUxDNTYzMl9TUEtfT1VU X1ZPTCwgMTUsIDcsIDEsIDEpLAorCVNPQ19ET1VCTEVfVExWKCJIZWFkcGhvbmUgUGxheWJhY2sg Vm9sdW1lIiwKKwkJCUFMQzU2MzJfSFBfT1VUX1ZPTCwgOCwgMCwgMzEsIDEsIGhwX3RsdiksCisJ U09DX0RPVUJMRSgiSGVhZHBob25lIFBsYXliYWNrIFN3aXRjaCIsCisJCQlBTEM1NjMyX0hQX09V VF9WT0wsIDE1LCA3LCAxLCAxKSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250 cm9sX25ldyBhbGM1NjMyX3NuZF9jb250cm9sc1tdID0geworCVNPQ19ET1VCTEVfVExWKCJBdXhv dXQgUGxheWJhY2sgVm9sdW1lIiwKKwkJCUFMQzU2MzJfQVVYX09VVF9WT0wsIDgsIDAsIDMxLCAx LCBocF90bHYpLAorCVNPQ19ET1VCTEUoIkF1eG91dCBQbGF5YmFjayBTd2l0Y2giLAorCQkJQUxD NTYzMl9BVVhfT1VUX1ZPTCwgMTUsIDcsIDEsIDEpLAorCVNPQ19TSU5HTEVfVExWKCJWb2ljZSBE QUMgUGxheWJhY2sgVm9sdW1lIiwKKwkJCUFMQzU2MzJfVk9JQ0VfREFDX1ZPTCwgMCwgNjMsIDAs IHZkYWNfdGx2KSwKKwlTT0NfU0lOR0xFX1RMVigiUGhvbmUgQ2FwdHVyZSBWb2x1bWUiLAorCQkJ QUxDNTYzMl9QSE9ORV9JTl9WT0wsIDgsIDMxLCAxLCB2b2xfdGx2KSwKKwlTT0NfRE9VQkxFX1RM VigiTGluZUluIENhcHR1cmUgVm9sdW1lIiwKKwkJCUFMQzU2MzJfTElORV9JTl9WT0wsIDgsIDAs IDMxLCAxLCB2b2xfdGx2KSwKKwlTT0NfRE9VQkxFX1RMVigiU3RlcmVvIERBQyBQbGF5YmFjayBW b2x1bWUiLAorCQkJQUxDNTYzMl9TVEVSRU9fREFDX0lOX1ZPTCwgOCwgMCwgNjMsIDEsIHZkYWNf dGx2KSwKKwlTT0NfRE9VQkxFKCJTdGVyZW8gREFDIFBsYXliYWNrIFN3aXRjaCIsCisJCQlBTEM1 NjMyX1NURVJFT19EQUNfSU5fVk9MLCAxNSwgNywgMSwgMSksCisJU09DX1NJTkdMRV9UTFYoIk1p YzEgQ2FwdHVyZSBWb2x1bWUiLAorCQkJQUxDNTYzMl9NSUNfVk9MLCA4LCAzMSwgMSwgdm9sX3Rs diksCisJU09DX1NJTkdMRV9UTFYoIk1pYzIgQ2FwdHVyZSBWb2x1bWUiLAorCQkJQUxDNTYzMl9N SUNfVk9MLCAwLCAzMSwgMSwgdm9sX3RsdiksCisJU09DX0RPVUJMRV9UTFYoIlJlYyBDYXB0dXJl IFZvbHVtZSIsCisJCQlBTEM1NjMyX0FEQ19SRUNfR0FJTiwgOCwgMCwgMzEsIDAsIGFkY19yZWNf dGx2KSwKKwlTT0NfU0lOR0xFX1RMVigiTWljIDEgQm9vc3QgVm9sdW1lIiwKKwkJCUFMQzU2MzJf TUlDX0NUUkwsIDEwLCAyLCAwLCBib29zdF90bHYpLAorCVNPQ19TSU5HTEVfVExWKCJNaWMgMiBC b29zdCBWb2x1bWUiLAorCQkJQUxDNTYzMl9NSUNfQ1RSTCwgOCwgMiwgMCwgYm9vc3RfdGx2KSwK KwlTT0NfU0lOR0xFX1RMVigiRGlnaXRhbCBCb29zdCBWb2x1bWUiLAorCQkJQUxDNTYzMl9ESUdJ X0JPT1NUX0NUUkwsIDAsIDcsIDAsIGRpZ190bHYpLAorfTsKKworLyoKKyAqIERBUE0gQ29udHJv bHMKKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGFsYzU2MzJfaHBf bWl4ZXJfY29udHJvbHNbXSA9IHsKK1NPQ19EQVBNX1NJTkdMRSgiTEkySFAgUGxheWJhY2sgU3dp dGNoIiwgQUxDNTYzMl9MSU5FX0lOX1ZPTCwgMTUsIDEsIDEpLAorU09DX0RBUE1fU0lOR0xFKCJQ SE9ORTJIUCBQbGF5YmFjayBTd2l0Y2giLCBBTEM1NjMyX1BIT05FX0lOX1ZPTCwgMTUsIDEsIDEp LAorU09DX0RBUE1fU0lOR0xFKCJNSUMxMkhQIFBsYXliYWNrIFN3aXRjaCIsIEFMQzU2MzJfTUlD X1JPVVRJTkdfQ1RSTCwgMTUsIDEsIDEpLAorU09DX0RBUE1fU0lOR0xFKCJNSUMyMkhQIFBsYXli YWNrIFN3aXRjaCIsIEFMQzU2MzJfTUlDX1JPVVRJTkdfQ1RSTCwgMTEsIDEsIDEpLAorU09DX0RB UE1fU0lOR0xFKCJWT0lDRTJIUCBQbGF5YmFjayBTd2l0Y2giLCBBTEM1NjMyX1ZPSUNFX0RBQ19W T0wsIDE1LCAxLCAxKSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25l dyBhbGM1NjMyX2hwbF9taXhlcl9jb250cm9sc1tdID0geworU09DX0RBUE1fU0lOR0xFKCJBREMy SFBfTCBQbGF5YmFjayBTd2l0Y2giLCBBTEM1NjMyX0FEQ19SRUNfR0FJTiwgMTUsIDEsIDEpLAor U09DX0RBUE1fU0lOR0xFKCJEQUNMMkhQIFBsYXliYWNrIFN3aXRjaCIsIEFMQzU2MzJfTUlDX1JP VVRJTkdfQ1RSTCwgMywgMSwgMSksCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29u dHJvbF9uZXcgYWxjNTYzMl9ocHJfbWl4ZXJfY29udHJvbHNbXSA9IHsKK1NPQ19EQVBNX1NJTkdM RSgiQURDMkhQX1IgUGxheWJhY2sgU3dpdGNoIiwgQUxDNTYzMl9BRENfUkVDX0dBSU4sIDcsIDEs IDEpLAorU09DX0RBUE1fU0lOR0xFKCJEQUNSMkhQIFBsYXliYWNrIFN3aXRjaCIsIEFMQzU2MzJf TUlDX1JPVVRJTkdfQ1RSTCwgMiwgMSwgMSksCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNu ZF9rY29udHJvbF9uZXcgYWxjNTYzMl9tb25vX21peGVyX2NvbnRyb2xzW10gPSB7CitTT0NfREFQ TV9TSU5HTEUoIkFEQzJNT05PX0wgUGxheWJhY2sgU3dpdGNoIiwgQUxDNTYzMl9BRENfUkVDX0dB SU4sIDE0LCAxLCAxKSwKK1NPQ19EQVBNX1NJTkdMRSgiQURDMk1PTk9fUiBQbGF5YmFjayBTd2l0 Y2giLCBBTEM1NjMyX0FEQ19SRUNfR0FJTiwgNiwgMSwgMSksCitTT0NfREFQTV9TSU5HTEUoIkxJ Mk1PTk8gUGxheWJhY2sgU3dpdGNoIiwgQUxDNTYzMl9MSU5FX0lOX1ZPTCwgMTMsIDEsIDEpLAor U09DX0RBUE1fU0lOR0xFKCJNSUMxMk1PTk8gUGxheWJhY2sgU3dpdGNoIiwKKwkJCQkJQUxDNTYz Ml9NSUNfUk9VVElOR19DVFJMLCAxMywgMSwgMSksCitTT0NfREFQTV9TSU5HTEUoIk1JQzIyTU9O TyBQbGF5YmFjayBTd2l0Y2giLAorCQkJCQlBTEM1NjMyX01JQ19ST1VUSU5HX0NUUkwsIDksIDEs IDEpLAorU09DX0RBUE1fU0lOR0xFKCJEQUMyTU9OTyBQbGF5YmFjayBTd2l0Y2giLCBBTEM1NjMy X01JQ19ST1VUSU5HX0NUUkwsIDAsIDEsIDEpLAorU09DX0RBUE1fU0lOR0xFKCJWT0lDRTJNT05P IFBsYXliYWNrIFN3aXRjaCIsIEFMQzU2MzJfVk9JQ0VfREFDX1ZPTCwgMTMsIDEsIDEpLAorfTsK Kworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGFsYzU2MzJfc3BlYWtlcl9t aXhlcl9jb250cm9sc1tdID0geworU09DX0RBUE1fU0lOR0xFKCJMSTJTUEsgUGxheWJhY2sgU3dp dGNoIiwgQUxDNTYzMl9MSU5FX0lOX1ZPTCwgMTQsIDEsIDEpLAorU09DX0RBUE1fU0lOR0xFKCJQ SE9ORTJTUEsgUGxheWJhY2sgU3dpdGNoIiwgQUxDNTYzMl9QSE9ORV9JTl9WT0wsIDE0LCAxLCAx KSwKK1NPQ19EQVBNX1NJTkdMRSgiTUlDMTJTUEsgUGxheWJhY2sgU3dpdGNoIiwKKwkJCQkJQUxD NTYzMl9NSUNfUk9VVElOR19DVFJMLCAxNCwgMSwgMSksCitTT0NfREFQTV9TSU5HTEUoIk1JQzIy U1BLIFBsYXliYWNrIFN3aXRjaCIsCisJCQkJCUFMQzU2MzJfTUlDX1JPVVRJTkdfQ1RSTCwgMTAs IDEsIDEpLAorU09DX0RBUE1fU0lOR0xFKCJEQUMyU1BLIFBsYXliYWNrIFN3aXRjaCIsIEFMQzU2 MzJfTUlDX1JPVVRJTkdfQ1RSTCwgMSwgMSwgMSksCitTT0NfREFQTV9TSU5HTEUoIlZPSUNFMlNQ SyBQbGF5YmFjayBTd2l0Y2giLCBBTEM1NjMyX1ZPSUNFX0RBQ19WT0wsIDE0LCAxLCAxKSwKK307 CisKKy8qIExlZnQgUmVjb3JkIE1peGVyICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29u dHJvbF9uZXcgYWxjNTYzMl9jYXB0dXJlTF9taXhlcl9jb250cm9sc1tdID0geworU09DX0RBUE1f U0lOR0xFKCJNaWMxIENhcHR1cmUgU3dpdGNoIiwgQUxDNTYzMl9BRENfUkVDX01JWEVSLCAxNCwg MSwgMSksCitTT0NfREFQTV9TSU5HTEUoIk1pYzIgQ2FwdHVyZSBTd2l0Y2giLCBBTEM1NjMyX0FE Q19SRUNfTUlYRVIsIDEzLCAxLCAxKSwKK1NPQ19EQVBNX1NJTkdMRSgiTGluZUluTCBDYXB0dXJl IFN3aXRjaCIsIEFMQzU2MzJfQURDX1JFQ19NSVhFUiwgMTIsIDEsIDEpLAorU09DX0RBUE1fU0lO R0xFKCJMZWZ0IFBob25lIENhcHR1cmUgU3dpdGNoIiwgQUxDNTYzMl9BRENfUkVDX01JWEVSLCAx MSwgMSwgMSksCitTT0NfREFQTV9TSU5HTEUoIkhQTWl4ZXJMIENhcHR1cmUgU3dpdGNoIiwgQUxD NTYzMl9BRENfUkVDX01JWEVSLCAxMCwgMSwgMSksCitTT0NfREFQTV9TSU5HTEUoIlNQS01peGVy IENhcHR1cmUgU3dpdGNoIiwgQUxDNTYzMl9BRENfUkVDX01JWEVSLCA5LCAxLCAxKSwKK1NPQ19E QVBNX1NJTkdMRSgiTW9ub01peGVyIENhcHR1cmUgU3dpdGNoIiwgQUxDNTYzMl9BRENfUkVDX01J WEVSLCA4LCAxLCAxKSwKK307CisKKy8qIFJpZ2h0IFJlY29yZCBNaXhlciAqLworc3RhdGljIGNv bnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGFsYzU2MzJfY2FwdHVyZVJfbWl4ZXJfY29udHJv bHNbXSA9IHsKK1NPQ19EQVBNX1NJTkdMRSgiTWljMSBDYXB0dXJlIFN3aXRjaCIsIEFMQzU2MzJf QURDX1JFQ19NSVhFUiwgNiwgMSwgMSksCitTT0NfREFQTV9TSU5HTEUoIk1pYzIgQ2FwdHVyZSBT d2l0Y2giLCBBTEM1NjMyX0FEQ19SRUNfTUlYRVIsIDUsIDEsIDEpLAorU09DX0RBUE1fU0lOR0xF KCJMaW5lSW5SIENhcHR1cmUgU3dpdGNoIiwgQUxDNTYzMl9BRENfUkVDX01JWEVSLCA0LCAxLCAx KSwKK1NPQ19EQVBNX1NJTkdMRSgiUmlnaHQgUGhvbmUgQ2FwdHVyZSBTd2l0Y2giLCBBTEM1NjMy X0FEQ19SRUNfTUlYRVIsIDMsIDEsIDEpLAorU09DX0RBUE1fU0lOR0xFKCJIUE1peGVyUiBDYXB0 dXJlIFN3aXRjaCIsIEFMQzU2MzJfQURDX1JFQ19NSVhFUiwgMiwgMSwgMSksCitTT0NfREFQTV9T SU5HTEUoIlNQS01peGVyIENhcHR1cmUgU3dpdGNoIiwgQUxDNTYzMl9BRENfUkVDX01JWEVSLCAx LCAxLCAxKSwKK1NPQ19EQVBNX1NJTkdMRSgiTW9ub01peGVyIENhcHR1cmUgU3dpdGNoIiwgQUxD NTYzMl9BRENfUkVDX01JWEVSLCAwLCAxLCAxKSwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICph bGM1NjMyX3Nwa19uX3NvdXJfc2VsW10gPSB7CisJCSJSTi8tUiIsICJSUC8rUiIsICJMTi8tUiIs ICJNdXRlIn07CitzdGF0aWMgY29uc3QgY2hhciAqYWxjNTYzMl9ocGxfb3V0X2lucHV0X3NlbFtd ID0geworCQkiVm1pZCIsICJIUCBMZWZ0IE1peCJ9Oworc3RhdGljIGNvbnN0IGNoYXIgKmFsYzU2 MzJfaHByX291dF9pbnB1dF9zZWxbXSA9IHsKKwkJIlZtaWQiLCAiSFAgUmlnaHQgTWl4In07Citz dGF0aWMgY29uc3QgY2hhciAqYWxjNTYzMl9zcGtvdXRfaW5wdXRfc2VsW10gPSB7CisJCSJWbWlk IiwgIkhQT3V0IE1peCIsICJTcGVha2VyIE1peCIsICJNb25vIE1peCJ9Oworc3RhdGljIGNvbnN0 IGNoYXIgKmFsYzU2MzJfYXV4X291dF9pbnB1dF9zZWxbXSA9IHsKKwkJIlZtaWQiLCAiSFBPdXQg TWl4IiwgIlNwZWFrZXIgTWl4IiwgIk1vbm8gTWl4In07CisKKy8qIGF1eG91dCBvdXRwdXQgbXV4 ICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHNvY19lbnVtIGFsYzU2MzJfYXV4X291dF9pbnB1dF9l bnVtID0KK1NPQ19FTlVNX1NJTkdMRShBTEM1NjMyX09VVFBVVF9NSVhFUl9DVFJMLCA2LCA0LCBh bGM1NjMyX2F1eF9vdXRfaW5wdXRfc2VsKTsKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250 cm9sX25ldyBhbGM1NjMyX2F1eG91dF9tdXhfY29udHJvbHMgPQorU09DX0RBUE1fRU5VTSgiQXV4 T3V0IE11eCIsIGFsYzU2MzJfYXV4X291dF9pbnB1dF9lbnVtKTsKKworLyogc3BlYWtlciBvdXRw dXQgbXV4ICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHNvY19lbnVtIGFsYzU2MzJfc3Brb3V0X2lu cHV0X2VudW0gPQorU09DX0VOVU1fU0lOR0xFKEFMQzU2MzJfT1VUUFVUX01JWEVSX0NUUkwsIDEw LCA0LCBhbGM1NjMyX3Nwa291dF9pbnB1dF9zZWwpOworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRf a2NvbnRyb2xfbmV3IGFsYzU2MzJfc3Brb3V0X211eF9jb250cm9scyA9CitTT0NfREFQTV9FTlVN KCJTcGVha2VyT3V0IE11eCIsIGFsYzU2MzJfc3Brb3V0X2lucHV0X2VudW0pOworCisvKiBoZWFk cGhvbmUgbGVmdCBvdXRwdXQgbXV4ICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHNvY19lbnVtIGFs YzU2MzJfaHBsX291dF9pbnB1dF9lbnVtID0KK1NPQ19FTlVNX1NJTkdMRShBTEM1NjMyX09VVFBV VF9NSVhFUl9DVFJMLCA5LCAyLCBhbGM1NjMyX2hwbF9vdXRfaW5wdXRfc2VsKTsKK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBhbGM1NjMyX2hwbF9vdXRfbXV4X2NvbnRyb2xz ID0KK1NPQ19EQVBNX0VOVU0oIkxlZnQgSGVhZHBob25lIE11eCIsIGFsYzU2MzJfaHBsX291dF9p bnB1dF9lbnVtKTsKKworLyogaGVhZHBob25lIHJpZ2h0IG91dHB1dCBtdXggKi8KK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc29jX2VudW0gYWxjNTYzMl9ocHJfb3V0X2lucHV0X2VudW0gPQorU09DX0VO VU1fU0lOR0xFKEFMQzU2MzJfT1VUUFVUX01JWEVSX0NUUkwsIDgsIDIsIGFsYzU2MzJfaHByX291 dF9pbnB1dF9zZWwpOworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGFsYzU2 MzJfaHByX291dF9tdXhfY29udHJvbHMgPQorU09DX0RBUE1fRU5VTSgiUmlnaHQgSGVhZHBob25l IE11eCIsIGFsYzU2MzJfaHByX291dF9pbnB1dF9lbnVtKTsKKworLyogc3BlYWtlciBvdXRwdXQg TiBzZWxlY3QgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc29jX2VudW0gYWxjNTYzMl9zcGtfbl9z b3VyX2VudW0gPQorU09DX0VOVU1fU0lOR0xFKEFMQzU2MzJfT1VUUFVUX01JWEVSX0NUUkwsIDE0 LCA0LCBhbGM1NjMyX3Nwa19uX3NvdXJfc2VsKTsKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tj b250cm9sX25ldyBhbGM1NjMyX3Nwa291dG5fbXV4X2NvbnRyb2xzID0KK1NPQ19EQVBNX0VOVU0o IlNwZWFrZXJPdXQgTiBNdXgiLCBhbGM1NjMyX3Nwa19uX3NvdXJfZW51bSk7CisKKy8qIHNwZWFr ZXIgYW1wbGlmaWVyICovCitzdGF0aWMgY29uc3QgY2hhciAqYWxjNTYzMl9hbXBfbmFtZXNbXSA9 IHsiQUIgQW1wIiwgIkQgQW1wIn07CitzdGF0aWMgY29uc3Qgc3RydWN0IHNvY19lbnVtIGFsYzU2 MzJfYW1wX2VudW0gPQorCVNPQ19FTlVNX1NJTkdMRShBTEM1NjMyX09VVFBVVF9NSVhFUl9DVFJM LCAxMywgMiwgYWxjNTYzMl9hbXBfbmFtZXMpOworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2Nv bnRyb2xfbmV3IGFsYzU2MzJfYW1wX211eF9jb250cm9scyA9CisJU09DX0RBUE1fRU5VTSgiQUIt RCBBbXAgTXV4IiwgYWxjNTYzMl9hbXBfZW51bSk7CisKKworc3RhdGljIGNvbnN0IHN0cnVjdCBz bmRfc29jX2RhcG1fd2lkZ2V0IGFsYzU2MzJfZGFwbV93aWRnZXRzW10gPSB7CisvKiBNdXhlcyAq LworU05EX1NPQ19EQVBNX01VWCgiQXV4T3V0IE11eCIsIFNORF9TT0NfTk9QTSwgMCwgMCwKKwkm YWxjNTYzMl9hdXhvdXRfbXV4X2NvbnRyb2xzKSwKK1NORF9TT0NfREFQTV9NVVgoIlNwZWFrZXJP dXQgTXV4IiwgU05EX1NPQ19OT1BNLCAwLCAwLAorCSZhbGM1NjMyX3Nwa291dF9tdXhfY29udHJv bHMpLAorU05EX1NPQ19EQVBNX01VWCgiTGVmdCBIZWFkcGhvbmUgTXV4IiwgU05EX1NPQ19OT1BN LCAwLCAwLAorCSZhbGM1NjMyX2hwbF9vdXRfbXV4X2NvbnRyb2xzKSwKK1NORF9TT0NfREFQTV9N VVgoIlJpZ2h0IEhlYWRwaG9uZSBNdXgiLCBTTkRfU09DX05PUE0sIDAsIDAsCisJJmFsYzU2MzJf aHByX291dF9tdXhfY29udHJvbHMpLAorU05EX1NPQ19EQVBNX01VWCgiU3BlYWtlck91dCBOIE11 eCIsIFNORF9TT0NfTk9QTSwgMCwgMCwKKwkmYWxjNTYzMl9zcGtvdXRuX211eF9jb250cm9scyks CisKKy8qIG91dHB1dCBtaXhlcnMgKi8KK1NORF9TT0NfREFQTV9NSVhFUigiSFAgTWl4IiwgU05E X1NPQ19OT1BNLCAwLCAwLAorCSZhbGM1NjMyX2hwX21peGVyX2NvbnRyb2xzWzBdLAorCUFSUkFZ X1NJWkUoYWxjNTYzMl9ocF9taXhlcl9jb250cm9scykpLAorU05EX1NPQ19EQVBNX01JWEVSKCJI UFIgTWl4IiwgQUxDNTYzMl9QV1JfTUFOQUdfQUREMiwgNCwgMCwKKwkmYWxjNTYzMl9ocHJfbWl4 ZXJfY29udHJvbHNbMF0sCisJQVJSQVlfU0laRShhbGM1NjMyX2hwcl9taXhlcl9jb250cm9scykp LAorU05EX1NPQ19EQVBNX01JWEVSKCJIUEwgTWl4IiwgQUxDNTYzMl9QV1JfTUFOQUdfQUREMiwg NSwgMCwKKwkmYWxjNTYzMl9ocGxfbWl4ZXJfY29udHJvbHNbMF0sCisJQVJSQVlfU0laRShhbGM1 NjMyX2hwbF9taXhlcl9jb250cm9scykpLAorU05EX1NPQ19EQVBNX01JWEVSKCJIUE91dCBNaXgi LCBTTkRfU09DX05PUE0sIDAsIDAsIE5VTEwsIDApLAorU05EX1NPQ19EQVBNX01JWEVSKCJNb25v IE1peCIsIEFMQzU2MzJfUFdSX01BTkFHX0FERDIsIDIsIDAsCisJJmFsYzU2MzJfbW9ub19taXhl cl9jb250cm9sc1swXSwKKwlBUlJBWV9TSVpFKGFsYzU2MzJfbW9ub19taXhlcl9jb250cm9scykp LAorU05EX1NPQ19EQVBNX01JWEVSKCJTcGVha2VyIE1peCIsIEFMQzU2MzJfUFdSX01BTkFHX0FE RDIsIDMsIDAsCisJJmFsYzU2MzJfc3BlYWtlcl9taXhlcl9jb250cm9sc1swXSwKKwlBUlJBWV9T SVpFKGFsYzU2MzJfc3BlYWtlcl9taXhlcl9jb250cm9scykpLAorCisvKiBpbnB1dCBtaXhlcnMg Ki8KK1NORF9TT0NfREFQTV9NSVhFUigiTGVmdCBDYXB0dXJlIE1peCIsIEFMQzU2MzJfUFdSX01B TkFHX0FERDIsIDEsIDAsCisJJmFsYzU2MzJfY2FwdHVyZUxfbWl4ZXJfY29udHJvbHNbMF0sCisJ QVJSQVlfU0laRShhbGM1NjMyX2NhcHR1cmVMX21peGVyX2NvbnRyb2xzKSksCitTTkRfU09DX0RB UE1fTUlYRVIoIlJpZ2h0IENhcHR1cmUgTWl4IiwgQUxDNTYzMl9QV1JfTUFOQUdfQUREMiwgMCwg MCwKKwkmYWxjNTYzMl9jYXB0dXJlUl9taXhlcl9jb250cm9sc1swXSwKKwlBUlJBWV9TSVpFKGFs YzU2MzJfY2FwdHVyZVJfbWl4ZXJfY29udHJvbHMpKSwKKworU05EX1NPQ19EQVBNX0RBQygiTGVm dCBEQUMiLCAiSGlGaSBQbGF5YmFjayIsCisJQUxDNTYzMl9QV1JfTUFOQUdfQUREMiwgOSwgMCks CitTTkRfU09DX0RBUE1fREFDKCJSaWdodCBEQUMiLCAiSGlGaSBQbGF5YmFjayIsCisJQUxDNTYz Ml9QV1JfTUFOQUdfQUREMiwgOCwgMCksCitTTkRfU09DX0RBUE1fTUlYRVIoIkRBQyBMZWZ0IENo YW5uZWwiLCBBTEM1NjMyX1BXUl9NQU5BR19BREQxLCAxNSwgMCwgTlVMTCwgMCksCitTTkRfU09D X0RBUE1fTUlYRVIoIkRBQyBSaWdodCBDaGFubmVsIiwKKwlBTEM1NjMyX1BXUl9NQU5BR19BREQx LCAxNCwgMCwgTlVMTCwgMCksCitTTkRfU09DX0RBUE1fTUlYRVIoIkkyUyBNaXgiLCBBTEM1NjMy X1BXUl9NQU5BR19BREQxLCAxMSwgMCwgTlVMTCwgMCksCitTTkRfU09DX0RBUE1fTUlYRVIoIlBo b25lIE1peCIsIFNORF9TT0NfTk9QTSwgMCwgMCwgTlVMTCwgMCksCitTTkRfU09DX0RBUE1fTUlY RVIoIkxpbmUgTWl4IiwgU05EX1NPQ19OT1BNLCAwLCAwLCBOVUxMLCAwKSwKK1NORF9TT0NfREFQ TV9BREMoIkxlZnQgQURDIiwgIkhpRmkgQ2FwdHVyZSIsCisJQUxDNTYzMl9QV1JfTUFOQUdfQURE MiwgNywgMCksCitTTkRfU09DX0RBUE1fQURDKCJSaWdodCBBREMiLCAiSGlGaSBDYXB0dXJlIiwK KwlBTEM1NjMyX1BXUl9NQU5BR19BREQyLCA2LCAwKSwKK1NORF9TT0NfREFQTV9QR0EoIkxlZnQg SGVhZHBob25lIiwgQUxDNTYzMl9QV1JfTUFOQUdfQUREMywgMTEsIDAsIE5VTEwsIDApLAorU05E X1NPQ19EQVBNX1BHQSgiUmlnaHQgSGVhZHBob25lIiwgQUxDNTYzMl9QV1JfTUFOQUdfQUREMywg MTAsIDAsIE5VTEwsIDApLAorU05EX1NPQ19EQVBNX1BHQSgiTGVmdCBTcGVha2VyIiwgQUxDNTYz Ml9QV1JfTUFOQUdfQUREMywgMTMsIDAsIE5VTEwsIDApLAorU05EX1NPQ19EQVBNX1BHQSgiUmln aHQgU3BlYWtlciIsIEFMQzU2MzJfUFdSX01BTkFHX0FERDMsIDEyLCAwLCBOVUxMLCAwKSwKK1NO RF9TT0NfREFQTV9QR0EoIkF1eCBPdXQiLCBBTEM1NjMyX1BXUl9NQU5BR19BREQzLCAxNCwgMCwg TlVMTCwgMCksCitTTkRfU09DX0RBUE1fUEdBKCJMZWZ0IExpbmVJbiIsIEFMQzU2MzJfUFdSX01B TkFHX0FERDMsIDcsIDAsIE5VTEwsIDApLAorU05EX1NPQ19EQVBNX1BHQSgiUmlnaHQgTGluZUlu IiwgQUxDNTYzMl9QV1JfTUFOQUdfQUREMywgNiwgMCwgTlVMTCwgMCksCitTTkRfU09DX0RBUE1f UEdBKCJQaG9uZSIsIEFMQzU2MzJfUFdSX01BTkFHX0FERDMsIDUsIDAsIE5VTEwsIDApLAorU05E X1NPQ19EQVBNX1BHQSgiUGhvbmUgQURNaXgiLCBBTEM1NjMyX1BXUl9NQU5BR19BREQzLCA0LCAw LCBOVUxMLCAwKSwKK1NORF9TT0NfREFQTV9QR0EoIk1JQzEgUEdBIiwgQUxDNTYzMl9QV1JfTUFO QUdfQUREMywgMywgMCwgTlVMTCwgMCksCitTTkRfU09DX0RBUE1fUEdBKCJNSUMyIFBHQSIsIEFM QzU2MzJfUFdSX01BTkFHX0FERDMsIDIsIDAsIE5VTEwsIDApLAorU05EX1NPQ19EQVBNX1BHQSgi TUlDMSBQcmUgQW1wIiwgQUxDNTYzMl9QV1JfTUFOQUdfQUREMywgMSwgMCwgTlVMTCwgMCksCitT TkRfU09DX0RBUE1fUEdBKCJNSUMyIFByZSBBbXAiLCBBTEM1NjMyX1BXUl9NQU5BR19BREQzLCAw LCAwLCBOVUxMLCAwKSwKK1NORF9TT0NfREFQTV9TVVBQTFkoIk1pYyBCaWFzMSIsIEFMQzU2MzJf UFdSX01BTkFHX0FERDEsIDMsIDAsIE5VTEwsIDApLAorU05EX1NPQ19EQVBNX1NVUFBMWSgiTWlj IEJpYXMyIiwgQUxDNTYzMl9QV1JfTUFOQUdfQUREMSwgMiwgMCwgTlVMTCwgMCksCisKK1NORF9T T0NfREFQTV9QR0FfRSgiRCBBbXAiLCBBTEM1NjMyX1BXUl9NQU5BR19BREQyLCAxNCwgMCwgTlVM TCwgMCwKKwlhbXBfbWl4ZXJfZXZlbnQsIFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19E QVBNX1BPU1RfUE1EKSwKK1NORF9TT0NfREFQTV9QR0EoIkFCIEFtcCIsIEFMQzU2MzJfUFdSX01B TkFHX0FERDIsIDE1LCAwLCBOVUxMLCAwKSwKK1NORF9TT0NfREFQTV9NVVgoIkFCLUQgQW1wIE11 eCIsIEFMQzU2MzJfUFdSX01BTkFHX0FERDEsIDEwLCAwLAorCSZhbGM1NjMyX2FtcF9tdXhfY29u dHJvbHMpLAorCitTTkRfU09DX0RBUE1fT1VUUFVUKCJBVVhPVVQiKSwKK1NORF9TT0NfREFQTV9P VVRQVVQoIkhQTCIpLAorU05EX1NPQ19EQVBNX09VVFBVVCgiSFBSIiksCitTTkRfU09DX0RBUE1f T1VUUFVUKCJTUEtPVVQiKSwKK1NORF9TT0NfREFQTV9PVVRQVVQoIlNQS09VVE4iKSwKK1NORF9T T0NfREFQTV9JTlBVVCgiTElORUlOTCIpLAorU05EX1NPQ19EQVBNX0lOUFVUKCJMSU5FSU5SIiks CitTTkRfU09DX0RBUE1fSU5QVVQoIlBIT05FUCIpLAorU05EX1NPQ19EQVBNX0lOUFVUKCJQSE9O RU4iKSwKK1NORF9TT0NfREFQTV9JTlBVVCgiTUlDMSIpLAorU05EX1NPQ19EQVBNX0lOUFVUKCJN SUMyIiksCitTTkRfU09DX0RBUE1fVk1JRCgiVm1pZCIpLAorfTsKKworCitzdGF0aWMgY29uc3Qg c3RydWN0IHNuZF9zb2NfZGFwbV9yb3V0ZSBhbGM1NjMyX2RhcG1fcm91dGVzW10gPSB7CisJLyog dmlydHVhbCBtaXhlciAtIG1peGVzIGxlZnQgJiByaWdodCBjaGFubmVscyAqLworCXsiSTJTIE1p eCIsCU5VTEwsCSJMZWZ0IERBQyJ9LAorCXsiSTJTIE1peCIsCU5VTEwsCSJSaWdodCBEQUMifSwK Kwl7IkxpbmUgTWl4IiwJTlVMTCwJIlJpZ2h0IExpbmVJbiJ9LAorCXsiTGluZSBNaXgiLAlOVUxM LAkiTGVmdCBMaW5lSW4ifSwKKwl7IlBob25lIE1peCIsCU5VTEwsCSJQaG9uZSJ9LAorCXsiUGhv bmUgTWl4IiwJTlVMTCwJIlBob25lIEFETWl4In0sCisJeyJBVVhPVVQiLAkJTlVMTCwJIkF1eCBP dXQifSwKKworCS8qIERBQyAqLworCXsiREFDIFJpZ2h0IENoYW5uZWwiLAlOVUxMLAkiSTJTIE1p eCJ9LAorCXsiREFDIExlZnQgQ2hhbm5lbCIsCU5VTEwsICAgIkkyUyBNaXgifSwKKworCS8qIEhQ IG1peGVyICovCisJeyJIUEwgTWl4IiwJIkFEQzJIUF9MIFBsYXliYWNrIFN3aXRjaCIsCSJMZWZ0 IENhcHR1cmUgTWl4In0sCisJeyJIUEwgTWl4IiwgTlVMTCwJCQkJCSJIUCBNaXgifSwKKwl7IkhQ UiBNaXgiLCAiQURDMkhQX1IgUGxheWJhY2sgU3dpdGNoIiwJIlJpZ2h0IENhcHR1cmUgTWl4In0s CisJeyJIUFIgTWl4IiwgTlVMTCwJCQkJCSJIUCBNaXgifSwKKwl7IkhQIE1peCIsCSJMSTJIUCBQ bGF5YmFjayBTd2l0Y2giLAkiTGluZSBNaXgifSwKKwl7IkhQIE1peCIsCSJQSE9ORTJIUCBQbGF5 YmFjayBTd2l0Y2giLAkiUGhvbmUgTWl4In0sCisJeyJIUCBNaXgiLAkiTUlDMTJIUCBQbGF5YmFj ayBTd2l0Y2giLAkiTUlDMSBQR0EifSwKKwl7IkhQIE1peCIsCSJNSUMyMkhQIFBsYXliYWNrIFN3 aXRjaCIsCSJNSUMyIFBHQSJ9LAorCisJeyJIUFIgTWl4IiwgIkRBQ1IySFAgUGxheWJhY2sgU3dp dGNoIiwJIkRBQyBSaWdodCBDaGFubmVsIn0sCisJeyJIUEwgTWl4IiwgIkRBQ0wySFAgUGxheWJh Y2sgU3dpdGNoIiwJIkRBQyBMZWZ0IENoYW5uZWwifSwKKworCS8qIHNwZWFrZXIgbWl4ZXIgKi8K Kwl7IlNwZWFrZXIgTWl4IiwgIkxJMlNQSyBQbGF5YmFjayBTd2l0Y2giLAkiTGluZSBNaXgifSwK Kwl7IlNwZWFrZXIgTWl4IiwgIlBIT05FMlNQSyBQbGF5YmFjayBTd2l0Y2giLCAiUGhvbmUgTWl4 In0sCisJeyJTcGVha2VyIE1peCIsICJNSUMxMlNQSyBQbGF5YmFjayBTd2l0Y2giLAkiTUlDMSBQ R0EifSwKKwl7IlNwZWFrZXIgTWl4IiwgIk1JQzIyU1BLIFBsYXliYWNrIFN3aXRjaCIsCSJNSUMy IFBHQSJ9LAorCXsiU3BlYWtlciBNaXgiLCAiREFDMlNQSyBQbGF5YmFjayBTd2l0Y2giLAkiREFD IExlZnQgQ2hhbm5lbCJ9LAorCisKKworCS8qIG1vbm8gbWl4ZXIgKi8KKwl7Ik1vbm8gTWl4Iiwg IkFEQzJNT05PX0wgUGxheWJhY2sgU3dpdGNoIiwJIkxlZnQgQ2FwdHVyZSBNaXgifSwKKwl7Ik1v bm8gTWl4IiwgIkFEQzJNT05PX1IgUGxheWJhY2sgU3dpdGNoIiwJIlJpZ2h0IENhcHR1cmUgTWl4 In0sCisJeyJNb25vIE1peCIsICJMSTJNT05PIFBsYXliYWNrIFN3aXRjaCIsCQkiTGluZSBNaXgi fSwKKwl7Ik1vbm8gTWl4IiwgIlZPSUNFMk1PTk8gUGxheWJhY2sgU3dpdGNoIiwJIlBob25lIE1p eCJ9LAorCXsiTW9ubyBNaXgiLCAiTUlDMTJNT05PIFBsYXliYWNrIFN3aXRjaCIsCSJNSUMxIFBH QSJ9LAorCXsiTW9ubyBNaXgiLCAiTUlDMjJNT05PIFBsYXliYWNrIFN3aXRjaCIsCSJNSUMyIFBH QSJ9LAorCXsiTW9ubyBNaXgiLCAiREFDMk1PTk8gUGxheWJhY2sgU3dpdGNoIiwJIkRBQyBMZWZ0 IENoYW5uZWwifSwKKworCS8qIExlZnQgcmVjb3JkIG1peGVyICovCisJeyJMZWZ0IENhcHR1cmUg TWl4IiwgIkxpbmVJbkwgQ2FwdHVyZSBTd2l0Y2giLAkiTElORUlOTCJ9LAorCXsiTGVmdCBDYXB0 dXJlIE1peCIsICJMZWZ0IFBob25lIENhcHR1cmUgU3dpdGNoIiwgIlBIT05FTiJ9LAorCXsiTGVm dCBDYXB0dXJlIE1peCIsICJNaWMxIENhcHR1cmUgU3dpdGNoIiwJIk1JQzEgUHJlIEFtcCJ9LAor CXsiTGVmdCBDYXB0dXJlIE1peCIsICJNaWMyIENhcHR1cmUgU3dpdGNoIiwJIk1JQzIgUHJlIEFt cCJ9LAorCXsiTGVmdCBDYXB0dXJlIE1peCIsICJIUE1peGVyTCBDYXB0dXJlIFN3aXRjaCIsICJI UEwgTWl4In0sCisJeyJMZWZ0IENhcHR1cmUgTWl4IiwgIlNQS01peGVyIENhcHR1cmUgU3dpdGNo IiwgIlNwZWFrZXIgTWl4In0sCisJeyJMZWZ0IENhcHR1cmUgTWl4IiwgIk1vbm9NaXhlciBDYXB0 dXJlIFN3aXRjaCIsICJNb25vIE1peCJ9LAorCisJLypSaWdodCByZWNvcmQgbWl4ZXIgKi8KKwl7 IlJpZ2h0IENhcHR1cmUgTWl4IiwgIkxpbmVJblIgQ2FwdHVyZSBTd2l0Y2giLAkiTElORUlOUiJ9 LAorCXsiUmlnaHQgQ2FwdHVyZSBNaXgiLCAiUmlnaHQgUGhvbmUgQ2FwdHVyZSBTd2l0Y2giLAki UEhPTkVQIn0sCisJeyJSaWdodCBDYXB0dXJlIE1peCIsICJNaWMxIENhcHR1cmUgU3dpdGNoIiwJ Ik1JQzEgUHJlIEFtcCJ9LAorCXsiUmlnaHQgQ2FwdHVyZSBNaXgiLCAiTWljMiBDYXB0dXJlIFN3 aXRjaCIsCSJNSUMyIFByZSBBbXAifSwKKwl7IlJpZ2h0IENhcHR1cmUgTWl4IiwgIkhQTWl4ZXJS IENhcHR1cmUgU3dpdGNoIiwgIkhQUiBNaXgifSwKKwl7IlJpZ2h0IENhcHR1cmUgTWl4IiwgIlNQ S01peGVyIENhcHR1cmUgU3dpdGNoIiwgIlNwZWFrZXIgTWl4In0sCisJeyJSaWdodCBDYXB0dXJl IE1peCIsICJNb25vTWl4ZXIgQ2FwdHVyZSBTd2l0Y2giLCAiTW9ubyBNaXgifSwKKworCS8qIGhl YWRwaG9uZSBsZWZ0IG11eCAqLworCXsiTGVmdCBIZWFkcGhvbmUgTXV4IiwgIkhQIExlZnQgTWl4 IiwJCSJIUEwgTWl4In0sCisJeyJMZWZ0IEhlYWRwaG9uZSBNdXgiLCAiVm1pZCIsCQkJIlZtaWQi fSwKKworCS8qIGhlYWRwaG9uZSByaWdodCBtdXggKi8KKwl7IlJpZ2h0IEhlYWRwaG9uZSBNdXgi LCAiSFAgUmlnaHQgTWl4IiwJCSJIUFIgTWl4In0sCisJeyJSaWdodCBIZWFkcGhvbmUgTXV4Iiwg IlZtaWQiLAkJCSJWbWlkIn0sCisKKwkvKiBzcGVha2VyIG91dCBtdXggKi8KKwl7IlNwZWFrZXJP dXQgTXV4IiwgIlZtaWQiLAkJCSJWbWlkIn0sCisJeyJTcGVha2VyT3V0IE11eCIsICJIUE91dCBN aXgiLAkJCSJIUE91dCBNaXgifSwKKwl7IlNwZWFrZXJPdXQgTXV4IiwgIlNwZWFrZXIgTWl4IiwJ CSJTcGVha2VyIE1peCJ9LAorCXsiU3BlYWtlck91dCBNdXgiLCAiTW9ubyBNaXgiLAkJCSJNb25v IE1peCJ9LAorCisJLyogTW9uby9BdXggT3V0IG11eCAqLworCXsiQXV4T3V0IE11eCIsICJWbWlk IiwJCQkJIlZtaWQifSwKKwl7IkF1eE91dCBNdXgiLCAiSFBPdXQgTWl4IiwJCQkiSFBPdXQgTWl4 In0sCisJeyJBdXhPdXQgTXV4IiwgIlNwZWFrZXIgTWl4IiwJCQkiU3BlYWtlciBNaXgifSwKKwl7 IkF1eE91dCBNdXgiLCAiTW9ubyBNaXgiLAkJCSJNb25vIE1peCJ9LAorCisJLyogb3V0cHV0IHBn YSAqLworCXsiSFBMIiwgTlVMTCwJCQkJCSJMZWZ0IEhlYWRwaG9uZSJ9LAorCXsiTGVmdCBIZWFk cGhvbmUiLCBOVUxMLAkJCSJMZWZ0IEhlYWRwaG9uZSBNdXgifSwKKwl7IkhQUiIsIE5VTEwsCQkJ CQkiUmlnaHQgSGVhZHBob25lIn0sCisJeyJSaWdodCBIZWFkcGhvbmUiLCBOVUxMLAkJCSJSaWdo dCBIZWFkcGhvbmUgTXV4In0sCisJeyJBdXggT3V0IiwgTlVMTCwJCQkJIkF1eE91dCBNdXgifSwK KworCS8qIGlucHV0IHBnYSAqLworCXsiTGVmdCBMaW5lSW4iLCBOVUxMLAkJCQkiTElORUlOTCJ9 LAorCXsiUmlnaHQgTGluZUluIiwgTlVMTCwJCQkJIkxJTkVJTlIifSwKKwl7IlBob25lIiwgTlVM TCwJCQkJIlBIT05FUCJ9LAorCXsiTUlDMSBQcmUgQW1wIiwgTlVMTCwJCQkJIk1JQzEifSwKKwl7 Ik1JQzIgUHJlIEFtcCIsIE5VTEwsCQkJCSJNSUMyIn0sCisJeyJNSUMxIFBHQSIsIE5VTEwsCQkJ CSJNSUMxIFByZSBBbXAifSwKKwl7Ik1JQzIgUEdBIiwgTlVMTCwJCQkJIk1JQzIgUHJlIEFtcCJ9 LAorCisJLyogbGVmdCBBREMgKi8KKwl7IkxlZnQgQURDIiwgTlVMTCwJCQkJIkxlZnQgQ2FwdHVy ZSBNaXgifSwKKworCS8qIHJpZ2h0IEFEQyAqLworCXsiUmlnaHQgQURDIiwgTlVMTCwJCQkJIlJp Z2h0IENhcHR1cmUgTWl4In0sCisKKwl7IlNwZWFrZXJPdXQgTiBNdXgiLCAiUk4vLVIiLAkJCSJM ZWZ0IFNwZWFrZXIifSwKKwl7IlNwZWFrZXJPdXQgTiBNdXgiLCAiUlAvK1IiLAkJCSJMZWZ0IFNw ZWFrZXIifSwKKwl7IlNwZWFrZXJPdXQgTiBNdXgiLCAiTE4vLVIiLAkJCSJMZWZ0IFNwZWFrZXIi fSwKKwl7IlNwZWFrZXJPdXQgTiBNdXgiLCAiTXV0ZSIsCQkJIlZtaWQifSwKKworCXsiU3BlYWtl ck91dCBOIE11eCIsICJSTi8tUiIsCQkJIlJpZ2h0IFNwZWFrZXIifSwKKwl7IlNwZWFrZXJPdXQg TiBNdXgiLCAiUlAvK1IiLAkJCSJSaWdodCBTcGVha2VyIn0sCisJeyJTcGVha2VyT3V0IE4gTXV4 IiwgIkxOLy1SIiwJCQkiUmlnaHQgU3BlYWtlciJ9LAorCXsiU3BlYWtlck91dCBOIE11eCIsICJN dXRlIiwJCQkiVm1pZCJ9LAorCisJeyJBQiBBbXAiLCBOVUxMLAkJCQkiU3BlYWtlck91dCBNdXgi fSwKKwl7IkQgQW1wIiwgTlVMTCwJCQkJCSJTcGVha2VyT3V0IE11eCJ9LAorCXsiQUItRCBBbXAg TXV4IiwgIkFCIEFtcCIsCQkJIkFCIEFtcCJ9LAorCXsiQUItRCBBbXAgTXV4IiwgIkQgQW1wIiwJ CQkiRCBBbXAifSwKKwl7IkxlZnQgU3BlYWtlciIsIE5VTEwsCQkJCSJBQi1EIEFtcCBNdXgifSwK Kwl7IlJpZ2h0IFNwZWFrZXIiLCBOVUxMLAkJCQkiQUItRCBBbXAgTXV4In0sCisKKwl7IlNQS09V VCIsIE5VTEwsCQkJCSJMZWZ0IFNwZWFrZXIifSwKKwl7IlNQS09VVCIsIE5VTEwsCQkJCSJSaWdo dCBTcGVha2VyIn0sCisKKwl7IlNQS09VVE4iLCBOVUxMLAkJCQkiU3BlYWtlck91dCBOIE11eCJ9 LAorCit9OworCisvKiBQTEwgZGl2aXNvcnMgKi8KK3N0cnVjdCBfcGxsX2RpdiB7CisJdTMyIHBs bF9pbjsKKwl1MzIgcGxsX291dDsKKwl1MTYgcmVndmFsdWU7Cit9OworCisvKiBOb3RlIDogcGxs IGNvZGUgZnJvbSBvcmlnaW5hbCBhbGM1NjMyIGRyaXZlci4gTm90IHN1cmUgb2YgaG93IGdvb2Qg aXQgaXMgKi8KKy8qIHVzZWZ1bGwgb25seSBmb3IgbWFzdGVyIG1vZGUgKi8KK3N0YXRpYyBjb25z dCBzdHJ1Y3QgX3BsbF9kaXYgY29kZWNfbWFzdGVyX3BsbF9kaXZbXSA9IHsKKworCXsgIDIwNDgw MDAsICA4MTkyMDAwLAkweDBlYTB9LAorCXsgIDM2ODY0MDAsICA4MTkyMDAwLAkweDRlMjd9LAor CXsgMTIwMDAwMDAsICA4MTkyMDAwLAkweDQ1NmJ9LAorCXsgMTMwMDAwMDAsICA4MTkyMDAwLAkw eDQ5NWZ9LAorCXsgMTMxMDAwMDAsICA4MTkyMDAwLAkweDAzMjB9LAorCXsgIDIwNDgwMDAsICAx MTI4OTYwMCwJMHhmNjM3fSwKKwl7ICAzNjg2NDAwLCAgMTEyODk2MDAsCTB4MmYyMn0sCisJeyAx MjAwMDAwMCwgIDExMjg5NjAwLAkweDNlMmZ9LAorCXsgMTMwMDAwMDAsICAxMTI4OTYwMCwJMHg0 ZDVifSwKKwl7IDEzMTAwMDAwLCAgMTEyODk2MDAsCTB4MzYzYn0sCisJeyAgMjA0ODAwMCwgIDE2 Mzg0MDAwLAkweDFlYTB9LAorCXsgIDM2ODY0MDAsICAxNjM4NDAwMCwJMHg5ZTI3fSwKKwl7IDEy MDAwMDAwLCAgMTYzODQwMDAsCTB4NDUyYn0sCisJeyAxMzAwMDAwMCwgIDE2Mzg0MDAwLAkweDU0 MmZ9LAorCXsgMTMxMDAwMDAsICAxNjM4NDAwMCwJMHgwM2EwfSwKKwl7ICAyMDQ4MDAwLCAgMTY5 MzQ0MDAsCTB4ZTYyNX0sCisJeyAgMzY4NjQwMCwgIDE2OTM0NDAwLAkweDkxMjZ9LAorCXsgMTIw MDAwMDAsICAxNjkzNDQwMCwJMHg0ZDJjfSwKKwl7IDEzMDAwMDAwLCAgMTY5MzQ0MDAsCTB4NzQy Zn0sCisJeyAxMzEwMDAwMCwgIDE2OTM0NDAwLAkweDNjMjd9LAorCXsgIDIwNDgwMDAsICAyMjU3 OTIwMCwJMHgyYWEwfSwKKwl7ICAzNjg2NDAwLCAgMjI1NzkyMDAsCTB4MmYyMH0sCisJeyAxMjAw MDAwMCwgIDIyNTc5MjAwLAkweDdlMmZ9LAorCXsgMTMwMDAwMDAsICAyMjU3OTIwMCwJMHg3NDJm fSwKKwl7IDEzMTAwMDAwLCAgMjI1NzkyMDAsCTB4M2MyN30sCisJeyAgMjA0ODAwMCwgIDI0NTc2 MDAwLAkweDJlYTB9LAorCXsgIDM2ODY0MDAsICAyNDU3NjAwMCwJMHhlZTI3fSwKKwl7IDEyMDAw MDAwLCAgMjQ1NzYwMDAsCTB4MjkxNX0sCisJeyAxMzAwMDAwMCwgIDI0NTc2MDAwLAkweDc3MmV9 LAorCXsgMTMxMDAwMDAsICAyNDU3NjAwMCwJMHgwZDIwfSwKK307CisKKy8qIEZPVVQgPSBNQ0xL KihOKzIpLygoTSsyKSooSysyKSkKKyAgIE46IGJpdCAxNTo4IChkaXYgMiAuLiBkaXYgMjU3KQor ICAgSzogYml0ICA2OjQgdHlwaWNhbCAyCisgICBNOiBiaXQgIDM6MCAoZGl2IDIgLi4gZGl2IDE3 KQorCisgICBzYW1lIGFzIGZvciA1NjIzIC0gdGhhbmtzIQorKi8KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBfcGxsX2RpdiBjb2RlY19zbGF2ZV9wbGxfZGl2W10gPSB7CisKKwl7ICAxMDI0MDAwLCAg MTYzODQwMDAsICAweDNlYTB9LAorCXsgIDE0MTEyMDAsICAyMjU3OTIwMCwJMHgzZWEwfSwKKwl7 ICAxNTM2MDAwLCAgMjQ1NzYwMDAsCTB4M2VhMH0sCisJeyAgMjA0ODAwMCwgIDE2Mzg0MDAwLCAg MHgxZWEwfSwKKwl7ICAyODIyNDAwLCAgMjI1NzkyMDAsCTB4MWVhMH0sCisJeyAgMzA3MjAwMCwg IDI0NTc2MDAwLAkweDFlYTB9LAorCit9OworCitzdGF0aWMgaW50IGFsYzU2MzJfc2V0X2RhaV9w bGwoc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19kYWksIGludCBwbGxfaWQsCisJCWludCBzb3Vy Y2UsIHVuc2lnbmVkIGludCBmcmVxX2luLCB1bnNpZ25lZCBpbnQgZnJlcV9vdXQpCit7CisJaW50 IGk7CisJc3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjID0gY29kZWNfZGFpLT5jb2RlYzsKKwlp bnQgZ2JsX2NsayA9IDAsIHBsbF9kaXYgPSAwOworCXUxNiByZWc7CisKKwlpZiAocGxsX2lkIDwg QUxDNTYzMl9QTExfRlJfTUNMSyB8fCBwbGxfaWQgPiBBTEM1NjMyX1BMTF9GUl9WQkNMSykKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwkvKiBEaXNhYmxlIFBMTCBwb3dlciAqLworCXNuZF9zb2NfdXBk YXRlX2JpdHMoY29kZWMsIEFMQzU2MzJfUFdSX01BTkFHX0FERDIsCisJCQkJQUxDNTYzMl9QV1Jf QUREMl9QTEwxLAorCQkJCTApOworCXNuZF9zb2NfdXBkYXRlX2JpdHMoY29kZWMsIEFMQzU2MzJf UFdSX01BTkFHX0FERDIsCisJCQkJQUxDNTYzMl9QV1JfQUREMl9QTEwyLAorCQkJCTApOworCisJ LyogcGxsIGlzIG5vdCB1c2VkIGluIHNsYXZlIG1vZGUgKi8KKwlyZWcgPSBzbmRfc29jX3JlYWQo Y29kZWMsIEFMQzU2MzJfREFJX0NPTlRST0wpOworCWlmIChyZWcgJiBBTEM1NjMyX0RBSV9TRFBf U0xBVkVfTU9ERSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoIWZyZXFfaW4gfHwgIWZyZXFfb3V0KQor CQlyZXR1cm4gMDsKKworCXN3aXRjaCAocGxsX2lkKSB7CisJY2FzZSBBTEM1NjMyX1BMTF9GUl9N Q0xLOgorCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb2RlY19tYXN0ZXJfcGxsX2Rpdik7 IGkrKykgeworCQkJaWYgKGNvZGVjX21hc3Rlcl9wbGxfZGl2W2ldLnBsbF9pbiA9PSBmcmVxX2lu CisJCQkgICAmJiBjb2RlY19tYXN0ZXJfcGxsX2RpdltpXS5wbGxfb3V0ID09IGZyZXFfb3V0KSB7 CisJCQkJLyogUExMIHNvdXJjZSBmcm9tIE1DTEsgKi8KKwkJCQlwbGxfZGl2ICA9IGNvZGVjX21h c3Rlcl9wbGxfZGl2W2ldLnJlZ3ZhbHVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWJyZWFr OworCWNhc2UgQUxDNTYzMl9QTExfRlJfQkNMSzoKKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoY29kZWNfc2xhdmVfcGxsX2Rpdik7IGkrKykgeworCQkJaWYgKGNvZGVjX3NsYXZlX3BsbF9k aXZbaV0ucGxsX2luID09IGZyZXFfaW4KKwkJCSAgICYmIGNvZGVjX3NsYXZlX3BsbF9kaXZbaV0u cGxsX291dCA9PSBmcmVxX291dCkgeworCQkJCS8qIFBMTCBzb3VyY2UgZnJvbSBCaXRjbGsgKi8K KwkJCQlnYmxfY2xrID0gQUxDNTYzMl9QTExfRlJfQkNMSzsKKwkJCQlwbGxfZGl2ID0gY29kZWNf c2xhdmVfcGxsX2RpdltpXS5yZWd2YWx1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlicmVh azsKKwljYXNlIEFMQzU2MzJfUExMX0ZSX1ZCQ0xLOgorCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShjb2RlY19zbGF2ZV9wbGxfZGl2KTsgaSsrKSB7CisJCQlpZiAoY29kZWNfc2xhdmVfcGxs X2RpdltpXS5wbGxfaW4gPT0gZnJlcV9pbgorCQkJICAgJiYgY29kZWNfc2xhdmVfcGxsX2Rpdltp XS5wbGxfb3V0ID09IGZyZXFfb3V0KSB7CisJCQkJLyogUExMIHNvdXJjZSBmcm9tIHZvaWNlIGNs b2NrICovCisJCQkJZ2JsX2NsayA9IEFMQzU2MzJfUExMX0ZSX1ZCQ0xLOworCQkJCXBsbF9kaXYg PSBjb2RlY19zbGF2ZV9wbGxfZGl2W2ldLnJlZ3ZhbHVlOworCQkJCWJyZWFrOworCQkJfQorCQl9 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmICghcGxs X2RpdikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBjaG9vc2UgTUNMSy9CQ0xLL1ZCQ0xLICov CisJc25kX3NvY193cml0ZShjb2RlYywgQUxDNTYzMl9HUENSMiwgZ2JsX2Nsayk7CisJLyogY2hv b3NlIFBMTDEgY2xvY2sgcmF0ZSAqLworCXNuZF9zb2Nfd3JpdGUoY29kZWMsIEFMQzU2MzJfUExM MV9DVFJMLCBwbGxfZGl2KTsKKwkvKiBlbmFibGUgUExMMSAqLworCXNuZF9zb2NfdXBkYXRlX2Jp dHMoY29kZWMsIEFMQzU2MzJfUFdSX01BTkFHX0FERDIsCisJCQkJQUxDNTYzMl9QV1JfQUREMl9Q TEwxLAorCQkJCUFMQzU2MzJfUFdSX0FERDJfUExMMSk7CisJLyogZW5hYmxlIFBMTDIgKi8KKwlz bmRfc29jX3VwZGF0ZV9iaXRzKGNvZGVjLCBBTEM1NjMyX1BXUl9NQU5BR19BREQyLAorCQkJCUFM QzU2MzJfUFdSX0FERDJfUExMMiwKKwkJCQlBTEM1NjMyX1BXUl9BREQyX1BMTDIpOworCS8qIHVz ZSBQTEwxIGFzIG1haW4gU1lTQ0xLICovCisJc25kX3NvY191cGRhdGVfYml0cyhjb2RlYywgQUxD NTYzMl9HUENSMSwKKwkJCUFMQzU2MzJfR1BDUjFfQ0xLX1NZU19TUkNfU0VMX1BMTDEsCisJCQlB TEM1NjMyX0dQQ1IxX0NMS19TWVNfU1JDX1NFTF9QTEwxKTsKKworCXJldHVybiAwOworfQorCitz dHJ1Y3QgX2NvZWZmX2RpdiB7CisJdTE2IGZzOworCXUxNiByZWd2YWx1ZTsKK307CisKKy8qIGNv ZGVjIGhpZmkgbWNsayAoYWZ0ZXIgUExMKSBjbG9jayBkaXZpZGVyIGNvZWZmaWNpZW50cyAqLwor LyogdmFsdWVzIGluc3BpcmVkIGZyb20gY29sdW1uIEJDTEs9MzJGcyBvZiBBcHBlbmRpeCBBIHRh YmxlICovCitzdGF0aWMgY29uc3Qgc3RydWN0IF9jb2VmZl9kaXYgY29lZmZfZGl2W10gPSB7CisJ ezUxMioxLCAweDMwNzV9LAorfTsKKworc3RhdGljIGludCBnZXRfY29lZmYoc3RydWN0IHNuZF9z b2NfY29kZWMgKmNvZGVjLCBpbnQgcmF0ZSkKK3sKKwlzdHJ1Y3QgYWxjNTYzMl9wcml2ICphbGM1 NjMyID0gc25kX3NvY19jb2RlY19nZXRfZHJ2ZGF0YShjb2RlYyk7CisJaW50IGk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb2VmZl9kaXYpOyBpKyspIHsKKwkJaWYgKGNvZWZmX2Rp dltpXS5mcyAqIHJhdGUgPT0gYWxjNTYzMi0+c3lzY2xrKQorCQkJcmV0dXJuIGk7CisJfQorCXJl dHVybiAtRUlOVkFMOworfQorCisvKgorICogQ2xvY2sgYWZ0ZXIgUExMIGFuZCBkaXZpZGVycwor ICovCitzdGF0aWMgaW50IGFsYzU2MzJfc2V0X2RhaV9zeXNjbGsoc3RydWN0IHNuZF9zb2NfZGFp ICpjb2RlY19kYWksCisJCWludCBjbGtfaWQsIHVuc2lnbmVkIGludCBmcmVxLCBpbnQgZGlyKQor eworCXN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IGNvZGVjX2RhaS0+Y29kZWM7CisJc3Ry dWN0IGFsYzU2MzJfcHJpdiAqYWxjNTYzMiA9IHNuZF9zb2NfY29kZWNfZ2V0X2RydmRhdGEoY29k ZWMpOworCisJc3dpdGNoIChmcmVxKSB7CisJY2FzZSAgODE5MjAwMDoKKwljYXNlIDExMjg5NjAw OgorCWNhc2UgMTIyODgwMDA6CisJY2FzZSAxNjM4NDAwMDoKKwljYXNlIDE2OTM0NDAwOgorCWNh c2UgMTg0MzIwMDA6CisJY2FzZSAyMjU3OTIwMDoKKwljYXNlIDI0NTc2MDAwOgorCQlhbGM1NjMy LT5zeXNjbGsgPSBmcmVxOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIC1FSU5WQUw7Cit9CisK K3N0YXRpYyBpbnQgYWxjNTYzMl9zZXRfZGFpX2ZtdChzdHJ1Y3Qgc25kX3NvY19kYWkgKmNvZGVj X2RhaSwKKwkJdW5zaWduZWQgaW50IGZtdCkKK3sKKwlzdHJ1Y3Qgc25kX3NvY19jb2RlYyAqY29k ZWMgPSBjb2RlY19kYWktPmNvZGVjOworCXUxNiBpZmFjZSA9IDA7CisKKwkvKiBzZXQgbWFzdGVy L3NsYXZlIGF1ZGlvIGludGVyZmFjZSAqLworCXN3aXRjaCAoZm10ICYgU05EX1NPQ19EQUlGTVRf TUFTVEVSX01BU0spIHsKKwljYXNlIFNORF9TT0NfREFJRk1UX0NCTV9DRk06CisJCWlmYWNlID0g QUxDNTYzMl9EQUlfU0RQX01BU1RFUl9NT0RFOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJ Rk1UX0NCU19DRlM6CisJCWlmYWNlID0gQUxDNTYzMl9EQUlfU0RQX1NMQVZFX01PREU7CisJCWJy ZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIGludGVyZmFjZSBm b3JtYXQgKi8KKwlzd2l0Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1UX0ZPUk1BVF9NQVNLKSB7CisJ Y2FzZSBTTkRfU09DX0RBSUZNVF9JMlM6CisJCWlmYWNlIHw9IEFMQzU2MzJfREFJX0kyU19ERl9J MlM7CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfTEVGVF9KOgorCQlpZmFjZSB8PSBB TEM1NjMyX0RBSV9JMlNfREZfTEVGVDsKKwkJYnJlYWs7CisJY2FzZSBTTkRfU09DX0RBSUZNVF9E U1BfQToKKwkJaWZhY2UgfD0gQUxDNTYzMl9EQUlfSTJTX0RGX1BDTV9BOworCQlicmVhazsKKwlj YXNlIFNORF9TT0NfREFJRk1UX0RTUF9COgorCQlpZmFjZSB8PSBBTEM1NjMyX0RBSV9JMlNfREZf UENNX0I7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8q IGNsb2NrIGludmVyc2lvbiAqLworCXN3aXRjaCAoZm10ICYgU05EX1NPQ19EQUlGTVRfSU5WX01B U0spIHsKKwljYXNlIFNORF9TT0NfREFJRk1UX05CX05GOgorCQlicmVhazsKKwljYXNlIFNORF9T T0NfREFJRk1UX0lCX0lGOgorCQlpZmFjZSB8PSBBTEM1NjMyX0RBSV9NQUlOX0kyU19CQ0xLX1BP TF9DVFJMOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJRk1UX0lCX05GOgorCQlpZmFjZSB8 PSBBTEM1NjMyX0RBSV9NQUlOX0kyU19CQ0xLX1BPTF9DVFJMOworCQlicmVhazsKKwljYXNlIFNO RF9TT0NfREFJRk1UX05CX0lGOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlyZXR1cm4gc25kX3NvY193cml0ZShjb2RlYywgQUxDNTYzMl9EQUlfQ09OVFJP TCwgaWZhY2UpOworfQorCitzdGF0aWMgaW50IGFsYzU2MzJfcGNtX2h3X3BhcmFtcyhzdHJ1Y3Qg c25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKKwkJc3RydWN0IHNuZF9wY21faHdfcGFyYW1z ICpwYXJhbXMsIHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQoreworCXN0cnVjdCBzbmRfc29jX3Bj bV9ydW50aW1lICpydGQgPSBzdWJzdHJlYW0tPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3Qgc25kX3Nv Y19jb2RlYyAqY29kZWMgPSBydGQtPmNvZGVjOworCWludCBjb2VmZiwgcmF0ZTsKKwl1MTYgaWZh Y2U7CisKKwlpZmFjZSA9IHNuZF9zb2NfcmVhZChjb2RlYywgQUxDNTYzMl9EQUlfQ09OVFJPTCk7 CisJaWZhY2UgJj0gfkFMQzU2MzJfREFJX0kyU19ETF9NQVNLOworCisJLyogYml0IHNpemUgKi8K Kwlzd2l0Y2ggKHBhcmFtc19mb3JtYXQocGFyYW1zKSkgeworCWNhc2UgU05EUlZfUENNX0ZPUk1B VF9TMTZfTEU6CisJCWlmYWNlIHw9IEFMQzU2MzJfREFJX0kyU19ETF8xNjsKKwkJYnJlYWs7CisJ Y2FzZSBTTkRSVl9QQ01fRk9STUFUX1MyMF8zTEU6CisJCWlmYWNlIHw9IEFMQzU2MzJfREFJX0ky U19ETF8yMDsKKwkJYnJlYWs7CisJY2FzZSBTTkRSVl9QQ01fRk9STUFUX1MyNF9MRToKKwkJaWZh Y2UgfD0gQUxDNTYzMl9EQUlfSTJTX0RMXzI0OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1 cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBzZXQgaWZhY2UgJiBzcmF0ZSAqLworCXNuZF9zb2Nfd3Jp dGUoY29kZWMsIEFMQzU2MzJfREFJX0NPTlRST0wsIGlmYWNlKTsKKwlyYXRlID0gcGFyYW1zX3Jh dGUocGFyYW1zKTsKKwljb2VmZiA9IGdldF9jb2VmZihjb2RlYywgcmF0ZSk7CisJaWYgKGNvZWZm IDwgMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljb2VmZiA9IGNvZWZmX2Rpdltjb2VmZl0ucmVn dmFsdWU7CisJc25kX3NvY193cml0ZShjb2RlYywgQUxDNTYzMl9EQUNfQ0xLX0NUUkwxLCBjb2Vm Zik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhbGM1NjMyX211dGUoc3RydWN0IHNu ZF9zb2NfZGFpICpkYWksIGludCBtdXRlKQoreworCXN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2Rl YyA9IGRhaS0+Y29kZWM7CisJdTE2IGhwX211dGUgPSBBTEM1NjMyX01JU0NfSFBfREVQT1BfTVVU RV9MIFwKKwkJCQkJCXxBTEM1NjMyX01JU0NfSFBfREVQT1BfTVVURV9SOworCXUxNiBtdXRlX3Jl ZyA9IHNuZF9zb2NfcmVhZChjb2RlYywgQUxDNTYzMl9NSVNDX0NUUkwpICYgfmhwX211dGU7CisK KwlpZiAobXV0ZSkKKwkJbXV0ZV9yZWcgfD0gaHBfbXV0ZTsKKworCXJldHVybiBzbmRfc29jX3dy aXRlKGNvZGVjLCBBTEM1NjMyX01JU0NfQ1RSTCwgbXV0ZV9yZWcpOworfQorCisjZGVmaW5lIEFM QzU2MzJfQUREMl9QT1dFUl9FTiAoQUxDNTYzMl9QV1JfQUREMl9WUkVGKQorCisjZGVmaW5lIEFM QzU2MzJfQUREM19QT1dFUl9FTiAoQUxDNTYzMl9QV1JfQUREM19NSUMxX0JPT1NUX0FEKQorCisj ZGVmaW5lIEFMQzU2MzJfQUREMV9QT1dFUl9FTiBcCisJCShBTEM1NjMyX1BXUl9BREQxX0RBQ19S RUYgXAorCQl8IEFMQzU2MzJfUFdSX0FERDFfU09GVEdFTl9FTiBcCisJCXwgQUxDNTYzMl9QV1Jf QUREMV9IUF9PVVRfQU1QIFwKKwkJfCBBTEM1NjMyX1BXUl9BREQxX0hQX09VVF9FTkhfQU1QIFwK KwkJfCBBTEM1NjMyX1BXUl9BREQxX01BSU5fQklBUykKKworc3RhdGljIHZvaWQgZW5hYmxlX3Bv d2VyX2RlcG9wKHN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYykKK3sKKwlzbmRfc29jX3VwZGF0 ZV9iaXRzKGNvZGVjLCBBTEM1NjMyX1BXUl9NQU5BR19BREQxLAorCQkJCUFMQzU2MzJfUFdSX0FE RDFfU09GVEdFTl9FTiwKKwkJCQlBTEM1NjMyX1BXUl9BREQxX1NPRlRHRU5fRU4pOworCisJc25k X3NvY191cGRhdGVfYml0cyhjb2RlYywgQUxDNTYzMl9QV1JfTUFOQUdfQUREMywKKwkJCQlBTEM1 NjMyX0FERDNfUE9XRVJfRU4sCisJCQkJQUxDNTYzMl9BREQzX1BPV0VSX0VOKTsKKworCXNuZF9z b2NfdXBkYXRlX2JpdHMoY29kZWMsIEFMQzU2MzJfTUlTQ19DVFJMLAorCQkJCUFMQzU2MzJfTUlT Q19IUF9ERVBPUF9NT0RFMl9FTiwKKwkJCQlBTEM1NjMyX01JU0NfSFBfREVQT1BfTU9ERTJfRU4p OworCisJLyogIm5vcm1hbCIgbW9kZTogMCBAIDI2ICovCisJLyogc2V0IGFsbCBQUjAtNyBtaXhl cnMgdG8gMCAqLworCXNuZF9zb2NfdXBkYXRlX2JpdHMoY29kZWMsIEFMQzU2MzJfUFdSX0RPV05f Q1RSTF9TVEFUVVMsCisJCQkJQUxDNTYzMl9QV1JfRE9XTl9DVFJMX1NUQVRVU19NQVNLLAorCQkJ CTApOworCisJbXNsZWVwKDUwMCk7CisKKwlzbmRfc29jX3VwZGF0ZV9iaXRzKGNvZGVjLCBBTEM1 NjMyX1BXUl9NQU5BR19BREQyLAorCQkJCUFMQzU2MzJfQUREMl9QT1dFUl9FTiwKKwkJCQlBTEM1 NjMyX0FERDJfUE9XRVJfRU4pOworCisJc25kX3NvY191cGRhdGVfYml0cyhjb2RlYywgQUxDNTYz Ml9QV1JfTUFOQUdfQUREMSwKKwkJCQlBTEM1NjMyX0FERDFfUE9XRVJfRU4sCisJCQkJQUxDNTYz Ml9BREQxX1BPV0VSX0VOKTsKKworCS8qIGRpc2FibGUgSFAgRGVwb3AyICovCisJc25kX3NvY191 cGRhdGVfYml0cyhjb2RlYywgQUxDNTYzMl9NSVNDX0NUUkwsCisJCQkJQUxDNTYzMl9NSVNDX0hQ X0RFUE9QX01PREUyX0VOLAorCQkJCTApOworCit9CisKK3N0YXRpYyBpbnQgYWxjNTYzMl9zZXRf Ymlhc19sZXZlbChzdHJ1Y3Qgc25kX3NvY19jb2RlYyAqY29kZWMsCisJCQkJICAgICAgZW51bSBz bmRfc29jX2JpYXNfbGV2ZWwgbGV2ZWwpCit7CisJc3dpdGNoIChsZXZlbCkgeworCWNhc2UgU05E X1NPQ19CSUFTX09OOgorCQllbmFibGVfcG93ZXJfZGVwb3AoY29kZWMpOworCQlicmVhazsKKwlj YXNlIFNORF9TT0NfQklBU19QUkVQQVJFOgorCQlicmVhazsKKwljYXNlIFNORF9TT0NfQklBU19T VEFOREJZOgorCQkvKiBldmVyeXRoaW5nIG9mZiBleGNlcHQgdnJlZi92bWlkLCAqLworCQlzbmRf c29jX3VwZGF0ZV9iaXRzKGNvZGVjLCBBTEM1NjMyX1BXUl9NQU5BR19BREQxLAorCQkJCUFMQzU2 MzJfUFdSX01BTkFHX0FERDFfTUFTSywKKwkJCQlBTEM1NjMyX1BXUl9BREQxX01BSU5fQklBUyk7 CisJCXNuZF9zb2NfdXBkYXRlX2JpdHMoY29kZWMsIEFMQzU2MzJfUFdSX01BTkFHX0FERDIsCisJ CQkJQUxDNTYzMl9QV1JfTUFOQUdfQUREMl9NQVNLLAorCQkJCUFMQzU2MzJfUFdSX0FERDJfVlJF Rik7CisJCS8qICJub3JtYWwiIG1vZGU6IDAgQCAyNiAqLworCQlzbmRfc29jX3VwZGF0ZV9iaXRz KGNvZGVjLCBBTEM1NjMyX1BXUl9ET1dOX0NUUkxfU1RBVFVTLAorCQkJCUFMQzU2MzJfUFdSX0RP V05fQ1RSTF9TVEFUVVNfTUFTSywKKwkJCQkweGZmZmYgXiAoQUxDNTYzMl9QV1JfVlJFRl9QUjMK KwkJCQl8IEFMQzU2MzJfUFdSX1ZSRUZfUFIyKSk7CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19C SUFTX09GRjoKKwkJLyogZXZlcnl0aGluZyBvZmYsIGRhYyBtdXRlLCBpbmFjdGl2ZSAqLworCQlz bmRfc29jX3VwZGF0ZV9iaXRzKGNvZGVjLCBBTEM1NjMyX1BXUl9NQU5BR19BREQyLAorCQkJCUFM QzU2MzJfUFdSX01BTkFHX0FERDJfTUFTSywgMCk7CisJCXNuZF9zb2NfdXBkYXRlX2JpdHMoY29k ZWMsIEFMQzU2MzJfUFdSX01BTkFHX0FERDMsCisJCQkJQUxDNTYzMl9QV1JfTUFOQUdfQUREM19N QVNLLCAwKTsKKwkJc25kX3NvY191cGRhdGVfYml0cyhjb2RlYywgQUxDNTYzMl9QV1JfTUFOQUdf QUREMSwKKwkJCQlBTEM1NjMyX1BXUl9NQU5BR19BREQxX01BU0ssIDApOworCQlicmVhazsKKwl9 CisJY29kZWMtPmRhcG0uYmlhc19sZXZlbCA9IGxldmVsOworCXJldHVybiAwOworfQorCisjZGVm aW5lIEFMQzU2MzJfRk9STUFUUwkoU05EUlZfUENNX0ZNVEJJVF9TMTZfTEUgXAorCQkJfCBTTkRS Vl9QQ01fRk1UQklUX1MyNF9MRSBcCisJCQl8IFNORFJWX1BDTV9GTVRCSVRfUzMyX0xFKQorCitz dGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX29wcyBhbGM1NjMyX2RhaV9vcHMgPSB7CisJCS5od19w YXJhbXMgPSBhbGM1NjMyX3BjbV9od19wYXJhbXMsCisJCS5kaWdpdGFsX211dGUgPSBhbGM1NjMy X211dGUsCisJCS5zZXRfZm10ID0gYWxjNTYzMl9zZXRfZGFpX2ZtdCwKKwkJLnNldF9zeXNjbGsg PSBhbGM1NjMyX3NldF9kYWlfc3lzY2xrLAorCQkuc2V0X3BsbCA9IGFsYzU2MzJfc2V0X2RhaV9w bGwsCit9OworCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX2RyaXZlciBhbGM1NjMyX2RhaSA9 IHsKKwkubmFtZSA9ICJhbGM1NjMyLWhpZmkiLAorCS5wbGF5YmFjayA9IHsKKwkJLnN0cmVhbV9u YW1lID0gIkhpRmkgUGxheWJhY2siLAorCQkuY2hhbm5lbHNfbWluID0gMSwKKwkJLmNoYW5uZWxz X21heCA9IDIsCisJCS5yYXRlX21pbiA9CTgwMDAsCisJCS5yYXRlX21heCA9CTQ4MDAwLAorCQku cmF0ZXMgPSBTTkRSVl9QQ01fUkFURV84MDAwXzQ4MDAwLAorCQkuZm9ybWF0cyA9IEFMQzU2MzJf Rk9STUFUUyx9LAorCS5jYXB0dXJlID0geworCQkuc3RyZWFtX25hbWUgPSAiSGlGaSBDYXB0dXJl IiwKKwkJLmNoYW5uZWxzX21pbiA9IDEsCisJCS5jaGFubmVsc19tYXggPSAyLAorCQkucmF0ZV9t aW4gPQk4MDAwLAorCQkucmF0ZV9tYXggPQk0ODAwMCwKKwkJLnJhdGVzID0gU05EUlZfUENNX1JB VEVfODAwMF80ODAwMCwKKwkJLmZvcm1hdHMgPSBBTEM1NjMyX0ZPUk1BVFMsfSwKKworCS5vcHMg PSAmYWxjNTYzMl9kYWlfb3BzLAorCS5zeW1tZXRyaWNfcmF0ZXMgPSAxLAorfTsKKworc3RhdGlj IGludCBhbGM1NjMyX3N1c3BlbmQoc3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjLCBwbV9tZXNz YWdlX3QgbWVzZykKK3sKKwlhbGM1NjMyX3NldF9iaWFzX2xldmVsKGNvZGVjLCBTTkRfU09DX0JJ QVNfT0ZGKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhbGM1NjMyX3Jlc3VtZShzdHJ1 Y3Qgc25kX3NvY19jb2RlYyAqY29kZWMpCit7CisJaW50IHJldDsKKworCS8qIG1hcmsgY2FjaGUg YXMgbmVlZGVkIHRvIHN5bmMgKi8KKwljb2RlYy0+Y2FjaGVfc3luYyA9IDE7CisKKwlyZXQgPSBz bmRfc29jX2NhY2hlX3N5bmMoY29kZWMpOworCWlmIChyZXQgIT0gMCkgeworCQlkZXZfZXJyKGNv ZGVjLT5kZXYsICJGYWlsZWQgdG8gc3luYyBjYWNoZTogJWRcbiIsIHJldCk7CisJCXJldHVybiBy ZXQ7CisJfQorCisJYWxjNTYzMl9zZXRfYmlhc19sZXZlbChjb2RlYywgU05EX1NPQ19CSUFTX1NU QU5EQlkpOworCXJldHVybiAwOworfQorCisjZGVmaW5lIEFMQzU2MzJfUkVDX1VOTVVURSAoQUxD NTYzMl9BRENfUkVDX01JQzIgXAorCQl8IEFMQzU2MzJfQURDX1JFQ19MSU5FX0lOIHwgQUxDNTYz Ml9BRENfUkVDX0FVWCBcCisJCXwgQUxDNTYzMl9BRENfUkVDX0hQIHwgQUxDNTYzMl9BRENfUkVD X1NQSyBcCisJCXwgQUxDNTYzMl9BRENfUkVDX01PTk9NSVgpCisKKyNkZWZpbmUgQUxDNTYzMl9N SUNfUk9VVEUgKEFMQzU2MzJfTUlDX1JPVVRFX0hQIFwKKwkJfCBBTEM1NjMyX01JQ19ST1VURV9T UEsgXAorCQl8IEFMQzU2MzJfTUlDX1JPVVRFX01PTk9NSVgpCisKKyNkZWZpbmUgQUxDNTYzMl9Q V1JfREVGQVVMVCAoQUxDNTYzMl9QV1JfQURDX1NUQVRVUyBcCisJCXwgQUxDNTYzMl9QV1JfREFD X1NUQVRVUyBcCisJCXwgQUxDNTYzMl9QV1JfQU1JWF9TVEFUVVMgXAorCQl8IEFMQzU2MzJfUFdS X1ZSRUZfU1RBVFVTKQorCisjZGVmaW5lIEFMQzU2MzJfQURDX1JFQ19HQUlOX0NPTVAoeCkgKGlu dCkoKHggLSBBTEM1NjMyX0FEQ19SRUNfR0FJTl9CQVNFKSBcCisJCS8gQUxDNTYzMl9BRENfUkVD X0dBSU5fU1RFUCkKKworI2RlZmluZSBBTEM1NjMyX01JQ19CT09TVF9DT01QKHgpIChpbnQpKHgg LyBBTEM1NjMyX01JQ19CT09TVF9TVEVQKQorCisjZGVmaW5lIEFMQzU2MzJfU1BLX09VVF9WT0xf Q09NUCh4KSAoaW50KSh4IC8gQUxDNTYzMl9TUEtfT1VUX1ZPTF9TVEVQKQorCitzdGF0aWMgaW50 IGFsYzU2MzJfcHJvYmUoc3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjKQoreworCXN0cnVjdCBh bGM1NjMyX3ByaXYgKmFsYzU2MzIgPSBzbmRfc29jX2NvZGVjX2dldF9kcnZkYXRhKGNvZGVjKTsK KwlpbnQgcmV0OworCisJcmV0ID0gc25kX3NvY19jb2RlY19zZXRfY2FjaGVfaW8oY29kZWMsIDgs IDE2LCBhbGM1NjMyLT5jb250cm9sX3R5cGUpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIo Y29kZWMtPmRldiwgIkZhaWxlZCB0byBzZXQgY2FjaGUgSS9POiAlZFxuIiwgcmV0KTsKKwkJcmV0 dXJuIHJldDsKKwl9CisKKwlhbGM1NjMyX3Jlc2V0KGNvZGVjKTsKKworCS8qIHBvd2VyIG9uIGRl dmljZSAgKi8KKwlhbGM1NjMyX3NldF9iaWFzX2xldmVsKGNvZGVjLCBTTkRfU09DX0JJQVNfU1RB TkRCWSk7CisKKwlzd2l0Y2ggKGFsYzU2MzItPmlkKSB7CisJY2FzZSAweDVjOgorCQlzbmRfc29j X2FkZF9jb250cm9scyhjb2RlYywgYWxjNTYzMl92b2xfc25kX2NvbnRyb2xzLAorCQkJQVJSQVlf U0laRShhbGM1NjMyX3ZvbF9zbmRfY29udHJvbHMpKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworLyogcG93ZXIgZG93biBj aGlwICovCitzdGF0aWMgaW50IGFsYzU2MzJfcmVtb3ZlKHN0cnVjdCBzbmRfc29jX2NvZGVjICpj b2RlYykKK3sKKwlhbGM1NjMyX3NldF9iaWFzX2xldmVsKGNvZGVjLCBTTkRfU09DX0JJQVNfT0ZG KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBzbmRfc29jX2NvZGVjX2RyaXZlciBz b2NfY29kZWNfZGV2aWNlX2FsYzU2MzIgPSB7CisJLnByb2JlID0gYWxjNTYzMl9wcm9iZSwKKwku cmVtb3ZlID0gYWxjNTYzMl9yZW1vdmUsCisJLnN1c3BlbmQgPSBhbGM1NjMyX3N1c3BlbmQsCisJ LnJlc3VtZSA9IGFsYzU2MzJfcmVzdW1lLAorCS5zZXRfYmlhc19sZXZlbCA9IGFsYzU2MzJfc2V0 X2JpYXNfbGV2ZWwsCisJLnJlZ193b3JkX3NpemUgPSBzaXplb2YodTE2KSwKKwkucmVnX2NhY2hl X3N0ZXAgPSAyLAorCS5yZWdfY2FjaGVfZGVmYXVsdCA9IGFsYzU2MzJfcmVnX2RlZmF1bHRzLAor CS5yZWdfY2FjaGVfc2l6ZSA9IEFSUkFZX1NJWkUoYWxjNTYzMl9yZWdfZGVmYXVsdHMpLAorCS52 b2xhdGlsZV9yZWdpc3RlciA9IGFsYzU2MzJfdm9sYXRpbGVfcmVnaXN0ZXIsCisJLmNvbnRyb2xz ID0gYWxjNTYzMl9zbmRfY29udHJvbHMsCisJLm51bV9jb250cm9scyA9IEFSUkFZX1NJWkUoYWxj NTYzMl9zbmRfY29udHJvbHMpLAorCS5kYXBtX3dpZGdldHMgPSBhbGM1NjMyX2RhcG1fd2lkZ2V0 cywKKwkubnVtX2RhcG1fd2lkZ2V0cyA9IEFSUkFZX1NJWkUoYWxjNTYzMl9kYXBtX3dpZGdldHMp LAorCS5kYXBtX3JvdXRlcyA9IGFsYzU2MzJfZGFwbV9yb3V0ZXMsCisJLm51bV9kYXBtX3JvdXRl cyA9IEFSUkFZX1NJWkUoYWxjNTYzMl9kYXBtX3JvdXRlcyksCit9OworCisvKgorICogYWxjNTYz MiAyIHdpcmUgYWRkcmVzcyBpcyBkZXRlcm1pbmVkIGJ5IEExIHBpbgorICogc3RhdGUgZHVyaW5n IHBvd2VydXAuCisgKiAgICBsb3cgID0gMHgxYQorICogICAgaGlnaCA9IDB4MWIKKyAqLworc3Rh dGljIGludCBhbGM1NjMyX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJ CWNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKK3sKKwlzdHJ1Y3QgYWxjNTYzMl9wcml2 ICphbGM1NjMyOworCWludCByZXQsIHZpZDEsIHZpZDI7CisKKwl2aWQxID0gaTJjX3NtYnVzX3Jl YWRfd29yZF9kYXRhKGNsaWVudCwgQUxDNTYzMl9WRU5ET1JfSUQxKTsKKwlpZiAodmlkMSA8IDAp IHsKKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICJmYWlsZWQgdG8gcmVhZCBJMkNcbiIpOworCQly ZXR1cm4gLUVJTzsKKwl9IGVsc2UgeworCQlkZXZfaW5mbygmY2xpZW50LT5kZXYsICJnb3Qgdmlk MTogJXhcbiIsIHZpZDEpOworCX0KKwl2aWQxID0gKCh2aWQxICYgMHhmZikgPDwgOCkgfCAodmlk MSA+PiA4KTsKKworCXZpZDIgPSBpMmNfc21idXNfcmVhZF93b3JkX2RhdGEoY2xpZW50LCBBTEM1 NjMyX1ZFTkRPUl9JRDIpOworCWlmICh2aWQyIDwgMCkgeworCQlkZXZfZXJyKCZjbGllbnQtPmRl diwgImZhaWxlZCB0byByZWFkIEkyQ1xuIik7CisJCXJldHVybiAtRUlPOworCX0gZWxzZSB7CisJ CWRldl9pbmZvKCZjbGllbnQtPmRldiwgImdvdCB2aWQyOiAleFxuIiwgdmlkMik7CisJfQorCXZp ZDIgPSAodmlkMiAmIDB4ZmYpOworCisJaWYgKCh2aWQxICE9IDB4MTBlYykgfHwgKHZpZDIgIT0g aWQtPmRyaXZlcl9kYXRhKSkgeworCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgInVua25vd24gb3Ig d3JvbmcgY29kZWNcbiIpOworCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgIkV4cGVjdGVkICV4OiVs eCwgZ290ICV4OiV4XG4iLAorCQkJCTB4MTBlYywgaWQtPmRyaXZlcl9kYXRhLAorCQkJCXZpZDEs IHZpZDIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlhbGM1NjMyID0gZGV2bV9remFsbG9j KCZjbGllbnQtPmRldiwKKwkJCSBzaXplb2Yoc3RydWN0IGFsYzU2MzJfcHJpdiksIEdGUF9LRVJO RUwpOworCWlmIChhbGM1NjMyID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCisJYWxjNTYz Mi0+aWQgPSB2aWQyOworCXN3aXRjaCAoYWxjNTYzMi0+aWQpIHsKKwljYXNlIDB4NWM6CisJCWFs YzU2MzJfZGFpLm5hbWUgPSAiYWxjNTYzMi1oaWZpIjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgYWxjNTYz Mik7CisJYWxjNTYzMi0+Y29udHJvbF9kYXRhID0gY2xpZW50OworCWFsYzU2MzItPmNvbnRyb2xf dHlwZSA9IFNORF9TT0NfSTJDOworCW11dGV4X2luaXQoJmFsYzU2MzItPm11dGV4KTsKKworCXJl dCA9ICBzbmRfc29jX3JlZ2lzdGVyX2NvZGVjKCZjbGllbnQtPmRldiwKKwkJJnNvY19jb2RlY19k ZXZpY2VfYWxjNTYzMiwgJmFsYzU2MzJfZGFpLCAxKTsKKwlpZiAocmV0ICE9IDApCisJCWRldl9l cnIoJmNsaWVudC0+ZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGNvZGVjOiAlZFxuIiwgcmV0KTsK KworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYWxjNTYzMl9pMmNfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpCit7CisJc25kX3NvY191bnJlZ2lzdGVyX2NvZGVjKCZjbGll bnQtPmRldik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2 aWNlX2lkIGFsYzU2MzJfaTJjX3RhYmxlW10gPSB7CisJeyJhbGM1NjMyIiwgMHg1Y30sCisJe30K K307CitNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgYWxjNTYzMl9pMmNfdGFibGUpOworCisvKiBp MmMgY29kZWMgY29udHJvbCBsYXllciAqLworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGFsYzU2 MzJfaTJjX2RyaXZlciA9IHsKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJhbGM1NjMyIiwKKwkJ Lm93bmVyID0gVEhJU19NT0RVTEUsCisJfSwKKwkucHJvYmUgPSBhbGM1NjMyX2kyY19wcm9iZSwK KwkucmVtb3ZlID0gIF9fZGV2ZXhpdF9wKGFsYzU2MzJfaTJjX3JlbW92ZSksCisJLmlkX3RhYmxl ID0gYWxjNTYzMl9pMmNfdGFibGUsCit9OworCitzdGF0aWMgaW50IF9faW5pdCBhbGM1NjMyX21v ZGluaXQodm9pZCkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gaTJjX2FkZF9kcml2ZXIoJmFsYzU2 MzJfaTJjX2RyaXZlcik7CisJaWYgKHJldCAhPSAwKSB7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6 IGNhbid0IGFkZCBpMmMgZHJpdmVyIiwgX19mdW5jX18pOworCQlyZXR1cm4gcmV0OworCX0KKwor CXJldHVybiByZXQ7Cit9Cittb2R1bGVfaW5pdChhbGM1NjMyX21vZGluaXQpOworCitzdGF0aWMg dm9pZCBfX2V4aXQgYWxjNTYzMl9tb2RleGl0KHZvaWQpCit7CisJaTJjX2RlbF9kcml2ZXIoJmFs YzU2MzJfaTJjX2RyaXZlcik7Cit9Cittb2R1bGVfZXhpdChhbGM1NjMyX21vZGV4aXQpOworCitN T0RVTEVfREVTQ1JJUFRJT04oIkFTb0MgQUxDNTYzMiBkcml2ZXIiKTsKK01PRFVMRV9BVVRIT1Io Ikxlb24gUm9tYW5vdnNreSA8bGVvbkBsZW9uLm51PiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIp OwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9hbGM1NjMyLmggYi9zb3VuZC9zb2MvY29k ZWNzL2FsYzU2MzIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjRjMGZk Ci0tLSAvZGV2L251bGwKKysrIGIvc291bmQvc29jL2NvZGVjcy9hbGM1NjMyLmgKQEAgLTAsMCAr MSwyNDkgQEAKKy8qCisqIGFsYzU2MzIuaCAgLS0gIEFMQzU2MzIgQUxTQSBTb0MgQXVkaW8gQ29k ZWMKKyoKKyogQ29weXJpZ2h0IChDKSAyMDExIFRoZSBBQzEwMCBLZXJuZWwgVGVhbSA8YWMxMDBA bGlzdHMubGF1Y2hwYWQubmV0PgorKgorKiBBdXRob3JzOiAgTGVvbiBSb21hbm92c2t5IDxsZW9u QGxlb24ubnU+CisqICAgICAgICAgICBBbmRyZXkgRGFuaW4gPGRhbmluZHJleUBtYWlsLnJ1Pgor KiAgICAgICAgICAgSWx5YSBQZXRyb3YgPGlseWEubXVyb21lY0BnbWFpbC5jb20+CisqICAgICAg ICAgICBNYXJjIERpZXRyaWNoIDxtYXJ2aW4yNEBnbXguZGU+CisqCisqIEJhc2VkIG9uIGFsYzU2 MjMuaCBieSBBcm5hdWQgUGF0YXJkCisqCisqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisqIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisqIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorKi8KKworI2lmbmRlZiBf QUxDNTYzMl9ICisjZGVmaW5lIF9BTEM1NjMyX0gKKworI2RlZmluZSBBTEM1NjMyX1JFU0VUCQkJ CTB4MDAKKy8qIHNwZWFrZXIgb3V0cHV0IHZvbAkJICAgMiAgICAyICAgICAgICAgICAqLworLyog bGluZSBvdXRwdXQgdm9sICAgICAgICAgICAgICAgICAgICAgIDQgICAgMiAgICAgICovCisvKiBI UCBvdXRwdXQgdm9sCQkgICA0ICAgIDAgICAgNCAgICAgICovCisjZGVmaW5lIEFMQzU2MzJfU1BL X09VVF9WT0wJCQkweDAyIC8qIHNwZSBvdXQgdm9sICovCisjZGVmaW5lIEFMQzU2MzJfU1BLX09V VF9WT0xfU1RFUAkJMS41CisjZGVmaW5lIEFMQzU2MzJfSFBfT1VUX1ZPTAkJCTB4MDQgLyogaHAg b3V0IHZvbCAqLworI2RlZmluZSBBTEM1NjMyX0FVWF9PVVRfVk9MCQkJMHgwNiAvKiBhdXggb3V0 IHZvbCAqLworI2RlZmluZSBBTEM1NjMyX1BIT05FX0lOX1ZPTAkJCTB4MDggLyogcGhvbmUgaW4g dm9sICovCisjZGVmaW5lIEFMQzU2MzJfTElORV9JTl9WT0wJCQkweDBBIC8qIGxpbmUgaW4gdm9s ICovCisjZGVmaW5lIEFMQzU2MzJfU1RFUkVPX0RBQ19JTl9WT0wJCTB4MEMgLyogc3RlcmVvIGRh YyBpbiB2b2wgKi8KKyNkZWZpbmUgQUxDNTYzMl9NSUNfVk9MCQkJCTB4MEUgLyogbWljIGluIHZv bCAqLworLyogc3Rlcm8gZGFjL21pYyByb3V0aW5nICovCisjZGVmaW5lIEFMQzU2MzJfTUlDX1JP VVRJTkdfQ1RSTAkJMHgxMAorI2RlZmluZSBBTEM1NjMyX01JQ19ST1VURV9NT05PTUlYCQkoMSA8 PCAwKQorI2RlZmluZSBBTEM1NjMyX01JQ19ST1VURV9TUEsJCQkoMSA8PCAxKQorI2RlZmluZSBB TEM1NjMyX01JQ19ST1VURV9IUAkJCSgxIDw8IDIpCisKKyNkZWZpbmUgQUxDNTYzMl9BRENfUkVD X0dBSU4JCQkweDEyIC8qIHJlYyBnYWluICovCisjZGVmaW5lIEFMQzU2MzJfQURDX1JFQ19HQUlO X1JBTkdFCQkweDFGMUYKKyNkZWZpbmUgQUxDNTYzMl9BRENfUkVDX0dBSU5fQkFTRQkJKC0xNi41 KQorI2RlZmluZSBBTEM1NjMyX0FEQ19SRUNfR0FJTl9TVEVQCQkxLjUKKworI2RlZmluZSBBTEM1 NjMyX0FEQ19SRUNfTUlYRVIJCQkweDE0IC8qIG1peGVyIGNvbnRyb2wgKi8KKyNkZWZpbmUgQUxD NTYzMl9BRENfUkVDX01JQzEJCQkoMSA8PCA2KQorI2RlZmluZSBBTEM1NjMyX0FEQ19SRUNfTUlD MgkJCSgxIDw8IDUpCisjZGVmaW5lIEFMQzU2MzJfQURDX1JFQ19MSU5FX0lOCQkJKDEgPDwgNCkK KyNkZWZpbmUgQUxDNTYzMl9BRENfUkVDX0FVWAkJCSgxIDw8IDMpCisjZGVmaW5lIEFMQzU2MzJf QURDX1JFQ19IUAkJCSgxIDw8IDIpCisjZGVmaW5lIEFMQzU2MzJfQURDX1JFQ19TUEsJCQkoMSA8 PCAxKQorI2RlZmluZSBBTEM1NjMyX0FEQ19SRUNfTU9OT01JWAkJCSgxIDw8IDApCisKKyNkZWZp bmUgQUxDNTYzMl9WT0lDRV9EQUNfVk9MCQkJMHgxOCAvKiB2b2ljZSBkYWMgdm9sICovCisvKiBB TEM1NjMyX09VVFBVVF9NSVhFUl9DVFJMIDoJCQkqLworLyogc2FtZSByZW1hcmsgYXMgZm9yIHJl ZyAyIGxpbmUgdnMgc3BlYWtlcgkqLworI2RlZmluZSBBTEM1NjMyX09VVFBVVF9NSVhFUl9DVFJM CQkweDFDIC8qIG91dCBtaXggY3RybCAqLworI2RlZmluZSBBTEM1NjMyX09VVFBVVF9NSVhFUl9S UAkJCSgxIDw8IDE0KQorI2RlZmluZSBBTEM1NjMyX09VVFBVVF9NSVhFUl9XRUVLCQkoMSA8PCAx MikKKyNkZWZpbmUgQUxDNTYzMl9PVVRQVVRfTUlYRVJfSFAJCQkoMSA8PCAxMCkKKyNkZWZpbmUg QUxDNTYzMl9PVVRQVVRfTUlYRVJfQVVYX1NQSwkJKDIgPDwgIDYpCisjZGVmaW5lIEFMQzU2MzJf T1VUUFVUX01JWEVSX0FVWF9IUF9MUiAgICAgICAgICAoMSA8PCA2KQorI2RlZmluZSBBTEM1NjMy X09VVFBVVF9NSVhFUl9IUF9SICAgICAgICAgICAgICAgKDEgPDwgOCkKKyNkZWZpbmUgQUxDNTYz Ml9PVVRQVVRfTUlYRVJfSFBfTCAgICAgICAgICAgICAgICgxIDw8IDkpCisKKyNkZWZpbmUgQUxD NTYzMl9NSUNfQ1RSTAkJCTB4MjIgLyogbWljIHBob25lIGN0cmwgKi8KKyNkZWZpbmUgQUxDNTYz Ml9NSUNfQk9PU1RfQllQQVNTCQkwCisjZGVmaW5lIEFMQzU2MzJfTUlDX0JPT1NUXzIwREIJCQkx CisjZGVmaW5lIEFMQzU2MzJfTUlDX0JPT1NUXzMwREIJCQkyCisjZGVmaW5lIEFMQzU2MzJfTUlD X0JPT1NUXzQwREIJCQkzCisKKyNkZWZpbmUgQUxDNTYzMl9ESUdJX0JPT1NUX0NUUkwJCQkweDI0 IC8qIGRpZ2kgbWljIC8gYm9zdCBjdGwgKi8KKyNkZWZpbmUgQUxDNTYzMl9NSUNfQk9PU1RfUkFO R0UJCQk3CisjZGVmaW5lIEFMQzU2MzJfTUlDX0JPT1NUX1NURVAJCQk2CisjZGVmaW5lIEFMQzU2 MzJfUFdSX0RPV05fQ1RSTF9TVEFUVVMJCTB4MjYKKyNkZWZpbmUgQUxDNTYzMl9QV1JfRE9XTl9D VFJMX1NUQVRVU19NQVNLCTB4RUYwMAorI2RlZmluZSBBTEM1NjMyX1BXUl9WUkVGX1BSMwkJCSgx IDw8IDExKQorI2RlZmluZSBBTEM1NjMyX1BXUl9WUkVGX1BSMgkJCSgxIDw8IDEwKQorI2RlZmlu ZSBBTEM1NjMyX1BXUl9WUkVGX1NUQVRVUwkJCSgxIDw8IDMpCisjZGVmaW5lIEFMQzU2MzJfUFdS X0FNSVhfU1RBVFVTCQkJKDEgPDwgMikKKyNkZWZpbmUgQUxDNTYzMl9QV1JfREFDX1NUQVRVUwkJ CSgxIDw8IDEpCisjZGVmaW5lIEFMQzU2MzJfUFdSX0FEQ19TVEFUVVMJCQkoMSA8PCAwKQorLyog c3RlcmVvL3ZvaWNlIERBQyAvIHN0ZXJlbyBhZGMgZnVuYyBjdHJsICovCisjZGVmaW5lIEFMQzU2 MzJfREFDX0ZVTkNfU0VMRUNUCQkJMHgyRQorCisvKiBNYWluIHNlcmlhbCBkYXRhIHBvcnQgY3Ry bCAoaTJzKSAqLworI2RlZmluZSBBTEM1NjMyX0RBSV9DT05UUk9MCQkJMHgzNAorCisjZGVmaW5l IEFMQzU2MzJfREFJX1NEUF9NQVNURVJfTU9ERQkJKDAgPDwgMTUpCisjZGVmaW5lIEFMQzU2MzJf REFJX1NEUF9TTEFWRV9NT0RFCQkoMSA8PCAxNSkKKyNkZWZpbmUgQUxDNTYzMl9EQUlfU0FETFJD S19NT0RFCQkoMSA8PCAxNCkKKy8qIDA6dm9pY2UsIDE6bWFpbiAqLworI2RlZmluZSBBTEM1NjMy X0RBSV9NQUlOX0kyU19TWVNDTEtfU0VMCQkoMSA8PCAgOCkKKyNkZWZpbmUgQUxDNTYzMl9EQUlf TUFJTl9JMlNfQkNMS19QT0xfQ1RSTAkoMSA8PCAgNykKKy8qIDA6bm9ybWFsLCAxOmludmVydCAq LworI2RlZmluZSBBTEM1NjMyX0RBSV9NQUlOX0kyU19MUkNLX0lOVgkJKDEgPDwgIDYpCisjZGVm aW5lIEFMQzU2MzJfREFJX0kyU19ETF9NQVNLCQkJKDMgPDwgIDIpCisjZGVmaW5lIEFMQzU2MzJf REFJX0kyU19ETF84CQkJKDMgPDwgIDIpCisjZGVmaW5lCUFMQzU2MzJfREFJX0kyU19ETF8yNAkJ CSgyIDw8ICAyKQorI2RlZmluZQlBTEM1NjMyX0RBSV9JMlNfRExfMjAJCQkoMSA8PCAgMikKKyNk ZWZpbmUgQUxDNTYzMl9EQUlfSTJTX0RMXzE2CQkJKDAgPDwgIDIpCisjZGVmaW5lIEFMQzU2MzJf REFJX0kyU19ERl9NQVNLCQkJKDMgPDwgIDApCisjZGVmaW5lIEFMQzU2MzJfREFJX0kyU19ERl9Q Q01fQgkJKDMgPDwgIDApCisjZGVmaW5lCUFMQzU2MzJfREFJX0kyU19ERl9QQ01fQQkJKDIgPDwg IDApCisjZGVmaW5lIEFMQzU2MzJfREFJX0kyU19ERl9MRUZUCQkJKDEgPDwgIDApCisjZGVmaW5l IEFMQzU2MzJfREFJX0kyU19ERl9JMlMJCQkoMCA8PCAgMCkKKy8qIGV4dGVuZCBzZXJpYWwgZGF0 YSBwb3J0IGNvbnRyb2wgKFZvREFDX2kyYy9wY20pICovCisjZGVmaW5lIEFMQzU2MzJfREFJX0NP TlRST0wyCQkJMHgzNgorLyogMDpncGlvIGZ1bmMsIDE6dm9pY2UgcGNtICovCisjZGVmaW5lIEFM QzU2MzJfREFJX1ZPSUNFX1BDTV9FTkFCTEUJCSgxIDw8IDE1KQorLyogMDptYXN0ZXIsIDE6c2xh dmUgKi8KKyNkZWZpbmUgQUxDNTYzMl9EQUlfVk9JQ0VfTU9ERV9TRUwJCSgxIDw8IDE0KQorLyog MDpkaXNhYmxlLCAxOmVuYWJsZSAqLworI2RlZmluZSBBTEM1NjMyX0RBSV9IUEZfQ0xLX0NUUkwJ CSgxIDw8IDEzKQorLyogMDptYWluLCAxOnZvaWNlICovCisjZGVmaW5lIEFMQzU2MzJfREFJX1ZP SUNFX0kyU19TWVNDTEtfU0VMCSgxIDw8ICA4KQorLyogMDpub3JtYWwsIDE6aW52ZXJ0ICovCisj ZGVmaW5lIEFMQzU2MzJfREFJX1ZPSUNFX1ZCQ0xLX1NZU0NMS19TRUwJKDEgPDwgIDcpCisvKiAw Om5vcm1hbCwgMTppbnZlcnQgKi8KKyNkZWZpbmUgQUxDNTYzMl9EQUlfVk9JQ0VfSTJTX0xSX0lO VgkJKDEgPDwgIDYpCisjZGVmaW5lIEFMQzU2MzJfREFJX1ZPSUNFX0RMX01BU0sJCSgzIDw8ICAy KQorI2RlZmluZSBBTEM1NjMyX0RBSV9WT0lDRV9ETF8xNgkJCSgwIDw8ICAyKQorI2RlZmluZSBB TEM1NjMyX0RBSV9WT0lDRV9ETF8yMAkJCSgxIDw8ICAyKQorI2RlZmluZSBBTEM1NjMyX0RBSV9W T0lDRV9ETF8yNAkJCSgyIDw8ICAyKQorI2RlZmluZSBBTEM1NjMyX0RBSV9WT0lDRV9ETF84CQkJ KDMgPDwgIDIpCisjZGVmaW5lIEFMQzU2MzJfREFJX1ZPSUNFX0RGX01BU0sJCSgzIDw8ICAwKQor I2RlZmluZSBBTEM1NjMyX0RBSV9WT0lDRV9ERl9JMlMJCSgwIDw8ICAwKQorI2RlZmluZSBBTEM1 NjMyX0RBSV9WT0lDRV9ERl9MRUZUCQkoMSA8PCAgMCkKKyNkZWZpbmUgQUxDNTYzMl9EQUlfVk9J Q0VfREZfUENNX0EJCSgyIDw8ICAwKQorI2RlZmluZSBBTEM1NjMyX0RBSV9WT0lDRV9ERl9QQ01f QgkJKDMgPDwgIDApCisKKyNkZWZpbmUJQUxDNTYzMl9QV1JfTUFOQUdfQUREMQkJCTB4M0EKKyNk ZWZpbmUJQUxDNTYzMl9QV1JfTUFOQUdfQUREMV9NQVNLCQkweEVGRkYKKyNkZWZpbmUgQUxDNTYz Ml9QV1JfQUREMV9EQUNfTF9FTgkJKDEgPDwgMTUpCisjZGVmaW5lIEFMQzU2MzJfUFdSX0FERDFf REFDX1JfRU4JCSgxIDw8IDE0KQorI2RlZmluZSBBTEM1NjMyX1BXUl9BREQxX1pFUk9fQ1JPU1MJ CSgxIDw8IDEzKQorI2RlZmluZSBBTEM1NjMyX1BXUl9BREQxX01BSU5fSTJTX0VOCQkoMSA8PCAx MSkKKyNkZWZpbmUgQUxDNTYzMl9QV1JfQUREMV9TUEtfQU1QX0VOCQkoMSA8PCAxMCkKKyNkZWZp bmUgQUxDNTYzMl9QV1JfQUREMV9IUF9PVVRfQU1QCQkoMSA8PCAgOSkKKyNkZWZpbmUgQUxDNTYz Ml9QV1JfQUREMV9IUF9PVVRfRU5IX0FNUAkJKDEgPDwgIDgpCisjZGVmaW5lIEFMQzU2MzJfUFdS X0FERDFfVk9JQ0VfREFDX01JWAkJKDEgPDwgIDcpCisjZGVmaW5lCUFMQzU2MzJfUFdSX0FERDFf U09GVEdFTl9FTgkJKDEgPDwgIDYpCisjZGVmaW5lCUFMQzU2MzJfUFdSX0FERDFfTUlDMV9TSE9S VF9DVVJSCSgxIDw8ICA1KQorI2RlZmluZQlBTEM1NjMyX1BXUl9BREQxX01JQzJfU0hPUlRfQ1VS UgkoMSA8PCAgNCkKKyNkZWZpbmUJQUxDNTYzMl9QV1JfQUREMV9NSUMxX0VOCQkoMSA8PCAgMykK KyNkZWZpbmUJQUxDNTYzMl9QV1JfQUREMV9NSUMyX0VOCQkoMSA8PCAgMikKKyNkZWZpbmUgQUxD NTYzMl9QV1JfQUREMV9NQUlOX0JJQVMJCSgxIDw8ICAxKQorI2RlZmluZSBBTEM1NjMyX1BXUl9B REQxX0RBQ19SRUYJCSgxIDw8ICAwKQorCisjZGVmaW5lIEFMQzU2MzJfUFdSX01BTkFHX0FERDIJ CQkweDNDCisjZGVmaW5lIEFMQzU2MzJfUFdSX01BTkFHX0FERDJfTUFTSwkJMHg3RkZGCisjZGVm aW5lIEFMQzU2MzJfUFdSX0FERDJfUExMMQkJCSgxIDw8IDE1KQorI2RlZmluZSBBTEM1NjMyX1BX Ul9BREQyX1BMTDIJCQkoMSA8PCAxNCkKKyNkZWZpbmUgQUxDNTYzMl9QV1JfQUREMl9WUkVGCQkJ KDEgPDwgMTMpCisjZGVmaW5lIEFMQzU2MzJfUFdSX0FERDJfT1ZUX0RFVAkJKDEgPDwgMTIpCisj ZGVmaW5lIEFMQzU2MzJfUFdSX0FERDJfVk9JQ0VfREFDCQkoMSA8PCAxMCkKKyNkZWZpbmUgQUxD NTYzMl9QV1JfQUREMl9MX0RBQ19DTEsJCSgxIDw8ICA5KQorI2RlZmluZSBBTEM1NjMyX1BXUl9B REQyX1JfREFDX0NMSwkJKDEgPDwgIDgpCisjZGVmaW5lIEFMQzU2MzJfUFdSX0FERDJfTF9BRENf Q0xLX0dBSU4JCSgxIDw8ICA3KQorI2RlZmluZSBBTEM1NjMyX1BXUl9BREQyX1JfQURDX0NMS19H QUlOCQkoMSA8PCAgNikKKyNkZWZpbmUgQUxDNTYzMl9QV1JfQUREMl9MX0hQX01JWEVSCQkoMSA8 PCAgNSkKKyNkZWZpbmUgQUxDNTYzMl9QV1JfQUREMl9SX0hQX01JWEVSCQkoMSA8PCAgNCkKKyNk ZWZpbmUgQUxDNTYzMl9QV1JfQUREMl9TUEtfTUlYRVIJCSgxIDw8ICAzKQorI2RlZmluZSBBTEM1 NjMyX1BXUl9BREQyX01PTk9fTUlYRVIJCSgxIDw8ICAyKQorI2RlZmluZSBBTEM1NjMyX1BXUl9B REQyX0xfQURDX1JFQ19NSVhFUgkoMSA8PCAgMSkKKyNkZWZpbmUgQUxDNTYzMl9QV1JfQUREMl9S X0FEQ19SRUNfTUlYRVIJKDEgPDwgIDApCisKKyNkZWZpbmUgQUxDNTYzMl9QV1JfTUFOQUdfQURE MwkJCTB4M0UKKyNkZWZpbmUgQUxDNTYzMl9QV1JfTUFOQUdfQUREM19NQVNLCQkweDdDRkYKKyNk ZWZpbmUgQUxDNTYzMl9QV1JfQUREM19BVVhPVVRfVk9MCQkoMSA8PCAxNCkKKyNkZWZpbmUgQUxD NTYzMl9QV1JfQUREM19TUEtfTF9PVVQJCSgxIDw8IDEzKQorI2RlZmluZSBBTEM1NjMyX1BXUl9B REQzX1NQS19SX09VVAkJKDEgPDwgMTIpCisjZGVmaW5lIEFMQzU2MzJfUFdSX0FERDNfSFBfTF9P VVRfVk9MCQkoMSA8PCAxMSkKKyNkZWZpbmUgQUxDNTYzMl9QV1JfQUREM19IUF9SX09VVF9WT0wJ CSgxIDw8IDEwKQorI2RlZmluZSBBTEM1NjMyX1BXUl9BREQzX0xJTkVJTl9MX1ZPTAkJKDEgPDwg IDcpCisjZGVmaW5lIEFMQzU2MzJfUFdSX0FERDNfTElORUlOX1JfVk9MCQkoMSA8PCAgNikKKyNk ZWZpbmUgQUxDNTYzMl9QV1JfQUREM19BVVhJTl9WT0wJCSgxIDw8ICA1KQorI2RlZmluZSBBTEM1 NjMyX1BXUl9BREQzX0FVWElOX01JWAkJKDEgPDwgIDQpCisjZGVmaW5lIEFMQzU2MzJfUFdSX0FE RDNfTUlDMV9WT0wJCSgxIDw8ICAzKQorI2RlZmluZSBBTEM1NjMyX1BXUl9BREQzX01JQzJfVk9M CQkoMSA8PCAgMikKKyNkZWZpbmUgQUxDNTYzMl9QV1JfQUREM19NSUMxX0JPT1NUX0FECQkoMSA8 PCAgMSkKKyNkZWZpbmUgQUxDNTYzMl9QV1JfQUREM19NSUMyX0JPT1NUX0FECQkoMSA8PCAgMCkK KworI2RlZmluZSBBTEM1NjMyX0dQQ1IxCQkJCTB4NDAKKyNkZWZpbmUgQUxDNTYzMl9HUENSMV9D TEtfU1lTX1NSQ19TRUxfUExMMQkoMSA8PCAxNSkKKyNkZWZpbmUgQUxDNTYzMl9HUENSMV9DTEtf U1lTX1NSQ19TRUxfTUNMSwkoMCA8PCAxNSkKKyNkZWZpbmUgQUxDNTYzMl9HUENSMV9EQUNfSElf RkxUX0VOCQkoMSA8PCAxMCkKKyNkZWZpbmUgQUxDNTYzMl9HUENSMV9TUEtfQU1QX0NUUkwJCSg3 IDw8ICAxKQorI2RlZmluZSBBTEM1NjMyX0dQQ1IxX1ZERF8xMDAJCQkoNSA8PCAgMSkKKyNkZWZp bmUgQUxDNTYzMl9HUENSMV9WRERfMTI1CQkJKDQgPDwgIDEpCisjZGVmaW5lIEFMQzU2MzJfR1BD UjFfVkREXzE1MAkJCSgzIDw8ICAxKQorI2RlZmluZSBBTEM1NjMyX0dQQ1IxX1ZERF8xNzUJCQko MiA8PCAgMSkKKyNkZWZpbmUgQUxDNTYzMl9HUENSMV9WRERfMjAwCQkJKDEgPDwgIDEpCisjZGVm aW5lIEFMQzU2MzJfR1BDUjFfVkREXzIyNQkJCSgwIDw8ICAxKQorCisjZGVmaW5lCUFMQzU2MzJf R1BDUjIJCQkJMHg0MgorI2RlZmluZSBBTEM1NjMyX0dQQ1IyX1BMTDFfU09VUl9TRUwJCSgzIDw8 IDEyKQorI2RlZmluZSBBTEM1NjMyX1BMTF9GUl9NQ0xLCQkJKDAgPDwgMTIpCisjZGVmaW5lIEFM QzU2MzJfUExMX0ZSX0JDTEsJCQkoMiA8PCAxMikKKyNkZWZpbmUgQUxDNTYzMl9QTExfRlJfVkJD TEsJCQkoMyA8PCAxMikKKyNkZWZpbmUgQUxDNTYzMl9HUENSMl9DTEtfUExMX1BSRV9ESVYxCQko MCA8PCAgMCkKKworI2RlZmluZSBBTEM1NjMyX1BMTDFfQ1RSTAkJCTB4NDQKKyNkZWZpbmUgQUxD NTYzMl9QTEwxX0NUUkxfTl9WQUwobikJCSgoKG4pICYgMHgwZikgPDwgOCkKKyNkZWZpbmUgQUxD NTYzMl9QTEwxX01fQllQQVNTCQkJKDEgPDwgIDcpCisjZGVmaW5lIEFMQzU2MzJfUExMMV9DVFJM X0tfVkFMKGspCQkoKChrKSAmIDB4MDcpIDw8IDQpCisjZGVmaW5lIEFMQzU2MzJfUExMMV9DVFJM X01fVkFMKG0pCQkoKChtKSAmIDB4MGYpIDw8IDApCisKKyNkZWZpbmUgQUxDNTYzMl9QTEwyX0NU UkwJCQkweDQ2CisjZGVmaW5lIEFMQzU2MzJfUExMMl9FTgkJCQkoMSA8PCAxNSkKKyNkZWZpbmUg QUxDNTYzMl9QTEwyX1JBVElPCQkJKDAgPDwgMTUpCisKKyNkZWZpbmUgQUxDNTYzMl9HUElPX1BJ Tl9DT05GSUcJCQkweDRDCisjZGVmaW5lIEFMQzU2MzJfR1BJT19QSU5fUE9MQVJJVFkJCTB4NEUK KyNkZWZpbmUgQUxDNTYzMl9HUElPX1BJTl9TVElDS1kJCQkweDUwCisjZGVmaW5lIEFMQzU2MzJf R1BJT19QSU5fV0FLRVVQCQkJMHg1MgorI2RlZmluZSBBTEM1NjMyX0dQSU9fUElOX1NUQVRVUwkJ CTB4NTQKKyNkZWZpbmUgQUxDNTYzMl9HUElPX1BJTl9TSEFSSU5HCQkweDU2CisjZGVmaW5lCUFM QzU2MzJfT1ZFUl9DVVJSX1NUQVRVUwkJMHg1OAorI2RlZmluZSBBTEM1NjMyX1NPRlRWT0xfQ1RS TAkJCTB4NUEKKyNkZWZpbmUgQUxDNTYzMl9HUElPX09VUFVUX1BJTl9DVFJMCQkweDVDCisKKyNk ZWZpbmUgQUxDNTYzMl9NSVNDX0NUUkwJCQkweDVFCisjZGVmaW5lIEFMQzU2MzJfTUlTQ19ESVNB QkxFX0ZBU1RfVlJFRwkJKDEgPDwgMTUpCisjZGVmaW5lIEFMQzU2MzJfTUlTQ19BVkNfVFJHVF9T RUwJCSgzIDw8IDEyKQorI2RlZmluZSBBTEM1NjMyX01JU0NfQVZDX1RSR1RfUklHSFQJCSgxIDw8 IDEyKQorI2RlZmluZSBBTEM1NjMyX01JU0NfQVZDX1RSR1RfTEVGVAkJKDIgPDwgMTIpCisjZGVm aW5lIEFMQzU2MzJfTUlTQ19BVkNfVFJHVF9CT1RICQkoMyA8PCAxMikKKyNkZWZpbmUgQUxDNTYz Ml9NSVNDX0hQX0RFUE9QX01PREUxX0VOCQkoMSA8PCAgOSkKKyNkZWZpbmUgQUxDNTYzMl9NSVND X0hQX0RFUE9QX01PREUyX0VOCQkoMSA8PCAgOCkKKyNkZWZpbmUgQUxDNTYzMl9NSVNDX0hQX0RF UE9QX01VVEVfTAkJKDEgPDwgIDcpCisjZGVmaW5lIEFMQzU2MzJfTUlTQ19IUF9ERVBPUF9NVVRF X1IJCSgxIDw8ICA2KQorI2RlZmluZSBBTEM1NjMyX01JU0NfSFBfREVQT1BfTVVURQkJKDEgPDwg IDUpCisjZGVmaW5lIEFMQzU2MzJfTUlTQ19HUElPX1dBS0VVUF9DVFJMCQkoMSA8PCAgMSkKKyNk ZWZpbmUgQUxDNTYzMl9NSVNDX0lSUU9VVF9JTlZfQ1RSTAkJKDEgPDwgIDApCisKKyNkZWZpbmUg QUxDNTYzMl9EQUNfQ0xLX0NUUkwxCQkJMHg2MAorI2RlZmluZSBBTEM1NjMyX0RBQ19DTEtfQ1RS TDIJCQkweDYyCisjZGVmaW5lIEFMQzU2MzJfREFDX0NMS19DVFJMMl9ESVYxXzIJCSgxIDw8IDAp CisjZGVmaW5lIEFMQzU2MzJfVk9JQ0VfREFDX1BDTV9DTEtfQ1RSTDEJCTB4NjQKKyNkZWZpbmUg QUxDNTYzMl9QU0VVRE9fU1BBVElBTF9DVFJMCQkweDY4CisjZGVmaW5lIEFMQzU2MzJfSElEX0NU UkxfSU5ERVgJCQkweDZBCisjZGVmaW5lIEFMQzU2MzJfSElEX0NUUkxfREFUQQkJCTB4NkMKKyNk ZWZpbmUgQUxDNTYzMl9FUV9DVFJMCQkJCTB4NkUKKworLyogdW5kb2N1bWVudGVkICovCisjZGVm aW5lIEFMQzU2MzJfVkVORE9SX0lEMQkJCTB4N0MKKyNkZWZpbmUgQUxDNTYzMl9WRU5ET1JfSUQy CQkJMHg3RQorCisjZW5kaWYKLS0gCjEuNy4zLjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwgbWFpbGluZyBsaXN0CkFsc2EtZGV2ZWxA YWxzYS1wcm9qZWN0Lm9yZwpodHRwOi8vbWFpbG1hbi5hbHNhLXByb2plY3Qub3JnL21haWxtYW4v bGlzdGluZm8vYWxzYS1kZXZlbAo=