From: Ashish Agarwal Date: May 18 2012 6:33am Subject: bzr push into mysql-trunk branch (ashish.y.agarwal:3888 to 3889) List-Archive: http://lists.mysql.com/commits/143844 Message-Id: <201205180633.q4I6XxiO009933@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4ODkgQXNoaXNoIEFnYXJ3YWwJMjAxMi0wNS0xOAogICAgICBXTDI3Mzk6IEF1ZGl0aW5nIFBh c3N3b3JkIFNlY3VyaXR5CiAgICAgICAgICAgICAgSW1wbGVtZW50aW5nIHJldmlldyBjb21tZW50 CgogICAgYWRkZWQ6CiAgICAgIHNxbC9zdHJpbmdfc2VydmljZS5jYwogICAgICBzcWwvc3RyaW5n X3NlcnZpY2UuaAogICAgbW9kaWZpZWQ6CiAgICAgIGluY2x1ZGUvbXlzcWwvcGx1Z2luX2F1ZGl0 LmgucHAKICAgICAgaW5jbHVkZS9teXNxbC9wbHVnaW5fYXV0aC5oLnBwCiAgICAgIGluY2x1ZGUv bXlzcWwvcGx1Z2luX2Z0cGFyc2VyLmgucHAKICAgICAgaW5jbHVkZS9teXNxbC9wbHVnaW5fdmFs aWRhdGVfcGFzc3dvcmQuaAogICAgICBpbmNsdWRlL215c3FsL3NlcnZpY2VfbXlzcWxfc3RyaW5n LmgKICAgICAgbXlzcWwtdGVzdC9pbmNsdWRlL2hhdmVfdmFsaWRhdGVfcGFzc3dvcmRfcGx1Z2lu LmluYwogICAgICBteXNxbC10ZXN0L2luY2x1ZGUvcGx1Z2luLmRlZnMKICAgICAgbXlzcWwtdGVz dC9yL3ZhbGlkYXRlX3Bhc3N3b3JkX3BsdWdpbi5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC90L3Zh bGlkYXRlX3Bhc3N3b3JkX3BsdWdpbi1tYXN0ZXIub3B0CiAgICAgIG15c3FsLXRlc3QvdC92YWxp ZGF0ZV9wYXNzd29yZF9wbHVnaW4udGVzdAogICAgICBwbHVnaW4vcGFzc3dvcmRfdmFsaWRhdGlv bi92YWxpZGF0ZV9wYXNzd29yZC5jYwogICAgICBzcWwvQ01ha2VMaXN0cy50eHQKICAgICAgc3Fs L2l0ZW1fc3RyZnVuYy5jYwogICAgICBzcWwvc2hhcmUvZXJybXNnLXV0ZjgudHh0CiAgICAgIHNx bC9zcWxfYWNsLmNjCiAgICAgIHNxbC9zcWxfYWNsLmgKICAgICAgc3FsL3NxbF9wbHVnaW5fc2Vy dmljZXMuaAogICAgICBzcWwvc3FsX3lhY2MueXkKIDM4ODggQXNoaXNoIEFnYXJ3YWwJMjAxMi0w NS0xNAogICAgICBXTDI3Mzk6IEF1ZGl0aW5nIFBhc3N3b3JkIFNlY3VyaXR5CiAgICAgICAgICAg ICAgSW1wbGVtZW50aW5nIHJldmlldyBjb21tZW50cy4KCiAgICByZW1vdmVkOgogICAgICBpbmNs dWRlL215c3FsL3NlcnZpY2VfcGFzc3dvcmRfc3RyaW5nLmgKICAgICAgbGlic2VydmljZXMvcGFz c3dvcmRfc3RyaW5nX3NlcnZpY2UuYwogICAgYWRkZWQ6CiAgICAgIGluY2x1ZGUvbXlzcWwvc2Vy dmljZV9teXNxbF9zdHJpbmcuaAogICAgICBsaWJzZXJ2aWNlcy9teXNxbF9zdHJpbmdfc2Vydmlj ZS5jCiAgICBtb2RpZmllZDoKICAgICAgaW5jbHVkZS9teXNxbC9wbHVnaW5fYXVkaXQuaC5wcAog ICAgICBpbmNsdWRlL215c3FsL3BsdWdpbl9hdXRoLmgucHAKICAgICAgaW5jbHVkZS9teXNxbC9w bHVnaW5fZnRwYXJzZXIuaC5wcAogICAgICBpbmNsdWRlL215c3FsL3BsdWdpbl92YWxpZGF0ZV9w YXNzd29yZC5oCiAgICAgIGluY2x1ZGUvbXlzcWwvc2VydmljZXMuaAogICAgICBpbmNsdWRlL3Nl cnZpY2VfdmVyc2lvbnMuaAogICAgICBsaWJzZXJ2aWNlcy9DTWFrZUxpc3RzLnR4dAogICAgICBt eXNxbC10ZXN0L2luY2x1ZGUvaGF2ZV92YWxpZGF0ZV9wYXNzd29yZF9wbHVnaW4uaW5jCiAgICAg IG15c3FsLXRlc3QvaW5jbHVkZS9wbHVnaW4uZGVmcwogICAgICBteXNxbC10ZXN0L3IvdmFsaWRh dGVfcGFzc3dvcmRfcGx1Z2luLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3QvdmFsaWRhdGVfcGFz c3dvcmRfcGx1Z2luLW1hc3Rlci5vcHQKICAgICAgbXlzcWwtdGVzdC90L3ZhbGlkYXRlX3Bhc3N3 b3JkX3BsdWdpbi50ZXN0CiAgICAgIHBsdWdpbi9wYXNzd29yZF92YWxpZGF0aW9uL0NNYWtlTGlz dHMudHh0CiAgICAgIHBsdWdpbi9wYXNzd29yZF92YWxpZGF0aW9uL3ZhbGlkYXRlX3Bhc3N3b3Jk LmNjCiAgICAgIHNxbC9pdGVtX2Z1bmMuY2MKICAgICAgc3FsL2l0ZW1fc3RyZnVuYy5jYwogICAg ICBzcWwvc2hhcmUvZXJybXNnLXV0ZjgudHh0CiAgICAgIHNxbC9zcWxfYWNsLmNjCiAgICAgIHNx bC9zcWxfcGx1Z2luLmgKICAgICAgc3FsL3NxbF9wbHVnaW5fc2VydmljZXMuaAo9PT0gbW9kaWZp ZWQgZmlsZSAnaW5jbHVkZS9teXNxbC9wbHVnaW5fYXVkaXQuaC5wcCcKLS0tIGEvaW5jbHVkZS9t eXNxbC9wbHVnaW5fYXVkaXQuaC5wcAkyMDEyLTA1LTE0IDExOjE4OjEzICswMDAwCisrKyBiL2lu Y2x1ZGUvbXlzcWwvcGx1Z2luX2F1ZGl0LmgucHAJMjAxMi0wNS0xOCAwNjozMToyNiArMDAwMApA QCAtNzQsMjUgKzc0LDM0IEBAIGV4dGVybiBzdHJ1Y3QgbXlfcGx1Z2luX2xvZ19zZXJ2aWNlCiBp bnQgbXlfcGx1Z2luX2xvZ19tZXNzYWdlKE1ZU1FMX1BMVUdJTiAqcGx1Z2luLCBlbnVtIHBsdWdp bl9sb2dfbGV2ZWwgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KmZvcm1hdCwgLi4uKTsKICNpbmNsdWRlIDxteXNxbC9zZXJ2aWNlX215c3FsX3N0cmluZy5oPgot dHlwZWRlZiB2b2lkICpteXNxbF9zdHJpbmdfcHRyOwordHlwZWRlZiB2b2lkICpteXNxbF9zdHJp bmdfaXRlcmF0b3JfaGFuZGxlOwordHlwZWRlZiB2b2lkICpteXNxbF9zdHJpbmdfaGFuZGxlOwog ZXh0ZXJuIHN0cnVjdCBteXNxbF9zdHJpbmdfc2VydmljZV9zdCB7Ci0gIGNvbnN0IGNoYXIgKigq bXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9iZWdfdHlwZSkobXlzcWxfc3RyaW5nX3B0cik7Ci0gIGNv bnN0IGNoYXIgKigqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9lbmRfdHlwZSkobXlzcWxfc3RyaW5n X3B0cik7Ci0gIGNvbnN0IGNoYXIgKigqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9jYXNlZG5fdHlw ZSkobXlzcWxfc3RyaW5nX3B0cik7Ci0gIGludCAoKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY3R5 cGVfdHlwZSkKLSAgICAgIChteXNxbF9zdHJpbmdfcHRyLCBpbnQgKiwgY29uc3QgY2hhciopOwot ICBpbnQgKCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzdXBwZXJfdHlwZSkoaW50KTsKLSAgaW50 ICgqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2xvd2VyX3R5cGUpKGludCk7Ci0gIGludCAoKm15 c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNkaWdpdF90eXBlKShpbnQpOworICBpbnQgKCpteXNxbF9z dHJpbmdfY29udmVydF90b19jaGFyX3B0cl90eXBlKQorICAgICAgIChteXNxbF9zdHJpbmdfaGFu ZGxlLCBjb25zdCBjaGFyICosIGNoYXIgKiwgaW50ICopOworICBteXNxbF9zdHJpbmdfaXRlcmF0 b3JfaGFuZGxlICgqbXlzcWxfc3RyaW5nX2dldF9pdGVyYXRvcl90eXBlKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobXlzcWxfc3RyaW5nX2hhbmRsZSk7CisgIGludCAoKm15c3Fs X3N0cmluZ19pdGVyYXRvcl9uZXh0X3R5cGUpKG15c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5kbGUp OworICBpbnQgKCpteXNxbF9zdHJpbmdfaXRlcmF0b3JfaXN1cHBlcl90eXBlKShteXNxbF9zdHJp bmdfaXRlcmF0b3JfaGFuZGxlKTsKKyAgaW50ICgqbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lzbG93 ZXJfdHlwZSkobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSk7CisgIGludCAoKm15c3FsX3N0 cmluZ19pdGVyYXRvcl9pc2RpZ2l0X3R5cGUpKG15c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5kbGUp OworICBteXNxbF9zdHJpbmdfaGFuZGxlICgqbXlzcWxfc3RyaW5nX3RvX2xvd2VyY2FzZV90eXBl KShteXNxbF9zdHJpbmdfaGFuZGxlKTsKKyAgdm9pZCAoKm15c3FsX3N0cmluZ19mcmVlX3R5cGUp KG15c3FsX3N0cmluZ19oYW5kbGUpOworICB2b2lkICgqbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2Zy ZWVfdHlwZSkobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSk7CiB9ICpteXNxbF9zdHJpbmdf c2VydmljZTsKLWNvbnN0IGNoYXIgKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfYmVnKG15c3FsX3N0 cmluZ19wdHIgc3RyaW5nX3B0cik7Ci1jb25zdCBjaGFyICpteXNxbF9zdHJpbmdfY2hhcmFjdGVy X2VuZChteXNxbF9zdHJpbmdfcHRyIHN0cmluZ19wdHIpOwotY29uc3QgY2hhciAqbXlzcWxfc3Ry aW5nX2NoYXJhY3Rlcl9jYXNlZG4obXlzcWxfc3RyaW5nX3B0ciBzdHJpbmdfcHRyKTsKLWludCBt eXNxbF9zdHJpbmdfY2hhcmFjdGVyX2N0eXBlKG15c3FsX3N0cmluZ19wdHIgc3RyaW5nX3B0ciwg aW50ICpjaGFyX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICogY3VycmVudF9wdHIpOwotaW50IG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXN1cHBlcihp bnQgY2hhcl90eXBlKTsKLWludCBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzbG93ZXIoaW50IGNo YXJfdHlwZSk7Ci1pbnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2RpZ2l0KGludCBjaGFyX3R5 cGUpOworaW50IG15c3FsX3N0cmluZ19jb252ZXJ0X3RvX2NoYXJfcHRyKG15c3FsX3N0cmluZ19o YW5kbGUgc3RyaW5nX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpjaGFyc2V0X25hbWUsIGNoYXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmVycm9yKTsKK215c3FsX3N0cmluZ19pdGVyYXRv cl9oYW5kbGUgbXlzcWxfc3RyaW5nX2dldF9pdGVyYXRvcihteXNxbF9zdHJpbmdfaGFuZGxlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry aW5nX2hhbmRsZSk7CitpbnQgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX25leHQobXlzcWxfc3RyaW5n X2l0ZXJhdG9yX2hhbmRsZSBpdGVyYXRvcl9oYW5kbGUpOworaW50IG15c3FsX3N0cmluZ19pdGVy YXRvcl9pc3VwcGVyKG15c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5kbGUgaXRlcmF0b3JfaGFuZGxl KTsKK2ludCBteXNxbF9zdHJpbmdfaXRlcmF0b3JfaXNsb3dlcihteXNxbF9zdHJpbmdfaXRlcmF0 b3JfaGFuZGxlIGl0ZXJhdG9yX2hhbmRsZSk7CitpbnQgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lz ZGlnaXQobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSBpdGVyYXRvcl9oYW5kbGUpOworbXlz cWxfc3RyaW5nX2hhbmRsZSBteXNxbF9zdHJpbmdfdG9fbG93ZXJjYXNlKG15c3FsX3N0cmluZ19o YW5kbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJp bmdfaGFuZGxlKTsKK3ZvaWQgbXlzcWxfc3RyaW5nX2ZyZWUobXlzcWxfc3RyaW5nX2hhbmRsZSk7 Cit2b2lkIG15c3FsX3N0cmluZ19pdGVyYXRvcl9mcmVlKG15c3FsX3N0cmluZ19pdGVyYXRvcl9o YW5kbGUpOwogc3RydWN0IHN0X215c3FsX3hpZCB7CiAgIGxvbmcgZm9ybWF0SUQ7CiAgIGxvbmcg Z3RyaWRfbGVuZ3RoOwoKPT09IG1vZGlmaWVkIGZpbGUgJ2luY2x1ZGUvbXlzcWwvcGx1Z2luX2F1 dGguaC5wcCcKLS0tIGEvaW5jbHVkZS9teXNxbC9wbHVnaW5fYXV0aC5oLnBwCTIwMTItMDUtMTQg MTE6MTg6MTMgKzAwMDAKKysrIGIvaW5jbHVkZS9teXNxbC9wbHVnaW5fYXV0aC5oLnBwCTIwMTIt MDUtMTggMDY6MzE6MjYgKzAwMDAKQEAgLTc0LDI1ICs3NCwzNCBAQCBleHRlcm4gc3RydWN0IG15 X3BsdWdpbl9sb2dfc2VydmljZQogaW50IG15X3BsdWdpbl9sb2dfbWVzc2FnZShNWVNRTF9QTFVH SU4gKnBsdWdpbiwgZW51bSBwbHVnaW5fbG9nX2xldmVsIGxldmVsLAogICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CiAjaW5jbHVkZSA8bXlzcWwvc2Vy dmljZV9teXNxbF9zdHJpbmcuaD4KLXR5cGVkZWYgdm9pZCAqbXlzcWxfc3RyaW5nX3B0cjsKK3R5 cGVkZWYgdm9pZCAqbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZTsKK3R5cGVkZWYgdm9pZCAq bXlzcWxfc3RyaW5nX2hhbmRsZTsKIGV4dGVybiBzdHJ1Y3QgbXlzcWxfc3RyaW5nX3NlcnZpY2Vf c3QgewotICBjb25zdCBjaGFyICooKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfYmVnX3R5cGUpKG15 c3FsX3N0cmluZ19wdHIpOwotICBjb25zdCBjaGFyICooKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJf ZW5kX3R5cGUpKG15c3FsX3N0cmluZ19wdHIpOwotICBjb25zdCBjaGFyICooKm15c3FsX3N0cmlu Z19jaGFyYWN0ZXJfY2FzZWRuX3R5cGUpKG15c3FsX3N0cmluZ19wdHIpOwotICBpbnQgKCpteXNx bF9zdHJpbmdfY2hhcmFjdGVyX2N0eXBlX3R5cGUpCi0gICAgICAobXlzcWxfc3RyaW5nX3B0ciwg aW50ICosIGNvbnN0IGNoYXIqKTsKLSAgaW50ICgqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc3Vw cGVyX3R5cGUpKGludCk7Ci0gIGludCAoKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNsb3dlcl90 eXBlKShpbnQpOwotICBpbnQgKCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzZGlnaXRfdHlwZSko aW50KTsKKyAgaW50ICgqbXlzcWxfc3RyaW5nX2NvbnZlcnRfdG9fY2hhcl9wdHJfdHlwZSkKKyAg ICAgICAobXlzcWxfc3RyaW5nX2hhbmRsZSwgY29uc3QgY2hhciAqLCBjaGFyICosIGludCAqKTsK KyAgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSAoKm15c3FsX3N0cmluZ19nZXRfaXRlcmF0 b3JfdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG15c3FsX3N0cmluZ19o YW5kbGUpOworICBpbnQgKCpteXNxbF9zdHJpbmdfaXRlcmF0b3JfbmV4dF90eXBlKShteXNxbF9z dHJpbmdfaXRlcmF0b3JfaGFuZGxlKTsKKyAgaW50ICgqbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lz dXBwZXJfdHlwZSkobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSk7CisgIGludCAoKm15c3Fs X3N0cmluZ19pdGVyYXRvcl9pc2xvd2VyX3R5cGUpKG15c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5k bGUpOworICBpbnQgKCpteXNxbF9zdHJpbmdfaXRlcmF0b3JfaXNkaWdpdF90eXBlKShteXNxbF9z dHJpbmdfaXRlcmF0b3JfaGFuZGxlKTsKKyAgbXlzcWxfc3RyaW5nX2hhbmRsZSAoKm15c3FsX3N0 cmluZ190b19sb3dlcmNhc2VfdHlwZSkobXlzcWxfc3RyaW5nX2hhbmRsZSk7CisgIHZvaWQgKCpt eXNxbF9zdHJpbmdfZnJlZV90eXBlKShteXNxbF9zdHJpbmdfaGFuZGxlKTsKKyAgdm9pZCAoKm15 c3FsX3N0cmluZ19pdGVyYXRvcl9mcmVlX3R5cGUpKG15c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5k bGUpOwogfSAqbXlzcWxfc3RyaW5nX3NlcnZpY2U7Ci1jb25zdCBjaGFyICpteXNxbF9zdHJpbmdf Y2hhcmFjdGVyX2JlZyhteXNxbF9zdHJpbmdfcHRyIHN0cmluZ19wdHIpOwotY29uc3QgY2hhciAq bXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9lbmQobXlzcWxfc3RyaW5nX3B0ciBzdHJpbmdfcHRyKTsK LWNvbnN0IGNoYXIgKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY2FzZWRuKG15c3FsX3N0cmluZ19w dHIgc3RyaW5nX3B0cik7Ci1pbnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9jdHlwZShteXNxbF9z dHJpbmdfcHRyIHN0cmluZ19wdHIsIGludCAqY2hhcl90eXBlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGN1cnJlbnRfcHRyKTsKLWludCBteXNxbF9zdHJp bmdfY2hhcmFjdGVyX2lzdXBwZXIoaW50IGNoYXJfdHlwZSk7Ci1pbnQgbXlzcWxfc3RyaW5nX2No YXJhY3Rlcl9pc2xvd2VyKGludCBjaGFyX3R5cGUpOwotaW50IG15c3FsX3N0cmluZ19jaGFyYWN0 ZXJfaXNkaWdpdChpbnQgY2hhcl90eXBlKTsKK2ludCBteXNxbF9zdHJpbmdfY29udmVydF90b19j aGFyX3B0cihteXNxbF9zdHJpbmdfaGFuZGxlIHN0cmluZ19oYW5kbGUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hhcnNldF9uYW1lLCBjaGFyICpi dWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICplcnJvcik7 CitteXNxbF9zdHJpbmdfaXRlcmF0b3JfaGFuZGxlIG15c3FsX3N0cmluZ19nZXRfaXRlcmF0b3Io bXlzcWxfc3RyaW5nX2hhbmRsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cmluZ19oYW5kbGUpOworaW50IG15c3FsX3N0cmluZ19pdGVy YXRvcl9uZXh0KG15c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5kbGUgaXRlcmF0b3JfaGFuZGxlKTsK K2ludCBteXNxbF9zdHJpbmdfaXRlcmF0b3JfaXN1cHBlcihteXNxbF9zdHJpbmdfaXRlcmF0b3Jf aGFuZGxlIGl0ZXJhdG9yX2hhbmRsZSk7CitpbnQgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lzbG93 ZXIobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSBpdGVyYXRvcl9oYW5kbGUpOworaW50IG15 c3FsX3N0cmluZ19pdGVyYXRvcl9pc2RpZ2l0KG15c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5kbGUg aXRlcmF0b3JfaGFuZGxlKTsKK215c3FsX3N0cmluZ19oYW5kbGUgbXlzcWxfc3RyaW5nX3RvX2xv d2VyY2FzZShteXNxbF9zdHJpbmdfaGFuZGxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RyaW5nX2hhbmRsZSk7Cit2b2lkIG15c3FsX3N0cmluZ19mcmVl KG15c3FsX3N0cmluZ19oYW5kbGUpOwordm9pZCBteXNxbF9zdHJpbmdfaXRlcmF0b3JfZnJlZSht eXNxbF9zdHJpbmdfaXRlcmF0b3JfaGFuZGxlKTsKIHN0cnVjdCBzdF9teXNxbF94aWQgewogICBs b25nIGZvcm1hdElEOwogICBsb25nIGd0cmlkX2xlbmd0aDsKCj09PSBtb2RpZmllZCBmaWxlICdp bmNsdWRlL215c3FsL3BsdWdpbl9mdHBhcnNlci5oLnBwJwotLS0gYS9pbmNsdWRlL215c3FsL3Bs dWdpbl9mdHBhcnNlci5oLnBwCTIwMTItMDUtMTQgMTE6MTg6MTMgKzAwMDAKKysrIGIvaW5jbHVk ZS9teXNxbC9wbHVnaW5fZnRwYXJzZXIuaC5wcAkyMDEyLTA1LTE4IDA2OjMxOjI2ICswMDAwCkBA IC03NCwyNSArNzQsMzQgQEAgZXh0ZXJuIHN0cnVjdCBteV9wbHVnaW5fbG9nX3NlcnZpY2UKIGlu dCBteV9wbHVnaW5fbG9nX21lc3NhZ2UoTVlTUUxfUExVR0lOICpwbHVnaW4sIGVudW0gcGx1Z2lu X2xvZ19sZXZlbCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq Zm9ybWF0LCAuLi4pOwogI2luY2x1ZGUgPG15c3FsL3NlcnZpY2VfbXlzcWxfc3RyaW5nLmg+Ci10 eXBlZGVmIHZvaWQgKm15c3FsX3N0cmluZ19wdHI7Cit0eXBlZGVmIHZvaWQgKm15c3FsX3N0cmlu Z19pdGVyYXRvcl9oYW5kbGU7Cit0eXBlZGVmIHZvaWQgKm15c3FsX3N0cmluZ19oYW5kbGU7CiBl eHRlcm4gc3RydWN0IG15c3FsX3N0cmluZ19zZXJ2aWNlX3N0IHsKLSAgY29uc3QgY2hhciAqKCpt eXNxbF9zdHJpbmdfY2hhcmFjdGVyX2JlZ190eXBlKShteXNxbF9zdHJpbmdfcHRyKTsKLSAgY29u c3QgY2hhciAqKCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2VuZF90eXBlKShteXNxbF9zdHJpbmdf cHRyKTsKLSAgY29uc3QgY2hhciAqKCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2Nhc2Vkbl90eXBl KShteXNxbF9zdHJpbmdfcHRyKTsKLSAgaW50ICgqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9jdHlw ZV90eXBlKQotICAgICAgKG15c3FsX3N0cmluZ19wdHIsIGludCAqLCBjb25zdCBjaGFyKik7Ci0g IGludCAoKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXN1cHBlcl90eXBlKShpbnQpOwotICBpbnQg KCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzbG93ZXJfdHlwZSkoaW50KTsKLSAgaW50ICgqbXlz cWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2RpZ2l0X3R5cGUpKGludCk7CisgIGludCAoKm15c3FsX3N0 cmluZ19jb252ZXJ0X3RvX2NoYXJfcHRyX3R5cGUpCisgICAgICAgKG15c3FsX3N0cmluZ19oYW5k bGUsIGNvbnN0IGNoYXIgKiwgY2hhciAqLCBpbnQgKik7CisgIG15c3FsX3N0cmluZ19pdGVyYXRv cl9oYW5kbGUgKCpteXNxbF9zdHJpbmdfZ2V0X2l0ZXJhdG9yX3R5cGUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChteXNxbF9zdHJpbmdfaGFuZGxlKTsKKyAgaW50ICgqbXlzcWxf c3RyaW5nX2l0ZXJhdG9yX25leHRfdHlwZSkobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSk7 CisgIGludCAoKm15c3FsX3N0cmluZ19pdGVyYXRvcl9pc3VwcGVyX3R5cGUpKG15c3FsX3N0cmlu Z19pdGVyYXRvcl9oYW5kbGUpOworICBpbnQgKCpteXNxbF9zdHJpbmdfaXRlcmF0b3JfaXNsb3dl cl90eXBlKShteXNxbF9zdHJpbmdfaXRlcmF0b3JfaGFuZGxlKTsKKyAgaW50ICgqbXlzcWxfc3Ry aW5nX2l0ZXJhdG9yX2lzZGlnaXRfdHlwZSkobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSk7 CisgIG15c3FsX3N0cmluZ19oYW5kbGUgKCpteXNxbF9zdHJpbmdfdG9fbG93ZXJjYXNlX3R5cGUp KG15c3FsX3N0cmluZ19oYW5kbGUpOworICB2b2lkICgqbXlzcWxfc3RyaW5nX2ZyZWVfdHlwZSko bXlzcWxfc3RyaW5nX2hhbmRsZSk7CisgIHZvaWQgKCpteXNxbF9zdHJpbmdfaXRlcmF0b3JfZnJl ZV90eXBlKShteXNxbF9zdHJpbmdfaXRlcmF0b3JfaGFuZGxlKTsKIH0gKm15c3FsX3N0cmluZ19z ZXJ2aWNlOwotY29uc3QgY2hhciAqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9iZWcobXlzcWxfc3Ry aW5nX3B0ciBzdHJpbmdfcHRyKTsKLWNvbnN0IGNoYXIgKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJf ZW5kKG15c3FsX3N0cmluZ19wdHIgc3RyaW5nX3B0cik7Ci1jb25zdCBjaGFyICpteXNxbF9zdHJp bmdfY2hhcmFjdGVyX2Nhc2VkbihteXNxbF9zdHJpbmdfcHRyIHN0cmluZ19wdHIpOwotaW50IG15 c3FsX3N0cmluZ19jaGFyYWN0ZXJfY3R5cGUobXlzcWxfc3RyaW5nX3B0ciBzdHJpbmdfcHRyLCBp bnQgKmNoYXJfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKiBjdXJyZW50X3B0cik7Ci1pbnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc3VwcGVyKGlu dCBjaGFyX3R5cGUpOwotaW50IG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNsb3dlcihpbnQgY2hh cl90eXBlKTsKLWludCBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzZGlnaXQoaW50IGNoYXJfdHlw ZSk7CitpbnQgbXlzcWxfc3RyaW5nX2NvbnZlcnRfdG9fY2hhcl9wdHIobXlzcWxfc3RyaW5nX2hh bmRsZSBzdHJpbmdfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKmNoYXJzZXRfbmFtZSwgY2hhciAqYnVmZmVyLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCAqZXJyb3IpOworbXlzcWxfc3RyaW5nX2l0ZXJhdG9y X2hhbmRsZSBteXNxbF9zdHJpbmdfZ2V0X2l0ZXJhdG9yKG15c3FsX3N0cmluZ19oYW5kbGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJp bmdfaGFuZGxlKTsKK2ludCBteXNxbF9zdHJpbmdfaXRlcmF0b3JfbmV4dChteXNxbF9zdHJpbmdf aXRlcmF0b3JfaGFuZGxlIGl0ZXJhdG9yX2hhbmRsZSk7CitpbnQgbXlzcWxfc3RyaW5nX2l0ZXJh dG9yX2lzdXBwZXIobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSBpdGVyYXRvcl9oYW5kbGUp OworaW50IG15c3FsX3N0cmluZ19pdGVyYXRvcl9pc2xvd2VyKG15c3FsX3N0cmluZ19pdGVyYXRv cl9oYW5kbGUgaXRlcmF0b3JfaGFuZGxlKTsKK2ludCBteXNxbF9zdHJpbmdfaXRlcmF0b3JfaXNk aWdpdChteXNxbF9zdHJpbmdfaXRlcmF0b3JfaGFuZGxlIGl0ZXJhdG9yX2hhbmRsZSk7CitteXNx bF9zdHJpbmdfaGFuZGxlIG15c3FsX3N0cmluZ190b19sb3dlcmNhc2UobXlzcWxfc3RyaW5nX2hh bmRsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlu Z19oYW5kbGUpOwordm9pZCBteXNxbF9zdHJpbmdfZnJlZShteXNxbF9zdHJpbmdfaGFuZGxlKTsK K3ZvaWQgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2ZyZWUobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hh bmRsZSk7CiBzdHJ1Y3Qgc3RfbXlzcWxfeGlkIHsKICAgbG9uZyBmb3JtYXRJRDsKICAgbG9uZyBn dHJpZF9sZW5ndGg7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnaW5jbHVkZS9teXNxbC9wbHVnaW5fdmFs aWRhdGVfcGFzc3dvcmQuaCcKLS0tIGEvaW5jbHVkZS9teXNxbC9wbHVnaW5fdmFsaWRhdGVfcGFz c3dvcmQuaAkyMDEyLTA1LTE0IDExOjE4OjEzICswMDAwCisrKyBiL2luY2x1ZGUvbXlzcWwvcGx1 Z2luX3ZhbGlkYXRlX3Bhc3N3b3JkLmgJMjAxMi0wNS0xOCAwNjozMToyNiArMDAwMApAQCAtMjEs NyArMjEsNyBAQAogI2luY2x1ZGUgPG15c3FsL3BsdWdpbi5oPgogI2RlZmluZSBNWVNRTF9WQUxJ REFURV9QQVNTV09SRF9JTlRFUkZBQ0VfVkVSU0lPTiAweDAxMDAKIAotdHlwZWRlZiB2b2lkKiBz dHJpbmdfaGFuZGxlOwordHlwZWRlZiB2b2lkICpteXNxbF9zdHJpbmdfaGFuZGxlOwogCiAvKiAg CiAgIFRoZSBkZXNjcmlwdG9yIHN0cnVjdHVyZSBmb3IgdGhlIHBsdWdpbiwgdGhhdCBpcyByZWZl cnJlZCBmcm9tCkBAIC0zNiwxMSArMzYsMTEgQEAgc3RydWN0IHN0X215c3FsX3ZhbGlkYXRlX3Bh c3N3b3JkCiAgICAgcG9saWN5IChhcyBjaG9vc2VuIGJ5IHBsdWdpbiB2YXJpYWJsZSkgYW5kIEZB TFNFIGZvciBhbGwgb3RoZXIKICAgICBwYXNzd29yZAogICAqLwotICBpbnQgKCp2YWxpZGF0ZV9w YXNzd29yZCkoc3RyaW5nX2hhbmRsZSBwYXNzd29yZCwgc2l6ZV90IHBhc3N3b3JkX2xlbmd0aCk7 CisgIGludCAoKnZhbGlkYXRlX3Bhc3N3b3JkKShteXNxbF9zdHJpbmdfaGFuZGxlIHBhc3N3b3Jk KTsKICAgLyogIAogICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcGFzc3dvcmQgc3RyZW5n dGggKDAtMTAwKSBkZXBlbmRpbmcKICAgICB1cG9uIHRoZSBwb2xpY2llcwogICAqLwotICBpbnQg KCpnZXRfcGFzc3dvcmRfc3RyZW5ndGgpKHN0cmluZ19oYW5kbGUgcGFzc3dvcmQsIHNpemVfdCBw YXNzd29yZF9sZW5ndGgpOworICBpbnQgKCpnZXRfcGFzc3dvcmRfc3RyZW5ndGgpKG15c3FsX3N0 cmluZ19oYW5kbGUgcGFzc3dvcmQpOwogfTsKICNlbmRpZgoKPT09IG1vZGlmaWVkIGZpbGUgJ2lu Y2x1ZGUvbXlzcWwvc2VydmljZV9teXNxbF9zdHJpbmcuaCcKLS0tIGEvaW5jbHVkZS9teXNxbC9z ZXJ2aWNlX215c3FsX3N0cmluZy5oCTIwMTItMDUtMTQgMTE6MTg6MTMgKzAwMDAKKysrIGIvaW5j bHVkZS9teXNxbC9zZXJ2aWNlX215c3FsX3N0cmluZy5oCTIwMTItMDUtMTggMDY6MzE6MjYgKzAw MDAKQEAgLTI2LDc2ICsyNiwxMDMgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLXR5cGVkZWYg dm9pZCAqbXlzcWxfc3RyaW5nX3B0cjsKK3R5cGVkZWYgdm9pZCAqbXlzcWxfc3RyaW5nX2l0ZXJh dG9yX2hhbmRsZTsKK3R5cGVkZWYgdm9pZCAqbXlzcWxfc3RyaW5nX2hhbmRsZTsKIAogZXh0ZXJu IHN0cnVjdCBteXNxbF9zdHJpbmdfc2VydmljZV9zdCB7Ci0gIGNvbnN0IGNoYXIgKigqbXlzcWxf c3RyaW5nX2NoYXJhY3Rlcl9iZWdfdHlwZSkobXlzcWxfc3RyaW5nX3B0cik7Ci0gIGNvbnN0IGNo YXIgKigqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9lbmRfdHlwZSkobXlzcWxfc3RyaW5nX3B0cik7 Ci0gIGNvbnN0IGNoYXIgKigqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9jYXNlZG5fdHlwZSkobXlz cWxfc3RyaW5nX3B0cik7Ci0gIGludCAoKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY3R5cGVfdHlw ZSkKLSAgICAgIChteXNxbF9zdHJpbmdfcHRyLCBpbnQgKiwgY29uc3QgY2hhciopOwotICBpbnQg KCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzdXBwZXJfdHlwZSkoaW50KTsKLSAgaW50ICgqbXlz cWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2xvd2VyX3R5cGUpKGludCk7Ci0gIGludCAoKm15c3FsX3N0 cmluZ19jaGFyYWN0ZXJfaXNkaWdpdF90eXBlKShpbnQpOworICBpbnQgKCpteXNxbF9zdHJpbmdf Y29udmVydF90b19jaGFyX3B0cl90eXBlKQorICAgICAgIChteXNxbF9zdHJpbmdfaGFuZGxlLCBj b25zdCBjaGFyICosIGNoYXIgKiwgaW50ICopOworICBteXNxbF9zdHJpbmdfaXRlcmF0b3JfaGFu ZGxlICgqbXlzcWxfc3RyaW5nX2dldF9pdGVyYXRvcl90eXBlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobXlzcWxfc3RyaW5nX2hhbmRsZSk7CisgIGludCAoKm15c3FsX3N0cmlu Z19pdGVyYXRvcl9uZXh0X3R5cGUpKG15c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5kbGUpOworICBp bnQgKCpteXNxbF9zdHJpbmdfaXRlcmF0b3JfaXN1cHBlcl90eXBlKShteXNxbF9zdHJpbmdfaXRl cmF0b3JfaGFuZGxlKTsKKyAgaW50ICgqbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lzbG93ZXJfdHlw ZSkobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSk7CisgIGludCAoKm15c3FsX3N0cmluZ19p dGVyYXRvcl9pc2RpZ2l0X3R5cGUpKG15c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5kbGUpOworICBt eXNxbF9zdHJpbmdfaGFuZGxlICgqbXlzcWxfc3RyaW5nX3RvX2xvd2VyY2FzZV90eXBlKShteXNx bF9zdHJpbmdfaGFuZGxlKTsKKyAgdm9pZCAoKm15c3FsX3N0cmluZ19mcmVlX3R5cGUpKG15c3Fs X3N0cmluZ19oYW5kbGUpOworICB2b2lkICgqbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2ZyZWVfdHlw ZSkobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSk7CiB9ICpteXNxbF9zdHJpbmdfc2Vydmlj ZTsKIAogI2lmZGVmIE1ZU1FMX0RZTkFNSUNfUExVR0lOCiAKLSNkZWZpbmUgbXlzcWxfc3RyaW5n X2NoYXJhY3Rlcl9iZWcoc3RyaW5nX3B0cikgXAotICAgICAgICBteXNxbF9zdHJpbmdfc2Vydmlj ZS0+bXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9iZWdfdHlwZShzdHJpbmdfcHRyKQotCi0jZGVmaW5l IG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfZW5kKHN0cmluZ19wdHIpIFwKLSAgICAgICAgbXlzcWxf c3RyaW5nX3NlcnZpY2UtPm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfZW5kX3R5cGUoc3RyaW5nX3B0 cikKLQotI2RlZmluZSBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2Nhc2VkbihzdHJpbmdfcHRyKSBc Ci0gICAgICAgIG15c3FsX3N0cmluZ19zZXJ2aWNlLT5teXNxbF9zdHJpbmdfY2hhcmFjdGVyX2Nh c2Vkbl90eXBlKHN0cmluZ19wdHIpCi0KLSNkZWZpbmUgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9j dHlwZShzdHJpbmdfcHRyLCBjaGFyX3R5cGUsIGN1cnJlbnRfcHRyKSBcCi0gICAgICAgIG15c3Fs X3N0cmluZ19zZXJ2aWNlLT5teXNxbF9zdHJpbmdfY2hhcmFjdGVyX2N0eXBlX3R5cGUgXAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZ19wdHIsIGNoYXJfdHlwZSwgY3VycmVu dF9wdHIpCi0KLSNkZWZpbmUgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc3VwcGVyKGNoYXJfdHlw ZSkgXAotICAgICAgICBteXNxbF9zdHJpbmdfc2VydmljZS0+bXlzcWxfc3RyaW5nX2NoYXJhY3Rl cl9pc3VwcGVyX3R5cGUoY2hhcl90eXBlKQotCi0jZGVmaW5lIG15c3FsX3N0cmluZ19jaGFyYWN0 ZXJfaXNsb3dlcihjaGFyX3R5cGUpIFwKLSAgICAgICAgbXlzcWxfc3RyaW5nX3NlcnZpY2UtPm15 c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNsb3dlcl90eXBlKGNoYXJfdHlwZSkKLQotI2RlZmluZSBt eXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzZGlnaXQoY2hhcl90eXBlKSBcCi0gICAgICAgIG15c3Fs X3N0cmluZ19zZXJ2aWNlLT5teXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzZGlnaXRfdHlwZShjaGFy X3R5cGUpCisjZGVmaW5lIG15c3FsX3N0cmluZ19jb252ZXJ0X3RvX2NoYXJfcHRyKHN0cmluZ19o YW5kbGUsIGNoYXJzZXRfbmFtZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBidWZmZXIsIGVycm9yKSBcCisgICAgICAgIG15c3FsX3N0cmluZ19zZXJ2aWNlLT5t eXNxbF9zdHJpbmdfY29udmVydF90b19jaGFyX3B0cl90eXBlIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzdHJpbmdfaGFuZGxlLCBjaGFyc2V0X25hbWUsIGJ1ZmZlciwgZXJyb3Ip CisKKyNkZWZpbmUgbXlzcWxfc3RyaW5nX2dldF9pdGVyYXRvcihzdHJpbmdfaGFuZGxlKSBcCisg ICAgICAgIG15c3FsX3N0cmluZ19zZXJ2aWNlLT5teXNxbF9zdHJpbmdfZ2V0X2l0ZXJhdG9yX3R5 cGUoc3RyaW5nX2hhbmRsZSkKKworI2RlZmluZSBteXNxbF9zdHJpbmdfaXRlcmF0b3JfbmV4dChp dGVyYXRvcl9oYW5kbGUpIFwKKyAgICAgICAgbXlzcWxfc3RyaW5nX3NlcnZpY2UtPm15c3FsX3N0 cmluZ19pdGVyYXRvcl9uZXh0X3R5cGUoaXRlcmF0b3JfaGFuZGxlKQorCisjZGVmaW5lIG15c3Fs X3N0cmluZ19pdGVyYXRvcl9pc3VwcGVyKGl0ZXJhdG9yX2hhbmRsZSkgXAorICAgICAgICBteXNx bF9zdHJpbmdfc2VydmljZS0+bXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lzdXBwZXJfdHlwZSBcCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZXJhdG9yX2hhbmRsZSkKKwor I2RlZmluZSBteXNxbF9zdHJpbmdfaXRlcmF0b3JfaXNsb3dlcihpdGVyYXRvcl9oYW5kbGUpIFwK KyAgICAgICAgbXlzcWxfc3RyaW5nX3NlcnZpY2UtPm15c3FsX3N0cmluZ19pdGVyYXRvcl9pc2xv d2VyX3R5cGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVyYXRv cl9oYW5kbGUpCisKKyNkZWZpbmUgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lzZGlnaXQoaXRlcmF0 b3JfaGFuZGxlKSBcCisgICAgICAgIG15c3FsX3N0cmluZ19zZXJ2aWNlLT5teXNxbF9zdHJpbmdf aXRlcmF0b3JfaXNkaWdpdF90eXBlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoaXRlcmF0b3JfaGFuZGxlKQorCisjZGVmaW5lIG15c3FsX3N0cmluZ190b19sb3dlcmNh c2Uoc3RyaW5nX2hhbmRsZSkgXAorICAgICAgICBteXNxbF9zdHJpbmdfc2VydmljZS0+bXlzcWxf c3RyaW5nX3RvX2xvd2VyY2FzZV90eXBlKHN0cmluZ19oYW5kbGUpCisKKyNkZWZpbmUgbXlzcWxf c3RyaW5nX2ZyZWUobXlzcWxfc3RyaW5nX2hhbmRsZSkgXAorICAgICAgICBteXNxbF9zdHJpbmdf c2VydmljZS0+bXlzcWxfc3RyaW5nX2ZyZWVfdHlwZShteXNxbF9zdHJpbmdfaGFuZGxlKQorCisj ZGVmaW5lIG15c3FsX3N0cmluZ19pdGVyYXRvcl9mcmVlKG15c3FsX3N0cmluZ19pdGVyYXRvcl9o YW5kbGUpIFwKKyAgICAgICAgbXlzcWxfc3RyaW5nX3NlcnZpY2UtPm15c3FsX3N0cmluZ19pdGVy YXRvcl9mcmVlX3R5cGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChteXNx bF9zdHJpbmdfaXRlcmF0b3JfaGFuZGxlKQogI2Vsc2UKIAotLyogVGhpcyBzZXJ2aWNlIGZ1bmN0 aW9uIHJldHVybnMgdGhlIGJlZ2lubmluZyBvZiB0aGUgbXlzcWwgU3RyaW5nICovCi1jb25zdCBj aGFyICpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2JlZyhteXNxbF9zdHJpbmdfcHRyIHN0cmluZ19w dHIpOwotCi0vKiBUaGlzIHNlcnZpY2UgZnVuY3Rpb24gcmV0dXJucyB0aGUgZW5kIG9mIHRoZSBt eXNxbCBTdHJpbmcgKi8KLWNvbnN0IGNoYXIgKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfZW5kKG15 c3FsX3N0cmluZ19wdHIgc3RyaW5nX3B0cik7Ci0KLS8qIFRoaXMgc2VydmljZSBmdW5jdGlvbiBj b252ZXJ0cyBteXNxbCBTdHJpbmcgaW50byBsb3dlcmNhc2UgKi8KLWNvbnN0IGNoYXIgKm15c3Fs X3N0cmluZ19jaGFyYWN0ZXJfY2FzZWRuKG15c3FsX3N0cmluZ19wdHIgc3RyaW5nX3B0cik7Ci0K Ky8qIFRoaXMgc2VydmljZSBmdW5jdGlvbiBjb252ZXJ0IHN0cmluZyBpbnRvIGdpdmVuIGNoYXJh Y3RlciBzZXQgKi8KK2ludCBteXNxbF9zdHJpbmdfY29udmVydF90b19jaGFyX3B0cihteXNxbF9z dHJpbmdfaGFuZGxlIHN0cmluZ19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqY2hhcnNldF9uYW1lLCBjaGFyICpidWZmZXIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICplcnJvcik7CisKKy8qIFRoaXMgc2Vy dmljZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGl0ZXJhdG9yIGhhbmRs ZSAqLworbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSBteXNxbF9zdHJpbmdfZ2V0X2l0ZXJh dG9yKG15c3FsX3N0cmluZ19oYW5kbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfaGFuZGxlKTsKIC8qICAKLSAgVGhpcyBzZXJ2 aWNlIGZ1bmN0aW9uIHRha2VzIG15c3FsIHN0cmluZywgY3VycmVudCBzdHJpbmcgcG9zaXRpb24K LSAgY2FsY3VsYXRlIHRoZSBjdHlwZSBvZiB0aGUgY2hhcmFjdGVyIGJhc2VkIG9uIGNsaWVudCBj aGFyYWN0ZXIgc2V0Ci0gIHN0b3JlIGl0IGluIGNoYXJfdHlwZSBhbmQgcmV0dXJuIHRoZSBjaGFy YWN0ZXIgbGVuZ3RoCisgIFRoaXMgc2VydmljZSBmdW5jdGlvbiBnZXRzIHRoZSBuZXh0IGl0ZXJh dG9yIGhhbmRsZQorICByZXR1cm5zIDAgaWYgcmVhY2hlZCB0aGUgZW5kIGVsc2UgcmV0dXJuIDEK ICovCi1pbnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9jdHlwZShteXNxbF9zdHJpbmdfcHRyIHN0 cmluZ19wdHIsIGludCAqY2hhcl90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqY3VycmVudF9wdHIpOworaW50IG15c3FsX3N0cmluZ19pdGVyYXRvcl9u ZXh0KG15c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5kbGUgaXRlcmF0b3JfaGFuZGxlKTsKIAogLyog IAotICBUaGlzIHNlcnZpY2UgZnVuY3Rpb24gcmV0dXJuIDEgaWYgY2hhcmFjdGVyIGlzIGEgdXBw ZXJjYXNlCi0gIGNoYXJhY3RlciBlbHNlIHJldHVybiAwIGZvciBjbGllbnQgY2hhcmFjdGVyIHNl dC4KKyAgVGhpcyBzZXJ2aWNlIGZ1bmN0aW9uIHJldHVybiAxIGlmIGN1cnJlbnQgaXRlcmF0b3Ig aGFuZGxlIHBvaW50cyB0byBhCisgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgZWxzZSByZXR1cm4gMCBm b3IgY2xpZW50IGNoYXJhY3RlciBzZXQuCiAqLwotaW50IG15c3FsX3N0cmluZ19jaGFyYWN0ZXJf aXN1cHBlcihpbnQgY2hhcl90eXBlKTsKK2ludCBteXNxbF9zdHJpbmdfaXRlcmF0b3JfaXN1cHBl cihteXNxbF9zdHJpbmdfaXRlcmF0b3JfaGFuZGxlIGl0ZXJhdG9yX2hhbmRsZSk7CisKIC8qICAK LSAgVGhpcyBzZXJ2aWNlIGZ1bmN0aW9uIHJldHVybiAxIGlmIGNoYXJhY3RlciBpcyBhIGxvd2Vy Y2FzZQotICBjaGFyYWN0ZXIgZWxzZSByZXR1cm4gMCBmb3IgY2xpZW50IGNoYXJhY3RlciBzZXQu CisgIFRoaXMgc2VydmljZSBmdW5jdGlvbiByZXR1cm4gMSBpZiBjdXJyZW50IGl0ZXJhdG9yIGhh bmRsZSBwb2ludHMgdG8gYQorICBsb3dlcmNhc2UgY2hhcmFjdGVyIGVsc2UgcmV0dXJuIDAgZm9y IGNsaWVudCBjaGFyYWN0ZXIgc2V0LgogKi8KLWludCBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lz bG93ZXIoaW50IGNoYXJfdHlwZSk7CitpbnQgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lzbG93ZXIo bXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSBpdGVyYXRvcl9oYW5kbGUpOworCiAvKiAgCi0g IFRoaXMgc2VydmljZSBmdW5jdGlvbiByZXR1cm4gMSBpZiBjaGFyYWN0ZXIgaXMgYSBkaWdpdAor ICBUaGlzIHNlcnZpY2UgZnVuY3Rpb24gcmV0dXJuIDEgaWYgY3VycmVudCBpdGVyYXRvciBoYW5k bGUgcG9pbnRzIHRvIGEgZGlnaXQKICAgZWxzZSByZXR1cm4gMCBmb3IgY2xpZW50IGNoYXJhY3Rl ciBzZXRzLgogKi8KLWludCBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzZGlnaXQoaW50IGNoYXJf dHlwZSk7CitpbnQgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lzZGlnaXQobXlzcWxfc3RyaW5nX2l0 ZXJhdG9yX2hhbmRsZSBpdGVyYXRvcl9oYW5kbGUpOworCisvKiBjb252ZXJ0IHN0cmluZ19oYW5k bGUgaW50byBsb3dlcmNhc2UgKi8KK215c3FsX3N0cmluZ19oYW5kbGUgbXlzcWxfc3RyaW5nX3Rv X2xvd2VyY2FzZShteXNxbF9zdHJpbmdfaGFuZGxlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX2hhbmRsZSk7CisKKy8qIEl0IGRlYWxsb2NhdGVz IHRoZSBzdHJpbmcgY3JlYXRlZCBvbiBzZXJ2ZXIgc2lkZSBkdXJpbmcgcGx1Z2luIG9wZXJhdGlv bnMgKi8KK3ZvaWQgbXlzcWxfc3RyaW5nX2ZyZWUobXlzcWxfc3RyaW5nX2hhbmRsZSk7CisKKy8q ICAKKyAgSXQgZGVhbGxvY2F0ZXMgdGhlIHN0cmluZyBpdGVyYXRvciBjcmVhdGVkIG9uIHNlcnZl ciBzaWRlCisgIGR1cmluZyBwbHVnaW4gb3BlcmF0aW9ucworKi8KK3ZvaWQgbXlzcWxfc3RyaW5n X2l0ZXJhdG9yX2ZyZWUobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSk7CiAKICNlbmRpZgog I2lmZGVmIF9fY3BsdXNwbHVzCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9pbmNsdWRl L2hhdmVfdmFsaWRhdGVfcGFzc3dvcmRfcGx1Z2luLmluYycKLS0tIGEvbXlzcWwtdGVzdC9pbmNs dWRlL2hhdmVfdmFsaWRhdGVfcGFzc3dvcmRfcGx1Z2luLmluYwkyMDEyLTA1LTE0IDExOjE4OjEz ICswMDAwCisrKyBiL215c3FsLXRlc3QvaW5jbHVkZS9oYXZlX3ZhbGlkYXRlX3Bhc3N3b3JkX3Bs dWdpbi5pbmMJMjAxMi0wNS0xOCAwNjozMToyNiArMDAwMApAQCAtMSw1ICsxLDIwIEBACi1kaXNh YmxlX3F1ZXJ5X2xvZzsKLS0tcmVxdWlyZSByL3RydWUucmVxdWlyZQotc2VsZWN0IChQTFVHSU5f TElCUkFSWSBMSUtFICd2YWxpZGF0ZV9wYXNzd29yZCUnKSBhcyBgVFJVRWAgRlJPTSBJTkZPUk1B VElPTl9TQ0hFTUEuUExVR0lOUwotICBXSEVSRSBQTFVHSU5fTkFNRT0ndmFsaWRhdGVfcGFzc3dv cmQnOwotZW5hYmxlX3F1ZXJ5X2xvZzsKKyMKKyMgQ2hlY2sgaWYgc2VydmVyIGhhcyBzdXBwb3J0 IGZvciBsb2FkaW5nIHBsdWdpbnMKKyMKK2lmIChgU0VMRUNUIEBAaGF2ZV9keW5hbWljX2xvYWRp bmcgIT0gJ1lFUydgKSB7CisgIC0tc2tpcCB2YWxpZGF0ZSBwYXNzd29yZCByZXF1aXJlcyBkeW5h bWljIGxvYWRpbmcKK30KKworIworIyBDaGVjayBpZiB0aGUgdmFyaWFibGUgVkFMSURBVEVfUEFT U1dPUkQgaXMgc2V0CisjCitpZiAoISRWQUxJREFURV9QQVNTV09SRCkgeworICAtLXNraXAgdmFs aWRhdGUgcGFzc3dvcmQgcmVxdWlyZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFwkVkFMSURB VEVfUEFTU1dPUkQgdG8gYmUgc2V0IChub3JtYWxseSBkb25lIGJ5IG10cikKK30KKworIworIyBD aGVjayBpZiAtLXBsdWdpbi1kaXIgd2FzIHNldHVwIGZvciB2YWxpZGF0ZSBwYXNzd29yZAorIwor aWYgKGBTRUxFQ1QgQ09OQ0FUKCctLXBsdWdpbi1kaXI9JywgUkVQTEFDRShAQHBsdWdpbl9kaXIs ICdcXFxcJywgJy8nKSkgIT0gJyRWQUxJREFURV9QQVNTV09SRF9PUFQvJ2ApIHsKKyAgLS1za2lw IHZhbGlkYXRlIHBhc3N3b3JkIHJlcXVpcmVzIHRoYXQgLS1wbHVnaW4tZGlyIGlzIHNldCB0byB0 aGUgdmFsaWRhdGUgcGFzc3dvcmQgZGlyIChlaXRoZXIgdGhlIC5vcHQgZmlsZSBkb2VzIG5vdCBj b250YWluIFwkVkFMSURBVEVfUEFTU1dPUkRfT1BUIG9yIGFub3RoZXIgcGx1Z2luIGlzIGluIHVz ZSkKK30KCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L2luY2x1ZGUvcGx1Z2luLmRlZnMn Ci0tLSBhL215c3FsLXRlc3QvaW5jbHVkZS9wbHVnaW4uZGVmcwkyMDEyLTA1LTE0IDExOjE4OjEz ICswMDAwCisrKyBiL215c3FsLXRlc3QvaW5jbHVkZS9wbHVnaW4uZGVmcwkyMDEyLTA1LTE4IDA2 OjMxOjI2ICswMDAwCkBAIC00NCw0ICs0NCw0IEBAIGFkdF9udWxsICAgICAgICAgICBwbHVnaW4v YXVkaXRfbnVsbCAgQVUKIGxpYmRhZW1vbl9leGFtcGxlICBwbHVnaW4vZGFlbW9uX2V4YW1wbGUg REFFTU9ORVhBTVBMRQogbGlibWVtY2FjaGVkICAgICAgIHBsdWdpbi9pbm5vZGJfbWVtY2FjaGVk L2RhZW1vbl9tZW1jYWNoZWQgREFFTU9OX01FTUNBQ0hFRCBkYWVtb25fbWVtY2FjaGVkCiBpbm5v ZGJfZW5naW5lICAgICAgcGx1Z2luL2lubm9kYl9tZW1jYWNoZWQvaW5ub2RiX21lbWNhY2hlIElO Tk9EQl9FTkdJTkUKLXZhbGlkYXRlX3Bhc3N3b3JkICBwbHVnaW4vcGFzc3dvcmRfdmFsaWRhdGlv biBWQUxJREFURV9QQVNTV09SRCB2YWxpZGF0ZV9wYXNzd29yZAordmFsaWRhdGVfcGFzc3dvcmQg IHBsdWdpbi9wYXNzd29yZF92YWxpZGF0aW9uIFZBTElEQVRFX1BBU1NXT1JECgo9PT0gbW9kaWZp ZWQgZmlsZSAnbXlzcWwtdGVzdC9yL3ZhbGlkYXRlX3Bhc3N3b3JkX3BsdWdpbi5yZXN1bHQnCi0t LSBhL215c3FsLXRlc3Qvci92YWxpZGF0ZV9wYXNzd29yZF9wbHVnaW4ucmVzdWx0CTIwMTItMDUt MTQgMTE6MTg6MTMgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL3ZhbGlkYXRlX3Bhc3N3b3JkX3Bs dWdpbi5yZXN1bHQJMjAxMi0wNS0xOCAwNjozMToyNiArMDAwMApAQCAtMSw0OSArMSw1NyBAQAot U0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeV9udW1iZXI9IDE7Ci1DUkVBVEUg VVNFUiAnYmFzZV91c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdwYXNzd29yZCc7Ci1H UkFOVCBBTEwgT04gbXlzcWwuKiBUTyAndXNlcjEnQCdsb2NhbGhvc3QnIElERU5USUZJRUQgQlkg J3Bhc3N3b3JkJzsKLSMgcGFzc3dvcmQgcG9saWN5IGxvdyAod2hpY2ggb25seSBjaGVjayBmb3Ig cGFzc3dvcmQgbGVuZ3RoKQorQ1JFQVRFIFVTRVIgJ2Jhc2VfdXNlcidAJ2xvY2FsaG9zdCcgSURF TlRJRklFRCBCWSAncGFzcyc7CitHUkFOVCBBTEwgT04gbXlzcWwuKiBUTyAndXNlcjEnQCdsb2Nh bGhvc3QnIElERU5USUZJRUQgQlkgJ3Bhc3MnOworSU5TVEFMTCBQTFVHSU4gdmFsaWRhdGVfcGFz c3dvcmQgU09OQU1FICd2YWxpZGF0ZV9wYXNzd29yZC5zbyc7CisjIHBhc3N3b3JkIHBvbGljeSBM T1cgKHdoaWNoIG9ubHkgY2hlY2sgZm9yIHBhc3N3b3JkIGxlbmd0aCkKICMgZGVmYXVsdCBjYXNl OiBwYXNzd29yZCBsZW5ndGggc2hvdWxkIGJlIG1pbmltdW0gOAorU0VUIEBAZ2xvYmFsLnZhbGlk YXRlX3Bhc3N3b3JkX3BvbGljeV9udW1iZXI9TE9XOwogQ1JFQVRFIFVTRVIgJ3VzZXInQCdsb2Nh bGhvc3QnIElERU5USUZJRUQgQlkgJyc7Ci1FUlJPUiBIWTAwMDogWW91ciBwYXNzd29yZCBkb2Vz IG5vdCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVudHMgJycKK0VSUk9SIEhZ MDAwOiBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQgcG9saWN5IHJl cXVpcmVtZW50cyAKIFNFVCBQQVNTV09SRCBGT1IgJ2Jhc2VfdXNlcidAJ2xvY2FsaG9zdCc9IFBB U1NXT1JEKCdwYXNzd29yZCcpOwogU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX2xlbmd0 aD0gMTI7CiBVUERBVEUgbXlzcWwudXNlciBTRVQgUEFTU1dPUkQ9IFBBU1NXT1JEKCdwYXNzd29y ZCcpIFdIRVJFIHVzZXI9J2Jhc2VfdXNlcic7Ci1FUlJPUiBIWTAwMDogWW91ciBwYXNzd29yZCBk b2VzIG5vdCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVudHMgJ3Bhc3N3b3Jk JworRVJST1IgSFkwMDA6IFlvdXIgcGFzc3dvcmQgZG9lcyBub3Qgc2F0aXNmeSB0aGUgY3VycmVu dCBwb2xpY3kgcmVxdWlyZW1lbnRzIAogR1JBTlQgVVNBR0UgT04gKi4qIFRPICdiYXNlX3VzZXIn QCdsb2NhbGhvc3QnIElERU5USUZJRUQgQlkgJ3Bhc3N3b3JkMTIzNCc7CiBTRVQgQEBnbG9iYWwu dmFsaWRhdGVfcGFzc3dvcmRfbGVuZ3RoPSA4OwotIyBwYXNzd29yZCBwb2xpY3kgbWVkaXVtIChj aGVjayBmb3IgbWl4ZWRfY2FzZSwgZGlnaXRzLCBzcGVjaWFsX2NoYXJzKQorIyBwYXNzd29yZCBw b2xpY3kgTUVESVVNIChjaGVjayBmb3IgbWl4ZWRfY2FzZSwgZGlnaXRzLCBzcGVjaWFsX2NoYXJz KQogIyBkZWZhdWx0IGNhc2UgOiBhdGxlYXN0IDEgbWl4ZWRfY2FzZSwgMSBkaWdpdCwgMSBzcGVj aWFsX2NoYXIKLVNFVCBAQGdsb2JhbC52YWxpZGF0ZV9wYXNzd29yZF9wb2xpY3lfbnVtYmVyPSAy OworU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeV9udW1iZXI9TUVESVVNOwog Q1JFQVRFIFVTRVIgJ3VzZXInQCdsb2NhbGhvc3QnIElERU5USUZJRUQgQlkgJ3Bhc3N3b3JkJzsK LUVSUk9SIEhZMDAwOiBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQg cG9saWN5IHJlcXVpcmVtZW50cyAncGFzc3dvcmQnCitFUlJPUiBIWTAwMDogWW91ciBwYXNzd29y ZCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVudHMgCiBTRVQg UEFTU1dPUkQgRk9SICdiYXNlX3VzZXInQCdsb2NhbGhvc3QnPSBQQVNTV09SRCgncGFzc3dvcmQx QSMnKTsKIFNFVCBAQGdsb2JhbC52YWxpZGF0ZV9wYXNzd29yZF9udW1iZXJfY291bnQ9IDI7CiBV UERBVEUgbXlzcWwudXNlciBTRVQgUEFTU1dPUkQ9IFBBU1NXT1JEKCdwYXNzd29yZDFBIycpIFdI RVJFIHVzZXI9J2Jhc2VfdXNlcic7Ci1FUlJPUiBIWTAwMDogWW91ciBwYXNzd29yZCBkb2VzIG5v dCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVudHMgJ3Bhc3N3b3JkMUEjJwor RVJST1IgSFkwMDA6IFlvdXIgcGFzc3dvcmQgZG9lcyBub3Qgc2F0aXNmeSB0aGUgY3VycmVudCBw b2xpY3kgcmVxdWlyZW1lbnRzIAogVVBEQVRFIG15c3FsLnVzZXIgU0VUIFBBU1NXT1JEPSBQQVNT V09SRCgncGFzc3dvcmQxMkEjJykgV0hFUkUgdXNlcj0nYmFzZV91c2VyJzsKIFNFVCBAQGdsb2Jh bC52YWxpZGF0ZV9wYXNzd29yZF9udW1iZXJfY291bnQ9IDE7CiBTRVQgQEBnbG9iYWwudmFsaWRh dGVfcGFzc3dvcmRfbWl4ZWRfY2FzZV9jb3VudD0gMjsKIFVQREFURSBteXNxbC51c2VyIFNFVCBQ QVNTV09SRD0gUEFTU1dPUkQoJ3Bhc3N3b3JkMUEjJykgV0hFUkUgdXNlcj0nYmFzZV91c2VyJzsK LUVSUk9SIEhZMDAwOiBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQg cG9saWN5IHJlcXVpcmVtZW50cyAncGFzc3dvcmQxQSMnCitFUlJPUiBIWTAwMDogWW91ciBwYXNz d29yZCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVudHMgCiBV UERBVEUgbXlzcWwudXNlciBTRVQgUEFTU1dPUkQ9IFBBU1NXT1JEKCdwYXNzd29yZDFBQiMnKSBX SEVSRSB1c2VyPSdiYXNlX3VzZXInOwogU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX21p eGVkX2Nhc2VfY291bnQ9IDE7CiBTRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfc3BlY2lh bF9jaGFyX2NvdW50PSAyOwogR1JBTlQgVVNBR0UgT04gKi4qIFRPICdiYXNlX3VzZXInQCdsb2Nh bGhvc3QnIElERU5USUZJRUQgQlkgJ3Bhc3N3b3JkMUEjJzsKLUVSUk9SIEhZMDAwOiBZb3VyIHBh c3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQgcG9saWN5IHJlcXVpcmVtZW50cyAn cGFzc3dvcmQxQSMnCitFUlJPUiBIWTAwMDogWW91ciBwYXNzd29yZCBkb2VzIG5vdCBzYXRpc2Z5 IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVudHMgCiBHUkFOVCBVU0FHRSBPTiAqLiogVE8g J2Jhc2VfdXNlcidAJ2xvY2FsaG9zdCcgSURFTlRJRklFRCBCWSAncGFzc3dvcmQxQSMkJzsKIFNF VCBAQGdsb2JhbC52YWxpZGF0ZV9wYXNzd29yZF9zcGVjaWFsX2NoYXJfY291bnQ9IDE7CisjIE5v IGRpY3Rpb25hcnkgZmlsZSBwcmVzZW50LCBubyBkaWN0aW9uYXJ5IGNoZWNrCitTRVQgQEBnbG9i YWwudmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251bWJlcj1TVFJPTkc7CitTRVQgUEFTU1dPUkQg Rk9SICdiYXNlX3VzZXInQCdsb2NhbGhvc3QnPSBQQVNTV09SRCgncGFzc3dvcmQxQSMnKTsKK1VQ REFURSBteXNxbC51c2VyIFNFVCBQQVNTV09SRD0gUEFTU1dPUkQoJ3Bhc3N3b3JkMUEjJykgV0hF UkUgdXNlcj0nYmFzZV91c2VyJzsKK1VOSU5TVEFMTCBQTFVHSU4gdmFsaWRhdGVfcGFzc3dvcmQ7 CisjIHJlc3RhcnRpbmcgdGhlIHNlcnZlciB3aXRoIGRpY3Rpb25hcnkgZmlsZS4KKyMgUmVzdGFy dCBzZXJ2ZXIuCitJTlNUQUxMIFBMVUdJTiB2YWxpZGF0ZV9wYXNzd29yZCBTT05BTUUgJ3ZhbGlk YXRlX3Bhc3N3b3JkLnNvJzsKICMgcGFzc3dvcmQgcG9saWN5IHN0cm9uZwogIyBkZWZhdWx0X2Zp bGUgOiBkaWN0aW9uYXJ5LnR4dAotU0VUQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfZGljdGlv bmFyeV9maWxlPSdNWVNRTF9FUlJNU0dfQkFTRURJUi9kaWN0aW9uYXJ5LnR4dCc7Ci1TRVQgQEBn bG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251bWJlcj0gMzsKK1NFVCBAQGdsb2JhbC52 YWxpZGF0ZV9wYXNzd29yZF9wb2xpY3lfbnVtYmVyPVNUUk9ORzsKIENSRUFURSBVU0VSICd1c2Vy J0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdwYXNzd29yZCc7Ci1FUlJPUiBIWTAwMDogWW91 ciBwYXNzd29yZCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVu dHMgJ3Bhc3N3b3JkJworRVJST1IgSFkwMDA6IFlvdXIgcGFzc3dvcmQgZG9lcyBub3Qgc2F0aXNm eSB0aGUgY3VycmVudCBwb2xpY3kgcmVxdWlyZW1lbnRzIAogU0VUIFBBU1NXT1JEIEZPUiAnYmFz ZV91c2VyJ0AnbG9jYWxob3N0Jz0gUEFTU1dPUkQoJ3Bhc3N3b3JkMUEjJyk7Ci1FUlJPUiBIWTAw MDogWW91ciBwYXNzd29yZCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1 aXJlbWVudHMgJ3Bhc3N3b3JkMWEjJworRVJST1IgSFkwMDA6IFlvdXIgcGFzc3dvcmQgZG9lcyBu b3Qgc2F0aXNmeSB0aGUgY3VycmVudCBwb2xpY3kgcmVxdWlyZW1lbnRzIAogVVBEQVRFIG15c3Fs LnVzZXIgU0VUIFBBU1NXT1JEPSBQQVNTV09SRCgncGFzczEyMzQ1QSMnKSBXSEVSRSB1c2VyPSdi YXNlX3VzZXInOwotRVJST1IgSFkwMDA6IFlvdXIgcGFzc3dvcmQgZG9lcyBub3Qgc2F0aXNmeSB0 aGUgY3VycmVudCBwb2xpY3kgcmVxdWlyZW1lbnRzICdwYXNzMTIzNDVhIycKK0VSUk9SIEhZMDAw OiBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQgcG9saWN5IHJlcXVp cmVtZW50cyAKIFVQREFURSBteXNxbC51c2VyIFNFVCBQQVNTV09SRD0gUEFTU1dPUkQoJ3Bhc3Mw MDAwQSMnKSBXSEVSRSB1c2VyPSdiYXNlX3VzZXInOwotRVJST1IgSFkwMDA6IFlvdXIgcGFzc3dv cmQgZG9lcyBub3Qgc2F0aXNmeSB0aGUgY3VycmVudCBwb2xpY3kgcmVxdWlyZW1lbnRzICdwYXNz MDAwMGEjJworRVJST1IgSFkwMDA6IFlvdXIgcGFzc3dvcmQgZG9lcyBub3Qgc2F0aXNmeSB0aGUg Y3VycmVudCBwb2xpY3kgcmVxdWlyZW1lbnRzIAogR1JBTlQgVVNBR0UgT04gKi4qIFRPICdiYXNl X3VzZXInQCdsb2NhbGhvc3QnIElERU5USUZJRUQgQlkgJ1BBMDB3cmQhIyc7CiAjIHRlc3QgZm9y IHBhc3N3b3JkX3ZhbGlkYXRlX3N0cmVuZ3RoIGZ1bmN0aW9uCiBTRUxFQ1QgVkFMSURBVEVfUEFT U1dPUkRfU1RSRU5HVEgoJ3Bhc3N3b3JkJywgMCk7CkBAIC03MSwxOCArNzksMTIgQEAgVkFMSURB VEVfUEFTU1dPUkRfU1RSRU5HVEgoJ1BBMTJ3cmQhIycpCiBTRUxFQ1QgVkFMSURBVEVfUEFTU1dP UkRfU1RSRU5HVEgoJ1BBMDB3cmQhIycpOwogVkFMSURBVEVfUEFTU1dPUkRfU1RSRU5HVEgoJ1BB MDB3cmQhIycpCiAxMDAKLVNFVCBAQGdsb2JhbC52YWxpZGF0ZV9wYXNzd29yZF9kaWN0aW9uYXJ5 X2ZpbGU9TlVMTDsKLSMgc2FtZSBwYXNzd29yZCB3YXMgbm90IGFjY2VwdGVkIGFzIGl0IHdhcyBw cmVzZW50IGluIHRoZSBkaWN0aW9uYXJ5IGZpbGUKLVNFVCBQQVNTV09SRCBGT1IgJ2Jhc2VfdXNl cidAJ2xvY2FsaG9zdCc9IFBBU1NXT1JEKCdwYXNzd29yZDFBIycpOwotU0VMRUNUIFZBTElEQVRF X1BBU1NXT1JEX1NUUkVOR1RIKCdwYXNzd29yZDFBIycpOwotVkFMSURBVEVfUEFTU1dPUkRfU1RS RU5HVEgoJ3Bhc3N3b3JkMUEjJykKLTEwMAogU0VUIE5BTUVTICd1amlzJzsKIFNFTEVDVCBWQUxJ REFURV9QQVNTV09SRF9TVFJFTkdUSCgnUEExMndyZCEjJyk7CiBWQUxJREFURV9QQVNTV09SRF9T VFJFTkdUSCgnUEExMndyZCEjJykKLTEwMAotU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3Jk X3BvbGljeV9udW1iZXI9IDI7Ci1TRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5 X251bWJlcj0gMTsKKzc1CitTRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251 bWJlcj1NRURJVU07CitTRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251bWJl cj1MT1c7CiBFUlJPUiA0MjAwMDogQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgKGF0IGxlYXN0IG9u ZSBvZikgdGhlIFNVUEVSIHByaXZpbGVnZShzKSBmb3IgdGhpcyBvcGVyYXRpb24KIFNFVCBAQGds b2JhbC52YWxpZGF0ZV9wYXNzd29yZF9sZW5ndGg9IDQ7CiBFUlJPUiA0MjAwMDogQWNjZXNzIGRl bmllZDsgeW91IG5lZWQgKGF0IGxlYXN0IG9uZSBvZikgdGhlIFNVUEVSIHByaXZpbGVnZShzKSBm b3IgdGhpcyBvcGVyYXRpb24KQEAgLTkxLDExICs5MywxMiBAQCBFUlJPUiA0MjAwMDogQWNjZXNz IGRlbmllZDsgeW91IG5lZWQgKGF0CiBTRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfbWl4 ZWRfY2FzZV9jb3VudD0gMDsKIEVSUk9SIDQyMDAwOiBBY2Nlc3MgZGVuaWVkOyB5b3UgbmVlZCAo YXQgbGVhc3Qgb25lIG9mKSB0aGUgU1VQRVIgcHJpdmlsZWdlKHMpIGZvciB0aGlzIG9wZXJhdGlv bgogQ1JFQVRFIFVTRVIgJ3VzZXIyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdwYXNzd29y ZCc7Ci1FUlJPUiBIWTAwMDogWW91ciBwYXNzd29yZCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBjdXJy ZW50IHBvbGljeSByZXF1aXJlbWVudHMgJ3Bhc3N3b3JkJworRVJST1IgSFkwMDA6IFlvdXIgcGFz c3dvcmQgZG9lcyBub3Qgc2F0aXNmeSB0aGUgY3VycmVudCBwb2xpY3kgcmVxdWlyZW1lbnRzIAog Q1JFQVRFIFVTRVIgJ3VzZXIyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdQQTAwd3JkISMn OwogVVBEQVRFIG15c3FsLnVzZXIgU0VUIFBBU1NXT1JEPSBQQVNTV09SRCgncGFzc3dvcmQnKSBX SEVSRSB1c2VyPSd1c2VyMic7Ci1FUlJPUiBIWTAwMDogWW91ciBwYXNzd29yZCBkb2VzIG5vdCBz YXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVudHMgJ3Bhc3N3b3JkJworRVJST1Ig SFkwMDA6IFlvdXIgcGFzc3dvcmQgZG9lcyBub3Qgc2F0aXNmeSB0aGUgY3VycmVudCBwb2xpY3kg cmVxdWlyZW1lbnRzIAogVVBEQVRFIG15c3FsLnVzZXIgU0VUIFBBU1NXT1JEPSBQQVNTV09SRCgn UEEwMHdyZCEjJykgV0hFUkUgdXNlcj0ndXNlcjInOwogRFJPUCBVU0VSICd1c2VyMidAJ2xvY2Fs aG9zdCc7CiBEUk9QIFVTRVIgJ2Jhc2VfdXNlcidAJ2xvY2FsaG9zdCc7CiBEUk9QIFVTRVIgJ3Vz ZXIxJ0AnbG9jYWxob3N0JzsKK1VOSU5TVEFMTCBQTFVHSU4gdmFsaWRhdGVfcGFzc3dvcmQ7Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC90L3ZhbGlkYXRlX3Bhc3N3b3JkX3BsdWdpbi1t YXN0ZXIub3B0JwotLS0gYS9teXNxbC10ZXN0L3QvdmFsaWRhdGVfcGFzc3dvcmRfcGx1Z2luLW1h c3Rlci5vcHQJMjAxMi0wNS0xNCAxMToxODoxMyArMDAwMAorKysgYi9teXNxbC10ZXN0L3QvdmFs aWRhdGVfcGFzc3dvcmRfcGx1Z2luLW1hc3Rlci5vcHQJMjAxMi0wNS0xOCAwNjozMToyNiArMDAw MApAQCAtMSwyICsxIEBACiAkVkFMSURBVEVfUEFTU1dPUkRfT1BUCi0kVkFMSURBVEVfUEFTU1dP UkRfTE9BRAoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC92YWxpZGF0ZV9wYXNzd29y ZF9wbHVnaW4udGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L3ZhbGlkYXRlX3Bhc3N3b3JkX3BsdWdp bi50ZXN0CTIwMTItMDUtMTQgMTE6MTg6MTMgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L3ZhbGlk YXRlX3Bhc3N3b3JkX3BsdWdpbi50ZXN0CTIwMTItMDUtMTggMDY6MzE6MjYgKzAwMDAKQEAgLTMs MTYgKzMsMjEgQEAKIAogbGV0ICRNWVNRTF9FUlJNU0dfQkFTRURJUj1gc2VsZWN0IEBAbGNfbWVz c2FnZXNfZGlyYDsKIAotU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeV9udW1i ZXI9IDE7Ci1DUkVBVEUgVVNFUiAnYmFzZV91c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZ ICdwYXNzd29yZCc7Ci1HUkFOVCBBTEwgT04gbXlzcWwuKiBUTyAndXNlcjEnQCdsb2NhbGhvc3Qn IElERU5USUZJRUQgQlkgJ3Bhc3N3b3JkJzsKKyMgcGx1Z2luIGlzIG5vdCBpbnN0YWxsZWQgc28g ZXZlbiAncGFzcycgKHZlcnkgd2VhaykKKyMgaXMgYWNjZXB0ZWQgYXMgYSBwYXNzd29yZAorQ1JF QVRFIFVTRVIgJ2Jhc2VfdXNlcidAJ2xvY2FsaG9zdCcgSURFTlRJRklFRCBCWSAncGFzcyc7CitH UkFOVCBBTEwgT04gbXlzcWwuKiBUTyAndXNlcjEnQCdsb2NhbGhvc3QnIElERU5USUZJRUQgQlkg J3Bhc3MnOworCistLXJlcGxhY2VfcmVnZXggL1wuZGxsLy5zby8KK2V2YWwgSU5TVEFMTCBQTFVH SU4gdmFsaWRhdGVfcGFzc3dvcmQgU09OQU1FICckVkFMSURBVEVfUEFTU1dPUkQnOwogCiAjIHRl c3QgZm9yIGFsbCB0aGUgdGhyZWUgcGFzc3dvcmQgcG9saWN5Ci0jIHBvbGljeTogbG93PSAxLCBt ZWRpdW09IDIsIHN0cm9uZz0gMworIyBwb2xpY3k6IExPVywgTUVESVVNLCBTVFJPTkcgCiAKLS0t ZWNobyAjIHBhc3N3b3JkIHBvbGljeSBsb3cgKHdoaWNoIG9ubHkgY2hlY2sgZm9yIHBhc3N3b3Jk IGxlbmd0aCkKKy0tZWNobyAjIHBhc3N3b3JkIHBvbGljeSBMT1cgKHdoaWNoIG9ubHkgY2hlY2sg Zm9yIHBhc3N3b3JkIGxlbmd0aCkKIC0tZWNobyAjIGRlZmF1bHQgY2FzZTogcGFzc3dvcmQgbGVu Z3RoIHNob3VsZCBiZSBtaW5pbXVtIDgKIAorU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3Jk X3BvbGljeV9udW1iZXI9TE9XOwogLS1lcnJvciBFUl9OT1RfVkFMSURfUEFTU1dPUkQKIENSRUFU RSBVU0VSICd1c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICcnOwogU0VUIFBBU1NXT1JE IEZPUiAnYmFzZV91c2VyJ0AnbG9jYWxob3N0Jz0gUEFTU1dPUkQoJ3Bhc3N3b3JkJyk7CkBAIC0y MiwxMCArMjcsMTAgQEAgVVBEQVRFIG15c3FsLnVzZXIgU0VUIFBBU1NXT1JEPSBQQVNTV09SRAog R1JBTlQgVVNBR0UgT04gKi4qIFRPICdiYXNlX3VzZXInQCdsb2NhbGhvc3QnIElERU5USUZJRUQg QlkgJ3Bhc3N3b3JkMTIzNCc7CiBTRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfbGVuZ3Ro PSA4OwogCi0tLWVjaG8gIyBwYXNzd29yZCBwb2xpY3kgbWVkaXVtIChjaGVjayBmb3IgbWl4ZWRf Y2FzZSwgZGlnaXRzLCBzcGVjaWFsX2NoYXJzKQorLS1lY2hvICMgcGFzc3dvcmQgcG9saWN5IE1F RElVTSAoY2hlY2sgZm9yIG1peGVkX2Nhc2UsIGRpZ2l0cywgc3BlY2lhbF9jaGFycykKIC0tZWNo byAjIGRlZmF1bHQgY2FzZSA6IGF0bGVhc3QgMSBtaXhlZF9jYXNlLCAxIGRpZ2l0LCAxIHNwZWNp YWxfY2hhcgogCi1TRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251bWJlcj0g MjsKK1NFVCBAQGdsb2JhbC52YWxpZGF0ZV9wYXNzd29yZF9wb2xpY3lfbnVtYmVyPU1FRElVTTsK IC0tZXJyb3IgRVJfTk9UX1ZBTElEX1BBU1NXT1JECiBDUkVBVEUgVVNFUiAndXNlcidAJ2xvY2Fs aG9zdCcgSURFTlRJRklFRCBCWSAncGFzc3dvcmQnOwogU0VUIFBBU1NXT1JEIEZPUiAnYmFzZV91 c2VyJ0AnbG9jYWxob3N0Jz0gUEFTU1dPUkQoJ3Bhc3N3b3JkMUEjJyk7CkBAIC00NSwxNCArNTAs NDcgQEAgR1JBTlQgVVNBR0UgT04gKi4qIFRPICdiYXNlX3VzZXInQCdsb2NhbAogR1JBTlQgVVNB R0UgT04gKi4qIFRPICdiYXNlX3VzZXInQCdsb2NhbGhvc3QnIElERU5USUZJRUQgQlkgJ3Bhc3N3 b3JkMUEjJCc7CiBTRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfc3BlY2lhbF9jaGFyX2Nv dW50PSAxOwogCistLWVjaG8gIyBObyBkaWN0aW9uYXJ5IGZpbGUgcHJlc2VudCwgbm8gZGljdGlv bmFyeSBjaGVjaworU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeV9udW1iZXI9 U1RST05HOworU0VUIFBBU1NXT1JEIEZPUiAnYmFzZV91c2VyJ0AnbG9jYWxob3N0Jz0gUEFTU1dP UkQoJ3Bhc3N3b3JkMUEjJyk7CitVUERBVEUgbXlzcWwudXNlciBTRVQgUEFTU1dPUkQ9IFBBU1NX T1JEKCdwYXNzd29yZDFBIycpIFdIRVJFIHVzZXI9J2Jhc2VfdXNlcic7CisKK1VOSU5TVEFMTCBQ TFVHSU4gdmFsaWRhdGVfcGFzc3dvcmQ7CisKKy0tZWNobyAjIHJlc3RhcnRpbmcgdGhlIHNlcnZl ciB3aXRoIGRpY3Rpb25hcnkgZmlsZS4KKworIyBXcml0ZSBmaWxlIHRvIG1ha2UgbXlzcWwtdGVz dC1ydW4ucGwgd2FpdCBmb3IgdGhlIHNlcnZlciB0byBzdG9wCistLWV4ZWMgZWNobyAid2FpdCIg PiAkTVlTUUxURVNUX1ZBUkRJUi90bXAvbXlzcWxkLjEuZXhwZWN0CisKKyMgUmVxdWVzdCBzaHV0 ZG93bgorLS0gc2VuZF9zaHV0ZG93bgorCisjIENhbGwgc2NyaXB0IHRoYXQgd2lsbCBwb2xsIHRo ZSBzZXJ2ZXIgd2FpdGluZyBmb3IgaXQgdG8gZGlzYXBlYXIKKy0tIHNvdXJjZSBpbmNsdWRlL3dh aXRfdW50aWxfZGlzY29ubmVjdGVkLmluYworCistLWVjaG8gIyBSZXN0YXJ0IHNlcnZlci4KKwor LS1leGVjIGVjaG8gInJlc3RhcnQ6LS1sb29zZS12YWxpZGF0ZV9wYXNzd29yZF9kaWN0aW9uYXJ5 X2ZpbGU9JE1ZU1FMX0VSUk1TR19CQVNFRElSL2RpY3Rpb25hcnkudHh0IiA+ICRNWVNRTFRFU1Rf VkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKworIyBUdXJuIG9uIHJlY29ubmVjdAorLS1lbmFi bGVfcmVjb25uZWN0CisKKyMgQ2FsbCBzY3JpcHQgdGhhdCB3aWxsIHBvbGwgdGhlIHNlcnZlciB3 YWl0aW5nIGZvciBpdCB0byBiZSBiYWNrIG9ubGluZSBhZ2FpbgorLS1zb3VyY2UgaW5jbHVkZS93 YWl0X3VudGlsX2Nvbm5lY3RlZF9hZ2Fpbi5pbmMKKworIyBUdXJuIG9mZiByZWNvbm5lY3QgYWdh aW4KKy0tZGlzYWJsZV9yZWNvbm5lY3QKKworLS1yZXBsYWNlX3JlZ2V4IC9cLmRsbC8uc28vCitl dmFsIElOU1RBTEwgUExVR0lOIHZhbGlkYXRlX3Bhc3N3b3JkIFNPTkFNRSAnJFZBTElEQVRFX1BB U1NXT1JEJzsKKwogLS1lY2hvICMgcGFzc3dvcmQgcG9saWN5IHN0cm9uZwogLS1lY2hvICMgZGVm YXVsdF9maWxlIDogZGljdGlvbmFyeS50eHQKKwogIyBmaWxlIHNob3VsZCBjb250YWluIDEgd29y ZCBwZXIgbGluZQogIyBlcnJvciBpZiBzdWJzdHJpbmcgb2YgcGFzc3dvcmQgaXMgYSBkaWN0aW9u YXJ5IHdvcmQKIAotLS1yZXBsYWNlX3Jlc3VsdCAkTVlTUUxfRVJSTVNHX0JBU0VESVIgTVlTUUxf RVJSTVNHX0JBU0VESVIKLWV2YWwgU0VUQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfZGljdGlv bmFyeV9maWxlPSckTVlTUUxfRVJSTVNHX0JBU0VESVIvZGljdGlvbmFyeS50eHQnOwotU0VUIEBA Z2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeV9udW1iZXI9IDM7CitTRVQgQEBnbG9iYWwu dmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251bWJlcj1TVFJPTkc7CiAtLWVycm9yIEVSX05PVF9W QUxJRF9QQVNTV09SRAogQ1JFQVRFIFVTRVIgJ3VzZXInQCdsb2NhbGhvc3QnIElERU5USUZJRUQg QlkgJ3Bhc3N3b3JkJzsKIC0tZXJyb3IgRVJfTk9UX1ZBTElEX1BBU1NXT1JECkBAIC03NywyNiAr MTE1LDE5IEBAIFNFTEVDVCBWQUxJREFURV9QQVNTV09SRF9TVFJFTkdUSCgncGFzc3cKIFNFTEVD VCBWQUxJREFURV9QQVNTV09SRF9TVFJFTkdUSCgnUEExMndyZCEjJyk7CiBTRUxFQ1QgVkFMSURB VEVfUEFTU1dPUkRfU1RSRU5HVEgoJ1BBMDB3cmQhIycpOwogCi1TRVQgQEBnbG9iYWwudmFsaWRh dGVfcGFzc3dvcmRfZGljdGlvbmFyeV9maWxlPU5VTEw7Ci0tLWVjaG8gIyBzYW1lIHBhc3N3b3Jk IHdhcyBub3QgYWNjZXB0ZWQgYXMgaXQgd2FzIHByZXNlbnQgaW4gdGhlIGRpY3Rpb25hcnkgZmls ZQotCi1TRVQgUEFTU1dPUkQgRk9SICdiYXNlX3VzZXInQCdsb2NhbGhvc3QnPSBQQVNTV09SRCgn cGFzc3dvcmQxQSMnKTsKLVNFTEVDVCBWQUxJREFURV9QQVNTV09SRF9TVFJFTkdUSCgncGFzc3dv cmQxQSMnKTsKLQogIyBUZXN0IGZvciBtdWx0aWJ5dGUgY2hhcmFjdGVyIHNldCB0aGF0IGhhdmUg Z3JlYXRlciBzaXplIHdoZW4gY29udmVydGVkCiAjIGZyb20gdXBwZXJjYXNlIHRvIGxvd2VyY2Fz ZS4KLQogU0VUIE5BTUVTICd1amlzJzsKIFNFTEVDVCBWQUxJREFURV9QQVNTV09SRF9TVFJFTkdU SCgnUEExMndyZCEjJyk7CiAKICMgZGVmYXVsdCBwb2xpY3kgaXMgc2V0LCBhbGwgb3RoZXIgcGx1 Z2luIHZhcmlhYmxlcyBzZXQgdG8gZGVmYXVsdAogIyBUZXN0IHRvIGVuc3VyZSB0aGF0IG9ubHkg dGhlIHByaXZpbGVnZWQgdXNlciBjYW4gYWNjZXNzIHRoZSBwbHVnaW4gdmFyaWFibGVzCi1TRVQg QEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251bWJlcj0gMjsKK1NFVCBAQGdsb2Jh bC52YWxpZGF0ZV9wYXNzd29yZF9wb2xpY3lfbnVtYmVyPU1FRElVTTsKIAogIyBOZXcgY29ubmVj dGlvbgotY29ubmVjdCAocGx1Z19jb24sbG9jYWxob3N0LHVzZXIxLHBhc3N3b3JkKTsKK2Nvbm5l Y3QgKHBsdWdfY29uLGxvY2FsaG9zdCx1c2VyMSxwYXNzKTsKIC0tZXJyb3IgRVJfU1BFQ0lGSUNf QUNDRVNTX0RFTklFRF9FUlJPUgotU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX3BvbGlj eV9udW1iZXI9IDE7CitTRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251bWJl cj1MT1c7CiAtLWVycm9yIEVSX1NQRUNJRklDX0FDQ0VTU19ERU5JRURfRVJST1IKIFNFVCBAQGds b2JhbC52YWxpZGF0ZV9wYXNzd29yZF9sZW5ndGg9IDQ7CiAtLWVycm9yIEVSX1NQRUNJRklDX0FD Q0VTU19ERU5JRURfRVJST1IKQEAgLTEwNiw3ICsxMzcsNiBAQCBTRVQgQEBnbG9iYWwudmFsaWRh dGVfcGFzc3dvcmRfbWl4ZWRfY2FzCiAjIHVzZXIgaGFzIHRoZSB1cGRhdGUvY3JlYXRlIHByaXZp bGVnZSBidXQgbmVlZHMgdG8gc2F0aXNmeSBwYXNzd29yZCBwb2xpY3kKICMgdG8gdXBkYXRlL2Ny ZWF0ZSBuZXcgYWNjb3VudCAKIC0tZXJyb3IgRVJfTk9UX1ZBTElEX1BBU1NXT1JECi0tLWVycm9y IEVSX05PVF9WQUxJRF9QQVNTV09SRAogQ1JFQVRFIFVTRVIgJ3VzZXIyJ0AnbG9jYWxob3N0JyBJ REVOVElGSUVEIEJZICdwYXNzd29yZCc7CiBDUkVBVEUgVVNFUiAndXNlcjInQCdsb2NhbGhvc3Qn IElERU5USUZJRUQgQlkgJ1BBMDB3cmQhIyc7CiAtLWVycm9yIEVSX05PVF9WQUxJRF9QQVNTV09S RApAQCAtMTE3LDMgKzE0Nyw0IEBAIGNvbm5lY3Rpb24gZGVmYXVsdDsKIAogRFJPUCBVU0VSICdi YXNlX3VzZXInQCdsb2NhbGhvc3QnOwogRFJPUCBVU0VSICd1c2VyMSdAJ2xvY2FsaG9zdCc7CitV TklOU1RBTEwgUExVR0lOIHZhbGlkYXRlX3Bhc3N3b3JkOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3Bs dWdpbi9wYXNzd29yZF92YWxpZGF0aW9uL3ZhbGlkYXRlX3Bhc3N3b3JkLmNjJwotLS0gYS9wbHVn aW4vcGFzc3dvcmRfdmFsaWRhdGlvbi92YWxpZGF0ZV9wYXNzd29yZC5jYwkyMDEyLTA1LTE0IDEx OjE4OjEzICswMDAwCisrKyBiL3BsdWdpbi9wYXNzd29yZF92YWxpZGF0aW9uL3ZhbGlkYXRlX3Bh c3N3b3JkLmNjCTIwMTItMDUtMTggMDY6MzE6MjYgKzAwMDAKQEAgLTE4LDcgKzE4LDcgQEAKICNp bmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8ZnN0cmVhbT4KLSNp bmNsdWRlIDxwdGhyZWFkLmg+CisjaW5jbHVkZSA8bXlfc3lzLmg+CiAKIC8qICAKICAgX19hdHRy aWJ1dGVfXyhBKSBuZWVkcyB0byBiZSBkZWZpbmVkIGZvciBXaW5kb3dzIGVsc2UgY29tcGxpZXIK QEAgLTMyLDI2ICszMiwzNiBAQAogI2RlZmluZSBNQVhfRElDVElPTkFSWV9GSUxFX0xFTkdUSCAg ICAxMDI0ICogMTAyNAogI2RlZmluZSBQQVNTV09SRF9TQ09SRSAgICAgICAgICAgICAgICAyNQog I2RlZmluZSBNSU5fRElDVElPTkFSWV9XT1JEX0xFTkdUSCAgICA0CisjZGVmaW5lIE1BWF9QQVNT V09SRF9MRU5HVEggICAgICAgICAgIDEwMAogCiAvKiAgCiAgIFRoZXNlIGFyZSB0aGUgMyBwYXNz d29yZCBwb2xpY2llcyB0aGF0IHRoaXMgcGx1Z2luIGFsbG93IHRvIHNldAogICBhbmQgY29uZmln dXJlIGFzIHBlciB0aGUgcmVxdWlyZW1lbnRzLgogKi8KLWVudW0gcGFzc3dvcmRfcG9saWN5X25h bWVfZW51bSB7IFBBU1NXT1JEX1BPTElDWV9MT1c9IDEsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQQVNTV09SRF9QT0xJQ1lfTUVESVVNLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUEFTU1dPUkRfUE9MSUNZX1NUUk9ORworCitlbnVtIHBhc3N3b3JkX3BvbGlj eV9lbnVtIHsgUEFTU1dPUkRfUE9MSUNZX0xPVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQQVNTV09SRF9QT0xJQ1lfTUVESVVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBB U1NXT1JEX1BPTElDWV9TVFJPTkcKK307CisKK3N0YXRpYyBjb25zdCBjaGFyKiBwb2xpY3lfbmFt ZXNbXSA9IHsgIkxPVyIsICJNRURJVU0iLCAiU1RST05HIiwgTnVsbFMgfTsKKworc3RhdGljIFRZ UEVMSUIgcGFzc3dvcmRfcG9saWN5X3R5cGVsaWJfdCA9IHsKKyAgICAgICAgYXJyYXlfZWxlbWVu dHMocG9saWN5X25hbWVzKSAtIDEsCisgICAgICAgICJwYXNzd29yZF9wb2xpY3lfdHlwZWxpYl90 IiwKKyAgICAgICAgcG9saWN5X25hbWVzLAorICAgICAgICBOVUxMCiB9OwogCi1wdGhyZWFkX211 dGV4X3QgZGljdGlvbmFyeV9tdXRleDsKIHR5cGVkZWYgc3RkOjpzdHJpbmcgc3RyaW5nX3R5cGU7 CiB0eXBlZGVmIHN0ZDo6c2V0PHN0cmluZ190eXBlPiBzZXRfdHlwZTsKLXNldF90eXBlIGRpY3Rp b25hcnlfd29yZHM7CitzdGF0aWMgc2V0X3R5cGUgZGljdGlvbmFyeV93b3JkczsKIAogc3RhdGlj IGludCB2YWxpZGF0ZV9wYXNzd29yZF9sZW5ndGg7CiBzdGF0aWMgaW50IHZhbGlkYXRlX3Bhc3N3 b3JkX251bWJlcl9jb3VudDsKIHN0YXRpYyBpbnQgdmFsaWRhdGVfcGFzc3dvcmRfbWl4ZWRfY2Fz ZV9jb3VudDsKIHN0YXRpYyBpbnQgdmFsaWRhdGVfcGFzc3dvcmRfc3BlY2lhbF9jaGFyX2NvdW50 Owotc3RhdGljIGludCB2YWxpZGF0ZV9wYXNzd29yZF9wb2xpY3lfbnVtYmVyOworc3RhdGljIHVs b25nIHZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeV9udW1iZXI7CiBzdGF0aWMgY2hhciAqdmFsaWRh dGVfcGFzc3dvcmRfZGljdGlvbmFyeV9maWxlOwogCiAvKiBUbyByZWFkIGRpY3Rpb25hcnkgZmls ZSBpbnRvIHN0ZDo6c2V0ICovCkBAIC03MSwxMyArODEsMTEgQEAgc3RhdGljIHZvaWQgcmVhZF9k aWN0aW9uYXJ5X2ZpbGUoKQogICAgIGRpY3Rpb25hcnlfc3RyZWFtLmNsb3NlKCk7CiAgICAgcmV0 dXJuOwogICB9Ci0gIHB0aHJlYWRfbXV0ZXhfbG9jaygmZGljdGlvbmFyeV9tdXRleCk7CiAgIHdo aWxlIChkaWN0aW9uYXJ5X3N0cmVhbS5nb29kKCkpCiAgIHsKICAgICBzdGQ6OmdldGxpbmUoZGlj dGlvbmFyeV9zdHJlYW0sIHdvcmRzKTsKICAgICBkaWN0aW9uYXJ5X3dvcmRzLmluc2VydCh3b3Jk cyk7CiAgIH0KLSAgcHRocmVhZF9tdXRleF91bmxvY2soJmRpY3Rpb25hcnlfbXV0ZXgpOwogICBk aWN0aW9uYXJ5X3N0cmVhbS5jbG9zZSgpOwogfQogCkBAIC04NSwyMyArOTMsMzAgQEAgc3RhdGlj IHZvaWQgcmVhZF9kaWN0aW9uYXJ5X2ZpbGUoKQogc3RhdGljIHZvaWQgZnJlZV9kaWN0aW9uYXJ5 X2ZpbGUoKQogewogICBpZiAoIWRpY3Rpb25hcnlfd29yZHMuZW1wdHkoKSkKLSAgewotICAgIHB0 aHJlYWRfbXV0ZXhfbG9jaygmZGljdGlvbmFyeV9tdXRleCk7CiAgICAgZGljdGlvbmFyeV93b3Jk cy5jbGVhcigpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkaWN0aW9uYXJ5X211dGV4KTsK LSAgfQogfQogCiAvKiAgCiAgIENoZWNrcyB3ZWF0aGVyIHBhc3N3b3JkIG9yIHN1YnN0cmluZyBv ZiBwYXNzd29yZAogICBpcyBwcmVzZW50IGluIGRpY3Rpb25hcnkgZmlsZSBzdG9yZWQgYXMgc3Rk OjpzZXQKICovCi1zdGF0aWMgaW50IHZhbGlkYXRlX2RpY3Rpb25hcnlfY2hlY2soc3RyaW5nX2hh bmRsZSBwYXNzd29yZCwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBpbnQgdmFsaWRhdGVfZGljdGlv bmFyeV9jaGVjayhteXNxbF9zdHJpbmdfaGFuZGxlIHBhc3N3b3JkKQogewotICBzaXplX3Qgc3Vi c3RyX3Bvcz0gMDsKLSAgc2l6ZV90IHN1YnN0cl9sZW5ndGg9IGxlbmd0aDsKLSAgc3RyaW5nX3R5 cGUgcGFzc3dvcmRfc3RyPSAoY29uc3QgY2hhciAqKW15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY2Fz ZWRuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFzc3dvcmQp OworICBpbnQgbGVuZ3RoOworICBpbnQgZXJyb3I9IDA7CisgIGNoYXIgKmJ1ZmZlcjsKKyAgbXlz cWxfc3RyaW5nX2hhbmRsZSBsb3dlcl9zdHJpbmdfaGFuZGxlOworICBsb3dlcl9zdHJpbmdfaGFu ZGxlPSBteXNxbF9zdHJpbmdfdG9fbG93ZXJjYXNlKHBhc3N3b3JkKTsKKyAgaWYgKCEoYnVmZmVy PSAoY2hhciopIG1hbGxvYyhNQVhfUEFTU1dPUkRfTEVOR1RIKSkpCisgICAgcmV0dXJuICgwKTsK KworICBpZiAoKGxlbmd0aD0gbXlzcWxfc3RyaW5nX2NvbnZlcnRfdG9fY2hhcl9wdHIobG93ZXJf c3RyaW5nX2hhbmRsZSwgInV0ZjgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBidWZmZXIsICZlcnJvcikpID4gMCAmJiBlcnJvciA9PSAwKQorICAgICBidWZmZXJb bGVuZ3RoXT0gJ1wwJzsKKworICBpbnQgc3Vic3RyX3Bvcz0gMDsKKyAgaW50IHN1YnN0cl9sZW5n dGg9IGxlbmd0aDsKKyAgc3RyaW5nX3R5cGUgcGFzc3dvcmRfc3RyPSAoY29uc3QgY2hhciAqKWJ1 ZmZlcjsKICAgc3RyaW5nX3R5cGUgcGFzc3dvcmRfc3Vic3RyOwogICBzZXRfdHlwZTo6aXRlcmF0 b3IgaXRyOwogICAvKiAgCkBAIC0xMTAsNyArMTI1LDYgQEAgc3RhdGljIGludCB2YWxpZGF0ZV9k aWN0aW9uYXJ5X2NoZWNrKHN0cgogICAqLwogICBpZiAoIWRpY3Rpb25hcnlfd29yZHMuZW1wdHko KSkKICAgewotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZGljdGlvbmFyeV9tdXRleCk7CiAgICAg d2hpbGUgKHN1YnN0cl9sZW5ndGggPj0gTUlOX0RJQ1RJT05BUllfV09SRF9MRU5HVEgpCiAgICAg ewogICAgICAgc3Vic3RyX3Bvcz0gMDsKQEAgLTEyMCw1NCArMTM0LDU2IEBAIHN0YXRpYyBpbnQg dmFsaWRhdGVfZGljdGlvbmFyeV9jaGVjayhzdHIKICAgICAgICAgaXRyPSBkaWN0aW9uYXJ5X3dv cmRzLmZpbmQocGFzc3dvcmRfc3Vic3RyKTsKICAgICAgICAgaWYgKGl0ciAhPSBkaWN0aW9uYXJ5 X3dvcmRzLmVuZCgpKQogICAgICAgICB7Ci0gICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2so JmRpY3Rpb25hcnlfbXV0ZXgpOworICAgICAgICAgIGZyZWUoYnVmZmVyKTsKICAgICAgICAgICBy ZXR1cm4gKDApOwogICAgICAgICB9CiAgICAgICAgIHN1YnN0cl9wb3MrKzsKICAgICAgIH0KICAg ICAgIHN1YnN0cl9sZW5ndGgtLTsKICAgICB9Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJmRp Y3Rpb25hcnlfbXV0ZXgpOwogICB9CisgIGZyZWUoYnVmZmVyKTsKICAgcmV0dXJuICgxKTsKIH0K IAotc3RhdGljIGludCB2YWxpZGF0ZV9wYXNzd29yZF9wb2xpY3koc3RyaW5nX2hhbmRsZSBwYXNz d29yZCwgc2l6ZV90IGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBwb2xpY3kpCitzdGF0aWMgaW50IHZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeShteXNxbF9z dHJpbmdfaGFuZGxlIHBhc3N3b3JkLCBpbnQgcG9saWN5KQogewotICBpbnQgaGFzX251bWJlcnM9 IDA7CisgIGludCBoYXNfZGlnaXQ9IDA7CiAgIGludCBoYXNfbG93ZXI9IDA7CiAgIGludCBoYXNf dXBwZXI9IDA7CiAgIGludCBoYXNfc3BlY2lhbF9jaGFycz0gMDsKLSAgaW50IGNoYXJfdHlwZSwg Y2hhcl9sZW47Ci0gIGNvbnN0IGNoYXIgKmN1cnJlbnRfcHRyLCAqZW5kX3B0cjsKKyAgaW50IG5f Y2hhcnM9IDA7CisgIG15c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5kbGUgaXRlcjsKIAotICBpZiAo KGludClsZW5ndGggPj0gdmFsaWRhdGVfcGFzc3dvcmRfbGVuZ3RoKQorICBpdGVyID0gbXlzcWxf c3RyaW5nX2dldF9pdGVyYXRvcihwYXNzd29yZCk7CisgIHdoaWxlKG15c3FsX3N0cmluZ19pdGVy YXRvcl9uZXh0KGl0ZXIpKQogICB7Ci0gICAgaWYgKHBvbGljeSA9PSBQQVNTV09SRF9QT0xJQ1lf TE9XKQotICAgICAgcmV0dXJuICgxKTsKLSAgICBjdXJyZW50X3B0cj0gbXlzcWxfc3RyaW5nX2No YXJhY3Rlcl9iZWcocGFzc3dvcmQpOwotICAgIGVuZF9wdHI9IG15c3FsX3N0cmluZ19jaGFyYWN0 ZXJfZW5kKHBhc3N3b3JkKTsKLSAgICB3aGlsZSAoY3VycmVudF9wdHIgPCBlbmRfcHRyKQorICAg IG5fY2hhcnMrKzsKKyAgICBpZiAocG9saWN5ID4gUEFTU1dPUkRfUE9MSUNZX0xPVykKICAgICB7 Ci0gICAgICBjaGFyX2xlbj0gbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9jdHlwZShwYXNzd29yZCwg JmNoYXJfdHlwZSwgY3VycmVudF9wdHIpOwotICAgICAgaWYgKG15c3FsX3N0cmluZ19jaGFyYWN0 ZXJfaXNsb3dlcihjaGFyX3R5cGUpKQorICAgICAgaWYgKG15c3FsX3N0cmluZ19pdGVyYXRvcl9p c2xvd2VyKGl0ZXIpKQogICAgICAgICBoYXNfbG93ZXIrKzsKLSAgICAgIGVsc2UgaWYgKG15c3Fs X3N0cmluZ19jaGFyYWN0ZXJfaXN1cHBlcihjaGFyX3R5cGUpKQorICAgICAgZWxzZSBpZiAobXlz cWxfc3RyaW5nX2l0ZXJhdG9yX2lzdXBwZXIoaXRlcikpCiAgICAgICAgIGhhc191cHBlcisrOwot ICAgICAgZWxzZSBpZiAobXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2RpZ2l0KGNoYXJfdHlwZSkp Ci0gICAgICAgIGhhc19udW1iZXJzKys7CisgICAgICBlbHNlIGlmIChteXNxbF9zdHJpbmdfaXRl cmF0b3JfaXNkaWdpdChpdGVyKSkKKyAgICAgICAgaGFzX2RpZ2l0Kys7CiAgICAgICBlbHNlCiAg ICAgICAgIGhhc19zcGVjaWFsX2NoYXJzKys7Ci0gICAgICBjdXJyZW50X3B0cis9IChjaGFyX2xl biA+IDAgPyBjaGFyX2xlbiA6IChjaGFyX2xlbiA8IDAgPyAtY2hhcl9sZW4gOiAxKSk7CiAgICAg fQorICB9CisKKyAgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2ZyZWUoaXRlcik7CisgIGlmIChuX2No YXJzID49IHZhbGlkYXRlX3Bhc3N3b3JkX2xlbmd0aCkKKyAgeworICAgIGlmIChwb2xpY3kgPT0g UEFTU1dPUkRfUE9MSUNZX0xPVykKKyAgICAgIHJldHVybiAoMSk7CiAgICAgaWYgKGhhc191cHBl ciA+PSB2YWxpZGF0ZV9wYXNzd29yZF9taXhlZF9jYXNlX2NvdW50ICYmCiAgICAgICAgIGhhc19s b3dlciA+PSB2YWxpZGF0ZV9wYXNzd29yZF9taXhlZF9jYXNlX2NvdW50ICYmCiAgICAgICAgIGhh c19zcGVjaWFsX2NoYXJzID49IHZhbGlkYXRlX3Bhc3N3b3JkX3NwZWNpYWxfY2hhcl9jb3VudCAm JgotICAgICAgICBoYXNfbnVtYmVycyA+PSB2YWxpZGF0ZV9wYXNzd29yZF9udW1iZXJfY291bnQp CisgICAgICAgIGhhc19kaWdpdCA+PSB2YWxpZGF0ZV9wYXNzd29yZF9udW1iZXJfY291bnQpCiAg ICAgewotICAgICAgaWYgKHBvbGljeSA9PSBQQVNTV09SRF9QT0xJQ1lfTUVESVVNIHx8Ci0gICAg ICAgICAgdmFsaWRhdGVfZGljdGlvbmFyeV9jaGVjayhwYXNzd29yZCwgbGVuZ3RoKSkKKyAgICAg IGlmIChwb2xpY3kgPT0gUEFTU1dPUkRfUE9MSUNZX01FRElVTSB8fCB2YWxpZGF0ZV9kaWN0aW9u YXJ5X2NoZWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHBhc3N3b3JkKSkKICAgICAgICAgcmV0dXJuICgxKTsKICAgICB9CiAgIH0KQEAgLTE3NSwzMSAr MTkxLDM4IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5KHN0cmkKIH0KIAog LyogQWN0dWFsIHBsdWdpbiBmdW5jdGlvbiB3aGljaCBhY3RzIGFzIGEgd3JhcHBlciAqLwotc3Rh dGljIGludCB2YWxpZGF0ZV9wYXNzd29yZChzdHJpbmdfaGFuZGxlIHBhc3N3b3JkLCBzaXplX3Qg bGVuZ3RoKQorc3RhdGljIGludCB2YWxpZGF0ZV9wYXNzd29yZChteXNxbF9zdHJpbmdfaGFuZGxl IHBhc3N3b3JkKQogewotICByZXR1cm4gdmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5Ci0gICAgICAg ICAocGFzc3dvcmQsIGxlbmd0aCwgdmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251bWJlcik7Cisg IHJldHVybiB2YWxpZGF0ZV9wYXNzd29yZF9wb2xpY3kocGFzc3dvcmQsIHZhbGlkYXRlX3Bhc3N3 b3JkX3BvbGljeV9udW1iZXIpOwogfQogCiAvKiBQYXNzd29yZCBzdHJlbmd0aCBiZXR3ZWVuICgw LTEwMCkgKi8KLXN0YXRpYyBpbnQgZ2V0X3Bhc3N3b3JkX3N0cmVuZ3RoKHN0cmluZ19oYW5kbGUg cGFzc3dvcmQsIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgaW50IGdldF9wYXNzd29yZF9zdHJlbmd0 aChteXNxbF9zdHJpbmdfaGFuZGxlIHBhc3N3b3JkKQogewogICBpbnQgcG9saWN5PSAwOwotICAK LSAgaWYgKGxlbmd0aCA8IE1JTl9ESUNUSU9OQVJZX1dPUkRfTEVOR1RIKQotICAgIHJldHVybiBw b2xpY3k7CisgIGludCBuX2NoYXJzPSAwOworICBteXNxbF9zdHJpbmdfaXRlcmF0b3JfaGFuZGxl IGl0ZXI7CiAKLSAgaWYgKHZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeShwYXNzd29yZCwgbGVuZ3Ro LCBQQVNTV09SRF9QT0xJQ1lfTE9XKSkKKyAgaXRlciA9IG15c3FsX3N0cmluZ19nZXRfaXRlcmF0 b3IocGFzc3dvcmQpOworICB3aGlsZShteXNxbF9zdHJpbmdfaXRlcmF0b3JfbmV4dChpdGVyKSkK KyAgICBuX2NoYXJzKys7CisgIAorICBteXNxbF9zdHJpbmdfaXRlcmF0b3JfZnJlZShpdGVyKTsK KyAgaWYgKG5fY2hhcnMgPCBNSU5fRElDVElPTkFSWV9XT1JEX0xFTkdUSCkKKyAgICByZXR1cm4g KHBvbGljeSk7CisgIGlmIChuX2NoYXJzIDwgdmFsaWRhdGVfcGFzc3dvcmRfbGVuZ3RoKQorICAg IHJldHVybiAoUEFTU1dPUkRfU0NPUkUpOworICBlbHNlCiAgIHsKICAgICBwb2xpY3k9IFBBU1NX T1JEX1BPTElDWV9MT1c7Ci0gICAgaWYgKHZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeShwYXNzd29y ZCwgbGVuZ3RoLCBQQVNTV09SRF9QT0xJQ1lfTUVESVVNKSkKKyAgICBpZiAodmFsaWRhdGVfcGFz c3dvcmRfcG9saWN5KHBhc3N3b3JkLCBQQVNTV09SRF9QT0xJQ1lfTUVESVVNKSkKICAgICB7CiAg ICAgICBwb2xpY3k9IFBBU1NXT1JEX1BPTElDWV9NRURJVU07Ci0gICAgICBpZiAodmFsaWRhdGVf ZGljdGlvbmFyeV9jaGVjayhwYXNzd29yZCwgbGVuZ3RoKSkKKyAgICAgIGlmICh2YWxpZGF0ZV9k aWN0aW9uYXJ5X2NoZWNrKHBhc3N3b3JkKSkKICAgICAgICAgcG9saWN5PSBQQVNTV09SRF9QT0xJ Q1lfU1RST05HOwogICAgIH0KICAgfQotICByZXR1cm4gKHBvbGljeSAqIFBBU1NXT1JEX1NDT1JF ICsgUEFTU1dPUkRfU0NPUkUpOworICByZXR1cm4gKChwb2xpY3krMSkgKiBQQVNTV09SRF9TQ09S RSArIFBBU1NXT1JEX1NDT1JFKTsKIH0KIAogLyogUGx1Z2luIHR5cGUtc3BlY2lmaWMgZGVzY3Jp cHRvciAqLwpAQCAtMjMyLDIwICsyNTUsNiBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX3Bhc3N3b3Jk X2RlaW5pdCh2b2lkCiAgIHJldHVybiAoMCk7CiB9CiAKLS8qICAKLSAgV2hlbiBkaWN0aW9uYXJ5 IGZpbGUgaXMgY2hhbmdlZCBpdCByZWxvYWRzIHRoZSBuZXcgZmlsZSBpbgotICBzdGQ6OnNldAot Ki8gIAotc3RhdGljIHZvaWQgdmFsaWRhdGVfcGFzc3dvcmRfZGljdGlvbmFyeV9maWxlX3VwZGF0 ZShUSEQgKnRoZCwgc3RydWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0X215c3FsX3N5c192YXIgKnZhciwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGVzdCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq c2F2ZSkKLXsKLSAgKihjaGFyICoqKSBkZXN0PSAqKGNoYXIgKiopIHNhdmU7Ci0gIGZyZWVfZGlj dGlvbmFyeV9maWxlKCk7Ci0gIHJlYWRfZGljdGlvbmFyeV9maWxlKCk7Ci19Ci0KIC8qIFBsdWdp biBzeXN0ZW0gdmFyaWFibGVzICovCiAKIHN0YXRpYyBNWVNRTF9TWVNWQVJfSU5UKGxlbmd0aCwg dmFsaWRhdGVfcGFzc3dvcmRfbGVuZ3RoLApAQCAtMjY4LDE2ICsyNzcsMTYgQEAgc3RhdGljIE1Z U1FMX1NZU1ZBUl9JTlQoc3BlY2lhbF9jaGFyX2NvdQogICAicGFzc3dvcmQgdmFsaWRhdGUgc3Bl Y2lhbCB0byBlbnN1cmUgbWluaW11bSBzcGVjaWFsIGNoYXJhY3RlciBpbiBwYXNzd29yZCIsCiAg IE5VTEwsIE5VTEwsIDEsIDAsIDAsIDApOwogCi1zdGF0aWMgTVlTUUxfU1lTVkFSX0lOVChwb2xp Y3lfbnVtYmVyLCB2YWxpZGF0ZV9wYXNzd29yZF9wb2xpY3lfbnVtYmVyLAorc3RhdGljIE1ZU1FM X1NZU1ZBUl9FTlVNKHBvbGljeV9udW1iZXIsIHZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeV9udW1i ZXIsCiAgIFBMVUdJTl9WQVJfUlFDTURBUkcsCiAgICJwYXNzd29yZF92YWxpZGF0ZV9wb2xpY3kg Y2hvb3NlbiBwb2xpY3kgdG8gdmFsaWRhdGUgcGFzc3dvcmQiCi0gICJwb3NzaWJsZSB2YWx1ZXMg YXJlIExPVz0xLCBNRURJVU09MiAoZGVmYXVsdCksIEhJR0g9MyIsCi0gIE5VTEwsIE5VTEwsIDIs IDEsIDMsIDAgKTsKKyAgInBvc3NpYmxlIHZhbHVlcyBhcmUgTE9XIE1FRElVTSAoZGVmYXVsdCks IFNUUk9ORyIsCisgIE5VTEwsIE5VTEwsIFBBU1NXT1JEX1BPTElDWV9NRURJVU0sICZwYXNzd29y ZF9wb2xpY3lfdHlwZWxpYl90KTsKIAogc3RhdGljIE1ZU1FMX1NZU1ZBUl9TVFIoZGljdGlvbmFy eV9maWxlLCB2YWxpZGF0ZV9wYXNzd29yZF9kaWN0aW9uYXJ5X2ZpbGUsCi0gIFBMVUdJTl9WQVJf UlFDTURBUkcgfCBQTFVHSU5fVkFSX01FTUFMTE9DLAorICBQTFVHSU5fVkFSX1JFQURPTkxZLAog ICAicGFzc3dvcmRfdmFsaWRhdGVfZGljdGlvbmFyeSBmaWxlIHRvIGJlIGxvYWRlZCBhbmQgY2hl Y2sgZm9yIHBhc3N3b3JkIiwKLSAgTlVMTCwgdmFsaWRhdGVfcGFzc3dvcmRfZGljdGlvbmFyeV9m aWxlX3VwZGF0ZSwgTlVMTCk7CisgIE5VTEwsIE5VTEwsIE5VTEwpOwogCiBzdGF0aWMgc3RydWN0 IHN0X215c3FsX3N5c192YXIqIHZhbGlkYXRlX3Bhc3N3b3JkX3N5c3RlbV92YXJpYWJsZXNbXT0g ewogICBNWVNRTF9TWVNWQVIobGVuZ3RoKSwKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvQ01ha2VM aXN0cy50eHQnCi0tLSBhL3NxbC9DTWFrZUxpc3RzLnR4dAkyMDEyLTA0LTAyIDE0OjMxOjA3ICsw MDAwCisrKyBiL3NxbC9DTWFrZUxpc3RzLnR4dAkyMDEyLTA1LTE4IDA2OjMxOjI2ICswMDAwCkBA IC0xMTMsNiArMTEzLDcgQEAgU0VUKFNRTF9TSEFSRURfU09VUkNFUwogICBzcF9wY29udGV4dC5j YyAKICAgc3BfcmNvbnRleHQuY2MKICAgc3BhdGlhbC5jYworICBzdHJpbmdfc2VydmljZS5jYwog ICBzcWxfYWNsLmNjCiAgIHNxbF9hZG1pbi5jYwogICBzcWxfYWxsb2NfZXJyb3JfaGFuZGxlci5j YwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9pdGVtX3N0cmZ1bmMuY2MnCi0tLSBhL3NxbC9pdGVt X3N0cmZ1bmMuY2MJMjAxMi0wNS0xNCAxMToxODoxMyArMDAwMAorKysgYi9zcWwvaXRlbV9zdHJm dW5jLmNjCTIwMTItMDUtMTggMDY6MzE6MjYgKzAwMDAKQEAgLTE5MzgsNyArMTkzOCwxMiBAQCBj aGFyICpJdGVtX2Z1bmNfcGFzc3dvcmQ6OmFsbG9jKFRIRCAqdGhkCiB7CiAgIGNoYXIgKmJ1ZmY9 IChjaGFyICopIHRoZC0+YWxsb2MoU0NSQU1CTEVEX1BBU1NXT1JEX0NIQVJfTEVOR1RIKzEpOwog ICBpZiAoYnVmZikKKyAgeworICAgIFN0cmluZyAqcGFzc3dvcmRfc3RyPSBuZXcgKHRoZC0+bWVt X3Jvb3QpU3RyaW5nKHBhc3N3b3JkLCB0aGQtPnZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJfc2V0X2NsaWVudCk7 CisgICAgY2hlY2tfcGFzc3dvcmRfcG9saWN5KHBhc3N3b3JkX3N0cik7CiAgICAgbXlfbWFrZV9z Y3JhbWJsZWRfcGFzc3dvcmQoYnVmZiwgcGFzc3dvcmQsIHBhc3NfbGVuKTsKKyAgfQogICByZXR1 cm4gYnVmZjsKIH0KIApAQCAtMTk2Myw3ICsxOTY4LDEyIEBAIGNoYXIgKkl0ZW1fZnVuY19vbGRf cGFzc3dvcmQ6OmFsbG9jKFRIRAogewogICBjaGFyICpidWZmPSAoY2hhciAqKSB0aGQtPmFsbG9j KFNDUkFNQkxFRF9QQVNTV09SRF9DSEFSX0xFTkdUSF8zMjMrMSk7CiAgIGlmIChidWZmKQorICB7 CisgICAgU3RyaW5nICpwYXNzd29yZF9zdHI9IG5ldyAodGhkLT5tZW1fcm9vdClTdHJpbmcocGFz c3dvcmQsIHRoZC0+dmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rlcl9zZXRfY2xpZW50KTsKKyAgICBjaGVja19wYXNz d29yZF9wb2xpY3kocGFzc3dvcmRfc3RyKTsKICAgICBteV9tYWtlX3NjcmFtYmxlZF9wYXNzd29y ZF8zMjMoYnVmZiwgcGFzc3dvcmQsIHBhc3NfbGVuKTsKKyAgfQogICByZXR1cm4gYnVmZjsKIH0K IAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zaGFyZS9lcnJtc2ctdXRmOC50eHQnCi0tLSBhL3Nx bC9zaGFyZS9lcnJtc2ctdXRmOC50eHQJMjAxMi0wNS0xNCAxMToxODoxMyArMDAwMAorKysgYi9z cWwvc2hhcmUvZXJybXNnLXV0ZjgudHh0CTIwMTItMDUtMTggMDY6MzE6MjYgKzAwMDAKQEAgLTY3 NTQsNyArNjc1NCw3IEBAIEVSX01UU19SRVNFVF9XT1JLRVJTCiAgIGVuZyAiQ2Fubm90IGNsZWFu IHVwIHdvcmtlciBpbmZvIHRhYmxlcy4gQWRkaXRpb25hbCBlcnJvciBtZXNzYWdlcyBjYW4gYmUg Zm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZy4iCiAKIEVSX05PVF9WQUxJRF9QQVNTV09SRAot ICBlbmcgIllvdXIgcGFzc3dvcmQgZG9lcyBub3Qgc2F0aXNmeSB0aGUgY3VycmVudCBwb2xpY3kg cmVxdWlyZW1lbnRzICclcyciCisgIGVuZyAiWW91ciBwYXNzd29yZCBkb2VzIG5vdCBzYXRpc2Z5 IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVudHMgIgogIwogIyAgRW5kIG9mIDUuNiBlcnJv ciBtZXNzYWdlcy4KICMKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc3FsX2FjbC5jYycKLS0tIGEv c3FsL3NxbF9hY2wuY2MJMjAxMi0wNS0xNCAxMToxODoxMyArMDAwMAorKysgYi9zcWwvc3FsX2Fj bC5jYwkyMDEyLTA1LTE4IDA2OjMxOjI2ICswMDAwCkBAIC0xNzYsNyArMTc2LDcgQEAgY29uc3Qg VEFCTEVfRklFTERfREVGCiBzdGF0aWMgTEVYX1NUUklORyBuYXRpdmVfcGFzc3dvcmRfcGx1Z2lu X25hbWU9IHsKICAgQ19TVFJJTkdfV0lUSF9MRU4oIm15c3FsX25hdGl2ZV9wYXNzd29yZCIpCiB9 OwotICAKKwogc3RhdGljIExFWF9TVFJJTkcgb2xkX3Bhc3N3b3JkX3BsdWdpbl9uYW1lPSB7CiAg IENfU1RSSU5HX1dJVEhfTEVOKCJteXNxbF9vbGRfcGFzc3dvcmQiKQogfTsKQEAgLTk5MjYsNyAr OTkyNiw3IEBAIGludCBjaGVja19wYXNzd29yZF9zdHJlbmd0aChTdHJpbmcgKnBhc3MKICAgICBz dF9teXNxbF92YWxpZGF0ZV9wYXNzd29yZCAqcGFzc3dvcmRfc3RyZW5ndGg9CiAgICAgICAgICAg ICAgICAgICAgICAgKHN0X215c3FsX3ZhbGlkYXRlX3Bhc3N3b3JkICopIHBsdWdpbl9kZWNsKHBs dWdpbiktPmluZm87CiAKLSAgICByZXM9IHBhc3N3b3JkX3N0cmVuZ3RoLT5nZXRfcGFzc3dvcmRf c3RyZW5ndGgocGFzc3dvcmQsIHBhc3N3b3JkLT5sZW5ndGgoKSk7CisgICAgcmVzPSBwYXNzd29y ZF9zdHJlbmd0aC0+Z2V0X3Bhc3N3b3JkX3N0cmVuZ3RoKHBhc3N3b3JkKTsKICAgICBwbHVnaW5f dW5sb2NrKDAsIHBsdWdpbik7CiAgIH0KICAgcmV0dXJuKHJlcyk7CkBAIC05OTQyLDEwMyArOTk0 Miw5IEBAIHZvaWQgY2hlY2tfcGFzc3dvcmRfcG9saWN5KFN0cmluZyAqcGFzc3cKICAgICBzdF9t eXNxbF92YWxpZGF0ZV9wYXNzd29yZCAqcGFzc3dvcmRfdmFsaWRhdGU9CiAgICAgICAgICAgICAg ICAgICAgICAgKHN0X215c3FsX3ZhbGlkYXRlX3Bhc3N3b3JkICopIHBsdWdpbl9kZWNsKHBsdWdp biktPmluZm87CiAKLSAgICBpZiAoIXBhc3N3b3JkX3ZhbGlkYXRlLT52YWxpZGF0ZV9wYXNzd29y ZChwYXNzd29yZCwgcGFzc3dvcmQtPmxlbmd0aCgpKSkKLSAgICAgIG15X2Vycm9yKEVSX05PVF9W QUxJRF9QQVNTV09SRCwgTVlGKDApLCBwYXNzd29yZC0+cHRyKCkpOwotICAgIHBsdWdpbl91bmxv Y2soMCwgcGx1Z2luKTsKLSAgfQotfQorICAgIGlmICghcGFzc3dvcmRfdmFsaWRhdGUtPnZhbGlk YXRlX3Bhc3N3b3JkKHBhc3N3b3JkKSkKKyAgICAgIG15X2Vycm9yKEVSX05PVF9WQUxJRF9QQVNT V09SRCwgTVlGKDApKTsKIAotLyogIAotICBUaGlzIGlzIHBsdWdpbiBzZXJ2aWNlIGZ1bmN0aW9u IHdoaWNoIHJldHVybnMgdGhlIGJlZ2lubmluZyBvZiB0aGUKLSAgbXlzcWwgU3RyaW5nLgotKi8K LWV4dGVybiAiQyIKLWNvbnN0IGNoYXIgKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfYmVnKG15c3Fs X3N0cmluZ19wdHIgc3RyaW5nX3B0cikKLXsKLSAgU3RyaW5nICpzdHI9IChTdHJpbmcgKikgc3Ry aW5nX3B0cjsKLSAgcmV0dXJuIHN0ci0+cHRyKCk7Ci19Ci0KLS8qIFRoaXMgaXMgcGx1Z2luIHNl cnZpY2UgZnVuY3Rpb24gd2hpY2ggZW5kIG9mIHRoZSBteXNxbCBTdHJpbmcgKi8KLWV4dGVybiAi QyIKLWNvbnN0IGNoYXIgKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfZW5kKG15c3FsX3N0cmluZ19w dHIgc3RyaW5nX3B0cikKLXsKLSAgU3RyaW5nICpzdHI9IChTdHJpbmcgKikgc3RyaW5nX3B0cjsK LSAgcmV0dXJuIChzdHItPnB0cigpICsgc3RyLT5sZW5ndGgoKSk7Ci19Ci0KLS8qICAKLSAgVGhp cyBpcyBwbHVnaW4gc2VydmljZSBmdW5jdGlvbiB3aGljaCB0ZWxscyB3ZWF0aGVyIHRoZSBjaGFy YWN0ZXIKLSAgaXMgYSB1cHBlcmNhc2UgY2hhcmFjdGVyIG9yIG5vdCwgZm9yIGNsaWVudCBjaGFy YWN0ZXIgc2V0Ci0qLwotZXh0ZXJuICJDIgotaW50IG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXN1 cHBlcihpbnQgY2hhcl90eXBlKQotewotICByZXR1cm4gKGNoYXJfdHlwZSAmIF9NWV9VKTsKLX0K LQotLyogIAotICBUaGlzIGlzIHBsdWdpbiBzZXJ2aWNlIGZ1bmN0aW9uIHdoaWNoIHRlbGxzIHdl YXRoZXIgdGhlIGNoYXJhY3RlcgotICBpcyBhIGxvd2VyY2FzZSBjaGFyYWN0ZXIgb3Igbm90LCBm b3IgY2xpZW50IGNoYXJhY3RlciBzZXQKLSovCi1leHRlcm4gIkMiCi1pbnQgbXlzcWxfc3RyaW5n X2NoYXJhY3Rlcl9pc2xvd2VyKGludCBjaGFyX3R5cGUpCi17Ci0gIHJldHVybiAoY2hhcl90eXBl ICYgX01ZX0wpOwotfQotCi0vKiAgCi0gIFRoaXMgaXMgcGx1Z2luIHNlcnZpY2UgZnVuY3Rpb24g d2hpY2ggdGVsbHMgd2VhdGhlciB0aGUgY2hhcmFjdGVyCi0gIGlzIGEgZGlnaXQgb3Igbm90LCBm b3IgY2xpZW50IGNoYXJhY3RlciBzZXQKLSovCi1leHRlcm4gIkMiCi1pbnQgbXlzcWxfc3RyaW5n X2NoYXJhY3Rlcl9pc2RpZ2l0KGludCBjaGFyX3R5cGUpCi17Ci0gIHJldHVybiAoY2hhcl90eXBl ICYgX01ZX05NUik7Ci19Ci0KLS8qICAKLSAgVGhpcyBpcyBwbHVnaW4gc2VydmljZSBmdW5jdGlv biB3aGljaCBldmFsdWF0ZSB0aGUgY3R5cGUgYW5kCi0gIHJldHVybnMgdGhlIGNoYXJhY3RlciBs ZW5ndGgsIGZvciBjbGllbnQgY2hhcmFjdGVyIHNldC4KLSovCi1leHRlcm4gIkMiCi1pbnQgbXlz cWxfc3RyaW5nX2NoYXJhY3Rlcl9jdHlwZShteXNxbF9zdHJpbmdfcHRyIHN0cmluZ19wdHIsIGlu dCAqY2hhcl90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqY3VycmVudF9wdHIpCi17Ci0gIFN0cmluZyAqc3RyPSAoU3RyaW5nICopIHN0cmluZ19wdHI7 Ci0gIGNvbnN0IENIQVJTRVRfSU5GTyAqY3M9IHN0ci0+Y2hhcnNldCgpOwotICBjaGFyICplbmQ9 IChjaGFyKikgc3RyLT5wdHIoKSArIHN0ci0+bGVuZ3RoKCk7Ci0gIHJldHVybiAoY3MtPmNzZXQt PmN0eXBlKGNzLCBjaGFyX3R5cGUsICh1Y2hhciopIGN1cnJlbnRfcHRyLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAodWNoYXIqKSBlbmQpKTsKLX0KLQotLyogIAotICBUaGlzIGZ1bmN0aW9u IHByb3ZpZGUgcGx1Z2luIHNlcnZpY2UgdG8gY29udmVydCBhIFN0cmluZyBpbnRvCi0gIGxvd2Vy IGNhc2UuIENvbnZlcnNpb24gZGVwZW5kcyBvbiB0aGUgY2xpZW50IGNoYXJhY3RlciBzZXQgaW5m bwotKi8KLWV4dGVybiAiQyIKLWNvbnN0IGNoYXIgKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY2Fz ZWRuKG15c3FsX3N0cmluZ19wdHIgc3RyaW5nX3B0cikKLXsKLSAgU3RyaW5nICpzdHI9IChTdHJp bmcgKikgc3RyaW5nX3B0cjsKLSAgU3RyaW5nIHRlbXBfc3RyOwotICBjb25zdCBDSEFSU0VUX0lO Rk8gKmNzPSBzdHItPmNoYXJzZXQoKTsKLSAKLSAgaWYgKGNzLT5jYXNlZG5fbXVsdGlwbHkgPT0g MSkKLSAgewotICAgIHVpbnQgbGVuOwotICAgIGxlbj0gY3MtPmNzZXQtPmNhc2VkbihjcywgKGNo YXIqKSBzdHItPnB0cigpLCBzdHItPmxlbmd0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2hhciopIHN0ci0+cHRyKCksIHN0ci0+bGVuZ3RoKCkpOwotICAgIHN0ci0+bGVuZ3RoKGxl bik7Ci0gIH0KLSAgZWxzZQotICB7Ci0gICAgdWludCBsZW49IHN0ci0+bGVuZ3RoKCkgKiBjcy0+ Y2FzZWRuX211bHRpcGx5OwotICAgIHRlbXBfc3RyLmFsbG9jKGxlbik7Ci0gICAgdGVtcF9zdHIu c2V0X2NoYXJzZXQoY3MpOwotICAgIGxlbj0gY3MtPmNzZXQtPmNhc2VkbihjcywgKGNoYXIqKSBz dHItPnB0cigpLCBzdHItPmxlbmd0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hh ciopIHRlbXBfc3RyLnB0cigpLCBsZW4pOwotICAgIHRlbXBfc3RyLmxlbmd0aChsZW4pOwotICAg IHN0cj0gJnRlbXBfc3RyOworICAgIHBsdWdpbl91bmxvY2soMCwgcGx1Z2luKTsKICAgfQotICBy ZXR1cm4gKHN0ci0+cHRyKCkpOwogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfYWNsLmgn Ci0tLSBhL3NxbC9zcWxfYWNsLmgJMjAxMi0wNC0zMCAwNjozNjowMSArMDAwMAorKysgYi9zcWwv c3FsX2FjbC5oCTIwMTItMDUtMTggMDY6MzE6MjYgKzAwMDAKQEAgLTI1Myw3ICsyNTMsNiBAQCBp bnQgZmlsbF9zY2hlbWFfY29sdW1uX3ByaXZpbGVnZXMoVEhEICp0CiBpbnQgd2lsZF9jYXNlX2Nv bXBhcmUoQ0hBUlNFVF9JTkZPICpjcywgY29uc3QgY2hhciAqc3RyLGNvbnN0IGNoYXIgKndpbGRz dHIpOwogaW50IGNoZWNrX3Bhc3N3b3JkX3N0cmVuZ3RoKFN0cmluZyAqcGFzc3dvcmQpOwogdm9p ZCBjaGVja19wYXNzd29yZF9wb2xpY3koU3RyaW5nICpwYXNzd29yZCk7Ci0KICNpZmRlZiBOT19F TUJFRERFRF9BQ0NFU1NfQ0hFQ0tTCiAjZGVmaW5lIGNoZWNrX2dyYW50KEEsQixDLEQsRSxGKSAw CiAjZGVmaW5lIGNoZWNrX2dyYW50X2RiKEEsQikgMAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9z cWxfcGx1Z2luX3NlcnZpY2VzLmgnCi0tLSBhL3NxbC9zcWxfcGx1Z2luX3NlcnZpY2VzLmgJMjAx Mi0wNS0xNCAxMToxODoxMyArMDAwMAorKysgYi9zcWwvc3FsX3BsdWdpbl9zZXJ2aWNlcy5oCTIw MTItMDUtMTggMDY6MzE6MjYgKzAwMDAKQEAgLTUxLDEzICs1MSwxNSBAQCBzdGF0aWMgc3RydWN0 IG15X3BsdWdpbl9sb2dfc2VydmljZSBteV9wCiB9OwogCiBzdGF0aWMgc3RydWN0IG15c3FsX3N0 cmluZ19zZXJ2aWNlX3N0IG15c3FsX3N0cmluZ19oYW5kbGVyPSB7Ci0gIG15c3FsX3N0cmluZ19j aGFyYWN0ZXJfYmVnLAotICBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2VuZCwKLSAgbXlzcWxfc3Ry aW5nX2NoYXJhY3Rlcl9jYXNlZG4sCi0gIG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY3R5cGUsCi0g IG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXN1cHBlciwKLSAgbXlzcWxfc3RyaW5nX2NoYXJhY3Rl cl9pc2xvd2VyLAotICBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzZGlnaXQsCisgIG15c3FsX3N0 cmluZ19jb252ZXJ0X3RvX2NoYXJfcHRyLAorICBteXNxbF9zdHJpbmdfZ2V0X2l0ZXJhdG9yLAor ICBteXNxbF9zdHJpbmdfaXRlcmF0b3JfbmV4dCwKKyAgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lz dXBwZXIsCisgIG15c3FsX3N0cmluZ19pdGVyYXRvcl9pc2xvd2VyLAorICBteXNxbF9zdHJpbmdf aXRlcmF0b3JfaXNkaWdpdCwKKyAgbXlzcWxfc3RyaW5nX3RvX2xvd2VyY2FzZSwKKyAgbXlzcWxf c3RyaW5nX2ZyZWUsCisgIG15c3FsX3N0cmluZ19pdGVyYXRvcl9mcmVlLAogfTsKIAogc3RhdGlj IHN0cnVjdCBzdF9zZXJ2aWNlX3JlZiBsaXN0X29mX3NlcnZpY2VzW109Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3FsL3NxbF95YWNjLnl5JwotLS0gYS9zcWwvc3FsX3lhY2MueXkJMjAxMi0wNC0zMCAw NjozNjowMSArMDAwMAorKysgYi9zcWwvc3FsX3lhY2MueXkJMjAxMi0wNS0xOCAwNjozMToyNiAr MDAwMApAQCAtMTQxOTksOSArMTQxOTksNiBAQCB0ZXh0X29yX3Bhc3N3b3JkOgogICAgICAgICAg IFRFWFRfU1RSSU5HIHsgJCQ9JDEuc3RyO30KICAgICAgICAgfCBQQVNTV09SRCAnKCcgVEVYVF9T VFJJTkcgJyknCiAgICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nICpwYXNzd29yZCA9IG5l dyAoWVlUSEQtPm1lbV9yb290KSBTdHJpbmcoKGNvbnN0IGNoYXIqKSQzLnN0ciwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlZVEhELT52YXJpYWJsZXMuY2hhcmFjdGVyX3Nl dF9jbGllbnQpOwotICAgICAgICAgICAgY2hlY2tfcGFzc3dvcmRfcG9saWN5KHBhc3N3b3JkKTsK ICAgICAgICAgICAgICQkPSAkMy5sZW5ndGggPyBZWVRIRC0+dmFyaWFibGVzLm9sZF9wYXNzd29y ZHMgPwogICAgICAgICAgICAgICBJdGVtX2Z1bmNfb2xkX3Bhc3N3b3JkOjphbGxvYyhZWVRIRCwg JDMuc3RyLCAkMy5sZW5ndGgpIDoKICAgICAgICAgICAgICAgSXRlbV9mdW5jX3Bhc3N3b3JkOjph bGxvYyhZWVRIRCwgJDMuc3RyLCAkMy5sZW5ndGgpIDoKCj09PSBhZGRlZCBmaWxlICdzcWwvc3Ry aW5nX3NlcnZpY2UuY2MnCi0tLSBhL3NxbC9zdHJpbmdfc2VydmljZS5jYwkxOTcwLTAxLTAxIDAw OjAwOjAwICswMDAwCisrKyBiL3NxbC9zdHJpbmdfc2VydmljZS5jYwkyMDEyLTA1LTE4IDA2OjMx OjI2ICswMDAwCkBAIC0wLDAgKzEsMTU2IEBACisvKiBDb3B5cmlnaHQgwqkgMjAxMiwgT3JhY2xl IGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgIFVTQSAqLworCisKKy8qICAKKyAgVGhpcyBm aWxlIHByb3ZpZGUgbXlzcWxfc3RyaW5nIHNlcnZpY2UgdG8gcGx1Z2lucy4KKyAgb3BlcmF0aW9u cyBvbiBteXNxbF9zdHJpbmcgY2FuIGJlIHBlcmZvcm1lZCBieSBwbHVnaW5zIHZpYSB0aGVzZSBz ZXJ2aWNlCisgIGZ1bmN0aW9ucy4KKyovCisKKyNpbmNsdWRlIDxzdHJpbmdfc2VydmljZS5oPgor I2luY2x1ZGUgPG15X3N5cy5oPgorCisvKiAgCisgIFRoaXMgc2VydmljZSBmdW5jdGlvbiBjb252 ZXJ0cyB0aGUgbXlzcWxfc3RyaW5nIHRvIHRoZSBjaGFyYWN0ZXIgc2V0CisgIHNwZWNpZmllZCBi eSBjaGFyc2V0X25hbWUgcGFyYW1ldGVyLgorKi8KK2V4dGVybiAiQyIKK2ludCBteXNxbF9zdHJp bmdfY29udmVydF90b19jaGFyX3B0cihteXNxbF9zdHJpbmdfaGFuZGxlIHN0cmluZ19oYW5kbGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hhcnNl dF9uYW1lLCBjaGFyICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50ICplcnJvcikKK3sKKyAgU3RyaW5nICpzdHI9IChTdHJpbmcgKikgc3RyaW5nX2hhbmRs ZTsKKyAgaW50IGxlbj0gKGludClteV9jb252ZXJ0KGJ1ZmZlciwgMTAwLCAmbXlfY2hhcnNldF91 dGY4X2dlbmVyYWxfY2ksIHN0ci0+cHRyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHItPmxlbmd0aCgpLCBzdHItPmNoYXJzZXQoKSwgKHVpbnQqKSBlcnJvcik7CisgIHJldHVybiAo bGVuKTsKK30KKworLyogIAorICBUaGlzIHNlcnZpY2UgZnVuY3Rpb24gZGVhbGxvY2F0ZXMgdGhl IG15c3FsX3N0cmluZ19oYW5kbGUgYWxsb2NhdGVkIG9uCisgIHNlcnZlciBhbmQgdXNlZCBpbiBw bHVnaW5zLgorKi8KK2V4dGVybiAiQyIKK3ZvaWQgbXlzcWxfc3RyaW5nX2ZyZWUobXlzcWxfc3Ry aW5nX2hhbmRsZSBzdHJpbmdfaGFuZGxlKQoreworICBteV9mcmVlKHN0cmluZ19oYW5kbGUpOwor fQorCisvKiAgCisgIFRoaXMgc2VydmljZSBmdW5jdGlvbiBkZWFsbG9jYXRlcyB0aGUgbXlzcWxf c3RyaW5nX2l0ZXJhdG9yX2hhbmRsZQorICBhbGxvY2F0ZWQgb24gc2VydmVyIGFuZCB1c2VkIGlu IHBsdWdpbnMuCisqLworZXh0ZXJuICJDIgordm9pZCBteXNxbF9zdHJpbmdfaXRlcmF0b3JfZnJl ZShteXNxbF9zdHJpbmdfaXRlcmF0b3JfaGFuZGxlIGl0ZXJhdG9yX2hhbmRsZSkKK3sKKyAgbXlf ZnJlZShpdGVyYXRvcl9oYW5kbGUpOworfQorCisvKiBUaGlzIHNlcnZpY2UgZnVuY3Rpb24gYWxs b2NhdGUgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSBhbmQgcmV0dXJuIGl0ICovCitleHRl cm4gIkMiCitteXNxbF9zdHJpbmdfaXRlcmF0b3JfaGFuZGxlIG15c3FsX3N0cmluZ19nZXRfaXRl cmF0b3IobXlzcWxfc3RyaW5nX2hhbmRsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19oYW5kbGUpCit7CisgIFN0cmluZyAqc3Ry PSAoU3RyaW5nICopIHN0cmluZ19oYW5kbGU7CisgIHN0cmluZ19pdGVyYXRvciAqaXRlcmF0b3I9 IChzdHJpbmdfaXRlcmF0b3IgKikobXlfbWFsbG9jKHNpemVvZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfaXRlcmF0b3IgKiksIE1ZRigw KSkpOworICBpdGVyYXRvci0+aXRlcmF0b3Jfc3RyPSBzdHI7CisgIGl0ZXJhdG9yLT5pdGVyYXRv cl9wdHI9IHN0ci0+cHRyKCk7CisgIGl0ZXJhdG9yLT5jdHlwZT0gMDsKKyAgcmV0dXJuIChpdGVy YXRvcik7Cit9CisKKy8qIFByb3ZpZGUgc2VydmljZSB3aGljaCByZXR1cm5zIHRoZSBuZXh0IG15 c3FsX3N0cmluZ19pdGVyYXRvcl9oYW5kbGUgKi8KK2V4dGVybiAiQyIKK2ludCBteXNxbF9zdHJp bmdfaXRlcmF0b3JfbmV4dChteXNxbF9zdHJpbmdfaXRlcmF0b3JfaGFuZGxlIGl0ZXJhdG9yX2hh bmRsZSkKK3sKKyAgaW50IGNoYXJfbGVuLCBjaGFyX3R5cGU7CisgIHN0cmluZ19pdGVyYXRvciAq aXRlcmF0b3I9IChzdHJpbmdfaXRlcmF0b3IgKikgaXRlcmF0b3JfaGFuZGxlOworICBTdHJpbmcg KnN0cj0gaXRlcmF0b3ItPml0ZXJhdG9yX3N0cjsKKyAgY29uc3QgQ0hBUlNFVF9JTkZPICpjcz0g c3RyLT5jaGFyc2V0KCk7CisgIGNoYXIgKmVuZD0gKGNoYXIqKSBzdHItPnB0cigpICsgc3RyLT5s ZW5ndGgoKTsKKyAgaWYgKGl0ZXJhdG9yLT5pdGVyYXRvcl9wdHIgPT0gKGNvbnN0IGNoYXIqKSBl bmQpCisgICAgcmV0dXJuICgwKTsKKyAgY2hhcl9sZW49IChjcy0+Y3NldC0+Y3R5cGUoY3MsICZj aGFyX3R5cGUsICh1Y2hhciopIGl0ZXJhdG9yLT5pdGVyYXRvcl9wdHIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh1Y2hhciopIGVuZCkpOworICBpdGVyYXRvci0+Y3R5cGU9IGNoYXJf dHlwZTsKKyAgaXRlcmF0b3ItPml0ZXJhdG9yX3B0cis9IChjaGFyX2xlbiA+IDAgPyBjaGFyX2xl biA6IChjaGFyX2xlbiA8IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA/IC1jaGFyX2xlbiA6IDEpKTsKKyAgcmV0dXJuICgxKTsKK30KKwor LyogIAorICBQcm92aWRlIHNlcnZpY2Ugd2hpY2ggY2FsY3VsYXRlIHdlYXRoZXIgdGhlIGN1cnJl bnQgaXRlcmF0b3JfcHRyIHBvaW50cyB0bworICB1cHBlciBjYXNlIGNoYXJhY3RlciBvciBub3QK KyovCitleHRlcm4gIkMiCitpbnQgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lzdXBwZXIobXlzcWxf c3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSBpdGVyYXRvcl9oYW5kbGUpCit7CisgIHN0cmluZ19pdGVy YXRvciAqaXRlcmF0b3I9IChzdHJpbmdfaXRlcmF0b3IgKikgaXRlcmF0b3JfaGFuZGxlOworICBy ZXR1cm4gKGl0ZXJhdG9yLT5jdHlwZSAmIF9NWV9VKTsKK30KKworLyogIAorICBQcm92aWRlIHNl cnZpY2Ugd2hpY2ggY2FsY3VsYXRlIHdlYXRoZXIgdGhlIGN1cnJlbnQgaXRlcmF0b3JfcHRyIHBv aW50cyB0bworICBsb3dlciBjYXNlIGNoYXJhY3RlciBvciBub3QKKyovCitleHRlcm4gIkMiCitp bnQgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lzbG93ZXIobXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hh bmRsZSBpdGVyYXRvcl9oYW5kbGUpCit7CisgIHN0cmluZ19pdGVyYXRvciAqaXRlcmF0b3I9IChz dHJpbmdfaXRlcmF0b3IgKikgaXRlcmF0b3JfaGFuZGxlOworICByZXR1cm4gKGl0ZXJhdG9yLT5j dHlwZSAmIF9NWV9MKTsKK30KKworLyogIAorICBQcm92aWRlIHNlcnZpY2Ugd2hpY2ggY2FsY3Vs YXRlIHdlYXRoZXIgdGhlIGN1cnJlbnQgaXRlcmF0b3JfcHRyIHBvaW50cyB0bworICBkaWdpdCBv ciBub3QKKyovCitleHRlcm4gIkMiCitpbnQgbXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2lzZGlnaXQo bXlzcWxfc3RyaW5nX2l0ZXJhdG9yX2hhbmRsZSBpdGVyYXRvcl9oYW5kbGUpCit7CisgIHN0cmlu Z19pdGVyYXRvciAqaXRlcmF0b3I9IChzdHJpbmdfaXRlcmF0b3IgKikgaXRlcmF0b3JfaGFuZGxl OworICByZXR1cm4gKGl0ZXJhdG9yLT5jdHlwZSAmIF9NWV9OTVIpOworfQorCisvKiAgCisgIFRo aXMgZnVuY3Rpb24gcHJvdmlkZSBwbHVnaW4gc2VydmljZSB0byBjb252ZXJ0IGEgU3RyaW5nIHBv aW50ZWQgYnkgaGFuZGxlIHRvCisgIGxvd2VyIGNhc2UuIENvbnZlcnNpb24gZGVwZW5kcyBvbiB0 aGUgY2xpZW50IGNoYXJhY3RlciBzZXQgaW5mbworKi8KK2V4dGVybiAiQyIKK215c3FsX3N0cmlu Z19oYW5kbGUgbXlzcWxfc3RyaW5nX3RvX2xvd2VyY2FzZShteXNxbF9zdHJpbmdfaGFuZGxlIHN0 cmluZ19oYW5kbGUpCit7CisgIFN0cmluZyAqc3RyPSAoU3RyaW5nICopIHN0cmluZ19oYW5kbGU7 CisgIFN0cmluZyB0ZW1wX3N0cjsKKyAgY29uc3QgQ0hBUlNFVF9JTkZPICpjcz0gc3RyLT5jaGFy c2V0KCk7CisKKyAgaWYgKGNzLT5jYXNlZG5fbXVsdGlwbHkgPT0gMSkKKyAgeworICAgIHVpbnQg bGVuOworICAgIGxlbj0gY3MtPmNzZXQtPmNhc2VkbihjcywgKGNoYXIqKSBzdHItPnB0cigpLCBz dHItPmxlbmd0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopIHN0ci0+cHRy KCksIHN0ci0+bGVuZ3RoKCkpOworICAgIHN0ci0+bGVuZ3RoKGxlbik7CisgIH0KKyAgZWxzZQor ICB7CisgICAgdWludCBsZW49IHN0ci0+bGVuZ3RoKCkgKiBjcy0+Y2FzZWRuX211bHRpcGx5Owor ICAgIHRlbXBfc3RyLmFsbG9jKGxlbik7CisgICAgdGVtcF9zdHIuc2V0X2NoYXJzZXQoY3MpOwor ICAgIGxlbj0gY3MtPmNzZXQtPmNhc2VkbihjcywgKGNoYXIqKSBzdHItPnB0cigpLCBzdHItPmxl bmd0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopIHRlbXBfc3RyLnB0cigp LCBsZW4pOworICAgIHRlbXBfc3RyLmxlbmd0aChsZW4pOworICAgIHN0cj0gJnRlbXBfc3RyOwor ICB9CisgIHJldHVybiAoc3RyKTsKK30KCj09PSBhZGRlZCBmaWxlICdzcWwvc3RyaW5nX3NlcnZp Y2UuaCcKLS0tIGEvc3FsL3N0cmluZ19zZXJ2aWNlLmgJMTk3MC0wMS0wMSAwMDowMDowMCArMDAw MAorKysgYi9zcWwvc3RyaW5nX3NlcnZpY2UuaAkyMDEyLTA1LTE4IDA2OjMxOjI2ICswMDAwCkBA IC0wLDAgKzEsMjkgQEAKKy8qIENvcHlyaWdodCDCqSAyMDEyLCBPcmFjbGUgYW5kL29yIGl0cyBh ZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZS4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl CisgICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3Rv biwgTUEgMDIxMTAtMTMwMSAgVVNBICovCisKKyNpZm5kZWYgU1RSSU5HX1NFUlZJQ0VfSU5DTFVE RUQKKyNkZWZpbmUgU1RSSU5HX1NFUlZJQ0VfSU5DTFVERUQKKworI2luY2x1ZGUgPHNxbF9zdHJp bmcuaD4KKworLyogbXlzcWxfc3RyaW5nX2l0cmVyYXRvciBzdHJ1Y3R1cmUgdG8gcHJvdmlkZSBz ZXJ2aWNlIHRvIHBsdWdpbnMgKi8KK3N0cnVjdCBzdHJpbmdfaXRlcmF0b3IKK3sKKyAgU3RyaW5n ICppdGVyYXRvcl9zdHI7CisgIGNvbnN0IGNoYXIgKml0ZXJhdG9yX3B0cjsKKyAgaW50IGN0eXBl OworfTsKKworI2VuZGlmIC8qIFNUUklOR19TRVJWSUNFX0lOQ0xVREVEICovCgpObyBidW5kbGUg KHJlYXNvbjogdXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==