From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Tomas Mraz To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: minor upstream release 1.0.2c fixing multiple security issues Date: Tue, 09 Jun 2026 12:43:36 GMT Message-ID: <178100901626.1.18372855543129671610.rpms-openssl-837dd048828c@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: 837dd048828c9c49a51fb70b7f0e8af43947fde4 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IDgzN2RkMDQ4ODI4YzljNDlhNTFmYjcwYjdmMGU4 YWY0Mzk0N2ZkZTQKQXV0aG9yIDogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+ CkRhdGUgICA6IDIwMTUtMDYtMTVUMTg6MjM6NDYrMDI6MDAKU3RhdHMgIDogKzE0Mzc1Ly0xNTAx MCBpbiAxNiBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3Jw bXMvb3BlbnNzbC9jLzgzN2RkMDQ4ODI4YzljNDlhNTFmYjcwYjdmMGU4YWY0Mzk0N2ZkZTQ/YnJh bmNoPXJlYmFzZV80MGJldGEKCkxvZzoKbWlub3IgdXBzdHJlYW0gcmVsZWFzZSAxLjAuMmMgZml4 aW5nIG11bHRpcGxlIHNlY3VyaXR5IGlzc3VlcwoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3Jl IGIvLmdpdGlnbm9yZQppbmRleCAwMDc2MjA0Li5jMDQ0ZWRmIDEwMDY0NAotLS0gYS8uZ2l0aWdu b3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTIzLDMgKzIzLDQgQEAgb3BlbnNzbC0xLjAuMGEtdXNh LnRhci5iejIKIC9vcGVuc3NsLTEuMC4xai1ob2JibGVkLnRhci54egogL29wZW5zc2wtMS4wLjFr LWhvYmJsZWQudGFyLnh6CiAvb3BlbnNzbC0xLjAuMmEtaG9iYmxlZC50YXIueHoKKy9vcGVuc3Ns LTEuMC4yYy1ob2JibGVkLnRhci54egoKZGlmZiAtLWdpdCBhL2VjdGVzdC5jIGIvZWN0ZXN0LmMK aW5kZXggNzFmZWYyMy4uYTM1ZjVhZCAxMDA2NDQKLS0tIGEvZWN0ZXN0LmMKKysrIGIvZWN0ZXN0 LmMKQEAgLTM4Niw3ICszODYsNyBAQCBzdGF0aWMgdm9pZCBwcmltZV9maWVsZF90ZXN0cyh2b2lk KQogICAgICAgICBBQk9SVDsKICAgICBpZiAoIUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3Jk aW5hdGVzX0dGcChncm91cCwgUCwgeCwgMSwgY3R4KSkKICAgICAgICAgQUJPUlQ7Ci0gICAgaWYg KCFFQ19QT0lOVF9pc19vbl9jdXJ2ZShncm91cCwgUCwgY3R4KSkKKyAgICBpZiAoRUNfUE9JTlRf aXNfb25fY3VydmUoZ3JvdXAsIFAsIGN0eCkgPD0gMCkKICAgICAgICAgQUJPUlQ7CiAgICAgaWYg KCFCTl9oZXgyYm4oJnosICJGRkZGRkZGRjAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkJDRTZGQUFE QTcxNzlFIgogICAgICAgICAgICAgICAgICAgICI4NEYzQjlDQUMyRkM2MzI1NTEiKSkKQEAgLTQ0 Miw3ICs0NDIsNyBAQCBzdGF0aWMgdm9pZCBwcmltZV9maWVsZF90ZXN0cyh2b2lkKQogICAgICAg ICBBQk9SVDsKICAgICBpZiAoIUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dG cChncm91cCwgUCwgeCwgMSwgY3R4KSkKICAgICAgICAgQUJPUlQ7Ci0gICAgaWYgKCFFQ19QT0lO VF9pc19vbl9jdXJ2ZShncm91cCwgUCwgY3R4KSkKKyAgICBpZiAoRUNfUE9JTlRfaXNfb25fY3Vy dmUoZ3JvdXAsIFAsIGN0eCkgPD0gMCkKICAgICAgICAgQUJPUlQ7CiAgICAgaWYgKCFCTl9oZXgy Ym4oJnosICJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIgog ICAgICAgICAgICAgICAgICAgICJGRkM3NjM0RDgxRjQzNzJEREY1ODFBMERCMjQ4QjBBNzdBRUNF QzE5NkFDQ0M1Mjk3MyIpKQpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRpYyB2b2lkIHByaW1lX2Zp ZWxkX3Rlc3RzKHZvaWQpCiAgICAgICAgIEFCT1JUOwogICAgIGlmICghRUNfUE9JTlRfc2V0X2Nv bXByZXNzZWRfY29vcmRpbmF0ZXNfR0ZwKGdyb3VwLCBQLCB4LCAwLCBjdHgpKQogICAgICAgICBB Qk9SVDsKLSAgICBpZiAoIUVDX1BPSU5UX2lzX29uX2N1cnZlKGdyb3VwLCBQLCBjdHgpKQorICAg IGlmIChFQ19QT0lOVF9pc19vbl9jdXJ2ZShncm91cCwgUCwgY3R4KSA8PSAwKQogICAgICAgICBB Qk9SVDsKICAgICBpZiAoIUJOX2hleDJibigmeiwgIjFGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG RkZGRkZGRkZGRkZGRkZGRkZGRkYiCiAgICAgICAgICAgICAgICAgICAgIkZGRkZGRkZGRkZGRkZG RkZGRkZGQTUxODY4NzgzQkYyRjk2NkI3RkNDMDE0OEY3MDlBNUQwM0JCNSIKQEAgLTU0NSw3ICs1 NDUsNyBAQCBzdGF0aWMgdm9pZCBwcmltZV9maWVsZF90ZXN0cyh2b2lkKQogICAgICAgICBBQk9S VDsKICAgICBpZiAoIUVDX1BPSU5UX2RibChncm91cCwgUCwgUCwgY3R4KSkKICAgICAgICAgQUJP UlQ7Ci0gICAgaWYgKCFFQ19QT0lOVF9pc19vbl9jdXJ2ZShncm91cCwgUCwgY3R4KSkKKyAgICBp ZiAoRUNfUE9JTlRfaXNfb25fY3VydmUoZ3JvdXAsIFAsIGN0eCkgPD0gMCkKICAgICAgICAgQUJP UlQ7CiAgICAgaWYgKCFFQ19QT0lOVF9pbnZlcnQoZ3JvdXAsIFEsIGN0eCkpCiAgICAgICAgIEFC T1JUOyAgICAgICAgICAgICAgICAgIC8qIFAgPSAtMlEgKi8KCmRpZmYgLS1naXQgYS9vcGVuc3Ns LTEuMC4yYS1hbHQtY2hhaW5zLnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtYWx0LWNoYWlucy5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ0NTNjNi4uMDAwMDAwMAotLS0gYS9v cGVuc3NsLTEuMC4yYS1hbHQtY2hhaW5zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTI3ICsw LDAgQEAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvYXBwcy5jLmFsdC1jaGFpbnMgb3Bl bnNzbC0xLjAuMmEvYXBwcy9hcHBzLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL2FwcHMuYy5h bHQtY2hhaW5zCTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNz bC0xLjAuMmEvYXBwcy9hcHBzLmMJMjAxNS0wNC0yOCAxNjo0OTo1MC4xMjQ1NTg3NzAgKzAyMDAK LUBAIC0yMzcxLDYgKzIzNzEsOCBAQCBpbnQgYXJnc192ZXJpZnkoY2hhciAqKipwYXJncywgaW50 ICpwYXJnCi0gICAgICAgICBmbGFncyB8PSBYNTA5X1ZfRkxBR19TVUlURUJfMTkyX0xPUzsKLSAg ICAgZWxzZSBpZiAoIXN0cmNtcChhcmcsICItcGFydGlhbF9jaGFpbiIpKQotICAgICAgICAgZmxh Z3MgfD0gWDUwOV9WX0ZMQUdfUEFSVElBTF9DSEFJTjsKLSsgICAgZWxzZSBpZiAoIXN0cmNtcChh cmcsICItbm9fYWx0X2NoYWlucyIpKQotKyAgICAgICAgZmxhZ3MgfD0gWDUwOV9WX0ZMQUdfTk9f QUxUX0NIQUlOUzsKLSAgICAgZWxzZQotICAgICAgICAgcmV0dXJuIDA7Ci0gCi1kaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9hcHBzL2Ntcy5jLmFsdC1jaGFpbnMgb3BlbnNzbC0xLjAuMmEvYXBwcy9j bXMuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMvY21zLmMuYWx0LWNoYWlucwkyMDE1LTA0LTIz IDEwOjIyOjU2LjIyNTY4NTI1MSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvY21zLmMJ MjAxNS0wNC0yOCAxNjo0OTo1MC4xMjU1NTg3OTMgKzAyMDAKLUBAIC02NDgsNiArNjQ4LDggQEAg aW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgQklPX3ByaW50ZihiaW9f ZXJyLAotICAgICAgICAgICAgICAgICAgICAiLXRydXN0ZWRfZmlyc3QgdXNlIHRydXN0ZWQgY2Vy dGlmaWNhdGVzIGZpcnN0IHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluXG4iKTsKLSAgICAg ICAgIEJJT19wcmludGYoYmlvX2VyciwKLSsgICAgICAgICAgICAgICAgICAgIi1ub19hbHRfY2hh aW5zIG9ubHkgZXZlciB1c2UgdGhlIGZpcnN0IGNlcnRpZmljYXRlIGNoYWluIGZvdW5kXG4iKTsK LSsgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKLSAgICAgICAgICAgICAgICAgICAgIi1jcmxf Y2hlY2sgICAgIGNoZWNrIHJldm9jYXRpb24gc3RhdHVzIG9mIHNpZ25lcidzIGNlcnRpZmljYXRl IHVzaW5nIENSTHNcbiIpOwotICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAotICAgICAgICAg ICAgICAgICAgICAiLWNybF9jaGVja19hbGwgY2hlY2sgcmV2b2NhdGlvbiBzdGF0dXMgb2Ygc2ln bmVyJ3MgY2VydGlmaWNhdGUgY2hhaW4gdXNpbmcgQ1JMc1xuIik7Ci1kaWZmIC11cCBvcGVuc3Ns LTEuMC4yYS9hcHBzL29jc3AuYy5hbHQtY2hhaW5zIG9wZW5zc2wtMS4wLjJhL2FwcHMvb2NzcC5j Ci0tLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy9vY3NwLmMuYWx0LWNoYWlucwkyMDE1LTA0LTIzIDEw OjIyOjU2LjIyNTY4NTI1MSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvb2NzcC5jCTIw MTUtMDQtMjggMTY6NDk6NTAuMTI1NTU4NzkzICswMjAwCi1AQCAtNTM4LDYgKzUzOCw4IEBAIGlu dCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIEJJT19wcmludGYoYmlvX2Vy ciwKLSAgICAgICAgICAgICAgICAgICAgIi10cnVzdGVkX2ZpcnN0ICAgICAgIHVzZSB0cnVzdGVk IGNlcnRpZmljYXRlcyBmaXJzdCB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpblxuIik7Ci0g ICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0rICAgICAgICAgICAgICAgICAgICItbm9fYWx0 X2NoYWlucyAgICAgICBvbmx5IGV2ZXIgdXNlIHRoZSBmaXJzdCBjZXJ0aWZpY2F0ZSBjaGFpbiBm b3VuZFxuIik7Ci0rICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAg ICAgICItVkFmaWxlIGZpbGUgICAgICAgICB2YWxpZGF0b3IgY2VydGlmaWNhdGVzIGZpbGVcbiIp OwotICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAotICAgICAgICAgICAgICAgICAgICAiLXZh bGlkaXR5X3BlcmlvZCBuICAgbWF4aW11bSB2YWxpZGl0eSBkaXNjcmVwYW5jeSBpbiBzZWNvbmRz XG4iKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19jbGllbnQuYy5hbHQtY2hhaW5z IG9wZW5zc2wtMS4wLjJhL2FwcHMvc19jbGllbnQuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMv c19jbGllbnQuYy5hbHQtY2hhaW5zCTIwMTUtMDQtMjMgMTA6MjI6NTYuMjI1Njg1MjUxICswMjAw Ci0rKysgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2NsaWVudC5jCTIwMTUtMDQtMjggMTY6NDk6NTAu MTI2NTU4ODE1ICswMjAwCi1AQCAtMzM1LDYgKzMzNSw4IEBAIHN0YXRpYyB2b2lkIHNjX3VzYWdl KHZvaWQpCi0gICAgIEJJT19wcmludGYoYmlvX2VyciwKLSAgICAgICAgICAgICAgICAiIC10cnVz dGVkX2ZpcnN0IC0gVXNlIHRydXN0ZWQgQ0EncyBmaXJzdCB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVz dCBjaGFpblxuIik7Ci0gICAgIEJJT19wcmludGYoYmlvX2VyciwKLSsgICAgICAgICAgICAgICAi IC1ub19hbHRfY2hhaW5zIC0gb25seSBldmVyIHVzZSB0aGUgZmlyc3QgY2VydGlmaWNhdGUgY2hh aW4gZm91bmRcbiIpOwotKyAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAg IiAtcmVjb25uZWN0ICAgIC0gRHJvcCBhbmQgcmUtbWFrZSB0aGUgY29ubmVjdGlvbiB3aXRoIHRo ZSBzYW1lIFNlc3Npb24tSURcbiIpOwotICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAg ICAgICAgICAgIiAtcGF1c2UgICAgICAgIC0gc2xlZXAoMSkgYWZ0ZXIgZWFjaCByZWFkKDIpIGFu ZCB3cml0ZSgyKSBzeXN0ZW0gY2FsbFxuIik7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBz L3NtaW1lLmMuYWx0LWNoYWlucyBvcGVuc3NsLTEuMC4yYS9hcHBzL3NtaW1lLmMKLS0tLSBvcGVu c3NsLTEuMC4yYS9hcHBzL3NtaW1lLmMuYWx0LWNoYWlucwkyMDE1LTA0LTIzIDEwOjIyOjU2LjIy NjY4NTI3NyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvc21pbWUuYwkyMDE1LTA0LTI4 IDE2OjQ5OjUwLjEyODU1ODg2MSArMDIwMAotQEAgLTQ0NCw2ICs0NDQsOCBAQCBpbnQgTUFJTihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAg ICAgICAgICAgICAgICAgICItdHJ1c3RlZF9maXJzdCB1c2UgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMg Zmlyc3Qgd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW5cbiIpOwotICAgICAgICAgQklPX3By aW50ZihiaW9fZXJyLAotKyAgICAgICAgICAgICAgICAgICAiLW5vX2FsdF9jaGFpbnMgb25seSBl dmVyIHVzZSB0aGUgZmlyc3QgY2VydGlmaWNhdGUgY2hhaW4gZm91bmRcbiIpOwotKyAgICAgICAg QklPX3ByaW50ZihiaW9fZXJyLAotICAgICAgICAgICAgICAgICAgICAiLWNybF9jaGVjayAgICAg Y2hlY2sgcmV2b2NhdGlvbiBzdGF0dXMgb2Ygc2lnbmVyJ3MgY2VydGlmaWNhdGUgdXNpbmcgQ1JM c1xuIik7Ci0gICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAgICAg ICItY3JsX2NoZWNrX2FsbCBjaGVjayByZXZvY2F0aW9uIHN0YXR1cyBvZiBzaWduZXIncyBjZXJ0 aWZpY2F0ZSBjaGFpbiB1c2luZyBDUkxzXG4iKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Fw cHMvc19zZXJ2ZXIuYy5hbHQtY2hhaW5zIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19zZXJ2ZXIuYwot LS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19zZXJ2ZXIuYy5hbHQtY2hhaW5zCTIwMTUtMDQtMjMg MTA6MjI6NTYuMjI2Njg1Mjc3ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX3NlcnZl ci5jCTIwMTUtMDQtMjggMTY6NDk6NTAuMTI4NTU4ODYxICswMjAwCi1AQCAtNTcxLDYgKzU3MSw4 IEBAIHN0YXRpYyB2b2lkIHN2X3VzYWdlKHZvaWQpCi0gICAgIEJJT19wcmludGYoYmlvX2VyciwK LSAgICAgICAgICAgICAgICAiIC10cnVzdGVkX2ZpcnN0IC0gVXNlIHRydXN0ZWQgQ0EncyBmaXJz dCB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpblxuIik7Ci0gICAgIEJJT19wcmludGYoYmlv X2VyciwKLSsgICAgICAgICAgICAgICAiIC1ub19hbHRfY2hhaW5zIC0gb25seSBldmVyIHVzZSB0 aGUgZmlyc3QgY2VydGlmaWNhdGUgY2hhaW4gZm91bmRcbiIpOwotKyAgICBCSU9fcHJpbnRmKGJp b19lcnIsCi0gICAgICAgICAgICAgICAgIiAtbm9jZXJ0ICAgICAgIC0gRG9uJ3QgdXNlIGFueSBj ZXJ0aWZpY2F0ZXMgKEFub24tREgpXG4iKTsKLSAgICAgQklPX3ByaW50ZihiaW9fZXJyLAotICAg ICAgICAgICAgICAgICIgLWNpcGhlciBhcmcgICAtIHBsYXkgd2l0aCAnb3BlbnNzbCBjaXBoZXJz JyB0byBzZWUgd2hhdCBnb2VzIGhlcmVcbiIpOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBw cy92ZXJpZnkuYy5hbHQtY2hhaW5zIG9wZW5zc2wtMS4wLjJhL2FwcHMvdmVyaWZ5LmMKLS0tLSBv cGVuc3NsLTEuMC4yYS9hcHBzL3ZlcmlmeS5jLmFsdC1jaGFpbnMJMjAxNS0wNC0yOCAxNjo0OTo1 MC4xMjg1NTg4NjEgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL3ZlcmlmeS5jCTIwMTUt MDQtMjggMTY6NTA6NTIuMjEwOTc0MzQ2ICswMjAwCi1AQCAtMjMyLDcgKzIzMiw3IEBAIGludCBN QUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgaWYgKHJldCA9PSAxKSB7Ci0gICAgICAg ICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAgICAgICJ1c2FnZTogdmVyaWZ5 IFstdmVyYm9zZV0gWy1DQXBhdGggcGF0aF0gWy1DQWZpbGUgZmlsZV0gWy10cnVzdGVkX2ZpcnN0 XSBbLXB1cnBvc2UgcHVycG9zZV0gWy1jcmxfY2hlY2tdIik7Ci0tICAgICAgICBCSU9fcHJpbnRm KGJpb19lcnIsICIgWy1hdHRpbWUgdGltZXN0YW1wXSIpOwotKyAgICAgICAgQklPX3ByaW50Zihi aW9fZXJyLCAiIFstbm9fYWx0X2NoYWluc10gWy1hdHRpbWUgdGltZXN0YW1wXSIpOwotICNpZm5k ZWYgT1BFTlNTTF9OT19FTkdJTkUKLSAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgIiBbLWVu Z2luZSBlXSIpOwotICNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3g1MDkv eDUwOV92ZnkuYy5hbHQtY2hhaW5zIG9wZW5zc2wtMS4wLjJhL2NyeXB0by94NTA5L3g1MDlfdmZ5 LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8veDUwOS94NTA5X3ZmeS5jLmFsdC1jaGFpbnMJ MjAxNS0wNC0yMyAxMDoyMjo1Ni4xODg2ODQyNzcgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8veDUwOS94NTA5X3ZmeS5jCTIwMTUtMDQtMjggMTc6MDM6NDAuNDc4Nzg2Nzc4ICswMjAw Ci1AQCAtMTg5LDExICsxODksMTEgQEAgc3RhdGljIFg1MDkgKmxvb2t1cF9jZXJ0X21hdGNoKFg1 MDlfU1RPUgotIAotIGludCBYNTA5X3ZlcmlmeV9jZXJ0KFg1MDlfU1RPUkVfQ1RYICpjdHgpCi0g ewotLSAgICBYNTA5ICp4LCAqeHRtcCwgKmNoYWluX3NzID0gTlVMTDsKLSsgICAgWDUwOSAqeCwg Knh0bXAsICp4dG1wMiwgKmNoYWluX3NzID0gTlVMTDsKLSAgICAgaW50IGJhZF9jaGFpbiA9IDA7 Ci0gICAgIFg1MDlfVkVSSUZZX1BBUkFNICpwYXJhbSA9IGN0eC0+cGFyYW07Ci0gICAgIGludCBk ZXB0aCwgaSwgb2sgPSAwOwotLSAgICBpbnQgbnVtOwotKyAgICBpbnQgbnVtLCBqLCByZXRyeTsK LSAgICAgaW50ICgqY2IpIChpbnQgeG9rLCBYNTA5X1NUT1JFX0NUWCAqeGN0eCk7Ci0gICAgIFNU QUNLX09GKFg1MDkpICpza3RtcCA9IE5VTEw7Ci0gICAgIGlmIChjdHgtPmNlcnQgPT0gTlVMTCkg ewotQEAgLTI3OCw5MSArMjc4LDEzNiBAQCBpbnQgWDUwOV92ZXJpZnlfY2VydChYNTA5X1NUT1JF X0NUWCAqY3R4Ci0gICAgICAgICBicmVhazsKLSAgICAgfQotIAotKyAgICAvKiBSZW1lbWJlciBo b3cgbWFueSB1bnRydXN0ZWQgY2VydHMgd2UgaGF2ZSAqLwotKyAgICBqID0gbnVtOwotICAgICAv KgotICAgICAgKiBhdCB0aGlzIHBvaW50LCBjaGFpbiBzaG91bGQgY29udGFpbiBhIGxpc3Qgb2Yg dW50cnVzdGVkIGNlcnRpZmljYXRlcy4KLSAgICAgICogV2Ugbm93IG5lZWQgdG8gYWRkIGF0IGxl YXN0IG9uZSB0cnVzdGVkIG9uZSwgaWYgcG9zc2libGUsIG90aGVyd2lzZSB3ZQotICAgICAgKiBj b21wbGFpbi4KLSAgICAgICovCi0gCi0tICAgIC8qCi0tICAgICAqIEV4YW1pbmUgbGFzdCBjZXJ0 aWZpY2F0ZSBpbiBjaGFpbiBhbmQgc2VlIGlmIGl0IGlzIHNlbGYgc2lnbmVkLgotLSAgICAgKi8K LS0KLS0gICAgaSA9IHNrX1g1MDlfbnVtKGN0eC0+Y2hhaW4pOwotLSAgICB4ID0gc2tfWDUwOV92 YWx1ZShjdHgtPmNoYWluLCBpIC0gMSk7Ci0tICAgIGlmIChjZXJ0X3NlbGZfc2lnbmVkKHgpKSB7 Ci0tICAgICAgICAvKiB3ZSBoYXZlIGEgc2VsZiBzaWduZWQgY2VydGlmaWNhdGUgKi8KLS0gICAg ICAgIGlmIChza19YNTA5X251bShjdHgtPmNoYWluKSA9PSAxKSB7Ci0tICAgICAgICAgICAgLyoK LS0gICAgICAgICAgICAgKiBXZSBoYXZlIGEgc2luZ2xlIHNlbGYgc2lnbmVkIGNlcnRpZmljYXRl OiBzZWUgaWYgd2UgY2FuIGZpbmQKLS0gICAgICAgICAgICAgKiBpdCBpbiB0aGUgc3RvcmUuIFdl IG11c3QgaGF2ZSBhbiBleGFjdCBtYXRjaCB0byBhdm9pZCBwb3NzaWJsZQotLSAgICAgICAgICAg ICAqIGltcGVyc29uYXRpb24uCi0tICAgICAgICAgICAgICovCi0tICAgICAgICAgICAgb2sgPSBj dHgtPmdldF9pc3N1ZXIoJnh0bXAsIGN0eCwgeCk7Ci0tICAgICAgICAgICAgaWYgKChvayA8PSAw KSB8fCBYNTA5X2NtcCh4LCB4dG1wKSkgewotLSAgICAgICAgICAgICAgICBjdHgtPmVycm9yID0g WDUwOV9WX0VSUl9ERVBUSF9aRVJPX1NFTEZfU0lHTkVEX0NFUlQ7Ci0tICAgICAgICAgICAgICAg IGN0eC0+Y3VycmVudF9jZXJ0ID0geDsKLS0gICAgICAgICAgICAgICAgY3R4LT5lcnJvcl9kZXB0 aCA9IGkgLSAxOwotLSAgICAgICAgICAgICAgICBpZiAob2sgPT0gMSkKLS0gICAgICAgICAgICAg ICAgICAgIFg1MDlfZnJlZSh4dG1wKTsKLS0gICAgICAgICAgICAgICAgYmFkX2NoYWluID0gMTsK LS0gICAgICAgICAgICAgICAgb2sgPSBjYigwLCBjdHgpOwotLSAgICAgICAgICAgICAgICBpZiAo IW9rKQotLSAgICAgICAgICAgICAgICAgICAgZ290byBlbmQ7Ci0rICAgIGRvIHsKLSsgICAgICAg IC8qCi0rICAgICAgICAgKiBFeGFtaW5lIGxhc3QgY2VydGlmaWNhdGUgaW4gY2hhaW4gYW5kIHNl ZSBpZiBpdCBpcyBzZWxmIHNpZ25lZC4KLSsgICAgICAgICAqLwotKyAgICAgICAgaSA9IHNrX1g1 MDlfbnVtKGN0eC0+Y2hhaW4pOwotKyAgICAgICAgeCA9IHNrX1g1MDlfdmFsdWUoY3R4LT5jaGFp biwgaSAtIDEpOwotKyAgICAgICAgaWYgKGNlcnRfc2VsZl9zaWduZWQoeCkpIHsKLSsgICAgICAg ICAgICAvKiB3ZSBoYXZlIGEgc2VsZiBzaWduZWQgY2VydGlmaWNhdGUgKi8KLSsgICAgICAgICAg ICBpZiAoc2tfWDUwOV9udW0oY3R4LT5jaGFpbikgPT0gMSkgewotKyAgICAgICAgICAgICAgICAv KgotKyAgICAgICAgICAgICAgICAgKiBXZSBoYXZlIGEgc2luZ2xlIHNlbGYgc2lnbmVkIGNlcnRp ZmljYXRlOiBzZWUgaWYgd2UgY2FuCi0rICAgICAgICAgICAgICAgICAqIGZpbmQgaXQgaW4gdGhl IHN0b3JlLiBXZSBtdXN0IGhhdmUgYW4gZXhhY3QgbWF0Y2ggdG8gYXZvaWQKLSsgICAgICAgICAg ICAgICAgICogcG9zc2libGUgaW1wZXJzb25hdGlvbi4KLSsgICAgICAgICAgICAgICAgICovCi0r ICAgICAgICAgICAgICAgIG9rID0gY3R4LT5nZXRfaXNzdWVyKCZ4dG1wLCBjdHgsIHgpOwotKyAg ICAgICAgICAgICAgICBpZiAoKG9rIDw9IDApIHx8IFg1MDlfY21wKHgsIHh0bXApKSB7Ci0rICAg ICAgICAgICAgICAgICAgICBjdHgtPmVycm9yID0gWDUwOV9WX0VSUl9ERVBUSF9aRVJPX1NFTEZf U0lHTkVEX0NFUlQ7Ci0rICAgICAgICAgICAgICAgICAgICBjdHgtPmN1cnJlbnRfY2VydCA9IHg7 Ci0rICAgICAgICAgICAgICAgICAgICBjdHgtPmVycm9yX2RlcHRoID0gaSAtIDE7Ci0rICAgICAg ICAgICAgICAgICAgICBpZiAob2sgPT0gMSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBYNTA5 X2ZyZWUoeHRtcCk7Ci0rICAgICAgICAgICAgICAgICAgICBiYWRfY2hhaW4gPSAxOwotKyAgICAg ICAgICAgICAgICAgICAgb2sgPSBjYigwLCBjdHgpOwotKyAgICAgICAgICAgICAgICAgICAgaWYg KCFvaykKLSsgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVuZDsKLSsgICAgICAgICAgICAg ICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgIC8qCi0rICAgICAgICAgICAgICAgICAg ICAgKiBXZSBoYXZlIGEgbWF0Y2g6IHJlcGxhY2UgY2VydGlmaWNhdGUgd2l0aCBzdG9yZQotKyAg ICAgICAgICAgICAgICAgICAgICogdmVyc2lvbiBzbyB3ZSBnZXQgYW55IHRydXN0IHNldHRpbmdz LgotKyAgICAgICAgICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgICAgICAgICBYNTA5X2Zy ZWUoeCk7Ci0rICAgICAgICAgICAgICAgICAgICB4ID0geHRtcDsKLSsgICAgICAgICAgICAgICAg ICAgICh2b2lkKXNrX1g1MDlfc2V0KGN0eC0+Y2hhaW4sIGkgLSAxLCB4KTsKLSsgICAgICAgICAg ICAgICAgICAgIGN0eC0+bGFzdF91bnRydXN0ZWQgPSAwOwotKyAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgLyoKLS0gICAgICAgICAgICAg ICAgICogV2UgaGF2ZSBhIG1hdGNoOiByZXBsYWNlIGNlcnRpZmljYXRlIHdpdGggc3RvcmUgdmVy c2lvbiBzbwotLSAgICAgICAgICAgICAgICAgKiB3ZSBnZXQgYW55IHRydXN0IHNldHRpbmdzLgot KyAgICAgICAgICAgICAgICAgKiBleHRyYWN0IGFuZCBzYXZlIHNlbGYgc2lnbmVkIGNlcnRpZmlj YXRlIGZvciBsYXRlciB1c2UKLSAgICAgICAgICAgICAgICAgICovCi0tICAgICAgICAgICAgICAg IFg1MDlfZnJlZSh4KTsKLS0gICAgICAgICAgICAgICAgeCA9IHh0bXA7Ci0tICAgICAgICAgICAg ICAgICh2b2lkKXNrX1g1MDlfc2V0KGN0eC0+Y2hhaW4sIGkgLSAxLCB4KTsKLS0gICAgICAgICAg ICAgICAgY3R4LT5sYXN0X3VudHJ1c3RlZCA9IDA7Ci0rICAgICAgICAgICAgICAgIGNoYWluX3Nz ID0gc2tfWDUwOV9wb3AoY3R4LT5jaGFpbik7Ci0rICAgICAgICAgICAgICAgIGN0eC0+bGFzdF91 bnRydXN0ZWQtLTsKLSsgICAgICAgICAgICAgICAgbnVtLS07Ci0rICAgICAgICAgICAgICAgIGot LTsKLSsgICAgICAgICAgICAgICAgeCA9IHNrX1g1MDlfdmFsdWUoY3R4LT5jaGFpbiwgbnVtIC0g MSk7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAvKgot LSAgICAgICAgICAgICAqIGV4dHJhY3QgYW5kIHNhdmUgc2VsZiBzaWduZWQgY2VydGlmaWNhdGUg Zm9yIGxhdGVyIHVzZQotLSAgICAgICAgICAgICAqLwotLSAgICAgICAgICAgIGNoYWluX3NzID0g c2tfWDUwOV9wb3AoY3R4LT5jaGFpbik7Ci0tICAgICAgICAgICAgY3R4LT5sYXN0X3VudHJ1c3Rl ZC0tOwotLSAgICAgICAgICAgIG51bS0tOwotLSAgICAgICAgICAgIHggPSBza19YNTA5X3ZhbHVl KGN0eC0+Y2hhaW4sIG51bSAtIDEpOwotICAgICAgICAgfQotLSAgICB9Ci0tCi0tICAgIC8qIFdl IG5vdyBsb29rdXAgY2VydHMgZnJvbSB0aGUgY2VydGlmaWNhdGUgc3RvcmUgKi8KLS0gICAgZm9y ICg7OykgewotLSAgICAgICAgLyogSWYgd2UgaGF2ZSBlbm91Z2gsIHdlIGJyZWFrICovCi0tICAg ICAgICBpZiAoZGVwdGggPCBudW0pCi0tICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAvKiBX ZSBub3cgbG9va3VwIGNlcnRzIGZyb20gdGhlIGNlcnRpZmljYXRlIHN0b3JlICovCi0rICAgICAg ICBmb3IgKDs7KSB7Ci0rICAgICAgICAgICAgLyogSWYgd2UgaGF2ZSBlbm91Z2gsIHdlIGJyZWFr ICovCi0rICAgICAgICAgICAgaWYgKGRlcHRoIDwgbnVtKQotKyAgICAgICAgICAgICAgICBicmVh azsKLSsgICAgICAgICAgICAvKiBJZiB3ZSBhcmUgc2VsZiBzaWduZWQsIHdlIGJyZWFrICovCi0r ICAgICAgICAgICAgaWYgKGNlcnRfc2VsZl9zaWduZWQoeCkpCi0rICAgICAgICAgICAgICAgIGJy ZWFrOwotKyAgICAgICAgICAgIG9rID0gY3R4LT5nZXRfaXNzdWVyKCZ4dG1wLCBjdHgsIHgpOwot IAotLSAgICAgICAgLyogSWYgd2UgYXJlIHNlbGYgc2lnbmVkLCB3ZSBicmVhayAqLwotLSAgICAg ICAgaWYgKGNlcnRfc2VsZl9zaWduZWQoeCkpCi0tICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAg ICAgICAgaWYgKG9rIDwgMCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIG9rOwotKyAgICAgICAg ICAgIGlmIChvayA9PSAwKQotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB4 ID0geHRtcDsKLSsgICAgICAgICAgICBpZiAoIXNrX1g1MDlfcHVzaChjdHgtPmNoYWluLCB4KSkg ewotKyAgICAgICAgICAgICAgICBYNTA5X2ZyZWUoeHRtcCk7Ci0rICAgICAgICAgICAgICAgIFg1 MDllcnIoWDUwOV9GX1g1MDlfVkVSSUZZX0NFUlQsIEVSUl9SX01BTExPQ19GQUlMVVJFKTsKLSsg ICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIG51 bSsrOwotKyAgICAgICAgfQotIAotLSAgICAgICAgb2sgPSBjdHgtPmdldF9pc3N1ZXIoJnh0bXAs IGN0eCwgeCk7Ci0rICAgICAgICAvKiB3ZSBub3cgaGF2ZSBvdXIgY2hhaW4sIGxldHMgY2hlY2sg aXQuLi4gKi8KLSsgICAgICAgIGkgPSBjaGVja190cnVzdChjdHgpOwotIAotLSAgICAgICAgaWYg KG9rIDwgMCkKLS0gICAgICAgICAgICByZXR1cm4gb2s7Ci0tICAgICAgICBpZiAob2sgPT0gMCkK LS0gICAgICAgICAgICBicmVhazsKLSsgICAgICAgIC8qIElmIGV4cGxpY2l0bHkgcmVqZWN0ZWQg ZXJyb3IgKi8KLSsgICAgICAgIGlmIChpID09IFg1MDlfVFJVU1RfUkVKRUNURUQpCi0rICAgICAg ICAgICAgZ290byBlbmQ7Ci0rICAgICAgICAvKgotKyAgICAgICAgICogSWYgaXQncyBub3QgZXhw bGljaXRseSB0cnVzdGVkIHRoZW4gY2hlY2sgaWYgdGhlcmUgaXMgYW4gYWx0ZXJuYXRpdmUKLSsg ICAgICAgICAqIGNoYWluIHRoYXQgY291bGQgYmUgdXNlZC4gV2Ugb25seSBkbyB0aGlzIGlmIHdl IGhhdmVuJ3QgYWxyZWFkeQotKyAgICAgICAgICogY2hlY2tlZCB2aWEgVFJVU1RFRF9GSVJTVCBh bmQgdGhlIHVzZXIgaGFzbid0IHN3aXRjaGVkIG9mZiBhbHRlcm5hdGUKLSsgICAgICAgICAqIGNo YWluIGNoZWNraW5nCi0rICAgICAgICAgKi8KLSsgICAgICAgIHJldHJ5ID0gMDsKLSsgICAgICAg IGlmIChpICE9IFg1MDlfVFJVU1RfVFJVU1RFRAotKyAgICAgICAgICAgICYmICEoY3R4LT5wYXJh bS0+ZmxhZ3MgJiBYNTA5X1ZfRkxBR19UUlVTVEVEX0ZJUlNUKQotKyAgICAgICAgICAgICYmICEo Y3R4LT5wYXJhbS0+ZmxhZ3MgJiBYNTA5X1ZfRkxBR19OT19BTFRfQ0hBSU5TKSkgewotKyAgICAg ICAgICAgIHdoaWxlIChqLS0gPiAxKSB7Ci0rICAgICAgICAgICAgICAgIFNUQUNLX09GKFg1MDkp ICpjaHRtcCA9IGN0eC0+Y2hhaW47Ci0rICAgICAgICAgICAgICAgIHh0bXAyID0gc2tfWDUwOV92 YWx1ZShjdHgtPmNoYWluLCBqIC0gMSk7Ci0rICAgICAgICAgICAgICAgIC8qCi0rICAgICAgICAg ICAgICAgICAqIFRlbXBvcmFyaWx5IHNldCBjaGFpbiB0byBOVUxMIHNvIHdlIGRvbid0IGRpc2Nv dW50Ci0rICAgICAgICAgICAgICAgICAqIGR1cGxpY2F0ZXM6IHRoZSBzYW1lIGNlcnRpZmljYXRl IGNvdWxkIGJlIGFuIHVudHJ1c3RlZAotKyAgICAgICAgICAgICAgICAgKiBDQSBmb3VuZCBpbiB0 aGUgdHJ1c3RlZCBzdG9yZS4KLSsgICAgICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgICAg IGN0eC0+Y2hhaW4gPSBOVUxMOwotKyAgICAgICAgICAgICAgICBvayA9IGN0eC0+Z2V0X2lzc3Vl cigmeHRtcCwgY3R4LCB4dG1wMik7Ci0rICAgICAgICAgICAgICAgIGN0eC0+Y2hhaW4gPSBjaHRt cDsKLSsgICAgICAgICAgICAgICAgaWYgKG9rIDwgMCkKLSsgICAgICAgICAgICAgICAgICAgIGdv dG8gZW5kOwotKyAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB3ZSBmb3VuZCBhbiBhbHRlcm5h dGUgY2hhaW4gKi8KLSsgICAgICAgICAgICAgICAgaWYgKG9rID4gMCkgewotKyAgICAgICAgICAg ICAgICAgICAgLyoKLSsgICAgICAgICAgICAgICAgICAgICAqIEZyZWUgdXAgdGhlIGZvdW5kIGNl cnQgd2UnbGwgYWRkIGl0IGFnYWluIGxhdGVyCi0rICAgICAgICAgICAgICAgICAgICAgKi8KLSsg ICAgICAgICAgICAgICAgICAgIFg1MDlfZnJlZSh4dG1wKTsKLSAKLS0gICAgICAgIHggPSB4dG1w OwotLSAgICAgICAgaWYgKCFza19YNTA5X3B1c2goY3R4LT5jaGFpbiwgeCkpIHsKLS0gICAgICAg ICAgICBYNTA5X2ZyZWUoeHRtcCk7Ci0tICAgICAgICAgICAgWDUwOWVycihYNTA5X0ZfWDUwOV9W RVJJRllfQ0VSVCwgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOwotLSAgICAgICAgICAgIHJldHVybiAw OwotKyAgICAgICAgICAgICAgICAgICAgLyoKLSsgICAgICAgICAgICAgICAgICAgICAqIER1bXAg YWxsIHRoZSBjZXJ0cyBhYm92ZSB0aGlzIHBvaW50IC0gd2UndmUgZm91bmQgYW4KLSsgICAgICAg ICAgICAgICAgICAgICAqIGFsdGVybmF0ZSBjaGFpbgotKyAgICAgICAgICAgICAgICAgICAgICov Ci0rICAgICAgICAgICAgICAgICAgICB3aGlsZSAobnVtID4gaikgewotKyAgICAgICAgICAgICAg ICAgICAgICAgIHh0bXAgPSBza19YNTA5X3BvcChjdHgtPmNoYWluKTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICBYNTA5X2ZyZWUoeHRtcCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbnVt LS07Ci0rICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5sYXN0X3VudHJ1c3RlZC0tOwotKyAg ICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgcmV0cnkgPSAxOwotKyAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAg ICB9Ci0gICAgICAgICB9Ci0tICAgICAgICBudW0rKzsKLS0gICAgfQotKyAgICB9IHdoaWxlIChy ZXRyeSk7Ci0gCi0tICAgIC8qIHdlIG5vdyBoYXZlIG91ciBjaGFpbiwgbGV0cyBjaGVjayBpdC4u LiAqLwotLQotLSAgICBpID0gY2hlY2tfdHJ1c3QoY3R4KTsKLS0KLS0gICAgLyogSWYgZXhwbGlj aXRseSByZWplY3RlZCBlcnJvciAqLwotLSAgICBpZiAoaSA9PSBYNTA5X1RSVVNUX1JFSkVDVEVE KQotLSAgICAgICAgZ290byBlbmQ7Ci0gICAgIC8qCi0gICAgICAqIElmIG5vdCBleHBsaWNpdGx5 IHRydXN0ZWQgdGhlbiBpbmRpY2F0ZSBlcnJvciB1bmxlc3MgaXQncyBhIHNpbmdsZQotICAgICAg KiBzZWxmIHNpZ25lZCBjZXJ0aWZpY2F0ZSBpbiB3aGljaCBjYXNlIHdlJ3ZlIGluZGljYXRlZCBh biBlcnJvciBhbHJlYWR5Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8veDUwOS94NTA5 X3ZmeS5oLmFsdC1jaGFpbnMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3g1MDkveDUwOV92ZnkuaAot LS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by94NTA5L3g1MDlfdmZ5LmguYWx0LWNoYWlucwkyMDE1 LTA0LTIzIDEwOjIyOjU2LjAxNjY3OTc1MSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by94NTA5L3g1MDlfdmZ5LmgJMjAxNS0wNC0yOCAxNjo0OToxOC41NTE4Mzg5MDggKzAyMDAKLUBA IC00MzIsNiArNDMyLDEyIEBAIHZvaWQgWDUwOV9TVE9SRV9DVFhfc2V0X2RlcHRoKFg1MDlfU1RP UkUKLSAKLSAvKiBBbGxvdyBwYXJ0aWFsIGNoYWlucyBpZiBhdCBsZWFzdCBvbmUgY2VydGlmaWNh dGUgaXMgaW4gdHJ1c3RlZCBzdG9yZSAqLwotICMgZGVmaW5lIFg1MDlfVl9GTEFHX1BBUlRJQUxf Q0hBSU4gICAgICAgICAgICAgICAweDgwMDAwCi0rLyoKLSsgKiBJZiB0aGUgaW5pdGlhbCBjaGFp biBpcyBub3QgdHJ1c3RlZCwgZG8gbm90IGF0dGVtcHQgdG8gYnVpbGQgYW4gYWx0ZXJuYXRpdmUK LSsgKiBjaGFpbi4gQWx0ZXJuYXRlIGNoYWluIGNoZWNraW5nIHdhcyBpbnRyb2R1Y2VkIGluIDEu MC4yYi4gU2V0dGluZyB0aGlzIGZsYWcKLSsgKiB3aWxsIGZvcmNlIHRoZSBiZWhhdmlvdXIgdG8g bWF0Y2ggdGhhdCBvZiBwcmV2aW91cyB2ZXJzaW9ucy4KLSsgKi8KLSsjIGRlZmluZSBYNTA5X1Zf RkxBR19OT19BTFRfQ0hBSU5TICAgICAgICAgICAgICAgMHgxMDAwMDAKLSAKLSAjIGRlZmluZSBY NTA5X1ZQX0ZMQUdfREVGQVVMVCAgICAgICAgICAgICAgICAgICAgMHgxCi0gIyBkZWZpbmUgWDUw OV9WUF9GTEFHX09WRVJXUklURSAgICAgICAgICAgICAgICAgIDB4MgotZGlmZiAtdXAgb3BlbnNz bC0xLjAuMmEvZG9jL2FwcHMvY21zLnBvZC5hbHQtY2hhaW5zIG9wZW5zc2wtMS4wLjJhL2RvYy9h cHBzL2Ntcy5wb2QKLS0tLSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9jbXMucG9kLmFsdC1jaGFp bnMJMjAxNS0wNC0yMyAxMDoyMjo1Ni4yMjc2ODUzMDMgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4y YS9kb2MvYXBwcy9jbXMucG9kCTIwMTUtMDQtMjggMTY6NTQ6MTcuNTM3NjgyNDA2ICswMjAwCi1A QCAtMzYsNiArMzYsNyBAQCBCPG9wZW5zc2w+IEI8Y21zPgotIFtCPC1DQWZpbGUgZmlsZT5dCi0g W0I8LUNBcGF0aCBkaXI+XQotIFtCPC10cnVzdGVkX2ZpcnN0Pl0KLStbQjwtbm9fYWx0X2NoYWlu cz5dCi0gW0I8LW1kIGRpZ2VzdD5dCi0gW0I8LVtjaXBoZXJdPl0KLSBbQjwtbm9pbnRlcm4+XQot QEAgLTQyNiw3ICs0MjcsNyBAQCBwb3J0aW9uIG9mIGEgbWVzc2FnZSBzbyB0aGV5IG1heSBiZSBp bmNsCi0gdGhlbiBtYW55IFMvTUlNRSBtYWlsIGNsaWVudHMgY2hlY2sgdGhlIHNpZ25lcnMgY2Vy dGlmaWNhdGUncyBlbWFpbAotIGFkZHJlc3MgbWF0Y2hlcyB0aGF0IHNwZWNpZmllZCBpbiB0aGUg RnJvbTogYWRkcmVzcy4KLSAKLS09aXRlbSBCPC1wdXJwb3NlLCAtaWdub3JlX2NyaXRpY2FsLCAt aXNzdWVyX2NoZWNrcywgLWNybF9jaGVjaywgLWNybF9jaGVja19hbGwsIC1wb2xpY3lfY2hlY2ss IC1leHRlbmRlZF9jcmwsIC14NTA5X3N0cmljdCwgLXBvbGljeSAtY2hlY2tfc3Nfc2lnPgotKz1p dGVtIEI8LXB1cnBvc2UsIC1pZ25vcmVfY3JpdGljYWwsIC1pc3N1ZXJfY2hlY2tzLCAtY3JsX2No ZWNrLCAtY3JsX2NoZWNrX2FsbCwgLXBvbGljeV9jaGVjaywgLWV4dGVuZGVkX2NybCwgLXg1MDlf c3RyaWN0LCAtcG9saWN5IC1jaGVja19zc19zaWcgLW5vX2FsdF9jaGFpbnM+Ci0gCi0gU2V0IHZh cmlvdXMgY2VydGlmaWNhdGUgY2hhaW4gdmFsaWFkaXRpb24gb3B0aW9uLiBTZWUgdGhlCi0gTDxC PHZlcmlmeT58dmVyaWZ5KDEpPiBtYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KLUBAIC02NjIsNCAr NjYzLDYgQEAgU3VwcG9ydCBmb3IgUlNBLU9BRVAgYW5kIFJTQS1QU1Mgd2FzIGZpcgotIFRoZSB1 c2Ugb2Ygbm9uLVJTQSBrZXlzIHdpdGggQjwtZW5jcnlwdD4gYW5kIEI8LWRlY3J5cHQ+IHdhcyBm aXJzdCBhZGRlZAotIHRvIE9wZW5TU0wgMS4xLjAuCi0gCi0rVGhlIC1ub19hbHRfY2hhaW5zIG9w dGlvbnMgd2FzIGZpcnN0IGFkZGVkIHRvIE9wZW5TU0wgMS4wLjJiLgotKwotID1jdXQKLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL29jc3AucG9kLmFsdC1jaGFpbnMgb3BlbnNzbC0x LjAuMmEvZG9jL2FwcHMvb2NzcC5wb2QKLS0tLSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9vY3Nw LnBvZC5hbHQtY2hhaW5zCTIwMTUtMDQtMjMgMTA6MjI6NTYuMjI3Njg1MzAzICswMjAwCi0rKysg b3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvb2NzcC5wb2QJMjAxNS0wNC0yOCAxNjo1Mzo0NC41NjQ5 MTQ4NTIgKzAyMDAKLUBAIC0zMCw2ICszMCw3IEBAIEI8b3BlbnNzbD4gQjxvY3NwPgotIFtCPC1D QXBhdGggZGlyPl0KLSBbQjwtQ0FmaWxlIGZpbGU+XQotIFtCPC10cnVzdGVkX2ZpcnN0Pl0KLStb Qjwtbm9fYWx0X2NoYWlucz5dCi0gW0I8LVZBZmlsZSBmaWxlPl0KLSBbQjwtdmFsaWRpdHlfcGVy aW9kIG4+XQotIFtCPC1zdGF0dXNfYWdlIG4+XQotQEAgLTE1MSw2ICsxNTIsMTAgQEAgaW4gdGhl IHJlc3BvbnNlIG9yIHJlc2lkaW5nIGluIG90aGVyIGNlcgotIGNoYWluIHRvIHZlcmlmeSByZXNw b25kZXIgY2VydGlmaWNhdGUuCi0gVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluIGVudmlyb25tZW50 cyB3aXRoIEJyaWRnZSBDQSBvciBDcm9zcy1DZXJ0aWZpZWQgQ0FzLgotIAotKz1pdGVtIEI8LW5v X2FsdF9jaGFpbnM+Ci0rCi0rU2VlIEw8Qjx2ZXJpZnk+fHZlcmlmeSgxKT4gbWFudWFsIHBhZ2Ug Zm9yIGRldGFpbHMuCi0rCi0gPWl0ZW0gQjwtdmVyaWZ5X290aGVyIGZpbGU+Ci0gCi0gZmlsZSBj b250YWluaW5nIGFkZGl0aW9uYWwgY2VydGlmaWNhdGVzIHRvIHNlYXJjaCB3aGVuIGF0dGVtcHRp bmcgdG8gbG9jYXRlCi1AQCAtMzg4LDMgKzM5Myw5IEBAIHNlY29uZCBmaWxlLgotIAotICBvcGVu c3NsIG9jc3AgLWluZGV4IGRlbW9DQS9pbmRleC50eHQgLXJzaWduZXIgcmNlcnQucGVtIC1DQSBk ZW1vQ0EvY2FjZXJ0LnBlbQotICAgICAgLXJlcWluIHJlcS5kZXIgLXJlc3BvdXQgcmVzcC5kZXIK LSsKLSs9aGVhZDEgSElTVE9SWQotKwotK1RoZSAtbm9fYWx0X2NoYWlucyBvcHRpb25zIHdhcyBm aXJzdCBhZGRlZCB0byBPcGVuU1NMIDEuMC4yYi4KLSsKLSs9Y3V0Ci1kaWZmIC11cCBvcGVuc3Ns LTEuMC4yYS9kb2MvYXBwcy9zX2NsaWVudC5wb2QuYWx0LWNoYWlucyBvcGVuc3NsLTEuMC4yYS9k b2MvYXBwcy9zX2NsaWVudC5wb2QKLS0tLSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9zX2NsaWVu dC5wb2QuYWx0LWNoYWlucwkyMDE1LTA0LTIzIDEwOjIyOjU2LjIyNzY4NTMwMyArMDIwMAotKysr IG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3NfY2xpZW50LnBvZAkyMDE1LTA0LTI4IDE2OjU1OjI0 LjgxMjI0ODQ1MCArMDIwMAotQEAgLTIwLDYgKzIwLDcgQEAgQjxvcGVuc3NsPiBCPHNfY2xpZW50 PgotIFtCPC1DQXBhdGggZGlyZWN0b3J5Pl0KLSBbQjwtQ0FmaWxlIGZpbGVuYW1lPl0KLSBbQjwt dHJ1c3RlZF9maXJzdD5dCi0rW0I8LW5vX2FsdF9jaGFpbnM+XQotIFtCPC1yZWNvbm5lY3Q+XQot IFtCPC1wYXVzZT5dCi0gW0I8LXNob3djZXJ0cz5dCi1AQCAtMTI0LDcgKzEyNSw3IEBAIGFsc28g dXNlZCB3aGVuIGJ1aWxkaW5nIHRoZSBjbGllbnQgY2VydGkKLSBBIGZpbGUgY29udGFpbmluZyB0 cnVzdGVkIGNlcnRpZmljYXRlcyB0byB1c2UgZHVyaW5nIHNlcnZlciBhdXRoZW50aWNhdGlvbgot IGFuZCB0byB1c2Ugd2hlbiBhdHRlbXB0aW5nIHRvIGJ1aWxkIHRoZSBjbGllbnQgY2VydGlmaWNh dGUgY2hhaW4uCi0gCi0tPWl0ZW0gQjwtcHVycG9zZSwgLWlnbm9yZV9jcml0aWNhbCwgLWlzc3Vl cl9jaGVja3MsIC1jcmxfY2hlY2ssIC1jcmxfY2hlY2tfYWxsLCAtcG9saWN5X2NoZWNrLCAtZXh0 ZW5kZWRfY3JsLCAteDUwOV9zdHJpY3QsIC1wb2xpY3kgLWNoZWNrX3NzX3NpZywgLXRydXN0ZWRf Zmlyc3Q+Ci0rPWl0ZW0gQjwtcHVycG9zZSwgLWlnbm9yZV9jcml0aWNhbCwgLWlzc3Vlcl9jaGVj a3MsIC1jcmxfY2hlY2ssIC1jcmxfY2hlY2tfYWxsLCAtcG9saWN5X2NoZWNrLCAtZXh0ZW5kZWRf Y3JsLCAteDUwOV9zdHJpY3QsIC1wb2xpY3kgLWNoZWNrX3NzX3NpZywgLXRydXN0ZWRfZmlyc3Qg LW5vX2FsdF9jaGFpbnM+Ci0gCi0gU2V0IHZhcmlvdXMgY2VydGlmaWNhdGUgY2hhaW4gdmFsaWFk aXRpb24gb3B0aW9uLiBTZWUgdGhlCi0gTDxCPHZlcmlmeT58dmVyaWZ5KDEpPiBtYW51YWwgcGFn ZSBmb3IgZGV0YWlscy4KLUBAIC0zNjUsNCArMzY2LDggQEAgaW5mb3JtYXRpb24gd2hlbmV2ZXIg YSBzZXNzaW9uIGlzIHJlbmVnbwotIAotIEw8c2Vzc19pZCgxKXxzZXNzX2lkKDEpPiwgTDxzX3Nl cnZlcigxKXxzX3NlcnZlcigxKT4sIEw8Y2lwaGVycygxKXxjaXBoZXJzKDEpPgotIAotKz1oZWFk MSBISVNUT1JZCi0rCi0rVGhlIC1ub19hbHRfY2hhaW5zIG9wdGlvbnMgd2FzIGZpcnN0IGFkZGVk IHRvIE9wZW5TU0wgMS4wLjJiLgotKwotID1jdXQKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Rv Yy9hcHBzL3NtaW1lLnBvZC5hbHQtY2hhaW5zIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3NtaW1l LnBvZAotLS0tIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3NtaW1lLnBvZC5hbHQtY2hhaW5zCTIw MTUtMDQtMjMgMTA6MjI6NTYuMjI3Njg1MzAzICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvZG9j L2FwcHMvc21pbWUucG9kCTIwMTUtMDQtMjggMTY6NTc6MzMuNTk4MjQ2Mzg0ICswMjAwCi1AQCAt MTgsNiArMTgsNyBAQCBCPG9wZW5zc2w+IEI8c21pbWU+Ci0gW0I8LUNBZmlsZSBmaWxlPl0KLSBb QjwtQ0FwYXRoIGRpcj5dCi0gW0I8LXRydXN0ZWRfZmlyc3Q+XQotK1tCPC1ub19hbHRfY2hhaW5z Pl0KLSBbQjwtY2VydGZpbGUgZmlsZT5dCi0gW0I8LXNpZ25lciBmaWxlPl0KLSBbQjwtcmVjaXAg IGZpbGU+XQotQEAgLTI2OCw3ICsyNjksNyBAQCBwb3J0aW9uIG9mIGEgbWVzc2FnZSBzbyB0aGV5 IG1heSBiZSBpbmNsCi0gdGhlbiBtYW55IFMvTUlNRSBtYWlsIGNsaWVudHMgY2hlY2sgdGhlIHNp Z25lcnMgY2VydGlmaWNhdGUncyBlbWFpbAotIGFkZHJlc3MgbWF0Y2hlcyB0aGF0IHNwZWNpZmll ZCBpbiB0aGUgRnJvbTogYWRkcmVzcy4KLSAKLS09aXRlbSBCPC1wdXJwb3NlLCAtaWdub3JlX2Ny aXRpY2FsLCAtaXNzdWVyX2NoZWNrcywgLWNybF9jaGVjaywgLWNybF9jaGVja19hbGwsIC1wb2xp Y3lfY2hlY2ssIC1leHRlbmRlZF9jcmwsIC14NTA5X3N0cmljdCwgLXBvbGljeSAtY2hlY2tfc3Nf c2lnPgotKz1pdGVtIEI8LXB1cnBvc2UsIC1pZ25vcmVfY3JpdGljYWwsIC1pc3N1ZXJfY2hlY2tz LCAtY3JsX2NoZWNrLCAtY3JsX2NoZWNrX2FsbCwgLXBvbGljeV9jaGVjaywgLWV4dGVuZGVkX2Ny bCwgLXg1MDlfc3RyaWN0LCAtcG9saWN5IC1jaGVja19zc19zaWcgLW5vX2FsdF9jaGFpbnM+Ci0g Ci0gU2V0IHZhcmlvdXMgb3B0aW9ucyBvZiBjZXJ0aWZpY2F0ZSBjaGFpbiB2ZXJpZmljYXRpb24u IFNlZQotIEw8Qjx2ZXJpZnk+fHZlcmlmeSgxKT4gbWFudWFsIHBhZ2UgZm9yIGRldGFpbHMuCi1A QCAtNDUwLDUgKzQ1MSw2IEBAIHN0cnVjdHVyZXMgbWF5IGNhdXNlIHBhcnNpbmcgZXJyb3JzLgot IFRoZSB1c2Ugb2YgbXVsdGlwbGUgQjwtc2lnbmVyPiBvcHRpb25zIGFuZCB0aGUgQjwtcmVzaWdu PiBjb21tYW5kIHdlcmUgZmlyc3QKLSBhZGRlZCBpbiBPcGVuU1NMIDEuMC4wCi0gCi0rVGhlIC1u b19hbHRfY2hhaW5zIG9wdGlvbnMgd2FzIGZpcnN0IGFkZGVkIHRvIE9wZW5TU0wgMS4wLjJiLgot IAotID1jdXQKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3Nfc2VydmVyLnBvZC5h bHQtY2hhaW5zIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3Nfc2VydmVyLnBvZAotLS0tIG9wZW5z c2wtMS4wLjJhL2RvYy9hcHBzL3Nfc2VydmVyLnBvZC5hbHQtY2hhaW5zCTIwMTUtMDQtMjMgMTA6 MjI6NTYuMjI3Njg1MzAzICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvc19zZXJ2 ZXIucG9kCTIwMTUtMDQtMjggMTY6NTY6MjcuNDk0NzA3NTk4ICswMjAwCi1AQCAtMzQsNiArMzQs NyBAQCBCPG9wZW5zc2w+IEI8c19zZXJ2ZXI+Ci0gW0I8LUNBcGF0aCBkaXJlY3Rvcnk+XQotIFtC PC1DQWZpbGUgZmlsZW5hbWU+XQotIFtCPC10cnVzdGVkX2ZpcnN0Pl0KLStbQjwtbm9fYWx0X2No YWlucz5dCi0gW0I8LW5vY2VydD5dCi0gW0I8LWNpcGhlciBjaXBoZXJsaXN0Pl0KLSBbQjwtc2Vy dmVycHJlZj5dCi1AQCAtMTgxLDYgKzE4MiwxMCBAQCBVc2UgY2VydGlmaWNhdGVzIGluIENBIGZp bGUgb3IgQ0EgZGlyZWN0Ci0gd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW4gdG8gdmVyaWZ5 IGNsaWVudCBjZXJ0aWZpY2F0ZXMuCi0gVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluIGVudmlyb25t ZW50cyB3aXRoIEJyaWRnZSBDQSBvciBDcm9zcy1DZXJ0aWZpZWQgQ0FzLgotIAotKz1pdGVtIEI8 LW5vX2FsdF9jaGFpbnM+Ci0rCi0rU2VlIHRoZSBMPEI8dmVyaWZ5Pnx2ZXJpZnkoMSk+IG1hbnVh bCBwYWdlIGZvciBkZXRhaWxzLgotKwotID1pdGVtIEI8LXN0YXRlPgotIAotIHByaW50cyBvdXQg dGhlIFNTTCBzZXNzaW9uIHN0YXRlcy4KLUBAIC00MTMsNCArNDE4LDggQEAgdW5rbm93biBjaXBo ZXIgc3VpdGVzIGEgY2xpZW50IHNheXMgaXQgcwotIAotIEw8c2Vzc19pZCgxKXxzZXNzX2lkKDEp PiwgTDxzX2NsaWVudCgxKXxzX2NsaWVudCgxKT4sIEw8Y2lwaGVycygxKXxjaXBoZXJzKDEpPgot IAotKz1oZWFkMSBISVNUT1JZCi0rCi0rVGhlIC1ub19hbHRfY2hhaW5zIG9wdGlvbnMgd2FzIGZp cnN0IGFkZGVkIHRvIE9wZW5TU0wgMS4wLjJiLgotKwotID1jdXQKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjJhL2RvYy9hcHBzL3ZlcmlmeS5wb2QuYWx0LWNoYWlucyBvcGVuc3NsLTEuMC4yYS9kb2Mv YXBwcy92ZXJpZnkucG9kCi0tLS0gb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvdmVyaWZ5LnBvZC5h bHQtY2hhaW5zCTIwMTUtMDQtMjMgMTA6MjI6NTYuMjI4Njg1MzMwICswMjAwCi0rKysgb3BlbnNz bC0xLjAuMmEvZG9jL2FwcHMvdmVyaWZ5LnBvZAkyMDE1LTA0LTI4IDE2OjUyOjIyLjU0NDAzMzk0 OCArMDIwMAotQEAgLTI2LDYgKzI2LDcgQEAgQjxvcGVuc3NsPiBCPHZlcmlmeT4KLSBbQjwtZXh0 ZW5kZWRfY3JsPl0KLSBbQjwtdXNlX2RlbHRhcz5dCi0gW0I8LXBvbGljeV9wcmludD5dCi0rW0I8 LW5vX2FsdF9jaGFpbnM+XQotIFtCPC11bnRydXN0ZWQgZmlsZT5dCi0gW0I8LWhlbHA+XQotIFtC PC1pc3N1ZXJfY2hlY2tzPl0KLUBAIC0xMzEsNiArMTMyLDE0IEBAIFNldCBwb2xpY3kgdmFyaWFi bGUgaW5oaWJpdC1hbnktcG9saWN5ICgKLSAKLSBTZXQgcG9saWN5IHZhcmlhYmxlIGluaGliaXQt cG9saWN5LW1hcHBpbmcgKHNlZSBSRkM1MjgwKS4KLSAKLSs9aXRlbSBCPC1ub19hbHRfY2hhaW5z PgotKwotK1doZW4gYnVpbGRpbmcgYSBjZXJ0aWZpY2F0ZSBjaGFpbiwgaWYgdGhlIGZpcnN0IGNl cnRpZmljYXRlIGNoYWluIGZvdW5kIGlzIG5vdAotK3RydXN0ZWQsIHRoZW4gT3BlblNTTCB3aWxs IGNvbnRpbnVlIHRvIGNoZWNrIHRvIHNlZSBpZiBhbiBhbHRlcm5hdGl2ZSBjaGFpbiBjYW4KLSti ZSBmb3VuZCB0aGF0IGlzIHRydXN0ZWQuIFdpdGggdGhpcyBvcHRpb24gdGhhdCBiZWhhdmlvdXIg aXMgc3VwcHJlc3NlZCBzbyB0aGF0Ci0rb25seSB0aGUgZmlyc3QgY2hhaW4gZm91bmQgaXMgZXZl ciB1c2VkLiBVc2luZyB0aGlzIG9wdGlvbiB3aWxsIGZvcmNlIHRoZQotK2JlaGF2aW91ciB0byBt YXRjaCB0aGF0IG9mIHByZXZpb3VzIE9wZW5TU0wgdmVyc2lvbnMuCi0rCi0gPWl0ZW0gQjwtcG9s aWN5X3ByaW50PgotIAotIFByaW50IG91dCBkaWFnbm9zdGljcyByZWxhdGVkIHRvIHBvbGljeSBw cm9jZXNzaW5nLgotQEAgLTQzMiw0ICs0NDEsOCBAQCBCPDIwIFg1MDlfVl9FUlJfVU5BQkxFX1RP X0dFVF9JU1NVRVJfQ0VSCi0gCi0gTDx4NTA5KDEpfHg1MDkoMSk+Ci0gCi0rPWhlYWQxIEhJU1RP UlkKLSsKLStUaGUgLW5vX2FsdF9jaGFpbnMgb3B0aW9ucyB3YXMgZmlyc3QgYWRkZWQgdG8gT3Bl blNTTCAxLjAuMmIuCi0rCi0gPWN1dAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvZG9jL2NyeXB0 by9YNTA5X1ZFUklGWV9QQVJBTV9zZXRfZmxhZ3MucG9kLmFsdC1jaGFpbnMgb3BlbnNzbC0xLjAu MmEvZG9jL2NyeXB0by9YNTA5X1ZFUklGWV9QQVJBTV9zZXRfZmxhZ3MucG9kCi0tLS0gb3BlbnNz bC0xLjAuMmEvZG9jL2NyeXB0by9YNTA5X1ZFUklGWV9QQVJBTV9zZXRfZmxhZ3MucG9kLmFsdC1j aGFpbnMJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEu MC4yYS9kb2MvY3J5cHRvL1g1MDlfVkVSSUZZX1BBUkFNX3NldF9mbGFncy5wb2QJMjAxNS0wNC0y OCAxNjo1MjoyMi41NDQwMzM5NDggKzAyMDAKLUBAIC0xOTcsNiArMTk3LDEyIEBAIHZlcmlmaWNh dGlvbi4gSWYgdGhpcyBmbGFnIGlzIHNldCB0aGVuIGEKLSB0byB0aGUgdmVyaWZpY2F0aW9uIGNh bGxiYWNrIGFuZCBpdCBCPG11c3Q+IGJlIHByZXBhcmVkIHRvIGhhbmRsZSBzdWNoIGNhc2VzCi0g d2l0aG91dCBhc3N1bWluZyB0aGV5IGFyZSBoYXJkIGVycm9ycy4KLSAKLStUaGUgQjxYNTA5X1Zf RkxBR19OT19BTFRfQ0hBSU5TPiBmbGFnIHN1cHByZXNzZXMgY2hlY2tpbmcgZm9yIGFsdGVybmF0 aXZlCi0rY2hhaW5zLiBCeSBkZWZhdWx0LCB3aGVuIGJ1aWxkaW5nIGEgY2VydGlmaWNhdGUgY2hh aW4sIGlmIHRoZSBmaXJzdCBjZXJ0aWZpY2F0ZQotK2NoYWluIGZvdW5kIGlzIG5vdCB0cnVzdGVk LCB0aGVuIE9wZW5TU0wgd2lsbCBjb250aW51ZSB0byBjaGVjayB0byBzZWUgaWYgYW4KLSthbHRl cm5hdGl2ZSBjaGFpbiBjYW4gYmUgZm91bmQgdGhhdCBpcyB0cnVzdGVkLiBXaXRoIHRoaXMgZmxh ZyBzZXQgdGhlIGJlaGF2aW91cgotK3dpbGwgbWF0Y2ggdGhhdCBvZiBPcGVuU1NMIHZlcnNpb25z IHByaW9yIHRvIDEuMC4yYi4KLSsKLSA9aGVhZDEgTk9URVMKLSAKLSBUaGUgYWJvdmUgZnVuY3Rp b25zIHNob3VsZCBiZSB1c2VkIHRvIG1hbmlwdWxhdGUgdmVyaWZpY2F0aW9uIHBhcmFtZXRlcnMK LUBAIC0yMzMsNiArMjM5LDYgQEAgTDxYNTA5X2NoZWNrX2lwKDMpfFg1MDlfY2hlY2tfaXAoMyk+ Ci0gCi0gPWhlYWQxIEhJU1RPUlkKLSAKLS1UQkEKLStUaGUgQjxYNTA5X1ZfRkxBR19OT19BTFRf Q0hBSU5TPiBmbGFnIHdhcyBhZGRlZCBpbiBPcGVuU1NMIDEuMC4yYgotIAotID1jdXQKCmRpZmYg LS1naXQgYS9vcGVuc3NsLTEuMC4yYS1kZWZhdWx0LXBhdGhzLnBhdGNoIGIvb3BlbnNzbC0xLjAu MmEtZGVmYXVsdC1wYXRocy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUw MmM2ZC4uMDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4yYS1kZWZhdWx0LXBhdGhzLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBw cy9zX2NsaWVudC5jLmRlZmF1bHQtcGF0aHMgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2NsaWVudC5j Ci0tLS0gb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2NsaWVudC5jLmRlZmF1bHQtcGF0aHMJMjAxNS0w NC0yMCAxNDo0ODozMS40NjIxNjY5NzEgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nf Y2xpZW50LmMJMjAxNS0wNC0yMCAxNDo1Mjo1NS4xMjUzMTYxNzAgKzAyMDAKLUBAIC0xMzM2LDE5 ICsxMzM2LDE2IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAKLSAgICAgU1NM X0NUWF9zZXRfdmVyaWZ5KGN0eCwgdmVyaWZ5LCB2ZXJpZnlfY2FsbGJhY2spOwotIAotLSAgICBp ZiAoKCFTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjdHgsIENBZmlsZSwgQ0FwYXRoKSkg fHwKLS0gICAgICAgICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY3R4KSkpIHsK LS0gICAgICAgIC8qCi0tICAgICAgICAgKiBCSU9fcHJpbnRmKGJpb19lcnIsImVycm9yIHNldHRp bmcgZGVmYXVsdCB2ZXJpZnkgbG9jYXRpb25zXG4iKTsKLS0gICAgICAgICAqLwotLSAgICAgICAg RVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKLS0gICAgICAgIC8qIGdvdG8gZW5kOyAqLwotKyAg ICBpZiAoQ0FmaWxlID09IE5VTEwgJiYgQ0FwYXRoID09IE5VTEwpIHsKLSsgICAgICAgIGlmICgh U1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY3R4KSkgewotKyAgICAgICAgICAgIEVS Ul9wcmludF9lcnJvcnMoYmlvX2Vycik7Ci0rICAgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAg ICAgICBpZiAoIVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zKGN0eCwgQ0FmaWxlLCBDQXBh dGgpKSB7Ci0rICAgICAgICAgICAgRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKLSsgICAgICAg IH0KLSAgICAgfQotIAotLSAgICBzc2xfY3R4X2FkZF9jcmxzKGN0eCwgY3JscywgY3JsX2Rvd25s b2FkKTsKLS0gICAgaWYgKCFzZXRfY2VydF9rZXlfc3R1ZmYoY3R4LCBjZXJ0LCBrZXksIGNoYWlu LCBidWlsZF9jaGFpbikpCi0tICAgICAgICBnb3RvIGVuZDsKLS0KLSAjaWZuZGVmIE9QRU5TU0xf Tk9fVExTRVhUCi0gICAgIGlmIChzZXJ2ZXJuYW1lICE9IE5VTEwpIHsKLSAgICAgICAgIHRsc2V4 dGNicC5iaW9kZWJ1ZyA9IGJpb19lcnI7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nf c2VydmVyLmMuZGVmYXVsdC1wYXRocyBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nfc2VydmVyLmMKLS0t LSBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nfc2VydmVyLmMuZGVmYXVsdC1wYXRocwkyMDE1LTAzLTE5 IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19zZXJ2 ZXIuYwkyMDE1LTA0LTIwIDE0OjQ4OjMxLjQ2MjE2Njk3MSArMDIwMAotQEAgLTE3NjgsMTIgKzE3 NjgsMTYgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgfQotICNlbmRp ZgotIAotLSAgICBpZiAoKCFTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjdHgsIENBZmls ZSwgQ0FwYXRoKSkgfHwKLS0gICAgICAgICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0 aHMoY3R4KSkpIHsKLS0gICAgICAgIC8qIEJJT19wcmludGYoYmlvX2VyciwiWDUwOV9sb2FkX3Zl cmlmeV9sb2NhdGlvbnNcbiIpOyAqLwotLSAgICAgICAgRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJy KTsKLS0gICAgICAgIC8qIGdvdG8gZW5kOyAqLwotKyAgICBpZiAoQ0FmaWxlID09IE5VTEwgJiYg Q0FwYXRoID09IE5VTEwpIHsKLSsgICAgICAgIGlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJp ZnlfcGF0aHMoY3R4KSkgewotKyAgICAgICAgICAgIEVSUl9wcmludF9lcnJvcnMoYmlvX2Vycik7 Ci0rICAgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBpZiAoIVNTTF9DVFhfbG9hZF92 ZXJpZnlfbG9jYXRpb25zKGN0eCwgQ0FmaWxlLCBDQXBhdGgpKSB7Ci0rICAgICAgICAgICAgRVJS X3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKLSsgICAgICAgIH0KLSAgICAgfQotKwotICAgICBpZiAo dnBtKQotICAgICAgICAgU1NMX0NUWF9zZXQxX3BhcmFtKGN0eCwgdnBtKTsKLSAKLUBAIC0xODMw LDggKzE4MzQsMTAgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgICAg IGVsc2UKLSAgICAgICAgICAgICBTU0xfQ1RYX3Nlc3Nfc2V0X2NhY2hlX3NpemUoY3R4MiwgMTI4 KTsKLSAKLS0gICAgICAgIGlmICgoIVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zKGN0eDIs IENBZmlsZSwgQ0FwYXRoKSkgfHwKLS0gICAgICAgICAgICAoIVNTTF9DVFhfc2V0X2RlZmF1bHRf dmVyaWZ5X3BhdGhzKGN0eDIpKSkgewotKyAgICAgICAgaWYgKCFTU0xfQ1RYX2xvYWRfdmVyaWZ5 X2xvY2F0aW9ucyhjdHgyLCBDQWZpbGUsIENBcGF0aCkpIHsKLSsgICAgICAgICAgICBFUlJfcHJp bnRfZXJyb3JzKGJpb19lcnIpOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKCFTU0xfQ1RYX3Nl dF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhjdHgyKSkgewotICAgICAgICAgICAgIEVSUl9wcmludF9l cnJvcnMoYmlvX2Vycik7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZiAodnBtKQotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmEvYXBwcy9zX3RpbWUuYy5kZWZhdWx0LXBhdGhzIG9wZW5zc2wtMS4wLjJh L2FwcHMvc190aW1lLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL3NfdGltZS5jLmRlZmF1bHQt cGF0aHMJMjAxNS0wNC0yMCAxNDo0ODozMS40NjIxNjY5NzEgKzAyMDAKLSsrKyBvcGVuc3NsLTEu MC4yYS9hcHBzL3NfdGltZS5jCTIwMTUtMDQtMjAgMTQ6NTU6MTQuMjMyNTQyNzM4ICswMjAwCi1A QCAtMzgxLDEzICszODEsMTQgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAot ICAgICBTU0xfbG9hZF9lcnJvcl9zdHJpbmdzKCk7Ci0gCi0tICAgIGlmICgoIVNTTF9DVFhfbG9h ZF92ZXJpZnlfbG9jYXRpb25zKHRtX2N0eCwgQ0FmaWxlLCBDQXBhdGgpKSB8fAotLSAgICAgICAg KCFTU0xfQ1RYX3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyh0bV9jdHgpKSkgewotLSAgICAgICAg LyoKLS0gICAgICAgICAqIEJJT19wcmludGYoYmlvX2VyciwiZXJyb3Igc2V0dGluZyBkZWZhdWx0 IHZlcmlmeSBsb2NhdGlvbnNcbiIpOwotLSAgICAgICAgICovCi0tICAgICAgICBFUlJfcHJpbnRf ZXJyb3JzKGJpb19lcnIpOwotLSAgICAgICAgLyogZ290byBlbmQ7ICovCi0rICAgIGlmIChDQWZp bGUgPT0gTlVMTCAmJiBDQXBhdGggPT0gTlVMTCkgewotKyAgICAgICAgaWYgKCFTU0xfQ1RYX3Nl dF9kZWZhdWx0X3ZlcmlmeV9wYXRocyh0bV9jdHgpKSB7Ci0rICAgICAgICAgICAgRVJSX3ByaW50 X2Vycm9ycyhiaW9fZXJyKTsKLSsgICAgICAgIH0KLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGlm ICghU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnModG1fY3R4LCBDQWZpbGUsIENBcGF0aCkp IHsKLSsgICAgICAgICAgICBFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOwotKyAgICAgICAgfQot ICAgICB9Ci0gCi0gICAgIGlmICh0bV9jaXBoZXIgPT0gTlVMTCkKCmRpZmYgLS1naXQgYS9vcGVu c3NsLTEuMC4yYS1kaC0xMDI0LnBhdGNoIGIvb3BlbnNzbC0xLjAuMmEtZGgtMTAyNC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdkMzE3MS4uMDAwMDAwMAotLS0gYS9vcGVu c3NsLTEuMC4yYS1kaC0xMDI0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAot ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX3NlcnZlci5jLmRoMTAyNCBvcGVuc3NsLTEu MC4yYS9hcHBzL3Nfc2VydmVyLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL3Nfc2VydmVyLmMu ZGgxMDI0CTIwMTUtMDQtMDkgMTg6MTk6NTUuOTc4MjI4OTQ5ICswMjAwCi0rKysgb3BlbnNzbC0x LjAuMmEvYXBwcy9zX3NlcnZlci5jCTIwMTUtMDQtMDkgMTg6MTk6NTAuODQyMTEwMzA0ICswMjAw Ci1AQCAtMjMwLDI5ICsyMzAsNDQgQEAgc3RhdGljIHZvaWQgc19zZXJ2ZXJfaW5pdCh2b2lkKTsK LSAjZW5kaWYKLSAKLSAjaWZuZGVmIE9QRU5TU0xfTk9fREgKLS1zdGF0aWMgdW5zaWduZWQgY2hh ciBkaDUxMl9wW10gPSB7Ci0tICAgIDB4REEsIDB4NTgsIDB4M0MsIDB4MTYsIDB4RDksIDB4ODUs IDB4MjIsIDB4ODksIDB4RDAsIDB4RTQsIDB4QUYsIDB4NzUsCi0tICAgIDB4NkYsIDB4NEMsIDB4 Q0EsIDB4OTIsIDB4REQsIDB4NEIsIDB4RTUsIDB4MzMsIDB4QjgsIDB4MDQsIDB4RkIsIDB4MEYs Ci0tICAgIDB4RUQsIDB4OTQsIDB4RUYsIDB4OUMsIDB4OEEsIDB4NDQsIDB4MDMsIDB4RUQsIDB4 NTcsIDB4NDYsIDB4NTAsIDB4RDMsCi0tICAgIDB4NjksIDB4OTksIDB4REIsIDB4MjksIDB4RDcs IDB4NzYsIDB4MjcsIDB4NkIsIDB4QTIsIDB4RDMsIDB4RDQsIDB4MTIsCi0tICAgIDB4RTIsIDB4 MTgsIDB4RjQsIDB4REQsIDB4MUUsIDB4MDgsIDB4NEMsIDB4RjYsIDB4RDgsIDB4MDAsIDB4M0Us IDB4N0MsCi0tICAgIDB4NDcsIDB4NzQsIDB4RTgsIDB4MzMsCi0tfTsKLS0KLS1zdGF0aWMgdW5z aWduZWQgY2hhciBkaDUxMl9nW10gPSB7Ci0tICAgIDB4MDIsCi0tfTsKLS0KLS1zdGF0aWMgREgg KmdldF9kaDUxMih2b2lkKQotK3N0YXRpYyBESCAqZ2V0X2RoMTAyNCgpCi0gewotLSAgICBESCAq ZGggPSBOVUxMOwotKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBkaDEwMjRfcFtdID0gewotKyAg ICAgICAgMHg5OSwgMHg1OCwgMHhGQSwgMHg5MCwgMHg1MywgMHgyRiwgMHhFMCwgMHg2MSwgMHg4 MywgMHg5RCwgMHg1NCwKLSsgICAgICAgICAgICAweDYzLAotKyAgICAgICAgMHhCRCwgMHgzNSwg MHg1QSwgMHgzMSwgMHhGMywgMHhDNiwgMHg3OSwgMHhFNSwgMHhBMCwgMHgwRiwgMHg2NiwKLSsg ICAgICAgICAgICAweDc5LAotKyAgICAgICAgMHgzQywgMHhBMCwgMHg3RiwgMHhFOCwgMHhBMiwg MHg1RiwgMHhERiwgMHgxMSwgMHgwOCwgMHhBMywgMHhGMCwKLSsgICAgICAgICAgICAweDNDLAot KyAgICAgICAgMHhDMywgMHgzQywgMHg1RCwgMHg1MCwgMHgyQywgMHhENSwgMHhENiwgMHg1OCwg MHgxMiwgMHhEQiwgMHhDMSwKLSsgICAgICAgICAgICAweEVGLAotKyAgICAgICAgMHhCNCwgMHg0 NywgMHg0QSwgMHg1QSwgMHgzOSwgMHg4QSwgMHg0RSwgMHhFQiwgMHg0NCwgMHhFMiwgMHgwNywK LSsgICAgICAgICAgICAweEZCLAotKyAgICAgICAgMHgzRCwgMHhBMywgMHhDNywgMHg2RSwgMHg1 MiwgMHhGMywgMHgyQiwgMHg3QiwgMHgxMCwgMHhBNSwgMHg5OCwKLSsgICAgICAgICAgICAweEUz LAotKyAgICAgICAgMHgzOCwgMHgyQSwgMHhFMiwgMHg3RiwgMHhBNCwgMHg4RiwgMHgyNiwgMHg4 NywgMHg5QiwgMHg2NiwgMHg3QSwKLSsgICAgICAgICAgICAweEVELAotKyAgICAgICAgMHgyRCwg MHg0QywgMHhFNywgMHgzMywgMHg3NywgMHg0NywgMHg5NCwgMHg0MywgMHhCNiwgMHhBQSwgMHg5 NywKLSsgICAgICAgICAgICAweDIzLAotKyAgICAgICAgMHg4QSwgMHhGQywgMHhBNSwgMHhBNiwg MHg2NCwgMHgwOSwgMHhDMCwgMHgyNywgMHhDMCwgMHhFRiwgMHhDQiwKLSsgICAgICAgICAgICAw eDA1LAotKyAgICAgICAgMHg5MCwgMHg5RCwgMHhENSwgMHg3NSwgMHhCQSwgMHgwMCwgMHhFMCwg MHhGQiwgMHhBOCwgMHg4MSwgMHg1MiwKLSsgICAgICAgICAgICAweEE0LAotKyAgICAgICAgMHhC MiwgMHg4MywgMHgyMiwgMHg1QiwgMHhDQiwgMHhENywgMHgxNiwgMHg5MywKLSsgICAgfTsKLSsg ICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgZGgxMDI0X2dbXSA9IHsKLSsgICAgICAgIDB4MDIsCi0r ICAgIH07Ci0rICAgIERIICpkaDsKLSAKLSAgICAgaWYgKChkaCA9IERIX25ldygpKSA9PSBOVUxM KQotICAgICAgICAgcmV0dXJuIChOVUxMKTsKLS0gICAgZGgtPnAgPSBCTl9iaW4yYm4oZGg1MTJf cCwgc2l6ZW9mKGRoNTEyX3ApLCBOVUxMKTsKLS0gICAgZGgtPmcgPSBCTl9iaW4yYm4oZGg1MTJf Zywgc2l6ZW9mKGRoNTEyX2cpLCBOVUxMKTsKLS0gICAgaWYgKChkaC0+cCA9PSBOVUxMKSB8fCAo ZGgtPmcgPT0gTlVMTCkpCi0rICAgIGRoLT5wID0gQk5fYmluMmJuKGRoMTAyNF9wLCBzaXplb2Yo ZGgxMDI0X3ApLCBOVUxMKTsKLSsgICAgZGgtPmcgPSBCTl9iaW4yYm4oZGgxMDI0X2csIHNpemVv ZihkaDEwMjRfZyksIE5VTEwpOwotKyAgICBpZiAoKGRoLT5wID09IE5VTEwpIHx8IChkaC0+ZyA9 PSBOVUxMKSkgewotKyAgICAgICAgREhfZnJlZShkaCk7Ci0gICAgICAgICByZXR1cm4gKE5VTEwp OwotKyAgICB9Ci0gICAgIHJldHVybiAoZGgpOwotIH0KLSAjZW5kaWYKLUBAIC0xODcyLDcgKzE5 ODcsNyBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICAgICAgICAgIEJJ T19wcmludGYoYmlvX3Nfb3V0LCAiU2V0dGluZyB0ZW1wIERIIHBhcmFtZXRlcnNcbiIpOwotICAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19zX291dCwgIlVzaW5n IGRlZmF1bHQgdGVtcCBESCBwYXJhbWV0ZXJzXG4iKTsKLS0gICAgICAgICAgICBkaCA9IGdldF9k aDUxMigpOwotKyAgICAgICAgICAgIGRoID0gZ2V0X2RoMTAyNCgpOwotICAgICAgICAgfQotICAg ICAgICAgKHZvaWQpQklPX2ZsdXNoKGJpb19zX291dCk7Ci0gCgpkaWZmIC0tZ2l0IGEvb3BlbnNz bC0xLjAuMmEtZWNjLXN1aXRlYi5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLWVjYy1zdWl0ZWIucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMjdmZGMuLjAwMDAwMDAKLS0tIGEv b3BlbnNzbC0xLjAuMmEtZWNjLXN1aXRlYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5OSAr MCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL3NwZWVkLmMuc3VpdGViIG9wZW5z c2wtMS4wLjJhL2FwcHMvc3BlZWQuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMvc3BlZWQuYy5z dWl0ZWIJMjAxNS0wNC0yMSAxNzo0NjoxNS40NTIzMjExODMgKzAyMDAKLSsrKyBvcGVuc3NsLTEu MC4yYS9hcHBzL3NwZWVkLmMJMjAxNS0wNC0yMiAxNDo1Mjo0NS4zNjIyNzIyOTYgKzAyMDAKLUBA IC05OTYsNzggKzk5NiwyNiBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAg ICAgICB9IGVsc2UKLSAjIGVuZGlmCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19FQ0RTQQotLSAgICAg ICAgaWYgKHN0cmNtcCgqYXJndiwgImVjZHNhcDE2MCIpID09IDApCi0tICAgICAgICAgICAgZWNk c2FfZG9pdFtSX0VDX1AxNjBdID0gMjsKLS0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwg ImVjZHNhcDE5MiIpID09IDApCi0tICAgICAgICAgICAgZWNkc2FfZG9pdFtSX0VDX1AxOTJdID0g MjsKLS0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZHNhcDIyNCIpID09IDApCi0t ICAgICAgICAgICAgZWNkc2FfZG9pdFtSX0VDX1AyMjRdID0gMjsKLS0gICAgICAgIGVsc2UgaWYg KHN0cmNtcCgqYXJndiwgImVjZHNhcDI1NiIpID09IDApCi0rICAgICAgICBpZiAoc3RyY21wKCph cmd2LCAiZWNkc2FwMjU2IikgPT0gMCkKLSAgICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfUDI1 Nl0gPSAyOwotICAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FwMzg0IikgPT0g MCkKLSAgICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfUDM4NF0gPSAyOwotICAgICAgICAgZWxz ZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FwNTIxIikgPT0gMCkKLSAgICAgICAgICAgICBlY2Rz YV9kb2l0W1JfRUNfUDUyMV0gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAi ZWNkc2FrMTYzIikgPT0gMCkKLS0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfSzE2M10gPSAy OwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FrMjMzIikgPT0gMCkKLS0g ICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfSzIzM10gPSAyOwotLSAgICAgICAgZWxzZSBpZiAo c3RyY21wKCphcmd2LCAiZWNkc2FrMjgzIikgPT0gMCkKLS0gICAgICAgICAgICBlY2RzYV9kb2l0 W1JfRUNfSzI4M10gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2Fr NDA5IikgPT0gMCkKLS0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfSzQwOV0gPSAyOwotLSAg ICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FrNTcxIikgPT0gMCkKLS0gICAgICAg ICAgICBlY2RzYV9kb2l0W1JfRUNfSzU3MV0gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21w KCphcmd2LCAiZWNkc2FiMTYzIikgPT0gMCkKLS0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNf QjE2M10gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FiMjMzIikg PT0gMCkKLS0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfQjIzM10gPSAyOwotLSAgICAgICAg ZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FiMjgzIikgPT0gMCkKLS0gICAgICAgICAgICBl Y2RzYV9kb2l0W1JfRUNfQjI4M10gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2 LCAiZWNkc2FiNDA5IikgPT0gMCkKLS0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfQjQwOV0g PSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FiNTcxIikgPT0gMCkK LS0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfQjU3MV0gPSAyOwotICAgICAgICAgZWxzZSBp ZiAoc3RyY21wKCphcmd2LCAiZWNkc2EiKSA9PSAwKSB7Ci0tICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IEVDX05VTTsgaSsrKQotKyAgICAgICAgICAgIGZvciAoaSA9IFJfRUNfUDI1NjsgaSA8 PSBSX0VDX1A1MjE7IGkrKykKLSAgICAgICAgICAgICAgICAgZWNkc2FfZG9pdFtpXSA9IDE7Ci0g ICAgICAgICB9IGVsc2UKLSAjIGVuZGlmCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19FQ0RICi0tICAg ICAgICBpZiAoc3RyY21wKCphcmd2LCAiZWNkaHAxNjAiKSA9PSAwKQotLSAgICAgICAgICAgIGVj ZGhfZG9pdFtSX0VDX1AxNjBdID0gMjsKLS0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwg ImVjZGhwMTkyIikgPT0gMCkKLS0gICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19QMTkyXSA9IDI7 Ci0tICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RocDIyNCIpID09IDApCi0tICAg ICAgICAgICAgZWNkaF9kb2l0W1JfRUNfUDIyNF0gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3Ry Y21wKCphcmd2LCAiZWNkaHAyNTYiKSA9PSAwKQotKyAgICAgICAgaWYgKHN0cmNtcCgqYXJndiwg ImVjZGhwMjU2IikgPT0gMCkKLSAgICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19QMjU2XSA9IDI7 Ci0gICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RocDM4NCIpID09IDApCi0gICAg ICAgICAgICAgZWNkaF9kb2l0W1JfRUNfUDM4NF0gPSAyOwotICAgICAgICAgZWxzZSBpZiAoc3Ry Y21wKCphcmd2LCAiZWNkaHA1MjEiKSA9PSAwKQotICAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VD X1A1MjFdID0gMjsKLS0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhrMTYzIikg PT0gMCkKLS0gICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19LMTYzXSA9IDI7Ci0tICAgICAgICBl bHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RoazIzMyIpID09IDApCi0tICAgICAgICAgICAgZWNk aF9kb2l0W1JfRUNfSzIzM10gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAi ZWNkaGsyODMiKSA9PSAwKQotLSAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VDX0syODNdID0gMjsK LS0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhrNDA5IikgPT0gMCkKLS0gICAg ICAgICAgICBlY2RoX2RvaXRbUl9FQ19LNDA5XSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChzdHJj bXAoKmFyZ3YsICJlY2RoazU3MSIpID09IDApCi0tICAgICAgICAgICAgZWNkaF9kb2l0W1JfRUNf SzU3MV0gPSAyOwotLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkaGIxNjMiKSA9 PSAwKQotLSAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VDX0IxNjNdID0gMjsKLS0gICAgICAgIGVs c2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhiMjMzIikgPT0gMCkKLS0gICAgICAgICAgICBlY2Ro X2RvaXRbUl9FQ19CMjMzXSA9IDI7Ci0tICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJl Y2RoYjI4MyIpID09IDApCi0tICAgICAgICAgICAgZWNkaF9kb2l0W1JfRUNfQjI4M10gPSAyOwot LSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkaGI0MDkiKSA9PSAwKQotLSAgICAg ICAgICAgIGVjZGhfZG9pdFtSX0VDX0I0MDldID0gMjsKLS0gICAgICAgIGVsc2UgaWYgKHN0cmNt cCgqYXJndiwgImVjZGhiNTcxIikgPT0gMCkKLS0gICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19C NTcxXSA9IDI7Ci0gICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RoIikgPT0gMCkg ewotLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFQ19OVU07IGkrKykKLSsgICAgICAgICAg ICBmb3IgKGkgPSBSX0VDX1AyNTY7IGkgPD0gUl9FQ19QNTIxOyBpKyspCi0gICAgICAgICAgICAg ICAgIGVjZGhfZG9pdFtpXSA9IDE7Ci0gICAgICAgICB9IGVsc2UKLSAjIGVuZGlmCi1AQCAtMTE1 NiwyMSArMTEwNCwxMSBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAg ICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiZHNhNTEyICAgZHNhMTAyNCAgZHNhMjA0OFxuIik7 Ci0gIyBlbmRpZgotICMgaWZuZGVmIE9QRU5TU0xfTk9fRUNEU0EKLS0gICAgICAgICAgICBCSU9f cHJpbnRmKGJpb19lcnIsICJlY2RzYXAxNjAgZWNkc2FwMTkyIGVjZHNhcDIyNCAiCi0tICAgICAg ICAgICAgICAgICAgICAgICAiZWNkc2FwMjU2IGVjZHNhcDM4NCBlY2RzYXA1MjFcbiIpOwotLSAg ICAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKLS0gICAgICAgICAgICAgICAgICAgICAgICJl Y2RzYWsxNjMgZWNkc2FrMjMzIGVjZHNhazI4MyBlY2RzYWs0MDkgZWNkc2FrNTcxXG4iKTsKLS0g ICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0tICAgICAgICAgICAgICAgICAgICAgICAi ZWNkc2FiMTYzIGVjZHNhYjIzMyBlY2RzYWIyODMgZWNkc2FiNDA5IGVjZHNhYjU3MVxuIik7Ci0r ICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiZWNkc2FwMjU2IGVjZHNhcDM4NCBlY2Rz YXA1MjFcbiIpOwotICAgICAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgImVjZHNhXG4iKTsK LSAjIGVuZGlmCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19FQ0RICi0tICAgICAgICAgICAgQklPX3By aW50ZihiaW9fZXJyLCAiZWNkaHAxNjAgIGVjZGhwMTkyICBlY2RocDIyNCAiCi0tICAgICAgICAg ICAgICAgICAgICAgICAiZWNkaHAyNTYgIGVjZGhwMzg0ICBlY2RocDUyMVxuIik7Ci0tICAgICAg ICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAotLSAgICAgICAgICAgICAgICAgICAgICAgImVjZGhr MTYzICBlY2RoazIzMyAgZWNkaGsyODMgIGVjZGhrNDA5ICBlY2RoazU3MVxuIik7Ci0tICAgICAg ICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAotLSAgICAgICAgICAgICAgICAgICAgICAgImVjZGhi MTYzICBlY2RoYjIzMyAgZWNkaGIyODMgIGVjZGhiNDA5ICBlY2RoYjU3MVxuIik7Ci0rICAgICAg ICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiZWNkaHAyNTYgIGVjZGhwMzg0ICBlY2RocDUyMVxu Iik7Ci0gICAgICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiZWNkaFxuIik7Ci0gIyBlbmRp ZgotIAotQEAgLTEyNTUsMTEgKzExOTMsMTEgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQotICAgICAgICAgICAgIGlmICghRklQU19tb2RlKCkgfHwgaSAhPSBSX0RTQV81MTIpCi0g ICAgICAgICAgICAgICAgIGRzYV9kb2l0W2ldID0gMTsKLSAjIGlmbmRlZiBPUEVOU1NMX05PX0VD RFNBCi0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUNfTlVNOyBpKyspCi0rICAgICAgICBmb3Ig KGkgPSBSX0VDX1AyNTY7IGkgPD0gUl9FQ19QNTIxOyBpKyspCi0gICAgICAgICAgICAgZWNkc2Ff ZG9pdFtpXSA9IDE7Ci0gIyBlbmRpZgotICMgaWZuZGVmIE9QRU5TU0xfTk9fRUNESAotLSAgICAg ICAgZm9yIChpID0gMDsgaSA8IEVDX05VTTsgaSsrKQotKyAgICAgICAgZm9yIChpID0gUl9FQ19Q MjU2OyBpIDw9IFJfRUNfUDUyMTsgaSsrKQotICAgICAgICAgICAgIGVjZGhfZG9pdFtpXSA9IDE7 Ci0gIyBlbmRpZgotICAgICB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9zc2wvdDFfbGliLmMu c3VpdGViIG9wZW5zc2wtMS4wLjJhL3NzbC90MV9saWIuYwotLS0tIG9wZW5zc2wtMS4wLjJhL3Nz bC90MV9saWIuYy5zdWl0ZWIJMjAxNS0wNC0yMSAxNzo0NjoxNS41MDYzMjI0NTEgKzAyMDAKLSsr KyBvcGVuc3NsLTEuMC4yYS9zc2wvdDFfbGliLmMJMjAxNS0wNC0yMiAxNTowMzozMi40NjQ1OTEw OTYgKzAyMDAKLUBAIC0yNjYsNDEgKzI2NiwzMCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBlY2N1cnZlc19kZWZhCi0gICAgIDAsIDEzLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0 NTcxazEgKDEzKSAqLwotICMgZW5kaWYKLSAgICAgMCwgMjUsICAgICAgICAgICAgICAgICAgICAg IC8qIHNlY3A1MjFyMSAoMjUpICovCi0tICAgIDAsIDI4LCAgICAgICAgICAgICAgICAgICAgICAv KiBicmFpbnBvb2w1MTJyMSAoMjgpICovCi0gIyBpZm5kZWYgT1BFTlNTTF9OT19FQzJNCi0gICAg IDAsIDExLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0NDA5azEgKDExKSAqLwotICAgICAw LCAxMiwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDQwOXIxICgxMikgKi8KLSAjIGVuZGlm Ci0tICAgIDAsIDI3LCAgICAgICAgICAgICAgICAgICAgICAvKiBicmFpbnBvb2xQMzg0cjEgKDI3 KSAqLwotICAgICAwLCAyNCwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDM4NHIxICgyNCkg Ki8KLSAjIGlmbmRlZiBPUEVOU1NMX05PX0VDMk0KLSAgICAgMCwgOSwgICAgICAgICAgICAgICAg ICAgICAgIC8qIHNlY3QyODNrMSAoOSkgKi8KLSAgICAgMCwgMTAsICAgICAgICAgICAgICAgICAg ICAgIC8qIHNlY3QyODNyMSAoMTApICovCi0gIyBlbmRpZgotLSAgICAwLCAyNiwgICAgICAgICAg ICAgICAgICAgICAgLyogYnJhaW5wb29sUDI1NnIxICgyNikgKi8KLS0gICAgMCwgMjIsICAgICAg ICAgICAgICAgICAgICAgIC8qIHNlY3AyNTZrMSAoMjIpICovCi0gICAgIDAsIDIzLCAgICAgICAg ICAgICAgICAgICAgICAvKiBzZWNwMjU2cjEgKDIzKSAqLwotICMgaWZuZGVmIE9QRU5TU0xfTk9f RUMyTQotICAgICAwLCA4LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDIzOWsxICg4KSAq LwotICAgICAwLCA2LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDIzM2sxICg2KSAqLwot ICAgICAwLCA3LCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDIzM3IxICg3KSAqLwotICMg ZW5kaWYKLS0gICAgMCwgMjAsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AyMjRrMSAoMjAp ICovCi0tICAgIDAsIDIxLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMjI0cjEgKDIxKSAq LwotICMgaWZuZGVmIE9QRU5TU0xfTk9fRUMyTQotICAgICAwLCA0LCAgICAgICAgICAgICAgICAg ICAgICAgLyogc2VjdDE5M3IxICg0KSAqLwotICAgICAwLCA1LCAgICAgICAgICAgICAgICAgICAg ICAgLyogc2VjdDE5M3IyICg1KSAqLwotICMgZW5kaWYKLS0gICAgMCwgMTgsICAgICAgICAgICAg ICAgICAgICAgIC8qIHNlY3AxOTJrMSAoMTgpICovCi0tICAgIDAsIDE5LCAgICAgICAgICAgICAg ICAgICAgICAvKiBzZWNwMTkycjEgKDE5KSAqLwotICMgaWZuZGVmIE9QRU5TU0xfTk9fRUMyTQot ICAgICAwLCAxLCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE2M2sxICgxKSAqLwotICAg ICAwLCAyLCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE2M3IxICgyKSAqLwotICAgICAw LCAzLCAgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDE2M3IyICgzKSAqLwotICMgZW5kaWYK LS0gICAgMCwgMTUsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AxNjBrMSAoMTUpICovCi0t ICAgIDAsIDE2LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMTYwcjEgKDE2KSAqLwotLSAg ICAwLCAxNywgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDE2MHIyICgxNykgKi8KLSB9Owot IAotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN1aXRlYl9jdXJ2ZXNbXSA9IHsKLUBAIC0z MjUsMjkgKzMxNCwyMSBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBmaXBzX2N1cnZlc19k Ci0gICAgIDAsIDksICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0MjgzazEgKDkpICovCi0g ICAgIDAsIDEwLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0MjgzcjEgKDEwKSAqLwotICMg IGVuZGlmCi0tICAgIDAsIDIyLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMjU2azEgKDIy KSAqLwotICAgICAwLCAyMywgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDI1NnIxICgyMykg Ki8KLSAjICBpZm5kZWYgT1BFTlNTTF9OT19FQzJNCi0gICAgIDAsIDgsICAgICAgICAgICAgICAg ICAgICAgICAvKiBzZWN0MjM5azEgKDgpICovCi0gICAgIDAsIDYsICAgICAgICAgICAgICAgICAg ICAgICAvKiBzZWN0MjMzazEgKDYpICovCi0gICAgIDAsIDcsICAgICAgICAgICAgICAgICAgICAg ICAvKiBzZWN0MjMzcjEgKDcpICovCi0gIyAgZW5kaWYKLS0gICAgMCwgMjAsICAgICAgICAgICAg ICAgICAgICAgIC8qIHNlY3AyMjRrMSAoMjApICovCi0tICAgIDAsIDIxLCAgICAgICAgICAgICAg ICAgICAgICAvKiBzZWNwMjI0cjEgKDIxKSAqLwotICMgIGlmbmRlZiBPUEVOU1NMX05PX0VDMk0K LSAgICAgMCwgNCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3QxOTNyMSAoNCkgKi8KLSAg ICAgMCwgNSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3QxOTNyMiAoNSkgKi8KLSAjICBl bmRpZgotLSAgICAwLCAxOCwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDE5MmsxICgxOCkg Ki8KLS0gICAgMCwgMTksICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AxOTJyMSAoMTkpICov Ci0gIyAgaWZuZGVmIE9QRU5TU0xfTk9fRUMyTQotICAgICAwLCAxLCAgICAgICAgICAgICAgICAg ICAgICAgLyogc2VjdDE2M2sxICgxKSAqLwotICAgICAwLCAyLCAgICAgICAgICAgICAgICAgICAg ICAgLyogc2VjdDE2M3IxICgyKSAqLwotICAgICAwLCAzLCAgICAgICAgICAgICAgICAgICAgICAg Lyogc2VjdDE2M3IyICgzKSAqLwotICMgIGVuZGlmCi0tICAgIDAsIDE1LCAgICAgICAgICAgICAg ICAgICAgICAvKiBzZWNwMTYwazEgKDE1KSAqLwotLSAgICAwLCAxNiwgICAgICAgICAgICAgICAg ICAgICAgLyogc2VjcDE2MHIxICgxNikgKi8KLS0gICAgMCwgMTcsICAgICAgICAgICAgICAgICAg ICAgIC8qIHNlY3AxNjByMiAoMTcpICovCi0gfTsKLSAjIGVuZGlmCi0gCgpkaWZmIC0tZ2l0IGEv b3BlbnNzbC0xLjAuMmEtZmlwcy5wYXRjaCBiL29wZW5zc2wtMS4wLjJhLWZpcHMucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxYmVkM2EuLjAwMDAwMDAKLS0tIGEvb3BlbnNz bC0xLjAuMmEtZmlwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNjk5ICswLDAgQEAKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvc3BlZWQuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2Fw cHMvc3BlZWQuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2FwcHMvc3BlZWQuYy5maXBzCTIwMTUtMDMt MTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvYXBwcy9zcGVl ZC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg0MjQ1NDY1ICswMjAwCi1AQCAtMTk3LDcgKzE5Nyw2 IEBACi0gIyAgaWZkZWYgT1BFTlNTTF9ET0lOR19NQUtFREVQRU5ECi0gIyAgIHVuZGVmIEFFU19z ZXRfZW5jcnlwdF9rZXkKLSAjICAgdW5kZWYgQUVTX3NldF9kZWNyeXB0X2tleQotLSMgICB1bmRl ZiBERVNfc2V0X2tleV91bmNoZWNrZWQKLSAjICBlbmRpZgotICMgIGRlZmluZSBCRl9zZXRfa2V5 ICAgICAgcHJpdmF0ZV9CRl9zZXRfa2V5Ci0gIyAgZGVmaW5lIENBU1Rfc2V0X2tleSAgICBwcml2 YXRlX0NBU1Rfc2V0X2tleQotQEAgLTIwNSw3ICsyMDQsNiBAQAotICMgIGRlZmluZSBTRUVEX3Nl dF9rZXkgICAgcHJpdmF0ZV9TRUVEX3NldF9rZXkKLSAjICBkZWZpbmUgUkMyX3NldF9rZXkgICAg IHByaXZhdGVfUkMyX3NldF9rZXkKLSAjICBkZWZpbmUgUkM0X3NldF9rZXkgICAgIHByaXZhdGVf UkM0X3NldF9rZXkKLS0jICBkZWZpbmUgREVTX3NldF9rZXlfdW5jaGVja2VkICAgcHJpdmF0ZV9E RVNfc2V0X2tleV91bmNoZWNrZWQKLSAjICBkZWZpbmUgQUVTX3NldF9lbmNyeXB0X2tleSAgICAg cHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5Ci0gIyAgZGVmaW5lIEFFU19zZXRfZGVjcnlwdF9r ZXkgICAgIHByaXZhdGVfQUVTX3NldF9kZWNyeXB0X2tleQotICMgIGRlZmluZSBDYW1lbGxpYV9z ZXRfa2V5ICAgICAgICBwcml2YXRlX0NhbWVsbGlhX3NldF9rZXkKLUBAIC05NzQsNyArOTcyLDEy IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAjIGVuZGlmCi0gIyBpZm5kZWYg T1BFTlNTTF9OT19SU0EKLSAgICAgICAgIGlmIChzdHJjbXAoKmFyZ3YsICJyc2EiKSA9PSAwKSB7 Ci0tICAgICAgICAgICAgcnNhX2RvaXRbUl9SU0FfNTEyXSA9IDE7Ci0rIyAgaWZkZWYgT1BFTlNT TF9GSVBTCi0rICAgICAgICAgICAgaWYgKCFGSVBTX21vZGUoKSkKLSsjICBlbmRpZgotKyAgICAg ICAgICAgIHsKLSsgICAgICAgICAgICAgICAgcnNhX2RvaXRbUl9SU0FfNTEyXSA9IDE7Ci0rICAg ICAgICAgICAgfQotICAgICAgICAgICAgIHJzYV9kb2l0W1JfUlNBXzEwMjRdID0gMTsKLSAgICAg ICAgICAgICByc2FfZG9pdFtSX1JTQV8yMDQ4XSA9IDE7Ci0gICAgICAgICAgICAgcnNhX2RvaXRb Ul9SU0FfNDA5Nl0gPSAxOwotQEAgLTk4Miw3ICs5ODUsMTIgQEAgaW50IE1BSU4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQotICMgZW5kaWYKLSAjIGlmbmRlZiBPUEVOU1NMX05PX0RTQQotICAgICAg ICAgaWYgKHN0cmNtcCgqYXJndiwgImRzYSIpID09IDApIHsKLS0gICAgICAgICAgICBkc2FfZG9p dFtSX0RTQV81MTJdID0gMTsKLSsjICBpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgICAgICAgICBp ZiAoIUZJUFNfbW9kZSgpKQotKyMgIGVuZGlmCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAg ICAgICBkc2FfZG9pdFtSX0RTQV81MTJdID0gMTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgZHNhX2RvaXRbUl9EU0FfMTAyNF0gPSAxOwotICAgICAgICAgICAgIGRzYV9kb2l0W1JfRFNB XzIwNDhdID0gMTsKLSAgICAgICAgIH0gZWxzZQotQEAgLTEyMzMsMTMgKzEyNDEsMTkgQEAgaW50 IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAotICAgICBpZiAoaiA9PSAwKSB7Ci0gICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgQUxHT1JfTlVNOyBpKyspIHsKLS0gICAgICAgICAgICBpZiAo aSAhPSBEX0VWUCkKLSsgICAgICAgICAgICBpZiAoaSAhPSBEX0VWUCAmJgotKyAgICAgICAgICAg ICAgICAoIUZJUFNfbW9kZSgpIHx8IChpICE9IERfV0hJUkxQT09MICYmCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGkgIT0gRF9NRDIgJiYgaSAhPSBEX01ENCAmJgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IERfTUQ1ICYmIGkgIT0gRF9NREMyICYm Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gRF9STUQxNjApKSkKLSAg ICAgICAgICAgICAgICAgZG9pdFtpXSA9IDE7Ci0gICAgICAgICB9Ci0gICAgICAgICBmb3IgKGkg PSAwOyBpIDwgUlNBX05VTTsgaSsrKQotLSAgICAgICAgICAgIHJzYV9kb2l0W2ldID0gMTsKLSsg ICAgICAgICAgICBpZiAoIUZJUFNfbW9kZSgpIHx8IGkgIT0gUl9SU0FfNTEyKQotKyAgICAgICAg ICAgICAgICByc2FfZG9pdFtpXSA9IDE7Ci0gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRFNBX05V TTsgaSsrKQotLSAgICAgICAgICAgIGRzYV9kb2l0W2ldID0gMTsKLSsgICAgICAgICAgICBpZiAo IUZJUFNfbW9kZSgpIHx8IGkgIT0gUl9EU0FfNTEyKQotKyAgICAgICAgICAgICAgICBkc2FfZG9p dFtpXSA9IDE7Ci0gIyBpZm5kZWYgT1BFTlNTTF9OT19FQ0RTQQotICAgICAgICAgZm9yIChpID0g MDsgaSA8IEVDX05VTTsgaSsrKQotICAgICAgICAgICAgIGVjZHNhX2RvaXRbaV0gPSAxOwotQEAg LTEyOTksMzAgKzEzMTMsNDYgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAg ICBBRVNfc2V0X2VuY3J5cHRfa2V5KGtleTMyLCAyNTYsICZhZXNfa3MzKTsKLSAjIGVuZGlmCi0g IyBpZm5kZWYgT1BFTlNTTF9OT19DQU1FTExJQQotLSAgICBDYW1lbGxpYV9zZXRfa2V5KGtleTE2 LCAxMjgsICZjYW1lbGxpYV9rczEpOwotLSAgICBDYW1lbGxpYV9zZXRfa2V5KGNrZXkyNCwgMTky LCAmY2FtZWxsaWFfa3MyKTsKLS0gICAgQ2FtZWxsaWFfc2V0X2tleShja2V5MzIsIDI1NiwgJmNh bWVsbGlhX2tzMyk7Ci0rICAgIGlmIChkb2l0W0RfQ0JDXzEyOF9DTUxdIHx8IGRvaXRbRF9DQkNf MTkyX0NNTF0gfHwgZG9pdFtEX0NCQ18yNTZfQ01MXSkgewotKyAgICAgICAgQ2FtZWxsaWFfc2V0 X2tleShrZXkxNiwgMTI4LCAmY2FtZWxsaWFfa3MxKTsKLSsgICAgICAgIENhbWVsbGlhX3NldF9r ZXkoY2tleTI0LCAxOTIsICZjYW1lbGxpYV9rczIpOwotKyAgICAgICAgQ2FtZWxsaWFfc2V0X2tl eShja2V5MzIsIDI1NiwgJmNhbWVsbGlhX2tzMyk7Ci0rICAgIH0KLSAjIGVuZGlmCi0gIyBpZm5k ZWYgT1BFTlNTTF9OT19JREVBCi0tICAgIGlkZWFfc2V0X2VuY3J5cHRfa2V5KGtleTE2LCAmaWRl YV9rcyk7Ci0rICAgIGlmIChkb2l0W0RfQ0JDX0lERUFdKSB7Ci0rICAgICAgICBpZGVhX3NldF9l bmNyeXB0X2tleShrZXkxNiwgJmlkZWFfa3MpOwotKyAgICB9Ci0gIyBlbmRpZgotICMgaWZuZGVm IE9QRU5TU0xfTk9fU0VFRAotLSAgICBTRUVEX3NldF9rZXkoa2V5MTYsICZzZWVkX2tzKTsKLSsg ICAgaWYgKGRvaXRbRF9DQkNfU0VFRF0pIHsKLSsgICAgICAgIFNFRURfc2V0X2tleShrZXkxNiwg JnNlZWRfa3MpOwotKyAgICB9Ci0gIyBlbmRpZgotICMgaWZuZGVmIE9QRU5TU0xfTk9fUkM0Ci0t ICAgIFJDNF9zZXRfa2V5KCZyYzRfa3MsIDE2LCBrZXkxNik7Ci0rICAgIGlmIChkb2l0W0RfUkM0 XSkgewotKyAgICAgICAgUkM0X3NldF9rZXkoJnJjNF9rcywgMTYsIGtleTE2KTsKLSsgICAgfQot ICMgZW5kaWYKLSAjIGlmbmRlZiBPUEVOU1NMX05PX1JDMgotLSAgICBSQzJfc2V0X2tleSgmcmMy X2tzLCAxNiwga2V5MTYsIDEyOCk7Ci0rICAgIGlmIChkb2l0W0RfQ0JDX1JDMl0pIHsKLSsgICAg ICAgIFJDMl9zZXRfa2V5KCZyYzJfa3MsIDE2LCBrZXkxNiwgMTI4KTsKLSsgICAgfQotICMgZW5k aWYKLSAjIGlmbmRlZiBPUEVOU1NMX05PX1JDNQotLSAgICBSQzVfMzJfc2V0X2tleSgmcmM1X2tz LCAxNiwga2V5MTYsIDEyKTsKLSsgICAgaWYgKGRvaXRbRF9DQkNfUkM1XSkgewotKyAgICAgICAg UkM1XzMyX3NldF9rZXkoJnJjNV9rcywgMTYsIGtleTE2LCAxMik7Ci0rICAgIH0KLSAjIGVuZGlm Ci0gIyBpZm5kZWYgT1BFTlNTTF9OT19CRgotLSAgICBCRl9zZXRfa2V5KCZiZl9rcywgMTYsIGtl eTE2KTsKLSsgICAgaWYgKGRvaXRbRF9DQkNfQkZdKSB7Ci0rICAgICAgICBCRl9zZXRfa2V5KCZi Zl9rcywgMTYsIGtleTE2KTsKLSsgICAgfQotICMgZW5kaWYKLSAjIGlmbmRlZiBPUEVOU1NMX05P X0NBU1QKLS0gICAgQ0FTVF9zZXRfa2V5KCZjYXN0X2tzLCAxNiwga2V5MTYpOwotKyAgICBpZiAo ZG9pdFtEX0NCQ19DQVNUXSkgewotKyAgICAgICAgQ0FTVF9zZXRfa2V5KCZjYXN0X2tzLCAxNiwg a2V5MTYpOwotKyAgICB9Ci0gIyBlbmRpZgotICMgaWZuZGVmIE9QRU5TU0xfTk9fUlNBCi0gICAg IG1lbXNldChyc2FfYywgMCwgc2l6ZW9mKHJzYV9jKSk7Ci1AQCAtMTYwNSw2ICsxNjM1LDcgQEAg aW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgSE1BQ19DVFggaGN0eDsK LSAKLSAgICAgICAgIEhNQUNfQ1RYX2luaXQoJmhjdHgpOwotKyAgICAgICAgSE1BQ19DVFhfc2V0 X2ZsYWdzKCZoY3R4LCBFVlBfTURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpOwotICAgICAgICAg SE1BQ19Jbml0X2V4KCZoY3R4LCAodW5zaWduZWQgY2hhciAqKSJUaGlzIGlzIGEga2V5Li4uIiwK LSAgICAgICAgICAgICAgICAgICAgICAxNiwgRVZQX21kNSgpLCBOVUxMKTsKLSAKLWRpZmYgLXVw IG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZS5maXBzIG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQot LS0tIG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZS5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjY2 MjQ1MDM5ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlCTIwMTUtMDQtMjIgMTY6 MDg6NDAuMjg0MjQ1NDY1ICswMjAwCi1AQCAtMTA0MCwxMSArMTA0MCw2IEBAIGlmIChkZWZpbmVk KCRkaXNhYmxlZHsibWQ1In0pIHx8IGRlZmluZWQKLSAJJGRpc2FibGVkeyJzc2wyIn0gPSAiZm9y Y2VkIjsKLSAJfQotIAotLWlmICgkZmlwcyAmJiAkZmlwc2xpYmRpciBlcSAiIikKLS0JewotLQkk Zmlwc2xpYmRpciA9ICRmaXBzZGlyIC4gIi9saWIvIjsKLS0JfQotLQotICMgUlNBWCBFTkdJTkUg c2V0cyBkZWZhdWx0IG5vbi1GSVBTIFJTQSBtZXRob2QuCi0gaWYgKCRmaXBzKQotIAl7Ci1AQCAt MTUzMiw3ICsxNTI3LDYgQEAgJGNmbGFncy49IiAtRE9QRU5TU0xfQk5fQVNNX0dGMm0iIGlmICgk YgotIGlmICgkZmlwcykKLSAJewotIAkkb3BlbnNzbF9vdGhlcl9kZWZpbmVzLj0iI2RlZmluZSBP UEVOU1NMX0ZJUFNcbiI7Ci0tCSRjZmxhZ3MgLj0gIiAtSVwkKEZJUFNESVIpL2luY2x1ZGUiOwot IAl9Ci0gCi0gJGNwdWlkX29iaj0ibWVtX2Nsci5vIgl1bmxlc3MgKCRjcHVpZF9vYmogPX4gL1wu byQvKTsKLUBAIC0xNzI0LDkgKzE3MTgsMTIgQEAgd2hpbGUgKDxJTj4pCi0gCi0gCXMvXkZJUFNE SVI9LiovRklQU0RJUj0kZmlwc2Rpci87Ci0gCXMvXkZJUFNMSUJESVI9LiovRklQU0xJQkRJUj0k Zmlwc2xpYmRpci87Ci0tCXMvXkZJUFNDQU5MSUI9LiovRklQU0NBTkxJQj1saWJjcnlwdG8vIGlm ICRmaXBzOwotIAlzL15CQVNFQUREUj0uKi9CQVNFQUREUj0kYmFzZWFkZHIvOwotIAotKwlpZiAo JGZpcHMpCi0rCQl7Ci0rCQlzL15GSVBTPS4qL0ZJUFM9eWVzLzsKLSsJCX0KLSAJcy9eU0hMSUJf VEFSR0VUPS4qL1NITElCX1RBUkdFVD0kc2hhcmVkX3RhcmdldC87Ci0gCXMvXlNITElCX01BUks9 LiovU0hMSUJfTUFSSz0kc2hhcmVkX21hcmsvOwotIAlzL15TSEFSRURfTElCUz0uKi9TSEFSRURf TElCUz1cJChTSEFSRURfQ1JZUFRPKSBcJChTSEFSRURfU1NMKS8gaWYgKCEkbm9fc2hhcmVkKTsK LWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9hZXMvYWVzX21pc2MuYy5maXBzIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9hZXMvYWVzX21pc2MuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9hZXMvYWVzX21pc2MuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAw Ci0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Flcy9hZXNfbWlzYy5jCTIwMTUtMDQtMjIgMTY6 MDg6NDAuMjg0MjQ1NDY1ICswMjAwCi1AQCAtNzAsMTcgKzcwLDExIEBAIGNvbnN0IGNoYXIgKkFF U19vcHRpb25zKHZvaWQpCi0gaW50IEFFU19zZXRfZW5jcnlwdF9rZXkoY29uc3QgdW5zaWduZWQg Y2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg QUVTX0tFWSAqa2V5KQotIHsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGZpcHNfY2lwaGVy X2Fib3J0KEFFUyk7Ci0tI2VuZGlmCi0gICAgIHJldHVybiBwcml2YXRlX0FFU19zZXRfZW5jcnlw dF9rZXkodXNlcktleSwgYml0cywga2V5KTsKLSB9Ci0gCi0gaW50IEFFU19zZXRfZGVjcnlwdF9r ZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwgY29uc3QgaW50IGJpdHMsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgQUVTX0tFWSAqa2V5KQotIHsKLS0jaWZkZWYgT1BFTlNTTF9GSVBT Ci0tICAgIGZpcHNfY2lwaGVyX2Fib3J0KEFFUyk7Ci0tI2VuZGlmCi0gICAgIHJldHVybiBwcml2 YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkodXNlcktleSwgYml0cywga2V5KTsKLSB9Ci1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vY21hYy9jbWFjLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vY21hYy9jbWFjLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vY21hYy9jbWFjLmMu ZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9jbWFjL2NtYWMuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4NDI0NTQ2NSArMDIw MAotQEAgLTEwNSwxMiArMTA1LDYgQEAgQ01BQ19DVFggKkNNQUNfQ1RYX25ldyh2b2lkKQotIAot IHZvaWQgQ01BQ19DVFhfY2xlYW51cChDTUFDX0NUWCAqY3R4KQotIHsKLS0jaWZkZWYgT1BFTlNT TF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSAmJiAhY3R4LT5jY3R4LmVuZ2luZSkgewotLSAg ICAgICAgRklQU19jbWFjX2N0eF9jbGVhbnVwKGN0eCk7Ci0tICAgICAgICByZXR1cm47Ci0tICAg IH0KLS0jZW5kaWYKLSAgICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgmY3R4LT5jY3R4KTsKLSAg ICAgT1BFTlNTTF9jbGVhbnNlKGN0eC0+dGJsLCBFVlBfTUFYX0JMT0NLX0xFTkdUSCk7Ci0gICAg IE9QRU5TU0xfY2xlYW5zZShjdHgtPmsxLCBFVlBfTUFYX0JMT0NLX0xFTkdUSCk7Ci1AQCAtMTU4 LDEyICsxNTIsNiBAQCBpbnQgQ01BQ19Jbml0KENNQUNfQ1RYICpjdHgsIGNvbnN0IHZvaWQKLSAg ICAgICAgICAgICBFVlBlcnIoRVZQX0ZfQ01BQ19JTklULCBFVlBfUl9ESVNBQkxFRF9GT1JfRklQ Uyk7Ci0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9Ci0tICAgICAgICAvKgotLSAg ICAgICAgICogT3RoZXIgYWxnb3JpdGhtIGJsb2NraW5nIHdpbGwgYmUgZG9uZSBpbiBGSVBTX2Nt YWNfaW5pdCwgdmlhCi0tICAgICAgICAgKiBGSVBTX2NpcGhlcmluaXQoKS4KLS0gICAgICAgICAq LwotLSAgICAgICAgaWYgKCFpbXBsICYmICFjdHgtPmNjdHguZW5naW5lKQotLSAgICAgICAgICAg IHJldHVybiBGSVBTX2NtYWNfaW5pdChjdHgsIGtleSwga2V5bGVuLCBjaXBoZXIsIE5VTEwpOwot ICAgICB9Ci0gI2VuZGlmCi0gICAgIC8qIEFsbCB6ZXJvcyBtZWFucyByZXN0YXJ0ICovCi1AQCAt MjA5LDEwICsxOTcsNiBAQCBpbnQgQ01BQ19VcGRhdGUoQ01BQ19DVFggKmN0eCwgY29uc3Qgdm9p Ci0gewotICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhID0gaW47Ci0gICAgIHNpemVfdCBi bDsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSAmJiAhY3R4LT5j Y3R4LmVuZ2luZSkKLS0gICAgICAgIHJldHVybiBGSVBTX2NtYWNfdXBkYXRlKGN0eCwgaW4sIGRs ZW4pOwotLSNlbmRpZgotICAgICBpZiAoY3R4LT5ubGFzdF9ibG9jayA9PSAtMSkKLSAgICAgICAg IHJldHVybiAwOwotICAgICBpZiAoZGxlbiA9PSAwKQotQEAgLTI1MiwxMCArMjM2LDYgQEAgaW50 IENNQUNfVXBkYXRlKENNQUNfQ1RYICpjdHgsIGNvbnN0IHZvaQotIGludCBDTUFDX0ZpbmFsKENN QUNfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90ICpwb3V0bGVuKQotIHsKLSAg ICAgaW50IGksIGJsLCBsYjsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21v ZGUoKSAmJiAhY3R4LT5jY3R4LmVuZ2luZSkKLS0gICAgICAgIHJldHVybiBGSVBTX2NtYWNfZmlu YWwoY3R4LCBvdXQsIHBvdXRsZW4pOwotLSNlbmRpZgotICAgICBpZiAoY3R4LT5ubGFzdF9ibG9j ayA9PSAtMSkKLSAgICAgICAgIHJldHVybiAwOwotICAgICBibCA9IEVWUF9DSVBIRVJfQ1RYX2Js b2NrX3NpemUoJmN0eC0+Y2N0eCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vY3J5 cHRvLmguZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vY3J5cHRvLmgKLS0tLSBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vY3J5cHRvLmguZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjE2MTI0MjU1MiAr MDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9jcnlwdG8uaAkyMDE1LTA0LTIyIDE2OjA4 OjQwLjI4NTI0NTQ4OSArMDIwMAotQEAgLTYwMCwyNCArNjAwLDI5IEBAIGludCBGSVBTX21vZGVf c2V0KGludCByKTsKLSB2b2lkIE9QRU5TU0xfaW5pdCh2b2lkKTsKLSAKLSAjIGRlZmluZSBmaXBz X21kX2luaXQoYWxnKSBmaXBzX21kX2luaXRfY3R4KGFsZywgYWxnKQotKyMgZGVmaW5lIG5vbmZp cHNfbWRfaW5pdChhbGcpIG5vbmZpcHNfbWRfaW5pdF9jdHgoYWxnLCBhbGcpCi0rIyBkZWZpbmUg Zmlwc19tZF9pbml0X2N0eChhbGcsIGN4KSBcCi0rICAgICAgICBpbnQgYWxnIyNfSW5pdChjeCMj X0NUWCAqYykKLSAKLSAjIGlmZGVmIE9QRU5TU0xfRklQUwotLSMgIGRlZmluZSBmaXBzX21kX2lu aXRfY3R4KGFsZywgY3gpIFwKLSsjICBkZWZpbmUgbm9uZmlwc19tZF9pbml0X2N0eChhbGcsIGN4 KSBcCi0gICAgICAgICBpbnQgYWxnIyNfSW5pdChjeCMjX0NUWCAqYykgXAotICAgICAgICAgeyBc Ci0gICAgICAgICBpZiAoRklQU19tb2RlKCkpIE9wZW5TU0xEaWUoX19GSUxFX18sIF9fTElORV9f LCBcCi0tICAgICAgICAgICAgICAgICJMb3cgbGV2ZWwgQVBJIGNhbGwgdG8gZGlnZXN0ICIgI2Fs ZyAiIGZvcmJpZGRlbiBpbiBGSVBTIG1vZGUhIik7IFwKLSsgICAgICAgICAgICAgICAgIkRpZ2Vz dCAiICNhbGcgIiBmb3JiaWRkZW4gaW4gRklQUyBtb2RlISIpOyBcCi0gICAgICAgICByZXR1cm4g cHJpdmF0ZV8jI2FsZyMjX0luaXQoYyk7IFwKLSAgICAgICAgIH0gXAotICAgICAgICAgaW50IHBy aXZhdGVfIyNhbGcjI19Jbml0KGN4IyNfQ1RYICpjKQotIAotICMgIGRlZmluZSBmaXBzX2NpcGhl cl9hYm9ydChhbGcpIFwKLSAgICAgICAgIGlmIChGSVBTX21vZGUoKSkgT3BlblNTTERpZShfX0ZJ TEVfXywgX19MSU5FX18sIFwKLS0gICAgICAgICAgICAgICAgIkxvdyBsZXZlbCBBUEkgY2FsbCB0 byBjaXBoZXIgIiAjYWxnICIgZm9yYmlkZGVuIGluIEZJUFMgbW9kZSEiKQotKyAgICAgICAgICAg ICAgICAiQ2lwaGVyICIgI2FsZyAiIGZvcmJpZGRlbiBpbiBGSVBTIG1vZGUhIikKLSsKLSsvKiBk aWUgaWYgRklQUyBzZWxmdGVzdCBmYWlsZWQgKi8KLSt2b2lkIEZJUFNfc2VsZnRlc3RfY2hlY2so dm9pZCk7Ci0gCi0gIyBlbHNlCi0tIyAgZGVmaW5lIGZpcHNfbWRfaW5pdF9jdHgoYWxnLCBjeCkg XAotLSAgICAgICAgaW50IGFsZyMjX0luaXQoY3gjI19DVFggKmMpCi0rIyAgZGVmaW5lIG5vbmZp cHNfbWRfaW5pdF9jdHgoYWxnLCBjeCkgZmlwc19tZF9pbml0X2N0eChhbGcsIGN4KQotICMgIGRl ZmluZSBmaXBzX2NpcGhlcl9hYm9ydChhbGcpIHdoaWxlKDApCi0gIyBlbmRpZgotIAotQEAgLTYz Nyw2ICs2NDIsOSBAQCBpbnQgQ1JZUFRPX21lbWNtcChjb25zdCB2b2lkICphLCBjb25zdCB2Ci0g ICovCi0gdm9pZCBFUlJfbG9hZF9DUllQVE9fc3RyaW5ncyh2b2lkKTsKLSAKLSsjIGRlZmluZSBP UEVOU1NMX0hBVkVfSU5JVCAgICAgICAxCi0rdm9pZCBPUEVOU1NMX2luaXRfbGlicmFyeSh2b2lk KTsKLSsKLSAvKiBFcnJvciBjb2RlcyBmb3IgdGhlIENSWVBUTyBmdW5jdGlvbnMuICovCi0gCi0g LyogRnVuY3Rpb24gY29kZXMuICovCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZGVz L2Rlcy5oLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Rlcy9kZXMuaAotLS0tIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9kZXMvZGVzLmguZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjE5MTI0MzI2 MyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kZXMvZGVzLmgJMjAxNS0wNC0yMiAx NjowODo0MC4yODUyNDU0ODkgKzAyMDAKLUBAIC0yMzEsMTAgKzIzMSw2IEBAIGludCBERVNfc2V0 X2tleShjb25zdF9ERVNfY2Jsb2NrICprZXksIEQKLSBpbnQgREVTX2tleV9zY2hlZChjb25zdF9E RVNfY2Jsb2NrICprZXksIERFU19rZXlfc2NoZWR1bGUgKnNjaGVkdWxlKTsKLSBpbnQgREVTX3Nl dF9rZXlfY2hlY2tlZChjb25zdF9ERVNfY2Jsb2NrICprZXksIERFU19rZXlfc2NoZWR1bGUgKnNj aGVkdWxlKTsKLSB2b2lkIERFU19zZXRfa2V5X3VuY2hlY2tlZChjb25zdF9ERVNfY2Jsb2NrICpr ZXksIERFU19rZXlfc2NoZWR1bGUgKnNjaGVkdWxlKTsKLS0jIGlmZGVmIE9QRU5TU0xfRklQUwot LXZvaWQgcHJpdmF0ZV9ERVNfc2V0X2tleV91bmNoZWNrZWQoY29uc3RfREVTX2NibG9jayAqa2V5 LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVTX2tleV9zY2hlZHVsZSAq c2NoZWR1bGUpOwotLSMgZW5kaWYKLSB2b2lkIERFU19zdHJpbmdfdG9fa2V5KGNvbnN0IGNoYXIg KnN0ciwgREVTX2NibG9jayAqa2V5KTsKLSB2b2lkIERFU19zdHJpbmdfdG9fMmtleXMoY29uc3Qg Y2hhciAqc3RyLCBERVNfY2Jsb2NrICprZXkxLCBERVNfY2Jsb2NrICprZXkyKTsKLSB2b2lkIERF U19jZmI2NF9lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpv dXQsCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZGVzL3NldF9rZXkuYy5maXBzIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9kZXMvc2V0X2tleS5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2Rlcy9zZXRfa2V5LmMuZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEw MAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kZXMvc2V0X2tleS5jCTIwMTUtMDQtMjIgMTY6 MDg6NDAuMjg1MjQ1NDg5ICswMjAwCi1AQCAtMzU5LDE1ICszNTksNiBAQCBpbnQgREVTX3NldF9r ZXlfY2hlY2tlZChjb25zdF9ERVNfY2Jsb2NrCi0gfQotIAotIHZvaWQgREVTX3NldF9rZXlfdW5j aGVja2VkKGNvbnN0X0RFU19jYmxvY2sgKmtleSwgREVTX2tleV9zY2hlZHVsZSAqc2NoZWR1bGUp Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLXsKLS0gICAgZmlwc19jaXBoZXJfYWJvcnQoREVTKTsK LS0gICAgcHJpdmF0ZV9ERVNfc2V0X2tleV91bmNoZWNrZWQoa2V5LCBzY2hlZHVsZSk7Ci0tfQot LQotLXZvaWQgcHJpdmF0ZV9ERVNfc2V0X2tleV91bmNoZWNrZWQoY29uc3RfREVTX2NibG9jayAq a2V5LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVTX2tleV9zY2hlZHVs ZSAqc2NoZWR1bGUpCi0tI2VuZGlmCi0gewotICAgICBzdGF0aWMgY29uc3QgaW50IHNoaWZ0czJb MTZdID0KLSAgICAgICAgIHsgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMSwgMSwgMSwgMSwg MSwgMSwgMCB9OwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoX2dlbi5jLmZp cHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoX2dlbi5jCi0tLS0gb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2RoL2RoX2dlbi5jLmZpcHMJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZGgvZGhfZ2VuLmMJMjAxNS0wNC0yMiAxNjow ODo0MC4yODUyNDU0ODkgKzAyMDAKLUBAIC04NSwxMCArODUsNiBAQCBpbnQgREhfZ2VuZXJhdGVf cGFyYW1ldGVyc19leChESCAqcmV0LCBpCi0gI2VuZGlmCi0gICAgIGlmIChyZXQtPm1ldGgtPmdl bmVyYXRlX3BhcmFtcykKLSAgICAgICAgIHJldHVybiByZXQtPm1ldGgtPmdlbmVyYXRlX3BhcmFt cyhyZXQsIHByaW1lX2xlbiwgZ2VuZXJhdG9yLCBjYik7Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwot LSAgICBpZiAoRklQU19tb2RlKCkpCi0tICAgICAgICByZXR1cm4gRklQU19kaF9nZW5lcmF0ZV9w YXJhbWV0ZXJzX2V4KHJldCwgcHJpbWVfbGVuLCBnZW5lcmF0b3IsIGNiKTsKLS0jZW5kaWYKLSAg ICAgcmV0dXJuIGRoX2J1aWx0aW5fZ2VucGFyYW1zKHJldCwgcHJpbWVfbGVuLCBnZW5lcmF0b3Is IGNiKTsKLSB9Ci0gCi1AQCAtMTI2LDYgKzEyMiwxOCBAQCBzdGF0aWMgaW50IGRoX2J1aWx0aW5f Z2VucGFyYW1zKERIICpyZXQsCi0gICAgIGludCBnLCBvayA9IC0xOwotICAgICBCTl9DVFggKmN0 eCA9IE5VTEw7Ci0gCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyAgICBpZiAoRklQU19zZWxmdGVz dF9mYWlsZWQoKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfREhfQlVJTFRJTl9HRU5QQVJB TVMsIEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsg ICAgfQotKwotKyAgICBpZiAoRklQU19tb2RlKCkgJiYgKHByaW1lX2xlbiA8IE9QRU5TU0xfREhf RklQU19NSU5fTU9EVUxVU19CSVRTKSkgewotKyAgICAgICAgREhlcnIoREhfRl9ESF9CVUlMVElO X0dFTlBBUkFNUywgREhfUl9LRVlfU0laRV9UT09fU01BTEwpOwotKyAgICAgICAgZ290byBlcnI7 Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSAgICAgY3R4ID0gQk5fQ1RYX25ldygpOwotICAgICBpZiAo Y3R4ID09IE5VTEwpCi0gICAgICAgICBnb3RvIGVycjsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9kaC9kaC5oLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoLmgKLS0tLSBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZGgvZGguaC5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMTM0 MjQxOTEzICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoLmgJMjAxNS0wNC0y MiAxNjowODo0MC4yODUyNDU0ODkgKzAyMDAKLUBAIC03Nyw2ICs3Nyw4IEBACi0gIyAgZGVmaW5l IE9QRU5TU0xfREhfTUFYX01PRFVMVVNfQklUUyAgICAxMDAwMAotICMgZW5kaWYKLSAKLSsjIGRl ZmluZSBPUEVOU1NMX0RIX0ZJUFNfTUlOX01PRFVMVVNfQklUUyAxMDI0Ci0rCi0gIyBkZWZpbmUg REhfRkxBR19DQUNIRV9NT05UX1AgICAgIDB4MDEKLSAKLSAvKgotZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2RoL2RoX2tleS5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RoL2Ro X2tleS5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoX2tleS5jLmZpcHMJMjAxNS0w My0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v ZGgvZGhfa2V5LmMJMjAxNS0wNC0yMiAxNjowODo0MC4yODUyNDU0ODkgKzAyMDAKLUBAIC02MSw2 ICs2MSw5IEBACi0gI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9y YW5kLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvZGguaD4KLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0r IyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSAKLSBzdGF0aWMgaW50IGdlbmVy YXRlX2tleShESCAqZGgpOwotIHN0YXRpYyBpbnQgY29tcHV0ZV9rZXkodW5zaWduZWQgY2hhciAq a2V5LCBjb25zdCBCSUdOVU0gKnB1Yl9rZXksIERIICpkaCk7Ci1AQCAtOTcsNyArMTAwLDcgQEAg aW50IERIX2NvbXB1dGVfa2V5KHVuc2lnbmVkIGNoYXIgKmtleSwgYwotIGludCBESF9jb21wdXRl X2tleV9wYWRkZWQodW5zaWduZWQgY2hhciAqa2V5LCBjb25zdCBCSUdOVU0gKnB1Yl9rZXksIERI ICpkaCkKLSB7Ci0gICAgIGludCBydiwgcGFkOwotLSAgICBydiA9IGRoLT5tZXRoLT5jb21wdXRl X2tleShrZXksIHB1Yl9rZXksIGRoKTsKLSsgICAgcnYgPSBESF9jb21wdXRlX2tleShrZXksIHB1 Yl9rZXksIGRoKTsKLSAgICAgaWYgKHJ2IDw9IDApCi0gICAgICAgICByZXR1cm4gcnY7Ci0gICAg IHBhZCA9IEJOX251bV9ieXRlcyhkaC0+cCkgLSBydjsKLUBAIC0xMTUsNyArMTE4LDcgQEAgc3Rh dGljIERIX01FVEhPRCBkaF9vc3NsID0gewotICAgICBkaF9ibl9tb2RfZXhwLAotICAgICBkaF9p bml0LAotICAgICBkaF9maW5pc2gsCi0tICAgIDAsCi0rICAgIERIX0ZMQUdfRklQU19NRVRIT0Qs Ci0gICAgIE5VTEwsCi0gICAgIE5VTEwKLSB9OwotQEAgLTEzNCw2ICsxMzcsMTQgQEAgc3RhdGlj IGludCBnZW5lcmF0ZV9rZXkoREggKmRoKQotICAgICBCTl9NT05UX0NUWCAqbW9udCA9IE5VTEw7 Ci0gICAgIEJJR05VTSAqcHViX2tleSA9IE5VTEwsICpwcml2X2tleSA9IE5VTEw7Ci0gCi0rI2lm ZGVmIE9QRU5TU0xfRklQUwotKyAgICBpZiAoRklQU19tb2RlKCkKLSsgICAgICAgICYmIChCTl9u dW1fYml0cyhkaC0+cCkgPCBPUEVOU1NMX0RIX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpIHsKLSsg ICAgICAgIERIZXJyKERIX0ZfR0VORVJBVEVfS0VZLCBESF9SX0tFWV9TSVpFX1RPT19TTUFMTCk7 Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyNlbmRpZgotKwotICAgICBjdHggPSBCTl9D VFhfbmV3KCk7Ci0gICAgIGlmIChjdHggPT0gTlVMTCkKLSAgICAgICAgIGdvdG8gZXJyOwotQEAg LTIxNyw2ICsyMjgsMTMgQEAgc3RhdGljIGludCBjb21wdXRlX2tleSh1bnNpZ25lZCBjaGFyICpr ZQotICAgICAgICAgREhlcnIoREhfRl9DT01QVVRFX0tFWSwgREhfUl9NT0RVTFVTX1RPT19MQVJH RSk7Ci0gICAgICAgICBnb3RvIGVycjsKLSAgICAgfQotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsg ICAgaWYgKEZJUFNfbW9kZSgpCi0rICAgICAgICAmJiAoQk5fbnVtX2JpdHMoZGgtPnApIDwgT1BF TlNTTF9ESF9GSVBTX01JTl9NT0RVTFVTX0JJVFMpKSB7Ci0rICAgICAgICBESGVycihESF9GX0NP TVBVVEVfS0VZLCBESF9SX0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0rICAgICAgICBnb3RvIGVycjsK LSsgICAgfQotKyNlbmRpZgotIAotICAgICBjdHggPSBCTl9DVFhfbmV3KCk7Ci0gICAgIGlmIChj dHggPT0gTlVMTCkKLUBAIC0yNzcsNiArMjk1LDkgQEAgc3RhdGljIGludCBkaF9ibl9tb2RfZXhw KGNvbnN0IERIICpkaCwgQgotIAotIHN0YXRpYyBpbnQgZGhfaW5pdChESCAqZGgpCi0gewotKyNp ZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgRklQU19zZWxmdGVzdF9jaGVjaygpOwotKyNlbmRpZgot ICAgICBkaC0+ZmxhZ3MgfD0gREhfRkxBR19DQUNIRV9NT05UX1A7Ci0gICAgIHJldHVybiAoMSk7 Ci0gfQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoX2xpYi5jLmZpcHMgb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2RoL2RoX2xpYi5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2RoL2RoX2xpYi5jLmZpcHMJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKLSsr KyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZGgvZGhfbGliLmMJMjAxNS0wNC0yMiAxNjowODo0MC4y ODYyNDU1MTIgKzAyMDAKLUBAIC04MCwxNCArODAsNyBAQCB2b2lkIERIX3NldF9kZWZhdWx0X21l dGhvZChjb25zdCBESF9NRVRICi0gY29uc3QgREhfTUVUSE9EICpESF9nZXRfZGVmYXVsdF9tZXRo b2Qodm9pZCkKLSB7Ci0gICAgIGlmICghZGVmYXVsdF9ESF9tZXRob2QpIHsKLS0jaWZkZWYgT1BF TlNTTF9GSVBTCi0tICAgICAgICBpZiAoRklQU19tb2RlKCkpCi0tICAgICAgICAgICAgcmV0dXJu IEZJUFNfZGhfb3BlbnNzbCgpOwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICAgIHJldHVybiBE SF9PcGVuU1NMKCk7Ci0tI2Vsc2UKLSAgICAgICAgIGRlZmF1bHRfREhfbWV0aG9kID0gREhfT3Bl blNTTCgpOwotLSNlbmRpZgotICAgICB9Ci0gICAgIHJldHVybiBkZWZhdWx0X0RIX21ldGhvZDsK LSB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9lcnIuYy5maXBzIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhX2Vyci5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2RzYS9kc2FfZXJyLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEw MAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhX2Vyci5jCTIwMTUtMDQtMjIgMTY6 MDg6NDAuMjg2MjQ1NTEyICswMjAwCi1AQCAtNzQsNiArNzQsOCBAQCBzdGF0aWMgRVJSX1NUUklO R19EQVRBIERTQV9zdHJfZnVuY3RzW10KLSAgICAge0VSUl9GVU5DKERTQV9GX0RPX0RTQV9QUklO VCksICJET19EU0FfUFJJTlQifSwKLSAgICAge0VSUl9GVU5DKERTQV9GX0RTQVBBUkFNU19QUklO VCksICJEU0FwYXJhbXNfcHJpbnQifSwKLSAgICAge0VSUl9GVU5DKERTQV9GX0RTQVBBUkFNU19Q UklOVF9GUCksICJEU0FwYXJhbXNfcHJpbnRfZnAifSwKLSsgICAge0VSUl9GVU5DKERTQV9GX0RT QV9CVUlMVElOX0tFWUdFTiksICJkc2FfYnVpbHRpbl9rZXlnZW4ifSwKLSsgICAge0VSUl9GVU5D KERTQV9GX0RTQV9CVUlMVElOX1BBUkFNR0VOKSwgImRzYV9idWlsdGluX3BhcmFtZ2VuIn0sCi0g ICAgIHtFUlJfRlVOQyhEU0FfRl9EU0FfQlVJTFRJTl9QQVJBTUdFTjIpLCAiRFNBX0JVSUxUSU5f UEFSQU1HRU4yIn0sCi0gICAgIHtFUlJfRlVOQyhEU0FfRl9EU0FfRE9fU0lHTiksICJEU0FfZG9f c2lnbiJ9LAotICAgICB7RVJSX0ZVTkMoRFNBX0ZfRFNBX0RPX1ZFUklGWSksICJEU0FfZG9fdmVy aWZ5In0sCi1AQCAtMTA5LDYgKzExMSw4IEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgRFNBX3N0 cl9yZWFzb25zW10KLSAgICAge0VSUl9SRUFTT04oRFNBX1JfREVDT0RFX0VSUk9SKSwgImRlY29k ZSBlcnJvciJ9LAotICAgICB7RVJSX1JFQVNPTihEU0FfUl9JTlZBTElEX0RJR0VTVF9UWVBFKSwg ImludmFsaWQgZGlnZXN0IHR5cGUifSwKLSAgICAge0VSUl9SRUFTT04oRFNBX1JfSU5WQUxJRF9Q QVJBTUVURVJTKSwgImludmFsaWQgcGFyYW1ldGVycyJ9LAotKyAgICB7RVJSX1JFQVNPTihEU0Ff Ul9LRVlfU0laRV9JTlZBTElEKSwgImtleSBzaXplIGludmFsaWQifSwKLSsgICAge0VSUl9SRUFT T04oRFNBX1JfS0VZX1NJWkVfVE9PX1NNQUxMKSwgImtleSBzaXplIHRvbyBzbWFsbCJ9LAotICAg ICB7RVJSX1JFQVNPTihEU0FfUl9NSVNTSU5HX1BBUkFNRVRFUlMpLCAibWlzc2luZyBwYXJhbWV0 ZXJzIn0sCi0gICAgIHtFUlJfUkVBU09OKERTQV9SX01PRFVMVVNfVE9PX0xBUkdFKSwgIm1vZHVs dXMgdG9vIGxhcmdlIn0sCi0gICAgIHtFUlJfUkVBU09OKERTQV9SX05FRURfTkVXX1NFVFVQX1ZB TFVFUyksICJuZWVkIG5ldyBzZXR1cCB2YWx1ZXMifSwKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9kc2EvZHNhX2dlbi5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2Ff Z2VuLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9nZW4uYy5maXBzCTIwMTUt MDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2RzYS9kc2FfZ2VuLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yODYyNDU1MTIgKzAyMDAKLUBAIC05 MSw2ICs5MSwxNiBAQAotICMgIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotICMgZW5kaWYKLSAK LSsjIGlmbmRlZiBPUEVOU1NMX0ZJUFMKLStzdGF0aWMgaW50IEZJUFNfZHNhX2dlbmVyYXRlX3Bx KEJOX0NUWCAqY3R4LCBzaXplX3QgYml0cywgc2l6ZV90IHFiaXRzLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgRVZQX01EICpldnBtZCwgdW5zaWduZWQgY2hhciAqc2Vl ZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZWVkX2xlbiwgQklHTlVN ICoqcF9yZXQsIEJJR05VTSAqKnFfcmV0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50ICpjb3VudGVyX3JldCwgQk5fR0VOQ0IgKmNiKTsKLStzdGF0aWMgaW50IEZJUFNfZHNh X2dlbmVyYXRlX2coQk5fQ1RYICpjdHgsIEJJR05VTSAqcCwgQklHTlVNICpxLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBCSUdOVU0gKipnX3JldCwgdW5zaWduZWQgbG9uZyAqaF9y ZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJOX0dFTkNCICpjYik7Ci0rIyBl bmRpZgotKwotIGludCBEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChEU0EgKnJldCwgaW50IGJp dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KnNlZWRfaW4sIGludCBzZWVkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICpjb3VudGVyX3JldCwgdW5zaWduZWQgbG9uZyAqaF9yZXQsCi1AQCAtMTA2LDEzICsxMTYs NiBAQCBpbnQgRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgoRFNBICpyZXQsCi0gICAgIGlmIChy ZXQtPm1ldGgtPmRzYV9wYXJhbWdlbikKLSAgICAgICAgIHJldHVybiByZXQtPm1ldGgtPmRzYV9w YXJhbWdlbihyZXQsIGJpdHMsIHNlZWRfaW4sIHNlZWRfbGVuLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfcmV0LCBoX3JldCwgY2IpOwotLSMgaWZkZWYg T1BFTlNTTF9GSVBTCi0tICAgIGVsc2UgaWYgKEZJUFNfbW9kZSgpKSB7Ci0tICAgICAgICByZXR1 cm4gRklQU19kc2FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChyZXQsIGJpdHMsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkX2luLCBzZWVkX2xlbiwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJf cmV0LCBoX3JldCwgY2IpOwotLSAgICB9Ci0tIyBlbmRpZgotICAgICBlbHNlIHsKLSAgICAgICAg IGNvbnN0IEVWUF9NRCAqZXZwbWQ7Ci0gICAgICAgICBzaXplX3QgcWJpdHMgPSBiaXRzID49IDIw NDggPyAyNTYgOiAxNjA7Ci1AQCAtMTI2LDgwICsxMjksMTU2IEBAIGludCBEU0FfZ2VuZXJhdGVf cGFyYW1ldGVyc19leChEU0EgKnJldCwKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIHJldHVybiBk c2FfYnVpbHRpbl9wYXJhbWdlbihyZXQsIGJpdHMsIHFiaXRzLCBldnBtZCwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkX2luLCBzZWVkX2xlbiwgTlVMTCwgY291bnRl cl9yZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZF9pbiwgc2Vl ZF9sZW4sIGNvdW50ZXJfcmV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGhfcmV0LCBjYik7Ci0gICAgIH0KLSB9Ci0gCi0rIyBpZmRlZiBPUEVOU1NMX0ZJUFMKLStpbnQg RklQU19kc2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV90IGJpdHMsIHNpemVfdCBx Yml0cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFVlBfTUQgKmV2cG1k LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNl ZWRfaW4sIHNpemVfdCBzZWVkX2xlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgKmNvdW50ZXJfcmV0LCB1bnNpZ25lZCBsb25nICpoX3JldCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBCTl9HRU5DQiAqY2IpCi0rewotKyAgICByZXR1cm4gZHNhX2J1aWx0aW5f cGFyYW1nZW4ocmV0LCBiaXRzLCBxYml0cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGV2cG1kLCBzZWVkX2luLCBzZWVkX2xlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvdW50ZXJfcmV0LCBoX3JldCwgY2IpOwotK30KLSsjIGVuZGlmCi0rCi0gaW50IGRz YV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplX3QgYml0cywgc2l6ZV90IHFiaXRzLAot ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFVlBfTUQgKmV2cG1kLCBjb25zdCB1bnNp Z25lZCBjaGFyICpzZWVkX2luLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2Vl ZF9sZW4sIHVuc2lnbmVkIGNoYXIgKnNlZWRfb3V0LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplX3Qgc2VlZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY291bnRl cl9yZXQsIHVuc2lnbmVkIGxvbmcgKmhfcmV0LCBCTl9HRU5DQiAqY2IpCi0gewotICAgICBpbnQg b2sgPSAwOwotICAgICB1bnNpZ25lZCBjaGFyIHNlZWRbU0hBMjU2X0RJR0VTVF9MRU5HVEhdOwot KyAgICBCSUdOVU0gKmcgPSBOVUxMLCAqcSA9IE5VTEwsICpwID0gTlVMTDsKLSsgICAgc2l6ZV90 IHFzaXplID0gcWJpdHMgPj4gMzsKLSsgICAgQk5fQ1RYICpjdHggPSBOVUxMOwotKyAgICAKLSsj IGlmZGVmIE9QRU5TU0xfRklQUwotKyAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgewot KyAgICAgICAgRklQU2VycihGSVBTX0ZfRFNBX0JVSUxUSU5fUEFSQU1HRU4sIEZJUFNfUl9GSVBT X1NFTEZURVNUX0ZBSUxFRCk7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICBp ZiAoRklQU19tb2R1bGVfbW9kZSgpICYmCi0rICAgICAgICAoYml0cyAhPSAxMDI0IHx8IHFiaXRz ICE9IDE2MCkgJiYKLSsgICAgICAgIChiaXRzICE9IDIwNDggfHwgcWJpdHMgIT0gMjI0KSAmJgot KyAgICAgICAgKGJpdHMgIT0gMjA0OCB8fCBxYml0cyAhPSAyNTYpICYmIChiaXRzICE9IDMwNzIg fHwgcWJpdHMgIT0gMjU2KSkgewotKyAgICAgICAgRFNBZXJyKERTQV9GX0RTQV9CVUlMVElOX1BB UkFNR0VOLCBEU0FfUl9LRVlfU0laRV9JTlZBTElEKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAg ICB9Ci0rIyBlbmRpZgotKyAgICBpZiAoc2VlZF9sZW4gJiYgKHNlZWRfbGVuIDwgKHNpemVfdClx c2l6ZSkpCi0rICAgICAgICBzZWVkX2luID0gTlVMTDsgICAgICAgICAvKiBzZWVkIGJ1ZmZlciB0 b28gc21hbGwgLS0gaWdub3JlICovCi0rICAgIGlmIChzZWVkX2xlbiA+IHNpemVvZihzZWVkKSkK LSsgICAgICAgIHNlZWRfbGVuID0gc2l6ZW9mKHNlZWQpOyAvKiBBcHAuIDIuMiBvZiBGSVBTIFBV QiAxODYgYWxsb3dzIGxhcmdlciBTRUVELAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqIGJ1dCBvdXIgaW50ZXJuYWwgYnVmZmVycyBhcmUgcmVzdHJpY3RlZCB0byAyNTYgYml0 cyovCi0rICAgIGlmIChzZWVkX2luICE9IE5VTEwpCi0rICAgICAgICBtZW1jcHkoc2VlZCwgc2Vl ZF9pbiwgc2VlZF9sZW4pOwotKyAgICBlbHNlCi0rICAgICAgICBzZWVkX2xlbiA9IDA7Ci0rICAg ICAgICAKLSsgICAgaWYgKChjdHggPSBCTl9DVFhfbmV3KCkpID09IE5VTEwpCi0rICAgICAgICBn b3RvIGVycjsKLSsgCi0rICAgIEJOX0NUWF9zdGFydChjdHgpOwotKyAKLSsgICAgaWYgKCFGSVBT X2RzYV9nZW5lcmF0ZV9wcShjdHgsIGJpdHMsIHFiaXRzLCBldnBtZCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWVkLCBzZWVkX2xlbiwgJnAsICZxLCBjb3VudGVyX3JldCwgY2Ip KQotKyAgICAgICAgZ290byBlcnI7Ci0rIAotKyAgICBpZiAoIUZJUFNfZHNhX2dlbmVyYXRlX2co Y3R4LCBwLCBxLCAmZywgaF9yZXQsIGNiKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAKLSsgICAg b2sgPSAxOwotKyBlcnI6Ci0rICAgIGlmIChvaykgewotKyAgICAgICAgaWYgKHJldC0+cCkgewot KyAgICAgICAgICAgIEJOX2ZyZWUocmV0LT5wKTsKLSsgICAgICAgICAgICByZXQtPnAgPSBOVUxM OwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKHJldC0+cSkgewotKyAgICAgICAgICAgIEJOX2Zy ZWUocmV0LT5xKTsKLSsgICAgICAgICAgICByZXQtPnEgPSBOVUxMOwotKyAgICAgICAgfQotKyAg ICAgICAgaWYgKHJldC0+ZykgewotKyAgICAgICAgICAgIEJOX2ZyZWUocmV0LT5nKTsKLSsgICAg ICAgICAgICByZXQtPmcgPSBOVUxMOwotKyAgICAgICAgfQotKyAgICAgICAgcmV0LT5wID0gQk5f ZHVwKHApOwotKyAgICAgICAgcmV0LT5xID0gQk5fZHVwKHEpOwotKyAgICAgICAgcmV0LT5nID0g Qk5fZHVwKGcpOwotKyAgICAgICAgaWYgKHJldC0+cCA9PSBOVUxMIHx8IHJldC0+cSA9PSBOVUxM IHx8IHJldC0+ZyA9PSBOVUxMKQotKyAgICAgICAgICAgIG9rID0gMDsKLSsgICAgfQotKyAgICBp ZiAoY3R4KSB7Ci0rICAgICAgICBCTl9DVFhfZW5kKGN0eCk7Ci0rICAgICAgICBCTl9DVFhfZnJl ZShjdHgpOwotKyAgICB9Ci0rICAgIHJldHVybiBvazsKLSt9Ci0rCi0rIyBpZm5kZWYgT1BFTlNT TF9GSVBTCi0rc3RhdGljCi0rIyBlbmRpZgotK2ludCBGSVBTX2RzYV9nZW5lcmF0ZV9wcShCTl9D VFggKmN0eCwgc2l6ZV90IGJpdHMsIHNpemVfdCBxYml0cywKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgRVZQX01EICpldnBtZCwgdW5zaWduZWQgY2hhciAqc2VlZCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHNlZWRfbGVuLCBCSUdOVU0gKipwX3JldCwgQklHTlVNICoq cV9yZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY291bnRlcl9yZXQsIEJOX0dF TkNCICpjYikKLSt7Ci0rICAgIGludCBvayA9IDA7Ci0gICAgIHVuc2lnbmVkIGNoYXIgbWRbU0hB MjU2X0RJR0VTVF9MRU5HVEhdOwotLSAgICB1bnNpZ25lZCBjaGFyIGJ1ZltTSEEyNTZfRElHRVNU X0xFTkdUSF0sIGJ1ZjJbU0hBMjU2X0RJR0VTVF9MRU5HVEhdOwotKyAgICB1bnNpZ25lZCBjaGFy IGJ1ZltTSEEyNTZfRElHRVNUX0xFTkdUSF07Ci0gICAgIEJJR05VTSAqcjAsICpXLCAqWCwgKmMs ICp0ZXN0OwotLSAgICBCSUdOVU0gKmcgPSBOVUxMLCAqcSA9IE5VTEwsICpwID0gTlVMTDsKLS0g ICAgQk5fTU9OVF9DVFggKm1vbnQgPSBOVUxMOwotLSAgICBpbnQgaSwgaywgbiA9IDAsIG0gPSAw LCBxc2l6ZSA9IHFiaXRzID4+IDM7Ci0rICAgIEJJR05VTSAqcSA9IE5VTEwsICpwID0gTlVMTDsK LSsgICAgaW50IGksIGssIGIsIG4gPSAwLCBtID0gMCwgcXNpemUgPSBxYml0cyA+PiAzOwotICAg ICBpbnQgY291bnRlciA9IDA7Ci0gICAgIGludCByID0gMDsKLS0gICAgQk5fQ1RYICpjdHggPSBO VUxMOwotLSAgICB1bnNpZ25lZCBpbnQgaCA9IDI7Ci0gCi0gICAgIGlmIChxc2l6ZSAhPSBTSEFf RElHRVNUX0xFTkdUSCAmJiBxc2l6ZSAhPSBTSEEyMjRfRElHRVNUX0xFTkdUSCAmJgotICAgICAg ICAgcXNpemUgIT0gU0hBMjU2X0RJR0VTVF9MRU5HVEgpCi0gICAgICAgICAvKiBpbnZhbGlkIHEg c2l6ZSAqLwotICAgICAgICAgcmV0dXJuIDA7Ci0gCi0tICAgIGlmIChldnBtZCA9PSBOVUxMKQot LSAgICAgICAgLyogdXNlIFNIQTEgYXMgZGVmYXVsdCAqLwotLSAgICAgICAgZXZwbWQgPSBFVlBf c2hhMSgpOwotKyAgICBpZiAoZXZwbWQgPT0gTlVMTCkgewotKyAgICAgICAgaWYgKHFiaXRzIDw9 IDE2MCkKLSsgICAgICAgICAgICBldnBtZCA9IEVWUF9zaGExKCk7Ci0rICAgICAgICBlbHNlIGlm IChxYml0cyA8PSAyMjQpCi0rICAgICAgICAgICAgZXZwbWQgPSBFVlBfc2hhMjI0KCk7Ci0rICAg ICAgICBlbHNlCi0rICAgICAgICAgICAgZXZwbWQgPSBFVlBfc2hhMjU2KCk7Ci0rICAgIH0KLSAK LSAgICAgaWYgKGJpdHMgPCA1MTIpCi0gICAgICAgICBiaXRzID0gNTEyOwotIAotICAgICBiaXRz ID0gKGJpdHMgKyA2MykgLyA2NCAqIDY0OwotIAotLSAgICAvKgotLSAgICAgKiBOQjogc2VlZF9s ZW4gPT0gMCBpcyBzcGVjaWFsIGNhc2U6IGNvcHkgZ2VuZXJhdGVkIHNlZWQgdG8gc2VlZF9pbiBp ZgotLSAgICAgKiBpdCBpcyBub3QgTlVMTC4KLS0gICAgICovCi0tICAgIGlmIChzZWVkX2xlbiAm JiAoc2VlZF9sZW4gPCAoc2l6ZV90KXFzaXplKSkKLS0gICAgICAgIHNlZWRfaW4gPSBOVUxMOyAg ICAgICAgIC8qIHNlZWQgYnVmZmVyIHRvbyBzbWFsbCAtLSBpZ25vcmUgKi8KLS0gICAgaWYgKHNl ZWRfbGVuID4gKHNpemVfdClxc2l6ZSkKLS0gICAgICAgIHNlZWRfbGVuID0gcXNpemU7ICAgICAg IC8qIEFwcC4gMi4yIG9mIEZJUFMgUFVCIDE4NiBhbGxvd3MgbGFyZ2VyCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKiBTRUVELCBidXQgb3VyIGludGVybmFsIGJ1ZmZlcnMgYXJl Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZXN0cmljdGVkIHRvIDE2MCBi aXRzICovCi0tICAgIGlmIChzZWVkX2luICE9IE5VTEwpCi0tICAgICAgICBtZW1jcHkoc2VlZCwg c2VlZF9pbiwgc2VlZF9sZW4pOwotLQotLSAgICBpZiAoKGN0eCA9IEJOX0NUWF9uZXcoKSkgPT0g TlVMTCkKLS0gICAgICAgIGdvdG8gZXJyOwotLQotLSAgICBpZiAoKG1vbnQgPSBCTl9NT05UX0NU WF9uZXcoKSkgPT0gTlVMTCkKLS0gICAgICAgIGdvdG8gZXJyOwotLQotLSAgICBCTl9DVFhfc3Rh cnQoY3R4KTsKLSAgICAgcjAgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0tICAgIGcgPSBCTl9DVFhfZ2V0 KGN0eCk7Ci0gICAgIFcgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0tICAgIHEgPSBCTl9DVFhfZ2V0KGN0 eCk7Ci0rICAgICpxX3JldCA9IHEgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0gICAgIFggPSBCTl9DVFhf Z2V0KGN0eCk7Ci0gICAgIGMgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0tICAgIHAgPSBCTl9DVFhfZ2V0 KGN0eCk7Ci0rICAgICpwX3JldCA9IHAgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0gICAgIHRlc3QgPSBC Tl9DVFhfZ2V0KGN0eCk7Ci0gCi0gICAgIGlmICghQk5fbHNoaWZ0KHRlc3QsIEJOX3ZhbHVlX29u ZSgpLCBiaXRzIC0gMSkpCi0gICAgICAgICBnb3RvIGVycjsKLSAKLSsgICAgLyogc3RlcCAzIG4g PSBcbGNlaWwgYml0cyAvIHFiaXRzIFxyY2VpbCAtIDEgKi8KLSsgICAgbiA9IChiaXRzICsgcWJp dHMgLSAxKSAvIHFiaXRzIC0gMTsKLSsgICAgLyogc3RlcCA0IGIgPSBiaXRzIC0gMSAtIG4gKiBx Yml0cyAqLwotKyAgICBiID0gYml0cyAtIDEgLSBuICogcWJpdHM7Ci0rICAgIAotICAgICBmb3Ig KDs7KSB7Ci0gICAgICAgICBmb3IgKDs7KSB7ICAgICAgICAgICAgICAvKiBmaW5kIHEgKi8KLSAg ICAgICAgICAgICBpbnQgc2VlZF9pc19yYW5kb207Ci0gCi0tICAgICAgICAgICAgLyogc3RlcCAx ICovCi0rICAgICAgICAgICAgLyogc3RlcCA1IGdlbmVyYXRlIHNlZWQgKi8KLSAgICAgICAgICAg ICBpZiAoIUJOX0dFTkNCX2NhbGwoY2IsIDAsIG0rKykpCi0gICAgICAgICAgICAgICAgIGdvdG8g ZXJyOwotIAotQEAgLTIxMiwyOSArMjkxLDE4IEBAIGludCBkc2FfYnVpbHRpbl9wYXJhbWdlbihE U0EgKnJldCwgc2l6ZV8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGJlIGJh ZCAqLwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzZWVkLCBxc2l6 ZSk7Ci0tICAgICAgICAgICAgbWVtY3B5KGJ1ZjIsIHNlZWQsIHFzaXplKTsKLS0gICAgICAgICAg ICAvKiBwcmVjb21wdXRlICJTRUVEICsgMSIgZm9yIHN0ZXAgNzogKi8KLS0gICAgICAgICAgICBm b3IgKGkgPSBxc2l6ZSAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0tICAgICAgICAgICAgICAgIGJ1Zltp XSsrOwotLSAgICAgICAgICAgICAgICBpZiAoYnVmW2ldICE9IDApCi0tICAgICAgICAgICAgICAg ICAgICBicmVhazsKLS0gICAgICAgICAgICB9Ci0gCi0tICAgICAgICAgICAgLyogc3RlcCAyICov Ci0rICAgICAgICAgICAgLyogc3RlcCA2IFUgPSBoYXNoKHNlZWQpICovCi0gICAgICAgICAgICAg aWYgKCFFVlBfRGlnZXN0KHNlZWQsIHFzaXplLCBtZCwgTlVMTCwgZXZwbWQsIE5VTEwpKQotICAg ICAgICAgICAgICAgICBnb3RvIGVycjsKLS0gICAgICAgICAgICBpZiAoIUVWUF9EaWdlc3QoYnVm LCBxc2l6ZSwgYnVmMiwgTlVMTCwgZXZwbWQsIE5VTEwpKQotLSAgICAgICAgICAgICAgICBnb3Rv IGVycjsKLS0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcXNpemU7IGkrKykKLS0gICAgICAg ICAgICAgICAgbWRbaV0gXj0gYnVmMltpXTsKLSAKLS0gICAgICAgICAgICAvKiBzdGVwIDMgKi8K LSsgICAgICAgICAgICAvKiBzdGVwIDcgcSA9IDJeKHFiaXRzLTEpICsgVSArIDEgLSAoVSBtb2Qg MikgKi8KLSAgICAgICAgICAgICBtZFswXSB8PSAweDgwOwotICAgICAgICAgICAgIG1kW3FzaXpl IC0gMV0gfD0gMHgwMTsKLSAgICAgICAgICAgICBpZiAoIUJOX2JpbjJibihtZCwgcXNpemUsIHEp KQotICAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSAKLS0gICAgICAgICAgICAvKiBzdGVwIDQg Ki8KLSsgICAgICAgICAgICAvKiBzdGVwIDggdGVzdCBmb3IgcHJpbWUgKDY0IHJvdW5kIG9mIFJh YmluLU1pbGxlcikgKi8KLSAgICAgICAgICAgICByID0gQk5faXNfcHJpbWVfZmFzdHRlc3RfZXgo cSwgRFNTX3ByaW1lX2NoZWNrcywgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWVkX2lzX3JhbmRvbSwgY2IpOwotICAgICAgICAgICAgIGlmIChyID4gMCkK LUBAIC0yNDIsOCArMzEwLDYgQEAgaW50IGRzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBz aXplXwotICAgICAgICAgICAgIGlmIChyICE9IDApCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJy OwotIAotLSAgICAgICAgICAgIC8qIGRvIGEgY2FsbGJhY2sgY2FsbCAqLwotLSAgICAgICAgICAg IC8qIHN0ZXAgNSAqLwotICAgICAgICAgfQotIAotICAgICAgICAgaWYgKCFCTl9HRU5DQl9jYWxs KGNiLCAyLCAwKSkKLUBAIC0yNTEsMTkgKzMxNywxNiBAQCBpbnQgZHNhX2J1aWx0aW5fcGFyYW1n ZW4oRFNBICpyZXQsIHNpemVfCi0gICAgICAgICBpZiAoIUJOX0dFTkNCX2NhbGwoY2IsIDMsIDAp KQotICAgICAgICAgICAgIGdvdG8gZXJyOwotIAotLSAgICAgICAgLyogc3RlcCA2ICovCi0rICAg ICAgICAvKiBzdGVwIDExICovCi0gICAgICAgICBjb3VudGVyID0gMDsKLS0gICAgICAgIC8qICJv ZmZzZXQgPSAyIiAqLwotLQotLSAgICAgICAgbiA9IChiaXRzIC0gMSkgLyAxNjA7Ci0rICAgICAg ICAvKiAib2Zmc2V0ID0gMSIgKi8KLSAKLSAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAg ICBpZiAoKGNvdW50ZXIgIT0gMCkgJiYgIUJOX0dFTkNCX2NhbGwoY2IsIDAsIGNvdW50ZXIpKQot ICAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSAKLS0gICAgICAgICAgICAvKiBzdGVwIDcgKi8K LSsgICAgICAgICAgICAvKiBzdGVwIDExLjEsIDExLjIgb2J0YWluIFcgKi8KLSAgICAgICAgICAg ICBCTl96ZXJvKFcpOwotLSAgICAgICAgICAgIC8qIG5vdyAnYnVmJyBjb250YWlucyAiU0VFRCAr IG9mZnNldCAtIDEiICovCi0gICAgICAgICAgICAgZm9yIChrID0gMDsgayA8PSBuOyBrKyspIHsK LSAgICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgICogb2J0YWluICJTRUVEICsg b2Zmc2V0ICsgayIgYnkgaW5jcmVtZW50aW5nOgotQEAgLTI3NywzNiArMzQwLDM3IEBAIGludCBk c2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV8KLSAgICAgICAgICAgICAgICAgaWYg KCFFVlBfRGlnZXN0KGJ1ZiwgcXNpemUsIG1kLCBOVUxMLCBldnBtZCwgTlVMTCkpCi0gICAgICAg ICAgICAgICAgICAgICBnb3RvIGVycjsKLSAKLS0gICAgICAgICAgICAgICAgLyogc3RlcCA4ICov Ci0gICAgICAgICAgICAgICAgIGlmICghQk5fYmluMmJuKG1kLCBxc2l6ZSwgcjApKQotICAgICAg ICAgICAgICAgICAgICAgZ290byBlcnI7Ci0tICAgICAgICAgICAgICAgIGlmICghQk5fbHNoaWZ0 KHIwLCByMCwgKHFzaXplIDw8IDMpICogaykpCi0rICAgICAgICAgICAgICAgIGlmIChrID09IG4p Ci0rICAgICAgICAgICAgICAgICAgICBCTl9tYXNrX2JpdHMocjAsIGIpOwotKyAgICAgICAgICAg ICAgICBpZiAoIUJOX2xzaGlmdChyMCwgcjAsIHFiaXRzICogaykpCi0gICAgICAgICAgICAgICAg ICAgICBnb3RvIGVycjsKLSAgICAgICAgICAgICAgICAgaWYgKCFCTl9hZGQoVywgVywgcjApKQot ICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgICAgICAgfQotIAotLSAgICAg ICAgICAgIC8qIG1vcmUgb2Ygc3RlcCA4ICovCi0tICAgICAgICAgICAgaWYgKCFCTl9tYXNrX2Jp dHMoVywgYml0cyAtIDEpKQotLSAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgICAg ICAvKiBzdGVwIDExLjMgWCA9IFcgKyAyXihMLTEpICovCi0gICAgICAgICAgICAgaWYgKCFCTl9j b3B5KFgsIFcpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgICAgICBpZiAo IUJOX2FkZChYLCBYLCB0ZXN0KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0gCi0tICAg ICAgICAgICAgLyogc3RlcCA5ICovCi0rICAgICAgICAgICAgLyogc3RlcCAxMS40IGMgPSBYIG1v ZCAyKnEgKi8KLSAgICAgICAgICAgICBpZiAoIUJOX2xzaGlmdDEocjAsIHEpKQotICAgICAgICAg ICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgICAgICBpZiAoIUJOX21vZChjLCBYLCByMCwgY3R4 KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgICAgICAgICAgLyogc3RlcCAx MS41IHAgPSBYIC0gKGMgLSAxKSAqLwotICAgICAgICAgICAgIGlmICghQk5fc3ViKHIwLCBjLCBC Tl92YWx1ZV9vbmUoKSkpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICAgICAg IGlmICghQk5fc3ViKHAsIFgsIHIwKSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0gCi0t ICAgICAgICAgICAgLyogc3RlcCAxMCAqLwotKyAgICAgICAgICAgIC8qIHN0ZXAgMTEuNiAqLwot ICAgICAgICAgICAgIGlmIChCTl9jbXAocCwgdGVzdCkgPj0gMCkgewotLSAgICAgICAgICAgICAg ICAvKiBzdGVwIDExICovCi0rICAgICAgICAgICAgICAgIC8qIHN0ZXAgMTEuNyAqLwotICAgICAg ICAgICAgICAgICByID0gQk5faXNfcHJpbWVfZmFzdHRlc3RfZXgocCwgRFNTX3ByaW1lX2NoZWNr cywgY3R4LCAxLCBjYik7Ci0gICAgICAgICAgICAgICAgIGlmIChyID4gMCkKLSAgICAgICAgICAg ICAgICAgICAgIGdvdG8gZW5kOyAgIC8qIGZvdW5kIGl0ICovCi1AQCAtMzE0LDEyICszNzgsMTIg QEAgaW50IGRzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplXwotICAgICAgICAgICAg ICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgIC8qIHN0 ZXAgMTMgKi8KLSsgICAgICAgICAgICAvKiBzdGVwIDExLjkgKi8KLSAgICAgICAgICAgICBjb3Vu dGVyKys7Ci0gICAgICAgICAgICAgLyogIm9mZnNldCA9IG9mZnNldCArIG4gKyAxIiAqLwotIAot LSAgICAgICAgICAgIC8qIHN0ZXAgMTQgKi8KLS0gICAgICAgICAgICBpZiAoY291bnRlciA+PSA0 MDk2KQotKyAgICAgICAgICAgIC8qIHN0ZXAgMTIgKi8KLSsgICAgICAgICAgICBpZiAoY291bnRl ciA+PSA0ICogYml0cykKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAg IH0KLUBAIC0zMjcsNyArMzkxLDMzIEBAIGludCBkc2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJl dCwgc2l6ZV8KLSAgICAgaWYgKCFCTl9HRU5DQl9jYWxsKGNiLCAyLCAxKSkKLSAgICAgICAgIGdv dG8gZXJyOwotIAotLSAgICAvKiBXZSBub3cgbmVlZCB0byBnZW5lcmF0ZSBnICovCi0rICAgIG9r ID0gMTsKLSsgZXJyOgotKyAgICBpZiAob2spIHsKLSsgICAgICAgIGlmIChjb3VudGVyX3JldCAh PSBOVUxMKQotKyAgICAgICAgICAgICpjb3VudGVyX3JldCA9IGNvdW50ZXI7Ci0rICAgIH0KLSsg ICAgcmV0dXJuIG9rOwotK30KLSsKLSsjIGlmbmRlZiBPUEVOU1NMX0ZJUFMKLStzdGF0aWMKLSsj IGVuZGlmCi0raW50IEZJUFNfZHNhX2dlbmVyYXRlX2coQk5fQ1RYICpjdHgsIEJJR05VTSAqcCwg QklHTlVNICpxLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEJJR05VTSAqKmdfcmV0LCB1bnNp Z25lZCBsb25nICpoX3JldCwgQk5fR0VOQ0IgKmNiKQotK3sKLSsgICAgaW50IG9rID0gMDsKLSsg ICAgQklHTlVNICpyMCwgKnRlc3QsICpnID0gTlVMTDsKLSsgICAgQk5fTU9OVF9DVFggKm1vbnQ7 Ci0rICAgIHVuc2lnbmVkIGludCBoID0gMjsKLSsKLSsgICAgaWYgKChtb250ID0gQk5fTU9OVF9D VFhfbmV3KCkpID09IE5VTEwpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgcjAgPSBCTl9D VFhfZ2V0KGN0eCk7Ci0rICAgICpnX3JldCA9IGcgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0rICAgIHRl c3QgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0rCi0gICAgIC8qIFNldCByMD0ocC0xKS9xICovCi0gICAg IGlmICghQk5fc3ViKHRlc3QsIHAsIEJOX3ZhbHVlX29uZSgpKSkKLSAgICAgICAgIGdvdG8gZXJy OwotQEAgLTM1Niw0NiArNDQ2LDE0IEBAIGludCBkc2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJl dCwgc2l6ZV8KLSAgICAgb2sgPSAxOwotICBlcnI6Ci0gICAgIGlmIChvaykgewotLSAgICAgICAg aWYgKHJldC0+cCkKLS0gICAgICAgICAgICBCTl9mcmVlKHJldC0+cCk7Ci0tICAgICAgICBpZiAo cmV0LT5xKQotLSAgICAgICAgICAgIEJOX2ZyZWUocmV0LT5xKTsKLS0gICAgICAgIGlmIChyZXQt PmcpCi0tICAgICAgICAgICAgQk5fZnJlZShyZXQtPmcpOwotLSAgICAgICAgcmV0LT5wID0gQk5f ZHVwKHApOwotLSAgICAgICAgcmV0LT5xID0gQk5fZHVwKHEpOwotLSAgICAgICAgcmV0LT5nID0g Qk5fZHVwKGcpOwotLSAgICAgICAgaWYgKHJldC0+cCA9PSBOVUxMIHx8IHJldC0+cSA9PSBOVUxM IHx8IHJldC0+ZyA9PSBOVUxMKSB7Ci0tICAgICAgICAgICAgb2sgPSAwOwotLSAgICAgICAgICAg IGdvdG8gZXJyOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKGNvdW50ZXJfcmV0ICE9IE5VTEwp Ci0tICAgICAgICAgICAgKmNvdW50ZXJfcmV0ID0gY291bnRlcjsKLSAgICAgICAgIGlmIChoX3Jl dCAhPSBOVUxMKQotICAgICAgICAgICAgICpoX3JldCA9IGg7Ci0tICAgICAgICBpZiAoc2VlZF9v dXQpCi0tICAgICAgICAgICAgbWVtY3B5KHNlZWRfb3V0LCBzZWVkLCBxc2l6ZSk7Ci0tICAgIH0K LS0gICAgaWYgKGN0eCkgewotLSAgICAgICAgQk5fQ1RYX2VuZChjdHgpOwotLSAgICAgICAgQk5f Q1RYX2ZyZWUoY3R4KTsKLSAgICAgfQotICAgICBpZiAobW9udCAhPSBOVUxMKQotICAgICAgICAg Qk5fTU9OVF9DVFhfZnJlZShtb250KTsKLSAgICAgcmV0dXJuIG9rOwotIH0KLSAKLS0jIGlmZGVm IE9QRU5TU0xfRklQUwotLSMgIHVuZGVmIGZpcHNfZHNhX2J1aWx0aW5fcGFyYW1nZW4yCi0tZXh0 ZXJuIGludCBmaXBzX2RzYV9idWlsdGluX3BhcmFtZ2VuMihEU0EgKnJldCwgc2l6ZV90IEwsIHNp emVfdCBOLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRVZQ X01EICpldnBtZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKnNlZWRfaW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplX3Qgc2VlZF9sZW4sIGludCBpZHgsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzZWVkX291dCwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY291bnRlcl9yZXQsIHVuc2lnbmVkIGxvbmcg KmhfcmV0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQk5fR0VOQ0Ig KmNiKTsKLS0jIGVuZGlmCi0tCi0gLyoKLSAgKiBUaGlzIGlzIGEgcGFyYW1ldGVyIGdlbmVyYXRp b24gYWxnb3JpdGhtIGZvciB0aGUgRFNBMiBhbGdvcml0aG0gYXMKLSAgKiBkZXNjcmliZWQgaW4g RklQUyAxODYtMy4KLUBAIC00MjEsMTQgKzQ3OSw2IEBAIGludCBkc2FfYnVpbHRpbl9wYXJhbWdl bjIoRFNBICpyZXQsIHNpemUKLSAgICAgRVZQX01EX0NUWCBtY3R4OwotICAgICB1bnNpZ25lZCBp bnQgaCA9IDI7Ci0gCi0tIyBpZmRlZiBPUEVOU1NMX0ZJUFMKLS0KLS0gICAgaWYgKEZJUFNfbW9k ZSgpKQotLSAgICAgICAgcmV0dXJuIGZpcHNfZHNhX2J1aWx0aW5fcGFyYW1nZW4yKHJldCwgTCwg TiwgZXZwbWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vl ZF9pbiwgc2VlZF9sZW4sIGlkeCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWVkX291dCwgY291bnRlcl9yZXQsIGhfcmV0LCBjYik7Ci0tIyBlbmRpZgotLQot ICAgICBFVlBfTURfQ1RYX2luaXQoJm1jdHgpOwotIAotICAgICBpZiAoZXZwbWQgPT0gTlVMTCkg ewotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2EuaC5maXBzIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9kc2EvZHNhLmgKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2Rz YS5oLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4wNTYyNDAwNjYgKzAyMDAKLSsrKyBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZHNhL2RzYS5oCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg2MjQ1NTEyICsw MjAwCi1AQCAtODgsNiArODgsOCBAQAotICMgIGRlZmluZSBPUEVOU1NMX0RTQV9NQVhfTU9EVUxV U19CSVRTICAgMTAwMDAKLSAjIGVuZGlmCi0gCi0rIyBkZWZpbmUgT1BFTlNTTF9EU0FfRklQU19N SU5fTU9EVUxVU19CSVRTIDEwMjQKLSsKLSAjIGRlZmluZSBEU0FfRkxBR19DQUNIRV9NT05UX1Ag ICAweDAxCi0gLyoKLSAgKiBuZXcgd2l0aCAwLjkuN2g7IHRoZSBidWlsdC1pbiBEU0EgaW1wbGVt ZW50YXRpb24gbm93IHVzZXMgY29uc3RhbnQgdGltZQotQEAgLTI2NSw2ICsyNjcsMjAgQEAgaW50 IERTQV9wcmludF9mcChGSUxFICpicCwgY29uc3QgRFNBICp4LAotIERIICpEU0FfZHVwX0RIKGNv bnN0IERTQSAqcik7Ci0gIyBlbmRpZgotIAotKyMgaWZkZWYgT1BFTlNTTF9GSVBTCi0raW50IEZJ UFNfZHNhX2J1aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVfdCBiaXRzLCBzaXplX3QgcWJp dHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRVZQX01EICpldnBtZCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzZWVk X2luLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzZWVkX2xlbiwgaW50 ICpjb3VudGVyX3JldCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nICpoX3JldCwgQk5fR0VOQ0IgKmNiKTsKLStpbnQgRklQU19kc2FfZ2VuZXJhdGVfcHEoQk5f Q1RYICpjdHgsIHNpemVfdCBiaXRzLCBzaXplX3QgcWJpdHMsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IEVWUF9NRCAqZXZwbWQsIHVuc2lnbmVkIGNoYXIgKnNlZWQsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBzZWVkX2xlbiwgQklHTlVNICoqcF9yZXQsIEJJR05VTSAq KnFfcmV0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNvdW50ZXJfcmV0LCBCTl9H RU5DQiAqY2IpOwotK2ludCBGSVBTX2RzYV9nZW5lcmF0ZV9nKEJOX0NUWCAqY3R4LCBCSUdOVU0g KnAsIEJJR05VTSAqcSwgQklHTlVNICoqZ19yZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgKmhfcmV0LCBCTl9HRU5DQiAqY2IpOwotKyMgZW5kaWYKLSsKLSAj IGRlZmluZSBFVlBfUEtFWV9DVFhfc2V0X2RzYV9wYXJhbWdlbl9iaXRzKGN0eCwgbmJpdHMpIFwK LSAgICAgICAgIEVWUF9QS0VZX0NUWF9jdHJsKGN0eCwgRVZQX1BLRVlfRFNBLCBFVlBfUEtFWV9P UF9QQVJBTUdFTiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX1BLRVlf Q1RSTF9EU0FfUEFSQU1HRU5fQklUUywgbmJpdHMsIE5VTEwpCi1AQCAtMjg3LDExICszMDMsMTQg QEAgdm9pZCBFUlJfbG9hZF9EU0Ffc3RyaW5ncyh2b2lkKTsKLSAjIGRlZmluZSBEU0FfRl9ET19E U0FfUFJJTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0Ci0gIyBkZWZpbmUgRFNB X0ZfRFNBUEFSQU1TX1BSSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMAotICMgZGVm aW5lIERTQV9GX0RTQVBBUkFNU19QUklOVF9GUCAgICAgICAgICAgICAgICAgICAgICAgICAxMDEK LS0jIGRlZmluZSBEU0FfRl9EU0FfQlVJTFRJTl9QQVJBTUdFTjIgICAgICAgICAgICAgICAgICAg ICAgMTI2Ci0rIyBkZWZpbmUgRFNBX0ZfRFNBX0JVSUxUSU5fS0VZR0VOICAgICAgICAgICAgICAg ICAgICAgICAgIDEyNAotKyMgZGVmaW5lIERTQV9GX0RTQV9CVUlMVElOX1BBUkFNR0VOICAgICAg ICAgICAgICAgICAgICAgICAxMjMKLSsjIGRlZmluZSBEU0FfRl9EU0FfQlVJTFRJTl9QQVJBTUdF TjIgICAgICAgICAgICAgICAgICAgICAgMjI2Ci0gIyBkZWZpbmUgRFNBX0ZfRFNBX0RPX1NJR04g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMgotICMgZGVmaW5lIERTQV9GX0RTQV9E T19WRVJJRlkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTMKLS0jIGRlZmluZSBEU0Ff Rl9EU0FfR0VORVJBVEVfS0VZICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI0Ci0tIyBkZWZp bmUgRFNBX0ZfRFNBX0dFTkVSQVRFX1BBUkFNRVRFUlNfRVggICAgICAgICAgICAgICAgIDEyMwot KyMgZGVmaW5lIERTQV9GX0RTQV9HRU5FUkFURV9LRVkgICAgICAgICAgICAgICAgICAgICAgICAg ICAxMjYKLSsjIGRlZmluZSBEU0FfRl9EU0FfR0VORVJBVEVfUEFSQU1FVEVSU19FWCAgICAgICAg ICAgICAgICAgMTI3Ci0rIyBkZWZpbmUgRFNBX0ZfRFNBX0dFTkVSQVRFX1BBUkFNRVRFUlMgICAv KiB1bnVzZWQgKi8gICAgIDEyNQotICMgZGVmaW5lIERTQV9GX0RTQV9ORVdfTUVUSE9EICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAxMDMKLSAjIGRlZmluZSBEU0FfRl9EU0FfUEFSQU1fREVD T0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE5Ci0gIyBkZWZpbmUgRFNBX0ZfRFNBX1BS SU5UX0ZQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNQotQEAgLTMxNywxMiArMzM2 LDE2IEBAIHZvaWQgRVJSX2xvYWRfRFNBX3N0cmluZ3Modm9pZCk7Ci0gIyBkZWZpbmUgRFNBX1Jf REFUQV9UT09fTEFSR0VfRk9SX0tFWV9TSVpFICAgICAgICAgICAgICAgIDEwMAotICMgZGVmaW5l IERTQV9SX0RFQ09ERV9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQKLSAj IGRlZmluZSBEU0FfUl9JTlZBTElEX0RJR0VTVF9UWVBFICAgICAgICAgICAgICAgICAgICAgICAg MTA2Ci0tIyBkZWZpbmUgRFNBX1JfSU5WQUxJRF9QQVJBTUVURVJTICAgICAgICAgICAgICAgICAg ICAgICAgIDExMgotKyMgZGVmaW5lIERTQV9SX0lOVkFMSURfUEFSQU1FVEVSUyAgICAgICAgICAg ICAgICAgICAgICAgICAyMTIKLSsjIGRlZmluZSBEU0FfUl9LRVlfU0laRV9JTlZBTElEICAgICAg ICAgICAgICAgICAgICAgICAgICAgMTEzCi0rIyBkZWZpbmUgRFNBX1JfS0VZX1NJWkVfVE9PX1NN QUxMICAgICAgICAgICAgICAgICAgICAgICAgIDExMAotICMgZGVmaW5lIERTQV9SX01JU1NJTkdf UEFSQU1FVEVSUyAgICAgICAgICAgICAgICAgICAgICAgICAxMDEKLSAjIGRlZmluZSBEU0FfUl9N T0RVTFVTX1RPT19MQVJHRSAgICAgICAgICAgICAgICAgICAgICAgICAgMTAzCi0tIyBkZWZpbmUg RFNBX1JfTkVFRF9ORVdfU0VUVVBfVkFMVUVTICAgICAgICAgICAgICAgICAgICAgIDExMAotKyMg ZGVmaW5lIERTQV9SX05FRURfTkVXX1NFVFVQX1ZBTFVFUyAgICAgICAgICAgICAgICAgICAgICAx MTIKLSAjIGRlZmluZSBEU0FfUl9OT05fRklQU19EU0FfTUVUSE9EICAgICAgICAgICAgICAgICAg ICAgICAgMTExCi0rIyBkZWZpbmUgRFNBX1JfTk9OX0ZJUFNfTUVUSE9EICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDExMQotICMgZGVmaW5lIERTQV9SX05PX1BBUkFNRVRFUlNfU0VUICAgICAg ICAgICAgICAgICAgICAgICAgICAxMDcKLSsjIGRlZmluZSBEU0FfUl9PUEVSQVRJT05fTk9UX0FM TE9XRURfSU5fRklQU19NT0RFIC8qIHVudXNlZCAqLyAxMTIKLSAjIGRlZmluZSBEU0FfUl9QQVJB TUVURVJfRU5DT0RJTkdfRVJST1IgICAgICAgICAgICAgICAgICAgMTA1Ci0gIyBkZWZpbmUgRFNB X1JfUV9OT1RfUFJJTUUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMwotIAotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2Ffa2V5LmMuZmlwcyBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZHNhL2RzYV9rZXkuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2Ev ZHNhX2tleS5jLmZpcHMJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9rZXkuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4 NjI0NTUxMiArMDIwMAotQEAgLTY2LDYgKzY2LDM0IEBACi0gCi0gIyBpZmRlZiBPUEVOU1NMX0ZJ UFMKLSAjICBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjICBpbmNsdWRlIDxvcGVuc3NsL2V2 cC5oPgotKwotK3N0YXRpYyBpbnQgZmlwc19jaGVja19kc2EoRFNBICpkc2EpCi0rewotKyAgICBF VlBfUEtFWSAqcGs7Ci0rICAgIHVuc2lnbmVkIGNoYXIgdGJzW10gPSAiRFNBIFBhaXJ3aXNlIENo ZWNrIERhdGEiOwotKyAgICBpbnQgcmV0ID0gMDsKLSsKLSsgICAgaWYgKChwayA9IEVWUF9QS0VZ X25ldygpKSA9PSBOVUxMKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIEVWUF9QS0VZX3Nl dDFfRFNBKHBrLCBkc2EpOwotKwotKyAgICBpZiAoZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBr LCB0YnMsIC0xLCBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMKSkKLSsgICAgICAgIHJldCA9IDE7Ci0r Ci0rIGVycjoKLSsgICAgaWYgKHJldCA9PSAwKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9G SVBTX0NIRUNLX0RTQSwgRklQU19SX1BBSVJXSVNFX1RFU1RfRkFJTEVEKTsKLSsgICAgICAgIGZp cHNfc2V0X3NlbGZ0ZXN0X2ZhaWwoKTsKLSsgICAgfQotKwotKyAgICBpZiAocGspCi0rICAgICAg ICBFVlBfUEtFWV9mcmVlKHBrKTsKLSsKLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0gIyBlbmRp ZgotIAotIHN0YXRpYyBpbnQgZHNhX2J1aWx0aW5fa2V5Z2VuKERTQSAqZHNhKTsKLUBAIC04MSwx MCArMTA5LDYgQEAgaW50IERTQV9nZW5lcmF0ZV9rZXkoRFNBICpkc2EpCi0gIyBlbmRpZgotICAg ICBpZiAoZHNhLT5tZXRoLT5kc2Ffa2V5Z2VuKQotICAgICAgICAgcmV0dXJuIGRzYS0+bWV0aC0+ ZHNhX2tleWdlbihkc2EpOwotLSMgaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21v ZGUoKSkKLS0gICAgICAgIHJldHVybiBGSVBTX2RzYV9nZW5lcmF0ZV9rZXkoZHNhKTsKLS0jIGVu ZGlmCi0gICAgIHJldHVybiBkc2FfYnVpbHRpbl9rZXlnZW4oZHNhKTsKLSB9Ci0gCi1AQCAtOTQs NiArMTE4LDE0IEBAIHN0YXRpYyBpbnQgZHNhX2J1aWx0aW5fa2V5Z2VuKERTQSAqZHNhKQotICAg ICBCTl9DVFggKmN0eCA9IE5VTEw7Ci0gICAgIEJJR05VTSAqcHViX2tleSA9IE5VTEwsICpwcml2 X2tleSA9IE5VTEw7Ci0gCi0rIyBpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgaWYgKEZJUFNfbW9k ZSgpICYmICEoZHNhLT5mbGFncyAmIERTQV9GTEFHX05PTl9GSVBTX0FMTE9XKQotKyAgICAgICAg JiYgKEJOX251bV9iaXRzKGRzYS0+cCkgPCBPUEVOU1NMX0RTQV9GSVBTX01JTl9NT0RVTFVTX0JJ VFMpKSB7Ci0rICAgICAgICBEU0FlcnIoRFNBX0ZfRFNBX0JVSUxUSU5fS0VZR0VOLCBEU0FfUl9L RVlfU0laRV9UT09fU01BTEwpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsjIGVuZGlm Ci0rCi0gICAgIGlmICgoY3R4ID0gQk5fQ1RYX25ldygpKSA9PSBOVUxMKQotICAgICAgICAgZ290 byBlcnI7Ci0gCi1AQCAtMTMxLDYgKzE2MywxMyBAQCBzdGF0aWMgaW50IGRzYV9idWlsdGluX2tl eWdlbihEU0EgKmRzYSkKLSAKLSAgICAgZHNhLT5wcml2X2tleSA9IHByaXZfa2V5OwotICAgICBk c2EtPnB1Yl9rZXkgPSBwdWJfa2V5OwotKyMgaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIGlmIChG SVBTX21vZGUoKSAmJiAhZmlwc19jaGVja19kc2EoZHNhKSkgewotKyAgICAgICAgZHNhLT5wdWJf a2V5ID0gTlVMTDsKLSsgICAgICAgIGRzYS0+cHJpdl9rZXkgPSBOVUxMOwotKyAgICAgICAgZ290 byBlcnI7Ci0rICAgIH0KLSsjIGVuZGlmCi0gICAgIG9rID0gMTsKLSAKLSAgZXJyOgotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2FfbGliLmMuZmlwcyBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZHNhL2RzYV9saWIuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNh X2xpYi5jLmZpcHMJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9saWIuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4NzI0 NTUzNiArMDIwMAotQEAgLTg2LDE0ICs4Niw3IEBAIHZvaWQgRFNBX3NldF9kZWZhdWx0X21ldGhv ZChjb25zdCBEU0FfTUUKLSBjb25zdCBEU0FfTUVUSE9EICpEU0FfZ2V0X2RlZmF1bHRfbWV0aG9k KHZvaWQpCi0gewotICAgICBpZiAoIWRlZmF1bHRfRFNBX21ldGhvZCkgewotLSNpZmRlZiBPUEVO U1NMX0ZJUFMKLS0gICAgICAgIGlmIChGSVBTX21vZGUoKSkKLS0gICAgICAgICAgICByZXR1cm4g RklQU19kc2Ffb3BlbnNzbCgpOwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICAgIHJldHVybiBE U0FfT3BlblNTTCgpOwotLSNlbHNlCi0gICAgICAgICBkZWZhdWx0X0RTQV9tZXRob2QgPSBEU0Ff T3BlblNTTCgpOwotLSNlbmRpZgotICAgICB9Ci0gICAgIHJldHVybiBkZWZhdWx0X0RTQV9tZXRo b2Q7Ci0gfQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2FfbG9jbC5oLmZp cHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2FfbG9jbC5oCi0tLS0gb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2RzYS9kc2FfbG9jbC5oLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4wNTgyNDAx MTQgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9sb2NsLmgJMjAxNS0w NC0yMiAxNjowODo0MC4yODcyNDU1MzYgKzAyMDAKLUBAIC01Niw3ICs1Niw3IEBACi0gCi0gaW50 IGRzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplX3QgYml0cywgc2l6ZV90IHFiaXRz LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFVlBfTUQgKmV2cG1kLCBjb25zdCB1 bnNpZ25lZCBjaGFyICpzZWVkX2luLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg c2VlZF9sZW4sIHVuc2lnbmVkIGNoYXIgKnNlZWRfb3V0LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplX3Qgc2VlZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY291 bnRlcl9yZXQsIHVuc2lnbmVkIGxvbmcgKmhfcmV0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICBCTl9HRU5DQiAqY2IpOwotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9k c2Ffb3NzbC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jCi0tLS0g b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jLmZpcHMJMjAxNS0wMy0xOSAxNDoz MDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9v c3NsLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yODcyNDU1MzYgKzAyMDAKLUBAIC02NSw2ICs2NSw5 IEBACi0gI2luY2x1ZGUgPG9wZW5zc2wvZHNhLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5o PgotICNpbmNsdWRlIDxvcGVuc3NsL2FzbjEuaD4KLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rIyBp bmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSAKLSBzdGF0aWMgRFNBX1NJRyAqZHNh X2RvX3NpZ24oY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRsZW4sIERTQSAqZHNhKTsK LSBzdGF0aWMgaW50IGRzYV9zaWduX3NldHVwKERTQSAqZHNhLCBCTl9DVFggKmN0eF9pbiwgQklH TlVNICoqa2ludnAsCi1AQCAtODMsNyArODYsNyBAQCBzdGF0aWMgRFNBX01FVEhPRCBvcGVuc3Ns X2RzYV9tZXRoID0gewotICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogZHNhX2Ju X21vZF9leHAsICovCi0gICAgIGRzYV9pbml0LAotICAgICBkc2FfZmluaXNoLAotLSAgICAwLAot KyAgICBEU0FfRkxBR19GSVBTX01FVEhPRCwKLSAgICAgTlVMTCwKLSAgICAgTlVMTCwKLSAgICAg TlVMTAotQEAgLTE0MCw2ICsxNDMsMTkgQEAgc3RhdGljIERTQV9TSUcgKmRzYV9kb19zaWduKGNv bnN0IHVuc2lnbgotICAgICBEU0FfU0lHICpyZXQgPSBOVUxMOwotICAgICBpbnQgbm9yZWRvID0g MDsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxl ZCgpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9EU0FfRE9fU0lHTiwgRklQU19SX0ZJUFNf U0VMRlRFU1RfRkFJTEVEKTsKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICAg IGlmIChGSVBTX21vZGUoKSAmJiAhKGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05fRklQU19BTExP VykKLSsgICAgICAgICYmIChCTl9udW1fYml0cyhkc2EtPnApIDwgT1BFTlNTTF9EU0FfRklQU19N SU5fTU9EVUxVU19CSVRTKSkgewotKyAgICAgICAgRFNBZXJyKERTQV9GX0RTQV9ET19TSUdOLCBE U0FfUl9LRVlfU0laRV9UT09fU01BTEwpOwotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0K LSsjZW5kaWYKLSsKLSAgICAgQk5faW5pdCgmbSk7Ci0gICAgIEJOX2luaXQoJnhyKTsKLSAKLUBA IC0zMzAsNiArMzQ2LDE4IEBAIHN0YXRpYyBpbnQgZHNhX2RvX3ZlcmlmeShjb25zdCB1bnNpZ25l ZAotICAgICAgICAgRFNBZXJyKERTQV9GX0RTQV9ET19WRVJJRlksIERTQV9SX0JBRF9RX1ZBTFVF KTsKLSAgICAgICAgIHJldHVybiAtMTsKLSAgICAgfQotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsg ICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19G X0RTQV9ET19WRVJJRlksIEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7Ci0rICAgICAgICBy ZXR1cm4gLTE7Ci0rICAgIH0KLSsKLSsgICAgaWYgKEZJUFNfbW9kZSgpICYmICEoZHNhLT5mbGFn cyAmIERTQV9GTEFHX05PTl9GSVBTX0FMTE9XKQotKyAgICAgICAgJiYgKEJOX251bV9iaXRzKGRz YS0+cCkgPCBPUEVOU1NMX0RTQV9GSVBTX01JTl9NT0RVTFVTX0JJVFMpKSB7Ci0rICAgICAgICBE U0FlcnIoRFNBX0ZfRFNBX0RPX1ZFUklGWSwgRFNBX1JfS0VZX1NJWkVfVE9PX1NNQUxMKTsKLSsg ICAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKyNlbmRpZgotIAotICAgICBpZiAoQk5fbnVtX2Jp dHMoZHNhLT5wKSA+IE9QRU5TU0xfRFNBX01BWF9NT0RVTFVTX0JJVFMpIHsKLSAgICAgICAgIERT QWVycihEU0FfRl9EU0FfRE9fVkVSSUZZLCBEU0FfUl9NT0RVTFVTX1RPT19MQVJHRSk7Ci1AQCAt NDEwLDYgKzQzOCw5IEBAIHN0YXRpYyBpbnQgZHNhX2RvX3ZlcmlmeShjb25zdCB1bnNpZ25lZAot IAotIHN0YXRpYyBpbnQgZHNhX2luaXQoRFNBICpkc2EpCi0gewotKyNpZmRlZiBPUEVOU1NMX0ZJ UFMKLSsgICAgRklQU19zZWxmdGVzdF9jaGVjaygpOwotKyNlbmRpZgotICAgICBkc2EtPmZsYWdz IHw9IERTQV9GTEFHX0NBQ0hFX01PTlRfUDsKLSAgICAgcmV0dXJuICgxKTsKLSB9Ci1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYV9wbWV0aC5jLmZpcHMgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2RzYS9kc2FfcG1ldGguYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2Ev ZHNhX3BtZXRoLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAotKysr IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9kc2EvZHNhX3BtZXRoLmMJMjAxNS0wNC0yMiAxNjowODo0 MC4yODcyNDU1MzYgKzAyMDAKLUBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIGludCBwa2V5X2Rz YV9wYXJhbWdlbihFVlBfUEtFWV9DVAotICAgICBpZiAoIWRzYSkKLSAgICAgICAgIHJldHVybiAw OwotICAgICByZXQgPSBkc2FfYnVpbHRpbl9wYXJhbWdlbihkc2EsIGRjdHgtPm5iaXRzLCBkY3R4 LT5xYml0cywgZGN0eC0+cG1kLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM LCAwLCBOVUxMLCBOVUxMLCBOVUxMLCBwY2IpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLCAwLCBOVUxMLCBOVUxMLCBwY2IpOwotICAgICBpZiAocmV0KQotICAgICAgICAg RVZQX1BLRVlfYXNzaWduX0RTQShwa2V5LCBkc2EpOwotICAgICBlbHNlCi1kaWZmIC11cCBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZHNhL2RzYXRlc3QuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9kc2EvZHNhdGVzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2RzYS9kc2F0ZXN0LmMu ZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9kc2EvZHNhdGVzdC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg3MjQ1NTM2ICsw MjAwCi1AQCAtMTAwLDM2ICsxMDAsNDEgQEAgc3RhdGljIGludCBNU19DQUxMQkFDSyBkc2FfY2Io aW50IHAsIGludAotICAqIFBVQiAxODYgYW5kIGFsc28gYXBwZWFyIGluIEFwcGVuZGl4IDUgdG8g RklQUyBQSUIgMTg2LTEKLSAgKi8KLSBzdGF0aWMgdW5zaWduZWQgY2hhciBzZWVkWzIwXSA9IHsK LS0gICAgMHhkNSwgMHgwMSwgMHg0ZSwgMHg0YiwgMHg2MCwgMHhlZiwgMHgyYiwgMHhhOCwgMHhi NiwgMHgyMSwgMHgxYiwgMHg0MCwKLS0gICAgMHg2MiwgMHhiYSwgMHgzMiwgMHgyNCwgMHhlMCwg MHg0MiwgMHg3ZCwgMHhkMywKLSsgICAgMHgwMiwgMHg0NywgMHgxMSwgMHg5MiwgMHgxMSwgMHg4 OCwgMHhDOCwgMHhGQiwgMHhBRiwgMHg0OCwgMHg0QywgMHg2MiwKLSsgICAgMHhERiwgMHhBNSwg MHhCRSwgMHhBMCwgMHhBNCwgMHgzQywgMHg1NiwgMHhFMywKLSB9OwotIAotIHN0YXRpYyB1bnNp Z25lZCBjaGFyIG91dF9wW10gPSB7Ci0tICAgIDB4OGQsIDB4ZjIsIDB4YTQsIDB4OTQsIDB4NDks IDB4MjIsIDB4NzYsIDB4YWEsCi0tICAgIDB4M2QsIDB4MjUsIDB4NzUsIDB4OWIsIDB4YjAsIDB4 NjgsIDB4NjksIDB4Y2IsCi0tICAgIDB4ZWEsIDB4YzAsIDB4ZDgsIDB4M2EsIDB4ZmIsIDB4OGQs IDB4MGMsIDB4ZjcsCi0tICAgIDB4Y2IsIDB4YjgsIDB4MzIsIDB4NGYsIDB4MGQsIDB4NzgsIDB4 ODIsIDB4ZTUsCi0tICAgIDB4ZDAsIDB4NzYsIDB4MmYsIDB4YzUsIDB4YjcsIDB4MjEsIDB4MGUs IDB4YWYsCi0tICAgIDB4YzIsIDB4ZTksIDB4YWQsIDB4YWMsIDB4MzIsIDB4YWIsIDB4N2EsIDB4 YWMsCi0tICAgIDB4NDksIDB4NjksIDB4M2QsIDB4ZmIsIDB4ZjgsIDB4MzcsIDB4MjQsIDB4YzIs Ci0tICAgIDB4ZWMsIDB4MDcsIDB4MzYsIDB4ZWUsIDB4MzEsIDB4YzgsIDB4MDIsIDB4OTEsCi0r ICAgIDB4QUMsIDB4Q0IsIDB4MUUsIDB4NjMsIDB4NjAsIDB4NjksIDB4MEMsIDB4RkIsIDB4MDYs IDB4MTksIDB4NjgsIDB4M0UsCi0rICAgIDB4QTUsIDB4MDEsIDB4NUEsIDB4QTIsIDB4MTUsIDB4 NUMsIDB4RTIsIDB4OTksIDB4MkQsIDB4RDUsIDB4MzAsIDB4OTksCi0rICAgIDB4N0UsIDB4NUYs IDB4OEQsIDB4RTIsIDB4RjcsIDB4QzYsIDB4MkUsIDB4OEQsIDB4QTMsIDB4OUYsIDB4NTgsIDB4 QUQsCi0rICAgIDB4RDYsIDB4QTksIDB4N0QsIDB4MEUsIDB4MEQsIDB4OTUsIDB4NTMsIDB4QTYs IDB4NzEsIDB4M0EsIDB4REUsIDB4QUIsCi0rICAgIDB4QUMsIDB4RTksIDB4RjQsIDB4MzYsIDB4 NTUsIDB4OUUsIDB4QjksIDB4RDYsIDB4OTMsIDB4QkYsIDB4RjMsIDB4MTgsCi0rICAgIDB4MUMs IDB4MTQsIDB4N0IsIDB4QTUsIDB4NDIsIDB4MkUsIDB4Q0QsIDB4MDAsIDB4RUIsIDB4MzUsIDB4 M0IsIDB4MUIsCi0rICAgIDB4QTgsIDB4NTEsIDB4QkIsIDB4RTEsIDB4NTgsIDB4NDIsIDB4ODUs IDB4ODQsIDB4MjIsIDB4QTcsIDB4OTcsIDB4NUUsCi0rICAgIDB4OTksIDB4NkYsIDB4MzgsIDB4 MjAsIDB4QkQsIDB4OUQsIDB4QjYsIDB4RDksIDB4MzMsIDB4MzcsIDB4MkEsIDB4RkQsCi0rICAg IDB4QkIsIDB4RDQsIDB4QkMsIDB4MEMsIDB4MkEsIDB4NjcsIDB4Q0IsIDB4OUYsIDB4QkIsIDB4 REYsIDB4RjksIDB4OTMsCi0rICAgIDB4QUEsIDB4RDYsIDB4RjAsIDB4RDYsIDB4OTUsIDB4MEIs IDB4NUQsIDB4NjUsIDB4MTQsIDB4RDAsIDB4MTgsIDB4OUQsCi0rICAgIDB4QzYsIDB4QUYsIDB4 RjAsIDB4QzYsIDB4MzcsIDB4N0MsIDB4RjMsIDB4NUYsCi0gfTsKLSAKLSBzdGF0aWMgdW5zaWdu ZWQgY2hhciBvdXRfcVtdID0gewotLSAgICAweGM3LCAweDczLCAweDIxLCAweDhjLCAweDczLCAw eDdlLCAweGM4LCAweGVlLAotLSAgICAweDk5LCAweDNiLCAweDRmLCAweDJkLCAweGVkLCAweDMw LCAweGY0LCAweDhlLAotLSAgICAweGRhLCAweGNlLCAweDkxLCAweDVmLAotKyAgICAweEUzLCAw eDhFLCAweDVFLCAweDZELCAweEJGLCAweDJCLCAweDc5LCAweEY4LCAweEM1LCAweDRCLCAweDg5 LCAweDhCLAotKyAgICAweEJBLCAweDJELCAweDkxLCAweEMzLCAweDZDLCAweDgwLCAweEFDLCAw eDg3LAotIH07Ci0gCi0gc3RhdGljIHVuc2lnbmVkIGNoYXIgb3V0X2dbXSA9IHsKLS0gICAgMHg2 MiwgMHg2ZCwgMHgwMiwgMHg3OCwgMHgzOSwgMHhlYSwgMHgwYSwgMHgxMywKLS0gICAgMHg0MSwg MHgzMSwgMHg2MywgMHhhNSwgMHg1YiwgMHg0YywgMHhiNSwgMHgwMCwKLS0gICAgMHgyOSwgMHg5 ZCwgMHg1NSwgMHgyMiwgMHg5NSwgMHg2YywgMHhlZiwgMHhjYiwKLS0gICAgMHgzYiwgMHhmZiwg MHgxMCwgMHhmMywgMHg5OSwgMHhjZSwgMHgyYywgMHgyZSwKLS0gICAgMHg3MSwgMHhjYiwgMHg5 ZCwgMHhlNSwgMHhmYSwgMHgyNCwgMHhiYSwgMHhiZiwKLS0gICAgMHg1OCwgMHhlNSwgMHhiNywg MHg5NSwgMHgyMSwgMHg5MiwgMHg1YywgMHg5YywKLS0gICAgMHhjNCwgMHgyZSwgMHg5ZiwgMHg2 ZiwgMHg0NiwgMHg0YiwgMHgwOCwgMHg4YywKLS0gICAgMHhjNSwgMHg3MiwgMHhhZiwgMHg1Mywg MHhlNiwgMHhkNywgMHg4OCwgMHgwMiwKLSsgICAgMHg0MiwgMHg0QSwgMHgwNCwgMHg0RSwgMHg3 OSwgMHhCNCwgMHg5OSwgMHg3RiwgMHhGRCwgMHg1OCwgMHgzNiwgMHgyQywKLSsgICAgMHgxQiwg MHg1RiwgMHgxOCwgMHg3RSwgMHgwRCwgMHhDQywgMHhBQiwgMHg4MSwgMHhDOSwgMHg1RCwgMHgx MCwgMHhDRSwKLSsgICAgMHg0RSwgMHg4MCwgMHg3RSwgMHg1OCwgMHhCNCwgMHgzNCwgMHgzRiwg MHhBNywgMHg0NSwgMHhDNywgMHhBQSwgMHgzNiwKLSsgICAgMHgyNCwgMHg0MiwgMHhBOSwgMHgz QiwgMHhFOCwgMHgwRSwgMHgwNCwgMHgwMiwgMHgyRCwgMHhGQiwgMHhBNiwgMHgxMywKLSsgICAg MHhCOSwgMHhCNSwgMHgxNSwgMHhBNSwgMHg1NiwgMHgwNywgMHgzNSwgMHhFNCwgMHgwMywgMHhC NiwgMHg3OSwgMHg3QywKLSsgICAgMHg2MiwgMHhERCwgMHhERiwgMHgzRiwgMHg3MSwgMHgzQSwg MHg5RCwgMHg4QiwgMHhDNCwgMHhGNiwgMHhFNywgMHgxRCwKLSsgICAgMHg1MiwgMHhBOCwgMHhB OSwgMHg0MywgMHgxRCwgMHgzMywgMHg1MSwgMHg4OCwgMHgzOSwgMHhCRCwgMHg3MywgMHhFOSwK LSsgICAgMHg1RiwgMHhCRSwgMHg4MiwgMHg0OSwgMHgyNywgMHhFNiwgMHhCNSwgMHg1MywgMHhD MSwgMHgzOCwgMHhBQywgMHgyRiwKLSsgICAgMHg2RCwgMHg5NywgMHg2QywgMHhFQiwgMHg2Nywg MHhDMSwgMHg1RiwgMHg2NywgMHhGOCwgMHgzNSwgMHgwNSwgMHg1RSwKLSsgICAgMHhENSwgMHg2 OCwgMHg4MCwgMHhBQSwgMHg5NiwgMHhDQSwgMHgwQiwgMHg4QSwgMHhFNiwgMHhGMSwgMHhCMSwg MHg0MSwKLSsgICAgMHhDNiwgMHg3NSwgMHg5NCwgMHgwQSwgMHgwQSwgMHgyQSwgMHhGQSwgMHgy OSwKLSB9OwotIAotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN0cjFbXSA9ICIxMjM0NTY3 ODkwMTIzNDU2Nzg5MCI7Ci1AQCAtMTYyLDcgKzE2Nyw3IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKLSAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAidGVzdCBnZW5lcmF0aW9uIG9m IERTQSBwYXJhbWV0ZXJzXG4iKTsKLSAKLSAgICAgQk5fR0VOQ0Jfc2V0KCZjYiwgZHNhX2NiLCBi aW9fZXJyKTsKLS0gICAgaWYgKCgoZHNhID0gRFNBX25ldygpKSA9PSBOVUxMKSB8fCAhRFNBX2dl bmVyYXRlX3BhcmFtZXRlcnNfZXgoZHNhLCA1MTIsCi0rICAgIGlmICgoKGRzYSA9IERTQV9uZXco KSkgPT0gTlVMTCkgfHwgIURTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KGRzYSwgMTAyNCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VlZCwgMjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb3VudGVyLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaCwg JmNiKSkKLUBAIC0xNzYsOCArMTgxLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQotICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJcbmNvdW50ZXI9JWQgaD0lbGRcbiIsIGNvdW50 ZXIsIGgpOwotIAotICAgICBEU0FfcHJpbnQoYmlvX2VyciwgZHNhLCAwKTsKLS0gICAgaWYgKGNv dW50ZXIgIT0gMTA1KSB7Ci0tICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJjb3VudGVyIHNo b3VsZCBiZSAxMDVcbiIpOwotKyAgICBpZiAoY291bnRlciAhPSAyMzkpIHsKLSsgICAgICAgIEJJ T19wcmludGYoYmlvX2VyciwgImNvdW50ZXIgc2hvdWxkIGJlIDIzOVxuIik7Ci0gICAgICAgICBn b3RvIGVuZDsKLSAgICAgfQotICAgICBpZiAoaCAhPSAyKSB7Ci1kaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9l bmdpbmUvZW5nX2FsbC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2VuZ2luZS9lbmdfYWxs LmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9lbmdpbmUvZW5nX2FsbC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg3MjQ1 NTM2ICswMjAwCi1AQCAtNTksMTEgKzU5LDI1IEBACi0gCi0gI2luY2x1ZGUgImNyeXB0bGliLmgi Ci0gI2luY2x1ZGUgImVuZ19pbnQuaCIKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rIyBpbmNsdWRl IDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSAKLSB2b2lkIEVOR0lORV9sb2FkX2J1aWx0aW5f ZW5naW5lcyh2b2lkKQotIHsKLSAgICAgLyogU29tZSBFTkdJTkVzIG5lZWQgdGhpcyAqLwotICAg ICBPUEVOU1NMX2NwdWlkX3NldHVwKCk7Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyAgICBPUEVO U1NMX2luaXRfbGlicmFyeSgpOwotKyAgICBpZiAoRklQU19tb2RlKCkpIHsKLSsgICAgICAgIC8q IFdlIGFsbG93IGxvYWRpbmcgZHluYW1pYyBlbmdpbmUgYXMgYSB0aGlyZCBwYXJ0eQotKyAgICAg ICAgICAgZW5naW5lIG1pZ2h0IGJlIEZJUFMgdmFsaWRhdGVkLgotKyAgICAgICAgICAgVXNlciBp cyBkaXNhbGxvd2VkIHRvIGxvYWQgbm9uLXZhbGlkYXRlZCBlbmdpbmVzCi0rICAgICAgICAgICBi eSBzZWN1cml0eSBwb2xpY3kuICovCi0rICAgICAgICBFTkdJTkVfbG9hZF9keW5hbWljKCk7Ci0r ICAgICAgICByZXR1cm47Ci0rICAgIH0KLSsjZW5kaWYKLSAjaWYgMAotICAgICAvKgotICAgICAg KiBUaGVyZSdzIG5vIGxvbmdlciBhbnkgbmVlZCBmb3IgYW4gIm9wZW5zc2wiIEVOR0lORSB1bmxl c3MsIG9uZSBkYXksIGl0Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2NfYWxs Yy5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9jX2FsbGMuYwotLS0tIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9ldnAvY19hbGxjLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAw MDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvY19hbGxjLmMJMjAxNS0w NC0yMiAxNjowODo0MC4yODcyNDU1MzYgKzAyMDAKLUBAIC02NSw2ICs2NSwxMCBAQAotIHZvaWQg T3BlblNTTF9hZGRfYWxsX2NpcGhlcnModm9pZCkKLSB7Ci0gCi0rI2lmZGVmIE9QRU5TU0xfRklQ UwotKyAgICBPUEVOU1NMX2luaXRfbGlicmFyeSgpOwotKyAgICBpZiAoIUZJUFNfbW9kZSgpKSB7 Ci0rI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotICAgICBFVlBfYWRkX2NpcGhlcihF VlBfZGVzX2NmYigpKTsKLSAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19jZmIxKCkpOwotQEAg LTIzOCw0ICsyNDIsNjQgQEAgdm9pZCBPcGVuU1NMX2FkZF9hbGxfY2lwaGVycyh2b2lkKQotICAg ICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9jYW1lbGxpYV8yNTZfY2JjLCAiQ0FNRUxMSUEyNTYi KTsKLSAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fY2FtZWxsaWFfMjU2X2NiYywgImNhbWVs bGlhMjU2Iik7Ci0gI2VuZGlmCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyAgICB9IGVsc2Ugewot KyMgaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVz X2VkZV9jZmIoKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZTNfY2ZiKCkp OwotKwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGVfb2ZiKCkpOwotKyAgICAg ICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUzX29mYigpKTsKLSsKLSsgICAgICAgIEVWUF9h ZGRfY2lwaGVyKEVWUF9kZXNfZWRlX2NiYygpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVW UF9kZXNfZWRlM19jYmMoKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9kZXNf ZWRlM19jYmMsICJERVMzIik7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9kZXNf ZWRlM19jYmMsICJkZXMzIik7Ci0rCi0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2Vk ZSgpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlMygpKTsKLSsjIGVuZGlm Ci0rCi0rIyBpZm5kZWYgT1BFTlNTTF9OT19BRVMKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVW UF9hZXNfMTI4X2VjYigpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2Ni YygpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2NmYigpKTsKLSsgICAg ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2NmYjEoKSk7Ci0rICAgICAgICBFVlBfYWRk X2NpcGhlcihFVlBfYWVzXzEyOF9jZmI4KCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQ X2Flc18xMjhfb2ZiKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfY3Ry KCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfZ2NtKCkpOwotKyAgICAg ICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfeHRzKCkpOwotKyAgICAgICAgRVZQX2FkZF9j aXBoZXIoRVZQX2Flc18xMjhfY2NtKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18xMjhfd3JhcCgpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18xMjhf Y2JjLCAiQUVTMTI4Iik7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9hZXNfMTI4 X2NiYywgImFlczEyOCIpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfZWNi KCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfY2JjKCkpOwotKyAgICAg ICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfY2ZiKCkpOwotKyAgICAgICAgRVZQX2FkZF9j aXBoZXIoRVZQX2Flc18xOTJfY2ZiMSgpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9h ZXNfMTkyX2NmYjgoKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9vZmIo KSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9jdHIoKSk7Ci0rICAgICAg ICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9nY20oKSk7Ci0rICAgICAgICBFVlBfYWRkX2Np cGhlcihFVlBfYWVzXzE5Ml9jY20oKSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVz XzE5Ml93cmFwKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzE5Ml9j YmMsICJBRVMxOTIiKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Flc18xOTJf Y2JjLCAiYWVzMTkyIik7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9lY2Io KSk7Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9jYmMoKSk7Ci0rICAgICAg ICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9jZmIoKSk7Ci0rICAgICAgICBFVlBfYWRkX2Np cGhlcihFVlBfYWVzXzI1Nl9jZmIxKCkpOwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18yNTZfY2ZiOCgpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X29mYigp KTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2N0cigpKTsKLSsgICAgICAg IEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2djbSgpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lw aGVyKEVWUF9hZXNfMjU2X3h0cygpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNf MjU2X2NjbSgpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X3dyYXAoKSk7 Ci0rICAgICAgICBFVlBfYWRkX2NpcGhlcl9hbGlhcyhTTl9hZXNfMjU2X2NiYywgIkFFUzI1NiIp OwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fYWVzXzI1Nl9jYmMsICJhZXMyNTYi KTsKLSsjIGVuZGlmCi0rICAgIH0KLSsjZW5kaWYKLSB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZXZwL2NfYWxsZC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9jX2Fs bGQuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvY19hbGxkLmMuZmlwcwkyMDE1LTAz LTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9l dnAvY19hbGxkLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yODgyNDU1NjAgKzAyMDAKLUBAIC02NCw1 MSArNjQsODEgQEAKLSAKLSB2b2lkIE9wZW5TU0xfYWRkX2FsbF9kaWdlc3RzKHZvaWQpCi0gewot KyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgT1BFTlNTTF9pbml0X2xpYnJhcnkoKTsKLSsgICAg aWYgKCFGSVBTX21vZGUoKSkgewotKyNlbmRpZgotICNpZm5kZWYgT1BFTlNTTF9OT19NRDQKLS0g ICAgRVZQX2FkZF9kaWdlc3QoRVZQX21kNCgpKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVW UF9tZDQoKSk7Ci0gI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX01ENQotLSAgICBFVlBfYWRk X2RpZ2VzdChFVlBfbWQ1KCkpOwotLSAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9tZDUsICJz c2wyLW1kNSIpOwotLSAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9tZDUsICJzc2wzLW1kNSIp OwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX21kNSgpKTsKLSsgICAgICAgIEVWUF9hZGRf ZGlnZXN0X2FsaWFzKFNOX21kNSwgInNzbDItbWQ1Iik7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2Vz dF9hbGlhcyhTTl9tZDUsICJzc2wzLW1kNSIpOwotICNlbmRpZgotICNpZiAhZGVmaW5lZChPUEVO U1NMX05PX1NIQSkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEEwKQotLSAgICBFVlBfYWRkX2Rp Z2VzdChFVlBfc2hhKCkpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYSgpKTsKLSAj IGlmbmRlZiBPUEVOU1NMX05PX0RTQQotLSAgICBFVlBfYWRkX2RpZ2VzdChFVlBfZHNzKCkpOwot KyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX2RzcygpKTsKLSAjIGVuZGlmCi0gI2VuZGlmCi0g I2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NIQTEp Ci0tICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGExKCkpOwotLSAgICBFVlBfYWRkX2RpZ2VzdF9h bGlhcyhTTl9zaGExLCAic3NsMy1zaGExIik7Ci0tICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNO X3NoYTFXaXRoUlNBRW5jcnlwdGlvbiwgU05fc2hhMVdpdGhSU0EpOwotKyAgICAgICAgRVZQX2Fk ZF9kaWdlc3QoRVZQX3NoYTEoKSk7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9z aGExLCAic3NsMy1zaGExIik7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9zaGEx V2l0aFJTQUVuY3J5cHRpb24sIFNOX3NoYTFXaXRoUlNBKTsKLSAjIGlmbmRlZiBPUEVOU1NMX05P X0RTQQotLSAgICBFVlBfYWRkX2RpZ2VzdChFVlBfZHNzMSgpKTsKLS0gICAgRVZQX2FkZF9kaWdl c3RfYWxpYXMoU05fZHNhV2l0aFNIQTEsIFNOX2RzYVdpdGhTSEExXzIpOwotLSAgICBFVlBfYWRk X2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgIkRTUzEiKTsKLS0gICAgRVZQX2FkZF9kaWdl c3RfYWxpYXMoU05fZHNhV2l0aFNIQTEsICJkc3MxIik7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2Vz dChFVlBfZHNzMSgpKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhT SEExLCBTTl9kc2FXaXRoU0hBMV8yKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNO X2RzYVdpdGhTSEExLCAiRFNTMSIpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05f ZHNhV2l0aFNIQTEsICJkc3MxIik7Ci0gIyBlbmRpZgotICMgaWZuZGVmIE9QRU5TU0xfTk9fRUNE U0EKLS0gICAgRVZQX2FkZF9kaWdlc3QoRVZQX2VjZHNhKCkpOwotKyAgICAgICAgRVZQX2FkZF9k aWdlc3QoRVZQX2VjZHNhKCkpOwotICMgZW5kaWYKLSAjZW5kaWYKLSAjaWYgIWRlZmluZWQoT1BF TlNTTF9OT19NREMyKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0RFUykKLS0gICAgRVZQX2FkZF9k aWdlc3QoRVZQX21kYzIoKSk7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfbWRjMigpKTsK LSAjZW5kaWYKLSAjaWZuZGVmIE9QRU5TU0xfTk9fUklQRU1ECi0tICAgIEVWUF9hZGRfZGlnZXN0 KEVWUF9yaXBlbWQxNjAoKSk7Ci0tICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX3JpcGVtZDE2 MCwgInJpcGVtZCIpOwotLSAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9yaXBlbWQxNjAsICJy bWQxNjAiKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9yaXBlbWQxNjAoKSk7Ci0rICAg ICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9yaXBlbWQxNjAsICJyaXBlbWQiKTsKLSsgICAg ICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX3JpcGVtZDE2MCwgInJtZDE2MCIpOwotICNlbmRp ZgotICNpZm5kZWYgT1BFTlNTTF9OT19TSEEyNTYKLS0gICAgRVZQX2FkZF9kaWdlc3QoRVZQX3No YTIyNCgpKTsKLS0gICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTI1NigpKTsKLSsgICAgICAgIEVW UF9hZGRfZGlnZXN0KEVWUF9zaGEyMjQoKSk7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBf c2hhMjU2KCkpOwotICNlbmRpZgotICNpZm5kZWYgT1BFTlNTTF9OT19TSEE1MTIKLS0gICAgRVZQ X2FkZF9kaWdlc3QoRVZQX3NoYTM4NCgpKTsKLS0gICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTUx MigpKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEzODQoKSk7Ci0rICAgICAgICBF VlBfYWRkX2RpZ2VzdChFVlBfc2hhNTEyKCkpOwotICNlbmRpZgotICNpZm5kZWYgT1BFTlNTTF9O T19XSElSTFBPT0wKLS0gICAgRVZQX2FkZF9kaWdlc3QoRVZQX3doaXJscG9vbCgpKTsKLSsgICAg ICAgIEVWUF9hZGRfZGlnZXN0KEVWUF93aGlybHBvb2woKSk7Ci0rI2VuZGlmCi0rI2lmZGVmIE9Q RU5TU0xfRklQUwotKyAgICB9IGVsc2UgewotKyMgaWYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEEp ICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBMSkKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVW UF9zaGExKCkpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fc2hhMSwgInNzbDMt c2hhMSIpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fc2hhMVdpdGhSU0FFbmNy eXB0aW9uLCBTTl9zaGExV2l0aFJTQSk7Ci0rIyAgaWZuZGVmIE9QRU5TU0xfTk9fRFNBCi0rICAg ICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfZHNzMSgpKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0 X2FsaWFzKFNOX2RzYVdpdGhTSEExLCBTTl9kc2FXaXRoU0hBMV8yKTsKLSsgICAgICAgIEVWUF9h ZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhTSEExLCAiRFNTMSIpOwotKyAgICAgICAgRVZQX2Fk ZF9kaWdlc3RfYWxpYXMoU05fZHNhV2l0aFNIQTEsICJkc3MxIik7Ci0rIyAgZW5kaWYKLSsjICBp Zm5kZWYgT1BFTlNTTF9OT19FQ0RTQQotKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX2VjZHNh KCkpOwotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyMgaWZuZGVmIE9QRU5TU0xfTk9fU0hBMjU2Ci0r ICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMjI0KCkpOwotKyAgICAgICAgRVZQX2FkZF9k aWdlc3QoRVZQX3NoYTI1NigpKTsKLSsjIGVuZGlmCi0rIyBpZm5kZWYgT1BFTlNTTF9OT19TSEE1 MTIKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEzODQoKSk7Ci0rICAgICAgICBFVlBf YWRkX2RpZ2VzdChFVlBfc2hhNTEyKCkpOwotKyMgZW5kaWYKLSsgICAgfQotICNlbmRpZgotIH0K LWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZGlnZXN0LmMuZmlwcyBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZXZwL2RpZ2VzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2 cC9kaWdlc3QuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysg b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9kaWdlc3QuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4 ODI0NTU2MCArMDIwMAotQEAgLTE0MywxOCArMTQzLDU1IEBAIGludCBFVlBfRGlnZXN0SW5pdChF VlBfTURfQ1RYICpjdHgsIGNvbnMKLSAgICAgcmV0dXJuIEVWUF9EaWdlc3RJbml0X2V4KGN0eCwg dHlwZSwgTlVMTCk7Ci0gfQotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsKLSsvKiBUaGUgcHVy cG9zZSBvZiB0aGVzZSBpcyB0byB0cmFwIHByb2dyYW1zIHRoYXQgYXR0ZW1wdCB0byB1c2Ugbm9u IEZJUFMKLSsgKiBhbGdvcml0aG1zIGluIEZJUFMgbW9kZSBhbmQgaWdub3JlIHRoZSBlcnJvcnMu Ci0rICovCi0rCi0rc3RhdGljIGludCBiYWRfaW5pdChFVlBfTURfQ1RYICpjdHgpCi0rewotKyAg ICBGSVBTX0VSUk9SX0lHTk9SRUQoIkRpZ2VzdCBpbml0Iik7Ci0rICAgIHJldHVybiAwOwotK30K LSsKLStzdGF0aWMgaW50IGJhZF91cGRhdGUoRVZQX01EX0NUWCAqY3R4LCBjb25zdCB2b2lkICpk YXRhLCBzaXplX3QgY291bnQpCi0rewotKyAgICBGSVBTX0VSUk9SX0lHTk9SRUQoIkRpZ2VzdCB1 cGRhdGUiKTsKLSsgICAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbnQgYmFkX2ZpbmFsKEVW UF9NRF9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqbWQpCi0rewotKyAgICBGSVBTX0VSUk9SX0lH Tk9SRUQoIkRpZ2VzdCBGaW5hbCIpOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNv bnN0IEVWUF9NRCBiYWRfbWQgPSB7Ci0rICAgIDAsCi0rICAgIDAsCi0rICAgIDAsCi0rICAgIDAs Ci0rICAgIGJhZF9pbml0LAotKyAgICBiYWRfdXBkYXRlLAotKyAgICBiYWRfZmluYWwsCi0rICAg IE5VTEwsCi0rICAgIE5VTEwsCi0rICAgIE5VTEwsCi0rICAgIDAsCi0rICAgIHswLCAwLCAwLCAw fSwKLSt9OwotKwotKyNlbmRpZgotKwotIGludCBFVlBfRGlnZXN0SW5pdF9leChFVlBfTURfQ1RY ICpjdHgsIGNvbnN0IEVWUF9NRCAqdHlwZSwgRU5HSU5FICppbXBsKQotIHsKLSAgICAgRVZQX01E X0NUWF9jbGVhcl9mbGFncyhjdHgsIEVWUF9NRF9DVFhfRkxBR19DTEVBTkVEKTsKLSAjaWZkZWYg T1BFTlNTTF9GSVBTCi0tICAgIC8qIElmIEZJUFMgbW9kZSBzd2l0Y2ggdG8gYXBwcm92ZWQgaW1w bGVtZW50YXRpb24gaWYgcG9zc2libGUgKi8KLS0gICAgaWYgKEZJUFNfbW9kZSgpKSB7Ci0tICAg ICAgICBjb25zdCBFVlBfTUQgKmZpcHNtZDsKLS0gICAgICAgIGlmICh0eXBlKSB7Ci0tICAgICAg ICAgICAgZmlwc21kID0gZXZwX2dldF9maXBzX21kKHR5cGUpOwotLSAgICAgICAgICAgIGlmIChm aXBzbWQpCi0tICAgICAgICAgICAgICAgIHR5cGUgPSBmaXBzbWQ7Ci0tICAgICAgICB9Ci0rICAg IGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9F VlBfRElHRVNUSU5JVF9FWCwgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKLSsgICAgICAg IGN0eC0+ZGlnZXN0ID0gJmJhZF9tZDsKLSsgICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gI2Vu ZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX0VOR0lORQotQEAgLTIxMiw2ICsyNDksMTYgQEAgaW50 IEVWUF9EaWdlc3RJbml0X2V4KEVWUF9NRF9DVFggKmN0eCwgYwotICAgICB9Ci0gI2VuZGlmCi0g ICAgIGlmIChjdHgtPmRpZ2VzdCAhPSB0eXBlKSB7Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyAg ICAgICAgaWYgKEZJUFNfbW9kZSgpKSB7Ci0rICAgICAgICAgICAgaWYgKCEodHlwZS0+ZmxhZ3Mg JiBFVlBfTURfRkxBR19GSVBTKQotKyAgICAgICAgICAgICAgICAmJiAhKGN0eC0+ZmxhZ3MgJiBF VlBfTURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSB7Ci0rICAgICAgICAgICAgICAgIEVWUGVy cihFVlBfRl9FVlBfRElHRVNUSU5JVF9FWCwgRVZQX1JfRElTQUJMRURfRk9SX0ZJUFMpOwotKyAg ICAgICAgICAgICAgICBjdHgtPmRpZ2VzdCA9ICZiYWRfbWQ7Ci0rICAgICAgICAgICAgICAgIHJl dHVybiAwOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsjZW5kaWYKLSAgICAgICAgIGlm IChjdHgtPmRpZ2VzdCAmJiBjdHgtPmRpZ2VzdC0+Y3R4X3NpemUpCi0gICAgICAgICAgICAgT1BF TlNTTF9mcmVlKGN0eC0+bWRfZGF0YSk7Ci0gICAgICAgICBjdHgtPmRpZ2VzdCA9IHR5cGU7Ci1A QCAtMjM2LDI1ICsyODMsMTUgQEAgaW50IEVWUF9EaWdlc3RJbml0X2V4KEVWUF9NRF9DVFggKmN0 eCwgYwotICAgICB9Ci0gICAgIGlmIChjdHgtPmZsYWdzICYgRVZQX01EX0NUWF9GTEFHX05PX0lO SVQpCi0gICAgICAgICByZXR1cm4gMTsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChG SVBTX21vZGUoKSkgewotLSAgICAgICAgaWYgKEZJUFNfZGlnZXN0aW5pdChjdHgsIHR5cGUpKQot LSAgICAgICAgICAgIHJldHVybiAxOwotLSAgICAgICAgT1BFTlNTTF9mcmVlKGN0eC0+bWRfZGF0 YSk7Ci0tICAgICAgICBjdHgtPm1kX2RhdGEgPSBOVUxMOwotLSAgICAgICAgcmV0dXJuIDA7Ci0t ICAgIH0KLS0jZW5kaWYKLSAgICAgcmV0dXJuIGN0eC0+ZGlnZXN0LT5pbml0KGN0eCk7Ci0gfQot IAotIGludCBFVlBfRGlnZXN0VXBkYXRlKEVWUF9NRF9DVFggKmN0eCwgY29uc3Qgdm9pZCAqZGF0 YSwgc2l6ZV90IGNvdW50KQotIHsKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIHJldHVybiBG SVBTX2RpZ2VzdHVwZGF0ZShjdHgsIGRhdGEsIGNvdW50KTsKLS0jZWxzZQotLSAgICByZXR1cm4g Y3R4LT51cGRhdGUoY3R4LCBkYXRhLCBjb3VudCk7Ci0rICAgIEZJUFNfc2VsZnRlc3RfY2hlY2so KTsKLSAjZW5kaWYKLSsgICAgcmV0dXJuIGN0eC0+dXBkYXRlKGN0eCwgZGF0YSwgY291bnQpOwot IH0KLSAKLSAvKiBUaGUgY2FsbGVyIGNhbiBhc3N1bWUgdGhhdCB0aGlzIHJlbW92ZXMgYW55IHNl Y3JldCBkYXRhIGZyb20gdGhlIGNvbnRleHQgKi8KLUBAIC0yNjksMTEgKzMwNiwxMSBAQCBpbnQg RVZQX0RpZ2VzdEZpbmFsKEVWUF9NRF9DVFggKmN0eCwgdW5zCi0gLyogVGhlIGNhbGxlciBjYW4g YXNzdW1lIHRoYXQgdGhpcyByZW1vdmVzIGFueSBzZWNyZXQgZGF0YSBmcm9tIHRoZSBjb250ZXh0 ICovCi0gaW50IEVWUF9EaWdlc3RGaW5hbF9leChFVlBfTURfQ1RYICpjdHgsIHVuc2lnbmVkIGNo YXIgKm1kLCB1bnNpZ25lZCBpbnQgKnNpemUpCi0gewotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0g ICAgcmV0dXJuIEZJUFNfZGlnZXN0ZmluYWwoY3R4LCBtZCwgc2l6ZSk7Ci0tI2Vsc2UKLSAgICAg aW50IHJldDsKLSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIEZJUFNfc2VsZnRlc3RfY2hl Y2soKTsKLSsjZW5kaWYKLSAgICAgT1BFTlNTTF9hc3NlcnQoY3R4LT5kaWdlc3QtPm1kX3NpemUg PD0gRVZQX01BWF9NRF9TSVpFKTsKLSAgICAgcmV0ID0gY3R4LT5kaWdlc3QtPmZpbmFsKGN0eCwg bWQpOwotICAgICBpZiAoc2l6ZSAhPSBOVUxMKQotQEAgLTI4NCw3ICszMjEsNiBAQCBpbnQgRVZQ X0RpZ2VzdEZpbmFsX2V4KEVWUF9NRF9DVFggKmN0eCwKLSAgICAgfQotICAgICBtZW1zZXQoY3R4 LT5tZF9kYXRhLCAwLCBjdHgtPmRpZ2VzdC0+Y3R4X3NpemUpOwotICAgICByZXR1cm4gcmV0Owot LSNlbmRpZgotIH0KLSAKLSBpbnQgRVZQX01EX0NUWF9jb3B5KEVWUF9NRF9DVFggKm91dCwgY29u c3QgRVZQX01EX0NUWCAqaW4pCi1AQCAtMzczLDcgKzQwOSw2IEBAIHZvaWQgRVZQX01EX0NUWF9k ZXN0cm95KEVWUF9NRF9DVFggKmN0eCkKLSAvKiBUaGlzIGNhbGwgZnJlZXMgcmVzb3VyY2VzIGFz c29jaWF0ZWQgd2l0aCB0aGUgY29udGV4dCAqLwotIGludCBFVlBfTURfQ1RYX2NsZWFudXAoRVZQ X01EX0NUWCAqY3R4KQotIHsKLS0jaWZuZGVmIE9QRU5TU0xfRklQUwotICAgICAvKgotICAgICAg KiBEb24ndCBhc3N1bWUgY3R4LT5tZF9kYXRhIHdhcyBjbGVhbmVkIGluIEVWUF9EaWdlc3RfRmlu YWwsIGJlY2F1c2UKLSAgICAgICogc29tZXRpbWVzIG9ubHkgY29waWVzIG9mIHRoZSBjb250ZXh0 IGFyZSBldmVyIGZpbmFsaXNlZC4KLUBAIC0zODYsNyArNDIxLDYgQEAgaW50IEVWUF9NRF9DVFhf Y2xlYW51cChFVlBfTURfQ1RYICpjdHgpCi0gICAgICAgICBPUEVOU1NMX2NsZWFuc2UoY3R4LT5t ZF9kYXRhLCBjdHgtPmRpZ2VzdC0+Y3R4X3NpemUpOwotICAgICAgICAgT1BFTlNTTF9mcmVlKGN0 eC0+bWRfZGF0YSk7Ci0gICAgIH0KLS0jZW5kaWYKLSAgICAgaWYgKGN0eC0+cGN0eCkKLSAgICAg ICAgIEVWUF9QS0VZX0NUWF9mcmVlKGN0eC0+cGN0eCk7Ci0gI2lmbmRlZiBPUEVOU1NMX05PX0VO R0lORQotQEAgLTM5Nyw5ICs0MzEsNiBAQCBpbnQgRVZQX01EX0NUWF9jbGVhbnVwKEVWUF9NRF9D VFggKmN0eCkKLSAgICAgICAgICAqLwotICAgICAgICAgRU5HSU5FX2ZpbmlzaChjdHgtPmVuZ2lu ZSk7Ci0gI2VuZGlmCi0tI2lmZGVmIE9QRU5TU0xfRklQUwotLSAgICBGSVBTX21kX2N0eF9jbGVh bnVwKGN0eCk7Ci0tI2VuZGlmCi0gICAgIG1lbXNldChjdHgsICdcMCcsIHNpemVvZiAqY3R4KTsK LSAKLSAgICAgcmV0dXJuIDE7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2Vf YWVzLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2VfYWVzLmMKLS0tLSBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZXZwL2VfYWVzLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAw MDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZV9hZXMuYwkyMDE1LTA0 LTIyIDE2OjA4OjQwLjI4ODI0NTU2MCArMDIwMAotQEAgLTU5LDkgKzU5LDYgQEAKLSAjIGluY2x1 ZGUgIm1vZGVzX2xjbC5oIgotICMgaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+Ci0gCi0tIyB1bmRl ZiBFVlBfQ0lQSF9GTEFHX0ZJUFMKLS0jIGRlZmluZSBFVlBfQ0lQSF9GTEFHX0ZJUFMgMAotLQot IHR5cGVkZWYgc3RydWN0IHsKLSAgICAgdW5pb24gewotICAgICAgICAgZG91YmxlIGFsaWduOwot QEAgLTExNTgsNiArMTE1NSwxMSBAQCBzdGF0aWMgaW50IGFlc19nY21fY3RybChFVlBfQ0lQSEVS X0NUWCAqCi0gICAgIGNhc2UgRVZQX0NUUkxfR0NNX1NFVF9JVkxFTjoKLSAgICAgICAgIGlmIChh cmcgPD0gMCkKLSAgICAgICAgICAgICByZXR1cm4gMDsKLSsjIGlmZGVmIE9QRU5TU0xfRklQUwot KyAgICAgICAgaWYgKEZJUFNfbW9kdWxlX21vZGUoKSAmJiAhKGMtPmZsYWdzICYgRVZQX0NJUEhf RkxBR19OT05fRklQU19BTExPVykKLSsgICAgICAgICAgICAmJiBhcmcgPCAxMikKLSsgICAgICAg ICAgICByZXR1cm4gMDsKLSsjIGVuZGlmCi0gICAgICAgICAvKiBBbGxvY2F0ZSBtZW1vcnkgZm9y IElWIGlmIG5lZWRlZCAqLwotICAgICAgICAgaWYgKChhcmcgPiBFVlBfTUFYX0lWX0xFTkdUSCkg JiYgKGFyZyA+IGdjdHgtPml2bGVuKSkgewotICAgICAgICAgICAgIGlmIChnY3R4LT5pdiAhPSBj LT5pdikKLUBAIC0xNzI2LDYgKzE3MjgsMTQgQEAgc3RhdGljIGludCBhZXNfeHRzX2NpcGhlcihF VlBfQ0lQSEVSX0NUWAotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIGlmICghb3V0IHx8ICFpbiB8 fCBsZW4gPCBBRVNfQkxPQ0tfU0laRSkKLSAgICAgICAgIHJldHVybiAwOwotKyMgaWZkZWYgT1BF TlNTTF9GSVBTCi0rICAgIC8qIFJlcXVpcmVtZW50IG9mIFNQODAwLTM4RSAqLwotKyAgICBpZiAo RklQU19tb2R1bGVfbW9kZSgpICYmICEoY3R4LT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJ UFNfQUxMT1cpICYmCi0rICAgICAgICAobGVuID4gKDFVTCA8PCAyMCkgKiAxNikpIHsKLSsgICAg ICAgIEVWUGVycihFVlBfRl9BRVNfWFRTX0NJUEhFUiwgRVZQX1JfVE9PX0xBUkdFKTsKLSsgICAg ICAgIHJldHVybiAwOwotKyAgICB9Ci0rIyBlbmRpZgotICAgICBpZiAoeGN0eC0+c3RyZWFtKQot ICAgICAgICAgKCp4Y3R4LT5zdHJlYW0pIChpbiwgb3V0LCBsZW4sCi0gICAgICAgICAgICAgICAg ICAgICAgICAgIHhjdHgtPnh0cy5rZXkxLCB4Y3R4LT54dHMua2V5MiwgY3R4LT5pdik7Ci1kaWZm IC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2VfZGVzMy5jLmZpcHMgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2V2cC9lX2RlczMuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZV9k ZXMzLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9ldnAvZV9kZXMzLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yODgyNDU1 NjAgKzAyMDAKLUBAIC02NSwxMCArNjUsNiBAQAotICMgaW5jbHVkZSA8b3BlbnNzbC9kZXMuaD4K LSAjIGluY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotIAotLS8qIEJsb2NrIHVzZSBvZiBpbXBsZW1l bnRhdGlvbnMgaW4gRklQUyBtb2RlICovCi0tIyB1bmRlZiBFVlBfQ0lQSF9GTEFHX0ZJUFMKLS0j IGRlZmluZSBFVlBfQ0lQSF9GTEFHX0ZJUFMgICAgICAwCi0tCi0gdHlwZWRlZiBzdHJ1Y3Qgewot ICAgICB1bmlvbiB7Ci0gICAgICAgICBkb3VibGUgYWxpZ247Ci1kaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZXZwL2VfbnVsbC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9l X251bGwuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZV9udWxsLmMuZmlwcwkyMDE1 LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9ldnAvZV9udWxsLmMJMjAxNS0wNC0yMiAxNjowODo0MC4yODgyNDU1NjAgKzAyMDAKLUBAIC02 OCw3ICs2OCw3IEBAIHN0YXRpYyBpbnQgbnVsbF9jaXBoZXIoRVZQX0NJUEhFUl9DVFggKmMKLSBz dGF0aWMgY29uc3QgRVZQX0NJUEhFUiBuX2NpcGhlciA9IHsKLSAgICAgTklEX3VuZGVmLAotICAg ICAxLCAwLCAwLAotLSAgICAwLAotKyAgICBFVlBfQ0lQSF9GTEFHX0ZJUFMsCi0gICAgIG51bGxf aW5pdF9rZXksCi0gICAgIG51bGxfY2lwaGVyLAotICAgICBOVUxMLAotZGlmZiAtdXAgb3BlbnNz bC0xLjAuMmEvY3J5cHRvL2V2cC9ldnBfZW5jLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v ZXZwL2V2cF9lbmMuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZXZwX2VuYy5jLmZp cHMJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZXZwL2V2cF9lbmMuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4OTI0NTU4MyArMDIw MAotQEAgLTY5LDE2ICs2OSw3MyBAQAotICNlbmRpZgotICNpbmNsdWRlICJldnBfbG9jbC5oIgot IAotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0jIGRlZmluZSBNX2RvX2NpcGhlcihjdHgsIG91dCwg aW4sIGlubCkgRklQU19jaXBoZXIoY3R4LCBvdXQsIGluLCBpbmwpCi0tI2Vsc2UKLS0jIGRlZmlu ZSBNX2RvX2NpcGhlcihjdHgsIG91dCwgaW4sIGlubCkgY3R4LT5jaXBoZXItPmRvX2NpcGhlcihj dHgsIG91dCwgaW4sIGlubCkKLS0jZW5kaWYKLSsjZGVmaW5lIE1fZG9fY2lwaGVyKGN0eCwgb3V0 LCBpbiwgaW5sKSBjdHgtPmNpcGhlci0+ZG9fY2lwaGVyKGN0eCwgb3V0LCBpbiwgaW5sKQotIAot IGNvbnN0IGNoYXIgRVZQX3ZlcnNpb25bXSA9ICJFVlAiIE9QRU5TU0xfVkVSU0lPTl9QVEVYVDsK LSAKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rCi0rLyogVGhlIHB1cnBvc2Ugb2YgdGhlc2UgaXMg dG8gdHJhcCBwcm9ncmFtcyB0aGF0IGF0dGVtcHQgdG8gdXNlIG5vbiBGSVBTCi0rICogYWxnb3Jp dGhtcyBpbiBGSVBTIG1vZGUgYW5kIGlnbm9yZSB0aGUgZXJyb3JzLgotKyAqLwotKwotK3N0YXRp YyBpbnQgYmFkX2luaXQoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAq a2V5LAotKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaXYsIGludCBl bmMpCi0rewotKyAgICBGSVBTX0VSUk9SX0lHTk9SRUQoIkNpcGhlciBpbml0Iik7Ci0rICAgIHJl dHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50IGJhZF9kb19jaXBoZXIoRVZQX0NJUEhFUl9DVFgg KmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgaW50IGlubCkKLSt7Ci0rICAgIEZJUFNfRVJS T1JfSUdOT1JFRCgiQ2lwaGVyIHVwZGF0ZSIpOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rLyog TkI6IG5vIGNsZWFudXAgYmVjYXVzZSBpdCBpcyBhbGxvd2VkIGFmdGVyIGZhaWxlZCBpbml0ICov Ci0rCi0rc3RhdGljIGludCBiYWRfc2V0X2FzbjEoRVZQX0NJUEhFUl9DVFggKmN0eCwgQVNOMV9U WVBFICp0eXApCi0rewotKyAgICBGSVBTX0VSUk9SX0lHTk9SRUQoIkNpcGhlciBzZXRfYXNuMSIp OwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGludCBiYWRfZ2V0X2FzbjEoRVZQX0NJ UEhFUl9DVFggKmN0eCwgQVNOMV9UWVBFICp0eXApCi0rewotKyAgICBGSVBTX0VSUk9SX0lHTk9S RUQoIkNpcGhlciBnZXRfYXNuMSIpOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGlu dCBiYWRfY3RybChFVlBfQ0lQSEVSX0NUWCAqY3R4LCBpbnQgdHlwZSwgaW50IGFyZywgdm9pZCAq cHRyKQotK3sKLSsgICAgRklQU19FUlJPUl9JR05PUkVEKCJDaXBoZXIgY3RybCIpOwotKyAgICBy ZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IEVWUF9DSVBIRVIgYmFkX2NpcGhlciA9IHsK LSsgICAgMCwKLSsgICAgMCwKLSsgICAgMCwKLSsgICAgMCwKLSsgICAgMCwKLSsgICAgYmFkX2lu aXQsCi0rICAgIGJhZF9kb19jaXBoZXIsCi0rICAgIE5VTEwsCi0rICAgIDAsCi0rICAgIGJhZF9z ZXRfYXNuMSwKLSsgICAgYmFkX2dldF9hc24xLAotKyAgICBiYWRfY3RybCwKLSsgICAgTlVMTAot K307Ci0rCi0rI2VuZGlmCi0rCi0gdm9pZCBFVlBfQ0lQSEVSX0NUWF9pbml0KEVWUF9DSVBIRVJf Q1RYICpjdHgpCi0gewotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgRklQU19zZWxmdGVzdF9j aGVjaygpOwotKyNlbmRpZgotICAgICBtZW1zZXQoY3R4LCAwLCBzaXplb2YoRVZQX0NJUEhFUl9D VFgpKTsKLSAgICAgLyogY3R4LT5jaXBoZXI9TlVMTDsgKi8KLSB9Ci1AQCAtMTEwLDYgKzE2Nywx MyBAQCBpbnQgRVZQX0NpcGhlckluaXRfZXgoRVZQX0NJUEhFUl9DVFggKmN0Ci0gICAgICAgICAg ICAgZW5jID0gMTsKLSAgICAgICAgIGN0eC0+ZW5jcnlwdCA9IGVuYzsKLSAgICAgfQotKyNpZmRl ZiBPUEVOU1NMX0ZJUFMKLSsgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKLSsgICAg ICAgIEZJUFNlcnIoRklQU19GX0VWUF9DSVBIRVJJTklUX0VYLCBGSVBTX1JfRklQU19TRUxGVEVT VF9GQUlMRUQpOwotKyAgICAgICAgY3R4LT5jaXBoZXIgPSAmYmFkX2NpcGhlcjsKLSsgICAgICAg IHJldHVybiAwOwotKyAgICB9Ci0rI2VuZGlmCi0gI2lmbmRlZiBPUEVOU1NMX05PX0VOR0lORQot ICAgICAvKgotICAgICAgKiBXaGV0aGVyIGl0J3MgbmljZSBvciBub3QsICJJbml0cyIgY2FuIGJl IHVzZWQgb24gIkZpbmFsIidkIGNvbnRleHRzIHNvCi1AQCAtMTY4LDE2ICsyMzIsNiBAQCBpbnQg RVZQX0NpcGhlckluaXRfZXgoRVZQX0NJUEhFUl9DVFggKmN0Ci0gICAgICAgICAgICAgY3R4LT5l bmdpbmUgPSBOVUxMOwotICNlbmRpZgotIAotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgICAg IGlmIChGSVBTX21vZGUoKSkgewotLSAgICAgICAgICAgIGNvbnN0IEVWUF9DSVBIRVIgKmZjaXBo ZXI7Ci0tICAgICAgICAgICAgaWYgKGNpcGhlcikKLS0gICAgICAgICAgICAgICAgZmNpcGhlciA9 IGV2cF9nZXRfZmlwc19jaXBoZXIoY2lwaGVyKTsKLS0gICAgICAgICAgICBpZiAoZmNpcGhlcikK LS0gICAgICAgICAgICAgICAgY2lwaGVyID0gZmNpcGhlcjsKLS0gICAgICAgICAgICByZXR1cm4g RklQU19jaXBoZXJpbml0KGN0eCwgY2lwaGVyLCBrZXksIGl2LCBlbmMpOwotLSAgICAgICAgfQot LSNlbmRpZgotICAgICAgICAgY3R4LT5jaXBoZXIgPSBjaXBoZXI7Ci0gICAgICAgICBpZiAoY3R4 LT5jaXBoZXItPmN0eF9zaXplKSB7Ci0gICAgICAgICAgICAgY3R4LT5jaXBoZXJfZGF0YSA9IE9Q RU5TU0xfbWFsbG9jKGN0eC0+Y2lwaGVyLT5jdHhfc2l6ZSk7Ci1AQCAtMjA0LDEwICsyNTgsNiBA QCBpbnQgRVZQX0NpcGhlckluaXRfZXgoRVZQX0NJUEhFUl9DVFggKmN0Ci0gI2lmbmRlZiBPUEVO U1NMX05PX0VOR0lORQotICBza2lwX3RvX2luaXQ6Ci0gI2VuZGlmCi0tI2lmZGVmIE9QRU5TU0xf RklQUwotLSAgICBpZiAoRklQU19tb2RlKCkpCi0tICAgICAgICByZXR1cm4gRklQU19jaXBoZXJp bml0KGN0eCwgY2lwaGVyLCBrZXksIGl2LCBlbmMpOwotLSNlbmRpZgotICAgICAvKiB3ZSBhc3N1 bWUgYmxvY2sgc2l6ZSBpcyBhIHBvd2VyIG9mIDIgaW4gKmNyeXB0VXBkYXRlICovCi0gICAgIE9Q RU5TU0xfYXNzZXJ0KGN0eC0+Y2lwaGVyLT5ibG9ja19zaXplID09IDEKLSAgICAgICAgICAgICAg ICAgICAgfHwgY3R4LT5jaXBoZXItPmJsb2NrX3NpemUgPT0gOAotQEAgLTI1Myw2ICszMDMsMTkg QEAgaW50IEVWUF9DaXBoZXJJbml0X2V4KEVWUF9DSVBIRVJfQ1RYICpjdAotICAgICAgICAgICAg IGJyZWFrOwotICAgICAgICAgfQotICAgICB9Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyAgICAv KiBBZnRlciAna2V5JyBpcyBzZXQgbm8gZnVydGhlciBwYXJhbWV0ZXJzIGNoYW5nZXMgYXJlIHBl cm1pc3NpYmxlLgotKyAgICAgKiBTbyBvbmx5IGNoZWNrIGZvciBub24gRklQUyBlbmFibGluZyBh dCB0aGlzIHBvaW50LgotKyAgICAgKi8KLSsgICAgaWYgKGtleSAmJiBGSVBTX21vZGUoKSkgewot KyAgICAgICAgaWYgKCEoY3R4LT5jaXBoZXItPmZsYWdzICYgRVZQX0NJUEhfRkxBR19GSVBTKQot KyAgICAgICAgICAgICYgIShjdHgtPmZsYWdzICYgRVZQX0NJUEhfRkxBR19OT05fRklQU19BTExP VykpIHsKLSsgICAgICAgICAgICBFVlBlcnIoRVZQX0ZfRVZQX0NJUEhFUklOSVRfRVgsIEVWUF9S X0RJU0FCTEVEX0ZPUl9GSVBTKTsKLSsgICAgICAgICAgICBjdHgtPmNpcGhlciA9ICZiYWRfY2lw aGVyOwotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgfQotKyAgICB9Ci0rI2VuZGlm Ci0gCi0gICAgIGlmIChrZXkgfHwgKGN0eC0+Y2lwaGVyLT5mbGFncyAmIEVWUF9DSVBIX0FMV0FZ U19DQUxMX0lOSVQpKSB7Ci0gICAgICAgICBpZiAoIWN0eC0+Y2lwaGVyLT5pbml0KGN0eCwga2V5 LCBpdiwgZW5jKSkKLUBAIC01NTQsNyArNjE3LDYgQEAgdm9pZCBFVlBfQ0lQSEVSX0NUWF9mcmVl KEVWUF9DSVBIRVJfQ1RYCi0gCi0gaW50IEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoRVZQX0NJUEhF Ul9DVFggKmMpCi0gewotLSNpZm5kZWYgT1BFTlNTTF9GSVBTCi0gICAgIGlmIChjLT5jaXBoZXIg IT0gTlVMTCkgewotICAgICAgICAgaWYgKGMtPmNpcGhlci0+Y2xlYW51cCAmJiAhYy0+Y2lwaGVy LT5jbGVhbnVwKGMpKQotICAgICAgICAgICAgIHJldHVybiAwOwotQEAgLTU2NCw3ICs2MjYsNiBA QCBpbnQgRVZQX0NJUEhFUl9DVFhfY2xlYW51cChFVlBfQ0lQSEVSX0NUCi0gICAgIH0KLSAgICAg aWYgKGMtPmNpcGhlcl9kYXRhKQotICAgICAgICAgT1BFTlNTTF9mcmVlKGMtPmNpcGhlcl9kYXRh KTsKLS0jZW5kaWYKLSAjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCi0gICAgIGlmIChjLT5lbmdp bmUpCi0gICAgICAgICAvKgotQEAgLTU3Myw5ICs2MzQsNiBAQCBpbnQgRVZQX0NJUEhFUl9DVFhf Y2xlYW51cChFVlBfQ0lQSEVSX0NUCi0gICAgICAgICAgKi8KLSAgICAgICAgIEVOR0lORV9maW5p c2goYy0+ZW5naW5lKTsKLSAjZW5kaWYKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIEZJUFNf Y2lwaGVyX2N0eF9jbGVhbnVwKGMpOwotLSNlbmRpZgotICAgICBtZW1zZXQoYywgMCwgc2l6ZW9m KEVWUF9DSVBIRVJfQ1RYKSk7Ci0gICAgIHJldHVybiAxOwotIH0KLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9ldnAvZXZwLmguZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2V2 cC5oCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9ldnAuaC5maXBzCTIwMTUtMDQtMjIg MTY6MDg6NDAuMTc0MjQyODYwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9l dnAuaAkyMDE1LTA0LTIyIDE2OjA4OjQwLjI4OTI0NTU4MyArMDIwMAotQEAgLTEyMyw2ICsxMjMs MTAgQEAKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLSAKLSsjIGlmZGVmIE9QRU5TU0xfRklQUwot KyMgIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyMgZW5kaWYKLSsKLSAvKgotICAqIFR5cGUg bmVlZHMgdG8gYmUgYSBiaXQgZmllbGQgU3ViLXR5cGUgbmVlZHMgdG8gYmUgZm9yIHZhcmlhdGlv bnMgb24gdGhlCi0gICogbWV0aG9kLCBhcyBpbiwgY2FuIGl0IGRvIGFyYml0cmFyeSBlbmNyeXB0 aW9uLi4uLgotQEAgLTI4NiwxMSArMjkwLDYgQEAgc3RydWN0IGVudl9tZF9jdHhfc3QgewotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogY2xlYW5lZCAq LwotICMgZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19SRVVTRSAgICAgICAgICAgMHgwMDA0LyogRG9u J3QgZnJlZSB1cCBjdHgtPm1kX2RhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqIGluIEVWUF9NRF9DVFhfY2xlYW51cCAqLwotLS8qCi0tICogRklQ UyBhbmQgcGFkIG9wdGlvbnMgYXJlIGlnbm9yZWQgaW4gMS4wLjAsIGRlZmluaXRpb25zIGFyZSBo ZXJlIHNvIHdlCi0tICogZG9uJ3QgYWNjaWRlbnRhbGx5IHJldXNlIHRoZSB2YWx1ZXMgZm9yIG90 aGVyIHB1cnBvc2VzLgotLSAqLwotLQotICMgZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19OT05fRklQ U19BTExPVyAgMHgwMDA4LyogQWxsb3cgdXNlIG9mIG5vbiBGSVBTCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkaWdlc3QgaW4gRklQUyBtb2RlICov Ci0gCi1AQCAtMzAzLDYgKzMwMiwxMCBAQCBzdHJ1Y3QgZW52X21kX2N0eF9zdCB7Ci0gIyBkZWZp bmUgRVZQX01EX0NUWF9GTEFHX1BBRF9QS0NTMSAgICAgICAweDAwLyogUEtDUyMxIHYxLjUgbW9k ZSAqLwotICMgZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSAgICAgICAgMHgxMC8qIFg5 LjMxIG1vZGUgKi8KLSAjIGRlZmluZSBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUyAgICAgICAgIDB4 MjAvKiBQU1MgbW9kZSAqLwotKyMgZGVmaW5lIE1fRVZQX01EX0NUWF9GTEFHX1BTU19TQUxUKGN0 eCkgXAotKyAgICAgICAgICAgICAgICAoKGN0eC0+ZmxhZ3M+PjE2KSAmMHhGRkZGKSAvKiBzZWVk IGxlbmd0aCAqLwotKyMgZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19QU1NfTURMRU4gICAgICAgMHhG RkZGLyogc2FsdCBsZW4gc2FtZSBhcyBkaWdlc3QgKi8KLSsjIGRlZmluZSBFVlBfTURfQ1RYX0ZM QUdfUFNTX01SRUMgICAgICAgIDB4RkZGRS8qIHNhbHQgbWF4IG9yIGF1dG8gcmVjb3ZlcmVkICov Ci0gCi0gIyBkZWZpbmUgRVZQX01EX0NUWF9GTEFHX05PX0lOSVQgICAgICAgICAweDAxMDAvKiBE b24ndCBpbml0aWFsaXplIG1kX2RhdGEgKi8KLSAKLUBAIC0zNjQsMTUgKzM2NywxNSBAQCBzdHJ1 Y3QgZXZwX2NpcGhlcl9zdCB7Ci0gLyogY2lwaGVyIGhhbmRsZXMgcmFuZG9tIGtleSBnZW5lcmF0 aW9uICovCi0gIyBkZWZpbmUgICAgICAgICBFVlBfQ0lQSF9SQU5EX0tFWSAgICAgICAgICAgICAg IDB4MjAwCi0gLyogY2lwaGVyIGhhcyBpdHMgb3duIGFkZGl0aW9uYWwgY29weWluZyBsb2dpYyAq LwotLSMgZGVmaW5lICAgICAgICAgRVZQX0NJUEhfQ1VTVE9NX0NPUFkgICAgICAgICAgICAweDQw MAotKyMgZGVmaW5lICAgICAgICAgRVZQX0NJUEhfQ1VTVE9NX0NPUFkgICAgICAgICAgICAweDQw MDAKLSAvKiBBbGxvdyB1c2UgZGVmYXVsdCBBU04xIGdldC9zZXQgaXYgKi8KLSAjIGRlZmluZSAg ICAgICAgIEVWUF9DSVBIX0ZMQUdfREVGQVVMVF9BU04xICAgICAgMHgxMDAwCi0gLyogQnVmZmVy IGxlbmd0aCBpbiBiaXRzIG5vdCBieXRlczogQ0ZCMSBtb2RlIG9ubHkgKi8KLSAjIGRlZmluZSAg ICAgICAgIEVWUF9DSVBIX0ZMQUdfTEVOR1RIX0JJVFMgICAgICAgMHgyMDAwCi0gLyogTm90ZSBp ZiBzdWl0YWJsZSBmb3IgdXNlIGluIEZJUFMgbW9kZSAqLwotLSMgZGVmaW5lICAgICAgICAgRVZQ X0NJUEhfRkxBR19GSVBTICAgICAgICAgICAgICAweDQwMDAKLSsjIGRlZmluZSAgICAgICAgIEVW UF9DSVBIX0ZMQUdfRklQUyAgICAgICAgICAgICAgMHg0MDAKLSAvKiBBbGxvdyBub24gRklQUyBj aXBoZXIgaW4gRklQUyBtb2RlICovCi0tIyBkZWZpbmUgICAgICAgICBFVlBfQ0lQSF9GTEFHX05P Tl9GSVBTX0FMTE9XICAgIDB4ODAwMAotKyMgZGVmaW5lICAgICAgICAgRVZQX0NJUEhfRkxBR19O T05fRklQU19BTExPVyAgICAweDgwMAotIC8qCi0gICogQ2lwaGVyIGhhbmRsZXMgYW55IGFuZCBh bGwgcGFkZGluZyBsb2dpYyBhcyB3ZWxsIGFzIGZpbmFsaXNhdGlvbi4KLSAgKi8KLWRpZmYgLXVw IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZXZwX2xpYi5jLmZpcHMgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2V2cC9ldnBfbGliLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL2V2cF9s aWIuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNz bC0xLjAuMmEvY3J5cHRvL2V2cC9ldnBfbGliLmMJMjAxNS0wNC0yMiAxNjoxMDo1OC4yOTc1MTMx NzAgKzAyMDAKLUBAIC02MCwxMCArNjAsNiBAQAotICNpbmNsdWRlICJjcnlwdGxpYi5oIgotICNp bmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotICNpbmNsdWRlIDxvcGVuc3NsL29iamVjdHMuaD4KLS0j aWZkZWYgT1BFTlNTTF9GSVBTCi0tIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLS0jIGluY2x1 ZGUgImV2cF9sb2NsLmgiCi0tI2VuZGlmCi0gCi0gaW50IEVWUF9DSVBIRVJfcGFyYW1fdG9fYXNu MShFVlBfQ0lQSEVSX0NUWCAqYywgQVNOMV9UWVBFICp0eXBlKQotIHsKLUBAIC0yMDAsNiArMTk2 LDkgQEAgaW50IEVWUF9DSVBIRVJfQ1RYX2Jsb2NrX3NpemUoY29uc3QgRVZQXwotIGludCBFVlBf Q2lwaGVyKEVWUF9DSVBIRVJfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwKLSAgICAgICAg ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgaW50IGlubCkKLSB7Ci0r I2lmZGVmIE9QRU5TU0xfRklQUwotKyAgICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7Ci0rI2VuZGlm Ci0gICAgIHJldHVybiBjdHgtPmNpcGhlci0+ZG9fY2lwaGVyKGN0eCwgb3V0LCBpbiwgaW5sKTsK LSB9Ci0gCi1AQCAtMjEwLDIyICsyMDksMTIgQEAgY29uc3QgRVZQX0NJUEhFUiAqRVZQX0NJUEhF Ul9DVFhfY2lwaGVyKAotIAotIHVuc2lnbmVkIGxvbmcgRVZQX0NJUEhFUl9mbGFncyhjb25zdCBF VlBfQ0lQSEVSICpjaXBoZXIpCi0gewotLSNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgY29uc3Qg RVZQX0NJUEhFUiAqZmNpcGhlcjsKLS0gICAgZmNpcGhlciA9IGV2cF9nZXRfZmlwc19jaXBoZXIo Y2lwaGVyKTsKLS0gICAgaWYgKGZjaXBoZXIgJiYgZmNpcGhlci0+ZmxhZ3MgJiBFVlBfQ0lQSF9G TEFHX0ZJUFMpCi0tICAgICAgICByZXR1cm4gY2lwaGVyLT5mbGFncyB8IEVWUF9DSVBIX0ZMQUdf RklQUzsKLS0jZW5kaWYKLSAgICAgcmV0dXJuIGNpcGhlci0+ZmxhZ3M7Ci0gfQotIAotIHVuc2ln bmVkIGxvbmcgRVZQX0NJUEhFUl9DVFhfZmxhZ3MoY29uc3QgRVZQX0NJUEhFUl9DVFggKmN0eCkK LSB7Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLSAgICByZXR1cm4gRVZQX0NJUEhFUl9mbGFncyhj dHgtPmNpcGhlcik7Ci0tI2Vsc2UKLSAgICAgcmV0dXJuIGN0eC0+Y2lwaGVyLT5mbGFnczsKLS0j ZW5kaWYKLSB9Ci0gCi0gdm9pZCAqRVZQX0NJUEhFUl9DVFhfZ2V0X2FwcF9kYXRhKGNvbnN0IEVW UF9DSVBIRVJfQ1RYICpjdHgpCi1AQCAtMjkyLDQwICsyODEsOCBAQCBpbnQgRVZQX01EX3NpemUo Y29uc3QgRVZQX01EICptZCkKLSAgICAgcmV0dXJuIG1kLT5tZF9zaXplOwotIH0KLSAKLS0jaWZk ZWYgT1BFTlNTTF9GSVBTCi0tCi0tY29uc3QgRVZQX01EICpldnBfZ2V0X2ZpcHNfbWQoY29uc3Qg RVZQX01EICptZCkKLS17Ci0tICAgIGludCBuaWQgPSBFVlBfTURfdHlwZShtZCk7Ci0tICAgIGlm IChuaWQgPT0gTklEX2RzYSkKLS0gICAgICAgIHJldHVybiBGSVBTX2V2cF9kc3MxKCk7Ci0tICAg IGVsc2UgaWYgKG5pZCA9PSBOSURfZHNhV2l0aFNIQSkKLS0gICAgICAgIHJldHVybiBGSVBTX2V2 cF9kc3MoKTsKLS0gICAgZWxzZSBpZiAobmlkID09IE5JRF9lY2RzYV93aXRoX1NIQTEpCi0tICAg ICAgICByZXR1cm4gRklQU19ldnBfZWNkc2EoKTsKLS0gICAgZWxzZQotLSAgICAgICAgcmV0dXJu IEZJUFNfZ2V0X2RpZ2VzdGJ5bmlkKG5pZCk7Ci0tfQotLQotLWNvbnN0IEVWUF9DSVBIRVIgKmV2 cF9nZXRfZmlwc19jaXBoZXIoY29uc3QgRVZQX0NJUEhFUiAqY2lwaGVyKQotLXsKLS0gICAgaW50 IG5pZCA9IGNpcGhlci0+bmlkOwotLSAgICBpZiAobmlkID09IE5JRF91bmRlZikKLS0gICAgICAg IHJldHVybiBGSVBTX2V2cF9lbmNfbnVsbCgpOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4g RklQU19nZXRfY2lwaGVyYnluaWQobmlkKTsKLS19Ci0tCi0tI2VuZGlmCi0tCi0gdW5zaWduZWQg bG9uZyBFVlBfTURfZmxhZ3MoY29uc3QgRVZQX01EICptZCkKLSB7Ci0tI2lmZGVmIE9QRU5TU0xf RklQUwotLSAgICBjb25zdCBFVlBfTUQgKmZtZDsKLS0gICAgZm1kID0gZXZwX2dldF9maXBzX21k KG1kKTsKLS0gICAgaWYgKGZtZCAmJiBmbWQtPmZsYWdzICYgRVZQX01EX0ZMQUdfRklQUykKLS0g ICAgICAgIHJldHVybiBtZC0+ZmxhZ3MgfCBFVlBfTURfRkxBR19GSVBTOwotLSNlbmRpZgotICAg ICByZXR1cm4gbWQtPmZsYWdzOwotIH0KLSAKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9ldnAvZXZwX2xvY2wuaC5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZXZwX2xvY2wu aAotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvZXZwX2xvY2wuaC5maXBzCTIwMTUtMDQt MjIgMTY6MDg6NDAuMTcwMjQyNzY2ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2 cC9ldnBfbG9jbC5oCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjg5MjQ1NTgzICswMjAwCi1AQCAtMjU4 LDEwICsyNTgsOCBAQCBjb25zdCBFVlBfQ0lQSEVSICpFVlBfIyNjbmFtZSMjX2VjYih2b2lkCi0g ICAgICAgICBCTE9DS19DSVBIRVJfZnVuY19jZmIoY2lwaGVyIyNfIyNrZXlzaXplLGNwcmVmaXgs Y2JpdHMsa3N0cnVjdCxrc2NoZWQpIFwKLSAgICAgICAgIEJMT0NLX0NJUEhFUl9kZWZfY2ZiKGNp cGhlciMjXyMja2V5c2l6ZSxrc3RydWN0LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOSURfIyNjaXBoZXIjI18jI2tleXNpemUsIGtleXNpemUvOCwgaXZfbGVuLCBjYml0cywgXAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgY2lwaGVyIyNfaW5pdF9rZXksIE5VTEws IFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9DSVBIRVJfc2V0X2FzbjFfaXYs IFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9DSVBIRVJfZ2V0X2FzbjFfaXYs IFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFVlBfQ0lQSF9GTEFHX0RFRkFVTFRfQVNOMSwgXAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2lwaGVyIyNfaW5pdF9rZXksIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEwpCi0gCi0gc3RydWN0IGV2cF9wa2V5X2N0eF9zdCB7Ci0gICAgIC8qIE1ldGhvZCBhc3NvY2lh dGVkIHdpdGggdGhpcyBvcGVyYXRpb24gKi8KLUBAIC0zNTUsMTEgKzM1Myw2IEBAIGNvbnN0IEVW UF9DSVBIRVIgKmV2cF9nZXRfZmlwc19jaXBoZXIoY28KLSAjIGRlZmluZSBNRDJfSW5pdCAgICAg ICAgcHJpdmF0ZV9NRDJfSW5pdAotICMgZGVmaW5lIE1EQzJfSW5pdCAgICAgICBwcml2YXRlX01E QzJfSW5pdAotICMgZGVmaW5lIFNIQV9Jbml0ICAgICAgICBwcml2YXRlX1NIQV9Jbml0Ci0tIyBk ZWZpbmUgU0hBMV9Jbml0ICAgICAgIHByaXZhdGVfU0hBMV9Jbml0Ci0tIyBkZWZpbmUgU0hBMjI0 X0luaXQgICAgIHByaXZhdGVfU0hBMjI0X0luaXQKLS0jIGRlZmluZSBTSEEyNTZfSW5pdCAgICAg cHJpdmF0ZV9TSEEyNTZfSW5pdAotLSMgZGVmaW5lIFNIQTM4NF9Jbml0ICAgICBwcml2YXRlX1NI QTM4NF9Jbml0Ci0tIyBkZWZpbmUgU0hBNTEyX0luaXQgICAgIHByaXZhdGVfU0hBNTEyX0luaXQK LSAKLSAjIGRlZmluZSBCRl9zZXRfa2V5ICAgICAgcHJpdmF0ZV9CRl9zZXRfa2V5Ci0gIyBkZWZp bmUgQ0FTVF9zZXRfa2V5ICAgIHByaXZhdGVfQ0FTVF9zZXRfa2V5Ci1AQCAtMzY3LDcgKzM2MCw2 IEBAIGNvbnN0IEVWUF9DSVBIRVIgKmV2cF9nZXRfZmlwc19jaXBoZXIoY28KLSAjIGRlZmluZSBT RUVEX3NldF9rZXkgICAgcHJpdmF0ZV9TRUVEX3NldF9rZXkKLSAjIGRlZmluZSBSQzJfc2V0X2tl eSAgICAgcHJpdmF0ZV9SQzJfc2V0X2tleQotICMgZGVmaW5lIFJDNF9zZXRfa2V5ICAgICBwcml2 YXRlX1JDNF9zZXRfa2V5Ci0tIyBkZWZpbmUgREVTX3NldF9rZXlfdW5jaGVja2VkICAgcHJpdmF0 ZV9ERVNfc2V0X2tleV91bmNoZWNrZWQKLSAjIGRlZmluZSBDYW1lbGxpYV9zZXRfa2V5ICAgICAg ICBwcml2YXRlX0NhbWVsbGlhX3NldF9rZXkKLSAKLSAjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9ldnAvbV9kc3MuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAv bV9kc3MuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvbV9kc3MuYy5maXBzCTIwMTUt MDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2V2cC9tX2Rzcy5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjkwMjQ1NjA3ICswMjAwCi1AQCAtODYs NyArODYsNyBAQCBzdGF0aWMgY29uc3QgRVZQX01EIGRzYV9tZCA9IHsKLSAgICAgTklEX2RzYVdp dGhTSEEsCi0gICAgIE5JRF9kc2FXaXRoU0hBLAotICAgICBTSEFfRElHRVNUX0xFTkdUSCwKLS0g ICAgRVZQX01EX0ZMQUdfUEtFWV9ESUdFU1QsCi0rICAgIEVWUF9NRF9GTEFHX1BLRVlfRElHRVNU IHwgRVZQX01EX0ZMQUdfRklQUywKLSAgICAgaW5pdCwKLSAgICAgdXBkYXRlLAotICAgICBmaW5h bCwKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvbV9kc3MxLmMuZmlwcyBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZXZwL21fZHNzMS5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2V2cC9tX2RzczEuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9tX2RzczEuYwkyMDE1LTA0LTIyIDE2OjA4OjQw LjI5MDI0NTYwNyArMDIwMAotQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGNvbnN0IEVWUF9NRCBk c3MxX21kID0gewotICAgICBOSURfZHNhLAotICAgICBOSURfZHNhV2l0aFNIQTEsCi0gICAgIFNI QV9ESUdFU1RfTEVOR1RILAotLSAgICBFVlBfTURfRkxBR19QS0VZX0RJR0VTVCwKLSsgICAgRVZQ X01EX0ZMQUdfUEtFWV9ESUdFU1QgfCBFVlBfTURfRkxBR19GSVBTLAotICAgICBpbml0LAotICAg ICB1cGRhdGUsCi0gICAgIGZpbmFsLAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2 cC9tX21kMi5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9tX21kMi5jCi0tLS0gb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9tX21kMi5jLmZpcHMJMjAxNS0wMy0xOSAxNDoxOTowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL21fbWQyLmMJMjAx NS0wNC0yMiAxNjowODo0MC4yOTAyNDU2MDcgKzAyMDAKLUBAIC02OCw2ICs2OCw3IEBACi0gIyBp Zm5kZWYgT1BFTlNTTF9OT19SU0EKLSAjICBpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgotICMgZW5k aWYKLSsjIGluY2x1ZGUgImV2cF9sb2NsLmgiCi0gCi0gc3RhdGljIGludCBpbml0KEVWUF9NRF9D VFggKmN0eCkKLSB7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL21fc2hhMS5j LmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9tX3NoYTEuYwotLS0tIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9ldnAvbV9zaGExLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAw MCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvbV9zaGExLmMJMjAxNS0wNC0y MiAxNjowODo0MC4yOTAyNDU2MDcgKzAyMDAKLUBAIC04Nyw3ICs4Nyw4IEBAIHN0YXRpYyBjb25z dCBFVlBfTUQgc2hhMV9tZCA9IHsKLSAgICAgTklEX3NoYTEsCi0gICAgIE5JRF9zaGExV2l0aFJT QUVuY3J5cHRpb24sCi0gICAgIFNIQV9ESUdFU1RfTEVOR1RILAotLSAgICBFVlBfTURfRkxBR19Q S0VZX01FVEhPRF9TSUdOQVRVUkUgfCBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQsCi0rICAg IEVWUF9NRF9GTEFHX1BLRVlfTUVUSE9EX1NJR05BVFVSRSB8IEVWUF9NRF9GTEFHX0RJR0FMR0lE X0FCU0VOVCB8Ci0rICAgICAgICBFVlBfTURfRkxBR19GSVBTLAotICAgICBpbml0LAotICAgICB1 cGRhdGUsCi0gICAgIGZpbmFsLAotQEAgLTEzNCw3ICsxMzUsOCBAQCBzdGF0aWMgY29uc3QgRVZQ X01EIHNoYTIyNF9tZCA9IHsKLSAgICAgTklEX3NoYTIyNCwKLSAgICAgTklEX3NoYTIyNFdpdGhS U0FFbmNyeXB0aW9uLAotICAgICBTSEEyMjRfRElHRVNUX0xFTkdUSCwKLS0gICAgRVZQX01EX0ZM QUdfUEtFWV9NRVRIT0RfU0lHTkFUVVJFIHwgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5ULAot KyAgICBFVlBfTURfRkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkUgfCBFVlBfTURfRkxBR19ESUdB TEdJRF9BQlNFTlQgfAotKyAgICAgICAgRVZQX01EX0ZMQUdfRklQUywKLSAgICAgaW5pdDIyNCwK LSAgICAgdXBkYXRlMjU2LAotICAgICBmaW5hbDI1NiwKLUBAIC0xNTQsNyArMTU2LDggQEAgc3Rh dGljIGNvbnN0IEVWUF9NRCBzaGEyNTZfbWQgPSB7Ci0gICAgIE5JRF9zaGEyNTYsCi0gICAgIE5J RF9zaGEyNTZXaXRoUlNBRW5jcnlwdGlvbiwKLSAgICAgU0hBMjU2X0RJR0VTVF9MRU5HVEgsCi0t ICAgIEVWUF9NRF9GTEFHX1BLRVlfTUVUSE9EX1NJR05BVFVSRSB8IEVWUF9NRF9GTEFHX0RJR0FM R0lEX0FCU0VOVCwKLSsgICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRIT0RfU0lHTkFUVVJFIHwgRVZQ X01EX0ZMQUdfRElHQUxHSURfQUJTRU5UIHwKLSsgICAgICAgIEVWUF9NRF9GTEFHX0ZJUFMsCi0g ICAgIGluaXQyNTYsCi0gICAgIHVwZGF0ZTI1NiwKLSAgICAgZmluYWwyNTYsCi1AQCAtMTk3LDcg KzIwMCw4IEBAIHN0YXRpYyBjb25zdCBFVlBfTUQgc2hhMzg0X21kID0gewotICAgICBOSURfc2hh Mzg0LAotICAgICBOSURfc2hhMzg0V2l0aFJTQUVuY3J5cHRpb24sCi0gICAgIFNIQTM4NF9ESUdF U1RfTEVOR1RILAotLSAgICBFVlBfTURfRkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkUgfCBFVlBf TURfRkxBR19ESUdBTEdJRF9BQlNFTlQsCi0rICAgIEVWUF9NRF9GTEFHX1BLRVlfTUVUSE9EX1NJ R05BVFVSRSB8IEVWUF9NRF9GTEFHX0RJR0FMR0lEX0FCU0VOVCB8Ci0rICAgICAgICBFVlBfTURf RkxBR19GSVBTLAotICAgICBpbml0Mzg0LAotICAgICB1cGRhdGU1MTIsCi0gICAgIGZpbmFsNTEy LAotQEAgLTIxNyw3ICsyMjEsOCBAQCBzdGF0aWMgY29uc3QgRVZQX01EIHNoYTUxMl9tZCA9IHsK LSAgICAgTklEX3NoYTUxMiwKLSAgICAgTklEX3NoYTUxMldpdGhSU0FFbmNyeXB0aW9uLAotICAg ICBTSEE1MTJfRElHRVNUX0xFTkdUSCwKLS0gICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRIT0RfU0lH TkFUVVJFIHwgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5ULAotKyAgICBFVlBfTURfRkxBR19Q S0VZX01FVEhPRF9TSUdOQVRVUkUgfCBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQgfAotKyAg ICAgICAgRVZQX01EX0ZMQUdfRklQUywKLSAgICAgaW5pdDUxMiwKLSAgICAgdXBkYXRlNTEyLAot ICAgICBmaW5hbDUxMiwKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvcF9zaWdu LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZXZwL3Bfc2lnbi5jCi0tLS0gb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2V2cC9wX3NpZ24uYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAw MDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9wX3NpZ24uYwkyMDE1LTA0 LTIyIDE2OjA4OjQwLjI5MDI0NTYwNyArMDIwMAotQEAgLTYxLDYgKzYxLDcgQEAKLSAjaW5jbHVk ZSA8b3BlbnNzbC9ldnAuaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+Ci0gI2luY2x1 ZGUgPG9wZW5zc2wveDUwOS5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgotIAotICNpZmRl ZiB1bmRlZgotIHZvaWQgRVZQX1NpZ25Jbml0KEVWUF9NRF9DVFggKmN0eCwgRVZQX01EICp0eXBl KQotQEAgLTEwMSw2ICsxMDIsMjIgQEAgaW50IEVWUF9TaWduRmluYWwoRVZQX01EX0NUWCAqY3R4 LCB1bnNpZwotICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICAgaWYgKEVWUF9QS0VZX0NU WF9zZXRfc2lnbmF0dXJlX21kKHBrY3R4LCBjdHgtPmRpZ2VzdCkgPD0gMCkKLSAgICAgICAgICAg ICBnb3RvIGVycjsKLSsgICAgICAgIGlmIChjdHgtPmZsYWdzICYgRVZQX01EX0NUWF9GTEFHX1BB RF9YOTMxKQotKyAgICAgICAgICAgIGlmIChFVlBfUEtFWV9DVFhfc2V0X3JzYV9wYWRkaW5nKHBr Y3R4LCBSU0FfWDkzMV9QQURESU5HKSA8PSAwKQotKyAgICAgICAgICAgICAgICBnb3RvIGVycjsK LSsgICAgICAgIGlmIChjdHgtPmZsYWdzICYgRVZQX01EX0NUWF9GTEFHX1BBRF9QU1MpIHsKLSsg ICAgICAgICAgICBpbnQgc2FsdGxlbjsKLSsgICAgICAgICAgICBpZiAoRVZQX1BLRVlfQ1RYX3Nl dF9yc2FfcGFkZGluZyhwa2N0eCwgUlNBX1BLQ1MxX1BTU19QQURESU5HKSA8PQotKyAgICAgICAg ICAgICAgICAwKQotKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgICAgICBzYWx0 bGVuID0gTV9FVlBfTURfQ1RYX0ZMQUdfUFNTX1NBTFQoY3R4KTsKLSsgICAgICAgICAgICBpZiAo c2FsdGxlbiA9PSBFVlBfTURfQ1RYX0ZMQUdfUFNTX01ETEVOKQotKyAgICAgICAgICAgICAgICBz YWx0bGVuID0gLTE7Ci0rICAgICAgICAgICAgZWxzZSBpZiAoc2FsdGxlbiA9PSBFVlBfTURfQ1RY X0ZMQUdfUFNTX01SRUMpCi0rICAgICAgICAgICAgICAgIHNhbHRsZW4gPSAtMjsKLSsgICAgICAg ICAgICBpZiAoRVZQX1BLRVlfQ1RYX3NldF9yc2FfcHNzX3NhbHRsZW4ocGtjdHgsIHNhbHRsZW4p IDw9IDApCi0rICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotKyAgICAgICAgfQotICAgICAgICAg aWYgKEVWUF9QS0VZX3NpZ24ocGtjdHgsIHNpZ3JldCwgJnNsdG1wLCBtLCBtX2xlbikgPD0gMCkK LSAgICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgICpzaWdsZW4gPSBzbHRtcDsKLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAvcF92ZXJpZnkuYy5maXBzIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9ldnAvcF92ZXJpZnkuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9ldnAv cF92ZXJpZnkuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCi0rKysg b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2V2cC9wX3ZlcmlmeS5jCTIwMTUtMDQtMjIgMTY6MDg6NDAu MjkwMjQ1NjA3ICswMjAwCi1AQCAtNjEsNiArNjEsNyBAQAotICNpbmNsdWRlIDxvcGVuc3NsL2V2 cC5oPgotICNpbmNsdWRlIDxvcGVuc3NsL29iamVjdHMuaD4KLSAjaW5jbHVkZSA8b3BlbnNzbC94 NTA5Lmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+Ci0gCi0gaW50IEVWUF9WZXJpZnlGaW5h bChFVlBfTURfQ1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNpZ2J1ZiwKLSAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzaWdsZW4sIEVWUF9QS0VZICpwa2V5KQotQEAgLTg3 LDYgKzg4LDIyIEBAIGludCBFVlBfVmVyaWZ5RmluYWwoRVZQX01EX0NUWCAqY3R4LCBjb24KLSAg ICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgIGlmIChFVlBfUEtFWV9DVFhfc2V0X3NpZ25h dHVyZV9tZChwa2N0eCwgY3R4LT5kaWdlc3QpIDw9IDApCi0gICAgICAgICAgICAgZ290byBlcnI7 Ci0rICAgICAgICBpZiAoY3R4LT5mbGFncyAmIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSkKLSsg ICAgICAgICAgICBpZiAoRVZQX1BLRVlfQ1RYX3NldF9yc2FfcGFkZGluZyhwa2N0eCwgUlNBX1g5 MzFfUEFERElORykgPD0gMCkKLSsgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICBp ZiAoY3R4LT5mbGFncyAmIEVWUF9NRF9DVFhfRkxBR19QQURfUFNTKSB7Ci0rICAgICAgICAgICAg aW50IHNhbHRsZW47Ci0rICAgICAgICAgICAgaWYgKEVWUF9QS0VZX0NUWF9zZXRfcnNhX3BhZGRp bmcocGtjdHgsIFJTQV9QS0NTMV9QU1NfUEFERElORykgPD0KLSsgICAgICAgICAgICAgICAgMCkK LSsgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICAgICAgc2FsdGxlbiA9IE1fRVZQ X01EX0NUWF9GTEFHX1BTU19TQUxUKGN0eCk7Ci0rICAgICAgICAgICAgaWYgKHNhbHRsZW4gPT0g RVZQX01EX0NUWF9GTEFHX1BTU19NRExFTikKLSsgICAgICAgICAgICAgICAgc2FsdGxlbiA9IC0x OwotKyAgICAgICAgICAgIGVsc2UgaWYgKHNhbHRsZW4gPT0gRVZQX01EX0NUWF9GTEFHX1BTU19N UkVDKQotKyAgICAgICAgICAgICAgICBzYWx0bGVuID0gLTI7Ci0rICAgICAgICAgICAgaWYgKEVW UF9QS0VZX0NUWF9zZXRfcnNhX3Bzc19zYWx0bGVuKHBrY3R4LCBzYWx0bGVuKSA8PSAwKQotKyAg ICAgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgIH0KLSAgICAgICAgIGkgPSBFVlBfUEtF WV92ZXJpZnkocGtjdHgsIHNpZ2J1Ziwgc2lnbGVuLCBtLCBtX2xlbik7Ci0gIGVycjoKLSAgICAg ICAgIEVWUF9QS0VZX0NUWF9mcmVlKHBrY3R4KTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9maXBzL2ZpcHNfYWVzX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v Zmlwcy9maXBzX2Flc19zZWxmdGVzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMv Zmlwc19hZXNfc2VsZnRlc3QuYy5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk0MjQ1NzAyICsw MjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19hZXNfc2VsZnRlc3QuYwky MDE1LTA0LTIyIDE2OjA4OjQwLjI5NDI0NTcwMiArMDIwMAotQEAgLTAsMCArMSwzNjUgQEAKLSsv KiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0 LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNh dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u cwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsg KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi b3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFu ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRp b24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVh dHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZv bGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNv ZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBp biB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0r ICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBt dXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl cml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBl cm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAg b3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBm cm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9y IG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRl bgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYu IFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBm b2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAg Zm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyki Ci0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pF Q1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICog UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBS T0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0Us IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB Q1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug T1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg U1VDSCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1 ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotKyMgaW5jbHVkZSA8b3Bl bnNzbC9maXBzLmg+Ci0rI2VuZGlmCi0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rCi0rI2lm ZGVmIE9QRU5TU0xfRklQUwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgewotKyAgICBjb25zdCB1bnNp Z25lZCBjaGFyIGtleVsxNl07Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGxhaW50ZXh0WzE2 XTsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciBjaXBoZXJ0ZXh0WzE2XTsKLSt9IHRlc3RzW10g PSB7Ci0rICAgIHsKLSsgICAgICAgIHsKLSsgICAgICAgIDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMs IDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCi0rICAgICAgICAgICAgICAgIDB4MDgsIDB4MDksIDB4 MEEsIDB4MEIsIDB4MEMsIDB4MEQsIDB4MEUsIDB4MEZ9LCB7Ci0rICAgICAgICAweDAwLCAweDEx LCAweDIyLCAweDMzLCAweDQ0LCAweDU1LCAweDY2LCAweDc3LAotKyAgICAgICAgICAgICAgICAw eDg4LCAweDk5LCAweEFBLCAweEJCLCAweENDLCAweERELCAweEVFLCAweEZGfSwgewotKzB4Njks IDB4QzQsIDB4RTAsIDB4RDgsIDB4NkEsIDB4N0IsIDB4MDQsIDB4MzAsCi0rICAgICAgICAgICAg ICAgIDB4RDgsIDB4Q0QsIDB4QjcsIDB4ODAsIDB4NzAsIDB4QjQsIDB4QzUsIDB4NUF9LH0sfTsK LSsKLStzdGF0aWMgaW50IGNvcnJ1cHRfYWVzOwotKwotK3ZvaWQgRklQU19jb3JydXB0X2Flcygp Ci0rewotKyAgICBjb3JydXB0X2FlcyA9IDE7Ci0rfQotKwotK2ludCBGSVBTX3NlbGZ0ZXN0X2Fl cygpCi0rewotKyAgICBpbnQgbjsKLSsgICAgaW50IHJldCA9IDA7Ci0rICAgIEVWUF9DSVBIRVJf Q1RYIGN0eDsKLSsgICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKLSsKLSsgICAgZm9yIChu ID0gMDsgbiA8IDE7ICsrbikgewotKyAgICAgICAgdW5zaWduZWQgY2hhciBrZXlbMTZdOwotKwot KyAgICAgICAgbWVtY3B5KGtleSwgdGVzdHNbbl0ua2V5LCBzaXplb2Yoa2V5KSk7Ci0rICAgICAg ICBpZiAoY29ycnVwdF9hZXMpCi0rICAgICAgICAgICAga2V5WzBdKys7Ci0rICAgICAgICBpZiAo Zmlwc19jaXBoZXJfdGVzdCgmY3R4LCBFVlBfYWVzXzEyOF9lY2IoKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGtleSwgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRlc3RzW25dLnBsYWludGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rz W25dLmNpcGhlcnRleHQsIDE2KSA8PSAwKQotKyAgICAgICAgICAgIGdvdG8gZXJyOwotKyAgICB9 Ci0rICAgIHJldCA9IDE7Ci0rIGVycjoKLSsgICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgmY3R4 KTsKLSsgICAgaWYgKHJldCA9PSAwKQotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19TRUxG VEVTVF9BRVMsIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOwotKyAgICByZXR1cm4gcmV0OwotK30K LSsKLSsvKiBBRVMtQ0NNIHRlc3QgZGF0YSBmcm9tIE5JU1QgcHVibGljIHRlc3QgdmVjdG9ycyAq LwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNjbV9rZXlbXSA9IHsKLSsgICAgMHhj ZSwgMHhiMCwgMHgwOSwgMHhhZSwgMHhhNCwgMHg0NSwgMHg0NCwgMHg1MSwgMHhmZSwgMHhhZCwg MHhmMCwgMHhlNiwKLSsgICAgMHhiMywgMHg2ZiwgMHg0NSwgMHg1NSwgMHg1ZCwgMHhkMCwgMHg0 NywgMHgyMywgMHhiYSwgMHhhNCwgMHg0OCwgMHhlOAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgY2NtX25vbmNlW10gPSB7Ci0rICAgIDB4NzYsIDB4NDAsIDB4NDMsIDB4YzQs IDB4OTQsIDB4NjAsIDB4YjcKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNj bV9hZGF0YVtdID0gewotKyAgICAweDZlLCAweDgwLCAweGRkLCAweDdmLCAweDFiLCAweGFkLCAw eGYzLCAweGExLCAweGM5LCAweGFiLCAweDI1LCAweGM3LAotKyAgICAweDVmLCAweDEwLCAweGJk LCAweGU3LCAweDhjLCAweDIzLCAweGZhLCAweDBlLCAweGI4LCAweGY5LCAweGFhLCAweGE1LAot KyAgICAweDNhLCAweGRlLCAweGZiLCAweGY0LCAweGNiLCAweGY3LCAweDhmLCAweGU0Ci0rfTsK LSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBjY21fcHRbXSA9IHsKLSsgICAgMHhjOCwg MHhkMiwgMHg3NSwgMHhmOSwgMHgxOSwgMHhlMSwgMHg3ZCwgMHg3ZiwgMHhlNiwgMHg5YywgMHgy YSwgMHgxZiwKLSsgICAgMHg1OCwgMHg5MywgMHg5ZCwgMHhmZSwgMHg0ZCwgMHg0MCwgMHgzNywg MHg5MSwgMHhiNSwgMHhkZiwgMHgxMywgMHgxMAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgY2NtX2N0W10gPSB7Ci0rICAgIDB4OGEsIDB4MGYsIDB4M2QsIDB4ODIsIDB4Mjks IDB4ZTQsIDB4OGUsIDB4NzQsIDB4ODcsIDB4ZmQsIDB4OTUsIDB4YTIsCi0rICAgIDB4OGEsIDB4 ZDMsIDB4OTIsIDB4YzgsIDB4MGIsIDB4MzYsIDB4ODEsIDB4ZDQsIDB4ZmIsIDB4YzcsIDB4YmIs IDB4ZmQKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNjbV90YWdbXSA9IHsK LSsgICAgMHgyZCwgMHhkNiwgMHhlZiwgMHgxYywgMHg0NSwgMHhkNCwgMHhjYywgMHhiNywgMHgy MywgMHhkYywgMHgwNywgMHg0NCwKLSsgICAgMHgxNCwgMHhkYiwgMHg1MCwgMHg2ZAotK307Ci0r Ci0raW50IEZJUFNfc2VsZnRlc3RfYWVzX2NjbSh2b2lkKQotK3sKLSsgICAgaW50IHJldCA9IDA7 Ci0rICAgIHVuc2lnbmVkIGNoYXIgb3V0WzEyOF0sIHRhZ1sxNl07Ci0rICAgIEVWUF9DSVBIRVJf Q1RYIGN0eDsKLSsgICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKLSsgICAgbWVtc2V0KG91 dCwgMCwgc2l6ZW9mKG91dCkpOwotKyAgICBpZiAoIUVWUF9DaXBoZXJJbml0X2V4KCZjdHgsIEVW UF9hZXNfMTkyX2NjbSgpLCBOVUxMLCBOVUxMLCBOVUxMLCAxKSkKLSsgICAgICAgIGdvdG8gZXJy OwotKyAgICBpZiAoIUVWUF9DSVBIRVJfQ1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxfQ0NNX1NFVF9J VkxFTiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihjY21fbm9uY2UpLCBO VUxMKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoIUVWUF9DSVBIRVJfQ1RYX2N0cmwo JmN0eCwgRVZQX0NUUkxfQ0NNX1NFVF9UQUcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YoY2NtX3RhZyksIE5VTEwpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICgh RVZQX0NpcGhlckluaXRfZXgoJmN0eCwgTlVMTCwgTlVMTCwgY2NtX2tleSwgY2NtX25vbmNlLCAx KSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4LCBOVUxMLCBO VUxMLCBzaXplb2YoY2NtX3B0KSkgIT0gc2l6ZW9mKGNjbV9wdCkpCi0rICAgICAgICBnb3RvIGVy cjsKLSsgICAgaWYgKEVWUF9DaXBoZXIoJmN0eCwgTlVMTCwgY2NtX2FkYXRhLCBzaXplb2YoY2Nt X2FkYXRhKSkgPCAwKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmIChFVlBfQ2lwaGVyKCZj dHgsIG91dCwgY2NtX3B0LCBzaXplb2YoY2NtX3B0KSkgIT0gc2l6ZW9mKGNjbV9jdCkpCi0rICAg ICAgICBnb3RvIGVycjsKLSsKLSsgICAgaWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJsKCZjdHgsIEVW UF9DVFJMX0NDTV9HRVRfVEFHLCAxNiwgdGFnKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBp ZiAobWVtY21wKHRhZywgY2NtX3RhZywgc2l6ZW9mKGNjbV90YWcpKQotKyAgICAgICAgfHwgbWVt Y21wKG91dCwgY2NtX2N0LCBzaXplb2YoY2NtX2N0KSkpCi0rICAgICAgICBnb3RvIGVycjsKLSsK LSsgICAgbWVtc2V0KG91dCwgMCwgc2l6ZW9mKG91dCkpOwotKwotKyAgICBpZiAoIUVWUF9DaXBo ZXJJbml0X2V4KCZjdHgsIEVWUF9hZXNfMTkyX2NjbSgpLCBOVUxMLCBOVUxMLCBOVUxMLCAwKSkK LSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoIUVWUF9DSVBIRVJfQ1RYX2N0cmwoJmN0eCwg RVZQX0NUUkxfQ0NNX1NFVF9JVkxFTiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVvZihjY21fbm9uY2UpLCBOVUxMKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoIUVW UF9DSVBIRVJfQ1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxfQ0NNX1NFVF9UQUcsIDE2LCB0YWcpKQot KyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgTlVM TCwgTlVMTCwgY2NtX2tleSwgY2NtX25vbmNlLCAwKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAg ICBpZiAoRVZQX0NpcGhlcigmY3R4LCBOVUxMLCBOVUxMLCBzaXplb2YoY2NtX2N0KSkgIT0gc2l6 ZW9mKGNjbV9jdCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKEVWUF9DaXBoZXIoJmN0 eCwgTlVMTCwgY2NtX2FkYXRhLCBzaXplb2YoY2NtX2FkYXRhKSkgPCAwKQotKyAgICAgICAgZ290 byBlcnI7Ci0rICAgIGlmIChFVlBfQ2lwaGVyKCZjdHgsIG91dCwgY2NtX2N0LCBzaXplb2YoY2Nt X2N0KSkgIT0gc2l6ZW9mKGNjbV9wdCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgaWYg KG1lbWNtcChvdXQsIGNjbV9wdCwgc2l6ZW9mKGNjbV9wdCkpKQotKyAgICAgICAgZ290byBlcnI7 Ci0rCi0rICAgIHJldCA9IDE7Ci0rCi0rIGVycjoKLSsgICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51 cCgmY3R4KTsKLSsKLSsgICAgaWYgKHJldCA9PSAwKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNf Rl9GSVBTX1NFTEZURVNUX0FFU19DQ00sIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOwotKyAgICAg ICAgcmV0dXJuIDA7Ci0rICAgIH0gZWxzZQotKyAgICAgICAgcmV0dXJuIHJldDsKLSsKLSt9Ci0r Ci0rLyogQUVTLUdDTSB0ZXN0IGRhdGEgZnJvbSBOSVNUIHB1YmxpYyB0ZXN0IHZlY3RvcnMgKi8K LSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBnY21fa2V5W10gPSB7Ci0rICAgIDB4ZWUs IDB4YmMsIDB4MWYsIDB4NTcsIDB4NDgsIDB4N2YsIDB4NTEsIDB4OTIsIDB4MWMsIDB4MDQsIDB4 NjUsIDB4NjYsCi0rICAgIDB4NWYsIDB4OGEsIDB4ZTYsIDB4ZDEsIDB4NjUsIDB4OGIsIDB4YjIs IDB4NmQsIDB4ZTYsIDB4ZjgsIDB4YTAsIDB4NjksCi0rICAgIDB4YTMsIDB4NTIsIDB4MDIsIDB4 OTMsIDB4YTUsIDB4NzIsIDB4MDcsIDB4OGYKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGdjbV9pdltdID0gewotKyAgICAweDk5LCAweGFhLCAweDNlLCAweDY4LCAweGVkLCAw eDgxLCAweDczLCAweGEwLCAweGVlLCAweGQwLCAweDY2LCAweDg0Ci0rfTsKLSsKLStzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBnY21fcHRbXSA9IHsKLSsgICAgMHhmNSwgMHg2ZSwgMHg4Nywg MHgwNSwgMHg1YiwgMHhjMywgMHgyZCwgMHgwZSwgMHhlYiwgMHgzMSwgMHhiMiwgMHhlYSwKLSsg ICAgMHhjYywgMHgyYiwgMHhmMiwgMHhhNQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgZ2NtX2FhZFtdID0gewotKyAgICAweDRkLCAweDIzLCAweGMzLCAweGNlLCAweGMzLCAw eDM0LCAweGI0LCAweDliLCAweGRiLCAweDM3LCAweDBjLCAweDQzLAotKyAgICAweDdmLCAweGVj LCAweDc4LCAweGRlCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBnY21fY3Rb XSA9IHsKLSsgICAgMHhmNywgMHgyNiwgMHg0NCwgMHgxMywgMHhhOCwgMHg0YywgMHgwZSwgMHg3 YywgMHhkNSwgMHgzNiwgMHg4NiwgMHg3ZSwKLSsgICAgMHhiOSwgMHhmMiwgMHgxNywgMHgzNgot K307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ2NtX3RhZ1tdID0gewotKyAgICAw eDY3LCAweGJhLCAweDA1LCAweDEwLCAweDI2LCAweDJhLCAweGU0LCAweDg3LCAweGQ3LCAweDM3 LCAweGVlLCAweDYyLAotKyAgICAweDk4LCAweGY3LCAweDdlLCAweDBjCi0rfTsKLSsKLStpbnQg RklQU19zZWxmdGVzdF9hZXNfZ2NtKHZvaWQpCi0rewotKyAgICBpbnQgcmV0ID0gMDsKLSsgICAg dW5zaWduZWQgY2hhciBvdXRbMTI4XSwgdGFnWzE2XTsKLSsgICAgRVZQX0NJUEhFUl9DVFggY3R4 OwotKyAgICBFVlBfQ0lQSEVSX0NUWF9pbml0KCZjdHgpOwotKyAgICBtZW1zZXQob3V0LCAwLCBz aXplb2Yob3V0KSk7Ci0rICAgIG1lbXNldCh0YWcsIDAsIHNpemVvZih0YWcpKTsKLSsgICAgaWYg KCFFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBfYWVzXzI1Nl9nY20oKSwgTlVMTCwgTlVMTCwg TlVMTCwgMSkpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKCFFVlBfQ0lQSEVSX0NUWF9j dHJsKCZjdHgsIEVWUF9DVFJMX0dDTV9TRVRfSVZMRU4sCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2YoZ2NtX2l2KSwgTlVMTCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAg aWYgKCFFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBOVUxMLCBOVUxMLCBnY21fa2V5LCBnY21faXYs IDEpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEws IGdjbV9hYWQsIHNpemVvZihnY21fYWFkKSkgPCAwKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAg IGlmIChFVlBfQ2lwaGVyKCZjdHgsIG91dCwgZ2NtX3B0LCBzaXplb2YoZ2NtX3B0KSkgIT0gc2l6 ZW9mKGdjbV9jdCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKEVWUF9DaXBoZXIoJmN0 eCwgTlVMTCwgTlVMTCwgMCkgPCAwKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGlmICgh RVZQX0NJUEhFUl9DVFhfY3RybCgmY3R4LCBFVlBfQ1RSTF9HQ01fR0VUX1RBRywgMTYsIHRhZykp Ci0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgaWYgKG1lbWNtcCh0YWcsIGdjbV90YWcsIDE2 KSB8fCBtZW1jbXAob3V0LCBnY21fY3QsIDE2KSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAg ICBtZW1zZXQob3V0LCAwLCBzaXplb2Yob3V0KSk7Ci0rCi0rICAgIGlmICghRVZQX0NpcGhlcklu aXRfZXgoJmN0eCwgRVZQX2Flc18yNTZfZ2NtKCksIE5VTEwsIE5VTEwsIE5VTEwsIDApKQotKyAg ICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghRVZQX0NJUEhFUl9DVFhfY3RybCgmY3R4LCBFVlBf Q1RSTF9HQ01fU0VUX0lWTEVOLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m KGdjbV9pdiksIE5VTEwpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghRVZQX0NJUEhF Ul9DVFhfY3RybCgmY3R4LCBFVlBfQ1RSTF9HQ01fU0VUX1RBRywgMTYsIHRhZykpCi0rICAgICAg ICBnb3RvIGVycjsKLSsgICAgaWYgKCFFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBOVUxMLCBOVUxM LCBnY21fa2V5LCBnY21faXYsIDApKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmIChFVlBf Q2lwaGVyKCZjdHgsIE5VTEwsIGdjbV9hYWQsIHNpemVvZihnY21fYWFkKSkgPCAwKQotKyAgICAg ICAgZ290byBlcnI7Ci0rICAgIGlmIChFVlBfQ2lwaGVyKCZjdHgsIG91dCwgZ2NtX2N0LCBzaXpl b2YoZ2NtX2N0KSkgIT0gc2l6ZW9mKGdjbV9wdCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAg aWYgKEVWUF9DaXBoZXIoJmN0eCwgTlVMTCwgTlVMTCwgMCkgPCAwKQotKyAgICAgICAgZ290byBl cnI7Ci0rCi0rICAgIGlmIChtZW1jbXAob3V0LCBnY21fcHQsIDE2KSkKLSsgICAgICAgIGdvdG8g ZXJyOwotKwotKyAgICByZXQgPSAxOwotKwotKyBlcnI6Ci0rICAgIEVWUF9DSVBIRVJfQ1RYX2Ns ZWFudXAoJmN0eCk7Ci0rCi0rICAgIGlmIChyZXQgPT0gMCkgewotKyAgICAgICAgRklQU2VycihG SVBTX0ZfRklQU19TRUxGVEVTVF9BRVNfR0NNLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsg ICAgICAgIHJldHVybiAwOwotKyAgICB9IGVsc2UKLSsgICAgICAgIHJldHVybiByZXQ7Ci0rCi0r fQotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFhUU18xMjhfa2V5W10gPSB7Ci0rICAg IDB4YTEsIDB4YjksIDB4MGMsIDB4YmEsIDB4M2YsIDB4MDYsIDB4YWMsIDB4MzUsIDB4M2IsIDB4 MmMsIDB4MzQsIDB4MzgsCi0rICAgIDB4NzYsIDB4MDgsIDB4MTcsIDB4NjIsIDB4MDksIDB4MDks IDB4MjMsIDB4MDIsIDB4NmUsIDB4OTEsIDB4NzcsIDB4MTgsCi0rICAgIDB4MTUsIDB4ZjIsIDB4 OWQsIDB4YWIsIDB4MDEsIDB4OTMsIDB4MmYsIDB4MmYKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIFhUU18xMjhfaVtdID0gewotKyAgICAweDRmLCAweGFlLCAweGY3LCAweDEx LCAweDdjLCAweGRhLCAweDU5LCAweGM2LCAweDZlLCAweDRiLCAweDkyLCAweDAxLAotKyAgICAw eDNlLCAweDc2LCAweDhhLCAweGQ1Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBYVFNfMTI4X3B0W10gPSB7Ci0rICAgIDB4ZWIsIDB4YWIsIDB4Y2UsIDB4OTUsIDB4YjEsIDB4 NGQsIDB4M2MsIDB4OGQsIDB4NmYsIDB4YjMsIDB4NTAsIDB4MzksCi0rICAgIDB4MDcsIDB4OTAs IDB4MzEsIDB4MWMKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFhUU18xMjhf Y3RbXSA9IHsKLSsgICAgMHg3NywgMHg4YSwgMHhlOCwgMHhiNCwgMHgzYywgMHhiOSwgMHg4ZCwg MHg1YSwgMHg4MiwgMHg1MCwgMHg4MSwgMHhkNSwKLSsgICAgMHhiZSwgMHg0NywgMHgxYywgMHg2 MwotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgWFRTXzI1Nl9rZXlbXSA9IHsK LSsgICAgMHgxZSwgMHhhNiwgMHg2MSwgMHhjNSwgMHg4ZCwgMHg5NCwgMHgzYSwgMHgwZSwgMHg0 OCwgMHgwMSwgMHhlNCwgMHgyZiwKLSsgICAgMHg0YiwgMHgwOSwgMHg0NywgMHgxNCwgMHg5ZSwg MHg3ZiwgMHg5ZiwgMHg4ZSwgMHgzZSwgMHg2OCwgMHhkMCwgMHhjNywKLSsgICAgMHg1MCwgMHg1 MiwgMHgxMCwgMHhiZCwgMHgzMSwgMHgxYSwgMHgwZSwgMHg3YywgMHhkNiwgMHhlMSwgMHgzZiwg MHhmZCwKLSsgICAgMHhmMiwgMHg0MSwgMHg4ZCwgMHg4ZCwgMHgxOSwgMHgxMSwgMHhjMCwgMHgw NCwgMHhjZCwgMHhhNSwgMHg4ZCwgMHhhMywKLSsgICAgMHhkNiwgMHgxOSwgMHhiNywgMHhlMiwg MHhiOSwgMHgxNCwgMHgxZSwgMHg1OCwgMHgzMSwgMHg4ZSwgMHhlYSwgMHgzOSwKLSsgICAgMHgy YywgMHhmNCwgMHgxYiwgMHgwOAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg WFRTXzI1Nl9pW10gPSB7Ci0rICAgIDB4YWQsIDB4ZjgsIDB4ZDksIDB4MjYsIDB4MjcsIDB4NDYs IDB4NGEsIDB4ZDIsIDB4ZjAsIDB4NDIsIDB4OGUsIDB4ODQsCi0rICAgIDB4YTksIDB4ZjgsIDB4 NzUsIDB4NjQKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFhUU18yNTZfcHRb XSA9IHsKLSsgICAgMHgyZSwgMHhlZCwgMHhlYSwgMHg1MiwgMHhjZCwgMHg4MiwgMHgxNSwgMHhl MSwgMHhhYywgMHhjNiwgMHg0NywgMHhlOCwKLSsgICAgMHgxMCwgMHhiYiwgMHhjMywgMHg2NCwg MHgyZSwgMHg4NywgMHgyOCwgMHg3ZiwgMHg4ZCwgMHgyZSwgMHg1NywgMHhlMywKLSsgICAgMHg2 YywgMHgwYSwgMHgyNCwgMHhmYiwgMHhjMSwgMHgyYSwgMHgyMCwgMHgyZQotK307Ci0rCi0rc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgWFRTXzI1Nl9jdFtdID0gewotKyAgICAweGNiLCAweGFh LCAweGQwLCAweGUyLCAweGY2LCAweGNlLCAweGEzLCAweGY1LCAweDBiLCAweDM3LCAweGY5LCAw eDM0LAotKyAgICAweGQ0LCAweDZhLCAweDliLCAweDEzLCAweDBiLCAweDlkLCAweDU0LCAweGYw LCAweDdlLCAweDM0LCAweGYzLCAweDZhLAotKyAgICAweGY3LCAweDkzLCAweGU4LCAweDZmLCAw eDczLCAweGM2LCAweGQ3LCAweGRiCi0rfTsKLSsKLStpbnQgRklQU19zZWxmdGVzdF9hZXNfeHRz KCkKLSt7Ci0rICAgIGludCByZXQgPSAxOwotKyAgICBFVlBfQ0lQSEVSX0NUWCBjdHg7Ci0rICAg IEVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0eCk7Ci0rCi0rICAgIGlmIChmaXBzX2NpcGhlcl90ZXN0 KCZjdHgsIEVWUF9hZXNfMTI4X3h0cygpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBYVFNf MTI4X2tleSwgWFRTXzEyOF9pLCBYVFNfMTI4X3B0LCBYVFNfMTI4X2N0LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YoWFRTXzEyOF9wdCkpIDw9IDApCi0rICAgICAgICByZXQgPSAw OwotKwotKyAgICBpZiAoZmlwc19jaXBoZXJfdGVzdCgmY3R4LCBFVlBfYWVzXzI1Nl94dHMoKSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgWFRTXzI1Nl9rZXksIFhUU18yNTZfaSwgWFRTXzI1 Nl9wdCwgWFRTXzI1Nl9jdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhUU18y NTZfcHQpKSA8PSAwKQotKyAgICAgICAgcmV0ID0gMDsKLSsKLSsgICAgRVZQX0NJUEhFUl9DVFhf Y2xlYW51cCgmY3R4KTsKLSsgICAgaWYgKHJldCA9PSAwKQotKyAgICAgICAgRklQU2VycihGSVBT X0ZfRklQU19TRUxGVEVTVF9BRVNfWFRTLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsgICAg cmV0dXJuIHJldDsKLSt9Ci0rCi0rI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZmlwcy9maXBzLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzLmMKLS0t LSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzLmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4 OjQwLjI5NDI0NTcwMiArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHMu YwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NDI0NTcwMiArMDIwMAotQEAgLTAsMCArMSw0ODMgQEAK LSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9q ZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoK LSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl IGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmli dXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcg ZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhl IGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVz IHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVz ZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAq Ci0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0 IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVu IHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICog ICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZl ZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAg bm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3Jp dHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAq IDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRo ZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0 IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICog ICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3Jn LykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBS T0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5U SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0r ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NM IFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBS T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBV U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dF VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O VFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO Q0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkg T0YgU1VDSCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0rCi0r I2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5o PgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Jpby5oPgot KyNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KLSsj aW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotKyNpbmNsdWRlIDxkbGZj bi5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVk ZSAiZmlwc19sb2NsLmgiCi0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwotKyMgaW5jbHVkZSA8 b3BlbnNzbC9maXBzLmg+Ci0rCi0rIyBpZm5kZWYgUEFUSF9NQVgKLSsjICBkZWZpbmUgUEFUSF9N QVggMTAyNAotKyMgZW5kaWYKLSsKLStzdGF0aWMgaW50IGZpcHNfc2VsZnRlc3RfZmFpbCA9IDA7 Ci0rc3RhdGljIGludCBmaXBzX21vZGUgPSAwOwotK3N0YXRpYyBpbnQgZmlwc19zdGFydGVkID0g MDsKLSsKLStzdGF0aWMgaW50IGZpcHNfaXNfb3duaW5nX3RocmVhZCh2b2lkKTsKLStzdGF0aWMg aW50IGZpcHNfc2V0X293bmluZ190aHJlYWQodm9pZCk7Ci0rc3RhdGljIGludCBmaXBzX2NsZWFy X293bmluZ190aHJlYWQodm9pZCk7Ci0rCi0rIyBkZWZpbmUgZmlwc193X2xvY2soKSAgIENSWVBU T193X2xvY2soQ1JZUFRPX0xPQ0tfRklQUykKLSsjIGRlZmluZSBmaXBzX3dfdW5sb2NrKCkgQ1JZ UFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX0ZJUFMpCi0rIyBkZWZpbmUgZmlwc19yX2xvY2soKSAg IENSWVBUT19yX2xvY2soQ1JZUFRPX0xPQ0tfRklQUykKLSsjIGRlZmluZSBmaXBzX3JfdW5sb2Nr KCkgQ1JZUFRPX3JfdW5sb2NrKENSWVBUT19MT0NLX0ZJUFMpCi0rCi0rc3RhdGljIHZvaWQgZmlw c19zZXRfbW9kZShpbnQgb25vZmYpCi0rewotKyAgICBpbnQgb3duaW5nX3RocmVhZCA9IGZpcHNf aXNfb3duaW5nX3RocmVhZCgpOwotKwotKyAgICBpZiAoZmlwc19zdGFydGVkKSB7Ci0rICAgICAg ICBpZiAoIW93bmluZ190aHJlYWQpCi0rICAgICAgICAgICAgZmlwc193X2xvY2soKTsKLSsgICAg ICAgIGZpcHNfbW9kZSA9IG9ub2ZmOwotKyAgICAgICAgaWYgKCFvd25pbmdfdGhyZWFkKQotKyAg ICAgICAgICAgIGZpcHNfd191bmxvY2soKTsKLSsgICAgfQotK30KLSsKLStpbnQgRklQU19tb2R1 bGVfbW9kZSh2b2lkKQotK3sKLSsgICAgaW50IHJldCA9IDA7Ci0rICAgIGludCBvd25pbmdfdGhy ZWFkID0gZmlwc19pc19vd25pbmdfdGhyZWFkKCk7Ci0rCi0rICAgIGlmIChmaXBzX3N0YXJ0ZWQp IHsKLSsgICAgICAgIGlmICghb3duaW5nX3RocmVhZCkKLSsgICAgICAgICAgICBmaXBzX3JfbG9j aygpOwotKyAgICAgICAgcmV0ID0gZmlwc19tb2RlOwotKyAgICAgICAgaWYgKCFvd25pbmdfdGhy ZWFkKQotKyAgICAgICAgICAgIGZpcHNfcl91bmxvY2soKTsKLSsgICAgfQotKyAgICByZXR1cm4g cmV0OwotK30KLSsKLStpbnQgRklQU19zZWxmdGVzdF9mYWlsZWQodm9pZCkKLSt7Ci0rICAgIGlu dCByZXQgPSAwOwotKyAgICBpZiAoZmlwc19zdGFydGVkKSB7Ci0rICAgICAgICBpbnQgb3duaW5n X3RocmVhZCA9IGZpcHNfaXNfb3duaW5nX3RocmVhZCgpOwotKwotKyAgICAgICAgaWYgKCFvd25p bmdfdGhyZWFkKQotKyAgICAgICAgICAgIGZpcHNfcl9sb2NrKCk7Ci0rICAgICAgICByZXQgPSBm aXBzX3NlbGZ0ZXN0X2ZhaWw7Ci0rICAgICAgICBpZiAoIW93bmluZ190aHJlYWQpCi0rICAgICAg ICAgICAgZmlwc19yX3VubG9jaygpOwotKyAgICB9Ci0rICAgIHJldHVybiByZXQ7Ci0rfQotKwot Ky8qIFNlbGZ0ZXN0IGZhaWx1cmUgZmF0YWwgZXhpdCByb3V0aW5lLiBUaGlzIHdpbGwgYmUgY2Fs bGVkCi0rICogZHVyaW5nICphbnkqIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uLiBJdCBoYXMgdGhl IG1pbmltdW0KLSsgKiBvdmVyaGVhZCBwb3NzaWJsZSB0byBhdm9pZCB0b28gYmlnIGEgcGVyZm9y bWFuY2UgaGl0LgotKyAqLwotKwotK3ZvaWQgRklQU19zZWxmdGVzdF9jaGVjayh2b2lkKQotK3sK LSsgICAgaWYgKGZpcHNfc2VsZnRlc3RfZmFpbCkgewotKyAgICAgICAgT3BlblNTTERpZShfX0ZJ TEVfXywgX19MSU5FX18sICJGQVRBTCBGSVBTIFNFTEZURVNUIEZBSUxVUkUiKTsKLSsgICAgfQot K30KLSsKLSt2b2lkIGZpcHNfc2V0X3NlbGZ0ZXN0X2ZhaWwodm9pZCkKLSt7Ci0rICAgIGZpcHNf c2VsZnRlc3RfZmFpbCA9IDE7Ci0rfQotKwotKy8qIHdlIGltcGxlbWVudCB3aGF0IGxpYmZpcHNj aGVjayBkb2VzIG91cnNlbHZlcyAqLwotKwotK3N0YXRpYyBpbnQKLStnZXRfbGlicmFyeV9wYXRo KGNvbnN0IGNoYXIgKmxpYm5hbWUsIGNvbnN0IGNoYXIgKnN5bWJvbG5hbWUsIGNoYXIgKnBhdGgs Ci0rICAgICAgICAgICAgICAgICBzaXplX3QgcGF0aGxlbikKLSt7Ci0rICAgIERsX2luZm8gaW5m bzsKLSsgICAgdm9pZCAqZGwsICpzeW07Ci0rICAgIGludCBydiA9IC0xOwotKwotKyAgICBkbCA9 IGRsb3BlbihsaWJuYW1lLCBSVExEX0xBWlkpOwotKyAgICBpZiAoZGwgPT0gTlVMTCkgewotKyAg ICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rCi0rICAgIHN5bSA9IGRsc3ltKGRsLCBzeW1ib2xu YW1lKTsKLSsKLSsgICAgaWYgKHN5bSAhPSBOVUxMICYmIGRsYWRkcihzeW0sICZpbmZvKSkgewot KyAgICAgICAgc3RybmNweShwYXRoLCBpbmZvLmRsaV9mbmFtZSwgcGF0aGxlbiAtIDEpOwotKyAg ICAgICAgcGF0aFtwYXRobGVuIC0gMV0gPSAnXDAnOwotKyAgICAgICAgcnYgPSAwOwotKyAgICB9 Ci0rCi0rICAgIGRsY2xvc2UoZGwpOwotKwotKyAgICByZXR1cm4gcnY7Ci0rfQotKwotK3N0YXRp YyBjb25zdCBjaGFyIGNvbnZbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKLSsKLStzdGF0aWMgY2hh ciAqYmluMmhleCh2b2lkICpidWYsIHNpemVfdCBsZW4pCi0rewotKyAgICBjaGFyICpoZXgsICpw OwotKyAgICB1bnNpZ25lZCBjaGFyICpzcmMgPSBidWY7Ci0rCi0rICAgIGhleCA9IG1hbGxvYyhs ZW4gKiAyICsgMSk7Ci0rICAgIGlmIChoZXggPT0gTlVMTCkKLSsgICAgICAgIHJldHVybiBOVUxM OwotKwotKyAgICBwID0gaGV4OwotKwotKyAgICB3aGlsZSAobGVuID4gMCkgewotKyAgICAgICAg dW5zaWduZWQgYzsKLSsKLSsgICAgICAgIGMgPSAqc3JjOwotKyAgICAgICAgc3JjKys7Ci0rCi0r ICAgICAgICAqcCA9IGNvbnZbYyA+PiA0XTsKLSsgICAgICAgICsrcDsKLSsgICAgICAgICpwID0g Y29udltjICYgMHgwZl07Ci0rICAgICAgICArK3A7Ci0rICAgICAgICAtLWxlbjsKLSsgICAgfQot KyAgICAqcCA9ICdcMCc7Ci0rICAgIHJldHVybiBoZXg7Ci0rfQotKwotKyMgZGVmaW5lIEhNQUNf UFJFRklYICIuIgotKyMgZGVmaW5lIEhNQUNfU1VGRklYICIuaG1hYyIKLSsjIGRlZmluZSBSRUFE X0JVRkZFUl9MRU5HVEggMTYzODQKLSsKLStzdGF0aWMgY2hhciAqbWFrZV9obWFjX3BhdGgoY29u c3QgY2hhciAqb3JpZ3BhdGgpCi0rewotKyAgICBjaGFyICpwYXRoLCAqcDsKLSsgICAgY29uc3Qg Y2hhciAqZm47Ci0rCi0rICAgIHBhdGggPQotKyAgICAgICAgbWFsbG9jKHNpemVvZihITUFDX1BS RUZJWCkgKyBzaXplb2YoSE1BQ19TVUZGSVgpICsgc3RybGVuKG9yaWdwYXRoKSk7Ci0rICAgIGlm IChwYXRoID09IE5VTEwpIHsKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICAg IGZuID0gc3RycmNocihvcmlncGF0aCwgJy8nKTsKLSsgICAgaWYgKGZuID09IE5VTEwpIHsKLSsg ICAgICAgIGZuID0gb3JpZ3BhdGg7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICArK2ZuOwotKyAg ICB9Ci0rCi0rICAgIHN0cm5jcHkocGF0aCwgb3JpZ3BhdGgsIGZuIC0gb3JpZ3BhdGgpOwotKyAg ICBwID0gcGF0aCArIChmbiAtIG9yaWdwYXRoKTsKLSsgICAgcCA9IHN0cGNweShwLCBITUFDX1BS RUZJWCk7Ci0rICAgIHAgPSBzdHBjcHkocCwgZm4pOwotKyAgICBwID0gc3RwY3B5KHAsIEhNQUNf U1VGRklYKTsKLSsKLSsgICAgcmV0dXJuIHBhdGg7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBjaGFy IGhtYWNrZXlbXSA9ICJvcmJvRGVKSVRJVGVqc2lycEFET05pdmlycFVrdmFyUCI7Ci0rCi0rc3Rh dGljIGludCBjb21wdXRlX2ZpbGVfaG1hYyhjb25zdCBjaGFyICpwYXRoLCB2b2lkICoqYnVmLCBz aXplX3QgKmhtYWNsZW4pCi0rewotKyAgICBGSUxFICpmID0gTlVMTDsKLSsgICAgaW50IHJ2ID0g LTE7Ci0rICAgIHVuc2lnbmVkIGNoYXIgcmJ1ZltSRUFEX0JVRkZFUl9MRU5HVEhdOwotKyAgICBz aXplX3QgbGVuOwotKyAgICB1bnNpZ25lZCBpbnQgaGxlbjsKLSsgICAgSE1BQ19DVFggYzsKLSsK LSsgICAgSE1BQ19DVFhfaW5pdCgmYyk7Ci0rCi0rICAgIGYgPSBmb3BlbihwYXRoLCAiciIpOwot KwotKyAgICBpZiAoZiA9PSBOVUxMKSB7Ci0rICAgICAgICBnb3RvIGVuZDsKLSsgICAgfQotKwot KyAgICBITUFDX0luaXQoJmMsIGhtYWNrZXksIHNpemVvZihobWFja2V5KSAtIDEsIEVWUF9zaGEy NTYoKSk7Ci0rCi0rICAgIHdoaWxlICgobGVuID0gZnJlYWQocmJ1ZiwgMSwgc2l6ZW9mKHJidWYp LCBmKSkgIT0gMCkgewotKyAgICAgICAgSE1BQ19VcGRhdGUoJmMsIHJidWYsIGxlbik7Ci0rICAg IH0KLSsKLSsgICAgbGVuID0gc2l6ZW9mKHJidWYpOwotKyAgICAvKiByZXVzZSByYnVmIGZvciBo bWFjICovCi0rICAgIEhNQUNfRmluYWwoJmMsIHJidWYsICZobGVuKTsKLSsKLSsgICAgKmJ1ZiA9 IG1hbGxvYyhobGVuKTsKLSsgICAgaWYgKCpidWYgPT0gTlVMTCkgewotKyAgICAgICAgZ290byBl bmQ7Ci0rICAgIH0KLSsKLSsgICAgKmhtYWNsZW4gPSBobGVuOwotKwotKyAgICBtZW1jcHkoKmJ1 ZiwgcmJ1ZiwgaGxlbik7Ci0rCi0rICAgIHJ2ID0gMDsKLSsgZW5kOgotKyAgICBITUFDX0NUWF9j bGVhbnVwKCZjKTsKLSsKLSsgICAgaWYgKGYpCi0rICAgICAgICBmY2xvc2UoZik7Ci0rCi0rICAg IHJldHVybiBydjsKLSt9Ci0rCi0rc3RhdGljIGludCBGSVBTQ0hFQ0tfdmVyaWZ5KGNvbnN0IGNo YXIgKmxpYm5hbWUsIGNvbnN0IGNoYXIgKnN5bWJvbG5hbWUpCi0rewotKyAgICBjaGFyIHBhdGhb UEFUSF9NQVggKyAxXTsKLSsgICAgaW50IHJ2OwotKyAgICBGSUxFICpoZjsKLSsgICAgY2hhciAq aG1hY3BhdGgsICpwOwotKyAgICBjaGFyICpobWFjID0gTlVMTDsKLSsgICAgc2l6ZV90IG47Ci0r Ci0rICAgIHJ2ID0gZ2V0X2xpYnJhcnlfcGF0aChsaWJuYW1lLCBzeW1ib2xuYW1lLCBwYXRoLCBz aXplb2YocGF0aCkpOwotKwotKyAgICBpZiAocnYgPCAwKQotKyAgICAgICAgcmV0dXJuIDA7Ci0r Ci0rICAgIGhtYWNwYXRoID0gbWFrZV9obWFjX3BhdGgocGF0aCk7Ci0rICAgIGlmIChobWFjcGF0 aCA9PSBOVUxMKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rCi0rICAgIGhmID0gZm9wZW4oaG1hY3Bh dGgsICJyIik7Ci0rICAgIGlmIChoZiA9PSBOVUxMKSB7Ci0rICAgICAgICBmcmVlKGhtYWNwYXRo KTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICAgIGlmIChnZXRsaW5lKCZobWFj LCAmbiwgaGYpID4gMCkgewotKyAgICAgICAgdm9pZCAqYnVmOwotKyAgICAgICAgc2l6ZV90IGht YWNsZW47Ci0rICAgICAgICBjaGFyICpoZXg7Ci0rCi0rICAgICAgICBpZiAoKHAgPSBzdHJjaHIo aG1hYywgJ1xuJykpICE9IE5VTEwpCi0rICAgICAgICAgICAgKnAgPSAnXDAnOwotKwotKyAgICAg ICAgaWYgKGNvbXB1dGVfZmlsZV9obWFjKHBhdGgsICZidWYsICZobWFjbGVuKSA8IDApIHsKLSsg ICAgICAgICAgICBydiA9IC00OwotKyAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICAgICAgfQot KwotKyAgICAgICAgaWYgKChoZXggPSBiaW4yaGV4KGJ1ZiwgaG1hY2xlbikpID09IE5VTEwpIHsK LSsgICAgICAgICAgICBmcmVlKGJ1Zik7Ci0rICAgICAgICAgICAgcnYgPSAtNTsKLSsgICAgICAg ICAgICBnb3RvIGVuZDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmIChzdHJjbXAoaGV4LCBo bWFjKSAhPSAwKSB7Ci0rICAgICAgICAgICAgcnYgPSAtMTsKLSsgICAgICAgIH0KLSsgICAgICAg IGZyZWUoYnVmKTsKLSsgICAgICAgIGZyZWUoaGV4KTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAg IHJ2ID0gLTE7Ci0rICAgIH0KLSsKLSsgZW5kOgotKyAgICBmcmVlKGhtYWMpOwotKyAgICBmcmVl KGhtYWNwYXRoKTsKLSsgICAgZmNsb3NlKGhmKTsKLSsKLSsgICAgaWYgKHJ2IDwgMCkKLSsgICAg ICAgIHJldHVybiAwOwotKwotKyAgICAvKiBjaGVjayBzdWNjZXNzZnVsICovCi0rICAgIHJldHVy biAxOwotK30KLSsKLStpbnQgRklQU19tb2R1bGVfbW9kZV9zZXQoaW50IG9ub2ZmLCBjb25zdCBj aGFyICphdXRoKQotK3sKLSsgICAgaW50IHJldCA9IDA7Ci0rCi0rICAgIGZpcHNfd19sb2NrKCk7 Ci0rICAgIGZpcHNfc3RhcnRlZCA9IDE7Ci0rICAgIGZpcHNfc2V0X293bmluZ190aHJlYWQoKTsK LSsKLSsgICAgaWYgKG9ub2ZmKSB7Ci0rCi0rICAgICAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAw OwotKwotKyAgICAgICAgLyogRG9uJ3QgZ28gaW50byBGSVBTIG1vZGUgdHdpY2UsIGp1c3Qgc28g d2UgY2FuIGRvIGF1dG9tYWdpYwotKyAgICAgICAgICAgc2VlZGluZyAqLwotKyAgICAgICAgaWYg KEZJUFNfbW9kdWxlX21vZGUoKSkgewotKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNf TU9EVUxFX01PREVfU0VULAotKyAgICAgICAgICAgICAgICAgICAgRklQU19SX0ZJUFNfTU9ERV9B TFJFQURZX1NFVCk7Ci0rICAgICAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKLSsgICAg ICAgICAgICByZXQgPSAwOwotKyAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICAgICAgfQotKyMg aWZkZWYgT1BFTlNTTF9JQTMyX1NTRTIKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBleHRlcm4g dW5zaWduZWQgaW50IE9QRU5TU0xfaWEzMmNhcF9QWzJdOwotKyAgICAgICAgICAgIGlmICgoT1BF TlNTTF9pYTMyY2FwX1BbMF0gJiAoMSA8PCAyNSB8IDEgPDwgMjYpKSAhPQotKyAgICAgICAgICAg ICAgICAoMSA8PCAyNSB8IDEgPDwgMjYpKSB7Ci0rICAgICAgICAgICAgICAgIEZJUFNlcnIoRklQ U19GX0ZJUFNfTU9EVUxFX01PREVfU0VULAotKyAgICAgICAgICAgICAgICAgICAgICAgIEZJUFNf Ul9VTlNVUFBPUlRFRF9QTEFURk9STSk7Ci0rICAgICAgICAgICAgICAgIGZpcHNfc2VsZnRlc3Rf ZmFpbCA9IDE7Ci0rICAgICAgICAgICAgICAgIHJldCA9IDA7Ci0rICAgICAgICAgICAgICAgIGdv dG8gZW5kOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBPUEVOU1NMX2lhMzJjYXBfUFsw XSB8PSAoMSA8PCAyOCk7IC8qIHNldCAic2hhcmVkIGNhY2hlIiAgICovCi0rICAgICAgICAgICAg T1BFTlNTTF9pYTMyY2FwX1BbMV0gJj0gfigxIDw8ICg2MCAtIDMyKSk7IC8qIGNsZWFyIEFWWCAg ICAgICAgICAgICovCi0rICAgICAgICB9Ci0rIyBlbmRpZgotKwotKyAgICAgICAgaWYgKCFGSVBT Q0hFQ0tfdmVyaWZ5Ci0rICAgICAgICAgICAgKCJsaWJjcnlwdG8uc28uIiBTSExJQl9WRVJTSU9O X05VTUJFUiwgIkZJUFNfbW9kZV9zZXQiKSkgewotKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19G X0ZJUFNfTU9EVUxFX01PREVfU0VULAotKyAgICAgICAgICAgICAgICAgICAgRklQU19SX0ZJTkdF UlBSSU5UX0RPRVNfTk9UX01BVENIKTsKLSsgICAgICAgICAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwg PSAxOwotKyAgICAgICAgICAgIHJldCA9IDA7Ci0rICAgICAgICAgICAgZ290byBlbmQ7Ci0rICAg ICAgICB9Ci0rCi0rICAgICAgICBpZiAoIUZJUFNDSEVDS192ZXJpZnkKLSsgICAgICAgICAgICAo ImxpYnNzbC5zby4iIFNITElCX1ZFUlNJT05fTlVNQkVSLCAiU1NMX0NUWF9uZXciKSkgewotKyAg ICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfTU9EVUxFX01PREVfU0VULAotKyAgICAgICAg ICAgICAgICAgICAgRklQU19SX0ZJTkdFUlBSSU5UX0RPRVNfTk9UX01BVENIKTsKLSsgICAgICAg ICAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAxOwotKyAgICAgICAgICAgIHJldCA9IDA7Ci0rICAg ICAgICAgICAgZ290byBlbmQ7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoRklQU19zZWxm dGVzdCgpKQotKyAgICAgICAgICAgIGZpcHNfc2V0X21vZGUob25vZmYpOwotKyAgICAgICAgZWxz ZSB7Ci0rICAgICAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKLSsgICAgICAgICAgICBy ZXQgPSAwOwotKyAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICAgICAgfQotKyAgICAgICAgcmV0 ID0gMTsKLSsgICAgICAgIGdvdG8gZW5kOwotKyAgICB9Ci0rICAgIGZpcHNfc2V0X21vZGUoMCk7 Ci0rICAgIGZpcHNfc2VsZnRlc3RfZmFpbCA9IDA7Ci0rICAgIHJldCA9IDE7Ci0rIGVuZDoKLSsg ICAgZmlwc19jbGVhcl9vd25pbmdfdGhyZWFkKCk7Ci0rICAgIGZpcHNfd191bmxvY2soKTsKLSsg ICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIENSWVBUT19USFJFQURJRCBmaXBzX3RocmVh ZDsKLStzdGF0aWMgaW50IGZpcHNfdGhyZWFkX3NldCA9IDA7Ci0rCi0rc3RhdGljIGludCBmaXBz X2lzX293bmluZ190aHJlYWQodm9pZCkKLSt7Ci0rICAgIGludCByZXQgPSAwOwotKwotKyAgICBp ZiAoZmlwc19zdGFydGVkKSB7Ci0rICAgICAgICBDUllQVE9fcl9sb2NrKENSWVBUT19MT0NLX0ZJ UFMyKTsKLSsgICAgICAgIGlmIChmaXBzX3RocmVhZF9zZXQpIHsKLSsgICAgICAgICAgICBDUllQ VE9fVEhSRUFESUQgY3VyOwotKyAgICAgICAgICAgIENSWVBUT19USFJFQURJRF9jdXJyZW50KCZj dXIpOwotKyAgICAgICAgICAgIGlmICghQ1JZUFRPX1RIUkVBRElEX2NtcCgmY3VyLCAmZmlwc190 aHJlYWQpKQotKyAgICAgICAgICAgICAgICByZXQgPSAxOwotKyAgICAgICAgfQotKyAgICAgICAg Q1JZUFRPX3JfdW5sb2NrKENSWVBUT19MT0NLX0ZJUFMyKTsKLSsgICAgfQotKyAgICByZXR1cm4g cmV0OwotK30KLSsKLStpbnQgZmlwc19zZXRfb3duaW5nX3RocmVhZCh2b2lkKQotK3sKLSsgICAg aW50IHJldCA9IDA7Ci0rCi0rICAgIGlmIChmaXBzX3N0YXJ0ZWQpIHsKLSsgICAgICAgIENSWVBU T193X2xvY2soQ1JZUFRPX0xPQ0tfRklQUzIpOwotKyAgICAgICAgaWYgKCFmaXBzX3RocmVhZF9z ZXQpIHsKLSsgICAgICAgICAgICBDUllQVE9fVEhSRUFESURfY3VycmVudCgmZmlwc190aHJlYWQp OwotKyAgICAgICAgICAgIHJldCA9IDE7Ci0rICAgICAgICAgICAgZmlwc190aHJlYWRfc2V0ID0g MTsKLSsgICAgICAgIH0KLSsgICAgICAgIENSWVBUT193X3VubG9jayhDUllQVE9fTE9DS19GSVBT Mik7Ci0rICAgIH0KLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0raW50IGZpcHNfY2xlYXJfb3du aW5nX3RocmVhZCh2b2lkKQotK3sKLSsgICAgaW50IHJldCA9IDA7Ci0rCi0rICAgIGlmIChmaXBz X3N0YXJ0ZWQpIHsKLSsgICAgICAgIENSWVBUT193X2xvY2soQ1JZUFRPX0xPQ0tfRklQUzIpOwot KyAgICAgICAgaWYgKGZpcHNfdGhyZWFkX3NldCkgewotKyAgICAgICAgICAgIENSWVBUT19USFJF QURJRCBjdXI7Ci0rICAgICAgICAgICAgQ1JZUFRPX1RIUkVBRElEX2N1cnJlbnQoJmN1cik7Ci0r ICAgICAgICAgICAgaWYgKCFDUllQVE9fVEhSRUFESURfY21wKCZjdXIsICZmaXBzX3RocmVhZCkp Ci0rICAgICAgICAgICAgICAgIGZpcHNfdGhyZWFkX3NldCA9IDA7Ci0rICAgICAgICB9Ci0rICAg ICAgICBDUllQVE9fd191bmxvY2soQ1JZUFRPX0xPQ0tfRklQUzIpOwotKyAgICB9Ci0rICAgIHJl dHVybiByZXQ7Ci0rfQotKwotKyMgaWYgMAotKy8qIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8g ZW5zdXJlIHRoZSBlcnJvciBjb2RlIGV4aXN0cyBhbmQgdGhlIGZ1bmN0aW9uCi0rICogbmFtZSBp cyB0byBrZWVwIHRoZSBlcnJvciBjaGVja2luZyBzY3JpcHQgcXVpZXQKLSsgKi8KLSt2b2lkIGhh c2hfZmluYWwodm9pZCkKLSt7Ci0rICAgIEZJUFNlcnIoRklQU19GX0hBU0hfRklOQUwsIEZJUFNf Ul9OT05fRklQU19NRVRIT0QpOwotK30KLSsjIGVuZGlmCi0rCi0rI2VuZGlmCi1kaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2NtYWNfc2VsZnRlc3QuYy5maXBzIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfY21hY19zZWxmdGVzdC5jCi0tLS0gb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19jbWFjX3NlbGZ0ZXN0LmMuZmlwcwkyMDE1LTA0LTIyIDE2 OjA4OjQwLjI5NDI0NTcwMiArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2Zp cHNfY21hY19zZWxmdGVzdC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk0MjQ1NzAyICswMjAwCi1A QCAtMCwwICsxLDE1NiBAQAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDEx IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3 aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJp YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0r ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAg dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo ZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRl cmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJl IG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlz IHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2pl Y3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9w ZW5zc2wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5k ICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9y IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAq ICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxl YXNlIGNvbnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1 LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAi T3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMg d2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQ cm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2 ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAq ICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVu U1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6 Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg QlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK LSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg U0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElB QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBF WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBO T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF UzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS VVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZ IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9G IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpbmNsdWRl IDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9maXBzLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvY21hYy5oPgotKyNpbmNsdWRlICJmaXBzX2xv Y2wuaCIKLSsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rdHlwZWRlZiBzdHJ1Y3QgewotKyAgICBp bnQgbmlkOwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGtleVtFVlBfTUFYX0tFWV9MRU5HVEhd OwotKyAgICBzaXplX3Qga2V5c2l6ZTsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciBtc2dbNjRd OwotKyAgICBzaXplX3QgbXNnc2l6ZTsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciBtYWNbMzJd OwotKyAgICBzaXplX3QgbWFjc2l6ZTsKLSt9IENNQUNfS0FUOwotKwotKy8qIGZyb20gaHR0cDov L2NzcmMubmlzdC5nb3YvcHVibGljYXRpb25zL25pc3RwdWJzLzgwMC0zOEIvU1BfODAwLTM4Qi5w ZGYgKi8KLStzdGF0aWMgY29uc3QgQ01BQ19LQVQgdmVjdG9yW10gPSB7Ci0rICAgIHtOSURfYWVz XzEyOF9jYmMsICAgICAgICAgICAvKiBDb3VudCA9IDMyIGZyb20gQ01BQ0dlbkFFUzEyOC50eHQg Ki8KLSsgICAgIHsweDc3LCAweGE3LCAweDdmLCAweGFmLCAweDI5LCAweDBjLCAweDFmLCAweGEz LAotKyAgICAgIDB4MGMsIDB4NjgsIDB4M2QsIDB4ZjEsIDB4NmIsIDB4YTcsIDB4YTcsIDB4N2Is fSwgMTI4LAotKyAgICAgezB4MDIsIDB4MDYsIDB4ODMsIDB4ZTEsIDB4ZjAsIDB4MzksIDB4MmYs IDB4NGMsCi0rICAgICAgMHhhYywgMHg1NCwgMHgzMSwgMHg4YiwgMHg2MCwgMHgyOSwgMHgyNSwg MHg5ZSwKLSsgICAgICAweDljLCAweDU1LCAweDNkLCAweGJjLCAweDRiLCAweDZhLCAweGQ5LCAw eDk4LAotKyAgICAgIDB4ZTYsIDB4NGQsIDB4NTgsIDB4ZTQsIDB4ZTcsIDB4ZGMsIDB4MmUsIDB4 MTMsfSwgMjU2LAotKyAgICAgezB4ZmIsIDB4ZmUsIDB4YTQsIDB4MWIsfSwgMzJ9LAotKyAgICB7 TklEX2Flc18xOTJfY2JjLCAgICAgICAgICAgLyogQ291bnQgPSAyMyBmcm9tIENNQUNHZW5BRVMx OTIudHh0ICovCi0rICAgICB7MHg3YiwgMHgzMiwgMHgzOSwgMHgxMywgMHg2OSwgMHhhYSwgMHg0 YywgMHhhOSwKLSsgICAgICAweDc1LCAweDU4LCAweDA5LCAweDViLCAweGUzLCAweGMzLCAweGVj LCAweDg2LAotKyAgICAgIDB4MmIsIDB4ZDAsIDB4NTcsIDB4Y2UsIDB4ZjEsIDB4ZTMsIDB4MmQs IDB4NjIsfSwgMTkyLAotKyAgICAgezB4MH0sIDAsCi0rICAgICB7MHhlNCwgMHhkOSwgMHgzNCwg MHgwYiwgMHgwMywgMHhlNiwgMHg3ZCwgMHhlZiwKLSsgICAgICAweGQ0LCAweDk2LCAweDljLCAw eGMxLCAweGVkLCAweDM3LCAweDM1LCAweGU2LH0sIDEyOCwKLSsgICAgIH0sCi0rICAgIHtOSURf YWVzXzI1Nl9jYmMsICAgICAgICAgICAvKiBDb3VudCA9IDMzIGZyb20gQ01BQ0dlbkFFUzI1Ni50 eHQgKi8KLSsgICAgIHsweDBiLCAweDEyLCAweDJhLCAweGM4LCAweGYzLCAweDRlLCAweGQxLCAw eGZlLAotKyAgICAgIDB4MDgsIDB4MmEsIDB4MzYsIDB4MjUsIDB4ZDEsIDB4NTcsIDB4NTYsIDB4 MTQsCi0rICAgICAgMHg1NCwgMHgxNiwgMHg3YSwgMHhjMSwgMHg0NSwgMHhhMSwgMHgwYiwgMHhi ZiwKLSsgICAgICAweDc3LCAweGM2LCAweGE3LCAweDA1LCAweDk2LCAweGQ1LCAweDc0LCAweGYx LH0sIDI1NiwKLSsgICAgIHsweDQ5LCAweDhiLCAweDUzLCAweGZkLCAweGVjLCAweDg3LCAweGVk LCAweGNiLAotKyAgICAgIDB4ZjAsIDB4NzAsIDB4OTcsIDB4ZGMsIDB4Y2QsIDB4ZTksIDB4M2Es IDB4MDgsCi0rICAgICAgMHg0YiwgMHhhZCwgMHg3NSwgMHgwMSwgMHhhMiwgMHgyNCwgMHhlMywg MHg4OCwKLSsgICAgICAweGRmLCAweDM0LCAweDljLCAweGUxLCAweDg5LCAweDU5LCAweGZlLCAw eDg0LAotKyAgICAgIDB4ODUsIDB4ZjgsIDB4YWQsIDB4MTUsIDB4MzcsIDB4ZjAsIDB4ZDgsIDB4 OTYsCi0rICAgICAgMHhlYSwgMHg3MywgMHhiZSwgMHhkYywgMHg3MiwgMHgxNCwgMHg3MSwgMHgz Zix9LCAzODQsCi0rICAgICB7MHhmNiwgMHgyYywgMHg0NiwgMHgzMiwgMHg5Yix9LCA0MCwKLSsg ICAgIH0sCi0rICAgIHtOSURfZGVzX2VkZTNfY2JjLCAgICAgICAgICAvKiBDb3VudCA9IDQxIGZy b20gQ01BQ0dlblRERVMzLnJlcSAqLwotKyAgICAgezB4ODksIDB4YmMsIDB4ZDksIDB4NTIsIDB4 YTgsIDB4YzgsIDB4YWIsIDB4MzcsCi0rICAgICAgMHgxYSwgMHhmNCwgMHg4YSwgMHhjNywgMHhk MCwgMHg3MCwgMHg4NSwgMHhkNSwKLSsgICAgICAweGVmLCAweGY3LCAweDAyLCAweGU2LCAweGQ2 LCAweDJjLCAweGRjLCAweDIzLH0sIDE5MiwKLSsgICAgIHsweGZhLCAweDYyLCAweDBjLCAweDFi LCAweGJlLCAweDk3LCAweDMxLCAweDllLAotKyAgICAgIDB4OWEsIDB4MGMsIDB4ZjAsIDB4NDks IDB4MjEsIDB4MjEsIDB4ZjcsIDB4YTIsCi0rICAgICAgMHgwZSwgMHhiMCwgMHg4YSwgMHg2YSwg MHg3MCwgMHg5ZCwgMHhjYiwgMHhkMCwKLSsgICAgICAweDBhLCAweGFmLCAweDM4LCAweGU0LCAw eGY5LCAweDllLCAweDc1LCAweDRlLH0sIDI1NiwKLSsgICAgIHsweDhmLCAweDQ5LCAweGExLCAw eGI3LCAweGQ2LCAweGFhLCAweDIyLCAweDU4LH0sIDY0LAotKyAgICAgfSwKLSt9OwotKwotK2lu dCBGSVBTX3NlbGZ0ZXN0X2NtYWMoKQotK3sKLSsgICAgc2l6ZV90IG4sIG91dGxlbjsKLSsgICAg dW5zaWduZWQgY2hhciBvdXRbMzJdOwotKyAgICBjb25zdCBFVlBfQ0lQSEVSICpjaXBoZXI7Ci0r ICAgIENNQUNfQ1RYICpjdHggPSBDTUFDX0NUWF9uZXcoKTsKLSsgICAgY29uc3QgQ01BQ19LQVQg KnQ7Ci0rICAgIGludCBydiA9IDE7Ci0rCi0rICAgIGZvciAobiA9IDAsIHQgPSB2ZWN0b3I7IG4g PCBzaXplb2YodmVjdG9yKSAvIHNpemVvZih2ZWN0b3JbMF0pOyBuKyssIHQrKykgewotKyAgICAg ICAgY2lwaGVyID0gRklQU19nZXRfY2lwaGVyYnluaWQodC0+bmlkKTsKLSsgICAgICAgIGlmICgh Y2lwaGVyKSB7Ci0rICAgICAgICAgICAgcnYgPSAtMTsKLSsgICAgICAgICAgICBnb3RvIGVycjsK LSsgICAgICAgIH0KLSsgICAgICAgIGlmICghQ01BQ19Jbml0KGN0eCwgdC0+a2V5LCB0LT5rZXlz aXplIC8gOCwgY2lwaGVyLCAwKSkgewotKyAgICAgICAgICAgIHJ2ID0gLTE7Ci0rICAgICAgICAg ICAgZ290byBlcnI7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoIUNNQUNfVXBkYXRlKGN0eCwg dC0+bXNnLCB0LT5tc2dzaXplIC8gOCkpIHsKLSsgICAgICAgICAgICBydiA9IC0xOwotKyAgICAg ICAgICAgIGdvdG8gZXJyOwotKyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKCFDTUFDX0ZpbmFs KGN0eCwgb3V0LCAmb3V0bGVuKSkgewotKyAgICAgICAgICAgIHJ2ID0gLTE7Ci0rICAgICAgICAg ICAgZ290byBlcnI7Ci0rICAgICAgICB9Ci0rICAgICAgICBDTUFDX0NUWF9jbGVhbnVwKGN0eCk7 Ci0rCi0rICAgICAgICBpZiAob3V0bGVuIDwgdC0+bWFjc2l6ZSAvIDggfHwgbWVtY21wKG91dCwg dC0+bWFjLCB0LT5tYWNzaXplIC8gOCkpIHsKLSsgICAgICAgICAgICBydiA9IDA7Ci0rICAgICAg ICB9Ci0rICAgIH0KLSsKLSsgZXJyOgotKyAgICBDTUFDX0NUWF9mcmVlKGN0eCk7Ci0rCi0rICAg IGlmIChydiA9PSAtMSkgewotKyAgICAgICAgcnYgPSAwOwotKyAgICB9Ci0rICAgIGlmICghcnYp Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX1NFTEZURVNUX0NNQUMsIEZJUFNfUl9TRUxG VEVTVF9GQUlMRUQpOwotKwotKyAgICByZXR1cm4gcnY7Ci0rfQotKyNlbmRpZgotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19kZXNfc2VsZnRlc3QuYy5maXBzIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZGVzX3NlbGZ0ZXN0LmMKLS0tLSBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZmlwcy9maXBzX2Rlc19zZWxmdGVzdC5jLmZpcHMJMjAxNS0wNC0yMiAxNjow ODo0MC4yOTQyNDU3MDIgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBz X2Rlc19zZWxmdGVzdC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk0MjQ1NzAyICswMjAwCi1AQCAt MCwwICsxLDEzOCBAQAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDAzIFRo ZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0 cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo b3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv bGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0 aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0 IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhl IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot KyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlh bHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11 c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHBy b2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QK LSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5z c2wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJP cGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHBy b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAg IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNl IGNvbnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQ cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3Bl blNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0 aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9q ZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIg bXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAg ICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NM IFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93 d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg VEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsg KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB TEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVN UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1Qg TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK LSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU SU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg V0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9V VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRI RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpbmNsdWRlIDxz dHJpbmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaWZkZWYgT1BFTlNTTF9GSVBT Ci0rIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8b3BlbnNz bC9ldnAuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPgotKwotKyNpZmRlZiBP UEVOU1NMX0ZJUFMKLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHsKLSsgICAgY29uc3QgdW5zaWdu ZWQgY2hhciBrZXlbMTZdOwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHBsYWludGV4dFs4XTsK LSsgICAgY29uc3QgdW5zaWduZWQgY2hhciBjaXBoZXJ0ZXh0WzhdOwotK30gdGVzdHMyW10gPSB7 Ci0rICAgIHsKLSsgICAgICAgIHsKLSsgICAgICAgIDB4N2MsIDB4NGYsIDB4NmUsIDB4ZjcsIDB4 YTIsIDB4MDQsIDB4MTYsIDB4ZWMsCi0rICAgICAgICAgICAgICAgIDB4MGIsIDB4NmIsIDB4N2Ms IDB4OWUsIDB4NWUsIDB4MTksIDB4YTcsIDB4YzR9LCB7Ci0rICAgICAgICAweDA2LCAweGE3LCAw eGQ4LCAweDc5LCAweGFhLCAweGNlLCAweDY5LCAweGVmfSwgewotKyAgICAgICAgMHg0YywgMHgx MSwgMHgxNywgMHg1NSwgMHhiZiwgMHhjNCwgMHg0ZSwgMHhmZH0KLSsgICAgfSwgewotKyAgICAg ICAgewotKyAgICAgICAgMHg1ZCwgMHg5ZSwgMHgwMSwgMHhkMywgMHgyNSwgMHhjNywgMHgzZSwg MHgzNCwKLSsgICAgICAgICAgICAgICAgMHgwMSwgMHgxNiwgMHg3YywgMHg4NSwgMHgyMywgMHhk ZiwgMHhlMCwgMHg2OH0sIHsKLSsgICAgICAgIDB4OWMsIDB4NTAsIDB4MDksIDB4MGYsIDB4NWUs IDB4N2QsIDB4NjksIDB4N2V9LCB7Ci0rICAgIDB4ZDIsIDB4MGIsIDB4MTgsIDB4ZGYsIDB4ZDks IDB4MGQsIDB4OWUsIDB4ZmZ9LH0KLSt9OwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgewotKyAg ICBjb25zdCB1bnNpZ25lZCBjaGFyIGtleVsyNF07Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg cGxhaW50ZXh0WzhdOwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGNpcGhlcnRleHRbOF07Ci0r fSB0ZXN0czNbXSA9IHsKLSsgICAgewotKyAgICAgICAgewotKyAgICAgICAgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLSsgICAgICAgICAgICAgICAgMHhG RSwgMHhEQywgMHhCQSwgMHg5OCwgMHg3NiwgMHg1NCwgMHgzMiwgMHgxMCwKLSsgICAgICAgICAg ICAgICAgMHgxMiwgMHgzNCwgMHg1NiwgMHg3OCwgMHg5YSwgMHhiYywgMHhkZSwgMHhmMH0sIHsK LSsgICAgICAgIDB4OGYsIDB4OGYsIDB4YmYsIDB4OWIsIDB4NWQsIDB4NDgsIDB4YjQsIDB4MWN9 LCB7Ci0rICAgIDB4NTksIDB4OGMsIDB4ZTUsIDB4ZDMsIDB4NmMsIDB4YTIsIDB4ZWEsIDB4MWJ9 LH0sIHsKLSsgICAgICAgIHsKLSsgICAgICAgIDB4REMsIDB4QkEsIDB4OTgsIDB4NzYsIDB4NTQs IDB4MzIsIDB4MTAsIDB4RkUsCi0rICAgICAgICAgICAgICAgIDB4MDEsIDB4MjMsIDB4NDUsIDB4 NjcsIDB4ODksIDB4QUIsIDB4Q0QsIDB4RUYsCi0rICAgICAgICAgICAgICAgIDB4RUQsIDB4Mzks IDB4RDksIDB4NTAsIDB4RkEsIDB4NzQsIDB4QkMsIDB4QzR9LCB7Ci0rICAgICAgICAweDAxLCAw eDIzLCAweDQ1LCAweDY3LCAweDg5LCAweEFCLCAweENELCAweEVGfSwgewotKzB4MTEsIDB4MjUs IDB4YjAsIDB4MzUsIDB4YmUsIDB4YTAsIDB4ODIsIDB4ODZ9LH0sfTsKLSsKLStzdGF0aWMgaW50 IGNvcnJ1cHRfZGVzOwotKwotK3ZvaWQgRklQU19jb3JydXB0X2RlcygpCi0rewotKyAgICBjb3Jy dXB0X2RlcyA9IDE7Ci0rfQotKwotK2ludCBGSVBTX3NlbGZ0ZXN0X2RlcygpCi0rewotKyAgICBp bnQgbiwgcmV0ID0gMDsKLSsgICAgRVZQX0NJUEhFUl9DVFggY3R4OwotKyAgICBFVlBfQ0lQSEVS X0NUWF9pbml0KCZjdHgpOwotKyAgICAvKiBFbmNyeXB0L2RlY3J5cHQgd2l0aCAyLWtleSAzREVT IGFuZCBjb21wYXJlIHRvIGtub3duIGFuc3dlcnMgKi8KLSsgICAgZm9yIChuID0gMDsgbiA8IDI7 ICsrbikgewotKyAgICAgICAgdW5zaWduZWQgY2hhciBwbGFpbnRleHRbOF07Ci0rCi0rICAgICAg ICBtZW1jcHkocGxhaW50ZXh0LCB0ZXN0czJbbl0ucGxhaW50ZXh0LCBzaXplb2YocGxhaW50ZXh0 KSk7Ci0rICAgICAgICBpZiAoY29ycnVwdF9kZXMpCi0rICAgICAgICAgICAgcGxhaW50ZXh0WzBd Kys7Ci0rICAgICAgICBpZiAoIWZpcHNfY2lwaGVyX3Rlc3QoJmN0eCwgRVZQX2Rlc19lZGVfZWNi KCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMyW25dLmtleSwgTlVMTCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFpbnRleHQsIHRlc3RzMltuXS5jaXBo ZXJ0ZXh0LCA4KSkKLSsgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICAvKiBF bmNyeXB0L2RlY3J5cHQgd2l0aCAzREVTIGFuZCBjb21wYXJlIHRvIGtub3duIGFuc3dlcnMgKi8K LSsgICAgZm9yIChuID0gMDsgbiA8IDI7ICsrbikgewotKyAgICAgICAgaWYgKCFmaXBzX2NpcGhl cl90ZXN0KCZjdHgsIEVWUF9kZXNfZWRlM19lY2IoKSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXN0czNbbl0ua2V5LCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRlc3RzM1tuXS5wbGFpbnRleHQsIHRlc3RzM1tuXS5jaXBoZXJ0ZXh0LCA4KSkKLSsgICAg ICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKyAgICByZXQgPSAxOwotKyBlcnI6Ci0rICAgIEVW UF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7Ci0rICAgIGlmIChyZXQgPT0gMCkKLSsgICAgICAg IEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfREVTLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVE KTsKLSsKLSsgICAgcmV0dXJuIHJldDsKLSt9Ci0rI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfY3RyLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZmlwcy9maXBzX2RyYmdfY3RyLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9m aXBzX2RyYmdfY3RyLmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NDI0NTcwMiArMDIwMAot KysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19jdHIuYwkyMDE1LTA0LTIy IDE2OjA4OjQwLjI5NDI0NTcwMiArMDIwMAotQEAgLTAsMCArMSw0MTUgQEAKLSsvKiBmaXBzL3Jh bmQvZmlwc19kcmJnX2N0ci5jICovCi0rLyogV3JpdHRlbiBieSBEciBTdGVwaGVuIE4gSGVuc29u IChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCi0rICogcHJvamVjdC4KLSsgKi8K LSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9q ZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoK LSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl IGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmli dXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcg ZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhl IGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVz IHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVz ZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAq Ci0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0 IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVu IHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICog ICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBm cm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9y IG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRl bgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYu IFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBm b2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGlu Y2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAg Zm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLyki Ci0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pF Q1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICog UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBS T0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0Us IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB Q1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug T1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg U1VDSCBEQU1BR0UuCi0rICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGli Lmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgot KyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQu aD4KLSsjaW5jbHVkZSAiZmlwc19yYW5kX2xjbC5oIgotKwotK3N0YXRpYyB2b2lkIGluY18xMjgo RFJCR19DVFJfQ1RYICogY2N0eCkKLSt7Ci0rICAgIGludCBpOwotKyAgICB1bnNpZ25lZCBjaGFy IGM7Ci0rICAgIHVuc2lnbmVkIGNoYXIgKnAgPSBjY3R4LT5WICsgMTU7Ci0rICAgIGZvciAoaSA9 IDA7IGkgPCAxNjsgaSsrKSB7Ci0rICAgICAgICBjID0gKnA7Ci0rICAgICAgICBjKys7Ci0rICAg ICAgICAqcCA9IGM7Ci0rICAgICAgICBpZiAoYykKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAg ICAgICBwLS07Ci0rICAgIH0KLSt9Ci0rCi0rc3RhdGljIHZvaWQgY3RyX1hPUihEUkJHX0NUUl9D VFggKiBjY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwKLSsgICAgICAgICAgICAgICAgICAg IHNpemVfdCBpbmxlbikKLSt7Ci0rICAgIHNpemVfdCBpLCBuOwotKyAgICAvKiBBbnkgemVybyBw YWRkaW5nIHdpbGwgaGF2ZSBubyBlZmZlY3Qgb24gdGhlIHJlc3VsdCBhcyB3ZQotKyAgICAgKiBh cmUgWE9SaW5nLiBTbyBqdXN0IHByb2Nlc3MgaG93ZXZlciBtdWNoIGlucHV0IHdlIGhhdmUuCi0r ICAgICAqLwotKwotKyAgICBpZiAoIWluIHx8ICFpbmxlbikKLSsgICAgICAgIHJldHVybjsKLSsK LSsgICAgaWYgKGlubGVuIDwgY2N0eC0+a2V5bGVuKQotKyAgICAgICAgbiA9IGlubGVuOwotKyAg ICBlbHNlCi0rICAgICAgICBuID0gY2N0eC0+a2V5bGVuOwotKwotKyAgICBmb3IgKGkgPSAwOyBp IDwgbjsgaSsrKQotKyAgICAgICAgY2N0eC0+S1tpXSBePSBpbltpXTsKLSsgICAgaWYgKGlubGVu IDw9IGNjdHgtPmtleWxlbikKLSsgICAgICAgIHJldHVybjsKLSsKLSsgICAgbiA9IGlubGVuIC0g Y2N0eC0+a2V5bGVuOwotKyAgICAvKiBTaG91bGQgbmV2ZXIgaGFwcGVuICovCi0rICAgIGlmIChu ID4gMTYpCi0rICAgICAgICBuID0gMTY7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQot KyAgICAgICAgY2N0eC0+VltpXSBePSBpbltpICsgY2N0eC0+a2V5bGVuXTsKLSt9Ci0rCi0rLyog UHJvY2VzcyBhIGNvbXBsZXRlIGJsb2NrIHVzaW5nIEJDQyBhbGdvcml0aG0gb2YgU1BQIDgwMC05 MCAxMC40LjMgKi8KLSsKLStzdGF0aWMgdm9pZCBjdHJfQkNDX2Jsb2NrKERSQkdfQ1RSX0NUWCAq IGNjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgKmluKQotK3sKLSsgICAgaW50IGk7Ci0rICAgIGZvciAoaSA9IDA7 IGkgPCAxNjsgaSsrKQotKyAgICAgICAgb3V0W2ldIF49IGluW2ldOwotKyAgICBBRVNfZW5jcnlw dChvdXQsIG91dCwgJmNjdHgtPmRmX2tzKTsKLSsjaWYgMAotKyAgICBmcHJpbnRmKHN0ZGVyciwg IkJDQyBpbitvdXRcbiIpOwotKyAgICBCSU9fZHVtcF9mcChzdGRlcnIsIGluLCAxNik7Ci0rICAg IEJJT19kdW1wX2ZwKHN0ZGVyciwgb3V0LCAxNik7Ci0rI2VuZGlmCi0rfQotKwotKy8qIEhhbmRs ZSBzZXZlcmFsIEJDQyBvcGVyYXRpb25zIGZvciBhcyBtdWNoIGRhdGEgYXMgd2UgbmVlZCBmb3Ig SyBhbmQgWCAqLwotK3N0YXRpYyB2b2lkIGN0cl9CQ0NfYmxvY2tzKERSQkdfQ1RSX0NUWCAqIGNj dHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluKQotK3sKLSsgICAgY3RyX0JDQ19ibG9jayhjY3R4 LCBjY3R4LT5LWCwgaW4pOwotKyAgICBjdHJfQkNDX2Jsb2NrKGNjdHgsIGNjdHgtPktYICsgMTYs IGluKTsKLSsgICAgaWYgKGNjdHgtPmtleWxlbiAhPSAxNikKLSsgICAgICAgIGN0cl9CQ0NfYmxv Y2soY2N0eCwgY2N0eC0+S1ggKyAzMiwgaW4pOwotK30KLSsKLSsvKiBJbml0aWFsaXNlIEJDQyBi bG9ja3M6IHRoZXNlIGhhdmUgdGhlIHZhbHVlIDAsMSwyIGluIGxlZnRtb3N0IHBvc2l0aW9uczoK LSsgKiBzZWUgMTAuNC4yIHN0YWdlIDcuCi0rICovCi0rc3RhdGljIHZvaWQgY3RyX0JDQ19pbml0 KERSQkdfQ1RSX0NUWCAqIGNjdHgpCi0rewotKyAgICBtZW1zZXQoY2N0eC0+S1gsIDAsIDQ4KTsK LSsgICAgbWVtc2V0KGNjdHgtPmJsdG1wLCAwLCAxNik7Ci0rICAgIGN0cl9CQ0NfYmxvY2soY2N0 eCwgY2N0eC0+S1gsIGNjdHgtPmJsdG1wKTsKLSsgICAgY2N0eC0+Ymx0bXBbM10gPSAxOwotKyAg ICBjdHJfQkNDX2Jsb2NrKGNjdHgsIGNjdHgtPktYICsgMTYsIGNjdHgtPmJsdG1wKTsKLSsgICAg aWYgKGNjdHgtPmtleWxlbiAhPSAxNikgewotKyAgICAgICAgY2N0eC0+Ymx0bXBbM10gPSAyOwot KyAgICAgICAgY3RyX0JDQ19ibG9jayhjY3R4LCBjY3R4LT5LWCArIDMyLCBjY3R4LT5ibHRtcCk7 Ci0rICAgIH0KLSt9Ci0rCi0rLyogUHJvY2VzcyBzZXZlcmFsIGJsb2NrcyBpbnRvIEJDQyBhbGdv cml0aG0sIHNvbWUgcG9zc2libHkgcGFydGlhbCAqLwotK3N0YXRpYyB2b2lkIGN0cl9CQ0NfdXBk YXRlKERSQkdfQ1RSX0NUWCAqIGNjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxlbikKLSt7Ci0rICAgIGlmICghaW4gfHwg IWlubGVuKQotKyAgICAgICAgcmV0dXJuOwotKyAgICAvKiBJZiB3ZSBoYXZlIHBhcnRpYWwgYmxv Y2sgaGFuZGxlIGl0IGZpcnN0ICovCi0rICAgIGlmIChjY3R4LT5ibHRtcF9wb3MpIHsKLSsgICAg ICAgIHNpemVfdCBsZWZ0ID0gMTYgLSBjY3R4LT5ibHRtcF9wb3M7Ci0rICAgICAgICAvKiBJZiB3 ZSBub3cgaGF2ZSBhIGNvbXBsZXRlIGJsb2NrIHByb2Nlc3MgaXQgKi8KLSsgICAgICAgIGlmIChp bmxlbiA+PSBsZWZ0KSB7Ci0rICAgICAgICAgICAgbWVtY3B5KGNjdHgtPmJsdG1wICsgY2N0eC0+ Ymx0bXBfcG9zLCBpbiwgbGVmdCk7Ci0rICAgICAgICAgICAgY3RyX0JDQ19ibG9ja3MoY2N0eCwg Y2N0eC0+Ymx0bXApOwotKyAgICAgICAgICAgIGNjdHgtPmJsdG1wX3BvcyA9IDA7Ci0rICAgICAg ICAgICAgaW5sZW4gLT0gbGVmdDsKLSsgICAgICAgICAgICBpbiArPSBsZWZ0OwotKyAgICAgICAg fQotKyAgICB9Ci0rICAgIC8qIFByb2Nlc3MgemVybyBvciBtb3JlIGNvbXBsZXRlIGJsb2NrcyAq LwotKyAgICB3aGlsZSAoaW5sZW4gPj0gMTYpIHsKLSsgICAgICAgIGN0cl9CQ0NfYmxvY2tzKGNj dHgsIGluKTsKLSsgICAgICAgIGluICs9IDE2OwotKyAgICAgICAgaW5sZW4gLT0gMTY7Ci0rICAg IH0KLSsgICAgLyogQ29weSBhbnkgcmVtYWluaW5nIHBhcnRpYWwgYmxvY2sgdG8gdGhlIHRlbXBv cmFyeSBidWZmZXIgKi8KLSsgICAgaWYgKGlubGVuID4gMCkgewotKyAgICAgICAgbWVtY3B5KGNj dHgtPmJsdG1wICsgY2N0eC0+Ymx0bXBfcG9zLCBpbiwgaW5sZW4pOwotKyAgICAgICAgY2N0eC0+ Ymx0bXBfcG9zICs9IGlubGVuOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkIGN0cl9CQ0Nf ZmluYWwoRFJCR19DVFJfQ1RYICogY2N0eCkKLSt7Ci0rICAgIGlmIChjY3R4LT5ibHRtcF9wb3Mp IHsKLSsgICAgICAgIG1lbXNldChjY3R4LT5ibHRtcCArIGNjdHgtPmJsdG1wX3BvcywgMCwgMTYg LSBjY3R4LT5ibHRtcF9wb3MpOwotKyAgICAgICAgY3RyX0JDQ19ibG9ja3MoY2N0eCwgY2N0eC0+ Ymx0bXApOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkIGN0cl9kZihEUkJHX0NUUl9DVFgg KiBjY3R4LAotKyAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbjEsIHNp emVfdCBpbjFsZW4sCi0rICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlu Miwgc2l6ZV90IGluMmxlbiwKLSsgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh ciAqaW4zLCBzaXplX3QgaW4zbGVuKQotK3sKLSsgICAgc2l6ZV90IGlubGVuOwotKyAgICB1bnNp Z25lZCBjaGFyICpwID0gY2N0eC0+Ymx0bXA7Ci0rICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGM4 MCA9IDB4ODA7Ci0rCi0rICAgIGN0cl9CQ0NfaW5pdChjY3R4KTsKLSsgICAgaWYgKCFpbjEpCi0r ICAgICAgICBpbjFsZW4gPSAwOwotKyAgICBpZiAoIWluMikKLSsgICAgICAgIGluMmxlbiA9IDA7 Ci0rICAgIGlmICghaW4zKQotKyAgICAgICAgaW4zbGVuID0gMDsKLSsgICAgaW5sZW4gPSBpbjFs ZW4gKyBpbjJsZW4gKyBpbjNsZW47Ci0rICAgIC8qIEluaXRpYWxpc2UgTHx8TiBpbiB0ZW1wb3Jh cnkgYmxvY2sgKi8KLSsgICAgKnArKyA9IChpbmxlbiA+PiAyNCkgJiAweGZmOwotKyAgICAqcCsr ID0gKGlubGVuID4+IDE2KSAmIDB4ZmY7Ci0rICAgICpwKysgPSAoaW5sZW4gPj4gOCkgJiAweGZm OwotKyAgICAqcCsrID0gaW5sZW4gJiAweGZmOwotKyAgICAvKiBOQiBrZXlsZW4gaXMgYXQgbW9z dCAzMiBieXRlcyAqLwotKyAgICAqcCsrID0gMDsKLSsgICAgKnArKyA9IDA7Ci0rICAgICpwKysg PSAwOwotKyAgICAqcCA9ICh1bnNpZ25lZCBjaGFyKSgoY2N0eC0+a2V5bGVuICsgMTYpICYgMHhm Zik7Ci0rICAgIGNjdHgtPmJsdG1wX3BvcyA9IDg7Ci0rICAgIGN0cl9CQ0NfdXBkYXRlKGNjdHgs IGluMSwgaW4xbGVuKTsKLSsgICAgY3RyX0JDQ191cGRhdGUoY2N0eCwgaW4yLCBpbjJsZW4pOwot KyAgICBjdHJfQkNDX3VwZGF0ZShjY3R4LCBpbjMsIGluM2xlbik7Ci0rICAgIGN0cl9CQ0NfdXBk YXRlKGNjdHgsICZjODAsIDEpOwotKyAgICBjdHJfQkNDX2ZpbmFsKGNjdHgpOwotKyAgICAvKiBT ZXQgdXAga2V5IEsgKi8KLSsgICAgQUVTX3NldF9lbmNyeXB0X2tleShjY3R4LT5LWCwgY2N0eC0+ a2V5bGVuICogOCwgJmNjdHgtPmRmX2t4a3MpOwotKyAgICAvKiBYIGZvbGxvd3Mga2V5IEsgKi8K LSsgICAgQUVTX2VuY3J5cHQoY2N0eC0+S1ggKyBjY3R4LT5rZXlsZW4sIGNjdHgtPktYLCAmY2N0 eC0+ZGZfa3hrcyk7Ci0rICAgIEFFU19lbmNyeXB0KGNjdHgtPktYLCBjY3R4LT5LWCArIDE2LCAm Y2N0eC0+ZGZfa3hrcyk7Ci0rICAgIGlmIChjY3R4LT5rZXlsZW4gIT0gMTYpCi0rICAgICAgICBB RVNfZW5jcnlwdChjY3R4LT5LWCArIDE2LCBjY3R4LT5LWCArIDMyLCAmY2N0eC0+ZGZfa3hrcyk7 Ci0rI2lmIDAKLSsgICAgZnByaW50ZihzdGRlcnIsICJPdXRwdXQgb2YgY3RyX2RmOlxuIik7Ci0r ICAgIEJJT19kdW1wX2ZwKHN0ZGVyciwgY2N0eC0+S1gsIGNjdHgtPmtleWxlbiArIDE2KTsKLSsj ZW5kaWYKLSt9Ci0rCi0rLyogTkIgdGhlIG5vLWRmICBVcGRhdGUgaW4gU1A4MDAtOTAgc3BlY2lm aWVzIGEgY29uc3RhbnQgaW5wdXQgbGVuZ3RoCi0rICogb2Ygc2VlZGxlbiwgaG93ZXZlciBvdGhl ciB1c2VzIG9mIHRoaXMgYWxnb3JpdGhtIHBhZCB0aGUgaW5wdXQgd2l0aAotKyAqIHplcm9lcyBp ZiBuZWNlc3NhcnkgYW5kIGhhdmUgdXAgdG8gdHdvIHBhcmFtZXRlcnMgWE9SZWQgdG9nZXRoZXIs Ci0rICogaGFuZGxlIGJvdGggY2FzZXMgaW4gdGhpcyBmdW5jdGlvbiBpbnN0ZWFkLgotKyAqLwot KwotK3N0YXRpYyB2b2lkIGN0cl9VcGRhdGUoRFJCR19DVFggKmRjdHgsCi0rICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbjEsIHNpemVfdCBpbjFsZW4sCi0rICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbjIsIHNpemVfdCBpbjJs ZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpub25jZSwg c2l6ZV90IG5vbmNlbGVuKQotK3sKLSsgICAgRFJCR19DVFJfQ1RYICpjY3R4ID0gJmRjdHgtPmQu Y3RyOwotKyAgICAvKiBrcyBpcyBhbHJlYWR5IHNldHVwIGZvciBjb3JyZWN0IGtleSAqLwotKyAg ICBpbmNfMTI4KGNjdHgpOwotKyAgICBBRVNfZW5jcnlwdChjY3R4LT5WLCBjY3R4LT5LLCAmY2N0 eC0+a3MpOwotKyAgICAvKiBJZiBrZXlsZW4gbG9uZ2VyIHRoYW4gMTI4IGJpdHMgbmVlZCBleHRy YSBlbmNyeXB0ICovCi0rICAgIGlmIChjY3R4LT5rZXlsZW4gIT0gMTYpIHsKLSsgICAgICAgIGlu Y18xMjgoY2N0eCk7Ci0rICAgICAgICBBRVNfZW5jcnlwdChjY3R4LT5WLCBjY3R4LT5LICsgMTYs ICZjY3R4LT5rcyk7Ci0rICAgIH0KLSsgICAgaW5jXzEyOChjY3R4KTsKLSsgICAgQUVTX2VuY3J5 cHQoY2N0eC0+ViwgY2N0eC0+ViwgJmNjdHgtPmtzKTsKLSsgICAgLyogSWYgMTkyIGJpdCBrZXkg cGFydCBvZiBWIGlzIG9uIGVuZCBvZiBLICovCi0rICAgIGlmIChjY3R4LT5rZXlsZW4gPT0gMjQp IHsKLSsgICAgICAgIG1lbWNweShjY3R4LT5WICsgOCwgY2N0eC0+ViwgOCk7Ci0rICAgICAgICBt ZW1jcHkoY2N0eC0+ViwgY2N0eC0+SyArIDI0LCA4KTsKLSsgICAgfQotKwotKyAgICBpZiAoZGN0 eC0+eGZsYWdzICYgRFJCR19GTEFHX0NUUl9VU0VfREYpIHsKLSsgICAgICAgIC8qIElmIG5vIGlu cHV0IHJldXNlIGV4aXN0aW5nIGRlcml2ZWQgdmFsdWUgKi8KLSsgICAgICAgIGlmIChpbjEgfHwg bm9uY2UgfHwgaW4yKQotKyAgICAgICAgICAgIGN0cl9kZihjY3R4LCBpbjEsIGluMWxlbiwgbm9u Y2UsIG5vbmNlbGVuLCBpbjIsIGluMmxlbik7Ci0rICAgICAgICAvKiBJZiB0aGlzIGEgcmV1c2Ug aW5wdXQgaW4xbGVuICE9IDAgKi8KLSsgICAgICAgIGlmIChpbjFsZW4pCi0rICAgICAgICAgICAg Y3RyX1hPUihjY3R4LCBjY3R4LT5LWCwgZGN0eC0+c2VlZGxlbik7Ci0rICAgIH0gZWxzZSB7Ci0r ICAgICAgICBjdHJfWE9SKGNjdHgsIGluMSwgaW4xbGVuKTsKLSsgICAgICAgIGN0cl9YT1IoY2N0 eCwgaW4yLCBpbjJsZW4pOwotKyAgICB9Ci0rCi0rICAgIEFFU19zZXRfZW5jcnlwdF9rZXkoY2N0 eC0+SywgZGN0eC0+c3RyZW5ndGgsICZjY3R4LT5rcyk7Ci0rI2lmIDAKLSsgICAgZnByaW50Zihz dGRlcnIsICJLK1YgYWZ0ZXIgdXBkYXRlIGlzOlxuIik7Ci0rICAgIEJJT19kdW1wX2ZwKHN0ZGVy ciwgY2N0eC0+SywgY2N0eC0+a2V5bGVuKTsKLSsgICAgQklPX2R1bXBfZnAoc3RkZXJyLCBjY3R4 LT5WLCAxNik7Ci0rI2VuZGlmCi0rfQotKwotK3N0YXRpYyBpbnQgZHJiZ19jdHJfaW5zdGFudGlh dGUoRFJCR19DVFggKmRjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1bnNpZ25lZCBjaGFyICplbnQsIHNpemVfdCBlbnRsZW4sCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpub25jZSwgc2l6ZV90IG5vbmNlbGVu LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAq cGVycywgc2l6ZV90IHBlcnNsZW4pCi0rewotKyAgICBEUkJHX0NUUl9DVFggKmNjdHggPSAmZGN0 eC0+ZC5jdHI7Ci0rICAgIG1lbXNldChjY3R4LT5LLCAwLCBzaXplb2YoY2N0eC0+SykpOwotKyAg ICBtZW1zZXQoY2N0eC0+ViwgMCwgc2l6ZW9mKGNjdHgtPlYpKTsKLSsgICAgQUVTX3NldF9lbmNy eXB0X2tleShjY3R4LT5LLCBkY3R4LT5zdHJlbmd0aCwgJmNjdHgtPmtzKTsKLSsgICAgY3RyX1Vw ZGF0ZShkY3R4LCBlbnQsIGVudGxlbiwgcGVycywgcGVyc2xlbiwgbm9uY2UsIG5vbmNlbGVuKTsK LSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbnQgZHJiZ19jdHJfcmVzZWVkKERSQkdf Q1RYICpkY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKmVudCwgc2l6ZV90IGVudGxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1bnNpZ25lZCBjaGFyICphZGluLCBzaXplX3QgYWRpbmxlbikKLSt7Ci0rICAgIGN0cl9VcGRh dGUoZGN0eCwgZW50LCBlbnRsZW4sIGFkaW4sIGFkaW5sZW4sIE5VTEwsIDApOwotKyAgICByZXR1 cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludCBkcmJnX2N0cl9nZW5lcmF0ZShEUkJHX0NUWCAqZGN0 eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6 ZV90IG91dGxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuKQotK3sKLSsgICAgRFJCR19DVFJfQ1RYICpjY3R4 ID0gJmRjdHgtPmQuY3RyOwotKyAgICBpZiAoYWRpbiAmJiBhZGlubGVuKSB7Ci0rICAgICAgICBj dHJfVXBkYXRlKGRjdHgsIGFkaW4sIGFkaW5sZW4sIE5VTEwsIDAsIE5VTEwsIDApOwotKyAgICAg ICAgLyogVGhpcyBtZWFucyB3ZSByZXVzZSBkZXJpdmVkIHZhbHVlICovCi0rICAgICAgICBpZiAo ZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX0NUUl9VU0VfREYpIHsKLSsgICAgICAgICAgICBhZGlu ID0gTlVMTDsKLSsgICAgICAgICAgICBhZGlubGVuID0gMTsKLSsgICAgICAgIH0KLSsgICAgfSBl bHNlCi0rICAgICAgICBhZGlubGVuID0gMDsKLSsKLSsgICAgZm9yICg7OykgewotKyAgICAgICAg aW5jXzEyOChjY3R4KTsKLSsgICAgICAgIGlmICghKGRjdHgtPnhmbGFncyAmIERSQkdfRkxBR19U RVNUKSAmJiAhZGN0eC0+bGJfdmFsaWQpIHsKLSsgICAgICAgICAgICBBRVNfZW5jcnlwdChjY3R4 LT5WLCBkY3R4LT5sYiwgJmNjdHgtPmtzKTsKLSsgICAgICAgICAgICBkY3R4LT5sYl92YWxpZCA9 IDE7Ci0rICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAob3V0 bGVuIDwgMTYpIHsKLSsgICAgICAgICAgICAvKiBVc2UgSyBhcyB0ZW1wIHNwYWNlIGFzIGl0IHdp bGwgYmUgdXBkYXRlZCAqLwotKyAgICAgICAgICAgIEFFU19lbmNyeXB0KGNjdHgtPlYsIGNjdHgt PkssICZjY3R4LT5rcyk7Ci0rICAgICAgICAgICAgaWYgKCFmaXBzX2RyYmdfY3BybmdfdGVzdChk Y3R4LCBjY3R4LT5LKSkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAg bWVtY3B5KG91dCwgY2N0eC0+Sywgb3V0bGVuKTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAg ICAgIH0KLSsgICAgICAgIEFFU19lbmNyeXB0KGNjdHgtPlYsIG91dCwgJmNjdHgtPmtzKTsKLSsg ICAgICAgIGlmICghZmlwc19kcmJnX2Nwcm5nX3Rlc3QoZGN0eCwgb3V0KSkKLSsgICAgICAgICAg ICByZXR1cm4gMDsKLSsgICAgICAgIG91dCArPSAxNjsKLSsgICAgICAgIG91dGxlbiAtPSAxNjsK LSsgICAgICAgIGlmIChvdXRsZW4gPT0gMCkKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgfQot KwotKyAgICBjdHJfVXBkYXRlKGRjdHgsIGFkaW4sIGFkaW5sZW4sIE5VTEwsIDAsIE5VTEwsIDAp OwotKwotKyAgICByZXR1cm4gMTsKLSsKLSt9Ci0rCi0rc3RhdGljIGludCBkcmJnX2N0cl91bmlu c3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4KQotK3sKLSsgICAgbWVtc2V0KCZkY3R4LT5kLmN0ciwg MCwgc2l6ZW9mKERSQkdfQ1RSX0NUWCkpOwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0raW50IGZp cHNfZHJiZ19jdHJfaW5pdChEUkJHX0NUWCAqZGN0eCkKLSt7Ci0rICAgIERSQkdfQ1RSX0NUWCAq Y2N0eCA9ICZkY3R4LT5kLmN0cjsKLSsKLSsgICAgc2l6ZV90IGtleWxlbjsKLSsKLSsgICAgc3dp dGNoIChkY3R4LT50eXBlKSB7Ci0rICAgIGNhc2UgTklEX2Flc18xMjhfY3RyOgotKyAgICAgICAg a2V5bGVuID0gMTY7Ci0rICAgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzE5Ml9j dHI6Ci0rICAgICAgICBrZXlsZW4gPSAyNDsKLSsgICAgICAgIGJyZWFrOwotKwotKyAgICBjYXNl IE5JRF9hZXNfMjU2X2N0cjoKLSsgICAgICAgIGtleWxlbiA9IDMyOwotKyAgICAgICAgYnJlYWs7 Ci0rCi0rICAgIGRlZmF1bHQ6Ci0rICAgICAgICByZXR1cm4gLTI7Ci0rICAgIH0KLSsKLSsgICAg ZGN0eC0+aW5zdGFudGlhdGUgPSBkcmJnX2N0cl9pbnN0YW50aWF0ZTsKLSsgICAgZGN0eC0+cmVz ZWVkID0gZHJiZ19jdHJfcmVzZWVkOwotKyAgICBkY3R4LT5nZW5lcmF0ZSA9IGRyYmdfY3RyX2dl bmVyYXRlOwotKyAgICBkY3R4LT51bmluc3RhbnRpYXRlID0gZHJiZ19jdHJfdW5pbnN0YW50aWF0 ZTsKLSsKLSsgICAgY2N0eC0+a2V5bGVuID0ga2V5bGVuOwotKyAgICBkY3R4LT5zdHJlbmd0aCA9 IGtleWxlbiAqIDg7Ci0rICAgIGRjdHgtPmJsb2NrbGVuZ3RoID0gMTY7Ci0rICAgIGRjdHgtPnNl ZWRsZW4gPSBrZXlsZW4gKyAxNjsKLSsKLSsgICAgaWYgKGRjdHgtPnhmbGFncyAmIERSQkdfRkxB R19DVFJfVVNFX0RGKSB7Ci0rICAgICAgICAvKiBkZiBpbml0aWFsaXNhdGlvbiAqLwotKyAgICAg ICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgZGZfa2V5WzMyXSA9IHsKLSsgICAgICAgICAgICAweDAw LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAotKyAgICAgICAgICAg IDB4MDgsIDB4MDksIDB4MGEsIDB4MGIsIDB4MGMsIDB4MGQsIDB4MGUsIDB4MGYsCi0rICAgICAg ICAgICAgMHgxMCwgMHgxMSwgMHgxMiwgMHgxMywgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNywKLSsg ICAgICAgICAgICAweDE4LCAweDE5LCAweDFhLCAweDFiLCAweDFjLCAweDFkLCAweDFlLCAweDFm Ci0rICAgICAgICB9OwotKyAgICAgICAgLyogU2V0IGtleSBzY2hlZHVsZSBmb3IgZGZfa2V5ICov Ci0rICAgICAgICBBRVNfc2V0X2VuY3J5cHRfa2V5KGRmX2tleSwgZGN0eC0+c3RyZW5ndGgsICZj Y3R4LT5kZl9rcyk7Ci0rCi0rICAgICAgICBkY3R4LT5taW5fZW50cm9weSA9IGNjdHgtPmtleWxl bjsKLSsgICAgICAgIGRjdHgtPm1heF9lbnRyb3B5ID0gRFJCR19NQVhfTEVOR1RIOwotKyAgICAg ICAgZGN0eC0+bWluX25vbmNlID0gZGN0eC0+bWluX2VudHJvcHkgLyAyOwotKyAgICAgICAgZGN0 eC0+bWF4X25vbmNlID0gRFJCR19NQVhfTEVOR1RIOwotKyAgICAgICAgZGN0eC0+bWF4X3BlcnMg PSBEUkJHX01BWF9MRU5HVEg7Ci0rICAgICAgICBkY3R4LT5tYXhfYWRpbiA9IERSQkdfTUFYX0xF TkdUSDsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGRjdHgtPm1pbl9lbnRyb3B5ID0gZGN0eC0+ c2VlZGxlbjsKLSsgICAgICAgIGRjdHgtPm1heF9lbnRyb3B5ID0gZGN0eC0+c2VlZGxlbjsKLSsg ICAgICAgIC8qIE5vbmNlIG5vdCB1c2VkICovCi0rICAgICAgICBkY3R4LT5taW5fbm9uY2UgPSAw OwotKyAgICAgICAgZGN0eC0+bWF4X25vbmNlID0gMDsKLSsgICAgICAgIGRjdHgtPm1heF9wZXJz ID0gZGN0eC0+c2VlZGxlbjsKLSsgICAgICAgIGRjdHgtPm1heF9hZGluID0gZGN0eC0+c2VlZGxl bjsKLSsgICAgfQotKwotKyAgICBkY3R4LT5tYXhfcmVxdWVzdCA9IDEgPDwgMTY7Ci0rICAgIGRj dHgtPnJlc2VlZF9pbnRlcnZhbCA9IDEgPDwgMjQ7Ci0rCi0rICAgIHJldHVybiAxOwotK30KLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19oYXNoLmMuZmlwcyBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfaGFzaC5jCi0tLS0gb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2hhc2guYy5maXBzCTIwMTUtMDQtMjIgMTY6MDg6 NDAuMjk1MjQ1NzI1ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19k cmJnX2hhc2guYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NTI0NTcyNSArMDIwMAotQEAgLTAsMCAr MSwzNTggQEAKLSsvKiBmaXBzL3JhbmQvZmlwc19kcmJnX2hhc2guYyAqLwotKy8qIFdyaXR0ZW4g YnkgRHIgU3RlcGhlbiBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0aGUgT3BlblNT TAotKyAqIHByb2plY3QuCi0rICovCi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMp IDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsg KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVk aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsg KiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp dGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5n IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29m dHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAg IlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wg UHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93 d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0 IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9y c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0 Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9u LCBwbGVhc2UgY29udGFjdAotKyAqICAgIGxpY2Vuc2luZ0BPcGVuU1NMLm9yZy4KLSsgKgotKyAq IDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVk ICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1l cyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NM IFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNv ZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0r ICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9w ZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0 cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF RCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VE IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI RQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO VCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBM SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAq IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ Q0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF UlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBX QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICog T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICov Ci0rCi0rI2RlZmluZSBPUEVOU1NMX0ZJUFNBUEkKLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0r I2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgotKyNpbmNs dWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KLSsj aW5jbHVkZSAiZmlwc19yYW5kX2xjbC5oIgotKwotKy8qIFRoaXMgaXMgSGFzaF9kZiBmcm9tIFNQ IDgwMC05MCAxMC40LjEgKi8KLSsKLStzdGF0aWMgaW50IGhhc2hfZGYoRFJCR19DVFggKmRjdHgs IHVuc2lnbmVkIGNoYXIgKm91dCwKLSsgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg Y2hhciAqaW4xLCBzaXplX3QgaW4xbGVuLAotKyAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp Z25lZCBjaGFyICppbjIsIHNpemVfdCBpbjJsZW4sCi0rICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKmluMywgc2l6ZV90IGluM2xlbiwKLSsgICAgICAgICAgICAgICAgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqaW40LCBzaXplX3QgaW40bGVuKQotK3sKLSsgICAgRVZQX01E X0NUWCAqbWN0eCA9ICZkY3R4LT5kLmhhc2gubWN0eDsKLSsgICAgdW5zaWduZWQgY2hhciAqdnRt cCA9IGRjdHgtPmQuaGFzaC52dG1wOwotKyAgICB1bnNpZ25lZCBjaGFyIHRtcFs2XTsKLSsgICAg LyogU3RhbmRhcmQgb25seSBldmVyIG5lZWRzIHNlZWRsZW4gYnl0ZXMgd2hpY2ggaXMgYWx3YXlz IGxlc3MgdGhhbgotKyAgICAgKiBtYXhpbXVtIHBlcm1pdHRlZCBzbyBubyBuZWVkIHRvIGNoZWNr IGxlbmd0aC4KLSsgICAgICovCi0rICAgIHNpemVfdCBvdXRsZW4gPSBkY3R4LT5zZWVkbGVuOwot KyAgICB0bXBbMF0gPSAxOwotKyAgICB0bXBbMV0gPSAoKG91dGxlbiAqIDgpID4+IDI0KSAmIDB4 ZmY7Ci0rICAgIHRtcFsyXSA9ICgob3V0bGVuICogOCkgPj4gMTYpICYgMHhmZjsKLSsgICAgdG1w WzNdID0gKChvdXRsZW4gKiA4KSA+PiA4KSAmIDB4ZmY7Ci0rICAgIHRtcFs0XSA9IChvdXRsZW4g KiA4KSAmIDB4ZmY7Ci0rICAgIGlmICghaW4xKSB7Ci0rICAgICAgICB0bXBbNV0gPSAodW5zaWdu ZWQgY2hhcilpbjFsZW47Ci0rICAgICAgICBpbjEgPSB0bXAgKyA1OwotKyAgICAgICAgaW4xbGVu ID0gMTsKLSsgICAgfQotKyAgICBmb3IgKDs7KSB7Ci0rICAgICAgICBpZiAoIUZJUFNfZGlnZXN0 aW5pdChtY3R4LCBkY3R4LT5kLmhhc2gubWQpKQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAg ICAgICAgaWYgKCFGSVBTX2RpZ2VzdHVwZGF0ZShtY3R4LCB0bXAsIDUpKQotKyAgICAgICAgICAg IHJldHVybiAwOwotKyAgICAgICAgaWYgKGluMSAmJiAhRklQU19kaWdlc3R1cGRhdGUobWN0eCwg aW4xLCBpbjFsZW4pKQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgaWYgKGluMiAm JiAhRklQU19kaWdlc3R1cGRhdGUobWN0eCwgaW4yLCBpbjJsZW4pKQotKyAgICAgICAgICAgIHJl dHVybiAwOwotKyAgICAgICAgaWYgKGluMyAmJiAhRklQU19kaWdlc3R1cGRhdGUobWN0eCwgaW4z LCBpbjNsZW4pKQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgaWYgKGluNCAmJiAh RklQU19kaWdlc3R1cGRhdGUobWN0eCwgaW40LCBpbjRsZW4pKQotKyAgICAgICAgICAgIHJldHVy biAwOwotKyAgICAgICAgaWYgKG91dGxlbiA8IGRjdHgtPmJsb2NrbGVuZ3RoKSB7Ci0rICAgICAg ICAgICAgaWYgKCFGSVBTX2RpZ2VzdGZpbmFsKG1jdHgsIHZ0bXAsIE5VTEwpKQotKyAgICAgICAg ICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICBtZW1jcHkob3V0LCB2dG1wLCBvdXRsZW4p OwotKyAgICAgICAgICAgIE9QRU5TU0xfY2xlYW5zZSh2dG1wLCBkY3R4LT5ibG9ja2xlbmd0aCk7 Ci0rICAgICAgICAgICAgcmV0dXJuIDE7Ci0rICAgICAgICB9IGVsc2UgaWYgKCFGSVBTX2RpZ2Vz dGZpbmFsKG1jdHgsIG91dCwgTlVMTCkpCi0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rCi0rICAg ICAgICBvdXRsZW4gLT0gZGN0eC0+YmxvY2tsZW5ndGg7Ci0rICAgICAgICBpZiAob3V0bGVuID09 IDApCi0rICAgICAgICAgICAgcmV0dXJuIDE7Ci0rICAgICAgICB0bXBbMF0rKzsKLSsgICAgICAg IG91dCArPSBkY3R4LT5ibG9ja2xlbmd0aDsKLSsgICAgfQotK30KLSsKLSsvKiBBZGQgYW4gdW5z aWduZWQgYnVmZmVyIHRvIHRoZSBidWYgdmFsdWUsIHN0b3JpbmcgdGhlIHJlc3VsdCBpbiBidWYu IEZvcgotKyAqIHRoaXMgYWxnb3JpdGhtIHRoZSBsZW5ndGggb2YgaW5wdXQgbmV2ZXIgZXhjZWVk cyB0aGUgc2VlZCBsZW5ndGguCi0rICovCi0rCi0rc3RhdGljIHZvaWQgY3R4X2FkZF9idWYoRFJC R19DVFggKmRjdHgsIHVuc2lnbmVkIGNoYXIgKmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubGVuKQotK3sKLSsgICAgc2l6ZV90IGkgPSBp bmxlbjsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcTsKLSsgICAgdW5zaWduZWQgY2hhciBj LCAqcDsKLSsgICAgcCA9IGJ1ZiArIGRjdHgtPnNlZWRsZW47Ci0rICAgIHEgPSBpbiArIGlubGVu OwotKwotKyAgICBPUEVOU1NMX2Fzc2VydChpIDw9IGRjdHgtPnNlZWRsZW4pOwotKwotKyAgICAv KiBTcGVjaWFsIGNhc2U6IHplcm8gbGVuZ3RoLCBqdXN0IGluY3JlbWVudCBidWZmZXIgKi8KLSsg ICAgaWYgKGkpCi0rICAgICAgICBjID0gMDsKLSsgICAgZWxzZQotKyAgICAgICAgYyA9IDE7Ci0r Ci0rICAgIHdoaWxlIChpKSB7Ci0rICAgICAgICBpbnQgcjsKLSsgICAgICAgIHAtLTsKLSsgICAg ICAgIHEtLTsKLSsgICAgICAgIHIgPSAqcCArICpxICsgYzsKLSsgICAgICAgIC8qIENhcnJ5ICov Ci0rICAgICAgICBpZiAociA+IDB4ZmYpCi0rICAgICAgICAgICAgYyA9IDE7Ci0rICAgICAgICBl bHNlCi0rICAgICAgICAgICAgYyA9IDA7Ci0rICAgICAgICAqcCA9IHIgJiAweGZmOwotKyAgICAg ICAgaS0tOwotKyAgICB9Ci0rCi0rICAgIGkgPSBkY3R4LT5zZWVkbGVuIC0gaW5sZW47Ci0rCi0r ICAgIC8qIElmIG5vdCBhZGRpbmcgd2hvbGUgYnVmZmVyIGhhbmRsZSBmaW5hbCBjYXJyaWVzICov Ci0rICAgIGlmIChjICYmIGkpIHsKLSsgICAgICAgIGRvIHsKLSsgICAgICAgICAgICBwLS07Ci0r ICAgICAgICAgICAgYyA9ICpwOwotKyAgICAgICAgICAgIGMrKzsKLSsgICAgICAgICAgICAqcCA9 IGM7Ci0rICAgICAgICAgICAgaWYgKGMpCi0rICAgICAgICAgICAgICAgIHJldHVybjsKLSsgICAg ICAgIH0gd2hpbGUgKGktLSk7Ci0rICAgIH0KLSt9Ci0rCi0rLyogRmluYWxpc2UgYW5kIGFkZCBo YXNoIHRvIFYgKi8KLSsKLStzdGF0aWMgaW50IGN0eF9hZGRfbWQoRFJCR19DVFggKmRjdHgpCi0r ewotKyAgICBpZiAoIUZJUFNfZGlnZXN0ZmluYWwoJmRjdHgtPmQuaGFzaC5tY3R4LCBkY3R4LT5k Lmhhc2gudnRtcCwgTlVMTCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgY3R4X2FkZF9idWYo ZGN0eCwgZGN0eC0+ZC5oYXNoLlYsIGRjdHgtPmQuaGFzaC52dG1wLCBkY3R4LT5ibG9ja2xlbmd0 aCk7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgaW50IGhhc2hfZ2VuKERSQkdfQ1RY ICpkY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4pCi0rewotKyAgICBEUkJH X0hBU0hfQ1RYICpoY3R4ID0gJmRjdHgtPmQuaGFzaDsKLSsgICAgaWYgKG91dGxlbiA9PSAwKQot KyAgICAgICAgcmV0dXJuIDE7Ci0rICAgIG1lbWNweShoY3R4LT52dG1wLCBoY3R4LT5WLCBkY3R4 LT5zZWVkbGVuKTsKLSsgICAgZm9yICg7OykgewotKyAgICAgICAgRklQU19kaWdlc3Rpbml0KCZo Y3R4LT5tY3R4LCBoY3R4LT5tZCk7Ci0rICAgICAgICBGSVBTX2RpZ2VzdHVwZGF0ZSgmaGN0eC0+ bWN0eCwgaGN0eC0+dnRtcCwgZGN0eC0+c2VlZGxlbik7Ci0rICAgICAgICBpZiAoIShkY3R4LT54 ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkgJiYgIWRjdHgtPmxiX3ZhbGlkKSB7Ci0rICAgICAgICAg ICAgRklQU19kaWdlc3RmaW5hbCgmaGN0eC0+bWN0eCwgZGN0eC0+bGIsIE5VTEwpOwotKyAgICAg ICAgICAgIGRjdHgtPmxiX3ZhbGlkID0gMTsKLSsgICAgICAgIH0gZWxzZSBpZiAob3V0bGVuIDwg ZGN0eC0+YmxvY2tsZW5ndGgpIHsKLSsgICAgICAgICAgICBGSVBTX2RpZ2VzdGZpbmFsKCZoY3R4 LT5tY3R4LCBoY3R4LT52dG1wLCBOVUxMKTsKLSsgICAgICAgICAgICBpZiAoIWZpcHNfZHJiZ19j cHJuZ190ZXN0KGRjdHgsIGhjdHgtPnZ0bXApKQotKyAgICAgICAgICAgICAgICByZXR1cm4gMDsK LSsgICAgICAgICAgICBtZW1jcHkob3V0LCBoY3R4LT52dG1wLCBvdXRsZW4pOwotKyAgICAgICAg ICAgIHJldHVybiAxOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBGSVBTX2RpZ2Vz dGZpbmFsKCZoY3R4LT5tY3R4LCBvdXQsIE5VTEwpOwotKyAgICAgICAgICAgIGlmICghZmlwc19k cmJnX2Nwcm5nX3Rlc3QoZGN0eCwgb3V0KSkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0r ICAgICAgICAgICAgb3V0bGVuIC09IGRjdHgtPmJsb2NrbGVuZ3RoOwotKyAgICAgICAgICAgIGlm IChvdXRsZW4gPT0gMCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0rICAgICAgICAgICAg b3V0ICs9IGRjdHgtPmJsb2NrbGVuZ3RoOwotKyAgICAgICAgfQotKyAgICAgICAgY3R4X2FkZF9i dWYoZGN0eCwgaGN0eC0+dnRtcCwgTlVMTCwgMCk7Ci0rICAgIH0KLSt9Ci0rCi0rc3RhdGljIGlu dCBkcmJnX2hhc2hfaW5zdGFudGlhdGUoRFJCR19DVFggKmRjdHgsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50LCBzaXplX3QgZW50X2xl biwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy ICpub25jZSwgc2l6ZV90IG5vbmNlX2xlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwc3RyLCBzaXplX3QgcHN0cl9sZW4pCi0rewotKyAg ICBEUkJHX0hBU0hfQ1RYICpoY3R4ID0gJmRjdHgtPmQuaGFzaDsKLSsgICAgaWYgKCFoYXNoX2Rm KGRjdHgsIGhjdHgtPlYsCi0rICAgICAgICAgICAgICAgICBlbnQsIGVudF9sZW4sIG5vbmNlLCBu b25jZV9sZW4sIHBzdHIsIHBzdHJfbGVuLCBOVUxMLCAwKSkKLSsgICAgICAgIHJldHVybiAwOwot KyAgICBpZiAoIWhhc2hfZGYoZGN0eCwgaGN0eC0+QywKLSsgICAgICAgICAgICAgICAgIE5VTEws IDAsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4sIE5VTEwsIDAsIE5VTEwsIDApKQotKyAgICAgICAg cmV0dXJuIDA7Ci0rCi0rI2lmZGVmIEhBU0hfRFJCR19UUkFDRQotKyAgICBmcHJpbnRmKHN0ZGVy ciwgIlYrQyBhZnRlciBpbnN0YW50aWF0ZTpcbiIpOwotKyAgICBoZXhwcmludChzdGRlcnIsIGhj dHgtPlYsIGRjdHgtPnNlZWRsZW4pOwotKyAgICBoZXhwcmludChzdGRlcnIsIGhjdHgtPkMsIGRj dHgtPnNlZWRsZW4pOwotKyNlbmRpZgotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGlu dCBkcmJnX2hhc2hfcmVzZWVkKERSQkdfQ1RYICpkY3R4LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnQsIHNpemVfdCBlbnRfbGVuLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluLCBzaXplX3Qg YWRpbl9sZW4pCi0rewotKyAgICBEUkJHX0hBU0hfQ1RYICpoY3R4ID0gJmRjdHgtPmQuaGFzaDsK LSsgICAgLyogViBhYm91dCB0byBiZSB1cGRhdGVkIHNvIHVzZSBDIGFzIG91dHB1dCBpbnN0ZWFk ICovCi0rICAgIGlmICghaGFzaF9kZihkY3R4LCBoY3R4LT5DLAotKyAgICAgICAgICAgICAgICAg TlVMTCwgMSwgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbiwKLSsgICAgICAgICAgICAgICAgIGVudCwg ZW50X2xlbiwgYWRpbiwgYWRpbl9sZW4pKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIG1lbWNw eShoY3R4LT5WLCBoY3R4LT5DLCBkY3R4LT5zZWVkbGVuKTsKLSsgICAgaWYgKCFoYXNoX2RmKGRj dHgsIGhjdHgtPkMsIE5VTEwsIDAsCi0rICAgICAgICAgICAgICAgICBoY3R4LT5WLCBkY3R4LT5z ZWVkbGVuLCBOVUxMLCAwLCBOVUxMLCAwKSkKLSsgICAgICAgIHJldHVybiAwOwotKyNpZmRlZiBI QVNIX0RSQkdfVFJBQ0UKLSsgICAgZnByaW50ZihzdGRlcnIsICJWK0MgYWZ0ZXIgcmVzZWVkOlxu Iik7Ci0rICAgIGhleHByaW50KHN0ZGVyciwgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbik7Ci0rICAg IGhleHByaW50KHN0ZGVyciwgaGN0eC0+QywgZGN0eC0+c2VlZGxlbik7Ci0rI2VuZGlmCi0rICAg IHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgaW50IGRyYmdfaGFzaF9nZW5lcmF0ZShEUkJHX0NU WCAqZGN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpv dXQsIHNpemVfdCBvdXRsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5fbGVuKQotK3sKLSsgICAgRFJCR19IQVNI X0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhhc2g7Ci0rICAgIEVWUF9NRF9DVFggKm1jdHggPSAmaGN0 eC0+bWN0eDsKLSsgICAgdW5zaWduZWQgY2hhciB0bXBbNF07Ci0rICAgIGlmIChhZGluICYmIGFk aW5fbGVuKSB7Ci0rICAgICAgICB0bXBbMF0gPSAyOwotKyAgICAgICAgaWYgKCFGSVBTX2RpZ2Vz dGluaXQobWN0eCwgaGN0eC0+bWQpKQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAg aWYgKCFFVlBfRGlnZXN0VXBkYXRlKG1jdHgsIHRtcCwgMSkpCi0rICAgICAgICAgICAgcmV0dXJu IDA7Ci0rICAgICAgICBpZiAoIUVWUF9EaWdlc3RVcGRhdGUobWN0eCwgaGN0eC0+ViwgZGN0eC0+ c2VlZGxlbikpCi0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICBpZiAoIUVWUF9EaWdl c3RVcGRhdGUobWN0eCwgYWRpbiwgYWRpbl9sZW4pKQotKyAgICAgICAgICAgIHJldHVybiAwOwot KyAgICAgICAgaWYgKCFjdHhfYWRkX21kKGRjdHgpKQotKyAgICAgICAgICAgIHJldHVybiAwOwot KyAgICB9Ci0rICAgIGlmICghaGFzaF9nZW4oZGN0eCwgb3V0LCBvdXRsZW4pKQotKyAgICAgICAg cmV0dXJuIDA7Ci0rCi0rICAgIHRtcFswXSA9IDM7Ci0rICAgIGlmICghRklQU19kaWdlc3Rpbml0 KG1jdHgsIGhjdHgtPm1kKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoIUVWUF9EaWdl c3RVcGRhdGUobWN0eCwgdG1wLCAxKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoIUVW UF9EaWdlc3RVcGRhdGUobWN0eCwgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbikpCi0rICAgICAgICBy ZXR1cm4gMDsKLSsKLSsgICAgaWYgKCFjdHhfYWRkX21kKGRjdHgpKQotKyAgICAgICAgcmV0dXJu IDA7Ci0rCi0rICAgIGN0eF9hZGRfYnVmKGRjdHgsIGhjdHgtPlYsIGhjdHgtPkMsIGRjdHgtPnNl ZWRsZW4pOwotKwotKyAgICB0bXBbMF0gPSAoZGN0eC0+cmVzZWVkX2NvdW50ZXIgPj4gMjQpICYg MHhmZjsKLSsgICAgdG1wWzFdID0gKGRjdHgtPnJlc2VlZF9jb3VudGVyID4+IDE2KSAmIDB4ZmY7 Ci0rICAgIHRtcFsyXSA9IChkY3R4LT5yZXNlZWRfY291bnRlciA+PiA4KSAmIDB4ZmY7Ci0rICAg IHRtcFszXSA9IGRjdHgtPnJlc2VlZF9jb3VudGVyICYgMHhmZjsKLSsgICAgY3R4X2FkZF9idWYo ZGN0eCwgaGN0eC0+ViwgdG1wLCA0KTsKLSsjaWZkZWYgSEFTSF9EUkJHX1RSQUNFCi0rICAgIGZw cmludGYoc3RkZXJyLCAiVitDIGFmdGVyIGdlbmVyYXRlOlxuIik7Ci0rICAgIGhleHByaW50KHN0 ZGVyciwgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbik7Ci0rICAgIGhleHByaW50KHN0ZGVyciwgaGN0 eC0+QywgZGN0eC0+c2VlZGxlbik7Ci0rI2VuZGlmCi0rICAgIHJldHVybiAxOwotK30KLSsKLStz dGF0aWMgaW50IGRyYmdfaGFzaF91bmluc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4KQotK3sKLSsg ICAgRVZQX01EX0NUWF9jbGVhbnVwKCZkY3R4LT5kLmhhc2gubWN0eCk7Ci0rICAgIE9QRU5TU0xf Y2xlYW5zZSgmZGN0eC0+ZC5oYXNoLCBzaXplb2YoRFJCR19IQVNIX0NUWCkpOwotKyAgICByZXR1 cm4gMTsKLSt9Ci0rCi0raW50IGZpcHNfZHJiZ19oYXNoX2luaXQoRFJCR19DVFggKmRjdHgpCi0r ewotKyAgICBjb25zdCBFVlBfTUQgKm1kOwotKyAgICBEUkJHX0hBU0hfQ1RYICpoY3R4ID0gJmRj dHgtPmQuaGFzaDsKLSsgICAgbWQgPSBGSVBTX2dldF9kaWdlc3RieW5pZChkY3R4LT50eXBlKTsK LSsgICAgaWYgKCFtZCkKLSsgICAgICAgIHJldHVybiAtMjsKLSsgICAgc3dpdGNoIChkY3R4LT50 eXBlKSB7Ci0rICAgIGNhc2UgTklEX3NoYTE6Ci0rICAgICAgICBkY3R4LT5zdHJlbmd0aCA9IDEy ODsKLSsgICAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIE5JRF9zaGEyMjQ6Ci0rICAgICAgICBk Y3R4LT5zdHJlbmd0aCA9IDE5MjsKLSsgICAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0Ogot KyAgICAgICAgZGN0eC0+c3RyZW5ndGggPSAyNTY7Ci0rICAgICAgICBicmVhazsKLSsgICAgfQot KwotKyAgICBkY3R4LT5pbnN0YW50aWF0ZSA9IGRyYmdfaGFzaF9pbnN0YW50aWF0ZTsKLSsgICAg ZGN0eC0+cmVzZWVkID0gZHJiZ19oYXNoX3Jlc2VlZDsKLSsgICAgZGN0eC0+Z2VuZXJhdGUgPSBk cmJnX2hhc2hfZ2VuZXJhdGU7Ci0rICAgIGRjdHgtPnVuaW5zdGFudGlhdGUgPSBkcmJnX2hhc2hf dW5pbnN0YW50aWF0ZTsKLSsKLSsgICAgZGN0eC0+ZC5oYXNoLm1kID0gbWQ7Ci0rICAgIEVWUF9N RF9DVFhfaW5pdCgmaGN0eC0+bWN0eCk7Ci0rCi0rICAgIC8qIFRoZXNlIGFyZSB0YWtlbiBmcm9t IFNQIDgwMC05MCAxMC4xIHRhYmxlIDIgKi8KLSsKLSsgICAgZGN0eC0+YmxvY2tsZW5ndGggPSBN X0VWUF9NRF9zaXplKG1kKTsKLSsgICAgaWYgKGRjdHgtPmJsb2NrbGVuZ3RoID4gMzIpCi0rICAg ICAgICBkY3R4LT5zZWVkbGVuID0gMTExOwotKyAgICBlbHNlCi0rICAgICAgICBkY3R4LT5zZWVk bGVuID0gNTU7Ci0rCi0rICAgIGRjdHgtPm1pbl9lbnRyb3B5ID0gZGN0eC0+c3RyZW5ndGggLyA4 OwotKyAgICBkY3R4LT5tYXhfZW50cm9weSA9IERSQkdfTUFYX0xFTkdUSDsKLSsKLSsgICAgZGN0 eC0+bWluX25vbmNlID0gZGN0eC0+bWluX2VudHJvcHkgLyAyOwotKyAgICBkY3R4LT5tYXhfbm9u Y2UgPSBEUkJHX01BWF9MRU5HVEg7Ci0rCi0rICAgIGRjdHgtPm1heF9wZXJzID0gRFJCR19NQVhf TEVOR1RIOwotKyAgICBkY3R4LT5tYXhfYWRpbiA9IERSQkdfTUFYX0xFTkdUSDsKLSsKLSsgICAg ZGN0eC0+bWF4X3JlcXVlc3QgPSAxIDw8IDE2OwotKyAgICBkY3R4LT5yZXNlZWRfaW50ZXJ2YWwg PSAxIDw8IDI0OwotKwotKyAgICByZXR1cm4gMTsKLSt9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vZmlwcy9maXBzX2RyYmdfaG1hYy5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2ZpcHMvZmlwc19kcmJnX2htYWMuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2Zp cHNfZHJiZ19obWFjLmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NTI0NTcyNSArMDIwMAot KysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19obWFjLmMJMjAxNS0wNC0y MiAxNjowODo0MC4yOTUyNDU3MjUgKzAyMDAKLUBAIC0wLDAgKzEsMjcwIEBACi0rLyogZmlwcy9y YW5kL2ZpcHNfZHJiZ19obWFjLmMgKi8KLSsvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5z b24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAq LwotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFBy b2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9k aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsg KgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3Ry aWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmlu ZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0 aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3Ig dXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0r ICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2pl Y3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsg KiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVk IGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBu b3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0 dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICog Ni4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhl IGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3Qg aW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAg ICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcv KSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJP SkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJ RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsg KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wg UFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJP Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVT RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VW RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U UkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D RSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBP RiBTVUNIIERBTUFHRS4KLSsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqLwotKwotKyNpbmNsdWRlIDxzdGRs aWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+ Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgot KyNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsj aW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KLSsjaW5jbHVkZSAiZmlwc19yYW5kX2xjbC5o IgotKwotK3N0YXRpYyBpbnQgZHJiZ19obWFjX3VwZGF0ZShEUkJHX0NUWCAqZGN0eCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4xLCBzaXplX3Qg aW4xbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy ICppbjIsIHNpemVfdCBpbjJsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKmluMywgc2l6ZV90IGluM2xlbikKLSt7Ci0rICAgIHN0YXRpYyB1bnNp Z25lZCBjaGFyIGMwID0gMCwgYzEgPSAxOwotKyAgICBEUkJHX0hNQUNfQ1RYICpobWFjID0gJmRj dHgtPmQuaG1hYzsKLSsgICAgSE1BQ19DVFggKmhjdHggPSAmaG1hYy0+aGN0eDsKLSsKLSsgICAg aWYgKCFITUFDX0luaXRfZXgoaGN0eCwgaG1hYy0+SywgZGN0eC0+YmxvY2tsZW5ndGgsIGhtYWMt Pm1kLCBOVUxMKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoIUhNQUNfVXBkYXRlKGhj dHgsIGhtYWMtPlYsIGRjdHgtPmJsb2NrbGVuZ3RoKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAg ICBpZiAoIUhNQUNfVXBkYXRlKGhjdHgsICZjMCwgMSkpCi0rICAgICAgICByZXR1cm4gMDsKLSsg ICAgaWYgKGluMWxlbiAmJiAhSE1BQ19VcGRhdGUoaGN0eCwgaW4xLCBpbjFsZW4pKQotKyAgICAg ICAgcmV0dXJuIDA7Ci0rICAgIGlmIChpbjJsZW4gJiYgIUhNQUNfVXBkYXRlKGhjdHgsIGluMiwg aW4ybGVuKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoaW4zbGVuICYmICFITUFDX1Vw ZGF0ZShoY3R4LCBpbjMsIGluM2xlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgaWYg KCFITUFDX0ZpbmFsKGhjdHgsIGhtYWMtPkssIE5VTEwpKQotKyAgICAgICAgcmV0dXJuIDA7Ci0r Ci0rICAgIGlmICghSE1BQ19Jbml0X2V4KGhjdHgsIGhtYWMtPkssIGRjdHgtPmJsb2NrbGVuZ3Ro LCBobWFjLT5tZCwgTlVMTCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKCFITUFDX1Vw ZGF0ZShoY3R4LCBobWFjLT5WLCBkY3R4LT5ibG9ja2xlbmd0aCkpCi0rICAgICAgICByZXR1cm4g MDsKLSsKLSsgICAgaWYgKCFITUFDX0ZpbmFsKGhjdHgsIGhtYWMtPlYsIE5VTEwpKQotKyAgICAg ICAgcmV0dXJuIDA7Ci0rCi0rICAgIGlmICghaW4xbGVuICYmICFpbjJsZW4gJiYgIWluM2xlbikK LSsgICAgICAgIHJldHVybiAxOwotKwotKyAgICBpZiAoIUhNQUNfSW5pdF9leChoY3R4LCBobWFj LT5LLCBkY3R4LT5ibG9ja2xlbmd0aCwgaG1hYy0+bWQsIE5VTEwpKQotKyAgICAgICAgcmV0dXJu IDA7Ci0rICAgIGlmICghSE1BQ19VcGRhdGUoaGN0eCwgaG1hYy0+ViwgZGN0eC0+YmxvY2tsZW5n dGgpKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmICghSE1BQ19VcGRhdGUoaGN0eCwgJmMx LCAxKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoaW4xbGVuICYmICFITUFDX1VwZGF0 ZShoY3R4LCBpbjEsIGluMWxlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKGluMmxl biAmJiAhSE1BQ19VcGRhdGUoaGN0eCwgaW4yLCBpbjJsZW4pKQotKyAgICAgICAgcmV0dXJuIDA7 Ci0rICAgIGlmIChpbjNsZW4gJiYgIUhNQUNfVXBkYXRlKGhjdHgsIGluMywgaW4zbGVuKSkKLSsg ICAgICAgIHJldHVybiAwOwotKwotKyAgICBpZiAoIUhNQUNfRmluYWwoaGN0eCwgaG1hYy0+Sywg TlVMTCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgaWYgKCFITUFDX0luaXRfZXgoaGN0 eCwgaG1hYy0+SywgZGN0eC0+YmxvY2tsZW5ndGgsIGhtYWMtPm1kLCBOVUxMKSkKLSsgICAgICAg IHJldHVybiAwOwotKyAgICBpZiAoIUhNQUNfVXBkYXRlKGhjdHgsIGhtYWMtPlYsIGRjdHgtPmJs b2NrbGVuZ3RoKSkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyAgICBpZiAoIUhNQUNfRmluYWwo aGN0eCwgaG1hYy0+ViwgTlVMTCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgcmV0dXJu IDE7Ci0rCi0rfQotKwotK3N0YXRpYyBpbnQgZHJiZ19obWFjX2luc3RhbnRpYXRlKERSQkdfQ1RY ICpkY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKmVudCwgc2l6ZV90IGVudF9sZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbm9uY2UsIHNpemVfdCBub25jZV9sZW4sCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcHN0ciwg c2l6ZV90IHBzdHJfbGVuKQotK3sKLSsgICAgRFJCR19ITUFDX0NUWCAqaG1hYyA9ICZkY3R4LT5k LmhtYWM7Ci0rICAgIG1lbXNldChobWFjLT5LLCAwLCBkY3R4LT5ibG9ja2xlbmd0aCk7Ci0rICAg IG1lbXNldChobWFjLT5WLCAxLCBkY3R4LT5ibG9ja2xlbmd0aCk7Ci0rICAgIGlmICghZHJiZ19o bWFjX3VwZGF0ZShkY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW50LCBlbnRfbGVu LCBub25jZSwgbm9uY2VfbGVuLCBwc3RyLCBwc3RyX2xlbikpCi0rICAgICAgICByZXR1cm4gMDsK LSsKLSsjaWZkZWYgSE1BQ19EUkJHX1RSQUNFCi0rICAgIGZwcmludGYoc3RkZXJyLCAiSytWIGFm dGVyIGluc3RhbnRpYXRlOlxuIik7Ci0rICAgIGhleHByaW50KHN0ZGVyciwgaG1hYy0+SywgaG1h Yy0+YmxvY2tsZW5ndGgpOwotKyAgICBoZXhwcmludChzdGRlcnIsIGhtYWMtPlYsIGhtYWMtPmJs b2NrbGVuZ3RoKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbnQg ZHJiZ19obWFjX3Jlc2VlZChEUkJHX0NUWCAqZGN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50LCBzaXplX3QgZW50X2xlbiwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFk aW5fbGVuKQotK3sKLSsgICAgaWYgKCFkcmJnX2htYWNfdXBkYXRlKGRjdHgsIGVudCwgZW50X2xl biwgYWRpbiwgYWRpbl9sZW4sIE5VTEwsIDApKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rCi0rI2lm ZGVmIEhNQUNfRFJCR19UUkFDRQotKyAgICB7Ci0rICAgICAgICBEUkJHX0hNQUNfQ1RYICpobWFj ID0gJmRjdHgtPmQuaG1hYzsKLSsgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSytWIGFmdGVyIHJl c2VlZDpcbiIpOwotKyAgICAgICAgaGV4cHJpbnQoc3RkZXJyLCBobWFjLT5LLCBobWFjLT5ibG9j a2xlbmd0aCk7Ci0rICAgICAgICBoZXhwcmludChzdGRlcnIsIGhtYWMtPlYsIGhtYWMtPmJsb2Nr bGVuZ3RoKTsKLSsgICAgfQotKyNlbmRpZgotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGlj IGludCBkcmJnX2htYWNfZ2VuZXJhdGUoRFJCR19DVFggKmRjdHgsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVf dCBhZGluX2xlbikKLSt7Ci0rICAgIERSQkdfSE1BQ19DVFggKmhtYWMgPSAmZGN0eC0+ZC5obWFj OwotKyAgICBITUFDX0NUWCAqaGN0eCA9ICZobWFjLT5oY3R4OwotKyAgICBjb25zdCB1bnNpZ25l ZCBjaGFyICpWdG1wID0gaG1hYy0+VjsKLSsgICAgaWYgKGFkaW5fbGVuICYmICFkcmJnX2htYWNf dXBkYXRlKGRjdHgsIGFkaW4sIGFkaW5fbGVuLCBOVUxMLCAwLCBOVUxMLCAwKSkKLSsgICAgICAg IHJldHVybiAwOwotKyAgICBmb3IgKDs7KSB7Ci0rICAgICAgICBpZiAoIUhNQUNfSW5pdF9leCho Y3R4LCBobWFjLT5LLCBkY3R4LT5ibG9ja2xlbmd0aCwgaG1hYy0+bWQsIE5VTEwpKQotKyAgICAg ICAgICAgIHJldHVybiAwOwotKyAgICAgICAgaWYgKCFITUFDX1VwZGF0ZShoY3R4LCBWdG1wLCBk Y3R4LT5ibG9ja2xlbmd0aCkpCi0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICBpZiAo IShkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkgJiYgIWRjdHgtPmxiX3ZhbGlkKSB7Ci0r ICAgICAgICAgICAgaWYgKCFITUFDX0ZpbmFsKGhjdHgsIGRjdHgtPmxiLCBOVUxMKSkKLSsgICAg ICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgZGN0eC0+bGJfdmFsaWQgPSAxOwot KyAgICAgICAgICAgIFZ0bXAgPSBkY3R4LT5sYjsKLSsgICAgICAgICAgICBjb250aW51ZTsKLSsg ICAgICAgIH0gZWxzZSBpZiAob3V0bGVuID4gZGN0eC0+YmxvY2tsZW5ndGgpIHsKLSsgICAgICAg ICAgICBpZiAoIUhNQUNfRmluYWwoaGN0eCwgb3V0LCBOVUxMKSkKLSsgICAgICAgICAgICAgICAg cmV0dXJuIDA7Ci0rICAgICAgICAgICAgaWYgKCFmaXBzX2RyYmdfY3BybmdfdGVzdChkY3R4LCBv dXQpKQotKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICBWdG1wID0gb3V0 OwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBpZiAoIUhNQUNfRmluYWwoaGN0eCwg aG1hYy0+ViwgTlVMTCkpCi0rICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAg IGlmICghZmlwc19kcmJnX2Nwcm5nX3Rlc3QoZGN0eCwgaG1hYy0+VikpCi0rICAgICAgICAgICAg ICAgIHJldHVybiAwOwotKyAgICAgICAgICAgIG1lbWNweShvdXQsIGhtYWMtPlYsIG91dGxlbik7 Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgICAgICBvdXQgKz0gZGN0eC0+ YmxvY2tsZW5ndGg7Ci0rICAgICAgICBvdXRsZW4gLT0gZGN0eC0+YmxvY2tsZW5ndGg7Ci0rICAg IH0KLSsgICAgaWYgKCFkcmJnX2htYWNfdXBkYXRlKGRjdHgsIGFkaW4sIGFkaW5fbGVuLCBOVUxM LCAwLCBOVUxMLCAwKSkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyAgICByZXR1cm4gMTsKLSt9 Ci0rCi0rc3RhdGljIGludCBkcmJnX2htYWNfdW5pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCkK LSt7Ci0rICAgIEhNQUNfQ1RYX2NsZWFudXAoJmRjdHgtPmQuaG1hYy5oY3R4KTsKLSsgICAgT1BF TlNTTF9jbGVhbnNlKCZkY3R4LT5kLmhtYWMsIHNpemVvZihEUkJHX0hNQUNfQ1RYKSk7Ci0rICAg IHJldHVybiAxOwotK30KLSsKLStpbnQgZmlwc19kcmJnX2htYWNfaW5pdChEUkJHX0NUWCAqZGN0 eCkKLSt7Ci0rICAgIGNvbnN0IEVWUF9NRCAqbWQgPSBOVUxMOwotKyAgICBEUkJHX0hNQUNfQ1RY ICpoY3R4ID0gJmRjdHgtPmQuaG1hYzsKLSsgICAgZGN0eC0+c3RyZW5ndGggPSAyNTY7Ci0rICAg IHN3aXRjaCAoZGN0eC0+dHlwZSkgewotKyAgICBjYXNlIE5JRF9obWFjV2l0aFNIQTE6Ci0rICAg ICAgICBtZCA9IEVWUF9zaGExKCk7Ci0rICAgICAgICBkY3R4LT5zdHJlbmd0aCA9IDEyODsKLSsg ICAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIE5JRF9obWFjV2l0aFNIQTIyNDoKLSsgICAgICAg IG1kID0gRVZQX3NoYTIyNCgpOwotKyAgICAgICAgZGN0eC0+c3RyZW5ndGggPSAxOTI7Ci0rICAg ICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBOSURfaG1hY1dpdGhTSEEyNTY6Ci0rICAgICAgICBt ZCA9IEVWUF9zaGEyNTYoKTsKLSsgICAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIE5JRF9obWFj V2l0aFNIQTM4NDoKLSsgICAgICAgIG1kID0gRVZQX3NoYTM4NCgpOwotKyAgICAgICAgYnJlYWs7 Ci0rCi0rICAgIGNhc2UgTklEX2htYWNXaXRoU0hBNTEyOgotKyAgICAgICAgbWQgPSBFVlBfc2hh NTEyKCk7Ci0rICAgICAgICBicmVhazsKLSsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAgIGRjdHgt PnN0cmVuZ3RoID0gMDsKLSsgICAgICAgIHJldHVybiAtMjsKLSsgICAgfQotKyAgICBkY3R4LT5p bnN0YW50aWF0ZSA9IGRyYmdfaG1hY19pbnN0YW50aWF0ZTsKLSsgICAgZGN0eC0+cmVzZWVkID0g ZHJiZ19obWFjX3Jlc2VlZDsKLSsgICAgZGN0eC0+Z2VuZXJhdGUgPSBkcmJnX2htYWNfZ2VuZXJh dGU7Ci0rICAgIGRjdHgtPnVuaW5zdGFudGlhdGUgPSBkcmJnX2htYWNfdW5pbnN0YW50aWF0ZTsK LSsgICAgSE1BQ19DVFhfaW5pdCgmaGN0eC0+aGN0eCk7Ci0rICAgIGhjdHgtPm1kID0gbWQ7Ci0r ICAgIGRjdHgtPmJsb2NrbGVuZ3RoID0gTV9FVlBfTURfc2l6ZShtZCk7Ci0rICAgIGRjdHgtPnNl ZWRsZW4gPSBNX0VWUF9NRF9zaXplKG1kKTsKLSsKLSsgICAgZGN0eC0+bWluX2VudHJvcHkgPSBk Y3R4LT5zdHJlbmd0aCAvIDg7Ci0rICAgIGRjdHgtPm1heF9lbnRyb3B5ID0gRFJCR19NQVhfTEVO R1RIOwotKwotKyAgICBkY3R4LT5taW5fbm9uY2UgPSBkY3R4LT5taW5fZW50cm9weSAvIDI7Ci0r ICAgIGRjdHgtPm1heF9ub25jZSA9IERSQkdfTUFYX0xFTkdUSDsKLSsKLSsgICAgZGN0eC0+bWF4 X3BlcnMgPSBEUkJHX01BWF9MRU5HVEg7Ci0rICAgIGRjdHgtPm1heF9hZGluID0gRFJCR19NQVhf TEVOR1RIOwotKwotKyAgICBkY3R4LT5tYXhfcmVxdWVzdCA9IDEgPDwgMTY7Ci0rICAgIGRjdHgt PnJlc2VlZF9pbnRlcnZhbCA9IDEgPDwgMjQ7Ci0rCi0rICAgIHJldHVybiAxOwotK30KLWRpZmYg LXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19saWIuYy5maXBzIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19saWIuYwotLS0tIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9maXBzL2ZpcHNfZHJiZ19saWIuYy5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk1 MjQ1NzI1ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2xp Yi5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk1MjQ1NzI1ICswMjAwCi1AQCAtMCwwICsxLDU1MyBA QAotKy8qIFdyaXR0ZW4gYnkgRHIgU3RlcGhlbiBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5vcmcp IGZvciB0aGUgT3BlblNTTAotKyAqIHByb2plY3QuCi0rICovCi0rLyogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsg KiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0 ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0Ogot KyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo ZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRp b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsg KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4g QWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0 aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVk Z21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQg YnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9v bGtpdC4gKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAi T3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0 bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBz b2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3Jp dHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAgIGxpY2Vuc2luZ0BPcGVuU1NM Lm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1h eSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVh ciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9u IG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2Yg YW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNr bm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZl bG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5T U0wgVG9vbGtpdCAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZU V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5Z Ci0rICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U IExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENP TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM LAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM VURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF IEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFC SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBB UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ RiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0rICovCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxvcGVu c3NsL2NyeXB0by5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVu c3NsL2ZpcHNfcmFuZC5oPgotKyNpbmNsdWRlICJmaXBzX2xvY2wuaCIKLSsjaW5jbHVkZSAiZmlw c19yYW5kX2xjbC5oIgotKwotKy8qIFN1cHBvcnQgZnJhbWV3b3JrIGZvciBTUDgwMC05MCBEUkJH cyAqLwotKwotK2ludCBGSVBTX2RyYmdfaW5pdChEUkJHX0NUWCAqZGN0eCwgaW50IHR5cGUsIHVu c2lnbmVkIGludCBmbGFncykKLSt7Ci0rICAgIGludCBydjsKLSsgICAgbWVtc2V0KGRjdHgsIDAs IHNpemVvZihEUkJHX0NUWCkpOwotKyAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19VTklO SVRJQUxJU0VEOwotKyAgICBkY3R4LT54ZmxhZ3MgPSBmbGFnczsKLSsgICAgZGN0eC0+dHlwZSA9 IHR5cGU7Ci0rCi0rICAgIGRjdHgtPmlmbGFncyA9IDA7Ci0rICAgIGRjdHgtPmVudHJvcHlfYmxv Y2tsZW4gPSAwOwotKyAgICBkY3R4LT5oZWFsdGhfY2hlY2tfY250ID0gMDsKLSsgICAgZGN0eC0+ aGVhbHRoX2NoZWNrX2ludGVydmFsID0gRFJCR19IRUFMVEhfSU5URVJWQUw7Ci0rCi0rICAgIHJ2 ID0gZmlwc19kcmJnX2hhc2hfaW5pdChkY3R4KTsKLSsKLSsgICAgaWYgKHJ2ID09IC0yKQotKyAg ICAgICAgcnYgPSBmaXBzX2RyYmdfY3RyX2luaXQoZGN0eCk7Ci0rICAgIGlmIChydiA9PSAtMikK LSsgICAgICAgIHJ2ID0gZmlwc19kcmJnX2htYWNfaW5pdChkY3R4KTsKLSsKLSsgICAgaWYgKHJ2 IDw9IDApIHsKLSsgICAgICAgIGlmIChydiA9PSAtMikKLSsgICAgICAgICAgICBGSVBTZXJyKEZJ UFNfRl9GSVBTX0RSQkdfSU5JVCwgRklQU19SX1VOU1VQUE9SVEVEX0RSQkdfVFlQRSk7Ci0rICAg ICAgICBlbHNlCi0rICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0lOSVQsIEZJ UFNfUl9FUlJPUl9JTklUSUFMSVNJTkdfRFJCRyk7Ci0rICAgIH0KLSsKLSsgICAgLyogSWYgbm90 IGluIHRlc3QgbW9kZSBydW4gc2VsZnRlc3RzIG9uIERSQkcgb2YgdGhlIHNhbWUgdHlwZSAqLwot KwotKyAgICBpZiAoIShkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkpIHsKLSsgICAgICAg IGlmICghRklQU19kcmJnX2hlYWx0aF9jaGVjayhkY3R4KSkgewotKyAgICAgICAgICAgIEZJUFNl cnIoRklQU19GX0ZJUFNfRFJCR19JTklULCBGSVBTX1JfU0VMRlRFU1RfRkFJTFVSRSk7Ci0rICAg ICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIHJ2 OwotK30KLSsKLStEUkJHX0NUWCAqRklQU19kcmJnX25ldyhpbnQgdHlwZSwgdW5zaWduZWQgaW50 IGZsYWdzKQotK3sKLSsgICAgRFJCR19DVFggKmRjdHg7Ci0rICAgIGRjdHggPSBPUEVOU1NMX21h bGxvYyhzaXplb2YoRFJCR19DVFgpKTsKLSsgICAgaWYgKCFkY3R4KSB7Ci0rICAgICAgICBGSVBT ZXJyKEZJUFNfRl9GSVBTX0RSQkdfTkVXLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7Ci0rICAgICAg ICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgICBpZiAodHlwZSA9PSAwKSB7Ci0rICAgICAg ICBtZW1zZXQoZGN0eCwgMCwgc2l6ZW9mKERSQkdfQ1RYKSk7Ci0rICAgICAgICBkY3R4LT50eXBl ID0gMDsKLSsgICAgICAgIGRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX1VOSU5JVElBTElTRUQ7 Ci0rICAgICAgICByZXR1cm4gZGN0eDsKLSsgICAgfQotKwotKyAgICBpZiAoRklQU19kcmJnX2lu aXQoZGN0eCwgdHlwZSwgZmxhZ3MpIDw9IDApIHsKLSsgICAgICAgIE9QRU5TU0xfZnJlZShkY3R4 KTsKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiBkY3R4Owot K30KLSsKLSt2b2lkIEZJUFNfZHJiZ19mcmVlKERSQkdfQ1RYICpkY3R4KQotK3sKLSsgICAgaWYg KGRjdHgtPnVuaW5zdGFudGlhdGUpCi0rICAgICAgICBkY3R4LT51bmluc3RhbnRpYXRlKGRjdHgp OwotKyAgICAvKiBEb24ndCBmcmVlIHVwIGRlZmF1bHQgRFJCRyAqLwotKyAgICBpZiAoZGN0eCA9 PSBGSVBTX2dldF9kZWZhdWx0X2RyYmcoKSkgewotKyAgICAgICAgbWVtc2V0KGRjdHgsIDAsIHNp emVvZihEUkJHX0NUWCkpOwotKyAgICAgICAgZGN0eC0+dHlwZSA9IDA7Ci0rICAgICAgICBkY3R4 LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19VTklOSVRJQUxJU0VEOwotKyAgICB9IGVsc2UgewotKyAg ICAgICAgT1BFTlNTTF9jbGVhbnNlKCZkY3R4LT5kLCBzaXplb2YoZGN0eC0+ZCkpOwotKyAgICAg ICAgT1BFTlNTTF9mcmVlKGRjdHgpOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBzaXplX3QgZmlw c19nZXRfZW50cm9weShEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAqKnBvdXQsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbnRyb3B5LCBzaXplX3QgbWluX2xlbiwg c2l6ZV90IG1heF9sZW4pCi0rewotKyAgICB1bnNpZ25lZCBjaGFyICp0b3V0LCAqcDsKLSsgICAg c2l6ZV90IGJsID0gZGN0eC0+ZW50cm9weV9ibG9ja2xlbiwgcnY7Ci0rICAgIGlmICghZGN0eC0+ Z2V0X2VudHJvcHkpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKGRjdHgtPnhmbGFncyAm IERSQkdfRkxBR19URVNUIHx8ICFibCkKLSsgICAgICAgIHJldHVybiBkY3R4LT5nZXRfZW50cm9w eShkY3R4LCBwb3V0LCBlbnRyb3B5LCBtaW5fbGVuLCBtYXhfbGVuKTsKLSsgICAgcnYgPSBkY3R4 LT5nZXRfZW50cm9weShkY3R4LCAmdG91dCwgZW50cm9weSArIGJsLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1pbl9sZW4gKyBibCwgbWF4X2xlbiArIGJsKTsKLSsgICAgaWYgKHRvdXQg PT0gTlVMTCkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICAqcG91dCA9IHRvdXQgKyBibDsKLSsg ICAgaWYgKHJ2IDwgKG1pbl9sZW4gKyBibCkgfHwgKHJ2ICUgYmwpKQotKyAgICAgICAgcmV0dXJu IDA7Ci0rICAgIC8qIENvbXBhcmUgY29uc2VjdXRpdmUgYmxvY2tzIGZvciBjb250aW51b3VzIFBS TkcgdGVzdCAqLwotKyAgICBmb3IgKHAgPSB0b3V0OyBwIDwgdG91dCArIHJ2IC0gYmw7IHAgKz0g YmwpIHsKLSsgICAgICAgIGlmICghbWVtY21wKHAsIHAgKyBibCwgYmwpKSB7Ci0rICAgICAgICAg ICAgRklQU2VycihGSVBTX0ZfRklQU19HRVRfRU5UUk9QWSwgRklQU19SX0VOVFJPUFlfU09VUkNF X1NUVUNLKTsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIH0KLSsgICAgfQotKyAg ICBydiAtPSBibDsKLSsgICAgaWYgKHJ2ID4gbWF4X2xlbikKLSsgICAgICAgIHJldHVybiBtYXhf bGVuOwotKyAgICByZXR1cm4gcnY7Ci0rfQotKwotK3N0YXRpYyB2b2lkIGZpcHNfY2xlYW51cF9l bnRyb3B5KERSQkdfQ1RYICpkY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG9sZW4pCi0rewotKyAgICBzaXplX3QgYmw7Ci0r ICAgIGlmIChkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkKLSsgICAgICAgIGJsID0gMDsK LSsgICAgZWxzZQotKyAgICAgICAgYmwgPSBkY3R4LT5lbnRyb3B5X2Jsb2NrbGVuOwotKyAgICAv KiBDYWxsIGNsZWFudXAgd2l0aCBvcmlnaW5hbCBhcmd1bWVudHMgKi8KLSsgICAgZGN0eC0+Y2xl YW51cF9lbnRyb3B5KGRjdHgsIG91dCAtIGJsLCBvbGVuICsgYmwpOwotK30KLSsKLStpbnQgRklQ U19kcmJnX2luc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcGVycywgc2l6ZV90IHBlcnNsZW4pCi0rewotKyAg ICBzaXplX3QgZW50bGVuID0gMCwgbm9uY2VsZW4gPSAwOwotKyAgICB1bnNpZ25lZCBjaGFyICpu b25jZSA9IE5VTEwsICplbnRyb3B5ID0gTlVMTDsKLSsKLSsjaWYgMAotKyAgICAvKiBQdXQgaGVy ZSBzbyBlcnJvciBzY3JpcHQgcGlja3MgdGhlbSB1cCAqLwotKyAgICBGSVBTZXJyKEZJUFNfRl9G SVBTX0RSQkdfSU5TVEFOVElBVEUsCi0rICAgICAgICAgICAgRklQU19SX1BFUlNPTkFMSVNBVElP Tl9TVFJJTkdfVE9PX0xPTkcpOwotKyAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFO VElBVEUsIEZJUFNfUl9JTl9FUlJPUl9TVEFURSk7Ci0rICAgIEZJUFNlcnIoRklQU19GX0ZJUFNf RFJCR19JTlNUQU5USUFURSwgRklQU19SX0FMUkVBRFlfSU5TVEFOVElBVEVEKTsKLSsgICAgRklQ U2VycihGSVBTX0ZfRklQU19EUkJHX0lOU1RBTlRJQVRFLCBGSVBTX1JfRVJST1JfUkVUUklFVklO R19FTlRST1BZKTsKLSsgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0lOU1RBTlRJQVRFLCBG SVBTX1JfRVJST1JfUkVUUklFVklOR19OT05DRSk7Ci0rICAgIEZJUFNlcnIoRklQU19GX0ZJUFNf RFJCR19JTlNUQU5USUFURSwgRklQU19SX0lOU1RBTlRJQVRFX0VSUk9SKTsKLSsgICAgRklQU2Vy cihGSVBTX0ZfRklQU19EUkJHX0lOU1RBTlRJQVRFLCBGSVBTX1JfRFJCR19OT1RfSU5JVElBTElT RUQpOwotKyNlbmRpZgotKwotKyAgICBpbnQgciA9IDA7Ci0rCi0rICAgIGlmIChwZXJzbGVuID4g ZGN0eC0+bWF4X3BlcnMpIHsKLSsgICAgICAgIHIgPSBGSVBTX1JfUEVSU09OQUxJU0FUSU9OX1NU UklOR19UT09fTE9ORzsKLSsgICAgICAgIGdvdG8gZW5kOwotKyAgICB9Ci0rCi0rICAgIGlmICgh ZGN0eC0+aW5zdGFudGlhdGUpIHsKLSsgICAgICAgIHIgPSBGSVBTX1JfRFJCR19OT1RfSU5JVElB TElTRUQ7Ci0rICAgICAgICBnb3RvIGVuZDsKLSsgICAgfQotKwotKyAgICBpZiAoZGN0eC0+c3Rh dHVzICE9IERSQkdfU1RBVFVTX1VOSU5JVElBTElTRUQpIHsKLSsgICAgICAgIGlmIChkY3R4LT5z dGF0dXMgPT0gRFJCR19TVEFUVVNfRVJST1IpCi0rICAgICAgICAgICAgciA9IEZJUFNfUl9JTl9F UlJPUl9TVEFURTsKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgICByID0gRklQU19SX0FMUkVB RFlfSU5TVEFOVElBVEVEOwotKyAgICAgICAgZ290byBlbmQ7Ci0rICAgIH0KLSsKLSsgICAgZGN0 eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfRVJST1I7Ci0rCi0rICAgIGVudGxlbiA9IGZpcHNfZ2V0 X2VudHJvcHkoZGN0eCwgJmVudHJvcHksIGRjdHgtPnN0cmVuZ3RoLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRjdHgtPm1pbl9lbnRyb3B5LCBkY3R4LT5tYXhfZW50cm9weSk7Ci0r Ci0rICAgIGlmIChlbnRsZW4gPCBkY3R4LT5taW5fZW50cm9weSB8fCBlbnRsZW4gPiBkY3R4LT5t YXhfZW50cm9weSkgewotKyAgICAgICAgciA9IEZJUFNfUl9FUlJPUl9SRVRSSUVWSU5HX0VOVFJP UFk7Ci0rICAgICAgICBnb3RvIGVuZDsKLSsgICAgfQotKwotKyAgICBpZiAoZGN0eC0+bWF4X25v bmNlID4gMCAmJiBkY3R4LT5nZXRfbm9uY2UpIHsKLSsgICAgICAgIG5vbmNlbGVuID0gZGN0eC0+ Z2V0X25vbmNlKGRjdHgsICZub25jZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRjdHgtPnN0cmVuZ3RoIC8gMiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRjdHgtPm1pbl9ub25jZSwgZGN0eC0+bWF4X25vbmNlKTsKLSsKLSsgICAgICAgIGlmIChu b25jZWxlbiA8IGRjdHgtPm1pbl9ub25jZSB8fCBub25jZWxlbiA+IGRjdHgtPm1heF9ub25jZSkg ewotKyAgICAgICAgICAgIHIgPSBGSVBTX1JfRVJST1JfUkVUUklFVklOR19OT05DRTsKLSsgICAg ICAgICAgICBnb3RvIGVuZDsKLSsgICAgICAgIH0KLSsKLSsgICAgfQotKwotKyAgICBpZiAoIWRj dHgtPmluc3RhbnRpYXRlKGRjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cm9w eSwgZW50bGVuLCBub25jZSwgbm9uY2VsZW4sIHBlcnMsIHBlcnNsZW4pKSB7Ci0rICAgICAgICBy ID0gRklQU19SX0VSUk9SX0lOU1RBTlRJQVRJTkdfRFJCRzsKLSsgICAgICAgIGdvdG8gZW5kOwot KyAgICB9Ci0rCi0rICAgIGRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX1JFQURZOwotKyAgICBp ZiAoIShkY3R4LT5pZmxhZ3MgJiBEUkJHX0NVU1RPTV9SRVNFRUQpKQotKyAgICAgICAgZGN0eC0+ cmVzZWVkX2NvdW50ZXIgPSAxOwotKwotKyBlbmQ6Ci0rCi0rICAgIGlmIChlbnRyb3B5ICYmIGRj dHgtPmNsZWFudXBfZW50cm9weSkKLSsgICAgICAgIGZpcHNfY2xlYW51cF9lbnRyb3B5KGRjdHgs IGVudHJvcHksIGVudGxlbik7Ci0rCi0rICAgIGlmIChub25jZSAmJiBkY3R4LT5jbGVhbnVwX25v bmNlKQotKyAgICAgICAgZGN0eC0+Y2xlYW51cF9ub25jZShkY3R4LCBub25jZSwgbm9uY2VsZW4p OwotKwotKyAgICBpZiAoZGN0eC0+c3RhdHVzID09IERSQkdfU1RBVFVTX1JFQURZKQotKyAgICAg ICAgcmV0dXJuIDE7Ci0rCi0rICAgIGlmIChyICYmICEoZGN0eC0+aWZsYWdzICYgRFJCR19GTEFH X05PRVJSKSkKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19JTlNUQU5USUFURSwg cik7Ci0rCi0rICAgIHJldHVybiAwOwotKwotK30KLSsKLStzdGF0aWMgaW50IGRyYmdfcmVzZWVk KERSQkdfQ1RYICpkY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg Y2hhciAqYWRpbiwgc2l6ZV90IGFkaW5sZW4sIGludCBoY2hlY2spCi0rewotKyAgICB1bnNpZ25l ZCBjaGFyICplbnRyb3B5ID0gTlVMTDsKLSsgICAgc2l6ZV90IGVudGxlbiA9IDA7Ci0rICAgIGlu dCByID0gMDsKLSsKLSsjaWYgMAotKyAgICBGSVBTZXJyKEZJUFNfRl9EUkJHX1JFU0VFRCwgRklQ U19SX05PVF9JTlNUQU5USUFURUQpOwotKyAgICBGSVBTZXJyKEZJUFNfRl9EUkJHX1JFU0VFRCwg RklQU19SX0FERElUSU9OQUxfSU5QVVRfVE9PX0xPTkcpOwotKyNlbmRpZgotKyAgICBpZiAoZGN0 eC0+c3RhdHVzICE9IERSQkdfU1RBVFVTX1JFQURZCi0rICAgICAgICAmJiBkY3R4LT5zdGF0dXMg IT0gRFJCR19TVEFUVVNfUkVTRUVEKSB7Ci0rICAgICAgICBpZiAoZGN0eC0+c3RhdHVzID09IERS QkdfU1RBVFVTX0VSUk9SKQotKyAgICAgICAgICAgIHIgPSBGSVBTX1JfSU5fRVJST1JfU1RBVEU7 Ci0rICAgICAgICBlbHNlIGlmIChkY3R4LT5zdGF0dXMgPT0gRFJCR19TVEFUVVNfVU5JTklUSUFM SVNFRCkKLSsgICAgICAgICAgICByID0gRklQU19SX05PVF9JTlNUQU5USUFURUQ7Ci0rICAgICAg ICBnb3RvIGVuZDsKLSsgICAgfQotKwotKyAgICBpZiAoIWFkaW4pCi0rICAgICAgICBhZGlubGVu ID0gMDsKLSsgICAgZWxzZSBpZiAoYWRpbmxlbiA+IGRjdHgtPm1heF9hZGluKSB7Ci0rICAgICAg ICByID0gRklQU19SX0FERElUSU9OQUxfSU5QVVRfVE9PX0xPTkc7Ci0rICAgICAgICBnb3RvIGVu ZDsKLSsgICAgfQotKwotKyAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19FUlJPUjsKLSsg ICAgLyogUGVmb3JtIGhlYWx0aCBjaGVjayBvbiBhbGwgcmVzZWVkIG9wZXJhdGlvbnMgaWYgbm90 IGEgcHJlZGljdGlvbgotKyAgICAgKiByZXNpc3RhbmNlIHJlcXVlc3QgYW5kIG5vdCBpbiB0ZXN0 IG1vZGUuCi0rICAgICAqLwotKyAgICBpZiAoaGNoZWNrICYmICEoZGN0eC0+eGZsYWdzICYgRFJC R19GTEFHX1RFU1QpKSB7Ci0rICAgICAgICBpZiAoIUZJUFNfZHJiZ19oZWFsdGhfY2hlY2soZGN0 eCkpIHsKLSsgICAgICAgICAgICByID0gRklQU19SX1NFTEZURVNUX0ZBSUxVUkU7Ci0rICAgICAg ICAgICAgZ290byBlbmQ7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgZW50bGVuID0gZmlw c19nZXRfZW50cm9weShkY3R4LCAmZW50cm9weSwgZGN0eC0+c3RyZW5ndGgsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGN0eC0+bWluX2VudHJvcHksIGRjdHgtPm1heF9lbnRyb3B5 KTsKLSsKLSsgICAgaWYgKGVudGxlbiA8IGRjdHgtPm1pbl9lbnRyb3B5IHx8IGVudGxlbiA+IGRj dHgtPm1heF9lbnRyb3B5KSB7Ci0rICAgICAgICByID0gRklQU19SX0VSUk9SX1JFVFJJRVZJTkdf RU5UUk9QWTsKLSsgICAgICAgIGdvdG8gZW5kOwotKyAgICB9Ci0rCi0rICAgIGlmICghZGN0eC0+ cmVzZWVkKGRjdHgsIGVudHJvcHksIGVudGxlbiwgYWRpbiwgYWRpbmxlbikpCi0rICAgICAgICBn b3RvIGVuZDsKLSsKLSsgICAgZGN0eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfUkVBRFk7Ci0rICAg IGlmICghKGRjdHgtPmlmbGFncyAmIERSQkdfQ1VTVE9NX1JFU0VFRCkpCi0rICAgICAgICBkY3R4 LT5yZXNlZWRfY291bnRlciA9IDE7Ci0rIGVuZDoKLSsKLSsgICAgaWYgKGVudHJvcHkgJiYgZGN0 eC0+Y2xlYW51cF9lbnRyb3B5KQotKyAgICAgICAgZmlwc19jbGVhbnVwX2VudHJvcHkoZGN0eCwg ZW50cm9weSwgZW50bGVuKTsKLSsKLSsgICAgaWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRV U19SRUFEWSkKLSsgICAgICAgIHJldHVybiAxOwotKwotKyAgICBpZiAociAmJiAhKGRjdHgtPmlm bGFncyAmIERSQkdfRkxBR19OT0VSUikpCi0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9EUkJHX1JF U0VFRCwgcik7Ci0rCi0rICAgIHJldHVybiAwOwotK30KLSsKLStpbnQgRklQU19kcmJnX3Jlc2Vl ZChEUkJHX0NUWCAqZGN0eCwKLSsgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj aGFyICphZGluLCBzaXplX3QgYWRpbmxlbikKLSt7Ci0rICAgIHJldHVybiBkcmJnX3Jlc2VlZChk Y3R4LCBhZGluLCBhZGlubGVuLCAxKTsKLSt9Ci0rCi0rc3RhdGljIGludCBmaXBzX2RyYmdfY2hl Y2soRFJCR19DVFggKmRjdHgpCi0rewotKyAgICBpZiAoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFH X1RFU1QpCi0rICAgICAgICByZXR1cm4gMTsKLSsgICAgZGN0eC0+aGVhbHRoX2NoZWNrX2NudCsr OwotKyAgICBpZiAoZGN0eC0+aGVhbHRoX2NoZWNrX2NudCA+PSBkY3R4LT5oZWFsdGhfY2hlY2tf aW50ZXJ2YWwpIHsKLSsgICAgICAgIGlmICghRklQU19kcmJnX2hlYWx0aF9jaGVjayhkY3R4KSkg ewotKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19DSEVDSywgRklQU19SX1NF TEZURVNUX0ZBSUxVUkUpOwotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgfQotKyAg ICB9Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStpbnQgRklQU19kcmJnX2dlbmVyYXRlKERSQkdf Q1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4sCi0rICAgICAgICAg ICAgICAgICAgICAgICBpbnQgcHJlZGljdGlvbl9yZXNpc3RhbmNlLAotKyAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5sZW4pCi0rewot KyAgICBpbnQgciA9IDA7Ci0rCi0rICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7Ci0r ICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfR0VORVJBVEUsIEZJUFNfUl9TRUxGVEVT VF9GQUlMRUQpOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCFmaXBz X2RyYmdfY2hlY2soZGN0eCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgaWYgKGRjdHgt PnN0YXR1cyAhPSBEUkJHX1NUQVRVU19SRUFEWQotKyAgICAgICAgJiYgZGN0eC0+c3RhdHVzICE9 IERSQkdfU1RBVFVTX1JFU0VFRCkgewotKyAgICAgICAgaWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJH X1NUQVRVU19FUlJPUikKLSsgICAgICAgICAgICByID0gRklQU19SX0lOX0VSUk9SX1NUQVRFOwot KyAgICAgICAgZWxzZSBpZiAoZGN0eC0+c3RhdHVzID09IERSQkdfU1RBVFVTX1VOSU5JVElBTElT RUQpCi0rICAgICAgICAgICAgciA9IEZJUFNfUl9OT1RfSU5TVEFOVElBVEVEOwotKyAgICAgICAg Z290byBlbmQ7Ci0rICAgIH0KLSsKLSsgICAgaWYgKG91dGxlbiA+IGRjdHgtPm1heF9yZXF1ZXN0 KSB7Ci0rICAgICAgICByID0gRklQU19SX1JFUVVFU1RfVE9PX0xBUkdFX0ZPUl9EUkJHOwotKyAg ICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGFkaW5sZW4gPiBkY3R4LT5tYXhf YWRpbikgewotKyAgICAgICAgciA9IEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX1RPT19MT05HOwot KyAgICAgICAgZ290byBlbmQ7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGRjdHgtPmlmbGFncyAmIERS QkdfQ1VTVE9NX1JFU0VFRCkKLSsgICAgICAgIGRjdHgtPmdlbmVyYXRlKGRjdHgsIE5VTEwsIG91 dGxlbiwgTlVMTCwgMCk7Ci0rICAgIGVsc2UgaWYgKGRjdHgtPnJlc2VlZF9jb3VudGVyID49IGRj dHgtPnJlc2VlZF9pbnRlcnZhbCkKLSsgICAgICAgIGRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVT X1JFU0VFRDsKLSsKLSsgICAgaWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRVU19SRVNFRUQg fHwgcHJlZGljdGlvbl9yZXNpc3RhbmNlKSB7Ci0rICAgICAgICAvKiBJZiBwcmVkaWN0aW9uIHJl c2lzdGFuY2UgcmVxdWVzdCBkb24ndCBkbyBoZWFsdGggY2hlY2sgKi8KLSsgICAgICAgIGludCBo Y2hlY2sgPSBwcmVkaWN0aW9uX3Jlc2lzdGFuY2UgPyAwIDogMTsKLSsKLSsgICAgICAgIGlmICgh ZHJiZ19yZXNlZWQoZGN0eCwgYWRpbiwgYWRpbmxlbiwgaGNoZWNrKSkgewotKyAgICAgICAgICAg IHIgPSBGSVBTX1JfUkVTRUVEX0VSUk9SOwotKyAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICAg ICAgfQotKyAgICAgICAgYWRpbiA9IE5VTEw7Ci0rICAgICAgICBhZGlubGVuID0gMDsKLSsgICAg fQotKwotKyAgICBpZiAoIWRjdHgtPmdlbmVyYXRlKGRjdHgsIG91dCwgb3V0bGVuLCBhZGluLCBh ZGlubGVuKSkgewotKyAgICAgICAgciA9IEZJUFNfUl9HRU5FUkFURV9FUlJPUjsKLSsgICAgICAg IGRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX0VSUk9SOwotKyAgICAgICAgZ290byBlbmQ7Ci0r ICAgIH0KLSsgICAgaWYgKCEoZGN0eC0+aWZsYWdzICYgRFJCR19DVVNUT01fUkVTRUVEKSkgewot KyAgICAgICAgaWYgKGRjdHgtPnJlc2VlZF9jb3VudGVyID49IGRjdHgtPnJlc2VlZF9pbnRlcnZh bCkKLSsgICAgICAgICAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19SRVNFRUQ7Ci0rICAg ICAgICBlbHNlCi0rICAgICAgICAgICAgZGN0eC0+cmVzZWVkX2NvdW50ZXIrKzsKLSsgICAgfQot KwotKyBlbmQ6Ci0rICAgIGlmIChyKSB7Ci0rICAgICAgICBpZiAoIShkY3R4LT5pZmxhZ3MgJiBE UkJHX0ZMQUdfTk9FUlIpKQotKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19H RU5FUkFURSwgcik7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgICByZXR1cm4g MTsKLSt9Ci0rCi0raW50IEZJUFNfZHJiZ191bmluc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4KQot K3sKLSsgICAgaW50IHJ2OwotKyAgICBpZiAoIWRjdHgtPnVuaW5zdGFudGlhdGUpCi0rICAgICAg ICBydiA9IDE7Ci0rICAgIGVsc2UKLSsgICAgICAgIHJ2ID0gZGN0eC0+dW5pbnN0YW50aWF0ZShk Y3R4KTsKLSsgICAgLyogQWx0aG91Z2ggd2UnZCBsaWtlIHRvIGNsZWFuc2UgaGVyZSB3ZSBjYW4n dCBiZWNhdXNlIHdlIGhhdmUgdG8KLSsgICAgICogdGVzdCB0aGUgdW5pbnN0YW50aWF0ZSByZWFs bHkgemVyb2VzIHRoZSBkYXRhLgotKyAgICAgKi8KLSsgICAgbWVtc2V0KCZkY3R4LT5kLCAwLCBz aXplb2YoZGN0eC0+ZCkpOwotKyAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19VTklOSVRJ QUxJU0VEOwotKyAgICAvKiBJZiBtZXRob2QgaGFzIHByb2JsZW1zIHVuaW5zdGFudGlhdGluZywg cmV0dXJuIGVycm9yICovCi0rICAgIHJldHVybiBydjsKLSt9Ci0rCi0raW50IEZJUFNfZHJiZ19z ZXRfY2FsbGJhY2tzKERSQkdfQ1RYICpkY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplX3QgKCpnZXRfZW50cm9weSkgKERSQkdfQ1RYICpjdHgsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKnBvdXQs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGVudHJvcHksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IG1pbl9sZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZV90IG1heF9sZW4pLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICgqY2xlYW51cF9lbnRyb3B5KSAoRFJCR19DVFggKmN0eCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo YXIgKm91dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVfdCBvbGVuKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90 IGVudHJvcHlfYmxvY2tsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAo KmdldF9ub25jZSkgKERSQkdfQ1RYICpjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipwb3V0LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50cm9weSwgc2l6ZV90 IG1pbl9sZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBtYXhfbGVuKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo KmNsZWFudXBfbm9uY2UpIChEUkJHX0NUWCAqY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2xlbikp Ci0rewotKyAgICBpZiAoZGN0eC0+c3RhdHVzICE9IERSQkdfU1RBVFVTX1VOSU5JVElBTElTRUQp Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgZGN0eC0+ZW50cm9weV9ibG9ja2xlbiA9IGVudHJv cHlfYmxvY2tsZW47Ci0rICAgIGRjdHgtPmdldF9lbnRyb3B5ID0gZ2V0X2VudHJvcHk7Ci0rICAg IGRjdHgtPmNsZWFudXBfZW50cm9weSA9IGNsZWFudXBfZW50cm9weTsKLSsgICAgZGN0eC0+Z2V0 X25vbmNlID0gZ2V0X25vbmNlOwotKyAgICBkY3R4LT5jbGVhbnVwX25vbmNlID0gY2xlYW51cF9u b25jZTsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK2ludCBGSVBTX2RyYmdfc2V0X3JhbmRfY2Fs bGJhY2tzKERSQkdfQ1RYICpkY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCAoKmdldF9hZGluKSAoRFJCR19DVFggKmN0eCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipwb3V0KSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqY2xlYW51cF9hZGluKSAo RFJCR19DVFggKmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2xlbiksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqcmFuZF9zZWVkX2NiKSAoRFJCR19DVFgg KmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB2b2lkICpidWYsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IG51bSksCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50ICgqcmFuZF9hZGRfY2IpIChEUkJHX0NUWCAqY3R4LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnVm LCBpbnQgbnVtLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG91YmxlIGVudHJvcHkpKQotK3sKLSsgICAgaWYgKGRjdHgtPnN0YXR1cyAhPSBE UkJHX1NUQVRVU19VTklOSVRJQUxJU0VEKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGRjdHgt PmdldF9hZGluID0gZ2V0X2FkaW47Ci0rICAgIGRjdHgtPmNsZWFudXBfYWRpbiA9IGNsZWFudXBf YWRpbjsKLSsgICAgZGN0eC0+cmFuZF9zZWVkX2NiID0gcmFuZF9zZWVkX2NiOwotKyAgICBkY3R4 LT5yYW5kX2FkZF9jYiA9IHJhbmRfYWRkX2NiOwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rdm9p ZCAqRklQU19kcmJnX2dldF9hcHBfZGF0YShEUkJHX0NUWCAqZGN0eCkKLSt7Ci0rICAgIHJldHVy biBkY3R4LT5hcHBfZGF0YTsKLSt9Ci0rCi0rdm9pZCBGSVBTX2RyYmdfc2V0X2FwcF9kYXRhKERS QkdfQ1RYICpkY3R4LCB2b2lkICphcHBfZGF0YSkKLSt7Ci0rICAgIGRjdHgtPmFwcF9kYXRhID0g YXBwX2RhdGE7Ci0rfQotKwotK3NpemVfdCBGSVBTX2RyYmdfZ2V0X2Jsb2NrbGVuZ3RoKERSQkdf Q1RYICpkY3R4KQotK3sKLSsgICAgcmV0dXJuIGRjdHgtPmJsb2NrbGVuZ3RoOwotK30KLSsKLStp bnQgRklQU19kcmJnX2dldF9zdHJlbmd0aChEUkJHX0NUWCAqZGN0eCkKLSt7Ci0rICAgIHJldHVy biBkY3R4LT5zdHJlbmd0aDsKLSt9Ci0rCi0rdm9pZCBGSVBTX2RyYmdfc2V0X2NoZWNrX2ludGVy dmFsKERSQkdfQ1RYICpkY3R4LCBpbnQgaW50ZXJ2YWwpCi0rewotKyAgICBkY3R4LT5oZWFsdGhf Y2hlY2tfaW50ZXJ2YWwgPSBpbnRlcnZhbDsKLSt9Ci0rCi0rdm9pZCBGSVBTX2RyYmdfc2V0X3Jl c2VlZF9pbnRlcnZhbChEUkJHX0NUWCAqZGN0eCwgaW50IGludGVydmFsKQotK3sKLSsgICAgZGN0 eC0+cmVzZWVkX2ludGVydmFsID0gaW50ZXJ2YWw7Ci0rfQotKwotK3N0YXRpYyBpbnQgZHJiZ19z dGljayA9IDA7Ci0rCi0rdm9pZCBGSVBTX2RyYmdfc3RpY2soaW50IG9ub2ZmKQotK3sKLSsgICAg ZHJiZ19zdGljayA9IG9ub2ZmOwotK30KLSsKLSsvKiBDb250aW51b3VzIERSQkcgdXRpbGl0eSBm dW5jdGlvbiAqLwotK2ludCBmaXBzX2RyYmdfY3BybmdfdGVzdChEUkJHX0NUWCAqZGN0eCwgY29u c3QgdW5zaWduZWQgY2hhciAqb3V0KQotK3sKLSsgICAgLyogTm8gQ1BSTkcgaW4gdGVzdCBtb2Rl ICovCi0rICAgIGlmIChkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkKLSsgICAgICAgIHJl dHVybiAxOwotKyAgICAvKiBDaGVjayBibG9jayBpcyB2YWxpZDogc2hvdWxkIG5ldmVyIGhhcHBl biAqLwotKyAgICBpZiAoZGN0eC0+bGJfdmFsaWQgPT0gMCkgewotKyAgICAgICAgRklQU2VycihG SVBTX0ZfRklQU19EUkJHX0NQUk5HX1RFU1QsIEZJUFNfUl9JTlRFUk5BTF9FUlJPUik7Ci0rICAg ICAgICBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAg fQotKyAgICBpZiAoZHJiZ19zdGljaykKLSsgICAgICAgIG1lbWNweShkY3R4LT5sYiwgb3V0LCBk Y3R4LT5ibG9ja2xlbmd0aCk7Ci0rICAgIC8qIENoZWNrIGFnYWluc3QgbGFzdCBibG9jazogZmFp bCBpZiBtYXRjaCAqLwotKyAgICBpZiAoIW1lbWNtcChkY3R4LT5sYiwgb3V0LCBkY3R4LT5ibG9j a2xlbmd0aCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19DUFJOR19URVNU LCBGSVBTX1JfRFJCR19TVFVDSyk7Ci0rICAgICAgICBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKCk7 Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICAvKiBTYXZlIGxhc3QgYmxvY2sgZm9y IG5leHQgY29tcGFyaXNvbiAqLwotKyAgICBtZW1jcHkoZGN0eC0+bGIsIG91dCwgZGN0eC0+Ymxv Y2tsZW5ndGgpOwotKyAgICByZXR1cm4gMTsKLSt9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZmlwcy9maXBzX2RyYmdfcmFuZC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Zp cHMvZmlwc19kcmJnX3JhbmQuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNf ZHJiZ19yYW5kLmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NTI0NTcyNSArMDIwMAotKysr IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19yYW5kLmMJMjAxNS0wNC0yMiAx NjowODo0MC4yOTUyNDU3MjUgKzAyMDAKLUBAIC0wLDAgKzEsMTY2IEBACi0rLyogZmlwcy9yYW5k L2ZpcHNfZHJiZ19yYW5kLmMgKi8KLSsvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24g KHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAqLwot Ky8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2pl Y3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVz ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZp Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp b25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgot KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg YWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24g YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1 dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBm ZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUg Zm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMg c29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNl IGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoK LSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3Qi IG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4g cGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAg ICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZy b20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3Ig bWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVu Ci0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4g UmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZv bGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5j bHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBm b3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIK LSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVD VCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQ VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJP SkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ TkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VS RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwg REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIg Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD VCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP UiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT VUNIIERBTUFHRS4KLSsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqLwotKwotKyNpbmNsdWRlIDxzdHJpbmcu aD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIu aD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19y YW5kLmg+Ci0rI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKLSsKLSsvKiBNYXBwaW5nIG9mIFNQ ODAwLTkwIERSQkdzIHRvIE9wZW5TU0wgUkFORF9NRVRIT0QgKi8KLSsKLSsvKiBTaW5jZSB3ZSBv bmx5IGhhdmUgb25lIGdsb2JhbCBQUk5HIHVzZWQgYXQgYW55IHRpbWUgaW4gT3BlblNTTCB1c2Ug YSBnbG9iYWwKLSsgKiB2YXJpYWJsZSB0byBzdG9yZSBjb250ZXh0LgotKyAqLwotKwotK3N0YXRp YyBEUkJHX0NUWCBvc3NsX2RjdHg7Ci0rCi0rRFJCR19DVFggKkZJUFNfZ2V0X2RlZmF1bHRfZHJi Zyh2b2lkKQotK3sKLSsgICAgcmV0dXJuICZvc3NsX2RjdHg7Ci0rfQotKwotK3N0YXRpYyBpbnQg Zmlwc19kcmJnX2J5dGVzKHVuc2lnbmVkIGNoYXIgKm91dCwgaW50IGNvdW50KQotK3sKLSsgICAg RFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4OwotKyAgICBpbnQgcnYgPSAwOwotKyAgICB1bnNp Z25lZCBjaGFyICphZGluID0gTlVMTDsKLSsgICAgc2l6ZV90IGFkaW5sZW4gPSAwOwotKyAgICBD UllQVE9fd19sb2NrKENSWVBUT19MT0NLX1JBTkQpOwotKyAgICBkbyB7Ci0rICAgICAgICBzaXpl X3QgcmNudDsKLSsgICAgICAgIGlmIChjb3VudCA+IChpbnQpZGN0eC0+bWF4X3JlcXVlc3QpCi0r ICAgICAgICAgICAgcmNudCA9IGRjdHgtPm1heF9yZXF1ZXN0OwotKyAgICAgICAgZWxzZQotKyAg ICAgICAgICAgIHJjbnQgPSBjb3VudDsKLSsgICAgICAgIGlmIChkY3R4LT5nZXRfYWRpbikgewot KyAgICAgICAgICAgIGFkaW5sZW4gPSBkY3R4LT5nZXRfYWRpbihkY3R4LCAmYWRpbik7Ci0rICAg ICAgICAgICAgaWYgKGFkaW5sZW4gJiYgIWFkaW4pIHsKLSsgICAgICAgICAgICAgICAgRklQU2Vy cihGSVBTX0ZfRklQU19EUkJHX0JZVEVTLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEZJUFNf Ul9FUlJPUl9SRVRSSUVWSU5HX0FERElUSU9OQUxfSU5QVVQpOwotKyAgICAgICAgICAgICAgICBn b3RvIGVycjsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBydiA9IEZJUFNf ZHJiZ19nZW5lcmF0ZShkY3R4LCBvdXQsIHJjbnQsIDAsIGFkaW4sIGFkaW5sZW4pOwotKyAgICAg ICAgaWYgKGFkaW4pIHsKLSsgICAgICAgICAgICBpZiAoZGN0eC0+Y2xlYW51cF9hZGluKQotKyAg ICAgICAgICAgICAgICBkY3R4LT5jbGVhbnVwX2FkaW4oZGN0eCwgYWRpbiwgYWRpbmxlbik7Ci0r ICAgICAgICAgICAgYWRpbiA9IE5VTEw7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoIXJ2KQot KyAgICAgICAgICAgIGdvdG8gZXJyOwotKyAgICAgICAgb3V0ICs9IHJjbnQ7Ci0rICAgICAgICBj b3VudCAtPSByY250OwotKyAgICB9Ci0rICAgIHdoaWxlIChjb3VudCk7Ci0rICAgIHJ2ID0gMTsK LSsgZXJyOgotKyAgICBDUllQVE9fd191bmxvY2soQ1JZUFRPX0xPQ0tfUkFORCk7Ci0rICAgIHJl dHVybiBydjsKLSt9Ci0rCi0rc3RhdGljIGludCBmaXBzX2RyYmdfcHNldWRvKHVuc2lnbmVkIGNo YXIgKm91dCwgaW50IGNvdW50KQotK3sKLSsgICAgaWYgKGZpcHNfZHJiZ19ieXRlcyhvdXQsIGNv dW50KSA8PSAwKQotKyAgICAgICAgcmV0dXJuIC0xOwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0r c3RhdGljIGludCBmaXBzX2RyYmdfc3RhdHVzKHZvaWQpCi0rewotKyAgICBEUkJHX0NUWCAqZGN0 eCA9ICZvc3NsX2RjdHg7Ci0rICAgIGludCBydjsKLSsgICAgQ1JZUFRPX3JfbG9jayhDUllQVE9f TE9DS19SQU5EKTsKLSsgICAgcnYgPSBkY3R4LT5zdGF0dXMgPT0gRFJCR19TVEFUVVNfUkVBRFkg PyAxIDogMDsKLSsgICAgQ1JZUFRPX3JfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQpOwotKyAgICBy ZXR1cm4gcnY7Ci0rfQotKwotK3N0YXRpYyB2b2lkIGZpcHNfZHJiZ19jbGVhbnVwKHZvaWQpCi0r ewotKyAgICBEUkJHX0NUWCAqZGN0eCA9ICZvc3NsX2RjdHg7Ci0rICAgIENSWVBUT193X2xvY2so Q1JZUFRPX0xPQ0tfUkFORCk7Ci0rICAgIEZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpOwot KyAgICBDUllQVE9fd191bmxvY2soQ1JZUFRPX0xPQ0tfUkFORCk7Ci0rfQotKwotK3N0YXRpYyBp bnQgZmlwc19kcmJnX3NlZWQoY29uc3Qgdm9pZCAqc2VlZCwgaW50IHNlZWRsZW4pCi0rewotKyAg ICBEUkJHX0NUWCAqZGN0eCA9ICZvc3NsX2RjdHg7Ci0rICAgIGlmIChkY3R4LT5yYW5kX3NlZWRf Y2IpCi0rICAgICAgICByZXR1cm4gZGN0eC0+cmFuZF9zZWVkX2NiKGRjdHgsIHNlZWQsIHNlZWRs ZW4pOwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludCBmaXBzX2RyYmdfYWRkKGNv bnN0IHZvaWQgKnNlZWQsIGludCBzZWVkbGVuLCBkb3VibGUgYWRkX2VudHJvcHkpCi0rewotKyAg ICBEUkJHX0NUWCAqZGN0eCA9ICZvc3NsX2RjdHg7Ci0rICAgIGlmIChkY3R4LT5yYW5kX2FkZF9j YikKLSsgICAgICAgIHJldHVybiBkY3R4LT5yYW5kX2FkZF9jYihkY3R4LCBzZWVkLCBzZWVkbGVu LCBhZGRfZW50cm9weSk7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgY29uc3QgUkFO RF9NRVRIT0QgcmFuZF9kcmJnX21ldGggPSB7Ci0rICAgIGZpcHNfZHJiZ19zZWVkLAotKyAgICBm aXBzX2RyYmdfYnl0ZXMsCi0rICAgIGZpcHNfZHJiZ19jbGVhbnVwLAotKyAgICBmaXBzX2RyYmdf YWRkLAotKyAgICBmaXBzX2RyYmdfcHNldWRvLAotKyAgICBmaXBzX2RyYmdfc3RhdHVzCi0rfTsK LSsKLStjb25zdCBSQU5EX01FVEhPRCAqRklQU19kcmJnX21ldGhvZCh2b2lkKQotK3sKLSsgICAg cmV0dXJuICZyYW5kX2RyYmdfbWV0aDsKLSt9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZmlwcy9maXBzX2RyYmdfc2VsZnRlc3QuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9m aXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMv Zmlwc19kcmJnX3NlbGZ0ZXN0LmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5NjI0NTc0OSAr MDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5j CTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk2MjQ1NzQ5ICswMjAwCi1AQCAtMCwwICsxLDgyNyBAQAot Ky8qIGZpcHMvcmFuZC9maXBzX2RyYmdfc2VsZnRlc3QuYyAqLwotKy8qIFdyaXR0ZW4gYnkgRHIg U3RlcGhlbiBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0aGUgT3BlblNTTAotKyAq IHByb2plY3QuCi0rICovCi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTEg VGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRp c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp dGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmli dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsg KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11 c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0 aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl Ci0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUg bXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMg cHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVj dAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cuT3Bl blNTTC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQg Ik9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3Ig cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICog ICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVh c2UgY29udGFjdAotKyAqICAgIGxpY2Vuc2luZ0BPcGVuU1NMLm9yZy4KLSsgKgotKyAqIDUuIFBy b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVu U1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRo b3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2pl Y3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBt dXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAg IlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wg UHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3 dy5PcGVuU1NMLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU SEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElN UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAq IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM TCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1Q TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBM SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ T04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhF IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICovCi0rCi0r I2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgotKyNpbmNs dWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgotKyNp bmNsdWRlICJmaXBzX3JhbmRfbGNsLmgiCi0rI2luY2x1ZGUgImZpcHNfbG9jbC5oIgotKwotKyNp bmNsdWRlICJmaXBzX2RyYmdfc2VsZnRlc3QuaCIKLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICAg IGludCBwb3N0OwotKyAgICBpbnQgbmlkOwotKyAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Ci0rCi0r ICAgIC8qIEtBVCBkYXRhIGZvciBubyBQUiAqLwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpl bnQ7Ci0rICAgIHNpemVfdCBlbnRsZW47Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vbmNl OwotKyAgICBzaXplX3Qgbm9uY2VsZW47Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBlcnM7 Ci0rICAgIHNpemVfdCBwZXJzbGVuOwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluOwot KyAgICBzaXplX3QgYWRpbmxlbjsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50cmVzZWVk OwotKyAgICBzaXplX3QgZW50cmVzZWVkbGVuOwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICph ZGlucmVzZWVkOwotKyAgICBzaXplX3QgYWRpbnJlc2VlZGxlbjsKLSsgICAgY29uc3QgdW5zaWdu ZWQgY2hhciAqYWRpbjI7Ci0rICAgIHNpemVfdCBhZGluMmxlbjsKLSsgICAgY29uc3QgdW5zaWdu ZWQgY2hhciAqa2F0OwotKyAgICBzaXplX3Qga2F0bGVuOwotKyAgICBjb25zdCB1bnNpZ25lZCBj aGFyICprYXQyOwotKyAgICBzaXplX3Qga2F0MmxlbjsKLSsKLSsgICAgLyogS0FUIGRhdGEgZm9y IFBSICovCi0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudF9wcjsKLSsgICAgc2l6ZV90IGVu dGxlbl9wcjsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbm9uY2VfcHI7Ci0rICAgIHNpemVf dCBub25jZWxlbl9wcjsKLSsgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcGVyc19wcjsKLSsgICAg c2l6ZV90IHBlcnNsZW5fcHI7Ci0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW5fcHI7Ci0r ICAgIHNpemVfdCBhZGlubGVuX3ByOwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnRwcl9w cjsKLSsgICAgc2l6ZV90IGVudHBybGVuX3ByOwotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICph ZGluZ19wcjsKLSsgICAgc2l6ZV90IGFkaW5nbGVuX3ByOwotKyAgICBjb25zdCB1bnNpZ25lZCBj aGFyICplbnRnX3ByOwotKyAgICBzaXplX3QgZW50Z2xlbl9wcjsKLSsgICAgY29uc3QgdW5zaWdu ZWQgY2hhciAqa2F0X3ByOwotKyAgICBzaXplX3Qga2F0bGVuX3ByOwotKyAgICBjb25zdCB1bnNp Z25lZCBjaGFyICprYXQyX3ByOwotKyAgICBzaXplX3Qga2F0Mmxlbl9wcjsKLSsKLSt9IERSQkdf U0VMRlRFU1RfREFUQTsKLSsKLSsjZGVmaW5lIG1ha2VfZHJiZ190ZXN0X2RhdGEobmlkLCBmbGFn LCBwciwgcCkge3AsIG5pZCwgZmxhZyB8IERSQkdfRkxBR19URVNULCBcCi0rICAgICAgICBwciMj X2VudHJvcHlpbnB1dCwgc2l6ZW9mKHByIyNfZW50cm9weWlucHV0KSwgXAotKyAgICAgICAgcHIj I19ub25jZSwgc2l6ZW9mKHByIyNfbm9uY2UpLCBcCi0rICAgICAgICBwciMjX3BlcnNvbmFsaXph dGlvbnN0cmluZywgc2l6ZW9mKHByIyNfcGVyc29uYWxpemF0aW9uc3RyaW5nKSwgXAotKyAgICAg ICAgcHIjI19hZGRpdGlvbmFsaW5wdXQsIHNpemVvZihwciMjX2FkZGl0aW9uYWxpbnB1dCksIFwK LSsgICAgICAgIHByIyNfZW50cm9weWlucHV0cmVzZWVkLCBzaXplb2YocHIjI19lbnRyb3B5aW5w dXRyZXNlZWQpLCBcCi0rICAgICAgICBwciMjX2FkZGl0aW9uYWxpbnB1dHJlc2VlZCwgc2l6ZW9m KHByIyNfYWRkaXRpb25hbGlucHV0cmVzZWVkKSwgXAotKyAgICAgICAgcHIjI19hZGRpdGlvbmFs aW5wdXQyLCBzaXplb2YocHIjI19hZGRpdGlvbmFsaW5wdXQyKSwgXAotKyAgICAgICAgcHIjI19p bnRfcmV0dXJuZWRiaXRzLCBzaXplb2YocHIjI19pbnRfcmV0dXJuZWRiaXRzKSwgXAotKyAgICAg ICAgcHIjI19yZXR1cm5lZGJpdHMsIHNpemVvZihwciMjX3JldHVybmVkYml0cyksIFwKLSsgICAg ICAgIHByIyNfcHJfZW50cm9weWlucHV0LCBzaXplb2YocHIjI19wcl9lbnRyb3B5aW5wdXQpLCBc Ci0rICAgICAgICBwciMjX3ByX25vbmNlLCBzaXplb2YocHIjI19wcl9ub25jZSksIFwKLSsgICAg ICAgIHByIyNfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nLCBzaXplb2YocHIjI19wcl9wZXJzb25h bGl6YXRpb25zdHJpbmcpLCBcCi0rICAgICAgICBwciMjX3ByX2FkZGl0aW9uYWxpbnB1dCwgc2l6 ZW9mKHByIyNfcHJfYWRkaXRpb25hbGlucHV0KSwgXAotKyAgICAgICAgcHIjI19wcl9lbnRyb3B5 aW5wdXRwciwgc2l6ZW9mKHByIyNfcHJfZW50cm9weWlucHV0cHIpLCBcCi0rICAgICAgICBwciMj X3ByX2FkZGl0aW9uYWxpbnB1dDIsIHNpemVvZihwciMjX3ByX2FkZGl0aW9uYWxpbnB1dDIpLCBc Ci0rICAgICAgICBwciMjX3ByX2VudHJvcHlpbnB1dHByMiwgc2l6ZW9mKHByIyNfcHJfZW50cm9w eWlucHV0cHIyKSwgXAotKyAgICAgICAgcHIjI19wcl9pbnRfcmV0dXJuZWRiaXRzLCBzaXplb2Yo cHIjI19wcl9pbnRfcmV0dXJuZWRiaXRzKSwgXAotKyAgICAgICAgcHIjI19wcl9yZXR1cm5lZGJp dHMsIHNpemVvZihwciMjX3ByX3JldHVybmVkYml0cyksIFwKLSsgICAgICAgIH0KLSsKLSsjZGVm aW5lIG1ha2VfZHJiZ190ZXN0X2RhdGFfZGYobmlkLCBwciwgcCkgXAotKyAgICAgICAgbWFrZV9k cmJnX3Rlc3RfZGF0YShuaWQsIERSQkdfRkxBR19DVFJfVVNFX0RGLCBwciwgcCkKLSsKLSsjZGVm aW5lIG1ha2VfZHJiZ190ZXN0X2RhdGFfZWMoY3VydmUsIG1kLCBwciwgcCkgXAotKyAgICAgICAg bWFrZV9kcmJnX3Rlc3RfZGF0YSgoY3VydmUgPDwgMTYpIHwgbWQgLCAwLCBwciwgcCkKLSsKLStz dGF0aWMgRFJCR19TRUxGVEVTVF9EQVRBIGRyYmdfdGVzdFtdID0gewotKyAgICBtYWtlX2RyYmdf dGVzdF9kYXRhX2RmKE5JRF9hZXNfMTI4X2N0ciwgYWVzXzEyOF91c2VfZGYsIDApLAotKyAgICBt YWtlX2RyYmdfdGVzdF9kYXRhX2RmKE5JRF9hZXNfMTkyX2N0ciwgYWVzXzE5Ml91c2VfZGYsIDAp LAotKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhX2RmKE5JRF9hZXNfMjU2X2N0ciwgYWVzXzI1Nl91 c2VfZGYsIDEpLAotKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9hZXNfMTI4X2N0ciwgMCwg YWVzXzEyOF9ub19kZiwgMCksCi0rICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX2Flc18xOTJf Y3RyLCAwLCBhZXNfMTkyX25vX2RmLCAwKSwKLSsgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShOSURf YWVzXzI1Nl9jdHIsIDAsIGFlc18yNTZfbm9fZGYsIDEpLAotKyAgICBtYWtlX2RyYmdfdGVzdF9k YXRhKE5JRF9zaGExLCAwLCBzaGExLCAwKSwKLSsgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShOSURf c2hhMjI0LCAwLCBzaGEyMjQsIDApLAotKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9zaGEy NTYsIDAsIHNoYTI1NiwgMSksCi0rICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX3NoYTM4NCwg MCwgc2hhMzg0LCAwKSwKLSsgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShOSURfc2hhNTEyLCAwLCBz aGE1MTIsIDApLAotKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9obWFjV2l0aFNIQTEsIDAs IGhtYWNfc2hhMSwgMCksCi0rICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX2htYWNXaXRoU0hB MjI0LCAwLCBobWFjX3NoYTIyNCwgMCksCi0rICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEoTklEX2ht YWNXaXRoU0hBMjU2LCAwLCBobWFjX3NoYTI1NiwgMSksCi0rICAgIG1ha2VfZHJiZ190ZXN0X2Rh dGEoTklEX2htYWNXaXRoU0hBMzg0LCAwLCBobWFjX3NoYTM4NCwgMCksCi0rICAgIG1ha2VfZHJi Z190ZXN0X2RhdGEoTklEX2htYWNXaXRoU0hBNTEyLCAwLCBobWFjX3NoYTUxMiwgMCksCi0rICAg IHswLCAwLCAwfQotK307Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgewotKyAgICBjb25zdCB1bnNpZ25l ZCBjaGFyICplbnQ7Ci0rICAgIHNpemVfdCBlbnRsZW47Ci0rICAgIGludCBlbnRjbnQ7Ci0rICAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vbmNlOwotKyAgICBzaXplX3Qgbm9uY2VsZW47Ci0rICAg IGludCBub25jZWNudDsKLSt9IFRFU1RfRU5UOwotKwotK3N0YXRpYyBzaXplX3QgdGVzdF9lbnRy b3B5KERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICoqcG91dCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhfbGVu KQotK3sKLSsgICAgVEVTVF9FTlQgKnQgPSBGSVBTX2RyYmdfZ2V0X2FwcF9kYXRhKGRjdHgpOwot KyAgICAqcG91dCA9ICh1bnNpZ25lZCBjaGFyICopdC0+ZW50OwotKyAgICB0LT5lbnRjbnQrKzsK LSsgICAgcmV0dXJuIHQtPmVudGxlbjsKLSt9Ci0rCi0rc3RhdGljIHNpemVfdCB0ZXN0X25vbmNl KERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICoqcG91dCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGVudHJvcHksIHNpemVfdCBtaW5fbGVuLCBzaXplX3QgbWF4X2xlbikKLSt7 Ci0rICAgIFRFU1RfRU5UICp0ID0gRklQU19kcmJnX2dldF9hcHBfZGF0YShkY3R4KTsKLSsgICAg KnBvdXQgPSAodW5zaWduZWQgY2hhciAqKXQtPm5vbmNlOwotKyAgICB0LT5ub25jZWNudCsrOwot KyAgICByZXR1cm4gdC0+bm9uY2VsZW47Ci0rfQotKwotK3N0YXRpYyBpbnQgZmlwc19kcmJnX3Np bmdsZV9rYXQoRFJCR19DVFggKmRjdHgsIERSQkdfU0VMRlRFU1RfREFUQSAqIHRkLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHF1aWNrKQotK3sKLSsgICAgVEVTVF9FTlQg dDsKLSsgICAgaW50IHJ2ID0gMDsKLSsgICAgc2l6ZV90IGFkaW5sZW47Ci0rICAgIHVuc2lnbmVk IGNoYXIgcmFuZG91dFsxMDI0XTsKLSsKLSsgICAgLyogSW5pdGlhbCB0ZXN0IHdpdGhvdXQgUFIg Ki8KLSsKLSsgICAgLyogSW5zdGFudGlhdGUgRFJCRyB3aXRoIHRlc3QgZW50cm9weSwgbm9uY2Ug YW5kIHBlcnNvbmFsaXNhdGlvbgotKyAgICAgKiBzdHJpbmcuCi0rICAgICAqLwotKwotKyAgICBp ZiAoIUZJUFNfZHJiZ19pbml0KGRjdHgsIHRkLT5uaWQsIHRkLT5mbGFncykpCi0rICAgICAgICBy ZXR1cm4gMDsKLSsgICAgaWYgKCFGSVBTX2RyYmdfc2V0X2NhbGxiYWNrcyhkY3R4LCB0ZXN0X2Vu dHJvcHksIDAsIDAsIHRlc3Rfbm9uY2UsIDApKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rCi0rICAg IEZJUFNfZHJiZ19zZXRfYXBwX2RhdGEoZGN0eCwgJnQpOwotKwotKyAgICB0LmVudCA9IHRkLT5l bnQ7Ci0rICAgIHQuZW50bGVuID0gdGQtPmVudGxlbjsKLSsgICAgdC5ub25jZSA9IHRkLT5ub25j ZTsKLSsgICAgdC5ub25jZWxlbiA9IHRkLT5ub25jZWxlbjsKLSsgICAgdC5lbnRjbnQgPSAwOwot KyAgICB0Lm5vbmNlY250ID0gMDsKLSsKLSsgICAgaWYgKCFGSVBTX2RyYmdfaW5zdGFudGlhdGUo ZGN0eCwgdGQtPnBlcnMsIHRkLT5wZXJzbGVuKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAg ICAvKiBOb3RlIGZvciBDVFIgd2l0aG91dCBERiBzb21lIGFkZGl0aW9uYWwgaW5wdXQgdmFsdWVz Ci0rICAgICAqIGlnbm9yZSBieXRlcyBhZnRlciB0aGUga2V5bGVuZ3RoOiBzbyByZWR1Y2UgYWRp bmxlbgotKyAgICAgKiB0byBoYWxmIHRvIGVuc3VyZSBpbnZhbGlkIGRhdGEgaXMgZmVkIGluLgot KyAgICAgKi8KLSsgICAgaWYgKCFmaXBzX3Bvc3RfY29ycnVwdChGSVBTX1RFU1RfRFJCRywgZGN0 eC0+dHlwZSwgJmRjdHgtPmlmbGFncykpCi0rICAgICAgICBhZGlubGVuID0gdGQtPmFkaW5sZW4g LyAyOwotKyAgICBlbHNlCi0rICAgICAgICBhZGlubGVuID0gdGQtPmFkaW5sZW47Ci0rCi0rICAg IC8qIEdlbmVyYXRlIHdpdGggbm8gUFIgYW5kIHZlcmlmeSBvdXRwdXQgbWF0Y2hlcyBleHBlY3Rl ZCBkYXRhICovCi0rICAgIGlmICghRklQU19kcmJnX2dlbmVyYXRlKGRjdHgsIHJhbmRvdXQsIHRk LT5rYXRsZW4sIDAsIHRkLT5hZGluLCBhZGlubGVuKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwot KyAgICBpZiAobWVtY21wKHJhbmRvdXQsIHRkLT5rYXQsIHRkLT5rYXRsZW4pKSB7Ci0rICAgICAg ICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfU0lOR0xFX0tBVCwgRklQU19SX05PUFJfVEVTVDFf RkFJTFVSRSk7Ci0rICAgICAgICBnb3RvIGVycjI7Ci0rICAgIH0KLSsgICAgLyogSWYgYWJicmV2 aWF0ZWQgUE9TVCBlbmQgb2YgdGVzdCAqLwotKyAgICBpZiAocXVpY2spIHsKLSsgICAgICAgIHJ2 ID0gMTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rICAgIC8qIFJlc2VlZCBEUkJHIHdp dGggdGVzdCBlbnRyb3B5IGFuZCBhZGRpdGlvbmFsIGlucHV0ICovCi0rICAgIHQuZW50ID0gdGQt PmVudHJlc2VlZDsKLSsgICAgdC5lbnRsZW4gPSB0ZC0+ZW50cmVzZWVkbGVuOwotKwotKyAgICBp ZiAoIUZJUFNfZHJiZ19yZXNlZWQoZGN0eCwgdGQtPmFkaW5yZXNlZWQsIHRkLT5hZGlucmVzZWVk bGVuKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICAvKiBHZW5lcmF0ZSB3aXRoIG5vIFBS IGFuZCB2ZXJpZnkgb3V0cHV0IG1hdGNoZXMgZXhwZWN0ZWQgZGF0YSAqLwotKyAgICBpZiAoIUZJ UFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0MmxlbiwgMCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGQtPmFkaW4yLCB0ZC0+YWRpbjJsZW4pKQotKyAgICAgICAg Z290byBlcnI7Ci0rCi0rICAgIGlmIChtZW1jbXAocmFuZG91dCwgdGQtPmthdDIsIHRkLT5rYXQy bGVuKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX1NJTkdMRV9LQVQsIEZJ UFNfUl9OT1BSX1RFU1QyX0ZBSUxVUkUpOwotKyAgICAgICAgZ290byBlcnIyOwotKyAgICB9Ci0r Ci0rICAgIEZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpOwotKwotKyAgICAvKiBOb3cgdGVz dCB3aXRoIFBSICovCi0rCi0rICAgIC8qIEluc3RhbnRpYXRlIERSQkcgd2l0aCB0ZXN0IGVudHJv cHksIG5vbmNlIGFuZCBwZXJzb25hbGlzYXRpb24KLSsgICAgICogc3RyaW5nLgotKyAgICAgKi8K LSsgICAgaWYgKCFGSVBTX2RyYmdfaW5pdChkY3R4LCB0ZC0+bmlkLCB0ZC0+ZmxhZ3MpKQotKyAg ICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmICghRklQU19kcmJnX3NldF9jYWxsYmFja3MoZGN0eCwg dGVzdF9lbnRyb3B5LCAwLCAwLCB0ZXN0X25vbmNlLCAwKSkKLSsgICAgICAgIHJldHVybiAwOwot KwotKyAgICBGSVBTX2RyYmdfc2V0X2FwcF9kYXRhKGRjdHgsICZ0KTsKLSsKLSsgICAgdC5lbnQg PSB0ZC0+ZW50X3ByOwotKyAgICB0LmVudGxlbiA9IHRkLT5lbnRsZW5fcHI7Ci0rICAgIHQubm9u Y2UgPSB0ZC0+bm9uY2VfcHI7Ci0rICAgIHQubm9uY2VsZW4gPSB0ZC0+bm9uY2VsZW5fcHI7Ci0r ICAgIHQuZW50Y250ID0gMDsKLSsgICAgdC5ub25jZWNudCA9IDA7Ci0rCi0rICAgIGlmICghRklQ U19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzX3ByLCB0ZC0+cGVyc2xlbl9wcikpCi0r ICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgLyogTm93IGdlbmVyYXRlIHdpdGggUFI6IHdlIG5l ZWQgdG8gc3VwcGx5IGVudHJvcHkgYXMgdGhpcyB3aWxsCi0rICAgICAqIHBlcmZvcm0gYSByZXNl ZWQgb3BlcmF0aW9uLiBDaGVjayBvdXRwdXQgbWF0Y2hlcyBleHBlY3RlZCB2YWx1ZS4KLSsgICAg ICovCi0rCi0rICAgIHQuZW50ID0gdGQtPmVudHByX3ByOwotKyAgICB0LmVudGxlbiA9IHRkLT5l bnRwcmxlbl9wcjsKLSsKLSsgICAgLyogTm90ZSBmb3IgQ1RSIHdpdGhvdXQgREYgc29tZSBhZGRp dGlvbmFsIGlucHV0IHZhbHVlcwotKyAgICAgKiBpZ25vcmUgYnl0ZXMgYWZ0ZXIgdGhlIGtleWxl bmd0aDogc28gcmVkdWNlIGFkaW5sZW4KLSsgICAgICogdG8gaGFsZiB0byBlbnN1cmUgaW52YWxp ZCBkYXRhIGlzIGZlZCBpbi4KLSsgICAgICovCi0rICAgIGlmICghZmlwc19wb3N0X2NvcnJ1cHQo RklQU19URVNUX0RSQkcsIGRjdHgtPnR5cGUsICZkY3R4LT5pZmxhZ3MpKQotKyAgICAgICAgYWRp bmxlbiA9IHRkLT5hZGlubGVuX3ByIC8gMjsKLSsgICAgZWxzZQotKyAgICAgICAgYWRpbmxlbiA9 IHRkLT5hZGlubGVuX3ByOwotKyAgICBpZiAoIUZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5k b3V0LCB0ZC0+a2F0bGVuX3ByLCAxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+ YWRpbl9wciwgYWRpbmxlbikpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgaWYgKG1lbWNt cChyYW5kb3V0LCB0ZC0+a2F0X3ByLCB0ZC0+a2F0bGVuX3ByKSkgewotKyAgICAgICAgRklQU2Vy cihGSVBTX0ZfRklQU19EUkJHX1NJTkdMRV9LQVQsIEZJUFNfUl9QUl9URVNUMV9GQUlMVVJFKTsK LSsgICAgICAgIGdvdG8gZXJyMjsKLSsgICAgfQotKwotKyAgICAvKiBOb3cgZ2VuZXJhdGUgYWdh aW4gd2l0aCBQUjogc3VwcGx5IG5ldyBlbnRyb3B5IGFnYWluLgotKyAgICAgKiBDaGVjayBvdXRw dXQgbWF0Y2hlcyBleHBlY3RlZCB2YWx1ZS4KLSsgICAgICovCi0rCi0rICAgIHQuZW50ID0gdGQt PmVudGdfcHI7Ci0rICAgIHQuZW50bGVuID0gdGQtPmVudGdsZW5fcHI7Ci0rCi0rICAgIGlmICgh RklQU19kcmJnX2dlbmVyYXRlKGRjdHgsIHJhbmRvdXQsIHRkLT5rYXQybGVuX3ByLCAxLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+YWRpbmdfcHIsIHRkLT5hZGluZ2xlbl9wcikp Ci0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgaWYgKG1lbWNtcChyYW5kb3V0LCB0ZC0+a2F0 Ml9wciwgdGQtPmthdDJsZW5fcHIpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RS QkdfU0lOR0xFX0tBVCwgRklQU19SX1BSX1RFU1QyX0ZBSUxVUkUpOwotKyAgICAgICAgZ290byBl cnIyOwotKyAgICB9Ci0rICAgIC8qIEFsbCBPSywgdGVzdCBjb21wbGV0ZSAqLwotKyAgICBydiA9 IDE7Ci0rCi0rIGVycjoKLSsgICAgaWYgKHJ2ID09IDApCi0rICAgICAgICBGSVBTZXJyKEZJUFNf Rl9GSVBTX0RSQkdfU0lOR0xFX0tBVCwgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7Ci0rIGVycjI6 Ci0rICAgIEZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpOwotKwotKyAgICByZXR1cm4gcnY7 Ci0rCi0rfQotKwotKy8qIEluaXRpYWxpc2UgYSBEUkJHIGJhc2VkIG9uIHNlbGZ0ZXN0IGRhdGEg Ki8KLSsKLStzdGF0aWMgaW50IGRvX2RyYmdfaW5pdChEUkJHX0NUWCAqZGN0eCwgRFJCR19TRUxG VEVTVF9EQVRBICogdGQsIFRFU1RfRU5UICogdCkKLSt7Ci0rCi0rICAgIGlmICghRklQU19kcmJn X2luaXQoZGN0eCwgdGQtPm5pZCwgdGQtPmZsYWdzKSkKLSsgICAgICAgIHJldHVybiAwOwotKwot KyAgICBpZiAoIUZJUFNfZHJiZ19zZXRfY2FsbGJhY2tzKGRjdHgsIHRlc3RfZW50cm9weSwgMCwg MCwgdGVzdF9ub25jZSwgMCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgRklQU19kcmJn X3NldF9hcHBfZGF0YShkY3R4LCB0KTsKLSsKLSsgICAgdC0+ZW50ID0gdGQtPmVudDsKLSsgICAg dC0+ZW50bGVuID0gdGQtPmVudGxlbjsKLSsgICAgdC0+bm9uY2UgPSB0ZC0+bm9uY2U7Ci0rICAg IHQtPm5vbmNlbGVuID0gdGQtPm5vbmNlbGVuOwotKyAgICB0LT5lbnRjbnQgPSAwOwotKyAgICB0 LT5ub25jZWNudCA9IDA7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLSsvKiBJbml0aWFsaXNlIGFu ZCBpbnN0YW50aWF0ZSBEUkJHIGJhc2VkIG9uIHNlbGZ0ZXN0IGRhdGEgKi8KLStzdGF0aWMgaW50 IGRvX2RyYmdfaW5zdGFudGlhdGUoRFJCR19DVFggKmRjdHgsIERSQkdfU0VMRlRFU1RfREFUQSAq IHRkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURVNUX0VOVCAqIHQpCi0rewot KyAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgdCkpCi0rICAgICAgICByZXR1cm4gMDsK LSsgICAgaWYgKCFGSVBTX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQtPnBlcnMsIHRkLT5wZXJz bGVuKSkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rLyog VGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBleHRlbnNpdmUgZXJyb3IgY2hlY2tpbmcgYXMgcmVxdWly ZWQgYnkgU1A4MDAtOTAuCi0rICogSW5kdWNlIHNldmVyYWwgZmFpbHVyZSBtb2RlcyBhbmQgY2hl Y2sgYW4gZXJyb3IgY29uZGl0aW9uIGlzIHNldC4KLSsgKiBUaGlzIGZ1bmN0aW9uIGFsb25nIHdp dGggZmlwc19kcmJnX3NpbmdsZV9rYXQgcGVmb3JtcyB0aGUgaGVhbHRoIGNoZWNraW5nCi0rICog b3BlcmF0aW9uLgotKyAqLwotKwotK3N0YXRpYyBpbnQgZmlwc19kcmJnX2Vycm9yX2NoZWNrKERS QkdfQ1RYICpkY3R4LCBEUkJHX1NFTEZURVNUX0RBVEEgKiB0ZCkKLSt7Ci0rICAgIHVuc2lnbmVk IGNoYXIgcmFuZG91dFsxMDI0XTsKLSsgICAgVEVTVF9FTlQgdDsKLSsgICAgc2l6ZV90IGk7Ci0r ICAgIHVuc2lnbmVkIGludCByZXNlZWRfY291bnRlcl90bXA7Ci0rICAgIHVuc2lnbmVkIGNoYXIg KnAgPSAodW5zaWduZWQgY2hhciAqKWRjdHg7Ci0rCi0rICAgIC8qIEluaXRpYWxpc2UgRFJCRyAq LwotKwotKyAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQotKyAgICAgICAgZ290 byBlcnI7Ci0rCi0rICAgIC8qIERvbid0IHJlcG9ydCBpbmR1Y2VkIGVycm9ycyAqLwotKyAgICBk Y3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOwotKwotKyAgICAvKiBQZXJzb25hbGlzYXRp b24gc3RyaW5nIHRlc3RzICovCi0rCi0rICAgIC8qIFRlc3QgZGV0ZWN0aW9uIG9mIHRvbyBsYXJn ZSBwZXJzb25saXNhdGlvbiBzdHJpbmcgKi8KLSsKLSsgICAgaWYgKEZJUFNfZHJiZ19pbnN0YW50 aWF0ZShkY3R4LCB0ZC0+cGVycywgZGN0eC0+bWF4X3BlcnMgKyAxKSA+IDApIHsKLSsgICAgICAg IEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKLSsgICAgICAgICAgICAgICAg RklQU19SX1BFUlNPTkFMSVNBVElPTl9FUlJPUl9VTkRFVEVDVEVEKTsKLSsgICAgICAgIGdvdG8g ZXJyOwotKyAgICB9Ci0rCi0rICAgIC8qIEVudHJvcHkgc291cmNlIHRlc3RzICovCi0rCi0rICAg IC8qIFRlc3QgZW50cm9weSBzb3VyY2UgZmFpbHVyZSBkZXRlY2lvbjogaS5lLiByZXR1cm5zIG5v IGRhdGEgKi8KLSsKLSsgICAgdC5lbnRsZW4gPSAwOwotKwotKyAgICBpZiAoRklQU19kcmJnX2lu c3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikgPiAwKSB7Ci0rICAgICAgICBG SVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCi0rICAgICAgICAgICAgICAgIEZJ UFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNURUQpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAg IH0KLSsKLSsgICAgLyogVHJ5IHRvIGdlbmVyYXRlIG91dHB1dCBmcm9tIHVuaW5zdGFudGlhdGVk IERSQkcgKi8KLSsgICAgaWYgKEZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+ a2F0bGVuLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGluLCB0ZC0+YWRp bmxlbikpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywK LSsgICAgICAgICAgICAgICAgRklQU19SX0dFTkVSQVRFX0VSUk9SX1VOREVURUNURUQpOwotKyAg ICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZM QUdfTk9FUlI7Ci0rICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKLSsg ICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5T VEFOVElBVEVfRVJST1IpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgaWYg KCFkb19kcmJnX2luaXQoZGN0eCwgdGQsICZ0KSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAg ICBkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOwotKwotKyAgICAvKiBUZXN0IGluc3Vm ZmljaWVudCBlbnRyb3B5ICovCi0rCi0rICAgIHQuZW50bGVuID0gZGN0eC0+bWluX2VudHJvcHkg LSAxOwotKwotKyAgICBpZiAoRklQU19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzLCB0 ZC0+cGVyc2xlbikgPiAwKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJS T1JfQ0hFQ0ssCi0rICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNU RUQpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgZGN0eC0+aWZsYWdzICY9 IH5EUkJHX0ZMQUdfTk9FUlI7Ci0rICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0 eCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQ U19SX1VOSU5TVEFOVElBVEVfRVJST1IpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsK LSsgICAgLyogVGVzdCB0b28gbXVjaCBlbnRyb3B5ICovCi0rCi0rICAgIGlmICghZG9fZHJiZ19p bml0KGRjdHgsIHRkLCAmdCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgZGN0eC0+aWZs YWdzIHw9IERSQkdfRkxBR19OT0VSUjsKLSsKLSsgICAgdC5lbnRsZW4gPSBkY3R4LT5tYXhfZW50 cm9weSArIDE7Ci0rCi0rICAgIGlmIChGSVBTX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQtPnBl cnMsIHRkLT5wZXJzbGVuKSA+IDApIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJC R19FUlJPUl9DSEVDSywKLSsgICAgICAgICAgICAgICAgRklQU19SX0VOVFJPUFlfRVJST1JfVU5E RVRFQ1RFRCk7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICBkY3R4LT5pZmxh Z3MgJj0gfkRSQkdfRkxBR19OT0VSUjsKLSsgICAgaWYgKCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0 ZShkY3R4KSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNL LCBGSVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUik7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAg fQotKwotKyAgICAvKiBOb25jZSB0ZXN0cyAqLwotKwotKyAgICAvKiBUZXN0IHRvbyBzbWFsbCBu b25jZSAqLwotKwotKyAgICBpZiAoZGN0eC0+bWluX25vbmNlKSB7Ci0rCi0rICAgICAgICBpZiAo IWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQotKyAgICAgICAgICAgIGdvdG8gZXJyOwotKwot KyAgICAgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKLSsKLSsgICAgICAgIHQu bm9uY2VsZW4gPSBkY3R4LT5taW5fbm9uY2UgLSAxOwotKwotKyAgICAgICAgaWYgKEZJUFNfZHJi Z19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywgdGQtPnBlcnNsZW4pID4gMCkgewotKyAgICAg ICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKLSsgICAgICAgICAg ICAgICAgICAgIEZJUFNfUl9OT05DRV9FUlJPUl9VTkRFVEVDVEVEKTsKLSsgICAgICAgICAgICBn b3RvIGVycjsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGRjdHgtPmlmbGFncyAmPSB+RFJCR19G TEFHX05PRVJSOwotKyAgICAgICAgaWYgKCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KSkg ewotKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQ U19SX1VOSU5TVEFOVElBVEVfRVJST1IpOwotKyAgICAgICAgICAgIGdvdG8gZXJyOwotKyAgICAg ICAgfQotKwotKyAgICB9Ci0rCi0rICAgIC8qIFRlc3QgdG9vIGxhcmdlIG5vbmNlICovCi0rCi0r ICAgIGlmIChkY3R4LT5tYXhfbm9uY2UpIHsKLSsKLSsgICAgICAgIGlmICghZG9fZHJiZ19pbml0 KGRjdHgsIHRkLCAmdCkpCi0rICAgICAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgICAgICBkY3R4 LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOwotKwotKyAgICAgICAgdC5ub25jZWxlbiA9IGRj dHgtPm1heF9ub25jZSArIDE7Ci0rCi0rICAgICAgICBpZiAoRklQU19kcmJnX2luc3RhbnRpYXRl KGRjdHgsIHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikgPiAwKSB7Ci0rICAgICAgICAgICAgRklQU2Vy cihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAotKyAgICAgICAgICAgICAgICAgICAgRklQ U19SX05PTkNFX0VSUk9SX1VOREVURUNURUQpOwotKyAgICAgICAgICAgIGdvdG8gZXJyOwotKyAg ICAgICAgfQotKwotKyAgICAgICAgZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZMQUdfTk9FUlI7Ci0r ICAgICAgICBpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKSB7Ci0rICAgICAgICAg ICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNUQU5U SUFURV9FUlJPUik7Ci0rICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICB9Ci0rCi0rICAg IH0KLSsKLSsgICAgLyogSW5zdGFudGlhdGUgd2l0aCB2YWxpZCBkYXRhLiAqLwotKyAgICBpZiAo IWRvX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQsICZ0KSkKLSsgICAgICAgIGdvdG8gZXJyOwot KwotKyAgICAvKiBDaGVjayBnZW5lcmF0aW9uIGlzIG5vdyBPSyAqLwotKyAgICBpZiAoIUZJUFNf ZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAwLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pKQotKyAgICAgICAgZ290byBl cnI7Ci0rCi0rICAgIGRjdHgtPmlmbGFncyB8PSBEUkJHX0ZMQUdfTk9FUlI7Ci0rCi0rICAgIC8q IFJlcXVlc3QgdG9vIG11Y2ggZGF0YSBmb3Igb25lIHJlcXVlc3QgKi8KLSsgICAgaWYgKEZJUFNf ZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCBkY3R4LT5tYXhfcmVxdWVzdCArIDEsIDAsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQtPmFkaW4sIHRkLT5hZGlubGVuKSkgewotKyAg ICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAotKyAgICAgICAgICAg ICAgICBGSVBTX1JfUkVRVUVTVF9MRU5HVEhfRVJST1JfVU5ERVRFQ1RFRCk7Ci0rICAgICAgICBn b3RvIGVycjsKLSsgICAgfQotKwotKyAgICAvKiBUcnkgdG9vIGxhcmdlIGFkZGl0aW9uYWwgaW5w dXQgKi8KLSsgICAgaWYgKEZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0 bGVuLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGluLCBkY3R4LT5tYXhf YWRpbiArIDEpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hF Q0ssCi0rICAgICAgICAgICAgICAgIEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX0VSUk9SX1VOREVU RUNURUQpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgLyogQ2hlY2sgcHJl ZGljdGlvbiByZXNpc3RhbmNlIHJlcXVlc3QgZmFpbHMgaWYgZW50cm9weSBzb3VyY2UKLSsgICAg ICogZmFpbHVyZS4KLSsgICAgICovCi0rCi0rICAgIHQuZW50bGVuID0gMDsKLSsKLSsgICAgaWYg KEZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAxLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGluLCB0ZC0+YWRpbmxlbikpIHsKLSsgICAgICAg IEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKLSsgICAgICAgICAgICAgICAg RklQU19SX0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RFRCk7Ci0rICAgICAgICBnb3RvIGVycjsKLSsg ICAgfQotKwotKyAgICBkY3R4LT5pZmxhZ3MgJj0gfkRSQkdfRkxBR19OT0VSUjsKLSsgICAgaWYg KCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KSkgewotKyAgICAgICAgRklQU2VycihGSVBT X0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUik7Ci0r ICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICAvKiBJbnN0YW50aWF0ZSBhZ2FpbiB3 aXRoIHZhbGlkIGRhdGEgKi8KLSsKLSsgICAgaWYgKCFkb19kcmJnX2luc3RhbnRpYXRlKGRjdHgs IHRkLCAmdCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgLyogVGVzdCByZXNlZWQgY291bnRl ciB3b3JrcyAqLwotKyAgICAvKiBTYXZlIGluaXRpYWwgcmVzZWVkIGNvdW50ZXIgKi8KLSsgICAg cmVzZWVkX2NvdW50ZXJfdG1wID0gZGN0eC0+cmVzZWVkX2NvdW50ZXI7Ci0rICAgIC8qIFNldCBy ZXNlZWQgY291bnRlciB0byBiZXlvbmQgaW50ZXJ2YWwgKi8KLSsgICAgZGN0eC0+cmVzZWVkX2Nv dW50ZXIgPSBkY3R4LT5yZXNlZWRfaW50ZXJ2YWw7Ci0rCi0rICAgIC8qIEdlbmVyYXRlIG91dHB1 dCBhbmQgY2hlY2sgZW50cm9weSBoYXMgYmVlbiByZXF1ZXN0ZWQgZm9yIHJlc2VlZCAqLwotKyAg ICB0LmVudGNudCA9IDA7Ci0rICAgIGlmICghRklQU19kcmJnX2dlbmVyYXRlKGRjdHgsIHJhbmRv dXQsIHRkLT5rYXRsZW4sIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGlu LCB0ZC0+YWRpbmxlbikpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKHQuZW50Y250ICE9 IDEpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKLSsg ICAgICAgICAgICAgICAgRklQU19SX0VOVFJPUFlfTk9UX1JFUVVFU1RFRF9GT1JfUkVTRUVEKTsK LSsgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rICAgIC8qIENoZWNrIHJlc2VlZCBjb3VudGVy IGhhcyBiZWVuIHJlc2V0ICovCi0rICAgIGlmIChkY3R4LT5yZXNlZWRfY291bnRlciAhPSByZXNl ZWRfY291bnRlcl90bXAgKyAxKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdf RVJST1JfQ0hFQ0ssIEZJUFNfUl9SRVNFRURfQ09VTlRFUl9FUlJPUik7Ci0rICAgICAgICBnb3Rv IGVycjsKLSsgICAgfQotKwotKyAgICBkY3R4LT5pZmxhZ3MgJj0gfkRSQkdfRkxBR19OT0VSUjsK LSsgICAgaWYgKCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KSkgewotKyAgICAgICAgRklQ U2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNUQU5USUFURV9F UlJPUik7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICAvKiBDaGVjayBwcmVk aWN0aW9uIHJlc2lzdGFuY2UgcmVxdWVzdCBmYWlscyBpZiBlbnRyb3B5IHNvdXJjZQotKyAgICAg KiBmYWlsdXJlLgotKyAgICAgKi8KLSsKLSsgICAgdC5lbnRsZW4gPSAwOwotKwotKyAgICBkY3R4 LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05PRVJSOwotKyAgICBpZiAoRklQU19kcmJnX2dlbmVyYXRl KGRjdHgsIHJhbmRvdXQsIHRkLT5rYXRsZW4sIDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGQtPmFkaW4sIHRkLT5hZGlubGVuKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQ U19EUkJHX0VSUk9SX0NIRUNLLAotKyAgICAgICAgICAgICAgICBGSVBTX1JfRU5UUk9QWV9FUlJP Ul9VTkRFVEVDVEVEKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIGRjdHgt PmlmbGFncyAmPSB+RFJCR19GTEFHX05PRVJSOwotKwotKyAgICBpZiAoIUZJUFNfZHJiZ191bmlu c3RhbnRpYXRlKGRjdHgpKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJS T1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKLSsgICAgICAgIGdvdG8gZXJy OwotKyAgICB9Ci0rCi0rICAgIGlmICghZG9fZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZCwgJnQp KQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIC8qIFRlc3QgcmVzZWVkIGNvdW50ZXIgd29ya3Mg Ki8KLSsgICAgLyogU2F2ZSBpbml0aWFsIHJlc2VlZCBjb3VudGVyICovCi0rICAgIHJlc2VlZF9j b3VudGVyX3RtcCA9IGRjdHgtPnJlc2VlZF9jb3VudGVyOwotKyAgICAvKiBTZXQgcmVzZWVkIGNv dW50ZXIgdG8gYmV5b25kIGludGVydmFsICovCi0rICAgIGRjdHgtPnJlc2VlZF9jb3VudGVyID0g ZGN0eC0+cmVzZWVkX2ludGVydmFsOwotKwotKyAgICAvKiBHZW5lcmF0ZSBvdXRwdXQgYW5kIGNo ZWNrIGVudHJvcHkgaGFzIGJlZW4gcmVxdWVzdGVkIGZvciByZXNlZWQgKi8KLSsgICAgdC5lbnRj bnQgPSAwOwotKyAgICBpZiAoIUZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+ a2F0bGVuLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+YWRpbiwgdGQtPmFk aW5sZW4pKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICh0LmVudGNudCAhPSAxKSB7Ci0r ICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCi0rICAgICAgICAg ICAgICAgIEZJUFNfUl9FTlRST1BZX05PVF9SRVFVRVNURURfRk9SX1JFU0VFRCk7Ci0rICAgICAg ICBnb3RvIGVycjsKLSsgICAgfQotKyAgICAvKiBDaGVjayByZXNlZWQgY291bnRlciBoYXMgYmVl biByZXNldCAqLwotKyAgICBpZiAoZGN0eC0+cmVzZWVkX2NvdW50ZXIgIT0gcmVzZWVkX2NvdW50 ZXJfdG1wICsgMSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NI RUNLLCBGSVBTX1JfUkVTRUVEX0NPVU5URVJfRVJST1IpOwotKyAgICAgICAgZ290byBlcnI7Ci0r ICAgIH0KLSsKLSsgICAgZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZMQUdfTk9FUlI7Ci0rICAgIGlm ICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQ U19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOwot KyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgLyogRXhwbGljaXQgcmVzZWVkIHRl c3RzICovCi0rCi0rICAgIC8qIFRlc3QgZXhwbGljaXQgcmVzZWVkIHdpdGggdG9vIGxhcmdlIGFk ZGl0aW9uYWwgaW5wdXQgKi8KLSsgICAgaWYgKCFkb19kcmJnX2luaXQoZGN0eCwgdGQsICZ0KSkK LSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICBkY3R4LT5pZmxhZ3MgfD0gRFJCR19GTEFHX05P RVJSOwotKwotKyAgICBpZiAoRklQU19kcmJnX3Jlc2VlZChkY3R4LCB0ZC0+YWRpbiwgZGN0eC0+ bWF4X2FkaW4gKyAxKSA+IDApIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19F UlJPUl9DSEVDSywKLSsgICAgICAgICAgICAgICAgRklQU19SX0FERElUSU9OQUxfSU5QVVRfRVJS T1JfVU5ERVRFQ1RFRCk7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKwotKyAgICAvKiBU ZXN0IGV4cGxpY2l0IHJlc2VlZCB3aXRoIGVudHJvcHkgc291cmNlIGZhaWx1cmUgKi8KLSsKLSsg ICAgdC5lbnRsZW4gPSAwOwotKwotKyAgICBpZiAoRklQU19kcmJnX3Jlc2VlZChkY3R4LCB0ZC0+ YWRpbiwgdGQtPmFkaW5sZW4pID4gMCkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19E UkJHX0VSUk9SX0NIRUNLLAotKyAgICAgICAgICAgICAgICBGSVBTX1JfRU5UUk9QWV9FUlJPUl9V TkRFVEVDVEVEKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIGlmICghRklQ U19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOwotKyAgICAg ICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgLyogVGVzdCBleHBsaWNpdCByZXNlZWQgd2l0 aCB0b28gbXVjaCBlbnRyb3B5ICovCi0rCi0rICAgIGlmICghZG9fZHJiZ19pbml0KGRjdHgsIHRk LCAmdCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsKLSsgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdf RkxBR19OT0VSUjsKLSsKLSsgICAgdC5lbnRsZW4gPSBkY3R4LT5tYXhfZW50cm9weSArIDE7Ci0r Ci0rICAgIGlmIChGSVBTX2RyYmdfcmVzZWVkKGRjdHgsIHRkLT5hZGluLCB0ZC0+YWRpbmxlbikg PiAwKSB7Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCi0r ICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNURUQpOwotKyAgICAg ICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0 ZShkY3R4KSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNL LCBGSVBTX1JfVU5JTlNUQU5USUFURV9FUlJPUik7Ci0rICAgICAgICBnb3RvIGVycjsKLSsgICAg fQotKwotKyAgICAvKiBUZXN0IGV4cGxpY2l0IHJlc2VlZCB3aXRoIHRvbyBsaXR0bGUgZW50cm9w eSAqLwotKwotKyAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQotKyAgICAgICAg Z290byBlcnI7Ci0rCi0rICAgIGRjdHgtPmlmbGFncyB8PSBEUkJHX0ZMQUdfTk9FUlI7Ci0rCi0r ICAgIHQuZW50bGVuID0gZGN0eC0+bWluX2VudHJvcHkgLSAxOwotKwotKyAgICBpZiAoRklQU19k cmJnX3Jlc2VlZChkY3R4LCB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pID4gMCkgewotKyAgICAgICAg RklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAotKyAgICAgICAgICAgICAgICBG SVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKLSsgICAgICAgIGdvdG8gZXJyOwotKyAg ICB9Ci0rCi0rICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKLSsgICAg ICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFO VElBVEVfRVJST1IpOwotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIH0KLSsKLSsgICAgcCA9ICh1 bnNpZ25lZCBjaGFyICopJmRjdHgtPmQ7Ci0rICAgIC8qIFN0YW5kYXJkIHNheXMgd2UgaGF2ZSB0 byBjaGVjayB1bmluc3RhbnRpYXRlIHJlYWxseSB6ZXJvZXMKLSsgICAgICogdGhlIGRhdGEuLi4K LSsgICAgICovCi0rICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YoZGN0eC0+ZCk7IGkrKykgewot KyAgICAgICAgaWYgKCpwICE9IDApIHsKLSsgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBT X0RSQkdfRVJST1JfQ0hFQ0ssCi0rICAgICAgICAgICAgICAgICAgICBGSVBTX1JfVU5JTlNUQU5U SUFURV9aRVJPSVNFX0VSUk9SKTsKLSsgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgICAgIH0K LSsgICAgICAgIHArKzsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMTsKLSsKLSsgZXJyOgotKyAg ICAvKiBBIHJlYWwgZXJyb3IgYXMgb3Bwb3NlZCB0byBhbiBpbmR1Y2VkIG9uZTogdW5kZXJseWlu ZyBmdW5jdGlvbiB3aWxsCi0rICAgICAqIGluZGljYXRlIHRoZSBlcnJvci4KLSsgICAgICovCi0r ICAgIGlmICghKGRjdHgtPmlmbGFncyAmIERSQkdfRkxBR19OT0VSUikpCi0rICAgICAgICBGSVBT ZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9GVU5DVElPTl9FUlJPUik7 Ci0rICAgIEZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpOwotKyAgICByZXR1cm4gMDsKLSsK LSt9Ci0rCi0raW50IGZpcHNfZHJiZ19rYXQoRFJCR19DVFggKmRjdHgsIGludCBuaWQsIHVuc2ln bmVkIGludCBmbGFncykKLSt7Ci0rICAgIERSQkdfU0VMRlRFU1RfREFUQSAqdGQ7Ci0rICAgIGZs YWdzIHw9IERSQkdfRkxBR19URVNUOwotKyAgICBmb3IgKHRkID0gZHJiZ190ZXN0OyB0ZC0+bmlk ICE9IDA7IHRkKyspIHsKLSsgICAgICAgIGlmICh0ZC0+bmlkID09IG5pZCAmJiB0ZC0+ZmxhZ3Mg PT0gZmxhZ3MpIHsKLSsgICAgICAgICAgICBpZiAoIWZpcHNfZHJiZ19zaW5nbGVfa2F0KGRjdHgs IHRkLCAwKSkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgcmV0dXJu IGZpcHNfZHJiZ19lcnJvcl9jaGVjayhkY3R4LCB0ZCk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsg ICAgcmV0dXJuIDA7Ci0rfQotKwotK2ludCBGSVBTX2RyYmdfaGVhbHRoX2NoZWNrKERSQkdfQ1RY ICpkY3R4KQotK3sKLSsgICAgaW50IHJ2OwotKyAgICBEUkJHX0NUWCAqdGN0eCA9IE5VTEw7Ci0r ICAgIHRjdHggPSBGSVBTX2RyYmdfbmV3KDAsIDApOwotKyAgICBmaXBzX3Bvc3Rfc3RhcnRlZChG SVBTX1RFU1RfRFJCRywgZGN0eC0+dHlwZSwgJmRjdHgtPnhmbGFncyk7Ci0rICAgIGlmICghdGN0 eCkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBydiA9IGZpcHNfZHJiZ19rYXQodGN0eCwgZGN0 eC0+dHlwZSwgZGN0eC0+eGZsYWdzKTsKLSsgICAgaWYgKHRjdHgpCi0rICAgICAgICBGSVBTX2Ry YmdfZnJlZSh0Y3R4KTsKLSsgICAgaWYgKHJ2KQotKyAgICAgICAgZmlwc19wb3N0X3N1Y2Nlc3Mo RklQU19URVNUX0RSQkcsIGRjdHgtPnR5cGUsICZkY3R4LT54ZmxhZ3MpOwotKyAgICBlbHNlCi0r ICAgICAgICBmaXBzX3Bvc3RfZmFpbGVkKEZJUFNfVEVTVF9EUkJHLCBkY3R4LT50eXBlLCAmZGN0 eC0+eGZsYWdzKTsKLSsgICAgaWYgKCFydikKLSsgICAgICAgIGRjdHgtPnN0YXR1cyA9IERSQkdf U1RBVFVTX0VSUk9SOwotKyAgICBlbHNlCi0rICAgICAgICBkY3R4LT5oZWFsdGhfY2hlY2tfY250 ID0gMDsKLSsgICAgcmV0dXJuIHJ2OwotK30KLSsKLStpbnQgRklQU19zZWxmdGVzdF9kcmJnKHZv aWQpCi0rewotKyAgICBEUkJHX0NUWCAqZGN0eDsKLSsgICAgRFJCR19TRUxGVEVTVF9EQVRBICp0 ZDsKLSsgICAgaW50IHJ2ID0gMTsKLSsgICAgZGN0eCA9IEZJUFNfZHJiZ19uZXcoMCwgMCk7Ci0r ICAgIGlmICghZGN0eCkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBmb3IgKHRkID0gZHJiZ190 ZXN0OyB0ZC0+bmlkICE9IDA7IHRkKyspIHsKLSsgICAgICAgIGlmICh0ZC0+cG9zdCAhPSAxKQot KyAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgaWYgKCFmaXBzX3Bvc3Rfc3RhcnRlZChG SVBTX1RFU1RfRFJCRywgdGQtPm5pZCwgJnRkLT5mbGFncykpCi0rICAgICAgICAgICAgcmV0dXJu IDE7Ci0rICAgICAgICBpZiAoIWZpcHNfZHJiZ19zaW5nbGVfa2F0KGRjdHgsIHRkLCAxKSkgewot KyAgICAgICAgICAgIGZpcHNfcG9zdF9mYWlsZWQoRklQU19URVNUX0RSQkcsIHRkLT5uaWQsICZ0 ZC0+ZmxhZ3MpOwotKyAgICAgICAgICAgIHJ2ID0gMDsKLSsgICAgICAgICAgICBjb250aW51ZTsK LSsgICAgICAgIH0KLSsgICAgICAgIGlmICghZmlwc19wb3N0X3N1Y2Nlc3MoRklQU19URVNUX0RS QkcsIHRkLT5uaWQsICZ0ZC0+ZmxhZ3MpKQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICB9 Ci0rICAgIEZJUFNfZHJiZ19mcmVlKGRjdHgpOwotKyAgICByZXR1cm4gcnY7Ci0rfQotKwotK2lu dCBGSVBTX3NlbGZ0ZXN0X2RyYmdfYWxsKHZvaWQpCi0rewotKyAgICBEUkJHX0NUWCAqZGN0eDsK LSsgICAgRFJCR19TRUxGVEVTVF9EQVRBICp0ZDsKLSsgICAgaW50IHJ2ID0gMTsKLSsgICAgZGN0 eCA9IEZJUFNfZHJiZ19uZXcoMCwgMCk7Ci0rICAgIGlmICghZGN0eCkKLSsgICAgICAgIHJldHVy biAwOwotKyAgICBmb3IgKHRkID0gZHJiZ190ZXN0OyB0ZC0+bmlkICE9IDA7IHRkKyspIHsKLSsg ICAgICAgIGlmICghZmlwc19wb3N0X3N0YXJ0ZWQoRklQU19URVNUX0RSQkcsIHRkLT5uaWQsICZ0 ZC0+ZmxhZ3MpKQotKyAgICAgICAgICAgIHJldHVybiAxOwotKyAgICAgICAgaWYgKCFmaXBzX2Ry Ymdfc2luZ2xlX2thdChkY3R4LCB0ZCwgMCkpIHsKLSsgICAgICAgICAgICBmaXBzX3Bvc3RfZmFp bGVkKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKTsKLSsgICAgICAgICAgICBy diA9IDA7Ci0rICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAo IWZpcHNfZHJiZ19lcnJvcl9jaGVjayhkY3R4LCB0ZCkpIHsKLSsgICAgICAgICAgICBmaXBzX3Bv c3RfZmFpbGVkKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKTsKLSsgICAgICAg ICAgICBydiA9IDA7Ci0rICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICB9Ci0rICAgICAg ICBpZiAoIWZpcHNfcG9zdF9zdWNjZXNzKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZs YWdzKSkKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICBGSVBTX2RyYmdfZnJl ZShkY3R4KTsKLSsgICAgcmV0dXJuIHJ2OwotK30KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9maXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5oLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2ZpcHMvZmlwc19kcmJnX3NlbGZ0ZXN0LmgKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlw cy9maXBzX2RyYmdfc2VsZnRlc3QuaC5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk3MjQ1Nzcz ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX3NlbGZ0ZXN0 LmgJMjAxNS0wNC0yMiAxNjowODo0MC4yOTcyNDU3NzMgKzAyMDAKLUBAIC0wLDAgKzEsMTc5MSBA QAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFBy b2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9k aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsg KgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3Ry aWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmlu ZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0 aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3Ig dXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0r ICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2pl Y3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsg KiAgICBvcGVuc3NsLWNvcmUub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9t IHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1h eSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgot KyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJl ZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xs b3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1 ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9y IHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0r ICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1Qg YGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVS UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pF Q1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E SVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVN RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERB VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENB VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs Ci0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig T1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD SCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsvKiBTZWxmdGVzdCBhbmQgaGVhbHRoIGNoZWNrIGRh dGEgZm9yIHRoZSBTUDgwMC05MCBEUkJHICovCi0rCi0rI2RlZmluZSBfX2ZpcHNfY29uc3RzZWcK LSsKLSsvKiBBRVMtMTI4IHVzZSBkZiBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfZW50cm9weWlucHV0W10gPSB7Ci0r ICAgIDB4NjEsIDB4NTIsIDB4N2MsIDB4ZTMsIDB4MjMsIDB4N2QsIDB4MGEsIDB4MDcsIDB4MTAs IDB4MGMsIDB4NTAsIDB4MzMsCi0rICAgIDB4YzgsIDB4ZGIsIDB4ZmYsIDB4MTIKLSt9OwotKwot K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9k Zl9wcl9ub25jZVtdID0gewotKyAgICAweDUxLCAweDBkLCAweDg1LCAweDc3LCAweGVkLCAweDIy LCAweDk3LCAweDI4Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10g PSB7Ci0rICAgIDB4NTksIDB4OWYsIDB4YmIsIDB4Y2QsIDB4ZDUsIDB4MjUsIDB4NjksIDB4YjUs IDB4Y2IsIDB4YjUsIDB4MDMsIDB4ZmUsCi0rICAgIDB4ZDcsIDB4ZDcsIDB4MDEsIDB4NjcKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMTI4X3VzZV9kZl9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHhlZiwgMHg4OCwg MHg3NiwgMHgwMSwgMHhhZiwgMHgzYywgMHhmZSwgMHg4YiwgMHhhZiwgMHgyNiwgMHgwNiwgMHg5 ZSwKLSsgICAgMHg5YSwgMHg0NywgMHgwOCwgMHg3NgotK307Ci0rCi0rX19maXBzX2NvbnN0c2Vn Ci0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3ByX2VudHJv cHlpbnB1dHByW10gPSB7Ci0rICAgIDB4ZTIsIDB4NzYsIDB4ZjksIDB4ZjYsIDB4M2EsIDB4YmEs IDB4MTAsIDB4OWYsIDB4YmYsIDB4NDcsIDB4MGUsIDB4NTEsCi0rICAgIDB4MDksIDB4ZmIsIDB4 YTMsIDB4YjYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAg IDB4ZDQsIDB4OTgsIDB4OGEsIDB4NDYsIDB4ODAsIDB4NGMsIDB4ZGIsIDB4YTMsIDB4NTksIDB4 MDIsIDB4NTcsIDB4NTIsCi0rICAgIDB4NjYsIDB4MWMsIDB4ZWEsIDB4NWIKLSt9OwotKwotK19f Zmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3Vz ZV9kZl9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7Ci0rICAgIDB4ODgsIDB4OGMsIDB4OTEsIDB4 ZDYsIDB4YmUsIDB4NTYsIDB4NmUsIDB4MDgsIDB4OWEsIDB4NjIsIDB4MmIsIDB4MTEsCi0rICAg IDB4M2YsIDB4NWUsIDB4MzEsIDB4MDYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRw cjJbXSA9IHsKLSsgICAgMHhjMCwgMHg1YywgMHg2YiwgMHg5OCwgMHgwMSwgMHgwZCwgMHg1OCwg MHgxOCwgMHg1MSwgMHgxOCwgMHg5NiwgMHhhZSwKLSsgICAgMHhhNywgMHhlMywgMHhhOCwgMHg2 NwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFl c18xMjhfdXNlX2RmX3ByX3JldHVybmVkYml0c1tdID0gewotKyAgICAweGNmLCAweDAxLCAweGFj LCAweDIyLCAweDMxLCAweDA2LCAweDhlLCAweGZjLCAweGNlLCAweDU2LCAweGVhLCAweDI0LAot KyAgICAweDBmLCAweDM4LCAweDQzLCAweGM2Ci0rfTsKLSsKLSsvKiBBRVMtMTI4IHVzZSBkZiBO byBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzEyOF91c2VfZGZfZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4MWYsIDB4OGUsIDB4MzQsIDB4 ODIsIDB4MGMsIDB4YjcsIDB4YmUsIDB4YzUsIDB4MDEsIDB4M2UsIDB4ZDAsIDB4YTMsCi0rICAg IDB4OWQsIDB4N2QsIDB4MWMsIDB4OWIKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9ub25jZVtdID0gewotKyAgICAweGQ1 LCAweDRkLCAweGJkLCAweDRhLCAweDkzLCAweDdmLCAweGI4LCAweDk2Ci0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2Vf ZGZfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4YWIsIDB4ZDYsIDB4M2YsIDB4 MDQsIDB4ZmUsIDB4MjcsIDB4NmIsIDB4MmQsIDB4ZDcsIDB4YzMsIDB4MWMsIDB4ZjMsCi0rICAg IDB4MzgsIDB4NjYsIDB4YmEsIDB4MWIKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsK LSsgICAgMHhmZSwgMHhmNCwgMHgwOSwgMHhhOCwgMHhiNywgMHg3MywgMHgyNywgMHg5YywgMHg1 ZiwgMHhhNywgMHhlYSwgMHg0NiwKLSsgICAgMHhiNSwgMHhlMiwgMHhiMiwgMHg0MQotK307Ci0r Ci0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNl X2RmX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHg0MiwgMHhlNCwgMHg0ZSwgMHg3Yiwg MHgyNywgMHhkZCwgMHhjYiwgMHhiYywgMHgwYSwgMHhjZiwgMHhhNiwgMHg2NywKLSsgICAgMHhl NywgMHg1NywgMHgxMSwgMHhiNAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX2VudHJvcHlpbnB1dHJlc2VlZFtd ID0gewotKyAgICAweDE0LCAweDI2LCAweDY5LCAweGQ5LCAweGYzLCAweDY1LCAweDAzLCAweGQ2 LCAweDZiLCAweGI5LCAweDQ0LCAweDBiLAotKyAgICAweGM3LCAweGM0LCAweDllLCAweDM5Ci0r fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzEyOF91c2VfZGZfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7Ci0rICAgIDB4NTUsIDB4 MmUsIDB4NjAsIDB4OWEsIDB4MDUsIDB4NzIsIDB4OGEsIDB4YTgsIDB4ZWYsIDB4MjIsIDB4ODEs IDB4NWEsCi0rICAgIDB4YzgsIDB4OTMsIDB4ZmEsIDB4ODQKLSt9OwotKwotK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9hZGRpdGlvbmFs aW5wdXQyW10gPSB7Ci0rICAgIDB4M2MsIDB4NDAsIDB4YzgsIDB4YzQsIDB4MTYsIDB4MGMsIDB4 MjEsIDB4YTQsIDB4MzcsIDB4MmMsIDB4OGYsIDB4YTUsCi0rICAgIDB4MDYsIDB4MGMsIDB4MTUs IDB4MmMKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBhZXNfMTI4X3VzZV9kZl9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhlMSwgMHgzZSwgMHg5 OSwgMHg5OCwgMHg4NiwgMHg2NywgMHgwYiwgMHg2MywgMHg3YiwgMHhiZSwgMHgzZiwgMHg4OCwK LSsgICAgMHg0NiwgMHg4MSwgMHhjNywgMHgxOQotK307Ci0rCi0rLyogQUVTLTE5MiB1c2UgZGYg UFIgICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18x OTJfdXNlX2RmX3ByX2VudHJvcHlpbnB1dFtdID0gewotKyAgICAweDJiLCAweDRlLCAweDhiLCAw eGUxLCAweGYxLCAweDM0LCAweDgwLCAweDU2LCAweDgxLCAweGY5LCAweDc0LCAweGVjLAotKyAg ICAweDE3LCAweDQ0LCAweDJhLCAweGYxLCAweDE0LCAweGIwLCAweGJmLCAweDk3LCAweDM5LCAw eGI3LCAweDA0LCAweDdkCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfcHJfbm9uY2VbXSA9IHsKLSsgICAgMHhkNiwgMHg5 ZCwgMHhlYiwgMHgxNCwgMHg0ZSwgMHg2YywgMHgzMCwgMHgxZSwgMHgzOSwgMHg1NSwgMHg3Mywg MHhkMCwKLSsgICAgMHhkMSwgMHg4MCwgMHg3OCwgMHhmYQotK307Ci0rCi0rX19maXBzX2NvbnN0 c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX3Bl cnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAweGZjLCAweDQzLCAweDRhLCAweGY4LCAw eDlhLCAweDU1LCAweGIzLCAweDUzLCAweDgzLCAweGUyLCAweDE4LCAweDE2LAotKyAgICAweDBj LCAweGRjLCAweGNkLCAweDVlLCAweDRmLCAweGEwLCAweDAzLCAweDAxLCAweDJiLCAweDlmLCAw eGU0LCAweGQ1LAotKyAgICAweDdkLCAweDQ5LCAweGYwLCAweDQxLCAweDllLCAweDNkLCAweDk5 LCAweDA0Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7Ci0rICAgIDB4 NWUsIDB4OWYsIDB4NDksIDB4NmYsIDB4MjEsIDB4OGIsIDB4MWQsIDB4MzIsIDB4ZDUsIDB4ODQs IDB4NWMsIDB4YWMsCi0rICAgIDB4YWYsIDB4ZGYsIDB4ZTQsIDB4NzksIDB4OWUsIDB4YWYsIDB4 YTksIDB4ODIsIDB4ZDAsIDB4ZjgsIDB4NGYsIDB4Y2IsCi0rICAgIDB4NjksIDB4MTAsIDB4MGEs IDB4N2UsIDB4ODEsIDB4NTcsIDB4YjUsIDB4MzYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwot KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9lbnRyb3B5 aW5wdXRwcltdID0gewotKyAgICAweGQ0LCAweDgxLCAweDBjLCAweGQ3LCAweDY2LCAweDM5LCAw eGVjLCAweDQyLCAweDUzLCAweDg3LCAweDQxLCAweGE1LAotKyAgICAweDFlLCAweDdkLCAweDgw LCAweDkxLCAweDhlLCAweGJiLCAweGVkLCAweGFjLCAweDE0LCAweDAyLCAweDFhLCAweGQ1Ci0r fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzE5Ml91c2VfZGZfcHJfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweGRmLCAweDFk LCAweDM5LCAweDQ1LCAweDdjLCAweDliLCAweGM2LCAweDJiLCAweDdkLCAweDhjLCAweDkzLCAw eGU5LAotKyAgICAweDE5LCAweDMwLCAweDZiLCAweDY3Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfcHJfYWRk aXRpb25hbGlucHV0MltdID0gewotKyAgICAweDAwLCAweDcxLCAweDI3LCAweDRlLCAweGQzLCAw eDE0LCAweGYxLCAweDIwLCAweDdmLCAweDRhLCAweDQxLCAweDMyLAotKyAgICAweDJhLCAweDk3 LCAweDExLCAweDQzLCAweDhmLCAweDRhLCAweDE1LCAweDdiLCAweDliLCAweDUxLCAweDc5LCAw eGRhLAotKyAgICAweDQ5LCAweDNkLCAweGRlLCAweGU4LCAweGJjLCAweDkzLCAweDkxLCAweDk5 Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgYWVzXzE5Ml91c2VfZGZfcHJfZW50cm9weWlucHV0cHIyW10gPSB7Ci0rICAgIDB4OTAsIDB4 ZWUsIDB4NzYsIDB4YTEsIDB4NDUsIDB4OGQsIDB4YjcsIDB4NDAsIDB4YjAsIDB4MTEsIDB4YmYs IDB4ZDAsCi0rICAgIDB4NjUsIDB4ZDcsIDB4M2MsIDB4N2MsIDB4NGYsIDB4MjAsIDB4M2YsIDB4 NGUsIDB4MTEsIDB4OWQsIDB4YjMsIDB4NWUKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9yZXR1cm5lZGJpdHNbXSA9 IHsKLSsgICAgMHgyNCwgMHgzYiwgMHgyMCwgMHhhNCwgMHgzNywgMHg2NiwgMHhiYSwgMHg3Miwg MHgzOSwgMHgzZiwgMHhjZiwgMHgzYywKLSsgICAgMHg3ZSwgMHgxYSwgMHgyYiwgMHg4MwotK307 Ci0rCi0rLyogQUVTLTE5MiB1c2UgZGYgTm8gUFIgICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX2VudHJvcHlpbnB1dFtdID0gewot KyAgICAweDhkLCAweDc0LCAweGE0LCAweDUwLCAweDFhLCAweDAyLCAweDY4LCAweDBjLCAweDJh LCAweDY5LCAweGM0LCAweDgyLAotKyAgICAweDNiLCAweGJiLCAweGRhLCAweDBlLCAweDdmLCAw eDc3LCAweGEzLCAweDE3LCAweDc4LCAweDU3LCAweGIyLCAweDdiCi0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfbm9uY2Vb XSA9IHsKLSsgICAgMHg3NSwgMHhkNSwgMHgxZiwgMHhhYywgMHhhNCwgMHg4ZCwgMHg0MiwgMHg3 OCwgMHhkNywgMHg2OSwgMHg4NiwgMHg5ZCwKLSsgICAgMHg3NywgMHhkNywgMHg0MSwgMHgwZQot K307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18xOTJfdXNlX2RmX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAweDRlLCAw eDMzLCAweDQxLCAweDNjLCAweDljLCAweGMyLCAweGQyLCAweDUzLCAweGFmLCAweDkwLCAweGVh LCAweGNmLAotKyAgICAweDE5LCAweDUwLCAweDFlLCAweGU2LCAweDZmLCAweDYzLCAweGM4LCAw eDMyLCAweDIyLCAweGRjLCAweDA3LCAweDY1LAotKyAgICAweDljLCAweGQzLCAweGY4LCAweDMw LCAweDllLCAweGVkLCAweDM1LCAweDcwCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfYWRkaXRpb25hbGlucHV0W10gPSB7 Ci0rICAgIDB4NWQsIDB4OGIsIDB4OGMsIDB4YzEsIDB4ZGYsIDB4MGUsIDB4MDIsIDB4NzgsIDB4 ZmIsIDB4MTksIDB4YjgsIDB4NjksCi0rICAgIDB4NzgsIDB4NGUsIDB4OWMsIDB4NTIsIDB4YmMs IDB4YzcsIDB4MjAsIDB4YzksIDB4ZTYsIDB4NWUsIDB4NzcsIDB4MjIsCi0rICAgIDB4MjgsIDB4 M2QsIDB4MGMsIDB4OWUsIDB4NjgsIDB4YTgsIDB4NDUsIDB4ZDcKLSt9OwotKwotK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9pbnRfcmV0 dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4ZDUsIDB4ZTcsIDB4MDgsIDB4YzUsIDB4MTksIDB4OTks IDB4ZDUsIDB4MzEsIDB4MDMsIDB4MGEsIDB4NzQsIDB4YjYsCi0rICAgIDB4YjcsIDB4ZWQsIDB4 ZTksIDB4ZWEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKLSsgICAg MHg5YywgMHgyNiwgMHhkYSwgMHhmMSwgMHhhYywgMHhkOSwgMHg1YSwgMHhkNiwgMHhhOCwgMHg2 NSwgMHhmNSwgMHgwMiwKLSsgICAgMHg4ZiwgMHhkYywgMHhhMiwgMHgwOSwgMHg1NCwgMHhhNiwg MHhlMiwgMHhhNCwgMHhkZSwgMHgzMiwgMHhlMCwgMHgwMQotK307Ci0rCi0rX19maXBzX2NvbnN0 c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX2FkZGl0 aW9uYWxpbnB1dHJlc2VlZFtdID0gewotKyAgICAweDliLCAweDkwLCAweGIwLCAweDNhLCAweDBl LCAweDNhLCAweDgwLCAweDA3LCAweDRhLCAweGY0LCAweGRhLCAweDc2LAotKyAgICAweDI4LCAw eDMwLCAweDNjLCAweGVlLCAweDU0LCAweDFiLCAweDk0LCAweDU5LCAweDUxLCAweDQzLCAweDU2 LCAweDc3LAotKyAgICAweGFmLCAweDg4LCAweGRkLCAweDYzLCAweDg5LCAweDQ3LCAweDA2LCAw eDY1Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzE5Ml91c2VfZGZfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAweDNjLCAweDExLCAw eDY0LCAweDdhLCAweDk2LCAweGY1LCAweGQ4LCAweGI4LCAweGFlLCAweGQ2LCAweDcwLCAweDRl LAotKyAgICAweDE2LCAweDk2LCAweGRlLCAweGU5LCAweDYyLCAweGJjLCAweGVlLCAweDI4LCAw eDJmLCAweDI2LCAweGE2LCAweGYwLAotKyAgICAweDU2LCAweGVmLCAweGEzLCAweGYxLCAweDZi LCAweGExLCAweGIxLCAweDc3Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4 MGIsIDB4ZTIsIDB4NTYsIDB4MDMsIDB4MWUsIDB4ZGIsIDB4MmMsIDB4NmQsIDB4N2YsIDB4MWIs IDB4MTUsIDB4NTgsCi0rICAgIDB4MWEsIDB4ZjksIDB4MTMsIDB4MjgKLSt9OwotKwotKy8qIEFF Uy0yNTYgdXNlIGRmIFBSICAqLwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKLSsgICAgMHg2MSwg MHg2OCwgMHhmYywgMHgxYSwgMHhmMCwgMHhiNSwgMHg5NSwgMHg2YiwgMHg4NSwgMHgwOSwgMHg5 YiwgMHg3NCwKLSsgICAgMHgzZiwgMHgxMywgMHg3OCwgMHg0OSwgMHgzYiwgMHg4NSwgMHhlYywg MHg5MywgMHgxMywgMHgzYiwgMHhhOSwgMHg0ZiwKLSsgICAgMHg5NiwgMHhhYiwgMHgyYywgMHhl NCwgMHhjOCwgMHg4ZiwgMHhkZCwgMHg2YQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3ByX25vbmNlW10gPSB7Ci0rICAg IDB4YWQsIDB4ZDIsIDB4YmIsIDB4YmEsIDB4YjcsIDB4NjUsIDB4ODksIDB4YzMsIDB4MjEsIDB4 NmMsIDB4NTUsIDB4MzMsCi0rICAgIDB4MmIsIDB4MzYsIDB4ZmYsIDB4YTQKLSt9OwotKwotK19f Zmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3Vz ZV9kZl9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHg2ZSwgMHhjYSwgMHhl NywgMHgyMCwgMHg3MiwgMHhkMywgMHg4NCwgMHg1YSwgMHgzMiwgMHhkMywgMHg0YiwgMHgyNCwK LSsgICAgMHg3MiwgMHhjNCwgMHg2MywgMHgyYiwgMHg5ZCwgMHgxMiwgMHgyNCwgMHgwYywgMHgy MywgMHgyNiwgMHg4ZSwgMHg4MywKLSsgICAgMHgxNiwgMHgzNywgMHgwYiwgMHhkMSwgMHgwNiwg MHg0ZiwgMHg2OCwgMHg2ZAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0g ewotKyAgICAweDdlLCAweDA4LCAweDRhLCAweGJiLCAweGUzLCAweDIxLCAweDdjLCAweGM5LCAw eDIzLCAweGQyLCAweGY4LCAweGIwLAotKyAgICAweDczLCAweDk4LCAweGJhLCAweDg0LCAweDc0 LCAweDIzLCAweGFiLCAweDA2LCAweDhhLCAweGUyLCAweDIyLCAweGQzLAotKyAgICAweDdiLCAw eGNlLCAweDliLCAweGQyLCAweDRhLCAweDc2LCAweGI4LCAweGRlCi0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZf cHJfZW50cm9weWlucHV0cHJbXSA9IHsKLSsgICAgMHgwYiwgMHgyMywgMHhhZiwgMHhkZiwgMHhm MSwgMHg2MiwgMHhkNywgMHhkMywgMHg0MywgMHg5NywgMHhmOCwgMHg3NywKLSsgICAgMHgwNCwg MHhhOCwgMHg0MiwgMHgyMCwgMHhiZCwgMHhmNiwgMHgwZiwgMHhjMSwgMHgxNywgMHgyZiwgMHg5 ZiwgMHg1NCwKLSsgICAgMHhiYiwgMHg1NiwgMHgxNywgMHg4NiwgMHg2OCwgMHgwZSwgMHhiYSwg MHhhOQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGFlc18yNTZfdXNlX2RmX3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHgz MSwgMHg4ZSwgMHhhZCwgMHhhZiwgMHg0MCwgMHhlYiwgMHg2YiwgMHg3NCwgMHgzMSwgMHg0Niwg MHg4MCwgMHhjNywKLSsgICAgMHgxNywgMHhhYiwgMHgzYywgMHg3YQotK307Ci0rCi0rX19maXBz X2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2Rm X3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHg5NCwgMHg2YiwgMHhjOSwgMHg5Ziwg MHhhYiwgMHg4ZCwgMHhjNSwgMHhlYywgMHg3MSwgMHg4OCwgMHgxZCwgMHgwMCwKLSsgICAgMHg4 YywgMHg4OSwgMHg2OCwgMHhlNCwgMHhjOCwgMHgwNywgMHg3NywgMHgzNiwgMHgxNywgMHg2ZCwg MHg3OSwgMHg3OCwKLSsgICAgMHhjNywgMHgwNiwgMHg0ZSwgMHg5OSwgMHgwNCwgMHgyOCwgMHgy OSwgMHhjMwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3ByX2VudHJvcHlpbnB1dHByMltdID0gewotKyAgICAw eGJmLCAweDZjLCAweDU5LCAweDJhLCAweDBkLCAweDQ0LCAweDBmLCAweGFlLCAweDlhLCAweDVl LCAweDAzLCAweDczLAotKyAgICAweGQ4LCAweGE2LCAweGUxLCAweGNmLCAweDI1LCAweDYxLCAw eDM4LCAweDI0LCAweDg2LCAweDllLCAweDUzLCAweGU4LAotKyAgICAweGE0LCAweGRmLCAweDU2 LCAweGY0LCAweDA2LCAweDA3LCAweDljLCAweDBmCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcHJfcmV0dXJuZWRiaXRz W10gPSB7Ci0rICAgIDB4MjIsIDB4NGEsIDB4YjQsIDB4YjgsIDB4YjYsIDB4ZWUsIDB4N2QsIDB4 YjEsIDB4OWUsIDB4YzksIDB4ZjksIDB4YTAsCi0rICAgIDB4ZDksIDB4ZTIsIDB4OTcsIDB4MDAK LSt9OwotKwotKy8qIEFFUy0yNTYgdXNlIGRmIE5vIFBSICAqLwotK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9lbnRyb3B5aW5wdXRbXSA9 IHsKLSsgICAgMHhhNSwgMHgzZSwgMHgzNywgMHgxMCwgMHgxNywgMHg0MywgMHg5MSwgMHg5Mywg MHg1OSwgMHgxZSwgMHg0NywgMHg1MCwKLSsgICAgMHg4NywgMHhhYSwgMHhkZCwgMHhkNSwgMHhj MSwgMHhjMywgMHg4NiwgMHhjZCwgMHhjYSwgMHgwZCwgMHhkYiwgMHg2OCwKLSsgICAgMHhlMCwg MHgwMiwgMHhkOCwgMHgwZiwgMHhkYywgMHg0MCwgMHgxYSwgMHg0NwotK307Ci0rCi0rX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX25vbmNl W10gPSB7Ci0rICAgIDB4YTksIDB4NGQsIDB4YTUsIDB4NWEsIDB4ZmQsIDB4YzUsIDB4MGMsIDB4 ZTUsIDB4MWMsIDB4OWEsIDB4M2IsIDB4OGEsCi0rICAgIDB4NGMsIDB4NDQsIDB4ODQsIDB4NDAK LSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBhZXNfMjU2X3VzZV9kZl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHg4Yiwg MHg1MiwgMHhhMiwgMHg0YSwgMHg5MywgMHhjMywgMHg0ZSwgMHhhNywgMHgxZSwgMHgxYywgMHhh NywgMHgwNSwKLSsgICAgMHhlYiwgMHg4MiwgMHg5YiwgMHhhNiwgMHg1ZCwgMHhlNCwgMHhkNCwg MHhlMCwgMHg3ZiwgMHhhMywgMHhkOCwgMHg2YiwKLSsgICAgMHgzNywgMHg4NCwgMHg1ZiwgMHhm MSwgMHhjNywgMHhkNSwgMHhmNiwgMHhkMgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX2FkZGl0aW9uYWxpbnB1dFtdID0g ewotKyAgICAweDIwLCAweGY0LCAweDIyLCAweGVkLCAweGY4LCAweDVjLCAweGExLCAweDZhLCAw eDAxLCAweGNmLCAweGJlLCAweDVmLAotKyAgICAweDhkLCAweDZjLCAweDk0LCAweDdmLCAweGFl LCAweDEyLCAweGE4LCAweDU3LCAweGRiLCAweDJhLCAweGE5LCAweGJmLAotKyAgICAweGM3LCAw eGIzLCAweDY1LCAweDgxLCAweDgwLCAweDhkLCAweDBkLCAweDQ2Ci0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfaW50X3Jl dHVybmVkYml0c1tdID0gewotKyAgICAweDRlLCAweDQ0LCAweGZkLCAweGYzLCAweDllLCAweDI5 LCAweGEyLCAweGI4LCAweDBmLCAweDVkLCAweDZjLCAweGUxLAotKyAgICAweDI4LCAweDBjLCAw eDNiLCAweGMxCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfZW50cm9weWlucHV0cmVzZWVkW10gPSB7Ci0rICAg IDB4ZGQsIDB4NDAsIDB4ZTUsIDB4OTgsIDB4N2IsIDB4MjcsIDB4MTYsIDB4NzMsIDB4MTUsIDB4 NjgsIDB4ZDIsIDB4NzYsCi0rICAgIDB4YmYsIDB4MGMsIDB4NjcsIDB4MTUsIDB4NzUsIDB4Nzks IDB4MDMsIDB4ZDMsIDB4ZGUsIDB4ZGUsIDB4OTEsIDB4NDYsCi0rICAgIDB4NDIsIDB4ZGQsIDB4 ZDQsIDB4NjcsIDB4YzgsIDB4NzksIDB4YzgsIDB4MWUKLSt9OwotKwotK19fZmlwc19jb25zdHNl ZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9hZGRpdGlv bmFsaW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHg3ZiwgMHhkOCwgMHgxZiwgMHhiZCwgMHgyYSwg MHhiNSwgMHgxYywgMHgxMSwgMHg1ZCwgMHg4MywgMHg0ZSwgMHg5OSwKLSsgICAgMHhmNiwgMHg1 YywgMHhhNSwgMHg0MCwgMHgyMCwgMHhlZCwgMHgzOCwgMHg4ZSwgMHhkNSwgMHg5ZSwgMHhlMCwg MHg3NSwKLSsgICAgMHg5MywgMHhmZSwgMHgxMiwgMHg1ZSwgMHg1ZCwgMHg3MywgMHhmYiwgMHg3 NQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFl c18yNTZfdXNlX2RmX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHhjZCwgMHgyYywgMHhm ZiwgMHgxNCwgMHg2OSwgMHgzZSwgMHg0YywgMHg5ZSwgMHhmZCwgMHhmZSwgMHgyNiwgMHgwZCwK LSsgICAgMHhlOSwgMHg4NiwgMHgwMCwgMHg0OSwgMHgzMCwgMHhiYSwgMHhiMSwgMHhjNiwgMHg1 MCwgMHg1NywgMHg3NywgMHgyYSwKLSsgICAgMHg2MiwgMHgzOSwgMHgyYywgMHgzYiwgMHg3NCwg MHhlYiwgMHhjOSwgMHgwZAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX3JldHVybmVkYml0c1tdID0gewotKyAgICAweDRm LCAweDc4LCAweGJlLCAweGI5LCAweDRkLCAweDk3LCAweDhjLCAweGU5LCAweGQwLCAweDk3LCAw eGZlLCAweGFkLAotKyAgICAweGZhLCAweGZkLCAweDM1LCAweDVlCi0rfTsKLSsKLSsvKiBBRVMt MTI4IG5vIGRmIFBSICAqLwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBhZXNfMTI4X25vX2RmX3ByX2VudHJvcHlpbnB1dFtdID0gewotKyAgICAweDlhLCAweDI1 LCAweDY1LCAweDEwLCAweDY3LCAweGQ1LCAweGI2LCAweDZiLCAweDcwLCAweGExLCAweGIzLCAw eGE0LAotKyAgICAweDQzLCAweDk1LCAweDgwLCAweGMwLCAweDg0LCAweDBhLCAweDc5LCAweGIw LCAweDg4LCAweDc0LCAweGYyLCAweGJmLAotKyAgICAweDMxLCAweDZjLCAweDMzLCAweDM4LCAw eDBiLCAweDAwLCAweGIyLCAweDVhCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9wcl9ub25jZVtdID0gewotKyAgICAweDc4 LCAweDQ3LCAweDZiLCAweGY3LCAweDkwLCAweDhlLCAweDg3LCAweGYxCi0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19k Zl9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHhmNywgMHgyMiwgMHgxZCwg MHgzYSwgMHhiZSwgMHgxZCwgMHhjYSwgMHgzMiwgMHgxYiwgMHhiZCwgMHg4NywgMHgwYywKLSsg ICAgMHg1MSwgMHgyNCwgMHgxOSwgMHhlZSwgMHhhMywgMHgyMywgMHgwOSwgMHg2MywgMHgzMywg MHgzZCwgMHhhOCwgMHgwYywKLSsgICAgMHgxYywgMHhmYSwgMHg0MiwgMHg4OSwgMHhjYywgMHg2 ZiwgMHhhMCwgMHhhOAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7Ci0r ICAgIDB4YzksIDB4ZTAsIDB4ODAsIDB4YmYsIDB4OGMsIDB4NDUsIDB4NTgsIDB4MzksIDB4ZmYs IDB4MDAsIDB4YWIsIDB4MDIsCi0rICAgIDB4NGMsIDB4M2UsIDB4M2EsIDB4OTUsIDB4OWIsIDB4 ODAsIDB4YTgsIDB4MjEsIDB4MmEsIDB4ZWUsIDB4YmEsIDB4NzMsCi0rICAgIDB4YjEsIDB4ZDks IDB4Y2YsIDB4MjgsIDB4ZjYsIDB4OGYsIDB4OWIsIDB4MTIKLSt9OwotKwotK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3ByX2VudHJvcHlp bnB1dHByW10gPSB7Ci0rICAgIDB4NGMsIDB4YTgsIDB4YzUsIDB4ZjAsIDB4NTksIDB4OWUsIDB4 YTYsIDB4OGQsIDB4MjYsIDB4NTMsIDB4ZDcsIDB4OGEsCi0rICAgIDB4YTksIDB4ZDgsIDB4Zjcs IDB4ZWQsIDB4YjIsIDB4ZjksIDB4MTIsIDB4NDIsIDB4ZTEsIDB4ZTUsIDB4YmQsIDB4ZTcsCi0r ICAgIDB4ZTcsIDB4MWQsIDB4NzQsIDB4OTksIDB4MDAsIDB4OWQsIDB4MzEsIDB4M2UKLSt9Owot KwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MTI4X25vX2RmX3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhlMiwgMHhhYywgMHgy MCwgMHhmMCwgMHg4MCwgMHhlNywgMHhiYywgMHg3ZSwgMHg5YywgMHg3YiwgMHg2NSwgMHg3MSwK LSsgICAgMHhhZiwgMHgxOSwgMHgzMiwgMHgxNgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0r ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfYWRkaXRpb25h bGlucHV0MltdID0gewotKyAgICAweDMyLCAweDdmLCAweDM4LCAweDhiLCAweDczLCAweDBhLCAw eDc4LCAweDgzLCAweGRjLCAweDMwLCAweGJlLCAweDlmLAotKyAgICAweDEwLCAweDFmLCAweGY1 LCAweDFmLCAweGNhLCAweDAwLCAweGI1LCAweDBkLCAweGQ2LCAweDlkLCAweDYwLCAweDgzLAot KyAgICAweDUxLCAweDU0LCAweDdkLCAweDM4LCAweDIzLCAweDNhLCAweDUyLCAweDUwCi0rfTsK LSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzEyOF9ub19kZl9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKLSsgICAgMHgxOCwgMHg2MSwgMHg1 MywgMHg1NiwgMHhlZCwgMHhlZCwgMHhkNywgMHgyMCwgMHhmYiwgMHg3MSwgMHgwNCwgMHg3YSwK LSsgICAgMHhiMiwgMHhhYywgMHhjMSwgMHgyOCwgMHhjZCwgMHhmMiwgMHhjMiwgMHhmYywgMHhh YSwgMHhiMSwgMHgwNiwgMHgwNywKLSsgICAgMHhlOSwgMHg0NiwgMHg5NSwgMHgwMiwgMHg0OCwg MHgwMSwgMHg3OCwgMHhmOQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4 MjksIDB4YzgsIDB4MWIsIDB4MTUsIDB4YjEsIDB4ZDEsIDB4YzIsIDB4ZjYsIDB4NzEsIDB4ODYs IDB4NjgsIDB4MzMsCi0rICAgIDB4NTcsIDB4ODIsIDB4MzMsIDB4YWYKLSt9OwotKwotKy8qIEFF Uy0xMjggbm8gZGYgTm8gUFIgICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGFlc18xMjhfbm9fZGZfZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4YzksIDB4 YzUsIDB4NzksIDB4YmMsIDB4ZTgsIDB4YzUsIDB4MTksIDB4ZDgsIDB4YmMsIDB4NjYsIDB4NzMs IDB4NjcsCi0rICAgIDB4ZjYsIDB4ZDMsIDB4NzIsIDB4YWEsIDB4YTYsIDB4MTYsIDB4YjgsIDB4 NTAsIDB4YjcsIDB4NDcsIDB4M2EsIDB4NDIsCi0rICAgIDB4YWIsIDB4ZjQsIDB4MTYsIDB4YjIs IDB4OTYsIDB4ZDIsIDB4YjYsIDB4NjAKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX25vbmNlW10gPSB7Ci0rICAgIDB4NWYs IDB4YmYsIDB4OTcsIDB4MGMsIDB4NGIsIDB4YTQsIDB4ODcsIDB4MTMKLSt9OwotKwotK19fZmlw c19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2Rm X3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAweGNlLCAweGZiLCAweDdiLCAweDNm LCAweGQ0LCAweDZiLCAweDI5LCAweDBkLCAweDY5LCAweDA2LCAweGZmLCAweGJiLAotKyAgICAw eGYyLCAweGU1LCAweGM2LCAweDZjLCAweDBhLCAweDEwLCAweGEwLCAweGNmLCAweDFhLCAweDQ4 LCAweGM3LCAweDhiLAotKyAgICAweDNjLCAweDE2LCAweDg4LCAweGVkLCAweDUwLCAweDEzLCAw eDgxLCAweGNlCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgYWVzXzEyOF9ub19kZl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHg0YiwgMHgy MiwgMHg0NiwgMHgxOCwgMHgwMiwgMHg3YiwgMHhkMiwgMHgxYiwgMHgyMiwgMHg0MiwgMHg3Yywg MHgzNywKLSsgICAgMHhkOSwgMHhmNiwgMHhlOCwgMHg5YiwgMHgxMiwgMHgzMCwgMHg1ZiwgMHhl OSwgMHg5MCwgMHhlOCwgMHgwOCwgMHgyNCwKLSsgICAgMHg0ZiwgMHgwNiwgMHg2NiwgMHhkYiwg MHgxOSwgMHgyYiwgMHgxMywgMHg5NQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfaW50X3JldHVybmVkYml0c1tdID0gewot KyAgICAweDJlLCAweDk2LCAweDcwLCAweDY0LCAweGZhLCAweGRmLCAweGRmLCAweDU3LCAweGI1 LCAweDgyLCAweGVlLCAweGQ2LAotKyAgICAweGVkLCAweDNlLCAweDY1LCAweGMyCi0rfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEy OF9ub19kZl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHgyNiwgMHhjMCwgMHg3Miwg MHgxNiwgMHgzYSwgMHg0YiwgMHhiNywgMHg5OSwgMHhkNCwgMHgwNywgMHhhZiwgMHg2NiwKLSsg ICAgMHg2MiwgMHgzNiwgMHg5NiwgMHhhNCwgMHg1MSwgMHgxNywgMHhmYSwgMHgwNywgMHg4Yiwg MHgxNywgMHg1ZSwgMHhhMSwKLSsgICAgMHgyZiwgMHgzYywgMHgxMCwgMHhlNywgMHg5MCwgMHhk MCwgMHg0NiwgMHgwMAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7 Ci0rICAgIDB4ODMsIDB4MzksIDB4MzcsIDB4N2IsIDB4MDIsIDB4MDYsIDB4ZDIsIDB4MTIsIDB4 MTMsIDB4OGQsIDB4OGIsIDB4ZjIsCi0rICAgIDB4ZjAsIDB4ZjYsIDB4MjYsIDB4ZWIsIDB4YTQs IDB4MjIsIDB4N2IsIDB4YzIsIDB4ZTcsIDB4YmEsIDB4NzksIDB4ZTQsCi0rICAgIDB4M2IsIDB4 NzcsIDB4NWQsIDB4NGQsIDB4NDcsIDB4YjIsIDB4MmQsIDB4YjQKLSt9OwotKwotK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX2FkZGl0aW9u YWxpbnB1dDJbXSA9IHsKLSsgICAgMHgwYiwgMHhiOSwgMHg2NywgMHgzNywgMHhkYiwgMHg4Mywg MHhkZiwgMHhjYSwgMHg4MSwgMHg4YiwgMHhmOSwgMHgzZiwKLSsgICAgMHhmMSwgMHgxMSwgMHgx YiwgMHgyZiwgMHhmMCwgMHg2MSwgMHhhNiwgMHhkZiwgMHhiYSwgMHhhMywgMHhiMSwgMHhhYywK LSsgICAgMHhkMywgMHhlNiwgMHgwOSwgMHhiOCwgMHgyYywgMHg2YSwgMHg2NywgMHhkNgotK307 Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhf bm9fZGZfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4MWUsIDB4YTcsIDB4YTQsIDB4ZTQsIDB4 ZTEsIDB4YTYsIDB4N2MsIDB4NjksIDB4OWEsIDB4NDQsIDB4NmMsIDB4MzYsCi0rICAgIDB4ODEs IDB4MzcsIDB4MTksIDB4ZDQKLSt9OwotKwotKy8qIEFFUy0xOTIgbm8gZGYgUFIgICovCi0rX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJf ZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4OWQsIDB4MmMsIDB4ZDIsIDB4NTUsIDB4NjYsIDB4 ZWEsIDB4ZTAsIDB4YmUsIDB4MTgsIDB4YjcsIDB4NzYsIDB4ZTcsCi0rICAgIDB4NzMsIDB4MzUs IDB4ZDgsIDB4MWYsIDB4YWQsIDB4M2EsIDB4ZTMsIDB4ODEsIDB4MGUsIDB4OTIsIDB4ZDAsIDB4 NjEsCi0rICAgIDB4YzksIDB4MTIsIDB4MjYsIDB4ZjYsIDB4MWMsIDB4ZGYsIDB4ZmUsIDB4NDcs IDB4YWEsIDB4ZmUsIDB4N2QsIDB4NWEsCi0rICAgIDB4MTcsIDB4MWYsIDB4OGQsIDB4OWEKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTky X25vX2RmX3ByX25vbmNlW10gPSB7Ci0rICAgIDB4NDQsIDB4ODIsIDB4ZWQsIDB4ZTgsIDB4NGMs IDB4MjgsIDB4NWEsIDB4MTQsIDB4ZmYsIDB4ODgsIDB4OGQsIDB4MTksCi0rICAgIDB4NjEsIDB4 NWMsIDB4ZWUsIDB4MGYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1td ID0gewotKyAgICAweDQ3LCAweGQ3LCAweDliLCAweDk5LCAweGFhLCAweGNiLCAweGU3LCAweGQy LCAweDU3LCAweDY2LCAweDJjLCAweGUxLAotKyAgICAweDc4LCAweGQ2LCAweDJjLCAweGVhLCAw eGEzLCAweDIzLCAweDVmLCAweDJhLCAweGMxLCAweDNhLCAweGYwLCAweGE0LAotKyAgICAweDIw LCAweDNiLCAweGZhLCAweDA3LCAweGQ1LCAweDA1LCAweDAyLCAweGU0LCAweDU3LCAweDAxLCAw eGI2LCAweDEwLAotKyAgICAweDU3LCAweDJlLCAweGU3LCAweDU1Ci0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9w cl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHg0YiwgMHg3NCwgMHgwYiwgMHg0MCwgMHhj ZSwgMHg2YiwgMHhjMiwgMHg2YSwgMHgyNCwgMHhiNCwgMHhmMywgMHhhZCwKLSsgICAgMHg3YSwg MHhhNSwgMHg3YSwgMHhhMiwgMHgxNSwgMHhlMiwgMHhjOCwgMHg2MSwgMHgxNSwgMHhjNiwgMHhi NywgMHg4NSwKLSsgICAgMHg2OSwgMHgxMSwgMHhhZCwgMHg3YiwgMHgxNCwgMHhkMiwgMHhmNiwg MHgxMiwgMHhhMSwgMHg5NSwgMHg1ZCwgMHgzZiwKLSsgICAgMHhlMiwgMHhkMCwgMHgwYywgMHgy ZgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFl c18xOTJfbm9fZGZfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKLSsgICAgMHgwYywgMHg5YywgMHhh ZCwgMHgwNSwgMHhlZSwgMHhhZSwgMHg0OCwgMHgyMywgMHg4OSwgMHg1OSwgMHhhMSwgMHg5NCwK LSsgICAgMHhkNywgMHhkOCwgMHg3NSwgMHhkNSwgMHg1NCwgMHg5MywgMHhjNywgMHg0YSwgMHhk OSwgMHgyNiwgMHhkZSwgMHhlYiwKLSsgICAgMHhiYSwgMHhiMCwgMHg3ZSwgMHgzMCwgMHgxZCwg MHg1ZiwgMHg2OSwgMHg0MCwgMHg5YywgMHgzYiwgMHgxNywgMHg1OCwKLSsgICAgMHgxZCwgMHgz MCwgMHhiMywgMHg3OAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfaW50X3JldHVybmVkYml0c1tdID0gewot KyAgICAweGY3LCAweDkzLCAweGIwLCAweDZkLCAweDc3LCAweDgzLCAweGQ1LCAweDM4LCAweDAx LCAweGUxLCAweDUyLCAweDQwLAotKyAgICAweDdlLCAweDNlLCAweDBjLCAweDI2Ci0rfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5 Ml9ub19kZl9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7Ci0rICAgIDB4YmMsIDB4NGIsIDB4Mzcs IDB4NDQsIDB4MWMsIDB4YzUsIDB4NDUsIDB4NWYsIDB4OGYsIDB4NTEsIDB4NjIsIDB4OGEsCi0r ICAgIDB4ODUsIDB4MzAsIDB4MWQsIDB4N2MsIDB4ZTQsIDB4Y2YsIDB4ZjcsIDB4NDQsIDB4Y2Us IDB4MzIsIDB4M2UsIDB4NTcsCi0rICAgIDB4OTUsIDB4YTQsIDB4MmEsIDB4ZGYsIDB4ZmQsIDB4 OWUsIDB4MzgsIDB4NDEsIDB4YjMsIDB4ZjYsIDB4YzUsIDB4ZWUsCi0rICAgIDB4MGMsIDB4NGIs IDB4ZWUsIDB4NmUKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3ByX2VudHJvcHlpbnB1dHByMltdID0gewotKyAg ICAweGVjLCAweGFmLCAweGY2LCAweDRmLCAweGIxLCAweGEwLCAweDU0LCAweGI1LCAweDViLCAw eGUzLCAweDQ2LCAweGIwLAotKyAgICAweDc2LCAweDVhLCAweDdjLCAweDNmLCAweDdiLCAweDk0 LCAweDY5LCAweDIxLCAweDUxLCAweDAyLCAweGU1LCAweDlmLAotKyAgICAweDA0LCAweDU5LCAw eDAyLCAweDk4LCAweGM2LCAweDQzLCAweDJjLCAweGNjLCAweDI2LCAweDRjLCAweDg3LCAweDZi LAotKyAgICAweDhlLCAweDBhLCAweDgzLCAweGRmCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9wcl9yZXR1cm5lZGJpdHNb XSA9IHsKLSsgICAgMHg3NCwgMHg0NSwgMHhmYiwgMHg1MywgMHg4NCwgMHg5NiwgMHhiZSwgMHhm ZiwgMHgxNSwgMHhjYywgMHg0MSwgMHg5MSwKLSsgICAgMHhiOSwgMHhhMSwgMHgyMSwgMHg2OAot K307Ci0rCi0rLyogQUVTLTE5MiBubyBkZiBObyBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9lbnRyb3B5aW5wdXRbXSA9IHsK LSsgICAgMHgzYywgMHg3ZCwgMHhiNSwgMHhlMCwgMHg1NCwgMHhkOSwgMHg2ZSwgMHg4YywgMHhh OSwgMHg4NiwgMHhjZSwgMHg0ZSwKLSsgICAgMHg2YiwgMHhhZiwgMHhlYiwgMHgyZiwgMHhlNywg MHg3NSwgMHhlMCwgMHg4YiwgMHhhNCwgMHgzYiwgMHgwNywgMHhmZSwKLSsgICAgMHhiZSwgMHgz MywgMHg3NSwgMHg5MywgMHg4MCwgMHgyNywgMHhiNSwgMHgyOSwgMHg0NywgMHg4YiwgMHhjNywg MHgyOCwKLSsgICAgMHg5NCwgMHhjMywgMHg1OSwgMHg2MwotK307Ci0rCi0rX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfbm9uY2VbXSA9IHsK LSsgICAgMHg0MywgMHhmMSwgMHg3ZCwgMHhiOCwgMHhjMywgMHhmZSwgMHhkMCwgMHgyMywgMHg2 YiwgMHhiNCwgMHg5MiwgMHhkYiwKLSsgICAgMHgyOSwgMHhmZCwgMHg0NSwgMHg3MQotK307Ci0r Ci0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18x OTJfbm9fZGZfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4OWYsIDB4MjQsIDB4 MjksIDB4OTksIDB4OWUsIDB4MDEsIDB4YWIsIDB4ZTksIDB4MTksIDB4ZDgsIDB4MjMsIDB4MDgs Ci0rICAgIDB4YjcsIDB4ZDYsIDB4N2UsIDB4OGMsIDB4YzAsIDB4OWUsIDB4N2YsIDB4NmUsIDB4 NWIsIDB4MzMsIDB4MjAsIDB4OTYsCi0rICAgIDB4MGIsIDB4MjMsIDB4MmMsIDB4YTUsIDB4NmEs IDB4ZjgsIDB4MWIsIDB4MDQsIDB4MjYsIDB4ZGIsIDB4MmUsIDB4MmIsCi0rICAgIDB4M2IsIDB4 ODgsIDB4Y2UsIDB4MzUKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMTkyX25vX2RmX2FkZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAweDk0 LCAweGU5LCAweDdjLCAweDNkLCAweGE3LCAweGRiLCAweDYwLCAweDgzLCAweDFmLCAweDk4LCAw eDNmLCAweDBiLAotKyAgICAweDg4LCAweDU5LCAweDU3LCAweDUxLCAweDg4LCAweDlmLCAweDc2 LCAweDQ5LCAweDlmLCAweGE2LCAweGRhLCAweDcxLAotKyAgICAweDFkLCAweDBkLCAweDQ3LCAw eDE2LCAweDYzLCAweGM1LCAweDY4LCAweGU0LCAweDVkLCAweDM5LCAweDY5LCAweGIzLAotKyAg ICAweDNlLCAweGJlLCAweGQ0LCAweDhlCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7 Ci0rICAgIDB4ZjksIDB4ZDcsIDB4YWQsIDB4NjksIDB4YWIsIDB4OGYsIDB4MjMsIDB4NTYsIDB4 NzAsIDB4MTcsIDB4NGYsIDB4MmEsCi0rICAgIDB4NDUsIDB4ZTcsIDB4NGEsIDB4YzUKLSt9Owot KwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MTkyX25vX2RmX2VudHJvcHlpbnB1dHJlc2VlZFtdID0gewotKyAgICAweGE2LCAweDcxLCAweDZh LCAweDNkLCAweGJhLCAweGQxLCAweGU4LCAweDY2LCAweGE2LCAweGVmLCAweGIyLCAweDBlLAot KyAgICAweGE4LCAweDljLCAweGFhLCAweDRlLCAweGFmLCAweDE3LCAweDg5LCAweDUwLCAweDAw LCAweGRhLCAweGExLCAweGIxLAotKyAgICAweDBiLCAweGE0LCAweGQ5LCAweDM1LCAweDg5LCAw eGM4LCAweGU1LCAweGIwLCAweGQ5LCAweGI3LCAweGM0LCAweDMzLAotKyAgICAweDliLCAweGNi LCAweDdlLCAweDc1Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsK LSsgICAgMHgyNywgMHgyMSwgMHhmYywgMHhjMiwgMHhiZCwgMHhmMywgMHgzYywgMHhjZSwgMHhj MywgMHhjYSwgMHhjMSwgMHgwMSwKLSsgICAgMHhlMCwgMHhmZiwgMHg5MywgMHgxMiwgMHg3ZCwg MHg1NCwgMHg0MiwgMHhlMywgMHg5ZiwgMHgwMywgMHhkZiwgMHgyNywKLSsgICAgMHgwNCwgMHgw NywgMHgzYywgMHg1MywgMHg3ZiwgMHhhOCwgMHg2NiwgMHhjOCwgMHg5NywgMHg0YiwgMHg2MSwg MHg0MCwKLSsgICAgMHg1ZCwgMHg3YSwgMHgyNSwgMHg3OQotK307Ci0rCi0rX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfYWRkaXRpb25hbGlu cHV0MltdID0gewotKyAgICAweDJkLCAweDhlLCAweDE2LCAweDVkLCAweDBiLCAweDlmLCAweGVi LCAweGFhLCAweGQ2LCAweGVjLCAweDI4LCAweDcxLAotKyAgICAweDdjLCAweDBiLCAweGMxLCAw eDFkLCAweGQ0LCAweDQ0LCAweDE5LCAweDQ3LCAweGZkLCAweDFkLCAweDdjLCAweGU1LAotKyAg ICAweGYzLCAweDI3LCAweGUxLCAweGI2LCAweDcyLCAweDBhLCAweGUwLCAweGVjLCAweDBlLCAw eGNkLCAweGVmLCAweDFhLAotKyAgICAweDkxLCAweDZhLCAweGUzLCAweDVmCi0rfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9y ZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhlNSwgMHhkYSwgMHhiOCwgMHhlMCwgMHg2MywgMHg1 OSwgMHg1YSwgMHhjYywgMHgzZCwgMHhkYywgMHg5ZiwgMHhlOCwKLSsgICAgMHg2NiwgMHg2Nywg MHgyYywgMHg5MgotK307Ci0rCi0rLyogQUVTLTI1NiBubyBkZiBQUiAgKi8KLStfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9lbnRyb3B5 aW5wdXRbXSA9IHsKLSsgICAgMHgxNSwgMHhjNywgMHg1ZCwgMHhjYiwgMHg0MSwgMHg0YiwgMHgx NiwgMHgwMSwgMHgzYSwgMHhkMSwgMHg0NCwgMHhlOCwKLSsgICAgMHgyMiwgMHgzMiwgMHhjNiwg MHg5YywgMHgzZiwgMHhlNywgMHg0MywgMHhmNSwgMHg5YSwgMHhkMywgMHhlYSwgMHhmMiwKLSsg ICAgMHhkNywgMHg0ZSwgMHg2ZSwgMHg2YSwgMHg1NSwgMHg3MywgMHg0MCwgMHhlZiwgMHg4OSwg MHhhZCwgMHgwZCwgMHgwMywKLSsgICAgMHg5NiwgMHg3ZSwgMHg3OCwgMHg4MSwgMHgyZiwgMHg5 MSwgMHgxYiwgMHg0NCwgMHhiMCwgMHgwMiwgMHhiYSwgMHgxYwotK307Ci0rCi0rX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcHJfbm9uY2Vb XSA9IHsKLSsgICAgMHhkYywgMHhlNCwgMHhkNCwgMHgyNywgMHg3YSwgMHg5MCwgMHhkNywgMHg5 OSwgMHg0MywgMHhhMSwgMHgzYywgMHgzMCwKLSsgICAgMHhjYywgMHg0YiwgMHhlZSwgMHgyZQot K307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18yNTZfbm9fZGZfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4ZTMs IDB4ZTYsIDB4YjksIDB4MTEsIDB4ZTQsIDB4N2EsIDB4YTQsIDB4NDAsIDB4NmIsIDB4ZjgsIDB4 NzMsIDB4ZjcsCi0rICAgIDB4N2UsIDB4ZWMsIDB4YzcsIDB4YjksIDB4OTcsIDB4YmYsIDB4Zjgs IDB4MjUsIDB4N2IsIDB4YmUsIDB4MTEsIDB4OWIsCi0rICAgIDB4NWIsIDB4NmEsIDB4MGMsIDB4 MmUsIDB4MmIsIDB4MDEsIDB4NTEsIDB4Y2QsIDB4NDEsIDB4NGIsIDB4NmIsIDB4YWMsCi0rICAg IDB4MzEsIDB4YTgsIDB4MGIsIDB4ZjcsIDB4ZTYsIDB4NTksIDB4NDIsIDB4YjgsIDB4MDMsIDB4 MGMsIDB4ZjgsIDB4MDYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0gewot KyAgICAweDZhLCAweDlmLCAweDAwLCAweDkxLCAweGFlLCAweGZlLCAweGNmLCAweDg0LCAweDk5 LCAweGNlLCAweGIxLCAweDQwLAotKyAgICAweDZkLCAweDVkLCAweDMzLCAweDI4LCAweDg0LCAw eGY0LCAweDhjLCAweDYzLCAweDRjLCAweDdlLCAweGJkLCAweDJjLAotKyAgICAweDgwLCAweDc2 LCAweGVlLCAweDVhLCAweGFhLCAweDE1LCAweDA3LCAweDMxLCAweGQ4LCAweGJiLCAweDhjLCAw eDY5LAotKyAgICAweDlkLCAweDlkLCAweGJjLCAweDdlLCAweDQ5LCAweGFlLCAweGVjLCAweDM5 LCAweDZiLCAweGQxLCAweDFmLCAweDdlCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9lbnRyb3B5aW5wdXRwcltdID0g ewotKyAgICAweGYzLCAweGI5LCAweDc1LCAweDljLCAweGJkLCAweDg4LCAweGVhLCAweGEyLCAw eDUwLCAweGFkLCAweGQ2LCAweDE2LAotKyAgICAweDFhLCAweDEyLCAweDNjLCAweDg2LCAweDY4 LCAweGFmLCAweDZmLCAweGJlLCAweDE5LCAweGYyLCAweGVlLCAweGNjLAotKyAgICAweGE1LCAw eDcwLCAweDg0LCAweDUzLCAweDUwLCAweGNiLCAweDlmLCAweDE0LCAweGE5LCAweGU1LCAweGVl LCAweGI5LAotKyAgICAweDQ4LCAweDQ1LCAweDQwLCAweGUyLCAweGM3LCAweGM5LCAweDlhLCAw eDc0LCAweGZmLCAweDhjLCAweDk5LCAweDFmCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9pbnRfcmV0dXJu ZWRiaXRzW10gPSB7Ci0rICAgIDB4MmUsIDB4ZjIsIDB4NDUsIDB4NGMsIDB4NjIsIDB4MmUsIDB4 MGEsIDB4YjksIDB4NmIsIDB4YTIsIDB4ZmQsIDB4NTYsCi0rICAgIDB4NzksIDB4NjAsIDB4OTMs IDB4Y2YKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwotKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMjU2X25vX2RmX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHhh ZiwgMHg2OSwgMHgyMCwgMHhlOSwgMHgzYiwgMHgzNywgMHg5ZCwgMHgzZiwgMHhiNCwgMHg4MCwg MHgwMiwgMHg3YSwKLSsgICAgMHgyNSwgMHg3ZCwgMHhiOCwgMHhkZSwgMHg3MSwgMHhjNSwgMHgw NiwgMHgwYywgMHhiNCwgMHhlMiwgMHg4ZiwgMHgzNSwKLSsgICAgMHhkOCwgMHgxNCwgMHgwZCwg MHg3ZiwgMHg3NiwgMHg2MywgMHg0ZSwgMHhiNSwgMHhlZSwgMHhlOSwgMHg2ZiwgMHgzNCwKLSsg ICAgMHhjNywgMHg1ZiwgMHg1NiwgMHgxNCwgMHg0YSwgMHhlOCwgMHg3MywgMHg5NSwgMHg1Yiwg MHgxYywgMHhiOSwgMHhjYgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfcHJfZW50cm9weWlucHV0cHIyW10gPSB7 Ci0rICAgIDB4ZTUsIDB4YjAsIDB4MmUsIDB4N2UsIDB4NTIsIDB4MzAsIDB4ZTMsIDB4NjMsIDB4 ODIsIDB4YjYsIDB4NDQsIDB4ZDMsCi0rICAgIDB4MjUsIDB4MTksIDB4MDUsIDB4MjQsIDB4OWEs IDB4OWYsIDB4NWYsIDB4MjcsIDB4NmEsIDB4MjksIDB4YWIsIDB4ZmEsCi0rICAgIDB4MDcsIDB4 YTIsIDB4NDIsIDB4MGYsIDB4YzUsIDB4YTgsIDB4OTQsIDB4N2MsIDB4MTcsIDB4N2IsIDB4ODUs IDB4ODMsCi0rICAgIDB4MGMsIDB4MjUsIDB4MGUsIDB4NjMsIDB4MGIsIDB4ZTksIDB4MTIsIDB4 NjAsIDB4Y2QsIDB4ZWYsIDB4ODAsIDB4MGYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX3ByX3JldHVybmVkYml0c1tdID0g ewotKyAgICAweDVlLCAweGYyLCAweDI2LCAweGVmLCAweDlmLCAweDU4LCAweDVkLCAweGQ1LCAw eDRhLCAweDEwLCAweGZlLCAweGE3LAotKyAgICAweDJkLCAweDVmLCAweDRhLCAweDQ2Ci0rfTsK LSsKLSsvKiBBRVMtMjU2IG5vIGRmIE5vIFBSICAqLwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX2VudHJvcHlpbnB1dFtdID0gewotKyAg ICAweGZiLCAweGNmLCAweDFiLCAweDYxLCAweDE2LCAweDg5LCAweDc4LCAweDIzLCAweGY1LCAw eGQ4LCAweDk2LCAweGUzLAotKyAgICAweDRlLCAweDY0LCAweDBiLCAweDI5LCAweDlhLCAweDNm LCAweGY4LCAweGE1LCAweGVkLCAweGYyLCAweGZlLCAweGRiLAotKyAgICAweDE2LCAweGNhLCAw eDdmLCAweDEwLCAweGZhLCAweDVlLCAweDE4LCAweDc2LCAweDJjLCAweDYzLCAweDVlLCAweDk2 LAotKyAgICAweGNmLCAweGIzLCAweGQ2LCAweGZjLCAweGFmLCAweDk5LCAweDM5LCAweDI4LCAw eDljLCAweDYxLCAweGU4LCAweGIzCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9ub25jZVtdID0gewotKyAgICAweDEyLCAw eDk2LCAweGYwLCAweDUyLCAweGYzLCAweDhkLCAweDgxLCAweGNmLCAweGRlLCAweDg2LCAweGYy LCAweDk5LAotKyAgICAweDQzLCAweDk2LCAweGI5LCAweGYwCi0rfTsKLSsKLStfX2ZpcHNfY29u c3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wZXJz b25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHg2MywgMHgwZCwgMHg3OCwgMHhmNSwgMHg5 MCwgMHg4ZSwgMHgzMiwgMHg0NywgMHhiMCwgMHg0ZCwgMHgzNywgMHg2MCwKLSsgICAgMHgwOSwg MHg5NiwgMHhiYywgMHhiZiwgMHg5NywgMHg3YSwgMHg2MiwgMHgxNCwgMHg0NSwgMHhiZCwgMHg4 ZCwgMHhjYywKLSsgICAgMHg2OSwgMHhmYiwgMHgwMywgMHhlMSwgMHg4MCwgMHgxYywgMHhjNywg MHhlMiwgMHgyYSwgMHhmOSwgMHgzNywgMHgzZiwKLSsgICAgMHg2NiwgMHg0ZCwgMHg2MiwgMHhk OSwgMHgxMCwgMHhlMCwgMHhhZCwgMHhjOCwgMHg5YSwgMHhmMCwgMHhhOCwgMHg2ZAotK307Ci0r Ci0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9f ZGZfYWRkaXRpb25hbGlucHV0W10gPSB7Ci0rICAgIDB4MzYsIDB4YzYsIDB4MTMsIDB4NjAsIDB4 YmIsIDB4MTQsIDB4YWQsIDB4MjIsIDB4YjAsIDB4MzgsIDB4YWMsIDB4YTYsCi0rICAgIDB4MTgs IDB4MTYsIDB4OTMsIDB4MjUsIDB4ODYsIDB4YjcsIDB4ZGMsIDB4ZGMsIDB4MzYsIDB4OTgsIDB4 MmIsIDB4ZjksCi0rICAgIDB4NjgsIDB4MzMsIDB4ZDMsIDB4YzYsIDB4ZmYsIDB4Y2UsIDB4OGQs IDB4MTUsIDB4NTksIDB4ODIsIDB4NzYsIDB4ZWQsCi0rICAgIDB4NmYsIDB4OGQsIDB4NDksIDB4 NzQsIDB4MmYsIDB4ZGEsIDB4ZGMsIDB4MWYsIDB4MTcsIDB4ZDAsIDB4ZGUsIDB4MTcKLSt9Owot KwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25v X2RmX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHgxNiwgMHgyZiwgMHg4ZSwgMHgzZiwg MHgyMSwgMHg3YSwgMHgxYywgMHgyMCwgMHg1NiwgMHhkMSwgMHg5MiwgMHhmNiwKLSsgICAgMHhk MiwgMHgyNSwgMHg3NSwgMHgwZQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfZW50cm9weWlucHV0cmVzZWVkW10g PSB7Ci0rICAgIDB4OTEsIDB4NzksIDB4NzYsIDB4ZWUsIDB4ZTAsIDB4Y2YsIDB4OWUsIDB4YzIs IDB4ZDUsIDB4ZDQsIDB4MjMsIDB4OWIsCi0rICAgIDB4MTIsIDB4OGMsIDB4N2UsIDB4MGEsIDB4 YjcsIDB4ZDIsIDB4OGIsIDB4ZDYsIDB4N2MsIDB4YTMsIDB4YzYsIDB4ZTUsCi0rICAgIDB4MGUs IDB4YWEsIDB4YzcsIDB4NmIsIDB4YWUsIDB4MGQsIDB4ZmEsIDB4NTMsIDB4MDYsIDB4NzksIDB4 YTEsIDB4ZWQsCi0rICAgIDB4NGQsIDB4NmEsIDB4MGUsIDB4ZDgsIDB4OWQsIDB4YmUsIDB4MWIs IDB4MzEsIDB4OTMsIDB4N2IsIDB4ZWMsIDB4ZmIKLSt9OwotKwotK19fZmlwc19jb25zdHNlZwot KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX2FkZGl0aW9uYWxp bnB1dHJlc2VlZFtdID0gewotKyAgICAweGQyLCAweDQ2LCAweDUwLCAweDIyLCAweDEwLCAweDE0 LCAweDYzLCAweGY3LCAweGVhLCAweDBmLCAweGI5LCAweDdlLAotKyAgICAweDBkLCAweGUxLCAw eDk0LCAweDA3LCAweGFmLCAweDA5LCAweDQ0LCAweDMxLCAweGVhLCAweDY0LCAweGE0LCAweDE4 LAotKyAgICAweDViLCAweGY5LCAweGQ4LCAweGMyLCAweGZhLCAweDAzLCAweDQ3LCAweGM1LCAw eDM5LCAweDQzLCAweGQ1LCAweDNiLAotKyAgICAweDYyLCAweDg2LCAweDY0LCAweGVhLCAweDJj LCAweDczLCAweDhjLCAweGFlLCAweDlkLCAweDk4LCAweDk4LCAweDI5Ci0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9hZGRp dGlvbmFsaW5wdXQyW10gPSB7Ci0rICAgIDB4OGMsIDB4YWIsIDB4MTgsIDB4ZjgsIDB4YzMsIDB4 ZWMsIDB4MTgsIDB4NWMsIDB4YjMsIDB4MWUsIDB4OWQsIDB4YmUsCi0rICAgIDB4M2YsIDB4MDMs IDB4YjQsIDB4MDAsIDB4OTgsIDB4OWQsIDB4YWUsIDB4ZWIsIDB4ZjQsIDB4OTQsIDB4ZjgsIDB4 NDIsCi0rICAgIDB4OGYsIDB4ZTMsIDB4MzksIDB4MDcsIDB4ZTEsIDB4YzksIDB4YWQsIDB4MGIs IDB4MWYsIDB4ZWQsIDB4YzAsIDB4YmEsCi0rICAgIDB4ZjYsIDB4ZDEsIDB4ZWMsIDB4MjcsIDB4 ODYsIDB4N2IsIDB4ZDYsIDB4NTUsIDB4OWIsIDB4NjAsIDB4YTUsIDB4YzYKLSt9OwotKwotK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX3Jl dHVybmVkYml0c1tdID0gewotKyAgICAweGVmLCAweGQyLCAweGQ4LCAweDVjLCAweGRjLCAweDYy LCAweDI1LCAweDlmLCAweGFhLCAweDFlLCAweDJjLCAweDY3LAotKyAgICAweGY2LCAweDAyLCAw eDMyLCAweGUyCi0rfTsKLSsKLSsvKiBTSEEtMSBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKLSsgICAg MHhkMiwgMHgzNiwgMHhhNSwgMHgyNywgMHgzMSwgMHg3MywgMHhkZCwgMHgxMSwgMHg0ZiwgMHg5 MywgMHhiZCwgMHhlMiwKLSsgICAgMHgzMSwgMHhhNSwgMHg5MSwgMHgxMwotK307Ci0rCi0rX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJfbm9uY2VbXSA9 IHsKLSsgICAgMHhiNSwgMHhiMywgMHg2MCwgMHhlZiwgMHhmNywgMHg2MywgMHgzMSwgMHhmMwot K307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFf cHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4ZDQsIDB4YmIsIDB4MDIsIDB4 MTAsIDB4YjIsIDB4NzEsIDB4ZGIsIDB4ODEsIDB4ZDYsIDB4ZjAsIDB4NDIsIDB4NjAsCi0rICAg IDB4ZGEsIDB4ZWEsIDB4NzcsIDB4NTIKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBzaGExX3ByX2FkZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAw eDRkLCAweGQyLCAweDZjLCAweDg3LCAweGZiLCAweDJjLCAweDRmLCAweGE2LCAweDhkLCAweDE2 LCAweDYzLCAweDIyLAotKyAgICAweDZhLCAweDUxLCAweGUzLCAweGY4Ci0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9wcl9lbnRyb3B5aW5w dXRwcltdID0gewotKyAgICAweGM5LCAweDgzLCAweDllLCAweDE2LCAweGY2LCAweDFjLCAweDBm LCAweGIyLCAweGVjLCAweDYwLCAweDMxLCAweGE5LAotKyAgICAweGNiLCAweGE5LCAweDM2LCAw eDdhCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMV9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4YTgsIDB4MTMsIDB4NGYsIDB4 ZjQsIDB4MzEsIDB4MDIsIDB4NDQsIDB4ZTMsIDB4ZDMsIDB4M2QsIDB4NjEsIDB4OWUsCi0rICAg IDB4ZTUsIDB4YzYsIDB4M2UsIDB4ODksIDB4YjUsIDB4OWIsIDB4MGYsIDB4MzUKLSt9OwotKwot K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX3ByX2FkZGl0 aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHhmOSwgMHhlOCwgMHhkMiwgMHg3MiwgMHgxMywgMHgz NCwgMHg5NSwgMHg2ZiwgMHgxNSwgMHg0OSwgMHg0NywgMHg5OSwKLSsgICAgMHgxNiwgMHgwMywg MHgxOSwgMHg0NwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTFfcHJfZW50cm9weWlucHV0cHIyW10gPSB7Ci0rICAgIDB4NGUsIDB4OGMsIDB4 NDksIDB4OWIsIDB4NGEsIDB4NWMsIDB4OWIsIDB4OWMsIDB4M2EsIDB4ZWUsIDB4ZmIsIDB4ZDIs Ci0rICAgIDB4YWUsIDB4Y2QsIDB4OGMsIDB4YzQKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX3ByX3JldHVybmVkYml0c1tdID0gewotKyAg ICAweDUwLCAweGI0LCAweGI0LCAweGNkLCAweDY4LCAweDU3LCAweGZjLCAweDJlLCAweGMxLCAw eDUyLCAweGNjLCAweGY2LAotKyAgICAweDY4LCAweGE0LCAweDgxLCAweGVkLCAweDdlLCAweGU0 LCAweDFkLCAweDg3Ci0rfTsKLSsKLSsvKiBTSEEtMSBObyBQUiAgKi8KLStfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9lbnRyb3B5aW5wdXRbXSA9IHsKLSsg ICAgMHhhOSwgMHg0NywgMHgxYiwgMHgyOSwgMHgyZCwgMHgxYywgMHgwNSwgMHhkZiwgMHg3Niwg MHhkMCwgMHg2MiwgMHhmOSwKLSsgICAgMHhlMiwgMHg3ZiwgMHg0YywgMHg3YgotK307Ci0rCi0r X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfbm9uY2VbXSA9 IHsKLSsgICAgMHg1MywgMHgyMywgMHgyNCwgMHhlMywgMHhlYywgMHgwYywgMHg1NCwgMHgxNAot K307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFf cGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4N2EsIDB4ODcsIDB4YTEsIDB4YWMs IDB4MWMsIDB4ZmQsIDB4YWIsIDB4YWUsIDB4ZjcsIDB4ZDYsIDB4ZmIsIDB4NzYsCi0rICAgIDB4 MjgsIDB4ZWMsIDB4NmQsIDB4Y2EKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGExX2FkZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAweGZjLCAw eDkyLCAweDM1LCAweGQ2LCAweDdlLCAweGI3LCAweDI0LCAweDY1LCAweGZkLCAweDEyLCAweDI3 LCAweDM1LAotKyAgICAweGMwLCAweDcyLCAweGNhLCAweDI4Ci0rfTsKLSsKLStfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9pbnRfcmV0dXJuZWRiaXRzW10g PSB7Ci0rICAgIDB4NTcsIDB4ODgsIDB4ODIsIDB4ZTUsIDB4MjUsIDB4YTUsIDB4MmMsIDB4NGEs IDB4MDYsIDB4MjAsIDB4NmMsIDB4NzIsCi0rICAgIDB4NTUsIDB4NjEsIDB4ZGQsIDB4OTAsIDB4 NzEsIDB4OWYsIDB4OTUsIDB4ZWEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGExX2VudHJvcHlpbnB1dHJlc2VlZFtdID0gewotKyAgICAweDY5 LCAweGE1LCAweDQwLCAweDYyLCAweDk4LCAweDQ3LCAweDU2LCAweDczLCAweDRhLCAweDhmLCAw eDYwLCAweDk2LAotKyAgICAweGQ2LCAweDk5LCAweDI3LCAweGVkCi0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9hZGRpdGlvbmFsaW5wdXRy ZXNlZWRbXSA9IHsKLSsgICAgMHhlNSwgMHg0MCwgMHg0ZSwgMHhiZCwgMHg1MCwgMHgwMCwgMHhm NSwgMHgxNSwgMHhhNiwgMHhlZSwgMHg0NSwgMHhkYSwKLSsgICAgMHg4NCwgMHgzZCwgMHhkNCwg MHhjMAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTFfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAweDExLCAweDUxLCAweDE0LCAweGYw LCAweDA5LCAweDFiLCAweDRlLCAweDU2LCAweDBkLCAweGU5LCAweGY2LCAweDFlLAotKyAgICAw eDUyLCAweDY1LCAweGNkLCAweDk2Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhhMSwgMHg5 YywgMHg5NCwgMHg2ZSwgMHgyOSwgMHhlMSwgMHgzMywgMHgwZCwgMHgzMiwgMHhkNiwgMHhhYSwg MHhjZSwKLSsgICAgMHg3MSwgMHgzZiwgMHg1MiwgMHg3MiwgMHg4YiwgMHg0MiwgMHhhOCwgMHhk NwotK307Ci0rCi0rLyogU0hBLTIyNCBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3ByX2VudHJvcHlpbnB1dFtdID0gewotKyAgICAweDEy LCAweDY5LCAweDMyLCAweDRmLCAweDgzLCAweGE2LCAweGY1LCAweDE0LCAweGUzLCAweDQ5LCAw eDNlLCAweDc1LAotKyAgICAweDNlLCAweGRlLCAweGFkLCAweGExLCAweDI5LCAweGMzLCAweGYz LCAweDE5LCAweDIwLCAweGI1LCAweDRjLCAweGQ5Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3ByX25vbmNlW10gPSB7Ci0rICAgIDB4 NmEsIDB4NzgsIDB4ZDAsIDB4ZWIsIDB4YmIsIDB4NWEsIDB4ZjAsIDB4ZWUsIDB4ZTgsIDB4YzMs IDB4YmEsIDB4NzEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBzaGEyMjRfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4ZDUs IDB4YjgsIDB4YjYsIDB4YmMsIDB4YzEsIDB4NWIsIDB4NjAsIDB4MzEsIDB4M2MsIDB4ZjUsIDB4 ZTUsIDB4YzAsCi0rICAgIDB4OGUsIDB4NTIsIDB4N2EsIDB4YmQsIDB4ZWEsIDB4NDcsIDB4YTks IDB4NWYsIDB4OGYsIDB4ZjksIDB4OGIsIDB4YWUKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7 Ci0rICAgIDB4MWYsIDB4NTUsIDB4ZWMsIDB4YWUsIDB4MTYsIDB4MTIsIDB4ODQsIDB4YmEsIDB4 ODQsIDB4MTYsIDB4MTksIDB4ODgsCi0rICAgIDB4OGUsIDB4YjgsIDB4MzMsIDB4MjUsIDB4NTQs IDB4ZmYsIDB4Y2EsIDB4NzksIDB4YWYsIDB4MDcsIDB4MjUsIDB4NTAKLSt9OwotKwotK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfcHJfZW50cm9weWlu cHV0cHJbXSA9IHsKLSsgICAgMHg5MiwgMHhhMywgMHgzMiwgMHhhOCwgMHg5YSwgMHgwYSwgMHg1 OCwgMHg3YywgMHgxZCwgMHg1YSwgMHg3ZSwgMHhlMSwKLSsgICAgMHhiMiwgMHg3MywgMHhhYiwg MHgwZSwgMHgxNiwgMHg3OSwgMHgyMywgMHhkMywgMHgyOSwgMHg4OSwgMHg4MSwgMHhlMQotK307 Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9w cl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4ZjMsIDB4MzgsIDB4OTEsIDB4NDAsIDB4 MzcsIDB4N2EsIDB4NTEsIDB4NzIsIDB4NDIsIDB4NzQsIDB4NzgsIDB4MGEsCi0rICAgIDB4Njks IDB4ZmQsIDB4YTYsIDB4NDQsIDB4NDMsIDB4NDUsIDB4NmMsIDB4MGMsIDB4NWEsIDB4MTksIDB4 ZmYsIDB4ZjEsCi0rICAgIDB4NTQsIDB4NjAsIDB4ZWUsIDB4NmEKLSt9OwotKwotK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfcHJfYWRkaXRpb25hbGlu cHV0MltdID0gewotKyAgICAweDc1LCAweGYzLCAweDA0LCAweDI1LCAweGRkLCAweDM2LCAweGE4 LCAweDM3LCAweDQ2LCAweGFlLCAweDBjLCAweDUyLAotKyAgICAweDA1LCAweDc5LCAweDRjLCAw eDI2LCAweGRiLCAweGU5LCAweDcxLCAweDE2LCAweDRjLCAweDBhLCAweGYyLCAweDYwCi0rfTsK LSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3By X2VudHJvcHlpbnB1dHByMltdID0gewotKyAgICAweGVhLCAweGM1LCAweDAzLCAweDBhLCAweDRm LCAweGIwLCAweDM4LCAweDhkLCAweDIzLCAweGQ0LCAweGM4LCAweDc3LAotKyAgICAweGUyLCAw eDZkLCAweDljLCAweDBiLCAweDQ0LCAweGY3LCAweDJkLCAweDViLCAweGJmLCAweDVkLCAweDJh LCAweDExCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgc2hhMjI0X3ByX3JldHVybmVkYml0c1tdID0gewotKyAgICAweDYwLCAweDUwLCAweDJiLCAw eGU3LCAweDg2LCAweGQ4LCAweDI2LCAweDczLCAweGUzLCAweDFkLCAweDk1LCAweDIwLAotKyAg ICAweGIzLCAweDJjLCAweDMyLCAweDFjLCAweGY1LCAweGNlLCAweDU3LCAweGE2LCAweDY3LCAw eDJiLCAweGRjLCAweDRlLAotKyAgICAweGRkLCAweDExLCAweDRjLCAweGM0Ci0rfTsKLSsKLSsv KiBTSEEtMjI0IE5vIFBSICAqLwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBzaGEyMjRfZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4YjIsIDB4MWMsIDB4Nzcs IDB4NGQsIDB4ZjYsIDB4ZDMsIDB4YjYsIDB4NDAsIDB4YjcsIDB4MzAsIDB4M2UsIDB4MjksCi0r ICAgIDB4YjAsIDB4ODUsIDB4MWMsIDB4YmUsIDB4NGEsIDB4ZWEsIDB4NmIsIDB4NWEsIDB4YjUs IDB4OGEsIDB4OTcsIDB4ZWIKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzaGEyMjRfbm9uY2VbXSA9IHsKLSsgICAgMHg0MiwgMHgwMiwgMHgwYSwg MHgxYywgMHg5OCwgMHg5YSwgMHg3NywgMHg5ZSwgMHg5ZiwgMHg4MCwgMHhiYSwgMHhlMAotK307 Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9w ZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHg5OCwgMHhiOCwgMHgwNCwgMHg0MSwg MHhmYywgMHhjMSwgMHg1ZCwgMHhjNSwgMHhlOSwgMHhiOSwgMHgwOCwgMHhkYSwKLSsgICAgMHhm OSwgMHhmYSwgMHgwZCwgMHg5MCwgMHhjZSwgMHhkZiwgMHgxZCwgMHgxMCwgMHhhOSwgMHg4ZCwg MHg1MCwgMHgwYwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTIyNF9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHg5YSwgMHg4ZCwgMHgz OSwgMHg0OSwgMHg0MiwgMHhkNSwgMHgwYiwgMHhhZSwgMHhlMSwgMHhhZiwgMHhiNywgMHgwMCwK LSsgICAgMHgwMiwgMHhmYSwgMHg5NiwgMHhiMSwgMHhhNSwgMHgxZCwgMHgyZCwgMHgyNSwgMHg3 OCwgMHhlZSwgMHg4MywgMHgzZgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4ZTQs IDB4ZjUsIDB4NTMsIDB4NzksIDB4NWEsIDB4OTcsIDB4NTgsIDB4MDYsIDB4MDgsIDB4YmEsIDB4 N2IsIDB4ZmEsCi0rICAgIDB4ZjAsIDB4ODMsIDB4MDUsIDB4OGMsIDB4MjIsIDB4YzAsIDB4Yzks IDB4ZGIsIDB4MTUsIDB4ZTcsIDB4ZGUsIDB4MjAsCi0rICAgIDB4NTUsIDB4MjIsIDB4OWEsIDB4 YWQKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBz aGEyMjRfZW50cm9weWlucHV0cmVzZWVkW10gPSB7Ci0rICAgIDB4NjcsIDB4MDksIDB4NDgsIDB4 YWEsIDB4MDcsIDB4MTYsIDB4OTksIDB4ODksIDB4N2YsIDB4NmQsIDB4YTAsIDB4ZTUsCi0rICAg IDB4OGYsIDB4ZGYsIDB4YmMsIDB4ZGIsIDB4ZmUsIDB4ZTUsIDB4NmMsIDB4N2EsIDB4OTUsIDB4 NGEsIDB4NjYsIDB4MTcKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBzaGEyMjRfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7Ci0rICAgIDB4MGYs IDB4NGIsIDB4MWMsIDB4NmYsIDB4YjcsIDB4ZTMsIDB4NDcsIDB4ZTUsIDB4NWQsIDB4N2QsIDB4 MzgsIDB4ZDYsCi0rICAgIDB4MjgsIDB4OWIsIDB4ZWIsIDB4NTUsIDB4NjMsIDB4MDksIDB4M2Us IDB4N2MsIDB4NTYsIDB4ZWEsIDB4ZjgsIDB4MTkKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfYWRkaXRpb25hbGlucHV0MltdID0gewot KyAgICAweDJkLCAweDI2LCAweDdjLCAweDM3LCAweGU0LCAweDdhLCAweDI4LCAweDVlLCAweDVh LCAweDNjLCAweGFmLCAweDNkLAotKyAgICAweDVhLCAweDhlLCAweDU1LCAweGEyLCAweDFhLCAw eDZlLCAweGMwLCAweGU1LCAweGY2LCAweDIxLCAweGQzLCAweGY2Ci0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3JldHVybmVkYml0c1td ID0gewotKyAgICAweDRkLCAweDgzLCAweDM1LCAweGRmLCAweDY3LCAweGE5LCAweGZjLCAweDE3 LCAweGRhLCAweDcwLCAweGNjLCAweDhiLAotKyAgICAweDdmLCAweDc3LCAweGFlLCAweGEyLCAw eDVmLCAweGI5LCAweDdlLCAweDc0LCAweDRjLCAweDI2LCAweGMxLCAweDdhLAotKyAgICAweDNi LCAweGE3LCAweDVjLCAweDkzCi0rfTsKLSsKLSsvKiBTSEEtMjU2IFBSICAqLwotK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcHJfZW50cm9weWlucHV0 W10gPSB7Ci0rICAgIDB4Y2UsIDB4NDksIDB4MDAsIDB4N2EsIDB4NTYsIDB4ZTMsIDB4NjcsIDB4 OGYsIDB4ZTEsIDB4YjYsIDB4YTcsIDB4ZDQsCi0rICAgIDB4NGYsIDB4MDgsIDB4N2EsIDB4MWIs IDB4MDEsIDB4ZjQsIDB4ZmEsIDB4NmIsIDB4ZWYsIDB4YjcsIDB4ZTUsIDB4ZWIsCi0rICAgIDB4 MDcsIDB4M2QsIDB4MTEsIDB4MGQsIDB4YzgsIDB4ZWEsIDB4MmIsIDB4ZmUKLSt9OwotKwotK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcHJfbm9uY2Vb XSA9IHsKLSsgICAgMHg3MywgMHg0MSwgMHhjOCwgMHg5MiwgMHg5NCwgMHhlMiwgMHhjNSwgMHg1 ZiwgMHg5MywgMHhmZCwgMHgzOSwgMHg1ZCwKLSsgICAgMHgyYiwgMHg5MSwgMHg0ZCwgMHgzOAot K307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1 Nl9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHg1MCwgMHg2ZCwgMHgwMSwg MHgwMSwgMHgwNywgMHg1YSwgMHg4MCwgMHgzNSwgMHg3YSwgMHg1NiwgMHgxYSwgMHg1NiwKLSsg ICAgMHgyZiwgMHg5YSwgMHgwYiwgMHgzNSwgMHhiMiwgMHhiMSwgMHhjOSwgMHhlNSwgMHhjYSwg MHg2OSwgMHg2MSwgMHg0OCwKLSsgICAgMHhmZiwgMHhmYiwgMHgwZiwgMHhkOSwgMHg0YiwgMHg3 OSwgMHgxZCwgMHhiYQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIHNoYTI1Nl9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHgyMCwgMHhi OCwgMHhkZiwgMHg0NCwgMHg3NywgMHg1YSwgMHhiOCwgMHhkMywgMHhiZiwgMHhmNiwgMHhjZiwg MHhhYywKLSsgICAgMHg1ZSwgMHhhNiwgMHg5NiwgMHg2MiwgMHg3MywgMHg0NCwgMHg0MCwgMHg0 YSwgMHgzMCwgMHhmYiwgMHgzOCwgMHhhNSwKLSsgICAgMHg3YiwgMHgwZCwgMHhlNCwgMHgwZCwg MHhjNiwgMHhlNCwgMHg5YSwgMHgxZgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9wcl9lbnRyb3B5aW5wdXRwcltdID0gewotKyAgICAw eDA0LCAweGM0LCAweDY1LCAweGY0LCAweGQzLCAweGJmLCAweDgzLCAweDRiLCAweGFiLCAweGM4 LCAweDQxLCAweGE4LAotKyAgICAweGMyLCAweGUwLCAweDQ0LCAweDYzLCAweDc3LCAweDRjLCAw eDZmLCAweDZjLCAweDQ5LCAweDQ2LCAweGZmLCAweDk0LAotKyAgICAweDE3LCAweGVhLCAweGU2 LCAweDFhLCAweDlkLCAweDVlLCAweDY2LCAweDc4Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9 IHsKLSsgICAgMHgwNywgMHg0ZCwgMHhhYywgMHg5YiwgMHg4NiwgMHhjYSwgMHg0YSwgMHhhYSwg MHg2ZSwgMHg3YSwgMHgwMywgMHhhMiwKLSsgICAgMHg1ZCwgMHgxMCwgMHhlYSwgMHgwYiwgMHhm OSwgMHg4MywgMHhjYywgMHhkMSwgMHhmYywgMHhlMiwgMHgwNywgMHhjNywKLSsgICAgMHgwNiwg MHgzNCwgMHg2MCwgMHg2ZiwgMHg4MywgMHg5NCwgMHg5OSwgMHg3NgotK307Ci0rCi0rX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9wcl9hZGRpdGlvbmFs aW5wdXQyW10gPSB7Ci0rICAgIDB4ODksIDB4NGUsIDB4NDUsIDB4OGMsIDB4MTEsIDB4ZjksIDB4 YmMsIDB4NWIsIDB4YWMsIDB4NzQsIDB4OGIsIDB4NGIsCi0rICAgIDB4NWYsIDB4ZjcsIDB4MTks IDB4ZjMsIDB4ZjUsIDB4MjQsIDB4NTQsIDB4MTQsIDB4ZDEsIDB4MTUsIDB4YjEsIDB4NDMsCi0r ICAgIDB4MTIsIDB4YTQsIDB4NWYsIDB4ZDQsIDB4ZWMsIDB4ZmMsIDB4Y2QsIDB4MDkKLSt9Owot KwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcHJf ZW50cm9weWlucHV0cHIyW10gPSB7Ci0rICAgIDB4MGUsIDB4ZWIsIDB4MWYsIDB4ZDcsIDB4ZmMs IDB4ZDEsIDB4OWQsIDB4ZDQsIDB4MDUsIDB4MzYsIDB4OGIsIDB4YjIsCi0rICAgIDB4ZmIsIDB4 ZTQsIDB4ZjQsIDB4NTEsIDB4MGMsIDB4ODcsIDB4OWIsIDB4MDIsIDB4NDQsIDB4ZDUsIDB4OTIs IDB4NGQsCi0rICAgIDB4NDQsIDB4ZmUsIDB4MWEsIDB4MDMsIDB4NDMsIDB4NTYsIDB4YmQsIDB4 ODYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBz aGEyNTZfcHJfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4MDIsIDB4YWEsIDB4YjYsIDB4MWQs IDB4N2UsIDB4MmEsIDB4NDAsIDB4MDMsIDB4NjksIDB4MmQsIDB4NDksIDB4YTMsCi0rICAgIDB4 NDEsIDB4ZTcsIDB4NDQsIDB4MGIsIDB4YWYsIDB4N2IsIDB4ODUsIDB4ZTQsIDB4NWYsIDB4NTMs IDB4M2IsIDB4NjQsCi0rICAgIDB4YmMsIDB4ODksIDB4YzgsIDB4ODIsIDB4ZDQsIDB4NzgsIDB4 MzcsIDB4YTIKLSt9OwotKwotKy8qIFNIQS0yNTYgTm8gUFIgICovCi0rX19maXBzX2NvbnN0c2Vn IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9lbnRyb3B5aW5wdXRbXSA9IHsKLSsg ICAgMHg1YiwgMHgxYiwgMHhlYywgMHg0ZCwgMHhhOSwgMHgzOCwgMHg3NCwgMHg1YSwgMHgzNCwg MHgwYiwgMHg3YiwgMHhjNSwKLSsgICAgMHhlNSwgMHhkNywgMHg2NiwgMHg3YywgMHhiYywgMHg4 MiwgMHhiOSwgMHgwZSwgMHgyZCwgMHgxZiwgMHg5MiwgMHhkNywKLSsgICAgMHhjMSwgMHhiYywg MHg2NywgMHg2OSwgMHhlYywgMHg2YiwgMHgwMywgMHgzYwotK307Ci0rCi0rX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9ub25jZVtdID0gewotKyAgICAw eGE0LCAweDBjLCAweGQ4LCAweDljLCAweDYxLCAweGQ4LCAweGMzLCAweDU0LCAweGZlLCAweDUz LCAweGM5LCAweGU1LAotKyAgICAweDVkLCAweDZmLCAweDZkLCAweDM1Ci0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3BlcnNvbmFsaXph dGlvbnN0cmluZ1tdID0gewotKyAgICAweDIyLCAweDVlLCAweDYyLCAweDkzLCAweDQyLCAweDgz LCAweDc4LCAweDI0LCAweGQ4LCAweDQwLCAweDhjLCAweGRlLAotKyAgICAweDZmLCAweGY5LCAw eGE0LCAweDdhLCAweGM1LCAweGE3LCAweDNiLCAweDg4LCAweGEzLCAweGVlLCAweDQyLCAweDIw LAotKyAgICAweGZkLCAweDYxLCAweDU2LCAweGM2LCAweDRjLCAweDEzLCAweDQxLCAweDljCi0r fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2 X2FkZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAweGJmLCAweDc0LCAweDViLCAweGY2LCAweGM1 LCAweDY0LCAweDVlLCAweDk5LCAweDM0LCAweDhmLCAweGJjLCAweGE0LAotKyAgICAweGUyLCAw eGJkLCAweGQ4LCAweDg1LCAweDI2LCAweDM3LCAweGVhLCAweGJhLCAweDRmLCAweGYyLCAweDlh LCAweDlhLAotKyAgICAweDY2LCAweGZjLCAweGRmLCAweDYzLCAweDI2LCAweDI2LCAweDE5LCAw eDg3Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMjU2X2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhiMywgMHhjNiwgMHgwNywgMHgw NywgMHhkNiwgMHg3NSwgMHhmNiwgMHgyYiwgMHhkNiwgMHgyMSwgMHg5NiwgMHhmMSwKLSsgICAg MHhhZSwgMHhkYiwgMHgyYiwgMHhhYywgMHgyNSwgMHgyYSwgMHhhZSwgMHhhZSwgMHg0MSwgMHg3 MiwgMHgwMywgMHg1ZSwKLSsgICAgMHhiZiwgMHhkMywgMHg2NCwgMHhiYywgMHg1OSwgMHhmOSwg MHhjMCwgMHg3NgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTI1Nl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHhiZiwgMHgyMCwg MHgzMywgMHg1NiwgMHgyOSwgMHhhOCwgMHgzNywgMHgwNCwgMHgxZiwgMHg3OCwgMHgzNCwgMHgz ZCwKLSsgICAgMHg4MSwgMHgyYSwgMHhjOSwgMHg4NiwgMHhjNiwgMHg3YSwgMHgyZiwgMHg4OCwg MHg1ZSwgMHhkNSwgMHhiZSwgMHgzNCwKLSsgICAgMHg0NiwgMHgyMCwgMHhhNCwgMHgzNSwgMHhl YiwgMHhjNywgMHhlMiwgMHg5ZAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKLSsgICAg MHg5YiwgMHhhZSwgMHgyZCwgMHgyZCwgMHg2MSwgMHhhNCwgMHg4OSwgMHhlYiwgMHg0MywgMHg0 NiwgMHhhNywgMHhkYSwKLSsgICAgMHhlZiwgMHg0MCwgMHhjYSwgMHg0YSwgMHg5OSwgMHgxMSwg MHg0MSwgMHhkYywgMHg1YywgMHg5NCwgMHhlOSwgMHhhYywKLSsgICAgMHhkNCwgMHhkMCwgMHhl NiwgMHhiZCwgMHhmYiwgMHgwMywgMHg5YywgMHhhOAotK307Ci0rCi0rX19maXBzX2NvbnN0c2Vn IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7 Ci0rICAgIDB4MjMsIDB4YWEsIDB4MGMsIDB4YmQsIDB4MjgsIDB4MzMsIDB4ZTIsIDB4NTEsIDB4 ZmMsIDB4NzEsIDB4ZDIsIDB4MTUsCi0rICAgIDB4MWYsIDB4NzYsIDB4ZmQsIDB4MGQsIDB4ZTAs IDB4YjcsIDB4YjUsIDB4ODQsIDB4NzUsIDB4NWIsIDB4YmUsIDB4ZjMsCi0rICAgIDB4NWMsIDB4 Y2EsIDB4YzUsIDB4MzAsIDB4ZjIsIDB4NzUsIDB4MWYsIDB4ZGEKLSt9OwotKwotK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcmV0dXJuZWRiaXRzW10g PSB7Ci0rICAgIDB4OTAsIDB4M2MsIDB4YzEsIDB4MTAsIDB4OGMsIDB4MTIsIDB4MDEsIDB4YzYs IDB4YTYsIDB4M2EsIDB4MGYsIDB4NGQsCi0rICAgIDB4YjYsIDB4M2EsIDB4NGYsIDB4NDEsIDB4 OWMsIDB4NjEsIDB4NzUsIDB4ODQsIDB4ZTksIDB4NzQsIDB4NzUsIDB4ZmQsCi0rICAgIDB4ZmUs IDB4ZjIsIDB4MWYsIDB4NDMsIDB4ZDgsIDB4NWUsIDB4MjQsIDB4YTMKLSt9OwotKwotKy8qIFNI QS0zODQgUFIgICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTM4NF9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKLSsgICAgMHg3MSwgMHg5ZCwgMHhiMiwgMHg1 YSwgMHg3MSwgMHg2ZCwgMHgwNCwgMHhlOSwgMHgxZSwgMHhjNywgMHg5MiwgMHgyNCwKLSsgICAg MHg2ZSwgMHgxMiwgMHgzMywgMHhhOSwgMHg1MiwgMHg2NCwgMHgzMSwgMHhlZiwgMHg3MSwgMHhl YiwgMHgyMiwgMHg1NSwKLSsgICAgMHgyOCwgMHg5NywgMHgwNiwgMHg2YSwgMHhjMCwgMHgwYywg MHhhMCwgMHg3ZQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTM4NF9wcl9ub25jZVtdID0gewotKyAgICAweGY1LCAweDBkLCAweGZhLCAweGIw LCAweGVjLCAweDZhLCAweDdjLCAweGQ2LCAweGJkLCAweDliLCAweDA1LCAweGZkLAotKyAgICAw eDM4LCAweDNlLCAweDJlLCAweDU2Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewot KyAgICAweDc0LCAweGFjLCAweDdlLCAweDZkLCAweGIxLCAweGE0LCAweGU3LCAweDIxLCAweGQx LCAweDFlLCAweDZlLCAweDk2LAotKyAgICAweDZkLCAweDRkLCAweDUzLCAweDQ2LCAweDgyLCAw eDk2LCAweDZlLCAweGNmLCAweGFhLCAweDgxLCAweDhkLCAweDdkLAotKyAgICAweDllLCAweGUx LCAweDBmLCAweDE1LCAweGVhLCAweDQxLCAweGJmLCAweGUzCi0rfTsKLSsKLStfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3ByX2FkZGl0aW9uYWxpbnB1 dFtdID0gewotKyAgICAweGRhLCAweDk1LCAweGQ0LCAweGQwLCAweGI4LCAweDExLCAweGQzLCAw eDQ5LCAweDI3LCAweDVkLCAweGE5LCAweDM5LAotKyAgICAweDY4LCAweGYzLCAweGE4LCAweGU5 LCAweDVkLCAweDE5LCAweDhhLCAweDJiLCAweDY2LCAweGU4LCAweDY5LCAweDA2LAotKyAgICAw eDdjLCAweDllLCAweDAzLCAweGExLCAweDhiLCAweDI2LCAweDJkLCAweDZlCi0rfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3ByX2VudHJv cHlpbnB1dHByW10gPSB7Ci0rICAgIDB4NDksIDB4ZGYsIDB4NDQsIDB4MDAsIDB4ZTQsIDB4MWMs IDB4NzUsIDB4MGIsIDB4MjYsIDB4NWEsIDB4NTksIDB4NjQsCi0rICAgIDB4MWYsIDB4NGUsIDB4 YjEsIDB4YjIsIDB4MTMsIDB4ZjEsIDB4MjIsIDB4NGUsIDB4YjQsIDB4NmQsIDB4OWEsIDB4Y2Ms Ci0rICAgIDB4YTAsIDB4NDgsIDB4ZTYsIDB4Y2YsIDB4MWQsIDB4ZDEsIDB4OTIsIDB4MGQKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRf cHJfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweGM4LCAweDUyLCAweGFlLCAweGJmLCAw eDA0LCAweDNjLCAweDI3LCAweGI3LCAweDc4LCAweDE4LCAweGFhLCAweDhmLAotKyAgICAweGZm LCAweGNmLCAweGE0LCAweGYxLCAweGNjLCAweGU3LCAweDY4LCAweGZhLCAweDIyLCAweGEyLCAw eDEzLCAweDQ1LAotKyAgICAweGU4LCAweGRkLCAweDg3LCAweGU2LCAweGYyLCAweDZlLCAweGRk LCAweGM3LCAweDUyLCAweDkwLCAweDlmLCAweDdiLAotKyAgICAweGZhLCAweDYxLCAweDJkLCAw eDlkLCAweDllLCAweGNmLCAweDk4LCAweGFjLCAweDUyLCAweDQwLCAweGNlLCAweGFmCi0rfTsK LSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3By X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHg2MSwgMHg3YywgMHgwMywgMHg5YSwgMHgz ZSwgMHg1MCwgMHg1NywgMHg2MCwgMHhjNSwgMHg4MywgMHhjOSwgMHhiMiwKLSsgICAgMHhkMSwg MHg4NywgMHg4NSwgMHg2NiwgMHg5MiwgMHg1ZCwgMHg4NCwgMHgwZSwgMHg1MywgMHhmYiwgMHg3 MCwgMHgwMywKLSsgICAgMHg3MiwgMHhmZCwgMHhiYSwgMHhhZSwgMHg5YywgMHg4ZiwgMHhmOCwg MHgxOAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTM4NF9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKLSsgICAgMHhmOCwgMHhlYiwgMHg4OSwg MHhiMSwgMHg4ZCwgMHg3OCwgMHhiZSwgMHgyMSwgMHhlMCwgMHhiYiwgMHg5ZCwgMHhiNywKLSsg ICAgMHg5NSwgMHgwZSwgMHhkOSwgMHg0NiwgMHgwYywgMHg4YywgMHhlMiwgMHg2MywgMHhiNywg MHg5ZCwgMHg2NywgMHg5MCwKLSsgICAgMHhiZCwgMHhjNywgMHgwYiwgMHhhNSwgMHhjZSwgMHhi MiwgMHg2NSwgMHg4MQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIHNoYTM4NF9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhlNiwgMHg5Ziwg MHhmZSwgMHg2OCwgMHhkNiwgMHhiNSwgMHg3OSwgMHhmMSwgMHgwNiwgMHg1ZiwgMHhhMywgMHhi YiwKLSsgICAgMHgyMywgMHg4NSwgMHhkOCwgMHhmMCwgMHgyOSwgMHg1YSwgMHg2OCwgMHg5ZSwg MHhmNSwgMHhmNCwgMHhhNiwgMHgxMiwKLSsgICAgMHhlMCwgMHg5YSwgMHhlMiwgMHhhYywgMHgw MCwgMHgxZCwgMHg5OCwgMHgyNiwgMHhmYywgMHg1MywgMHg5NSwgMHg1MywKLSsgICAgMHhlNCwg MHgzZSwgMHgxNywgMHhkNSwgMHgwOCwgMHgwYiwgMHg3MCwgMHgzZCwgMHg2NywgMHg5OSwgMHhh YywgMHg2NgotK307Ci0rCi0rLyogU0hBLTM4NCBObyBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X2VudHJvcHlpbnB1dFtdID0gewotKyAg ICAweDA3LCAweDE1LCAweDI3LCAweDJhLCAweGFmLCAweDc0LCAweDI0LCAweDM3LCAweGJjLCAw eGQ1LCAweDE0LCAweDY5LAotKyAgICAweGNlLCAweDExLCAweGZmLCAweGEyLCAweDZiLCAweGI4 LCAweDA1LCAweDY3LCAweDM0LCAweGY4LCAweGJkLCAweDZkLAotKyAgICAweDZhLCAweGNjLCAw eGNkLCAweDYwLCAweGEzLCAweDY4LCAweGNhLCAweGY0Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X25vbmNlW10gPSB7Ci0rICAgIDB4 NzAsIDB4MTcsIDB4YzIsIDB4NWIsIDB4NWQsIDB4MjIsIDB4MGIsIDB4MDYsIDB4MTUsIDB4NTQs IDB4NzgsIDB4NzcsCi0rICAgIDB4NDQsIDB4YWYsIDB4MmYsIDB4MDkKLSt9OwotKwotK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcGVyc29uYWxpemF0 aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4ODksIDB4MzksIDB4MjgsIDB4YjAsIDB4NjAsIDB4ZWIs IDB4M2QsIDB4ZGMsIDB4NTUsIDB4NzUsIDB4ODYsIDB4ZWIsCi0rICAgIDB4YWUsIDB4YTIsIDB4 OGYsIDB4YmMsIDB4MWIsIDB4NzUsIDB4ZDQsIDB4ZTEsIDB4MGYsIDB4YWEsIDB4MzgsIDB4Y2Es Ci0rICAgIDB4NjIsIDB4OGIsIDB4Y2IsIDB4MmMsIDB4MjYsIDB4ZjYsIDB4YmMsIDB4YjEKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRf YWRkaXRpb25hbGlucHV0W10gPSB7Ci0rICAgIDB4MzAsIDB4MmIsIDB4NDIsIDB4MzUsIDB4ZWYs IDB4ZGEsIDB4NDAsIDB4NTUsIDB4MjgsIDB4YzYsIDB4OTUsIDB4ZmIsCi0rICAgIDB4NTQsIDB4 MDEsIDB4NjIsIDB4ZDcsIDB4ODcsIDB4MTQsIDB4NDgsIDB4NmQsIDB4OTAsIDB4NGMsIDB4YTks IDB4MDIsCi0rICAgIDB4NTQsIDB4NDAsIDB4MjIsIDB4YzgsIDB4NjYsIDB4YTUsIDB4NDgsIDB4 NDgKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBz aGEzODRfaW50X3JldHVybmVkYml0c1tdID0gewotKyAgICAweDgyLCAweGM0LCAweGExLCAweDlj LCAweDIxLCAweGQyLCAweGU3LCAweGE1LCAweGE2LCAweGY2LCAweDVmLCAweDA0LAotKyAgICAw eDVjLCAweGM3LCAweDMxLCAweDlkLCAweDhkLCAweDU5LCAweDc0LCAweDUwLCAweDE5LCAweDg5 LCAweDJmLCAweDYzLAotKyAgICAweGQ1LCAweGI3LCAweDdlLCAweGViLCAweDE1LCAweGUzLCAw eDcwLCAweDgzLCAweGExLCAweDI0LCAweDU5LCAweGZhLAotKyAgICAweDJjLCAweDU2LCAweGY2 LCAweDg4LCAweDNhLCAweDkyLCAweDkzLCAweGExLCAweGZiLCAweDc5LCAweGMxLCAweDdhCi0r fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0 X2VudHJvcHlpbnB1dHJlc2VlZFtdID0gewotKyAgICAweDM5LCAweGE2LCAweGU4LCAweDVjLCAw eDgyLCAweDE3LCAweDcxLCAweDI2LCAweDU3LCAweDRmLCAweDlmLCAweGMyLAotKyAgICAweDU1 LCAweGZmLCAweDVjLCAweDliLCAweDUzLCAweDFhLCAweGQxLCAweDVmLCAweGJjLCAweDYyLCAw eGU0LCAweDI3LAotKyAgICAweDJkLCAweDMyLCAweGYwLCAweGU0LCAweDUyLCAweDhjLCAweGM1 LCAweDBjCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgc2hhMzg0X2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0gewotKyAgICAweDhkLCAweGNiLCAw eDhkLCAweGNlLCAweDA4LCAweGVhLCAweDgwLCAweGU4LCAweDliLCAweDYxLCAweGE4LCAweDBm LAotKyAgICAweGFmLCAweDQ5LCAweDIwLCAweDllLCAweDc0LCAweGNiLCAweDU3LCAweDgwLCAw eDQyLCAweGIwLCAweDg0LCAweDVlLAotKyAgICAweDMwLCAweDJhLCAweDY3LCAweDA4LCAweGY0 LCAweGUzLCAweDQwLCAweDIyCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhMzg0X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKLSsgICAgMHg3Yywg MHg4ZiwgMHhjMiwgMHhhZSwgMHgyMiwgMHg0YSwgMHhkNiwgMHhmNiwgMHgwNSwgMHhhNCwgMHg3 YSwgMHhlYSwKLSsgICAgMHhiYiwgMHgyNSwgMHhkMCwgMHhiNywgMHg1YSwgMHhkNiwgMHhjZiwg MHg5ZCwgMHhmMywgMHg2YywgMHhlMiwgMHhiMiwKLSsgICAgMHg0ZSwgMHhiNCwgMHhiZCwgMHhm NCwgMHhlNSwgMHg0MCwgMHg4MCwgMHg5NAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHg5 ZSwgMHg3ZSwgMHhmYiwgMHg1OSwgMHhiYiwgMHhhYSwgMHgzYywgMHhmNywgMHhlMSwgMHhmOCwg MHg3NiwgMHhkZCwKLSsgICAgMHg2MywgMHg1ZiwgMHhhZiwgMHgyMywgMHhkNiwgMHg2NCwgMHg2 MSwgMHhjMCwgMHg5YSwgMHgwOSwgMHg0NywgMHhjOSwKLSsgICAgMHgzMywgMHhkZiwgMHg2ZCwg MHg1NSwgMHg5MSwgMHgzNCwgMHg3OSwgMHg3MCwgMHhjNCwgMHg5OSwgMHg2ZSwgMHg1NCwKLSsg ICAgMHgwOSwgMHg2NCwgMHgyMSwgMHgxYSwgMHhiZCwgMHgxZSwgMHg4MCwgMHg0MCwgMHgzNCwg MHhhZCwgMHhmYSwgMHhkNwotK307Ci0rCi0rLyogU0hBLTUxMiBQUiAgKi8KLStfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX2VudHJvcHlpbnB1dFtd ID0gewotKyAgICAweDEzLCAweGY3LCAweDYxLCAweDc1LCAweDY1LCAweDI4LCAweGEyLCAweDU5 LCAweDEzLCAweDVhLCAweDRhLCAweDRmLAotKyAgICAweDU2LCAweDYwLCAweDhjLCAweDUzLCAw eDdkLCAweGIwLCAweGJkLCAweDA2LCAweDRmLCAweGVkLCAweGNjLCAweGQyLAotKyAgICAweGEy LCAweGI1LCAweGZkLCAweDViLCAweDNhLCAweGFiLCAweGVjLCAweDI4Ci0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX25vbmNlW10g PSB7Ci0rICAgIDB4YmUsIDB4YTMsIDB4OTEsIDB4OTMsIDB4MWQsIDB4YzMsIDB4MzEsIDB4M2Es IDB4MjMsIDB4MzMsIDB4NTAsIDB4NjcsCi0rICAgIDB4ODgsIDB4YzcsIDB4YTIsIDB4YzQKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJf cHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4MWYsIDB4NTksIDB4NGQsIDB4 N2IsIDB4ZTYsIDB4NDYsIDB4OTEsIDB4NDgsIDB4YzEsIDB4MjUsIDB4ZmEsIDB4ZmYsCi0rICAg IDB4ODksIDB4MTIsIDB4NzcsIDB4MzUsIDB4ZGYsIDB4M2UsIDB4ZjQsIDB4ODAsIDB4NWYsIDB4 ZDksIDB4YjAsIDB4MDcsCi0rICAgIDB4MjIsIDB4NDEsIDB4ZGQsIDB4NDgsIDB4NzgsIDB4NmIs IDB4NzcsIDB4MmIKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBzaGE1MTJfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7Ci0rICAgIDB4MzAsIDB4ZmYs IDB4NjMsIDB4NmYsIDB4YWMsIDB4ZDksIDB4ODQsIDB4MzksIDB4NmYsIDB4ZTQsIDB4OTksIDB4 Y2UsCi0rICAgIDB4OTEsIDB4N2QsIDB4N2UsIDB4YzgsIDB4NTgsIDB4ZjIsIDB4MTIsIDB4YzMs IDB4YjYsIDB4YWQsIDB4ZGEsIDB4MjIsCi0rICAgIDB4MDQsIDB4YTAsIDB4ZDIsIDB4MjEsIDB4 ZmUsIDB4ZjIsIDB4OTUsIDB4MWQKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGE1MTJfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKLSsgICAgMHg2 NCwgMHg1NCwgMHgxMywgMHhlYywgMHg0ZiwgMHg3NywgMHhkYSwgMHhiMiwgMHg5MiwgMHgyZSwg MHg1MiwgMHg4MCwKLSsgICAgMHgxMSwgMHgxMCwgMHhjMiwgMHhmOCwgMHhlNiwgMHhhNywgMHhj ZCwgMHg0YiwgMHhmYywgMHgzMiwgMHgyZSwgMHg5ZSwKLSsgICAgMHhlYiwgMHhiYiwgMHhiMSwg MHhiZiwgMHgxNSwgMHg1YywgMHg3MywgMHgwOAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7 Ci0rICAgIDB4ZWYsIDB4MWUsIDB4ZGMsIDB4MGEsIDB4YTQsIDB4MzYsIDB4OTEsIDB4OWMsIDB4 M2QsIDB4MjcsIDB4OTcsIDB4NTAsCi0rICAgIDB4OGQsIDB4MzYsIDB4MjksIDB4OGQsIDB4Y2Us IDB4NmEsIDB4MGMsIDB4ZjcsIDB4MjEsIDB4YzAsIDB4OTEsIDB4YWUsCi0rICAgIDB4MGMsIDB4 OTYsIDB4NzIsIDB4YmQsIDB4NTIsIDB4ODEsIDB4NTgsIDB4ZmMsIDB4NmQsIDB4ZTUsIDB4Zjcs IDB4YTUsCi0rICAgIDB4ZmQsIDB4NWQsIDB4YTcsIDB4NTgsIDB4NjgsIDB4YzgsIDB4OTksIDB4 NTgsIDB4OGUsIDB4YzgsIDB4Y2UsIDB4OTUsCi0rICAgIDB4MDEsIDB4N2QsIDB4ZmYsIDB4YTQs IDB4YzgsIDB4ZjcsIDB4NjMsIDB4ZmUsIDB4NWYsIDB4NjksIDB4ODMsIDB4NTMsCi0rICAgIDB4 ZTIsIDB4YzYsIDB4OGIsIDB4YzMKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGE1MTJfcHJfYWRkaXRpb25hbGlucHV0MltdID0gewotKyAgICAw eGU2LCAweDliLCAweGM0LCAweDg4LCAweDM0LCAweGNhLCAweGVhLCAweDI5LCAweDJmLCAweDk4 LCAweDA1LCAweGE0LAotKyAgICAweGQzLCAweGMwLCAweDdiLCAweDExLCAweGU4LCAweGJiLCAw eDc1LCAweGYyLCAweGJkLCAweDI5LCAweGI3LCAweDQwLAotKyAgICAweDI1LCAweDdmLCAweGMx LCAweGI3LCAweGIxLCAweGYxLCAweDI1LCAweDYxCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX2VudHJvcHlpbnB1dHByMltdID0g ewotKyAgICAweDIzLCAweDZkLCAweGZmLCAweGRlLCAweGZiLCAweGQxLCAweGJhLCAweDMzLCAw eDE4LCAweGU2LCAweGJlLCAweGI1LAotKyAgICAweDQ4LCAweDc3LCAweDZkLCAweDdmLCAweGE3 LCAweGUxLCAweDRkLCAweDQ4LCAweDFlLCAweDNjLCAweGE3LCAweDM0LAotKyAgICAweDFhLCAw eGM4LCAweDYwLCAweGRiLCAweDhmLCAweDk5LCAweDE1LCAweDk5Ci0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX3JldHVybmVkYml0 c1tdID0gewotKyAgICAweDcwLCAweDI3LCAweDMxLCAweGRiLCAweDkyLCAweDcwLCAweDIxLCAw eGZlLCAweDE2LCAweGI2LCAweGM4LCAweDUxLAotKyAgICAweDM0LCAweDg3LCAweDY1LCAweGQw LCAweDRlLCAweGZkLCAweGZlLCAweDY4LCAweGVjLCAweGFjLCAweGRjLCAweDkzLAotKyAgICAw eDQxLCAweDM4LCAweDkyLCAweDkwLCAweGI0LCAweDk0LCAweGY5LCAweDBkLCAweGE0LCAweGY3 LCAweDRlLCAweDgwLAotKyAgICAweDkyLCAweDY3LCAweDQ4LCAweDQwLCAweGE3LCAweDA4LCAw eGM3LCAweGJjLCAweDY2LCAweDAwLCAweGZkLCAweGY3LAotKyAgICAweDRjLCAweDhiLCAweDE3 LCAweDZlLCAweGQxLCAweDhmLCAweDliLCAweGYzLCAweDZmLCAweGY2LCAweDM0LCAweGRkLAot KyAgICAweDY3LCAweGY3LCAweDY4LCAweGRkCi0rfTsKLSsKLSsvKiBTSEEtNTEyIE5vIFBSICAq LwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfZW50 cm9weWlucHV0W10gPSB7Ci0rICAgIDB4YjYsIDB4MGIsIDB4YjcsIDB4YmMsIDB4ODQsIDB4NTYs IDB4ZjYsIDB4MTIsIDB4YWYsIDB4NDUsIDB4NjcsIDB4MTcsCi0rICAgIDB4N2MsIDB4ZDEsIDB4 YjIsIDB4NzgsIDB4MmIsIDB4YTAsIDB4ZjIsIDB4YmUsIDB4YjYsIDB4NmQsIDB4OGIsIDB4NTYs Ci0rICAgIDB4YzYsIDB4YmMsIDB4NGQsIDB4ZTEsIDB4ZjcsIDB4YmUsIDB4Y2UsIDB4YmQKLSt9 OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJf bm9uY2VbXSA9IHsKLSsgICAgMHg5ZCwgMHhlZCwgMHhjMCwgMHhlNSwgMHg1YSwgMHg5OCwgMHg2 YSwgMHhjYiwgMHg1MSwgMHg3ZCwgMHg3NiwgMHgzMSwKLSsgICAgMHg1YSwgMHg2NCwgMHhmMCwg MHhmNwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTUxMl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKLSsgICAgMHhjMiwgMHg2ZCwgMHhh MywgMHhjMywgMHgwNiwgMHg3NCwgMHhlNSwgMHgwMSwgMHg1YywgMHgxMCwgMHgxNywgMHhjNywK LSsgICAgMHhhZiwgMHg4MywgMHg5ZCwgMHg1OSwgMHg4ZCwgMHgyZCwgMHgyOSwgMHgzOCwgMHhj NSwgMHg1OSwgMHg3MCwgMHg4YiwKLSsgICAgMHg0NiwgMHg0OCwgMHgyZCwgMHhjZiwgMHgzNiwg MHg3ZCwgMHg1OSwgMHhjMAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTUxMl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHhlYywgMHg4 YywgMHhkNCwgMHhmNywgMHg2MSwgMHg2ZSwgMHgwZCwgMHg5NSwgMHg3OSwgMHhiNywgMHgyOCwg MHhhZCwKLSsgICAgMHg1ZiwgMHg2OSwgMHg3NCwgMHg1ZiwgMHgyZCwgMHgzNiwgMHgwNiwgMHg4 YSwgMHg2YiwgMHhhYywgMHg1NCwgMHg5NywKLSsgICAgMHhjNCwgMHhhMSwgMHgxMiwgMHg4NSwg MHgwYSwgMHhkZiwgMHg0YiwgMHgzNAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4 ODQsIDB4MmYsIDB4MWYsIDB4NjgsIDB4NmEsIDB4YTMsIDB4YWQsIDB4MWUsIDB4ZmIsIDB4ZjQs IDB4MTUsIDB4YmQsCi0rICAgIDB4ZGUsIDB4MzgsIDB4ZDQsIDB4MzAsIDB4ODAsIDB4NTEsIDB4 ZTksIDB4ZDMsIDB4YzcsIDB4MjAsIDB4ODgsIDB4ZTksCi0rICAgIDB4ZjUsIDB4Y2MsIDB4ZGYs IDB4NTcsIDB4NWMsIDB4NDcsIDB4MmYsIDB4NTcsIDB4M2MsIDB4NWYsIDB4MTMsIDB4NTYsCi0r ICAgIDB4Y2MsIDB4YzUsIDB4NGYsIDB4ODQsIDB4ZjgsIDB4MTAsIDB4NDEsIDB4ZDUsIDB4N2Us IDB4NTgsIDB4NmUsIDB4MTksCi0rICAgIDB4MTksIDB4OWUsIDB4YWYsIDB4YzIsIDB4MjIsIDB4 NTgsIDB4NDEsIDB4NTAsIDB4NzksIDB4YzIsIDB4ZDgsIDB4MDQsCi0rICAgIDB4MjgsIDB4ZDQs IDB4MzksIDB4OWEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBzaGE1MTJfZW50cm9weWlucHV0cmVzZWVkW10gPSB7Ci0rICAgIDB4ZmEsIDB4N2Ys IDB4NDYsIDB4NTEsIDB4ODMsIDB4NjIsIDB4OTgsIDB4MTYsIDB4OWEsIDB4MTksIDB4YTIsIDB4 NDksCi0rICAgIDB4YTksIDB4ZTYsIDB4NGEsIDB4ZDgsIDB4ODUsIDB4ZTcsIDB4ZDQsIDB4M2Is IDB4MmMsIDB4ODIsIDB4YzUsIDB4ODIsCi0rICAgIDB4YmYsIDB4MTEsIDB4ZjksIDB4OWUsIDB4 YmMsIDB4ZDAsIDB4MDEsIDB4ZWUKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGE1MTJfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7Ci0rICAg IDB4YjksIDB4MTIsIDB4ZTAsIDB4NGYsIDB4ZjcsIDB4YTcsIDB4YzQsIDB4ZDgsIDB4ZDAsIDB4 OGUsIDB4OTksIDB4MjksCi0rICAgIDB4N2MsIDB4OWEsIDB4ZTksIDB4Y2YsIDB4YzQsIDB4NmMs IDB4ZjgsIDB4YzMsIDB4YTcsIDB4NDEsIDB4ODMsIDB4ZDYsCi0rICAgIDB4MmUsIDB4ZmEsIDB4 YjgsIDB4NWUsIDB4OGUsIDB4NmIsIDB4NzgsIDB4MjAKLSt9OwotKwotK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfYWRkaXRpb25hbGlucHV0MltdID0g ewotKyAgICAweGQ3LCAweDA3LCAweDUyLCAweGI5LCAweDgzLCAweDJjLCAweDAzLCAweDcxLCAw eGVlLCAweGM5LCAweGMwLCAweDg1LAotKyAgICAweGUxLCAweDU3LCAweGIyLCAweGNkLCAweDNh LCAweGYwLCAweGM5LCAweDM0LCAweDI0LCAweDQxLCAweDFjLCAweDQyLAotKyAgICAweDk5LCAw eGIyLCAweDg0LCAweGU5LCAweDE3LCAweGQyLCAweDc2LCAweDkyCi0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3JldHVybmVkYml0c1td ID0gewotKyAgICAweDM2LCAweDE3LCAweDVkLCAweDk4LCAweDJiLCAweDY1LCAweDI1LCAweDhl LCAweGM4LCAweDI5LCAweGRmLCAweDI3LAotKyAgICAweDA1LCAweDM2LCAweDI2LCAweDEyLCAw eDhhLCAweDY4LCAweDc0LCAweDI3LCAweDM3LCAweGQ0LCAweDdmLCAweDMyLAotKyAgICAweGIx LCAweDEyLCAweGQ2LCAweDg1LCAweDgzLCAweGViLCAweDJlLCAweGEwLCAweGVkLCAweDRiLCAw eGI1LCAweDdiLAotKyAgICAweDZmLCAweDM5LCAweDNjLCAweDcxLCAweDc3LCAweDAyLCAweDEy LCAweGNjLCAweDJjLCAweDNhLCAweDhlLCAweDYzLAotKyAgICAweGRmLCAweDRhLCAweGJkLCAw eDZmLCAweDZlLCAweDJlLCAweGVkLCAweDBhLCAweDg1LCAweGE1LCAweDJmLCAweGEyLAotKyAg ICAweDY4LCAweGRlLCAweDQyLCAweGI1Ci0rfTsKLSsKLSsvKiBITUFDIFNIQS0xIFBSICAqLwot K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfcHJf ZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4MjYsIDB4NWYsIDB4MzYsIDB4MTQsIDB4ZmYsIDB4 M2QsIDB4ODMsIDB4ZmEsIDB4NzMsIDB4NWUsIDB4NzUsIDB4ZGMsCi0rICAgIDB4MmMsIDB4MTgs IDB4MTcsIDB4MWIKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTFfcHJfbm9uY2VbXSA9IHsKLSsgICAgMHhjOCwgMHhlMywgMHg1Nywg MHhhNSwgMHg3YiwgMHg3NCwgMHg4NiwgMHg2ZQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0r ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wcl9wZXJzb25hbGl6YXRp b25zdHJpbmdbXSA9IHsKLSsgICAgMHg2ZSwgMHhkYiwgMHgwZCwgMHhmZSwgMHg3ZCwgMHhhYywg MHg3OSwgMHhkMCwgMHhhNSwgMHgzYSwgMHg0OCwgMHg4NSwKLSsgICAgMHg4MCwgMHhlMiwgMHg3 ZiwgMHgyYQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMV9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHgzMSwgMHhjZCwg MHg1ZSwgMHg0MywgMHhkYywgMHhmYiwgMHg3YSwgMHg3OSwgMHhjYSwgMHg4OCwgMHhkZSwgMHgx ZiwKLSsgICAgMHhkNywgMHhiYiwgMHg0MiwgMHgwOQotK307Ci0rCi0rX19maXBzX2NvbnN0c2Vn IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wcl9lbnRyb3B5aW5wdXRwcltd ID0gewotKyAgICAweDdjLCAweDIzLCAweDk1LCAweDM4LCAweDAwLCAweDk1LCAweGMxLCAweDc4 LCAweDFmLCAweDhmLCAweGQ3LCAweDYzLAotKyAgICAweDIzLCAweDg3LCAweDJhLCAweGVkCi0r fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19z aGExX3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhiYiwgMHgzNCwgMHhlNywgMHg5 MywgMHhhMywgMHgwMiwgMHgyYywgMHg0YSwgMHhkMCwgMHg4OSwgMHhkYSwgMHg3ZiwKLSsgICAg MHhlZCwgMHhmNCwgMHg0YywgMHhkZSwgMHgxNywgMHhlYywgMHhlNSwgMHg2YwotK307Ci0rCi0r X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wcl9h ZGRpdGlvbmFsaW5wdXQyW10gPSB7Ci0rICAgIDB4NDksIDB4YmMsIDB4MmQsIDB4MmMsIDB4Yjcs IDB4MzIsIDB4Y2IsIDB4MjAsIDB4ZGYsIDB4ZjUsIDB4NzcsIDB4NTgsCi0rICAgIDB4YTAsIDB4 NGIsIDB4OTMsIDB4NmUKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBobWFjX3NoYTFfcHJfZW50cm9weWlucHV0cHIyW10gPSB7Ci0rICAgIDB4M2Ms IDB4YWEsIDB4YjAsIDB4MjEsIDB4NDIsIDB4YjAsIDB4ZGQsIDB4MzQsIDB4ZjAsIDB4MTYsIDB4 N2YsIDB4MGMsCi0rICAgIDB4MGYsIDB4ZmYsIDB4MmUsIDB4YWYKLSt9OwotKwotK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfcHJfcmV0dXJuZWRi aXRzW10gPSB7Ci0rICAgIDB4OGUsIDB4Y2IsIDB4YTMsIDB4NjQsIDB4YjIsIDB4YjgsIDB4MzMs IDB4NmMsIDB4NjQsIDB4M2IsIDB4NzgsIDB4MTYsCi0rICAgIDB4OTksIDB4MzUsIDB4YzgsIDB4 MzAsIDB4Y2IsIDB4M2UsIDB4YTAsIDB4ZDgKLSt9OwotKwotKy8qIEhNQUMgU0hBLTEgTm8gUFIg ICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hh MV9lbnRyb3B5aW5wdXRbXSA9IHsKLSsgICAgMHgzMiwgMHg5YSwgMHgyYSwgMHg4NywgMHg3Yiwg MHg4OSwgMHg3YywgMHhmNiwgMHhjYiwgMHg5NSwgMHhkNSwgMHg0MCwKLSsgICAgMHgxNywgMHhm ZSwgMHg0NywgMHg3MAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhMV9ub25jZVtdID0gewotKyAgICAweDE2LCAweGQ4LCAweGUwLCAw eGM3LCAweDUyLCAweGNmLCAweDRhLCAweDI1Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3BlcnNvbmFsaXphdGlvbnN0cmluZ1td ID0gewotKyAgICAweDM1LCAweDM1LCAweGE5LCAweGE1LCAweDQwLCAweGJlLCAweDliLCAweGQx LCAweDU2LCAweGRkLCAweDQ0LCAweDAwLAotKyAgICAweDcyLCAweGY3LCAweGQzLCAweDVlCi0r fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19z aGExX2FkZGl0aW9uYWxpbnB1dFtdID0gewotKyAgICAweDFiLCAweDJjLCAweDg0LCAweDJkLCAw eDRhLCAweDg5LCAweDhmLCAweDY5LCAweDE5LCAweGYxLCAweGYzLCAweGRiLAotKyAgICAweGJi LCAweGUzLCAweGFhLCAweGVhCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKLSsgICAgMHhj ZiwgMHhmYSwgMHg3ZCwgMHg3MiwgMHgwZiwgMHhlNiwgMHhjNywgMHg5NiwgMHhhMCwgMHg2OSwg MHgzMSwgMHgxMSwKLSsgICAgMHg5YiwgMHgwYiwgMHgxYSwgMHgyMCwgMHgxZiwgMHgzZiwgMHhh YSwgMHhkMQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMV9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHg5MCwgMHg3NSwg MHgxNSwgMHgwNCwgMHg5NSwgMHhmMSwgMHhiYSwgMHg4MSwgMHgwYywgMHgzNywgMHg5NCwgMHg2 ZiwKLSsgICAgMHg4NiwgMHg1MiwgMHg2ZCwgMHg5YwotK307Ci0rCi0rX19maXBzX2NvbnN0c2Vn IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9hZGRpdGlvbmFsaW5wdXRyZXNl ZWRbXSA9IHsKLSsgICAgMHg1YiwgMHg0MCwgMHhiYSwgMHg1ZiwgMHgxNywgMHg3MCwgMHhmMCwg MHg0YiwgMHhkZiwgMHhjOSwgMHg5NywgMHg5MiwKLSsgICAgMHg3OSwgMHhjNSwgMHg4MiwgMHgy OAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGht YWNfc2hhMV9hZGRpdGlvbmFsaW5wdXQyW10gPSB7Ci0rICAgIDB4OTcsIDB4YzgsIDB4ODAsIDB4 OTAsIDB4YjMsIDB4YWEsIDB4NmUsIDB4NjAsIDB4ZWEsIDB4ODMsIDB4N2EsIDB4ZTMsCi0rICAg IDB4OGEsIDB4Y2EsIDB4YTQsIDB4N2YKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4 OTAsIDB4YmQsIDB4MDUsIDB4NTYsIDB4NmQsIDB4YjUsIDB4MjIsIDB4ZDUsIDB4YjksIDB4NWEs IDB4MjksIDB4MmQsCi0rICAgIDB4ZTksIDB4MGIsIDB4ZTEsIDB4YWMsIDB4ZGUsIDB4MjcsIDB4 MGIsIDB4YjAKLSt9OwotKwotKy8qIEhNQUMgU0hBLTIyNCBQUiAgKi8KLStfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfZW50cm9weWlucHV0 W10gPSB7Ci0rICAgIDB4MTcsIDB4MzIsIDB4MmIsIDB4MmUsIDB4NmYsIDB4MWIsIDB4OWMsIDB4 NmQsIDB4MzEsIDB4ZTAsIDB4MzQsIDB4MDcsCi0rICAgIDB4Y2YsIDB4ZWQsIDB4ZjYsIDB4YjYs IDB4NWEsIDB4NzYsIDB4NGMsIDB4YmMsIDB4NjIsIDB4ODUsIDB4MDEsIDB4OTAKLSt9OwotKwot K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9w cl9ub25jZVtdID0gewotKyAgICAweDM4LCAweGJmLCAweDVmLCAweDIwLCAweGIzLCAweDY4LCAw eDJmLCAweDQzLCAweDYxLCAweDA1LCAweDhmLCAweDIzCi0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfcGVyc29u YWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4YzAsIDB4YzksIDB4NDUsIDB4YWMsIDB4OGQs IDB4MjcsIDB4NzcsIDB4MDgsIDB4MGIsIDB4MTcsIDB4NmQsIDB4ZWQsCi0rICAgIDB4YzEsIDB4 N2QsIDB4ZDUsIDB4MDcsIDB4OWQsIDB4NmUsIDB4ZjgsIDB4MjMsIDB4MmEsIDB4MjIsIDB4MTMs IDB4YmQKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBobWFjX3NoYTIyNF9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHhhNCwgMHgzYywg MHhlNywgMHgzYiwgMHhlYSwgMHgxOSwgMHg0NSwgMHgzMiwgMHhjMiwgMHg4MywgMHg2ZCwgMHgy MSwKLSsgICAgMHg4YSwgMHhjMCwgMHhlZSwgMHg2NywgMHg0NSwgMHhkZSwgMHgxMywgMHg3ZCwg MHg5ZCwgMHg2MSwgMHgwMCwgMHgzYgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X3ByX2VudHJvcHlpbnB1dHByW10gPSB7Ci0r ICAgIDB4MTUsIDB4MDUsIDB4NzQsIDB4NGEsIDB4N2YsIDB4OGQsIDB4NWMsIDB4NjAsIDB4MTYs IDB4ZTUsIDB4N2IsIDB4YWQsCi0rICAgIDB4ZjUsIDB4NDEsIDB4OGYsIDB4NTUsIDB4NjAsIDB4 YzQsIDB4MDksIDB4ZWUsIDB4MWUsIDB4MTEsIDB4ODEsIDB4YWIKLSt9OwotKwotK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9wcl9pbnRfcmV0 dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4NmYsIDB4ZjUsIDB4OWEsIDB4ZTIsIDB4NTQsIDB4NTMs IDB4MzAsIDB4M2QsIDB4NWEsIDB4MjcsIDB4MjksIDB4MzgsCi0rICAgIDB4MjcsIDB4ZjIsIDB4 MGQsIDB4MDUsIDB4ZTksIDB4MjYsIDB4Y2IsIDB4MTYsIDB4YzMsIDB4NTEsIDB4NWYsIDB4MTMs Ci0rICAgIDB4NDEsIDB4ZmUsIDB4OTksIDB4ZjIKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9wcl9hZGRpdGlvbmFsaW5wdXQy W10gPSB7Ci0rICAgIDB4NzMsIDB4ODEsIDB4ODgsIDB4ODQsIDB4OGYsIDB4ZWQsIDB4NmYsIDB4 MTAsIDB4OWYsIDB4OTMsIDB4YmYsIDB4MTcsCi0rICAgIDB4MzUsIDB4N2MsIDB4ZWYsIDB4ZDUs IDB4OGQsIDB4MjYsIDB4YTYsIDB4N2EsIDB4ZTgsIDB4MDksIDB4MzYsIDB4NGYKLSt9OwotKwot K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9w cl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKLSsgICAgMHhlNiwgMHhjZiwgMHhjZiwgMHg3ZSwgMHgx MiwgMHhlNSwgMHg0MywgMHhkMiwgMHgzOCwgMHhkOCwgMHgyNCwgMHg2ZiwKLSsgICAgMHg1YSwg MHgzNywgMHg2OCwgMHhiZiwgMHg0ZiwgMHhhMCwgMHhmZiwgMHhkNSwgMHg2MSwgMHg4YSwgMHg5 MywgMHhlMAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMjI0X3ByX3JldHVybmVkYml0c1tdID0gewotKyAgICAweGFmLCAweGY5LCAw eGQ4LCAweDE5LCAweDkxLCAweDMwLCAweDgyLCAweDZmLCAweGE5LCAweDFlLCAweDlkLCAweGQ3 LAotKyAgICAweGYzLCAweDUwLCAweGUwLCAweGM3LCAweGQ1LCAweDY0LCAweDk2LCAweDdkLCAw eDRjLCAweDRkLCAweDc4LCAweDAzLAotKyAgICAweDZkLCAweGQ4LCAweDllLCAweDcyCi0rfTsK LSsKLSsvKiBITUFDIFNIQS0yMjQgTm8gUFIgICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X2VudHJvcHlpbnB1dFtdID0gewotKyAgICAw eDExLCAweDgyLCAweGZkLCAweGQ5LCAweDQyLCAweGY0LCAweGZhLCAweGM4LCAweGYyLCAweDQx LCAweGU2LCAweDU0LAotKyAgICAweDAxLCAweGFlLCAweDIyLCAweDZlLCAweGM2LCAweGFmLCAw eGFmLCAweGQwLCAweGE2LCAweGIyLCAweGUyLCAweDZkCi0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfbm9uY2VbXSA9IHsKLSsg ICAgMHhhOSwgMHg0OCwgMHhkNywgMHg5MiwgMHgzOSwgMHg3ZSwgMHgyYSwgMHhkYywgMHgzMCwg MHgxZiwgMHgwZSwgMHgyYgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjI0X3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0g ewotKyAgICAweDExLCAweGQ1LCAweGY0LCAweGJkLCAweDY3LCAweDhjLCAweDMxLCAweGNmLCAw eGEzLCAweDNmLCAweDFlLCAweDZiLAotKyAgICAweGE4LCAweDA3LCAweDAyLCAweDBiLCAweGM4 LCAweDJlLCAweDZjLCAweDY0LCAweDQxLCAweDViLCAweGM4LCAweDM3Ci0rfTsKLSsKLStfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfYWRkaXRp b25hbGlucHV0W10gPSB7Ci0rICAgIDB4NjgsIDB4MTgsIDB4YzIsIDB4MDYsIDB4ZWIsIDB4M2Us IDB4MDQsIDB4OTUsIDB4NDQsIDB4NWUsIDB4ZmIsIDB4ZTYsCi0rICAgIDB4NDEsIDB4YzEsIDB4 NWMsIDB4Y2MsIDB4NDAsIDB4MmYsIDB4YjcsIDB4ZDIsIDB4MGYsIDB4ZjMsIDB4NmIsIDB4ZTcK LSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFj X3NoYTIyNF9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4N2YsIDB4NDUsIDB4YzcsIDB4 NWQsIDB4MzIsIDB4ZTYsIDB4MTcsIDB4NjAsIDB4YmEsIDB4ZGMsIDB4YjgsIDB4NDIsCi0rICAg IDB4MWIsIDB4OWMsIDB4ZjEsIDB4ZmEsIDB4M2IsIDB4NGQsIDB4MjksIDB4NTQsIDB4YzYsIDB4 OTAsIDB4ZmYsIDB4NWMsCi0rICAgIDB4Y2QsIDB4ZDYsIDB4YTksIDB4Y2MKLSt9OwotKwotK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9lbnRy b3B5aW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHhjNCwgMHg4ZSwgMHgzNywgMHg5NSwgMHg2OSwg MHg1MywgMHgyOCwgMHhkNywgMHgzNywgMHhiYiwgMHg3MCwgMHg5NSwKLSsgICAgMHgxYywgMHgw NywgMHgxZCwgMHhkOSwgMHhiNywgMHhlNiwgMHgxYiwgMHhiYiwgMHhmZSwgMHg0MSwgMHhlYiwg MHhjOQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGhtYWNfc2hhMjI0X2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0gewotKyAgICAweDUz LCAweDE3LCAweGExLCAweDZhLCAweGZhLCAweDc3LCAweDQ3LCAweGIwLCAweDk1LCAweDU2LCAw eDlhLCAweDIwLAotKyAgICAweDU3LCAweGRlLCAweDVjLCAweDg5LCAweDlmLCAweDdmLCAweGUy LCAweGRlLCAweDE3LCAweDNhLCAweDUwLCAweDIzCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfYWRkaXRpb25hbGlucHV0Mltd ID0gewotKyAgICAweDNhLCAweDMyLCAweGY5LCAweDg1LCAweDBjLCAweGMxLCAweGVkLCAweDc2 LCAweDJkLCAweGRmLCAweDQwLCAweGMzLAotKyAgICAweDA2LCAweDIyLCAweDY2LCAweGQ0LCAw eDlhLCAweDlhLCAweGZmLCAweDVhLCAweDdlLCAweDdhLCAweGYzLCAweDk2Ci0rfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcmV0 dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4NDMsIDB4YjQsIDB4NTcsIDB4NWMsIDB4MzgsIDB4MjUs IDB4OWQsIDB4YWUsIDB4ZWMsIDB4OTYsIDB4ZDEsIDB4ODUsCi0rICAgIDB4M2EsIDB4ODQsIDB4 OGQsIDB4ZmUsIDB4NjgsIDB4ZDUsIDB4MGUsIDB4NWMsIDB4OGYsIDB4NjUsIDB4YTUsIDB4NGUs Ci0rICAgIDB4NDUsIDB4ODQsIDB4YTgsIDB4OTQKLSt9OwotKwotKy8qIEhNQUMgU0hBLTI1NiBQ UiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19z aGEyNTZfcHJfZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4NGQsIDB4YjAsIDB4NDMsIDB4ZDgs IDB4MzQsIDB4NGIsIDB4MTAsIDB4NzAsIDB4YjEsIDB4OGIsIDB4ZWQsIDB4ZWEsCi0rICAgIDB4 MDcsIDB4OTIsIDB4OWYsIDB4NmMsIDB4NzksIDB4MzEsIDB4YWYsIDB4ODEsIDB4MjksIDB4ZWIs IDB4NmUsIDB4Y2EsCi0rICAgIDB4MzIsIDB4NDgsIDB4MjgsIDB4ZTcsIDB4MDIsIDB4NWQsIDB4 YTYsIDB4YTYKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTI1Nl9wcl9ub25jZVtdID0gewotKyAgICAweDNhLCAweGFlLCAweDE1LCAw eGE5LCAweDk5LCAweGRjLCAweGU0LCAweDY3LCAweDM0LCAweDNiLCAweDcwLCAweDE1LAotKyAg ICAweGFhLCAweGQzLCAweDMwLCAweDlhCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfcGVyc29uYWxpemF0aW9u c3RyaW5nW10gPSB7Ci0rICAgIDB4MTMsIDB4MWQsIDB4MjQsIDB4MDQsIDB4YjAsIDB4MTgsIDB4 ODEsIDB4MTUsIDB4MjEsIDB4NTEsIDB4MmEsIDB4MjQsCi0rICAgIDB4NTIsIDB4NjEsIDB4YmUs IDB4NjQsIDB4ODIsIDB4NmIsIDB4NTUsIDB4MmYsIDB4ZTIsIDB4ZjEsIDB4NDAsIDB4N2QsCi0r ICAgIDB4NzEsIDB4ZDgsIDB4MDEsIDB4ODYsIDB4MTUsIDB4YjcsIDB4OGIsIDB4YjUKLSt9Owot KwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1 Nl9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHg4ZiwgMHhhNiwgMHg1NCwgMHg1Ziwg MHhiMSwgMHhkMCwgMHhkOCwgMHhjMywgMHhlNywgMHgwYywgMHgxNSwgMHhhOSwKLSsgICAgMHgy MywgMHg2ZSwgMHhmZSwgMHhmYiwgMHg5MywgMHhmNywgMHgzYSwgMHhiZCwgMHg1OSwgMHgwMSwg MHhmYSwgMHgxOCwKLSsgICAgMHg4ZSwgMHhlOSwgMHgxYSwgMHhhOSwgMHg3OCwgMHhmYywgMHg3 OSwgMHgwYgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMjU2X3ByX2VudHJvcHlpbnB1dHByW10gPSB7Ci0rICAgIDB4Y2YsIDB4MjQs IDB4YjksIDB4ZWIsIDB4YjMsIDB4ZDQsIDB4Y2QsIDB4MTcsIDB4MzcsIDB4MzgsIDB4NzUsIDB4 NzksCi0rICAgIDB4MTUsIDB4Y2IsIDB4MmQsIDB4NzUsIDB4NTEsIDB4ZjEsIDB4Y2MsIDB4YWEs IDB4MzIsIDB4YTQsIDB4YTcsIDB4MzYsCi0rICAgIDB4N2MsIDB4NWMsIDB4ZTQsIDB4NDcsIDB4 ZjEsIDB4M2UsIDB4MWQsIDB4ZTUKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0r ICAgIDB4NTIsIDB4NDIsIDB4ZmEsIDB4ZWIsIDB4ODUsIDB4ZTAsIDB4MzAsIDB4MjIsIDB4Nzks IDB4MDAsIDB4MTYsIDB4YjIsCi0rICAgIDB4ODgsIDB4MmYsIDB4MTQsIDB4NmEsIDB4YjcsIDB4 ZmMsIDB4YjcsIDB4NTMsIDB4ZGMsIDB4NGEsIDB4MTIsIDB4ZWYsCi0rICAgIDB4NTQsIDB4ZDYs IDB4MzMsIDB4ZTksIDB4MjAsIDB4ZDYsIDB4ZmQsIDB4NTYKLSt9OwotKwotK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9wcl9hZGRpdGlvbmFs aW5wdXQyW10gPSB7Ci0rICAgIDB4ZjQsIDB4ZjYsIDB4NDksIDB4YTEsIDB4MmQsIDB4NjQsIDB4 MmIsIDB4MzAsIDB4NTgsIDB4ZjgsIDB4YmQsIDB4YjgsCi0rICAgIDB4NzUsIDB4ZWIsIDB4YmIs IDB4NWUsIDB4MWMsIDB4OWIsIDB4ODEsIDB4NmEsIDB4ZGEsIDB4MTQsIDB4ODYsIDB4NmUsCi0r ICAgIDB4ZDAsIDB4ZGEsIDB4MTgsIDB4YjcsIDB4ODgsIDB4ZmIsIDB4NTksIDB4ZjMKLSt9Owot KwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1 Nl9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKLSsgICAgMHgyMSwgMHhjZCwgMHg2ZSwgMHg0Niwg MHhhZCwgMHg5OSwgMHgwNywgMHgxNywgMHhiNCwgMHgzZCwgMHg3NiwgMHgwYSwKLSsgICAgMHhm ZiwgMHg1YiwgMHg1MiwgMHg1MCwgMHg3OCwgMHhkZiwgMHgxZiwgMHgyNCwgMHgwNiwgMHgwZCwg MHgzZiwgMHg3NCwKLSsgICAgMHhhOSwgMHhjOSwgMHgzNywgMHhjZiwgMHhkOCwgMHgyNiwgMHgy NSwgMHg5MQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMjU2X3ByX3JldHVybmVkYml0c1tdID0gewotKyAgICAweGE3LCAweGFmLCAw eDJmLCAweDI5LCAweGUwLCAweDNhLCAweDcyLCAweDk1LCAweDk2LCAweDFjLCAweGE5LCAweGYw LAotKyAgICAweDRhLCAweDE3LCAweDRkLCAweDY2LCAweDA2LCAweDEwLCAweGJmLCAweDM5LCAw eDg5LCAweDg4LCAweGI4LCAweDkxLAotKyAgICAweDM3LCAweDE4LCAweDk5LCAweGNmLCAweDhj LCAweDUzLCAweDNiLCAweDdlCi0rfTsKLSsKLSsvKiBITUFDIFNIQS0yNTYgTm8gUFIgICovCi0r X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X2Vu dHJvcHlpbnB1dFtdID0gewotKyAgICAweDk2LCAweGI3LCAweDUzLCAweDIyLCAweDFlLCAweDUy LCAweDJhLCAweDk2LCAweGIxLCAweDE1LCAweDNjLCAweDM1LAotKyAgICAweDVhLCAweDhiLCAw eGQzLCAweDRhLCAweGE2LCAweDZjLCAweDgzLCAweDBhLCAweDdkLCAweGEzLCAweDIzLCAweDNk LAotKyAgICAweDQzLCAweGExLCAweDA3LCAweDJjLCAweDJkLCAweGUzLCAweDgxLCAweGNjCi0r fTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19z aGEyNTZfbm9uY2VbXSA9IHsKLSsgICAgMHhmMSwgMHhhYywgMHg5NywgMHhjYiwgMHg1ZSwgMHgw NiwgMHg0OCwgMHhkMiwgMHg5NCwgMHhiZSwgMHgxNSwgMHgyZSwKLSsgICAgMHhjNywgMHhmYywg MHhjMiwgMHgwMQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAg ICAweDk4LCAweGM1LCAweDFlLCAweDM1LCAweDVlLCAweDg5LCAweDBkLCAweGNlLCAweDY0LCAw eDZkLCAweDE4LCAweGE3LAotKyAgICAweDVhLCAweGM2LCAweGYzLCAweGU3LCAweGQ2LCAweDll LCAweGMwLCAweGVhLCAweGI3LCAweDNhLCAweDhkLCAweDY1LAotKyAgICAweGI4LCAweGViLCAw eDEwLCAweGQ3LCAweDU3LCAweDE4LCAweGEwLCAweDMyCi0rfTsKLSsKLStfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfYWRkaXRpb25hbGlucHV0 W10gPSB7Ci0rICAgIDB4MWIsIDB4MTAsIDB4YWYsIDB4YWMsIDB4ZDAsIDB4NjUsIDB4OTUsIDB4 YWQsIDB4MDQsIDB4YWQsIDB4MDMsIDB4MWMsCi0rICAgIDB4ZTAsIDB4NDAsIDB4ZDYsIDB4M2Us IDB4MWMsIDB4NDYsIDB4NTMsIDB4MzksIDB4N2MsIDB4ZTIsIDB4YmMsIDB4ZGEsCi0rICAgIDB4 OGMsIDB4YTIsIDB4MzMsIDB4YTcsIDB4OWEsIDB4MjYsIDB4ZDMsIDB4MjcKLSt9OwotKwotK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9pbnRf cmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4YmEsIDB4NjEsIDB4MGUsIDB4NTUsIDB4ZmUsIDB4 MTEsIDB4OGEsIDB4OWUsIDB4MGYsIDB4ODAsIDB4ZGYsIDB4MWQsCi0rICAgIDB4MDMsIDB4MGEs IDB4ZmUsIDB4MTUsIDB4OTQsIDB4MjgsIDB4NGIsIDB4YmEsIDB4ZjQsIDB4OWYsIDB4NTEsIDB4 MjUsCi0rICAgIDB4ODgsIDB4ZTUsIDB4NGUsIDB4ZmIsIDB4YWYsIDB4Y2UsIDB4NjksIDB4OTAK LSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFj X3NoYTI1Nl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHg2MiwgMHg3ZiwgMHgxZSwg MHg2YiwgMHhlOCwgMHg4ZSwgMHhlMSwgMHgzNSwgMHg3ZCwgMHg5YiwgMHg0ZiwgMHhjNywKLSsg ICAgMHhlYywgMHhjOCwgMHhhYywgMHhlZiwgMHg2YiwgMHgxMywgMHg5ZSwgMHgwNSwgMHg1Niwg MHhjMSwgMHgwOCwgMHhmOSwKLSsgICAgMHgyZiwgMHgwZiwgMHgyNywgMHg5YywgMHhkNCwgMHgx NSwgMHhlZCwgMHgyZAotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0gewot KyAgICAweGM3LCAweDc2LCAweDZlLCAweGE5LCAweGQyLCAweGIyLCAweDc2LCAweDQwLCAweDgy LCAweDI1LCAweDJjLCAweGIzLAotKyAgICAweDZmLCAweGFjLCAweGU5LCAweDc0LCAweGVmLCAw eDhmLCAweDNjLCAweDhlLCAweGNkLCAweGYxLCAweGJmLCAweGIzLAotKyAgICAweDQ5LCAweDc3 LCAweDM0LCAweDg4LCAweDUyLCAweDM2LCAweGU2LCAweDJlCi0rfTsKLSsKLStfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfYWRkaXRpb25hbGlu cHV0MltdID0gewotKyAgICAweDhkLCAweGI4LCAweDBjLCAweGQxLCAweGJmLCAweDcwLCAweGY2 LCAweDE5LCAweGMzLCAweDQxLCAweDgwLCAweDlmLAotKyAgICAweGUxLCAweGE1LCAweGE0LCAw eDFmLCAweDJjLCAweDI2LCAweGIxLCAweGU1LCAweGQ4LCAweGViLCAweGJlLCAweGY4LAotKyAg ICAweGRmLCAweDg4LCAweDZhLCAweDg5LCAweGQ2LCAweDA1LCAweGQ4LCAweDlkCi0rfTsKLSsK LStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZf cmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4NDMsIDB4MTIsIDB4MmEsIDB4MmMsIDB4NDAsIDB4 NTMsIDB4MmUsIDB4N2MsIDB4NjYsIDB4MzQsIDB4YWMsIDB4YzMsCi0rICAgIDB4NDMsIDB4ZTMs IDB4ZTAsIDB4NmEsIDB4ZmMsIDB4ZmEsIDB4ZWEsIDB4ODcsIDB4MjEsIDB4MWYsIDB4ZTIsIDB4 MjYsCi0rICAgIDB4YzQsIDB4ZjksIDB4MDksIDB4OWEsIDB4MGQsIDB4NmUsIDB4N2YsIDB4ZTAK LSt9OwotKwotKy8qIEhNQUMgU0hBLTM4NCBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfZW50cm9weWlucHV0W10gPSB7Ci0r ICAgIDB4NjksIDB4ODEsIDB4OTgsIDB4ODgsIDB4NDQsIDB4ZjUsIDB4ZDYsIDB4MmUsIDB4MDAs IDB4MDgsIDB4M2IsIDB4YzUsCi0rICAgIDB4ZmIsIDB4ZDcsIDB4OGUsIDB4NmYsIDB4MjMsIDB4 ZjgsIDB4NmQsIDB4MDksIDB4ZDYsIDB4ODUsIDB4NDksIDB4ZDEsCi0rICAgIDB4ZjgsIDB4NmQs IDB4YTQsIDB4NTgsIDB4NTQsIDB4ZmQsIDB4ODgsIDB4YTkKLSt9OwotKwotK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9wcl9ub25jZVtdID0g ewotKyAgICAweDZlLCAweDM4LCAweDgxLCAweGNhLCAweGI3LCAweGU4LCAweDZlLCAweDY2LCAw eDQ5LCAweDhhLCAweGIyLCAweDU5LAotKyAgICAweGVlLCAweDE2LCAweGM5LCAweGRlCi0rfTsK LSsKLStfX2ZpcHNfY29uc3RzZWcKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGEzODRfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4ZmUsIDB4NGMs IDB4ZDksIDB4ZjQsIDB4NzgsIDB4M2IsIDB4MDgsIDB4NDEsIDB4OGQsIDB4OGYsIDB4NTUsIDB4 YzQsCi0rICAgIDB4NDMsIDB4NTYsIDB4YjYsIDB4MTIsIDB4MzYsIDB4NmIsIDB4MzAsIDB4Yjcs IDB4NWUsIDB4ZTEsIDB4YjksIDB4NDcsCi0rICAgIDB4MDQsIDB4YjEsIDB4NGUsIDB4YTksIDB4 MDAsIDB4YTEsIDB4NTIsIDB4YTEKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsg ICAgMHg4OSwgMHhlOSwgMHhjYywgMHg4ZiwgMHgyNywgMHgzYywgMHgyNiwgMHhkMSwgMHg5NSwg MHhjOCwgMHg3ZCwgMHgwZiwKLSsgICAgMHg1YiwgMHgxYSwgMHhmMCwgMHg3OCwgMHgzOSwgMHg1 NiwgMHg2ZiwgMHhhNCwgMHgyMywgMHhlNywgMHhkMSwgMHhkYSwKLSsgICAgMHg3YywgMHg2Niwg MHgzMywgMHhhMCwgMHg5MCwgMHhjOSwgMHg5MiwgMHg4OAotK307Ci0rCi0rX19maXBzX2NvbnN0 c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3ByX2VudHJvcHlpbnB1 dHByW10gPSB7Ci0rICAgIDB4YmUsIDB4M2QsIDB4N2MsIDB4MGQsIDB4Y2EsIDB4ZGEsIDB4N2Ms IDB4NDksIDB4YjgsIDB4MTIsIDB4MzYsIDB4YzAsCi0rICAgIDB4ZGIsIDB4YWQsIDB4MzUsIDB4 YTgsIDB4YzcsIDB4MGIsIDB4MmEsIDB4MmMsIDB4NjksIDB4NmQsIDB4MjUsIDB4NTYsCi0rICAg IDB4NjMsIDB4ODIsIDB4MTEsIDB4M2UsIDB4YTcsIDB4MzMsIDB4NzAsIDB4NzIKLSt9OwotKwot K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9w cl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4ODIsIDB4M2QsIDB4ZTYsIDB4NTQsIDB4 ODAsIDB4NDIsIDB4ZjgsIDB4YmEsIDB4OTAsIDB4NGYsIDB4MDYsIDB4YTYsCi0rICAgIDB4ZDIs IDB4N2YsIDB4YmYsIDB4NzksIDB4N2MsIDB4MTIsIDB4N2QsIDB4YTYsIDB4YTIsIDB4NjYsIDB4 ZTgsIDB4YTYsCi0rICAgIDB4YzAsIDB4ZDYsIDB4NGEsIDB4NTUsIDB4YmYsIDB4ZDgsIDB4MGEs IDB4YzUsIDB4ZjgsIDB4MDMsIDB4ODgsIDB4ZGQsCi0rICAgIDB4OGUsIDB4ODcsIDB4ZDEsIDB4 NWEsIDB4NDgsIDB4MjYsIDB4NzIsIDB4MmEsIDB4OGUsIDB4Y2YsIDB4ZWUsIDB4YmEKLSt9Owot KwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4 NF9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7Ci0rICAgIDB4OGYsIDB4ZmYsIDB4ZDksIDB4ODQs IDB4YmIsIDB4ODUsIDB4M2EsIDB4NjYsIDB4YTEsIDB4MjEsIDB4Y2UsIDB4YjIsCi0rICAgIDB4 M2EsIDB4M2EsIDB4MTcsIDB4MjIsIDB4MTksIDB4YWUsIDB4YzcsIDB4YjYsIDB4NjMsIDB4ODEs IDB4ZDUsIDB4ZmYsCi0rICAgIDB4MGQsIDB4YzgsIDB4ZTEsIDB4YWYsIDB4NTcsIDB4ZDIsIDB4 Y2IsIDB4NjAKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTM4NF9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKLSsgICAgMHhkNywgMHhm YiwgMHhjOSwgMHhlOCwgMHhlMiwgMHhmMiwgMHhhYSwgMHg0YywgMHhiOCwgMHg1MSwgMHgyZiwg MHhlMSwKLSsgICAgMHgyMiwgMHhiYSwgMHhmMywgMHhkYSwgMHgwYSwgMHgxOSwgMHg3NiwgMHg3 MSwgMHg1NywgMHhiMiwgMHgxZCwgMHg5NCwKLSsgICAgMHgwOSwgMHg2OSwgMHg2YywgMHhkMywg MHg5NywgMHg1MSwgMHg4MSwgMHg4NwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3ByX3JldHVybmVkYml0c1tdID0gewotKyAg ICAweGU2LCAweDE5LCAweDI4LCAweGE4LCAweDIxLCAweGNlLCAweDVlLCAweGRiLCAweDI0LCAw eDc5LCAweDhjLCAweDc2LAotKyAgICAweDVkLCAweDczLCAweGIyLCAweGRmLCAweGFjLCAweGVm LCAweDg1LCAweGE3LCAweDNiLCAweDE5LCAweDA5LCAweDhiLAotKyAgICAweDdmLCAweDk4LCAw eDI4LCAweGE5LCAweDkzLCAweGQ4LCAweDdhLCAweGFkLCAweDU1LCAweDhiLCAweDI0LCAweDlk LAotKyAgICAweGU2LCAweDk4LCAweGZlLCAweDQ3LCAweGQ1LCAweDQ4LCAweGMxLCAweDIzLCAw eGQ4LCAweDFkLCAweDYyLCAweDc1Ci0rfTsKLSsKLSsvKiBITUFDIFNIQS0zODQgTm8gUFIgICov Ci0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0 X2VudHJvcHlpbnB1dFtdID0gewotKyAgICAweGMzLCAweDU2LCAweDJiLCAweDFkLCAweGMyLCAw eGJiLCAweGE4LCAweGYwLCAweGFlLCAweDFiLCAweDBkLCAweGQzLAotKyAgICAweDVhLCAweDZj LCAweGRhLCAweDU3LCAweDhlLCAweGE1LCAweDhhLCAweDBkLCAweDZjLCAweDRiLCAweDE4LCAw eGIxLAotKyAgICAweDA0LCAweDNlLCAweGI0LCAweDk5LCAweDM1LCAweGM0LCAweGMwLCAweDVm Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGEzODRfbm9uY2VbXSA9IHsKLSsgICAgMHhjNSwgMHg0OSwgMHgxZSwgMHg2NiwgMHgyNywg MHg5MiwgMHhiZSwgMHhlYywgMHhiNSwgMHgxZSwgMHg0YiwgMHhiMSwKLSsgICAgMHgzOCwgMHhl MywgMHhlYiwgMHg2MgotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0gewot KyAgICAweGJlLCAweGU3LCAweDZiLCAweDU3LCAweGRlLCAweDg4LCAweDExLCAweDk2LCAweDli LCAweDZlLCAweGVhLCAweGU1LAotKyAgICAweDYzLCAweDgzLCAweDRjLCAweGI2LCAweDhkLCAw eDY2LCAweGFhLCAweDFmLCAweDhiLCAweDU0LCAweGU3LCAweDYyLAotKyAgICAweDZkLCAweDVh LCAweGZjLCAweGJmLCAweDk3LCAweGJhLCAweGNkLCAweDc3Ci0rfTsKLSsKLStfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfYWRkaXRpb25hbGlu cHV0W10gPSB7Ci0rICAgIDB4ZTUsIDB4MjgsIDB4NWYsIDB4NDMsIDB4ZjUsIDB4ODMsIDB4NmUs IDB4MGEsIDB4ODMsIDB4NWMsIDB4ZTMsIDB4ODEsCi0rICAgIDB4MDMsIDB4ZjIsIDB4ZjgsIDB4 NzgsIDB4MDAsIDB4N2MsIDB4OTUsIDB4ODcsIDB4MTYsIDB4ZDYsIDB4NmMsIDB4NTgsCi0rICAg IDB4MzMsIDB4NmMsIDB4NTMsIDB4MzUsIDB4MGQsIDB4NjYsIDB4ZTMsIDB4Y2UKLSt9OwotKwot K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9p bnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4ZTIsIDB4MWYsIDB4ZjMsIDB4ZGEsIDB4MGQs IDB4MTksIDB4OTksIDB4ODcsIDB4YzQsIDB4OTAsIDB4YTIsIDB4MzEsCi0rICAgIDB4Y2EsIDB4 MmEsIDB4ODksIDB4NTgsIDB4NDMsIDB4NDQsIDB4YjgsIDB4ZGUsIDB4Y2YsIDB4YTQsIDB4YmUs IDB4M2IsCi0rICAgIDB4NTMsIDB4MjYsIDB4MjIsIDB4MzEsIDB4NzYsIDB4NDEsIDB4MjIsIDB4 YjUsIDB4YTgsIDB4NzAsIDB4MmYsIDB4NGIsCi0rICAgIDB4NjQsIDB4OTUsIDB4NGQsIDB4NDgs IDB4OTYsIDB4MzUsIDB4ZTYsIDB4YmQsIDB4M2MsIDB4MzQsIDB4ZGIsIDB4MWIKLSt9OwotKwot K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9l bnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHg3NywgMHg2MSwgMHhiYSwgMHhiYywgMHhm MiwgMHhjMSwgMHhmMywgMHg0YiwgMHg4NiwgMHg2NSwgMHhmZCwgMHg0OCwKLSsgICAgMHgwZSwg MHgzYywgMHgwMiwgMHg1ZSwgMHhhMiwgMHg3YSwgMHg2YiwgMHg3YywgMHhlZCwgMHgyMSwgMHg1 ZSwgMHhmOSwKLSsgICAgMHhjZCwgMHhjZCwgMHg3NywgMHgwNywgMHgyYiwgMHhiZSwgMHhjNSwg MHg1YwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGhtYWNfc2hhMzg0X2FkZGl0aW9uYWxpbnB1dHJlc2VlZFtdID0gewotKyAgICAweDE4 LCAweDI0LCAweDVmLCAweGM2LCAweDg0LCAweGQxLCAweDY3LCAweGMzLCAweDlhLCAweDExLCAw eGE1LCAweDhjLAotKyAgICAweDA3LCAweDM5LCAweDIxLCAweDgzLCAweDRkLCAweDA0LCAweGM0 LCAweDZhLCAweDI4LCAweDE5LCAweGNmLCAweDkyLAotKyAgICAweDIxLCAweGQ5LCAweDllLCAw eDQxLCAweDcyLCAweDZjLCAweDllLCAweDYzCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfYWRkaXRpb25hbGlucHV0MltdID0g ewotKyAgICAweDk2LCAweDY3LCAweDQxLCAweDI4LCAweDliLCAweGI3LCAweDkyLCAweDhkLCAw eDY0LCAweDNiLCAweGU0LCAweGNmLAotKyAgICAweDdlLCAweGFhLCAweDFlLCAweGIxLCAweDRi LCAweDFkLCAweDA5LCAweDU2LCAweDY3LCAweDljLCAweGM2LCAweDZkLAotKyAgICAweDNiLCAw eGU4LCAweDkxLCAweDlkLCAweGUxLCAweDhhLCAweGI3LCAweDMyCi0rfTsKLSsKLStfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcmV0dXJuZWRi aXRzW10gPSB7Ci0rICAgIDB4ZTMsIDB4NTksIDB4NjEsIDB4MzgsIDB4OTIsIDB4ZWMsIDB4ZTIs IDB4M2MsIDB4ZmYsIDB4YjcsIDB4ZGIsIDB4MTksCi0rICAgIDB4MGYsIDB4NWIsIDB4OTMsIDB4 NjgsIDB4MGQsIDB4YTQsIDB4OTQsIDB4NDAsIDB4NzIsIDB4MGIsIDB4ZTAsIDB4ZWQsCi0rICAg IDB4NGQsIDB4Y2QsIDB4NjgsIDB4YTAsIDB4MWUsIDB4ZmUsIDB4NjcsIDB4YjIsIDB4ZmEsIDB4 MjEsIDB4NTYsIDB4NzQsCi0rICAgIDB4YTQsIDB4YWQsIDB4Y2YsIDB4YjcsIDB4NjAsIDB4NjYs IDB4MmUsIDB4NDAsIDB4ZGUsIDB4ODIsIDB4Y2EsIDB4ZmIKLSt9OwotKwotKy8qIEhNQUMgU0hB LTUxMiBQUiAgKi8KLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGE1MTJfcHJfZW50cm9weWlucHV0W10gPSB7Ci0rICAgIDB4YWEsIDB4OWUsIDB4NDUs IDB4NjcsIDB4MGUsIDB4MDAsIDB4MmEsIDB4NjcsIDB4OTgsIDB4ZDYsIDB4ZGEsIDB4MGIsCi0r ICAgIDB4MGYsIDB4MTcsIDB4N2UsIDB4YWMsIDB4ZmQsIDB4MjcsIDB4YzQsIDB4Y2EsIDB4ODQs IDB4ZGYsIDB4ZGUsIDB4YmEsCi0rICAgIDB4ODUsIDB4ZDksIDB4YmUsIDB4OGYsIDB4ZjMsIDB4 ZmYsIDB4OTEsIDB4NGQKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9ub25jZVtdID0gewotKyAgICAweDhjLCAweDQ5LCAw eDJmLCAweDU4LCAweDFlLCAweDdhLCAweGRhLCAweDRiLCAweDdlLCAweDhhLCAweDMwLCAweDdi LAotKyAgICAweDg2LCAweGVhLCAweGFmLCAweGEyCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcK LSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJfcGVyc29uYWxp emF0aW9uc3RyaW5nW10gPSB7Ci0rICAgIDB4NzEsIDB4ZTEsIDB4YmIsIDB4YWQsIDB4YTcsIDB4 NGIsIDB4MmUsIDB4MzEsIDB4M2IsIDB4MGIsIDB4ZWMsIDB4MjQsCi0rICAgIDB4OTksIDB4Mzgs IDB4YmMsIDB4YWEsIDB4MDUsIDB4NGMsIDB4NDYsIDB4NDQsIDB4ZmEsIDB4YWQsIDB4OGUsIDB4 MDIsCi0rICAgIDB4YzEsIDB4N2UsIDB4YWQsIDB4ZWMsIDB4NTQsIDB4YTYsIDB4ZDAsIDB4YWQK LSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFj X3NoYTUxMl9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKLSsgICAgMHgzZCwgMHg2ZSwgMHhhNiwg MHhhOCwgMHgyOSwgMHgyYSwgMHhiMiwgMHhmNSwgMHg5OCwgMHg0MiwgMHhlNCwgMHg5MiwKLSsg ICAgMHg3OCwgMHgyMiwgMHg2NywgMHhmZCwgMHgxYiwgMHgxNSwgMHgxZSwgMHgyOSwgMHhhYSwg MHg3MSwgMHgzYywgMHgzYywKLSsgICAgMHhlNywgMHgwNSwgMHgyMCwgMHhhOSwgMHgyOSwgMHhj NiwgMHg3NSwgMHg3MQotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhNTEyX3ByX2VudHJvcHlpbnB1dHByW10gPSB7Ci0rICAgIDB4YWIs IDB4YjksIDB4MTYsIDB4ZDgsIDB4NTUsIDB4MzUsIDB4NTQsIDB4YjcsIDB4OTcsIDB4M2YsIDB4 OTQsIDB4YmMsCi0rICAgIDB4MmYsIDB4N2MsIDB4NzAsIDB4YzcsIDB4ZDAsIDB4ZWQsIDB4Yjcs IDB4NGIsIDB4ZjcsIDB4ZjYsIDB4NmMsIDB4MDMsCi0rICAgIDB4MGMsIDB4YjAsIDB4MDMsIDB4 ZDgsIDB4YmIsIDB4NzEsIDB4ZDksIDB4MTAKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9pbnRfcmV0dXJuZWRiaXRzW10g PSB7Ci0rICAgIDB4OGUsIDB4ZDMsIDB4ZmQsIDB4NTIsIDB4OWUsIDB4ODMsIDB4MDgsIDB4NDks IDB4MTgsIDB4NmUsIDB4MjMsIDB4NTYsCi0rICAgIDB4NWMsIDB4NDUsIDB4OTMsIDB4MzQsIDB4 MDUsIDB4ZTIsIDB4OTgsIDB4OGYsIDB4MGMsIDB4ZDQsIDB4MzIsIDB4MGMsCi0rICAgIDB4ZmQs IDB4ZGEsIDB4NWYsIDB4OTIsIDB4M2EsIDB4OGMsIDB4ODEsIDB4YmQsIDB4ZjYsIDB4NmMsIDB4 NTUsIDB4ZmQsCi0rICAgIDB4YjgsIDB4MjAsIDB4Y2UsIDB4OGQsIDB4OTcsIDB4MjcsIDB4ZTgs IDB4ZTgsIDB4ZTAsIDB4YjMsIDB4ODUsIDB4NTAsCi0rICAgIDB4YTIsIDB4YzIsIDB4YjIsIDB4 OTUsIDB4MWQsIDB4NDgsIDB4ZDMsIDB4N2IsIDB4NGIsIDB4NzgsIDB4MTMsIDB4MzUsCi0rICAg IDB4MDUsIDB4MTcsIDB4YmUsIDB4MGQKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7 Ci0rICAgIDB4YzMsIDB4ZmMsIDB4OTUsIDB4YWEsIDB4NjksIDB4MDYsIDB4YWUsIDB4NTksIDB4 NDEsIDB4Y2UsIDB4MjYsIDB4MDgsCi0rICAgIDB4MjksIDB4NmQsIDB4NDUsIDB4ZGEsIDB4ZTgs IDB4YjMsIDB4NmMsIDB4OTUsIDB4NjAsIDB4MGYsIDB4NzAsIDB4MmMsCi0rICAgIDB4MTAsIDB4 YmEsIDB4MzgsIDB4OGMsIDB4Y2YsIDB4MjksIDB4OTksIDB4YWEKLSt9OwotKwotK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9lbnRyb3B5 aW5wdXRwcjJbXSA9IHsKLSsgICAgMHgzYiwgMHg5YSwgMHgyNSwgMHhjZSwgMHhkNywgMHhmOSwg MHg1YywgMHhkMSwgMHgzYSwgMHgzZSwgMHhhYSwgMHg3MSwKLSsgICAgMHgxNCwgMHgzZSwgMHgx OSwgMHhlOCwgMHhjZSwgMHhlNiwgMHhmZSwgMHg1MSwgMHg4NCwgMHhlOSwgMHgxYiwgMHhmZSwK LSsgICAgMHgzZiwgMHhhNywgMHhmMiwgMHhmZCwgMHg3NiwgMHg1ZiwgMHg2YSwgMHhlNwotK307 Ci0rCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hh NTEyX3ByX3JldHVybmVkYml0c1tdID0gewotKyAgICAweGI3LCAweDgyLCAweGE5LCAweDU3LCAw eDgxLCAweDY3LCAweDUzLCAweGI1LCAweGExLCAweGU5LCAweDNkLCAweDM1LAotKyAgICAweGY5 LCAweGU0LCAweDk3LCAweGJlLCAweGE2LCAweGNhLCAweGYxLCAweDAxLCAweDEzLCAweDA5LCAw eGU3LCAweDIxLAotKyAgICAweGMwLCAweGVkLCAweDkzLCAweDVkLCAweDRiLCAweGY0LCAweGVi LCAweDhkLCAweDUzLCAweDI1LCAweDhhLCAweGM0LAotKyAgICAweGIxLCAweDZmLCAweDZlLCAw eDM3LCAweGNkLCAweDJlLCAweGFjLCAweDM5LCAweGIyLCAweGI2LCAweDk5LCAweGEzLAotKyAg ICAweDgyLCAweDAwLCAweGIwLCAweDIxLCAweGYwLCAweGM3LCAweDJmLCAweDRjLCAweDczLCAw eDkyLCAweGZkLCAweDAwLAotKyAgICAweGI2LCAweGFmLCAweGJjLCAweGQzCi0rfTsKLSsKLSsv KiBITUFDIFNIQS01MTIgTm8gUFIgICovCi0rX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX2VudHJvcHlpbnB1dFtdID0gewotKyAgICAweDZlLCAw eDg1LCAweGU2LCAweDI1LCAweDk2LCAweDI5LCAweGE3LCAweDUyLCAweDViLCAweDYwLCAweGJh LCAweGFhLAotKyAgICAweGRlLCAweGRiLCAweDM2LCAweDBhLCAweDUxLCAweDlhLCAweDE1LCAw eGFlLCAweDZlLCAweDE4LCAweGQzLCAweGZlLAotKyAgICAweDM5LCAweGI5LCAweDRhLCAweDk2 LCAweGY4LCAweDc3LCAweGNiLCAweDk1Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfbm9uY2VbXSA9IHsKLSsgICAgMHhlMCwg MHhhNiwgMHg1ZCwgMHgwOCwgMHhjMywgMHg3YywgMHhhZSwgMHgyNSwgMHgyZSwgMHg4MCwgMHhk MSwgMHgzZSwKLSsgICAgMHhkOSwgMHhhZiwgMHg0MywgMHgzYwotK307Ci0rCi0rX19maXBzX2Nv bnN0c2VnCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX3BlcnNv bmFsaXphdGlvbnN0cmluZ1tdID0gewotKyAgICAweDUzLCAweDk5LCAweDUyLCAweDVmLCAweDEx LCAweGE5LCAweDY0LCAweDY2LCAweDIwLCAweDVlLCAweDFiLCAweDVmLAotKyAgICAweDQyLCAw eGIzLCAweGY0LCAweGRhLCAweGVkLCAweGJiLCAweDYzLCAweGMxLCAweDIzLCAweGFmLCAweGQw LCAweDAxLAotKyAgICAweDkwLCAweDNiLCAweGQwLCAweDc4LCAweGU0LCAweDBiLCAweGE3LCAw eDIwCi0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGE1MTJfYWRkaXRpb25hbGlucHV0W10gPSB7Ci0rICAgIDB4ODUsIDB4OTAsIDB4ODAs IDB4ZDMsIDB4OTgsIDB4ZjEsIDB4NTMsIDB4NmQsIDB4NjgsIDB4MTUsIDB4OGYsIDB4ZTUsCi0r ICAgIDB4NjAsIDB4M2YsIDB4MTcsIDB4MjksIDB4NTUsIDB4OGQsIDB4MzMsIDB4YjEsIDB4NDUs IDB4NjQsIDB4NjQsIDB4OGQsCi0rICAgIDB4NTAsIDB4MjEsIDB4ODksIDB4YWUsIDB4ZjYsIDB4 ZmQsIDB4MzIsIDB4NzMKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBobWFjX3NoYTUxMl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4Mjgs IDB4NTYsIDB4MzAsIDB4NmYsIDB4ZjQsIDB4YTEsIDB4NDgsIDB4ZTAsIDB4YzksIDB4ZjUsIDB4 NzUsIDB4OTAsCi0rICAgIDB4Y2MsIDB4ZmIsIDB4ZGYsIDB4ZGYsIDB4NzEsIDB4M2QsIDB4MGEs IDB4OWEsIDB4MDMsIDB4NjUsIDB4M2IsIDB4MTgsCi0rICAgIDB4NjEsIDB4ZTMsIDB4ZDEsIDB4 ZGEsIDB4Y2MsIDB4NGEsIDB4ZmUsIDB4NTUsIDB4MzgsIDB4ZjgsIDB4MjEsIDB4NmIsCi0rICAg IDB4ZmEsIDB4MTgsIDB4MDEsIDB4NDIsIDB4MzksIDB4MmYsIDB4OTksIDB4NTMsIDB4MzgsIDB4 MTUsIDB4ODIsIDB4MzQsCi0rICAgIDB4YzUsIDB4OTMsIDB4OTIsIDB4YmMsIDB4NGQsIDB4NzUs IDB4MWEsIDB4NWYsIDB4MjEsIDB4MjcsIDB4Y2MsIDB4YTEsCi0rICAgIDB4YjEsIDB4NTcsIDB4 NjksIDB4ZTgKLSt9OwotKwotK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTUxMl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKLSsgICAgMHg4YywgMHg1 MiwgMHg3ZSwgMHg3NywgMHg3MiwgMHgzZiwgMHhhMywgMHgwNCwgMHg5NywgMHgxMCwgMHg5Yiwg MHg0MSwKLSsgICAgMHhiZCwgMHhlOCwgMHhmZiwgMHg4OSwgMHhlZCwgMHg4MCwgMHhlMywgMHhi ZCwgMHhhYSwgMHgxMiwgMHgyZCwgMHhjYSwKLSsgICAgMHg3NSwgMHg4MiwgMHgzNiwgMHg3Nywg MHg4OCwgMHhjZCwgMHhhNiwgMHg3MwotK307Ci0rCi0rX19maXBzX2NvbnN0c2VnCi0rICAgIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX2FkZGl0aW9uYWxpbnB1dHJlc2Vl ZFtdID0gewotKyAgICAweDdlLCAweDMyLCAweGUzLCAweDY5LCAweDY5LCAweDA3LCAweDM0LCAw eGEyLCAweDE2LCAweGEyLCAweDVkLCAweDFhLAotKyAgICAweDEwLCAweDkxLCAweGQzLCAweGUy LCAweDIxLCAweGEyLCAweGEzLCAweGRkLCAweGNkLCAweDBjLCAweDA5LCAweDg2LAotKyAgICAw eDExLCAweGUxLCAweDUwLCAweGZmLCAweDVjLCAweGI3LCAweGViLCAweDVjCi0rfTsKLSsKLStf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfYWRk aXRpb25hbGlucHV0MltdID0gewotKyAgICAweDdmLCAweDc4LCAweDY2LCAweGQ4LCAweGZiLCAw eDY3LCAweGNmLCAweDhkLCAweDhjLCAweDA4LCAweDMwLCAweGE1LAotKyAgICAweGY4LCAweDdk LCAweGNmLCAweDQ0LCAweDU5LCAweGNlLCAweGY4LCAweGRmLCAweDU4LCAweGQzLCAweDYwLCAw eGNiLAotKyAgICAweGE4LCAweDYwLCAweGI5LCAweDA3LCAweGM0LCAweGIxLCAweDk1LCAweDQ4 Ci0rfTsKLSsKLStfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGE1MTJfcmV0dXJuZWRiaXRzW10gPSB7Ci0rICAgIDB4ZGYsIDB4YTcsIDB4MzYsIDB4ZDQs IDB4ZGMsIDB4NWQsIDB4NGQsIDB4MzEsIDB4YWQsIDB4NjksIDB4NDYsIDB4OWYsCi0rICAgIDB4 ZjEsIDB4N2MsIDB4ZDcsIDB4M2IsIDB4NGYsIDB4NTUsIDB4ZjIsIDB4ZDcsIDB4YjksIDB4OWQs IDB4YWQsIDB4N2EsCi0rICAgIDB4NzksIDB4MDgsIDB4NTksIDB4YTUsIDB4ZGMsIDB4NzQsIDB4 ZjUsIDB4OWIsIDB4NzMsIDB4ZDIsIDB4MTMsIDB4MjUsCi0rICAgIDB4MGIsIDB4ODEsIDB4MDgs IDB4MDgsIDB4MjUsIDB4ZmIsIDB4MzksIDB4ZjIsIDB4ZjAsIDB4YTMsIDB4YTQsIDB4OGQsCi0r ICAgIDB4ZWYsIDB4MDUsIDB4OWUsIDB4YjgsIDB4YzcsIDB4NTIsIDB4ZTQsIDB4MGUsIDB4NDIs IDB4YWEsIDB4N2MsIDB4NzksCi0rICAgIDB4YzIsIDB4ZDYsIDB4ZmQsIDB4YTUKLSt9OwotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19kc2Ffc2VsZnRlc3QuYy5maXBz IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZHNhX3NlbGZ0ZXN0LmMKLS0tLSBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2RzYV9zZWxmdGVzdC5jLmZpcHMJMjAxNS0wNC0y MiAxNjowODo0MC4yOTcyNDU3NzMgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlw cy9maXBzX2RzYV9zZWxmdGVzdC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk3MjQ1NzczICswMjAw Ci1AQCAtMCwwICsxLDE5MiBAQAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAy MDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICog UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv ciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0 Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICog ICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo IHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBt YXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3 YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJU aGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFBy b2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3 Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIg YW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNl IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAot KyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwg cGxlYXNlIGNvbnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsg KiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxl ZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFt ZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNT TCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRz b2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50Ogot KyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBP cGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0 dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE RUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NF RCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU SEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF TlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUg TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFM LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsg KiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW SUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U RVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkg V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAq IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpbmNs dWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSsjaW5jbHVkZSA8 b3BlbnNzbC9kc2EuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUgPG9w ZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5z c2wvYm4uaD4KLSsjaW5jbHVkZSAiZmlwc19sb2NsLmgiCi0rCi0rI2lmZGVmIE9QRU5TU0xfRklQ UwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRzYV90ZXN0XzIwNDhfcFtdID0gewot KyAgICAweGE4LCAweDUzLCAweDc4LCAweGQ4LCAweGZkLCAweDNmLCAweDhkLCAweDcyLCAweGVj LCAweDc0LCAweDE4LCAweDA4LAotKyAgICAweDBkLCAweGEyLCAweDEzLCAweDE3LCAweGU0LCAw eDNlLCAweGM0LCAweGI2LCAweDJiLCAweGE4LCAweGM4LCAweDYyLAotKyAgICAweDNiLCAweDdl LCAweDRkLCAweDA0LCAweDQ0LCAweDFkLCAweGQxLCAweGEwLCAweDY1LCAweDg2LCAweDYyLCAw eDU5LAotKyAgICAweDY0LCAweDkzLCAweGNhLCAweDhlLCAweDllLCAweDhmLCAweGJiLCAweDdl LCAweDM0LCAweGFhLCAweGRkLCAweGI2LAotKyAgICAweDJlLCAweDVkLCAweDY3LCAweGI2LCAw eGQwLCAweDlhLCAweDZlLCAweDYxLCAweGI3LCAweDY5LCAweGU3LCAweGMzLAotKyAgICAweDUy LCAweGFhLCAweDJiLCAweDEwLCAweGUyLCAweDBjLCAweGEwLCAweDYzLCAweDY5LCAweDYzLCAw eGI1LCAweDUyLAotKyAgICAweDNlLCAweDg2LCAweDQ3LCAweDBkLCAweGVjLCAweGJiLCAweGVk LCAweGEwLCAweDI3LCAweGU3LCAweDk3LCAweGU3LAotKyAgICAweGI2LCAweDc2LCAweDM1LCAw eGQ0LCAweGQ0LCAweDljLCAweDMwLCAweDcwLCAweDBlLCAweDc0LCAweGFmLCAweDhhLAotKyAg ICAweDBmLCAweGYxLCAweDU2LCAweGE4LCAweDAxLCAweGFmLCAweDU3LCAweGEyLCAweDZlLCAw eDcwLCAweDc4LCAweGYxLAotKyAgICAweGQ4LCAweDJmLCAweDc0LCAweDkwLCAweDhlLCAweGNi LCAweDZkLCAweDA3LCAweGU3LCAweDBiLCAweDM1LCAweDAzLAotKyAgICAweGVlLCAweGQ5LCAw eDRmLCAweGEzLCAweDJjLCAweGYxLCAweDdhLCAweDdmLCAweGMzLCAweGQ2LCAweGNmLCAweDQw LAotKyAgICAweGRjLCAweDdiLCAweDAwLCAweDgzLCAweDBlLCAweDZhLCAweDI1LCAweDY2LCAw eGRjLCAweDA3LCAweDNlLCAweDM0LAotKyAgICAweDMzLCAweDEyLCAweDUxLCAweDdjLCAweDZh LCAweGE1LCAweDE1LCAweDJiLCAweDRiLCAweGZlLCAweGNkLCAweDJlLAotKyAgICAweDU1LCAw eDFmLCAweGVlLCAweDM0LCAweDYzLCAweDE4LCAweGExLCAweDUzLCAweDQyLCAweDNjLCAweDk5 LCAweDZiLAotKyAgICAweDBkLCAweDVkLCAweGNiLCAweDkxLCAweDAyLCAweGFlLCAweGRkLCAw eDM4LCAweDc5LCAweDg2LCAweDE2LCAweGYxLAotKyAgICAweGYxLCAweGUwLCAweGQ2LCAweGM0 LCAweDAzLCAweDUyLCAweDViLCAweDFmLCAweDliLCAweDNkLCAweDRkLCAweGM3LAotKyAgICAw eDY2LCAweGRlLCAweDJkLCAweGZjLCAweDRhLCAweDU2LCAweGQ3LCAweGI4LCAweGJhLCAweDU5 LCAweDYzLCAweGQ2LAotKyAgICAweDBmLCAweDNlLCAweDE2LCAweDMxLCAweDg4LCAweDcwLCAw eGFkLCAweDQzLCAweDY5LCAweDUyLCAweGU1LCAweDU3LAotKyAgICAweDY1LCAweDM3LCAweDRl LCAweGFiLCAweDg1LCAweGU4LCAweGVjLCAweDE3LCAweGQ2LCAweGI5LCAweGE0LCAweDU0LAot KyAgICAweDdiLCAweDliLCAweDVmLCAweDI3LCAweDUyLCAweGYzLCAweDEwLCAweDViLCAweGU4 LCAweDA5LCAweGIyLCAweDNhLAotKyAgICAweDJjLCAweDhkLCAweDc0LCAweDY5LCAweGRiLCAw eDAyLCAweGUyLCAweDRkLCAweDU5LCAweDIzLCAweDk0LCAweGE3LAotKyAgICAweGRiLCAweGEw LCAweDY5LCAweGU5Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkc2FfdGVz dF8yMDQ4X3FbXSA9IHsKLSsgICAgMHhkMiwgMHg3NywgMHgwNCwgMHg0ZSwgMHg1MCwgMHhmNSwg MHhhNCwgMHhlMywgMHhmNSwgMHgxMCwgMHhhNSwgMHgwYSwKLSsgICAgMHgwYiwgMHg4NCwgMHhm ZCwgMHhmZiwgMHhiYywgMHhhMCwgMHg0NywgMHhlZCwgMHgyNywgMHg2MCwgMHgyMCwgMHg1NiwK LSsgICAgMHg3NCwgMHg0MSwgMHhhMCwgMHhhNQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgZHNhX3Rlc3RfMjA0OF9nW10gPSB7Ci0rICAgIDB4MTMsIDB4ZDcsIDB4NTQsIDB4 ZTIsIDB4MWYsIDB4ZDIsIDB4NDEsIDB4NjUsIDB4NWQsIDB4YTgsIDB4OTEsIDB4YzUsCi0rICAg IDB4MjIsIDB4YTYsIDB4NWEsIDB4NzIsIDB4YTgsIDB4OWIsIDB4ZGMsIDB4NjQsIDB4ZWMsIDB4 OWIsIDB4NTQsIDB4YTgsCi0rICAgIDB4MjEsIDB4ZWQsIDB4NGEsIDB4ODksIDB4OGIsIDB4NDks IDB4MGUsIDB4MGMsIDB4NGYsIDB4Y2IsIDB4NzIsIDB4MTksCi0rICAgIDB4MmEsIDB4NGEsIDB4 MjAsIDB4ZjUsIDB4NDEsIDB4ZjMsIDB4ZjIsIDB4OTIsIDB4NTMsIDB4OTksIDB4ZjAsIDB4YmEs Ci0rICAgIDB4ZWMsIDB4ZjksIDB4MjksIDB4YWEsIDB4ZmIsIDB4ZjcsIDB4OWQsIDB4ZmUsIDB4 NDMsIDB4MzIsIDB4MzksIDB4M2IsCi0rICAgIDB4MzIsIDB4Y2QsIDB4MmUsIDB4MmYsIDB4Y2Ys IDB4MjcsIDB4MmYsIDB4MzIsIDB4YTYsIDB4MjcsIDB4NDMsIDB4NGEsCi0rICAgIDB4MGQsIDB4 ZjIsIDB4NDIsIDB4YjcsIDB4NWIsIDB4NDEsIDB4NGQsIDB4ZjMsIDB4NzIsIDB4MTIsIDB4MWUs IDB4NTMsCi0rICAgIDB4YTUsIDB4NTMsIDB4ZjIsIDB4MjIsIDB4ZjgsIDB4MzYsIDB4YjAsIDB4 MDAsIDB4ZjAsIDB4MTYsIDB4NDgsIDB4NWIsCi0rICAgIDB4NmIsIDB4ZDAsIDB4ODksIDB4ODQs IDB4NTEsIDB4ODAsIDB4MWQsIDB4Y2QsIDB4OGQsIDB4ZTYsIDB4NGMsIDB4ZDUsCi0rICAgIDB4 MzYsIDB4NTYsIDB4OTYsIDB4ZmYsIDB4YzUsIDB4MzIsIDB4ZDUsIDB4MjgsIDB4YzUsIDB4MDYs IDB4NjIsIDB4MGEsCi0rICAgIDB4OTQsIDB4MmEsIDB4MDMsIDB4MDUsIDB4MDQsIDB4NmQsIDB4 OGYsIDB4MTgsIDB4NzYsIDB4MzQsIDB4MWYsIDB4MWUsCi0rICAgIDB4NTcsIDB4MGIsIDB4YzMs IDB4OTcsIDB4NGIsIDB4YTYsIDB4YjksIDB4YTQsIDB4MzgsIDB4ZTksIDB4NzAsIDB4MjMsCi0r ICAgIDB4MDIsIDB4YTIsIDB4ZTYsIDB4ZTYsIDB4N2IsIDB4ZmQsIDB4MDYsIDB4ZDMsIDB4MmIs IDB4YzYsIDB4NzksIDB4OTYsCi0rICAgIDB4MjIsIDB4NzEsIDB4ZDcsIDB4YjQsIDB4MGMsIDB4 ZDcsIDB4MmYsIDB4MzgsIDB4NmUsIDB4NjQsIDB4ZTAsIDB4ZDcsCi0rICAgIDB4ZWYsIDB4ODYs IDB4Y2EsIDB4OGMsIDB4YTUsIDB4ZDEsIDB4NDIsIDB4MjgsIDB4ZGMsIDB4MmEsIDB4NGYsIDB4 MTYsCi0rICAgIDB4ZTMsIDB4MTgsIDB4OTgsIDB4ODYsIDB4YjUsIDB4OTksIDB4MDYsIDB4NzQs IDB4ZjQsIDB4MjAsIDB4MGYsIDB4M2EsCi0rICAgIDB4NGMsIDB4ZjYsIDB4NWEsIDB4M2YsIDB4 MGQsIDB4ZGIsIDB4YTEsIDB4ZmEsIDB4NjcsIDB4MmQsIDB4ZmYsIDB4MmYsCi0rICAgIDB4NWUs IDB4MTQsIDB4M2QsIDB4MTAsIDB4ZTQsIDB4ZTksIDB4N2EsIDB4ZTgsIDB4NGYsIDB4NmQsIDB4 YTAsIDB4OTUsCi0rICAgIDB4MzUsIDB4ZDUsIDB4YjksIDB4ZGYsIDB4MjUsIDB4OTEsIDB4ODEs IDB4YTcsIDB4OWIsIDB4NjMsIDB4YjAsIDB4NjksCi0rICAgIDB4ZTksIDB4NDksIDB4OTcsIDB4 MmIsIDB4MDIsIDB4YmEsIDB4MzYsIDB4YjMsIDB4NTgsIDB4NmEsIDB4YWIsIDB4N2UsCi0rICAg IDB4NDUsIDB4ZjMsIDB4MjIsIDB4ZjgsIDB4MmUsIDB4NGUsIDB4ODUsIDB4Y2EsIDB4M2EsIDB4 YjgsIDB4NTUsIDB4OTEsCi0rICAgIDB4YjMsIDB4YzIsIDB4YTksIDB4NjYKLSt9OwotKwotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRzYV90ZXN0XzIwNDhfcHViX2tleVtdID0gewotKyAg ICAweDI0LCAweDUyLCAweGYzLCAweGNjLCAweGJlLCAweDllLCAweGQ1LCAweGNhLCAweDdkLCAw eGM3LCAweDRjLCAweDYwLAotKyAgICAweDJiLCAweDk5LCAweDIyLCAweDZlLCAweDhmLCAweDJm LCAweGFiLCAweDM4LCAweGU3LCAweGQ3LCAweGRkLCAweGZiLAotKyAgICAweDc1LCAweDUzLCAw eDliLCAweDE3LCAweDE1LCAweDVlLCAweDlmLCAweGNmLCAweGQxLCAweGFiLCAweGE1LCAweDY0 LAotKyAgICAweGViLCAweDg1LCAweDM1LCAweGQ4LCAweDEyLCAweGM5LCAweGMyLCAweGRjLCAw eGY5LCAweDcyLCAweDg0LCAweDQ0LAotKyAgICAweDFiLCAweGM0LCAweDgyLCAweDI0LCAweDM2 LCAweDI0LCAweGM3LCAweGY0LCAweDU3LCAweDU4LCAweDBjLCAweDFjLAotKyAgICAweDM4LCAw eGE1LCAweDdjLCAweDQ2LCAweGM0LCAweDU3LCAweDM5LCAweDI0LCAweDcwLCAweGVkLCAweGI1 LCAweDJjLAotKyAgICAweGI1LCAweGE2LCAweGUwLCAweDNmLCAweGU2LCAweDI4LCAweDdiLCAw eGI2LCAweGY0LCAweDlhLCAweDQyLCAweGEyLAotKyAgICAweDA2LCAweDVhLCAweDA1LCAweDRm LCAweDAzLCAweDA4LCAweDM5LCAweGRmLCAweDFmLCAweGQzLCAweDE0LCAweDljLAotKyAgICAw eDRjLCAweGEwLCAweDUzLCAweDFkLCAweGQ4LCAweGNhLCAweDhhLCAweGFhLCAweDljLCAweGM3 LCAweDMzLCAweDcxLAotKyAgICAweDkzLCAweDM4LCAweDczLCAweDQ4LCAweDMzLCAweDYxLCAw eDE4LCAweDIyLCAweDQ1LCAweDQ1LCAweGU4LCAweDhjLAotKyAgICAweDgwLCAweGZmLCAweGQ4 LCAweDc2LCAweDVkLCAweDc0LCAweDM2LCAweDAzLCAweDMzLCAweGNjLCAweGFiLCAweDk5LAot KyAgICAweDcyLCAweDc3LCAweDliLCAweDY1LCAweDI1LCAweGE2LCAweDViLCAweGRkLCAweDBk LCAweDEwLCAweGM2LCAweDc1LAotKyAgICAweGMxLCAweDA5LCAweGJiLCAweGQzLCAweGU1LCAw eGJlLCAweDRkLCAweDcyLCAweGVmLCAweDZlLCAweGJhLCAweDZlLAotKyAgICAweDQzLCAweDhk LCAweDUyLCAweDI2LCAweDIzLCAweDdkLCAweGI4LCAweDg4LCAweDM3LCAweDljLCAweDVmLCAw eGNjLAotKyAgICAweDQ3LCAweGEzLCAweDg0LCAweDdmLCAweGY2LCAweDM3LCAweDExLCAweGJh LCAweGVkLCAweDZkLCAweDAzLCAweGFmLAotKyAgICAweGU4LCAweDFlLCAweDY5LCAweDRhLCAw eDQxLCAweDNiLCAweDY4LCAweDBiLCAweGQzLCAweDhhLCAweGI0LCAweDkwLAotKyAgICAweDNm LCAweDgzLCAweDcwLCAweGE3LCAweDA3LCAweGVmLCAweDU1LCAweDFkLCAweDQ5LCAweDQxLCAw eDAyLCAweDZkLAotKyAgICAweDk1LCAweDc5LCAweGQ2LCAweDkxLCAweGRlLCAweDhlLCAweGRh LCAweGExLCAweDYxLCAweDA1LCAweGViLCAweDlkLAotKyAgICAweGJhLCAweDNjLCAweDJmLCAw eDRjLCAweDFiLCAweGVjLCAweDUwLCAweDgyLCAweDc1LCAweGFhLCAweDAyLCAweDA3LAotKyAg ICAweGUyLCAweDUxLCAweGI1LCAweGVjLCAweGNiLCAweDI4LCAweDZhLCAweDRiLCAweDAxLCAw eGQ0LCAweDQ5LCAweGQzLAotKyAgICAweDBhLCAweGNiLCAweDY3LCAweDM3LCAweDE3LCAweGEw LCAweGQyLCAweGZiLCAweDNiLCAweDUwLCAweGM4LCAweDkzLAotKyAgICAweGY3LCAweGRhLCAw eGIxLCAweDRmCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkc2FfdGVzdF8y MDQ4X3ByaXZfa2V5W10gPSB7Ci0rICAgIDB4MGMsIDB4NGIsIDB4MzAsIDB4ODksIDB4ZDEsIDB4 YjgsIDB4NjIsIDB4Y2IsIDB4M2MsIDB4NDMsIDB4NjQsIDB4OTEsCi0rICAgIDB4ZjAsIDB4OTEs IDB4NTQsIDB4NzAsIDB4YzUsIDB4MjcsIDB4OTYsIDB4ZTMsIDB4YWMsIDB4YmUsIDB4ZTgsIDB4 MDAsCi0rICAgIDB4ZWMsIDB4NTUsIDB4ZjYsIDB4Y2MKLSt9OwotKwotK3N0YXRpYyBpbnQgY29y cnVwdF9kc2E7Ci0rCi0rdm9pZCBGSVBTX2NvcnJ1cHRfZHNhKCkKLSt7Ci0rICAgIGNvcnJ1cHRf ZHNhID0gMTsKLSt9Ci0rCi0raW50IEZJUFNfc2VsZnRlc3RfZHNhKCkKLSt7Ci0rICAgIERTQSAq ZHNhID0gTlVMTDsKLSsgICAgRVZQX1BLRVkgKnBrID0gTlVMTDsKLSsgICAgaW50IHJldCA9IDA7 Ci0rCi0rICAgIGRzYSA9IERTQV9uZXcoKTsKLSsKLSsgICAgaWYgKGRzYSA9PSBOVUxMKQotKyAg ICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGZpcHNfbG9hZF9rZXlfY29tcG9uZW50KGRzYSwgcCwg ZHNhX3Rlc3RfMjA0OCk7Ci0rICAgIGZpcHNfbG9hZF9rZXlfY29tcG9uZW50KGRzYSwgcSwgZHNh X3Rlc3RfMjA0OCk7Ci0rICAgIGZpcHNfbG9hZF9rZXlfY29tcG9uZW50KGRzYSwgZywgZHNhX3Rl c3RfMjA0OCk7Ci0rICAgIGZpcHNfbG9hZF9rZXlfY29tcG9uZW50KGRzYSwgcHViX2tleSwgZHNh X3Rlc3RfMjA0OCk7Ci0rICAgIGZpcHNfbG9hZF9rZXlfY29tcG9uZW50KGRzYSwgcHJpdl9rZXks IGRzYV90ZXN0XzIwNDgpOwotKwotKyAgICBpZiAoY29ycnVwdF9kc2EpCi0rICAgICAgICBCTl9z ZXRfYml0KGRzYS0+cHViX2tleSwgMjA0Nyk7Ci0rCi0rICAgIGlmICgocGsgPSBFVlBfUEtFWV9u ZXcoKSkgPT0gTlVMTCkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICBFVlBfUEtFWV9hc3Np Z25fRFNBKHBrLCBkc2EpOwotKwotKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChw aywgTlVMTCwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwg RVZQX3NoYTI1NigpLCAwLCAiRFNBIFNIQTI1NiIpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAg IHJldCA9IDE7Ci0rCi0rIGVycjoKLSsgICAgaWYgKHBrKQotKyAgICAgICAgRVZQX1BLRVlfZnJl ZShwayk7Ci0rICAgIGVsc2UgaWYgKGRzYSkKLSsgICAgICAgIERTQV9mcmVlKGRzYSk7Ci0rICAg IHJldHVybiByZXQ7Ci0rfQotKyNlbmRpZgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRv L2ZpcHMvZmlwc19lbmMuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfZW5j LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2VuYy5jLmZpcHMJMjAxNS0w NC0yMiAxNjowODo0MC4yOTcyNDU3NzMgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8v Zmlwcy9maXBzX2VuYy5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk3MjQ1NzczICswMjAwCi1AQCAt MCwwICsxLDE4OSBAQAotKy8qIGZpcGUvZXZwL2ZpcHNfZW5jLmMgKi8KLSsvKiBDb3B5cmlnaHQg KEMpIDE5OTUtMTk5OCBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkKLSsgKiBBbGwgcmln aHRzIHJlc2VydmVkLgotKyAqCi0rICogVGhpcyBwYWNrYWdlIGlzIGFuIFNTTCBpbXBsZW1lbnRh dGlvbiB3cml0dGVuCi0rICogYnkgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pLgotKyAq IFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgd3JpdHRlbiBzbyBhcyB0byBjb25mb3JtIHdpdGggTmV0 c2NhcGVzIFNTTC4KLSsgKiAKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBmb3IgY29tbWVyY2lh bCBhbmQgbm9uLWNvbW1lcmNpYWwgdXNlIGFzIGxvbmcgYXMKLSsgKiB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnMgYXJlIGFoZWFyZWQgdG8uICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBh cHBseSB0byBhbGwgY29kZSBmb3VuZCBpbiB0aGlzIGRpc3RyaWJ1dGlvbiwgYmUgaXQgdGhlIFJD NCwgUlNBLAotKyAqIGxoYXNoLCBERVMsIGV0Yy4sIGNvZGU7IG5vdCBqdXN0IHRoZSBTU0wgY29k ZS4gIFRoZSBTU0wgZG9jdW1lbnRhdGlvbgotKyAqIGluY2x1ZGVkIHdpdGggdGhpcyBkaXN0cmli dXRpb24gaXMgY292ZXJlZCBieSB0aGUgc2FtZSBjb3B5cmlnaHQgdGVybXMKLSsgKiBleGNlcHQg dGhhdCB0aGUgaG9sZGVyIGlzIFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKS4KLSsgKiAK LSsgKiBDb3B5cmlnaHQgcmVtYWlucyBFcmljIFlvdW5nJ3MsIGFuZCBhcyBzdWNoIGFueSBDb3B5 cmlnaHQgbm90aWNlcyBpbgotKyAqIHRoZSBjb2RlIGFyZSBub3QgdG8gYmUgcmVtb3ZlZC4KLSsg KiBJZiB0aGlzIHBhY2thZ2UgaXMgdXNlZCBpbiBhIHByb2R1Y3QsIEVyaWMgWW91bmcgc2hvdWxk IGJlIGdpdmVuIGF0dHJpYnV0aW9uCi0rICogYXMgdGhlIGF1dGhvciBvZiB0aGUgcGFydHMgb2Yg dGhlIGxpYnJhcnkgdXNlZC4KLSsgKiBUaGlzIGNhbiBiZSBpbiB0aGUgZm9ybSBvZiBhIHRleHR1 YWwgbWVzc2FnZSBhdCBwcm9ncmFtIHN0YXJ0dXAgb3IKLSsgKiBpbiBkb2N1bWVudGF0aW9uIChv bmxpbmUgb3IgdGV4dHVhbCkgcHJvdmlkZWQgd2l0aCB0aGUgcGFja2FnZS4KLSsgKiAKLSsgKiBS ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y IHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqIDEuIFJlZGlzdHJpYnV0 aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgY29weXJpZ2h0Ci0rICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy LgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKyAqICAgIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u Ci0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9y IHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0rICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcg YWNrbm93bGVkZ2VtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3Jh cGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5Ci0rICogICAgIEVyaWMgWW91bmcgKGVheUBjcnlwdHNv ZnQuY29tKSIKLSsgKiAgICBUaGUgd29yZCAnY3J5cHRvZ3JhcGhpYycgY2FuIGJlIGxlZnQgb3V0 IGlmIHRoZSByb3VpbmVzIGZyb20gdGhlIGxpYnJhcnkKLSsgKiAgICBiZWluZyB1c2VkIGFyZSBu b3QgY3J5cHRvZ3JhcGhpYyByZWxhdGVkIDotKS4KLSsgKiA0LiBJZiB5b3UgaW5jbHVkZSBhbnkg V2luZG93cyBzcGVjaWZpYyBjb2RlIChvciBhIGRlcml2YXRpdmUgdGhlcmVvZikgZnJvbSAKLSsg KiAgICB0aGUgYXBwcyBkaXJlY3RvcnkgKGFwcGxpY2F0aW9uIGNvZGUpIHlvdSBtdXN0IGluY2x1 ZGUgYW4gYWNrbm93bGVkZ2VtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m dHdhcmUgd3JpdHRlbiBieSBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkiCi0rICogCi0r ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQK LSsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotKyAqIEFSRSBESVNDTEFJ TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB QkxFCi0rICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotKyAqIE9SIFNF UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS VVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0rICogTElBQklMSVRZLCBPUiBUT1JUIChJ TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotKyAq IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg UE9TU0lCSUxJVFkgT0YKLSsgKiBTVUNIIERBTUFHRS4KLSsgKiAKLSsgKiBUaGUgbGljZW5jZSBh bmQgZGlzdHJpYnV0aW9uIHRlcm1zIGZvciBhbnkgcHVibGljYWxseSBhdmFpbGFibGUgdmVyc2lv biBvcgotKyAqIGRlcml2YXRpdmUgb2YgdGhpcyBjb2RlIGNhbm5vdCBiZSBjaGFuZ2VkLiAgaS5l LiB0aGlzIGNvZGUgY2Fubm90IHNpbXBseSBiZQotKyAqIGNvcGllZCBhbmQgcHV0IHVuZGVyIGFu b3RoZXIgZGlzdHJpYnV0aW9uIGxpY2VuY2UKLSsgKiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVibGlj IExpY2VuY2UuXQotKyAqLwotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdHJp bmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIu aD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rCi0rY29uc3QgRVZQX0NJUEhFUiAqRklQ U19nZXRfY2lwaGVyYnluaWQoaW50IG5pZCkKLSt7Ci0rICAgIHN3aXRjaCAobmlkKSB7Ci0rICAg IGNhc2UgTklEX2Flc18xMjhfY2JjOgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTI4X2NiYygp OwotKwotKyAgICBjYXNlIE5JRF9hZXNfMTI4X2NjbToKLSsgICAgICAgIHJldHVybiBFVlBfYWVz XzEyOF9jY20oKTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzEyOF9jZmIxOgotKyAgICAgICAgcmV0 dXJuIEVWUF9hZXNfMTI4X2NmYjEoKTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzEyOF9jZmIxMjg6 Ci0rICAgICAgICByZXR1cm4gRVZQX2Flc18xMjhfY2ZiMTI4KCk7Ci0rCi0rICAgIGNhc2UgTklE X2Flc18xMjhfY2ZiODoKLSsgICAgICAgIHJldHVybiBFVlBfYWVzXzEyOF9jZmI4KCk7Ci0rCi0r ICAgIGNhc2UgTklEX2Flc18xMjhfY3RyOgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTI4X2N0 cigpOwotKwotKyAgICBjYXNlIE5JRF9hZXNfMTI4X2VjYjoKLSsgICAgICAgIHJldHVybiBFVlBf YWVzXzEyOF9lY2IoKTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzEyOF9nY206Ci0rICAgICAgICBy ZXR1cm4gRVZQX2Flc18xMjhfZ2NtKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Flc18xMjhfb2ZiMTI4 OgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTI4X29mYigpOwotKwotKyAgICBjYXNlIE5JRF9h ZXNfMTI4X3h0czoKLSsgICAgICAgIHJldHVybiBFVlBfYWVzXzEyOF94dHMoKTsKLSsKLSsgICAg Y2FzZSBOSURfYWVzXzE5Ml9jYmM6Ci0rICAgICAgICByZXR1cm4gRVZQX2Flc18xOTJfY2JjKCk7 Ci0rCi0rICAgIGNhc2UgTklEX2Flc18xOTJfY2NtOgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNf MTkyX2NjbSgpOwotKwotKyAgICBjYXNlIE5JRF9hZXNfMTkyX2NmYjE6Ci0rICAgICAgICByZXR1 cm4gRVZQX2Flc18xOTJfY2ZiMSgpOwotKwotKyAgICBjYXNlIE5JRF9hZXNfMTkyX2NmYjEyODoK LSsgICAgICAgIHJldHVybiBFVlBfYWVzXzE5Ml9jZmIxMjgoKTsKLSsKLSsgICAgY2FzZSBOSURf YWVzXzE5Ml9jZmI4OgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTkyX2NmYjgoKTsKLSsKLSsg ICAgY2FzZSBOSURfYWVzXzE5Ml9jdHI6Ci0rICAgICAgICByZXR1cm4gRVZQX2Flc18xOTJfY3Ry KCk7Ci0rCi0rICAgIGNhc2UgTklEX2Flc18xOTJfZWNiOgotKyAgICAgICAgcmV0dXJuIEVWUF9h ZXNfMTkyX2VjYigpOwotKwotKyAgICBjYXNlIE5JRF9hZXNfMTkyX2djbToKLSsgICAgICAgIHJl dHVybiBFVlBfYWVzXzE5Ml9nY20oKTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzE5Ml9vZmIxMjg6 Ci0rICAgICAgICByZXR1cm4gRVZQX2Flc18xOTJfb2ZiKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Fl c18yNTZfY2JjOgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMjU2X2NiYygpOwotKwotKyAgICBj YXNlIE5JRF9hZXNfMjU2X2NjbToKLSsgICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl9jY20oKTsK LSsKLSsgICAgY2FzZSBOSURfYWVzXzI1Nl9jZmIxOgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNf MjU2X2NmYjEoKTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzI1Nl9jZmIxMjg6Ci0rICAgICAgICBy ZXR1cm4gRVZQX2Flc18yNTZfY2ZiMTI4KCk7Ci0rCi0rICAgIGNhc2UgTklEX2Flc18yNTZfY2Zi ODoKLSsgICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl9jZmI4KCk7Ci0rCi0rICAgIGNhc2UgTklE X2Flc18yNTZfY3RyOgotKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMjU2X2N0cigpOwotKwotKyAg ICBjYXNlIE5JRF9hZXNfMjU2X2VjYjoKLSsgICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl9lY2Io KTsKLSsKLSsgICAgY2FzZSBOSURfYWVzXzI1Nl9nY206Ci0rICAgICAgICByZXR1cm4gRVZQX2Fl c18yNTZfZ2NtKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Flc18yNTZfb2ZiMTI4OgotKyAgICAgICAg cmV0dXJuIEVWUF9hZXNfMjU2X29mYigpOwotKwotKyAgICBjYXNlIE5JRF9hZXNfMjU2X3h0czoK LSsgICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl94dHMoKTsKLSsKLSsgICAgY2FzZSBOSURfZGVz X2VkZV9lY2I6Ci0rICAgICAgICByZXR1cm4gRVZQX2Rlc19lZGUoKTsKLSsKLSsgICAgY2FzZSBO SURfZGVzX2VkZTNfZWNiOgotKyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRlMygpOwotKwotKyAg ICBjYXNlIE5JRF9kZXNfZWRlM19jYmM6Ci0rICAgICAgICByZXR1cm4gRVZQX2Rlc19lZGUzX2Ni YygpOwotKwotKyAgICBjYXNlIE5JRF9kZXNfZWRlM19jZmIxOgotKyAgICAgICAgcmV0dXJuIEVW UF9kZXNfZWRlM19jZmIxKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Rlc19lZGUzX2NmYjY0OgotKyAg ICAgICAgcmV0dXJuIEVWUF9kZXNfZWRlM19jZmI2NCgpOwotKwotKyAgICBjYXNlIE5JRF9kZXNf ZWRlM19jZmI4OgotKyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRlM19jZmI4KCk7Ci0rCi0rICAg IGNhc2UgTklEX2Rlc19lZGUzX29mYjY0OgotKyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRlM19v ZmIoKTsKLSsKLSsgICAgY2FzZSBOSURfZGVzX2VkZV9jYmM6Ci0rICAgICAgICByZXR1cm4gRVZQ X2Rlc19lZGVfY2JjKCk7Ci0rCi0rICAgIGNhc2UgTklEX2Rlc19lZGVfY2ZiNjQ6Ci0rICAgICAg ICByZXR1cm4gRVZQX2Rlc19lZGVfY2ZiNjQoKTsKLSsKLSsgICAgY2FzZSBOSURfZGVzX2VkZV9v ZmI2NDoKLSsgICAgICAgIHJldHVybiBFVlBfZGVzX2VkZV9vZmIoKTsKLSsKLSsgICAgZGVmYXVs dDoKLSsgICAgICAgIHJldHVybiBOVUxMOwotKwotKyAgICB9Ci0rfQotZGlmZiAtdXAgb3BlbnNz bC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5oLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Zp cHMvZmlwcy5oCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwcy5oLmZpcHMJMjAx NS0wNC0yMiAxNjowODo0MC4yOTcyNDU3NzMgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZmlwcy9maXBzLmgJMjAxNS0wNC0yMiAxNjowODo0MC4yOTcyNDU3NzMgKzAyMDAKLUBAIC0w LDAgKzEsMjc4IEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMDMgVGhl IE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3Ry aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv dXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRp b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAg ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUg ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0r ICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFs cyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVz dCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJv ZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAot KyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNz bC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9w ZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJv bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAg cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2Ug Y29udGFjdAotKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAqIDUuIFBy b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVu U1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRo b3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2pl Y3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBt dXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAg IlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wg UHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3 dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU SEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElN UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAq IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM TCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1Q TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBM SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ T04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhF IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUgPG9w ZW5zc2wvb3BlbnNzbGNvbmYuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KLSsjaW5j bHVkZSA8c3RkYXJnLmg+Ci0rCi0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLSsjIGVycm9yIEZJUFMg aXMgZGlzYWJsZWQuCi0rI2VuZGlmCi0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwotKyMgaWZk ZWYgIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rIyBlbmRpZgotKwotKyAgICBzdHJ1Y3Qg ZHNhX3N0OwotKyAgICBzdHJ1Y3QgcnNhX3N0OwotKyAgICBzdHJ1Y3QgZXZwX3BrZXlfc3Q7Ci0r ICAgIHN0cnVjdCBlbnZfbWRfc3Q7Ci0rICAgIHN0cnVjdCBlbnZfbWRfY3R4X3N0OwotKyAgICBz dHJ1Y3QgZXZwX2NpcGhlcl9zdDsKLSsgICAgc3RydWN0IGV2cF9jaXBoZXJfY3R4X3N0OwotKyAg ICBzdHJ1Y3QgZGhfbWV0aG9kOwotKyAgICBzdHJ1Y3QgQ01BQ19DVFhfc3Q7Ci0rICAgIHN0cnVj dCBobWFjX2N0eF9zdDsKLSsKLSsgICAgaW50IEZJUFNfbW9kdWxlX21vZGVfc2V0KGludCBvbm9m ZiwgY29uc3QgY2hhciAqYXV0aCk7Ci0rICAgIGludCBGSVBTX21vZHVsZV9tb2RlKHZvaWQpOwot KyAgICBjb25zdCB2b2lkICpGSVBTX3JhbmRfY2hlY2sodm9pZCk7Ci0rICAgIGludCBGSVBTX3Nl bGZ0ZXN0KHZvaWQpOwotKyAgICBpbnQgRklQU19zZWxmdGVzdF9mYWlsZWQodm9pZCk7Ci0rICAg IHZvaWQgRklQU19jb3JydXB0X3NoYTEodm9pZCk7Ci0rICAgIGludCBGSVBTX3NlbGZ0ZXN0X3No YTEodm9pZCk7Ci0rICAgIGludCBGSVBTX3NlbGZ0ZXN0X3NoYTIodm9pZCk7Ci0rICAgIHZvaWQg RklQU19jb3JydXB0X2Flcyh2b2lkKTsKLSsgICAgaW50IEZJUFNfc2VsZnRlc3RfYWVzX2NjbSh2 b2lkKTsKLSsgICAgaW50IEZJUFNfc2VsZnRlc3RfYWVzX2djbSh2b2lkKTsKLSsgICAgaW50IEZJ UFNfc2VsZnRlc3RfYWVzX3h0cyh2b2lkKTsKLSsgICAgaW50IEZJUFNfc2VsZnRlc3RfYWVzKHZv aWQpOwotKyAgICB2b2lkIEZJUFNfY29ycnVwdF9kZXModm9pZCk7Ci0rICAgIGludCBGSVBTX3Nl bGZ0ZXN0X2Rlcyh2b2lkKTsKLSsgICAgdm9pZCBGSVBTX2NvcnJ1cHRfcnNhKHZvaWQpOwotKyAg ICB2b2lkIEZJUFNfY29ycnVwdF9yc2Ffa2V5Z2VuKHZvaWQpOwotKyAgICBpbnQgRklQU19zZWxm dGVzdF9yc2Eodm9pZCk7Ci0rICAgIHZvaWQgRklQU19jb3JydXB0X2RzYSh2b2lkKTsKLSsgICAg dm9pZCBGSVBTX2NvcnJ1cHRfZHNhX2tleWdlbih2b2lkKTsKLSsgICAgaW50IEZJUFNfc2VsZnRl c3RfZHNhKHZvaWQpOwotKyAgICB2b2lkIEZJUFNfY29ycnVwdF9ybmcodm9pZCk7Ci0rICAgIHZv aWQgRklQU19ybmdfc3RpY2sodm9pZCk7Ci0rICAgIHZvaWQgRklQU194OTMxX3N0aWNrKGludCBv bm9mZik7Ci0rICAgIHZvaWQgRklQU19kcmJnX3N0aWNrKGludCBvbm9mZik7Ci0rICAgIGludCBG SVBTX3NlbGZ0ZXN0X3JuZyh2b2lkKTsKLSsgICAgaW50IEZJUFNfc2VsZnRlc3RfeDkzMSh2b2lk KTsKLSsgICAgaW50IEZJUFNfc2VsZnRlc3RfaG1hYyh2b2lkKTsKLSsgICAgaW50IEZJUFNfc2Vs ZnRlc3RfZHJiZyh2b2lkKTsKLSsgICAgaW50IEZJUFNfc2VsZnRlc3RfZHJiZ19hbGwodm9pZCk7 Ci0rICAgIGludCBGSVBTX3NlbGZ0ZXN0X2NtYWModm9pZCk7Ci0rCi0rICAgIHZvaWQgRklQU19n ZXRfdGltZXZlYyh1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgKnBjdHIpOwotKwot KyMgZGVmaW5lIEZJUFNfRVJST1JfSUdOT1JFRChhbGcpIE9wZW5TU0xEaWUoX19GSUxFX18sIF9f TElORV9fLCBcCi0rICAgICAgICAgICAgICAgIGFsZyAiIHByZXZpb3VzIEZJUFMgZm9yYmlkZGVu IGFsZ29yaXRobSBlcnJvciBpZ25vcmVkIik7Ci0rCi0rICAgIGludCBmaXBzX3BrZXlfc2lnbmF0 dXJlX3Rlc3Qoc3RydWN0IGV2cF9wa2V5X3N0ICpwa2V5LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRicywgaW50IHRic2xlbiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprYXQsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGthdGxlbiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZW52X21kX3N0ICpk aWdlc3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1k X2ZsYWdzLCBjb25zdCBjaGFyICpmYWlsX3N0cik7Ci0rCi0rICAgIGludCBmaXBzX2NpcGhlcl90 ZXN0KHN0cnVjdCBldnBfY2lwaGVyX2N0eF9zdCAqY3R4LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgZXZwX2NpcGhlcl9zdCAqY2lwaGVyLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksCi0rICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml2LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICpwbGFpbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNpcGhlcnRleHQsIGludCBsZW4pOwotKwotKyAgICB2 b2lkIGZpcHNfc2V0X3NlbGZ0ZXN0X2ZhaWwodm9pZCk7Ci0rCi0rICAgIGNvbnN0IHN0cnVjdCBl bnZfbWRfc3QgKkZJUFNfZ2V0X2RpZ2VzdGJ5bmlkKGludCBuaWQpOwotKwotKyAgICBjb25zdCBz dHJ1Y3QgZXZwX2NpcGhlcl9zdCAqRklQU19nZXRfY2lwaGVyYnluaWQoaW50IG5pZCk7Ci0rCi0r LyogQkVHSU4gRVJST1IgQ09ERVMgKi8KLSsvKiBUaGUgZm9sbG93aW5nIGxpbmVzIGFyZSBhdXRv IGdlbmVyYXRlZCBieSB0aGUgc2NyaXB0IG1rZXJyLnBsLiBBbnkgY2hhbmdlcwotKyAqIG1hZGUg YWZ0ZXIgdGhpcyBwb2ludCBtYXkgYmUgb3ZlcndyaXR0ZW4gd2hlbiB0aGUgc2NyaXB0IGlzIG5l eHQgcnVuLgotKyAqLwotKyAgICB2b2lkIEVSUl9sb2FkX0ZJUFNfc3RyaW5ncyh2b2lkKTsKLSsK LSsvKiBFcnJvciBjb2RlcyBmb3IgdGhlIEZJUFMgZnVuY3Rpb25zLiAqLwotKwotKy8qIEZ1bmN0 aW9uIGNvZGVzLiAqLwotKyMgZGVmaW5lIEZJUFNfRl9ESF9CVUlMVElOX0dFTlBBUkFNUyAgICAg ICAgICAgICAgICAgICAgICAxMDAKLSsjIGRlZmluZSBGSVBTX0ZfREhfSU5JVCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMTQ4Ci0rIyBkZWZpbmUgRklQU19GX0RSQkdfUkVTRUVE ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2MgotKyMgZGVmaW5lIEZJUFNfRl9EU0Ff QlVJTFRJTl9QQVJBTUdFTiAgICAgICAgICAgICAgICAgICAgICAxMDEKLSsjIGRlZmluZSBGSVBT X0ZfRFNBX0JVSUxUSU5fUEFSQU1HRU4yICAgICAgICAgICAgICAgICAgICAgMTA3Ci0rIyBkZWZp bmUgRklQU19GX0RTQV9ET19TSUdOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMgot KyMgZGVmaW5lIEZJUFNfRl9EU0FfRE9fVkVSSUZZICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxMDMKLSsjIGRlZmluZSBGSVBTX0ZfRUNESF9DT01QVVRFX0tFWSAgICAgICAgICAgICAgICAg ICAgICAgICAgMTYzCi0rIyBkZWZpbmUgRklQU19GX0VDRFNBX0RPX1NJR04gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDE2NAotKyMgZGVmaW5lIEZJUFNfRl9FQ0RTQV9ET19WRVJJRlkgICAg ICAgICAgICAgICAgICAgICAgICAgICAxNjUKLSsjIGRlZmluZSBGSVBTX0ZfRUNfS0VZX0dFTkVS QVRFX0tFWSAgICAgICAgICAgICAgICAgICAgICAgMTY2Ci0rIyBkZWZpbmUgRklQU19GX0VWUF9D SVBIRVJJTklUX0VYICAgICAgICAgICAgICAgICAgICAgICAgIDEyNAotKyMgZGVmaW5lIEZJUFNf Rl9FVlBfRElHRVNUSU5JVF9FWCAgICAgICAgICAgICAgICAgICAgICAgICAxMjUKLSsjIGRlZmlu ZSBGSVBTX0ZfRklQU19DSEVDS19EU0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0Ci0r IyBkZWZpbmUgRklQU19GX0ZJUFNfQ0hFQ0tfRFNBX1BSTkcgICAgICAgICAgICAgICAgICAgICAg IDE1MQotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0NIRUNLX0VDICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxNDIKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19DSEVDS19FQ19QUk5HICAgICAgICAg ICAgICAgICAgICAgICAgMTUyCi0rIyBkZWZpbmUgRklQU19GX0ZJUFNfQ0hFQ0tfSU5DT1JFX0ZJ TkdFUlBSSU5UICAgICAgICAgICAgIDEwNQotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0NIRUNLX1JT QSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDYKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19D SEVDS19SU0FfUFJORyAgICAgICAgICAgICAgICAgICAgICAgMTUwCi0rIyBkZWZpbmUgRklQU19G X0ZJUFNfQ0lQSEVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2MAotKyMgZGVmaW5l IEZJUFNfRl9GSVBTX0NJUEhFUklOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDMKLSsj IGRlZmluZSBGSVBTX0ZfRklQU19DSVBIRVJfQ1RYX0NUUkwgICAgICAgICAgICAgICAgICAgICAg MTYxCi0rIyBkZWZpbmUgRklQU19GX0ZJUFNfRElHRVNURklOQUwgICAgICAgICAgICAgICAgICAg ICAgICAgIDE1OAotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RJR0VTVElOSVQgICAgICAgICAgICAg ICAgICAgICAgICAgICAxMjgKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19ESUdFU1RVUERBVEUgICAg ICAgICAgICAgICAgICAgICAgICAgMTU5Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19CWVRF UyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMQotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RS QkdfQ0hFQ0sgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDYKLSsjIGRlZmluZSBGSVBTX0Zf RklQU19EUkJHX0NQUk5HX1RFU1QgICAgICAgICAgICAgICAgICAgICAgMTMyCi0rIyBkZWZpbmUg RklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSyAgICAgICAgICAgICAgICAgICAgIDEzNgotKyMg ZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdfR0VORVJBVEUgICAgICAgICAgICAgICAgICAgICAgICAx MzQKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19EUkJHX0lOSVQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMTM1Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19JTlNUQU5USUFURSAgICAgICAg ICAgICAgICAgICAgIDEzOAotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdfTkVXICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxMzkKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19EUkJHX1JFU0VF RCAgICAgICAgICAgICAgICAgICAgICAgICAgMTQwCi0rIyBkZWZpbmUgRklQU19GX0ZJUFNfRFJC R19TSU5HTEVfS0FUICAgICAgICAgICAgICAgICAgICAgIDE0MQotKyMgZGVmaW5lIEZJUFNfRl9G SVBTX0RTQV9DSEVDSyAgICAgICAgICAgLyogdW51c2VkICovICAgICAxMDcKLSsjIGRlZmluZSBG SVBTX0ZfRklQU19EU0FfU0lHTl9ESUdFU1QgICAgICAgICAgICAgICAgICAgICAgMTU0Ci0rIyBk ZWZpbmUgRklQU19GX0ZJUFNfRFNBX1ZFUklGWV9ESUdFU1QgICAgICAgICAgICAgICAgICAgIDE1 NQotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0dFVF9FTlRST1BZICAgICAgICAgICAgICAgICAgICAg ICAgICAxNDcKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19NT0RFX1NFVCAgICAgICAgICAgIC8qIHVu dXNlZCAqLyAgICAgMTA4Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfTU9EVUxFX01PREVfU0VUICAg ICAgICAgICAgICAgICAgICAgIDEwOAotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1BLRVlfU0lHTkFU VVJFX1RFU1QgICAgICAgICAgICAgICAgICAxMDkKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19SQU5E X0FERCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM3Ci0rIyBkZWZpbmUgRklQU19GX0ZJ UFNfUkFORF9CWVRFUyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMgotKyMgZGVmaW5lIEZJ UFNfRl9GSVBTX1JBTkRfUFNFVURPX0JZVEVTICAgICAgICAgICAgICAgICAgICAxNjcKLSsjIGRl ZmluZSBGSVBTX0ZfRklQU19SQU5EX1NFRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTY4 Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfUkFORF9TRVRfTUVUSE9EICAgICAgICAgICAgICAgICAg ICAgIDEyNgotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1JBTkRfU1RBVFVTICAgICAgICAgICAgICAg ICAgICAgICAgICAxMjcKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19SU0FfU0lHTl9ESUdFU1QgICAg ICAgICAgICAgICAgICAgICAgMTU2Ci0rIyBkZWZpbmUgRklQU19GX0ZJUFNfUlNBX1ZFUklGWV9E SUdFU1QgICAgICAgICAgICAgICAgICAgIDE1NwotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZU RVNUX0FFUyAgICAgICAgICAgICAgICAgICAgICAgICAxMTAKLSsjIGRlZmluZSBGSVBTX0ZfRklQ U19TRUxGVEVTVF9BRVNfQ0NNICAgICAgICAgICAgICAgICAgICAgMTQ1Ci0rIyBkZWZpbmUgRklQ U19GX0ZJUFNfU0VMRlRFU1RfQUVTX0dDTSAgICAgICAgICAgICAgICAgICAgIDEyOQotKyMgZGVm aW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0FFU19YVFMgICAgICAgICAgICAgICAgICAgICAxNDQK LSsjIGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9DTUFDICAgICAgICAgICAgICAgICAgICAg ICAgMTMwCi0rIyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfREVTICAgICAgICAgICAgICAg ICAgICAgICAgIDExMQotKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0RTQSAgICAgICAg ICAgICAgICAgICAgICAgICAxMTIKLSsjIGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9FQ0RT QSAgICAgICAgICAgICAgICAgICAgICAgMTMzCi0rIyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRF U1RfSE1BQyAgICAgICAgICAgICAgICAgICAgICAgIDExMwotKyMgZGVmaW5lIEZJUFNfRl9GSVBT X1NFTEZURVNUX1JORyAgICAgICAgLyogdW51c2VkICovICAgICAxMTQKLSsjIGRlZmluZSBGSVBT X0ZfRklQU19TRUxGVEVTVF9TSEExICAgICAgICAgICAgICAgICAgICAgICAgMTE1Ci0rIyBkZWZp bmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfWDkzMSAgICAgICAgICAgICAgICAgICAgICAgIDExNAot KyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFVF9QUk5HX0tFWSAgICAgICAgICAgICAgICAgICAgICAg ICAxNTMKLSsjIGRlZmluZSBGSVBTX0ZfSEFTSF9GSU5BTCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMTIzCi0rIyBkZWZpbmUgRklQU19GX1JTQV9CVUlMVElOX0tFWUdFTiAgICAgICAg ICAgICAgICAgICAgICAgIDExNgotKyMgZGVmaW5lIEZJUFNfRl9SU0FfRUFZX0lOSVQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAxNDkKLSsjIGRlZmluZSBGSVBTX0ZfUlNBX0VBWV9QUklW QVRFX0RFQ1JZUFQgICAgICAgICAgICAgICAgICAgMTE3Ci0rIyBkZWZpbmUgRklQU19GX1JTQV9F QVlfUFJJVkFURV9FTkNSWVBUICAgICAgICAgICAgICAgICAgIDExOAotKyMgZGVmaW5lIEZJUFNf Rl9SU0FfRUFZX1BVQkxJQ19ERUNSWVBUICAgICAgICAgICAgICAgICAgICAxMTkKLSsjIGRlZmlu ZSBGSVBTX0ZfUlNBX0VBWV9QVUJMSUNfRU5DUllQVCAgICAgICAgICAgICAgICAgICAgMTIwCi0r IyBkZWZpbmUgRklQU19GX1JTQV9YOTMxX0dFTkVSQVRFX0tFWV9FWCAgICAgICAgICAgICAgICAg IDEyMQotKyMgZGVmaW5lIEZJUFNfRl9TU0xFQVlfUkFORF9CWVRFUyAgICAgICAgLyogdW51c2Vk ICovICAgICAxMjIKLSsKLSsvKiBSZWFzb24gY29kZXMuICovCi0rIyBkZWZpbmUgRklQU19SX0FE RElUSU9OQUxfSU5QVVRfRVJST1JfVU5ERVRFQ1RFRCAgICAgICAgIDE1MAotKyMgZGVmaW5lIEZJ UFNfUl9BRERJVElPTkFMX0lOUFVUX1RPT19MT05HICAgICAgICAgICAgICAgICAxMjUKLSsjIGRl ZmluZSBGSVBTX1JfQUxSRUFEWV9JTlNUQU5USUFURUQgICAgICAgICAgICAgICAgICAgICAgMTM0 Ci0rIyBkZWZpbmUgRklQU19SX0FVVEhFTlRJQ0FUSU9OX0ZBSUxVUkUgICAgICAgICAgICAgICAg ICAgIDE1MQotKyMgZGVmaW5lIEZJUFNfUl9DQU5OT1RfUkVBRF9FWEUgICAgICAgICAgLyogdW51 c2VkICovICAgICAxMDMKLSsjIGRlZmluZSBGSVBTX1JfQ0FOTk9UX1JFQURfRVhFX0RJR0VTVCAg IC8qIHVudXNlZCAqLyAgICAgMTA0Ci0rIyBkZWZpbmUgRklQU19SX0NPTlRSQURJQ1RJTkdfRVZJ REVOQ0UgICAgICAgICAgICAgICAgICAgIDExNAotKyMgZGVmaW5lIEZJUFNfUl9EUkJHX05PVF9J TklUSUFMSVNFRCAgICAgICAgICAgICAgICAgICAgICAxNTIKLSsjIGRlZmluZSBGSVBTX1JfRFJC R19TVFVDSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAzCi0rIyBkZWZpbmUgRklQ U19SX0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RFRCAgICAgICAgICAgICAgICAgIDEwNAotKyMgZGVm aW5lIEZJUFNfUl9FTlRST1BZX05PVF9SRVFVRVNURURfRk9SX1JFU0VFRCAgICAgICAgICAxMDUK LSsjIGRlZmluZSBGSVBTX1JfRU5UUk9QWV9TT1VSQ0VfU1RVQ0sgICAgICAgICAgICAgICAgICAg ICAgMTQyCi0rIyBkZWZpbmUgRklQU19SX0VSUk9SX0lOSVRJQUxJU0lOR19EUkJHICAgICAgICAg ICAgICAgICAgIDExNQotKyMgZGVmaW5lIEZJUFNfUl9FUlJPUl9JTlNUQU5USUFUSU5HX0RSQkcg ICAgICAgICAgICAgICAgICAxMjcKLSsjIGRlZmluZSBGSVBTX1JfRVJST1JfUkVUUklFVklOR19B RERJVElPTkFMX0lOUFVUICAgICAgICAgMTI0Ci0rIyBkZWZpbmUgRklQU19SX0VSUk9SX1JFVFJJ RVZJTkdfRU5UUk9QWSAgICAgICAgICAgICAgICAgIDEyMgotKyMgZGVmaW5lIEZJUFNfUl9FUlJP Ul9SRVRSSUVWSU5HX05PTkNFICAgICAgICAgICAgICAgICAgICAxNDAKLSsjIGRlZmluZSBGSVBT X1JfRVhFX0RJR0VTVF9ET0VTX05PVF9NQVRDSCAgIC8qIHVudXNlZCAqLyAgMTA1Ci0rIyBkZWZp bmUgRklQU19SX0ZJTkdFUlBSSU5UX0RPRVNfTk9UX01BVENIICAgICAgICAgICAgICAgIDExMAot KyMgZGVmaW5lIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05PVF9NQVRDSF9OT05QSUNfUkVMT0NB VEVEIDExMQotKyMgZGVmaW5lIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05PVF9NQVRDSF9TRUdN RU5UX0FMSUFTSU5HIDExMgotKyMgZGVmaW5lIEZJUFNfUl9GSVBTX01PREVfQUxSRUFEWV9TRVQg ICAgICAgICAgICAgICAgICAgICAxMDIKLSsjIGRlZmluZSBGSVBTX1JfRklQU19TRUxGVEVTVF9G QUlMRUQgICAgICAgICAgICAgICAgICAgICAgMTA2Ci0rIyBkZWZpbmUgRklQU19SX0ZVTkNUSU9O X0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNgotKyMgZGVmaW5lIEZJUFNfUl9H RU5FUkFURV9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzcKLSsjIGRlZmluZSBG SVBTX1JfR0VORVJBVEVfRVJST1JfVU5ERVRFQ1RFRCAgICAgICAgICAgICAgICAgMTE4Ci0rIyBk ZWZpbmUgRklQU19SX0lOU1RBTlRJQVRFX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgIDEx OQotKyMgZGVmaW5lIEZJUFNfUl9JTlNVRkZJQ0lFTlRfU0VDVVJJVFlfU1RSRU5HVEggICAgICAg ICAgICAxMjAKLSsjIGRlZmluZSBGSVBTX1JfSU5URVJOQUxfRVJST1IgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTIxCi0rIyBkZWZpbmUgRklQU19SX0lOVkFMSURfS0VZX0xFTkdUSCAgICAg ICAgICAgICAgICAgICAgICAgIDEwOQotKyMgZGVmaW5lIEZJUFNfUl9JTlZBTElEX1BBUkFNRVRF UlMgICAgICAgICAgICAgICAgICAgICAgICAxNDQKLSsjIGRlZmluZSBGSVBTX1JfSU5fRVJST1Jf U1RBVEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIzCi0rIyBkZWZpbmUgRklQU19SX0tF WV9UT09fU0hPUlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOAotKyMgZGVmaW5lIEZJ UFNfUl9OT05DRV9FUlJPUl9VTkRFVEVDVEVEICAgICAgICAgICAgICAgICAgICAxNDkKLSsjIGRl ZmluZSBGSVBTX1JfTk9OX0ZJUFNfTUVUSE9EICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAw Ci0rIyBkZWZpbmUgRklQU19SX05PUFJfVEVTVDFfRkFJTFVSRSAgICAgICAgICAgICAgICAgICAg ICAgIDE0NQotKyMgZGVmaW5lIEZJUFNfUl9OT1BSX1RFU1QyX0ZBSUxVUkUgICAgICAgICAgICAg ICAgICAgICAgICAxNDYKLSsjIGRlZmluZSBGSVBTX1JfTk9UX0lOU1RBTlRJQVRFRCAgICAgICAg ICAgICAgICAgICAgICAgICAgMTI2Ci0rIyBkZWZpbmUgRklQU19SX1BBSVJXSVNFX1RFU1RfRkFJ TEVEICAgICAgICAgICAgICAgICAgICAgIDEwNwotKyMgZGVmaW5lIEZJUFNfUl9QRVJTT05BTElT QVRJT05fRVJST1JfVU5ERVRFQ1RFRCAgICAgICAgICAxMjgKLSsjIGRlZmluZSBGSVBTX1JfUEVS U09OQUxJU0FUSU9OX1NUUklOR19UT09fTE9ORyAgICAgICAgICAgMTI5Ci0rIyBkZWZpbmUgRklQ U19SX1BSTkdfU1RSRU5HVEhfVE9PX0xPVyAgICAgICAgICAgICAgICAgICAgIDE0MwotKyMgZGVm aW5lIEZJUFNfUl9QUl9URVNUMV9GQUlMVVJFICAgICAgICAgICAgICAgICAgICAgICAgICAxNDcK LSsjIGRlZmluZSBGSVBTX1JfUFJfVEVTVDJfRkFJTFVSRSAgICAgICAgICAgICAgICAgICAgICAg ICAgMTQ4Ci0rIyBkZWZpbmUgRklQU19SX1JFUVVFU1RfTEVOR1RIX0VSUk9SX1VOREVURUNURUQg ICAgICAgICAgIDEzMAotKyMgZGVmaW5lIEZJUFNfUl9SRVFVRVNUX1RPT19MQVJHRV9GT1JfRFJC RyAgICAgICAgICAgICAgICAxMzEKLSsjIGRlZmluZSBGSVBTX1JfUkVTRUVEX0NPVU5URVJfRVJS T1IgICAgICAgICAgICAgICAgICAgICAgMTMyCi0rIyBkZWZpbmUgRklQU19SX1JFU0VFRF9FUlJP UiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMwotKyMgZGVmaW5lIEZJUFNfUl9SU0Ff REVDUllQVF9FUlJPUiAgICAgICAgLyogdW51c2VkICovICAgICAxMTUKLSsjIGRlZmluZSBGSVBT X1JfUlNBX0VOQ1JZUFRfRVJST1IgICAgICAgIC8qIHVudXNlZCAqLyAgICAgMTE2Ci0rIyBkZWZp bmUgRklQU19SX1NFTEZURVNUX0ZBSUxFRCAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMQot KyMgZGVmaW5lIEZJUFNfUl9TRUxGVEVTVF9GQUlMVVJFICAgICAgICAgICAgICAgICAgICAgICAg ICAxMzUKLSsjIGRlZmluZSBGSVBTX1JfU1RSRU5HVEhfRVJST1JfVU5ERVRFQ1RFRCAgICAgICAg ICAgICAgICAgMTM2Ci0rIyBkZWZpbmUgRklQU19SX1RFU1RfRkFJTFVSRSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDExNwotKyMgZGVmaW5lIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9S ICAgICAgICAgICAgICAgICAgICAgICAxNDEKLSsjIGRlZmluZSBGSVBTX1JfVU5JTlNUQU5USUFU RV9aRVJPSVNFX0VSUk9SICAgICAgICAgICAgICAgMTM4Ci0rIyBkZWZpbmUgRklQU19SX1VOU1VQ UE9SVEVEX0RSQkdfVFlQRSAgICAgICAgICAgICAgICAgICAgIDEzOQotKyMgZGVmaW5lIEZJUFNf Ul9VTlNVUFBPUlRFRF9QTEFURk9STSAgICAgICAgICAgICAgICAgICAgICAxMTMKLSsKLSsjIGlm ZGVmICBfX2NwbHVzcGx1cwotK30KLSsjIGVuZGlmCi0rI2VuZGlmCi1kaWZmIC11cCBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2htYWNfc2VsZnRlc3QuYy5maXBzIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9maXBzL2ZpcHNfaG1hY19zZWxmdGVzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2ZpcHMvZmlwc19obWFjX3NlbGZ0ZXN0LmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQw LjI5NzI0NTc3MyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfaG1h Y19zZWxmdGVzdC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk3MjQ1NzczICswMjAwCi1AQCAtMCww ICsxLDEzNCBAQAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDA1IFRoZSBP cGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv d2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRv Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAq ICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMg bWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3Qg ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1 Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsg KiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wu b3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVu U1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHBy aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNv bnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQcm9k dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNT TCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91 dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0 LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVz dCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJU aGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFBy b2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cu b3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF IE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBM SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJ TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg VEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExB UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElN SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsg KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O KQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF VEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQ T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpbmNsdWRlIDxzdHJp bmcuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0r IyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8b3BlbnNzbC9o bWFjLmg+Ci0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotK3R5cGVkZWYgc3RydWN0IHsKLSsgICAg Y29uc3QgRVZQX01EICooKmFsZykgKHZvaWQpOwotKyAgICBjb25zdCBjaGFyICprZXksICppdjsK LSsgICAgdW5zaWduZWQgY2hhciBrYXZhbFtFVlBfTUFYX01EX1NJWkVdOwotK30gSE1BQ19LQVQ7 Ci0rCi0rc3RhdGljIGNvbnN0IEhNQUNfS0FUIHZlY3RvcltdID0gewotKyAgICB7RVZQX3NoYTEs Ci0rICAgICAvKiBmcm9tIGh0dHA6Ly9jc3JjLm5pc3QuZ292L3B1YmxpY2F0aW9ucy9maXBzL2Zp cHMxOTgvZmlwcy0xOThhLnBkZiAqLwotKyAgICAgIjAxMjM0NTY3ODk6Ozw9Pj9AQUJDIiwKLSsg ICAgICJTYW1wbGUgIzIiLAotKyAgICAgezB4MDksIDB4MjIsIDB4ZDMsIDB4NDAsIDB4NWYsIDB4 YWEsIDB4M2QsIDB4MTksCi0rICAgICAgMHg0ZiwgMHg4MiwgMHhhNCwgMHg1OCwgMHgzMCwgMHg3 MywgMHg3ZCwgMHg1YywKLSsgICAgICAweGM2LCAweGM3LCAweDVkLCAweDI0fQotKyAgICAgfSwK LSsgICAge0VWUF9zaGEyMjQsCi0rICAgICAvKiBqdXN0IGtlZXAgZXh0ZW5kaW5nIHRoZSBhYm92 ZS4uLiAqLwotKyAgICAgIjAxMjM0NTY3ODk6Ozw9Pj9AQUJDIiwKLSsgICAgICJTYW1wbGUgIzIi LAotKyAgICAgezB4ZGQsIDB4ZWYsIDB4MGEsIDB4NDAsIDB4Y2IsIDB4N2QsIDB4NTAsIDB4ZmIs Ci0rICAgICAgMHg2ZSwgMHhlNiwgMHhjZSwgMHhhMSwgMHgyMCwgMHhiYSwgMHgyNiwgMHhhYSwK LSsgICAgICAweDA4LCAweGYzLCAweDA3LCAweDc1LCAweDg3LCAweGI4LCAweGFkLCAweDFiLAot KyAgICAgIDB4OGMsIDB4OGQsIDB4MTIsIDB4Yzd9Ci0rICAgICB9LAotKyAgICB7RVZQX3NoYTI1 NiwKLSsgICAgICIwMTIzNDU2Nzg5Ojs8PT4/QEFCQyIsCi0rICAgICAiU2FtcGxlICMyIiwKLSsg ICAgIHsweGI4LCAweGYyLCAweDBkLCAweGI1LCAweDQxLCAweGVhLCAweDQzLCAweDA5LAotKyAg ICAgIDB4Y2EsIDB4NGUsIDB4YTksIDB4MzgsIDB4MGMsIDB4ZDAsIDB4ZTgsIDB4MzQsCi0rICAg ICAgMHhmNywgMHgxZiwgMHhiZSwgMHg5MSwgMHg3NCwgMHhhMiwgMHg2MSwgMHgzOCwKLSsgICAg ICAweDBkLCAweGMxLCAweDdlLCAweGFlLCAweDZhLCAweDM0LCAweDUxLCAweGQ5fQotKyAgICAg fSwKLSsgICAge0VWUF9zaGEzODQsCi0rICAgICAiMDEyMzQ1Njc4OTo7PD0+P0BBQkMiLAotKyAg ICAgIlNhbXBsZSAjMiIsCi0rICAgICB7MHgwOCwgMHhiYywgMHhiMCwgMHhkYSwgMHg0OSwgMHgx ZSwgMHg4NywgMHhhZCwKLSsgICAgICAweDlhLCAweDFkLCAweDZhLCAweGNlLCAweDIzLCAweGM1 LCAweDBiLCAweGY2LAotKyAgICAgIDB4YjcsIDB4MTgsIDB4MDYsIDB4YTUsIDB4NzcsIDB4Y2Qs IDB4NDksIDB4MDQsCi0rICAgICAgMHg4OSwgMHhmMSwgMHhlNiwgMHgyMywgMHg0NCwgMHg1MSwg MHg1MSwgMHg5ZiwKLSsgICAgICAweDg1LCAweDU2LCAweDgwLCAweDc5LCAweDBjLCAweGJkLCAw eDRkLCAweDUwLAotKyAgICAgIDB4YTQsIDB4NWYsIDB4MjksIDB4ZTMsIDB4OTMsIDB4ZjAsIDB4 ZTgsIDB4N2Z9Ci0rICAgICB9LAotKyAgICB7RVZQX3NoYTUxMiwKLSsgICAgICIwMTIzNDU2Nzg5 Ojs8PT4/QEFCQyIsCi0rICAgICAiU2FtcGxlICMyIiwKLSsgICAgIHsweDgwLCAweDlkLCAweDQ0 LCAweDA1LCAweDdjLCAweDViLCAweDk1LCAweDQxLAotKyAgICAgIDB4MDUsIDB4YmQsIDB4MDQs IDB4MTMsIDB4MTYsIDB4ZGIsIDB4MGYsIDB4YWMsCi0rICAgICAgMHg0NCwgMHhkNSwgMHhhNCwg MHhkNSwgMHhkMCwgMHg4OSwgMHgyYiwgMHhkMCwKLSsgICAgICAweDRlLCAweDg2LCAweDY0LCAw eDEyLCAweGMwLCAweDkwLCAweDc3LCAweDY4LAotKyAgICAgIDB4ZjEsIDB4ODcsIDB4YjcsIDB4 N2MsIDB4NGYsIDB4YWUsIDB4MmMsIDB4MmYsCi0rICAgICAgMHgyMSwgMHhhNSwgMHhiNSwgMHg2 NSwgMHg5YSwgMHg0ZiwgMHg0YiwgMHhhNywKLSsgICAgICAweDQ3LCAweDAyLCAweGEzLCAweGRl LCAweDliLCAweDUxLCAweGYxLCAweDQ1LAotKyAgICAgIDB4YmQsIDB4NGYsIDB4MjUsIDB4Mjcs IDB4NDIsIDB4OTgsIDB4OTksIDB4MDV9Ci0rICAgICB9LAotK307Ci0rCi0raW50IEZJUFNfc2Vs ZnRlc3RfaG1hYygpCi0rewotKyAgICBpbnQgbjsKLSsgICAgdW5zaWduZWQgaW50IG91dGxlbjsK LSsgICAgdW5zaWduZWQgY2hhciBvdXRbRVZQX01BWF9NRF9TSVpFXTsKLSsgICAgY29uc3QgRVZQ X01EICptZDsKLSsgICAgY29uc3QgSE1BQ19LQVQgKnQ7Ci0rCi0rICAgIGZvciAobiA9IDAsIHQg PSB2ZWN0b3I7IG4gPCBzaXplb2YodmVjdG9yKSAvIHNpemVvZih2ZWN0b3JbMF0pOyBuKyssIHQr KykgewotKyAgICAgICAgbWQgPSAoKnQtPmFsZykgKCk7Ci0rICAgICAgICBITUFDKG1kLCB0LT5r ZXksIHN0cmxlbih0LT5rZXkpLAotKyAgICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAq KXQtPml2LCBzdHJsZW4odC0+aXYpLCBvdXQsICZvdXRsZW4pOwotKwotKyAgICAgICAgaWYgKG1l bWNtcChvdXQsIHQtPmthdmFsLCBvdXRsZW4pKSB7Ci0rICAgICAgICAgICAgRklQU2VycihGSVBT X0ZfRklQU19TRUxGVEVTVF9ITUFDLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsgICAgICAg ICAgICByZXR1cm4gMDsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICByZXR1cm4gMTsKLSt9Ci0r I2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX2xvY2wuaC5m aXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfbG9jbC5oCi0tLS0gb3BlbnNzbC0x LjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19sb2NsLmguZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5 NzI0NTc3MyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfbG9jbC5o CTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk3MjQ1NzczICswMjAwCi1AQCAtMCwwICsxLDcxIEBACi0r LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVj dC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmlj YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0r ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0 aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZl YXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBm b2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBz b2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2Ug aW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgot KyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIg bXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBw ZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAg IG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5v ciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0 ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2 LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUg Zm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBp bmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAg IGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8p IgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9K RUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElF UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAq IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQ Uk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs IElORElSRUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNF LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZF UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF IE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9G IFNVQ0ggREFNQUdFLgotKyAqCi0rICovCi0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwotKyMg aWZkZWYgIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rIyBlbmRpZgotKwotKyMgZGVmaW5l IEZJUFNfTUFYX0NJUEhFUl9URVNUX1NJWkUgICAgICAgMzIKLSsjIGRlZmluZSBmaXBzX2xvYWRf a2V5X2NvbXBvbmVudChrZXksIGNvbXAsIHByZSkgXAotKyAgICAgICAga2V5LT5jb21wID0gQk5f YmluMmJuKHByZSMjXyMjY29tcCwgc2l6ZW9mKHByZSMjXyMjY29tcCksIGtleS0+Y29tcCk7IFwK LSsgICAgICAgIGlmICgha2V5LT5jb21wKSBcCi0rICAgICAgICAgICAgICAgIGdvdG8gZXJyCi0r Ci0rIyBkZWZpbmUgZmlwc19wb3N0X3N0YXJ0ZWQoaWQsIHN1YmlkLCBleCkgMQotKyMgZGVmaW5l IGZpcHNfcG9zdF9zdWNjZXNzKGlkLCBzdWJpZCwgZXgpIDEKLSsjIGRlZmluZSBmaXBzX3Bvc3Rf ZmFpbGVkKGlkLCBzdWJpZCwgZXgpIDEKLSsjIGRlZmluZSBmaXBzX3Bvc3RfY29ycnVwdChpZCwg c3ViaWQsIGV4KSAxCi0rIyBkZWZpbmUgZmlwc19wb3N0X3N0YXR1cygpIDEKLSsKLSsjIGlmZGVm ICBfX2NwbHVzcGx1cwotK30KLSsjIGVuZGlmCi0rI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZmlwcy9maXBzX21kLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlw cy9maXBzX21kLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX21kLmMuZmlw cwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5ODI0NTc5NiArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9maXBzL2ZpcHNfbWQuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5ODI0NTc5NiArMDIw MAotQEAgLTAsMCArMSwxNDQgQEAKLSsvKiBmaXBzL2V2cC9maXBzX21kLmMgKi8KLSsvKiBDb3B5 cmlnaHQgKEMpIDE5OTUtMTk5OCBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkKLSsgKiBB bGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogVGhpcyBwYWNrYWdlIGlzIGFuIFNTTCBpbXBs ZW1lbnRhdGlvbiB3cml0dGVuCi0rICogYnkgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20p LgotKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgd3JpdHRlbiBzbyBhcyB0byBjb25mb3JtIHdp dGggTmV0c2NhcGVzIFNTTC4KLSsgKiAKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBmb3IgY29t bWVyY2lhbCBhbmQgbm9uLWNvbW1lcmNpYWwgdXNlIGFzIGxvbmcgYXMKLSsgKiB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnMgYXJlIGFoZWFyZWQgdG8uICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK LSsgKiBhcHBseSB0byBhbGwgY29kZSBmb3VuZCBpbiB0aGlzIGRpc3RyaWJ1dGlvbiwgYmUgaXQg dGhlIFJDNCwgUlNBLAotKyAqIGxoYXNoLCBERVMsIGV0Yy4sIGNvZGU7IG5vdCBqdXN0IHRoZSBT U0wgY29kZS4gIFRoZSBTU0wgZG9jdW1lbnRhdGlvbgotKyAqIGluY2x1ZGVkIHdpdGggdGhpcyBk aXN0cmlidXRpb24gaXMgY292ZXJlZCBieSB0aGUgc2FtZSBjb3B5cmlnaHQgdGVybXMKLSsgKiBl eGNlcHQgdGhhdCB0aGUgaG9sZGVyIGlzIFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKS4K LSsgKiAKLSsgKiBDb3B5cmlnaHQgcmVtYWlucyBFcmljIFlvdW5nJ3MsIGFuZCBhcyBzdWNoIGFu eSBDb3B5cmlnaHQgbm90aWNlcyBpbgotKyAqIHRoZSBjb2RlIGFyZSBub3QgdG8gYmUgcmVtb3Zl ZC4KLSsgKiBJZiB0aGlzIHBhY2thZ2UgaXMgdXNlZCBpbiBhIHByb2R1Y3QsIEVyaWMgWW91bmcg c2hvdWxkIGJlIGdpdmVuIGF0dHJpYnV0aW9uCi0rICogYXMgdGhlIGF1dGhvciBvZiB0aGUgcGFy dHMgb2YgdGhlIGxpYnJhcnkgdXNlZC4KLSsgKiBUaGlzIGNhbiBiZSBpbiB0aGUgZm9ybSBvZiBh IHRleHR1YWwgbWVzc2FnZSBhdCBwcm9ncmFtIHN0YXJ0dXAgb3IKLSsgKiBpbiBkb2N1bWVudGF0 aW9uIChvbmxpbmUgb3IgdGV4dHVhbCkgcHJvdmlkZWQgd2l0aCB0aGUgcGFja2FnZS4KLSsgKiAK LSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3 aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqIDEuIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgY29weXJpZ2h0Ci0rICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyLgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKyAqICAgIGRvY3Vt ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli dXRpb24uCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1 cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0rICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xs b3dpbmcgYWNrbm93bGVkZ2VtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5 cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5Ci0rICogICAgIEVyaWMgWW91bmcgKGVheUBj cnlwdHNvZnQuY29tKSIKLSsgKiAgICBUaGUgd29yZCAnY3J5cHRvZ3JhcGhpYycgY2FuIGJlIGxl ZnQgb3V0IGlmIHRoZSByb3VpbmVzIGZyb20gdGhlIGxpYnJhcnkKLSsgKiAgICBiZWluZyB1c2Vk IGFyZSBub3QgY3J5cHRvZ3JhcGhpYyByZWxhdGVkIDotKS4KLSsgKiA0LiBJZiB5b3UgaW5jbHVk ZSBhbnkgV2luZG93cyBzcGVjaWZpYyBjb2RlIChvciBhIGRlcml2YXRpdmUgdGhlcmVvZikgZnJv bSAKLSsgKiAgICB0aGUgYXBwcyBkaXJlY3RvcnkgKGFwcGxpY2F0aW9uIGNvZGUpIHlvdSBtdXN0 IGluY2x1ZGUgYW4gYWNrbm93bGVkZ2VtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkiCi0r ICogCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMn JyBBTkQKLSsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotKyAqIEFSRSBE SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMg QkUgTElBQkxFCi0rICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSsgKiBEQU1BR0VTIChJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotKyAq IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg SU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0rICogTElBQklMSVRZLCBPUiBU T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB WQotKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP RiBUSEUgUE9TU0lCSUxJVFkgT0YKLSsgKiBTVUNIIERBTUFHRS4KLSsgKiAKLSsgKiBUaGUgbGlj ZW5jZSBhbmQgZGlzdHJpYnV0aW9uIHRlcm1zIGZvciBhbnkgcHVibGljYWxseSBhdmFpbGFibGUg dmVyc2lvbiBvcgotKyAqIGRlcml2YXRpdmUgb2YgdGhpcyBjb2RlIGNhbm5vdCBiZSBjaGFuZ2Vk LiAgaS5lLiB0aGlzIGNvZGUgY2Fubm90IHNpbXBseSBiZQotKyAqIGNvcGllZCBhbmQgcHV0IHVu ZGVyIGFub3RoZXIgZGlzdHJpYnV0aW9uIGxpY2VuY2UKLSsgKiBbaW5jbHVkaW5nIHRoZSBHTlUg UHVibGljIExpY2VuY2UuXQotKyAqLwotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChj KSAxOTk4LTIwMDEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0r ICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqCi0rICog MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj b3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg Zm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg aW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp ZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gQWxsIGFkdmVy dGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCi0rICog ICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0r ICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9w ZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0 dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBU b29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bwotKyAqICAg IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3 aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJt aXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4K LSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3Qg YmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0 aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsgKiAgICBwZXJtaXNzaW9uIG9mIHRo ZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZv cm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVk Z21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQg YnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9v bGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJ UyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi0rICog RVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCi0rICogSVRTIENPTlRSSUJV VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKyAq IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs IEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT IE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ TkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotKyAqIFNUUklDVCBMSUFCSUxJVFks IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSsgKiBBUklTSU5H IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ U0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKyAqID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0rICoKLSsgKiBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2Fy ZSB3cml0dGVuIGJ5IEVyaWMgWW91bmcKLSsgKiAoZWF5QGNyeXB0c29mdC5jb20pLiAgVGhpcyBw cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltCi0rICogSHVkc29uICh0amhA Y3J5cHRzb2Z0LmNvbSkuCi0rICoKLSsgKi8KLSsKLSsvKiBNaW5pbWFsIHN0YW5kYWxvbmUgRklQ UyB2ZXJzaW9ucyBvZiBEaWdlc3Qgb3BlcmF0aW9ucyAqLwotKwotKyNkZWZpbmUgT1BFTlNTTF9G SVBTQVBJCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNp bmNsdWRlIDxvcGVuc3NsL29iamVjdHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSsj aW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rCi0r Y29uc3QgRVZQX01EICpGSVBTX2dldF9kaWdlc3RieW5pZChpbnQgbmlkKQotK3sKLSsgICAgc3dp dGNoIChuaWQpIHsKLSsgICAgY2FzZSBOSURfc2hhMToKLSsgICAgICAgIHJldHVybiBFVlBfc2hh MSgpOwotKwotKyAgICBjYXNlIE5JRF9zaGEyMjQ6Ci0rICAgICAgICByZXR1cm4gRVZQX3NoYTIy NCgpOwotKwotKyAgICBjYXNlIE5JRF9zaGEyNTY6Ci0rICAgICAgICByZXR1cm4gRVZQX3NoYTI1 NigpOwotKwotKyAgICBjYXNlIE5JRF9zaGEzODQ6Ci0rICAgICAgICByZXR1cm4gRVZQX3NoYTM4 NCgpOwotKwotKyAgICBjYXNlIE5JRF9zaGE1MTI6Ci0rICAgICAgICByZXR1cm4gRVZQX3NoYTUx MigpOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSt9 Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3Bvc3QuYy5maXBzIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcG9zdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2ZpcHMvZmlwc19wb3N0LmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5ODI0NTc5 NiArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcG9zdC5jCTIwMTUt MDQtMjIgMTY6MDg6NDAuMjk4MjQ1Nzk2ICswMjAwCi1AQCAtMCwwICsxLDIwMSBAQAotKy8qID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBB bGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9u LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0r ICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg Y29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29y IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4K LSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJl cyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93 aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdh cmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRo ZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiA0 LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qg bm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl ZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlz c2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBvcGVu c3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20g dGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5 ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0r ICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVk aXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxv d2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3Ig dXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsg KgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBg YEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQ T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVD VCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFU QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FV U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwK LSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI IERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNkZWZpbmUgT1BFTlNTTF9GSVBTQVBJCi0rCi0rI2lu Y2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotKyNp bmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgot KyNpbmNsdWRlIDxvcGVuc3NsL2Jpby5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KLSsj aW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9kc2EuaD4KLSsjaW5j bHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotKwotKyNpZmRlZiBPUEVOU1NM X0ZJUFMKLSsKLSsvKiBQb3dlciBvbiBzZWxmIHRlc3QgKFBPU1QpIHN1cHBvcnQgZnVuY3Rpb25z ICovCi0rCi0rIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjIGluY2x1ZGUgImZpcHNfbG9j bC5oIgotKwotKy8qIFJ1biBhbGwgc2VsZnRlc3RzICovCi0raW50IEZJUFNfc2VsZnRlc3Qodm9p ZCkKLSt7Ci0rICAgIGludCBydiA9IDE7Ci0rICAgIGlmICghRklQU19zZWxmdGVzdF9kcmJnKCkp Ci0rICAgICAgICBydiA9IDA7Ci0rICAgIGlmICghRklQU19zZWxmdGVzdF94OTMxKCkpCi0rICAg ICAgICBydiA9IDA7Ci0rICAgIGlmICghRklQU19zZWxmdGVzdF9zaGExKCkpCi0rICAgICAgICBy diA9IDA7Ci0rICAgIGlmICghRklQU19zZWxmdGVzdF9zaGEyKCkpCi0rICAgICAgICBydiA9IDA7 Ci0rICAgIGlmICghRklQU19zZWxmdGVzdF9obWFjKCkpCi0rICAgICAgICBydiA9IDA7Ci0rICAg IGlmICghRklQU19zZWxmdGVzdF9jbWFjKCkpCi0rICAgICAgICBydiA9IDA7Ci0rICAgIGlmICgh RklQU19zZWxmdGVzdF9hZXMoKSkKLSsgICAgICAgIHJ2ID0gMDsKLSsgICAgaWYgKCFGSVBTX3Nl bGZ0ZXN0X2Flc19jY20oKSkKLSsgICAgICAgIHJ2ID0gMDsKLSsgICAgaWYgKCFGSVBTX3NlbGZ0 ZXN0X2Flc19nY20oKSkKLSsgICAgICAgIHJ2ID0gMDsKLSsgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0 X2Flc194dHMoKSkKLSsgICAgICAgIHJ2ID0gMDsKLSsgICAgaWYgKCFGSVBTX3NlbGZ0ZXN0X2Rl cygpKQotKyAgICAgICAgcnYgPSAwOwotKyAgICBpZiAoIUZJUFNfc2VsZnRlc3RfcnNhKCkpCi0r ICAgICAgICBydiA9IDA7Ci0rICAgIGlmICghRklQU19zZWxmdGVzdF9kc2EoKSkKLSsgICAgICAg IHJ2ID0gMDsKLSsgICAgcmV0dXJuIHJ2OwotK30KLSsKLSsvKiBHZW5lcmFsaXplZCBwdWJsaWMg a2V5IHRlc3Qgcm91dGluZS4gU2lnbnMgYW5kIHZlcmlmaWVzIHRoZSBkYXRhCi0rICogc3VwcGxp ZWQgaW4gdGJzIHVzaW5nIG1lc2FnZSBkaWdlc3QgbWQgYW5kIHNldHRpbmcgb3B0aW9uIGRpZ2Vz dAotKyAqIGZsYWdzIG1kX2ZsYWdzLiBJZiB0aGUgJ2thdCcgcGFyYW1ldGVyIGlzIG5vdCBOVUxM IGl0IHdpbGwKLSsgKiBhZGRpdGlvbmFsbHkgY2hlY2sgdGhlIHNpZ25hdHVyZSBtYXRjaGVzIGl0 OiBhIGtub3duIGFuc3dlciB0ZXN0Ci0rICogVGhlIHN0cmluZyAiZmFpbF9zdHIiIGlzIHVzZWQg Zm9yIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzIGluIGNhc2UKLSsgKiBvZiBmYWlsdXJlLiBJZiAi cGtleSIgaXMgTlVMTCBqdXN0IHBlcmZvcm0gYSBtZXNzYWdlIGRpZ2VzdCBjaGVjay4KLSsgKi8K LSsKLStpbnQgZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KEVWUF9QS0VZICpwa2V5LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqdGJzLCBpbnQgdGJz bGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAq a2F0LCB1bnNpZ25lZCBpbnQga2F0bGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgRVZQX01EICpkaWdlc3QsIHVuc2lnbmVkIGludCBtZF9mbGFncywKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZhaWxfc3RyKQotK3sKLSsgICAgaW50IHJl dCA9IDA7Ci0rICAgIHVuc2lnbmVkIGNoYXIgc2lndG1wWzI1Nl0sICpzaWcgPSBzaWd0bXA7Ci0r ICAgIHVuc2lnbmVkIGludCBzaWdsZW47Ci0rICAgIEVWUF9NRF9DVFggbWN0eDsKLSsgICAgRVZQ X01EX0NUWF9pbml0KCZtY3R4KTsKLSsKLSsgICAgaWYgKGRpZ2VzdCA9PSBOVUxMKQotKyAgICAg ICAgZGlnZXN0ID0gRVZQX3NoYTI1NigpOwotKwotKyAgICBpZiAoKHBrZXktPnR5cGUgPT0gRVZQ X1BLRVlfUlNBKQotKyAgICAgICAgJiYgKFJTQV9zaXplKHBrZXktPnBrZXkucnNhKSA+IHNpemVv ZihzaWd0bXApKSkgewotKyAgICAgICAgc2lnID0gT1BFTlNTTF9tYWxsb2MoUlNBX3NpemUocGtl eS0+cGtleS5yc2EpKTsKLSsgICAgICAgIGlmICghc2lnKSB7Ci0rICAgICAgICAgICAgRklQU2Vy cihGSVBTX0ZfRklQU19QS0VZX1NJR05BVFVSRV9URVNULCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7 Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgaWYg KHRic2xlbiA9PSAtMSkKLSsgICAgICAgIHRic2xlbiA9IHN0cmxlbigoY2hhciAqKXRicyk7Ci0r Ci0rICAgIGlmIChtZF9mbGFncykKLSsgICAgICAgIEVWUF9NRF9DVFhfc2V0X2ZsYWdzKCZtY3R4 LCBtZF9mbGFncyk7Ci0rCi0rICAgIGlmICghRVZQX1NpZ25Jbml0X2V4KCZtY3R4LCBkaWdlc3Qs IE5VTEwpKQotKyAgICAgICAgZ290byBlcnJvcjsKLSsgICAgaWYgKCFFVlBfU2lnblVwZGF0ZSgm bWN0eCwgdGJzLCB0YnNsZW4pKQotKyAgICAgICAgZ290byBlcnJvcjsKLSsgICAgaWYgKCFFVlBf U2lnbkZpbmFsKCZtY3R4LCBzaWcsICZzaWdsZW4sIHBrZXkpKQotKyAgICAgICAgZ290byBlcnJv cjsKLSsKLSsgICAgaWYgKGthdCAmJiAoKHNpZ2xlbiAhPSBrYXRsZW4pIHx8IG1lbWNtcChrYXQs IHNpZywga2F0bGVuKSkpCi0rICAgICAgICBnb3RvIGVycm9yOwotKwotKyAgICBpZiAoIUVWUF9W ZXJpZnlJbml0X2V4KCZtY3R4LCBkaWdlc3QsIE5VTEwpKQotKyAgICAgICAgZ290byBlcnJvcjsK LSsgICAgaWYgKCFFVlBfVmVyaWZ5VXBkYXRlKCZtY3R4LCB0YnMsIHRic2xlbikpCi0rICAgICAg ICBnb3RvIGVycm9yOwotKyAgICByZXQgPSBFVlBfVmVyaWZ5RmluYWwoJm1jdHgsIHNpZywgc2ln bGVuLCBwa2V5KTsKLSsKLSsgZXJyb3I6Ci0rICAgIGlmIChzaWcgIT0gc2lndG1wKQotKyAgICAg ICAgT1BFTlNTTF9mcmVlKHNpZyk7Ci0rICAgIEVWUF9NRF9DVFhfY2xlYW51cCgmbWN0eCk7Ci0r ICAgIGlmIChyZXQgIT0gMSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19QS0VZX1NJ R05BVFVSRV9URVNULCBGSVBTX1JfVEVTVF9GQUlMVVJFKTsKLSsgICAgICAgIGlmIChmYWlsX3N0 cikKLSsgICAgICAgICAgICBFUlJfYWRkX2Vycm9yX2RhdGEoMiwgIlR5cGU9IiwgZmFpbF9zdHIp OwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotKy8q IEdlbmVyYWxpemVkIHN5bW1ldHJpYyBjaXBoZXIgdGVzdCByb3V0aW5lLiBFbmNyeXB0IGRhdGEs IHZlcmlmeSByZXN1bHQKLSsgKiBhZ2FpbnN0IGtub3duIGFuc3dlciwgZGVjcnlwdCBhbmQgY29t cGFyZSB3aXRoIG9yaWdpbmFsIHBsYWludGV4dC4KLSsgKi8KLSsKLStpbnQgZmlwc19jaXBoZXJf dGVzdChFVlBfQ0lQSEVSX0NUWCAqY3R4LCBjb25zdCBFVlBfQ0lQSEVSICpjaXBoZXIsCi0rICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LAotKyAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml2LAotKyAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBsYWludGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICBj b25zdCB1bnNpZ25lZCBjaGFyICpjaXBoZXJ0ZXh0LCBpbnQgbGVuKQotK3sKLSsgICAgdW5zaWdu ZWQgY2hhciBwbHRtcFtGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFXTsKLSsgICAgdW5zaWduZWQg Y2hhciBjaXRtcFtGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFXTsKLSsKLSsgICAgT1BFTlNTTF9h c3NlcnQobGVuIDw9IEZJUFNfTUFYX0NJUEhFUl9URVNUX1NJWkUpOwotKyAgICBtZW1zZXQocGx0 bXAsIDAsIEZJUFNfTUFYX0NJUEhFUl9URVNUX1NJWkUpOwotKyAgICBtZW1zZXQoY2l0bXAsIDAs IEZJUFNfTUFYX0NJUEhFUl9URVNUX1NJWkUpOwotKwotKyAgICBpZiAoRVZQX0NpcGhlckluaXRf ZXgoY3R4LCBjaXBoZXIsIE5VTEwsIGtleSwgaXYsIDEpIDw9IDApCi0rICAgICAgICByZXR1cm4g MDsKLSsgICAgaWYgKEVWUF9DaXBoZXIoY3R4LCBjaXRtcCwgcGxhaW50ZXh0LCBsZW4pIDw9IDAp Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYgKG1lbWNtcChjaXRtcCwgY2lwaGVydGV4dCwg bGVuKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoRVZQX0NpcGhlckluaXRfZXgoY3R4 LCBjaXBoZXIsIE5VTEwsIGtleSwgaXYsIDApIDw9IDApCi0rICAgICAgICByZXR1cm4gMDsKLSsg ICAgaWYgKEVWUF9DaXBoZXIoY3R4LCBwbHRtcCwgY2l0bXAsIGxlbikgPD0gMCkKLSsgICAgICAg IHJldHVybiAwOwotKyAgICBpZiAobWVtY21wKHBsdG1wLCBwbGFpbnRleHQsIGxlbikpCi0rICAg ICAgICByZXR1cm4gMDsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKyNlbmRpZgotZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yYW5kLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vZmlwcy9maXBzX3JhbmQuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2Zp cHNfcmFuZC5jLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTgyNDU3OTYgKzAyMDAKLSsrKyBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3JhbmQuYwkyMDE1LTA0LTIyIDE2OjA4OjQw LjI5ODI0NTc5NiArMDIwMAotQEAgLTAsMCArMSw0MjggQEAKLSsvKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAq IENvcHlyaWdodCAoYykgMjAwNyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNl cnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0r ICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBB bGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRo aXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRn bWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBi eSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29s a2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJP cGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRv Ci0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv ZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0 dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5z c2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg bWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBw ZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Np b24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBv ZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBh Y2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRl dmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3Bl blNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNP RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBB TlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xB SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMg Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U QUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO Q0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJ QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAq IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoK LSsgKi8KLSsKLSsvKgotKyAqIFRoaXMgaXMgYSBGSVBTIGFwcHJvdmVkIEFFUyBQUk5HIGJhc2Vk IG9uIEFOU0kgWDkuMzEgQS4yLjQuCi0rICovCi0rI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+ Ci0rI2luY2x1ZGUgImVfb3MuaCIKLSsKLSsvKiBJZiB3ZSBkb24ndCBkZWZpbmUgX1hPUEVOX1NP VVJDRV9FWFRFTkRFRCwgc3RydWN0IHRpbWV2YWwgd29uJ3QKLSsgICBiZSBkZWZpbmVkIGFuZCBn ZXR0aW1lb2ZkYXkoKSB3b24ndCBiZSBkZWNsYXJlZCB3aXRoIHN0cmljdCBjb21waWxlcnMKLSsg ICBsaWtlIERFQyBDIGluIEFOU0kgQyBtb2RlLiAgKi8KLSsjaWZuZGVmIF9YT1BFTl9TT1VSQ0Vf RVhURU5ERUQKLSsjIGRlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVEIDEKLSsjZW5kaWYKLSsK LSsjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+Ci0r I2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+ Ci0rI2lmICEoZGVmaW5lZChPUEVOU1NMX1NZU19XSU4zMikgfHwgZGVmaW5lZChPUEVOU1NMX1NZ U19WWFdPUktTKSkKLSsjIGluY2x1ZGUgPHN5cy90aW1lLmg+Ci0rI2VuZGlmCi0rI2lmIGRlZmlu ZWQoT1BFTlNTTF9TWVNfVlhXT1JLUykKLSsjIGluY2x1ZGUgPHRpbWUuaD4KLSsjZW5kaWYKLSsj aW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rI2lmbmRlZiBPUEVOU1NMX1NZU19XSU4zMgotKyMgaWZkZWYg T1BFTlNTTF9VTklTVEQKLSsjICBpbmNsdWRlIE9QRU5TU0xfVU5JU1RECi0rIyBlbHNlCi0rIyAg aW5jbHVkZSA8dW5pc3RkLmg+Ci0rIyBlbmRpZgotKyNlbmRpZgotKyNpbmNsdWRlIDxzdHJpbmcu aD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2luY2x1ZGUgImZpcHNfbG9jbC5oIgot KwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsKLSt2b2lkICpPUEVOU1NMX3N0ZGVycih2b2lkKTsK LSsKLSsjIGRlZmluZSBBRVNfQkxPQ0tfTEVOR1RIICAgICAgICAxNgotKwotKy8qIEFFUyBGSVBT IFBSTkcgaW1wbGVtZW50YXRpb24gKi8KLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICAgIGludCBz ZWVkZWQ7Ci0rICAgIGludCBrZXllZDsKLSsgICAgaW50IHRlc3RfbW9kZTsKLSsgICAgaW50IHNl Y29uZDsKLSsgICAgaW50IGVycm9yOwotKyAgICB1bnNpZ25lZCBsb25nIGNvdW50ZXI7Ci0rICAg IEFFU19LRVkga3M7Ci0rICAgIGludCB2cG9zOwotKyAgICAvKiBUZW1wb3Jhcnkgc3RvcmFnZSBm b3Iga2V5IGlmIGl0IGVxdWFscyBzZWVkIGxlbmd0aCAqLwotKyAgICB1bnNpZ25lZCBjaGFyIHRt cF9rZXlbQUVTX0JMT0NLX0xFTkdUSF07Ci0rICAgIHVuc2lnbmVkIGNoYXIgVltBRVNfQkxPQ0tf TEVOR1RIXTsKLSsgICAgdW5zaWduZWQgY2hhciBEVFtBRVNfQkxPQ0tfTEVOR1RIXTsKLSsgICAg dW5zaWduZWQgY2hhciBsYXN0W0FFU19CTE9DS19MRU5HVEhdOwotK30gRklQU19QUk5HX0NUWDsK LSsKLStzdGF0aWMgRklQU19QUk5HX0NUWCBzY3R4OwotKwotK3N0YXRpYyBpbnQgZmlwc19wcm5n X2ZhaWwgPSAwOwotKwotK3ZvaWQgRklQU194OTMxX3N0aWNrKGludCBvbm9mZikKLSt7Ci0rICAg IGZpcHNfcHJuZ19mYWlsID0gb25vZmY7Ci0rfQotKwotK3ZvaWQgRklQU19ybmdfc3RpY2sodm9p ZCkKLSt7Ci0rICAgIEZJUFNfeDkzMV9zdGljaygxKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZmlw c19yYW5kX3BybmdfcmVzZXQoRklQU19QUk5HX0NUWCAqIGN0eCkKLSt7Ci0rICAgIGN0eC0+c2Vl ZGVkID0gMDsKLSsgICAgY3R4LT5rZXllZCA9IDA7Ci0rICAgIGN0eC0+dGVzdF9tb2RlID0gMDsK LSsgICAgY3R4LT5jb3VudGVyID0gMDsKLSsgICAgY3R4LT5zZWNvbmQgPSAwOwotKyAgICBjdHgt PmVycm9yID0gMDsKLSsgICAgY3R4LT52cG9zID0gMDsKLSsgICAgT1BFTlNTTF9jbGVhbnNlKGN0 eC0+ViwgQUVTX0JMT0NLX0xFTkdUSCk7Ci0rICAgIE9QRU5TU0xfY2xlYW5zZSgmY3R4LT5rcywg c2l6ZW9mKEFFU19LRVkpKTsKLSt9Ci0rCi0rc3RhdGljIGludCBmaXBzX3NldF9wcm5nX2tleShG SVBTX1BSTkdfQ1RYICogY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqa2V5LCB1bnNpZ25lZCBpbnQga2V5bGVuKQotK3sKLSsgICAgaWYgKEZJ UFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VU X1BSTkdfS0VZLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsgICAgICAgIHJldHVybiAwOwot KyAgICB9Ci0rICAgIGlmIChrZXlsZW4gIT0gMTYgJiYga2V5bGVuICE9IDI0ICYmIGtleWxlbiAh PSAzMikgewotKyAgICAgICAgLyogZXJyb3I6IGludmFsaWQga2V5IHNpemUgKi8KLSsgICAgICAg IHJldHVybiAwOwotKyAgICB9Ci0rICAgIEFFU19zZXRfZW5jcnlwdF9rZXkoa2V5LCBrZXlsZW4g PDwgMywgJmN0eC0+a3MpOwotKyAgICBpZiAoa2V5bGVuID09IDE2KSB7Ci0rICAgICAgICBtZW1j cHkoY3R4LT50bXBfa2V5LCBrZXksIDE2KTsKLSsgICAgICAgIGN0eC0+a2V5ZWQgPSAyOwotKyAg ICB9IGVsc2UKLSsgICAgICAgIGN0eC0+a2V5ZWQgPSAxOwotKyAgICBjdHgtPnNlZWRlZCA9IDA7 Ci0rICAgIGN0eC0+c2Vjb25kID0gMDsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBp bnQgZmlwc19zZXRfcHJuZ19zZWVkKEZJUFNfUFJOR19DVFggKiBjdHgsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2VlZCwgdW5zaWduZWQgaW50 IHNlZWRsZW4pCi0rewotKyAgICB1bnNpZ25lZCBpbnQgaTsKLSsgICAgaWYgKCFjdHgtPmtleWVk KQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIC8qIEluIHRlc3QgbW9kZSBzZWVkIGlzIGp1c3Qg c3VwcGxpZWQgZGF0YSAqLwotKyAgICBpZiAoY3R4LT50ZXN0X21vZGUpIHsKLSsgICAgICAgIGlm IChzZWVkbGVuICE9IEFFU19CTE9DS19MRU5HVEgpCi0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0r ICAgICAgICBtZW1jcHkoY3R4LT5WLCBzZWVkLCBBRVNfQkxPQ0tfTEVOR1RIKTsKLSsgICAgICAg IGN0eC0+c2VlZGVkID0gMTsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rICAgIC8qIE91 dHNpZGUgdGVzdCBtb2RlIFhPUiBzdXBwbGllZCBkYXRhIHdpdGggZXhpc3Rpbmcgc2VlZCAqLwot KyAgICBmb3IgKGkgPSAwOyBpIDwgc2VlZGxlbjsgaSsrKSB7Ci0rICAgICAgICBjdHgtPlZbY3R4 LT52cG9zKytdIF49IHNlZWRbaV07Ci0rICAgICAgICBpZiAoY3R4LT52cG9zID09IEFFU19CTE9D S19MRU5HVEgpIHsKLSsgICAgICAgICAgICBjdHgtPnZwb3MgPSAwOwotKyAgICAgICAgICAgIC8q IFNwZWNpYWwgY2FzZSBpZiBmaXJzdCBzZWVkIGFuZCBrZXkgbGVuZ3RoIGVxdWFscwotKyAgICAg ICAgICAgICAqIGJsb2NrIHNpemUgY2hlY2sga2V5IGFuZCBzZWVkIGRvIG5vdCBtYXRjaC4KLSsg ICAgICAgICAgICAgKi8KLSsgICAgICAgICAgICBpZiAoY3R4LT5rZXllZCA9PSAyKSB7Ci0rICAg ICAgICAgICAgICAgIGlmICghbWVtY21wKGN0eC0+dG1wX2tleSwgY3R4LT5WLCAxNikpIHsKLSsg ICAgICAgICAgICAgICAgICAgIFJBTkRlcnIoUkFORF9GX0ZJUFNfU0VUX1BSTkdfU0VFRCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUkFORF9SX1BSTkdfU0VFRF9NVVNUX05PVF9NQVRD SF9LRVkpOwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAg IH0KLSsgICAgICAgICAgICAgICAgT1BFTlNTTF9jbGVhbnNlKGN0eC0+dG1wX2tleSwgMTYpOwot KyAgICAgICAgICAgICAgICBjdHgtPmtleWVkID0gMTsKLSsgICAgICAgICAgICB9Ci0rICAgICAg ICAgICAgY3R4LT5zZWVkZWQgPSAxOwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIHJldHVybiAx OwotK30KLSsKLStzdGF0aWMgaW50IGZpcHNfc2V0X3Rlc3RfbW9kZShGSVBTX1BSTkdfQ1RYICog Y3R4KQotK3sKLSsgICAgaWYgKGN0eC0+a2V5ZWQpIHsKLSsgICAgICAgIFJBTkRlcnIoUkFORF9G X0ZJUFNfU0VUX1RFU1RfTU9ERSwgUkFORF9SX1BSTkdfS0VZRUQpOwotKyAgICAgICAgcmV0dXJu IDA7Ci0rICAgIH0KLSsgICAgY3R4LT50ZXN0X21vZGUgPSAxOwotKyAgICByZXR1cm4gMTsKLSt9 Ci0rCi0raW50IEZJUFNfeDkzMV90ZXN0X21vZGUodm9pZCkKLSt7Ci0rICAgIHJldHVybiBmaXBz X3NldF90ZXN0X21vZGUoJnNjdHgpOwotK30KLSsKLStpbnQgRklQU19yYW5kX3Rlc3RfbW9kZSh2 b2lkKQotK3sKLSsgICAgcmV0dXJuIGZpcHNfc2V0X3Rlc3RfbW9kZSgmc2N0eCk7Ci0rfQotKwot K2ludCBGSVBTX3g5MzFfc2V0X2R0KHVuc2lnbmVkIGNoYXIgKmR0KQotK3sKLSsgICAgaWYgKCFz Y3R4LnRlc3RfbW9kZSkgewotKyAgICAgICAgUkFORGVycihSQU5EX0ZfRklQU19YOTMxX1NFVF9E VCwgUkFORF9SX05PVF9JTl9URVNUX01PREUpOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0K LSsgICAgbWVtY3B5KHNjdHguRFQsIGR0LCBBRVNfQkxPQ0tfTEVOR1RIKTsKLSsgICAgcmV0dXJu IDE7Ci0rfQotKwotK2ludCBGSVBTX3JhbmRfc2V0X2R0KHVuc2lnbmVkIGNoYXIgKmR0KQotK3sK LSsgICAgaWYgKCFzY3R4LnRlc3RfbW9kZSkgewotKyAgICAgICAgUkFORGVycihSQU5EX0ZfRklQ U19SQU5EX1NFVF9EVCwgUkFORF9SX05PVF9JTl9URVNUX01PREUpOwotKyAgICAgICAgcmV0dXJu IDA7Ci0rICAgIH0KLSsgICAgbWVtY3B5KHNjdHguRFQsIGR0LCBBRVNfQkxPQ0tfTEVOR1RIKTsK LSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3ZvaWQgRklQU19nZXRfdGltZXZlYyh1bnNpZ25lZCBj aGFyICpidWYsIHVuc2lnbmVkIGxvbmcgKnBjdHIpCi0rewotKyMgaWZkZWYgT1BFTlNTTF9TWVNf V0lOMzIKLSsgICAgRklMRVRJTUUgZnQ7Ci0rIyBlbGlmIGRlZmluZWQoT1BFTlNTTF9TWVNfVlhX T1JLUykKLSsgICAgc3RydWN0IHRpbWVzcGVjIHRzOwotKyMgZWxzZQotKyAgICBzdHJ1Y3QgdGlt ZXZhbCB0djsKLSsjIGVuZGlmCi0rCi0rIyBpZm5kZWYgR0VUUElEX0lTX01FQU5JTkdMRVNTCi0r ICAgIHVuc2lnbmVkIGxvbmcgcGlkOwotKyMgZW5kaWYKLSsKLSsjIGlmZGVmIE9QRU5TU0xfU1lT X1dJTjMyCi0rICAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZmdCk7Ci0rICAgIGJ1ZlswXSA9 ICh1bnNpZ25lZCBjaGFyKShmdC5kd0hpZ2hEYXRlVGltZSAmIDB4ZmYpOwotKyAgICBidWZbMV0g PSAodW5zaWduZWQgY2hhcikoKGZ0LmR3SGlnaERhdGVUaW1lID4+IDgpICYgMHhmZik7Ci0rICAg IGJ1ZlsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoZnQuZHdIaWdoRGF0ZVRpbWUgPj4gMTYpICYgMHhm Zik7Ci0rICAgIGJ1ZlszXSA9ICh1bnNpZ25lZCBjaGFyKSgoZnQuZHdIaWdoRGF0ZVRpbWUgPj4g MjQpICYgMHhmZik7Ci0rICAgIGJ1Zls0XSA9ICh1bnNpZ25lZCBjaGFyKShmdC5kd0xvd0RhdGVU aW1lICYgMHhmZik7Ci0rICAgIGJ1Zls1XSA9ICh1bnNpZ25lZCBjaGFyKSgoZnQuZHdMb3dEYXRl VGltZSA+PiA4KSAmIDB4ZmYpOwotKyAgICBidWZbNl0gPSAodW5zaWduZWQgY2hhcikoKGZ0LmR3 TG93RGF0ZVRpbWUgPj4gMTYpICYgMHhmZik7Ci0rICAgIGJ1Zls3XSA9ICh1bnNpZ25lZCBjaGFy KSgoZnQuZHdMb3dEYXRlVGltZSA+PiAyNCkgJiAweGZmKTsKLSsjIGVsaWYgZGVmaW5lZChPUEVO U1NMX1NZU19WWFdPUktTKQotKyAgICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHMp OwotKyAgICBidWZbMF0gPSAodW5zaWduZWQgY2hhcikodHMudHZfc2VjICYgMHhmZik7Ci0rICAg IGJ1ZlsxXSA9ICh1bnNpZ25lZCBjaGFyKSgodHMudHZfc2VjID4+IDgpICYgMHhmZik7Ci0rICAg IGJ1ZlsyXSA9ICh1bnNpZ25lZCBjaGFyKSgodHMudHZfc2VjID4+IDE2KSAmIDB4ZmYpOwotKyAg ICBidWZbM10gPSAodW5zaWduZWQgY2hhcikoKHRzLnR2X3NlYyA+PiAyNCkgJiAweGZmKTsKLSsg ICAgYnVmWzRdID0gKHVuc2lnbmVkIGNoYXIpKHRzLnR2X25zZWMgJiAweGZmKTsKLSsgICAgYnVm WzVdID0gKHVuc2lnbmVkIGNoYXIpKCh0cy50dl9uc2VjID4+IDgpICYgMHhmZik7Ci0rICAgIGJ1 Zls2XSA9ICh1bnNpZ25lZCBjaGFyKSgodHMudHZfbnNlYyA+PiAxNikgJiAweGZmKTsKLSsgICAg YnVmWzddID0gKHVuc2lnbmVkIGNoYXIpKCh0cy50dl9uc2VjID4+IDI0KSAmIDB4ZmYpOwotKyMg ZWxzZQotKyAgICBnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKLSsgICAgYnVmWzBdID0gKHVuc2ln bmVkIGNoYXIpKHR2LnR2X3NlYyAmIDB4ZmYpOwotKyAgICBidWZbMV0gPSAodW5zaWduZWQgY2hh cikoKHR2LnR2X3NlYyA+PiA4KSAmIDB4ZmYpOwotKyAgICBidWZbMl0gPSAodW5zaWduZWQgY2hh cikoKHR2LnR2X3NlYyA+PiAxNikgJiAweGZmKTsKLSsgICAgYnVmWzNdID0gKHVuc2lnbmVkIGNo YXIpKCh0di50dl9zZWMgPj4gMjQpICYgMHhmZik7Ci0rICAgIGJ1Zls0XSA9ICh1bnNpZ25lZCBj aGFyKSh0di50dl91c2VjICYgMHhmZik7Ci0rICAgIGJ1Zls1XSA9ICh1bnNpZ25lZCBjaGFyKSgo dHYudHZfdXNlYyA+PiA4KSAmIDB4ZmYpOwotKyAgICBidWZbNl0gPSAodW5zaWduZWQgY2hhciko KHR2LnR2X3VzZWMgPj4gMTYpICYgMHhmZik7Ci0rICAgIGJ1Zls3XSA9ICh1bnNpZ25lZCBjaGFy KSgodHYudHZfdXNlYyA+PiAyNCkgJiAweGZmKTsKLSsjIGVuZGlmCi0rICAgIGJ1Zls4XSA9ICh1 bnNpZ25lZCBjaGFyKSgqcGN0ciAmIDB4ZmYpOwotKyAgICBidWZbOV0gPSAodW5zaWduZWQgY2hh cikoKCpwY3RyID4+IDgpICYgMHhmZik7Ci0rICAgIGJ1ZlsxMF0gPSAodW5zaWduZWQgY2hhciko KCpwY3RyID4+IDE2KSAmIDB4ZmYpOwotKyAgICBidWZbMTFdID0gKHVuc2lnbmVkIGNoYXIpKCgq cGN0ciA+PiAyNCkgJiAweGZmKTsKLSsKLSsgICAgKCpwY3RyKSsrOwotKwotKyMgaWZuZGVmIEdF VFBJRF9JU19NRUFOSU5HTEVTUwotKyAgICBwaWQgPSAodW5zaWduZWQgbG9uZylnZXRwaWQoKTsK LSsgICAgYnVmWzEyXSA9ICh1bnNpZ25lZCBjaGFyKShwaWQgJiAweGZmKTsKLSsgICAgYnVmWzEz XSA9ICh1bnNpZ25lZCBjaGFyKSgocGlkID4+IDgpICYgMHhmZik7Ci0rICAgIGJ1ZlsxNF0gPSAo dW5zaWduZWQgY2hhcikoKHBpZCA+PiAxNikgJiAweGZmKTsKLSsgICAgYnVmWzE1XSA9ICh1bnNp Z25lZCBjaGFyKSgocGlkID4+IDI0KSAmIDB4ZmYpOwotKyMgZW5kaWYKLSt9Ci0rCi0rc3RhdGlj IGludCBmaXBzX3JhbmQoRklQU19QUk5HX0NUWCAqIGN0eCwKLSsgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBjaGFyICpvdXQsIHVuc2lnbmVkIGludCBvdXRsZW4pCi0rewotKyAgICB1bnNp Z25lZCBjaGFyIFJbQUVTX0JMT0NLX0xFTkdUSF0sIElbQUVTX0JMT0NLX0xFTkdUSF07Ci0rICAg IHVuc2lnbmVkIGNoYXIgdG1wW0FFU19CTE9DS19MRU5HVEhdOwotKyAgICBpbnQgaTsKLSsgICAg aWYgKGN0eC0+ZXJyb3IpIHsKLSsgICAgICAgIFJBTkRlcnIoUkFORF9GX0ZJUFNfUkFORCwgUkFO RF9SX1BSTkdfRVJST1IpOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgICAgaWYgKCFj dHgtPmtleWVkKSB7Ci0rICAgICAgICBSQU5EZXJyKFJBTkRfRl9GSVBTX1JBTkQsIFJBTkRfUl9O T19LRVlfU0VUKTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rICAgIGlmICghY3R4LT5z ZWVkZWQpIHsKLSsgICAgICAgIFJBTkRlcnIoUkFORF9GX0ZJUFNfUkFORCwgUkFORF9SX1BSTkdf Tk9UX1NFRURFRCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICBmb3IgKDs7KSB7 Ci0rICAgICAgICBpZiAoIWN0eC0+dGVzdF9tb2RlKQotKyAgICAgICAgICAgIEZJUFNfZ2V0X3Rp bWV2ZWMoY3R4LT5EVCwgJmN0eC0+Y291bnRlcik7Ci0rICAgICAgICBBRVNfZW5jcnlwdChjdHgt PkRULCBJLCAmY3R4LT5rcyk7Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQUVTX0JMT0NLX0xF TkdUSDsgaSsrKQotKyAgICAgICAgICAgIHRtcFtpXSA9IElbaV0gXiBjdHgtPlZbaV07Ci0rICAg ICAgICBBRVNfZW5jcnlwdCh0bXAsIFIsICZjdHgtPmtzKTsKLSsgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBBRVNfQkxPQ0tfTEVOR1RIOyBpKyspCi0rICAgICAgICAgICAgdG1wW2ldID0gUltpXSBe IElbaV07Ci0rICAgICAgICBBRVNfZW5jcnlwdCh0bXAsIGN0eC0+ViwgJmN0eC0+a3MpOwotKyAg ICAgICAgLyogQ29udGludW91cyBQUk5HIHRlc3QgKi8KLSsgICAgICAgIGlmIChjdHgtPnNlY29u ZCkgewotKyAgICAgICAgICAgIGlmIChmaXBzX3BybmdfZmFpbCkKLSsgICAgICAgICAgICAgICAg bWVtY3B5KGN0eC0+bGFzdCwgUiwgQUVTX0JMT0NLX0xFTkdUSCk7Ci0rICAgICAgICAgICAgaWYg KCFtZW1jbXAoUiwgY3R4LT5sYXN0LCBBRVNfQkxPQ0tfTEVOR1RIKSkgewotKyAgICAgICAgICAg ICAgICBSQU5EZXJyKFJBTkRfRl9GSVBTX1JBTkQsIFJBTkRfUl9QUk5HX1NUVUNLKTsKLSsgICAg ICAgICAgICAgICAgY3R4LT5lcnJvciA9IDE7Ci0rICAgICAgICAgICAgICAgIGZpcHNfc2V0X3Nl bGZ0ZXN0X2ZhaWwoKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAg fQotKyAgICAgICAgfQotKyAgICAgICAgbWVtY3B5KGN0eC0+bGFzdCwgUiwgQUVTX0JMT0NLX0xF TkdUSCk7Ci0rICAgICAgICBpZiAoIWN0eC0+c2Vjb25kKSB7Ci0rICAgICAgICAgICAgY3R4LT5z ZWNvbmQgPSAxOwotKyAgICAgICAgICAgIGlmICghY3R4LT50ZXN0X21vZGUpCi0rICAgICAgICAg ICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKG91dGxlbiA8PSBB RVNfQkxPQ0tfTEVOR1RIKSB7Ci0rICAgICAgICAgICAgbWVtY3B5KG91dCwgUiwgb3V0bGVuKTsK LSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIG1lbWNweShvdXQs IFIsIEFFU19CTE9DS19MRU5HVEgpOwotKyAgICAgICAgb3V0ICs9IEFFU19CTE9DS19MRU5HVEg7 Ci0rICAgICAgICBvdXRsZW4gLT0gQUVTX0JMT0NLX0xFTkdUSDsKLSsgICAgfQotKyAgICByZXR1 cm4gMTsKLSt9Ci0rCi0raW50IEZJUFNfeDkzMV9zZXRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIg KmtleSwgaW50IGtleWxlbikKLSt7Ci0rICAgIGludCByZXQ7Ci0rICAgIENSWVBUT193X2xvY2so Q1JZUFRPX0xPQ0tfUkFORCk7Ci0rICAgIHJldCA9IGZpcHNfc2V0X3Bybmdfa2V5KCZzY3R4LCBr ZXksIGtleWxlbik7Ci0rICAgIENSWVBUT193X3VubG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsg ICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0raW50IEZJUFNfcmFuZF9zZXRfa2V5KGNvbnN0IHVuc2ln bmVkIGNoYXIgKmtleSwgRklQU19SQU5EX1NJWkVfVCBrZXlsZW4pCi0rewotKyAgICByZXR1cm4g RklQU194OTMxX3NldF9rZXkoa2V5LCBrZXlsZW4pOwotK30KLSsKLStpbnQgRklQU194OTMxX3Nl ZWQoY29uc3Qgdm9pZCAqc2VlZCwgaW50IHNlZWRsZW4pCi0rewotKyAgICBpbnQgcmV0OwotKyAg ICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX1JBTkQpOwotKyAgICByZXQgPSBmaXBzX3NldF9w cm5nX3NlZWQoJnNjdHgsIHNlZWQsIHNlZWRsZW4pOwotKyAgICBDUllQVE9fd191bmxvY2soQ1JZ UFRPX0xPQ0tfUkFORCk7Ci0rICAgIHJldHVybiByZXQ7Ci0rfQotKwotK2ludCBGSVBTX3g5MzFf Ynl0ZXModW5zaWduZWQgY2hhciAqb3V0LCBpbnQgY291bnQpCi0rewotKyAgICBpbnQgcmV0Owot KyAgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX1JBTkQpOwotKyAgICByZXQgPSBmaXBzX3Jh bmQoJnNjdHgsIG91dCwgY291bnQpOwotKyAgICBDUllQVE9fd191bmxvY2soQ1JZUFRPX0xPQ0tf UkFORCk7Ci0rICAgIHJldHVybiByZXQ7Ci0rfQotKwotK2ludCBGSVBTX3g5MzFfc3RhdHVzKHZv aWQpCi0rewotKyAgICBpbnQgcmV0OwotKyAgICBDUllQVE9fcl9sb2NrKENSWVBUT19MT0NLX1JB TkQpOwotKyAgICByZXQgPSBzY3R4LnNlZWRlZDsKLSsgICAgQ1JZUFRPX3JfdW5sb2NrKENSWVBU T19MT0NLX1JBTkQpOwotKyAgICByZXR1cm4gcmV0OwotK30KLSsKLSt2b2lkIEZJUFNfeDkzMV9y ZXNldCh2b2lkKQotK3sKLSsgICAgQ1JZUFRPX3dfbG9jayhDUllQVE9fTE9DS19SQU5EKTsKLSsg ICAgZmlwc19yYW5kX3BybmdfcmVzZXQoJnNjdHgpOwotKyAgICBDUllQVE9fd191bmxvY2soQ1JZ UFRPX0xPQ0tfUkFORCk7Ci0rfQotKwotK3N0YXRpYyBpbnQgZmlwc19kb19yYW5kX3NlZWQoY29u c3Qgdm9pZCAqc2VlZCwgaW50IHNlZWRsZW4pCi0rewotKyAgICBGSVBTX3g5MzFfc2VlZChzZWVk LCBzZWVkbGVuKTsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbnQgZmlwc19kb19y YW5kX2FkZChjb25zdCB2b2lkICpzZWVkLCBpbnQgc2VlZGxlbiwgZG91YmxlIGFkZF9lbnRyb3B5 KQotK3sKLSsgICAgRklQU194OTMxX3NlZWQoc2VlZCwgc2VlZGxlbik7Ci0rICAgIHJldHVybiAx OwotK30KLSsKLStzdGF0aWMgY29uc3QgUkFORF9NRVRIT0QgcmFuZF94OTMxX21ldGggPSB7Ci0r ICAgIGZpcHNfZG9fcmFuZF9zZWVkLAotKyAgICBGSVBTX3g5MzFfYnl0ZXMsCi0rICAgIEZJUFNf eDkzMV9yZXNldCwKLSsgICAgZmlwc19kb19yYW5kX2FkZCwKLSsgICAgRklQU194OTMxX2J5dGVz LAotKyAgICBGSVBTX3g5MzFfc3RhdHVzCi0rfTsKLSsKLStjb25zdCBSQU5EX01FVEhPRCAqRklQ U194OTMxX21ldGhvZCh2b2lkKQotK3sKLSsgICAgcmV0dXJuICZyYW5kX3g5MzFfbWV0aDsKLSt9 Ci0rCi0rI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3Jh bmQuaC5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcmFuZC5oCi0tLS0gb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yYW5kLmguZmlwcwkyMDE1LTA0LTIyIDE2OjA4 OjQwLjI5ODI0NTc5NiArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNf cmFuZC5oCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk4MjQ1Nzk2ICswMjAwCi1AQCAtMCwwICsxLDE2 MyBAQAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDAzIFRoZSBPcGVuU1NM IFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24g YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICog bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj b25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAK LSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50 YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRp c3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlv bmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxh eSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5j bHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBm b3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyki Ci0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFBy b2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJv ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdy aXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QK LSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBk ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsg KiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlv ciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAq Ci0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRh aW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHBy b2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QK LSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNz bC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5T U0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdB UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVE IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9w ZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBU TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NT IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAq IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH TElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJ TElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpZm5kZWYgSEVBREVSX0ZJUFNf UkFORF9ICi0rIyBkZWZpbmUgSEVBREVSX0ZJUFNfUkFORF9ICi0rCi0rIyBpbmNsdWRlIDxvcGVu c3NsL2Flcy5oPgotKyMgaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLSsjIGluY2x1ZGUgPG9wZW5z c2wvaG1hYy5oPgotKyMgaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+Ci0rCi0rIyBpZmRlZiBPUEVO U1NMX0ZJUFMKLSsKLSsjICBpZmRlZiAgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjICBl bmRpZgotKwotKyAgICBpbnQgRklQU194OTMxX3NldF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAq a2V5LCBpbnQga2V5bGVuKTsKLSsgICAgaW50IEZJUFNfeDkzMV9zZWVkKGNvbnN0IHZvaWQgKmJ1 ZiwgaW50IG51bSk7Ci0rICAgIGludCBGSVBTX3g5MzFfYnl0ZXModW5zaWduZWQgY2hhciAqb3V0 LCBpbnQgb3V0bGVuKTsKLSsKLSsgICAgaW50IEZJUFNfeDkzMV90ZXN0X21vZGUodm9pZCk7Ci0r ICAgIHZvaWQgRklQU194OTMxX3Jlc2V0KHZvaWQpOwotKyAgICBpbnQgRklQU194OTMxX3NldF9k dCh1bnNpZ25lZCBjaGFyICpkdCk7Ci0rCi0rICAgIGludCBGSVBTX3g5MzFfc3RhdHVzKHZvaWQp OwotKwotKyAgICBjb25zdCBSQU5EX01FVEhPRCAqRklQU194OTMxX21ldGhvZCh2b2lkKTsKLSsK LSsgICAgdHlwZWRlZiBzdHJ1Y3QgZHJiZ19jdHhfc3QgRFJCR19DVFg7Ci0rLyogRFJCRyBleHRl cm5hbCBmbGFncyAqLwotKy8qIEZsYWcgZm9yIENUUiBtb2RlIG9ubHk6IHVzZSBkZXJpdmF0aW9u IGZ1bmN0aW9uIGN0cl9kZiAqLwotKyMgIGRlZmluZSBEUkJHX0ZMQUdfQ1RSX1VTRV9ERiAgICAg ICAgICAgIDB4MQotKy8qIFBSTkcgaXMgaW4gdGVzdCBzdGF0ZSAqLwotKyMgIGRlZmluZSBEUkJH X0ZMQUdfVEVTVCAgICAgICAgICAgICAgICAgIDB4MgotKwotKyAgICBEUkJHX0NUWCAqRklQU19k cmJnX25ldyhpbnQgdHlwZSwgdW5zaWduZWQgaW50IGZsYWdzKTsKLSsgICAgaW50IEZJUFNfZHJi Z19pbml0KERSQkdfQ1RYICpkY3R4LCBpbnQgdHlwZSwgdW5zaWduZWQgaW50IGZsYWdzKTsKLSsg ICAgaW50IEZJUFNfZHJiZ19pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwZXJzLCBzaXplX3QgcGVy c2xlbik7Ci0rICAgIGludCBGSVBTX2RyYmdfcmVzZWVkKERSQkdfQ1RYICpkY3R4LCBjb25zdCB1 bnNpZ25lZCBjaGFyICphZGluLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYWRp bmxlbik7Ci0rICAgIGludCBGSVBTX2RyYmdfZ2VuZXJhdGUoRFJCR19DVFggKmRjdHgsIHVuc2ln bmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgcHJlZGljdGlvbl9yZXNpc3RhbmNlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuKTsKLSsKLSsgICAgaW50 IEZJUFNfZHJiZ191bmluc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4KTsKLSsgICAgdm9pZCBGSVBT X2RyYmdfZnJlZShEUkJHX0NUWCAqZGN0eCk7Ci0rCi0rICAgIGludCBGSVBTX2RyYmdfc2V0X2Nh bGxiYWNrcyhEUkJHX0NUWCAqZGN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCAoKmdldF9lbnRyb3B5KSAoRFJCR19DVFggKmN0eCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKnBv dXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBlbnRyb3B5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplX3QgbWluX2xlbiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1heF9sZW4pLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmNsZWFudXBfZW50cm9weSkgKERSQkdf Q1RYICpjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvbGVuKSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBlbnRyb3B5X2Jsb2NrbGVuLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICgqZ2V0X25vbmNlKSAoRFJCR19DVFgg KmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGNoYXIgKipwb3V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVudHJvcHksCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWluX2xlbiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBt YXhfbGVuKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpjbGVhbnVw X25vbmNlKSAoRFJCR19DVFggKmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2xlbikp OwotKwotKyAgICBpbnQgRklQU19kcmJnX3NldF9yYW5kX2NhbGxiYWNrcyhEUkJHX0NUWCAqZGN0 eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICgqZ2V0X2Fk aW4pIChEUkJHX0NUWCAqY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnBvdXQpLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqY2xlYW51cF9hZGluKSAoRFJCR19D VFggKmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvbGVuKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqcmFuZF9zZWVkX2NiKSAoRFJC R19DVFggKmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnVmLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtKSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqcmFuZF9hZGRfY2IpIChEUkJHX0NUWCAq Y3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHZvaWQgKmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBlbnRyb3B5KSk7Ci0r Ci0rICAgIHZvaWQgKkZJUFNfZHJiZ19nZXRfYXBwX2RhdGEoRFJCR19DVFggKmN0eCk7Ci0rICAg IHZvaWQgRklQU19kcmJnX3NldF9hcHBfZGF0YShEUkJHX0NUWCAqY3R4LCB2b2lkICphcHBfZGF0 YSk7Ci0rICAgIHNpemVfdCBGSVBTX2RyYmdfZ2V0X2Jsb2NrbGVuZ3RoKERSQkdfQ1RYICpkY3R4 KTsKLSsgICAgaW50IEZJUFNfZHJiZ19nZXRfc3RyZW5ndGgoRFJCR19DVFggKmRjdHgpOwotKyAg ICB2b2lkIEZJUFNfZHJiZ19zZXRfY2hlY2tfaW50ZXJ2YWwoRFJCR19DVFggKmRjdHgsIGludCBp bnRlcnZhbCk7Ci0rICAgIHZvaWQgRklQU19kcmJnX3NldF9yZXNlZWRfaW50ZXJ2YWwoRFJCR19D VFggKmRjdHgsIGludCBpbnRlcnZhbCk7Ci0rCi0rICAgIGludCBGSVBTX2RyYmdfaGVhbHRoX2No ZWNrKERSQkdfQ1RYICpkY3R4KTsKLSsKLSsgICAgRFJCR19DVFggKkZJUFNfZ2V0X2RlZmF1bHRf ZHJiZyh2b2lkKTsKLSsgICAgY29uc3QgUkFORF9NRVRIT0QgKkZJUFNfZHJiZ19tZXRob2Qodm9p ZCk7Ci0rCi0rICAgIGludCBGSVBTX3JhbmRfc2V0X21ldGhvZChjb25zdCBSQU5EX01FVEhPRCAq bWV0aCk7Ci0rICAgIGNvbnN0IFJBTkRfTUVUSE9EICpGSVBTX3JhbmRfZ2V0X21ldGhvZCh2b2lk KTsKLSsKLSsgICAgdm9pZCBGSVBTX3JhbmRfc2V0X2JpdHMoaW50IG5iaXRzKTsKLSsKLSsgICAg aW50IEZJUFNfcmFuZF9zdHJlbmd0aCh2b2lkKTsKLSsKLSsvKiAxLjAuMCBjb21wYXQgZnVuY3Rp b25zICovCi0rICAgIGludCBGSVBTX3JhbmRfc2V0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICpr ZXksIEZJUFNfUkFORF9TSVpFX1Qga2V5bGVuKTsKLSsgICAgaW50IEZJUFNfcmFuZF9zZWVkKGNv bnN0IHZvaWQgKmJ1ZiwgRklQU19SQU5EX1NJWkVfVCBudW0pOwotKyAgICBpbnQgRklQU19yYW5k X2J5dGVzKHVuc2lnbmVkIGNoYXIgKm91dCwgRklQU19SQU5EX1NJWkVfVCBvdXRsZW4pOwotKyAg ICBpbnQgRklQU19yYW5kX3Rlc3RfbW9kZSh2b2lkKTsKLSsgICAgdm9pZCBGSVBTX3JhbmRfcmVz ZXQodm9pZCk7Ci0rICAgIGludCBGSVBTX3JhbmRfc2V0X2R0KHVuc2lnbmVkIGNoYXIgKmR0KTsK LSsgICAgaW50IEZJUFNfcmFuZF9zdGF0dXModm9pZCk7Ci0rICAgIGNvbnN0IFJBTkRfTUVUSE9E ICpGSVBTX3JhbmRfbWV0aG9kKHZvaWQpOwotKwotKyMgIGlmZGVmICBfX2NwbHVzcGx1cwotK30K LSsjICBlbmRpZgotKyMgZW5kaWYKLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9maXBzL2ZpcHNfcmFuZF9sY2wuaC5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBz L2ZpcHNfcmFuZF9sY2wuaAotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcmFu ZF9sY2wuaC5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk4MjQ1Nzk2ICswMjAwCi0rKysgb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX2xjbC5oCTIwMTUtMDQtMjIgMTY6MDg6 NDAuMjk4MjQ1Nzk2ICswMjAwCi1AQCAtMCwwICsxLDIxMyBAQAotKy8qIGZpcHMvcmFuZC9maXBz X3JhbmRfbGNsLmggKi8KLSsvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZl QG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKLSsgKiBwcm9qZWN0LgotKyAqLwotKy8qID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBB bGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9u LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0r ICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg Y29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29y IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4K LSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJl cyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93 aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdh cmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRo ZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCi0rICoKLSsgKiA0 LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qg bm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl ZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlz c2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBsaWNl bnNpbmdAT3BlblNTTC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp cyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJP cGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICog ICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0 cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2lu ZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMg c29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNl IGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgot KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFT IElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NF IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBP UgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg REFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwg T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VE IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsg KiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF UldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G VFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB TUFHRS4KLSsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotKyAqLwotKwotK3R5cGVkZWYgc3RydWN0IGRyYmdfaGFz aF9jdHhfc3QgRFJCR19IQVNIX0NUWDsKLSt0eXBlZGVmIHN0cnVjdCBkcmJnX2htYWNfY3R4X3N0 IERSQkdfSE1BQ19DVFg7Ci0rdHlwZWRlZiBzdHJ1Y3QgZHJiZ19jdHJfY3R4X3N0IERSQkdfQ1RS X0NUWDsKLSsKLSsvKiA4ODggYml0cyBmcm9tIDEwLjEgdGFibGUgMiAqLwotKyNkZWZpbmUgSEFT SF9QUk5HX01BWF9TRUVETEVOICAgMTExCi0rCi0rc3RydWN0IGRyYmdfaGFzaF9jdHhfc3Qgewot KyAgICBjb25zdCBFVlBfTUQgKm1kOwotKyAgICBFVlBfTURfQ1RYIG1jdHg7Ci0rICAgIHVuc2ln bmVkIGNoYXIgVltIQVNIX1BSTkdfTUFYX1NFRURMRU5dOwotKyAgICB1bnNpZ25lZCBjaGFyIENb SEFTSF9QUk5HX01BWF9TRUVETEVOXTsKLSsgICAgLyogVGVtcG9yYXJ5IHZhbHVlIHN0b3JhZ2U6 IHNob3VsZCBhbHdheXMgZXhjZWVkIG1heCBkaWdlc3QgbGVuZ3RoICovCi0rICAgIHVuc2lnbmVk IGNoYXIgdnRtcFtIQVNIX1BSTkdfTUFYX1NFRURMRU5dOwotK307Ci0rCi0rc3RydWN0IGRyYmdf aG1hY19jdHhfc3QgewotKyAgICBjb25zdCBFVlBfTUQgKm1kOwotKyAgICBITUFDX0NUWCBoY3R4 OwotKyAgICB1bnNpZ25lZCBjaGFyIEtbRVZQX01BWF9NRF9TSVpFXTsKLSsgICAgdW5zaWduZWQg Y2hhciBWW0VWUF9NQVhfTURfU0laRV07Ci0rfTsKLSsKLStzdHJ1Y3QgZHJiZ19jdHJfY3R4X3N0 IHsKLSsgICAgQUVTX0tFWSBrczsKLSsgICAgc2l6ZV90IGtleWxlbjsKLSsgICAgdW5zaWduZWQg Y2hhciBLWzMyXTsKLSsgICAgdW5zaWduZWQgY2hhciBWWzE2XTsKLSsgICAgLyogVGVtcCB2YXJp YWJsZXMgdXNlZCBieSBkZXJpdmF0aW9uIGZ1bmN0aW9uICovCi0rICAgIEFFU19LRVkgZGZfa3M7 Ci0rICAgIEFFU19LRVkgZGZfa3hrczsKLSsgICAgLyogVGVtcG9yYXJ5IGJsb2NrIHN0b3JhZ2Ug dXNlZCBieSBjdHJfZGYgKi8KLSsgICAgdW5zaWduZWQgY2hhciBibHRtcFsxNl07Ci0rICAgIHNp emVfdCBibHRtcF9wb3M7Ci0rICAgIHVuc2lnbmVkIGNoYXIgS1hbNDhdOwotK307Ci0rCi0rLyog RFJCRyBpbnRlcm5hbCBmbGFncyAqLwotKwotKy8qIEZ1bmN0aW9ucyBzaG91bGRuJ3QgY2FsbCBl cnIgbGlicmFyeSAqLwotKyNkZWZpbmUgRFJCR19GTEFHX05PRVJSICAgICAgICAgICAgICAgICAw eDEKLSsvKiBDdXN0b20gcmVzZWVkIGNoZWNraW5nICovCi0rI2RlZmluZSBEUkJHX0NVU1RPTV9S RVNFRUQgICAgICAgICAgICAgIDB4MgotKwotKy8qIERSQkcgc3RhdHVzIHZhbHVlcyAqLwotKy8q IG5vdCBpbml0aWFsaXNlZCAqLwotKyNkZWZpbmUgRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRCAg ICAgICAwCi0rLyogb2sgYW5kIHJlYWR5IHRvIGdlbmVyYXRlIHJhbmRvbSBiaXRzICovCi0rI2Rl ZmluZSBEUkJHX1NUQVRVU19SRUFEWSAgICAgICAgICAgICAgIDEKLSsvKiByZXNlZWQgcmVxdWly ZWQgKi8KLSsjZGVmaW5lIERSQkdfU1RBVFVTX1JFU0VFRCAgICAgICAgICAgICAgMgotKy8qIGZh dGFsIGVycm9yIGNvbmRpdGlvbiAqLwotKyNkZWZpbmUgRFJCR19TVEFUVVNfRVJST1IgICAgICAg ICAgICAgICAzCi0rCi0rLyogQSBkZWZhdWx0IG1heGltdW0gbGVuZ3RoOiBsYXJnZXIgdGhhbiBh bnkgcmVhc29uYWJsZSB2YWx1ZSB1c2VkIGluIHByYXRpY2UgKi8KLSsKLSsjZGVmaW5lIERSQkdf TUFYX0xFTkdUSCAgICAgICAgICAgICAgICAgMHg3ZmZmZmZmMAotKy8qIE1heGltdW0gRFJCRyBi bG9jayBsZW5ndGg6IGFsbCBtZCBzaXplcyBhcmUgYmlnZ2VyIHRoYW4gY2lwaGVyIGJsb2NrcyBz aXplcwotKyAqIHNvIHVzZSBtYXggZGlnZXN0IGxlbmd0aC4KLSsgKi8KLSsjZGVmaW5lIERSQkdf TUFYX0JMT0NLICAgICAgICAgICAgICAgICAgRVZQX01BWF9NRF9TSVpFCi0rCi0rI2RlZmluZSBE UkJHX0hFQUxUSF9JTlRFUlZBTCAgICAgICAgICAgICgxIDw8IDI0KQotKwotKy8qIERSQkcgY29u dGV4dCBzdHJ1Y3R1cmUgKi8KLSsKLStzdHJ1Y3QgZHJiZ19jdHhfc3QgewotKyAgICAvKiBGaXJz dCB0eXBlcyBjb21tb24gdG8gYWxsIGltcGxlbWVudGF0aW9ucyAqLwotKyAgICAvKiBEUkJHIHR5 cGU6IGEgTklEIGZvciB0aGUgdW5kZXJseWluZyBhbGdvcml0aG0gKi8KLSsgICAgaW50IHR5cGU7 Ci0rICAgIC8qIFZhcmlvdXMgZXh0ZXJuYWwgZmxhZ3MgKi8KLSsgICAgdW5zaWduZWQgaW50IHhm bGFnczsKLSsgICAgLyogVmFyaW91cyBpbnRlcm5hbCB1c2Ugb25seSBmbGFncyAqLwotKyAgICB1 bnNpZ25lZCBpbnQgaWZsYWdzOwotKyAgICAvKiBVc2VkIGZvciBwZXJpb2RpYyBoZWFsdGggY2hl Y2tzICovCi0rICAgIGludCBoZWFsdGhfY2hlY2tfY250LCBoZWFsdGhfY2hlY2tfaW50ZXJ2YWw7 Ci0rCi0rICAgIC8qIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgc2V0dXAgYnkgbWVjaGFu aXNtIGRyYmdfaW5pdCgpIGNhbGwgKi8KLSsgICAgaW50IHN0cmVuZ3RoOwotKyAgICBzaXplX3Qg YmxvY2tsZW5ndGg7Ci0rICAgIHNpemVfdCBtYXhfcmVxdWVzdDsKLSsKLSsgICAgc2l6ZV90IG1p bl9lbnRyb3B5LCBtYXhfZW50cm9weTsKLSsgICAgc2l6ZV90IG1pbl9ub25jZSwgbWF4X25vbmNl OwotKyAgICBzaXplX3QgbWF4X3BlcnMsIG1heF9hZGluOwotKyAgICB1bnNpZ25lZCBpbnQgcmVz ZWVkX2NvdW50ZXI7Ci0rICAgIHVuc2lnbmVkIGludCByZXNlZWRfaW50ZXJ2YWw7Ci0rICAgIHNp emVfdCBzZWVkbGVuOwotKyAgICBpbnQgc3RhdHVzOwotKyAgICAvKiBBcHBsaWNhdGlvbiBkYXRh OiB0eXBpY2FsbHkgdXNlZCBieSB0ZXN0IGdldF9lbnRyb3B5ICovCi0rICAgIHZvaWQgKmFwcF9k YXRhOwotKyAgICAvKiBJbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBzdHJ1Y3R1cmVzICovCi0rICAg IHVuaW9uIHsKLSsgICAgICAgIERSQkdfSEFTSF9DVFggaGFzaDsKLSsgICAgICAgIERSQkdfSE1B Q19DVFggaG1hYzsKLSsgICAgICAgIERSQkdfQ1RSX0NUWCBjdHI7Ci0rICAgIH0gZDsKLSsgICAg LyogSW5pdGlhbGlhc2UgUFJORyBhbmQgc2V0dXAgY2FsbGJhY2tzIGJlbG93ICovCi0rICAgIGlu dCAoKmluaXQpIChEUkJHX0NUWCAqY3R4LCBpbnQgbmlkLCBpbnQgc2VjdXJpdHksIHVuc2lnbmVk IGludCBmbGFncyk7Ci0rICAgIC8qIEludGFudGlhdGUgUFJORyAqLwotKyAgICBpbnQgKCppbnN0 YW50aWF0ZSkgKERSQkdfQ1RYICpjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqZW50LCBzaXplX3QgZW50bGVuLAotKyAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vbmNlLCBzaXplX3Qgbm9uY2VsZW4sCi0rICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcGVycywgc2l6ZV90IHBlcnNs ZW4pOwotKyAgICAvKiByZXNlZWQgKi8KLSsgICAgaW50ICgqcmVzZWVkKSAoRFJCR19DVFggKmN0 eCwKLSsgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50LCBzaXplX3Qg ZW50bGVuLAotKyAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluLCBz aXplX3QgYWRpbmxlbik7Ci0rICAgIC8qIGdlbmVyYXQgb3V0cHV0ICovCi0rICAgIGludCAoKmdl bmVyYXRlKSAoRFJCR19DVFggKmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj aGFyICpvdXQsIHNpemVfdCBvdXRsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z aWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5sZW4pOwotKyAgICAvKiB1bmluc3RhbnRpYXRl ICovCi0rICAgIGludCAoKnVuaW5zdGFudGlhdGUpIChEUkJHX0NUWCAqY3R4KTsKLSsKLSsgICAg LyogRW50cm9weSBzb3VyY2UgYmxvY2sgbGVuZ3RoICovCi0rICAgIHNpemVfdCBlbnRyb3B5X2Js b2NrbGVuOwotKwotKyAgICAvKiBlbnRyb3B5IGdhdGhlcmluZyBmdW5jdGlvbiAqLwotKyAgICBz aXplX3QgKCpnZXRfZW50cm9weSkgKERSQkdfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKipwb3V0 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbnRyb3B5LCBzaXplX3QgbWluX2xl biwgc2l6ZV90IG1heF9sZW4pOwotKyAgICAvKiBJbmRpY2F0ZXMgd2UgaGF2ZSBmaW5pc2hlZCB3 aXRoIGVudHJvcHkgYnVmZmVyICovCi0rICAgIHZvaWQgKCpjbGVhbnVwX2VudHJvcHkpIChEUkJH X0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvbGVuKTsKLSsKLSsgICAgLyog bm9uY2UgZ2F0aGVyaW5nIGZ1bmN0aW9uICovCi0rICAgIHNpemVfdCAoKmdldF9ub25jZSkgKERS QkdfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKipwb3V0LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgZW50cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhfbGVuKTsKLSsgICAg LyogSW5kaWNhdGVzIHdlIGhhdmUgZmluaXNoZWQgd2l0aCBub25jZSBidWZmZXIgKi8KLSsgICAg dm9pZCAoKmNsZWFudXBfbm9uY2UpIChEUkJHX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQs IHNpemVfdCBvbGVuKTsKLSsKLSsgICAgLyogQ29udGludW91cyByYW5kb20gbnVtYmVyIHRlc3Qg dGVtcG9yYXJ5IGFyZWEgKi8KLSsgICAgLyogTGFzdCBibG9jayAqLwotKyAgICB1bnNpZ25lZCBj aGFyIGxiW0VWUF9NQVhfTURfU0laRV07Ci0rICAgIC8qIHNldCBpZiBsYiBpcyB2YWxpZCAqLwot KyAgICBpbnQgbGJfdmFsaWQ7Ci0rCi0rICAgIC8qIENhbGxiYWNrcyB1c2VkIHdoZW4gY2FsbGVk IHRocm91Z2ggUkFORCBpbnRlcmZhY2UgKi8KLSsgICAgLyogR2V0IGFueSBhZGRpdGlvbmFsIGlu cHV0IGZvciBnZW5lcmF0ZSAqLwotKyAgICBzaXplX3QgKCpnZXRfYWRpbikgKERSQkdfQ1RYICpj dHgsIHVuc2lnbmVkIGNoYXIgKipwb3V0KTsKLSsgICAgdm9pZCAoKmNsZWFudXBfYWRpbikgKERS QkdfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG9sZW4pOwotKyAgICAvKiBD YWxsYmFjayBmb3IgUkFORF9zZWVkKCksIFJBTkRfYWRkKCkgKi8KLSsgICAgaW50ICgqcmFuZF9z ZWVkX2NiKSAoRFJCR19DVFggKmN0eCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnVtKTsKLSsgICAg aW50ICgqcmFuZF9hZGRfY2IpIChEUkJHX0NUWCAqY3R4LAotKyAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHZvaWQgKmJ1ZiwgaW50IG51bSwgZG91YmxlIGVudHJvcHkpOwotK307Ci0rCi0r aW50IGZpcHNfZHJiZ19jdHJfaW5pdChEUkJHX0NUWCAqZGN0eCk7Ci0raW50IGZpcHNfZHJiZ19o YXNoX2luaXQoRFJCR19DVFggKmRjdHgpOwotK2ludCBmaXBzX2RyYmdfaG1hY19pbml0KERSQkdf Q1RYICpkY3R4KTsKLStpbnQgZmlwc19kcmJnX2thdChEUkJHX0NUWCAqZGN0eCwgaW50IG5pZCwg dW5zaWduZWQgaW50IGZsYWdzKTsKLStpbnQgZmlwc19kcmJnX2Nwcm5nX3Rlc3QoRFJCR19DVFgg KmRjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm91dCk7Ci0rCi0rY29uc3Qgc3RydWN0IGVudl9t ZF9zdCAqRklQU19nZXRfZGlnZXN0YnluaWQoaW50IG5pZCk7Ci0rCi0rY29uc3Qgc3RydWN0IGV2 cF9jaXBoZXJfc3QgKkZJUFNfZ2V0X2NpcGhlcmJ5bmlkKGludCBuaWQpOwotKwotKyNkZWZpbmUg RklQU19kaWdlc3Rpbml0IEVWUF9EaWdlc3RJbml0Ci0rI2RlZmluZSBGSVBTX2RpZ2VzdHVwZGF0 ZSBFVlBfRGlnZXN0VXBkYXRlCi0rI2RlZmluZSBGSVBTX2RpZ2VzdGZpbmFsIEVWUF9EaWdlc3RG aW5hbAotKyNkZWZpbmUgTV9FVlBfTURfc2l6ZSBFVlBfTURfc2l6ZQotZGlmZiAtdXAgb3BlbnNz bC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX2xpYi5jLmZpcHMgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2ZpcHMvZmlwc19yYW5kX2xpYi5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Zp cHMvZmlwc19yYW5kX2xpYi5jLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTkyNDU4MjAgKzAy MDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3JhbmRfbGliLmMJMjAxNS0w NC0yMiAxNjowODo0MC4yOTkyNDU4MjAgKzAyMDAKLUBAIC0wLDAgKzEsMTgxIEBACi0rLyogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFs bCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24s IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsg KiBhcmUgbWV0OgotKyAqCi0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11 c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotKyAqCi0rICogMi4g UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj b3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgot KyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVz IG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dp bmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2Fy ZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4gdGhl IE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIDQu IFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBu b3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNz aW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAgIG9wZW5z c2wtY29yZUBvcGVuc3NsLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkg Ik9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsg KiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRp c3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93 aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRl cyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1 c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAq Ci0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBg QVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBP U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNU IE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS RUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRB LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVT RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAot KyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U SEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg REFNQUdFLgotKyAqCi0rICovCi0rCi0rI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Ci0rI2lu Y2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNs dWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KLSsj aW5jbHVkZSAiZV9vcy5oIgotKwotKy8qIEZJUFMgQVBJIGZvciBQUk5HIHVzZS4gU2ltaWxhciB0 byBSQU5EIGZ1bmN0aW9uYWxpdHkgYnV0IHdpdGhvdXQKLSsgKiBFTkdJTkUgYW5kIGFkZGl0aW9u YWwgY2hlY2tpbmcgZm9yIG5vbi1GSVBTIHJhbmQgbWV0aG9kcy4KLSsgKi8KLSsKLStzdGF0aWMg Y29uc3QgUkFORF9NRVRIT0QgKmZpcHNfcmFuZF9tZXRoID0gTlVMTDsKLStzdGF0aWMgaW50IGZp cHNfYXBwcm92ZWRfcmFuZF9tZXRoID0gMDsKLStzdGF0aWMgaW50IGZpcHNfcmFuZF9iaXRzID0g MDsKLSsKLSsvKiBBbGxvd3MgYXBwbGljYXRpb24gdG8gb3ZlcnJpZGUgbnVtYmVyIG9mIGJpdHMg YW5kIHVzZXMgbm9uLUZJUFMgbWV0aG9kcyAqLwotK3ZvaWQgRklQU19yYW5kX3NldF9iaXRzKGlu dCBuYml0cykKLSt7Ci0rICAgIGZpcHNfcmFuZF9iaXRzID0gbmJpdHM7Ci0rfQotKwotK2ludCBG SVBTX3JhbmRfc2V0X21ldGhvZChjb25zdCBSQU5EX01FVEhPRCAqbWV0aCkKLSt7Ci0rICAgIGlm ICghZmlwc19yYW5kX2JpdHMpIHsKLSsgICAgICAgIGlmIChtZXRoID09IEZJUFNfZHJiZ19tZXRo b2QoKSkKLSsgICAgICAgICAgICBmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCA9IDE7Ci0rICAgICAg ICBlbHNlIGlmIChtZXRoID09IEZJUFNfeDkzMV9tZXRob2QoKSkKLSsgICAgICAgICAgICBmaXBz X2FwcHJvdmVkX3JhbmRfbWV0aCA9IDI7Ci0rICAgICAgICBlbHNlIHsKLSsgICAgICAgICAgICBm aXBzX2FwcHJvdmVkX3JhbmRfbWV0aCA9IDA7Ci0rICAgICAgICAgICAgaWYgKEZJUFNfbW9kdWxl X21vZGUoKSkgewotKyAgICAgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX1JBTkRfU0VU X01FVEhPRCwgRklQU19SX05PTl9GSVBTX01FVEhPRCk7Ci0rICAgICAgICAgICAgICAgIHJldHVy biAwOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgfQotKyAgICBmaXBzX3JhbmRf bWV0aCA9IG1ldGg7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStjb25zdCBSQU5EX01FVEhPRCAq RklQU19yYW5kX2dldF9tZXRob2Qodm9pZCkKLSt7Ci0rICAgIHJldHVybiBmaXBzX3JhbmRfbWV0 aDsKLSt9Ci0rCi0rY29uc3QgUkFORF9NRVRIT0QgKkZJUFNfcmFuZF9tZXRob2Qodm9pZCkKLSt7 Ci0rICAgIHJldHVybiBGSVBTX3JhbmRfZ2V0X21ldGhvZCgpOwotK30KLSsKLSt2b2lkIEZJUFNf cmFuZF9yZXNldCh2b2lkKQotK3sKLSsgICAgaWYgKGZpcHNfcmFuZF9tZXRoICYmIGZpcHNfcmFu ZF9tZXRoLT5jbGVhbnVwKQotKyAgICAgICAgZmlwc19yYW5kX21ldGgtPmNsZWFudXAoKTsKLSt9 Ci0rCi0raW50IEZJUFNfcmFuZF9zZWVkKGNvbnN0IHZvaWQgKmJ1ZiwgRklQU19SQU5EX1NJWkVf VCBudW0pCi0rewotKyAgICBpZiAoIWZpcHNfYXBwcm92ZWRfcmFuZF9tZXRoICYmIEZJUFNfbW9k dWxlX21vZGUoKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19SQU5EX1NFRUQsIEZJ UFNfUl9OT05fRklQU19NRVRIT0QpOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgICAg aWYgKGZpcHNfcmFuZF9tZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5zZWVkKQotKyAgICAgICAgZmlw c19yYW5kX21ldGgtPnNlZWQoYnVmLCBudW0pOwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rdm9p ZCBGSVBTX3JhbmRfYWRkKGNvbnN0IHZvaWQgKmJ1ZiwgaW50IG51bSwgZG91YmxlIGVudHJvcHkp Ci0rewotKyAgICBpZiAoIWZpcHNfYXBwcm92ZWRfcmFuZF9tZXRoICYmIEZJUFNfbW9kdWxlX21v ZGUoKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19SQU5EX0FERCwgRklQU19SX05P Tl9GSVBTX01FVEhPRCk7Ci0rICAgICAgICByZXR1cm47Ci0rICAgIH0KLSsgICAgaWYgKGZpcHNf cmFuZF9tZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5hZGQpCi0rICAgICAgICBmaXBzX3JhbmRfbWV0 aC0+YWRkKGJ1ZiwgbnVtLCBlbnRyb3B5KTsKLSt9Ci0rCi0raW50IEZJUFNfcmFuZF9ieXRlcyh1 bnNpZ25lZCBjaGFyICpidWYsIEZJUFNfUkFORF9TSVpFX1QgbnVtKQotK3sKLSsgICAgaWYgKCFm aXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsKLSsgICAgICAg IEZJUFNlcnIoRklQU19GX0ZJUFNfUkFORF9CWVRFUywgRklQU19SX05PTl9GSVBTX01FVEhPRCk7 Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICBpZiAoZmlwc19yYW5kX21ldGggJiYg Zmlwc19yYW5kX21ldGgtPmJ5dGVzKQotKyAgICAgICAgcmV0dXJuIGZpcHNfcmFuZF9tZXRoLT5i eXRlcyhidWYsIG51bSk7Ci0rICAgIHJldHVybiAwOwotK30KLSsKLStpbnQgRklQU19yYW5kX3Bz ZXVkb19ieXRlcyh1bnNpZ25lZCBjaGFyICpidWYsIGludCBudW0pCi0rewotKyAgICBpZiAoIWZp cHNfYXBwcm92ZWRfcmFuZF9tZXRoICYmIEZJUFNfbW9kdWxlX21vZGUoKSkgewotKyAgICAgICAg RklQU2VycihGSVBTX0ZfRklQU19SQU5EX1BTRVVET19CWVRFUywgRklQU19SX05PTl9GSVBTX01F VEhPRCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICBpZiAoZmlwc19yYW5kX21l dGggJiYgZmlwc19yYW5kX21ldGgtPnBzZXVkb3JhbmQpCi0rICAgICAgICByZXR1cm4gZmlwc19y YW5kX21ldGgtPnBzZXVkb3JhbmQoYnVmLCBudW0pOwotKyAgICByZXR1cm4gLTE7Ci0rfQotKwot K2ludCBGSVBTX3JhbmRfc3RhdHVzKHZvaWQpCi0rewotKyAgICBpZiAoIWZpcHNfYXBwcm92ZWRf cmFuZF9tZXRoICYmIEZJUFNfbW9kdWxlX21vZGUoKSkgewotKyAgICAgICAgRklQU2VycihGSVBT X0ZfRklQU19SQU5EX1NUQVRVUywgRklQU19SX05PTl9GSVBTX01FVEhPRCk7Ci0rICAgICAgICBy ZXR1cm4gMDsKLSsgICAgfQotKyAgICBpZiAoZmlwc19yYW5kX21ldGggJiYgZmlwc19yYW5kX21l dGgtPnN0YXR1cykKLSsgICAgICAgIHJldHVybiBmaXBzX3JhbmRfbWV0aC0+c3RhdHVzKCk7Ci0r ICAgIHJldHVybiAwOwotK30KLSsKLSsvKiBSZXR1cm4gaW5zdGFudGlhdGVkIHN0cmVuZ3RoIG9m IFBSTkcuIEZvciBEUkJHIHRoaXMgaXMgYW4gaW50ZXJuYWwKLSsgKiBwYXJhbWV0ZXIuIEZvciBY OS4zMSBQUk5HIGl0IGlzIDgwIGJpdHMgKGZyb20gU1A4MDAtMTMxKS4gQW55IG90aGVyCi0rICog dHlwZSBvZiBQUk5HIGlzIG5vdCBhcHByb3ZlZCBhbmQgcmV0dXJucyAwIGluIEZJUFMgbW9kZSBh bmQgbWF4aW11bQotKyAqIDI1NiBvdXRzaWRlIEZJUFMgbW9kZS4KLSsgKi8KLSsKLStpbnQgRklQ U19yYW5kX3N0cmVuZ3RoKHZvaWQpCi0rewotKyAgICBpZiAoZmlwc19yYW5kX2JpdHMpCi0rICAg ICAgICByZXR1cm4gZmlwc19yYW5kX2JpdHM7Ci0rICAgIGlmIChmaXBzX2FwcHJvdmVkX3JhbmRf bWV0aCA9PSAxKQotKyAgICAgICAgcmV0dXJuIEZJUFNfZHJiZ19nZXRfc3RyZW5ndGgoRklQU19n ZXRfZGVmYXVsdF9kcmJnKCkpOwotKyAgICBlbHNlIGlmIChmaXBzX2FwcHJvdmVkX3JhbmRfbWV0 aCA9PSAyKQotKyAgICAgICAgcmV0dXJuIDgwOwotKyAgICBlbHNlIGlmIChmaXBzX2FwcHJvdmVk X3JhbmRfbWV0aCA9PSAwKSB7Ci0rICAgICAgICBpZiAoRklQU19tb2R1bGVfbW9kZSgpKQotKyAg ICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIHJldHVybiAy NTY7Ci0rICAgIH0KLSsgICAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL2ZpcHMvZmlwc19yYW5kX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZmlwcy9maXBzX3JhbmRfc2VsZnRlc3QuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9m aXBzL2ZpcHNfcmFuZF9zZWxmdGVzdC5jLmZpcHMJMjAxNS0wNC0yMiAxNjowODo0MC4yOTkyNDU4 MjAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3JhbmRfc2VsZnRl c3QuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5OTI0NTgyMCArMDIwMAotQEAgLTAsMCArMSwxNzYg QEAKLSsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQ cm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1v ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoKLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291 cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0r ICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug dGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0 aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0 cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25p bmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKLSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkg dGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1 ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9y IHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgot KyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9q ZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1 Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0 dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0r ICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVy aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICog ICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Ig d3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgot KyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWlu IHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tub3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0r ICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wu b3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NM IFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS Ci0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVu U1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8s IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBP RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBI T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g Q09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0r I2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNp bmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4K LSsjaW5jbHVkZSAiZmlwc19sb2NsLmgiCi0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwotK3R5 cGVkZWYgc3RydWN0IHsKLSsgICAgdW5zaWduZWQgY2hhciBEVFsxNl07Ci0rICAgIHVuc2lnbmVk IGNoYXIgVlsxNl07Ci0rICAgIHVuc2lnbmVkIGNoYXIgUlsxNl07Ci0rfSBBRVNfUFJOR19UVjsK LSsKLSsvKiBUaGUgZm9sbG93aW5nIHRlc3QgdmVjdG9ycyBhcmUgdGFrZW4gZGlyZWN0bHkgZnJv bSB0aGUgUkdOVlMgc3BlYyAqLwotKwotK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGFlc18xMjhfa2V5 WzE2XSA9Ci0rICAgIHsgMHhmMywgMHhiMSwgMHg2NiwgMHg2ZCwgMHgxMywgMHg2MCwgMHg3Miwg MHg0MiwKLSsgICAgMHhlZCwgMHgwNiwgMHgxYywgMHhhYiwgMHhiOCwgMHhkNCwgMHg2MiwgMHgw MgotK307Ci0rCi0rc3RhdGljIEFFU19QUk5HX1RWIGFlc18xMjhfdHYgPSB7Ci0rICAgIC8qIERU ICovCi0rICAgIHsweGU2LCAweGIzLCAweGJlLCAweDc4LCAweDJhLCAweDIzLCAweGZhLCAweDYy LAotKyAgICAgMHhkNywgMHgxZCwgMHg0YSwgMHhmYiwgMHhiMCwgMHhlOSwgMHgyMiwgMHhmOX0s Ci0rICAgIC8qIFYgKi8KLSsgICAgezB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsCi0rICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwfSwKLSsgICAgLyogUiAqLwotKyAgICB7MHg1OSwgMHg1MywgMHgxZSwgMHhkMSwg MHgzYiwgMHhiMCwgMHhjMCwgMHg1NSwKLSsgICAgIDB4ODQsIDB4NzksIDB4NjYsIDB4ODUsIDB4 YzEsIDB4MmYsIDB4NzYsIDB4NDF9Ci0rfTsKLSsKLStzdGF0aWMgdW5zaWduZWQgY2hhciBhZXNf MTkyX2tleVsyNF0gPQotKyAgICB7IDB4MTUsIDB4ZDgsIDB4NzgsIDB4MGQsIDB4NjIsIDB4ZDMs IDB4MjUsIDB4NmUsCi0rICAgIDB4NDQsIDB4NjQsIDB4MTAsIDB4MTMsIDB4NjAsIDB4MmIsIDB4 YTksIDB4YmMsCi0rICAgIDB4NGEsIDB4ZmIsIDB4Y2EsIDB4ZWIsIDB4NGMsIDB4OGIsIDB4OTks IDB4M2IKLSt9OwotKwotK3N0YXRpYyBBRVNfUFJOR19UViBhZXNfMTkyX3R2ID0gewotKyAgICAv KiBEVCAqLwotKyAgICB7MHgzZiwgMHhkOCwgMHhmZiwgMHhlOCwgMHg4MCwgMHg2OSwgMHg4Yiwg MHhjMSwKLSsgICAgIDB4YmYsIDB4OTksIDB4N2QsIDB4YTQsIDB4MjQsIDB4NzgsIDB4ZjMsIDB4 NGJ9LAotKyAgICAvKiBWICovCi0rICAgIHsweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLAotKyAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMH0sCi0rICAgIC8qIFIgKi8KLSsgICAgezB4MTcsIDB4MDcsIDB4ZDUsIDB4 MjgsIDB4MTksIDB4NzksIDB4MWUsIDB4ZWYsCi0rICAgICAweGE1LCAweDBjLCAweGJmLCAweDI1 LCAweGU1LCAweDU2LCAweGI0LCAweDkzfQotK307Ci0rCi0rc3RhdGljIHVuc2lnbmVkIGNoYXIg YWVzXzI1Nl9rZXlbMzJdID0KLSsgICAgeyAweDZkLCAweDE0LCAweDA2LCAweDZjLCAweGI2LCAw eGQ4LCAweDIxLCAweDJkLAotKyAgICAweDgyLCAweDhkLCAweGZhLCAweGYyLCAweDdhLCAweDAz LCAweGI3LCAweDlmLAotKyAgICAweDBjLCAweGM3LCAweDNlLCAweGNkLCAweDc2LCAweGViLCAw eGVlLCAweGI1LAotKyAgICAweDIxLCAweDA1LCAweDhjLCAweDRmLCAweDMxLCAweDdhLCAweDgw LCAweGJiCi0rfTsKLSsKLStzdGF0aWMgQUVTX1BSTkdfVFYgYWVzXzI1Nl90diA9IHsKLSsgICAg LyogRFQgKi8KLSsgICAgezB4ZGEsIDB4M2EsIDB4NDEsIDB4ZWMsIDB4MWQsIDB4YTMsIDB4YjAs IDB4ZDUsCi0rICAgICAweGYyLCAweGE5LCAweDRlLCAweDM0LCAweDc0LCAweDhlLCAweDllLCAw eDg4fSwKLSsgICAgLyogViAqLwotKyAgICB7MHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwKLSsgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDB9LAotKyAgICAvKiBSICovCi0rICAgIHsweDM1LCAweGM3LCAweGVmLCAw eGE3LCAweDc4LCAweDRkLCAweDI5LCAweGJjLAotKyAgICAgMHg4MiwgMHg3OSwgMHg5OSwgMHhm YiwgMHhkMCwgMHhiMywgMHgzYiwgMHg3Mn0KLSt9OwotKwotK3ZvaWQgRklQU19jb3JydXB0X3Ju ZygpCi0rewotKyAgICBhZXNfMTkyX3R2LlZbMF0rKzsKLSt9Ci0rCi0rIyBkZWZpbmUgZmlwc194 OTMxX3Rlc3Qoa2V5LCB0dikgXAotKyAgICAgICAgZG9feDkzMV90ZXN0KGtleSwgc2l6ZW9mIGtl eSwgJnR2KQotKwotK3N0YXRpYyBpbnQgZG9feDkzMV90ZXN0KHVuc2lnbmVkIGNoYXIgKmtleSwg aW50IGtleWxlbiwgQUVTX1BSTkdfVFYgKiB0dikKLSt7Ci0rICAgIHVuc2lnbmVkIGNoYXIgUlsx Nl0sIFZbMTZdOwotKyAgICBpbnQgcnYgPSAxOwotKyAgICBtZW1jcHkoViwgdHYtPlYsIHNpemVv ZihWKSk7Ci0rICAgIGlmICghRklQU194OTMxX3NldF9rZXkoa2V5LCBrZXlsZW4pKQotKyAgICAg ICAgcmV0dXJuIDA7Ci0rICAgIGlmICghZmlwc19wb3N0X3N0YXJ0ZWQoRklQU19URVNUX1g5MzEs IGtleWxlbiwgTlVMTCkpCi0rICAgICAgICByZXR1cm4gMTsKLSsgICAgaWYgKCFmaXBzX3Bvc3Rf Y29ycnVwdChGSVBTX1RFU1RfWDkzMSwga2V5bGVuLCBOVUxMKSkKLSsgICAgICAgIFZbMF0rKzsK LSsgICAgRklQU194OTMxX3NlZWQoViwgMTYpOwotKyAgICBGSVBTX3g5MzFfc2V0X2R0KHR2LT5E VCk7Ci0rICAgIEZJUFNfeDkzMV9ieXRlcyhSLCAxNik7Ci0rICAgIGlmIChtZW1jbXAoUiwgdHYt PlIsIDE2KSkgewotKyAgICAgICAgZmlwc19wb3N0X2ZhaWxlZChGSVBTX1RFU1RfWDkzMSwga2V5 bGVuLCBOVUxMKTsKLSsgICAgICAgIHJ2ID0gMDsKLSsgICAgfSBlbHNlIGlmICghZmlwc19wb3N0 X3N1Y2Nlc3MoRklQU19URVNUX1g5MzEsIGtleWxlbiwgTlVMTCkpCi0rICAgICAgICByZXR1cm4g MDsKLSsgICAgcmV0dXJuIHJ2OwotK30KLSsKLStpbnQgRklQU19zZWxmdGVzdF94OTMxKCkKLSt7 Ci0rICAgIGludCBydiA9IDE7Ci0rICAgIEZJUFNfeDkzMV9yZXNldCgpOwotKyAgICBpZiAoIUZJ UFNfeDkzMV90ZXN0X21vZGUoKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19TRUxG VEVTVF9YOTMxLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsgICAgICAgIHJldHVybiAwOwot KyAgICB9Ci0rICAgIGlmICghZmlwc194OTMxX3Rlc3QoYWVzXzEyOF9rZXksIGFlc18xMjhfdHYp KQotKyAgICAgICAgcnYgPSAwOwotKyAgICBpZiAoIWZpcHNfeDkzMV90ZXN0KGFlc18xOTJfa2V5 LCBhZXNfMTkyX3R2KSkKLSsgICAgICAgIHJ2ID0gMDsKLSsgICAgaWYgKCFmaXBzX3g5MzFfdGVz dChhZXNfMjU2X2tleSwgYWVzXzI1Nl90dikpCi0rICAgICAgICBydiA9IDA7Ci0rICAgIEZJUFNf eDkzMV9yZXNldCgpOwotKyAgICBpZiAoIXJ2KQotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQ U19TRUxGVEVTVF9YOTMxLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKLSsgICAgcmV0dXJuIHJ2 OwotK30KLSsKLStpbnQgRklQU19zZWxmdGVzdF9ybmcodm9pZCkKLSt7Ci0rICAgIHJldHVybiBG SVBTX3NlbGZ0ZXN0X3g5MzEoKTsKLSt9Ci0rCi0rI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9jcnlwdG8vZmlwcy9maXBzX3JhbmR0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vZmlwcy9maXBzX3JhbmR0ZXN0LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9m aXBzX3JhbmR0ZXN0LmMuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5OTI0NTgyMCArMDIwMAot KysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcmFuZHRlc3QuYwkyMDE1LTA0LTIy IDE2OjA4OjQwLjI5OTI0NTgyMCArMDIwMAotQEAgLTAsMCArMSwyNDcgQEAKLSsvKiBDb3B5cmln aHQgKEMpIDE5OTUtMTk5OCBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkKLSsgKiBBbGwg cmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogVGhpcyBwYWNrYWdlIGlzIGFuIFNTTCBpbXBsZW1l bnRhdGlvbiB3cml0dGVuCi0rICogYnkgRXJpYyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pLgot KyAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMgd3JpdHRlbiBzbyBhcyB0byBjb25mb3JtIHdpdGgg TmV0c2NhcGVzIFNTTC4KLSsgKiAKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBmb3IgY29tbWVy Y2lhbCBhbmQgbm9uLWNvbW1lcmNpYWwgdXNlIGFzIGxvbmcgYXMKLSsgKiB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnMgYXJlIGFoZWFyZWQgdG8uICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsg KiBhcHBseSB0byBhbGwgY29kZSBmb3VuZCBpbiB0aGlzIGRpc3RyaWJ1dGlvbiwgYmUgaXQgdGhl IFJDNCwgUlNBLAotKyAqIGxoYXNoLCBERVMsIGV0Yy4sIGNvZGU7IG5vdCBqdXN0IHRoZSBTU0wg Y29kZS4gIFRoZSBTU0wgZG9jdW1lbnRhdGlvbgotKyAqIGluY2x1ZGVkIHdpdGggdGhpcyBkaXN0 cmlidXRpb24gaXMgY292ZXJlZCBieSB0aGUgc2FtZSBjb3B5cmlnaHQgdGVybXMKLSsgKiBleGNl cHQgdGhhdCB0aGUgaG9sZGVyIGlzIFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKS4KLSsg KiAKLSsgKiBDb3B5cmlnaHQgcmVtYWlucyBFcmljIFlvdW5nJ3MsIGFuZCBhcyBzdWNoIGFueSBD b3B5cmlnaHQgbm90aWNlcyBpbgotKyAqIHRoZSBjb2RlIGFyZSBub3QgdG8gYmUgcmVtb3ZlZC4K LSsgKiBJZiB0aGlzIHBhY2thZ2UgaXMgdXNlZCBpbiBhIHByb2R1Y3QsIEVyaWMgWW91bmcgc2hv dWxkIGJlIGdpdmVuIGF0dHJpYnV0aW9uCi0rICogYXMgdGhlIGF1dGhvciBvZiB0aGUgcGFydHMg b2YgdGhlIGxpYnJhcnkgdXNlZC4KLSsgKiBUaGlzIGNhbiBiZSBpbiB0aGUgZm9ybSBvZiBhIHRl eHR1YWwgbWVzc2FnZSBhdCBwcm9ncmFtIHN0YXJ0dXAgb3IKLSsgKiBpbiBkb2N1bWVudGF0aW9u IChvbmxpbmUgb3IgdGV4dHVhbCkgcHJvdmlkZWQgd2l0aCB0aGUgcGFja2FnZS4KLSsgKiAKLSsg KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqIDEuIFJlZGlzdHJp YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgY29weXJpZ2h0Ci0rICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKyAqICAgIGRvY3VtZW50 YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp b24uCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVz IG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0rICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dp bmcgYWNrbm93bGVkZ2VtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRv Z3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5Ci0rICogICAgIEVyaWMgWW91bmcgKGVheUBjcnlw dHNvZnQuY29tKSIKLSsgKiAgICBUaGUgd29yZCAnY3J5cHRvZ3JhcGhpYycgY2FuIGJlIGxlZnQg b3V0IGlmIHRoZSByb3VpbmVzIGZyb20gdGhlIGxpYnJhcnkKLSsgKiAgICBiZWluZyB1c2VkIGFy ZSBub3QgY3J5cHRvZ3JhcGhpYyByZWxhdGVkIDotKS4KLSsgKiA0LiBJZiB5b3UgaW5jbHVkZSBh bnkgV2luZG93cyBzcGVjaWZpYyBjb2RlIChvciBhIGRlcml2YXRpdmUgdGhlcmVvZikgZnJvbSAK LSsgKiAgICB0aGUgYXBwcyBkaXJlY3RvcnkgKGFwcGxpY2F0aW9uIGNvZGUpIHlvdSBtdXN0IGlu Y2x1ZGUgYW4gYWNrbm93bGVkZ2VtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMg c29mdHdhcmUgd3JpdHRlbiBieSBUaW0gSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkiCi0rICog Ci0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBB TkQKLSsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotKyAqIEFSRSBESVND TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUg TElBQkxFCi0rICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotKyAqIE9S IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U RVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0rICogTElBQklMSVRZLCBPUiBUT1JU IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQot KyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU SEUgUE9TU0lCSUxJVFkgT0YKLSsgKiBTVUNIIERBTUFHRS4KLSsgKiAKLSsgKiBUaGUgbGljZW5j ZSBhbmQgZGlzdHJpYnV0aW9uIHRlcm1zIGZvciBhbnkgcHVibGljYWxseSBhdmFpbGFibGUgdmVy c2lvbiBvcgotKyAqIGRlcml2YXRpdmUgb2YgdGhpcyBjb2RlIGNhbm5vdCBiZSBjaGFuZ2VkLiAg aS5lLiB0aGlzIGNvZGUgY2Fubm90IHNpbXBseSBiZQotKyAqIGNvcGllZCBhbmQgcHV0IHVuZGVy IGFub3RoZXIgZGlzdHJpYnV0aW9uIGxpY2VuY2UKLSsgKiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVi bGljIExpY2VuY2UuXQotKyAqLwotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChjKSAy MDAzIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICog UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv ciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0 Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICog ICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo IHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBt YXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3 YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJU aGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFBy b2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3 Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIg YW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNl IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAot KyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwg cGxlYXNlIGNvbnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsg KiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxl ZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFt ZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNT TCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRz b2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50Ogot KyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBP cGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0 dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE RUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NF RCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU SEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF TlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUg TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFM LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsg KiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW SUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U RVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkg V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAq IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpbmNs dWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+ Ci0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotKyNpbmNs dWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNp bmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0rCi0rI2luY2x1ZGUgImVfb3MuaCIKLSsKLSsjaWZuZGVm IE9QRU5TU0xfRklQUwotK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0rewotKyAg ICBwcmludGYoIk5vIEZJUFMgUkFORCBzdXBwb3J0XG4iKTsKLSsgICAgcmV0dXJuICgwKTsKLSt9 Ci0rCi0rI2Vsc2UKLSsKLSsjIGluY2x1ZGUgImZpcHNfdXRsLmgiCi0rIyBpbmNsdWRlIDxvcGVu c3NsL2ZpcHMuaD4KLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICAgIHVuc2lnbmVkIGNoYXIgRFRb MTZdOwotKyAgICB1bnNpZ25lZCBjaGFyIFZbMTZdOwotKyAgICB1bnNpZ25lZCBjaGFyIFJbMTZd OwotK30gQUVTX1BSTkdfTUNUOwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18x MjhfbWN0X2tleVsxNl0gPQotKyAgICB7IDB4OWYsIDB4NWIsIDB4NTEsIDB4MjAsIDB4MGIsIDB4 ZjMsIDB4MzQsIDB4YjUsCi0rICAgIDB4ZDgsIDB4MmIsIDB4ZTgsIDB4YzMsIDB4NzIsIDB4NTUs IDB4YzgsIDB4NDgKLSt9OwotKwotK3N0YXRpYyBjb25zdCBBRVNfUFJOR19NQ1QgYWVzXzEyOF9t Y3RfdHYgPSB7Ci0rICAgIC8qIERUICovCi0rICAgIHsweDYzLCAweDc2LCAweGJiLCAweGU1LCAw eDI5LCAweDAyLCAweGJhLCAweDNiLAotKyAgICAgMHg2NywgMHhjOSwgMHgyNSwgMHhmYSwgMHg3 MCwgMHgxZiwgMHgxMSwgMHhhY30sCi0rICAgIC8qIFYgKi8KLSsgICAgezB4NTcsIDB4MmMsIDB4 OGUsIDB4NzYsIDB4ODcsIDB4MjYsIDB4NDcsIDB4OTcsCi0rICAgICAweDdlLCAweDc0LCAweGZi LCAweGRkLCAweGM0LCAweDk1LCAweDAxLCAweGQxfSwKLSsgICAgLyogUiAqLwotKyAgICB7MHg0 OCwgMHhlOSwgMHhiZCwgMHgwZCwgMHgwNiwgMHhlZSwgMHgxOCwgMHhmYiwKLSsgICAgIDB4ZTQs IDB4NTcsIDB4OTAsIDB4ZDUsIDB4YzMsIDB4ZmMsIDB4OWIsIDB4NzN9Ci0rfTsKLSsKLStzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX21jdF9rZXlbMjRdID0KLSsgICAgeyAweGI3 LCAweDZjLCAweDM0LCAweGQxLCAweDA5LCAweDY3LCAweGFiLCAweDczLAotKyAgICAweDRkLCAw eDVhLCAweGQ1LCAweDM0LCAweDk4LCAweDE2LCAweDBiLCAweDkxLAotKyAgICAweGJjLCAweDM1 LCAweDUxLCAweDE2LCAweDZiLCAweGFlLCAweDkzLCAweDhhCi0rfTsKLSsKLStzdGF0aWMgY29u c3QgQUVTX1BSTkdfTUNUIGFlc18xOTJfbWN0X3R2ID0gewotKyAgICAvKiBEVCAqLwotKyAgICB7 MHg4NCwgMHhjZSwgMHgyMiwgMHg3ZCwgMHg5MSwgMHg1YSwgMHhhMywgMHhjOSwKLSsgICAgIDB4 ODQsIDB4M2MsIDB4MGEsIDB4YjMsIDB4YTksIDB4NjMsIDB4MTUsIDB4NTJ9LAotKyAgICAvKiBW ICovCi0rICAgIHsweGI2LCAweGFmLCAweGU2LCAweDhmLCAweDk5LCAweDllLCAweDkwLCAweDY0 LAotKyAgICAgMHhkZCwgMHhjNywgMHg3YSwgMHhjMSwgMHhiYiwgMHg5MCwgMHgzYSwgMHg2ZH0s Ci0rICAgIC8qIFIgKi8KLSsgICAgezB4ZmMsIDB4ODUsIDB4NjAsIDB4OWEsIDB4MjksIDB4NmYs IDB4ZWYsIDB4MjEsCi0rICAgICAweGRkLCAweDg2LCAweDIwLCAweDMyLCAweDhhLCAweDI5LCAw eDZmLCAweDQ3fQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9t Y3Rfa2V5WzMyXSA9Ci0rICAgIHsgMHg5YiwgMHgwNSwgMHhjOCwgMHg2OCwgMHhmZiwgMHg0Nywg MHhmOCwgMHgzYSwKLSsgICAgMHhhNiwgMHgzYSwgMHhhOCwgMHhjYiwgMHg0ZSwgMHg3MSwgMHhi MiwgMHhlMCwKLSsgICAgMHhiOCwgMHg3ZSwgMHhmMSwgMHgzNywgMHhiNiwgMHhiNCwgMHhmNiwg MHg2ZCwKLSsgICAgMHg4NiwgMHgzMiwgMHhmYywgMHgxZiwgMHg1ZSwgMHgxZCwgMHgxZSwgMHg1 MAotK307Ci0rCi0rc3RhdGljIGNvbnN0IEFFU19QUk5HX01DVCBhZXNfMjU2X21jdF90diA9IHsK LSsgICAgLyogRFQgKi8KLSsgICAgezB4MzEsIDB4NmUsIDB4MzUsIDB4OWEsIDB4YjEsIDB4NDQs IDB4ZjAsIDB4ZWUsCi0rICAgICAweDYyLCAweDZkLCAweDA0LCAweDQ2LCAweGUwLCAweGEzLCAw eDkyLCAweDRjfSwKLSsgICAgLyogViAqLwotKyAgICB7MHg0ZiwgMHhjZCwgMHhjMSwgMHg4Nywg MHg4MiwgMHgxZiwgMHg0ZCwgMHhhMSwKLSsgICAgIDB4M2UsIDB4MGUsIDB4NTYsIDB4NDQsIDB4 NTksIDB4ZTgsIDB4ODMsIDB4Y2F9LAotKyAgICAvKiBSICovCi0rICAgIHsweGM4LCAweDg3LCAw eGMyLCAweDYxLCAweDViLCAweGQwLCAweGI5LCAweGUxLAotKyAgICAgMHhlNywgMHhmMywgMHg4 YiwgMHhkNywgMHg1YiwgMHhkNSwgMHhmMSwgMHg4ZH0KLSt9OwotKwotK3N0YXRpYyB2b2lkIGR1 bXAoY29uc3QgdW5zaWduZWQgY2hhciAqYiwgaW50IG4pCi0rewotKyAgICB3aGlsZSAobi0tID4g MCkgewotKyAgICAgICAgcHJpbnRmKCIgJTAyeCIsICpiKyspOwotKyAgICB9Ci0rfQotKwotK3N0 YXRpYyB2b2lkIGNvbXBhcmUoY29uc3QgdW5zaWduZWQgY2hhciAqcmVzdWx0LAotKyAgICAgICAg ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZXhwZWN0ZWQsIGludCBuKQotK3sKLSsg ICAgaW50IGk7Ci0rCi0rICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpCi0rICAgICAgICBpZiAo cmVzdWx0W2ldICE9IGV4cGVjdGVkW2ldKSB7Ci0rICAgICAgICAgICAgcHV0cygiUmFuZG9tIHRl c3QgZmFpbGVkLCBnb3Q6Iik7Ci0rICAgICAgICAgICAgZHVtcChyZXN1bHQsIG4pOwotKyAgICAg ICAgICAgIHB1dHMoIlxuICAgICAgICAgICAgICAgZXhwZWN0ZWQ6Iik7Ci0rICAgICAgICAgICAg ZHVtcChleHBlY3RlZCwgbik7Ci0rICAgICAgICAgICAgcHV0Y2hhcignXG4nKTsKLSsgICAgICAg ICAgICBFWElUKDEpOwotKyAgICAgICAgfQotK30KLSsKLStzdGF0aWMgdm9pZCBydW5fdGVzdChj b25zdCB1bnNpZ25lZCBjaGFyICprZXksIGludCBrZXlsZW4sCi0rICAgICAgICAgICAgICAgICAg ICAgY29uc3QgQUVTX1BSTkdfTUNUICogdHYpCi0rewotKyAgICB1bnNpZ25lZCBjaGFyIGJ1Zlsx Nl0sIGR0WzE2XTsKLSsgICAgaW50IGksIGo7Ci0rICAgIEZJUFNfeDkzMV9yZXNldCgpOwotKyAg ICBGSVBTX3g5MzFfdGVzdF9tb2RlKCk7Ci0rICAgIEZJUFNfeDkzMV9zZXRfa2V5KGtleSwga2V5 bGVuKTsKLSsgICAgRklQU194OTMxX3NlZWQodHYtPlYsIDE2KTsKLSsgICAgbWVtY3B5KGR0LCB0 di0+RFQsIDE2KTsKLSsgICAgZm9yIChpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKLSsgICAgICAg IEZJUFNfeDkzMV9zZXRfZHQoZHQpOwotKyAgICAgICAgRklQU194OTMxX2J5dGVzKGJ1ZiwgMTYp OwotKyAgICAgICAgLyogSW5jcmVtZW50IERUICovCi0rICAgICAgICBmb3IgKGogPSAxNTsgaiA+ PSAwOyBqLS0pIHsKLSsgICAgICAgICAgICBkdFtqXSsrOwotKyAgICAgICAgICAgIGlmIChkdFtq XSkKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAg Y29tcGFyZShidWYsIHR2LT5SLCAxNik7Ci0rfQotKwotK2ludCBtYWluKCkKLSt7Ci0rICAgIHJ1 bl90ZXN0KGFlc18xMjhfbWN0X2tleSwgMTYsICZhZXNfMTI4X21jdF90dik7Ci0rICAgIHByaW50 ZigiRklQUyBQUk5HIHRlc3QgMSBkb25lXG4iKTsKLSsgICAgcnVuX3Rlc3QoYWVzXzE5Ml9tY3Rf a2V5LCAyNCwgJmFlc18xOTJfbWN0X3R2KTsKLSsgICAgcHJpbnRmKCJGSVBTIFBSTkcgdGVzdCAy IGRvbmVcbiIpOwotKyAgICBydW5fdGVzdChhZXNfMjU2X21jdF9rZXksIDMyLCAmYWVzXzI1Nl9t Y3RfdHYpOwotKyAgICBwcmludGYoIkZJUFMgUFJORyB0ZXN0IDMgZG9uZVxuIik7Ci0rICAgIHJl dHVybiAwOwotK30KLSsKLSsjZW5kaWYKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9m aXBzL2ZpcHNfcnNhX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9m aXBzX3JzYV9zZWxmdGVzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19y c2Ffc2VsZnRlc3QuYy5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMjk5MjQ1ODIwICswMjAwCi0r Kysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yc2Ffc2VsZnRlc3QuYwkyMDE1LTA0 LTIyIDE2OjA4OjQwLjI5OTI0NTgyMCArMDIwMAotQEAgLTAsMCArMSw0NDQgQEAKLSsvKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA3IFRoZSBPcGVuU1NMIFByb2plY3Qu ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z Ci0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAq IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv dmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5k L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlv bi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0 dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9s bG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29m dHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGlu IHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsg KiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11 c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVy bWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBv cGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoKLSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZy b20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3Ig bWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVu Ci0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4g UmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZv bGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5j bHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBm b3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIK LSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVD VCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQ VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJP SkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ TkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKLSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VS RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwg REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIg Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD VCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP UiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT VUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVk ZSA8b3BlbnNzbC9lcnIuaD4KLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rIyBpbmNsdWRlIDxvcGVu c3NsL2ZpcHMuaD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KLSsjaW5jbHVk ZSA8b3BlbnNzbC9ldnAuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgotKyNpbmNsdWRlIDxv cGVuc3NsL29wZW5zc2xjb25mLmg+Ci0rCi0rI2lmZGVmIE9QRU5TU0xfRklQUwotKwotK3N0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIG5bXSA9Ci0rICAgICJceDAwXHhCQlx4RjhceDJGXHgwOVx4 MDZceDgyXHhDRVx4OUNceDIzXHgzOFx4QUNceDJCXHg5RFx4QThceDcxIgotKyAgICAiXHhGN1x4 MzZceDhEXHgwN1x4RUVceEQ0XHgxMFx4NDNceEE0XHg0MFx4RDZceEI2XHhGMFx4NzRceDU0XHhG NSIKLSsgICAgIlx4MUZceEI4XHhERlx4QkFceEFGXHgwM1x4NUNceDAyXHhBQlx4NjFceEVBXHg0 OFx4Q0VceEVCXHg2Rlx4Q0QiCi0rICAgICJceDQ4XHg3Nlx4RURceDUyXHgwRFx4NjBceEUxXHhF Q1x4NDZceDE5XHg3MVx4OURceDhBXHg1Qlx4OEJceDgwIgotKyAgICAiXHg3Rlx4QUZceEI4XHhF MFx4QTNceERGXHhDN1x4MzdceDcyXHgzRVx4RTZceEI0XHhCN1x4RDlceDNBXHgyNSIKLSsgICAg Ilx4ODRceEVFXHg2QVx4NjRceDlEXHgwNlx4MDlceDUzXHg3NFx4ODhceDM0XHhCMlx4NDVceDQ1 XHg5OFx4MzkiCi0rICAgICJceDRFXHhFMFx4QUFceEIxXHgyRFx4N0JceDYxXHhBNVx4MUZceDUy XHg3QVx4OUFceDQxXHhGNlx4QzFceDY4IgotKyAgICAiXHg3Rlx4RTJceDUzXHg3Mlx4OThceENB XHgyQVx4OEZceDU5XHg0Nlx4RjhceEU1XHhGRFx4MDlceDFEXHhCRCIgIlx4Q0IiOwotKwotK3N0 YXRpYyBpbnQgY29ycnVwdF9yc2E7Ci0rCi0rc3RhdGljIGludCBzZXRyc2FrZXkoUlNBICprZXkp Ci0rewotKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBlW10gPSAiXHgxMSI7Ci0rCi0r ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRbXSA9Ci0rICAgICAgICAiXHgwMFx4QTVc eERBXHhGQ1x4NTNceDQxXHhGQVx4RjJceDg5XHhDNFx4QjlceDg4XHhEQlx4MzBceEMxXHhDRCIK LSsgICAgICAgICJceEY4XHgzRlx4MzFceDI1XHgxRVx4MDZceDY4XHhCNFx4MjdceDg0XHg4MVx4 MzhceDAxXHg1N1x4OTZceDQxIgotKyAgICAgICAgIlx4QjJceDk0XHgxMFx4QjNceEM3XHg5OVx4 OERceDZCXHhDNFx4NjVceDc0XHg1RVx4NUNceDM5XHgyNlx4NjkiCi0rICAgICAgICAiXHhENlx4 ODdceDBEXHhBMlx4QzBceDgyXHhBOVx4MzlceEUzXHg3Rlx4RENceEI4XHgyRVx4QzlceDNFXHhE QSIKLSsgICAgICAgICJceEM5XHg3Rlx4RjNceEFEXHg1OVx4NTBceEFDXHhDRlx4QkNceDExXHgx Q1x4NzZceEYxXHhBOVx4NTJceDk0IgotKyAgICAgICAgIlx4NDRceEU1XHg2QVx4QUZceDY4XHhD NVx4NkNceDA5XHgyQ1x4RDNceDhEXHhDM1x4QkVceEY1XHhEMlx4MEEiCi0rICAgICAgICAiXHg5 M1x4OTlceDI2XHhFRFx4NEZceDc0XHhBMVx4M0VceEREXHhGQlx4RTFceEExXHhDRVx4Q0NceDQ4 XHg5NCIKLSsgICAgICAgICJceEFGXHg5NFx4MjhceEMyXHhCN1x4QjhceDg4XHgzRlx4RTRceDQ2 XHgzQVx4NEJceEM4XHg1Qlx4MUNceEIzIgotKyAgICAgICAgIlx4QzEiOwotKwotKyAgICBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBwW10gPQotKyAgICAgICAgIlx4MDBceEVFXHhDRlx4QUVc eDgxXHhCMVx4QjlceEIzXHhDOVx4MDhceDgxXHgwQlx4MTBceEExXHhCNVx4NjAiCi0rICAgICAg ICAiXHgwMVx4OTlceEVCXHg5Rlx4NDRceEFFXHhGNFx4RkRceEE0XHg5M1x4QjhceDFBXHg5RVx4 M0RceDg0XHhGNiIKLSsgICAgICAgICJceDMyXHgxMlx4NEVceEYwXHgyM1x4NkVceDVEXHgxRVx4 M0JceDdFXHgyOFx4RkFceEU3XHhBQVx4MDRceDBBIgotKyAgICAgICAgIlx4MkRceDVCXHgyNVx4 MjFceDc2XHg0NVx4OURceDFGXHgzOVx4NzVceDQxXHhCQVx4MkFceDU4XHhGQlx4NjUiCi0rICAg ICAgICAiXHg5OSI7Ci0rCi0rICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHFbXSA9Ci0r ICAgICAgICAiXHgwMFx4QzlceDdGXHhCMVx4RjBceDI3XHhGNFx4NTNceEY2XHgzNFx4MTJceDMz XHhFQVx4QUFceEQxXHhEOSIKLSsgICAgICAgICJceDM1XHgzRlx4NkNceDQyXHhEMFx4ODhceDY2 XHhCMVx4RDBceDVBXHgwRlx4MjBceDM1XHgwMlx4OEJceDlEIgotKyAgICAgICAgIlx4ODZceDk4 XHg0MFx4QjRceDE2XHg2Nlx4QjRceDJFXHg5Mlx4RUFceDBEXHhBM1x4QjRceDMyXHgwNFx4QjUi Ci0rICAgICAgICAiXHhDRlx4Q0VceDMzXHg1Mlx4NTJceDREXHgwNFx4MTZceEE1XHhBNFx4NDFc eEU3XHgwMFx4QUZceDQ2XHgxNSIKLSsgICAgICAgICJceDAzIjsKLSsKLSsgICAgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgZG1wMVtdID0KLSsgICAgICAgICJceDU0XHg0OVx4NENceEE2XHgz RVx4QkFceDAzXHgzN1x4RTRceEUyXHg0MFx4MjNceEZDXHhENlx4OUFceDVBIgotKyAgICAgICAg Ilx4RUJceDA3XHhERFx4RENceDAxXHg4M1x4QTRceEQwXHhBQ1x4OUJceDU0XHhCMFx4NTFceEYy XHhCMVx4M0UiCi0rICAgICAgICAiXHhEOVx4NDlceDA5XHg3NVx4RUFceEI3XHg3NFx4MTRceEZG XHg1OVx4QzFceEY3XHg2OVx4MkVceDlBXHgyRSIKLSsgICAgICAgICJceDIwXHgyQlx4MzhceEZD XHg5MVx4MEFceDQ3XHg0MVx4NzRceEFEXHhDOVx4M0NceDFGXHg2N1x4QzlceDgxIjsKLSsKLSsg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZG1xMVtdID0KLSsgICAgICAgICJceDQ3XHgx RVx4MDJceDkwXHhGRlx4MEFceEYwXHg3NVx4MDNceDUxXHhCN1x4RjhceDc4XHg4Nlx4NENceEE5 IgotKyAgICAgICAgIlx4NjFceEFEXHhCRFx4M0FceDhBXHg3RVx4OTlceDFDXHg1Q1x4MDVceDU2 XHhBOVx4NENceDMxXHg0Nlx4QTciCi0rICAgICAgICAiXHhGOVx4ODBceDNGXHg4Rlx4NkZceDhB XHhFM1x4NDJceEU5XHgzMVx4RkRceDhBXHhFNFx4N0FceDIyXHgwRCIKLSsgICAgICAgICJceDFC XHg5OVx4QTRceDk1XHg4NFx4OThceDA3XHhGRVx4MzlceEY5XHgyNFx4NUFceDk4XHgzNlx4REFc eDNEIjsKLSsKLSsgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaXFtcFtdID0KLSsgICAg ICAgICJceDAwXHhCMFx4NkNceDRGXHhEQVx4QkJceDYzXHgwMVx4MTlceDhEXHgyNlx4NUJceERC XHhBRVx4OTRceDIzIgotKyAgICAgICAgIlx4QjNceDgwXHhGMlx4NzFceEY3XHgzNFx4NTNceDg4 XHg1MFx4OTNceDA3XHg3Rlx4Q0RceDM5XHhFMlx4MTEiCi0rICAgICAgICAiXHg5Rlx4QzlceDg2 XHgzMlx4MTVceDRGXHg1OFx4ODNceEIxXHg2N1x4QTlceDY3XHhCRlx4NDBceDJCXHg0RSIKLSsg ICAgICAgICJceDlFXHgyRVx4MEZceDk2XHg1Nlx4RTZceDk4XHhFQVx4MzZceDY2XHhFRFx4RkJc eDI1XHg3OVx4ODBceDM5IgotKyAgICAgICAgIlx4RjciOwotKwotKyAgICBrZXktPm4gPSBCTl9i aW4yYm4obiwgc2l6ZW9mKG4pIC0gMSwga2V5LT5uKTsKLSsgICAgaWYgKGNvcnJ1cHRfcnNhKQot KyAgICAgICAgQk5fc2V0X2JpdChrZXktPm4sIDEwMjQpOwotKyAgICBrZXktPmUgPSBCTl9iaW4y Ym4oZSwgc2l6ZW9mKGUpIC0gMSwga2V5LT5lKTsKLSsgICAga2V5LT5kID0gQk5fYmluMmJuKGQs IHNpemVvZihkKSAtIDEsIGtleS0+ZCk7Ci0rICAgIGtleS0+cCA9IEJOX2JpbjJibihwLCBzaXpl b2YocCkgLSAxLCBrZXktPnApOwotKyAgICBrZXktPnEgPSBCTl9iaW4yYm4ocSwgc2l6ZW9mKHEp IC0gMSwga2V5LT5xKTsKLSsgICAga2V5LT5kbXAxID0gQk5fYmluMmJuKGRtcDEsIHNpemVvZihk bXAxKSAtIDEsIGtleS0+ZG1wMSk7Ci0rICAgIGtleS0+ZG1xMSA9IEJOX2JpbjJibihkbXExLCBz aXplb2YoZG1xMSkgLSAxLCBrZXktPmRtcTEpOwotKyAgICBrZXktPmlxbXAgPSBCTl9iaW4yYm4o aXFtcCwgc2l6ZW9mKGlxbXApIC0gMSwga2V5LT5pcW1wKTsKLSsgICAgcmV0dXJuIDE7Ci0rfQot KwotK3ZvaWQgRklQU19jb3JydXB0X3JzYSgpCi0rewotKyAgICBjb3JydXB0X3JzYSA9IDE7Ci0r fQotKwotKy8qIEtub3duIEFuc3dlciBUZXN0IChLQVQpIGRhdGEgZm9yIHRoZSBhYm92ZSBSU0Eg cHJpdmF0ZSBrZXkgc2lnbmluZwotKyAqIGthdF90YnMuCi0rICovCi0rCi0rc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIga2F0X3Ric1tdID0KLSsgICAgIk9wZW5TU0wgRklQUyAxNDAtMiBQdWJs aWMgS2V5IFJTQSBLQVQiOwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0Ff UFNTX1NIQTFbXSA9IHsKLSsgICAgMHgyRCwgMHhBRiwgMHg2RSwgMHhDMiwgMHg5OCwgMHhGQiwg MHg4QSwgMHhBMSwgMHhCOSwgMHg0NiwgMHhEQSwgMHgwRiwKLSsgICAgMHgwMSwgMHgxRSwgMHgz NywgMHg5MywgMHhDMiwgMHg1NSwgMHgyNywgMHhFNCwgMHgxRCwgMHhEMiwgMHg5MCwgMHhCQiwK LSsgICAgMHhGNCwgMHhCRiwgMHg0QSwgMHg3NCwgMHgzOSwgMHg1MSwgMHhCQiwgMHhFOCwgMHgw QywgMHhCNywgMHhGOCwgMHhEMywKLSsgICAgMHhEMSwgMHhERiwgMHhFNywgMHhCRSwgMHg4MCwg MHgwNSwgMHhDMywgMHhCNSwgMHhDNywgMHg4MywgMHhENSwgMHg0QywKLSsgICAgMHg3RiwgMHg0 OSwgMHhGQiwgMHgzRiwgMHgyOSwgMHg5QiwgMHhFMSwgMHgxMiwgMHg1MSwgMHg2MCwgMHhEMCwg MHhBNywKLSsgICAgMHgwRCwgMHhBOSwgMHgyOCwgMHg1NiwgMHg3MywgMHhEOSwgMHgwNywgMHhF MywgMHg1RSwgMHgzRiwgMHg5QiwgMHhGNSwKLSsgICAgMHhCNiwgMHhGMywgMHhGMiwgMHg1RSwg MHg3NCwgMHhDOSwgMHg4MywgMHg4MSwgMHg0NywgMHhGMCwgMHhDNSwgMHg0NSwKLSsgICAgMHgw QSwgMHhFOSwgMHg4RSwgMHgzOCwgMHhENywgMHgxOCwgMHhDNiwgMHgyQSwgMHgwRiwgMHhGOCwg MHhCNywgMHgzMSwKLSsgICAgMHhENiwgMHg1NSwgMHhFNCwgMHg2NiwgMHg3OCwgMHg4MSwgMHhE NCwgMHhFNiwgMHhEQiwgMHg5RiwgMHhCQSwgMHhFOCwKLSsgICAgMHgyMywgMHhCNSwgMHg3Riwg MHhEQywgMHgwOCwgMHhFQSwgMHhENSwgMHgyNiwgMHgxRSwgMHgyMCwgMHgyNSwgMHg4NCwKLSsg ICAgMHgyNiwgMHhDNiwgMHg3OSwgMHhDOSwgMHg5QiwgMHgzRCwgMHg3RSwgMHhBOQotK307Ci0r Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9QU1NfU0hBMjI0W10gPSB7Ci0r ICAgIDB4MzksIDB4NEEsIDB4NkEsIDB4MjAsIDB4QkMsIDB4RTksIDB4MzMsIDB4RUQsIDB4RUYs IDB4QzUsIDB4NTgsIDB4QTcsCi0rICAgIDB4RkUsIDB4ODEsIDB4QzQsIDB4MzYsIDB4NTAsIDB4 OUEsIDB4MkMsIDB4ODIsIDB4OTgsIDB4MDgsIDB4OTUsIDB4RkEsCi0rICAgIDB4QjEsIDB4OUUs IDB4RDIsIDB4NTUsIDB4NjEsIDB4ODcsIDB4MjEsIDB4NTksIDB4ODcsIDB4N0IsIDB4MUYsIDB4 NTcsCi0rICAgIDB4MzAsIDB4OUQsIDB4MEQsIDB4NEEsIDB4MDYsIDB4RUIsIDB4NTIsIDB4Mzcs IDB4NTUsIDB4NTQsIDB4MUMsIDB4ODksCi0rICAgIDB4ODMsIDB4NzUsIDB4NTksIDB4NjUsIDB4 NjQsIDB4OTAsIDB4MkUsIDB4MTYsIDB4Q0MsIDB4ODYsIDB4MDUsIDB4RUUsCi0rICAgIDB4QjEs IDB4RTYsIDB4N0IsIDB4QkEsIDB4MTYsIDB4NzUsIDB4MEQsIDB4MEMsIDB4NjQsIDB4MEIsIDB4 QUIsIDB4MjIsCi0rICAgIDB4MTUsIDB4NzgsIDB4NkIsIDB4NkYsIDB4QTQsIDB4RkIsIDB4Nzcs IDB4NDAsIDB4NjQsIDB4NjIsIDB4RDEsIDB4QjUsCi0rICAgIDB4MzcsIDB4MUUsIDB4RTAsIDB4 M0QsIDB4QTgsIDB4RjksIDB4RDIsIDB4QkQsIDB4QUEsIDB4MzgsIDB4MjQsIDB4NDksCi0rICAg IDB4NTgsIDB4RDIsIDB4NzQsIDB4ODUsIDB4RjQsIDB4QjUsIDB4OTMsIDB4OEUsIDB4RjUsIDB4 MDMsIDB4RUEsIDB4MkQsCi0rICAgIDB4QzgsIDB4NTIsIDB4RkEsIDB4Q0YsIDB4N0UsIDB4MzUs IDB4QjAsIDB4NkEsIDB4QUYsIDB4OTUsIDB4QzAsIDB4MDAsCi0rICAgIDB4NTQsIDB4NzYsIDB4 M0QsIDB4MEMsIDB4OUMsIDB4QjIsIDB4RUUsIDB4QzAKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGthdF9SU0FfUFNTX1NIQTI1NltdID0gewotKyAgICAweDZELCAweDNELCAw eEJFLCAweDhGLCAweDYwLCAweDZELCAweDI1LCAweDE0LCAweEYwLCAweDMxLCAweEUzLCAweDg5 LAotKyAgICAweDAwLCAweDk3LCAweEZBLCAweDk5LCAweDcxLCAweDI4LCAweEU1LCAweDEwLCAw eDI1LCAweDlBLCAweEYzLCAweDhGLAotKyAgICAweDdCLCAweEM1LCAweEE4LCAweDRBLCAweDc0 LCAweDUxLCAweDM2LCAweEUyLCAweDhELCAweDdELCAweDczLCAweDI4LAotKyAgICAweEMxLCAw eDc3LCAweEM2LCAweDI3LCAweDk3LCAweDAwLCAweDhCLCAweDAwLCAweEEzLCAweDk2LCAweDcz LCAweDRFLAotKyAgICAweDdELCAweDJFLCAweDJDLCAweDM0LCAweDY4LCAweDhDLCAweDhFLCAw eERGLCAweDlELCAweDQ5LCAweDQ3LCAweDA1LAotKyAgICAweEFCLCAweEY1LCAweDAxLCAweEQ2 LCAweDgxLCAweDQ3LCAweDcwLCAweEY1LCAweDFELCAweDZELCAweDI2LCAweEJBLAotKyAgICAw eDJGLCAweDdBLCAweDU0LCAweDUzLCAweDRFLCAweEVELCAweDcxLCAweEQ5LCAweDVBLCAweEYz LCAweERBLCAweEI2LAotKyAgICAweDBCLCAweDQ3LCAweDM0LCAweEFGLCAweDkwLCAweERDLCAw eEM4LCAweEQ5LCAweDZGLCAweDU2LCAweENELCAweDlGLAotKyAgICAweDIxLCAweEI3LCAweDdF LCAweEFELCAweDdDLCAweDJGLCAweDc1LCAweDUwLCAweDQ3LCAweDEyLCAweEU0LCAweDZELAot KyAgICAweDVGLCAweEI3LCAweDAxLCAweERGLCAweEMzLCAweDExLCAweDZDLCAweEE5LCAweDlF LCAweDQ5LCAweEI5LCAweEY2LAotKyAgICAweDcyLCAweEY0LCAweEY2LCAweEVGLCAweDg4LCAw eDFFLCAweDJELCAweDFDCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRf UlNBX1BTU19TSEEzODRbXSA9IHsKLSsgICAgMHg0MCwgMHhGQiwgMHhBMSwgMHgyMSwgMHhGNCwg MHhCMiwgMHg0MCwgMHg5QSwgMHhCNCwgMHgzMSwgMHhBOCwgMHhGMiwKLSsgICAgMHhFQywgMHgx QywgMHhDNCwgMHhDOCwgMHg3QywgMHgyMiwgMHg2NSwgMHg5QywgMHg1NywgMHg0NSwgMHhDRCwg MHg1RSwKLSsgICAgMHg4NiwgMHgwMCwgMHhGNywgMHgyNSwgMHg3OCwgMHhERSwgMHhEQywgMHg3 QSwgMHg3MSwgMHg0NCwgMHg5QSwgMHhDRCwKLSsgICAgMHhBQSwgMHgyNSwgMHhGNCwgMHhCMiwg MHhGQywgMHhGMCwgMHg3NSwgMHhEOSwgMHgyRiwgMHg3OCwgMHgyMywgMHg3RiwKLSsgICAgMHg2 RiwgMHgwMiwgMHhFRiwgMHhDMSwgMHhBRiwgMHhBNiwgMHgyOCwgMHgxNiwgMHgzMSwgMHhEQywg MHg0MiwgMHg2QywKLSsgICAgMHhCMiwgMHg0NCwgMHhFNSwgMHg0RCwgMHg2NiwgMHhBMiwgMHhF NiwgMHg3MSwgMHhGMywgMHhBQywgMHg0RiwgMHhGQiwKLSsgICAgMHg5MSwgMHhDQSwgMHhGNSwg MHg3MCwgMHhFRiwgMHg2QiwgMHg5RCwgMHhBNCwgMHhFRiwgMHhEOSwgMHgzRCwgMHgyRiwKLSsg ICAgMHgzQSwgMHhCRSwgMHg4OSwgMHgzOCwgMHg1OSwgMHgwMSwgMHhCQSwgMHhEQSwgMHgzMiwg MHhBRCwgMHg0MiwgMHg4OSwKLSsgICAgMHg5OCwgMHg4QiwgMHgzOSwgMHg0NCwgMHhGMCwgMHhG QywgMHgzOCwgMHhBQywgMHg4NywgMHgxRiwgMHhDQSwgMHg2RiwKLSsgICAgMHg0OCwgMHhGNiwg MHhBRSwgMHhENywgMHg0NSwgMHhFRSwgMHhBRSwgMHg4OCwgMHgwRSwgMHg2MCwgMHhGNCwgMHg1 NSwKLSsgICAgMHg0OCwgMHg0NCwgMHhFRSwgMHgxRiwgMHg5MCwgMHgxOCwgMHg0QiwgMHhGMQot K307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9QU1NfU0hBNTEyW10g PSB7Ci0rICAgIDB4MDcsIDB4MUUsIDB4RDgsIDB4RDUsIDB4MDUsIDB4RTgsIDB4RTYsIDB4RTYs IDB4NTcsIDB4QUUsIDB4NjMsIDB4OEMsCi0rICAgIDB4QzYsIDB4ODMsIDB4QjcsIDB4QTAsIDB4 NTksIDB4QkIsIDB4RjIsIDB4QzYsIDB4OEYsIDB4MTIsIDB4NTMsIDB4OUEsCi0rICAgIDB4OUIs IDB4NTQsIDB4OUUsIDB4QjMsIDB4QzEsIDB4MUQsIDB4MjMsIDB4NEQsIDB4NTEsIDB4RUQsIDB4 OUUsIDB4REQsCi0rICAgIDB4NEIsIDB4RjMsIDB4NDYsIDB4OUIsIDB4NkIsIDB4RjYsIDB4N0Ms IDB4MjQsIDB4NjAsIDB4NzksIDB4MjMsIDB4MzksCi0rICAgIDB4MDEsIDB4MUMsIDB4NTEsIDB4 Q0IsIDB4RDgsIDB4RTksIDB4OUEsIDB4MDEsIDB4NjcsIDB4NUYsIDB4RkUsIDB4RDcsCi0rICAg IDB4N0MsIDB4RTMsIDB4N0YsIDB4RUQsIDB4REIsIDB4ODcsIDB4QkIsIDB4RjAsIDB4M0QsIDB4 NzgsIDB4NTUsIDB4NjEsCi0rICAgIDB4NTcsIDB4RTMsIDB4MEYsIDB4RTMsIDB4RDIsIDB4OUQs IDB4MEMsIDB4MkEsIDB4MjAsIDB4QjAsIDB4ODUsIDB4MTMsCi0rICAgIDB4QzUsIDB4NDcsIDB4 MzQsIDB4MEQsIDB4MzIsIDB4MTUsIDB4QzgsIDB4QUUsIDB4OUEsIDB4NkEsIDB4MzksIDB4NjMs Ci0rICAgIDB4MkQsIDB4NjAsIDB4RjUsIDB4NEMsIDB4REYsIDB4OEEsIDB4NDgsIDB4NEIsIDB4 QkYsIDB4RjQsIDB4QTgsIDB4RkUsCi0rICAgIDB4NzYsIDB4RjIsIDB4MzIsIDB4MUIsIDB4OUMs IDB4N0MsIDB4Q0EsIDB4RkUsIDB4N0YsIDB4ODAsIDB4QzIsIDB4ODgsCi0rICAgIDB4NUMsIDB4 OTcsIDB4NzAsIDB4QjQsIDB4MjYsIDB4QzksIDB4MTQsIDB4OEIKLSt9OwotKwotK3N0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0FfU0hBMVtdID0gewotKyAgICAweDcxLCAweEVFLCAw eDFBLCAweEMwLCAweEZFLCAweDAxLCAweDkzLCAweDU0LCAweDc5LCAweDVDLCAweEYyLCAweDRD LAotKyAgICAweDRBLCAweEZELCAweDFBLCAweDA1LCAweDhGLCAweDY0LCAweEIxLCAweDZELCAw eDYxLCAweDMzLCAweDhELCAweDlCLAotKyAgICAweEU3LCAweEZELCAweDYwLCAweEEzLCAweDgz LCAweEI1LCAweEEzLCAweDUxLCAweDU1LCAweDc3LCAweDkwLCAweENGLAotKyAgICAweERDLCAw eDIyLCAweDM3LCAweDhFLCAweEQwLCAweEUxLCAweEFFLCAweDA5LCAweEUzLCAweDNELCAweDFF LCAweEY4LAotKyAgICAweDgwLCAweEQxLCAweDhCLCAweEMyLCAweEVDLCAweDBBLCAweEQ3LCAw eDZCLCAweDg4LCAweDhCLCAweDhCLCAweEExLAotKyAgICAweDIwLCAweDIyLCAweEJFLCAweDU5 LCAweDVCLCAweEUwLCAweDIzLCAweDI0LCAweEExLCAweDQ5LCAweDMwLCAweEJBLAotKyAgICAw eEE5LCAweDlFLCAweEU4LCAweEIxLCAweDhBLCAweDYyLCAweDE2LCAweEJGLCAweDRFLCAweENB LCAweDJFLCAweDRFLAotKyAgICAweEJDLCAweDI5LCAweEE4LCAweDY3LCAweDEzLCAweEI3LCAw eDlGLCAweDFELCAweDA0LCAweDQ0LCAweEU1LCAweDVGLAotKyAgICAweDM1LCAweDA3LCAweDEx LCAweEJDLCAweEVELCAweDE5LCAweDM3LCAweDIxLCAweENGLCAweDIzLCAweDQ4LCAweDFGLAot KyAgICAweDcyLCAweDA1LCAweERFLCAweEU2LCAweEU4LCAweDdGLCAweDMzLCAweDhBLCAweDc2 LCAweDRCLCAweDJGLCAweDk1LAotKyAgICAweERGLCAweEYxLCAweDVGLCAweDg0LCAweDgwLCAw eEQ5LCAweDQ2LCAweEI0Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRf UlNBX1NIQTIyNFtdID0gewotKyAgICAweDYyLCAweEFBLCAweDc5LCAweEE5LCAweDE4LCAweDBF LCAweDVGLCAweDhDLCAweEJCLCAweEI3LCAweDE1LCAweEY5LAotKyAgICAweDI1LCAweEJCLCAw eEZBLCAweEQ0LCAweDNBLCAweDM0LCAweEVELCAweDlFLCAweEEwLCAweEE5LCAweDE4LCAweDhE LAotKyAgICAweDVCLCAweDU1LCAweDlBLCAweDdFLCAweDFFLCAweDA4LCAweDA4LCAweDYwLCAw eEM1LCAweDFBLCAweEM1LCAweDg5LAotKyAgICAweDA4LCAweEUyLCAweDFCLCAweEJELCAweDYy LCAweDUwLCAweDE3LCAweDc2LCAweDMwLCAweDJDLCAweDlFLCAweENELAotKyAgICAweEE0LCAw eDAyLCAweEFELCAweEIxLCAweDZELCAweDQ0LCAweDZELCAweEQ1LCAweEM2LCAweDQ1LCAweDQx LCAweEU1LAotKyAgICAweEVFLCAweDFGLCAweDhELCAweDdFLCAweDA4LCAweDE2LCAweEE2LCAw eEUxLCAweDVFLCAweDBCLCAweEE5LCAweENDLAotKyAgICAweERCLCAweDU5LCAweDU1LCAweDg3 LCAweDA5LCAweDI1LCAweDcwLCAweDg2LCAweDg0LCAweDAyLCAweEM2LCAweDNCLAotKyAgICAw eDBCLCAweDQ0LCAweDRDLCAweDQ2LCAweDk1LCAweEY0LCAweEY4LCAweDVBLCAweDkxLCAweDI4 LCAweDNFLCAweEIyLAotKyAgICAweDU4LCAweDJFLCAweDA2LCAweDQ1LCAweDQ5LCAweEUwLCAw eDkyLCAweEUyLCAweEMwLCAweDY2LCAweEU2LCAweDM1LAotKyAgICAweEQ5LCAweDc5LCAweDdG LCAweDE3LCAweDVFLCAweDAyLCAweDczLCAweDA0LCAweDc3LCAweDgyLCAweEU2LCAweERDLAot KyAgICAweDQwLCAweDIxLCAweDg5LCAweDhCLCAweDM3LCAweDNFLCAweDFFLCAweDhECi0rfTsK LSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1NIQTI1NltdID0gewotKyAg ICAweDBELCAweDU1LCAweEUyLCAweEFBLCAweDgxLCAweERCLCAweDhFLCAweDgyLCAweDA1LCAw eDE3LCAweEE1LCAweDIzLAotKyAgICAweEU3LCAweDNCLCAweDFELCAweEFGLCAweEZCLCAweDhD LCAweEQwLCAweDgxLCAweDIwLCAweDdCLCAweEFBLCAweDIzLAotKyAgICAweDkyLCAweDg3LCAw eDhDLCAweEQxLCAweDUzLCAweDg1LCAweDE2LCAweERDLCAweEJFLCAweEFELCAweDZGLCAweDM1 LAotKyAgICAweDk4LCAweDJELCAweDY5LCAweDg0LCAweEJGLCAweEQ5LCAweDhBLCAweDAxLCAw eDE3LCAweDU4LCAweEIyLCAweDZFLAotKyAgICAweDJDLCAweDQ0LCAweDlCLCAweDkwLCAweEYx LCAweEZCLCAweDUxLCAweEU4LCAweDZBLCAweDkwLCAweDJELCAweDE4LAotKyAgICAweDBFLCAw eEMwLCAweDkwLCAweDEwLCAweDI0LCAweEE5LCAweDFELCAweEIzLCAweDU4LCAweDdBLCAweDkx LCAweDMwLAotKyAgICAweEJFLCAweDIyLCAweEM3LCAweEQzLCAweEVDLCAweEMzLCAweDA5LCAw eDVELCAweEJGLCAweEUyLCAweDgwLCAweDNBLAotKyAgICAweDdDLCAweDg1LCAweEI0LCAweEJD LCAweEQxLCAweEU5LCAweEYwLCAweDVDLCAweERFLCAweDgxLCAweEE2LCAweDM4LAotKyAgICAw eEI4LCAweDQyLCAweEJCLCAweDg2LCAweEM1LCAweDlELCAweENFLCAweDdDLCAweDJDLCAweEVF LCAweEQxLCAweERBLAotKyAgICAweDI3LCAweDQ4LCAweDJCLCAweEY1LCAweEFCLCAweEI5LCAw eEY3LCAweDgwLCAweEQxLCAweDkwLCAweDI3LCAweDkwLAotKyAgICAweEJELCAweDQ0LCAweDk3 LCAweDYwLCAweENELCAweDU3LCAweEMwLCAweDdBCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBrYXRfUlNBX1NIQTM4NFtdID0gewotKyAgICAweDFELCAweEUzLCAweDZBLCAw eERELCAweDI3LCAweDRDLCAweEMwLCAweEE1LCAweDI3LCAweEVGLCAweEU2LCAweDFGLAotKyAg ICAweEQyLCAweDkxLCAweDY4LCAweDU5LCAweDA0LCAweEFFLCAweEJELCAweDk5LCAweDYzLCAw eDU2LCAweDQ3LCAweEM3LAotKyAgICAweDZGLCAweDIyLCAweDE2LCAweDQ4LCAweEQwLCAweEY5 LCAweDE4LCAweEE5LCAweENBLCAweEZBLCAweDVELCAweDVDLAotKyAgICAweEE3LCAweDY1LCAw eDUyLCAweDhBLCAweEM4LCAweDQ0LCAweDdFLCAweDg2LCAweDVELCAweEE5LCAweEE2LCAweDU1 LAotKyAgICAweDY1LCAweDNFLCAweEQ5LCAweDJELCAweDAyLCAweDM4LCAweEE4LCAweDc5LCAw eDI4LCAweDdGLCAweEI2LCAweENGLAotKyAgICAweDgyLCAweERELCAweDdFLCAweDU1LCAweEUx LCAweEIxLCAweEJDLCAweEUyLCAweDE5LCAweDJCLCAweDMwLCAweEMyLAotKyAgICAweDFCLCAw eDJCLCAweEIwLCAweDgyLCAweDQ2LCAweEFDLCAweDRCLCAweEQxLCAweEUyLCAweDdELCAweEVC LCAweDhDLAotKyAgICAweEZGLCAweDk1LCAweEU5LCAweDZBLCAweDFDLCAweDNELCAweDRELCAw eEJGLCAweDhGLCAweDhCLCAweDlDLCAweENELAotKyAgICAweEVBLCAweDg1LCAweEVFLCAweDAw LCAweERDLCAweDFDLCAweEE3LCAweEVCLCAweEQwLCAweDhGLCAweDk5LCAweEYxLAotKyAgICAw eDE2LCAweDI4LCAweDI0LCAweDY0LCAweDA0LCAweDM5LCAweDJELCAweDU4LCAweDFFLCAweDM3 LCAweERDLCAweDA0LAotKyAgICAweEJELCAweDMxLCAweEEyLCAweDJGLCAweEIzLCAweDM1LCAw eDU2LCAweEJGCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1NI QTUxMltdID0gewotKyAgICAweDY5LCAweDUyLCAweDFCLCAweDUxLCAweDVFLCAweDA2LCAweENB LCAweDlCLCAweDE2LCAweDUxLCAweDVELCAweENGLAotKyAgICAweDQ5LCAweDI1LCAweDRBLCAw eEExLCAweDZBLCAweDc3LCAweDRDLCAweDM2LCAweDQwLCAweEY4LCAweEIyLCAweDlBLAotKyAg ICAweDE1LCAweEVBLCAweDVDLCAweEU1LCAweEU2LCAweDgyLCAweEUwLCAweDg2LCAweDgyLCAw eDZCLCAweDMyLCAweEYxLAotKyAgICAweDA0LCAweEMxLCAweDVBLCAweDFBLCAweEVELCAweDFF LCAweDlBLCAweEI2LCAweDRDLCAweDU0LCAweDlGLCAweEQ4LAotKyAgICAweDhELCAweENDLCAw eEFDLCAweDhBLCAweEJCLCAweDlDLCAweDgyLCAweDNGLCAweEE2LCAweDUzLCAweDYyLCAweEI1 LAotKyAgICAweDgwLCAweEUyLCAweEJDLCAweERELCAweDY3LCAweDJCLCAweEQ5LCAweDNGLCAw eEU0LCAweDc1LCAweDkyLCAweDZCLAotKyAgICAweEFGLCAweDYyLCAweDdDLCAweDUyLCAweEYw LCAweEVFLCAweDMzLCAweERGLCAweDFCLCAweDFELCAweDQ3LCAweEU2LAotKyAgICAweDU5LCAw eDU2LCAweEE1LCAweEI5LCAweDVDLCAweEU2LCAweDc3LCAweDc4LCAweDE2LCAweDYzLCAweDg0 LCAweDA1LAotKyAgICAweDZGLCAweDBFLCAweDJCLCAweDMxLCAweDlELCAweEY3LCAweDdGLCAw eEIyLCAweDY0LCAweDcxLCAweEUwLCAweDJELAotKyAgICAweDNFLCAweDYyLCAweENFLCAweEI1 LCAweDNGLCAweDg4LCAweERGLCAweDJELCAweEFCLCAweDk4LCAweDY1LCAweDkxLAotKyAgICAw eERGLCAweDcwLCAweDE0LCAweEE1LCAweDNGLCAweDM2LCAweEFCLCAweDg0Ci0rfTsKLSsKLStz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1g5MzFfU0hBMVtdID0gewotKyAgICAw eDg2LCAweEI0LCAweDE4LCAweEJBLCAweEQxLCAweDgwLCAweEI2LCAweDdDLCAweDQyLCAweDQ1 LCAweDRELCAweERGLAotKyAgICAweEU5LCAweDJELCAweEUxLCAweDgzLCAweDVGLCAweEI1LCAw eDJGLCAweEM5LCAweENELCAweEM0LCAweEIyLCAweDc1LAotKyAgICAweDgwLCAweEE0LCAweEYx LCAweDRBLCAweEU3LCAweDgzLCAweDEyLCAweDFFLCAweDFFLCAweDE0LCAweEI4LCAweEFDLAot KyAgICAweDM1LCAweEUyLCAweEFBLCAweDBCLCAweDVDLCAweEY4LCAweDM4LCAweDRELCAweDA0 LCAweEVFLCAweEE5LCAweDk3LAotKyAgICAweDcwLCAweEZCLCAweDVFLCAweEU3LCAweEI3LCAw eEUzLCAweDYyLCAweDIzLCAweDRCLCAweDM4LCAweEJFLCAweEQ2LAotKyAgICAweDUzLCAweDE1 LCAweEY3LCAweERGLCAweDg3LCAweEI0LCAweDBFLCAweENDLCAweEIxLCAweDFBLCAweDExLCAw eDE5LAotKyAgICAweEVFLCAweDUxLCAweENDLCAweDkyLCAweERELCAweEJDLCAweDYzLCAweDI5 LCAweDYzLCAweDBDLCAweDU5LCAweEQ3LAotKyAgICAweDZGLCAweDRDLCAweDNDLCAweDM3LCAw eDVCLCAweDM3LCAweDAzLCAweDYxLCAweDdELCAweDI0LCAweDFDLCAweDk5LAotKyAgICAweDQ4 LCAweEFGLCAweDgyLCAweEZFLCAweDMyLCAweDQxLCAweDlCLCAweEIyLCAweERCLCAweEVBLCAw eEVELCAweDc2LAotKyAgICAweDhFLCAweDZFLCAweENBLCAweDdFLCAweDRFLCAweDE0LCAweEJB LCAweDMwLCAweDg0LCAweDFDLCAweEIzLCAweDY3LAotKyAgICAweEEzLCAweDI5LCAweDgwLCAw eDcwLCAweDU0LCAweDY4LCAweDdELCAweDQ5Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBrYXRfUlNBX1g5MzFfU0hBMjU2W10gPSB7Ci0rICAgIDB4N0UsIDB4QTIsIDB4Nzcs IDB4RkUsIDB4QjgsIDB4NTQsIDB4OEEsIDB4QzcsIDB4N0YsIDB4NjQsIDB4NTQsIDB4ODksCi0r ICAgIDB4RTUsIDB4NTIsIDB4MTUsIDB4OEUsIDB4NTIsIDB4OTYsIDB4NEUsIDB4QTYsIDB4NTgs IDB4OTIsIDB4MUMsIDB4REQsCi0rICAgIDB4RUEsIDB4QTIsIDB4MkQsIDB4NUMsIDB4RDEsIDB4 NjIsIDB4MDAsIDB4NDksIDB4MDUsIDB4OTUsIDB4NzMsIDB4Q0YsCi0rICAgIDB4MTYsIDB4NzYs IDB4NjgsIDB4RjYsIDB4QzYsIDB4NUUsIDB4ODAsIDB4QjgsIDB4QjgsIDB4N0IsIDB4QzgsIDB4 OUIsCi0rICAgIDB4QzYsIDB4NTMsIDB4ODgsIDB4MjYsIDB4MjAsIDB4ODgsIDB4NzMsIDB4QjYs IDB4MTMsIDB4QjgsIDB4RjAsIDB4NEIsCi0rICAgIDB4MDAsIDB4ODUsIDB4RjMsIDB4REQsIDB4 MDcsIDB4NTAsIDB4RUIsIDB4MjAsIDB4QzQsIDB4MzgsIDB4MEUsIDB4OTgsCi0rICAgIDB4QUQs IDB4NEUsIDB4NDksIDB4MkMsIDB4RDcsIDB4NjUsIDB4QTUsIDB4MTksIDB4MEUsIDB4NTksIDB4 MDEsIDB4RUMsCi0rICAgIDB4N0UsIDB4NzUsIDB4ODksIDB4NjksIDB4MkUsIDB4NjMsIDB4NzYs IDB4ODUsIDB4NDYsIDB4OEQsIDB4QTAsIDB4OEMsCi0rICAgIDB4MzMsIDB4MUQsIDB4ODIsIDB4 OEMsIDB4MDMsIDB4RUEsIDB4NjksIDB4ODgsIDB4MzUsIDB4QTEsIDB4NDIsIDB4QkQsCi0rICAg IDB4MjEsIDB4RUQsIDB4OEQsIDB4QkMsIDB4QkMsIDB4REIsIDB4MzAsIDB4RkYsIDB4ODYsIDB4 RjAsIDB4NUIsIDB4REMsCi0rICAgIDB4RTMsIDB4RTIsIDB4RTgsIDB4MEEsIDB4MEEsIDB4Mjks IDB4OTQsIDB4ODAKLSt9OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9SU0Ff WDkzMV9TSEEzODRbXSA9IHsKLSsgICAgMHg1QywgMHg3RCwgMHg5NiwgMHgzNSwgMHhFQywgMHg3 RSwgMHgxMSwgMHgzOCwgMHhCQiwgMHg3QiwgMHhFQywgMHg3QiwKLSsgICAgMHhGMiwgMHg4Miwg MHg4RSwgMHg5OSwgMHhCRCwgMHhFRiwgMHhEOCwgMHhBRSwgMHhENywgMHgzOSwgMHgzNywgMHhD QiwKLSsgICAgMHhFNiwgMHg0RiwgMHg1RSwgMHgwQSwgMHgxMywgMHhFNCwgMHgyRSwgMHg0MCwg MHhCOSwgMHhCRSwgMHgyRSwgMHhFMywKLSsgICAgMHhFRiwgMHg3OCwgMHg4MywgMHgxOCwgMHg0 NCwgMHgzNSwgMHg5QywgMHg4RSwgMHhENywgMHg0QSwgMHg2MywgMHhGNiwKLSsgICAgMHg1Nywg MHhDMiwgMHhCMCwgMHgwOCwgMHg1MSwgMHg3MywgMHhDRiwgMHhDQSwgMHg5OSwgMHg2NiwgMHhF RSwgMHgzMSwKLSsgICAgMHhEOCwgMHg2OSwgMHhFOSwgMHhBQiwgMHgxMywgMHgyNywgMHg3Qiwg MHg0MSwgMHgxRSwgMHg2RCwgMHg4RCwgMHhGMSwKLSsgICAgMHgzRSwgMHg5QywgMHgzNSwgMHg5 NSwgMHg1OCwgMHhERCwgMHgyQiwgMHhENSwgMHhBMCwgMHg2MCwgMHg0MSwgMHg3OSwKLSsgICAg MHgyNCwgMHgyMiwgMHhFNCwgMHhCNywgMHhCRiwgMHg0NywgMHg1MywgMHhGNiwgMHgzNCwgMHhE NSwgMHg3QywgMHhGRiwKLSsgICAgMHgwRSwgMHgwOSwgMHhFRSwgMHgyRSwgMHhFMiwgMHgzNywg MHhCOSwgMHhERSwgMHhDNSwgMHgxMiwgMHg0NCwgMHgzNSwKLSsgICAgMHhFRiwgMHgwMSwgMHhF NiwgMHg1RSwgMHgzOSwgMHgzMSwgMHgyRCwgMHg3MSwgMHhBNSwgMHhEQywgMHhDNiwgMHg2RCwK LSsgICAgMHhFMiwgMHhDRCwgMHg4NSwgMHhEQiwgMHg3MywgMHg4MiwgMHg2NSwgMHgyOAotK307 Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9YOTMxX1NIQTUxMltdID0g ewotKyAgICAweEE2LCAweDY1LCAweEEyLCAweDc3LCAweDRGLCAweEIzLCAweDg2LCAweENCLCAw eDY0LCAweDNBLCAweEMxLCAweDYzLAotKyAgICAweEZDLCAweEExLCAweEFBLCAweENCLCAweDlC LCAweDc5LCAweERELCAweDRCLCAweEUxLCAweEQ5LCAweERBLCAweEFDLAotKyAgICAweEU3LCAw eDQ3LCAweDA5LCAweEIyLCAweDExLCAweDRCLCAweDhBLCAweEFBLCAweDA1LCAweDlFLCAweDc3 LCAweEQ3LAotKyAgICAweDNBLCAweEJELCAweDVFLCAweDUzLCAweDA5LCAweDRBLCAweEU2LCAw eDBGLCAweDVFLCAweEY5LCAweDE0LCAweDI4LAotKyAgICAweEEwLCAweDk5LCAweDc0LCAweDY0 LCAweDcwLCAweDRFLCAweEYyLCAweEUzLCAweEZBLCAweEM3LCAweEY4LCAweEM1LAotKyAgICAw eDZFLCAweDJCLCAweDc5LCAweDk2LCAweDBELCAweDBDLCAweEM4LCAweDEwLCAweDM0LCAweDUz LCAweEQyLCAweEFGLAotKyAgICAweDE3LCAweDBFLCAweEUwLCAweEJGLCAweDc5LCAweEY2LCAw eDA0LCAweDcyLCAweDEwLCAweEUwLCAweEY2LCAweEQwLAotKyAgICAweENFLCAweDhBLCAweDZG LCAweEExLCAweDk1LCAweDg5LCAweEJGLCAweDU4LCAweDhGLCAweDQ2LCAweDVGLCAweDA5LAot KyAgICAweDlGLCAweDA5LCAweENBLCAweDg0LCAweDE1LCAweDg1LCAweEUwLCAweEVELCAweDA0 LCAweDJELCAweEZCLCAweDdDLAotKyAgICAweDM2LCAweDM1LCAweDIxLCAweDMxLCAweEMzLCAw eEZELCAweDkyLCAweDQyLCAweDExLCAweDMwLCAweDcxLCAweDFCLAotKyAgICAweDYwLCAweDgz LCAweDE4LCAweDg4LCAweEEzLCAweEY1LCAweDU5LCAweEMzCi0rfTsKLSsKLStpbnQgRklQU19z ZWxmdGVzdF9yc2EoKQotK3sKLSsgICAgaW50IHJldCA9IDA7Ci0rICAgIFJTQSAqa2V5OwotKyAg ICBFVlBfUEtFWSAqcGsgPSBOVUxMOwotKwotKyAgICBpZiAoKGtleSA9IFJTQV9uZXcoKSkgPT0g TlVMTCkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBzZXRyc2FrZXkoa2V5KTsKLSsgICAgaWYg KChwayA9IEVWUF9QS0VZX25ldygpKSA9PSBOVUxMKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0r ICAgIEVWUF9QS0VZX2Fzc2lnbl9SU0EocGssIGtleSk7Ci0rCi0rICAgIGlmICghZmlwc19wa2V5 X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1NIQTEsIHNpemVvZihrYXRfUlNB X1NIQTEpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfc2hhMSgpLCBF VlBfTURfQ1RYX0ZMQUdfUEFEX1BLQ1MxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiUlNBIFNIQTEgUEtDUyMxIikpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKCFm aXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9SU0FfU0hBMjI0LCBzaXpl b2Yoa2F0X1JTQV9TSEEyMjQpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF VlBfc2hhMjI0KCksIEVWUF9NRF9DVFhfRkxBR19QQURfUEtDUzEsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJSU0EgU0hBMjI0IFBLQ1MjMSIpKQotKyAgICAgICAgZ290byBl cnI7Ci0rICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXpl b2Yoa2F0X3RicykgLSAxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRf UlNBX1NIQTI1Niwgc2l6ZW9mKGthdF9SU0FfU0hBMjU2KSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRVZQX3NoYTI1NigpLCBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BLQ1MxLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUlNBIFNIQTI1NiBQS0NTIzEiKSkK LSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChw aywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga2F0X1JTQV9TSEEzODQsIHNpemVvZihrYXRfUlNBX1NIQTM4NCksCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9zaGEzODQoKSwgRVZQX01EX0NUWF9G TEFHX1BBRF9QS0NTMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJTQSBT SEEzODQgUEtDUyMxIikpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKCFmaXBzX3BrZXlf c2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9SU0FfU0hBNTEyLCBzaXplb2Yoa2F0X1JT QV9TSEE1MTIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfc2hhNTEy KCksIEVWUF9NRF9DVFhfRkxBR19QQURfUEtDUzEsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJSU0EgU0hBNTEyIFBLQ1MjMSIpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0r ICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0 X3RicykgLSAxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1BT U19TSEExLCBzaXplb2Yoa2F0X1JTQV9QU1NfU0hBMSksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVWUF9zaGExKCksIEVWUF9NRF9DVFhfRkxBR19QQURfUFNTLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUlNBIFNIQTEgUFNTIikpCi0rICAgICAgICBn b3RvIGVycjsKLSsgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMs IHNpemVvZihrYXRfdGJzKSAtIDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGthdF9SU0FfUFNTX1NIQTIyNCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZW9mKGthdF9SU0FfUFNTX1NIQTIyNCksIEVWUF9zaGEyMjQoKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BBRF9QU1MsICJSU0EgU0hBMjI0 IFBTUyIpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVy ZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1BTU19TSEEyNTYsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1BTU19TSEEyNTYpLCBFVlBfc2hhMjU2 KCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19Q QURfUFNTLCAiUlNBIFNIQTI1NiBQU1MiKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAo IWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0g MSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9QU1NfU0hBMzg0 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2F0X1JTQV9QU1Nf U0hBMzg0KSwgRVZQX3NoYTM4NCgpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUywgIlJTQSBTSEEzODQgUFNTIikpCi0rICAgICAgICBn b3RvIGVycjsKLSsgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMs IHNpemVvZihrYXRfdGJzKSAtIDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGthdF9SU0FfUFNTX1NIQTUxMiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZW9mKGthdF9SU0FfUFNTX1NIQTUxMiksIEVWUF9zaGE1MTIoKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BBRF9QU1MsICJSU0EgU0hBNTEy IFBTUyIpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGlmICghZmlwc19wa2V5X3NpZ25h dHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1g5MzFfU0hBMSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGthdF9SU0FfWDkzMV9TSEExKSwgRVZQX3NoYTEo KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BB RF9YOTMxLCAiUlNBIFNIQTEgWDkzMSIpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIC8qIE5C OiBTSEEyMjQgbm90IHN1cHBvcnRlZCBpbiBYOS4zMSAqLwotKyAgICBpZiAoIWZpcHNfcGtleV9z aWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9YOTMxX1NIQTI1NiwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGthdF9SU0FfWDkzMV9TSEEyNTYpLCBF VlBfc2hhMjU2KCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9D VFhfRkxBR19QQURfWDkzMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJT QSBTSEEyNTYgWDkzMSIpKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIGlmICghZmlwc19wa2V5 X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1g5MzFfU0hBMzg0LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2F0X1JTQV9YOTMxX1NIQTM4NCks IEVWUF9zaGEzODQoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX01E X0NUWF9GTEFHX1BBRF9YOTMxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi UlNBIFNIQTM4NCBYOTMxIikpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgaWYgKCFmaXBzX3Br ZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9SU0FfWDkzMV9TSEE1MTIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1g5MzFfU0hBNTEy KSwgRVZQX3NoYTUxMigpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBf TURfQ1RYX0ZMQUdfUEFEX1g5MzEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJSU0EgU0hBNTEyIFg5MzEiKSkKLSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICByZXQgPSAx OwotKwotKyBlcnI6Ci0rICAgIGlmIChwaykKLSsgICAgICAgIEVWUF9QS0VZX2ZyZWUocGspOwot KyAgICBlbHNlIGlmIChrZXkpCi0rICAgICAgICBSU0FfZnJlZShrZXkpOwotKyAgICByZXR1cm4g cmV0OwotK30KLSsKLSsjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRlZiBPUEVO U1NMX0ZJUFMgKi8KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfcnNh X3g5MzFnLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3JzYV94OTMxZy5j Ci0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19yc2FfeDkzMWcuYy5maXBzCTIw MTUtMDQtMjIgMTY6MDg6NDAuMjk5MjQ1ODIwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2ZpcHMvZmlwc19yc2FfeDkzMWcuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjI5OTI0NTgyMCAr MDIwMAotQEAgLTAsMCArMSwyNzMgQEAKLSsvKiBjcnlwdG8vcnNhL3JzYV9nZW4uYyAqLwotKy8q IENvcHlyaWdodCAoQykgMTk5NS0xOTk4IEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKQot KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBUaGlzIHBhY2thZ2UgaXMgYW4gU1NM IGltcGxlbWVudGF0aW9uIHdyaXR0ZW4KLSsgKiBieSBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0 LmNvbSkuCi0rICogVGhlIGltcGxlbWVudGF0aW9uIHdhcyB3cml0dGVuIHNvIGFzIHRvIGNvbmZv cm0gd2l0aCBOZXRzY2FwZXMgU1NMLgotKyAqIAotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIGZv ciBjb21tZXJjaWFsIGFuZCBub24tY29tbWVyY2lhbCB1c2UgYXMgbG9uZyBhcwotKyAqIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgYWhlYXJlZCB0by4gIFRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucwotKyAqIGFwcGx5IHRvIGFsbCBjb2RlIGZvdW5kIGluIHRoaXMgZGlzdHJpYnV0aW9uLCBi ZSBpdCB0aGUgUkM0LCBSU0EsCi0rICogbGhhc2gsIERFUywgZXRjLiwgY29kZTsgbm90IGp1c3Qg dGhlIFNTTCBjb2RlLiAgVGhlIFNTTCBkb2N1bWVudGF0aW9uCi0rICogaW5jbHVkZWQgd2l0aCB0 aGlzIGRpc3RyaWJ1dGlvbiBpcyBjb3ZlcmVkIGJ5IHRoZSBzYW1lIGNvcHlyaWdodCB0ZXJtcwot KyAqIGV4Y2VwdCB0aGF0IHRoZSBob2xkZXIgaXMgVGltIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5j b20pLgotKyAqIAotKyAqIENvcHlyaWdodCByZW1haW5zIEVyaWMgWW91bmcncywgYW5kIGFzIHN1 Y2ggYW55IENvcHlyaWdodCBub3RpY2VzIGluCi0rICogdGhlIGNvZGUgYXJlIG5vdCB0byBiZSBy ZW1vdmVkLgotKyAqIElmIHRoaXMgcGFja2FnZSBpcyB1c2VkIGluIGEgcHJvZHVjdCwgRXJpYyBZ b3VuZyBzaG91bGQgYmUgZ2l2ZW4gYXR0cmlidXRpb24KLSsgKiBhcyB0aGUgYXV0aG9yIG9mIHRo ZSBwYXJ0cyBvZiB0aGUgbGlicmFyeSB1c2VkLgotKyAqIFRoaXMgY2FuIGJlIGluIHRoZSBmb3Jt IG9mIGEgdGV4dHVhbCBtZXNzYWdlIGF0IHByb2dyYW0gc3RhcnR1cCBvcgotKyAqIGluIGRvY3Vt ZW50YXRpb24gKG9ubGluZSBvciB0ZXh0dWFsKSBwcm92aWRlZCB3aXRoIHRoZSBwYWNrYWdlLgot KyAqIAotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICogMS4g UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBjb3B5cmlnaHQK LSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0rICogICAg ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp c3RyaWJ1dGlvbi4KLSsgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcg ZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSsgKiAgICBtdXN0IGRpc3BsYXkgdGhl IGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRl cyBjcnlwdG9ncmFwaGljIHNvZnR3YXJlIHdyaXR0ZW4gYnkKLSsgKiAgICAgRXJpYyBZb3VuZyAo ZWF5QGNyeXB0c29mdC5jb20pIgotKyAqICAgIFRoZSB3b3JkICdjcnlwdG9ncmFwaGljJyBjYW4g YmUgbGVmdCBvdXQgaWYgdGhlIHJvdWluZXMgZnJvbSB0aGUgbGlicmFyeQotKyAqICAgIGJlaW5n IHVzZWQgYXJlIG5vdCBjcnlwdG9ncmFwaGljIHJlbGF0ZWQgOi0pLgotKyAqIDQuIElmIHlvdSBp bmNsdWRlIGFueSBXaW5kb3dzIHNwZWNpZmljIGNvZGUgKG9yIGEgZGVyaXZhdGl2ZSB0aGVyZW9m KSBmcm9tIAotKyAqICAgIHRoZSBhcHBzIGRpcmVjdG9yeSAoYXBwbGljYXRpb24gY29kZSkgeW91 IG11c3QgaW5jbHVkZSBhbiBhY2tub3dsZWRnZW1lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBp bmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbSBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29t KSIKLSsgKiAKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEVSSUMgWU9VTkcgYGBB UyBJUycnIEFORAotKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0rICog QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJV VE9SUyBCRSBMSUFCTEUKLSsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotKyAqIERBTUFHRVMgKElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT Ci0rICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ TkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSsgKiBMSUFCSUxJVFks IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB TlkgV0FZCi0rICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotKyAqIFNVQ0ggREFNQUdFLgotKyAqIAotKyAqIFRo ZSBsaWNlbmNlIGFuZCBkaXN0cmlidXRpb24gdGVybXMgZm9yIGFueSBwdWJsaWNhbGx5IGF2YWls YWJsZSB2ZXJzaW9uIG9yCi0rICogZGVyaXZhdGl2ZSBvZiB0aGlzIGNvZGUgY2Fubm90IGJlIGNo YW5nZWQuICBpLmUuIHRoaXMgY29kZSBjYW5ub3Qgc2ltcGx5IGJlCi0rICogY29waWVkIGFuZCBw dXQgdW5kZXIgYW5vdGhlciBkaXN0cmlidXRpb24gbGljZW5jZQotKyAqIFtpbmNsdWRpbmcgdGhl IEdOVSBQdWJsaWMgTGljZW5jZS5dCi0rICovCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2lu Y2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDx0aW1lLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wv ZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9yc2Eu aD4KLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KLSsK LStleHRlcm4gaW50IGZpcHNfY2hlY2tfcnNhKFJTQSAqcnNhKTsKLSsjZW5kaWYKLSsKLSsvKiBY OS4zMSBSU0Ega2V5IGRlcml2YXRpb24gYW5kIGdlbmVyYXRpb24gKi8KLSsKLStpbnQgUlNBX1g5 MzFfZGVyaXZlX2V4KFJTQSAqcnNhLCBCSUdOVU0gKnAxLCBCSUdOVU0gKnAyLCBCSUdOVU0gKnEx LAotKyAgICAgICAgICAgICAgICAgICAgICAgQklHTlVNICpxMiwgY29uc3QgQklHTlVNICpYcDEs IGNvbnN0IEJJR05VTSAqWHAyLAotKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVN ICpYcCwgY29uc3QgQklHTlVNICpYcTEsIGNvbnN0IEJJR05VTSAqWHEyLAotKyAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgQklHTlVNICpYcSwgY29uc3QgQklHTlVNICplLCBCTl9HRU5DQiAq Y2IpCi0rewotKyAgICBCSUdOVU0gKnIwID0gTlVMTCwgKnIxID0gTlVMTCwgKnIyID0gTlVMTCwg KnIzID0gTlVMTDsKLSsgICAgQk5fQ1RYICpjdHggPSBOVUxMLCAqY3R4MiA9IE5VTEw7Ci0rCi0r ICAgIGlmICghcnNhKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGN0eCA9IEJOX0NUWF9u ZXcoKTsKLSsgICAgaWYgKCFjdHgpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgQk5fQ1RYX3N0 YXJ0KGN0eCk7Ci0rCi0rICAgIHIwID0gQk5fQ1RYX2dldChjdHgpOwotKyAgICByMSA9IEJOX0NU WF9nZXQoY3R4KTsKLSsgICAgcjIgPSBCTl9DVFhfZ2V0KGN0eCk7Ci0rICAgIHIzID0gQk5fQ1RY X2dldChjdHgpOwotKwotKyAgICBpZiAocjMgPT0gTlVMTCkKLSsgICAgICAgIGdvdG8gZXJyOwot KyAgICBpZiAoIXJzYS0+ZSkgewotKyAgICAgICAgcnNhLT5lID0gQk5fZHVwKGUpOwotKyAgICAg ICAgaWYgKCFyc2EtPmUpCi0rICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgIH0gZWxzZQotKyAg ICAgICAgZSA9IHJzYS0+ZTsKLSsKLSsgICAgLyogSWYgbm90IGFsbCBwYXJhbWV0ZXJzIHByZXNl bnQgb25seSBjYWxjdWxhdGUgd2hhdCB3ZSBjYW4uCi0rICAgICAqIFRoaXMgYWxsb3dzIHRlc3Qg cHJvZ3JhbXMgdG8gb3V0cHV0IHNlbGVjdGl2ZSBwYXJhbWV0ZXJzLgotKyAgICAgKi8KLSsKLSsg ICAgaWYgKFhwICYmICFyc2EtPnApIHsKLSsgICAgICAgIHJzYS0+cCA9IEJOX25ldygpOwotKyAg ICAgICAgaWYgKCFyc2EtPnApCi0rICAgICAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgICAgICBp ZiAoIUJOX1g5MzFfZGVyaXZlX3ByaW1lX2V4KHJzYS0+cCwgcDEsIHAyLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBYcCwgWHAxLCBYcDIsIGUsIGN0eCwgY2IpKQotKyAg ICAgICAgICAgIGdvdG8gZXJyOwotKyAgICB9Ci0rCi0rICAgIGlmIChYcSAmJiAhcnNhLT5xKSB7 Ci0rICAgICAgICByc2EtPnEgPSBCTl9uZXcoKTsKLSsgICAgICAgIGlmICghcnNhLT5xKQotKyAg ICAgICAgICAgIGdvdG8gZXJyOwotKyAgICAgICAgaWYgKCFCTl9YOTMxX2Rlcml2ZV9wcmltZV9l eChyc2EtPnEsIHExLCBxMiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WHEsIFhxMSwgWHEyLCBlLCBjdHgsIGNiKSkKLSsgICAgICAgICAgICBnb3RvIGVycjsKLSsgICAg fQotKwotKyAgICBpZiAoIXJzYS0+cCB8fCAhcnNhLT5xKSB7Ci0rICAgICAgICBCTl9DVFhfZW5k KGN0eCk7Ci0rICAgICAgICBCTl9DVFhfZnJlZShjdHgpOwotKyAgICAgICAgcmV0dXJuIDI7Ci0r ICAgIH0KLSsKLSsgICAgLyogU2luY2UgYm90aCBwcmltZXMgYXJlIHNldCB3ZSBjYW4gbm93IGNh bGN1bGF0ZSBhbGwgcmVtYWluaW5nIAotKyAgICAgKiBjb21wb25lbnRzLgotKyAgICAgKi8KLSsK LSsgICAgLyogY2FsY3VsYXRlIG4gKi8KLSsgICAgcnNhLT5uID0gQk5fbmV3KCk7Ci0rICAgIGlm IChyc2EtPm4gPT0gTlVMTCkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBpZiAoIUJOX211bChy c2EtPm4sIHJzYS0+cCwgcnNhLT5xLCBjdHgpKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAg IC8qIGNhbGN1bGF0ZSBkICovCi0rICAgIGlmICghQk5fc3ViKHIxLCByc2EtPnAsIEJOX3ZhbHVl X29uZSgpKSkKLSsgICAgICAgIGdvdG8gZXJyOyAgICAgICAgICAgICAgIC8qIHAtMSAqLwotKyAg ICBpZiAoIUJOX3N1YihyMiwgcnNhLT5xLCBCTl92YWx1ZV9vbmUoKSkpCi0rICAgICAgICBnb3Rv IGVycjsgICAgICAgICAgICAgICAvKiBxLTEgKi8KLSsgICAgaWYgKCFCTl9tdWwocjAsIHIxLCBy MiwgY3R4KSkKLSsgICAgICAgIGdvdG8gZXJyOyAgICAgICAgICAgICAgIC8qIChwLTEpKHEtMSkg Ki8KLSsKLSsgICAgaWYgKCFCTl9nY2QocjMsIHIxLCByMiwgY3R4KSkKLSsgICAgICAgIGdvdG8g ZXJyOwotKwotKyAgICBpZiAoIUJOX2RpdihyMCwgTlVMTCwgcjAsIHIzLCBjdHgpKQotKyAgICAg ICAgZ290byBlcnI7ICAgICAgICAgICAgICAgLyogTENNKChwLTEpKHEtMSkpICovCi0rCi0rICAg IGN0eDIgPSBCTl9DVFhfbmV3KCk7Ci0rICAgIGlmICghY3R4MikKLSsgICAgICAgIGdvdG8gZXJy OwotKwotKyAgICByc2EtPmQgPSBCTl9tb2RfaW52ZXJzZShOVUxMLCByc2EtPmUsIHIwLCBjdHgy KTsgLyogZCAqLwotKyAgICBpZiAocnNhLT5kID09IE5VTEwpCi0rICAgICAgICBnb3RvIGVycjsK LSsKLSsgICAgLyogY2FsY3VsYXRlIGQgbW9kIChwLTEpICovCi0rICAgIHJzYS0+ZG1wMSA9IEJO X25ldygpOwotKyAgICBpZiAocnNhLT5kbXAxID09IE5VTEwpCi0rICAgICAgICBnb3RvIGVycjsK LSsgICAgaWYgKCFCTl9tb2QocnNhLT5kbXAxLCByc2EtPmQsIHIxLCBjdHgpKQotKyAgICAgICAg Z290byBlcnI7Ci0rCi0rICAgIC8qIGNhbGN1bGF0ZSBkIG1vZCAocS0xKSAqLwotKyAgICByc2Et PmRtcTEgPSBCTl9uZXcoKTsKLSsgICAgaWYgKHJzYS0+ZG1xMSA9PSBOVUxMKQotKyAgICAgICAg Z290byBlcnI7Ci0rICAgIGlmICghQk5fbW9kKHJzYS0+ZG1xMSwgcnNhLT5kLCByMiwgY3R4KSkK LSsgICAgICAgIGdvdG8gZXJyOwotKwotKyAgICAvKiBjYWxjdWxhdGUgaW52ZXJzZSBvZiBxIG1v ZCBwICovCi0rICAgIHJzYS0+aXFtcCA9IEJOX21vZF9pbnZlcnNlKE5VTEwsIHJzYS0+cSwgcnNh LT5wLCBjdHgyKTsKLSsKLSsgZXJyOgotKyAgICBpZiAoY3R4KSB7Ci0rICAgICAgICBCTl9DVFhf ZW5kKGN0eCk7Ci0rICAgICAgICBCTl9DVFhfZnJlZShjdHgpOwotKyAgICB9Ci0rICAgIGlmIChj dHgyKQotKyAgICAgICAgQk5fQ1RYX2ZyZWUoY3R4Mik7Ci0rICAgIC8qIElmIHRoaXMgaXMgc2V0 IGFsbCBjYWxscyBzdWNjZXNzZnVsICovCi0rICAgIGlmIChyc2EgJiYgcnNhLT5pcW1wICE9IE5V TEwpCi0rICAgICAgICByZXR1cm4gMTsKLSsKLSsgICAgcmV0dXJuIDA7Ci0rCi0rfQotKwotK2lu dCBSU0FfWDkzMV9nZW5lcmF0ZV9rZXlfZXgoUlNBICpyc2EsIGludCBiaXRzLCBjb25zdCBCSUdO VU0gKmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCTl9HRU5DQiAqY2IpCi0rewot KyAgICBpbnQgb2sgPSAwOwotKyAgICBCSUdOVU0gKlhwID0gTlVMTCwgKlhxID0gTlVMTDsKLSsg ICAgQk5fQ1RYICpjdHggPSBOVUxMOwotKwotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgaWYg KEZJUFNfbW9kZSgpICYmICEocnNhLT5mbGFncyAmIFJTQV9GTEFHX05PTl9GSVBTX0FMTE9XKSAm JgotKyAgICAgICAgKGJpdHMgPCBPUEVOU1NMX1JTQV9GSVBTX01JTl9NT0RVTFVTX0JJVFMpKSB7 Ci0rICAgICAgICBGSVBTZXJyKEZJUFNfRl9SU0FfWDkzMV9HRU5FUkFURV9LRVlfRVgsIEZJUFNf Ul9LRVlfVE9PX1NIT1JUKTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICAgIGlm IChiaXRzICYgMHhmZikgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX1g5MzFfR0VORVJB VEVfS0VZX0VYLCBGSVBTX1JfSU5WQUxJRF9LRVlfTEVOR1RIKTsKLSsgICAgICAgIHJldHVybiAw OwotKyAgICB9Ci0rCi0rICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7Ci0rICAgICAg ICBGSVBTZXJyKEZJUFNfRl9SU0FfWDkzMV9HRU5FUkFURV9LRVlfRVgsIEZJUFNfUl9GSVBTX1NF TEZURVNUX0ZBSUxFRCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyNlbmRpZgotKwot KyAgICBjdHggPSBCTl9DVFhfbmV3KCk7Ci0rICAgIGlmICghY3R4KQotKyAgICAgICAgZ290byBl cnJvcjsKLSsKLSsgICAgQk5fQ1RYX3N0YXJ0KGN0eCk7Ci0rICAgIFhwID0gQk5fQ1RYX2dldChj dHgpOwotKyAgICBYcSA9IEJOX0NUWF9nZXQoY3R4KTsKLSsgICAgaWYgKCFCTl9YOTMxX2dlbmVy YXRlX1hwcShYcCwgWHEsIGJpdHMsIGN0eCkpCi0rICAgICAgICBnb3RvIGVycm9yOwotKwotKyAg ICByc2EtPnAgPSBCTl9uZXcoKTsKLSsgICAgcnNhLT5xID0gQk5fbmV3KCk7Ci0rICAgIGlmICgh cnNhLT5wIHx8ICFyc2EtPnEpCi0rICAgICAgICBnb3RvIGVycm9yOwotKwotKyAgICAvKiBHZW5l cmF0ZSB0d28gcHJpbWVzIGZyb20gWHAsIFhxICovCi0rCi0rICAgIGlmICghQk5fWDkzMV9nZW5l cmF0ZV9wcmltZV9leChyc2EtPnAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIFhwLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgY3R4LCBjYikpCi0rICAgICAgICBnb3Rv IGVycm9yOwotKwotKyAgICBpZiAoIUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWVfZXgocnNhLT5xLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBYcSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGUsIGN0eCwgY2IpKQotKyAgICAgICAgZ290byBlcnJvcjsKLSsKLSsgICAgLyogU2lu Y2UgcnNhLT5wIGFuZCByc2EtPnEgYXJlIHZhbGlkIHRoaXMgY2FsbCB3aWxsIGp1c3QgZGVyaXZl Ci0rICAgICAqIHJlbWFpbmluZyBSU0EgY29tcG9uZW50cy4KLSsgICAgICovCi0rCi0rICAgIGlm ICghUlNBX1g5MzFfZGVyaXZlX2V4KHJzYSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCwgZSwgY2IpKQotKyAgICAgICAgZ290byBlcnJvcjsKLSsKLSsjaWZkZWYgT1BFTlNTTF9GSVBT Ci0rICAgIGlmICghZmlwc19jaGVja19yc2EocnNhKSkKLSsgICAgICAgIGdvdG8gZXJyb3I7Ci0r I2VuZGlmCi0rCi0rICAgIG9rID0gMTsKLSsKLSsgZXJyb3I6Ci0rICAgIGlmIChjdHgpIHsKLSsg ICAgICAgIEJOX0NUWF9lbmQoY3R4KTsKLSsgICAgICAgIEJOX0NUWF9mcmVlKGN0eCk7Ci0rICAg IH0KLSsKLSsgICAgaWYgKG9rKQotKyAgICAgICAgcmV0dXJuIDE7Ci0rCi0rICAgIHJldHVybiAw OwotKwotK30KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfc2hhX3Nl bGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3NoYV9zZWxmdGVz dC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19zaGFfc2VsZnRlc3QuYy5m aXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMzAwMjQ1ODQ0ICswMjAwCi0rKysgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL2ZpcHMvZmlwc19zaGFfc2VsZnRlc3QuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMw MDI0NTg0NCArMDIwMAotQEAgLTAsMCArMSwxNDUgQEAKLSsvKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyAqIENv cHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZl ZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICoK LSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi b3ZlIGNvcHlyaWdodAotKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0rICoKLSsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lciBpbgotKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg cHJvdmlkZWQgd2l0aCB0aGUKLSsgKiAgICBkaXN0cmlidXRpb24uCi0rICoKLSsgKiAzLiBBbGwg YWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMK LSsgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVu dDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0 aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0 LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgotKyAqCi0rICogNC4gVGhlIG5hbWVzICJPcGVu U1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCi0r ICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3 YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVu IHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0Ci0rICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wu b3JnLgotKyAqCi0rICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5 IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCi0rICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFy IGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgotKyAqICAgIHBlcm1pc3Npb24g b2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KLSsgKgotKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBh bnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKLSsgKiAgICBhY2tu b3dsZWRnbWVudDoKLSsgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0rICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkK LSsgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0rICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKLSsgKiBJVFMgQ09O VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws Ci0rICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUCi0rICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMgT1IgU0VSVklDRVM7Ci0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0rICogU1RSSUNUIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKyAqIEFS SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQKLSsgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rICoKLSsg Ki8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0r I2lmZGVmIE9QRU5TU0xfRklQUwotKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Ci0rI2VuZGlm Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvc2hhLmg+Ci0r Ci0rI2lmZGVmIE9QRU5TU0xfRklQUwotK3N0YXRpYyBjb25zdCBjaGFyIHRlc3RbXVs2MF0gPSB7 Ci0rICAgICIiLAotKyAgICAiYWJjIiwKLSsgICAgImFiY2RiY2RlY2RlZmRlZmdlZmdoZmdoaWdo aWpoaWpraWprbGprbG1rbG1ubG1ub21ub3Bub3BxIgotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgcmV0W11bU0hBX0RJR0VTVF9MRU5HVEhdID0gewotKyAgICB7MHhkYSwgMHgz OSwgMHhhMywgMHhlZSwgMHg1ZSwgMHg2YiwgMHg0YiwgMHgwZCwgMHgzMiwgMHg1NSwKLSsgICAg IDB4YmYsIDB4ZWYsIDB4OTUsIDB4NjAsIDB4MTgsIDB4OTAsIDB4YWYsIDB4ZDgsIDB4MDcsIDB4 MDl9LAotKyAgICB7MHhhOSwgMHg5OSwgMHgzZSwgMHgzNiwgMHg0NywgMHgwNiwgMHg4MSwgMHg2 YSwgMHhiYSwgMHgzZSwKLSsgICAgIDB4MjUsIDB4NzEsIDB4NzgsIDB4NTAsIDB4YzIsIDB4NmMs IDB4OWMsIDB4ZDAsIDB4ZDgsIDB4OWR9LAotKyAgICB7MHg4NCwgMHg5OCwgMHgzZSwgMHg0NCwg MHgxYywgMHgzYiwgMHhkMiwgMHg2ZSwgMHhiYSwgMHhhZSwKLSsgICAgIDB4NGEsIDB4YTEsIDB4 ZjksIDB4NTEsIDB4MjksIDB4ZTUsIDB4ZTUsIDB4NDYsIDB4NzAsIDB4ZjF9LAotK307Ci0rCi0r c3RhdGljIGludCBjb3JydXB0X3NoYTsKLSsKLSt2b2lkIEZJUFNfY29ycnVwdF9zaGExKCkKLSt7 Ci0rICAgIGNvcnJ1cHRfc2hhID0gMTsKLSt9Ci0rCi0raW50IEZJUFNfc2VsZnRlc3Rfc2hhMSgp Ci0rewotKyAgICBpbnQgbjsKLSsKLSsgICAgZm9yIChuID0gMDsgbiA8IHNpemVvZih0ZXN0KSAv IHNpemVvZih0ZXN0WzBdKTsgKytuKSB7Ci0rICAgICAgICB1bnNpZ25lZCBjaGFyIG1kW1NIQV9E SUdFU1RfTEVOR1RIXTsKLSsKLSsgICAgICAgIEVWUF9EaWdlc3QodGVzdFtuXSwgc3RybGVuKHRl c3Rbbl0pICsgY29ycnVwdF9zaGEsIG1kLCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICBFVlBf c2hhMSgpLCBOVUxMKTsKLSsgICAgICAgIGlmIChtZW1jbXAobWQsIHJldFtuXSwgc2l6ZW9mIG1k KSkgewotKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfU0hBMSwgRklQ U19SX1NFTEZURVNUX0ZBSUxFRCk7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9 Ci0rICAgIH0KLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIG1zZ19zaGEyNTZbXSA9Ci0rICAgIHsgMHhmYSwgMHg0OCwgMHg1OSwgMHgyYSwgMHhlMSwg MHhhZSwgMHgxZiwgMHgzMCwKLSsgICAgMHhmYwotK307Ci0rCi0rc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgZGlnX3NoYTI1NltdID0KLSsgICAgeyAweGY3LCAweDI2LCAweGQ4LCAweDk4LCAw eDQ3LCAweDkxLCAweDY4LCAweDViLAotKyAgICAweDllLCAweDM5LCAweGIyLCAweDU4LCAweGJi LCAweDc1LCAweGJmLCAweDAxLAotKyAgICAweDE3LCAweDBjLCAweDg0LCAweDAwLCAweDAxLCAw eDdhLCAweDk0LCAweDgzLAotKyAgICAweGYzLCAweDBiLCAweDE1LCAweDg0LCAweDRiLCAweDY5 LCAweDg4LCAweDhhCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBtc2dfc2hh NTEyW10gPQotKyAgICB7IDB4MzcsIDB4ZDEsIDB4MzUsIDB4OWQsIDB4MTgsIDB4NDEsIDB4ZTks IDB4YjcsCi0rICAgIDB4NmQsIDB4OWEsIDB4MTMsIDB4ZGEsIDB4NWYsIDB4ZjMsIDB4YmQKLSt9 OwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRpZ19zaGE1MTJbXSA9Ci0rICAgIHsg MHgxMSwgMHgxMywgMHhjNCwgMHgxOSwgMHhlZCwgMHgyYiwgMHgxZCwgMHgxNiwKLSsgICAgMHgx MSwgMHhlYiwgMHg5YiwgMHhiZSwgMHhmMCwgMHg3ZiwgMHhjZiwgMHg0NCwKLSsgICAgMHg4Yiwg MHhkNywgMHg1NywgMHhiZCwgMHg4ZCwgMHhhOSwgMHgyNSwgMHhiMCwKLSsgICAgMHg0NywgMHgy NSwgMHhkNiwgMHg2YywgMHg5YSwgMHg1NCwgMHg3ZiwgMHg4ZiwKLSsgICAgMHgwYiwgMHg1Mywg MHgxYSwgMHgxMCwgMHg2OCwgMHgzMiwgMHgwMywgMHgzOCwKLSsgICAgMHg4MiwgMHhjNCwgMHg4 NywgMHhjNCwgMHhlYSwgMHgwZSwgMHhkMSwgMHgwNCwKLSsgICAgMHhhOSwgMHg5OCwgMHhjMSwg MHgwNSwgMHhhMywgMHhmMywgMHhmOCwgMHhiMSwKLSsgICAgMHhhZiwgMHhiYywgMHhkOSwgMHg3 OCwgMHg3ZSwgMHhlZSwgMHgzZCwgMHg0MwotK307Ci0rCi0raW50IEZJUFNfc2VsZnRlc3Rfc2hh Mih2b2lkKQotK3sKLSsgICAgdW5zaWduZWQgY2hhciBtZFtTSEE1MTJfRElHRVNUX0xFTkdUSF07 Ci0rCi0rICAgIEVWUF9EaWdlc3QobXNnX3NoYTI1Niwgc2l6ZW9mKG1zZ19zaGEyNTYpLCBtZCwg TlVMTCwgRVZQX3NoYTI1NigpLCBOVUxMKTsKLSsgICAgaWYgKG1lbWNtcChkaWdfc2hhMjU2LCBt ZCwgc2l6ZW9mKGRpZ19zaGEyNTYpKSkgewotKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19N T0RFX1NFVCwgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7Ci0rICAgICAgICByZXR1cm4gMDsKLSsg ICAgfQotKwotKyAgICBFVlBfRGlnZXN0KG1zZ19zaGE1MTIsIHNpemVvZihtc2dfc2hhNTEyKSwg bWQsIE5VTEwsIEVWUF9zaGE1MTIoKSwgTlVMTCk7Ci0rICAgIGlmIChtZW1jbXAoZGlnX3NoYTUx MiwgbWQsIHNpemVvZihkaWdfc2hhNTEyKSkpIHsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfTU9ERV9TRVQsIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOwotKyAgICAgICAgcmV0dXJuIDA7 Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc19zdGFuZGFsb25lX2htYWMuYy5maXBzIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfc3RhbmRhbG9uZV9obWFjLmMKLS0tLSBvcGVuc3Ns LTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3N0YW5kYWxvbmVfaG1hYy5jLmZpcHMJMjAxNS0wNC0y MiAxOTowNToyOC41MDAxNzQ1NDEgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlw cy9maXBzX3N0YW5kYWxvbmVfaG1hYy5jCTIwMTUtMDQtMjIgMTk6MjA6MjguNzc3NDQ2Mjc4ICsw MjAwCi1AQCAtMCwwICsxLDI2OCBAQAotKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICogQ29weXJpZ2h0IChj KSAyMDAzIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0r ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0 aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJl ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp Z2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyLiAKLSsgKgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCi0r ICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3 aXRoIHRoZQotKyAqICAgIGRpc3RyaWJ1dGlvbi4KLSsgKgotKyAqIDMuIEFsbCBhZHZlcnRpc2lu ZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcwotKyAqICAgIHNv ZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgotKyAqICAg ICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NM IFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8v d3d3Lm9wZW5zc2wub3JnLykiCi0rICoKLSsgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtp dCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KLSsgKiAgICBlbmRv cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91 dAotKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lv biwgcGxlYXNlIGNvbnRhY3QKLSsgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCi0rICoK LSsgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNh bGxlZCAiT3BlblNTTCIKLSsgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIg bmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCi0rICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3Bl blNTTCBQcm9qZWN0LgotKyAqCi0rICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdo YXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZwotKyAqICAgIGFja25vd2xlZGdtZW50 OgotKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRo ZSBPcGVuU1NMIFByb2plY3QKLSsgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQg KGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP VklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQotKyAqIEVYUFJF U1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP LCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSsgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g RVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgotKyAqIElUUyBDT05UUklCVVRPUlMg QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsgKiBTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQK LSsgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT RVJWSUNFUzsKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg SU5URVJSVVBUSU9OKQotKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLSsgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBU T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0rICogQVJJU0lORyBJTiBB TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAot KyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsgKgotKyAqLwotKwotKyNp bmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5n Lmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KLSsjaW5jbHVkZSA8b3BlbnNz bC9zaGEuaD4KLSsjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+Ci0rCi0rI2lmbmRlZiBGSVBTQ0FO SVNURVJfTwotK2ludCBGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpCi0rewotKyAgICByZXR1cm4gMDsK LSt9Ci0rCi0rdm9pZCBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCkKLSt7Ci0rfQotKyNlbmRpZgotKwot KyNpZmRlZiBPUEVOU1NMX0ZJUFMKLStpbnQgYm5fbXVsX21vbnRfZnB1NjQoQk5fVUxPTkcgKnJw LCBjb25zdCBCTl9VTE9ORyAqYXAsIGNvbnN0IEJOX1VMT05HICpicCwKLSsgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgQk5fVUxPTkcgKm5wLCBjb25zdCBCTl9VTE9ORyAqbjAsIGludCBudW0p Ci0rewotKyAgICByZXR1cm4gMDsKLSt9OwotKwotK2ludCBibl9tdWxfbW9udF9pbnQoQk5fVUxP TkcgKnJwLCBjb25zdCBCTl9VTE9ORyAqYXAsIGNvbnN0IEJOX1VMT05HICpicCwKLSsgICAgICAg ICAgICAgICAgICAgIGNvbnN0IEJOX1VMT05HICpucCwgY29uc3QgQk5fVUxPTkcgKm4wLCBpbnQg bnVtKQotK3sKLSsgICAgcmV0dXJuIDA7Ci0rfTsKLSsKLSsjIGlmICAgICBkZWZpbmVkKF9faTM4 NikgICB8fCBkZWZpbmVkKF9faTM4Nl9fKSAgIHx8IGRlZmluZWQoX01fSVg4NikgfHwgXAotKyAg ICAgICAgZGVmaW5lZChfX0lOVEVMX18pIHx8IFwKLSsgICAgICAgIGRlZmluZWQoX194ODZfNjQp IHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgXAotKyAgICAgICAgZGVmaW5lZChfTV9BTUQ2NCkg fHwgZGVmaW5lZChfTV9YNjQpCi0rCi0rdW5zaWduZWQgaW50IE9QRU5TU0xfaWEzMmNhcF9QWzRd OwotK3Vuc2lnbmVkIGxvbmcgKk9QRU5TU0xfaWEzMmNhcF9sb2Modm9pZCkKLSt7Ci0rICAgIGlm IChzaXplb2YobG9uZykgPT0gNCkKLSsgICAgICAgIC8qCi0rICAgICAgICAgKiBJZiAzMi1iaXQg YXBwbGljYXRpb24gcHVsbHMgYWRkcmVzcyBvZiBPUEVOU1NMX2lhMzJjYXBfUFswXQotKyAgICAg ICAgICogY2xlYXIgc2Vjb25kIGVsZW1lbnQgdG8gbWFpbnRhaW4gdGhlIGlsbHVzaW9uIHRoYXQg dmVjdG9yCi0rICAgICAgICAgKiBpcyAzMi1iaXQuCi0rICAgICAgICAgKi8KLSsgICAgICAgIE9Q RU5TU0xfaWEzMmNhcF9QWzFdID0gMDsKLSsKLSsgICAgT1BFTlNTTF9pYTMyY2FwX1BbMl0gPSAw OwotKwotKyAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgKilPUEVOU1NMX2lhMzJjYXBfUDsKLSt9 Ci0rCi0rIyAgaWYgZGVmaW5lZChPUEVOU1NMX0NQVUlEX09CSikgJiYgIWRlZmluZWQoT1BFTlNT TF9OT19BU00pICYmICFkZWZpbmVkKEkzODZfT05MWSkKLSsjICAgZGVmaW5lIE9QRU5TU0xfQ1BV SURfU0VUVVAKLSsjICAgaWYgZGVmaW5lZChfV0lOMzIpCi0rdHlwZWRlZiB1bnNpZ25lZCBfX2lu dDY0IElBMzJDQVA7Ci0rIyAgIGVsc2UKLSt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBJQTMy Q0FQOwotKyMgICBlbmRpZgotK3ZvaWQgT1BFTlNTTF9jcHVpZF9zZXR1cCh2b2lkKQotK3sKLSsg ICAgc3RhdGljIGludCB0cmlnZ2VyID0gMDsKLSsgICAgSUEzMkNBUCBPUEVOU1NMX2lhMzJfY3B1 aWQodW5zaWduZWQgaW50ICopOwotKyAgICBJQTMyQ0FQIHZlYzsKLSsgICAgY2hhciAqZW52Owot KwotKyAgICBpZiAodHJpZ2dlcikKLSsgICAgICAgIHJldHVybjsKLSsKLSsgICAgdHJpZ2dlciA9 IDE7Ci0rICAgIGlmICgoZW52ID0gZ2V0ZW52KCJPUEVOU1NMX2lhMzJjYXAiKSkpIHsKLSsgICAg ICAgIGludCBvZmYgPSAoZW52WzBdID09ICd+JykgPyAxIDogMDsKLSsjICAgaWYgZGVmaW5lZChf V0lOMzIpCi0rICAgICAgICBpZiAoIXNzY2FuZihlbnYgKyBvZmYsICIlSTY0aSIsICZ2ZWMpKQot KyAgICAgICAgICAgIHZlYyA9IHN0cnRvdWwoZW52ICsgb2ZmLCBOVUxMLCAwKTsKLSsjICAgZWxz ZQotKyAgICAgICAgaWYgKCFzc2NhbmYoZW52ICsgb2ZmLCAiJWxsaSIsIChsb25nIGxvbmcgKikm dmVjKSkKLSsgICAgICAgICAgICB2ZWMgPSBzdHJ0b3VsKGVudiArIG9mZiwgTlVMTCwgMCk7Ci0r IyAgIGVuZGlmCi0rICAgICAgICBpZiAob2ZmKQotKyAgICAgICAgICAgIHZlYyA9IE9QRU5TU0xf aWEzMl9jcHVpZChPUEVOU1NMX2lhMzJjYXBfUCkgJiB+dmVjOwotKyAgICAgICAgZWxzZSBpZiAo ZW52WzBdID09ICc6JykKLSsgICAgICAgICAgICB2ZWMgPSBPUEVOU1NMX2lhMzJfY3B1aWQoT1BF TlNTTF9pYTMyY2FwX1ApOwotKwotKyAgICAgICAgT1BFTlNTTF9pYTMyY2FwX1BbMl0gPSAwOwot KyAgICAgICAgaWYgKChlbnYgPSBzdHJjaHIoZW52LCAnOicpKSkgewotKyAgICAgICAgICAgIHVu c2lnbmVkIGludCB2ZWN4OwotKyAgICAgICAgICAgIGVudisrOwotKyAgICAgICAgICAgIG9mZiA9 IChlbnZbMF0gPT0gJ34nKSA/IDEgOiAwOwotKyAgICAgICAgICAgIHZlY3ggPSBzdHJ0b3VsKGVu diArIG9mZiwgTlVMTCwgMCk7Ci0rICAgICAgICAgICAgaWYgKG9mZikKLSsgICAgICAgICAgICAg ICAgT1BFTlNTTF9pYTMyY2FwX1BbMl0gJj0gfnZlY3g7Ci0rICAgICAgICAgICAgZWxzZQotKyAg ICAgICAgICAgICAgICBPUEVOU1NMX2lhMzJjYXBfUFsyXSA9IHZlY3g7Ci0rICAgICAgICB9Ci0r ICAgIH0gZWxzZQotKyAgICAgICAgdmVjID0gT1BFTlNTTF9pYTMyX2NwdWlkKE9QRU5TU0xfaWEz MmNhcF9QKTsKLSsKLSsgICAgLyoKLSsgICAgICogfCgxPDwxMCkgc2V0cyBhIHJlc2VydmVkIGJp dCB0byBzaWduYWwgdGhhdCB2YXJpYWJsZQotKyAgICAgKiB3YXMgaW5pdGlhbGl6ZWQgYWxyZWFk eS4uLiBUaGlzIGlzIHRvIGF2b2lkIGludGVyZmVyZW5jZQotKyAgICAgKiB3aXRoIGNwdWlkIHNu aXBwZXRzIGluIEVMRiAuaW5pdCBzZWdtZW50LgotKyAgICAgKi8KLSsgICAgT1BFTlNTTF9pYTMy Y2FwX1BbMF0gPSAodW5zaWduZWQgaW50KXZlYyB8ICgxIDw8IDEwKTsKLSsgICAgT1BFTlNTTF9p YTMyY2FwX1BbMV0gPSAodW5zaWduZWQgaW50KSh2ZWMgPj4gMzIpOwotK30KLSsjICBlbHNlCi0r dW5zaWduZWQgaW50IE9QRU5TU0xfaWEzMmNhcF9QWzRdOwotKyMgIGVuZGlmCi0rCi0rIyBlbHNl Ci0rdW5zaWduZWQgbG9uZyAqT1BFTlNTTF9pYTMyY2FwX2xvYyh2b2lkKQotK3sKLSsgICAgcmV0 dXJuIE5VTEw7Ci0rfQotKyMgZW5kaWYKLStpbnQgT1BFTlNTTF9OT05QSUNfcmVsb2NhdGVkID0g MDsKLSsjIGlmICFkZWZpbmVkKE9QRU5TU0xfQ1BVSURfU0VUVVApICYmICFkZWZpbmVkKE9QRU5T U0xfQ1BVSURfT0JKKQotK3ZvaWQgT1BFTlNTTF9jcHVpZF9zZXR1cCh2b2lkKQotK3sKLSt9Ci0r IyBlbmRpZgotKwotK3N0YXRpYyB2b2lkIGhtYWNfaW5pdChTSEEyNTZfQ1RYICptZF9jdHgsIFNI QTI1Nl9DVFggKm9fY3R4LCBjb25zdCBjaGFyICprZXkpCi0rewotKyAgICBzaXplX3QgbGVuID0g c3RybGVuKGtleSk7Ci0rICAgIGludCBpOwotKyAgICB1bnNpZ25lZCBjaGFyIGtleW1kW0hNQUNf TUFYX01EX0NCTE9DS107Ci0rICAgIHVuc2lnbmVkIGNoYXIgcGFkW0hNQUNfTUFYX01EX0NCTE9D S107Ci0rCi0rICAgIGlmIChsZW4gPiBTSEFfQ0JMT0NLKSB7Ci0rICAgICAgICBTSEEyNTZfSW5p dChtZF9jdHgpOwotKyAgICAgICAgU0hBMjU2X1VwZGF0ZShtZF9jdHgsIGtleSwgbGVuKTsKLSsg ICAgICAgIFNIQTI1Nl9GaW5hbChrZXltZCwgbWRfY3R4KTsKLSsgICAgICAgIGxlbiA9IFNIQTI1 Nl9ESUdFU1RfTEVOR1RIOwotKyAgICB9IGVsc2UKLSsgICAgICAgIG1lbWNweShrZXltZCwga2V5 LCBsZW4pOwotKyAgICBtZW1zZXQoJmtleW1kW2xlbl0sICdcMCcsIEhNQUNfTUFYX01EX0NCTE9D SyAtIGxlbik7Ci0rCi0rICAgIGZvciAoaSA9IDA7IGkgPCBITUFDX01BWF9NRF9DQkxPQ0s7IGkr KykKLSsgICAgICAgIHBhZFtpXSA9IDB4MzYgXiBrZXltZFtpXTsKLSsgICAgU0hBMjU2X0luaXQo bWRfY3R4KTsKLSsgICAgU0hBMjU2X1VwZGF0ZShtZF9jdHgsIHBhZCwgU0hBMjU2X0NCTE9DSyk7 Ci0rCi0rICAgIGZvciAoaSA9IDA7IGkgPCBITUFDX01BWF9NRF9DQkxPQ0s7IGkrKykKLSsgICAg ICAgIHBhZFtpXSA9IDB4NWMgXiBrZXltZFtpXTsKLSsgICAgU0hBMjU2X0luaXQob19jdHgpOwot KyAgICBTSEEyNTZfVXBkYXRlKG9fY3R4LCBwYWQsIFNIQTI1Nl9DQkxPQ0spOwotK30KLSsKLStz dGF0aWMgdm9pZCBobWFjX2ZpbmFsKHVuc2lnbmVkIGNoYXIgKm1kLCBTSEEyNTZfQ1RYICptZF9j dHgsCi0rICAgICAgICAgICAgICAgICAgICAgICBTSEEyNTZfQ1RYICpvX2N0eCkKLSt7Ci0rICAg IHVuc2lnbmVkIGNoYXIgYnVmW1NIQTI1Nl9ESUdFU1RfTEVOR1RIXTsKLSsKLSsgICAgU0hBMjU2 X0ZpbmFsKGJ1ZiwgbWRfY3R4KTsKLSsgICAgU0hBMjU2X1VwZGF0ZShvX2N0eCwgYnVmLCBzaXpl b2YgYnVmKTsKLSsgICAgU0hBMjU2X0ZpbmFsKG1kLCBvX2N0eCk7Ci0rfQotKwotKyNlbmRpZgot KwotK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rI2lmZGVmIE9QRU5TU0xf RklQUwotKyAgICBzdGF0aWMgY2hhciBrZXlbXSA9ICJvcmJvRGVKSVRJVGVqc2lycEFET05pdmly cFVrdmFyUCI7Ci0rICAgIGludCBuLCBiaW5hcnkgPSAwOwotKwotKyAgICBpZiAoYXJnYyA8IDIp IHsKLSsgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgWzxmaWxlPl0rXG4iLCBhcmd2WzBdKTsK LSsgICAgICAgIGV4aXQoMSk7Ci0rICAgIH0KLSsKLSsgICAgbiA9IDE7Ci0rICAgIGlmICghc3Ry Y21wKGFyZ3Zbbl0sICItYmluYXJ5IikpIHsKLSsgICAgICAgIG4rKzsKLSsgICAgICAgIGJpbmFy eSA9IDE7ICAgICAgICAgICAgIC8qIGVtaXQgYmluYXJ5IGZpbmdlcnByaW50Li4uICovCi0rICAg IH0KLSsKLSsgICAgZm9yICg7IG4gPCBhcmdjOyArK24pIHsKLSsgICAgICAgIEZJTEUgKmYgPSBm b3Blbihhcmd2W25dLCAicmIiKTsKLSsgICAgICAgIFNIQTI1Nl9DVFggbWRfY3R4LCBvX2N0eDsK LSsgICAgICAgIHVuc2lnbmVkIGNoYXIgbWRbU0hBMjU2X0RJR0VTVF9MRU5HVEhdOwotKyAgICAg ICAgaW50IGk7Ci0rCi0rICAgICAgICBpZiAoIWYpIHsKLSsgICAgICAgICAgICBwZXJyb3IoYXJn dltuXSk7Ci0rICAgICAgICAgICAgZXhpdCgyKTsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGht YWNfaW5pdCgmbWRfY3R4LCAmb19jdHgsIGtleSk7Ci0rICAgICAgICBmb3IgKDs7KSB7Ci0rICAg ICAgICAgICAgY2hhciBidWZbMTAyNF07Ci0rICAgICAgICAgICAgc2l6ZV90IGwgPSBmcmVhZChi dWYsIDEsIHNpemVvZiBidWYsIGYpOwotKwotKyAgICAgICAgICAgIGlmIChsID09IDApIHsKLSsg ICAgICAgICAgICAgICAgaWYgKGZlcnJvcihmKSkgewotKyAgICAgICAgICAgICAgICAgICAgcGVy cm9yKGFyZ3Zbbl0pOwotKyAgICAgICAgICAgICAgICAgICAgZXhpdCgzKTsKLSsgICAgICAgICAg ICAgICAgfSBlbHNlCi0rICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9 Ci0rICAgICAgICAgICAgU0hBMjU2X1VwZGF0ZSgmbWRfY3R4LCBidWYsIGwpOwotKyAgICAgICAg fQotKyAgICAgICAgaG1hY19maW5hbChtZCwgJm1kX2N0eCwgJm9fY3R4KTsKLSsKLSsgICAgICAg IGlmIChiaW5hcnkpIHsKLSsgICAgICAgICAgICBmd3JpdGUobWQsIFNIQTI1Nl9ESUdFU1RfTEVO R1RILCAxLCBzdGRvdXQpOwotKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgLyogLi4u IGZvciBzaW5nbGUoISkgZmlsZSAqLwotKyAgICAgICAgfQotKwotKy8qICAgICAgcHJpbnRmKCJI TUFDLVNIQTEoJXMpPSAiLGFyZ3Zbbl0pOyAqLwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFNI QTI1Nl9ESUdFU1RfTEVOR1RIOyArK2kpCi0rICAgICAgICAgICAgcHJpbnRmKCIlMDJ4IiwgbWRb aV0pOwotKyAgICAgICAgcHJpbnRmKCJcbiIpOwotKyAgICB9Ci0rI2VuZGlmCi0rICAgIHJldHVy biAwOwotK30KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL2ZpcHNfdGVzdF9z dWl0ZS5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2ZpcHMvZmlwc190ZXN0X3N1aXRlLmMK LS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9maXBzX3Rlc3Rfc3VpdGUuYy5maXBzCTIw MTUtMDQtMjIgMTY6MDg6NDAuMzAwMjQ1ODQ0ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL2ZpcHMvZmlwc190ZXN0X3N1aXRlLmMJMjAxNS0wNC0yMiAxNjowODo0MC4zMDAyNDU4NDQg KzAyMDAKLUBAIC0wLDAgKzEsNjM5IEBACi0rLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsgKiBDb3B5cmlnaHQg KGMpIDIwMDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoK LSsgKgotKyAqIFRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBhcyBhIHRlc3QgZHJpdmVyIGZvciB0 aGUgRklQUy0xNDAgdGVzdGluZwotKyAqIGxhYiBwZXJmb3JtaW5nIEZJUFMtMTQwIHZhbGlkYXRp b24uICBJdCBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZiB0aGUKLSsgKiBPcGVuU1NMIGxpYnJhcnkg aXRvIHBlcmZvcm0gYSB2YXJpZXR5IG9mIGNvbW1vbiBjcnlwdG9ncmFwaGljCi0rICogZnVuY3Rp b25zLiAgQSBwb3dlci11cCBzZWxmIHRlc3QgaXMgZGVtb25zdHJhdGVkIGJ5IGRlbGliZXJhdGVs eQotKyAqIHBvaW50aW5nIHRvIGFuIGludmFsaWQgZXhlY3V0YWJsZSBoYXNoCi0rICoKLSsgKiBD b250cmlidXRlZCBieSBTdGV2ZSBNYXJxdWVzcy4KLSsgKgotKyAqLwotKyNpbmNsdWRlIDxzdGRp by5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjaW5jbHVk ZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Fl cy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Rlcy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL3JzYS5o PgotKyNpbmNsdWRlIDxvcGVuc3NsL2RzYS5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2RoLmg+Ci0r I2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKwot KyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgotKyNp bmNsdWRlIDxvcGVuc3NsL3NoYS5oPgotKwotKyNpZm5kZWYgT1BFTlNTTF9GSVBTCi0raW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSt7Ci0rICAgIHByaW50ZigiTm8gRklQUyBzdXBw b3J0XG4iKTsKLSsgICAgcmV0dXJuICgwKTsKLSt9Ci0rI2Vsc2UKLSsKLSsjIGluY2x1ZGUgPG9w ZW5zc2wvZmlwcy5oPgotKyMgaW5jbHVkZSAiZmlwc191dGwuaCIKLSsKLSsvKiBBRVM6IGVuY3J5 cHQgYW5kIGRlY3J5cHQga25vd24gcGxhaW50ZXh0LCB2ZXJpZnkgcmVzdWx0IG1hdGNoZXMgb3Jp Z2luYWwgcGxhaW50ZXh0Ci0rKi8KLStzdGF0aWMgaW50IEZJUFNfYWVzX3Rlc3Qodm9pZCkKLSt7 Ci0rICAgIGludCByZXQgPSAwOwotKyAgICB1bnNpZ25lZCBjaGFyIHBsdG1wWzE2XTsKLSsgICAg dW5zaWduZWQgY2hhciBjaXRtcFsxNl07Ci0rICAgIHVuc2lnbmVkIGNoYXIga2V5WzE2XSA9Ci0r ICAgICAgICB7IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwg MTUsIDE2IH07Ci0rICAgIHVuc2lnbmVkIGNoYXIgcGxhaW50ZXh0WzE2XSA9ICJldGFvbnJpc2hk bGN1IjsKLSsgICAgRVZQX0NJUEhFUl9DVFggY3R4OwotKyAgICBFVlBfQ0lQSEVSX0NUWF9pbml0 KCZjdHgpOwotKyAgICBpZiAoRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgRVZQX2Flc18xMjhfZWNi KCksIE5VTEwsIGtleSwgTlVMTCwgMSkgPD0gMCkKLSsgICAgICAgIGdvdG8gZXJyOwotKyAgICBF VlBfQ2lwaGVyKCZjdHgsIGNpdG1wLCBwbGFpbnRleHQsIDE2KTsKLSsgICAgaWYgKEVWUF9DaXBo ZXJJbml0X2V4KCZjdHgsIEVWUF9hZXNfMTI4X2VjYigpLCBOVUxMLCBrZXksIE5VTEwsIDApIDw9 IDApCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgRVZQX0NpcGhlcigmY3R4LCBwbHRtcCwgY2l0 bXAsIDE2KTsKLSsgICAgaWYgKG1lbWNtcChwbHRtcCwgcGxhaW50ZXh0LCAxNikpCi0rICAgICAg ICBnb3RvIGVycjsKLSsgICAgcmV0ID0gMTsKLSsgZXJyOgotKyAgICBFVlBfQ0lQSEVSX0NUWF9j bGVhbnVwKCZjdHgpOwotKyAgICByZXR1cm4gcmV0OwotK30KLSsKLStzdGF0aWMgaW50IEZJUFNf ZGVzM190ZXN0KHZvaWQpCi0rewotKyAgICBpbnQgcmV0ID0gMDsKLSsgICAgdW5zaWduZWQgY2hh ciBwbHRtcFs4XTsKLSsgICAgdW5zaWduZWQgY2hhciBjaXRtcFs4XTsKLSsgICAgdW5zaWduZWQg Y2hhciBrZXlbXSA9Ci0rICAgICAgICB7IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAx MSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsCi0rICAgICAgICAxOSwgMjAsIDIxLCAyMiwg MjMsIDI0Ci0rICAgIH07Ci0rICAgIHVuc2lnbmVkIGNoYXIgcGxhaW50ZXh0W10gPSB7ICdlJywg J3QnLCAnYScsICdvJywgJ24nLCAncicsICdpJywgJ3MnIH07Ci0rICAgIEVWUF9DSVBIRVJfQ1RY IGN0eDsKLSsgICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKLSsgICAgaWYgKEVWUF9DaXBo ZXJJbml0X2V4KCZjdHgsIEVWUF9kZXNfZWRlM19lY2IoKSwgTlVMTCwga2V5LCBOVUxMLCAxKSA8 PSAwKQotKyAgICAgICAgZ290byBlcnI7Ci0rICAgIEVWUF9DaXBoZXIoJmN0eCwgY2l0bXAsIHBs YWludGV4dCwgOCk7Ci0rICAgIGlmIChFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBfZGVzX2Vk ZTNfZWNiKCksIE5VTEwsIGtleSwgTlVMTCwgMCkgPD0gMCkKLSsgICAgICAgIGdvdG8gZXJyOwot KyAgICBFVlBfQ2lwaGVyKCZjdHgsIHBsdG1wLCBjaXRtcCwgOCk7Ci0rICAgIGlmIChtZW1jbXAo cGx0bXAsIHBsYWludGV4dCwgOCkpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgcmV0ID0gMTsK LSsgZXJyOgotKyAgICBFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjdHgpOwotKyAgICByZXR1cm4g cmV0OwotK30KLSsKLSsvKgotKyAqIERTQTogZ2VuZXJhdGUga2V5cyBhbmQgc2lnbiwgdmVyaWZ5 IGlucHV0IHBsYWludGV4dC4KLSsgKi8KLStzdGF0aWMgaW50IEZJUFNfZHNhX3Rlc3QoaW50IGJh ZCkKLSt7Ci0rICAgIERTQSAqZHNhID0gTlVMTDsKLSsgICAgRVZQX1BLRVkgcGs7Ci0rICAgIHVu c2lnbmVkIGNoYXIgZGdzdFtdID0gImV0YW9ucmlzaGRsYyI7Ci0rICAgIHVuc2lnbmVkIGNoYXIg YnVmWzYwXTsKLSsgICAgdW5zaWduZWQgaW50IHNsZW47Ci0rICAgIGludCByID0gMDsKLSsgICAg RVZQX01EX0NUWCBtY3R4OwotKwotKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKLSsgICAgRVZQX01E X0NUWF9pbml0KCZtY3R4KTsKLSsgICAgZHNhID0gRFNBX25ldygpOwotKyAgICBpZiAoIWRzYSkK LSsgICAgICAgIGdvdG8gZW5kOwotKyAgICBpZiAoIURTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4 KGRzYSwgMTAyNCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCkpCi0rICAgICAgICBnb3RvIGVu ZDsKLSsgICAgaWYgKCFEU0FfZ2VuZXJhdGVfa2V5KGRzYSkpCi0rICAgICAgICBnb3RvIGVuZDsK LSsgICAgaWYgKGJhZCkKLSsgICAgICAgIEJOX2FkZF93b3JkKGRzYS0+cHViX2tleSwgMSk7Ci0r Ci0rICAgIHBrLnR5cGUgPSBFVlBfUEtFWV9EU0E7Ci0rICAgIHBrLnBrZXkuZHNhID0gZHNhOwot KwotKyAgICBpZiAoIUVWUF9TaWduSW5pdF9leCgmbWN0eCwgRVZQX2RzczEoKSwgTlVMTCkpCi0r ICAgICAgICBnb3RvIGVuZDsKLSsgICAgaWYgKCFFVlBfU2lnblVwZGF0ZSgmbWN0eCwgZGdzdCwg c2l6ZW9mKGRnc3QpIC0gMSkpCi0rICAgICAgICBnb3RvIGVuZDsKLSsgICAgaWYgKCFFVlBfU2ln bkZpbmFsKCZtY3R4LCBidWYsICZzbGVuLCAmcGspKQotKyAgICAgICAgZ290byBlbmQ7Ci0rCi0r ICAgIGlmICghRVZQX1ZlcmlmeUluaXRfZXgoJm1jdHgsIEVWUF9kc3MxKCksIE5VTEwpKQotKyAg ICAgICAgZ290byBlbmQ7Ci0rICAgIGlmICghRVZQX1ZlcmlmeVVwZGF0ZSgmbWN0eCwgZGdzdCwg c2l6ZW9mKGRnc3QpIC0gMSkpCi0rICAgICAgICBnb3RvIGVuZDsKLSsgICAgciA9IEVWUF9WZXJp ZnlGaW5hbCgmbWN0eCwgYnVmLCBzbGVuLCAmcGspOwotKyBlbmQ6Ci0rICAgIEVWUF9NRF9DVFhf Y2xlYW51cCgmbWN0eCk7Ci0rICAgIGlmIChkc2EpCi0rICAgICAgICBEU0FfZnJlZShkc2EpOwot KyAgICBpZiAociAhPSAxKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIHJldHVybiAxOwotK30K LSsKLSsvKgotKyAqIFJTQTogZ2VuZXJhdGUga2V5cyBhbmQgc2lnbiwgdmVyaWZ5IGlucHV0IHBs YWludGV4dC4KLSsgKi8KLStzdGF0aWMgaW50IEZJUFNfcnNhX3Rlc3QoaW50IGJhZCkKLSt7Ci0r ICAgIFJTQSAqa2V5OwotKyAgICB1bnNpZ25lZCBjaGFyIGlucHV0X3B0ZXh0W10gPSAiZXRhb25y aXNoZGxjIjsKLSsgICAgdW5zaWduZWQgY2hhciBidWZbMjU2XTsKLSsgICAgdW5zaWduZWQgaW50 IHNsZW47Ci0rICAgIEJJR05VTSAqYm47Ci0rICAgIEVWUF9NRF9DVFggbWN0eDsKLSsgICAgRVZQ X1BLRVkgcGs7Ci0rICAgIGludCByID0gMDsKLSsKLSsgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0r ICAgIEVWUF9NRF9DVFhfaW5pdCgmbWN0eCk7Ci0rICAgIGtleSA9IFJTQV9uZXcoKTsKLSsgICAg Ym4gPSBCTl9uZXcoKTsKLSsgICAgaWYgKCFrZXkgfHwgIWJuKQotKyAgICAgICAgcmV0dXJuIDA7 Ci0rICAgIEJOX3NldF93b3JkKGJuLCA2NTUzNyk7Ci0rICAgIGlmICghUlNBX2dlbmVyYXRlX2tl eV9leChrZXksIDEwMjQsIGJuLCBOVUxMKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBCTl9m cmVlKGJuKTsKLSsgICAgaWYgKGJhZCkKLSsgICAgICAgIEJOX2FkZF93b3JkKGtleS0+biwgMSk7 Ci0rCi0rICAgIHBrLnR5cGUgPSBFVlBfUEtFWV9SU0E7Ci0rICAgIHBrLnBrZXkucnNhID0ga2V5 OwotKwotKyAgICBpZiAoIUVWUF9TaWduSW5pdF9leCgmbWN0eCwgRVZQX3NoYTEoKSwgTlVMTCkp Ci0rICAgICAgICBnb3RvIGVuZDsKLSsgICAgaWYgKCFFVlBfU2lnblVwZGF0ZSgmbWN0eCwgaW5w dXRfcHRleHQsIHNpemVvZihpbnB1dF9wdGV4dCkgLSAxKSkKLSsgICAgICAgIGdvdG8gZW5kOwot KyAgICBpZiAoIUVWUF9TaWduRmluYWwoJm1jdHgsIGJ1ZiwgJnNsZW4sICZwaykpCi0rICAgICAg ICBnb3RvIGVuZDsKLSsKLSsgICAgaWYgKCFFVlBfVmVyaWZ5SW5pdF9leCgmbWN0eCwgRVZQX3No YTEoKSwgTlVMTCkpCi0rICAgICAgICBnb3RvIGVuZDsKLSsgICAgaWYgKCFFVlBfVmVyaWZ5VXBk YXRlKCZtY3R4LCBpbnB1dF9wdGV4dCwgc2l6ZW9mKGlucHV0X3B0ZXh0KSAtIDEpKQotKyAgICAg ICAgZ290byBlbmQ7Ci0rICAgIHIgPSBFVlBfVmVyaWZ5RmluYWwoJm1jdHgsIGJ1Ziwgc2xlbiwg JnBrKTsKLSsgZW5kOgotKyAgICBFVlBfTURfQ1RYX2NsZWFudXAoJm1jdHgpOwotKyAgICBpZiAo a2V5KQotKyAgICAgICAgUlNBX2ZyZWUoa2V5KTsKLSsgICAgaWYgKHIgIT0gMSkKLSsgICAgICAg IHJldHVybiAwOwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogU0hBMTogZ2VuZXJhdGUgaGFz aCBvZiBrbm93biBkaWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8ga25vd24KLSsgICBwcmVjb21w dXRlZCBjb3JyZWN0IGhhc2gKLSsqLwotK3N0YXRpYyBpbnQgRklQU19zaGExX3Rlc3QoKQotK3sK LSsgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBX0RJR0VTVF9MRU5HVEhdID0KLSsgICAgICAg IHsgMHgxMSwgMHhmMSwgMHg5YSwgMHgzYSwgMHhlYywgMHgxYSwgMHgxZSwgMHg4ZSwgMHg2NSwg MHhkNCwgMHg5YSwKLSsweDM4LCAweDBjLCAweDhiLCAweDFlLCAweDJjLCAweGU4LCAweGIzLCAw eGM1LCAweDE4IH07Ci0rICAgIHVuc2lnbmVkIGNoYXIgc3RyW10gPSAiZXRhb25yaXNoZCI7Ci0r Ci0rICAgIHVuc2lnbmVkIGNoYXIgbWRbU0hBX0RJR0VTVF9MRU5HVEhdOwotKwotKyAgICBFUlJf Y2xlYXJfZXJyb3IoKTsKLSsgICAgaWYgKCFFVlBfRGlnZXN0KHN0ciwgc2l6ZW9mKHN0cikgLSAx LCBtZCwgTlVMTCwgRVZQX3NoYTEoKSwgTlVMTCkpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAg aWYgKG1lbWNtcChtZCwgZGlnZXN0LCBzaXplb2YobWQpKSkKLSsgICAgICAgIHJldHVybiAwOwot KyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogU0hBMjU2OiBnZW5lcmF0ZSBoYXNoIG9mIGtub3du IGRpZ2VzdCB2YWx1ZSBhbmQgY29tcGFyZSB0byBrbm93bgotKyAgIHByZWNvbXB1dGVkIGNvcnJl Y3QgaGFzaAotKyovCi0rc3RhdGljIGludCBGSVBTX3NoYTI1Nl90ZXN0KCkKLSt7Ci0rICAgIHVu c2lnbmVkIGNoYXIgZGlnZXN0W1NIQTI1Nl9ESUdFU1RfTEVOR1RIXSA9Ci0rICAgICAgICB7IDB4 ZjUsIDB4NTMsIDB4Y2QsIDB4YjgsIDB4Y2YsIDB4MSwgMHhlZSwgMHgxNywgMHg5YiwgMHg5Mywg MHhjOSwKLSsweDY4LCAweGMwLCAweGVhLCAweDQwLCAweDkxLAotKyAgICAgICAgMHg2LCAweGVj LCAweDhlLCAweDExLCAweDk2LCAweGM4LCAweDVkLCAweDFjLCAweGFmLCAweDY0LCAweDIyLCAw eGU2LAotKyAgICAgICAgICAgIDB4NTAsIDB4NGYsIDB4NDcsIDB4NTcKLSsgICAgfTsKLSsgICAg dW5zaWduZWQgY2hhciBzdHJbXSA9ICJldGFvbnJpc2hkIjsKLSsKLSsgICAgdW5zaWduZWQgY2hh ciBtZFtTSEEyNTZfRElHRVNUX0xFTkdUSF07Ci0rCi0rICAgIEVSUl9jbGVhcl9lcnJvcigpOwot KyAgICBpZiAoIUVWUF9EaWdlc3Qoc3RyLCBzaXplb2Yoc3RyKSAtIDEsIG1kLCBOVUxMLCBFVlBf c2hhMjU2KCksIE5VTEwpKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmIChtZW1jbXAobWQs IGRpZ2VzdCwgc2l6ZW9mKG1kKSkpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgcmV0dXJuIDE7 Ci0rfQotKwotKy8qIFNIQTUxMjogZ2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFsdWUg YW5kIGNvbXBhcmUgdG8ga25vd24KLSsgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKLSsqLwot K3N0YXRpYyBpbnQgRklQU19zaGE1MTJfdGVzdCgpCi0rewotKyAgICB1bnNpZ25lZCBjaGFyIGRp Z2VzdFtTSEE1MTJfRElHRVNUX0xFTkdUSF0gPQotKyAgICAgICAgeyAweDk5LCAweGM5LCAweGU5 LCAweDViLCAweDg4LCAweGQ0LCAweDc4LCAweDg4LCAweGRmLCAweDg4LCAweDVmLAotKzB4OTQs IDB4NzEsIDB4NjQsIDB4MjgsIDB4Y2EsCi0rICAgICAgICAweDE2LCAweDFmLCAweDNkLCAweGY0 LCAweDFmLCAweGYzLCAweDBmLCAweGM1LCAweDAzLCAweDk5LCAweGIyLAotKyAgICAgICAgICAg IDB4ZDAsIDB4ZTcsIDB4MGIsIDB4OTQsIDB4NGEsCi0rICAgICAgICAweDQ1LCAweGQyLCAweDZj LCAweDRmLCAweDIwLCAweDA2LCAweGVmLCAweDcxLCAweGE5LCAweDI1LCAweDdmLAotKyAgICAg ICAgICAgIDB4MjQsIDB4YjEsIDB4ZDksIDB4NDAsIDB4MjIsCi0rICAgICAgICAweDQ5LCAweDU0 LCAweDEwLCAweGMyLCAweDIyLCAweDlkLCAweDI3LCAweGZlLCAweGJkLCAweGQ2LCAweGQ2LAot KyAgICAgICAgICAgIDB4ZWIsIDB4MmQsIDB4NDIsIDB4MWQsIDB4YTMKLSsgICAgfTsKLSsgICAg dW5zaWduZWQgY2hhciBzdHJbXSA9ICJldGFvbnJpc2hkIjsKLSsKLSsgICAgdW5zaWduZWQgY2hh ciBtZFtTSEE1MTJfRElHRVNUX0xFTkdUSF07Ci0rCi0rICAgIEVSUl9jbGVhcl9lcnJvcigpOwot KyAgICBpZiAoIUVWUF9EaWdlc3Qoc3RyLCBzaXplb2Yoc3RyKSAtIDEsIG1kLCBOVUxMLCBFVlBf c2hhNTEyKCksIE5VTEwpKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmIChtZW1jbXAobWQs IGRpZ2VzdCwgc2l6ZW9mKG1kKSkpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgcmV0dXJuIDE7 Ci0rfQotKwotKy8qIEhNQUMtU0hBMTogZ2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFs dWUgYW5kIGNvbXBhcmUgdG8ga25vd24KLSsgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKLSsq LwotK3N0YXRpYyBpbnQgRklQU19obWFjX3NoYTFfdGVzdCgpCi0rewotKyAgICB1bnNpZ25lZCBj aGFyIGtleVtdID0gImV0YW9ucmlzaGQiOwotKyAgICB1bnNpZ25lZCBjaGFyIGl2W10gPSAiU2Ft cGxlIHRleHQiOwotKyAgICB1bnNpZ25lZCBjaGFyIGthdmFsW0VWUF9NQVhfTURfU0laRV0gPQot KyAgICAgICAgeyAweDczLCAweGY3LCAweGEwLCAweDQ4LCAweGY4LCAweDk0LCAweGVkLCAweGRk LCAweDBhLCAweGVhLCAweGVhLAotKzB4NTYsIDB4MWIsIDB4NjEsIDB4MmUsIDB4NzAsCi0rICAg ICAgICAweGIyLCAweGZiLCAweGVjLCAweGM2Ci0rICAgIH07Ci0rCi0rICAgIHVuc2lnbmVkIGNo YXIgb3V0W0VWUF9NQVhfTURfU0laRV07Ci0rICAgIHVuc2lnbmVkIGludCBvdXRsZW47Ci0rCi0r ICAgIEVSUl9jbGVhcl9lcnJvcigpOwotKyAgICBpZiAoIUhNQUMKLSsgICAgICAgIChFVlBfc2hh MSgpLCBrZXksIHNpemVvZihrZXkpIC0gMSwgaXYsIHNpemVvZihpdikgLSAxLCBvdXQsICZvdXRs ZW4pKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIGlmIChtZW1jbXAob3V0LCBrYXZhbCwgb3V0 bGVuKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogSE1B Qy1TSEEyMjQ6IGdlbmVyYXRlIGhhc2ggb2Yga25vd24gZGlnZXN0IHZhbHVlIGFuZCBjb21wYXJl IHRvIGtub3duCi0rICAgcHJlY29tcHV0ZWQgY29ycmVjdCBoYXNoCi0rKi8KLStzdGF0aWMgaW50 IEZJUFNfaG1hY19zaGEyMjRfdGVzdCgpCi0rewotKyAgICB1bnNpZ25lZCBjaGFyIGtleVtdID0g ImV0YW9ucmlzaGQiOwotKyAgICB1bnNpZ25lZCBjaGFyIGl2W10gPSAiU2FtcGxlIHRleHQiOwot KyAgICB1bnNpZ25lZCBjaGFyIGthdmFsW0VWUF9NQVhfTURfU0laRV0gPQotKyAgICAgICAgeyAw eDc1LCAweDU4LCAweGQ1LCAweGJkLCAweDU1LCAweDZkLCAweDg3LCAweDBmLCAweDc1LCAweGZm LCAweGJlLAotKzB4MWMsIDB4YjIsIDB4ZjAsIDB4MjAsIDB4MzUsCi0rICAgICAgICAweGU1LCAw eDYyLCAweDQ5LCAweGI2LCAweDk0LCAweGI5LCAweGZjLCAweDY1LCAweDM0LCAweDMzLCAweDNh LCAweDE5Ci0rICAgIH07Ci0rCi0rICAgIHVuc2lnbmVkIGNoYXIgb3V0W0VWUF9NQVhfTURfU0la RV07Ci0rICAgIHVuc2lnbmVkIGludCBvdXRsZW47Ci0rCi0rICAgIEVSUl9jbGVhcl9lcnJvcigp OwotKyAgICBpZiAoIUhNQUMKLSsgICAgICAgIChFVlBfc2hhMjI0KCksIGtleSwgc2l6ZW9mKGtl eSkgLSAxLCBpdiwgc2l6ZW9mKGl2KSAtIDEsIG91dCwKLSsgICAgICAgICAmb3V0bGVuKSkKLSsg ICAgICAgIHJldHVybiAwOwotKyAgICBpZiAobWVtY21wKG91dCwga2F2YWwsIG91dGxlbikpCi0r ICAgICAgICByZXR1cm4gMDsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotKy8qIEhNQUMtU0hBMjU2 OiBnZW5lcmF0ZSBoYXNoIG9mIGtub3duIGRpZ2VzdCB2YWx1ZSBhbmQgY29tcGFyZSB0byBrbm93 bgotKyAgIHByZWNvbXB1dGVkIGNvcnJlY3QgaGFzaAotKyovCi0rc3RhdGljIGludCBGSVBTX2ht YWNfc2hhMjU2X3Rlc3QoKQotK3sKLSsgICAgdW5zaWduZWQgY2hhciBrZXlbXSA9ICJldGFvbnJp c2hkIjsKLSsgICAgdW5zaWduZWQgY2hhciBpdltdID0gIlNhbXBsZSB0ZXh0IjsKLSsgICAgdW5z aWduZWQgY2hhciBrYXZhbFtFVlBfTUFYX01EX1NJWkVdID0KLSsgICAgICAgIHsgMHhlOSwgMHgx NywgMHhjMSwgMHg3YiwgMHg0YywgMHg2YiwgMHg3NywgMHhkYSwgMHhkMiwgMHgzMCwgMHgzNiwK LSsweDAyLCAweGY1LCAweDcyLCAweDMzLCAweDg3LAotKyAgICAgICAgMHg5ZiwgMHhjNiwgMHg2 ZSwgMHg3YiwgMHg3ZSwgMHhhOCwgMHhlYSwgMHhhYSwgMHg5ZiwgMHhiYSwgMHhlZSwKLSsgICAg ICAgICAgICAweDUxLCAweGZmLCAweGRhLCAweDI0LCAweGY0Ci0rICAgIH07Ci0rCi0rICAgIHVu c2lnbmVkIGNoYXIgb3V0W0VWUF9NQVhfTURfU0laRV07Ci0rICAgIHVuc2lnbmVkIGludCBvdXRs ZW47Ci0rCi0rICAgIEVSUl9jbGVhcl9lcnJvcigpOwotKyAgICBpZiAoIUhNQUMKLSsgICAgICAg IChFVlBfc2hhMjU2KCksIGtleSwgc2l6ZW9mKGtleSkgLSAxLCBpdiwgc2l6ZW9mKGl2KSAtIDEs IG91dCwKLSsgICAgICAgICAmb3V0bGVuKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAo bWVtY21wKG91dCwga2F2YWwsIG91dGxlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgcmV0 dXJuIDE7Ci0rfQotKwotKy8qIEhNQUMtU0hBMzg0OiBnZW5lcmF0ZSBoYXNoIG9mIGtub3duIGRp Z2VzdCB2YWx1ZSBhbmQgY29tcGFyZSB0byBrbm93bgotKyAgIHByZWNvbXB1dGVkIGNvcnJlY3Qg aGFzaAotKyovCi0rc3RhdGljIGludCBGSVBTX2htYWNfc2hhMzg0X3Rlc3QoKQotK3sKLSsgICAg dW5zaWduZWQgY2hhciBrZXlbXSA9ICJldGFvbnJpc2hkIjsKLSsgICAgdW5zaWduZWQgY2hhciBp dltdID0gIlNhbXBsZSB0ZXh0IjsKLSsgICAgdW5zaWduZWQgY2hhciBrYXZhbFtFVlBfTUFYX01E X1NJWkVdID0KLSsgICAgICAgIHsgMHhiMiwgMHg5ZCwgMHg0MCwgMHg1OCwgMHgzMiwgMHhjNCwg MHhlMywgMHgzMSwgMHhiNiwgMHg2MywgMHgwOCwKLSsweDI2LCAweDk5LCAweGVmLCAweDNiLCAw eDEwLAotKyAgICAgICAgMHhlMiwgMHhkZiwgMHhmOCwgMHhmZiwgMHhjNiwgMHhlMSwgMHgwMywg MHgyOSwgMHg4MSwgMHgyYSwgMHgxYiwKLSsgICAgICAgICAgICAweGFjLCAweGIwLCAweDA3LCAw eDM5LCAweDA4LAotKyAgICAgICAgMHhmMywgMHg5MSwgMHgzNSwgMHgxMSwgMHg3NiwgMHhkNiwg MHg0YywgMHgyMCwgMHhmYiwgMHg0ZCwgMHhjMywKLSsgICAgICAgICAgICAweGYzLCAweGI4LCAw eDliLCAweDg4LCAweDFjCi0rICAgIH07Ci0rCi0rICAgIHVuc2lnbmVkIGNoYXIgb3V0W0VWUF9N QVhfTURfU0laRV07Ci0rICAgIHVuc2lnbmVkIGludCBvdXRsZW47Ci0rCi0rICAgIEVSUl9jbGVh cl9lcnJvcigpOwotKyAgICBpZiAoIUhNQUMKLSsgICAgICAgIChFVlBfc2hhMzg0KCksIGtleSwg c2l6ZW9mKGtleSkgLSAxLCBpdiwgc2l6ZW9mKGl2KSAtIDEsIG91dCwKLSsgICAgICAgICAmb3V0 bGVuKSkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAobWVtY21wKG91dCwga2F2YWwsIG91 dGxlbikpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotKy8qIEhN QUMtU0hBNTEyOiBnZW5lcmF0ZSBoYXNoIG9mIGtub3duIGRpZ2VzdCB2YWx1ZSBhbmQgY29tcGFy ZSB0byBrbm93bgotKyAgIHByZWNvbXB1dGVkIGNvcnJlY3QgaGFzaAotKyovCi0rc3RhdGljIGlu dCBGSVBTX2htYWNfc2hhNTEyX3Rlc3QoKQotK3sKLSsgICAgdW5zaWduZWQgY2hhciBrZXlbXSA9 ICJldGFvbnJpc2hkIjsKLSsgICAgdW5zaWduZWQgY2hhciBpdltdID0gIlNhbXBsZSB0ZXh0IjsK LSsgICAgdW5zaWduZWQgY2hhciBrYXZhbFtFVlBfTUFYX01EX1NJWkVdID0KLSsgICAgICAgIHsg MHhjZCwgMHgzZSwgMHhiOSwgMHg1MSwgMHhiOCwgMHhiYywgMHg3ZiwgMHg5YSwgMHgyMywgMHhh ZiwgMHhmMywKLSsweDc3LCAweDU5LCAweDg1LCAweGE5LCAweGU2LAotKyAgICAgICAgMHhmNywg MHhkMSwgMHg1MSwgMHg5NiwgMHgxNywgMHhlMCwgMHg5MiwgMHhkOCwgMHhhNiwgMHgzYiwgMHhj MSwKLSsgICAgICAgICAgICAweGFkLCAweDdlLCAweDI0LCAweGNhLCAweGIxLAotKyAgICAgICAg MHhkNywgMHg3OSwgMHgwYSwgMHhhNSwgMHhlYSwgMHgyYywgMHgwMiwgMHg1OCwgMHgwYiwgMHhh NiwgMHg1MiwKLSsgICAgICAgICAgICAweDZiLCAweDYxLCAweDdmLCAweGViLCAweDljLAotKyAg ICAgICAgMHg0NywgMHg4NiwgMHg1ZCwgMHg3NCwgMHgyYiwgMHg4OCwgMHhkZiwgMHhlZSwgMHg0 NiwgMHg2OSwgMHg5NiwKLSsgICAgICAgICAgICAweDNkLCAweGE2LCAweGQ5LCAweDJhLCAweDUz Ci0rICAgIH07Ci0rCi0rICAgIHVuc2lnbmVkIGNoYXIgb3V0W0VWUF9NQVhfTURfU0laRV07Ci0r ICAgIHVuc2lnbmVkIGludCBvdXRsZW47Ci0rCi0rICAgIEVSUl9jbGVhcl9lcnJvcigpOwotKyAg ICBpZiAoIUhNQUMKLSsgICAgICAgIChFVlBfc2hhNTEyKCksIGtleSwgc2l6ZW9mKGtleSkgLSAx LCBpdiwgc2l6ZW9mKGl2KSAtIDEsIG91dCwKLSsgICAgICAgICAmb3V0bGVuKSkKLSsgICAgICAg IHJldHVybiAwOwotKyAgICBpZiAobWVtY21wKG91dCwga2F2YWwsIG91dGxlbikpCi0rICAgICAg ICByZXR1cm4gMDsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotKy8qIERIOiBnZW5lcmF0ZSBzaGFy ZWQgcGFyYW1ldGVycwotKyovCi0rc3RhdGljIGludCBkaF90ZXN0KCkKLSt7Ci0rICAgIERIICpk aDsKLSsgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0rICAgIGRoID0gRklQU19kaF9uZXcoKTsKLSsg ICAgaWYgKCFkaCkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiAoIURIX2dlbmVyYXRlX3Bh cmFtZXRlcnNfZXgoZGgsIDEwMjQsIDIsIE5VTEwpKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAg IEZJUFNfZGhfZnJlZShkaCk7Ci0rICAgIHJldHVybiAxOwotK30KLSsKLSsvKiBaZXJvaXplCi0r Ki8KLStzdGF0aWMgaW50IFplcm9pemUoKQotK3sKLSsgICAgUlNBICprZXk7Ci0rICAgIEJJR05V TSAqYm47Ci0rICAgIHVuc2lnbmVkIGNoYXIgdXNlcmtleVsxNl0gPQotKyAgICAgICAgeyAweDQ4 LCAweDUwLCAweGYwLCAweGEzLCAweDNhLCAweGVkLCAweGQzLCAweGFmLCAweDZlLCAweDQ3LCAw eDdmLAotKzB4ODMsIDB4MDIsIDB4YjEsIDB4MDksIDB4NjggfTsKLSsgICAgaW50IGksIG47Ci0r Ci0rICAgIGtleSA9IEZJUFNfcnNhX25ldygpOwotKyAgICBibiA9IEJOX25ldygpOwotKyAgICBp ZiAoIWtleSB8fCAhYm4pCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgQk5fc2V0X3dvcmQoYm4s IDY1NTM3KTsKLSsgICAgaWYgKCFSU0FfZ2VuZXJhdGVfa2V5X2V4KGtleSwgMTAyNCwgYm4sIE5V TEwpKQotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIEJOX2ZyZWUoYm4pOwotKwotKyAgICBuID0g Qk5fbnVtX2J5dGVzKGtleS0+ZCk7Ci0rICAgIHByaW50ZigiIEdlbmVyYXRlZCAlZCBieXRlIFJT QSBwcml2YXRlIGtleVxuIiwgbik7Ci0rICAgIHByaW50ZigiXHRCTiBrZXkgYmVmb3JlIG92ZXJ3 cml0aW5nOlxuIik7Ci0rICAgIGRvX2JuX3ByaW50KHN0ZG91dCwga2V5LT5kKTsKLSsgICAgQk5f cmFuZChrZXktPmQsIG4gKiA4LCAtMSwgMCk7Ci0rICAgIHByaW50ZigiXHRCTiBrZXkgYWZ0ZXIg b3ZlcndyaXRpbmc6XG4iKTsKLSsgICAgZG9fYm5fcHJpbnQoc3Rkb3V0LCBrZXktPmQpOwotKwot KyAgICBwcmludGYoIlx0Y2hhciBidWZmZXIga2V5IGJlZm9yZSBvdmVyd3JpdGluZzogXG5cdFx0 Iik7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YodXNlcmtleSk7IGkrKykKLSsgICAgICAg IHByaW50ZigiJTAyeCIsIHVzZXJrZXlbaV0pOwotKyAgICBwcmludGYoIlxuIik7Ci0rICAgIFJB TkRfYnl0ZXModXNlcmtleSwgc2l6ZW9mIHVzZXJrZXkpOwotKyAgICBwcmludGYoIlx0Y2hhciBi dWZmZXIga2V5IGFmdGVyIG92ZXJ3cml0aW5nOiBcblx0XHQiKTsKLSsgICAgZm9yIChpID0gMDsg aSA8IHNpemVvZih1c2Vya2V5KTsgaSsrKQotKyAgICAgICAgcHJpbnRmKCIlMDJ4IiwgdXNlcmtl eVtpXSk7Ci0rICAgIHByaW50ZigiXG4iKTsKLSsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3N0 YXRpYyBpbnQgRXJyb3I7Ci0rY29uc3QgY2hhciAqRmFpbChjb25zdCBjaGFyICptc2cpCi0rewot KyAgICBkb19wcmludF9lcnJvcnMoKTsKLSsgICAgRXJyb3IrKzsKLSsgICAgcmV0dXJuIG1zZzsK LSt9Ci0rCi0raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsKLSsgICAgaW50 IGRvX2NvcnJ1cHRfcnNhX2tleWdlbiA9IDAsIGRvX2NvcnJ1cHRfZHNhX2tleWdlbiA9IDA7Ci0r ICAgIGludCBiYWRfcnNhID0gMCwgYmFkX2RzYSA9IDA7Ci0rICAgIGludCBkb19ybmdfc3RpY2sg PSAwOwotKyAgICBpbnQgbm9fZXhpdCA9IDA7Ci0rCi0rICAgIHByaW50ZigiXHRGSVBTLW1vZGUg dGVzdCBhcHBsaWNhdGlvblxuXG4iKTsKLSsKLSsgICAgLyogTG9hZCBlbnRyb3B5IGZyb20gZXh0 ZXJuYWwgZmlsZSwgaWYgYW55ICovCi0rICAgIFJBTkRfbG9hZF9maWxlKCIucm5kIiwgMTAyNCk7 Ci0rCi0rICAgIGlmIChhcmd2WzFdKSB7Ci0rICAgICAgICAvKiBDb3JydXB0ZWQgS0FUIHRlc3Rz ICovCi0rICAgICAgICBpZiAoIXN0cmNtcChhcmd2WzFdLCAiYWVzIikpIHsKLSsgICAgICAgICAg ICBGSVBTX2NvcnJ1cHRfYWVzKCk7Ci0rICAgICAgICAgICAgcHJpbnRmKCJBRVMgZW5jcnlwdGlv bi9kZWNyeXB0aW9uIHdpdGggY29ycnVwdGVkIEtBVC4uLlxuIik7Ci0rICAgICAgICB9IGVsc2Ug aWYgKCFzdHJjbXAoYXJndlsxXSwgImRlcyIpKSB7Ci0rICAgICAgICAgICAgRklQU19jb3JydXB0 X2RlcygpOwotKyAgICAgICAgICAgIHByaW50ZigiREVTMy1FQ0IgZW5jcnlwdGlvbi9kZWNyeXB0 aW9uIHdpdGggY29ycnVwdGVkIEtBVC4uLlxuIik7Ci0rICAgICAgICB9IGVsc2UgaWYgKCFzdHJj bXAoYXJndlsxXSwgImRzYSIpKSB7Ci0rICAgICAgICAgICAgRklQU19jb3JydXB0X2RzYSgpOwot KyAgICAgICAgICAgIHByaW50ZgotKyAgICAgICAgICAgICAgICAoIkRTQSBrZXkgZ2VuZXJhdGlv biBhbmQgc2lnbmF0dXJlIHZhbGlkYXRpb24gd2l0aCBjb3JydXB0ZWQgS0FULi4uXG4iKTsKLSsg ICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAicnNhIikpIHsKLSsgICAgICAgICAg ICBGSVBTX2NvcnJ1cHRfcnNhKCk7Ci0rICAgICAgICAgICAgcHJpbnRmCi0rICAgICAgICAgICAg ICAgICgiUlNBIGtleSBnZW5lcmF0aW9uIGFuZCBzaWduYXR1cmUgdmFsaWRhdGlvbiB3aXRoIGNv cnJ1cHRlZCBLQVQuLi5cbiIpOwotKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0s ICJyc2FrZXkiKSkgewotKyAgICAgICAgICAgIHByaW50ZgotKyAgICAgICAgICAgICAgICAoIlJT QSBrZXkgZ2VuZXJhdGlvbiBhbmQgc2lnbmF0dXJlIHZhbGlkYXRpb24gd2l0aCBjb3JydXB0ZWQg a2V5Li4uXG4iKTsKLSsgICAgICAgICAgICBiYWRfcnNhID0gMTsKLSsgICAgICAgICAgICBub19l eGl0ID0gMTsKLSsgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAicnNha2V5Z2Vu IikpIHsKLSsgICAgICAgICAgICBkb19jb3JydXB0X3JzYV9rZXlnZW4gPSAxOwotKyAgICAgICAg ICAgIG5vX2V4aXQgPSAxOwotKyAgICAgICAgICAgIHByaW50ZgotKyAgICAgICAgICAgICAgICAo IlJTQSBrZXkgZ2VuZXJhdGlvbiBhbmQgc2lnbmF0dXJlIHZhbGlkYXRpb24gd2l0aCBjb3JydXB0 ZWQga2V5Z2VuLi4uXG4iKTsKLSsgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAi ZHNha2V5IikpIHsKLSsgICAgICAgICAgICBwcmludGYKLSsgICAgICAgICAgICAgICAgKCJEU0Eg a2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxpZGF0aW9uIHdpdGggY29ycnVwdGVkIGtl eS4uLlxuIik7Ci0rICAgICAgICAgICAgYmFkX2RzYSA9IDE7Ci0rICAgICAgICAgICAgbm9fZXhp dCA9IDE7Ci0rICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgImRzYWtleWdlbiIp KSB7Ci0rICAgICAgICAgICAgZG9fY29ycnVwdF9kc2Ffa2V5Z2VuID0gMTsKLSsgICAgICAgICAg ICBub19leGl0ID0gMTsKLSsgICAgICAgICAgICBwcmludGYKLSsgICAgICAgICAgICAgICAgKCJE U0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxpZGF0aW9uIHdpdGggY29ycnVwdGVk IGtleWdlbi4uLlxuIik7Ci0rICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgInNo YTEiKSkgewotKyAgICAgICAgICAgIEZJUFNfY29ycnVwdF9zaGExKCk7Ci0rICAgICAgICAgICAg cHJpbnRmKCJTSEEtMSBoYXNoIHdpdGggY29ycnVwdGVkIEtBVC4uLlxuIik7Ci0rICAgICAgICB9 IGVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgInJuZyIpKSB7Ci0rICAgICAgICAgICAgRklQU19j b3JydXB0X3JuZygpOwotKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJybmdz dGljayIpKSB7Ci0rICAgICAgICAgICAgZG9fcm5nX3N0aWNrID0gMTsKLSsgICAgICAgICAgICBu b19leGl0ID0gMTsKLSsgICAgICAgICAgICBwcmludGYoIlJORyB0ZXN0IHdpdGggc3R1Y2sgY29u dGludW91cyB0ZXN0Li4uXG4iKTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgcHJp bnRmKCJCYWQgYXJndW1lbnQgXCIlc1wiXG4iLCBhcmd2WzFdKTsKLSsgICAgICAgICAgICBleGl0 KDEpOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKCFub19leGl0KSB7Ci0rICAgICAgICAgICAg aWYgKCFGSVBTX21vZGVfc2V0KDEpKSB7Ci0rICAgICAgICAgICAgICAgIGRvX3ByaW50X2Vycm9y cygpOwotKyAgICAgICAgICAgICAgICBwcmludGYoIlBvd2VyLXVwIHNlbGYgdGVzdCBmYWlsZWRc biIpOwotKyAgICAgICAgICAgICAgICBleGl0KDEpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAg ICAgICBwcmludGYoIlBvd2VyLXVwIHNlbGYgdGVzdCBzdWNjZXNzZnVsXG4iKTsKLSsgICAgICAg ICAgICBleGl0KDApOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIC8qIE5vbi1BcHByb3Zl ZCBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbgotKyAgICAgKi8KLSsgICAgcHJpbnRmKCIxLiBOb24t QXBwcm92ZWQgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb24gdGVzdC4uLlxuIik7Ci0rICAgIHByaW50 ZigiXHRhLiBJbmNsdWRlZCBhbGdvcml0aG0gKEQtSCkuLi4iKTsKLSsgICAgcHJpbnRmKGRoX3Rl c3QoKT8gInN1Y2Nlc3NmdWxcbiIgOiBGYWlsKCJGQUlMRUQhXG4iKSk7Ci0rCi0rICAgIC8qIFBv d2VyLXVwIHNlbGYgdGVzdAotKyAgICAgKi8KLSsgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0rICAg IHByaW50ZigiMi4gQXV0b21hdGljIHBvd2VyLXVwIHNlbGYgdGVzdC4uLiIpOwotKyAgICBpZiAo IUZJUFNfbW9kZV9zZXQoMSkpIHsKLSsgICAgICAgIGRvX3ByaW50X2Vycm9ycygpOwotKyAgICAg ICAgcHJpbnRmKEZhaWwoIkZBSUxFRCFcbiIpKTsKLSsgICAgICAgIGV4aXQoMSk7Ci0rICAgIH0K LSsgICAgcHJpbnRmKCJzdWNjZXNzZnVsXG4iKTsKLSsgICAgaWYgKGRvX2NvcnJ1cHRfZHNhX2tl eWdlbikKLSsgICAgICAgIEZJUFNfY29ycnVwdF9kc2Ffa2V5Z2VuKCk7Ci0rICAgIGlmIChkb19j b3JydXB0X3JzYV9rZXlnZW4pCi0rICAgICAgICBGSVBTX2NvcnJ1cHRfcnNhX2tleWdlbigpOwot KyAgICBpZiAoZG9fcm5nX3N0aWNrKQotKyAgICAgICAgRklQU19ybmdfc3RpY2soKTsKLSsKLSsg ICAgLyogQUVTIGVuY3J5cHRpb24vZGVjcnlwdGlvbgotKyAgICAgKi8KLSsgICAgcHJpbnRmKCIz LiBBRVMgZW5jcnlwdGlvbi9kZWNyeXB0aW9uLi4uIik7Ci0rICAgIHByaW50ZihGSVBTX2Flc190 ZXN0KCk/ICJzdWNjZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOwotKwotKyAgICAvKiBS U0Ega2V5IGdlbmVyYXRpb24gYW5kIGVuY3J5cHRpb24vZGVjcnlwdGlvbgotKyAgICAgKi8KLSsg ICAgcHJpbnRmKCI0LiBSU0Ega2V5IGdlbmVyYXRpb24gYW5kIGVuY3J5cHRpb24vZGVjcnlwdGlv bi4uLiIpOwotKyAgICBwcmludGYoRklQU19yc2FfdGVzdChiYWRfcnNhKSA/ICJzdWNjZXNzZnVs XG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOwotKwotKyAgICAvKiBERVMtQ0JDIGVuY3J5cHRpb24v ZGVjcnlwdGlvbgotKyAgICAgKi8KLSsgICAgcHJpbnRmKCI1LiBERVMtRUNCIGVuY3J5cHRpb24v ZGVjcnlwdGlvbi4uLiIpOwotKyAgICBwcmludGYoRklQU19kZXMzX3Rlc3QoKT8gInN1Y2Nlc3Nm dWxcbiIgOiBGYWlsKCJGQUlMRUQhXG4iKSk7Ci0rCi0rICAgIC8qIERTQSBrZXkgZ2VuZXJhdGlv biBhbmQgc2lnbmF0dXJlIHZhbGlkYXRpb24KLSsgICAgICovCi0rICAgIHByaW50ZigiNi4gRFNB IGtleSBnZW5lcmF0aW9uIGFuZCBzaWduYXR1cmUgdmFsaWRhdGlvbi4uLiIpOwotKyAgICBwcmlu dGYoRklQU19kc2FfdGVzdChiYWRfZHNhKSA/ICJzdWNjZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVE IVxuIikpOwotKwotKyAgICAvKiBTSEEtMSBoYXNoCi0rICAgICAqLwotKyAgICBwcmludGYoIjdh LiBTSEEtMSBoYXNoLi4uIik7Ci0rICAgIHByaW50ZihGSVBTX3NoYTFfdGVzdCgpPyAic3VjY2Vz c2Z1bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsKLSsKLSsgICAgLyogU0hBLTI1NiBoYXNoCi0r ICAgICAqLwotKyAgICBwcmludGYoIjdiLiBTSEEtMjU2IGhhc2guLi4iKTsKLSsgICAgcHJpbnRm KEZJUFNfc2hhMjU2X3Rlc3QoKT8gInN1Y2Nlc3NmdWxcbiIgOiBGYWlsKCJGQUlMRUQhXG4iKSk7 Ci0rCi0rICAgIC8qIFNIQS01MTIgaGFzaAotKyAgICAgKi8KLSsgICAgcHJpbnRmKCI3Yy4gU0hB LTUxMiBoYXNoLi4uIik7Ci0rICAgIHByaW50ZihGSVBTX3NoYTUxMl90ZXN0KCk/ICJzdWNjZXNz ZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOwotKwotKyAgICAvKiBITUFDLVNIQS0xIGhhc2gK LSsgICAgICovCi0rICAgIHByaW50ZigiN2QuIEhNQUMtU0hBLTEgaGFzaC4uLiIpOwotKyAgICBw cmludGYoRklQU19obWFjX3NoYTFfdGVzdCgpPyAic3VjY2Vzc2Z1bFxuIiA6IEZhaWwoIkZBSUxF RCFcbiIpKTsKLSsKLSsgICAgLyogSE1BQy1TSEEtMjI0IGhhc2gKLSsgICAgICovCi0rICAgIHBy aW50ZigiN2UuIEhNQUMtU0hBLTIyNCBoYXNoLi4uIik7Ci0rICAgIHByaW50ZihGSVBTX2htYWNf c2hhMjI0X3Rlc3QoKT8gInN1Y2Nlc3NmdWxcbiIgOiBGYWlsKCJGQUlMRUQhXG4iKSk7Ci0rCi0r ICAgIC8qIEhNQUMtU0hBLTI1NiBoYXNoCi0rICAgICAqLwotKyAgICBwcmludGYoIjdmLiBITUFD LVNIQS0yNTYgaGFzaC4uLiIpOwotKyAgICBwcmludGYoRklQU19obWFjX3NoYTI1Nl90ZXN0KCk/ ICJzdWNjZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOwotKwotKyAgICAvKiBITUFDLVNI QS0zODQgaGFzaAotKyAgICAgKi8KLSsgICAgcHJpbnRmKCI3Zy4gSE1BQy1TSEEtMzg0IGhhc2gu Li4iKTsKLSsgICAgcHJpbnRmKEZJUFNfaG1hY19zaGEzODRfdGVzdCgpPyAic3VjY2Vzc2Z1bFxu IiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsKLSsKLSsgICAgLyogSE1BQy1TSEEtNTEyIGhhc2gKLSsg ICAgICovCi0rICAgIHByaW50ZigiN2guIEhNQUMtU0hBLTUxMiBoYXNoLi4uIik7Ci0rICAgIHBy aW50ZihGSVBTX2htYWNfc2hhNTEyX3Rlc3QoKT8gInN1Y2Nlc3NmdWxcbiIgOiBGYWlsKCJGQUlM RUQhXG4iKSk7Ci0rCi0rICAgIC8qIE5vbi1BcHByb3ZlZCBjcnlwdG9ncmFwaGljIG9wZXJhdGlv bgotKyAgICAgKi8KLSsgICAgcHJpbnRmKCI4LiBOb24tQXBwcm92ZWQgY3J5cHRvZ3JhcGhpYyBv cGVyYXRpb24gdGVzdC4uLlxuIik7Ci0rICAgIHByaW50ZigiXHRhLiBJbmNsdWRlZCBhbGdvcml0 aG0gKEQtSCkuLi4iKTsKLSsgICAgcHJpbnRmKGRoX3Rlc3QoKT8gInN1Y2Nlc3NmdWwgYXMgZXhw ZWN0ZWRcbiIKLSsgICAgICAgICAgIDogRmFpbCgiZmFpbGVkIElOQ09SUkVDVExZIVxuIikpOwot KwotKyAgICAvKiBaZXJvaXphdGlvbgotKyAgICAgKi8KLSsgICAgcHJpbnRmKCI5LiBaZXJvLWl6 YXRpb24uLi5cbiIpOwotKyAgICBwcmludGYoWmVyb2l6ZSgpPyAiXHRzdWNjZXNzZnVsIGFzIGV4 cGVjdGVkXG4iCi0rICAgICAgICAgICA6IEZhaWwoIlx0ZmFpbGVkIElOQ09SUkVDVExZIVxuIikp OwotKwotKyAgICBwcmludGYoIlxuQWxsIHRlc3RzIGNvbXBsZXRlZCB3aXRoICVkIGVycm9yc1xu IiwgRXJyb3IpOwotKyAgICByZXR1cm4gRXJyb3IgPyAxIDogMDsKLSt9Ci0rCi0rI2VuZGlmCi1k aWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vZmlwcy9NYWtlZmlsZS5maXBzIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9maXBzL01ha2VmaWxlCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL2Zp cHMvTWFrZWZpbGUuZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMDI0NTg0NCArMDIwMAotKysr IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9maXBzL01ha2VmaWxlCTIwMTUtMDQtMjIgMTY6MDg6NDAu MzAwMjQ1ODQ0ICswMjAwCi1AQCAtMCwwICsxLDM0MSBAQAotKyMKLSsjIE9wZW5TU0wvY3J5cHRv L2ZpcHMvTWFrZWZpbGUKLSsjCi0rCi0rRElSPQlmaXBzCi0rVE9QPQkuLi8uLgotK0NDPQljYwot K0lOQ0xVREVTPQotK0NGTEFHPS1nCi0rTUFLRUZJTEU9CU1ha2VmaWxlCi0rQVI9CQlhciByCi0r Ci0rQ0ZMQUdTPSAkKElOQ0xVREVTKSAkKENGTEFHKQotKwotK0dFTkVSQUw9TWFrZWZpbGUKLStU RVNUPWZpcHNfdGVzdF9zdWl0ZS5jIGZpcHNfcmFuZHRlc3QuYwotK0FQUFM9Ci0rCi0rUFJPR1JB TT0gZmlwc19zdGFuZGFsb25lX2htYWMKLStFWEU9ICQoUFJPR1JBTSkkKEVYRV9FWFQpCi0rCi0r TElCPSQoVE9QKS9saWJjcnlwdG8uYQotK0xJQlNSQz1maXBzX2Flc19zZWxmdGVzdC5jIGZpcHNf ZGVzX3NlbGZ0ZXN0LmMgZmlwc19obWFjX3NlbGZ0ZXN0LmMgZmlwc19yYW5kX3NlbGZ0ZXN0LmMg XAotKyAgICBmaXBzX3JzYV9zZWxmdGVzdC5jIGZpcHNfc2hhX3NlbGZ0ZXN0LmMgZmlwcy5jIGZp cHNfZHNhX3NlbGZ0ZXN0LmMgIGZpcHNfcmFuZC5jIFwKLSsgICAgZmlwc19yc2FfeDkzMWcuYyBm aXBzX3Bvc3QuYyBmaXBzX2RyYmdfY3RyLmMgZmlwc19kcmJnX2hhc2guYyBmaXBzX2RyYmdfaG1h Yy5jIFwKLSsgICAgZmlwc19kcmJnX2xpYi5jIGZpcHNfZHJiZ19yYW5kLmMgZmlwc19kcmJnX3Nl bGZ0ZXN0LmMgZmlwc19yYW5kX2xpYi5jIFwKLSsgICAgZmlwc19jbWFjX3NlbGZ0ZXN0LmMgZmlw c19lbmMuYyBmaXBzX21kLmMKLSsKLStMSUJPQko9Zmlwc19hZXNfc2VsZnRlc3QubyBmaXBzX2Rl c19zZWxmdGVzdC5vIGZpcHNfaG1hY19zZWxmdGVzdC5vIGZpcHNfcmFuZF9zZWxmdGVzdC5vIFwK LSsgICAgZmlwc19yc2Ffc2VsZnRlc3QubyBmaXBzX3NoYV9zZWxmdGVzdC5vIGZpcHMubyBmaXBz X2RzYV9zZWxmdGVzdC5vICBmaXBzX3JhbmQubyBcCi0rICAgIGZpcHNfcnNhX3g5MzFnLm8gZmlw c19wb3N0Lm8gZmlwc19kcmJnX2N0ci5vIGZpcHNfZHJiZ19oYXNoLm8gZmlwc19kcmJnX2htYWMu byBcCi0rICAgIGZpcHNfZHJiZ19saWIubyBmaXBzX2RyYmdfcmFuZC5vIGZpcHNfZHJiZ19zZWxm dGVzdC5vIGZpcHNfcmFuZF9saWIubyBcCi0rICAgIGZpcHNfY21hY19zZWxmdGVzdC5vIGZpcHNf ZW5jLm8gZmlwc19tZC5vCi0rCi0rTElCQ1JZUFRPPS1MLi4gLWxjcnlwdG8KLSsKLStTUkM9ICQo TElCU1JDKSBmaXBzX3N0YW5kYWxvbmVfaG1hYy5jCi0rCi0rRVhIRUFERVI9IGZpcHMuaCBmaXBz X3JhbmQuaAotK0hFQURFUj0JJChFWEhFQURFUikKLSsKLStBTEw9ICAgICQoR0VORVJBTCkgJChT UkMpICQoSEVBREVSKQotKwotK3RvcDoKLSsJKGNkIC4uLy4uOyAkKE1BS0UpIERJUlM9Y3J5cHRv IFNESVJTPSQoRElSKSBzdWJfYWxsKQotKwotK2FsbDoJbGliIGV4ZQotKwotK2xpYjoJJChMSUJP QkopCi0rCSQoQVIpICQoTElCKSAkKExJQk9CSikKLSsJJChSQU5MSUIpICQoTElCKSB8fCBlY2hv IE5ldmVyIG1pbmQuCi0rCUB0b3VjaCBsaWIKLSsKLStleGU6CSQoRVhFKQotKwotK2ZpbGVzOgot KwkkKFBFUkwpICQoVE9QKS91dGlsL2ZpbGVzLnBsIE1ha2VmaWxlID4+ICQoVE9QKS9NSU5GTwot KwotK2xpbmtzOgotKwlAJChQRVJMKSAkKFRPUCkvdXRpbC9ta2xpbmsucGwgLi4vLi4vaW5jbHVk ZS9vcGVuc3NsICQoRVhIRUFERVIpCi0rCUAkKFBFUkwpICQoVE9QKS91dGlsL21rbGluay5wbCAu Li8uLi90ZXN0ICQoVEVTVCkKLSsJQCQoUEVSTCkgJChUT1ApL3V0aWwvbWtsaW5rLnBsIC4uLy4u L2FwcHMgJChBUFBTKQotKwotK2luc3RhbGw6Ci0rCUBbIC1uICIkKElOU1RBTExUT1ApIiBdICMg c2hvdWxkIGJlIHNldCBieSB0b3AgTWFrZWZpbGUuLi4KLSsJQGhlYWRlcmxpc3Q9IiQoRVhIRUFE RVIpIjsgZm9yIGkgaW4gJCRoZWFkZXJsaXN0IDsgXAotKwlkbyAgXAotKwkoY3AgJCRpICQoSU5T VEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS9pbmNsdWRlL29wZW5zc2wvJCRpOyBcCi0rCWNobW9k IDY0NCAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaSAp OyBcCi0rCWRvbmU7Ci0rCi0rdGFnczoKLSsJY3RhZ3MgJChTUkMpCi0rCi0rdGVzdHM6Ci0rCi0r bGludDoKLSsJbGludCAtRExJTlQgJChJTkNMVURFUykgJChTUkMpPmZsdWZmCi0rCi0rZGVwZW5k OgotKwlAWyAtbiAiJChNQUtFREVQRU5EKSIgXSAjIHNob3VsZCBiZSBzZXQgYnkgdXBwZXIgTWFr ZWZpbGUuLi4KLSsJJChNQUtFREVQRU5EKSAtLSAkKENGTEFHKSAkKElOQ0xVREVTKSAkKERFUEZM QUcpIC0tICQoUFJPR1MpICQoTElCU1JDKQotKwotK2RjbGVhbjoKLSsJJChQRVJMKSAtcGUgJ2lm ICgvXiMgRE8gTk9UIERFTEVURSBUSElTIExJTkUvKSB7cHJpbnQ7IGV4aXQoMCk7fScgJChNQUtF RklMRSkgPk1ha2VmaWxlLm5ldwotKwltdiAtZiBNYWtlZmlsZS5uZXcgJChNQUtFRklMRSkKLSsK LStjbGVhbjoKLSsJcm0gLWYgKi5vICoub2JqIGxpYiB0YWdzIGNvcmUgLnB1cmUgLm5mcyogKi5v bGQgKi5iYWsgZmx1ZmYKLSsKLSskKEVYRSk6ICQoUFJPR1JBTSkubwotKwlGSVBTX1NIQV9BU009 IiI7IGZvciBpIGluICQoU0hBMV9BU01fT0JKKSBzaGEyNTYubzsgZG8gRklQU19TSEFfQVNNPSIk JEZJUFNfU0hBX0FTTSAuLi9zaGEvJCRpIiA7IGRvbmU7IFwKLSsJZm9yIGkgaW4gJChDUFVJRF9P QkopOyBkbyBGSVBTX1NIQV9BU009IiQkRklQU19TSEFfQVNNIC4uLyQkaSIgOyBkb25lOyBcCi0r CSQoQ0MpIC1vICRAICQoQ0ZMQUdTKSAkKFBST0dSQU0pLm8gJCRGSVBTX1NIQV9BU00KLSsKLSsj IERPIE5PVCBERUxFVEUgVEhJUyBMSU5FIC0tIG1ha2UgZGVwZW5kIGRlcGVuZHMgb24gaXQuCi0r Ci0rZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYWVzLmggLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2FzbjEuaAotK2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vf b3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCi0rZmlwcy5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAotK2ZpcHMubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2ZpcHNfcmFuZC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFj LmgKLStmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oIC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3Rz LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStmaXBzLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5o Ci0rZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oIC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9yc2EuaAotK2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCi0rZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvc3ltaGFja3MuaCBmaXBzLmMgZmlwc19sb2NsLmgKLStmaXBzX2Flc19zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAot K2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2Zp cHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9lcnIuaAotK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCi0rZmlwc19hZXNfc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX2Flc19zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oCi0rZmlwc19hZXNfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAotK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlwc19hZXNfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKLStmaXBzX2Flc19zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAotK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAotK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCi0rZmlwc19hZXNfc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19hZXNfc2VsZnRlc3QuYwotK2ZpcHNf ZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2Jpby5oCi0rZmlwc19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2NyeXB0by5oCi0rZmlwc19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCi0rZmlwc19kZXNfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBz LmgKLStmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAot K2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStm aXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlw c19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKLStm aXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2Zp cHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCi0rZmlw c19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlw c19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBzX2Rl c19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2Rlc19z ZWxmdGVzdC5jCi0rZmlwc19kcmJnX2N0ci5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYWVzLmgg Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaAotK2ZpcHNfZHJiZ19jdHIubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2Jpby5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHNf ZHJiZ19jdHIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2V2cC5oCi0rZmlwc19kcmJnX2N0ci5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlw cy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAotK2ZpcHNfZHJiZ19jdHIubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2htYWMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21h Yy5oCi0rZmlwc19kcmJnX2N0ci5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0r Zmlwc19kcmJnX2N0ci5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAotK2Zp cHNfZHJiZ19jdHIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKLStmaXBzX2Ry YmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oIC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9yYW5kLmgKLStmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9z YWZlc3RhY2suaAotK2ZpcHNfZHJiZ19jdHIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNr LmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmgKLStmaXBzX2RyYmdfY3RyLm86IGZp cHNfZHJiZ19jdHIuYyBmaXBzX3JhbmRfbGNsLmgKLStmaXBzX2RyYmdfaGFzaC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvYWVzLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaAotK2ZpcHNf ZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaCAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvY3J5cHRvLmgKLStmaXBzX2RyYmdfaGFzaC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv ZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmgKLStmaXBzX2RyYmdfaGFzaC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCi0rZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2ZpcHNfcmFuZC5oCi0rZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2htYWMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oCi0rZmlwc19k cmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAotK2ZpcHNfZHJiZ19o YXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlwc19kcmJnX2hh c2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKLStmaXBzX2RyYmdfaGFzaC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wv cmFuZC5oCi0rZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFj ay5oCi0rZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStm aXBzX2RyYmdfaGFzaC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2Ry YmdfaGFzaC5jCi0rZmlwc19kcmJnX2hhc2gubzogZmlwc19yYW5kX2xjbC5oCi0rZmlwc19kcmJn X2htYWMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9hc24xLmgKLStmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgg Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCi0rZmlwc19kcmJnX2htYWMubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oCi0rZmlw c19kcmJnX2htYWMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAotK2ZpcHNfZHJiZ19o bWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAotK2ZpcHNfZHJiZ19obWFj Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29i al9tYWMuaAotK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3Rz LmgKLStmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYu aAotK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0r Zmlwc19kcmJnX2htYWMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmggLi4vLi4v aW5jbHVkZS9vcGVuc3NsL3JhbmQuaAotK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9zYWZlc3RhY2suaAotK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zdGFjay5oCi0rZmlwc19kcmJnX2htYWMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5 bWhhY2tzLmggZmlwc19kcmJnX2htYWMuYwotK2ZpcHNfZHJiZ19obWFjLm86IGZpcHNfcmFuZF9s Y2wuaAotK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9hc24xLmgKLStmaXBzX2RyYmdfbGliLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9iaW8uaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKLStmaXBzX2RyYmdf bGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9lcnIuaAotK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKLStmaXBzX2RyYmdfbGliLm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9maXBzX3JhbmQuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oCi0rZmlw c19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaCAuLi8uLi9pbmNsdWRl L29wZW5zc2wvb2JqX21hYy5oCi0rZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvb2JqZWN0cy5oCi0rZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3Bl bnNzbGNvbmYuaAotK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5z c2x2LmgKLStmaXBzX2RyYmdfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5o IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yYW5kLmgKLStmaXBzX2RyYmdfbGliLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAotK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL3N0YWNrLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmgKLStmaXBz X2RyYmdfbGliLm86IGZpcHNfZHJiZ19saWIuYyBmaXBzX2xvY2wuaCBmaXBzX3JhbmRfbGNsLmgK LStmaXBzX2RyYmdfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYWVzLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2FzbjEuaAotK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9iaW8uaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKLStmaXBzX2RyYmdfcmFu ZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wv ZXJyLmgKLStmaXBzX2RyYmdfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAotK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAotK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9obWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX2RyYmdf cmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oCi0rZmlwc19kcmJnX3JhbmQu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAotK2ZpcHNfZHJiZ19yYW5kLm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlwc19kcmJnX3JhbmQubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2x2LmgKLStmaXBzX2RyYmdfcmFuZC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oCi0r Zmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlw c19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBzX2RyYmdf cmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2RyYmdfcmFuZC5j Ci0rZmlwc19kcmJnX3JhbmQubzogZmlwc19yYW5kX2xjbC5oCi0rZmlwc19kcmJnX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNu MS5oCi0rZmlwc19kcmJnX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAot K2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKLStm aXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2Vyci5oCi0rZmlwc19kcmJnX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCi0rZmlwc19kcmJn X3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAotK2ZpcHNfZHJi Z19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oCi0rZmlwc19kcmJnX3Nl bGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCi0rZmlwc19kcmJnX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKLStmaXBzX2RyYmdfc2VsZnRl c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAotK2ZpcHNfZHJiZ19zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAotK2ZpcHNfZHJiZ19zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAotK2ZpcHNfZHJiZ19zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAotK2ZpcHNfZHJiZ19zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oCi0rZmlwc19kcmJnX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAotK2ZpcHNfZHJiZ19zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNfZHJiZ19zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2RyYmdfc2VsZnRlc3QuYwot K2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiBmaXBzX2RyYmdfc2VsZnRlc3QuaCBmaXBzX2xvY2wuaCBm aXBzX3JhbmRfbGNsLmgKLStmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ibi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlw dG8uaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9kc2EuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9lcnIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmgKLStmaXBz X2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9saGFzaC5oCi0rZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29ial9tYWMuaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9vYmplY3RzLmgKLStmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvb3BlbnNzbGNvbmYuaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9vcGVuc3Nsdi5oCi0rZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29zc2xfdHlwLmgKLStmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvc2FmZXN0YWNrLmgKLStmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvc3RhY2suaAotK2ZpcHNfZHNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9z eW1oYWNrcy5oIGZpcHNfZHNhX3NlbGZ0ZXN0LmMKLStmaXBzX2RzYV9zZWxmdGVzdC5vOiBmaXBz X2xvY2wuaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNu MS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKLStmaXBzX2htYWNfc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCi0r Zmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZmlwcy5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9obWFjLmgKLStmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2xoYXNoLmgKLStmaXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29ial9tYWMuaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvb2JqZWN0cy5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9vcGVuc3NsY29uZi5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9vcGVuc3Nsdi5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9vc3NsX3R5cC5oCi0rZmlwc19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zYWZlc3RhY2suaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvc3RhY2suaAotK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvc3ltaGFja3MuaCBmaXBzX2htYWNfc2VsZnRlc3QuYwotK2ZpcHNfcG9zdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvYWVzLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaAotK2ZpcHNf cG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2NyeXB0by5oCi0rZmlwc19wb3N0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9kc2EuaCAuLi8u Li9pbmNsdWRlL29wZW5zc2wvZV9vczIuaAotK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvZXJyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oCi0rZmlwc19wb3N0Lm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHNfcmFu ZC5oCi0rZmlwc19wb3N0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFjLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L29ial9tYWMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19wb3N0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlwc19wb3N0Lm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5 cC5oCi0rZmlwc19wb3N0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yYW5kLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL3JzYS5oCi0rZmlwc19wb3N0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9z YWZlc3RhY2suaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNfcG9zdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2xvY2wuaCBmaXBzX3Bvc3QuYwot K2ZpcHNfcmFuZC5vOiAuLi8uLi9lX29zLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oCi0r Zmlwc19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2Jpby5oCi0rZmlwc19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8u aCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaAotK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvZXJyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oCi0rZmlwc19yYW5k Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Zp cHNfcmFuZC5oCi0rZmlwc19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFjLmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX3JhbmQubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29ial9tYWMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19y YW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlwc19yYW5kLm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9v c3NsX3R5cC5oCi0rZmlwc19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yYW5kLmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlwc19yYW5kLm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9zdGFjay5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oCi0rZmlw c19yYW5kLm86IGZpcHNfbG9jbC5oIGZpcHNfcmFuZC5jCi0rZmlwc19yYW5kX2xpYi5vOiAuLi8u Li9lX29zLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oCi0rZmlwc19yYW5kX2xpYi5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAot K2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9lX29zMi5oCi0rZmlwc19yYW5kX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvZXJyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oCi0rZmlwc19yYW5kX2xpYi5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBz X3JhbmQuaAotK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2htYWMuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAotK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29ial9tYWMuaAotK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29iamVjdHMuaAotK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L29wZW5zc2xjb25mLmgKLStmaXBzX3JhbmRfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9v cGVuc3Nsdi5oCi0rZmlwc19yYW5kX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90 eXAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oCi0rZmlwc19yYW5kX2xpYi5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStmaXBzX3JhbmRfbGliLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9zdGFjay5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oCi0r Zmlwc19yYW5kX2xpYi5vOiBmaXBzX3JhbmRfbGliLmMKLStmaXBzX3JhbmRfc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmgK LStmaXBzX3JhbmRfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCi0rZmlw c19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2ZpcHNf cmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvZXJyLmgKLStmaXBzX3JhbmRfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKLStmaXBzX3JhbmRfc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHNfcmFuZC5oCi0rZmlwc19yYW5kX3Nl bGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFjLmgKLStmaXBzX3JhbmRfc2VsZnRl c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX3JhbmRfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAotK2ZpcHNfcmFuZF9zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCi0rZmlwc19yYW5kX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0rZmlwc19yYW5kX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0rZmlwc19yYW5kX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCi0rZmlwc19yYW5kX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yYW5kLmgKLStmaXBzX3JhbmRfc2VsZnRlc3Qubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0rZmlwc19yYW5kX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCi0rZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfbG9jbC5oCi0rZmlwc19yYW5kX3Nl bGZ0ZXN0Lm86IGZpcHNfcmFuZF9zZWxmdGVzdC5jCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKLStm aXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYm4uaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvY3J5cHRvLmgKLStmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKLStmaXBzX3JzYV9z ZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2ZpcHMuaAotK2ZpcHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9s aGFzaC5oCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9t YWMuaAotK2ZpcHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3Rz LmgKLStmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNv bmYuaAotK2ZpcHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Ns di5oCi0rZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlw LmgKLStmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcnNhLmgKLStm aXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKLStm aXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAotK2ZpcHNf cnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfcnNh X3NlbGZ0ZXN0LmMKLStmaXBzX3JzYV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNu MS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAotK2ZpcHNfcnNhX3g5MzFnLm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9ibi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAotK2Zp cHNfcnNhX3g5MzFnLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9lcnIuaAotK2ZpcHNfcnNhX3g5MzFnLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9maXBzLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKLStmaXBzX3JzYV94OTMxZy5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAotK2ZpcHNfcnNhX3g5MzFnLm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCi0rZmlwc19yc2FfeDkzMWcubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JzYS5o Ci0rZmlwc19yc2FfeDkzMWcubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCi0r Zmlwc19yc2FfeDkzMWcubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBzX3Jz YV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX3JzYV94OTMx Zy5jCi0rZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKLStmaXBzX3No YV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2ZpcHMuaAotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9saGFzaC5oCi0rZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29i al9tYWMuaAotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpl Y3RzLmgKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNz bGNvbmYuaAotK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVu c3Nsdi5oCi0rZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xf dHlwLmgKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0 YWNrLmgKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2hhLmgg Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKLStmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX3NoYV9zZWxmdGVzdC5jCi1kaWZmIC11 cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vaG1hYy9obWFjLmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vaG1hYy9obWFjLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vaG1hYy9obWFjLmMu ZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9obWFjL2htYWMuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMTI0NTg2NyArMDIw MAotQEAgLTg5LDEyICs4OSw2IEBAIGludCBITUFDX0luaXRfZXgoSE1BQ19DVFggKmN0eCwgY29u c3Qgdm8KLSAgICAgICAgICAgICBFVlBlcnIoRVZQX0ZfSE1BQ19JTklUX0VYLCBFVlBfUl9ESVNB QkxFRF9GT1JfRklQUyk7Ci0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9Ci0tICAg ICAgICAvKgotLSAgICAgICAgICogT3RoZXIgYWxnb3JpdGhtIGJsb2NraW5nIHdpbGwgYmUgZG9u ZSBpbiBGSVBTX2NtYWNfaW5pdCwgdmlhCi0tICAgICAgICAgKiBGSVBTX2htYWNfaW5pdF9leCgp LgotLSAgICAgICAgICovCi0tICAgICAgICBpZiAoIWltcGwgJiYgIWN0eC0+aV9jdHguZW5naW5l KQotLSAgICAgICAgICAgIHJldHVybiBGSVBTX2htYWNfaW5pdF9leChjdHgsIGtleSwgbGVuLCBt ZCwgTlVMTCk7Ci0gICAgIH0KLSAjZW5kaWYKLSAKLUBAIC0xMDUsNiArOTksMTMgQEAgaW50IEhN QUNfSW5pdF9leChITUFDX0NUWCAqY3R4LCBjb25zdCB2bwotICAgICAgICAgbWQgPSBjdHgtPm1k OwotIAotICAgICBpZiAoa2V5ICE9IE5VTEwpIHsKLSsjaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAg ICAgICBpZiAoRklQU19tb2RlKCkgJiYgIShtZC0+ZmxhZ3MgJiBFVlBfTURfRkxBR19GSVBTKQot KyAgICAgICAgICAgICYmICghKGN0eC0+bWRfY3R4LmZsYWdzICYgRVZQX01EX0NUWF9GTEFHX05P Tl9GSVBTX0FMTE9XKQotKyAgICAgICAgICAgICAgICB8fCAhKGN0eC0+aV9jdHguZmxhZ3MgJiBF VlBfTURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCi0rICAgICAgICAgICAgICAgIHx8ICEoY3R4 LT5vX2N0eC5mbGFncyAmIEVWUF9NRF9DVFhfRkxBR19OT05fRklQU19BTExPVykpKQotKyAgICAg ICAgICAgIGdvdG8gZXJyOwotKyNlbmRpZgotICAgICAgICAgcmVzZXQgPSAxOwotICAgICAgICAg aiA9IEVWUF9NRF9ibG9ja19zaXplKG1kKTsKLSAgICAgICAgIE9QRU5TU0xfYXNzZXJ0KGogPD0g KGludClzaXplb2YoY3R4LT5rZXkpKTsKLUBAIC0xNTcsMTAgKzE1OCw2IEBAIGludCBITUFDX0lu aXQoSE1BQ19DVFggKmN0eCwgY29uc3Qgdm9pZAotIAotIGludCBITUFDX1VwZGF0ZShITUFDX0NU WCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgbGVuKQotIHsKLS0jaWZk ZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBTX21vZGUoKSAmJiAhY3R4LT5pX2N0eC5lbmdp bmUpCi0tICAgICAgICByZXR1cm4gRklQU19obWFjX3VwZGF0ZShjdHgsIGRhdGEsIGxlbik7Ci0t I2VuZGlmCi0gICAgIHJldHVybiBFVlBfRGlnZXN0VXBkYXRlKCZjdHgtPm1kX2N0eCwgZGF0YSwg bGVuKTsKLSB9Ci0gCi1AQCAtMTY4LDEwICsxNjUsNiBAQCBpbnQgSE1BQ19GaW5hbChITUFDX0NU WCAqY3R4LCB1bnNpZ25lZCBjCi0gewotICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICAgdW5zaWdu ZWQgY2hhciBidWZbRVZQX01BWF9NRF9TSVpFXTsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAg IGlmIChGSVBTX21vZGUoKSAmJiAhY3R4LT5pX2N0eC5lbmdpbmUpCi0tICAgICAgICByZXR1cm4g RklQU19obWFjX2ZpbmFsKGN0eCwgbWQsIGxlbik7Ci0tI2VuZGlmCi0gCi0gICAgIGlmICghRVZQ X0RpZ2VzdEZpbmFsX2V4KCZjdHgtPm1kX2N0eCwgYnVmLCAmaSkpCi0gICAgICAgICBnb3RvIGVy cjsKLUBAIC0yMTEsMTIgKzIwNCw2IEBAIGludCBITUFDX0NUWF9jb3B5KEhNQUNfQ1RYICpkY3R4 LCBITUFDX0MKLSAKLSB2b2lkIEhNQUNfQ1RYX2NsZWFudXAoSE1BQ19DVFggKmN0eCkKLSB7Ci0t I2lmZGVmIE9QRU5TU0xfRklQUwotLSAgICBpZiAoRklQU19tb2RlKCkgJiYgIWN0eC0+aV9jdHgu ZW5naW5lKSB7Ci0tICAgICAgICBGSVBTX2htYWNfY3R4X2NsZWFudXAoY3R4KTsKLS0gICAgICAg IHJldHVybjsKLS0gICAgfQotLSNlbmRpZgotICAgICBFVlBfTURfQ1RYX2NsZWFudXAoJmN0eC0+ aV9jdHgpOwotICAgICBFVlBfTURfQ1RYX2NsZWFudXAoJmN0eC0+b19jdHgpOwotICAgICBFVlBf TURfQ1RYX2NsZWFudXAoJmN0eC0+bWRfY3R4KTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9tZGMyL21kYzJkZ3N0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vbWRjMi9tZGMy ZGdzdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL21kYzIvbWRjMmRnc3QuYy5maXBzCTIw MTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5 cHRvL21kYzIvbWRjMmRnc3QuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMTI0NTg2NyArMDIwMAot QEAgLTc2LDcgKzc2LDcgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqKChjKSsrKT0odW5z aWduZWQgY2hhcikoKChsKT4+MjRMKSYweGZmKSkKLSAKLSBzdGF0aWMgdm9pZCBtZGMyX2JvZHko TURDMl9DVFggKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgbGVuKTsKLS1maXBz X21kX2luaXQoTURDMikKLStub25maXBzX21kX2luaXQoTURDMikKLSB7Ci0gICAgIGMtPm51bSA9 IDA7Ci0gICAgIGMtPnBhZF90eXBlID0gMTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9tZDIvbWQyX2Rnc3QuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9tZDIvbWQyX2Rnc3Qu YwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9tZDIvbWQyX2Rnc3QuYy5maXBzCTIwMTUtMDMt MTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL21k Mi9tZDJfZGdzdC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMzAxMjQ1ODY3ICswMjAwCi1AQCAtNjIs NiArNjIsMTEgQEAKLSAjaW5jbHVkZSA8b3BlbnNzbC9tZDIuaD4KLSAjaW5jbHVkZSA8b3BlbnNz bC9vcGVuc3Nsdi5oPgotICNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgotKyNpZmRlZiBPUEVO U1NMX0ZJUFMKLSsjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNlbmRpZgotKwotKyNpbmNs dWRlIDxvcGVuc3NsL2Vyci5oPgotIAotIGNvbnN0IGNoYXIgTUQyX3ZlcnNpb25bXSA9ICJNRDIi IE9QRU5TU0xfVkVSU0lPTl9QVEVYVDsKLSAKLUBAIC0xMTksNyArMTI0LDcgQEAgY29uc3QgY2hh ciAqTUQyX29wdGlvbnModm9pZCkKLSAgICAgICAgIHJldHVybiAoIm1kMihpbnQpIik7Ci0gfQot IAotLWZpcHNfbWRfaW5pdChNRDIpCi0rbm9uZmlwc19tZF9pbml0KE1EMikKLSB7Ci0gICAgIGMt Pm51bSA9IDA7Ci0gICAgIG1lbXNldChjLT5zdGF0ZSwgMCwgc2l6ZW9mIGMtPnN0YXRlKTsKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9tZDQvbWQ0X2Rnc3QuYy5maXBzIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9tZDQvbWQ0X2Rnc3QuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9t ZDQvbWQ0X2Rnc3QuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL21kNC9tZDRfZGdzdC5jCTIwMTUtMDQtMjIgMTY6MDg6 NDAuMzAxMjQ1ODY3ICswMjAwCi1AQCAtNzIsNyArNzIsNyBAQCBjb25zdCBjaGFyIE1ENF92ZXJz aW9uW10gPSAiTUQ0IiBPUEVOU1NMCi0gI2RlZmluZSBJTklUX0RBVEFfQyAodW5zaWduZWQgbG9u ZykweDk4YmFkY2ZlTAotICNkZWZpbmUgSU5JVF9EQVRBX0QgKHVuc2lnbmVkIGxvbmcpMHgxMDMy NTQ3NkwKLSAKLS1maXBzX21kX2luaXQoTUQ0KQotK25vbmZpcHNfbWRfaW5pdChNRDQpCi0gewot ICAgICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7Ci0gICAgIGMtPkEgPSBJTklUX0RBVEFfQTsK LWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9tZDUvbWQ1X2Rnc3QuYy5maXBzIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9tZDUvbWQ1X2Rnc3QuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9tZDUvbWQ1X2Rnc3QuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAw Ci0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL21kNS9tZDVfZGdzdC5jCTIwMTUtMDQtMjIgMTY6 MDg6NDAuMzAxMjQ1ODY3ICswMjAwCi1AQCAtNzIsNyArNzIsNyBAQCBjb25zdCBjaGFyIE1ENV92 ZXJzaW9uW10gPSAiTUQ1IiBPUEVOU1NMCi0gI2RlZmluZSBJTklUX0RBVEFfQyAodW5zaWduZWQg bG9uZykweDk4YmFkY2ZlTAotICNkZWZpbmUgSU5JVF9EQVRBX0QgKHVuc2lnbmVkIGxvbmcpMHgx MDMyNTQ3NkwKLSAKLS1maXBzX21kX2luaXQoTUQ1KQotK25vbmZpcHNfbWRfaW5pdChNRDUpCi0g ewotICAgICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7Ci0gICAgIGMtPkEgPSBJTklUX0RBVEFf QTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9vX2ZpcHMuYy5maXBzIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9vX2ZpcHMuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9vX2ZpcHMu Yy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0x LjAuMmEvY3J5cHRvL29fZmlwcy5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMzAxMjQ1ODY3ICswMjAw Ci1AQCAtODAsNiArODAsOCBAQCBpbnQgRklQU19tb2RlX3NldChpbnQgcikKLSAjIGlmbmRlZiBG SVBTX0FVVEhfVVNFUl9QQVNTCi0gIyAgZGVmaW5lIEZJUFNfQVVUSF9VU0VSX1BBU1MgICAgICJE ZWZhdWx0IEZJUFMgQ3J5cHRvIFVzZXIgUGFzc3dvcmQiCi0gIyBlbmRpZgotKyAgICBpZiAociAm JiBGSVBTX21vZHVsZV9tb2RlKCkpIC8qIGNhbiBiZSBpbXBsaWNpdGx5IGluaXRpYWxpemVkIGJ5 IE9QRU5TU0xfaW5pdCgpICovCi0rICAgICAgICByZXR1cm4gMTsKLSAgICAgaWYgKCFGSVBTX21v ZHVsZV9tb2RlX3NldChyLCBGSVBTX0FVVEhfVVNFUl9QQVNTKSkKLSAgICAgICAgIHJldHVybiAw OwotICAgICBpZiAocikKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9vX2luaXQuYy5m aXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9vX2luaXQuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2Ny eXB0by9vX2luaXQuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6MDAuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL29faW5pdC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMzAx MjQ1ODY3ICswMjAwCi1AQCAtNTYsOCArNTYsMzcgQEAKLSAjaW5jbHVkZSA8ZV9vcy5oPgotICNp bmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsjIGluY2x1ZGUg PHN5cy90eXBlcy5oPgotKyMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSsjIGluY2x1ZGUgPGZjbnRs Lmg+Ci0rIyBpbmNsdWRlIDx1bmlzdGQuaD4KLSsjIGluY2x1ZGUgPGVycm5vLmg+Ci0rIyBpbmNs dWRlIDxzdGRsaWIuaD4KLSAjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotICMgaW5jbHVkZSA8 b3BlbnNzbC9yYW5kLmg+Ci0rCi0rIyBkZWZpbmUgRklQU19NT0RFX1NXSVRDSF9GSUxFICIvcHJv Yy9zeXMvY3J5cHRvL2ZpcHNfZW5hYmxlZCIKLSsKLStzdGF0aWMgdm9pZCBpbml0X2ZpcHNfbW9k ZSh2b2lkKQotK3sKLSsgICAgY2hhciBidWZbMl0gPSAiMCI7Ci0rICAgIGludCBmZDsKLSsKLSsg ICAgaWYgKGdldGVudigiT1BFTlNTTF9GT1JDRV9GSVBTX01PREUiKSAhPSBOVUxMKSB7Ci0rICAg ICAgICBidWZbMF0gPSAnMSc7Ci0rICAgIH0gZWxzZSBpZiAoKGZkID0gb3BlbihGSVBTX01PREVf U1dJVENIX0ZJTEUsIE9fUkRPTkxZKSkgPj0gMCkgewotKyAgICAgICAgd2hpbGUgKHJlYWQoZmQs IGJ1Ziwgc2l6ZW9mKGJ1ZikpIDwgMCAmJiBlcnJubyA9PSBFSU5UUikgOwotKyAgICAgICAgY2xv c2UoZmQpOwotKyAgICB9Ci0rICAgIC8qIEZhaWx1cmUgcmVhZGluZyB0aGUgZmlwcyBtb2RlIHN3 aXRjaCBmaWxlIG1lYW5zIGp1c3Qgbm90Ci0rICAgICAqIHN3aXRjaGluZyBpbnRvIEZJUFMgbW9k ZS4gV2Ugd291bGQgYnJlYWsgdG9vIG1hbnkgdGhpbmdzCi0rICAgICAqIG90aGVyd2lzZS4uCi0r ICAgICAqLwotKwotKyAgICBpZiAoYnVmWzBdID09ICcxJykgewotKyAgICAgICAgRklQU19tb2Rl X3NldCgxKTsKLSsgICAgfQotK30KLSAjZW5kaWYKLSAKLSAvKgotQEAgLTY1LDE5ICs5NCwyNiBA QAotICAqIHNldHMgRklQUyBjYWxsYmFja3MKLSAgKi8KLSAKLS12b2lkIE9QRU5TU0xfaW5pdCh2 b2lkKQotK3ZvaWQgT1BFTlNTTF9pbml0X2xpYnJhcnkodm9pZCkKLSB7Ci0gICAgIHN0YXRpYyBp bnQgZG9uZSA9IDA7Ci0gICAgIGlmIChkb25lKQotICAgICAgICAgcmV0dXJuOwotICAgICBkb25l ID0gMTsKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIEZJUFNfc2V0X2xvY2tpbmdfY2FsbGJh Y2tzKENSWVBUT19sb2NrLCBDUllQVE9fYWRkX2xvY2spOwotLSAgICBGSVBTX3NldF9lcnJvcl9j YWxsYmFja3MoRVJSX3B1dF9lcnJvciwgRVJSX2FkZF9lcnJvcl92ZGF0YSk7Ci0tICAgIEZJUFNf c2V0X21hbGxvY19jYWxsYmFja3MoQ1JZUFRPX21hbGxvYywgQ1JZUFRPX2ZyZWUpOwotICAgICBS QU5EX2luaXRfZmlwcygpOwotKyAgICBpbml0X2ZpcHNfbW9kZSgpOwotKyAgICBpZiAoIUZJUFNf bW9kZSgpKSB7Ci0rICAgICAgICAvKiBDbGVhbiB1cCBwcmVtYXR1cmVseSBzZXQgZGVmYXVsdCBy YW5kIG1ldGhvZCAqLwotKyAgICAgICAgUkFORF9zZXRfcmFuZF9tZXRob2QoTlVMTCk7Ci0rICAg IH0KLSAjZW5kaWYKLSAjaWYgMAotICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbGxlZCBPUEVOU1NM X2luaXRcbiIpOwotICNlbmRpZgotIH0KLSsKLSt2b2lkIE9QRU5TU0xfaW5pdCh2b2lkKQotK3sK LSsgICAgT1BFTlNTTF9pbml0X2xpYnJhcnkoKTsKLSt9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vb3BlbnNzbGNvbmYuaC5pbi5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9vcGVu c3NsY29uZi5oLmluCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL29wZW5zc2xjb25mLmguaW4u ZmlwcwkyMDE1LTAxLTIwIDEzOjMzOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9vcGVuc3NsY29uZi5oLmluCTIwMTUtMDQtMjIgMTY6MDg6NDAuMzAxMjQ1ODY3 ICswMjAwCi1AQCAtMSw1ICsxLDIwIEBACi0gLyogY3J5cHRvL29wZW5zc2xjb25mLmguaW4gKi8K LSAKLSsjaWZkZWYgT1BFTlNTTF9ET0lOR19NQUtFREVQRU5ECi0rCi0rLyogSW5jbHVkZSBhbnkg c3ltYm9scyBoZXJlIHRoYXQgaGF2ZSB0byBiZSBleHBsaWNpdGx5IHNldCB0byBlbmFibGUgYSBm ZWF0dXJlCi0rICogdGhhdCBzaG91bGQgYmUgdmlzaWJsZSB0byBtYWtlZGVwZW5kLgotKyAqCi0r ICogW091ciAibWFrZSBkZXBlbmQiIGRvZXNuJ3QgYWN0dWFsbHkgbG9vayBhdCB0aGlzLCB3ZSB1 c2UgYWN0dWFsIGJ1aWxkIHNldHRpbmdzCi0rICogaW5zdGVhZDsgd2Ugd2FudCB0byBtYWtlIGl0 IGVhc3kgdG8gcmVtb3ZlIHN1YmRpcmVjdG9yaWVzIHdpdGggZGlzYWJsZWQgYWxnb3JpdGhtcy5d Ci0rICovCi0rCi0rI2lmbmRlZiBPUEVOU1NMX0ZJUFMKLSsjZGVmaW5lIE9QRU5TU0xfRklQUwot KyNlbmRpZgotKwotKyNlbmRpZgotKwotIC8qIEdlbmVyYXRlIDgwMzg2IGNvZGU/ICovCi0gI3Vu ZGVmIEkzODZfT05MWQotIAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JhbmQvbWRf cmFuZC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JhbmQvbWRfcmFuZC5jCi0tLS0gb3Bl bnNzbC0xLjAuMmEvY3J5cHRvL3JhbmQvbWRfcmFuZC5jLmZpcHMJMjAxNS0wMy0xOSAxNDoxOTow MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcmFuZC9tZF9yYW5k LmMJMjAxNS0wNC0yMiAxNjowODo0MC4zMDIyNDU4OTEgKzAyMDAKLUBAIC0zOTEsNyArMzkxLDEw IEBAIGludCBzc2xlYXlfcmFuZF9ieXRlcyh1bnNpZ25lZCBjaGFyICpidWYKLSAgICAgQ1JZUFRP X3dfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQyKTsKLSAgICAgY3J5cHRvX2xvY2tfcmFuZCA9IDE7 Ci0gCi0tICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKLSsgICAgLyogYWx3YXlzIHBvbGwgZm9yIGV4 dGVybmFsIGVudHJvcHkgaW4gRklQUyBtb2RlLCBkcmJnIHByb3ZpZGVzIHRoZSAKLSsgICAgICog ZXhwYW5zaW9uCi0rICAgICAqLwotKyAgICBpZiAoIWluaXRpYWxpemVkIHx8IEZJUFNfbW9kdWxl X21vZGUoKSkgewotICAgICAgICAgUkFORF9wb2xsKCk7Ci0gICAgICAgICBpbml0aWFsaXplZCA9 IDE7Ci0gICAgIH0KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yYW5kL3JhbmQuaC5m aXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yYW5kL3JhbmQuaAotLS0tIG9wZW5zc2wtMS4wLjJh L2NyeXB0by9yYW5kL3JhbmQuaC5maXBzCTIwMTUtMDQtMjIgMTY6MDg6NDAuMDQ0MjM5NzgyICsw MjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JhbmQvcmFuZC5oCTIwMTUtMDQtMjIgMTY6 MDg6NDAuMzAyMjQ1ODkxICswMjAwCi1AQCAtMTMzLDE2ICsxMzMsMzQgQEAgdm9pZCBFUlJfbG9h ZF9SQU5EX3N0cmluZ3Modm9pZCk7Ci0gLyogRXJyb3IgY29kZXMgZm9yIHRoZSBSQU5EIGZ1bmN0 aW9ucy4gKi8KLSAKLSAvKiBGdW5jdGlvbiBjb2Rlcy4gKi8KLSsjIGRlZmluZSBSQU5EX0ZfRU5H X1JBTkRfR0VUX1JBTkRfTUVUSE9EICAgICAgICAgICAgICAgICAgMTA4Ci0rIyBkZWZpbmUgUkFO RF9GX0ZJUFNfUkFORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMwotKyMgZGVm aW5lIFJBTkRfRl9GSVBTX1JBTkRfQllURVMgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDIK LSsjIGRlZmluZSBSQU5EX0ZfRklQU19SQU5EX1NFVF9EVCAgICAgICAgICAgICAgICAgICAgICAg ICAgMTA2Ci0rIyBkZWZpbmUgUkFORF9GX0ZJUFNfWDkzMV9TRVRfRFQgICAgICAgICAgICAgICAg ICAgICAgICAgIDEwNgotKyMgZGVmaW5lIFJBTkRfRl9GSVBTX1NFVF9EVCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAxMDQKLSsjIGRlZmluZSBSQU5EX0ZfRklQU19TRVRfUFJOR19TRUVE ICAgICAgICAgICAgICAgICAgICAgICAgMTA3Ci0rIyBkZWZpbmUgUkFORF9GX0ZJUFNfU0VUX1RF U1RfTU9ERSAgICAgICAgICAgICAgICAgICAgICAgIDEwNQotICMgZGVmaW5lIFJBTkRfRl9SQU5E X0dFVF9SQU5EX01FVEhPRCAgICAgICAgICAgICAgICAgICAgICAxMDEKLS0jIGRlZmluZSBSQU5E X0ZfUkFORF9JTklUX0ZJUFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAyCi0rIyBkZWZp bmUgUkFORF9GX1JBTkRfSU5JVF9GSVBTICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOQot ICMgZGVmaW5lIFJBTkRfRl9TU0xFQVlfUkFORF9CWVRFUyAgICAgICAgICAgICAgICAgICAgICAg ICAxMDAKLSAKLSAvKiBSZWFzb24gY29kZXMuICovCi0tIyBkZWZpbmUgUkFORF9SX0RVQUxfRUNf RFJCR19ESVNBQkxFRCAgICAgICAgICAgICAgICAgICAgIDEwNAotLSMgZGVmaW5lIFJBTkRfUl9F UlJPUl9JTklUSUFMSVNJTkdfRFJCRyAgICAgICAgICAgICAgICAgICAxMDIKLS0jIGRlZmluZSBS QU5EX1JfRVJST1JfSU5TVEFOVElBVElOR19EUkJHICAgICAgICAgICAgICAgICAgMTAzCi0tIyBk ZWZpbmUgUkFORF9SX05PX0ZJUFNfUkFORE9NX01FVEhPRF9TRVQgICAgICAgICAgICAgICAgIDEw MQotKyMgZGVmaW5lIFJBTkRfUl9EVUFMX0VDX0RSQkdfRElTQUJMRUQgICAgICAgICAgICAgICAg ICAgICAxMTQKLSsjIGRlZmluZSBSQU5EX1JfRVJST1JfSU5JVElBTElTSU5HX0RSQkcgICAgICAg ICAgICAgICAgICAgMTEyCi0rIyBkZWZpbmUgUkFORF9SX0VSUk9SX0lOU1RBTlRJQVRJTkdfRFJC RyAgICAgICAgICAgICAgICAgIDExMwotKyMgZGVmaW5lIFJBTkRfUl9OT05fRklQU19NRVRIT0Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAxMDUKLSsjIGRlZmluZSBSQU5EX1JfTk9UX0lOX1RF U1RfTU9ERSAgICAgICAgICAgICAgICAgICAgICAgICAgMTA2Ci0rIyBkZWZpbmUgUkFORF9SX05P X0ZJUFNfUkFORE9NX01FVEhPRF9TRVQgICAgICAgICAgICAgICAgIDExMQotKyMgZGVmaW5lIFJB TkRfUl9OT19LRVlfU0VUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDcKLSsjIGRl ZmluZSBSQU5EX1JfUFJOR19BU0tJTkdfRk9SX1RPT19NVUNIICAgICAgICAgICAgICAgICAgMTAx Ci0rIyBkZWZpbmUgUkFORF9SX1BSTkdfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDEwOAotKyMgZGVmaW5lIFJBTkRfUl9QUk5HX0tFWUVEICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAxMDkKLSsjIGRlZmluZSBSQU5EX1JfUFJOR19OT1RfUkVLRVlFRCAgICAgICAg ICAgICAgICAgICAgICAgICAgMTAyCi0rIyBkZWZpbmUgUkFORF9SX1BSTkdfTk9UX1JFU0VFREVE ICAgICAgICAgICAgICAgICAgICAgICAgIDEwMwotICMgZGVmaW5lIFJBTkRfUl9QUk5HX05PVF9T RUVERUQgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAKLSsjIGRlZmluZSBSQU5EX1JfUFJO R19TRUVEX01VU1RfTk9UX01BVENIX0tFWSAgICAgICAgICAgICAgMTEwCi0rIyBkZWZpbmUgUkFO RF9SX1BSTkdfU1RVQ0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNAotIAotICNp ZmRlZiAgX19jcGx1c3BsdXMKLSB9Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcmlw ZW1kL3JtZF9kZ3N0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcmlwZW1kL3JtZF9kZ3N0 LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcmlwZW1kL3JtZF9kZ3N0LmMuZmlwcwkyMDE1 LTAzLTE5IDE0OjE5OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0 by9yaXBlbWQvcm1kX2Rnc3QuYwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwMjI0NTg5MSArMDIwMAot QEAgLTcwLDcgKzcwLDcgQEAgdm9pZCByaXBlbWQxNjBfYmxvY2tfeDg2KFJJUEVNRDE2MF9DVFgg KgotIHZvaWQgcmlwZW1kMTYwX2Jsb2NrKFJJUEVNRDE2MF9DVFggKmMsIHVuc2lnbmVkIGxvbmcg KnAsIHNpemVfdCBudW0pOwotICNlbmRpZgotIAotLWZpcHNfbWRfaW5pdChSSVBFTUQxNjApCi0r bm9uZmlwc19tZF9pbml0KFJJUEVNRDE2MCkKLSB7Ci0gICAgIG1lbXNldChjLCAwLCBzaXplb2Yo KmMpKTsKLSAgICAgYy0+QSA9IFJJUEVNRDE2MF9BOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL3JzYS9yc2FfY3JwdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2Ff Y3JwdC5jCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2FfY3JwdC5jLmZpcHMJMjAx NS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vcnNhL3JzYV9jcnB0LmMJMjAxNS0wNC0yMiAxNjowODo0MC4zMDIyNDU4OTEgKzAyMDAKLUBA IC04OSw5ICs4OSw5IEBAIGludCBSU0FfcHJpdmF0ZV9lbmNyeXB0KGludCBmbGVuLCBjb25zdAot ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnRvLCBSU0EgKnJzYSwgaW50 IHBhZGRpbmcpCi0gewotICNpZmRlZiBPUEVOU1NMX0ZJUFMKLS0gICAgaWYgKEZJUFNfbW9kZSgp ICYmICEocnNhLT5tZXRoLT5mbGFncyAmIFJTQV9GTEFHX0ZJUFNfTUVUSE9EKQotLSAgICAgICAg JiYgIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSB7Ci0tICAgICAgICBS U0FlcnIoUlNBX0ZfUlNBX1BSSVZBVEVfRU5DUllQVCwgUlNBX1JfTk9OX0ZJUFNfUlNBX01FVEhP RCk7Ci0rICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05f RklQU19BTExPVykpIHsKLSsgICAgICAgIFJTQWVycihSU0FfRl9SU0FfUFJJVkFURV9FTkNSWVBU LAotKyAgICAgICAgICAgICAgIFJTQV9SX09QRVJBVElPTl9OT1RfQUxMT1dFRF9JTl9GSVBTX01P REUpOwotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0gI2VuZGlmCi1AQCAtMTE1LDkgKzEx NSw5IEBAIGludCBSU0FfcHVibGljX2RlY3J5cHQoaW50IGZsZW4sIGNvbnN0IHUKLSAgICAgICAg ICAgICAgICAgICAgICAgIFJTQSAqcnNhLCBpbnQgcGFkZGluZykKLSB7Ci0gI2lmZGVmIE9QRU5T U0xfRklQUwotLSAgICBpZiAoRklQU19tb2RlKCkgJiYgIShyc2EtPm1ldGgtPmZsYWdzICYgUlNB X0ZMQUdfRklQU19NRVRIT0QpCi0tICAgICAgICAmJiAhKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19O T05fRklQU19BTExPVykpIHsKLS0gICAgICAgIFJTQWVycihSU0FfRl9SU0FfUFVCTElDX0RFQ1JZ UFQsIFJTQV9SX05PTl9GSVBTX1JTQV9NRVRIT0QpOwotKyAgICBpZiAoRklQU19tb2RlKCkgJiYg IShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSB7Ci0rICAgICAgICBSU0Fl cnIoUlNBX0ZfUlNBX1BVQkxJQ19ERUNSWVBULAotKyAgICAgICAgICAgICAgIFJTQV9SX09QRVJB VElPTl9OT1RfQUxMT1dFRF9JTl9GSVBTX01PREUpOwotICAgICAgICAgcmV0dXJuIC0xOwotICAg ICB9Ci0gI2VuZGlmCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9lYXku Yy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX2VheS5jCi0tLS0gb3BlbnNzbC0x LjAuMmEvY3J5cHRvL3JzYS9yc2FfZWF5LmMuZmlwcwkyMDE1LTAzLTE5IDE0OjE5OjAwLjAwMDAw MDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX2VheS5jCTIwMTUt MDQtMjIgMTY6MDg6NDAuMzAyMjQ1ODkxICswMjAwCi1AQCAtMTE0LDYgKzExNCwxMCBAQAotICNp bmNsdWRlIDxvcGVuc3NsL2JuLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+Ci0gI2luY2x1 ZGUgPG9wZW5zc2wvcmFuZC5oPgotKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpZmRlZiBP UEVOU1NMX0ZJUFMKLSsjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNlbmRpZgotIAotICNp Zm5kZWYgUlNBX05VTEwKLSAKLUBAIC0xNDAsNyArMTQ0LDcgQEAgc3RhdGljIFJTQV9NRVRIT0Qg cnNhX3BrY3MxX2VheV9tZXRoID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICogaWYgZSA9PSAzICovCi0gICAgIFJTQV9lYXlfaW5pdCwKLSAgICAgUlNBX2VheV9maW5pc2gs Ci0tICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmbGFncyAqLwotKyAgICBSU0Ff RkxBR19GSVBTX01FVEhPRCwgICAgICAgLyogZmxhZ3MgKi8KLSAgICAgTlVMTCwKLSAgICAgMCwg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJzYV9zaWduICovCi0gICAgIDAsICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiByc2FfdmVyaWZ5ICovCi1AQCAtMTYwLDYgKzE2NCwyMiBAQCBz dGF0aWMgaW50IFJTQV9lYXlfcHVibGljX2VuY3J5cHQoaW50IGZsCi0gICAgIHVuc2lnbmVkIGNo YXIgKmJ1ZiA9IE5VTEw7Ci0gICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKLSAKLSsjIGlmZGVmIE9Q RU5TU0xfRklQUwotKyAgICBpZiAoRklQU19tb2RlKCkpIHsKLSsgICAgICAgIGlmIChGSVBTX3Nl bGZ0ZXN0X2ZhaWxlZCgpKSB7Ci0rICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0VBWV9Q VUJMSUNfRU5DUllQVCwKLSsgICAgICAgICAgICAgICAgICAgIEZJUFNfUl9GSVBTX1NFTEZURVNU X0ZBSUxFRCk7Ci0rICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICB9Ci0rCi0rICAgICAg ICBpZiAoIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCi0rICAgICAgICAg ICAgJiYgKEJOX251bV9iaXRzKHJzYS0+bikgPCBPUEVOU1NMX1JTQV9GSVBTX01JTl9NT0RVTFVT X0JJVFMpKSB7Ci0rICAgICAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9FQVlfUFVCTElDX0VOQ1JZ UFQsIFJTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0rICAgICAgICAgICAgcmV0dXJuIC0xOwot KyAgICAgICAgfQotKyAgICB9Ci0rIyBlbmRpZgotKwotICAgICBpZiAoQk5fbnVtX2JpdHMocnNh LT5uKSA+IE9QRU5TU0xfUlNBX01BWF9NT0RVTFVTX0JJVFMpIHsKLSAgICAgICAgIFJTQWVycihS U0FfRl9SU0FfRUFZX1BVQkxJQ19FTkNSWVBULCBSU0FfUl9NT0RVTFVTX1RPT19MQVJHRSk7Ci0g ICAgICAgICByZXR1cm4gLTE7Ci1AQCAtMzYxLDYgKzM4MSwyMiBAQCBzdGF0aWMgaW50IFJTQV9l YXlfcHJpdmF0ZV9lbmNyeXB0KGludCBmCi0gICAgIEJJR05VTSAqdW5ibGluZCA9IE5VTEw7Ci0g ICAgIEJOX0JMSU5ESU5HICpibGluZGluZyA9IE5VTEw7Ci0gCi0rIyBpZmRlZiBPUEVOU1NMX0ZJ UFMKLSsgICAgaWYgKEZJUFNfbW9kZSgpKSB7Ci0rICAgICAgICBpZiAoRklQU19zZWxmdGVzdF9m YWlsZWQoKSkgewotKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX1JTQV9FQVlfUFJJVkFURV9F TkNSWVBULAotKyAgICAgICAgICAgICAgICAgICAgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVE KTsKLSsgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAo IShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCi0rICAgICAgICAgICAgJiYg KEJOX251bV9iaXRzKHJzYS0+bikgPCBPUEVOU1NMX1JTQV9GSVBTX01JTl9NT0RVTFVTX0JJVFMp KSB7Ci0rICAgICAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9FQVlfUFJJVkFURV9FTkNSWVBULCBS U0FfUl9LRVlfU0laRV9UT09fU01BTEwpOwotKyAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAg ICAgIH0KLSsgICAgfQotKyMgZW5kaWYKLSsKLSAgICAgaWYgKChjdHggPSBCTl9DVFhfbmV3KCkp ID09IE5VTEwpCi0gICAgICAgICBnb3RvIGVycjsKLSAgICAgQk5fQ1RYX3N0YXJ0KGN0eCk7Ci1A QCAtNDk3LDYgKzUzMywyMiBAQCBzdGF0aWMgaW50IFJTQV9lYXlfcHJpdmF0ZV9kZWNyeXB0KGlu dCBmCi0gICAgIEJJR05VTSAqdW5ibGluZCA9IE5VTEw7Ci0gICAgIEJOX0JMSU5ESU5HICpibGlu ZGluZyA9IE5VTEw7Ci0gCi0rIyBpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgaWYgKEZJUFNfbW9k ZSgpKSB7Ci0rICAgICAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgewotKyAgICAgICAg ICAgIEZJUFNlcnIoRklQU19GX1JTQV9FQVlfUFJJVkFURV9ERUNSWVBULAotKyAgICAgICAgICAg ICAgICAgICAgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKLSsgICAgICAgICAgICByZXR1 cm4gLTE7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoIShyc2EtPmZsYWdzICYgUlNBX0ZM QUdfTk9OX0ZJUFNfQUxMT1cpCi0rICAgICAgICAgICAgJiYgKEJOX251bV9iaXRzKHJzYS0+bikg PCBPUEVOU1NMX1JTQV9GSVBTX01JTl9NT0RVTFVTX0JJVFMpKSB7Ci0rICAgICAgICAgICAgUlNB ZXJyKFJTQV9GX1JTQV9FQVlfUFJJVkFURV9ERUNSWVBULCBSU0FfUl9LRVlfU0laRV9UT09fU01B TEwpOwotKyAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgIH0KLSsgICAgfQotKyMgZW5k aWYKLSsKLSAgICAgaWYgKChjdHggPSBCTl9DVFhfbmV3KCkpID09IE5VTEwpCi0gICAgICAgICBn b3RvIGVycjsKLSAgICAgQk5fQ1RYX3N0YXJ0KGN0eCk7Ci1AQCAtNjIzLDYgKzY3NSwyMiBAQCBz dGF0aWMgaW50IFJTQV9lYXlfcHVibGljX2RlY3J5cHQoaW50IGZsCi0gICAgIHVuc2lnbmVkIGNo YXIgKmJ1ZiA9IE5VTEw7Ci0gICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKLSAKLSsjIGlmZGVmIE9Q RU5TU0xfRklQUwotKyAgICBpZiAoRklQU19tb2RlKCkpIHsKLSsgICAgICAgIGlmIChGSVBTX3Nl bGZ0ZXN0X2ZhaWxlZCgpKSB7Ci0rICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0VBWV9Q VUJMSUNfREVDUllQVCwKLSsgICAgICAgICAgICAgICAgICAgIEZJUFNfUl9GSVBTX1NFTEZURVNU X0ZBSUxFRCk7Ci0rICAgICAgICAgICAgZ290byBlcnI7Ci0rICAgICAgICB9Ci0rCi0rICAgICAg ICBpZiAoIShyc2EtPmZsYWdzICYgUlNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCi0rICAgICAgICAg ICAgJiYgKEJOX251bV9iaXRzKHJzYS0+bikgPCBPUEVOU1NMX1JTQV9GSVBTX01JTl9NT0RVTFVT X0JJVFMpKSB7Ci0rICAgICAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9FQVlfUFVCTElDX0RFQ1JZ UFQsIFJTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCk7Ci0rICAgICAgICAgICAgcmV0dXJuIC0xOwot KyAgICAgICAgfQotKyAgICB9Ci0rIyBlbmRpZgotKwotICAgICBpZiAoQk5fbnVtX2JpdHMocnNh LT5uKSA+IE9QRU5TU0xfUlNBX01BWF9NT0RVTFVTX0JJVFMpIHsKLSAgICAgICAgIFJTQWVycihS U0FfRl9SU0FfRUFZX1BVQkxJQ19ERUNSWVBULCBSU0FfUl9NT0RVTFVTX1RPT19MQVJHRSk7Ci0g ICAgICAgICByZXR1cm4gLTE7Ci1AQCAtODg2LDYgKzk1NCw5IEBAIHN0YXRpYyBpbnQgUlNBX2Vh eV9tb2RfZXhwKEJJR05VTSAqcjAsIGMKLSAKLSBzdGF0aWMgaW50IFJTQV9lYXlfaW5pdChSU0Eg KnJzYSkKLSB7Ci0rIyBpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgRklQU19zZWxmdGVzdF9jaGVj aygpOwotKyMgZW5kaWYKLSAgICAgcnNhLT5mbGFncyB8PSBSU0FfRkxBR19DQUNIRV9QVUJMSUMg fCBSU0FfRkxBR19DQUNIRV9QUklWQVRFOwotICAgICByZXR1cm4gKDEpOwotIH0KLWRpZmYgLXVw IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX2Vyci5jLmZpcHMgb3BlbnNzbC0xLjAuMmEv Y3J5cHRvL3JzYS9yc2FfZXJyLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9l cnIuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNz bC0xLjAuMmEvY3J5cHRvL3JzYS9yc2FfZXJyLmMJMjAxNS0wNC0yMiAxNjowODo0MC4zMDIyNDU4 OTEgKzAyMDAKLUBAIC0xMzYsNiArMTM2LDggQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBSU0Ff c3RyX2Z1bmN0c1tdCi0gICAgIHtFUlJfRlVOQyhSU0FfRl9SU0FfUFVCTElDX0VOQ1JZUFQpLCAi UlNBX3B1YmxpY19lbmNyeXB0In0sCi0gICAgIHtFUlJfRlVOQyhSU0FfRl9SU0FfUFVCX0RFQ09E RSksICJSU0FfUFVCX0RFQ09ERSJ9LAotICAgICB7RVJSX0ZVTkMoUlNBX0ZfUlNBX1NFVFVQX0JM SU5ESU5HKSwgIlJTQV9zZXR1cF9ibGluZGluZyJ9LAotKyAgICB7RVJSX0ZVTkMoUlNBX0ZfUlNB X1NFVF9ERUZBVUxUX01FVEhPRCksICJSU0Ffc2V0X2RlZmF1bHRfbWV0aG9kIn0sCi0rICAgIHtF UlJfRlVOQyhSU0FfRl9SU0FfU0VUX01FVEhPRCksICJSU0Ffc2V0X21ldGhvZCJ9LAotICAgICB7 RVJSX0ZVTkMoUlNBX0ZfUlNBX1NJR04pLCAiUlNBX3NpZ24ifSwKLSAgICAge0VSUl9GVU5DKFJT QV9GX1JTQV9TSUdOX0FTTjFfT0NURVRfU1RSSU5HKSwKLSAgICAgICJSU0Ffc2lnbl9BU04xX09D VEVUX1NUUklORyJ9LAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2FfZ2Vu LmMuZmlwcyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9nZW4uYwotLS0tIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9yc2EvcnNhX2dlbi5jLmZpcHMJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9nZW4uYwkyMDE1 LTA0LTIyIDE2OjA4OjQwLjMwMzI0NTkxNCArMDIwMAotQEAgLTY5LDYgKzY5LDgwIEBACi0gI2lu Y2x1ZGUgPG9wZW5zc2wvcnNhLmg+Ci0gI2lmZGVmIE9QRU5TU0xfRklQUwotICMgaW5jbHVkZSA8 b3BlbnNzbC9maXBzLmg+Ci0rIyBpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyMgaW5jbHVkZSA8 b3BlbnNzbC9ldnAuaD4KLSsKLStzdGF0aWMgaW50IGZpcHNfcnNhX3BhaXJ3aXNlX2ZhaWwgPSAw OwotKwotK3ZvaWQgRklQU19jb3JydXB0X3JzYV9rZXlnZW4odm9pZCkKLSt7Ci0rICAgIGZpcHNf cnNhX3BhaXJ3aXNlX2ZhaWwgPSAxOwotK30KLSsKLStpbnQgZmlwc19jaGVja19yc2EoUlNBICpy c2EpCi0rewotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIHRic1tdID0gIlJTQSBQYWlyd2lzZSBD aGVjayBEYXRhIjsKLSsgICAgdW5zaWduZWQgY2hhciAqY3RidWYgPSBOVUxMLCAqcHRidWYgPSBO VUxMOwotKyAgICBpbnQgbGVuLCByZXQgPSAwOwotKyAgICBFVlBfUEtFWSAqcGs7Ci0rCi0rICAg IGlmICgocGsgPSBFVlBfUEtFWV9uZXcoKSkgPT0gTlVMTCkKLSsgICAgICAgIGdvdG8gZXJyOwot KwotKyAgICBFVlBfUEtFWV9zZXQxX1JTQShwaywgcnNhKTsKLSsKLSsgICAgLyogUGVyZm9ybSBw YWlyd2lzZSBjb25zaXN0ZW5jeSBzaWduYXR1cmUgdGVzdCAqLwotKyAgICBpZiAoIWZpcHNfcGtl eV9zaWduYXR1cmVfdGVzdChwaywgdGJzLCAtMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTlVMTCwgMCwgRVZQX3NoYTEoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BBRF9QS0NTMSwgTlVMTCkKLSsgICAgICAgIHx8ICFm aXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIHRicywgLTEsIE5VTEwsIDAsIEVWUF9zaGExKCks Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19Q QURfWDkzMSwgTlVMTCkKLSsgICAgICAgIHx8ICFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGss IHRicywgLTEsIE5VTEwsIDAsIEVWUF9zaGExKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19QQURfUFNTLCBOVUxMKSkKLSsgICAgICAgIGdv dG8gZXJyOwotKyAgICAvKiBOb3cgcGVyZm9ybSBwYWlyd2lzZSBjb25zaXN0ZW5jeSBlbmNyeXB0 L2RlY3J5cHQgdGVzdCAqLwotKyAgICBjdGJ1ZiA9IE9QRU5TU0xfbWFsbG9jKFJTQV9zaXplKHJz YSkpOwotKyAgICBpZiAoIWN0YnVmKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0rICAgIGxlbiA9 Ci0rICAgICAgICBSU0FfcHVibGljX2VuY3J5cHQoc2l6ZW9mKHRicykgLSAxLCB0YnMsIGN0YnVm LCByc2EsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgUlNBX1BLQ1MxX1BBRERJTkcpOwot KyAgICBpZiAobGVuIDw9IDApCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgLyogQ2hlY2sgY2lw aGVydGV4dCBkb2Vzbid0IG1hdGNoIHBsYWludGV4dCAqLwotKyAgICBpZiAoKGxlbiA9PSAoc2l6 ZW9mKHRicykgLSAxKSkgJiYgIW1lbWNtcCh0YnMsIGN0YnVmLCBsZW4pKQotKyAgICAgICAgZ290 byBlcnI7Ci0rICAgIHB0YnVmID0gT1BFTlNTTF9tYWxsb2MoUlNBX3NpemUocnNhKSk7Ci0rCi0r ICAgIGlmICghcHRidWYpCi0rICAgICAgICBnb3RvIGVycjsKLSsgICAgbGVuID0gUlNBX3ByaXZh dGVfZGVjcnlwdChsZW4sIGN0YnVmLCBwdGJ1ZiwgcnNhLCBSU0FfUEtDUzFfUEFERElORyk7Ci0r ICAgIGlmIChsZW4gIT0gKHNpemVvZih0YnMpIC0gMSkpCi0rICAgICAgICBnb3RvIGVycjsKLSsg ICAgaWYgKG1lbWNtcChwdGJ1ZiwgdGJzLCBsZW4pKQotKyAgICAgICAgZ290byBlcnI7Ci0rCi0r ICAgIHJldCA9IDE7Ci0rCi0rICAgIGlmICghcHRidWYpCi0rICAgICAgICBnb3RvIGVycjsKLSsK LSsgZXJyOgotKyAgICBpZiAocmV0ID09IDApIHsKLSsgICAgICAgIGZpcHNfc2V0X3NlbGZ0ZXN0 X2ZhaWwoKTsKLSsgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfQ0hFQ0tfUlNBLCBGSVBTX1Jf UEFJUldJU0VfVEVTVF9GQUlMRUQpOwotKyAgICB9Ci0rCi0rICAgIGlmIChjdGJ1ZikKLSsgICAg ICAgIE9QRU5TU0xfZnJlZShjdGJ1Zik7Ci0rICAgIGlmIChwdGJ1ZikKLSsgICAgICAgIE9QRU5T U0xfZnJlZShwdGJ1Zik7Ci0rICAgIGlmIChwaykKLSsgICAgICAgIEVWUF9QS0VZX2ZyZWUocGsp OwotKwotKyAgICByZXR1cm4gcmV0OwotK30KLSAjZW5kaWYKLSAKLSBzdGF0aWMgaW50IHJzYV9i dWlsdGluX2tleWdlbihSU0EgKnJzYSwgaW50IGJpdHMsIEJJR05VTSAqZV92YWx1ZSwKLUBAIC04 NCw3ICsxNTgsNyBAQCBzdGF0aWMgaW50IHJzYV9idWlsdGluX2tleWdlbihSU0EgKnJzYSwKLSBp bnQgUlNBX2dlbmVyYXRlX2tleV9leChSU0EgKnJzYSwgaW50IGJpdHMsIEJJR05VTSAqZV92YWx1 ZSwgQk5fR0VOQ0IgKmNiKQotIHsKLSAjaWZkZWYgT1BFTlNTTF9GSVBTCi0tICAgIGlmIChGSVBT X21vZGUoKSAmJiAhKHJzYS0+bWV0aC0+ZmxhZ3MgJiBSU0FfRkxBR19GSVBTX01FVEhPRCkKLSsg ICAgaWYgKEZJUFNfbW9kdWxlX21vZGUoKSAmJiAhKHJzYS0+bWV0aC0+ZmxhZ3MgJiBSU0FfRkxB R19GSVBTX01FVEhPRCkKLSAgICAgICAgICYmICEocnNhLT5mbGFncyAmIFJTQV9GTEFHX05PTl9G SVBTX0FMTE9XKSkgewotICAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9HRU5FUkFURV9LRVlfRVgs IFJTQV9SX05PTl9GSVBTX1JTQV9NRVRIT0QpOwotICAgICAgICAgcmV0dXJuIDA7Ci1AQCAtOTIs MTAgKzE2Niw2IEBAIGludCBSU0FfZ2VuZXJhdGVfa2V5X2V4KFJTQSAqcnNhLCBpbnQgYmkKLSAj ZW5kaWYKLSAgICAgaWYgKHJzYS0+bWV0aC0+cnNhX2tleWdlbikKLSAgICAgICAgIHJldHVybiBy c2EtPm1ldGgtPnJzYV9rZXlnZW4ocnNhLCBiaXRzLCBlX3ZhbHVlLCBjYik7Ci0tI2lmZGVmIE9Q RU5TU0xfRklQUwotLSAgICBpZiAoRklQU19tb2RlKCkpCi0tICAgICAgICByZXR1cm4gRklQU19y c2FfZ2VuZXJhdGVfa2V5X2V4KHJzYSwgYml0cywgZV92YWx1ZSwgY2IpOwotLSNlbmRpZgotICAg ICByZXR1cm4gcnNhX2J1aWx0aW5fa2V5Z2VuKHJzYSwgYml0cywgZV92YWx1ZSwgY2IpOwotIH0K LSAKLUBAIC0xMDgsNiArMTc4LDIwIEBAIHN0YXRpYyBpbnQgcnNhX2J1aWx0aW5fa2V5Z2VuKFJT QSAqcnNhLAotICAgICBpbnQgYml0c3AsIGJpdHNxLCBvayA9IC0xLCBuID0gMDsKLSAgICAgQk5f Q1RYICpjdHggPSBOVUxMOwotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgaWYgKEZJUFNf bW9kdWxlX21vZGUoKSkgewotKyAgICAgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsK LSsgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9SU0FfQlVJTFRJTl9LRVlHRU4sIEZJUFNfUl9G SVBTX1NFTEZURVNUX0ZBSUxFRCk7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB9 Ci0rCi0rICAgICAgICBpZiAoYml0cyA8IE9QRU5TU0xfUlNBX0ZJUFNfTUlOX01PRFVMVVNfQklU UykgewotKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX1JTQV9CVUlMVElOX0tFWUdFTiwgRklQ U19SX0tFWV9UT09fU0hPUlQpOwotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgfQot KyAgICB9Ci0rI2VuZGlmCi0rCi0gICAgIGN0eCA9IEJOX0NUWF9uZXcoKTsKLSAgICAgaWYgKGN0 eCA9PSBOVUxMKQotICAgICAgICAgZ290byBlcnI7Ci1AQCAtMjMzLDYgKzMxNywxNiBAQCBzdGF0 aWMgaW50IHJzYV9idWlsdGluX2tleWdlbihSU0EgKnJzYSwKLSAgICAgaWYgKCFCTl9tb2RfaW52 ZXJzZShyc2EtPmlxbXAsIHJzYS0+cSwgcCwgY3R4KSkKLSAgICAgICAgIGdvdG8gZXJyOwotIAot KyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgaWYgKEZJUFNfbW9kdWxlX21vZGUoKSkgewotKyAg ICAgICAgaWYgKGZpcHNfcnNhX3BhaXJ3aXNlX2ZhaWwpCi0rICAgICAgICAgICAgQk5fYWRkX3dv cmQocnNhLT5uLCAxKTsKLSsKLSsgICAgICAgIGlmICghZmlwc19jaGVja19yc2EocnNhKSkKLSsg ICAgICAgICAgICBnb3RvIGVycjsKLSsgICAgfQotKyNlbmRpZgotKwotICAgICBvayA9IDE7Ci0g IGVycjoKLSAgICAgaWYgKG9rID09IC0xKSB7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlw dG8vcnNhL3JzYS5oLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2EuaAotLS0tIG9w ZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhLmguZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjQwLjE3 ODI0Mjk1NSArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhLmgJMjAxNS0w NC0yMiAxNjowODo0MC4zMDMyNDU5MTQgKzAyMDAKLUBAIC0xNjgsNiArMTY4LDggQEAgc3RydWN0 IHJzYV9zdCB7Ci0gIyAgZGVmaW5lIE9QRU5TU0xfUlNBX01BWF9NT0RVTFVTX0JJVFMgICAxNjM4 NAotICMgZW5kaWYKLSAKLSsjIGRlZmluZSBPUEVOU1NMX1JTQV9GSVBTX01JTl9NT0RVTFVTX0JJ VFMgMTAyNAotKwotICMgaWZuZGVmIE9QRU5TU0xfUlNBX1NNQUxMX01PRFVMVVNfQklUUwotICMg IGRlZmluZSBPUEVOU1NMX1JTQV9TTUFMTF9NT0RVTFVTX0JJVFMgMzA3MgotICMgZW5kaWYKLUBA IC0zMjksNiArMzMxLDEzIEBAIFJTQSAqUlNBX2dlbmVyYXRlX2tleShpbnQgYml0cywgdW5zaWdu ZWQKLSAKLSAvKiBOZXcgdmVyc2lvbiAqLwotIGludCBSU0FfZ2VuZXJhdGVfa2V5X2V4KFJTQSAq cnNhLCBpbnQgYml0cywgQklHTlVNICplLCBCTl9HRU5DQiAqY2IpOwotK2ludCBSU0FfWDkzMV9k ZXJpdmVfZXgoUlNBICpyc2EsIEJJR05VTSAqcDEsIEJJR05VTSAqcDIsIEJJR05VTSAqcTEsCi0r ICAgICAgICAgICAgICAgICAgICAgICBCSUdOVU0gKnEyLCBjb25zdCBCSUdOVU0gKlhwMSwgY29u c3QgQklHTlVNICpYcDIsCi0rICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCSUdOVU0gKlhw LCBjb25zdCBCSUdOVU0gKlhxMSwKLSsgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJJR05V TSAqWHEyLCBjb25zdCBCSUdOVU0gKlhxLAotKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg QklHTlVNICplLCBCTl9HRU5DQiAqY2IpOwotK2ludCBSU0FfWDkzMV9nZW5lcmF0ZV9rZXlfZXgo UlNBICpyc2EsIGludCBiaXRzLCBjb25zdCBCSUdOVU0gKmUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBCTl9HRU5DQiAqY2IpOwotIAotIGludCBSU0FfY2hlY2tfa2V5KGNvbnN0IFJT QSAqKTsKLSAgICAgICAgIC8qIG5leHQgNCByZXR1cm4gLTEgb24gZXJyb3IgKi8KLUBAIC01Mzgs NyArNTQ3LDcgQEAgdm9pZCBFUlJfbG9hZF9SU0Ffc3RyaW5ncyh2b2lkKTsKLSAjIGRlZmluZSBS U0FfRl9SU0FfQUxHT1JfVE9fTUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU3Ci0gIyBk ZWZpbmUgUlNBX0ZfUlNBX0JVSUxUSU5fS0VZR0VOICAgICAgICAgICAgICAgICAgICAgICAgIDEy OQotICMgZGVmaW5lIFJTQV9GX1JTQV9DSEVDS19LRVkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxMjMKLS0jIGRlZmluZSBSU0FfRl9SU0FfQ01TX0RFQ1JZUFQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTU4Ci0rIyBkZWZpbmUgUlNBX0ZfUlNBX0NNU19ERUNSWVBUICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDI1OAotICMgZGVmaW5lIFJTQV9GX1JTQV9FQVlfUFJJVkFURV9E RUNSWVBUICAgICAgICAgICAgICAgICAgICAxMDEKLSAjIGRlZmluZSBSU0FfRl9SU0FfRUFZX1BS SVZBVEVfRU5DUllQVCAgICAgICAgICAgICAgICAgICAgMTAyCi0gIyBkZWZpbmUgUlNBX0ZfUlNB X0VBWV9QVUJMSUNfREVDUllQVCAgICAgICAgICAgICAgICAgICAgIDEwMwotQEAgLTU1OSw3ICs1 NjgsNyBAQCB2b2lkIEVSUl9sb2FkX1JTQV9zdHJpbmdzKHZvaWQpOwotICMgZGVmaW5lIFJTQV9G X1JTQV9QQURESU5HX0FERF9QS0NTMV9PQUVQICAgICAgICAgICAgICAgICAxMjEKLSAjIGRlZmlu ZSBSU0FfRl9SU0FfUEFERElOR19BRERfUEtDUzFfT0FFUF9NR0YxICAgICAgICAgICAgMTYwCi0g IyBkZWZpbmUgUlNBX0ZfUlNBX1BBRERJTkdfQUREX1BLQ1MxX1BTUyAgICAgICAgICAgICAgICAg IDEyNQotLSMgZGVmaW5lIFJTQV9GX1JTQV9QQURESU5HX0FERF9QS0NTMV9QU1NfTUdGMSAgICAg ICAgICAgICAxNDgKLSsjIGRlZmluZSBSU0FfRl9SU0FfUEFERElOR19BRERfUEtDUzFfUFNTX01H RjEgICAgICAgICAgICAgMTU4Ci0gIyBkZWZpbmUgUlNBX0ZfUlNBX1BBRERJTkdfQUREX1BLQ1Mx X1RZUEVfMSAgICAgICAgICAgICAgIDEwOAotICMgZGVmaW5lIFJTQV9GX1JTQV9QQURESU5HX0FE RF9QS0NTMV9UWVBFXzIgICAgICAgICAgICAgICAxMDkKLSAjIGRlZmluZSBSU0FfRl9SU0FfUEFE RElOR19BRERfU1NMVjIzICAgICAgICAgICAgICAgICAgICAgMTEwCi1AQCAtNTczLDIxICs1ODIs MjMgQEAgdm9pZCBFUlJfbG9hZF9SU0Ffc3RyaW5ncyh2b2lkKTsKLSAjIGRlZmluZSBSU0FfRl9S U0FfUEFERElOR19DSEVDS19YOTMxICAgICAgICAgICAgICAgICAgICAgMTI4Ci0gIyBkZWZpbmUg UlNBX0ZfUlNBX1BSSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNQotICMg ZGVmaW5lIFJTQV9GX1JTQV9QUklOVF9GUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx MTYKLS0jIGRlZmluZSBSU0FfRl9SU0FfUFJJVkFURV9ERUNSWVBUICAgICAgICAgICAgICAgICAg ICAgICAgMTUwCi0tIyBkZWZpbmUgUlNBX0ZfUlNBX1BSSVZBVEVfRU5DUllQVCAgICAgICAgICAg ICAgICAgICAgICAgIDE1MQotKyMgZGVmaW5lIFJTQV9GX1JTQV9QUklWQVRFX0RFQ1JZUFQgICAg ICAgICAgICAgICAgICAgICAgICAxNTcKLSsjIGRlZmluZSBSU0FfRl9SU0FfUFJJVkFURV9FTkNS WVBUICAgICAgICAgICAgICAgICAgICAgICAgMTQ4Ci0gIyBkZWZpbmUgUlNBX0ZfUlNBX1BSSVZf REVDT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNwotICMgZGVmaW5lIFJTQV9GX1JT QV9QUklWX0VOQ09ERSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzgKLSAjIGRlZmluZSBS U0FfRl9SU0FfUFNTX1RPX0NUWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYyCi0tIyBk ZWZpbmUgUlNBX0ZfUlNBX1BVQkxJQ19ERUNSWVBUICAgICAgICAgICAgICAgICAgICAgICAgIDE1 MgotKyMgZGVmaW5lIFJTQV9GX1JTQV9QVUJMSUNfREVDUllQVCAgICAgICAgICAgICAgICAgICAg ICAgICAxNDkKLSAjIGRlZmluZSBSU0FfRl9SU0FfUFVCTElDX0VOQ1JZUFQgICAgICAgICAgICAg ICAgICAgICAgICAgMTUzCi0gIyBkZWZpbmUgUlNBX0ZfUlNBX1BVQl9ERUNPREUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDEzOQotICMgZGVmaW5lIFJTQV9GX1JTQV9TRVRVUF9CTElORElO RyAgICAgICAgICAgICAgICAgICAgICAgICAxMzYKLSsjIGRlZmluZSBSU0FfRl9SU0FfU0VUX0RF RkFVTFRfTUVUSE9EICAgICAgICAgICAgICAgICAgICAgMTUwCi0rIyBkZWZpbmUgUlNBX0ZfUlNB X1NFVF9NRVRIT0QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MQotICMgZGVmaW5lIFJT QV9GX1JTQV9TSUdOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTcKLSAjIGRl ZmluZSBSU0FfRl9SU0FfU0lHTl9BU04xX09DVEVUX1NUUklORyAgICAgICAgICAgICAgICAgMTE4 Ci0gIyBkZWZpbmUgUlNBX0ZfUlNBX1ZFUklGWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDExOQotICMgZGVmaW5lIFJTQV9GX1JTQV9WRVJJRllfQVNOMV9PQ1RFVF9TVFJJTkcgICAg ICAgICAgICAgICAxMjAKLSAjIGRlZmluZSBSU0FfRl9SU0FfVkVSSUZZX1BLQ1MxX1BTUyAgICAg ICAgICAgICAgICAgICAgICAgMTI2Ci0tIyBkZWZpbmUgUlNBX0ZfUlNBX1ZFUklGWV9QS0NTMV9Q U1NfTUdGMSAgICAgICAgICAgICAgICAgIDE0OQotKyMgZGVmaW5lIFJTQV9GX1JTQV9WRVJJRllf UEtDUzFfUFNTX01HRjEgICAgICAgICAgICAgICAgICAxNTIKLSAKLSAvKiBSZWFzb24gY29kZXMu ICovCi0gIyBkZWZpbmUgUlNBX1JfQUxHT1JJVEhNX01JU01BVENIICAgICAgICAgICAgICAgICAg ICAgICAgIDEwMAotQEAgLTYyMCwyMSArNjMxLDIyIEBAIHZvaWQgRVJSX2xvYWRfUlNBX3N0cmlu Z3Modm9pZCk7Ci0gIyBkZWZpbmUgUlNBX1JfSU5WQUxJRF9PQUVQX1BBUkFNRVRFUlMgICAgICAg ICAgICAgICAgICAgIDE2MgotICMgZGVmaW5lIFJTQV9SX0lOVkFMSURfUEFERElORyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxMzgKLSAjIGRlZmluZSBSU0FfUl9JTlZBTElEX1BBRERJTkdf TU9ERSAgICAgICAgICAgICAgICAgICAgICAgMTQxCi0tIyBkZWZpbmUgUlNBX1JfSU5WQUxJRF9Q U1NfUEFSQU1FVEVSUyAgICAgICAgICAgICAgICAgICAgIDE0OQotKyMgZGVmaW5lIFJTQV9SX0lO VkFMSURfUFNTX1BBUkFNRVRFUlMgICAgICAgICAgICAgICAgICAgICAxNTcKLSAjIGRlZmluZSBS U0FfUl9JTlZBTElEX1BTU19TQUxUTEVOICAgICAgICAgICAgICAgICAgICAgICAgMTQ2Ci0tIyBk ZWZpbmUgUlNBX1JfSU5WQUxJRF9TQUxUX0xFTkdUSCAgICAgICAgICAgICAgICAgICAgICAgIDE1 MAotKyMgZGVmaW5lIFJTQV9SX0lOVkFMSURfU0FMVF9MRU5HVEggICAgICAgICAgICAgICAgICAg ICAgICAxNTgKLSAjIGRlZmluZSBSU0FfUl9JTlZBTElEX1RSQUlMRVIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTM5Ci0gIyBkZWZpbmUgUlNBX1JfSU5WQUxJRF9YOTMxX0RJR0VTVCAgICAg ICAgICAgICAgICAgICAgICAgIDE0MgotICMgZGVmaW5lIFJTQV9SX0lRTVBfTk9UX0lOVkVSU0Vf T0ZfUSAgICAgICAgICAgICAgICAgICAgICAxMjYKLSAjIGRlZmluZSBSU0FfUl9LRVlfU0laRV9U T09fU01BTEwgICAgICAgICAgICAgICAgICAgICAgICAgMTIwCi0gIyBkZWZpbmUgUlNBX1JfTEFT VF9PQ1RFVF9JTlZBTElEICAgICAgICAgICAgICAgICAgICAgICAgIDEzNAotICMgZGVmaW5lIFJT QV9SX01PRFVMVVNfVE9PX0xBUkdFICAgICAgICAgICAgICAgICAgICAgICAgICAxMDUKLS0jIGRl ZmluZSBSU0FfUl9OT05fRklQU19SU0FfTUVUSE9EICAgICAgICAgICAgICAgICAgICAgICAgMTU3 Ci0rIyBkZWZpbmUgUlNBX1JfTk9OX0ZJUFNfUlNBX01FVEhPRCAgICAgICAgICAgICAgICAgICAg ICAgIDE0OQotKyMgZGVmaW5lIFJTQV9SX05PTl9GSVBTX01FVEhPRCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAxNDkKLSAjIGRlZmluZSBSU0FfUl9OT19QVUJMSUNfRVhQT05FTlQgICAgICAg ICAgICAgICAgICAgICAgICAgMTQwCi0gIyBkZWZpbmUgUlNBX1JfTlVMTF9CRUZPUkVfQkxPQ0tf TUlTU0lORyAgICAgICAgICAgICAgICAgIDExMwotICMgZGVmaW5lIFJTQV9SX05fRE9FU19OT1Rf RVFVQUxfUF9RICAgICAgICAgICAgICAgICAgICAgICAxMjcKLSAjIGRlZmluZSBSU0FfUl9PQUVQ X0RFQ09ESU5HX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgMTIxCi0tIyBkZWZpbmUgUlNB X1JfT1BFUkFUSU9OX05PVF9BTExPV0VEX0lOX0ZJUFNfTU9ERSAgICAgICAgIDE1OAotKyMgZGVm aW5lIFJTQV9SX09QRVJBVElPTl9OT1RfQUxMT1dFRF9JTl9GSVBTX01PREUgICAgICAgICAxNTAK LSAjIGRlZmluZSBSU0FfUl9PUEVSQVRJT05fTk9UX1NVUFBPUlRFRF9GT1JfVEhJU19LRVlUWVBF ICAgMTQ4Ci0gIyBkZWZpbmUgUlNBX1JfUEFERElOR19DSEVDS19GQUlMRUQgICAgICAgICAgICAg ICAgICAgICAgIDExNAotICMgZGVmaW5lIFJTQV9SX1BLQ1NfREVDT0RJTkdfRVJST1IgICAgICAg ICAgICAgICAgICAgICAgICAxNTkKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2Ev cnNhX2xpYi5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2FfbGliLmMKLS0tLSBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9saWIuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MTk6 MDAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2FfbGli LmMJMjAxNS0wNC0yMiAxNjowODo0MC4zMDMyNDU5MTQgKzAyMDAKLUBAIC04NCwyMyArODQsMjIg QEAgUlNBICpSU0FfbmV3KHZvaWQpCi0gCi0gdm9pZCBSU0Ffc2V0X2RlZmF1bHRfbWV0aG9kKGNv bnN0IFJTQV9NRVRIT0QgKm1ldGgpCi0gewotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgaWYg KEZJUFNfbW9kZSgpICYmICEobWV0aC0+ZmxhZ3MgJiBSU0FfRkxBR19GSVBTX01FVEhPRCkpIHsK LSsgICAgICAgIFJTQWVycihSU0FfRl9SU0FfU0VUX0RFRkFVTFRfTUVUSE9ELCBSU0FfUl9OT05f RklQU19NRVRIT0QpOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rI2VuZGlmCi0gICAgIGRl ZmF1bHRfUlNBX21ldGggPSBtZXRoOwotIH0KLSAKLSBjb25zdCBSU0FfTUVUSE9EICpSU0FfZ2V0 X2RlZmF1bHRfbWV0aG9kKHZvaWQpCi0gewotICAgICBpZiAoZGVmYXVsdF9SU0FfbWV0aCA9PSBO VUxMKSB7Ci0tI2lmZGVmIE9QRU5TU0xfRklQUwotLSAgICAgICAgaWYgKEZJUFNfbW9kZSgpKQot LSAgICAgICAgICAgIHJldHVybiBGSVBTX3JzYV9wa2NzMV9zc2xlYXkoKTsKLS0gICAgICAgIGVs c2UKLS0gICAgICAgICAgICByZXR1cm4gUlNBX1BLQ1MxX1NTTGVheSgpOwotLSNlbHNlCi0tIyBp ZmRlZiBSU0FfTlVMTAotKyNpZmRlZiBSU0FfTlVMTAotICAgICAgICAgZGVmYXVsdF9SU0FfbWV0 aCA9IFJTQV9udWxsX21ldGhvZCgpOwotLSMgZWxzZQotKyNlbHNlCi0gICAgICAgICBkZWZhdWx0 X1JTQV9tZXRoID0gUlNBX1BLQ1MxX1NTTGVheSgpOwotLSMgZW5kaWYKLSAjZW5kaWYKLSAgICAg fQotIAotQEAgLTExOSw2ICsxMTgsMTIgQEAgaW50IFJTQV9zZXRfbWV0aG9kKFJTQSAqcnNhLCBj b25zdCBSU0FfTQotICAgICAgKiB0byBkZWFsIHdpdGggd2hpY2ggRU5HSU5FIGl0IGNvbWVzIGZy b20uCi0gICAgICAqLwotICAgICBjb25zdCBSU0FfTUVUSE9EICptdG1wOwotKyNpZmRlZiBPUEVO U1NMX0ZJUFMKLSsgICAgaWYgKEZJUFNfbW9kZSgpICYmICEobWV0aC0+ZmxhZ3MgJiBSU0FfRkxB R19GSVBTX01FVEhPRCkpIHsKLSsgICAgICAgIFJTQWVycihSU0FfRl9SU0FfU0VUX01FVEhPRCwg UlNBX1JfTk9OX0ZJUFNfTUVUSE9EKTsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rI2Vu ZGlmCi0gICAgIG10bXAgPSByc2EtPm1ldGg7Ci0gICAgIGlmIChtdG1wLT5maW5pc2gpCi0gICAg ICAgICBtdG1wLT5maW5pc2gocnNhKTsKLUBAIC0xNjUsNiArMTcwLDE3IEBAIFJTQSAqUlNBX25l d19tZXRob2QoRU5HSU5FICplbmdpbmUpCi0gICAgICAgICB9Ci0gICAgIH0KLSAjZW5kaWYKLSsj aWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKHJldC0+bWV0aC0+ ZmxhZ3MgJiBSU0FfRkxBR19GSVBTX01FVEhPRCkpIHsKLSsgICAgICAgIFJTQWVycihSU0FfRl9S U0FfTkVXX01FVEhPRCwgUlNBX1JfTk9OX0ZJUFNfTUVUSE9EKTsKLSsjIGlmbmRlZiBPUEVOU1NM X05PX0VOR0lORQotKyAgICAgICAgaWYgKHJldC0+ZW5naW5lKQotKyAgICAgICAgICAgIEVOR0lO RV9maW5pc2gocmV0LT5lbmdpbmUpOwotKyMgZW5kaWYKLSsgICAgICAgIE9QRU5TU0xfZnJlZShy ZXQpOwotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsjZW5kaWYKLSAKLSAgICAgcmV0 LT5wYWQgPSAwOwotICAgICByZXQtPnZlcnNpb24gPSAwOwotQEAgLTE4Myw3ICsxOTksNyBAQCBS U0EgKlJTQV9uZXdfbWV0aG9kKEVOR0lORSAqZW5naW5lKQotICAgICByZXQtPmJsaW5kaW5nID0g TlVMTDsKLSAgICAgcmV0LT5tdF9ibGluZGluZyA9IE5VTEw7Ci0gICAgIHJldC0+YmlnbnVtX2Rh dGEgPSBOVUxMOwotLSAgICByZXQtPmZsYWdzID0gcmV0LT5tZXRoLT5mbGFncyAmIH5SU0FfRkxB R19OT05fRklQU19BTExPVzsKLSsgICAgcmV0LT5mbGFncyA9IHJldC0+bWV0aC0+ZmxhZ3M7Ci0g ICAgIGlmICghQ1JZUFRPX25ld19leF9kYXRhKENSWVBUT19FWF9JTkRFWF9SU0EsIHJldCwgJnJl dC0+ZXhfZGF0YSkpIHsKLSAjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCi0gICAgICAgICBpZiAo cmV0LT5lbmdpbmUpCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vcnNhL3JzYV9wbWV0 aC5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2FfcG1ldGguYwotLS0tIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX3BtZXRoLmMuZmlwcwkyMDE1LTAzLTE5IDE0OjMwOjM2 LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX3BtZXRo LmMJMjAxNS0wNC0yMiAxNjowODo0MC4zMDMyNDU5MTQgKzAyMDAKLUBAIC0yMjgsMjAgKzIyOCw2 IEBAIHN0YXRpYyBpbnQgcGtleV9yc2Ffc2lnbihFVlBfUEtFWV9DVFggKmMKLSAgICAgICAgICAg ICBSU0FlcnIoUlNBX0ZfUEtFWV9SU0FfU0lHTiwgUlNBX1JfSU5WQUxJRF9ESUdFU1RfTEVOR1RI KTsKLSAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICB9Ci0tI2lmZGVmIE9QRU5TU0xf RklQUwotLSAgICAgICAgaWYgKHJldCA+IDApIHsKLS0gICAgICAgICAgICB1bnNpZ25lZCBpbnQg c2xlbjsKLS0gICAgICAgICAgICByZXQgPSBGSVBTX3JzYV9zaWduX2RpZ2VzdChyc2EsIHRicywg dGJzbGVuLCByY3R4LT5tZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByY3R4LT5wYWRfbW9kZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByY3R4LT5zYWx0bGVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJjdHgtPm1nZjFtZCwgc2lnLCAmc2xlbik7Ci0tICAgICAgICAgICAgaWYgKHJldCA+IDApCi0t ICAgICAgICAgICAgICAgICpzaWdsZW4gPSBzbGVuOwotLSAgICAgICAgICAgIGVsc2UKLS0gICAg ICAgICAgICAgICAgKnNpZ2xlbiA9IDA7Ci0tICAgICAgICAgICAgcmV0dXJuIHJldDsKLS0gICAg ICAgIH0KLS0jZW5kaWYKLSAKLSAgICAgICAgIGlmIChFVlBfTURfdHlwZShyY3R4LT5tZCkgPT0g TklEX21kYzIpIHsKLSAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2x0bXA7Ci1AQCAtMzUzLDE3 ICszMzksNiBAQCBzdGF0aWMgaW50IHBrZXlfcnNhX3ZlcmlmeShFVlBfUEtFWV9DVFgKLSAgICAg fQotICNlbmRpZgotICAgICBpZiAocmN0eC0+bWQpIHsKLS0jaWZkZWYgT1BFTlNTTF9GSVBTCi0t ICAgICAgICBpZiAocnYgPiAwKSB7Ci0tICAgICAgICAgICAgcmV0dXJuIEZJUFNfcnNhX3Zlcmlm eV9kaWdlc3QocnNhLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRicywgdGJzbGVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJjdHgtPm1kLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJj dHgtPnBhZF9tb2RlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJjdHgtPnNhbHRsZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmN0eC0+bWdmMW1kLCBzaWcsIHNpZ2xlbik7Ci0tCi0tICAgICAgICB9Ci0tI2VuZGlmCi0g ICAgICAgICBpZiAocmN0eC0+cGFkX21vZGUgPT0gUlNBX1BLQ1MxX1BBRERJTkcpCi0gICAgICAg ICAgICAgcmV0dXJuIFJTQV92ZXJpZnkoRVZQX01EX3R5cGUocmN0eC0+bWQpLCB0YnMsIHRic2xl biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWcsIHNpZ2xlbiwgcnNhKTsKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9yc2EvcnNhX3NpZ24uYy5maXBzIG9wZW5zc2wt MS4wLjJhL2NyeXB0by9yc2EvcnNhX3NpZ24uYwotLS0tIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9y c2EvcnNhX3NpZ24uYy5maXBzCTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3JzYS9yc2Ffc2lnbi5jCTIwMTUtMDQtMjIgMTY6MDg6 NDAuMzAzMjQ1OTE0ICswMjAwCi1AQCAtMTMyLDcgKzEzMiwxMCBAQCBpbnQgUlNBX3NpZ24oaW50 IHR5cGUsIGNvbnN0IHVuc2lnbmVkIGNoCi0gICAgICAgICBpMmRfWDUwOV9TSUcoJnNpZywgJnAp OwotICAgICAgICAgcyA9IHRtcHM7Ci0gICAgIH0KLS0gICAgaSA9IFJTQV9wcml2YXRlX2VuY3J5 cHQoaSwgcywgc2lncmV0LCByc2EsIFJTQV9QS0NTMV9QQURESU5HKTsKLSsgICAgLyogTkI6IGNh bGwgdW5kZXJseWluZyBtZXRob2QgZGlyZWN0bHkgdG8gYXZvaWQgRklQUyBibG9ja2luZyAqLwot KyAgICBpID0gcnNhLT5tZXRoLT5yc2FfcHJpdl9lbmMgPyByc2EtPm1ldGgtPnJzYV9wcml2X2Vu YyhpLCBzLCBzaWdyZXQsIHJzYSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUlNBX1BLQ1MxX1BBRERJTkcpIDoKLSsgICAgICAgIDA7 Ci0gICAgIGlmIChpIDw9IDApCi0gICAgICAgICByZXQgPSAwOwotICAgICBlbHNlCi1AQCAtMTg4 LDggKzE5MSwxMCBAQCBpbnQgaW50X3JzYV92ZXJpZnkoaW50IGR0eXBlLCBjb25zdCB1bnNpCi0g ICAgIH0KLSAKLSAgICAgaWYgKChkdHlwZSA9PSBOSURfbWQ1X3NoYTEpICYmIHJtKSB7Ci0tICAg ICAgICBpID0gUlNBX3B1YmxpY19kZWNyeXB0KChpbnQpc2lnbGVuLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaWdidWYsIHJtLCByc2EsIFJTQV9QS0NTMV9QQURESU5HKTsKLSsg ICAgICAgIGkgPSByc2EtPm1ldGgtPnJzYV9wdWJfZGVjID8gcnNhLT5tZXRoLT5yc2FfcHViX2Rl YygoaW50KXNpZ2xlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaWdidWYsIHJtLCByc2EsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlNBX1BLQ1MxX1BBRERJ TkcpCi0rICAgICAgICAgICAgOiAwOwotICAgICAgICAgaWYgKGkgPD0gMCkKLSAgICAgICAgICAg ICByZXR1cm4gMDsKLSAgICAgICAgICpwcm1fbGVuID0gaTsKLUBAIC0yMDUsNyArMjEwLDExIEBA IGludCBpbnRfcnNhX3ZlcmlmeShpbnQgZHR5cGUsIGNvbnN0IHVuc2kKLSAgICAgICAgIFJTQWVy cihSU0FfRl9JTlRfUlNBX1ZFUklGWSwgUlNBX1JfSU5WQUxJRF9NRVNTQUdFX0xFTkdUSCk7Ci0g ICAgICAgICBnb3RvIGVycjsKLSAgICAgfQotLSAgICBpID0gUlNBX3B1YmxpY19kZWNyeXB0KChp bnQpc2lnbGVuLCBzaWdidWYsIHMsIHJzYSwgUlNBX1BLQ1MxX1BBRERJTkcpOwotKyAgICAvKiBO QjogY2FsbCB1bmRlcmx5aW5nIG1ldGhvZCBkaXJlY3RseSB0byBhdm9pZCBGSVBTIGJsb2NraW5n ICovCi0rICAgIGkgPSByc2EtPm1ldGgtPnJzYV9wdWJfZGVjID8gcnNhLT5tZXRoLT5yc2FfcHVi X2RlYygoaW50KXNpZ2xlbiwgc2lnYnVmLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgcnNhLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlNBX1BLQ1MxX1BBRERJTkcpIDoK LSsgICAgICAgIDA7Ci0gCi0gICAgIGlmIChpIDw9IDApCi0gICAgICAgICBnb3RvIGVycjsKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2NyeXB0by9zaGEvc2hhLmguZmlwcyBvcGVuc3NsLTEuMC4y YS9jcnlwdG8vc2hhL3NoYS5oCi0tLS0gb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3NoYS9zaGEuaC5m aXBzCTIwMTUtMDQtMjIgMTY6MDg6MzkuOTY0MjM3ODg4ICswMjAwCi0rKysgb3BlbnNzbC0xLjAu MmEvY3J5cHRvL3NoYS9zaGEuaAkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwNDI0NTkzOCArMDIwMAot QEAgLTEwNSw5ICsxMDUsNiBAQCB0eXBlZGVmIHN0cnVjdCBTSEFzdGF0ZV9zdCB7Ci0gfSBTSEFf Q1RYOwotIAotICMgaWZuZGVmIE9QRU5TU0xfTk9fU0hBMAotLSMgIGlmZGVmIE9QRU5TU0xfRklQ UwotLWludCBwcml2YXRlX1NIQV9Jbml0KFNIQV9DVFggKmMpOwotLSMgIGVuZGlmCi0gaW50IFNI QV9Jbml0KFNIQV9DVFggKmMpOwotIGludCBTSEFfVXBkYXRlKFNIQV9DVFggKmMsIGNvbnN0IHZv aWQgKmRhdGEsIHNpemVfdCBsZW4pOwotIGludCBTSEFfRmluYWwodW5zaWduZWQgY2hhciAqbWQs IFNIQV9DVFggKmMpOwotQEAgLTExNSw5ICsxMTIsNiBAQCB1bnNpZ25lZCBjaGFyICpTSEEoY29u c3QgdW5zaWduZWQgY2hhciAqCi0gdm9pZCBTSEFfVHJhbnNmb3JtKFNIQV9DVFggKmMsIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKmRhdGEpOwotICMgZW5kaWYKLSAjIGlmbmRlZiBPUEVOU1NMX05PX1NI QTEKLS0jICBpZmRlZiBPUEVOU1NMX0ZJUFMKLS1pbnQgcHJpdmF0ZV9TSEExX0luaXQoU0hBX0NU WCAqYyk7Ci0tIyAgZW5kaWYKLSBpbnQgU0hBMV9Jbml0KFNIQV9DVFggKmMpOwotIGludCBTSEEx X1VwZGF0ZShTSEFfQ1RYICpjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKLSBpbnQg U0hBMV9GaW5hbCh1bnNpZ25lZCBjaGFyICptZCwgU0hBX0NUWCAqYyk7Ci1AQCAtMTM5LDEwICsx MzMsNiBAQCB0eXBlZGVmIHN0cnVjdCBTSEEyNTZzdGF0ZV9zdCB7Ci0gfSBTSEEyNTZfQ1RYOwot IAotICMgaWZuZGVmIE9QRU5TU0xfTk9fU0hBMjU2Ci0tIyAgaWZkZWYgT1BFTlNTTF9GSVBTCi0t aW50IHByaXZhdGVfU0hBMjI0X0luaXQoU0hBMjU2X0NUWCAqYyk7Ci0taW50IHByaXZhdGVfU0hB MjU2X0luaXQoU0hBMjU2X0NUWCAqYyk7Ci0tIyAgZW5kaWYKLSBpbnQgU0hBMjI0X0luaXQoU0hB MjU2X0NUWCAqYyk7Ci0gaW50IFNIQTIyNF9VcGRhdGUoU0hBMjU2X0NUWCAqYywgY29uc3Qgdm9p ZCAqZGF0YSwgc2l6ZV90IGxlbik7Ci0gaW50IFNIQTIyNF9GaW5hbCh1bnNpZ25lZCBjaGFyICpt ZCwgU0hBMjU2X0NUWCAqYyk7Ci1AQCAtMTkyLDEwICsxODIsNiBAQCB0eXBlZGVmIHN0cnVjdCBT SEE1MTJzdGF0ZV9zdCB7Ci0gIyBlbmRpZgotIAotICMgaWZuZGVmIE9QRU5TU0xfTk9fU0hBNTEy Ci0tIyAgaWZkZWYgT1BFTlNTTF9GSVBTCi0taW50IHByaXZhdGVfU0hBMzg0X0luaXQoU0hBNTEy X0NUWCAqYyk7Ci0taW50IHByaXZhdGVfU0hBNTEyX0luaXQoU0hBNTEyX0NUWCAqYyk7Ci0tIyAg ZW5kaWYKLSBpbnQgU0hBMzg0X0luaXQoU0hBNTEyX0NUWCAqYyk7Ci0gaW50IFNIQTM4NF9VcGRh dGUoU0hBNTEyX0NUWCAqYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7Ci0gaW50IFNI QTM4NF9GaW5hbCh1bnNpZ25lZCBjaGFyICptZCwgU0hBNTEyX0NUWCAqYyk7Ci1kaWZmIC11cCBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vc2hhL3NoYV9sb2NsLmguZmlwcyBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vc2hhL3NoYV9sb2NsLmgKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vc2hhL3NoYV9s b2NsLmguZmlwcwkyMDE1LTA0LTIyIDE2OjA4OjM5Ljk2NjIzNzkzNSArMDIwMAotKysrIG9wZW5z c2wtMS4wLjJhL2NyeXB0by9zaGEvc2hhX2xvY2wuaAkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwNDI0 NTkzOCArMDIwMAotQEAgLTEyMywxMSArMTIzLDE0IEBAIHZvaWQgc2hhMV9ibG9ja19kYXRhX29y ZGVyKFNIQV9DVFggKmMsIGMKLSAjZGVmaW5lIElOSVRfREFUQV9oNCAweGMzZDJlMWYwVUwKLSAK LSAjaWZkZWYgU0hBXzAKLS1maXBzX21kX2luaXQoU0hBKQotK25vbmZpcHNfbWRfaW5pdChTSEEp Ci0gI2Vsc2UKLSBmaXBzX21kX2luaXRfY3R4KFNIQTEsIFNIQSkKLSAjZW5kaWYKLSB7Ci0rI2lm IGRlZmluZWQoU0hBXzEpICYmIGRlZmluZWQoT1BFTlNTTF9GSVBTKQotKyAgICBGSVBTX3NlbGZ0 ZXN0X2NoZWNrKCk7Ci0rI2VuZGlmCi0gICAgIG1lbXNldChjLCAwLCBzaXplb2YoKmMpKTsKLSAg ICAgYy0+aDAgPSBJTklUX0RBVEFfaDA7Ci0gICAgIGMtPmgxID0gSU5JVF9EQVRBX2gxOwotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3NoYS9zaGEyNTYuYy5maXBzIG9wZW5zc2wtMS4w LjJhL2NyeXB0by9zaGEvc2hhMjU2LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vc2hhL3No YTI1Ni5jLmZpcHMJMjAxNS0wMy0xOSAxNDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVu c3NsLTEuMC4yYS9jcnlwdG8vc2hhL3NoYTI1Ni5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMzA0MjQ1 OTM4ICswMjAwCi1AQCAtMTIsMTIgKzEyLDE5IEBACi0gCi0gIyBpbmNsdWRlIDxvcGVuc3NsL2Ny eXB0by5oPgotICMgaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KLSsjIGlmZGVmIE9QRU5TU0xfRklQ UwotKyMgIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyMgZW5kaWYKLSsKLSAjIGluY2x1ZGUg PG9wZW5zc2wvb3BlbnNzbHYuaD4KLSAKLSBjb25zdCBjaGFyIFNIQTI1Nl92ZXJzaW9uW10gPSAi U0hBLTI1NiIgT1BFTlNTTF9WRVJTSU9OX1BURVhUOwotIAotIGZpcHNfbWRfaW5pdF9jdHgoU0hB MjI0LCBTSEEyNTYpCi0gewotKyMgaWZkZWYgT1BFTlNTTF9GSVBTCi0rICAgIEZJUFNfc2VsZnRl c3RfY2hlY2soKTsKLSsjIGVuZGlmCi0gICAgIG1lbXNldChjLCAwLCBzaXplb2YoKmMpKTsKLSAg ICAgYy0+aFswXSA9IDB4YzEwNTllZDhVTDsKLSAgICAgYy0+aFsxXSA9IDB4MzY3Y2Q1MDdVTDsK LUBAIC0zMyw2ICs0MCw5IEBAIGZpcHNfbWRfaW5pdF9jdHgoU0hBMjI0LCBTSEEyNTYpCi0gCi0g Zmlwc19tZF9pbml0KFNIQTI1NikKLSB7Ci0rIyBpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgRklQ U19zZWxmdGVzdF9jaGVjaygpOwotKyMgZW5kaWYKLSAgICAgbWVtc2V0KGMsIDAsIHNpemVvZigq YykpOwotICAgICBjLT5oWzBdID0gMHg2YTA5ZTY2N1VMOwotICAgICBjLT5oWzFdID0gMHhiYjY3 YWU4NVVMOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3NoYS9zaGE1MTIuYy5maXBz IG9wZW5zc2wtMS4wLjJhL2NyeXB0by9zaGEvc2hhNTEyLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9j cnlwdG8vc2hhL3NoYTUxMi5jLmZpcHMJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vc2hhL3NoYTUxMi5jCTIwMTUtMDQtMjIgMTY6 MDg6NDAuMzA0MjQ1OTM4ICswMjAwCi1AQCAtNSw2ICs1LDEwIEBACi0gICogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LSAgKi8KLSAjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPgotKyNpZmRlZiBPUEVOU1NM X0ZJUFMKLSsjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgotKyNlbmRpZgotKwotICNpZiAhZGVm aW5lZChPUEVOU1NMX05PX1NIQSkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEE1MTIpCi0gLyot Ci0gICogSU1QTEVNRU5UQVRJT04gTk9URVMuCi1AQCAtNjIsNiArNjYsOSBAQCBjb25zdCBjaGFy IFNIQTUxMl92ZXJzaW9uW10gPSAiU0hBLTUxMiIKLSAKLSBmaXBzX21kX2luaXRfY3R4KFNIQTM4 NCwgU0hBNTEyKQotIHsKLSsjIGlmZGVmIE9QRU5TU0xfRklQUwotKyAgICBGSVBTX3NlbGZ0ZXN0 X2NoZWNrKCk7Ci0rIyBlbmRpZgotICAgICBjLT5oWzBdID0gVTY0KDB4Y2JiYjlkNWRjMTA1OWVk OCk7Ci0gICAgIGMtPmhbMV0gPSBVNjQoMHg2MjlhMjkyYTM2N2NkNTA3KTsKLSAgICAgYy0+aFsy XSA9IFU2NCgweDkxNTkwMTVhMzA3MGRkMTcpOwotQEAgLTgwLDYgKzg3LDkgQEAgZmlwc19tZF9p bml0X2N0eChTSEEzODQsIFNIQTUxMikKLSAKLSBmaXBzX21kX2luaXQoU0hBNTEyKQotIHsKLSsj IGlmZGVmIE9QRU5TU0xfRklQUwotKyAgICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7Ci0rIyBlbmRp ZgotICAgICBjLT5oWzBdID0gVTY0KDB4NmEwOWU2NjdmM2JjYzkwOCk7Ci0gICAgIGMtPmhbMV0g PSBVNjQoMHhiYjY3YWU4NTg0Y2FhNzNiKTsKLSAgICAgYy0+aFsyXSA9IFU2NCgweDNjNmVmMzcy ZmU5NGY4MmIpOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvY3J5cHRvL3docmxwb29sL3dwX2Rn c3QuYy5maXBzIG9wZW5zc2wtMS4wLjJhL2NyeXB0by93aHJscG9vbC93cF9kZ3N0LmMKLS0tLSBv cGVuc3NsLTEuMC4yYS9jcnlwdG8vd2hybHBvb2wvd3BfZGdzdC5jLmZpcHMJMjAxNS0wMy0xOSAx NDoxOTowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9jcnlwdG8vd2hybHBv b2wvd3BfZGdzdC5jCTIwMTUtMDQtMjIgMTY6MDg6NDAuMzA0MjQ1OTM4ICswMjAwCi1AQCAtNTUs NyArNTUsNyBAQAotICNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgotICNpbmNsdWRlIDxzdHJp bmcuaD4KLSAKLS1maXBzX21kX2luaXQoV0hJUkxQT09MKQotK25vbmZpcHNfbWRfaW5pdChXSElS TFBPT0wpCi0gewotICAgICBtZW1zZXQoYywgMCwgc2l6ZW9mKCpjKSk7Ci0gICAgIHJldHVybiAo MSk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9NYWtlZmlsZS5vcmcuZmlwcyBvcGVuc3NsLTEu MC4yYS9NYWtlZmlsZS5vcmcKLS0tLSBvcGVuc3NsLTEuMC4yYS9NYWtlZmlsZS5vcmcuZmlwcwky MDE1LTA0LTIyIDE2OjA4OjQwLjI3MDI0NTEzMyArMDIwMAotKysrIG9wZW5zc2wtMS4wLjJhL01h a2VmaWxlLm9yZwkyMDE1LTA0LTIyIDE2OjA4OjQwLjMwNDI0NTkzOCArMDIwMAotQEAgLTEzNyw2 ICsxMzcsOSBAQCBGSVBTQ0FOTElCPQotIAotIEJBU0VBRERSPQotIAotKyMgTm9uLWVtcHR5IGlm IEZJUFMgZW5hYmxlZAotK0ZJUFM9Ci0rCi0gRElSUz0gICBjcnlwdG8gc3NsIGVuZ2luZXMgYXBw cyB0ZXN0IHRvb2xzCi0gRU5HRElSUz0gY2Nnb3N0Ci0gU0hMSUJESVJTPSBjcnlwdG8gc3NsCi1A QCAtMTQ5LDcgKzE1Miw3IEBAIFNESVJTPSAgXAotIAlibiBlYyByc2EgZHNhIGVjZHNhIGRoIGVj ZGggZHNvIGVuZ2luZSBcCi0gCWJ1ZmZlciBiaW8gc3RhY2sgbGhhc2ggcmFuZCBlcnIgXAotIAll dnAgYXNuMSBwZW0geDUwOSB4NTA5djMgY29uZiB0eHRfZGIgcGtjczcgcGtjczEyIGNvbXAgb2Nz cCB1aSBrcmI1IFwKLS0JY21zIHBxdWV1ZSB0cyBqcGFrZSBzcnAgc3RvcmUgY21hYwotKwljbXMg cHF1ZXVlIHRzIGpwYWtlIHNycCBzdG9yZSBjbWFjIGZpcHMKLSAjIGtlZXAgaW4gbWluZCB0aGF0 IHRoZSBhYm92ZSBsaXN0IGlzIGFkanVzdGVkIGJ5IC4vQ29uZmlndXJlCi0gIyBhY2NvcmRpbmcg dG8gbm8teHh4IGFyZ3VtZW50cy4uLgotIAotQEAgLTIzOCw2ICsyNDEsNyBAQCBCVUlMREVOVj0J UExBVEZPUk09JyQoUExBVEZPUk0pJyBQUk9DRVNTCi0gCQlGSVBTTElCRElSPScke0ZJUFNMSUJE SVJ9JwkJCVwKLSAJCUZJUFNESVI9JyR7RklQU0RJUn0nCQkJCVwKLSAJCUZJUFNDQU5MSUI9IiQk e0ZJUFNDQU5MSUI6LSQoRklQU0NBTkxJQil9IglcCi0rCQlGSVBTPSIkJHtGSVBTOi0kKEZJUFMp fSIJXAotIAkJVEhJUz0kJHtUSElTOi0kQH0gTUFLRUZJTEU9TWFrZWZpbGUgTUFLRU9WRVJSSURF Uz0KLSAjIE1BS0VPVkVSUklERVM9IGVmZmVjdGl2ZWx5ICJlcXVhbGl6ZXMiIEdOVS1pc2ggYW5k IFN5c1YtaXNoIG1ha2UgZmxhdm9ycywKLSAjIHdoaWNoIGluIHR1cm4gZWxpbWluYXRlcyBhbWJp Z3VpdGllcyBpbiB2YXJpYWJsZSB0cmVhdG1lbnQgd2l0aCAtZS4KLWRpZmYgLXVwIG9wZW5zc2wt MS4wLjJhL3NzbC9zc2xfYWxncy5jLmZpcHMgb3BlbnNzbC0xLjAuMmEvc3NsL3NzbF9hbGdzLmMK LS0tLSBvcGVuc3NsLTEuMC4yYS9zc2wvc3NsX2FsZ3MuYy5maXBzCTIwMTUtMDMtMTkgMTQ6MzA6 MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvc3NsL3NzbF9hbGdzLmMJMjAx NS0wNC0yMiAxNjowODo0MC4zMDUyNDU5NjIgKzAyMDAKLUBAIC02NCw2ICs2NCwxMSBAQAotIGlu dCBTU0xfbGlicmFyeV9pbml0KHZvaWQpCi0gewotIAotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsg ICAgT1BFTlNTTF9pbml0X2xpYnJhcnkoKTsKLSsgICAgaWYgKCFGSVBTX21vZGUoKSkgewotKyNl bmRpZgotKwotICNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAgICAgRVZQX2FkZF9jaXBoZXIoRVZQ X2Rlc19jYmMoKSk7Ci0gICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlM19jYmMoKSk7Ci1A QCAtMTQyLDYgKzE0Nyw0OCBAQCBpbnQgU1NMX2xpYnJhcnlfaW5pdCh2b2lkKQotICAgICBFVlBf YWRkX2RpZ2VzdChFVlBfc2hhKCkpOwotICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfZHNzKCkpOwot ICNlbmRpZgotKyNpZmRlZiBPUEVOU1NMX0ZJUFMKLSsgICAgfSBlbHNlIHsKLSsjIGlmbmRlZiBP UEVOU1NMX05PX0RFUwotKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUzX2NiYygp KTsKLSsjIGVuZGlmCi0rIyBpZm5kZWYgT1BFTlNTTF9OT19BRVMKLSsgICAgICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9hZXNfMTI4X2NiYygpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9h ZXNfMTkyX2NiYygpKTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2NiYygp KTsKLSsgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2djbSgpKTsKLSsgICAgICAg IEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2djbSgpKTsKLSsjIGVuZGlmCi0rIyBpZm5kZWYg T1BFTlNTTF9OT19NRDUKLSsgICAgICAgIC8qIG5lZWRlZCBldmVuIGluIHRoZSBGSVBTIG1vZGUg Zm9yIFRMUyBNQUMgKi8KLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9tZDUoKSk7Ci0rICAg ICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9tZDUsICJzc2wyLW1kNSIpOwotKyAgICAgICAg RVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fbWQ1LCAic3NsMy1tZDUiKTsKLSsjIGVuZGlmCi0rIyBp Zm5kZWYgT1BFTlNTTF9OT19TSEEKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGExKCkp OyAvKiBSU0Egd2l0aCBzaGExICovCi0rICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9z aGExLCAic3NsMy1zaGExIik7Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9zaGEx V2l0aFJTQUVuY3J5cHRpb24sIFNOX3NoYTFXaXRoUlNBKTsKLSsjIGVuZGlmCi0rIyBpZm5kZWYg T1BFTlNTTF9OT19TSEEyNTYKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEyMjQoKSk7 Ci0rICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMjU2KCkpOwotKyMgZW5kaWYKLSsjIGlm bmRlZiBPUEVOU1NMX05PX1NIQTUxMgotKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTM4 NCgpKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGE1MTIoKSk7Ci0rIyBlbmRpZgot KyMgaWYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEEpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fRFNB KQotKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX2RzczEoKSk7IC8qIERTQSB3aXRoIHNoYTEg Ki8KLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhTSEExLCBTTl9kc2FX aXRoU0hBMV8yKTsKLSsgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhTSEEx LCAiRFNTMSIpOwotKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fZHNhV2l0aFNIQTEs ICJkc3MxIik7Ci0rIyBlbmRpZgotKyMgaWZuZGVmIE9QRU5TU0xfTk9fRUNEU0EKLSsgICAgICAg IEVWUF9hZGRfZGlnZXN0KEVWUF9lY2RzYSgpKTsKLSsjIGVuZGlmCi0rICAgIH0KLSsjZW5kaWYK LSAjaWZuZGVmIE9QRU5TU0xfTk9fQ09NUAotICAgICAvKgotICAgICAgKiBUaGlzIHdpbGwgaW5p dGlhbGlzZSB0aGUgYnVpbHQtaW4gY29tcHJlc3Npb24gYWxnb3JpdGhtcy4gVGhlIHZhbHVlCgpk aWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmEtcnBtYnVpbGQucGF0Y2ggYi9vcGVuc3NsLTEuMC4y YS1ycG1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjkyNTJmMS4u MDAwMDAwMAotLS0gYS9vcGVuc3NsLTEuMC4yYS1ycG1idWlsZC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDExNCArMCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUucnBt YnVpbGQgb3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlCi0tLS0gb3BlbnNzbC0xLjAuMmEvQ29uZmln dXJlLnJwbWJ1aWxkCTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3Bl bnNzbC0xLjAuMmEvQ29uZmlndXJlCTIwMTUtMDQtMjAgMTQ6MzU6MDMuNTE2MzE4MjUyICswMjAw Ci1AQCAtMzQ4LDggKzM0OCw4IEBAIG15ICV0YWJsZT0oCi0gIyMjIwotICMgKi1nZW5lcmljKiBp cyBlbmRpYW4tbmV1dHJhbCB0YXJnZXQsIGJ1dCAuL2NvbmZpZyBpcyBmcmVlIHRvCi0gIyB0aHJv dyBpbiAtRFtCTF1fRU5ESUFOLCB3aGljaGV2ZXIgYXBwcm9wcmlhdGUuLi4KLS0ibGludXgtZ2Vu ZXJpYzMyIiwiZ2NjOi1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5U OjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZf UFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpP UikuXCQoU0hMSUJfTUlOT1IpIiwKLS0ibGludXgtcHBjIiwJImdjYzotREJfRU5ESUFOIC1PMyAt V2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNf UklTQzEgREVTX1VOUk9MTDoke3BwYzMyX2FzbX06bGludXgzMjpkbGZjbjpsaW51eC1zaGFyZWQ6 LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsibGludXgtZ2Vu ZXJpYzMyIiwiZ2NjOi1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwt eixyZWxybyAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJP TEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9G TEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAotKyJsaW51eC1wcGMiLAkiZ2NjOi1EQl9F TkRJQU4gLVdhbGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJv IC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7 cHBjMzJfYXNtfTpsaW51eDMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzpcJChSUE1fT1BUX0ZM QUdTKTouc28uXCQoU0hMSUJfU09OQU1FVkVSKSIsCi0gCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjIE5v dGUgdGhhdCAtbWFyY2ggaXMgbm90IGFtb25nIGNvbXBpbGVyIG9wdGlvbnMgaW4gYmVsb3cgbGlu dXgtYXJtdjQKLUBAIC0zNzgsMzAgKzM3OCwzMCBAQCBteSAldGFibGU9KAotICMKLSAjICAgICAg IC4vQ29uZmlndXJlIGxpbnV4LWFybXY0IC1tYXJjaD1hcm12NiAtRF9fQVJNX01BWF9BUkNIX189 OAotICMKLS0ibGludXgtYXJtdjQiLAkiZ2NjOiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxk bDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjok e2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1Ip LlwkKFNITElCX01JTk9SKSIsCi0tImxpbnV4LWFhcmNoNjQiLCJnY2M6IC1PMyAtV2FsbDo6LURf UkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERF U19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthYXJjaDY0X2FzbX06bGludXg2NDpkbGZjbjpsaW51 eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsi bGludXgtYXJtdjQiLAkiZ2NjOi1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6 Oi1XbCwteixyZWxybyAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERF U19VTlJPTEwgQkZfUFRSOiR7YXJtdjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQo UlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAotKyJsaW51eC1hYXJjaDY0 IiwiZ2NjOi1ETF9FTkRJQU4gLVdhbGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDo6 LVdsLC16LHJlbHJvIC1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksg REVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FhcmNoNjRfYXNtfTpsaW51eDY0OmRsZmNuOmxp bnV4LXNoYXJlZDotZlBJQzpcJChSUE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09OQU1FVkVS KTo6OjY0IiwKLSAjIENvbmZpZ3VyZSBzY3JpcHQgYWRkcyBtaW5pbWFsbHkgcmVxdWlyZWQgLW1h cmNoIGZvciBhc3NlbWJseSBzdXBwb3J0LAotICMgaWYgbm8gLW1hcmNoIHdhcyBzcGVjaWZpZWQg YXQgY29tbWFuZCBsaW5lLiBtaXBzMzIgYW5kIG1pcHM2NCBiZWxvdwotICMgcmVmZXIgdG8gY29u dGVtcG9yYXJ5IE1JUFMgQXJjaGl0ZWN0dXJlIHNwZWNpZmljYXRpb25zLCBNSVBTMzIgYW5kCi0g IyBNSVBTNjQsIHJhdGhlciB0aGFuIHRvIGtlcm5lbCBiaXRuZXNzLgotLSJsaW51eC1taXBzMzIi LAkiZ2NjOi1tYWJpPTMyIC1PMyAtV2FsbCAtREJOX0RJVjNXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6 Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHtt aXBzMzJfYXNtfTpvMzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFK T1IpLlwkKFNITElCX01JTk9SKSIsCi0tImxpbnV4LW1pcHM2NCIsICAgImdjYzotbWFiaT1uMzIg LU8zIC1XYWxsIC1EQk5fRElWM1c6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVCBS QzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke21pcHM2NF9hc219 Om4zMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW1hYmk9bjMyOi5zby5cJChTSExJQl9NQUpP UikuXCQoU0hMSUJfTUlOT1IpOjo6MzIiLAotLSJsaW51eDY0LW1pcHM2NCIsICAgImdjYzotbWFi aT02NCAtTzMgLVdhbGwgLURCTl9ESVYzVzo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJf QklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHtt aXBzNjRfYXNtfTo2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW1hYmk9NjQ6LnNvLlwkKFNI TElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2NCIsCi0rImxpbnV4LW1pcHMzMiIsCSJnY2M6 LW1hYmk9MzIgLVdhbGwgXCQoUlBNX09QVF9GTEFHUykgLURCTl9ESVYzVzo6LURfUkVFTlRSQU5U OjotV2wsLXoscmVscm8gLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBE RVNfVU5ST0xMIEJGX1BUUjoke21pcHMzMl9hc219Om8zMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQ SUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAotKyJsaW51eC1t aXBzNjQiLCAgICJnY2M6LW1hYmk9bjMyIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpIC1EQk5fRElW M1c6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJvIC1sZGw6U0lYVFlfRk9VUl9CSVQgUkM0X0NI QVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHttaXBzNjRfYXNtfTpuMzI6 ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tYWJpPW4zMiBcJChSUE1fT1BUX0ZMQUdTKTouc28u XCQoU0hMSUJfU09OQU1FVkVSKTo6OjMyIiwKLSsibGludXg2NC1taXBzNjQiLCAgICJnY2M6LW1h Ymk9NjQgLVdhbGwgXCQoUlBNX09QVF9GTEFHUykgLURCTl9ESVYzVzo6LURfUkVFTlRSQU5UOjot V2wsLXoscmVscm8gLWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBE RVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bWlwczY0X2FzbX06NjQ6ZGxmY246bGludXgtc2hh cmVkOi1mUElDOi1tYWJpPTY0IFwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVW RVIpOjo6NjQiLAotICMjIyMgSUEtMzIgdGFyZ2V0cy4uLgotICJsaW51eC1pYTMyLWljYyIsCSJp Y2M6LURMX0VORElBTiAtTzI6Oi1EX1JFRU5UUkFOVDo6LWxkbCAtbm9fY3BwcnQ6Qk5fTExPTkcg JHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4 LXNoYXJlZDotS1BJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotLSJs aW51eC1lbGYiLAkiZ2NjOi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxs OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29w dHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElC X01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1lbGYiLAkiZ2NjOi1ETF9FTkRJQU4g LVdhbGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJvIC1sZGw6 Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRs ZmNuOmxpbnV4LXNoYXJlZDotZlBJQzpcJChSUE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09O QU1FVkVSKSIsCi0gImxpbnV4LWFvdXQiLAkiZ2NjOi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFt ZS1wb2ludGVyIC1tYXJjaD1pNDg2IC1XYWxsOjoodW5rbm93bik6OjpCTl9MTE9ORyAke3g4Nl9n Y2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfYXNtfTphLm91dCIsCi0gIyMjIwotLSJsaW51 eC1nZW5lcmljNjQiLCJnY2M6LU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9V Ul9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjok e25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwk KFNITElCX01JTk9SKSIsCi0tImxpbnV4LXBwYzY0IiwJImdjYzotbTY0IC1EQl9FTkRJQU4gLU8z IC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBS QzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGM2NF9hc219OmxpbnV4NjQ6ZGxmY246 bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5P Uik6Ojo2NCIsCi0tImxpbnV4LXBwYzY0bGUiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1PMyAtV2Fs bDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NI VU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiRwcGM2NF9hc206bGludXg2NGxlOmRsZmNuOmxpbnV4 LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6 IiwKLS0ibGludXgtaWE2NCIsCSJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAtTzMgLVdhbGw6Oi1E X1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfVU5ST0xM IERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hM SUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LWdlbmVyaWM2NCIsImdjYzotV2Fs bCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8gLWxkbDpTSVhU WV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZf UFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6 LnNvLlwkKFNITElCX1NPTkFNRVZFUik6Ojo2NCIsCi0rImxpbnV4LXBwYzY0IiwJImdjYzotbTY0 IC1EQl9FTkRJQU4gLVdhbGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDo6LVdsLC16 LHJlbHJvIC1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJ U0MxIERFU19VTlJPTEw6JHtwcGM2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1m UElDOi1tNjQgXCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUik6Ojo2NCIs Ci0rImxpbnV4LXBwYzY0bGUiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1XYWxsIFwkKFJQTV9PUFRf RkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOlNJWFRZX0ZPVVJfQklUX0xP TkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiRwcGM2NF9hc206bGlu dXg2NGxlOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0IFwkKFJQTV9PUFRfRkxBR1MpOi5z by5cJChTSExJQl9TT05BTUVWRVIpOjo6NjQiLAotKyJsaW51eC1pYTY0IiwJImdjYzotRExfRU5E SUFOIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAt bGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX0lOVDoke2lh NjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwk KFNITElCX1NPTkFNRVZFUikiLAotICJsaW51eC1pYTY0LWljYyIsImljYzotRExfRU5ESUFOIC1P MiAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsIC1ub19jcHBydDpTSVhUWV9GT1VSX0JJVF9MT05H IFJDNF9DSFVOSyBERVNfUklTQzEgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51eC1zaGFy ZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLS0ibGludXgt eDg2XzY0IiwJImdjYzotbTY0IC1ETF9FTkRJQU4gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1s ZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2 XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9N QUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQiLAotKyJsaW51eC14ODZfNjQiLAkiZ2NjOi1tNjQg LURMX0VORElBTiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXos cmVscm8gLWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJP TEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQgXCQoUlBN X09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUik6Ojo2NCIsCi0gImxpbnV4LXg4Nl82 NC1jbGFuZyIsCSJjbGFuZzogLW02NCAtRExfRU5ESUFOIC1PMyAtV2V2ZXJ5dGhpbmcgJGNsYW5n X2Rpc2FibGVkX3dhcm5pbmdzIC1RdW51c2VkLWFyZ3VtZW50czo6LURfUkVFTlRSQU5UOjotbGRs OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82 NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFK T1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKLSAibGludXgteDg2XzY0LWljYyIsICJpY2M6LURM X0VORElBTiAtTzI6Oi1EX1JFRU5UUkFOVDo6LWxkbCAtbm9fY3BwcnQ6U0lYVFlfRk9VUl9CSVRf TE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNu OmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6 Ojo2NCIsCi0gImxpbnV4LXgzMiIsCSJnY2M6LW14MzIgLURMX0VORElBTiAtTzMgLVdhbGw6Oi1E X1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBERVNf VU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbXgzMjou c28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OngzMiIsCi0tImxpbnV4NjQtczM5 MHgiLAkiZ2NjOi1tNjQgLURCX0VORElBTiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpT SVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6 JHtzMzkweF9hc219OjY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJ Ql9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQiLAotKyJsaW51eDY0LXMzOTB4IiwJImdjYzot bTY0IC1EQl9FTkRJQU4gLVdhbGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDo6LVds LC16LHJlbHJvIC1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVT X0lOVCBERVNfVU5ST0xMOiR7czM5MHhfYXNtfTo2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6 LW02NCBcJChSUE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09OQU1FVkVSKTo6OjY0IiwKLSAj IyMjIFNvIGNhbGxlZCAiaGlnaGdwcnMiIHRhcmdldCBmb3Igei9BcmNoaXRlY3R1cmUgQ1BVcwot ICMgIkhpZ2hncHJzIiBpcyBrZXJuZWwgZmVhdHVyZSBmaXJzdCBpbXBsZW1lbnRlZCBpbiBMaW51 eCAyLjYuMzIsIHNlZQotICMgL3Byb2MvY3B1aW5mby4gVGhlIGlkZWEgaXMgdG8gcHJlc2VydmUg bW9zdCBzaWduaWZpY2FudCBiaXRzIG9mCi1AQCAtNDE5LDEyICs0MTksMTIgQEAgbXkgJXRhYmxl PSgKLSAjIyMjIFNQQVJDIExpbnV4IHNldHVwcwotICMgUmF5IE1pbGxlciA8cmF5Lm1pbGxlckBj b21wdXRpbmctc2VydmljZXMub3hmb3JkLmFjLnVrPiBoYXMgcGF0aWVudGx5Ci0gIyBhc3Npc3Rl ZCB3aXRoIGRlYnVnZ2luZyBvZiBmb2xsb3dpbmcgdHdvIGNvbmZpZ3MuCi0tImxpbnV4LXNwYXJj djgiLCJnY2M6LW12OCAtREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAt REJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5L IERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJ Qzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1zcGFyY3Y4 IiwiZ2NjOi1tdjggLURCX0VORElBTiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKSAtREJOX0RJVjJX OjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9D SFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6 LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAotICMgaXQn cyBhIHJlYWwgbWVzcyB3aXRoIC1tY3B1PXVsdHJhc3BhcmMgb3B0aW9uIHVuZGVyIExpbnV4LCBi dXQKLSAjIC1XYSwtQXY4cGx1cyBzaG91bGQgZG8gdGhlIHRyaWNrIG5vIG1hdHRlciB3aGF0Lgot LSJsaW51eC1zcGFyY3Y5IiwiZ2NjOi1tMzIgLW1jcHU9dWx0cmFzcGFyYyAtREJfRU5ESUFOIC1P MyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtV2EsLUF2OHBsdXMgLURCTl9ESVYyVzo6LURf UkVFTlRSQU5UOlVMVFJBU1BBUkM6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVT X1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1t MzI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1zcGFyY3Y5 IiwiZ2NjOi1tMzIgLW1jcHU9dWx0cmFzcGFyYyAtREJfRU5ESUFOIC1XYWxsIFwkKFJQTV9PUFRf RkxBR1MpIC1XYSwtQXY4cGx1cyAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6VUxUUkFTUEFSQzot V2wsLXoscmVscm8gLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBC Rl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tMzIgXCQoUlBN X09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAotICMgR0NDIDMuMSBpcyBhIHJl cXVpcmVtZW50Ci0tImxpbnV4NjQtc3BhcmN2OSIsImdjYzotbTY0IC1tY3B1PXVsdHJhc3BhcmMg LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDpV TFRSQVNQQVJDOi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BU UiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgt c2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojo2 NCIsCi0rImxpbnV4NjQtc3BhcmN2OSIsImdjYzotbTY0IC1tY3B1PXVsdHJhc3BhcmMgLURCX0VO RElBTiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOlVMVFJBU1BBUkM6LVds LC16LHJlbHJvIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BU UiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgt c2hhcmVkOi1mUElDOi1tNjQgXCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZF Uik6Ojo2NCIsCi0gIyMjIyBBbHBoYSBMaW51eCB3aXRoIEdOVSBDIGFuZCBDb21wYXEgQyBzZXR1 cHMKLSAjIFNwZWNpYWwgbm90ZXM6Ci0gIyAtIGxpbnV4LWFscGhhK2J3eC1nY2MgaXMgbWVudCB0 byBiZSB1c2VkIGZyb20gLi9jb25maWcgb25seS4gSWYgeW91Ci1AQCAtMTczNyw3ICsxNzM3LDcg QEAgd2hpbGUgKDxJTj4pCi0gCWVsc2lmICgkc2hhcmVkX2V4dGVuc2lvbiBuZSAiIiAmJiAkc2hh cmVkX2V4dGVuc2lvbiA9fiAvXlwucyhbb2xdKVwuW15cLl0qXC5bXlwuXSokLykKLSAJCXsKLSAJ CW15ICRzb3RtcCA9ICQxOwotLQkJcy9eU0hBUkVEX0xJQlNfTElOS19FWFRTPS4qL1NIQVJFRF9M SUJTX0xJTktfRVhUUz0ucyRzb3RtcC5cJChTSExJQl9NQUpPUikgLnMkc290bXAvOwotKwkJcy9e U0hBUkVEX0xJQlNfTElOS19FWFRTPS4qL1NIQVJFRF9MSUJTX0xJTktfRVhUUz0ucyRzb3RtcC5c JChTSExJQl9TT05BTUVWRVIpIC5zJHNvdG1wLzsKLSAJCX0KLSAJZWxzaWYgKCRzaGFyZWRfZXh0 ZW5zaW9uIG5lICIiICYmICRzaGFyZWRfZXh0ZW5zaW9uID1+IC9eXC5bXlwuXSpcLlteXC5dKlwu ZHlsaWIkLykKLSAJCXsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL01ha2VmaWxlLm9yZy5ycG1i dWlsZCBvcGVuc3NsLTEuMC4yYS9NYWtlZmlsZS5vcmcKLS0tLSBvcGVuc3NsLTEuMC4yYS9NYWtl ZmlsZS5vcmcucnBtYnVpbGQJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsr KyBvcGVuc3NsLTEuMC4yYS9NYWtlZmlsZS5vcmcJMjAxNS0wNC0yMCAxNDoxMTo1Mi4xNTI4NDcw OTMgKzAyMDAKLUBAIC0xMCw2ICsxMCw3IEBAIFNITElCX1ZFUlNJT05fSElTVE9SWT0KLSBTSExJ Ql9NQUpPUj0KLSBTSExJQl9NSU5PUj0KLSBTSExJQl9FWFQ9Ci0rU0hMSUJfU09OQU1FVkVSPTEw Ci0gUExBVEZPUk09ZGlzdAotIE9QVElPTlM9Ci0gQ09ORklHVVJFX0FSR1M9Ci1AQCAtMzM1LDEw ICszMzYsOSBAQCBjbGVhbi1zaGFyZWQ6Ci0gbGluay1zaGFyZWQ6Ci0gCUAgc2V0IC1lOyBmb3Ig aSBpbiAkKFNITElCRElSUyk7IGRvIFwKLSAJCSQoTUFLRSkgLWYgJChIRVJFKS9NYWtlZmlsZS5z aGFyZWQgLWUgJChCVUlMREVOVikgXAotLQkJCUxJQk5BTUU9JCRpIExJQlZFUlNJT049JChTSExJ Ql9NQUpPUikuJChTSExJQl9NSU5PUikgXAotKwkJCUxJQk5BTUU9JCRpIExJQlZFUlNJT049JChT SExJQl9TT05BTUVWRVIpIFwKLSAJCQlMSUJDT01QQVRWRVJTSU9OUz0iOyQoU0hMSUJfVkVSU0lP Tl9ISVNUT1JZKSIgXAotIAkJCXN5bWxpbmsuJChTSExJQl9UQVJHRVQpOyBcCi0tCQlsaWJzPSIk JGxpYnMgLWwkJGkiOyBcCi0gCWRvbmUKLSAKLSBidWlsZC1zaGFyZWQ6IGRvXyQoU0hMSUJfVEFS R0VUKSBsaW5rLXNoYXJlZAotQEAgLTM0OSw3ICszNDksNyBAQCBkb18kKFNITElCX1RBUkdFVCk6 Ci0gCQkJbGlicz0iJChMSUJLUkI1KSAkJGxpYnMiOyBcCi0gCQlmaTsgXAotIAkJJChDTEVBUkVO VikgJiYgJChNQUtFKSAtZiBNYWtlZmlsZS5zaGFyZWQgLWUgJChCVUlMREVOVikgXAotLQkJCUxJ Qk5BTUU9JCRpIExJQlZFUlNJT049JChTSExJQl9NQUpPUikuJChTSExJQl9NSU5PUikgXAotKwkJ CUxJQk5BTUU9JCRpIExJQlZFUlNJT049JChTSExJQl9TT05BTUVWRVIpIFwKLSAJCQlMSUJDT01Q QVRWRVJTSU9OUz0iOyQoU0hMSUJfVkVSU0lPTl9ISVNUT1JZKSIgXAotIAkJCUxJQkRFUFM9IiQk bGlicyAkKEVYX0xJQlMpIiBcCi0gCQkJbGlua19hLiQoU0hMSUJfVEFSR0VUKTsgXAoKZGlmZiAt LWdpdCBhL29wZW5zc2wtMS4wLjJhLXRydXN0ZWQtZmlyc3QtZG9jLnBhdGNoIGIvb3BlbnNzbC0x LjAuMmEtdHJ1c3RlZC1maXJzdC1kb2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDgzMzM3NTEuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMmEtdHJ1c3RlZC1maXJzdC1k b2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODYgKzAsMCBAQAotZGlmZiAtdXAgb3BlbnNz bC0xLjAuMmEvYXBwcy9jbXMuYy50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJhL2FwcHMvY21z LmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL2Ntcy5jLnRydXN0ZWQtZmlyc3QJMjAxNS0wMy0x OSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL2Ntcy5j CTIwMTUtMDQtMjIgMTY6MjU6MzEuODM5MTY0MDYxICswMjAwCi1AQCAtNjQ2LDYgKzY0Niw4IEBA IGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICAgICAgICAgICAgIi1D QXBhdGggZGlyICAgIHRydXN0ZWQgY2VydGlmaWNhdGVzIGRpcmVjdG9yeVxuIik7Ci0gICAgICAg ICBCSU9fcHJpbnRmKGJpb19lcnIsICItQ0FmaWxlIGZpbGUgICB0cnVzdGVkIGNlcnRpZmljYXRl cyBmaWxlXG4iKTsKLSAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKLSsgICAgICAgICAgICAg ICAgICAgIi10cnVzdGVkX2ZpcnN0IHVzZSB0cnVzdGVkIGNlcnRpZmljYXRlcyBmaXJzdCB3aGVu IGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpblxuIik7Ci0rICAgICAgICBCSU9fcHJpbnRmKGJpb19l cnIsCi0gICAgICAgICAgICAgICAgICAgICItY3JsX2NoZWNrICAgICBjaGVjayByZXZvY2F0aW9u IHN0YXR1cyBvZiBzaWduZXIncyBjZXJ0aWZpY2F0ZSB1c2luZyBDUkxzXG4iKTsKLSAgICAgICAg IEJJT19wcmludGYoYmlvX2VyciwKLSAgICAgICAgICAgICAgICAgICAgIi1jcmxfY2hlY2tfYWxs IGNoZWNrIHJldm9jYXRpb24gc3RhdHVzIG9mIHNpZ25lcidzIGNlcnRpZmljYXRlIGNoYWluIHVz aW5nIENSTHNcbiIpOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvYXBwcy9vY3NwLmMudHJ1c3Rl ZC1maXJzdCBvcGVuc3NsLTEuMC4yYS9hcHBzL29jc3AuYwotLS0tIG9wZW5zc2wtMS4wLjJhL2Fw cHMvb2NzcC5jLnRydXN0ZWQtZmlyc3QJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9hcHBzL29jc3AuYwkyMDE1LTA0LTIyIDE2OjI1OjMxLjg0 MDE2NDA4NSArMDIwMAotQEAgLTUzNiw2ICs1MzYsOCBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCi0gICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAg ICAgICItQ0FmaWxlIGZpbGUgICAgICAgICB0cnVzdGVkIGNlcnRpZmljYXRlcyBmaWxlXG4iKTsK LSAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKLSsgICAgICAgICAgICAgICAgICAgIi10cnVz dGVkX2ZpcnN0ICAgICAgIHVzZSB0cnVzdGVkIGNlcnRpZmljYXRlcyBmaXJzdCB3aGVuIGJ1aWxk aW5nIHRoZSB0cnVzdCBjaGFpblxuIik7Ci0rICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0g ICAgICAgICAgICAgICAgICAgICItVkFmaWxlIGZpbGUgICAgICAgICB2YWxpZGF0b3IgY2VydGlm aWNhdGVzIGZpbGVcbiIpOwotICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAotICAgICAgICAg ICAgICAgICAgICAiLXZhbGlkaXR5X3BlcmlvZCBuICAgbWF4aW11bSB2YWxpZGl0eSBkaXNjcmVw YW5jeSBpbiBzZWNvbmRzXG4iKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19jbGll bnQuYy50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJhL2FwcHMvc19jbGllbnQuYwotLS0tIG9w ZW5zc2wtMS4wLjJhL2FwcHMvc19jbGllbnQuYy50cnVzdGVkLWZpcnN0CTIwMTUtMDQtMjIgMTY6 MjU6MzEuNzk5MTYzMTE1ICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX2NsaWVudC5j CTIwMTUtMDQtMjIgMTY6MjU6MzEuODQwMTY0MDg1ICswMjAwCi1AQCAtMzMzLDYgKzMzMyw4IEBA IHN0YXRpYyB2b2lkIHNjX3VzYWdlKHZvaWQpCi0gICAgIEJJT19wcmludGYoYmlvX2VyciwgIiAt Q0FwYXRoIGFyZyAgIC0gUEVNIGZvcm1hdCBkaXJlY3Rvcnkgb2YgQ0Enc1xuIik7Ci0gICAgIEJJ T19wcmludGYoYmlvX2VyciwgIiAtQ0FmaWxlIGFyZyAgIC0gUEVNIGZvcm1hdCBmaWxlIG9mIENB J3NcbiIpOwotICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0rICAgICAgICAgICAgICAgIiAtdHJ1 c3RlZF9maXJzdCAtIFVzZSB0cnVzdGVkIENBJ3MgZmlyc3Qgd2hlbiBidWlsZGluZyB0aGUgdHJ1 c3QgY2hhaW5cbiIpOwotKyAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAg IiAtcmVjb25uZWN0ICAgIC0gRHJvcCBhbmQgcmUtbWFrZSB0aGUgY29ubmVjdGlvbiB3aXRoIHRo ZSBzYW1lIFNlc3Npb24tSURcbiIpOwotICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAg ICAgICAgICAgIiAtcGF1c2UgICAgICAgIC0gc2xlZXAoMSkgYWZ0ZXIgZWFjaCByZWFkKDIpIGFu ZCB3cml0ZSgyKSBzeXN0ZW0gY2FsbFxuIik7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBz L3NtaW1lLmMudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4yYS9hcHBzL3NtaW1lLmMKLS0tLSBv cGVuc3NsLTEuMC4yYS9hcHBzL3NtaW1lLmMudHJ1c3RlZC1maXJzdAkyMDE1LTAzLTE5IDE0OjMw OjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJhL2FwcHMvc21pbWUuYwkyMDE1 LTA0LTIyIDE2OjI1OjMxLjg0MDE2NDA4NSArMDIwMAotQEAgLTQ0Miw2ICs0NDIsOCBAQCBpbnQg TUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICAgICAgICAgICAgICItQ0FwYXRo IGRpciAgICB0cnVzdGVkIGNlcnRpZmljYXRlcyBkaXJlY3RvcnlcbiIpOwotICAgICAgICAgQklP X3ByaW50ZihiaW9fZXJyLCAiLUNBZmlsZSBmaWxlICAgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgZmls ZVxuIik7Ci0gICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0rICAgICAgICAgICAgICAgICAg ICItdHJ1c3RlZF9maXJzdCB1c2UgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgZmlyc3Qgd2hlbiBidWls ZGluZyB0aGUgdHJ1c3QgY2hhaW5cbiIpOwotKyAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAot ICAgICAgICAgICAgICAgICAgICAiLWNybF9jaGVjayAgICAgY2hlY2sgcmV2b2NhdGlvbiBzdGF0 dXMgb2Ygc2lnbmVyJ3MgY2VydGlmaWNhdGUgdXNpbmcgQ1JMc1xuIik7Ci0gICAgICAgICBCSU9f cHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAgICAgICItY3JsX2NoZWNrX2FsbCBjaGVj ayByZXZvY2F0aW9uIHN0YXR1cyBvZiBzaWduZXIncyBjZXJ0aWZpY2F0ZSBjaGFpbiB1c2luZyBD UkxzXG4iKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMvc19zZXJ2ZXIuYy50cnVzdGVk LWZpcnN0IG9wZW5zc2wtMS4wLjJhL2FwcHMvc19zZXJ2ZXIuYwotLS0tIG9wZW5zc2wtMS4wLjJh L2FwcHMvc19zZXJ2ZXIuYy50cnVzdGVkLWZpcnN0CTIwMTUtMDQtMjIgMTY6MjU6MzEuODA2MTYz MjgxICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX3NlcnZlci5jCTIwMTUtMDQtMjIg MTY6MjU6MzEuODQxMTY0MTA4ICswMjAwCi1AQCAtNTY5LDYgKzU2OSw4IEBAIHN0YXRpYyB2b2lk IHN2X3VzYWdlKHZvaWQpCi0gICAgIEJJT19wcmludGYoYmlvX2VyciwgIiAtQ0FwYXRoIGFyZyAg IC0gUEVNIGZvcm1hdCBkaXJlY3Rvcnkgb2YgQ0Enc1xuIik7Ci0gICAgIEJJT19wcmludGYoYmlv X2VyciwgIiAtQ0FmaWxlIGFyZyAgIC0gUEVNIGZvcm1hdCBmaWxlIG9mIENBJ3NcbiIpOwotICAg ICBCSU9fcHJpbnRmKGJpb19lcnIsCi0rICAgICAgICAgICAgICAgIiAtdHJ1c3RlZF9maXJzdCAt IFVzZSB0cnVzdGVkIENBJ3MgZmlyc3Qgd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW5cbiIp OwotKyAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0gICAgICAgICAgICAgICAgIiAtbm9jZXJ0ICAg ICAgIC0gRG9uJ3QgdXNlIGFueSBjZXJ0aWZpY2F0ZXMgKEFub24tREgpXG4iKTsKLSAgICAgQklP X3ByaW50ZihiaW9fZXJyLAotICAgICAgICAgICAgICAgICIgLWNpcGhlciBhcmcgICAtIHBsYXkg d2l0aCAnb3BlbnNzbCBjaXBoZXJzJyB0byBzZWUgd2hhdCBnb2VzIGhlcmVcbiIpOwotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMmEvYXBwcy9zX3RpbWUuYy50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4w LjJhL2FwcHMvc190aW1lLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL3NfdGltZS5jLnRydXN0 ZWQtZmlyc3QJMjAxNS0wNC0yMiAxNjoyNTozMS43NTUxNjIwNzUgKzAyMDAKLSsrKyBvcGVuc3Ns LTEuMC4yYS9hcHBzL3NfdGltZS5jCTIwMTUtMDQtMjIgMTY6MjU6MzEuODQxMTY0MTA4ICswMjAw Ci1AQCAtMTgyLDYgKzE4Miw3IEBAIHN0YXRpYyB2b2lkIHNfdGltZV91c2FnZSh2b2lkKQotICAg ICAgICAgICAgICAgICBmaWxlIGlmIG5vdCBzcGVjaWZpZWQgYnkgdGhpcyBvcHRpb25cblwKLSAt Q0FwYXRoIGFyZyAgIC0gUEVNIGZvcm1hdCBkaXJlY3Rvcnkgb2YgQ0Enc1xuXAotIC1DQWZpbGUg YXJnICAgLSBQRU0gZm9ybWF0IGZpbGUgb2YgQ0Enc1xuXAotKy10cnVzdGVkX2ZpcnN0IC0gVXNl IHRydXN0ZWQgQ0EncyBmaXJzdCB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpblxuXAotIC1j aXBoZXIgICAgICAgLSBwcmVmZXJyZWQgY2lwaGVyIHRvIHVzZSwgcGxheSB3aXRoICdvcGVuc3Ns IGNpcGhlcnMnXG5cbiI7Ci0gCi0gICAgIHByaW50ZigidXNhZ2U6IHNfdGltZSA8YXJncz5cblxu Iik7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4yYS9hcHBzL3RzLmMudHJ1c3RlZC1maXJzdCBvcGVu c3NsLTEuMC4yYS9hcHBzL3RzLmMKLS0tLSBvcGVuc3NsLTEuMC4yYS9hcHBzL3RzLmMudHJ1c3Rl ZC1maXJzdAkyMDE1LTA0LTIyIDE2OjI1OjMxLjc5NzE2MzA2OCArMDIwMAotKysrIG9wZW5zc2wt MS4wLjJhL2FwcHMvdHMuYwkyMDE1LTA0LTIyIDE2OjI1OjMxLjg0MTE2NDEwOCArMDIwMAotQEAg LTM1Miw3ICszNTIsNyBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAg ICAgICAgICAgInRzIC12ZXJpZnkgWy1kYXRhIGZpbGVfdG9faGFzaF0gWy1kaWdlc3QgZGlnZXN0 X2J5dGVzXSAiCi0gICAgICAgICAgICAgICAgIlstcXVlcnlmaWxlIHJlcXVlc3QudHNxXSAiCi0g ICAgICAgICAgICAgICAgIi1pbiByZXNwb25zZS50c3IgWy10b2tlbl9pbl0gIgotLSAgICAgICAg ICAgICAgICItQ0FwYXRoIGNhX3BhdGggLUNBZmlsZSBjYV9maWxlLnBlbSAiCi0rICAgICAgICAg ICAgICAgIi1DQXBhdGggY2FfcGF0aCAtQ0FmaWxlIGNhX2ZpbGUucGVtIC10cnVzdGVkX2ZpcnN0 IgotICAgICAgICAgICAgICAgICItdW50cnVzdGVkIGNlcnRfZmlsZS5wZW1cbiIpOwotICBjbGVh bnVwOgotICAgICAvKiBDbGVhbiB1cC4gKi8KLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2FwcHMv dmVyaWZ5LmMudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4yYS9hcHBzL3ZlcmlmeS5jCi0tLS0g b3BlbnNzbC0xLjAuMmEvYXBwcy92ZXJpZnkuYy50cnVzdGVkLWZpcnN0CTIwMTUtMDMtMTkgMTQ6 MzA6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvYXBwcy92ZXJpZnkuYwky MDE1LTA0LTIyIDE2OjI1OjMxLjg0MTE2NDEwOCArMDIwMAotQEAgLTIzMSw3ICsyMzEsNyBAQCBp bnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gIGVuZDoKLSAgICAgaWYgKHJldCA9PSAx KSB7Ci0gICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCi0tICAgICAgICAgICAgICAgICAgICJ1 c2FnZTogdmVyaWZ5IFstdmVyYm9zZV0gWy1DQXBhdGggcGF0aF0gWy1DQWZpbGUgZmlsZV0gWy1w dXJwb3NlIHB1cnBvc2VdIFstY3JsX2NoZWNrXSIpOwotKyAgICAgICAgICAgICAgICAgICAidXNh Z2U6IHZlcmlmeSBbLXZlcmJvc2VdIFstQ0FwYXRoIHBhdGhdIFstQ0FmaWxlIGZpbGVdIFstdHJ1 c3RlZF9maXJzdF0gWy1wdXJwb3NlIHB1cnBvc2VdIFstY3JsX2NoZWNrXSIpOwotICAgICAgICAg QklPX3ByaW50ZihiaW9fZXJyLCAiIFstYXR0aW1lIHRpbWVzdGFtcF0iKTsKLSAjaWZuZGVmIE9Q RU5TU0xfTk9fRU5HSU5FCi0gICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICIgWy1lbmdpbmUg ZV0iKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL2Ntcy5wb2QudHJ1c3RlZC1m aXJzdCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9jbXMucG9kCi0tLS0gb3BlbnNzbC0xLjAuMmEv ZG9jL2FwcHMvY21zLnBvZC50cnVzdGVkLWZpcnN0CTIwMTUtMDMtMTkgMTQ6MzA6MzYuMDAwMDAw MDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvY21zLnBvZAkyMDE1LTA0LTIy IDE2OjI1OjMxLjg0MjE2NDEzMiArMDIwMAotQEAgLTM1LDYgKzM1LDcgQEAgQjxvcGVuc3NsPiBC PGNtcz4KLSBbQjwtcHJpbnQ+XQotIFtCPC1DQWZpbGUgZmlsZT5dCi0gW0I8LUNBcGF0aCBkaXI+ XQotK1tCPC10cnVzdGVkX2ZpcnN0Pl0KLSBbQjwtbWQgZGlnZXN0Pl0KLSBbQjwtW2NpcGhlcl0+ XQotIFtCPC1ub2ludGVybj5dCi1AQCAtMjQ0LDYgKzI0NSwxMiBAQCBCPC12ZXJpZnk+LiBUaGlz IGRpcmVjdG9yeSBtdXN0IGJlIGEgc3RhCi0gaXMgYSBoYXNoIG9mIGVhY2ggc3ViamVjdCBuYW1l ICh1c2luZyBCPHg1MDkgLWhhc2g+KSBzaG91bGQgYmUgbGlua2VkCi0gdG8gZWFjaCBjZXJ0aWZp Y2F0ZS4KLSAKLSs9aXRlbSBCPC10cnVzdGVkX2ZpcnN0PgotKwotK1VzZSBjZXJ0aWZpY2F0ZXMg aW4gQ0EgZmlsZSBvciBDQSBkaXJlY3RvcnkgYmVmb3JlIHVudHJ1c3RlZCBjZXJ0aWZpY2F0ZXMK LStmcm9tIHRoZSBtZXNzYWdlIHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluIHRvIHZlcmlm eSBjZXJ0aWZpY2F0ZXMuCi0rVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluIGVudmlyb25tZW50cyB3 aXRoIEJyaWRnZSBDQSBvciBDcm9zcy1DZXJ0aWZpZWQgQ0FzLgotKwotID1pdGVtIEI8LW1kIGRp Z2VzdD4KLSAKLSBkaWdlc3QgYWxnb3JpdGhtIHRvIHVzZSB3aGVuIHNpZ25pbmcgb3IgcmVzaWdu aW5nLiBJZiBub3QgcHJlc2VudCB0aGVuIHRoZQotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvZG9j L2FwcHMvb2NzcC5wb2QudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9vY3Nw LnBvZAotLS0tIG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL29jc3AucG9kLnRydXN0ZWQtZmlyc3QJ MjAxNS0wNC0yMiAxNjoyNTozMS43OTgxNjMwOTIgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9k b2MvYXBwcy9vY3NwLnBvZAkyMDE1LTA0LTIyIDE2OjI1OjMxLjg0MjE2NDEzMiArMDIwMAotQEAg LTI5LDYgKzI5LDcgQEAgQjxvcGVuc3NsPiBCPG9jc3A+Ci0gW0I8LXBhdGg+XQotIFtCPC1DQXBh dGggZGlyPl0KLSBbQjwtQ0FmaWxlIGZpbGU+XQotK1tCPC10cnVzdGVkX2ZpcnN0Pl0KLSBbQjwt VkFmaWxlIGZpbGU+XQotIFtCPC12YWxpZGl0eV9wZXJpb2Qgbj5dCi0gW0I8LXN0YXR1c19hZ2Ug bj5dCi1AQCAtMTQzLDYgKzE0NCwxMyBAQCBjb25uZWN0aW9uIHRpbWVvdXQgdG8gdGhlIE9DU1Ag cmVzcG9uZGVyCi0gZmlsZSBvciBwYXRobmFtZSBjb250YWluaW5nIHRydXN0ZWQgQ0EgY2VydGlm aWNhdGVzLiBUaGVzZSBhcmUgdXNlZCB0byB2ZXJpZnkKLSB0aGUgc2lnbmF0dXJlIG9uIHRoZSBP Q1NQIHJlc3BvbnNlLgotIAotKz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+Ci0rCi0rVXNlIGNlcnRp ZmljYXRlcyBpbiBDQSBmaWxlIG9yIENBIGRpcmVjdG9yeSBvdmVyIGNlcnRpZmljYXRlcyBwcm92 aWRlZAotK2luIHRoZSByZXNwb25zZSBvciByZXNpZGluZyBpbiBvdGhlciBjZXJ0aWZpY2F0ZXMg ZmlsZSB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdAotK2NoYWluIHRvIHZlcmlmeSByZXNwb25kZXIg Y2VydGlmaWNhdGUuCi0rVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluIGVudmlyb25tZW50cyB3aXRo IEJyaWRnZSBDQSBvciBDcm9zcy1DZXJ0aWZpZWQgQ0FzLgotKwotID1pdGVtIEI8LXZlcmlmeV9v dGhlciBmaWxlPgotIAotIGZpbGUgY29udGFpbmluZyBhZGRpdGlvbmFsIGNlcnRpZmljYXRlcyB0 byBzZWFyY2ggd2hlbiBhdHRlbXB0aW5nIHRvIGxvY2F0ZQotZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmEvZG9jL2FwcHMvc19jbGllbnQucG9kLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmEvZG9j L2FwcHMvc19jbGllbnQucG9kCi0tLS0gb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvc19jbGllbnQu cG9kLnRydXN0ZWQtZmlyc3QJMjAxNS0wNC0yMiAxNjoyNTozMS44MTQxNjM0NzAgKzAyMDAKLSsr KyBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9zX2NsaWVudC5wb2QJMjAxNS0wNC0yMiAxNjoyNToz MS44NDMxNjQxNTYgKzAyMDAKLUBAIC0xOSw2ICsxOSw3IEBAIEI8b3BlbnNzbD4gQjxzX2NsaWVu dD4KLSBbQjwtcGFzcyBhcmc+XQotIFtCPC1DQXBhdGggZGlyZWN0b3J5Pl0KLSBbQjwtQ0FmaWxl IGZpbGVuYW1lPl0KLStbQjwtdHJ1c3RlZF9maXJzdD5dCi0gW0I8LXJlY29ubmVjdD5dCi0gW0I8 LXBhdXNlPl0KLSBbQjwtc2hvd2NlcnRzPl0KLUBAIC0xMjMsNyArMTI0LDcgQEAgYWxzbyB1c2Vk IHdoZW4gYnVpbGRpbmcgdGhlIGNsaWVudCBjZXJ0aQotIEEgZmlsZSBjb250YWluaW5nIHRydXN0 ZWQgY2VydGlmaWNhdGVzIHRvIHVzZSBkdXJpbmcgc2VydmVyIGF1dGhlbnRpY2F0aW9uCi0gYW5k IHRvIHVzZSB3aGVuIGF0dGVtcHRpbmcgdG8gYnVpbGQgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZSBj aGFpbi4KLSAKLS09aXRlbSBCPC1wdXJwb3NlLCAtaWdub3JlX2NyaXRpY2FsLCAtaXNzdWVyX2No ZWNrcywgLWNybF9jaGVjaywgLWNybF9jaGVja19hbGwsIC1wb2xpY3lfY2hlY2ssIC1leHRlbmRl ZF9jcmwsIC14NTA5X3N0cmljdCwgLXBvbGljeSAtY2hlY2tfc3Nfc2lnPgotKz1pdGVtIEI8LXB1 cnBvc2UsIC1pZ25vcmVfY3JpdGljYWwsIC1pc3N1ZXJfY2hlY2tzLCAtY3JsX2NoZWNrLCAtY3Js X2NoZWNrX2FsbCwgLXBvbGljeV9jaGVjaywgLWV4dGVuZGVkX2NybCwgLXg1MDlfc3RyaWN0LCAt cG9saWN5IC1jaGVja19zc19zaWcsIC10cnVzdGVkX2ZpcnN0PgotIAotIFNldCB2YXJpb3VzIGNl cnRpZmljYXRlIGNoYWluIHZhbGlhZGl0aW9uIG9wdGlvbi4gU2VlIHRoZQotIEw8Qjx2ZXJpZnk+ fHZlcmlmeSgxKT4gbWFudWFsIHBhZ2UgZm9yIGRldGFpbHMuCi1kaWZmIC11cCBvcGVuc3NsLTEu MC4yYS9kb2MvYXBwcy9zbWltZS5wb2QudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4yYS9kb2Mv YXBwcy9zbWltZS5wb2QKLS0tLSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9zbWltZS5wb2QudHJ1 c3RlZC1maXJzdAkyMDE1LTAxLTIwIDEzOjMzOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5z c2wtMS4wLjJhL2RvYy9hcHBzL3NtaW1lLnBvZAkyMDE1LTA0LTIyIDE2OjI1OjMxLjg0MzE2NDE1 NiArMDIwMAotQEAgLTE1LDYgKzE1LDkgQEAgQjxvcGVuc3NsPiBCPHNtaW1lPgotIFtCPC1wazdv dXQ+XQotIFtCPC1bY2lwaGVyXT5dCi0gW0I8LWluIGZpbGU+XQotK1tCPC1DQWZpbGUgZmlsZT5d Ci0rW0I8LUNBcGF0aCBkaXI+XQotK1tCPC10cnVzdGVkX2ZpcnN0Pl0KLSBbQjwtY2VydGZpbGUg ZmlsZT5dCi0gW0I8LXNpZ25lciBmaWxlPl0KLSBbQjwtcmVjaXAgIGZpbGU+XQotQEAgLTE0Niw2 ICsxNDksMTIgQEAgQjwtdmVyaWZ5Pi4gVGhpcyBkaXJlY3RvcnkgbXVzdCBiZSBhIHN0YQotIGlz IGEgaGFzaCBvZiBlYWNoIHN1YmplY3QgbmFtZSAodXNpbmcgQjx4NTA5IC1oYXNoPikgc2hvdWxk IGJlIGxpbmtlZAotIHRvIGVhY2ggY2VydGlmaWNhdGUuCi0gCi0rPWl0ZW0gQjwtdHJ1c3RlZF9m aXJzdD4KLSsKLStVc2UgY2VydGlmaWNhdGVzIGluIENBIGZpbGUgb3IgQ0EgZGlyZWN0b3J5IG92 ZXIgY2VydGlmaWNhdGVzIHByb3ZpZGVkCi0raW4gdGhlIG1lc3NhZ2Ugd2hlbiBidWlsZGluZyB0 aGUgdHJ1c3QgY2hhaW4gdG8gdmVyaWZ5IGEgY2VydGlmaWNhdGUuCi0rVGhpcyBpcyBtYWlubHkg dXNlZnVsIGluIGVudmlyb25tZW50cyB3aXRoIEJyaWRnZSBDQSBvciBDcm9zcy1DZXJ0aWZpZWQg Q0FzLgotKwotID1pdGVtIEI8LW1kIGRpZ2VzdD4KLSAKLSBkaWdlc3QgYWxnb3JpdGhtIHRvIHVz ZSB3aGVuIHNpZ25pbmcgb3IgcmVzaWduaW5nLiBJZiBub3QgcHJlc2VudCB0aGVuIHRoZQotZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvc19zZXJ2ZXIucG9kLnRydXN0ZWQtZmlyc3Qg b3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvc19zZXJ2ZXIucG9kCi0tLS0gb3BlbnNzbC0xLjAuMmEv ZG9jL2FwcHMvc19zZXJ2ZXIucG9kLnRydXN0ZWQtZmlyc3QJMjAxNS0wNC0yMiAxNjoyNTozMS44 MTQxNjM0NzAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9zX3NlcnZlci5wb2QJ MjAxNS0wNC0yMiAxNjoyNTozMS44NDMxNjQxNTYgKzAyMDAKLUBAIC0zMyw2ICszMyw3IEBAIEI8 b3BlbnNzbD4gQjxzX3NlcnZlcj4KLSBbQjwtc3RhdGU+XQotIFtCPC1DQXBhdGggZGlyZWN0b3J5 Pl0KLSBbQjwtQ0FmaWxlIGZpbGVuYW1lPl0KLStbQjwtdHJ1c3RlZF9maXJzdD5dCi0gW0I8LW5v Y2VydD5dCi0gW0I8LWNpcGhlciBjaXBoZXJsaXN0Pl0KLSBbQjwtc2VydmVycHJlZj5dCi1AQCAt MTc0LDYgKzE3NSwxMiBAQCBhbmQgdG8gdXNlIHdoZW4gYXR0ZW1wdGluZyB0byBidWlsZCB0aGUK LSBpcyBhbHNvIHVzZWQgaW4gdGhlIGxpc3Qgb2YgYWNjZXB0YWJsZSBjbGllbnQgQ0FzIHBhc3Nl ZCB0byB0aGUgY2xpZW50IHdoZW4KLSBhIGNlcnRpZmljYXRlIGlzIHJlcXVlc3RlZC4KLSAKLSs9 aXRlbSBCPC10cnVzdGVkX2ZpcnN0PgotKwotK1VzZSBjZXJ0aWZpY2F0ZXMgaW4gQ0EgZmlsZSBv ciBDQSBkaXJlY3RvcnkgYmVmb3JlIG90aGVyIGNlcnRpZmljYXRlcyAKLSt3aGVuIGJ1aWxkaW5n IHRoZSB0cnVzdCBjaGFpbiB0byB2ZXJpZnkgY2xpZW50IGNlcnRpZmljYXRlcy4KLStUaGlzIGlz IG1haW5seSB1c2VmdWwgaW4gZW52aXJvbm1lbnRzIHdpdGggQnJpZGdlIENBIG9yIENyb3NzLUNl cnRpZmllZCBDQXMuCi0rCi0gPWl0ZW0gQjwtc3RhdGU+Ci0gCi0gcHJpbnRzIG91dCB0aGUgU1NM IHNlc3Npb24gc3RhdGVzLgotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvc190aW1l LnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJhL2RvYy9hcHBzL3NfdGltZS5wb2QKLS0t LSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy9zX3RpbWUucG9kLnRydXN0ZWQtZmlyc3QJMjAxNS0w MS0xNSAxNTo0Mzo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4yYS9kb2MvYXBw cy9zX3RpbWUucG9kCTIwMTUtMDQtMjIgMTY6MjU6MzEuODQzMTY0MTU2ICswMjAwCi1AQCAtMTQs NiArMTQsNyBAQCBCPG9wZW5zc2w+IEI8c190aW1lPgotIFtCPC1rZXkgZmlsZW5hbWU+XQotIFtC PC1DQXBhdGggZGlyZWN0b3J5Pl0KLSBbQjwtQ0FmaWxlIGZpbGVuYW1lPl0KLStbQjwtdHJ1c3Rl ZF9maXJzdD5dCi0gW0I8LXJldXNlPl0KLSBbQjwtbmV3Pl0KLSBbQjwtdmVyaWZ5IGRlcHRoPl0K LUBAIC03Niw2ICs3NywxMiBAQCBhbHNvIHVzZWQgd2hlbiBidWlsZGluZyB0aGUgY2xpZW50IGNl cnRpCi0gQSBmaWxlIGNvbnRhaW5pbmcgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgdG8gdXNlIGR1cmlu ZyBzZXJ2ZXIgYXV0aGVudGljYXRpb24KLSBhbmQgdG8gdXNlIHdoZW4gYXR0ZW1wdGluZyB0byBi dWlsZCB0aGUgY2xpZW50IGNlcnRpZmljYXRlIGNoYWluLgotIAotKz1pdGVtIEI8LXRydXN0ZWRf Zmlyc3Q+Ci0rCi0rVXNlIGNlcnRpZmljYXRlcyBpbiBDQSBmaWxlIG9yIENBIGRpcmVjdG9yeSBv dmVyIHRoZSBjZXJ0aWZpY2F0ZXMgcHJvdmlkZWQKLStieSB0aGUgc2VydmVyIHdoZW4gYnVpbGRp bmcgdGhlIHRydXN0IGNoYWluIHRvIHZlcmlmeSBzZXJ2ZXIgY2VydGlmaWNhdGUuCi0rVGhpcyBp cyBtYWlubHkgdXNlZnVsIGluIGVudmlyb25tZW50cyB3aXRoIEJyaWRnZSBDQSBvciBDcm9zcy1D ZXJ0aWZpZWQgQ0FzLgotKwotID1pdGVtIEI8LW5ldz4KLSAKLSBwZXJmb3JtcyB0aGUgdGltaW5n IHRlc3QgdXNpbmcgYSBuZXcgc2Vzc2lvbiBJRCBmb3IgZWFjaCBjb25uZWN0aW9uLgotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvdHMucG9kLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0x LjAuMmEvZG9jL2FwcHMvdHMucG9kCi0tLS0gb3BlbnNzbC0xLjAuMmEvZG9jL2FwcHMvdHMucG9k LnRydXN0ZWQtZmlyc3QJMjAxNS0wMS0yMCAxMzozMzozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBv cGVuc3NsLTEuMC4yYS9kb2MvYXBwcy90cy5wb2QJMjAxNS0wNC0yMiAxNjoyNTozMS44NDMxNjQx NTYgKzAyMDAKLUBAIC00Niw2ICs0Niw3IEBAIEI8LXZlcmlmeT4KLSBbQjwtdG9rZW5faW4+XQot IFtCPC1DQXBhdGg+IHRydXN0ZWRfY2VydF9wYXRoXQotIFtCPC1DQWZpbGU+IHRydXN0ZWRfY2Vy dHMucGVtXQotK1tCPC10cnVzdGVkX2ZpcnN0Pl0KLSBbQjwtdW50cnVzdGVkPiBjZXJ0X2ZpbGUu cGVtXQotIAotID1oZWFkMSBERVNDUklQVElPTgotQEAgLTMyNCw2ICszMjUsMTIgQEAgTDx2ZXJp ZnkoMSl8dmVyaWZ5KDEpPiBmb3IgYWRkaXRpb25hbCBkZQotIG9yIEI8LUNBcGF0aD4gbXVzdCBi ZSBzcGVjaWZpZWQuCi0gKE9wdGlvbmFsKQotIAotKz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+Ci0r Ci0rVXNlIGNlcnRpZmljYXRlcyBpbiBDQSBmaWxlIG9yIENBIGRpcmVjdG9yeSBiZWZvcmUgb3Ro ZXIgY2VydGlmaWNhdGVzCi0rd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW4gdG8gdmVyaWZ5 IGNlcnRpZmljYXRlcy4KLStUaGlzIGlzIG1haW5seSB1c2VmdWwgaW4gZW52aXJvbm1lbnRzIHdp dGggQnJpZGdlIENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMuCi0rCi0gPWl0ZW0gQjwtdW50cnVz dGVkPiBjZXJ0X2ZpbGUucGVtCi0gCi0gU2V0IG9mIGFkZGl0aW9uYWwgdW50cnVzdGVkIGNlcnRp ZmljYXRlcyBpbiBQRU0gZm9ybWF0IHdoaWNoIG1heSBiZQotZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmEvZG9jL2FwcHMvdmVyaWZ5LnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJhL2RvYy9h cHBzL3ZlcmlmeS5wb2QKLS0tLSBvcGVuc3NsLTEuMC4yYS9kb2MvYXBwcy92ZXJpZnkucG9kLnRy dXN0ZWQtZmlyc3QJMjAxNS0wMy0xOSAxNDozMDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVu c3NsLTEuMC4yYS9kb2MvYXBwcy92ZXJpZnkucG9kCTIwMTUtMDQtMjIgMTY6MjU6MzEuODQzMTY0 MTU2ICswMjAwCi1AQCAtOSw2ICs5LDcgQEAgdmVyaWZ5IC0gVXRpbGl0eSB0byB2ZXJpZnkgY2Vy dGlmaWNhdGVzLgotIEI8b3BlbnNzbD4gQjx2ZXJpZnk+Ci0gW0I8LUNBcGF0aCBkaXJlY3Rvcnk+ XQotIFtCPC1DQWZpbGUgZmlsZT5dCi0rW0I8LXRydXN0ZWRfZmlyc3Q+XQotIFtCPC1wdXJwb3Nl IHB1cnBvc2U+XQotIFtCPC1wb2xpY3kgYXJnPl0KLSBbQjwtaWdub3JlX2NyaXRpY2FsPl0KLUBA IC03OCw2ICs3OSwxMiBAQCBJZiBhIHZhbGlkIENSTCBjYW5ub3QgYmUgZm91bmQgYW4gZXJyb3IK LSBBIGZpbGUgb2YgdW50cnVzdGVkIGNlcnRpZmljYXRlcy4gVGhlIGZpbGUgc2hvdWxkIGNvbnRh aW4gbXVsdGlwbGUgY2VydGlmaWNhdGVzCi0gaW4gUEVNIGZvcm1hdCBjb25jYXRlbmF0ZWQgdG9n ZXRoZXIuCi0gCi0rPWl0ZW0gQjwtdHJ1c3RlZF9maXJzdD4KLSsKLStVc2UgY2VydGlmaWNhdGVz IGluIENBIGZpbGUgb3IgQ0EgZGlyZWN0b3J5IGJlZm9yZSB0aGUgY2VydGlmaWNhdGVzIGluIHRo ZSB1bnRydXN0ZWQKLStmaWxlIHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluIHRvIHZlcmlm eSBjZXJ0aWZpY2F0ZXMuCi0rVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluIGVudmlyb25tZW50cyB3 aXRoIEJyaWRnZSBDQSBvciBDcm9zcy1DZXJ0aWZpZWQgQ0FzLgotKwotID1pdGVtIEI8LXB1cnBv c2UgcHVycG9zZT4KLSAKLSBUaGUgaW50ZW5kZWQgdXNlIGZvciB0aGUgY2VydGlmaWNhdGUuIElm IHRoaXMgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAu MmMtZGVmYXVsdC1wYXRocy5wYXRjaCBiL29wZW5zc2wtMS4wLjJjLWRlZmF1bHQtcGF0aHMucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE2MDdiZQotLS0gL2Rldi9u dWxsCisrKyBiL29wZW5zc2wtMS4wLjJjLWRlZmF1bHQtcGF0aHMucGF0Y2gKQEAgLTAsMCArMSw2 MyBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvYXBwcy9zX3NlcnZlci5jLmRlZmF1bHQtcGF0 aHMgb3BlbnNzbC0xLjAuMmMvYXBwcy9zX3NlcnZlci5jCistLS0gb3BlbnNzbC0xLjAuMmMvYXBw cy9zX3NlcnZlci5jLmRlZmF1bHQtcGF0aHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9hcHBzL3Nfc2VydmVyLmMJMjAxNS0wNi0xNSAxNzoy NDoxNy43NDc0NDY1MTUgKzAyMDAKK0BAIC0xNzg4LDEyICsxNzg4LDE2IEBAIGludCBNQUlOKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCisgICAgIH0KKyAjZW5kaWYKKyAKKy0gICAgaWYgKCghU1NM X0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY3R4LCBDQWZpbGUsIENBcGF0aCkpIHx8CistICAg ICAgICAoIVNTTF9DVFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKGN0eCkpKSB7CistICAgICAg ICAvKiBCSU9fcHJpbnRmKGJpb19lcnIsIlg1MDlfbG9hZF92ZXJpZnlfbG9jYXRpb25zXG4iKTsg Ki8KKy0gICAgICAgIEVSUl9wcmludF9lcnJvcnMoYmlvX2Vycik7CistICAgICAgICAvKiBnb3Rv IGVuZDsgKi8KKysgICAgaWYgKENBZmlsZSA9PSBOVUxMICYmIENBcGF0aCA9PSBOVUxMKSB7Cisr ICAgICAgICBpZiAoIVNTTF9DVFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKGN0eCkpIHsKKysg ICAgICAgICAgICBFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOworKyAgICAgICAgfQorKyAgICB9 IGVsc2UgeworKyAgICAgICAgaWYgKCFTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjdHgs IENBZmlsZSwgQ0FwYXRoKSkgeworKyAgICAgICAgICAgIEVSUl9wcmludF9lcnJvcnMoYmlvX2Vy cik7CisrICAgICAgICB9CisgICAgIH0KKysKKyAgICAgaWYgKHZwbSkKKyAgICAgICAgIFNTTF9D VFhfc2V0MV9wYXJhbShjdHgsIHZwbSk7CisgCitAQCAtMTg1MCw4ICsxODU0LDEwIEBAIGludCBN QUlOKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICAgICAgICBlbHNlCisgICAgICAgICAgICAg U1NMX0NUWF9zZXNzX3NldF9jYWNoZV9zaXplKGN0eDIsIDEyOCk7CisgCistICAgICAgICBpZiAo KCFTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjdHgyLCBDQWZpbGUsIENBcGF0aCkpIHx8 CistICAgICAgICAgICAgKCFTU0xfQ1RYX3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhjdHgyKSkp IHsKKysgICAgICAgIGlmICghU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY3R4MiwgQ0Fm aWxlLCBDQXBhdGgpKSB7CisrICAgICAgICAgICAgRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsK KysgICAgICAgIH0KKysgICAgICAgIGlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0 aHMoY3R4MikpIHsKKyAgICAgICAgICAgICBFUlJfcHJpbnRfZXJyb3JzKGJpb19lcnIpOworICAg ICAgICAgfQorICAgICAgICAgaWYgKHZwbSkKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2FwcHMv c190aW1lLmMuZGVmYXVsdC1wYXRocyBvcGVuc3NsLTEuMC4yYy9hcHBzL3NfdGltZS5jCistLS0g b3BlbnNzbC0xLjAuMmMvYXBwcy9zX3RpbWUuYy5kZWZhdWx0LXBhdGhzCTIwMTUtMDYtMTIgMTY6 NTE6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvYXBwcy9zX3RpbWUuYwky MDE1LTA2LTE1IDE3OjI0OjE3Ljc0NzQ0NjUxNSArMDIwMAorQEAgLTM4MSwxMyArMzgxLDE0IEBA IGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAKKyAgICAgU1NMX2xvYWRfZXJyb3Jf c3RyaW5ncygpOworIAorLSAgICBpZiAoKCFTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyh0 bV9jdHgsIENBZmlsZSwgQ0FwYXRoKSkgfHwKKy0gICAgICAgICghU1NMX0NUWF9zZXRfZGVmYXVs dF92ZXJpZnlfcGF0aHModG1fY3R4KSkpIHsKKy0gICAgICAgIC8qCistICAgICAgICAgKiBCSU9f cHJpbnRmKGJpb19lcnIsImVycm9yIHNldHRpbmcgZGVmYXVsdCB2ZXJpZnkgbG9jYXRpb25zXG4i KTsKKy0gICAgICAgICAqLworLSAgICAgICAgRVJSX3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKKy0g ICAgICAgIC8qIGdvdG8gZW5kOyAqLworKyAgICBpZiAoQ0FmaWxlID09IE5VTEwgJiYgQ0FwYXRo ID09IE5VTEwpIHsKKysgICAgICAgIGlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0 aHModG1fY3R4KSkgeworKyAgICAgICAgICAgIEVSUl9wcmludF9lcnJvcnMoYmlvX2Vycik7Cisr ICAgICAgICB9CisrICAgIH0gZWxzZSB7CisrICAgICAgICBpZiAoIVNTTF9DVFhfbG9hZF92ZXJp ZnlfbG9jYXRpb25zKHRtX2N0eCwgQ0FmaWxlLCBDQXBhdGgpKSB7CisrICAgICAgICAgICAgRVJS X3ByaW50X2Vycm9ycyhiaW9fZXJyKTsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBpZiAo dG1fY2lwaGVyID09IE5VTEwpCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMmMtZWNjLXN1aXRl Yi5wYXRjaCBiL29wZW5zc2wtMS4wLjJjLWVjYy1zdWl0ZWIucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZGZjYWU3NgotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wt MS4wLjJjLWVjYy1zdWl0ZWIucGF0Y2gKQEAgLTAsMCArMSwxOTUgQEAKK2RpZmYgLXVwIG9wZW5z c2wtMS4wLjJjL2FwcHMvc3BlZWQuYy5zdWl0ZWIgb3BlbnNzbC0xLjAuMmMvYXBwcy9zcGVlZC5j CistLS0gb3BlbnNzbC0xLjAuMmMvYXBwcy9zcGVlZC5jLnN1aXRlYgkyMDE1LTA2LTE1IDE3OjM3 OjA2LjI4NTA4MzY4NSArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2FwcHMvc3BlZWQuYwkyMDE1 LTA2LTE1IDE3OjM3OjA2LjMzNTA4NDgzNiArMDIwMAorQEAgLTk5Niw3OCArOTk2LDI2IEBAIGlu dCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgIH0gZWxzZQorICMgZW5kaWYK KyAjIGlmbmRlZiBPUEVOU1NMX05PX0VDRFNBCistICAgICAgICBpZiAoc3RyY21wKCphcmd2LCAi ZWNkc2FwMTYwIikgPT0gMCkKKy0gICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfUDE2MF0gPSAy OworLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2FwMTkyIikgPT0gMCkKKy0g ICAgICAgICAgICBlY2RzYV9kb2l0W1JfRUNfUDE5Ml0gPSAyOworLSAgICAgICAgZWxzZSBpZiAo c3RyY21wKCphcmd2LCAiZWNkc2FwMjI0IikgPT0gMCkKKy0gICAgICAgICAgICBlY2RzYV9kb2l0 W1JfRUNfUDIyNF0gPSAyOworLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkc2Fw MjU2IikgPT0gMCkKKysgICAgICAgIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYXAyNTYiKSA9PSAw KQorICAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19QMjU2XSA9IDI7CisgICAgICAgICBlbHNl IGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYXAzODQiKSA9PSAwKQorICAgICAgICAgICAgIGVjZHNh X2RvaXRbUl9FQ19QMzg0XSA9IDI7CisgICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJl Y2RzYXA1MjEiKSA9PSAwKQorICAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19QNTIxXSA9IDI7 CistICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWsxNjMiKSA9PSAwKQorLSAg ICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19LMTYzXSA9IDI7CistICAgICAgICBlbHNlIGlmIChz dHJjbXAoKmFyZ3YsICJlY2RzYWsyMzMiKSA9PSAwKQorLSAgICAgICAgICAgIGVjZHNhX2RvaXRb Ul9FQ19LMjMzXSA9IDI7CistICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWsy ODMiKSA9PSAwKQorLSAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19LMjgzXSA9IDI7CistICAg ICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWs0MDkiKSA9PSAwKQorLSAgICAgICAg ICAgIGVjZHNhX2RvaXRbUl9FQ19LNDA5XSA9IDI7CistICAgICAgICBlbHNlIGlmIChzdHJjbXAo KmFyZ3YsICJlY2RzYWs1NzEiKSA9PSAwKQorLSAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19L NTcxXSA9IDI7CistICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWIxNjMiKSA9 PSAwKQorLSAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19CMTYzXSA9IDI7CistICAgICAgICBl bHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWIyMzMiKSA9PSAwKQorLSAgICAgICAgICAgIGVj ZHNhX2RvaXRbUl9FQ19CMjMzXSA9IDI7CistICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3Ys ICJlY2RzYWIyODMiKSA9PSAwKQorLSAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19CMjgzXSA9 IDI7CistICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RzYWI0MDkiKSA9PSAwKQor LSAgICAgICAgICAgIGVjZHNhX2RvaXRbUl9FQ19CNDA5XSA9IDI7CistICAgICAgICBlbHNlIGlm IChzdHJjbXAoKmFyZ3YsICJlY2RzYWI1NzEiKSA9PSAwKQorLSAgICAgICAgICAgIGVjZHNhX2Rv aXRbUl9FQ19CNTcxXSA9IDI7CisgICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2Rz YSIpID09IDApIHsKKy0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUNfTlVNOyBpKyspCisr ICAgICAgICAgICAgZm9yIChpID0gUl9FQ19QMjU2OyBpIDw9IFJfRUNfUDUyMTsgaSsrKQorICAg ICAgICAgICAgICAgICBlY2RzYV9kb2l0W2ldID0gMTsKKyAgICAgICAgIH0gZWxzZQorICMgZW5k aWYKKyAjIGlmbmRlZiBPUEVOU1NMX05PX0VDREgKKy0gICAgICAgIGlmIChzdHJjbXAoKmFyZ3Ys ICJlY2RocDE2MCIpID09IDApCistICAgICAgICAgICAgZWNkaF9kb2l0W1JfRUNfUDE2MF0gPSAy OworLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkaHAxOTIiKSA9PSAwKQorLSAg ICAgICAgICAgIGVjZGhfZG9pdFtSX0VDX1AxOTJdID0gMjsKKy0gICAgICAgIGVsc2UgaWYgKHN0 cmNtcCgqYXJndiwgImVjZGhwMjI0IikgPT0gMCkKKy0gICAgICAgICAgICBlY2RoX2RvaXRbUl9F Q19QMjI0XSA9IDI7CistICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RocDI1NiIp ID09IDApCisrICAgICAgICBpZiAoc3RyY21wKCphcmd2LCAiZWNkaHAyNTYiKSA9PSAwKQorICAg ICAgICAgICAgIGVjZGhfZG9pdFtSX0VDX1AyNTZdID0gMjsKKyAgICAgICAgIGVsc2UgaWYgKHN0 cmNtcCgqYXJndiwgImVjZGhwMzg0IikgPT0gMCkKKyAgICAgICAgICAgICBlY2RoX2RvaXRbUl9F Q19QMzg0XSA9IDI7CisgICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RocDUyMSIp ID09IDApCisgICAgICAgICAgICAgZWNkaF9kb2l0W1JfRUNfUDUyMV0gPSAyOworLSAgICAgICAg ZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkaGsxNjMiKSA9PSAwKQorLSAgICAgICAgICAgIGVj ZGhfZG9pdFtSX0VDX0sxNjNdID0gMjsKKy0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwg ImVjZGhrMjMzIikgPT0gMCkKKy0gICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19LMjMzXSA9IDI7 CistICAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RoazI4MyIpID09IDApCistICAg ICAgICAgICAgZWNkaF9kb2l0W1JfRUNfSzI4M10gPSAyOworLSAgICAgICAgZWxzZSBpZiAoc3Ry Y21wKCphcmd2LCAiZWNkaGs0MDkiKSA9PSAwKQorLSAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VD X0s0MDldID0gMjsKKy0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhrNTcxIikg PT0gMCkKKy0gICAgICAgICAgICBlY2RoX2RvaXRbUl9FQ19LNTcxXSA9IDI7CistICAgICAgICBl bHNlIGlmIChzdHJjbXAoKmFyZ3YsICJlY2RoYjE2MyIpID09IDApCistICAgICAgICAgICAgZWNk aF9kb2l0W1JfRUNfQjE2M10gPSAyOworLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAi ZWNkaGIyMzMiKSA9PSAwKQorLSAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VDX0IyMzNdID0gMjsK Ky0gICAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGhiMjgzIikgPT0gMCkKKy0gICAg ICAgICAgICBlY2RoX2RvaXRbUl9FQ19CMjgzXSA9IDI7CistICAgICAgICBlbHNlIGlmIChzdHJj bXAoKmFyZ3YsICJlY2RoYjQwOSIpID09IDApCistICAgICAgICAgICAgZWNkaF9kb2l0W1JfRUNf QjQwOV0gPSAyOworLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKCphcmd2LCAiZWNkaGI1NzEiKSA9 PSAwKQorLSAgICAgICAgICAgIGVjZGhfZG9pdFtSX0VDX0I1NzFdID0gMjsKKyAgICAgICAgIGVs c2UgaWYgKHN0cmNtcCgqYXJndiwgImVjZGgiKSA9PSAwKSB7CistICAgICAgICAgICAgZm9yIChp ID0gMDsgaSA8IEVDX05VTTsgaSsrKQorKyAgICAgICAgICAgIGZvciAoaSA9IFJfRUNfUDI1Njsg aSA8PSBSX0VDX1A1MjE7IGkrKykKKyAgICAgICAgICAgICAgICAgZWNkaF9kb2l0W2ldID0gMTsK KyAgICAgICAgIH0gZWxzZQorICMgZW5kaWYKK0BAIC0xMTU2LDIxICsxMTA0LDExIEBAIGludCBN QUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19l cnIsICJkc2E1MTIgICBkc2ExMDI0ICBkc2EyMDQ4XG4iKTsKKyAjIGVuZGlmCisgIyBpZm5kZWYg T1BFTlNTTF9OT19FQ0RTQQorLSAgICAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgImVjZHNh cDE2MCBlY2RzYXAxOTIgZWNkc2FwMjI0ICIKKy0gICAgICAgICAgICAgICAgICAgICAgICJlY2Rz YXAyNTYgZWNkc2FwMzg0IGVjZHNhcDUyMVxuIik7CistICAgICAgICAgICAgQklPX3ByaW50Zihi aW9fZXJyLAorLSAgICAgICAgICAgICAgICAgICAgICAgImVjZHNhazE2MyBlY2RzYWsyMzMgZWNk c2FrMjgzIGVjZHNhazQwOSBlY2RzYWs1NzFcbiIpOworLSAgICAgICAgICAgIEJJT19wcmludGYo YmlvX2VyciwKKy0gICAgICAgICAgICAgICAgICAgICAgICJlY2RzYWIxNjMgZWNkc2FiMjMzIGVj ZHNhYjI4MyBlY2RzYWI0MDkgZWNkc2FiNTcxXG4iKTsKKysgICAgICAgICAgICBCSU9fcHJpbnRm KGJpb19lcnIsICJlY2RzYXAyNTYgZWNkc2FwMzg0IGVjZHNhcDUyMVxuIik7CisgICAgICAgICAg ICAgQklPX3ByaW50ZihiaW9fZXJyLCAiZWNkc2FcbiIpOworICMgZW5kaWYKKyAjIGlmbmRlZiBP UEVOU1NMX05PX0VDREgKKy0gICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJlY2RocDE2 MCAgZWNkaHAxOTIgIGVjZGhwMjI0ICIKKy0gICAgICAgICAgICAgICAgICAgICAgICJlY2RocDI1 NiAgZWNkaHAzODQgIGVjZGhwNTIxXG4iKTsKKy0gICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19l cnIsCistICAgICAgICAgICAgICAgICAgICAgICAiZWNkaGsxNjMgIGVjZGhrMjMzICBlY2RoazI4 MyAgZWNkaGs0MDkgIGVjZGhrNTcxXG4iKTsKKy0gICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19l cnIsCistICAgICAgICAgICAgICAgICAgICAgICAiZWNkaGIxNjMgIGVjZGhiMjMzICBlY2RoYjI4 MyAgZWNkaGI0MDkgIGVjZGhiNTcxXG4iKTsKKysgICAgICAgICAgICBCSU9fcHJpbnRmKGJpb19l cnIsICJlY2RocDI1NiAgZWNkaHAzODQgIGVjZGhwNTIxXG4iKTsKKyAgICAgICAgICAgICBCSU9f cHJpbnRmKGJpb19lcnIsICJlY2RoXG4iKTsKKyAjIGVuZGlmCisgCitAQCAtMTI1NSwxMSArMTE5 MywxMSBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgaWYg KCFGSVBTX21vZGUoKSB8fCBpICE9IFJfRFNBXzUxMikKKyAgICAgICAgICAgICAgICAgZHNhX2Rv aXRbaV0gPSAxOworICMgaWZuZGVmIE9QRU5TU0xfTk9fRUNEU0EKKy0gICAgICAgIGZvciAoaSA9 IDA7IGkgPCBFQ19OVU07IGkrKykKKysgICAgICAgIGZvciAoaSA9IFJfRUNfUDI1NjsgaSA8PSBS X0VDX1A1MjE7IGkrKykKKyAgICAgICAgICAgICBlY2RzYV9kb2l0W2ldID0gMTsKKyAjIGVuZGlm CisgIyBpZm5kZWYgT1BFTlNTTF9OT19FQ0RICistICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUNf TlVNOyBpKyspCisrICAgICAgICBmb3IgKGkgPSBSX0VDX1AyNTY7IGkgPD0gUl9FQ19QNTIxOyBp KyspCisgICAgICAgICAgICAgZWNkaF9kb2l0W2ldID0gMTsKKyAjIGVuZGlmCisgICAgIH0KK2Rp ZmYgLXVwIG9wZW5zc2wtMS4wLjJjL3NzbC90MV9saWIuYy5zdWl0ZWIgb3BlbnNzbC0xLjAuMmMv c3NsL3QxX2xpYi5jCistLS0gb3BlbnNzbC0xLjAuMmMvc3NsL3QxX2xpYi5jLnN1aXRlYgkyMDE1 LTA2LTEyIDE2OjUxOjI3LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL3NzbC90 MV9saWIuYwkyMDE1LTA2LTE1IDE3OjQ0OjAzLjU3ODY4MTI3MSArMDIwMAorQEAgLTI2OCwxMSAr MjY4LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZWNjdXJ2ZXNfYXV0bworICAgICAw LCAyMywgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDI1NnIxICgyMykgKi8KKyAgICAgLyog T3RoZXIgPj0gMjU2LWJpdCBwcmltZSBjdXJ2ZXMuICovCisgICAgIDAsIDI1LCAgICAgICAgICAg ICAgICAgICAgICAvKiBzZWNwNTIxcjEgKDI1KSAqLworLSAgICAwLCAyOCwgICAgICAgICAgICAg ICAgICAgICAgLyogYnJhaW5wb29sNTEycjEgKDI4KSAqLworLSAgICAwLCAyNywgICAgICAgICAg ICAgICAgICAgICAgLyogYnJhaW5wb29sUDM4NHIxICgyNykgKi8KKyAgICAgMCwgMjQsICAgICAg ICAgICAgICAgICAgICAgIC8qIHNlY3AzODRyMSAoMjQpICovCistICAgIDAsIDI2LCAgICAgICAg ICAgICAgICAgICAgICAvKiBicmFpbnBvb2xQMjU2cjEgKDI2KSAqLworLSAgICAwLCAyMiwgICAg ICAgICAgICAgICAgICAgICAgLyogc2VjcDI1NmsxICgyMikgKi8KKyAjIGlmbmRlZiBPUEVOU1NM X05PX0VDMk0KKyAgICAgLyogPj0gMjU2LWJpdCBiaW5hcnkgY3VydmVzLiAqLworICAgICAwLCAx NCwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjdDU3MXIxICgxNCkgKi8KK0BAIC0yODksMTEg KzI4NSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGVjY3VydmVzX2FsbFsKKyAgICAg MCwgMjMsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AyNTZyMSAoMjMpICovCisgICAgIC8q IE90aGVyID49IDI1Ni1iaXQgcHJpbWUgY3VydmVzLiAqLworICAgICAwLCAyNSwgICAgICAgICAg ICAgICAgICAgICAgLyogc2VjcDUyMXIxICgyNSkgKi8KKy0gICAgMCwgMjgsICAgICAgICAgICAg ICAgICAgICAgIC8qIGJyYWlucG9vbDUxMnIxICgyOCkgKi8KKy0gICAgMCwgMjcsICAgICAgICAg ICAgICAgICAgICAgIC8qIGJyYWlucG9vbFAzODRyMSAoMjcpICovCisgICAgIDAsIDI0LCAgICAg ICAgICAgICAgICAgICAgICAvKiBzZWNwMzg0cjEgKDI0KSAqLworLSAgICAwLCAyNiwgICAgICAg ICAgICAgICAgICAgICAgLyogYnJhaW5wb29sUDI1NnIxICgyNikgKi8KKy0gICAgMCwgMjIsICAg ICAgICAgICAgICAgICAgICAgIC8qIHNlY3AyNTZrMSAoMjIpICovCisgIyBpZm5kZWYgT1BFTlNT TF9OT19FQzJNCisgICAgIC8qID49IDI1Ni1iaXQgYmluYXJ5IGN1cnZlcy4gKi8KKyAgICAgMCwg MTQsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3Q1NzFyMSAoMTQpICovCitAQCAtMzA3LDEz ICsyOTksNiBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBlY2N1cnZlc19hbGxbCisgICAg ICAqIFJlbWFpbmluZyBjdXJ2ZXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBidXQgc3RpbGwgcGVybWl0 dGVkIGlmIHNldAorICAgICAgKiB2aWEgYW4gZXhwbGljaXQgY2FsbGJhY2sgb3IgcGFyYW1ldGVy cy4KKyAgICAgICovCistICAgIDAsIDIwLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMjI0 azEgKDIwKSAqLworLSAgICAwLCAyMSwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDIyNHIx ICgyMSkgKi8KKy0gICAgMCwgMTgsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AxOTJrMSAo MTgpICovCistICAgIDAsIDE5LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMTkycjEgKDE5 KSAqLworLSAgICAwLCAxNSwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDE2MGsxICgxNSkg Ki8KKy0gICAgMCwgMTYsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AxNjByMSAoMTYpICov CistICAgIDAsIDE3LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMTYwcjIgKDE3KSAqLwor ICMgaWZuZGVmIE9QRU5TU0xfTk9fRUMyTQorICAgICAwLCA4LCAgICAgICAgICAgICAgICAgICAg ICAgLyogc2VjdDIzOWsxICg4KSAqLworICAgICAwLCA2LCAgICAgICAgICAgICAgICAgICAgICAg Lyogc2VjdDIzM2sxICg2KSAqLworQEAgLTM0OCwyOSArMzMzLDIxIEBAIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGZpcHNfY3VydmVzX2QKKyAgICAgMCwgOSwgICAgICAgICAgICAgICAgICAg ICAgIC8qIHNlY3QyODNrMSAoOSkgKi8KKyAgICAgMCwgMTAsICAgICAgICAgICAgICAgICAgICAg IC8qIHNlY3QyODNyMSAoMTApICovCisgIyAgZW5kaWYKKy0gICAgMCwgMjIsICAgICAgICAgICAg ICAgICAgICAgIC8qIHNlY3AyNTZrMSAoMjIpICovCisgICAgIDAsIDIzLCAgICAgICAgICAgICAg ICAgICAgICAvKiBzZWNwMjU2cjEgKDIzKSAqLworICMgIGlmbmRlZiBPUEVOU1NMX05PX0VDMk0K KyAgICAgMCwgOCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3QyMzlrMSAoOCkgKi8KKyAg ICAgMCwgNiwgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3QyMzNrMSAoNikgKi8KKyAgICAg MCwgNywgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3QyMzNyMSAoNykgKi8KKyAjICBlbmRp ZgorLSAgICAwLCAyMCwgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDIyNGsxICgyMCkgKi8K Ky0gICAgMCwgMjEsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AyMjRyMSAoMjEpICovCisg IyAgaWZuZGVmIE9QRU5TU0xfTk9fRUMyTQorICAgICAwLCA0LCAgICAgICAgICAgICAgICAgICAg ICAgLyogc2VjdDE5M3IxICg0KSAqLworICAgICAwLCA1LCAgICAgICAgICAgICAgICAgICAgICAg Lyogc2VjdDE5M3IyICg1KSAqLworICMgIGVuZGlmCistICAgIDAsIDE4LCAgICAgICAgICAgICAg ICAgICAgICAvKiBzZWNwMTkyazEgKDE4KSAqLworLSAgICAwLCAxOSwgICAgICAgICAgICAgICAg ICAgICAgLyogc2VjcDE5MnIxICgxOSkgKi8KKyAjICBpZm5kZWYgT1BFTlNTTF9OT19FQzJNCisg ICAgIDAsIDEsICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0MTYzazEgKDEpICovCisgICAg IDAsIDIsICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0MTYzcjEgKDIpICovCisgICAgIDAs IDMsICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWN0MTYzcjIgKDMpICovCisgIyAgZW5kaWYK Ky0gICAgMCwgMTUsICAgICAgICAgICAgICAgICAgICAgIC8qIHNlY3AxNjBrMSAoMTUpICovCist ICAgIDAsIDE2LCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWNwMTYwcjEgKDE2KSAqLworLSAg ICAwLCAxNywgICAgICAgICAgICAgICAgICAgICAgLyogc2VjcDE2MHIyICgxNykgKi8KKyB9Owor ICMgZW5kaWYKKyAKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYy1maXBzLnBhdGNoIGIvb3Bl bnNzbC0xLjAuMmMtZmlwcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5iMjMzNjhkCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjAuMmMtZmlwcy5wYXRjaApA QCAtMCwwICsxLDEzNjk5IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9hcHBzL3NwZWVkLmMu ZmlwcyBvcGVuc3NsLTEuMC4yYy9hcHBzL3NwZWVkLmMKKy0tLSBvcGVuc3NsLTEuMC4yYy9hcHBz L3NwZWVkLmMuZmlwcwkyMDE1LTA2LTEyIDE2OjUxOjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9w ZW5zc2wtMS4wLjJjL2FwcHMvc3BlZWQuYwkyMDE1LTA2LTE1IDE3OjI5OjU5Ljk5OTI4Mzc3NiAr MDIwMAorQEAgLTE5Nyw3ICsxOTcsNiBAQAorICMgIGlmZGVmIE9QRU5TU0xfRE9JTkdfTUFLRURF UEVORAorICMgICB1bmRlZiBBRVNfc2V0X2VuY3J5cHRfa2V5CisgIyAgIHVuZGVmIEFFU19zZXRf ZGVjcnlwdF9rZXkKKy0jICAgdW5kZWYgREVTX3NldF9rZXlfdW5jaGVja2VkCisgIyAgZW5kaWYK KyAjICBkZWZpbmUgQkZfc2V0X2tleSAgICAgIHByaXZhdGVfQkZfc2V0X2tleQorICMgIGRlZmlu ZSBDQVNUX3NldF9rZXkgICAgcHJpdmF0ZV9DQVNUX3NldF9rZXkKK0BAIC0yMDUsNyArMjA0LDYg QEAKKyAjICBkZWZpbmUgU0VFRF9zZXRfa2V5ICAgIHByaXZhdGVfU0VFRF9zZXRfa2V5CisgIyAg ZGVmaW5lIFJDMl9zZXRfa2V5ICAgICBwcml2YXRlX1JDMl9zZXRfa2V5CisgIyAgZGVmaW5lIFJD NF9zZXRfa2V5ICAgICBwcml2YXRlX1JDNF9zZXRfa2V5CistIyAgZGVmaW5lIERFU19zZXRfa2V5 X3VuY2hlY2tlZCAgIHByaXZhdGVfREVTX3NldF9rZXlfdW5jaGVja2VkCisgIyAgZGVmaW5lIEFF U19zZXRfZW5jcnlwdF9rZXkgICAgIHByaXZhdGVfQUVTX3NldF9lbmNyeXB0X2tleQorICMgIGRl ZmluZSBBRVNfc2V0X2RlY3J5cHRfa2V5ICAgICBwcml2YXRlX0FFU19zZXRfZGVjcnlwdF9rZXkK KyAjICBkZWZpbmUgQ2FtZWxsaWFfc2V0X2tleSAgICAgICAgcHJpdmF0ZV9DYW1lbGxpYV9zZXRf a2V5CitAQCAtOTc0LDcgKzk3MiwxMiBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CisgIyBlbmRpZgorICMgaWZuZGVmIE9QRU5TU0xfTk9fUlNBCisgICAgICAgICBpZiAoc3RyY21w KCphcmd2LCAicnNhIikgPT0gMCkgeworLSAgICAgICAgICAgIHJzYV9kb2l0W1JfUlNBXzUxMl0g PSAxOworKyMgIGlmZGVmIE9QRU5TU0xfRklQUworKyAgICAgICAgICAgIGlmICghRklQU19tb2Rl KCkpCisrIyAgZW5kaWYKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIHJzYV9kb2l0 W1JfUlNBXzUxMl0gPSAxOworKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICByc2FfZG9pdFtS X1JTQV8xMDI0XSA9IDE7CisgICAgICAgICAgICAgcnNhX2RvaXRbUl9SU0FfMjA0OF0gPSAxOwor ICAgICAgICAgICAgIHJzYV9kb2l0W1JfUlNBXzQwOTZdID0gMTsKK0BAIC05ODIsNyArOTg1LDEy IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAjIGVuZGlmCisgIyBpZm5kZWYg T1BFTlNTTF9OT19EU0EKKyAgICAgICAgIGlmIChzdHJjbXAoKmFyZ3YsICJkc2EiKSA9PSAwKSB7 CistICAgICAgICAgICAgZHNhX2RvaXRbUl9EU0FfNTEyXSA9IDE7CisrIyAgaWZkZWYgT1BFTlNT TF9GSVBTCisrICAgICAgICAgICAgaWYgKCFGSVBTX21vZGUoKSkKKysjICBlbmRpZgorKyAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgZHNhX2RvaXRbUl9EU0FfNTEyXSA9IDE7CisrICAg ICAgICAgICAgfQorICAgICAgICAgICAgIGRzYV9kb2l0W1JfRFNBXzEwMjRdID0gMTsKKyAgICAg ICAgICAgICBkc2FfZG9pdFtSX0RTQV8yMDQ4XSA9IDE7CisgICAgICAgICB9IGVsc2UKK0BAIC0x MjMzLDEzICsxMjQxLDE5IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAKKyAg ICAgaWYgKGogPT0gMCkgeworICAgICAgICAgZm9yIChpID0gMDsgaSA8IEFMR09SX05VTTsgaSsr KSB7CistICAgICAgICAgICAgaWYgKGkgIT0gRF9FVlApCisrICAgICAgICAgICAgaWYgKGkgIT0g RF9FVlAgJiYKKysgICAgICAgICAgICAgICAgKCFGSVBTX21vZGUoKSB8fCAoaSAhPSBEX1dISVJM UE9PTCAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IERfTUQyICYm IGkgIT0gRF9NRDQgJiYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBE X01ENSAmJiBpICE9IERfTURDMiAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpICE9IERfUk1EMTYwKSkpCisgICAgICAgICAgICAgICAgIGRvaXRbaV0gPSAxOworICAgICAg ICAgfQorICAgICAgICAgZm9yIChpID0gMDsgaSA8IFJTQV9OVU07IGkrKykKKy0gICAgICAgICAg ICByc2FfZG9pdFtpXSA9IDE7CisrICAgICAgICAgICAgaWYgKCFGSVBTX21vZGUoKSB8fCBpICE9 IFJfUlNBXzUxMikKKysgICAgICAgICAgICAgICAgcnNhX2RvaXRbaV0gPSAxOworICAgICAgICAg Zm9yIChpID0gMDsgaSA8IERTQV9OVU07IGkrKykKKy0gICAgICAgICAgICBkc2FfZG9pdFtpXSA9 IDE7CisrICAgICAgICAgICAgaWYgKCFGSVBTX21vZGUoKSB8fCBpICE9IFJfRFNBXzUxMikKKysg ICAgICAgICAgICAgICAgZHNhX2RvaXRbaV0gPSAxOworICMgaWZuZGVmIE9QRU5TU0xfTk9fRUNE U0EKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFQ19OVU07IGkrKykKKyAgICAgICAgICAgICBl Y2RzYV9kb2l0W2ldID0gMTsKK0BAIC0xMjk5LDMwICsxMzEzLDQ2IEBAIGludCBNQUlOKGludCBh cmdjLCBjaGFyICoqYXJndikKKyAgICAgQUVTX3NldF9lbmNyeXB0X2tleShrZXkzMiwgMjU2LCAm YWVzX2tzMyk7CisgIyBlbmRpZgorICMgaWZuZGVmIE9QRU5TU0xfTk9fQ0FNRUxMSUEKKy0gICAg Q2FtZWxsaWFfc2V0X2tleShrZXkxNiwgMTI4LCAmY2FtZWxsaWFfa3MxKTsKKy0gICAgQ2FtZWxs aWFfc2V0X2tleShja2V5MjQsIDE5MiwgJmNhbWVsbGlhX2tzMik7CistICAgIENhbWVsbGlhX3Nl dF9rZXkoY2tleTMyLCAyNTYsICZjYW1lbGxpYV9rczMpOworKyAgICBpZiAoZG9pdFtEX0NCQ18x MjhfQ01MXSB8fCBkb2l0W0RfQ0JDXzE5Ml9DTUxdIHx8IGRvaXRbRF9DQkNfMjU2X0NNTF0pIHsK KysgICAgICAgIENhbWVsbGlhX3NldF9rZXkoa2V5MTYsIDEyOCwgJmNhbWVsbGlhX2tzMSk7Cisr ICAgICAgICBDYW1lbGxpYV9zZXRfa2V5KGNrZXkyNCwgMTkyLCAmY2FtZWxsaWFfa3MyKTsKKysg ICAgICAgIENhbWVsbGlhX3NldF9rZXkoY2tleTMyLCAyNTYsICZjYW1lbGxpYV9rczMpOworKyAg ICB9CisgIyBlbmRpZgorICMgaWZuZGVmIE9QRU5TU0xfTk9fSURFQQorLSAgICBpZGVhX3NldF9l bmNyeXB0X2tleShrZXkxNiwgJmlkZWFfa3MpOworKyAgICBpZiAoZG9pdFtEX0NCQ19JREVBXSkg eworKyAgICAgICAgaWRlYV9zZXRfZW5jcnlwdF9rZXkoa2V5MTYsICZpZGVhX2tzKTsKKysgICAg fQorICMgZW5kaWYKKyAjIGlmbmRlZiBPUEVOU1NMX05PX1NFRUQKKy0gICAgU0VFRF9zZXRfa2V5 KGtleTE2LCAmc2VlZF9rcyk7CisrICAgIGlmIChkb2l0W0RfQ0JDX1NFRURdKSB7CisrICAgICAg ICBTRUVEX3NldF9rZXkoa2V5MTYsICZzZWVkX2tzKTsKKysgICAgfQorICMgZW5kaWYKKyAjIGlm bmRlZiBPUEVOU1NMX05PX1JDNAorLSAgICBSQzRfc2V0X2tleSgmcmM0X2tzLCAxNiwga2V5MTYp OworKyAgICBpZiAoZG9pdFtEX1JDNF0pIHsKKysgICAgICAgIFJDNF9zZXRfa2V5KCZyYzRfa3Ms IDE2LCBrZXkxNik7CisrICAgIH0KKyAjIGVuZGlmCisgIyBpZm5kZWYgT1BFTlNTTF9OT19SQzIK Ky0gICAgUkMyX3NldF9rZXkoJnJjMl9rcywgMTYsIGtleTE2LCAxMjgpOworKyAgICBpZiAoZG9p dFtEX0NCQ19SQzJdKSB7CisrICAgICAgICBSQzJfc2V0X2tleSgmcmMyX2tzLCAxNiwga2V5MTYs IDEyOCk7CisrICAgIH0KKyAjIGVuZGlmCisgIyBpZm5kZWYgT1BFTlNTTF9OT19SQzUKKy0gICAg UkM1XzMyX3NldF9rZXkoJnJjNV9rcywgMTYsIGtleTE2LCAxMik7CisrICAgIGlmIChkb2l0W0Rf Q0JDX1JDNV0pIHsKKysgICAgICAgIFJDNV8zMl9zZXRfa2V5KCZyYzVfa3MsIDE2LCBrZXkxNiwg MTIpOworKyAgICB9CisgIyBlbmRpZgorICMgaWZuZGVmIE9QRU5TU0xfTk9fQkYKKy0gICAgQkZf c2V0X2tleSgmYmZfa3MsIDE2LCBrZXkxNik7CisrICAgIGlmIChkb2l0W0RfQ0JDX0JGXSkgewor KyAgICAgICAgQkZfc2V0X2tleSgmYmZfa3MsIDE2LCBrZXkxNik7CisrICAgIH0KKyAjIGVuZGlm CisgIyBpZm5kZWYgT1BFTlNTTF9OT19DQVNUCistICAgIENBU1Rfc2V0X2tleSgmY2FzdF9rcywg MTYsIGtleTE2KTsKKysgICAgaWYgKGRvaXRbRF9DQkNfQ0FTVF0pIHsKKysgICAgICAgIENBU1Rf c2V0X2tleSgmY2FzdF9rcywgMTYsIGtleTE2KTsKKysgICAgfQorICMgZW5kaWYKKyAjIGlmbmRl ZiBPUEVOU1NMX05PX1JTQQorICAgICBtZW1zZXQocnNhX2MsIDAsIHNpemVvZihyc2FfYykpOwor QEAgLTE2MDUsNiArMTYzNSw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAg ICAgICAgIEhNQUNfQ1RYIGhjdHg7CisgCisgICAgICAgICBITUFDX0NUWF9pbml0KCZoY3R4KTsK KysgICAgICAgIEhNQUNfQ1RYX3NldF9mbGFncygmaGN0eCwgRVZQX01EX0NUWF9GTEFHX05PTl9G SVBTX0FMTE9XKTsKKyAgICAgICAgIEhNQUNfSW5pdF9leCgmaGN0eCwgKHVuc2lnbmVkIGNoYXIg KikiVGhpcyBpcyBhIGtleS4uLiIsCisgICAgICAgICAgICAgICAgICAgICAgMTYsIEVWUF9tZDUo KSwgTlVMTCk7CisgCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9Db25maWd1cmUuZmlwcyBvcGVu c3NsLTEuMC4yYy9Db25maWd1cmUKKy0tLSBvcGVuc3NsLTEuMC4yYy9Db25maWd1cmUuZmlwcwky MDE1LTA2LTE1IDE3OjI5OjU5Ljk4MjI4MzM4NyArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL0Nv bmZpZ3VyZQkyMDE1LTA2LTE1IDE3OjI5OjU5Ljk5OTI4Mzc3NiArMDIwMAorQEAgLTEwNTcsMTEg KzEwNTcsNiBAQCBpZiAoZGVmaW5lZCgkZGlzYWJsZWR7Im1kNSJ9KSB8fCBkZWZpbmVkCisgCSRk aXNhYmxlZHsic3NsMiJ9ID0gImZvcmNlZCI7CisgCX0KKyAKKy1pZiAoJGZpcHMgJiYgJGZpcHNs aWJkaXIgZXEgIiIpCistCXsKKy0JJGZpcHNsaWJkaXIgPSAkZmlwc2RpciAuICIvbGliLyI7Cist CX0KKy0KKyAjIFJTQVggRU5HSU5FIHNldHMgZGVmYXVsdCBub24tRklQUyBSU0EgbWV0aG9kLgor IGlmICgkZmlwcykKKyAJeworQEAgLTE1NTAsNyArMTU0NSw2IEBAICRjZmxhZ3MuPSIgLURPUEVO U1NMX0JOX0FTTV9HRjJtIiBpZiAoJGIKKyBpZiAoJGZpcHMpCisgCXsKKyAJJG9wZW5zc2xfb3Ro ZXJfZGVmaW5lcy49IiNkZWZpbmUgT1BFTlNTTF9GSVBTXG4iOworLQkkY2ZsYWdzIC49ICIgLUlc JChGSVBTRElSKS9pbmNsdWRlIjsKKyAJfQorIAorICRjcHVpZF9vYmo9Im1lbV9jbHIubyIJdW5s ZXNzICgkY3B1aWRfb2JqID1+IC9cLm8kLyk7CitAQCAtMTc1MSw5ICsxNzQ1LDEyIEBAIHdoaWxl ICg8SU4+KQorIAorIAlzL15GSVBTRElSPS4qL0ZJUFNESVI9JGZpcHNkaXIvOworIAlzL15GSVBT TElCRElSPS4qL0ZJUFNMSUJESVI9JGZpcHNsaWJkaXIvOworLQlzL15GSVBTQ0FOTElCPS4qL0ZJ UFNDQU5MSUI9bGliY3J5cHRvLyBpZiAkZmlwczsKKyAJcy9eQkFTRUFERFI9LiovQkFTRUFERFI9 JGJhc2VhZGRyLzsKKyAKKysJaWYgKCRmaXBzKQorKwkJeworKwkJcy9eRklQUz0uKi9GSVBTPXll cy87CisrCQl9CisgCXMvXlNITElCX1RBUkdFVD0uKi9TSExJQl9UQVJHRVQ9JHNoYXJlZF90YXJn ZXQvOworIAlzL15TSExJQl9NQVJLPS4qL1NITElCX01BUks9JHNoYXJlZF9tYXJrLzsKKyAJcy9e U0hBUkVEX0xJQlM9LiovU0hBUkVEX0xJQlM9XCQoU0hBUkVEX0NSWVBUTykgXCQoU0hBUkVEX1NT TCkvIGlmICghJG5vX3NoYXJlZCk7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vYWVz L2Flc19taXNjLmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vYWVzL2Flc19taXNjLmMKKy0t LSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vYWVzL2Flc19taXNjLmMuZmlwcwkyMDE1LTA2LTEyIDE2 OjUxOjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9hZXMvYWVz X21pc2MuYwkyMDE1LTA2LTE1IDE3OjI5OjU5Ljk5OTI4Mzc3NiArMDIwMAorQEAgLTcwLDE3ICs3 MCwxMSBAQCBjb25zdCBjaGFyICpBRVNfb3B0aW9ucyh2b2lkKQorIGludCBBRVNfc2V0X2VuY3J5 cHRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGNvbnN0IGludCBiaXRzLAorICAg ICAgICAgICAgICAgICAgICAgICAgIEFFU19LRVkgKmtleSkKKyB7CistI2lmZGVmIE9QRU5TU0xf RklQUworLSAgICBmaXBzX2NpcGhlcl9hYm9ydChBRVMpOworLSNlbmRpZgorICAgICByZXR1cm4g cHJpdmF0ZV9BRVNfc2V0X2VuY3J5cHRfa2V5KHVzZXJLZXksIGJpdHMsIGtleSk7CisgfQorIAor IGludCBBRVNfc2V0X2RlY3J5cHRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGNv bnN0IGludCBiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEFFU19LRVkgKmtleSkKKyB7 CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBmaXBzX2NpcGhlcl9hYm9ydChBRVMpOworLSNl bmRpZgorICAgICByZXR1cm4gcHJpdmF0ZV9BRVNfc2V0X2RlY3J5cHRfa2V5KHVzZXJLZXksIGJp dHMsIGtleSk7CisgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2NtYWMvY21hYy5j LmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2NtYWMvY21hYy5jCistLS0gb3BlbnNzbC0xLjAu MmMvY3J5cHRvL2NtYWMvY21hYy5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vY21hYy9jbWFjLmMJMjAxNS0wNi0xNSAx NzoyOTo1OS45OTkyODM3NzYgKzAyMDAKK0BAIC0xMDUsMTIgKzEwNSw2IEBAIENNQUNfQ1RYICpD TUFDX0NUWF9uZXcodm9pZCkKKyAKKyB2b2lkIENNQUNfQ1RYX2NsZWFudXAoQ01BQ19DVFggKmN0 eCkKKyB7CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBpZiAoRklQU19tb2RlKCkgJiYgIWN0 eC0+Y2N0eC5lbmdpbmUpIHsKKy0gICAgICAgIEZJUFNfY21hY19jdHhfY2xlYW51cChjdHgpOwor LSAgICAgICAgcmV0dXJuOworLSAgICB9CistI2VuZGlmCisgICAgIEVWUF9DSVBIRVJfQ1RYX2Ns ZWFudXAoJmN0eC0+Y2N0eCk7CisgICAgIE9QRU5TU0xfY2xlYW5zZShjdHgtPnRibCwgRVZQX01B WF9CTE9DS19MRU5HVEgpOworICAgICBPUEVOU1NMX2NsZWFuc2UoY3R4LT5rMSwgRVZQX01BWF9C TE9DS19MRU5HVEgpOworQEAgLTE2MCwxMiArMTU0LDYgQEAgaW50IENNQUNfSW5pdChDTUFDX0NU WCAqY3R4LCBjb25zdCB2b2lkCisgICAgICAgICAgICAgRVZQZXJyKEVWUF9GX0NNQUNfSU5JVCwg RVZQX1JfRElTQUJMRURfRk9SX0ZJUFMpOworICAgICAgICAgICAgIHJldHVybiAwOworICAgICAg ICAgfQorLSAgICAgICAgLyoKKy0gICAgICAgICAqIE90aGVyIGFsZ29yaXRobSBibG9ja2luZyB3 aWxsIGJlIGRvbmUgaW4gRklQU19jbWFjX2luaXQsIHZpYQorLSAgICAgICAgICogRklQU19jaXBo ZXJpbml0KCkuCistICAgICAgICAgKi8KKy0gICAgICAgIGlmICghaW1wbCAmJiAhY3R4LT5jY3R4 LmVuZ2luZSkKKy0gICAgICAgICAgICByZXR1cm4gRklQU19jbWFjX2luaXQoY3R4LCBrZXksIGtl eWxlbiwgY2lwaGVyLCBOVUxMKTsKKyAgICAgfQorICNlbmRpZgorICAgICAvKiBBbGwgemVyb3Mg bWVhbnMgcmVzdGFydCAqLworQEAgLTIxMSwxMCArMTk5LDYgQEAgaW50IENNQUNfVXBkYXRlKENN QUNfQ1RYICpjdHgsIGNvbnN0IHZvaQorIHsKKyAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0 YSA9IGluOworICAgICBzaXplX3QgYmw7CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBpZiAo RklQU19tb2RlKCkgJiYgIWN0eC0+Y2N0eC5lbmdpbmUpCistICAgICAgICByZXR1cm4gRklQU19j bWFjX3VwZGF0ZShjdHgsIGluLCBkbGVuKTsKKy0jZW5kaWYKKyAgICAgaWYgKGN0eC0+bmxhc3Rf YmxvY2sgPT0gLTEpCisgICAgICAgICByZXR1cm4gMDsKKyAgICAgaWYgKGRsZW4gPT0gMCkKK0BA IC0yNTQsMTAgKzIzOCw2IEBAIGludCBDTUFDX1VwZGF0ZShDTUFDX0NUWCAqY3R4LCBjb25zdCB2 b2kKKyBpbnQgQ01BQ19GaW5hbChDTUFDX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNp emVfdCAqcG91dGxlbikKKyB7CisgICAgIGludCBpLCBibCwgbGI7CistI2lmZGVmIE9QRU5TU0xf RklQUworLSAgICBpZiAoRklQU19tb2RlKCkgJiYgIWN0eC0+Y2N0eC5lbmdpbmUpCistICAgICAg ICByZXR1cm4gRklQU19jbWFjX2ZpbmFsKGN0eCwgb3V0LCBwb3V0bGVuKTsKKy0jZW5kaWYKKyAg ICAgaWYgKGN0eC0+bmxhc3RfYmxvY2sgPT0gLTEpCisgICAgICAgICByZXR1cm4gMDsKKyAgICAg YmwgPSBFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplKCZjdHgtPmNjdHgpOworZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMmMvY3J5cHRvL2NyeXB0by5oLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2Ny eXB0by5oCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2NyeXB0by5oLmZpcHMJMjAxNS0wNi0x NSAxNzoyOTo1OS44ODYyODExODggKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vY3J5 cHRvLmgJMjAxNS0wNi0xNSAxNzoyOTo1OS45OTkyODM3NzYgKzAyMDAKK0BAIC02MDAsMjQgKzYw MCwyOSBAQCBpbnQgRklQU19tb2RlX3NldChpbnQgcik7Cisgdm9pZCBPUEVOU1NMX2luaXQodm9p ZCk7CisgCisgIyBkZWZpbmUgZmlwc19tZF9pbml0KGFsZykgZmlwc19tZF9pbml0X2N0eChhbGcs IGFsZykKKysjIGRlZmluZSBub25maXBzX21kX2luaXQoYWxnKSBub25maXBzX21kX2luaXRfY3R4 KGFsZywgYWxnKQorKyMgZGVmaW5lIGZpcHNfbWRfaW5pdF9jdHgoYWxnLCBjeCkgXAorKyAgICAg ICAgaW50IGFsZyMjX0luaXQoY3gjI19DVFggKmMpCisgCisgIyBpZmRlZiBPUEVOU1NMX0ZJUFMK Ky0jICBkZWZpbmUgZmlwc19tZF9pbml0X2N0eChhbGcsIGN4KSBcCisrIyAgZGVmaW5lIG5vbmZp cHNfbWRfaW5pdF9jdHgoYWxnLCBjeCkgXAorICAgICAgICAgaW50IGFsZyMjX0luaXQoY3gjI19D VFggKmMpIFwKKyAgICAgICAgIHsgXAorICAgICAgICAgaWYgKEZJUFNfbW9kZSgpKSBPcGVuU1NM RGllKF9fRklMRV9fLCBfX0xJTkVfXywgXAorLSAgICAgICAgICAgICAgICAiTG93IGxldmVsIEFQ SSBjYWxsIHRvIGRpZ2VzdCAiICNhbGcgIiBmb3JiaWRkZW4gaW4gRklQUyBtb2RlISIpOyBcCisr ICAgICAgICAgICAgICAgICJEaWdlc3QgIiAjYWxnICIgZm9yYmlkZGVuIGluIEZJUFMgbW9kZSEi KTsgXAorICAgICAgICAgcmV0dXJuIHByaXZhdGVfIyNhbGcjI19Jbml0KGMpOyBcCisgICAgICAg ICB9IFwKKyAgICAgICAgIGludCBwcml2YXRlXyMjYWxnIyNfSW5pdChjeCMjX0NUWCAqYykKKyAK KyAjICBkZWZpbmUgZmlwc19jaXBoZXJfYWJvcnQoYWxnKSBcCisgICAgICAgICBpZiAoRklQU19t b2RlKCkpIE9wZW5TU0xEaWUoX19GSUxFX18sIF9fTElORV9fLCBcCistICAgICAgICAgICAgICAg ICJMb3cgbGV2ZWwgQVBJIGNhbGwgdG8gY2lwaGVyICIgI2FsZyAiIGZvcmJpZGRlbiBpbiBGSVBT IG1vZGUhIikKKysgICAgICAgICAgICAgICAgIkNpcGhlciAiICNhbGcgIiBmb3JiaWRkZW4gaW4g RklQUyBtb2RlISIpCisrCisrLyogZGllIGlmIEZJUFMgc2VsZnRlc3QgZmFpbGVkICovCisrdm9p ZCBGSVBTX3NlbGZ0ZXN0X2NoZWNrKHZvaWQpOworIAorICMgZWxzZQorLSMgIGRlZmluZSBmaXBz X21kX2luaXRfY3R4KGFsZywgY3gpIFwKKy0gICAgICAgIGludCBhbGcjI19Jbml0KGN4IyNfQ1RY ICpjKQorKyMgIGRlZmluZSBub25maXBzX21kX2luaXRfY3R4KGFsZywgY3gpIGZpcHNfbWRfaW5p dF9jdHgoYWxnLCBjeCkKKyAjICBkZWZpbmUgZmlwc19jaXBoZXJfYWJvcnQoYWxnKSB3aGlsZSgw KQorICMgZW5kaWYKKyAKK0BAIC02MzcsNiArNjQyLDkgQEAgaW50IENSWVBUT19tZW1jbXAoY29u c3Qgdm9pZCAqYSwgY29uc3QgdgorICAqLworIHZvaWQgRVJSX2xvYWRfQ1JZUFRPX3N0cmluZ3Mo dm9pZCk7CisgCisrIyBkZWZpbmUgT1BFTlNTTF9IQVZFX0lOSVQgICAgICAgMQorK3ZvaWQgT1BF TlNTTF9pbml0X2xpYnJhcnkodm9pZCk7CisrCisgLyogRXJyb3IgY29kZXMgZm9yIHRoZSBDUllQ VE8gZnVuY3Rpb25zLiAqLworIAorIC8qIEZ1bmN0aW9uIGNvZGVzLiAqLworZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMmMvY3J5cHRvL2Rlcy9kZXMuaC5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9k ZXMvZGVzLmgKKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZGVzL2Rlcy5oLmZpcHMJMjAxNS0w Ni0xNSAxNzoyOTo1OS45MTUyODE4NTIgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8v ZGVzL2Rlcy5oCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDAwMjgzNzk5ICswMjAwCitAQCAtMjMxLDEw ICsyMzEsNiBAQCBpbnQgREVTX3NldF9rZXkoY29uc3RfREVTX2NibG9jayAqa2V5LCBECisgaW50 IERFU19rZXlfc2NoZWQoY29uc3RfREVTX2NibG9jayAqa2V5LCBERVNfa2V5X3NjaGVkdWxlICpz Y2hlZHVsZSk7CisgaW50IERFU19zZXRfa2V5X2NoZWNrZWQoY29uc3RfREVTX2NibG9jayAqa2V5 LCBERVNfa2V5X3NjaGVkdWxlICpzY2hlZHVsZSk7Cisgdm9pZCBERVNfc2V0X2tleV91bmNoZWNr ZWQoY29uc3RfREVTX2NibG9jayAqa2V5LCBERVNfa2V5X3NjaGVkdWxlICpzY2hlZHVsZSk7Cist IyBpZmRlZiBPUEVOU1NMX0ZJUFMKKy12b2lkIHByaXZhdGVfREVTX3NldF9rZXlfdW5jaGVja2Vk KGNvbnN0X0RFU19jYmxvY2sgKmtleSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERFU19rZXlfc2NoZWR1bGUgKnNjaGVkdWxlKTsKKy0jIGVuZGlmCisgdm9pZCBERVNfc3Ry aW5nX3RvX2tleShjb25zdCBjaGFyICpzdHIsIERFU19jYmxvY2sgKmtleSk7Cisgdm9pZCBERVNf c3RyaW5nX3RvXzJrZXlzKGNvbnN0IGNoYXIgKnN0ciwgREVTX2NibG9jayAqa2V5MSwgREVTX2Ni bG9jayAqa2V5Mik7Cisgdm9pZCBERVNfY2ZiNjRfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBjaGFy ICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRv L2Rlcy9zZXRfa2V5LmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZGVzL3NldF9rZXkuYwor LS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kZXMvc2V0X2tleS5jLmZpcHMJMjAxNS0wNi0xMiAx Njo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZGVzL3Nl dF9rZXkuYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAwMDI4Mzc5OSArMDIwMAorQEAgLTM1OSwxNSAr MzU5LDYgQEAgaW50IERFU19zZXRfa2V5X2NoZWNrZWQoY29uc3RfREVTX2NibG9jaworIH0KKyAK KyB2b2lkIERFU19zZXRfa2V5X3VuY2hlY2tlZChjb25zdF9ERVNfY2Jsb2NrICprZXksIERFU19r ZXlfc2NoZWR1bGUgKnNjaGVkdWxlKQorLSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy17CistICAgIGZp cHNfY2lwaGVyX2Fib3J0KERFUyk7CistICAgIHByaXZhdGVfREVTX3NldF9rZXlfdW5jaGVja2Vk KGtleSwgc2NoZWR1bGUpOworLX0KKy0KKy12b2lkIHByaXZhdGVfREVTX3NldF9rZXlfdW5jaGVj a2VkKGNvbnN0X0RFU19jYmxvY2sgKmtleSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERFU19rZXlfc2NoZWR1bGUgKnNjaGVkdWxlKQorLSNlbmRpZgorIHsKKyAgICAgc3Rh dGljIGNvbnN0IGludCBzaGlmdHMyWzE2XSA9CisgICAgICAgICB7IDAsIDAsIDEsIDEsIDEsIDEs IDEsIDEsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDAgfTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJj L2NyeXB0by9kaC9kaF9nZW4uYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kaC9kaF9nZW4u YworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kaC9kaF9nZW4uYy5maXBzCTIwMTUtMDYtMTIg MTY6NTE6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2RoL2Ro X2dlbi5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDAwMjgzNzk5ICswMjAwCitAQCAtODUsMTAgKzg1 LDYgQEAgaW50IERIX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgoREggKnJldCwgaQorICNlbmRpZgor ICAgICBpZiAocmV0LT5tZXRoLT5nZW5lcmF0ZV9wYXJhbXMpCisgICAgICAgICByZXR1cm4gcmV0 LT5tZXRoLT5nZW5lcmF0ZV9wYXJhbXMocmV0LCBwcmltZV9sZW4sIGdlbmVyYXRvciwgY2IpOwor LSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAgaWYgKEZJUFNfbW9kZSgpKQorLSAgICAgICAgcmV0 dXJuIEZJUFNfZGhfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChyZXQsIHByaW1lX2xlbiwgZ2VuZXJh dG9yLCBjYik7CistI2VuZGlmCisgICAgIHJldHVybiBkaF9idWlsdGluX2dlbnBhcmFtcyhyZXQs IHByaW1lX2xlbiwgZ2VuZXJhdG9yLCBjYik7CisgfQorIAorQEAgLTEyNiw2ICsxMjIsMTggQEAg c3RhdGljIGludCBkaF9idWlsdGluX2dlbnBhcmFtcyhESCAqcmV0LAorICAgICBpbnQgZywgb2sg PSAtMTsKKyAgICAgQk5fQ1RYICpjdHggPSBOVUxMOworIAorKyNpZmRlZiBPUEVOU1NMX0ZJUFMK KysgICAgaWYgKEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQ U19GX0RIX0JVSUxUSU5fR0VOUEFSQU1TLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOwor KyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgICAgaWYgKEZJUFNfbW9kZSgpICYmIChw cmltZV9sZW4gPCBPUEVOU1NMX0RIX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpIHsKKysgICAgICAg IERIZXJyKERIX0ZfREhfQlVJTFRJTl9HRU5QQVJBTVMsIERIX1JfS0VZX1NJWkVfVE9PX1NNQUxM KTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrI2VuZGlmCisrCisgICAgIGN0eCA9IEJO X0NUWF9uZXcoKTsKKyAgICAgaWYgKGN0eCA9PSBOVUxMKQorICAgICAgICAgZ290byBlcnI7Citk aWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZGgvZGguaC5maXBzIG9wZW5zc2wtMS4wLjJj L2NyeXB0by9kaC9kaC5oCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2RoL2RoLmguZmlwcwky MDE1LTA2LTE1IDE3OjI5OjU5Ljg2MDI4MDU5MyArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2Ny eXB0by9kaC9kaC5oCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDAwMjgzNzk5ICswMjAwCitAQCAtNzcs NiArNzcsOCBAQAorICMgIGRlZmluZSBPUEVOU1NMX0RIX01BWF9NT0RVTFVTX0JJVFMgICAgMTAw MDAKKyAjIGVuZGlmCisgCisrIyBkZWZpbmUgT1BFTlNTTF9ESF9GSVBTX01JTl9NT0RVTFVTX0JJ VFMgMTAyNAorKworICMgZGVmaW5lIERIX0ZMQUdfQ0FDSEVfTU9OVF9QICAgICAweDAxCisgCisg LyoKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kaC9kaF9rZXkuYy5maXBzIG9wZW5z c2wtMS4wLjJjL2NyeXB0by9kaC9kaF9rZXkuYworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9k aC9kaF9rZXkuYy5maXBzCTIwMTUtMDYtMTIgMTY6NTE6MjEuMDAwMDAwMDAwICswMjAwCisrKysg b3BlbnNzbC0xLjAuMmMvY3J5cHRvL2RoL2RoX2tleS5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDAw MjgzNzk5ICswMjAwCitAQCAtNjEsNiArNjEsOSBAQAorICNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+ CisgI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgorICNpbmNsdWRlIDxvcGVuc3NsL2RoLmg+Cisr I2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlm CisgCisgc3RhdGljIGludCBnZW5lcmF0ZV9rZXkoREggKmRoKTsKKyBzdGF0aWMgaW50IGNvbXB1 dGVfa2V5KHVuc2lnbmVkIGNoYXIgKmtleSwgY29uc3QgQklHTlVNICpwdWJfa2V5LCBESCAqZGgp OworQEAgLTk3LDcgKzEwMCw3IEBAIGludCBESF9jb21wdXRlX2tleSh1bnNpZ25lZCBjaGFyICpr ZXksIGMKKyBpbnQgREhfY29tcHV0ZV9rZXlfcGFkZGVkKHVuc2lnbmVkIGNoYXIgKmtleSwgY29u c3QgQklHTlVNICpwdWJfa2V5LCBESCAqZGgpCisgeworICAgICBpbnQgcnYsIHBhZDsKKy0gICAg cnYgPSBkaC0+bWV0aC0+Y29tcHV0ZV9rZXkoa2V5LCBwdWJfa2V5LCBkaCk7CisrICAgIHJ2ID0g REhfY29tcHV0ZV9rZXkoa2V5LCBwdWJfa2V5LCBkaCk7CisgICAgIGlmIChydiA8PSAwKQorICAg ICAgICAgcmV0dXJuIHJ2OworICAgICBwYWQgPSBCTl9udW1fYnl0ZXMoZGgtPnApIC0gcnY7CitA QCAtMTE1LDcgKzExOCw3IEBAIHN0YXRpYyBESF9NRVRIT0QgZGhfb3NzbCA9IHsKKyAgICAgZGhf Ym5fbW9kX2V4cCwKKyAgICAgZGhfaW5pdCwKKyAgICAgZGhfZmluaXNoLAorLSAgICAwLAorKyAg ICBESF9GTEFHX0ZJUFNfTUVUSE9ELAorICAgICBOVUxMLAorICAgICBOVUxMCisgfTsKK0BAIC0x MzQsNiArMTM3LDE0IEBAIHN0YXRpYyBpbnQgZ2VuZXJhdGVfa2V5KERIICpkaCkKKyAgICAgQk5f TU9OVF9DVFggKm1vbnQgPSBOVUxMOworICAgICBCSUdOVU0gKnB1Yl9rZXkgPSBOVUxMLCAqcHJp dl9rZXkgPSBOVUxMOworIAorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfbW9k ZSgpCisrICAgICAgICAmJiAoQk5fbnVtX2JpdHMoZGgtPnApIDwgT1BFTlNTTF9ESF9GSVBTX01J Tl9NT0RVTFVTX0JJVFMpKSB7CisrICAgICAgICBESGVycihESF9GX0dFTkVSQVRFX0tFWSwgREhf Ul9LRVlfU0laRV9UT09fU01BTEwpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysjZW5k aWYKKysKKyAgICAgY3R4ID0gQk5fQ1RYX25ldygpOworICAgICBpZiAoY3R4ID09IE5VTEwpCisg ICAgICAgICBnb3RvIGVycjsKK0BAIC0yMTcsNiArMjI4LDEzIEBAIHN0YXRpYyBpbnQgY29tcHV0 ZV9rZXkodW5zaWduZWQgY2hhciAqa2UKKyAgICAgICAgIERIZXJyKERIX0ZfQ09NUFVURV9LRVks IERIX1JfTU9EVUxVU19UT09fTEFSR0UpOworICAgICAgICAgZ290byBlcnI7CisgICAgIH0KKysj aWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUoKQorKyAgICAgICAgJiYgKEJO X251bV9iaXRzKGRoLT5wKSA8IE9QRU5TU0xfREhfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgewor KyAgICAgICAgREhlcnIoREhfRl9DT01QVVRFX0tFWSwgREhfUl9LRVlfU0laRV9UT09fU01BTEwp OworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysjZW5kaWYKKyAKKyAgICAgY3R4ID0gQk5f Q1RYX25ldygpOworICAgICBpZiAoY3R4ID09IE5VTEwpCitAQCAtMjc3LDYgKzI5NSw5IEBAIHN0 YXRpYyBpbnQgZGhfYm5fbW9kX2V4cChjb25zdCBESCAqZGgsIEIKKyAKKyBzdGF0aWMgaW50IGRo X2luaXQoREggKmRoKQorIHsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJUFNfc2VsZnRl c3RfY2hlY2soKTsKKysjZW5kaWYKKyAgICAgZGgtPmZsYWdzIHw9IERIX0ZMQUdfQ0FDSEVfTU9O VF9QOworICAgICByZXR1cm4gKDEpOworIH0KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0 by9kaC9kaF9saWIuYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kaC9kaF9saWIuYworLS0t IG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kaC9kaF9saWIuYy5maXBzCTIwMTUtMDYtMTIgMTY6NTE6 MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2RoL2RoX2xpYi5j CTIwMTUtMDYtMTUgMTc6MzA6MDAuMDAwMjgzNzk5ICswMjAwCitAQCAtODAsMTQgKzgwLDcgQEAg dm9pZCBESF9zZXRfZGVmYXVsdF9tZXRob2QoY29uc3QgREhfTUVUSAorIGNvbnN0IERIX01FVEhP RCAqREhfZ2V0X2RlZmF1bHRfbWV0aG9kKHZvaWQpCisgeworICAgICBpZiAoIWRlZmF1bHRfREhf bWV0aG9kKSB7CistI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICAgICAgaWYgKEZJUFNfbW9kZSgp KQorLSAgICAgICAgICAgIHJldHVybiBGSVBTX2RoX29wZW5zc2woKTsKKy0gICAgICAgIGVsc2UK Ky0gICAgICAgICAgICByZXR1cm4gREhfT3BlblNTTCgpOworLSNlbHNlCisgICAgICAgICBkZWZh dWx0X0RIX21ldGhvZCA9IERIX09wZW5TU0woKTsKKy0jZW5kaWYKKyAgICAgfQorICAgICByZXR1 cm4gZGVmYXVsdF9ESF9tZXRob2Q7CisgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRv L2RzYS9kc2FfZXJyLmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZHNhL2RzYV9lcnIuYwor LS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kc2EvZHNhX2Vyci5jLmZpcHMJMjAxNS0wNi0xMiAx Njo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZHNhL2Rz YV9lcnIuYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAwMTI4MzgyMiArMDIwMAorQEAgLTc0LDYgKzc0 LDggQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBEU0Ffc3RyX2Z1bmN0c1tdCisgICAgIHtFUlJf RlVOQyhEU0FfRl9ET19EU0FfUFJJTlQpLCAiRE9fRFNBX1BSSU5UIn0sCisgICAgIHtFUlJfRlVO QyhEU0FfRl9EU0FQQVJBTVNfUFJJTlQpLCAiRFNBcGFyYW1zX3ByaW50In0sCisgICAgIHtFUlJf RlVOQyhEU0FfRl9EU0FQQVJBTVNfUFJJTlRfRlApLCAiRFNBcGFyYW1zX3ByaW50X2ZwIn0sCisr ICAgIHtFUlJfRlVOQyhEU0FfRl9EU0FfQlVJTFRJTl9LRVlHRU4pLCAiZHNhX2J1aWx0aW5fa2V5 Z2VuIn0sCisrICAgIHtFUlJfRlVOQyhEU0FfRl9EU0FfQlVJTFRJTl9QQVJBTUdFTiksICJkc2Ff YnVpbHRpbl9wYXJhbWdlbiJ9LAorICAgICB7RVJSX0ZVTkMoRFNBX0ZfRFNBX0JVSUxUSU5fUEFS QU1HRU4yKSwgIkRTQV9CVUlMVElOX1BBUkFNR0VOMiJ9LAorICAgICB7RVJSX0ZVTkMoRFNBX0Zf RFNBX0RPX1NJR04pLCAiRFNBX2RvX3NpZ24ifSwKKyAgICAge0VSUl9GVU5DKERTQV9GX0RTQV9E T19WRVJJRlkpLCAiRFNBX2RvX3ZlcmlmeSJ9LAorQEAgLTEwOSw2ICsxMTEsOCBAQCBzdGF0aWMg RVJSX1NUUklOR19EQVRBIERTQV9zdHJfcmVhc29uc1tdCisgICAgIHtFUlJfUkVBU09OKERTQV9S X0RFQ09ERV9FUlJPUiksICJkZWNvZGUgZXJyb3IifSwKKyAgICAge0VSUl9SRUFTT04oRFNBX1Jf SU5WQUxJRF9ESUdFU1RfVFlQRSksICJpbnZhbGlkIGRpZ2VzdCB0eXBlIn0sCisgICAgIHtFUlJf UkVBU09OKERTQV9SX0lOVkFMSURfUEFSQU1FVEVSUyksICJpbnZhbGlkIHBhcmFtZXRlcnMifSwK KysgICAge0VSUl9SRUFTT04oRFNBX1JfS0VZX1NJWkVfSU5WQUxJRCksICJrZXkgc2l6ZSBpbnZh bGlkIn0sCisrICAgIHtFUlJfUkVBU09OKERTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCksICJrZXkg c2l6ZSB0b28gc21hbGwifSwKKyAgICAge0VSUl9SRUFTT04oRFNBX1JfTUlTU0lOR19QQVJBTUVU RVJTKSwgIm1pc3NpbmcgcGFyYW1ldGVycyJ9LAorICAgICB7RVJSX1JFQVNPTihEU0FfUl9NT0RV TFVTX1RPT19MQVJHRSksICJtb2R1bHVzIHRvbyBsYXJnZSJ9LAorICAgICB7RVJSX1JFQVNPTihE U0FfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMpLCAibmVlZCBuZXcgc2V0dXAgdmFsdWVzIn0sCitk aWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZHNhL2RzYV9nZW4uYy5maXBzIG9wZW5zc2wt MS4wLjJjL2NyeXB0by9kc2EvZHNhX2dlbi5jCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2Rz YS9kc2FfZ2VuLmMuZmlwcwkyMDE1LTA2LTEyIDE2OjUxOjIxLjAwMDAwMDAwMCArMDIwMAorKysr IG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kc2EvZHNhX2dlbi5jCTIwMTUtMDYtMTUgMTc6MzA6MDAu MDAxMjgzODIyICswMjAwCitAQCAtOTEsNiArOTEsMTYgQEAKKyAjICBpbmNsdWRlIDxvcGVuc3Ns L2ZpcHMuaD4KKyAjIGVuZGlmCisgCisrIyBpZm5kZWYgT1BFTlNTTF9GSVBTCisrc3RhdGljIGlu dCBGSVBTX2RzYV9nZW5lcmF0ZV9wcShCTl9DVFggKmN0eCwgc2l6ZV90IGJpdHMsIHNpemVfdCBx Yml0cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVWUF9NRCAqZXZw bWQsIHVuc2lnbmVkIGNoYXIgKnNlZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgc2VlZF9sZW4sIEJJR05VTSAqKnBfcmV0LCBCSUdOVU0gKipxX3JldCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY291bnRlcl9yZXQsIEJOX0dFTkNCICpjYik7 Cisrc3RhdGljIGludCBGSVBTX2RzYV9nZW5lcmF0ZV9nKEJOX0NUWCAqY3R4LCBCSUdOVU0gKnAs IEJJR05VTSAqcSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklHTlVNICoqZ19y ZXQsIHVuc2lnbmVkIGxvbmcgKmhfcmV0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBCTl9HRU5DQiAqY2IpOworKyMgZW5kaWYKKysKKyBpbnQgRFNBX2dlbmVyYXRlX3BhcmFtZXRl cnNfZXgoRFNBICpyZXQsIGludCBiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICpzZWVkX2luLCBpbnQgc2VlZF9sZW4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCAqY291bnRlcl9yZXQsIHVuc2lnbmVkIGxvbmcgKmhf cmV0LAorQEAgLTEwNiwxMyArMTE2LDYgQEAgaW50IERTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4 KERTQSAqcmV0LAorICAgICBpZiAocmV0LT5tZXRoLT5kc2FfcGFyYW1nZW4pCisgICAgICAgICBy ZXR1cm4gcmV0LT5tZXRoLT5kc2FfcGFyYW1nZW4ocmV0LCBiaXRzLCBzZWVkX2luLCBzZWVkX2xl biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX3JldCwg aF9yZXQsIGNiKTsKKy0jIGlmZGVmIE9QRU5TU0xfRklQUworLSAgICBlbHNlIGlmIChGSVBTX21v ZGUoKSkgeworLSAgICAgICAgcmV0dXJuIEZJUFNfZHNhX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgo cmV0LCBiaXRzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VlZF9pbiwgc2VlZF9sZW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb3VudGVyX3JldCwgaF9yZXQsIGNiKTsKKy0gICAgfQorLSMgZW5kaWYK KyAgICAgZWxzZSB7CisgICAgICAgICBjb25zdCBFVlBfTUQgKmV2cG1kOworICAgICAgICAgc2l6 ZV90IHFiaXRzID0gYml0cyA+PSAyMDQ4ID8gMjU2IDogMTYwOworQEAgLTEyNiw4MCArMTI5LDE1 NiBAQCBpbnQgRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgoRFNBICpyZXQsCisgICAgICAgICB9 CisgCisgICAgICAgICByZXR1cm4gZHNhX2J1aWx0aW5fcGFyYW1nZW4ocmV0LCBiaXRzLCBxYml0 cywgZXZwbWQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZF9pbiwg c2VlZF9sZW4sIE5VTEwsIGNvdW50ZXJfcmV0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlZWRfaW4sIHNlZWRfbGVuLCBjb3VudGVyX3JldCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBoX3JldCwgY2IpOworICAgICB9CisgfQorIAorKyMgaWZk ZWYgT1BFTlNTTF9GSVBTCisraW50IEZJUFNfZHNhX2J1aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQs IHNpemVfdCBiaXRzLCBzaXplX3QgcWJpdHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgRVZQX01EICpldnBtZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCB1bnNpZ25lZCBjaGFyICpzZWVkX2luLCBzaXplX3Qgc2VlZF9sZW4sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50ICpjb3VudGVyX3JldCwgdW5zaWduZWQgbG9uZyAqaF9y ZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQk5fR0VOQ0IgKmNiKQorK3sKKysg ICAgcmV0dXJuIGRzYV9idWlsdGluX3BhcmFtZ2VuKHJldCwgYml0cywgcWJpdHMsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBldnBtZCwgc2VlZF9pbiwgc2VlZF9sZW4sCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX3JldCwgaF9yZXQsIGNiKTsKKyt9 CisrIyBlbmRpZgorKworIGludCBkc2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV90 IGJpdHMsIHNpemVfdCBxYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRVZQ X01EICpldnBtZCwgY29uc3QgdW5zaWduZWQgY2hhciAqc2VlZF9pbiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZV90IHNlZWRfbGVuLCB1bnNpZ25lZCBjaGFyICpzZWVkX291dCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNlZWRfbGVuLAorICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgKmNvdW50ZXJfcmV0LCB1bnNpZ25lZCBsb25nICpoX3JldCwgQk5fR0VO Q0IgKmNiKQorIHsKKyAgICAgaW50IG9rID0gMDsKKyAgICAgdW5zaWduZWQgY2hhciBzZWVkW1NI QTI1Nl9ESUdFU1RfTEVOR1RIXTsKKysgICAgQklHTlVNICpnID0gTlVMTCwgKnEgPSBOVUxMLCAq cCA9IE5VTEw7CisrICAgIHNpemVfdCBxc2l6ZSA9IHFiaXRzID4+IDM7CisrICAgIEJOX0NUWCAq Y3R4ID0gTlVMTDsKKysgICAgCisrIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNf c2VsZnRlc3RfZmFpbGVkKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0RTQV9CVUlMVElO X1BBUkFNR0VOLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAgZ290byBl cnI7CisrICAgIH0KKysKKysgICAgaWYgKEZJUFNfbW9kdWxlX21vZGUoKSAmJgorKyAgICAgICAg KGJpdHMgIT0gMTAyNCB8fCBxYml0cyAhPSAxNjApICYmCisrICAgICAgICAoYml0cyAhPSAyMDQ4 IHx8IHFiaXRzICE9IDIyNCkgJiYKKysgICAgICAgIChiaXRzICE9IDIwNDggfHwgcWJpdHMgIT0g MjU2KSAmJiAoYml0cyAhPSAzMDcyIHx8IHFiaXRzICE9IDI1NikpIHsKKysgICAgICAgIERTQWVy cihEU0FfRl9EU0FfQlVJTFRJTl9QQVJBTUdFTiwgRFNBX1JfS0VZX1NJWkVfSU5WQUxJRCk7Cisr ICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKyMgZW5kaWYKKysgICAgaWYgKHNlZWRfbGVuICYm IChzZWVkX2xlbiA8IChzaXplX3QpcXNpemUpKQorKyAgICAgICAgc2VlZF9pbiA9IE5VTEw7ICAg ICAgICAgLyogc2VlZCBidWZmZXIgdG9vIHNtYWxsIC0tIGlnbm9yZSAqLworKyAgICBpZiAoc2Vl ZF9sZW4gPiBzaXplb2Yoc2VlZCkpCisrICAgICAgICBzZWVkX2xlbiA9IHNpemVvZihzZWVkKTsg LyogQXBwLiAyLjIgb2YgRklQUyBQVUIgMTg2IGFsbG93cyBsYXJnZXIgU0VFRCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBidXQgb3VyIGludGVybmFsIGJ1ZmZlcnMgYXJl IHJlc3RyaWN0ZWQgdG8gMjU2IGJpdHMqLworKyAgICBpZiAoc2VlZF9pbiAhPSBOVUxMKQorKyAg ICAgICAgbWVtY3B5KHNlZWQsIHNlZWRfaW4sIHNlZWRfbGVuKTsKKysgICAgZWxzZQorKyAgICAg ICAgc2VlZF9sZW4gPSAwOworKyAgICAgICAgCisrICAgIGlmICgoY3R4ID0gQk5fQ1RYX25ldygp KSA9PSBOVUxMKQorKyAgICAgICAgZ290byBlcnI7CisrIAorKyAgICBCTl9DVFhfc3RhcnQoY3R4 KTsKKysgCisrICAgIGlmICghRklQU19kc2FfZ2VuZXJhdGVfcHEoY3R4LCBiaXRzLCBxYml0cywg ZXZwbWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZCwgc2VlZF9sZW4sICZw LCAmcSwgY291bnRlcl9yZXQsIGNiKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAKKysgICAgaWYg KCFGSVBTX2RzYV9nZW5lcmF0ZV9nKGN0eCwgcCwgcSwgJmcsIGhfcmV0LCBjYikpCisrICAgICAg ICBnb3RvIGVycjsKKysgCisrICAgIG9rID0gMTsKKysgZXJyOgorKyAgICBpZiAob2spIHsKKysg ICAgICAgIGlmIChyZXQtPnApIHsKKysgICAgICAgICAgICBCTl9mcmVlKHJldC0+cCk7CisrICAg ICAgICAgICAgcmV0LT5wID0gTlVMTDsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChyZXQtPnEp IHsKKysgICAgICAgICAgICBCTl9mcmVlKHJldC0+cSk7CisrICAgICAgICAgICAgcmV0LT5xID0g TlVMTDsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChyZXQtPmcpIHsKKysgICAgICAgICAgICBC Tl9mcmVlKHJldC0+Zyk7CisrICAgICAgICAgICAgcmV0LT5nID0gTlVMTDsKKysgICAgICAgIH0K KysgICAgICAgIHJldC0+cCA9IEJOX2R1cChwKTsKKysgICAgICAgIHJldC0+cSA9IEJOX2R1cChx KTsKKysgICAgICAgIHJldC0+ZyA9IEJOX2R1cChnKTsKKysgICAgICAgIGlmIChyZXQtPnAgPT0g TlVMTCB8fCByZXQtPnEgPT0gTlVMTCB8fCByZXQtPmcgPT0gTlVMTCkKKysgICAgICAgICAgICBv ayA9IDA7CisrICAgIH0KKysgICAgaWYgKGN0eCkgeworKyAgICAgICAgQk5fQ1RYX2VuZChjdHgp OworKyAgICAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKKysgICAgfQorKyAgICByZXR1cm4gb2s7Cisr fQorKworKyMgaWZuZGVmIE9QRU5TU0xfRklQUworK3N0YXRpYworKyMgZW5kaWYKKytpbnQgRklQ U19kc2FfZ2VuZXJhdGVfcHEoQk5fQ1RYICpjdHgsIHNpemVfdCBiaXRzLCBzaXplX3QgcWJpdHMs CisrICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVWUF9NRCAqZXZwbWQsIHVuc2lnbmVk IGNoYXIgKnNlZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZWVkX2xlbiwgQklH TlVNICoqcF9yZXQsIEJJR05VTSAqKnFfcmV0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgKmNvdW50ZXJfcmV0LCBCTl9HRU5DQiAqY2IpCisreworKyAgICBpbnQgb2sgPSAwOworICAg ICB1bnNpZ25lZCBjaGFyIG1kW1NIQTI1Nl9ESUdFU1RfTEVOR1RIXTsKKy0gICAgdW5zaWduZWQg Y2hhciBidWZbU0hBMjU2X0RJR0VTVF9MRU5HVEhdLCBidWYyW1NIQTI1Nl9ESUdFU1RfTEVOR1RI XTsKKysgICAgdW5zaWduZWQgY2hhciBidWZbU0hBMjU2X0RJR0VTVF9MRU5HVEhdOworICAgICBC SUdOVU0gKnIwLCAqVywgKlgsICpjLCAqdGVzdDsKKy0gICAgQklHTlVNICpnID0gTlVMTCwgKnEg PSBOVUxMLCAqcCA9IE5VTEw7CistICAgIEJOX01PTlRfQ1RYICptb250ID0gTlVMTDsKKy0gICAg aW50IGksIGssIG4gPSAwLCBtID0gMCwgcXNpemUgPSBxYml0cyA+PiAzOworKyAgICBCSUdOVU0g KnEgPSBOVUxMLCAqcCA9IE5VTEw7CisrICAgIGludCBpLCBrLCBiLCBuID0gMCwgbSA9IDAsIHFz aXplID0gcWJpdHMgPj4gMzsKKyAgICAgaW50IGNvdW50ZXIgPSAwOworICAgICBpbnQgciA9IDA7 CistICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKKy0gICAgdW5zaWduZWQgaW50IGggPSAyOworIAor ICAgICBpZiAocXNpemUgIT0gU0hBX0RJR0VTVF9MRU5HVEggJiYgcXNpemUgIT0gU0hBMjI0X0RJ R0VTVF9MRU5HVEggJiYKKyAgICAgICAgIHFzaXplICE9IFNIQTI1Nl9ESUdFU1RfTEVOR1RIKQor ICAgICAgICAgLyogaW52YWxpZCBxIHNpemUgKi8KKyAgICAgICAgIHJldHVybiAwOworIAorLSAg ICBpZiAoZXZwbWQgPT0gTlVMTCkKKy0gICAgICAgIC8qIHVzZSBTSEExIGFzIGRlZmF1bHQgKi8K Ky0gICAgICAgIGV2cG1kID0gRVZQX3NoYTEoKTsKKysgICAgaWYgKGV2cG1kID09IE5VTEwpIHsK KysgICAgICAgIGlmIChxYml0cyA8PSAxNjApCisrICAgICAgICAgICAgZXZwbWQgPSBFVlBfc2hh MSgpOworKyAgICAgICAgZWxzZSBpZiAocWJpdHMgPD0gMjI0KQorKyAgICAgICAgICAgIGV2cG1k ID0gRVZQX3NoYTIyNCgpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGV2cG1kID0gRVZQ X3NoYTI1NigpOworKyAgICB9CisgCisgICAgIGlmIChiaXRzIDwgNTEyKQorICAgICAgICAgYml0 cyA9IDUxMjsKKyAKKyAgICAgYml0cyA9IChiaXRzICsgNjMpIC8gNjQgKiA2NDsKKyAKKy0gICAg LyoKKy0gICAgICogTkI6IHNlZWRfbGVuID09IDAgaXMgc3BlY2lhbCBjYXNlOiBjb3B5IGdlbmVy YXRlZCBzZWVkIHRvIHNlZWRfaW4gaWYKKy0gICAgICogaXQgaXMgbm90IE5VTEwuCistICAgICAq LworLSAgICBpZiAoc2VlZF9sZW4gJiYgKHNlZWRfbGVuIDwgKHNpemVfdClxc2l6ZSkpCistICAg ICAgICBzZWVkX2luID0gTlVMTDsgICAgICAgICAvKiBzZWVkIGJ1ZmZlciB0b28gc21hbGwgLS0g aWdub3JlICovCistICAgIGlmIChzZWVkX2xlbiA+IChzaXplX3QpcXNpemUpCistICAgICAgICBz ZWVkX2xlbiA9IHFzaXplOyAgICAgICAvKiBBcHAuIDIuMiBvZiBGSVBTIFBVQiAxODYgYWxsb3dz IGxhcmdlcgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogU0VFRCwgYnV0IG91 ciBpbnRlcm5hbCBidWZmZXJzIGFyZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICogcmVzdHJpY3RlZCB0byAxNjAgYml0cyAqLworLSAgICBpZiAoc2VlZF9pbiAhPSBOVUxMKQor LSAgICAgICAgbWVtY3B5KHNlZWQsIHNlZWRfaW4sIHNlZWRfbGVuKTsKKy0KKy0gICAgaWYgKChj dHggPSBCTl9DVFhfbmV3KCkpID09IE5VTEwpCistICAgICAgICBnb3RvIGVycjsKKy0KKy0gICAg aWYgKChtb250ID0gQk5fTU9OVF9DVFhfbmV3KCkpID09IE5VTEwpCistICAgICAgICBnb3RvIGVy cjsKKy0KKy0gICAgQk5fQ1RYX3N0YXJ0KGN0eCk7CisgICAgIHIwID0gQk5fQ1RYX2dldChjdHgp OworLSAgICBnID0gQk5fQ1RYX2dldChjdHgpOworICAgICBXID0gQk5fQ1RYX2dldChjdHgpOwor LSAgICBxID0gQk5fQ1RYX2dldChjdHgpOworKyAgICAqcV9yZXQgPSBxID0gQk5fQ1RYX2dldChj dHgpOworICAgICBYID0gQk5fQ1RYX2dldChjdHgpOworICAgICBjID0gQk5fQ1RYX2dldChjdHgp OworLSAgICBwID0gQk5fQ1RYX2dldChjdHgpOworKyAgICAqcF9yZXQgPSBwID0gQk5fQ1RYX2dl dChjdHgpOworICAgICB0ZXN0ID0gQk5fQ1RYX2dldChjdHgpOworIAorICAgICBpZiAoIUJOX2xz aGlmdCh0ZXN0LCBCTl92YWx1ZV9vbmUoKSwgYml0cyAtIDEpKQorICAgICAgICAgZ290byBlcnI7 CisgCisrICAgIC8qIHN0ZXAgMyBuID0gXGxjZWlsIGJpdHMgLyBxYml0cyBccmNlaWwgLSAxICov CisrICAgIG4gPSAoYml0cyArIHFiaXRzIC0gMSkgLyBxYml0cyAtIDE7CisrICAgIC8qIHN0ZXAg NCBiID0gYml0cyAtIDEgLSBuICogcWJpdHMgKi8KKysgICAgYiA9IGJpdHMgLSAxIC0gbiAqIHFi aXRzOworKyAgICAKKyAgICAgZm9yICg7OykgeworICAgICAgICAgZm9yICg7OykgeyAgICAgICAg ICAgICAgLyogZmluZCBxICovCisgICAgICAgICAgICAgaW50IHNlZWRfaXNfcmFuZG9tOworIAor LSAgICAgICAgICAgIC8qIHN0ZXAgMSAqLworKyAgICAgICAgICAgIC8qIHN0ZXAgNSBnZW5lcmF0 ZSBzZWVkICovCisgICAgICAgICAgICAgaWYgKCFCTl9HRU5DQl9jYWxsKGNiLCAwLCBtKyspKQor ICAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAKK0BAIC0yMTMsMjkgKzI5MiwxOCBAQCBpbnQg ZHNhX2J1aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVfCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKiBiZSBiYWQgKi8KKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAg bWVtY3B5KGJ1Ziwgc2VlZCwgcXNpemUpOworLSAgICAgICAgICAgIG1lbWNweShidWYyLCBzZWVk LCBxc2l6ZSk7CistICAgICAgICAgICAgLyogcHJlY29tcHV0ZSAiU0VFRCArIDEiIGZvciBzdGVw IDc6ICovCistICAgICAgICAgICAgZm9yIChpID0gcXNpemUgLSAxOyBpID49IDA7IGktLSkgewor LSAgICAgICAgICAgICAgICBidWZbaV0rKzsKKy0gICAgICAgICAgICAgICAgaWYgKGJ1ZltpXSAh PSAwKQorLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgfQorIAorLSAg ICAgICAgICAgIC8qIHN0ZXAgMiAqLworKyAgICAgICAgICAgIC8qIHN0ZXAgNiBVID0gaGFzaChz ZWVkKSAqLworICAgICAgICAgICAgIGlmICghRVZQX0RpZ2VzdChzZWVkLCBxc2l6ZSwgbWQsIE5V TEwsIGV2cG1kLCBOVUxMKSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnI7CistICAgICAgICAg ICAgaWYgKCFFVlBfRGlnZXN0KGJ1ZiwgcXNpemUsIGJ1ZjIsIE5VTEwsIGV2cG1kLCBOVUxMKSkK Ky0gICAgICAgICAgICAgICAgZ290byBlcnI7CistICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8 IHFzaXplOyBpKyspCistICAgICAgICAgICAgICAgIG1kW2ldIF49IGJ1ZjJbaV07CisgCistICAg ICAgICAgICAgLyogc3RlcCAzICovCisrICAgICAgICAgICAgLyogc3RlcCA3IHEgPSAyXihxYml0 cy0xKSArIFUgKyAxIC0gKFUgbW9kIDIpICovCisgICAgICAgICAgICAgbWRbMF0gfD0gMHg4MDsK KyAgICAgICAgICAgICBtZFtxc2l6ZSAtIDFdIHw9IDB4MDE7CisgICAgICAgICAgICAgaWYgKCFC Tl9iaW4yYm4obWQsIHFzaXplLCBxKSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnI7CisgCist ICAgICAgICAgICAgLyogc3RlcCA0ICovCisrICAgICAgICAgICAgLyogc3RlcCA4IHRlc3QgZm9y IHByaW1lICg2NCByb3VuZCBvZiBSYWJpbi1NaWxsZXIpICovCisgICAgICAgICAgICAgciA9IEJO X2lzX3ByaW1lX2Zhc3R0ZXN0X2V4KHEsIERTU19wcmltZV9jaGVja3MsIGN0eCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZF9pc19yYW5kb20sIGNiKTsKKyAg ICAgICAgICAgICBpZiAociA+IDApCitAQCAtMjQzLDggKzMxMSw2IEBAIGludCBkc2FfYnVpbHRp bl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV8KKyAgICAgICAgICAgICBpZiAociAhPSAwKQorICAg ICAgICAgICAgICAgICBnb3RvIGVycjsKKyAKKy0gICAgICAgICAgICAvKiBkbyBhIGNhbGxiYWNr IGNhbGwgKi8KKy0gICAgICAgICAgICAvKiBzdGVwIDUgKi8KKyAgICAgICAgIH0KKyAKKyAgICAg ICAgIGlmICghQk5fR0VOQ0JfY2FsbChjYiwgMiwgMCkpCitAQCAtMjUyLDE5ICszMTgsMTYgQEAg aW50IGRzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBzaXplXworICAgICAgICAgaWYgKCFC Tl9HRU5DQl9jYWxsKGNiLCAzLCAwKSkKKyAgICAgICAgICAgICBnb3RvIGVycjsKKyAKKy0gICAg ICAgIC8qIHN0ZXAgNiAqLworKyAgICAgICAgLyogc3RlcCAxMSAqLworICAgICAgICAgY291bnRl ciA9IDA7CistICAgICAgICAvKiAib2Zmc2V0ID0gMiIgKi8KKy0KKy0gICAgICAgIG4gPSAoYml0 cyAtIDEpIC8gMTYwOworKyAgICAgICAgLyogIm9mZnNldCA9IDEiICovCisgCisgICAgICAgICBm b3IgKDs7KSB7CisgICAgICAgICAgICAgaWYgKChjb3VudGVyICE9IDApICYmICFCTl9HRU5DQl9j YWxsKGNiLCAwLCBjb3VudGVyKSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnI7CisgCistICAg ICAgICAgICAgLyogc3RlcCA3ICovCisrICAgICAgICAgICAgLyogc3RlcCAxMS4xLCAxMS4yIG9i dGFpbiBXICovCisgICAgICAgICAgICAgQk5femVybyhXKTsKKy0gICAgICAgICAgICAvKiBub3cg J2J1ZicgY29udGFpbnMgIlNFRUQgKyBvZmZzZXQgLSAxIiAqLworICAgICAgICAgICAgIGZvciAo ayA9IDA7IGsgPD0gbjsgaysrKSB7CisgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAg ICAgICAqIG9idGFpbiAiU0VFRCArIG9mZnNldCArIGsiIGJ5IGluY3JlbWVudGluZzoKK0BAIC0y NzgsMzYgKzM0MSwzNyBAQCBpbnQgZHNhX2J1aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVf CisgICAgICAgICAgICAgICAgIGlmICghRVZQX0RpZ2VzdChidWYsIHFzaXplLCBtZCwgTlVMTCwg ZXZwbWQsIE5VTEwpKQorICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CisgCistICAgICAg ICAgICAgICAgIC8qIHN0ZXAgOCAqLworICAgICAgICAgICAgICAgICBpZiAoIUJOX2JpbjJibiht ZCwgcXNpemUsIHIwKSkKKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOworLSAgICAgICAg ICAgICAgICBpZiAoIUJOX2xzaGlmdChyMCwgcjAsIChxc2l6ZSA8PCAzKSAqIGspKQorKyAgICAg ICAgICAgICAgICBpZiAoayA9PSBuKQorKyAgICAgICAgICAgICAgICAgICAgQk5fbWFza19iaXRz KHIwLCBiKTsKKysgICAgICAgICAgICAgICAgaWYgKCFCTl9sc2hpZnQocjAsIHIwLCBxYml0cyAq IGspKQorICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICAgICAgIGlm ICghQk5fYWRkKFcsIFcsIHIwKSkKKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAg ICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAvKiBtb3JlIG9mIHN0ZXAgOCAqLworLSAgICAg ICAgICAgIGlmICghQk5fbWFza19iaXRzKFcsIGJpdHMgLSAxKSkKKy0gICAgICAgICAgICAgICAg Z290byBlcnI7CisrICAgICAgICAgICAgLyogc3RlcCAxMS4zIFggPSBXICsgMl4oTC0xKSAqLwor ICAgICAgICAgICAgIGlmICghQk5fY29weShYLCBXKSkKKyAgICAgICAgICAgICAgICAgZ290byBl cnI7CisgICAgICAgICAgICAgaWYgKCFCTl9hZGQoWCwgWCwgdGVzdCkpCisgICAgICAgICAgICAg ICAgIGdvdG8gZXJyOworIAorLSAgICAgICAgICAgIC8qIHN0ZXAgOSAqLworKyAgICAgICAgICAg IC8qIHN0ZXAgMTEuNCBjID0gWCBtb2QgMipxICovCisgICAgICAgICAgICAgaWYgKCFCTl9sc2hp ZnQxKHIwLCBxKSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICAgaWYg KCFCTl9tb2QoYywgWCwgcjAsIGN0eCkpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyOworKwor KyAgICAgICAgICAgIC8qIHN0ZXAgMTEuNSBwID0gWCAtIChjIC0gMSkgKi8KKyAgICAgICAgICAg ICBpZiAoIUJOX3N1YihyMCwgYywgQk5fdmFsdWVfb25lKCkpKQorICAgICAgICAgICAgICAgICBn b3RvIGVycjsKKyAgICAgICAgICAgICBpZiAoIUJOX3N1YihwLCBYLCByMCkpCisgICAgICAgICAg ICAgICAgIGdvdG8gZXJyOworIAorLSAgICAgICAgICAgIC8qIHN0ZXAgMTAgKi8KKysgICAgICAg ICAgICAvKiBzdGVwIDExLjYgKi8KKyAgICAgICAgICAgICBpZiAoQk5fY21wKHAsIHRlc3QpID49 IDApIHsKKy0gICAgICAgICAgICAgICAgLyogc3RlcCAxMSAqLworKyAgICAgICAgICAgICAgICAv KiBzdGVwIDExLjcgKi8KKyAgICAgICAgICAgICAgICAgciA9IEJOX2lzX3ByaW1lX2Zhc3R0ZXN0 X2V4KHAsIERTU19wcmltZV9jaGVja3MsIGN0eCwgMSwgY2IpOworICAgICAgICAgICAgICAgICBp ZiAociA+IDApCisgICAgICAgICAgICAgICAgICAgICBnb3RvIGVuZDsgICAvKiBmb3VuZCBpdCAq LworQEAgLTMxNSwxMiArMzc5LDEyIEBAIGludCBkc2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJl dCwgc2l6ZV8KKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgIH0K KyAKKy0gICAgICAgICAgICAvKiBzdGVwIDEzICovCisrICAgICAgICAgICAgLyogc3RlcCAxMS45 ICovCisgICAgICAgICAgICAgY291bnRlcisrOworICAgICAgICAgICAgIC8qICJvZmZzZXQgPSBv ZmZzZXQgKyBuICsgMSIgKi8KKyAKKy0gICAgICAgICAgICAvKiBzdGVwIDE0ICovCistICAgICAg ICAgICAgaWYgKGNvdW50ZXIgPj0gNDA5NikKKysgICAgICAgICAgICAvKiBzdGVwIDEyICovCisr ICAgICAgICAgICAgaWYgKGNvdW50ZXIgPj0gNCAqIGJpdHMpCisgICAgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgfQorICAgICB9CitAQCAtMzI4LDcgKzM5MiwzMyBAQCBpbnQgZHNhX2J1 aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVfCisgICAgIGlmICghQk5fR0VOQ0JfY2FsbChj YiwgMiwgMSkpCisgICAgICAgICBnb3RvIGVycjsKKyAKKy0gICAgLyogV2Ugbm93IG5lZWQgdG8g Z2VuZXJhdGUgZyAqLworKyAgICBvayA9IDE7CisrIGVycjoKKysgICAgaWYgKG9rKSB7CisrICAg ICAgICBpZiAoY291bnRlcl9yZXQgIT0gTlVMTCkKKysgICAgICAgICAgICAqY291bnRlcl9yZXQg PSBjb3VudGVyOworKyAgICB9CisrICAgIHJldHVybiBvazsKKyt9CisrCisrIyBpZm5kZWYgT1BF TlNTTF9GSVBTCisrc3RhdGljCisrIyBlbmRpZgorK2ludCBGSVBTX2RzYV9nZW5lcmF0ZV9nKEJO X0NUWCAqY3R4LCBCSUdOVU0gKnAsIEJJR05VTSAqcSwKKysgICAgICAgICAgICAgICAgICAgICAg ICBCSUdOVU0gKipnX3JldCwgdW5zaWduZWQgbG9uZyAqaF9yZXQsIEJOX0dFTkNCICpjYikKKyt7 CisrICAgIGludCBvayA9IDA7CisrICAgIEJJR05VTSAqcjAsICp0ZXN0LCAqZyA9IE5VTEw7Cisr ICAgIEJOX01PTlRfQ1RYICptb250OworKyAgICB1bnNpZ25lZCBpbnQgaCA9IDI7CisrCisrICAg IGlmICgobW9udCA9IEJOX01PTlRfQ1RYX25ldygpKSA9PSBOVUxMKQorKyAgICAgICAgZ290byBl cnI7CisrCisrICAgIHIwID0gQk5fQ1RYX2dldChjdHgpOworKyAgICAqZ19yZXQgPSBnID0gQk5f Q1RYX2dldChjdHgpOworKyAgICB0ZXN0ID0gQk5fQ1RYX2dldChjdHgpOworKworICAgICAvKiBT ZXQgcjA9KHAtMSkvcSAqLworICAgICBpZiAoIUJOX3N1Yih0ZXN0LCBwLCBCTl92YWx1ZV9vbmUo KSkpCisgICAgICAgICBnb3RvIGVycjsKK0BAIC0zNTcsNDYgKzQ0NywxNCBAQCBpbnQgZHNhX2J1 aWx0aW5fcGFyYW1nZW4oRFNBICpyZXQsIHNpemVfCisgICAgIG9rID0gMTsKKyAgZXJyOgorICAg ICBpZiAob2spIHsKKy0gICAgICAgIGlmIChyZXQtPnApCistICAgICAgICAgICAgQk5fZnJlZShy ZXQtPnApOworLSAgICAgICAgaWYgKHJldC0+cSkKKy0gICAgICAgICAgICBCTl9mcmVlKHJldC0+ cSk7CistICAgICAgICBpZiAocmV0LT5nKQorLSAgICAgICAgICAgIEJOX2ZyZWUocmV0LT5nKTsK Ky0gICAgICAgIHJldC0+cCA9IEJOX2R1cChwKTsKKy0gICAgICAgIHJldC0+cSA9IEJOX2R1cChx KTsKKy0gICAgICAgIHJldC0+ZyA9IEJOX2R1cChnKTsKKy0gICAgICAgIGlmIChyZXQtPnAgPT0g TlVMTCB8fCByZXQtPnEgPT0gTlVMTCB8fCByZXQtPmcgPT0gTlVMTCkgeworLSAgICAgICAgICAg IG9rID0gMDsKKy0gICAgICAgICAgICBnb3RvIGVycjsKKy0gICAgICAgIH0KKy0gICAgICAgIGlm IChjb3VudGVyX3JldCAhPSBOVUxMKQorLSAgICAgICAgICAgICpjb3VudGVyX3JldCA9IGNvdW50 ZXI7CisgICAgICAgICBpZiAoaF9yZXQgIT0gTlVMTCkKKyAgICAgICAgICAgICAqaF9yZXQgPSBo OworLSAgICAgICAgaWYgKHNlZWRfb3V0KQorLSAgICAgICAgICAgIG1lbWNweShzZWVkX291dCwg c2VlZCwgcXNpemUpOworLSAgICB9CistICAgIGlmIChjdHgpIHsKKy0gICAgICAgIEJOX0NUWF9l bmQoY3R4KTsKKy0gICAgICAgIEJOX0NUWF9mcmVlKGN0eCk7CisgICAgIH0KKyAgICAgaWYgKG1v bnQgIT0gTlVMTCkKKyAgICAgICAgIEJOX01PTlRfQ1RYX2ZyZWUobW9udCk7CisgICAgIHJldHVy biBvazsKKyB9CisgCistIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKy0jICB1bmRlZiBmaXBzX2RzYV9i dWlsdGluX3BhcmFtZ2VuMgorLWV4dGVybiBpbnQgZmlwc19kc2FfYnVpbHRpbl9wYXJhbWdlbjIo RFNBICpyZXQsIHNpemVfdCBMLCBzaXplX3QgTiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IEVWUF9NRCAqZXZwbWQsCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzZWVkX2luLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNlZWRfbGVuLCBpbnQgaWR4LAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2Vl ZF9vdXQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNvdW50 ZXJfcmV0LCB1bnNpZ25lZCBsb25nICpoX3JldCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJOX0dFTkNCICpjYik7CistIyBlbmRpZgorLQorIC8qCisgICogVGhpcyBp cyBhIHBhcmFtZXRlciBnZW5lcmF0aW9uIGFsZ29yaXRobSBmb3IgdGhlIERTQTIgYWxnb3JpdGht IGFzCisgICogZGVzY3JpYmVkIGluIEZJUFMgMTg2LTMuCitAQCAtNDIyLDE0ICs0ODAsNiBAQCBp bnQgZHNhX2J1aWx0aW5fcGFyYW1nZW4yKERTQSAqcmV0LCBzaXplCisgICAgIEVWUF9NRF9DVFgg bWN0eDsKKyAgICAgdW5zaWduZWQgaW50IGggPSAyOworIAorLSMgaWZkZWYgT1BFTlNTTF9GSVBT CistCistICAgIGlmIChGSVBTX21vZGUoKSkKKy0gICAgICAgIHJldHVybiBmaXBzX2RzYV9idWls dGluX3BhcmFtZ2VuMihyZXQsIEwsIE4sIGV2cG1kLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlZWRfaW4sIHNlZWRfbGVuLCBpZHgsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlZF9vdXQsIGNvdW50ZXJfcmV0LCBoX3Jl dCwgY2IpOworLSMgZW5kaWYKKy0KKyAgICAgRVZQX01EX0NUWF9pbml0KCZtY3R4KTsKKyAKKyAg ICAgaWYgKGV2cG1kID09IE5VTEwpIHsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9k c2EvZHNhLmguZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZHNhL2RzYS5oCistLS0gb3BlbnNz bC0xLjAuMmMvY3J5cHRvL2RzYS9kc2EuaC5maXBzCTIwMTUtMDYtMTUgMTc6Mjk6NTkuNzg0Mjc4 ODUzICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2RzYS9kc2EuaAkyMDE1LTA2LTE1 IDE3OjMwOjAwLjAwMTI4MzgyMiArMDIwMAorQEAgLTg4LDYgKzg4LDggQEAKKyAjICBkZWZpbmUg T1BFTlNTTF9EU0FfTUFYX01PRFVMVVNfQklUUyAgIDEwMDAwCisgIyBlbmRpZgorIAorKyMgZGVm aW5lIE9QRU5TU0xfRFNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUyAxMDI0CisrCisgIyBkZWZpbmUg RFNBX0ZMQUdfQ0FDSEVfTU9OVF9QICAgMHgwMQorIC8qCisgICogbmV3IHdpdGggMC45LjdoOyB0 aGUgYnVpbHQtaW4gRFNBIGltcGxlbWVudGF0aW9uIG5vdyB1c2VzIGNvbnN0YW50IHRpbWUKK0BA IC0yNjUsNiArMjY3LDIwIEBAIGludCBEU0FfcHJpbnRfZnAoRklMRSAqYnAsIGNvbnN0IERTQSAq eCwKKyBESCAqRFNBX2R1cF9ESChjb25zdCBEU0EgKnIpOworICMgZW5kaWYKKyAKKysjIGlmZGVm IE9QRU5TU0xfRklQUworK2ludCBGSVBTX2RzYV9idWlsdGluX3BhcmFtZ2VuKERTQSAqcmV0LCBz aXplX3QgYml0cywgc2l6ZV90IHFiaXRzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IEVWUF9NRCAqZXZwbWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgdW5zaWduZWQgY2hhciAqc2VlZF9pbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplX3Qgc2VlZF9sZW4sIGludCAqY291bnRlcl9yZXQsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqaF9yZXQsIEJOX0dFTkNCICpjYik7CisraW50IEZJ UFNfZHNhX2dlbmVyYXRlX3BxKEJOX0NUWCAqY3R4LCBzaXplX3QgYml0cywgc2l6ZV90IHFiaXRz LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFVlBfTUQgKmV2cG1kLCB1bnNpZ25l ZCBjaGFyICpzZWVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VlZF9sZW4sIEJJ R05VTSAqKnBfcmV0LCBCSUdOVU0gKipxX3JldCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICpjb3VudGVyX3JldCwgQk5fR0VOQ0IgKmNiKTsKKytpbnQgRklQU19kc2FfZ2VuZXJhdGVf ZyhCTl9DVFggKmN0eCwgQklHTlVNICpwLCBCSUdOVU0gKnEsIEJJR05VTSAqKmdfcmV0LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpoX3JldCwgQk5fR0VOQ0Ig KmNiKTsKKysjIGVuZGlmCisrCisgIyBkZWZpbmUgRVZQX1BLRVlfQ1RYX3NldF9kc2FfcGFyYW1n ZW5fYml0cyhjdHgsIG5iaXRzKSBcCisgICAgICAgICBFVlBfUEtFWV9DVFhfY3RybChjdHgsIEVW UF9QS0VZX0RTQSwgRVZQX1BLRVlfT1BfUEFSQU1HRU4sIFwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVWUF9QS0VZX0NUUkxfRFNBX1BBUkFNR0VOX0JJVFMsIG5iaXRzLCBOVUxM KQorQEAgLTI4NywxMSArMzAzLDE0IEBAIHZvaWQgRVJSX2xvYWRfRFNBX3N0cmluZ3Modm9pZCk7 CisgIyBkZWZpbmUgRFNBX0ZfRE9fRFNBX1BSSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDEwNAorICMgZGVmaW5lIERTQV9GX0RTQVBBUkFNU19QUklOVCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAxMDAKKyAjIGRlZmluZSBEU0FfRl9EU0FQQVJBTVNfUFJJTlRfRlAgICAgICAg ICAgICAgICAgICAgICAgICAgMTAxCistIyBkZWZpbmUgRFNBX0ZfRFNBX0JVSUxUSU5fUEFSQU1H RU4yICAgICAgICAgICAgICAgICAgICAgIDEyNgorKyMgZGVmaW5lIERTQV9GX0RTQV9CVUlMVElO X0tFWUdFTiAgICAgICAgICAgICAgICAgICAgICAgICAxMjQKKysjIGRlZmluZSBEU0FfRl9EU0Ff QlVJTFRJTl9QQVJBTUdFTiAgICAgICAgICAgICAgICAgICAgICAgMTIzCisrIyBkZWZpbmUgRFNB X0ZfRFNBX0JVSUxUSU5fUEFSQU1HRU4yICAgICAgICAgICAgICAgICAgICAgIDIyNgorICMgZGVm aW5lIERTQV9GX0RTQV9ET19TSUdOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTIK KyAjIGRlZmluZSBEU0FfRl9EU0FfRE9fVkVSSUZZICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMTEzCistIyBkZWZpbmUgRFNBX0ZfRFNBX0dFTkVSQVRFX0tFWSAgICAgICAgICAgICAgICAg ICAgICAgICAgIDEyNAorLSMgZGVmaW5lIERTQV9GX0RTQV9HRU5FUkFURV9QQVJBTUVURVJTX0VY ICAgICAgICAgICAgICAgICAxMjMKKysjIGRlZmluZSBEU0FfRl9EU0FfR0VORVJBVEVfS0VZICAg ICAgICAgICAgICAgICAgICAgICAgICAgMTI2CisrIyBkZWZpbmUgRFNBX0ZfRFNBX0dFTkVSQVRF X1BBUkFNRVRFUlNfRVggICAgICAgICAgICAgICAgIDEyNworKyMgZGVmaW5lIERTQV9GX0RTQV9H RU5FUkFURV9QQVJBTUVURVJTICAgLyogdW51c2VkICovICAgICAxMjUKKyAjIGRlZmluZSBEU0Ff Rl9EU0FfTkVXX01FVEhPRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAzCisgIyBkZWZp bmUgRFNBX0ZfRFNBX1BBUkFNX0RFQ09ERSAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOQor ICMgZGVmaW5lIERTQV9GX0RTQV9QUklOVF9GUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxMDUKK0BAIC0zMTcsMTIgKzMzNiwxNiBAQCB2b2lkIEVSUl9sb2FkX0RTQV9zdHJpbmdzKHZv aWQpOworICMgZGVmaW5lIERTQV9SX0RBVEFfVE9PX0xBUkdFX0ZPUl9LRVlfU0laRSAgICAgICAg ICAgICAgICAxMDAKKyAjIGRlZmluZSBEU0FfUl9ERUNPREVfRVJST1IgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMTA0CisgIyBkZWZpbmUgRFNBX1JfSU5WQUxJRF9ESUdFU1RfVFlQRSAg ICAgICAgICAgICAgICAgICAgICAgIDEwNgorLSMgZGVmaW5lIERTQV9SX0lOVkFMSURfUEFSQU1F VEVSUyAgICAgICAgICAgICAgICAgICAgICAgICAxMTIKKysjIGRlZmluZSBEU0FfUl9JTlZBTElE X1BBUkFNRVRFUlMgICAgICAgICAgICAgICAgICAgICAgICAgMjEyCisrIyBkZWZpbmUgRFNBX1Jf S0VZX1NJWkVfSU5WQUxJRCAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMworKyMgZGVmaW5l IERTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCAgICAgICAgICAgICAgICAgICAgICAgICAxMTAKKyAj IGRlZmluZSBEU0FfUl9NSVNTSU5HX1BBUkFNRVRFUlMgICAgICAgICAgICAgICAgICAgICAgICAg MTAxCisgIyBkZWZpbmUgRFNBX1JfTU9EVUxVU19UT09fTEFSR0UgICAgICAgICAgICAgICAgICAg ICAgICAgIDEwMworLSMgZGVmaW5lIERTQV9SX05FRURfTkVXX1NFVFVQX1ZBTFVFUyAgICAgICAg ICAgICAgICAgICAgICAxMTAKKysjIGRlZmluZSBEU0FfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMg ICAgICAgICAgICAgICAgICAgICAgMTEyCisgIyBkZWZpbmUgRFNBX1JfTk9OX0ZJUFNfRFNBX01F VEhPRCAgICAgICAgICAgICAgICAgICAgICAgIDExMQorKyMgZGVmaW5lIERTQV9SX05PTl9GSVBT X01FVEhPRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTEKKyAjIGRlZmluZSBEU0FfUl9O T19QQVJBTUVURVJTX1NFVCAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3CisrIyBkZWZpbmUg RFNBX1JfT1BFUkFUSU9OX05PVF9BTExPV0VEX0lOX0ZJUFNfTU9ERSAvKiB1bnVzZWQgKi8gMTEy CisgIyBkZWZpbmUgRFNBX1JfUEFSQU1FVEVSX0VOQ09ESU5HX0VSUk9SICAgICAgICAgICAgICAg ICAgIDEwNQorICMgZGVmaW5lIERTQV9SX1FfTk9UX1BSSU1FICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAxMTMKKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kc2EvZHNh X2tleS5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2RzYS9kc2Ffa2V5LmMKKy0tLSBvcGVu c3NsLTEuMC4yYy9jcnlwdG8vZHNhL2RzYV9rZXkuYy5maXBzCTIwMTUtMDYtMTIgMTY6NTE6MjEu MDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2RzYS9kc2Ffa2V5LmMJ MjAxNS0wNi0xNSAxNzozMDowMC4wMDEyODM4MjIgKzAyMDAKK0BAIC02Niw2ICs2NiwzNCBAQAor IAorICMgaWZkZWYgT1BFTlNTTF9GSVBTCisgIyAgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+Cisr IyAgaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKysKKytzdGF0aWMgaW50IGZpcHNfY2hlY2tfZHNh KERTQSAqZHNhKQorK3sKKysgICAgRVZQX1BLRVkgKnBrOworKyAgICB1bnNpZ25lZCBjaGFyIHRi c1tdID0gIkRTQSBQYWlyd2lzZSBDaGVjayBEYXRhIjsKKysgICAgaW50IHJldCA9IDA7CisrCisr ICAgIGlmICgocGsgPSBFVlBfUEtFWV9uZXcoKSkgPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJy OworKworKyAgICBFVlBfUEtFWV9zZXQxX0RTQShwaywgZHNhKTsKKysKKysgICAgaWYgKGZpcHNf cGtleV9zaWduYXR1cmVfdGVzdChwaywgdGJzLCAtMSwgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCkp CisrICAgICAgICByZXQgPSAxOworKworKyBlcnI6CisrICAgIGlmIChyZXQgPT0gMCkgeworKyAg ICAgICAgRklQU2VycihGSVBTX0ZfRklQU19DSEVDS19EU0EsIEZJUFNfUl9QQUlSV0lTRV9URVNU X0ZBSUxFRCk7CisrICAgICAgICBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKCk7CisrICAgIH0KKysK KysgICAgaWYgKHBrKQorKyAgICAgICAgRVZQX1BLRVlfZnJlZShwayk7CisrCisrICAgIHJldHVy biByZXQ7CisrfQorKworICMgZW5kaWYKKyAKKyBzdGF0aWMgaW50IGRzYV9idWlsdGluX2tleWdl bihEU0EgKmRzYSk7CitAQCAtODEsMTAgKzEwOSw2IEBAIGludCBEU0FfZ2VuZXJhdGVfa2V5KERT QSAqZHNhKQorICMgZW5kaWYKKyAgICAgaWYgKGRzYS0+bWV0aC0+ZHNhX2tleWdlbikKKyAgICAg ICAgIHJldHVybiBkc2EtPm1ldGgtPmRzYV9rZXlnZW4oZHNhKTsKKy0jIGlmZGVmIE9QRU5TU0xf RklQUworLSAgICBpZiAoRklQU19tb2RlKCkpCistICAgICAgICByZXR1cm4gRklQU19kc2FfZ2Vu ZXJhdGVfa2V5KGRzYSk7CistIyBlbmRpZgorICAgICByZXR1cm4gZHNhX2J1aWx0aW5fa2V5Z2Vu KGRzYSk7CisgfQorIAorQEAgLTk0LDYgKzExOCwxNCBAQCBzdGF0aWMgaW50IGRzYV9idWlsdGlu X2tleWdlbihEU0EgKmRzYSkKKyAgICAgQk5fQ1RYICpjdHggPSBOVUxMOworICAgICBCSUdOVU0g KnB1Yl9rZXkgPSBOVUxMLCAqcHJpdl9rZXkgPSBOVUxMOworIAorKyMgaWZkZWYgT1BFTlNTTF9G SVBTCisrICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05f RklQU19BTExPVykKKysgICAgICAgICYmIChCTl9udW1fYml0cyhkc2EtPnApIDwgT1BFTlNTTF9E U0FfRklQU19NSU5fTU9EVUxVU19CSVRTKSkgeworKyAgICAgICAgRFNBZXJyKERTQV9GX0RTQV9C VUlMVElOX0tFWUdFTiwgRFNBX1JfS0VZX1NJWkVfVE9PX1NNQUxMKTsKKysgICAgICAgIGdvdG8g ZXJyOworKyAgICB9CisrIyBlbmRpZgorKworICAgICBpZiAoKGN0eCA9IEJOX0NUWF9uZXcoKSkg PT0gTlVMTCkKKyAgICAgICAgIGdvdG8gZXJyOworIAorQEAgLTEzMSw2ICsxNjMsMTMgQEAgc3Rh dGljIGludCBkc2FfYnVpbHRpbl9rZXlnZW4oRFNBICpkc2EpCisgCisgICAgIGRzYS0+cHJpdl9r ZXkgPSBwcml2X2tleTsKKyAgICAgZHNhLT5wdWJfa2V5ID0gcHViX2tleTsKKysjIGlmZGVmIE9Q RU5TU0xfRklQUworKyAgICBpZiAoRklQU19tb2RlKCkgJiYgIWZpcHNfY2hlY2tfZHNhKGRzYSkp IHsKKysgICAgICAgIGRzYS0+cHViX2tleSA9IE5VTEw7CisrICAgICAgICBkc2EtPnByaXZfa2V5 ID0gTlVMTDsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrIyBlbmRpZgorICAgICBvayA9 IDE7CisgCisgIGVycjoKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kc2EvZHNhX2xp Yi5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2RzYS9kc2FfbGliLmMKKy0tLSBvcGVuc3Ns LTEuMC4yYy9jcnlwdG8vZHNhL2RzYV9saWIuYy5maXBzCTIwMTUtMDYtMTIgMTY6NTE6MjEuMDAw MDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2RzYS9kc2FfbGliLmMJMjAx NS0wNi0xNSAxNzozMDowMC4wMDEyODM4MjIgKzAyMDAKK0BAIC04NiwxNCArODYsNyBAQCB2b2lk IERTQV9zZXRfZGVmYXVsdF9tZXRob2QoY29uc3QgRFNBX01FCisgY29uc3QgRFNBX01FVEhPRCAq RFNBX2dldF9kZWZhdWx0X21ldGhvZCh2b2lkKQorIHsKKyAgICAgaWYgKCFkZWZhdWx0X0RTQV9t ZXRob2QpIHsKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistICAgICAgICBpZiAoRklQU19tb2RlKCkp CistICAgICAgICAgICAgcmV0dXJuIEZJUFNfZHNhX29wZW5zc2woKTsKKy0gICAgICAgIGVsc2UK Ky0gICAgICAgICAgICByZXR1cm4gRFNBX09wZW5TU0woKTsKKy0jZWxzZQorICAgICAgICAgZGVm YXVsdF9EU0FfbWV0aG9kID0gRFNBX09wZW5TU0woKTsKKy0jZW5kaWYKKyAgICAgfQorICAgICBy ZXR1cm4gZGVmYXVsdF9EU0FfbWV0aG9kOworIH0KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2Ny eXB0by9kc2EvZHNhX2xvY2wuaC5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kc2EvZHNhX2xv Y2wuaAorLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kc2EvZHNhX2xvY2wuaC5maXBzCTIwMTUt MDYtMTUgMTc6Mjk6NTkuNzg2Mjc4ODk4ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRv L2RzYS9kc2FfbG9jbC5oCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDAyMjgzODQ1ICswMjAwCitAQCAt NTYsNyArNTYsNyBAQAorIAorIGludCBkc2FfYnVpbHRpbl9wYXJhbWdlbihEU0EgKnJldCwgc2l6 ZV90IGJpdHMsIHNpemVfdCBxYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg RVZQX01EICpldnBtZCwgY29uc3QgdW5zaWduZWQgY2hhciAqc2VlZF9pbiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZV90IHNlZWRfbGVuLCB1bnNpZ25lZCBjaGFyICpzZWVkX291dCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNlZWRfbGVuLAorICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgKmNvdW50ZXJfcmV0LCB1bnNpZ25lZCBsb25nICpoX3JldCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgQk5fR0VOQ0IgKmNiKTsKKyAKK2RpZmYgLXVwIG9wZW5z c2wtMS4wLjJjL2NyeXB0by9kc2EvZHNhX29zc2wuYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0 by9kc2EvZHNhX29zc2wuYworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kc2EvZHNhX29zc2wu Yy5maXBzCTIwMTUtMDYtMTIgMTY6NTE6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0x LjAuMmMvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDAyMjgzODQ1 ICswMjAwCitAQCAtNjUsNiArNjUsOSBAQAorICNpbmNsdWRlIDxvcGVuc3NsL2RzYS5oPgorICNp bmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9hc24xLmg+CisrI2lm ZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisg Cisgc3RhdGljIERTQV9TSUcgKmRzYV9kb19zaWduKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3Qs IGludCBkbGVuLCBEU0EgKmRzYSk7Cisgc3RhdGljIGludCBkc2Ffc2lnbl9zZXR1cChEU0EgKmRz YSwgQk5fQ1RYICpjdHhfaW4sIEJJR05VTSAqKmtpbnZwLAorQEAgLTgzLDcgKzg2LDcgQEAgc3Rh dGljIERTQV9NRVRIT0Qgb3BlbnNzbF9kc2FfbWV0aCA9IHsKKyAgICAgTlVMTCwgICAgICAgICAg ICAgICAgICAgICAgIC8qIGRzYV9ibl9tb2RfZXhwLCAqLworICAgICBkc2FfaW5pdCwKKyAgICAg ZHNhX2ZpbmlzaCwKKy0gICAgMCwKKysgICAgRFNBX0ZMQUdfRklQU19NRVRIT0QsCisgICAgIE5V TEwsCisgICAgIE5VTEwsCisgICAgIE5VTEwKK0BAIC0xNDAsNiArMTQzLDE5IEBAIHN0YXRpYyBE U0FfU0lHICpkc2FfZG9fc2lnbihjb25zdCB1bnNpZ24KKyAgICAgRFNBX1NJRyAqcmV0ID0gTlVM TDsKKyAgICAgaW50IG5vcmVkbyA9IDA7CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBp ZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRFNB X0RPX1NJR04sIEZJUFNfUl9GSVBTX1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAgICByZXR1cm4g TlVMTDsKKysgICAgfQorKworKyAgICBpZiAoRklQU19tb2RlKCkgJiYgIShkc2EtPmZsYWdzICYg RFNBX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCisrICAgICAgICAmJiAoQk5fbnVtX2JpdHMoZHNhLT5w KSA8IE9QRU5TU0xfRFNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpIHsKKysgICAgICAgIERTQWVy cihEU0FfRl9EU0FfRE9fU0lHTiwgRFNBX1JfS0VZX1NJWkVfVE9PX1NNQUxMKTsKKysgICAgICAg IHJldHVybiBOVUxMOworKyAgICB9CisrI2VuZGlmCisrCisgICAgIEJOX2luaXQoJm0pOworICAg ICBCTl9pbml0KCZ4cik7CisgCitAQCAtMzMwLDYgKzM0NiwxOCBAQCBzdGF0aWMgaW50IGRzYV9k b192ZXJpZnkoY29uc3QgdW5zaWduZWQKKyAgICAgICAgIERTQWVycihEU0FfRl9EU0FfRE9fVkVS SUZZLCBEU0FfUl9CQURfUV9WQUxVRSk7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KKysj aWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7Cisr ICAgICAgICBGSVBTZXJyKEZJUFNfRl9EU0FfRE9fVkVSSUZZLCBGSVBTX1JfRklQU19TRUxGVEVT VF9GQUlMRUQpOworKyAgICAgICAgcmV0dXJuIC0xOworKyAgICB9CisrCisrICAgIGlmIChGSVBT X21vZGUoKSAmJiAhKGRzYS0+ZmxhZ3MgJiBEU0FfRkxBR19OT05fRklQU19BTExPVykKKysgICAg ICAgICYmIChCTl9udW1fYml0cyhkc2EtPnApIDwgT1BFTlNTTF9EU0FfRklQU19NSU5fTU9EVUxV U19CSVRTKSkgeworKyAgICAgICAgRFNBZXJyKERTQV9GX0RTQV9ET19WRVJJRlksIERTQV9SX0tF WV9TSVpFX1RPT19TTUFMTCk7CisrICAgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysjZW5kaWYK KyAKKyAgICAgaWYgKEJOX251bV9iaXRzKGRzYS0+cCkgPiBPUEVOU1NMX0RTQV9NQVhfTU9EVUxV U19CSVRTKSB7CisgICAgICAgICBEU0FlcnIoRFNBX0ZfRFNBX0RPX1ZFUklGWSwgRFNBX1JfTU9E VUxVU19UT09fTEFSR0UpOworQEAgLTQxMCw2ICs0MzgsOSBAQCBzdGF0aWMgaW50IGRzYV9kb192 ZXJpZnkoY29uc3QgdW5zaWduZWQKKyAKKyBzdGF0aWMgaW50IGRzYV9pbml0KERTQSAqZHNhKQor IHsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJUFNfc2VsZnRlc3RfY2hlY2soKTsKKysj ZW5kaWYKKyAgICAgZHNhLT5mbGFncyB8PSBEU0FfRkxBR19DQUNIRV9NT05UX1A7CisgICAgIHJl dHVybiAoMSk7CisgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2RzYS9kc2FfcG1l dGguYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9kc2EvZHNhX3BtZXRoLmMKKy0tLSBvcGVu c3NsLTEuMC4yYy9jcnlwdG8vZHNhL2RzYV9wbWV0aC5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToy MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZHNhL2RzYV9wbWV0 aC5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDAyMjgzODQ1ICswMjAwCitAQCAtMjUzLDcgKzI1Myw3 IEBAIHN0YXRpYyBpbnQgcGtleV9kc2FfcGFyYW1nZW4oRVZQX1BLRVlfQ1QKKyAgICAgaWYgKCFk c2EpCisgICAgICAgICByZXR1cm4gMDsKKyAgICAgcmV0ID0gZHNhX2J1aWx0aW5fcGFyYW1nZW4o ZHNhLCBkY3R4LT5uYml0cywgZGN0eC0+cWJpdHMsIGRjdHgtPnBtZCwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgcGNiKTsKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCwgcGNiKTsKKyAg ICAgaWYgKHJldCkKKyAgICAgICAgIEVWUF9QS0VZX2Fzc2lnbl9EU0EocGtleSwgZHNhKTsKKyAg ICAgZWxzZQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2RzYS9kc2F0ZXN0LmMuZmlw cyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZHNhL2RzYXRlc3QuYworLS0tIG9wZW5zc2wtMS4wLjJj L2NyeXB0by9kc2EvZHNhdGVzdC5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZHNhL2RzYXRlc3QuYwkyMDE1LTA2LTE1 IDE3OjMwOjAwLjAwMjI4Mzg0NSArMDIwMAorQEAgLTEwMCwzNiArMTAwLDQxIEBAIHN0YXRpYyBp bnQgTVNfQ0FMTEJBQ0sgZHNhX2NiKGludCBwLCBpbnQKKyAgKiBQVUIgMTg2IGFuZCBhbHNvIGFw cGVhciBpbiBBcHBlbmRpeCA1IHRvIEZJUFMgUElCIDE4Ni0xCisgICovCisgc3RhdGljIHVuc2ln bmVkIGNoYXIgc2VlZFsyMF0gPSB7CistICAgIDB4ZDUsIDB4MDEsIDB4NGUsIDB4NGIsIDB4NjAs IDB4ZWYsIDB4MmIsIDB4YTgsIDB4YjYsIDB4MjEsIDB4MWIsIDB4NDAsCistICAgIDB4NjIsIDB4 YmEsIDB4MzIsIDB4MjQsIDB4ZTAsIDB4NDIsIDB4N2QsIDB4ZDMsCisrICAgIDB4MDIsIDB4NDcs IDB4MTEsIDB4OTIsIDB4MTEsIDB4ODgsIDB4QzgsIDB4RkIsIDB4QUYsIDB4NDgsIDB4NEMsIDB4 NjIsCisrICAgIDB4REYsIDB4QTUsIDB4QkUsIDB4QTAsIDB4QTQsIDB4M0MsIDB4NTYsIDB4RTMs CisgfTsKKyAKKyBzdGF0aWMgdW5zaWduZWQgY2hhciBvdXRfcFtdID0geworLSAgICAweDhkLCAw eGYyLCAweGE0LCAweDk0LCAweDQ5LCAweDIyLCAweDc2LCAweGFhLAorLSAgICAweDNkLCAweDI1 LCAweDc1LCAweDliLCAweGIwLCAweDY4LCAweDY5LCAweGNiLAorLSAgICAweGVhLCAweGMwLCAw eGQ4LCAweDNhLCAweGZiLCAweDhkLCAweDBjLCAweGY3LAorLSAgICAweGNiLCAweGI4LCAweDMy LCAweDRmLCAweDBkLCAweDc4LCAweDgyLCAweGU1LAorLSAgICAweGQwLCAweDc2LCAweDJmLCAw eGM1LCAweGI3LCAweDIxLCAweDBlLCAweGFmLAorLSAgICAweGMyLCAweGU5LCAweGFkLCAweGFj LCAweDMyLCAweGFiLCAweDdhLCAweGFjLAorLSAgICAweDQ5LCAweDY5LCAweDNkLCAweGZiLCAw eGY4LCAweDM3LCAweDI0LCAweGMyLAorLSAgICAweGVjLCAweDA3LCAweDM2LCAweGVlLCAweDMx LCAweGM4LCAweDAyLCAweDkxLAorKyAgICAweEFDLCAweENCLCAweDFFLCAweDYzLCAweDYwLCAw eDY5LCAweDBDLCAweEZCLCAweDA2LCAweDE5LCAweDY4LCAweDNFLAorKyAgICAweEE1LCAweDAx LCAweDVBLCAweEEyLCAweDE1LCAweDVDLCAweEUyLCAweDk5LCAweDJELCAweEQ1LCAweDMwLCAw eDk5LAorKyAgICAweDdFLCAweDVGLCAweDhELCAweEUyLCAweEY3LCAweEM2LCAweDJFLCAweDhE LCAweEEzLCAweDlGLCAweDU4LCAweEFELAorKyAgICAweEQ2LCAweEE5LCAweDdELCAweDBFLCAw eDBELCAweDk1LCAweDUzLCAweEE2LCAweDcxLCAweDNBLCAweERFLCAweEFCLAorKyAgICAweEFD LCAweEU5LCAweEY0LCAweDM2LCAweDU1LCAweDlFLCAweEI5LCAweEQ2LCAweDkzLCAweEJGLCAw eEYzLCAweDE4LAorKyAgICAweDFDLCAweDE0LCAweDdCLCAweEE1LCAweDQyLCAweDJFLCAweENE LCAweDAwLCAweEVCLCAweDM1LCAweDNCLCAweDFCLAorKyAgICAweEE4LCAweDUxLCAweEJCLCAw eEUxLCAweDU4LCAweDQyLCAweDg1LCAweDg0LCAweDIyLCAweEE3LCAweDk3LCAweDVFLAorKyAg ICAweDk5LCAweDZGLCAweDM4LCAweDIwLCAweEJELCAweDlELCAweEI2LCAweEQ5LCAweDMzLCAw eDM3LCAweDJBLCAweEZELAorKyAgICAweEJCLCAweEQ0LCAweEJDLCAweDBDLCAweDJBLCAweDY3 LCAweENCLCAweDlGLCAweEJCLCAweERGLCAweEY5LCAweDkzLAorKyAgICAweEFBLCAweEQ2LCAw eEYwLCAweEQ2LCAweDk1LCAweDBCLCAweDVELCAweDY1LCAweDE0LCAweEQwLCAweDE4LCAweDlE LAorKyAgICAweEM2LCAweEFGLCAweEYwLCAweEM2LCAweDM3LCAweDdDLCAweEYzLCAweDVGLAor IH07CisgCisgc3RhdGljIHVuc2lnbmVkIGNoYXIgb3V0X3FbXSA9IHsKKy0gICAgMHhjNywgMHg3 MywgMHgyMSwgMHg4YywgMHg3MywgMHg3ZSwgMHhjOCwgMHhlZSwKKy0gICAgMHg5OSwgMHgzYiwg MHg0ZiwgMHgyZCwgMHhlZCwgMHgzMCwgMHhmNCwgMHg4ZSwKKy0gICAgMHhkYSwgMHhjZSwgMHg5 MSwgMHg1ZiwKKysgICAgMHhFMywgMHg4RSwgMHg1RSwgMHg2RCwgMHhCRiwgMHgyQiwgMHg3OSwg MHhGOCwgMHhDNSwgMHg0QiwgMHg4OSwgMHg4QiwKKysgICAgMHhCQSwgMHgyRCwgMHg5MSwgMHhD MywgMHg2QywgMHg4MCwgMHhBQywgMHg4NywKKyB9OworIAorIHN0YXRpYyB1bnNpZ25lZCBjaGFy IG91dF9nW10gPSB7CistICAgIDB4NjIsIDB4NmQsIDB4MDIsIDB4NzgsIDB4MzksIDB4ZWEsIDB4 MGEsIDB4MTMsCistICAgIDB4NDEsIDB4MzEsIDB4NjMsIDB4YTUsIDB4NWIsIDB4NGMsIDB4YjUs IDB4MDAsCistICAgIDB4MjksIDB4OWQsIDB4NTUsIDB4MjIsIDB4OTUsIDB4NmMsIDB4ZWYsIDB4 Y2IsCistICAgIDB4M2IsIDB4ZmYsIDB4MTAsIDB4ZjMsIDB4OTksIDB4Y2UsIDB4MmMsIDB4MmUs CistICAgIDB4NzEsIDB4Y2IsIDB4OWQsIDB4ZTUsIDB4ZmEsIDB4MjQsIDB4YmEsIDB4YmYsCist ICAgIDB4NTgsIDB4ZTUsIDB4YjcsIDB4OTUsIDB4MjEsIDB4OTIsIDB4NWMsIDB4OWMsCistICAg IDB4YzQsIDB4MmUsIDB4OWYsIDB4NmYsIDB4NDYsIDB4NGIsIDB4MDgsIDB4OGMsCistICAgIDB4 YzUsIDB4NzIsIDB4YWYsIDB4NTMsIDB4ZTYsIDB4ZDcsIDB4ODgsIDB4MDIsCisrICAgIDB4NDIs IDB4NEEsIDB4MDQsIDB4NEUsIDB4NzksIDB4QjQsIDB4OTksIDB4N0YsIDB4RkQsIDB4NTgsIDB4 MzYsIDB4MkMsCisrICAgIDB4MUIsIDB4NUYsIDB4MTgsIDB4N0UsIDB4MEQsIDB4Q0MsIDB4QUIs IDB4ODEsIDB4QzksIDB4NUQsIDB4MTAsIDB4Q0UsCisrICAgIDB4NEUsIDB4ODAsIDB4N0UsIDB4 NTgsIDB4QjQsIDB4MzQsIDB4M0YsIDB4QTcsIDB4NDUsIDB4QzcsIDB4QUEsIDB4MzYsCisrICAg IDB4MjQsIDB4NDIsIDB4QTksIDB4M0IsIDB4RTgsIDB4MEUsIDB4MDQsIDB4MDIsIDB4MkQsIDB4 RkIsIDB4QTYsIDB4MTMsCisrICAgIDB4QjksIDB4QjUsIDB4MTUsIDB4QTUsIDB4NTYsIDB4MDcs IDB4MzUsIDB4RTQsIDB4MDMsIDB4QjYsIDB4NzksIDB4N0MsCisrICAgIDB4NjIsIDB4REQsIDB4 REYsIDB4M0YsIDB4NzEsIDB4M0EsIDB4OUQsIDB4OEIsIDB4QzQsIDB4RjYsIDB4RTcsIDB4MUQs CisrICAgIDB4NTIsIDB4QTgsIDB4QTksIDB4NDMsIDB4MUQsIDB4MzMsIDB4NTEsIDB4ODgsIDB4 MzksIDB4QkQsIDB4NzMsIDB4RTksCisrICAgIDB4NUYsIDB4QkUsIDB4ODIsIDB4NDksIDB4Mjcs IDB4RTYsIDB4QjUsIDB4NTMsIDB4QzEsIDB4MzgsIDB4QUMsIDB4MkYsCisrICAgIDB4NkQsIDB4 OTcsIDB4NkMsIDB4RUIsIDB4NjcsIDB4QzEsIDB4NUYsIDB4NjcsIDB4RjgsIDB4MzUsIDB4MDUs IDB4NUUsCisrICAgIDB4RDUsIDB4NjgsIDB4ODAsIDB4QUEsIDB4OTYsIDB4Q0EsIDB4MEIsIDB4 OEEsIDB4RTYsIDB4RjEsIDB4QjEsIDB4NDEsCisrICAgIDB4QzYsIDB4NzUsIDB4OTQsIDB4MEEs IDB4MEEsIDB4MkEsIDB4RkEsIDB4MjksCisgfTsKKyAKKyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBzdHIxW10gPSAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiOworQEAgLTE2Miw3ICsxNjcsNyBA QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgIEJJT19wcmludGYoYmlvX2Vy ciwgInRlc3QgZ2VuZXJhdGlvbiBvZiBEU0EgcGFyYW1ldGVyc1xuIik7CisgCisgICAgIEJOX0dF TkNCX3NldCgmY2IsIGRzYV9jYiwgYmlvX2Vycik7CistICAgIGlmICgoKGRzYSA9IERTQV9uZXco KSkgPT0gTlVMTCkgfHwgIURTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KGRzYSwgNTEyLAorKyAg ICBpZiAoKChkc2EgPSBEU0FfbmV3KCkpID09IE5VTEwpIHx8ICFEU0FfZ2VuZXJhdGVfcGFyYW1l dGVyc19leChkc2EsIDEwMjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWQsIDIwLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY291 bnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmgsICZjYikpCitAQCAtMTc2LDggKzE4MSw4IEBAIGludCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiXG5jb3Vu dGVyPSVkIGg9JWxkXG4iLCBjb3VudGVyLCBoKTsKKyAKKyAgICAgRFNBX3ByaW50KGJpb19lcnIs IGRzYSwgMCk7CistICAgIGlmIChjb3VudGVyICE9IDEwNSkgeworLSAgICAgICAgQklPX3ByaW50 ZihiaW9fZXJyLCAiY291bnRlciBzaG91bGQgYmUgMTA1XG4iKTsKKysgICAgaWYgKGNvdW50ZXIg IT0gMjM5KSB7CisrICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICJjb3VudGVyIHNob3VsZCBi ZSAyMzlcbiIpOworICAgICAgICAgZ290byBlbmQ7CisgICAgIH0KKyAgICAgaWYgKGggIT0gMikg eworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2VuZ2luZS9lbmdfYWxsLmMuZmlwcyBv cGVuc3NsLTEuMC4yYy9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYworLS0tIG9wZW5zc2wtMS4wLjJj L2NyeXB0by9lbmdpbmUvZW5nX2FsbC5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYwkyMDE1 LTA2LTE1IDE3OjMwOjAwLjAwMjI4Mzg0NSArMDIwMAorQEAgLTU5LDExICs1OSwyNSBAQAorIAor ICNpbmNsdWRlICJjcnlwdGxpYi5oIgorICNpbmNsdWRlICJlbmdfaW50LmgiCisrI2lmZGVmIE9Q RU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisgCisgdm9p ZCBFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2luZXModm9pZCkKKyB7CisgICAgIC8qIFNvbWUgRU5H SU5FcyBuZWVkIHRoaXMgKi8KKyAgICAgT1BFTlNTTF9jcHVpZF9zZXR1cCgpOworKyNpZmRlZiBP UEVOU1NMX0ZJUFMKKysgICAgT1BFTlNTTF9pbml0X2xpYnJhcnkoKTsKKysgICAgaWYgKEZJUFNf bW9kZSgpKSB7CisrICAgICAgICAvKiBXZSBhbGxvdyBsb2FkaW5nIGR5bmFtaWMgZW5naW5lIGFz IGEgdGhpcmQgcGFydHkKKysgICAgICAgICAgIGVuZ2luZSBtaWdodCBiZSBGSVBTIHZhbGlkYXRl ZC4KKysgICAgICAgICAgIFVzZXIgaXMgZGlzYWxsb3dlZCB0byBsb2FkIG5vbi12YWxpZGF0ZWQg ZW5naW5lcworKyAgICAgICAgICAgYnkgc2VjdXJpdHkgcG9saWN5LiAqLworKyAgICAgICAgRU5H SU5FX2xvYWRfZHluYW1pYygpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrI2VuZGlmCisg I2lmIDAKKyAgICAgLyoKKyAgICAgICogVGhlcmUncyBubyBsb25nZXIgYW55IG5lZWQgZm9yIGFu ICJvcGVuc3NsIiBFTkdJTkUgdW5sZXNzLCBvbmUgZGF5LCBpdAorZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmMvY3J5cHRvL2V2cC9jX2FsbGMuYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAv Y19hbGxjLmMKKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL2NfYWxsYy5jLmZpcHMJMjAx NS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlw dG8vZXZwL2NfYWxsYy5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDAyMjgzODQ1ICswMjAwCitAQCAt NjUsNiArNjUsMTAgQEAKKyB2b2lkIE9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzKHZvaWQpCisgewor IAorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgT1BFTlNTTF9pbml0X2xpYnJhcnkoKTsKKysg ICAgaWYgKCFGSVBTX21vZGUoKSkgeworKyNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19ERVMK KyAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19jZmIoKSk7CisgICAgIEVWUF9hZGRfY2lwaGVy KEVWUF9kZXNfY2ZiMSgpKTsKK0BAIC0yMzgsNCArMjQyLDY0IEBAIHZvaWQgT3BlblNTTF9hZGRf YWxsX2NpcGhlcnModm9pZCkKKyAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05fY2FtZWxsaWFf MjU2X2NiYywgIkNBTUVMTElBMjU2Iik7CisgICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNOX2Nh bWVsbGlhXzI1Nl9jYmMsICJjYW1lbGxpYTI1NiIpOworICNlbmRpZgorKyNpZmRlZiBPUEVOU1NM X0ZJUFMKKysgICAgfSBlbHNlIHsKKysjIGlmbmRlZiBPUEVOU1NMX05PX0RFUworKyAgICAgICAg RVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGVfY2ZiKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBo ZXIoRVZQX2Rlc19lZGUzX2NmYigpKTsKKysKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9k ZXNfZWRlX29mYigpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9kZXNfZWRlM19vZmIo KSk7CisrCisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZV9jYmMoKSk7CisrICAg ICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2VkZTNfY2JjKCkpOworKyAgICAgICAgRVZQX2Fk ZF9jaXBoZXJfYWxpYXMoU05fZGVzX2VkZTNfY2JjLCAiREVTMyIpOworKyAgICAgICAgRVZQX2Fk ZF9jaXBoZXJfYWxpYXMoU05fZGVzX2VkZTNfY2JjLCAiZGVzMyIpOworKworKyAgICAgICAgRVZQ X2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBf ZGVzX2VkZTMoKSk7CisrIyBlbmRpZgorKworKyMgaWZuZGVmIE9QRU5TU0xfTk9fQUVTCisrICAg ICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9lY2IoKSk7CisrICAgICAgICBFVlBfYWRk X2NpcGhlcihFVlBfYWVzXzEyOF9jYmMoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBf YWVzXzEyOF9jZmIoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9jZmIx KCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfY2ZiOCgpKTsKKysgICAg ICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X29mYigpKTsKKysgICAgICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9hZXNfMTI4X2N0cigpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9h ZXNfMTI4X2djbSgpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X3h0cygp KTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2NjbSgpKTsKKysgICAgICAg IEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X3dyYXAoKSk7CisrICAgICAgICBFVlBfYWRkX2Np cGhlcl9hbGlhcyhTTl9hZXNfMTI4X2NiYywgIkFFUzEyOCIpOworKyAgICAgICAgRVZQX2FkZF9j aXBoZXJfYWxpYXMoU05fYWVzXzEyOF9jYmMsICJhZXMxMjgiKTsKKysgICAgICAgIEVWUF9hZGRf Y2lwaGVyKEVWUF9hZXNfMTkyX2VjYigpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9h ZXNfMTkyX2NiYygpKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2NmYigp KTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2NmYjEoKSk7CisrICAgICAg ICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzE5Ml9jZmI4KCkpOworKyAgICAgICAgRVZQX2FkZF9j aXBoZXIoRVZQX2Flc18xOTJfb2ZiKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18xOTJfY3RyKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfZ2NtKCkp OworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfY2NtKCkpOworKyAgICAgICAg RVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xOTJfd3JhcCgpKTsKKysgICAgICAgIEVWUF9hZGRfY2lw aGVyX2FsaWFzKFNOX2Flc18xOTJfY2JjLCAiQUVTMTkyIik7CisrICAgICAgICBFVlBfYWRkX2Np cGhlcl9hbGlhcyhTTl9hZXNfMTkyX2NiYywgImFlczE5MiIpOworKyAgICAgICAgRVZQX2FkZF9j aXBoZXIoRVZQX2Flc18yNTZfZWNiKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Fl c18yNTZfY2JjKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfY2ZiKCkp OworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfY2ZiMSgpKTsKKysgICAgICAg IEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2NmYjgoKSk7CisrICAgICAgICBFVlBfYWRkX2Np cGhlcihFVlBfYWVzXzI1Nl9vZmIoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVz XzI1Nl9jdHIoKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9nY20oKSk7 CisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl94dHMoKSk7CisrICAgICAgICBF VlBfYWRkX2NpcGhlcihFVlBfYWVzXzI1Nl9jY20oKSk7CisrICAgICAgICBFVlBfYWRkX2NpcGhl cihFVlBfYWVzXzI1Nl93cmFwKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXJfYWxpYXMoU05f YWVzXzI1Nl9jYmMsICJBRVMyNTYiKTsKKysgICAgICAgIEVWUF9hZGRfY2lwaGVyX2FsaWFzKFNO X2Flc18yNTZfY2JjLCAiYWVzMjU2Iik7CisrIyBlbmRpZgorKyAgICB9CisrI2VuZGlmCisgfQor ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2V2cC9jX2FsbGQuYy5maXBzIG9wZW5zc2wt MS4wLjJjL2NyeXB0by9ldnAvY19hbGxkLmMKKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZw L2NfYWxsZC5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBv cGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL2NfYWxsZC5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDAz MjgzODY4ICswMjAwCitAQCAtNjQsNTEgKzY0LDgxIEBACisgCisgdm9pZCBPcGVuU1NMX2FkZF9h bGxfZGlnZXN0cyh2b2lkKQorIHsKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIE9QRU5TU0xf aW5pdF9saWJyYXJ5KCk7CisrICAgIGlmICghRklQU19tb2RlKCkpIHsKKysjZW5kaWYKKyAjaWZu ZGVmIE9QRU5TU0xfTk9fTUQ0CistICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9tZDQoKSk7CisrICAg ICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfbWQ0KCkpOworICNlbmRpZgorICNpZm5kZWYgT1BFTlNT TF9OT19NRDUKKy0gICAgRVZQX2FkZF9kaWdlc3QoRVZQX21kNSgpKTsKKy0gICAgRVZQX2FkZF9k aWdlc3RfYWxpYXMoU05fbWQ1LCAic3NsMi1tZDUiKTsKKy0gICAgRVZQX2FkZF9kaWdlc3RfYWxp YXMoU05fbWQ1LCAic3NsMy1tZDUiKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9tZDUo KSk7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9tZDUsICJzc2wyLW1kNSIpOwor KyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fbWQ1LCAic3NsMy1tZDUiKTsKKyAjZW5k aWYKKyAjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19TSEEpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9f U0hBMCkKKy0gICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYSgpKTsKKysgICAgICAgIEVWUF9hZGRf ZGlnZXN0KEVWUF9zaGEoKSk7CisgIyBpZm5kZWYgT1BFTlNTTF9OT19EU0EKKy0gICAgRVZQX2Fk ZF9kaWdlc3QoRVZQX2RzcygpKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9kc3MoKSk7 CisgIyBlbmRpZgorICNlbmRpZgorICNpZiAhZGVmaW5lZChPUEVOU1NMX05PX1NIQSkgJiYgIWRl ZmluZWQoT1BFTlNTTF9OT19TSEExKQorLSAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMSgpKTsK Ky0gICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fc2hhMSwgInNzbDMtc2hhMSIpOworLSAgICBF VlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9zaGExV2l0aFJTQUVuY3J5cHRpb24sIFNOX3NoYTFXaXRo UlNBKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGExKCkpOworKyAgICAgICAgRVZQ X2FkZF9kaWdlc3RfYWxpYXMoU05fc2hhMSwgInNzbDMtc2hhMSIpOworKyAgICAgICAgRVZQX2Fk ZF9kaWdlc3RfYWxpYXMoU05fc2hhMVdpdGhSU0FFbmNyeXB0aW9uLCBTTl9zaGExV2l0aFJTQSk7 CisgIyBpZm5kZWYgT1BFTlNTTF9OT19EU0EKKy0gICAgRVZQX2FkZF9kaWdlc3QoRVZQX2RzczEo KSk7CistICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhTSEExLCBTTl9kc2FXaXRo U0hBMV8yKTsKKy0gICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fZHNhV2l0aFNIQTEsICJEU1Mx Iik7CistICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhTSEExLCAiZHNzMSIpOwor KyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX2RzczEoKSk7CisrICAgICAgICBFVlBfYWRkX2Rp Z2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgU05fZHNhV2l0aFNIQTFfMik7CisrICAgICAgICBF VlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgIkRTUzEiKTsKKysgICAgICAgIEVW UF9hZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhTSEExLCAiZHNzMSIpOworICMgZW5kaWYKKyAj IGlmbmRlZiBPUEVOU1NMX05PX0VDRFNBCistICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9lY2RzYSgp KTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9lY2RzYSgpKTsKKyAjIGVuZGlmCisgI2Vu ZGlmCisgI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fTURDMikgJiYgIWRlZmluZWQoT1BFTlNTTF9O T19ERVMpCistICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9tZGMyKCkpOworKyAgICAgICAgRVZQX2Fk ZF9kaWdlc3QoRVZQX21kYzIoKSk7CisgI2VuZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX1JJUEVN RAorLSAgICBFVlBfYWRkX2RpZ2VzdChFVlBfcmlwZW1kMTYwKCkpOworLSAgICBFVlBfYWRkX2Rp Z2VzdF9hbGlhcyhTTl9yaXBlbWQxNjAsICJyaXBlbWQiKTsKKy0gICAgRVZQX2FkZF9kaWdlc3Rf YWxpYXMoU05fcmlwZW1kMTYwLCAicm1kMTYwIik7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChF VlBfcmlwZW1kMTYwKCkpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fcmlwZW1k MTYwLCAicmlwZW1kIik7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9yaXBlbWQx NjAsICJybWQxNjAiKTsKKyAjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fU0hBMjU2CistICAg IEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEyMjQoKSk7CistICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9z aGEyNTYoKSk7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMjI0KCkpOworKyAgICAg ICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTI1NigpKTsKKyAjZW5kaWYKKyAjaWZuZGVmIE9QRU5T U0xfTk9fU0hBNTEyCistICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEzODQoKSk7CistICAgIEVW UF9hZGRfZGlnZXN0KEVWUF9zaGE1MTIoKSk7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBf c2hhMzg0KCkpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTUxMigpKTsKKyAjZW5k aWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fV0hJUkxQT09MCistICAgIEVWUF9hZGRfZGlnZXN0KEVW UF93aGlybHBvb2woKSk7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfd2hpcmxwb29sKCkp OworKyNlbmRpZgorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgfSBlbHNlIHsKKysjIGlmICFk ZWZpbmVkKE9QRU5TU0xfTk9fU0hBKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NIQTEpCisrICAg ICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hhMSgpKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0 X2FsaWFzKFNOX3NoYTEsICJzc2wzLXNoYTEiKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0X2Fs aWFzKFNOX3NoYTFXaXRoUlNBRW5jcnlwdGlvbiwgU05fc2hhMVdpdGhSU0EpOworKyMgIGlmbmRl ZiBPUEVOU1NMX05PX0RTQQorKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX2RzczEoKSk7Cisr ICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgU05fZHNhV2l0aFNI QTFfMik7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FXaXRoU0hBMSwgIkRT UzEiKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX2RzYVdpdGhTSEExLCAiZHNz MSIpOworKyMgIGVuZGlmCisrIyAgaWZuZGVmIE9QRU5TU0xfTk9fRUNEU0EKKysgICAgICAgIEVW UF9hZGRfZGlnZXN0KEVWUF9lY2RzYSgpKTsKKysjICBlbmRpZgorKyMgZW5kaWYKKysjIGlmbmRl ZiBPUEVOU1NMX05PX1NIQTI1NgorKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTIyNCgp KTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEyNTYoKSk7CisrIyBlbmRpZgorKyMg aWZuZGVmIE9QRU5TU0xfTk9fU0hBNTEyCisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfc2hh Mzg0KCkpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTUxMigpKTsKKysjIGVuZGlm CisrICAgIH0KKyAjZW5kaWYKKyB9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZw L2RpZ2VzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2V2cC9kaWdlc3QuYworLS0tIG9w ZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvZGlnZXN0LmMuZmlwcwkyMDE1LTA2LTEyIDE2OjUxOjIx LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvZGlnZXN0LmMJ MjAxNS0wNi0xNSAxNzozMDowMC4wMDMyODM4NjggKzAyMDAKK0BAIC0xNDMsMTggKzE0Myw1NSBA QCBpbnQgRVZQX0RpZ2VzdEluaXQoRVZQX01EX0NUWCAqY3R4LCBjb25zCisgICAgIHJldHVybiBF VlBfRGlnZXN0SW5pdF9leChjdHgsIHR5cGUsIE5VTEwpOworIH0KKyAKKysjaWZkZWYgT1BFTlNT TF9GSVBTCisrCisrLyogVGhlIHB1cnBvc2Ugb2YgdGhlc2UgaXMgdG8gdHJhcCBwcm9ncmFtcyB0 aGF0IGF0dGVtcHQgdG8gdXNlIG5vbiBGSVBTCisrICogYWxnb3JpdGhtcyBpbiBGSVBTIG1vZGUg YW5kIGlnbm9yZSB0aGUgZXJyb3JzLgorKyAqLworKworK3N0YXRpYyBpbnQgYmFkX2luaXQoRVZQ X01EX0NUWCAqY3R4KQorK3sKKysgICAgRklQU19FUlJPUl9JR05PUkVEKCJEaWdlc3QgaW5pdCIp OworKyAgICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCBiYWRfdXBkYXRlKEVWUF9NRF9D VFggKmN0eCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGNvdW50KQorK3sKKysgICAgRklQU19F UlJPUl9JR05PUkVEKCJEaWdlc3QgdXBkYXRlIik7CisrICAgIHJldHVybiAwOworK30KKysKKytz dGF0aWMgaW50IGJhZF9maW5hbChFVlBfTURfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm1kKQor K3sKKysgICAgRklQU19FUlJPUl9JR05PUkVEKCJEaWdlc3QgRmluYWwiKTsKKysgICAgcmV0dXJu IDA7CisrfQorKworK3N0YXRpYyBjb25zdCBFVlBfTUQgYmFkX21kID0geworKyAgICAwLAorKyAg ICAwLAorKyAgICAwLAorKyAgICAwLAorKyAgICBiYWRfaW5pdCwKKysgICAgYmFkX3VwZGF0ZSwK KysgICAgYmFkX2ZpbmFsLAorKyAgICBOVUxMLAorKyAgICBOVUxMLAorKyAgICBOVUxMLAorKyAg ICAwLAorKyAgICB7MCwgMCwgMCwgMH0sCisrfTsKKysKKysjZW5kaWYKKysKKyBpbnQgRVZQX0Rp Z2VzdEluaXRfZXgoRVZQX01EX0NUWCAqY3R4LCBjb25zdCBFVlBfTUQgKnR5cGUsIEVOR0lORSAq aW1wbCkKKyB7CisgICAgIEVWUF9NRF9DVFhfY2xlYXJfZmxhZ3MoY3R4LCBFVlBfTURfQ1RYX0ZM QUdfQ0xFQU5FRCk7CisgI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICAvKiBJZiBGSVBTIG1vZGUg c3dpdGNoIHRvIGFwcHJvdmVkIGltcGxlbWVudGF0aW9uIGlmIHBvc3NpYmxlICovCistICAgIGlm IChGSVBTX21vZGUoKSkgeworLSAgICAgICAgY29uc3QgRVZQX01EICpmaXBzbWQ7CistICAgICAg ICBpZiAodHlwZSkgeworLSAgICAgICAgICAgIGZpcHNtZCA9IGV2cF9nZXRfZmlwc19tZCh0eXBl KTsKKy0gICAgICAgICAgICBpZiAoZmlwc21kKQorLSAgICAgICAgICAgICAgICB0eXBlID0gZmlw c21kOworLSAgICAgICAgfQorKyAgICBpZiAoRklQU19zZWxmdGVzdF9mYWlsZWQoKSkgeworKyAg ICAgICAgRklQU2VycihGSVBTX0ZfRVZQX0RJR0VTVElOSVRfRVgsIEZJUFNfUl9GSVBTX1NFTEZU RVNUX0ZBSUxFRCk7CisrICAgICAgICBjdHgtPmRpZ2VzdCA9ICZiYWRfbWQ7CisrICAgICAgICBy ZXR1cm4gMDsKKyAgICAgfQorICNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKK0BA IC0yMTIsNiArMjQ5LDE2IEBAIGludCBFVlBfRGlnZXN0SW5pdF9leChFVlBfTURfQ1RYICpjdHgs IGMKKyAgICAgfQorICNlbmRpZgorICAgICBpZiAoY3R4LT5kaWdlc3QgIT0gdHlwZSkgeworKyNp ZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgICAgIGlmIChGSVBTX21vZGUoKSkgeworKyAgICAgICAg ICAgIGlmICghKHR5cGUtPmZsYWdzICYgRVZQX01EX0ZMQUdfRklQUykKKysgICAgICAgICAgICAg ICAgJiYgIShjdHgtPmZsYWdzICYgRVZQX01EX0NUWF9GTEFHX05PTl9GSVBTX0FMTE9XKSkgewor KyAgICAgICAgICAgICAgICBFVlBlcnIoRVZQX0ZfRVZQX0RJR0VTVElOSVRfRVgsIEVWUF9SX0RJ U0FCTEVEX0ZPUl9GSVBTKTsKKysgICAgICAgICAgICAgICAgY3R4LT5kaWdlc3QgPSAmYmFkX21k OworKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9 CisrI2VuZGlmCisgICAgICAgICBpZiAoY3R4LT5kaWdlc3QgJiYgY3R4LT5kaWdlc3QtPmN0eF9z aXplKQorICAgICAgICAgICAgIE9QRU5TU0xfZnJlZShjdHgtPm1kX2RhdGEpOworICAgICAgICAg Y3R4LT5kaWdlc3QgPSB0eXBlOworQEAgLTIzNiwyNSArMjgzLDE1IEBAIGludCBFVlBfRGlnZXN0 SW5pdF9leChFVlBfTURfQ1RYICpjdHgsIGMKKyAgICAgfQorICAgICBpZiAoY3R4LT5mbGFncyAm IEVWUF9NRF9DVFhfRkxBR19OT19JTklUKQorICAgICAgICAgcmV0dXJuIDE7CistI2lmZGVmIE9Q RU5TU0xfRklQUworLSAgICBpZiAoRklQU19tb2RlKCkpIHsKKy0gICAgICAgIGlmIChGSVBTX2Rp Z2VzdGluaXQoY3R4LCB0eXBlKSkKKy0gICAgICAgICAgICByZXR1cm4gMTsKKy0gICAgICAgIE9Q RU5TU0xfZnJlZShjdHgtPm1kX2RhdGEpOworLSAgICAgICAgY3R4LT5tZF9kYXRhID0gTlVMTDsK Ky0gICAgICAgIHJldHVybiAwOworLSAgICB9CistI2VuZGlmCisgICAgIHJldHVybiBjdHgtPmRp Z2VzdC0+aW5pdChjdHgpOworIH0KKyAKKyBpbnQgRVZQX0RpZ2VzdFVwZGF0ZShFVlBfTURfQ1RY ICpjdHgsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBjb3VudCkKKyB7CisgI2lmZGVmIE9QRU5T U0xfRklQUworLSAgICByZXR1cm4gRklQU19kaWdlc3R1cGRhdGUoY3R4LCBkYXRhLCBjb3VudCk7 CistI2Vsc2UKKy0gICAgcmV0dXJuIGN0eC0+dXBkYXRlKGN0eCwgZGF0YSwgY291bnQpOworKyAg ICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7CisgI2VuZGlmCisrICAgIHJldHVybiBjdHgtPnVwZGF0 ZShjdHgsIGRhdGEsIGNvdW50KTsKKyB9CisgCisgLyogVGhlIGNhbGxlciBjYW4gYXNzdW1lIHRo YXQgdGhpcyByZW1vdmVzIGFueSBzZWNyZXQgZGF0YSBmcm9tIHRoZSBjb250ZXh0ICovCitAQCAt MjY5LDExICszMDYsMTEgQEAgaW50IEVWUF9EaWdlc3RGaW5hbChFVlBfTURfQ1RYICpjdHgsIHVu cworIC8qIFRoZSBjYWxsZXIgY2FuIGFzc3VtZSB0aGF0IHRoaXMgcmVtb3ZlcyBhbnkgc2VjcmV0 IGRhdGEgZnJvbSB0aGUgY29udGV4dCAqLworIGludCBFVlBfRGlnZXN0RmluYWxfZXgoRVZQX01E X0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICptZCwgdW5zaWduZWQgaW50ICpzaXplKQorIHsKKy0j aWZkZWYgT1BFTlNTTF9GSVBTCistICAgIHJldHVybiBGSVBTX2RpZ2VzdGZpbmFsKGN0eCwgbWQs IHNpemUpOworLSNlbHNlCisgICAgIGludCByZXQ7CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUwor KyAgICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7CisrI2VuZGlmCisgICAgIE9QRU5TU0xfYXNzZXJ0 KGN0eC0+ZGlnZXN0LT5tZF9zaXplIDw9IEVWUF9NQVhfTURfU0laRSk7CisgICAgIHJldCA9IGN0 eC0+ZGlnZXN0LT5maW5hbChjdHgsIG1kKTsKKyAgICAgaWYgKHNpemUgIT0gTlVMTCkKK0BAIC0y ODQsNyArMzIxLDYgQEAgaW50IEVWUF9EaWdlc3RGaW5hbF9leChFVlBfTURfQ1RYICpjdHgsCisg ICAgIH0KKyAgICAgbWVtc2V0KGN0eC0+bWRfZGF0YSwgMCwgY3R4LT5kaWdlc3QtPmN0eF9zaXpl KTsKKyAgICAgcmV0dXJuIHJldDsKKy0jZW5kaWYKKyB9CisgCisgaW50IEVWUF9NRF9DVFhfY29w eShFVlBfTURfQ1RYICpvdXQsIGNvbnN0IEVWUF9NRF9DVFggKmluKQorQEAgLTM3Myw3ICs0MDks NiBAQCB2b2lkIEVWUF9NRF9DVFhfZGVzdHJveShFVlBfTURfQ1RYICpjdHgpCisgLyogVGhpcyBj YWxsIGZyZWVzIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRleHQgKi8KKyBpbnQg RVZQX01EX0NUWF9jbGVhbnVwKEVWUF9NRF9DVFggKmN0eCkKKyB7CistI2lmbmRlZiBPUEVOU1NM X0ZJUFMKKyAgICAgLyoKKyAgICAgICogRG9uJ3QgYXNzdW1lIGN0eC0+bWRfZGF0YSB3YXMgY2xl YW5lZCBpbiBFVlBfRGlnZXN0X0ZpbmFsLCBiZWNhdXNlCisgICAgICAqIHNvbWV0aW1lcyBvbmx5 IGNvcGllcyBvZiB0aGUgY29udGV4dCBhcmUgZXZlciBmaW5hbGlzZWQuCitAQCAtMzg2LDcgKzQy MSw2IEBAIGludCBFVlBfTURfQ1RYX2NsZWFudXAoRVZQX01EX0NUWCAqY3R4KQorICAgICAgICAg T1BFTlNTTF9jbGVhbnNlKGN0eC0+bWRfZGF0YSwgY3R4LT5kaWdlc3QtPmN0eF9zaXplKTsKKyAg ICAgICAgIE9QRU5TU0xfZnJlZShjdHgtPm1kX2RhdGEpOworICAgICB9CistI2VuZGlmCisgICAg IGlmIChjdHgtPnBjdHgpCisgICAgICAgICBFVlBfUEtFWV9DVFhfZnJlZShjdHgtPnBjdHgpOwor ICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKK0BAIC0zOTcsOSArNDMxLDYgQEAgaW50IEVWUF9N RF9DVFhfY2xlYW51cChFVlBfTURfQ1RYICpjdHgpCisgICAgICAgICAgKi8KKyAgICAgICAgIEVO R0lORV9maW5pc2goY3R4LT5lbmdpbmUpOworICNlbmRpZgorLSNpZmRlZiBPUEVOU1NMX0ZJUFMK Ky0gICAgRklQU19tZF9jdHhfY2xlYW51cChjdHgpOworLSNlbmRpZgorICAgICBtZW1zZXQoY3R4 LCAnXDAnLCBzaXplb2YgKmN0eCk7CisgCisgICAgIHJldHVybiAxOworZGlmZiAtdXAgb3BlbnNz bC0xLjAuMmMvY3J5cHRvL2V2cC9lX2Flcy5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2V2 cC9lX2Flcy5jCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2V2cC9lX2Flcy5jLmZpcHMJMjAx NS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlw dG8vZXZwL2VfYWVzLmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMDMyODM4NjggKzAyMDAKK0BAIC02 MCw5ICs2MCw2IEBACisgIyBpbmNsdWRlICJtb2Rlc19sY2wuaCIKKyAjIGluY2x1ZGUgPG9wZW5z c2wvcmFuZC5oPgorIAorLSMgdW5kZWYgRVZQX0NJUEhfRkxBR19GSVBTCistIyBkZWZpbmUgRVZQ X0NJUEhfRkxBR19GSVBTIDAKKy0KKyB0eXBlZGVmIHN0cnVjdCB7CisgICAgIHVuaW9uIHsKKyAg ICAgICAgIGRvdWJsZSBhbGlnbjsKK0BAIC0xMTU5LDYgKzExNTYsMTEgQEAgc3RhdGljIGludCBh ZXNfZ2NtX2N0cmwoRVZQX0NJUEhFUl9DVFggKgorICAgICBjYXNlIEVWUF9DVFJMX0dDTV9TRVRf SVZMRU46CisgICAgICAgICBpZiAoYXJnIDw9IDApCisgICAgICAgICAgICAgcmV0dXJuIDA7Cisr IyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgICAgIGlmIChGSVBTX21vZHVsZV9tb2RlKCkgJiYg IShjLT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpCisrICAgICAgICAgICAg JiYgYXJnIDwgMTIpCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrIyBlbmRpZgorICAgICAgICAg LyogQWxsb2NhdGUgbWVtb3J5IGZvciBJViBpZiBuZWVkZWQgKi8KKyAgICAgICAgIGlmICgoYXJn ID4gRVZQX01BWF9JVl9MRU5HVEgpICYmIChhcmcgPiBnY3R4LT5pdmxlbikpIHsKKyAgICAgICAg ICAgICBpZiAoZ2N0eC0+aXYgIT0gYy0+aXYpCitAQCAtMTcyNyw2ICsxNzI5LDE0IEBAIHN0YXRp YyBpbnQgYWVzX3h0c19jaXBoZXIoRVZQX0NJUEhFUl9DVFgKKyAgICAgICAgIHJldHVybiAwOwor ICAgICBpZiAoIW91dCB8fCAhaW4gfHwgbGVuIDwgQUVTX0JMT0NLX1NJWkUpCisgICAgICAgICBy ZXR1cm4gMDsKKysjIGlmZGVmIE9QRU5TU0xfRklQUworKyAgICAvKiBSZXF1aXJlbWVudCBvZiBT UDgwMC0zOEUgKi8KKysgICAgaWYgKEZJUFNfbW9kdWxlX21vZGUoKSAmJiAhKGN0eC0+ZmxhZ3Mg JiBFVlBfQ0lQSF9GTEFHX05PTl9GSVBTX0FMTE9XKSAmJgorKyAgICAgICAgKGxlbiA+ICgxVUwg PDwgMjApICogMTYpKSB7CisrICAgICAgICBFVlBlcnIoRVZQX0ZfQUVTX1hUU19DSVBIRVIsIEVW UF9SX1RPT19MQVJHRSk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyMgZW5kaWYKKyAg ICAgaWYgKHhjdHgtPnN0cmVhbSkKKyAgICAgICAgICgqeGN0eC0+c3RyZWFtKSAoaW4sIG91dCwg bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICB4Y3R4LT54dHMua2V5MSwgeGN0eC0+eHRz LmtleTIsIGN0eC0+aXYpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2V2cC9lX2Rl czMuYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvZV9kZXMzLmMKKy0tLSBvcGVuc3Ns LTEuMC4yYy9jcnlwdG8vZXZwL2VfZGVzMy5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAw MDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL2VfZGVzMy5jCTIwMTUt MDYtMTUgMTc6MzA6MDAuMDAzMjgzODY4ICswMjAwCitAQCAtNjUsMTAgKzY1LDYgQEAKKyAjIGlu Y2x1ZGUgPG9wZW5zc2wvZGVzLmg+CisgIyBpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKyAKKy0v KiBCbG9jayB1c2Ugb2YgaW1wbGVtZW50YXRpb25zIGluIEZJUFMgbW9kZSAqLworLSMgdW5kZWYg RVZQX0NJUEhfRkxBR19GSVBTCistIyBkZWZpbmUgRVZQX0NJUEhfRkxBR19GSVBTICAgICAgMAor LQorIHR5cGVkZWYgc3RydWN0IHsKKyAgICAgdW5pb24geworICAgICAgICAgZG91YmxlIGFsaWdu OworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2V2cC9lX251bGwuYy5maXBzIG9wZW5z c2wtMS4wLjJjL2NyeXB0by9ldnAvZV9udWxsLmMKKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8v ZXZwL2VfbnVsbC5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysr KyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL2VfbnVsbC5jCTIwMTUtMDYtMTUgMTc6MzA6MDAu MDAzMjgzODY4ICswMjAwCitAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgaW50IG51bGxfY2lwaGVy KEVWUF9DSVBIRVJfQ1RYICpjCisgc3RhdGljIGNvbnN0IEVWUF9DSVBIRVIgbl9jaXBoZXIgPSB7 CisgICAgIE5JRF91bmRlZiwKKyAgICAgMSwgMCwgMCwKKy0gICAgMCwKKysgICAgRVZQX0NJUEhf RkxBR19GSVBTLAorICAgICBudWxsX2luaXRfa2V5LAorICAgICBudWxsX2NpcGhlciwKKyAgICAg TlVMTCwKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvZXZwX2VuYy5jLmZpcHMg b3BlbnNzbC0xLjAuMmMvY3J5cHRvL2V2cC9ldnBfZW5jLmMKKy0tLSBvcGVuc3NsLTEuMC4yYy9j cnlwdG8vZXZwL2V2cF9lbmMuYy5maXBzCTIwMTUtMDYtMTIgMTY6NTE6MjEuMDAwMDAwMDAwICsw MjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2V2cC9ldnBfZW5jLmMJMjAxNS0wNi0xNSAx NzozMDowMC4wMDQyODM4OTEgKzAyMDAKK0BAIC02OSwxNiArNjksNzMgQEAKKyAjZW5kaWYKKyAj aW5jbHVkZSAiZXZwX2xvY2wuaCIKKyAKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistIyBkZWZpbmUg TV9kb19jaXBoZXIoY3R4LCBvdXQsIGluLCBpbmwpIEZJUFNfY2lwaGVyKGN0eCwgb3V0LCBpbiwg aW5sKQorLSNlbHNlCistIyBkZWZpbmUgTV9kb19jaXBoZXIoY3R4LCBvdXQsIGluLCBpbmwpIGN0 eC0+Y2lwaGVyLT5kb19jaXBoZXIoY3R4LCBvdXQsIGluLCBpbmwpCistI2VuZGlmCisrI2RlZmlu ZSBNX2RvX2NpcGhlcihjdHgsIG91dCwgaW4sIGlubCkgY3R4LT5jaXBoZXItPmRvX2NpcGhlcihj dHgsIG91dCwgaW4sIGlubCkKKyAKKyBjb25zdCBjaGFyIEVWUF92ZXJzaW9uW10gPSAiRVZQIiBP UEVOU1NMX1ZFUlNJT05fUFRFWFQ7CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUworKworKy8qIFRo ZSBwdXJwb3NlIG9mIHRoZXNlIGlzIHRvIHRyYXAgcHJvZ3JhbXMgdGhhdCBhdHRlbXB0IHRvIHVz ZSBub24gRklQUworKyAqIGFsZ29yaXRobXMgaW4gRklQUyBtb2RlIGFuZCBpZ25vcmUgdGhlIGVy cm9ycy4KKysgKi8KKysKKytzdGF0aWMgaW50IGJhZF9pbml0KEVWUF9DSVBIRVJfQ1RYICpjdHgs IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwKKysgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKml2LCBpbnQgZW5jKQorK3sKKysgICAgRklQU19FUlJPUl9JR05PUkVEKCJD aXBoZXIgaW5pdCIpOworKyAgICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCBiYWRfZG9f Y2lwaGVyKEVWUF9DSVBIRVJfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGludCBp bmwpCisreworKyAgICBGSVBTX0VSUk9SX0lHTk9SRUQoIkNpcGhlciB1cGRhdGUiKTsKKysgICAg cmV0dXJuIDA7CisrfQorKworKy8qIE5COiBubyBjbGVhbnVwIGJlY2F1c2UgaXQgaXMgYWxsb3dl ZCBhZnRlciBmYWlsZWQgaW5pdCAqLworKworK3N0YXRpYyBpbnQgYmFkX3NldF9hc24xKEVWUF9D SVBIRVJfQ1RYICpjdHgsIEFTTjFfVFlQRSAqdHlwKQorK3sKKysgICAgRklQU19FUlJPUl9JR05P UkVEKCJDaXBoZXIgc2V0X2FzbjEiKTsKKysgICAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBp bnQgYmFkX2dldF9hc24xKEVWUF9DSVBIRVJfQ1RYICpjdHgsIEFTTjFfVFlQRSAqdHlwKQorK3sK KysgICAgRklQU19FUlJPUl9JR05PUkVEKCJDaXBoZXIgZ2V0X2FzbjEiKTsKKysgICAgcmV0dXJu IDA7CisrfQorKworK3N0YXRpYyBpbnQgYmFkX2N0cmwoRVZQX0NJUEhFUl9DVFggKmN0eCwgaW50 IHR5cGUsIGludCBhcmcsIHZvaWQgKnB0cikKKyt7CisrICAgIEZJUFNfRVJST1JfSUdOT1JFRCgi Q2lwaGVyIGN0cmwiKTsKKysgICAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBjb25zdCBFVlBf Q0lQSEVSIGJhZF9jaXBoZXIgPSB7CisrICAgIDAsCisrICAgIDAsCisrICAgIDAsCisrICAgIDAs CisrICAgIDAsCisrICAgIGJhZF9pbml0LAorKyAgICBiYWRfZG9fY2lwaGVyLAorKyAgICBOVUxM LAorKyAgICAwLAorKyAgICBiYWRfc2V0X2FzbjEsCisrICAgIGJhZF9nZXRfYXNuMSwKKysgICAg YmFkX2N0cmwsCisrICAgIE5VTEwKKyt9OworKworKyNlbmRpZgorKworIHZvaWQgRVZQX0NJUEhF Ul9DVFhfaW5pdChFVlBfQ0lQSEVSX0NUWCAqY3R4KQorIHsKKysjaWZkZWYgT1BFTlNTTF9GSVBT CisrICAgIEZJUFNfc2VsZnRlc3RfY2hlY2soKTsKKysjZW5kaWYKKyAgICAgbWVtc2V0KGN0eCwg MCwgc2l6ZW9mKEVWUF9DSVBIRVJfQ1RYKSk7CisgICAgIC8qIGN0eC0+Y2lwaGVyPU5VTEw7ICov CisgfQorQEAgLTExMCw2ICsxNjcsMTMgQEAgaW50IEVWUF9DaXBoZXJJbml0X2V4KEVWUF9DSVBI RVJfQ1RYICpjdAorICAgICAgICAgICAgIGVuYyA9IDE7CisgICAgICAgICBjdHgtPmVuY3J5cHQg PSBlbmM7CisgICAgIH0KKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX3NlbGZ0 ZXN0X2ZhaWxlZCgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9FVlBfQ0lQSEVSSU5JVF9F WCwgRklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAgIGN0eC0+Y2lwaGVyID0g JmJhZF9jaXBoZXI7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyNlbmRpZgorICNpZm5k ZWYgT1BFTlNTTF9OT19FTkdJTkUKKyAgICAgLyoKKyAgICAgICogV2hldGhlciBpdCdzIG5pY2Ug b3Igbm90LCAiSW5pdHMiIGNhbiBiZSB1c2VkIG9uICJGaW5hbCInZCBjb250ZXh0cyBzbworQEAg LTE2OCwxNiArMjMyLDYgQEAgaW50IEVWUF9DaXBoZXJJbml0X2V4KEVWUF9DSVBIRVJfQ1RYICpj dAorICAgICAgICAgICAgIGN0eC0+ZW5naW5lID0gTlVMTDsKKyAjZW5kaWYKKyAKKy0jaWZkZWYg T1BFTlNTTF9GSVBTCistICAgICAgICBpZiAoRklQU19tb2RlKCkpIHsKKy0gICAgICAgICAgICBj b25zdCBFVlBfQ0lQSEVSICpmY2lwaGVyOworLSAgICAgICAgICAgIGlmIChjaXBoZXIpCistICAg ICAgICAgICAgICAgIGZjaXBoZXIgPSBldnBfZ2V0X2ZpcHNfY2lwaGVyKGNpcGhlcik7CistICAg ICAgICAgICAgaWYgKGZjaXBoZXIpCistICAgICAgICAgICAgICAgIGNpcGhlciA9IGZjaXBoZXI7 CistICAgICAgICAgICAgcmV0dXJuIEZJUFNfY2lwaGVyaW5pdChjdHgsIGNpcGhlciwga2V5LCBp diwgZW5jKTsKKy0gICAgICAgIH0KKy0jZW5kaWYKKyAgICAgICAgIGN0eC0+Y2lwaGVyID0gY2lw aGVyOworICAgICAgICAgaWYgKGN0eC0+Y2lwaGVyLT5jdHhfc2l6ZSkgeworICAgICAgICAgICAg IGN0eC0+Y2lwaGVyX2RhdGEgPSBPUEVOU1NMX21hbGxvYyhjdHgtPmNpcGhlci0+Y3R4X3NpemUp OworQEAgLTIwNCwxMCArMjU4LDYgQEAgaW50IEVWUF9DaXBoZXJJbml0X2V4KEVWUF9DSVBIRVJf Q1RYICpjdAorICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKKyAgc2tpcF90b19pbml0OgorICNl bmRpZgorLSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAgaWYgKEZJUFNfbW9kZSgpKQorLSAgICAg ICAgcmV0dXJuIEZJUFNfY2lwaGVyaW5pdChjdHgsIGNpcGhlciwga2V5LCBpdiwgZW5jKTsKKy0j ZW5kaWYKKyAgICAgLyogd2UgYXNzdW1lIGJsb2NrIHNpemUgaXMgYSBwb3dlciBvZiAyIGluICpj cnlwdFVwZGF0ZSAqLworICAgICBPUEVOU1NMX2Fzc2VydChjdHgtPmNpcGhlci0+YmxvY2tfc2l6 ZSA9PSAxCisgICAgICAgICAgICAgICAgICAgIHx8IGN0eC0+Y2lwaGVyLT5ibG9ja19zaXplID09 IDgKK0BAIC0yNTMsNiArMzAzLDE5IEBAIGludCBFVlBfQ2lwaGVySW5pdF9leChFVlBfQ0lQSEVS X0NUWCAqY3QKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAgICAgfQorKyNpZmRl ZiBPUEVOU1NMX0ZJUFMKKysgICAgLyogQWZ0ZXIgJ2tleScgaXMgc2V0IG5vIGZ1cnRoZXIgcGFy YW1ldGVycyBjaGFuZ2VzIGFyZSBwZXJtaXNzaWJsZS4KKysgICAgICogU28gb25seSBjaGVjayBm b3Igbm9uIEZJUFMgZW5hYmxpbmcgYXQgdGhpcyBwb2ludC4KKysgICAgICovCisrICAgIGlmIChr ZXkgJiYgRklQU19tb2RlKCkpIHsKKysgICAgICAgIGlmICghKGN0eC0+Y2lwaGVyLT5mbGFncyAm IEVWUF9DSVBIX0ZMQUdfRklQUykKKysgICAgICAgICAgICAmICEoY3R4LT5mbGFncyAmIEVWUF9D SVBIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cpKSB7CisrICAgICAgICAgICAgRVZQZXJyKEVWUF9GX0VW UF9DSVBIRVJJTklUX0VYLCBFVlBfUl9ESVNBQkxFRF9GT1JfRklQUyk7CisrICAgICAgICAgICAg Y3R4LT5jaXBoZXIgPSAmYmFkX2NpcGhlcjsKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAg ICAgIH0KKysgICAgfQorKyNlbmRpZgorIAorICAgICBpZiAoa2V5IHx8IChjdHgtPmNpcGhlci0+ ZmxhZ3MgJiBFVlBfQ0lQSF9BTFdBWVNfQ0FMTF9JTklUKSkgeworICAgICAgICAgaWYgKCFjdHgt PmNpcGhlci0+aW5pdChjdHgsIGtleSwgaXYsIGVuYykpCitAQCAtNTU0LDcgKzYxNyw2IEBAIHZv aWQgRVZQX0NJUEhFUl9DVFhfZnJlZShFVlBfQ0lQSEVSX0NUWAorIAorIGludCBFVlBfQ0lQSEVS X0NUWF9jbGVhbnVwKEVWUF9DSVBIRVJfQ1RYICpjKQorIHsKKy0jaWZuZGVmIE9QRU5TU0xfRklQ UworICAgICBpZiAoYy0+Y2lwaGVyICE9IE5VTEwpIHsKKyAgICAgICAgIGlmIChjLT5jaXBoZXIt PmNsZWFudXAgJiYgIWMtPmNpcGhlci0+Y2xlYW51cChjKSkKKyAgICAgICAgICAgICByZXR1cm4g MDsKK0BAIC01NjQsNyArNjI2LDYgQEAgaW50IEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoRVZQX0NJ UEhFUl9DVAorICAgICB9CisgICAgIGlmIChjLT5jaXBoZXJfZGF0YSkKKyAgICAgICAgIE9QRU5T U0xfZnJlZShjLT5jaXBoZXJfZGF0YSk7CistI2VuZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX0VO R0lORQorICAgICBpZiAoYy0+ZW5naW5lKQorICAgICAgICAgLyoKK0BAIC01NzMsOSArNjM0LDYg QEAgaW50IEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoRVZQX0NJUEhFUl9DVAorICAgICAgICAgICov CisgICAgICAgICBFTkdJTkVfZmluaXNoKGMtPmVuZ2luZSk7CisgI2VuZGlmCistI2lmZGVmIE9Q RU5TU0xfRklQUworLSAgICBGSVBTX2NpcGhlcl9jdHhfY2xlYW51cChjKTsKKy0jZW5kaWYKKyAg ICAgbWVtc2V0KGMsIDAsIHNpemVvZihFVlBfQ0lQSEVSX0NUWCkpOworICAgICByZXR1cm4gMTsK KyB9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL2V2cC5oLmZpcHMgb3BlbnNz bC0xLjAuMmMvY3J5cHRvL2V2cC9ldnAuaAorLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAv ZXZwLmguZmlwcwkyMDE1LTA2LTE1IDE3OjI5OjU5Ljg5ODI4MTQ2MyArMDIwMAorKysrIG9wZW5z c2wtMS4wLjJjL2NyeXB0by9ldnAvZXZwLmgJMjAxNS0wNi0xNSAxNzozMDowMC4wMDQyODM4OTEg KzAyMDAKK0BAIC0xMjIsNiArMTIyLDEwIEBACisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCisgCisr IyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysjICBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjIGVu ZGlmCisrCisgLyoKKyAgKiBUeXBlIG5lZWRzIHRvIGJlIGEgYml0IGZpZWxkIFN1Yi10eXBlIG5l ZWRzIHRvIGJlIGZvciB2YXJpYXRpb25zIG9uIHRoZQorICAqIG1ldGhvZCwgYXMgaW4sIGNhbiBp dCBkbyBhcmJpdHJhcnkgZW5jcnlwdGlvbi4uLi4KK0BAIC0yODUsMTEgKzI4OSw2IEBAIHN0cnVj dCBlbnZfbWRfY3R4X3N0IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqIGNsZWFuZWQgKi8KKyAjIGRlZmluZSBFVlBfTURfQ1RYX0ZMQUdfUkVVU0Ug ICAgICAgICAgIDB4MDAwNC8qIERvbid0IGZyZWUgdXAgY3R4LT5tZF9kYXRhCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpbiBFVlBfTURfQ1RYX2Ns ZWFudXAgKi8KKy0vKgorLSAqIEZJUFMgYW5kIHBhZCBvcHRpb25zIGFyZSBpZ25vcmVkIGluIDEu MC4wLCBkZWZpbml0aW9ucyBhcmUgaGVyZSBzbyB3ZQorLSAqIGRvbid0IGFjY2lkZW50YWxseSBy ZXVzZSB0aGUgdmFsdWVzIGZvciBvdGhlciBwdXJwb3Nlcy4KKy0gKi8KKy0KKyAjIGRlZmluZSBF VlBfTURfQ1RYX0ZMQUdfTk9OX0ZJUFNfQUxMT1cgIDB4MDAwOC8qIEFsbG93IHVzZSBvZiBub24g RklQUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICog ZGlnZXN0IGluIEZJUFMgbW9kZSAqLworIAorQEAgLTMwMiw2ICszMDEsMTAgQEAgc3RydWN0IGVu dl9tZF9jdHhfc3QgeworICMgZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19QQURfUEtDUzEgICAgICAg MHgwMC8qIFBLQ1MjMSB2MS41IG1vZGUgKi8KKyAjIGRlZmluZSBFVlBfTURfQ1RYX0ZMQUdfUEFE X1g5MzEgICAgICAgIDB4MTAvKiBYOS4zMSBtb2RlICovCisgIyBkZWZpbmUgRVZQX01EX0NUWF9G TEFHX1BBRF9QU1MgICAgICAgICAweDIwLyogUFNTIG1vZGUgKi8KKysjIGRlZmluZSBNX0VWUF9N RF9DVFhfRkxBR19QU1NfU0FMVChjdHgpIFwKKysgICAgICAgICAgICAgICAgKChjdHgtPmZsYWdz Pj4xNikgJjB4RkZGRikgLyogc2VlZCBsZW5ndGggKi8KKysjIGRlZmluZSBFVlBfTURfQ1RYX0ZM QUdfUFNTX01ETEVOICAgICAgIDB4RkZGRi8qIHNhbHQgbGVuIHNhbWUgYXMgZGlnZXN0ICovCisr IyBkZWZpbmUgRVZQX01EX0NUWF9GTEFHX1BTU19NUkVDICAgICAgICAweEZGRkUvKiBzYWx0IG1h eCBvciBhdXRvIHJlY292ZXJlZCAqLworIAorICMgZGVmaW5lIEVWUF9NRF9DVFhfRkxBR19OT19J TklUICAgICAgICAgMHgwMTAwLyogRG9uJ3QgaW5pdGlhbGl6ZSBtZF9kYXRhICovCisgCitAQCAt MzYzLDE1ICszNjYsMTUgQEAgc3RydWN0IGV2cF9jaXBoZXJfc3QgeworIC8qIGNpcGhlciBoYW5k bGVzIHJhbmRvbSBrZXkgZ2VuZXJhdGlvbiAqLworICMgZGVmaW5lICAgICAgICAgRVZQX0NJUEhf UkFORF9LRVkgICAgICAgICAgICAgICAweDIwMAorIC8qIGNpcGhlciBoYXMgaXRzIG93biBhZGRp dGlvbmFsIGNvcHlpbmcgbG9naWMgKi8KKy0jIGRlZmluZSAgICAgICAgIEVWUF9DSVBIX0NVU1RP TV9DT1BZICAgICAgICAgICAgMHg0MDAKKysjIGRlZmluZSAgICAgICAgIEVWUF9DSVBIX0NVU1RP TV9DT1BZICAgICAgICAgICAgMHg0MDAwCisgLyogQWxsb3cgdXNlIGRlZmF1bHQgQVNOMSBnZXQv c2V0IGl2ICovCisgIyBkZWZpbmUgICAgICAgICBFVlBfQ0lQSF9GTEFHX0RFRkFVTFRfQVNOMSAg ICAgIDB4MTAwMAorIC8qIEJ1ZmZlciBsZW5ndGggaW4gYml0cyBub3QgYnl0ZXM6IENGQjEgbW9k ZSBvbmx5ICovCisgIyBkZWZpbmUgICAgICAgICBFVlBfQ0lQSF9GTEFHX0xFTkdUSF9CSVRTICAg ICAgIDB4MjAwMAorIC8qIE5vdGUgaWYgc3VpdGFibGUgZm9yIHVzZSBpbiBGSVBTIG1vZGUgKi8K Ky0jIGRlZmluZSAgICAgICAgIEVWUF9DSVBIX0ZMQUdfRklQUyAgICAgICAgICAgICAgMHg0MDAw CisrIyBkZWZpbmUgICAgICAgICBFVlBfQ0lQSF9GTEFHX0ZJUFMgICAgICAgICAgICAgIDB4NDAw CisgLyogQWxsb3cgbm9uIEZJUFMgY2lwaGVyIGluIEZJUFMgbW9kZSAqLworLSMgZGVmaW5lICAg ICAgICAgRVZQX0NJUEhfRkxBR19OT05fRklQU19BTExPVyAgICAweDgwMDAKKysjIGRlZmluZSAg ICAgICAgIEVWUF9DSVBIX0ZMQUdfTk9OX0ZJUFNfQUxMT1cgICAgMHg4MDAKKyAvKgorICAqIENp cGhlciBoYW5kbGVzIGFueSBhbmQgYWxsIHBhZGRpbmcgbG9naWMgYXMgd2VsbCBhcyBmaW5hbGlz YXRpb24uCisgICovCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL2V2cF9saWIu Yy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvZXZwX2xpYi5jCistLS0gb3BlbnNzbC0x LjAuMmMvY3J5cHRvL2V2cC9ldnBfbGliLmMuZmlwcwkyMDE1LTA2LTEyIDE2OjUxOjIxLjAwMDAw MDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvZXZwX2xpYi5jCTIwMTUt MDYtMTUgMTc6MzA6MDAuMDA0MjgzODkxICswMjAwCitAQCAtNjAsMTAgKzYwLDYgQEAKKyAjaW5j bHVkZSAiY3J5cHRsaWIuaCIKKyAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKyAjaW5jbHVkZSA8 b3BlbnNzbC9vYmplY3RzLmg+CistI2lmZGVmIE9QRU5TU0xfRklQUworLSMgaW5jbHVkZSA8b3Bl bnNzbC9maXBzLmg+CistIyBpbmNsdWRlICJldnBfbG9jbC5oIgorLSNlbmRpZgorIAorIGludCBF VlBfQ0lQSEVSX3BhcmFtX3RvX2FzbjEoRVZQX0NJUEhFUl9DVFggKmMsIEFTTjFfVFlQRSAqdHlw ZSkKKyB7CitAQCAtMjAwLDYgKzE5Niw5IEBAIGludCBFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXpl KGNvbnN0IEVWUF8KKyBpbnQgRVZQX0NpcGhlcihFVlBfQ0lQSEVSX0NUWCAqY3R4LCB1bnNpZ25l ZCBjaGFyICpvdXQsCisgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVu c2lnbmVkIGludCBpbmwpCisgeworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgRklQU19zZWxm dGVzdF9jaGVjaygpOworKyNlbmRpZgorICAgICByZXR1cm4gY3R4LT5jaXBoZXItPmRvX2NpcGhl cihjdHgsIG91dCwgaW4sIGlubCk7CisgfQorIAorQEAgLTIxMCwyMiArMjA5LDEyIEBAIGNvbnN0 IEVWUF9DSVBIRVIgKkVWUF9DSVBIRVJfQ1RYX2NpcGhlcigKKyAKKyB1bnNpZ25lZCBsb25nIEVW UF9DSVBIRVJfZmxhZ3MoY29uc3QgRVZQX0NJUEhFUiAqY2lwaGVyKQorIHsKKy0jaWZkZWYgT1BF TlNTTF9GSVBTCistICAgIGNvbnN0IEVWUF9DSVBIRVIgKmZjaXBoZXI7CistICAgIGZjaXBoZXIg PSBldnBfZ2V0X2ZpcHNfY2lwaGVyKGNpcGhlcik7CistICAgIGlmIChmY2lwaGVyICYmIGZjaXBo ZXItPmZsYWdzICYgRVZQX0NJUEhfRkxBR19GSVBTKQorLSAgICAgICAgcmV0dXJuIGNpcGhlci0+ ZmxhZ3MgfCBFVlBfQ0lQSF9GTEFHX0ZJUFM7CistI2VuZGlmCisgICAgIHJldHVybiBjaXBoZXIt PmZsYWdzOworIH0KKyAKKyB1bnNpZ25lZCBsb25nIEVWUF9DSVBIRVJfQ1RYX2ZsYWdzKGNvbnN0 IEVWUF9DSVBIRVJfQ1RYICpjdHgpCisgeworLSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAgcmV0 dXJuIEVWUF9DSVBIRVJfZmxhZ3MoY3R4LT5jaXBoZXIpOworLSNlbHNlCisgICAgIHJldHVybiBj dHgtPmNpcGhlci0+ZmxhZ3M7CistI2VuZGlmCisgfQorIAorIHZvaWQgKkVWUF9DSVBIRVJfQ1RY X2dldF9hcHBfZGF0YShjb25zdCBFVlBfQ0lQSEVSX0NUWCAqY3R4KQorQEAgLTI5Miw0MCArMjgx LDggQEAgaW50IEVWUF9NRF9zaXplKGNvbnN0IEVWUF9NRCAqbWQpCisgICAgIHJldHVybiBtZC0+ bWRfc2l6ZTsKKyB9CisgCistI2lmZGVmIE9QRU5TU0xfRklQUworLQorLWNvbnN0IEVWUF9NRCAq ZXZwX2dldF9maXBzX21kKGNvbnN0IEVWUF9NRCAqbWQpCisteworLSAgICBpbnQgbmlkID0gRVZQ X01EX3R5cGUobWQpOworLSAgICBpZiAobmlkID09IE5JRF9kc2EpCistICAgICAgICByZXR1cm4g RklQU19ldnBfZHNzMSgpOworLSAgICBlbHNlIGlmIChuaWQgPT0gTklEX2RzYVdpdGhTSEEpCist ICAgICAgICByZXR1cm4gRklQU19ldnBfZHNzKCk7CistICAgIGVsc2UgaWYgKG5pZCA9PSBOSURf ZWNkc2Ffd2l0aF9TSEExKQorLSAgICAgICAgcmV0dXJuIEZJUFNfZXZwX2VjZHNhKCk7CistICAg IGVsc2UKKy0gICAgICAgIHJldHVybiBGSVBTX2dldF9kaWdlc3RieW5pZChuaWQpOworLX0KKy0K Ky1jb25zdCBFVlBfQ0lQSEVSICpldnBfZ2V0X2ZpcHNfY2lwaGVyKGNvbnN0IEVWUF9DSVBIRVIg KmNpcGhlcikKKy17CistICAgIGludCBuaWQgPSBjaXBoZXItPm5pZDsKKy0gICAgaWYgKG5pZCA9 PSBOSURfdW5kZWYpCistICAgICAgICByZXR1cm4gRklQU19ldnBfZW5jX251bGwoKTsKKy0gICAg ZWxzZQorLSAgICAgICAgcmV0dXJuIEZJUFNfZ2V0X2NpcGhlcmJ5bmlkKG5pZCk7CistfQorLQor LSNlbmRpZgorLQorIHVuc2lnbmVkIGxvbmcgRVZQX01EX2ZsYWdzKGNvbnN0IEVWUF9NRCAqbWQp CisgeworLSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAgY29uc3QgRVZQX01EICpmbWQ7CistICAg IGZtZCA9IGV2cF9nZXRfZmlwc19tZChtZCk7CistICAgIGlmIChmbWQgJiYgZm1kLT5mbGFncyAm IEVWUF9NRF9GTEFHX0ZJUFMpCistICAgICAgICByZXR1cm4gbWQtPmZsYWdzIHwgRVZQX01EX0ZM QUdfRklQUzsKKy0jZW5kaWYKKyAgICAgcmV0dXJuIG1kLT5mbGFnczsKKyB9CisgCitkaWZmIC11 cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL2V2cF9sb2NsLmguZmlwcyBvcGVuc3NsLTEuMC4y Yy9jcnlwdG8vZXZwL2V2cF9sb2NsLmgKKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL2V2 cF9sb2NsLmguZmlwcwkyMDE1LTA2LTE1IDE3OjI5OjU5Ljg5NTI4MTM5NCArMDIwMAorKysrIG9w ZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvZXZwX2xvY2wuaAkyMDE1LTA2LTE1IDE3OjMwOjAwLjAw NDI4Mzg5MSArMDIwMAorQEAgLTI1OCwxMCArMjU4LDggQEAgY29uc3QgRVZQX0NJUEhFUiAqRVZQ XyMjY25hbWUjI19lY2Iodm9pZAorICAgICAgICAgQkxPQ0tfQ0lQSEVSX2Z1bmNfY2ZiKGNpcGhl ciMjXyMja2V5c2l6ZSxjcHJlZml4LGNiaXRzLGtzdHJ1Y3Qsa3NjaGVkKSBcCisgICAgICAgICBC TE9DS19DSVBIRVJfZGVmX2NmYihjaXBoZXIjI18jI2tleXNpemUsa3N0cnVjdCwgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTklEXyMjY2lwaGVyIyNfIyNrZXlzaXplLCBrZXlzaXpl LzgsIGl2X2xlbiwgY2JpdHMsIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGNp cGhlciMjX2luaXRfa2V5LCBOVUxMLCBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF VlBfQ0lQSEVSX3NldF9hc24xX2l2LCBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF VlBfQ0lQSEVSX2dldF9hc24xX2l2LCBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO VUxMKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX0NJUEhfRkxBR19ERUZBVUxU X0FTTjEsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpcGhlciMjX2luaXRfa2V5 LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQorIAorIHN0cnVjdCBldnBfcGtleV9jdHhfc3Qgewor ICAgICAvKiBNZXRob2QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3BlcmF0aW9uICovCitAQCAtMzU1 LDExICszNTMsNiBAQCBjb25zdCBFVlBfQ0lQSEVSICpldnBfZ2V0X2ZpcHNfY2lwaGVyKGNvCisg IyBkZWZpbmUgTUQyX0luaXQgICAgICAgIHByaXZhdGVfTUQyX0luaXQKKyAjIGRlZmluZSBNREMy X0luaXQgICAgICAgcHJpdmF0ZV9NREMyX0luaXQKKyAjIGRlZmluZSBTSEFfSW5pdCAgICAgICAg cHJpdmF0ZV9TSEFfSW5pdAorLSMgZGVmaW5lIFNIQTFfSW5pdCAgICAgICBwcml2YXRlX1NIQTFf SW5pdAorLSMgZGVmaW5lIFNIQTIyNF9Jbml0ICAgICBwcml2YXRlX1NIQTIyNF9Jbml0CistIyBk ZWZpbmUgU0hBMjU2X0luaXQgICAgIHByaXZhdGVfU0hBMjU2X0luaXQKKy0jIGRlZmluZSBTSEEz ODRfSW5pdCAgICAgcHJpdmF0ZV9TSEEzODRfSW5pdAorLSMgZGVmaW5lIFNIQTUxMl9Jbml0ICAg ICBwcml2YXRlX1NIQTUxMl9Jbml0CisgCisgIyBkZWZpbmUgQkZfc2V0X2tleSAgICAgIHByaXZh dGVfQkZfc2V0X2tleQorICMgZGVmaW5lIENBU1Rfc2V0X2tleSAgICBwcml2YXRlX0NBU1Rfc2V0 X2tleQorQEAgLTM2Nyw3ICszNjAsNiBAQCBjb25zdCBFVlBfQ0lQSEVSICpldnBfZ2V0X2ZpcHNf Y2lwaGVyKGNvCisgIyBkZWZpbmUgU0VFRF9zZXRfa2V5ICAgIHByaXZhdGVfU0VFRF9zZXRfa2V5 CisgIyBkZWZpbmUgUkMyX3NldF9rZXkgICAgIHByaXZhdGVfUkMyX3NldF9rZXkKKyAjIGRlZmlu ZSBSQzRfc2V0X2tleSAgICAgcHJpdmF0ZV9SQzRfc2V0X2tleQorLSMgZGVmaW5lIERFU19zZXRf a2V5X3VuY2hlY2tlZCAgIHByaXZhdGVfREVTX3NldF9rZXlfdW5jaGVja2VkCisgIyBkZWZpbmUg Q2FtZWxsaWFfc2V0X2tleSAgICAgICAgcHJpdmF0ZV9DYW1lbGxpYV9zZXRfa2V5CisgCisgI2Vu ZGlmCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL21fZHNzLmMuZmlwcyBvcGVu c3NsLTEuMC4yYy9jcnlwdG8vZXZwL21fZHNzLmMKKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8v ZXZwL21fZHNzLmMuZmlwcwkyMDE1LTA2LTEyIDE2OjUxOjIxLjAwMDAwMDAwMCArMDIwMAorKysr IG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvbV9kc3MuYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAw NDI4Mzg5MSArMDIwMAorQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGNvbnN0IEVWUF9NRCBkc2Ff bWQgPSB7CisgICAgIE5JRF9kc2FXaXRoU0hBLAorICAgICBOSURfZHNhV2l0aFNIQSwKKyAgICAg U0hBX0RJR0VTVF9MRU5HVEgsCistICAgIEVWUF9NRF9GTEFHX1BLRVlfRElHRVNULAorKyAgICBF VlBfTURfRkxBR19QS0VZX0RJR0VTVCB8IEVWUF9NRF9GTEFHX0ZJUFMsCisgICAgIGluaXQsCisg ICAgIHVwZGF0ZSwKKyAgICAgZmluYWwsCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8v ZXZwL21fZHNzMS5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2V2cC9tX2RzczEuYworLS0t IG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvbV9kc3MxLmMuZmlwcwkyMDE1LTA2LTEyIDE2OjUx OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvbV9kc3Mx LmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMDQyODM4OTEgKzAyMDAKK0BAIC04Nyw3ICs4Nyw3IEBA IHN0YXRpYyBjb25zdCBFVlBfTUQgZHNzMV9tZCA9IHsKKyAgICAgTklEX2RzYSwKKyAgICAgTklE X2RzYVdpdGhTSEExLAorICAgICBTSEFfRElHRVNUX0xFTkdUSCwKKy0gICAgRVZQX01EX0ZMQUdf UEtFWV9ESUdFU1QsCisrICAgIEVWUF9NRF9GTEFHX1BLRVlfRElHRVNUIHwgRVZQX01EX0ZMQUdf RklQUywKKyAgICAgaW5pdCwKKyAgICAgdXBkYXRlLAorICAgICBmaW5hbCwKK2RpZmYgLXVwIG9w ZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvbV9tZDIuYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0 by9ldnAvbV9tZDIuYworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvbV9tZDIuYy5maXBz CTIwMTUtMDYtMTIgMTY6NTE6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMv Y3J5cHRvL2V2cC9tX21kMi5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDA1MjgzOTEzICswMjAwCitA QCAtNjgsNiArNjgsNyBAQAorICMgaWZuZGVmIE9QRU5TU0xfTk9fUlNBCisgIyAgaW5jbHVkZSA8 b3BlbnNzbC9yc2EuaD4KKyAjIGVuZGlmCisrIyBpbmNsdWRlICJldnBfbG9jbC5oIgorIAorIHN0 YXRpYyBpbnQgaW5pdChFVlBfTURfQ1RYICpjdHgpCisgeworZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmMvY3J5cHRvL2V2cC9tX3NoYTEuYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvbV9z aGExLmMKKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL21fc2hhMS5jLmZpcHMJMjAxNS0w Ni0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8v ZXZwL21fc2hhMS5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDA1MjgzOTEzICswMjAwCitAQCAtODcs NyArODcsOCBAQCBzdGF0aWMgY29uc3QgRVZQX01EIHNoYTFfbWQgPSB7CisgICAgIE5JRF9zaGEx LAorICAgICBOSURfc2hhMVdpdGhSU0FFbmNyeXB0aW9uLAorICAgICBTSEFfRElHRVNUX0xFTkdU SCwKKy0gICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRIT0RfU0lHTkFUVVJFIHwgRVZQX01EX0ZMQUdf RElHQUxHSURfQUJTRU5ULAorKyAgICBFVlBfTURfRkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkUg fCBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQgfAorKyAgICAgICAgRVZQX01EX0ZMQUdfRklQ UywKKyAgICAgaW5pdCwKKyAgICAgdXBkYXRlLAorICAgICBmaW5hbCwKK0BAIC0xMzQsNyArMTM1 LDggQEAgc3RhdGljIGNvbnN0IEVWUF9NRCBzaGEyMjRfbWQgPSB7CisgICAgIE5JRF9zaGEyMjQs CisgICAgIE5JRF9zaGEyMjRXaXRoUlNBRW5jcnlwdGlvbiwKKyAgICAgU0hBMjI0X0RJR0VTVF9M RU5HVEgsCistICAgIEVWUF9NRF9GTEFHX1BLRVlfTUVUSE9EX1NJR05BVFVSRSB8IEVWUF9NRF9G TEFHX0RJR0FMR0lEX0FCU0VOVCwKKysgICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRIT0RfU0lHTkFU VVJFIHwgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5UIHwKKysgICAgICAgIEVWUF9NRF9GTEFH X0ZJUFMsCisgICAgIGluaXQyMjQsCisgICAgIHVwZGF0ZTI1NiwKKyAgICAgZmluYWwyNTYsCitA QCAtMTU0LDcgKzE1Niw4IEBAIHN0YXRpYyBjb25zdCBFVlBfTUQgc2hhMjU2X21kID0geworICAg ICBOSURfc2hhMjU2LAorICAgICBOSURfc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24sCisgICAgIFNI QTI1Nl9ESUdFU1RfTEVOR1RILAorLSAgICBFVlBfTURfRkxBR19QS0VZX01FVEhPRF9TSUdOQVRV UkUgfCBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNFTlQsCisrICAgIEVWUF9NRF9GTEFHX1BLRVlf TUVUSE9EX1NJR05BVFVSRSB8IEVWUF9NRF9GTEFHX0RJR0FMR0lEX0FCU0VOVCB8CisrICAgICAg ICBFVlBfTURfRkxBR19GSVBTLAorICAgICBpbml0MjU2LAorICAgICB1cGRhdGUyNTYsCisgICAg IGZpbmFsMjU2LAorQEAgLTE5Nyw3ICsyMDAsOCBAQCBzdGF0aWMgY29uc3QgRVZQX01EIHNoYTM4 NF9tZCA9IHsKKyAgICAgTklEX3NoYTM4NCwKKyAgICAgTklEX3NoYTM4NFdpdGhSU0FFbmNyeXB0 aW9uLAorICAgICBTSEEzODRfRElHRVNUX0xFTkdUSCwKKy0gICAgRVZQX01EX0ZMQUdfUEtFWV9N RVRIT0RfU0lHTkFUVVJFIHwgRVZQX01EX0ZMQUdfRElHQUxHSURfQUJTRU5ULAorKyAgICBFVlBf TURfRkxBR19QS0VZX01FVEhPRF9TSUdOQVRVUkUgfCBFVlBfTURfRkxBR19ESUdBTEdJRF9BQlNF TlQgfAorKyAgICAgICAgRVZQX01EX0ZMQUdfRklQUywKKyAgICAgaW5pdDM4NCwKKyAgICAgdXBk YXRlNTEyLAorICAgICBmaW5hbDUxMiwKK0BAIC0yMTcsNyArMjIxLDggQEAgc3RhdGljIGNvbnN0 IEVWUF9NRCBzaGE1MTJfbWQgPSB7CisgICAgIE5JRF9zaGE1MTIsCisgICAgIE5JRF9zaGE1MTJX aXRoUlNBRW5jcnlwdGlvbiwKKyAgICAgU0hBNTEyX0RJR0VTVF9MRU5HVEgsCistICAgIEVWUF9N RF9GTEFHX1BLRVlfTUVUSE9EX1NJR05BVFVSRSB8IEVWUF9NRF9GTEFHX0RJR0FMR0lEX0FCU0VO VCwKKysgICAgRVZQX01EX0ZMQUdfUEtFWV9NRVRIT0RfU0lHTkFUVVJFIHwgRVZQX01EX0ZMQUdf RElHQUxHSURfQUJTRU5UIHwKKysgICAgICAgIEVWUF9NRF9GTEFHX0ZJUFMsCisgICAgIGluaXQ1 MTIsCisgICAgIHVwZGF0ZTUxMiwKKyAgICAgZmluYWw1MTIsCitkaWZmIC11cCBvcGVuc3NsLTEu MC4yYy9jcnlwdG8vZXZwL3Bfc2lnbi5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2V2cC9w X3NpZ24uYworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvcF9zaWduLmMuZmlwcwkyMDE1 LTA2LTEyIDE2OjUxOjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0 by9ldnAvcF9zaWduLmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMDUyODM5MTMgKzAyMDAKK0BAIC02 MSw2ICs2MSw3IEBACisgI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisgI2luY2x1ZGUgPG9wZW5z c2wvb2JqZWN0cy5oPgorICNpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KKysjaW5jbHVkZSA8b3Bl bnNzbC9yc2EuaD4KKyAKKyAjaWZkZWYgdW5kZWYKKyB2b2lkIEVWUF9TaWduSW5pdChFVlBfTURf Q1RYICpjdHgsIEVWUF9NRCAqdHlwZSkKK0BAIC0xMDEsNiArMTAyLDIyIEBAIGludCBFVlBfU2ln bkZpbmFsKEVWUF9NRF9DVFggKmN0eCwgdW5zaWcKKyAgICAgICAgICAgICBnb3RvIGVycjsKKyAg ICAgICAgIGlmIChFVlBfUEtFWV9DVFhfc2V0X3NpZ25hdHVyZV9tZChwa2N0eCwgY3R4LT5kaWdl c3QpIDw9IDApCisgICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICBpZiAoY3R4LT5mbGFn cyAmIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSkKKysgICAgICAgICAgICBpZiAoRVZQX1BLRVlf Q1RYX3NldF9yc2FfcGFkZGluZyhwa2N0eCwgUlNBX1g5MzFfUEFERElORykgPD0gMCkKKysgICAg ICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICBpZiAoY3R4LT5mbGFncyAmIEVWUF9NRF9D VFhfRkxBR19QQURfUFNTKSB7CisrICAgICAgICAgICAgaW50IHNhbHRsZW47CisrICAgICAgICAg ICAgaWYgKEVWUF9QS0VZX0NUWF9zZXRfcnNhX3BhZGRpbmcocGtjdHgsIFJTQV9QS0NTMV9QU1Nf UEFERElORykgPD0KKysgICAgICAgICAgICAgICAgMCkKKysgICAgICAgICAgICAgICAgZ290byBl cnI7CisrICAgICAgICAgICAgc2FsdGxlbiA9IE1fRVZQX01EX0NUWF9GTEFHX1BTU19TQUxUKGN0 eCk7CisrICAgICAgICAgICAgaWYgKHNhbHRsZW4gPT0gRVZQX01EX0NUWF9GTEFHX1BTU19NRExF TikKKysgICAgICAgICAgICAgICAgc2FsdGxlbiA9IC0xOworKyAgICAgICAgICAgIGVsc2UgaWYg KHNhbHRsZW4gPT0gRVZQX01EX0NUWF9GTEFHX1BTU19NUkVDKQorKyAgICAgICAgICAgICAgICBz YWx0bGVuID0gLTI7CisrICAgICAgICAgICAgaWYgKEVWUF9QS0VZX0NUWF9zZXRfcnNhX3Bzc19z YWx0bGVuKHBrY3R4LCBzYWx0bGVuKSA8PSAwKQorKyAgICAgICAgICAgICAgICBnb3RvIGVycjsK KysgICAgICAgIH0KKyAgICAgICAgIGlmIChFVlBfUEtFWV9zaWduKHBrY3R4LCBzaWdyZXQsICZz bHRtcCwgbSwgbV9sZW4pIDw9IDApCisgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAq c2lnbGVuID0gc2x0bXA7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL3BfdmVy aWZ5LmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZXZwL3BfdmVyaWZ5LmMKKy0tLSBvcGVu c3NsLTEuMC4yYy9jcnlwdG8vZXZwL3BfdmVyaWZ5LmMuZmlwcwkyMDE1LTA2LTEyIDE2OjUxOjIx LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9ldnAvcF92ZXJpZnku YwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAwNTI4MzkxMyArMDIwMAorQEAgLTYxLDYgKzYxLDcgQEAK KyAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+ CisgI2luY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgor IAorIGludCBFVlBfVmVyaWZ5RmluYWwoRVZQX01EX0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBj aGFyICpzaWdidWYsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2lnbGVuLCBF VlBfUEtFWSAqcGtleSkKK0BAIC04Nyw2ICs4OCwyMiBAQCBpbnQgRVZQX1ZlcmlmeUZpbmFsKEVW UF9NRF9DVFggKmN0eCwgY29uCisgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICBpZiAo RVZQX1BLRVlfQ1RYX3NldF9zaWduYXR1cmVfbWQocGtjdHgsIGN0eC0+ZGlnZXN0KSA8PSAwKQor ICAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgaWYgKGN0eC0+ZmxhZ3MgJiBFVlBfTURf Q1RYX0ZMQUdfUEFEX1g5MzEpCisrICAgICAgICAgICAgaWYgKEVWUF9QS0VZX0NUWF9zZXRfcnNh X3BhZGRpbmcocGtjdHgsIFJTQV9YOTMxX1BBRERJTkcpIDw9IDApCisrICAgICAgICAgICAgICAg IGdvdG8gZXJyOworKyAgICAgICAgaWYgKGN0eC0+ZmxhZ3MgJiBFVlBfTURfQ1RYX0ZMQUdfUEFE X1BTUykgeworKyAgICAgICAgICAgIGludCBzYWx0bGVuOworKyAgICAgICAgICAgIGlmIChFVlBf UEtFWV9DVFhfc2V0X3JzYV9wYWRkaW5nKHBrY3R4LCBSU0FfUEtDUzFfUFNTX1BBRERJTkcpIDw9 CisrICAgICAgICAgICAgICAgIDApCisrICAgICAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAg ICAgICAgIHNhbHRsZW4gPSBNX0VWUF9NRF9DVFhfRkxBR19QU1NfU0FMVChjdHgpOworKyAgICAg ICAgICAgIGlmIChzYWx0bGVuID09IEVWUF9NRF9DVFhfRkxBR19QU1NfTURMRU4pCisrICAgICAg ICAgICAgICAgIHNhbHRsZW4gPSAtMTsKKysgICAgICAgICAgICBlbHNlIGlmIChzYWx0bGVuID09 IEVWUF9NRF9DVFhfRkxBR19QU1NfTVJFQykKKysgICAgICAgICAgICAgICAgc2FsdGxlbiA9IC0y OworKyAgICAgICAgICAgIGlmIChFVlBfUEtFWV9DVFhfc2V0X3JzYV9wc3Nfc2FsdGxlbihwa2N0 eCwgc2FsdGxlbikgPD0gMCkKKysgICAgICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICB9 CisgICAgICAgICBpID0gRVZQX1BLRVlfdmVyaWZ5KHBrY3R4LCBzaWdidWYsIHNpZ2xlbiwgbSwg bV9sZW4pOworICBlcnI6CisgICAgICAgICBFVlBfUEtFWV9DVFhfZnJlZShwa2N0eCk7CitkaWZm IC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2Flc19zZWxmdGVzdC5jLmZpcHMg b3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19hZXNfc2VsZnRlc3QuYworLS0tIG9wZW5z c2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfYWVzX3NlbGZ0ZXN0LmMuZmlwcwkyMDE1LTA2LTE1 IDE3OjMwOjAwLjAwNTI4MzkxMyArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBz L2ZpcHNfYWVzX3NlbGZ0ZXN0LmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMDUyODM5MTMgKzAyMDAK K0BAIC0wLDAgKzEsMzY1IEBACisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIw MDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBS ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y IHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0 cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK KysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysgKiAg ICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg dGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1h dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAgc29mdHdh cmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRo aXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJv amVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cu b3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBh bmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ug b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Cisr ICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBw bGVhc2UgY29udGFjdAorKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKysgKgorKyAq IDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVk ICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1l cyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NM IFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNv ZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6Cisr ICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9w ZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0 cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF RCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVTU0VE IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI RQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO VCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBCRSBM SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorKyAq IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ Q0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF UlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBX QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICog T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisrI2luY2x1 ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpZmRlZiBPUEVOU1NM X0ZJUFMKKysjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNlbmRpZgorKyNpbmNsdWRlIDxv cGVuc3NsL2V2cC5oPgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKytzdGF0aWMgY29uc3Qgc3Ry dWN0IHsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciBrZXlbMTZdOworKyAgICBjb25zdCB1bnNp Z25lZCBjaGFyIHBsYWludGV4dFsxNl07CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2lwaGVy dGV4dFsxNl07CisrfSB0ZXN0c1tdID0geworKyAgICB7CisrICAgICAgICB7CisrICAgICAgICAw eDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAorKyAgICAgICAg ICAgICAgICAweDA4LCAweDA5LCAweDBBLCAweDBCLCAweDBDLCAweDBELCAweDBFLCAweDBGfSwg eworKyAgICAgICAgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3 NywKKysgICAgICAgICAgICAgICAgMHg4OCwgMHg5OSwgMHhBQSwgMHhCQiwgMHhDQywgMHhERCwg MHhFRSwgMHhGRn0sIHsKKysweDY5LCAweEM0LCAweEUwLCAweEQ4LCAweDZBLCAweDdCLCAweDA0 LCAweDMwLAorKyAgICAgICAgICAgICAgICAweEQ4LCAweENELCAweEI3LCAweDgwLCAweDcwLCAw eEI0LCAweEM1LCAweDVBfSx9LH07CisrCisrc3RhdGljIGludCBjb3JydXB0X2FlczsKKysKKyt2 b2lkIEZJUFNfY29ycnVwdF9hZXMoKQorK3sKKysgICAgY29ycnVwdF9hZXMgPSAxOworK30KKysK KytpbnQgRklQU19zZWxmdGVzdF9hZXMoKQorK3sKKysgICAgaW50IG47CisrICAgIGludCByZXQg PSAwOworKyAgICBFVlBfQ0lQSEVSX0NUWCBjdHg7CisrICAgIEVWUF9DSVBIRVJfQ1RYX2luaXQo JmN0eCk7CisrCisrICAgIGZvciAobiA9IDA7IG4gPCAxOyArK24pIHsKKysgICAgICAgIHVuc2ln bmVkIGNoYXIga2V5WzE2XTsKKysKKysgICAgICAgIG1lbWNweShrZXksIHRlc3RzW25dLmtleSwg c2l6ZW9mKGtleSkpOworKyAgICAgICAgaWYgKGNvcnJ1cHRfYWVzKQorKyAgICAgICAgICAgIGtl eVswXSsrOworKyAgICAgICAgaWYgKGZpcHNfY2lwaGVyX3Rlc3QoJmN0eCwgRVZQX2Flc18xMjhf ZWNiKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksIE5VTEwsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c1tuXS5wbGFpbnRleHQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0c1tuXS5jaXBoZXJ0ZXh0LCAxNikgPD0gMCkKKysgICAgICAg ICAgICBnb3RvIGVycjsKKysgICAgfQorKyAgICByZXQgPSAxOworKyBlcnI6CisrICAgIEVWUF9D SVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7CisrICAgIGlmIChyZXQgPT0gMCkKKysgICAgICAgIEZJ UFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsK KysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrLyogQUVTLUNDTSB0ZXN0IGRhdGEgZnJvbSBOSVNU IHB1YmxpYyB0ZXN0IHZlY3RvcnMgKi8KKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBj Y21fa2V5W10gPSB7CisrICAgIDB4Y2UsIDB4YjAsIDB4MDksIDB4YWUsIDB4YTQsIDB4NDUsIDB4 NDQsIDB4NTEsIDB4ZmUsIDB4YWQsIDB4ZjAsIDB4ZTYsCisrICAgIDB4YjMsIDB4NmYsIDB4NDUs IDB4NTUsIDB4NWQsIDB4ZDAsIDB4NDcsIDB4MjMsIDB4YmEsIDB4YTQsIDB4NDgsIDB4ZTgKKyt9 OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNjbV9ub25jZVtdID0geworKyAgICAw eDc2LCAweDQwLCAweDQzLCAweGM0LCAweDk0LCAweDYwLCAweGI3CisrfTsKKysKKytzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBjY21fYWRhdGFbXSA9IHsKKysgICAgMHg2ZSwgMHg4MCwgMHhk ZCwgMHg3ZiwgMHgxYiwgMHhhZCwgMHhmMywgMHhhMSwgMHhjOSwgMHhhYiwgMHgyNSwgMHhjNywK KysgICAgMHg1ZiwgMHgxMCwgMHhiZCwgMHhlNywgMHg4YywgMHgyMywgMHhmYSwgMHgwZSwgMHhi OCwgMHhmOSwgMHhhYSwgMHhhNSwKKysgICAgMHgzYSwgMHhkZSwgMHhmYiwgMHhmNCwgMHhjYiwg MHhmNywgMHg4ZiwgMHhlNAorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2Nt X3B0W10gPSB7CisrICAgIDB4YzgsIDB4ZDIsIDB4NzUsIDB4ZjksIDB4MTksIDB4ZTEsIDB4N2Qs IDB4N2YsIDB4ZTYsIDB4OWMsIDB4MmEsIDB4MWYsCisrICAgIDB4NTgsIDB4OTMsIDB4OWQsIDB4 ZmUsIDB4NGQsIDB4NDAsIDB4MzcsIDB4OTEsIDB4YjUsIDB4ZGYsIDB4MTMsIDB4MTAKKyt9Owor KworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNjbV9jdFtdID0geworKyAgICAweDhhLCAw eDBmLCAweDNkLCAweDgyLCAweDI5LCAweGU0LCAweDhlLCAweDc0LCAweDg3LCAweGZkLCAweDk1 LCAweGEyLAorKyAgICAweDhhLCAweGQzLCAweDkyLCAweGM4LCAweDBiLCAweDM2LCAweDgxLCAw eGQ0LCAweGZiLCAweGM3LCAweGJiLCAweGZkCisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBjY21fdGFnW10gPSB7CisrICAgIDB4MmQsIDB4ZDYsIDB4ZWYsIDB4MWMsIDB4NDUs IDB4ZDQsIDB4Y2MsIDB4YjcsIDB4MjMsIDB4ZGMsIDB4MDcsIDB4NDQsCisrICAgIDB4MTQsIDB4 ZGIsIDB4NTAsIDB4NmQKKyt9OworKworK2ludCBGSVBTX3NlbGZ0ZXN0X2Flc19jY20odm9pZCkK Kyt7CisrICAgIGludCByZXQgPSAwOworKyAgICB1bnNpZ25lZCBjaGFyIG91dFsxMjhdLCB0YWdb MTZdOworKyAgICBFVlBfQ0lQSEVSX0NUWCBjdHg7CisrICAgIEVWUF9DSVBIRVJfQ1RYX2luaXQo JmN0eCk7CisrICAgIG1lbXNldChvdXQsIDAsIHNpemVvZihvdXQpKTsKKysgICAgaWYgKCFFVlBf Q2lwaGVySW5pdF9leCgmY3R4LCBFVlBfYWVzXzE5Ml9jY20oKSwgTlVMTCwgTlVMTCwgTlVMTCwg MSkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJsKCZj dHgsIEVWUF9DVFJMX0NDTV9TRVRfSVZMRU4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YoY2NtX25vbmNlKSwgTlVMTCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYg KCFFVlBfQ0lQSEVSX0NUWF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRfVEFHLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNjbV90YWcpLCBOVUxMKSkKKysgICAgICAg IGdvdG8gZXJyOworKyAgICBpZiAoIUVWUF9DaXBoZXJJbml0X2V4KCZjdHgsIE5VTEwsIE5VTEws IGNjbV9rZXksIGNjbV9ub25jZSwgMSkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKEVW UF9DaXBoZXIoJmN0eCwgTlVMTCwgTlVMTCwgc2l6ZW9mKGNjbV9wdCkpICE9IHNpemVvZihjY21f cHQpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEws IGNjbV9hZGF0YSwgc2l6ZW9mKGNjbV9hZGF0YSkpIDwgMCkKKysgICAgICAgIGdvdG8gZXJyOwor KyAgICBpZiAoRVZQX0NpcGhlcigmY3R4LCBvdXQsIGNjbV9wdCwgc2l6ZW9mKGNjbV9wdCkpICE9 IHNpemVvZihjY21fY3QpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGlmICghRVZQX0NJ UEhFUl9DVFhfY3RybCgmY3R4LCBFVlBfQ1RSTF9DQ01fR0VUX1RBRywgMTYsIHRhZykpCisrICAg ICAgICBnb3RvIGVycjsKKysgICAgaWYgKG1lbWNtcCh0YWcsIGNjbV90YWcsIHNpemVvZihjY21f dGFnKSkKKysgICAgICAgIHx8IG1lbWNtcChvdXQsIGNjbV9jdCwgc2l6ZW9mKGNjbV9jdCkpKQor KyAgICAgICAgZ290byBlcnI7CisrCisrICAgIG1lbXNldChvdXQsIDAsIHNpemVvZihvdXQpKTsK KysKKysgICAgaWYgKCFFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBfYWVzXzE5Ml9jY20oKSwg TlVMTCwgTlVMTCwgTlVMTCwgMCkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFFVlBf Q0lQSEVSX0NUWF9jdHJsKCZjdHgsIEVWUF9DVFJMX0NDTV9TRVRfSVZMRU4sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplb2YoY2NtX25vbmNlKSwgTlVMTCkpCisrICAgICAgICBn b3RvIGVycjsKKysgICAgaWYgKCFFVlBfQ0lQSEVSX0NUWF9jdHJsKCZjdHgsIEVWUF9DVFJMX0ND TV9TRVRfVEFHLCAxNiwgdGFnKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIUVWUF9D aXBoZXJJbml0X2V4KCZjdHgsIE5VTEwsIE5VTEwsIGNjbV9rZXksIGNjbV9ub25jZSwgMCkpCisr ICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKEVWUF9DaXBoZXIoJmN0eCwgTlVMTCwgTlVMTCwg c2l6ZW9mKGNjbV9jdCkpICE9IHNpemVvZihjY21fY3QpKQorKyAgICAgICAgZ290byBlcnI7Cisr ICAgIGlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIGNjbV9hZGF0YSwgc2l6ZW9mKGNjbV9hZGF0 YSkpIDwgMCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4LCBv dXQsIGNjbV9jdCwgc2l6ZW9mKGNjbV9jdCkpICE9IHNpemVvZihjY21fcHQpKQorKyAgICAgICAg Z290byBlcnI7CisrCisrICAgIGlmIChtZW1jbXAob3V0LCBjY21fcHQsIHNpemVvZihjY21fcHQp KSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICByZXQgPSAxOworKworKyBlcnI6CisrICAg IEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7CisrCisrICAgIGlmIChyZXQgPT0gMCkgewor KyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19TRUxGVEVTVF9BRVNfQ0NNLCBGSVBTX1JfU0VM RlRFU1RfRkFJTEVEKTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9IGVsc2UKKysgICAgICAg IHJldHVybiByZXQ7CisrCisrfQorKworKy8qIEFFUy1HQ00gdGVzdCBkYXRhIGZyb20gTklTVCBw dWJsaWMgdGVzdCB2ZWN0b3JzICovCisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ2Nt X2tleVtdID0geworKyAgICAweGVlLCAweGJjLCAweDFmLCAweDU3LCAweDQ4LCAweDdmLCAweDUx LCAweDkyLCAweDFjLCAweDA0LCAweDY1LCAweDY2LAorKyAgICAweDVmLCAweDhhLCAweGU2LCAw eGQxLCAweDY1LCAweDhiLCAweGIyLCAweDZkLCAweGU2LCAweGY4LCAweGEwLCAweDY5LAorKyAg ICAweGEzLCAweDUyLCAweDAyLCAweDkzLCAweGE1LCAweDcyLCAweDA3LCAweDhmCisrfTsKKysK KytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBnY21faXZbXSA9IHsKKysgICAgMHg5OSwgMHhh YSwgMHgzZSwgMHg2OCwgMHhlZCwgMHg4MSwgMHg3MywgMHhhMCwgMHhlZSwgMHhkMCwgMHg2Niwg MHg4NAorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ2NtX3B0W10gPSB7Cisr ICAgIDB4ZjUsIDB4NmUsIDB4ODcsIDB4MDUsIDB4NWIsIDB4YzMsIDB4MmQsIDB4MGUsIDB4ZWIs IDB4MzEsIDB4YjIsIDB4ZWEsCisrICAgIDB4Y2MsIDB4MmIsIDB4ZjIsIDB4YTUKKyt9OworKwor K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGdjbV9hYWRbXSA9IHsKKysgICAgMHg0ZCwgMHgy MywgMHhjMywgMHhjZSwgMHhjMywgMHgzNCwgMHhiNCwgMHg5YiwgMHhkYiwgMHgzNywgMHgwYywg MHg0MywKKysgICAgMHg3ZiwgMHhlYywgMHg3OCwgMHhkZQorK307CisrCisrc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgZ2NtX2N0W10gPSB7CisrICAgIDB4ZjcsIDB4MjYsIDB4NDQsIDB4MTMs IDB4YTgsIDB4NGMsIDB4MGUsIDB4N2MsIDB4ZDUsIDB4MzYsIDB4ODYsIDB4N2UsCisrICAgIDB4 YjksIDB4ZjIsIDB4MTcsIDB4MzYKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGdjbV90YWdbXSA9IHsKKysgICAgMHg2NywgMHhiYSwgMHgwNSwgMHgxMCwgMHgyNiwgMHgyYSwg MHhlNCwgMHg4NywgMHhkNywgMHgzNywgMHhlZSwgMHg2MiwKKysgICAgMHg5OCwgMHhmNywgMHg3 ZSwgMHgwYworK307CisrCisraW50IEZJUFNfc2VsZnRlc3RfYWVzX2djbSh2b2lkKQorK3sKKysg ICAgaW50IHJldCA9IDA7CisrICAgIHVuc2lnbmVkIGNoYXIgb3V0WzEyOF0sIHRhZ1sxNl07Cisr ICAgIEVWUF9DSVBIRVJfQ1RYIGN0eDsKKysgICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsK KysgICAgbWVtc2V0KG91dCwgMCwgc2l6ZW9mKG91dCkpOworKyAgICBtZW1zZXQodGFnLCAwLCBz aXplb2YodGFnKSk7CisrICAgIGlmICghRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgRVZQX2Flc18y NTZfZ2NtKCksIE5VTEwsIE5VTEwsIE5VTEwsIDEpKQorKyAgICAgICAgZ290byBlcnI7CisrICAg IGlmICghRVZQX0NJUEhFUl9DVFhfY3RybCgmY3R4LCBFVlBfQ1RSTF9HQ01fU0VUX0lWTEVOLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdjbV9pdiksIE5VTEwpKQorKyAg ICAgICAgZ290byBlcnI7CisrICAgIGlmICghRVZQX0NpcGhlckluaXRfZXgoJmN0eCwgTlVMTCwg TlVMTCwgZ2NtX2tleSwgZ2NtX2l2LCAxKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAo RVZQX0NpcGhlcigmY3R4LCBOVUxMLCBnY21fYWFkLCBzaXplb2YoZ2NtX2FhZCkpIDwgMCkKKysg ICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4LCBvdXQsIGdjbV9wdCwg c2l6ZW9mKGdjbV9wdCkpICE9IHNpemVvZihnY21fY3QpKQorKyAgICAgICAgZ290byBlcnI7Cisr ICAgIGlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIE5VTEwsIDApIDwgMCkKKysgICAgICAgIGdv dG8gZXJyOworKworKyAgICBpZiAoIUVWUF9DSVBIRVJfQ1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxf R0NNX0dFVF9UQUcsIDE2LCB0YWcpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGlmICht ZW1jbXAodGFnLCBnY21fdGFnLCAxNikgfHwgbWVtY21wKG91dCwgZ2NtX2N0LCAxNikpCisrICAg ICAgICBnb3RvIGVycjsKKysKKysgICAgbWVtc2V0KG91dCwgMCwgc2l6ZW9mKG91dCkpOworKwor KyAgICBpZiAoIUVWUF9DaXBoZXJJbml0X2V4KCZjdHgsIEVWUF9hZXNfMjU2X2djbSgpLCBOVUxM LCBOVUxMLCBOVUxMLCAwKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIUVWUF9DSVBI RVJfQ1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxfR0NNX1NFVF9JVkxFTiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZihnY21faXYpLCBOVUxMKSkKKysgICAgICAgIGdvdG8gZXJy OworKyAgICBpZiAoIUVWUF9DSVBIRVJfQ1RYX2N0cmwoJmN0eCwgRVZQX0NUUkxfR0NNX1NFVF9U QUcsIDE2LCB0YWcpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghRVZQX0NpcGhlcklu aXRfZXgoJmN0eCwgTlVMTCwgTlVMTCwgZ2NtX2tleSwgZ2NtX2l2LCAwKSkKKysgICAgICAgIGdv dG8gZXJyOworKyAgICBpZiAoRVZQX0NpcGhlcigmY3R4LCBOVUxMLCBnY21fYWFkLCBzaXplb2Yo Z2NtX2FhZCkpIDwgMCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoRVZQX0NpcGhlcigm Y3R4LCBvdXQsIGdjbV9jdCwgc2l6ZW9mKGdjbV9jdCkpICE9IHNpemVvZihnY21fcHQpKQorKyAg ICAgICAgZ290byBlcnI7CisrICAgIGlmIChFVlBfQ2lwaGVyKCZjdHgsIE5VTEwsIE5VTEwsIDAp IDwgMCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBpZiAobWVtY21wKG91dCwgZ2NtX3B0 LCAxNikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgcmV0ID0gMTsKKysKKysgZXJyOgor KyAgICBFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjdHgpOworKworKyAgICBpZiAocmV0ID09IDAp IHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX0dDTSwgRklQU19S X1NFTEZURVNUX0ZBSUxFRCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfSBlbHNlCisrICAg ICAgICByZXR1cm4gcmV0OworKworK30KKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBY VFNfMTI4X2tleVtdID0geworKyAgICAweGExLCAweGI5LCAweDBjLCAweGJhLCAweDNmLCAweDA2 LCAweGFjLCAweDM1LCAweDNiLCAweDJjLCAweDM0LCAweDM4LAorKyAgICAweDc2LCAweDA4LCAw eDE3LCAweDYyLCAweDA5LCAweDA5LCAweDIzLCAweDAyLCAweDZlLCAweDkxLCAweDc3LCAweDE4 LAorKyAgICAweDE1LCAweGYyLCAweDlkLCAweGFiLCAweDAxLCAweDkzLCAweDJmLCAweDJmCisr fTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBYVFNfMTI4X2lbXSA9IHsKKysgICAg MHg0ZiwgMHhhZSwgMHhmNywgMHgxMSwgMHg3YywgMHhkYSwgMHg1OSwgMHhjNiwgMHg2ZSwgMHg0 YiwgMHg5MiwgMHgwMSwKKysgICAgMHgzZSwgMHg3NiwgMHg4YSwgMHhkNQorK307CisrCisrc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgWFRTXzEyOF9wdFtdID0geworKyAgICAweGViLCAweGFi LCAweGNlLCAweDk1LCAweGIxLCAweDRkLCAweDNjLCAweDhkLCAweDZmLCAweGIzLCAweDUwLCAw eDM5LAorKyAgICAweDA3LCAweDkwLCAweDMxLCAweDFjCisrfTsKKysKKytzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBYVFNfMTI4X2N0W10gPSB7CisrICAgIDB4NzcsIDB4OGEsIDB4ZTgsIDB4 YjQsIDB4M2MsIDB4YjksIDB4OGQsIDB4NWEsIDB4ODIsIDB4NTAsIDB4ODEsIDB4ZDUsCisrICAg IDB4YmUsIDB4NDcsIDB4MWMsIDB4NjMKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIFhUU18yNTZfa2V5W10gPSB7CisrICAgIDB4MWUsIDB4YTYsIDB4NjEsIDB4YzUsIDB4OGQs IDB4OTQsIDB4M2EsIDB4MGUsIDB4NDgsIDB4MDEsIDB4ZTQsIDB4MmYsCisrICAgIDB4NGIsIDB4 MDksIDB4NDcsIDB4MTQsIDB4OWUsIDB4N2YsIDB4OWYsIDB4OGUsIDB4M2UsIDB4NjgsIDB4ZDAs IDB4YzcsCisrICAgIDB4NTAsIDB4NTIsIDB4MTAsIDB4YmQsIDB4MzEsIDB4MWEsIDB4MGUsIDB4 N2MsIDB4ZDYsIDB4ZTEsIDB4M2YsIDB4ZmQsCisrICAgIDB4ZjIsIDB4NDEsIDB4OGQsIDB4OGQs IDB4MTksIDB4MTEsIDB4YzAsIDB4MDQsIDB4Y2QsIDB4YTUsIDB4OGQsIDB4YTMsCisrICAgIDB4 ZDYsIDB4MTksIDB4YjcsIDB4ZTIsIDB4YjksIDB4MTQsIDB4MWUsIDB4NTgsIDB4MzEsIDB4OGUs IDB4ZWEsIDB4MzksCisrICAgIDB4MmMsIDB4ZjQsIDB4MWIsIDB4MDgKKyt9OworKworK3N0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIFhUU18yNTZfaVtdID0geworKyAgICAweGFkLCAweGY4LCAw eGQ5LCAweDI2LCAweDI3LCAweDQ2LCAweDRhLCAweGQyLCAweGYwLCAweDQyLCAweDhlLCAweDg0 LAorKyAgICAweGE5LCAweGY4LCAweDc1LCAweDY0CisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBYVFNfMjU2X3B0W10gPSB7CisrICAgIDB4MmUsIDB4ZWQsIDB4ZWEsIDB4NTIs IDB4Y2QsIDB4ODIsIDB4MTUsIDB4ZTEsIDB4YWMsIDB4YzYsIDB4NDcsIDB4ZTgsCisrICAgIDB4 MTAsIDB4YmIsIDB4YzMsIDB4NjQsIDB4MmUsIDB4ODcsIDB4MjgsIDB4N2YsIDB4OGQsIDB4MmUs IDB4NTcsIDB4ZTMsCisrICAgIDB4NmMsIDB4MGEsIDB4MjQsIDB4ZmIsIDB4YzEsIDB4MmEsIDB4 MjAsIDB4MmUKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIFhUU18yNTZfY3Rb XSA9IHsKKysgICAgMHhjYiwgMHhhYSwgMHhkMCwgMHhlMiwgMHhmNiwgMHhjZSwgMHhhMywgMHhm NSwgMHgwYiwgMHgzNywgMHhmOSwgMHgzNCwKKysgICAgMHhkNCwgMHg2YSwgMHg5YiwgMHgxMywg MHgwYiwgMHg5ZCwgMHg1NCwgMHhmMCwgMHg3ZSwgMHgzNCwgMHhmMywgMHg2YSwKKysgICAgMHhm NywgMHg5MywgMHhlOCwgMHg2ZiwgMHg3MywgMHhjNiwgMHhkNywgMHhkYgorK307CisrCisraW50 IEZJUFNfc2VsZnRlc3RfYWVzX3h0cygpCisreworKyAgICBpbnQgcmV0ID0gMTsKKysgICAgRVZQ X0NJUEhFUl9DVFggY3R4OworKyAgICBFVlBfQ0lQSEVSX0NUWF9pbml0KCZjdHgpOworKworKyAg ICBpZiAoZmlwc19jaXBoZXJfdGVzdCgmY3R4LCBFVlBfYWVzXzEyOF94dHMoKSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgWFRTXzEyOF9rZXksIFhUU18xMjhfaSwgWFRTXzEyOF9wdCwgWFRT XzEyOF9jdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFhUU18xMjhfcHQpKSA8 PSAwKQorKyAgICAgICAgcmV0ID0gMDsKKysKKysgICAgaWYgKGZpcHNfY2lwaGVyX3Rlc3QoJmN0 eCwgRVZQX2Flc18yNTZfeHRzKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgIFhUU18yNTZf a2V5LCBYVFNfMjU2X2ksIFhUU18yNTZfcHQsIFhUU18yNTZfY3QsCisrICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVvZihYVFNfMjU2X3B0KSkgPD0gMCkKKysgICAgICAgIHJldCA9IDA7Cisr CisrICAgIEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7CisrICAgIGlmIChyZXQgPT0gMCkK KysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX1hUUywgRklQU19SX1NF TEZURVNUX0ZBSUxFRCk7CisrICAgIHJldHVybiByZXQ7CisrfQorKworKyNlbmRpZgorZGlmZiAt dXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwcy5jLmZpcHMgb3BlbnNzbC0xLjAuMmMv Y3J5cHRvL2ZpcHMvZmlwcy5jCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwcy5j LmZpcHMJMjAxNS0wNi0xNSAxNzozMDowMC4wMDYyODM5MzYgKzAyMDAKKysrKyBvcGVuc3NsLTEu MC4yYy9jcnlwdG8vZmlwcy9maXBzLmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMDYyODM5MzYgKzAy MDAKK0BAIC0wLDAgKzEsNDgzIEBACisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMp IDIwMDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysg KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVk aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysg KiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp dGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5n IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAgc29m dHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAg IlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wg UHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93 d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0 IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9y c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0 CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9u LCBwbGVhc2UgY29udGFjdAorKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKysgKgor KyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2Fs bGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBu YW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVu U1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hh dHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6 CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhl IE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAo aHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W SURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVT U0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAor KyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ TlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisr ICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisrI2Rl ZmluZSBfR05VX1NPVVJDRQorKworKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKysjaW5jbHVk ZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5j bHVkZSA8b3BlbnNzbC9iaW8uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+CisrI2luY2x1 ZGUgPG9wZW5zc2wvcnNhLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxsaW1p dHMuaD4KKysjaW5jbHVkZSA8ZGxmY24uaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVk ZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgImZpcHNfbG9jbC5oIgorKworKyNpZmRlZiBPUEVOU1NM X0ZJUFMKKysKKysjIGluY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKworKyMgaWZuZGVmIFBBVEhf TUFYCisrIyAgZGVmaW5lIFBBVEhfTUFYIDEwMjQKKysjIGVuZGlmCisrCisrc3RhdGljIGludCBm aXBzX3NlbGZ0ZXN0X2ZhaWwgPSAwOworK3N0YXRpYyBpbnQgZmlwc19tb2RlID0gMDsKKytzdGF0 aWMgaW50IGZpcHNfc3RhcnRlZCA9IDA7CisrCisrc3RhdGljIGludCBmaXBzX2lzX293bmluZ190 aHJlYWQodm9pZCk7Cisrc3RhdGljIGludCBmaXBzX3NldF9vd25pbmdfdGhyZWFkKHZvaWQpOwor K3N0YXRpYyBpbnQgZmlwc19jbGVhcl9vd25pbmdfdGhyZWFkKHZvaWQpOworKworKyMgZGVmaW5l IGZpcHNfd19sb2NrKCkgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX0ZJUFMpCisrIyBkZWZp bmUgZmlwc193X3VubG9jaygpIENSWVBUT193X3VubG9jayhDUllQVE9fTE9DS19GSVBTKQorKyMg ZGVmaW5lIGZpcHNfcl9sb2NrKCkgICBDUllQVE9fcl9sb2NrKENSWVBUT19MT0NLX0ZJUFMpCisr IyBkZWZpbmUgZmlwc19yX3VubG9jaygpIENSWVBUT19yX3VubG9jayhDUllQVE9fTE9DS19GSVBT KQorKworK3N0YXRpYyB2b2lkIGZpcHNfc2V0X21vZGUoaW50IG9ub2ZmKQorK3sKKysgICAgaW50 IG93bmluZ190aHJlYWQgPSBmaXBzX2lzX293bmluZ190aHJlYWQoKTsKKysKKysgICAgaWYgKGZp cHNfc3RhcnRlZCkgeworKyAgICAgICAgaWYgKCFvd25pbmdfdGhyZWFkKQorKyAgICAgICAgICAg IGZpcHNfd19sb2NrKCk7CisrICAgICAgICBmaXBzX21vZGUgPSBvbm9mZjsKKysgICAgICAgIGlm ICghb3duaW5nX3RocmVhZCkKKysgICAgICAgICAgICBmaXBzX3dfdW5sb2NrKCk7CisrICAgIH0K Kyt9CisrCisraW50IEZJUFNfbW9kdWxlX21vZGUodm9pZCkKKyt7CisrICAgIGludCByZXQgPSAw OworKyAgICBpbnQgb3duaW5nX3RocmVhZCA9IGZpcHNfaXNfb3duaW5nX3RocmVhZCgpOworKwor KyAgICBpZiAoZmlwc19zdGFydGVkKSB7CisrICAgICAgICBpZiAoIW93bmluZ190aHJlYWQpCisr ICAgICAgICAgICAgZmlwc19yX2xvY2soKTsKKysgICAgICAgIHJldCA9IGZpcHNfbW9kZTsKKysg ICAgICAgIGlmICghb3duaW5nX3RocmVhZCkKKysgICAgICAgICAgICBmaXBzX3JfdW5sb2NrKCk7 CisrICAgIH0KKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisraW50IEZJUFNfc2VsZnRlc3RfZmFp bGVkKHZvaWQpCisreworKyAgICBpbnQgcmV0ID0gMDsKKysgICAgaWYgKGZpcHNfc3RhcnRlZCkg eworKyAgICAgICAgaW50IG93bmluZ190aHJlYWQgPSBmaXBzX2lzX293bmluZ190aHJlYWQoKTsK KysKKysgICAgICAgIGlmICghb3duaW5nX3RocmVhZCkKKysgICAgICAgICAgICBmaXBzX3JfbG9j aygpOworKyAgICAgICAgcmV0ID0gZmlwc19zZWxmdGVzdF9mYWlsOworKyAgICAgICAgaWYgKCFv d25pbmdfdGhyZWFkKQorKyAgICAgICAgICAgIGZpcHNfcl91bmxvY2soKTsKKysgICAgfQorKyAg ICByZXR1cm4gcmV0OworK30KKysKKysvKiBTZWxmdGVzdCBmYWlsdXJlIGZhdGFsIGV4aXQgcm91 dGluZS4gVGhpcyB3aWxsIGJlIGNhbGxlZAorKyAqIGR1cmluZyAqYW55KiBjcnlwdG9ncmFwaGlj IG9wZXJhdGlvbi4gSXQgaGFzIHRoZSBtaW5pbXVtCisrICogb3ZlcmhlYWQgcG9zc2libGUgdG8g YXZvaWQgdG9vIGJpZyBhIHBlcmZvcm1hbmNlIGhpdC4KKysgKi8KKysKKyt2b2lkIEZJUFNfc2Vs ZnRlc3RfY2hlY2sodm9pZCkKKyt7CisrICAgIGlmIChmaXBzX3NlbGZ0ZXN0X2ZhaWwpIHsKKysg ICAgICAgIE9wZW5TU0xEaWUoX19GSUxFX18sIF9fTElORV9fLCAiRkFUQUwgRklQUyBTRUxGVEVT VCBGQUlMVVJFIik7CisrICAgIH0KKyt9CisrCisrdm9pZCBmaXBzX3NldF9zZWxmdGVzdF9mYWls KHZvaWQpCisreworKyAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAxOworK30KKysKKysvKiB3ZSBp bXBsZW1lbnQgd2hhdCBsaWJmaXBzY2hlY2sgZG9lcyBvdXJzZWx2ZXMgKi8KKysKKytzdGF0aWMg aW50CisrZ2V0X2xpYnJhcnlfcGF0aChjb25zdCBjaGFyICpsaWJuYW1lLCBjb25zdCBjaGFyICpz eW1ib2xuYW1lLCBjaGFyICpwYXRoLAorKyAgICAgICAgICAgICAgICAgc2l6ZV90IHBhdGhsZW4p CisreworKyAgICBEbF9pbmZvIGluZm87CisrICAgIHZvaWQgKmRsLCAqc3ltOworKyAgICBpbnQg cnYgPSAtMTsKKysKKysgICAgZGwgPSBkbG9wZW4obGlibmFtZSwgUlRMRF9MQVpZKTsKKysgICAg aWYgKGRsID09IE5VTEwpIHsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgfQorKworKyAgICBz eW0gPSBkbHN5bShkbCwgc3ltYm9sbmFtZSk7CisrCisrICAgIGlmIChzeW0gIT0gTlVMTCAmJiBk bGFkZHIoc3ltLCAmaW5mbykpIHsKKysgICAgICAgIHN0cm5jcHkocGF0aCwgaW5mby5kbGlfZm5h bWUsIHBhdGhsZW4gLSAxKTsKKysgICAgICAgIHBhdGhbcGF0aGxlbiAtIDFdID0gJ1wwJzsKKysg ICAgICAgIHJ2ID0gMDsKKysgICAgfQorKworKyAgICBkbGNsb3NlKGRsKTsKKysKKysgICAgcmV0 dXJuIHJ2OworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciBjb252W10gPSAiMDEyMzQ1Njc4OWFi Y2RlZiI7CisrCisrc3RhdGljIGNoYXIgKmJpbjJoZXgodm9pZCAqYnVmLCBzaXplX3QgbGVuKQor K3sKKysgICAgY2hhciAqaGV4LCAqcDsKKysgICAgdW5zaWduZWQgY2hhciAqc3JjID0gYnVmOwor KworKyAgICBoZXggPSBtYWxsb2MobGVuICogMiArIDEpOworKyAgICBpZiAoaGV4ID09IE5VTEwp CisrICAgICAgICByZXR1cm4gTlVMTDsKKysKKysgICAgcCA9IGhleDsKKysKKysgICAgd2hpbGUg KGxlbiA+IDApIHsKKysgICAgICAgIHVuc2lnbmVkIGM7CisrCisrICAgICAgICBjID0gKnNyYzsK KysgICAgICAgIHNyYysrOworKworKyAgICAgICAgKnAgPSBjb252W2MgPj4gNF07CisrICAgICAg ICArK3A7CisrICAgICAgICAqcCA9IGNvbnZbYyAmIDB4MGZdOworKyAgICAgICAgKytwOworKyAg ICAgICAgLS1sZW47CisrICAgIH0KKysgICAgKnAgPSAnXDAnOworKyAgICByZXR1cm4gaGV4Owor K30KKysKKysjIGRlZmluZSBITUFDX1BSRUZJWCAiLiIKKysjIGRlZmluZSBITUFDX1NVRkZJWCAi LmhtYWMiCisrIyBkZWZpbmUgUkVBRF9CVUZGRVJfTEVOR1RIIDE2Mzg0CisrCisrc3RhdGljIGNo YXIgKm1ha2VfaG1hY19wYXRoKGNvbnN0IGNoYXIgKm9yaWdwYXRoKQorK3sKKysgICAgY2hhciAq cGF0aCwgKnA7CisrICAgIGNvbnN0IGNoYXIgKmZuOworKworKyAgICBwYXRoID0KKysgICAgICAg IG1hbGxvYyhzaXplb2YoSE1BQ19QUkVGSVgpICsgc2l6ZW9mKEhNQUNfU1VGRklYKSArIHN0cmxl bihvcmlncGF0aCkpOworKyAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisrICAgICAgICByZXR1cm4g TlVMTDsKKysgICAgfQorKworKyAgICBmbiA9IHN0cnJjaHIob3JpZ3BhdGgsICcvJyk7CisrICAg IGlmIChmbiA9PSBOVUxMKSB7CisrICAgICAgICBmbiA9IG9yaWdwYXRoOworKyAgICB9IGVsc2Ug eworKyAgICAgICAgKytmbjsKKysgICAgfQorKworKyAgICBzdHJuY3B5KHBhdGgsIG9yaWdwYXRo LCBmbiAtIG9yaWdwYXRoKTsKKysgICAgcCA9IHBhdGggKyAoZm4gLSBvcmlncGF0aCk7CisrICAg IHAgPSBzdHBjcHkocCwgSE1BQ19QUkVGSVgpOworKyAgICBwID0gc3RwY3B5KHAsIGZuKTsKKysg ICAgcCA9IHN0cGNweShwLCBITUFDX1NVRkZJWCk7CisrCisrICAgIHJldHVybiBwYXRoOworK30K KysKKytzdGF0aWMgY29uc3QgY2hhciBobWFja2V5W10gPSAib3Jib0RlSklUSVRlanNpcnBBRE9O aXZpcnBVa3ZhclAiOworKworK3N0YXRpYyBpbnQgY29tcHV0ZV9maWxlX2htYWMoY29uc3QgY2hh ciAqcGF0aCwgdm9pZCAqKmJ1Ziwgc2l6ZV90ICpobWFjbGVuKQorK3sKKysgICAgRklMRSAqZiA9 IE5VTEw7CisrICAgIGludCBydiA9IC0xOworKyAgICB1bnNpZ25lZCBjaGFyIHJidWZbUkVBRF9C VUZGRVJfTEVOR1RIXTsKKysgICAgc2l6ZV90IGxlbjsKKysgICAgdW5zaWduZWQgaW50IGhsZW47 CisrICAgIEhNQUNfQ1RYIGM7CisrCisrICAgIEhNQUNfQ1RYX2luaXQoJmMpOworKworKyAgICBm ID0gZm9wZW4ocGF0aCwgInIiKTsKKysKKysgICAgaWYgKGYgPT0gTlVMTCkgeworKyAgICAgICAg Z290byBlbmQ7CisrICAgIH0KKysKKysgICAgSE1BQ19Jbml0KCZjLCBobWFja2V5LCBzaXplb2Yo aG1hY2tleSkgLSAxLCBFVlBfc2hhMjU2KCkpOworKworKyAgICB3aGlsZSAoKGxlbiA9IGZyZWFk KHJidWYsIDEsIHNpemVvZihyYnVmKSwgZikpICE9IDApIHsKKysgICAgICAgIEhNQUNfVXBkYXRl KCZjLCByYnVmLCBsZW4pOworKyAgICB9CisrCisrICAgIGxlbiA9IHNpemVvZihyYnVmKTsKKysg ICAgLyogcmV1c2UgcmJ1ZiBmb3IgaG1hYyAqLworKyAgICBITUFDX0ZpbmFsKCZjLCByYnVmLCAm aGxlbik7CisrCisrICAgICpidWYgPSBtYWxsb2MoaGxlbik7CisrICAgIGlmICgqYnVmID09IE5V TEwpIHsKKysgICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrCisrICAgICpobWFjbGVuID0gaGxl bjsKKysKKysgICAgbWVtY3B5KCpidWYsIHJidWYsIGhsZW4pOworKworKyAgICBydiA9IDA7Cisr IGVuZDoKKysgICAgSE1BQ19DVFhfY2xlYW51cCgmYyk7CisrCisrICAgIGlmIChmKQorKyAgICAg ICAgZmNsb3NlKGYpOworKworKyAgICByZXR1cm4gcnY7CisrfQorKworK3N0YXRpYyBpbnQgRklQ U0NIRUNLX3ZlcmlmeShjb25zdCBjaGFyICpsaWJuYW1lLCBjb25zdCBjaGFyICpzeW1ib2xuYW1l KQorK3sKKysgICAgY2hhciBwYXRoW1BBVEhfTUFYICsgMV07CisrICAgIGludCBydjsKKysgICAg RklMRSAqaGY7CisrICAgIGNoYXIgKmhtYWNwYXRoLCAqcDsKKysgICAgY2hhciAqaG1hYyA9IE5V TEw7CisrICAgIHNpemVfdCBuOworKworKyAgICBydiA9IGdldF9saWJyYXJ5X3BhdGgobGlibmFt ZSwgc3ltYm9sbmFtZSwgcGF0aCwgc2l6ZW9mKHBhdGgpKTsKKysKKysgICAgaWYgKHJ2IDwgMCkK KysgICAgICAgIHJldHVybiAwOworKworKyAgICBobWFjcGF0aCA9IG1ha2VfaG1hY19wYXRoKHBh dGgpOworKyAgICBpZiAoaG1hY3BhdGggPT0gTlVMTCkKKysgICAgICAgIHJldHVybiAwOworKwor KyAgICBoZiA9IGZvcGVuKGhtYWNwYXRoLCAiciIpOworKyAgICBpZiAoaGYgPT0gTlVMTCkgewor KyAgICAgICAgZnJlZShobWFjcGF0aCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKwor KyAgICBpZiAoZ2V0bGluZSgmaG1hYywgJm4sIGhmKSA+IDApIHsKKysgICAgICAgIHZvaWQgKmJ1 ZjsKKysgICAgICAgIHNpemVfdCBobWFjbGVuOworKyAgICAgICAgY2hhciAqaGV4OworKworKyAg ICAgICAgaWYgKChwID0gc3RyY2hyKGhtYWMsICdcbicpKSAhPSBOVUxMKQorKyAgICAgICAgICAg ICpwID0gJ1wwJzsKKysKKysgICAgICAgIGlmIChjb21wdXRlX2ZpbGVfaG1hYyhwYXRoLCAmYnVm LCAmaG1hY2xlbikgPCAwKSB7CisrICAgICAgICAgICAgcnYgPSAtNDsKKysgICAgICAgICAgICBn b3RvIGVuZDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICgoaGV4ID0gYmluMmhleChidWYs IGhtYWNsZW4pKSA9PSBOVUxMKSB7CisrICAgICAgICAgICAgZnJlZShidWYpOworKyAgICAgICAg ICAgIHJ2ID0gLTU7CisrICAgICAgICAgICAgZ290byBlbmQ7CisrICAgICAgICB9CisrCisrICAg ICAgICBpZiAoc3RyY21wKGhleCwgaG1hYykgIT0gMCkgeworKyAgICAgICAgICAgIHJ2ID0gLTE7 CisrICAgICAgICB9CisrICAgICAgICBmcmVlKGJ1Zik7CisrICAgICAgICBmcmVlKGhleCk7Cisr ICAgIH0gZWxzZSB7CisrICAgICAgICBydiA9IC0xOworKyAgICB9CisrCisrIGVuZDoKKysgICAg ZnJlZShobWFjKTsKKysgICAgZnJlZShobWFjcGF0aCk7CisrICAgIGZjbG9zZShoZik7CisrCisr ICAgIGlmIChydiA8IDApCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgLyogY2hlY2sgc3Vj Y2Vzc2Z1bCAqLworKyAgICByZXR1cm4gMTsKKyt9CisrCisraW50IEZJUFNfbW9kdWxlX21vZGVf c2V0KGludCBvbm9mZiwgY29uc3QgY2hhciAqYXV0aCkKKyt7CisrICAgIGludCByZXQgPSAwOwor KworKyAgICBmaXBzX3dfbG9jaygpOworKyAgICBmaXBzX3N0YXJ0ZWQgPSAxOworKyAgICBmaXBz X3NldF9vd25pbmdfdGhyZWFkKCk7CisrCisrICAgIGlmIChvbm9mZikgeworKworKyAgICAgICAg Zmlwc19zZWxmdGVzdF9mYWlsID0gMDsKKysKKysgICAgICAgIC8qIERvbid0IGdvIGludG8gRklQ UyBtb2RlIHR3aWNlLCBqdXN0IHNvIHdlIGNhbiBkbyBhdXRvbWFnaWMKKysgICAgICAgICAgIHNl ZWRpbmcgKi8KKysgICAgICAgIGlmIChGSVBTX21vZHVsZV9tb2RlKCkpIHsKKysgICAgICAgICAg ICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RFX1NFVCwKKysgICAgICAgICAgICAgICAg ICAgIEZJUFNfUl9GSVBTX01PREVfQUxSRUFEWV9TRVQpOworKyAgICAgICAgICAgIGZpcHNfc2Vs ZnRlc3RfZmFpbCA9IDE7CisrICAgICAgICAgICAgcmV0ID0gMDsKKysgICAgICAgICAgICBnb3Rv IGVuZDsKKysgICAgICAgIH0KKysjIGlmZGVmIE9QRU5TU0xfSUEzMl9TU0UyCisrICAgICAgICB7 CisrICAgICAgICAgICAgZXh0ZXJuIHVuc2lnbmVkIGludCBPUEVOU1NMX2lhMzJjYXBfUFsyXTsK KysgICAgICAgICAgICBpZiAoKE9QRU5TU0xfaWEzMmNhcF9QWzBdICYgKDEgPDwgMjUgfCAxIDw8 IDI2KSkgIT0KKysgICAgICAgICAgICAgICAgKDEgPDwgMjUgfCAxIDw8IDI2KSkgeworKyAgICAg ICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RFX1NFVCwKKysgICAgICAg ICAgICAgICAgICAgICAgICBGSVBTX1JfVU5TVVBQT1JURURfUExBVEZPUk0pOworKyAgICAgICAg ICAgICAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAxOworKyAgICAgICAgICAgICAgICByZXQgPSAw OworKyAgICAgICAgICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgT1BFTlNTTF9pYTMyY2FwX1BbMF0gfD0gKDEgPDwgMjgpOyAvKiBzZXQgInNoYXJlZCBjYWNo ZSIgICAqLworKyAgICAgICAgICAgIE9QRU5TU0xfaWEzMmNhcF9QWzFdICY9IH4oMSA8PCAoNjAg LSAzMikpOyAvKiBjbGVhciBBVlggICAgICAgICAgICAqLworKyAgICAgICAgfQorKyMgZW5kaWYK KysKKysgICAgICAgIGlmICghRklQU0NIRUNLX3ZlcmlmeQorKyAgICAgICAgICAgICgibGliY3J5 cHRvLnNvLiIgU0hMSUJfVkVSU0lPTl9OVU1CRVIsICJGSVBTX21vZGVfc2V0IikpIHsKKysgICAg ICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVMRV9NT0RFX1NFVCwKKysgICAgICAgICAg ICAgICAgICAgIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05PVF9NQVRDSCk7CisrICAgICAgICAg ICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKKysgICAgICAgICAgICByZXQgPSAwOworKyAgICAg ICAgICAgIGdvdG8gZW5kOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKCFGSVBTQ0hFQ0tf dmVyaWZ5CisrICAgICAgICAgICAgKCJsaWJzc2wuc28uIiBTSExJQl9WRVJTSU9OX05VTUJFUiwg IlNTTF9DVFhfbmV3IikpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PRFVM RV9NT0RFX1NFVCwKKysgICAgICAgICAgICAgICAgICAgIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VT X05PVF9NQVRDSCk7CisrICAgICAgICAgICAgZmlwc19zZWxmdGVzdF9mYWlsID0gMTsKKysgICAg ICAgICAgICByZXQgPSAwOworKyAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICAgICAgfQorKwor KyAgICAgICAgaWYgKEZJUFNfc2VsZnRlc3QoKSkKKysgICAgICAgICAgICBmaXBzX3NldF9tb2Rl KG9ub2ZmKTsKKysgICAgICAgIGVsc2UgeworKyAgICAgICAgICAgIGZpcHNfc2VsZnRlc3RfZmFp bCA9IDE7CisrICAgICAgICAgICAgcmV0ID0gMDsKKysgICAgICAgICAgICBnb3RvIGVuZDsKKysg ICAgICAgIH0KKysgICAgICAgIHJldCA9IDE7CisrICAgICAgICBnb3RvIGVuZDsKKysgICAgfQor KyAgICBmaXBzX3NldF9tb2RlKDApOworKyAgICBmaXBzX3NlbGZ0ZXN0X2ZhaWwgPSAwOworKyAg ICByZXQgPSAxOworKyBlbmQ6CisrICAgIGZpcHNfY2xlYXJfb3duaW5nX3RocmVhZCgpOworKyAg ICBmaXBzX3dfdW5sb2NrKCk7CisrICAgIHJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBDUllQ VE9fVEhSRUFESUQgZmlwc190aHJlYWQ7Cisrc3RhdGljIGludCBmaXBzX3RocmVhZF9zZXQgPSAw OworKworK3N0YXRpYyBpbnQgZmlwc19pc19vd25pbmdfdGhyZWFkKHZvaWQpCisreworKyAgICBp bnQgcmV0ID0gMDsKKysKKysgICAgaWYgKGZpcHNfc3RhcnRlZCkgeworKyAgICAgICAgQ1JZUFRP X3JfbG9jayhDUllQVE9fTE9DS19GSVBTMik7CisrICAgICAgICBpZiAoZmlwc190aHJlYWRfc2V0 KSB7CisrICAgICAgICAgICAgQ1JZUFRPX1RIUkVBRElEIGN1cjsKKysgICAgICAgICAgICBDUllQ VE9fVEhSRUFESURfY3VycmVudCgmY3VyKTsKKysgICAgICAgICAgICBpZiAoIUNSWVBUT19USFJF QURJRF9jbXAoJmN1ciwgJmZpcHNfdGhyZWFkKSkKKysgICAgICAgICAgICAgICAgcmV0ID0gMTsK KysgICAgICAgIH0KKysgICAgICAgIENSWVBUT19yX3VubG9jayhDUllQVE9fTE9DS19GSVBTMik7 CisrICAgIH0KKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisraW50IGZpcHNfc2V0X293bmluZ190 aHJlYWQodm9pZCkKKyt7CisrICAgIGludCByZXQgPSAwOworKworKyAgICBpZiAoZmlwc19zdGFy dGVkKSB7CisrICAgICAgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX0ZJUFMyKTsKKysgICAg ICAgIGlmICghZmlwc190aHJlYWRfc2V0KSB7CisrICAgICAgICAgICAgQ1JZUFRPX1RIUkVBRElE X2N1cnJlbnQoJmZpcHNfdGhyZWFkKTsKKysgICAgICAgICAgICByZXQgPSAxOworKyAgICAgICAg ICAgIGZpcHNfdGhyZWFkX3NldCA9IDE7CisrICAgICAgICB9CisrICAgICAgICBDUllQVE9fd191 bmxvY2soQ1JZUFRPX0xPQ0tfRklQUzIpOworKyAgICB9CisrICAgIHJldHVybiByZXQ7CisrfQor KworK2ludCBmaXBzX2NsZWFyX293bmluZ190aHJlYWQodm9pZCkKKyt7CisrICAgIGludCByZXQg PSAwOworKworKyAgICBpZiAoZmlwc19zdGFydGVkKSB7CisrICAgICAgICBDUllQVE9fd19sb2Nr KENSWVBUT19MT0NLX0ZJUFMyKTsKKysgICAgICAgIGlmIChmaXBzX3RocmVhZF9zZXQpIHsKKysg ICAgICAgICAgICBDUllQVE9fVEhSRUFESUQgY3VyOworKyAgICAgICAgICAgIENSWVBUT19USFJF QURJRF9jdXJyZW50KCZjdXIpOworKyAgICAgICAgICAgIGlmICghQ1JZUFRPX1RIUkVBRElEX2Nt cCgmY3VyLCAmZmlwc190aHJlYWQpKQorKyAgICAgICAgICAgICAgICBmaXBzX3RocmVhZF9zZXQg PSAwOworKyAgICAgICAgfQorKyAgICAgICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX0ZJ UFMyKTsKKysgICAgfQorKyAgICByZXR1cm4gcmV0OworK30KKysKKysjIGlmIDAKKysvKiBUaGUg cHVycG9zZSBvZiB0aGlzIGlzIHRvIGVuc3VyZSB0aGUgZXJyb3IgY29kZSBleGlzdHMgYW5kIHRo ZSBmdW5jdGlvbgorKyAqIG5hbWUgaXMgdG8ga2VlcCB0aGUgZXJyb3IgY2hlY2tpbmcgc2NyaXB0 IHF1aWV0CisrICovCisrdm9pZCBoYXNoX2ZpbmFsKHZvaWQpCisreworKyAgICBGSVBTZXJyKEZJ UFNfRl9IQVNIX0ZJTkFMLCBGSVBTX1JfTk9OX0ZJUFNfTUVUSE9EKTsKKyt9CisrIyBlbmRpZgor KworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19jbWFj X3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2NtYWNfc2Vs ZnRlc3QuYworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfY21hY19zZWxmdGVz dC5jLmZpcHMJMjAxNS0wNi0xNSAxNzozMDowMC4wMDYyODM5MzYgKzAyMDAKKysrKyBvcGVuc3Ns LTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2NtYWNfc2VsZnRlc3QuYwkyMDE1LTA2LTE1IDE3OjMw OjAwLjAwNjI4MzkzNiArMDIwMAorQEAgLTAsMCArMSwxNTYgQEAKKysvKiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor KyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6 CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAz LiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9m IHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds ZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3Bl ZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBU b29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVz ICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2Vk IHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz IHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3 cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9w ZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh cmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIg YXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1p c3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9u cyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAg ICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJl IGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUg T3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFO RCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJ VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE RU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg KElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNU IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisr ICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJy Lmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2NtYWMu aD4KKysjaW5jbHVkZSAiZmlwc19sb2NsLmgiCisrCisrI2lmZGVmIE9QRU5TU0xfRklQUworK3R5 cGVkZWYgc3RydWN0IHsKKysgICAgaW50IG5pZDsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciBr ZXlbRVZQX01BWF9LRVlfTEVOR1RIXTsKKysgICAgc2l6ZV90IGtleXNpemU7CisrICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgbXNnWzY0XTsKKysgICAgc2l6ZV90IG1zZ3NpemU7CisrICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgbWFjWzMyXTsKKysgICAgc2l6ZV90IG1hY3NpemU7CisrfSBDTUFDX0tB VDsKKysKKysvKiBmcm9tIGh0dHA6Ly9jc3JjLm5pc3QuZ292L3B1YmxpY2F0aW9ucy9uaXN0cHVi cy84MDAtMzhCL1NQXzgwMC0zOEIucGRmICovCisrc3RhdGljIGNvbnN0IENNQUNfS0FUIHZlY3Rv cltdID0geworKyAgICB7TklEX2Flc18xMjhfY2JjLCAgICAgICAgICAgLyogQ291bnQgPSAzMiBm cm9tIENNQUNHZW5BRVMxMjgudHh0ICovCisrICAgICB7MHg3NywgMHhhNywgMHg3ZiwgMHhhZiwg MHgyOSwgMHgwYywgMHgxZiwgMHhhMywKKysgICAgICAweDBjLCAweDY4LCAweDNkLCAweGYxLCAw eDZiLCAweGE3LCAweGE3LCAweDdiLH0sIDEyOCwKKysgICAgIHsweDAyLCAweDA2LCAweDgzLCAw eGUxLCAweGYwLCAweDM5LCAweDJmLCAweDRjLAorKyAgICAgIDB4YWMsIDB4NTQsIDB4MzEsIDB4 OGIsIDB4NjAsIDB4MjksIDB4MjUsIDB4OWUsCisrICAgICAgMHg5YywgMHg1NSwgMHgzZCwgMHhi YywgMHg0YiwgMHg2YSwgMHhkOSwgMHg5OCwKKysgICAgICAweGU2LCAweDRkLCAweDU4LCAweGU0 LCAweGU3LCAweGRjLCAweDJlLCAweDEzLH0sIDI1NiwKKysgICAgIHsweGZiLCAweGZlLCAweGE0 LCAweDFiLH0sIDMyfSwKKysgICAge05JRF9hZXNfMTkyX2NiYywgICAgICAgICAgIC8qIENvdW50 ID0gMjMgZnJvbSBDTUFDR2VuQUVTMTkyLnR4dCAqLworKyAgICAgezB4N2IsIDB4MzIsIDB4Mzks IDB4MTMsIDB4NjksIDB4YWEsIDB4NGMsIDB4YTksCisrICAgICAgMHg3NSwgMHg1OCwgMHgwOSwg MHg1YiwgMHhlMywgMHhjMywgMHhlYywgMHg4NiwKKysgICAgICAweDJiLCAweGQwLCAweDU3LCAw eGNlLCAweGYxLCAweGUzLCAweDJkLCAweDYyLH0sIDE5MiwKKysgICAgIHsweDB9LCAwLAorKyAg ICAgezB4ZTQsIDB4ZDksIDB4MzQsIDB4MGIsIDB4MDMsIDB4ZTYsIDB4N2QsIDB4ZWYsCisrICAg ICAgMHhkNCwgMHg5NiwgMHg5YywgMHhjMSwgMHhlZCwgMHgzNywgMHgzNSwgMHhlNix9LCAxMjgs CisrICAgICB9LAorKyAgICB7TklEX2Flc18yNTZfY2JjLCAgICAgICAgICAgLyogQ291bnQgPSAz MyBmcm9tIENNQUNHZW5BRVMyNTYudHh0ICovCisrICAgICB7MHgwYiwgMHgxMiwgMHgyYSwgMHhj OCwgMHhmMywgMHg0ZSwgMHhkMSwgMHhmZSwKKysgICAgICAweDA4LCAweDJhLCAweDM2LCAweDI1 LCAweGQxLCAweDU3LCAweDU2LCAweDE0LAorKyAgICAgIDB4NTQsIDB4MTYsIDB4N2EsIDB4YzEs IDB4NDUsIDB4YTEsIDB4MGIsIDB4YmYsCisrICAgICAgMHg3NywgMHhjNiwgMHhhNywgMHgwNSwg MHg5NiwgMHhkNSwgMHg3NCwgMHhmMSx9LCAyNTYsCisrICAgICB7MHg0OSwgMHg4YiwgMHg1Mywg MHhmZCwgMHhlYywgMHg4NywgMHhlZCwgMHhjYiwKKysgICAgICAweGYwLCAweDcwLCAweDk3LCAw eGRjLCAweGNkLCAweGU5LCAweDNhLCAweDA4LAorKyAgICAgIDB4NGIsIDB4YWQsIDB4NzUsIDB4 MDEsIDB4YTIsIDB4MjQsIDB4ZTMsIDB4ODgsCisrICAgICAgMHhkZiwgMHgzNCwgMHg5YywgMHhl MSwgMHg4OSwgMHg1OSwgMHhmZSwgMHg4NCwKKysgICAgICAweDg1LCAweGY4LCAweGFkLCAweDE1 LCAweDM3LCAweGYwLCAweGQ4LCAweDk2LAorKyAgICAgIDB4ZWEsIDB4NzMsIDB4YmUsIDB4ZGMs IDB4NzIsIDB4MTQsIDB4NzEsIDB4M2YsfSwgMzg0LAorKyAgICAgezB4ZjYsIDB4MmMsIDB4NDYs IDB4MzIsIDB4OWIsfSwgNDAsCisrICAgICB9LAorKyAgICB7TklEX2Rlc19lZGUzX2NiYywgICAg ICAgICAgLyogQ291bnQgPSA0MSBmcm9tIENNQUNHZW5UREVTMy5yZXEgKi8KKysgICAgIHsweDg5 LCAweGJjLCAweGQ5LCAweDUyLCAweGE4LCAweGM4LCAweGFiLCAweDM3LAorKyAgICAgIDB4MWEs IDB4ZjQsIDB4OGEsIDB4YzcsIDB4ZDAsIDB4NzAsIDB4ODUsIDB4ZDUsCisrICAgICAgMHhlZiwg MHhmNywgMHgwMiwgMHhlNiwgMHhkNiwgMHgyYywgMHhkYywgMHgyMyx9LCAxOTIsCisrICAgICB7 MHhmYSwgMHg2MiwgMHgwYywgMHgxYiwgMHhiZSwgMHg5NywgMHgzMSwgMHg5ZSwKKysgICAgICAw eDlhLCAweDBjLCAweGYwLCAweDQ5LCAweDIxLCAweDIxLCAweGY3LCAweGEyLAorKyAgICAgIDB4 MGUsIDB4YjAsIDB4OGEsIDB4NmEsIDB4NzAsIDB4OWQsIDB4Y2IsIDB4ZDAsCisrICAgICAgMHgw YSwgMHhhZiwgMHgzOCwgMHhlNCwgMHhmOSwgMHg5ZSwgMHg3NSwgMHg0ZSx9LCAyNTYsCisrICAg ICB7MHg4ZiwgMHg0OSwgMHhhMSwgMHhiNywgMHhkNiwgMHhhYSwgMHgyMiwgMHg1OCx9LCA2NCwK KysgICAgIH0sCisrfTsKKysKKytpbnQgRklQU19zZWxmdGVzdF9jbWFjKCkKKyt7CisrICAgIHNp emVfdCBuLCBvdXRsZW47CisrICAgIHVuc2lnbmVkIGNoYXIgb3V0WzMyXTsKKysgICAgY29uc3Qg RVZQX0NJUEhFUiAqY2lwaGVyOworKyAgICBDTUFDX0NUWCAqY3R4ID0gQ01BQ19DVFhfbmV3KCk7 CisrICAgIGNvbnN0IENNQUNfS0FUICp0OworKyAgICBpbnQgcnYgPSAxOworKworKyAgICBmb3Ig KG4gPSAwLCB0ID0gdmVjdG9yOyBuIDwgc2l6ZW9mKHZlY3RvcikgLyBzaXplb2YodmVjdG9yWzBd KTsgbisrLCB0KyspIHsKKysgICAgICAgIGNpcGhlciA9IEZJUFNfZ2V0X2NpcGhlcmJ5bmlkKHQt Pm5pZCk7CisrICAgICAgICBpZiAoIWNpcGhlcikgeworKyAgICAgICAgICAgIHJ2ID0gLTE7Cisr ICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICB9CisrICAgICAgICBpZiAoIUNNQUNfSW5p dChjdHgsIHQtPmtleSwgdC0+a2V5c2l6ZSAvIDgsIGNpcGhlciwgMCkpIHsKKysgICAgICAgICAg ICBydiA9IC0xOworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKyAgICAgICAg aWYgKCFDTUFDX1VwZGF0ZShjdHgsIHQtPm1zZywgdC0+bXNnc2l6ZSAvIDgpKSB7CisrICAgICAg ICAgICAgcnYgPSAtMTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysKKysg ICAgICAgIGlmICghQ01BQ19GaW5hbChjdHgsIG91dCwgJm91dGxlbikpIHsKKysgICAgICAgICAg ICBydiA9IC0xOworKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICAgICAgfQorKyAgICAgICAg Q01BQ19DVFhfY2xlYW51cChjdHgpOworKworKyAgICAgICAgaWYgKG91dGxlbiA8IHQtPm1hY3Np emUgLyA4IHx8IG1lbWNtcChvdXQsIHQtPm1hYywgdC0+bWFjc2l6ZSAvIDgpKSB7CisrICAgICAg ICAgICAgcnYgPSAwOworKyAgICAgICAgfQorKyAgICB9CisrCisrIGVycjoKKysgICAgQ01BQ19D VFhfZnJlZShjdHgpOworKworKyAgICBpZiAocnYgPT0gLTEpIHsKKysgICAgICAgIHJ2ID0gMDsK KysgICAgfQorKyAgICBpZiAoIXJ2KQorKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19TRUxG VEVTVF9DTUFDLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKKysKKysgICAgcmV0dXJuIHJ2Owor K30KKysjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfZGVz X3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2Rlc19zZWxm dGVzdC5jCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kZXNfc2VsZnRlc3Qu Yy5maXBzCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDA2MjgzOTM2ICswMjAwCisrKysgb3BlbnNzbC0x LjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kZXNfc2VsZnRlc3QuYwkyMDE1LTA2LTE1IDE3OjMwOjAw LjAwNjI4MzkzNiArMDIwMAorQEAgLTAsMCArMSwxMzggQEAKKysvKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAq IENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNl cnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6Cisr ICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh bHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBB bGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRo aXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRn bWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBi eSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29s a2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJP cGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRv CisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv ZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0 dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5z c2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg bWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBw ZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Np b24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBv ZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBh Y2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRl dmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3Bl blNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNP RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBB TlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xB SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMg Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U QUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO Q0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJ QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAq IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoK KysgKi8KKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+ CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2Vu ZGlmCisrI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNz bGNvbmYuaD4KKysKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrCisrc3RhdGljIGNvbnN0IHN0cnVj dCB7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIga2V5WzE2XTsKKysgICAgY29uc3QgdW5zaWdu ZWQgY2hhciBwbGFpbnRleHRbOF07CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2lwaGVydGV4 dFs4XTsKKyt9IHRlc3RzMltdID0geworKyAgICB7CisrICAgICAgICB7CisrICAgICAgICAweDdj LCAweDRmLCAweDZlLCAweGY3LCAweGEyLCAweDA0LCAweDE2LCAweGVjLAorKyAgICAgICAgICAg ICAgICAweDBiLCAweDZiLCAweDdjLCAweDllLCAweDVlLCAweDE5LCAweGE3LCAweGM0fSwgewor KyAgICAgICAgMHgwNiwgMHhhNywgMHhkOCwgMHg3OSwgMHhhYSwgMHhjZSwgMHg2OSwgMHhlZn0s IHsKKysgICAgICAgIDB4NGMsIDB4MTEsIDB4MTcsIDB4NTUsIDB4YmYsIDB4YzQsIDB4NGUsIDB4 ZmR9CisrICAgIH0sIHsKKysgICAgICAgIHsKKysgICAgICAgIDB4NWQsIDB4OWUsIDB4MDEsIDB4 ZDMsIDB4MjUsIDB4YzcsIDB4M2UsIDB4MzQsCisrICAgICAgICAgICAgICAgIDB4MDEsIDB4MTYs IDB4N2MsIDB4ODUsIDB4MjMsIDB4ZGYsIDB4ZTAsIDB4Njh9LCB7CisrICAgICAgICAweDljLCAw eDUwLCAweDA5LCAweDBmLCAweDVlLCAweDdkLCAweDY5LCAweDdlfSwgeworKyAgICAweGQyLCAw eDBiLCAweDE4LCAweGRmLCAweGQ5LCAweDBkLCAweDllLCAweGZmfSx9CisrfTsKKysKKytzdGF0 aWMgY29uc3Qgc3RydWN0IHsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciBrZXlbMjRdOworKyAg ICBjb25zdCB1bnNpZ25lZCBjaGFyIHBsYWludGV4dFs4XTsKKysgICAgY29uc3QgdW5zaWduZWQg Y2hhciBjaXBoZXJ0ZXh0WzhdOworK30gdGVzdHMzW10gPSB7CisrICAgIHsKKysgICAgICAgIHsK KysgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs CisrICAgICAgICAgICAgICAgIDB4RkUsIDB4REMsIDB4QkEsIDB4OTgsIDB4NzYsIDB4NTQsIDB4 MzIsIDB4MTAsCisrICAgICAgICAgICAgICAgIDB4MTIsIDB4MzQsIDB4NTYsIDB4NzgsIDB4OWEs IDB4YmMsIDB4ZGUsIDB4ZjB9LCB7CisrICAgICAgICAweDhmLCAweDhmLCAweGJmLCAweDliLCAw eDVkLCAweDQ4LCAweGI0LCAweDFjfSwgeworKyAgICAweDU5LCAweDhjLCAweGU1LCAweGQzLCAw eDZjLCAweGEyLCAweGVhLCAweDFifSx9LCB7CisrICAgICAgICB7CisrICAgICAgICAweERDLCAw eEJBLCAweDk4LCAweDc2LCAweDU0LCAweDMyLCAweDEwLCAweEZFLAorKyAgICAgICAgICAgICAg ICAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweEFCLCAweENELCAweEVGLAorKyAgICAg ICAgICAgICAgICAweEVELCAweDM5LCAweEQ5LCAweDUwLCAweEZBLCAweDc0LCAweEJDLCAweEM0 fSwgeworKyAgICAgICAgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhBQiwgMHhDRCwg MHhFRn0sIHsKKysweDExLCAweDI1LCAweGIwLCAweDM1LCAweGJlLCAweGEwLCAweDgyLCAweDg2 fSx9LH07CisrCisrc3RhdGljIGludCBjb3JydXB0X2RlczsKKysKKyt2b2lkIEZJUFNfY29ycnVw dF9kZXMoKQorK3sKKysgICAgY29ycnVwdF9kZXMgPSAxOworK30KKysKKytpbnQgRklQU19zZWxm dGVzdF9kZXMoKQorK3sKKysgICAgaW50IG4sIHJldCA9IDA7CisrICAgIEVWUF9DSVBIRVJfQ1RY IGN0eDsKKysgICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKKysgICAgLyogRW5jcnlwdC9k ZWNyeXB0IHdpdGggMi1rZXkgM0RFUyBhbmQgY29tcGFyZSB0byBrbm93biBhbnN3ZXJzICovCisr ICAgIGZvciAobiA9IDA7IG4gPCAyOyArK24pIHsKKysgICAgICAgIHVuc2lnbmVkIGNoYXIgcGxh aW50ZXh0WzhdOworKworKyAgICAgICAgbWVtY3B5KHBsYWludGV4dCwgdGVzdHMyW25dLnBsYWlu dGV4dCwgc2l6ZW9mKHBsYWludGV4dCkpOworKyAgICAgICAgaWYgKGNvcnJ1cHRfZGVzKQorKyAg ICAgICAgICAgIHBsYWludGV4dFswXSsrOworKyAgICAgICAgaWYgKCFmaXBzX2NpcGhlcl90ZXN0 KCZjdHgsIEVWUF9kZXNfZWRlX2VjYigpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRlc3RzMltuXS5rZXksIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxh aW50ZXh0LCB0ZXN0czJbbl0uY2lwaGVydGV4dCwgOCkpCisrICAgICAgICAgICAgZ290byBlcnI7 CisrICAgIH0KKysKKysgICAgLyogRW5jcnlwdC9kZWNyeXB0IHdpdGggM0RFUyBhbmQgY29tcGFy ZSB0byBrbm93biBhbnN3ZXJzICovCisrICAgIGZvciAobiA9IDA7IG4gPCAyOyArK24pIHsKKysg ICAgICAgIGlmICghZmlwc19jaXBoZXJfdGVzdCgmY3R4LCBFVlBfZGVzX2VkZTNfZWNiKCksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMzW25dLmtleSwgTlVMTCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0czNbbl0ucGxhaW50ZXh0LCB0ZXN0czNbbl0u Y2lwaGVydGV4dCwgOCkpCisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysgICAgcmV0 ID0gMTsKKysgZXJyOgorKyAgICBFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjdHgpOworKyAgICBp ZiAocmV0ID09IDApCisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX1NFTEZURVNUX0RFUywg RklQU19SX1NFTEZURVNUX0ZBSUxFRCk7CisrCisrICAgIHJldHVybiByZXQ7CisrfQorKyNlbmRp ZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2N0ci5jLmZp cHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2N0ci5jCistLS0gb3BlbnNz bC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2N0ci5jLmZpcHMJMjAxNS0wNi0xNSAxNzoz MDowMC4wMDYyODM5MzYgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBz X2RyYmdfY3RyLmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMDYyODM5MzYgKzAyMDAKK0BAIC0wLDAg KzEsNDE1IEBACisrLyogZmlwcy9yYW5kL2ZpcHNfZHJiZ19jdHIuYyAqLworKy8qIFdyaXR0ZW4g YnkgRHIgU3RlcGhlbiBOIEhlbnNvbiAoc3RldmVAb3BlbnNzbC5vcmcpIGZvciB0aGUgT3BlblNT TAorKyAqIHByb2plY3QuCisrICovCisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMp IDIwMTEgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysg KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVk aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysg KiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp dGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5n IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAgc29m dHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAg IlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wg UHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93 d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0 IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9y c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0 CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9u LCBwbGVhc2UgY29udGFjdAorKyAqICAgIGxpY2Vuc2luZ0BPcGVuU1NMLm9yZy4KKysgKgorKyAq IDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVk ICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1l cyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NM IFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNv ZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6Cisr ICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9w ZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0 cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF RCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVTU0VE IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI RQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO VCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBCRSBM SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorKyAq IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ Q0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF UlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBX QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICog T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICov CisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVk ZSA8b3BlbnNzbC9jcnlwdG8uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2luY2x1 ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+CisrI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKKysK KytzdGF0aWMgdm9pZCBpbmNfMTI4KERSQkdfQ1RSX0NUWCAqIGNjdHgpCisreworKyAgICBpbnQg aTsKKysgICAgdW5zaWduZWQgY2hhciBjOworKyAgICB1bnNpZ25lZCBjaGFyICpwID0gY2N0eC0+ ViArIDE1OworKyAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgeworKyAgICAgICAgYyA9ICpw OworKyAgICAgICAgYysrOworKyAgICAgICAgKnAgPSBjOworKyAgICAgICAgaWYgKGMpCisrICAg ICAgICAgICAgcmV0dXJuOworKyAgICAgICAgcC0tOworKyAgICB9CisrfQorKworK3N0YXRpYyB2 b2lkIGN0cl9YT1IoRFJCR19DVFJfQ1RYICogY2N0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqaW4s CisrICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5sZW4pCisreworKyAgICBzaXplX3QgaSwg bjsKKysgICAgLyogQW55IHplcm8gcGFkZGluZyB3aWxsIGhhdmUgbm8gZWZmZWN0IG9uIHRoZSBy ZXN1bHQgYXMgd2UKKysgICAgICogYXJlIFhPUmluZy4gU28ganVzdCBwcm9jZXNzIGhvd2V2ZXIg bXVjaCBpbnB1dCB3ZSBoYXZlLgorKyAgICAgKi8KKysKKysgICAgaWYgKCFpbiB8fCAhaW5sZW4p CisrICAgICAgICByZXR1cm47CisrCisrICAgIGlmIChpbmxlbiA8IGNjdHgtPmtleWxlbikKKysg ICAgICAgIG4gPSBpbmxlbjsKKysgICAgZWxzZQorKyAgICAgICAgbiA9IGNjdHgtPmtleWxlbjsK KysKKysgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKysgICAgICAgIGNjdHgtPktbaV0gXj0g aW5baV07CisrICAgIGlmIChpbmxlbiA8PSBjY3R4LT5rZXlsZW4pCisrICAgICAgICByZXR1cm47 CisrCisrICAgIG4gPSBpbmxlbiAtIGNjdHgtPmtleWxlbjsKKysgICAgLyogU2hvdWxkIG5ldmVy IGhhcHBlbiAqLworKyAgICBpZiAobiA+IDE2KQorKyAgICAgICAgbiA9IDE2OworKyAgICBmb3Ig KGkgPSAwOyBpIDwgMTY7IGkrKykKKysgICAgICAgIGNjdHgtPlZbaV0gXj0gaW5baSArIGNjdHgt PmtleWxlbl07CisrfQorKworKy8qIFByb2Nlc3MgYSBjb21wbGV0ZSBibG9jayB1c2luZyBCQ0Mg YWxnb3JpdGhtIG9mIFNQUCA4MDAtOTAgMTAuNC4zICovCisrCisrc3RhdGljIHZvaWQgY3RyX0JD Q19ibG9jayhEUkJHX0NUUl9DVFggKiBjY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbikKKyt7CisrICAgIGlu dCBpOworKyAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKysgICAgICAgIG91dFtpXSBePSBp bltpXTsKKysgICAgQUVTX2VuY3J5cHQob3V0LCBvdXQsICZjY3R4LT5kZl9rcyk7CisrI2lmIDAK KysgICAgZnByaW50ZihzdGRlcnIsICJCQ0MgaW4rb3V0XG4iKTsKKysgICAgQklPX2R1bXBfZnAo c3RkZXJyLCBpbiwgMTYpOworKyAgICBCSU9fZHVtcF9mcChzdGRlcnIsIG91dCwgMTYpOworKyNl bmRpZgorK30KKysKKysvKiBIYW5kbGUgc2V2ZXJhbCBCQ0Mgb3BlcmF0aW9ucyBmb3IgYXMgbXVj aCBkYXRhIGFzIHdlIG5lZWQgZm9yIEsgYW5kIFggKi8KKytzdGF0aWMgdm9pZCBjdHJfQkNDX2Js b2NrcyhEUkJHX0NUUl9DVFggKiBjY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbikKKyt7Cisr ICAgIGN0cl9CQ0NfYmxvY2soY2N0eCwgY2N0eC0+S1gsIGluKTsKKysgICAgY3RyX0JDQ19ibG9j ayhjY3R4LCBjY3R4LT5LWCArIDE2LCBpbik7CisrICAgIGlmIChjY3R4LT5rZXlsZW4gIT0gMTYp CisrICAgICAgICBjdHJfQkNDX2Jsb2NrKGNjdHgsIGNjdHgtPktYICsgMzIsIGluKTsKKyt9Cisr CisrLyogSW5pdGlhbGlzZSBCQ0MgYmxvY2tzOiB0aGVzZSBoYXZlIHRoZSB2YWx1ZSAwLDEsMiBp biBsZWZ0bW9zdCBwb3NpdGlvbnM6CisrICogc2VlIDEwLjQuMiBzdGFnZSA3LgorKyAqLworK3N0 YXRpYyB2b2lkIGN0cl9CQ0NfaW5pdChEUkJHX0NUUl9DVFggKiBjY3R4KQorK3sKKysgICAgbWVt c2V0KGNjdHgtPktYLCAwLCA0OCk7CisrICAgIG1lbXNldChjY3R4LT5ibHRtcCwgMCwgMTYpOwor KyAgICBjdHJfQkNDX2Jsb2NrKGNjdHgsIGNjdHgtPktYLCBjY3R4LT5ibHRtcCk7CisrICAgIGNj dHgtPmJsdG1wWzNdID0gMTsKKysgICAgY3RyX0JDQ19ibG9jayhjY3R4LCBjY3R4LT5LWCArIDE2 LCBjY3R4LT5ibHRtcCk7CisrICAgIGlmIChjY3R4LT5rZXlsZW4gIT0gMTYpIHsKKysgICAgICAg IGNjdHgtPmJsdG1wWzNdID0gMjsKKysgICAgICAgIGN0cl9CQ0NfYmxvY2soY2N0eCwgY2N0eC0+ S1ggKyAzMiwgY2N0eC0+Ymx0bXApOworKyAgICB9CisrfQorKworKy8qIFByb2Nlc3Mgc2V2ZXJh bCBibG9ja3MgaW50byBCQ0MgYWxnb3JpdGhtLCBzb21lIHBvc3NpYmx5IHBhcnRpYWwgKi8KKytz dGF0aWMgdm9pZCBjdHJfQkNDX3VwZGF0ZShEUkJHX0NUUl9DVFggKiBjY3R4LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sZW4p CisreworKyAgICBpZiAoIWluIHx8ICFpbmxlbikKKysgICAgICAgIHJldHVybjsKKysgICAgLyog SWYgd2UgaGF2ZSBwYXJ0aWFsIGJsb2NrIGhhbmRsZSBpdCBmaXJzdCAqLworKyAgICBpZiAoY2N0 eC0+Ymx0bXBfcG9zKSB7CisrICAgICAgICBzaXplX3QgbGVmdCA9IDE2IC0gY2N0eC0+Ymx0bXBf cG9zOworKyAgICAgICAgLyogSWYgd2Ugbm93IGhhdmUgYSBjb21wbGV0ZSBibG9jayBwcm9jZXNz IGl0ICovCisrICAgICAgICBpZiAoaW5sZW4gPj0gbGVmdCkgeworKyAgICAgICAgICAgIG1lbWNw eShjY3R4LT5ibHRtcCArIGNjdHgtPmJsdG1wX3BvcywgaW4sIGxlZnQpOworKyAgICAgICAgICAg IGN0cl9CQ0NfYmxvY2tzKGNjdHgsIGNjdHgtPmJsdG1wKTsKKysgICAgICAgICAgICBjY3R4LT5i bHRtcF9wb3MgPSAwOworKyAgICAgICAgICAgIGlubGVuIC09IGxlZnQ7CisrICAgICAgICAgICAg aW4gKz0gbGVmdDsKKysgICAgICAgIH0KKysgICAgfQorKyAgICAvKiBQcm9jZXNzIHplcm8gb3Ig bW9yZSBjb21wbGV0ZSBibG9ja3MgKi8KKysgICAgd2hpbGUgKGlubGVuID49IDE2KSB7CisrICAg ICAgICBjdHJfQkNDX2Jsb2NrcyhjY3R4LCBpbik7CisrICAgICAgICBpbiArPSAxNjsKKysgICAg ICAgIGlubGVuIC09IDE2OworKyAgICB9CisrICAgIC8qIENvcHkgYW55IHJlbWFpbmluZyBwYXJ0 aWFsIGJsb2NrIHRvIHRoZSB0ZW1wb3JhcnkgYnVmZmVyICovCisrICAgIGlmIChpbmxlbiA+IDAp IHsKKysgICAgICAgIG1lbWNweShjY3R4LT5ibHRtcCArIGNjdHgtPmJsdG1wX3BvcywgaW4sIGlu bGVuKTsKKysgICAgICAgIGNjdHgtPmJsdG1wX3BvcyArPSBpbmxlbjsKKysgICAgfQorK30KKysK KytzdGF0aWMgdm9pZCBjdHJfQkNDX2ZpbmFsKERSQkdfQ1RSX0NUWCAqIGNjdHgpCisreworKyAg ICBpZiAoY2N0eC0+Ymx0bXBfcG9zKSB7CisrICAgICAgICBtZW1zZXQoY2N0eC0+Ymx0bXAgKyBj Y3R4LT5ibHRtcF9wb3MsIDAsIDE2IC0gY2N0eC0+Ymx0bXBfcG9zKTsKKysgICAgICAgIGN0cl9C Q0NfYmxvY2tzKGNjdHgsIGNjdHgtPmJsdG1wKTsKKysgICAgfQorK30KKysKKytzdGF0aWMgdm9p ZCBjdHJfZGYoRFJCR19DVFJfQ1RYICogY2N0eCwKKysgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqaW4xLCBzaXplX3QgaW4xbGVuLAorKyAgICAgICAgICAgICAgICAgICBj b25zdCB1bnNpZ25lZCBjaGFyICppbjIsIHNpemVfdCBpbjJsZW4sCisrICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMywgc2l6ZV90IGluM2xlbikKKyt7CisrICAgIHNp emVfdCBpbmxlbjsKKysgICAgdW5zaWduZWQgY2hhciAqcCA9IGNjdHgtPmJsdG1wOworKyAgICBz dGF0aWMgdW5zaWduZWQgY2hhciBjODAgPSAweDgwOworKworKyAgICBjdHJfQkNDX2luaXQoY2N0 eCk7CisrICAgIGlmICghaW4xKQorKyAgICAgICAgaW4xbGVuID0gMDsKKysgICAgaWYgKCFpbjIp CisrICAgICAgICBpbjJsZW4gPSAwOworKyAgICBpZiAoIWluMykKKysgICAgICAgIGluM2xlbiA9 IDA7CisrICAgIGlubGVuID0gaW4xbGVuICsgaW4ybGVuICsgaW4zbGVuOworKyAgICAvKiBJbml0 aWFsaXNlIEx8fE4gaW4gdGVtcG9yYXJ5IGJsb2NrICovCisrICAgICpwKysgPSAoaW5sZW4gPj4g MjQpICYgMHhmZjsKKysgICAgKnArKyA9IChpbmxlbiA+PiAxNikgJiAweGZmOworKyAgICAqcCsr ID0gKGlubGVuID4+IDgpICYgMHhmZjsKKysgICAgKnArKyA9IGlubGVuICYgMHhmZjsKKysgICAg LyogTkIga2V5bGVuIGlzIGF0IG1vc3QgMzIgYnl0ZXMgKi8KKysgICAgKnArKyA9IDA7CisrICAg ICpwKysgPSAwOworKyAgICAqcCsrID0gMDsKKysgICAgKnAgPSAodW5zaWduZWQgY2hhcikoKGNj dHgtPmtleWxlbiArIDE2KSAmIDB4ZmYpOworKyAgICBjY3R4LT5ibHRtcF9wb3MgPSA4OworKyAg ICBjdHJfQkNDX3VwZGF0ZShjY3R4LCBpbjEsIGluMWxlbik7CisrICAgIGN0cl9CQ0NfdXBkYXRl KGNjdHgsIGluMiwgaW4ybGVuKTsKKysgICAgY3RyX0JDQ191cGRhdGUoY2N0eCwgaW4zLCBpbjNs ZW4pOworKyAgICBjdHJfQkNDX3VwZGF0ZShjY3R4LCAmYzgwLCAxKTsKKysgICAgY3RyX0JDQ19m aW5hbChjY3R4KTsKKysgICAgLyogU2V0IHVwIGtleSBLICovCisrICAgIEFFU19zZXRfZW5jcnlw dF9rZXkoY2N0eC0+S1gsIGNjdHgtPmtleWxlbiAqIDgsICZjY3R4LT5kZl9reGtzKTsKKysgICAg LyogWCBmb2xsb3dzIGtleSBLICovCisrICAgIEFFU19lbmNyeXB0KGNjdHgtPktYICsgY2N0eC0+ a2V5bGVuLCBjY3R4LT5LWCwgJmNjdHgtPmRmX2t4a3MpOworKyAgICBBRVNfZW5jcnlwdChjY3R4 LT5LWCwgY2N0eC0+S1ggKyAxNiwgJmNjdHgtPmRmX2t4a3MpOworKyAgICBpZiAoY2N0eC0+a2V5 bGVuICE9IDE2KQorKyAgICAgICAgQUVTX2VuY3J5cHQoY2N0eC0+S1ggKyAxNiwgY2N0eC0+S1gg KyAzMiwgJmNjdHgtPmRmX2t4a3MpOworKyNpZiAwCisrICAgIGZwcmludGYoc3RkZXJyLCAiT3V0 cHV0IG9mIGN0cl9kZjpcbiIpOworKyAgICBCSU9fZHVtcF9mcChzdGRlcnIsIGNjdHgtPktYLCBj Y3R4LT5rZXlsZW4gKyAxNik7CisrI2VuZGlmCisrfQorKworKy8qIE5CIHRoZSBuby1kZiAgVXBk YXRlIGluIFNQODAwLTkwIHNwZWNpZmllcyBhIGNvbnN0YW50IGlucHV0IGxlbmd0aAorKyAqIG9m IHNlZWRsZW4sIGhvd2V2ZXIgb3RoZXIgdXNlcyBvZiB0aGlzIGFsZ29yaXRobSBwYWQgdGhlIGlu cHV0IHdpdGgKKysgKiB6ZXJvZXMgaWYgbmVjZXNzYXJ5IGFuZCBoYXZlIHVwIHRvIHR3byBwYXJh bWV0ZXJzIFhPUmVkIHRvZ2V0aGVyLAorKyAqIGhhbmRsZSBib3RoIGNhc2VzIGluIHRoaXMgZnVu Y3Rpb24gaW5zdGVhZC4KKysgKi8KKysKKytzdGF0aWMgdm9pZCBjdHJfVXBkYXRlKERSQkdfQ1RY ICpkY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4x LCBzaXplX3QgaW4xbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg Y2hhciAqaW4yLCBzaXplX3QgaW4ybGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqbm9uY2UsIHNpemVfdCBub25jZWxlbikKKyt7CisrICAgIERSQkdfQ1RS X0NUWCAqY2N0eCA9ICZkY3R4LT5kLmN0cjsKKysgICAgLyoga3MgaXMgYWxyZWFkeSBzZXR1cCBm b3IgY29ycmVjdCBrZXkgKi8KKysgICAgaW5jXzEyOChjY3R4KTsKKysgICAgQUVTX2VuY3J5cHQo Y2N0eC0+ViwgY2N0eC0+SywgJmNjdHgtPmtzKTsKKysgICAgLyogSWYga2V5bGVuIGxvbmdlciB0 aGFuIDEyOCBiaXRzIG5lZWQgZXh0cmEgZW5jcnlwdCAqLworKyAgICBpZiAoY2N0eC0+a2V5bGVu ICE9IDE2KSB7CisrICAgICAgICBpbmNfMTI4KGNjdHgpOworKyAgICAgICAgQUVTX2VuY3J5cHQo Y2N0eC0+ViwgY2N0eC0+SyArIDE2LCAmY2N0eC0+a3MpOworKyAgICB9CisrICAgIGluY18xMjgo Y2N0eCk7CisrICAgIEFFU19lbmNyeXB0KGNjdHgtPlYsIGNjdHgtPlYsICZjY3R4LT5rcyk7Cisr ICAgIC8qIElmIDE5MiBiaXQga2V5IHBhcnQgb2YgViBpcyBvbiBlbmQgb2YgSyAqLworKyAgICBp ZiAoY2N0eC0+a2V5bGVuID09IDI0KSB7CisrICAgICAgICBtZW1jcHkoY2N0eC0+ViArIDgsIGNj dHgtPlYsIDgpOworKyAgICAgICAgbWVtY3B5KGNjdHgtPlYsIGNjdHgtPksgKyAyNCwgOCk7Cisr ICAgIH0KKysKKysgICAgaWYgKGRjdHgtPnhmbGFncyAmIERSQkdfRkxBR19DVFJfVVNFX0RGKSB7 CisrICAgICAgICAvKiBJZiBubyBpbnB1dCByZXVzZSBleGlzdGluZyBkZXJpdmVkIHZhbHVlICov CisrICAgICAgICBpZiAoaW4xIHx8IG5vbmNlIHx8IGluMikKKysgICAgICAgICAgICBjdHJfZGYo Y2N0eCwgaW4xLCBpbjFsZW4sIG5vbmNlLCBub25jZWxlbiwgaW4yLCBpbjJsZW4pOworKyAgICAg ICAgLyogSWYgdGhpcyBhIHJldXNlIGlucHV0IGluMWxlbiAhPSAwICovCisrICAgICAgICBpZiAo aW4xbGVuKQorKyAgICAgICAgICAgIGN0cl9YT1IoY2N0eCwgY2N0eC0+S1gsIGRjdHgtPnNlZWRs ZW4pOworKyAgICB9IGVsc2UgeworKyAgICAgICAgY3RyX1hPUihjY3R4LCBpbjEsIGluMWxlbik7 CisrICAgICAgICBjdHJfWE9SKGNjdHgsIGluMiwgaW4ybGVuKTsKKysgICAgfQorKworKyAgICBB RVNfc2V0X2VuY3J5cHRfa2V5KGNjdHgtPkssIGRjdHgtPnN0cmVuZ3RoLCAmY2N0eC0+a3MpOwor KyNpZiAwCisrICAgIGZwcmludGYoc3RkZXJyLCAiSytWIGFmdGVyIHVwZGF0ZSBpczpcbiIpOwor KyAgICBCSU9fZHVtcF9mcChzdGRlcnIsIGNjdHgtPkssIGNjdHgtPmtleWxlbik7CisrICAgIEJJ T19kdW1wX2ZwKHN0ZGVyciwgY2N0eC0+ViwgMTYpOworKyNlbmRpZgorK30KKysKKytzdGF0aWMg aW50IGRyYmdfY3RyX2luc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50LCBzaXplX3QgZW50bGVu LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAq bm9uY2UsIHNpemVfdCBub25jZWxlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBlcnMsIHNpemVfdCBwZXJzbGVuKQorK3sKKysgICAgRFJC R19DVFJfQ1RYICpjY3R4ID0gJmRjdHgtPmQuY3RyOworKyAgICBtZW1zZXQoY2N0eC0+SywgMCwg c2l6ZW9mKGNjdHgtPkspKTsKKysgICAgbWVtc2V0KGNjdHgtPlYsIDAsIHNpemVvZihjY3R4LT5W KSk7CisrICAgIEFFU19zZXRfZW5jcnlwdF9rZXkoY2N0eC0+SywgZGN0eC0+c3RyZW5ndGgsICZj Y3R4LT5rcyk7CisrICAgIGN0cl9VcGRhdGUoZGN0eCwgZW50LCBlbnRsZW4sIHBlcnMsIHBlcnNs ZW4sIG5vbmNlLCBub25jZWxlbik7CisrICAgIHJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50 IGRyYmdfY3RyX3Jlc2VlZChEUkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnQsIHNpemVfdCBlbnRsZW4sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5s ZW4pCisreworKyAgICBjdHJfVXBkYXRlKGRjdHgsIGVudCwgZW50bGVuLCBhZGluLCBhZGlubGVu LCBOVUxMLCAwKTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQgZHJiZ19jdHJf Z2VuZXJhdGUoRFJCR19DVFggKmRjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4sCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluLCBzaXplX3QgYWRpbmxlbikKKyt7Cisr ICAgIERSQkdfQ1RSX0NUWCAqY2N0eCA9ICZkY3R4LT5kLmN0cjsKKysgICAgaWYgKGFkaW4gJiYg YWRpbmxlbikgeworKyAgICAgICAgY3RyX1VwZGF0ZShkY3R4LCBhZGluLCBhZGlubGVuLCBOVUxM LCAwLCBOVUxMLCAwKTsKKysgICAgICAgIC8qIFRoaXMgbWVhbnMgd2UgcmV1c2UgZGVyaXZlZCB2 YWx1ZSAqLworKyAgICAgICAgaWYgKGRjdHgtPnhmbGFncyAmIERSQkdfRkxBR19DVFJfVVNFX0RG KSB7CisrICAgICAgICAgICAgYWRpbiA9IE5VTEw7CisrICAgICAgICAgICAgYWRpbmxlbiA9IDE7 CisrICAgICAgICB9CisrICAgIH0gZWxzZQorKyAgICAgICAgYWRpbmxlbiA9IDA7CisrCisrICAg IGZvciAoOzspIHsKKysgICAgICAgIGluY18xMjgoY2N0eCk7CisrICAgICAgICBpZiAoIShkY3R4 LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCkgJiYgIWRjdHgtPmxiX3ZhbGlkKSB7CisrICAgICAg ICAgICAgQUVTX2VuY3J5cHQoY2N0eC0+ViwgZGN0eC0+bGIsICZjY3R4LT5rcyk7CisrICAgICAg ICAgICAgZGN0eC0+bGJfdmFsaWQgPSAxOworKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAg ICAgfQorKyAgICAgICAgaWYgKG91dGxlbiA8IDE2KSB7CisrICAgICAgICAgICAgLyogVXNlIEsg YXMgdGVtcCBzcGFjZSBhcyBpdCB3aWxsIGJlIHVwZGF0ZWQgKi8KKysgICAgICAgICAgICBBRVNf ZW5jcnlwdChjY3R4LT5WLCBjY3R4LT5LLCAmY2N0eC0+a3MpOworKyAgICAgICAgICAgIGlmICgh Zmlwc19kcmJnX2Nwcm5nX3Rlc3QoZGN0eCwgY2N0eC0+SykpCisrICAgICAgICAgICAgICAgIHJl dHVybiAwOworKyAgICAgICAgICAgIG1lbWNweShvdXQsIGNjdHgtPkssIG91dGxlbik7CisrICAg ICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgICAgICBBRVNfZW5jcnlwdChjY3R4LT5W LCBvdXQsICZjY3R4LT5rcyk7CisrICAgICAgICBpZiAoIWZpcHNfZHJiZ19jcHJuZ190ZXN0KGRj dHgsIG91dCkpCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICBvdXQgKz0gMTY7Cisr ICAgICAgICBvdXRsZW4gLT0gMTY7CisrICAgICAgICBpZiAob3V0bGVuID09IDApCisrICAgICAg ICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgICAgY3RyX1VwZGF0ZShkY3R4LCBhZGluLCBhZGlu bGVuLCBOVUxMLCAwLCBOVUxMLCAwKTsKKysKKysgICAgcmV0dXJuIDE7CisrCisrfQorKworK3N0 YXRpYyBpbnQgZHJiZ19jdHJfdW5pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCkKKyt7CisrICAg IG1lbXNldCgmZGN0eC0+ZC5jdHIsIDAsIHNpemVvZihEUkJHX0NUUl9DVFgpKTsKKysgICAgcmV0 dXJuIDE7CisrfQorKworK2ludCBmaXBzX2RyYmdfY3RyX2luaXQoRFJCR19DVFggKmRjdHgpCisr eworKyAgICBEUkJHX0NUUl9DVFggKmNjdHggPSAmZGN0eC0+ZC5jdHI7CisrCisrICAgIHNpemVf dCBrZXlsZW47CisrCisrICAgIHN3aXRjaCAoZGN0eC0+dHlwZSkgeworKyAgICBjYXNlIE5JRF9h ZXNfMTI4X2N0cjoKKysgICAgICAgIGtleWxlbiA9IDE2OworKyAgICAgICAgYnJlYWs7CisrCisr ICAgIGNhc2UgTklEX2Flc18xOTJfY3RyOgorKyAgICAgICAga2V5bGVuID0gMjQ7CisrICAgICAg ICBicmVhazsKKysKKysgICAgY2FzZSBOSURfYWVzXzI1Nl9jdHI6CisrICAgICAgICBrZXlsZW4g PSAzMjsKKysgICAgICAgIGJyZWFrOworKworKyAgICBkZWZhdWx0OgorKyAgICAgICAgcmV0dXJu IC0yOworKyAgICB9CisrCisrICAgIGRjdHgtPmluc3RhbnRpYXRlID0gZHJiZ19jdHJfaW5zdGFu dGlhdGU7CisrICAgIGRjdHgtPnJlc2VlZCA9IGRyYmdfY3RyX3Jlc2VlZDsKKysgICAgZGN0eC0+ Z2VuZXJhdGUgPSBkcmJnX2N0cl9nZW5lcmF0ZTsKKysgICAgZGN0eC0+dW5pbnN0YW50aWF0ZSA9 IGRyYmdfY3RyX3VuaW5zdGFudGlhdGU7CisrCisrICAgIGNjdHgtPmtleWxlbiA9IGtleWxlbjsK KysgICAgZGN0eC0+c3RyZW5ndGggPSBrZXlsZW4gKiA4OworKyAgICBkY3R4LT5ibG9ja2xlbmd0 aCA9IDE2OworKyAgICBkY3R4LT5zZWVkbGVuID0ga2V5bGVuICsgMTY7CisrCisrICAgIGlmIChk Y3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfQ1RSX1VTRV9ERikgeworKyAgICAgICAgLyogZGYgaW5p dGlhbGlzYXRpb24gKi8KKysgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGRmX2tleVszMl0g PSB7CisrICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgw NiwgMHgwNywKKysgICAgICAgICAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBk LCAweDBlLCAweDBmLAorKyAgICAgICAgICAgIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQs IDB4MTUsIDB4MTYsIDB4MTcsCisrICAgICAgICAgICAgMHgxOCwgMHgxOSwgMHgxYSwgMHgxYiwg MHgxYywgMHgxZCwgMHgxZSwgMHgxZgorKyAgICAgICAgfTsKKysgICAgICAgIC8qIFNldCBrZXkg c2NoZWR1bGUgZm9yIGRmX2tleSAqLworKyAgICAgICAgQUVTX3NldF9lbmNyeXB0X2tleShkZl9r ZXksIGRjdHgtPnN0cmVuZ3RoLCAmY2N0eC0+ZGZfa3MpOworKworKyAgICAgICAgZGN0eC0+bWlu X2VudHJvcHkgPSBjY3R4LT5rZXlsZW47CisrICAgICAgICBkY3R4LT5tYXhfZW50cm9weSA9IERS QkdfTUFYX0xFTkdUSDsKKysgICAgICAgIGRjdHgtPm1pbl9ub25jZSA9IGRjdHgtPm1pbl9lbnRy b3B5IC8gMjsKKysgICAgICAgIGRjdHgtPm1heF9ub25jZSA9IERSQkdfTUFYX0xFTkdUSDsKKysg ICAgICAgIGRjdHgtPm1heF9wZXJzID0gRFJCR19NQVhfTEVOR1RIOworKyAgICAgICAgZGN0eC0+ bWF4X2FkaW4gPSBEUkJHX01BWF9MRU5HVEg7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBkY3R4 LT5taW5fZW50cm9weSA9IGRjdHgtPnNlZWRsZW47CisrICAgICAgICBkY3R4LT5tYXhfZW50cm9w eSA9IGRjdHgtPnNlZWRsZW47CisrICAgICAgICAvKiBOb25jZSBub3QgdXNlZCAqLworKyAgICAg ICAgZGN0eC0+bWluX25vbmNlID0gMDsKKysgICAgICAgIGRjdHgtPm1heF9ub25jZSA9IDA7Cisr ICAgICAgICBkY3R4LT5tYXhfcGVycyA9IGRjdHgtPnNlZWRsZW47CisrICAgICAgICBkY3R4LT5t YXhfYWRpbiA9IGRjdHgtPnNlZWRsZW47CisrICAgIH0KKysKKysgICAgZGN0eC0+bWF4X3JlcXVl c3QgPSAxIDw8IDE2OworKyAgICBkY3R4LT5yZXNlZWRfaW50ZXJ2YWwgPSAxIDw8IDI0OworKwor KyAgICByZXR1cm4gMTsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9m aXBzX2RyYmdfaGFzaC5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kcmJn X2hhc2guYworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19oYXNoLmMu ZmlwcwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAwNjI4MzkzNiArMDIwMAorKysrIG9wZW5zc2wtMS4w LjJjL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19oYXNoLmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMDYy ODM5MzYgKzAyMDAKK0BAIC0wLDAgKzEsMzU4IEBACisrLyogZmlwcy9yYW5kL2ZpcHNfZHJiZ19o YXNoLmMgKi8KKysvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5z c2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKKysgKiBwcm9qZWN0LgorKyAqLworKy8qID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisrICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmln aHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUg cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJl IG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlz dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp Z2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgor KyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1 c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFj a25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2 ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVu U1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiA0LiBUaGUg bmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJl IHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t IHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4g Rm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBsaWNlbnNpbmdA T3BlblNTTC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0 d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NM IiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVy bWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRp b25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAq ICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdh cmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRo ZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIFRI SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycg QU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBE SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAq IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D SURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF UyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJ Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up CisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs IEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K KysgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorKyAqLworKworKyNkZWZpbmUgT1BFTlNTTF9GSVBTQVBJCisrCisr I2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8b3Bl bnNzbC9jcnlwdG8uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2luY2x1ZGUgPG9w ZW5zc2wvZmlwc19yYW5kLmg+CisrI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKKysKKysvKiBU aGlzIGlzIEhhc2hfZGYgZnJvbSBTUCA4MDAtOTAgMTAuNC4xICovCisrCisrc3RhdGljIGludCBo YXNoX2RmKERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsCisrICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluMSwgc2l6ZV90IGluMWxlbiwKKysgICAgICAg ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4yLCBzaXplX3QgaW4ybGVuLAorKyAg ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbjMsIHNpemVfdCBpbjNsZW4s CisrICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluNCwgc2l6ZV90IGlu NGxlbikKKyt7CisrICAgIEVWUF9NRF9DVFggKm1jdHggPSAmZGN0eC0+ZC5oYXNoLm1jdHg7Cisr ICAgIHVuc2lnbmVkIGNoYXIgKnZ0bXAgPSBkY3R4LT5kLmhhc2gudnRtcDsKKysgICAgdW5zaWdu ZWQgY2hhciB0bXBbNl07CisrICAgIC8qIFN0YW5kYXJkIG9ubHkgZXZlciBuZWVkcyBzZWVkbGVu IGJ5dGVzIHdoaWNoIGlzIGFsd2F5cyBsZXNzIHRoYW4KKysgICAgICogbWF4aW11bSBwZXJtaXR0 ZWQgc28gbm8gbmVlZCB0byBjaGVjayBsZW5ndGguCisrICAgICAqLworKyAgICBzaXplX3Qgb3V0 bGVuID0gZGN0eC0+c2VlZGxlbjsKKysgICAgdG1wWzBdID0gMTsKKysgICAgdG1wWzFdID0gKChv dXRsZW4gKiA4KSA+PiAyNCkgJiAweGZmOworKyAgICB0bXBbMl0gPSAoKG91dGxlbiAqIDgpID4+ IDE2KSAmIDB4ZmY7CisrICAgIHRtcFszXSA9ICgob3V0bGVuICogOCkgPj4gOCkgJiAweGZmOwor KyAgICB0bXBbNF0gPSAob3V0bGVuICogOCkgJiAweGZmOworKyAgICBpZiAoIWluMSkgeworKyAg ICAgICAgdG1wWzVdID0gKHVuc2lnbmVkIGNoYXIpaW4xbGVuOworKyAgICAgICAgaW4xID0gdG1w ICsgNTsKKysgICAgICAgIGluMWxlbiA9IDE7CisrICAgIH0KKysgICAgZm9yICg7OykgeworKyAg ICAgICAgaWYgKCFGSVBTX2RpZ2VzdGluaXQobWN0eCwgZGN0eC0+ZC5oYXNoLm1kKSkKKysgICAg ICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmICghRklQU19kaWdlc3R1cGRhdGUobWN0eCwg dG1wLCA1KSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmIChpbjEgJiYgIUZJ UFNfZGlnZXN0dXBkYXRlKG1jdHgsIGluMSwgaW4xbGVuKSkKKysgICAgICAgICAgICByZXR1cm4g MDsKKysgICAgICAgIGlmIChpbjIgJiYgIUZJUFNfZGlnZXN0dXBkYXRlKG1jdHgsIGluMiwgaW4y bGVuKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmIChpbjMgJiYgIUZJUFNf ZGlnZXN0dXBkYXRlKG1jdHgsIGluMywgaW4zbGVuKSkKKysgICAgICAgICAgICByZXR1cm4gMDsK KysgICAgICAgIGlmIChpbjQgJiYgIUZJUFNfZGlnZXN0dXBkYXRlKG1jdHgsIGluNCwgaW40bGVu KSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmIChvdXRsZW4gPCBkY3R4LT5i bG9ja2xlbmd0aCkgeworKyAgICAgICAgICAgIGlmICghRklQU19kaWdlc3RmaW5hbChtY3R4LCB2 dG1wLCBOVUxMKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgbWVt Y3B5KG91dCwgdnRtcCwgb3V0bGVuKTsKKysgICAgICAgICAgICBPUEVOU1NMX2NsZWFuc2UodnRt cCwgZGN0eC0+YmxvY2tsZW5ndGgpOworKyAgICAgICAgICAgIHJldHVybiAxOworKyAgICAgICAg fSBlbHNlIGlmICghRklQU19kaWdlc3RmaW5hbChtY3R4LCBvdXQsIE5VTEwpKQorKyAgICAgICAg ICAgIHJldHVybiAwOworKworKyAgICAgICAgb3V0bGVuIC09IGRjdHgtPmJsb2NrbGVuZ3RoOwor KyAgICAgICAgaWYgKG91dGxlbiA9PSAwKQorKyAgICAgICAgICAgIHJldHVybiAxOworKyAgICAg ICAgdG1wWzBdKys7CisrICAgICAgICBvdXQgKz0gZGN0eC0+YmxvY2tsZW5ndGg7CisrICAgIH0K Kyt9CisrCisrLyogQWRkIGFuIHVuc2lnbmVkIGJ1ZmZlciB0byB0aGUgYnVmIHZhbHVlLCBzdG9y aW5nIHRoZSByZXN1bHQgaW4gYnVmLiBGb3IKKysgKiB0aGlzIGFsZ29yaXRobSB0aGUgbGVuZ3Ro IG9mIGlucHV0IG5ldmVyIGV4Y2VlZHMgdGhlIHNlZWQgbGVuZ3RoLgorKyAqLworKworK3N0YXRp YyB2b2lkIGN0eF9hZGRfYnVmKERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICpidWYsCisr ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmxlbikK Kyt7CisrICAgIHNpemVfdCBpID0gaW5sZW47CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnE7 CisrICAgIHVuc2lnbmVkIGNoYXIgYywgKnA7CisrICAgIHAgPSBidWYgKyBkY3R4LT5zZWVkbGVu OworKyAgICBxID0gaW4gKyBpbmxlbjsKKysKKysgICAgT1BFTlNTTF9hc3NlcnQoaSA8PSBkY3R4 LT5zZWVkbGVuKTsKKysKKysgICAgLyogU3BlY2lhbCBjYXNlOiB6ZXJvIGxlbmd0aCwganVzdCBp bmNyZW1lbnQgYnVmZmVyICovCisrICAgIGlmIChpKQorKyAgICAgICAgYyA9IDA7CisrICAgIGVs c2UKKysgICAgICAgIGMgPSAxOworKworKyAgICB3aGlsZSAoaSkgeworKyAgICAgICAgaW50IHI7 CisrICAgICAgICBwLS07CisrICAgICAgICBxLS07CisrICAgICAgICByID0gKnAgKyAqcSArIGM7 CisrICAgICAgICAvKiBDYXJyeSAqLworKyAgICAgICAgaWYgKHIgPiAweGZmKQorKyAgICAgICAg ICAgIGMgPSAxOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGMgPSAwOworKyAgICAgICAg KnAgPSByICYgMHhmZjsKKysgICAgICAgIGktLTsKKysgICAgfQorKworKyAgICBpID0gZGN0eC0+ c2VlZGxlbiAtIGlubGVuOworKworKyAgICAvKiBJZiBub3QgYWRkaW5nIHdob2xlIGJ1ZmZlciBo YW5kbGUgZmluYWwgY2FycmllcyAqLworKyAgICBpZiAoYyAmJiBpKSB7CisrICAgICAgICBkbyB7 CisrICAgICAgICAgICAgcC0tOworKyAgICAgICAgICAgIGMgPSAqcDsKKysgICAgICAgICAgICBj Kys7CisrICAgICAgICAgICAgKnAgPSBjOworKyAgICAgICAgICAgIGlmIChjKQorKyAgICAgICAg ICAgICAgICByZXR1cm47CisrICAgICAgICB9IHdoaWxlIChpLS0pOworKyAgICB9CisrfQorKwor Ky8qIEZpbmFsaXNlIGFuZCBhZGQgaGFzaCB0byBWICovCisrCisrc3RhdGljIGludCBjdHhfYWRk X21kKERSQkdfQ1RYICpkY3R4KQorK3sKKysgICAgaWYgKCFGSVBTX2RpZ2VzdGZpbmFsKCZkY3R4 LT5kLmhhc2gubWN0eCwgZGN0eC0+ZC5oYXNoLnZ0bXAsIE5VTEwpKQorKyAgICAgICAgcmV0dXJu IDA7CisrICAgIGN0eF9hZGRfYnVmKGRjdHgsIGRjdHgtPmQuaGFzaC5WLCBkY3R4LT5kLmhhc2gu dnRtcCwgZGN0eC0+YmxvY2tsZW5ndGgpOworKyAgICByZXR1cm4gMTsKKyt9CisrCisrc3RhdGlj IGludCBoYXNoX2dlbihEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qg b3V0bGVuKQorK3sKKysgICAgRFJCR19IQVNIX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhhc2g7Cisr ICAgIGlmIChvdXRsZW4gPT0gMCkKKysgICAgICAgIHJldHVybiAxOworKyAgICBtZW1jcHkoaGN0 eC0+dnRtcCwgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbik7CisrICAgIGZvciAoOzspIHsKKysgICAg ICAgIEZJUFNfZGlnZXN0aW5pdCgmaGN0eC0+bWN0eCwgaGN0eC0+bWQpOworKyAgICAgICAgRklQ U19kaWdlc3R1cGRhdGUoJmhjdHgtPm1jdHgsIGhjdHgtPnZ0bXAsIGRjdHgtPnNlZWRsZW4pOwor KyAgICAgICAgaWYgKCEoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1QpICYmICFkY3R4LT5s Yl92YWxpZCkgeworKyAgICAgICAgICAgIEZJUFNfZGlnZXN0ZmluYWwoJmhjdHgtPm1jdHgsIGRj dHgtPmxiLCBOVUxMKTsKKysgICAgICAgICAgICBkY3R4LT5sYl92YWxpZCA9IDE7CisrICAgICAg ICB9IGVsc2UgaWYgKG91dGxlbiA8IGRjdHgtPmJsb2NrbGVuZ3RoKSB7CisrICAgICAgICAgICAg RklQU19kaWdlc3RmaW5hbCgmaGN0eC0+bWN0eCwgaGN0eC0+dnRtcCwgTlVMTCk7CisrICAgICAg ICAgICAgaWYgKCFmaXBzX2RyYmdfY3BybmdfdGVzdChkY3R4LCBoY3R4LT52dG1wKSkKKysgICAg ICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgbWVtY3B5KG91dCwgaGN0eC0+dnRt cCwgb3V0bGVuKTsKKysgICAgICAgICAgICByZXR1cm4gMTsKKysgICAgICAgIH0gZWxzZSB7Cisr ICAgICAgICAgICAgRklQU19kaWdlc3RmaW5hbCgmaGN0eC0+bWN0eCwgb3V0LCBOVUxMKTsKKysg ICAgICAgICAgICBpZiAoIWZpcHNfZHJiZ19jcHJuZ190ZXN0KGRjdHgsIG91dCkpCisrICAgICAg ICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAgIG91dGxlbiAtPSBkY3R4LT5ibG9ja2xl bmd0aDsKKysgICAgICAgICAgICBpZiAob3V0bGVuID09IDApCisrICAgICAgICAgICAgICAgIHJl dHVybiAxOworKyAgICAgICAgICAgIG91dCArPSBkY3R4LT5ibG9ja2xlbmd0aDsKKysgICAgICAg IH0KKysgICAgICAgIGN0eF9hZGRfYnVmKGRjdHgsIGhjdHgtPnZ0bXAsIE5VTEwsIDApOworKyAg ICB9CisrfQorKworK3N0YXRpYyBpbnQgZHJiZ19oYXNoX2luc3RhbnRpYXRlKERSQkdfQ1RYICpk Y3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKmVudCwgc2l6ZV90IGVudF9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqbm9uY2UsIHNpemVfdCBub25jZV9sZW4sCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcHN0ciwgc2l6 ZV90IHBzdHJfbGVuKQorK3sKKysgICAgRFJCR19IQVNIX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhh c2g7CisrICAgIGlmICghaGFzaF9kZihkY3R4LCBoY3R4LT5WLAorKyAgICAgICAgICAgICAgICAg ZW50LCBlbnRfbGVuLCBub25jZSwgbm9uY2VfbGVuLCBwc3RyLCBwc3RyX2xlbiwgTlVMTCwgMCkp CisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFoYXNoX2RmKGRjdHgsIGhjdHgtPkMsCisr ICAgICAgICAgICAgICAgICBOVUxMLCAwLCBoY3R4LT5WLCBkY3R4LT5zZWVkbGVuLCBOVUxMLCAw LCBOVUxMLCAwKSkKKysgICAgICAgIHJldHVybiAwOworKworKyNpZmRlZiBIQVNIX0RSQkdfVFJB Q0UKKysgICAgZnByaW50ZihzdGRlcnIsICJWK0MgYWZ0ZXIgaW5zdGFudGlhdGU6XG4iKTsKKysg ICAgaGV4cHJpbnQoc3RkZXJyLCBoY3R4LT5WLCBkY3R4LT5zZWVkbGVuKTsKKysgICAgaGV4cHJp bnQoc3RkZXJyLCBoY3R4LT5DLCBkY3R4LT5zZWVkbGVuKTsKKysjZW5kaWYKKysgICAgcmV0dXJu IDE7CisrfQorKworK3N0YXRpYyBpbnQgZHJiZ19oYXNoX3Jlc2VlZChEUkJHX0NUWCAqZGN0eCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50LCBz aXplX3QgZW50X2xlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu ZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5fbGVuKQorK3sKKysgICAgRFJCR19IQVNIX0NUWCAq aGN0eCA9ICZkY3R4LT5kLmhhc2g7CisrICAgIC8qIFYgYWJvdXQgdG8gYmUgdXBkYXRlZCBzbyB1 c2UgQyBhcyBvdXRwdXQgaW5zdGVhZCAqLworKyAgICBpZiAoIWhhc2hfZGYoZGN0eCwgaGN0eC0+ QywKKysgICAgICAgICAgICAgICAgIE5VTEwsIDEsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4sCisr ICAgICAgICAgICAgICAgICBlbnQsIGVudF9sZW4sIGFkaW4sIGFkaW5fbGVuKSkKKysgICAgICAg IHJldHVybiAwOworKyAgICBtZW1jcHkoaGN0eC0+ViwgaGN0eC0+QywgZGN0eC0+c2VlZGxlbik7 CisrICAgIGlmICghaGFzaF9kZihkY3R4LCBoY3R4LT5DLCBOVUxMLCAwLAorKyAgICAgICAgICAg ICAgICAgaGN0eC0+ViwgZGN0eC0+c2VlZGxlbiwgTlVMTCwgMCwgTlVMTCwgMCkpCisrICAgICAg ICByZXR1cm4gMDsKKysjaWZkZWYgSEFTSF9EUkJHX1RSQUNFCisrICAgIGZwcmludGYoc3RkZXJy LCAiVitDIGFmdGVyIHJlc2VlZDpcbiIpOworKyAgICBoZXhwcmludChzdGRlcnIsIGhjdHgtPlYs IGRjdHgtPnNlZWRsZW4pOworKyAgICBoZXhwcmludChzdGRlcnIsIGhjdHgtPkMsIGRjdHgtPnNl ZWRsZW4pOworKyNlbmRpZgorKyAgICByZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGludCBkcmJn X2hhc2hfZ2VuZXJhdGUoRFJCR19DVFggKmRjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGluX2xl bikKKyt7CisrICAgIERSQkdfSEFTSF9DVFggKmhjdHggPSAmZGN0eC0+ZC5oYXNoOworKyAgICBF VlBfTURfQ1RYICptY3R4ID0gJmhjdHgtPm1jdHg7CisrICAgIHVuc2lnbmVkIGNoYXIgdG1wWzRd OworKyAgICBpZiAoYWRpbiAmJiBhZGluX2xlbikgeworKyAgICAgICAgdG1wWzBdID0gMjsKKysg ICAgICAgIGlmICghRklQU19kaWdlc3Rpbml0KG1jdHgsIGhjdHgtPm1kKSkKKysgICAgICAgICAg ICByZXR1cm4gMDsKKysgICAgICAgIGlmICghRVZQX0RpZ2VzdFVwZGF0ZShtY3R4LCB0bXAsIDEp KQorKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgaWYgKCFFVlBfRGlnZXN0VXBkYXRl KG1jdHgsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4pKQorKyAgICAgICAgICAgIHJldHVybiAwOwor KyAgICAgICAgaWYgKCFFVlBfRGlnZXN0VXBkYXRlKG1jdHgsIGFkaW4sIGFkaW5fbGVuKSkKKysg ICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmICghY3R4X2FkZF9tZChkY3R4KSkKKysg ICAgICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBpZiAoIWhhc2hfZ2VuKGRjdHgsIG91 dCwgb3V0bGVuKSkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICB0bXBbMF0gPSAzOworKyAg ICBpZiAoIUZJUFNfZGlnZXN0aW5pdChtY3R4LCBoY3R4LT5tZCkpCisrICAgICAgICByZXR1cm4g MDsKKysgICAgaWYgKCFFVlBfRGlnZXN0VXBkYXRlKG1jdHgsIHRtcCwgMSkpCisrICAgICAgICBy ZXR1cm4gMDsKKysgICAgaWYgKCFFVlBfRGlnZXN0VXBkYXRlKG1jdHgsIGhjdHgtPlYsIGRjdHgt PnNlZWRsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIGlmICghY3R4X2FkZF9tZChk Y3R4KSkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICBjdHhfYWRkX2J1ZihkY3R4LCBoY3R4 LT5WLCBoY3R4LT5DLCBkY3R4LT5zZWVkbGVuKTsKKysKKysgICAgdG1wWzBdID0gKGRjdHgtPnJl c2VlZF9jb3VudGVyID4+IDI0KSAmIDB4ZmY7CisrICAgIHRtcFsxXSA9IChkY3R4LT5yZXNlZWRf Y291bnRlciA+PiAxNikgJiAweGZmOworKyAgICB0bXBbMl0gPSAoZGN0eC0+cmVzZWVkX2NvdW50 ZXIgPj4gOCkgJiAweGZmOworKyAgICB0bXBbM10gPSBkY3R4LT5yZXNlZWRfY291bnRlciAmIDB4 ZmY7CisrICAgIGN0eF9hZGRfYnVmKGRjdHgsIGhjdHgtPlYsIHRtcCwgNCk7CisrI2lmZGVmIEhB U0hfRFJCR19UUkFDRQorKyAgICBmcHJpbnRmKHN0ZGVyciwgIlYrQyBhZnRlciBnZW5lcmF0ZTpc biIpOworKyAgICBoZXhwcmludChzdGRlcnIsIGhjdHgtPlYsIGRjdHgtPnNlZWRsZW4pOworKyAg ICBoZXhwcmludChzdGRlcnIsIGhjdHgtPkMsIGRjdHgtPnNlZWRsZW4pOworKyNlbmRpZgorKyAg ICByZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGludCBkcmJnX2hhc2hfdW5pbnN0YW50aWF0ZShE UkJHX0NUWCAqZGN0eCkKKyt7CisrICAgIEVWUF9NRF9DVFhfY2xlYW51cCgmZGN0eC0+ZC5oYXNo Lm1jdHgpOworKyAgICBPUEVOU1NMX2NsZWFuc2UoJmRjdHgtPmQuaGFzaCwgc2l6ZW9mKERSQkdf SEFTSF9DVFgpKTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCBmaXBzX2RyYmdfaGFzaF9p bml0KERSQkdfQ1RYICpkY3R4KQorK3sKKysgICAgY29uc3QgRVZQX01EICptZDsKKysgICAgRFJC R19IQVNIX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhhc2g7CisrICAgIG1kID0gRklQU19nZXRfZGln ZXN0YnluaWQoZGN0eC0+dHlwZSk7CisrICAgIGlmICghbWQpCisrICAgICAgICByZXR1cm4gLTI7 CisrICAgIHN3aXRjaCAoZGN0eC0+dHlwZSkgeworKyAgICBjYXNlIE5JRF9zaGExOgorKyAgICAg ICAgZGN0eC0+c3RyZW5ndGggPSAxMjg7CisrICAgICAgICBicmVhazsKKysKKysgICAgY2FzZSBO SURfc2hhMjI0OgorKyAgICAgICAgZGN0eC0+c3RyZW5ndGggPSAxOTI7CisrICAgICAgICBicmVh azsKKysKKysgICAgZGVmYXVsdDoKKysgICAgICAgIGRjdHgtPnN0cmVuZ3RoID0gMjU2OworKyAg ICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgICAgZGN0eC0+aW5zdGFudGlhdGUgPSBkcmJnX2hh c2hfaW5zdGFudGlhdGU7CisrICAgIGRjdHgtPnJlc2VlZCA9IGRyYmdfaGFzaF9yZXNlZWQ7Cisr ICAgIGRjdHgtPmdlbmVyYXRlID0gZHJiZ19oYXNoX2dlbmVyYXRlOworKyAgICBkY3R4LT51bmlu c3RhbnRpYXRlID0gZHJiZ19oYXNoX3VuaW5zdGFudGlhdGU7CisrCisrICAgIGRjdHgtPmQuaGFz aC5tZCA9IG1kOworKyAgICBFVlBfTURfQ1RYX2luaXQoJmhjdHgtPm1jdHgpOworKworKyAgICAv KiBUaGVzZSBhcmUgdGFrZW4gZnJvbSBTUCA4MDAtOTAgMTAuMSB0YWJsZSAyICovCisrCisrICAg IGRjdHgtPmJsb2NrbGVuZ3RoID0gTV9FVlBfTURfc2l6ZShtZCk7CisrICAgIGlmIChkY3R4LT5i bG9ja2xlbmd0aCA+IDMyKQorKyAgICAgICAgZGN0eC0+c2VlZGxlbiA9IDExMTsKKysgICAgZWxz ZQorKyAgICAgICAgZGN0eC0+c2VlZGxlbiA9IDU1OworKworKyAgICBkY3R4LT5taW5fZW50cm9w eSA9IGRjdHgtPnN0cmVuZ3RoIC8gODsKKysgICAgZGN0eC0+bWF4X2VudHJvcHkgPSBEUkJHX01B WF9MRU5HVEg7CisrCisrICAgIGRjdHgtPm1pbl9ub25jZSA9IGRjdHgtPm1pbl9lbnRyb3B5IC8g MjsKKysgICAgZGN0eC0+bWF4X25vbmNlID0gRFJCR19NQVhfTEVOR1RIOworKworKyAgICBkY3R4 LT5tYXhfcGVycyA9IERSQkdfTUFYX0xFTkdUSDsKKysgICAgZGN0eC0+bWF4X2FkaW4gPSBEUkJH X01BWF9MRU5HVEg7CisrCisrICAgIGRjdHgtPm1heF9yZXF1ZXN0ID0gMSA8PCAxNjsKKysgICAg ZGN0eC0+cmVzZWVkX2ludGVydmFsID0gMSA8PCAyNDsKKysKKysgICAgcmV0dXJuIDE7CisrfQor ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX2htYWMuYy5maXBz IG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19obWFjLmMKKy0tLSBvcGVuc3Ns LTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2RyYmdfaG1hYy5jLmZpcHMJMjAxNS0wNi0xNSAxNzoz MDowMC4wMDYyODM5MzYgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBz X2RyYmdfaG1hYy5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDA2MjgzOTM2ICswMjAwCitAQCAtMCww ICsxLDI3MCBAQAorKy8qIGZpcHMvcmFuZC9maXBzX2RyYmdfaG1hYy5jICovCisrLyogV3JpdHRl biBieSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVu U1NMCisrICogcHJvamVjdC4KKysgKi8KKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAo YykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgor KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp dGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0 aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBS ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly aWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgor KyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNp bmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBz b2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAg ICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNT TCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDov L3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xr aXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5k b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv dXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Np b24sIHBsZWFzZSBjb250YWN0CisrICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgorKyAqCisr ICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxs ZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5h bWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5T U0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0 c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoK KysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUg T3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0ICho dHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ REVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNT RUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg VEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW RU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJF IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lB TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisr ICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS VklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO VEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5Z IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysg KiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysg Ki8KKysKKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNs dWRlIDxvcGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKyNpbmNs dWRlIDxvcGVuc3NsL2htYWMuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KKysjaW5jbHVk ZSA8b3BlbnNzbC9maXBzLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwc19yYW5kLmg+CisrI2lu Y2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKKysKKytzdGF0aWMgaW50IGRyYmdfaG1hY191cGRhdGUo RFJCR19DVFggKmRjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln bmVkIGNoYXIgKmluMSwgc2l6ZV90IGluMWxlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4yLCBzaXplX3QgaW4ybGVuLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbjMsIHNpemVfdCBpbjNsZW4p CisreworKyAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBjMCA9IDAsIGMxID0gMTsKKysgICAgRFJC R19ITUFDX0NUWCAqaG1hYyA9ICZkY3R4LT5kLmhtYWM7CisrICAgIEhNQUNfQ1RYICpoY3R4ID0g JmhtYWMtPmhjdHg7CisrCisrICAgIGlmICghSE1BQ19Jbml0X2V4KGhjdHgsIGhtYWMtPkssIGRj dHgtPmJsb2NrbGVuZ3RoLCBobWFjLT5tZCwgTlVMTCkpCisrICAgICAgICByZXR1cm4gMDsKKysg ICAgaWYgKCFITUFDX1VwZGF0ZShoY3R4LCBobWFjLT5WLCBkY3R4LT5ibG9ja2xlbmd0aCkpCisr ICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFITUFDX1VwZGF0ZShoY3R4LCAmYzAsIDEpKQor KyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmIChpbjFsZW4gJiYgIUhNQUNfVXBkYXRlKGhjdHgs IGluMSwgaW4xbGVuKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAoaW4ybGVuICYmICFI TUFDX1VwZGF0ZShoY3R4LCBpbjIsIGluMmxlbikpCisrICAgICAgICByZXR1cm4gMDsKKysgICAg aWYgKGluM2xlbiAmJiAhSE1BQ19VcGRhdGUoaGN0eCwgaW4zLCBpbjNsZW4pKQorKyAgICAgICAg cmV0dXJuIDA7CisrCisrICAgIGlmICghSE1BQ19GaW5hbChoY3R4LCBobWFjLT5LLCBOVUxMKSkK KysgICAgICAgIHJldHVybiAwOworKworKyAgICBpZiAoIUhNQUNfSW5pdF9leChoY3R4LCBobWFj LT5LLCBkY3R4LT5ibG9ja2xlbmd0aCwgaG1hYy0+bWQsIE5VTEwpKQorKyAgICAgICAgcmV0dXJu IDA7CisrICAgIGlmICghSE1BQ19VcGRhdGUoaGN0eCwgaG1hYy0+ViwgZGN0eC0+YmxvY2tsZW5n dGgpKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIGlmICghSE1BQ19GaW5hbChoY3R4LCBo bWFjLT5WLCBOVUxMKSkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICBpZiAoIWluMWxlbiAm JiAhaW4ybGVuICYmICFpbjNsZW4pCisrICAgICAgICByZXR1cm4gMTsKKysKKysgICAgaWYgKCFI TUFDX0luaXRfZXgoaGN0eCwgaG1hYy0+SywgZGN0eC0+YmxvY2tsZW5ndGgsIGhtYWMtPm1kLCBO VUxMKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAoIUhNQUNfVXBkYXRlKGhjdHgsIGht YWMtPlYsIGRjdHgtPmJsb2NrbGVuZ3RoKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAo IUhNQUNfVXBkYXRlKGhjdHgsICZjMSwgMSkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYg KGluMWxlbiAmJiAhSE1BQ19VcGRhdGUoaGN0eCwgaW4xLCBpbjFsZW4pKQorKyAgICAgICAgcmV0 dXJuIDA7CisrICAgIGlmIChpbjJsZW4gJiYgIUhNQUNfVXBkYXRlKGhjdHgsIGluMiwgaW4ybGVu KSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAoaW4zbGVuICYmICFITUFDX1VwZGF0ZSho Y3R4LCBpbjMsIGluM2xlbikpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgaWYgKCFITUFD X0ZpbmFsKGhjdHgsIGhtYWMtPkssIE5VTEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAg IGlmICghSE1BQ19Jbml0X2V4KGhjdHgsIGhtYWMtPkssIGRjdHgtPmJsb2NrbGVuZ3RoLCBobWFj LT5tZCwgTlVMTCkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKCFITUFDX1VwZGF0ZSho Y3R4LCBobWFjLT5WLCBkY3R4LT5ibG9ja2xlbmd0aCkpCisrICAgICAgICByZXR1cm4gMDsKKysK KysgICAgaWYgKCFITUFDX0ZpbmFsKGhjdHgsIGhtYWMtPlYsIE5VTEwpKQorKyAgICAgICAgcmV0 dXJuIDA7CisrCisrICAgIHJldHVybiAxOworKworK30KKysKKytzdGF0aWMgaW50IGRyYmdfaG1h Y19pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbnQsIHNpemVfdCBlbnRfbGVuLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5vbmNlLCBz aXplX3Qgbm9uY2VfbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKnBzdHIsIHNpemVfdCBwc3RyX2xlbikKKyt7CisrICAgIERSQkdfSE1B Q19DVFggKmhtYWMgPSAmZGN0eC0+ZC5obWFjOworKyAgICBtZW1zZXQoaG1hYy0+SywgMCwgZGN0 eC0+YmxvY2tsZW5ndGgpOworKyAgICBtZW1zZXQoaG1hYy0+ViwgMSwgZGN0eC0+YmxvY2tsZW5n dGgpOworKyAgICBpZiAoIWRyYmdfaG1hY191cGRhdGUoZGN0eCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgIGVudCwgZW50X2xlbiwgbm9uY2UsIG5vbmNlX2xlbiwgcHN0ciwgcHN0cl9sZW4p KQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrI2lmZGVmIEhNQUNfRFJCR19UUkFDRQorKyAgICBm cHJpbnRmKHN0ZGVyciwgIksrViBhZnRlciBpbnN0YW50aWF0ZTpcbiIpOworKyAgICBoZXhwcmlu dChzdGRlcnIsIGhtYWMtPkssIGhtYWMtPmJsb2NrbGVuZ3RoKTsKKysgICAgaGV4cHJpbnQoc3Rk ZXJyLCBobWFjLT5WLCBobWFjLT5ibG9ja2xlbmd0aCk7CisrI2VuZGlmCisrICAgIHJldHVybiAx OworK30KKysKKytzdGF0aWMgaW50IGRyYmdfaG1hY19yZXNlZWQoRFJCR19DVFggKmRjdHgsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudCwgc2l6 ZV90IGVudF9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKmFkaW4sIHNpemVfdCBhZGluX2xlbikKKyt7CisrICAgIGlmICghZHJiZ19obWFjX3Vw ZGF0ZShkY3R4LCBlbnQsIGVudF9sZW4sIGFkaW4sIGFkaW5fbGVuLCBOVUxMLCAwKSkKKysgICAg ICAgIHJldHVybiAwOworKworKyNpZmRlZiBITUFDX0RSQkdfVFJBQ0UKKysgICAgeworKyAgICAg ICAgRFJCR19ITUFDX0NUWCAqaG1hYyA9ICZkY3R4LT5kLmhtYWM7CisrICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIksrViBhZnRlciByZXNlZWQ6XG4iKTsKKysgICAgICAgIGhleHByaW50KHN0ZGVy ciwgaG1hYy0+SywgaG1hYy0+YmxvY2tsZW5ndGgpOworKyAgICAgICAgaGV4cHJpbnQoc3RkZXJy LCBobWFjLT5WLCBobWFjLT5ibG9ja2xlbmd0aCk7CisrICAgIH0KKysjZW5kaWYKKysgICAgcmV0 dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQgZHJiZ19obWFjX2dlbmVyYXRlKERSQkdfQ1RYICpk Y3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwg c2l6ZV90IG91dGxlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp Z25lZCBjaGFyICphZGluLCBzaXplX3QgYWRpbl9sZW4pCisreworKyAgICBEUkJHX0hNQUNfQ1RY ICpobWFjID0gJmRjdHgtPmQuaG1hYzsKKysgICAgSE1BQ19DVFggKmhjdHggPSAmaG1hYy0+aGN0 eDsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqVnRtcCA9IGhtYWMtPlY7CisrICAgIGlmIChh ZGluX2xlbiAmJiAhZHJiZ19obWFjX3VwZGF0ZShkY3R4LCBhZGluLCBhZGluX2xlbiwgTlVMTCwg MCwgTlVMTCwgMCkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgZm9yICg7OykgeworKyAgICAg ICAgaWYgKCFITUFDX0luaXRfZXgoaGN0eCwgaG1hYy0+SywgZGN0eC0+YmxvY2tsZW5ndGgsIGht YWMtPm1kLCBOVUxMKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGlmICghSE1B Q19VcGRhdGUoaGN0eCwgVnRtcCwgZGN0eC0+YmxvY2tsZW5ndGgpKQorKyAgICAgICAgICAgIHJl dHVybiAwOworKyAgICAgICAgaWYgKCEoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RFU1QpICYm ICFkY3R4LT5sYl92YWxpZCkgeworKyAgICAgICAgICAgIGlmICghSE1BQ19GaW5hbChoY3R4LCBk Y3R4LT5sYiwgTlVMTCkpCisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAg IGRjdHgtPmxiX3ZhbGlkID0gMTsKKysgICAgICAgICAgICBWdG1wID0gZGN0eC0+bGI7CisrICAg ICAgICAgICAgY29udGludWU7CisrICAgICAgICB9IGVsc2UgaWYgKG91dGxlbiA+IGRjdHgtPmJs b2NrbGVuZ3RoKSB7CisrICAgICAgICAgICAgaWYgKCFITUFDX0ZpbmFsKGhjdHgsIG91dCwgTlVM TCkpCisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAgIGlmICghZmlwc19k cmJnX2Nwcm5nX3Rlc3QoZGN0eCwgb3V0KSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisr ICAgICAgICAgICAgVnRtcCA9IG91dDsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAg aWYgKCFITUFDX0ZpbmFsKGhjdHgsIGhtYWMtPlYsIE5VTEwpKQorKyAgICAgICAgICAgICAgICBy ZXR1cm4gMDsKKysgICAgICAgICAgICBpZiAoIWZpcHNfZHJiZ19jcHJuZ190ZXN0KGRjdHgsIGht YWMtPlYpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICBtZW1jcHko b3V0LCBobWFjLT5WLCBvdXRsZW4pOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQor KyAgICAgICAgb3V0ICs9IGRjdHgtPmJsb2NrbGVuZ3RoOworKyAgICAgICAgb3V0bGVuIC09IGRj dHgtPmJsb2NrbGVuZ3RoOworKyAgICB9CisrICAgIGlmICghZHJiZ19obWFjX3VwZGF0ZShkY3R4 LCBhZGluLCBhZGluX2xlbiwgTlVMTCwgMCwgTlVMTCwgMCkpCisrICAgICAgICByZXR1cm4gMDsK KysKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQgZHJiZ19obWFjX3VuaW5zdGFu dGlhdGUoRFJCR19DVFggKmRjdHgpCisreworKyAgICBITUFDX0NUWF9jbGVhbnVwKCZkY3R4LT5k LmhtYWMuaGN0eCk7CisrICAgIE9QRU5TU0xfY2xlYW5zZSgmZGN0eC0+ZC5obWFjLCBzaXplb2Yo RFJCR19ITUFDX0NUWCkpOworKyAgICByZXR1cm4gMTsKKyt9CisrCisraW50IGZpcHNfZHJiZ19o bWFjX2luaXQoRFJCR19DVFggKmRjdHgpCisreworKyAgICBjb25zdCBFVlBfTUQgKm1kID0gTlVM TDsKKysgICAgRFJCR19ITUFDX0NUWCAqaGN0eCA9ICZkY3R4LT5kLmhtYWM7CisrICAgIGRjdHgt PnN0cmVuZ3RoID0gMjU2OworKyAgICBzd2l0Y2ggKGRjdHgtPnR5cGUpIHsKKysgICAgY2FzZSBO SURfaG1hY1dpdGhTSEExOgorKyAgICAgICAgbWQgPSBFVlBfc2hhMSgpOworKyAgICAgICAgZGN0 eC0+c3RyZW5ndGggPSAxMjg7CisrICAgICAgICBicmVhazsKKysKKysgICAgY2FzZSBOSURfaG1h Y1dpdGhTSEEyMjQ6CisrICAgICAgICBtZCA9IEVWUF9zaGEyMjQoKTsKKysgICAgICAgIGRjdHgt PnN0cmVuZ3RoID0gMTkyOworKyAgICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgTklEX2htYWNX aXRoU0hBMjU2OgorKyAgICAgICAgbWQgPSBFVlBfc2hhMjU2KCk7CisrICAgICAgICBicmVhazsK KysKKysgICAgY2FzZSBOSURfaG1hY1dpdGhTSEEzODQ6CisrICAgICAgICBtZCA9IEVWUF9zaGEz ODQoKTsKKysgICAgICAgIGJyZWFrOworKworKyAgICBjYXNlIE5JRF9obWFjV2l0aFNIQTUxMjoK KysgICAgICAgIG1kID0gRVZQX3NoYTUxMigpOworKyAgICAgICAgYnJlYWs7CisrCisrICAgIGRl ZmF1bHQ6CisrICAgICAgICBkY3R4LT5zdHJlbmd0aCA9IDA7CisrICAgICAgICByZXR1cm4gLTI7 CisrICAgIH0KKysgICAgZGN0eC0+aW5zdGFudGlhdGUgPSBkcmJnX2htYWNfaW5zdGFudGlhdGU7 CisrICAgIGRjdHgtPnJlc2VlZCA9IGRyYmdfaG1hY19yZXNlZWQ7CisrICAgIGRjdHgtPmdlbmVy YXRlID0gZHJiZ19obWFjX2dlbmVyYXRlOworKyAgICBkY3R4LT51bmluc3RhbnRpYXRlID0gZHJi Z19obWFjX3VuaW5zdGFudGlhdGU7CisrICAgIEhNQUNfQ1RYX2luaXQoJmhjdHgtPmhjdHgpOwor KyAgICBoY3R4LT5tZCA9IG1kOworKyAgICBkY3R4LT5ibG9ja2xlbmd0aCA9IE1fRVZQX01EX3Np emUobWQpOworKyAgICBkY3R4LT5zZWVkbGVuID0gTV9FVlBfTURfc2l6ZShtZCk7CisrCisrICAg IGRjdHgtPm1pbl9lbnRyb3B5ID0gZGN0eC0+c3RyZW5ndGggLyA4OworKyAgICBkY3R4LT5tYXhf ZW50cm9weSA9IERSQkdfTUFYX0xFTkdUSDsKKysKKysgICAgZGN0eC0+bWluX25vbmNlID0gZGN0 eC0+bWluX2VudHJvcHkgLyAyOworKyAgICBkY3R4LT5tYXhfbm9uY2UgPSBEUkJHX01BWF9MRU5H VEg7CisrCisrICAgIGRjdHgtPm1heF9wZXJzID0gRFJCR19NQVhfTEVOR1RIOworKyAgICBkY3R4 LT5tYXhfYWRpbiA9IERSQkdfTUFYX0xFTkdUSDsKKysKKysgICAgZGN0eC0+bWF4X3JlcXVlc3Qg PSAxIDw8IDE2OworKyAgICBkY3R4LT5yZXNlZWRfaW50ZXJ2YWwgPSAxIDw8IDI0OworKworKyAg ICByZXR1cm4gMTsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBz X2RyYmdfbGliLmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2RyYmdfbGli LmMKKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2RyYmdfbGliLmMuZmlwcwky MDE1LTA2LTE1IDE3OjMwOjAwLjAwNzI4Mzk1OSArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2Ny eXB0by9maXBzL2ZpcHNfZHJiZ19saWIuYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAwNzI4Mzk1OSAr MDIwMAorQEAgLTAsMCArMSw1NTMgQEAKKysvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5z b24gKHN0ZXZlQG9wZW5zc2wub3JnKSBmb3IgdGhlIE9wZW5TU0wKKysgKiBwcm9qZWN0LgorKyAq LworKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFBy b2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9k aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKysg KgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3Ry aWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmlu ZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0 aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3Ig dXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisr ICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2pl Y3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysg KiAgICBsaWNlbnNpbmdAT3BlblNTTC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVk IGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBu b3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0 dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisrICog Ni4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhl IGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3Qg aW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAg ICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcv KSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJP SkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJ RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysg KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wg UFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJP Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVT RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VW RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U UkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D RSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBP RiBTVUNIIERBTUFHRS4KKysgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqLworKworKyNpbmNsdWRlIDxzdHJp bmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9l cnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KKysjaW5jbHVkZSAiZmlwc19s b2NsLmgiCisrI2luY2x1ZGUgImZpcHNfcmFuZF9sY2wuaCIKKysKKysvKiBTdXBwb3J0IGZyYW1l d29yayBmb3IgU1A4MDAtOTAgRFJCR3MgKi8KKysKKytpbnQgRklQU19kcmJnX2luaXQoRFJCR19D VFggKmRjdHgsIGludCB0eXBlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCisreworKyAgICBpbnQgcnY7 CisrICAgIG1lbXNldChkY3R4LCAwLCBzaXplb2YoRFJCR19DVFgpKTsKKysgICAgZGN0eC0+c3Rh dHVzID0gRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRDsKKysgICAgZGN0eC0+eGZsYWdzID0gZmxh Z3M7CisrICAgIGRjdHgtPnR5cGUgPSB0eXBlOworKworKyAgICBkY3R4LT5pZmxhZ3MgPSAwOwor KyAgICBkY3R4LT5lbnRyb3B5X2Jsb2NrbGVuID0gMDsKKysgICAgZGN0eC0+aGVhbHRoX2NoZWNr X2NudCA9IDA7CisrICAgIGRjdHgtPmhlYWx0aF9jaGVja19pbnRlcnZhbCA9IERSQkdfSEVBTFRI X0lOVEVSVkFMOworKworKyAgICBydiA9IGZpcHNfZHJiZ19oYXNoX2luaXQoZGN0eCk7CisrCisr ICAgIGlmIChydiA9PSAtMikKKysgICAgICAgIHJ2ID0gZmlwc19kcmJnX2N0cl9pbml0KGRjdHgp OworKyAgICBpZiAocnYgPT0gLTIpCisrICAgICAgICBydiA9IGZpcHNfZHJiZ19obWFjX2luaXQo ZGN0eCk7CisrCisrICAgIGlmIChydiA8PSAwKSB7CisrICAgICAgICBpZiAocnYgPT0gLTIpCisr ICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0lOSVQsIEZJUFNfUl9VTlNVUFBP UlRFRF9EUkJHX1RZUEUpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIEZJUFNlcnIoRklQ U19GX0ZJUFNfRFJCR19JTklULCBGSVBTX1JfRVJST1JfSU5JVElBTElTSU5HX0RSQkcpOworKyAg ICB9CisrCisrICAgIC8qIElmIG5vdCBpbiB0ZXN0IG1vZGUgcnVuIHNlbGZ0ZXN0cyBvbiBEUkJH IG9mIHRoZSBzYW1lIHR5cGUgKi8KKysKKysgICAgaWYgKCEoZGN0eC0+eGZsYWdzICYgRFJCR19G TEFHX1RFU1QpKSB7CisrICAgICAgICBpZiAoIUZJUFNfZHJiZ19oZWFsdGhfY2hlY2soZGN0eCkp IHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5JVCwgRklQU19SX1NF TEZURVNUX0ZBSUxVUkUpOworKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgfQorKyAg ICB9CisrCisrICAgIHJldHVybiBydjsKKyt9CisrCisrRFJCR19DVFggKkZJUFNfZHJiZ19uZXco aW50IHR5cGUsIHVuc2lnbmVkIGludCBmbGFncykKKyt7CisrICAgIERSQkdfQ1RYICpkY3R4Owor KyAgICBkY3R4ID0gT1BFTlNTTF9tYWxsb2Moc2l6ZW9mKERSQkdfQ1RYKSk7CisrICAgIGlmICgh ZGN0eCkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX05FVywgRVJSX1JfTUFM TE9DX0ZBSUxVUkUpOworKyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysKKysgICAgaWYg KHR5cGUgPT0gMCkgeworKyAgICAgICAgbWVtc2V0KGRjdHgsIDAsIHNpemVvZihEUkJHX0NUWCkp OworKyAgICAgICAgZGN0eC0+dHlwZSA9IDA7CisrICAgICAgICBkY3R4LT5zdGF0dXMgPSBEUkJH X1NUQVRVU19VTklOSVRJQUxJU0VEOworKyAgICAgICAgcmV0dXJuIGRjdHg7CisrICAgIH0KKysK KysgICAgaWYgKEZJUFNfZHJiZ19pbml0KGRjdHgsIHR5cGUsIGZsYWdzKSA8PSAwKSB7CisrICAg ICAgICBPUEVOU1NMX2ZyZWUoZGN0eCk7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQor KworKyAgICByZXR1cm4gZGN0eDsKKyt9CisrCisrdm9pZCBGSVBTX2RyYmdfZnJlZShEUkJHX0NU WCAqZGN0eCkKKyt7CisrICAgIGlmIChkY3R4LT51bmluc3RhbnRpYXRlKQorKyAgICAgICAgZGN0 eC0+dW5pbnN0YW50aWF0ZShkY3R4KTsKKysgICAgLyogRG9uJ3QgZnJlZSB1cCBkZWZhdWx0IERS QkcgKi8KKysgICAgaWYgKGRjdHggPT0gRklQU19nZXRfZGVmYXVsdF9kcmJnKCkpIHsKKysgICAg ICAgIG1lbXNldChkY3R4LCAwLCBzaXplb2YoRFJCR19DVFgpKTsKKysgICAgICAgIGRjdHgtPnR5 cGUgPSAwOworKyAgICAgICAgZGN0eC0+c3RhdHVzID0gRFJCR19TVEFUVVNfVU5JTklUSUFMSVNF RDsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIE9QRU5TU0xfY2xlYW5zZSgmZGN0eC0+ZCwgc2l6 ZW9mKGRjdHgtPmQpKTsKKysgICAgICAgIE9QRU5TU0xfZnJlZShkY3R4KTsKKysgICAgfQorK30K KysKKytzdGF0aWMgc2l6ZV90IGZpcHNfZ2V0X2VudHJvcHkoRFJCR19DVFggKmRjdHgsIHVuc2ln bmVkIGNoYXIgKipwb3V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50 cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhfbGVuKQorK3sKKysgICAgdW5zaWduZWQg Y2hhciAqdG91dCwgKnA7CisrICAgIHNpemVfdCBibCA9IGRjdHgtPmVudHJvcHlfYmxvY2tsZW4s IHJ2OworKyAgICBpZiAoIWRjdHgtPmdldF9lbnRyb3B5KQorKyAgICAgICAgcmV0dXJuIDA7Cisr ICAgIGlmIChkY3R4LT54ZmxhZ3MgJiBEUkJHX0ZMQUdfVEVTVCB8fCAhYmwpCisrICAgICAgICBy ZXR1cm4gZGN0eC0+Z2V0X2VudHJvcHkoZGN0eCwgcG91dCwgZW50cm9weSwgbWluX2xlbiwgbWF4 X2xlbik7CisrICAgIHJ2ID0gZGN0eC0+Z2V0X2VudHJvcHkoZGN0eCwgJnRvdXQsIGVudHJvcHkg KyBibCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fbGVuICsgYmwsIG1heF9sZW4g KyBibCk7CisrICAgIGlmICh0b3V0ID09IE5VTEwpCisrICAgICAgICByZXR1cm4gMDsKKysgICAg KnBvdXQgPSB0b3V0ICsgYmw7CisrICAgIGlmIChydiA8IChtaW5fbGVuICsgYmwpIHx8IChydiAl IGJsKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICAvKiBDb21wYXJlIGNvbnNlY3V0aXZlIGJs b2NrcyBmb3IgY29udGludW91cyBQUk5HIHRlc3QgKi8KKysgICAgZm9yIChwID0gdG91dDsgcCA8 IHRvdXQgKyBydiAtIGJsOyBwICs9IGJsKSB7CisrICAgICAgICBpZiAoIW1lbWNtcChwLCBwICsg YmwsIGJsKSkgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfR0VUX0VOVFJPUFks IEZJUFNfUl9FTlRST1BZX1NPVVJDRV9TVFVDSyk7CisrICAgICAgICAgICAgcmV0dXJuIDA7Cisr ICAgICAgICB9CisrICAgIH0KKysgICAgcnYgLT0gYmw7CisrICAgIGlmIChydiA+IG1heF9sZW4p CisrICAgICAgICByZXR1cm4gbWF4X2xlbjsKKysgICAgcmV0dXJuIHJ2OworK30KKysKKytzdGF0 aWMgdm9pZCBmaXBzX2NsZWFudXBfZW50cm9weShEUkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvbGVuKQor K3sKKysgICAgc2l6ZV90IGJsOworKyAgICBpZiAoZGN0eC0+eGZsYWdzICYgRFJCR19GTEFHX1RF U1QpCisrICAgICAgICBibCA9IDA7CisrICAgIGVsc2UKKysgICAgICAgIGJsID0gZGN0eC0+ZW50 cm9weV9ibG9ja2xlbjsKKysgICAgLyogQ2FsbCBjbGVhbnVwIHdpdGggb3JpZ2luYWwgYXJndW1l bnRzICovCisrICAgIGRjdHgtPmNsZWFudXBfZW50cm9weShkY3R4LCBvdXQgLSBibCwgb2xlbiAr IGJsKTsKKyt9CisrCisraW50IEZJUFNfZHJiZ19pbnN0YW50aWF0ZShEUkJHX0NUWCAqZGN0eCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBlcnMsIHNp emVfdCBwZXJzbGVuKQorK3sKKysgICAgc2l6ZV90IGVudGxlbiA9IDAsIG5vbmNlbGVuID0gMDsK KysgICAgdW5zaWduZWQgY2hhciAqbm9uY2UgPSBOVUxMLCAqZW50cm9weSA9IE5VTEw7CisrCisr I2lmIDAKKysgICAgLyogUHV0IGhlcmUgc28gZXJyb3Igc2NyaXB0IHBpY2tzIHRoZW0gdXAgKi8K KysgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0lOU1RBTlRJQVRFLAorKyAgICAgICAgICAg IEZJUFNfUl9QRVJTT05BTElTQVRJT05fU1RSSU5HX1RPT19MT05HKTsKKysgICAgRklQU2VycihG SVBTX0ZfRklQU19EUkJHX0lOU1RBTlRJQVRFLCBGSVBTX1JfSU5fRVJST1JfU1RBVEUpOworKyAg ICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFOVElBVEUsIEZJUFNfUl9BTFJFQURZX0lO U1RBTlRJQVRFRCk7CisrICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19JTlNUQU5USUFURSwg RklQU19SX0VSUk9SX1JFVFJJRVZJTkdfRU5UUk9QWSk7CisrICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19JTlNUQU5USUFURSwgRklQU19SX0VSUk9SX1JFVFJJRVZJTkdfTk9OQ0UpOworKyAg ICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfSU5TVEFOVElBVEUsIEZJUFNfUl9JTlNUQU5USUFU RV9FUlJPUik7CisrICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19JTlNUQU5USUFURSwgRklQ U19SX0RSQkdfTk9UX0lOSVRJQUxJU0VEKTsKKysjZW5kaWYKKysKKysgICAgaW50IHIgPSAwOwor KworKyAgICBpZiAocGVyc2xlbiA+IGRjdHgtPm1heF9wZXJzKSB7CisrICAgICAgICByID0gRklQ U19SX1BFUlNPTkFMSVNBVElPTl9TVFJJTkdfVE9PX0xPTkc7CisrICAgICAgICBnb3RvIGVuZDsK KysgICAgfQorKworKyAgICBpZiAoIWRjdHgtPmluc3RhbnRpYXRlKSB7CisrICAgICAgICByID0g RklQU19SX0RSQkdfTk9UX0lOSVRJQUxJU0VEOworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0K KysKKysgICAgaWYgKGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NUQVRVU19VTklOSVRJQUxJU0VEKSB7 CisrICAgICAgICBpZiAoZGN0eC0+c3RhdHVzID09IERSQkdfU1RBVFVTX0VSUk9SKQorKyAgICAg ICAgICAgIHIgPSBGSVBTX1JfSU5fRVJST1JfU1RBVEU7CisrICAgICAgICBlbHNlCisrICAgICAg ICAgICAgciA9IEZJUFNfUl9BTFJFQURZX0lOU1RBTlRJQVRFRDsKKysgICAgICAgIGdvdG8gZW5k OworKyAgICB9CisrCisrICAgIGRjdHgtPnN0YXR1cyA9IERSQkdfU1RBVFVTX0VSUk9SOworKwor KyAgICBlbnRsZW4gPSBmaXBzX2dldF9lbnRyb3B5KGRjdHgsICZlbnRyb3B5LCBkY3R4LT5zdHJl bmd0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkY3R4LT5taW5fZW50cm9weSwg ZGN0eC0+bWF4X2VudHJvcHkpOworKworKyAgICBpZiAoZW50bGVuIDwgZGN0eC0+bWluX2VudHJv cHkgfHwgZW50bGVuID4gZGN0eC0+bWF4X2VudHJvcHkpIHsKKysgICAgICAgIHIgPSBGSVBTX1Jf RVJST1JfUkVUUklFVklOR19FTlRST1BZOworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysK KysgICAgaWYgKGRjdHgtPm1heF9ub25jZSA+IDAgJiYgZGN0eC0+Z2V0X25vbmNlKSB7CisrICAg ICAgICBub25jZWxlbiA9IGRjdHgtPmdldF9ub25jZShkY3R4LCAmbm9uY2UsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkY3R4LT5zdHJlbmd0aCAvIDIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkY3R4LT5taW5fbm9uY2UsIGRjdHgtPm1heF9ub25j ZSk7CisrCisrICAgICAgICBpZiAobm9uY2VsZW4gPCBkY3R4LT5taW5fbm9uY2UgfHwgbm9uY2Vs ZW4gPiBkY3R4LT5tYXhfbm9uY2UpIHsKKysgICAgICAgICAgICByID0gRklQU19SX0VSUk9SX1JF VFJJRVZJTkdfTk9OQ0U7CisrICAgICAgICAgICAgZ290byBlbmQ7CisrICAgICAgICB9CisrCisr ICAgIH0KKysKKysgICAgaWYgKCFkY3R4LT5pbnN0YW50aWF0ZShkY3R4LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudHJvcHksIGVudGxlbiwgbm9uY2UsIG5vbmNlbGVuLCBwZXJzLCBw ZXJzbGVuKSkgeworKyAgICAgICAgciA9IEZJUFNfUl9FUlJPUl9JTlNUQU5USUFUSU5HX0RSQkc7 CisrICAgICAgICBnb3RvIGVuZDsKKysgICAgfQorKworKyAgICBkY3R4LT5zdGF0dXMgPSBEUkJH X1NUQVRVU19SRUFEWTsKKysgICAgaWYgKCEoZGN0eC0+aWZsYWdzICYgRFJCR19DVVNUT01fUkVT RUVEKSkKKysgICAgICAgIGRjdHgtPnJlc2VlZF9jb3VudGVyID0gMTsKKysKKysgZW5kOgorKwor KyAgICBpZiAoZW50cm9weSAmJiBkY3R4LT5jbGVhbnVwX2VudHJvcHkpCisrICAgICAgICBmaXBz X2NsZWFudXBfZW50cm9weShkY3R4LCBlbnRyb3B5LCBlbnRsZW4pOworKworKyAgICBpZiAobm9u Y2UgJiYgZGN0eC0+Y2xlYW51cF9ub25jZSkKKysgICAgICAgIGRjdHgtPmNsZWFudXBfbm9uY2Uo ZGN0eCwgbm9uY2UsIG5vbmNlbGVuKTsKKysKKysgICAgaWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJH X1NUQVRVU19SRUFEWSkKKysgICAgICAgIHJldHVybiAxOworKworKyAgICBpZiAociAmJiAhKGRj dHgtPmlmbGFncyAmIERSQkdfRkxBR19OT0VSUikpCisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9G SVBTX0RSQkdfSU5TVEFOVElBVEUsIHIpOworKworKyAgICByZXR1cm4gMDsKKysKKyt9CisrCisr c3RhdGljIGludCBkcmJnX3Jlc2VlZChEUkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuLCBpbnQgaGNo ZWNrKQorK3sKKysgICAgdW5zaWduZWQgY2hhciAqZW50cm9weSA9IE5VTEw7CisrICAgIHNpemVf dCBlbnRsZW4gPSAwOworKyAgICBpbnQgciA9IDA7CisrCisrI2lmIDAKKysgICAgRklQU2VycihG SVBTX0ZfRFJCR19SRVNFRUQsIEZJUFNfUl9OT1RfSU5TVEFOVElBVEVEKTsKKysgICAgRklQU2Vy cihGSVBTX0ZfRFJCR19SRVNFRUQsIEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX1RPT19MT05HKTsK KysjZW5kaWYKKysgICAgaWYgKGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NUQVRVU19SRUFEWQorKyAg ICAgICAgJiYgZGN0eC0+c3RhdHVzICE9IERSQkdfU1RBVFVTX1JFU0VFRCkgeworKyAgICAgICAg aWYgKGRjdHgtPnN0YXR1cyA9PSBEUkJHX1NUQVRVU19FUlJPUikKKysgICAgICAgICAgICByID0g RklQU19SX0lOX0VSUk9SX1NUQVRFOworKyAgICAgICAgZWxzZSBpZiAoZGN0eC0+c3RhdHVzID09 IERSQkdfU1RBVFVTX1VOSU5JVElBTElTRUQpCisrICAgICAgICAgICAgciA9IEZJUFNfUl9OT1Rf SU5TVEFOVElBVEVEOworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysKKysgICAgaWYgKCFh ZGluKQorKyAgICAgICAgYWRpbmxlbiA9IDA7CisrICAgIGVsc2UgaWYgKGFkaW5sZW4gPiBkY3R4 LT5tYXhfYWRpbikgeworKyAgICAgICAgciA9IEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX1RPT19M T05HOworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysKKysgICAgZGN0eC0+c3RhdHVzID0g RFJCR19TVEFUVVNfRVJST1I7CisrICAgIC8qIFBlZm9ybSBoZWFsdGggY2hlY2sgb24gYWxsIHJl c2VlZCBvcGVyYXRpb25zIGlmIG5vdCBhIHByZWRpY3Rpb24KKysgICAgICogcmVzaXN0YW5jZSBy ZXF1ZXN0IGFuZCBub3QgaW4gdGVzdCBtb2RlLgorKyAgICAgKi8KKysgICAgaWYgKGhjaGVjayAm JiAhKGRjdHgtPnhmbGFncyAmIERSQkdfRkxBR19URVNUKSkgeworKyAgICAgICAgaWYgKCFGSVBT X2RyYmdfaGVhbHRoX2NoZWNrKGRjdHgpKSB7CisrICAgICAgICAgICAgciA9IEZJUFNfUl9TRUxG VEVTVF9GQUlMVVJFOworKyAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICAgICAgfQorKyAgICB9 CisrCisrICAgIGVudGxlbiA9IGZpcHNfZ2V0X2VudHJvcHkoZGN0eCwgJmVudHJvcHksIGRjdHgt PnN0cmVuZ3RoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjdHgtPm1pbl9lbnRy b3B5LCBkY3R4LT5tYXhfZW50cm9weSk7CisrCisrICAgIGlmIChlbnRsZW4gPCBkY3R4LT5taW5f ZW50cm9weSB8fCBlbnRsZW4gPiBkY3R4LT5tYXhfZW50cm9weSkgeworKyAgICAgICAgciA9IEZJ UFNfUl9FUlJPUl9SRVRSSUVWSU5HX0VOVFJPUFk7CisrICAgICAgICBnb3RvIGVuZDsKKysgICAg fQorKworKyAgICBpZiAoIWRjdHgtPnJlc2VlZChkY3R4LCBlbnRyb3B5LCBlbnRsZW4sIGFkaW4s IGFkaW5sZW4pKQorKyAgICAgICAgZ290byBlbmQ7CisrCisrICAgIGRjdHgtPnN0YXR1cyA9IERS QkdfU1RBVFVTX1JFQURZOworKyAgICBpZiAoIShkY3R4LT5pZmxhZ3MgJiBEUkJHX0NVU1RPTV9S RVNFRUQpKQorKyAgICAgICAgZGN0eC0+cmVzZWVkX2NvdW50ZXIgPSAxOworKyBlbmQ6CisrCisr ICAgIGlmIChlbnRyb3B5ICYmIGRjdHgtPmNsZWFudXBfZW50cm9weSkKKysgICAgICAgIGZpcHNf Y2xlYW51cF9lbnRyb3B5KGRjdHgsIGVudHJvcHksIGVudGxlbik7CisrCisrICAgIGlmIChkY3R4 LT5zdGF0dXMgPT0gRFJCR19TVEFUVVNfUkVBRFkpCisrICAgICAgICByZXR1cm4gMTsKKysKKysg ICAgaWYgKHIgJiYgIShkY3R4LT5pZmxhZ3MgJiBEUkJHX0ZMQUdfTk9FUlIpKQorKyAgICAgICAg RklQU2VycihGSVBTX0ZfRFJCR19SRVNFRUQsIHIpOworKworKyAgICByZXR1cm4gMDsKKyt9Cisr CisraW50IEZJUFNfZHJiZ19yZXNlZWQoRFJCR19DVFggKmRjdHgsCisrICAgICAgICAgICAgICAg ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5sZW4pCisreworKyAg ICByZXR1cm4gZHJiZ19yZXNlZWQoZGN0eCwgYWRpbiwgYWRpbmxlbiwgMSk7CisrfQorKworK3N0 YXRpYyBpbnQgZmlwc19kcmJnX2NoZWNrKERSQkdfQ1RYICpkY3R4KQorK3sKKysgICAgaWYgKGRj dHgtPnhmbGFncyAmIERSQkdfRkxBR19URVNUKQorKyAgICAgICAgcmV0dXJuIDE7CisrICAgIGRj dHgtPmhlYWx0aF9jaGVja19jbnQrKzsKKysgICAgaWYgKGRjdHgtPmhlYWx0aF9jaGVja19jbnQg Pj0gZGN0eC0+aGVhbHRoX2NoZWNrX2ludGVydmFsKSB7CisrICAgICAgICBpZiAoIUZJUFNfZHJi Z19oZWFsdGhfY2hlY2soZGN0eCkpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBT X0RSQkdfQ0hFQ0ssIEZJUFNfUl9TRUxGVEVTVF9GQUlMVVJFKTsKKysgICAgICAgICAgICByZXR1 cm4gMDsKKysgICAgICAgIH0KKysgICAgfQorKyAgICByZXR1cm4gMTsKKyt9CisrCisraW50IEZJ UFNfZHJiZ19nZW5lcmF0ZShEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXpl X3Qgb3V0bGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHByZWRpY3Rpb25fcmVzaXN0 YW5jZSwKKysgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4s IHNpemVfdCBhZGlubGVuKQorK3sKKysgICAgaW50IHIgPSAwOworKworKyAgICBpZiAoRklQU19z ZWxmdGVzdF9mYWlsZWQoKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0dF TkVSQVRFLCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAgIHJldHVybiAwOworKyAg ICB9CisrCisrICAgIGlmICghZmlwc19kcmJnX2NoZWNrKGRjdHgpKQorKyAgICAgICAgcmV0dXJu IDA7CisrCisrICAgIGlmIChkY3R4LT5zdGF0dXMgIT0gRFJCR19TVEFUVVNfUkVBRFkKKysgICAg ICAgICYmIGRjdHgtPnN0YXR1cyAhPSBEUkJHX1NUQVRVU19SRVNFRUQpIHsKKysgICAgICAgIGlm IChkY3R4LT5zdGF0dXMgPT0gRFJCR19TVEFUVVNfRVJST1IpCisrICAgICAgICAgICAgciA9IEZJ UFNfUl9JTl9FUlJPUl9TVEFURTsKKysgICAgICAgIGVsc2UgaWYgKGRjdHgtPnN0YXR1cyA9PSBE UkJHX1NUQVRVU19VTklOSVRJQUxJU0VEKQorKyAgICAgICAgICAgIHIgPSBGSVBTX1JfTk9UX0lO U1RBTlRJQVRFRDsKKysgICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrCisrICAgIGlmIChvdXRs ZW4gPiBkY3R4LT5tYXhfcmVxdWVzdCkgeworKyAgICAgICAgciA9IEZJUFNfUl9SRVFVRVNUX1RP T19MQVJHRV9GT1JfRFJCRzsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICAgIGlm IChhZGlubGVuID4gZGN0eC0+bWF4X2FkaW4pIHsKKysgICAgICAgIHIgPSBGSVBTX1JfQURESVRJ T05BTF9JTlBVVF9UT09fTE9ORzsKKysgICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrCisrICAg IGlmIChkY3R4LT5pZmxhZ3MgJiBEUkJHX0NVU1RPTV9SRVNFRUQpCisrICAgICAgICBkY3R4LT5n ZW5lcmF0ZShkY3R4LCBOVUxMLCBvdXRsZW4sIE5VTEwsIDApOworKyAgICBlbHNlIGlmIChkY3R4 LT5yZXNlZWRfY291bnRlciA+PSBkY3R4LT5yZXNlZWRfaW50ZXJ2YWwpCisrICAgICAgICBkY3R4 LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19SRVNFRUQ7CisrCisrICAgIGlmIChkY3R4LT5zdGF0dXMg PT0gRFJCR19TVEFUVVNfUkVTRUVEIHx8IHByZWRpY3Rpb25fcmVzaXN0YW5jZSkgeworKyAgICAg ICAgLyogSWYgcHJlZGljdGlvbiByZXNpc3RhbmNlIHJlcXVlc3QgZG9uJ3QgZG8gaGVhbHRoIGNo ZWNrICovCisrICAgICAgICBpbnQgaGNoZWNrID0gcHJlZGljdGlvbl9yZXNpc3RhbmNlID8gMCA6 IDE7CisrCisrICAgICAgICBpZiAoIWRyYmdfcmVzZWVkKGRjdHgsIGFkaW4sIGFkaW5sZW4sIGhj aGVjaykpIHsKKysgICAgICAgICAgICByID0gRklQU19SX1JFU0VFRF9FUlJPUjsKKysgICAgICAg ICAgICBnb3RvIGVuZDsKKysgICAgICAgIH0KKysgICAgICAgIGFkaW4gPSBOVUxMOworKyAgICAg ICAgYWRpbmxlbiA9IDA7CisrICAgIH0KKysKKysgICAgaWYgKCFkY3R4LT5nZW5lcmF0ZShkY3R4 LCBvdXQsIG91dGxlbiwgYWRpbiwgYWRpbmxlbikpIHsKKysgICAgICAgIHIgPSBGSVBTX1JfR0VO RVJBVEVfRVJST1I7CisrICAgICAgICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19FUlJPUjsK KysgICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrICAgIGlmICghKGRjdHgtPmlmbGFncyAmIERS QkdfQ1VTVE9NX1JFU0VFRCkpIHsKKysgICAgICAgIGlmIChkY3R4LT5yZXNlZWRfY291bnRlciA+ PSBkY3R4LT5yZXNlZWRfaW50ZXJ2YWwpCisrICAgICAgICAgICAgZGN0eC0+c3RhdHVzID0gRFJC R19TVEFUVVNfUkVTRUVEOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGRjdHgtPnJlc2Vl ZF9jb3VudGVyKys7CisrICAgIH0KKysKKysgZW5kOgorKyAgICBpZiAocikgeworKyAgICAgICAg aWYgKCEoZGN0eC0+aWZsYWdzICYgRFJCR19GTEFHX05PRVJSKSkKKysgICAgICAgICAgICBGSVBT ZXJyKEZJUFNfRl9GSVBTX0RSQkdfR0VORVJBVEUsIHIpOworKyAgICAgICAgcmV0dXJuIDA7Cisr ICAgIH0KKysKKysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCBGSVBTX2RyYmdfdW5pbnN0YW50 aWF0ZShEUkJHX0NUWCAqZGN0eCkKKyt7CisrICAgIGludCBydjsKKysgICAgaWYgKCFkY3R4LT51 bmluc3RhbnRpYXRlKQorKyAgICAgICAgcnYgPSAxOworKyAgICBlbHNlCisrICAgICAgICBydiA9 IGRjdHgtPnVuaW5zdGFudGlhdGUoZGN0eCk7CisrICAgIC8qIEFsdGhvdWdoIHdlJ2QgbGlrZSB0 byBjbGVhbnNlIGhlcmUgd2UgY2FuJ3QgYmVjYXVzZSB3ZSBoYXZlIHRvCisrICAgICAqIHRlc3Qg dGhlIHVuaW5zdGFudGlhdGUgcmVhbGx5IHplcm9lcyB0aGUgZGF0YS4KKysgICAgICovCisrICAg IG1lbXNldCgmZGN0eC0+ZCwgMCwgc2l6ZW9mKGRjdHgtPmQpKTsKKysgICAgZGN0eC0+c3RhdHVz ID0gRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRDsKKysgICAgLyogSWYgbWV0aG9kIGhhcyBwcm9i bGVtcyB1bmluc3RhbnRpYXRpbmcsIHJldHVybiBlcnJvciAqLworKyAgICByZXR1cm4gcnY7Cisr fQorKworK2ludCBGSVBTX2RyYmdfc2V0X2NhbGxiYWNrcyhEUkJHX0NUWCAqZGN0eCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICgqZ2V0X2VudHJvcHkpIChEUkJHX0NUWCAq Y3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgKipwb3V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBlbnRyb3B5LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtaW5fbGVuLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtYXhfbGVuKSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmNsZWFudXBfZW50cm9weSkgKERS QkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2xlbiksCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCBlbnRyb3B5X2Jsb2NrbGVuLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QgKCpnZXRfbm9uY2UpIChEUkJHX0NUWCAqY3R4LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy ICoqcG91dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IGVudHJvcHksIHNpemVfdCBtaW5fbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4X2xlbiksCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZvaWQgKCpjbGVhbnVwX25vbmNlKSAoRFJCR19DVFggKmN0eCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBjaGFyICpvdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZV90IG9sZW4pKQorK3sKKysgICAgaWYgKGRjdHgtPnN0YXR1cyAhPSBEUkJH X1NUQVRVU19VTklOSVRJQUxJU0VEKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGRjdHgtPmVu dHJvcHlfYmxvY2tsZW4gPSBlbnRyb3B5X2Jsb2NrbGVuOworKyAgICBkY3R4LT5nZXRfZW50cm9w eSA9IGdldF9lbnRyb3B5OworKyAgICBkY3R4LT5jbGVhbnVwX2VudHJvcHkgPSBjbGVhbnVwX2Vu dHJvcHk7CisrICAgIGRjdHgtPmdldF9ub25jZSA9IGdldF9ub25jZTsKKysgICAgZGN0eC0+Y2xl YW51cF9ub25jZSA9IGNsZWFudXBfbm9uY2U7CisrICAgIHJldHVybiAxOworK30KKysKKytpbnQg RklQU19kcmJnX3NldF9yYW5kX2NhbGxiYWNrcyhEUkJHX0NUWCAqZGN0eCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKCpnZXRfYWRpbikgKERSQkdfQ1RYICpjdHgs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBjaGFyICoqcG91dCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dm9pZCAoKmNsZWFudXBfYWRpbikgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZV90IG9sZW4pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnJh bmRfc2VlZF9jYikgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnVmLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW0pLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnJhbmRfYWRkX2NiKSAoRFJCR19D VFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHZvaWQgKmJ1ZiwgaW50IG51bSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBlbnRyb3B5KSkKKyt7CisrICAg IGlmIChkY3R4LT5zdGF0dXMgIT0gRFJCR19TVEFUVVNfVU5JTklUSUFMSVNFRCkKKysgICAgICAg IHJldHVybiAwOworKyAgICBkY3R4LT5nZXRfYWRpbiA9IGdldF9hZGluOworKyAgICBkY3R4LT5j bGVhbnVwX2FkaW4gPSBjbGVhbnVwX2FkaW47CisrICAgIGRjdHgtPnJhbmRfc2VlZF9jYiA9IHJh bmRfc2VlZF9jYjsKKysgICAgZGN0eC0+cmFuZF9hZGRfY2IgPSByYW5kX2FkZF9jYjsKKysgICAg cmV0dXJuIDE7CisrfQorKworK3ZvaWQgKkZJUFNfZHJiZ19nZXRfYXBwX2RhdGEoRFJCR19DVFgg KmRjdHgpCisreworKyAgICByZXR1cm4gZGN0eC0+YXBwX2RhdGE7CisrfQorKworK3ZvaWQgRklQ U19kcmJnX3NldF9hcHBfZGF0YShEUkJHX0NUWCAqZGN0eCwgdm9pZCAqYXBwX2RhdGEpCisrewor KyAgICBkY3R4LT5hcHBfZGF0YSA9IGFwcF9kYXRhOworK30KKysKKytzaXplX3QgRklQU19kcmJn X2dldF9ibG9ja2xlbmd0aChEUkJHX0NUWCAqZGN0eCkKKyt7CisrICAgIHJldHVybiBkY3R4LT5i bG9ja2xlbmd0aDsKKyt9CisrCisraW50IEZJUFNfZHJiZ19nZXRfc3RyZW5ndGgoRFJCR19DVFgg KmRjdHgpCisreworKyAgICByZXR1cm4gZGN0eC0+c3RyZW5ndGg7CisrfQorKworK3ZvaWQgRklQ U19kcmJnX3NldF9jaGVja19pbnRlcnZhbChEUkJHX0NUWCAqZGN0eCwgaW50IGludGVydmFsKQor K3sKKysgICAgZGN0eC0+aGVhbHRoX2NoZWNrX2ludGVydmFsID0gaW50ZXJ2YWw7CisrfQorKwor K3ZvaWQgRklQU19kcmJnX3NldF9yZXNlZWRfaW50ZXJ2YWwoRFJCR19DVFggKmRjdHgsIGludCBp bnRlcnZhbCkKKyt7CisrICAgIGRjdHgtPnJlc2VlZF9pbnRlcnZhbCA9IGludGVydmFsOworK30K KysKKytzdGF0aWMgaW50IGRyYmdfc3RpY2sgPSAwOworKworK3ZvaWQgRklQU19kcmJnX3N0aWNr KGludCBvbm9mZikKKyt7CisrICAgIGRyYmdfc3RpY2sgPSBvbm9mZjsKKyt9CisrCisrLyogQ29u dGludW91cyBEUkJHIHV0aWxpdHkgZnVuY3Rpb24gKi8KKytpbnQgZmlwc19kcmJnX2Nwcm5nX3Rl c3QoRFJCR19DVFggKmRjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm91dCkKKyt7CisrICAgIC8q IE5vIENQUk5HIGluIHRlc3QgbW9kZSAqLworKyAgICBpZiAoZGN0eC0+eGZsYWdzICYgRFJCR19G TEFHX1RFU1QpCisrICAgICAgICByZXR1cm4gMTsKKysgICAgLyogQ2hlY2sgYmxvY2sgaXMgdmFs aWQ6IHNob3VsZCBuZXZlciBoYXBwZW4gKi8KKysgICAgaWYgKGRjdHgtPmxiX3ZhbGlkID09IDAp IHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19DUFJOR19URVNULCBGSVBTX1Jf SU5URVJOQUxfRVJST1IpOworKyAgICAgICAgZmlwc19zZXRfc2VsZnRlc3RfZmFpbCgpOworKyAg ICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgaWYgKGRyYmdfc3RpY2spCisrICAgICAgICBt ZW1jcHkoZGN0eC0+bGIsIG91dCwgZGN0eC0+YmxvY2tsZW5ndGgpOworKyAgICAvKiBDaGVjayBh Z2FpbnN0IGxhc3QgYmxvY2s6IGZhaWwgaWYgbWF0Y2ggKi8KKysgICAgaWYgKCFtZW1jbXAoZGN0 eC0+bGIsIG91dCwgZGN0eC0+YmxvY2tsZW5ndGgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNf Rl9GSVBTX0RSQkdfQ1BSTkdfVEVTVCwgRklQU19SX0RSQkdfU1RVQ0spOworKyAgICAgICAgZmlw c19zZXRfc2VsZnRlc3RfZmFpbCgpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAg LyogU2F2ZSBsYXN0IGJsb2NrIGZvciBuZXh0IGNvbXBhcmlzb24gKi8KKysgICAgbWVtY3B5KGRj dHgtPmxiLCBvdXQsIGRjdHgtPmJsb2NrbGVuZ3RoKTsKKysgICAgcmV0dXJuIDE7CisrfQorZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX3JhbmQuYy5maXBzIG9w ZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19yYW5kLmMKKy0tLSBvcGVuc3NsLTEu MC4yYy9jcnlwdG8vZmlwcy9maXBzX2RyYmdfcmFuZC5jLmZpcHMJMjAxNS0wNi0xNSAxNzozMDow MC4wMDcyODM5NTkgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2Ry YmdfcmFuZC5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDA3MjgzOTU5ICswMjAwCitAQCAtMCwwICsx LDE2NiBAQAorKy8qIGZpcHMvcmFuZC9maXBzX2RyYmdfcmFuZC5jICovCisrLyogV3JpdHRlbiBi eSBEciBTdGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NM CisrICogcHJvamVjdC4KKysgKi8KKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykg MjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAq IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0 IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo dAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAq ICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0 aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcg bWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0 d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3 dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQi IGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3Jz ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQK KysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24s IHBsZWFzZSBjb250YWN0CisrICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgorKyAqCisrICog NS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQg Ik9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVz IHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wg UHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29l dmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysg KiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3Bl blNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRw Oi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF CisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwg RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICog Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdB WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBP RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKi8K KysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+Cisr I2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgorKyNp bmNsdWRlIDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgorKyNpbmNsdWRlICJmaXBzX3JhbmRfbGNsLmgi CisrCisrLyogTWFwcGluZyBvZiBTUDgwMC05MCBEUkJHcyB0byBPcGVuU1NMIFJBTkRfTUVUSE9E ICovCisrCisrLyogU2luY2Ugd2Ugb25seSBoYXZlIG9uZSBnbG9iYWwgUFJORyB1c2VkIGF0IGFu eSB0aW1lIGluIE9wZW5TU0wgdXNlIGEgZ2xvYmFsCisrICogdmFyaWFibGUgdG8gc3RvcmUgY29u dGV4dC4KKysgKi8KKysKKytzdGF0aWMgRFJCR19DVFggb3NzbF9kY3R4OworKworK0RSQkdfQ1RY ICpGSVBTX2dldF9kZWZhdWx0X2RyYmcodm9pZCkKKyt7CisrICAgIHJldHVybiAmb3NzbF9kY3R4 OworK30KKysKKytzdGF0aWMgaW50IGZpcHNfZHJiZ19ieXRlcyh1bnNpZ25lZCBjaGFyICpvdXQs IGludCBjb3VudCkKKyt7CisrICAgIERSQkdfQ1RYICpkY3R4ID0gJm9zc2xfZGN0eDsKKysgICAg aW50IHJ2ID0gMDsKKysgICAgdW5zaWduZWQgY2hhciAqYWRpbiA9IE5VTEw7CisrICAgIHNpemVf dCBhZGlubGVuID0gMDsKKysgICAgQ1JZUFRPX3dfbG9jayhDUllQVE9fTE9DS19SQU5EKTsKKysg ICAgZG8geworKyAgICAgICAgc2l6ZV90IHJjbnQ7CisrICAgICAgICBpZiAoY291bnQgPiAoaW50 KWRjdHgtPm1heF9yZXF1ZXN0KQorKyAgICAgICAgICAgIHJjbnQgPSBkY3R4LT5tYXhfcmVxdWVz dDsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICByY250ID0gY291bnQ7CisrICAgICAgICBp ZiAoZGN0eC0+Z2V0X2FkaW4pIHsKKysgICAgICAgICAgICBhZGlubGVuID0gZGN0eC0+Z2V0X2Fk aW4oZGN0eCwgJmFkaW4pOworKyAgICAgICAgICAgIGlmIChhZGlubGVuICYmICFhZGluKSB7Cisr ICAgICAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19CWVRFUywKKysgICAgICAg ICAgICAgICAgICAgICAgICBGSVBTX1JfRVJST1JfUkVUUklFVklOR19BRERJVElPTkFMX0lOUFVU KTsKKysgICAgICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICAgICAgfQorKyAgICAgICAg fQorKyAgICAgICAgcnYgPSBGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgb3V0LCByY250LCAwLCBh ZGluLCBhZGlubGVuKTsKKysgICAgICAgIGlmIChhZGluKSB7CisrICAgICAgICAgICAgaWYgKGRj dHgtPmNsZWFudXBfYWRpbikKKysgICAgICAgICAgICAgICAgZGN0eC0+Y2xlYW51cF9hZGluKGRj dHgsIGFkaW4sIGFkaW5sZW4pOworKyAgICAgICAgICAgIGFkaW4gPSBOVUxMOworKyAgICAgICAg fQorKyAgICAgICAgaWYgKCFydikKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIG91 dCArPSByY250OworKyAgICAgICAgY291bnQgLT0gcmNudDsKKysgICAgfQorKyAgICB3aGlsZSAo Y291bnQpOworKyAgICBydiA9IDE7CisrIGVycjoKKysgICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBU T19MT0NLX1JBTkQpOworKyAgICByZXR1cm4gcnY7CisrfQorKworK3N0YXRpYyBpbnQgZmlwc19k cmJnX3BzZXVkbyh1bnNpZ25lZCBjaGFyICpvdXQsIGludCBjb3VudCkKKyt7CisrICAgIGlmIChm aXBzX2RyYmdfYnl0ZXMob3V0LCBjb3VudCkgPD0gMCkKKysgICAgICAgIHJldHVybiAtMTsKKysg ICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQgZmlwc19kcmJnX3N0YXR1cyh2b2lkKQor K3sKKysgICAgRFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4OworKyAgICBpbnQgcnY7CisrICAg IENSWVBUT19yX2xvY2soQ1JZUFRPX0xPQ0tfUkFORCk7CisrICAgIHJ2ID0gZGN0eC0+c3RhdHVz ID09IERSQkdfU1RBVFVTX1JFQURZID8gMSA6IDA7CisrICAgIENSWVBUT19yX3VubG9jayhDUllQ VE9fTE9DS19SQU5EKTsKKysgICAgcmV0dXJuIHJ2OworK30KKysKKytzdGF0aWMgdm9pZCBmaXBz X2RyYmdfY2xlYW51cCh2b2lkKQorK3sKKysgICAgRFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4 OworKyAgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX1JBTkQpOworKyAgICBGSVBTX2RyYmdf dW5pbnN0YW50aWF0ZShkY3R4KTsKKysgICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX1JB TkQpOworK30KKysKKytzdGF0aWMgaW50IGZpcHNfZHJiZ19zZWVkKGNvbnN0IHZvaWQgKnNlZWQs IGludCBzZWVkbGVuKQorK3sKKysgICAgRFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4OworKyAg ICBpZiAoZGN0eC0+cmFuZF9zZWVkX2NiKQorKyAgICAgICAgcmV0dXJuIGRjdHgtPnJhbmRfc2Vl ZF9jYihkY3R4LCBzZWVkLCBzZWVkbGVuKTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRp YyBpbnQgZmlwc19kcmJnX2FkZChjb25zdCB2b2lkICpzZWVkLCBpbnQgc2VlZGxlbiwgZG91Ymxl IGFkZF9lbnRyb3B5KQorK3sKKysgICAgRFJCR19DVFggKmRjdHggPSAmb3NzbF9kY3R4OworKyAg ICBpZiAoZGN0eC0+cmFuZF9hZGRfY2IpCisrICAgICAgICByZXR1cm4gZGN0eC0+cmFuZF9hZGRf Y2IoZGN0eCwgc2VlZCwgc2VlZGxlbiwgYWRkX2VudHJvcHkpOworKyAgICByZXR1cm4gMTsKKyt9 CisrCisrc3RhdGljIGNvbnN0IFJBTkRfTUVUSE9EIHJhbmRfZHJiZ19tZXRoID0geworKyAgICBm aXBzX2RyYmdfc2VlZCwKKysgICAgZmlwc19kcmJnX2J5dGVzLAorKyAgICBmaXBzX2RyYmdfY2xl YW51cCwKKysgICAgZmlwc19kcmJnX2FkZCwKKysgICAgZmlwc19kcmJnX3BzZXVkbywKKysgICAg Zmlwc19kcmJnX3N0YXR1cworK307CisrCisrY29uc3QgUkFORF9NRVRIT0QgKkZJUFNfZHJiZ19t ZXRob2Qodm9pZCkKKyt7CisrICAgIHJldHVybiAmcmFuZF9kcmJnX21ldGg7CisrfQorZGlmZiAt dXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX3NlbGZ0ZXN0LmMuZmlwcyBv cGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2RyYmdfc2VsZnRlc3QuYworLS0tIG9wZW5z c2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5jLmZpcHMJMjAxNS0wNi0x NSAxNzozMDowMC4wMDcyODM5NTkgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlw cy9maXBzX2RyYmdfc2VsZnRlc3QuYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAwNzI4Mzk1OSArMDIw MAorQEAgLTAsMCArMSw4MjcgQEAKKysvKiBmaXBzL3JhbmQvZmlwc19kcmJnX3NlbGZ0ZXN0LmMg Ki8KKysvKiBXcml0dGVuIGJ5IERyIFN0ZXBoZW4gTiBIZW5zb24gKHN0ZXZlQG9wZW5zc2wub3Jn KSBmb3IgdGhlIE9wZW5TU0wKKysgKiBwcm9qZWN0LgorKyAqLworKy8qID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisr ICogQ29weXJpZ2h0IChjKSAyMDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJl c2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0 dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoK KysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0 aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0 aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisr ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMu IEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2Yg dGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xl ZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVk IGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRv b2xraXQuIChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMg Ik9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQg dG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdy aXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBsaWNlbnNpbmdAT3BlblNT TC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBt YXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBl YXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lv biBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9m IGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFj a25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2 ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVu U1NMIFRvb2xraXQgKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09G VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFO WQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJ TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBD T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB TCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D TFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU RSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElB QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICog QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g SUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorKyAqLworKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8b3Bl bnNzbC9jcnlwdG8uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3Bl bnNzbC9maXBzX3JhbmQuaD4KKysjaW5jbHVkZSAiZmlwc19yYW5kX2xjbC5oIgorKyNpbmNsdWRl ICJmaXBzX2xvY2wuaCIKKysKKysjaW5jbHVkZSAiZmlwc19kcmJnX3NlbGZ0ZXN0LmgiCisrCisr dHlwZWRlZiBzdHJ1Y3QgeworKyAgICBpbnQgcG9zdDsKKysgICAgaW50IG5pZDsKKysgICAgdW5z aWduZWQgaW50IGZsYWdzOworKworKyAgICAvKiBLQVQgZGF0YSBmb3Igbm8gUFIgKi8KKysgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqZW50OworKyAgICBzaXplX3QgZW50bGVuOworKyAgICBjb25z dCB1bnNpZ25lZCBjaGFyICpub25jZTsKKysgICAgc2l6ZV90IG5vbmNlbGVuOworKyAgICBjb25z dCB1bnNpZ25lZCBjaGFyICpwZXJzOworKyAgICBzaXplX3QgcGVyc2xlbjsKKysgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqYWRpbjsKKysgICAgc2l6ZV90IGFkaW5sZW47CisrICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKmVudHJlc2VlZDsKKysgICAgc2l6ZV90IGVudHJlc2VlZGxlbjsKKysgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqYWRpbnJlc2VlZDsKKysgICAgc2l6ZV90IGFkaW5yZXNlZWRs ZW47CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4yOworKyAgICBzaXplX3QgYWRpbjJs ZW47CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmthdDsKKysgICAgc2l6ZV90IGthdGxlbjsK KysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2F0MjsKKysgICAgc2l6ZV90IGthdDJsZW47Cisr CisrICAgIC8qIEtBVCBkYXRhIGZvciBQUiAqLworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpl bnRfcHI7CisrICAgIHNpemVfdCBlbnRsZW5fcHI7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg Km5vbmNlX3ByOworKyAgICBzaXplX3Qgbm9uY2VsZW5fcHI7CisrICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKnBlcnNfcHI7CisrICAgIHNpemVfdCBwZXJzbGVuX3ByOworKyAgICBjb25zdCB1bnNp Z25lZCBjaGFyICphZGluX3ByOworKyAgICBzaXplX3QgYWRpbmxlbl9wcjsKKysgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqZW50cHJfcHI7CisrICAgIHNpemVfdCBlbnRwcmxlbl9wcjsKKysgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqYWRpbmdfcHI7CisrICAgIHNpemVfdCBhZGluZ2xlbl9wcjsK KysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50Z19wcjsKKysgICAgc2l6ZV90IGVudGdsZW5f cHI7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmthdF9wcjsKKysgICAgc2l6ZV90IGthdGxl bl9wcjsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2F0Ml9wcjsKKysgICAgc2l6ZV90IGth dDJsZW5fcHI7CisrCisrfSBEUkJHX1NFTEZURVNUX0RBVEE7CisrCisrI2RlZmluZSBtYWtlX2Ry YmdfdGVzdF9kYXRhKG5pZCwgZmxhZywgcHIsIHApIHtwLCBuaWQsIGZsYWcgfCBEUkJHX0ZMQUdf VEVTVCwgXAorKyAgICAgICAgcHIjI19lbnRyb3B5aW5wdXQsIHNpemVvZihwciMjX2VudHJvcHlp bnB1dCksIFwKKysgICAgICAgIHByIyNfbm9uY2UsIHNpemVvZihwciMjX25vbmNlKSwgXAorKyAg ICAgICAgcHIjI19wZXJzb25hbGl6YXRpb25zdHJpbmcsIHNpemVvZihwciMjX3BlcnNvbmFsaXph dGlvbnN0cmluZyksIFwKKysgICAgICAgIHByIyNfYWRkaXRpb25hbGlucHV0LCBzaXplb2YocHIj I19hZGRpdGlvbmFsaW5wdXQpLCBcCisrICAgICAgICBwciMjX2VudHJvcHlpbnB1dHJlc2VlZCwg c2l6ZW9mKHByIyNfZW50cm9weWlucHV0cmVzZWVkKSwgXAorKyAgICAgICAgcHIjI19hZGRpdGlv bmFsaW5wdXRyZXNlZWQsIHNpemVvZihwciMjX2FkZGl0aW9uYWxpbnB1dHJlc2VlZCksIFwKKysg ICAgICAgIHByIyNfYWRkaXRpb25hbGlucHV0Miwgc2l6ZW9mKHByIyNfYWRkaXRpb25hbGlucHV0 MiksIFwKKysgICAgICAgIHByIyNfaW50X3JldHVybmVkYml0cywgc2l6ZW9mKHByIyNfaW50X3Jl dHVybmVkYml0cyksIFwKKysgICAgICAgIHByIyNfcmV0dXJuZWRiaXRzLCBzaXplb2YocHIjI19y ZXR1cm5lZGJpdHMpLCBcCisrICAgICAgICBwciMjX3ByX2VudHJvcHlpbnB1dCwgc2l6ZW9mKHBy IyNfcHJfZW50cm9weWlucHV0KSwgXAorKyAgICAgICAgcHIjI19wcl9ub25jZSwgc2l6ZW9mKHBy IyNfcHJfbm9uY2UpLCBcCisrICAgICAgICBwciMjX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZywg c2l6ZW9mKHByIyNfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nKSwgXAorKyAgICAgICAgcHIjI19w cl9hZGRpdGlvbmFsaW5wdXQsIHNpemVvZihwciMjX3ByX2FkZGl0aW9uYWxpbnB1dCksIFwKKysg ICAgICAgIHByIyNfcHJfZW50cm9weWlucHV0cHIsIHNpemVvZihwciMjX3ByX2VudHJvcHlpbnB1 dHByKSwgXAorKyAgICAgICAgcHIjI19wcl9hZGRpdGlvbmFsaW5wdXQyLCBzaXplb2YocHIjI19w cl9hZGRpdGlvbmFsaW5wdXQyKSwgXAorKyAgICAgICAgcHIjI19wcl9lbnRyb3B5aW5wdXRwcjIs IHNpemVvZihwciMjX3ByX2VudHJvcHlpbnB1dHByMiksIFwKKysgICAgICAgIHByIyNfcHJfaW50 X3JldHVybmVkYml0cywgc2l6ZW9mKHByIyNfcHJfaW50X3JldHVybmVkYml0cyksIFwKKysgICAg ICAgIHByIyNfcHJfcmV0dXJuZWRiaXRzLCBzaXplb2YocHIjI19wcl9yZXR1cm5lZGJpdHMpLCBc CisrICAgICAgICB9CisrCisrI2RlZmluZSBtYWtlX2RyYmdfdGVzdF9kYXRhX2RmKG5pZCwgcHIs IHApIFwKKysgICAgICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEobmlkLCBEUkJHX0ZMQUdfQ1RSX1VT RV9ERiwgcHIsIHApCisrCisrI2RlZmluZSBtYWtlX2RyYmdfdGVzdF9kYXRhX2VjKGN1cnZlLCBt ZCwgcHIsIHApIFwKKysgICAgICAgIG1ha2VfZHJiZ190ZXN0X2RhdGEoKGN1cnZlIDw8IDE2KSB8 IG1kICwgMCwgcHIsIHApCisrCisrc3RhdGljIERSQkdfU0VMRlRFU1RfREFUQSBkcmJnX3Rlc3Rb XSA9IHsKKysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YV9kZihOSURfYWVzXzEyOF9jdHIsIGFlc18x MjhfdXNlX2RmLCAwKSwKKysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YV9kZihOSURfYWVzXzE5Ml9j dHIsIGFlc18xOTJfdXNlX2RmLCAwKSwKKysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YV9kZihOSURf YWVzXzI1Nl9jdHIsIGFlc18yNTZfdXNlX2RmLCAxKSwKKysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0 YShOSURfYWVzXzEyOF9jdHIsIDAsIGFlc18xMjhfbm9fZGYsIDApLAorKyAgICBtYWtlX2RyYmdf dGVzdF9kYXRhKE5JRF9hZXNfMTkyX2N0ciwgMCwgYWVzXzE5Ml9ub19kZiwgMCksCisrICAgIG1h a2VfZHJiZ190ZXN0X2RhdGEoTklEX2Flc18yNTZfY3RyLCAwLCBhZXNfMjU2X25vX2RmLCAxKSwK KysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0YShOSURfc2hhMSwgMCwgc2hhMSwgMCksCisrICAgIG1h a2VfZHJiZ190ZXN0X2RhdGEoTklEX3NoYTIyNCwgMCwgc2hhMjI0LCAwKSwKKysgICAgbWFrZV9k cmJnX3Rlc3RfZGF0YShOSURfc2hhMjU2LCAwLCBzaGEyNTYsIDEpLAorKyAgICBtYWtlX2RyYmdf dGVzdF9kYXRhKE5JRF9zaGEzODQsIDAsIHNoYTM4NCwgMCksCisrICAgIG1ha2VfZHJiZ190ZXN0 X2RhdGEoTklEX3NoYTUxMiwgMCwgc2hhNTEyLCAwKSwKKysgICAgbWFrZV9kcmJnX3Rlc3RfZGF0 YShOSURfaG1hY1dpdGhTSEExLCAwLCBobWFjX3NoYTEsIDApLAorKyAgICBtYWtlX2RyYmdfdGVz dF9kYXRhKE5JRF9obWFjV2l0aFNIQTIyNCwgMCwgaG1hY19zaGEyMjQsIDApLAorKyAgICBtYWtl X2RyYmdfdGVzdF9kYXRhKE5JRF9obWFjV2l0aFNIQTI1NiwgMCwgaG1hY19zaGEyNTYsIDEpLAor KyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9obWFjV2l0aFNIQTM4NCwgMCwgaG1hY19zaGEz ODQsIDApLAorKyAgICBtYWtlX2RyYmdfdGVzdF9kYXRhKE5JRF9obWFjV2l0aFNIQTUxMiwgMCwg aG1hY19zaGE1MTIsIDApLAorKyAgICB7MCwgMCwgMH0KKyt9OworKworK3R5cGVkZWYgc3RydWN0 IHsKKysgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW50OworKyAgICBzaXplX3QgZW50bGVuOwor KyAgICBpbnQgZW50Y250OworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpub25jZTsKKysgICAg c2l6ZV90IG5vbmNlbGVuOworKyAgICBpbnQgbm9uY2VjbnQ7CisrfSBURVNUX0VOVDsKKysKKytz dGF0aWMgc2l6ZV90IHRlc3RfZW50cm9weShEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAq KnBvdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVudHJvcHksIHNpemVfdCBt aW5fbGVuLCBzaXplX3QgbWF4X2xlbikKKyt7CisrICAgIFRFU1RfRU5UICp0ID0gRklQU19kcmJn X2dldF9hcHBfZGF0YShkY3R4KTsKKysgICAgKnBvdXQgPSAodW5zaWduZWQgY2hhciAqKXQtPmVu dDsKKysgICAgdC0+ZW50Y250Kys7CisrICAgIHJldHVybiB0LT5lbnRsZW47CisrfQorKworK3N0 YXRpYyBzaXplX3QgdGVzdF9ub25jZShEUkJHX0NUWCAqZGN0eCwgdW5zaWduZWQgY2hhciAqKnBv dXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbnRyb3B5LCBzaXplX3QgbWluX2xl biwgc2l6ZV90IG1heF9sZW4pCisreworKyAgICBURVNUX0VOVCAqdCA9IEZJUFNfZHJiZ19nZXRf YXBwX2RhdGEoZGN0eCk7CisrICAgICpwb3V0ID0gKHVuc2lnbmVkIGNoYXIgKil0LT5ub25jZTsK KysgICAgdC0+bm9uY2VjbnQrKzsKKysgICAgcmV0dXJuIHQtPm5vbmNlbGVuOworK30KKysKKytz dGF0aWMgaW50IGZpcHNfZHJiZ19zaW5nbGVfa2F0KERSQkdfQ1RYICpkY3R4LCBEUkJHX1NFTEZU RVNUX0RBVEEgKiB0ZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBxdWlj aykKKyt7CisrICAgIFRFU1RfRU5UIHQ7CisrICAgIGludCBydiA9IDA7CisrICAgIHNpemVfdCBh ZGlubGVuOworKyAgICB1bnNpZ25lZCBjaGFyIHJhbmRvdXRbMTAyNF07CisrCisrICAgIC8qIElu aXRpYWwgdGVzdCB3aXRob3V0IFBSICovCisrCisrICAgIC8qIEluc3RhbnRpYXRlIERSQkcgd2l0 aCB0ZXN0IGVudHJvcHksIG5vbmNlIGFuZCBwZXJzb25hbGlzYXRpb24KKysgICAgICogc3RyaW5n LgorKyAgICAgKi8KKysKKysgICAgaWYgKCFGSVBTX2RyYmdfaW5pdChkY3R4LCB0ZC0+bmlkLCB0 ZC0+ZmxhZ3MpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmICghRklQU19kcmJnX3NldF9j YWxsYmFja3MoZGN0eCwgdGVzdF9lbnRyb3B5LCAwLCAwLCB0ZXN0X25vbmNlLCAwKSkKKysgICAg ICAgIHJldHVybiAwOworKworKyAgICBGSVBTX2RyYmdfc2V0X2FwcF9kYXRhKGRjdHgsICZ0KTsK KysKKysgICAgdC5lbnQgPSB0ZC0+ZW50OworKyAgICB0LmVudGxlbiA9IHRkLT5lbnRsZW47Cisr ICAgIHQubm9uY2UgPSB0ZC0+bm9uY2U7CisrICAgIHQubm9uY2VsZW4gPSB0ZC0+bm9uY2VsZW47 CisrICAgIHQuZW50Y250ID0gMDsKKysgICAgdC5ub25jZWNudCA9IDA7CisrCisrICAgIGlmICgh RklQU19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikpCisrICAg ICAgICBnb3RvIGVycjsKKysKKysgICAgLyogTm90ZSBmb3IgQ1RSIHdpdGhvdXQgREYgc29tZSBh ZGRpdGlvbmFsIGlucHV0IHZhbHVlcworKyAgICAgKiBpZ25vcmUgYnl0ZXMgYWZ0ZXIgdGhlIGtl eWxlbmd0aDogc28gcmVkdWNlIGFkaW5sZW4KKysgICAgICogdG8gaGFsZiB0byBlbnN1cmUgaW52 YWxpZCBkYXRhIGlzIGZlZCBpbi4KKysgICAgICovCisrICAgIGlmICghZmlwc19wb3N0X2NvcnJ1 cHQoRklQU19URVNUX0RSQkcsIGRjdHgtPnR5cGUsICZkY3R4LT5pZmxhZ3MpKQorKyAgICAgICAg YWRpbmxlbiA9IHRkLT5hZGlubGVuIC8gMjsKKysgICAgZWxzZQorKyAgICAgICAgYWRpbmxlbiA9 IHRkLT5hZGlubGVuOworKworKyAgICAvKiBHZW5lcmF0ZSB3aXRoIG5vIFBSIGFuZCB2ZXJpZnkg b3V0cHV0IG1hdGNoZXMgZXhwZWN0ZWQgZGF0YSAqLworKyAgICBpZiAoIUZJUFNfZHJiZ19nZW5l cmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAwLCB0ZC0+YWRpbiwgYWRpbmxlbikpCisr ICAgICAgICBnb3RvIGVycjsKKysKKysgICAgaWYgKG1lbWNtcChyYW5kb3V0LCB0ZC0+a2F0LCB0 ZC0+a2F0bGVuKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX1NJTkdMRV9L QVQsIEZJUFNfUl9OT1BSX1RFU1QxX0ZBSUxVUkUpOworKyAgICAgICAgZ290byBlcnIyOworKyAg ICB9CisrICAgIC8qIElmIGFiYnJldmlhdGVkIFBPU1QgZW5kIG9mIHRlc3QgKi8KKysgICAgaWYg KHF1aWNrKSB7CisrICAgICAgICBydiA9IDE7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQor KyAgICAvKiBSZXNlZWQgRFJCRyB3aXRoIHRlc3QgZW50cm9weSBhbmQgYWRkaXRpb25hbCBpbnB1 dCAqLworKyAgICB0LmVudCA9IHRkLT5lbnRyZXNlZWQ7CisrICAgIHQuZW50bGVuID0gdGQtPmVu dHJlc2VlZGxlbjsKKysKKysgICAgaWYgKCFGSVBTX2RyYmdfcmVzZWVkKGRjdHgsIHRkLT5hZGlu cmVzZWVkLCB0ZC0+YWRpbnJlc2VlZGxlbikpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAg LyogR2VuZXJhdGUgd2l0aCBubyBQUiBhbmQgdmVyaWZ5IG91dHB1dCBtYXRjaGVzIGV4cGVjdGVk IGRhdGEgKi8KKysgICAgaWYgKCFGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQt PmthdDJsZW4sIDAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGluMiwgdGQt PmFkaW4ybGVuKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBpZiAobWVtY21wKHJhbmRv dXQsIHRkLT5rYXQyLCB0ZC0+a2F0MmxlbikpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfRFJCR19TSU5HTEVfS0FULCBGSVBTX1JfTk9QUl9URVNUMl9GQUlMVVJFKTsKKysgICAgICAg IGdvdG8gZXJyMjsKKysgICAgfQorKworKyAgICBGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4 KTsKKysKKysgICAgLyogTm93IHRlc3Qgd2l0aCBQUiAqLworKworKyAgICAvKiBJbnN0YW50aWF0 ZSBEUkJHIHdpdGggdGVzdCBlbnRyb3B5LCBub25jZSBhbmQgcGVyc29uYWxpc2F0aW9uCisrICAg ICAqIHN0cmluZy4KKysgICAgICovCisrICAgIGlmICghRklQU19kcmJnX2luaXQoZGN0eCwgdGQt Pm5pZCwgdGQtPmZsYWdzKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAoIUZJUFNfZHJi Z19zZXRfY2FsbGJhY2tzKGRjdHgsIHRlc3RfZW50cm9weSwgMCwgMCwgdGVzdF9ub25jZSwgMCkp CisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgRklQU19kcmJnX3NldF9hcHBfZGF0YShkY3R4 LCAmdCk7CisrCisrICAgIHQuZW50ID0gdGQtPmVudF9wcjsKKysgICAgdC5lbnRsZW4gPSB0ZC0+ ZW50bGVuX3ByOworKyAgICB0Lm5vbmNlID0gdGQtPm5vbmNlX3ByOworKyAgICB0Lm5vbmNlbGVu ID0gdGQtPm5vbmNlbGVuX3ByOworKyAgICB0LmVudGNudCA9IDA7CisrICAgIHQubm9uY2VjbnQg PSAwOworKworKyAgICBpZiAoIUZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVyc19w ciwgdGQtPnBlcnNsZW5fcHIpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIC8qIE5vdyBn ZW5lcmF0ZSB3aXRoIFBSOiB3ZSBuZWVkIHRvIHN1cHBseSBlbnRyb3B5IGFzIHRoaXMgd2lsbAor KyAgICAgKiBwZXJmb3JtIGEgcmVzZWVkIG9wZXJhdGlvbi4gQ2hlY2sgb3V0cHV0IG1hdGNoZXMg ZXhwZWN0ZWQgdmFsdWUuCisrICAgICAqLworKworKyAgICB0LmVudCA9IHRkLT5lbnRwcl9wcjsK KysgICAgdC5lbnRsZW4gPSB0ZC0+ZW50cHJsZW5fcHI7CisrCisrICAgIC8qIE5vdGUgZm9yIENU UiB3aXRob3V0IERGIHNvbWUgYWRkaXRpb25hbCBpbnB1dCB2YWx1ZXMKKysgICAgICogaWdub3Jl IGJ5dGVzIGFmdGVyIHRoZSBrZXlsZW5ndGg6IHNvIHJlZHVjZSBhZGlubGVuCisrICAgICAqIHRv IGhhbGYgdG8gZW5zdXJlIGludmFsaWQgZGF0YSBpcyBmZWQgaW4uCisrICAgICAqLworKyAgICBp ZiAoIWZpcHNfcG9zdF9jb3JydXB0KEZJUFNfVEVTVF9EUkJHLCBkY3R4LT50eXBlLCAmZGN0eC0+ aWZsYWdzKSkKKysgICAgICAgIGFkaW5sZW4gPSB0ZC0+YWRpbmxlbl9wciAvIDI7CisrICAgIGVs c2UKKysgICAgICAgIGFkaW5sZW4gPSB0ZC0+YWRpbmxlbl9wcjsKKysgICAgaWYgKCFGSVBTX2Ry YmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbl9wciwgMSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGQtPmFkaW5fcHIsIGFkaW5sZW4pKQorKyAgICAgICAgZ290byBl cnI7CisrCisrICAgIGlmIChtZW1jbXAocmFuZG91dCwgdGQtPmthdF9wciwgdGQtPmthdGxlbl9w cikpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19TSU5HTEVfS0FULCBGSVBT X1JfUFJfVEVTVDFfRkFJTFVSRSk7CisrICAgICAgICBnb3RvIGVycjI7CisrICAgIH0KKysKKysg ICAgLyogTm93IGdlbmVyYXRlIGFnYWluIHdpdGggUFI6IHN1cHBseSBuZXcgZW50cm9weSBhZ2Fp bi4KKysgICAgICogQ2hlY2sgb3V0cHV0IG1hdGNoZXMgZXhwZWN0ZWQgdmFsdWUuCisrICAgICAq LworKworKyAgICB0LmVudCA9IHRkLT5lbnRnX3ByOworKyAgICB0LmVudGxlbiA9IHRkLT5lbnRn bGVuX3ByOworKworKyAgICBpZiAoIUZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0 ZC0+a2F0Mmxlbl9wciwgMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQtPmFkaW5n X3ByLCB0ZC0+YWRpbmdsZW5fcHIpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIGlmICht ZW1jbXAocmFuZG91dCwgdGQtPmthdDJfcHIsIHRkLT5rYXQybGVuX3ByKSkgeworKyAgICAgICAg RklQU2VycihGSVBTX0ZfRklQU19EUkJHX1NJTkdMRV9LQVQsIEZJUFNfUl9QUl9URVNUMl9GQUlM VVJFKTsKKysgICAgICAgIGdvdG8gZXJyMjsKKysgICAgfQorKyAgICAvKiBBbGwgT0ssIHRlc3Qg Y29tcGxldGUgKi8KKysgICAgcnYgPSAxOworKworKyBlcnI6CisrICAgIGlmIChydiA9PSAwKQor KyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX1NJTkdMRV9LQVQsIEZJUFNfUl9TRUxG VEVTVF9GQUlMRUQpOworKyBlcnIyOgorKyAgICBGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4 KTsKKysKKysgICAgcmV0dXJuIHJ2OworKworK30KKysKKysvKiBJbml0aWFsaXNlIGEgRFJCRyBi YXNlZCBvbiBzZWxmdGVzdCBkYXRhICovCisrCisrc3RhdGljIGludCBkb19kcmJnX2luaXQoRFJC R19DVFggKmRjdHgsIERSQkdfU0VMRlRFU1RfREFUQSAqIHRkLCBURVNUX0VOVCAqIHQpCisrewor KworKyAgICBpZiAoIUZJUFNfZHJiZ19pbml0KGRjdHgsIHRkLT5uaWQsIHRkLT5mbGFncykpCisr ICAgICAgICByZXR1cm4gMDsKKysKKysgICAgaWYgKCFGSVBTX2RyYmdfc2V0X2NhbGxiYWNrcyhk Y3R4LCB0ZXN0X2VudHJvcHksIDAsIDAsIHRlc3Rfbm9uY2UsIDApKQorKyAgICAgICAgcmV0dXJu IDA7CisrCisrICAgIEZJUFNfZHJiZ19zZXRfYXBwX2RhdGEoZGN0eCwgdCk7CisrCisrICAgIHQt PmVudCA9IHRkLT5lbnQ7CisrICAgIHQtPmVudGxlbiA9IHRkLT5lbnRsZW47CisrICAgIHQtPm5v bmNlID0gdGQtPm5vbmNlOworKyAgICB0LT5ub25jZWxlbiA9IHRkLT5ub25jZWxlbjsKKysgICAg dC0+ZW50Y250ID0gMDsKKysgICAgdC0+bm9uY2VjbnQgPSAwOworKyAgICByZXR1cm4gMTsKKyt9 CisrCisrLyogSW5pdGlhbGlzZSBhbmQgaW5zdGFudGlhdGUgRFJCRyBiYXNlZCBvbiBzZWxmdGVz dCBkYXRhICovCisrc3RhdGljIGludCBkb19kcmJnX2luc3RhbnRpYXRlKERSQkdfQ1RYICpkY3R4 LCBEUkJHX1NFTEZURVNUX0RBVEEgKiB0ZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVEVTVF9FTlQgKiB0KQorK3sKKysgICAgaWYgKCFkb19kcmJnX2luaXQoZGN0eCwgdGQsIHQp KQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmICghRklQU19kcmJnX2luc3RhbnRpYXRlKGRj dHgsIHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAg cmV0dXJuIDE7CisrfQorKworKy8qIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgZXh0ZW5zaXZlIGVy cm9yIGNoZWNraW5nIGFzIHJlcXVpcmVkIGJ5IFNQODAwLTkwLgorKyAqIEluZHVjZSBzZXZlcmFs IGZhaWx1cmUgbW9kZXMgYW5kIGNoZWNrIGFuIGVycm9yIGNvbmRpdGlvbiBpcyBzZXQuCisrICog VGhpcyBmdW5jdGlvbiBhbG9uZyB3aXRoIGZpcHNfZHJiZ19zaW5nbGVfa2F0IHBlZm9ybXMgdGhl IGhlYWx0aCBjaGVja2luZworKyAqIG9wZXJhdGlvbi4KKysgKi8KKysKKytzdGF0aWMgaW50IGZp cHNfZHJiZ19lcnJvcl9jaGVjayhEUkJHX0NUWCAqZGN0eCwgRFJCR19TRUxGVEVTVF9EQVRBICog dGQpCisreworKyAgICB1bnNpZ25lZCBjaGFyIHJhbmRvdXRbMTAyNF07CisrICAgIFRFU1RfRU5U IHQ7CisrICAgIHNpemVfdCBpOworKyAgICB1bnNpZ25lZCBpbnQgcmVzZWVkX2NvdW50ZXJfdG1w OworKyAgICB1bnNpZ25lZCBjaGFyICpwID0gKHVuc2lnbmVkIGNoYXIgKilkY3R4OworKworKyAg ICAvKiBJbml0aWFsaXNlIERSQkcgKi8KKysKKysgICAgaWYgKCFkb19kcmJnX2luaXQoZGN0eCwg dGQsICZ0KSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICAvKiBEb24ndCByZXBvcnQgaW5k dWNlZCBlcnJvcnMgKi8KKysgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKKysK KysgICAgLyogUGVyc29uYWxpc2F0aW9uIHN0cmluZyB0ZXN0cyAqLworKworKyAgICAvKiBUZXN0 IGRldGVjdGlvbiBvZiB0b28gbGFyZ2UgcGVyc29ubGlzYXRpb24gc3RyaW5nICovCisrCisrICAg IGlmIChGSVBTX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQtPnBlcnMsIGRjdHgtPm1heF9wZXJz ICsgMSkgPiAwKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hF Q0ssCisrICAgICAgICAgICAgICAgIEZJUFNfUl9QRVJTT05BTElTQVRJT05fRVJST1JfVU5ERVRF Q1RFRCk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICAvKiBFbnRyb3B5IHNv dXJjZSB0ZXN0cyAqLworKworKyAgICAvKiBUZXN0IGVudHJvcHkgc291cmNlIGZhaWx1cmUgZGV0 ZWNpb246IGkuZS4gcmV0dXJucyBubyBkYXRhICovCisrCisrICAgIHQuZW50bGVuID0gMDsKKysK KysgICAgaWYgKEZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywgdGQtPnBlcnNs ZW4pID4gMCkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNL LAorKyAgICAgICAgICAgICAgICBGSVBTX1JfRU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKKysg ICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIC8qIFRyeSB0byBnZW5lcmF0ZSBvdXRw dXQgZnJvbSB1bmluc3RhbnRpYXRlZCBEUkJHICovCisrICAgIGlmIChGSVBTX2RyYmdfZ2VuZXJh dGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9G SVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgIEZJUFNfUl9HRU5FUkFURV9F UlJPUl9VTkRFVEVDVEVEKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIGRj dHgtPmlmbGFncyAmPSB+RFJCR19GTEFHX05PRVJSOworKyAgICBpZiAoIUZJUFNfZHJiZ191bmlu c3RhbnRpYXRlKGRjdHgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJS T1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKKysgICAgICAgIGdvdG8gZXJy OworKyAgICB9CisrCisrICAgIGlmICghZG9fZHJiZ19pbml0KGRjdHgsIHRkLCAmdCkpCisrICAg ICAgICBnb3RvIGVycjsKKysKKysgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsK KysKKysgICAgLyogVGVzdCBpbnN1ZmZpY2llbnQgZW50cm9weSAqLworKworKyAgICB0LmVudGxl biA9IGRjdHgtPm1pbl9lbnRyb3B5IC0gMTsKKysKKysgICAgaWYgKEZJUFNfZHJiZ19pbnN0YW50 aWF0ZShkY3R4LCB0ZC0+cGVycywgdGQtPnBlcnNsZW4pID4gMCkgeworKyAgICAgICAgRklQU2Vy cihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAorKyAgICAgICAgICAgICAgICBGSVBTX1Jf RU5UUk9QWV9FUlJPUl9VTkRFVEVDVEVEKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9Cisr CisrICAgIGRjdHgtPmlmbGFncyAmPSB+RFJCR19GTEFHX05PRVJSOworKyAgICBpZiAoIUZJUFNf ZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBT X0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKKysgICAgICAg IGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIC8qIFRlc3QgdG9vIG11Y2ggZW50cm9weSAqLwor KworKyAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQorKyAgICAgICAgZ290byBl cnI7CisrCisrICAgIGRjdHgtPmlmbGFncyB8PSBEUkJHX0ZMQUdfTk9FUlI7CisrCisrICAgIHQu ZW50bGVuID0gZGN0eC0+bWF4X2VudHJvcHkgKyAxOworKworKyAgICBpZiAoRklQU19kcmJnX2lu c3RhbnRpYXRlKGRjdHgsIHRkLT5wZXJzLCB0ZC0+cGVyc2xlbikgPiAwKSB7CisrICAgICAgICBG SVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgIEZJ UFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNURUQpOworKyAgICAgICAgZ290byBlcnI7CisrICAg IH0KKysKKysgICAgZGN0eC0+aWZsYWdzICY9IH5EUkJHX0ZMQUdfTk9FUlI7CisrICAgIGlmICgh RklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19G X0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOworKyAg ICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgLyogTm9uY2UgdGVzdHMgKi8KKysKKysg ICAgLyogVGVzdCB0b28gc21hbGwgbm9uY2UgKi8KKysKKysgICAgaWYgKGRjdHgtPm1pbl9ub25j ZSkgeworKworKyAgICAgICAgaWYgKCFkb19kcmJnX2luaXQoZGN0eCwgdGQsICZ0KSkKKysgICAg ICAgICAgICBnb3RvIGVycjsKKysKKysgICAgICAgIGRjdHgtPmlmbGFncyB8PSBEUkJHX0ZMQUdf Tk9FUlI7CisrCisrICAgICAgICB0Lm5vbmNlbGVuID0gZGN0eC0+bWluX25vbmNlIC0gMTsKKysK KysgICAgICAgIGlmIChGSVBTX2RyYmdfaW5zdGFudGlhdGUoZGN0eCwgdGQtPnBlcnMsIHRkLT5w ZXJzbGVuKSA+IDApIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJS T1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgICAgICBGSVBTX1JfTk9OQ0VfRVJST1JfVU5ERVRF Q1RFRCk7CisrICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICB9CisrCisrICAgICAgICBk Y3R4LT5pZmxhZ3MgJj0gfkRSQkdfRkxBR19OT0VSUjsKKysgICAgICAgIGlmICghRklQU19kcmJn X3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBT X0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKKysgICAgICAg ICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysKKysgICAgfQorKworKyAgICAvKiBUZXN0IHRv byBsYXJnZSBub25jZSAqLworKworKyAgICBpZiAoZGN0eC0+bWF4X25vbmNlKSB7CisrCisrICAg ICAgICBpZiAoIWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQorKyAgICAgICAgICAgIGdvdG8g ZXJyOworKworKyAgICAgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKKysKKysg ICAgICAgIHQubm9uY2VsZW4gPSBkY3R4LT5tYXhfbm9uY2UgKyAxOworKworKyAgICAgICAgaWYg KEZJUFNfZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZC0+cGVycywgdGQtPnBlcnNsZW4pID4gMCkg eworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKKysg ICAgICAgICAgICAgICAgICAgIEZJUFNfUl9OT05DRV9FUlJPUl9VTkRFVEVDVEVEKTsKKysgICAg ICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysKKysgICAgICAgIGRjdHgtPmlmbGFncyAm PSB+RFJCR19GTEFHX05PRVJSOworKyAgICAgICAgaWYgKCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0 ZShkY3R4KSkgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9D SEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOworKyAgICAgICAgICAgIGdvdG8gZXJy OworKyAgICAgICAgfQorKworKyAgICB9CisrCisrICAgIC8qIEluc3RhbnRpYXRlIHdpdGggdmFs aWQgZGF0YS4gKi8KKysgICAgaWYgKCFkb19kcmJnX2luc3RhbnRpYXRlKGRjdHgsIHRkLCAmdCkp CisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgLyogQ2hlY2sgZ2VuZXJhdGlvbiBpcyBub3cg T0sgKi8KKysgICAgaWYgKCFGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgdGQtPmth dGxlbiwgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQtPmFkaW4sIHRkLT5hZGlu bGVuKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBkY3R4LT5pZmxhZ3MgfD0gRFJCR19G TEFHX05PRVJSOworKworKyAgICAvKiBSZXF1ZXN0IHRvbyBtdWNoIGRhdGEgZm9yIG9uZSByZXF1 ZXN0ICovCisrICAgIGlmIChGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwgZGN0eC0+ bWF4X3JlcXVlc3QgKyAxLCAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGlu LCB0ZC0+YWRpbmxlbikpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJP Ul9DSEVDSywKKysgICAgICAgICAgICAgICAgRklQU19SX1JFUVVFU1RfTEVOR1RIX0VSUk9SX1VO REVURUNURUQpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgLyogVHJ5IHRv byBsYXJnZSBhZGRpdGlvbmFsIGlucHV0ICovCisrICAgIGlmIChGSVBTX2RyYmdfZ2VuZXJhdGUo ZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICB0ZC0+YWRpbiwgZGN0eC0+bWF4X2FkaW4gKyAxKSkgeworKyAgICAgICAgRklQU2VycihGSVBT X0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAorKyAgICAgICAgICAgICAgICBGSVBTX1JfQURESVRJ T05BTF9JTlBVVF9FUlJPUl9VTkRFVEVDVEVEKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9 CisrCisrICAgIC8qIENoZWNrIHByZWRpY3Rpb24gcmVzaXN0YW5jZSByZXF1ZXN0IGZhaWxzIGlm IGVudHJvcHkgc291cmNlCisrICAgICAqIGZhaWx1cmUuCisrICAgICAqLworKworKyAgICB0LmVu dGxlbiA9IDA7CisrCisrICAgIGlmIChGSVBTX2RyYmdfZ2VuZXJhdGUoZGN0eCwgcmFuZG91dCwg dGQtPmthdGxlbiwgMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZC0+YWRpbiwgdGQt PmFkaW5sZW4pKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hF Q0ssCisrICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNURUQpOwor KyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgZGN0eC0+aWZsYWdzICY9IH5EUkJH X0ZMQUdfTk9FUlI7CisrICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsK KysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VO SU5TVEFOVElBVEVfRVJST1IpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAg LyogSW5zdGFudGlhdGUgYWdhaW4gd2l0aCB2YWxpZCBkYXRhICovCisrCisrICAgIGlmICghZG9f ZHJiZ19pbnN0YW50aWF0ZShkY3R4LCB0ZCwgJnQpKQorKyAgICAgICAgZ290byBlcnI7CisrICAg IC8qIFRlc3QgcmVzZWVkIGNvdW50ZXIgd29ya3MgKi8KKysgICAgLyogU2F2ZSBpbml0aWFsIHJl c2VlZCBjb3VudGVyICovCisrICAgIHJlc2VlZF9jb3VudGVyX3RtcCA9IGRjdHgtPnJlc2VlZF9j b3VudGVyOworKyAgICAvKiBTZXQgcmVzZWVkIGNvdW50ZXIgdG8gYmV5b25kIGludGVydmFsICov CisrICAgIGRjdHgtPnJlc2VlZF9jb3VudGVyID0gZGN0eC0+cmVzZWVkX2ludGVydmFsOworKwor KyAgICAvKiBHZW5lcmF0ZSBvdXRwdXQgYW5kIGNoZWNrIGVudHJvcHkgaGFzIGJlZW4gcmVxdWVz dGVkIGZvciByZXNlZWQgKi8KKysgICAgdC5lbnRjbnQgPSAwOworKyAgICBpZiAoIUZJUFNfZHJi Z19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAwLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0ZC0+YWRpbiwgdGQtPmFkaW5sZW4pKQorKyAgICAgICAgZ290byBlcnI7 CisrICAgIGlmICh0LmVudGNudCAhPSAxKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBT X0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgIEZJUFNfUl9FTlRST1BZX05PVF9S RVFVRVNURURfRk9SX1JFU0VFRCk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKyAgICAv KiBDaGVjayByZXNlZWQgY291bnRlciBoYXMgYmVlbiByZXNldCAqLworKyAgICBpZiAoZGN0eC0+ cmVzZWVkX2NvdW50ZXIgIT0gcmVzZWVkX2NvdW50ZXJfdG1wICsgMSkgeworKyAgICAgICAgRklQ U2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfUkVTRUVEX0NPVU5URVJf RVJST1IpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgZGN0eC0+aWZsYWdz ICY9IH5EUkJHX0ZMQUdfTk9FUlI7CisrICAgIGlmICghRklQU19kcmJnX3VuaW5zdGFudGlhdGUo ZGN0eCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywg RklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0K KysKKysgICAgLyogQ2hlY2sgcHJlZGljdGlvbiByZXNpc3RhbmNlIHJlcXVlc3QgZmFpbHMgaWYg ZW50cm9weSBzb3VyY2UKKysgICAgICogZmFpbHVyZS4KKysgICAgICovCisrCisrICAgIHQuZW50 bGVuID0gMDsKKysKKysgICAgZGN0eC0+aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKKysgICAg aWYgKEZJUFNfZHJiZ19nZW5lcmF0ZShkY3R4LCByYW5kb3V0LCB0ZC0+a2F0bGVuLCAxLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRkLT5hZGluLCB0ZC0+YWRpbmxlbikpIHsKKysgICAg ICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKKysgICAgICAgICAgICAg ICAgRklQU19SX0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RFRCk7CisrICAgICAgICBnb3RvIGVycjsK KysgICAgfQorKworKyAgICBkY3R4LT5pZmxhZ3MgJj0gfkRSQkdfRkxBR19OT0VSUjsKKysKKysg ICAgaWYgKCFGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4KSkgeworKyAgICAgICAgRklQU2Vy cihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBGSVBTX1JfVU5JTlNUQU5USUFURV9FUlJP Uik7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICBpZiAoIWRvX2RyYmdfaW5z dGFudGlhdGUoZGN0eCwgdGQsICZ0KSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICAvKiBUZXN0 IHJlc2VlZCBjb3VudGVyIHdvcmtzICovCisrICAgIC8qIFNhdmUgaW5pdGlhbCByZXNlZWQgY291 bnRlciAqLworKyAgICByZXNlZWRfY291bnRlcl90bXAgPSBkY3R4LT5yZXNlZWRfY291bnRlcjsK KysgICAgLyogU2V0IHJlc2VlZCBjb3VudGVyIHRvIGJleW9uZCBpbnRlcnZhbCAqLworKyAgICBk Y3R4LT5yZXNlZWRfY291bnRlciA9IGRjdHgtPnJlc2VlZF9pbnRlcnZhbDsKKysKKysgICAgLyog R2VuZXJhdGUgb3V0cHV0IGFuZCBjaGVjayBlbnRyb3B5IGhhcyBiZWVuIHJlcXVlc3RlZCBmb3Ig cmVzZWVkICovCisrICAgIHQuZW50Y250ID0gMDsKKysgICAgaWYgKCFGSVBTX2RyYmdfZ2VuZXJh dGUoZGN0eCwgcmFuZG91dCwgdGQtPmthdGxlbiwgMCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGQtPmFkaW4sIHRkLT5hZGlubGVuKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBp ZiAodC5lbnRjbnQgIT0gMSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VS Uk9SX0NIRUNLLAorKyAgICAgICAgICAgICAgICBGSVBTX1JfRU5UUk9QWV9OT1RfUkVRVUVTVEVE X0ZPUl9SRVNFRUQpOworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysgICAgLyogQ2hlY2sg cmVzZWVkIGNvdW50ZXIgaGFzIGJlZW4gcmVzZXQgKi8KKysgICAgaWYgKGRjdHgtPnJlc2VlZF9j b3VudGVyICE9IHJlc2VlZF9jb3VudGVyX3RtcCArIDEpIHsKKysgICAgICAgIEZJUFNlcnIoRklQ U19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1JFU0VFRF9DT1VOVEVSX0VSUk9SKTsK KysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIGRjdHgtPmlmbGFncyAmPSB+RFJC R19GTEFHX05PRVJSOworKyAgICBpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKSB7 CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9V TklOU1RBTlRJQVRFX0VSUk9SKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAg IC8qIEV4cGxpY2l0IHJlc2VlZCB0ZXN0cyAqLworKworKyAgICAvKiBUZXN0IGV4cGxpY2l0IHJl c2VlZCB3aXRoIHRvbyBsYXJnZSBhZGRpdGlvbmFsIGlucHV0ICovCisrICAgIGlmICghZG9fZHJi Z19pbml0KGRjdHgsIHRkLCAmdCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgZGN0eC0+ aWZsYWdzIHw9IERSQkdfRkxBR19OT0VSUjsKKysKKysgICAgaWYgKEZJUFNfZHJiZ19yZXNlZWQo ZGN0eCwgdGQtPmFkaW4sIGRjdHgtPm1heF9hZGluICsgMSkgPiAwKSB7CisrICAgICAgICBGSVBT ZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssCisrICAgICAgICAgICAgICAgIEZJUFNf Ul9BRERJVElPTkFMX0lOUFVUX0VSUk9SX1VOREVURUNURUQpOworKyAgICAgICAgZ290byBlcnI7 CisrICAgIH0KKysKKysgICAgLyogVGVzdCBleHBsaWNpdCByZXNlZWQgd2l0aCBlbnRyb3B5IHNv dXJjZSBmYWlsdXJlICovCisrCisrICAgIHQuZW50bGVuID0gMDsKKysKKysgICAgaWYgKEZJUFNf ZHJiZ19yZXNlZWQoZGN0eCwgdGQtPmFkaW4sIHRkLT5hZGlubGVuKSA+IDApIHsKKysgICAgICAg IEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVDSywKKysgICAgICAgICAgICAgICAg RklQU19SX0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RFRCk7CisrICAgICAgICBnb3RvIGVycjsKKysg ICAgfQorKworKyAgICBpZiAoIUZJUFNfZHJiZ191bmluc3RhbnRpYXRlKGRjdHgpKSB7CisrICAg ICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0ssIEZJUFNfUl9VTklOU1RB TlRJQVRFX0VSUk9SKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIC8qIFRl c3QgZXhwbGljaXQgcmVzZWVkIHdpdGggdG9vIG11Y2ggZW50cm9weSAqLworKworKyAgICBpZiAo IWRvX2RyYmdfaW5pdChkY3R4LCB0ZCwgJnQpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAg IGRjdHgtPmlmbGFncyB8PSBEUkJHX0ZMQUdfTk9FUlI7CisrCisrICAgIHQuZW50bGVuID0gZGN0 eC0+bWF4X2VudHJvcHkgKyAxOworKworKyAgICBpZiAoRklQU19kcmJnX3Jlc2VlZChkY3R4LCB0 ZC0+YWRpbiwgdGQtPmFkaW5sZW4pID4gMCkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQ U19EUkJHX0VSUk9SX0NIRUNLLAorKyAgICAgICAgICAgICAgICBGSVBTX1JfRU5UUk9QWV9FUlJP Ul9VTkRFVEVDVEVEKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrCisrICAgIGlmICgh RklQU19kcmJnX3VuaW5zdGFudGlhdGUoZGN0eCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19G X0ZJUFNfRFJCR19FUlJPUl9DSEVDSywgRklQU19SX1VOSU5TVEFOVElBVEVfRVJST1IpOworKyAg ICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgLyogVGVzdCBleHBsaWNpdCByZXNlZWQg d2l0aCB0b28gbGl0dGxlIGVudHJvcHkgKi8KKysKKysgICAgaWYgKCFkb19kcmJnX2luaXQoZGN0 eCwgdGQsICZ0KSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBkY3R4LT5pZmxhZ3MgfD0g RFJCR19GTEFHX05PRVJSOworKworKyAgICB0LmVudGxlbiA9IGRjdHgtPm1pbl9lbnRyb3B5IC0g MTsKKysKKysgICAgaWYgKEZJUFNfZHJiZ19yZXNlZWQoZGN0eCwgdGQtPmFkaW4sIHRkLT5hZGlu bGVuKSA+IDApIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfRFJCR19FUlJPUl9DSEVD SywKKysgICAgICAgICAgICAgICAgRklQU19SX0VOVFJPUFlfRVJST1JfVU5ERVRFQ1RFRCk7Cisr ICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICBpZiAoIUZJUFNfZHJiZ191bmluc3Rh bnRpYXRlKGRjdHgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX0RSQkdfRVJST1Jf Q0hFQ0ssIEZJUFNfUl9VTklOU1RBTlRJQVRFX0VSUk9SKTsKKysgICAgICAgIGdvdG8gZXJyOwor KyAgICB9CisrCisrICAgIHAgPSAodW5zaWduZWQgY2hhciAqKSZkY3R4LT5kOworKyAgICAvKiBT dGFuZGFyZCBzYXlzIHdlIGhhdmUgdG8gY2hlY2sgdW5pbnN0YW50aWF0ZSByZWFsbHkgemVyb2Vz CisrICAgICAqIHRoZSBkYXRhLi4uCisrICAgICAqLworKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6 ZW9mKGRjdHgtPmQpOyBpKyspIHsKKysgICAgICAgIGlmICgqcCAhPSAwKSB7CisrICAgICAgICAg ICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLAorKyAgICAgICAgICAgICAg ICAgICAgRklQU19SX1VOSU5TVEFOVElBVEVfWkVST0lTRV9FUlJPUik7CisrICAgICAgICAgICAg Z290byBlcnI7CisrICAgICAgICB9CisrICAgICAgICBwKys7CisrICAgIH0KKysKKysgICAgcmV0 dXJuIDE7CisrCisrIGVycjoKKysgICAgLyogQSByZWFsIGVycm9yIGFzIG9wcG9zZWQgdG8gYW4g aW5kdWNlZCBvbmU6IHVuZGVybHlpbmcgZnVuY3Rpb24gd2lsbAorKyAgICAgKiBpbmRpY2F0ZSB0 aGUgZXJyb3IuCisrICAgICAqLworKyAgICBpZiAoIShkY3R4LT5pZmxhZ3MgJiBEUkJHX0ZMQUdf Tk9FUlIpKQorKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19EUkJHX0VSUk9SX0NIRUNLLCBG SVBTX1JfRlVOQ1RJT05fRVJST1IpOworKyAgICBGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShkY3R4 KTsKKysgICAgcmV0dXJuIDA7CisrCisrfQorKworK2ludCBmaXBzX2RyYmdfa2F0KERSQkdfQ1RY ICpkY3R4LCBpbnQgbmlkLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCisreworKyAgICBEUkJHX1NFTEZU RVNUX0RBVEEgKnRkOworKyAgICBmbGFncyB8PSBEUkJHX0ZMQUdfVEVTVDsKKysgICAgZm9yICh0 ZCA9IGRyYmdfdGVzdDsgdGQtPm5pZCAhPSAwOyB0ZCsrKSB7CisrICAgICAgICBpZiAodGQtPm5p ZCA9PSBuaWQgJiYgdGQtPmZsYWdzID09IGZsYWdzKSB7CisrICAgICAgICAgICAgaWYgKCFmaXBz X2RyYmdfc2luZ2xlX2thdChkY3R4LCB0ZCwgMCkpCisrICAgICAgICAgICAgICAgIHJldHVybiAw OworKyAgICAgICAgICAgIHJldHVybiBmaXBzX2RyYmdfZXJyb3JfY2hlY2soZGN0eCwgdGQpOwor KyAgICAgICAgfQorKyAgICB9CisrICAgIHJldHVybiAwOworK30KKysKKytpbnQgRklQU19kcmJn X2hlYWx0aF9jaGVjayhEUkJHX0NUWCAqZGN0eCkKKyt7CisrICAgIGludCBydjsKKysgICAgRFJC R19DVFggKnRjdHggPSBOVUxMOworKyAgICB0Y3R4ID0gRklQU19kcmJnX25ldygwLCAwKTsKKysg ICAgZmlwc19wb3N0X3N0YXJ0ZWQoRklQU19URVNUX0RSQkcsIGRjdHgtPnR5cGUsICZkY3R4LT54 ZmxhZ3MpOworKyAgICBpZiAoIXRjdHgpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgcnYgPSBm aXBzX2RyYmdfa2F0KHRjdHgsIGRjdHgtPnR5cGUsIGRjdHgtPnhmbGFncyk7CisrICAgIGlmICh0 Y3R4KQorKyAgICAgICAgRklQU19kcmJnX2ZyZWUodGN0eCk7CisrICAgIGlmIChydikKKysgICAg ICAgIGZpcHNfcG9zdF9zdWNjZXNzKEZJUFNfVEVTVF9EUkJHLCBkY3R4LT50eXBlLCAmZGN0eC0+ eGZsYWdzKTsKKysgICAgZWxzZQorKyAgICAgICAgZmlwc19wb3N0X2ZhaWxlZChGSVBTX1RFU1Rf RFJCRywgZGN0eC0+dHlwZSwgJmRjdHgtPnhmbGFncyk7CisrICAgIGlmICghcnYpCisrICAgICAg ICBkY3R4LT5zdGF0dXMgPSBEUkJHX1NUQVRVU19FUlJPUjsKKysgICAgZWxzZQorKyAgICAgICAg ZGN0eC0+aGVhbHRoX2NoZWNrX2NudCA9IDA7CisrICAgIHJldHVybiBydjsKKyt9CisrCisraW50 IEZJUFNfc2VsZnRlc3RfZHJiZyh2b2lkKQorK3sKKysgICAgRFJCR19DVFggKmRjdHg7CisrICAg IERSQkdfU0VMRlRFU1RfREFUQSAqdGQ7CisrICAgIGludCBydiA9IDE7CisrICAgIGRjdHggPSBG SVBTX2RyYmdfbmV3KDAsIDApOworKyAgICBpZiAoIWRjdHgpCisrICAgICAgICByZXR1cm4gMDsK KysgICAgZm9yICh0ZCA9IGRyYmdfdGVzdDsgdGQtPm5pZCAhPSAwOyB0ZCsrKSB7CisrICAgICAg ICBpZiAodGQtPnBvc3QgIT0gMSkKKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIGlm ICghZmlwc19wb3N0X3N0YXJ0ZWQoRklQU19URVNUX0RSQkcsIHRkLT5uaWQsICZ0ZC0+ZmxhZ3Mp KQorKyAgICAgICAgICAgIHJldHVybiAxOworKyAgICAgICAgaWYgKCFmaXBzX2RyYmdfc2luZ2xl X2thdChkY3R4LCB0ZCwgMSkpIHsKKysgICAgICAgICAgICBmaXBzX3Bvc3RfZmFpbGVkKEZJUFNf VEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKTsKKysgICAgICAgICAgICBydiA9IDA7Cisr ICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9CisrICAgICAgICBpZiAoIWZpcHNfcG9z dF9zdWNjZXNzKEZJUFNfVEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKSkKKysgICAgICAg ICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBGSVBTX2RyYmdfZnJlZShkY3R4KTsKKysgICAg cmV0dXJuIHJ2OworK30KKysKKytpbnQgRklQU19zZWxmdGVzdF9kcmJnX2FsbCh2b2lkKQorK3sK KysgICAgRFJCR19DVFggKmRjdHg7CisrICAgIERSQkdfU0VMRlRFU1RfREFUQSAqdGQ7CisrICAg IGludCBydiA9IDE7CisrICAgIGRjdHggPSBGSVBTX2RyYmdfbmV3KDAsIDApOworKyAgICBpZiAo IWRjdHgpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgZm9yICh0ZCA9IGRyYmdfdGVzdDsgdGQt Pm5pZCAhPSAwOyB0ZCsrKSB7CisrICAgICAgICBpZiAoIWZpcHNfcG9zdF9zdGFydGVkKEZJUFNf VEVTVF9EUkJHLCB0ZC0+bmlkLCAmdGQtPmZsYWdzKSkKKysgICAgICAgICAgICByZXR1cm4gMTsK KysgICAgICAgIGlmICghZmlwc19kcmJnX3NpbmdsZV9rYXQoZGN0eCwgdGQsIDApKSB7CisrICAg ICAgICAgICAgZmlwc19wb3N0X2ZhaWxlZChGSVBTX1RFU1RfRFJCRywgdGQtPm5pZCwgJnRkLT5m bGFncyk7CisrICAgICAgICAgICAgcnYgPSAwOworKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAg ICAgICAgfQorKyAgICAgICAgaWYgKCFmaXBzX2RyYmdfZXJyb3JfY2hlY2soZGN0eCwgdGQpKSB7 CisrICAgICAgICAgICAgZmlwc19wb3N0X2ZhaWxlZChGSVBTX1RFU1RfRFJCRywgdGQtPm5pZCwg JnRkLT5mbGFncyk7CisrICAgICAgICAgICAgcnYgPSAwOworKyAgICAgICAgICAgIGNvbnRpbnVl OworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFmaXBzX3Bvc3Rfc3VjY2VzcyhGSVBTX1RFU1Rf RFJCRywgdGQtPm5pZCwgJnRkLT5mbGFncykpCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAg IH0KKysgICAgRklQU19kcmJnX2ZyZWUoZGN0eCk7CisrICAgIHJldHVybiBydjsKKyt9CitkaWZm IC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2RyYmdfc2VsZnRlc3QuaC5maXBz IG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5oCistLS0gb3Bl bnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kcmJnX3NlbGZ0ZXN0LmguZmlwcwkyMDE1LTA2 LTE1IDE3OjMwOjAwLjAwODI4Mzk4MiArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9m aXBzL2ZpcHNfZHJiZ19zZWxmdGVzdC5oCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDA4MjgzOTgyICsw MjAwCitAQCAtMCwwICsxLDE3OTEgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAo YykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgor KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp dGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0 aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBS ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly aWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgor KyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNp bmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBz b2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAg ICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNT TCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDov L3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xr aXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5k b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv dXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Np b24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlLm9yZy4KKysgKgorKyAqIDUu IFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJP cGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3 aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFBy b2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZl ciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6CisrICog ICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5T U0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDov L3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC WSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVTU0VEIE9S IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT SEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJQUwsIEVY RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorKyAqIE5P VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT OworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV UFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ LCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkg T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICogT0Yg VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisrLyogU2VsZnRl c3QgYW5kIGhlYWx0aCBjaGVjayBkYXRhIGZvciB0aGUgU1A4MDAtOTAgRFJCRyAqLworKworKyNk ZWZpbmUgX19maXBzX2NvbnN0c2VnCisrCisrLyogQUVTLTEyOCB1c2UgZGYgUFIgICovCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3By X2VudHJvcHlpbnB1dFtdID0geworKyAgICAweDYxLCAweDUyLCAweDdjLCAweGUzLCAweDIzLCAw eDdkLCAweDBhLCAweDA3LCAweDEwLCAweDBjLCAweDUwLCAweDMzLAorKyAgICAweGM4LCAweGRi LCAweGZmLCAweDEyCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfbm9uY2VbXSA9IHsKKysgICAgMHg1MSwgMHgwZCwg MHg4NSwgMHg3NywgMHhlZCwgMHgyMiwgMHg5NywgMHgyOAorK307CisrCisrX19maXBzX2NvbnN0 c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3ByX3Bl cnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweDU5LCAweDlmLCAweGJiLCAweGNkLCAw eGQ1LCAweDI1LCAweDY5LCAweGI1LCAweGNiLCAweGI1LCAweDAzLCAweGZlLAorKyAgICAweGQ3 LCAweGQ3LCAweDAxLCAweDY3CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfYWRkaXRpb25hbGlucHV0W10g PSB7CisrICAgIDB4ZWYsIDB4ODgsIDB4NzYsIDB4MDEsIDB4YWYsIDB4M2MsIDB4ZmUsIDB4OGIs IDB4YWYsIDB4MjYsIDB4MDYsIDB4OWUsCisrICAgIDB4OWEsIDB4NDcsIDB4MDgsIDB4NzYKKyt9 OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMTI4X3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRwcltdID0geworKyAgICAweGUyLCAweDc2LCAw eGY5LCAweGY2LCAweDNhLCAweGJhLCAweDEwLCAweDlmLCAweGJmLCAweDQ3LCAweDBlLCAweDUx LAorKyAgICAweDA5LCAweGZiLCAweGEzLCAweGI2CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcK KysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfaW50X3Jl dHVybmVkYml0c1tdID0geworKyAgICAweGQ0LCAweDk4LCAweDhhLCAweDQ2LCAweDgwLCAweDRj LCAweGRiLCAweGEzLCAweDU5LCAweDAyLCAweDU3LCAweDUyLAorKyAgICAweDY2LCAweDFjLCAw eGVhLCAweDViCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcHJfYWRkaXRpb25hbGlucHV0MltdID0geworKyAg ICAweDg4LCAweDhjLCAweDkxLCAweGQ2LCAweGJlLCAweDU2LCAweDZlLCAweDA4LCAweDlhLCAw eDYyLCAweDJiLCAweDExLAorKyAgICAweDNmLCAweDVlLCAweDMxLCAweDA2CisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91 c2VfZGZfcHJfZW50cm9weWlucHV0cHIyW10gPSB7CisrICAgIDB4YzAsIDB4NWMsIDB4NmIsIDB4 OTgsIDB4MDEsIDB4MGQsIDB4NTgsIDB4MTgsIDB4NTEsIDB4MTgsIDB4OTYsIDB4YWUsCisrICAg IDB4YTcsIDB4ZTMsIDB4YTgsIDB4NjcKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsK KysgICAgMHhjZiwgMHgwMSwgMHhhYywgMHgyMiwgMHgzMSwgMHgwNiwgMHg4ZSwgMHhmYywgMHhj ZSwgMHg1NiwgMHhlYSwgMHgyNCwKKysgICAgMHgwZiwgMHgzOCwgMHg0MywgMHhjNgorK307Cisr CisrLyogQUVTLTEyOCB1c2UgZGYgTm8gUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX2VudHJvcHlpbnB1dFtdID0geworKyAg ICAweDFmLCAweDhlLCAweDM0LCAweDgyLCAweDBjLCAweGI3LCAweGJlLCAweGM1LCAweDAxLCAw eDNlLCAweGQwLCAweGEzLAorKyAgICAweDlkLCAweDdkLCAweDFjLCAweDliCisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZf bm9uY2VbXSA9IHsKKysgICAgMHhkNSwgMHg0ZCwgMHhiZCwgMHg0YSwgMHg5MywgMHg3ZiwgMHhi OCwgMHg5NgorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAg ICAweGFiLCAweGQ2LCAweDNmLCAweDA0LCAweGZlLCAweDI3LCAweDZiLCAweDJkLCAweGQ3LCAw eGMzLCAweDFjLCAweGYzLAorKyAgICAweDM4LCAweDY2LCAweGJhLCAweDFiCisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZf YWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4ZmUsIDB4ZjQsIDB4MDksIDB4YTgsIDB4Yjcs IDB4NzMsIDB4MjcsIDB4OWMsIDB4NWYsIDB4YTcsIDB4ZWEsIDB4NDYsCisrICAgIDB4YjUsIDB4 ZTIsIDB4YjIsIDB4NDEKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMTI4X3VzZV9kZl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4 NDIsIDB4ZTQsIDB4NGUsIDB4N2IsIDB4MjcsIDB4ZGQsIDB4Y2IsIDB4YmMsIDB4MGEsIDB4Y2Ys IDB4YTYsIDB4NjcsCisrICAgIDB4ZTcsIDB4NTcsIDB4MTEsIDB4YjQKKyt9OworKworK19fZmlw c19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X3VzZV9k Zl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHgxNCwgMHgyNiwgMHg2OSwgMHhkOSwg MHhmMywgMHg2NSwgMHgwMywgMHhkNiwgMHg2YiwgMHhiOSwgMHg0NCwgMHgwYiwKKysgICAgMHhj NywgMHhjNCwgMHg5ZSwgMHgzOQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfdXNlX2RmX2FkZGl0aW9uYWxpbnB1dHJlc2Vl ZFtdID0geworKyAgICAweDU1LCAweDJlLCAweDYwLCAweDlhLCAweDA1LCAweDcyLCAweDhhLCAw eGE4LCAweGVmLCAweDIyLCAweDgxLCAweDVhLAorKyAgICAweGM4LCAweDkzLCAweGZhLCAweDg0 CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzEyOF91c2VfZGZfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweDNjLCAweDQwLCAweGM4 LCAweGM0LCAweDE2LCAweDBjLCAweDIxLCAweGE0LCAweDM3LCAweDJjLCAweDhmLCAweGE1LAor KyAgICAweDA2LCAweDBjLCAweDE1LCAweDJjCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF91c2VfZGZfcmV0dXJuZWRiaXRzW10gPSB7 CisrICAgIDB4ZTEsIDB4M2UsIDB4OTksIDB4OTgsIDB4ODYsIDB4NjcsIDB4MGIsIDB4NjMsIDB4 N2IsIDB4YmUsIDB4M2YsIDB4ODgsCisrICAgIDB4NDYsIDB4ODEsIDB4YzcsIDB4MTkKKyt9Owor KworKy8qIEFFUy0xOTIgdXNlIGRmIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKKysg ICAgMHgyYiwgMHg0ZSwgMHg4YiwgMHhlMSwgMHhmMSwgMHgzNCwgMHg4MCwgMHg1NiwgMHg4MSwg MHhmOSwgMHg3NCwgMHhlYywKKysgICAgMHgxNywgMHg0NCwgMHgyYSwgMHhmMSwgMHgxNCwgMHhi MCwgMHhiZiwgMHg5NywgMHgzOSwgMHhiNywgMHgwNCwgMHg3ZAorK307CisrCisrX19maXBzX2Nv bnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX25vbmNl W10gPSB7CisrICAgIDB4ZDYsIDB4OWQsIDB4ZWIsIDB4MTQsIDB4NGUsIDB4NmMsIDB4MzAsIDB4 MWUsIDB4MzksIDB4NTUsIDB4NzMsIDB4ZDAsCisrICAgIDB4ZDEsIDB4ODAsIDB4NzgsIDB4ZmEK Kyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBhZXNfMTkyX3VzZV9kZl9wcl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHhm YywgMHg0MywgMHg0YSwgMHhmOCwgMHg5YSwgMHg1NSwgMHhiMywgMHg1MywgMHg4MywgMHhlMiwg MHgxOCwgMHgxNiwKKysgICAgMHgwYywgMHhkYywgMHhjZCwgMHg1ZSwgMHg0ZiwgMHhhMCwgMHgw MywgMHgwMSwgMHgyYiwgMHg5ZiwgMHhlNCwgMHhkNSwKKysgICAgMHg3ZCwgMHg0OSwgMHhmMCwg MHg0MSwgMHg5ZSwgMHgzZCwgMHg5OSwgMHgwNAorK307CisrCisrX19maXBzX2NvbnN0c2VnCisr ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX2FkZGl0aW9u YWxpbnB1dFtdID0geworKyAgICAweDVlLCAweDlmLCAweDQ5LCAweDZmLCAweDIxLCAweDhiLCAw eDFkLCAweDMyLCAweGQ1LCAweDg0LCAweDVjLCAweGFjLAorKyAgICAweGFmLCAweGRmLCAweGU0 LCAweDc5LCAweDllLCAweGFmLCAweGE5LCAweDgyLCAweGQwLCAweGY4LCAweDRmLCAweGNiLAor KyAgICAweDY5LCAweDEwLCAweDBhLCAweDdlLCAweDgxLCAweDU3LCAweGI1LCAweDM2CisrfTsK KysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzE5Ml91c2VfZGZfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysgICAgMHhkNCwgMHg4MSwgMHgw YywgMHhkNywgMHg2NiwgMHgzOSwgMHhlYywgMHg0MiwgMHg1MywgMHg4NywgMHg0MSwgMHhhNSwK KysgICAgMHgxZSwgMHg3ZCwgMHg4MCwgMHg5MSwgMHg4ZSwgMHhiYiwgMHhlZCwgMHhhYywgMHgx NCwgMHgwMiwgMHgxYSwgMHhkNQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX2ludF9yZXR1cm5lZGJpdHNb XSA9IHsKKysgICAgMHhkZiwgMHgxZCwgMHgzOSwgMHg0NSwgMHg3YywgMHg5YiwgMHhjNiwgMHgy YiwgMHg3ZCwgMHg4YywgMHg5MywgMHhlOSwKKysgICAgMHgxOSwgMHgzMCwgMHg2YiwgMHg2Nwor K307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18xOTJfdXNlX2RmX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHgwMCwgMHg3 MSwgMHgyNywgMHg0ZSwgMHhkMywgMHgxNCwgMHhmMSwgMHgyMCwgMHg3ZiwgMHg0YSwgMHg0MSwg MHgzMiwKKysgICAgMHgyYSwgMHg5NywgMHgxMSwgMHg0MywgMHg4ZiwgMHg0YSwgMHgxNSwgMHg3 YiwgMHg5YiwgMHg1MSwgMHg3OSwgMHhkYSwKKysgICAgMHg0OSwgMHgzZCwgMHhkZSwgMHhlOCwg MHhiYywgMHg5MywgMHg5MSwgMHg5OQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3ByX2VudHJvcHlpbnB1dHBy MltdID0geworKyAgICAweDkwLCAweGVlLCAweDc2LCAweGExLCAweDQ1LCAweDhkLCAweGI3LCAw eDQwLCAweGIwLCAweDExLCAweGJmLCAweGQwLAorKyAgICAweDY1LCAweGQ3LCAweDNjLCAweDdj LCAweDRmLCAweDIwLCAweDNmLCAweDRlLCAweDExLCAweDlkLCAweGIzLCAweDVlCisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2Vf ZGZfcHJfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4MjQsIDB4M2IsIDB4MjAsIDB4YTQsIDB4 MzcsIDB4NjYsIDB4YmEsIDB4NzIsIDB4MzksIDB4M2YsIDB4Y2YsIDB4M2MsCisrICAgIDB4N2Us IDB4MWEsIDB4MmIsIDB4ODMKKyt9OworKworKy8qIEFFUy0xOTIgdXNlIGRmIE5vIFBSICAqLwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9k Zl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHg4ZCwgMHg3NCwgMHhhNCwgMHg1MCwgMHgxYSwg MHgwMiwgMHg2OCwgMHgwYywgMHgyYSwgMHg2OSwgMHhjNCwgMHg4MiwKKysgICAgMHgzYiwgMHhi YiwgMHhkYSwgMHgwZSwgMHg3ZiwgMHg3NywgMHhhMywgMHgxNywgMHg3OCwgMHg1NywgMHhiMiwg MHg3YgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18xOTJfdXNlX2RmX25vbmNlW10gPSB7CisrICAgIDB4NzUsIDB4ZDUsIDB4MWYsIDB4YWMs IDB4YTQsIDB4OGQsIDB4NDIsIDB4NzgsIDB4ZDcsIDB4NjksIDB4ODYsIDB4OWQsCisrICAgIDB4 NzcsIDB4ZDcsIDB4NDEsIDB4MGUKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX3VzZV9kZl9wZXJzb25hbGl6YXRpb25zdHJp bmdbXSA9IHsKKysgICAgMHg0ZSwgMHgzMywgMHg0MSwgMHgzYywgMHg5YywgMHhjMiwgMHhkMiwg MHg1MywgMHhhZiwgMHg5MCwgMHhlYSwgMHhjZiwKKysgICAgMHgxOSwgMHg1MCwgMHgxZSwgMHhl NiwgMHg2ZiwgMHg2MywgMHhjOCwgMHgzMiwgMHgyMiwgMHhkYywgMHgwNywgMHg2NSwKKysgICAg MHg5YywgMHhkMywgMHhmOCwgMHgzMCwgMHg5ZSwgMHhlZCwgMHgzNSwgMHg3MAorK307CisrCisr X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2Rm X2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDVkLCAweDhiLCAweDhjLCAweGMxLCAweGRm LCAweDBlLCAweDAyLCAweDc4LCAweGZiLCAweDE5LCAweGI4LCAweDY5LAorKyAgICAweDc4LCAw eDRlLCAweDljLCAweDUyLCAweGJjLCAweGM3LCAweDIwLCAweGM5LCAweGU2LCAweDVlLCAweDc3 LCAweDIyLAorKyAgICAweDI4LCAweDNkLCAweDBjLCAweDllLCAweDY4LCAweGE4LCAweDQ1LCAw eGQ3CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzE5Ml91c2VfZGZfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGQ1LCAweGU3LCAw eDA4LCAweGM1LCAweDE5LCAweDk5LCAweGQ1LCAweDMxLCAweDAzLCAweDBhLCAweDc0LCAweGI2 LAorKyAgICAweGI3LCAweGVkLCAweGU5LCAweGVhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcK KysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml91c2VfZGZfZW50cm9weWlu cHV0cmVzZWVkW10gPSB7CisrICAgIDB4OWMsIDB4MjYsIDB4ZGEsIDB4ZjEsIDB4YWMsIDB4ZDks IDB4NWEsIDB4ZDYsIDB4YTgsIDB4NjUsIDB4ZjUsIDB4MDIsCisrICAgIDB4OGYsIDB4ZGMsIDB4 YTIsIDB4MDksIDB4NTQsIDB4YTYsIDB4ZTIsIDB4YTQsIDB4ZGUsIDB4MzIsIDB4ZTAsIDB4MDEK Kyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBhZXNfMTkyX3VzZV9kZl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHg5Yiwg MHg5MCwgMHhiMCwgMHgzYSwgMHgwZSwgMHgzYSwgMHg4MCwgMHgwNywgMHg0YSwgMHhmNCwgMHhk YSwgMHg3NiwKKysgICAgMHgyOCwgMHgzMCwgMHgzYywgMHhlZSwgMHg1NCwgMHgxYiwgMHg5NCwg MHg1OSwgMHg1MSwgMHg0MywgMHg1NiwgMHg3NywKKysgICAgMHhhZiwgMHg4OCwgMHhkZCwgMHg2 MywgMHg4OSwgMHg0NywgMHgwNiwgMHg2NQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX2FkZGl0aW9uYWxpbnB1dDJbXSA9 IHsKKysgICAgMHgzYywgMHgxMSwgMHg2NCwgMHg3YSwgMHg5NiwgMHhmNSwgMHhkOCwgMHhiOCwg MHhhZSwgMHhkNiwgMHg3MCwgMHg0ZSwKKysgICAgMHgxNiwgMHg5NiwgMHhkZSwgMHhlOSwgMHg2 MiwgMHhiYywgMHhlZSwgMHgyOCwgMHgyZiwgMHgyNiwgMHhhNiwgMHhmMCwKKysgICAgMHg1Niwg MHhlZiwgMHhhMywgMHhmMSwgMHg2YiwgMHhhMSwgMHhiMSwgMHg3NworK307CisrCisrX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfdXNlX2RmX3JldHVy bmVkYml0c1tdID0geworKyAgICAweDBiLCAweGUyLCAweDU2LCAweDAzLCAweDFlLCAweGRiLCAw eDJjLCAweDZkLCAweDdmLCAweDFiLCAweDE1LCAweDU4LAorKyAgICAweDFhLCAweGY5LCAweDEz LCAweDI4CisrfTsKKysKKysvKiBBRVMtMjU2IHVzZSBkZiBQUiAgKi8KKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcHJfZW50cm9weWlu cHV0W10gPSB7CisrICAgIDB4NjEsIDB4NjgsIDB4ZmMsIDB4MWEsIDB4ZjAsIDB4YjUsIDB4OTUs IDB4NmIsIDB4ODUsIDB4MDksIDB4OWIsIDB4NzQsCisrICAgIDB4M2YsIDB4MTMsIDB4NzgsIDB4 NDksIDB4M2IsIDB4ODUsIDB4ZWMsIDB4OTMsIDB4MTMsIDB4M2IsIDB4YTksIDB4NGYsCisrICAg IDB4OTYsIDB4YWIsIDB4MmMsIDB4ZTQsIDB4YzgsIDB4OGYsIDB4ZGQsIDB4NmEKKyt9OworKwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9k Zl9wcl9ub25jZVtdID0geworKyAgICAweGFkLCAweGQyLCAweGJiLCAweGJhLCAweGI3LCAweDY1 LCAweDg5LCAweGMzLCAweDIxLCAweDZjLCAweDU1LCAweDMzLAorKyAgICAweDJiLCAweDM2LCAw eGZmLCAweGE0CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7 CisrICAgIDB4NmUsIDB4Y2EsIDB4ZTcsIDB4MjAsIDB4NzIsIDB4ZDMsIDB4ODQsIDB4NWEsIDB4 MzIsIDB4ZDMsIDB4NGIsIDB4MjQsCisrICAgIDB4NzIsIDB4YzQsIDB4NjMsIDB4MmIsIDB4OWQs IDB4MTIsIDB4MjQsIDB4MGMsIDB4MjMsIDB4MjYsIDB4OGUsIDB4ODMsCisrICAgIDB4MTYsIDB4 MzcsIDB4MGIsIDB4ZDEsIDB4MDYsIDB4NGYsIDB4NjgsIDB4NmQKKyt9OworKworK19fZmlwc19j b25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9w cl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHg3ZSwgMHgwOCwgMHg0YSwgMHhiYiwgMHhl MywgMHgyMSwgMHg3YywgMHhjOSwgMHgyMywgMHhkMiwgMHhmOCwgMHhiMCwKKysgICAgMHg3Mywg MHg5OCwgMHhiYSwgMHg4NCwgMHg3NCwgMHgyMywgMHhhYiwgMHgwNiwgMHg4YSwgMHhlMiwgMHgy MiwgMHhkMywKKysgICAgMHg3YiwgMHhjZSwgMHg5YiwgMHhkMiwgMHg0YSwgMHg3NiwgMHhiOCwg MHhkZQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGFlc18yNTZfdXNlX2RmX3ByX2VudHJvcHlpbnB1dHByW10gPSB7CisrICAgIDB4MGIs IDB4MjMsIDB4YWYsIDB4ZGYsIDB4ZjEsIDB4NjIsIDB4ZDcsIDB4ZDMsIDB4NDMsIDB4OTcsIDB4 ZjgsIDB4NzcsCisrICAgIDB4MDQsIDB4YTgsIDB4NDIsIDB4MjAsIDB4YmQsIDB4ZjYsIDB4MGYs IDB4YzEsIDB4MTcsIDB4MmYsIDB4OWYsIDB4NTQsCisrICAgIDB4YmIsIDB4NTYsIDB4MTcsIDB4 ODYsIDB4NjgsIDB4MGUsIDB4YmEsIDB4YTkKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAg ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9wcl9pbnRfcmV0dXJu ZWRiaXRzW10gPSB7CisrICAgIDB4MzEsIDB4OGUsIDB4YWQsIDB4YWYsIDB4NDAsIDB4ZWIsIDB4 NmIsIDB4NzQsIDB4MzEsIDB4NDYsIDB4ODAsIDB4YzcsCisrICAgIDB4MTcsIDB4YWIsIDB4M2Ms IDB4N2EKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4 OTQsIDB4NmIsIDB4YzksIDB4OWYsIDB4YWIsIDB4OGQsIDB4YzUsIDB4ZWMsIDB4NzEsIDB4ODgs IDB4MWQsIDB4MDAsCisrICAgIDB4OGMsIDB4ODksIDB4NjgsIDB4ZTQsIDB4YzgsIDB4MDcsIDB4 NzcsIDB4MzYsIDB4MTcsIDB4NmQsIDB4NzksIDB4NzgsCisrICAgIDB4YzcsIDB4MDYsIDB4NGUs IDB4OTksIDB4MDQsIDB4MjgsIDB4MjksIDB4YzMKKyt9OworKworK19fZmlwc19jb25zdHNlZwor KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9wcl9lbnRyb3B5 aW5wdXRwcjJbXSA9IHsKKysgICAgMHhiZiwgMHg2YywgMHg1OSwgMHgyYSwgMHgwZCwgMHg0NCwg MHgwZiwgMHhhZSwgMHg5YSwgMHg1ZSwgMHgwMywgMHg3MywKKysgICAgMHhkOCwgMHhhNiwgMHhl MSwgMHhjZiwgMHgyNSwgMHg2MSwgMHgzOCwgMHgyNCwgMHg4NiwgMHg5ZSwgMHg1MywgMHhlOCwK KysgICAgMHhhNCwgMHhkZiwgMHg1NiwgMHhmNCwgMHgwNiwgMHgwNywgMHg5YywgMHgwZgorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZf dXNlX2RmX3ByX3JldHVybmVkYml0c1tdID0geworKyAgICAweDIyLCAweDRhLCAweGI0LCAweGI4 LCAweGI2LCAweGVlLCAweDdkLCAweGIxLCAweDllLCAweGM5LCAweGY5LCAweGEwLAorKyAgICAw eGQ5LCAweGUyLCAweDk3LCAweDAwCisrfTsKKysKKysvKiBBRVMtMjU2IHVzZSBkZiBObyBQUiAg Ki8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91 c2VfZGZfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4YTUsIDB4M2UsIDB4MzcsIDB4MTAsIDB4 MTcsIDB4NDMsIDB4OTEsIDB4OTMsIDB4NTksIDB4MWUsIDB4NDcsIDB4NTAsCisrICAgIDB4ODcs IDB4YWEsIDB4ZGQsIDB4ZDUsIDB4YzEsIDB4YzMsIDB4ODYsIDB4Y2QsIDB4Y2EsIDB4MGQsIDB4 ZGIsIDB4NjgsCisrICAgIDB4ZTAsIDB4MDIsIDB4ZDgsIDB4MGYsIDB4ZGMsIDB4NDAsIDB4MWEs IDB4NDcKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBhZXNfMjU2X3VzZV9kZl9ub25jZVtdID0geworKyAgICAweGE5LCAweDRkLCAweGE1LCAweDVh LCAweGZkLCAweGM1LCAweDBjLCAweGU1LCAweDFjLCAweDlhLCAweDNiLCAweDhhLAorKyAgICAw eDRjLCAweDQ0LCAweDg0LCAweDQwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl91c2VfZGZfcGVyc29uYWxpemF0aW9uc3Ry aW5nW10gPSB7CisrICAgIDB4OGIsIDB4NTIsIDB4YTIsIDB4NGEsIDB4OTMsIDB4YzMsIDB4NGUs IDB4YTcsIDB4MWUsIDB4MWMsIDB4YTcsIDB4MDUsCisrICAgIDB4ZWIsIDB4ODIsIDB4OWIsIDB4 YTYsIDB4NWQsIDB4ZTQsIDB4ZDQsIDB4ZTAsIDB4N2YsIDB4YTMsIDB4ZDgsIDB4NmIsCisrICAg IDB4MzcsIDB4ODQsIDB4NWYsIDB4ZjEsIDB4YzcsIDB4ZDUsIDB4ZjYsIDB4ZDIKKyt9OworKwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9k Zl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHgyMCwgMHhmNCwgMHgyMiwgMHhlZCwgMHhm OCwgMHg1YywgMHhhMSwgMHg2YSwgMHgwMSwgMHhjZiwgMHhiZSwgMHg1ZiwKKysgICAgMHg4ZCwg MHg2YywgMHg5NCwgMHg3ZiwgMHhhZSwgMHgxMiwgMHhhOCwgMHg1NywgMHhkYiwgMHgyYSwgMHhh OSwgMHhiZiwKKysgICAgMHhjNywgMHhiMywgMHg2NSwgMHg4MSwgMHg4MCwgMHg4ZCwgMHgwZCwg MHg0NgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGFlc18yNTZfdXNlX2RmX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg0ZSwgMHg0NCwg MHhmZCwgMHhmMywgMHg5ZSwgMHgyOSwgMHhhMiwgMHhiOCwgMHgwZiwgMHg1ZCwgMHg2YywgMHhl MSwKKysgICAgMHgyOCwgMHgwYywgMHgzYiwgMHhjMQorK307CisrCisrX19maXBzX2NvbnN0c2Vn CisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfdXNlX2RmX2VudHJvcHlp bnB1dHJlc2VlZFtdID0geworKyAgICAweGRkLCAweDQwLCAweGU1LCAweDk4LCAweDdiLCAweDI3 LCAweDE2LCAweDczLCAweDE1LCAweDY4LCAweGQyLCAweDc2LAorKyAgICAweGJmLCAweDBjLCAw eDY3LCAweDE1LCAweDc1LCAweDc5LCAweDAzLCAweGQzLCAweGRlLCAweGRlLCAweDkxLCAweDQ2 LAorKyAgICAweDQyLCAweGRkLCAweGQ0LCAweDY3LCAweGM4LCAweDc5LCAweGM4LCAweDFlCisr fTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzI1Nl91c2VfZGZfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4N2YsIDB4 ZDgsIDB4MWYsIDB4YmQsIDB4MmEsIDB4YjUsIDB4MWMsIDB4MTEsIDB4NWQsIDB4ODMsIDB4NGUs IDB4OTksCisrICAgIDB4ZjYsIDB4NWMsIDB4YTUsIDB4NDAsIDB4MjAsIDB4ZWQsIDB4MzgsIDB4 OGUsIDB4ZDUsIDB4OWUsIDB4ZTAsIDB4NzUsCisrICAgIDB4OTMsIDB4ZmUsIDB4MTIsIDB4NWUs IDB4NWQsIDB4NzMsIDB4ZmIsIDB4NzUKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7 CisrICAgIDB4Y2QsIDB4MmMsIDB4ZmYsIDB4MTQsIDB4NjksIDB4M2UsIDB4NGMsIDB4OWUsIDB4 ZmQsIDB4ZmUsIDB4MjYsIDB4MGQsCisrICAgIDB4ZTksIDB4ODYsIDB4MDAsIDB4NDksIDB4MzAs IDB4YmEsIDB4YjEsIDB4YzYsIDB4NTAsIDB4NTcsIDB4NzcsIDB4MmEsCisrICAgIDB4NjIsIDB4 MzksIDB4MmMsIDB4M2IsIDB4NzQsIDB4ZWIsIDB4YzksIDB4MGQKKyt9OworKworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X3VzZV9kZl9yZXR1cm5l ZGJpdHNbXSA9IHsKKysgICAgMHg0ZiwgMHg3OCwgMHhiZSwgMHhiOSwgMHg0ZCwgMHg5NywgMHg4 YywgMHhlOSwgMHhkMCwgMHg5NywgMHhmZSwgMHhhZCwKKysgICAgMHhmYSwgMHhmZCwgMHgzNSwg MHg1ZQorK307CisrCisrLyogQUVTLTEyOCBubyBkZiBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9wcl9lbnRyb3B5aW5wdXRb XSA9IHsKKysgICAgMHg5YSwgMHgyNSwgMHg2NSwgMHgxMCwgMHg2NywgMHhkNSwgMHhiNiwgMHg2 YiwgMHg3MCwgMHhhMSwgMHhiMywgMHhhNCwKKysgICAgMHg0MywgMHg5NSwgMHg4MCwgMHhjMCwg MHg4NCwgMHgwYSwgMHg3OSwgMHhiMCwgMHg4OCwgMHg3NCwgMHhmMiwgMHhiZiwKKysgICAgMHgz MSwgMHg2YywgMHgzMywgMHgzOCwgMHgwYiwgMHgwMCwgMHhiMiwgMHg1YQorK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJf bm9uY2VbXSA9IHsKKysgICAgMHg3OCwgMHg0NywgMHg2YiwgMHhmNywgMHg5MCwgMHg4ZSwgMHg4 NywgMHhmMQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Cisr ICAgIDB4ZjcsIDB4MjIsIDB4MWQsIDB4M2EsIDB4YmUsIDB4MWQsIDB4Y2EsIDB4MzIsIDB4MWIs IDB4YmQsIDB4ODcsIDB4MGMsCisrICAgIDB4NTEsIDB4MjQsIDB4MTksIDB4ZWUsIDB4YTMsIDB4 MjMsIDB4MDksIDB4NjMsIDB4MzMsIDB4M2QsIDB4YTgsIDB4MGMsCisrICAgIDB4MWMsIDB4ZmEs IDB4NDIsIDB4ODksIDB4Y2MsIDB4NmYsIDB4YTAsIDB4YTgKKyt9OworKworK19fZmlwc19jb25z dHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3ByX2Fk ZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweGM5LCAweGUwLCAweDgwLCAweGJmLCAweDhjLCAw eDQ1LCAweDU4LCAweDM5LCAweGZmLCAweDAwLCAweGFiLCAweDAyLAorKyAgICAweDRjLCAweDNl LCAweDNhLCAweDk1LCAweDliLCAweDgwLCAweGE4LCAweDIxLCAweDJhLCAweGVlLCAweGJhLCAw eDczLAorKyAgICAweGIxLCAweGQ5LCAweGNmLCAweDI4LCAweGY2LCAweDhmLCAweDliLCAweDEy CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzEyOF9ub19kZl9wcl9lbnRyb3B5aW5wdXRwcltdID0geworKyAgICAweDRjLCAweGE4LCAweGM1 LCAweGYwLCAweDU5LCAweDllLCAweGE2LCAweDhkLCAweDI2LCAweDUzLCAweGQ3LCAweDhhLAor KyAgICAweGE5LCAweGQ4LCAweGY3LCAweGVkLCAweGIyLCAweGY5LCAweDEyLCAweDQyLCAweGUx LCAweGU1LCAweGJkLCAweGU3LAorKyAgICAweGU3LCAweDFkLCAweDc0LCAweDk5LCAweDAwLCAw eDlkLCAweDMxLCAweDNlCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7 CisrICAgIDB4ZTIsIDB4YWMsIDB4MjAsIDB4ZjAsIDB4ODAsIDB4ZTcsIDB4YmMsIDB4N2UsIDB4 OWMsIDB4N2IsIDB4NjUsIDB4NzEsCisrICAgIDB4YWYsIDB4MTksIDB4MzIsIDB4MTYKKyt9Owor KworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MTI4X25vX2RmX3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHgzMiwgMHg3ZiwgMHgz OCwgMHg4YiwgMHg3MywgMHgwYSwgMHg3OCwgMHg4MywgMHhkYywgMHgzMCwgMHhiZSwgMHg5ZiwK KysgICAgMHgxMCwgMHgxZiwgMHhmNSwgMHgxZiwgMHhjYSwgMHgwMCwgMHhiNSwgMHgwZCwgMHhk NiwgMHg5ZCwgMHg2MCwgMHg4MywKKysgICAgMHg1MSwgMHg1NCwgMHg3ZCwgMHgzOCwgMHgyMywg MHgzYSwgMHg1MiwgMHg1MAorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfcHJfZW50cm9weWlucHV0cHIyW10gPSB7 CisrICAgIDB4MTgsIDB4NjEsIDB4NTMsIDB4NTYsIDB4ZWQsIDB4ZWQsIDB4ZDcsIDB4MjAsIDB4 ZmIsIDB4NzEsIDB4MDQsIDB4N2EsCisrICAgIDB4YjIsIDB4YWMsIDB4YzEsIDB4MjgsIDB4Y2Qs IDB4ZjIsIDB4YzIsIDB4ZmMsIDB4YWEsIDB4YjEsIDB4MDYsIDB4MDcsCisrICAgIDB4ZTksIDB4 NDYsIDB4OTUsIDB4MDIsIDB4NDgsIDB4MDEsIDB4NzgsIDB4ZjkKKyt9OworKworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3ByX3JldHVy bmVkYml0c1tdID0geworKyAgICAweDI5LCAweGM4LCAweDFiLCAweDE1LCAweGIxLCAweGQxLCAw eGMyLCAweGY2LCAweDcxLCAweDg2LCAweDY4LCAweDMzLAorKyAgICAweDU3LCAweDgyLCAweDMz LCAweGFmCisrfTsKKysKKysvKiBBRVMtMTI4IG5vIGRmIE5vIFBSICAqLworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX2VudHJvcHlpbnB1 dFtdID0geworKyAgICAweGM5LCAweGM1LCAweDc5LCAweGJjLCAweGU4LCAweGM1LCAweDE5LCAw eGQ4LCAweGJjLCAweDY2LCAweDczLCAweDY3LAorKyAgICAweGY2LCAweGQzLCAweDcyLCAweGFh LCAweGE2LCAweDE2LCAweGI4LCAweDUwLCAweGI3LCAweDQ3LCAweDNhLCAweDQyLAorKyAgICAw eGFiLCAweGY0LCAweDE2LCAweGIyLCAweDk2LCAweGQyLCAweGI2LCAweDYwCisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzEyOF9ub19kZl9u b25jZVtdID0geworKyAgICAweDVmLCAweGJmLCAweDk3LCAweDBjLCAweDRiLCAweGE0LCAweDg3 LCAweDEzCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgYWVzXzEyOF9ub19kZl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAg MHhjZSwgMHhmYiwgMHg3YiwgMHgzZiwgMHhkNCwgMHg2YiwgMHgyOSwgMHgwZCwgMHg2OSwgMHgw NiwgMHhmZiwgMHhiYiwKKysgICAgMHhmMiwgMHhlNSwgMHhjNiwgMHg2YywgMHgwYSwgMHgxMCwg MHhhMCwgMHhjZiwgMHgxYSwgMHg0OCwgMHhjNywgMHg4YiwKKysgICAgMHgzYywgMHgxNiwgMHg4 OCwgMHhlZCwgMHg1MCwgMHgxMywgMHg4MSwgMHhjZQorK307CisrCisrX19maXBzX2NvbnN0c2Vn IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfYWRkaXRpb25hbGlucHV0 W10gPSB7CisrICAgIDB4NGIsIDB4MjIsIDB4NDYsIDB4MTgsIDB4MDIsIDB4N2IsIDB4ZDIsIDB4 MWIsIDB4MjIsIDB4NDIsIDB4N2MsIDB4MzcsCisrICAgIDB4ZDksIDB4ZjYsIDB4ZTgsIDB4OWIs IDB4MTIsIDB4MzAsIDB4NWYsIDB4ZTksIDB4OTAsIDB4ZTgsIDB4MDgsIDB4MjQsCisrICAgIDB4 NGYsIDB4MDYsIDB4NjYsIDB4ZGIsIDB4MTksIDB4MmIsIDB4MTMsIDB4OTUKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX2lu dF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHgyZSwgMHg5NiwgMHg3MCwgMHg2NCwgMHhmYSwg MHhkZiwgMHhkZiwgMHg1NywgMHhiNSwgMHg4MiwgMHhlZSwgMHhkNiwKKysgICAgMHhlZCwgMHgz ZSwgMHg2NSwgMHhjMgorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18xMjhfbm9fZGZfZW50cm9weWlucHV0cmVzZWVkW10gPSB7Cisr ICAgIDB4MjYsIDB4YzAsIDB4NzIsIDB4MTYsIDB4M2EsIDB4NGIsIDB4YjcsIDB4OTksIDB4ZDQs IDB4MDcsIDB4YWYsIDB4NjYsCisrICAgIDB4NjIsIDB4MzYsIDB4OTYsIDB4YTQsIDB4NTEsIDB4 MTcsIDB4ZmEsIDB4MDcsIDB4OGIsIDB4MTcsIDB4NWUsIDB4YTEsCisrICAgIDB4MmYsIDB4M2Ms IDB4MTAsIDB4ZTcsIDB4OTAsIDB4ZDAsIDB4NDYsIDB4MDAKKyt9OworKworK19fZmlwc19jb25z dHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX2FkZGl0 aW9uYWxpbnB1dHJlc2VlZFtdID0geworKyAgICAweDgzLCAweDM5LCAweDM3LCAweDdiLCAweDAy LCAweDA2LCAweGQyLCAweDEyLCAweDEzLCAweDhkLCAweDhiLCAweGYyLAorKyAgICAweGYwLCAw eGY2LCAweDI2LCAweGViLCAweGE0LCAweDIyLCAweDdiLCAweGMyLCAweGU3LCAweGJhLCAweDc5 LCAweGU0LAorKyAgICAweDNiLCAweDc3LCAweDVkLCAweDRkLCAweDQ3LCAweGIyLCAweDJkLCAw eGI0CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg YWVzXzEyOF9ub19kZl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4MGIsIDB4YjksIDB4 NjcsIDB4MzcsIDB4ZGIsIDB4ODMsIDB4ZGYsIDB4Y2EsIDB4ODEsIDB4OGIsIDB4ZjksIDB4M2Ys CisrICAgIDB4ZjEsIDB4MTEsIDB4MWIsIDB4MmYsIDB4ZjAsIDB4NjEsIDB4YTYsIDB4ZGYsIDB4 YmEsIDB4YTMsIDB4YjEsIDB4YWMsCisrICAgIDB4ZDMsIDB4ZTYsIDB4MDksIDB4YjgsIDB4MmMs IDB4NmEsIDB4NjcsIDB4ZDYKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBhZXNfMTI4X25vX2RmX3JldHVybmVkYml0c1tdID0geworKyAgICAweDFl LCAweGE3LCAweGE0LCAweGU0LCAweGUxLCAweGE2LCAweDdjLCAweDY5LCAweDlhLCAweDQ0LCAw eDZjLCAweDM2LAorKyAgICAweDgxLCAweDM3LCAweDE5LCAweGQ0CisrfTsKKysKKysvKiBBRVMt MTkyIG5vIGRmIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBhZXNfMTkyX25vX2RmX3ByX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweDlkLCAweDJj LCAweGQyLCAweDU1LCAweDY2LCAweGVhLCAweGUwLCAweGJlLCAweDE4LCAweGI3LCAweDc2LCAw eGU3LAorKyAgICAweDczLCAweDM1LCAweGQ4LCAweDFmLCAweGFkLCAweDNhLCAweGUzLCAweDgx LCAweDBlLCAweDkyLCAweGQwLCAweDYxLAorKyAgICAweGM5LCAweDEyLCAweDI2LCAweGY2LCAw eDFjLCAweGRmLCAweGZlLCAweDQ3LCAweGFhLCAweGZlLCAweDdkLCAweDVhLAorKyAgICAweDE3 LCAweDFmLCAweDhkLCAweDlhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9wcl9ub25jZVtdID0geworKyAgICAweDQ0LCAw eDgyLCAweGVkLCAweGU4LCAweDRjLCAweDI4LCAweDVhLCAweDE0LCAweGZmLCAweDg4LCAweDhk LCAweDE5LAorKyAgICAweDYxLCAweDVjLCAweGVlLCAweDBmCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9wcl9w ZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHg0NywgMHhkNywgMHg5YiwgMHg5OSwg MHhhYSwgMHhjYiwgMHhlNywgMHhkMiwgMHg1NywgMHg2NiwgMHgyYywgMHhlMSwKKysgICAgMHg3 OCwgMHhkNiwgMHgyYywgMHhlYSwgMHhhMywgMHgyMywgMHg1ZiwgMHgyYSwgMHhjMSwgMHgzYSwg MHhmMCwgMHhhNCwKKysgICAgMHgyMCwgMHgzYiwgMHhmYSwgMHgwNywgMHhkNSwgMHgwNSwgMHgw MiwgMHhlNCwgMHg1NywgMHgwMSwgMHhiNiwgMHgxMCwKKysgICAgMHg1NywgMHgyZSwgMHhlNywg MHg1NQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4NGIs IDB4NzQsIDB4MGIsIDB4NDAsIDB4Y2UsIDB4NmIsIDB4YzIsIDB4NmEsIDB4MjQsIDB4YjQsIDB4 ZjMsIDB4YWQsCisrICAgIDB4N2EsIDB4YTUsIDB4N2EsIDB4YTIsIDB4MTUsIDB4ZTIsIDB4Yzgs IDB4NjEsIDB4MTUsIDB4YzYsIDB4YjcsIDB4ODUsCisrICAgIDB4NjksIDB4MTEsIDB4YWQsIDB4 N2IsIDB4MTQsIDB4ZDIsIDB4ZjYsIDB4MTIsIDB4YTEsIDB4OTUsIDB4NWQsIDB4M2YsCisrICAg IDB4ZTIsIDB4ZDAsIDB4MGMsIDB4MmYKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3ByX2VudHJvcHlpbnB1dHByW10gPSB7 CisrICAgIDB4MGMsIDB4OWMsIDB4YWQsIDB4MDUsIDB4ZWUsIDB4YWUsIDB4NDgsIDB4MjMsIDB4 ODksIDB4NTksIDB4YTEsIDB4OTQsCisrICAgIDB4ZDcsIDB4ZDgsIDB4NzUsIDB4ZDUsIDB4NTQs IDB4OTMsIDB4YzcsIDB4NGEsIDB4ZDksIDB4MjYsIDB4ZGUsIDB4ZWIsCisrICAgIDB4YmEsIDB4 YjAsIDB4N2UsIDB4MzAsIDB4MWQsIDB4NWYsIDB4NjksIDB4NDAsIDB4OWMsIDB4M2IsIDB4MTcs IDB4NTgsCisrICAgIDB4MWQsIDB4MzAsIDB4YjMsIDB4NzgKKyt9OworKworK19fZmlwc19jb25z dHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3ByX2lu dF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhmNywgMHg5MywgMHhiMCwgMHg2ZCwgMHg3Nywg MHg4MywgMHhkNSwgMHgzOCwgMHgwMSwgMHhlMSwgMHg1MiwgMHg0MCwKKysgICAgMHg3ZSwgMHgz ZSwgMHgwYywgMHgyNgorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfcHJfYWRkaXRpb25hbGlucHV0MltdID0gewor KyAgICAweGJjLCAweDRiLCAweDM3LCAweDQ0LCAweDFjLCAweGM1LCAweDQ1LCAweDVmLCAweDhm LCAweDUxLCAweDYyLCAweDhhLAorKyAgICAweDg1LCAweDMwLCAweDFkLCAweDdjLCAweGU0LCAw eGNmLCAweGY3LCAweDQ0LCAweGNlLCAweDMyLCAweDNlLCAweDU3LAorKyAgICAweDk1LCAweGE0 LCAweDJhLCAweGRmLCAweGZkLCAweDllLCAweDM4LCAweDQxLCAweGIzLCAweGY2LCAweGM1LCAw eGVlLAorKyAgICAweDBjLCAweDRiLCAweGVlLCAweDZlCisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9wcl9lbnRy b3B5aW5wdXRwcjJbXSA9IHsKKysgICAgMHhlYywgMHhhZiwgMHhmNiwgMHg0ZiwgMHhiMSwgMHhh MCwgMHg1NCwgMHhiNSwgMHg1YiwgMHhlMywgMHg0NiwgMHhiMCwKKysgICAgMHg3NiwgMHg1YSwg MHg3YywgMHgzZiwgMHg3YiwgMHg5NCwgMHg2OSwgMHgyMSwgMHg1MSwgMHgwMiwgMHhlNSwgMHg5 ZiwKKysgICAgMHgwNCwgMHg1OSwgMHgwMiwgMHg5OCwgMHhjNiwgMHg0MywgMHgyYywgMHhjYywg MHgyNiwgMHg0YywgMHg4NywgMHg2YiwKKysgICAgMHg4ZSwgMHgwYSwgMHg4MywgMHhkZgorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJf bm9fZGZfcHJfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4NzQsIDB4NDUsIDB4ZmIsIDB4NTMs IDB4ODQsIDB4OTYsIDB4YmUsIDB4ZmYsIDB4MTUsIDB4Y2MsIDB4NDEsIDB4OTEsCisrICAgIDB4 YjksIDB4YTEsIDB4MjEsIDB4NjgKKyt9OworKworKy8qIEFFUy0xOTIgbm8gZGYgTm8gUFIgICov CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9f ZGZfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4M2MsIDB4N2QsIDB4YjUsIDB4ZTAsIDB4NTQs IDB4ZDksIDB4NmUsIDB4OGMsIDB4YTksIDB4ODYsIDB4Y2UsIDB4NGUsCisrICAgIDB4NmIsIDB4 YWYsIDB4ZWIsIDB4MmYsIDB4ZTcsIDB4NzUsIDB4ZTAsIDB4OGIsIDB4YTQsIDB4M2IsIDB4MDcs IDB4ZmUsCisrICAgIDB4YmUsIDB4MzMsIDB4NzUsIDB4OTMsIDB4ODAsIDB4MjcsIDB4YjUsIDB4 MjksIDB4NDcsIDB4OGIsIDB4YzcsIDB4MjgsCisrICAgIDB4OTQsIDB4YzMsIDB4NTksIDB4NjMK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MTkyX25vX2RmX25vbmNlW10gPSB7CisrICAgIDB4NDMsIDB4ZjEsIDB4N2QsIDB4YjgsIDB4YzMs IDB4ZmUsIDB4ZDAsIDB4MjMsIDB4NmIsIDB4YjQsIDB4OTIsIDB4ZGIsCisrICAgIDB4MjksIDB4 ZmQsIDB4NDUsIDB4NzEKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBhZXNfMTkyX25vX2RmX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0g eworKyAgICAweDlmLCAweDI0LCAweDI5LCAweDk5LCAweDllLCAweDAxLCAweGFiLCAweGU5LCAw eDE5LCAweGQ4LCAweDIzLCAweDA4LAorKyAgICAweGI3LCAweGQ2LCAweDdlLCAweDhjLCAweGMw LCAweDllLCAweDdmLCAweDZlLCAweDViLCAweDMzLCAweDIwLCAweDk2LAorKyAgICAweDBiLCAw eDIzLCAweDJjLCAweGE1LCAweDZhLCAweGY4LCAweDFiLCAweDA0LCAweDI2LCAweGRiLCAweDJl LCAweDJiLAorKyAgICAweDNiLCAweDg4LCAweGNlLCAweDM1CisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9hZGRpdGlvbmFs aW5wdXRbXSA9IHsKKysgICAgMHg5NCwgMHhlOSwgMHg3YywgMHgzZCwgMHhhNywgMHhkYiwgMHg2 MCwgMHg4MywgMHgxZiwgMHg5OCwgMHgzZiwgMHgwYiwKKysgICAgMHg4OCwgMHg1OSwgMHg1Nywg MHg1MSwgMHg4OCwgMHg5ZiwgMHg3NiwgMHg0OSwgMHg5ZiwgMHhhNiwgMHhkYSwgMHg3MSwKKysg ICAgMHgxZCwgMHgwZCwgMHg0NywgMHgxNiwgMHg2MywgMHhjNSwgMHg2OCwgMHhlNCwgMHg1ZCwg MHgzOSwgMHg2OSwgMHhiMywKKysgICAgMHgzZSwgMHhiZSwgMHhkNCwgMHg4ZQorK307CisrCisr X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZf aW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGY5LCAweGQ3LCAweGFkLCAweDY5LCAweGFi LCAweDhmLCAweDIzLCAweDU2LCAweDcwLCAweDE3LCAweDRmLCAweDJhLAorKyAgICAweDQ1LCAw eGU3LCAweDRhLCAweGM1CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9ub19kZl9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsK KysgICAgMHhhNiwgMHg3MSwgMHg2YSwgMHgzZCwgMHhiYSwgMHhkMSwgMHhlOCwgMHg2NiwgMHhh NiwgMHhlZiwgMHhiMiwgMHgwZSwKKysgICAgMHhhOCwgMHg5YywgMHhhYSwgMHg0ZSwgMHhhZiwg MHgxNywgMHg4OSwgMHg1MCwgMHgwMCwgMHhkYSwgMHhhMSwgMHhiMSwKKysgICAgMHgwYiwgMHhh NCwgMHhkOSwgMHgzNSwgMHg4OSwgMHhjOCwgMHhlNSwgMHhiMCwgMHhkOSwgMHhiNywgMHhjNCwg MHgzMywKKysgICAgMHg5YiwgMHhjYiwgMHg3ZSwgMHg3NQorK307CisrCisrX19maXBzX2NvbnN0 c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18xOTJfbm9fZGZfYWRkaXRp b25hbGlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4MjcsIDB4MjEsIDB4ZmMsIDB4YzIsIDB4YmQs IDB4ZjMsIDB4M2MsIDB4Y2UsIDB4YzMsIDB4Y2EsIDB4YzEsIDB4MDEsCisrICAgIDB4ZTAsIDB4 ZmYsIDB4OTMsIDB4MTIsIDB4N2QsIDB4NTQsIDB4NDIsIDB4ZTMsIDB4OWYsIDB4MDMsIDB4ZGYs IDB4MjcsCisrICAgIDB4MDQsIDB4MDcsIDB4M2MsIDB4NTMsIDB4N2YsIDB4YTgsIDB4NjYsIDB4 YzgsIDB4OTcsIDB4NGIsIDB4NjEsIDB4NDAsCisrICAgIDB4NWQsIDB4N2EsIDB4MjUsIDB4NzkK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNf MTkyX25vX2RmX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHgyZCwgMHg4ZSwgMHgxNiwg MHg1ZCwgMHgwYiwgMHg5ZiwgMHhlYiwgMHhhYSwgMHhkNiwgMHhlYywgMHgyOCwgMHg3MSwKKysg ICAgMHg3YywgMHgwYiwgMHhjMSwgMHgxZCwgMHhkNCwgMHg0NCwgMHgxOSwgMHg0NywgMHhmZCwg MHgxZCwgMHg3YywgMHhlNSwKKysgICAgMHhmMywgMHgyNywgMHhlMSwgMHhiNiwgMHg3MiwgMHgw YSwgMHhlMCwgMHhlYywgMHgwZSwgMHhjZCwgMHhlZiwgMHgxYSwKKysgICAgMHg5MSwgMHg2YSwg MHhlMywgMHg1ZgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGFlc18xOTJfbm9fZGZfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4ZTUsIDB4ZGEs IDB4YjgsIDB4ZTAsIDB4NjMsIDB4NTksIDB4NWEsIDB4Y2MsIDB4M2QsIDB4ZGMsIDB4OWYsIDB4 ZTgsCisrICAgIDB4NjYsIDB4NjcsIDB4MmMsIDB4OTIKKyt9OworKworKy8qIEFFUy0yNTYgbm8g ZGYgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFl c18yNTZfbm9fZGZfcHJfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4MTUsIDB4YzcsIDB4NWQs IDB4Y2IsIDB4NDEsIDB4NGIsIDB4MTYsIDB4MDEsIDB4M2EsIDB4ZDEsIDB4NDQsIDB4ZTgsCisr ICAgIDB4MjIsIDB4MzIsIDB4YzYsIDB4OWMsIDB4M2YsIDB4ZTcsIDB4NDMsIDB4ZjUsIDB4OWEs IDB4ZDMsIDB4ZWEsIDB4ZjIsCisrICAgIDB4ZDcsIDB4NGUsIDB4NmUsIDB4NmEsIDB4NTUsIDB4 NzMsIDB4NDAsIDB4ZWYsIDB4ODksIDB4YWQsIDB4MGQsIDB4MDMsCisrICAgIDB4OTYsIDB4N2Us IDB4NzgsIDB4ODEsIDB4MmYsIDB4OTEsIDB4MWIsIDB4NDQsIDB4YjAsIDB4MDIsIDB4YmEsIDB4 MWMKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBh ZXNfMjU2X25vX2RmX3ByX25vbmNlW10gPSB7CisrICAgIDB4ZGMsIDB4ZTQsIDB4ZDQsIDB4Mjcs IDB4N2EsIDB4OTAsIDB4ZDcsIDB4OTksIDB4NDMsIDB4YTEsIDB4M2MsIDB4MzAsCisrICAgIDB4 Y2MsIDB4NGIsIDB4ZWUsIDB4MmUKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX3ByX3BlcnNvbmFsaXphdGlvbnN0 cmluZ1tdID0geworKyAgICAweGUzLCAweGU2LCAweGI5LCAweDExLCAweGU0LCAweDdhLCAweGE0 LCAweDQwLCAweDZiLCAweGY4LCAweDczLCAweGY3LAorKyAgICAweDdlLCAweGVjLCAweGM3LCAw eGI5LCAweDk3LCAweGJmLCAweGY4LCAweDI1LCAweDdiLCAweGJlLCAweDExLCAweDliLAorKyAg ICAweDViLCAweDZhLCAweDBjLCAweDJlLCAweDJiLCAweDAxLCAweDUxLCAweGNkLCAweDQxLCAw eDRiLCAweDZiLCAweGFjLAorKyAgICAweDMxLCAweGE4LCAweDBiLCAweGY3LCAweGU2LCAweDU5 LCAweDQyLCAweGI4LCAweDAzLCAweDBjLCAweGY4LCAweDA2CisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9h ZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHg2YSwgMHg5ZiwgMHgwMCwgMHg5MSwgMHhhZSwg MHhmZSwgMHhjZiwgMHg4NCwgMHg5OSwgMHhjZSwgMHhiMSwgMHg0MCwKKysgICAgMHg2ZCwgMHg1 ZCwgMHgzMywgMHgyOCwgMHg4NCwgMHhmNCwgMHg4YywgMHg2MywgMHg0YywgMHg3ZSwgMHhiZCwg MHgyYywKKysgICAgMHg4MCwgMHg3NiwgMHhlZSwgMHg1YSwgMHhhYSwgMHgxNSwgMHgwNywgMHgz MSwgMHhkOCwgMHhiYiwgMHg4YywgMHg2OSwKKysgICAgMHg5ZCwgMHg5ZCwgMHhiYywgMHg3ZSwg MHg0OSwgMHhhZSwgMHhlYywgMHgzOSwgMHg2YiwgMHhkMSwgMHgxZiwgMHg3ZQorK307CisrCisr X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZf cHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysgICAgMHhmMywgMHhiOSwgMHg3NSwgMHg5YywgMHhi ZCwgMHg4OCwgMHhlYSwgMHhhMiwgMHg1MCwgMHhhZCwgMHhkNiwgMHgxNiwKKysgICAgMHgxYSwg MHgxMiwgMHgzYywgMHg4NiwgMHg2OCwgMHhhZiwgMHg2ZiwgMHhiZSwgMHgxOSwgMHhmMiwgMHhl ZSwgMHhjYywKKysgICAgMHhhNSwgMHg3MCwgMHg4NCwgMHg1MywgMHg1MCwgMHhjYiwgMHg5Ziwg MHgxNCwgMHhhOSwgMHhlNSwgMHhlZSwgMHhiOSwKKysgICAgMHg0OCwgMHg0NSwgMHg0MCwgMHhl MiwgMHhjNywgMHhjOSwgMHg5YSwgMHg3NCwgMHhmZiwgMHg4YywgMHg5OSwgMHgxZgorK307Cisr CisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18y NTZfbm9fZGZfcHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweDJlLCAweGYyLCAweDQ1 LCAweDRjLCAweDYyLCAweDJlLCAweDBhLCAweGI5LCAweDZiLCAweGEyLCAweGZkLCAweDU2LAor KyAgICAweDc5LCAweDYwLCAweDkzLCAweGNmCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcKKysg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9wcl9hZGRpdGlvbmFs aW5wdXQyW10gPSB7CisrICAgIDB4YWYsIDB4NjksIDB4MjAsIDB4ZTksIDB4M2IsIDB4MzcsIDB4 OWQsIDB4M2YsIDB4YjQsIDB4ODAsIDB4MDIsIDB4N2EsCisrICAgIDB4MjUsIDB4N2QsIDB4Yjgs IDB4ZGUsIDB4NzEsIDB4YzUsIDB4MDYsIDB4MGMsIDB4YjQsIDB4ZTIsIDB4OGYsIDB4MzUsCisr ICAgIDB4ZDgsIDB4MTQsIDB4MGQsIDB4N2YsIDB4NzYsIDB4NjMsIDB4NGUsIDB4YjUsIDB4ZWUs IDB4ZTksIDB4NmYsIDB4MzQsCisrICAgIDB4YzcsIDB4NWYsIDB4NTYsIDB4MTQsIDB4NGEsIDB4 ZTgsIDB4NzMsIDB4OTUsIDB4NWIsIDB4MWMsIDB4YjksIDB4Y2IKKyt9OworKworK19fZmlwc19j b25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2RmX3By X2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAweGU1LCAweGIwLCAweDJlLCAweDdlLCAweDUy LCAweDMwLCAweGUzLCAweDYzLCAweDgyLCAweGI2LCAweDQ0LCAweGQzLAorKyAgICAweDI1LCAw eDE5LCAweDA1LCAweDI0LCAweDlhLCAweDlmLCAweDVmLCAweDI3LCAweDZhLCAweDI5LCAweGFi LCAweGZhLAorKyAgICAweDA3LCAweGEyLCAweDQyLCAweDBmLCAweGM1LCAweGE4LCAweDk0LCAw eDdjLCAweDE3LCAweDdiLCAweDg1LCAweDgzLAorKyAgICAweDBjLCAweDI1LCAweDBlLCAweDYz LCAweDBiLCAweGU5LCAweDEyLCAweDYwLCAweGNkLCAweGVmLCAweDgwLCAweDBmCisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19k Zl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg1ZSwgMHhmMiwgMHgyNiwgMHhlZiwgMHg5 ZiwgMHg1OCwgMHg1ZCwgMHhkNSwgMHg0YSwgMHgxMCwgMHhmZSwgMHhhNywKKysgICAgMHgyZCwg MHg1ZiwgMHg0YSwgMHg0NgorK307CisrCisrLyogQUVTLTI1NiBubyBkZiBObyBQUiAgKi8KKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9l bnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHhmYiwgMHhjZiwgMHgxYiwgMHg2MSwgMHgxNiwgMHg4 OSwgMHg3OCwgMHgyMywgMHhmNSwgMHhkOCwgMHg5NiwgMHhlMywKKysgICAgMHg0ZSwgMHg2NCwg MHgwYiwgMHgyOSwgMHg5YSwgMHgzZiwgMHhmOCwgMHhhNSwgMHhlZCwgMHhmMiwgMHhmZSwgMHhk YiwKKysgICAgMHgxNiwgMHhjYSwgMHg3ZiwgMHgxMCwgMHhmYSwgMHg1ZSwgMHgxOCwgMHg3Niwg MHgyYywgMHg2MywgMHg1ZSwgMHg5NiwKKysgICAgMHhjZiwgMHhiMywgMHhkNiwgMHhmYywgMHhh ZiwgMHg5OSwgMHgzOSwgMHgyOCwgMHg5YywgMHg2MSwgMHhlOCwgMHhiMworK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFlc18yNTZfbm9fZGZfbm9u Y2VbXSA9IHsKKysgICAgMHgxMiwgMHg5NiwgMHhmMCwgMHg1MiwgMHhmMywgMHg4ZCwgMHg4MSwg MHhjZiwgMHhkZSwgMHg4NiwgMHhmMiwgMHg5OSwKKysgICAgMHg0MywgMHg5NiwgMHhiOSwgMHhm MAorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18yNTZfbm9fZGZfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4NjMs IDB4MGQsIDB4NzgsIDB4ZjUsIDB4OTAsIDB4OGUsIDB4MzIsIDB4NDcsIDB4YjAsIDB4NGQsIDB4 MzcsIDB4NjAsCisrICAgIDB4MDksIDB4OTYsIDB4YmMsIDB4YmYsIDB4OTcsIDB4N2EsIDB4NjIs IDB4MTQsIDB4NDUsIDB4YmQsIDB4OGQsIDB4Y2MsCisrICAgIDB4NjksIDB4ZmIsIDB4MDMsIDB4 ZTEsIDB4ODAsIDB4MWMsIDB4YzcsIDB4ZTIsIDB4MmEsIDB4ZjksIDB4MzcsIDB4M2YsCisrICAg IDB4NjYsIDB4NGQsIDB4NjIsIDB4ZDksIDB4MTAsIDB4ZTAsIDB4YWQsIDB4YzgsIDB4OWEsIDB4 ZjAsIDB4YTgsIDB4NmQKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBhZXNfMjU2X25vX2RmX2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDM2 LCAweGM2LCAweDEzLCAweDYwLCAweGJiLCAweDE0LCAweGFkLCAweDIyLCAweGIwLCAweDM4LCAw eGFjLCAweGE2LAorKyAgICAweDE4LCAweDE2LCAweDkzLCAweDI1LCAweDg2LCAweGI3LCAweGRj LCAweGRjLCAweDM2LCAweDk4LCAweDJiLCAweGY5LAorKyAgICAweDY4LCAweDMzLCAweGQzLCAw eGM2LCAweGZmLCAweGNlLCAweDhkLCAweDE1LCAweDU5LCAweDgyLCAweDc2LCAweGVkLAorKyAg ICAweDZmLCAweDhkLCAweDQ5LCAweDc0LCAweDJmLCAweGRhLCAweGRjLCAweDFmLCAweDE3LCAw eGQwLCAweGRlLCAweDE3CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgYWVzXzI1Nl9ub19kZl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4 MTYsIDB4MmYsIDB4OGUsIDB4M2YsIDB4MjEsIDB4N2EsIDB4MWMsIDB4MjAsIDB4NTYsIDB4ZDEs IDB4OTIsIDB4ZjYsCisrICAgIDB4ZDIsIDB4MjUsIDB4NzUsIDB4MGUKKyt9OworKworK19fZmlw c19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhZXNfMjU2X25vX2Rm X2VudHJvcHlpbnB1dHJlc2VlZFtdID0geworKyAgICAweDkxLCAweDc5LCAweDc2LCAweGVlLCAw eGUwLCAweGNmLCAweDllLCAweGMyLCAweGQ1LCAweGQ0LCAweDIzLCAweDliLAorKyAgICAweDEy LCAweDhjLCAweDdlLCAweDBhLCAweGI3LCAweGQyLCAweDhiLCAweGQ2LCAweDdjLCAweGEzLCAw eGM2LCAweGU1LAorKyAgICAweDBlLCAweGFhLCAweGM3LCAweDZiLCAweGFlLCAweDBkLCAweGZh LCAweDUzLCAweDA2LCAweDc5LCAweGExLCAweGVkLAorKyAgICAweDRkLCAweDZhLCAweDBlLCAw eGQ4LCAweDlkLCAweGJlLCAweDFiLCAweDMxLCAweDkzLCAweDdiLCAweGVjLCAweGZiCisrfTsK KysKKytfX2ZpcHNfY29uc3RzZWcKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVz XzI1Nl9ub19kZl9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHhkMiwgMHg0Niwg MHg1MCwgMHgyMiwgMHgxMCwgMHgxNCwgMHg2MywgMHhmNywgMHhlYSwgMHgwZiwgMHhiOSwgMHg3 ZSwKKysgICAgMHgwZCwgMHhlMSwgMHg5NCwgMHgwNywgMHhhZiwgMHgwOSwgMHg0NCwgMHgzMSwg MHhlYSwgMHg2NCwgMHhhNCwgMHgxOCwKKysgICAgMHg1YiwgMHhmOSwgMHhkOCwgMHhjMiwgMHhm YSwgMHgwMywgMHg0NywgMHhjNSwgMHgzOSwgMHg0MywgMHhkNSwgMHgzYiwKKysgICAgMHg2Miwg MHg4NiwgMHg2NCwgMHhlYSwgMHgyYywgMHg3MywgMHg4YywgMHhhZSwgMHg5ZCwgMHg5OCwgMHg5 OCwgMHgyOQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGFlc18yNTZfbm9fZGZfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweDhjLCAweGFi LCAweDE4LCAweGY4LCAweGMzLCAweGVjLCAweDE4LCAweDVjLCAweGIzLCAweDFlLCAweDlkLCAw eGJlLAorKyAgICAweDNmLCAweDAzLCAweGI0LCAweDAwLCAweDk4LCAweDlkLCAweGFlLCAweGVi LCAweGY0LCAweDk0LCAweGY4LCAweDQyLAorKyAgICAweDhmLCAweGUzLCAweDM5LCAweDA3LCAw eGUxLCAweGM5LCAweGFkLCAweDBiLCAweDFmLCAweGVkLCAweGMwLCAweGJhLAorKyAgICAweGY2 LCAweGQxLCAweGVjLCAweDI3LCAweDg2LCAweDdiLCAweGQ2LCAweDU1LCAweDliLCAweDYwLCAw eGE1LCAweGM2CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgYWVzXzI1Nl9ub19kZl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhlZiwgMHhkMiwg MHhkOCwgMHg1YywgMHhkYywgMHg2MiwgMHgyNSwgMHg5ZiwgMHhhYSwgMHgxZSwgMHgyYywgMHg2 NywKKysgICAgMHhmNiwgMHgwMiwgMHgzMiwgMHhlMgorK307CisrCisrLyogU0hBLTEgUFIgICov CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJfZW50 cm9weWlucHV0W10gPSB7CisrICAgIDB4ZDIsIDB4MzYsIDB4YTUsIDB4MjcsIDB4MzEsIDB4NzMs IDB4ZGQsIDB4MTEsIDB4NGYsIDB4OTMsIDB4YmQsIDB4ZTIsCisrICAgIDB4MzEsIDB4YTUsIDB4 OTEsIDB4MTMKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBzaGExX3ByX25vbmNlW10gPSB7CisrICAgIDB4YjUsIDB4YjMsIDB4NjAsIDB4ZWYsIDB4 ZjcsIDB4NjMsIDB4MzEsIDB4ZjMKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGExX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAg ICAweGQ0LCAweGJiLCAweDAyLCAweDEwLCAweGIyLCAweDcxLCAweGRiLCAweDgxLCAweGQ2LCAw eGYwLCAweDQyLCAweDYwLAorKyAgICAweGRhLCAweGVhLCAweDc3LCAweDUyCisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9wcl9hZGRpdGlv bmFsaW5wdXRbXSA9IHsKKysgICAgMHg0ZCwgMHhkMiwgMHg2YywgMHg4NywgMHhmYiwgMHgyYywg MHg0ZiwgMHhhNiwgMHg4ZCwgMHgxNiwgMHg2MywgMHgyMiwKKysgICAgMHg2YSwgMHg1MSwgMHhl MywgMHhmOAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIHNoYTFfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysgICAgMHhjOSwgMHg4MywgMHg5ZSwg MHgxNiwgMHhmNiwgMHgxYywgMHgwZiwgMHhiMiwgMHhlYywgMHg2MCwgMHgzMSwgMHhhOSwKKysg ICAgMHhjYiwgMHhhOSwgMHgzNiwgMHg3YQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAg ICAweGE4LCAweDEzLCAweDRmLCAweGY0LCAweDMxLCAweDAyLCAweDQ0LCAweGUzLCAweGQzLCAw eDNkLCAweDYxLCAweDllLAorKyAgICAweGU1LCAweGM2LCAweDNlLCAweDg5LCAweGI1LCAweDli LCAweDBmLCAweDM1CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgc2hhMV9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4ZjksIDB4ZTgs IDB4ZDIsIDB4NzIsIDB4MTMsIDB4MzQsIDB4OTUsIDB4NmYsIDB4MTUsIDB4NDksIDB4NDcsIDB4 OTksCisrICAgIDB4MTYsIDB4MDMsIDB4MTksIDB4NDcKKyt9OworKworK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX3ByX2VudHJvcHlpbnB1dHByMltdID0g eworKyAgICAweDRlLCAweDhjLCAweDQ5LCAweDliLCAweDRhLCAweDVjLCAweDliLCAweDljLCAw eDNhLCAweGVlLCAweGZiLCAweGQyLAorKyAgICAweGFlLCAweGNkLCAweDhjLCAweGM0CisrfTsK KysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9wcl9y ZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg1MCwgMHhiNCwgMHhiNCwgMHhjZCwgMHg2OCwgMHg1 NywgMHhmYywgMHgyZSwgMHhjMSwgMHg1MiwgMHhjYywgMHhmNiwKKysgICAgMHg2OCwgMHhhNCwg MHg4MSwgMHhlZCwgMHg3ZSwgMHhlNCwgMHgxZCwgMHg4NworK307CisrCisrLyogU0hBLTEgTm8g UFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFf ZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4YTksIDB4NDcsIDB4MWIsIDB4MjksIDB4MmQsIDB4 MWMsIDB4MDUsIDB4ZGYsIDB4NzYsIDB4ZDAsIDB4NjIsIDB4ZjksCisrICAgIDB4ZTIsIDB4N2Ys IDB4NGMsIDB4N2IKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBzaGExX25vbmNlW10gPSB7CisrICAgIDB4NTMsIDB4MjMsIDB4MjQsIDB4ZTMsIDB4 ZWMsIDB4MGMsIDB4NTQsIDB4MTQKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGExX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAw eDdhLCAweDg3LCAweGExLCAweGFjLCAweDFjLCAweGZkLCAweGFiLCAweGFlLCAweGY3LCAweGQ2 LCAweGZiLCAweDc2LAorKyAgICAweDI4LCAweGVjLCAweDZkLCAweGNhCisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9hZGRpdGlvbmFsaW5w dXRbXSA9IHsKKysgICAgMHhmYywgMHg5MiwgMHgzNSwgMHhkNiwgMHg3ZSwgMHhiNywgMHgyNCwg MHg2NSwgMHhmZCwgMHgxMiwgMHgyNywgMHgzNSwKKysgICAgMHhjMCwgMHg3MiwgMHhjYSwgMHgy OAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNo YTFfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweDU3LCAweDg4LCAweDgyLCAweGU1LCAw eDI1LCAweGE1LCAweDJjLCAweDRhLCAweDA2LCAweDIwLCAweDZjLCAweDcyLAorKyAgICAweDU1 LCAweDYxLCAweGRkLCAweDkwLCAweDcxLCAweDlmLCAweDk1LCAweGVhCisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMV9lbnRyb3B5aW5wdXRy ZXNlZWRbXSA9IHsKKysgICAgMHg2OSwgMHhhNSwgMHg0MCwgMHg2MiwgMHg5OCwgMHg0NywgMHg1 NiwgMHg3MywgMHg0YSwgMHg4ZiwgMHg2MCwgMHg5NiwKKysgICAgMHhkNiwgMHg5OSwgMHgyNywg MHhlZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTFfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4ZTUsIDB4NDAsIDB4NGUs IDB4YmQsIDB4NTAsIDB4MDAsIDB4ZjUsIDB4MTUsIDB4YTYsIDB4ZWUsIDB4NDUsIDB4ZGEsCisr ICAgIDB4ODQsIDB4M2QsIDB4ZDQsIDB4YzAKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGExX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAg MHgxMSwgMHg1MSwgMHgxNCwgMHhmMCwgMHgwOSwgMHgxYiwgMHg0ZSwgMHg1NiwgMHgwZCwgMHhl OSwgMHhmNiwgMHgxZSwKKysgICAgMHg1MiwgMHg2NSwgMHhjZCwgMHg5NgorK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTFfcmV0dXJuZWRiaXRz W10gPSB7CisrICAgIDB4YTEsIDB4OWMsIDB4OTQsIDB4NmUsIDB4MjksIDB4ZTEsIDB4MzMsIDB4 MGQsIDB4MzIsIDB4ZDYsIDB4YWEsIDB4Y2UsCisrICAgIDB4NzEsIDB4M2YsIDB4NTIsIDB4NzIs IDB4OGIsIDB4NDIsIDB4YTgsIDB4ZDcKKyt9OworKworKy8qIFNIQS0yMjQgUFIgICovCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9lbnRyb3B5 aW5wdXRbXSA9IHsKKysgICAgMHgxMiwgMHg2OSwgMHgzMiwgMHg0ZiwgMHg4MywgMHhhNiwgMHhm NSwgMHgxNCwgMHhlMywgMHg0OSwgMHgzZSwgMHg3NSwKKysgICAgMHgzZSwgMHhkZSwgMHhhZCwg MHhhMSwgMHgyOSwgMHhjMywgMHhmMywgMHgxOSwgMHgyMCwgMHhiNSwgMHg0YywgMHhkOQorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9w cl9ub25jZVtdID0geworKyAgICAweDZhLCAweDc4LCAweGQwLCAweGViLCAweGJiLCAweDVhLCAw eGYwLCAweGVlLCAweGU4LCAweGMzLCAweGJhLCAweDcxCisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3ByX3BlcnNvbmFsaXphdGlvbnN0 cmluZ1tdID0geworKyAgICAweGQ1LCAweGI4LCAweGI2LCAweGJjLCAweGMxLCAweDViLCAweDYw LCAweDMxLCAweDNjLCAweGY1LCAweGU1LCAweGMwLAorKyAgICAweDhlLCAweDUyLCAweDdhLCAw eGJkLCAweGVhLCAweDQ3LCAweGE5LCAweDVmLCAweDhmLCAweGY5LCAweDhiLCAweGFlCisrfTsK KysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X3By X2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDFmLCAweDU1LCAweGVjLCAweGFlLCAweDE2 LCAweDEyLCAweDg0LCAweGJhLCAweDg0LCAweDE2LCAweDE5LCAweDg4LAorKyAgICAweDhlLCAw eGI4LCAweDMzLCAweDI1LCAweDU0LCAweGZmLCAweGNhLCAweDc5LCAweGFmLCAweDA3LCAweDI1 LCAweDUwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgc2hhMjI0X3ByX2VudHJvcHlpbnB1dHByW10gPSB7CisrICAgIDB4OTIsIDB4YTMsIDB4MzIs IDB4YTgsIDB4OWEsIDB4MGEsIDB4NTgsIDB4N2MsIDB4MWQsIDB4NWEsIDB4N2UsIDB4ZTEsCisr ICAgIDB4YjIsIDB4NzMsIDB4YWIsIDB4MGUsIDB4MTYsIDB4NzksIDB4MjMsIDB4ZDMsIDB4Mjks IDB4ODksIDB4ODEsIDB4ZTEKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzaGEyMjRfcHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGYz LCAweDM4LCAweDkxLCAweDQwLCAweDM3LCAweDdhLCAweDUxLCAweDcyLCAweDQyLCAweDc0LCAw eDc4LCAweDBhLAorKyAgICAweDY5LCAweGZkLCAweGE2LCAweDQ0LCAweDQzLCAweDQ1LCAweDZj LCAweDBjLCAweDVhLCAweDE5LCAweGZmLCAweGYxLAorKyAgICAweDU0LCAweDYwLCAweGVlLCAw eDZhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMjI0X3ByX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg3NSwgMHhmMywgMHgwNCwg MHgyNSwgMHhkZCwgMHgzNiwgMHhhOCwgMHgzNywgMHg0NiwgMHhhZSwgMHgwYywgMHg1MiwKKysg ICAgMHgwNSwgMHg3OSwgMHg0YywgMHgyNiwgMHhkYiwgMHhlOSwgMHg3MSwgMHgxNiwgMHg0Yywg MHgwYSwgMHhmMiwgMHg2MAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKKysgICAgMHhlYSwg MHhjNSwgMHgwMywgMHgwYSwgMHg0ZiwgMHhiMCwgMHgzOCwgMHg4ZCwgMHgyMywgMHhkNCwgMHhj OCwgMHg3NywKKysgICAgMHhlMiwgMHg2ZCwgMHg5YywgMHgwYiwgMHg0NCwgMHhmNywgMHgyZCwg MHg1YiwgMHhiZiwgMHg1ZCwgMHgyYSwgMHgxMQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTIyNF9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysg ICAgMHg2MCwgMHg1MCwgMHgyYiwgMHhlNywgMHg4NiwgMHhkOCwgMHgyNiwgMHg3MywgMHhlMywg MHgxZCwgMHg5NSwgMHgyMCwKKysgICAgMHhiMywgMHgyYywgMHgzMiwgMHgxYywgMHhmNSwgMHhj ZSwgMHg1NywgMHhhNiwgMHg2NywgMHgyYiwgMHhkYywgMHg0ZSwKKysgICAgMHhkZCwgMHgxMSwg MHg0YywgMHhjNAorK307CisrCisrLyogU0hBLTIyNCBObyBQUiAgKi8KKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2VudHJvcHlpbnB1dFtdID0gewor KyAgICAweGIyLCAweDFjLCAweDc3LCAweDRkLCAweGY2LCAweGQzLCAweGI2LCAweDQwLCAweGI3 LCAweDMwLCAweDNlLCAweDI5LAorKyAgICAweGIwLCAweDg1LCAweDFjLCAweGJlLCAweDRhLCAw eGVhLCAweDZiLCAweDVhLCAweGI1LCAweDhhLCAweDk3LCAweGViCisrfTsKKysKKytfX2ZpcHNf Y29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X25vbmNlW10gPSB7Cisr ICAgIDB4NDIsIDB4MDIsIDB4MGEsIDB4MWMsIDB4OTgsIDB4OWEsIDB4NzcsIDB4OWUsIDB4OWYs IDB4ODAsIDB4YmEsIDB4ZTAKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzaGEyMjRfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4 OTgsIDB4YjgsIDB4MDQsIDB4NDEsIDB4ZmMsIDB4YzEsIDB4NWQsIDB4YzUsIDB4ZTksIDB4Yjks IDB4MDgsIDB4ZGEsCisrICAgIDB4ZjksIDB4ZmEsIDB4MGQsIDB4OTAsIDB4Y2UsIDB4ZGYsIDB4 MWQsIDB4MTAsIDB4YTksIDB4OGQsIDB4NTAsIDB4MGMKKyt9OworKworK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfYWRkaXRpb25hbGlucHV0W10gPSB7 CisrICAgIDB4OWEsIDB4OGQsIDB4MzksIDB4NDksIDB4NDIsIDB4ZDUsIDB4MGIsIDB4YWUsIDB4 ZTEsIDB4YWYsIDB4YjcsIDB4MDAsCisrICAgIDB4MDIsIDB4ZmEsIDB4OTYsIDB4YjEsIDB4YTUs IDB4MWQsIDB4MmQsIDB4MjUsIDB4NzgsIDB4ZWUsIDB4ODMsIDB4M2YKKyt9OworKworK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyMjRfaW50X3JldHVybmVk Yml0c1tdID0geworKyAgICAweGU0LCAweGY1LCAweDUzLCAweDc5LCAweDVhLCAweDk3LCAweDU4 LCAweDA2LCAweDA4LCAweGJhLCAweDdiLCAweGZhLAorKyAgICAweGYwLCAweDgzLCAweDA1LCAw eDhjLCAweDIyLCAweGMwLCAweGM5LCAweGRiLCAweDE1LCAweGU3LCAweGRlLCAweDIwLAorKyAg ICAweDU1LCAweDIyLCAweDlhLCAweGFkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2VudHJvcHlpbnB1dHJlc2VlZFtdID0geworKyAg ICAweDY3LCAweDA5LCAweDQ4LCAweGFhLCAweDA3LCAweDE2LCAweDk5LCAweDg5LCAweDdmLCAw eDZkLCAweGEwLCAweGU1LAorKyAgICAweDhmLCAweGRmLCAweGJjLCAweGRiLCAweGZlLCAweGU1 LCAweDZjLCAweDdhLCAweDk1LCAweDRhLCAweDY2LCAweDE3CisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2FkZGl0aW9uYWxpbnB1dHJl c2VlZFtdID0geworKyAgICAweDBmLCAweDRiLCAweDFjLCAweDZmLCAweGI3LCAweGUzLCAweDQ3 LCAweGU1LCAweDVkLCAweDdkLCAweDM4LCAweGQ2LAorKyAgICAweDI4LCAweDliLCAweGViLCAw eDU1LCAweDYzLCAweDA5LCAweDNlLCAweDdjLCAweDU2LCAweGVhLCAweGY4LCAweDE5CisrfTsK KysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjI0X2Fk ZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHgyZCwgMHgyNiwgMHg3YywgMHgzNywgMHhlNCwg MHg3YSwgMHgyOCwgMHg1ZSwgMHg1YSwgMHgzYywgMHhhZiwgMHgzZCwKKysgICAgMHg1YSwgMHg4 ZSwgMHg1NSwgMHhhMiwgMHgxYSwgMHg2ZSwgMHhjMCwgMHhlNSwgMHhmNiwgMHgyMSwgMHhkMywg MHhmNgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTIyNF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg0ZCwgMHg4MywgMHgzNSwgMHhkZiwg MHg2NywgMHhhOSwgMHhmYywgMHgxNywgMHhkYSwgMHg3MCwgMHhjYywgMHg4YiwKKysgICAgMHg3 ZiwgMHg3NywgMHhhZSwgMHhhMiwgMHg1ZiwgMHhiOSwgMHg3ZSwgMHg3NCwgMHg0YywgMHgyNiwg MHhjMSwgMHg3YSwKKysgICAgMHgzYiwgMHhhNywgMHg1YywgMHg5MworK307CisrCisrLyogU0hB LTI1NiBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMjU2X3ByX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweGNlLCAweDQ5LCAweDAwLCAweDdh LCAweDU2LCAweGUzLCAweDY3LCAweDhmLCAweGUxLCAweGI2LCAweGE3LCAweGQ0LAorKyAgICAw eDRmLCAweDA4LCAweDdhLCAweDFiLCAweDAxLCAweGY0LCAweGZhLCAweDZiLCAweGVmLCAweGI3 LCAweGU1LCAweGViLAorKyAgICAweDA3LCAweDNkLCAweDExLCAweDBkLCAweGM4LCAweGVhLCAw eDJiLCAweGZlCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgc2hhMjU2X3ByX25vbmNlW10gPSB7CisrICAgIDB4NzMsIDB4NDEsIDB4YzgsIDB4OTIs IDB4OTQsIDB4ZTIsIDB4YzUsIDB4NWYsIDB4OTMsIDB4ZmQsIDB4MzksIDB4NWQsCisrICAgIDB4 MmIsIDB4OTEsIDB4NGQsIDB4MzgKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7Cisr ICAgIDB4NTAsIDB4NmQsIDB4MDEsIDB4MDEsIDB4MDcsIDB4NWEsIDB4ODAsIDB4MzUsIDB4N2Es IDB4NTYsIDB4MWEsIDB4NTYsCisrICAgIDB4MmYsIDB4OWEsIDB4MGIsIDB4MzUsIDB4YjIsIDB4 YjEsIDB4YzksIDB4ZTUsIDB4Y2EsIDB4NjksIDB4NjEsIDB4NDgsCisrICAgIDB4ZmYsIDB4ZmIs IDB4MGYsIDB4ZDksIDB4NGIsIDB4NzksIDB4MWQsIDB4YmEKKyt9OworKworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcHJfYWRkaXRpb25hbGlucHV0 W10gPSB7CisrICAgIDB4MjAsIDB4YjgsIDB4ZGYsIDB4NDQsIDB4NzcsIDB4NWEsIDB4YjgsIDB4 ZDMsIDB4YmYsIDB4ZjYsIDB4Y2YsIDB4YWMsCisrICAgIDB4NWUsIDB4YTYsIDB4OTYsIDB4NjIs IDB4NzMsIDB4NDQsIDB4NDAsIDB4NGEsIDB4MzAsIDB4ZmIsIDB4MzgsIDB4YTUsCisrICAgIDB4 N2IsIDB4MGQsIDB4ZTQsIDB4MGQsIDB4YzYsIDB4ZTQsIDB4OWEsIDB4MWYKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfcHJfZW50cm9w eWlucHV0cHJbXSA9IHsKKysgICAgMHgwNCwgMHhjNCwgMHg2NSwgMHhmNCwgMHhkMywgMHhiZiwg MHg4MywgMHg0YiwgMHhhYiwgMHhjOCwgMHg0MSwgMHhhOCwKKysgICAgMHhjMiwgMHhlMCwgMHg0 NCwgMHg2MywgMHg3NywgMHg0YywgMHg2ZiwgMHg2YywgMHg0OSwgMHg0NiwgMHhmZiwgMHg5NCwK KysgICAgMHgxNywgMHhlYSwgMHhlNiwgMHgxYSwgMHg5ZCwgMHg1ZSwgMHg2NiwgMHg3OAorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9w cl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAgIDB4MDcsIDB4NGQsIDB4YWMsIDB4OWIsIDB4 ODYsIDB4Y2EsIDB4NGEsIDB4YWEsIDB4NmUsIDB4N2EsIDB4MDMsIDB4YTIsCisrICAgIDB4NWQs IDB4MTAsIDB4ZWEsIDB4MGIsIDB4ZjksIDB4ODMsIDB4Y2MsIDB4ZDEsIDB4ZmMsIDB4ZTIsIDB4 MDcsIDB4YzcsCisrICAgIDB4MDYsIDB4MzQsIDB4NjAsIDB4NmYsIDB4ODMsIDB4OTQsIDB4OTks IDB4NzYKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBzaGEyNTZfcHJfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweDg5LCAweDRlLCAweDQ1 LCAweDhjLCAweDExLCAweGY5LCAweGJjLCAweDViLCAweGFjLCAweDc0LCAweDhiLCAweDRiLAor KyAgICAweDVmLCAweGY3LCAweDE5LCAweGYzLCAweGY1LCAweDI0LCAweDU0LCAweDE0LCAweGQx LCAweDE1LCAweGIxLCAweDQzLAorKyAgICAweDEyLCAweGE0LCAweDVmLCAweGQ0LCAweGVjLCAw eGZjLCAweGNkLCAweDA5CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgc2hhMjU2X3ByX2VudHJvcHlpbnB1dHByMltdID0geworKyAgICAweDBlLCAw eGViLCAweDFmLCAweGQ3LCAweGZjLCAweGQxLCAweDlkLCAweGQ0LCAweDA1LCAweDM2LCAweDhi LCAweGIyLAorKyAgICAweGZiLCAweGU0LCAweGY0LCAweDUxLCAweDBjLCAweDg3LCAweDliLCAw eDAyLCAweDQ0LCAweGQ1LCAweDkyLCAweDRkLAorKyAgICAweDQ0LCAweGZlLCAweDFhLCAweDAz LCAweDQzLCAweDU2LCAweGJkLCAweDg2CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMjU2X3ByX3JldHVybmVkYml0c1tdID0geworKyAgICAw eDAyLCAweGFhLCAweGI2LCAweDFkLCAweDdlLCAweDJhLCAweDQwLCAweDAzLCAweDY5LCAweDJk LCAweDQ5LCAweGEzLAorKyAgICAweDQxLCAweGU3LCAweDQ0LCAweDBiLCAweGFmLCAweDdiLCAw eDg1LCAweGU0LCAweDVmLCAweDUzLCAweDNiLCAweDY0LAorKyAgICAweGJjLCAweDg5LCAweGM4 LCAweDgyLCAweGQ0LCAweDc4LCAweDM3LCAweGEyCisrfTsKKysKKysvKiBTSEEtMjU2IE5vIFBS ICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZf ZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4NWIsIDB4MWIsIDB4ZWMsIDB4NGQsIDB4YTksIDB4 MzgsIDB4NzQsIDB4NWEsIDB4MzQsIDB4MGIsIDB4N2IsIDB4YzUsCisrICAgIDB4ZTUsIDB4ZDcs IDB4NjYsIDB4N2MsIDB4YmMsIDB4ODIsIDB4YjksIDB4MGUsIDB4MmQsIDB4MWYsIDB4OTIsIDB4 ZDcsCisrICAgIDB4YzEsIDB4YmMsIDB4NjcsIDB4NjksIDB4ZWMsIDB4NmIsIDB4MDMsIDB4M2MK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEy NTZfbm9uY2VbXSA9IHsKKysgICAgMHhhNCwgMHgwYywgMHhkOCwgMHg5YywgMHg2MSwgMHhkOCwg MHhjMywgMHg1NCwgMHhmZSwgMHg1MywgMHhjOSwgMHhlNSwKKysgICAgMHg1ZCwgMHg2ZiwgMHg2 ZCwgMHgzNQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIHNoYTI1Nl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHgyMiwgMHg1ZSwg MHg2MiwgMHg5MywgMHg0MiwgMHg4MywgMHg3OCwgMHgyNCwgMHhkOCwgMHg0MCwgMHg4YywgMHhk ZSwKKysgICAgMHg2ZiwgMHhmOSwgMHhhNCwgMHg3YSwgMHhjNSwgMHhhNywgMHgzYiwgMHg4OCwg MHhhMywgMHhlZSwgMHg0MiwgMHgyMCwKKysgICAgMHhmZCwgMHg2MSwgMHg1NiwgMHhjNiwgMHg0 YywgMHgxMywgMHg0MSwgMHg5YworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHhiZiwg MHg3NCwgMHg1YiwgMHhmNiwgMHhjNSwgMHg2NCwgMHg1ZSwgMHg5OSwgMHgzNCwgMHg4ZiwgMHhi YywgMHhhNCwKKysgICAgMHhlMiwgMHhiZCwgMHhkOCwgMHg4NSwgMHgyNiwgMHgzNywgMHhlYSwg MHhiYSwgMHg0ZiwgMHhmMiwgMHg5YSwgMHg5YSwKKysgICAgMHg2NiwgMHhmYywgMHhkZiwgMHg2 MywgMHgyNiwgMHgyNiwgMHgxOSwgMHg4NworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTI1Nl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAg IDB4YjMsIDB4YzYsIDB4MDcsIDB4MDcsIDB4ZDYsIDB4NzUsIDB4ZjYsIDB4MmIsIDB4ZDYsIDB4 MjEsIDB4OTYsIDB4ZjEsCisrICAgIDB4YWUsIDB4ZGIsIDB4MmIsIDB4YWMsIDB4MjUsIDB4MmEs IDB4YWUsIDB4YWUsIDB4NDEsIDB4NzIsIDB4MDMsIDB4NWUsCisrICAgIDB4YmYsIDB4ZDMsIDB4 NjQsIDB4YmMsIDB4NTksIDB4ZjksIDB4YzAsIDB4NzYKKyt9OworKworK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfZW50cm9weWlucHV0cmVzZWVkW10g PSB7CisrICAgIDB4YmYsIDB4MjAsIDB4MzMsIDB4NTYsIDB4MjksIDB4YTgsIDB4MzcsIDB4MDQs IDB4MWYsIDB4NzgsIDB4MzQsIDB4M2QsCisrICAgIDB4ODEsIDB4MmEsIDB4YzksIDB4ODYsIDB4 YzYsIDB4N2EsIDB4MmYsIDB4ODgsIDB4NWUsIDB4ZDUsIDB4YmUsIDB4MzQsCisrICAgIDB4NDYs IDB4MjAsIDB4YTQsIDB4MzUsIDB4ZWIsIDB4YzcsIDB4ZTIsIDB4OWQKKyt9OworKworK19fZmlw c19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZfYWRkaXRpb25hbGlu cHV0cmVzZWVkW10gPSB7CisrICAgIDB4OWIsIDB4YWUsIDB4MmQsIDB4MmQsIDB4NjEsIDB4YTQs IDB4ODksIDB4ZWIsIDB4NDMsIDB4NDYsIDB4YTcsIDB4ZGEsCisrICAgIDB4ZWYsIDB4NDAsIDB4 Y2EsIDB4NGEsIDB4OTksIDB4MTEsIDB4NDEsIDB4ZGMsIDB4NWMsIDB4OTQsIDB4ZTksIDB4YWMs CisrICAgIDB4ZDQsIDB4ZDAsIDB4ZTYsIDB4YmQsIDB4ZmIsIDB4MDMsIDB4OWMsIDB4YTgKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEyNTZf YWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweDIzLCAweGFhLCAweDBjLCAweGJkLCAweDI4 LCAweDMzLCAweGUyLCAweDUxLCAweGZjLCAweDcxLCAweGQyLCAweDE1LAorKyAgICAweDFmLCAw eDc2LCAweGZkLCAweDBkLCAweGUwLCAweGI3LCAweGI1LCAweDg0LCAweDc1LCAweDViLCAweGJl LCAweGYzLAorKyAgICAweDVjLCAweGNhLCAweGM1LCAweDMwLCAweGYyLCAweDc1LCAweDFmLCAw eGRhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg c2hhMjU2X3JldHVybmVkYml0c1tdID0geworKyAgICAweDkwLCAweDNjLCAweGMxLCAweDEwLCAw eDhjLCAweDEyLCAweDAxLCAweGM2LCAweGE2LCAweDNhLCAweDBmLCAweDRkLAorKyAgICAweGI2 LCAweDNhLCAweDRmLCAweDQxLCAweDljLCAweDYxLCAweDc1LCAweDg0LCAweGU5LCAweDc0LCAw eDc1LCAweGZkLAorKyAgICAweGZlLCAweGYyLCAweDFmLCAweDQzLCAweGQ4LCAweDVlLCAweDI0 LCAweGEzCisrfTsKKysKKysvKiBTSEEtMzg0IFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJfZW50cm9weWlucHV0W10gPSB7CisrICAg IDB4NzEsIDB4OWQsIDB4YjIsIDB4NWEsIDB4NzEsIDB4NmQsIDB4MDQsIDB4ZTksIDB4MWUsIDB4 YzcsIDB4OTIsIDB4MjQsCisrICAgIDB4NmUsIDB4MTIsIDB4MzMsIDB4YTksIDB4NTIsIDB4NjQs IDB4MzEsIDB4ZWYsIDB4NzEsIDB4ZWIsIDB4MjIsIDB4NTUsCisrICAgIDB4MjgsIDB4OTcsIDB4 MDYsIDB4NmEsIDB4YzAsIDB4MGMsIDB4YTAsIDB4N2UKKyt9OworKworK19fZmlwc19jb25zdHNl ZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJfbm9uY2VbXSA9IHsKKysgICAg MHhmNSwgMHgwZCwgMHhmYSwgMHhiMCwgMHhlYywgMHg2YSwgMHg3YywgMHhkNiwgMHhiZCwgMHg5 YiwgMHgwNSwgMHhmZCwKKysgICAgMHgzOCwgMHgzZSwgMHgyZSwgMHg1NgorK307CisrCisrX19m aXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9wcl9wZXJzb25h bGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHg3NCwgMHhhYywgMHg3ZSwgMHg2ZCwgMHhiMSwg MHhhNCwgMHhlNywgMHgyMSwgMHhkMSwgMHgxZSwgMHg2ZSwgMHg5NiwKKysgICAgMHg2ZCwgMHg0 ZCwgMHg1MywgMHg0NiwgMHg4MiwgMHg5NiwgMHg2ZSwgMHhjZiwgMHhhYSwgMHg4MSwgMHg4ZCwg MHg3ZCwKKysgICAgMHg5ZSwgMHhlMSwgMHgwZiwgMHgxNSwgMHhlYSwgMHg0MSwgMHhiZiwgMHhl MworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNo YTM4NF9wcl9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHhkYSwgMHg5NSwgMHhkNCwgMHhk MCwgMHhiOCwgMHgxMSwgMHhkMywgMHg0OSwgMHgyNywgMHg1ZCwgMHhhOSwgMHgzOSwKKysgICAg MHg2OCwgMHhmMywgMHhhOCwgMHhlOSwgMHg1ZCwgMHgxOSwgMHg4YSwgMHgyYiwgMHg2NiwgMHhl OCwgMHg2OSwgMHgwNiwKKysgICAgMHg3YywgMHg5ZSwgMHgwMywgMHhhMSwgMHg4YiwgMHgyNiwg MHgyZCwgMHg2ZQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIHNoYTM4NF9wcl9lbnRyb3B5aW5wdXRwcltdID0geworKyAgICAweDQ5LCAweGRmLCAw eDQ0LCAweDAwLCAweGU0LCAweDFjLCAweDc1LCAweDBiLCAweDI2LCAweDVhLCAweDU5LCAweDY0 LAorKyAgICAweDFmLCAweDRlLCAweGIxLCAweGIyLCAweDEzLCAweGYxLCAweDIyLCAweDRlLCAw eGI0LCAweDZkLCAweDlhLCAweGNjLAorKyAgICAweGEwLCAweDQ4LCAweGU2LCAweGNmLCAweDFk LCAweGQxLCAweDkyLCAweDBkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhMzg0X3ByX2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhj OCwgMHg1MiwgMHhhZSwgMHhiZiwgMHgwNCwgMHgzYywgMHgyNywgMHhiNywgMHg3OCwgMHgxOCwg MHhhYSwgMHg4ZiwKKysgICAgMHhmZiwgMHhjZiwgMHhhNCwgMHhmMSwgMHhjYywgMHhlNywgMHg2 OCwgMHhmYSwgMHgyMiwgMHhhMiwgMHgxMywgMHg0NSwKKysgICAgMHhlOCwgMHhkZCwgMHg4Nywg MHhlNiwgMHhmMiwgMHg2ZSwgMHhkZCwgMHhjNywgMHg1MiwgMHg5MCwgMHg5ZiwgMHg3YiwKKysg ICAgMHhmYSwgMHg2MSwgMHgyZCwgMHg5ZCwgMHg5ZSwgMHhjZiwgMHg5OCwgMHhhYywgMHg1Miwg MHg0MCwgMHhjZSwgMHhhZgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIHNoYTM4NF9wcl9hZGRpdGlvbmFsaW5wdXQyW10gPSB7CisrICAgIDB4NjEs IDB4N2MsIDB4MDMsIDB4OWEsIDB4M2UsIDB4NTAsIDB4NTcsIDB4NjAsIDB4YzUsIDB4ODMsIDB4 YzksIDB4YjIsCisrICAgIDB4ZDEsIDB4ODcsIDB4ODUsIDB4NjYsIDB4OTIsIDB4NWQsIDB4ODQs IDB4MGUsIDB4NTMsIDB4ZmIsIDB4NzAsIDB4MDMsCisrICAgIDB4NzIsIDB4ZmQsIDB4YmEsIDB4 YWUsIDB4OWMsIDB4OGYsIDB4ZjgsIDB4MTgKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJfZW50cm9weWlucHV0cHIyW10gPSB7Cisr ICAgIDB4ZjgsIDB4ZWIsIDB4ODksIDB4YjEsIDB4OGQsIDB4NzgsIDB4YmUsIDB4MjEsIDB4ZTAs IDB4YmIsIDB4OWQsIDB4YjcsCisrICAgIDB4OTUsIDB4MGUsIDB4ZDksIDB4NDYsIDB4MGMsIDB4 OGMsIDB4ZTIsIDB4NjMsIDB4YjcsIDB4OWQsIDB4NjcsIDB4OTAsCisrICAgIDB4YmQsIDB4Yzcs IDB4MGIsIDB4YTUsIDB4Y2UsIDB4YjIsIDB4NjUsIDB4ODEKKyt9OworKworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcHJfcmV0dXJuZWRiaXRzW10g PSB7CisrICAgIDB4ZTYsIDB4OWYsIDB4ZmUsIDB4NjgsIDB4ZDYsIDB4YjUsIDB4NzksIDB4ZjEs IDB4MDYsIDB4NWYsIDB4YTMsIDB4YmIsCisrICAgIDB4MjMsIDB4ODUsIDB4ZDgsIDB4ZjAsIDB4 MjksIDB4NWEsIDB4NjgsIDB4OWUsIDB4ZjUsIDB4ZjQsIDB4YTYsIDB4MTIsCisrICAgIDB4ZTAs IDB4OWEsIDB4ZTIsIDB4YWMsIDB4MDAsIDB4MWQsIDB4OTgsIDB4MjYsIDB4ZmMsIDB4NTMsIDB4 OTUsIDB4NTMsCisrICAgIDB4ZTQsIDB4M2UsIDB4MTcsIDB4ZDUsIDB4MDgsIDB4MGIsIDB4NzAs IDB4M2QsIDB4NjcsIDB4OTksIDB4YWMsIDB4NjYKKyt9OworKworKy8qIFNIQS0zODQgTm8gUFIg ICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9l bnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHgwNywgMHgxNSwgMHgyNywgMHgyYSwgMHhhZiwgMHg3 NCwgMHgyNCwgMHgzNywgMHhiYywgMHhkNSwgMHgxNCwgMHg2OSwKKysgICAgMHhjZSwgMHgxMSwg MHhmZiwgMHhhMiwgMHg2YiwgMHhiOCwgMHgwNSwgMHg2NywgMHgzNCwgMHhmOCwgMHhiZCwgMHg2 ZCwKKysgICAgMHg2YSwgMHhjYywgMHhjZCwgMHg2MCwgMHhhMywgMHg2OCwgMHhjYSwgMHhmNAor K307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4 NF9ub25jZVtdID0geworKyAgICAweDcwLCAweDE3LCAweGMyLCAweDViLCAweDVkLCAweDIyLCAw eDBiLCAweDA2LCAweDE1LCAweDU0LCAweDc4LCAweDc3LAorKyAgICAweDQ0LCAweGFmLCAweDJm LCAweDA5CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgc2hhMzg0X3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweDg5LCAweDM5LCAw eDI4LCAweGIwLCAweDYwLCAweGViLCAweDNkLCAweGRjLCAweDU1LCAweDc1LCAweDg2LCAweGVi LAorKyAgICAweGFlLCAweGEyLCAweDhmLCAweGJjLCAweDFiLCAweDc1LCAweGQ0LCAweGUxLCAw eDBmLCAweGFhLCAweDM4LCAweGNhLAorKyAgICAweDYyLCAweDhiLCAweGNiLCAweDJjLCAweDI2 LCAweGY2LCAweGJjLCAweGIxCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhMzg0X2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDMwLCAw eDJiLCAweDQyLCAweDM1LCAweGVmLCAweGRhLCAweDQwLCAweDU1LCAweDI4LCAweGM2LCAweDk1 LCAweGZiLAorKyAgICAweDU0LCAweDAxLCAweDYyLCAweGQ3LCAweDg3LCAweDE0LCAweDQ4LCAw eDZkLCAweDkwLCAweDRjLCAweGE5LCAweDAyLAorKyAgICAweDU0LCAweDQwLCAweDIyLCAweGM4 LCAweDY2LCAweGE1LCAweDQ4LCAweDQ4CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGlj IGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhMzg0X2ludF9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAg MHg4MiwgMHhjNCwgMHhhMSwgMHg5YywgMHgyMSwgMHhkMiwgMHhlNywgMHhhNSwgMHhhNiwgMHhm NiwgMHg1ZiwgMHgwNCwKKysgICAgMHg1YywgMHhjNywgMHgzMSwgMHg5ZCwgMHg4ZCwgMHg1OSwg MHg3NCwgMHg1MCwgMHgxOSwgMHg4OSwgMHgyZiwgMHg2MywKKysgICAgMHhkNSwgMHhiNywgMHg3 ZSwgMHhlYiwgMHgxNSwgMHhlMywgMHg3MCwgMHg4MywgMHhhMSwgMHgyNCwgMHg1OSwgMHhmYSwK KysgICAgMHgyYywgMHg1NiwgMHhmNiwgMHg4OCwgMHgzYSwgMHg5MiwgMHg5MywgMHhhMSwgMHhm YiwgMHg3OSwgMHhjMSwgMHg3YQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9lbnRyb3B5aW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHgz OSwgMHhhNiwgMHhlOCwgMHg1YywgMHg4MiwgMHgxNywgMHg3MSwgMHgyNiwgMHg1NywgMHg0Ziwg MHg5ZiwgMHhjMiwKKysgICAgMHg1NSwgMHhmZiwgMHg1YywgMHg5YiwgMHg1MywgMHgxYSwgMHhk MSwgMHg1ZiwgMHhiYywgMHg2MiwgMHhlNCwgMHgyNywKKysgICAgMHgyZCwgMHgzMiwgMHhmMCwg MHhlNCwgMHg1MiwgMHg4YywgMHhjNSwgMHgwYworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0 YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9 IHsKKysgICAgMHg4ZCwgMHhjYiwgMHg4ZCwgMHhjZSwgMHgwOCwgMHhlYSwgMHg4MCwgMHhlOCwg MHg5YiwgMHg2MSwgMHhhOCwgMHgwZiwKKysgICAgMHhhZiwgMHg0OSwgMHgyMCwgMHg5ZSwgMHg3 NCwgMHhjYiwgMHg1NywgMHg4MCwgMHg0MiwgMHhiMCwgMHg4NCwgMHg1ZSwKKysgICAgMHgzMCwg MHgyYSwgMHg2NywgMHgwOCwgMHhmNCwgMHhlMywgMHg0MCwgMHgyMgorK307CisrCisrX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTM4NF9hZGRpdGlvbmFsaW5w dXQyW10gPSB7CisrICAgIDB4N2MsIDB4OGYsIDB4YzIsIDB4YWUsIDB4MjIsIDB4NGEsIDB4ZDYs IDB4ZjYsIDB4MDUsIDB4YTQsIDB4N2EsIDB4ZWEsCisrICAgIDB4YmIsIDB4MjUsIDB4ZDAsIDB4 YjcsIDB4NWEsIDB4ZDYsIDB4Y2YsIDB4OWQsIDB4ZjMsIDB4NmMsIDB4ZTIsIDB4YjIsCisrICAg IDB4NGUsIDB4YjQsIDB4YmQsIDB4ZjQsIDB4ZTUsIDB4NDAsIDB4ODAsIDB4OTQKKyt9OworKwor K19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGEzODRfcmV0dXJu ZWRiaXRzW10gPSB7CisrICAgIDB4OWUsIDB4N2UsIDB4ZmIsIDB4NTksIDB4YmIsIDB4YWEsIDB4 M2MsIDB4ZjcsIDB4ZTEsIDB4ZjgsIDB4NzYsIDB4ZGQsCisrICAgIDB4NjMsIDB4NWYsIDB4YWYs IDB4MjMsIDB4ZDYsIDB4NjQsIDB4NjEsIDB4YzAsIDB4OWEsIDB4MDksIDB4NDcsIDB4YzksCisr ICAgIDB4MzMsIDB4ZGYsIDB4NmQsIDB4NTUsIDB4OTEsIDB4MzQsIDB4NzksIDB4NzAsIDB4YzQs IDB4OTksIDB4NmUsIDB4NTQsCisrICAgIDB4MDksIDB4NjQsIDB4MjEsIDB4MWEsIDB4YmQsIDB4 MWUsIDB4ODAsIDB4NDAsIDB4MzQsIDB4YWQsIDB4ZmEsIDB4ZDcKKyt9OworKworKy8qIFNIQS01 MTIgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNo YTUxMl9wcl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHgxMywgMHhmNywgMHg2MSwgMHg3NSwg MHg2NSwgMHgyOCwgMHhhMiwgMHg1OSwgMHgxMywgMHg1YSwgMHg0YSwgMHg0ZiwKKysgICAgMHg1 NiwgMHg2MCwgMHg4YywgMHg1MywgMHg3ZCwgMHhiMCwgMHhiZCwgMHgwNiwgMHg0ZiwgMHhlZCwg MHhjYywgMHhkMiwKKysgICAgMHhhMiwgMHhiNSwgMHhmZCwgMHg1YiwgMHgzYSwgMHhhYiwgMHhl YywgMHgyOAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIHNoYTUxMl9wcl9ub25jZVtdID0geworKyAgICAweGJlLCAweGEzLCAweDkxLCAweDkzLCAw eDFkLCAweGMzLCAweDMxLCAweDNhLCAweDIzLCAweDMzLCAweDUwLCAweDY3LAorKyAgICAweDg4 LCAweGM3LCAweGEyLCAweGM0CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAg ICAweDFmLCAweDU5LCAweDRkLCAweDdiLCAweGU2LCAweDQ2LCAweDkxLCAweDQ4LCAweGMxLCAw eDI1LCAweGZhLCAweGZmLAorKyAgICAweDg5LCAweDEyLCAweDc3LCAweDM1LCAweGRmLCAweDNl LCAweGY0LCAweDgwLCAweDVmLCAweGQ5LCAweGIwLCAweDA3LAorKyAgICAweDIyLCAweDQxLCAw eGRkLCAweDQ4LCAweDc4LCAweDZiLCAweDc3LCAweDJiCisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX2FkZGl0aW9uYWxpbnB1dFtd ID0geworKyAgICAweDMwLCAweGZmLCAweDYzLCAweDZmLCAweGFjLCAweGQ5LCAweDg0LCAweDM5 LCAweDZmLCAweGU0LCAweDk5LCAweGNlLAorKyAgICAweDkxLCAweDdkLCAweDdlLCAweGM4LCAw eDU4LCAweGYyLCAweDEyLCAweGMzLCAweGI2LCAweGFkLCAweGRhLCAweDIyLAorKyAgICAweDA0 LCAweGEwLCAweGQyLCAweDIxLCAweGZlLCAweGYyLCAweDk1LCAweDFkCisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX2VudHJvcHlp bnB1dHByW10gPSB7CisrICAgIDB4NjQsIDB4NTQsIDB4MTMsIDB4ZWMsIDB4NGYsIDB4NzcsIDB4 ZGEsIDB4YjIsIDB4OTIsIDB4MmUsIDB4NTIsIDB4ODAsCisrICAgIDB4MTEsIDB4MTAsIDB4YzIs IDB4ZjgsIDB4ZTYsIDB4YTcsIDB4Y2QsIDB4NGIsIDB4ZmMsIDB4MzIsIDB4MmUsIDB4OWUsCisr ICAgIDB4ZWIsIDB4YmIsIDB4YjEsIDB4YmYsIDB4MTUsIDB4NWMsIDB4NzMsIDB4MDgKKyt9Owor KworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfcHJf aW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGVmLCAweDFlLCAweGRjLCAweDBhLCAweGE0 LCAweDM2LCAweDkxLCAweDljLCAweDNkLCAweDI3LCAweDk3LCAweDUwLAorKyAgICAweDhkLCAw eDM2LCAweDI5LCAweDhkLCAweGNlLCAweDZhLCAweDBjLCAweGY3LCAweDIxLCAweGMwLCAweDkx LCAweGFlLAorKyAgICAweDBjLCAweDk2LCAweDcyLCAweGJkLCAweDUyLCAweDgxLCAweDU4LCAw eGZjLCAweDZkLCAweGU1LCAweGY3LCAweGE1LAorKyAgICAweGZkLCAweDVkLCAweGE3LCAweDU4 LCAweDY4LCAweGM4LCAweDk5LCAweDU4LCAweDhlLCAweGM4LCAweGNlLCAweDk1LAorKyAgICAw eDAxLCAweDdkLCAweGZmLCAweGE0LCAweGM4LCAweGY3LCAweDYzLCAweGZlLCAweDVmLCAweDY5 LCAweDgzLCAweDUzLAorKyAgICAweGUyLCAweGM2LCAweDhiLCAweGMzCisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX3ByX2FkZGl0aW9u YWxpbnB1dDJbXSA9IHsKKysgICAgMHhlNiwgMHg5YiwgMHhjNCwgMHg4OCwgMHgzNCwgMHhjYSwg MHhlYSwgMHgyOSwgMHgyZiwgMHg5OCwgMHgwNSwgMHhhNCwKKysgICAgMHhkMywgMHhjMCwgMHg3 YiwgMHgxMSwgMHhlOCwgMHhiYiwgMHg3NSwgMHhmMiwgMHhiZCwgMHgyOSwgMHhiNywgMHg0MCwK KysgICAgMHgyNSwgMHg3ZiwgMHhjMSwgMHhiNywgMHhiMSwgMHhmMSwgMHgyNSwgMHg2MQorK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNoYTUxMl9w cl9lbnRyb3B5aW5wdXRwcjJbXSA9IHsKKysgICAgMHgyMywgMHg2ZCwgMHhmZiwgMHhkZSwgMHhm YiwgMHhkMSwgMHhiYSwgMHgzMywgMHgxOCwgMHhlNiwgMHhiZSwgMHhiNSwKKysgICAgMHg0OCwg MHg3NywgMHg2ZCwgMHg3ZiwgMHhhNywgMHhlMSwgMHg0ZCwgMHg0OCwgMHgxZSwgMHgzYywgMHhh NywgMHgzNCwKKysgICAgMHgxYSwgMHhjOCwgMHg2MCwgMHhkYiwgMHg4ZiwgMHg5OSwgMHgxNSwg MHg5OQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTUxMl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHg3MCwgMHgyNywgMHgzMSwgMHhk YiwgMHg5MiwgMHg3MCwgMHgyMSwgMHhmZSwgMHgxNiwgMHhiNiwgMHhjOCwgMHg1MSwKKysgICAg MHgzNCwgMHg4NywgMHg2NSwgMHhkMCwgMHg0ZSwgMHhmZCwgMHhmZSwgMHg2OCwgMHhlYywgMHhh YywgMHhkYywgMHg5MywKKysgICAgMHg0MSwgMHgzOCwgMHg5MiwgMHg5MCwgMHhiNCwgMHg5NCwg MHhmOSwgMHgwZCwgMHhhNCwgMHhmNywgMHg0ZSwgMHg4MCwKKysgICAgMHg5MiwgMHg2NywgMHg0 OCwgMHg0MCwgMHhhNywgMHgwOCwgMHhjNywgMHhiYywgMHg2NiwgMHgwMCwgMHhmZCwgMHhmNywK KysgICAgMHg0YywgMHg4YiwgMHgxNywgMHg2ZSwgMHhkMSwgMHg4ZiwgMHg5YiwgMHhmMywgMHg2 ZiwgMHhmNiwgMHgzNCwgMHhkZCwKKysgICAgMHg2NywgMHhmNywgMHg2OCwgMHhkZAorK307Cisr CisrLyogU0hBLTUxMiBObyBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgc2hhNTEyX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweGI2LCAweDBiLCAw eGI3LCAweGJjLCAweDg0LCAweDU2LCAweGY2LCAweDEyLCAweGFmLCAweDQ1LCAweDY3LCAweDE3 LAorKyAgICAweDdjLCAweGQxLCAweGIyLCAweDc4LCAweDJiLCAweGEwLCAweGYyLCAweGJlLCAw eGI2LCAweDZkLCAweDhiLCAweDU2LAorKyAgICAweGM2LCAweGJjLCAweDRkLCAweGUxLCAweGY3 LCAweGJlLCAweGNlLCAweGJkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgc2hhNTEyX25vbmNlW10gPSB7CisrICAgIDB4OWQsIDB4ZWQsIDB4YzAs IDB4ZTUsIDB4NWEsIDB4OTgsIDB4NmEsIDB4Y2IsIDB4NTEsIDB4N2QsIDB4NzYsIDB4MzEsCisr ICAgIDB4NWEsIDB4NjQsIDB4ZjAsIDB4ZjcKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0 aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7 CisrICAgIDB4YzIsIDB4NmQsIDB4YTMsIDB4YzMsIDB4MDYsIDB4NzQsIDB4ZTUsIDB4MDEsIDB4 NWMsIDB4MTAsIDB4MTcsIDB4YzcsCisrICAgIDB4YWYsIDB4ODMsIDB4OWQsIDB4NTksIDB4OGQs IDB4MmQsIDB4MjksIDB4MzgsIDB4YzUsIDB4NTksIDB4NzAsIDB4OGIsCisrICAgIDB4NDYsIDB4 NDgsIDB4MmQsIDB4Y2YsIDB4MzYsIDB4N2QsIDB4NTksIDB4YzAKKyt9OworKworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfYWRkaXRpb25hbGlucHV0 W10gPSB7CisrICAgIDB4ZWMsIDB4OGMsIDB4ZDQsIDB4ZjcsIDB4NjEsIDB4NmUsIDB4MGQsIDB4 OTUsIDB4NzksIDB4YjcsIDB4MjgsIDB4YWQsCisrICAgIDB4NWYsIDB4NjksIDB4NzQsIDB4NWYs IDB4MmQsIDB4MzYsIDB4MDYsIDB4OGEsIDB4NmIsIDB4YWMsIDB4NTQsIDB4OTcsCisrICAgIDB4 YzQsIDB4YTEsIDB4MTIsIDB4ODUsIDB4MGEsIDB4ZGYsIDB4NGIsIDB4MzQKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzaGE1MTJfaW50X3JldHVy bmVkYml0c1tdID0geworKyAgICAweDg0LCAweDJmLCAweDFmLCAweDY4LCAweDZhLCAweGEzLCAw eGFkLCAweDFlLCAweGZiLCAweGY0LCAweDE1LCAweGJkLAorKyAgICAweGRlLCAweDM4LCAweGQ0 LCAweDMwLCAweDgwLCAweDUxLCAweGU5LCAweGQzLCAweGM3LCAweDIwLCAweDg4LCAweGU5LAor KyAgICAweGY1LCAweGNjLCAweGRmLCAweDU3LCAweDVjLCAweDQ3LCAweDJmLCAweDU3LCAweDNj LCAweDVmLCAweDEzLCAweDU2LAorKyAgICAweGNjLCAweGM1LCAweDRmLCAweDg0LCAweGY4LCAw eDEwLCAweDQxLCAweGQ1LCAweDdlLCAweDU4LCAweDZlLCAweDE5LAorKyAgICAweDE5LCAweDll LCAweGFmLCAweGMyLCAweDIyLCAweDU4LCAweDQxLCAweDUwLCAweDc5LCAweGMyLCAweGQ4LCAw eDA0LAorKyAgICAweDI4LCAweGQ0LCAweDM5LCAweDlhCisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX2VudHJvcHlpbnB1dHJlc2VlZFtd ID0geworKyAgICAweGZhLCAweDdmLCAweDQ2LCAweDUxLCAweDgzLCAweDYyLCAweDk4LCAweDE2 LCAweDlhLCAweDE5LCAweGEyLCAweDQ5LAorKyAgICAweGE5LCAweGU2LCAweDRhLCAweGQ4LCAw eDg1LCAweGU3LCAweGQ0LCAweDNiLCAweDJjLCAweDgyLCAweGM1LCAweDgyLAorKyAgICAweGJm LCAweDExLCAweGY5LCAweDllLCAweGJjLCAweGQwLCAweDAxLCAweGVlCisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEyX2FkZGl0aW9uYWxp bnB1dHJlc2VlZFtdID0geworKyAgICAweGI5LCAweDEyLCAweGUwLCAweDRmLCAweGY3LCAweGE3 LCAweGM0LCAweGQ4LCAweGQwLCAweDhlLCAweDk5LCAweDI5LAorKyAgICAweDdjLCAweDlhLCAw eGU5LCAweGNmLCAweGM0LCAweDZjLCAweGY4LCAweGMzLCAweGE3LCAweDQxLCAweDgzLCAweGQ2 LAorKyAgICAweDJlLCAweGZhLCAweGI4LCAweDVlLCAweDhlLCAweDZiLCAweDc4LCAweDIwCisr fTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hhNTEy X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHhkNywgMHgwNywgMHg1MiwgMHhiOSwgMHg4 MywgMHgyYywgMHgwMywgMHg3MSwgMHhlZSwgMHhjOSwgMHhjMCwgMHg4NSwKKysgICAgMHhlMSwg MHg1NywgMHhiMiwgMHhjZCwgMHgzYSwgMHhmMCwgMHhjOSwgMHgzNCwgMHgyNCwgMHg0MSwgMHgx YywgMHg0MiwKKysgICAgMHg5OSwgMHhiMiwgMHg4NCwgMHhlOSwgMHgxNywgMHhkMiwgMHg3Niwg MHg5MgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IHNoYTUxMl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHgzNiwgMHgxNywgMHg1ZCwgMHg5OCwg MHgyYiwgMHg2NSwgMHgyNSwgMHg4ZSwgMHhjOCwgMHgyOSwgMHhkZiwgMHgyNywKKysgICAgMHgw NSwgMHgzNiwgMHgyNiwgMHgxMiwgMHg4YSwgMHg2OCwgMHg3NCwgMHgyNywgMHgzNywgMHhkNCwg MHg3ZiwgMHgzMiwKKysgICAgMHhiMSwgMHgxMiwgMHhkNiwgMHg4NSwgMHg4MywgMHhlYiwgMHgy ZSwgMHhhMCwgMHhlZCwgMHg0YiwgMHhiNSwgMHg3YiwKKysgICAgMHg2ZiwgMHgzOSwgMHgzYywg MHg3MSwgMHg3NywgMHgwMiwgMHgxMiwgMHhjYywgMHgyYywgMHgzYSwgMHg4ZSwgMHg2MywKKysg ICAgMHhkZiwgMHg0YSwgMHhiZCwgMHg2ZiwgMHg2ZSwgMHgyZSwgMHhlZCwgMHgwYSwgMHg4NSwg MHhhNSwgMHgyZiwgMHhhMiwKKysgICAgMHg2OCwgMHhkZSwgMHg0MiwgMHhiNQorK307CisrCisr LyogSE1BQyBTSEEtMSBQUiAgKi8KKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaG1hY19zaGExX3ByX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweDI2LCAweDVm LCAweDM2LCAweDE0LCAweGZmLCAweDNkLCAweDgzLCAweGZhLCAweDczLCAweDVlLCAweDc1LCAw eGRjLAorKyAgICAweDJjLCAweDE4LCAweDE3LCAweDFiCisrfTsKKysKKytfX2ZpcHNfY29uc3Rz ZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3ByX25vbmNlW10gPSB7Cisr ICAgIDB4YzgsIDB4ZTMsIDB4NTcsIDB4YTUsIDB4N2IsIDB4NzQsIDB4ODYsIDB4NmUKKyt9Owor KworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFj X3NoYTFfcHJfcGVyc29uYWxpemF0aW9uc3RyaW5nW10gPSB7CisrICAgIDB4NmUsIDB4ZGIsIDB4 MGQsIDB4ZmUsIDB4N2QsIDB4YWMsIDB4NzksIDB4ZDAsIDB4YTUsIDB4M2EsIDB4NDgsIDB4ODUs CisrICAgIDB4ODAsIDB4ZTIsIDB4N2YsIDB4MmEKKyt9OworKworK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfcHJfYWRkaXRpb25hbGlucHV0W10g PSB7CisrICAgIDB4MzEsIDB4Y2QsIDB4NWUsIDB4NDMsIDB4ZGMsIDB4ZmIsIDB4N2EsIDB4Nzks IDB4Y2EsIDB4ODgsIDB4ZGUsIDB4MWYsCisrICAgIDB4ZDcsIDB4YmIsIDB4NDIsIDB4MDkKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTFfcHJfZW50cm9weWlucHV0cHJbXSA9IHsKKysgICAgMHg3YywgMHgyMywgMHg5NSwgMHgzOCwg MHgwMCwgMHg5NSwgMHhjMSwgMHg3OCwgMHgxZiwgMHg4ZiwgMHhkNywgMHg2MywKKysgICAgMHgy MywgMHg4NywgMHgyYSwgMHhlZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9wcl9pbnRfcmV0dXJuZWRiaXRzW10gPSB7CisrICAg IDB4YmIsIDB4MzQsIDB4ZTcsIDB4OTMsIDB4YTMsIDB4MDIsIDB4MmMsIDB4NGEsIDB4ZDAsIDB4 ODksIDB4ZGEsIDB4N2YsCisrICAgIDB4ZWQsIDB4ZjQsIDB4NGMsIDB4ZGUsIDB4MTcsIDB4ZWMs IDB4ZTUsIDB4NmMKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTFfcHJfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweDQ5LCAw eGJjLCAweDJkLCAweDJjLCAweGI3LCAweDMyLCAweGNiLCAweDIwLCAweGRmLCAweGY1LCAweDc3 LCAweDU4LAorKyAgICAweGEwLCAweDRiLCAweDkzLCAweDZlCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3ByX2VudHJvcHlpbnB1 dHByMltdID0geworKyAgICAweDNjLCAweGFhLCAweGIwLCAweDIxLCAweDQyLCAweGIwLCAweGRk LCAweDM0LCAweGYwLCAweDE2LCAweDdmLCAweDBjLAorKyAgICAweDBmLCAweGZmLCAweDJlLCAw eGFmCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGExX3ByX3JldHVybmVkYml0c1tdID0geworKyAgICAweDhlLCAweGNiLCAweGEzLCAw eDY0LCAweGIyLCAweGI4LCAweDMzLCAweDZjLCAweDY0LCAweDNiLCAweDc4LCAweDE2LAorKyAg ICAweDk5LCAweDM1LCAweGM4LCAweDMwLCAweGNiLCAweDNlLCAweGEwLCAweGQ4CisrfTsKKysK KysvKiBITUFDIFNIQS0xIE5vIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBobWFjX3NoYTFfZW50cm9weWlucHV0W10gPSB7CisrICAgIDB4MzIsIDB4 OWEsIDB4MmEsIDB4ODcsIDB4N2IsIDB4ODksIDB4N2MsIDB4ZjYsIDB4Y2IsIDB4OTUsIDB4ZDUs IDB4NDAsCisrICAgIDB4MTcsIDB4ZmUsIDB4NDcsIDB4NzAKKyt9OworKworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfbm9uY2VbXSA9IHsKKysg ICAgMHgxNiwgMHhkOCwgMHhlMCwgMHhjNywgMHg1MiwgMHhjZiwgMHg0YSwgMHgyNQorK307Cisr CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9w ZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHgzNSwgMHgzNSwgMHhhOSwgMHhhNSwg MHg0MCwgMHhiZSwgMHg5YiwgMHhkMSwgMHg1NiwgMHhkZCwgMHg0NCwgMHgwMCwKKysgICAgMHg3 MiwgMHhmNywgMHhkMywgMHg1ZQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9hZGRpdGlvbmFsaW5wdXRbXSA9IHsKKysgICAgMHgx YiwgMHgyYywgMHg4NCwgMHgyZCwgMHg0YSwgMHg4OSwgMHg4ZiwgMHg2OSwgMHgxOSwgMHhmMSwg MHhmMywgMHhkYiwKKysgICAgMHhiYiwgMHhlMywgMHhhYSwgMHhlYQorK307CisrCisrX19maXBz X2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMV9pbnRfcmV0dXJu ZWRiaXRzW10gPSB7CisrICAgIDB4Y2YsIDB4ZmEsIDB4N2QsIDB4NzIsIDB4MGYsIDB4ZTYsIDB4 YzcsIDB4OTYsIDB4YTAsIDB4NjksIDB4MzEsIDB4MTEsCisrICAgIDB4OWIsIDB4MGIsIDB4MWEs IDB4MjAsIDB4MWYsIDB4M2YsIDB4YWEsIDB4ZDEKKyt9OworKworK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfZW50cm9weWlucHV0cmVzZWVkW10g PSB7CisrICAgIDB4OTAsIDB4NzUsIDB4MTUsIDB4MDQsIDB4OTUsIDB4ZjEsIDB4YmEsIDB4ODEs IDB4MGMsIDB4MzcsIDB4OTQsIDB4NmYsCisrICAgIDB4ODYsIDB4NTIsIDB4NmQsIDB4OWMKKyt9 OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3No YTFfYWRkaXRpb25hbGlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4NWIsIDB4NDAsIDB4YmEsIDB4 NWYsIDB4MTcsIDB4NzAsIDB4ZjAsIDB4NGIsIDB4ZGYsIDB4YzksIDB4OTcsIDB4OTIsCisrICAg IDB4NzksIDB4YzUsIDB4ODIsIDB4MjgKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTFfYWRkaXRpb25hbGlucHV0MltdID0geworKyAg ICAweDk3LCAweGM4LCAweDgwLCAweDkwLCAweGIzLCAweGFhLCAweDZlLCAweDYwLCAweGVhLCAw eDgzLCAweDdhLCAweGUzLAorKyAgICAweDhhLCAweGNhLCAweGE0LCAweDdmCisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGExX3JldHVy bmVkYml0c1tdID0geworKyAgICAweDkwLCAweGJkLCAweDA1LCAweDU2LCAweDZkLCAweGI1LCAw eDIyLCAweGQ1LCAweGI5LCAweDVhLCAweDI5LCAweDJkLAorKyAgICAweGU5LCAweDBiLCAweGUx LCAweGFjLCAweGRlLCAweDI3LCAweDBiLCAweGIwCisrfTsKKysKKysvKiBITUFDIFNIQS0yMjQg UFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNf c2hhMjI0X3ByX2VudHJvcHlpbnB1dFtdID0geworKyAgICAweDE3LCAweDMyLCAweDJiLCAweDJl LCAweDZmLCAweDFiLCAweDljLCAweDZkLCAweDMxLCAweGUwLCAweDM0LCAweDA3LAorKyAgICAw eGNmLCAweGVkLCAweGY2LCAweGI2LCAweDVhLCAweDc2LCAweDRjLCAweGJjLCAweDYyLCAweDg1 LCAweDAxLCAweDkwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfbm9uY2VbXSA9IHsKKysgICAgMHgzOCwgMHhiZiwgMHg1 ZiwgMHgyMCwgMHhiMywgMHg2OCwgMHgyZiwgMHg0MywgMHg2MSwgMHgwNSwgMHg4ZiwgMHgyMwor K307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMjI0X3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweGMwLCAw eGM5LCAweDQ1LCAweGFjLCAweDhkLCAweDI3LCAweDc3LCAweDA4LCAweDBiLCAweDE3LCAweDZk LCAweGVkLAorKyAgICAweGMxLCAweDdkLCAweGQ1LCAweDA3LCAweDlkLCAweDZlLCAweGY4LCAw eDIzLCAweDJhLCAweDIyLCAweDEzLCAweGJkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfYWRkaXRpb25hbGlucHV0W10g PSB7CisrICAgIDB4YTQsIDB4M2MsIDB4ZTcsIDB4M2IsIDB4ZWEsIDB4MTksIDB4NDUsIDB4MzIs IDB4YzIsIDB4ODMsIDB4NmQsIDB4MjEsCisrICAgIDB4OGEsIDB4YzAsIDB4ZWUsIDB4NjcsIDB4 NDUsIDB4ZGUsIDB4MTMsIDB4N2QsIDB4OWQsIDB4NjEsIDB4MDAsIDB4M2IKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9wcl9l bnRyb3B5aW5wdXRwcltdID0geworKyAgICAweDE1LCAweDA1LCAweDc0LCAweDRhLCAweDdmLCAw eDhkLCAweDVjLCAweDYwLCAweDE2LCAweGU1LCAweDdiLCAweGFkLAorKyAgICAweGY1LCAweDQx LCAweDhmLCAweDU1LCAweDYwLCAweGM0LCAweDA5LCAweGVlLCAweDFlLCAweDExLCAweDgxLCAw eGFiCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGEyMjRfcHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweDZmLCAweGY1LCAw eDlhLCAweGUyLCAweDU0LCAweDUzLCAweDMwLCAweDNkLCAweDVhLCAweDI3LCAweDI5LCAweDM4 LAorKyAgICAweDI3LCAweGYyLCAweDBkLCAweDA1LCAweGU5LCAweDI2LCAweGNiLCAweDE2LCAw eGMzLCAweDUxLCAweDVmLCAweDEzLAorKyAgICAweDQxLCAweGZlLCAweDk5LCAweGYyCisrfTsK KysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEy MjRfcHJfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweDczLCAweDgxLCAweDg4LCAweDg0 LCAweDhmLCAweGVkLCAweDZmLCAweDEwLCAweDlmLCAweDkzLCAweGJmLCAweDE3LAorKyAgICAw eDM1LCAweDdjLCAweGVmLCAweGQ1LCAweDhkLCAweDI2LCAweGE2LCAweDdhLCAweGU4LCAweDA5 LCAweDM2LCAweDRmCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaG1hY19zaGEyMjRfcHJfZW50cm9weWlucHV0cHIyW10gPSB7CisrICAgIDB4ZTYs IDB4Y2YsIDB4Y2YsIDB4N2UsIDB4MTIsIDB4ZTUsIDB4NDMsIDB4ZDIsIDB4MzgsIDB4ZDgsIDB4 MjQsIDB4NmYsCisrICAgIDB4NWEsIDB4MzcsIDB4NjgsIDB4YmYsIDB4NGYsIDB4YTAsIDB4ZmYs IDB4ZDUsIDB4NjEsIDB4OGEsIDB4OTMsIDB4ZTAKKyt9OworKworK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9wcl9yZXR1cm5lZGJpdHNbXSA9 IHsKKysgICAgMHhhZiwgMHhmOSwgMHhkOCwgMHgxOSwgMHg5MSwgMHgzMCwgMHg4MiwgMHg2Ziwg MHhhOSwgMHgxZSwgMHg5ZCwgMHhkNywKKysgICAgMHhmMywgMHg1MCwgMHhlMCwgMHhjNywgMHhk NSwgMHg2NCwgMHg5NiwgMHg3ZCwgMHg0YywgMHg0ZCwgMHg3OCwgMHgwMywKKysgICAgMHg2ZCwg MHhkOCwgMHg5ZSwgMHg3MgorK307CisrCisrLyogSE1BQyBTSEEtMjI0IE5vIFBSICAqLworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9lbnRy b3B5aW5wdXRbXSA9IHsKKysgICAgMHgxMSwgMHg4MiwgMHhmZCwgMHhkOSwgMHg0MiwgMHhmNCwg MHhmYSwgMHhjOCwgMHhmMiwgMHg0MSwgMHhlNiwgMHg1NCwKKysgICAgMHgwMSwgMHhhZSwgMHgy MiwgMHg2ZSwgMHhjNiwgMHhhZiwgMHhhZiwgMHhkMCwgMHhhNiwgMHhiMiwgMHhlMiwgMHg2ZAor K307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNf c2hhMjI0X25vbmNlW10gPSB7CisrICAgIDB4YTksIDB4NDgsIDB4ZDcsIDB4OTIsIDB4MzksIDB4 N2UsIDB4MmEsIDB4ZGMsIDB4MzAsIDB4MWYsIDB4MGUsIDB4MmIKKyt9OworKworK19fZmlwc19j b25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9wZXJz b25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHgxMSwgMHhkNSwgMHhmNCwgMHhiZCwgMHg2 NywgMHg4YywgMHgzMSwgMHhjZiwgMHhhMywgMHgzZiwgMHgxZSwgMHg2YiwKKysgICAgMHhhOCwg MHgwNywgMHgwMiwgMHgwYiwgMHhjOCwgMHgyZSwgMHg2YywgMHg2NCwgMHg0MSwgMHg1YiwgMHhj OCwgMHgzNworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj aGFyIGhtYWNfc2hhMjI0X2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDY4LCAweDE4LCAw eGMyLCAweDA2LCAweGViLCAweDNlLCAweDA0LCAweDk1LCAweDQ0LCAweDVlLCAweGZiLCAweGU2 LAorKyAgICAweDQxLCAweGMxLCAweDVjLCAweGNjLCAweDQwLCAweDJmLCAweGI3LCAweGQyLCAw eDBmLCAweGYzLCAweDZiLCAweGU3CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyMjRfaW50X3JldHVybmVkYml0c1tdID0geworKyAg ICAweDdmLCAweDQ1LCAweGM3LCAweDVkLCAweDMyLCAweGU2LCAweDE3LCAweDYwLCAweGJhLCAw eGRjLCAweGI4LCAweDQyLAorKyAgICAweDFiLCAweDljLCAweGYxLCAweGZhLCAweDNiLCAweDRk LCAweDI5LCAweDU0LCAweGM2LCAweDkwLCAweGZmLCAweDVjLAorKyAgICAweGNkLCAweGQ2LCAw eGE5LCAweGNjCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGEyMjRfZW50cm9weWlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4YzQsIDB4 OGUsIDB4MzcsIDB4OTUsIDB4NjksIDB4NTMsIDB4MjgsIDB4ZDcsIDB4MzcsIDB4YmIsIDB4NzAs IDB4OTUsCisrICAgIDB4MWMsIDB4MDcsIDB4MWQsIDB4ZDksIDB4YjcsIDB4ZTYsIDB4MWIsIDB4 YmIsIDB4ZmUsIDB4NDEsIDB4ZWIsIDB4YzkKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAg ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTIyNF9hZGRpdGlvbmFsaW5wdXRy ZXNlZWRbXSA9IHsKKysgICAgMHg1MywgMHgxNywgMHhhMSwgMHg2YSwgMHhmYSwgMHg3NywgMHg0 NywgMHhiMCwgMHg5NSwgMHg1NiwgMHg5YSwgMHgyMCwKKysgICAgMHg1NywgMHhkZSwgMHg1Yywg MHg4OSwgMHg5ZiwgMHg3ZiwgMHhlMiwgMHhkZSwgMHgxNywgMHgzYSwgMHg1MCwgMHgyMworK307 CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hh MjI0X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHgzYSwgMHgzMiwgMHhmOSwgMHg4NSwg MHgwYywgMHhjMSwgMHhlZCwgMHg3NiwgMHgyZCwgMHhkZiwgMHg0MCwgMHhjMywKKysgICAgMHgw NiwgMHgyMiwgMHg2NiwgMHhkNCwgMHg5YSwgMHg5YSwgMHhmZiwgMHg1YSwgMHg3ZSwgMHg3YSwg MHhmMywgMHg5NgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGhtYWNfc2hhMjI0X3JldHVybmVkYml0c1tdID0geworKyAgICAweDQzLCAweGI0LCAw eDU3LCAweDVjLCAweDM4LCAweDI1LCAweDlkLCAweGFlLCAweGVjLCAweDk2LCAweGQxLCAweDg1 LAorKyAgICAweDNhLCAweDg0LCAweDhkLCAweGZlLCAweDY4LCAweGQ1LCAweDBlLCAweDVjLCAw eDhmLCAweDY1LCAweGE1LCAweDRlLAorKyAgICAweDQ1LCAweDg0LCAweGE4LCAweDk0CisrfTsK KysKKysvKiBITUFDIFNIQS0yNTYgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X3ByX2VudHJvcHlpbnB1dFtdID0geworKyAgICAw eDRkLCAweGIwLCAweDQzLCAweGQ4LCAweDM0LCAweDRiLCAweDEwLCAweDcwLCAweGIxLCAweDhi LCAweGVkLCAweGVhLAorKyAgICAweDA3LCAweDkyLCAweDlmLCAweDZjLCAweDc5LCAweDMxLCAw eGFmLCAweDgxLCAweDI5LCAweGViLCAweDZlLCAweGNhLAorKyAgICAweDMyLCAweDQ4LCAweDI4 LCAweGU3LCAweDAyLCAweDVkLCAweGE2LCAweGE2CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfbm9uY2VbXSA9IHsKKysg ICAgMHgzYSwgMHhhZSwgMHgxNSwgMHhhOSwgMHg5OSwgMHhkYywgMHhlNCwgMHg2NywgMHgzNCwg MHgzYiwgMHg3MCwgMHgxNSwKKysgICAgMHhhYSwgMHhkMywgMHgzMCwgMHg5YQorK307CisrCisr X19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hh MjU2X3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweDEzLCAweDFkLCAweDI0 LCAweDA0LCAweGIwLCAweDE4LCAweDgxLCAweDE1LCAweDIxLCAweDUxLCAweDJhLCAweDI0LAor KyAgICAweDUyLCAweDYxLCAweGJlLCAweDY0LCAweDgyLCAweDZiLCAweDU1LCAweDJmLCAweGUy LCAweGYxLCAweDQwLCAweDdkLAorKyAgICAweDcxLCAweGQ4LCAweDAxLCAweDg2LCAweDE1LCAw eGI3LCAweDhiLCAweGI1CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4 OGYsIDB4YTYsIDB4NTQsIDB4NWYsIDB4YjEsIDB4ZDAsIDB4ZDgsIDB4YzMsIDB4ZTcsIDB4MGMs IDB4MTUsIDB4YTksCisrICAgIDB4MjMsIDB4NmUsIDB4ZmUsIDB4ZmIsIDB4OTMsIDB4ZjcsIDB4 M2EsIDB4YmQsIDB4NTksIDB4MDEsIDB4ZmEsIDB4MTgsCisrICAgIDB4OGUsIDB4ZTksIDB4MWEs IDB4YTksIDB4NzgsIDB4ZmMsIDB4NzksIDB4MGIKKyt9OworKworK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9wcl9lbnRyb3B5aW5wdXRwcltd ID0geworKyAgICAweGNmLCAweDI0LCAweGI5LCAweGViLCAweGIzLCAweGQ0LCAweGNkLCAweDE3 LCAweDM3LCAweDM4LCAweDc1LCAweDc5LAorKyAgICAweDE1LCAweGNiLCAweDJkLCAweDc1LCAw eDUxLCAweGYxLCAweGNjLCAweGFhLCAweDMyLCAweGE0LCAweGE3LCAweDM2LAorKyAgICAweDdj LCAweDVjLCAweGU0LCAweDQ3LCAweGYxLCAweDNlLCAweDFkLCAweGU1CisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfaW50 X3JldHVybmVkYml0c1tdID0geworKyAgICAweDUyLCAweDQyLCAweGZhLCAweGViLCAweDg1LCAw eGUwLCAweDMwLCAweDIyLCAweDc5LCAweDAwLCAweDE2LCAweGIyLAorKyAgICAweDg4LCAweDJm LCAweDE0LCAweDZhLCAweGI3LCAweGZjLCAweGI3LCAweDUzLCAweGRjLCAweDRhLCAweDEyLCAw eGVmLAorKyAgICAweDU0LCAweGQ2LCAweDMzLCAweGU5LCAweDIwLCAweGQ2LCAweGZkLCAweDU2 CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGEyNTZfcHJfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweGY0LCAweGY2LCAweDQ5 LCAweGExLCAweDJkLCAweDY0LCAweDJiLCAweDMwLCAweDU4LCAweGY4LCAweGJkLCAweGI4LAor KyAgICAweDc1LCAweGViLCAweGJiLCAweDVlLCAweDFjLCAweDliLCAweDgxLCAweDZhLCAweGRh LCAweDE0LCAweDg2LCAweDZlLAorKyAgICAweGQwLCAweGRhLCAweDE4LCAweGI3LCAweDg4LCAw eGZiLCAweDU5LCAweGYzCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfcHJfZW50cm9weWlucHV0cHIyW10gPSB7CisrICAgIDB4 MjEsIDB4Y2QsIDB4NmUsIDB4NDYsIDB4YWQsIDB4OTksIDB4MDcsIDB4MTcsIDB4YjQsIDB4M2Qs IDB4NzYsIDB4MGEsCisrICAgIDB4ZmYsIDB4NWIsIDB4NTIsIDB4NTAsIDB4NzgsIDB4ZGYsIDB4 MWYsIDB4MjQsIDB4MDYsIDB4MGQsIDB4M2YsIDB4NzQsCisrICAgIDB4YTksIDB4YzksIDB4Mzcs IDB4Y2YsIDB4ZDgsIDB4MjYsIDB4MjUsIDB4OTEKKyt9OworKworK19fZmlwc19jb25zdHNlZyBz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9wcl9yZXR1cm5lZGJpdHNbXSA9 IHsKKysgICAgMHhhNywgMHhhZiwgMHgyZiwgMHgyOSwgMHhlMCwgMHgzYSwgMHg3MiwgMHg5NSwg MHg5NiwgMHgxYywgMHhhOSwgMHhmMCwKKysgICAgMHg0YSwgMHgxNywgMHg0ZCwgMHg2NiwgMHgw NiwgMHgxMCwgMHhiZiwgMHgzOSwgMHg4OSwgMHg4OCwgMHhiOCwgMHg5MSwKKysgICAgMHgzNywg MHgxOCwgMHg5OSwgMHhjZiwgMHg4YywgMHg1MywgMHgzYiwgMHg3ZQorK307CisrCisrLyogSE1B QyBTSEEtMjU2IE5vIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBobWFjX3NoYTI1Nl9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHg5NiwgMHhiNywg MHg1MywgMHgyMiwgMHgxZSwgMHg1MiwgMHgyYSwgMHg5NiwgMHhiMSwgMHgxNSwgMHgzYywgMHgz NSwKKysgICAgMHg1YSwgMHg4YiwgMHhkMywgMHg0YSwgMHhhNiwgMHg2YywgMHg4MywgMHgwYSwg MHg3ZCwgMHhhMywgMHgyMywgMHgzZCwKKysgICAgMHg0MywgMHhhMSwgMHgwNywgMHgyYywgMHgy ZCwgMHhlMywgMHg4MSwgMHhjYworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25z dCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMjU2X25vbmNlW10gPSB7CisrICAgIDB4ZjEsIDB4YWMs IDB4OTcsIDB4Y2IsIDB4NWUsIDB4MDYsIDB4NDgsIDB4ZDIsIDB4OTQsIDB4YmUsIDB4MTUsIDB4 MmUsCisrICAgIDB4YzcsIDB4ZmMsIDB4YzIsIDB4MDEKKyt9OworKworK19fZmlwc19jb25zdHNl ZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9wZXJzb25hbGl6 YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHg5OCwgMHhjNSwgMHgxZSwgMHgzNSwgMHg1ZSwgMHg4 OSwgMHgwZCwgMHhjZSwgMHg2NCwgMHg2ZCwgMHgxOCwgMHhhNywKKysgICAgMHg1YSwgMHhjNiwg MHhmMywgMHhlNywgMHhkNiwgMHg5ZSwgMHhjMCwgMHhlYSwgMHhiNywgMHgzYSwgMHg4ZCwgMHg2 NSwKKysgICAgMHhiOCwgMHhlYiwgMHgxMCwgMHhkNywgMHg1NywgMHgxOCwgMHhhMCwgMHgzMgor K307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNf c2hhMjU2X2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweDFiLCAweDEwLCAweGFmLCAweGFj LCAweGQwLCAweDY1LCAweDk1LCAweGFkLCAweDA0LCAweGFkLCAweDAzLCAweDFjLAorKyAgICAw eGUwLCAweDQwLCAweGQ2LCAweDNlLCAweDFjLCAweDQ2LCAweDUzLCAweDM5LCAweDdjLCAweGUy LCAweGJjLCAweGRhLAorKyAgICAweDhjLCAweGEyLCAweDMzLCAweGE3LCAweDlhLCAweDI2LCAw eGQzLCAweDI3CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgaG1hY19zaGEyNTZfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGJhLCAweDYx LCAweDBlLCAweDU1LCAweGZlLCAweDExLCAweDhhLCAweDllLCAweDBmLCAweDgwLCAweGRmLCAw eDFkLAorKyAgICAweDAzLCAweDBhLCAweGZlLCAweDE1LCAweDk0LCAweDI4LCAweDRiLCAweGJh LCAweGY0LCAweDlmLCAweDUxLCAweDI1LAorKyAgICAweDg4LCAweGU1LCAweDRlLCAweGZiLCAw eGFmLCAweGNlLCAweDY5LCAweDkwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEyNTZfZW50cm9weWlucHV0cmVzZWVkW10gPSB7Cisr ICAgIDB4NjIsIDB4N2YsIDB4MWUsIDB4NmIsIDB4ZTgsIDB4OGUsIDB4ZTEsIDB4MzUsIDB4N2Qs IDB4OWIsIDB4NGYsIDB4YzcsCisrICAgIDB4ZWMsIDB4YzgsIDB4YWMsIDB4ZWYsIDB4NmIsIDB4 MTMsIDB4OWUsIDB4MDUsIDB4NTYsIDB4YzEsIDB4MDgsIDB4ZjksCisrICAgIDB4MmYsIDB4MGYs IDB4MjcsIDB4OWMsIDB4ZDQsIDB4MTUsIDB4ZWQsIDB4MmQKKyt9OworKworK19fZmlwc19jb25z dHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTI1Nl9hZGRpdGlv bmFsaW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHhjNywgMHg3NiwgMHg2ZSwgMHhhOSwgMHhkMiwg MHhiMiwgMHg3NiwgMHg0MCwgMHg4MiwgMHgyNSwgMHgyYywgMHhiMywKKysgICAgMHg2ZiwgMHhh YywgMHhlOSwgMHg3NCwgMHhlZiwgMHg4ZiwgMHgzYywgMHg4ZSwgMHhjZCwgMHhmMSwgMHhiZiwg MHhiMywKKysgICAgMHg0OSwgMHg3NywgMHgzNCwgMHg4OCwgMHg1MiwgMHgzNiwgMHhlNiwgMHgy ZQorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGht YWNfc2hhMjU2X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg4ZCwgMHhiOCwgMHgwYywg MHhkMSwgMHhiZiwgMHg3MCwgMHhmNiwgMHgxOSwgMHhjMywgMHg0MSwgMHg4MCwgMHg5ZiwKKysg ICAgMHhlMSwgMHhhNSwgMHhhNCwgMHgxZiwgMHgyYywgMHgyNiwgMHhiMSwgMHhlNSwgMHhkOCwg MHhlYiwgMHhiZSwgMHhmOCwKKysgICAgMHhkZiwgMHg4OCwgMHg2YSwgMHg4OSwgMHhkNiwgMHgw NSwgMHhkOCwgMHg5ZAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIGhtYWNfc2hhMjU2X3JldHVybmVkYml0c1tdID0geworKyAgICAweDQzLCAweDEy LCAweDJhLCAweDJjLCAweDQwLCAweDUzLCAweDJlLCAweDdjLCAweDY2LCAweDM0LCAweGFjLCAw eGMzLAorKyAgICAweDQzLCAweGUzLCAweGUwLCAweDZhLCAweGZjLCAweGZhLCAweGVhLCAweDg3 LCAweDIxLCAweDFmLCAweGUyLCAweDI2LAorKyAgICAweGM0LCAweGY5LCAweDA5LCAweDlhLCAw eDBkLCAweDZlLCAweDdmLCAweGUwCisrfTsKKysKKysvKiBITUFDIFNIQS0zODQgUFIgICovCisr X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3By X2VudHJvcHlpbnB1dFtdID0geworKyAgICAweDY5LCAweDgxLCAweDk4LCAweDg4LCAweDQ0LCAw eGY1LCAweGQ2LCAweDJlLCAweDAwLCAweDA4LCAweDNiLCAweGM1LAorKyAgICAweGZiLCAweGQ3 LCAweDhlLCAweDZmLCAweDIzLCAweGY4LCAweDZkLCAweDA5LCAweGQ2LCAweDg1LCAweDQ5LCAw eGQxLAorKyAgICAweGY4LCAweDZkLCAweGE0LCAweDU4LCAweDU0LCAweGZkLCAweDg4LCAweGE5 CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1h Y19zaGEzODRfcHJfbm9uY2VbXSA9IHsKKysgICAgMHg2ZSwgMHgzOCwgMHg4MSwgMHhjYSwgMHhi NywgMHhlOCwgMHg2ZSwgMHg2NiwgMHg0OSwgMHg4YSwgMHhiMiwgMHg1OSwKKysgICAgMHhlZSwg MHgxNiwgMHhjOSwgMHhkZQorK307CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1td ID0geworKyAgICAweGZlLCAweDRjLCAweGQ5LCAweGY0LCAweDc4LCAweDNiLCAweDA4LCAweDQx LCAweDhkLCAweDhmLCAweDU1LCAweGM0LAorKyAgICAweDQzLCAweDU2LCAweGI2LCAweDEyLCAw eDM2LCAweDZiLCAweDMwLCAweGI3LCAweDVlLCAweGUxLCAweGI5LCAweDQ3LAorKyAgICAweDA0 LCAweGIxLCAweDRlLCAweGE5LCAweDAwLCAweGExLCAweDUyLCAweGExCisrfTsKKysKKytfX2Zp cHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfYWRk aXRpb25hbGlucHV0W10gPSB7CisrICAgIDB4ODksIDB4ZTksIDB4Y2MsIDB4OGYsIDB4MjcsIDB4 M2MsIDB4MjYsIDB4ZDEsIDB4OTUsIDB4YzgsIDB4N2QsIDB4MGYsCisrICAgIDB4NWIsIDB4MWEs IDB4ZjAsIDB4NzgsIDB4MzksIDB4NTYsIDB4NmYsIDB4YTQsIDB4MjMsIDB4ZTcsIDB4ZDEsIDB4 ZGEsCisrICAgIDB4N2MsIDB4NjYsIDB4MzMsIDB4YTAsIDB4OTAsIDB4YzksIDB4OTIsIDB4ODgK Kyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFj X3NoYTM4NF9wcl9lbnRyb3B5aW5wdXRwcltdID0geworKyAgICAweGJlLCAweDNkLCAweDdjLCAw eDBkLCAweGNhLCAweGRhLCAweDdjLCAweDQ5LCAweGI4LCAweDEyLCAweDM2LCAweGMwLAorKyAg ICAweGRiLCAweGFkLCAweDM1LCAweGE4LCAweGM3LCAweDBiLCAweDJhLCAweDJjLCAweDY5LCAw eDZkLCAweDI1LCAweDU2LAorKyAgICAweDYzLCAweDgyLCAweDExLCAweDNlLCAweGE3LCAweDMz LCAweDcwLCAweDcyCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaG1hY19zaGEzODRfcHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweDgy LCAweDNkLCAweGU2LCAweDU0LCAweDgwLCAweDQyLCAweGY4LCAweGJhLCAweDkwLCAweDRmLCAw eDA2LCAweGE2LAorKyAgICAweGQyLCAweDdmLCAweGJmLCAweDc5LCAweDdjLCAweDEyLCAweDdk LCAweGE2LCAweGEyLCAweDY2LCAweGU4LCAweGE2LAorKyAgICAweGMwLCAweGQ2LCAweDRhLCAw eDU1LCAweGJmLCAweGQ4LCAweDBhLCAweGM1LCAweGY4LCAweDAzLCAweDg4LCAweGRkLAorKyAg ICAweDhlLCAweDg3LCAweGQxLCAweDVhLCAweDQ4LCAweDI2LCAweDcyLCAweDJhLCAweDhlLCAw eGNmLCAweGVlLCAweGJhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfYWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAw eDhmLCAweGZmLCAweGQ5LCAweDg0LCAweGJiLCAweDg1LCAweDNhLCAweDY2LCAweGExLCAweDIx LCAweGNlLCAweGIyLAorKyAgICAweDNhLCAweDNhLCAweDE3LCAweDIyLCAweDE5LCAweGFlLCAw eGM3LCAweGI2LCAweDYzLCAweDgxLCAweGQ1LCAweGZmLAorKyAgICAweDBkLCAweGM4LCAweGUx LCAweGFmLCAweDU3LCAweGQyLCAweGNiLCAweDYwCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGEzODRfcHJfZW50cm9weWlucHV0cHIy W10gPSB7CisrICAgIDB4ZDcsIDB4ZmIsIDB4YzksIDB4ZTgsIDB4ZTIsIDB4ZjIsIDB4YWEsIDB4 NGMsIDB4YjgsIDB4NTEsIDB4MmYsIDB4ZTEsCisrICAgIDB4MjIsIDB4YmEsIDB4ZjMsIDB4ZGEs IDB4MGEsIDB4MTksIDB4NzYsIDB4NzEsIDB4NTcsIDB4YjIsIDB4MWQsIDB4OTQsCisrICAgIDB4 MDksIDB4NjksIDB4NmMsIDB4ZDMsIDB4OTcsIDB4NTEsIDB4ODEsIDB4ODcKKyt9OworKworK19f Zmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9wcl9y ZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhlNiwgMHgxOSwgMHgyOCwgMHhhOCwgMHgyMSwgMHhj ZSwgMHg1ZSwgMHhkYiwgMHgyNCwgMHg3OSwgMHg4YywgMHg3NiwKKysgICAgMHg1ZCwgMHg3Mywg MHhiMiwgMHhkZiwgMHhhYywgMHhlZiwgMHg4NSwgMHhhNywgMHgzYiwgMHgxOSwgMHgwOSwgMHg4 YiwKKysgICAgMHg3ZiwgMHg5OCwgMHgyOCwgMHhhOSwgMHg5MywgMHhkOCwgMHg3YSwgMHhhZCwg MHg1NSwgMHg4YiwgMHgyNCwgMHg5ZCwKKysgICAgMHhlNiwgMHg5OCwgMHhmZSwgMHg0NywgMHhk NSwgMHg0OCwgMHhjMSwgMHgyMywgMHhkOCwgMHgxZCwgMHg2MiwgMHg3NQorK307CisrCisrLyog SE1BQyBTSEEtMzg0IE5vIFBSICAqLworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBobWFjX3NoYTM4NF9lbnRyb3B5aW5wdXRbXSA9IHsKKysgICAgMHhjMywgMHg1 NiwgMHgyYiwgMHgxZCwgMHhjMiwgMHhiYiwgMHhhOCwgMHhmMCwgMHhhZSwgMHgxYiwgMHgwZCwg MHhkMywKKysgICAgMHg1YSwgMHg2YywgMHhkYSwgMHg1NywgMHg4ZSwgMHhhNSwgMHg4YSwgMHgw ZCwgMHg2YywgMHg0YiwgMHgxOCwgMHhiMSwKKysgICAgMHgwNCwgMHgzZSwgMHhiNCwgMHg5OSwg MHgzNSwgMHhjNCwgMHhjMCwgMHg1ZgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0X25vbmNlW10gPSB7CisrICAgIDB4YzUsIDB4 NDksIDB4MWUsIDB4NjYsIDB4MjcsIDB4OTIsIDB4YmUsIDB4ZWMsIDB4YjUsIDB4MWUsIDB4NGIs IDB4YjEsCisrICAgIDB4MzgsIDB4ZTMsIDB4ZWIsIDB4NjIKKyt9OworKworK19fZmlwc19jb25z dHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9wZXJzb25h bGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHhiZSwgMHhlNywgMHg2YiwgMHg1NywgMHhkZSwg MHg4OCwgMHgxMSwgMHg5NiwgMHg5YiwgMHg2ZSwgMHhlYSwgMHhlNSwKKysgICAgMHg2MywgMHg4 MywgMHg0YywgMHhiNiwgMHg4ZCwgMHg2NiwgMHhhYSwgMHgxZiwgMHg4YiwgMHg1NCwgMHhlNywg MHg2MiwKKysgICAgMHg2ZCwgMHg1YSwgMHhmYywgMHhiZiwgMHg5NywgMHhiYSwgMHhjZCwgMHg3 NworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGht YWNfc2hhMzg0X2FkZGl0aW9uYWxpbnB1dFtdID0geworKyAgICAweGU1LCAweDI4LCAweDVmLCAw eDQzLCAweGY1LCAweDgzLCAweDZlLCAweDBhLCAweDgzLCAweDVjLCAweGUzLCAweDgxLAorKyAg ICAweDAzLCAweGYyLCAweGY4LCAweDc4LCAweDAwLCAweDdjLCAweDk1LCAweDg3LCAweDE2LCAw eGQ2LCAweDZjLCAweDU4LAorKyAgICAweDMzLCAweDZjLCAweDUzLCAweDM1LCAweDBkLCAweDY2 LCAweGUzLCAweGNlCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaG1hY19zaGEzODRfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweGUyLCAw eDFmLCAweGYzLCAweGRhLCAweDBkLCAweDE5LCAweDk5LCAweDg3LCAweGM0LCAweDkwLCAweGEy LCAweDMxLAorKyAgICAweGNhLCAweDJhLCAweDg5LCAweDU4LCAweDQzLCAweDQ0LCAweGI4LCAw eGRlLCAweGNmLCAweGE0LCAweGJlLCAweDNiLAorKyAgICAweDUzLCAweDI2LCAweDIyLCAweDMx LCAweDc2LCAweDQxLCAweDIyLCAweGI1LCAweGE4LCAweDcwLCAweDJmLCAweDRiLAorKyAgICAw eDY0LCAweDk1LCAweDRkLCAweDQ4LCAweDk2LCAweDM1LCAweGU2LCAweGJkLCAweDNjLCAweDM0 LCAweGRiLCAweDFiCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2ln bmVkIGNoYXIgaG1hY19zaGEzODRfZW50cm9weWlucHV0cmVzZWVkW10gPSB7CisrICAgIDB4Nzcs IDB4NjEsIDB4YmEsIDB4YmMsIDB4ZjIsIDB4YzEsIDB4ZjMsIDB4NGIsIDB4ODYsIDB4NjUsIDB4 ZmQsIDB4NDgsCisrICAgIDB4MGUsIDB4M2MsIDB4MDIsIDB4NWUsIDB4YTIsIDB4N2EsIDB4NmIs IDB4N2MsIDB4ZWQsIDB4MjEsIDB4NWUsIDB4ZjksCisrICAgIDB4Y2QsIDB4Y2QsIDB4NzcsIDB4 MDcsIDB4MmIsIDB4YmUsIDB4YzUsIDB4NWMKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAg ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTM4NF9hZGRpdGlvbmFsaW5wdXRy ZXNlZWRbXSA9IHsKKysgICAgMHgxOCwgMHgyNCwgMHg1ZiwgMHhjNiwgMHg4NCwgMHhkMSwgMHg2 NywgMHhjMywgMHg5YSwgMHgxMSwgMHhhNSwgMHg4YywKKysgICAgMHgwNywgMHgzOSwgMHgyMSwg MHg4MywgMHg0ZCwgMHgwNCwgMHhjNCwgMHg2YSwgMHgyOCwgMHgxOSwgMHhjZiwgMHg5MiwKKysg ICAgMHgyMSwgMHhkOSwgMHg5ZSwgMHg0MSwgMHg3MiwgMHg2YywgMHg5ZSwgMHg2MworK307Cisr CisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhMzg0 X2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg5NiwgMHg2NywgMHg0MSwgMHgyOCwgMHg5 YiwgMHhiNywgMHg5MiwgMHg4ZCwgMHg2NCwgMHgzYiwgMHhlNCwgMHhjZiwKKysgICAgMHg3ZSwg MHhhYSwgMHgxZSwgMHhiMSwgMHg0YiwgMHgxZCwgMHgwOSwgMHg1NiwgMHg2NywgMHg5YywgMHhj NiwgMHg2ZCwKKysgICAgMHgzYiwgMHhlOCwgMHg5MSwgMHg5ZCwgMHhlMSwgMHg4YSwgMHhiNywg MHgzMgorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGhtYWNfc2hhMzg0X3JldHVybmVkYml0c1tdID0geworKyAgICAweGUzLCAweDU5LCAweDYxLCAw eDM4LCAweDkyLCAweGVjLCAweGUyLCAweDNjLCAweGZmLCAweGI3LCAweGRiLCAweDE5LAorKyAg ICAweDBmLCAweDViLCAweDkzLCAweDY4LCAweDBkLCAweGE0LCAweDk0LCAweDQwLCAweDcyLCAw eDBiLCAweGUwLCAweGVkLAorKyAgICAweDRkLCAweGNkLCAweDY4LCAweGEwLCAweDFlLCAweGZl LCAweDY3LCAweGIyLCAweGZhLCAweDIxLCAweDU2LCAweDc0LAorKyAgICAweGE0LCAweGFkLCAw eGNmLCAweGI3LCAweDYwLCAweDY2LCAweDJlLCAweDQwLCAweGRlLCAweDgyLCAweGNhLCAweGZi CisrfTsKKysKKysvKiBITUFDIFNIQS01MTIgUFIgICovCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX3ByX2VudHJvcHlpbnB1dFtdID0gewor KyAgICAweGFhLCAweDllLCAweDQ1LCAweDY3LCAweDBlLCAweDAwLCAweDJhLCAweDY3LCAweDk4 LCAweGQ2LCAweGRhLCAweDBiLAorKyAgICAweDBmLCAweDE3LCAweDdlLCAweGFjLCAweGZkLCAw eDI3LCAweGM0LCAweGNhLCAweDg0LCAweGRmLCAweGRlLCAweGJhLAorKyAgICAweDg1LCAweGQ5 LCAweGJlLCAweDhmLCAweGYzLCAweGZmLCAweDkxLCAweDRkCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJfbm9uY2VbXSA9 IHsKKysgICAgMHg4YywgMHg0OSwgMHgyZiwgMHg1OCwgMHgxZSwgMHg3YSwgMHhkYSwgMHg0Yiwg MHg3ZSwgMHg4YSwgMHgzMCwgMHg3YiwKKysgICAgMHg4NiwgMHhlYSwgMHhhZiwgMHhhMgorK307 CisrCisrX19maXBzX2NvbnN0c2VnCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGht YWNfc2hhNTEyX3ByX3BlcnNvbmFsaXphdGlvbnN0cmluZ1tdID0geworKyAgICAweDcxLCAweGUx LCAweGJiLCAweGFkLCAweGE3LCAweDRiLCAweDJlLCAweDMxLCAweDNiLCAweDBiLCAweGVjLCAw eDI0LAorKyAgICAweDk5LCAweDM4LCAweGJjLCAweGFhLCAweDA1LCAweDRjLCAweDQ2LCAweDQ0 LCAweGZhLCAweGFkLCAweDhlLCAweDAyLAorKyAgICAweGMxLCAweDdlLCAweGFkLCAweGVjLCAw eDU0LCAweGE2LCAweGQwLCAweGFkCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJfYWRkaXRpb25hbGlucHV0W10gPSB7Cisr ICAgIDB4M2QsIDB4NmUsIDB4YTYsIDB4YTgsIDB4MjksIDB4MmEsIDB4YjIsIDB4ZjUsIDB4OTgs IDB4NDIsIDB4ZTQsIDB4OTIsCisrICAgIDB4NzgsIDB4MjIsIDB4NjcsIDB4ZmQsIDB4MWIsIDB4 MTUsIDB4MWUsIDB4MjksIDB4YWEsIDB4NzEsIDB4M2MsIDB4M2MsCisrICAgIDB4ZTcsIDB4MDUs IDB4MjAsIDB4YTksIDB4MjksIDB4YzYsIDB4NzUsIDB4NzEKKyt9OworKworK19fZmlwc19jb25z dHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9lbnRyb3B5aW5w dXRwcltdID0geworKyAgICAweGFiLCAweGI5LCAweDE2LCAweGQ4LCAweDU1LCAweDM1LCAweDU0 LCAweGI3LCAweDk3LCAweDNmLCAweDk0LCAweGJjLAorKyAgICAweDJmLCAweDdjLCAweDcwLCAw eGM3LCAweGQwLCAweGVkLCAweGI3LCAweDRiLCAweGY3LCAweGY2LCAweDZjLCAweDAzLAorKyAg ICAweDBjLCAweGIwLCAweDAzLCAweGQ4LCAweGJiLCAweDcxLCAweGQ5LCAweDEwCisrfTsKKysK KytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJf cHJfaW50X3JldHVybmVkYml0c1tdID0geworKyAgICAweDhlLCAweGQzLCAweGZkLCAweDUyLCAw eDllLCAweDgzLCAweDA4LCAweDQ5LCAweDE4LCAweDZlLCAweDIzLCAweDU2LAorKyAgICAweDVj LCAweDQ1LCAweDkzLCAweDM0LCAweDA1LCAweGUyLCAweDk4LCAweDhmLCAweDBjLCAweGQ0LCAw eDMyLCAweDBjLAorKyAgICAweGZkLCAweGRhLCAweDVmLCAweDkyLCAweDNhLCAweDhjLCAweDgx LCAweGJkLCAweGY2LCAweDZjLCAweDU1LCAweGZkLAorKyAgICAweGI4LCAweDIwLCAweGNlLCAw eDhkLCAweDk3LCAweDI3LCAweGU4LCAweGU4LCAweGUwLCAweGIzLCAweDg1LCAweDUwLAorKyAg ICAweGEyLCAweGMyLCAweGIyLCAweDk1LCAweDFkLCAweDQ4LCAweGQzLCAweDdiLCAweDRiLCAw eDc4LCAweDEzLCAweDM1LAorKyAgICAweDA1LCAweDE3LCAweGJlLCAweDBkCisrfTsKKysKKytf X2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfcHJf YWRkaXRpb25hbGlucHV0MltdID0geworKyAgICAweGMzLCAweGZjLCAweDk1LCAweGFhLCAweDY5 LCAweDA2LCAweGFlLCAweDU5LCAweDQxLCAweGNlLCAweDI2LCAweDA4LAorKyAgICAweDI5LCAw eDZkLCAweDQ1LCAweGRhLCAweGU4LCAweGIzLCAweDZjLCAweDk1LCAweDYwLCAweDBmLCAweDcw LCAweDJjLAorKyAgICAweDEwLCAweGJhLCAweDM4LCAweDhjLCAweGNmLCAweDI5LCAweDk5LCAw eGFhCisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg aG1hY19zaGE1MTJfcHJfZW50cm9weWlucHV0cHIyW10gPSB7CisrICAgIDB4M2IsIDB4OWEsIDB4 MjUsIDB4Y2UsIDB4ZDcsIDB4ZjksIDB4NWMsIDB4ZDEsIDB4M2EsIDB4M2UsIDB4YWEsIDB4NzEs CisrICAgIDB4MTQsIDB4M2UsIDB4MTksIDB4ZTgsIDB4Y2UsIDB4ZTYsIDB4ZmUsIDB4NTEsIDB4 ODQsIDB4ZTksIDB4MWIsIDB4ZmUsCisrICAgIDB4M2YsIDB4YTcsIDB4ZjIsIDB4ZmQsIDB4NzYs IDB4NWYsIDB4NmEsIDB4ZTcKKyt9OworKworK19fZmlwc19jb25zdHNlZyBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9wcl9yZXR1cm5lZGJpdHNbXSA9IHsKKysgICAgMHhi NywgMHg4MiwgMHhhOSwgMHg1NywgMHg4MSwgMHg2NywgMHg1MywgMHhiNSwgMHhhMSwgMHhlOSwg MHgzZCwgMHgzNSwKKysgICAgMHhmOSwgMHhlNCwgMHg5NywgMHhiZSwgMHhhNiwgMHhjYSwgMHhm MSwgMHgwMSwgMHgxMywgMHgwOSwgMHhlNywgMHgyMSwKKysgICAgMHhjMCwgMHhlZCwgMHg5Mywg MHg1ZCwgMHg0YiwgMHhmNCwgMHhlYiwgMHg4ZCwgMHg1MywgMHgyNSwgMHg4YSwgMHhjNCwKKysg ICAgMHhiMSwgMHg2ZiwgMHg2ZSwgMHgzNywgMHhjZCwgMHgyZSwgMHhhYywgMHgzOSwgMHhiMiwg MHhiNiwgMHg5OSwgMHhhMywKKysgICAgMHg4MiwgMHgwMCwgMHhiMCwgMHgyMSwgMHhmMCwgMHhj NywgMHgyZiwgMHg0YywgMHg3MywgMHg5MiwgMHhmZCwgMHgwMCwKKysgICAgMHhiNiwgMHhhZiwg MHhiYywgMHhkMworK307CisrCisrLyogSE1BQyBTSEEtNTEyIE5vIFBSICAqLworK19fZmlwc19j b25zdHNlZyBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUxMl9lbnRyb3B5aW5w dXRbXSA9IHsKKysgICAgMHg2ZSwgMHg4NSwgMHhlNiwgMHgyNSwgMHg5NiwgMHgyOSwgMHhhNywg MHg1MiwgMHg1YiwgMHg2MCwgMHhiYSwgMHhhYSwKKysgICAgMHhkZSwgMHhkYiwgMHgzNiwgMHgw YSwgMHg1MSwgMHg5YSwgMHgxNSwgMHhhZSwgMHg2ZSwgMHgxOCwgMHhkMywgMHhmZSwKKysgICAg MHgzOSwgMHhiOSwgMHg0YSwgMHg5NiwgMHhmOCwgMHg3NywgMHhjYiwgMHg5NQorK307CisrCisr X19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX25v bmNlW10gPSB7CisrICAgIDB4ZTAsIDB4YTYsIDB4NWQsIDB4MDgsIDB4YzMsIDB4N2MsIDB4YWUs IDB4MjUsIDB4MmUsIDB4ODAsIDB4ZDEsIDB4M2UsCisrICAgIDB4ZDksIDB4YWYsIDB4NDMsIDB4 M2MKKyt9OworKworK19fZmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciBobWFjX3NoYTUxMl9wZXJzb25hbGl6YXRpb25zdHJpbmdbXSA9IHsKKysgICAgMHg1Mywg MHg5OSwgMHg1MiwgMHg1ZiwgMHgxMSwgMHhhOSwgMHg2NCwgMHg2NiwgMHgyMCwgMHg1ZSwgMHgx YiwgMHg1ZiwKKysgICAgMHg0MiwgMHhiMywgMHhmNCwgMHhkYSwgMHhlZCwgMHhiYiwgMHg2Mywg MHhjMSwgMHgyMywgMHhhZiwgMHhkMCwgMHgwMSwKKysgICAgMHg5MCwgMHgzYiwgMHhkMCwgMHg3 OCwgMHhlNCwgMHgwYiwgMHhhNywgMHgyMAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX2FkZGl0aW9uYWxpbnB1dFtdID0gewor KyAgICAweDg1LCAweDkwLCAweDgwLCAweGQzLCAweDk4LCAweGYxLCAweDUzLCAweDZkLCAweDY4 LCAweDE1LCAweDhmLCAweGU1LAorKyAgICAweDYwLCAweDNmLCAweDE3LCAweDI5LCAweDU1LCAw eDhkLCAweDMzLCAweGIxLCAweDQ1LCAweDY0LCAweDY0LCAweDhkLAorKyAgICAweDUwLCAweDIx LCAweDg5LCAweGFlLCAweGY2LCAweGZkLCAweDMyLCAweDczCisrfTsKKysKKytfX2ZpcHNfY29u c3RzZWcgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfaW50X3JldHVybmVk Yml0c1tdID0geworKyAgICAweDI4LCAweDU2LCAweDMwLCAweDZmLCAweGY0LCAweGExLCAweDQ4 LCAweGUwLCAweGM5LCAweGY1LCAweDc1LCAweDkwLAorKyAgICAweGNjLCAweGZiLCAweGRmLCAw eGRmLCAweDcxLCAweDNkLCAweDBhLCAweDlhLCAweDAzLCAweDY1LCAweDNiLCAweDE4LAorKyAg ICAweDYxLCAweGUzLCAweGQxLCAweGRhLCAweGNjLCAweDRhLCAweGZlLCAweDU1LCAweDM4LCAw eGY4LCAweDIxLCAweDZiLAorKyAgICAweGZhLCAweDE4LCAweDAxLCAweDQyLCAweDM5LCAweDJm LCAweDk5LCAweDUzLCAweDM4LCAweDE1LCAweDgyLCAweDM0LAorKyAgICAweGM1LCAweDkzLCAw eDkyLCAweGJjLCAweDRkLCAweDc1LCAweDFhLCAweDVmLCAweDIxLCAweDI3LCAweGNjLCAweGEx LAorKyAgICAweGIxLCAweDU3LCAweDY5LCAweGU4CisrfTsKKysKKytfX2ZpcHNfY29uc3RzZWcg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgaG1hY19zaGE1MTJfZW50cm9weWlucHV0cmVzZWVk W10gPSB7CisrICAgIDB4OGMsIDB4NTIsIDB4N2UsIDB4NzcsIDB4NzIsIDB4M2YsIDB4YTMsIDB4 MDQsIDB4OTcsIDB4MTAsIDB4OWIsIDB4NDEsCisrICAgIDB4YmQsIDB4ZTgsIDB4ZmYsIDB4ODks IDB4ZWQsIDB4ODAsIDB4ZTMsIDB4YmQsIDB4YWEsIDB4MTIsIDB4MmQsIDB4Y2EsCisrICAgIDB4 NzUsIDB4ODIsIDB4MzYsIDB4NzcsIDB4ODgsIDB4Y2QsIDB4YTYsIDB4NzMKKyt9OworKworK19f Zmlwc19jb25zdHNlZworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBobWFjX3NoYTUx Ml9hZGRpdGlvbmFsaW5wdXRyZXNlZWRbXSA9IHsKKysgICAgMHg3ZSwgMHgzMiwgMHhlMywgMHg2 OSwgMHg2OSwgMHgwNywgMHgzNCwgMHhhMiwgMHgxNiwgMHhhMiwgMHg1ZCwgMHgxYSwKKysgICAg MHgxMCwgMHg5MSwgMHhkMywgMHhlMiwgMHgyMSwgMHhhMiwgMHhhMywgMHhkZCwgMHhjZCwgMHgw YywgMHgwOSwgMHg4NiwKKysgICAgMHgxMSwgMHhlMSwgMHg1MCwgMHhmZiwgMHg1YywgMHhiNywg MHhlYiwgMHg1YworK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGhtYWNfc2hhNTEyX2FkZGl0aW9uYWxpbnB1dDJbXSA9IHsKKysgICAgMHg3ZiwgMHg3 OCwgMHg2NiwgMHhkOCwgMHhmYiwgMHg2NywgMHhjZiwgMHg4ZCwgMHg4YywgMHgwOCwgMHgzMCwg MHhhNSwKKysgICAgMHhmOCwgMHg3ZCwgMHhjZiwgMHg0NCwgMHg1OSwgMHhjZSwgMHhmOCwgMHhk ZiwgMHg1OCwgMHhkMywgMHg2MCwgMHhjYiwKKysgICAgMHhhOCwgMHg2MCwgMHhiOSwgMHgwNywg MHhjNCwgMHhiMSwgMHg5NSwgMHg0OAorK307CisrCisrX19maXBzX2NvbnN0c2VnIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGhtYWNfc2hhNTEyX3JldHVybmVkYml0c1tdID0geworKyAgICAw eGRmLCAweGE3LCAweDM2LCAweGQ0LCAweGRjLCAweDVkLCAweDRkLCAweDMxLCAweGFkLCAweDY5 LCAweDQ2LCAweDlmLAorKyAgICAweGYxLCAweDdjLCAweGQ3LCAweDNiLCAweDRmLCAweDU1LCAw eGYyLCAweGQ3LCAweGI5LCAweDlkLCAweGFkLCAweDdhLAorKyAgICAweDc5LCAweDA4LCAweDU5 LCAweGE1LCAweGRjLCAweDc0LCAweGY1LCAweDliLCAweDczLCAweGQyLCAweDEzLCAweDI1LAor KyAgICAweDBiLCAweDgxLCAweDA4LCAweDA4LCAweDI1LCAweGZiLCAweDM5LCAweGYyLCAweGYw LCAweGEzLCAweGE0LCAweDhkLAorKyAgICAweGVmLCAweDA1LCAweDllLCAweGI4LCAweGM3LCAw eDUyLCAweGU0LCAweDBlLCAweDQyLCAweGFhLCAweDdjLCAweDc5LAorKyAgICAweGMyLCAweGQ2 LCAweGZkLCAweGE1CisrfTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2Zp cHNfZHNhX3NlbGZ0ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2Rz YV9zZWxmdGVzdC5jCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kc2Ffc2Vs ZnRlc3QuYy5maXBzCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDA4MjgzOTgyICswMjAwCisrKysgb3Bl bnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19kc2Ffc2VsZnRlc3QuYwkyMDE1LTA2LTE1IDE3 OjMwOjAwLjAwODI4Mzk4MiArMDIwMAorQEAgLTAsMCArMSwxOTIgQEAKKysvKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBt ZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3Ry aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo dAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysg KiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNl IG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tu b3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5h bWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1 c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZv ciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3Jl QG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNT TCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBl cm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0 aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysg KiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3 YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0 aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycn IEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUg RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysg KiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO Q0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH RVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RS SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu CisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wv Y3J5cHRvLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZHNhLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wv Zmlwcy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2V2 cC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+CisrI2luY2x1ZGUgImZpcHNfbG9jbC5oIgor KworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBk c2FfdGVzdF8yMDQ4X3BbXSA9IHsKKysgICAgMHhhOCwgMHg1MywgMHg3OCwgMHhkOCwgMHhmZCwg MHgzZiwgMHg4ZCwgMHg3MiwgMHhlYywgMHg3NCwgMHgxOCwgMHgwOCwKKysgICAgMHgwZCwgMHhh MiwgMHgxMywgMHgxNywgMHhlNCwgMHgzZSwgMHhjNCwgMHhiNiwgMHgyYiwgMHhhOCwgMHhjOCwg MHg2MiwKKysgICAgMHgzYiwgMHg3ZSwgMHg0ZCwgMHgwNCwgMHg0NCwgMHgxZCwgMHhkMSwgMHhh MCwgMHg2NSwgMHg4NiwgMHg2MiwgMHg1OSwKKysgICAgMHg2NCwgMHg5MywgMHhjYSwgMHg4ZSwg MHg5ZSwgMHg4ZiwgMHhiYiwgMHg3ZSwgMHgzNCwgMHhhYSwgMHhkZCwgMHhiNiwKKysgICAgMHgy ZSwgMHg1ZCwgMHg2NywgMHhiNiwgMHhkMCwgMHg5YSwgMHg2ZSwgMHg2MSwgMHhiNywgMHg2OSwg MHhlNywgMHhjMywKKysgICAgMHg1MiwgMHhhYSwgMHgyYiwgMHgxMCwgMHhlMiwgMHgwYywgMHhh MCwgMHg2MywgMHg2OSwgMHg2MywgMHhiNSwgMHg1MiwKKysgICAgMHgzZSwgMHg4NiwgMHg0Nywg MHgwZCwgMHhlYywgMHhiYiwgMHhlZCwgMHhhMCwgMHgyNywgMHhlNywgMHg5NywgMHhlNywKKysg ICAgMHhiNiwgMHg3NiwgMHgzNSwgMHhkNCwgMHhkNCwgMHg5YywgMHgzMCwgMHg3MCwgMHgwZSwg MHg3NCwgMHhhZiwgMHg4YSwKKysgICAgMHgwZiwgMHhmMSwgMHg1NiwgMHhhOCwgMHgwMSwgMHhh ZiwgMHg1NywgMHhhMiwgMHg2ZSwgMHg3MCwgMHg3OCwgMHhmMSwKKysgICAgMHhkOCwgMHgyZiwg MHg3NCwgMHg5MCwgMHg4ZSwgMHhjYiwgMHg2ZCwgMHgwNywgMHhlNywgMHgwYiwgMHgzNSwgMHgw MywKKysgICAgMHhlZSwgMHhkOSwgMHg0ZiwgMHhhMywgMHgyYywgMHhmMSwgMHg3YSwgMHg3Ziwg MHhjMywgMHhkNiwgMHhjZiwgMHg0MCwKKysgICAgMHhkYywgMHg3YiwgMHgwMCwgMHg4MywgMHgw ZSwgMHg2YSwgMHgyNSwgMHg2NiwgMHhkYywgMHgwNywgMHgzZSwgMHgzNCwKKysgICAgMHgzMywg MHgxMiwgMHg1MSwgMHg3YywgMHg2YSwgMHhhNSwgMHgxNSwgMHgyYiwgMHg0YiwgMHhmZSwgMHhj ZCwgMHgyZSwKKysgICAgMHg1NSwgMHgxZiwgMHhlZSwgMHgzNCwgMHg2MywgMHgxOCwgMHhhMSwg MHg1MywgMHg0MiwgMHgzYywgMHg5OSwgMHg2YiwKKysgICAgMHgwZCwgMHg1ZCwgMHhjYiwgMHg5 MSwgMHgwMiwgMHhhZSwgMHhkZCwgMHgzOCwgMHg3OSwgMHg4NiwgMHgxNiwgMHhmMSwKKysgICAg MHhmMSwgMHhlMCwgMHhkNiwgMHhjNCwgMHgwMywgMHg1MiwgMHg1YiwgMHgxZiwgMHg5YiwgMHgz ZCwgMHg0ZCwgMHhjNywKKysgICAgMHg2NiwgMHhkZSwgMHgyZCwgMHhmYywgMHg0YSwgMHg1Niwg MHhkNywgMHhiOCwgMHhiYSwgMHg1OSwgMHg2MywgMHhkNiwKKysgICAgMHgwZiwgMHgzZSwgMHgx NiwgMHgzMSwgMHg4OCwgMHg3MCwgMHhhZCwgMHg0MywgMHg2OSwgMHg1MiwgMHhlNSwgMHg1NywK KysgICAgMHg2NSwgMHgzNywgMHg0ZSwgMHhhYiwgMHg4NSwgMHhlOCwgMHhlYywgMHgxNywgMHhk NiwgMHhiOSwgMHhhNCwgMHg1NCwKKysgICAgMHg3YiwgMHg5YiwgMHg1ZiwgMHgyNywgMHg1Miwg MHhmMywgMHgxMCwgMHg1YiwgMHhlOCwgMHgwOSwgMHhiMiwgMHgzYSwKKysgICAgMHgyYywgMHg4 ZCwgMHg3NCwgMHg2OSwgMHhkYiwgMHgwMiwgMHhlMiwgMHg0ZCwgMHg1OSwgMHgyMywgMHg5NCwg MHhhNywKKysgICAgMHhkYiwgMHhhMCwgMHg2OSwgMHhlOQorK307CisrCisrc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgZHNhX3Rlc3RfMjA0OF9xW10gPSB7CisrICAgIDB4ZDIsIDB4NzcsIDB4 MDQsIDB4NGUsIDB4NTAsIDB4ZjUsIDB4YTQsIDB4ZTMsIDB4ZjUsIDB4MTAsIDB4YTUsIDB4MGEs CisrICAgIDB4MGIsIDB4ODQsIDB4ZmQsIDB4ZmYsIDB4YmMsIDB4YTAsIDB4NDcsIDB4ZWQsIDB4 MjcsIDB4NjAsIDB4MjAsIDB4NTYsCisrICAgIDB4NzQsIDB4NDEsIDB4YTAsIDB4YTUKKyt9Owor KworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRzYV90ZXN0XzIwNDhfZ1tdID0geworKyAg ICAweDEzLCAweGQ3LCAweDU0LCAweGUyLCAweDFmLCAweGQyLCAweDQxLCAweDY1LCAweDVkLCAw eGE4LCAweDkxLCAweGM1LAorKyAgICAweDIyLCAweGE2LCAweDVhLCAweDcyLCAweGE4LCAweDli LCAweGRjLCAweDY0LCAweGVjLCAweDliLCAweDU0LCAweGE4LAorKyAgICAweDIxLCAweGVkLCAw eDRhLCAweDg5LCAweDhiLCAweDQ5LCAweDBlLCAweDBjLCAweDRmLCAweGNiLCAweDcyLCAweDE5 LAorKyAgICAweDJhLCAweDRhLCAweDIwLCAweGY1LCAweDQxLCAweGYzLCAweGYyLCAweDkyLCAw eDUzLCAweDk5LCAweGYwLCAweGJhLAorKyAgICAweGVjLCAweGY5LCAweDI5LCAweGFhLCAweGZi LCAweGY3LCAweDlkLCAweGZlLCAweDQzLCAweDMyLCAweDM5LCAweDNiLAorKyAgICAweDMyLCAw eGNkLCAweDJlLCAweDJmLCAweGNmLCAweDI3LCAweDJmLCAweDMyLCAweGE2LCAweDI3LCAweDQz LCAweDRhLAorKyAgICAweDBkLCAweGYyLCAweDQyLCAweGI3LCAweDViLCAweDQxLCAweDRkLCAw eGYzLCAweDcyLCAweDEyLCAweDFlLCAweDUzLAorKyAgICAweGE1LCAweDUzLCAweGYyLCAweDIy LCAweGY4LCAweDM2LCAweGIwLCAweDAwLCAweGYwLCAweDE2LCAweDQ4LCAweDViLAorKyAgICAw eDZiLCAweGQwLCAweDg5LCAweDg0LCAweDUxLCAweDgwLCAweDFkLCAweGNkLCAweDhkLCAweGU2 LCAweDRjLCAweGQ1LAorKyAgICAweDM2LCAweDU2LCAweDk2LCAweGZmLCAweGM1LCAweDMyLCAw eGQ1LCAweDI4LCAweGM1LCAweDA2LCAweDYyLCAweDBhLAorKyAgICAweDk0LCAweDJhLCAweDAz LCAweDA1LCAweDA0LCAweDZkLCAweDhmLCAweDE4LCAweDc2LCAweDM0LCAweDFmLCAweDFlLAor KyAgICAweDU3LCAweDBiLCAweGMzLCAweDk3LCAweDRiLCAweGE2LCAweGI5LCAweGE0LCAweDM4 LCAweGU5LCAweDcwLCAweDIzLAorKyAgICAweDAyLCAweGEyLCAweGU2LCAweGU2LCAweDdiLCAw eGZkLCAweDA2LCAweGQzLCAweDJiLCAweGM2LCAweDc5LCAweDk2LAorKyAgICAweDIyLCAweDcx LCAweGQ3LCAweGI0LCAweDBjLCAweGQ3LCAweDJmLCAweDM4LCAweDZlLCAweDY0LCAweGUwLCAw eGQ3LAorKyAgICAweGVmLCAweDg2LCAweGNhLCAweDhjLCAweGE1LCAweGQxLCAweDQyLCAweDI4 LCAweGRjLCAweDJhLCAweDRmLCAweDE2LAorKyAgICAweGUzLCAweDE4LCAweDk4LCAweDg2LCAw eGI1LCAweDk5LCAweDA2LCAweDc0LCAweGY0LCAweDIwLCAweDBmLCAweDNhLAorKyAgICAweDRj LCAweGY2LCAweDVhLCAweDNmLCAweDBkLCAweGRiLCAweGExLCAweGZhLCAweDY3LCAweDJkLCAw eGZmLCAweDJmLAorKyAgICAweDVlLCAweDE0LCAweDNkLCAweDEwLCAweGU0LCAweGU5LCAweDdh LCAweGU4LCAweDRmLCAweDZkLCAweGEwLCAweDk1LAorKyAgICAweDM1LCAweGQ1LCAweGI5LCAw eGRmLCAweDI1LCAweDkxLCAweDgxLCAweGE3LCAweDliLCAweDYzLCAweGIwLCAweDY5LAorKyAg ICAweGU5LCAweDQ5LCAweDk3LCAweDJiLCAweDAyLCAweGJhLCAweDM2LCAweGIzLCAweDU4LCAw eDZhLCAweGFiLCAweDdlLAorKyAgICAweDQ1LCAweGYzLCAweDIyLCAweGY4LCAweDJlLCAweDRl LCAweDg1LCAweGNhLCAweDNhLCAweGI4LCAweDU1LCAweDkxLAorKyAgICAweGIzLCAweGMyLCAw eGE5LCAweDY2CisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkc2FfdGVzdF8y MDQ4X3B1Yl9rZXlbXSA9IHsKKysgICAgMHgyNCwgMHg1MiwgMHhmMywgMHhjYywgMHhiZSwgMHg5 ZSwgMHhkNSwgMHhjYSwgMHg3ZCwgMHhjNywgMHg0YywgMHg2MCwKKysgICAgMHgyYiwgMHg5OSwg MHgyMiwgMHg2ZSwgMHg4ZiwgMHgyZiwgMHhhYiwgMHgzOCwgMHhlNywgMHhkNywgMHhkZCwgMHhm YiwKKysgICAgMHg3NSwgMHg1MywgMHg5YiwgMHgxNywgMHgxNSwgMHg1ZSwgMHg5ZiwgMHhjZiwg MHhkMSwgMHhhYiwgMHhhNSwgMHg2NCwKKysgICAgMHhlYiwgMHg4NSwgMHgzNSwgMHhkOCwgMHgx MiwgMHhjOSwgMHhjMiwgMHhkYywgMHhmOSwgMHg3MiwgMHg4NCwgMHg0NCwKKysgICAgMHgxYiwg MHhjNCwgMHg4MiwgMHgyNCwgMHgzNiwgMHgyNCwgMHhjNywgMHhmNCwgMHg1NywgMHg1OCwgMHgw YywgMHgxYywKKysgICAgMHgzOCwgMHhhNSwgMHg3YywgMHg0NiwgMHhjNCwgMHg1NywgMHgzOSwg MHgyNCwgMHg3MCwgMHhlZCwgMHhiNSwgMHgyYywKKysgICAgMHhiNSwgMHhhNiwgMHhlMCwgMHgz ZiwgMHhlNiwgMHgyOCwgMHg3YiwgMHhiNiwgMHhmNCwgMHg5YSwgMHg0MiwgMHhhMiwKKysgICAg MHgwNiwgMHg1YSwgMHgwNSwgMHg0ZiwgMHgwMywgMHgwOCwgMHgzOSwgMHhkZiwgMHgxZiwgMHhk MywgMHgxNCwgMHg5YywKKysgICAgMHg0YywgMHhhMCwgMHg1MywgMHgxZCwgMHhkOCwgMHhjYSwg MHg4YSwgMHhhYSwgMHg5YywgMHhjNywgMHgzMywgMHg3MSwKKysgICAgMHg5MywgMHgzOCwgMHg3 MywgMHg0OCwgMHgzMywgMHg2MSwgMHgxOCwgMHgyMiwgMHg0NSwgMHg0NSwgMHhlOCwgMHg4YywK KysgICAgMHg4MCwgMHhmZiwgMHhkOCwgMHg3NiwgMHg1ZCwgMHg3NCwgMHgzNiwgMHgwMywgMHgz MywgMHhjYywgMHhhYiwgMHg5OSwKKysgICAgMHg3MiwgMHg3NywgMHg5YiwgMHg2NSwgMHgyNSwg MHhhNiwgMHg1YiwgMHhkZCwgMHgwZCwgMHgxMCwgMHhjNiwgMHg3NSwKKysgICAgMHhjMSwgMHgw OSwgMHhiYiwgMHhkMywgMHhlNSwgMHhiZSwgMHg0ZCwgMHg3MiwgMHhlZiwgMHg2ZSwgMHhiYSwg MHg2ZSwKKysgICAgMHg0MywgMHg4ZCwgMHg1MiwgMHgyNiwgMHgyMywgMHg3ZCwgMHhiOCwgMHg4 OCwgMHgzNywgMHg5YywgMHg1ZiwgMHhjYywKKysgICAgMHg0NywgMHhhMywgMHg4NCwgMHg3Ziwg MHhmNiwgMHgzNywgMHgxMSwgMHhiYSwgMHhlZCwgMHg2ZCwgMHgwMywgMHhhZiwKKysgICAgMHhl OCwgMHgxZSwgMHg2OSwgMHg0YSwgMHg0MSwgMHgzYiwgMHg2OCwgMHgwYiwgMHhkMywgMHg4YSwg MHhiNCwgMHg5MCwKKysgICAgMHgzZiwgMHg4MywgMHg3MCwgMHhhNywgMHgwNywgMHhlZiwgMHg1 NSwgMHgxZCwgMHg0OSwgMHg0MSwgMHgwMiwgMHg2ZCwKKysgICAgMHg5NSwgMHg3OSwgMHhkNiwg MHg5MSwgMHhkZSwgMHg4ZSwgMHhkYSwgMHhhMSwgMHg2MSwgMHgwNSwgMHhlYiwgMHg5ZCwKKysg ICAgMHhiYSwgMHgzYywgMHgyZiwgMHg0YywgMHgxYiwgMHhlYywgMHg1MCwgMHg4MiwgMHg3NSwg MHhhYSwgMHgwMiwgMHgwNywKKysgICAgMHhlMiwgMHg1MSwgMHhiNSwgMHhlYywgMHhjYiwgMHgy OCwgMHg2YSwgMHg0YiwgMHgwMSwgMHhkNCwgMHg0OSwgMHhkMywKKysgICAgMHgwYSwgMHhjYiwg MHg2NywgMHgzNywgMHgxNywgMHhhMCwgMHhkMiwgMHhmYiwgMHgzYiwgMHg1MCwgMHhjOCwgMHg5 MywKKysgICAgMHhmNywgMHhkYSwgMHhiMSwgMHg0ZgorK307CisrCisrc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgZHNhX3Rlc3RfMjA0OF9wcml2X2tleVtdID0geworKyAgICAweDBjLCAweDRi LCAweDMwLCAweDg5LCAweGQxLCAweGI4LCAweDYyLCAweGNiLCAweDNjLCAweDQzLCAweDY0LCAw eDkxLAorKyAgICAweGYwLCAweDkxLCAweDU0LCAweDcwLCAweGM1LCAweDI3LCAweDk2LCAweGUz LCAweGFjLCAweGJlLCAweGU4LCAweDAwLAorKyAgICAweGVjLCAweDU1LCAweGY2LCAweGNjCisr fTsKKysKKytzdGF0aWMgaW50IGNvcnJ1cHRfZHNhOworKworK3ZvaWQgRklQU19jb3JydXB0X2Rz YSgpCisreworKyAgICBjb3JydXB0X2RzYSA9IDE7CisrfQorKworK2ludCBGSVBTX3NlbGZ0ZXN0 X2RzYSgpCisreworKyAgICBEU0EgKmRzYSA9IE5VTEw7CisrICAgIEVWUF9QS0VZICpwayA9IE5V TEw7CisrICAgIGludCByZXQgPSAwOworKworKyAgICBkc2EgPSBEU0FfbmV3KCk7CisrCisrICAg IGlmIChkc2EgPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBmaXBzX2xvYWRf a2V5X2NvbXBvbmVudChkc2EsIHAsIGRzYV90ZXN0XzIwNDgpOworKyAgICBmaXBzX2xvYWRfa2V5 X2NvbXBvbmVudChkc2EsIHEsIGRzYV90ZXN0XzIwNDgpOworKyAgICBmaXBzX2xvYWRfa2V5X2Nv bXBvbmVudChkc2EsIGcsIGRzYV90ZXN0XzIwNDgpOworKyAgICBmaXBzX2xvYWRfa2V5X2NvbXBv bmVudChkc2EsIHB1Yl9rZXksIGRzYV90ZXN0XzIwNDgpOworKyAgICBmaXBzX2xvYWRfa2V5X2Nv bXBvbmVudChkc2EsIHByaXZfa2V5LCBkc2FfdGVzdF8yMDQ4KTsKKysKKysgICAgaWYgKGNvcnJ1 cHRfZHNhKQorKyAgICAgICAgQk5fc2V0X2JpdChkc2EtPnB1Yl9rZXksIDIwNDcpOworKworKyAg ICBpZiAoKHBrID0gRVZQX1BLRVlfbmV3KCkpID09IE5VTEwpCisrICAgICAgICBnb3RvIGVycjsK KysKKysgICAgRVZQX1BLRVlfYXNzaWduX0RTQShwaywgZHNhKTsKKysKKysgICAgaWYgKCFmaXBz X3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIE5VTEwsIDAsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwsIDAsIEVWUF9zaGEyNTYoKSwgMCwgIkRTQSBTSEEyNTYiKSkKKysg ICAgICAgIGdvdG8gZXJyOworKyAgICByZXQgPSAxOworKworKyBlcnI6CisrICAgIGlmIChwaykK KysgICAgICAgIEVWUF9QS0VZX2ZyZWUocGspOworKyAgICBlbHNlIGlmIChkc2EpCisrICAgICAg ICBEU0FfZnJlZShkc2EpOworKyAgICByZXR1cm4gcmV0OworK30KKysjZW5kaWYKK2RpZmYgLXVw IG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfZW5jLmMuZmlwcyBvcGVuc3NsLTEuMC4y Yy9jcnlwdG8vZmlwcy9maXBzX2VuYy5jCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMv Zmlwc19lbmMuYy5maXBzCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDA5Mjg0MDA1ICswMjAwCisrKysg b3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19lbmMuYwkyMDE1LTA2LTE1IDE3OjMwOjAw LjAwOTI4NDAwNSArMDIwMAorQEAgLTAsMCArMSwxODkgQEAKKysvKiBmaXBlL2V2cC9maXBzX2Vu Yy5jICovCisrLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNyeXB0 c29mdC5jb20pCisrICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFRoaXMgcGFja2Fn ZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3JpdHRlbgorKyAqIGJ5IEVyaWMgWW91bmcgKGVh eUBjcnlwdHNvZnQuY29tKS4KKysgKiBUaGUgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gc28g YXMgdG8gY29uZm9ybSB3aXRoIE5ldHNjYXBlcyBTU0wuCisrICogCisrICogVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHVzZSBhcyBsb25nIGFz CisrICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBhaGVhcmVkIHRvLiAgVGhlIGZvbGxv d2luZyBjb25kaXRpb25zCisrICogYXBwbHkgdG8gYWxsIGNvZGUgZm91bmQgaW4gdGhpcyBkaXN0 cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwKKysgKiBsaGFzaCwgREVTLCBldGMuLCBjb2Rl OyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUgU1NMIGRvY3VtZW50YXRpb24KKysgKiBpbmNs dWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uIGlzIGNvdmVyZWQgYnkgdGhlIHNhbWUgY29weXJp Z2h0IHRlcm1zCisrICogZXhjZXB0IHRoYXQgdGhlIGhvbGRlciBpcyBUaW0gSHVkc29uICh0amhA Y3J5cHRzb2Z0LmNvbSkuCisrICogCisrICogQ29weXJpZ2h0IHJlbWFpbnMgRXJpYyBZb3VuZydz LCBhbmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0IG5vdGljZXMgaW4KKysgKiB0aGUgY29kZSBhcmUg bm90IHRvIGJlIHJlbW92ZWQuCisrICogSWYgdGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBwcm9k dWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZlbiBhdHRyaWJ1dGlvbgorKyAqIGFzIHRoZSBh dXRob3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5IHVzZWQuCisrICogVGhpcyBjYW4gYmUg aW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9yCisr ICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9yIHRleHR1YWwpIHByb3ZpZGVkIHdpdGggdGhl IHBhY2thZ2UuCisrICogCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1l dDoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0 aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMg bWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQorKyAqICAgIG11c3Qg ZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKKysgKiAgICAiVGhpcyBwcm9k dWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieQorKyAqICAgICBF cmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkiCisrICogICAgVGhlIHdvcmQgJ2NyeXB0b2dy YXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5Cisr ICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0b2dyYXBoaWMgcmVsYXRlZCA6LSkuCisrICog NC4gSWYgeW91IGluY2x1ZGUgYW55IFdpbmRvd3Mgc3BlY2lmaWMgY29kZSAob3IgYSBkZXJpdmF0 aXZlIHRoZXJlb2YpIGZyb20gCisrICogICAgdGhlIGFwcHMgZGlyZWN0b3J5IChhcHBsaWNhdGlv biBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFja25vd2xlZGdlbWVudDoKKysgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpoQGNy eXB0c29mdC5jb20pIgorKyAqIAorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJ QyBZT1VORyBgYEFTIElTJycgQU5ECisrICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UKKysgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisrICogREFN QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMKKysgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorKyAq IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB UklTSU5HIElOIEFOWSBXQVkKKysgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisrICogU1VDSCBEQU1BR0UuCisr ICogCisrICogVGhlIGxpY2VuY2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1Ymxp Y2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKKysgKiBkZXJpdmF0aXZlIG9mIHRoaXMgY29kZSBj YW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUKKysgKiBj b3BpZWQgYW5kIHB1dCB1bmRlciBhbm90aGVyIGRpc3RyaWJ1dGlvbiBsaWNlbmNlCisrICogW2lu Y2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KKysgKi8KKysKKysjaW5jbHVkZSA8c3Rk aW8uaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Cisr I2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKwor K2NvbnN0IEVWUF9DSVBIRVIgKkZJUFNfZ2V0X2NpcGhlcmJ5bmlkKGludCBuaWQpCisreworKyAg ICBzd2l0Y2ggKG5pZCkgeworKyAgICBjYXNlIE5JRF9hZXNfMTI4X2NiYzoKKysgICAgICAgIHJl dHVybiBFVlBfYWVzXzEyOF9jYmMoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzEyOF9jY206Cisr ICAgICAgICByZXR1cm4gRVZQX2Flc18xMjhfY2NtKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18x MjhfY2ZiMToKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzEyOF9jZmIxKCk7CisrCisrICAgIGNh c2UgTklEX2Flc18xMjhfY2ZiMTI4OgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTI4X2NmYjEy OCgpOworKworKyAgICBjYXNlIE5JRF9hZXNfMTI4X2NmYjg6CisrICAgICAgICByZXR1cm4gRVZQ X2Flc18xMjhfY2ZiOCgpOworKworKyAgICBjYXNlIE5JRF9hZXNfMTI4X2N0cjoKKysgICAgICAg IHJldHVybiBFVlBfYWVzXzEyOF9jdHIoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzEyOF9lY2I6 CisrICAgICAgICByZXR1cm4gRVZQX2Flc18xMjhfZWNiKCk7CisrCisrICAgIGNhc2UgTklEX2Fl c18xMjhfZ2NtOgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTI4X2djbSgpOworKworKyAgICBj YXNlIE5JRF9hZXNfMTI4X29mYjEyODoKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzEyOF9vZmIo KTsKKysKKysgICAgY2FzZSBOSURfYWVzXzEyOF94dHM6CisrICAgICAgICByZXR1cm4gRVZQX2Fl c18xMjhfeHRzKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18xOTJfY2JjOgorKyAgICAgICAgcmV0 dXJuIEVWUF9hZXNfMTkyX2NiYygpOworKworKyAgICBjYXNlIE5JRF9hZXNfMTkyX2NjbToKKysg ICAgICAgIHJldHVybiBFVlBfYWVzXzE5Ml9jY20oKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzE5 Ml9jZmIxOgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTkyX2NmYjEoKTsKKysKKysgICAgY2Fz ZSBOSURfYWVzXzE5Ml9jZmIxMjg6CisrICAgICAgICByZXR1cm4gRVZQX2Flc18xOTJfY2ZiMTI4 KCk7CisrCisrICAgIGNhc2UgTklEX2Flc18xOTJfY2ZiODoKKysgICAgICAgIHJldHVybiBFVlBf YWVzXzE5Ml9jZmI4KCk7CisrCisrICAgIGNhc2UgTklEX2Flc18xOTJfY3RyOgorKyAgICAgICAg cmV0dXJuIEVWUF9hZXNfMTkyX2N0cigpOworKworKyAgICBjYXNlIE5JRF9hZXNfMTkyX2VjYjoK KysgICAgICAgIHJldHVybiBFVlBfYWVzXzE5Ml9lY2IoKTsKKysKKysgICAgY2FzZSBOSURfYWVz XzE5Ml9nY206CisrICAgICAgICByZXR1cm4gRVZQX2Flc18xOTJfZ2NtKCk7CisrCisrICAgIGNh c2UgTklEX2Flc18xOTJfb2ZiMTI4OgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMTkyX29mYigp OworKworKyAgICBjYXNlIE5JRF9hZXNfMjU2X2NiYzoKKysgICAgICAgIHJldHVybiBFVlBfYWVz XzI1Nl9jYmMoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzI1Nl9jY206CisrICAgICAgICByZXR1 cm4gRVZQX2Flc18yNTZfY2NtKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18yNTZfY2ZiMToKKysg ICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl9jZmIxKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18y NTZfY2ZiMTI4OgorKyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMjU2X2NmYjEyOCgpOworKworKyAg ICBjYXNlIE5JRF9hZXNfMjU2X2NmYjg6CisrICAgICAgICByZXR1cm4gRVZQX2Flc18yNTZfY2Zi OCgpOworKworKyAgICBjYXNlIE5JRF9hZXNfMjU2X2N0cjoKKysgICAgICAgIHJldHVybiBFVlBf YWVzXzI1Nl9jdHIoKTsKKysKKysgICAgY2FzZSBOSURfYWVzXzI1Nl9lY2I6CisrICAgICAgICBy ZXR1cm4gRVZQX2Flc18yNTZfZWNiKCk7CisrCisrICAgIGNhc2UgTklEX2Flc18yNTZfZ2NtOgor KyAgICAgICAgcmV0dXJuIEVWUF9hZXNfMjU2X2djbSgpOworKworKyAgICBjYXNlIE5JRF9hZXNf MjU2X29mYjEyODoKKysgICAgICAgIHJldHVybiBFVlBfYWVzXzI1Nl9vZmIoKTsKKysKKysgICAg Y2FzZSBOSURfYWVzXzI1Nl94dHM6CisrICAgICAgICByZXR1cm4gRVZQX2Flc18yNTZfeHRzKCk7 CisrCisrICAgIGNhc2UgTklEX2Rlc19lZGVfZWNiOgorKyAgICAgICAgcmV0dXJuIEVWUF9kZXNf ZWRlKCk7CisrCisrICAgIGNhc2UgTklEX2Rlc19lZGUzX2VjYjoKKysgICAgICAgIHJldHVybiBF VlBfZGVzX2VkZTMoKTsKKysKKysgICAgY2FzZSBOSURfZGVzX2VkZTNfY2JjOgorKyAgICAgICAg cmV0dXJuIEVWUF9kZXNfZWRlM19jYmMoKTsKKysKKysgICAgY2FzZSBOSURfZGVzX2VkZTNfY2Zi MToKKysgICAgICAgIHJldHVybiBFVlBfZGVzX2VkZTNfY2ZiMSgpOworKworKyAgICBjYXNlIE5J RF9kZXNfZWRlM19jZmI2NDoKKysgICAgICAgIHJldHVybiBFVlBfZGVzX2VkZTNfY2ZiNjQoKTsK KysKKysgICAgY2FzZSBOSURfZGVzX2VkZTNfY2ZiODoKKysgICAgICAgIHJldHVybiBFVlBfZGVz X2VkZTNfY2ZiOCgpOworKworKyAgICBjYXNlIE5JRF9kZXNfZWRlM19vZmI2NDoKKysgICAgICAg IHJldHVybiBFVlBfZGVzX2VkZTNfb2ZiKCk7CisrCisrICAgIGNhc2UgTklEX2Rlc19lZGVfY2Jj OgorKyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRlX2NiYygpOworKworKyAgICBjYXNlIE5JRF9k ZXNfZWRlX2NmYjY0OgorKyAgICAgICAgcmV0dXJuIEVWUF9kZXNfZWRlX2NmYjY0KCk7CisrCisr ICAgIGNhc2UgTklEX2Rlc19lZGVfb2ZiNjQ6CisrICAgICAgICByZXR1cm4gRVZQX2Rlc19lZGVf b2ZiKCk7CisrCisrICAgIGRlZmF1bHQ6CisrICAgICAgICByZXR1cm4gTlVMTDsKKysKKysgICAg fQorK30KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHMuaC5maXBzIG9w ZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHMuaAorLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0 by9maXBzL2ZpcHMuaC5maXBzCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDA5Mjg0MDA1ICswMjAwCisr Kysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwcy5oCTIwMTUtMDYtMTUgMTc6MzA6MDAu MDA5Mjg0MDA1ICswMjAwCitAQCAtMCwwICsxLDI3OCBAQAorKy8qID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICog Q29weXJpZ2h0IChjKSAyMDAzIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2Vy dmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysg KgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg YWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs cyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFs bCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhp cworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdt ZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5 IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xr aXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9w ZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8K KysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0 ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNz bC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBt YXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBl YXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lv biBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9m IGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFj a25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2 ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVu U1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09G VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFO WQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJ TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBD T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB TCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D TFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU RSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElB QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICog QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g SUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKgor KyAqLworKworKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+CisrI2luY2x1ZGUgPG9w ZW5zc2wvY3J5cHRvLmg+CisrI2luY2x1ZGUgPHN0ZGFyZy5oPgorKworKyNpZm5kZWYgT1BFTlNT TF9GSVBTCisrIyBlcnJvciBGSVBTIGlzIGRpc2FibGVkLgorKyNlbmRpZgorKworKyNpZmRlZiBP UEVOU1NMX0ZJUFMKKysKKysjIGlmZGVmICBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIgeworKyMg ZW5kaWYKKysKKysgICAgc3RydWN0IGRzYV9zdDsKKysgICAgc3RydWN0IHJzYV9zdDsKKysgICAg c3RydWN0IGV2cF9wa2V5X3N0OworKyAgICBzdHJ1Y3QgZW52X21kX3N0OworKyAgICBzdHJ1Y3Qg ZW52X21kX2N0eF9zdDsKKysgICAgc3RydWN0IGV2cF9jaXBoZXJfc3Q7CisrICAgIHN0cnVjdCBl dnBfY2lwaGVyX2N0eF9zdDsKKysgICAgc3RydWN0IGRoX21ldGhvZDsKKysgICAgc3RydWN0IENN QUNfQ1RYX3N0OworKyAgICBzdHJ1Y3QgaG1hY19jdHhfc3Q7CisrCisrICAgIGludCBGSVBTX21v ZHVsZV9tb2RlX3NldChpbnQgb25vZmYsIGNvbnN0IGNoYXIgKmF1dGgpOworKyAgICBpbnQgRklQ U19tb2R1bGVfbW9kZSh2b2lkKTsKKysgICAgY29uc3Qgdm9pZCAqRklQU19yYW5kX2NoZWNrKHZv aWQpOworKyAgICBpbnQgRklQU19zZWxmdGVzdCh2b2lkKTsKKysgICAgaW50IEZJUFNfc2VsZnRl c3RfZmFpbGVkKHZvaWQpOworKyAgICB2b2lkIEZJUFNfY29ycnVwdF9zaGExKHZvaWQpOworKyAg ICBpbnQgRklQU19zZWxmdGVzdF9zaGExKHZvaWQpOworKyAgICBpbnQgRklQU19zZWxmdGVzdF9z aGEyKHZvaWQpOworKyAgICB2b2lkIEZJUFNfY29ycnVwdF9hZXModm9pZCk7CisrICAgIGludCBG SVBTX3NlbGZ0ZXN0X2Flc19jY20odm9pZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X2Flc19n Y20odm9pZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X2Flc194dHModm9pZCk7CisrICAgIGlu dCBGSVBTX3NlbGZ0ZXN0X2Flcyh2b2lkKTsKKysgICAgdm9pZCBGSVBTX2NvcnJ1cHRfZGVzKHZv aWQpOworKyAgICBpbnQgRklQU19zZWxmdGVzdF9kZXModm9pZCk7CisrICAgIHZvaWQgRklQU19j b3JydXB0X3JzYSh2b2lkKTsKKysgICAgdm9pZCBGSVBTX2NvcnJ1cHRfcnNhX2tleWdlbih2b2lk KTsKKysgICAgaW50IEZJUFNfc2VsZnRlc3RfcnNhKHZvaWQpOworKyAgICB2b2lkIEZJUFNfY29y cnVwdF9kc2Eodm9pZCk7CisrICAgIHZvaWQgRklQU19jb3JydXB0X2RzYV9rZXlnZW4odm9pZCk7 CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X2RzYSh2b2lkKTsKKysgICAgdm9pZCBGSVBTX2NvcnJ1 cHRfcm5nKHZvaWQpOworKyAgICB2b2lkIEZJUFNfcm5nX3N0aWNrKHZvaWQpOworKyAgICB2b2lk IEZJUFNfeDkzMV9zdGljayhpbnQgb25vZmYpOworKyAgICB2b2lkIEZJUFNfZHJiZ19zdGljayhp bnQgb25vZmYpOworKyAgICBpbnQgRklQU19zZWxmdGVzdF9ybmcodm9pZCk7CisrICAgIGludCBG SVBTX3NlbGZ0ZXN0X3g5MzEodm9pZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X2htYWModm9p ZCk7CisrICAgIGludCBGSVBTX3NlbGZ0ZXN0X2RyYmcodm9pZCk7CisrICAgIGludCBGSVBTX3Nl bGZ0ZXN0X2RyYmdfYWxsKHZvaWQpOworKyAgICBpbnQgRklQU19zZWxmdGVzdF9jbWFjKHZvaWQp OworKworKyAgICB2b2lkIEZJUFNfZ2V0X3RpbWV2ZWModW5zaWduZWQgY2hhciAqYnVmLCB1bnNp Z25lZCBsb25nICpwY3RyKTsKKysKKysjIGRlZmluZSBGSVBTX0VSUk9SX0lHTk9SRUQoYWxnKSBP cGVuU1NMRGllKF9fRklMRV9fLCBfX0xJTkVfXywgXAorKyAgICAgICAgICAgICAgICBhbGcgIiBw cmV2aW91cyBGSVBTIGZvcmJpZGRlbiBhbGdvcml0aG0gZXJyb3IgaWdub3JlZCIpOworKworKyAg ICBpbnQgZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHN0cnVjdCBldnBfcGtleV9zdCAqcGtleSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICp0 YnMsIGludCB0YnNsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqa2F0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBrYXRsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGVudl9tZF9zdCAqZGlnZXN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBtZF9mbGFncywgY29uc3QgY2hhciAqZmFpbF9zdHIpOworKwor KyAgICBpbnQgZmlwc19jaXBoZXJfdGVzdChzdHJ1Y3QgZXZwX2NpcGhlcl9jdHhfc3QgKmN0eCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGV2cF9jaXBoZXJfc3QgKmNp cGhlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppdiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcGxhaW50ZXh0LAor KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjaXBoZXJ0ZXh0 LCBpbnQgbGVuKTsKKysKKysgICAgdm9pZCBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKHZvaWQpOwor KworKyAgICBjb25zdCBzdHJ1Y3QgZW52X21kX3N0ICpGSVBTX2dldF9kaWdlc3RieW5pZChpbnQg bmlkKTsKKysKKysgICAgY29uc3Qgc3RydWN0IGV2cF9jaXBoZXJfc3QgKkZJUFNfZ2V0X2NpcGhl cmJ5bmlkKGludCBuaWQpOworKworKy8qIEJFR0lOIEVSUk9SIENPREVTICovCisrLyogVGhlIGZv bGxvd2luZyBsaW5lcyBhcmUgYXV0byBnZW5lcmF0ZWQgYnkgdGhlIHNjcmlwdCBta2Vyci5wbC4g QW55IGNoYW5nZXMKKysgKiBtYWRlIGFmdGVyIHRoaXMgcG9pbnQgbWF5IGJlIG92ZXJ3cml0dGVu IHdoZW4gdGhlIHNjcmlwdCBpcyBuZXh0IHJ1bi4KKysgKi8KKysgICAgdm9pZCBFUlJfbG9hZF9G SVBTX3N0cmluZ3Modm9pZCk7CisrCisrLyogRXJyb3IgY29kZXMgZm9yIHRoZSBGSVBTIGZ1bmN0 aW9ucy4gKi8KKysKKysvKiBGdW5jdGlvbiBjb2Rlcy4gKi8KKysjIGRlZmluZSBGSVBTX0ZfREhf QlVJTFRJTl9HRU5QQVJBTVMgICAgICAgICAgICAgICAgICAgICAgMTAwCisrIyBkZWZpbmUgRklQ U19GX0RIX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0OAorKyMgZGVm aW5lIEZJUFNfRl9EUkJHX1JFU0VFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjIK KysjIGRlZmluZSBGSVBTX0ZfRFNBX0JVSUxUSU5fUEFSQU1HRU4gICAgICAgICAgICAgICAgICAg ICAgMTAxCisrIyBkZWZpbmUgRklQU19GX0RTQV9CVUlMVElOX1BBUkFNR0VOMiAgICAgICAgICAg ICAgICAgICAgIDEwNworKyMgZGVmaW5lIEZJUFNfRl9EU0FfRE9fU0lHTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAxMDIKKysjIGRlZmluZSBGSVBTX0ZfRFNBX0RPX1ZFUklGWSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMTAzCisrIyBkZWZpbmUgRklQU19GX0VDREhfQ09NUFVU RV9LRVkgICAgICAgICAgICAgICAgICAgICAgICAgIDE2MworKyMgZGVmaW5lIEZJUFNfRl9FQ0RT QV9ET19TSUdOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjQKKysjIGRlZmluZSBGSVBT X0ZfRUNEU0FfRE9fVkVSSUZZICAgICAgICAgICAgICAgICAgICAgICAgICAgMTY1CisrIyBkZWZp bmUgRklQU19GX0VDX0tFWV9HRU5FUkFURV9LRVkgICAgICAgICAgICAgICAgICAgICAgIDE2Ngor KyMgZGVmaW5lIEZJUFNfRl9FVlBfQ0lQSEVSSU5JVF9FWCAgICAgICAgICAgICAgICAgICAgICAg ICAxMjQKKysjIGRlZmluZSBGSVBTX0ZfRVZQX0RJR0VTVElOSVRfRVggICAgICAgICAgICAgICAg ICAgICAgICAgMTI1CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfQ0hFQ0tfRFNBICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDEwNAorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0NIRUNLX0RTQV9QUk5H ICAgICAgICAgICAgICAgICAgICAgICAxNTEKKysjIGRlZmluZSBGSVBTX0ZfRklQU19DSEVDS19F QyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyCisrIyBkZWZpbmUgRklQU19GX0ZJUFNf Q0hFQ0tfRUNfUFJORyAgICAgICAgICAgICAgICAgICAgICAgIDE1MgorKyMgZGVmaW5lIEZJUFNf Rl9GSVBTX0NIRUNLX0lOQ09SRV9GSU5HRVJQUklOVCAgICAgICAgICAgICAxMDUKKysjIGRlZmlu ZSBGSVBTX0ZfRklQU19DSEVDS19SU0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA2Cisr IyBkZWZpbmUgRklQU19GX0ZJUFNfQ0hFQ0tfUlNBX1BSTkcgICAgICAgICAgICAgICAgICAgICAg IDE1MAorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0NJUEhFUiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxNjAKKysjIGRlZmluZSBGSVBTX0ZfRklQU19DSVBIRVJJTklUICAgICAgICAgICAg ICAgICAgICAgICAgICAgMTQzCisrIyBkZWZpbmUgRklQU19GX0ZJUFNfQ0lQSEVSX0NUWF9DVFJM ICAgICAgICAgICAgICAgICAgICAgIDE2MQorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RJR0VTVEZJ TkFMICAgICAgICAgICAgICAgICAgICAgICAgICAxNTgKKysjIGRlZmluZSBGSVBTX0ZfRklQU19E SUdFU1RJTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI4CisrIyBkZWZpbmUgRklQU19G X0ZJUFNfRElHRVNUVVBEQVRFICAgICAgICAgICAgICAgICAgICAgICAgIDE1OQorKyMgZGVmaW5l IEZJUFNfRl9GSVBTX0RSQkdfQllURVMgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzEKKysj IGRlZmluZSBGSVBTX0ZfRklQU19EUkJHX0NIRUNLICAgICAgICAgICAgICAgICAgICAgICAgICAg MTQ2CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19DUFJOR19URVNUICAgICAgICAgICAgICAg ICAgICAgIDEzMgorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdfRVJST1JfQ0hFQ0sgICAgICAg ICAgICAgICAgICAgICAxMzYKKysjIGRlZmluZSBGSVBTX0ZfRklQU19EUkJHX0dFTkVSQVRFICAg ICAgICAgICAgICAgICAgICAgICAgMTM0CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfRFJCR19JTklU ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNQorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RS QkdfSU5TVEFOVElBVEUgICAgICAgICAgICAgICAgICAgICAxMzgKKysjIGRlZmluZSBGSVBTX0Zf RklQU19EUkJHX05FVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM5CisrIyBkZWZpbmUg RklQU19GX0ZJUFNfRFJCR19SRVNFRUQgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MAorKyMg ZGVmaW5lIEZJUFNfRl9GSVBTX0RSQkdfU0lOR0xFX0tBVCAgICAgICAgICAgICAgICAgICAgICAx NDEKKysjIGRlZmluZSBGSVBTX0ZfRklQU19EU0FfQ0hFQ0sgICAgICAgICAgIC8qIHVudXNlZCAq LyAgICAgMTA3CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfRFNBX1NJR05fRElHRVNUICAgICAgICAg ICAgICAgICAgICAgIDE1NAorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX0RTQV9WRVJJRllfRElHRVNU ICAgICAgICAgICAgICAgICAgICAxNTUKKysjIGRlZmluZSBGSVBTX0ZfRklQU19HRVRfRU5UUk9Q WSAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ3CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfTU9E RV9TRVQgICAgICAgICAgICAvKiB1bnVzZWQgKi8gICAgIDEwOAorKyMgZGVmaW5lIEZJUFNfRl9G SVBTX01PRFVMRV9NT0RFX1NFVCAgICAgICAgICAgICAgICAgICAgICAxMDgKKysjIGRlZmluZSBG SVBTX0ZfRklQU19QS0VZX1NJR05BVFVSRV9URVNUICAgICAgICAgICAgICAgICAgMTA5CisrIyBk ZWZpbmUgRklQU19GX0ZJUFNfUkFORF9BREQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEz NworKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1JBTkRfQllURVMgICAgICAgICAgICAgICAgICAgICAg ICAgICAxMjIKKysjIGRlZmluZSBGSVBTX0ZfRklQU19SQU5EX1BTRVVET19CWVRFUyAgICAgICAg ICAgICAgICAgICAgMTY3CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfUkFORF9TRUVEICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDE2OAorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1JBTkRfU0VUX01F VEhPRCAgICAgICAgICAgICAgICAgICAgICAxMjYKKysjIGRlZmluZSBGSVBTX0ZfRklQU19SQU5E X1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgMTI3CisrIyBkZWZpbmUgRklQU19GX0ZJ UFNfUlNBX1NJR05fRElHRVNUICAgICAgICAgICAgICAgICAgICAgIDE1NgorKyMgZGVmaW5lIEZJ UFNfRl9GSVBTX1JTQV9WRVJJRllfRElHRVNUICAgICAgICAgICAgICAgICAgICAxNTcKKysjIGRl ZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9BRVMgICAgICAgICAgICAgICAgICAgICAgICAgMTEw CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfQUVTX0NDTSAgICAgICAgICAgICAgICAg ICAgIDE0NQorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0FFU19HQ00gICAgICAgICAg ICAgICAgICAgICAxMjkKKysjIGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9BRVNfWFRTICAg ICAgICAgICAgICAgICAgICAgMTQ0CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfQ01B QyAgICAgICAgICAgICAgICAgICAgICAgIDEzMAorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZU RVNUX0RFUyAgICAgICAgICAgICAgICAgICAgICAgICAxMTEKKysjIGRlZmluZSBGSVBTX0ZfRklQ U19TRUxGVEVTVF9EU0EgICAgICAgICAgICAgICAgICAgICAgICAgMTEyCisrIyBkZWZpbmUgRklQ U19GX0ZJUFNfU0VMRlRFU1RfRUNEU0EgICAgICAgICAgICAgICAgICAgICAgIDEzMworKyMgZGVm aW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX0hNQUMgICAgICAgICAgICAgICAgICAgICAgICAxMTMK KysjIGRlZmluZSBGSVBTX0ZfRklQU19TRUxGVEVTVF9STkcgICAgICAgIC8qIHVudXNlZCAqLyAg ICAgMTE0CisrIyBkZWZpbmUgRklQU19GX0ZJUFNfU0VMRlRFU1RfU0hBMSAgICAgICAgICAgICAg ICAgICAgICAgIDExNQorKyMgZGVmaW5lIEZJUFNfRl9GSVBTX1NFTEZURVNUX1g5MzEgICAgICAg ICAgICAgICAgICAgICAgICAxMTQKKysjIGRlZmluZSBGSVBTX0ZfRklQU19TRVRfUFJOR19LRVkg ICAgICAgICAgICAgICAgICAgICAgICAgMTUzCisrIyBkZWZpbmUgRklQU19GX0hBU0hfRklOQUwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMworKyMgZGVmaW5lIEZJUFNfRl9SU0Ff QlVJTFRJTl9LRVlHRU4gICAgICAgICAgICAgICAgICAgICAgICAxMTYKKysjIGRlZmluZSBGSVBT X0ZfUlNBX0VBWV9JTklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ5CisrIyBkZWZp bmUgRklQU19GX1JTQV9FQVlfUFJJVkFURV9ERUNSWVBUICAgICAgICAgICAgICAgICAgIDExNwor KyMgZGVmaW5lIEZJUFNfRl9SU0FfRUFZX1BSSVZBVEVfRU5DUllQVCAgICAgICAgICAgICAgICAg ICAxMTgKKysjIGRlZmluZSBGSVBTX0ZfUlNBX0VBWV9QVUJMSUNfREVDUllQVCAgICAgICAgICAg ICAgICAgICAgMTE5CisrIyBkZWZpbmUgRklQU19GX1JTQV9FQVlfUFVCTElDX0VOQ1JZUFQgICAg ICAgICAgICAgICAgICAgIDEyMAorKyMgZGVmaW5lIEZJUFNfRl9SU0FfWDkzMV9HRU5FUkFURV9L RVlfRVggICAgICAgICAgICAgICAgICAxMjEKKysjIGRlZmluZSBGSVBTX0ZfU1NMRUFZX1JBTkRf QllURVMgICAgICAgIC8qIHVudXNlZCAqLyAgICAgMTIyCisrCisrLyogUmVhc29uIGNvZGVzLiAq LworKyMgZGVmaW5lIEZJUFNfUl9BRERJVElPTkFMX0lOUFVUX0VSUk9SX1VOREVURUNURUQgICAg ICAgICAxNTAKKysjIGRlZmluZSBGSVBTX1JfQURESVRJT05BTF9JTlBVVF9UT09fTE9ORyAgICAg ICAgICAgICAgICAgMTI1CisrIyBkZWZpbmUgRklQU19SX0FMUkVBRFlfSU5TVEFOVElBVEVEICAg ICAgICAgICAgICAgICAgICAgIDEzNAorKyMgZGVmaW5lIEZJUFNfUl9BVVRIRU5USUNBVElPTl9G QUlMVVJFICAgICAgICAgICAgICAgICAgICAxNTEKKysjIGRlZmluZSBGSVBTX1JfQ0FOTk9UX1JF QURfRVhFICAgICAgICAgIC8qIHVudXNlZCAqLyAgICAgMTAzCisrIyBkZWZpbmUgRklQU19SX0NB Tk5PVF9SRUFEX0VYRV9ESUdFU1QgICAvKiB1bnVzZWQgKi8gICAgIDEwNAorKyMgZGVmaW5lIEZJ UFNfUl9DT05UUkFESUNUSU5HX0VWSURFTkNFICAgICAgICAgICAgICAgICAgICAxMTQKKysjIGRl ZmluZSBGSVBTX1JfRFJCR19OT1RfSU5JVElBTElTRUQgICAgICAgICAgICAgICAgICAgICAgMTUy CisrIyBkZWZpbmUgRklQU19SX0RSQkdfU1RVQ0sgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDEwMworKyMgZGVmaW5lIEZJUFNfUl9FTlRST1BZX0VSUk9SX1VOREVURUNURUQgICAgICAg ICAgICAgICAgICAxMDQKKysjIGRlZmluZSBGSVBTX1JfRU5UUk9QWV9OT1RfUkVRVUVTVEVEX0ZP Ul9SRVNFRUQgICAgICAgICAgMTA1CisrIyBkZWZpbmUgRklQU19SX0VOVFJPUFlfU09VUkNFX1NU VUNLICAgICAgICAgICAgICAgICAgICAgIDE0MgorKyMgZGVmaW5lIEZJUFNfUl9FUlJPUl9JTklU SUFMSVNJTkdfRFJCRyAgICAgICAgICAgICAgICAgICAxMTUKKysjIGRlZmluZSBGSVBTX1JfRVJS T1JfSU5TVEFOVElBVElOR19EUkJHICAgICAgICAgICAgICAgICAgMTI3CisrIyBkZWZpbmUgRklQ U19SX0VSUk9SX1JFVFJJRVZJTkdfQURESVRJT05BTF9JTlBVVCAgICAgICAgIDEyNAorKyMgZGVm aW5lIEZJUFNfUl9FUlJPUl9SRVRSSUVWSU5HX0VOVFJPUFkgICAgICAgICAgICAgICAgICAxMjIK KysjIGRlZmluZSBGSVBTX1JfRVJST1JfUkVUUklFVklOR19OT05DRSAgICAgICAgICAgICAgICAg ICAgMTQwCisrIyBkZWZpbmUgRklQU19SX0VYRV9ESUdFU1RfRE9FU19OT1RfTUFUQ0ggICAvKiB1 bnVzZWQgKi8gIDEwNQorKyMgZGVmaW5lIEZJUFNfUl9GSU5HRVJQUklOVF9ET0VTX05PVF9NQVRD SCAgICAgICAgICAgICAgICAxMTAKKysjIGRlZmluZSBGSVBTX1JfRklOR0VSUFJJTlRfRE9FU19O T1RfTUFUQ0hfTk9OUElDX1JFTE9DQVRFRCAxMTEKKysjIGRlZmluZSBGSVBTX1JfRklOR0VSUFJJ TlRfRE9FU19OT1RfTUFUQ0hfU0VHTUVOVF9BTElBU0lORyAxMTIKKysjIGRlZmluZSBGSVBTX1Jf RklQU19NT0RFX0FMUkVBRFlfU0VUICAgICAgICAgICAgICAgICAgICAgMTAyCisrIyBkZWZpbmUg RklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEICAgICAgICAgICAgICAgICAgICAgIDEwNgorKyMg ZGVmaW5lIEZJUFNfUl9GVU5DVElPTl9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAx MTYKKysjIGRlZmluZSBGSVBTX1JfR0VORVJBVEVfRVJST1IgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMTM3CisrIyBkZWZpbmUgRklQU19SX0dFTkVSQVRFX0VSUk9SX1VOREVURUNURUQgICAg ICAgICAgICAgICAgIDExOAorKyMgZGVmaW5lIEZJUFNfUl9JTlNUQU5USUFURV9FUlJPUiAgICAg ICAgICAgICAgICAgICAgICAgICAxMTkKKysjIGRlZmluZSBGSVBTX1JfSU5TVUZGSUNJRU5UX1NF Q1VSSVRZX1NUUkVOR1RIICAgICAgICAgICAgMTIwCisrIyBkZWZpbmUgRklQU19SX0lOVEVSTkFM X0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMQorKyMgZGVmaW5lIEZJUFNfUl9J TlZBTElEX0tFWV9MRU5HVEggICAgICAgICAgICAgICAgICAgICAgICAxMDkKKysjIGRlZmluZSBG SVBTX1JfSU5WQUxJRF9QQVJBTUVURVJTICAgICAgICAgICAgICAgICAgICAgICAgMTQ0CisrIyBk ZWZpbmUgRklQU19SX0lOX0VSUk9SX1NUQVRFICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEy MworKyMgZGVmaW5lIEZJUFNfUl9LRVlfVE9PX1NIT1JUICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxMDgKKysjIGRlZmluZSBGSVBTX1JfTk9OQ0VfRVJST1JfVU5ERVRFQ1RFRCAgICAgICAg ICAgICAgICAgICAgMTQ5CisrIyBkZWZpbmUgRklQU19SX05PTl9GSVBTX01FVEhPRCAgICAgICAg ICAgICAgICAgICAgICAgICAgIDEwMAorKyMgZGVmaW5lIEZJUFNfUl9OT1BSX1RFU1QxX0ZBSUxV UkUgICAgICAgICAgICAgICAgICAgICAgICAxNDUKKysjIGRlZmluZSBGSVBTX1JfTk9QUl9URVNU Ml9GQUlMVVJFICAgICAgICAgICAgICAgICAgICAgICAgMTQ2CisrIyBkZWZpbmUgRklQU19SX05P VF9JTlNUQU5USUFURUQgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNgorKyMgZGVmaW5lIEZJ UFNfUl9QQUlSV0lTRV9URVNUX0ZBSUxFRCAgICAgICAgICAgICAgICAgICAgICAxMDcKKysjIGRl ZmluZSBGSVBTX1JfUEVSU09OQUxJU0FUSU9OX0VSUk9SX1VOREVURUNURUQgICAgICAgICAgMTI4 CisrIyBkZWZpbmUgRklQU19SX1BFUlNPTkFMSVNBVElPTl9TVFJJTkdfVE9PX0xPTkcgICAgICAg ICAgIDEyOQorKyMgZGVmaW5lIEZJUFNfUl9QUk5HX1NUUkVOR1RIX1RPT19MT1cgICAgICAgICAg ICAgICAgICAgICAxNDMKKysjIGRlZmluZSBGSVBTX1JfUFJfVEVTVDFfRkFJTFVSRSAgICAgICAg ICAgICAgICAgICAgICAgICAgMTQ3CisrIyBkZWZpbmUgRklQU19SX1BSX1RFU1QyX0ZBSUxVUkUg ICAgICAgICAgICAgICAgICAgICAgICAgIDE0OAorKyMgZGVmaW5lIEZJUFNfUl9SRVFVRVNUX0xF TkdUSF9FUlJPUl9VTkRFVEVDVEVEICAgICAgICAgICAxMzAKKysjIGRlZmluZSBGSVBTX1JfUkVR VUVTVF9UT09fTEFSR0VfRk9SX0RSQkcgICAgICAgICAgICAgICAgMTMxCisrIyBkZWZpbmUgRklQ U19SX1JFU0VFRF9DT1VOVEVSX0VSUk9SICAgICAgICAgICAgICAgICAgICAgIDEzMgorKyMgZGVm aW5lIEZJUFNfUl9SRVNFRURfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzMK KysjIGRlZmluZSBGSVBTX1JfUlNBX0RFQ1JZUFRfRVJST1IgICAgICAgIC8qIHVudXNlZCAqLyAg ICAgMTE1CisrIyBkZWZpbmUgRklQU19SX1JTQV9FTkNSWVBUX0VSUk9SICAgICAgICAvKiB1bnVz ZWQgKi8gICAgIDExNgorKyMgZGVmaW5lIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQgICAgICAgICAg ICAgICAgICAgICAgICAgICAxMDEKKysjIGRlZmluZSBGSVBTX1JfU0VMRlRFU1RfRkFJTFVSRSAg ICAgICAgICAgICAgICAgICAgICAgICAgMTM1CisrIyBkZWZpbmUgRklQU19SX1NUUkVOR1RIX0VS Uk9SX1VOREVURUNURUQgICAgICAgICAgICAgICAgIDEzNgorKyMgZGVmaW5lIEZJUFNfUl9URVNU X0ZBSUxVUkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTcKKysjIGRlZmluZSBGSVBT X1JfVU5JTlNUQU5USUFURV9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgMTQxCisrIyBkZWZp bmUgRklQU19SX1VOSU5TVEFOVElBVEVfWkVST0lTRV9FUlJPUiAgICAgICAgICAgICAgIDEzOAor KyMgZGVmaW5lIEZJUFNfUl9VTlNVUFBPUlRFRF9EUkJHX1RZUEUgICAgICAgICAgICAgICAgICAg ICAxMzkKKysjIGRlZmluZSBGSVBTX1JfVU5TVVBQT1JURURfUExBVEZPUk0gICAgICAgICAgICAg ICAgICAgICAgMTEzCisrCisrIyBpZmRlZiAgX19jcGx1c3BsdXMKKyt9CisrIyBlbmRpZgorKyNl bmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19obWFjX3NlbGZ0 ZXN0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX2htYWNfc2VsZnRlc3Qu YworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfaG1hY19zZWxmdGVzdC5jLmZp cHMJMjAxNS0wNi0xNSAxNzozMDowMC4wMDkyODQwMDUgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4y Yy9jcnlwdG8vZmlwcy9maXBzX2htYWNfc2VsZnRlc3QuYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAw OTI4NDAwNSArMDIwMAorQEAgLTAsMCArMSwxMzQgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENv cHlyaWdodCAoYykgMjAwNSBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZl ZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoK KysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi b3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg cHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwg YWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMK KysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVu dDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0 aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0 LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVu U1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisr ICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3 YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVu IHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wu b3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5 IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFy IGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24g b2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBh bnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tu b3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkK KysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09O VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws CisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFS SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysg Ki8KKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Cisr I2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlm CisrI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKyt0 eXBlZGVmIHN0cnVjdCB7CisrICAgIGNvbnN0IEVWUF9NRCAqKCphbGcpICh2b2lkKTsKKysgICAg Y29uc3QgY2hhciAqa2V5LCAqaXY7CisrICAgIHVuc2lnbmVkIGNoYXIga2F2YWxbRVZQX01BWF9N RF9TSVpFXTsKKyt9IEhNQUNfS0FUOworKworK3N0YXRpYyBjb25zdCBITUFDX0tBVCB2ZWN0b3Jb XSA9IHsKKysgICAge0VWUF9zaGExLAorKyAgICAgLyogZnJvbSBodHRwOi8vY3NyYy5uaXN0Lmdv di9wdWJsaWNhdGlvbnMvZmlwcy9maXBzMTk4L2ZpcHMtMTk4YS5wZGYgKi8KKysgICAgICIwMTIz NDU2Nzg5Ojs8PT4/QEFCQyIsCisrICAgICAiU2FtcGxlICMyIiwKKysgICAgIHsweDA5LCAweDIy LCAweGQzLCAweDQwLCAweDVmLCAweGFhLCAweDNkLCAweDE5LAorKyAgICAgIDB4NGYsIDB4ODIs IDB4YTQsIDB4NTgsIDB4MzAsIDB4NzMsIDB4N2QsIDB4NWMsCisrICAgICAgMHhjNiwgMHhjNywg MHg1ZCwgMHgyNH0KKysgICAgIH0sCisrICAgIHtFVlBfc2hhMjI0LAorKyAgICAgLyoganVzdCBr ZWVwIGV4dGVuZGluZyB0aGUgYWJvdmUuLi4gKi8KKysgICAgICIwMTIzNDU2Nzg5Ojs8PT4/QEFC QyIsCisrICAgICAiU2FtcGxlICMyIiwKKysgICAgIHsweGRkLCAweGVmLCAweDBhLCAweDQwLCAw eGNiLCAweDdkLCAweDUwLCAweGZiLAorKyAgICAgIDB4NmUsIDB4ZTYsIDB4Y2UsIDB4YTEsIDB4 MjAsIDB4YmEsIDB4MjYsIDB4YWEsCisrICAgICAgMHgwOCwgMHhmMywgMHgwNywgMHg3NSwgMHg4 NywgMHhiOCwgMHhhZCwgMHgxYiwKKysgICAgICAweDhjLCAweDhkLCAweDEyLCAweGM3fQorKyAg ICAgfSwKKysgICAge0VWUF9zaGEyNTYsCisrICAgICAiMDEyMzQ1Njc4OTo7PD0+P0BBQkMiLAor KyAgICAgIlNhbXBsZSAjMiIsCisrICAgICB7MHhiOCwgMHhmMiwgMHgwZCwgMHhiNSwgMHg0MSwg MHhlYSwgMHg0MywgMHgwOSwKKysgICAgICAweGNhLCAweDRlLCAweGE5LCAweDM4LCAweDBjLCAw eGQwLCAweGU4LCAweDM0LAorKyAgICAgIDB4ZjcsIDB4MWYsIDB4YmUsIDB4OTEsIDB4NzQsIDB4 YTIsIDB4NjEsIDB4MzgsCisrICAgICAgMHgwZCwgMHhjMSwgMHg3ZSwgMHhhZSwgMHg2YSwgMHgz NCwgMHg1MSwgMHhkOX0KKysgICAgIH0sCisrICAgIHtFVlBfc2hhMzg0LAorKyAgICAgIjAxMjM0 NTY3ODk6Ozw9Pj9AQUJDIiwKKysgICAgICJTYW1wbGUgIzIiLAorKyAgICAgezB4MDgsIDB4YmMs IDB4YjAsIDB4ZGEsIDB4NDksIDB4MWUsIDB4ODcsIDB4YWQsCisrICAgICAgMHg5YSwgMHgxZCwg MHg2YSwgMHhjZSwgMHgyMywgMHhjNSwgMHgwYiwgMHhmNiwKKysgICAgICAweGI3LCAweDE4LCAw eDA2LCAweGE1LCAweDc3LCAweGNkLCAweDQ5LCAweDA0LAorKyAgICAgIDB4ODksIDB4ZjEsIDB4 ZTYsIDB4MjMsIDB4NDQsIDB4NTEsIDB4NTEsIDB4OWYsCisrICAgICAgMHg4NSwgMHg1NiwgMHg4 MCwgMHg3OSwgMHgwYywgMHhiZCwgMHg0ZCwgMHg1MCwKKysgICAgICAweGE0LCAweDVmLCAweDI5 LCAweGUzLCAweDkzLCAweGYwLCAweGU4LCAweDdmfQorKyAgICAgfSwKKysgICAge0VWUF9zaGE1 MTIsCisrICAgICAiMDEyMzQ1Njc4OTo7PD0+P0BBQkMiLAorKyAgICAgIlNhbXBsZSAjMiIsCisr ICAgICB7MHg4MCwgMHg5ZCwgMHg0NCwgMHgwNSwgMHg3YywgMHg1YiwgMHg5NSwgMHg0MSwKKysg ICAgICAweDA1LCAweGJkLCAweDA0LCAweDEzLCAweDE2LCAweGRiLCAweDBmLCAweGFjLAorKyAg ICAgIDB4NDQsIDB4ZDUsIDB4YTQsIDB4ZDUsIDB4ZDAsIDB4ODksIDB4MmIsIDB4ZDAsCisrICAg ICAgMHg0ZSwgMHg4NiwgMHg2NCwgMHgxMiwgMHhjMCwgMHg5MCwgMHg3NywgMHg2OCwKKysgICAg ICAweGYxLCAweDg3LCAweGI3LCAweDdjLCAweDRmLCAweGFlLCAweDJjLCAweDJmLAorKyAgICAg IDB4MjEsIDB4YTUsIDB4YjUsIDB4NjUsIDB4OWEsIDB4NGYsIDB4NGIsIDB4YTcsCisrICAgICAg MHg0NywgMHgwMiwgMHhhMywgMHhkZSwgMHg5YiwgMHg1MSwgMHhmMSwgMHg0NSwKKysgICAgICAw eGJkLCAweDRmLCAweDI1LCAweDI3LCAweDQyLCAweDk4LCAweDk5LCAweDA1fQorKyAgICAgfSwK Kyt9OworKworK2ludCBGSVBTX3NlbGZ0ZXN0X2htYWMoKQorK3sKKysgICAgaW50IG47CisrICAg IHVuc2lnbmVkIGludCBvdXRsZW47CisrICAgIHVuc2lnbmVkIGNoYXIgb3V0W0VWUF9NQVhfTURf U0laRV07CisrICAgIGNvbnN0IEVWUF9NRCAqbWQ7CisrICAgIGNvbnN0IEhNQUNfS0FUICp0Owor KworKyAgICBmb3IgKG4gPSAwLCB0ID0gdmVjdG9yOyBuIDwgc2l6ZW9mKHZlY3RvcikgLyBzaXpl b2YodmVjdG9yWzBdKTsgbisrLCB0KyspIHsKKysgICAgICAgIG1kID0gKCp0LT5hbGcpICgpOwor KyAgICAgICAgSE1BQyhtZCwgdC0+a2V5LCBzdHJsZW4odC0+a2V5KSwKKysgICAgICAgICAgICAg KGNvbnN0IHVuc2lnbmVkIGNoYXIgKil0LT5pdiwgc3RybGVuKHQtPml2KSwgb3V0LCAmb3V0bGVu KTsKKysKKysgICAgICAgIGlmIChtZW1jbXAob3V0LCB0LT5rYXZhbCwgb3V0bGVuKSkgeworKyAg ICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfSE1BQywgRklQU19SX1NFTEZU RVNUX0ZBSUxFRCk7CisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICB9CisrICAgIH0K KysgICAgcmV0dXJuIDE7CisrfQorKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5 cHRvL2ZpcHMvZmlwc19sb2NsLmguZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBz X2xvY2wuaAorLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfbG9jbC5oLmZpcHMJ MjAxNS0wNi0xNSAxNzozMDowMC4wMDkyODQwMDUgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9j cnlwdG8vZmlwcy9maXBzX2xvY2wuaAkyMDE1LTA2LTE1IDE3OjMwOjAwLjAwOTI4NDAwNSArMDIw MAorQEAgLTAsMCArMSw3MSBAQAorKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0IChjKSAy MDExIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICog UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv ciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0 CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrICog ICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo IHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBt YXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3 YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAgICJU aGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFBy b2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3 Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIg YW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRvcnNl IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAor KyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwg cGxlYXNlIGNvbnRhY3QKKysgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisrICoKKysg KiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxl ZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFt ZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNT TCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRz b2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50Ogor KyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBP cGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0 dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE RUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJFU1NF RCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU SEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF TlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMgQkUg TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVDSUFM LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKysg KiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW SUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U RVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkg V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorKyAq IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKgorKyAqLworKworKyNpZmRl ZiBPUEVOU1NMX0ZJUFMKKysKKysjIGlmZGVmICBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIgewor KyMgZW5kaWYKKysKKysjIGRlZmluZSBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFICAgICAgIDMy CisrIyBkZWZpbmUgZmlwc19sb2FkX2tleV9jb21wb25lbnQoa2V5LCBjb21wLCBwcmUpIFwKKysg ICAgICAgIGtleS0+Y29tcCA9IEJOX2JpbjJibihwcmUjI18jI2NvbXAsIHNpemVvZihwcmUjI18j I2NvbXApLCBrZXktPmNvbXApOyBcCisrICAgICAgICBpZiAoIWtleS0+Y29tcCkgXAorKyAgICAg ICAgICAgICAgICBnb3RvIGVycgorKworKyMgZGVmaW5lIGZpcHNfcG9zdF9zdGFydGVkKGlkLCBz dWJpZCwgZXgpIDEKKysjIGRlZmluZSBmaXBzX3Bvc3Rfc3VjY2VzcyhpZCwgc3ViaWQsIGV4KSAx CisrIyBkZWZpbmUgZmlwc19wb3N0X2ZhaWxlZChpZCwgc3ViaWQsIGV4KSAxCisrIyBkZWZpbmUg Zmlwc19wb3N0X2NvcnJ1cHQoaWQsIHN1YmlkLCBleCkgMQorKyMgZGVmaW5lIGZpcHNfcG9zdF9z dGF0dXMoKSAxCisrCisrIyBpZmRlZiAgX19jcGx1c3BsdXMKKyt9CisrIyBlbmRpZgorKyNlbmRp ZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19tZC5jLmZpcHMgb3Bl bnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19tZC5jCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5 cHRvL2ZpcHMvZmlwc19tZC5jLmZpcHMJMjAxNS0wNi0xNSAxNzozMDowMC4wMDkyODQwMDUgKzAy MDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX21kLmMJMjAxNS0wNi0xNSAx NzozMDowMC4wMDkyODQwMDUgKzAyMDAKK0BAIC0wLDAgKzEsMTQ0IEBACisrLyogZmlwcy9ldnAv Zmlwc19tZC5jICovCisrLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5 QGNyeXB0c29mdC5jb20pCisrICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFRoaXMg cGFja2FnZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3JpdHRlbgorKyAqIGJ5IEVyaWMgWW91 bmcgKGVheUBjcnlwdHNvZnQuY29tKS4KKysgKiBUaGUgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0 ZW4gc28gYXMgdG8gY29uZm9ybSB3aXRoIE5ldHNjYXBlcyBTU0wuCisrICogCisrICogVGhpcyBs aWJyYXJ5IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHVzZSBhcyBs b25nIGFzCisrICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBhaGVhcmVkIHRvLiAgVGhl IGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXBwbHkgdG8gYWxsIGNvZGUgZm91bmQgaW4gdGhp cyBkaXN0cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwKKysgKiBsaGFzaCwgREVTLCBldGMu LCBjb2RlOyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUgU1NMIGRvY3VtZW50YXRpb24KKysg KiBpbmNsdWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uIGlzIGNvdmVyZWQgYnkgdGhlIHNhbWUg Y29weXJpZ2h0IHRlcm1zCisrICogZXhjZXB0IHRoYXQgdGhlIGhvbGRlciBpcyBUaW0gSHVkc29u ICh0amhAY3J5cHRzb2Z0LmNvbSkuCisrICogCisrICogQ29weXJpZ2h0IHJlbWFpbnMgRXJpYyBZ b3VuZydzLCBhbmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0IG5vdGljZXMgaW4KKysgKiB0aGUgY29k ZSBhcmUgbm90IHRvIGJlIHJlbW92ZWQuCisrICogSWYgdGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4g YSBwcm9kdWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZlbiBhdHRyaWJ1dGlvbgorKyAqIGFz IHRoZSBhdXRob3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5IHVzZWQuCisrICogVGhpcyBj YW4gYmUgaW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVw IG9yCisrICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9yIHRleHR1YWwpIHByb3ZpZGVkIHdp dGggdGhlIHBhY2thZ2UuCisrICogCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBh cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICog YXJlIG1ldDoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh aW4gdGhlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ciBpbiB0aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRl cmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQorKyAqICAg IG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKKysgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieQorKyAq ICAgICBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkiCisrICogICAgVGhlIHdvcmQgJ2Ny eXB0b2dyYXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJy YXJ5CisrICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0b2dyYXBoaWMgcmVsYXRlZCA6LSku CisrICogNC4gSWYgeW91IGluY2x1ZGUgYW55IFdpbmRvd3Mgc3BlY2lmaWMgY29kZSAob3IgYSBk ZXJpdmF0aXZlIHRoZXJlb2YpIGZyb20gCisrICogICAgdGhlIGFwcHMgZGlyZWN0b3J5IChhcHBs aWNhdGlvbiBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFja25vd2xlZGdlbWVudDoKKysgKiAg ICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAo dGpoQGNyeXB0c29mdC5jb20pIgorKyAqIAorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg QlkgRVJJQyBZT1VORyBgYEFTIElTJycgQU5ECisrICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElF RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UKKysgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB VVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisr ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMKKysgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD VAorKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKysgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisrICogU1VDSCBEQU1B R0UuCisrICogCisrICogVGhlIGxpY2VuY2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55 IHB1YmxpY2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKKysgKiBkZXJpdmF0aXZlIG9mIHRoaXMg Y29kZSBjYW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUK KysgKiBjb3BpZWQgYW5kIHB1dCB1bmRlciBhbm90aGVyIGRpc3RyaWJ1dGlvbiBsaWNlbmNlCisr ICogW2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KKysgKi8KKysvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIFRoZSBPcGVuU1NMIFByb2plY3QuICBB bGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9u LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisr ICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKysgKgorKyAqIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg Y29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29y IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyAqICAgIGRpc3RyaWJ1dGlvbi4K KysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJl cyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJlIG11c3QgZGlzcGxheSB0aGUgZm9sbG93 aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdh cmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRo ZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiA0 LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJPcGVuU1NMIFByb2plY3QiIG11c3Qg bm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl ZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlz c2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QKKysgKiAgICBvcGVu c3NsLWNvcmVAb3BlbnNzbC5vcmcuCisrICoKKysgKiA1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20g dGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3BlblNTTCIKKysgKiAgICBub3IgbWF5 ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisr ICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9qZWN0LgorKyAqCisrICogNi4gUmVk aXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIgbXVzdCByZXRhaW4gdGhlIGZvbGxv d2luZworKyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVk ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QKKysgKiAgICBmb3Ig dXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysg KgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBg YEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJTVBMSUVEIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKysgKiBQVVJQ T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIE9wZW5TU0wgUFJPSkVD VCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKysgKiBMT1NTIE9GIFVTRSwgREFU QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FV U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwK KysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI IERBTUFHRS4KKysgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqCisrICogVGhpcyBwcm9kdWN0IGluY2x1ZGVz IGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieSBFcmljIFlvdW5nCisrICogKGVheUBj cnlwdHNvZnQuY29tKS4gIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5 IFRpbQorKyAqIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgorKyAqCisrICovCisrCisrLyog TWluaW1hbCBzdGFuZGFsb25lIEZJUFMgdmVyc2lvbnMgb2YgRGlnZXN0IG9wZXJhdGlvbnMgKi8K KysKKysjZGVmaW5lIE9QRU5TU0xfRklQU0FQSQorKworKyNpbmNsdWRlIDxzdGRpby5oPgorKyNp bmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+CisrI2luY2x1 ZGUgPG9wZW5zc2wvZXZwLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2luY2x1ZGUg PG9wZW5zc2wvZmlwcy5oPgorKworK2NvbnN0IEVWUF9NRCAqRklQU19nZXRfZGlnZXN0YnluaWQo aW50IG5pZCkKKyt7CisrICAgIHN3aXRjaCAobmlkKSB7CisrICAgIGNhc2UgTklEX3NoYTE6Cisr ICAgICAgICByZXR1cm4gRVZQX3NoYTEoKTsKKysKKysgICAgY2FzZSBOSURfc2hhMjI0OgorKyAg ICAgICAgcmV0dXJuIEVWUF9zaGEyMjQoKTsKKysKKysgICAgY2FzZSBOSURfc2hhMjU2OgorKyAg ICAgICAgcmV0dXJuIEVWUF9zaGEyNTYoKTsKKysKKysgICAgY2FzZSBOSURfc2hhMzg0OgorKyAg ICAgICAgcmV0dXJuIEVWUF9zaGEzODQoKTsKKysKKysgICAgY2FzZSBOSURfc2hhNTEyOgorKyAg ICAgICAgcmV0dXJuIEVWUF9zaGE1MTIoKTsKKysKKysgICAgZGVmYXVsdDoKKysgICAgICAgIHJl dHVybiBOVUxMOworKyAgICB9CisrfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2Zp cHMvZmlwc19wb3N0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX3Bvc3Qu YworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfcG9zdC5jLmZpcHMJMjAxNS0w Ni0xNSAxNzozMDowMC4wMDkyODQwMDUgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8v Zmlwcy9maXBzX3Bvc3QuYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAwOTI4NDAwNSArMDIwMAorQEAg LTAsMCArMSwyMDEgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBU aGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlz dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1 dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRo ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK KysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJp YWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBt dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBw cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0 CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVu c3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAi T3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBw cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAg ICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFz ZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4g UHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9w ZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdp dGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJv amVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVy IG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAg ICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNT TCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8v d3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1Ig SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisr ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI QUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhF TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9U IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7 CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBU SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjZGVmaW5lIE9Q RU5TU0xfRklQU0FQSQorKworKyNpbmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRl IDxvcGVuc3NsL3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KKysjaW5j bHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9iaW8uaD4KKysjaW5jbHVk ZSA8b3BlbnNzbC9obWFjLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+CisrI2luY2x1ZGUg PG9wZW5zc2wvZHNhLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxsaW1pdHMu aD4KKysKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrCisrLyogUG93ZXIgb24gc2VsZiB0ZXN0IChQ T1NUKSBzdXBwb3J0IGZ1bmN0aW9ucyAqLworKworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+ CisrIyBpbmNsdWRlICJmaXBzX2xvY2wuaCIKKysKKysvKiBSdW4gYWxsIHNlbGZ0ZXN0cyAqLwor K2ludCBGSVBTX3NlbGZ0ZXN0KHZvaWQpCisreworKyAgICBpbnQgcnYgPSAxOworKyAgICBpZiAo IUZJUFNfc2VsZnRlc3RfZHJiZygpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBpZiAoIUZJUFNf c2VsZnRlc3RfeDkzMSgpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBpZiAoIUZJUFNfc2VsZnRl c3Rfc2hhMSgpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBpZiAoIUZJUFNfc2VsZnRlc3Rfc2hh MigpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBpZiAoIUZJUFNfc2VsZnRlc3RfaG1hYygpKQor KyAgICAgICAgcnYgPSAwOworKyAgICBpZiAoIUZJUFNfc2VsZnRlc3RfY21hYygpKQorKyAgICAg ICAgcnYgPSAwOworKyAgICBpZiAoIUZJUFNfc2VsZnRlc3RfYWVzKCkpCisrICAgICAgICBydiA9 IDA7CisrICAgIGlmICghRklQU19zZWxmdGVzdF9hZXNfY2NtKCkpCisrICAgICAgICBydiA9IDA7 CisrICAgIGlmICghRklQU19zZWxmdGVzdF9hZXNfZ2NtKCkpCisrICAgICAgICBydiA9IDA7Cisr ICAgIGlmICghRklQU19zZWxmdGVzdF9hZXNfeHRzKCkpCisrICAgICAgICBydiA9IDA7CisrICAg IGlmICghRklQU19zZWxmdGVzdF9kZXMoKSkKKysgICAgICAgIHJ2ID0gMDsKKysgICAgaWYgKCFG SVBTX3NlbGZ0ZXN0X3JzYSgpKQorKyAgICAgICAgcnYgPSAwOworKyAgICBpZiAoIUZJUFNfc2Vs ZnRlc3RfZHNhKCkpCisrICAgICAgICBydiA9IDA7CisrICAgIHJldHVybiBydjsKKyt9CisrCisr LyogR2VuZXJhbGl6ZWQgcHVibGljIGtleSB0ZXN0IHJvdXRpbmUuIFNpZ25zIGFuZCB2ZXJpZmll cyB0aGUgZGF0YQorKyAqIHN1cHBsaWVkIGluIHRicyB1c2luZyBtZXNhZ2UgZGlnZXN0IG1kIGFu ZCBzZXR0aW5nIG9wdGlvbiBkaWdlc3QKKysgKiBmbGFncyBtZF9mbGFncy4gSWYgdGhlICdrYXQn IHBhcmFtZXRlciBpcyBub3QgTlVMTCBpdCB3aWxsCisrICogYWRkaXRpb25hbGx5IGNoZWNrIHRo ZSBzaWduYXR1cmUgbWF0Y2hlcyBpdDogYSBrbm93biBhbnN3ZXIgdGVzdAorKyAqIFRoZSBzdHJp bmcgImZhaWxfc3RyIiBpcyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcyBpbiBjYXNl CisrICogb2YgZmFpbHVyZS4gSWYgInBrZXkiIGlzIE5VTEwganVzdCBwZXJmb3JtIGEgbWVzc2Fn ZSBkaWdlc3QgY2hlY2suCisrICovCisrCisraW50IGZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChF VlBfUEtFWSAqcGtleSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln bmVkIGNoYXIgKnRicywgaW50IHRic2xlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmthdCwgdW5zaWduZWQgaW50IGthdGxlbiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVWUF9NRCAqZGlnZXN0LCB1bnNpZ25lZCBpbnQg bWRfZmxhZ3MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmYWls X3N0cikKKyt7CisrICAgIGludCByZXQgPSAwOworKyAgICB1bnNpZ25lZCBjaGFyIHNpZ3RtcFsy NTZdLCAqc2lnID0gc2lndG1wOworKyAgICB1bnNpZ25lZCBpbnQgc2lnbGVuOworKyAgICBFVlBf TURfQ1RYIG1jdHg7CisrICAgIEVWUF9NRF9DVFhfaW5pdCgmbWN0eCk7CisrCisrICAgIGlmIChk aWdlc3QgPT0gTlVMTCkKKysgICAgICAgIGRpZ2VzdCA9IEVWUF9zaGEyNTYoKTsKKysKKysgICAg aWYgKChwa2V5LT50eXBlID09IEVWUF9QS0VZX1JTQSkKKysgICAgICAgICYmIChSU0Ffc2l6ZShw a2V5LT5wa2V5LnJzYSkgPiBzaXplb2Yoc2lndG1wKSkpIHsKKysgICAgICAgIHNpZyA9IE9QRU5T U0xfbWFsbG9jKFJTQV9zaXplKHBrZXktPnBrZXkucnNhKSk7CisrICAgICAgICBpZiAoIXNpZykg eworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUEtFWV9TSUdOQVRVUkVfVEVTVCwg RVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworKyAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAg fQorKyAgICB9CisrCisrICAgIGlmICh0YnNsZW4gPT0gLTEpCisrICAgICAgICB0YnNsZW4gPSBz dHJsZW4oKGNoYXIgKil0YnMpOworKworKyAgICBpZiAobWRfZmxhZ3MpCisrICAgICAgICBFVlBf TURfQ1RYX3NldF9mbGFncygmbWN0eCwgbWRfZmxhZ3MpOworKworKyAgICBpZiAoIUVWUF9TaWdu SW5pdF9leCgmbWN0eCwgZGlnZXN0LCBOVUxMKSkKKysgICAgICAgIGdvdG8gZXJyb3I7CisrICAg IGlmICghRVZQX1NpZ25VcGRhdGUoJm1jdHgsIHRicywgdGJzbGVuKSkKKysgICAgICAgIGdvdG8g ZXJyb3I7CisrICAgIGlmICghRVZQX1NpZ25GaW5hbCgmbWN0eCwgc2lnLCAmc2lnbGVuLCBwa2V5 KSkKKysgICAgICAgIGdvdG8gZXJyb3I7CisrCisrICAgIGlmIChrYXQgJiYgKChzaWdsZW4gIT0g a2F0bGVuKSB8fCBtZW1jbXAoa2F0LCBzaWcsIGthdGxlbikpKQorKyAgICAgICAgZ290byBlcnJv cjsKKysKKysgICAgaWYgKCFFVlBfVmVyaWZ5SW5pdF9leCgmbWN0eCwgZGlnZXN0LCBOVUxMKSkK KysgICAgICAgIGdvdG8gZXJyb3I7CisrICAgIGlmICghRVZQX1ZlcmlmeVVwZGF0ZSgmbWN0eCwg dGJzLCB0YnNsZW4pKQorKyAgICAgICAgZ290byBlcnJvcjsKKysgICAgcmV0ID0gRVZQX1Zlcmlm eUZpbmFsKCZtY3R4LCBzaWcsIHNpZ2xlbiwgcGtleSk7CisrCisrIGVycm9yOgorKyAgICBpZiAo c2lnICE9IHNpZ3RtcCkKKysgICAgICAgIE9QRU5TU0xfZnJlZShzaWcpOworKyAgICBFVlBfTURf Q1RYX2NsZWFudXAoJm1jdHgpOworKyAgICBpZiAocmV0ICE9IDEpIHsKKysgICAgICAgIEZJUFNl cnIoRklQU19GX0ZJUFNfUEtFWV9TSUdOQVRVUkVfVEVTVCwgRklQU19SX1RFU1RfRkFJTFVSRSk7 CisrICAgICAgICBpZiAoZmFpbF9zdHIpCisrICAgICAgICAgICAgRVJSX2FkZF9lcnJvcl9kYXRh KDIsICJUeXBlPSIsIGZhaWxfc3RyKTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAg IHJldHVybiAxOworK30KKysKKysvKiBHZW5lcmFsaXplZCBzeW1tZXRyaWMgY2lwaGVyIHRlc3Qg cm91dGluZS4gRW5jcnlwdCBkYXRhLCB2ZXJpZnkgcmVzdWx0CisrICogYWdhaW5zdCBrbm93biBh bnN3ZXIsIGRlY3J5cHQgYW5kIGNvbXBhcmUgd2l0aCBvcmlnaW5hbCBwbGFpbnRleHQuCisrICov CisrCisraW50IGZpcHNfY2lwaGVyX3Rlc3QoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgRVZQ X0NJUEhFUiAqY2lwaGVyLAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKmtleSwKKysgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppdiwK KysgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwbGFpbnRleHQsCisr ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY2lwaGVydGV4dCwgaW50 IGxlbikKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIgcGx0bXBbRklQU19NQVhfQ0lQSEVSX1RFU1Rf U0laRV07CisrICAgIHVuc2lnbmVkIGNoYXIgY2l0bXBbRklQU19NQVhfQ0lQSEVSX1RFU1RfU0la RV07CisrCisrICAgIE9QRU5TU0xfYXNzZXJ0KGxlbiA8PSBGSVBTX01BWF9DSVBIRVJfVEVTVF9T SVpFKTsKKysgICAgbWVtc2V0KHBsdG1wLCAwLCBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFKTsK KysgICAgbWVtc2V0KGNpdG1wLCAwLCBGSVBTX01BWF9DSVBIRVJfVEVTVF9TSVpFKTsKKysKKysg ICAgaWYgKEVWUF9DaXBoZXJJbml0X2V4KGN0eCwgY2lwaGVyLCBOVUxMLCBrZXksIGl2LCAxKSA8 PSAwKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmIChFVlBfQ2lwaGVyKGN0eCwgY2l0bXAs IHBsYWludGV4dCwgbGVuKSA8PSAwKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmIChtZW1j bXAoY2l0bXAsIGNpcGhlcnRleHQsIGxlbikpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYg KEVWUF9DaXBoZXJJbml0X2V4KGN0eCwgY2lwaGVyLCBOVUxMLCBrZXksIGl2LCAwKSA8PSAwKQor KyAgICAgICAgcmV0dXJuIDA7CisrICAgIGlmIChFVlBfQ2lwaGVyKGN0eCwgcGx0bXAsIGNpdG1w LCBsZW4pIDw9IDApCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKG1lbWNtcChwbHRtcCwg cGxhaW50ZXh0LCBsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIHJldHVybiAxOworK30K KysjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfcmFuZC5j LmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19yYW5kLmMKKy0tLSBvcGVuc3Ns LTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX3JhbmQuYy5maXBzCTIwMTUtMDYtMTUgMTc6MzA6MDAu MDEwMjg0MDI4ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19yYW5k LmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMTAyODQwMjggKzAyMDAKK0BAIC0wLDAgKzEsNDI4IEBA CisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMDcgVGhlIE9wZW5TU0wgUHJv amVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2Rp ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAq CisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJp YnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5n IGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRo ZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRl cyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1 c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysg KgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVj dCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRl biBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAq ICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2 ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAg IG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdy aXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysg KiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0 aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVj dCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAq ICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9y Zy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQ Uk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFO VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNT TCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQ Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0Yg VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9X RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP TlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF TkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZ IE9GIFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisrLyoKKysgKiBUaGlzIGlzIGEgRklQUyBh cHByb3ZlZCBBRVMgUFJORyBiYXNlZCBvbiBBTlNJIFg5LjMxIEEuMi40LgorKyAqLworKyNpbmNs dWRlIDxvcGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRlICJlX29zLmgiCisrCisrLyogSWYgd2Ug ZG9uJ3QgZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQsIHN0cnVjdCB0aW1ldmFsIHdvbid0 CisrICAgYmUgZGVmaW5lZCBhbmQgZ2V0dGltZW9mZGF5KCkgd29uJ3QgYmUgZGVjbGFyZWQgd2l0 aCBzdHJpY3QgY29tcGlsZXJzCisrICAgbGlrZSBERUMgQyBpbiBBTlNJIEMgbW9kZS4gICovCisr I2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisrIyBkZWZpbmUgX1hPUEVOX1NPVVJDRV9F WFRFTkRFRCAxCisrI2VuZGlmCisrCisrI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgorKyNpbmNs dWRlIDxvcGVuc3NsL2Flcy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpbmNsdWRl IDxvcGVuc3NsL2ZpcHNfcmFuZC5oPgorKyNpZiAhKGRlZmluZWQoT1BFTlNTTF9TWVNfV0lOMzIp IHx8IGRlZmluZWQoT1BFTlNTTF9TWVNfVlhXT1JLUykpCisrIyBpbmNsdWRlIDxzeXMvdGltZS5o PgorKyNlbmRpZgorKyNpZiBkZWZpbmVkKE9QRU5TU0xfU1lTX1ZYV09SS1MpCisrIyBpbmNsdWRl IDx0aW1lLmg+CisrI2VuZGlmCisrI2luY2x1ZGUgPGFzc2VydC5oPgorKyNpZm5kZWYgT1BFTlNT TF9TWVNfV0lOMzIKKysjIGlmZGVmIE9QRU5TU0xfVU5JU1RECisrIyAgaW5jbHVkZSBPUEVOU1NM X1VOSVNURAorKyMgZWxzZQorKyMgIGluY2x1ZGUgPHVuaXN0ZC5oPgorKyMgZW5kaWYKKysjZW5k aWYKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZmlwcy5oPgorKyNp bmNsdWRlICJmaXBzX2xvY2wuaCIKKysKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisrCisrdm9pZCAq T1BFTlNTTF9zdGRlcnIodm9pZCk7CisrCisrIyBkZWZpbmUgQUVTX0JMT0NLX0xFTkdUSCAgICAg ICAgMTYKKysKKysvKiBBRVMgRklQUyBQUk5HIGltcGxlbWVudGF0aW9uICovCisrCisrdHlwZWRl ZiBzdHJ1Y3QgeworKyAgICBpbnQgc2VlZGVkOworKyAgICBpbnQga2V5ZWQ7CisrICAgIGludCB0 ZXN0X21vZGU7CisrICAgIGludCBzZWNvbmQ7CisrICAgIGludCBlcnJvcjsKKysgICAgdW5zaWdu ZWQgbG9uZyBjb3VudGVyOworKyAgICBBRVNfS0VZIGtzOworKyAgICBpbnQgdnBvczsKKysgICAg LyogVGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIGtleSBpZiBpdCBlcXVhbHMgc2VlZCBsZW5ndGggKi8K KysgICAgdW5zaWduZWQgY2hhciB0bXBfa2V5W0FFU19CTE9DS19MRU5HVEhdOworKyAgICB1bnNp Z25lZCBjaGFyIFZbQUVTX0JMT0NLX0xFTkdUSF07CisrICAgIHVuc2lnbmVkIGNoYXIgRFRbQUVT X0JMT0NLX0xFTkdUSF07CisrICAgIHVuc2lnbmVkIGNoYXIgbGFzdFtBRVNfQkxPQ0tfTEVOR1RI XTsKKyt9IEZJUFNfUFJOR19DVFg7CisrCisrc3RhdGljIEZJUFNfUFJOR19DVFggc2N0eDsKKysK KytzdGF0aWMgaW50IGZpcHNfcHJuZ19mYWlsID0gMDsKKysKKyt2b2lkIEZJUFNfeDkzMV9zdGlj ayhpbnQgb25vZmYpCisreworKyAgICBmaXBzX3BybmdfZmFpbCA9IG9ub2ZmOworK30KKysKKyt2 b2lkIEZJUFNfcm5nX3N0aWNrKHZvaWQpCisreworKyAgICBGSVBTX3g5MzFfc3RpY2soMSk7Cisr fQorKworK3N0YXRpYyB2b2lkIGZpcHNfcmFuZF9wcm5nX3Jlc2V0KEZJUFNfUFJOR19DVFggKiBj dHgpCisreworKyAgICBjdHgtPnNlZWRlZCA9IDA7CisrICAgIGN0eC0+a2V5ZWQgPSAwOworKyAg ICBjdHgtPnRlc3RfbW9kZSA9IDA7CisrICAgIGN0eC0+Y291bnRlciA9IDA7CisrICAgIGN0eC0+ c2Vjb25kID0gMDsKKysgICAgY3R4LT5lcnJvciA9IDA7CisrICAgIGN0eC0+dnBvcyA9IDA7Cisr ICAgIE9QRU5TU0xfY2xlYW5zZShjdHgtPlYsIEFFU19CTE9DS19MRU5HVEgpOworKyAgICBPUEVO U1NMX2NsZWFuc2UoJmN0eC0+a3MsIHNpemVvZihBRVNfS0VZKSk7CisrfQorKworK3N0YXRpYyBp bnQgZmlwc19zZXRfcHJuZ19rZXkoRklQU19QUk5HX0NUWCAqIGN0eCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwgdW5zaWduZWQgaW50IGtl eWxlbikKKyt7CisrICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7CisrICAgICAgICBG SVBTZXJyKEZJUFNfRl9GSVBTX1NFVF9QUk5HX0tFWSwgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7 CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBpZiAoa2V5bGVuICE9IDE2ICYmIGtl eWxlbiAhPSAyNCAmJiBrZXlsZW4gIT0gMzIpIHsKKysgICAgICAgIC8qIGVycm9yOiBpbnZhbGlk IGtleSBzaXplICovCisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBBRVNfc2V0X2Vu Y3J5cHRfa2V5KGtleSwga2V5bGVuIDw8IDMsICZjdHgtPmtzKTsKKysgICAgaWYgKGtleWxlbiA9 PSAxNikgeworKyAgICAgICAgbWVtY3B5KGN0eC0+dG1wX2tleSwga2V5LCAxNik7CisrICAgICAg ICBjdHgtPmtleWVkID0gMjsKKysgICAgfSBlbHNlCisrICAgICAgICBjdHgtPmtleWVkID0gMTsK KysgICAgY3R4LT5zZWVkZWQgPSAwOworKyAgICBjdHgtPnNlY29uZCA9IDA7CisrICAgIHJldHVy biAxOworK30KKysKKytzdGF0aWMgaW50IGZpcHNfc2V0X3Bybmdfc2VlZChGSVBTX1BSTkdfQ1RY ICogY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKnNlZWQsIHVuc2lnbmVkIGludCBzZWVkbGVuKQorK3sKKysgICAgdW5zaWduZWQgaW50IGk7 CisrICAgIGlmICghY3R4LT5rZXllZCkKKysgICAgICAgIHJldHVybiAwOworKyAgICAvKiBJbiB0 ZXN0IG1vZGUgc2VlZCBpcyBqdXN0IHN1cHBsaWVkIGRhdGEgKi8KKysgICAgaWYgKGN0eC0+dGVz dF9tb2RlKSB7CisrICAgICAgICBpZiAoc2VlZGxlbiAhPSBBRVNfQkxPQ0tfTEVOR1RIKQorKyAg ICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgbWVtY3B5KGN0eC0+Viwgc2VlZCwgQUVTX0JM T0NLX0xFTkdUSCk7CisrICAgICAgICBjdHgtPnNlZWRlZCA9IDE7CisrICAgICAgICByZXR1cm4g MTsKKysgICAgfQorKyAgICAvKiBPdXRzaWRlIHRlc3QgbW9kZSBYT1Igc3VwcGxpZWQgZGF0YSB3 aXRoIGV4aXN0aW5nIHNlZWQgKi8KKysgICAgZm9yIChpID0gMDsgaSA8IHNlZWRsZW47IGkrKykg eworKyAgICAgICAgY3R4LT5WW2N0eC0+dnBvcysrXSBePSBzZWVkW2ldOworKyAgICAgICAgaWYg KGN0eC0+dnBvcyA9PSBBRVNfQkxPQ0tfTEVOR1RIKSB7CisrICAgICAgICAgICAgY3R4LT52cG9z ID0gMDsKKysgICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2UgaWYgZmlyc3Qgc2VlZCBhbmQga2V5 IGxlbmd0aCBlcXVhbHMKKysgICAgICAgICAgICAgKiBibG9jayBzaXplIGNoZWNrIGtleSBhbmQg c2VlZCBkbyBub3QgbWF0Y2guCisrICAgICAgICAgICAgICovCisrICAgICAgICAgICAgaWYgKGN0 eC0+a2V5ZWQgPT0gMikgeworKyAgICAgICAgICAgICAgICBpZiAoIW1lbWNtcChjdHgtPnRtcF9r ZXksIGN0eC0+ViwgMTYpKSB7CisrICAgICAgICAgICAgICAgICAgICBSQU5EZXJyKFJBTkRfRl9G SVBTX1NFVF9QUk5HX1NFRUQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJBTkRfUl9Q Uk5HX1NFRURfTVVTVF9OT1RfTUFUQ0hfS0VZKTsKKysgICAgICAgICAgICAgICAgICAgIHJldHVy biAwOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIE9QRU5TU0xfY2xlYW5z ZShjdHgtPnRtcF9rZXksIDE2KTsKKysgICAgICAgICAgICAgICAgY3R4LT5rZXllZCA9IDE7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGN0eC0+c2VlZGVkID0gMTsKKysgICAgICAgIH0K KysgICAgfQorKyAgICByZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGludCBmaXBzX3NldF90ZXN0 X21vZGUoRklQU19QUk5HX0NUWCAqIGN0eCkKKyt7CisrICAgIGlmIChjdHgtPmtleWVkKSB7Cisr ICAgICAgICBSQU5EZXJyKFJBTkRfRl9GSVBTX1NFVF9URVNUX01PREUsIFJBTkRfUl9QUk5HX0tF WUVEKTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAgIGN0eC0+dGVzdF9tb2RlID0g MTsKKysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCBGSVBTX3g5MzFfdGVzdF9tb2RlKHZvaWQp CisreworKyAgICByZXR1cm4gZmlwc19zZXRfdGVzdF9tb2RlKCZzY3R4KTsKKyt9CisrCisraW50 IEZJUFNfcmFuZF90ZXN0X21vZGUodm9pZCkKKyt7CisrICAgIHJldHVybiBmaXBzX3NldF90ZXN0 X21vZGUoJnNjdHgpOworK30KKysKKytpbnQgRklQU194OTMxX3NldF9kdCh1bnNpZ25lZCBjaGFy ICpkdCkKKyt7CisrICAgIGlmICghc2N0eC50ZXN0X21vZGUpIHsKKysgICAgICAgIFJBTkRlcnIo UkFORF9GX0ZJUFNfWDkzMV9TRVRfRFQsIFJBTkRfUl9OT1RfSU5fVEVTVF9NT0RFKTsKKysgICAg ICAgIHJldHVybiAwOworKyAgICB9CisrICAgIG1lbWNweShzY3R4LkRULCBkdCwgQUVTX0JMT0NL X0xFTkdUSCk7CisrICAgIHJldHVybiAxOworK30KKysKKytpbnQgRklQU19yYW5kX3NldF9kdCh1 bnNpZ25lZCBjaGFyICpkdCkKKyt7CisrICAgIGlmICghc2N0eC50ZXN0X21vZGUpIHsKKysgICAg ICAgIFJBTkRlcnIoUkFORF9GX0ZJUFNfUkFORF9TRVRfRFQsIFJBTkRfUl9OT1RfSU5fVEVTVF9N T0RFKTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAgIG1lbWNweShzY3R4LkRULCBk dCwgQUVTX0JMT0NLX0xFTkdUSCk7CisrICAgIHJldHVybiAxOworK30KKysKKyt2b2lkIEZJUFNf Z2V0X3RpbWV2ZWModW5zaWduZWQgY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nICpwY3RyKQorK3sK KysjIGlmZGVmIE9QRU5TU0xfU1lTX1dJTjMyCisrICAgIEZJTEVUSU1FIGZ0OworKyMgZWxpZiBk ZWZpbmVkKE9QRU5TU0xfU1lTX1ZYV09SS1MpCisrICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKKysj IGVsc2UKKysgICAgc3RydWN0IHRpbWV2YWwgdHY7CisrIyBlbmRpZgorKworKyMgaWZuZGVmIEdF VFBJRF9JU19NRUFOSU5HTEVTUworKyAgICB1bnNpZ25lZCBsb25nIHBpZDsKKysjIGVuZGlmCisr CisrIyBpZmRlZiBPUEVOU1NMX1NZU19XSU4zMgorKyAgICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGlt ZSgmZnQpOworKyAgICBidWZbMF0gPSAodW5zaWduZWQgY2hhcikoZnQuZHdIaWdoRGF0ZVRpbWUg JiAweGZmKTsKKysgICAgYnVmWzFdID0gKHVuc2lnbmVkIGNoYXIpKChmdC5kd0hpZ2hEYXRlVGlt ZSA+PiA4KSAmIDB4ZmYpOworKyAgICBidWZbMl0gPSAodW5zaWduZWQgY2hhcikoKGZ0LmR3SGln aERhdGVUaW1lID4+IDE2KSAmIDB4ZmYpOworKyAgICBidWZbM10gPSAodW5zaWduZWQgY2hhciko KGZ0LmR3SGlnaERhdGVUaW1lID4+IDI0KSAmIDB4ZmYpOworKyAgICBidWZbNF0gPSAodW5zaWdu ZWQgY2hhcikoZnQuZHdMb3dEYXRlVGltZSAmIDB4ZmYpOworKyAgICBidWZbNV0gPSAodW5zaWdu ZWQgY2hhcikoKGZ0LmR3TG93RGF0ZVRpbWUgPj4gOCkgJiAweGZmKTsKKysgICAgYnVmWzZdID0g KHVuc2lnbmVkIGNoYXIpKChmdC5kd0xvd0RhdGVUaW1lID4+IDE2KSAmIDB4ZmYpOworKyAgICBi dWZbN10gPSAodW5zaWduZWQgY2hhcikoKGZ0LmR3TG93RGF0ZVRpbWUgPj4gMjQpICYgMHhmZik7 CisrIyBlbGlmIGRlZmluZWQoT1BFTlNTTF9TWVNfVlhXT1JLUykKKysgICAgY2xvY2tfZ2V0dGlt ZShDTE9DS19SRUFMVElNRSwgJnRzKTsKKysgICAgYnVmWzBdID0gKHVuc2lnbmVkIGNoYXIpKHRz LnR2X3NlYyAmIDB4ZmYpOworKyAgICBidWZbMV0gPSAodW5zaWduZWQgY2hhcikoKHRzLnR2X3Nl YyA+PiA4KSAmIDB4ZmYpOworKyAgICBidWZbMl0gPSAodW5zaWduZWQgY2hhcikoKHRzLnR2X3Nl YyA+PiAxNikgJiAweGZmKTsKKysgICAgYnVmWzNdID0gKHVuc2lnbmVkIGNoYXIpKCh0cy50dl9z ZWMgPj4gMjQpICYgMHhmZik7CisrICAgIGJ1Zls0XSA9ICh1bnNpZ25lZCBjaGFyKSh0cy50dl9u c2VjICYgMHhmZik7CisrICAgIGJ1Zls1XSA9ICh1bnNpZ25lZCBjaGFyKSgodHMudHZfbnNlYyA+ PiA4KSAmIDB4ZmYpOworKyAgICBidWZbNl0gPSAodW5zaWduZWQgY2hhcikoKHRzLnR2X25zZWMg Pj4gMTYpICYgMHhmZik7CisrICAgIGJ1Zls3XSA9ICh1bnNpZ25lZCBjaGFyKSgodHMudHZfbnNl YyA+PiAyNCkgJiAweGZmKTsKKysjIGVsc2UKKysgICAgZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7 CisrICAgIGJ1ZlswXSA9ICh1bnNpZ25lZCBjaGFyKSh0di50dl9zZWMgJiAweGZmKTsKKysgICAg YnVmWzFdID0gKHVuc2lnbmVkIGNoYXIpKCh0di50dl9zZWMgPj4gOCkgJiAweGZmKTsKKysgICAg YnVmWzJdID0gKHVuc2lnbmVkIGNoYXIpKCh0di50dl9zZWMgPj4gMTYpICYgMHhmZik7CisrICAg IGJ1ZlszXSA9ICh1bnNpZ25lZCBjaGFyKSgodHYudHZfc2VjID4+IDI0KSAmIDB4ZmYpOworKyAg ICBidWZbNF0gPSAodW5zaWduZWQgY2hhcikodHYudHZfdXNlYyAmIDB4ZmYpOworKyAgICBidWZb NV0gPSAodW5zaWduZWQgY2hhcikoKHR2LnR2X3VzZWMgPj4gOCkgJiAweGZmKTsKKysgICAgYnVm WzZdID0gKHVuc2lnbmVkIGNoYXIpKCh0di50dl91c2VjID4+IDE2KSAmIDB4ZmYpOworKyAgICBi dWZbN10gPSAodW5zaWduZWQgY2hhcikoKHR2LnR2X3VzZWMgPj4gMjQpICYgMHhmZik7CisrIyBl bmRpZgorKyAgICBidWZbOF0gPSAodW5zaWduZWQgY2hhcikoKnBjdHIgJiAweGZmKTsKKysgICAg YnVmWzldID0gKHVuc2lnbmVkIGNoYXIpKCgqcGN0ciA+PiA4KSAmIDB4ZmYpOworKyAgICBidWZb MTBdID0gKHVuc2lnbmVkIGNoYXIpKCgqcGN0ciA+PiAxNikgJiAweGZmKTsKKysgICAgYnVmWzEx XSA9ICh1bnNpZ25lZCBjaGFyKSgoKnBjdHIgPj4gMjQpICYgMHhmZik7CisrCisrICAgICgqcGN0 cikrKzsKKysKKysjIGlmbmRlZiBHRVRQSURfSVNfTUVBTklOR0xFU1MKKysgICAgcGlkID0gKHVu c2lnbmVkIGxvbmcpZ2V0cGlkKCk7CisrICAgIGJ1ZlsxMl0gPSAodW5zaWduZWQgY2hhcikocGlk ICYgMHhmZik7CisrICAgIGJ1ZlsxM10gPSAodW5zaWduZWQgY2hhcikoKHBpZCA+PiA4KSAmIDB4 ZmYpOworKyAgICBidWZbMTRdID0gKHVuc2lnbmVkIGNoYXIpKChwaWQgPj4gMTYpICYgMHhmZik7 CisrICAgIGJ1ZlsxNV0gPSAodW5zaWduZWQgY2hhcikoKHBpZCA+PiAyNCkgJiAweGZmKTsKKysj IGVuZGlmCisrfQorKworK3N0YXRpYyBpbnQgZmlwc19yYW5kKEZJUFNfUFJOR19DVFggKiBjdHgs CisrICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBpbnQg b3V0bGVuKQorK3sKKysgICAgdW5zaWduZWQgY2hhciBSW0FFU19CTE9DS19MRU5HVEhdLCBJW0FF U19CTE9DS19MRU5HVEhdOworKyAgICB1bnNpZ25lZCBjaGFyIHRtcFtBRVNfQkxPQ0tfTEVOR1RI XTsKKysgICAgaW50IGk7CisrICAgIGlmIChjdHgtPmVycm9yKSB7CisrICAgICAgICBSQU5EZXJy KFJBTkRfRl9GSVBTX1JBTkQsIFJBTkRfUl9QUk5HX0VSUk9SKTsKKysgICAgICAgIHJldHVybiAw OworKyAgICB9CisrICAgIGlmICghY3R4LT5rZXllZCkgeworKyAgICAgICAgUkFORGVycihSQU5E X0ZfRklQU19SQU5ELCBSQU5EX1JfTk9fS0VZX1NFVCk7CisrICAgICAgICByZXR1cm4gMDsKKysg ICAgfQorKyAgICBpZiAoIWN0eC0+c2VlZGVkKSB7CisrICAgICAgICBSQU5EZXJyKFJBTkRfRl9G SVBTX1JBTkQsIFJBTkRfUl9QUk5HX05PVF9TRUVERUQpOworKyAgICAgICAgcmV0dXJuIDA7Cisr ICAgIH0KKysgICAgZm9yICg7OykgeworKyAgICAgICAgaWYgKCFjdHgtPnRlc3RfbW9kZSkKKysg ICAgICAgICAgICBGSVBTX2dldF90aW1ldmVjKGN0eC0+RFQsICZjdHgtPmNvdW50ZXIpOworKyAg ICAgICAgQUVTX2VuY3J5cHQoY3R4LT5EVCwgSSwgJmN0eC0+a3MpOworKyAgICAgICAgZm9yIChp ID0gMDsgaSA8IEFFU19CTE9DS19MRU5HVEg7IGkrKykKKysgICAgICAgICAgICB0bXBbaV0gPSBJ W2ldIF4gY3R4LT5WW2ldOworKyAgICAgICAgQUVTX2VuY3J5cHQodG1wLCBSLCAmY3R4LT5rcyk7 CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQUVTX0JMT0NLX0xFTkdUSDsgaSsrKQorKyAgICAg ICAgICAgIHRtcFtpXSA9IFJbaV0gXiBJW2ldOworKyAgICAgICAgQUVTX2VuY3J5cHQodG1wLCBj dHgtPlYsICZjdHgtPmtzKTsKKysgICAgICAgIC8qIENvbnRpbnVvdXMgUFJORyB0ZXN0ICovCisr ICAgICAgICBpZiAoY3R4LT5zZWNvbmQpIHsKKysgICAgICAgICAgICBpZiAoZmlwc19wcm5nX2Zh aWwpCisrICAgICAgICAgICAgICAgIG1lbWNweShjdHgtPmxhc3QsIFIsIEFFU19CTE9DS19MRU5H VEgpOworKyAgICAgICAgICAgIGlmICghbWVtY21wKFIsIGN0eC0+bGFzdCwgQUVTX0JMT0NLX0xF TkdUSCkpIHsKKysgICAgICAgICAgICAgICAgUkFORGVycihSQU5EX0ZfRklQU19SQU5ELCBSQU5E X1JfUFJOR19TVFVDSyk7CisrICAgICAgICAgICAgICAgIGN0eC0+ZXJyb3IgPSAxOworKyAgICAg ICAgICAgICAgICBmaXBzX3NldF9zZWxmdGVzdF9mYWlsKCk7CisrICAgICAgICAgICAgICAgIHJl dHVybiAwOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIG1lbWNweShjdHgt Pmxhc3QsIFIsIEFFU19CTE9DS19MRU5HVEgpOworKyAgICAgICAgaWYgKCFjdHgtPnNlY29uZCkg eworKyAgICAgICAgICAgIGN0eC0+c2Vjb25kID0gMTsKKysgICAgICAgICAgICBpZiAoIWN0eC0+ dGVzdF9tb2RlKQorKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysKKysg ICAgICAgIGlmIChvdXRsZW4gPD0gQUVTX0JMT0NLX0xFTkdUSCkgeworKyAgICAgICAgICAgIG1l bWNweShvdXQsIFIsIG91dGxlbik7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9Cisr CisrICAgICAgICBtZW1jcHkob3V0LCBSLCBBRVNfQkxPQ0tfTEVOR1RIKTsKKysgICAgICAgIG91 dCArPSBBRVNfQkxPQ0tfTEVOR1RIOworKyAgICAgICAgb3V0bGVuIC09IEFFU19CTE9DS19MRU5H VEg7CisrICAgIH0KKysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCBGSVBTX3g5MzFfc2V0X2tl eShjb25zdCB1bnNpZ25lZCBjaGFyICprZXksIGludCBrZXlsZW4pCisreworKyAgICBpbnQgcmV0 OworKyAgICBDUllQVE9fd19sb2NrKENSWVBUT19MT0NLX1JBTkQpOworKyAgICByZXQgPSBmaXBz X3NldF9wcm5nX2tleSgmc2N0eCwga2V5LCBrZXlsZW4pOworKyAgICBDUllQVE9fd191bmxvY2so Q1JZUFRPX0xPQ0tfUkFORCk7CisrICAgIHJldHVybiByZXQ7CisrfQorKworK2ludCBGSVBTX3Jh bmRfc2V0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICprZXksIEZJUFNfUkFORF9TSVpFX1Qga2V5 bGVuKQorK3sKKysgICAgcmV0dXJuIEZJUFNfeDkzMV9zZXRfa2V5KGtleSwga2V5bGVuKTsKKyt9 CisrCisraW50IEZJUFNfeDkzMV9zZWVkKGNvbnN0IHZvaWQgKnNlZWQsIGludCBzZWVkbGVuKQor K3sKKysgICAgaW50IHJldDsKKysgICAgQ1JZUFRPX3dfbG9jayhDUllQVE9fTE9DS19SQU5EKTsK KysgICAgcmV0ID0gZmlwc19zZXRfcHJuZ19zZWVkKCZzY3R4LCBzZWVkLCBzZWVkbGVuKTsKKysg ICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQpOworKyAgICByZXR1cm4gcmV0Owor K30KKysKKytpbnQgRklQU194OTMxX2J5dGVzKHVuc2lnbmVkIGNoYXIgKm91dCwgaW50IGNvdW50 KQorK3sKKysgICAgaW50IHJldDsKKysgICAgQ1JZUFRPX3dfbG9jayhDUllQVE9fTE9DS19SQU5E KTsKKysgICAgcmV0ID0gZmlwc19yYW5kKCZzY3R4LCBvdXQsIGNvdW50KTsKKysgICAgQ1JZUFRP X3dfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQpOworKyAgICByZXR1cm4gcmV0OworK30KKysKKytp bnQgRklQU194OTMxX3N0YXR1cyh2b2lkKQorK3sKKysgICAgaW50IHJldDsKKysgICAgQ1JZUFRP X3JfbG9jayhDUllQVE9fTE9DS19SQU5EKTsKKysgICAgcmV0ID0gc2N0eC5zZWVkZWQ7CisrICAg IENSWVBUT19yX3VubG9jayhDUllQVE9fTE9DS19SQU5EKTsKKysgICAgcmV0dXJuIHJldDsKKyt9 CisrCisrdm9pZCBGSVBTX3g5MzFfcmVzZXQodm9pZCkKKyt7CisrICAgIENSWVBUT193X2xvY2so Q1JZUFRPX0xPQ0tfUkFORCk7CisrICAgIGZpcHNfcmFuZF9wcm5nX3Jlc2V0KCZzY3R4KTsKKysg ICAgQ1JZUFRPX3dfdW5sb2NrKENSWVBUT19MT0NLX1JBTkQpOworK30KKysKKytzdGF0aWMgaW50 IGZpcHNfZG9fcmFuZF9zZWVkKGNvbnN0IHZvaWQgKnNlZWQsIGludCBzZWVkbGVuKQorK3sKKysg ICAgRklQU194OTMxX3NlZWQoc2VlZCwgc2VlZGxlbik7CisrICAgIHJldHVybiAxOworK30KKysK KytzdGF0aWMgaW50IGZpcHNfZG9fcmFuZF9hZGQoY29uc3Qgdm9pZCAqc2VlZCwgaW50IHNlZWRs ZW4sIGRvdWJsZSBhZGRfZW50cm9weSkKKyt7CisrICAgIEZJUFNfeDkzMV9zZWVkKHNlZWQsIHNl ZWRsZW4pOworKyAgICByZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGNvbnN0IFJBTkRfTUVUSE9E IHJhbmRfeDkzMV9tZXRoID0geworKyAgICBmaXBzX2RvX3JhbmRfc2VlZCwKKysgICAgRklQU194 OTMxX2J5dGVzLAorKyAgICBGSVBTX3g5MzFfcmVzZXQsCisrICAgIGZpcHNfZG9fcmFuZF9hZGQs CisrICAgIEZJUFNfeDkzMV9ieXRlcywKKysgICAgRklQU194OTMxX3N0YXR1cworK307CisrCisr Y29uc3QgUkFORF9NRVRIT0QgKkZJUFNfeDkzMV9tZXRob2Qodm9pZCkKKyt7CisrICAgIHJldHVy biAmcmFuZF94OTMxX21ldGg7CisrfQorKworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmMvY3J5cHRvL2ZpcHMvZmlwc19yYW5kLmguZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlw cy9maXBzX3JhbmQuaAorLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfcmFuZC5o LmZpcHMJMjAxNS0wNi0xNSAxNzozMDowMC4wMTAyODQwMjggKzAyMDAKKysrKyBvcGVuc3NsLTEu MC4yYy9jcnlwdG8vZmlwcy9maXBzX3JhbmQuaAkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxMDI4NDAy OCArMDIwMAorQEAgLTAsMCArMSwxNjMgQEAKKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdo dCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysg KgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs IHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAx LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv cHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp bgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk ZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0 aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAg ICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysg KiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3Bl blNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0 cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRv b2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAg ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdp dGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1p c3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgor KyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBi ZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRo ZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhl IE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9y bSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRn bWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBi eSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29s a2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElT IFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBF WFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF RCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO IE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVU T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICog U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg QlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg T1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO RVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwg T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcg SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysK KysjaWZuZGVmIEhFQURFUl9GSVBTX1JBTkRfSAorKyMgZGVmaW5lIEhFQURFUl9GSVBTX1JBTkRf SAorKworKyMgaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KKysjIGluY2x1ZGUgPG9wZW5zc2wvZXZw Lmg+CisrIyBpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KKysjIGluY2x1ZGUgPG9wZW5zc2wvcmFu ZC5oPgorKworKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrCisrIyAgaWZkZWYgIF9fY3BsdXNwbHVz CisrZXh0ZXJuICJDIiB7CisrIyAgZW5kaWYKKysKKysgICAgaW50IEZJUFNfeDkzMV9zZXRfa2V5 KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwgaW50IGtleWxlbik7CisrICAgIGludCBGSVBTX3g5 MzFfc2VlZChjb25zdCB2b2lkICpidWYsIGludCBudW0pOworKyAgICBpbnQgRklQU194OTMxX2J5 dGVzKHVuc2lnbmVkIGNoYXIgKm91dCwgaW50IG91dGxlbik7CisrCisrICAgIGludCBGSVBTX3g5 MzFfdGVzdF9tb2RlKHZvaWQpOworKyAgICB2b2lkIEZJUFNfeDkzMV9yZXNldCh2b2lkKTsKKysg ICAgaW50IEZJUFNfeDkzMV9zZXRfZHQodW5zaWduZWQgY2hhciAqZHQpOworKworKyAgICBpbnQg RklQU194OTMxX3N0YXR1cyh2b2lkKTsKKysKKysgICAgY29uc3QgUkFORF9NRVRIT0QgKkZJUFNf eDkzMV9tZXRob2Qodm9pZCk7CisrCisrICAgIHR5cGVkZWYgc3RydWN0IGRyYmdfY3R4X3N0IERS QkdfQ1RYOworKy8qIERSQkcgZXh0ZXJuYWwgZmxhZ3MgKi8KKysvKiBGbGFnIGZvciBDVFIgbW9k ZSBvbmx5OiB1c2UgZGVyaXZhdGlvbiBmdW5jdGlvbiBjdHJfZGYgKi8KKysjICBkZWZpbmUgRFJC R19GTEFHX0NUUl9VU0VfREYgICAgICAgICAgICAweDEKKysvKiBQUk5HIGlzIGluIHRlc3Qgc3Rh dGUgKi8KKysjICBkZWZpbmUgRFJCR19GTEFHX1RFU1QgICAgICAgICAgICAgICAgICAweDIKKysK KysgICAgRFJCR19DVFggKkZJUFNfZHJiZ19uZXcoaW50IHR5cGUsIHVuc2lnbmVkIGludCBmbGFn cyk7CisrICAgIGludCBGSVBTX2RyYmdfaW5pdChEUkJHX0NUWCAqZGN0eCwgaW50IHR5cGUsIHVu c2lnbmVkIGludCBmbGFncyk7CisrICAgIGludCBGSVBTX2RyYmdfaW5zdGFudGlhdGUoRFJCR19D VFggKmRjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg Y2hhciAqcGVycywgc2l6ZV90IHBlcnNsZW4pOworKyAgICBpbnQgRklQU19kcmJnX3Jlc2VlZChE UkJHX0NUWCAqZGN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqYWRpbiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZV90IGFkaW5sZW4pOworKyAgICBpbnQgRklQU19kcmJnX2dlbmVyYXRl KERSQkdfQ1RYICpkY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4sCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByZWRpY3Rpb25fcmVzaXN0YW5jZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphZGluLCBzaXplX3Qg YWRpbmxlbik7CisrCisrICAgIGludCBGSVBTX2RyYmdfdW5pbnN0YW50aWF0ZShEUkJHX0NUWCAq ZGN0eCk7CisrICAgIHZvaWQgRklQU19kcmJnX2ZyZWUoRFJCR19DVFggKmRjdHgpOworKworKyAg ICBpbnQgRklQU19kcmJnX3NldF9jYWxsYmFja3MoRFJCR19DVFggKmRjdHgsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKCpnZXRfZW50cm9weSkgKERSQkdfQ1RYICpj dHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGNoYXIgKipwb3V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50cm9weSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1pbl9sZW4sCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVfdCBtYXhfbGVuKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpj bGVhbnVwX2VudHJvcHkpIChEUkJHX0NUWCAqY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplX3Qgb2xlbiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZW50 cm9weV9ibG9ja2xlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAo KmdldF9ub25jZSkgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqcG91dCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbnRyb3B5 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZV90IG1pbl9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QgbWF4X2xlbiksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICgqY2xlYW51cF9ub25jZSkgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo YXIgKm91dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZV90IG9sZW4pKTsKKysKKysgICAgaW50IEZJUFNfZHJiZ19zZXRfcmFuZF9j YWxsYmFja3MoRFJCR19DVFggKmRjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVfdCAoKmdldF9hZGluKSAoRFJCR19DVFggKmN0eCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKipwb3V0KSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo KmNsZWFudXBfYWRpbikgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplX3Qgb2xlbiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAoKnJhbmRfc2VlZF9jYikgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1ZiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IG51bSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnJh bmRfYWRkX2NiKSAoRFJCR19DVFggKmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpidWYsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb3VibGUgZW50cm9weSkpOworKworKyAgICB2b2lkICpGSVBTX2RyYmdfZ2V0X2FwcF9kYXRh KERSQkdfQ1RYICpjdHgpOworKyAgICB2b2lkIEZJUFNfZHJiZ19zZXRfYXBwX2RhdGEoRFJCR19D VFggKmN0eCwgdm9pZCAqYXBwX2RhdGEpOworKyAgICBzaXplX3QgRklQU19kcmJnX2dldF9ibG9j a2xlbmd0aChEUkJHX0NUWCAqZGN0eCk7CisrICAgIGludCBGSVBTX2RyYmdfZ2V0X3N0cmVuZ3Ro KERSQkdfQ1RYICpkY3R4KTsKKysgICAgdm9pZCBGSVBTX2RyYmdfc2V0X2NoZWNrX2ludGVydmFs KERSQkdfQ1RYICpkY3R4LCBpbnQgaW50ZXJ2YWwpOworKyAgICB2b2lkIEZJUFNfZHJiZ19zZXRf cmVzZWVkX2ludGVydmFsKERSQkdfQ1RYICpkY3R4LCBpbnQgaW50ZXJ2YWwpOworKworKyAgICBp bnQgRklQU19kcmJnX2hlYWx0aF9jaGVjayhEUkJHX0NUWCAqZGN0eCk7CisrCisrICAgIERSQkdf Q1RYICpGSVBTX2dldF9kZWZhdWx0X2RyYmcodm9pZCk7CisrICAgIGNvbnN0IFJBTkRfTUVUSE9E ICpGSVBTX2RyYmdfbWV0aG9kKHZvaWQpOworKworKyAgICBpbnQgRklQU19yYW5kX3NldF9tZXRo b2QoY29uc3QgUkFORF9NRVRIT0QgKm1ldGgpOworKyAgICBjb25zdCBSQU5EX01FVEhPRCAqRklQ U19yYW5kX2dldF9tZXRob2Qodm9pZCk7CisrCisrICAgIHZvaWQgRklQU19yYW5kX3NldF9iaXRz KGludCBuYml0cyk7CisrCisrICAgIGludCBGSVBTX3JhbmRfc3RyZW5ndGgodm9pZCk7CisrCisr LyogMS4wLjAgY29tcGF0IGZ1bmN0aW9ucyAqLworKyAgICBpbnQgRklQU19yYW5kX3NldF9rZXko Y29uc3QgdW5zaWduZWQgY2hhciAqa2V5LCBGSVBTX1JBTkRfU0laRV9UIGtleWxlbik7CisrICAg IGludCBGSVBTX3JhbmRfc2VlZChjb25zdCB2b2lkICpidWYsIEZJUFNfUkFORF9TSVpFX1QgbnVt KTsKKysgICAgaW50IEZJUFNfcmFuZF9ieXRlcyh1bnNpZ25lZCBjaGFyICpvdXQsIEZJUFNfUkFO RF9TSVpFX1Qgb3V0bGVuKTsKKysgICAgaW50IEZJUFNfcmFuZF90ZXN0X21vZGUodm9pZCk7Cisr ICAgIHZvaWQgRklQU19yYW5kX3Jlc2V0KHZvaWQpOworKyAgICBpbnQgRklQU19yYW5kX3NldF9k dCh1bnNpZ25lZCBjaGFyICpkdCk7CisrICAgIGludCBGSVBTX3JhbmRfc3RhdHVzKHZvaWQpOwor KyAgICBjb25zdCBSQU5EX01FVEhPRCAqRklQU19yYW5kX21ldGhvZCh2b2lkKTsKKysKKysjICBp ZmRlZiAgX19jcGx1c3BsdXMKKyt9CisrIyAgZW5kaWYKKysjIGVuZGlmCisrI2VuZGlmCitkaWZm IC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX3JhbmRfbGNsLmguZmlwcyBvcGVu c3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX3JhbmRfbGNsLmgKKy0tLSBvcGVuc3NsLTEuMC4y Yy9jcnlwdG8vZmlwcy9maXBzX3JhbmRfbGNsLmguZmlwcwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAx MDI4NDAyOCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9s Y2wuaAkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxMDI4NDAyOCArMDIwMAorQEAgLTAsMCArMSwyMTMg QEAKKysvKiBmaXBzL3JhbmQvZmlwc19yYW5kX2xjbC5oICovCisrLyogV3JpdHRlbiBieSBEciBT dGVwaGVuIE4gSGVuc29uIChzdGV2ZUBvcGVuc3NsLm9yZykgZm9yIHRoZSBPcGVuU1NMCisrICog cHJvamVjdC4KKysgKi8KKysvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAxMSBU aGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlz dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1 dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRo ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK KysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJp YWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBt dXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBw cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0 CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVu U1NMLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAi T3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBw cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAg ICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFz ZSBjb250YWN0CisrICogICAgbGljZW5zaW5nQE9wZW5TU0wub3JnLgorKyAqCisrICogNS4gUHJv ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5T U0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhv dXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVj dC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11 c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQ cm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3 Lk9wZW5TU0wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1Q TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICog SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisr ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUg UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKi8KKysKKyt0 eXBlZGVmIHN0cnVjdCBkcmJnX2hhc2hfY3R4X3N0IERSQkdfSEFTSF9DVFg7CisrdHlwZWRlZiBz dHJ1Y3QgZHJiZ19obWFjX2N0eF9zdCBEUkJHX0hNQUNfQ1RYOworK3R5cGVkZWYgc3RydWN0IGRy YmdfY3RyX2N0eF9zdCBEUkJHX0NUUl9DVFg7CisrCisrLyogODg4IGJpdHMgZnJvbSAxMC4xIHRh YmxlIDIgKi8KKysjZGVmaW5lIEhBU0hfUFJOR19NQVhfU0VFRExFTiAgIDExMQorKworK3N0cnVj dCBkcmJnX2hhc2hfY3R4X3N0IHsKKysgICAgY29uc3QgRVZQX01EICptZDsKKysgICAgRVZQX01E X0NUWCBtY3R4OworKyAgICB1bnNpZ25lZCBjaGFyIFZbSEFTSF9QUk5HX01BWF9TRUVETEVOXTsK KysgICAgdW5zaWduZWQgY2hhciBDW0hBU0hfUFJOR19NQVhfU0VFRExFTl07CisrICAgIC8qIFRl bXBvcmFyeSB2YWx1ZSBzdG9yYWdlOiBzaG91bGQgYWx3YXlzIGV4Y2VlZCBtYXggZGlnZXN0IGxl bmd0aCAqLworKyAgICB1bnNpZ25lZCBjaGFyIHZ0bXBbSEFTSF9QUk5HX01BWF9TRUVETEVOXTsK Kyt9OworKworK3N0cnVjdCBkcmJnX2htYWNfY3R4X3N0IHsKKysgICAgY29uc3QgRVZQX01EICpt ZDsKKysgICAgSE1BQ19DVFggaGN0eDsKKysgICAgdW5zaWduZWQgY2hhciBLW0VWUF9NQVhfTURf U0laRV07CisrICAgIHVuc2lnbmVkIGNoYXIgVltFVlBfTUFYX01EX1NJWkVdOworK307CisrCisr c3RydWN0IGRyYmdfY3RyX2N0eF9zdCB7CisrICAgIEFFU19LRVkga3M7CisrICAgIHNpemVfdCBr ZXlsZW47CisrICAgIHVuc2lnbmVkIGNoYXIgS1szMl07CisrICAgIHVuc2lnbmVkIGNoYXIgVlsx Nl07CisrICAgIC8qIFRlbXAgdmFyaWFibGVzIHVzZWQgYnkgZGVyaXZhdGlvbiBmdW5jdGlvbiAq LworKyAgICBBRVNfS0VZIGRmX2tzOworKyAgICBBRVNfS0VZIGRmX2t4a3M7CisrICAgIC8qIFRl bXBvcmFyeSBibG9jayBzdG9yYWdlIHVzZWQgYnkgY3RyX2RmICovCisrICAgIHVuc2lnbmVkIGNo YXIgYmx0bXBbMTZdOworKyAgICBzaXplX3QgYmx0bXBfcG9zOworKyAgICB1bnNpZ25lZCBjaGFy IEtYWzQ4XTsKKyt9OworKworKy8qIERSQkcgaW50ZXJuYWwgZmxhZ3MgKi8KKysKKysvKiBGdW5j dGlvbnMgc2hvdWxkbid0IGNhbGwgZXJyIGxpYnJhcnkgKi8KKysjZGVmaW5lIERSQkdfRkxBR19O T0VSUiAgICAgICAgICAgICAgICAgMHgxCisrLyogQ3VzdG9tIHJlc2VlZCBjaGVja2luZyAqLwor KyNkZWZpbmUgRFJCR19DVVNUT01fUkVTRUVEICAgICAgICAgICAgICAweDIKKysKKysvKiBEUkJH IHN0YXR1cyB2YWx1ZXMgKi8KKysvKiBub3QgaW5pdGlhbGlzZWQgKi8KKysjZGVmaW5lIERSQkdf U1RBVFVTX1VOSU5JVElBTElTRUQgICAgICAgMAorKy8qIG9rIGFuZCByZWFkeSB0byBnZW5lcmF0 ZSByYW5kb20gYml0cyAqLworKyNkZWZpbmUgRFJCR19TVEFUVVNfUkVBRFkgICAgICAgICAgICAg ICAxCisrLyogcmVzZWVkIHJlcXVpcmVkICovCisrI2RlZmluZSBEUkJHX1NUQVRVU19SRVNFRUQg ICAgICAgICAgICAgIDIKKysvKiBmYXRhbCBlcnJvciBjb25kaXRpb24gKi8KKysjZGVmaW5lIERS QkdfU1RBVFVTX0VSUk9SICAgICAgICAgICAgICAgMworKworKy8qIEEgZGVmYXVsdCBtYXhpbXVt IGxlbmd0aDogbGFyZ2VyIHRoYW4gYW55IHJlYXNvbmFibGUgdmFsdWUgdXNlZCBpbiBwcmF0aWNl ICovCisrCisrI2RlZmluZSBEUkJHX01BWF9MRU5HVEggICAgICAgICAgICAgICAgIDB4N2ZmZmZm ZjAKKysvKiBNYXhpbXVtIERSQkcgYmxvY2sgbGVuZ3RoOiBhbGwgbWQgc2l6ZXMgYXJlIGJpZ2dl ciB0aGFuIGNpcGhlciBibG9ja3Mgc2l6ZXMKKysgKiBzbyB1c2UgbWF4IGRpZ2VzdCBsZW5ndGgu CisrICovCisrI2RlZmluZSBEUkJHX01BWF9CTE9DSyAgICAgICAgICAgICAgICAgIEVWUF9NQVhf TURfU0laRQorKworKyNkZWZpbmUgRFJCR19IRUFMVEhfSU5URVJWQUwgICAgICAgICAgICAoMSA8 PCAyNCkKKysKKysvKiBEUkJHIGNvbnRleHQgc3RydWN0dXJlICovCisrCisrc3RydWN0IGRyYmdf Y3R4X3N0IHsKKysgICAgLyogRmlyc3QgdHlwZXMgY29tbW9uIHRvIGFsbCBpbXBsZW1lbnRhdGlv bnMgKi8KKysgICAgLyogRFJCRyB0eXBlOiBhIE5JRCBmb3IgdGhlIHVuZGVybHlpbmcgYWxnb3Jp dGhtICovCisrICAgIGludCB0eXBlOworKyAgICAvKiBWYXJpb3VzIGV4dGVybmFsIGZsYWdzICov CisrICAgIHVuc2lnbmVkIGludCB4ZmxhZ3M7CisrICAgIC8qIFZhcmlvdXMgaW50ZXJuYWwgdXNl IG9ubHkgZmxhZ3MgKi8KKysgICAgdW5zaWduZWQgaW50IGlmbGFnczsKKysgICAgLyogVXNlZCBm b3IgcGVyaW9kaWMgaGVhbHRoIGNoZWNrcyAqLworKyAgICBpbnQgaGVhbHRoX2NoZWNrX2NudCwg aGVhbHRoX2NoZWNrX2ludGVydmFsOworKworKyAgICAvKiBUaGUgZm9sbG93aW5nIHBhcmFtZXRl cnMgYXJlIHNldHVwIGJ5IG1lY2hhbmlzbSBkcmJnX2luaXQoKSBjYWxsICovCisrICAgIGludCBz dHJlbmd0aDsKKysgICAgc2l6ZV90IGJsb2NrbGVuZ3RoOworKyAgICBzaXplX3QgbWF4X3JlcXVl c3Q7CisrCisrICAgIHNpemVfdCBtaW5fZW50cm9weSwgbWF4X2VudHJvcHk7CisrICAgIHNpemVf dCBtaW5fbm9uY2UsIG1heF9ub25jZTsKKysgICAgc2l6ZV90IG1heF9wZXJzLCBtYXhfYWRpbjsK KysgICAgdW5zaWduZWQgaW50IHJlc2VlZF9jb3VudGVyOworKyAgICB1bnNpZ25lZCBpbnQgcmVz ZWVkX2ludGVydmFsOworKyAgICBzaXplX3Qgc2VlZGxlbjsKKysgICAgaW50IHN0YXR1czsKKysg ICAgLyogQXBwbGljYXRpb24gZGF0YTogdHlwaWNhbGx5IHVzZWQgYnkgdGVzdCBnZXRfZW50cm9w eSAqLworKyAgICB2b2lkICphcHBfZGF0YTsKKysgICAgLyogSW1wbGVtZW50YXRpb24gc3BlY2lm aWMgc3RydWN0dXJlcyAqLworKyAgICB1bmlvbiB7CisrICAgICAgICBEUkJHX0hBU0hfQ1RYIGhh c2g7CisrICAgICAgICBEUkJHX0hNQUNfQ1RYIGhtYWM7CisrICAgICAgICBEUkJHX0NUUl9DVFgg Y3RyOworKyAgICB9IGQ7CisrICAgIC8qIEluaXRpYWxpYXNlIFBSTkcgYW5kIHNldHVwIGNhbGxi YWNrcyBiZWxvdyAqLworKyAgICBpbnQgKCppbml0KSAoRFJCR19DVFggKmN0eCwgaW50IG5pZCwg aW50IHNlY3VyaXR5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpOworKyAgICAvKiBJbnRhbnRpYXRlIFBS TkcgKi8KKysgICAgaW50ICgqaW5zdGFudGlhdGUpIChEUkJHX0NUWCAqY3R4LAorKyAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVudCwgc2l6ZV90IGVudGxlbiwK KysgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpub25jZSwgc2l6 ZV90IG5vbmNlbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKnBlcnMsIHNpemVfdCBwZXJzbGVuKTsKKysgICAgLyogcmVzZWVkICovCisrICAgIGludCAo KnJlc2VlZCkgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln bmVkIGNoYXIgKmVudCwgc2l6ZV90IGVudGxlbiwKKysgICAgICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciAqYWRpbiwgc2l6ZV90IGFkaW5sZW4pOworKyAgICAvKiBnZW5lcmF0IG91 dHB1dCAqLworKyAgICBpbnQgKCpnZW5lcmF0ZSkgKERSQkdfQ1RYICpjdHgsCisrICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuLAorKyAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkaW4sIHNpemVfdCBhZGlubGVuKTsK KysgICAgLyogdW5pbnN0YW50aWF0ZSAqLworKyAgICBpbnQgKCp1bmluc3RhbnRpYXRlKSAoRFJC R19DVFggKmN0eCk7CisrCisrICAgIC8qIEVudHJvcHkgc291cmNlIGJsb2NrIGxlbmd0aCAqLwor KyAgICBzaXplX3QgZW50cm9weV9ibG9ja2xlbjsKKysKKysgICAgLyogZW50cm9weSBnYXRoZXJp bmcgZnVuY3Rpb24gKi8KKysgICAgc2l6ZV90ICgqZ2V0X2VudHJvcHkpIChEUkJHX0NUWCAqY3R4 LCB1bnNpZ25lZCBjaGFyICoqcG91dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg ZW50cm9weSwgc2l6ZV90IG1pbl9sZW4sIHNpemVfdCBtYXhfbGVuKTsKKysgICAgLyogSW5kaWNh dGVzIHdlIGhhdmUgZmluaXNoZWQgd2l0aCBlbnRyb3B5IGJ1ZmZlciAqLworKyAgICB2b2lkICgq Y2xlYW51cF9lbnRyb3B5KSAoRFJCR19DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXpl X3Qgb2xlbik7CisrCisrICAgIC8qIG5vbmNlIGdhdGhlcmluZyBmdW5jdGlvbiAqLworKyAgICBz aXplX3QgKCpnZXRfbm9uY2UpIChEUkJHX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICoqcG91dCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVudHJvcHksIHNpemVfdCBtaW5fbGVuLCBz aXplX3QgbWF4X2xlbik7CisrICAgIC8qIEluZGljYXRlcyB3ZSBoYXZlIGZpbmlzaGVkIHdpdGgg bm9uY2UgYnVmZmVyICovCisrICAgIHZvaWQgKCpjbGVhbnVwX25vbmNlKSAoRFJCR19DVFggKmN0 eCwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb2xlbik7CisrCisrICAgIC8qIENvbnRpbnVv dXMgcmFuZG9tIG51bWJlciB0ZXN0IHRlbXBvcmFyeSBhcmVhICovCisrICAgIC8qIExhc3QgYmxv Y2sgKi8KKysgICAgdW5zaWduZWQgY2hhciBsYltFVlBfTUFYX01EX1NJWkVdOworKyAgICAvKiBz ZXQgaWYgbGIgaXMgdmFsaWQgKi8KKysgICAgaW50IGxiX3ZhbGlkOworKworKyAgICAvKiBDYWxs YmFja3MgdXNlZCB3aGVuIGNhbGxlZCB0aHJvdWdoIFJBTkQgaW50ZXJmYWNlICovCisrICAgIC8q IEdldCBhbnkgYWRkaXRpb25hbCBpbnB1dCBmb3IgZ2VuZXJhdGUgKi8KKysgICAgc2l6ZV90ICgq Z2V0X2FkaW4pIChEUkJHX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICoqcG91dCk7CisrICAgIHZv aWQgKCpjbGVhbnVwX2FkaW4pIChEUkJHX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNp emVfdCBvbGVuKTsKKysgICAgLyogQ2FsbGJhY2sgZm9yIFJBTkRfc2VlZCgpLCBSQU5EX2FkZCgp ICovCisrICAgIGludCAoKnJhbmRfc2VlZF9jYikgKERSQkdfQ1RYICpjdHgsIGNvbnN0IHZvaWQg KmJ1ZiwgaW50IG51bSk7CisrICAgIGludCAoKnJhbmRfYWRkX2NiKSAoRFJCR19DVFggKmN0eCwK KysgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpidWYsIGludCBudW0sIGRvdWJs ZSBlbnRyb3B5KTsKKyt9OworKworK2ludCBmaXBzX2RyYmdfY3RyX2luaXQoRFJCR19DVFggKmRj dHgpOworK2ludCBmaXBzX2RyYmdfaGFzaF9pbml0KERSQkdfQ1RYICpkY3R4KTsKKytpbnQgZmlw c19kcmJnX2htYWNfaW5pdChEUkJHX0NUWCAqZGN0eCk7CisraW50IGZpcHNfZHJiZ19rYXQoRFJC R19DVFggKmRjdHgsIGludCBuaWQsIHVuc2lnbmVkIGludCBmbGFncyk7CisraW50IGZpcHNfZHJi Z19jcHJuZ190ZXN0KERSQkdfQ1RYICpkY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICpvdXQpOwor KworK2NvbnN0IHN0cnVjdCBlbnZfbWRfc3QgKkZJUFNfZ2V0X2RpZ2VzdGJ5bmlkKGludCBuaWQp OworKworK2NvbnN0IHN0cnVjdCBldnBfY2lwaGVyX3N0ICpGSVBTX2dldF9jaXBoZXJieW5pZChp bnQgbmlkKTsKKysKKysjZGVmaW5lIEZJUFNfZGlnZXN0aW5pdCBFVlBfRGlnZXN0SW5pdAorKyNk ZWZpbmUgRklQU19kaWdlc3R1cGRhdGUgRVZQX0RpZ2VzdFVwZGF0ZQorKyNkZWZpbmUgRklQU19k aWdlc3RmaW5hbCBFVlBfRGlnZXN0RmluYWwKKysjZGVmaW5lIE1fRVZQX01EX3NpemUgRVZQX01E X3NpemUKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9saWIu Yy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9saWIuYworLS0tIG9w ZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9saWIuYy5maXBzCTIwMTUtMDYtMTUg MTc6MzA6MDAuMDEwMjg0MDI4ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMv Zmlwc19yYW5kX2xpYi5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDEwMjg0MDI4ICswMjAwCitAQCAt MCwwICsxLDE4MSBAQAorKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogQ29weXJpZ2h0IChjKSAyMDExIFRo ZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0 cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo b3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv bGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKgorKyAqIDEuIFJlZGlzdHJpYnV0 aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyLiAKKysgKgorKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0 IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisrICogICAgdGhl IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor KyAqICAgIGRpc3RyaWJ1dGlvbi4KKysgKgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlh bHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcworKyAqICAgIHNvZnR3YXJlIG11 c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorKyAqICAgICJUaGlzIHBy b2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NMIFByb2plY3QK KysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQuIChodHRwOi8vd3d3Lm9wZW5z c2wub3JnLykiCisrICoKKysgKiA0LiBUaGUgbmFtZXMgIk9wZW5TU0wgVG9vbGtpdCIgYW5kICJP cGVuU1NMIFByb2plY3QiIG11c3Qgbm90IGJlIHVzZWQgdG8KKysgKiAgICBlbmRvcnNlIG9yIHBy b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorKyAqICAg IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwgcGxlYXNl IGNvbnRhY3QKKysgKiAgICBvcGVuc3NsLWNvcmVAb3BlbnNzbC5vcmcuCisrICoKKysgKiA1LiBQ cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiT3Bl blNTTCIKKysgKiAgICBub3IgbWF5ICJPcGVuU1NMIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0 aG91dCBwcmlvciB3cml0dGVuCisrICogICAgcGVybWlzc2lvbiBvZiB0aGUgT3BlblNTTCBQcm9q ZWN0LgorKyAqCisrICogNi4gUmVkaXN0cmlidXRpb25zIG9mIGFueSBmb3JtIHdoYXRzb2V2ZXIg bXVzdCByZXRhaW4gdGhlIGZvbGxvd2luZworKyAqICAgIGFja25vd2xlZGdtZW50OgorKyAqICAg ICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBPcGVuU1NM IFByb2plY3QKKysgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93 d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg VEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQorKyAqIEVYUFJFU1NFRCBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysg KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIKKysgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB TEwgVEhFIE9wZW5TU0wgUFJPSkVDVCBPUgorKyAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysgKiBTUEVDSUFMLCBFWEVN UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKysgKiBOT1Qg TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK KysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU SU9OKQorKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg V0hFVEhFUiBJTiBDT05UUkFDVCwKKysgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisrICogQVJJU0lORyBJTiBBTlkgV0FZIE9V VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorKyAqIE9GIFRI RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysgKgorKyAqLworKworKyNpbmNsdWRlIDxv cGVuc3NsL2NyeXB0by5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKysjaW5jbHVkZSA8 b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2luY2x1ZGUgPG9w ZW5zc2wvZmlwc19yYW5kLmg+CisrI2luY2x1ZGUgImVfb3MuaCIKKysKKysvKiBGSVBTIEFQSSBm b3IgUFJORyB1c2UuIFNpbWlsYXIgdG8gUkFORCBmdW5jdGlvbmFsaXR5IGJ1dCB3aXRob3V0Cisr ICogRU5HSU5FIGFuZCBhZGRpdGlvbmFsIGNoZWNraW5nIGZvciBub24tRklQUyByYW5kIG1ldGhv ZHMuCisrICovCisrCisrc3RhdGljIGNvbnN0IFJBTkRfTUVUSE9EICpmaXBzX3JhbmRfbWV0aCA9 IE5VTEw7Cisrc3RhdGljIGludCBmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCA9IDA7Cisrc3RhdGlj IGludCBmaXBzX3JhbmRfYml0cyA9IDA7CisrCisrLyogQWxsb3dzIGFwcGxpY2F0aW9uIHRvIG92 ZXJyaWRlIG51bWJlciBvZiBiaXRzIGFuZCB1c2VzIG5vbi1GSVBTIG1ldGhvZHMgKi8KKyt2b2lk IEZJUFNfcmFuZF9zZXRfYml0cyhpbnQgbmJpdHMpCisreworKyAgICBmaXBzX3JhbmRfYml0cyA9 IG5iaXRzOworK30KKysKKytpbnQgRklQU19yYW5kX3NldF9tZXRob2QoY29uc3QgUkFORF9NRVRI T0QgKm1ldGgpCisreworKyAgICBpZiAoIWZpcHNfcmFuZF9iaXRzKSB7CisrICAgICAgICBpZiAo bWV0aCA9PSBGSVBTX2RyYmdfbWV0aG9kKCkpCisrICAgICAgICAgICAgZmlwc19hcHByb3ZlZF9y YW5kX21ldGggPSAxOworKyAgICAgICAgZWxzZSBpZiAobWV0aCA9PSBGSVBTX3g5MzFfbWV0aG9k KCkpCisrICAgICAgICAgICAgZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPSAyOworKyAgICAgICAg ZWxzZSB7CisrICAgICAgICAgICAgZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPSAwOworKyAgICAg ICAgICAgIGlmIChGSVBTX21vZHVsZV9tb2RlKCkpIHsKKysgICAgICAgICAgICAgICAgRklQU2Vy cihGSVBTX0ZfRklQU19SQU5EX1NFVF9NRVRIT0QsIEZJUFNfUl9OT05fRklQU19NRVRIT0QpOwor KyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9Cisr ICAgIH0KKysgICAgZmlwc19yYW5kX21ldGggPSBtZXRoOworKyAgICByZXR1cm4gMTsKKyt9Cisr CisrY29uc3QgUkFORF9NRVRIT0QgKkZJUFNfcmFuZF9nZXRfbWV0aG9kKHZvaWQpCisreworKyAg ICByZXR1cm4gZmlwc19yYW5kX21ldGg7CisrfQorKworK2NvbnN0IFJBTkRfTUVUSE9EICpGSVBT X3JhbmRfbWV0aG9kKHZvaWQpCisreworKyAgICByZXR1cm4gRklQU19yYW5kX2dldF9tZXRob2Qo KTsKKyt9CisrCisrdm9pZCBGSVBTX3JhbmRfcmVzZXQodm9pZCkKKyt7CisrICAgIGlmIChmaXBz X3JhbmRfbWV0aCAmJiBmaXBzX3JhbmRfbWV0aC0+Y2xlYW51cCkKKysgICAgICAgIGZpcHNfcmFu ZF9tZXRoLT5jbGVhbnVwKCk7CisrfQorKworK2ludCBGSVBTX3JhbmRfc2VlZChjb25zdCB2b2lk ICpidWYsIEZJUFNfUkFORF9TSVpFX1QgbnVtKQorK3sKKysgICAgaWYgKCFmaXBzX2FwcHJvdmVk X3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQ U19GX0ZJUFNfUkFORF9TRUVELCBGSVBTX1JfTk9OX0ZJUFNfTUVUSE9EKTsKKysgICAgICAgIHJl dHVybiAwOworKyAgICB9CisrICAgIGlmIChmaXBzX3JhbmRfbWV0aCAmJiBmaXBzX3JhbmRfbWV0 aC0+c2VlZCkKKysgICAgICAgIGZpcHNfcmFuZF9tZXRoLT5zZWVkKGJ1ZiwgbnVtKTsKKysgICAg cmV0dXJuIDE7CisrfQorKworK3ZvaWQgRklQU19yYW5kX2FkZChjb25zdCB2b2lkICpidWYsIGlu dCBudW0sIGRvdWJsZSBlbnRyb3B5KQorK3sKKysgICAgaWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRf bWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJ UFNfUkFORF9BREQsIEZJUFNfUl9OT05fRklQU19NRVRIT0QpOworKyAgICAgICAgcmV0dXJuOwor KyAgICB9CisrICAgIGlmIChmaXBzX3JhbmRfbWV0aCAmJiBmaXBzX3JhbmRfbWV0aC0+YWRkKQor KyAgICAgICAgZmlwc19yYW5kX21ldGgtPmFkZChidWYsIG51bSwgZW50cm9weSk7CisrfQorKwor K2ludCBGSVBTX3JhbmRfYnl0ZXModW5zaWduZWQgY2hhciAqYnVmLCBGSVBTX1JBTkRfU0laRV9U IG51bSkKKyt7CisrICAgIGlmICghZmlwc19hcHByb3ZlZF9yYW5kX21ldGggJiYgRklQU19tb2R1 bGVfbW9kZSgpKSB7CisrICAgICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX1JBTkRfQllURVMsIEZJ UFNfUl9OT05fRklQU19NRVRIT0QpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAg aWYgKGZpcHNfcmFuZF9tZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5ieXRlcykKKysgICAgICAgIHJl dHVybiBmaXBzX3JhbmRfbWV0aC0+Ynl0ZXMoYnVmLCBudW0pOworKyAgICByZXR1cm4gMDsKKyt9 CisrCisraW50IEZJUFNfcmFuZF9wc2V1ZG9fYnl0ZXModW5zaWduZWQgY2hhciAqYnVmLCBpbnQg bnVtKQorK3sKKysgICAgaWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVs ZV9tb2RlKCkpIHsKKysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUkFORF9QU0VVRE9fQllU RVMsIEZJUFNfUl9OT05fRklQU19NRVRIT0QpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0K KysgICAgaWYgKGZpcHNfcmFuZF9tZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5wc2V1ZG9yYW5kKQor KyAgICAgICAgcmV0dXJuIGZpcHNfcmFuZF9tZXRoLT5wc2V1ZG9yYW5kKGJ1ZiwgbnVtKTsKKysg ICAgcmV0dXJuIC0xOworK30KKysKKytpbnQgRklQU19yYW5kX3N0YXR1cyh2b2lkKQorK3sKKysg ICAgaWYgKCFmaXBzX2FwcHJvdmVkX3JhbmRfbWV0aCAmJiBGSVBTX21vZHVsZV9tb2RlKCkpIHsK KysgICAgICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfUkFORF9TVEFUVVMsIEZJUFNfUl9OT05fRklQ U19NRVRIT0QpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgaWYgKGZpcHNfcmFu ZF9tZXRoICYmIGZpcHNfcmFuZF9tZXRoLT5zdGF0dXMpCisrICAgICAgICByZXR1cm4gZmlwc19y YW5kX21ldGgtPnN0YXR1cygpOworKyAgICByZXR1cm4gMDsKKyt9CisrCisrLyogUmV0dXJuIGlu c3RhbnRpYXRlZCBzdHJlbmd0aCBvZiBQUk5HLiBGb3IgRFJCRyB0aGlzIGlzIGFuIGludGVybmFs CisrICogcGFyYW1ldGVyLiBGb3IgWDkuMzEgUFJORyBpdCBpcyA4MCBiaXRzIChmcm9tIFNQODAw LTEzMSkuIEFueSBvdGhlcgorKyAqIHR5cGUgb2YgUFJORyBpcyBub3QgYXBwcm92ZWQgYW5kIHJl dHVybnMgMCBpbiBGSVBTIG1vZGUgYW5kIG1heGltdW0KKysgKiAyNTYgb3V0c2lkZSBGSVBTIG1v ZGUuCisrICovCisrCisraW50IEZJUFNfcmFuZF9zdHJlbmd0aCh2b2lkKQorK3sKKysgICAgaWYg KGZpcHNfcmFuZF9iaXRzKQorKyAgICAgICAgcmV0dXJuIGZpcHNfcmFuZF9iaXRzOworKyAgICBp ZiAoZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPT0gMSkKKysgICAgICAgIHJldHVybiBGSVBTX2Ry YmdfZ2V0X3N0cmVuZ3RoKEZJUFNfZ2V0X2RlZmF1bHRfZHJiZygpKTsKKysgICAgZWxzZSBpZiAo Zmlwc19hcHByb3ZlZF9yYW5kX21ldGggPT0gMikKKysgICAgICAgIHJldHVybiA4MDsKKysgICAg ZWxzZSBpZiAoZmlwc19hcHByb3ZlZF9yYW5kX21ldGggPT0gMCkgeworKyAgICAgICAgaWYgKEZJ UFNfbW9kdWxlX21vZGUoKSkKKysgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIGVsc2UK KysgICAgICAgICAgICByZXR1cm4gMjU2OworKyAgICB9CisrICAgIHJldHVybiAwOworK30KK2Rp ZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfcmFuZF9zZWxmdGVzdC5jLmZp cHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19yYW5kX3NlbGZ0ZXN0LmMKKy0tLSBv cGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX3JhbmRfc2VsZnRlc3QuYy5maXBzCTIwMTUt MDYtMTUgMTc6MzA6MDAuMDEwMjg0MDI4ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRv L2ZpcHMvZmlwc19yYW5kX3NlbGZ0ZXN0LmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMTAyODQwMjgg KzAyMDAKK0BAIC0wLDAgKzEsMTc2IEBACisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQg KGMpIDIwMDMgVGhlIE9wZW5TU0wgUHJvamVjdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoK KysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3 aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4g UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5 cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisrICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4K KysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk IHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlz aW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAg c29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICog ICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5T U0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6 Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgorKyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29s a2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVu ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo b3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNz aW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAgIG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKysg KgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUg Y2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5vciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVp ciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBP cGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0g d2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21l bnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkg dGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtp dCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQ UkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg VE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO TyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9S UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQ RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV VAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S IFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT UyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9S IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElO IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE CisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisr I2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpbmNsdWRl IDxvcGVuc3NsL2ZpcHMuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisrI2luY2x1ZGUg PG9wZW5zc2wvZmlwc19yYW5kLmg+CisrI2luY2x1ZGUgImZpcHNfbG9jbC5oIgorKworKyNpZmRl ZiBPUEVOU1NMX0ZJUFMKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisrICAgIHVuc2lnbmVkIGNoYXIg RFRbMTZdOworKyAgICB1bnNpZ25lZCBjaGFyIFZbMTZdOworKyAgICB1bnNpZ25lZCBjaGFyIFJb MTZdOworK30gQUVTX1BSTkdfVFY7CisrCisrLyogVGhlIGZvbGxvd2luZyB0ZXN0IHZlY3RvcnMg YXJlIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIFJHTlZTIHNwZWMgKi8KKysKKytzdGF0aWMgdW5z aWduZWQgY2hhciBhZXNfMTI4X2tleVsxNl0gPQorKyAgICB7IDB4ZjMsIDB4YjEsIDB4NjYsIDB4 NmQsIDB4MTMsIDB4NjAsIDB4NzIsIDB4NDIsCisrICAgIDB4ZWQsIDB4MDYsIDB4MWMsIDB4YWIs IDB4YjgsIDB4ZDQsIDB4NjIsIDB4MDIKKyt9OworKworK3N0YXRpYyBBRVNfUFJOR19UViBhZXNf MTI4X3R2ID0geworKyAgICAvKiBEVCAqLworKyAgICB7MHhlNiwgMHhiMywgMHhiZSwgMHg3OCwg MHgyYSwgMHgyMywgMHhmYSwgMHg2MiwKKysgICAgIDB4ZDcsIDB4MWQsIDB4NGEsIDB4ZmIsIDB4 YjAsIDB4ZTksIDB4MjIsIDB4Zjl9LAorKyAgICAvKiBWICovCisrICAgIHsweDgwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorKyAgICAgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH0sCisrICAgIC8qIFIgKi8KKysgICAgezB4 NTksIDB4NTMsIDB4MWUsIDB4ZDEsIDB4M2IsIDB4YjAsIDB4YzAsIDB4NTUsCisrICAgICAweDg0 LCAweDc5LCAweDY2LCAweDg1LCAweGMxLCAweDJmLCAweDc2LCAweDQxfQorK307CisrCisrc3Rh dGljIHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9rZXlbMjRdID0KKysgICAgeyAweDE1LCAweGQ4LCAw eDc4LCAweDBkLCAweDYyLCAweGQzLCAweDI1LCAweDZlLAorKyAgICAweDQ0LCAweDY0LCAweDEw LCAweDEzLCAweDYwLCAweDJiLCAweGE5LCAweGJjLAorKyAgICAweDRhLCAweGZiLCAweGNhLCAw eGViLCAweDRjLCAweDhiLCAweDk5LCAweDNiCisrfTsKKysKKytzdGF0aWMgQUVTX1BSTkdfVFYg YWVzXzE5Ml90diA9IHsKKysgICAgLyogRFQgKi8KKysgICAgezB4M2YsIDB4ZDgsIDB4ZmYsIDB4 ZTgsIDB4ODAsIDB4NjksIDB4OGIsIDB4YzEsCisrICAgICAweGJmLCAweDk5LCAweDdkLCAweGE0 LCAweDI0LCAweDc4LCAweGYzLCAweDRifSwKKysgICAgLyogViAqLworKyAgICB7MHg4MCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKysgICAgIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDB9LAorKyAgICAvKiBSICovCisrICAg IHsweDE3LCAweDA3LCAweGQ1LCAweDI4LCAweDE5LCAweDc5LCAweDFlLCAweGVmLAorKyAgICAg MHhhNSwgMHgwYywgMHhiZiwgMHgyNSwgMHhlNSwgMHg1NiwgMHhiNCwgMHg5M30KKyt9OworKwor K3N0YXRpYyB1bnNpZ25lZCBjaGFyIGFlc18yNTZfa2V5WzMyXSA9CisrICAgIHsgMHg2ZCwgMHgx NCwgMHgwNiwgMHg2YywgMHhiNiwgMHhkOCwgMHgyMSwgMHgyZCwKKysgICAgMHg4MiwgMHg4ZCwg MHhmYSwgMHhmMiwgMHg3YSwgMHgwMywgMHhiNywgMHg5ZiwKKysgICAgMHgwYywgMHhjNywgMHgz ZSwgMHhjZCwgMHg3NiwgMHhlYiwgMHhlZSwgMHhiNSwKKysgICAgMHgyMSwgMHgwNSwgMHg4Yywg MHg0ZiwgMHgzMSwgMHg3YSwgMHg4MCwgMHhiYgorK307CisrCisrc3RhdGljIEFFU19QUk5HX1RW IGFlc18yNTZfdHYgPSB7CisrICAgIC8qIERUICovCisrICAgIHsweGRhLCAweDNhLCAweDQxLCAw eGVjLCAweDFkLCAweGEzLCAweGIwLCAweGQ1LAorKyAgICAgMHhmMiwgMHhhOSwgMHg0ZSwgMHgz NCwgMHg3NCwgMHg4ZSwgMHg5ZSwgMHg4OH0sCisrICAgIC8qIFYgKi8KKysgICAgezB4ODAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisrICAgICAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwfSwKKysgICAgLyogUiAqLworKyAg ICB7MHgzNSwgMHhjNywgMHhlZiwgMHhhNywgMHg3OCwgMHg0ZCwgMHgyOSwgMHhiYywKKysgICAg IDB4ODIsIDB4NzksIDB4OTksIDB4ZmIsIDB4ZDAsIDB4YjMsIDB4M2IsIDB4NzJ9CisrfTsKKysK Kyt2b2lkIEZJUFNfY29ycnVwdF9ybmcoKQorK3sKKysgICAgYWVzXzE5Ml90di5WWzBdKys7Cisr fQorKworKyMgZGVmaW5lIGZpcHNfeDkzMV90ZXN0KGtleSwgdHYpIFwKKysgICAgICAgIGRvX3g5 MzFfdGVzdChrZXksIHNpemVvZiBrZXksICZ0dikKKysKKytzdGF0aWMgaW50IGRvX3g5MzFfdGVz dCh1bnNpZ25lZCBjaGFyICprZXksIGludCBrZXlsZW4sIEFFU19QUk5HX1RWICogdHYpCisrewor KyAgICB1bnNpZ25lZCBjaGFyIFJbMTZdLCBWWzE2XTsKKysgICAgaW50IHJ2ID0gMTsKKysgICAg bWVtY3B5KFYsIHR2LT5WLCBzaXplb2YoVikpOworKyAgICBpZiAoIUZJUFNfeDkzMV9zZXRfa2V5 KGtleSwga2V5bGVuKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAoIWZpcHNfcG9zdF9z dGFydGVkKEZJUFNfVEVTVF9YOTMxLCBrZXlsZW4sIE5VTEwpKQorKyAgICAgICAgcmV0dXJuIDE7 CisrICAgIGlmICghZmlwc19wb3N0X2NvcnJ1cHQoRklQU19URVNUX1g5MzEsIGtleWxlbiwgTlVM TCkpCisrICAgICAgICBWWzBdKys7CisrICAgIEZJUFNfeDkzMV9zZWVkKFYsIDE2KTsKKysgICAg RklQU194OTMxX3NldF9kdCh0di0+RFQpOworKyAgICBGSVBTX3g5MzFfYnl0ZXMoUiwgMTYpOwor KyAgICBpZiAobWVtY21wKFIsIHR2LT5SLCAxNikpIHsKKysgICAgICAgIGZpcHNfcG9zdF9mYWls ZWQoRklQU19URVNUX1g5MzEsIGtleWxlbiwgTlVMTCk7CisrICAgICAgICBydiA9IDA7CisrICAg IH0gZWxzZSBpZiAoIWZpcHNfcG9zdF9zdWNjZXNzKEZJUFNfVEVTVF9YOTMxLCBrZXlsZW4sIE5V TEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIHJldHVybiBydjsKKyt9CisrCisraW50IEZJ UFNfc2VsZnRlc3RfeDkzMSgpCisreworKyAgICBpbnQgcnYgPSAxOworKyAgICBGSVBTX3g5MzFf cmVzZXQoKTsKKysgICAgaWYgKCFGSVBTX3g5MzFfdGVzdF9tb2RlKCkpIHsKKysgICAgICAgIEZJ UFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfWDkzMSwgRklQU19SX1NFTEZURVNUX0ZBSUxFRCk7 CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKyAgICBpZiAoIWZpcHNfeDkzMV90ZXN0KGFl c18xMjhfa2V5LCBhZXNfMTI4X3R2KSkKKysgICAgICAgIHJ2ID0gMDsKKysgICAgaWYgKCFmaXBz X3g5MzFfdGVzdChhZXNfMTkyX2tleSwgYWVzXzE5Ml90dikpCisrICAgICAgICBydiA9IDA7Cisr ICAgIGlmICghZmlwc194OTMxX3Rlc3QoYWVzXzI1Nl9rZXksIGFlc18yNTZfdHYpKQorKyAgICAg ICAgcnYgPSAwOworKyAgICBGSVBTX3g5MzFfcmVzZXQoKTsKKysgICAgaWYgKCFydikKKysgICAg ICAgIEZJUFNlcnIoRklQU19GX0ZJUFNfU0VMRlRFU1RfWDkzMSwgRklQU19SX1NFTEZURVNUX0ZB SUxFRCk7CisrICAgIHJldHVybiBydjsKKyt9CisrCisraW50IEZJUFNfc2VsZnRlc3Rfcm5nKHZv aWQpCisreworKyAgICByZXR1cm4gRklQU19zZWxmdGVzdF94OTMxKCk7CisrfQorKworKyNlbmRp ZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19yYW5kdGVzdC5jLmZp cHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19yYW5kdGVzdC5jCistLS0gb3BlbnNz bC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19yYW5kdGVzdC5jLmZpcHMJMjAxNS0wNi0xNSAxNzoz MDowMC4wMTAyODQwMjggKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBz X3JhbmR0ZXN0LmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMTAyODQwMjggKzAyMDAKK0BAIC0wLDAg KzEsMjQ3IEBACisrLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTggRXJpYyBZb3VuZyAoZWF5QGNy eXB0c29mdC5jb20pCisrICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFRoaXMgcGFj a2FnZSBpcyBhbiBTU0wgaW1wbGVtZW50YXRpb24gd3JpdHRlbgorKyAqIGJ5IEVyaWMgWW91bmcg KGVheUBjcnlwdHNvZnQuY29tKS4KKysgKiBUaGUgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4g c28gYXMgdG8gY29uZm9ybSB3aXRoIE5ldHNjYXBlcyBTU0wuCisrICogCisrICogVGhpcyBsaWJy YXJ5IGlzIGZyZWUgZm9yIGNvbW1lcmNpYWwgYW5kIG5vbi1jb21tZXJjaWFsIHVzZSBhcyBsb25n IGFzCisrICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBhaGVhcmVkIHRvLiAgVGhlIGZv bGxvd2luZyBjb25kaXRpb25zCisrICogYXBwbHkgdG8gYWxsIGNvZGUgZm91bmQgaW4gdGhpcyBk aXN0cmlidXRpb24sIGJlIGl0IHRoZSBSQzQsIFJTQSwKKysgKiBsaGFzaCwgREVTLCBldGMuLCBj b2RlOyBub3QganVzdCB0aGUgU1NMIGNvZGUuICBUaGUgU1NMIGRvY3VtZW50YXRpb24KKysgKiBp bmNsdWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uIGlzIGNvdmVyZWQgYnkgdGhlIHNhbWUgY29w eXJpZ2h0IHRlcm1zCisrICogZXhjZXB0IHRoYXQgdGhlIGhvbGRlciBpcyBUaW0gSHVkc29uICh0 amhAY3J5cHRzb2Z0LmNvbSkuCisrICogCisrICogQ29weXJpZ2h0IHJlbWFpbnMgRXJpYyBZb3Vu ZydzLCBhbmQgYXMgc3VjaCBhbnkgQ29weXJpZ2h0IG5vdGljZXMgaW4KKysgKiB0aGUgY29kZSBh cmUgbm90IHRvIGJlIHJlbW92ZWQuCisrICogSWYgdGhpcyBwYWNrYWdlIGlzIHVzZWQgaW4gYSBw cm9kdWN0LCBFcmljIFlvdW5nIHNob3VsZCBiZSBnaXZlbiBhdHRyaWJ1dGlvbgorKyAqIGFzIHRo ZSBhdXRob3Igb2YgdGhlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5IHVzZWQuCisrICogVGhpcyBjYW4g YmUgaW4gdGhlIGZvcm0gb2YgYSB0ZXh0dWFsIG1lc3NhZ2UgYXQgcHJvZ3JhbSBzdGFydHVwIG9y CisrICogaW4gZG9jdW1lbnRhdGlvbiAob25saW5lIG9yIHRleHR1YWwpIHByb3ZpZGVkIHdpdGgg dGhlIHBhY2thZ2UuCisrICogCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUg cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJl IG1ldDoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp biB0aGUKKysgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyAqIDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlh bHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQorKyAqICAgIG11 c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKKysgKiAgICAiVGhpcyBw cm9kdWN0IGluY2x1ZGVzIGNyeXB0b2dyYXBoaWMgc29mdHdhcmUgd3JpdHRlbiBieQorKyAqICAg ICBFcmljIFlvdW5nIChlYXlAY3J5cHRzb2Z0LmNvbSkiCisrICogICAgVGhlIHdvcmQgJ2NyeXB0 b2dyYXBoaWMnIGNhbiBiZSBsZWZ0IG91dCBpZiB0aGUgcm91aW5lcyBmcm9tIHRoZSBsaWJyYXJ5 CisrICogICAgYmVpbmcgdXNlZCBhcmUgbm90IGNyeXB0b2dyYXBoaWMgcmVsYXRlZCA6LSkuCisr ICogNC4gSWYgeW91IGluY2x1ZGUgYW55IFdpbmRvd3Mgc3BlY2lmaWMgY29kZSAob3IgYSBkZXJp dmF0aXZlIHRoZXJlb2YpIGZyb20gCisrICogICAgdGhlIGFwcHMgZGlyZWN0b3J5IChhcHBsaWNh dGlvbiBjb2RlKSB5b3UgbXVzdCBpbmNsdWRlIGFuIGFja25vd2xlZGdlbWVudDoKKysgKiAgICAi VGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkgVGltIEh1ZHNvbiAodGpo QGNyeXB0c29mdC5jb20pIgorKyAqIAorKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg RVJJQyBZT1VORyBgYEFTIElTJycgQU5ECisrICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UKKysgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI T1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisrICog REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMKKysgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAor KyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KSBBUklTSU5HIElOIEFOWSBXQVkKKysgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisrICogU1VDSCBEQU1BR0Uu CisrICogCisrICogVGhlIGxpY2VuY2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtcyBmb3IgYW55IHB1 YmxpY2FsbHkgYXZhaWxhYmxlIHZlcnNpb24gb3IKKysgKiBkZXJpdmF0aXZlIG9mIHRoaXMgY29k ZSBjYW5ub3QgYmUgY2hhbmdlZC4gIGkuZS4gdGhpcyBjb2RlIGNhbm5vdCBzaW1wbHkgYmUKKysg KiBjb3BpZWQgYW5kIHB1dCB1bmRlciBhbm90aGVyIGRpc3RyaWJ1dGlvbiBsaWNlbmNlCisrICog W2luY2x1ZGluZyB0aGUgR05VIFB1YmxpYyBMaWNlbmNlLl0KKysgKi8KKysvKiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBt ZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3Ry aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo dAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysg KiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNl IG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tu b3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVs b3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNT TCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5h bWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1 c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZv ciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3Jl QG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNT TCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBl cm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0 aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysg KiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3 YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0 aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycn IEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUg RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysg KiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO Q0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH RVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RS SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu CisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+ CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxjdHlwZS5oPgorKyNpbmNsdWRlIDxv cGVuc3NsL3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9maXBzX3JhbmQuaD4KKysjaW5jbHVk ZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgorKworKyNpbmNsdWRl ICJlX29zLmgiCisrCisrI2lmbmRlZiBPUEVOU1NMX0ZJUFMKKytpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQorK3sKKysgICAgcHJpbnRmKCJObyBGSVBTIFJBTkQgc3VwcG9ydFxuIik7 CisrICAgIHJldHVybiAoMCk7CisrfQorKworKyNlbHNlCisrCisrIyBpbmNsdWRlICJmaXBzX3V0 bC5oIgorKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrCisrdHlwZWRlZiBzdHJ1Y3Qgewor KyAgICB1bnNpZ25lZCBjaGFyIERUWzE2XTsKKysgICAgdW5zaWduZWQgY2hhciBWWzE2XTsKKysg ICAgdW5zaWduZWQgY2hhciBSWzE2XTsKKyt9IEFFU19QUk5HX01DVDsKKysKKytzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBhZXNfMTI4X21jdF9rZXlbMTZdID0KKysgICAgeyAweDlmLCAweDVi LCAweDUxLCAweDIwLCAweDBiLCAweGYzLCAweDM0LCAweGI1LAorKyAgICAweGQ4LCAweDJiLCAw eGU4LCAweGMzLCAweDcyLCAweDU1LCAweGM4LCAweDQ4CisrfTsKKysKKytzdGF0aWMgY29uc3Qg QUVTX1BSTkdfTUNUIGFlc18xMjhfbWN0X3R2ID0geworKyAgICAvKiBEVCAqLworKyAgICB7MHg2 MywgMHg3NiwgMHhiYiwgMHhlNSwgMHgyOSwgMHgwMiwgMHhiYSwgMHgzYiwKKysgICAgIDB4Njcs IDB4YzksIDB4MjUsIDB4ZmEsIDB4NzAsIDB4MWYsIDB4MTEsIDB4YWN9LAorKyAgICAvKiBWICov CisrICAgIHsweDU3LCAweDJjLCAweDhlLCAweDc2LCAweDg3LCAweDI2LCAweDQ3LCAweDk3LAor KyAgICAgMHg3ZSwgMHg3NCwgMHhmYiwgMHhkZCwgMHhjNCwgMHg5NSwgMHgwMSwgMHhkMX0sCisr ICAgIC8qIFIgKi8KKysgICAgezB4NDgsIDB4ZTksIDB4YmQsIDB4MGQsIDB4MDYsIDB4ZWUsIDB4 MTgsIDB4ZmIsCisrICAgICAweGU0LCAweDU3LCAweDkwLCAweGQ1LCAweGMzLCAweGZjLCAweDli LCAweDczfQorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWVzXzE5Ml9tY3Rf a2V5WzI0XSA9CisrICAgIHsgMHhiNywgMHg2YywgMHgzNCwgMHhkMSwgMHgwOSwgMHg2NywgMHhh YiwgMHg3MywKKysgICAgMHg0ZCwgMHg1YSwgMHhkNSwgMHgzNCwgMHg5OCwgMHgxNiwgMHgwYiwg MHg5MSwKKysgICAgMHhiYywgMHgzNSwgMHg1MSwgMHgxNiwgMHg2YiwgMHhhZSwgMHg5MywgMHg4 YQorK307CisrCisrc3RhdGljIGNvbnN0IEFFU19QUk5HX01DVCBhZXNfMTkyX21jdF90diA9IHsK KysgICAgLyogRFQgKi8KKysgICAgezB4ODQsIDB4Y2UsIDB4MjIsIDB4N2QsIDB4OTEsIDB4NWEs IDB4YTMsIDB4YzksCisrICAgICAweDg0LCAweDNjLCAweDBhLCAweGIzLCAweGE5LCAweDYzLCAw eDE1LCAweDUyfSwKKysgICAgLyogViAqLworKyAgICB7MHhiNiwgMHhhZiwgMHhlNiwgMHg4Ziwg MHg5OSwgMHg5ZSwgMHg5MCwgMHg2NCwKKysgICAgIDB4ZGQsIDB4YzcsIDB4N2EsIDB4YzEsIDB4 YmIsIDB4OTAsIDB4M2EsIDB4NmR9LAorKyAgICAvKiBSICovCisrICAgIHsweGZjLCAweDg1LCAw eDYwLCAweDlhLCAweDI5LCAweDZmLCAweGVmLCAweDIxLAorKyAgICAgMHhkZCwgMHg4NiwgMHgy MCwgMHgzMiwgMHg4YSwgMHgyOSwgMHg2ZiwgMHg0N30KKyt9OworKworK3N0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGFlc18yNTZfbWN0X2tleVszMl0gPQorKyAgICB7IDB4OWIsIDB4MDUsIDB4 YzgsIDB4NjgsIDB4ZmYsIDB4NDcsIDB4ZjgsIDB4M2EsCisrICAgIDB4YTYsIDB4M2EsIDB4YTgs IDB4Y2IsIDB4NGUsIDB4NzEsIDB4YjIsIDB4ZTAsCisrICAgIDB4YjgsIDB4N2UsIDB4ZjEsIDB4 MzcsIDB4YjYsIDB4YjQsIDB4ZjYsIDB4NmQsCisrICAgIDB4ODYsIDB4MzIsIDB4ZmMsIDB4MWYs IDB4NWUsIDB4MWQsIDB4MWUsIDB4NTAKKyt9OworKworK3N0YXRpYyBjb25zdCBBRVNfUFJOR19N Q1QgYWVzXzI1Nl9tY3RfdHYgPSB7CisrICAgIC8qIERUICovCisrICAgIHsweDMxLCAweDZlLCAw eDM1LCAweDlhLCAweGIxLCAweDQ0LCAweGYwLCAweGVlLAorKyAgICAgMHg2MiwgMHg2ZCwgMHgw NCwgMHg0NiwgMHhlMCwgMHhhMywgMHg5MiwgMHg0Y30sCisrICAgIC8qIFYgKi8KKysgICAgezB4 NGYsIDB4Y2QsIDB4YzEsIDB4ODcsIDB4ODIsIDB4MWYsIDB4NGQsIDB4YTEsCisrICAgICAweDNl LCAweDBlLCAweDU2LCAweDQ0LCAweDU5LCAweGU4LCAweDgzLCAweGNhfSwKKysgICAgLyogUiAq LworKyAgICB7MHhjOCwgMHg4NywgMHhjMiwgMHg2MSwgMHg1YiwgMHhkMCwgMHhiOSwgMHhlMSwK KysgICAgIDB4ZTcsIDB4ZjMsIDB4OGIsIDB4ZDcsIDB4NWIsIDB4ZDUsIDB4ZjEsIDB4OGR9Cisr fTsKKysKKytzdGF0aWMgdm9pZCBkdW1wKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmIsIGludCBuKQor K3sKKysgICAgd2hpbGUgKG4tLSA+IDApIHsKKysgICAgICAgIHByaW50ZigiICUwMngiLCAqYisr KTsKKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZCBjb21wYXJlKGNvbnN0IHVuc2lnbmVkIGNo YXIgKnJlc3VsdCwKKysgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmV4 cGVjdGVkLCBpbnQgbikKKyt7CisrICAgIGludCBpOworKworKyAgICBmb3IgKGkgPSAwOyBpIDwg bjsgKytpKQorKyAgICAgICAgaWYgKHJlc3VsdFtpXSAhPSBleHBlY3RlZFtpXSkgeworKyAgICAg ICAgICAgIHB1dHMoIlJhbmRvbSB0ZXN0IGZhaWxlZCwgZ290OiIpOworKyAgICAgICAgICAgIGR1 bXAocmVzdWx0LCBuKTsKKysgICAgICAgICAgICBwdXRzKCJcbiAgICAgICAgICAgICAgIGV4cGVj dGVkOiIpOworKyAgICAgICAgICAgIGR1bXAoZXhwZWN0ZWQsIG4pOworKyAgICAgICAgICAgIHB1 dGNoYXIoJ1xuJyk7CisrICAgICAgICAgICAgRVhJVCgxKTsKKysgICAgICAgIH0KKyt9CisrCisr c3RhdGljIHZvaWQgcnVuX3Rlc3QoY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LCBpbnQga2V5bGVu LAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFFU19QUk5HX01DVCAqIHR2KQorK3sKKysg ICAgdW5zaWduZWQgY2hhciBidWZbMTZdLCBkdFsxNl07CisrICAgIGludCBpLCBqOworKyAgICBG SVBTX3g5MzFfcmVzZXQoKTsKKysgICAgRklQU194OTMxX3Rlc3RfbW9kZSgpOworKyAgICBGSVBT X3g5MzFfc2V0X2tleShrZXksIGtleWxlbik7CisrICAgIEZJUFNfeDkzMV9zZWVkKHR2LT5WLCAx Nik7CisrICAgIG1lbWNweShkdCwgdHYtPkRULCAxNik7CisrICAgIGZvciAoaSA9IDA7IGkgPCAx MDAwMDsgaSsrKSB7CisrICAgICAgICBGSVBTX3g5MzFfc2V0X2R0KGR0KTsKKysgICAgICAgIEZJ UFNfeDkzMV9ieXRlcyhidWYsIDE2KTsKKysgICAgICAgIC8qIEluY3JlbWVudCBEVCAqLworKyAg ICAgICAgZm9yIChqID0gMTU7IGogPj0gMDsgai0tKSB7CisrICAgICAgICAgICAgZHRbal0rKzsK KysgICAgICAgICAgICBpZiAoZHRbal0pCisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAg ICAgfQorKyAgICB9CisrCisrICAgIGNvbXBhcmUoYnVmLCB0di0+UiwgMTYpOworK30KKysKKytp bnQgbWFpbigpCisreworKyAgICBydW5fdGVzdChhZXNfMTI4X21jdF9rZXksIDE2LCAmYWVzXzEy OF9tY3RfdHYpOworKyAgICBwcmludGYoIkZJUFMgUFJORyB0ZXN0IDEgZG9uZVxuIik7CisrICAg IHJ1bl90ZXN0KGFlc18xOTJfbWN0X2tleSwgMjQsICZhZXNfMTkyX21jdF90dik7CisrICAgIHBy aW50ZigiRklQUyBQUk5HIHRlc3QgMiBkb25lXG4iKTsKKysgICAgcnVuX3Rlc3QoYWVzXzI1Nl9t Y3Rfa2V5LCAzMiwgJmFlc18yNTZfbWN0X3R2KTsKKysgICAgcHJpbnRmKCJGSVBTIFBSTkcgdGVz dCAzIGRvbmVcbiIpOworKyAgICByZXR1cm4gMDsKKyt9CisrCisrI2VuZGlmCitkaWZmIC11cCBv cGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX3JzYV9zZWxmdGVzdC5jLmZpcHMgb3BlbnNz bC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19yc2Ffc2VsZnRlc3QuYworLS0tIG9wZW5zc2wtMS4w LjJjL2NyeXB0by9maXBzL2ZpcHNfcnNhX3NlbGZ0ZXN0LmMuZmlwcwkyMDE1LTA2LTE1IDE3OjMw OjAwLjAxMTI4NDA1MSArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNf cnNhX3NlbGZ0ZXN0LmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMTEyODQwNTEgKzAyMDAKK0BAIC0w LDAgKzEsNDQ0IEBACisrLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAw NyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFyZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3Ry aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAg IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0 ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2Fy ZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhp cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9q ZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5v cGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFu ZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBv ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysg KiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBs ZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1jb3JlQG9wZW5zc2wub3JnLgorKyAqCisrICog NS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQg Ik9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVz IHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wg UHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29l dmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysg KiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3Bl blNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRw Oi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF CisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwg RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICog Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdB WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBP RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKi8KKysKKysjaW5jbHVk ZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrI2lmZGVmIE9QRU5TU0xf RklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisrI2luY2x1ZGUgPG9w ZW5zc2wvcnNhLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisrI2luY2x1ZGUgPG9wZW5z c2wvYm4uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPgorKworKyNpZmRlZiBP UEVOU1NMX0ZJUFMKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBuW10gPQorKyAgICAi XHgwMFx4QkJceEY4XHgyRlx4MDlceDA2XHg4Mlx4Q0VceDlDXHgyM1x4MzhceEFDXHgyQlx4OURc eEE4XHg3MSIKKysgICAgIlx4RjdceDM2XHg4RFx4MDdceEVFXHhENFx4MTBceDQzXHhBNFx4NDBc eEQ2XHhCNlx4RjBceDc0XHg1NFx4RjUiCisrICAgICJceDFGXHhCOFx4REZceEJBXHhBRlx4MDNc eDVDXHgwMlx4QUJceDYxXHhFQVx4NDhceENFXHhFQlx4NkZceENEIgorKyAgICAiXHg0OFx4NzZc eEVEXHg1Mlx4MERceDYwXHhFMVx4RUNceDQ2XHgxOVx4NzFceDlEXHg4QVx4NUJceDhCXHg4MCIK KysgICAgIlx4N0ZceEFGXHhCOFx4RTBceEEzXHhERlx4QzdceDM3XHg3Mlx4M0VceEU2XHhCNFx4 QjdceEQ5XHgzQVx4MjUiCisrICAgICJceDg0XHhFRVx4NkFceDY0XHg5RFx4MDZceDA5XHg1M1x4 NzRceDg4XHgzNFx4QjJceDQ1XHg0NVx4OThceDM5IgorKyAgICAiXHg0RVx4RTBceEFBXHhCMVx4 MkRceDdCXHg2MVx4QTVceDFGXHg1Mlx4N0FceDlBXHg0MVx4RjZceEMxXHg2OCIKKysgICAgIlx4 N0ZceEUyXHg1M1x4NzJceDk4XHhDQVx4MkFceDhGXHg1OVx4NDZceEY4XHhFNVx4RkRceDA5XHgx RFx4QkQiICJceENCIjsKKysKKytzdGF0aWMgaW50IGNvcnJ1cHRfcnNhOworKworK3N0YXRpYyBp bnQgc2V0cnNha2V5KFJTQSAqa2V5KQorK3sKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo YXIgZVtdID0gIlx4MTEiOworKworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBkW10g PQorKyAgICAgICAgIlx4MDBceEE1XHhEQVx4RkNceDUzXHg0MVx4RkFceEYyXHg4OVx4QzRceEI5 XHg4OFx4REJceDMwXHhDMVx4Q0QiCisrICAgICAgICAiXHhGOFx4M0ZceDMxXHgyNVx4MUVceDA2 XHg2OFx4QjRceDI3XHg4NFx4ODFceDM4XHgwMVx4NTdceDk2XHg0MSIKKysgICAgICAgICJceEIy XHg5NFx4MTBceEIzXHhDN1x4OTlceDhEXHg2Qlx4QzRceDY1XHg3NFx4NUVceDVDXHgzOVx4MjZc eDY5IgorKyAgICAgICAgIlx4RDZceDg3XHgwRFx4QTJceEMwXHg4Mlx4QTlceDM5XHhFM1x4N0Zc eERDXHhCOFx4MkVceEM5XHgzRVx4REEiCisrICAgICAgICAiXHhDOVx4N0ZceEYzXHhBRFx4NTlc eDUwXHhBQ1x4Q0ZceEJDXHgxMVx4MUNceDc2XHhGMVx4QTlceDUyXHg5NCIKKysgICAgICAgICJc eDQ0XHhFNVx4NkFceEFGXHg2OFx4QzVceDZDXHgwOVx4MkNceEQzXHg4RFx4QzNceEJFXHhGNVx4 RDJceDBBIgorKyAgICAgICAgIlx4OTNceDk5XHgyNlx4RURceDRGXHg3NFx4QTFceDNFXHhERFx4 RkJceEUxXHhBMVx4Q0VceENDXHg0OFx4OTQiCisrICAgICAgICAiXHhBRlx4OTRceDI4XHhDMlx4 QjdceEI4XHg4OFx4M0ZceEU0XHg0Nlx4M0FceDRCXHhDOFx4NUJceDFDXHhCMyIKKysgICAgICAg ICJceEMxIjsKKysKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcFtdID0KKysgICAg ICAgICJceDAwXHhFRVx4Q0ZceEFFXHg4MVx4QjFceEI5XHhCM1x4QzlceDA4XHg4MVx4MEJceDEw XHhBMVx4QjVceDYwIgorKyAgICAgICAgIlx4MDFceDk5XHhFQlx4OUZceDQ0XHhBRVx4RjRceEZE XHhBNFx4OTNceEI4XHgxQVx4OUVceDNEXHg4NFx4RjYiCisrICAgICAgICAiXHgzMlx4MTJceDRF XHhGMFx4MjNceDZFXHg1RFx4MUVceDNCXHg3RVx4MjhceEZBXHhFN1x4QUFceDA0XHgwQSIKKysg ICAgICAgICJceDJEXHg1Qlx4MjVceDIxXHg3Nlx4NDVceDlEXHgxRlx4MzlceDc1XHg0MVx4QkFc eDJBXHg1OFx4RkJceDY1IgorKyAgICAgICAgIlx4OTkiOworKworKyAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBxW10gPQorKyAgICAgICAgIlx4MDBceEM5XHg3Rlx4QjFceEYwXHgyN1x4 RjRceDUzXHhGNlx4MzRceDEyXHgzM1x4RUFceEFBXHhEMVx4RDkiCisrICAgICAgICAiXHgzNVx4 M0ZceDZDXHg0Mlx4RDBceDg4XHg2Nlx4QjFceEQwXHg1QVx4MEZceDIwXHgzNVx4MDJceDhCXHg5 RCIKKysgICAgICAgICJceDg2XHg5OFx4NDBceEI0XHgxNlx4NjZceEI0XHgyRVx4OTJceEVBXHgw RFx4QTNceEI0XHgzMlx4MDRceEI1IgorKyAgICAgICAgIlx4Q0ZceENFXHgzM1x4NTJceDUyXHg0 RFx4MDRceDE2XHhBNVx4QTRceDQxXHhFN1x4MDBceEFGXHg0Nlx4MTUiCisrICAgICAgICAiXHgw MyI7CisrCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRtcDFbXSA9CisrICAgICAg ICAiXHg1NFx4NDlceDRDXHhBNlx4M0VceEJBXHgwM1x4MzdceEU0XHhFMlx4NDBceDIzXHhGQ1x4 RDZceDlBXHg1QSIKKysgICAgICAgICJceEVCXHgwN1x4RERceERDXHgwMVx4ODNceEE0XHhEMFx4 QUNceDlCXHg1NFx4QjBceDUxXHhGMlx4QjFceDNFIgorKyAgICAgICAgIlx4RDlceDQ5XHgwOVx4 NzVceEVBXHhCN1x4NzRceDE0XHhGRlx4NTlceEMxXHhGN1x4NjlceDJFXHg5QVx4MkUiCisrICAg ICAgICAiXHgyMFx4MkJceDM4XHhGQ1x4OTFceDBBXHg0N1x4NDFceDc0XHhBRFx4QzlceDNDXHgx Rlx4NjdceEM5XHg4MSI7CisrCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRtcTFb XSA9CisrICAgICAgICAiXHg0N1x4MUVceDAyXHg5MFx4RkZceDBBXHhGMFx4NzVceDAzXHg1MVx4 QjdceEY4XHg3OFx4ODZceDRDXHhBOSIKKysgICAgICAgICJceDYxXHhBRFx4QkRceDNBXHg4QVx4 N0VceDk5XHgxQ1x4NUNceDA1XHg1Nlx4QTlceDRDXHgzMVx4NDZceEE3IgorKyAgICAgICAgIlx4 RjlceDgwXHgzRlx4OEZceDZGXHg4QVx4RTNceDQyXHhFOVx4MzFceEZEXHg4QVx4RTRceDdBXHgy Mlx4MEQiCisrICAgICAgICAiXHgxQlx4OTlceEE0XHg5NVx4ODRceDk4XHgwN1x4RkVceDM5XHhG OVx4MjRceDVBXHg5OFx4MzZceERBXHgzRCI7CisrCisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l ZCBjaGFyIGlxbXBbXSA9CisrICAgICAgICAiXHgwMFx4QjBceDZDXHg0Rlx4REFceEJCXHg2M1x4 MDFceDE5XHg4RFx4MjZceDVCXHhEQlx4QUVceDk0XHgyMyIKKysgICAgICAgICJceEIzXHg4MFx4 RjJceDcxXHhGN1x4MzRceDUzXHg4OFx4NTBceDkzXHgwN1x4N0ZceENEXHgzOVx4RTJceDExIgor KyAgICAgICAgIlx4OUZceEM5XHg4Nlx4MzJceDE1XHg0Rlx4NThceDgzXHhCMVx4NjdceEE5XHg2 N1x4QkZceDQwXHgyQlx4NEUiCisrICAgICAgICAiXHg5RVx4MkVceDBGXHg5Nlx4NTZceEU2XHg5 OFx4RUFceDM2XHg2Nlx4RURceEZCXHgyNVx4NzlceDgwXHgzOSIKKysgICAgICAgICJceEY3IjsK KysKKysgICAga2V5LT5uID0gQk5fYmluMmJuKG4sIHNpemVvZihuKSAtIDEsIGtleS0+bik7Cisr ICAgIGlmIChjb3JydXB0X3JzYSkKKysgICAgICAgIEJOX3NldF9iaXQoa2V5LT5uLCAxMDI0KTsK KysgICAga2V5LT5lID0gQk5fYmluMmJuKGUsIHNpemVvZihlKSAtIDEsIGtleS0+ZSk7CisrICAg IGtleS0+ZCA9IEJOX2JpbjJibihkLCBzaXplb2YoZCkgLSAxLCBrZXktPmQpOworKyAgICBrZXkt PnAgPSBCTl9iaW4yYm4ocCwgc2l6ZW9mKHApIC0gMSwga2V5LT5wKTsKKysgICAga2V5LT5xID0g Qk5fYmluMmJuKHEsIHNpemVvZihxKSAtIDEsIGtleS0+cSk7CisrICAgIGtleS0+ZG1wMSA9IEJO X2JpbjJibihkbXAxLCBzaXplb2YoZG1wMSkgLSAxLCBrZXktPmRtcDEpOworKyAgICBrZXktPmRt cTEgPSBCTl9iaW4yYm4oZG1xMSwgc2l6ZW9mKGRtcTEpIC0gMSwga2V5LT5kbXExKTsKKysgICAg a2V5LT5pcW1wID0gQk5fYmluMmJuKGlxbXAsIHNpemVvZihpcW1wKSAtIDEsIGtleS0+aXFtcCk7 CisrICAgIHJldHVybiAxOworK30KKysKKyt2b2lkIEZJUFNfY29ycnVwdF9yc2EoKQorK3sKKysg ICAgY29ycnVwdF9yc2EgPSAxOworK30KKysKKysvKiBLbm93biBBbnN3ZXIgVGVzdCAoS0FUKSBk YXRhIGZvciB0aGUgYWJvdmUgUlNBIHByaXZhdGUga2V5IHNpZ25pbmcKKysgKiBrYXRfdGJzLgor KyAqLworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF90YnNbXSA9CisrICAgICJP cGVuU1NMIEZJUFMgMTQwLTIgUHVibGljIEtleSBSU0EgS0FUIjsKKysKKytzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBrYXRfUlNBX1BTU19TSEExW10gPSB7CisrICAgIDB4MkQsIDB4QUYsIDB4 NkUsIDB4QzIsIDB4OTgsIDB4RkIsIDB4OEEsIDB4QTEsIDB4QjksIDB4NDYsIDB4REEsIDB4MEYs CisrICAgIDB4MDEsIDB4MUUsIDB4MzcsIDB4OTMsIDB4QzIsIDB4NTUsIDB4MjcsIDB4RTQsIDB4 MUQsIDB4RDIsIDB4OTAsIDB4QkIsCisrICAgIDB4RjQsIDB4QkYsIDB4NEEsIDB4NzQsIDB4Mzks IDB4NTEsIDB4QkIsIDB4RTgsIDB4MEMsIDB4QjcsIDB4RjgsIDB4RDMsCisrICAgIDB4RDEsIDB4 REYsIDB4RTcsIDB4QkUsIDB4ODAsIDB4MDUsIDB4QzMsIDB4QjUsIDB4QzcsIDB4ODMsIDB4RDUs IDB4NEMsCisrICAgIDB4N0YsIDB4NDksIDB4RkIsIDB4M0YsIDB4MjksIDB4OUIsIDB4RTEsIDB4 MTIsIDB4NTEsIDB4NjAsIDB4RDAsIDB4QTcsCisrICAgIDB4MEQsIDB4QTksIDB4MjgsIDB4NTYs IDB4NzMsIDB4RDksIDB4MDcsIDB4RTMsIDB4NUUsIDB4M0YsIDB4OUIsIDB4RjUsCisrICAgIDB4 QjYsIDB4RjMsIDB4RjIsIDB4NUUsIDB4NzQsIDB4QzksIDB4ODMsIDB4ODEsIDB4NDcsIDB4RjAs IDB4QzUsIDB4NDUsCisrICAgIDB4MEEsIDB4RTksIDB4OEUsIDB4MzgsIDB4RDcsIDB4MTgsIDB4 QzYsIDB4MkEsIDB4MEYsIDB4RjgsIDB4QjcsIDB4MzEsCisrICAgIDB4RDYsIDB4NTUsIDB4RTQs IDB4NjYsIDB4NzgsIDB4ODEsIDB4RDQsIDB4RTYsIDB4REIsIDB4OUYsIDB4QkEsIDB4RTgsCisr ICAgIDB4MjMsIDB4QjUsIDB4N0YsIDB4REMsIDB4MDgsIDB4RUEsIDB4RDUsIDB4MjYsIDB4MUUs IDB4MjAsIDB4MjUsIDB4ODQsCisrICAgIDB4MjYsIDB4QzYsIDB4NzksIDB4QzksIDB4OUIsIDB4 M0QsIDB4N0UsIDB4QTkKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGthdF9S U0FfUFNTX1NIQTIyNFtdID0geworKyAgICAweDM5LCAweDRBLCAweDZBLCAweDIwLCAweEJDLCAw eEU5LCAweDMzLCAweEVELCAweEVGLCAweEM1LCAweDU4LCAweEE3LAorKyAgICAweEZFLCAweDgx LCAweEM0LCAweDM2LCAweDUwLCAweDlBLCAweDJDLCAweDgyLCAweDk4LCAweDA4LCAweDk1LCAw eEZBLAorKyAgICAweEIxLCAweDlFLCAweEQyLCAweDU1LCAweDYxLCAweDg3LCAweDIxLCAweDU5 LCAweDg3LCAweDdCLCAweDFGLCAweDU3LAorKyAgICAweDMwLCAweDlELCAweDBELCAweDRBLCAw eDA2LCAweEVCLCAweDUyLCAweDM3LCAweDU1LCAweDU0LCAweDFDLCAweDg5LAorKyAgICAweDgz LCAweDc1LCAweDU5LCAweDY1LCAweDY0LCAweDkwLCAweDJFLCAweDE2LCAweENDLCAweDg2LCAw eDA1LCAweEVFLAorKyAgICAweEIxLCAweEU2LCAweDdCLCAweEJBLCAweDE2LCAweDc1LCAweDBE LCAweDBDLCAweDY0LCAweDBCLCAweEFCLCAweDIyLAorKyAgICAweDE1LCAweDc4LCAweDZCLCAw eDZGLCAweEE0LCAweEZCLCAweDc3LCAweDQwLCAweDY0LCAweDYyLCAweEQxLCAweEI1LAorKyAg ICAweDM3LCAweDFFLCAweEUwLCAweDNELCAweEE4LCAweEY5LCAweEQyLCAweEJELCAweEFBLCAw eDM4LCAweDI0LCAweDQ5LAorKyAgICAweDU4LCAweEQyLCAweDc0LCAweDg1LCAweEY0LCAweEI1 LCAweDkzLCAweDhFLCAweEY1LCAweDAzLCAweEVBLCAweDJELAorKyAgICAweEM4LCAweDUyLCAw eEZBLCAweENGLCAweDdFLCAweDM1LCAweEIwLCAweDZBLCAweEFGLCAweDk1LCAweEMwLCAweDAw LAorKyAgICAweDU0LCAweDc2LCAweDNELCAweDBDLCAweDlDLCAweEIyLCAweEVFLCAweEMwCisr fTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1BTU19TSEEyNTZbXSA9 IHsKKysgICAgMHg2RCwgMHgzRCwgMHhCRSwgMHg4RiwgMHg2MCwgMHg2RCwgMHgyNSwgMHgxNCwg MHhGMCwgMHgzMSwgMHhFMywgMHg4OSwKKysgICAgMHgwMCwgMHg5NywgMHhGQSwgMHg5OSwgMHg3 MSwgMHgyOCwgMHhFNSwgMHgxMCwgMHgyNSwgMHg5QSwgMHhGMywgMHg4RiwKKysgICAgMHg3Qiwg MHhDNSwgMHhBOCwgMHg0QSwgMHg3NCwgMHg1MSwgMHgzNiwgMHhFMiwgMHg4RCwgMHg3RCwgMHg3 MywgMHgyOCwKKysgICAgMHhDMSwgMHg3NywgMHhDNiwgMHgyNywgMHg5NywgMHgwMCwgMHg4Qiwg MHgwMCwgMHhBMywgMHg5NiwgMHg3MywgMHg0RSwKKysgICAgMHg3RCwgMHgyRSwgMHgyQywgMHgz NCwgMHg2OCwgMHg4QywgMHg4RSwgMHhERiwgMHg5RCwgMHg0OSwgMHg0NywgMHgwNSwKKysgICAg MHhBQiwgMHhGNSwgMHgwMSwgMHhENiwgMHg4MSwgMHg0NywgMHg3MCwgMHhGNSwgMHgxRCwgMHg2 RCwgMHgyNiwgMHhCQSwKKysgICAgMHgyRiwgMHg3QSwgMHg1NCwgMHg1MywgMHg0RSwgMHhFRCwg MHg3MSwgMHhEOSwgMHg1QSwgMHhGMywgMHhEQSwgMHhCNiwKKysgICAgMHgwQiwgMHg0NywgMHgz NCwgMHhBRiwgMHg5MCwgMHhEQywgMHhDOCwgMHhEOSwgMHg2RiwgMHg1NiwgMHhDRCwgMHg5RiwK KysgICAgMHgyMSwgMHhCNywgMHg3RSwgMHhBRCwgMHg3QywgMHgyRiwgMHg3NSwgMHg1MCwgMHg0 NywgMHgxMiwgMHhFNCwgMHg2RCwKKysgICAgMHg1RiwgMHhCNywgMHgwMSwgMHhERiwgMHhDMywg MHgxMSwgMHg2QywgMHhBOSwgMHg5RSwgMHg0OSwgMHhCOSwgMHhGNiwKKysgICAgMHg3MiwgMHhG NCwgMHhGNiwgMHhFRiwgMHg4OCwgMHgxRSwgMHgyRCwgMHgxQworK307CisrCisrc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9QU1NfU0hBMzg0W10gPSB7CisrICAgIDB4NDAsIDB4 RkIsIDB4QTEsIDB4MjEsIDB4RjQsIDB4QjIsIDB4NDAsIDB4OUEsIDB4QjQsIDB4MzEsIDB4QTgs IDB4RjIsCisrICAgIDB4RUMsIDB4MUMsIDB4QzQsIDB4QzgsIDB4N0MsIDB4MjIsIDB4NjUsIDB4 OUMsIDB4NTcsIDB4NDUsIDB4Q0QsIDB4NUUsCisrICAgIDB4ODYsIDB4MDAsIDB4RjcsIDB4MjUs IDB4NzgsIDB4REUsIDB4REMsIDB4N0EsIDB4NzEsIDB4NDQsIDB4OUEsIDB4Q0QsCisrICAgIDB4 QUEsIDB4MjUsIDB4RjQsIDB4QjIsIDB4RkMsIDB4RjAsIDB4NzUsIDB4RDksIDB4MkYsIDB4Nzgs IDB4MjMsIDB4N0YsCisrICAgIDB4NkYsIDB4MDIsIDB4RUYsIDB4QzEsIDB4QUYsIDB4QTYsIDB4 MjgsIDB4MTYsIDB4MzEsIDB4REMsIDB4NDIsIDB4NkMsCisrICAgIDB4QjIsIDB4NDQsIDB4RTUs IDB4NEQsIDB4NjYsIDB4QTIsIDB4RTYsIDB4NzEsIDB4RjMsIDB4QUMsIDB4NEYsIDB4RkIsCisr ICAgIDB4OTEsIDB4Q0EsIDB4RjUsIDB4NzAsIDB4RUYsIDB4NkIsIDB4OUQsIDB4QTQsIDB4RUYs IDB4RDksIDB4M0QsIDB4MkYsCisrICAgIDB4M0EsIDB4QkUsIDB4ODksIDB4MzgsIDB4NTksIDB4 MDEsIDB4QkEsIDB4REEsIDB4MzIsIDB4QUQsIDB4NDIsIDB4ODksCisrICAgIDB4OTgsIDB4OEIs IDB4MzksIDB4NDQsIDB4RjAsIDB4RkMsIDB4MzgsIDB4QUMsIDB4ODcsIDB4MUYsIDB4Q0EsIDB4 NkYsCisrICAgIDB4NDgsIDB4RjYsIDB4QUUsIDB4RDcsIDB4NDUsIDB4RUUsIDB4QUUsIDB4ODgs IDB4MEUsIDB4NjAsIDB4RjQsIDB4NTUsCisrICAgIDB4NDgsIDB4NDQsIDB4RUUsIDB4MUYsIDB4 OTAsIDB4MTgsIDB4NEIsIDB4RjEKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy IGthdF9SU0FfUFNTX1NIQTUxMltdID0geworKyAgICAweDA3LCAweDFFLCAweEQ4LCAweEQ1LCAw eDA1LCAweEU4LCAweEU2LCAweEU2LCAweDU3LCAweEFFLCAweDYzLCAweDhDLAorKyAgICAweEM2 LCAweDgzLCAweEI3LCAweEEwLCAweDU5LCAweEJCLCAweEYyLCAweEM2LCAweDhGLCAweDEyLCAw eDUzLCAweDlBLAorKyAgICAweDlCLCAweDU0LCAweDlFLCAweEIzLCAweEMxLCAweDFELCAweDIz LCAweDRELCAweDUxLCAweEVELCAweDlFLCAweERELAorKyAgICAweDRCLCAweEYzLCAweDQ2LCAw eDlCLCAweDZCLCAweEY2LCAweDdDLCAweDI0LCAweDYwLCAweDc5LCAweDIzLCAweDM5LAorKyAg ICAweDAxLCAweDFDLCAweDUxLCAweENCLCAweEQ4LCAweEU5LCAweDlBLCAweDAxLCAweDY3LCAw eDVGLCAweEZFLCAweEQ3LAorKyAgICAweDdDLCAweEUzLCAweDdGLCAweEVELCAweERCLCAweDg3 LCAweEJCLCAweEYwLCAweDNELCAweDc4LCAweDU1LCAweDYxLAorKyAgICAweDU3LCAweEUzLCAw eDBGLCAweEUzLCAweEQyLCAweDlELCAweDBDLCAweDJBLCAweDIwLCAweEIwLCAweDg1LCAweDEz LAorKyAgICAweEM1LCAweDQ3LCAweDM0LCAweDBELCAweDMyLCAweDE1LCAweEM4LCAweEFFLCAw eDlBLCAweDZBLCAweDM5LCAweDYzLAorKyAgICAweDJELCAweDYwLCAweEY1LCAweDRDLCAweERG LCAweDhBLCAweDQ4LCAweDRCLCAweEJGLCAweEY0LCAweEE4LCAweEZFLAorKyAgICAweDc2LCAw eEYyLCAweDMyLCAweDFCLCAweDlDLCAweDdDLCAweENBLCAweEZFLCAweDdGLCAweDgwLCAweEMy LCAweDg4LAorKyAgICAweDVDLCAweDk3LCAweDcwLCAweEI0LCAweDI2LCAweEM5LCAweDE0LCAw eDhCCisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrYXRfUlNBX1NIQTFbXSA9 IHsKKysgICAgMHg3MSwgMHhFRSwgMHgxQSwgMHhDMCwgMHhGRSwgMHgwMSwgMHg5MywgMHg1NCwg MHg3OSwgMHg1QywgMHhGMiwgMHg0QywKKysgICAgMHg0QSwgMHhGRCwgMHgxQSwgMHgwNSwgMHg4 RiwgMHg2NCwgMHhCMSwgMHg2RCwgMHg2MSwgMHgzMywgMHg4RCwgMHg5QiwKKysgICAgMHhFNywg MHhGRCwgMHg2MCwgMHhBMywgMHg4MywgMHhCNSwgMHhBMywgMHg1MSwgMHg1NSwgMHg3NywgMHg5 MCwgMHhDRiwKKysgICAgMHhEQywgMHgyMiwgMHgzNywgMHg4RSwgMHhEMCwgMHhFMSwgMHhBRSwg MHgwOSwgMHhFMywgMHgzRCwgMHgxRSwgMHhGOCwKKysgICAgMHg4MCwgMHhEMSwgMHg4QiwgMHhD MiwgMHhFQywgMHgwQSwgMHhENywgMHg2QiwgMHg4OCwgMHg4QiwgMHg4QiwgMHhBMSwKKysgICAg MHgyMCwgMHgyMiwgMHhCRSwgMHg1OSwgMHg1QiwgMHhFMCwgMHgyMywgMHgyNCwgMHhBMSwgMHg0 OSwgMHgzMCwgMHhCQSwKKysgICAgMHhBOSwgMHg5RSwgMHhFOCwgMHhCMSwgMHg4QSwgMHg2Miwg MHgxNiwgMHhCRiwgMHg0RSwgMHhDQSwgMHgyRSwgMHg0RSwKKysgICAgMHhCQywgMHgyOSwgMHhB OCwgMHg2NywgMHgxMywgMHhCNywgMHg5RiwgMHgxRCwgMHgwNCwgMHg0NCwgMHhFNSwgMHg1RiwK KysgICAgMHgzNSwgMHgwNywgMHgxMSwgMHhCQywgMHhFRCwgMHgxOSwgMHgzNywgMHgyMSwgMHhD RiwgMHgyMywgMHg0OCwgMHgxRiwKKysgICAgMHg3MiwgMHgwNSwgMHhERSwgMHhFNiwgMHhFOCwg MHg3RiwgMHgzMywgMHg4QSwgMHg3NiwgMHg0QiwgMHgyRiwgMHg5NSwKKysgICAgMHhERiwgMHhG MSwgMHg1RiwgMHg4NCwgMHg4MCwgMHhEOSwgMHg0NiwgMHhCNAorK307CisrCisrc3RhdGljIGNv bnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9TSEEyMjRbXSA9IHsKKysgICAgMHg2MiwgMHhBQSwg MHg3OSwgMHhBOSwgMHgxOCwgMHgwRSwgMHg1RiwgMHg4QywgMHhCQiwgMHhCNywgMHgxNSwgMHhG OSwKKysgICAgMHgyNSwgMHhCQiwgMHhGQSwgMHhENCwgMHgzQSwgMHgzNCwgMHhFRCwgMHg5RSwg MHhBMCwgMHhBOSwgMHgxOCwgMHg4RCwKKysgICAgMHg1QiwgMHg1NSwgMHg5QSwgMHg3RSwgMHgx RSwgMHgwOCwgMHgwOCwgMHg2MCwgMHhDNSwgMHgxQSwgMHhDNSwgMHg4OSwKKysgICAgMHgwOCwg MHhFMiwgMHgxQiwgMHhCRCwgMHg2MiwgMHg1MCwgMHgxNywgMHg3NiwgMHgzMCwgMHgyQywgMHg5 RSwgMHhDRCwKKysgICAgMHhBNCwgMHgwMiwgMHhBRCwgMHhCMSwgMHg2RCwgMHg0NCwgMHg2RCwg MHhENSwgMHhDNiwgMHg0NSwgMHg0MSwgMHhFNSwKKysgICAgMHhFRSwgMHgxRiwgMHg4RCwgMHg3 RSwgMHgwOCwgMHgxNiwgMHhBNiwgMHhFMSwgMHg1RSwgMHgwQiwgMHhBOSwgMHhDQywKKysgICAg MHhEQiwgMHg1OSwgMHg1NSwgMHg4NywgMHgwOSwgMHgyNSwgMHg3MCwgMHg4NiwgMHg4NCwgMHgw MiwgMHhDNiwgMHgzQiwKKysgICAgMHgwQiwgMHg0NCwgMHg0QywgMHg0NiwgMHg5NSwgMHhGNCwg MHhGOCwgMHg1QSwgMHg5MSwgMHgyOCwgMHgzRSwgMHhCMiwKKysgICAgMHg1OCwgMHgyRSwgMHgw NiwgMHg0NSwgMHg0OSwgMHhFMCwgMHg5MiwgMHhFMiwgMHhDMCwgMHg2NiwgMHhFNiwgMHgzNSwK KysgICAgMHhEOSwgMHg3OSwgMHg3RiwgMHgxNywgMHg1RSwgMHgwMiwgMHg3MywgMHgwNCwgMHg3 NywgMHg4MiwgMHhFNiwgMHhEQywKKysgICAgMHg0MCwgMHgyMSwgMHg4OSwgMHg4QiwgMHgzNywg MHgzRSwgMHgxRSwgMHg4RAorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0 X1JTQV9TSEEyNTZbXSA9IHsKKysgICAgMHgwRCwgMHg1NSwgMHhFMiwgMHhBQSwgMHg4MSwgMHhE QiwgMHg4RSwgMHg4MiwgMHgwNSwgMHgxNywgMHhBNSwgMHgyMywKKysgICAgMHhFNywgMHgzQiwg MHgxRCwgMHhBRiwgMHhGQiwgMHg4QywgMHhEMCwgMHg4MSwgMHgyMCwgMHg3QiwgMHhBQSwgMHgy MywKKysgICAgMHg5MiwgMHg4NywgMHg4QywgMHhEMSwgMHg1MywgMHg4NSwgMHgxNiwgMHhEQywg MHhCRSwgMHhBRCwgMHg2RiwgMHgzNSwKKysgICAgMHg5OCwgMHgyRCwgMHg2OSwgMHg4NCwgMHhC RiwgMHhEOSwgMHg4QSwgMHgwMSwgMHgxNywgMHg1OCwgMHhCMiwgMHg2RSwKKysgICAgMHgyQywg MHg0NCwgMHg5QiwgMHg5MCwgMHhGMSwgMHhGQiwgMHg1MSwgMHhFOCwgMHg2QSwgMHg5MCwgMHgy RCwgMHgxOCwKKysgICAgMHgwRSwgMHhDMCwgMHg5MCwgMHgxMCwgMHgyNCwgMHhBOSwgMHgxRCwg MHhCMywgMHg1OCwgMHg3QSwgMHg5MSwgMHgzMCwKKysgICAgMHhCRSwgMHgyMiwgMHhDNywgMHhE MywgMHhFQywgMHhDMywgMHgwOSwgMHg1RCwgMHhCRiwgMHhFMiwgMHg4MCwgMHgzQSwKKysgICAg MHg3QywgMHg4NSwgMHhCNCwgMHhCQywgMHhEMSwgMHhFOSwgMHhGMCwgMHg1QywgMHhERSwgMHg4 MSwgMHhBNiwgMHgzOCwKKysgICAgMHhCOCwgMHg0MiwgMHhCQiwgMHg4NiwgMHhDNSwgMHg5RCwg MHhDRSwgMHg3QywgMHgyQywgMHhFRSwgMHhEMSwgMHhEQSwKKysgICAgMHgyNywgMHg0OCwgMHgy QiwgMHhGNSwgMHhBQiwgMHhCOSwgMHhGNywgMHg4MCwgMHhEMSwgMHg5MCwgMHgyNywgMHg5MCwK KysgICAgMHhCRCwgMHg0NCwgMHg5NywgMHg2MCwgMHhDRCwgMHg1NywgMHhDMCwgMHg3QQorK307 CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9TSEEzODRbXSA9IHsKKysg ICAgMHgxRCwgMHhFMywgMHg2QSwgMHhERCwgMHgyNywgMHg0QywgMHhDMCwgMHhBNSwgMHgyNywg MHhFRiwgMHhFNiwgMHgxRiwKKysgICAgMHhEMiwgMHg5MSwgMHg2OCwgMHg1OSwgMHgwNCwgMHhB RSwgMHhCRCwgMHg5OSwgMHg2MywgMHg1NiwgMHg0NywgMHhDNywKKysgICAgMHg2RiwgMHgyMiwg MHgxNiwgMHg0OCwgMHhEMCwgMHhGOSwgMHgxOCwgMHhBOSwgMHhDQSwgMHhGQSwgMHg1RCwgMHg1 QywKKysgICAgMHhBNywgMHg2NSwgMHg1MiwgMHg4QSwgMHhDOCwgMHg0NCwgMHg3RSwgMHg4Niwg MHg1RCwgMHhBOSwgMHhBNiwgMHg1NSwKKysgICAgMHg2NSwgMHgzRSwgMHhEOSwgMHgyRCwgMHgw MiwgMHgzOCwgMHhBOCwgMHg3OSwgMHgyOCwgMHg3RiwgMHhCNiwgMHhDRiwKKysgICAgMHg4Miwg MHhERCwgMHg3RSwgMHg1NSwgMHhFMSwgMHhCMSwgMHhCQywgMHhFMiwgMHgxOSwgMHgyQiwgMHgz MCwgMHhDMiwKKysgICAgMHgxQiwgMHgyQiwgMHhCMCwgMHg4MiwgMHg0NiwgMHhBQywgMHg0Qiwg MHhEMSwgMHhFMiwgMHg3RCwgMHhFQiwgMHg4QywKKysgICAgMHhGRiwgMHg5NSwgMHhFOSwgMHg2 QSwgMHgxQywgMHgzRCwgMHg0RCwgMHhCRiwgMHg4RiwgMHg4QiwgMHg5QywgMHhDRCwKKysgICAg MHhFQSwgMHg4NSwgMHhFRSwgMHgwMCwgMHhEQywgMHgxQywgMHhBNywgMHhFQiwgMHhEMCwgMHg4 RiwgMHg5OSwgMHhGMSwKKysgICAgMHgxNiwgMHgyOCwgMHgyNCwgMHg2NCwgMHgwNCwgMHgzOSwg MHgyRCwgMHg1OCwgMHgxRSwgMHgzNywgMHhEQywgMHgwNCwKKysgICAgMHhCRCwgMHgzMSwgMHhB MiwgMHgyRiwgMHhCMywgMHgzNSwgMHg1NiwgMHhCRgorK307CisrCisrc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIga2F0X1JTQV9TSEE1MTJbXSA9IHsKKysgICAgMHg2OSwgMHg1MiwgMHgxQiwg MHg1MSwgMHg1RSwgMHgwNiwgMHhDQSwgMHg5QiwgMHgxNiwgMHg1MSwgMHg1RCwgMHhDRiwKKysg ICAgMHg0OSwgMHgyNSwgMHg0QSwgMHhBMSwgMHg2QSwgMHg3NywgMHg0QywgMHgzNiwgMHg0MCwg MHhGOCwgMHhCMiwgMHg5QSwKKysgICAgMHgxNSwgMHhFQSwgMHg1QywgMHhFNSwgMHhFNiwgMHg4 MiwgMHhFMCwgMHg4NiwgMHg4MiwgMHg2QiwgMHgzMiwgMHhGMSwKKysgICAgMHgwNCwgMHhDMSwg MHg1QSwgMHgxQSwgMHhFRCwgMHgxRSwgMHg5QSwgMHhCNiwgMHg0QywgMHg1NCwgMHg5RiwgMHhE OCwKKysgICAgMHg4RCwgMHhDQywgMHhBQywgMHg4QSwgMHhCQiwgMHg5QywgMHg4MiwgMHgzRiwg MHhBNiwgMHg1MywgMHg2MiwgMHhCNSwKKysgICAgMHg4MCwgMHhFMiwgMHhCQywgMHhERCwgMHg2 NywgMHgyQiwgMHhEOSwgMHgzRiwgMHhFNCwgMHg3NSwgMHg5MiwgMHg2QiwKKysgICAgMHhBRiwg MHg2MiwgMHg3QywgMHg1MiwgMHhGMCwgMHhFRSwgMHgzMywgMHhERiwgMHgxQiwgMHgxRCwgMHg0 NywgMHhFNiwKKysgICAgMHg1OSwgMHg1NiwgMHhBNSwgMHhCOSwgMHg1QywgMHhFNiwgMHg3Nywg MHg3OCwgMHgxNiwgMHg2MywgMHg4NCwgMHgwNSwKKysgICAgMHg2RiwgMHgwRSwgMHgyQiwgMHgz MSwgMHg5RCwgMHhGNywgMHg3RiwgMHhCMiwgMHg2NCwgMHg3MSwgMHhFMCwgMHgyRCwKKysgICAg MHgzRSwgMHg2MiwgMHhDRSwgMHhCNSwgMHgzRiwgMHg4OCwgMHhERiwgMHgyRCwgMHhBQiwgMHg5 OCwgMHg2NSwgMHg5MSwKKysgICAgMHhERiwgMHg3MCwgMHgxNCwgMHhBNSwgMHgzRiwgMHgzNiwg MHhBQiwgMHg4NAorK307CisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9Y OTMxX1NIQTFbXSA9IHsKKysgICAgMHg4NiwgMHhCNCwgMHgxOCwgMHhCQSwgMHhEMSwgMHg4MCwg MHhCNiwgMHg3QywgMHg0MiwgMHg0NSwgMHg0RCwgMHhERiwKKysgICAgMHhFOSwgMHgyRCwgMHhF MSwgMHg4MywgMHg1RiwgMHhCNSwgMHgyRiwgMHhDOSwgMHhDRCwgMHhDNCwgMHhCMiwgMHg3NSwK KysgICAgMHg4MCwgMHhBNCwgMHhGMSwgMHg0QSwgMHhFNywgMHg4MywgMHgxMiwgMHgxRSwgMHgx RSwgMHgxNCwgMHhCOCwgMHhBQywKKysgICAgMHgzNSwgMHhFMiwgMHhBQSwgMHgwQiwgMHg1Qywg MHhGOCwgMHgzOCwgMHg0RCwgMHgwNCwgMHhFRSwgMHhBOSwgMHg5NywKKysgICAgMHg3MCwgMHhG QiwgMHg1RSwgMHhFNywgMHhCNywgMHhFMywgMHg2MiwgMHgyMywgMHg0QiwgMHgzOCwgMHhCRSwg MHhENiwKKysgICAgMHg1MywgMHgxNSwgMHhGNywgMHhERiwgMHg4NywgMHhCNCwgMHgwRSwgMHhD QywgMHhCMSwgMHgxQSwgMHgxMSwgMHgxOSwKKysgICAgMHhFRSwgMHg1MSwgMHhDQywgMHg5Miwg MHhERCwgMHhCQywgMHg2MywgMHgyOSwgMHg2MywgMHgwQywgMHg1OSwgMHhENywKKysgICAgMHg2 RiwgMHg0QywgMHgzQywgMHgzNywgMHg1QiwgMHgzNywgMHgwMywgMHg2MSwgMHg3RCwgMHgyNCwg MHgxQywgMHg5OSwKKysgICAgMHg0OCwgMHhBRiwgMHg4MiwgMHhGRSwgMHgzMiwgMHg0MSwgMHg5 QiwgMHhCMiwgMHhEQiwgMHhFQSwgMHhFRCwgMHg3NiwKKysgICAgMHg4RSwgMHg2RSwgMHhDQSwg MHg3RSwgMHg0RSwgMHgxNCwgMHhCQSwgMHgzMCwgMHg4NCwgMHgxQywgMHhCMywgMHg2NywKKysg ICAgMHhBMywgMHgyOSwgMHg4MCwgMHg3MCwgMHg1NCwgMHg2OCwgMHg3RCwgMHg0OQorK307Cisr Cisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga2F0X1JTQV9YOTMxX1NIQTI1NltdID0gewor KyAgICAweDdFLCAweEEyLCAweDc3LCAweEZFLCAweEI4LCAweDU0LCAweDhBLCAweEM3LCAweDdG LCAweDY0LCAweDU0LCAweDg5LAorKyAgICAweEU1LCAweDUyLCAweDE1LCAweDhFLCAweDUyLCAw eDk2LCAweDRFLCAweEE2LCAweDU4LCAweDkyLCAweDFDLCAweERELAorKyAgICAweEVBLCAweEEy LCAweDJELCAweDVDLCAweEQxLCAweDYyLCAweDAwLCAweDQ5LCAweDA1LCAweDk1LCAweDczLCAw eENGLAorKyAgICAweDE2LCAweDc2LCAweDY4LCAweEY2LCAweEM2LCAweDVFLCAweDgwLCAweEI4 LCAweEI4LCAweDdCLCAweEM4LCAweDlCLAorKyAgICAweEM2LCAweDUzLCAweDg4LCAweDI2LCAw eDIwLCAweDg4LCAweDczLCAweEI2LCAweDEzLCAweEI4LCAweEYwLCAweDRCLAorKyAgICAweDAw LCAweDg1LCAweEYzLCAweERELCAweDA3LCAweDUwLCAweEVCLCAweDIwLCAweEM0LCAweDM4LCAw eDBFLCAweDk4LAorKyAgICAweEFELCAweDRFLCAweDQ5LCAweDJDLCAweEQ3LCAweDY1LCAweEE1 LCAweDE5LCAweDBFLCAweDU5LCAweDAxLCAweEVDLAorKyAgICAweDdFLCAweDc1LCAweDg5LCAw eDY5LCAweDJFLCAweDYzLCAweDc2LCAweDg1LCAweDQ2LCAweDhELCAweEEwLCAweDhDLAorKyAg ICAweDMzLCAweDFELCAweDgyLCAweDhDLCAweDAzLCAweEVBLCAweDY5LCAweDg4LCAweDM1LCAw eEExLCAweDQyLCAweEJELAorKyAgICAweDIxLCAweEVELCAweDhELCAweEJDLCAweEJDLCAweERC LCAweDMwLCAweEZGLCAweDg2LCAweEYwLCAweDVCLCAweERDLAorKyAgICAweEUzLCAweEUyLCAw eEU4LCAweDBBLCAweDBBLCAweDI5LCAweDk0LCAweDgwCisrfTsKKysKKytzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBrYXRfUlNBX1g5MzFfU0hBMzg0W10gPSB7CisrICAgIDB4NUMsIDB4N0Qs IDB4OTYsIDB4MzUsIDB4RUMsIDB4N0UsIDB4MTEsIDB4MzgsIDB4QkIsIDB4N0IsIDB4RUMsIDB4 N0IsCisrICAgIDB4RjIsIDB4ODIsIDB4OEUsIDB4OTksIDB4QkQsIDB4RUYsIDB4RDgsIDB4QUUs IDB4RDcsIDB4MzksIDB4MzcsIDB4Q0IsCisrICAgIDB4RTYsIDB4NEYsIDB4NUUsIDB4MEEsIDB4 MTMsIDB4RTQsIDB4MkUsIDB4NDAsIDB4QjksIDB4QkUsIDB4MkUsIDB4RTMsCisrICAgIDB4RUYs IDB4NzgsIDB4ODMsIDB4MTgsIDB4NDQsIDB4MzUsIDB4OUMsIDB4OEUsIDB4RDcsIDB4NEEsIDB4 NjMsIDB4RjYsCisrICAgIDB4NTcsIDB4QzIsIDB4QjAsIDB4MDgsIDB4NTEsIDB4NzMsIDB4Q0Ys IDB4Q0EsIDB4OTksIDB4NjYsIDB4RUUsIDB4MzEsCisrICAgIDB4RDgsIDB4NjksIDB4RTksIDB4 QUIsIDB4MTMsIDB4MjcsIDB4N0IsIDB4NDEsIDB4MUUsIDB4NkQsIDB4OEQsIDB4RjEsCisrICAg IDB4M0UsIDB4OUMsIDB4MzUsIDB4OTUsIDB4NTgsIDB4REQsIDB4MkIsIDB4RDUsIDB4QTAsIDB4 NjAsIDB4NDEsIDB4NzksCisrICAgIDB4MjQsIDB4MjIsIDB4RTQsIDB4QjcsIDB4QkYsIDB4NDcs IDB4NTMsIDB4RjYsIDB4MzQsIDB4RDUsIDB4N0MsIDB4RkYsCisrICAgIDB4MEUsIDB4MDksIDB4 RUUsIDB4MkUsIDB4RTIsIDB4MzcsIDB4QjksIDB4REUsIDB4QzUsIDB4MTIsIDB4NDQsIDB4MzUs CisrICAgIDB4RUYsIDB4MDEsIDB4RTYsIDB4NUUsIDB4MzksIDB4MzEsIDB4MkQsIDB4NzEsIDB4 QTUsIDB4REMsIDB4QzYsIDB4NkQsCisrICAgIDB4RTIsIDB4Q0QsIDB4ODUsIDB4REIsIDB4NzMs IDB4ODIsIDB4NjUsIDB4MjgKKyt9OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGth dF9SU0FfWDkzMV9TSEE1MTJbXSA9IHsKKysgICAgMHhBNiwgMHg2NSwgMHhBMiwgMHg3NywgMHg0 RiwgMHhCMywgMHg4NiwgMHhDQiwgMHg2NCwgMHgzQSwgMHhDMSwgMHg2MywKKysgICAgMHhGQywg MHhBMSwgMHhBQSwgMHhDQiwgMHg5QiwgMHg3OSwgMHhERCwgMHg0QiwgMHhFMSwgMHhEOSwgMHhE QSwgMHhBQywKKysgICAgMHhFNywgMHg0NywgMHgwOSwgMHhCMiwgMHgxMSwgMHg0QiwgMHg4QSwg MHhBQSwgMHgwNSwgMHg5RSwgMHg3NywgMHhENywKKysgICAgMHgzQSwgMHhCRCwgMHg1RSwgMHg1 MywgMHgwOSwgMHg0QSwgMHhFNiwgMHgwRiwgMHg1RSwgMHhGOSwgMHgxNCwgMHgyOCwKKysgICAg MHhBMCwgMHg5OSwgMHg3NCwgMHg2NCwgMHg3MCwgMHg0RSwgMHhGMiwgMHhFMywgMHhGQSwgMHhD NywgMHhGOCwgMHhDNSwKKysgICAgMHg2RSwgMHgyQiwgMHg3OSwgMHg5NiwgMHgwRCwgMHgwQywg MHhDOCwgMHgxMCwgMHgzNCwgMHg1MywgMHhEMiwgMHhBRiwKKysgICAgMHgxNywgMHgwRSwgMHhF MCwgMHhCRiwgMHg3OSwgMHhGNiwgMHgwNCwgMHg3MiwgMHgxMCwgMHhFMCwgMHhGNiwgMHhEMCwK KysgICAgMHhDRSwgMHg4QSwgMHg2RiwgMHhBMSwgMHg5NSwgMHg4OSwgMHhCRiwgMHg1OCwgMHg4 RiwgMHg0NiwgMHg1RiwgMHgwOSwKKysgICAgMHg5RiwgMHgwOSwgMHhDQSwgMHg4NCwgMHgxNSwg MHg4NSwgMHhFMCwgMHhFRCwgMHgwNCwgMHgyRCwgMHhGQiwgMHg3QywKKysgICAgMHgzNiwgMHgz NSwgMHgyMSwgMHgzMSwgMHhDMywgMHhGRCwgMHg5MiwgMHg0MiwgMHgxMSwgMHgzMCwgMHg3MSwg MHgxQiwKKysgICAgMHg2MCwgMHg4MywgMHgxOCwgMHg4OCwgMHhBMywgMHhGNSwgMHg1OSwgMHhD MworK307CisrCisraW50IEZJUFNfc2VsZnRlc3RfcnNhKCkKKyt7CisrICAgIGludCByZXQgPSAw OworKyAgICBSU0EgKmtleTsKKysgICAgRVZQX1BLRVkgKnBrID0gTlVMTDsKKysKKysgICAgaWYg KChrZXkgPSBSU0FfbmV3KCkpID09IE5VTEwpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgc2V0 cnNha2V5KGtleSk7CisrICAgIGlmICgocGsgPSBFVlBfUEtFWV9uZXcoKSkgPT0gTlVMTCkKKysg ICAgICAgIGdvdG8gZXJyOworKworKyAgICBFVlBfUEtFWV9hc3NpZ25fUlNBKHBrLCBrZXkpOwor KworKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9m KGthdF90YnMpIC0gMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JT QV9TSEExLCBzaXplb2Yoa2F0X1JTQV9TSEExKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRVZQX3NoYTEoKSwgRVZQX01EX0NUWF9GTEFHX1BBRF9QS0NTMSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJTQSBTSEExIFBLQ1MjMSIpKQorKyAgICAgICAg Z290byBlcnI7CisrICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJz LCBzaXplb2Yoa2F0X3RicykgLSAxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBrYXRfUlNBX1NIQTIyNCwgc2l6ZW9mKGthdF9SU0FfU0hBMjI0KSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRVZQX3NoYTIyNCgpLCBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BL Q1MxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUlNBIFNIQTIyNCBQS0NT IzEiKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVf dGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAga2F0X1JTQV9TSEEyNTYsIHNpemVvZihrYXRfUlNBX1NIQTI1Niks CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9zaGEyNTYoKSwgRVZQX01E X0NUWF9GTEFHX1BBRF9QS0NTMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlJTQSBTSEEyNTYgUEtDUyMxIikpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFmaXBz X3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9SU0FfU0hBMzg0LCBzaXplb2Yo a2F0X1JTQV9TSEEzODQpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBf c2hhMzg0KCksIEVWUF9NRF9DVFhfRkxBR19QQURfUEtDUzEsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJSU0EgU0hBMzg0IFBLQ1MjMSIpKQorKyAgICAgICAgZ290byBlcnI7 CisrICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yo a2F0X3RicykgLSAxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNB X1NIQTUxMiwgc2l6ZW9mKGthdF9SU0FfU0hBNTEyKSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRVZQX3NoYTUxMigpLCBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BLQ1MxLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUlNBIFNIQTUxMiBQS0NTIzEiKSkKKysg ICAgICAgIGdvdG8gZXJyOworKworKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChw aywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMpIC0gMSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga2F0X1JTQV9QU1NfU0hBMSwgc2l6ZW9mKGthdF9SU0FfUFNTX1NIQTEpLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVlBfc2hhMSgpLCBFVlBfTURfQ1RY X0ZMQUdfUEFEX1BTUywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJTQSBT SEExIFBTUyIpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghZmlwc19wa2V5X3NpZ25h dHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1BTU19TSEEyMjQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1BTU19TSEEyMjQpLCBFVlBfc2hh MjI0KCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxB R19QQURfUFNTLCAiUlNBIFNIQTIyNCBQU1MiKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBp ZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90YnMp IC0gMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9QU1NfU0hB MjU2LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2F0X1JTQV9Q U1NfU0hBMjU2KSwgRVZQX3NoYTI1NigpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BTUywgIlJTQSBTSEEyNTYgUFNTIikpCisrICAgICAg ICBnb3RvIGVycjsKKysgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90 YnMsIHNpemVvZihrYXRfdGJzKSAtIDEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGthdF9SU0FfUFNTX1NIQTM4NCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZW9mKGthdF9SU0FfUFNTX1NIQTM4NCksIEVWUF9zaGEzODQoKSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BBRF9QU1MsICJSU0EgU0hB Mzg0IFBTUyIpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghZmlwc19wa2V5X3NpZ25h dHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXplb2Yoa2F0X3RicykgLSAxLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBrYXRfUlNBX1BTU19TSEE1MTIsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNBX1BTU19TSEE1MTIpLCBFVlBfc2hh NTEyKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxB R19QQURfUFNTLCAiUlNBIFNIQTUxMiBQU1MiKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAg ICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9mKGthdF90 YnMpIC0gMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JTQV9YOTMx X1NIQTEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrYXRfUlNB X1g5MzFfU0hBMSksIEVWUF9zaGExKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSwgIlJTQSBTSEExIFg5MzEiKSkKKysgICAgICAg IGdvdG8gZXJyOworKyAgICAvKiBOQjogU0hBMjI0IG5vdCBzdXBwb3J0ZWQgaW4gWDkuMzEgKi8K KysgICAgaWYgKCFmaXBzX3BrZXlfc2lnbmF0dXJlX3Rlc3QocGssIGthdF90YnMsIHNpemVvZihr YXRfdGJzKSAtIDEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGthdF9SU0Ff WDkzMV9TSEEyNTYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihr YXRfUlNBX1g5MzFfU0hBMjU2KSwgRVZQX3NoYTI1NigpLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1g5MzEsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJSU0EgU0hBMjU2IFg5MzEiKSkKKysgICAgICAgIGdvdG8gZXJy OworKyAgICBpZiAoIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywga2F0X3Ricywgc2l6ZW9m KGthdF90YnMpIC0gMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2F0X1JT QV9YOTMxX1NIQTM4NCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m KGthdF9SU0FfWDkzMV9TSEEzODQpLCBFVlBfc2hhMzg0KCksCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVWUF9NRF9DVFhfRkxBR19QQURfWDkzMSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIlJTQSBTSEEzODQgWDkzMSIpKQorKyAgICAgICAgZ290byBl cnI7CisrICAgIGlmICghZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCBrYXRfdGJzLCBzaXpl b2Yoa2F0X3RicykgLSAxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXRf UlNBX1g5MzFfU0hBNTEyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2Yoa2F0X1JTQV9YOTMxX1NIQTUxMiksIEVWUF9zaGE1MTIoKSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BBRF9YOTMxLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiUlNBIFNIQTUxMiBYOTMxIikpCisrICAgICAgICBnb3Rv IGVycjsKKysKKysgICAgcmV0ID0gMTsKKysKKysgZXJyOgorKyAgICBpZiAocGspCisrICAgICAg ICBFVlBfUEtFWV9mcmVlKHBrKTsKKysgICAgZWxzZSBpZiAoa2V5KQorKyAgICAgICAgUlNBX2Zy ZWUoa2V5KTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrI2VuZGlmICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiBkZWYgT1BFTlNTTF9GSVBTICovCitkaWZmIC11cCBvcGVuc3NsLTEuMC4y Yy9jcnlwdG8vZmlwcy9maXBzX3JzYV94OTMxZy5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRv L2ZpcHMvZmlwc19yc2FfeDkzMWcuYworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2Zp cHNfcnNhX3g5MzFnLmMuZmlwcwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxMTI4NDA1MSArMDIwMAor KysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfcnNhX3g5MzFnLmMJMjAxNS0wNi0x NSAxNzozMDowMC4wMTEyODQwNTEgKzAyMDAKK0BAIC0wLDAgKzEsMjczIEBACisrLyogY3J5cHRv L3JzYS9yc2FfZ2VuLmMgKi8KKysvKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCBFcmljIFlvdW5n IChlYXlAY3J5cHRzb2Z0LmNvbSkKKysgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICog VGhpcyBwYWNrYWdlIGlzIGFuIFNTTCBpbXBsZW1lbnRhdGlvbiB3cml0dGVuCisrICogYnkgRXJp YyBZb3VuZyAoZWF5QGNyeXB0c29mdC5jb20pLgorKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiB3YXMg d3JpdHRlbiBzbyBhcyB0byBjb25mb3JtIHdpdGggTmV0c2NhcGVzIFNTTC4KKysgKiAKKysgKiBU aGlzIGxpYnJhcnkgaXMgZnJlZSBmb3IgY29tbWVyY2lhbCBhbmQgbm9uLWNvbW1lcmNpYWwgdXNl IGFzIGxvbmcgYXMKKysgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIGFoZWFyZWQgdG8u ICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKysgKiBhcHBseSB0byBhbGwgY29kZSBmb3VuZCBp biB0aGlzIGRpc3RyaWJ1dGlvbiwgYmUgaXQgdGhlIFJDNCwgUlNBLAorKyAqIGxoYXNoLCBERVMs IGV0Yy4sIGNvZGU7IG5vdCBqdXN0IHRoZSBTU0wgY29kZS4gIFRoZSBTU0wgZG9jdW1lbnRhdGlv bgorKyAqIGluY2x1ZGVkIHdpdGggdGhpcyBkaXN0cmlidXRpb24gaXMgY292ZXJlZCBieSB0aGUg c2FtZSBjb3B5cmlnaHQgdGVybXMKKysgKiBleGNlcHQgdGhhdCB0aGUgaG9sZGVyIGlzIFRpbSBI dWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKS4KKysgKiAKKysgKiBDb3B5cmlnaHQgcmVtYWlucyBF cmljIFlvdW5nJ3MsIGFuZCBhcyBzdWNoIGFueSBDb3B5cmlnaHQgbm90aWNlcyBpbgorKyAqIHRo ZSBjb2RlIGFyZSBub3QgdG8gYmUgcmVtb3ZlZC4KKysgKiBJZiB0aGlzIHBhY2thZ2UgaXMgdXNl ZCBpbiBhIHByb2R1Y3QsIEVyaWMgWW91bmcgc2hvdWxkIGJlIGdpdmVuIGF0dHJpYnV0aW9uCisr ICogYXMgdGhlIGF1dGhvciBvZiB0aGUgcGFydHMgb2YgdGhlIGxpYnJhcnkgdXNlZC4KKysgKiBU aGlzIGNhbiBiZSBpbiB0aGUgZm9ybSBvZiBhIHRleHR1YWwgbWVzc2FnZSBhdCBwcm9ncmFtIHN0 YXJ0dXAgb3IKKysgKiBpbiBkb2N1bWVudGF0aW9uIChvbmxpbmUgb3IgdGV4dHVhbCkgcHJvdmlk ZWQgd2l0aCB0aGUgcGFja2FnZS4KKysgKiAKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRp b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK KysgKiBhcmUgbWV0OgorKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgY29weXJpZ2h0CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyAqIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluIHRoZQorKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICogMy4gQWxsIGFkdmVydGlzaW5n IG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCisr ICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgorKyAqICAg ICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5 CisrICogICAgIEVyaWMgWW91bmcgKGVheUBjcnlwdHNvZnQuY29tKSIKKysgKiAgICBUaGUgd29y ZCAnY3J5cHRvZ3JhcGhpYycgY2FuIGJlIGxlZnQgb3V0IGlmIHRoZSByb3VpbmVzIGZyb20gdGhl IGxpYnJhcnkKKysgKiAgICBiZWluZyB1c2VkIGFyZSBub3QgY3J5cHRvZ3JhcGhpYyByZWxhdGVk IDotKS4KKysgKiA0LiBJZiB5b3UgaW5jbHVkZSBhbnkgV2luZG93cyBzcGVjaWZpYyBjb2RlIChv ciBhIGRlcml2YXRpdmUgdGhlcmVvZikgZnJvbSAKKysgKiAgICB0aGUgYXBwcyBkaXJlY3Rvcnkg KGFwcGxpY2F0aW9uIGNvZGUpIHlvdSBtdXN0IGluY2x1ZGUgYW4gYWNrbm93bGVkZ2VtZW50Ogor KyAqICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0gSHVk c29uICh0amhAY3J5cHRzb2Z0LmNvbSkiCisrICogCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W SURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQKKysgKiBBTlkgRVhQUkVTUyBPUiBJTVBM SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKysgKiBJ TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRQorKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg VEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisrICogRk9SIEFOWSBESVJFQ1Qs IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ QUwKKysgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F TlQgT0YgU1VCU1RJVFVURSBHT09EUworKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorKyAqIEhPV0VWRVIgQ0FV U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg U1RSSUNUCisrICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKysgKiBTVUNI IERBTUFHRS4KKysgKiAKKysgKiBUaGUgbGljZW5jZSBhbmQgZGlzdHJpYnV0aW9uIHRlcm1zIGZv ciBhbnkgcHVibGljYWxseSBhdmFpbGFibGUgdmVyc2lvbiBvcgorKyAqIGRlcml2YXRpdmUgb2Yg dGhpcyBjb2RlIGNhbm5vdCBiZSBjaGFuZ2VkLiAgaS5lLiB0aGlzIGNvZGUgY2Fubm90IHNpbXBs eSBiZQorKyAqIGNvcGllZCBhbmQgcHV0IHVuZGVyIGFub3RoZXIgZGlzdHJpYnV0aW9uIGxpY2Vu Y2UKKysgKiBbaW5jbHVkaW5nIHRoZSBHTlUgUHVibGljIExpY2VuY2UuXQorKyAqLworKworKyNp bmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8dGltZS5o PgorKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2JuLmg+Cisr I2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVk ZSA8b3BlbnNzbC9maXBzLmg+CisrCisrZXh0ZXJuIGludCBmaXBzX2NoZWNrX3JzYShSU0EgKnJz YSk7CisrI2VuZGlmCisrCisrLyogWDkuMzEgUlNBIGtleSBkZXJpdmF0aW9uIGFuZCBnZW5lcmF0 aW9uICovCisrCisraW50IFJTQV9YOTMxX2Rlcml2ZV9leChSU0EgKnJzYSwgQklHTlVNICpwMSwg QklHTlVNICpwMiwgQklHTlVNICpxMSwKKysgICAgICAgICAgICAgICAgICAgICAgIEJJR05VTSAq cTIsIGNvbnN0IEJJR05VTSAqWHAxLCBjb25zdCBCSUdOVU0gKlhwMiwKKysgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IEJJR05VTSAqWHAsIGNvbnN0IEJJR05VTSAqWHExLCBjb25zdCBCSUdO VU0gKlhxMiwKKysgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJJR05VTSAqWHEsIGNvbnN0 IEJJR05VTSAqZSwgQk5fR0VOQ0IgKmNiKQorK3sKKysgICAgQklHTlVNICpyMCA9IE5VTEwsICpy MSA9IE5VTEwsICpyMiA9IE5VTEwsICpyMyA9IE5VTEw7CisrICAgIEJOX0NUWCAqY3R4ID0gTlVM TCwgKmN0eDIgPSBOVUxMOworKworKyAgICBpZiAoIXJzYSkKKysgICAgICAgIGdvdG8gZXJyOwor KworKyAgICBjdHggPSBCTl9DVFhfbmV3KCk7CisrICAgIGlmICghY3R4KQorKyAgICAgICAgZ290 byBlcnI7CisrICAgIEJOX0NUWF9zdGFydChjdHgpOworKworKyAgICByMCA9IEJOX0NUWF9nZXQo Y3R4KTsKKysgICAgcjEgPSBCTl9DVFhfZ2V0KGN0eCk7CisrICAgIHIyID0gQk5fQ1RYX2dldChj dHgpOworKyAgICByMyA9IEJOX0NUWF9nZXQoY3R4KTsKKysKKysgICAgaWYgKHIzID09IE5VTEwp CisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKCFyc2EtPmUpIHsKKysgICAgICAgIHJzYS0+ ZSA9IEJOX2R1cChlKTsKKysgICAgICAgIGlmICghcnNhLT5lKQorKyAgICAgICAgICAgIGdvdG8g ZXJyOworKyAgICB9IGVsc2UKKysgICAgICAgIGUgPSByc2EtPmU7CisrCisrICAgIC8qIElmIG5v dCBhbGwgcGFyYW1ldGVycyBwcmVzZW50IG9ubHkgY2FsY3VsYXRlIHdoYXQgd2UgY2FuLgorKyAg ICAgKiBUaGlzIGFsbG93cyB0ZXN0IHByb2dyYW1zIHRvIG91dHB1dCBzZWxlY3RpdmUgcGFyYW1l dGVycy4KKysgICAgICovCisrCisrICAgIGlmIChYcCAmJiAhcnNhLT5wKSB7CisrICAgICAgICBy c2EtPnAgPSBCTl9uZXcoKTsKKysgICAgICAgIGlmICghcnNhLT5wKQorKyAgICAgICAgICAgIGdv dG8gZXJyOworKworKyAgICAgICAgaWYgKCFCTl9YOTMxX2Rlcml2ZV9wcmltZV9leChyc2EtPnAs IHAxLCBwMiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWHAsIFhwMSwg WHAyLCBlLCBjdHgsIGNiKSkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAg ICBpZiAoWHEgJiYgIXJzYS0+cSkgeworKyAgICAgICAgcnNhLT5xID0gQk5fbmV3KCk7CisrICAg ICAgICBpZiAoIXJzYS0+cSkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIGlmICgh Qk5fWDkzMV9kZXJpdmVfcHJpbWVfZXgocnNhLT5xLCBxMSwgcTIsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFhxLCBYcTEsIFhxMiwgZSwgY3R4LCBjYikpCisrICAgICAg ICAgICAgZ290byBlcnI7CisrICAgIH0KKysKKysgICAgaWYgKCFyc2EtPnAgfHwgIXJzYS0+cSkg eworKyAgICAgICAgQk5fQ1RYX2VuZChjdHgpOworKyAgICAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsK KysgICAgICAgIHJldHVybiAyOworKyAgICB9CisrCisrICAgIC8qIFNpbmNlIGJvdGggcHJpbWVz IGFyZSBzZXQgd2UgY2FuIG5vdyBjYWxjdWxhdGUgYWxsIHJlbWFpbmluZyAKKysgICAgICogY29t cG9uZW50cy4KKysgICAgICovCisrCisrICAgIC8qIGNhbGN1bGF0ZSBuICovCisrICAgIHJzYS0+ biA9IEJOX25ldygpOworKyAgICBpZiAocnNhLT5uID09IE5VTEwpCisrICAgICAgICBnb3RvIGVy cjsKKysgICAgaWYgKCFCTl9tdWwocnNhLT5uLCByc2EtPnAsIHJzYS0+cSwgY3R4KSkKKysgICAg ICAgIGdvdG8gZXJyOworKworKyAgICAvKiBjYWxjdWxhdGUgZCAqLworKyAgICBpZiAoIUJOX3N1 YihyMSwgcnNhLT5wLCBCTl92YWx1ZV9vbmUoKSkpCisrICAgICAgICBnb3RvIGVycjsgICAgICAg ICAgICAgICAvKiBwLTEgKi8KKysgICAgaWYgKCFCTl9zdWIocjIsIHJzYS0+cSwgQk5fdmFsdWVf b25lKCkpKQorKyAgICAgICAgZ290byBlcnI7ICAgICAgICAgICAgICAgLyogcS0xICovCisrICAg IGlmICghQk5fbXVsKHIwLCByMSwgcjIsIGN0eCkpCisrICAgICAgICBnb3RvIGVycjsgICAgICAg ICAgICAgICAvKiAocC0xKShxLTEpICovCisrCisrICAgIGlmICghQk5fZ2NkKHIzLCByMSwgcjIs IGN0eCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgaWYgKCFCTl9kaXYocjAsIE5VTEws IHIwLCByMywgY3R4KSkKKysgICAgICAgIGdvdG8gZXJyOyAgICAgICAgICAgICAgIC8qIExDTSgo cC0xKShxLTEpKSAqLworKworKyAgICBjdHgyID0gQk5fQ1RYX25ldygpOworKyAgICBpZiAoIWN0 eDIpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgcnNhLT5kID0gQk5fbW9kX2ludmVyc2Uo TlVMTCwgcnNhLT5lLCByMCwgY3R4Mik7IC8qIGQgKi8KKysgICAgaWYgKHJzYS0+ZCA9PSBOVUxM KQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIC8qIGNhbGN1bGF0ZSBkIG1vZCAocC0xKSAq LworKyAgICByc2EtPmRtcDEgPSBCTl9uZXcoKTsKKysgICAgaWYgKHJzYS0+ZG1wMSA9PSBOVUxM KQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmICghQk5fbW9kKHJzYS0+ZG1wMSwgcnNhLT5k LCByMSwgY3R4KSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICAvKiBjYWxjdWxhdGUgZCBt b2QgKHEtMSkgKi8KKysgICAgcnNhLT5kbXExID0gQk5fbmV3KCk7CisrICAgIGlmIChyc2EtPmRt cTEgPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBpZiAoIUJOX21vZChyc2EtPmRt cTEsIHJzYS0+ZCwgcjIsIGN0eCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgLyogY2Fs Y3VsYXRlIGludmVyc2Ugb2YgcSBtb2QgcCAqLworKyAgICByc2EtPmlxbXAgPSBCTl9tb2RfaW52 ZXJzZShOVUxMLCByc2EtPnEsIHJzYS0+cCwgY3R4Mik7CisrCisrIGVycjoKKysgICAgaWYgKGN0 eCkgeworKyAgICAgICAgQk5fQ1RYX2VuZChjdHgpOworKyAgICAgICAgQk5fQ1RYX2ZyZWUoY3R4 KTsKKysgICAgfQorKyAgICBpZiAoY3R4MikKKysgICAgICAgIEJOX0NUWF9mcmVlKGN0eDIpOwor KyAgICAvKiBJZiB0aGlzIGlzIHNldCBhbGwgY2FsbHMgc3VjY2Vzc2Z1bCAqLworKyAgICBpZiAo cnNhICYmIHJzYS0+aXFtcCAhPSBOVUxMKQorKyAgICAgICAgcmV0dXJuIDE7CisrCisrICAgIHJl dHVybiAwOworKworK30KKysKKytpbnQgUlNBX1g5MzFfZ2VuZXJhdGVfa2V5X2V4KFJTQSAqcnNh LCBpbnQgYml0cywgY29uc3QgQklHTlVNICplLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQk5fR0VOQ0IgKmNiKQorK3sKKysgICAgaW50IG9rID0gMDsKKysgICAgQklHTlVNICpYcCA9 IE5VTEwsICpYcSA9IE5VTEw7CisrICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKKysKKysjaWZkZWYg T1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKHJzYS0+ZmxhZ3MgJiBSU0Ff RkxBR19OT05fRklQU19BTExPVykgJiYKKysgICAgICAgIChiaXRzIDwgT1BFTlNTTF9SU0FfRklQ U19NSU5fTU9EVUxVU19CSVRTKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX1g5MzFf R0VORVJBVEVfS0VZX0VYLCBGSVBTX1JfS0VZX1RPT19TSE9SVCk7CisrICAgICAgICByZXR1cm4g MDsKKysgICAgfQorKworKyAgICBpZiAoYml0cyAmIDB4ZmYpIHsKKysgICAgICAgIEZJUFNlcnIo RklQU19GX1JTQV9YOTMxX0dFTkVSQVRFX0tFWV9FWCwgRklQU19SX0lOVkFMSURfS0VZX0xFTkdU SCk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICBpZiAoRklQU19zZWxmdGVz dF9mYWlsZWQoKSkgeworKyAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX1g5MzFfR0VORVJBVEVf S0VZX0VYLCBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAgcmV0dXJuIDA7 CisrICAgIH0KKysjZW5kaWYKKysKKysgICAgY3R4ID0gQk5fQ1RYX25ldygpOworKyAgICBpZiAo IWN0eCkKKysgICAgICAgIGdvdG8gZXJyb3I7CisrCisrICAgIEJOX0NUWF9zdGFydChjdHgpOwor KyAgICBYcCA9IEJOX0NUWF9nZXQoY3R4KTsKKysgICAgWHEgPSBCTl9DVFhfZ2V0KGN0eCk7Cisr ICAgIGlmICghQk5fWDkzMV9nZW5lcmF0ZV9YcHEoWHAsIFhxLCBiaXRzLCBjdHgpKQorKyAgICAg ICAgZ290byBlcnJvcjsKKysKKysgICAgcnNhLT5wID0gQk5fbmV3KCk7CisrICAgIHJzYS0+cSA9 IEJOX25ldygpOworKyAgICBpZiAoIXJzYS0+cCB8fCAhcnNhLT5xKQorKyAgICAgICAgZ290byBl cnJvcjsKKysKKysgICAgLyogR2VuZXJhdGUgdHdvIHByaW1lcyBmcm9tIFhwLCBYcSAqLworKwor KyAgICBpZiAoIUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWVfZXgocnNhLT5wLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMLCBYcCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUsIGN0 eCwgY2IpKQorKyAgICAgICAgZ290byBlcnJvcjsKKysKKysgICAgaWYgKCFCTl9YOTMxX2dlbmVy YXRlX3ByaW1lX2V4KHJzYS0+cSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgWHEsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLCBjdHgsIGNiKSkKKysgICAgICAgIGdvdG8g ZXJyb3I7CisrCisrICAgIC8qIFNpbmNlIHJzYS0+cCBhbmQgcnNhLT5xIGFyZSB2YWxpZCB0aGlz IGNhbGwgd2lsbCBqdXN0IGRlcml2ZQorKyAgICAgKiByZW1haW5pbmcgUlNBIGNvbXBvbmVudHMu CisrICAgICAqLworKworKyAgICBpZiAoIVJTQV9YOTMxX2Rlcml2ZV9leChyc2EsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIGUsIGNiKSkKKysgICAgICAgIGdvdG8gZXJyb3I7Cisr CisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoIWZpcHNfY2hlY2tfcnNhKHJzYSkpCisr ICAgICAgICBnb3RvIGVycm9yOworKyNlbmRpZgorKworKyAgICBvayA9IDE7CisrCisrIGVycm9y OgorKyAgICBpZiAoY3R4KSB7CisrICAgICAgICBCTl9DVFhfZW5kKGN0eCk7CisrICAgICAgICBC Tl9DVFhfZnJlZShjdHgpOworKyAgICB9CisrCisrICAgIGlmIChvaykKKysgICAgICAgIHJldHVy biAxOworKworKyAgICByZXR1cm4gMDsKKysKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9j cnlwdG8vZmlwcy9maXBzX3NoYV9zZWxmdGVzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRv L2ZpcHMvZmlwc19zaGFfc2VsZnRlc3QuYworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBz L2ZpcHNfc2hhX3NlbGZ0ZXN0LmMuZmlwcwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxMTI4NDA1MSAr MDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfc2hhX3NlbGZ0ZXN0LmMJ MjAxNS0wNi0xNSAxNzozMDowMC4wMTEyODQwNTEgKzAyMDAKK0BAIC0wLDAgKzEsMTQ1IEBACisr LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMDMgVGhlIE9wZW5TU0wgUHJvamVj dC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmlj YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnMKKysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorKyAqCisr ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrICogICAgZGlzdHJpYnV0 aW9uLgorKyAqCisrICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZl YXR1cmVzIG9yIHVzZSBvZiB0aGlzCisrICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBm b2xsb3dpbmcgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBz b2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAgIGZvciB1c2Ug aW4gdGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKysgKgor KyAqIDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIg bXVzdCBub3QgYmUgdXNlZCB0bworKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CisrICogICAgcHJpb3Igd3JpdHRlbiBw ZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAorKyAqICAg IG9wZW5zc2wtY29yZUBvcGVuc3NsLm9yZy4KKysgKgorKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgorKyAqICAgIG5v ciBtYXkgIk9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0 ZW4KKysgKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCisrICoKKysgKiA2 LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUg Zm9sbG93aW5nCisrICogICAgYWNrbm93bGVkZ21lbnQ6CisrICogICAgIlRoaXMgcHJvZHVjdCBp bmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAorKyAqICAg IGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8p IgorKyAqCisrICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9K RUNUIGBgQVMgSVMnJyBBTkQgQU5ZCisrICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElF UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorKyAqIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKyAq IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQ Uk9KRUNUIE9SCisrICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs IElORElSRUNULCBJTkNJREVOVEFMLAorKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAorKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworKyAqIExPU1MgT0YgVVNF LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisrICogSE9XRVZF UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULAorKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF IE9SIE9USEVSV0lTRSkKKysgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisrICogT0YgVEhFIFBPU1NJQklMSVRZIE9G IFNVQ0ggREFNQUdFLgorKyAqCisrICovCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNs dWRlIDxvcGVuc3NsL2Vyci5oPgorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysjIGluY2x1ZGUgPG9w ZW5zc2wvZmlwcy5oPgorKyNlbmRpZgorKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKyNpbmNs dWRlIDxvcGVuc3NsL3NoYS5oPgorKworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKytzdGF0aWMgY29u c3QgY2hhciB0ZXN0W11bNjBdID0geworKyAgICAiIiwKKysgICAgImFiYyIsCisrICAgICJhYmNk YmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xqa2xta2xtbmxtbm9tbm9wbm9wcSIKKyt9 OworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHJldFtdW1NIQV9ESUdFU1RfTEVOR1RI XSA9IHsKKysgICAgezB4ZGEsIDB4MzksIDB4YTMsIDB4ZWUsIDB4NWUsIDB4NmIsIDB4NGIsIDB4 MGQsIDB4MzIsIDB4NTUsCisrICAgICAweGJmLCAweGVmLCAweDk1LCAweDYwLCAweDE4LCAweDkw LCAweGFmLCAweGQ4LCAweDA3LCAweDA5fSwKKysgICAgezB4YTksIDB4OTksIDB4M2UsIDB4MzYs IDB4NDcsIDB4MDYsIDB4ODEsIDB4NmEsIDB4YmEsIDB4M2UsCisrICAgICAweDI1LCAweDcxLCAw eDc4LCAweDUwLCAweGMyLCAweDZjLCAweDljLCAweGQwLCAweGQ4LCAweDlkfSwKKysgICAgezB4 ODQsIDB4OTgsIDB4M2UsIDB4NDQsIDB4MWMsIDB4M2IsIDB4ZDIsIDB4NmUsIDB4YmEsIDB4YWUs CisrICAgICAweDRhLCAweGExLCAweGY5LCAweDUxLCAweDI5LCAweGU1LCAweGU1LCAweDQ2LCAw eDcwLCAweGYxfSwKKyt9OworKworK3N0YXRpYyBpbnQgY29ycnVwdF9zaGE7CisrCisrdm9pZCBG SVBTX2NvcnJ1cHRfc2hhMSgpCisreworKyAgICBjb3JydXB0X3NoYSA9IDE7CisrfQorKworK2lu dCBGSVBTX3NlbGZ0ZXN0X3NoYTEoKQorK3sKKysgICAgaW50IG47CisrCisrICAgIGZvciAobiA9 IDA7IG4gPCBzaXplb2YodGVzdCkgLyBzaXplb2YodGVzdFswXSk7ICsrbikgeworKyAgICAgICAg dW5zaWduZWQgY2hhciBtZFtTSEFfRElHRVNUX0xFTkdUSF07CisrCisrICAgICAgICBFVlBfRGln ZXN0KHRlc3Rbbl0sIHN0cmxlbih0ZXN0W25dKSArIGNvcnJ1cHRfc2hhLCBtZCwgTlVMTCwKKysg ICAgICAgICAgICAgICAgICAgRVZQX3NoYTEoKSwgTlVMTCk7CisrICAgICAgICBpZiAobWVtY21w KG1kLCByZXRbbl0sIHNpemVvZiBtZCkpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9G SVBTX1NFTEZURVNUX1NIQTEsIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAgICAg IHJldHVybiAwOworKyAgICAgICAgfQorKyAgICB9CisrICAgIHJldHVybiAxOworK30KKysKKytz dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBtc2dfc2hhMjU2W10gPQorKyAgICB7IDB4ZmEsIDB4 NDgsIDB4NTksIDB4MmEsIDB4ZTEsIDB4YWUsIDB4MWYsIDB4MzAsCisrICAgIDB4ZmMKKyt9Owor KworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGRpZ19zaGEyNTZbXSA9CisrICAgIHsgMHhm NywgMHgyNiwgMHhkOCwgMHg5OCwgMHg0NywgMHg5MSwgMHg2OCwgMHg1YiwKKysgICAgMHg5ZSwg MHgzOSwgMHhiMiwgMHg1OCwgMHhiYiwgMHg3NSwgMHhiZiwgMHgwMSwKKysgICAgMHgxNywgMHgw YywgMHg4NCwgMHgwMCwgMHgwMSwgMHg3YSwgMHg5NCwgMHg4MywKKysgICAgMHhmMywgMHgwYiwg MHgxNSwgMHg4NCwgMHg0YiwgMHg2OSwgMHg4OCwgMHg4YQorK307CisrCisrc3RhdGljIGNvbnN0 IHVuc2lnbmVkIGNoYXIgbXNnX3NoYTUxMltdID0KKysgICAgeyAweDM3LCAweGQxLCAweDM1LCAw eDlkLCAweDE4LCAweDQxLCAweGU5LCAweGI3LAorKyAgICAweDZkLCAweDlhLCAweDEzLCAweGRh LCAweDVmLCAweGYzLCAweGJkCisrfTsKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBk aWdfc2hhNTEyW10gPQorKyAgICB7IDB4MTEsIDB4MTMsIDB4YzQsIDB4MTksIDB4ZWQsIDB4MmIs IDB4MWQsIDB4MTYsCisrICAgIDB4MTEsIDB4ZWIsIDB4OWIsIDB4YmUsIDB4ZjAsIDB4N2YsIDB4 Y2YsIDB4NDQsCisrICAgIDB4OGIsIDB4ZDcsIDB4NTcsIDB4YmQsIDB4OGQsIDB4YTksIDB4MjUs IDB4YjAsCisrICAgIDB4NDcsIDB4MjUsIDB4ZDYsIDB4NmMsIDB4OWEsIDB4NTQsIDB4N2YsIDB4 OGYsCisrICAgIDB4MGIsIDB4NTMsIDB4MWEsIDB4MTAsIDB4NjgsIDB4MzIsIDB4MDMsIDB4Mzgs CisrICAgIDB4ODIsIDB4YzQsIDB4ODcsIDB4YzQsIDB4ZWEsIDB4MGUsIDB4ZDEsIDB4MDQsCisr ICAgIDB4YTksIDB4OTgsIDB4YzEsIDB4MDUsIDB4YTMsIDB4ZjMsIDB4ZjgsIDB4YjEsCisrICAg IDB4YWYsIDB4YmMsIDB4ZDksIDB4NzgsIDB4N2UsIDB4ZWUsIDB4M2QsIDB4NDMKKyt9OworKwor K2ludCBGSVBTX3NlbGZ0ZXN0X3NoYTIodm9pZCkKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIgbWRb U0hBNTEyX0RJR0VTVF9MRU5HVEhdOworKworKyAgICBFVlBfRGlnZXN0KG1zZ19zaGEyNTYsIHNp emVvZihtc2dfc2hhMjU2KSwgbWQsIE5VTEwsIEVWUF9zaGEyNTYoKSwgTlVMTCk7CisrICAgIGlm IChtZW1jbXAoZGlnX3NoYTI1NiwgbWQsIHNpemVvZihkaWdfc2hhMjU2KSkpIHsKKysgICAgICAg IEZJUFNlcnIoRklQU19GX0ZJUFNfTU9ERV9TRVQsIEZJUFNfUl9TRUxGVEVTVF9GQUlMRUQpOwor KyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgICAgRVZQX0RpZ2VzdChtc2dfc2hhNTEy LCBzaXplb2YobXNnX3NoYTUxMiksIG1kLCBOVUxMLCBFVlBfc2hhNTEyKCksIE5VTEwpOworKyAg ICBpZiAobWVtY21wKGRpZ19zaGE1MTIsIG1kLCBzaXplb2YoZGlnX3NoYTUxMikpKSB7CisrICAg ICAgICBGSVBTZXJyKEZJUFNfRl9GSVBTX01PREVfU0VULCBGSVBTX1JfU0VMRlRFU1RfRkFJTEVE KTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICAgIHJldHVybiAxOworK30KKysK KysjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfc3RhbmRh bG9uZV9obWFjLmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9maXBzX3N0YW5kYWxv bmVfaG1hYy5jCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19zdGFuZGFsb25l X2htYWMuYy5maXBzCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDExMjg0MDUxICswMjAwCisrKysgb3Bl bnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlwc19zdGFuZGFsb25lX2htYWMuYwkyMDE1LTA2LTE1 IDE3OjMwOjAwLjAxMTI4NDA1MSArMDIwMAorQEAgLTAsMCArMSwyNjggQEAKKysvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorKyAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlblNTTCBQcm9qZWN0LiAgQWxsIHJp Z2h0cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyAqIG1vZGlmaWNhdGlvbiwgYXJl IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKyAqIGFy ZSBtZXQ6CisrICoKKysgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisrICoKKysgKiAyLiBSZWRp c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly aWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoK KysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3Ig dXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBh Y2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRl dmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0aGUgT3Bl blNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8pIgorKyAqCisrICogNC4gVGhl IG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0IG5vdCBi ZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u IEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgb3BlbnNzbC1j b3JlQG9wZW5zc2wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAiT3Bl blNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAqICAg IHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlzdHJp YnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dpbmcK KysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNv ZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBp biB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisrICoKKysg KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJ UycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9TRSBB UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1QgT1IK KysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs IElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB TUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisrICog U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B R0UuCisrICoKKysgKi8KKysKKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkbGli Lmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25m Lmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvc2hhLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5o PgorKworKyNpZm5kZWYgRklQU0NBTklTVEVSX08KKytpbnQgRklQU19zZWxmdGVzdF9mYWlsZWQo KQorK3sKKysgICAgcmV0dXJuIDA7CisrfQorKworK3ZvaWQgRklQU19zZWxmdGVzdF9jaGVjaygp CisreworK30KKysjZW5kaWYKKysKKysjaWZkZWYgT1BFTlNTTF9GSVBTCisraW50IGJuX211bF9t b250X2ZwdTY0KEJOX1VMT05HICpycCwgY29uc3QgQk5fVUxPTkcgKmFwLCBjb25zdCBCTl9VTE9O RyAqYnAsCisrICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJOX1VMT05HICpucCwgY29uc3Qg Qk5fVUxPTkcgKm4wLCBpbnQgbnVtKQorK3sKKysgICAgcmV0dXJuIDA7CisrfTsKKysKKytpbnQg Ym5fbXVsX21vbnRfaW50KEJOX1VMT05HICpycCwgY29uc3QgQk5fVUxPTkcgKmFwLCBjb25zdCBC Tl9VTE9ORyAqYnAsCisrICAgICAgICAgICAgICAgICAgICBjb25zdCBCTl9VTE9ORyAqbnAsIGNv bnN0IEJOX1VMT05HICpuMCwgaW50IG51bSkKKyt7CisrICAgIHJldHVybiAwOworK307CisrCisr IyBpZiAgICAgZGVmaW5lZChfX2kzODYpICAgfHwgZGVmaW5lZChfX2kzODZfXykgICB8fCBkZWZp bmVkKF9NX0lYODYpIHx8IFwKKysgICAgICAgIGRlZmluZWQoX19JTlRFTF9fKSB8fCBcCisrICAg ICAgICBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IFwKKysgICAg ICAgIGRlZmluZWQoX01fQU1ENjQpIHx8IGRlZmluZWQoX01fWDY0KQorKworK3Vuc2lnbmVkIGlu dCBPUEVOU1NMX2lhMzJjYXBfUFs0XTsKKyt1bnNpZ25lZCBsb25nICpPUEVOU1NMX2lhMzJjYXBf bG9jKHZvaWQpCisreworKyAgICBpZiAoc2l6ZW9mKGxvbmcpID09IDQpCisrICAgICAgICAvKgor KyAgICAgICAgICogSWYgMzItYml0IGFwcGxpY2F0aW9uIHB1bGxzIGFkZHJlc3Mgb2YgT1BFTlNT TF9pYTMyY2FwX1BbMF0KKysgICAgICAgICAqIGNsZWFyIHNlY29uZCBlbGVtZW50IHRvIG1haW50 YWluIHRoZSBpbGx1c2lvbiB0aGF0IHZlY3RvcgorKyAgICAgICAgICogaXMgMzItYml0LgorKyAg ICAgICAgICovCisrICAgICAgICBPUEVOU1NMX2lhMzJjYXBfUFsxXSA9IDA7CisrCisrICAgIE9Q RU5TU0xfaWEzMmNhcF9QWzJdID0gMDsKKysKKysgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nICop T1BFTlNTTF9pYTMyY2FwX1A7CisrfQorKworKyMgIGlmIGRlZmluZWQoT1BFTlNTTF9DUFVJRF9P QkopICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQVNNKSAmJiAhZGVmaW5lZChJMzg2X09OTFkpCisr IyAgIGRlZmluZSBPUEVOU1NMX0NQVUlEX1NFVFVQCisrIyAgIGlmIGRlZmluZWQoX1dJTjMyKQor K3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBJQTMyQ0FQOworKyMgICBlbHNlCisrdHlwZWRlZiB1 bnNpZ25lZCBsb25nIGxvbmcgSUEzMkNBUDsKKysjICAgZW5kaWYKKyt2b2lkIE9QRU5TU0xfY3B1 aWRfc2V0dXAodm9pZCkKKyt7CisrICAgIHN0YXRpYyBpbnQgdHJpZ2dlciA9IDA7CisrICAgIElB MzJDQVAgT1BFTlNTTF9pYTMyX2NwdWlkKHVuc2lnbmVkIGludCAqKTsKKysgICAgSUEzMkNBUCB2 ZWM7CisrICAgIGNoYXIgKmVudjsKKysKKysgICAgaWYgKHRyaWdnZXIpCisrICAgICAgICByZXR1 cm47CisrCisrICAgIHRyaWdnZXIgPSAxOworKyAgICBpZiAoKGVudiA9IGdldGVudigiT1BFTlNT TF9pYTMyY2FwIikpKSB7CisrICAgICAgICBpbnQgb2ZmID0gKGVudlswXSA9PSAnficpID8gMSA6 IDA7CisrIyAgIGlmIGRlZmluZWQoX1dJTjMyKQorKyAgICAgICAgaWYgKCFzc2NhbmYoZW52ICsg b2ZmLCAiJUk2NGkiLCAmdmVjKSkKKysgICAgICAgICAgICB2ZWMgPSBzdHJ0b3VsKGVudiArIG9m ZiwgTlVMTCwgMCk7CisrIyAgIGVsc2UKKysgICAgICAgIGlmICghc3NjYW5mKGVudiArIG9mZiwg IiVsbGkiLCAobG9uZyBsb25nICopJnZlYykpCisrICAgICAgICAgICAgdmVjID0gc3RydG91bChl bnYgKyBvZmYsIE5VTEwsIDApOworKyMgICBlbmRpZgorKyAgICAgICAgaWYgKG9mZikKKysgICAg ICAgICAgICB2ZWMgPSBPUEVOU1NMX2lhMzJfY3B1aWQoT1BFTlNTTF9pYTMyY2FwX1ApICYgfnZl YzsKKysgICAgICAgIGVsc2UgaWYgKGVudlswXSA9PSAnOicpCisrICAgICAgICAgICAgdmVjID0g T1BFTlNTTF9pYTMyX2NwdWlkKE9QRU5TU0xfaWEzMmNhcF9QKTsKKysKKysgICAgICAgIE9QRU5T U0xfaWEzMmNhcF9QWzJdID0gMDsKKysgICAgICAgIGlmICgoZW52ID0gc3RyY2hyKGVudiwgJzon KSkpIHsKKysgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjeDsKKysgICAgICAgICAgICBlbnYr KzsKKysgICAgICAgICAgICBvZmYgPSAoZW52WzBdID09ICd+JykgPyAxIDogMDsKKysgICAgICAg ICAgICB2ZWN4ID0gc3RydG91bChlbnYgKyBvZmYsIE5VTEwsIDApOworKyAgICAgICAgICAgIGlm IChvZmYpCisrICAgICAgICAgICAgICAgIE9QRU5TU0xfaWEzMmNhcF9QWzJdICY9IH52ZWN4Owor KyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgT1BFTlNTTF9pYTMyY2FwX1BbMl0g PSB2ZWN4OworKyAgICAgICAgfQorKyAgICB9IGVsc2UKKysgICAgICAgIHZlYyA9IE9QRU5TU0xf aWEzMl9jcHVpZChPUEVOU1NMX2lhMzJjYXBfUCk7CisrCisrICAgIC8qCisrICAgICAqIHwoMTw8 MTApIHNldHMgYSByZXNlcnZlZCBiaXQgdG8gc2lnbmFsIHRoYXQgdmFyaWFibGUKKysgICAgICog d2FzIGluaXRpYWxpemVkIGFscmVhZHkuLi4gVGhpcyBpcyB0byBhdm9pZCBpbnRlcmZlcmVuY2UK KysgICAgICogd2l0aCBjcHVpZCBzbmlwcGV0cyBpbiBFTEYgLmluaXQgc2VnbWVudC4KKysgICAg ICovCisrICAgIE9QRU5TU0xfaWEzMmNhcF9QWzBdID0gKHVuc2lnbmVkIGludCl2ZWMgfCAoMSA8 PCAxMCk7CisrICAgIE9QRU5TU0xfaWEzMmNhcF9QWzFdID0gKHVuc2lnbmVkIGludCkodmVjID4+ IDMyKTsKKyt9CisrIyAgZWxzZQorK3Vuc2lnbmVkIGludCBPUEVOU1NMX2lhMzJjYXBfUFs0XTsK KysjICBlbmRpZgorKworKyMgZWxzZQorK3Vuc2lnbmVkIGxvbmcgKk9QRU5TU0xfaWEzMmNhcF9s b2Modm9pZCkKKyt7CisrICAgIHJldHVybiBOVUxMOworK30KKysjIGVuZGlmCisraW50IE9QRU5T U0xfTk9OUElDX3JlbG9jYXRlZCA9IDA7CisrIyBpZiAhZGVmaW5lZChPUEVOU1NMX0NQVUlEX1NF VFVQKSAmJiAhZGVmaW5lZChPUEVOU1NMX0NQVUlEX09CSikKKyt2b2lkIE9QRU5TU0xfY3B1aWRf c2V0dXAodm9pZCkKKyt7CisrfQorKyMgZW5kaWYKKysKKytzdGF0aWMgdm9pZCBobWFjX2luaXQo U0hBMjU2X0NUWCAqbWRfY3R4LCBTSEEyNTZfQ1RYICpvX2N0eCwgY29uc3QgY2hhciAqa2V5KQor K3sKKysgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihrZXkpOworKyAgICBpbnQgaTsKKysgICAgdW5z aWduZWQgY2hhciBrZXltZFtITUFDX01BWF9NRF9DQkxPQ0tdOworKyAgICB1bnNpZ25lZCBjaGFy IHBhZFtITUFDX01BWF9NRF9DQkxPQ0tdOworKworKyAgICBpZiAobGVuID4gU0hBX0NCTE9DSykg eworKyAgICAgICAgU0hBMjU2X0luaXQobWRfY3R4KTsKKysgICAgICAgIFNIQTI1Nl9VcGRhdGUo bWRfY3R4LCBrZXksIGxlbik7CisrICAgICAgICBTSEEyNTZfRmluYWwoa2V5bWQsIG1kX2N0eCk7 CisrICAgICAgICBsZW4gPSBTSEEyNTZfRElHRVNUX0xFTkdUSDsKKysgICAgfSBlbHNlCisrICAg ICAgICBtZW1jcHkoa2V5bWQsIGtleSwgbGVuKTsKKysgICAgbWVtc2V0KCZrZXltZFtsZW5dLCAn XDAnLCBITUFDX01BWF9NRF9DQkxPQ0sgLSBsZW4pOworKworKyAgICBmb3IgKGkgPSAwOyBpIDwg SE1BQ19NQVhfTURfQ0JMT0NLOyBpKyspCisrICAgICAgICBwYWRbaV0gPSAweDM2IF4ga2V5bWRb aV07CisrICAgIFNIQTI1Nl9Jbml0KG1kX2N0eCk7CisrICAgIFNIQTI1Nl9VcGRhdGUobWRfY3R4 LCBwYWQsIFNIQTI1Nl9DQkxPQ0spOworKworKyAgICBmb3IgKGkgPSAwOyBpIDwgSE1BQ19NQVhf TURfQ0JMT0NLOyBpKyspCisrICAgICAgICBwYWRbaV0gPSAweDVjIF4ga2V5bWRbaV07CisrICAg IFNIQTI1Nl9Jbml0KG9fY3R4KTsKKysgICAgU0hBMjU2X1VwZGF0ZShvX2N0eCwgcGFkLCBTSEEy NTZfQ0JMT0NLKTsKKyt9CisrCisrc3RhdGljIHZvaWQgaG1hY19maW5hbCh1bnNpZ25lZCBjaGFy ICptZCwgU0hBMjU2X0NUWCAqbWRfY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgU0hBMjU2 X0NUWCAqb19jdHgpCisreworKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZltTSEEyNTZfRElHRVNUX0xF TkdUSF07CisrCisrICAgIFNIQTI1Nl9GaW5hbChidWYsIG1kX2N0eCk7CisrICAgIFNIQTI1Nl9V cGRhdGUob19jdHgsIGJ1Ziwgc2l6ZW9mIGJ1Zik7CisrICAgIFNIQTI1Nl9GaW5hbChtZCwgb19j dHgpOworK30KKysKKysjZW5kaWYKKysKKytpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CisreworKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgc3RhdGljIGNoYXIga2V5W10gPSAib3Ji b0RlSklUSVRlanNpcnBBRE9OaXZpcnBVa3ZhclAiOworKyAgICBpbnQgbiwgYmluYXJ5ID0gMDsK KysKKysgICAgaWYgKGFyZ2MgPCAyKSB7CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIFs8 ZmlsZT5dK1xuIiwgYXJndlswXSk7CisrICAgICAgICBleGl0KDEpOworKyAgICB9CisrCisrICAg IG4gPSAxOworKyAgICBpZiAoIXN0cmNtcChhcmd2W25dLCAiLWJpbmFyeSIpKSB7CisrICAgICAg ICBuKys7CisrICAgICAgICBiaW5hcnkgPSAxOyAgICAgICAgICAgICAvKiBlbWl0IGJpbmFyeSBm aW5nZXJwcmludC4uLiAqLworKyAgICB9CisrCisrICAgIGZvciAoOyBuIDwgYXJnYzsgKytuKSB7 CisrICAgICAgICBGSUxFICpmID0gZm9wZW4oYXJndltuXSwgInJiIik7CisrICAgICAgICBTSEEy NTZfQ1RYIG1kX2N0eCwgb19jdHg7CisrICAgICAgICB1bnNpZ25lZCBjaGFyIG1kW1NIQTI1Nl9E SUdFU1RfTEVOR1RIXTsKKysgICAgICAgIGludCBpOworKworKyAgICAgICAgaWYgKCFmKSB7Cisr ICAgICAgICAgICAgcGVycm9yKGFyZ3Zbbl0pOworKyAgICAgICAgICAgIGV4aXQoMik7CisrICAg ICAgICB9CisrCisrICAgICAgICBobWFjX2luaXQoJm1kX2N0eCwgJm9fY3R4LCBrZXkpOworKyAg ICAgICAgZm9yICg7OykgeworKyAgICAgICAgICAgIGNoYXIgYnVmWzEwMjRdOworKyAgICAgICAg ICAgIHNpemVfdCBsID0gZnJlYWQoYnVmLCAxLCBzaXplb2YgYnVmLCBmKTsKKysKKysgICAgICAg ICAgICBpZiAobCA9PSAwKSB7CisrICAgICAgICAgICAgICAgIGlmIChmZXJyb3IoZikpIHsKKysg ICAgICAgICAgICAgICAgICAgIHBlcnJvcihhcmd2W25dKTsKKysgICAgICAgICAgICAgICAgICAg IGV4aXQoMyk7CisrICAgICAgICAgICAgICAgIH0gZWxzZQorKyAgICAgICAgICAgICAgICAgICAg YnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIFNIQTI1Nl9VcGRhdGUoJm1kX2N0 eCwgYnVmLCBsKTsKKysgICAgICAgIH0KKysgICAgICAgIGhtYWNfZmluYWwobWQsICZtZF9jdHgs ICZvX2N0eCk7CisrCisrICAgICAgICBpZiAoYmluYXJ5KSB7CisrICAgICAgICAgICAgZndyaXRl KG1kLCBTSEEyNTZfRElHRVNUX0xFTkdUSCwgMSwgc3Rkb3V0KTsKKysgICAgICAgICAgICBicmVh azsgICAgICAgICAgICAgIC8qIC4uLiBmb3Igc2luZ2xlKCEpIGZpbGUgKi8KKysgICAgICAgIH0K KysKKysvKiAgICAgIHByaW50ZigiSE1BQy1TSEExKCVzKT0gIixhcmd2W25dKTsgKi8KKysgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBTSEEyNTZfRElHRVNUX0xFTkdUSDsgKytpKQorKyAgICAgICAg ICAgIHByaW50ZigiJTAyeCIsIG1kW2ldKTsKKysgICAgICAgIHByaW50ZigiXG4iKTsKKysgICAg fQorKyNlbmRpZgorKyAgICByZXR1cm4gMDsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9j cnlwdG8vZmlwcy9maXBzX3Rlc3Rfc3VpdGUuYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9m aXBzL2ZpcHNfdGVzdF9zdWl0ZS5jCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMvZmlw c190ZXN0X3N1aXRlLmMuZmlwcwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxMjI4NDA3NCArMDIwMAor KysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL2ZpcHNfdGVzdF9zdWl0ZS5jCTIwMTUtMDYt MTUgMTc6MzA6MDAuMDEyMjg0MDc0ICswMjAwCitAQCAtMCwwICsxLDYzOSBAQAorKy8qID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisrICogQ29weXJpZ2h0IChjKSAyMDAzIFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwg cmlnaHRzIHJlc2VydmVkLgorKyAqCisrICoKKysgKiBUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQg YXMgYSB0ZXN0IGRyaXZlciBmb3IgdGhlIEZJUFMtMTQwIHRlc3RpbmcKKysgKiBsYWIgcGVyZm9y bWluZyBGSVBTLTE0MCB2YWxpZGF0aW9uLiAgSXQgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2YgdGhl CisrICogT3BlblNTTCBsaWJyYXJ5IGl0byBwZXJmb3JtIGEgdmFyaWV0eSBvZiBjb21tb24gY3J5 cHRvZ3JhcGhpYworKyAqIGZ1bmN0aW9ucy4gIEEgcG93ZXItdXAgc2VsZiB0ZXN0IGlzIGRlbW9u c3RyYXRlZCBieSBkZWxpYmVyYXRlbHkKKysgKiBwb2ludGluZyB0byBhbiBpbnZhbGlkIGV4ZWN1 dGFibGUgaGFzaAorKyAqCisrICogQ29udHJpYnV0ZWQgYnkgU3RldmUgTWFycXVlc3MuCisrICoK KysgKi8KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1 ZGUgPGN0eXBlLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4K KysjaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9kZXMuaD4KKysj aW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9kc2EuaD4KKysjaW5j bHVkZSA8b3BlbnNzbC9kaC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KKysjaW5jbHVk ZSA8b3BlbnNzbC9lcnIuaD4KKysKKysjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgorKyNpbmNsdWRl IDxvcGVuc3NsL3JhbmQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KKysKKysjaWZuZGVm IE9QRU5TU0xfRklQUworK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisreworKyAg ICBwcmludGYoIk5vIEZJUFMgc3VwcG9ydFxuIik7CisrICAgIHJldHVybiAoMCk7CisrfQorKyNl bHNlCisrCisrIyBpbmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjIGluY2x1ZGUgImZpcHNfdXRs LmgiCisrCisrLyogQUVTOiBlbmNyeXB0IGFuZCBkZWNyeXB0IGtub3duIHBsYWludGV4dCwgdmVy aWZ5IHJlc3VsdCBtYXRjaGVzIG9yaWdpbmFsIHBsYWludGV4dAorKyovCisrc3RhdGljIGludCBG SVBTX2Flc190ZXN0KHZvaWQpCisreworKyAgICBpbnQgcmV0ID0gMDsKKysgICAgdW5zaWduZWQg Y2hhciBwbHRtcFsxNl07CisrICAgIHVuc2lnbmVkIGNoYXIgY2l0bXBbMTZdOworKyAgICB1bnNp Z25lZCBjaGFyIGtleVsxNl0gPQorKyAgICAgICAgeyAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5 LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiB9OworKyAgICB1bnNpZ25lZCBjaGFyIHBsYWlu dGV4dFsxNl0gPSAiZXRhb25yaXNoZGxjdSI7CisrICAgIEVWUF9DSVBIRVJfQ1RYIGN0eDsKKysg ICAgRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKKysgICAgaWYgKEVWUF9DaXBoZXJJbml0X2V4 KCZjdHgsIEVWUF9hZXNfMTI4X2VjYigpLCBOVUxMLCBrZXksIE5VTEwsIDEpIDw9IDApCisrICAg ICAgICBnb3RvIGVycjsKKysgICAgRVZQX0NpcGhlcigmY3R4LCBjaXRtcCwgcGxhaW50ZXh0LCAx Nik7CisrICAgIGlmIChFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBfYWVzXzEyOF9lY2IoKSwg TlVMTCwga2V5LCBOVUxMLCAwKSA8PSAwKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIEVWUF9D aXBoZXIoJmN0eCwgcGx0bXAsIGNpdG1wLCAxNik7CisrICAgIGlmIChtZW1jbXAocGx0bXAsIHBs YWludGV4dCwgMTYpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIHJldCA9IDE7CisrIGVycjoK KysgICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgmY3R4KTsKKysgICAgcmV0dXJuIHJldDsKKyt9 CisrCisrc3RhdGljIGludCBGSVBTX2RlczNfdGVzdCh2b2lkKQorK3sKKysgICAgaW50IHJldCA9 IDA7CisrICAgIHVuc2lnbmVkIGNoYXIgcGx0bXBbOF07CisrICAgIHVuc2lnbmVkIGNoYXIgY2l0 bXBbOF07CisrICAgIHVuc2lnbmVkIGNoYXIga2V5W10gPQorKyAgICAgICAgeyAxLCAyLCAzLCA0 LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LAorKyAg ICAgICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNAorKyAgICB9OworKyAgICB1bnNpZ25lZCBjaGFy IHBsYWludGV4dFtdID0geyAnZScsICd0JywgJ2EnLCAnbycsICduJywgJ3InLCAnaScsICdzJyB9 OworKyAgICBFVlBfQ0lQSEVSX0NUWCBjdHg7CisrICAgIEVWUF9DSVBIRVJfQ1RYX2luaXQoJmN0 eCk7CisrICAgIGlmIChFVlBfQ2lwaGVySW5pdF9leCgmY3R4LCBFVlBfZGVzX2VkZTNfZWNiKCks IE5VTEwsIGtleSwgTlVMTCwgMSkgPD0gMCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBFVlBf Q2lwaGVyKCZjdHgsIGNpdG1wLCBwbGFpbnRleHQsIDgpOworKyAgICBpZiAoRVZQX0NpcGhlcklu aXRfZXgoJmN0eCwgRVZQX2Rlc19lZGUzX2VjYigpLCBOVUxMLCBrZXksIE5VTEwsIDApIDw9IDAp CisrICAgICAgICBnb3RvIGVycjsKKysgICAgRVZQX0NpcGhlcigmY3R4LCBwbHRtcCwgY2l0bXAs IDgpOworKyAgICBpZiAobWVtY21wKHBsdG1wLCBwbGFpbnRleHQsIDgpKQorKyAgICAgICAgZ290 byBlcnI7CisrICAgIHJldCA9IDE7CisrIGVycjoKKysgICAgRVZQX0NJUEhFUl9DVFhfY2xlYW51 cCgmY3R4KTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrLyoKKysgKiBEU0E6IGdlbmVyYXRl IGtleXMgYW5kIHNpZ24sIHZlcmlmeSBpbnB1dCBwbGFpbnRleHQuCisrICovCisrc3RhdGljIGlu dCBGSVBTX2RzYV90ZXN0KGludCBiYWQpCisreworKyAgICBEU0EgKmRzYSA9IE5VTEw7CisrICAg IEVWUF9QS0VZIHBrOworKyAgICB1bnNpZ25lZCBjaGFyIGRnc3RbXSA9ICJldGFvbnJpc2hkbGMi OworKyAgICB1bnNpZ25lZCBjaGFyIGJ1Zls2MF07CisrICAgIHVuc2lnbmVkIGludCBzbGVuOwor KyAgICBpbnQgciA9IDA7CisrICAgIEVWUF9NRF9DVFggbWN0eDsKKysKKysgICAgRVJSX2NsZWFy X2Vycm9yKCk7CisrICAgIEVWUF9NRF9DVFhfaW5pdCgmbWN0eCk7CisrICAgIGRzYSA9IERTQV9u ZXcoKTsKKysgICAgaWYgKCFkc2EpCisrICAgICAgICBnb3RvIGVuZDsKKysgICAgaWYgKCFEU0Ff Z2VuZXJhdGVfcGFyYW1ldGVyc19leChkc2EsIDEwMjQsIE5VTEwsIDAsIE5VTEwsIE5VTEwsIE5V TEwpKQorKyAgICAgICAgZ290byBlbmQ7CisrICAgIGlmICghRFNBX2dlbmVyYXRlX2tleShkc2Ep KQorKyAgICAgICAgZ290byBlbmQ7CisrICAgIGlmIChiYWQpCisrICAgICAgICBCTl9hZGRfd29y ZChkc2EtPnB1Yl9rZXksIDEpOworKworKyAgICBway50eXBlID0gRVZQX1BLRVlfRFNBOworKyAg ICBway5wa2V5LmRzYSA9IGRzYTsKKysKKysgICAgaWYgKCFFVlBfU2lnbkluaXRfZXgoJm1jdHgs IEVWUF9kc3MxKCksIE5VTEwpKQorKyAgICAgICAgZ290byBlbmQ7CisrICAgIGlmICghRVZQX1Np Z25VcGRhdGUoJm1jdHgsIGRnc3QsIHNpemVvZihkZ3N0KSAtIDEpKQorKyAgICAgICAgZ290byBl bmQ7CisrICAgIGlmICghRVZQX1NpZ25GaW5hbCgmbWN0eCwgYnVmLCAmc2xlbiwgJnBrKSkKKysg ICAgICAgIGdvdG8gZW5kOworKworKyAgICBpZiAoIUVWUF9WZXJpZnlJbml0X2V4KCZtY3R4LCBF VlBfZHNzMSgpLCBOVUxMKSkKKysgICAgICAgIGdvdG8gZW5kOworKyAgICBpZiAoIUVWUF9WZXJp ZnlVcGRhdGUoJm1jdHgsIGRnc3QsIHNpemVvZihkZ3N0KSAtIDEpKQorKyAgICAgICAgZ290byBl bmQ7CisrICAgIHIgPSBFVlBfVmVyaWZ5RmluYWwoJm1jdHgsIGJ1Ziwgc2xlbiwgJnBrKTsKKysg ZW5kOgorKyAgICBFVlBfTURfQ1RYX2NsZWFudXAoJm1jdHgpOworKyAgICBpZiAoZHNhKQorKyAg ICAgICAgRFNBX2ZyZWUoZHNhKTsKKysgICAgaWYgKHIgIT0gMSkKKysgICAgICAgIHJldHVybiAw OworKyAgICByZXR1cm4gMTsKKyt9CisrCisrLyoKKysgKiBSU0E6IGdlbmVyYXRlIGtleXMgYW5k IHNpZ24sIHZlcmlmeSBpbnB1dCBwbGFpbnRleHQuCisrICovCisrc3RhdGljIGludCBGSVBTX3Jz YV90ZXN0KGludCBiYWQpCisreworKyAgICBSU0EgKmtleTsKKysgICAgdW5zaWduZWQgY2hhciBp bnB1dF9wdGV4dFtdID0gImV0YW9ucmlzaGRsYyI7CisrICAgIHVuc2lnbmVkIGNoYXIgYnVmWzI1 Nl07CisrICAgIHVuc2lnbmVkIGludCBzbGVuOworKyAgICBCSUdOVU0gKmJuOworKyAgICBFVlBf TURfQ1RYIG1jdHg7CisrICAgIEVWUF9QS0VZIHBrOworKyAgICBpbnQgciA9IDA7CisrCisrICAg IEVSUl9jbGVhcl9lcnJvcigpOworKyAgICBFVlBfTURfQ1RYX2luaXQoJm1jdHgpOworKyAgICBr ZXkgPSBSU0FfbmV3KCk7CisrICAgIGJuID0gQk5fbmV3KCk7CisrICAgIGlmICgha2V5IHx8ICFi bikKKysgICAgICAgIHJldHVybiAwOworKyAgICBCTl9zZXRfd29yZChibiwgNjU1MzcpOworKyAg ICBpZiAoIVJTQV9nZW5lcmF0ZV9rZXlfZXgoa2V5LCAxMDI0LCBibiwgTlVMTCkpCisrICAgICAg ICByZXR1cm4gMDsKKysgICAgQk5fZnJlZShibik7CisrICAgIGlmIChiYWQpCisrICAgICAgICBC Tl9hZGRfd29yZChrZXktPm4sIDEpOworKworKyAgICBway50eXBlID0gRVZQX1BLRVlfUlNBOwor KyAgICBway5wa2V5LnJzYSA9IGtleTsKKysKKysgICAgaWYgKCFFVlBfU2lnbkluaXRfZXgoJm1j dHgsIEVWUF9zaGExKCksIE5VTEwpKQorKyAgICAgICAgZ290byBlbmQ7CisrICAgIGlmICghRVZQ X1NpZ25VcGRhdGUoJm1jdHgsIGlucHV0X3B0ZXh0LCBzaXplb2YoaW5wdXRfcHRleHQpIC0gMSkp CisrICAgICAgICBnb3RvIGVuZDsKKysgICAgaWYgKCFFVlBfU2lnbkZpbmFsKCZtY3R4LCBidWYs ICZzbGVuLCAmcGspKQorKyAgICAgICAgZ290byBlbmQ7CisrCisrICAgIGlmICghRVZQX1Zlcmlm eUluaXRfZXgoJm1jdHgsIEVWUF9zaGExKCksIE5VTEwpKQorKyAgICAgICAgZ290byBlbmQ7Cisr ICAgIGlmICghRVZQX1ZlcmlmeVVwZGF0ZSgmbWN0eCwgaW5wdXRfcHRleHQsIHNpemVvZihpbnB1 dF9wdGV4dCkgLSAxKSkKKysgICAgICAgIGdvdG8gZW5kOworKyAgICByID0gRVZQX1ZlcmlmeUZp bmFsKCZtY3R4LCBidWYsIHNsZW4sICZwayk7CisrIGVuZDoKKysgICAgRVZQX01EX0NUWF9jbGVh bnVwKCZtY3R4KTsKKysgICAgaWYgKGtleSkKKysgICAgICAgIFJTQV9mcmVlKGtleSk7CisrICAg IGlmIChyICE9IDEpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgcmV0dXJuIDE7CisrfQorKwor Ky8qIFNIQTE6IGdlbmVyYXRlIGhhc2ggb2Yga25vd24gZGlnZXN0IHZhbHVlIGFuZCBjb21wYXJl IHRvIGtub3duCisrICAgcHJlY29tcHV0ZWQgY29ycmVjdCBoYXNoCisrKi8KKytzdGF0aWMgaW50 IEZJUFNfc2hhMV90ZXN0KCkKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdF U1RfTEVOR1RIXSA9CisrICAgICAgICB7IDB4MTEsIDB4ZjEsIDB4OWEsIDB4M2EsIDB4ZWMsIDB4 MWEsIDB4MWUsIDB4OGUsIDB4NjUsIDB4ZDQsIDB4OWEsCisrMHgzOCwgMHgwYywgMHg4YiwgMHgx ZSwgMHgyYywgMHhlOCwgMHhiMywgMHhjNSwgMHgxOCB9OworKyAgICB1bnNpZ25lZCBjaGFyIHN0 cltdID0gImV0YW9ucmlzaGQiOworKworKyAgICB1bnNpZ25lZCBjaGFyIG1kW1NIQV9ESUdFU1Rf TEVOR1RIXTsKKysKKysgICAgRVJSX2NsZWFyX2Vycm9yKCk7CisrICAgIGlmICghRVZQX0RpZ2Vz dChzdHIsIHNpemVvZihzdHIpIC0gMSwgbWQsIE5VTEwsIEVWUF9zaGExKCksIE5VTEwpKQorKyAg ICAgICAgcmV0dXJuIDA7CisrICAgIGlmIChtZW1jbXAobWQsIGRpZ2VzdCwgc2l6ZW9mKG1kKSkp CisrICAgICAgICByZXR1cm4gMDsKKysgICAgcmV0dXJuIDE7CisrfQorKworKy8qIFNIQTI1Njog Z2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8ga25vd24K KysgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKKysqLworK3N0YXRpYyBpbnQgRklQU19zaGEy NTZfdGVzdCgpCisreworKyAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEEyNTZfRElHRVNUX0xF TkdUSF0gPQorKyAgICAgICAgeyAweGY1LCAweDUzLCAweGNkLCAweGI4LCAweGNmLCAweDEsIDB4 ZWUsIDB4MTcsIDB4OWIsIDB4OTMsIDB4YzksCisrMHg2OCwgMHhjMCwgMHhlYSwgMHg0MCwgMHg5 MSwKKysgICAgICAgIDB4NiwgMHhlYywgMHg4ZSwgMHgxMSwgMHg5NiwgMHhjOCwgMHg1ZCwgMHgx YywgMHhhZiwgMHg2NCwgMHgyMiwgMHhlNiwKKysgICAgICAgICAgICAweDUwLCAweDRmLCAweDQ3 LCAweDU3CisrICAgIH07CisrICAgIHVuc2lnbmVkIGNoYXIgc3RyW10gPSAiZXRhb25yaXNoZCI7 CisrCisrICAgIHVuc2lnbmVkIGNoYXIgbWRbU0hBMjU2X0RJR0VTVF9MRU5HVEhdOworKworKyAg ICBFUlJfY2xlYXJfZXJyb3IoKTsKKysgICAgaWYgKCFFVlBfRGlnZXN0KHN0ciwgc2l6ZW9mKHN0 cikgLSAxLCBtZCwgTlVMTCwgRVZQX3NoYTI1NigpLCBOVUxMKSkKKysgICAgICAgIHJldHVybiAw OworKyAgICBpZiAobWVtY21wKG1kLCBkaWdlc3QsIHNpemVvZihtZCkpKQorKyAgICAgICAgcmV0 dXJuIDA7CisrICAgIHJldHVybiAxOworK30KKysKKysvKiBTSEE1MTI6IGdlbmVyYXRlIGhhc2gg b2Yga25vd24gZGlnZXN0IHZhbHVlIGFuZCBjb21wYXJlIHRvIGtub3duCisrICAgcHJlY29tcHV0 ZWQgY29ycmVjdCBoYXNoCisrKi8KKytzdGF0aWMgaW50IEZJUFNfc2hhNTEyX3Rlc3QoKQorK3sK KysgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBNTEyX0RJR0VTVF9MRU5HVEhdID0KKysgICAg ICAgIHsgMHg5OSwgMHhjOSwgMHhlOSwgMHg1YiwgMHg4OCwgMHhkNCwgMHg3OCwgMHg4OCwgMHhk ZiwgMHg4OCwgMHg1ZiwKKysweDk0LCAweDcxLCAweDY0LCAweDI4LCAweGNhLAorKyAgICAgICAg MHgxNiwgMHgxZiwgMHgzZCwgMHhmNCwgMHgxZiwgMHhmMywgMHgwZiwgMHhjNSwgMHgwMywgMHg5 OSwgMHhiMiwKKysgICAgICAgICAgICAweGQwLCAweGU3LCAweDBiLCAweDk0LCAweDRhLAorKyAg ICAgICAgMHg0NSwgMHhkMiwgMHg2YywgMHg0ZiwgMHgyMCwgMHgwNiwgMHhlZiwgMHg3MSwgMHhh OSwgMHgyNSwgMHg3ZiwKKysgICAgICAgICAgICAweDI0LCAweGIxLCAweGQ5LCAweDQwLCAweDIy LAorKyAgICAgICAgMHg0OSwgMHg1NCwgMHgxMCwgMHhjMiwgMHgyMiwgMHg5ZCwgMHgyNywgMHhm ZSwgMHhiZCwgMHhkNiwgMHhkNiwKKysgICAgICAgICAgICAweGViLCAweDJkLCAweDQyLCAweDFk LCAweGEzCisrICAgIH07CisrICAgIHVuc2lnbmVkIGNoYXIgc3RyW10gPSAiZXRhb25yaXNoZCI7 CisrCisrICAgIHVuc2lnbmVkIGNoYXIgbWRbU0hBNTEyX0RJR0VTVF9MRU5HVEhdOworKworKyAg ICBFUlJfY2xlYXJfZXJyb3IoKTsKKysgICAgaWYgKCFFVlBfRGlnZXN0KHN0ciwgc2l6ZW9mKHN0 cikgLSAxLCBtZCwgTlVMTCwgRVZQX3NoYTUxMigpLCBOVUxMKSkKKysgICAgICAgIHJldHVybiAw OworKyAgICBpZiAobWVtY21wKG1kLCBkaWdlc3QsIHNpemVvZihtZCkpKQorKyAgICAgICAgcmV0 dXJuIDA7CisrICAgIHJldHVybiAxOworK30KKysKKysvKiBITUFDLVNIQTE6IGdlbmVyYXRlIGhh c2ggb2Yga25vd24gZGlnZXN0IHZhbHVlIGFuZCBjb21wYXJlIHRvIGtub3duCisrICAgcHJlY29t cHV0ZWQgY29ycmVjdCBoYXNoCisrKi8KKytzdGF0aWMgaW50IEZJUFNfaG1hY19zaGExX3Rlc3Qo KQorK3sKKysgICAgdW5zaWduZWQgY2hhciBrZXlbXSA9ICJldGFvbnJpc2hkIjsKKysgICAgdW5z aWduZWQgY2hhciBpdltdID0gIlNhbXBsZSB0ZXh0IjsKKysgICAgdW5zaWduZWQgY2hhciBrYXZh bFtFVlBfTUFYX01EX1NJWkVdID0KKysgICAgICAgIHsgMHg3MywgMHhmNywgMHhhMCwgMHg0OCwg MHhmOCwgMHg5NCwgMHhlZCwgMHhkZCwgMHgwYSwgMHhlYSwgMHhlYSwKKysweDU2LCAweDFiLCAw eDYxLCAweDJlLCAweDcwLAorKyAgICAgICAgMHhiMiwgMHhmYiwgMHhlYywgMHhjNgorKyAgICB9 OworKworKyAgICB1bnNpZ25lZCBjaGFyIG91dFtFVlBfTUFYX01EX1NJWkVdOworKyAgICB1bnNp Z25lZCBpbnQgb3V0bGVuOworKworKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKysgICAgaWYgKCFI TUFDCisrICAgICAgICAoRVZQX3NoYTEoKSwga2V5LCBzaXplb2Yoa2V5KSAtIDEsIGl2LCBzaXpl b2YoaXYpIC0gMSwgb3V0LCAmb3V0bGVuKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBpZiAo bWVtY21wKG91dCwga2F2YWwsIG91dGxlbikpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgcmV0 dXJuIDE7CisrfQorKworKy8qIEhNQUMtU0hBMjI0OiBnZW5lcmF0ZSBoYXNoIG9mIGtub3duIGRp Z2VzdCB2YWx1ZSBhbmQgY29tcGFyZSB0byBrbm93bgorKyAgIHByZWNvbXB1dGVkIGNvcnJlY3Qg aGFzaAorKyovCisrc3RhdGljIGludCBGSVBTX2htYWNfc2hhMjI0X3Rlc3QoKQorK3sKKysgICAg dW5zaWduZWQgY2hhciBrZXlbXSA9ICJldGFvbnJpc2hkIjsKKysgICAgdW5zaWduZWQgY2hhciBp dltdID0gIlNhbXBsZSB0ZXh0IjsKKysgICAgdW5zaWduZWQgY2hhciBrYXZhbFtFVlBfTUFYX01E X1NJWkVdID0KKysgICAgICAgIHsgMHg3NSwgMHg1OCwgMHhkNSwgMHhiZCwgMHg1NSwgMHg2ZCwg MHg4NywgMHgwZiwgMHg3NSwgMHhmZiwgMHhiZSwKKysweDFjLCAweGIyLCAweGYwLCAweDIwLCAw eDM1LAorKyAgICAgICAgMHhlNSwgMHg2MiwgMHg0OSwgMHhiNiwgMHg5NCwgMHhiOSwgMHhmYywg MHg2NSwgMHgzNCwgMHgzMywgMHgzYSwgMHgxOQorKyAgICB9OworKworKyAgICB1bnNpZ25lZCBj aGFyIG91dFtFVlBfTUFYX01EX1NJWkVdOworKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOworKwor KyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKysgICAgaWYgKCFITUFDCisrICAgICAgICAoRVZQX3No YTIyNCgpLCBrZXksIHNpemVvZihrZXkpIC0gMSwgaXYsIHNpemVvZihpdikgLSAxLCBvdXQsCisr ICAgICAgICAgJm91dGxlbikpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKG1lbWNtcChv dXQsIGthdmFsLCBvdXRsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIHJldHVybiAxOwor K30KKysKKysvKiBITUFDLVNIQTI1NjogZ2VuZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFs dWUgYW5kIGNvbXBhcmUgdG8ga25vd24KKysgICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKKysq LworK3N0YXRpYyBpbnQgRklQU19obWFjX3NoYTI1Nl90ZXN0KCkKKyt7CisrICAgIHVuc2lnbmVk IGNoYXIga2V5W10gPSAiZXRhb25yaXNoZCI7CisrICAgIHVuc2lnbmVkIGNoYXIgaXZbXSA9ICJT YW1wbGUgdGV4dCI7CisrICAgIHVuc2lnbmVkIGNoYXIga2F2YWxbRVZQX01BWF9NRF9TSVpFXSA9 CisrICAgICAgICB7IDB4ZTksIDB4MTcsIDB4YzEsIDB4N2IsIDB4NGMsIDB4NmIsIDB4NzcsIDB4 ZGEsIDB4ZDIsIDB4MzAsIDB4MzYsCisrMHgwMiwgMHhmNSwgMHg3MiwgMHgzMywgMHg4NywKKysg ICAgICAgIDB4OWYsIDB4YzYsIDB4NmUsIDB4N2IsIDB4N2UsIDB4YTgsIDB4ZWEsIDB4YWEsIDB4 OWYsIDB4YmEsIDB4ZWUsCisrICAgICAgICAgICAgMHg1MSwgMHhmZiwgMHhkYSwgMHgyNCwgMHhm NAorKyAgICB9OworKworKyAgICB1bnNpZ25lZCBjaGFyIG91dFtFVlBfTUFYX01EX1NJWkVdOwor KyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOworKworKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKysg ICAgaWYgKCFITUFDCisrICAgICAgICAoRVZQX3NoYTI1NigpLCBrZXksIHNpemVvZihrZXkpIC0g MSwgaXYsIHNpemVvZihpdikgLSAxLCBvdXQsCisrICAgICAgICAgJm91dGxlbikpCisrICAgICAg ICByZXR1cm4gMDsKKysgICAgaWYgKG1lbWNtcChvdXQsIGthdmFsLCBvdXRsZW4pKQorKyAgICAg ICAgcmV0dXJuIDA7CisrICAgIHJldHVybiAxOworK30KKysKKysvKiBITUFDLVNIQTM4NDogZ2Vu ZXJhdGUgaGFzaCBvZiBrbm93biBkaWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8ga25vd24KKysg ICBwcmVjb21wdXRlZCBjb3JyZWN0IGhhc2gKKysqLworK3N0YXRpYyBpbnQgRklQU19obWFjX3No YTM4NF90ZXN0KCkKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIga2V5W10gPSAiZXRhb25yaXNoZCI7 CisrICAgIHVuc2lnbmVkIGNoYXIgaXZbXSA9ICJTYW1wbGUgdGV4dCI7CisrICAgIHVuc2lnbmVk IGNoYXIga2F2YWxbRVZQX01BWF9NRF9TSVpFXSA9CisrICAgICAgICB7IDB4YjIsIDB4OWQsIDB4 NDAsIDB4NTgsIDB4MzIsIDB4YzQsIDB4ZTMsIDB4MzEsIDB4YjYsIDB4NjMsIDB4MDgsCisrMHgy NiwgMHg5OSwgMHhlZiwgMHgzYiwgMHgxMCwKKysgICAgICAgIDB4ZTIsIDB4ZGYsIDB4ZjgsIDB4 ZmYsIDB4YzYsIDB4ZTEsIDB4MDMsIDB4MjksIDB4ODEsIDB4MmEsIDB4MWIsCisrICAgICAgICAg ICAgMHhhYywgMHhiMCwgMHgwNywgMHgzOSwgMHgwOCwKKysgICAgICAgIDB4ZjMsIDB4OTEsIDB4 MzUsIDB4MTEsIDB4NzYsIDB4ZDYsIDB4NGMsIDB4MjAsIDB4ZmIsIDB4NGQsIDB4YzMsCisrICAg ICAgICAgICAgMHhmMywgMHhiOCwgMHg5YiwgMHg4OCwgMHgxYworKyAgICB9OworKworKyAgICB1 bnNpZ25lZCBjaGFyIG91dFtFVlBfTUFYX01EX1NJWkVdOworKyAgICB1bnNpZ25lZCBpbnQgb3V0 bGVuOworKworKyAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKysgICAgaWYgKCFITUFDCisrICAgICAg ICAoRVZQX3NoYTM4NCgpLCBrZXksIHNpemVvZihrZXkpIC0gMSwgaXYsIHNpemVvZihpdikgLSAx LCBvdXQsCisrICAgICAgICAgJm91dGxlbikpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYg KG1lbWNtcChvdXQsIGthdmFsLCBvdXRsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIHJl dHVybiAxOworK30KKysKKysvKiBITUFDLVNIQTUxMjogZ2VuZXJhdGUgaGFzaCBvZiBrbm93biBk aWdlc3QgdmFsdWUgYW5kIGNvbXBhcmUgdG8ga25vd24KKysgICBwcmVjb21wdXRlZCBjb3JyZWN0 IGhhc2gKKysqLworK3N0YXRpYyBpbnQgRklQU19obWFjX3NoYTUxMl90ZXN0KCkKKyt7CisrICAg IHVuc2lnbmVkIGNoYXIga2V5W10gPSAiZXRhb25yaXNoZCI7CisrICAgIHVuc2lnbmVkIGNoYXIg aXZbXSA9ICJTYW1wbGUgdGV4dCI7CisrICAgIHVuc2lnbmVkIGNoYXIga2F2YWxbRVZQX01BWF9N RF9TSVpFXSA9CisrICAgICAgICB7IDB4Y2QsIDB4M2UsIDB4YjksIDB4NTEsIDB4YjgsIDB4YmMs IDB4N2YsIDB4OWEsIDB4MjMsIDB4YWYsIDB4ZjMsCisrMHg3NywgMHg1OSwgMHg4NSwgMHhhOSwg MHhlNiwKKysgICAgICAgIDB4ZjcsIDB4ZDEsIDB4NTEsIDB4OTYsIDB4MTcsIDB4ZTAsIDB4OTIs IDB4ZDgsIDB4YTYsIDB4M2IsIDB4YzEsCisrICAgICAgICAgICAgMHhhZCwgMHg3ZSwgMHgyNCwg MHhjYSwgMHhiMSwKKysgICAgICAgIDB4ZDcsIDB4NzksIDB4MGEsIDB4YTUsIDB4ZWEsIDB4MmMs IDB4MDIsIDB4NTgsIDB4MGIsIDB4YTYsIDB4NTIsCisrICAgICAgICAgICAgMHg2YiwgMHg2MSwg MHg3ZiwgMHhlYiwgMHg5YywKKysgICAgICAgIDB4NDcsIDB4ODYsIDB4NWQsIDB4NzQsIDB4MmIs IDB4ODgsIDB4ZGYsIDB4ZWUsIDB4NDYsIDB4NjksIDB4OTYsCisrICAgICAgICAgICAgMHgzZCwg MHhhNiwgMHhkOSwgMHgyYSwgMHg1MworKyAgICB9OworKworKyAgICB1bnNpZ25lZCBjaGFyIG91 dFtFVlBfTUFYX01EX1NJWkVdOworKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOworKworKyAgICBF UlJfY2xlYXJfZXJyb3IoKTsKKysgICAgaWYgKCFITUFDCisrICAgICAgICAoRVZQX3NoYTUxMigp LCBrZXksIHNpemVvZihrZXkpIC0gMSwgaXYsIHNpemVvZihpdikgLSAxLCBvdXQsCisrICAgICAg ICAgJm91dGxlbikpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgaWYgKG1lbWNtcChvdXQsIGth dmFsLCBvdXRsZW4pKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAgIHJldHVybiAxOworK30KKysK KysvKiBESDogZ2VuZXJhdGUgc2hhcmVkIHBhcmFtZXRlcnMKKysqLworK3N0YXRpYyBpbnQgZGhf dGVzdCgpCisreworKyAgICBESCAqZGg7CisrICAgIEVSUl9jbGVhcl9lcnJvcigpOworKyAgICBk aCA9IEZJUFNfZGhfbmV3KCk7CisrICAgIGlmICghZGgpCisrICAgICAgICByZXR1cm4gMDsKKysg ICAgaWYgKCFESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KGRoLCAxMDI0LCAyLCBOVUxMKSkKKysg ICAgICAgIHJldHVybiAwOworKyAgICBGSVBTX2RoX2ZyZWUoZGgpOworKyAgICByZXR1cm4gMTsK Kyt9CisrCisrLyogWmVyb2l6ZQorKyovCisrc3RhdGljIGludCBaZXJvaXplKCkKKyt7CisrICAg IFJTQSAqa2V5OworKyAgICBCSUdOVU0gKmJuOworKyAgICB1bnNpZ25lZCBjaGFyIHVzZXJrZXlb MTZdID0KKysgICAgICAgIHsgMHg0OCwgMHg1MCwgMHhmMCwgMHhhMywgMHgzYSwgMHhlZCwgMHhk MywgMHhhZiwgMHg2ZSwgMHg0NywgMHg3ZiwKKysweDgzLCAweDAyLCAweGIxLCAweDA5LCAweDY4 IH07CisrICAgIGludCBpLCBuOworKworKyAgICBrZXkgPSBGSVBTX3JzYV9uZXcoKTsKKysgICAg Ym4gPSBCTl9uZXcoKTsKKysgICAgaWYgKCFrZXkgfHwgIWJuKQorKyAgICAgICAgcmV0dXJuIDA7 CisrICAgIEJOX3NldF93b3JkKGJuLCA2NTUzNyk7CisrICAgIGlmICghUlNBX2dlbmVyYXRlX2tl eV9leChrZXksIDEwMjQsIGJuLCBOVUxMKSkKKysgICAgICAgIHJldHVybiAwOworKyAgICBCTl9m cmVlKGJuKTsKKysKKysgICAgbiA9IEJOX251bV9ieXRlcyhrZXktPmQpOworKyAgICBwcmludGYo IiBHZW5lcmF0ZWQgJWQgYnl0ZSBSU0EgcHJpdmF0ZSBrZXlcbiIsIG4pOworKyAgICBwcmludGYo Ilx0Qk4ga2V5IGJlZm9yZSBvdmVyd3JpdGluZzpcbiIpOworKyAgICBkb19ibl9wcmludChzdGRv dXQsIGtleS0+ZCk7CisrICAgIEJOX3JhbmQoa2V5LT5kLCBuICogOCwgLTEsIDApOworKyAgICBw cmludGYoIlx0Qk4ga2V5IGFmdGVyIG92ZXJ3cml0aW5nOlxuIik7CisrICAgIGRvX2JuX3ByaW50 KHN0ZG91dCwga2V5LT5kKTsKKysKKysgICAgcHJpbnRmKCJcdGNoYXIgYnVmZmVyIGtleSBiZWZv cmUgb3ZlcndyaXRpbmc6IFxuXHRcdCIpOworKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHVz ZXJrZXkpOyBpKyspCisrICAgICAgICBwcmludGYoIiUwMngiLCB1c2Vya2V5W2ldKTsKKysgICAg cHJpbnRmKCJcbiIpOworKyAgICBSQU5EX2J5dGVzKHVzZXJrZXksIHNpemVvZiB1c2Vya2V5KTsK KysgICAgcHJpbnRmKCJcdGNoYXIgYnVmZmVyIGtleSBhZnRlciBvdmVyd3JpdGluZzogXG5cdFx0 Iik7CisrICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YodXNlcmtleSk7IGkrKykKKysgICAgICAg IHByaW50ZigiJTAyeCIsIHVzZXJrZXlbaV0pOworKyAgICBwcmludGYoIlxuIik7CisrCisrICAg IHJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50IEVycm9yOworK2NvbnN0IGNoYXIgKkZhaWwo Y29uc3QgY2hhciAqbXNnKQorK3sKKysgICAgZG9fcHJpbnRfZXJyb3JzKCk7CisrICAgIEVycm9y Kys7CisrICAgIHJldHVybiBtc2c7CisrfQorKworK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKKyt7CisrCisrICAgIGludCBkb19jb3JydXB0X3JzYV9rZXlnZW4gPSAwLCBkb19jb3Jy dXB0X2RzYV9rZXlnZW4gPSAwOworKyAgICBpbnQgYmFkX3JzYSA9IDAsIGJhZF9kc2EgPSAwOwor KyAgICBpbnQgZG9fcm5nX3N0aWNrID0gMDsKKysgICAgaW50IG5vX2V4aXQgPSAwOworKworKyAg ICBwcmludGYoIlx0RklQUy1tb2RlIHRlc3QgYXBwbGljYXRpb25cblxuIik7CisrCisrICAgIC8q IExvYWQgZW50cm9weSBmcm9tIGV4dGVybmFsIGZpbGUsIGlmIGFueSAqLworKyAgICBSQU5EX2xv YWRfZmlsZSgiLnJuZCIsIDEwMjQpOworKworKyAgICBpZiAoYXJndlsxXSkgeworKyAgICAgICAg LyogQ29ycnVwdGVkIEtBVCB0ZXN0cyAqLworKyAgICAgICAgaWYgKCFzdHJjbXAoYXJndlsxXSwg ImFlcyIpKSB7CisrICAgICAgICAgICAgRklQU19jb3JydXB0X2FlcygpOworKyAgICAgICAgICAg IHByaW50ZigiQUVTIGVuY3J5cHRpb24vZGVjcnlwdGlvbiB3aXRoIGNvcnJ1cHRlZCBLQVQuLi5c biIpOworKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJkZXMiKSkgeworKyAg ICAgICAgICAgIEZJUFNfY29ycnVwdF9kZXMoKTsKKysgICAgICAgICAgICBwcmludGYoIkRFUzMt RUNCIGVuY3J5cHRpb24vZGVjcnlwdGlvbiB3aXRoIGNvcnJ1cHRlZCBLQVQuLi5cbiIpOworKyAg ICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJkc2EiKSkgeworKyAgICAgICAgICAg IEZJUFNfY29ycnVwdF9kc2EoKTsKKysgICAgICAgICAgICBwcmludGYKKysgICAgICAgICAgICAg ICAgKCJEU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxpZGF0aW9uIHdpdGggY29y cnVwdGVkIEtBVC4uLlxuIik7CisrICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwg InJzYSIpKSB7CisrICAgICAgICAgICAgRklQU19jb3JydXB0X3JzYSgpOworKyAgICAgICAgICAg IHByaW50ZgorKyAgICAgICAgICAgICAgICAoIlJTQSBrZXkgZ2VuZXJhdGlvbiBhbmQgc2lnbmF0 dXJlIHZhbGlkYXRpb24gd2l0aCBjb3JydXB0ZWQgS0FULi4uXG4iKTsKKysgICAgICAgIH0gZWxz ZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAicnNha2V5IikpIHsKKysgICAgICAgICAgICBwcmludGYK KysgICAgICAgICAgICAgICAgKCJSU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxp ZGF0aW9uIHdpdGggY29ycnVwdGVkIGtleS4uLlxuIik7CisrICAgICAgICAgICAgYmFkX3JzYSA9 IDE7CisrICAgICAgICAgICAgbm9fZXhpdCA9IDE7CisrICAgICAgICB9IGVsc2UgaWYgKCFzdHJj bXAoYXJndlsxXSwgInJzYWtleWdlbiIpKSB7CisrICAgICAgICAgICAgZG9fY29ycnVwdF9yc2Ff a2V5Z2VuID0gMTsKKysgICAgICAgICAgICBub19leGl0ID0gMTsKKysgICAgICAgICAgICBwcmlu dGYKKysgICAgICAgICAgICAgICAgKCJSU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2 YWxpZGF0aW9uIHdpdGggY29ycnVwdGVkIGtleWdlbi4uLlxuIik7CisrICAgICAgICB9IGVsc2Ug aWYgKCFzdHJjbXAoYXJndlsxXSwgImRzYWtleSIpKSB7CisrICAgICAgICAgICAgcHJpbnRmCisr ICAgICAgICAgICAgICAgICgiRFNBIGtleSBnZW5lcmF0aW9uIGFuZCBzaWduYXR1cmUgdmFsaWRh dGlvbiB3aXRoIGNvcnJ1cHRlZCBrZXkuLi5cbiIpOworKyAgICAgICAgICAgIGJhZF9kc2EgPSAx OworKyAgICAgICAgICAgIG5vX2V4aXQgPSAxOworKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21w KGFyZ3ZbMV0sICJkc2FrZXlnZW4iKSkgeworKyAgICAgICAgICAgIGRvX2NvcnJ1cHRfZHNhX2tl eWdlbiA9IDE7CisrICAgICAgICAgICAgbm9fZXhpdCA9IDE7CisrICAgICAgICAgICAgcHJpbnRm CisrICAgICAgICAgICAgICAgICgiRFNBIGtleSBnZW5lcmF0aW9uIGFuZCBzaWduYXR1cmUgdmFs aWRhdGlvbiB3aXRoIGNvcnJ1cHRlZCBrZXlnZW4uLi5cbiIpOworKyAgICAgICAgfSBlbHNlIGlm ICghc3RyY21wKGFyZ3ZbMV0sICJzaGExIikpIHsKKysgICAgICAgICAgICBGSVBTX2NvcnJ1cHRf c2hhMSgpOworKyAgICAgICAgICAgIHByaW50ZigiU0hBLTEgaGFzaCB3aXRoIGNvcnJ1cHRlZCBL QVQuLi5cbiIpOworKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJybmciKSkg eworKyAgICAgICAgICAgIEZJUFNfY29ycnVwdF9ybmcoKTsKKysgICAgICAgIH0gZWxzZSBpZiAo IXN0cmNtcChhcmd2WzFdLCAicm5nc3RpY2siKSkgeworKyAgICAgICAgICAgIGRvX3JuZ19zdGlj ayA9IDE7CisrICAgICAgICAgICAgbm9fZXhpdCA9IDE7CisrICAgICAgICAgICAgcHJpbnRmKCJS TkcgdGVzdCB3aXRoIHN0dWNrIGNvbnRpbnVvdXMgdGVzdC4uLlxuIik7CisrICAgICAgICB9IGVs c2UgeworKyAgICAgICAgICAgIHByaW50ZigiQmFkIGFyZ3VtZW50IFwiJXNcIlxuIiwgYXJndlsx XSk7CisrICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgIH0KKysgICAgICAgIGlmICghbm9f ZXhpdCkgeworKyAgICAgICAgICAgIGlmICghRklQU19tb2RlX3NldCgxKSkgeworKyAgICAgICAg ICAgICAgICBkb19wcmludF9lcnJvcnMoKTsKKysgICAgICAgICAgICAgICAgcHJpbnRmKCJQb3dl ci11cCBzZWxmIHRlc3QgZmFpbGVkXG4iKTsKKysgICAgICAgICAgICAgICAgZXhpdCgxKTsKKysg ICAgICAgICAgICB9CisrICAgICAgICAgICAgcHJpbnRmKCJQb3dlci11cCBzZWxmIHRlc3Qgc3Vj Y2Vzc2Z1bFxuIik7CisrICAgICAgICAgICAgZXhpdCgwKTsKKysgICAgICAgIH0KKysgICAgfQor KworKyAgICAvKiBOb24tQXBwcm92ZWQgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb24KKysgICAgICov CisrICAgIHByaW50ZigiMS4gTm9uLUFwcHJvdmVkIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uIHRl c3QuLi5cbiIpOworKyAgICBwcmludGYoIlx0YS4gSW5jbHVkZWQgYWxnb3JpdGhtIChELUgpLi4u Iik7CisrICAgIHByaW50ZihkaF90ZXN0KCk/ICJzdWNjZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVE IVxuIikpOworKworKyAgICAvKiBQb3dlci11cCBzZWxmIHRlc3QKKysgICAgICovCisrICAgIEVS Ul9jbGVhcl9lcnJvcigpOworKyAgICBwcmludGYoIjIuIEF1dG9tYXRpYyBwb3dlci11cCBzZWxm IHRlc3QuLi4iKTsKKysgICAgaWYgKCFGSVBTX21vZGVfc2V0KDEpKSB7CisrICAgICAgICBkb19w cmludF9lcnJvcnMoKTsKKysgICAgICAgIHByaW50ZihGYWlsKCJGQUlMRUQhXG4iKSk7CisrICAg ICAgICBleGl0KDEpOworKyAgICB9CisrICAgIHByaW50Zigic3VjY2Vzc2Z1bFxuIik7CisrICAg IGlmIChkb19jb3JydXB0X2RzYV9rZXlnZW4pCisrICAgICAgICBGSVBTX2NvcnJ1cHRfZHNhX2tl eWdlbigpOworKyAgICBpZiAoZG9fY29ycnVwdF9yc2Ffa2V5Z2VuKQorKyAgICAgICAgRklQU19j b3JydXB0X3JzYV9rZXlnZW4oKTsKKysgICAgaWYgKGRvX3JuZ19zdGljaykKKysgICAgICAgIEZJ UFNfcm5nX3N0aWNrKCk7CisrCisrICAgIC8qIEFFUyBlbmNyeXB0aW9uL2RlY3J5cHRpb24KKysg ICAgICovCisrICAgIHByaW50ZigiMy4gQUVTIGVuY3J5cHRpb24vZGVjcnlwdGlvbi4uLiIpOwor KyAgICBwcmludGYoRklQU19hZXNfdGVzdCgpPyAic3VjY2Vzc2Z1bFxuIiA6IEZhaWwoIkZBSUxF RCFcbiIpKTsKKysKKysgICAgLyogUlNBIGtleSBnZW5lcmF0aW9uIGFuZCBlbmNyeXB0aW9uL2Rl Y3J5cHRpb24KKysgICAgICovCisrICAgIHByaW50ZigiNC4gUlNBIGtleSBnZW5lcmF0aW9uIGFu ZCBlbmNyeXB0aW9uL2RlY3J5cHRpb24uLi4iKTsKKysgICAgcHJpbnRmKEZJUFNfcnNhX3Rlc3Qo YmFkX3JzYSkgPyAic3VjY2Vzc2Z1bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsKKysKKysgICAg LyogREVTLUNCQyBlbmNyeXB0aW9uL2RlY3J5cHRpb24KKysgICAgICovCisrICAgIHByaW50Zigi NS4gREVTLUVDQiBlbmNyeXB0aW9uL2RlY3J5cHRpb24uLi4iKTsKKysgICAgcHJpbnRmKEZJUFNf ZGVzM190ZXN0KCk/ICJzdWNjZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOworKworKyAg ICAvKiBEU0Ega2V5IGdlbmVyYXRpb24gYW5kIHNpZ25hdHVyZSB2YWxpZGF0aW9uCisrICAgICAq LworKyAgICBwcmludGYoIjYuIERTQSBrZXkgZ2VuZXJhdGlvbiBhbmQgc2lnbmF0dXJlIHZhbGlk YXRpb24uLi4iKTsKKysgICAgcHJpbnRmKEZJUFNfZHNhX3Rlc3QoYmFkX2RzYSkgPyAic3VjY2Vz c2Z1bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsKKysKKysgICAgLyogU0hBLTEgaGFzaAorKyAg ICAgKi8KKysgICAgcHJpbnRmKCI3YS4gU0hBLTEgaGFzaC4uLiIpOworKyAgICBwcmludGYoRklQ U19zaGExX3Rlc3QoKT8gInN1Y2Nlc3NmdWxcbiIgOiBGYWlsKCJGQUlMRUQhXG4iKSk7CisrCisr ICAgIC8qIFNIQS0yNTYgaGFzaAorKyAgICAgKi8KKysgICAgcHJpbnRmKCI3Yi4gU0hBLTI1NiBo YXNoLi4uIik7CisrICAgIHByaW50ZihGSVBTX3NoYTI1Nl90ZXN0KCk/ICJzdWNjZXNzZnVsXG4i IDogRmFpbCgiRkFJTEVEIVxuIikpOworKworKyAgICAvKiBTSEEtNTEyIGhhc2gKKysgICAgICov CisrICAgIHByaW50ZigiN2MuIFNIQS01MTIgaGFzaC4uLiIpOworKyAgICBwcmludGYoRklQU19z aGE1MTJfdGVzdCgpPyAic3VjY2Vzc2Z1bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIpKTsKKysKKysg ICAgLyogSE1BQy1TSEEtMSBoYXNoCisrICAgICAqLworKyAgICBwcmludGYoIjdkLiBITUFDLVNI QS0xIGhhc2guLi4iKTsKKysgICAgcHJpbnRmKEZJUFNfaG1hY19zaGExX3Rlc3QoKT8gInN1Y2Nl c3NmdWxcbiIgOiBGYWlsKCJGQUlMRUQhXG4iKSk7CisrCisrICAgIC8qIEhNQUMtU0hBLTIyNCBo YXNoCisrICAgICAqLworKyAgICBwcmludGYoIjdlLiBITUFDLVNIQS0yMjQgaGFzaC4uLiIpOwor KyAgICBwcmludGYoRklQU19obWFjX3NoYTIyNF90ZXN0KCk/ICJzdWNjZXNzZnVsXG4iIDogRmFp bCgiRkFJTEVEIVxuIikpOworKworKyAgICAvKiBITUFDLVNIQS0yNTYgaGFzaAorKyAgICAgKi8K KysgICAgcHJpbnRmKCI3Zi4gSE1BQy1TSEEtMjU2IGhhc2guLi4iKTsKKysgICAgcHJpbnRmKEZJ UFNfaG1hY19zaGEyNTZfdGVzdCgpPyAic3VjY2Vzc2Z1bFxuIiA6IEZhaWwoIkZBSUxFRCFcbiIp KTsKKysKKysgICAgLyogSE1BQy1TSEEtMzg0IGhhc2gKKysgICAgICovCisrICAgIHByaW50Zigi N2cuIEhNQUMtU0hBLTM4NCBoYXNoLi4uIik7CisrICAgIHByaW50ZihGSVBTX2htYWNfc2hhMzg0 X3Rlc3QoKT8gInN1Y2Nlc3NmdWxcbiIgOiBGYWlsKCJGQUlMRUQhXG4iKSk7CisrCisrICAgIC8q IEhNQUMtU0hBLTUxMiBoYXNoCisrICAgICAqLworKyAgICBwcmludGYoIjdoLiBITUFDLVNIQS01 MTIgaGFzaC4uLiIpOworKyAgICBwcmludGYoRklQU19obWFjX3NoYTUxMl90ZXN0KCk/ICJzdWNj ZXNzZnVsXG4iIDogRmFpbCgiRkFJTEVEIVxuIikpOworKworKyAgICAvKiBOb24tQXBwcm92ZWQg Y3J5cHRvZ3JhcGhpYyBvcGVyYXRpb24KKysgICAgICovCisrICAgIHByaW50ZigiOC4gTm9uLUFw cHJvdmVkIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uIHRlc3QuLi5cbiIpOworKyAgICBwcmludGYo Ilx0YS4gSW5jbHVkZWQgYWxnb3JpdGhtIChELUgpLi4uIik7CisrICAgIHByaW50ZihkaF90ZXN0 KCk/ICJzdWNjZXNzZnVsIGFzIGV4cGVjdGVkXG4iCisrICAgICAgICAgICA6IEZhaWwoImZhaWxl ZCBJTkNPUlJFQ1RMWSFcbiIpKTsKKysKKysgICAgLyogWmVyb2l6YXRpb24KKysgICAgICovCisr ICAgIHByaW50ZigiOS4gWmVyby1pemF0aW9uLi4uXG4iKTsKKysgICAgcHJpbnRmKFplcm9pemUo KT8gIlx0c3VjY2Vzc2Z1bCBhcyBleHBlY3RlZFxuIgorKyAgICAgICAgICAgOiBGYWlsKCJcdGZh aWxlZCBJTkNPUlJFQ1RMWSFcbiIpKTsKKysKKysgICAgcHJpbnRmKCJcbkFsbCB0ZXN0cyBjb21w bGV0ZWQgd2l0aCAlZCBlcnJvcnNcbiIsIEVycm9yKTsKKysgICAgcmV0dXJuIEVycm9yID8gMSA6 IDA7CisrfQorKworKyNlbmRpZgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2ZpcHMv TWFrZWZpbGUuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9NYWtlZmlsZQorLS0tIG9w ZW5zc2wtMS4wLjJjL2NyeXB0by9maXBzL01ha2VmaWxlLmZpcHMJMjAxNS0wNi0xNSAxNzozMDow MC4wMTIyODQwNzQgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vZmlwcy9NYWtlZmls ZQkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxMjI4NDA3NCArMDIwMAorQEAgLTAsMCArMSwzNDEgQEAK KysjCisrIyBPcGVuU1NML2NyeXB0by9maXBzL01ha2VmaWxlCisrIworKworK0RJUj0JZmlwcwor K1RPUD0JLi4vLi4KKytDQz0JY2MKKytJTkNMVURFUz0KKytDRkxBRz0tZworK01BS0VGSUxFPQlN YWtlZmlsZQorK0FSPQkJYXIgcgorKworK0NGTEFHUz0gJChJTkNMVURFUykgJChDRkxBRykKKysK KytHRU5FUkFMPU1ha2VmaWxlCisrVEVTVD1maXBzX3Rlc3Rfc3VpdGUuYyBmaXBzX3JhbmR0ZXN0 LmMKKytBUFBTPQorKworK1BST0dSQU09IGZpcHNfc3RhbmRhbG9uZV9obWFjCisrRVhFPSAkKFBS T0dSQU0pJChFWEVfRVhUKQorKworK0xJQj0kKFRPUCkvbGliY3J5cHRvLmEKKytMSUJTUkM9Zmlw c19hZXNfc2VsZnRlc3QuYyBmaXBzX2Rlc19zZWxmdGVzdC5jIGZpcHNfaG1hY19zZWxmdGVzdC5j IGZpcHNfcmFuZF9zZWxmdGVzdC5jIFwKKysgICAgZmlwc19yc2Ffc2VsZnRlc3QuYyBmaXBzX3No YV9zZWxmdGVzdC5jIGZpcHMuYyBmaXBzX2RzYV9zZWxmdGVzdC5jICBmaXBzX3JhbmQuYyBcCisr ICAgIGZpcHNfcnNhX3g5MzFnLmMgZmlwc19wb3N0LmMgZmlwc19kcmJnX2N0ci5jIGZpcHNfZHJi Z19oYXNoLmMgZmlwc19kcmJnX2htYWMuYyBcCisrICAgIGZpcHNfZHJiZ19saWIuYyBmaXBzX2Ry YmdfcmFuZC5jIGZpcHNfZHJiZ19zZWxmdGVzdC5jIGZpcHNfcmFuZF9saWIuYyBcCisrICAgIGZp cHNfY21hY19zZWxmdGVzdC5jIGZpcHNfZW5jLmMgZmlwc19tZC5jCisrCisrTElCT0JKPWZpcHNf YWVzX3NlbGZ0ZXN0Lm8gZmlwc19kZXNfc2VsZnRlc3QubyBmaXBzX2htYWNfc2VsZnRlc3QubyBm aXBzX3JhbmRfc2VsZnRlc3QubyBcCisrICAgIGZpcHNfcnNhX3NlbGZ0ZXN0Lm8gZmlwc19zaGFf c2VsZnRlc3QubyBmaXBzLm8gZmlwc19kc2Ffc2VsZnRlc3QubyAgZmlwc19yYW5kLm8gXAorKyAg ICBmaXBzX3JzYV94OTMxZy5vIGZpcHNfcG9zdC5vIGZpcHNfZHJiZ19jdHIubyBmaXBzX2RyYmdf aGFzaC5vIGZpcHNfZHJiZ19obWFjLm8gXAorKyAgICBmaXBzX2RyYmdfbGliLm8gZmlwc19kcmJn X3JhbmQubyBmaXBzX2RyYmdfc2VsZnRlc3QubyBmaXBzX3JhbmRfbGliLm8gXAorKyAgICBmaXBz X2NtYWNfc2VsZnRlc3QubyBmaXBzX2VuYy5vIGZpcHNfbWQubworKworK0xJQkNSWVBUTz0tTC4u IC1sY3J5cHRvCisrCisrU1JDPSAkKExJQlNSQykgZmlwc19zdGFuZGFsb25lX2htYWMuYworKwor K0VYSEVBREVSPSBmaXBzLmggZmlwc19yYW5kLmgKKytIRUFERVI9CSQoRVhIRUFERVIpCisrCisr QUxMPSAgICAkKEdFTkVSQUwpICQoU1JDKSAkKEhFQURFUikKKysKKyt0b3A6CisrCShjZCAuLi8u LjsgJChNQUtFKSBESVJTPWNyeXB0byBTRElSUz0kKERJUikgc3ViX2FsbCkKKysKKythbGw6CWxp YiBleGUKKysKKytsaWI6CSQoTElCT0JKKQorKwkkKEFSKSAkKExJQikgJChMSUJPQkopCisrCSQo UkFOTElCKSAkKExJQikgfHwgZWNobyBOZXZlciBtaW5kLgorKwlAdG91Y2ggbGliCisrCisrZXhl OgkkKEVYRSkKKysKKytmaWxlczoKKysJJChQRVJMKSAkKFRPUCkvdXRpbC9maWxlcy5wbCBNYWtl ZmlsZSA+PiAkKFRPUCkvTUlORk8KKysKKytsaW5rczoKKysJQCQoUEVSTCkgJChUT1ApL3V0aWwv bWtsaW5rLnBsIC4uLy4uL2luY2x1ZGUvb3BlbnNzbCAkKEVYSEVBREVSKQorKwlAJChQRVJMKSAk KFRPUCkvdXRpbC9ta2xpbmsucGwgLi4vLi4vdGVzdCAkKFRFU1QpCisrCUAkKFBFUkwpICQoVE9Q KS91dGlsL21rbGluay5wbCAuLi8uLi9hcHBzICQoQVBQUykKKysKKytpbnN0YWxsOgorKwlAWyAt biAiJChJTlNUQUxMVE9QKSIgXSAjIHNob3VsZCBiZSBzZXQgYnkgdG9wIE1ha2VmaWxlLi4uCisr CUBoZWFkZXJsaXN0PSIkKEVYSEVBREVSKSI7IGZvciBpIGluICQkaGVhZGVybGlzdCA7IFwKKysJ ZG8gIFwKKysJKGNwICQkaSAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9v cGVuc3NsLyQkaTsgXAorKwljaG1vZCA2NDQgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1Ap L2luY2x1ZGUvb3BlbnNzbC8kJGkgKTsgXAorKwlkb25lOworKworK3RhZ3M6CisrCWN0YWdzICQo U1JDKQorKworK3Rlc3RzOgorKworK2xpbnQ6CisrCWxpbnQgLURMSU5UICQoSU5DTFVERVMpICQo U1JDKT5mbHVmZgorKworK2RlcGVuZDoKKysJQFsgLW4gIiQoTUFLRURFUEVORCkiIF0gIyBzaG91 bGQgYmUgc2V0IGJ5IHVwcGVyIE1ha2VmaWxlLi4uCisrCSQoTUFLRURFUEVORCkgLS0gJChDRkxB RykgJChJTkNMVURFUykgJChERVBGTEFHKSAtLSAkKFBST0dTKSAkKExJQlNSQykKKysKKytkY2xl YW46CisrCSQoUEVSTCkgLXBlICdpZiAoL14jIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FLykge3By aW50OyBleGl0KDApO30nICQoTUFLRUZJTEUpID5NYWtlZmlsZS5uZXcKKysJbXYgLWYgTWFrZWZp bGUubmV3ICQoTUFLRUZJTEUpCisrCisrY2xlYW46CisrCXJtIC1mICoubyAqLm9iaiBsaWIgdGFn cyBjb3JlIC5wdXJlIC5uZnMqICoub2xkICouYmFrIGZsdWZmCisrCisrJChFWEUpOiAkKFBST0dS QU0pLm8KKysJRklQU19TSEFfQVNNPSIiOyBmb3IgaSBpbiAkKFNIQTFfQVNNX09CSikgc2hhMjU2 Lm87IGRvIEZJUFNfU0hBX0FTTT0iJCRGSVBTX1NIQV9BU00gLi4vc2hhLyQkaSIgOyBkb25lOyBc CisrCWZvciBpIGluICQoQ1BVSURfT0JKKTsgZG8gRklQU19TSEFfQVNNPSIkJEZJUFNfU0hBX0FT TSAuLi8kJGkiIDsgZG9uZTsgXAorKwkkKENDKSAtbyAkQCAkKENGTEFHUykgJChQUk9HUkFNKS5v ICQkRklQU19TSEFfQVNNCisrCisrIyBETyBOT1QgREVMRVRFIFRISVMgTElORSAtLSBtYWtlIGRl cGVuZCBkZXBlbmRzIG9uIGl0LgorKworK2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Fl cy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmgKKytmaXBzLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9iaW8uaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKKytmaXBzLm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAor K2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9maXBzLmgKKytmaXBzLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaCAuLi8u Li9pbmNsdWRlL29wZW5zc2wvaG1hYy5oCisrZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv bGhhc2guaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21hYy5oCisrZmlwcy5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29u Zi5oCisrZmlwcy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaCAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb3NzbF90eXAuaAorK2ZpcHMubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3Jh bmQuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcnNhLmgKKytmaXBzLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9zYWZlc3RhY2suaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAorK2ZpcHMu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwcy5jIGZpcHNfbG9jbC5oCisr Zmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvYmlvLmgKKytmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvY3J5cHRvLmgKKytmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKKytmaXBzX2Flc19zZWxm dGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2ZpcHMuaAorK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFz aC5oCisrZmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMu aAorK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgK KytmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYu aAorK2ZpcHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5o CisrZmlwc19hZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgK KytmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgK KytmaXBzX2Flc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAorK2Zp cHNfYWVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNf YWVzX3NlbGZ0ZXN0LmMKKytmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvYXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAorK2ZpcHNfZGVzX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAorK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIu aAorK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8u Li9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCisrZmlwc19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2xoYXNoLmgKKytmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvb2JqX21hYy5oCisrZmlwc19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29iamVjdHMuaAorK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9vcGVuc3NsY29uZi5oCisrZmlwc19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL29wZW5zc2x2LmgKKytmaXBzX2Rlc19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvb3NzbF90eXAuaAorK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zYWZlc3RhY2suaAorK2ZpcHNfZGVzX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zdGFjay5oCisrZmlwc19kZXNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L3N5bWhhY2tzLmggZmlwc19kZXNfc2VsZnRlc3QuYworK2ZpcHNfZHJiZ19jdHIubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmgKKytmaXBz X2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaCAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvY3J5cHRvLmgKKytmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9l X29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaAorK2ZpcHNfZHJiZ19jdHIubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5k LmgKKytmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFjLmggLi4vLi4v aW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAorK2ZpcHNfZHJiZ19jdHIubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfZHJiZ19jdHIubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29wZW5zc2xjb25mLmgKKytmaXBzX2RyYmdfY3RyLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9vcGVuc3Nsdi5oCisrZmlwc19kcmJnX2N0ci5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3Nz bF90eXAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oCisrZmlwc19kcmJnX2N0ci5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKKytmaXBzX2RyYmdfY3RyLm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5o CisrZmlwc19kcmJnX2N0ci5vOiBmaXBzX2RyYmdfY3RyLmMgZmlwc19yYW5kX2xjbC5oCisrZmlw c19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9hc24xLmgKKytmaXBzX2RyYmdfaGFzaC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv YmlvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCisrZmlwc19kcmJnX2hhc2gubzog Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2cC5o CisrZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAorK2ZpcHNf ZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAorK2ZpcHNfZHJi Z19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9obWFjLmggLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29ial9tYWMuaAorK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9v YmplY3RzLmgKKytmaXBzX2RyYmdfaGFzaC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNz bGNvbmYuaAorK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Ns di5oCisrZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmgg Li4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaAorK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAorK2ZpcHNfZHJiZ19oYXNoLm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9zdGFjay5oCisrZmlwc19kcmJnX2hhc2gubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL3N5bWhhY2tzLmggZmlwc19kcmJnX2hhc2guYworK2ZpcHNfZHJiZ19oYXNoLm86IGZpcHNf cmFuZF9sY2wuaAorK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMu aCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oCisrZmlwc19kcmJnX2htYWMubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL2Jpby5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAorK2Zp cHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9ldnAuaAorK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9maXBzLmgKKytmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19y YW5kLmgKKytmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKKytmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCisrZmlwc19kcmJnX2htYWMubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBzX2RyYmdfaG1hYy5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvb3BlbnNzbHYuaAorK2ZpcHNfZHJiZ19obWFjLm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9vc3NsX3R5cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yYW5kLmgKKytmaXBzX2RyYmdf aG1hYy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKKytmaXBzX2RyYmdfaG1h Yy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAorK2ZpcHNfZHJiZ19obWFjLm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9zeW1oYWNrcy5oIGZpcHNfZHJiZ19obWFjLmMKKytmaXBzX2Ry YmdfaG1hYy5vOiBmaXBzX3JhbmRfbGNsLmgKKytmaXBzX2RyYmdfbGliLm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYXNuMS5oCisrZmlwc19kcmJn X2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2NyeXB0by5oCisrZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIu aCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKKytmaXBzX2RyYmdfbGliLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oCisrZmlwc19k cmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2htYWMuaAorK2ZpcHNfZHJiZ19saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2xoYXNoLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9tYWMuaAorK2ZpcHNfZHJiZ19saWIu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfZHJiZ19saWIubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBzX2RyYmdfbGliLm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCisrZmlwc19kcmJnX2xpYi5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvb3NzbF90eXAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oCisrZmlw c19kcmJnX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKKytmaXBzX2Ry YmdfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oIC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zeW1oYWNrcy5oCisrZmlwc19kcmJnX2xpYi5vOiBmaXBzX2RyYmdfbGliLmMgZmlwc19s b2NsLmggZmlwc19yYW5kX2xjbC5oCisrZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmgKKytmaXBzX2RyYmdfcmFu ZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Ny eXB0by5oCisrZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmgg Li4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCisrZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKKytmaXBzX2Ry YmdfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmgKKytmaXBzX2RyYmdf cmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9saGFzaC5oCisrZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29ial9t YWMuaAorK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgK KytmaXBzX2RyYmdfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAor K2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Nsdi5oCisrZmlw c19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL3JhbmQuaAorK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zYWZlc3RhY2suaAorK2ZpcHNfZHJiZ19yYW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNz bC9zdGFjay5oCisrZmlwc19kcmJnX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhh Y2tzLmggZmlwc19kcmJnX3JhbmQuYworK2ZpcHNfZHJiZ19yYW5kLm86IGZpcHNfcmFuZF9sY2wu aAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYWVzLmggLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvYmlvLmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2NyeXB0by5oCisrZmlwc19kcmJnX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9lX29zMi5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lcnIuaAorK2ZpcHNfZHJiZ19z ZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2ZpcHMuaAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv Zmlwc19yYW5kLmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2htYWMuaAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhh c2guaAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqX21h Yy5oCisrZmlwc19kcmJnX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3Rz LmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xj b25mLmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5z c2x2LmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29zc2xf dHlwLmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQu aAorK2ZpcHNfZHJiZ19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNr LmgKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgK KytmaXBzX2RyYmdfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmgg Zmlwc19kcmJnX3NlbGZ0ZXN0LmMKKytmaXBzX2RyYmdfc2VsZnRlc3QubzogZmlwc19kcmJnX3Nl bGZ0ZXN0LmggZmlwc19sb2NsLmggZmlwc19yYW5kX2xjbC5oCisrZmlwc19kc2Ffc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlv LmgKKytmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYm4uaCAuLi8u Li9pbmNsdWRlL29wZW5zc2wvY3J5cHRvLmgKKytmaXBzX2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvZHNhLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmgKKytmaXBz X2RzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmggLi4vLi4vaW5jbHVk ZS9vcGVuc3NsL2V2cC5oCisrZmlwc19kc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2ZpcHMuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAorK2ZpcHNfZHNhX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKKytmaXBzX2RzYV9zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCisrZmlwc19kc2Ffc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBzX2RzYV9zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAorK2ZpcHNfZHNhX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCisrZmlwc19kc2Ffc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCisrZmlwc19kc2Ffc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKKytmaXBzX2RzYV9zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBzX2RzYV9zZWxmdGVzdC5jCisrZmlw c19kc2Ffc2VsZnRlc3QubzogZmlwc19sb2NsLmgKKytmaXBzX2htYWNfc2VsZnRlc3QubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKKytm aXBzX2htYWNfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCisrZmlw c19obWFjX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9lX29zMi5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9lcnIuaAorK2ZpcHNfaG1hY19zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRl L29wZW5zc2wvZXZwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaAorK2ZpcHNfaG1hY19z ZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1hYy5oCisrZmlwc19obWFjX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCisrZmlwc19obWFjX3NlbGZ0ZXN0 Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKKytmaXBzX2htYWNfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAorK2ZpcHNfaG1hY19zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYuaAorK2ZpcHNfaG1hY19zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAorK2ZpcHNfaG1hY19zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAorK2ZpcHNfaG1hY19zZWxmdGVz dC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmgKKytmaXBzX2htYWNfc2VsZnRl c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0YWNrLmgKKytmaXBzX2htYWNfc2VsZnRlc3Qu bzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19obWFjX3NlbGZ0ZXN0LmMK KytmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Flcy5oIC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9hc24xLmgKKytmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5o IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9jcnlwdG8uaAorK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvZHNhLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmgKKytmaXBzX3Bv c3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9l dnAuaAorK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAorK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvaG1hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCisrZmlwc19wb3N0Lm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29i amVjdHMuaAorK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYu aAorK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAorK2ZpcHNfcG9zdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvcmFuZC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9yc2EuaAorK2ZpcHNfcG9zdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvc2FmZXN0YWNrLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N0 YWNrLmgKKytmaXBzX3Bvc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlw c19sb2NsLmggZmlwc19wb3N0LmMKKytmaXBzX3JhbmQubzogLi4vLi4vZV9vcy5oIC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9hZXMuaAorK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wv YXNuMS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9iaW8uaAorK2ZpcHNfcmFuZC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvY3J5cHRvLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmgKKytm aXBzX3JhbmQubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oIC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9ldnAuaAorK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oIC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9maXBzX3JhbmQuaAorK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvaG1hYy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5oCisrZmlwc19y YW5kLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmggLi4vLi4vaW5jbHVkZS9vcGVu c3NsL29iamVjdHMuaAorK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNz bGNvbmYuaAorK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaCAu Li8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAuaAorK2ZpcHNfcmFuZC5vOiAuLi8uLi9pbmNs dWRlL29wZW5zc2wvcmFuZC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAorK2Zp cHNfcmFuZC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaCAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvc3ltaGFja3MuaAorK2ZpcHNfcmFuZC5vOiBmaXBzX2xvY2wuaCBmaXBzX3JhbmQuYwor K2ZpcHNfcmFuZF9saWIubzogLi4vLi4vZV9vcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMu aAorK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvYmlvLmgKKytmaXBzX3JhbmRfbGliLm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9jcnlwdG8uaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZV9vczIuaAorK2ZpcHNfcmFuZF9s aWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9l dnAuaAorK2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2ZpcHMuaCAuLi8u Li9pbmNsdWRlL29wZW5zc2wvZmlwc19yYW5kLmgKKytmaXBzX3JhbmRfbGliLm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9obWFjLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2xoYXNoLmgKKytmaXBz X3JhbmRfbGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKKytmaXBzX3JhbmRf bGliLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmplY3RzLmgKKytmaXBzX3JhbmRfbGliLm86 IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vcGVuc3NsY29uZi5oCisrZmlwc19yYW5kX2xpYi5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAorK2ZpcHNfcmFuZF9saWIubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL29zc2xfdHlwLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3JhbmQuaAor K2ZpcHNfcmFuZF9saWIubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCisrZmlw c19yYW5kX2xpYi5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaCAuLi8uLi9pbmNsdWRl L29wZW5zc2wvc3ltaGFja3MuaAorK2ZpcHNfcmFuZF9saWIubzogZmlwc19yYW5kX2xpYi5jCisr Zmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hZXMuaCAuLi8uLi9p bmNsdWRlL29wZW5zc2wvYXNuMS5oCisrZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1 ZGUvb3BlbnNzbC9iaW8uaAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29w ZW5zc2wvY3J5cHRvLmgKKytmaXBzX3JhbmRfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vyci5oCisrZmlwc19yYW5kX3NlbGZ0 ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9ldnAuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wv Zmlwcy5oCisrZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBz X3JhbmQuaAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvaG1h Yy5oCisrZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFzaC5o CisrZmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgK KytmaXBzX3JhbmRfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29iamVjdHMuaAor K2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbGNvbmYu aAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYu aAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3NzbF90eXAu aAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvcmFuZC5oCisr Zmlwc19yYW5kX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zYWZlc3RhY2suaAor K2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3RhY2suaAorK2Zp cHNfcmFuZF9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvc3ltaGFja3MuaCBmaXBz X2xvY2wuaAorK2ZpcHNfcmFuZF9zZWxmdGVzdC5vOiBmaXBzX3JhbmRfc2VsZnRlc3QuYworK2Zp cHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5j bHVkZS9vcGVuc3NsL2Jpby5oCisrZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2JuLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCisrZmlwc19yc2Ffc2Vs ZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9vcGVu c3NsL2Vyci5oCisrZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2V2 cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKKytmaXBzX3JzYV9zZWxmdGVzdC5vOiAu Li8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAorK2ZpcHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKKytmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCisrZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9p bmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAorK2ZpcHNfcnNhX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCisrZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5j bHVkZS9vcGVuc3NsL3JzYS5oCisrZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL3NhZmVzdGFjay5oCisrZmlwc19yc2Ffc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9v cGVuc3NsL3N0YWNrLmgKKytmaXBzX3JzYV9zZWxmdGVzdC5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvc3ltaGFja3MuaCBmaXBzX3JzYV9zZWxmdGVzdC5jCisrZmlwc19yc2FfeDkzMWcubzogLi4v Li4vaW5jbHVkZS9vcGVuc3NsL2FzbjEuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYmlvLmgKKytm aXBzX3JzYV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvYm4uaCAuLi8uLi9pbmNsdWRl L29wZW5zc2wvY3J5cHRvLmgKKytmaXBzX3JzYV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29wZW5z c2wvZV9vczIuaCAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZXJyLmgKKytmaXBzX3JzYV94OTMxZy5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvZmlwcy5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9saGFz aC5oCisrZmlwc19yc2FfeDkzMWcubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25m LmgKKytmaXBzX3JzYV94OTMxZy5vOiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAor K2ZpcHNfcnNhX3g5MzFnLm86IC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oIC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9yc2EuaAorK2ZpcHNfcnNhX3g5MzFnLm86IC4uLy4uL2luY2x1ZGUv b3BlbnNzbC9zYWZlc3RhY2suaAorK2ZpcHNfcnNhX3g5MzFnLm86IC4uLy4uL2luY2x1ZGUvb3Bl bnNzbC9zdGFjay5oCisrZmlwc19yc2FfeDkzMWcubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5 bWhhY2tzLmggZmlwc19yc2FfeDkzMWcuYworK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4uL2lu Y2x1ZGUvb3BlbnNzbC9hc24xLmggLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Jpby5oCisrZmlwc19z aGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2NyeXB0by5oCisrZmlwc19zaGFf c2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL2Vfb3MyLmggLi4vLi4vaW5jbHVkZS9v cGVuc3NsL2Vyci5oCisrZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3Ns L2V2cC5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9maXBzLmgKKytmaXBzX3NoYV9zZWxmdGVzdC5v OiAuLi8uLi9pbmNsdWRlL29wZW5zc2wvbGhhc2guaAorK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4u Ly4uL2luY2x1ZGUvb3BlbnNzbC9vYmpfbWFjLmgKKytmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvb2JqZWN0cy5oCisrZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL29wZW5zc2xjb25mLmgKKytmaXBzX3NoYV9zZWxmdGVzdC5vOiAuLi8u Li9pbmNsdWRlL29wZW5zc2wvb3BlbnNzbHYuaAorK2ZpcHNfc2hhX3NlbGZ0ZXN0Lm86IC4uLy4u L2luY2x1ZGUvb3BlbnNzbC9vc3NsX3R5cC5oCisrZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL3NhZmVzdGFjay5oCisrZmlwc19zaGFfc2VsZnRlc3QubzogLi4vLi4v aW5jbHVkZS9vcGVuc3NsL3NoYS5oIC4uLy4uL2luY2x1ZGUvb3BlbnNzbC9zdGFjay5oCisrZmlw c19zaGFfc2VsZnRlc3QubzogLi4vLi4vaW5jbHVkZS9vcGVuc3NsL3N5bWhhY2tzLmggZmlwc19z aGFfc2VsZnRlc3QuYworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2htYWMvaG1hYy5j LmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL2htYWMvaG1hYy5jCistLS0gb3BlbnNzbC0xLjAu MmMvY3J5cHRvL2htYWMvaG1hYy5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyNy4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vaG1hYy9obWFjLmMJMjAxNS0wNi0xNSAx NzozMzoxMS43MDc2ODI5MDggKzAyMDAKK0BAIC04OSwxMiArODksNiBAQCBpbnQgSE1BQ19Jbml0 X2V4KEhNQUNfQ1RYICpjdHgsIGNvbnN0IHZvCisgICAgICAgICAgICAgRVZQZXJyKEVWUF9GX0hN QUNfSU5JVF9FWCwgRVZQX1JfRElTQUJMRURfRk9SX0ZJUFMpOworICAgICAgICAgICAgIHJldHVy biAwOworICAgICAgICAgfQorLSAgICAgICAgLyoKKy0gICAgICAgICAqIE90aGVyIGFsZ29yaXRo bSBibG9ja2luZyB3aWxsIGJlIGRvbmUgaW4gRklQU19jbWFjX2luaXQsIHZpYQorLSAgICAgICAg ICogRklQU19obWFjX2luaXRfZXgoKS4KKy0gICAgICAgICAqLworLSAgICAgICAgaWYgKCFpbXBs ICYmICFjdHgtPmlfY3R4LmVuZ2luZSkKKy0gICAgICAgICAgICByZXR1cm4gRklQU19obWFjX2lu aXRfZXgoY3R4LCBrZXksIGxlbiwgbWQsIE5VTEwpOworICAgICB9CisgI2VuZGlmCisgICAgIC8q IElmIHdlIGFyZSBjaGFuZ2luZyBNRCB0aGVuIHdlIG11c3QgaGF2ZSBhIGtleSAqLworQEAgLTEx MSw2ICsxMDUsMTMgQEAgaW50IEhNQUNfSW5pdF9leChITUFDX0NUWCAqY3R4LCBjb25zdCB2bwor ICAgICB9CisgCisgICAgIGlmIChrZXkgIT0gTlVMTCkgeworKyNpZmRlZiBPUEVOU1NMX0ZJUFMK KysgICAgICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKG1kLT5mbGFncyAmIEVWUF9NRF9GTEFHX0ZJ UFMpCisrICAgICAgICAgICAgJiYgKCEoY3R4LT5tZF9jdHguZmxhZ3MgJiBFVlBfTURfQ1RYX0ZM QUdfTk9OX0ZJUFNfQUxMT1cpCisrICAgICAgICAgICAgICAgIHx8ICEoY3R4LT5pX2N0eC5mbGFn cyAmIEVWUF9NRF9DVFhfRkxBR19OT05fRklQU19BTExPVykKKysgICAgICAgICAgICAgICAgfHwg IShjdHgtPm9fY3R4LmZsYWdzICYgRVZQX01EX0NUWF9GTEFHX05PTl9GSVBTX0FMTE9XKSkpCisr ICAgICAgICAgICAgZ290byBlcnI7CisrI2VuZGlmCisgICAgICAgICByZXNldCA9IDE7CisgICAg ICAgICBqID0gRVZQX01EX2Jsb2NrX3NpemUobWQpOworICAgICAgICAgT1BFTlNTTF9hc3NlcnQo aiA8PSAoaW50KXNpemVvZihjdHgtPmtleSkpOworQEAgLTE2NCwxMCArMTY1LDYgQEAgaW50IEhN QUNfSW5pdChITUFDX0NUWCAqY3R4LCBjb25zdCB2b2lkCisgCisgaW50IEhNQUNfVXBkYXRlKEhN QUNfQ1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4pCisgewor LSNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAgaWYgKEZJUFNfbW9kZSgpICYmICFjdHgtPmlfY3R4 LmVuZ2luZSkKKy0gICAgICAgIHJldHVybiBGSVBTX2htYWNfdXBkYXRlKGN0eCwgZGF0YSwgbGVu KTsKKy0jZW5kaWYKKyAgICAgaWYgKCFjdHgtPm1kKQorICAgICAgICAgcmV0dXJuIDA7CisgCitA QCAtMTc4LDEwICsxNzUsNiBAQCBpbnQgSE1BQ19GaW5hbChITUFDX0NUWCAqY3R4LCB1bnNpZ25l ZCBjCisgeworICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgdW5zaWduZWQgY2hhciBidWZbRVZQ X01BWF9NRF9TSVpFXTsKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistICAgIGlmIChGSVBTX21vZGUo KSAmJiAhY3R4LT5pX2N0eC5lbmdpbmUpCistICAgICAgICByZXR1cm4gRklQU19obWFjX2ZpbmFs KGN0eCwgbWQsIGxlbik7CistI2VuZGlmCisgCisgICAgIGlmICghY3R4LT5tZCkKKyAgICAgICAg IGdvdG8gZXJyOworQEAgLTIyNSwxMiArMjE4LDYgQEAgaW50IEhNQUNfQ1RYX2NvcHkoSE1BQ19D VFggKmRjdHgsIEhNQUNfQworIAorIHZvaWQgSE1BQ19DVFhfY2xlYW51cChITUFDX0NUWCAqY3R4 KQorIHsKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistICAgIGlmIChGSVBTX21vZGUoKSAmJiAhY3R4 LT5pX2N0eC5lbmdpbmUpIHsKKy0gICAgICAgIEZJUFNfaG1hY19jdHhfY2xlYW51cChjdHgpOwor LSAgICAgICAgcmV0dXJuOworLSAgICB9CistI2VuZGlmCisgICAgIEVWUF9NRF9DVFhfY2xlYW51 cCgmY3R4LT5pX2N0eCk7CisgICAgIEVWUF9NRF9DVFhfY2xlYW51cCgmY3R4LT5vX2N0eCk7Cisg ICAgIEVWUF9NRF9DVFhfY2xlYW51cCgmY3R4LT5tZF9jdHgpOworZGlmZiAtdXAgb3BlbnNzbC0x LjAuMmMvY3J5cHRvL21kYzIvbWRjMmRnc3QuYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9t ZGMyL21kYzJkZ3N0LmMKKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vbWRjMi9tZGMyZGdzdC5j LmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEu MC4yYy9jcnlwdG8vbWRjMi9tZGMyZGdzdC5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDEyMjg0MDc0 ICswMjAwCitAQCAtNzYsNyArNzYsNyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICooKGMp KyspPSh1bnNpZ25lZCBjaGFyKSgoKGwpPj4yNEwpJjB4ZmYpKQorIAorIHN0YXRpYyB2b2lkIG1k YzJfYm9keShNREMyX0NUWCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBsZW4p OworLWZpcHNfbWRfaW5pdChNREMyKQorK25vbmZpcHNfbWRfaW5pdChNREMyKQorIHsKKyAgICAg Yy0+bnVtID0gMDsKKyAgICAgYy0+cGFkX3R5cGUgPSAxOworZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmMvY3J5cHRvL21kMi9tZDJfZGdzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL21kMi9t ZDJfZGdzdC5jCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL21kMi9tZDJfZGdzdC5jLmZpcHMJ MjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9j cnlwdG8vbWQyL21kMl9kZ3N0LmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMTIyODQwNzQgKzAyMDAK K0BAIC02Miw2ICs2MiwxMSBAQAorICNpbmNsdWRlIDxvcGVuc3NsL21kMi5oPgorICNpbmNsdWRl IDxvcGVuc3NsL29wZW5zc2x2Lmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+CisrI2lm ZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisr CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisgCisgY29uc3QgY2hhciBNRDJfdmVyc2lvbltd ID0gIk1EMiIgT1BFTlNTTF9WRVJTSU9OX1BURVhUOworIAorQEAgLTExOSw3ICsxMjQsNyBAQCBj b25zdCBjaGFyICpNRDJfb3B0aW9ucyh2b2lkKQorICAgICAgICAgcmV0dXJuICgibWQyKGludCki KTsKKyB9CisgCistZmlwc19tZF9pbml0KE1EMikKKytub25maXBzX21kX2luaXQoTUQyKQorIHsK KyAgICAgYy0+bnVtID0gMDsKKyAgICAgbWVtc2V0KGMtPnN0YXRlLCAwLCBzaXplb2YgYy0+c3Rh dGUpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL21kNC9tZDRfZGdzdC5jLmZpcHMg b3BlbnNzbC0xLjAuMmMvY3J5cHRvL21kNC9tZDRfZGdzdC5jCistLS0gb3BlbnNzbC0xLjAuMmMv Y3J5cHRvL21kNC9tZDRfZGdzdC5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vbWQ0L21kNF9kZ3N0LmMJMjAxNS0wNi0x NSAxNzozMDowMC4wMTMyODQwOTcgKzAyMDAKK0BAIC03Miw3ICs3Miw3IEBAIGNvbnN0IGNoYXIg TUQ0X3ZlcnNpb25bXSA9ICJNRDQiIE9QRU5TU0wKKyAjZGVmaW5lIElOSVRfREFUQV9DICh1bnNp Z25lZCBsb25nKTB4OThiYWRjZmVMCisgI2RlZmluZSBJTklUX0RBVEFfRCAodW5zaWduZWQgbG9u ZykweDEwMzI1NDc2TAorIAorLWZpcHNfbWRfaW5pdChNRDQpCisrbm9uZmlwc19tZF9pbml0KE1E NCkKKyB7CisgICAgIG1lbXNldChjLCAwLCBzaXplb2YoKmMpKTsKKyAgICAgYy0+QSA9IElOSVRf REFUQV9BOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL21kNS9tZDVfZGdzdC5jLmZp cHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL21kNS9tZDVfZGdzdC5jCistLS0gb3BlbnNzbC0xLjAu MmMvY3J5cHRvL21kNS9tZDVfZGdzdC5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vbWQ1L21kNV9kZ3N0LmMJMjAxNS0w Ni0xNSAxNzozMDowMC4wMTMyODQwOTcgKzAyMDAKK0BAIC03Miw3ICs3Miw3IEBAIGNvbnN0IGNo YXIgTUQ1X3ZlcnNpb25bXSA9ICJNRDUiIE9QRU5TU0wKKyAjZGVmaW5lIElOSVRfREFUQV9DICh1 bnNpZ25lZCBsb25nKTB4OThiYWRjZmVMCisgI2RlZmluZSBJTklUX0RBVEFfRCAodW5zaWduZWQg bG9uZykweDEwMzI1NDc2TAorIAorLWZpcHNfbWRfaW5pdChNRDUpCisrbm9uZmlwc19tZF9pbml0 KE1ENSkKKyB7CisgICAgIG1lbXNldChjLCAwLCBzaXplb2YoKmMpKTsKKyAgICAgYy0+QSA9IElO SVRfREFUQV9BOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL29fZmlwcy5jLmZpcHMg b3BlbnNzbC0xLjAuMmMvY3J5cHRvL29fZmlwcy5jCistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRv L29fZmlwcy5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBv cGVuc3NsLTEuMC4yYy9jcnlwdG8vb19maXBzLmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMTMyODQw OTcgKzAyMDAKK0BAIC04MCw2ICs4MCw4IEBAIGludCBGSVBTX21vZGVfc2V0KGludCByKQorICMg aWZuZGVmIEZJUFNfQVVUSF9VU0VSX1BBU1MKKyAjICBkZWZpbmUgRklQU19BVVRIX1VTRVJfUEFT UyAgICAgIkRlZmF1bHQgRklQUyBDcnlwdG8gVXNlciBQYXNzd29yZCIKKyAjIGVuZGlmCisrICAg IGlmIChyICYmIEZJUFNfbW9kdWxlX21vZGUoKSkgLyogY2FuIGJlIGltcGxpY2l0bHkgaW5pdGlh bGl6ZWQgYnkgT1BFTlNTTF9pbml0KCkgKi8KKysgICAgICAgIHJldHVybiAxOworICAgICBpZiAo IUZJUFNfbW9kdWxlX21vZGVfc2V0KHIsIEZJUFNfQVVUSF9VU0VSX1BBU1MpKQorICAgICAgICAg cmV0dXJuIDA7CisgICAgIGlmIChyKQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL29f aW5pdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL29faW5pdC5jCistLS0gb3BlbnNzbC0x LjAuMmMvY3J5cHRvL29faW5pdC5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vb19pbml0LmMJMjAxNS0wNi0xNSAxNzoz MDowMC4wMTMyODQwOTcgKzAyMDAKK0BAIC01Niw4ICs1NiwzNyBAQAorICNpbmNsdWRlIDxlX29z Lmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisgI2lmZGVmIE9QRU5TU0xfRklQUworKyMg aW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyMgaW5jbHVk ZSA8ZmNudGwuaD4KKysjIGluY2x1ZGUgPHVuaXN0ZC5oPgorKyMgaW5jbHVkZSA8ZXJybm8uaD4K KysjIGluY2x1ZGUgPHN0ZGxpYi5oPgorICMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisgIyBp bmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKysKKysjIGRlZmluZSBGSVBTX01PREVfU1dJVENIX0ZJ TEUgIi9wcm9jL3N5cy9jcnlwdG8vZmlwc19lbmFibGVkIgorKworK3N0YXRpYyB2b2lkIGluaXRf Zmlwc19tb2RlKHZvaWQpCisreworKyAgICBjaGFyIGJ1ZlsyXSA9ICIwIjsKKysgICAgaW50IGZk OworKworKyAgICBpZiAoZ2V0ZW52KCJPUEVOU1NMX0ZPUkNFX0ZJUFNfTU9ERSIpICE9IE5VTEwp IHsKKysgICAgICAgIGJ1ZlswXSA9ICcxJzsKKysgICAgfSBlbHNlIGlmICgoZmQgPSBvcGVuKEZJ UFNfTU9ERV9TV0lUQ0hfRklMRSwgT19SRE9OTFkpKSA+PSAwKSB7CisrICAgICAgICB3aGlsZSAo cmVhZChmZCwgYnVmLCBzaXplb2YoYnVmKSkgPCAwICYmIGVycm5vID09IEVJTlRSKSA7CisrICAg ICAgICBjbG9zZShmZCk7CisrICAgIH0KKysgICAgLyogRmFpbHVyZSByZWFkaW5nIHRoZSBmaXBz IG1vZGUgc3dpdGNoIGZpbGUgbWVhbnMganVzdCBub3QKKysgICAgICogc3dpdGNoaW5nIGludG8g RklQUyBtb2RlLiBXZSB3b3VsZCBicmVhayB0b28gbWFueSB0aGluZ3MKKysgICAgICogb3RoZXJ3 aXNlLi4KKysgICAgICovCisrCisrICAgIGlmIChidWZbMF0gPT0gJzEnKSB7CisrICAgICAgICBG SVBTX21vZGVfc2V0KDEpOworKyAgICB9CisrfQorICNlbmRpZgorIAorIC8qCitAQCAtNjUsMTkg Kzk0LDI2IEBACisgICogc2V0cyBGSVBTIGNhbGxiYWNrcworICAqLworIAorLXZvaWQgT1BFTlNT TF9pbml0KHZvaWQpCisrdm9pZCBPUEVOU1NMX2luaXRfbGlicmFyeSh2b2lkKQorIHsKKyAgICAg c3RhdGljIGludCBkb25lID0gMDsKKyAgICAgaWYgKGRvbmUpCisgICAgICAgICByZXR1cm47Cisg ICAgIGRvbmUgPSAxOworICNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAgRklQU19zZXRfbG9ja2lu Z19jYWxsYmFja3MoQ1JZUFRPX2xvY2ssIENSWVBUT19hZGRfbG9jayk7CistICAgIEZJUFNfc2V0 X2Vycm9yX2NhbGxiYWNrcyhFUlJfcHV0X2Vycm9yLCBFUlJfYWRkX2Vycm9yX3ZkYXRhKTsKKy0g ICAgRklQU19zZXRfbWFsbG9jX2NhbGxiYWNrcyhDUllQVE9fbWFsbG9jLCBDUllQVE9fZnJlZSk7 CisgICAgIFJBTkRfaW5pdF9maXBzKCk7CisrICAgIGluaXRfZmlwc19tb2RlKCk7CisrICAgIGlm ICghRklQU19tb2RlKCkpIHsKKysgICAgICAgIC8qIENsZWFuIHVwIHByZW1hdHVyZWx5IHNldCBk ZWZhdWx0IHJhbmQgbWV0aG9kICovCisrICAgICAgICBSQU5EX3NldF9yYW5kX21ldGhvZChOVUxM KTsKKysgICAgfQorICNlbmRpZgorICNpZiAwCisgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FsbGVk IE9QRU5TU0xfaW5pdFxuIik7CisgI2VuZGlmCisgfQorKworK3ZvaWQgT1BFTlNTTF9pbml0KHZv aWQpCisreworKyAgICBPUEVOU1NMX2luaXRfbGlicmFyeSgpOworK30KK2RpZmYgLXVwIG9wZW5z c2wtMS4wLjJjL2NyeXB0by9vcGVuc3NsY29uZi5oLmluLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5 cHRvL29wZW5zc2xjb25mLmguaW4KKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vb3BlbnNzbGNv bmYuaC5pbi5maXBzCTIwMTUtMDYtMTIgMTY6NTE6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3Bl bnNzbC0xLjAuMmMvY3J5cHRvL29wZW5zc2xjb25mLmguaW4JMjAxNS0wNi0xNSAxNzozMDowMC4w MTMyODQwOTcgKzAyMDAKK0BAIC0xLDUgKzEsMjAgQEAKKyAvKiBjcnlwdG8vb3BlbnNzbGNvbmYu aC5pbiAqLworIAorKyNpZmRlZiBPUEVOU1NMX0RPSU5HX01BS0VERVBFTkQKKysKKysvKiBJbmNs dWRlIGFueSBzeW1ib2xzIGhlcmUgdGhhdCBoYXZlIHRvIGJlIGV4cGxpY2l0bHkgc2V0IHRvIGVu YWJsZSBhIGZlYXR1cmUKKysgKiB0aGF0IHNob3VsZCBiZSB2aXNpYmxlIHRvIG1ha2VkZXBlbmQu CisrICoKKysgKiBbT3VyICJtYWtlIGRlcGVuZCIgZG9lc24ndCBhY3R1YWxseSBsb29rIGF0IHRo aXMsIHdlIHVzZSBhY3R1YWwgYnVpbGQgc2V0dGluZ3MKKysgKiBpbnN0ZWFkOyB3ZSB3YW50IHRv IG1ha2UgaXQgZWFzeSB0byByZW1vdmUgc3ViZGlyZWN0b3JpZXMgd2l0aCBkaXNhYmxlZCBhbGdv cml0aG1zLl0KKysgKi8KKysKKysjaWZuZGVmIE9QRU5TU0xfRklQUworKyNkZWZpbmUgT1BFTlNT TF9GSVBTCisrI2VuZGlmCisrCisrI2VuZGlmCisrCisgLyogR2VuZXJhdGUgODAzODYgY29kZT8g Ki8KKyAjdW5kZWYgSTM4Nl9PTkxZCisgCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8v cmFuZC9tZF9yYW5kLmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vcmFuZC9tZF9yYW5kLmMK Ky0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vcmFuZC9tZF9yYW5kLmMuZmlwcwkyMDE1LTA2LTEy IDE2OjUxOjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9yYW5k L21kX3JhbmQuYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxMzI4NDA5NyArMDIwMAorQEAgLTM5MSw3 ICszOTEsMTAgQEAgaW50IHNzbGVheV9yYW5kX2J5dGVzKHVuc2lnbmVkIGNoYXIgKmJ1ZgorICAg ICBDUllQVE9fd191bmxvY2soQ1JZUFRPX0xPQ0tfUkFORDIpOworICAgICBjcnlwdG9fbG9ja19y YW5kID0gMTsKKyAKKy0gICAgaWYgKCFpbml0aWFsaXplZCkgeworKyAgICAvKiBhbHdheXMgcG9s bCBmb3IgZXh0ZXJuYWwgZW50cm9weSBpbiBGSVBTIG1vZGUsIGRyYmcgcHJvdmlkZXMgdGhlIAor KyAgICAgKiBleHBhbnNpb24KKysgICAgICovCisrICAgIGlmICghaW5pdGlhbGl6ZWQgfHwgRklQ U19tb2R1bGVfbW9kZSgpKSB7CisgICAgICAgICBSQU5EX3BvbGwoKTsKKyAgICAgICAgIGluaXRp YWxpemVkID0gMTsKKyAgICAgfQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JhbmQv cmFuZC5oLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JhbmQvcmFuZC5oCistLS0gb3BlbnNz bC0xLjAuMmMvY3J5cHRvL3JhbmQvcmFuZC5oLmZpcHMJMjAxNS0wNi0xNSAxNzoyOTo1OS43NzMy Nzg2MDEgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vcmFuZC9yYW5kLmgJMjAxNS0w Ni0xNSAxNzozMDowMC4wMTMyODQwOTcgKzAyMDAKK0BAIC0xMzMsMTYgKzEzMywzNCBAQCB2b2lk IEVSUl9sb2FkX1JBTkRfc3RyaW5ncyh2b2lkKTsKKyAvKiBFcnJvciBjb2RlcyBmb3IgdGhlIFJB TkQgZnVuY3Rpb25zLiAqLworIAorIC8qIEZ1bmN0aW9uIGNvZGVzLiAqLworKyMgZGVmaW5lIFJB TkRfRl9FTkdfUkFORF9HRVRfUkFORF9NRVRIT0QgICAgICAgICAgICAgICAgICAxMDgKKysjIGRl ZmluZSBSQU5EX0ZfRklQU19SQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAz CisrIyBkZWZpbmUgUkFORF9GX0ZJUFNfUkFORF9CWVRFUyAgICAgICAgICAgICAgICAgICAgICAg ICAgIDEwMgorKyMgZGVmaW5lIFJBTkRfRl9GSVBTX1JBTkRfU0VUX0RUICAgICAgICAgICAgICAg ICAgICAgICAgICAxMDYKKysjIGRlZmluZSBSQU5EX0ZfRklQU19YOTMxX1NFVF9EVCAgICAgICAg ICAgICAgICAgICAgICAgICAgMTA2CisrIyBkZWZpbmUgUkFORF9GX0ZJUFNfU0VUX0RUICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEwNAorKyMgZGVmaW5lIFJBTkRfRl9GSVBTX1NFVF9Q Uk5HX1NFRUQgICAgICAgICAgICAgICAgICAgICAgICAxMDcKKysjIGRlZmluZSBSQU5EX0ZfRklQ U19TRVRfVEVTVF9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgMTA1CisgIyBkZWZpbmUgUkFO RF9GX1JBTkRfR0VUX1JBTkRfTUVUSE9EICAgICAgICAgICAgICAgICAgICAgIDEwMQorLSMgZGVm aW5lIFJBTkRfRl9SQU5EX0lOSVRfRklQUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDIK KysjIGRlZmluZSBSQU5EX0ZfUkFORF9JTklUX0ZJUFMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMTA5CisgIyBkZWZpbmUgUkFORF9GX1NTTEVBWV9SQU5EX0JZVEVTICAgICAgICAgICAgICAg ICAgICAgICAgIDEwMAorIAorIC8qIFJlYXNvbiBjb2Rlcy4gKi8KKy0jIGRlZmluZSBSQU5EX1Jf RFVBTF9FQ19EUkJHX0RJU0FCTEVEICAgICAgICAgICAgICAgICAgICAgMTA0CistIyBkZWZpbmUg UkFORF9SX0VSUk9SX0lOSVRJQUxJU0lOR19EUkJHICAgICAgICAgICAgICAgICAgIDEwMgorLSMg ZGVmaW5lIFJBTkRfUl9FUlJPUl9JTlNUQU5USUFUSU5HX0RSQkcgICAgICAgICAgICAgICAgICAx MDMKKy0jIGRlZmluZSBSQU5EX1JfTk9fRklQU19SQU5ET01fTUVUSE9EX1NFVCAgICAgICAgICAg ICAgICAgMTAxCisrIyBkZWZpbmUgUkFORF9SX0RVQUxfRUNfRFJCR19ESVNBQkxFRCAgICAgICAg ICAgICAgICAgICAgIDExNAorKyMgZGVmaW5lIFJBTkRfUl9FUlJPUl9JTklUSUFMSVNJTkdfRFJC RyAgICAgICAgICAgICAgICAgICAxMTIKKysjIGRlZmluZSBSQU5EX1JfRVJST1JfSU5TVEFOVElB VElOR19EUkJHICAgICAgICAgICAgICAgICAgMTEzCisrIyBkZWZpbmUgUkFORF9SX05PTl9GSVBT X01FVEhPRCAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNQorKyMgZGVmaW5lIFJBTkRfUl9O T1RfSU5fVEVTVF9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAxMDYKKysjIGRlZmluZSBS QU5EX1JfTk9fRklQU19SQU5ET01fTUVUSE9EX1NFVCAgICAgICAgICAgICAgICAgMTExCisrIyBk ZWZpbmUgUkFORF9SX05PX0tFWV9TRVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEw NworKyMgZGVmaW5lIFJBTkRfUl9QUk5HX0FTS0lOR19GT1JfVE9PX01VQ0ggICAgICAgICAgICAg ICAgICAxMDEKKysjIGRlZmluZSBSQU5EX1JfUFJOR19FUlJPUiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTA4CisrIyBkZWZpbmUgUkFORF9SX1BSTkdfS0VZRUQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDEwOQorKyMgZGVmaW5lIFJBTkRfUl9QUk5HX05PVF9SRUtFWUVE ICAgICAgICAgICAgICAgICAgICAgICAgICAxMDIKKysjIGRlZmluZSBSQU5EX1JfUFJOR19OT1Rf UkVTRUVERUQgICAgICAgICAgICAgICAgICAgICAgICAgMTAzCisgIyBkZWZpbmUgUkFORF9SX1BS TkdfTk9UX1NFRURFRCAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMAorKyMgZGVmaW5lIFJB TkRfUl9QUk5HX1NFRURfTVVTVF9OT1RfTUFUQ0hfS0VZICAgICAgICAgICAgICAxMTAKKysjIGRl ZmluZSBSQU5EX1JfUFJOR19TVFVDSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0 CisgCisgI2lmZGVmICBfX2NwbHVzcGx1cworIH0KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2Ny eXB0by9yaXBlbWQvcm1kX2Rnc3QuYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9yaXBlbWQv cm1kX2Rnc3QuYworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9yaXBlbWQvcm1kX2Rnc3QuYy5m aXBzCTIwMTUtMDYtMTIgMTY6NTE6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAu MmMvY3J5cHRvL3JpcGVtZC9ybWRfZGdzdC5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDE0Mjg0MTE5 ICswMjAwCitAQCAtNzAsNyArNzAsNyBAQCB2b2lkIHJpcGVtZDE2MF9ibG9ja194ODYoUklQRU1E MTYwX0NUWCAqCisgdm9pZCByaXBlbWQxNjBfYmxvY2soUklQRU1EMTYwX0NUWCAqYywgdW5zaWdu ZWQgbG9uZyAqcCwgc2l6ZV90IG51bSk7CisgI2VuZGlmCisgCistZmlwc19tZF9pbml0KFJJUEVN RDE2MCkKKytub25maXBzX21kX2luaXQoUklQRU1EMTYwKQorIHsKKyAgICAgbWVtc2V0KGMsIDAs IHNpemVvZigqYykpOworICAgICBjLT5BID0gUklQRU1EMTYwX0E7CitkaWZmIC11cCBvcGVuc3Ns LTEuMC4yYy9jcnlwdG8vcnNhL3JzYV9jcnB0LmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8v cnNhL3JzYV9jcnB0LmMKKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vcnNhL3JzYV9jcnB0LmMu ZmlwcwkyMDE1LTA2LTEyIDE2OjUxOjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4w LjJjL2NyeXB0by9yc2EvcnNhX2NycHQuYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxNDI4NDExOSAr MDIwMAorQEAgLTg5LDkgKzg5LDkgQEAgaW50IFJTQV9wcml2YXRlX2VuY3J5cHQoaW50IGZsZW4s IGNvbnN0CisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdG8sIFJTQSAq cnNhLCBpbnQgcGFkZGluZykKKyB7CisgI2lmZGVmIE9QRU5TU0xfRklQUworLSAgICBpZiAoRklQ U19tb2RlKCkgJiYgIShyc2EtPm1ldGgtPmZsYWdzICYgUlNBX0ZMQUdfRklQU19NRVRIT0QpCist ICAgICAgICAmJiAhKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykpIHsKKy0g ICAgICAgIFJTQWVycihSU0FfRl9SU0FfUFJJVkFURV9FTkNSWVBULCBSU0FfUl9OT05fRklQU19S U0FfTUVUSE9EKTsKKysgICAgaWYgKEZJUFNfbW9kZSgpICYmICEocnNhLT5mbGFncyAmIFJTQV9G TEFHX05PTl9GSVBTX0FMTE9XKSkgeworKyAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9QUklWQVRF X0VOQ1JZUFQsCisrICAgICAgICAgICAgICAgUlNBX1JfT1BFUkFUSU9OX05PVF9BTExPV0VEX0lO X0ZJUFNfTU9ERSk7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KKyAjZW5kaWYKK0BAIC0x MTUsOSArMTE1LDkgQEAgaW50IFJTQV9wdWJsaWNfZGVjcnlwdChpbnQgZmxlbiwgY29uc3QgdQor ICAgICAgICAgICAgICAgICAgICAgICAgUlNBICpyc2EsIGludCBwYWRkaW5nKQorIHsKKyAjaWZk ZWYgT1BFTlNTTF9GSVBTCistICAgIGlmIChGSVBTX21vZGUoKSAmJiAhKHJzYS0+bWV0aC0+Zmxh Z3MgJiBSU0FfRkxBR19GSVBTX01FVEhPRCkKKy0gICAgICAgICYmICEocnNhLT5mbGFncyAmIFJT QV9GTEFHX05PTl9GSVBTX0FMTE9XKSkgeworLSAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9QVUJM SUNfREVDUllQVCwgUlNBX1JfTk9OX0ZJUFNfUlNBX01FVEhPRCk7CisrICAgIGlmIChGSVBTX21v ZGUoKSAmJiAhKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykpIHsKKysgICAg ICAgIFJTQWVycihSU0FfRl9SU0FfUFVCTElDX0RFQ1JZUFQsCisrICAgICAgICAgICAgICAgUlNB X1JfT1BFUkFUSU9OX05PVF9BTExPV0VEX0lOX0ZJUFNfTU9ERSk7CisgICAgICAgICByZXR1cm4g LTE7CisgICAgIH0KKyAjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9yc2Ev cnNhX2VheS5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JzYS9yc2FfZWF5LmMKKy0tLSBv cGVuc3NsLTEuMC4yYy9jcnlwdG8vcnNhL3JzYV9lYXkuYy5maXBzCTIwMTUtMDYtMTIgMTY6NTE6 MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JzYS9yc2FfZWF5 LmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMTQyODQxMTkgKzAyMDAKK0BAIC0xMTQsNiArMTE0LDEw IEBACisgI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4K KyAjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisrI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Cisr I2lmZGVmIE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlm CisgCisgI2lmbmRlZiBSU0FfTlVMTAorIAorQEAgLTE0MCw3ICsxNDQsNyBAQCBzdGF0aWMgUlNB X01FVEhPRCByc2FfcGtjczFfZWF5X21ldGggPSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKiBpZiBlID09IDMgKi8KKyAgICAgUlNBX2VheV9pbml0LAorICAgICBSU0FfZWF5 X2ZpbmlzaCwKKy0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZsYWdzICovCisr ICAgIFJTQV9GTEFHX0ZJUFNfTUVUSE9ELCAgICAgICAvKiBmbGFncyAqLworICAgICBOVUxMLAor ICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcnNhX3NpZ24gKi8KKyAgICAgMCwg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJzYV92ZXJpZnkgKi8KK0BAIC0xNjAsNiArMTY0 LDIyIEBAIHN0YXRpYyBpbnQgUlNBX2VheV9wdWJsaWNfZW5jcnlwdChpbnQgZmwKKyAgICAgdW5z aWduZWQgY2hhciAqYnVmID0gTlVMTDsKKyAgICAgQk5fQ1RYICpjdHggPSBOVUxMOworIAorKyMg aWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUoKSkgeworKyAgICAgICAgaWYg KEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9S U0FfRUFZX1BVQkxJQ19FTkNSWVBULAorKyAgICAgICAgICAgICAgICAgICAgRklQU19SX0ZJUFNf U0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysK KysgICAgICAgIGlmICghKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykKKysg ICAgICAgICAgICAmJiAoQk5fbnVtX2JpdHMocnNhLT5uKSA8IE9QRU5TU0xfUlNBX0ZJUFNfTUlO X01PRFVMVVNfQklUUykpIHsKKysgICAgICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX0VBWV9QVUJM SUNfRU5DUllQVCwgUlNBX1JfS0VZX1NJWkVfVE9PX1NNQUxMKTsKKysgICAgICAgICAgICByZXR1 cm4gLTE7CisrICAgICAgICB9CisrICAgIH0KKysjIGVuZGlmCisrCisgICAgIGlmIChCTl9udW1f Yml0cyhyc2EtPm4pID4gT1BFTlNTTF9SU0FfTUFYX01PRFVMVVNfQklUUykgeworICAgICAgICAg UlNBZXJyKFJTQV9GX1JTQV9FQVlfUFVCTElDX0VOQ1JZUFQsIFJTQV9SX01PRFVMVVNfVE9PX0xB UkdFKTsKKyAgICAgICAgIHJldHVybiAtMTsKK0BAIC0zNjEsNiArMzgxLDIyIEBAIHN0YXRpYyBp bnQgUlNBX2VheV9wcml2YXRlX2VuY3J5cHQoaW50IGYKKyAgICAgQklHTlVNICp1bmJsaW5kID0g TlVMTDsKKyAgICAgQk5fQkxJTkRJTkcgKmJsaW5kaW5nID0gTlVMTDsKKyAKKysjIGlmZGVmIE9Q RU5TU0xfRklQUworKyAgICBpZiAoRklQU19tb2RlKCkpIHsKKysgICAgICAgIGlmIChGSVBTX3Nl bGZ0ZXN0X2ZhaWxlZCgpKSB7CisrICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0VBWV9Q UklWQVRFX0VOQ1JZUFQsCisrICAgICAgICAgICAgICAgICAgICBGSVBTX1JfRklQU19TRUxGVEVT VF9GQUlMRUQpOworKyAgICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAgIH0KKysKKysgICAg ICAgIGlmICghKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykKKysgICAgICAg ICAgICAmJiAoQk5fbnVtX2JpdHMocnNhLT5uKSA8IE9QRU5TU0xfUlNBX0ZJUFNfTUlOX01PRFVM VVNfQklUUykpIHsKKysgICAgICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX0VBWV9QUklWQVRFX0VO Q1JZUFQsIFJTQV9SX0tFWV9TSVpFX1RPT19TTUFMTCk7CisrICAgICAgICAgICAgcmV0dXJuIC0x OworKyAgICAgICAgfQorKyAgICB9CisrIyBlbmRpZgorKworICAgICBpZiAoKGN0eCA9IEJOX0NU WF9uZXcoKSkgPT0gTlVMTCkKKyAgICAgICAgIGdvdG8gZXJyOworICAgICBCTl9DVFhfc3RhcnQo Y3R4KTsKK0BAIC00OTcsNiArNTMzLDIyIEBAIHN0YXRpYyBpbnQgUlNBX2VheV9wcml2YXRlX2Rl Y3J5cHQoaW50IGYKKyAgICAgQklHTlVNICp1bmJsaW5kID0gTlVMTDsKKyAgICAgQk5fQkxJTkRJ TkcgKmJsaW5kaW5nID0gTlVMTDsKKyAKKysjIGlmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAo RklQU19tb2RlKCkpIHsKKysgICAgICAgIGlmIChGSVBTX3NlbGZ0ZXN0X2ZhaWxlZCgpKSB7Cisr ICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0VBWV9QUklWQVRFX0RFQ1JZUFQsCisrICAg ICAgICAgICAgICAgICAgICBGSVBTX1JfRklQU19TRUxGVEVTVF9GQUlMRUQpOworKyAgICAgICAg ICAgIHJldHVybiAtMTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICghKHJzYS0+ZmxhZ3Mg JiBSU0FfRkxBR19OT05fRklQU19BTExPVykKKysgICAgICAgICAgICAmJiAoQk5fbnVtX2JpdHMo cnNhLT5uKSA8IE9QRU5TU0xfUlNBX0ZJUFNfTUlOX01PRFVMVVNfQklUUykpIHsKKysgICAgICAg ICAgICBSU0FlcnIoUlNBX0ZfUlNBX0VBWV9QUklWQVRFX0RFQ1JZUFQsIFJTQV9SX0tFWV9TSVpF X1RPT19TTUFMTCk7CisrICAgICAgICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgfQorKyAgICB9 CisrIyBlbmRpZgorKworICAgICBpZiAoKGN0eCA9IEJOX0NUWF9uZXcoKSkgPT0gTlVMTCkKKyAg ICAgICAgIGdvdG8gZXJyOworICAgICBCTl9DVFhfc3RhcnQoY3R4KTsKK0BAIC02MjMsNiArNjc1 LDIyIEBAIHN0YXRpYyBpbnQgUlNBX2VheV9wdWJsaWNfZGVjcnlwdChpbnQgZmwKKyAgICAgdW5z aWduZWQgY2hhciAqYnVmID0gTlVMTDsKKyAgICAgQk5fQ1RYICpjdHggPSBOVUxMOworIAorKyMg aWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIGlmIChGSVBTX21vZGUoKSkgeworKyAgICAgICAgaWYg KEZJUFNfc2VsZnRlc3RfZmFpbGVkKCkpIHsKKysgICAgICAgICAgICBGSVBTZXJyKEZJUFNfRl9S U0FfRUFZX1BVQkxJQ19ERUNSWVBULAorKyAgICAgICAgICAgICAgICAgICAgRklQU19SX0ZJUFNf U0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKysK KysgICAgICAgIGlmICghKHJzYS0+ZmxhZ3MgJiBSU0FfRkxBR19OT05fRklQU19BTExPVykKKysg ICAgICAgICAgICAmJiAoQk5fbnVtX2JpdHMocnNhLT5uKSA8IE9QRU5TU0xfUlNBX0ZJUFNfTUlO X01PRFVMVVNfQklUUykpIHsKKysgICAgICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX0VBWV9QVUJM SUNfREVDUllQVCwgUlNBX1JfS0VZX1NJWkVfVE9PX1NNQUxMKTsKKysgICAgICAgICAgICByZXR1 cm4gLTE7CisrICAgICAgICB9CisrICAgIH0KKysjIGVuZGlmCisrCisgICAgIGlmIChCTl9udW1f Yml0cyhyc2EtPm4pID4gT1BFTlNTTF9SU0FfTUFYX01PRFVMVVNfQklUUykgeworICAgICAgICAg UlNBZXJyKFJTQV9GX1JTQV9FQVlfUFVCTElDX0RFQ1JZUFQsIFJTQV9SX01PRFVMVVNfVE9PX0xB UkdFKTsKKyAgICAgICAgIHJldHVybiAtMTsKK0BAIC04ODYsNiArOTU0LDkgQEAgc3RhdGljIGlu dCBSU0FfZWF5X21vZF9leHAoQklHTlVNICpyMCwgYworIAorIHN0YXRpYyBpbnQgUlNBX2VheV9p bml0KFJTQSAqcnNhKQorIHsKKysjIGlmZGVmIE9QRU5TU0xfRklQUworKyAgICBGSVBTX3NlbGZ0 ZXN0X2NoZWNrKCk7CisrIyBlbmRpZgorICAgICByc2EtPmZsYWdzIHw9IFJTQV9GTEFHX0NBQ0hF X1BVQkxJQyB8IFJTQV9GTEFHX0NBQ0hFX1BSSVZBVEU7CisgICAgIHJldHVybiAoMSk7CisgfQor ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JzYS9yc2FfZXJyLmMuZmlwcyBvcGVuc3Ns LTEuMC4yYy9jcnlwdG8vcnNhL3JzYV9lcnIuYworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9y c2EvcnNhX2Vyci5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysr KyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vcnNhL3JzYV9lcnIuYwkyMDE1LTA2LTE1IDE3OjMwOjAw LjAxNDI4NDExOSArMDIwMAorQEAgLTEzNiw2ICsxMzYsOCBAQCBzdGF0aWMgRVJSX1NUUklOR19E QVRBIFJTQV9zdHJfZnVuY3RzW10KKyAgICAge0VSUl9GVU5DKFJTQV9GX1JTQV9QVUJMSUNfRU5D UllQVCksICJSU0FfcHVibGljX2VuY3J5cHQifSwKKyAgICAge0VSUl9GVU5DKFJTQV9GX1JTQV9Q VUJfREVDT0RFKSwgIlJTQV9QVUJfREVDT0RFIn0sCisgICAgIHtFUlJfRlVOQyhSU0FfRl9SU0Ff U0VUVVBfQkxJTkRJTkcpLCAiUlNBX3NldHVwX2JsaW5kaW5nIn0sCisrICAgIHtFUlJfRlVOQyhS U0FfRl9SU0FfU0VUX0RFRkFVTFRfTUVUSE9EKSwgIlJTQV9zZXRfZGVmYXVsdF9tZXRob2QifSwK KysgICAge0VSUl9GVU5DKFJTQV9GX1JTQV9TRVRfTUVUSE9EKSwgIlJTQV9zZXRfbWV0aG9kIn0s CisgICAgIHtFUlJfRlVOQyhSU0FfRl9SU0FfU0lHTiksICJSU0Ffc2lnbiJ9LAorICAgICB7RVJS X0ZVTkMoUlNBX0ZfUlNBX1NJR05fQVNOMV9PQ1RFVF9TVFJJTkcpLAorICAgICAgIlJTQV9zaWdu X0FTTjFfT0NURVRfU1RSSU5HIn0sCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vcnNh L3JzYV9nZW4uYy5maXBzIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9yc2EvcnNhX2dlbi5jCistLS0g b3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JzYS9yc2FfZ2VuLmMuZmlwcwkyMDE1LTA2LTEyIDE2OjUx OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9yc2EvcnNhX2dl bi5jCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDE0Mjg0MTE5ICswMjAwCitAQCAtNjksNiArNjksODAg QEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KKyAjaWZkZWYgT1BFTlNTTF9GSVBTCisgIyBp bmNsdWRlIDxvcGVuc3NsL2ZpcHMuaD4KKysjIGluY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisrIyBp bmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKworK3N0YXRpYyBpbnQgZmlwc19yc2FfcGFpcndpc2Vf ZmFpbCA9IDA7CisrCisrdm9pZCBGSVBTX2NvcnJ1cHRfcnNhX2tleWdlbih2b2lkKQorK3sKKysg ICAgZmlwc19yc2FfcGFpcndpc2VfZmFpbCA9IDE7CisrfQorKworK2ludCBmaXBzX2NoZWNrX3Jz YShSU0EgKnJzYSkKKyt7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgdGJzW10gPSAiUlNBIFBh aXJ3aXNlIENoZWNrIERhdGEiOworKyAgICB1bnNpZ25lZCBjaGFyICpjdGJ1ZiA9IE5VTEwsICpw dGJ1ZiA9IE5VTEw7CisrICAgIGludCBsZW4sIHJldCA9IDA7CisrICAgIEVWUF9QS0VZICpwazsK KysKKysgICAgaWYgKChwayA9IEVWUF9QS0VZX25ldygpKSA9PSBOVUxMKQorKyAgICAgICAgZ290 byBlcnI7CisrCisrICAgIEVWUF9QS0VZX3NldDFfUlNBKHBrLCByc2EpOworKworKyAgICAvKiBQ ZXJmb3JtIHBhaXJ3aXNlIGNvbnNpc3RlbmN5IHNpZ25hdHVyZSB0ZXN0ICovCisrICAgIGlmICgh Zmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0KHBrLCB0YnMsIC0xLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMLCAwLCBFVlBfc2hhMSgpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFVlBfTURfQ1RYX0ZMQUdfUEFEX1BLQ1MxLCBOVUxMKQorKyAgICAg ICAgfHwgIWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdChwaywgdGJzLCAtMSwgTlVMTCwgMCwgRVZQ X3NoYTEoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NU WF9GTEFHX1BBRF9YOTMxLCBOVUxMKQorKyAgICAgICAgfHwgIWZpcHNfcGtleV9zaWduYXR1cmVf dGVzdChwaywgdGJzLCAtMSwgTlVMTCwgMCwgRVZQX3NoYTEoKSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRVZQX01EX0NUWF9GTEFHX1BBRF9QU1MsIE5VTEwpKQorKyAg ICAgICAgZ290byBlcnI7CisrICAgIC8qIE5vdyBwZXJmb3JtIHBhaXJ3aXNlIGNvbnNpc3RlbmN5 IGVuY3J5cHQvZGVjcnlwdCB0ZXN0ICovCisrICAgIGN0YnVmID0gT1BFTlNTTF9tYWxsb2MoUlNB X3NpemUocnNhKSk7CisrICAgIGlmICghY3RidWYpCisrICAgICAgICBnb3RvIGVycjsKKysKKysg ICAgbGVuID0KKysgICAgICAgIFJTQV9wdWJsaWNfZW5jcnlwdChzaXplb2YodGJzKSAtIDEsIHRi cywgY3RidWYsIHJzYSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBSU0FfUEtDUzFfUEFE RElORyk7CisrICAgIGlmIChsZW4gPD0gMCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICAvKiBD aGVjayBjaXBoZXJ0ZXh0IGRvZXNuJ3QgbWF0Y2ggcGxhaW50ZXh0ICovCisrICAgIGlmICgobGVu ID09IChzaXplb2YodGJzKSAtIDEpKSAmJiAhbWVtY21wKHRicywgY3RidWYsIGxlbikpCisrICAg ICAgICBnb3RvIGVycjsKKysgICAgcHRidWYgPSBPUEVOU1NMX21hbGxvYyhSU0Ffc2l6ZShyc2Ep KTsKKysKKysgICAgaWYgKCFwdGJ1ZikKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBsZW4gPSBS U0FfcHJpdmF0ZV9kZWNyeXB0KGxlbiwgY3RidWYsIHB0YnVmLCByc2EsIFJTQV9QS0NTMV9QQURE SU5HKTsKKysgICAgaWYgKGxlbiAhPSAoc2l6ZW9mKHRicykgLSAxKSkKKysgICAgICAgIGdvdG8g ZXJyOworKyAgICBpZiAobWVtY21wKHB0YnVmLCB0YnMsIGxlbikpCisrICAgICAgICBnb3RvIGVy cjsKKysKKysgICAgcmV0ID0gMTsKKysKKysgICAgaWYgKCFwdGJ1ZikKKysgICAgICAgIGdvdG8g ZXJyOworKworKyBlcnI6CisrICAgIGlmIChyZXQgPT0gMCkgeworKyAgICAgICAgZmlwc19zZXRf c2VsZnRlc3RfZmFpbCgpOworKyAgICAgICAgRklQU2VycihGSVBTX0ZfRklQU19DSEVDS19SU0Es IEZJUFNfUl9QQUlSV0lTRV9URVNUX0ZBSUxFRCk7CisrICAgIH0KKysKKysgICAgaWYgKGN0YnVm KQorKyAgICAgICAgT1BFTlNTTF9mcmVlKGN0YnVmKTsKKysgICAgaWYgKHB0YnVmKQorKyAgICAg ICAgT1BFTlNTTF9mcmVlKHB0YnVmKTsKKysgICAgaWYgKHBrKQorKyAgICAgICAgRVZQX1BLRVlf ZnJlZShwayk7CisrCisrICAgIHJldHVybiByZXQ7CisrfQorICNlbmRpZgorIAorIHN0YXRpYyBp bnQgcnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAqcnNhLCBpbnQgYml0cywgQklHTlVNICplX3ZhbHVl LAorQEAgLTg0LDcgKzE1OCw3IEBAIHN0YXRpYyBpbnQgcnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAq cnNhLAorIGludCBSU0FfZ2VuZXJhdGVfa2V5X2V4KFJTQSAqcnNhLCBpbnQgYml0cywgQklHTlVN ICplX3ZhbHVlLCBCTl9HRU5DQiAqY2IpCisgeworICNpZmRlZiBPUEVOU1NMX0ZJUFMKKy0gICAg aWYgKEZJUFNfbW9kZSgpICYmICEocnNhLT5tZXRoLT5mbGFncyAmIFJTQV9GTEFHX0ZJUFNfTUVU SE9EKQorKyAgICBpZiAoRklQU19tb2R1bGVfbW9kZSgpICYmICEocnNhLT5tZXRoLT5mbGFncyAm IFJTQV9GTEFHX0ZJUFNfTUVUSE9EKQorICAgICAgICAgJiYgIShyc2EtPmZsYWdzICYgUlNBX0ZM QUdfTk9OX0ZJUFNfQUxMT1cpKSB7CisgICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX0dFTkVSQVRF X0tFWV9FWCwgUlNBX1JfTk9OX0ZJUFNfUlNBX01FVEhPRCk7CisgICAgICAgICByZXR1cm4gMDsK K0BAIC05MiwxMCArMTY2LDYgQEAgaW50IFJTQV9nZW5lcmF0ZV9rZXlfZXgoUlNBICpyc2EsIGlu dCBiaQorICNlbmRpZgorICAgICBpZiAocnNhLT5tZXRoLT5yc2Ffa2V5Z2VuKQorICAgICAgICAg cmV0dXJuIHJzYS0+bWV0aC0+cnNhX2tleWdlbihyc2EsIGJpdHMsIGVfdmFsdWUsIGNiKTsKKy0j aWZkZWYgT1BFTlNTTF9GSVBTCistICAgIGlmIChGSVBTX21vZGUoKSkKKy0gICAgICAgIHJldHVy biBGSVBTX3JzYV9nZW5lcmF0ZV9rZXlfZXgocnNhLCBiaXRzLCBlX3ZhbHVlLCBjYik7CistI2Vu ZGlmCisgICAgIHJldHVybiByc2FfYnVpbHRpbl9rZXlnZW4ocnNhLCBiaXRzLCBlX3ZhbHVlLCBj Yik7CisgfQorIAorQEAgLTEwOCw2ICsxNzgsMjAgQEAgc3RhdGljIGludCByc2FfYnVpbHRpbl9r ZXlnZW4oUlNBICpyc2EsCisgICAgIGludCBiaXRzcCwgYml0c3EsIG9rID0gLTEsIG4gPSAwOwor ICAgICBCTl9DVFggKmN0eCA9IE5VTEw7CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBp ZiAoRklQU19tb2R1bGVfbW9kZSgpKSB7CisrICAgICAgICBpZiAoRklQU19zZWxmdGVzdF9mYWls ZWQoKSkgeworKyAgICAgICAgICAgIEZJUFNlcnIoRklQU19GX1JTQV9CVUlMVElOX0tFWUdFTiwg RklQU19SX0ZJUFNfU0VMRlRFU1RfRkFJTEVEKTsKKysgICAgICAgICAgICByZXR1cm4gMDsKKysg ICAgICAgIH0KKysKKysgICAgICAgIGlmIChiaXRzIDwgT1BFTlNTTF9SU0FfRklQU19NSU5fTU9E VUxVU19CSVRTKSB7CisrICAgICAgICAgICAgRklQU2VycihGSVBTX0ZfUlNBX0JVSUxUSU5fS0VZ R0VOLCBGSVBTX1JfS0VZX1RPT19TSE9SVCk7CisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAg ICAgICB9CisrICAgIH0KKysjZW5kaWYKKysKKyAgICAgY3R4ID0gQk5fQ1RYX25ldygpOworICAg ICBpZiAoY3R4ID09IE5VTEwpCisgICAgICAgICBnb3RvIGVycjsKK0BAIC0yMzMsNiArMzE3LDE2 IEBAIHN0YXRpYyBpbnQgcnNhX2J1aWx0aW5fa2V5Z2VuKFJTQSAqcnNhLAorICAgICBpZiAoIUJO X21vZF9pbnZlcnNlKHJzYS0+aXFtcCwgcnNhLT5xLCBwLCBjdHgpKQorICAgICAgICAgZ290byBl cnI7CisgCisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQU19tb2R1bGVfbW9kZSgp KSB7CisrICAgICAgICBpZiAoZmlwc19yc2FfcGFpcndpc2VfZmFpbCkKKysgICAgICAgICAgICBC Tl9hZGRfd29yZChyc2EtPm4sIDEpOworKworKyAgICAgICAgaWYgKCFmaXBzX2NoZWNrX3JzYShy c2EpKQorKyAgICAgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisrI2VuZGlmCisrCisgICAgIG9r ID0gMTsKKyAgZXJyOgorICAgICBpZiAob2sgPT0gLTEpIHsKK2RpZmYgLXVwIG9wZW5zc2wtMS4w LjJjL2NyeXB0by9yc2EvcnNhLmguZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vcnNhL3JzYS5o CistLS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JzYS9yc2EuaC5maXBzCTIwMTUtMDYtMTUgMTc6 Mjk6NTkuOTAzMjgxNTc4ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JzYS9yc2Eu aAkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxNDI4NDExOSArMDIwMAorQEAgLTE2OCw2ICsxNjgsOCBA QCBzdHJ1Y3QgcnNhX3N0IHsKKyAjICBkZWZpbmUgT1BFTlNTTF9SU0FfTUFYX01PRFVMVVNfQklU UyAgIDE2Mzg0CisgIyBlbmRpZgorIAorKyMgZGVmaW5lIE9QRU5TU0xfUlNBX0ZJUFNfTUlOX01P RFVMVVNfQklUUyAxMDI0CisrCisgIyBpZm5kZWYgT1BFTlNTTF9SU0FfU01BTExfTU9EVUxVU19C SVRTCisgIyAgZGVmaW5lIE9QRU5TU0xfUlNBX1NNQUxMX01PRFVMVVNfQklUUyAzMDcyCisgIyBl bmRpZgorQEAgLTMyOSw2ICszMzEsMTMgQEAgUlNBICpSU0FfZ2VuZXJhdGVfa2V5KGludCBiaXRz LCB1bnNpZ25lZAorIAorIC8qIE5ldyB2ZXJzaW9uICovCisgaW50IFJTQV9nZW5lcmF0ZV9rZXlf ZXgoUlNBICpyc2EsIGludCBiaXRzLCBCSUdOVU0gKmUsIEJOX0dFTkNCICpjYik7CisraW50IFJT QV9YOTMxX2Rlcml2ZV9leChSU0EgKnJzYSwgQklHTlVNICpwMSwgQklHTlVNICpwMiwgQklHTlVN ICpxMSwKKysgICAgICAgICAgICAgICAgICAgICAgIEJJR05VTSAqcTIsIGNvbnN0IEJJR05VTSAq WHAxLCBjb25zdCBCSUdOVU0gKlhwMiwKKysgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJJ R05VTSAqWHAsIGNvbnN0IEJJR05VTSAqWHExLAorKyAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgQklHTlVNICpYcTIsIGNvbnN0IEJJR05VTSAqWHEsCisrICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBCSUdOVU0gKmUsIEJOX0dFTkNCICpjYik7CisraW50IFJTQV9YOTMxX2dlbmVyYXRl X2tleV9leChSU0EgKnJzYSwgaW50IGJpdHMsIGNvbnN0IEJJR05VTSAqZSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEJOX0dFTkNCICpjYik7CisgCisgaW50IFJTQV9jaGVja19rZXko Y29uc3QgUlNBICopOworICAgICAgICAgLyogbmV4dCA0IHJldHVybiAtMSBvbiBlcnJvciAqLwor QEAgLTUzOCw3ICs1NDcsNyBAQCB2b2lkIEVSUl9sb2FkX1JTQV9zdHJpbmdzKHZvaWQpOworICMg ZGVmaW5lIFJTQV9GX1JTQV9BTEdPUl9UT19NRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAx NTcKKyAjIGRlZmluZSBSU0FfRl9SU0FfQlVJTFRJTl9LRVlHRU4gICAgICAgICAgICAgICAgICAg ICAgICAgMTI5CisgIyBkZWZpbmUgUlNBX0ZfUlNBX0NIRUNLX0tFWSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDEyMworLSMgZGVmaW5lIFJTQV9GX1JTQV9DTVNfREVDUllQVCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxNTgKKysjIGRlZmluZSBSU0FfRl9SU0FfQ01TX0RFQ1JZUFQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU4CisgIyBkZWZpbmUgUlNBX0ZfUlNBX0VBWV9Q UklWQVRFX0RFQ1JZUFQgICAgICAgICAgICAgICAgICAgIDEwMQorICMgZGVmaW5lIFJTQV9GX1JT QV9FQVlfUFJJVkFURV9FTkNSWVBUICAgICAgICAgICAgICAgICAgICAxMDIKKyAjIGRlZmluZSBS U0FfRl9SU0FfRUFZX1BVQkxJQ19ERUNSWVBUICAgICAgICAgICAgICAgICAgICAgMTAzCitAQCAt NTU5LDcgKzU2OCw3IEBAIHZvaWQgRVJSX2xvYWRfUlNBX3N0cmluZ3Modm9pZCk7CisgIyBkZWZp bmUgUlNBX0ZfUlNBX1BBRERJTkdfQUREX1BLQ1MxX09BRVAgICAgICAgICAgICAgICAgIDEyMQor ICMgZGVmaW5lIFJTQV9GX1JTQV9QQURESU5HX0FERF9QS0NTMV9PQUVQX01HRjEgICAgICAgICAg ICAxNjAKKyAjIGRlZmluZSBSU0FfRl9SU0FfUEFERElOR19BRERfUEtDUzFfUFNTICAgICAgICAg ICAgICAgICAgMTI1CistIyBkZWZpbmUgUlNBX0ZfUlNBX1BBRERJTkdfQUREX1BLQ1MxX1BTU19N R0YxICAgICAgICAgICAgIDE0OAorKyMgZGVmaW5lIFJTQV9GX1JTQV9QQURESU5HX0FERF9QS0NT MV9QU1NfTUdGMSAgICAgICAgICAgICAxNTgKKyAjIGRlZmluZSBSU0FfRl9SU0FfUEFERElOR19B RERfUEtDUzFfVFlQRV8xICAgICAgICAgICAgICAgMTA4CisgIyBkZWZpbmUgUlNBX0ZfUlNBX1BB RERJTkdfQUREX1BLQ1MxX1RZUEVfMiAgICAgICAgICAgICAgIDEwOQorICMgZGVmaW5lIFJTQV9G X1JTQV9QQURESU5HX0FERF9TU0xWMjMgICAgICAgICAgICAgICAgICAgICAxMTAKK0BAIC01NzMs MjEgKzU4MiwyMyBAQCB2b2lkIEVSUl9sb2FkX1JTQV9zdHJpbmdzKHZvaWQpOworICMgZGVmaW5l IFJTQV9GX1JTQV9QQURESU5HX0NIRUNLX1g5MzEgICAgICAgICAgICAgICAgICAgICAxMjgKKyAj IGRlZmluZSBSU0FfRl9SU0FfUFJJTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MTE1CisgIyBkZWZpbmUgUlNBX0ZfUlNBX1BSSU5UX0ZQICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDExNgorLSMgZGVmaW5lIFJTQV9GX1JTQV9QUklWQVRFX0RFQ1JZUFQgICAgICAgICAg ICAgICAgICAgICAgICAxNTAKKy0jIGRlZmluZSBSU0FfRl9SU0FfUFJJVkFURV9FTkNSWVBUICAg ICAgICAgICAgICAgICAgICAgICAgMTUxCisrIyBkZWZpbmUgUlNBX0ZfUlNBX1BSSVZBVEVfREVD UllQVCAgICAgICAgICAgICAgICAgICAgICAgIDE1NworKyMgZGVmaW5lIFJTQV9GX1JTQV9QUklW QVRFX0VOQ1JZUFQgICAgICAgICAgICAgICAgICAgICAgICAxNDgKKyAjIGRlZmluZSBSU0FfRl9S U0FfUFJJVl9ERUNPREUgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM3CisgIyBkZWZpbmUg UlNBX0ZfUlNBX1BSSVZfRU5DT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzOAorICMg ZGVmaW5lIFJTQV9GX1JTQV9QU1NfVE9fQ1RYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx NjIKKy0jIGRlZmluZSBSU0FfRl9SU0FfUFVCTElDX0RFQ1JZUFQgICAgICAgICAgICAgICAgICAg ICAgICAgMTUyCisrIyBkZWZpbmUgUlNBX0ZfUlNBX1BVQkxJQ19ERUNSWVBUICAgICAgICAgICAg ICAgICAgICAgICAgIDE0OQorICMgZGVmaW5lIFJTQV9GX1JTQV9QVUJMSUNfRU5DUllQVCAgICAg ICAgICAgICAgICAgICAgICAgICAxNTMKKyAjIGRlZmluZSBSU0FfRl9SU0FfUFVCX0RFQ09ERSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM5CisgIyBkZWZpbmUgUlNBX0ZfUlNBX1NFVFVQ X0JMSU5ESU5HICAgICAgICAgICAgICAgICAgICAgICAgIDEzNgorKyMgZGVmaW5lIFJTQV9GX1JT QV9TRVRfREVGQVVMVF9NRVRIT0QgICAgICAgICAgICAgICAgICAgICAxNTAKKysjIGRlZmluZSBS U0FfRl9SU0FfU0VUX01FVEhPRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUxCisgIyBk ZWZpbmUgUlNBX0ZfUlNBX1NJR04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEx NworICMgZGVmaW5lIFJTQV9GX1JTQV9TSUdOX0FTTjFfT0NURVRfU1RSSU5HICAgICAgICAgICAg ICAgICAxMTgKKyAjIGRlZmluZSBSU0FfRl9SU0FfVkVSSUZZICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTE5CisgIyBkZWZpbmUgUlNBX0ZfUlNBX1ZFUklGWV9BU04xX09DVEVUX1NU UklORyAgICAgICAgICAgICAgIDEyMAorICMgZGVmaW5lIFJTQV9GX1JTQV9WRVJJRllfUEtDUzFf UFNTICAgICAgICAgICAgICAgICAgICAgICAxMjYKKy0jIGRlZmluZSBSU0FfRl9SU0FfVkVSSUZZ X1BLQ1MxX1BTU19NR0YxICAgICAgICAgICAgICAgICAgMTQ5CisrIyBkZWZpbmUgUlNBX0ZfUlNB X1ZFUklGWV9QS0NTMV9QU1NfTUdGMSAgICAgICAgICAgICAgICAgIDE1MgorIAorIC8qIFJlYXNv biBjb2Rlcy4gKi8KKyAjIGRlZmluZSBSU0FfUl9BTEdPUklUSE1fTUlTTUFUQ0ggICAgICAgICAg ICAgICAgICAgICAgICAgMTAwCitAQCAtNjIwLDIxICs2MzEsMjIgQEAgdm9pZCBFUlJfbG9hZF9S U0Ffc3RyaW5ncyh2b2lkKTsKKyAjIGRlZmluZSBSU0FfUl9JTlZBTElEX09BRVBfUEFSQU1FVEVS UyAgICAgICAgICAgICAgICAgICAgMTYyCisgIyBkZWZpbmUgUlNBX1JfSU5WQUxJRF9QQURESU5H ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzOAorICMgZGVmaW5lIFJTQV9SX0lOVkFMSURf UEFERElOR19NT0RFICAgICAgICAgICAgICAgICAgICAgICAxNDEKKy0jIGRlZmluZSBSU0FfUl9J TlZBTElEX1BTU19QQVJBTUVURVJTICAgICAgICAgICAgICAgICAgICAgMTQ5CisrIyBkZWZpbmUg UlNBX1JfSU5WQUxJRF9QU1NfUEFSQU1FVEVSUyAgICAgICAgICAgICAgICAgICAgIDE1NworICMg ZGVmaW5lIFJTQV9SX0lOVkFMSURfUFNTX1NBTFRMRU4gICAgICAgICAgICAgICAgICAgICAgICAx NDYKKy0jIGRlZmluZSBSU0FfUl9JTlZBTElEX1NBTFRfTEVOR1RIICAgICAgICAgICAgICAgICAg ICAgICAgMTUwCisrIyBkZWZpbmUgUlNBX1JfSU5WQUxJRF9TQUxUX0xFTkdUSCAgICAgICAgICAg ICAgICAgICAgICAgIDE1OAorICMgZGVmaW5lIFJTQV9SX0lOVkFMSURfVFJBSUxFUiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxMzkKKyAjIGRlZmluZSBSU0FfUl9JTlZBTElEX1g5MzFfRElH RVNUICAgICAgICAgICAgICAgICAgICAgICAgMTQyCisgIyBkZWZpbmUgUlNBX1JfSVFNUF9OT1Rf SU5WRVJTRV9PRl9RICAgICAgICAgICAgICAgICAgICAgIDEyNgorICMgZGVmaW5lIFJTQV9SX0tF WV9TSVpFX1RPT19TTUFMTCAgICAgICAgICAgICAgICAgICAgICAgICAxMjAKKyAjIGRlZmluZSBS U0FfUl9MQVNUX09DVEVUX0lOVkFMSUQgICAgICAgICAgICAgICAgICAgICAgICAgMTM0CisgIyBk ZWZpbmUgUlNBX1JfTU9EVUxVU19UT09fTEFSR0UgICAgICAgICAgICAgICAgICAgICAgICAgIDEw NQorLSMgZGVmaW5lIFJTQV9SX05PTl9GSVBTX1JTQV9NRVRIT0QgICAgICAgICAgICAgICAgICAg ICAgICAxNTcKKysjIGRlZmluZSBSU0FfUl9OT05fRklQU19SU0FfTUVUSE9EICAgICAgICAgICAg ICAgICAgICAgICAgMTQ5CisrIyBkZWZpbmUgUlNBX1JfTk9OX0ZJUFNfTUVUSE9EICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDE0OQorICMgZGVmaW5lIFJTQV9SX05PX1BVQkxJQ19FWFBPTkVO VCAgICAgICAgICAgICAgICAgICAgICAgICAxNDAKKyAjIGRlZmluZSBSU0FfUl9OVUxMX0JFRk9S RV9CTE9DS19NSVNTSU5HICAgICAgICAgICAgICAgICAgMTEzCisgIyBkZWZpbmUgUlNBX1JfTl9E T0VTX05PVF9FUVVBTF9QX1EgICAgICAgICAgICAgICAgICAgICAgIDEyNworICMgZGVmaW5lIFJT QV9SX09BRVBfREVDT0RJTkdfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAxMjEKKy0jIGRl ZmluZSBSU0FfUl9PUEVSQVRJT05fTk9UX0FMTE9XRURfSU5fRklQU19NT0RFICAgICAgICAgMTU4 CisrIyBkZWZpbmUgUlNBX1JfT1BFUkFUSU9OX05PVF9BTExPV0VEX0lOX0ZJUFNfTU9ERSAgICAg ICAgIDE1MAorICMgZGVmaW5lIFJTQV9SX09QRVJBVElPTl9OT1RfU1VQUE9SVEVEX0ZPUl9USElT X0tFWVRZUEUgICAxNDgKKyAjIGRlZmluZSBSU0FfUl9QQURESU5HX0NIRUNLX0ZBSUxFRCAgICAg ICAgICAgICAgICAgICAgICAgMTE0CisgIyBkZWZpbmUgUlNBX1JfUEtDU19ERUNPRElOR19FUlJP UiAgICAgICAgICAgICAgICAgICAgICAgIDE1OQorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5 cHRvL3JzYS9yc2FfbGliLmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vcnNhL3JzYV9saWIu YworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9yc2EvcnNhX2xpYi5jLmZpcHMJMjAxNS0wNi0x MiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vcnNh L3JzYV9saWIuYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxNTI4NDE0MiArMDIwMAorQEAgLTg0LDIz ICs4NCwyMiBAQCBSU0EgKlJTQV9uZXcodm9pZCkKKyAKKyB2b2lkIFJTQV9zZXRfZGVmYXVsdF9t ZXRob2QoY29uc3QgUlNBX01FVEhPRCAqbWV0aCkKKyB7CisrI2lmZGVmIE9QRU5TU0xfRklQUwor KyAgICBpZiAoRklQU19tb2RlKCkgJiYgIShtZXRoLT5mbGFncyAmIFJTQV9GTEFHX0ZJUFNfTUVU SE9EKSkgeworKyAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9TRVRfREVGQVVMVF9NRVRIT0QsIFJT QV9SX05PTl9GSVBTX01FVEhPRCk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysjZW5kaWYK KyAgICAgZGVmYXVsdF9SU0FfbWV0aCA9IG1ldGg7CisgfQorIAorIGNvbnN0IFJTQV9NRVRIT0Qg KlJTQV9nZXRfZGVmYXVsdF9tZXRob2Qodm9pZCkKKyB7CisgICAgIGlmIChkZWZhdWx0X1JTQV9t ZXRoID09IE5VTEwpIHsKKy0jaWZkZWYgT1BFTlNTTF9GSVBTCistICAgICAgICBpZiAoRklQU19t b2RlKCkpCistICAgICAgICAgICAgcmV0dXJuIEZJUFNfcnNhX3BrY3MxX3NzbGVheSgpOworLSAg ICAgICAgZWxzZQorLSAgICAgICAgICAgIHJldHVybiBSU0FfUEtDUzFfU1NMZWF5KCk7CistI2Vs c2UKKy0jIGlmZGVmIFJTQV9OVUxMCisrI2lmZGVmIFJTQV9OVUxMCisgICAgICAgICBkZWZhdWx0 X1JTQV9tZXRoID0gUlNBX251bGxfbWV0aG9kKCk7CistIyBlbHNlCisrI2Vsc2UKKyAgICAgICAg IGRlZmF1bHRfUlNBX21ldGggPSBSU0FfUEtDUzFfU1NMZWF5KCk7CistIyBlbmRpZgorICNlbmRp ZgorICAgICB9CisgCitAQCAtMTE5LDYgKzExOCwxMiBAQCBpbnQgUlNBX3NldF9tZXRob2QoUlNB ICpyc2EsIGNvbnN0IFJTQV9NCisgICAgICAqIHRvIGRlYWwgd2l0aCB3aGljaCBFTkdJTkUgaXQg Y29tZXMgZnJvbS4KKyAgICAgICovCisgICAgIGNvbnN0IFJTQV9NRVRIT0QgKm10bXA7CisrI2lm ZGVmIE9QRU5TU0xfRklQUworKyAgICBpZiAoRklQU19tb2RlKCkgJiYgIShtZXRoLT5mbGFncyAm IFJTQV9GTEFHX0ZJUFNfTUVUSE9EKSkgeworKyAgICAgICAgUlNBZXJyKFJTQV9GX1JTQV9TRVRf TUVUSE9ELCBSU0FfUl9OT05fRklQU19NRVRIT0QpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAg IH0KKysjZW5kaWYKKyAgICAgbXRtcCA9IHJzYS0+bWV0aDsKKyAgICAgaWYgKG10bXAtPmZpbmlz aCkKKyAgICAgICAgIG10bXAtPmZpbmlzaChyc2EpOworQEAgLTE2NSw2ICsxNzAsMTcgQEAgUlNB ICpSU0FfbmV3X21ldGhvZChFTkdJTkUgKmVuZ2luZSkKKyAgICAgICAgIH0KKyAgICAgfQorICNl bmRpZgorKyNpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgaWYgKEZJUFNfbW9kZSgpICYmICEocmV0 LT5tZXRoLT5mbGFncyAmIFJTQV9GTEFHX0ZJUFNfTUVUSE9EKSkgeworKyAgICAgICAgUlNBZXJy KFJTQV9GX1JTQV9ORVdfTUVUSE9ELCBSU0FfUl9OT05fRklQU19NRVRIT0QpOworKyMgaWZuZGVm IE9QRU5TU0xfTk9fRU5HSU5FCisrICAgICAgICBpZiAocmV0LT5lbmdpbmUpCisrICAgICAgICAg ICAgRU5HSU5FX2ZpbmlzaChyZXQtPmVuZ2luZSk7CisrIyBlbmRpZgorKyAgICAgICAgT1BFTlNT TF9mcmVlKHJldCk7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKyNlbmRpZgorIAor ICAgICByZXQtPnBhZCA9IDA7CisgICAgIHJldC0+dmVyc2lvbiA9IDA7CitAQCAtMTgzLDcgKzE5 OSw3IEBAIFJTQSAqUlNBX25ld19tZXRob2QoRU5HSU5FICplbmdpbmUpCisgICAgIHJldC0+Ymxp bmRpbmcgPSBOVUxMOworICAgICByZXQtPm10X2JsaW5kaW5nID0gTlVMTDsKKyAgICAgcmV0LT5i aWdudW1fZGF0YSA9IE5VTEw7CistICAgIHJldC0+ZmxhZ3MgPSByZXQtPm1ldGgtPmZsYWdzICYg flJTQV9GTEFHX05PTl9GSVBTX0FMTE9XOworKyAgICByZXQtPmZsYWdzID0gcmV0LT5tZXRoLT5m bGFnczsKKyAgICAgaWYgKCFDUllQVE9fbmV3X2V4X2RhdGEoQ1JZUFRPX0VYX0lOREVYX1JTQSwg cmV0LCAmcmV0LT5leF9kYXRhKSkgeworICNpZm5kZWYgT1BFTlNTTF9OT19FTkdJTkUKKyAgICAg ICAgIGlmIChyZXQtPmVuZ2luZSkKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9yc2Ev cnNhX3BtZXRoLmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vcnNhL3JzYV9wbWV0aC5jCist LS0gb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JzYS9yc2FfcG1ldGguYy5maXBzCTIwMTUtMDYtMTIg MTY6NTE6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JzYS9y c2FfcG1ldGguYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxNTI4NDE0MiArMDIwMAorQEAgLTIyOCwy MCArMjI4LDYgQEAgc3RhdGljIGludCBwa2V5X3JzYV9zaWduKEVWUF9QS0VZX0NUWCAqYworICAg ICAgICAgICAgIFJTQWVycihSU0FfRl9QS0VZX1JTQV9TSUdOLCBSU0FfUl9JTlZBTElEX0RJR0VT VF9MRU5HVEgpOworICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgIH0KKy0jaWZkZWYg T1BFTlNTTF9GSVBTCistICAgICAgICBpZiAocmV0ID4gMCkgeworLSAgICAgICAgICAgIHVuc2ln bmVkIGludCBzbGVuOworLSAgICAgICAgICAgIHJldCA9IEZJUFNfcnNhX3NpZ25fZGlnZXN0KHJz YSwgdGJzLCB0YnNsZW4sIHJjdHgtPm1kLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJjdHgtPnBhZF9tb2RlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJjdHgtPnNhbHRsZW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmN0eC0+bWdmMW1kLCBzaWcsICZzbGVuKTsKKy0gICAgICAgICAgICBpZiAocmV0 ID4gMCkKKy0gICAgICAgICAgICAgICAgKnNpZ2xlbiA9IHNsZW47CistICAgICAgICAgICAgZWxz ZQorLSAgICAgICAgICAgICAgICAqc2lnbGVuID0gMDsKKy0gICAgICAgICAgICByZXR1cm4gcmV0 OworLSAgICAgICAgfQorLSNlbmRpZgorIAorICAgICAgICAgaWYgKEVWUF9NRF90eXBlKHJjdHgt Pm1kKSA9PSBOSURfbWRjMikgeworICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzbHRtcDsKK0BA IC0zNTksMTcgKzM0NSw2IEBAIHN0YXRpYyBpbnQgcGtleV9yc2FfdmVyaWZ5KEVWUF9QS0VZX0NU WAorICAgICB9CisgI2VuZGlmCisgICAgIGlmIChyY3R4LT5tZCkgeworLSNpZmRlZiBPUEVOU1NM X0ZJUFMKKy0gICAgICAgIGlmIChydiA+IDApIHsKKy0gICAgICAgICAgICByZXR1cm4gRklQU19y c2FfdmVyaWZ5X2RpZ2VzdChyc2EsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGJzLCB0YnNsZW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmN0eC0+bWQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmN0eC0+cGFkX21vZGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmN0eC0+c2FsdGxlbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByY3R4LT5tZ2YxbWQsIHNpZywgc2lnbGVuKTsKKy0KKy0gICAgICAgIH0KKy0j ZW5kaWYKKyAgICAgICAgIGlmIChyY3R4LT5wYWRfbW9kZSA9PSBSU0FfUEtDUzFfUEFERElORykK KyAgICAgICAgICAgICByZXR1cm4gUlNBX3ZlcmlmeShFVlBfTURfdHlwZShyY3R4LT5tZCksIHRi cywgdGJzbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZywgc2lnbGVuLCBy c2EpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JzYS9yc2Ffc2lnbi5jLmZpcHMg b3BlbnNzbC0xLjAuMmMvY3J5cHRvL3JzYS9yc2Ffc2lnbi5jCistLS0gb3BlbnNzbC0xLjAuMmMv Y3J5cHRvL3JzYS9yc2Ffc2lnbi5jLmZpcHMJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vcnNhL3JzYV9zaWduLmMJMjAxNS0wNi0x NSAxNzozMDowMC4wMTUyODQxNDIgKzAyMDAKK0BAIC0xMzIsNyArMTMyLDEwIEBAIGludCBSU0Ff c2lnbihpbnQgdHlwZSwgY29uc3QgdW5zaWduZWQgY2gKKyAgICAgICAgIGkyZF9YNTA5X1NJRygm c2lnLCAmcCk7CisgICAgICAgICBzID0gdG1wczsKKyAgICAgfQorLSAgICBpID0gUlNBX3ByaXZh dGVfZW5jcnlwdChpLCBzLCBzaWdyZXQsIHJzYSwgUlNBX1BLQ1MxX1BBRERJTkcpOworKyAgICAv KiBOQjogY2FsbCB1bmRlcmx5aW5nIG1ldGhvZCBkaXJlY3RseSB0byBhdm9pZCBGSVBTIGJsb2Nr aW5nICovCisrICAgIGkgPSByc2EtPm1ldGgtPnJzYV9wcml2X2VuYyA/IHJzYS0+bWV0aC0+cnNh X3ByaXZfZW5jKGksIHMsIHNpZ3JldCwgcnNhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSU0FfUEtDUzFfUEFERElORykgOgorKyAg ICAgICAgMDsKKyAgICAgaWYgKGkgPD0gMCkKKyAgICAgICAgIHJldCA9IDA7CisgICAgIGVsc2UK K0BAIC0xODgsOCArMTkxLDEwIEBAIGludCBpbnRfcnNhX3ZlcmlmeShpbnQgZHR5cGUsIGNvbnN0 IHVuc2kKKyAgICAgfQorIAorICAgICBpZiAoKGR0eXBlID09IE5JRF9tZDVfc2hhMSkgJiYgcm0p IHsKKy0gICAgICAgIGkgPSBSU0FfcHVibGljX2RlY3J5cHQoKGludClzaWdsZW4sCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ2J1Ziwgcm0sIHJzYSwgUlNBX1BLQ1MxX1BBRERJ TkcpOworKyAgICAgICAgaSA9IHJzYS0+bWV0aC0+cnNhX3B1Yl9kZWMgPyByc2EtPm1ldGgtPnJz YV9wdWJfZGVjKChpbnQpc2lnbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ2J1Ziwgcm0sIHJzYSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSU0FfUEtD UzFfUEFERElORykKKysgICAgICAgICAgICA6IDA7CisgICAgICAgICBpZiAoaSA8PSAwKQorICAg ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgKnBybV9sZW4gPSBpOworQEAgLTIwNSw3ICsy MTAsMTEgQEAgaW50IGludF9yc2FfdmVyaWZ5KGludCBkdHlwZSwgY29uc3QgdW5zaQorICAgICAg ICAgUlNBZXJyKFJTQV9GX0lOVF9SU0FfVkVSSUZZLCBSU0FfUl9JTlZBTElEX01FU1NBR0VfTEVO R1RIKTsKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CistICAgIGkgPSBSU0FfcHVibGljX2Rl Y3J5cHQoKGludClzaWdsZW4sIHNpZ2J1ZiwgcywgcnNhLCBSU0FfUEtDUzFfUEFERElORyk7Cisr ICAgIC8qIE5COiBjYWxsIHVuZGVybHlpbmcgbWV0aG9kIGRpcmVjdGx5IHRvIGF2b2lkIEZJUFMg YmxvY2tpbmcgKi8KKysgICAgaSA9IHJzYS0+bWV0aC0+cnNhX3B1Yl9kZWMgPyByc2EtPm1ldGgt PnJzYV9wdWJfZGVjKChpbnQpc2lnbGVuLCBzaWdidWYsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCByc2EsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSU0FfUEtDUzFfUEFE RElORykgOgorKyAgICAgICAgMDsKKyAKKyAgICAgaWYgKGkgPD0gMCkKKyAgICAgICAgIGdvdG8g ZXJyOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3NoYS9zaGEuaC5maXBzIG9wZW5z c2wtMS4wLjJjL2NyeXB0by9zaGEvc2hhLmgKKy0tLSBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vc2hh L3NoYS5oLmZpcHMJMjAxNS0wNi0xNSAxNzoyOTo1OS42OTcyNzY4NjAgKzAyMDAKKysrKyBvcGVu c3NsLTEuMC4yYy9jcnlwdG8vc2hhL3NoYS5oCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDE1Mjg0MTQy ICswMjAwCitAQCAtMTA1LDkgKzEwNSw2IEBAIHR5cGVkZWYgc3RydWN0IFNIQXN0YXRlX3N0IHsK KyB9IFNIQV9DVFg7CisgCisgIyBpZm5kZWYgT1BFTlNTTF9OT19TSEEwCistIyAgaWZkZWYgT1BF TlNTTF9GSVBTCistaW50IHByaXZhdGVfU0hBX0luaXQoU0hBX0NUWCAqYyk7CistIyAgZW5kaWYK KyBpbnQgU0hBX0luaXQoU0hBX0NUWCAqYyk7CisgaW50IFNIQV9VcGRhdGUoU0hBX0NUWCAqYywg Y29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7CisgaW50IFNIQV9GaW5hbCh1bnNpZ25lZCBj aGFyICptZCwgU0hBX0NUWCAqYyk7CitAQCAtMTE1LDkgKzExMiw2IEBAIHVuc2lnbmVkIGNoYXIg KlNIQShjb25zdCB1bnNpZ25lZCBjaGFyICoKKyB2b2lkIFNIQV9UcmFuc2Zvcm0oU0hBX0NUWCAq YywgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSk7CisgIyBlbmRpZgorICMgaWZuZGVmIE9QRU5T U0xfTk9fU0hBMQorLSMgIGlmZGVmIE9QRU5TU0xfRklQUworLWludCBwcml2YXRlX1NIQTFfSW5p dChTSEFfQ1RYICpjKTsKKy0jICBlbmRpZgorIGludCBTSEExX0luaXQoU0hBX0NUWCAqYyk7Cisg aW50IFNIQTFfVXBkYXRlKFNIQV9DVFggKmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4p OworIGludCBTSEExX0ZpbmFsKHVuc2lnbmVkIGNoYXIgKm1kLCBTSEFfQ1RYICpjKTsKK0BAIC0x MzksMTAgKzEzMyw2IEBAIHR5cGVkZWYgc3RydWN0IFNIQTI1NnN0YXRlX3N0IHsKKyB9IFNIQTI1 Nl9DVFg7CisgCisgIyBpZm5kZWYgT1BFTlNTTF9OT19TSEEyNTYKKy0jICBpZmRlZiBPUEVOU1NM X0ZJUFMKKy1pbnQgcHJpdmF0ZV9TSEEyMjRfSW5pdChTSEEyNTZfQ1RYICpjKTsKKy1pbnQgcHJp dmF0ZV9TSEEyNTZfSW5pdChTSEEyNTZfQ1RYICpjKTsKKy0jICBlbmRpZgorIGludCBTSEEyMjRf SW5pdChTSEEyNTZfQ1RYICpjKTsKKyBpbnQgU0hBMjI0X1VwZGF0ZShTSEEyNTZfQ1RYICpjLCBj b25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKKyBpbnQgU0hBMjI0X0ZpbmFsKHVuc2lnbmVk IGNoYXIgKm1kLCBTSEEyNTZfQ1RYICpjKTsKK0BAIC0xOTIsMTAgKzE4Miw2IEBAIHR5cGVkZWYg c3RydWN0IFNIQTUxMnN0YXRlX3N0IHsKKyAjIGVuZGlmCisgCisgIyBpZm5kZWYgT1BFTlNTTF9O T19TSEE1MTIKKy0jICBpZmRlZiBPUEVOU1NMX0ZJUFMKKy1pbnQgcHJpdmF0ZV9TSEEzODRfSW5p dChTSEE1MTJfQ1RYICpjKTsKKy1pbnQgcHJpdmF0ZV9TSEE1MTJfSW5pdChTSEE1MTJfQ1RYICpj KTsKKy0jICBlbmRpZgorIGludCBTSEEzODRfSW5pdChTSEE1MTJfQ1RYICpjKTsKKyBpbnQgU0hB Mzg0X1VwZGF0ZShTSEE1MTJfQ1RYICpjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsK KyBpbnQgU0hBMzg0X0ZpbmFsKHVuc2lnbmVkIGNoYXIgKm1kLCBTSEE1MTJfQ1RYICpjKTsKK2Rp ZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9zaGEvc2hhX2xvY2wuaC5maXBzIG9wZW5zc2wt MS4wLjJjL2NyeXB0by9zaGEvc2hhX2xvY2wuaAorLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9z aGEvc2hhX2xvY2wuaC5maXBzCTIwMTUtMDYtMTUgMTc6Mjk6NTkuNjk5Mjc2OTA2ICswMjAwCisr Kysgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3NoYS9zaGFfbG9jbC5oCTIwMTUtMDYtMTUgMTc6MzA6 MDAuMDE1Mjg0MTQyICswMjAwCitAQCAtMTIzLDExICsxMjMsMTQgQEAgdm9pZCBzaGExX2Jsb2Nr X2RhdGFfb3JkZXIoU0hBX0NUWCAqYywgYworICNkZWZpbmUgSU5JVF9EQVRBX2g0IDB4YzNkMmUx ZjBVTAorIAorICNpZmRlZiBTSEFfMAorLWZpcHNfbWRfaW5pdChTSEEpCisrbm9uZmlwc19tZF9p bml0KFNIQSkKKyAjZWxzZQorIGZpcHNfbWRfaW5pdF9jdHgoU0hBMSwgU0hBKQorICNlbmRpZgor IHsKKysjaWYgZGVmaW5lZChTSEFfMSkgJiYgZGVmaW5lZChPUEVOU1NMX0ZJUFMpCisrICAgIEZJ UFNfc2VsZnRlc3RfY2hlY2soKTsKKysjZW5kaWYKKyAgICAgbWVtc2V0KGMsIDAsIHNpemVvZigq YykpOworICAgICBjLT5oMCA9IElOSVRfREFUQV9oMDsKKyAgICAgYy0+aDEgPSBJTklUX0RBVEFf aDE7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vc2hhL3NoYTI1Ni5jLmZpcHMgb3Bl bnNzbC0xLjAuMmMvY3J5cHRvL3NoYS9zaGEyNTYuYworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0 by9zaGEvc2hhMjU2LmMuZmlwcwkyMDE1LTA2LTEyIDE2OjUxOjIxLjAwMDAwMDAwMCArMDIwMAor KysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9zaGEvc2hhMjU2LmMJMjAxNS0wNi0xNSAxNzozMDow MC4wMTUyODQxNDIgKzAyMDAKK0BAIC0xMiwxMiArMTIsMTkgQEAKKyAKKyAjIGluY2x1ZGUgPG9w ZW5zc2wvY3J5cHRvLmg+CisgIyBpbmNsdWRlIDxvcGVuc3NsL3NoYS5oPgorKyMgaWZkZWYgT1BF TlNTTF9GSVBTCisrIyAgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrIyBlbmRpZgorKworICMg aW5jbHVkZSA8b3BlbnNzbC9vcGVuc3Nsdi5oPgorIAorIGNvbnN0IGNoYXIgU0hBMjU2X3ZlcnNp b25bXSA9ICJTSEEtMjU2IiBPUEVOU1NMX1ZFUlNJT05fUFRFWFQ7CisgCisgZmlwc19tZF9pbml0 X2N0eChTSEEyMjQsIFNIQTI1NikKKyB7CisrIyBpZmRlZiBPUEVOU1NMX0ZJUFMKKysgICAgRklQ U19zZWxmdGVzdF9jaGVjaygpOworKyMgZW5kaWYKKyAgICAgbWVtc2V0KGMsIDAsIHNpemVvZigq YykpOworICAgICBjLT5oWzBdID0gMHhjMTA1OWVkOFVMOworICAgICBjLT5oWzFdID0gMHgzNjdj ZDUwN1VMOworQEAgLTMzLDYgKzQwLDkgQEAgZmlwc19tZF9pbml0X2N0eChTSEEyMjQsIFNIQTI1 NikKKyAKKyBmaXBzX21kX2luaXQoU0hBMjU2KQorIHsKKysjIGlmZGVmIE9QRU5TU0xfRklQUwor KyAgICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7CisrIyBlbmRpZgorICAgICBtZW1zZXQoYywgMCwg c2l6ZW9mKCpjKSk7CisgICAgIGMtPmhbMF0gPSAweDZhMDllNjY3VUw7CisgICAgIGMtPmhbMV0g PSAweGJiNjdhZTg1VUw7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vc2hhL3NoYTUx Mi5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3NoYS9zaGE1MTIuYworLS0tIG9wZW5zc2wt MS4wLjJjL2NyeXB0by9zaGEvc2hhNTEyLmMuZmlwcwkyMDE1LTA2LTEyIDE2OjUxOjIxLjAwMDAw MDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0by9zaGEvc2hhNTEyLmMJMjAxNS0w Ni0xNSAxNzozMDowMC4wMTYyODQxNjUgKzAyMDAKK0BAIC01LDYgKzUsMTAgQEAKKyAgKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorICAqLworICNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+CisrI2lmZGVm IE9QRU5TU0xfRklQUworKyMgaW5jbHVkZSA8b3BlbnNzbC9maXBzLmg+CisrI2VuZGlmCisrCisg I2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NIQTUx MikKKyAvKi0KKyAgKiBJTVBMRU1FTlRBVElPTiBOT1RFUy4KK0BAIC02Miw2ICs2Niw5IEBAIGNv bnN0IGNoYXIgU0hBNTEyX3ZlcnNpb25bXSA9ICJTSEEtNTEyIgorIAorIGZpcHNfbWRfaW5pdF9j dHgoU0hBMzg0LCBTSEE1MTIpCisgeworKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJUFNf c2VsZnRlc3RfY2hlY2soKTsKKysjIGVuZGlmCisgICAgIGMtPmhbMF0gPSBVNjQoMHhjYmJiOWQ1 ZGMxMDU5ZWQ4KTsKKyAgICAgYy0+aFsxXSA9IFU2NCgweDYyOWEyOTJhMzY3Y2Q1MDcpOworICAg ICBjLT5oWzJdID0gVTY0KDB4OTE1OTAxNWEzMDcwZGQxNyk7CitAQCAtODAsNiArODcsOSBAQCBm aXBzX21kX2luaXRfY3R4KFNIQTM4NCwgU0hBNTEyKQorIAorIGZpcHNfbWRfaW5pdChTSEE1MTIp CisgeworKyMgaWZkZWYgT1BFTlNTTF9GSVBTCisrICAgIEZJUFNfc2VsZnRlc3RfY2hlY2soKTsK KysjIGVuZGlmCisgICAgIGMtPmhbMF0gPSBVNjQoMHg2YTA5ZTY2N2YzYmNjOTA4KTsKKyAgICAg Yy0+aFsxXSA9IFU2NCgweGJiNjdhZTg1ODRjYWE3M2IpOworICAgICBjLT5oWzJdID0gVTY0KDB4 M2M2ZWYzNzJmZTk0ZjgyYik7CitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9jcnlwdG8vd2hybHBv b2wvd3BfZGdzdC5jLmZpcHMgb3BlbnNzbC0xLjAuMmMvY3J5cHRvL3docmxwb29sL3dwX2Rnc3Qu YworLS0tIG9wZW5zc2wtMS4wLjJjL2NyeXB0by93aHJscG9vbC93cF9kZ3N0LmMuZmlwcwkyMDE1 LTA2LTEyIDE2OjUxOjIxLjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2NyeXB0 by93aHJscG9vbC93cF9kZ3N0LmMJMjAxNS0wNi0xNSAxNzozMDowMC4wMTYyODQxNjUgKzAyMDAK K0BAIC01NSw3ICs1NSw3IEBACisgI2luY2x1ZGUgPG9wZW5zc2wvY3J5cHRvLmg+CisgI2luY2x1 ZGUgPHN0cmluZy5oPgorIAorLWZpcHNfbWRfaW5pdChXSElSTFBPT0wpCisrbm9uZmlwc19tZF9p bml0KFdISVJMUE9PTCkKKyB7CisgICAgIG1lbXNldChjLCAwLCBzaXplb2YoKmMpKTsKKyAgICAg cmV0dXJuICgxKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL01ha2VmaWxlLm9yZy5maXBzIG9w ZW5zc2wtMS4wLjJjL01ha2VmaWxlLm9yZworLS0tIG9wZW5zc2wtMS4wLjJjL01ha2VmaWxlLm9y Zy5maXBzCTIwMTUtMDYtMTUgMTc6Mjk6NTkuOTg2MjgzNDc4ICswMjAwCisrKysgb3BlbnNzbC0x LjAuMmMvTWFrZWZpbGUub3JnCTIwMTUtMDYtMTUgMTc6MzA6MDAuMDE2Mjg0MTY1ICswMjAwCitA QCAtMTM3LDYgKzEzNyw5IEBAIEZJUFNDQU5MSUI9CisgCisgQkFTRUFERFI9CisgCisrIyBOb24t ZW1wdHkgaWYgRklQUyBlbmFibGVkCisrRklQUz0KKysKKyBESVJTPSAgIGNyeXB0byBzc2wgZW5n aW5lcyBhcHBzIHRlc3QgdG9vbHMKKyBFTkdESVJTPSBjY2dvc3QKKyBTSExJQkRJUlM9IGNyeXB0 byBzc2wKK0BAIC0xNDksNyArMTUyLDcgQEAgU0RJUlM9ICBcCisgCWJuIGVjIHJzYSBkc2EgZWNk c2EgZGggZWNkaCBkc28gZW5naW5lIFwKKyAJYnVmZmVyIGJpbyBzdGFjayBsaGFzaCByYW5kIGVy ciBcCisgCWV2cCBhc24xIHBlbSB4NTA5IHg1MDl2MyBjb25mIHR4dF9kYiBwa2NzNyBwa2NzMTIg Y29tcCBvY3NwIHVpIGtyYjUgXAorLQljbXMgcHF1ZXVlIHRzIGpwYWtlIHNycCBzdG9yZSBjbWFj CisrCWNtcyBwcXVldWUgdHMganBha2Ugc3JwIHN0b3JlIGNtYWMgZmlwcworICMga2VlcCBpbiBt aW5kIHRoYXQgdGhlIGFib3ZlIGxpc3QgaXMgYWRqdXN0ZWQgYnkgLi9Db25maWd1cmUKKyAjIGFj Y29yZGluZyB0byBuby14eHggYXJndW1lbnRzLi4uCisgCitAQCAtMjM4LDYgKzI0MSw3IEBAIEJV SUxERU5WPQlQTEFURk9STT0nJChQTEFURk9STSknIFBST0NFU1MKKyAJCUZJUFNMSUJESVI9JyR7 RklQU0xJQkRJUn0nCQkJXAorIAkJRklQU0RJUj0nJHtGSVBTRElSfScJCQkJXAorIAkJRklQU0NB TkxJQj0iJCR7RklQU0NBTkxJQjotJChGSVBTQ0FOTElCKX0iCVwKKysJCUZJUFM9IiQke0ZJUFM6 LSQoRklQUyl9IglcCisgCQlUSElTPSQke1RISVM6LSRAfSBNQUtFRklMRT1NYWtlZmlsZSBNQUtF T1ZFUlJJREVTPQorICMgTUFLRU9WRVJSSURFUz0gZWZmZWN0aXZlbHkgImVxdWFsaXplcyIgR05V LWlzaCBhbmQgU3lzVi1pc2ggbWFrZSBmbGF2b3JzLAorICMgd2hpY2ggaW4gdHVybiBlbGltaW5h dGVzIGFtYmlndWl0aWVzIGluIHZhcmlhYmxlIHRyZWF0bWVudCB3aXRoIC1lLgorZGlmZiAtdXAg b3BlbnNzbC0xLjAuMmMvc3NsL3NzbF9hbGdzLmMuZmlwcyBvcGVuc3NsLTEuMC4yYy9zc2wvc3Ns X2FsZ3MuYworLS0tIG9wZW5zc2wtMS4wLjJjL3NzbC9zc2xfYWxncy5jLmZpcHMJMjAxNS0wNi0x MiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9zc2wvc3NsX2Fs Z3MuYwkyMDE1LTA2LTE1IDE3OjMwOjAwLjAxNjI4NDE2NSArMDIwMAorQEAgLTY0LDYgKzY0LDEx IEBACisgaW50IFNTTF9saWJyYXJ5X2luaXQodm9pZCkKKyB7CisgCisrI2lmZGVmIE9QRU5TU0xf RklQUworKyAgICBPUEVOU1NMX2luaXRfbGlicmFyeSgpOworKyAgICBpZiAoIUZJUFNfbW9kZSgp KSB7CisrI2VuZGlmCisrCisgI2lmbmRlZiBPUEVOU1NMX05PX0RFUworICAgICBFVlBfYWRkX2Np cGhlcihFVlBfZGVzX2NiYygpKTsKKyAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Rlc19lZGUzX2Ni YygpKTsKK0BAIC0xNDIsNiArMTQ3LDQ4IEBAIGludCBTU0xfbGlicmFyeV9pbml0KHZvaWQpCisg ICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEoKSk7CisgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9k c3MoKSk7CisgI2VuZGlmCisrI2lmZGVmIE9QRU5TU0xfRklQUworKyAgICB9IGVsc2UgeworKyMg aWZuZGVmIE9QRU5TU0xfTk9fREVTCisrICAgICAgICBFVlBfYWRkX2NpcGhlcihFVlBfZGVzX2Vk ZTNfY2JjKCkpOworKyMgZW5kaWYKKysjIGlmbmRlZiBPUEVOU1NMX05PX0FFUworKyAgICAgICAg RVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfY2JjKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBo ZXIoRVZQX2Flc18xOTJfY2JjKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18y NTZfY2JjKCkpOworKyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18xMjhfZ2NtKCkpOwor KyAgICAgICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZ2NtKCkpOworKyMgZW5kaWYKKysj IGlmbmRlZiBPUEVOU1NMX05PX01ENQorKyAgICAgICAgLyogbmVlZGVkIGV2ZW4gaW4gdGhlIEZJ UFMgbW9kZSBmb3IgVExTIE1BQyAqLworKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX21kNSgp KTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFzKFNOX21kNSwgInNzbDItbWQ1Iik7Cisr ICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9tZDUsICJzc2wzLW1kNSIpOworKyMgZW5k aWYKKysjIGlmbmRlZiBPUEVOU1NMX05PX1NIQQorKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQ X3NoYTEoKSk7IC8qIFJTQSB3aXRoIHNoYTEgKi8KKysgICAgICAgIEVWUF9hZGRfZGlnZXN0X2Fs aWFzKFNOX3NoYTEsICJzc2wzLXNoYTEiKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0X2FsaWFz KFNOX3NoYTFXaXRoUlNBRW5jcnlwdGlvbiwgU05fc2hhMVdpdGhSU0EpOworKyMgZW5kaWYKKysj IGlmbmRlZiBPUEVOU1NMX05PX1NIQTI1NgorKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3No YTIyNCgpKTsKKysgICAgICAgIEVWUF9hZGRfZGlnZXN0KEVWUF9zaGEyNTYoKSk7CisrIyBlbmRp ZgorKyMgaWZuZGVmIE9QRU5TU0xfTk9fU0hBNTEyCisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChF VlBfc2hhMzg0KCkpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX3NoYTUxMigpKTsKKysj IGVuZGlmCisrIyBpZiAhZGVmaW5lZChPUEVOU1NMX05PX1NIQSkgJiYgIWRlZmluZWQoT1BFTlNT TF9OT19EU0EpCisrICAgICAgICBFVlBfYWRkX2RpZ2VzdChFVlBfZHNzMSgpKTsgLyogRFNBIHdp dGggc2hhMSAqLworKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fZHNhV2l0aFNIQTEs IFNOX2RzYVdpdGhTSEExXzIpOworKyAgICAgICAgRVZQX2FkZF9kaWdlc3RfYWxpYXMoU05fZHNh V2l0aFNIQTEsICJEU1MxIik7CisrICAgICAgICBFVlBfYWRkX2RpZ2VzdF9hbGlhcyhTTl9kc2FX aXRoU0hBMSwgImRzczEiKTsKKysjIGVuZGlmCisrIyBpZm5kZWYgT1BFTlNTTF9OT19FQ0RTQQor KyAgICAgICAgRVZQX2FkZF9kaWdlc3QoRVZQX2VjZHNhKCkpOworKyMgZW5kaWYKKysgICAgfQor KyNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19DT01QCisgICAgIC8qCisgICAgICAqIFRoaXMg d2lsbCBpbml0aWFsaXNlIHRoZSBidWlsdC1pbiBjb21wcmVzc2lvbiBhbGdvcml0aG1zLiBUaGUg dmFsdWUKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4yYy1ycG1idWlsZC5wYXRjaCBiL29wZW5z c2wtMS4wLjJjLXJwbWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjU1NTAxMGMKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4yYy1ycG1idWlsZC5w YXRjaApAQCAtMCwwICsxLDExNCBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvQ29uZmlndXJl LnJwbWJ1aWxkIG9wZW5zc2wtMS4wLjJjL0NvbmZpZ3VyZQorLS0tIG9wZW5zc2wtMS4wLjJjL0Nv bmZpZ3VyZS5ycG1idWlsZAkyMDE1LTA2LTEyIDE2OjUxOjIxLjAwMDAwMDAwMCArMDIwMAorKysr IG9wZW5zc2wtMS4wLjJjL0NvbmZpZ3VyZQkyMDE1LTA2LTE1IDE3OjIyOjUyLjU5ODQ5NjY4MCAr MDIwMAorQEAgLTM2NSw4ICszNjUsOCBAQCBteSAldGFibGU9KAorICMjIyMKKyAjICotZ2VuZXJp YyogaXMgZW5kaWFuLW5ldXRyYWwgdGFyZ2V0LCBidXQgLi9jb25maWcgaXMgZnJlZSB0bworICMg dGhyb3cgaW4gLURbQkxdX0VORElBTiwgd2hpY2hldmVyIGFwcHJvcHJpYXRlLi4uCistImxpbnV4 LWdlbmVyaWMzMiIsImdjYzotTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5U UkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xM IEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJf TUFKT1IpLlwkKFNITElCX01JTk9SKSIsCistImxpbnV4LXBwYyIsCSJnY2M6LURCX0VORElBTiAt TzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksg REVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hh cmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4 LWdlbmVyaWMzMiIsImdjYzotV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjot V2wsLXoscmVscm8gLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNf VU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9P UFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVWRVIpIiwKKysibGludXgtcHBjIiwJImdjYzot REJfRU5ESUFOIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixy ZWxybyAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9M TDoke3BwYzMyX2FzbX06bGludXgzMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09Q VF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAorIAorICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisg IyBOb3RlIHRoYXQgLW1hcmNoIGlzIG5vdCBhbW9uZyBjb21waWxlciBvcHRpb25zIGluIGJlbG93 IGxpbnV4LWFybXY0CitAQCAtMzk1LDMwICszOTUsMzAgQEAgbXkgJXRhYmxlPSgKKyAjCisgIyAg ICAgICAuL0NvbmZpZ3VyZSBsaW51eC1hcm12NCAtbWFyY2g9YXJtdjYgLURfX0FSTV9NQVhfQVJD SF9fPTgKKyAjCistImxpbnV4LWFybXY0IiwJImdjYzogLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6 Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9Q VFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01B Sk9SKS5cJChTSExJQl9NSU5PUikiLAorLSJsaW51eC1hYXJjaDY0IiwiZ2NjOiAtTzMgLVdhbGw6 Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVO SyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YWFyY2g2NF9hc219OmxpbnV4NjQ6ZGxmY246 bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIs CisrImxpbnV4LWFybXY0IiwJImdjYzotV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRS QU5UOjotV2wsLXoscmVscm8gLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lO VCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElD OlwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05BTUVWRVIpIiwKKysibGludXgtYWFy Y2g2NCIsImdjYzotRExfRU5ESUFOIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJB TlQ6Oi1XbCwteixyZWxybyAtbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NI VU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthYXJjaDY0X2FzbX06bGludXg2NDpkbGZj bjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFN RVZFUikiLAorICMgQ29uZmlndXJlIHNjcmlwdCBhZGRzIG1pbmltYWxseSByZXF1aXJlZCAtbWFy Y2ggZm9yIGFzc2VtYmx5IHN1cHBvcnQsCisgIyBpZiBubyAtbWFyY2ggd2FzIHNwZWNpZmllZCBh dCBjb21tYW5kIGxpbmUuIG1pcHMzMiBhbmQgbWlwczY0IGJlbG93CisgIyByZWZlciB0byBjb250 ZW1wb3JhcnkgTUlQUyBBcmNoaXRlY3R1cmUgc3BlY2lmaWNhdGlvbnMsIE1JUFMzMiBhbmQKKyAj IE1JUFM2NCwgcmF0aGVyIHRoYW4gdG8ga2VybmVsIGJpdG5lc3MuCistImxpbnV4LW1pcHMzMiIs CSJnY2M6LW1hYmk9MzIgLU8zIC1XYWxsIC1EQk5fRElWM1c6Oi1EX1JFRU5UUkFOVDo6LWxkbDpC Tl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke21p cHMzMl9hc219Om8zMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpP UikuXCQoU0hMSUJfTUlOT1IpIiwKKy0ibGludXgtbWlwczY0IiwgICAiZ2NjOi1tYWJpPW4zMiAt TzMgLVdhbGwgLURCTl9ESVYzVzo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUIFJD NF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bWlwczY0X2FzbX06 bjMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbWFiaT1uMzI6LnNvLlwkKFNITElCX01BSk9S KS5cJChTSExJQl9NSU5PUik6OjozMiIsCistImxpbnV4NjQtbWlwczY0IiwgICAiZ2NjOi1tYWJp PTY0IC1PMyAtV2FsbCAtREJOX0RJVjNXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9C SVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke21p cHM2NF9hc219OjY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbWFiaT02NDouc28uXCQoU0hM SUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKKysibGludXgtbWlwczMyIiwJImdjYzot bWFiaT0zMiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKSAtREJOX0RJVjNXOjotRF9SRUVOVFJBTlQ6 Oi1XbCwteixyZWxybyAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERF U19VTlJPTEwgQkZfUFRSOiR7bWlwczMyX2FzbX06bzMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJ QzpcJChSUE1fT1BUX0ZMQUdTKTouc28uXCQoU0hMSUJfU09OQU1FVkVSKSIsCisrImxpbnV4LW1p cHM2NCIsICAgImdjYzotbWFiaT1uMzIgLVdhbGwgXCQoUlBNX09QVF9GTEFHUykgLURCTl9ESVYz Vzo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8gLWxkbDpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hB UiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke21pcHM2NF9hc219Om4zMjpk bGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW1hYmk9bjMyIFwkKFJQTV9PUFRfRkxBR1MpOi5zby5c JChTSExJQl9TT05BTUVWRVIpOjo6MzIiLAorKyJsaW51eDY0LW1pcHM2NCIsICAgImdjYzotbWFi aT02NCAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKSAtREJOX0RJVjNXOjotRF9SRUVOVFJBTlQ6Oi1X bCwteixyZWxybyAtbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERF U19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHttaXBzNjRfYXNtfTo2NDpkbGZjbjpsaW51eC1zaGFy ZWQ6LWZQSUM6LW1hYmk9NjQgXCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZF Uik6Ojo2NCIsCisgIyMjIyBJQS0zMiB0YXJnZXRzLi4uCisgImxpbnV4LWlhMzItaWNjIiwJImlj YzotRExfRU5ESUFOIC1PMjo6LURfUkVFTlRSQU5UOjotbGRsIC1ub19jcHBydDpCTl9MTE9ORyAk e3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgt c2hhcmVkOi1LUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCistImxp bnV4LWVsZiIsCSJnY2M6LURMX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6 Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0 c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJf TUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LWVsZiIsCSJnY2M6LURMX0VORElBTiAt V2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8gLWxkbDpC Tl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxm Y246bGludXgtc2hhcmVkOi1mUElDOlwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChTSExJQl9TT05B TUVWRVIpIiwKKyAibGludXgtYW91dCIsCSJnY2M6LURMX0VORElBTiAtTzMgLWZvbWl0LWZyYW1l LXBvaW50ZXIgLW1hcmNoPWk0ODYgLVdhbGw6Oih1bmtub3duKTo6OkJOX0xMT05HICR7eDg2X2dj Y19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9hc219OmEub3V0IiwKKyAjIyMjCistImxpbnV4 LWdlbmVyaWM2NCIsImdjYzotTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VS X0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7 bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQo U0hMSUJfTUlOT1IpIiwKKy0ibGludXgtcHBjNjQiLAkiZ2NjOi1tNjQgLURCX0VORElBTiAtTzMg LVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJD NF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzY0X2FzbX06bGludXg2NDpkbGZjbjps aW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9S KTo6OjY0IiwKKy0ibGludXgtcHBjNjRsZSIsImdjYzotbTY0IC1ETF9FTkRJQU4gLU8zIC1XYWxs OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hV TksgREVTX1JJU0MxIERFU19VTlJPTEw6JHBwYzY0X2FzbTpsaW51eDY0bGU6ZGxmY246bGludXgt c2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojoi LAorLSJsaW51eC1pYTY0IiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPIC1PMyAtV2FsbDo6LURf UkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwg REVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJ Ql9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtZ2VuZXJpYzY0IiwiZ2NjOi1XYWxs IFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOlNJWFRZ X0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9Q VFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzpcJChSUE1fT1BUX0ZMQUdTKTou c28uXCQoU0hMSUJfU09OQU1FVkVSKSIsCisrImxpbnV4LXBwYzY0IiwJImdjYzotbTY0IC1EQl9F TkRJQU4gLVdhbGwgXCQoUlBNX09QVF9GTEFHUyk6Oi1EX1JFRU5UUkFOVDo6LVdsLC16LHJlbHJv IC1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERF U19VTlJPTEw6JHtwcGM2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1t NjQgXCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUik6Ojo2NCIsCisrImxp bnV4LXBwYzY0bGUiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1Mp OjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0 X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiRwcGM2NF9hc206bGludXg2NGxl OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0IFwkKFJQTV9PUFRfRkxBR1MpOi5zby5cJChT SExJQl9TT05BTUVWRVIpOjo6NjQiLAorKyJsaW51eC1pYTY0IiwJImdjYzotRExfRU5ESUFOIC1X YWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOlNJ WFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX0lOVDoke2lhNjRfYXNt fTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElC X1NPTkFNRVZFUikiLAorICJsaW51eC1pYTY0LWljYyIsImljYzotRExfRU5ESUFOIC1PMiAtV2Fs bDo6LURfUkVFTlRSQU5UOjotbGRsIC1ub19jcHBydDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9D SFVOSyBERVNfUklTQzEgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQ SUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKy0ibGludXgteDg2XzY0 IiwJImdjYzotbTY0IC1ETF9FTkRJQU4gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lY VFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2Fz bX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUiku XCQoU0hMSUJfTUlOT1IpOjo6NjQiLAorKyJsaW51eC14ODZfNjQiLAkiZ2NjOi1tNjQgLURMX0VO RElBTiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOjotV2wsLXoscmVscm8g LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4 ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQgXCQoUlBNX09QVF9G TEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUik6Ojo2NCIsCisgImxpbnV4LXg4Nl82NC1jbGFu ZyIsCSJjbGFuZzogLW02NCAtRExfRU5ESUFOIC1PMyAtV2FsbCAtV2V4dHJhICRjbGFuZ19kaXNh YmxlZF93YXJuaW5ncyAtUXVudXNlZC1hcmd1bWVudHM6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhU WV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNt fTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5c JChTSExJQl9NSU5PUik6Ojo2NCIsCisgImxpbnV4LXg4Nl82NC1pY2MiLCAiaWNjOi1ETF9FTkRJ QU4gLU8yOjotRF9SRUVOVFJBTlQ6Oi1sZGwgLW5vX2NwcHJ0OlNJWFRZX0ZPVVJfQklUX0xPTkcg UkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51 eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6NjQi LAorICJsaW51eC14MzIiLAkiZ2NjOi1teDMyIC1ETF9FTkRJQU4gLU8zIC1XYWxsOjotRF9SRUVO VFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQgREVTX1VOUk9M TDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW14MzI6LnNvLlwk KFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojp4MzIiLAorLSJsaW51eDY0LXMzOTB4IiwJ ImdjYzotbTY0IC1EQl9FTkRJQU4gLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlf Rk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7czM5 MHhfYXNtfTo2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFK T1IpLlwkKFNITElCX01JTk9SKTo6OjY0IiwKKysibGludXg2NC1zMzkweCIsCSJnY2M6LW02NCAt REJfRU5ESUFOIC1XYWxsIFwkKFJQTV9PUFRfRkxBR1MpOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixy ZWxybyAtbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQg REVTX1VOUk9MTDoke3MzOTB4X2FzbX06NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQg XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUik6Ojo2NCIsCisgIyMjIyBT byBjYWxsZWQgImhpZ2hncHJzIiB0YXJnZXQgZm9yIHovQXJjaGl0ZWN0dXJlIENQVXMKKyAjICJI aWdoZ3BycyIgaXMga2VybmVsIGZlYXR1cmUgZmlyc3QgaW1wbGVtZW50ZWQgaW4gTGludXggMi42 LjMyLCBzZWUKKyAjIC9wcm9jL2NwdWluZm8uIFRoZSBpZGVhIGlzIHRvIHByZXNlcnZlIG1vc3Qg c2lnbmlmaWNhbnQgYml0cyBvZgorQEAgLTQzNiwxMiArNDM2LDEyIEBAIG15ICV0YWJsZT0oCisg IyMjIyBTUEFSQyBMaW51eCBzZXR1cHMKKyAjIFJheSBNaWxsZXIgPHJheS5taWxsZXJAY29tcHV0 aW5nLXNlcnZpY2VzLm94Zm9yZC5hYy51az4gaGFzIHBhdGllbnRseQorICMgYXNzaXN0ZWQgd2l0 aCBkZWJ1Z2dpbmcgb2YgZm9sbG93aW5nIHR3byBjb25maWdzLgorLSJsaW51eC1zcGFyY3Y4Iiwi Z2NjOi1tY3B1PXY4IC1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsIC1E Qk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksg REVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y4X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElD Ojouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LXNwYXJjdjgi LCJnY2M6LW1jcHU9djggLURCX0VORElBTiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKSAtREJOX0RJ VjJXOjotRF9SRUVOVFJBTlQ6Oi1XbCwteixyZWxybyAtbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJD NF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpsaW51eC1zaGFy ZWQ6LWZQSUM6XCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAorICMg aXQncyBhIHJlYWwgbWVzcyB3aXRoIC1tY3B1PXVsdHJhc3BhcmMgb3B0aW9uIHVuZGVyIExpbnV4 LCBidXQKKyAjIC1XYSwtQXY4cGx1cyBzaG91bGQgZG8gdGhlIHRyaWNrIG5vIG1hdHRlciB3aGF0 LgorLSJsaW51eC1zcGFyY3Y5IiwiZ2NjOi1tMzIgLW1jcHU9dWx0cmFzcGFyYyAtREJfRU5ESUFO IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtV2EsLUF2OHBsdXMgLURCTl9ESVYyVzo6 LURfUkVFTlRSQU5UOlVMVFJBU1BBUkM6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksg REVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElD Oi1tMzI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJsaW51eC1zcGFy Y3Y5IiwiZ2NjOi1tMzIgLW1jcHU9dWx0cmFzcGFyYyAtREJfRU5ESUFOIC1XYWxsIFwkKFJQTV9P UFRfRkxBR1MpIC1XYSwtQXY4cGx1cyAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6VUxUUkFTUEFS QzotV2wsLXoscmVscm8gLWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9M TCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tMzIgXCQo UlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFNRVZFUikiLAorICMgR0NDIDMuMSBpcyBh IHJlcXVpcmVtZW50CistImxpbnV4NjQtc3BhcmN2OSIsImdjYzotbTY0IC1tY3B1PXVsdHJhc3Bh cmMgLURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFO VDpVTFRSQVNQQVJDOi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVT X1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGlu dXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6 Ojo2NCIsCisrImxpbnV4NjQtc3BhcmN2OSIsImdjYzotbTY0IC1tY3B1PXVsdHJhc3BhcmMgLURC X0VORElBTiAtV2FsbCBcJChSUE1fT1BUX0ZMQUdTKTo6LURfUkVFTlRSQU5UOlVMVFJBU1BBUkM6 LVdsLC16LHJlbHJvIC1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVT X1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGlu dXgtc2hhcmVkOi1mUElDOi1tNjQgXCQoUlBNX09QVF9GTEFHUyk6LnNvLlwkKFNITElCX1NPTkFN RVZFUik6Ojo2NCIsCisgIyMjIyBBbHBoYSBMaW51eCB3aXRoIEdOVSBDIGFuZCBDb21wYXEgQyBz ZXR1cHMKKyAjIFNwZWNpYWwgbm90ZXM6CisgIyAtIGxpbnV4LWFscGhhK2J3eC1nY2MgaXMgbWVu dCB0byBiZSB1c2VkIGZyb20gLi9jb25maWcgb25seS4gSWYgeW91CitAQCAtMTc2NCw3ICsxNzY0 LDcgQEAgd2hpbGUgKDxJTj4pCisgCWVsc2lmICgkc2hhcmVkX2V4dGVuc2lvbiBuZSAiIiAmJiAk c2hhcmVkX2V4dGVuc2lvbiA9fiAvXlwucyhbb2xdKVwuW15cLl0qXC5bXlwuXSokLykKKyAJCXsK KyAJCW15ICRzb3RtcCA9ICQxOworLQkJcy9eU0hBUkVEX0xJQlNfTElOS19FWFRTPS4qL1NIQVJF RF9MSUJTX0xJTktfRVhUUz0ucyRzb3RtcC5cJChTSExJQl9NQUpPUikgLnMkc290bXAvOworKwkJ cy9eU0hBUkVEX0xJQlNfTElOS19FWFRTPS4qL1NIQVJFRF9MSUJTX0xJTktfRVhUUz0ucyRzb3Rt cC5cJChTSExJQl9TT05BTUVWRVIpIC5zJHNvdG1wLzsKKyAJCX0KKyAJZWxzaWYgKCRzaGFyZWRf ZXh0ZW5zaW9uIG5lICIiICYmICRzaGFyZWRfZXh0ZW5zaW9uID1+IC9eXC5bXlwuXSpcLlteXC5d KlwuZHlsaWIkLykKKyAJCXsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL01ha2VmaWxlLm9yZy5y cG1idWlsZCBvcGVuc3NsLTEuMC4yYy9NYWtlZmlsZS5vcmcKKy0tLSBvcGVuc3NsLTEuMC4yYy9N YWtlZmlsZS5vcmcucnBtYnVpbGQJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAK KysrKyBvcGVuc3NsLTEuMC4yYy9NYWtlZmlsZS5vcmcJMjAxNS0wNi0xNSAxNzoxOToxNC44NzQ1 MTA5OTUgKzAyMDAKK0BAIC0xMCw2ICsxMCw3IEBAIFNITElCX1ZFUlNJT05fSElTVE9SWT0KKyBT SExJQl9NQUpPUj0KKyBTSExJQl9NSU5PUj0KKyBTSExJQl9FWFQ9CisrU0hMSUJfU09OQU1FVkVS PTEwCisgUExBVEZPUk09ZGlzdAorIE9QVElPTlM9CisgQ09ORklHVVJFX0FSR1M9CitAQCAtMzM4 LDEwICszMzksOSBAQCBjbGVhbi1zaGFyZWQ6CisgbGluay1zaGFyZWQ6CisgCUAgc2V0IC1lOyBm b3IgaSBpbiAkKFNITElCRElSUyk7IGRvIFwKKyAJCSQoTUFLRSkgLWYgJChIRVJFKS9NYWtlZmls ZS5zaGFyZWQgLWUgJChCVUlMREVOVikgXAorLQkJCUxJQk5BTUU9JCRpIExJQlZFUlNJT049JChT SExJQl9NQUpPUikuJChTSExJQl9NSU5PUikgXAorKwkJCUxJQk5BTUU9JCRpIExJQlZFUlNJT049 JChTSExJQl9TT05BTUVWRVIpIFwKKyAJCQlMSUJDT01QQVRWRVJTSU9OUz0iOyQoU0hMSUJfVkVS U0lPTl9ISVNUT1JZKSIgXAorIAkJCXN5bWxpbmsuJChTSExJQl9UQVJHRVQpOyBcCistCQlsaWJz PSIkJGxpYnMgLWwkJGkiOyBcCisgCWRvbmUKKyAKKyBidWlsZC1zaGFyZWQ6IGRvXyQoU0hMSUJf VEFSR0VUKSBsaW5rLXNoYXJlZAorQEAgLTM1Miw3ICszNTIsNyBAQCBkb18kKFNITElCX1RBUkdF VCk6CisgCQkJbGlicz0iJChMSUJLUkI1KSAkJGxpYnMiOyBcCisgCQlmaTsgXAorIAkJJChDTEVB UkVOVikgJiYgJChNQUtFKSAtZiBNYWtlZmlsZS5zaGFyZWQgLWUgJChCVUlMREVOVikgXAorLQkJ CUxJQk5BTUU9JCRpIExJQlZFUlNJT049JChTSExJQl9NQUpPUikuJChTSExJQl9NSU5PUikgXAor KwkJCUxJQk5BTUU9JCRpIExJQlZFUlNJT049JChTSExJQl9TT05BTUVWRVIpIFwKKyAJCQlMSUJD T01QQVRWRVJTSU9OUz0iOyQoU0hMSUJfVkVSU0lPTl9ISVNUT1JZKSIgXAorIAkJCUxJQkRFUFM9 IiQkbGlicyAkKEVYX0xJQlMpIiBcCisgCQkJbGlua19hLiQoU0hMSUJfVEFSR0VUKTsgXAoKZGlm ZiAtLWdpdCBhL29wZW5zc2wtMS4wLjJjLXRydXN0ZWQtZmlyc3QtZG9jLnBhdGNoIGIvb3BlbnNz bC0xLjAuMmMtdHJ1c3RlZC1maXJzdC1kb2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNjNlMTA3NgotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4wLjJjLXRy dXN0ZWQtZmlyc3QtZG9jLnBhdGNoCkBAIC0wLDAgKzEsMjg4IEBACitkaWZmIC11cCBvcGVuc3Ns LTEuMC4yYy9hcHBzL2Ntcy5jLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmMvYXBwcy9jbXMu YworLS0tIG9wZW5zc2wtMS4wLjJjL2FwcHMvY21zLmMudHJ1c3RlZC1maXJzdAkyMDE1LTA2LTE1 IDE3OjQ1OjEzLjExMjI3OTc2MSArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2FwcHMvY21zLmMJ MjAxNS0wNi0xNSAxNzo0NjoxMS4wNDU2MTE1NzUgKzAyMDAKK0BAIC02NDYsNiArNjQ2LDggQEAg aW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAgICAgICAgICAiLUNB cGF0aCBkaXIgICAgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgZGlyZWN0b3J5XG4iKTsKKyAgICAgICAg IEJJT19wcmludGYoYmlvX2VyciwgIi1DQWZpbGUgZmlsZSAgIHRydXN0ZWQgY2VydGlmaWNhdGVz IGZpbGVcbiIpOworICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJyLAorKyAgICAgICAgICAgICAg ICAgICAiLXRydXN0ZWRfZmlyc3QgdXNlIHRydXN0ZWQgY2VydGlmaWNhdGVzIGZpcnN0IHdoZW4g YnVpbGRpbmcgdGhlIHRydXN0IGNoYWluXG4iKTsKKysgICAgICAgIEJJT19wcmludGYoYmlvX2Vy ciwKKyAgICAgICAgICAgICAgICAgICAgIi1ub19hbHRfY2hhaW5zIG9ubHkgZXZlciB1c2UgdGhl IGZpcnN0IGNlcnRpZmljYXRlIGNoYWluIGZvdW5kXG4iKTsKKyAgICAgICAgIEJJT19wcmludGYo YmlvX2VyciwKKyAgICAgICAgICAgICAgICAgICAgIi1jcmxfY2hlY2sgICAgIGNoZWNrIHJldm9j YXRpb24gc3RhdHVzIG9mIHNpZ25lcidzIGNlcnRpZmljYXRlIHVzaW5nIENSTHNcbiIpOworZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmMvYXBwcy9vY3NwLmMudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEu MC4yYy9hcHBzL29jc3AuYworLS0tIG9wZW5zc2wtMS4wLjJjL2FwcHMvb2NzcC5jLnRydXN0ZWQt Zmlyc3QJMjAxNS0wNi0xNSAxNzo0NToxMy4xMTIyNzk3NjEgKzAyMDAKKysrKyBvcGVuc3NsLTEu MC4yYy9hcHBzL29jc3AuYwkyMDE1LTA2LTE1IDE3OjQ2OjMxLjg5ODA5MDk0OCArMDIwMAorQEAg LTUzNiw2ICs1MzYsOCBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAg ICBCSU9fcHJpbnRmKGJpb19lcnIsCisgICAgICAgICAgICAgICAgICAgICItQ0FmaWxlIGZpbGUg ICAgICAgICB0cnVzdGVkIGNlcnRpZmljYXRlcyBmaWxlXG4iKTsKKyAgICAgICAgIEJJT19wcmlu dGYoYmlvX2VyciwKKysgICAgICAgICAgICAgICAgICAgIi10cnVzdGVkX2ZpcnN0ICAgICAgIHVz ZSB0cnVzdGVkIGNlcnRpZmljYXRlcyBmaXJzdCB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFp blxuIik7CisrICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCisgICAgICAgICAgICAgICAgICAg ICItbm9fYWx0X2NoYWlucyAgICAgICBvbmx5IGV2ZXIgdXNlIHRoZSBmaXJzdCBjZXJ0aWZpY2F0 ZSBjaGFpbiBmb3VuZFxuIik7CisgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCisgICAgICAg ICAgICAgICAgICAgICItVkFmaWxlIGZpbGUgICAgICAgICB2YWxpZGF0b3IgY2VydGlmaWNhdGVz IGZpbGVcbiIpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvYXBwcy9zX2NsaWVudC5jLnRydXN0 ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmMvYXBwcy9zX2NsaWVudC5jCistLS0gb3BlbnNzbC0xLjAu MmMvYXBwcy9zX2NsaWVudC5jLnRydXN0ZWQtZmlyc3QJMjAxNS0wNi0xNSAxNzo0NToxMy4xMTMy Nzk3ODQgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9hcHBzL3NfY2xpZW50LmMJMjAxNS0wNi0x NSAxNzo0NzowNS42NDU4NjY3NjcgKzAyMDAKK0BAIC0zMzMsNiArMzMzLDggQEAgc3RhdGljIHZv aWQgc2NfdXNhZ2Uodm9pZCkKKyAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiIC1DQXBhdGggYXJn ICAgLSBQRU0gZm9ybWF0IGRpcmVjdG9yeSBvZiBDQSdzXG4iKTsKKyAgICAgQklPX3ByaW50Zihi aW9fZXJyLCAiIC1DQWZpbGUgYXJnICAgLSBQRU0gZm9ybWF0IGZpbGUgb2YgQ0Enc1xuIik7Cisg ICAgIEJJT19wcmludGYoYmlvX2VyciwKKysgICAgICAgICAgICAgICAiIC10cnVzdGVkX2ZpcnN0 IC0gVXNlIHRydXN0ZWQgQ0EncyBmaXJzdCB3aGVuIGJ1aWxkaW5nIHRoZSB0cnVzdCBjaGFpblxu Iik7CisrICAgIEJJT19wcmludGYoYmlvX2VyciwKKyAgICAgICAgICAgICAgICAiIC1ub19hbHRf Y2hhaW5zIC0gb25seSBldmVyIHVzZSB0aGUgZmlyc3QgY2VydGlmaWNhdGUgY2hhaW4gZm91bmRc biIpOworICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCisgICAgICAgICAgICAgICAgIiAtcmVjb25u ZWN0ICAgIC0gRHJvcCBhbmQgcmUtbWFrZSB0aGUgY29ubmVjdGlvbiB3aXRoIHRoZSBzYW1lIFNl c3Npb24tSURcbiIpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvYXBwcy9zbWltZS5jLnRydXN0 ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmMvYXBwcy9zbWltZS5jCistLS0gb3BlbnNzbC0xLjAuMmMv YXBwcy9zbWltZS5jLnRydXN0ZWQtZmlyc3QJMjAxNS0wNi0xNSAxNzo0NToxMy4xMTMyNzk3ODQg KzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9hcHBzL3NtaW1lLmMJMjAxNS0wNi0xNSAxNzo0Nzoz OS4wOTA2MzU2MjEgKzAyMDAKK0BAIC00NDIsNiArNDQyLDggQEAgaW50IE1BSU4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQorICAgICAgICAgICAgICAgICAgICAiLUNBcGF0aCBkaXIgICAgdHJ1c3Rl ZCBjZXJ0aWZpY2F0ZXMgZGlyZWN0b3J5XG4iKTsKKyAgICAgICAgIEJJT19wcmludGYoYmlvX2Vy ciwgIi1DQWZpbGUgZmlsZSAgIHRydXN0ZWQgY2VydGlmaWNhdGVzIGZpbGVcbiIpOworICAgICAg ICAgQklPX3ByaW50ZihiaW9fZXJyLAorKyAgICAgICAgICAgICAgICAgICAiLXRydXN0ZWRfZmly c3QgdXNlIHRydXN0ZWQgY2VydGlmaWNhdGVzIGZpcnN0IHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0 IGNoYWluXG4iKTsKKysgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKKyAgICAgICAgICAgICAg ICAgICAgIi1ub19hbHRfY2hhaW5zIG9ubHkgZXZlciB1c2UgdGhlIGZpcnN0IGNlcnRpZmljYXRl IGNoYWluIGZvdW5kXG4iKTsKKyAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwKKyAgICAgICAg ICAgICAgICAgICAgIi1jcmxfY2hlY2sgICAgIGNoZWNrIHJldm9jYXRpb24gc3RhdHVzIG9mIHNp Z25lcidzIGNlcnRpZmljYXRlIHVzaW5nIENSTHNcbiIpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmMvYXBwcy9zX3NlcnZlci5jLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmMvYXBwcy9zX3Nl cnZlci5jCistLS0gb3BlbnNzbC0xLjAuMmMvYXBwcy9zX3NlcnZlci5jLnRydXN0ZWQtZmlyc3QJ MjAxNS0wNi0xNSAxNzo0NToxMy4xMTQyNzk4MDcgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9h cHBzL3Nfc2VydmVyLmMJMjAxNS0wNi0xNSAxNzo0NzoyNC44NDEzMDgwNDYgKzAyMDAKK0BAIC01 NzIsNiArNTcyLDggQEAgc3RhdGljIHZvaWQgc3ZfdXNhZ2Uodm9pZCkKKyAgICAgQklPX3ByaW50 ZihiaW9fZXJyLCAiIC1DQXBhdGggYXJnICAgLSBQRU0gZm9ybWF0IGRpcmVjdG9yeSBvZiBDQSdz XG4iKTsKKyAgICAgQklPX3ByaW50ZihiaW9fZXJyLCAiIC1DQWZpbGUgYXJnICAgLSBQRU0gZm9y bWF0IGZpbGUgb2YgQ0Enc1xuIik7CisgICAgIEJJT19wcmludGYoYmlvX2VyciwKKysgICAgICAg ICAgICAgICAiIC10cnVzdGVkX2ZpcnN0IC0gVXNlIHRydXN0ZWQgQ0EncyBmaXJzdCB3aGVuIGJ1 aWxkaW5nIHRoZSB0cnVzdCBjaGFpblxuIik7CisrICAgIEJJT19wcmludGYoYmlvX2VyciwKKyAg ICAgICAgICAgICAgICAiIC1ub19hbHRfY2hhaW5zIC0gb25seSBldmVyIHVzZSB0aGUgZmlyc3Qg Y2VydGlmaWNhdGUgY2hhaW4gZm91bmRcbiIpOworICAgICBCSU9fcHJpbnRmKGJpb19lcnIsCisg ICAgICAgICAgICAgICAgIiAtbm9jZXJ0ICAgICAgIC0gRG9uJ3QgdXNlIGFueSBjZXJ0aWZpY2F0 ZXMgKEFub24tREgpXG4iKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2FwcHMvc190aW1lLmMu dHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEuMC4yYy9hcHBzL3NfdGltZS5jCistLS0gb3BlbnNzbC0x LjAuMmMvYXBwcy9zX3RpbWUuYy50cnVzdGVkLWZpcnN0CTIwMTUtMDYtMTUgMTc6NDU6MTMuMDEw Mjc3NDE2ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvYXBwcy9zX3RpbWUuYwkyMDE1LTA2LTE1 IDE3OjQ1OjEzLjExNDI3OTgwNyArMDIwMAorQEAgLTE4Miw2ICsxODIsNyBAQCBzdGF0aWMgdm9p ZCBzX3RpbWVfdXNhZ2Uodm9pZCkKKyAgICAgICAgICAgICAgICAgZmlsZSBpZiBub3Qgc3BlY2lm aWVkIGJ5IHRoaXMgb3B0aW9uXG5cCisgLUNBcGF0aCBhcmcgICAtIFBFTSBmb3JtYXQgZGlyZWN0 b3J5IG9mIENBJ3NcblwKKyAtQ0FmaWxlIGFyZyAgIC0gUEVNIGZvcm1hdCBmaWxlIG9mIENBJ3Nc blwKKystdHJ1c3RlZF9maXJzdCAtIFVzZSB0cnVzdGVkIENBJ3MgZmlyc3Qgd2hlbiBidWlsZGlu ZyB0aGUgdHJ1c3QgY2hhaW5cblwKKyAtY2lwaGVyICAgICAgIC0gcHJlZmVycmVkIGNpcGhlciB0 byB1c2UsIHBsYXkgd2l0aCAnb3BlbnNzbCBjaXBoZXJzJ1xuXG4iOworIAorICAgICBwcmludGYo InVzYWdlOiBzX3RpbWUgPGFyZ3M+XG5cbiIpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvYXBw cy90cy5jLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmMvYXBwcy90cy5jCistLS0gb3BlbnNz bC0xLjAuMmMvYXBwcy90cy5jLnRydXN0ZWQtZmlyc3QJMjAxNS0wNi0xNSAxNzo0NToxMy4wNjUy Nzg2ODEgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9hcHBzL3RzLmMJMjAxNS0wNi0xNSAxNzo0 NToxMy4xMTQyNzk4MDcgKzAyMDAKK0BAIC0zNTIsNyArMzUyLDcgQEAgaW50IE1BSU4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAgICAgICJ0cyAtdmVyaWZ5IFstZGF0YSBmaWxl X3RvX2hhc2hdIFstZGlnZXN0IGRpZ2VzdF9ieXRlc10gIgorICAgICAgICAgICAgICAgICJbLXF1 ZXJ5ZmlsZSByZXF1ZXN0LnRzcV0gIgorICAgICAgICAgICAgICAgICItaW4gcmVzcG9uc2UudHNy IFstdG9rZW5faW5dICIKKy0gICAgICAgICAgICAgICAiLUNBcGF0aCBjYV9wYXRoIC1DQWZpbGUg Y2FfZmlsZS5wZW0gIgorKyAgICAgICAgICAgICAgICItQ0FwYXRoIGNhX3BhdGggLUNBZmlsZSBj YV9maWxlLnBlbSAtdHJ1c3RlZF9maXJzdCIKKyAgICAgICAgICAgICAgICAiLXVudHJ1c3RlZCBj ZXJ0X2ZpbGUucGVtXG4iKTsKKyAgY2xlYW51cDoKKyAgICAgLyogQ2xlYW4gdXAuICovCitkaWZm IC11cCBvcGVuc3NsLTEuMC4yYy9hcHBzL3ZlcmlmeS5jLnRydXN0ZWQtZmlyc3Qgb3BlbnNzbC0x LjAuMmMvYXBwcy92ZXJpZnkuYworLS0tIG9wZW5zc2wtMS4wLjJjL2FwcHMvdmVyaWZ5LmMudHJ1 c3RlZC1maXJzdAkyMDE1LTA2LTE1IDE3OjQ1OjEzLjExNDI3OTgwNyArMDIwMAorKysrIG9wZW5z c2wtMS4wLjJjL2FwcHMvdmVyaWZ5LmMJMjAxNS0wNi0xNSAxNzo0ODowMy45NzkyMDc3NzggKzAy MDAKK0BAIC0yMzEsNyArMjMxLDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQor ICBlbmQ6CisgICAgIGlmIChyZXQgPT0gMSkgeworICAgICAgICAgQklPX3ByaW50ZihiaW9fZXJy LAorLSAgICAgICAgICAgICAgICAgICAidXNhZ2U6IHZlcmlmeSBbLXZlcmJvc2VdIFstQ0FwYXRo IHBhdGhdIFstQ0FmaWxlIGZpbGVdIFstcHVycG9zZSBwdXJwb3NlXSBbLWNybF9jaGVja10iKTsK KysgICAgICAgICAgICAgICAgICAgInVzYWdlOiB2ZXJpZnkgWy12ZXJib3NlXSBbLUNBcGF0aCBw YXRoXSBbLUNBZmlsZSBmaWxlXSBbLXRydXN0ZWRfZmlyc3RdIFstcHVycG9zZSBwdXJwb3NlXSBb LWNybF9jaGVja10iKTsKKyAgICAgICAgIEJJT19wcmludGYoYmlvX2VyciwgIiBbLW5vX2FsdF9j aGFpbnNdIFstYXR0aW1lIHRpbWVzdGFtcF0iKTsKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5F CisgICAgICAgICBCSU9fcHJpbnRmKGJpb19lcnIsICIgWy1lbmdpbmUgZV0iKTsKK2RpZmYgLXVw IG9wZW5zc2wtMS4wLjJjL2RvYy9hcHBzL2Ntcy5wb2QudHJ1c3RlZC1maXJzdCBvcGVuc3NsLTEu MC4yYy9kb2MvYXBwcy9jbXMucG9kCistLS0gb3BlbnNzbC0xLjAuMmMvZG9jL2FwcHMvY21zLnBv ZC50cnVzdGVkLWZpcnN0CTIwMTUtMDYtMTIgMTY6NTE6MjEuMDAwMDAwMDAwICswMjAwCisrKysg b3BlbnNzbC0xLjAuMmMvZG9jL2FwcHMvY21zLnBvZAkyMDE1LTA2LTE1IDE3OjQ4OjQzLjYxNTEx ODk1OCArMDIwMAorQEAgLTM1LDYgKzM1LDcgQEAgQjxvcGVuc3NsPiBCPGNtcz4KKyBbQjwtcHJp bnQ+XQorIFtCPC1DQWZpbGUgZmlsZT5dCisgW0I8LUNBcGF0aCBkaXI+XQorK1tCPC10cnVzdGVk X2ZpcnN0Pl0KKyBbQjwtbm9fYWx0X2NoYWlucz5dCisgW0I8LW1kIGRpZ2VzdD5dCisgW0I8LVtj aXBoZXJdPl0KK0BAIC0yNDUsNiArMjQ2LDEyIEBAIEI8LXZlcmlmeT4uIFRoaXMgZGlyZWN0b3J5 IG11c3QgYmUgYSBzdGEKKyBpcyBhIGhhc2ggb2YgZWFjaCBzdWJqZWN0IG5hbWUgKHVzaW5nIEI8 eDUwOSAtaGFzaD4pIHNob3VsZCBiZSBsaW5rZWQKKyB0byBlYWNoIGNlcnRpZmljYXRlLgorIAor Kz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+CisrCisrVXNlIGNlcnRpZmljYXRlcyBpbiBDQSBmaWxl IG9yIENBIGRpcmVjdG9yeSBiZWZvcmUgdW50cnVzdGVkIGNlcnRpZmljYXRlcworK2Zyb20gdGhl IG1lc3NhZ2Ugd2hlbiBidWlsZGluZyB0aGUgdHJ1c3QgY2hhaW4gdG8gdmVyaWZ5IGNlcnRpZmlj YXRlcy4KKytUaGlzIGlzIG1haW5seSB1c2VmdWwgaW4gZW52aXJvbm1lbnRzIHdpdGggQnJpZGdl IENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMuCisrCisgPWl0ZW0gQjwtbWQgZGlnZXN0PgorIAor IGRpZ2VzdCBhbGdvcml0aG0gdG8gdXNlIHdoZW4gc2lnbmluZyBvciByZXNpZ25pbmcuIElmIG5v dCBwcmVzZW50IHRoZW4gdGhlCitkaWZmIC11cCBvcGVuc3NsLTEuMC4yYy9kb2MvYXBwcy9vY3Nw LnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJjL2RvYy9hcHBzL29jc3AucG9kCistLS0g b3BlbnNzbC0xLjAuMmMvZG9jL2FwcHMvb2NzcC5wb2QudHJ1c3RlZC1maXJzdAkyMDE1LTA2LTE1 IDE3OjQ1OjEzLjExNTI3OTgzMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjJjL2RvYy9hcHBzL29j c3AucG9kCTIwMTUtMDYtMTUgMTc6NDk6MDYuMzM3NjQxMzIwICswMjAwCitAQCAtMjksNyArMjks OCBAQCBCPG9wZW5zc2w+IEI8b2NzcD4KKyBbQjwtcGF0aD5dCisgW0I8LUNBcGF0aCBkaXI+XQor IFtCPC1DQWZpbGUgZmlsZT5dCistW0I8LW5vX2FsdF9jaGFpbnM+XV0KKytbQjwtdHJ1c3RlZF9m aXJzdD5dCisrW0I8LW5vX2FsdF9jaGFpbnM+XQorIFtCPC1WQWZpbGUgZmlsZT5dCisgW0I8LXZh bGlkaXR5X3BlcmlvZCBuPl0KKyBbQjwtc3RhdHVzX2FnZSBuPl0KK0BAIC0xNDQsNiArMTQ1LDEz IEBAIGNvbm5lY3Rpb24gdGltZW91dCB0byB0aGUgT0NTUCByZXNwb25kZXIKKyBmaWxlIG9yIHBh dGhuYW1lIGNvbnRhaW5pbmcgdHJ1c3RlZCBDQSBjZXJ0aWZpY2F0ZXMuIFRoZXNlIGFyZSB1c2Vk IHRvIHZlcmlmeQorIHRoZSBzaWduYXR1cmUgb24gdGhlIE9DU1AgcmVzcG9uc2UuCisgCisrPWl0 ZW0gQjwtdHJ1c3RlZF9maXJzdD4KKysKKytVc2UgY2VydGlmaWNhdGVzIGluIENBIGZpbGUgb3Ig Q0EgZGlyZWN0b3J5IG92ZXIgY2VydGlmaWNhdGVzIHByb3ZpZGVkCisraW4gdGhlIHJlc3BvbnNl IG9yIHJlc2lkaW5nIGluIG90aGVyIGNlcnRpZmljYXRlcyBmaWxlIHdoZW4gYnVpbGRpbmcgdGhl IHRydXN0CisrY2hhaW4gdG8gdmVyaWZ5IHJlc3BvbmRlciBjZXJ0aWZpY2F0ZS4KKytUaGlzIGlz IG1haW5seSB1c2VmdWwgaW4gZW52aXJvbm1lbnRzIHdpdGggQnJpZGdlIENBIG9yIENyb3NzLUNl cnRpZmllZCBDQXMuCisrCisgPWl0ZW0gQjwtbm9fYWx0X2NoYWlucz4KKyAKKyBTZWUgTDxCPHZl cmlmeT58dmVyaWZ5KDEpPiBtYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KK2RpZmYgLXVwIG9wZW5z c2wtMS4wLjJjL2RvYy9hcHBzL3NfY2xpZW50LnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4w LjJjL2RvYy9hcHBzL3NfY2xpZW50LnBvZAorLS0tIG9wZW5zc2wtMS4wLjJjL2RvYy9hcHBzL3Nf Y2xpZW50LnBvZC50cnVzdGVkLWZpcnN0CTIwMTUtMDYtMTUgMTc6NDU6MTMuMTE1Mjc5ODMwICsw MjAwCisrKysgb3BlbnNzbC0xLjAuMmMvZG9jL2FwcHMvc19jbGllbnQucG9kCTIwMTUtMDYtMTUg MTc6NDk6MjMuOTg0MDQ2OTg5ICswMjAwCitAQCAtMTksNiArMTksNyBAQCBCPG9wZW5zc2w+IEI8 c19jbGllbnQ+CisgW0I8LXBhc3MgYXJnPl0KKyBbQjwtQ0FwYXRoIGRpcmVjdG9yeT5dCisgW0I8 LUNBZmlsZSBmaWxlbmFtZT5dCisrW0I8LXRydXN0ZWRfZmlyc3Q+XQorIFtCPC1ub19hbHRfY2hh aW5zPl0KKyBbQjwtcmVjb25uZWN0Pl0KKyBbQjwtcGF1c2U+XQorQEAgLTEyNCw3ICsxMjUsNyBA QCBhbHNvIHVzZWQgd2hlbiBidWlsZGluZyB0aGUgY2xpZW50IGNlcnRpCisgQSBmaWxlIGNvbnRh aW5pbmcgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgdG8gdXNlIGR1cmluZyBzZXJ2ZXIgYXV0aGVudGlj YXRpb24KKyBhbmQgdG8gdXNlIHdoZW4gYXR0ZW1wdGluZyB0byBidWlsZCB0aGUgY2xpZW50IGNl cnRpZmljYXRlIGNoYWluLgorIAorLT1pdGVtIEI8LXB1cnBvc2UsIC1pZ25vcmVfY3JpdGljYWws IC1pc3N1ZXJfY2hlY2tzLCAtY3JsX2NoZWNrLCAtY3JsX2NoZWNrX2FsbCwgLXBvbGljeV9jaGVj aywgLWV4dGVuZGVkX2NybCwgLXg1MDlfc3RyaWN0LCAtcG9saWN5IC1jaGVja19zc19zaWcgLW5v X2FsdF9jaGFpbnM+CisrPWl0ZW0gQjwtcHVycG9zZSwgLWlnbm9yZV9jcml0aWNhbCwgLWlzc3Vl cl9jaGVja3MsIC1jcmxfY2hlY2ssIC1jcmxfY2hlY2tfYWxsLCAtcG9saWN5X2NoZWNrLCAtZXh0 ZW5kZWRfY3JsLCAteDUwOV9zdHJpY3QsIC1wb2xpY3kgLWNoZWNrX3NzX3NpZywgLXRydXN0ZWRf Zmlyc3QgLW5vX2FsdF9jaGFpbnM+CisgCisgU2V0IHZhcmlvdXMgY2VydGlmaWNhdGUgY2hhaW4g dmFsaWFkaXRpb24gb3B0aW9uLiBTZWUgdGhlCisgTDxCPHZlcmlmeT58dmVyaWZ5KDEpPiBtYW51 YWwgcGFnZSBmb3IgZGV0YWlscy4KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjJjL2RvYy9hcHBzL3Nt aW1lLnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJjL2RvYy9hcHBzL3NtaW1lLnBvZAor LS0tIG9wZW5zc2wtMS4wLjJjL2RvYy9hcHBzL3NtaW1lLnBvZC50cnVzdGVkLWZpcnN0CTIwMTUt MDYtMTIgMTY6NTE6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMmMvZG9jL2Fw cHMvc21pbWUucG9kCTIwMTUtMDYtMTUgMTc6NTA6MDAuODU2ODk0NjQ4ICswMjAwCitAQCAtMTUs NiArMTUsOSBAQCBCPG9wZW5zc2w+IEI8c21pbWU+CisgW0I8LXBrN291dD5dCisgW0I8LVtjaXBo ZXJdPl0KKyBbQjwtaW4gZmlsZT5dCisrW0I8LUNBZmlsZSBmaWxlPl0KKytbQjwtQ0FwYXRoIGRp cj5dCisrW0I8LXRydXN0ZWRfZmlyc3Q+XQorIFtCPC1ub19hbHRfY2hhaW5zPl0KKyBbQjwtY2Vy dGZpbGUgZmlsZT5dCisgW0I8LXNpZ25lciBmaWxlPl0KK0BAIC0xNDcsNiArMTUwLDEyIEBAIEI8 LXZlcmlmeT4uIFRoaXMgZGlyZWN0b3J5IG11c3QgYmUgYSBzdGEKKyBpcyBhIGhhc2ggb2YgZWFj aCBzdWJqZWN0IG5hbWUgKHVzaW5nIEI8eDUwOSAtaGFzaD4pIHNob3VsZCBiZSBsaW5rZWQKKyB0 byBlYWNoIGNlcnRpZmljYXRlLgorIAorKz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+CisrCisrVXNl IGNlcnRpZmljYXRlcyBpbiBDQSBmaWxlIG9yIENBIGRpcmVjdG9yeSBvdmVyIGNlcnRpZmljYXRl cyBwcm92aWRlZAorK2luIHRoZSBtZXNzYWdlIHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWlu IHRvIHZlcmlmeSBhIGNlcnRpZmljYXRlLgorK1RoaXMgaXMgbWFpbmx5IHVzZWZ1bCBpbiBlbnZp cm9ubWVudHMgd2l0aCBCcmlkZ2UgQ0Egb3IgQ3Jvc3MtQ2VydGlmaWVkIENBcy4KKysKKyA9aXRl bSBCPC1tZCBkaWdlc3Q+CisgCisgZGlnZXN0IGFsZ29yaXRobSB0byB1c2Ugd2hlbiBzaWduaW5n IG9yIHJlc2lnbmluZy4gSWYgbm90IHByZXNlbnQgdGhlbiB0aGUKK2RpZmYgLXVwIG9wZW5zc2wt MS4wLjJjL2RvYy9hcHBzL3Nfc2VydmVyLnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJj L2RvYy9hcHBzL3Nfc2VydmVyLnBvZAorLS0tIG9wZW5zc2wtMS4wLjJjL2RvYy9hcHBzL3Nfc2Vy dmVyLnBvZC50cnVzdGVkLWZpcnN0CTIwMTUtMDYtMTUgMTc6NDU6MTMuMTE2Mjc5ODUzICswMjAw CisrKysgb3BlbnNzbC0xLjAuMmMvZG9jL2FwcHMvc19zZXJ2ZXIucG9kCTIwMTUtMDYtMTUgMTc6 NDk6MzcuNDIwMzU1ODczICswMjAwCitAQCAtMzMsNiArMzMsNyBAQCBCPG9wZW5zc2w+IEI8c19z ZXJ2ZXI+CisgW0I8LXN0YXRlPl0KKyBbQjwtQ0FwYXRoIGRpcmVjdG9yeT5dCisgW0I8LUNBZmls ZSBmaWxlbmFtZT5dCisrW0I8LXRydXN0ZWRfZmlyc3Q+XQorIFtCPC1ub19hbHRfY2hhaW5zPl0K KyBbQjwtbm9jZXJ0Pl0KKyBbQjwtY2lwaGVyIGNpcGhlcmxpc3Q+XQorQEAgLTE3NSw2ICsxNzYs MTIgQEAgYW5kIHRvIHVzZSB3aGVuIGF0dGVtcHRpbmcgdG8gYnVpbGQgdGhlCisgaXMgYWxzbyB1 c2VkIGluIHRoZSBsaXN0IG9mIGFjY2VwdGFibGUgY2xpZW50IENBcyBwYXNzZWQgdG8gdGhlIGNs aWVudCB3aGVuCisgYSBjZXJ0aWZpY2F0ZSBpcyByZXF1ZXN0ZWQuCisgCisrPWl0ZW0gQjwtdHJ1 c3RlZF9maXJzdD4KKysKKytVc2UgY2VydGlmaWNhdGVzIGluIENBIGZpbGUgb3IgQ0EgZGlyZWN0 b3J5IGJlZm9yZSBvdGhlciBjZXJ0aWZpY2F0ZXMgCisrd2hlbiBidWlsZGluZyB0aGUgdHJ1c3Qg Y2hhaW4gdG8gdmVyaWZ5IGNsaWVudCBjZXJ0aWZpY2F0ZXMuCisrVGhpcyBpcyBtYWlubHkgdXNl ZnVsIGluIGVudmlyb25tZW50cyB3aXRoIEJyaWRnZSBDQSBvciBDcm9zcy1DZXJ0aWZpZWQgQ0Fz LgorKworID1pdGVtIEI8LW5vX2FsdF9jaGFpbnM+CisgCisgU2VlIHRoZSBMPEI8dmVyaWZ5Pnx2 ZXJpZnkoMSk+IG1hbnVhbCBwYWdlIGZvciBkZXRhaWxzLgorZGlmZiAtdXAgb3BlbnNzbC0xLjAu MmMvZG9jL2FwcHMvc190aW1lLnBvZC50cnVzdGVkLWZpcnN0IG9wZW5zc2wtMS4wLjJjL2RvYy9h cHBzL3NfdGltZS5wb2QKKy0tLSBvcGVuc3NsLTEuMC4yYy9kb2MvYXBwcy9zX3RpbWUucG9kLnRy dXN0ZWQtZmlyc3QJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVu c3NsLTEuMC4yYy9kb2MvYXBwcy9zX3RpbWUucG9kCTIwMTUtMDYtMTUgMTc6NDU6MTMuMTE2Mjc5 ODUzICswMjAwCitAQCAtMTQsNiArMTQsNyBAQCBCPG9wZW5zc2w+IEI8c190aW1lPgorIFtCPC1r ZXkgZmlsZW5hbWU+XQorIFtCPC1DQXBhdGggZGlyZWN0b3J5Pl0KKyBbQjwtQ0FmaWxlIGZpbGVu YW1lPl0KKytbQjwtdHJ1c3RlZF9maXJzdD5dCisgW0I8LXJldXNlPl0KKyBbQjwtbmV3Pl0KKyBb QjwtdmVyaWZ5IGRlcHRoPl0KK0BAIC03Niw2ICs3NywxMiBAQCBhbHNvIHVzZWQgd2hlbiBidWls ZGluZyB0aGUgY2xpZW50IGNlcnRpCisgQSBmaWxlIGNvbnRhaW5pbmcgdHJ1c3RlZCBjZXJ0aWZp Y2F0ZXMgdG8gdXNlIGR1cmluZyBzZXJ2ZXIgYXV0aGVudGljYXRpb24KKyBhbmQgdG8gdXNlIHdo ZW4gYXR0ZW1wdGluZyB0byBidWlsZCB0aGUgY2xpZW50IGNlcnRpZmljYXRlIGNoYWluLgorIAor Kz1pdGVtIEI8LXRydXN0ZWRfZmlyc3Q+CisrCisrVXNlIGNlcnRpZmljYXRlcyBpbiBDQSBmaWxl IG9yIENBIGRpcmVjdG9yeSBvdmVyIHRoZSBjZXJ0aWZpY2F0ZXMgcHJvdmlkZWQKKytieSB0aGUg c2VydmVyIHdoZW4gYnVpbGRpbmcgdGhlIHRydXN0IGNoYWluIHRvIHZlcmlmeSBzZXJ2ZXIgY2Vy dGlmaWNhdGUuCisrVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluIGVudmlyb25tZW50cyB3aXRoIEJy aWRnZSBDQSBvciBDcm9zcy1DZXJ0aWZpZWQgQ0FzLgorKworID1pdGVtIEI8LW5ldz4KKyAKKyBw ZXJmb3JtcyB0aGUgdGltaW5nIHRlc3QgdXNpbmcgYSBuZXcgc2Vzc2lvbiBJRCBmb3IgZWFjaCBj b25uZWN0aW9uLgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMmMvZG9jL2FwcHMvdHMucG9kLnRydXN0 ZWQtZmlyc3Qgb3BlbnNzbC0xLjAuMmMvZG9jL2FwcHMvdHMucG9kCistLS0gb3BlbnNzbC0xLjAu MmMvZG9jL2FwcHMvdHMucG9kLnRydXN0ZWQtZmlyc3QJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAw MDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9kb2MvYXBwcy90cy5wb2QJMjAxNS0wNi0x NSAxNzo0NToxMy4xMTYyNzk4NTMgKzAyMDAKK0BAIC00Niw2ICs0Niw3IEBAIEI8LXZlcmlmeT4K KyBbQjwtdG9rZW5faW4+XQorIFtCPC1DQXBhdGg+IHRydXN0ZWRfY2VydF9wYXRoXQorIFtCPC1D QWZpbGU+IHRydXN0ZWRfY2VydHMucGVtXQorK1tCPC10cnVzdGVkX2ZpcnN0Pl0KKyBbQjwtdW50 cnVzdGVkPiBjZXJ0X2ZpbGUucGVtXQorIAorID1oZWFkMSBERVNDUklQVElPTgorQEAgLTMyNCw2 ICszMjUsMTIgQEAgTDx2ZXJpZnkoMSl8dmVyaWZ5KDEpPiBmb3IgYWRkaXRpb25hbCBkZQorIG9y IEI8LUNBcGF0aD4gbXVzdCBiZSBzcGVjaWZpZWQuCisgKE9wdGlvbmFsKQorIAorKz1pdGVtIEI8 LXRydXN0ZWRfZmlyc3Q+CisrCisrVXNlIGNlcnRpZmljYXRlcyBpbiBDQSBmaWxlIG9yIENBIGRp cmVjdG9yeSBiZWZvcmUgb3RoZXIgY2VydGlmaWNhdGVzCisrd2hlbiBidWlsZGluZyB0aGUgdHJ1 c3QgY2hhaW4gdG8gdmVyaWZ5IGNlcnRpZmljYXRlcy4KKytUaGlzIGlzIG1haW5seSB1c2VmdWwg aW4gZW52aXJvbm1lbnRzIHdpdGggQnJpZGdlIENBIG9yIENyb3NzLUNlcnRpZmllZCBDQXMuCisr CisgPWl0ZW0gQjwtdW50cnVzdGVkPiBjZXJ0X2ZpbGUucGVtCisgCisgU2V0IG9mIGFkZGl0aW9u YWwgdW50cnVzdGVkIGNlcnRpZmljYXRlcyBpbiBQRU0gZm9ybWF0IHdoaWNoIG1heSBiZQorZGlm ZiAtdXAgb3BlbnNzbC0xLjAuMmMvZG9jL2FwcHMvdmVyaWZ5LnBvZC50cnVzdGVkLWZpcnN0IG9w ZW5zc2wtMS4wLjJjL2RvYy9hcHBzL3ZlcmlmeS5wb2QKKy0tLSBvcGVuc3NsLTEuMC4yYy9kb2Mv YXBwcy92ZXJpZnkucG9kLnRydXN0ZWQtZmlyc3QJMjAxNS0wNi0xMiAxNjo1MToyMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMC4yYy9kb2MvYXBwcy92ZXJpZnkucG9kCTIwMTUtMDYt MTUgMTc6NDU6MTMuMTE2Mjc5ODUzICswMjAwCitAQCAtOSw2ICs5LDcgQEAgdmVyaWZ5IC0gVXRp bGl0eSB0byB2ZXJpZnkgY2VydGlmaWNhdGVzLgorIEI8b3BlbnNzbD4gQjx2ZXJpZnk+CisgW0I8 LUNBcGF0aCBkaXJlY3Rvcnk+XQorIFtCPC1DQWZpbGUgZmlsZT5dCisrW0I8LXRydXN0ZWRfZmly c3Q+XQorIFtCPC1wdXJwb3NlIHB1cnBvc2U+XQorIFtCPC1wb2xpY3kgYXJnPl0KKyBbQjwtaWdu b3JlX2NyaXRpY2FsPl0KK0BAIC03OSw2ICs4MCwxMiBAQCBJZiBhIHZhbGlkIENSTCBjYW5ub3Qg YmUgZm91bmQgYW4gZXJyb3IKKyBBIGZpbGUgb2YgdW50cnVzdGVkIGNlcnRpZmljYXRlcy4gVGhl IGZpbGUgc2hvdWxkIGNvbnRhaW4gbXVsdGlwbGUgY2VydGlmaWNhdGVzCisgaW4gUEVNIGZvcm1h dCBjb25jYXRlbmF0ZWQgdG9nZXRoZXIuCisgCisrPWl0ZW0gQjwtdHJ1c3RlZF9maXJzdD4KKysK KytVc2UgY2VydGlmaWNhdGVzIGluIENBIGZpbGUgb3IgQ0EgZGlyZWN0b3J5IGJlZm9yZSB0aGUg Y2VydGlmaWNhdGVzIGluIHRoZSB1bnRydXN0ZWQKKytmaWxlIHdoZW4gYnVpbGRpbmcgdGhlIHRy dXN0IGNoYWluIHRvIHZlcmlmeSBjZXJ0aWZpY2F0ZXMuCisrVGhpcyBpcyBtYWlubHkgdXNlZnVs IGluIGVudmlyb25tZW50cyB3aXRoIEJyaWRnZSBDQSBvciBDcm9zcy1DZXJ0aWZpZWQgQ0FzLgor KworID1pdGVtIEI8LXB1cnBvc2UgcHVycG9zZT4KKyAKKyBUaGUgaW50ZW5kZWQgdXNlIGZvciB0 aGUgY2VydGlmaWNhdGUuIElmIHRoaXMgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsCgpkaWZmIC0t Z2l0IGEvb3BlbnNzbC5zcGVjIGIvb3BlbnNzbC5zcGVjCmluZGV4IDMyNGZhMDkuLjc4ZGVmODcg MTAwNjQ0Ci0tLSBhL29wZW5zc2wuc3BlYworKysgYi9vcGVuc3NsLnNwZWMKQEAgLTIyLDggKzIy LDggQEAKIAogU3VtbWFyeTogVXRpbGl0aWVzIGZyb20gdGhlIGdlbmVyYWwgcHVycG9zZSBjcnlw dG9ncmFwaHkgbGlicmFyeSB3aXRoIFRMUyBpbXBsZW1lbnRhdGlvbgogTmFtZTogb3BlbnNzbAot VmVyc2lvbjogMS4wLjJhCi1SZWxlYXNlOiA0JXs/ZGlzdH0KK1ZlcnNpb246IDEuMC4yYworUmVs ZWFzZTogMSV7P2Rpc3R9CiBFcG9jaDogMQogIyBXZSBoYXZlIHRvIHJlbW92ZSBjZXJ0YWluIHBh dGVudGVkIGFsZ29yaXRobXMgZnJvbSB0aGUgb3BlbnNzbCBzb3VyY2UKICMgdGFyYmFsbCB3aXRo IHRoZSBob2JibGUtb3BlbnNzbCBzY3JpcHQgd2hpY2ggaXMgaW5jbHVkZWQgYmVsb3cuCkBAIC00 MCw3ICs0MCw3IEBAIFNvdXJjZTExOiBSRUFETUUuRklQUwogU291cmNlMTI6IGVjX2N1cnZlLmMK IFNvdXJjZTEzOiBlY3Rlc3QuYwogIyBCdWlsZCBjaGFuZ2VzCi1QYXRjaDE6IG9wZW5zc2wtMS4w LjJhLXJwbWJ1aWxkLnBhdGNoCitQYXRjaDE6IG9wZW5zc2wtMS4wLjJjLXJwbWJ1aWxkLnBhdGNo CiBQYXRjaDI6IG9wZW5zc2wtMS4wLjJhLWRlZmF1bHRzLnBhdGNoCiBQYXRjaDQ6IG9wZW5zc2wt MS4wLjJhLWVuZ2luZXNkaXIucGF0Y2gKIFBhdGNoNTogb3BlbnNzbC0xLjAuMmEtbm8tcnBhdGgu cGF0Y2gKQEAgLTQ5LDE0ICs0OSwxNCBAQCBQYXRjaDc6IG9wZW5zc2wtMS4wLjAtdGltZXpvbmUu cGF0Y2gKIFBhdGNoODogb3BlbnNzbC0xLjAuMWMtcGVybGZpbmQucGF0Y2gKIFBhdGNoOTogb3Bl bnNzbC0xLjAuMWMtYWxpYXNpbmcucGF0Y2gKICMgQnVnIGZpeGVzCi1QYXRjaDIzOiBvcGVuc3Ns LTEuMC4yYS1kZWZhdWx0LXBhdGhzLnBhdGNoCitQYXRjaDIzOiBvcGVuc3NsLTEuMC4yYy1kZWZh dWx0LXBhdGhzLnBhdGNoCiBQYXRjaDI0OiBvcGVuc3NsLTEuMC4yYS1pc3N1ZXItaGFzaC5wYXRj aAogIyBGdW5jdGlvbmFsaXR5IGNoYW5nZXMKIFBhdGNoMzM6IG9wZW5zc2wtMS4wLjAtYmV0YTQt Y2EtZGlyLnBhdGNoCiBQYXRjaDM0OiBvcGVuc3NsLTEuMC4yYS14NTA5LnBhdGNoCiBQYXRjaDM1 OiBvcGVuc3NsLTEuMC4yYS12ZXJzaW9uLWFkZC1lbmdpbmVzLnBhdGNoCiBQYXRjaDM5OiBvcGVu c3NsLTEuMC4yYS1pcHY2LWFwcHMucGF0Y2gKLVBhdGNoNDA6IG9wZW5zc2wtMS4wLjJhLWZpcHMu cGF0Y2gKK1BhdGNoNDA6IG9wZW5zc2wtMS4wLjJjLWZpcHMucGF0Y2gKIFBhdGNoNDU6IG9wZW5z c2wtMS4wLjJhLWVudi16bGliLnBhdGNoCiBQYXRjaDQ3OiBvcGVuc3NsLTEuMC4yYS1yZWFkbWUt d2FybmluZy5wYXRjaAogUGF0Y2g0OTogb3BlbnNzbC0xLjAuMWktYWxnby1kb2MucGF0Y2gKQEAg LTY5LDExICs2OSwxMCBAQCBQYXRjaDYzOiBvcGVuc3NsLTEuMC4yYS14bXBwLXN0YXJ0dGxzLnBh dGNoCiBQYXRjaDY1OiBvcGVuc3NsLTEuMC4yYS1jaGlsLWZpeGVzLnBhdGNoCiBQYXRjaDY2OiBv cGVuc3NsLTEuMC4yYS1wa2djb25maWcta3JiNS5wYXRjaAogUGF0Y2g2ODogb3BlbnNzbC0xLjAu MmEtc2VjdXJlLWdldGVudi5wYXRjaAotUGF0Y2g2OTogb3BlbnNzbC0xLjAuMmEtZGgtMTAyNC5w YXRjaAogUGF0Y2g3MDogb3BlbnNzbC0xLjAuMmEtZmlwcy1lYy5wYXRjaAogUGF0Y2g3MTogb3Bl bnNzbC0xLjAuMmEtbWFuZml4LnBhdGNoCiBQYXRjaDcyOiBvcGVuc3NsLTEuMC4yYS1maXBzLWN0 b3IucGF0Y2gKLVBhdGNoNzM6IG9wZW5zc2wtMS4wLjJhLWVjYy1zdWl0ZWIucGF0Y2gKK1BhdGNo NzM6IG9wZW5zc2wtMS4wLjJjLWVjYy1zdWl0ZWIucGF0Y2gKIFBhdGNoNzQ6IG9wZW5zc2wtMS4w LjJhLW5vLW1kNS12ZXJpZnkucGF0Y2gKIFBhdGNoNzU6IG9wZW5zc2wtMS4wLjJhLWNvbXBhdC1z eW1ib2xzLnBhdGNoCiBQYXRjaDc2OiBvcGVuc3NsLTEuMC4yYS1uZXctZmlwcy1yZXFzLnBhdGNo CkBAIC04NSw4ICs4NCw3IEBAIFBhdGNoOTM6IG9wZW5zc2wtMS4wLjJhLWRpc2FibGUtc3NsdjJ2 My5wYXRjaAogIyBCYWNrcG9ydGVkIGZpeGVzIGluY2x1ZGluZyBzZWN1cml0eSBmaXhlcwogUGF0 Y2g4MDogb3BlbnNzbC0xLjAuMmEtd3JhcC1wYWQucGF0Y2gKIFBhdGNoODE6IG9wZW5zc2wtMS4w LjJhLXBhZGxvY2s2NC5wYXRjaAotUGF0Y2g4Mjogb3BlbnNzbC0xLjAuMmEtdHJ1c3RlZC1maXJz dC1kb2MucGF0Y2gKLVBhdGNoODM6IG9wZW5zc2wtMS4wLjJhLWFsdC1jaGFpbnMucGF0Y2gKK1Bh dGNoODI6IG9wZW5zc2wtMS4wLjJjLXRydXN0ZWQtZmlyc3QtZG9jLnBhdGNoCiAKIExpY2Vuc2U6 IE9wZW5TU0wKIEdyb3VwOiBTeXN0ZW0gRW52aXJvbm1lbnQvTGlicmFyaWVzCkBAIC0xOTAsNyAr MTg4LDYgQEAgY3AgJXtTT1VSQ0UxMn0gJXtTT1VSQ0UxM30gY3J5cHRvL2VjLwogJXBhdGNoNjUg LXAxIC1iIC5jaGlsCiAlcGF0Y2g2NiAtcDEgLWIgLmtyYjUKICVwYXRjaDY4IC1wMSAtYiAuc2Vj dXJlLWdldGVudgotJXBhdGNoNjkgLXAxIC1iIC5kaDEwMjQKICVwYXRjaDcwIC1wMSAtYiAuZmlw cy1lYwogJXBhdGNoNzEgLXAxIC1iIC5tYW5maXgKICVwYXRjaDcyIC1wMSAtYiAuZmlwcy1jdG9y CkBAIC0yMDcsNyArMjA0LDYgQEAgY3AgJXtTT1VSQ0UxMn0gJXtTT1VSQ0UxM30gY3J5cHRvL2Vj LwogJXBhdGNoODAgLXAxIC1iIC53cmFwCiAlcGF0Y2g4MSAtcDEgLWIgLnBhZGxvY2s2NAogJXBh dGNoODIgLXAxIC1iIC50cnVzdGVkLWZpcnN0Ci0lcGF0Y2g4MyAtcDEgLWIgLmFsdC1jaGFpbnMK IAogc2VkIC1pICdzL1NITElCX1ZFUlNJT05fTlVNQkVSICIxLjAuMCIvU0hMSUJfVkVSU0lPTl9O VU1CRVIgIiV7dmVyc2lvbn0iLycgY3J5cHRvL29wZW5zc2x2LmgKIApAQCAtNDc4LDYgKzQ3NCw5 IEBAIHJtIC1yZiAkUlBNX0JVSUxEX1JPT1QvJXtfbGliZGlyfS9maXBzY2FuaXN0ZXIuKgogJXBv c3R1biBsaWJzIC1wIC9zYmluL2xkY29uZmlnCiAKICVjaGFuZ2Vsb2cKKyogTW9uIEp1biAxNSAy MDE1IFRvbcOhxaEgTXLDoXogPHRtcmF6QHJlZGhhdC5jb20+IDEuMC4yYy0xCistIG1pbm9yIHVw c3RyZWFtIHJlbGVhc2UgMS4wLjJjIGZpeGluZyBtdWx0aXBsZSBzZWN1cml0eSBpc3N1ZXMKKwog KiBUaHUgTWF5ICA3IDIwMTUgUGV0ZXIgUm9iaW5zb24gPHBicm9iaW5zb25AZmVkb3JhcHJvamVj dC5vcmc+IDEuMC4yYS00CiAtIEFkZCBhYXJjaDY0IHNzbGFyY2ggZGV0YWlscwogCgpkaWZmIC0t Z2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggMjRiMmM5NS4uYzVhODRkNiAxMDA2NDQKLS0t IGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBACi1mNTFjNGRmOTVjM2Q1M2ZjODJh MDg4NWZkMTY5MjI1YSAgb3BlbnNzbC0xLjAuMmEtaG9iYmxlZC50YXIueHoKKzE3ODc5MmU2MDI3 NDk3NGVjNDdhZWRjNmRjNWViYTdhICBvcGVuc3NsLTEuMC4yYy1ob2JibGVkLnRhci54ego=