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: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 4.3.0-0.2 Date: Mon, 29 Jun 2026 12:23:32 GMT Message-ID: <178273581230.1.7521480350724808096.rpms-gcc-3daebbc6176a@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 3daebbc6176a0b10cf7c70fe42613e9594b39f44 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogM2RhZWJiYzYxNzZhMGIxMGNmN2M3MGZlNDI2MTNlOTU5 NGIzOWY0NApBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwNy0xMi0xMlQyMDozMzoxNyswMDowMApTdGF0cyAgOiArMjg5NS8tMTg0NTIg aW4gOTkgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1z L2djYy9jLzNkYWViYmM2MTc2YTBiMTBjZjdjNzBmZTQyNjEzZTk1OTRiMzlmNDQ/YnJhbmNoPXJo ZWwtZjQxLWJhc2UKCkxvZzoKNC4zLjAtMC4yCgotLS0KZGlmZiAtLWdpdCBhLy5jdnNpZ25vcmUg Yi8uY3ZzaWdub3JlCmluZGV4IGQ3NDI3MzUuLjYxNGE5NjIgMTAwNjQ0Ci0tLSBhLy5jdnNpZ25v cmUKKysrIGIvLmN2c2lnbm9yZQpAQCAtMSArMSBAQAotZ2NjLTQuMS4yLTIwMDcxMTI0LnRhci5i ejIKK2djYy00LjMuMC0yMDA3MTIxMi50YXIuYnoyCgpkaWZmIC0tZ2l0IGEvZ2NjNDEtYWRhLXBy MTgzMDIucGF0Y2ggYi9nY2M0MS1hZGEtcHIxODMwMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggOWU5OGI5Ny4uMDAwMDAwMAotLS0gYS9nY2M0MS1hZGEtcHIxODMwMi5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLS0tLSBnY2MvdGVzdHN1aXRlL2FkYS9h Y2F0cy9ydW5fYWxsLnNoCTI2IEFwciAyMDA0IDIxOjE1OjU0IC0wMDAwCTEuMTgKLSsrKyBnY2Mv dGVzdHN1aXRlL2FkYS9hY2F0cy9ydW5fYWxsLnNoCTE3IEZlYiAyMDA1IDE0OjI0OjQ5IC0wMDAw Ci1AQCAtMTEsOSArMTEsMTYgQEAKLSAKLSBnY2NmbGFncz0iLU8yIgotIGduYXRmbGFncz0iLWdu YXR3cyIKLSt0aW1lb3V0PTEyMAotIAotIHRhcmdldF9ydW4gKCkgewotKyAgc2ggLWMgIihzbGVl cCAkdGltZW91dDsga2lsbCBcJFwkKSAmCi0reD1cJCEKLSAkKgotK3M9XCQ/Ci0ra2lsbCBcJHgK LStleGl0IFwkcwotKyIKLSB9Ci0gCi0gIyBFbmQgb2YgY3VzdG9taXphdGlvbiBzZWN0aW9uLgoK ZGlmZiAtLWdpdCBhL2djYzQxLWFkYS10d2Vha3MucGF0Y2ggYi9nY2M0MS1hZGEtdHdlYWtzLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTJlZDY1Li4wMDAwMDAwCi0tLSBh L2djYzQxLWFkYS10d2Vha3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0y MDA0LTEwLTA0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCSogZ25hdF91 Z24udGV4aTogQWRkIDogYW5kIC4gdG8gZGlyZW50cnkuCi0JKiBnbmF0LXN0eWxlLnRleGk6IENo YW5nZSBkaXJjYXRlZ29yeSB0byBHTlUgQWRhIHRvb2xzLgotCi0yMDA1LTAyLTA4ICBKYWt1YiBK ZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCSogTWFrZWZpbGUuaW4gKGduYXRsaWItc2hh cmVkLWRlZmF1bHQpOiBEaXNhbGxvdyBkbG9wZW5pbmcgb2YKLQlsaWJnbmF0LnNvLgotCi0tLS0g Z2NjL2FkYS9nbmF0LXN0eWxlLnRleGkJKC4uLi9nY2MtNF8wLWJyYW5jaCkJKHJldmlzaW9uIDEw NzI2NikKLSsrKyBnY2MvYWRhL2duYXQtc3R5bGUudGV4aQkoLi4uL3JlZGhhdC9nY2MtNF8wLWJy YW5jaCkJKHJldmlzaW9uIDEwNzQxNCkKLUBAIC0yOCw3ICsyOCw3IEBACi0gQHNldGNoYXB0ZXJu ZXdwYWdlIG9kZAotIAotIAotLUBkaXJjYXRlZ29yeSBQcm9ncmFtbWluZwotK0BkaXJjYXRlZ29y eSBHTlUgQWRhIHRvb2xzCi0gQGRpcmVudHJ5Ci0gKiBnbmF0LXN0eWxlOiAoZ25hdC1zdHlsZSku ICAgICAgR05BVCBDb2RpbmcgU3R5bGUKLSBAZW5kIGRpcmVudHJ5Ci0tLS0gZ2NjL2FkYS9NYWtl ZmlsZS5pbgkoLi4uL2djYy00XzAtYnJhbmNoKQkocmV2aXNpb24gMTA3MjY2KQotKysrIGdjYy9h ZGEvTWFrZWZpbGUuaW4JKC4uLi9yZWRoYXQvZ2NjLTRfMC1icmFuY2gpCShyZXZpc2lvbiAxMDc0 MTQpCi1AQCAtMTMxNiw3ICsxMzE2LDcgQEAKLSAgIExJQlJBUllfVkVSU0lPTiA6PSAkKExJQl9W RVJTSU9OKQotIGVuZGlmCi0gCi0taWZlcSAoJChzdHJpcCAkKGZpbHRlci1vdXQgcG93ZXJwYyUg bGludXglLCQoYXJjaCkgJChvc3lzKSkpLCkKLStpZmVxICgkKHN0cmlwICQoZmlsdGVyLW91dCBw b3dlcnBjJSBwcGMlIGxpbnV4JSwkKGFyY2gpICQob3N5cykpKSwpCi0gICBMSUJHTkFUX1RBUkdF VF9QQUlSUyA9IFwKLSAgIGEtaW50bmFtLmFkczxhLWludG5hbS1saW51eC5hZHMgXAotICAgcy1p bm1hb3AuYWRiPHMtaW5tYW9wLXBvc2l4LmFkYiBcCi1AQCAtMTg2Miw3ICsxODYyLDcgQEAKLSAJ ICAgICBUSFJFQURfS0lORD0iJChUSFJFQURfS0lORCkiIFwKLSAgICAgICAgICAgICAgZ25hdGxp YgotIAkkKFJNKSBydHMvbGliZ25hKiQoc29leHQpCi0tCWNkIHJ0czsgLi4vLi4veGdjYyAtQi4u Ly4uLyAtc2hhcmVkICQoVEFSR0VUX0xJQkdDQzJfQ0ZMQUdTKSBcCi0rCWNkIHJ0czsgLi4vLi4v eGdjYyAtQi4uLy4uLyAtc2hhcmVkIC1XbCwteixub2Rsb3BlbiAkKFRBUkdFVF9MSUJHQ0MyX0NG TEFHUykgXAotIAkJLW8gbGliZ25hdCQoaHlwaGVuKSQoTElCUkFSWV9WRVJTSU9OKSQoc29leHQp IFwKLSAJCSQoR05BVFJUTF9OT05UQVNLSU5HX09CSlMpICQoTElCR05BVF9PQkpTKSBcCi0gCQkk KFNPX09QVFMpbGliZ25hdCQoaHlwaGVuKSQoTElCUkFSWV9WRVJTSU9OKSQoc29leHQpIFwKLS0t LSBnY2MvYWRhL2duYXRfdWduLnRleGkJKC4uLi9nY2MtNF8wLWJyYW5jaCkJKHJldmlzaW9uIDEw NzI2NikKLSsrKyBnY2MvYWRhL2duYXRfdWduLnRleGkJKC4uLi9yZWRoYXQvZ2NjLTRfMC1icmFu Y2gpCShyZXZpc2lvbiAxMDc0MTQpCi1AQCAtMTAxLDcgKzEwMSw3IEBACi0gQHNldHRpdGxlIEB2 YWx1ZXtFRElUSU9OfSBVc2VyJ3MgR3VpZGUgQHZhbHVle1BMQVRGT1JNfQotIEBkaXJjYXRlZ29y eSBHTlUgQWRhIHRvb2xzCi0gQGRpcmVudHJ5Ci0tKiBAdmFsdWV7RURJVElPTn0gVXNlcidzIEd1 aWRlIChAdmFsdWV7RklMRX0pIEB2YWx1ZXtQTEFURk9STX0KLSsqIEB2YWx1ZXtFRElUSU9OfSBV c2VyJ3MgR3VpZGU6IChAdmFsdWV7RklMRX0pLiBVc2VyJ3MgR3VpZGUgZm9yIEdOVSBBZGEgVG9v bHMuCi0gQGVuZCBkaXJlbnRyeQotIAotIEBpbmNsdWRlIGdjYy1jb21tb24udGV4aQotLS0tIGdj Yy9hZGEvbGluay5jCSguLi4vZ2NjLTRfMC1icmFuY2gpCShyZXZpc2lvbiAxMDcyNjYpCi0rKysg Z2NjL2FkYS9saW5rLmMJKC4uLi9yZWRoYXQvZ2NjLTRfMC1icmFuY2gpCShyZXZpc2lvbiAxMDc0 MTQpCi1AQCAtMTY0LDkgKzE2NCw5IEBACi0gCi0gI2VsaWYgZGVmaW5lZCAobGludXgpCi0gY29u c3QgY2hhciAqX19nbmF0X29iamVjdF9maWxlX29wdGlvbiA9ICIiOwotLWNvbnN0IGNoYXIgKl9f Z25hdF9ydW5fcGF0aF9vcHRpb24gPSAiLVdsLC1ycGF0aCwiOwotLWNoYXIgX19nbmF0X3NoYXJl ZF9saWJnbmF0X2RlZmF1bHQgPSBTVEFUSUM7Ci0taW50IF9fZ25hdF9saW5rX21heCA9IDgxOTI7 Ci0rY29uc3QgY2hhciAqX19nbmF0X3J1bl9wYXRoX29wdGlvbiA9ICIiOwotK2NoYXIgX19nbmF0 X3NoYXJlZF9saWJnbmF0X2RlZmF1bHQgPSBTSEFSRUQ7Ci0raW50IF9fZ25hdF9saW5rX21heCA9 IDEzMTA3MjsKLSB1bnNpZ25lZCBjaGFyIF9fZ25hdF9vYmpsaXN0X2ZpbGVfc3VwcG9ydGVkID0g MTsKLSB1bnNpZ25lZCBjaGFyIF9fZ25hdF91c2luZ19nbnVfbGlua2VyID0gMTsKLSBjb25zdCBj aGFyICpfX2duYXRfb2JqZWN0X2xpYnJhcnlfZXh0ZW5zaW9uID0gIi5hIjsKCmRpZmYgLS1naXQg YS9nY2M0MS1hcnRpZmljaWFsLWF0dHJpYi5wYXRjaCBiL2djYzQxLWFydGlmaWNpYWwtYXR0cmli LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWIxZGQ4Li4wMDAwMDAwCi0t LSBhL2djYzQxLWFydGlmaWNpYWwtYXR0cmliLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDE5 OCArMCwwIEBACi0yMDA3LTA5LTIzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4K LQotCSogdHJlZS5oIChibG9ja19ub25hcnRpZmljaWFsX2xvY2F0aW9uKTogTmV3IHByb3RvdHlw ZS4KLQkqIHRyZWUuYyAoYmxvY2tfbm9uYXJ0aWZpY2lhbF9sb2NhdGlvbik6IE5ldyBmdW5jdGlv bi4KLQkqIGR3YXJmMm91dC5jIChnZW5fc3VicHJvZ3JhbV9kaWUpOiBBZGQgRFdfQVRfYXJ0aWZp Y2lhbAotCWlmIGFydGlmaWNpYWwgYXR0cmlidXRlIGlzIHByZXNlbnQgb24gYWJzdHJhY3QgaW5s aW5lIGRlY2wuCi0JKiBjLWNvbW1vbi5jIChoYW5kbGVfYXJ0aWZpY2lhbF9hdHRyaWJ1dGUpOiBO ZXcgZnVuY3Rpb24uCi0JKGNfY29tbW9uX2F0dHJpYnV0ZV90YWJsZSk6IEFkZCBhcnRpZmljaWFs IGF0dHJpYnV0ZS4KLQkqIGZpbmFsLmMgKG92ZXJyaWRlX2ZpbGVuYW1lLCBvdmVycmlkZV9saW5l bnVtKTogTmV3IHZhcmlhYmxlcy4KLQkoZmluYWxfc2Nhbl9pbnNuKTogRm9yIERCWF9ERUJVRyBv ciBTREJfREVCVUcsIHNldCBvdmVycmlkZV9maWxlbmFtZQotCWFuZCBvdmVycmlkZV9saW5lbnVt IGlmIGluc2lkZSBvZiBhIGJsb2NrIGlubGluZWQgZnJvbQotCV9fYXR0cmlidXRlX18oKF9fYXJ0 aWZpY2lhbF9fKSkgZnVuY3Rpb24uCi0JKG5vdGljZV9zb3VyY2VfbGluZSk6IEhvbm9yIG92ZXJy aWRlX2ZpbGVuYW1lIGFuZCBvdmVycmlkZV9saW5lbnVtLgotCSogZG9jL2V4dGVuZC50ZXhpOiBE b2N1bWVudCBfX2F0dHJpYnV0ZV9fKChfX2FydGlmaWNpYWxfXykpLgotCSogY29uZmlnL2kzODYv ZW1taW50cmluLmg6IEFkZCBfX2FydGlmaWNpYWxfXyBhdHRyaWJ1dGUgdG8KLQlhbGwgX19hbHdh eXNfaW5saW5lX18gZnVuY3Rpb25zLgotCSogY29uZmlnL2kzODYvbW1pbnRyaW4uaDogTGlrZXdp c2UuCi0JKiBjb25maWcvaTM4Ni9tbTNkbm93Lmg6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYv cG1taW50cmluLmg6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvYW1taW50cmluLmg6IExpa2V3 aXNlLgotCSogY29uZmlnL2kzODYveG1taW50cmluLmg6IExpa2V3aXNlLgotCi0tLS0gZ2NjL2Rv Yy9leHRlbmQudGV4aS5qagkyMDA3LTA5LTI1IDEyOjIzOjA1LjAwMDAwMDAwMCArMDIwMAotKysr IGdjYy9kb2MvZXh0ZW5kLnRleGkJMjAwNy0wOS0yNSAxNTowNDoxNS4wMDAwMDAwMDAgKzAyMDAK LUBAIC0xNTg5LDcgKzE1ODksOCBAQCBhdHRyaWJ1dGVzIGFyZSBjdXJyZW50bHkgZGVmaW5lZCBm b3IgZnVuCi0gQGNvZGV7c2VjdGlvbn0sIEBjb2Rle2NvbnN0cnVjdG9yfSwgQGNvZGV7ZGVzdHJ1 Y3Rvcn0sIEBjb2Rle3VzZWR9LAotIEBjb2Rle3VudXNlZH0sIEBjb2Rle2RlcHJlY2F0ZWR9LCBA Y29kZXt3ZWFrfSwgQGNvZGV7bWFsbG9jfSwKLSBAY29kZXthbGlhc30sIEBjb2Rle3dhcm5fdW51 c2VkX3Jlc3VsdH0sIEBjb2Rle25vbm51bGx9LAotLUBjb2Rle2dudV9pbmxpbmV9IGFuZCBAY29k ZXtleHRlcm5hbGx5X3Zpc2libGV9LiAgU2V2ZXJhbCBvdGhlcgotK0Bjb2Rle2dudV9pbmxpbmV9 LCBAY29kZXtleHRlcm5hbGx5X3Zpc2libGV9IGFuZCBAY29kZXthcnRpZmljaWFsfS4KLStTZXZl cmFsIG90aGVyCi0gYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBmb3IgZnVuY3Rpb25zIG9uIHBhcnRp Y3VsYXIgdGFyZ2V0IHN5c3RlbXMuICBPdGhlcgotIGF0dHJpYnV0ZXMsIGluY2x1ZGluZyBAY29k ZXtzZWN0aW9ufSBhcmUgc3VwcG9ydGVkIGZvciB2YXJpYWJsZXMgZGVjbGFyYXRpb25zCi0gKEBw eHJlZntWYXJpYWJsZSBBdHRyaWJ1dGVzfSkgYW5kIGZvciB0eXBlcyAoQHB4cmVme1R5cGUgQXR0 cmlidXRlc30pLgotQEAgLTE2NzEsNiArMTY3MiwxNCBAQCBJbiBDKyssIHRoaXMgYXR0cmlidXRl IGRvZXMgbm90IGRlcGVuZCBvCi0gYnV0IGl0IHN0aWxsIHJlcXVpcmVzIHRoZSBAY29kZXtpbmxp bmV9IGtleXdvcmQgdG8gZW5hYmxlIGl0cyBzcGVjaWFsCi0gYmVoYXZpb3IuCi0gCi0rQGNpbmRl eCBAY29kZXthcnRpZmljaWFsfSBmdW5jdGlvbiBhdHRyaWJ1dGUKLStAaXRlbSBhcnRpZmljaWFs Ci0rVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZnVsIGZvciBzbWFsbCBpbmxpbmUgd3JhcHBlcnMgd2hp Y2ggaWYgcG9zc2libGUKLStzaG91bGQgYXBwZWFyIGR1cmluZyBkZWJ1Z2dpbmcgYXMgYSB1bml0 LCBkZXBlbmRpbmcgb24gdGhlIGRlYnVnCi0raW5mbyBmb3JtYXQgaXQgd2lsbCBlaXRoZXIgbWVh biBtYXJraW5nIHRoZSBmdW5jdGlvbiBhcyBhcnRpZmljaWFsCi0rb3IgdXNpbmcgdGhlIGNhbGxl ciBsb2NhdGlvbiBmb3IgYWxsIGluc3RydWN0aW9ucyB3aXRoaW4gdGhlIGlubGluZWQKLStib2R5 LgotKwotIEBjaW5kZXggQGNvZGV7ZmxhdHRlbn0gZnVuY3Rpb24gYXR0cmlidXRlCi0gQGl0ZW0g ZmxhdHRlbgotIEdlbmVyYWxseSwgaW5saW5pbmcgaW50byBhIGZ1bmN0aW9uIGlzIGxpbWl0ZWQu ICBGb3IgYSBmdW5jdGlvbiBtYXJrZWQgd2l0aAotLS0tIGdjYy90cmVlLmMuamoJMjAwNy0wNC0w MyAxMzoxODoyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdHJlZS5jCTIwMDctMDktMjUgMTU6 MDE6NDkuMDAwMDAwMDAwICswMjAwCi1AQCAtNzYzOCw0ICs3NjM4LDQwIEBAIGVtcHR5X2JvZHlf cCAodHJlZSBzdG10KQotICAgcmV0dXJuIHRydWU7Ci0gfQotIAotKy8qIElmIEJMT0NLIGlzIGlu bGluZWQgZnJvbSBhbiBfX2F0dHJpYnV0ZV9fKChfX2FydGlmaWNpYWxfXykpCi0rICAgcm91dGlu ZSwgcmV0dXJuIHBvaW50ZXIgdG8gbG9jYXRpb24gZnJvbSB3aGVyZSBpdCBoYXMgYmVlbgotKyAg IGNhbGxlZC4gICovCi0rbG9jYXRpb25fdCAqCi0rYmxvY2tfbm9uYXJ0aWZpY2lhbF9sb2NhdGlv biAodHJlZSBibG9jaykKLSt7Ci0rICBsb2NhdGlvbl90ICpyZXQgPSBOVUxMOwotKwotKyAgd2hp bGUgKGJsb2NrICYmIFRSRUVfQ09ERSAoYmxvY2spID09IEJMT0NLCi0rCSAmJiBCTE9DS19BQlNU UkFDVF9PUklHSU4gKGJsb2NrKSkKLSsgICAgewotKyAgICAgIHRyZWUgYW8gPSBCTE9DS19BQlNU UkFDVF9PUklHSU4gKGJsb2NrKTsKLSsKLSsgICAgICB3aGlsZSAoVFJFRV9DT0RFIChhbykgPT0g QkxPQ0sgJiYgQkxPQ0tfQUJTVFJBQ1RfT1JJR0lOIChhbykpCi0rCWFvID0gQkxPQ0tfQUJTVFJB Q1RfT1JJR0lOIChhbyk7Ci0rCi0rICAgICAgaWYgKFRSRUVfQ09ERSAoYW8pID09IEZVTkNUSU9O X0RFQ0wpCi0rCXsKLSsJICAvKiBJZiBBTyBpcyBhbiBhcnRpZmljaWFsIGlubGluZSwgcG9pbnQg UkVUIHRvIHRoZQotKwkgICAgIGNhbGwgc2l0ZSBsb2N1cyBhdCB3aGljaCBpdCBoYXMgYmVlbiBp bmxpbmVkIGFuZCBjb250aW51ZQotKwkgICAgIHRoZSBsb29wLCBpbiBjYXNlIEFPJ3MgY2FsbGVy IGlzIGFsc28gYW4gYXJ0aWZpY2lhbAotKwkgICAgIGlubGluZS4gICovCi0rCSAgaWYgKERFQ0xf REVDTEFSRURfSU5MSU5FX1AgKGFvKQotKwkgICAgICAmJiBsb29rdXBfYXR0cmlidXRlICgiYXJ0 aWZpY2lhbCIsIERFQ0xfQVRUUklCVVRFUyAoYW8pKSkKLSsJICAgIHJldCA9ICZCTE9DS19TT1VS Q0VfTE9DQVRJT04gKGJsb2NrKTsKLSsJICBlbHNlCi0rCSAgICBicmVhazsKLSsJfQotKyAgICAg IGVsc2UgaWYgKFRSRUVfQ09ERSAoYW8pICE9IEJMT0NLKQotKwlicmVhazsKLSsKLSsgICAgICBi bG9jayA9IEJMT0NLX1NVUEVSQ09OVEVYVCAoYmxvY2spOwotKyAgICB9Ci0rICByZXR1cm4gcmV0 OwotK30KLSsKLSAjaW5jbHVkZSAiZ3QtdHJlZS5oIgotLS0tIGdjYy90cmVlLmguamoJMjAwNy0w OS0yNSAxMjoyMDoxMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdHJlZS5oCTIwMDctMDktMjUg MTU6MDI6MzcuMDAwMDAwMDAwICswMjAwCi1AQCAtNDI3MCw2ICs0MjcwLDggQEAgZXh0ZXJuIHRy ZWUgYnVpbGRfYWRkciAodHJlZSwgdHJlZSk7Ci0gZXh0ZXJuIGJvb2wgZmllbGRzX2NvbXBhdGli bGVfcCAodHJlZSwgdHJlZSk7Ci0gZXh0ZXJuIHRyZWUgZmluZF9jb21wYXRpYmxlX2ZpZWxkICh0 cmVlLCB0cmVlKTsKLSAKLStleHRlcm4gbG9jYXRpb25fdCAqYmxvY2tfbm9uYXJ0aWZpY2lhbF9s b2NhdGlvbiAodHJlZSk7Ci0rCi0gLyogSW4gZnVuY3Rpb24uYyAqLwotIGV4dGVybiB2b2lkIGV4 cGFuZF9tYWluX2Z1bmN0aW9uICh2b2lkKTsKLSBleHRlcm4gdm9pZCBpbml0X2R1bW15X2Z1bmN0 aW9uX3N0YXJ0ICh2b2lkKTsKLS0tLSBnY2MvZmluYWwuYy5qagkyMDA3LTAyLTIwIDIyOjM5OjEy LjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy9maW5hbC5jCTIwMDctMDktMjUgMTU6MDE6NDkuMDAw MDAwMDAwICswMjAwCi1AQCAtMTQxLDYgKzE0MSwxMCBAQCBzdGF0aWMgaW50IGhpZ2hfZnVuY3Rp b25fbGluZW51bTsKLSAvKiBGaWxlbmFtZSBvZiBsYXN0IE5PVEUuICAqLwotIHN0YXRpYyBjb25z dCBjaGFyICpsYXN0X2ZpbGVuYW1lOwotIAotKy8qIE92ZXJyaWRlIGZpbGVuYW1lIGFuZCBsaW5l IG51bWJlci4gICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKm92ZXJyaWRlX2ZpbGVuYW1lOwotK3N0 YXRpYyBpbnQgb3ZlcnJpZGVfbGluZW51bTsKLSsKLSAvKiBXaGV0aGVyIHRvIGZvcmNlIGVtaXNz aW9uIG9mIGEgbGluZSBub3RlIGJlZm9yZSB0aGUgbmV4dCBpbnNuLiAgKi8KLSBzdGF0aWMgYm9v bCBmb3JjZV9zb3VyY2VfbGluZSA9IGZhbHNlOwotICAgCi1AQCAtMTgyMiw2ICsxODI2LDE4IEBA IGZpbmFsX3NjYW5faW5zbiAocnR4IGluc24sIEZJTEUgKmZpbGUsIGkKLSAJICAgICAgLyogTWFy ayB0aGlzIGJsb2NrIGFzIG91dHB1dC4gICovCi0gCSAgICAgIFRSRUVfQVNNX1dSSVRURU4gKE5P VEVfQkxPQ0sgKGluc24pKSA9IDE7Ci0gCSAgICB9Ci0rCSAgaWYgKHdyaXRlX3N5bWJvbHMgPT0g REJYX0RFQlVHCi0rCSAgICAgIHx8IHdyaXRlX3N5bWJvbHMgPT0gU0RCX0RFQlVHKQotKwkgICAg ewotKwkgICAgICBsb2NhdGlvbl90ICpsb2N1c19wdHIKLSsJCT0gYmxvY2tfbm9uYXJ0aWZpY2lh bF9sb2NhdGlvbiAoTk9URV9CTE9DSyAoaW5zbikpOwotKwotKwkgICAgICBpZiAobG9jdXNfcHRy ICE9IE5VTEwpCi0rCQl7Ci0rCQkgIG92ZXJyaWRlX2ZpbGVuYW1lID0gTE9DQVRJT05fRklMRSAo KmxvY3VzX3B0cik7Ci0rCQkgIG92ZXJyaWRlX2xpbmVudW0gPSBMT0NBVElPTl9MSU5FICgqbG9j dXNfcHRyKTsKLSsJCX0KLSsJICAgIH0KLSAJICBicmVhazsKLSAKLSAJY2FzZSBOT1RFX0lOU05f QkxPQ0tfRU5EOgotQEAgLTE4NDEsNiArMTg1NywyNCBAQCBmaW5hbF9zY2FuX2luc24gKHJ0eCBp bnNuLCBGSUxFICpmaWxlLCBpCi0gCi0gCSAgICAgICgqZGVidWdfaG9va3MtPmVuZF9ibG9jaykg KGhpZ2hfYmxvY2tfbGluZW51bSwgbik7Ci0gCSAgICB9Ci0rCSAgaWYgKHdyaXRlX3N5bWJvbHMg PT0gREJYX0RFQlVHCi0rCSAgICAgIHx8IHdyaXRlX3N5bWJvbHMgPT0gU0RCX0RFQlVHKQotKwkg ICAgewotKwkgICAgICB0cmVlIG91dGVyX2Jsb2NrID0gQkxPQ0tfU1VQRVJDT05URVhUIChOT1RF X0JMT0NLIChpbnNuKSk7Ci0rCSAgICAgIGxvY2F0aW9uX3QgKmxvY3VzX3B0cgotKwkJPSBibG9j a19ub25hcnRpZmljaWFsX2xvY2F0aW9uIChvdXRlcl9ibG9jayk7Ci0rCi0rCSAgICAgIGlmIChs b2N1c19wdHIgIT0gTlVMTCkKLSsJCXsKLSsJCSAgb3ZlcnJpZGVfZmlsZW5hbWUgPSBMT0NBVElP Tl9GSUxFICgqbG9jdXNfcHRyKTsKLSsJCSAgb3ZlcnJpZGVfbGluZW51bSA9IExPQ0FUSU9OX0xJ TkUgKCpsb2N1c19wdHIpOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIG92ZXJyaWRl X2ZpbGVuYW1lID0gTlVMTDsKLSsJCSAgb3ZlcnJpZGVfbGluZW51bSA9IDA7Ci0rCQl9Ci0rCSAg ICB9Ci0gCSAgYnJlYWs7Ci0gCi0gCWNhc2UgTk9URV9JTlNOX0RFTEVURURfTEFCRUw6Ci1AQCAt MjUyMSw4ICsyNTU1LDE5IEBAIGZpbmFsX3NjYW5faW5zbiAocnR4IGluc24sIEZJTEUgKmZpbGUs IGkKLSBzdGF0aWMgYm9vbAotIG5vdGljZV9zb3VyY2VfbGluZSAocnR4IGluc24pCi0gewotLSAg Y29uc3QgY2hhciAqZmlsZW5hbWUgPSBpbnNuX2ZpbGUgKGluc24pOwotLSAgaW50IGxpbmVudW0g PSBpbnNuX2xpbmUgKGluc24pOwotKyAgY29uc3QgY2hhciAqZmlsZW5hbWU7Ci0rICBpbnQgbGlu ZW51bTsKLSsKLSsgIGlmIChvdmVycmlkZV9maWxlbmFtZSkKLSsgICAgewotKyAgICAgIGZpbGVu YW1lID0gb3ZlcnJpZGVfZmlsZW5hbWU7Ci0rICAgICAgbGluZW51bSA9IG92ZXJyaWRlX2xpbmVu dW07Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGZpbGVuYW1lID0gaW5zbl9maWxl IChpbnNuKTsKLSsgICAgICBsaW5lbnVtID0gaW5zbl9saW5lIChpbnNuKTsKLSsgICAgfQotIAot ICAgaWYgKGZpbGVuYW1lCi0gICAgICAgJiYgKGZvcmNlX3NvdXJjZV9saW5lCi0tLS0gZ2NjL2R3 YXJmMm91dC5jLmpqCTIwMDctMDQtMDMgMTM6MTM6MjcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Nj L2R3YXJmMm91dC5jCTIwMDctMDktMjUgMTU6MDE6NDkuMDAwMDAwMDAwICswMjAwCi1AQCAtMTE2 NjcsNiArMTE2NjcsMTAgQEAgZ2VuX3N1YnByb2dyYW1fZGllICh0cmVlIGRlY2wsIGR3X2RpZV9y ZQotICAgICAgICAgICAgIGFkZF9BVF91bnNpZ25lZCAoc3Vicl9kaWUsIERXX0FUX2lubGluZSwg RFdfSU5MX25vdF9pbmxpbmVkKTsKLSAJfQotIAotKyAgICAgIGlmIChERUNMX0RFQ0xBUkVEX0lO TElORV9QIChkZWNsKQotKwkgICYmIGxvb2t1cF9hdHRyaWJ1dGUgKCJhcnRpZmljaWFsIiwgREVD TF9BVFRSSUJVVEVTIChkZWNsKSkpCi0rCWFkZF9BVF9mbGFnIChzdWJyX2RpZSwgRFdfQVRfYXJ0 aWZpY2lhbCwgMSk7Ci0rCi0gICAgICAgZXF1YXRlX2RlY2xfbnVtYmVyX3RvX2RpZSAoZGVjbCwg c3Vicl9kaWUpOwotICAgICB9Ci0gICBlbHNlIGlmICghREVDTF9FWFRFUk5BTCAoZGVjbCkpCi0t LS0gZ2NjL2MtY29tbW9uLmMuamoJMjAwNy0wMy0yNyAxNTo0MDoxNS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnY2MvYy1jb21tb24uYwkyMDA3LTA5LTI1IDE1OjAxOjQ5LjAwMDAwMDAwMCArMDIwMAot QEAgLTUwNSw4ICs1MDUsOCBAQCBzdGF0aWMgdHJlZSBoYW5kbGVfbm9yZXR1cm5fYXR0cmlidXRl ICh0Ci0gc3RhdGljIHRyZWUgaGFuZGxlX25vaW5saW5lX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVl LCB0cmVlLCBpbnQsIGJvb2wgKik7Ci0gc3RhdGljIHRyZWUgaGFuZGxlX2Fsd2F5c19pbmxpbmVf YXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwKLSAJCQkJCSAgICBib29sICopOwot LXN0YXRpYyB0cmVlIGhhbmRsZV9nbnVfaW5saW5lX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0 cmVlLCBpbnQsCi0tCQkJCQkgYm9vbCAqKTsKLStzdGF0aWMgdHJlZSBoYW5kbGVfZ251X2lubGlu ZV9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwotK3N0YXRpYyB0 cmVlIGhhbmRsZV9hcnRpZmljaWFsX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQs IGJvb2wgKik7Ci0gc3RhdGljIHRyZWUgaGFuZGxlX2ZsYXR0ZW5fYXR0cmlidXRlICh0cmVlICos IHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKLSBzdGF0aWMgdHJlZSBoYW5kbGVfdXNlZF9hdHRy aWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwotIHN0YXRpYyB0cmVlIGhh bmRsZV91bnVzZWRfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsK LUBAIC01NzcsNiArNTc3LDggQEAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGNfY29tbW9u X2F0dAotIAkJCSAgICAgIGhhbmRsZV9hbHdheXNfaW5saW5lX2F0dHJpYnV0ZSB9LAotICAgeyAi Z251X2lubGluZSIsICAgICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFsc2UsCi0gCQkJ ICAgICAgaGFuZGxlX2dudV9pbmxpbmVfYXR0cmlidXRlIH0sCi0rICB7ICJhcnRpZmljaWFsIiwg ICAgICAgICAgICAgMCwgMCwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwKLSsJCQkgICAgICBoYW5kbGVf YXJ0aWZpY2lhbF9hdHRyaWJ1dGUgfSwKLSAgIHsgImZsYXR0ZW4iLCAgICAgICAgICAgICAgICAw LCAwLCB0cnVlLCAgZmFsc2UsIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGhhbmRsZV9mbGF0dGVuX2F0dHJpYnV0ZSB9LAotICAgeyAidXNlZCIsICAgICAgICAgICAgICAg ICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFsc2UsCi1AQCAtNDE4MCw2ICs0MTgyLDI5IEBAIGhh bmRsZV9nbnVfaW5saW5lX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwKLSAgIHJldHVybiBOVUxMX1RS RUU7Ci0gfQotIAotKy8qIEhhbmRsZSBhbiAiYXJ0aWZpY2lhbCIgYXR0cmlidXRlOyBhcmd1bWVu dHMgYXMgaW4KLSsgICBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMuaGFuZGxlci4gICovCi0rCi0rc3Rh dGljIHRyZWUKLStoYW5kbGVfYXJ0aWZpY2lhbF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUg bmFtZSwKLSsJCQkgICAgIHRyZWUgQVJHX1VOVVNFRCAoYXJncyksCi0rCQkJICAgICBpbnQgQVJH X1VOVVNFRCAoZmxhZ3MpLAotKwkJCSAgICAgYm9vbCAqbm9fYWRkX2F0dHJzKQotK3sKLSsgIGlm IChUUkVFX0NPREUgKCpub2RlKSA9PSBGVU5DVElPTl9ERUNMICYmIERFQ0xfREVDTEFSRURfSU5M SU5FX1AgKCpub2RlKSkKLSsgICAgewotKyAgICAgIC8qIERvIG5vdGhpbmcgZWxzZSwganVzdCBz ZXQgdGhlIGF0dHJpYnV0ZS4gIFdlJ2xsIGdldCBhdAotKwkgaXQgbGF0ZXIgd2l0aCBsb29rdXBf YXR0cmlidXRlLiAgKi8KLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgd2FybmluZyAo T1BUX1dhdHRyaWJ1dGVzLCAiJXFFIGF0dHJpYnV0ZSBpZ25vcmVkIiwgbmFtZSk7Ci0rICAgICAg Km5vX2FkZF9hdHRycyA9IHRydWU7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBOVUxMX1RSRUU7Ci0r fQotKwotIC8qIEhhbmRsZSBhICJmbGF0dGVuIiBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBhcyBpbgot ICAgIHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVyLiAgKi8KLSAKLS0tLSBnY2MvY29uZmln L2kzODYvbW1pbnRyaW4uaC5qagkyMDA3LTAzLTI3IDE1OjQwOjE4LjAwMDAwMDAwMCArMDIwMAot KysrIGdjYy9jb25maWcvaTM4Ni9tbWludHJpbi5oCTIwMDctMDktMjUgMTU6MDY6MzAuMDAwMDAw MDAwICswMjAwCi1AQCAtNDMsMjYgKzQzLDI2IEBAIHR5cGVkZWYgc2hvcnQgX192NGhpIF9fYXR0 cmlidXRlX18gKChfX3YKLSB0eXBlZGVmIGNoYXIgX192OHFpIF9fYXR0cmlidXRlX18gKChfX3Zl Y3Rvcl9zaXplX18gKDgpKSk7Ci0gCi0gLyogRW1wdHkgdGhlIG11bHRpbWVkaWEgc3RhdGUuICAq LwotLXN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQotIF9tbV9lbXB0eSAodm9pZCkKLSB7Ci0gICBfX2J1aWx0aW5f aWEzMl9lbW1zICgpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9lbXB0eSAodm9pZCkK LSB7Ci0gICBfbW1fZW1wdHkgKCk7Ci0gfQotIAotIC8qIENvbnZlcnQgSSB0byBhIF9fbTY0IG9i amVjdC4gIFRoZSBpbnRlZ2VyIGlzIHplcm8tZXh0ZW5kZWQgdG8gNjQtYml0cy4gICovCi0tc3Rh dGljIF9faW5saW5lIF9fbTY0ICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0r c3RhdGljIF9faW5saW5lIF9fbTY0ICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRzaTMyX3NpNjQgKGludCBfX2kpCi0gewotICAgcmV0 dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfdmVjX2luaXRfdjJzaSAoX19pLCAwKTsKLSB9Ci0g Ci0tc3RhdGljIF9faW5saW5lIF9fbTY0ICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0ICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX2Zyb21faW50IChpbnQgX19pKQotIHsKLSAgIHJl dHVybiBfbW1fY3Z0c2kzMl9zaTY0IChfX2kpOwotQEAgLTcyLDI2ICs3MiwyNiBAQCBfbV9mcm9t X2ludCAoaW50IF9faSkKLSAvKiBDb252ZXJ0IEkgdG8gYSBfX202NCBvYmplY3QuICAqLwotIAot IC8qIEludGVsIGludHJpbnNpYy4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0ICBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0ICBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX2Zyb21f aW50NjQgKGxvbmcgbG9uZyBfX2kpCi0gewotICAgcmV0dXJuIChfX202NCkgX19pOwotIH0KLSAK LS1zdGF0aWMgX19pbmxpbmUgX19tNjQgIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHNpNjRfbTY0IChsb25nIGxvbmcgX19pKQot IHsKLSAgIHJldHVybiAoX19tNjQpIF9faTsKLSB9Ci0gCi0gLyogTWljcm9zb2Z0IGludHJpbnNp Yy4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0ICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0ICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRzaTY0eF9zaTY0IChsb25nIGxv bmcgX19pKQotIHsKLSAgIHJldHVybiAoX19tNjQpIF9faTsKLSB9Ci0gCi0tc3RhdGljIF9faW5s aW5lIF9fbTY0ICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTY0ICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV9zZXRfcGk2NHggKGxvbmcgbG9uZyBfX2kpCi0gewotICAgcmV0dXJuIChf X202NCkgX19pOwotQEAgLTk5LDEzICs5OSwxMyBAQCBfbW1fc2V0X3BpNjR4IChsb25nIGxvbmcg X19pKQotICNlbmRpZgotIAotIC8qIENvbnZlcnQgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIF9f bTY0IG9iamVjdCBpbnRvIGFuIGludGVnZXIuICAqLwotLXN0YXRpYyBfX2lubGluZSBpbnQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBpbnQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY3Z0 c2k2NF9zaTMyIChfX202NCBfX2kpCi0gewotICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZlY19l eHRfdjJzaSAoKF9fdjJzaSlfX2ksIDApOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgaW50IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgaW50IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fdG9f aW50IChfX202NCBfX2kpCi0gewotICAgcmV0dXJuIF9tbV9jdnRzaTY0X3NpMzIgKF9faSk7Ci1A QCAtMTE1LDIwICsxMTUsMjAgQEAgX21fdG9faW50IChfX202NCBfX2kpCi0gLyogQ29udmVydCB0 aGUgX19tNjQgb2JqZWN0IHRvIGEgNjRiaXQgaW50ZWdlci4gICovCi0gCi0gLyogSW50ZWwgaW50 cmluc2ljLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgbG9uZyBsb25nIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fdG9faW50NjQgKF9f bTY0IF9faSkKLSB7Ci0gICByZXR1cm4gKGxvbmcgbG9uZylfX2k7Ci0gfQotIAotLXN0YXRpYyBf X2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0 YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY3Z0bTY0X3NpNjQgKF9fbTY0IF9faSkKLSB7Ci0gICBy ZXR1cm4gKGxvbmcgbG9uZylfX2k7Ci0gfQotIAotIC8qIE1pY3Jvc29mdCBpbnRyaW5zaWMuICAq LwotLXN0YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY3Z0c2k2NF9zaTY0eCAoX19tNjQg X19pKQotIHsKLSAgIHJldHVybiAobG9uZyBsb25nKV9faTsKLUBAIC0xMzgsMTMgKzEzOCwxMyBA QCBfbW1fY3Z0c2k2NF9zaTY0eCAoX19tNjQgX19pKQotIC8qIFBhY2sgdGhlIGZvdXIgMTYtYml0 IHZhbHVlcyBmcm9tIE0xIGludG8gdGhlIGxvd2VyIGZvdXIgOC1iaXQgdmFsdWVzIG9mCi0gICAg dGhlIHJlc3VsdCwgYW5kIHRoZSBmb3VyIDE2LWJpdCB2YWx1ZXMgZnJvbSBNMiBpbnRvIHRoZSB1 cHBlciBmb3VyIDgtYml0Ci0gICAgdmFsdWVzIG9mIHRoZSByZXN1bHQsIGFsbCB3aXRoIHNpZ25l ZCBzYXR1cmF0aW9uLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9wYWNrc19waTE2IChf X202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9p YTMyX3BhY2tzc3diICgoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7Ci0gfQotIAotLXN0YXRp YyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21fcGFja3Nzd2IgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewot ICAgcmV0dXJuIF9tbV9wYWNrc19waTE2IChfX20xLCBfX20yKTsKLUBAIC0xNTMsMTMgKzE1Mywx MyBAQCBfbV9wYWNrc3N3YiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSAvKiBQYWNrIHRoZSB0 d28gMzItYml0IHZhbHVlcyBmcm9tIE0xIGluIHRvIHRoZSBsb3dlciB0d28gMTYtYml0IHZhbHVl cyBvZgotICAgIHRoZSByZXN1bHQsIGFuZCB0aGUgdHdvIDMyLWJpdCB2YWx1ZXMgZnJvbSBNMiBp bnRvIHRoZSB1cHBlciB0d28gMTYtYml0Ci0gICAgdmFsdWVzIG9mIHRoZSByZXN1bHQsIGFsbCB3 aXRoIHNpZ25lZCBzYXR1cmF0aW9uLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9wYWNr c19waTMyIChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiAoX19tNjQpIF9f YnVpbHRpbl9pYTMyX3BhY2tzc2R3ICgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7Ci0gfQot IAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fcGFja3NzZHcgKF9fbTY0IF9fbTEsIF9fbTY0IF9f bTIpCi0gewotICAgcmV0dXJuIF9tbV9wYWNrc19waTMyIChfX20xLCBfX20yKTsKLUBAIC0xNjgs MTMgKzE2OCwxMyBAQCBfbV9wYWNrc3NkdyAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSAvKiBQ YWNrIHRoZSBmb3VyIDE2LWJpdCB2YWx1ZXMgZnJvbSBNMSBpbnRvIHRoZSBsb3dlciBmb3VyIDgt Yml0IHZhbHVlcyBvZgotICAgIHRoZSByZXN1bHQsIGFuZCB0aGUgZm91ciAxNi1iaXQgdmFsdWVz IGZyb20gTTIgaW50byB0aGUgdXBwZXIgZm91ciA4LWJpdAotICAgIHZhbHVlcyBvZiB0aGUgcmVz dWx0LCBhbGwgd2l0aCB1bnNpZ25lZCBzYXR1cmF0aW9uLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUg X19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGlu ZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQotIF9tbV9wYWNrc19wdTE2IChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVy biAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BhY2t1c3diICgoX192NGhpKV9fbTEsIChfX3Y0aGkp X19tMik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fcGFja3Vzd2IgKF9fbTY0IF9f bTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0dXJuIF9tbV9wYWNrc19wdTE2IChfX20xLCBfX20y KTsKLUBAIC0xODIsMTMgKzE4MiwxMyBAQCBfbV9wYWNrdXN3YiAoX19tNjQgX19tMSwgX19tNjQg X19tMikKLSAKLSAvKiBJbnRlcmxlYXZlIHRoZSBmb3VyIDgtYml0IHZhbHVlcyBmcm9tIHRoZSBo aWdoIGhhbGYgb2YgTTEgd2l0aCB0aGUgZm91cgotICAgIDgtYml0IHZhbHVlcyBmcm9tIHRoZSBo aWdoIGhhbGYgb2YgTTIuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3VucGFja2hpX3Bp OCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0 aW5faWEzMl9wdW5wY2toYncgKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20yKTsKLSB9Ci0gCi0t c3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkK LStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9wdW5wY2toYncgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIp Ci0gewotICAgcmV0dXJuIF9tbV91bnBhY2toaV9waTggKF9fbTEsIF9fbTIpOwotQEAgLTE5Niwx MyArMTk2LDEzIEBAIF9tX3B1bnBja2hidyAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAv KiBJbnRlcmxlYXZlIHRoZSB0d28gMTYtYml0IHZhbHVlcyBmcm9tIHRoZSBoaWdoIGhhbGYgb2Yg TTEgd2l0aCB0aGUgdHdvCi0gICAgMTYtYml0IHZhbHVlcyBmcm9tIHRoZSBoaWdoIGhhbGYgb2Yg TTIuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3VucGFja2hpX3BpMTYgKF9fbTY0IF9f bTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHVu cGNraHdkICgoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7Ci0gfQotIAotLXN0YXRpYyBfX2lu bGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCi0gX21fcHVucGNraHdkIChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJl dHVybiBfbW1fdW5wYWNraGlfcGkxNiAoX19tMSwgX19tMik7Ci1AQCAtMjEwLDEzICsyMTAsMTMg QEAgX21fcHVucGNraHdkIChfX202NCBfX20xLCBfX202NCBfX20yKQotIAotIC8qIEludGVybGVh dmUgdGhlIDMyLWJpdCB2YWx1ZSBmcm9tIHRoZSBoaWdoIGhhbGYgb2YgTTEgd2l0aCB0aGUgMzIt Yml0Ci0gICAgdmFsdWUgZnJvbSB0aGUgaGlnaCBoYWxmIG9mIE0yLiAgKi8KLS1zdGF0aWMgX19p bmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBf X2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV91bnBhY2toaV9waTMyIChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsK LSAgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3B1bnBja2hkcSAoKF9fdjJzaSlfX20x LCAoX192MnNpKV9fbTIpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX3B1bnBja2hk cSAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gX21tX3VucGFja2hpX3Bp MzIgKF9fbTEsIF9fbTIpOwotQEAgLTIyNCwxMyArMjI0LDEzIEBAIF9tX3B1bnBja2hkcSAoX19t NjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAvKiBJbnRlcmxlYXZlIHRoZSBmb3VyIDgtYml0IHZh bHVlcyBmcm9tIHRoZSBsb3cgaGFsZiBvZiBNMSB3aXRoIHRoZSBmb3VyCi0gICAgOC1iaXQgdmFs dWVzIGZyb20gdGhlIGxvdyBoYWxmIG9mIE0yLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202 NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9t bV91bnBhY2tsb19waTggKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0dXJuIChf X202NCkgX19idWlsdGluX2lhMzJfcHVucGNrbGJ3ICgoX192OHFpKV9fbTEsIChfX3Y4cWkpX19t Mik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fcHVucGNrbGJ3IChfX202NCBfX20x LCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiBfbW1fdW5wYWNrbG9fcGk4IChfX20xLCBfX20y KTsKLUBAIC0yMzgsMTMgKzIzOCwxMyBAQCBfbV9wdW5wY2tsYncgKF9fbTY0IF9fbTEsIF9fbTY0 IF9fbTIpCi0gCi0gLyogSW50ZXJsZWF2ZSB0aGUgdHdvIDE2LWJpdCB2YWx1ZXMgZnJvbSB0aGUg bG93IGhhbGYgb2YgTTEgd2l0aCB0aGUgdHdvCi0gICAgMTYtYml0IHZhbHVlcyBmcm9tIHRoZSBs b3cgaGFsZiBvZiBNMi4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fdW5wYWNrbG9fcGkx NiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0 aW5faWEzMl9wdW5wY2tsd2QgKChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsKLSB9Ci0gCi0t c3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkK LStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9wdW5wY2tsd2QgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIp Ci0gewotICAgcmV0dXJuIF9tbV91bnBhY2tsb19waTE2IChfX20xLCBfX20yKTsKLUBAIC0yNTIs NTkgKzI1Miw1OSBAQCBfbV9wdW5wY2tsd2QgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gCi0g LyogSW50ZXJsZWF2ZSB0aGUgMzItYml0IHZhbHVlIGZyb20gdGhlIGxvdyBoYWxmIG9mIE0xIHdp dGggdGhlIDMyLWJpdAotICAgIHZhbHVlIGZyb20gdGhlIGxvdyBoYWxmIG9mIE0yLiAgKi8KLS1z dGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQot K3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotIF9tbV91bnBhY2tsb19waTMyIChfX202NCBfX20xLCBfX202NCBf X20yKQotIHsKLSAgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3B1bnBja2xkcSAoKF9f djJzaSlfX20xLCAoX192MnNpKV9fbTIpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202 NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9t X3B1bnBja2xkcSAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gX21tX3Vu cGFja2xvX3BpMzIgKF9fbTEsIF9fbTIpOwotIH0KLSAKLSAvKiBBZGQgdGhlIDgtYml0IHZhbHVl cyBpbiBNMSB0byB0aGUgOC1iaXQgdmFsdWVzIGluIE0yLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUg X19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGlu ZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQotIF9tbV9hZGRfcGk4IChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiAo X19tNjQpIF9fYnVpbHRpbl9pYTMyX3BhZGRiICgoX192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7 Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fcGFkZGIgKF9fbTY0IF9fbTEsIF9fbTY0 IF9fbTIpCi0gewotICAgcmV0dXJuIF9tbV9hZGRfcGk4IChfX20xLCBfX20yKTsKLSB9Ci0gCi0g LyogQWRkIHRoZSAxNi1iaXQgdmFsdWVzIGluIE0xIHRvIHRoZSAxNi1iaXQgdmFsdWVzIGluIE0y LiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9hZGRfcGkxNiAoX19tNjQgX19tMSwgX19t NjQgX19tMikKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wYWRkdyAoKF9f djRoaSlfX20xLCAoX192NGhpKV9fbTIpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202 NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9t X3BhZGR3IChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiBfbW1fYWRkX3Bp MTYgKF9fbTEsIF9fbTIpOwotIH0KLSAKLSAvKiBBZGQgdGhlIDMyLWJpdCB2YWx1ZXMgaW4gTTEg dG8gdGhlIDMyLWJpdCB2YWx1ZXMgaW4gTTIuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202NCBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0 IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21t X2FkZF9waTMyIChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiAoX19tNjQp IF9fYnVpbHRpbl9pYTMyX3BhZGRkICgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7Ci0gfQot IAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fcGFkZGQgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIp Ci0gewotICAgcmV0dXJuIF9tbV9hZGRfcGkzMiAoX19tMSwgX19tMik7Ci0gfQotIAotIC8qIEFk ZCB0aGUgNjQtYml0IHZhbHVlcyBpbiBNMSB0byB0aGUgNjQtYml0IHZhbHVlcyBpbiBNMi4gICov Ci0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fYWRkX3NpNjQgKF9fbTY0IF9fbTEsIF9fbTY0IF9f bTIpCi0gewotICAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcGFkZHEgKChsb25nIGxv bmcpX19tMSwgKGxvbmcgbG9uZylfX20yKTsKLUBAIC0zMTIsMTMgKzMxMiwxMyBAQCBfbW1fYWRk X3NpNjQgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gCi0gLyogQWRkIHRoZSA4LWJpdCB2YWx1 ZXMgaW4gTTEgdG8gdGhlIDgtYml0IHZhbHVlcyBpbiBNMiB1c2luZyBzaWduZWQKLSAgICBzYXR1 cmF0ZWQgYXJpdGhtZXRpYy4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fYWRkc19waTgg KF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0dXJuIChfX202NCkgX19idWlsdGlu X2lhMzJfcGFkZHNiICgoX192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7Ci0gfQotIAotLXN0YXRp YyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21fcGFkZHNiIChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAg IHJldHVybiBfbW1fYWRkc19waTggKF9fbTEsIF9fbTIpOwotQEAgLTMyNiwxMyArMzI2LDEzIEBA IF9tX3BhZGRzYiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAvKiBBZGQgdGhlIDE2LWJp dCB2YWx1ZXMgaW4gTTEgdG8gdGhlIDE2LWJpdCB2YWx1ZXMgaW4gTTIgdXNpbmcgc2lnbmVkCi0g ICAgc2F0dXJhdGVkIGFyaXRobWV0aWMuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2Fk ZHNfcGkxNiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBf X2J1aWx0aW5faWEzMl9wYWRkc3cgKChfX3Y0aGkpX19tMSwgKF9fdjRoaSlfX20yKTsKLSB9Ci0g Ci0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9wYWRkc3cgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIp Ci0gewotICAgcmV0dXJuIF9tbV9hZGRzX3BpMTYgKF9fbTEsIF9fbTIpOwotQEAgLTM0MCwxMyAr MzQwLDEzIEBAIF9tX3BhZGRzdyAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAvKiBBZGQg dGhlIDgtYml0IHZhbHVlcyBpbiBNMSB0byB0aGUgOC1iaXQgdmFsdWVzIGluIE0yIHVzaW5nIHVu c2lnbmVkCi0gICAgc2F0dXJhdGVkIGFyaXRobWV0aWMuICAqLwotLXN0YXRpYyBfX2lubGluZSBf X202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp Ci0gX21tX2FkZHNfcHU4IChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiAo X19tNjQpIF9fYnVpbHRpbl9pYTMyX3BhZGR1c2IgKChfX3Y4cWkpX19tMSwgKF9fdjhxaSlfX20y KTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9wYWRkdXNiIChfX202NCBfX20xLCBf X202NCBfX20yKQotIHsKLSAgIHJldHVybiBfbW1fYWRkc19wdTggKF9fbTEsIF9fbTIpOwotQEAg LTM1NCw1OSArMzU0LDU5IEBAIF9tX3BhZGR1c2IgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0g Ci0gLyogQWRkIHRoZSAxNi1iaXQgdmFsdWVzIGluIE0xIHRvIHRoZSAxNi1iaXQgdmFsdWVzIGlu IE0yIHVzaW5nIHVuc2lnbmVkCi0gICAgc2F0dXJhdGVkIGFyaXRobWV0aWMuICAqLwotLXN0YXRp YyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21tX2FkZHNfcHUxNiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7 Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wYWRkdXN3ICgoX192NGhpKV9fbTEs IChfX3Y0aGkpX19tMik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fcGFkZHVzdyAo X19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gX21tX2FkZHNfcHUxNiAoX19t MSwgX19tMik7Ci0gfQotIAotIC8qIFN1YnRyYWN0IHRoZSA4LWJpdCB2YWx1ZXMgaW4gTTIgZnJv bSB0aGUgOC1iaXQgdmFsdWVzIGluIE0xLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9z dWJfcGk4IChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiAoX19tNjQpIF9f YnVpbHRpbl9pYTMyX3BzdWJiICgoX192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7Ci0gfQotIAot LXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp Ci0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpCi0gX21fcHN1YmIgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0g ewotICAgcmV0dXJuIF9tbV9zdWJfcGk4IChfX20xLCBfX20yKTsKLSB9Ci0gCi0gLyogU3VidHJh Y3QgdGhlIDE2LWJpdCB2YWx1ZXMgaW4gTTIgZnJvbSB0aGUgMTYtYml0IHZhbHVlcyBpbiBNMS4g ICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3ViX3BpMTYgKF9fbTY0IF9fbTEsIF9fbTY0 IF9fbTIpCi0gewotICAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHN1YncgKChfX3Y0 aGkpX19tMSwgKF9fdjRoaSlfX20yKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9w c3VidyAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gX21tX3N1Yl9waTE2 IChfX20xLCBfX20yKTsKLSB9Ci0gCi0gLyogU3VidHJhY3QgdGhlIDMyLWJpdCB2YWx1ZXMgaW4g TTIgZnJvbSB0aGUgMzItYml0IHZhbHVlcyBpbiBNMS4gICovCi0tc3RhdGljIF9faW5saW5lIF9f bTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUg X19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkK LSBfbW1fc3ViX3BpMzIgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0dXJuIChf X202NCkgX19idWlsdGluX2lhMzJfcHN1YmQgKChfX3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsK LSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9wc3ViZCAoX19tNjQgX19tMSwgX19tNjQg X19tMikKLSB7Ci0gICByZXR1cm4gX21tX3N1Yl9waTMyIChfX20xLCBfX20yKTsKLSB9Ci0gCi0g LyogQWRkIHRoZSA2NC1iaXQgdmFsdWVzIGluIE0xIHRvIHRoZSA2NC1iaXQgdmFsdWVzIGluIE0y LiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zdWJfc2k2NCAoX19tNjQgX19tMSwgX19t NjQgX19tMikKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc3VicSAoKGxv bmcgbG9uZylfX20xLCAobG9uZyBsb25nKV9fbTIpOwotQEAgLTQxNCwxMyArNDE0LDEzIEBAIF9t bV9zdWJfc2k2NCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAvKiBTdWJ0cmFjdCB0aGUg OC1iaXQgdmFsdWVzIGluIE0yIGZyb20gdGhlIDgtYml0IHZhbHVlcyBpbiBNMSB1c2luZyBzaWdu ZWQKLSAgICBzYXR1cmF0aW5nIGFyaXRobWV0aWMuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202 NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9f bTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0g X21tX3N1YnNfcGk4IChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiAoX19t NjQpIF9fYnVpbHRpbl9pYTMyX3BzdWJzYiAoKF9fdjhxaSlfX20xLCAoX192OHFpKV9fbTIpOwot IH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX3BzdWJzYiAoX19tNjQgX19tMSwgX19tNjQg X19tMikKLSB7Ci0gICByZXR1cm4gX21tX3N1YnNfcGk4IChfX20xLCBfX20yKTsKLUBAIC00Mjgs MTMgKzQyOCwxMyBAQCBfbV9wc3Vic2IgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gCi0gLyog U3VidHJhY3QgdGhlIDE2LWJpdCB2YWx1ZXMgaW4gTTIgZnJvbSB0aGUgMTYtYml0IHZhbHVlcyBp biBNMSB1c2luZwotICAgIHNpZ25lZCBzYXR1cmF0aW5nIGFyaXRobWV0aWMuICAqLwotLXN0YXRp YyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21tX3N1YnNfcGkxNiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7 Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc3Vic3cgKChfX3Y0aGkpX19tMSwg KF9fdjRoaSlfX20yKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9wc3Vic3cgKF9f bTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0dXJuIF9tbV9zdWJzX3BpMTYgKF9fbTEs IF9fbTIpOwotQEAgLTQ0MiwxMyArNDQyLDEzIEBAIF9tX3BzdWJzdyAoX19tNjQgX19tMSwgX19t NjQgX19tMikKLSAKLSAvKiBTdWJ0cmFjdCB0aGUgOC1iaXQgdmFsdWVzIGluIE0yIGZyb20gdGhl IDgtYml0IHZhbHVlcyBpbiBNMSB1c2luZwotICAgIHVuc2lnbmVkIHNhdHVyYXRpbmcgYXJpdGht ZXRpYy4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3Vic19wdTggKF9fbTY0IF9fbTEs IF9fbTY0IF9fbTIpCi0gewotICAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHN1YnVz YiAoKF9fdjhxaSlfX20xLCAoX192OHFpKV9fbTIpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUg X19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGlu ZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQotIF9tX3BzdWJ1c2IgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0dXJuIF9t bV9zdWJzX3B1OCAoX19tMSwgX19tMik7Ci1AQCAtNDU2LDEzICs0NTYsMTMgQEAgX21fcHN1YnVz YiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAvKiBTdWJ0cmFjdCB0aGUgMTYtYml0IHZh bHVlcyBpbiBNMiBmcm9tIHRoZSAxNi1iaXQgdmFsdWVzIGluIE0xIHVzaW5nCi0gICAgdW5zaWdu ZWQgc2F0dXJhdGluZyBhcml0aG1ldGljLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9z dWJzX3B1MTYgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0dXJuIChfX202NCkg X19idWlsdGluX2lhMzJfcHN1YnVzdyAoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwotIH0K LSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX3BzdWJ1c3cgKF9fbTY0IF9fbTEsIF9fbTY0IF9f bTIpCi0gewotICAgcmV0dXJuIF9tbV9zdWJzX3B1MTYgKF9fbTEsIF9fbTIpOwotQEAgLTQ3MSwx MyArNDcxLDEzIEBAIF9tX3BzdWJ1c3cgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gLyogTXVs dGlwbHkgZm91ciAxNi1iaXQgdmFsdWVzIGluIE0xIGJ5IGZvdXIgMTYtYml0IHZhbHVlcyBpbiBN MiBwcm9kdWNpbmcKLSAgICBmb3VyIDMyLWJpdCBpbnRlcm1lZGlhdGUgcmVzdWx0cywgd2hpY2gg YXJlIHRoZW4gc3VtbWVkIGJ5IHBhaXJzIHRvCi0gICAgcHJvZHVjZSB0d28gMzItYml0IHJlc3Vs dHMuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX21hZGRfcGkxNiAoX19tNjQgX19tMSwg X19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wbWFkZHdk ICgoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBf X202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp Ci0gX21fcG1hZGR3ZCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gX21t X21hZGRfcGkxNiAoX19tMSwgX19tMik7Ci1AQCAtNDg1LDEzICs0ODUsMTMgQEAgX21fcG1hZGR3 ZCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAvKiBNdWx0aXBseSBmb3VyIHNpZ25lZCAx Ni1iaXQgdmFsdWVzIGluIE0xIGJ5IGZvdXIgc2lnbmVkIDE2LWJpdCB2YWx1ZXMgaW4KLSAgICBN MiBhbmQgcHJvZHVjZSB0aGUgaGlnaCAxNiBiaXRzIG9mIHRoZSAzMi1iaXQgcmVzdWx0cy4gICov Ci0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbXVsaGlfcGkxNiAoX19tNjQgX19tMSwgX19tNjQg X19tMikKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wbXVsaHcgKChfX3Y0 aGkpX19tMSwgKF9fdjRoaSlfX20yKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9w bXVsaHcgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0dXJuIF9tbV9tdWxoaV9w aTE2IChfX20xLCBfX20yKTsKLUBAIC00OTksMjI2ICs0OTksMjI2IEBAIF9tX3BtdWxodyAoX19t NjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAvKiBNdWx0aXBseSBmb3VyIDE2LWJpdCB2YWx1ZXMg aW4gTTEgYnkgZm91ciAxNi1iaXQgdmFsdWVzIGluIE0yIGFuZCBwcm9kdWNlCi0gICAgdGhlIGxv dyAxNiBiaXRzIG9mIHRoZSByZXN1bHRzLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9t dWxsb19waTE2IChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiAoX19tNjQp IF9fYnVpbHRpbl9pYTMyX3BtdWxsdyAoKF9fdjRoaSlfX20xLCAoX192NGhpKV9fbTIpOwotIH0K LSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX3BtdWxsdyAoX19tNjQgX19tMSwgX19tNjQgX19t MikKLSB7Ci0gICByZXR1cm4gX21tX211bGxvX3BpMTYgKF9fbTEsIF9fbTIpOwotIH0KLSAKLSAv KiBTaGlmdCBmb3VyIDE2LWJpdCB2YWx1ZXMgaW4gTSBsZWZ0IGJ5IENPVU5ULiAgKi8KLS1zdGF0 aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0 YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19h cnRpZmljaWFsX18pKQotIF9tbV9zbGxfcGkxNiAoX19tNjQgX19tLCBfX202NCBfX2NvdW50KQot IHsKLSAgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BzbGx3ICgoX192NGhpKV9fbSwg KGxvbmcgbG9uZylfX2NvdW50KTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9wc2xs dyAoX19tNjQgX19tLCBfX202NCBfX2NvdW50KQotIHsKLSAgIHJldHVybiBfbW1fc2xsX3BpMTYg KF9fbSwgX19jb3VudCk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NsbGlfcGkx NiAoX19tNjQgX19tLCBpbnQgX19jb3VudCkKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0 aW5faWEzMl9wc2xsdyAoKF9fdjRoaSlfX20sIF9fY291bnQpOwotIH0KLSAKLS1zdGF0aWMgX19p bmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBf X2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tX3BzbGx3aSAoX19tNjQgX19tLCBpbnQgX19jb3VudCkKLSB7Ci0gICByZXR1 cm4gX21tX3NsbGlfcGkxNiAoX19tLCBfX2NvdW50KTsKLSB9Ci0gCi0gLyogU2hpZnQgdHdvIDMy LWJpdCB2YWx1ZXMgaW4gTSBsZWZ0IGJ5IENPVU5ULiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19t NjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBf X202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQot IF9tbV9zbGxfcGkzMiAoX19tNjQgX19tLCBfX202NCBfX2NvdW50KQotIHsKLSAgIHJldHVybiAo X19tNjQpIF9fYnVpbHRpbl9pYTMyX3BzbGxkICgoX192MnNpKV9fbSwgKGxvbmcgbG9uZylfX2Nv dW50KTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9wc2xsZCAoX19tNjQgX19tLCBf X202NCBfX2NvdW50KQotIHsKLSAgIHJldHVybiBfbW1fc2xsX3BpMzIgKF9fbSwgX19jb3VudCk7 Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NsbGlfcGkzMiAoX19tNjQgX19tLCBp bnQgX19jb3VudCkKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc2xsZCAo KF9fdjJzaSlfX20sIF9fY291bnQpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX3Bz bGxkaSAoX19tNjQgX19tLCBpbnQgX19jb3VudCkKLSB7Ci0gICByZXR1cm4gX21tX3NsbGlfcGkz MiAoX19tLCBfX2NvdW50KTsKLSB9Ci0gCi0gLyogU2hpZnQgdGhlIDY0LWJpdCB2YWx1ZSBpbiBN IGxlZnQgYnkgQ09VTlQuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NsbF9zaTY0IChf X202NCBfX20sIF9fbTY0IF9fY291bnQpCi0gewotICAgcmV0dXJuIChfX202NCkgX19idWlsdGlu X2lhMzJfcHNsbHEgKChsb25nIGxvbmcpX19tLCAobG9uZyBsb25nKV9fY291bnQpOwotIH0KLSAK LS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQotIF9tX3BzbGxxIChfX202NCBfX20sIF9fbTY0IF9fY291bnQp Ci0gewotICAgcmV0dXJuIF9tbV9zbGxfc2k2NCAoX19tLCBfX2NvdW50KTsKLSB9Ci0gCi0tc3Rh dGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStz dGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f YXJ0aWZpY2lhbF9fKSkKLSBfbW1fc2xsaV9zaTY0IChfX202NCBfX20sIGludCBfX2NvdW50KQot IHsKLSAgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BzbGxxICgobG9uZyBsb25nKV9f bSwgKGxvbmcgbG9uZylfX2NvdW50KTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9w c2xscWkgKF9fbTY0IF9fbSwgaW50IF9fY291bnQpCi0gewotICAgcmV0dXJuIF9tbV9zbGxpX3Np NjQgKF9fbSwgX19jb3VudCk7Ci0gfQotIAotIC8qIFNoaWZ0IGZvdXIgMTYtYml0IHZhbHVlcyBp biBNIHJpZ2h0IGJ5IENPVU5UOyBzaGlmdCBpbiB0aGUgc2lnbiBiaXQuICAqLwotLXN0YXRpYyBf X2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGlj IF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCi0gX21tX3NyYV9waTE2IChfX202NCBfX20sIF9fbTY0IF9fY291bnQpCi0gewot ICAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHNyYXcgKChfX3Y0aGkpX19tLCAobG9u ZyBsb25nKV9fY291bnQpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX3BzcmF3IChf X202NCBfX20sIF9fbTY0IF9fY291bnQpCi0gewotICAgcmV0dXJuIF9tbV9zcmFfcGkxNiAoX19t LCBfX2NvdW50KTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3JhaV9waTE2IChf X202NCBfX20sIGludCBfX2NvdW50KQotIHsKLSAgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9p YTMyX3BzcmF3ICgoX192NGhpKV9fbSwgX19jb3VudCk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGlu ZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5s aW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf XykpCi0gX21fcHNyYXdpIChfX202NCBfX20sIGludCBfX2NvdW50KQotIHsKLSAgIHJldHVybiBf bW1fc3JhaV9waTE2IChfX20sIF9fY291bnQpOwotIH0KLSAKLSAvKiBTaGlmdCB0d28gMzItYml0 IHZhbHVlcyBpbiBNIHJpZ2h0IGJ5IENPVU5UOyBzaGlmdCBpbiB0aGUgc2lnbiBiaXQuICAqLwot LXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp Ci0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NyYV9waTMyIChfX202NCBfX20sIF9fbTY0IF9fY291 bnQpCi0gewotICAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHNyYWQgKChfX3Yyc2kp X19tLCAobG9uZyBsb25nKV9fY291bnQpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202 NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9t X3BzcmFkIChfX202NCBfX20sIF9fbTY0IF9fY291bnQpCi0gewotICAgcmV0dXJuIF9tbV9zcmFf cGkzMiAoX19tLCBfX2NvdW50KTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3Jh aV9waTMyIChfX202NCBfX20sIGludCBfX2NvdW50KQotIHsKLSAgIHJldHVybiAoX19tNjQpIF9f YnVpbHRpbl9pYTMyX3BzcmFkICgoX192MnNpKV9fbSwgX19jb3VudCk7Ci0gfQotIAotLXN0YXRp YyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21fcHNyYWRpIChfX202NCBfX20sIGludCBfX2NvdW50KQotIHsKLSAg IHJldHVybiBfbW1fc3JhaV9waTMyIChfX20sIF9fY291bnQpOwotIH0KLSAKLSAvKiBTaGlmdCBm b3VyIDE2LWJpdCB2YWx1ZXMgaW4gTSByaWdodCBieSBDT1VOVDsgc2hpZnQgaW4gemVyb3MuICAq LwotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NybF9waTE2IChfX202NCBfX20sIF9fbTY0IF9f Y291bnQpCi0gewotICAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcHNybHcgKChfX3Y0 aGkpX19tLCAobG9uZyBsb25nKV9fY291bnQpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19t NjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBf X202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQot IF9tX3Bzcmx3IChfX202NCBfX20sIF9fbTY0IF9fY291bnQpCi0gewotICAgcmV0dXJuIF9tbV9z cmxfcGkxNiAoX19tLCBfX2NvdW50KTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1f c3JsaV9waTE2IChfX202NCBfX20sIGludCBfX2NvdW50KQotIHsKLSAgIHJldHVybiAoX19tNjQp IF9fYnVpbHRpbl9pYTMyX3Bzcmx3ICgoX192NGhpKV9fbSwgX19jb3VudCk7Ci0gfQotIAotLXN0 YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0r c3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCi0gX21fcHNybHdpIChfX202NCBfX20sIGludCBfX2NvdW50KQotIHsK LSAgIHJldHVybiBfbW1fc3JsaV9waTE2IChfX20sIF9fY291bnQpOwotIH0KLSAKLSAvKiBTaGlm dCB0d28gMzItYml0IHZhbHVlcyBpbiBNIHJpZ2h0IGJ5IENPVU5UOyBzaGlmdCBpbiB6ZXJvcy4g ICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3JsX3BpMzIgKF9fbTY0IF9fbSwgX19tNjQg X19jb3VudCkKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc3JsZCAoKF9f djJzaSlfX20sIChsb25nIGxvbmcpX19jb3VudCk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBf X202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp Ci0gX21fcHNybGQgKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkKLSB7Ci0gICByZXR1cm4gX21t X3NybF9waTMyIChfX20sIF9fY291bnQpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202 NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9t bV9zcmxpX3BpMzIgKF9fbTY0IF9fbSwgaW50IF9fY291bnQpCi0gewotICAgcmV0dXJuIChfX202 NCkgX19idWlsdGluX2lhMzJfcHNybGQgKChfX3Yyc2kpX19tLCBfX2NvdW50KTsKLSB9Ci0gCi0t c3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkK LStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9wc3JsZGkgKF9fbTY0IF9fbSwgaW50IF9fY291bnQpCi0g ewotICAgcmV0dXJuIF9tbV9zcmxpX3BpMzIgKF9fbSwgX19jb3VudCk7Ci0gfQotIAotIC8qIFNo aWZ0IHRoZSA2NC1iaXQgdmFsdWUgaW4gTSBsZWZ0IGJ5IENPVU5UOyBzaGlmdCBpbiB6ZXJvcy4g ICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3JsX3NpNjQgKF9fbTY0IF9fbSwgX19tNjQg X19jb3VudCkKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wc3JscSAoKGxv bmcgbG9uZylfX20sIChsb25nIGxvbmcpX19jb3VudCk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGlu ZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5s aW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf XykpCi0gX21fcHNybHEgKF9fbTY0IF9fbSwgX19tNjQgX19jb3VudCkKLSB7Ci0gICByZXR1cm4g X21tX3NybF9zaTY0IChfX20sIF9fY291bnQpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19t NjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBf X202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQot IF9tbV9zcmxpX3NpNjQgKF9fbTY0IF9fbSwgaW50IF9fY291bnQpCi0gewotICAgcmV0dXJuIChf X202NCkgX19idWlsdGluX2lhMzJfcHNybHEgKChsb25nIGxvbmcpX19tLCAobG9uZyBsb25nKV9f Y291bnQpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX3BzcmxxaSAoX19tNjQgX19t LCBpbnQgX19jb3VudCkKLSB7Ci0gICByZXR1cm4gX21tX3NybGlfc2k2NCAoX19tLCBfX2NvdW50 KTsKLSB9Ci0gCi0gLyogQml0LXdpc2UgQU5EIHRoZSA2NC1iaXQgdmFsdWVzIGluIE0xIGFuZCBN Mi4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fYW5kX3NpNjQgKF9fbTY0IF9fbTEsIF9f bTY0IF9fbTIpCi0gewotICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BhbmQgKF9fbTEsIF9fbTIp OwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX3BhbmQgKF9fbTY0IF9fbTEsIF9fbTY0 IF9fbTIpCi0gewotICAgcmV0dXJuIF9tbV9hbmRfc2k2NCAoX19tMSwgX19tMik7Ci1AQCAtNzI2 LDM5ICs3MjYsMzkgQEAgX21fcGFuZCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAvKiBC aXQtd2lzZSBjb21wbGVtZW50IHRoZSA2NC1iaXQgdmFsdWUgaW4gTTEgYW5kIGJpdC13aXNlIEFO RCBpdCB3aXRoIHRoZQotICAgIDY0LWJpdCB2YWx1ZSBpbiBNMi4gICovCi0tc3RhdGljIF9faW5s aW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfbW1fYW5kbm90X3NpNjQgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewotICAg cmV0dXJuIF9fYnVpbHRpbl9pYTMyX3BhbmRuIChfX20xLCBfX20yKTsKLSB9Ci0gCi0tc3RhdGlj IF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKLSBfbV9wYW5kbiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICBy ZXR1cm4gX21tX2FuZG5vdF9zaTY0IChfX20xLCBfX20yKTsKLSB9Ci0gCi0gLyogQml0LXdpc2Ug aW5jbHVzaXZlIE9SIHRoZSA2NC1iaXQgdmFsdWVzIGluIE0xIGFuZCBNMi4gICovCi0tc3RhdGlj IF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKLSBfbW1fb3Jfc2k2NCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0g ICByZXR1cm4gX19idWlsdGluX2lhMzJfcG9yIChfX20xLCBfX20yKTsKLSB9Ci0gCi0tc3RhdGlj IF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKLSBfbV9wb3IgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0 dXJuIF9tbV9vcl9zaTY0IChfX20xLCBfX20yKTsKLSB9Ci0gCi0gLyogQml0LXdpc2UgZXhjbHVz aXZlIE9SIHRoZSA2NC1iaXQgdmFsdWVzIGluIE0xIGFuZCBNMi4gICovCi0tc3RhdGljIF9faW5s aW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfbW1feG9yX3NpNjQgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0 dXJuIF9fYnVpbHRpbl9pYTMyX3B4b3IgKF9fbTEsIF9fbTIpOwotIH0KLSAKLS1zdGF0aWMgX19p bmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBf X2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tX3B4b3IgKF9fbTY0IF9fbTEsIF9fbTY0IF9fbTIpCi0gewotICAgcmV0dXJu IF9tbV94b3Jfc2k2NCAoX19tMSwgX19tMik7Ci1AQCAtNzY2LDI1ICs3NjYsMjUgQEAgX21fcHhv ciAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAvKiBDb21wYXJlIGVpZ2h0IDgtYml0IHZh bHVlcy4gIFRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaXMgMHhGRiBpZiB0aGUKLSAgICB0 ZXN0IGlzIHRydWUgYW5kIHplcm8gaWYgZmFsc2UuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202 NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9f bTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0g X21tX2NtcGVxX3BpOCAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gKF9f bTY0KSBfX2J1aWx0aW5faWEzMl9wY21wZXFiICgoX192OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7 Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fcGNtcGVxYiAoX19tNjQgX19tMSwgX19t NjQgX19tMikKLSB7Ci0gICByZXR1cm4gX21tX2NtcGVxX3BpOCAoX19tMSwgX19tMik7Ci0gfQot IAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2NtcGd0X3BpOCAoX19tNjQgX19tMSwgX19tNjQg X19tMikKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl9wY21wZ3RiICgoX192 OHFpKV9fbTEsIChfX3Y4cWkpX19tMik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0 IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21f cGNtcGd0YiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gX21tX2NtcGd0 X3BpOCAoX19tMSwgX19tMik7Ci1AQCAtNzkyLDI1ICs3OTIsMjUgQEAgX21fcGNtcGd0YiAoX19t NjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAvKiBDb21wYXJlIGZvdXIgMTYtYml0IHZhbHVlcy4g IFRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaXMgMHhGRkZGIGlmCi0gICAgdGhlIHRlc3Qg aXMgdHJ1ZSBhbmQgemVybyBpZiBmYWxzZS4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1f Y21wZXFfcGkxNiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gKF9fbTY0 KSBfX2J1aWx0aW5faWEzMl9wY21wZXF3ICgoX192NGhpKV9fbTEsIChfX3Y0aGkpX19tMik7Ci0g fQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fcGNtcGVxdyAoX19tNjQgX19tMSwgX19tNjQg X19tMikKLSB7Ci0gICByZXR1cm4gX21tX2NtcGVxX3BpMTYgKF9fbTEsIF9fbTIpOwotIH0KLSAK LS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXBndF9waTE2IChfX202NCBfX20xLCBfX202NCBf X20yKQotIHsKLSAgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BjbXBndHcgKChfX3Y0 aGkpX19tMSwgKF9fdjRoaSlfX20yKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9w Y21wZ3R3IChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiBfbW1fY21wZ3Rf cGkxNiAoX19tMSwgX19tMik7Ci1AQCAtODE4LDUzICs4MTgsNTMgQEAgX21fcGNtcGd0dyAoX19t NjQgX19tMSwgX19tNjQgX19tMikKLSAKLSAvKiBDb21wYXJlIHR3byAzMi1iaXQgdmFsdWVzLiAg VGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyAweEZGRkZGRkZGIGlmCi0gICAgdGhlIHRl c3QgaXMgdHJ1ZSBhbmQgemVybyBpZiBmYWxzZS4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0 IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19t NjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBf bW1fY21wZXFfcGkzMiAoX19tNjQgX19tMSwgX19tNjQgX19tMikKLSB7Ci0gICByZXR1cm4gKF9f bTY0KSBfX2J1aWx0aW5faWEzMl9wY21wZXFkICgoX192MnNpKV9fbTEsIChfX3Yyc2kpX19tMik7 Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fcGNtcGVxZCAoX19tNjQgX19tMSwgX19t NjQgX19tMikKLSB7Ci0gICByZXR1cm4gX21tX2NtcGVxX3BpMzIgKF9fbTEsIF9fbTIpOwotIH0K LSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXBndF9waTMyIChfX202NCBfX20xLCBfX202 NCBfX20yKQotIHsKLSAgIHJldHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BjbXBndGQgKChf X3Yyc2kpX19tMSwgKF9fdjJzaSlfX20yKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0 IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19t NjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBf bV9wY21wZ3RkIChfX202NCBfX20xLCBfX202NCBfX20yKQotIHsKLSAgIHJldHVybiBfbW1fY21w Z3RfcGkzMiAoX19tMSwgX19tMik7Ci0gfQotIAotIC8qIENyZWF0ZXMgYSA2NC1iaXQgemVyby4g ICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc2V0emVyb19zaTY0ICh2b2lkKQotIHsKLSAg IHJldHVybiAoX19tNjQpMExMOwotIH0KLSAKLSAvKiBDcmVhdGVzIGEgdmVjdG9yIG9mIHR3byAz Mi1iaXQgdmFsdWVzOyBJMCBpcyBsZWFzdCBzaWduaWZpY2FudC4gICovCi0tc3RhdGljIF9faW5s aW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfbW1fc2V0X3BpMzIgKGludCBfX2kxLCBpbnQgX19pMCkKLSB7Ci0gICByZXR1cm4g KF9fbTY0KSBfX2J1aWx0aW5faWEzMl92ZWNfaW5pdF92MnNpIChfX2kwLCBfX2kxKTsKLSB9Ci0g Ci0gLyogQ3JlYXRlcyBhIHZlY3RvciBvZiBmb3VyIDE2LWJpdCB2YWx1ZXM7IFcwIGlzIGxlYXN0 IHNpZ25pZmljYW50LiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zZXRfcGkxNiAoc2hv cnQgX193Mywgc2hvcnQgX193Miwgc2hvcnQgX193MSwgc2hvcnQgX193MCkKLSB7Ci0gICByZXR1 cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl92ZWNfaW5pdF92NGhpIChfX3cwLCBfX3cxLCBfX3cy LCBfX3czKTsKLSB9Ci0gCi0gLyogQ3JlYXRlcyBhIHZlY3RvciBvZiBlaWdodCA4LWJpdCB2YWx1 ZXM7IEIwIGlzIGxlYXN0IHNpZ25pZmljYW50LiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202 NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9t bV9zZXRfcGk4IChjaGFyIF9fYjcsIGNoYXIgX19iNiwgY2hhciBfX2I1LCBjaGFyIF9fYjQsCi0g CSAgICAgY2hhciBfX2IzLCBjaGFyIF9fYjIsIGNoYXIgX19iMSwgY2hhciBfX2IwKQotIHsKLUBA IC04NzMsMTkgKzg3MywxOSBAQCBfbW1fc2V0X3BpOCAoY2hhciBfX2I3LCBjaGFyIF9fYjYsIGNo YXIgCi0gfQotIAotIC8qIFNpbWlsYXIsIGJ1dCB3aXRoIHRoZSBhcmd1bWVudHMgaW4gcmV2ZXJz ZSBvcmRlci4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc2V0cl9waTMyIChpbnQgX19p MCwgaW50IF9faTEpCi0gewotICAgcmV0dXJuIF9tbV9zZXRfcGkzMiAoX19pMSwgX19pMCk7Ci0g fQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NldHJfcGkxNiAoc2hvcnQgX193MCwgc2hv cnQgX193MSwgc2hvcnQgX193Miwgc2hvcnQgX193MykKLSB7Ci0gICByZXR1cm4gX21tX3NldF9w aTE2IChfX3czLCBfX3cyLCBfX3cxLCBfX3cwKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9f bTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUg X19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkK LSBfbW1fc2V0cl9waTggKGNoYXIgX19iMCwgY2hhciBfX2IxLCBjaGFyIF9fYjIsIGNoYXIgX19i MywKLSAJICAgICAgY2hhciBfX2I0LCBjaGFyIF9fYjUsIGNoYXIgX19iNiwgY2hhciBfX2I3KQot IHsKLUBAIC04OTMsMjEgKzg5MywyMSBAQCBfbW1fc2V0cl9waTggKGNoYXIgX19iMCwgY2hhciBf X2IxLCBjaGFyCi0gfQotIAotIC8qIENyZWF0ZXMgYSB2ZWN0b3Igb2YgdHdvIDMyLWJpdCB2YWx1 ZXMsIGJvdGggZWxlbWVudHMgY29udGFpbmluZyBJLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19t NjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBf X202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQot IF9tbV9zZXQxX3BpMzIgKGludCBfX2kpCi0gewotICAgcmV0dXJuIF9tbV9zZXRfcGkzMiAoX19p LCBfX2kpOwotIH0KLSAKLSAvKiBDcmVhdGVzIGEgdmVjdG9yIG9mIGZvdXIgMTYtYml0IHZhbHVl cywgYWxsIGVsZW1lbnRzIGNvbnRhaW5pbmcgVy4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0 IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19t NjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBf bW1fc2V0MV9waTE2IChzaG9ydCBfX3cpCi0gewotICAgcmV0dXJuIF9tbV9zZXRfcGkxNiAoX193 LCBfX3csIF9fdywgX193KTsKLSB9Ci0gCi0gLyogQ3JlYXRlcyBhIHZlY3RvciBvZiBlaWdodCA4 LWJpdCB2YWx1ZXMsIGFsbCBlbGVtZW50cyBjb250YWluaW5nIEIuICAqLwotLXN0YXRpYyBfX2lu bGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCi0gX21tX3NldDFfcGk4IChjaGFyIF9fYikKLSB7Ci0gICByZXR1cm4gX21tX3NldF9w aTggKF9fYiwgX19iLCBfX2IsIF9fYiwgX19iLCBfX2IsIF9fYiwgX19iKTsKLS0tLSBnY2MvY29u ZmlnL2kzODYvcG1taW50cmluLmguamoJMjAwNy0wNi0yNiAxMzozODo0Ni4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnY2MvY29uZmlnL2kzODYvcG1taW50cmluLmgJMjAwNy0wOS0yNSAxNTowMTo1Mi4w MDAwMDAwMDAgKzAyMDAKLUBAIC00OCw3OSArNDgsNzkgQEAKLSAjZGVmaW5lIF9NTV9HRVRfREVO T1JNQUxTX1pFUk9fTU9ERSgpIFwKLSAgIChfbW1fZ2V0Y3NyKCkgJiBfTU1fREVOT1JNQUxTX1pF Uk9fTUFTSykKLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2FkZHN1Yl9wcyAoX19tMTI4 IF9fWCwgX19tMTI4IF9fWSkKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJf YWRkc3VicHMgKChfX3Y0c2YpX19YLCAoX192NHNmKV9fWSk7Ci0gfQotIAotLXN0YXRpYyBfX2lu bGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBf X2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp Y2lhbF9fKSkKLSBfbW1faGFkZF9wcyAoX19tMTI4IF9fWCwgX19tMTI4IF9fWSkKLSB7Ci0gICBy ZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfaGFkZHBzICgoX192NHNmKV9fWCwgKF9fdjRz ZilfX1kpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2hzdWJfcHMgKF9fbTEy OCBfX1gsIF9fbTEyOCBfX1kpCi0gewotICAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMy X2hzdWJwcyAoKF9fdjRzZilfX1gsIChfX3Y0c2YpX19ZKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5s aW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV9tb3ZlaGR1cF9wcyAoX19tMTI4IF9fWCkKLSB7Ci0gICByZXR1cm4gKF9f bTEyOCkgX19idWlsdGluX2lhMzJfbW92c2hkdXAgKChfX3Y0c2YpX19YKTsKLSB9Ci0gCi0tc3Rh dGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0r c3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotIF9tbV9tb3ZlbGR1cF9wcyAoX19tMTI4IF9fWCkKLSB7Ci0gICBy ZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbW92c2xkdXAgKChfX3Y0c2YpX19YKTsKLSB9 Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2FkZHN1Yl9wZCAoX19tMTI4ZCBfX1gs IF9fbTEyOGQgX19ZKQotIHsKLSAgIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJfYWRk c3VicGQgKChfX3YyZGYpX19YLCAoX192MmRmKV9fWSk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGlu ZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV9oYWRkX3BkIChfX20xMjhkIF9fWCwgX19tMTI4ZCBfX1kpCi0gewotICAg cmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9oYWRkcGQgKChfX3YyZGYpX19YLCAoX192 MmRmKV9fWSk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9oc3ViX3BkIChf X20xMjhkIF9fWCwgX19tMTI4ZCBfX1kpCi0gewotICAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0 aW5faWEzMl9oc3VicGQgKChfX3YyZGYpX19YLCAoX192MmRmKV9fWSk7Ci0gfQotIAotLXN0YXRp YyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStz dGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotIF9tbV9sb2FkZHVwX3BkIChkb3VibGUgY29uc3QgKl9fUCkKLSB7 Ci0gICByZXR1cm4gX21tX2xvYWQxX3BkIChfX1ApOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUg X19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5s aW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfbW1fbW92ZWR1cF9wZCAoX19tMTI4ZCBfX1gpCi0gewotICAgcmV0dXJuIF9tbV9z aHVmZmxlX3BkIChfX1gsIF9fWCwgX01NX1NIVUZGTEUyICgwLDApKTsKLSB9Ci0gCi0tc3RhdGlj IF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0 YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCi0gX21tX2xkZHF1X3NpMTI4IChfX20xMjhpIGNvbnN0ICpfX1ApCi0g ewotICAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9sZGRxdSAoKGNoYXIgY29uc3Qg KilfX1ApOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbW9uaXRvciAodm9pZCBjb25z dCAqIF9fUCwgdW5zaWduZWQgaW50IF9fRSwgdW5zaWduZWQgaW50IF9fSCkKLSB7Ci0gICBfX2J1 aWx0aW5faWEzMl9tb25pdG9yIChfX1AsIF9fRSwgX19IKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5s aW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lu bGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf XykpCi0gX21tX213YWl0ICh1bnNpZ25lZCBpbnQgX19FLCB1bnNpZ25lZCBpbnQgX19IKQotIHsK LSAgIF9fYnVpbHRpbl9pYTMyX213YWl0IChfX0UsIF9fSCk7Ci0tLS0gZ2NjL2NvbmZpZy9pMzg2 L21tM2Rub3cuaC5qagkyMDA3LTAyLTIwIDIyOjM4OjU5LjAwMDAwMDAwMCArMDEwMAotKysrIGdj Yy9jb25maWcvaTM4Ni9tbTNkbm93LmgJMjAwNy0wOS0yNSAxNTowMTo1Mi4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xLDQgKzEsNCBAQAotLS8qIENvcHlyaWdodCAoQykgMjAwNCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgot IAotLS0tIGdjYy9jb25maWcvaTM4Ni94bW1pbnRyaW4uaC5qagkyMDA3LTA2LTI2IDEzOjM4OjQ2 LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9jb25maWcvaTM4Ni94bW1pbnRyaW4uaAkyMDA3LTA5 LTI1IDE1OjA2OjQ3LjAwMDAwMDAwMCArMDIwMAotQEAgLTg4LDcgKzg4LDcgQEAgZW51bSBfbW1f aGludAotICNkZWZpbmUgX01NX0ZMVVNIX1pFUk9fT0ZGICAgIDB4MDAwMAotIAotIC8qIENyZWF0 ZSBhIHZlY3RvciBvZiB6ZXJvcy4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zZXR6 ZXJvX3BzICh2b2lkKQotIHsKLSAgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpeyAwLjBm LCAwLjBmLCAwLjBmLCAwLjBmIH07Ci1AQCAtOTgsNTUgKzk4LDU1IEBAIF9tbV9zZXR6ZXJvX3Bz ICh2b2lkKQotICAgIGZsb2F0aW5nLXBvaW50KSB2YWx1ZXMgb2YgQSBhbmQgQjsgdGhlIHVwcGVy IHRocmVlIFNQRlAgdmFsdWVzIGFyZQotICAgIHBhc3NlZCB0aHJvdWdoIGZyb20gQS4gICovCi0g Ci0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9hZGRfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBf X0IpCi0gewotICAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2FkZHNzICgoX192NHNm KV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3N1 Yl9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19i dWlsdGluX2lhMzJfc3Vic3MgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQik7Ci0gfQotIAotLXN0 YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQot K3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbXVsX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQot IHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9tdWxzcyAoKF9fdjRzZilfX0Es IChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9kaXZfc3Mg KF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRp bl9pYTMyX2RpdnNzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMg X19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21tX3NxcnRfc3MgKF9fbTEyOCBfX0EpCi0gewotICAgcmV0dXJuIChf X20xMjgpIF9fYnVpbHRpbl9pYTMyX3NxcnRzcyAoKF9fdjRzZilfX0EpOwotIH0KLSAKLS1zdGF0 aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStz dGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCi0gX21tX3JjcF9zcyAoX19tMTI4IF9fQSkKLSB7Ci0gICByZXR1cm4g KF9fbTEyOCkgX19idWlsdGluX2lhMzJfcmNwc3MgKChfX3Y0c2YpX19BKTsKLSB9Ci0gCi0tc3Rh dGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0r c3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotIF9tbV9yc3FydF9zcyAoX19tMTI4IF9fQSkKLSB7Ci0gICByZXR1 cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfcnNxcnRzcyAoKF9fdjRzZilfX0EpOwotIH0KLSAK LS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX21pbl9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9f QikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbWluc3MgKChfX3Y0c2Yp X19BLCAoX192NHNmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbWF4 X3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1 aWx0aW5faWEzMl9tYXhzcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLUBAIC0xNTQsNTUg KzE1NCw1NSBAQCBfbW1fbWF4X3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQotIAotIC8qIFBl cmZvcm0gdGhlIHJlc3BlY3RpdmUgb3BlcmF0aW9uIG9uIHRoZSBmb3VyIFNQRlAgdmFsdWVzIGlu IEEgYW5kIEIuICAqLwotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fYWRkX3BzIChfX20x MjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEz Ml9hZGRwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5s aW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV9zdWJfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gewotICAgcmV0 dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3N1YnBzICgoX192NHNmKV9fQSwgKF9fdjRzZilf X0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX211bF9wcyAoX19tMTI4IF9f QSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbXVs cHMgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBf X20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGlu ZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKLSBfbW1fZGl2X3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiAo X19tMTI4KSBfX2J1aWx0aW5faWEzMl9kaXZwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsK LSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zcXJ0X3BzIChfX20xMjggX19BKQot IHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9zcXJ0cHMgKChfX3Y0c2YpX19B KTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9yY3BfcHMgKF9fbTEyOCBfX0Ep Ci0gewotICAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3JjcHBzICgoX192NHNmKV9f QSk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fcnNxcnRfcHMgKF9fbTEyOCBf X0EpCi0gewotICAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0cHMgKChfX3Y0 c2YpX19BKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9taW5fcHMgKF9fbTEy OCBfX0EsIF9fbTEyOCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMy X21pbnBzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxp bmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCi0gX21tX21heF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1 cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfbWF4cHMgKChfX3Y0c2YpX19BLCAoX192NHNmKV9f Qik7Ci1AQCAtMjEwLDI1ICsyMTAsMjUgQEAgX21tX21heF9wcyAoX19tMTI4IF9fQSwgX19tMTI4 IF9fQikKLSAKLSAvKiBQZXJmb3JtIGxvZ2ljYWwgYml0LXdpc2Ugb3BlcmF0aW9ucyBvbiAxMjgt Yml0IHZhbHVlcy4gICovCi0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9hbmRfcHMgKF9f bTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gewotICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2FuZHBz IChfX0EsIF9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fYW5kbm90X3Bz IChfX20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9h bmRucHMgKF9fQSwgX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9vcl9w cyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gX19idWlsdGluX2lhMzJf b3JwcyAoX19BLCBfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3hvcl9w cyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gX19idWlsdGluX2lhMzJf eG9ycHMgKF9fQSwgX19CKTsKLUBAIC0yMzgsMjUgKzIzOCwyNSBAQCBfbW1feG9yX3BzIChfX20x MjggX19BLCBfX20xMjggX19CKQotICAgIGNvbXBhcmlzb24gaXMgdHJ1ZSwgcGxhY2UgYSBtYXNr IG9mIGFsbCBvbmVzIGluIHRoZSByZXN1bHQsIG90aGVyd2lzZSBhCi0gICAgbWFzayBvZiB6ZXJv cy4gIFRoZSB1cHBlciB0aHJlZSBTUEZQIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggZnJvbSBB LiAgKi8KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2NtcGVxX3NzIChfX20xMjggX19B LCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jbXBl cXNzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUg X19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxp bmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf XykpCi0gX21tX2NtcGx0X3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVy biAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jbXBsdHNzICgoX192NHNmKV9fQSwgKF9fdjRzZilf X0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2NtcGxlX3NzIChfX20xMjgg X19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9j bXBsZXNzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxp bmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCi0gX21tX2NtcGd0X3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJl dHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9tb3ZzcyAoKF9fdjRzZikgX19BLAotQEAgLTI2 Niw3ICsyNjYsNyBAQCBfbW1fY21wZ3Rfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gCQkJ CQkJCQlfX0EpKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXBnZV9zcyAo X19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGlu X2lhMzJfbW92c3MgKChfX3Y0c2YpIF9fQSwKLUBAIC0yNzYsMjUgKzI3NiwyNSBAQCBfbW1fY21w Z2Vfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gCQkJCQkJCQlfX0EpKTsKLSB9Ci0gCi0t c3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp Ci0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXBuZXFfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBf X0IpCi0gewotICAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2NtcG5lcXNzICgoX192 NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4 IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21t X2NtcG5sdF9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEy OCkgX19idWlsdGluX2lhMzJfY21wbmx0c3MgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQik7Ci0g fQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wbmxlX3NzIChfX20xMjggX19BLCBf X20xMjggX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jbXBubGVz cyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9f bTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQotIF9tbV9jbXBuZ3Rfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gewotICAgcmV0dXJu IChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX21vdnNzICgoX192NHNmKSBfX0EsCi1AQCAtMzA0LDcg KzMwNCw3IEBAIF9tbV9jbXBuZ3Rfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gCQkJCQkJ CQkgX19BKSk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wbmdlX3NzIChf X20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5f aWEzMl9tb3ZzcyAoKF9fdjRzZikgX19BLAotQEAgLTMxNCwxMyArMzE0LDEzIEBAIF9tbV9jbXBu Z2Vfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gCQkJCQkJCQkgX19BKSk7Ci0gfQotIAot LXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wb3JkX3NzIChfX20xMjggX19BLCBfX20xMjgg X19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jbXBvcmRzcyAoKF9f djRzZilfX0EsIChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEy OCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9t bV9jbXB1bm9yZF9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9f bTEyOCkgX19idWlsdGluX2lhMzJfY21wdW5vcmRzcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19C KTsKLUBAIC0zMzAsNzMgKzMzMCw3MyBAQCBfbW1fY21wdW5vcmRfc3MgKF9fbTEyOCBfX0EsIF9f bTEyOCBfX0IpCi0gICAgZWxlbWVudCwgaWYgdGhlIGNvbXBhcmlzb24gaXMgdHJ1ZSwgcGxhY2Ug YSBtYXNrIG9mIGFsbCBvbmVzIGluIHRoZQotICAgIHJlc3VsdCwgb3RoZXJ3aXNlIGEgbWFzayBv ZiB6ZXJvcy4gICovCi0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXBlcV9wcyAoX19t MTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lh MzJfY21wZXFwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9f aW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGlj IF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQotIF9tbV9jbXBsdF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0g ICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY21wbHRwcyAoKF9fdjRzZilfX0EsIChf X3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXBsZV9wcyAo X19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGlu X2lhMzJfY21wbGVwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGlj IF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19h cnRpZmljaWFsX18pKQotIF9tbV9jbXBndF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7 Ci0gICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY21wZ3RwcyAoKF9fdjRzZilfX0Es IChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXBnZV9w cyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19idWls dGluX2lhMzJfY21wZ2VwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3Rh dGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0r c3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotIF9tbV9jbXBuZXFfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0Ip Ci0gewotICAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2NtcG5lcXBzICgoX192NHNm KV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2Nt cG5sdF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkg X19idWlsdGluX2lhMzJfY21wbmx0cHMgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQik7Ci0gfQot IAotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wbmxlX3BzIChfX20xMjggX19BLCBfX20x MjggX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jbXBubGVwcyAo KF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEy OCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9f bTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQot IF9tbV9jbXBuZ3RfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gewotICAgcmV0dXJuIChf X20xMjgpIF9fYnVpbHRpbl9pYTMyX2NtcG5ndHBzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0Ip OwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2NtcG5nZV9wcyAoX19tMTI4IF9f QSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfY21w bmdlcHMgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGlu ZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lu bGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfbW1fY21wb3JkX3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJl dHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jbXBvcmRwcyAoKF9fdjRzZilfX0EsIChfX3Y0 c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXB1bm9yZF9wcyAo X19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGlu X2lhMzJfY21wdW5vcmRwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLUBAIC00MDUsNzMg KzQwNSw3MyBAQCBfbW1fY21wdW5vcmRfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gLyog Q29tcGFyZSB0aGUgbG93ZXIgU1BGUCB2YWx1ZXMgb2YgQSBhbmQgQiBhbmQgcmV0dXJuIDEgaWYg dHJ1ZQotICAgIGFuZCAwIGlmIGZhbHNlLiAgKi8KLSAKLS1zdGF0aWMgX19pbmxpbmUgaW50IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgaW50IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2Nv bWllcV9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gX19idWlsdGlu X2lhMzJfY29taWVxICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMg X19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMg X19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCi0gX21tX2NvbWlsdF9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICBy ZXR1cm4gX19idWlsdGluX2lhMzJfY29taWx0ICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwot IH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2NvbWlsZV9zcyAoX19tMTI4IF9fQSwgX19tMTI4 IF9fQikKLSB7Ci0gICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taWxlICgoX192NHNmKV9fQSwg KF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2NvbWlndF9zcyAoX19t MTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gX19idWlsdGluX2lhMzJfY29taWd0 ICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgaW50 IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgaW50 IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21t X2NvbWlnZV9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gX19idWls dGluX2lhMzJfY29taWdlICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0 aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCi0gX21tX2NvbWluZXFfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gewot ICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2NvbWluZXEgKChfX3Y0c2YpX19BLCAoX192NHNmKV9f Qik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fdWNvbWllcV9zcyAoX19tMTI4IF9fQSwg X19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWllcSAoKF9fdjRz ZilfX0EsIChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV91Y29taWx0 X3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEz Ml91Y29taWx0ICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19p bmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf XykpCi0gX21tX3Vjb21pbGVfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gewotICAgcmV0 dXJuIF9fYnVpbHRpbl9pYTMyX3Vjb21pbGUgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQik7Ci0g fQotIAotLXN0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKQotK3N0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fdWNvbWlndF9zcyAoX19tMTI4IF9fQSwgX19tMTI4 IF9fQikKLSB7Ci0gICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlndCAoKF9fdjRzZilfX0Es IChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV91Y29taWdlX3NzIChf X20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29t aWdlICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUg aW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUg aW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0g X21tX3Vjb21pbmVxX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiBf X2J1aWx0aW5faWEzMl91Y29taW5lcSAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLUBAIC00 NzksMTMgKzQ3OSwxMyBAQCBfbW1fdWNvbWluZXFfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0Ip Ci0gCi0gLyogQ29udmVydCB0aGUgbG93ZXIgU1BGUCB2YWx1ZSB0byBhIDMyLWJpdCBpbnRlZ2Vy IGFjY29yZGluZyB0byB0aGUgY3VycmVudAotICAgIHJvdW5kaW5nIG1vZGUuICAqLwotLXN0YXRp YyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRp YyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp Y2lhbF9fKSkKLSBfbW1fY3Z0c3Nfc2kzMiAoX19tMTI4IF9fQSkKLSB7Ci0gICByZXR1cm4gX19i dWlsdGluX2lhMzJfY3Z0c3Myc2kgKChfX3Y0c2YpIF9fQSk7Ci0gfQotIAotLXN0YXRpYyBfX2lu bGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lu bGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKLSBfbW1fY3Z0X3NzMnNpIChfX20xMjggX19BKQotIHsKLSAgIHJldHVybiBfbW1fY3Z0c3Nf c2kzMiAoX19BKTsKLUBAIC00OTYsMTQgKzQ5NiwxNCBAQCBfbW1fY3Z0X3NzMnNpIChfX20xMjgg X19BKQotICAgIGN1cnJlbnQgcm91bmRpbmcgbW9kZS4gICovCi0gCi0gLyogSW50ZWwgaW50cmlu c2ljLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgbG9uZyBsb25nIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHNzX3NpNjQgKF9f bTEyOCBfX0EpCi0gewotICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHNzMnNpNjQgKChfX3Y0 c2YpIF9fQSk7Ci0gfQotIAotIC8qIE1pY3Jvc29mdCBpbnRyaW5zaWMuICAqLwotLXN0YXRpYyBf X2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0 YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY3Z0c3Nfc2k2NHggKF9fbTEyOCBfX0EpCi0gewotICAg cmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHNzMnNpNjQgKChfX3Y0c2YpIF9fQSk7Ci1AQCAtNTEy LDI2ICs1MTIsMjYgQEAgX21tX2N2dHNzX3NpNjR4IChfX20xMjggX19BKQotIAotIC8qIENvbnZl cnQgdGhlIHR3byBsb3dlciBTUEZQIHZhbHVlcyB0byAzMi1iaXQgaW50ZWdlcnMgYWNjb3JkaW5n IHRvIHRoZQotICAgIGN1cnJlbnQgcm91bmRpbmcgbW9kZS4gIFJldHVybiB0aGUgaW50ZWdlcnMg aW4gcGFja2VkIGZvcm0uICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHBzX3BpMzIg KF9fbTEyOCBfX0EpCi0gewotICAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfY3Z0cHMy cGkgKChfX3Y0c2YpIF9fQSk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dF9w czJwaSAoX19tMTI4IF9fQSkKLSB7Ci0gICByZXR1cm4gX21tX2N2dHBzX3BpMzIgKF9fQSk7Ci0g fQotIAotIC8qIFRydW5jYXRlIHRoZSBsb3dlciBTUEZQIHZhbHVlIHRvIGEgMzItYml0IGludGVn ZXIuICAqLwotLXN0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY3Z0dHNzX3NpMzIgKF9fbTEyOCBfX0EpCi0g ewotICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHRzczJzaSAoKF9fdjRzZikgX19BKTsKLSB9 Ci0gCi0tc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCi0rc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnR0X3NzMnNpIChfX20xMjggX19BKQotIHsKLSAg IHJldHVybiBfbW1fY3Z0dHNzX3NpMzIgKF9fQSk7Ci1AQCAtNTQxLDE0ICs1NDEsMTQgQEAgX21t X2N2dHRfc3Myc2kgKF9fbTEyOCBfX0EpCi0gLyogVHJ1bmNhdGUgdGhlIGxvd2VyIFNQRlAgdmFs dWUgdG8gYSAzMi1iaXQgaW50ZWdlci4gICovCi0gCi0gLyogSW50ZWwgaW50cmluc2ljLiAgKi8K LS1zdGF0aWMgX19pbmxpbmUgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHRzc19zaTY0IChfX20xMjggX19B KQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnR0c3Myc2k2NCAoKF9fdjRzZikgX19B KTsKLSB9Ci0gCi0gLyogTWljcm9zb2Z0IGludHJpbnNpYy4gICovCi0tc3RhdGljIF9faW5saW5l IGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQotIF9tbV9jdnR0c3Nfc2k2NHggKF9fbTEyOCBfX0EpCi0gewotICAgcmV0dXJu IF9fYnVpbHRpbl9pYTMyX2N2dHRzczJzaTY0ICgoX192NHNmKSBfX0EpOwotQEAgLTU1NywyNiAr NTU3LDI2IEBAIF9tbV9jdnR0c3Nfc2k2NHggKF9fbTEyOCBfX0EpCi0gCi0gLyogVHJ1bmNhdGUg dGhlIHR3byBsb3dlciBTUEZQIHZhbHVlcyB0byAzMi1iaXQgaW50ZWdlcnMuICBSZXR1cm4gdGhl Ci0gICAgaW50ZWdlcnMgaW4gcGFja2VkIGZvcm0uICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202 NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9f bTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0g X21tX2N2dHRwc19waTMyIChfX20xMjggX19BKQotIHsKLSAgIHJldHVybiAoX19tNjQpIF9fYnVp bHRpbl9pYTMyX2N2dHRwczJwaSAoKF9fdjRzZikgX19BKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5s aW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfbW1fY3Z0dF9wczJwaSAoX19tMTI4IF9fQSkKLSB7Ci0gICByZXR1cm4gX21tX2N2 dHRwc19waTMyIChfX0EpOwotIH0KLSAKLSAvKiBDb252ZXJ0IEIgdG8gYSBTUEZQIHZhbHVlIGFu ZCBpbnNlcnQgaXQgYXMgZWxlbWVudCB6ZXJvIGluIEEuICAqLwotLXN0YXRpYyBfX2lubGluZSBf X20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGlu ZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKLSBfbW1fY3Z0c2kzMl9zcyAoX19tMTI4IF9fQSwgaW50IF9fQikKLSB7Ci0gICByZXR1cm4g KF9fbTEyOCkgX19idWlsdGluX2lhMzJfY3Z0c2kyc3MgKChfX3Y0c2YpIF9fQSwgX19CKTsKLSB9 Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRfc2kyc3MgKF9fbTEyOCBfX0EsIGlu dCBfX0IpCi0gewotICAgcmV0dXJuIF9tbV9jdnRzaTMyX3NzIChfX0EsIF9fQik7Ci1AQCAtNTg2 LDE0ICs1ODYsMTQgQEAgX21tX2N2dF9zaTJzcyAoX19tMTI4IF9fQSwgaW50IF9fQikKLSAvKiBD b252ZXJ0IEIgdG8gYSBTUEZQIHZhbHVlIGFuZCBpbnNlcnQgaXQgYXMgZWxlbWVudCB6ZXJvIGlu IEEuICAqLwotIAotIC8qIEludGVsIGludHJpbnNpYy4gICovCi0tc3RhdGljIF9faW5saW5lIF9f bTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQotIF9tbV9jdnRzaTY0X3NzIChfX20xMjggX19BLCBsb25nIGxvbmcgX19CKQotIHsKLSAgIHJl dHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9jdnRzaTY0MnNzICgoX192NHNmKSBfX0EsIF9f Qik7Ci0gfQotIAotIC8qIE1pY3Jvc29mdCBpbnRyaW5zaWMuICAqLwotLXN0YXRpYyBfX2lubGlu ZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lu bGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfbW1fY3Z0c2k2NHhfc3MgKF9fbTEyOCBfX0EsIGxvbmcgbG9uZyBfX0IpCi0gewot ICAgcmV0dXJuIChfX20xMjgpIF9fYnVpbHRpbl9pYTMyX2N2dHNpNjQyc3MgKChfX3Y0c2YpIF9f QSwgX19CKTsKLUBAIC02MDIsMjAgKzYwMiwyMCBAQCBfbW1fY3Z0c2k2NHhfc3MgKF9fbTEyOCBf X0EsIGxvbmcgbG9uZyBfCi0gCi0gLyogQ29udmVydCB0aGUgdHdvIDMyLWJpdCB2YWx1ZXMgaW4g QiB0byBTUEZQIGZvcm0gYW5kIGluc2VydCB0aGVtCi0gICAgYXMgdGhlIHR3byBsb3dlciBlbGVt ZW50cyBpbiBBLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHBpMzJfcHMgKF9f bTEyOCBfX0EsIF9fbTY0IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lh MzJfY3Z0cGkycHMgKChfX3Y0c2YpIF9fQSwgKF9fdjJzaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMg X19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21tX2N2dF9waTJwcyAoX19tMTI4IF9fQSwgX19tNjQgX19CKQotIHsK LSAgIHJldHVybiBfbW1fY3Z0cGkzMl9wcyAoX19BLCBfX0IpOwotIH0KLSAKLSAvKiBDb252ZXJ0 IHRoZSBmb3VyIHNpZ25lZCAxNi1iaXQgdmFsdWVzIGluIEEgdG8gU1BGUCBmb3JtLiAgKi8KLS1z dGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkK LStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHBpMTZfcHMgKF9fbTY0IF9fQSkKLSB7Ci0gICBf X3Y0aGkgX19zaWduOwotQEAgLTY0MSw3ICs2NDEsNyBAQCBfbW1fY3Z0cGkxNl9wcyAoX19tNjQg X19BKQotIH0KLSAKLSAvKiBDb252ZXJ0IHRoZSBmb3VyIHVuc2lnbmVkIDE2LWJpdCB2YWx1ZXMg aW4gQSB0byBTUEZQIGZvcm0uICAqLwotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY3Z0cHUx Nl9wcyAoX19tNjQgX19BKQotIHsKLSAgIF9fdjJzaSBfX2hpc2ksIF9fbG9zaTsKLUBAIC02NjEs NyArNjYxLDcgQEAgX21tX2N2dHB1MTZfcHMgKF9fbTY0IF9fQSkKLSB9Ci0gCi0gLyogQ29udmVy dCB0aGUgbG93IGZvdXIgc2lnbmVkIDgtYml0IHZhbHVlcyBpbiBBIHRvIFNQRlAgZm9ybS4gICov Ci0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRwaThfcHMgKF9fbTY0IF9fQSkKLSB7Ci0g ICBfX3Y4cWkgX19zaWduOwotQEAgLTY3OCw3ICs2NzgsNyBAQCBfbW1fY3Z0cGk4X3BzIChfX202 NCBfX0EpCi0gfQotIAotIC8qIENvbnZlcnQgdGhlIGxvdyBmb3VyIHVuc2lnbmVkIDgtYml0IHZh bHVlcyBpbiBBIHRvIFNQRlAgZm9ybS4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9j dnRwdThfcHMoX19tNjQgX19BKQotIHsKLSAgIF9fQSA9IChfX202NCkgX19idWlsdGluX2lhMzJf cHVucGNrbGJ3ICgoX192OHFpKV9fQSwgKF9fdjhxaSkwTEwpOwotQEAgLTY4Niw3ICs2ODYsNyBA QCBfbW1fY3Z0cHU4X3BzKF9fbTY0IF9fQSkKLSB9Ci0gCi0gLyogQ29udmVydCB0aGUgZm91ciBz aWduZWQgMzItYml0IHZhbHVlcyBpbiBBIGFuZCBCIHRvIFNQRlAgZm9ybS4gICovCi0tc3RhdGlj IF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19h cnRpZmljaWFsX18pKQotIF9tbV9jdnRwaTMyeDJfcHMoX19tNjQgX19BLCBfX202NCBfX0IpCi0g ewotICAgX192NHNmIF9femVybyA9IChfX3Y0c2YpIF9tbV9zZXR6ZXJvX3BzICgpOwotQEAgLTY5 Niw3ICs2OTYsNyBAQCBfbW1fY3Z0cGkzMngyX3BzKF9fbTY0IF9fQSwgX19tNjQgX19CKQotIH0K LSAKLSAvKiBDb252ZXJ0IHRoZSBmb3VyIFNQRlAgdmFsdWVzIGluIEEgdG8gZm91ciBzaWduZWQg MTYtYml0IGludGVnZXJzLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRwc19waTE2 KF9fbTEyOCBfX0EpCi0gewotICAgX192NHNmIF9faGlzZiA9IChfX3Y0c2YpX19BOwotQEAgLTcw Nyw3ICs3MDcsNyBAQCBfbW1fY3Z0cHNfcGkxNihfX20xMjggX19BKQotIH0KLSAKLSAvKiBDb252 ZXJ0IHRoZSBmb3VyIFNQRlAgdmFsdWVzIGluIEEgdG8gZm91ciBzaWduZWQgOC1iaXQgaW50ZWdl cnMuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHBzX3BpOChfX20xMjggX19BKQot IHsKLSAgIF9fdjRoaSBfX3RtcCA9IChfX3Y0aGkpIF9tbV9jdnRwc19waTE2IChfX0EpOwotQEAg LTcxNiw3ICs3MTYsNyBAQCBfbW1fY3Z0cHNfcGk4KF9fbTEyOCBfX0EpCi0gCi0gLyogU2VsZWN0 cyBmb3VyIHNwZWNpZmljIFNQRlAgdmFsdWVzIGZyb20gQSBhbmQgQiBiYXNlZCBvbiBNQVNLLiAg Ki8KLSAjaWYgMAotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc2h1ZmZsZV9wcyAoX19tMTI4 IF9fQSwgX19tMTI4IF9fQiwgaW50IF9fbWFzaykKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19i dWlsdGluX2lhMzJfc2h1ZnBzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIF9fbWFzayk7Ci1A QCAtNzI4LDE0ICs3MjgsMTQgQEAgX21tX3NodWZmbGVfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBf X0IsIAotIAotIAotIC8qIFNlbGVjdHMgYW5kIGludGVybGVhdmVzIHRoZSB1cHBlciB0d28gU1BG UCB2YWx1ZXMgZnJvbSBBIGFuZCBCLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3Vu cGFja2hpX3BzIChfX20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4 KSBfX2J1aWx0aW5faWEzMl91bnBja2hwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLSB9 Ci0gCi0gLyogU2VsZWN0cyBhbmQgaW50ZXJsZWF2ZXMgdGhlIGxvd2VyIHR3byBTUEZQIHZhbHVl cyBmcm9tIEEgYW5kIEIuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fdW5wYWNrbG9f cHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjgpIF9fYnVp bHRpbl9pYTMyX3VucGNrbHBzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotQEAgLTc0Mywy OCArNzQzLDI4IEBAIF9tbV91bnBhY2tsb19wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSAK LSAvKiBTZXRzIHRoZSB1cHBlciB0d28gU1BGUCB2YWx1ZXMgd2l0aCA2NC1iaXRzIG9mIGRhdGEg bG9hZGVkIGZyb20gUDsKLSAgICB0aGUgbG93ZXIgdHdvIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91 Z2ggZnJvbSBBLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2xvYWRoX3BpIChfX20x MjggX19BLCBfX202NCBjb25zdCAqX19QKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0 aW5faWEzMl9sb2FkaHBzICgoX192NHNmKV9fQSwgKF9fdjJzaSAqKV9fUCk7Ci0gfQotIAotIC8q IFN0b3JlcyB0aGUgdXBwZXIgdHdvIFNQRlAgdmFsdWVzIG9mIEEgaW50byBQLiAgKi8KLS1zdGF0 aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKLSBfbW1fc3RvcmVoX3BpIChfX202NCAqX19QLCBfX20xMjggX19BKQotIHsK LSAgIF9fYnVpbHRpbl9pYTMyX3N0b3JlaHBzICgoX192MnNpICopX19QLCAoX192NHNmKV9fQSk7 Ci0gfQotIAotIC8qIE1vdmVzIHRoZSB1cHBlciB0d28gdmFsdWVzIG9mIEIgaW50byB0aGUgbG93 ZXIgdHdvIHZhbHVlcyBvZiBBLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX21vdmVo bF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOCkgX19i dWlsdGluX2lhMzJfbW92aGxwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLSB9Ci0gCi0g LyogTW92ZXMgdGhlIGxvd2VyIHR3byB2YWx1ZXMgb2YgQiBpbnRvIHRoZSB1cHBlciB0d28gdmFs dWVzIG9mIEEuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbW92ZWxoX3BzIChfX20x MjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEz Ml9tb3ZsaHBzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IpOwotQEAgLTc3MiwxNDYgKzc3Miwx NDYgQEAgX21tX21vdmVsaF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSAKLSAvKiBTZXRz IHRoZSBsb3dlciB0d28gU1BGUCB2YWx1ZXMgd2l0aCA2NC1iaXRzIG9mIGRhdGEgbG9hZGVkIGZy b20gUDsKLSAgICB0aGUgdXBwZXIgdHdvIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggZnJvbSBB LiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2xvYWRsX3BpIChfX20xMjggX19BLCBf X202NCBjb25zdCAqX19QKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9s b2FkbHBzICgoX192NHNmKV9fQSwgKF9fdjJzaSAqKV9fUCk7Ci0gfQotIAotIC8qIFN0b3JlcyB0 aGUgbG93ZXIgdHdvIFNQRlAgdmFsdWVzIG9mIEEgaW50byBQLiAgKi8KLS1zdGF0aWMgX19pbmxp bmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5s aW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKLSBfbW1fc3RvcmVsX3BpIChfX202NCAqX19QLCBfX20xMjggX19BKQotIHsKLSAgIF9fYnVp bHRpbl9pYTMyX3N0b3JlbHBzICgoX192MnNpICopX19QLCAoX192NHNmKV9fQSk7Ci0gfQotIAot IC8qIENyZWF0ZXMgYSA0LWJpdCBtYXNrIGZyb20gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBv ZiB0aGUgU1BGUCB2YWx1ZXMuICAqLwotLXN0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbW92ZW1hc2tfcHMg KF9fbTEyOCBfX0EpCi0gewotICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX21vdm1za3BzICgoX192 NHNmKV9fQSk7Ci0gfQotIAotIC8qIFJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIGNvbnRyb2wg cmVnaXN0ZXIuICAqLwotLXN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBpbnQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fZ2V0 Y3NyICh2b2lkKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9zdG14Y3NyICgpOwotIH0K LSAKLSAvKiBSZWFkIGV4Y2VwdGlvbiBiaXRzIGZyb20gdGhlIGNvbnRyb2wgcmVnaXN0ZXIuICAq LwotLXN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfTU1fR0VUX0VYQ0VQVElPTl9T VEFURSAodm9pZCkKLSB7Ci0gICByZXR1cm4gX21tX2dldGNzcigpICYgX01NX0VYQ0VQVF9NQVNL OwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgdW5zaWduZWQgaW50IF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgdW5zaWduZWQgaW50IF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX01NX0dFVF9FWENF UFRJT05fTUFTSyAodm9pZCkKLSB7Ci0gICByZXR1cm4gX21tX2dldGNzcigpICYgX01NX01BU0tf TUFTSzsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIHVuc2lnbmVkIGludCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9NTV9HRVRf Uk9VTkRJTkdfTU9ERSAodm9pZCkKLSB7Ci0gICByZXR1cm4gX21tX2dldGNzcigpICYgX01NX1JP VU5EX01BU0s7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBpbnQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfTU1f R0VUX0ZMVVNIX1pFUk9fTU9ERSAodm9pZCkKLSB7Ci0gICByZXR1cm4gX21tX2dldGNzcigpICYg X01NX0ZMVVNIX1pFUk9fTUFTSzsKLSB9Ci0gCi0gLyogU2V0IHRoZSBjb250cm9sIHJlZ2lzdGVy IHRvIEkuICAqLwotLXN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zZXRjc3IgKHVuc2lnbmVkIGludCBf X0kpCi0gewotICAgX19idWlsdGluX2lhMzJfbGRteGNzciAoX19JKTsKLSB9Ci0gCi0gLyogU2V0 IGV4Y2VwdGlvbiBiaXRzIGluIHRoZSBjb250cm9sIHJlZ2lzdGVyLiAgKi8KLS1zdGF0aWMgX19p bmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfTU1fU0VUX0VYQ0VQVElPTl9TVEFURSh1bnNpZ25lZCBpbnQgX19tYXNrKQotIHsK LSAgIF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAmIH5fTU1fRVhDRVBUX01BU0spIHwgX19tYXNr KTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX01NX1NFVF9FWENFUFRJT05fTUFTSyAodW5z aWduZWQgaW50IF9fbWFzaykKLSB7Ci0gICBfbW1fc2V0Y3NyKChfbW1fZ2V0Y3NyKCkgJiB+X01N X01BU0tfTUFTSykgfCBfX21hc2spOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIHZvaWQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfTU1fU0VU X1JPVU5ESU5HX01PREUgKHVuc2lnbmVkIGludCBfX21vZGUpCi0gewotICAgX21tX3NldGNzcigo X21tX2dldGNzcigpICYgfl9NTV9ST1VORF9NQVNLKSB8IF9fbW9kZSk7Ci0gfQotIAotLXN0YXRp YyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQotIF9NTV9TRVRfRkxVU0hfWkVST19NT0RFICh1bnNpZ25lZCBpbnQgX19tb2Rl KQotIHsKLSAgIF9tbV9zZXRjc3IoKF9tbV9nZXRjc3IoKSAmIH5fTU1fRkxVU0hfWkVST19NQVNL KSB8IF9fbW9kZSk7Ci0gfQotIAotIC8qIENyZWF0ZSBhIHZlY3RvciB3aXRoIGVsZW1lbnQgMCBh cyBGIGFuZCB0aGUgcmVzdCB6ZXJvLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3Nl dF9zcyAoZmxvYXQgX19GKQotIHsKLSAgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjgpKF9f djRzZil7IF9fRiwgMCwgMCwgMCB9OwotIH0KLSAKLSAvKiBDcmVhdGUgYSB2ZWN0b3Igd2l0aCBh bGwgZm91ciBlbGVtZW50cyBlcXVhbCB0byBGLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4 IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19t MTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0g X21tX3NldDFfcHMgKGZsb2F0IF9fRikKLSB7Ci0gICByZXR1cm4gX19leHRlbnNpb25fXyAoX19t MTI4KShfX3Y0c2YpeyBfX0YsIF9fRiwgX19GLCBfX0YgfTsKLSB9Ci0gCi0tc3RhdGljIF9faW5s aW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV9zZXRfcHMxIChmbG9hdCBfX0YpCi0gewotICAgcmV0dXJuIF9tbV9zZXQx X3BzIChfX0YpOwotIH0KLSAKLSAvKiBDcmVhdGUgYSB2ZWN0b3Igd2l0aCBlbGVtZW50IDAgYXMg KlAgYW5kIHRoZSByZXN0IHplcm8uICAqLwotLXN0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjggX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbG9h ZF9zcyAoZmxvYXQgY29uc3QgKl9fUCkKLSB7Ci0gICByZXR1cm4gX21tX3NldF9zcyAoKl9fUCk7 Ci0gfQotIAotIC8qIENyZWF0ZSBhIHZlY3RvciB3aXRoIGFsbCBmb3VyIGVsZW1lbnRzIGVxdWFs IHRvICpQLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2xvYWQxX3BzIChmbG9hdCBj b25zdCAqX19QKQotIHsKLSAgIHJldHVybiBfbW1fc2V0MV9wcyAoKl9fUCk7Ci0gfQotIAotLXN0 YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQot K3N0YXRpYyBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbG9hZF9wczEgKGZsb2F0IGNvbnN0ICpfX1ApCi0gewot ICAgcmV0dXJuIF9tbV9sb2FkMV9wcyAoX19QKTsKLSB9Ci0gCi0gLyogTG9hZCBmb3VyIFNQRlAg dmFsdWVzIGZyb20gUC4gIFRoZSBhZGRyZXNzIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkLiAgKi8K LS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2xvYWRfcHMgKGZsb2F0IGNvbnN0ICpfX1ApCi0g ewotICAgcmV0dXJuIChfX20xMjgpICooX192NHNmICopX19QOwotIH0KLSAKLSAvKiBMb2FkIGZv dXIgU1BGUCB2YWx1ZXMgZnJvbSBQLiAgVGhlIGFkZHJlc3MgbmVlZCBub3QgYmUgMTYtYnl0ZSBh bGlnbmVkLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2xvYWR1X3BzIChmbG9hdCBj b25zdCAqX19QKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl9sb2FkdXBz IChfX1ApOwotIH0KLSAKLSAvKiBMb2FkIGZvdXIgU1BGUCB2YWx1ZXMgaW4gcmV2ZXJzZSBvcmRl ci4gIFRoZSBhZGRyZXNzIG11c3QgYmUgYWxpZ25lZC4gICovCi0tc3RhdGljIF9faW5saW5lIF9f bTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQotIF9tbV9sb2Fkcl9wcyAoZmxvYXQgY29uc3QgKl9fUCkKLSB7Ci0gICBfX3Y0c2YgX190bXAg PSAqKF9fdjRzZiAqKV9fUDsKLUBAIC05MTksNDggKzkxOSw0OCBAQCBfbW1fbG9hZHJfcHMgKGZs b2F0IGNvbnN0ICpfX1ApCi0gfQotIAotIC8qIENyZWF0ZSB0aGUgdmVjdG9yIFtaIFkgWCBXXS4g ICovCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zZXRfcHMgKGNvbnN0IGZsb2F0IF9fWiwg Y29uc3QgZmxvYXQgX19ZLCBjb25zdCBmbG9hdCBfX1gsIGNvbnN0IGZsb2F0IF9fVykKLSB7Ci0g ICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4KShfX3Y0c2YpeyBfX1csIF9fWCwgX19ZLCBf X1ogfTsKLSB9Ci0gCi0gLyogQ3JlYXRlIHRoZSB2ZWN0b3IgW1cgWCBZIFpdLiAgKi8KLS1zdGF0 aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStz dGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCi0gX21tX3NldHJfcHMgKGZsb2F0IF9fWiwgZmxvYXQgX19ZLCBmbG9h dCBfX1gsIGZsb2F0IF9fVykKLSB7Ci0gICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4KShf X3Y0c2YpeyBfX1osIF9fWSwgX19YLCBfX1cgfTsKLSB9Ci0gCi0gLyogU3RvcmVzIHRoZSBsb3dl ciBTUEZQIHZhbHVlLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3RvcmVfc3MgKGZsb2F0 ICpfX1AsIF9fbTEyOCBfX0EpCi0gewotICAgKl9fUCA9IF9fYnVpbHRpbl9pYTMyX3ZlY19leHRf djRzZiAoKF9fdjRzZilfX0EsIDApOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgZmxvYXQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBmbG9hdCBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9j dnRzc19mMzIgKF9fbTEyOCBfX0EpCi0gewotICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3ZlY19l eHRfdjRzZiAoKF9fdjRzZilfX0EsIDApOwotIH0KLSAKLSAvKiBTdG9yZSBmb3VyIFNQRlAgdmFs dWVzLiAgVGhlIGFkZHJlc3MgbXVzdCBiZSAxNi1ieXRlIGFsaWduZWQuICAqLwotLXN0YXRpYyBf X2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMg X19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV9zdG9yZV9wcyAoZmxvYXQgKl9fUCwgX19tMTI4IF9fQSkKLSB7Ci0gICAq KF9fdjRzZiAqKV9fUCA9IChfX3Y0c2YpX19BOwotIH0KLSAKLSAvKiBTdG9yZSBmb3VyIFNQRlAg dmFsdWVzLiAgVGhlIGFkZHJlc3MgbmVlZCBub3QgYmUgMTYtYnl0ZSBhbGlnbmVkLiAgKi8KLS1z dGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0r c3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f YXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3RvcmV1X3BzIChmbG9hdCAqX19QLCBfX20xMjggX19BKQot IHsKLSAgIF9fYnVpbHRpbl9pYTMyX3N0b3JldXBzIChfX1AsIChfX3Y0c2YpX19BKTsKLSB9Ci0g Ci0gLyogU3RvcmUgdGhlIGxvd2VyIFNQRlAgdmFsdWUgYWNyb3NzIGZvdXIgd29yZHMuICAqLwot LXN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkK LStzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotIF9tbV9zdG9yZTFfcHMgKGZsb2F0ICpfX1AsIF9fbTEyOCBfX0Ep Ci0gewotICAgX192NHNmIF9fdmEgPSAoX192NHNmKV9fQTsKLUBAIC05NjgsMTQgKzk2OCwxNCBA QCBfbW1fc3RvcmUxX3BzIChmbG9hdCAqX19QLCBfX20xMjggX19BKQotICAgX21tX3N0b3JldV9w cyAoX19QLCBfX3RtcCk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zdG9yZV9wczEg KGZsb2F0ICpfX1AsIF9fbTEyOCBfX0EpCi0gewotICAgX21tX3N0b3JlMV9wcyAoX19QLCBfX0Ep OwotIH0KLSAKLSAvKiBTdG9yZSBmb3VyIFNQRlAgdmFsdWVzIGluIHJldmVyc2Ugb3JkZXIuICBU aGUgYWRkcmVzcyBtdXN0IGJlIGFsaWduZWQuICAqLwotLXN0YXRpYyBfX2lubGluZSB2b2lkIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgdm9pZCBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9z dG9yZXJfcHMgKGZsb2F0ICpfX1AsIF9fbTEyOCBfX0EpCi0gewotICAgX192NHNmIF9fdmEgPSAo X192NHNmKV9fQTsKLUBAIC05ODQsNyArOTg0LDcgQEAgX21tX3N0b3Jlcl9wcyAoZmxvYXQgKl9f UCwgX19tMTI4IF9fQSkKLSB9Ci0gCi0gLyogU2V0cyB0aGUgbG93IFNQRlAgdmFsdWUgb2YgQSBm cm9tIHRoZSBsb3cgdmFsdWUgb2YgQi4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9t b3ZlX3NzIChfX20xMjggX19BLCBfX20xMjggX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBf X2J1aWx0aW5faWEzMl9tb3ZzcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CKTsKLUBAIC05OTIs MTMgKzk5MiwxMyBAQCBfbW1fbW92ZV9zcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQikKLSAKLSAv KiBFeHRyYWN0cyBvbmUgb2YgdGhlIGZvdXIgd29yZHMgb2YgQS4gIFRoZSBzZWxlY3RvciBOIG11 c3QgYmUgaW1tZWRpYXRlLiAgKi8KLSAjaWYgMAotLXN0YXRpYyBfX2lubGluZSBpbnQgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBpbnQgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fZXh0cmFj dF9waTE2IChfX202NCBjb25zdCBfX0EsIGludCBjb25zdCBfX04pCi0gewotICAgcmV0dXJuIF9f YnVpbHRpbl9pYTMyX3ZlY19leHRfdjRoaSAoKF9fdjRoaSlfX0EsIF9fTik7Ci0gfQotIAotLXN0 YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0 YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKLSBfbV9wZXh0cncgKF9fbTY0IGNvbnN0IF9fQSwgaW50IGNvbnN0IF9fTikK LSB7Ci0gICByZXR1cm4gX21tX2V4dHJhY3RfcGkxNiAoX19BLCBfX04pOwotQEAgLTEwMTEsMTMg KzEwMTEsMTMgQEAgX21fcGV4dHJ3IChfX202NCBjb25zdCBfX0EsIGludCBjb25zdCBfXwotIC8q IEluc2VydHMgd29yZCBEIGludG8gb25lIG9mIGZvdXIgd29yZHMgb2YgQS4gIFRoZSBzZWxlY3Rv ciBOIG11c3QgYmUKLSAgICBpbW1lZGlhdGUuICAqLwotICNpZiAwCi0tc3RhdGljIF9faW5saW5l IF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxp bmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKLSBfbW1faW5zZXJ0X3BpMTYgKF9fbTY0IGNvbnN0IF9fQSwgaW50IGNvbnN0IF9fRCwgaW50 IGNvbnN0IF9fTikKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5faWEzMl92ZWNfc2V0 X3Y0aGkgKChfX3Y0aGkpX19BLCBfX0QsIF9fTik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBf X202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp Ci0gX21fcGluc3J3IChfX202NCBjb25zdCBfX0EsIGludCBjb25zdCBfX0QsIGludCBjb25zdCBf X04pCi0gewotICAgcmV0dXJuIF9tbV9pbnNlcnRfcGkxNiAoX19BLCBfX0QsIF9fTik7Ci1AQCAt MTAyOSw2NSArMTAyOSw2NSBAQCBfbV9waW5zcncgKF9fbTY0IGNvbnN0IF9fQSwgaW50IGNvbnN0 IF9fCi0gI2VuZGlmCi0gCi0gLyogQ29tcHV0ZSB0aGUgZWxlbWVudC13aXNlIG1heGltdW0gb2Yg c2lnbmVkIDE2LWJpdCB2YWx1ZXMuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX21heF9w aTE2IChfX202NCBfX0EsIF9fbTY0IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0 aW5faWEzMl9wbWF4c3cgKChfX3Y0aGkpX19BLCAoX192NGhpKV9fQik7Ci0gfQotIAotLXN0YXRp YyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21fcG1heHN3IChfX202NCBfX0EsIF9fbTY0IF9fQikKLSB7Ci0gICBy ZXR1cm4gX21tX21heF9waTE2IChfX0EsIF9fQik7Ci0gfQotIAotIC8qIENvbXB1dGUgdGhlIGVs ZW1lbnQtd2lzZSBtYXhpbXVtIG9mIHVuc2lnbmVkIDgtYml0IHZhbHVlcy4gICovCi0tc3RhdGlj IF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKLSBfbW1fbWF4X3B1OCAoX19tNjQgX19BLCBfX202NCBfX0IpCi0gewotICAg cmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcG1heHViICgoX192OHFpKV9fQSwgKF9fdjhx aSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX3BtYXh1YiAoX19tNjQgX19B LCBfX202NCBfX0IpCi0gewotICAgcmV0dXJuIF9tbV9tYXhfcHU4IChfX0EsIF9fQik7Ci0gfQot IAotIC8qIENvbXB1dGUgdGhlIGVsZW1lbnQtd2lzZSBtaW5pbXVtIG9mIHNpZ25lZCAxNi1iaXQg dmFsdWVzLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9taW5fcGkxNiAoX19tNjQgX19B LCBfX202NCBfX0IpCi0gewotICAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcG1pbnN3 ICgoX192NGhpKV9fQSwgKF9fdjRoaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19t NjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBf X202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQot IF9tX3BtaW5zdyAoX19tNjQgX19BLCBfX202NCBfX0IpCi0gewotICAgcmV0dXJuIF9tbV9taW5f cGkxNiAoX19BLCBfX0IpOwotIH0KLSAKLSAvKiBDb21wdXRlIHRoZSBlbGVtZW50LXdpc2UgbWlu aW11bSBvZiB1bnNpZ25lZCA4LWJpdCB2YWx1ZXMuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX202 NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9f bTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0g X21tX21pbl9wdTggKF9fbTY0IF9fQSwgX19tNjQgX19CKQotIHsKLSAgIHJldHVybiAoX19tNjQp IF9fYnVpbHRpbl9pYTMyX3BtaW51YiAoKF9fdjhxaSlfX0EsIChfX3Y4cWkpX19CKTsKLSB9Ci0g Ci0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9wbWludWIgKF9fbTY0IF9fQSwgX19tNjQgX19CKQot IHsKLSAgIHJldHVybiBfbW1fbWluX3B1OCAoX19BLCBfX0IpOwotIH0KLSAKLSAvKiBDcmVhdGUg YW4gOC1iaXQgbWFzayBvZiB0aGUgc2lnbnMgb2YgOC1iaXQgdmFsdWVzLiAgKi8KLS1zdGF0aWMg X19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMg X19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCi0gX21tX21vdmVtYXNrX3BpOCAoX19tNjQgX19BKQotIHsKLSAgIHJldHVybiBfX2J1 aWx0aW5faWEzMl9wbW92bXNrYiAoKF9fdjhxaSlfX0EpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxp bmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxp bmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp Ci0gX21fcG1vdm1za2IgKF9fbTY0IF9fQSkKLSB7Ci0gICByZXR1cm4gX21tX21vdmVtYXNrX3Bp OCAoX19BKTsKLUBAIC0xMDk1LDEzICsxMDk1LDEzIEBAIF9tX3Btb3Ztc2tiIChfX202NCBfX0Ep Ci0gCi0gLyogTXVsdGlwbHkgZm91ciB1bnNpZ25lZCAxNi1iaXQgdmFsdWVzIGluIEEgYnkgZm91 ciB1bnNpZ25lZCAxNi1iaXQgdmFsdWVzCi0gICAgaW4gQiBhbmQgcHJvZHVjZSB0aGUgaGlnaCAx NiBiaXRzIG9mIHRoZSAzMi1iaXQgcmVzdWx0cy4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTY0 IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19t NjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBf bW1fbXVsaGlfcHUxNiAoX19tNjQgX19BLCBfX202NCBfX0IpCi0gewotICAgcmV0dXJuIChfX202 NCkgX19idWlsdGluX2lhMzJfcG11bGh1dyAoKF9fdjRoaSlfX0EsIChfX3Y0aGkpX19CKTsKLSB9 Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbV9wbXVsaHV3IChfX202NCBfX0EsIF9fbTY0IF9f QikKLSB7Ci0gICByZXR1cm4gX21tX211bGhpX3B1MTYgKF9fQSwgX19CKTsKLUBAIC0xMTEwLDEz ICsxMTEwLDEzIEBAIF9tX3BtdWxodXcgKF9fbTY0IF9fQSwgX19tNjQgX19CKQotIC8qIFJldHVy biBhIGNvbWJpbmF0aW9uIG9mIHRoZSBmb3VyIDE2LWJpdCB2YWx1ZXMgaW4gQS4gIFRoZSBzZWxl Y3RvcgotICAgIG11c3QgYmUgYW4gaW1tZWRpYXRlLiAgKi8KLSAjaWYgMAotLXN0YXRpYyBfX2lu bGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCi0gX21tX3NodWZmbGVfcGkxNiAoX19tNjQgX19BLCBpbnQgX19OKQotIHsKLSAgIHJl dHVybiAoX19tNjQpIF9fYnVpbHRpbl9pYTMyX3BzaHVmdyAoKF9fdjRoaSlfX0EsIF9fTik7Ci0g fQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21fcHNodWZ3IChfX202NCBfX0EsIGludCBfX04p Ci0gewotICAgcmV0dXJuIF9tbV9zaHVmZmxlX3BpMTYgKF9fQSwgX19OKTsKLUBAIC0xMTMwLDM5 ICsxMTMwLDM5IEBAIF9tX3BzaHVmdyAoX19tNjQgX19BLCBpbnQgX19OKQotIC8qIENvbmRpdGlv bmFsbHkgc3RvcmUgYnl0ZSBlbGVtZW50cyBvZiBBIGludG8gUC4gIFRoZSBoaWdoIGJpdCBvZiBl YWNoCi0gICAgYnl0ZSBpbiB0aGUgc2VsZWN0b3IgTiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNv cnJlc3BvbmRpbmcgYnl0ZSBmcm9tCi0gICAgQSBpcyBzdG9yZWQuICAqLwotLXN0YXRpYyBfX2lu bGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFs X18pKQotIF9tbV9tYXNrbW92ZV9zaTY0IChfX202NCBfX0EsIF9fbTY0IF9fTiwgY2hhciAqX19Q KQotIHsKLSAgIF9fYnVpbHRpbl9pYTMyX21hc2ttb3ZxICgoX192OHFpKV9fQSwgKF9fdjhxaSlf X04sIF9fUCk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX21hc2ttb3ZxIChfX202NCBf X0EsIF9fbTY0IF9fTiwgY2hhciAqX19QKQotIHsKLSAgIF9tbV9tYXNrbW92ZV9zaTY0IChfX0Es IF9fTiwgX19QKTsKLSB9Ci0gCi0gLyogQ29tcHV0ZSB0aGUgcm91bmRlZCBhdmVyYWdlcyBvZiB0 aGUgdW5zaWduZWQgOC1iaXQgdmFsdWVzIGluIEEgYW5kIEIuICAqLwotLXN0YXRpYyBfX2lubGlu ZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5s aW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf XykpCi0gX21tX2F2Z19wdTggKF9fbTY0IF9fQSwgX19tNjQgX19CKQotIHsKLSAgIHJldHVybiAo X19tNjQpIF9fYnVpbHRpbl9pYTMyX3BhdmdiICgoX192OHFpKV9fQSwgKF9fdjhxaSlfX0IpOwot IH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tX3BhdmdiIChfX202NCBfX0EsIF9fbTY0IF9f QikKLSB7Ci0gICByZXR1cm4gX21tX2F2Z19wdTggKF9fQSwgX19CKTsKLSB9Ci0gCi0gLyogQ29t cHV0ZSB0aGUgcm91bmRlZCBhdmVyYWdlcyBvZiB0aGUgdW5zaWduZWQgMTYtYml0IHZhbHVlcyBp biBBIGFuZCBCLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9hdmdfcHUxNiAoX19tNjQg X19BLCBfX202NCBfX0IpCi0gewotICAgcmV0dXJuIChfX202NCkgX19idWlsdGluX2lhMzJfcGF2 Z3cgKChfX3Y0aGkpX19BLCAoX192NGhpKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBf X202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp Ci0gX21fcGF2Z3cgKF9fbTY0IF9fQSwgX19tNjQgX19CKQotIHsKLSAgIHJldHVybiBfbW1fYXZn X3B1MTYgKF9fQSwgX19CKTsKLUBAIC0xMTcxLDEzICsxMTcxLDEzIEBAIF9tX3Bhdmd3IChfX202 NCBfX0EsIF9fbTY0IF9fQikKLSAvKiBDb21wdXRlIHRoZSBzdW0gb2YgdGhlIGFic29sdXRlIGRp ZmZlcmVuY2VzIG9mIHRoZSB1bnNpZ25lZCA4LWJpdAotICAgIHZhbHVlcyBpbiBBIGFuZCBCLiAg UmV0dXJuIHRoZSB2YWx1ZSBpbiB0aGUgbG93ZXIgMTYtYml0IHdvcmQ7IHRoZQotICAgIHVwcGVy IHdvcmRzIGFyZSBjbGVhcmVkLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zYWRfcHU4 IChfX202NCBfX0EsIF9fbTY0IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTY0KSBfX2J1aWx0aW5f aWEzMl9wc2FkYncgKChfX3Y4cWkpX19BLCAoX192OHFpKV9fQik7Ci0gfQotIAotLXN0YXRpYyBf X2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGlj IF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCi0gX21fcHNhZGJ3IChfX202NCBfX0EsIF9fbTY0IF9fQikKLSB7Ci0gICByZXR1 cm4gX21tX3NhZF9wdTggKF9fQSwgX19CKTsKLUBAIC0xMTg2LDcgKzExODYsNyBAQCBfbV9wc2Fk YncgKF9fbTY0IF9fQSwgX19tNjQgX19CKQotIC8qIExvYWRzIG9uZSBjYWNoZSBsaW5lIGZyb20g YWRkcmVzcyBQIHRvIGEgbG9jYXRpb24gImNsb3NlciIgdG8gdGhlCi0gICAgcHJvY2Vzc29yLiAg VGhlIHNlbGVjdG9yIEkgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHByZWZldGNoIG9wZXJhdGlvbi4g ICovCi0gI2lmIDAKLS1zdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fcHJlZmV0Y2ggKHZvaWQgKl9fUCwg ZW51bSBfbW1faGludCBfX0kpCi0gewotICAgX19idWlsdGluX3ByZWZldGNoIChfX1AsIDAsIF9f SSk7Ci1AQCAtMTE5NywxNCArMTE5NywxNCBAQCBfbW1fcHJlZmV0Y2ggKHZvaWQgKl9fUCwgZW51 bSBfbW1faGludCBfCi0gI2VuZGlmCi0gCi0gLyogU3RvcmVzIHRoZSBkYXRhIGluIEEgdG8gdGhl IGFkZHJlc3MgUCB3aXRob3V0IHBvbGx1dGluZyB0aGUgY2FjaGVzLiAgKi8KLS1zdGF0aWMgX19p bmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfbW1fc3RyZWFtX3BpIChfX202NCAqX19QLCBfX202NCBfX0EpCi0gewotICAgX19i dWlsdGluX2lhMzJfbW92bnRxICgodW5zaWduZWQgbG9uZyBsb25nICopX19QLCAodW5zaWduZWQg bG9uZyBsb25nKV9fQSk7Ci0gfQotIAotIC8qIExpa2V3aXNlLiAgVGhlIGFkZHJlc3MgbXVzdCBi ZSAxNi1ieXRlIGFsaWduZWQuICAqLwotLXN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zdHJlYW1fcHMg KGZsb2F0ICpfX1AsIF9fbTEyOCBfX0EpCi0gewotICAgX19idWlsdGluX2lhMzJfbW92bnRwcyAo X19QLCAoX192NHNmKV9fQSk7Ci1AQCAtMTIxMiw3ICsxMjEyLDcgQEAgX21tX3N0cmVhbV9wcyAo ZmxvYXQgKl9fUCwgX19tMTI4IF9fQSkKLSAKLSAvKiBHdWFyYW50ZWVzIHRoYXQgZXZlcnkgcHJl Y2VkaW5nIHN0b3JlIGlzIGdsb2JhbGx5IHZpc2libGUgYmVmb3JlCi0gICAgYW55IHN1YnNlcXVl bnQgc3RvcmUuICAqLwotLXN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zZmVuY2UgKHZvaWQpCi0gewot ICAgX19idWlsdGluX2lhMzJfc2ZlbmNlICgpOwotQEAgLTEyMjEsNyArMTIyMSw3IEBAIF9tbV9z ZmVuY2UgKHZvaWQpCi0gLyogVGhlIGV4ZWN1dGlvbiBvZiB0aGUgbmV4dCBpbnN0cnVjdGlvbiBp cyBkZWxheWVkIGJ5IGFuIGltcGxlbWVudGF0aW9uCi0gICAgc3BlY2lmaWMgYW1vdW50IG9mIHRp bWUuICBUaGUgaW5zdHJ1Y3Rpb24gZG9lcyBub3QgbW9kaWZ5IHRoZQotICAgIGFyY2hpdGVjdHVy YWwgc3RhdGUuICAqLwotLXN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9wYXVzZSAodm9pZCkKLSB7Ci0g ICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInJlcDsgbm9wIiA6IDogKTsKLS0tLSBnY2MvY29uZmln L2kzODYvYW1taW50cmluLmguamoJMjAwNy0wNi0yNiAxMzozODo0Ni4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnY2MvY29uZmlnL2kzODYvYW1taW50cmluLmgJMjAwNy0wOS0yNSAxNTowNTo1Ni4wMDAw MDAwMDAgKzAyMDAKLUBAIC0zNywxOSArMzcsMTkgQEAKLSAvKiBXZSBuZWVkIGRlZmluaXRpb25z IGZyb20gdGhlIFNTRTMsIFNTRTIgYW5kIFNTRSBoZWFkZXIgZmlsZXMqLwotICNpbmNsdWRlIDxw bW1pbnRyaW4uaD4KLSAKLS1zdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3RyZWFtX3NkIChkb3VibGUg KiBfX1AsIF9fbTEyOGQgX19ZKQotIHsKLSAgIF9fYnVpbHRpbl9pYTMyX21vdm50c2QgKF9fUCwg KF9fdjJkZikgX19ZKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3N0cmVhbV9zcyAo ZmxvYXQgKiBfX1AsIF9fbTEyOCBfX1kpCi0gewotICAgX19idWlsdGluX2lhMzJfbW92bnRzcyAo X19QLCAoX192NHNmKSBfX1kpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1f ZXh0cmFjdF9zaTY0IChfX20xMjhpIF9fWCwgX19tMTI4aSBfX1kpCi0gewotICAgcmV0dXJuIChf X20xMjhpKSBfX2J1aWx0aW5faWEzMl9leHRycSAoKF9fdjJkaSkgX19YLCAoX192MTZxaSkgX19Z KTsKLUBAIC01OCw3ICs1OCw3IEBAIF9tbV9leHRyYWN0X3NpNjQgKF9fbTEyOGkgX19YLCBfX20x MjhpIF8KLSAjZGVmaW5lIF9tbV9leHRyYWN0aV9zaTY0KFgsIEksIEwpIFwKLSAoKF9fbTEyOGkp IF9fYnVpbHRpbl9pYTMyX2V4dHJxaSAoKF9fdjJkaSkoWCksIEksIEwpKQotIAotLXN0YXRpYyBf X2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19h cnRpZmljaWFsX18pKQotIF9tbV9pbnNlcnRfc2k2NCAoX19tMTI4aSBfX1gsX19tMTI4aSBfX1kp Ci0gewotICAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0aW5faWEzMl9pbnNlcnRxICgoX192MmRp KV9fWCwgKF9fdjJkaSlfX1kpOwotLS0tIGdjYy9jb25maWcvaTM4Ni9lbW1pbnRyaW4uaC5qagky MDA3LTA2LTI2IDEzOjM4OjQ2LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9jb25maWcvaTM4Ni9l bW1pbnRyaW4uaAkyMDA3LTA5LTI1IDE1OjA2OjE5LjAwMDAwMDAwMCArMDIwMAotQEAgLTU0LDg5 ICs1NCw4OSBAQCB0eXBlZGVmIGRvdWJsZSBfX20xMjhkIF9fYXR0cmlidXRlX18gKChfCi0gICgo KGZwMSkgPDwgMSkgfCAoZnAwKSkKLSAKLSAvKiBDcmVhdGUgYSB2ZWN0b3Igd2l0aCBlbGVtZW50 IDAgYXMgRiBhbmQgdGhlIHJlc3QgemVyby4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20x MjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0g X21tX3NldF9zZCAoZG91YmxlIF9fRikKLSB7Ci0gICByZXR1cm4gX19leHRlbnNpb25fXyAoX19t MTI4ZCl7IF9fRiwgMCB9OwotIH0KLSAKLSAvKiBDcmVhdGUgYSB2ZWN0b3Igd2l0aCBib3RoIGVs ZW1lbnRzIGVxdWFsIHRvIEYuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zZXQx X3BkIChkb3VibGUgX19GKQotIHsKLSAgIHJldHVybiBfX2V4dGVuc2lvbl9fIChfX20xMjhkKXsg X19GLCBfX0YgfTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NldF9wZDEg KGRvdWJsZSBfX0YpCi0gewotICAgcmV0dXJuIF9tbV9zZXQxX3BkIChfX0YpOwotIH0KLSAKLSAv KiBDcmVhdGUgYSB2ZWN0b3Igd2l0aCB0aGUgbG93ZXIgdmFsdWUgWCBhbmQgdXBwZXIgdmFsdWUg Vy4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NldF9wZCAoZG91YmxlIF9fVywg ZG91YmxlIF9fWCkKLSB7Ci0gICByZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4ZCl7IF9fWCwg X19XIH07Ci0gfQotIAotIC8qIENyZWF0ZSBhIHZlY3RvciB3aXRoIHRoZSBsb3dlciB2YWx1ZSBX IGFuZCB1cHBlciB2YWx1ZSBYLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc2V0 cl9wZCAoZG91YmxlIF9fVywgZG91YmxlIF9fWCkKLSB7Ci0gICByZXR1cm4gX19leHRlbnNpb25f XyAoX19tMTI4ZCl7IF9fVywgX19YIH07Ci0gfQotIAotIC8qIENyZWF0ZSBhIHZlY3RvciBvZiB6 ZXJvcy4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NldHplcm9fcGQgKHZvaWQp Ci0gewotICAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGQpeyAwLjAsIDAuMCB9OwotIH0K LSAKLSAvKiBTZXRzIHRoZSBsb3cgRFBGUCB2YWx1ZSBvZiBBIGZyb20gdGhlIGxvdyB2YWx1ZSBv ZiBCLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbW92ZV9zZCAoX19tMTI4ZCBf X0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4ZCkgX19idWlsdGluX2lhMzJf bW92c2QgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotIC8qIExvYWQgdHdvIERQ RlAgdmFsdWVzIGZyb20gUC4gIFRoZSBhZGRyZXNzIG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkLiAg Ki8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbG9hZF9wZCAoZG91YmxlIGNvbnN0ICpf X1ApCi0gewotICAgcmV0dXJuICooX19tMTI4ZCAqKV9fUDsKLSB9Ci0gCi0gLyogTG9hZCB0d28g RFBGUCB2YWx1ZXMgZnJvbSBQLiAgVGhlIGFkZHJlc3MgbmVlZCBub3QgYmUgMTYtYnl0ZSBhbGln bmVkLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbG9hZHVfcGQgKGRvdWJsZSBj b25zdCAqX19QKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9sb2FkdXBkIChfX1ApOwot IH0KLSAKLSAvKiBDcmVhdGUgYSB2ZWN0b3Igd2l0aCBhbGwgdHdvIGVsZW1lbnRzIGVxdWFsIHRv ICpQLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbG9hZDFfcGQgKGRvdWJsZSBj b25zdCAqX19QKQotIHsKLSAgIHJldHVybiBfbW1fc2V0MV9wZCAoKl9fUCk7Ci0gfQotIAotIC8q IENyZWF0ZSBhIHZlY3RvciB3aXRoIGVsZW1lbnQgMCBhcyAqUCBhbmQgdGhlIHJlc3QgemVyby4g ICovCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2xvYWRfc2QgKGRvdWJsZSBjb25zdCAq X19QKQotIHsKLSAgIHJldHVybiBfbW1fc2V0X3NkICgqX19QKTsKLSB9Ci0gCi0tc3RhdGljIF9f aW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRp YyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21tX2xvYWRfcGQxIChkb3VibGUgY29uc3QgKl9fUCkKLSB7Ci0gICBy ZXR1cm4gX21tX2xvYWQxX3BkIChfX1ApOwotIH0KLSAKLSAvKiBMb2FkIHR3byBEUEZQIHZhbHVl cyBpbiByZXZlcnNlIG9yZGVyLiAgVGhlIGFkZHJlc3MgbXVzdCBiZSBhbGlnbmVkLiAgKi8KLS1z dGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp Ci0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbG9hZHJfcGQgKGRvdWJsZSBjb25zdCAqX19QKQot IHsKLSAgIF9fbTEyOGQgX190bXAgPSBfbW1fbG9hZF9wZCAoX19QKTsKLUBAIC0xNDQsNDAgKzE0 NCw0MCBAQCBfbW1fbG9hZHJfcGQgKGRvdWJsZSBjb25zdCAqX19QKQotIH0KLSAKLSAvKiBTdG9y ZSB0d28gRFBGUCB2YWx1ZXMuICBUaGUgYWRkcmVzcyBtdXN0IGJlIDE2LWJ5dGUgYWxpZ25lZC4g ICovCi0tc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKQotK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3N0b3JlX3BkIChkb3VibGUgKl9fUCwgX19tMTI4 ZCBfX0EpCi0gewotICAgKihfX20xMjhkICopX19QID0gX19BOwotIH0KLSAKLSAvKiBTdG9yZSB0 d28gRFBGUCB2YWx1ZXMuICBUaGUgYWRkcmVzcyBuZWVkIG5vdCBiZSAxNi1ieXRlIGFsaWduZWQu ICAqLwotLXN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zdG9yZXVfcGQgKGRvdWJsZSAqX19QLCBfX20x MjhkIF9fQSkKLSB7Ci0gICBfX2J1aWx0aW5faWEzMl9zdG9yZXVwZCAoX19QLCBfX0EpOwotIH0K LSAKLSAvKiBTdG9yZXMgdGhlIGxvd2VyIERQRlAgdmFsdWUuICAqLwotLXN0YXRpYyBfX2lubGlu ZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxp bmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQotIF9tbV9zdG9yZV9zZCAoZG91YmxlICpfX1AsIF9fbTEyOGQgX19BKQotIHsKLSAgICpfX1Ag PSBfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3YyZGYgKF9fQSwgMCk7Ci0gfQotIAotLXN0YXRpYyBf X2lubGluZSBkb3VibGUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRp YyBfX2lubGluZSBkb3VibGUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKLSBfbW1fY3Z0c2RfZjY0IChfX20xMjhkIF9fQSkKLSB7Ci0gICByZXR1cm4g X19idWlsdGluX2lhMzJfdmVjX2V4dF92MmRmIChfX0EsIDApOwotIH0KLSAKLS1zdGF0aWMgX19p bmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfbW1fc3RvcmVsX3BkIChkb3VibGUgKl9fUCwgX19tMTI4ZCBfX0EpCi0gewotICAg X21tX3N0b3JlX3NkIChfX1AsIF9fQSk7Ci0gfQotIAotIC8qIFN0b3JlcyB0aGUgdXBwZXIgRFBG UCB2YWx1ZS4gICovCi0tc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3N0b3JlaF9wZCAoZG91YmxlICpf X1AsIF9fbTEyOGQgX19BKQotIHsKLSAgICpfX1AgPSBfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3Yy ZGYgKF9fQSwgMSk7Ci1AQCAtMTg1LDI2ICsxODUsMjYgQEAgX21tX3N0b3JlaF9wZCAoZG91Ymxl ICpfX1AsIF9fbTEyOGQgX19BKQotIAotIC8qIFN0b3JlIHRoZSBsb3dlciBEUEZQIHZhbHVlIGFj cm9zcyB0d28gd29yZHMuCi0gICAgVGhlIGFkZHJlc3MgbXVzdCBiZSAxNi1ieXRlIGFsaWduZWQu ICAqLwotLXN0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zdG9yZTFfcGQgKGRvdWJsZSAqX19QLCBfX20x MjhkIF9fQSkKLSB7Ci0gICBfbW1fc3RvcmVfcGQgKF9fUCwgX19idWlsdGluX2lhMzJfc2h1ZnBk IChfX0EsIF9fQSwgX01NX1NIVUZGTEUyICgwLDApKSk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGlu ZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxp bmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQotIF9tbV9zdG9yZV9wZDEgKGRvdWJsZSAqX19QLCBfX20xMjhkIF9fQSkKLSB7Ci0gICBfbW1f c3RvcmUxX3BkIChfX1AsIF9fQSk7Ci0gfQotIAotIC8qIFN0b3JlIHR3byBEUEZQIHZhbHVlcyBp biByZXZlcnNlIG9yZGVyLiAgVGhlIGFkZHJlc3MgbXVzdCBiZSBhbGlnbmVkLiAgKi8KLS1zdGF0 aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKLSBfbW1fc3RvcmVyX3BkIChkb3VibGUgKl9fUCwgX19tMTI4ZCBfX0EpCi0g ewotICAgX21tX3N0b3JlX3BkIChfX1AsIF9fYnVpbHRpbl9pYTMyX3NodWZwZCAoX19BLCBfX0Es IF9NTV9TSFVGRkxFMiAoMCwxKSkpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHNp MTI4X3NpMzIgKF9fbTEyOGkgX19BKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl92ZWNf ZXh0X3Y0c2kgKChfX3Y0c2kpX19BLCAwKTsKLUBAIC0yMTIsMjIxICsyMTIsMjIxIEBAIF9tbV9j dnRzaTEyOF9zaTMyIChfX20xMjhpIF9fQSkKLSAKLSAjaWZkZWYgX194ODZfNjRfXwotIC8qIElu dGVsIGludHJpbnNpYy4gICovCi0tc3RhdGljIF9faW5saW5lIGxvbmcgbG9uZyBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIGxvbmcgbG9uZyBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRz aTEyOF9zaTY0IChfX20xMjhpIF9fQSkKLSB7Ci0gICByZXR1cm4gX19idWlsdGluX2lhMzJfdmVj X2V4dF92MmRpICgoX192MmRpKV9fQSwgMCk7Ci0gfQotIAotIC8qIE1pY3Jvc29mdCBpbnRyaW5z aWMuICAqLwotLXN0YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY3Z0c2kxMjhfc2k2NHgg KF9fbTEyOGkgX19BKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl92ZWNfZXh0X3YyZGkg KChfX3YyZGkpX19BLCAwKTsKLSB9Ci0gI2VuZGlmCi0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEy OGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBf X20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp Ci0gX21tX2FkZF9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiAo X19tMTI4ZClfX2J1aWx0aW5faWEzMl9hZGRwZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsK LSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2FkZF9zZCAoX19tMTI4ZCBfX0Es IF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9hZGRz ZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9f bTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGlu ZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf XykpCi0gX21tX3N1Yl9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVy biAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zdWJwZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19C KTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3N1Yl9zZCAoX19tMTI4ZCBf X0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9z dWJzZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5l IF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lu bGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCi0gX21tX211bF9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJl dHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9tdWxwZCAoKF9fdjJkZilfX0EsIChfX3YyZGYp X19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX211bF9zZCAoX19tMTI4 ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEz Ml9tdWxzZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5s aW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBf X2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCi0gX21tX2Rpdl9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAg IHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9kaXZwZCAoKF9fdjJkZilfX0EsIChfX3Yy ZGYpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2Rpdl9zZCAoX19t MTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5f aWEzMl9kaXZzZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9f aW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRp YyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21tX3NxcnRfcGQgKF9fbTEyOGQgX19BKQotIHsKLSAgIHJldHVybiAo X19tMTI4ZClfX2J1aWx0aW5faWEzMl9zcXJ0cGQgKChfX3YyZGYpX19BKTsKLSB9Ci0gCi0gLyog UmV0dXJuIHBhaXIge3NxcnQgKEFbMCksIEJbMV19LiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19t MTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKLSBfbW1fc3FydF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIF9fdjJk ZiBfX3RtcCA9IF9fYnVpbHRpbl9pYTMyX21vdnNkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0Ip OwotICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3NxcnRzZCAoKF9fdjJkZilfX3Rt cCk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9taW5fcGQgKF9fbTEyOGQg X19BLCBfX20xMjhkIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJf bWlucGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGlu ZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV9taW5fc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKLSB7Ci0gICBy ZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfbWluc2QgKChfX3YyZGYpX19BLCAoX192MmRm KV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9tYXhfcGQgKF9fbTEy OGQgX19BLCBfX20xMjhkIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lh MzJfbWF4cGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lu bGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMg X19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQotIF9tbV9tYXhfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKLSB7Ci0g ICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfbWF4c2QgKChfX3YyZGYpX19BLCAoX192 MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9hbmRfcGQgKF9f bTEyOGQgX19BLCBfX20xMjhkIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGlu X2lhMzJfYW5kcGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBf X2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19h cnRpZmljaWFsX18pKQotIF9tbV9hbmRub3RfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikK LSB7Ci0gICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfYW5kbnBkICgoX192MmRmKV9f QSwgKF9fdjJkZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fb3Jf cGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGQpX19i dWlsdGluX2lhMzJfb3JwZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKLSB9Ci0gCi0tc3Rh dGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQot K3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3hvcl9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19C KQotIHsKLSAgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl94b3JwZCAoKF9fdjJkZilf X0EsIChfX3YyZGYpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2Nt cGVxX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhk KV9fYnVpbHRpbl9pYTMyX2NtcGVxcGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQot IAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXBsdF9wZCAoX19tMTI4ZCBfX0EsIF9f bTEyOGQgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBsdHBk ICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19t MTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKLSBfbW1fY21wbGVfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKLSB7Ci0gICByZXR1 cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wbGVwZCAoKF9fdjJkZilfX0EsIChfX3YyZGYp X19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2NtcGd0X3BkIChfX20x MjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9p YTMyX2NtcGd0cGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBf X2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19h cnRpZmljaWFsX18pKQotIF9tbV9jbXBnZV9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQot IHsKLSAgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jbXBnZXBkICgoX192MmRmKV9f QSwgKF9fdjJkZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21w bmVxX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhk KV9fYnVpbHRpbl9pYTMyX2NtcG5lcXBkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwotIH0K LSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wbmx0X3BkIChfX20xMjhkIF9fQSwg X19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5s dHBkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUg X19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5s aW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfbW1fY21wbmxlX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gewotICAg cmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sZXBkICgoX192MmRmKV9fQSwgKF9f djJkZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wbmd0X3Bk IChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhkKV9fYnVp bHRpbl9pYTMyX2NtcG5ndHBkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwotIH0KLSAKLS1z dGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp Ci0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wbmdlX3BkIChfX20xMjhkIF9fQSwgX19tMTI4 ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5nZXBkICgo X192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4 ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9f bTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkK LSBfbW1fY21wb3JkX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJu IChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG9yZHBkICgoX192MmRmKV9fQSwgKF9fdjJkZilf X0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wdW5vcmRfcGQgKF9f bTEyOGQgX19BLCBfX20xMjhkIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGlu X2lhMzJfY21wdW5vcmRwZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKLSB9Ci0gCi0tc3Rh dGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQot K3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2NtcGVxX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBf X0IpCi0gewotICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcGVxc2QgKChfX3Yy ZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4 ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9t bV9jbXBsdF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiAoX19t MTI4ZClfX2J1aWx0aW5faWEzMl9jbXBsdHNkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwot IH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wbGVfc2QgKF9fbTEyOGQgX19B LCBfX20xMjhkIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21w bGVzZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5l IF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lu bGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCi0gX21tX2NtcGd0X3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gewotICAg cmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9tb3ZzZCAoKF9fdjJkZikgX19BLAotQEAg LTQzNiw3ICs0MzYsNyBAQCBfbW1fY21wZ3Rfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikK LSAJCQkJCQkJCSBfX0EpKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2Nt cGdlX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhk KSBfX2J1aWx0aW5faWEzMl9tb3ZzZCAoKF9fdjJkZikgX19BLAotQEAgLTQ0NiwyNSArNDQ2LDI1 IEBAIF9tbV9jbXBnZV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIAkJCQkJCQkJIF9f QSkpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wbmVxX3NkIChfX20x MjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9p YTMyX2NtcG5lcXNkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwotIH0KLSAKLS1zdGF0aWMg X19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f YXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wbmx0X3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0Ip Ci0gewotICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sdHNkICgoX192MmRm KV9fQSwgKF9fdjJkZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1f Y21wbmxlX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20x MjhkKV9fYnVpbHRpbl9pYTMyX2NtcG5sZXNkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwot IH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wbmd0X3NkIChfX20xMjhkIF9f QSwgX19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9t b3ZzZCAoKF9fdjJkZikgX19BLAotQEAgLTQ3NCw3ICs0NzQsNyBAQCBfbW1fY21wbmd0X3NkIChf X20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gCQkJCQkJCQkgIF9fQSkpOwotIH0KLSAKLS1zdGF0 aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0r c3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wbmdlX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBf X0IpCi0gewotICAgcmV0dXJuIChfX20xMjhkKSBfX2J1aWx0aW5faWEzMl9tb3ZzZCAoKF9fdjJk ZikgX19BLAotQEAgLTQ4NCw4NSArNDg0LDg1IEBAIF9tbV9jbXBuZ2Vfc2QgKF9fbTEyOGQgX19B LCBfX20xMjhkIF9fQikKLSAJCQkJCQkJCSAgX19BKSk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGlu ZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV9jbXBvcmRfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikKLSB7Ci0g ICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY21wb3Jkc2QgKChfX3YyZGYpX19BLCAo X192MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXB1bm9y ZF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4ZClf X2J1aWx0aW5faWEzMl9jbXB1bm9yZHNkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwotIH0K LSAKLS1zdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2NvbWllcV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQg X19CKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pc2RlcSAoKF9fdjJkZilfX0Es IChfX3YyZGYpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jb21pbHRfc2QgKF9f bTEyOGQgX19BLCBfX20xMjhkIF9fQikKLSB7Ci0gICByZXR1cm4gX19idWlsdGluX2lhMzJfY29t aXNkbHQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGlu ZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGlu ZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkK LSBfbW1fY29taWxlX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJu IF9fYnVpbHRpbl9pYTMyX2NvbWlzZGxlICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwotIH0K LSAKLS1zdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2NvbWlndF9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQg X19CKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jb21pc2RndCAoKF9fdjJkZilfX0Es IChfX3YyZGYpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jb21pZ2Vfc2QgKF9f bTEyOGQgX19BLCBfX20xMjhkIF9fQikKLSB7Ci0gICByZXR1cm4gX19idWlsdGluX2lhMzJfY29t aXNkZ2UgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGlu ZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGlu ZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkK LSBfbW1fY29taW5lcV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVy biBfX2J1aWx0aW5faWEzMl9jb21pc2RuZXEgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0g fQotIAotLXN0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKQotK3N0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fdWNvbWllcV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEy OGQgX19CKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29taXNkZXEgKChfX3YyZGYp X19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fdWNvbWlsdF9z ZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEz Ml91Y29taXNkbHQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBf X2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBf X2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKLSBfbW1fdWNvbWlsZV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAg IHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29taXNkbGUgKChfX3YyZGYpX19BLCAoX192MmRmKV9f Qik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fdWNvbWlndF9zZCAoX19tMTI4ZCBfX0Es IF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl91Y29taXNkZ3QgKChf X3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBpbnQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBpbnQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fdWNv bWlnZV9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiBfX2J1aWx0 aW5faWEzMl91Y29taXNkZ2UgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQik7Ci0gfQotIAotLXN0 YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0 YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKLSBfbW1fdWNvbWluZXFfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQikK LSB7Ci0gICByZXR1cm4gX19idWlsdGluX2lhMzJfdWNvbWlzZG5lcSAoKF9fdjJkZilfX0EsIChf X3YyZGYpX19CKTsKLUBAIC01NzAsMjUgKzU3MCwyNSBAQCBfbW1fdWNvbWluZXFfc2QgKF9fbTEy OGQgX19BLCBfX20xMjhkIF9fCi0gCi0gLyogQ3JlYXRlIGEgdmVjdG9yIG9mIFFpLCB3aGVyZSBp IGlzIHRoZSBlbGVtZW50IG51bWJlci4gICovCi0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20x MjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0g X21tX3NldF9lcGk2NHggKGxvbmcgbG9uZyBfX3ExLCBsb25nIGxvbmcgX19xMCkKLSB7Ci0gICBy ZXR1cm4gX19leHRlbnNpb25fXyAoX19tMTI4aSkoX192MmRpKXsgX19xMCwgX19xMSB9OwotIH0K LSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc2V0X2VwaTY0IChfX202NCBfX3ExLCAg X19tNjQgX19xMCkKLSB7Ci0gICByZXR1cm4gX21tX3NldF9lcGk2NHggKChsb25nIGxvbmcpX19x MSwgKGxvbmcgbG9uZylfX3EwKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21t X3NldF9lcGkzMiAoaW50IF9fcTMsIGludCBfX3EyLCBpbnQgX19xMSwgaW50IF9fcTApCi0gewot ICAgcmV0dXJuIF9fZXh0ZW5zaW9uX18gKF9fbTEyOGkpKF9fdjRzaSl7IF9fcTAsIF9fcTEsIF9f cTIsIF9fcTMgfTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NldF9lcGkx NiAoc2hvcnQgX19xNywgc2hvcnQgX19xNiwgc2hvcnQgX19xNSwgc2hvcnQgX19xNCwKLSAJICAg ICAgIHNob3J0IF9fcTMsIHNob3J0IF9fcTIsIHNob3J0IF9fcTEsIHNob3J0IF9fcTApCi0gewot QEAgLTU5Niw3ICs1OTYsNyBAQCBfbW1fc2V0X2VwaTE2IChzaG9ydCBfX3E3LCBzaG9ydCBfX3E2 LCBzCi0gICAgIF9fcTAsIF9fcTEsIF9fcTIsIF9fcTMsIF9fcTQsIF9fcTUsIF9fcTYsIF9fcTcg fTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NldF9lcGk4IChjaGFyIF9f cTE1LCBjaGFyIF9fcTE0LCBjaGFyIF9fcTEzLCBjaGFyIF9fcTEyLAotIAkgICAgICBjaGFyIF9f cTExLCBjaGFyIF9fcTEwLCBjaGFyIF9fcTA5LCBjaGFyIF9fcTA4LAotIAkgICAgICBjaGFyIF9f cTA3LCBjaGFyIF9fcTA2LCBjaGFyIF9fcTA1LCBjaGFyIF9fcTA0LAotQEAgLTYxMCwzMSArNjEw LDMxIEBAIF9tbV9zZXRfZXBpOCAoY2hhciBfX3ExNSwgY2hhciBfX3ExNCwgY2gKLSAKLSAvKiBT ZXQgYWxsIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgdmVjdG9yIHRvIEEuICAqLwotIAotLXN0YXRp YyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStz dGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotIF9tbV9zZXQxX2VwaTY0eCAobG9uZyBsb25nIF9fQSkKLSB7Ci0g ICByZXR1cm4gX21tX3NldF9lcGk2NHggKF9fQSwgX19BKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5s aW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBf X2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCi0gX21tX3NldDFfZXBpNjQgKF9fbTY0IF9fQSkKLSB7Ci0gICByZXR1cm4gX21t X3NldF9lcGk2NCAoX19BLCBfX0EpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEy OGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBf bW1fc2V0MV9lcGkzMiAoaW50IF9fQSkKLSB7Ci0gICByZXR1cm4gX21tX3NldF9lcGkzMiAoX19B LCBfX0EsIF9fQSwgX19BKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3Nl dDFfZXBpMTYgKHNob3J0IF9fQSkKLSB7Ci0gICByZXR1cm4gX21tX3NldF9lcGkxNiAoX19BLCBf X0EsIF9fQSwgX19BLCBfX0EsIF9fQSwgX19BLCBfX0EpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxp bmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp Y2lhbF9fKSkKLSBfbW1fc2V0MV9lcGk4IChjaGFyIF9fQSkKLSB7Ci0gICByZXR1cm4gX21tX3Nl dF9lcGk4IChfX0EsIF9fQSwgX19BLCBfX0EsIF9fQSwgX19BLCBfX0EsIF9fQSwKLUBAIC02NDQs MjYgKzY0NCwyNiBAQCBfbW1fc2V0MV9lcGk4IChjaGFyIF9fQSkKLSAvKiBDcmVhdGUgYSB2ZWN0 b3Igb2YgUWksIHdoZXJlIGkgaXMgdGhlIGVsZW1lbnQgbnVtYmVyLgotICAgIFRoZSBwYXJhbWV0 ZXIgb3JkZXIgaXMgcmV2ZXJzZWQgZnJvbSB0aGUgX21tX3NldF9lcGkqIGZ1bmN0aW9ucy4gICov Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NldHJfZXBpNjQgKF9fbTY0IF9fcTAs IF9fbTY0IF9fcTEpCi0gewotICAgcmV0dXJuIF9tbV9zZXRfZXBpNjQgKF9fcTEsIF9fcTApOwot IH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc2V0cl9lcGkzMiAoaW50IF9fcTAs IGludCBfX3ExLCBpbnQgX19xMiwgaW50IF9fcTMpCi0gewotICAgcmV0dXJuIF9tbV9zZXRfZXBp MzIgKF9fcTMsIF9fcTIsIF9fcTEsIF9fcTApOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19t MTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKLSBfbW1fc2V0cl9lcGkxNiAoc2hvcnQgX19xMCwgc2hvcnQgX19xMSwgc2hvcnQgX19xMiwg c2hvcnQgX19xMywKLSAJICAgICAgICBzaG9ydCBfX3E0LCBzaG9ydCBfX3E1LCBzaG9ydCBfX3E2 LCBzaG9ydCBfX3E3KQotIHsKLSAgIHJldHVybiBfbW1fc2V0X2VwaTE2IChfX3E3LCBfX3E2LCBf X3E1LCBfX3E0LCBfX3EzLCBfX3EyLCBfX3ExLCBfX3EwKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5s aW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBf X2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCi0gX21tX3NldHJfZXBpOCAoY2hhciBfX3EwMCwgY2hhciBfX3EwMSwgY2hhciBf X3EwMiwgY2hhciBfX3EwMywKLSAJICAgICAgIGNoYXIgX19xMDQsIGNoYXIgX19xMDUsIGNoYXIg X19xMDYsIGNoYXIgX19xMDcsCi0gCSAgICAgICBjaGFyIF9fcTA4LCBjaGFyIF9fcTA5LCBjaGFy IF9fcTEwLCBjaGFyIF9fcTExLAotQEAgLTY3NSwxMzQgKzY3NSwxMzQgQEAgX21tX3NldHJfZXBp OCAoY2hhciBfX3EwMCwgY2hhciBfX3EwMSwgYwotIAotIC8qIENyZWF0ZSBhIHZlY3RvciB3aXRo IGVsZW1lbnQgMCBhcyAqUCBhbmQgdGhlIHJlc3QgemVyby4gICovCi0gCi0tc3RhdGljIF9faW5s aW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBf X2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCi0gX21tX2xvYWRfc2kxMjggKF9fbTEyOGkgY29uc3QgKl9fUCkKLSB7Ci0gICBy ZXR1cm4gKl9fUDsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2xvYWR1X3Np MTI4IChfX20xMjhpIGNvbnN0ICpfX1ApCi0gewotICAgcmV0dXJuIChfX20xMjhpKSBfX2J1aWx0 aW5faWEzMl9sb2FkZHF1ICgoY2hhciBjb25zdCAqKV9fUCk7Ci0gfQotIAotLXN0YXRpYyBfX2lu bGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMg X19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQotIF9tbV9sb2FkbF9lcGk2NCAoX19tMTI4aSBjb25zdCAqX19QKQotIHsKLSAg IHJldHVybiBfbW1fc2V0X2VwaTY0ICgoX19tNjQpMExMLCAqKF9fbTY0ICopX19QKTsKLSB9Ci0g Ci0tc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQotK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3N0b3JlX3NpMTI4IChfX20xMjhpICpfX1AsIF9fbTEy OGkgX19CKQotIHsKLSAgICpfX1AgPSBfX0I7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSB2b2lk IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgdm9p ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9t bV9zdG9yZXVfc2kxMjggKF9fbTEyOGkgKl9fUCwgX19tMTI4aSBfX0IpCi0gewotICAgX19idWls dGluX2lhMzJfc3RvcmVkcXUgKChjaGFyICopX19QLCAoX192MTZxaSlfX0IpOwotIH0KLSAKLS1z dGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0r c3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f YXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3RvcmVsX2VwaTY0IChfX20xMjhpICpfX1AsIF9fbTEyOGkg X19CKQotIHsKLSAgICoobG9uZyBsb25nICopX19QID0gX19idWlsdGluX2lhMzJfdmVjX2V4dF92 MmRpICgoX192MmRpKV9fQiwgMCk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX202NCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTY0IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX21v dmVwaTY0X3BpNjQgKF9fbTEyOGkgX19CKQotIHsKLSAgIHJldHVybiAoX19tNjQpIF9fYnVpbHRp bl9pYTMyX3ZlY19leHRfdjJkaSAoKF9fdjJkaSlfX0IsIDApOwotIH0KLSAKLS1zdGF0aWMgX19p bmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGlj IF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKLSBfbW1fbW92cGk2NF9lcGk2NCAoX19tNjQgX19BKQotIHsKLSAgIHJldHVy biBfbW1fc2V0X2VwaTY0ICgoX19tNjQpMExMLCBfX0EpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxp bmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp Y2lhbF9fKSkKLSBfbW1fbW92ZV9lcGk2NCAoX19tMTI4aSBfX0EpCi0gewotICAgcmV0dXJuIF9t bV9zZXRfZXBpNjQgKChfX202NCkwTEwsIF9tbV9tb3ZlcGk2NF9waTY0IChfX0EpKTsKLSB9Ci0g Ci0gLyogQ3JlYXRlIGEgdmVjdG9yIG9mIHplcm9zLiAgKi8KLS1zdGF0aWMgX19pbmxpbmUgX19t MTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKLSBfbW1fc2V0emVyb19zaTEyOCAodm9pZCkKLSB7Ci0gICByZXR1cm4gX19leHRlbnNpb25f XyAoX19tMTI4aSkoX192NHNpKXsgMCwgMCwgMCwgMCB9OwotIH0KLSAKLS1zdGF0aWMgX19pbmxp bmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp Y2lhbF9fKSkKLSBfbW1fY3Z0ZXBpMzJfcGQgKF9fbTEyOGkgX19BKQotIHsKLSAgIHJldHVybiAo X19tMTI4ZClfX2J1aWx0aW5faWEzMl9jdnRkcTJwZCAoKF9fdjRzaSkgX19BKTsKLSB9Ci0gCi0t c3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp Ci0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRlcGkzMl9wcyAoX19tMTI4aSBfX0EpCi0gewot ICAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY3Z0ZHEycHMgKChfX3Y0c2kpIF9fQSk7 Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRwZF9lcGkzMiAoX19tMTI4 ZCBfX0EpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxICgo X192MmRmKSBfX0EpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRwZF9waTMy IChfX20xMjhkIF9fQSkKLSB7Ci0gICByZXR1cm4gKF9fbTY0KV9fYnVpbHRpbl9pYTMyX2N2dHBk MnBpICgoX192MmRmKSBfX0EpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4IF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2 dHBkX3BzIChfX20xMjhkIF9fQSkKLSB7Ci0gICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEz Ml9jdnRwZDJwcyAoKF9fdjJkZikgX19BKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEy OGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBf X20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp Ci0gX21tX2N2dHRwZF9lcGkzMiAoX19tMTI4ZCBfX0EpCi0gewotICAgcmV0dXJuIChfX20xMjhp KV9fYnVpbHRpbl9pYTMyX2N2dHRwZDJkcSAoKF9fdjJkZikgX19BKTsKLSB9Ci0gCi0tc3RhdGlj IF9faW5saW5lIF9fbTY0IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKLSBfbW1fY3Z0dHBkX3BpMzIgKF9fbTEyOGQgX19BKQotIHsKLSAgIHJldHVy biAoX19tNjQpX19idWlsdGluX2lhMzJfY3Z0dHBkMnBpICgoX192MmRmKSBfX0EpOwotIH0KLSAK LS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY3Z0cGkzMl9wZCAoX19tNjQgX19BKQotIHsK LSAgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jdnRwaTJwZCAoKF9fdjJzaSkgX19B KTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHBzX2VwaTMyIChfX20x MjggX19BKQotIHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9jdnRwczJkcSAo KF9fdjRzZikgX19BKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHRw c19lcGkzMiAoX19tMTI4IF9fQSkKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lh MzJfY3Z0dHBzMmRxICgoX192NHNmKSBfX0EpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19t MTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKLSBfbW1fY3Z0cHNfcGQgKF9fbTEyOCBfX0EpCi0gewotICAgcmV0dXJuIChfX20xMjhkKV9f YnVpbHRpbl9pYTMyX2N2dHBzMnBkICgoX192NHNmKSBfX0EpOwotIH0KLSAKLS1zdGF0aWMgX19p bmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgaW50IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf XykpCi0gX21tX2N2dHNkX3NpMzIgKF9fbTEyOGQgX19BKQotIHsKLSAgIHJldHVybiBfX2J1aWx0 aW5faWEzMl9jdnRzZDJzaSAoKF9fdjJkZikgX19BKTsKLUBAIC04MTAsMjEgKzgxMCwyMSBAQCBf bW1fY3Z0c2Rfc2kzMiAoX19tMTI4ZCBfX0EpCi0gCi0gI2lmZGVmIF9feDg2XzY0X18KLSAvKiBJ bnRlbCBpbnRyaW5zaWMuICAqLwotLXN0YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY3Z0 c2Rfc2k2NCAoX19tMTI4ZCBfX0EpCi0gewotICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX2N2dHNk MnNpNjQgKChfX3YyZGYpIF9fQSk7Ci0gfQotIAotIC8qIE1pY3Jvc29mdCBpbnRyaW5zaWMuICAq LwotLXN0YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY3Z0c2Rfc2k2NHggKF9fbTEyOGQg X19BKQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnRzZDJzaTY0ICgoX192MmRmKSBf X0EpOwotIH0KLSAjZW5kaWYKLSAKLS1zdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHRzZF9zaTMyIChf X20xMjhkIF9fQSkKLSB7Ci0gICByZXR1cm4gX19idWlsdGluX2lhMzJfY3Z0dHNkMnNpICgoX192 MmRmKSBfX0EpOwotQEAgLTgzMiwyNyArODMyLDI3IEBAIF9tbV9jdnR0c2Rfc2kzMiAoX19tMTI4 ZCBfX0EpCi0gCi0gI2lmZGVmIF9feDg2XzY0X18KLSAvKiBJbnRlbCBpbnRyaW5zaWMuICAqLwot LXN0YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKQotK3N0YXRpYyBfX2lubGluZSBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY3Z0dHNkX3NpNjQgKF9fbTEyOGQgX19B KQotIHsKLSAgIHJldHVybiBfX2J1aWx0aW5faWEzMl9jdnR0c2Qyc2k2NCAoKF9fdjJkZikgX19B KTsKLSB9Ci0gCi0gLyogTWljcm9zb2Z0IGludHJpbnNpYy4gICovCi0tc3RhdGljIF9faW5saW5l IGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQotIF9tbV9jdnR0c2Rfc2k2NHggKF9fbTEyOGQgX19BKQotIHsKLSAgIHJldHVy biBfX2J1aWx0aW5faWEzMl9jdnR0c2Qyc2k2NCAoKF9fdjJkZikgX19BKTsKLSB9Ci0gI2VuZGlm Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRzZF9zcyAoX19tMTI4IF9fQSwgX19t MTI4ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfY3Z0c2Qyc3Mg KChfX3Y0c2YpIF9fQSwgKF9fdjJkZikgX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9f bTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGlu ZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxf XykpCi0gX21tX2N2dHNpMzJfc2QgKF9fbTEyOGQgX19BLCBpbnQgX19CKQotIHsKLSAgIHJldHVy biAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jdnRzaTJzZCAoKF9fdjJkZikgX19BLCBfX0IpOwot QEAgLTg2MCwyMSArODYwLDIxIEBAIF9tbV9jdnRzaTMyX3NkIChfX20xMjhkIF9fQSwgaW50IF9f QikKLSAKLSAjaWZkZWYgX194ODZfNjRfXwotIC8qIEludGVsIGludHJpbnNpYy4gICovCi0tc3Rh dGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQot K3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHNpNjRfc2QgKF9fbTEyOGQgX19BLCBsb25nIGxv bmcgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9jdnRzaTY0MnNk ICgoX192MmRmKSBfX0EsIF9fQik7Ci0gfQotIAotIC8qIE1pY3Jvc29mdCBpbnRyaW5zaWMuICAq LwotLXN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRzaTY0eF9zZCAoX19tMTI4ZCBfX0Es IGxvbmcgbG9uZyBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX2N2 dHNpNjQyc2QgKChfX3YyZGYpIF9fQSwgX19CKTsKLSB9Ci0gI2VuZGlmCi0gCi0tc3RhdGljIF9f aW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRp YyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21tX2N2dHNzX3NkIChfX20xMjhkIF9fQSwgX19tMTI4IF9fQikKLSB7 Ci0gICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfY3Z0c3Myc2QgKChfX3YyZGYpIF9f QSwgKF9fdjRzZilfX0IpOwotQEAgLTg4MiwyNDIgKzg4MiwyNDIgQEAgX21tX2N2dHNzX3NkIChf X20xMjhkIF9fQSwgX19tMTI4IF9fQikKLSAKLSAjZGVmaW5lIF9tbV9zaHVmZmxlX3BkKF9fQSwg X19CLCBfX0MpICgoX19tMTI4ZClfX2J1aWx0aW5faWEzMl9zaHVmcGQgKChfX3YyZGYpX19BLCAo X192MmRmKV9fQiwgKF9fQykpKQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV91bnBh Y2toaV9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4 ZClfX2J1aWx0aW5faWEzMl91bnBja2hwZCAoKF9fdjJkZilfX0EsIChfX3YyZGYpX19CKTsKLSB9 Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3VucGFja2xvX3BkIChfX20xMjhkIF9f QSwgX19tMTI4ZCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3Vu cGNrbHBkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxp bmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp Y2lhbF9fKSkKLSBfbW1fbG9hZGhfcGQgKF9fbTEyOGQgX19BLCBkb3VibGUgY29uc3QgKl9fQikK LSB7Ci0gICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfbG9hZGhwZCAoKF9fdjJkZilf X0EsIF9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9sb2FkbF9wZCAo X19tMTI4ZCBfX0EsIGRvdWJsZSBjb25zdCAqX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4ZClf X2J1aWx0aW5faWEzMl9sb2FkbHBkICgoX192MmRmKV9fQSwgX19CKTsKLSB9Ci0gCi0tc3RhdGlj IF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGlj IF9faW5saW5lIGludCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV9tb3ZlbWFza19wZCAoX19tMTI4ZCBfX0EpCi0gewotICAgcmV0dXJuIF9f YnVpbHRpbl9pYTMyX21vdm1za3BkICgoX192MmRmKV9fQSk7Ci0gfQotIAotLXN0YXRpYyBfX2lu bGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMg X19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQotIF9tbV9wYWNrc19lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQot IHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wYWNrc3N3YjEyOCAoKF9fdjho aSlfX0EsIChfX3Y4aGkpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21t X3BhY2tzX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChf X20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhY2tzc2R3MTI4ICgoX192NHNpKV9fQSwgKF9fdjRzaSlf X0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fcGFja3VzX2VwaTE2IChf X20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRp bl9pYTMyX3BhY2t1c3diMTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwotIH0KLSAKLS1z dGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp Ci0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fdW5wYWNraGlfZXBpOCAoX19tMTI4aSBfX0EsIF9f bTEyOGkgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wdW5wY2to YncxMjggKChfX3YxNnFpKV9fQSwgKF9fdjE2cWkpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5s aW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBf X2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCi0gX21tX3VucGFja2hpX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0Ip Ci0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2h3ZDEyOCAoKF9f djhoaSlfX0EsIChfX3Y4aGkpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20x MjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0g X21tX3VucGFja2hpX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0 dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3B1bnBja2hkcTEyOCAoKF9fdjRzaSlfX0EsIChf X3Y0c2kpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3VucGFja2hp X2VwaTY0IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhp KV9fYnVpbHRpbl9pYTMyX3B1bnBja2hxZHExMjggKChfX3YyZGkpX19BLCAoX192MmRpKV9fQik7 Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV91bnBhY2tsb19lcGk4IChfX20x MjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9p YTMyX3B1bnBja2xidzEyOCAoKF9fdjE2cWkpX19BLCAoX192MTZxaSlfX0IpOwotIH0KLSAKLS1z dGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp Ci0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fdW5wYWNrbG9fZXBpMTYgKF9fbTEyOGkgX19BLCBf X20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVucGNr bHdkMTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxp bmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp Y2lhbF9fKSkKLSBfbW1fdW5wYWNrbG9fZXBpMzIgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikK LSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVucGNrbGRxMTI4ICgoX192 NHNpKV9fQSwgKF9fdjRzaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEy OGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBf bW1fdW5wYWNrbG9fZXBpNjQgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1 cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHVucGNrbHFkcTEyOCAoKF9fdjJkaSlfX0EsIChf X3YyZGkpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2FkZF9lcGk4 IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVp bHRpbl9pYTMyX3BhZGRiMTI4ICgoX192MTZxaSlfX0EsIChfX3YxNnFpKV9fQik7Ci0gfQotIAot LXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9hZGRfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20x MjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFkZHcxMjgg KChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20x MjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUg X19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQotIF9tbV9hZGRfZXBpMzIgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1 cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFkZGQxMjggKChfX3Y0c2kpX19BLCAoX192NHNp KV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9hZGRfZXBpNjQgKF9f bTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu X2lhMzJfcGFkZHExMjggKChfX3YyZGkpX19BLCAoX192MmRpKV9fQik7Ci0gfQotIAotLXN0YXRp YyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStz dGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotIF9tbV9hZGRzX2VwaTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9f QikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFkZHNiMTI4ICgoX192 MTZxaSlfX0EsIChfX3YxNnFpKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19t MTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQot IF9tbV9hZGRzX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJu IChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhZGRzdzEyOCAoKF9fdjhoaSlfX0EsIChfX3Y4aGkp X19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2FkZHNfZXB1OCAoX19t MTI4aSBfX0EsIF9fbTEyOGkgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5f aWEzMl9wYWRkdXNiMTI4ICgoX192MTZxaSlfX0EsIChfX3YxNnFpKV9fQik7Ci0gfQotIAotLXN0 YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkK LStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQotIF9tbV9hZGRzX2VwdTE2IChfX20xMjhpIF9fQSwgX19tMTI4 aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhZGR1c3cxMjgg KChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20x MjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUg X19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQotIF9tbV9zdWJfZXBpOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQotIHsKLSAgIHJldHVy biAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3ViYjEyOCAoKF9fdjE2cWkpX19BLCAoX192MTZx aSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3ViX2VwaTE2IChf X20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRp bl9pYTMyX3BzdWJ3MTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwotIH0KLSAKLS1zdGF0 aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0r c3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3ViX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBf X0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzdWJkMTI4ICgoX192 NHNpKV9fQSwgKF9fdjRzaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEy OGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBf bW1fc3ViX2VwaTY0IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChf X20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzdWJxMTI4ICgoX192MmRpKV9fQSwgKF9fdjJkaSlfX0Ip OwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3Vic19lcGk4IChfX20xMjhp IF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMy X3BzdWJzYjEyOCAoKF9fdjE2cWkpX19BLCAoX192MTZxaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMg X19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f YXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3Vic19lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19C KQotIHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3Vic3cxMjggKChfX3Y4 aGkpX19BLCAoX192OGhpKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4 aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9t bV9zdWJzX2VwdTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9f bTEyOGkpX19idWlsdGluX2lhMzJfcHN1YnVzYjEyOCAoKF9fdjE2cWkpX19BLCAoX192MTZxaSlf X0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3Vic19lcHUxNiAoX19t MTI4aSBfX0EsIF9fbTEyOGkgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5f aWEzMl9wc3VidXN3MTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwotIH0KLSAKLS1zdGF0 aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0r c3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbWFkZF9lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkg X19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wbWFkZHdkMTI4ICgo X192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4 aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9f bTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkK LSBfbW1fbXVsaGlfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1 cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG11bGh3MTI4ICgoX192OGhpKV9fQSwgKF9fdjho aSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbXVsbG9fZXBpMTYg KF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWls dGluX2lhMzJfcG11bGx3MTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwotIH0KLSAKLS1z dGF0aWMgX19pbmxpbmUgX19tNjQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQot K3N0YXRpYyBfX2lubGluZSBfX202NCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotIF9tbV9tdWxfc3UzMiAoX19tNjQgX19BLCBfX202NCBfX0IpCi0g ewotICAgcmV0dXJuIChfX202NClfX2J1aWx0aW5faWEzMl9wbXVsdWRxICgoX192MnNpKV9fQSwg KF9fdjJzaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbXVsX2Vw dTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9f YnVpbHRpbl9pYTMyX3BtdWx1ZHExMjggKChfX3Y0c2kpX19BLCAoX192NHNpKV9fQik7Ci0gfQot IAotICNpZiAwCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NsbGlfZXBpMTYgKF9fbTEy OGkgX19BLCBpbnQgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9w c2xsd2kxMjggKChfX3Y4aGkpX19BLCBfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19t MTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5l IF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKLSBfbW1fc2xsaV9lcGkzMiAoX19tMTI4aSBfX0EsIGludCBfX0IpCi0gewotICAgcmV0dXJu IChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzbGxkaTEyOCAoKF9fdjRzaSlfX0EsIF9fQik7Ci0g fQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zbGxpX2VwaTY0IChfX20xMjhpIF9f QSwgaW50IF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbHFp MTI4ICgoX192MmRpKV9fQSwgX19CKTsKLUBAIC0xMTMyLDEzICsxMTMyLDEzIEBAIF9tbV9zbGxp X2VwaTY0IChfX20xMjhpIF9fQSwgaW50IF9fQikKLSAjZW5kaWYKLSAKLSAjaWYgMAotLXN0YXRp YyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStz dGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQotIF9tbV9zcmFpX2VwaTE2IChfX20xMjhpIF9fQSwgaW50IF9fQikK LSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNyYXdpMTI4ICgoX192OGhp KV9fQSwgX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3NyYWlfZXBp MzIgKF9fbTEyOGkgX19BLCBpbnQgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0 aW5faWEzMl9wc3JhZGkxMjggKChfX3Y0c2kpX19BLCBfX0IpOwotQEAgLTExNTEsMTMgKzExNTEs MTMgQEAgX21tX3NyYWlfZXBpMzIgKF9fbTEyOGkgX19BLCBpbnQgX19CKQotICNlbmRpZgotIAot ICNpZiAwCi0tc3RhdGljIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQotK3N0YXRpYyBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCi0gX21tX3NybGlfc2kxMjggKF9fbTEyOGkgX19BLCBpbnQgX19CKQotIHsK LSAgIHJldHVybiAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybGRxaTEyOCAoX19BLCBfX0Ig KiA4KSk7Ci0gfQotIAotLXN0YXRpYyBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkKLStzdGF0aWMgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zcmxpX3NpMTI4IChfX20xMjhpIF9fQSwgaW50IF9f QikKLSB7Ci0gICByZXR1cm4gKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzbGxkcWkxMjggKF9f QSwgX19CICogOCkpOwotQEAgLTExNzAsMTkgKzExNzAsMTkgQEAgX21tX3NybGlfc2kxMjggKF9f bTEyOGkgX19BLCBpbnQgX19CKQotICNlbmRpZgotIAotICNpZiAwCi0tc3RhdGljIF9faW5saW5l IF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lu bGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCi0gX21tX3NybGlfZXBpMTYgKF9fbTEyOGkgX19BLCBpbnQgX19CKQotIHsKLSAgIHJl dHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc3Jsd2kxMjggKChfX3Y4aGkpX19BLCBfX0Ip OwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3JsaV9lcGkzMiAoX19tMTI4 aSBfX0EsIGludCBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Bz cmxkaTEyOCAoKF9fdjRzaSlfX0EsIF9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20x MjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUg X19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQotIF9tbV9zcmxpX2VwaTY0IChfX20xMjhpIF9fQSwgaW50IF9fQikKLSB7Ci0gICByZXR1cm4g KF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNybHFpMTI4ICgoX192MmRpKV9fQSwgX19CKTsKLUBA IC0xMTk2LDE0MCArMTE5NiwxNDAgQEAgX21tX3NybGlfZXBpNjQgKF9fbTEyOGkgX19BLCBpbnQg X19CKQotICAgKChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmxxaTEyOCAoKF9fdjRzaSkoX19B KSwgX19CKSkKLSAjZW5kaWYKLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc2xsX2Vw aTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9f YnVpbHRpbl9pYTMyX3BzbGx3MTI4KChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Ci0gfQotIAot LXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zbGxfZXBpMzIgKF9fbTEyOGkgX19BLCBfX20x MjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNsbGQxMjgo KF9fdjRzaSlfX0EsIChfX3Y0c2kpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEy OGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBf X20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp Ci0gX21tX3NsbF9lcGk2NCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQotIHsKLSAgIHJldHVy biAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2xscTEyOCgoX192MmRpKV9fQSwgKF9fdjJkaSlf X0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3JhX2VwaTE2IChfX20x MjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9p YTMyX3BzcmF3MTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMg X19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f YXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3JhX2VwaTMyIChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0Ip Ci0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmFkMTI4ICgoX192NHNp KV9fQSwgKF9fdjRzaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1f c3JsX2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20x MjhpKV9fYnVpbHRpbl9pYTMyX3Bzcmx3MTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwot IH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fc3JsX2VwaTMyIChfX20xMjhpIF9f QSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3Bz cmxkMTI4ICgoX192NHNpKV9fQSwgKF9fdjRzaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxp bmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9f aW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp Y2lhbF9fKSkKLSBfbW1fc3JsX2VwaTY0IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewot ICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BzcmxxMTI4ICgoX192MmRpKV9fQSwg KF9fdjJkaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fYW5kX3Np MTI4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9f YnVpbHRpbl9pYTMyX3BhbmQxMjggKChfX3YyZGkpX19BLCAoX192MmRpKV9fQik7Ci0gfQotIAot LXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9hbmRub3Rfc2kxMjggKF9fbTEyOGkgX19BLCBf X20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGFuZG4x MjggKChfX3YyZGkpX19BLCAoX192MmRpKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBf X20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxp bmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFs X18pKQotIF9tbV9vcl9zaTEyOCAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQotIHsKLSAgIHJl dHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wb3IxMjggKChfX3YyZGkpX19BLCAoX192MmRp KV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV94b3Jfc2kxMjggKF9f bTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGlu X2lhMzJfcHhvcjEyOCAoKF9fdjJkaSlfX0EsIChfX3YyZGkpX19CKTsKLSB9Ci0gCi0tc3RhdGlj IF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0 YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCi0gX21tX2NtcGVxX2VwaTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9f QikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGNtcGVxYjEyOCAoKF9f djE2cWkpX19BLCAoX192MTZxaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4 aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9f bTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkK LSBfbW1fY21wZXFfZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1 cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGNtcGVxdzEyOCAoKF9fdjhoaSlfX0EsIChfX3Y4 aGkpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2NtcGVxX2VwaTMy IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVp bHRpbl9pYTMyX3BjbXBlcWQxMjggKChfX3Y0c2kpX19BLCAoX192NHNpKV9fQik7Ci0gfQotIAot LXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXBsdF9lcGk4IChfX20xMjhpIF9fQSwgX19t MTI4aSBfX0IpCi0gewotICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BjbXBndGIx MjggKChfX3YxNnFpKV9fQiwgKF9fdjE2cWkpX19BKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5l IF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lu bGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNp YWxfXykpCi0gX21tX2NtcGx0X2VwaTE2IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewot ICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BjbXBndHcxMjggKChfX3Y4aGkpX19C LCAoX192OGhpKV9fQSk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jbXBs dF9lcGkzMiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4 aSlfX2J1aWx0aW5faWEzMl9wY21wZ3RkMTI4ICgoX192NHNpKV9fQiwgKF9fdjRzaSlfX0EpOwot IH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fY21wZ3RfZXBpOCAoX19tMTI4aSBf X0EsIF9fbTEyOGkgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9w Y21wZ3RiMTI4ICgoX192MTZxaSlfX0EsIChfX3YxNnFpKV9fQik7Ci0gfQotIAotLXN0YXRpYyBf X2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19h cnRpZmljaWFsX18pKQotIF9tbV9jbXBndF9lcGkxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX19C KQotIHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wY21wZ3R3MTI4ICgoX192 OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEy OGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBf bW1fY21wZ3RfZXBpMzIgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4g KF9fbTEyOGkpX19idWlsdGluX2lhMzJfcGNtcGd0ZDEyOCAoKF9fdjRzaSlfX0EsIChfX3Y0c2kp X19CKTsKLSB9Ci0gCi0gI2lmIDAKLS1zdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgaW50IF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2V4dHJhY3RfZXBpMTYg KF9fbTEyOGkgY29uc3QgX19BLCBpbnQgY29uc3QgX19OKQotIHsKLSAgIHJldHVybiBfX2J1aWx0 aW5faWEzMl92ZWNfZXh0X3Y4aGkgKChfX3Y4aGkpX19BLCBfX04pOwotIH0KLSAKLS1zdGF0aWMg X19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3Rh dGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9f YXJ0aWZpY2lhbF9fKSkKLSBfbW1faW5zZXJ0X2VwaTE2IChfX20xMjhpIGNvbnN0IF9fQSwgaW50 IGNvbnN0IF9fRCwgaW50IGNvbnN0IF9fTikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpIF9fYnVp bHRpbl9pYTMyX3ZlY19zZXRfdjhoaSAoKF9fdjhoaSlfX0EsIF9fRCwgX19OKTsKLUBAIC0xMzQx LDM3ICsxMzQxLDM3IEBAIF9tbV9pbnNlcnRfZXBpMTYgKF9fbTEyOGkgY29uc3QgX19BLCBpbnQK LSAgICgoX19tMTI4aSkgX19idWlsdGluX2lhMzJfdmVjX3NldF92OGhpICgoX192OGhpKShBKSwg KEQpLCAoTikpKQotICNlbmRpZgotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9tYXhf ZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkp X19idWlsdGluX2lhMzJfcG1heHN3MTI4ICgoX192OGhpKV9fQSwgKF9fdjhoaSlfX0IpOwotIH0K LSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbWF4X2VwdTggKF9fbTEyOGkgX19BLCBf X20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG1heHVi MTI4ICgoX192MTZxaSlfX0EsIChfX3YxNnFpKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGlu ZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV9taW5fZXBpMTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0g ICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG1pbnN3MTI4ICgoX192OGhpKV9fQSwg KF9fdjhoaSlfX0IpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbWluX2Vw dTggKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19i dWlsdGluX2lhMzJfcG1pbnViMTI4ICgoX192MTZxaSlfX0EsIChfX3YxNnFpKV9fQik7Ci0gfQot IAotLXN0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQotK3N0YXRpYyBfX2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbW92ZW1hc2tfZXBpOCAoX19tMTI4aSBfX0EpCi0gewot ICAgcmV0dXJuIF9fYnVpbHRpbl9pYTMyX3Btb3Ztc2tiMTI4ICgoX192MTZxaSlfX0EpOwotIH0K LSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbXVsaGlfZXB1MTYgKF9fbTEyOGkgX19B LCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcG11 bGh1dzEyOCAoKF9fdjhoaSlfX0EsIChfX3Y4aGkpX19CKTsKLUBAIC0xMzgxLDY3ICsxMzgxLDY3 IEBAIF9tbV9tdWxoaV9lcHUxNiAoX19tMTI4aSBfX0EsIF9fbTEyOGkgX18KLSAjZGVmaW5lIF9t bV9zaHVmZmxlbG9fZXBpMTYoX19BLCBfX0IpICgoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2h1 Zmx3ICgoX192OGhpKV9fQSwgX19CKSkKLSAjZGVmaW5lIF9tbV9zaHVmZmxlX2VwaTMyKF9fQSwg X19CKSAoKF9fbTEyOGkpX19idWlsdGluX2lhMzJfcHNodWZkICgoX192NHNpKV9fQSwgX19CKSkK LSAKLS1zdGF0aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCi0rc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1fbWFza21vdmV1X3NpMTI4IChfX20xMjhpIF9fQSwg X19tMTI4aSBfX0IsIGNoYXIgKl9fQykKLSB7Ci0gICBfX2J1aWx0aW5faWEzMl9tYXNrbW92ZHF1 ICgoX192MTZxaSlfX0EsIChfX3YxNnFpKV9fQiwgX19DKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5s aW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBf X2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCi0gX21tX2F2Z19lcHU4IChfX20xMjhpIF9fQSwgX19tMTI4aSBfX0IpCi0gewot ICAgcmV0dXJuIChfX20xMjhpKV9fYnVpbHRpbl9pYTMyX3BhdmdiMTI4ICgoX192MTZxaSlfX0Es IChfX3YxNnFpKV9fQik7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9hdmdf ZXB1MTYgKF9fbTEyOGkgX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICByZXR1cm4gKF9fbTEyOGkp X19idWlsdGluX2lhMzJfcGF2Z3cxMjggKChfX3Y4aGkpX19BLCAoX192OGhpKV9fQik7Ci0gfQot IAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9zYWRfZXB1OCAoX19tMTI4aSBfX0EsIF9f bTEyOGkgX19CKQotIHsKLSAgIHJldHVybiAoX19tMTI4aSlfX2J1aWx0aW5faWEzMl9wc2FkYncx MjggKChfX3YxNnFpKV9fQSwgKF9fdjE2cWkpX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5l IHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGlu ZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp Ci0gX21tX3N0cmVhbV9zaTMyIChpbnQgKl9fQSwgaW50IF9fQikKLSB7Ci0gICBfX2J1aWx0aW5f aWEzMl9tb3ZudGkgKF9fQSwgX19CKTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIHZvaWQgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSB2b2lkIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX3N0 cmVhbV9zaTEyOCAoX19tMTI4aSAqX19BLCBfX20xMjhpIF9fQikKLSB7Ci0gICBfX2J1aWx0aW5f aWEzMl9tb3ZudGRxICgoX192MmRpICopX19BLCAoX192MmRpKV9fQik7Ci0gfQotIAotLXN0YXRp YyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0 aWMgX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQotIF9tbV9zdHJlYW1fcGQgKGRvdWJsZSAqX19BLCBfX20xMjhkIF9fQikKLSB7 Ci0gICBfX2J1aWx0aW5faWEzMl9tb3ZudHBkIChfX0EsIChfX3YyZGYpX19CKTsKLSB9Ci0gCi0t c3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQot K3N0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCi0gX21tX2NsZmx1c2ggKHZvaWQgY29uc3QgKl9fQSkKLSB7Ci0gICBf X2J1aWx0aW5faWEzMl9jbGZsdXNoIChfX0EpOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgdm9p ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIHZv aWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBf bW1fbGZlbmNlICh2b2lkKQotIHsKLSAgIF9fYnVpbHRpbl9pYTMyX2xmZW5jZSAoKTsKLSB9Ci0g Ci0tc3RhdGljIF9faW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQotK3N0YXRpYyBfX2lubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f LCBfX2FydGlmaWNpYWxfXykpCi0gX21tX21mZW5jZSAodm9pZCkKLSB7Ci0gICBfX2J1aWx0aW5f aWEzMl9tZmVuY2UgKCk7Ci0gfQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRz aTMyX3NpMTI4IChpbnQgX19BKQotIHsKLSAgIHJldHVybiBfbW1fc2V0X2VwaTMyICgwLCAwLCAw LCBfX0EpOwotQEAgLTE0NDksMTQgKzE0NDksMTQgQEAgX21tX2N2dHNpMzJfc2kxMjggKGludCBf X0EpCi0gCi0gI2lmZGVmIF9feDg2XzY0X18KLSAvKiBJbnRlbCBpbnRyaW5zaWMuICAqLwotLXN0 YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkK LStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jdnRzaTY0X3NpMTI4IChsb25nIGxvbmcgX19BKQot IHsKLSAgIHJldHVybiBfbW1fc2V0X2VwaTY0eCAoMCwgX19BKTsKLSB9Ci0gCi0gLyogTWljcm9z b2Z0IGludHJpbnNpYy4gICovCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2N2dHNpNjR4 X3NpMTI4IChsb25nIGxvbmcgX19BKQotIHsKLSAgIHJldHVybiBfbW1fc2V0X2VwaTY0eCAoMCwg X19BKTsKLUBAIC0xNDY1LDM3ICsxNDY1LDM3IEBAIF9tbV9jdnRzaTY0eF9zaTEyOCAobG9uZyBs b25nIF9fQSkKLSAKLSAvKiBDYXN0cyBiZXR3ZWVuIHZhcmlvdXMgU1AsIERQLCBJTlQgdmVjdG9y IHR5cGVzLiAgTm90ZSB0aGF0IHRoZXNlIGRvIG5vCi0gICAgY29udmVyc2lvbiBvZiB2YWx1ZXMs IHRoZXkganVzdCBjaGFuZ2UgdGhlIHR5cGUuICAqLwotLXN0YXRpYyBfX2lubGluZSBfX20xMjgg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20x MjggX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBf bW1fY2FzdHBkX3BzKF9fbTEyOGQgX19BKQotIHsKLSAgIHJldHVybiAoX19tMTI4KSBfX0E7Ci0g fQotIAotLXN0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkKLStzdGF0aWMgX19pbmxpbmUgX19tMTI4aSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQotIF9tbV9jYXN0cGRfc2kxMjgoX19tMTI4ZCBf X0EpCi0gewotICAgcmV0dXJuIChfX20xMjhpKSBfX0E7Ci0gfQotIAotLXN0YXRpYyBfX2lubGlu ZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStzdGF0aWMgX19p bmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQotIF9tbV9jYXN0cHNfcGQoX19tMTI4IF9fQSkKLSB7Ci0gICByZXR1cm4gKF9fbTEy OGQpIF9fQTsKLSB9Ci0gCi0tc3RhdGljIF9faW5saW5lIF9fbTEyOGkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKQotK3N0YXRpYyBfX2lubGluZSBfX20xMjhpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCi0gX21tX2Nhc3Rwc19zaTEy OChfX20xMjggX19BKQotIHsKLSAgIHJldHVybiAoX19tMTI4aSkgX19BOwotIH0KLSAKLS1zdGF0 aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKLStz dGF0aWMgX19pbmxpbmUgX19tMTI4IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCi0gX21tX2Nhc3RzaTEyOF9wcyhfX20xMjhpIF9fQSkKLSB7Ci0gICBy ZXR1cm4gKF9fbTEyOCkgX19BOwotIH0KLSAKLS1zdGF0aWMgX19pbmxpbmUgX19tMTI4ZCBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rc3RhdGljIF9faW5saW5lIF9fbTEyOGQg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKLSBfbW1f Y2FzdHNpMTI4X3BkKF9fbTEyOGkgX19BKQotIHsKLSAgIHJldHVybiAoX19tMTI4ZCkgX19BOwoK ZGlmZiAtLWdpdCBhL2djYzQxLWJ1aWxkLWlkLnBhdGNoIGIvZ2NjNDEtYnVpbGQtaWQucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMTYyZTYuLjAwMDAwMDAKLS0tIGEvZ2Nj NDEtYnVpbGQtaWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0yMDA3LTA3 LTIyICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgotCi0JKiBjb25maWcvcnM2 MDAwL3N5c3Y0LmggKExJTktfRUhfU1BFQyk6IEFkZCAtLWJ1aWxkLWlkIGZvcgotCW5vbi1yZWxv Y2F0YWJsZSBsaW5rLgotCSogY29uZmlnL2xpbnV4LmggKExJTktfRUhfU1BFQyk6IExpa2V3aXNl LgotCSogY29uZmlnL3NwYXJjL2xpbnV4LmggKExJTktfRUhfU1BFQyk6IExpa2V3aXNlLgotCSog Y29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoTElOS19FSF9TUEVDKTogTGlrZXdpc2UuCi0JKiBjb25m aWcvYWxwaGEvZWxmLmggKExJTktfRUhfU1BFQyk6IExpa2V3aXNlLgotCSogY29uZmlnL2lhNjQv bGludXguaCAoTElOS19FSF9TUEVDKTogTGlrZXdpc2UuCi0KLS0tLSBnY2MvY29uZmlnL3JzNjAw MC9zeXN2NC5oLn4xfgotKysrIGdjYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLUBAIC0xMDQ0LDcg KzEwNDQsNyBAQCBleHRlcm4gaW50IGZpeHVwbGFiZWxubzsKLSAgICV7IWR5bmFtaWMtbGlua2Vy Oi1keW5hbWljLWxpbmtlciAvbGliL2xkLnNvLjF9fX0iCi0gCi0gI2lmIGRlZmluZWQoSEFWRV9M RF9FSF9GUkFNRV9IRFIpCi0tIyBkZWZpbmUgTElOS19FSF9TUEVDICIleyFzdGF0aWM6LS1laC1m cmFtZS1oZHJ9ICIKLSsjIGRlZmluZSBMSU5LX0VIX1NQRUMgIiV7IXN0YXRpYzotLWVoLWZyYW1l LWhkcn0gJXshcjotLWJ1aWxkLWlkfSAiCi0gI2VuZGlmCi0gCi0gI2RlZmluZSBDUFBfT1NfTElO VVhfU1BFQyAiLURfX3VuaXhfXyAtRF9fZ251X2xpbnV4X18gLURfX2xpbnV4X18gXAotLS0tIGdj Yy9jb25maWcvbGludXguaC5+MX4KLSsrKyBnY2MvY29uZmlnL2xpbnV4LmgKLUBAIC04NSw3ICs4 NSw3IEBAIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KLSAgICAgfSB3aGlsZSAoMCkK LSAKLSAjaWYgZGVmaW5lZChIQVZFX0xEX0VIX0ZSQU1FX0hEUikKLS0jZGVmaW5lIExJTktfRUhf U1BFQyAiJXshc3RhdGljOi0tZWgtZnJhbWUtaGRyfSAiCi0rI2RlZmluZSBMSU5LX0VIX1NQRUMg IiV7IXN0YXRpYzotLWVoLWZyYW1lLWhkcn0gJXshcjotLWJ1aWxkLWlkfSAiCi0gI2VuZGlmCi0g Ci0gLyogRGVmaW5lIHRoaXMgc28gd2UgY2FuIGNvbXBpbGUgTVMgY29kZSBmb3IgdXNlIHdpdGgg V0lORS4gICovCi0tLS0gZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgufjF+Ci0rKysgZ2NjL2Nv bmZpZy9zcGFyYy9saW51eDY0LmgKLUBAIC0zMTYsNyArMzE2LDcgQEAgZG8gewkJCQkJCQkJCVwK LSAjZGVmaW5lIERJVEZfQ09OVkVSU0lPTl9MSUJGVU5DUyAxCi0gCi0gI2lmIGRlZmluZWQoSEFW RV9MRF9FSF9GUkFNRV9IRFIpCi0tI2RlZmluZSBMSU5LX0VIX1NQRUMgIiV7IXN0YXRpYzotLWVo LWZyYW1lLWhkcn0gIgotKyNkZWZpbmUgTElOS19FSF9TUEVDICIleyFzdGF0aWM6LS1laC1mcmFt ZS1oZHJ9ICV7IXI6LS1idWlsZC1pZH0gIgotICNlbmRpZgotIAwKLSAjaWZkZWYgSEFWRV9BU19U TFMKLS0tLSBnY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgufjF+Ci0rKysgZ2NjL2NvbmZpZy9zcGFy Yy9saW51eC5oCi1AQCAtMTg4LDcgKzE4OCw3IEBAIGRvIHsJCQkJCQkJCQlcCi0gI2RlZmluZSBE SVRGX0NPTlZFUlNJT05fTElCRlVOQ1MgMQotIAotICNpZiBkZWZpbmVkKEhBVkVfTERfRUhfRlJB TUVfSERSKQotLSNkZWZpbmUgTElOS19FSF9TUEVDICIleyFzdGF0aWM6LS1laC1mcmFtZS1oZHJ9 ICIKLSsjZGVmaW5lIExJTktfRUhfU1BFQyAiJXshc3RhdGljOi0tZWgtZnJhbWUtaGRyfSAleyFy Oi0tYnVpbGQtaWR9ICIKLSAjZW5kaWYKLSAMCi0gI2lmZGVmIEhBVkVfQVNfVExTCi0tLS0gZ2Nj L2NvbmZpZy9hbHBoYS9lbGYuaC5+MX4KLSsrKyBnY2MvY29uZmlnL2FscGhhL2VsZi5oCi1AQCAt NDUzLDUgKzQ1Myw1IEBAIGV4dGVybiBpbnQgYWxwaGFfdGhpc19ncGRpc3Bfc2VxdWVuY2VfbnUK LSAgICBJIGltYWdpbmUgdGhhdCBvdGhlciBzeXN0ZW1zIHdpbGwgY2F0Y2ggdXAuICBJbiB0aGUg bWVhbnRpbWUsIGl0Ci0gICAgZG9lc24ndCBoYXJtIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBkYXRh IGV4aXN0cyB0byBiZSB1c2VkIGxhdGVyLiAgKi8KLSAjaWYgZGVmaW5lZChIQVZFX0xEX0VIX0ZS QU1FX0hEUikKLS0jZGVmaW5lIExJTktfRUhfU1BFQyAiJXshc3RhdGljOi0tZWgtZnJhbWUtaGRy fSAiCi0rI2RlZmluZSBMSU5LX0VIX1NQRUMgIiV7IXN0YXRpYzotLWVoLWZyYW1lLWhkcn0gJXsh cjotLWJ1aWxkLWlkfSAiCi0gI2VuZGlmCi0tLS0gZ2NjL2NvbmZpZy9pYTY0L2xpbnV4LmgufjF+ Ci0rKysgZ2NjL2NvbmZpZy9pYTY0L2xpbnV4LmgKLUBAIC01Niw3ICs1Niw3IEBAIGRvIHsJCQkJ CQlcCi0gICAgU2lnbmFsaXplIHRoYXQgYmVjYXVzZSB3ZSBoYXZlIGZkZS1nbGliYywgd2UgZG9u J3QgbmVlZCBhbGwgQyBzaGFyZWQgbGlicwotICAgIGxpbmtlZCBhZ2FpbnN0IC1sZ2NjX3MuICAq LwotICN1bmRlZiBMSU5LX0VIX1NQRUMKLS0jZGVmaW5lIExJTktfRUhfU1BFQyAiIgotKyNkZWZp bmUgTElOS19FSF9TUEVDICIleyFyOi0tYnVpbGQtaWR9ICIKLSAKLSAjZGVmaW5lIE1EX1VOV0lO RF9TVVBQT1JUICJjb25maWcvaWE2NC9saW51eC11bndpbmQuaCIKLSAKCmRpZmYgLS1naXQgYS9n Y2M0MS1jKystYnVpbHRpbi1yZWRlY2wucGF0Y2ggYi9nY2M0MS1jKystYnVpbHRpbi1yZWRlY2wu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NjU1YWQuLjAwMDAwMDAKLS0t IGEvZ2NjNDEtYysrLWJ1aWx0aW4tcmVkZWNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAy ICswLDAgQEAKLTIwMDctMTAtMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgot Ci0JKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFdoZW4gcmVkZWNsYXJpbmcgYSBidWlsdGlu IGZ1bmN0aW9uLAotCWtlZXAgdGhlIG1lcmdlZCBkZWNsIGJ1aWx0aW4gd2hlbmV2ZXIgdHlwZXMg bWF0Y2gsIGV2ZW4gaWYgbmV3Ci0JZGVjbCBkZWZpbmVzIGEgZnVuY3Rpb24uCi0KLQkqIGdjYy5k Zy9idWlsdGlucy02NS5jOiBOZXcgdGVzdC4KLQkqIGcrKy5kZy9leHQvYnVpbHRpbjEwLkM6IE5l dyB0ZXN0LgotCi0tLS0gZ2NjL2NwL2RlY2wuYy5qagkyMDA3LTEwLTAxIDIyOjExOjA5LjAwMDAw MDAwMCArMDIwMAotKysrIGdjYy9jcC9kZWNsLmMJMjAwNy0xMC0wMiAxMTozOTo0Ni4wMDAwMDAw MDAgKzAyMDAKLUBAIC0xOTg4LDIzICsxOTg4LDIxIEBAIGR1cGxpY2F0ZV9kZWNscyAodHJlZSBu ZXdkZWNsLCB0cmVlIG9sZGQKLSAJICBERUNMX0FSR1VNRU5UUyAob2xkZGVjbCkgPSBERUNMX0FS R1VNRU5UUyAobmV3ZGVjbCk7Ci0gCSAgREVDTF9SRVNVTFQgKG9sZGRlY2wpID0gREVDTF9SRVNV TFQgKG5ld2RlY2wpOwotIAl9Ci0rICAgICAgLyogSWYgcmVkZWNsYXJpbmcgYSBidWlsdGluIGZ1 bmN0aW9uLCBpdCBzdGF5cyBidWlsdCBpbi4gICovCi0rICAgICAgaWYgKHR5cGVzX21hdGNoICYm IERFQ0xfQlVJTFRfSU4gKG9sZGRlY2wpKQotKwl7Ci0rCSAgREVDTF9CVUlMVF9JTl9DTEFTUyAo bmV3ZGVjbCkgPSBERUNMX0JVSUxUX0lOX0NMQVNTIChvbGRkZWNsKTsKLSsJICBERUNMX0ZVTkNU SU9OX0NPREUgKG5ld2RlY2wpID0gREVDTF9GVU5DVElPTl9DT0RFIChvbGRkZWNsKTsKLSsJICAv KiBJZiB3ZSdyZSBrZWVwaW5nIHRoZSBidWlsdC1pbiBkZWZpbml0aW9uLCBrZWVwIHRoZSBydGws Ci0rCSAgICAgcmVnYXJkbGVzcyBvZiBkZWNsYXJhdGlvbiBtYXRjaGVzLiAgKi8KLSsJICBDT1BZ X0RFQ0xfUlRMIChvbGRkZWNsLCBuZXdkZWNsKTsKLSsJfQotICAgICAgIGlmIChuZXdfZGVmaW5l c19mdW5jdGlvbikKLSAJLyogSWYgZGVmaW5pbmcgYSBmdW5jdGlvbiBkZWNsYXJlZCB3aXRoIG90 aGVyIGxhbmd1YWdlCi0gCSAgIGxpbmthZ2UsIHVzZSB0aGUgcHJldmlvdXNseSBkZWNsYXJlZCBs YW5ndWFnZSBsaW5rYWdlLiAgKi8KLSAJU0VUX0RFQ0xfTEFOR1VBR0UgKG5ld2RlY2wsIERFQ0xf TEFOR1VBR0UgKG9sZGRlY2wpKTsKLSAgICAgICBlbHNlIGlmICh0eXBlc19tYXRjaCkKLSAJewot LQkgIC8qIElmIHJlZGVjbGFyaW5nIGEgYnVpbHRpbiBmdW5jdGlvbiwgYW5kIG5vdCBhIGRlZmlu aXRpb24sCi0tCSAgICAgaXQgc3RheXMgYnVpbHQgaW4uICAqLwotLQkgIGlmIChERUNMX0JVSUxU X0lOIChvbGRkZWNsKSkKLS0JICAgIHsKLS0JICAgICAgREVDTF9CVUlMVF9JTl9DTEFTUyAobmV3 ZGVjbCkgPSBERUNMX0JVSUxUX0lOX0NMQVNTIChvbGRkZWNsKTsKLS0JICAgICAgREVDTF9GVU5D VElPTl9DT0RFIChuZXdkZWNsKSA9IERFQ0xfRlVOQ1RJT05fQ09ERSAob2xkZGVjbCk7Ci0tCSAg ICAgIC8qIElmIHdlJ3JlIGtlZXBpbmcgdGhlIGJ1aWx0LWluIGRlZmluaXRpb24sIGtlZXAgdGhl IHJ0bCwKLS0JCSByZWdhcmRsZXNzIG9mIGRlY2xhcmF0aW9uIG1hdGNoZXMuICAqLwotLQkgICAg ICBDT1BZX0RFQ0xfUlRMIChvbGRkZWNsLCBuZXdkZWNsKTsKLS0JICAgIH0KLS0KLSAJICBERUNM X1JFU1VMVCAobmV3ZGVjbCkgPSBERUNMX1JFU1VMVCAob2xkZGVjbCk7Ci0gCSAgLyogRG9uJ3Qg Y2xlYXIgb3V0IHRoZSBhcmd1bWVudHMgaWYgd2UncmUgcmVkZWZpbmluZyBhIGZ1bmN0aW9uLiAg Ki8KLSAJICBpZiAoREVDTF9BUkdVTUVOVFMgKG9sZGRlY2wpKQotLS0tIGdjYy90ZXN0c3VpdGUv Z2NjLmRnL2J1aWx0aW5zLTY1LmMuamoJMjAwNy0xMC0wMiAxMToyMzo1MS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9idWlsdGlucy02NS5jCTIwMDctMTAtMDIgMTE6 MjQ6MTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDI1IEBACi0rLyogeyBkZy1kbyBjb21w aWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLwotKwotK3R5cGVkZWYgX19TSVpF X1RZUEVfXyBzaXplX3Q7Ci0rZXh0ZXJuIHZvaWQgX19jaGtfZmFpbCAodm9pZCk7Ci0rZXh0ZXJu IGludCBzbnByaW50ZiAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgLi4uKTsKLStleHRl cm4gaW5saW5lIF9fYXR0cmlidXRlX18oKGdudV9pbmxpbmUsIGFsd2F5c19pbmxpbmUpKSBpbnQg c25wcmludGYgKGNoYXIgKmEsIHNpemVfdCBiLCBjb25zdCBjaGFyICpmbXQsIC4uLikKLSt7Ci0r ICBpZiAoX19idWlsdGluX29iamVjdF9zaXplIChhLCAwKSAhPSAtMVVMICYmIF9fYnVpbHRpbl9v YmplY3Rfc2l6ZSAoYSwgMCkgPCBiKQotKyAgICBfX2Noa19mYWlsICgpOwotKyAgcmV0dXJuIF9f YnVpbHRpbl9zbnByaW50ZiAoYSwgYiwgZm10LCBfX2J1aWx0aW5fdmFfYXJnX3BhY2sgKCkpOwot K30KLStleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCAu Li4pIF9fYXNtICgibXlzbnByaW50ZiIpOwotKwotK2NoYXIgYnVmWzEwXTsKLSsKLStpbnQKLStt YWluICh2b2lkKQotK3sKLSsgIHNucHJpbnRmIChidWYsIDEwLCAiJWQlZFxuIiwgMTAsIDEwKTsK LSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm15 c25wcmludGYiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9f Y2hrX2ZhaWwiIH0gfSAqLwotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9idWlsdGluMTAu Qy5qagkyMDA3LTEwLTAyIDExOjE5OjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy90ZXN0c3Vp dGUvZysrLmRnL2V4dC9idWlsdGluMTAuQwkyMDA3LTEwLTAyIDExOjIzOjI2LjAwMDAwMDAwMCAr MDIwMAotQEAgLTAsMCArMSwyNyBAQAotKy8vIHsgZGctZG8gY29tcGlsZSB9Ci0rLy8geyBkZy1v cHRpb25zICItTzIiIH0KLSsKLSt0eXBlZGVmIF9fU0laRV9UWVBFX18gc2l6ZV90OwotK2V4dGVy biAiQyIgewotK2V4dGVybiB2b2lkIF9fY2hrX2ZhaWwgKHZvaWQpOwotK2V4dGVybiBpbnQgc25w cmludGYgKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4uLik7Ci0rZXh0ZXJuIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChnbnVfaW5saW5lLCBhbHdheXNfaW5saW5lKSkgaW50IHNucHJpbnRm IChjaGFyICphLCBzaXplX3QgYiwgY29uc3QgY2hhciAqZm10LCAuLi4pCi0rewotKyAgaWYgKF9f YnVpbHRpbl9vYmplY3Rfc2l6ZSAoYSwgMCkgIT0gLTFVTCAmJiBfX2J1aWx0aW5fb2JqZWN0X3Np emUgKGEsIDApIDwgYikKLSsgICAgX19jaGtfZmFpbCAoKTsKLSsgIHJldHVybiBfX2J1aWx0aW5f c25wcmludGYgKGEsIGIsIGZtdCwgX19idWlsdGluX3ZhX2FyZ19wYWNrICgpKTsKLSt9Ci0rZXh0 ZXJuIGludCBzbnByaW50ZiAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2Fz bSAoIm15c25wcmludGYiKTsKLSt9Ci0rCi0rY2hhciBidWZbMTBdOwotKwotK2ludAotK21haW4g KHZvaWQpCi0rewotKyAgc25wcmludGYgKGJ1ZiwgMTAsICIlZCVkXG4iLCAxMCwgMTApOwotKyAg cmV0dXJuIDA7Ci0rfQotKwotKy8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibXlzbnBy aW50ZiIgfSB9Ci0rLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX19jaGtfZmFp bCIgfSB9CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtYysrLWdudS1pbmxpbmUtcmVkZWNsLnBhdGNoIGIv Z2NjNDEtYysrLWdudS1pbmxpbmUtcmVkZWNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBjMjEzY2VmLi4wMDAwMDAwCi0tLSBhL2djYzQxLWMrKy1nbnUtaW5saW5lLXJlZGVj bC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLTIwMDctMTAtMDEgIEFsZXhh bmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgotCi0JKiBkZWNsLmMgKGR1cGxpY2F0ZV9k ZWNscyk6IFByZXNlcnZlIGxpbmthZ2UgZmxhZ3MgZm9yIG1lcmUKLQlyZWRlY2xhcmF0aW9ucyBv ZiBnbnVfaW5saW5lIGRlZmluaXRpb25zLgotCi0JKiBnKysuZGcvZXh0L2dudS1pbmxpbmUtZ2xv YmFsLXJlZGVjbC5DOiBOZXcuCi0KLS0tLSBnY2MvY3AvZGVjbC5jLm9yaWcJMjAwNy0wOS0yOCAw MDowMjozMy4wMDAwMDAwMDAgLTAzMDAKLSsrKyBnY2MvY3AvZGVjbC5jCTIwMDctMTAtMDEgMTY6 MzM6MTAuMDAwMDAwMDAwIC0wMzAwCi1AQCAtMTg0NiwyNCArMTg0NiwyNCBAQCBkdXBsaWNhdGVf ZGVjbHMgKHRyZWUgbmV3ZGVjbCwgdHJlZSBvbGRkCi0gICBuZXdfdGVtcGxhdGUgPSBOVUxMX1RS RUU7Ci0gICBpZiAoREVDTF9MQU5HX1NQRUNJRklDIChuZXdkZWNsKSAmJiBERUNMX0xBTkdfU1BF Q0lGSUMgKG9sZGRlY2wpKQotICAgICB7Ci0tICAgICAgYm9vbCBvbGRfZGVjbF9nbnVfaW5saW5l OwotKyAgICAgIGJvb2wgbmV3X3JlZGVmaW5lc19nbnVfaW5saW5lID0gZmFsc2U7Ci0gCi0tICAg ICAgaWYgKChERUNMX0lOVEVSRkFDRV9LTk9XTiAob2xkZGVjbCkKLS0JICAgJiYgVFJFRV9DT0RF IChvbGRkZWNsKSA9PSBGVU5DVElPTl9ERUNMKQotLQkgIHx8IChUUkVFX0NPREUgKG9sZGRlY2wp ID09IFRFTVBMQVRFX0RFQ0wKLS0JICAgICAgJiYgVFJFRV9DT0RFIChERUNMX1RFTVBMQVRFX1JF U1VMVCAob2xkZGVjbCkpID09IEZVTkNUSU9OX0RFQ0wpKQotKyAgICAgIGlmIChuZXdfZGVmaW5l c19mdW5jdGlvbgotKwkgICYmICgoREVDTF9JTlRFUkZBQ0VfS05PV04gKG9sZGRlY2wpCi0rCSAg ICAgICAmJiBUUkVFX0NPREUgKG9sZGRlY2wpID09IEZVTkNUSU9OX0RFQ0wpCi0rCSAgICAgIHx8 IChUUkVFX0NPREUgKG9sZGRlY2wpID09IFRFTVBMQVRFX0RFQ0wKLSsJCSAgJiYgKFRSRUVfQ09E RSAoREVDTF9URU1QTEFURV9SRVNVTFQgKG9sZGRlY2wpKQotKwkJICAgICAgPT0gRlVOQ1RJT05f REVDTCkpKSkKLSAJewotIAkgIHRyZWUgZm4gPSBvbGRkZWNsOwotIAotIAkgIGlmIChUUkVFX0NP REUgKGZuKSA9PSBURU1QTEFURV9ERUNMKQotIAkgICAgZm4gPSBERUNMX1RFTVBMQVRFX1JFU1VM VCAob2xkZGVjbCk7Ci0gCi0tCSAgb2xkX2RlY2xfZ251X2lubGluZSA9IEdOVV9JTkxJTkVfUCAo Zm4pICYmIERFQ0xfSU5JVElBTCAoZm4pOwotKwkgIG5ld19yZWRlZmluZXNfZ251X2lubGluZSA9 IEdOVV9JTkxJTkVfUCAoZm4pICYmIERFQ0xfSU5JVElBTCAoZm4pOwotIAl9Ci0tICAgICAgZWxz ZQotLQlvbGRfZGVjbF9nbnVfaW5saW5lID0gZmFsc2U7Ci0gCi0tICAgICAgaWYgKCFvbGRfZGVj bF9nbnVfaW5saW5lKQotKyAgICAgIGlmICghbmV3X3JlZGVmaW5lc19nbnVfaW5saW5lKQotIAl7 Ci0gCSAgREVDTF9JTlRFUkZBQ0VfS05PV04gKG5ld2RlY2wpIHw9IERFQ0xfSU5URVJGQUNFX0tO T1dOIChvbGRkZWNsKTsKLSAJICBERUNMX05PVF9SRUFMTFlfRVhURVJOIChuZXdkZWNsKSB8PSBE RUNMX05PVF9SRUFMTFlfRVhURVJOIChvbGRkZWNsKTsKLS0tLSBnY2MvdGVzdHN1aXRlL2crKy5k Zy9leHQvZ251LWlubGluZS1nbG9iYWwtcmVkZWNsLkMJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvZ251LWlubGluZS1nbG9i YWwtcmVkZWNsLkMJMjAwNy0xMC0wMSAxNjo0NTo0OS4wMDAwMDAwMDAgLTAzMDAKLUBAIC0wLDAg KzEsMTkgQEAKLSsvKiBUZXN0IF9fYXR0cmlidXRlX18oKGdudV9pbmxpbmUpKS4KLSsKLSsgICBD aGVjayB0aGF0IHdlIGRvbid0IGdldCBvdXQtb2YtbGluZSBkZWZpbml0aW9ucyBmb3IgZXh0ZXJu IGlubGluZQotKyAgIGdudV9pbmxpbmUgZnVuY3Rpb25zLCByZWdhcmRsZXNzIG9mIHJlZGVjbGFy YXRpb24uCi0rCi0rICovCi0rCi0rLyogeyBkZy1kbyBsaW5rIH0gKi8KLSsvKiB7IGRnLW9wdGlv bnMgIi1PIiB9ICovIC8vIHN1Y2ggdGhhdCBzdGF0aWMgZnVuY3Rpb25zIGFyZSBvcHRpbWl6ZWQg b3V0Ci0rCi0rI2luY2x1ZGUgImdudS1pbmxpbmUtY29tbW9uLmgiCi0rCi0rZGVjbChleHRlcm4s IGZuKQotK2dudWluZGVmKGZuLCAwKQotK2RlY2woZXh0ZXJuLCBmbikKLSsKLStpbnQgbWFpbiAo KSB7Ci0rICBmbiAoKTsKLSt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtYysrLWd1YXJkLXZpc2liaWxp dHkucGF0Y2ggYi9nY2M0MS1jKystZ3VhcmQtdmlzaWJpbGl0eS5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggOTcxMTAwYi4uMDAwMDAwMAotLS0gYS9nY2M0MS1jKystZ3VhcmQt dmlzaWJpbGl0eS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTIwMDctMDkt MDYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgotCi0JKiBnKysuZGcvZXh0L3Zp c2liaWxpdHkvZ3VhcmQxLkM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv ZXh0L3Zpc2liaWxpdHkvZ3VhcmQxLkMJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvZXh0L3Zpc2liaWxpdHkvZ3VhcmQxLkMJKHJldmlzaW9uIDEyODIyNikKLUBAIC0wLDAg KzEsMjkgQEAKLSsvLyB7IGRnLW9wdGlvbnMgIi1mdmlzaWJpbGl0eT1oaWRkZW4iIH0KLSsvLyB7 IGRnLXJlcXVpcmUtdmlzaWJpbGl0eSAiIiB9Ci0rLy8geyBkZy1maW5hbCB7IHNjYW4tbm90LWhp ZGRlbiAiX1pHVlpONW90aGVyY2xFdkU0c19jZCIgfSB9Ci0rCi0rZXh0ZXJuICJDIiBpbnQgcHJp bnRmIChjb25zdCBjaGFyICosIC4uLik7Ci0rCi0rI2RlZmluZSBETExFWFBPUlQgX19hdHRyaWJ1 dGVfXyAoKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCi0rCi0rc3RydWN0IGNsYXNzX2RhdGEKLSt7 Ci0rICBpbnQgYXBwbGU7Ci0rICBjbGFzc19kYXRhKCkgeyBwcmludGYoIm5vbiB0cml2aWFsIGN0 b3JcbiIpOyB9Ci0rfTsKLSsKLStzdHJ1Y3QgRExMRVhQT1JUIG90aGVyCi0rewotKyAgY2xhc3Nf ZGF0YSogb3BlcmF0b3IgKCkoKQotKyAgewotKyAgICBzdGF0aWMgY2xhc3NfZGF0YSBzX2NkOwot KyAgICByZXR1cm4gJnNfY2Q7Ci0rICB9Ci0rfTsKLSsKLStpbnQgbWFpbigpCi0rewotKyAgb3Ro ZXIgYUZvbzsKLSsgIGFGb28oKTsKLSsgIHJldHVybiAwOwotK30KCmRpZmYgLS1naXQgYS9nY2M0 MS1kZWJ1Zy1mb3J0cmFuLWFycmF5LnBhdGNoIGIvZ2NjNDEtZGVidWctZm9ydHJhbi1hcnJheS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk3NjRjYi4uMDAwMDAwMAotLS0g YS9nY2M0MS1kZWJ1Zy1mb3J0cmFuLWFycmF5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMg KzAsMCBAQAotMjAwNy0xMi0xMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0K LQkqIGR3YXJmMm91dC5jIChnZW5fYXJyYXlfdHlwZV9kaWUsIGdlbl9kZXNjcl9hcnJheV90eXBl X2RpZSk6IEZvcgotCUZvcnRyYW4gbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIHVzZSBEV19BVF9v cmRlcmluZwotCURXX09SRF9jb2xfbWFqb3IuCi0KLS0tLSBnY2MvZHdhcmYyb3V0LmMJKHJldmlz aW9uIDEzMDc0MSkKLSsrKyBnY2MvZHdhcmYyb3V0LmMJKHJldmlzaW9uIDEzMDc0MikKLUBAIC0x MTYzNiw2ICsxMTYzNiwxMiBAQCBnZW5fYXJyYXlfdHlwZV9kaWUgKHRyZWUgdHlwZSwgZHdfZGll X3JlCi0gICAgICAgYWRkX0FUX2ZsYWcgKGFycmF5X2RpZSwgRFdfQVRfR05VX3ZlY3RvciwgMSk7 Ci0gICAgIH0KLSAKLSsgIC8qIEZvciBGb3J0cmFuIG11bHRpZGltZW5zaW9uYWwgYXJyYXlzIHVz ZSBEV19PUkRfY29sX21ham9yIG9yZGVyaW5nLiAgKi8KLSsgIGlmIChpc19mb3J0cmFuICgpCi0r ICAgICAgJiYgVFJFRV9DT0RFICh0eXBlKSA9PSBBUlJBWV9UWVBFCi0rICAgICAgJiYgVFJFRV9D T0RFIChUUkVFX1RZUEUgKHR5cGUpKSA9PSBBUlJBWV9UWVBFKQotKyAgICBhZGRfQVRfdW5zaWdu ZWQgKGFycmF5X2RpZSwgRFdfQVRfb3JkZXJpbmcsIERXX09SRF9jb2xfbWFqb3IpOwotKwotICNp ZiAwCi0gICAvKiBXZSBkZWZhdWx0IHRoZSBhcnJheSBvcmRlcmluZy4gIFNEQiB3aWxsIHByb2Jh Ymx5IGRvCi0gICAgICB0aGUgcmlnaHQgdGhpbmdzIGV2ZW4gaWYgRFdfQVRfb3JkZXJpbmcgaXMg bm90IHByZXNlbnQuICBJdCdzIG5vdCBldmVuCi1AQCAtMTE3ODcsNiArMTE3OTMsMTEgQEAgZ2Vu X2Rlc2NyX2FycmF5X3R5cGVfZGllICh0cmVlIHR5cGUsIHN0cgotICAgYWRkX25hbWVfYXR0cmli dXRlIChhcnJheV9kaWUsIHR5cGVfdGFnICh0eXBlKSk7Ci0gICBlcXVhdGVfdHlwZV9udW1iZXJf dG9fZGllICh0eXBlLCBhcnJheV9kaWUpOwotIAotKyAgLyogRm9yIEZvcnRyYW4gbXVsdGlkaW1l bnNpb25hbCBhcnJheXMgdXNlIERXX09SRF9jb2xfbWFqb3Igb3JkZXJpbmcuICAqLwotKyAgaWYg KGlzX2ZvcnRyYW4gKCkKLSsgICAgICAmJiBpbmZvLT5uZGltZW5zaW9ucyA+PSAyKQotKyAgICBh ZGRfQVRfdW5zaWduZWQgKGFycmF5X2RpZSwgRFdfQVRfb3JkZXJpbmcsIERXX09SRF9jb2xfbWFq b3IpOwotKwotICAgaWYgKGluZm8tPmRhdGFfbG9jYXRpb24pCi0gICAgIGFkZF9kZXNjcl9pbmZv X2ZpZWxkIChhcnJheV9kaWUsIERXX0FUX2RhdGFfbG9jYXRpb24sIGluZm8tPmRhdGFfbG9jYXRp b24sCi0gCQkJICBpbmZvLT5iYXNlX2RlY2wpOwoKZGlmZiAtLWdpdCBhL2djYzQxLWRzb2hhbmRs ZS5wYXRjaCBiL2djYzQxLWRzb2hhbmRsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZmI1YThlNS4uMDAwMDAwMAotLS0gYS9nY2M0MS1kc29oYW5kbGUucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0yMDA2LTA1LTEyICBKYWt1YiBKZWxpbmVrICA8amFr dWJAcmVkaGF0LmNvbT4KLQotCSogY3J0c3R1ZmYuYyAoX19kc29faGFuZGxlKTogTWFrZSBfX2Rz b19oYW5kbGUgY29uc3QuCi0KLS0tLSBnY2MvY3J0c3R1ZmYuYy5qagkyMDA1LTExLTE2IDEwOjAy OjUxLjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy9jcnRzdHVmZi5jCTIwMDYtMDUtMTIgMTg6Mjg6 MTguMDAwMDAwMDAwICswMjAwCi1AQCAtMjI2LDEyICsyMjYsMTIgQEAgU1RBVElDIHZvaWQgKl9f SkNSX0xJU1RfX1tdCi0gICAgZHluYW1pYyBsaW5rZXIgdGFrZXMgY2FyZSBvZiB0aGlzLiAgKi8K LSAKLSAjaWZkZWYgSEFWRV9HQVNfSElEREVOCi0tZXh0ZXJuIHZvaWQgKl9fZHNvX2hhbmRsZSBf X2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJoaWRkZW4iKSkpOwotK2V4dGVybiB2b2lk ICpjb25zdCBfX2Rzb19oYW5kbGUgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiaGlk ZGVuIikpKTsKLSAjZW5kaWYKLSAjaWZkZWYgQ1JUU1RVRkZTX08KLS12b2lkICpfX2Rzb19oYW5k bGUgPSAmX19kc29faGFuZGxlOwotK3ZvaWQgKmNvbnN0IF9fZHNvX2hhbmRsZSA9ICh2b2lkICop ICZfX2Rzb19oYW5kbGU7Ci0gI2Vsc2UKLS12b2lkICpfX2Rzb19oYW5kbGUgPSAwOwotK3ZvaWQg KmNvbnN0IF9fZHNvX2hhbmRsZSA9IDA7Ci0gI2VuZGlmCi0gCi0gLyogVGhlIF9fY3hhX2ZpbmFs aXplIGZ1bmN0aW9uIG1heSBub3QgYmUgYXZhaWxhYmxlIHNvIHdlIHVzZSBvbmx5IGEKCmRpZmYg LS1naXQgYS9nY2M0MS1lcnJvci1hdHRyaWIucGF0Y2ggYi9nY2M0MS1lcnJvci1hdHRyaWIucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMDY4MjEuLjAwMDAwMDAKLS0tIGEv Z2NjNDEtZXJyb3ItYXR0cmliLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAK LTIwMDctMDktMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JKiBleHBy LmMgKGV4cGFuZF9leHByX3JlYWxfMSkgPGNhc2UgQ0FMTF9FWFBSPjogVXNlIGdldF9jYWxsZWVf Zm5kZWNsCi0JaW5zdGVhZCBvZiBjaGVja2luZyBDQUxMX0VYUFJfRk4gZGlyZWN0bHkgdG8gdGVz dCBmb3IgYnVpbHRpbnMuCi0JSWYgZXJyb3Igb3Igd2FybmluZyBhdHRyaWJ1dGVzIGFyZSBwcmVz ZW50LCBwcmludAotCWVycm9yIHJlc3AuIHdhcm5pbmcuCi0JKiBjLWNvbW1vbi5jIChoYW5kbGVf ZXJyb3JfYXR0cmlidXRlKTogTmV3IGZ1bmN0aW9uLgotCShjX2NvbW1vbl9hdHRyaWJ1dGVfdGFi bGUpOiBBZGQgZXJyb3IgYW5kIHdhcm5pbmcKLQlhdHRyaWJ1dGVzLgotCSogZG9jL2V4dGVuZC50 ZXhpOiBEb2N1bWVudCBlcnJvciBhbmQgd2FybmluZyBhdHRyaWJ1dGVzLgotCi0JKiBnY2MuZGcv dmEtYXJnLXBhY2stbGVuLTEuYzogVXNlIGVycm9yIGFuZCB3YXJuaW5nCi0JYXR0cmlidXRlcy4K LQkqIGdjYy5kZy92YS1hcmctcGFjay1sZW4tMi5jOiBOZXcgdGVzdC4KLQkqIGcrKy5kZy9leHQv dmEtYXJnLXBhY2stbGVuLTEuQzogVXNlIGVycm9yIGFuZCB3YXJuaW5nCi0JYXR0cmlidXRlcy4K LQkqIGcrKy5kZy9leHQvdmEtYXJnLXBhY2stbGVuLTIuQzogTmV3IHRlc3QuCi0KLS0tLSBnY2Mv ZG9jL2V4dGVuZC50ZXhpLmpqCTIwMDctMDktMjUgMTU6MDQ6MTUuMDAwMDAwMDAwICswMjAwCi0r KysgZ2NjL2RvYy9leHRlbmQudGV4aQkyMDA3LTA5LTI1IDE1OjMyOjIyLjAwMDAwMDAwMCArMDIw MAotQEAgLTE1ODksOCArMTU4OSw4IEBAIGF0dHJpYnV0ZXMgYXJlIGN1cnJlbnRseSBkZWZpbmVk IGZvciBmdW4KLSBAY29kZXtzZWN0aW9ufSwgQGNvZGV7Y29uc3RydWN0b3J9LCBAY29kZXtkZXN0 cnVjdG9yfSwgQGNvZGV7dXNlZH0sCi0gQGNvZGV7dW51c2VkfSwgQGNvZGV7ZGVwcmVjYXRlZH0s IEBjb2Rle3dlYWt9LCBAY29kZXttYWxsb2N9LAotIEBjb2Rle2FsaWFzfSwgQGNvZGV7d2Fybl91 bnVzZWRfcmVzdWx0fSwgQGNvZGV7bm9ubnVsbH0sCi0tQGNvZGV7Z251X2lubGluZX0sIEBjb2Rl e2V4dGVybmFsbHlfdmlzaWJsZX0gYW5kIEBjb2Rle2FydGlmaWNpYWx9LgotLVNldmVyYWwgb3Ro ZXIKLStAY29kZXtnbnVfaW5saW5lfSwgQGNvZGV7ZXh0ZXJuYWxseV92aXNpYmxlfSwgQGNvZGV7 YXJ0aWZpY2lhbH0sCi0rQGNvZGV7ZXJyb3J9IGFuZCBAY29kZXt3YXJuaW5nfS4gIFNldmVyYWwg b3RoZXIKLSBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkIGZvciBmdW5jdGlvbnMgb24gcGFydGljdWxh ciB0YXJnZXQgc3lzdGVtcy4gIE90aGVyCi0gYXR0cmlidXRlcywgaW5jbHVkaW5nIEBjb2Rle3Nl Y3Rpb259IGFyZSBzdXBwb3J0ZWQgZm9yIHZhcmlhYmxlcyBkZWNsYXJhdGlvbnMKLSAoQHB4cmVm e1ZhcmlhYmxlIEF0dHJpYnV0ZXN9KSBhbmQgZm9yIHR5cGVzIChAcHhyZWZ7VHlwZSBBdHRyaWJ1 dGVzfSkuCi1AQCAtMTY4OCw2ICsxNjg4LDMwIEBAIFdoZXRoZXIgdGhlIGZ1bmN0aW9uIGl0c2Vs ZiBpcyBjb25zaWRlcmUKLSB0aGUgY3VycmVudCBpbmxpbmluZyBwYXJhbWV0ZXJzLiAgVGhlIEBj b2Rle2ZsYXR0ZW59IGF0dHJpYnV0ZSBvbmx5IHdvcmtzCi0gcmVsaWFibHkgaW4gdW5pdC1hdC1h LXRpbWUgbW9kZS4KLSAKLStAaXRlbSBlcnJvciAoIkB2YXJ7bWVzc2FnZX0iKQotK0BjaW5kZXgg QGNvZGV7ZXJyb3J9IGZ1bmN0aW9uIGF0dHJpYnV0ZQotK0lmIHRoaXMgYXR0cmlidXRlIGlzIHVz ZWQgb24gYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgYSBjYWxsIHRvIHN1Y2ggYSBmdW5jdGlv bgotK2lzIG5vdCBlbGltaW5hdGVkIHRocm91Z2ggZGVhZCBjb2RlIGVsaW1pbmF0aW9uIG9yIG90 aGVyIG9wdGltaXphdGlvbnMsIGFuIGVycm9yCi0rd2hpY2ggd2lsbCBpbmNsdWRlIEB2YXJ7bWVz c2FnZX0gd2lsbCBiZSBkaWFnbm9zZWQuICBUaGlzIGlzIHVzZWZ1bAotK2ZvciBjb21waWxlIHRp bWUgY2hlY2tpbmcsIGVzcGVjaWFsbHkgdG9nZXRoZXIgd2l0aCBAY29kZXtfX2J1aWx0aW5fY29u c3RhbnRfcH0KLSthbmQgaW5saW5lIGZ1bmN0aW9ucyB3aGVyZSBjaGVja2luZyB0aGUgaW5saW5l IGZ1bmN0aW9uIGFyZ3VtZW50cyBpcyBub3QKLStwb3NzaWJsZSB0aHJvdWdoIEBjb2Rle2V4dGVy biBjaGFyIFsoY29uZGl0aW9uKSA/IDEgOiAtMV07fSB0cmlja3MuCi0rV2hpbGUgaXQgaXMgcG9z c2libGUgdG8gbGVhdmUgdGhlIGZ1bmN0aW9uIHVuZGVmaW5lZCBhbmQgdGh1cyBpbnZva2UKLSth IGxpbmsgZmFpbHVyZSwgd2hlbiB1c2luZyB0aGlzIGF0dHJpYnV0ZSB0aGUgcHJvYmxlbSB3aWxs IGJlIGRpYWdub3NlZAotK2VhcmxpZXIgYW5kIHdpdGggZXhhY3QgbG9jYXRpb24gb2YgdGhlIGNh bGwgZXZlbiBpbiBwcmVzZW5jZSBvZiBpbmxpbmUKLStmdW5jdGlvbnMgb3Igd2hlbiBub3QgZW1p dHRpbmcgZGVidWdnaW5nIGluZm9ybWF0aW9uLgotKwotK0BpdGVtIHdhcm5pbmcgKCJAdmFye21l c3NhZ2V9IikKLStAY2luZGV4IEBjb2Rle3dhcm5pbmd9IGZ1bmN0aW9uIGF0dHJpYnV0ZQotK0lm IHRoaXMgYXR0cmlidXRlIGlzIHVzZWQgb24gYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgYSBj YWxsIHRvIHN1Y2ggYSBmdW5jdGlvbgotK2lzIG5vdCBlbGltaW5hdGVkIHRocm91Z2ggZGVhZCBj b2RlIGVsaW1pbmF0aW9uIG9yIG90aGVyIG9wdGltaXphdGlvbnMsIGEgd2FybmluZwotK3doaWNo IHdpbGwgaW5jbHVkZSBAdmFye21lc3NhZ2V9IHdpbGwgYmUgZGlhZ25vc2VkLiAgVGhpcyBpcyB1 c2VmdWwKLStmb3IgY29tcGlsZSB0aW1lIGNoZWNraW5nLCBlc3BlY2lhbGx5IHRvZ2V0aGVyIHdp dGggQGNvZGV7X19idWlsdGluX2NvbnN0YW50X3B9Ci0rYW5kIGlubGluZSBmdW5jdGlvbnMuICBX aGlsZSBpdCBpcyBwb3NzaWJsZSB0byBkZWZpbmUgdGhlIGZ1bmN0aW9uIHdpdGgKLSthIG1lc3Nh Z2UgaW4gQGNvZGV7LmdudS53YXJuaW5nKn0gc2VjdGlvbiwgd2hlbiB1c2luZyB0aGlzIGF0dHJp YnV0ZSB0aGUgcHJvYmxlbQotK3dpbGwgYmUgZGlhZ25vc2VkIGVhcmxpZXIgYW5kIHdpdGggZXhh Y3QgbG9jYXRpb24gb2YgdGhlIGNhbGwgZXZlbiBpbiBwcmVzZW5jZQotK29mIGlubGluZSBmdW5j dGlvbnMgb3Igd2hlbiBub3QgZW1pdHRpbmcgZGVidWdnaW5nIGluZm9ybWF0aW9uLgotKwotIEBp dGVtIGNkZWNsCi0gQGNpbmRleCBmdW5jdGlvbnMgdGhhdCBkbyBwb3AgdGhlIGFyZ3VtZW50IHN0 YWNrIG9uIHRoZSAzODYKLSBAb3BpbmRleCBtcnRkCi0tLS0gZ2NjL2V4cHIuYy5qagkyMDA3LTA5 LTI1IDE0OjU4OjQwLjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9leHByLmMJMjAwNy0wOS0yNSAx NToxOToxNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC03NTEzLDE5ICs3NTEzLDMxIEBAIGV4cGFuZF9l eHByX3JlYWxfMSAodHJlZSBleHAsIHJ0eCB0YXJnZXQKLSAJIGlubGluaW5nLiAgKi8KLSAgICAg ICBpZiAoQ0FMTF9FWFBSX1ZBX0FSR19QQUNLIChleHApKQotIAllcnJvciAoImludmFsaWQgdXNl IG9mICU8X19idWlsdGluX3ZhX2FyZ19wYWNrICgpJT4iKTsKLS0gICAgICAvKiBDaGVjayBmb3Ig YSBidWlsdC1pbiBmdW5jdGlvbi4gICovCi0tICAgICAgaWYgKFRSRUVfQ09ERSAoVFJFRV9PUEVS QU5EIChleHAsIDApKSA9PSBBRERSX0VYUFIKLS0JICAmJiAoVFJFRV9DT0RFIChUUkVFX09QRVJB TkQgKFRSRUVfT1BFUkFORCAoZXhwLCAwKSwgMCkpCi0tCSAgICAgID09IEZVTkNUSU9OX0RFQ0wp Ci0tCSAgJiYgREVDTF9CVUlMVF9JTiAoVFJFRV9PUEVSQU5EIChUUkVFX09QRVJBTkQgKGV4cCwg MCksIDApKSkKLS0JewotLQkgIGlmIChERUNMX0JVSUxUX0lOX0NMQVNTIChUUkVFX09QRVJBTkQg KFRSRUVfT1BFUkFORCAoZXhwLCAwKSwgMCkpCi0tCSAgICAgID09IEJVSUxUX0lOX0ZST05URU5E KQotLQkgICAgcmV0dXJuIGxhbmdfaG9va3MuZXhwYW5kX2V4cHIgKGV4cCwgb3JpZ2luYWxfdGFy Z2V0LAotLQkJCQkJICAgdG1vZGUsIG1vZGlmaWVyLAotLQkJCQkJICAgYWx0X3J0bCk7Ci0tCSAg ZWxzZQotLQkgICAgcmV0dXJuIGV4cGFuZF9idWlsdGluIChleHAsIHRhcmdldCwgc3VidGFyZ2V0 LCB0bW9kZSwgaWdub3JlKTsKLSsgICAgICB7Ci0rCXRyZWUgZm5kZWNsID0gZ2V0X2NhbGxlZV9m bmRlY2wgKGV4cCksIGF0dHI7Ci0rCi0rCWlmIChmbmRlY2wKLSsJICAgICYmIChhdHRyID0gbG9v a3VwX2F0dHJpYnV0ZSAoImVycm9yIiwKLSsJCQkJCSBERUNMX0FUVFJJQlVURVMgKGZuZGVjbCkp KSAhPSBOVUxMKQotKwkgIGVycm9yICgiY2FsbCB0byAlcXMgZGVjbGFyZWQgd2l0aCBhdHRyaWJ1 dGUgZXJyb3I6ICVzIiwKLSsJCSBsYW5nX2hvb2tzLmRlY2xfcHJpbnRhYmxlX25hbWUgKGZuZGVj bCwgMSksCi0rCQkgVFJFRV9TVFJJTkdfUE9JTlRFUiAoVFJFRV9WQUxVRSAoVFJFRV9WQUxVRSAo YXR0cikpKSk7Ci0rCWlmIChmbmRlY2wKLSsJICAgICYmIChhdHRyID0gbG9va3VwX2F0dHJpYnV0 ZSAoIndhcm5pbmciLAotKwkJCQkJIERFQ0xfQVRUUklCVVRFUyAoZm5kZWNsKSkpICE9IE5VTEwp Ci0rCSAgd2FybmluZyAoMCwgImNhbGwgdG8gJXFzIGRlY2xhcmVkIHdpdGggYXR0cmlidXRlIHdh cm5pbmc6ICVzIiwKLSsJCSAgIGxhbmdfaG9va3MuZGVjbF9wcmludGFibGVfbmFtZSAoZm5kZWNs LCAxKSwKLSsJCSAgIFRSRUVfU1RSSU5HX1BPSU5URVIgKFRSRUVfVkFMVUUgKFRSRUVfVkFMVUUg KGF0dHIpKSkpOwotKwotKwkvKiBDaGVjayBmb3IgYSBidWlsdC1pbiBmdW5jdGlvbi4gICovCi0r CWlmIChmbmRlY2wgJiYgREVDTF9CVUlMVF9JTiAoZm5kZWNsKSkKLSsJICB7Ci0rCSAgICBpZiAo REVDTF9CVUlMVF9JTl9DTEFTUyAoZm5kZWNsKSA9PSBCVUlMVF9JTl9GUk9OVEVORCkKLSsJICAg ICAgcmV0dXJuIGxhbmdfaG9va3MuZXhwYW5kX2V4cHIgKGV4cCwgb3JpZ2luYWxfdGFyZ2V0LAot KwkJCQkJICAgICB0bW9kZSwgbW9kaWZpZXIsIGFsdF9ydGwpOwotKwkgICAgZWxzZQotKwkgICAg ICByZXR1cm4gZXhwYW5kX2J1aWx0aW4gKGV4cCwgdGFyZ2V0LCBzdWJ0YXJnZXQsIHRtb2RlLCBp Z25vcmUpOwotKwkgIH0KLSAJfQotIAotICAgICAgIHJldHVybiBleHBhbmRfY2FsbCAoZXhwLCB0 YXJnZXQsIGlnbm9yZSk7Ci0tLS0gZ2NjL2MtY29tbW9uLmMuamoJMjAwNy0wOS0yNSAxNTowMTo0 OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvYy1jb21tb24uYwkyMDA3LTA5LTI1IDE1OjI0OjM0 LjAwMDAwMDAwMCArMDIwMAotQEAgLTUwOCw2ICs1MDgsNyBAQCBzdGF0aWMgdHJlZSBoYW5kbGVf YWx3YXlzX2lubGluZV9hdHRyaWJ1Ci0gc3RhdGljIHRyZWUgaGFuZGxlX2dudV9pbmxpbmVfYXR0 cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKLSBzdGF0aWMgdHJlZSBo YW5kbGVfYXJ0aWZpY2lhbF9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29s ICopOwotIHN0YXRpYyB0cmVlIGhhbmRsZV9mbGF0dGVuX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVl LCB0cmVlLCBpbnQsIGJvb2wgKik7Ci0rc3RhdGljIHRyZWUgaGFuZGxlX2Vycm9yX2F0dHJpYnV0 ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7Ci0gc3RhdGljIHRyZWUgaGFuZGxl X3VzZWRfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKLSBzdGF0 aWMgdHJlZSBoYW5kbGVfdW51c2VkX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQs IGJvb2wgKik7Ci0gc3RhdGljIHRyZWUgaGFuZGxlX2V4dGVybmFsbHlfdmlzaWJsZV9hdHRyaWJ1 dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LAotQEAgLTY0MSw2ICs2NDIsMTAgQEAgY29uc3Qg c3RydWN0IGF0dHJpYnV0ZV9zcGVjIGNfY29tbW9uX2F0dAotIAkJCSAgICAgIGhhbmRsZV93YXJu X3VudXNlZF9yZXN1bHRfYXR0cmlidXRlIH0sCi0gICB7ICJzZW50aW5lbCIsICAgICAgICAgICAg ICAgMCwgMSwgZmFsc2UsIHRydWUsIHRydWUsCi0gCQkJICAgICAgaGFuZGxlX3NlbnRpbmVsX2F0 dHJpYnV0ZSB9LAotKyAgeyAid2FybmluZyIsCQkgICAgICAxLCAxLCB0cnVlLCAgZmFsc2UsIGZh bHNlLAotKwkJCSAgICAgIGhhbmRsZV9lcnJvcl9hdHRyaWJ1dGUgfSwKLSsgIHsgImVycm9yIiwJ CSAgICAgIDEsIDEsIHRydWUsICBmYWxzZSwgZmFsc2UsCi0rCQkJICAgICAgaGFuZGxlX2Vycm9y X2F0dHJpYnV0ZSB9LAotICAgeyBOVUxMLCAgICAgICAgICAgICAgICAgICAgIDAsIDAsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIE5VTEwgfQotIH07Ci0gCi1AQCAtNDIyNiw2ICs0MjMxLDI2IEBAIGhh bmRsZV9mbGF0dGVuX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHIKLSAgIHJldHVybiBOVUxMX1RS RUU7Ci0gfQotIAotKy8qIEhhbmRsZSBhICJ3YXJuaW5nIiBvciAiZXJyb3IiIGF0dHJpYnV0ZTsg YXJndW1lbnRzIGFzIGluCi0rICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRsZXIuICAqLwot KwotK3N0YXRpYyB0cmVlCi0raGFuZGxlX2Vycm9yX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJl ZSBuYW1lLCB0cmVlIGFyZ3MsCi0rCQkJaW50IEFSR19VTlVTRUQgKGZsYWdzKSwgYm9vbCAqbm9f YWRkX2F0dHJzKQotK3sKLSsgIGlmIChUUkVFX0NPREUgKCpub2RlKSA9PSBGVU5DVElPTl9ERUNM Ci0rICAgICAgfHwgVFJFRV9DT0RFIChUUkVFX1ZBTFVFIChhcmdzKSkgPT0gU1RSSU5HX0NTVCkK LSsgICAgLyogRG8gbm90aGluZyBlbHNlLCBqdXN0IHNldCB0aGUgYXR0cmlidXRlLiAgV2UnbGwg Z2V0IGF0Ci0rICAgICAgIGl0IGxhdGVyIHdpdGggbG9va3VwX2F0dHJpYnV0ZS4gICovCi0rICAg IDsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHdhcm5pbmcgKE9QVF9XYXR0cmlidXRlcywgIiVx RSBhdHRyaWJ1dGUgaWdub3JlZCIsIG5hbWUpOwotKyAgICAgICpub19hZGRfYXR0cnMgPSB0cnVl OwotKyAgICB9Ci0rCi0rICByZXR1cm4gTlVMTF9UUkVFOwotK30KLSAKLSAvKiBIYW5kbGUgYSAi dXNlZCIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KLSAgICBzdHJ1Y3QgYXR0cmlidXRlX3Nw ZWMuaGFuZGxlci4gICovCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmEtYXJnLXBhY2stbGVu LTEuYy5qagkyMDA3LTA5LTI1IDEyOjIzOjA1LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL3ZhLWFyZy1wYWNrLWxlbi0xLmMJMjAwNy0wOS0yNSAxNToxNjowMy4wMDAw MDAwMDAgKzAyMDAKLUBAIC0zLDggKzMsMTAgQEAKLSAKLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0g Ci0tZXh0ZXJuIGludCB3YXJuX29wZW5fbWlzc2luZ19tb2RlICh2b2lkKTsKLS1leHRlcm4gaW50 IHdhcm5fb3Blbl90b29fbWFueV9hcmd1bWVudHMgKHZvaWQpOwotK2V4dGVybiBpbnQgZXJyb3Jf b3Blbl9taXNzaW5nX21vZGUgKHZvaWQpCi0rICBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18gKCJv cGVuIHdpdGggT19DUkVBVCBuZWVkcyAzIGFyZ3VtZW50cywgb25seSAyIHdlcmUgZ2l2ZW4iKSkp OwotK2V4dGVybiBpbnQgd2Fybl9vcGVuX3Rvb19tYW55X2FyZ3VtZW50cyAodm9pZCkKLSsgIF9f YXR0cmlidXRlX18oKF9fd2FybmluZ19fICgib3BlbiBjYWxsZWQgd2l0aCBtb3JlIHRoYW4gMyBh cmd1bWVudHMiKSkpOwotIGV4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKLSAKLSBjaGFyIGV4cGVj dGVkX2NoYXI7Ci1AQCAtODMsNyArODUsNyBAQCBteW9wZW4gKGNvbnN0IGNoYXIgKnBhdGgsIGlu dCBvZmxhZywgLi4uCi0gICAgIHsKLSAgICAgICBpZiAoKG9mbGFnICYgMHg0MCkgIT0gMCAmJiBf X2J1aWx0aW5fdmFfYXJnX3BhY2tfbGVuICgpIDwgMSkKLSAJewotLQkgIHdhcm5fb3Blbl9taXNz aW5nX21vZGUgKCk7Ci0rCSAgZXJyb3Jfb3Blbl9taXNzaW5nX21vZGUgKCk7Ci0gCSAgcmV0dXJu IG15b3BlbjIgKHBhdGgsIG9mbGFnKTsKLSAJfQotICAgICAgIHJldHVybiBteW9wZW52YSAocGF0 aCwgb2ZsYWcsIF9fYnVpbHRpbl92YV9hcmdfcGFjayAoKSk7Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdmEtYXJnLXBhY2stbGVuLTIuYy5qagkyMDA3LTA5LTI1IDE1OjE2OjAzLjAwMDAwMDAw MCArMDIwMAotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ZhLWFyZy1wYWNrLWxlbi0yLmMJMjAw Ny0wOS0yNSAxNToxNjowMy4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNDIgQEAKLSsvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIiB9ICovCi0rCi0rI2lu Y2x1ZGUgPHN0ZGFyZy5oPgotKwotK2V4dGVybiBpbnQgZXJyb3Jfb3Blbl9taXNzaW5nX21vZGUg KHZvaWQpCi0rICBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18gKCJvcGVuIHdpdGggT19DUkVBVCBu ZWVkcyAzIGFyZ3VtZW50cywgb25seSAyIHdlcmUgZ2l2ZW4iKSkpOwotK2V4dGVybiBpbnQgd2Fy bl9vcGVuX3Rvb19tYW55X2FyZ3VtZW50cyAodm9pZCkKLSsgIF9fYXR0cmlidXRlX18oKF9fd2Fy bmluZ19fICgib3BlbiBjYWxsZWQgd2l0aCBtb3JlIHRoYW4gMyBhcmd1bWVudHMiKSkpOwotKwot K2V4dGVybiBpbnQgbXlvcGVuMiAoY29uc3QgY2hhciAqcGF0aCwgaW50IG9mbGFnKTsKLStleHRl cm4gaW50IG15b3BlbnZhIChjb25zdCBjaGFyICpwYXRoLCBpbnQgb2ZsYWcsIC4uLik7Ci0rCi0r ZXh0ZXJuIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lLCBnbnVfaW5saW5lKSkg aW50Ci0rbXlvcGVuIChjb25zdCBjaGFyICpwYXRoLCBpbnQgb2ZsYWcsIC4uLikKLSt7Ci0rICBp ZiAoX19idWlsdGluX3ZhX2FyZ19wYWNrX2xlbiAoKSA+IDEpCi0rICAgIHdhcm5fb3Blbl90b29f bWFueV9hcmd1bWVudHMgKCk7CS8qIHsgZGctd2FybmluZyAiY2FsbGVkIHdpdGggbW9yZSB0aGFu IDMiIH0gKi8KLSsKLSsgIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCAob2ZsYWcpKQotKyAgICB7 Ci0rICAgICAgaWYgKChvZmxhZyAmIDB4NDApICE9IDAgJiYgX19idWlsdGluX3ZhX2FyZ19wYWNr X2xlbiAoKSA8IDEpCi0rCXsKLSsJICBlcnJvcl9vcGVuX21pc3NpbmdfbW9kZSAoKTsJLyogeyBk Zy1lcnJvciAibmVlZHMgMyBhcmd1bWVudHMsIG9ubHkgMiB3ZXJlIGdpdmVuIiB9ICovCi0rCSAg cmV0dXJuIG15b3BlbjIgKHBhdGgsIG9mbGFnKTsKLSsJfQotKyAgICAgIHJldHVybiBteW9wZW52 YSAocGF0aCwgb2ZsYWcsIF9fYnVpbHRpbl92YV9hcmdfcGFjayAoKSk7Ci0rICAgIH0KLSsKLSsg IGlmIChfX2J1aWx0aW5fdmFfYXJnX3BhY2tfbGVuICgpIDwgMSkKLSsgICAgcmV0dXJuIG15b3Bl bjIgKHBhdGgsIG9mbGFnKTsKLSsKLSsgIHJldHVybiBteW9wZW52YSAocGF0aCwgb2ZsYWcsIF9f YnVpbHRpbl92YV9hcmdfcGFjayAoKSk7Ci0rfQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewot KyAgbXlvcGVuICgiaCIsIDB4NDMpOwotKyAgbXlvcGVuICgiaSIsIDB4NDMsIDA2NDQsIDA2NTUp OwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC92YS1hcmct cGFjay1sZW4tMS5DLmpqCTIwMDctMDktMjUgMTI6MjM6MDUuMDAwMDAwMDAwICswMjAwCi0rKysg Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L3ZhLWFyZy1wYWNrLWxlbi0xLkMJMjAwNy0wOS0yNSAx NToxNjowMy4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zLDggKzMsMTAgQEAKLSAKLSAjaW5jbHVkZSA8 c3RkYXJnLmg+Ci0gCi0tZXh0ZXJuICJDIiBpbnQgd2Fybl9vcGVuX21pc3NpbmdfbW9kZSAodm9p ZCk7Ci0tZXh0ZXJuICJDIiBpbnQgd2Fybl9vcGVuX3Rvb19tYW55X2FyZ3VtZW50cyAodm9pZCk7 Ci0rZXh0ZXJuICJDIiBpbnQgZXJyb3Jfb3Blbl9taXNzaW5nX21vZGUgKHZvaWQpCi0rICBfX2F0 dHJpYnV0ZV9fKChfX2Vycm9yX18gKCJvcGVuIHdpdGggT19DUkVBVCBuZWVkcyAzIGFyZ3VtZW50 cywgb25seSAyIHdlcmUgZ2l2ZW4iKSkpOwotK2V4dGVybiAiQyIgaW50IHdhcm5fb3Blbl90b29f bWFueV9hcmd1bWVudHMgKHZvaWQpCi0rICBfX2F0dHJpYnV0ZV9fKChfX3dhcm5pbmdfXyAoIm9w ZW4gY2FsbGVkIHdpdGggbW9yZSB0aGFuIDMgYXJndW1lbnRzIikpKTsKLSBleHRlcm4gIkMiIHZv aWQgYWJvcnQgKHZvaWQpOwotIAotIGNoYXIgZXhwZWN0ZWRfY2hhcjsKLUBAIC04Myw3ICs4NSw3 IEBAIG15b3BlbiAoY29uc3QgY2hhciAqcGF0aCwgaW50IG9mbGFnLCAuLi4KLSAgICAgewotICAg ICAgIGlmICgob2ZsYWcgJiAweDQwKSAhPSAwICYmIF9fYnVpbHRpbl92YV9hcmdfcGFja19sZW4g KCkgPCAxKQotIAl7Ci0tCSAgd2Fybl9vcGVuX21pc3NpbmdfbW9kZSAoKTsKLSsJICBlcnJvcl9v cGVuX21pc3NpbmdfbW9kZSAoKTsKLSAJICByZXR1cm4gbXlvcGVuMiAocGF0aCwgb2ZsYWcpOwot IAl9Ci0gICAgICAgcmV0dXJuIG15b3BlbnZhIChwYXRoLCBvZmxhZywgX19idWlsdGluX3ZhX2Fy Z19wYWNrICgpKTsKLS0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvdmEtYXJnLXBhY2stbGVu LTIuQy5qagkyMDA3LTA5LTI1IDE1OjE2OjAzLjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy90ZXN0 c3VpdGUvZysrLmRnL2V4dC92YS1hcmctcGFjay1sZW4tMi5DCTIwMDctMDktMjUgMTU6MTY6MDMu MDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDQyIEBACi0rLy8geyBkZy1kbyBjb21waWxlIH0K LSsvLyB7IGRnLW9wdGlvbnMgIi1PMiIgfQotKwotKyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsKLStl eHRlcm4gaW50IGVycm9yX29wZW5fbWlzc2luZ19tb2RlICh2b2lkKQotKyAgX19hdHRyaWJ1dGVf XygoX19lcnJvcl9fICgib3BlbiB3aXRoIE9fQ1JFQVQgbmVlZHMgMyBhcmd1bWVudHMsIG9ubHkg MiB3ZXJlIGdpdmVuIikpKTsKLStleHRlcm4gaW50IHdhcm5fb3Blbl90b29fbWFueV9hcmd1bWVu dHMgKHZvaWQpCi0rICBfX2F0dHJpYnV0ZV9fKChfX3dhcm5pbmdfXyAoIm9wZW4gY2FsbGVkIHdp dGggbW9yZSB0aGFuIDMgYXJndW1lbnRzIikpKTsKLSsKLStleHRlcm4gaW50IG15b3BlbjIgKGNv bnN0IGNoYXIgKnBhdGgsIGludCBvZmxhZyk7Ci0rZXh0ZXJuIGludCBteW9wZW52YSAoY29uc3Qg Y2hhciAqcGF0aCwgaW50IG9mbGFnLCAuLi4pOwotKwotK2V4dGVybiBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoYWx3YXlzX2lubGluZSwgZ251X2lubGluZSkpIGludAotK215b3BlbiAoY29uc3QgY2hh ciAqcGF0aCwgaW50IG9mbGFnLCAuLi4pCi0rewotKyAgaWYgKF9fYnVpbHRpbl92YV9hcmdfcGFj a19sZW4gKCkgPiAxKQotKyAgICB3YXJuX29wZW5fdG9vX21hbnlfYXJndW1lbnRzICgpOwkvLyB7 IGRnLXdhcm5pbmcgImNhbGxlZCB3aXRoIG1vcmUgdGhhbiAzIiB9Ci0rCi0rICBpZiAoX19idWls dGluX2NvbnN0YW50X3AgKG9mbGFnKSkKLSsgICAgewotKyAgICAgIGlmICgob2ZsYWcgJiAweDQw KSAhPSAwICYmIF9fYnVpbHRpbl92YV9hcmdfcGFja19sZW4gKCkgPCAxKQotKwl7Ci0rCSAgZXJy b3Jfb3Blbl9taXNzaW5nX21vZGUgKCk7CS8vIHsgZGctZXJyb3IgIm5lZWRzIDMgYXJndW1lbnRz LCBvbmx5IDIgd2VyZSBnaXZlbiIgfQotKwkgIHJldHVybiBteW9wZW4yIChwYXRoLCBvZmxhZyk7 Ci0rCX0KLSsgICAgICByZXR1cm4gbXlvcGVudmEgKHBhdGgsIG9mbGFnLCBfX2J1aWx0aW5fdmFf YXJnX3BhY2sgKCkpOwotKyAgICB9Ci0rCi0rICBpZiAoX19idWlsdGluX3ZhX2FyZ19wYWNrX2xl biAoKSA8IDEpCi0rICAgIHJldHVybiBteW9wZW4yIChwYXRoLCBvZmxhZyk7Ci0rCi0rICByZXR1 cm4gbXlvcGVudmEgKHBhdGgsIG9mbGFnLCBfX2J1aWx0aW5fdmFfYXJnX3BhY2sgKCkpOwotK30K LSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIG15b3BlbiAoImgiLCAweDQzKTsKLSsgIG15 b3BlbiAoImkiLCAweDQzLCAwNjQ0LCAwNjU1KTsKLSsgIHJldHVybiAwOwotK30KCmRpZmYgLS1n aXQgYS9nY2M0MS1nbnVjLXJoLXJlbGVhc2UucGF0Y2ggYi9nY2M0MS1nbnVjLXJoLXJlbGVhc2Uu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NTVjNDguLjAwMDAwMDAKLS0t IGEvZ2NjNDEtZ251Yy1yaC1yZWxlYXNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAs MCBAQAotMjAwNC0xMC0xOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQkq IGMtY3BwYnVpbHRpbi5jIChkZWZpbmVfX0dOVUNfXyk6IEFsc28gZGVmaW5lIF9fR05VQ19SSF9S RUxFQVNFX18uCi0KLS0tLSBnY2MvYy1jcHBidWlsdGluLmMuamoJMjAwNC0xMC0wNyAyMToyNzoz OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvYy1jcHBidWlsdGluLmMJMjAwNC0xMC0xOSAxMTo0 MTo1MC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNTcsMTMgKzI1NywxMyBAQCBkZWZpbmVfX0dOVUNf XyAodm9pZCkKLSB7Ci0gICAvKiBUaGUgZm9ybWF0IG9mIHRoZSB2ZXJzaW9uIHN0cmluZywgZW5m b3JjZWQgYmVsb3csIGlzCi0gICAgICAoW14wLTldKi0pP1swLTldK1suXVswLTldKyhbLl1bMC05 XSspPyhbLSBdLiopPyAgKi8KLS0gIGNvbnN0IGNoYXIgKnEsICp2ID0gdmVyc2lvbl9zdHJpbmc7 Ci0rICBjb25zdCBjaGFyICpxLCAqdiA9IHZlcnNpb25fc3RyaW5nLCAqdnN0YXJ0LCAqdmVuZDsK LSAKLSAgIHdoaWxlICgqdiAmJiAhSVNESUdJVCAoKnYpKQotICAgICB2Kys7Ci0gICBnY2NfYXNz ZXJ0ICgqdiAmJiAodiA8PSB2ZXJzaW9uX3N0cmluZyB8fCB2Wy0xXSA9PSAnLScpKTsKLSAKLS0g IHEgPSB2OwotKyAgdnN0YXJ0ID0gcSA9IHY7Ci0gICB3aGlsZSAoSVNESUdJVCAoKnYpKQotICAg ICB2Kys7Ci0gICBidWlsdGluX2RlZmluZV93aXRoX3ZhbHVlX24gKCJfX0dOVUNfXyIsIHEsIHYg LSBxKTsKLUBAIC0yODksNiArMjg5LDI3IEBAIGRlZmluZV9fR05VQ19fICh2b2lkKQotICAgICBi dWlsdGluX2RlZmluZV93aXRoX3ZhbHVlX24gKCJfX0dOVUNfUEFUQ0hMRVZFTF9fIiwgIjAiLCAx KTsKLSAKLSAgIGdjY19hc3NlcnQgKCEqdiB8fCAqdiA9PSAnICcgfHwgKnYgPT0gJy0nKTsKLSsK LSsgIHZlbmQgPSB2OwotKyAgdiA9IHN0cmNociAodiwgJygnKTsKLSsgIGlmICh2ICE9IE5VTEwg JiYgc3RybmNtcCAodiArIDEsICJSZWQgSGF0ICIsIDgpID09IDApCi0rICAgIHsKLSsgICAgICB2 ICs9IDk7Ci0rICAgICAgaWYgKHN0cm5jbXAgKHYsICJMaW51eCAiLCA2KSA9PSAwKQotKwl2ICs9 IDY7Ci0rCi0rICAgICAgZ2NjX2Fzc2VydCAoc3RybmNtcCAodiwgdnN0YXJ0LCB2ZW5kIC0gdnN0 YXJ0KSA9PSAwKTsKLSsgICAgICBnY2NfYXNzZXJ0ICh2W3ZlbmQgLSB2c3RhcnRdID09ICctJyk7 Ci0rCi0rICAgICAgdiArPSB2ZW5kIC0gdnN0YXJ0ICsgMTsKLSsgICAgICBxID0gdjsKLSsgICAg ICBnY2NfYXNzZXJ0IChJU0RJR0lUICgqdikpOwotKyAgICAgIHdoaWxlIChJU0RJR0lUICgqdikp Ci0rCXYrKzsKLSsgICAgICBidWlsdGluX2RlZmluZV93aXRoX3ZhbHVlX24gKCJfX0dOVUNfUkhf UkVMRUFTRV9fIiwgcSwgdiAtIHEpOwotKwotKyAgICAgIGdjY19hc3NlcnQgKCEqdiB8fCAqdiA9 PSAnKScgfHwgKnYgPT0gJy4nKTsKLSsgICAgfQotIH0KLSAKLSAvKiBEZWZpbmUgbWFjcm9zIHVz ZWQgYnkgPHN0ZGludC5oPi4gIEN1cnJlbnRseSBvbmx5IGRlZmluZXMgbGltaXRzCgpkaWZmIC0t Z2l0IGEvZ2NjNDEtaGFzaC1zdHlsZS1nbnUucGF0Y2ggYi9nY2M0MS1oYXNoLXN0eWxlLWdudS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRhZmExNi4uMDAwMDAwMAotLS0g YS9nY2M0MS1oYXNoLXN0eWxlLWdudS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCww IEBACi0yMDA2LTA3LTExICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCSog Y29uZmlnL2kzODYvbGludXguaCAoTElOS19TUEVDKTogQWRkIC0taGFzaC1zdHlsZT1nbnUuCi0J KiBjb25maWcvaTM4Ni9saW51eDY0LmggKExJTktfU1BFQyk6IExpa2V3aXNlLgotCSogY29uZmln L3JzNjAwMC9zeXN2NC5oIChMSU5LX09TX0xJTlVYX1NQRUMpOiBMaWtld2lzZS4KLQkqIGNvbmZp Zy9yczYwMDAvbGludXg2NC5oIChMSU5LX09TX0xJTlVYX1NQRUMzMiwKLQlMSU5LX09TX0xJTlVY X1NQRUM2NCk6IExpa2V3aXNlLgotCSogY29uZmlnL3MzOTAvbGludXguaCAoTElOS19TUEVDKTog TGlrZXdpc2UuCi0JKiBjb25maWcvaWE2NC9saW51eC5oIChMSU5LX1NQRUMpOiBMaWtld2lzZS4K LQkqIGNvbmZpZy9zcGFyYy9saW51eC5oIChMSU5LX1NQRUMpOiBMaWtld2lzZS4KLQkqIGNvbmZp Zy9zcGFyYy9saW51eDY0LmggKExJTktfU1BFQywgTElOS19BUkNIMzJfU1BFQywKLQlMSU5LX0FS Q0g2NF9TUEVDKTogTGlrZXdpc2UuCi0JKiBjb25maWcvYWxwaGEvbGludXgtZWxmLmggKExJTktf U1BFQyk6IExpa2V3aXNlLgotCi0tLS0gZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaC5qagkyMDA2 LTA3LTExIDEwOjU0OjAwLjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9jb25maWcvcnM2MDAwL3N5 c3Y0LmgJMjAwNi0wNy0xMSAxMjo1MTozOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMDM5LDcgKzEw MzksNyBAQCBleHRlcm4gaW50IGZpeHVwbGFiZWxubzsKLSAKLSAjZGVmaW5lIExJTktfU1RBUlRf TElOVVhfU1BFQyAiIgotIAotLSNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDICItbSBlbGYzMnBw Y2xpbnV4ICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0rI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQ RUMgIi1tIGVsZjMycHBjbGludXggLS1oYXNoLXN0eWxlPWdudSAleyFzaGFyZWQ6ICV7IXN0YXRp YzogXAotICAgJXtyZHluYW1pYzotZXhwb3J0LWR5bmFtaWN9IFwKLSAgICV7IWR5bmFtaWMtbGlu a2VyOi1keW5hbWljLWxpbmtlciAvbGliL2xkLnNvLjF9fX0iCi0gCi0tLS0gZ2NjL2NvbmZpZy9y czYwMDAvbGludXg2NC5oLmpqCTIwMDYtMDctMTEgMTA6NTQ6MDAuMDAwMDAwMDAwICswMjAwCi0r KysgZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCTIwMDYtMDctMTEgMTI6NTI6MTQuMDAwMDAw MDAwICswMjAwCi1AQCAtMzM3LDExICszMzcsMTEgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsK LSAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKLSAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9T UEVDICIlKGxpbmtfb3NfbGludXgpIgotIAotLSNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDMzIg Ii1tIGVsZjMycHBjbGludXggJXshc2hhcmVkOiAleyFzdGF0aWM6IFwKLSsjZGVmaW5lIExJTktf T1NfTElOVVhfU1BFQzMyICItbSBlbGYzMnBwY2xpbnV4IC0taGFzaC1zdHlsZT1nbnUgJXshc2hh cmVkOiAleyFzdGF0aWM6IFwKLSAgICV7cmR5bmFtaWM6LWV4cG9ydC1keW5hbWljfSBcCi0gICAl eyFkeW5hbWljLWxpbmtlcjotZHluYW1pYy1saW5rZXIgL2xpYi9sZC5zby4xfX19IgotIAotLSNk ZWZpbmUgTElOS19PU19MSU5VWF9TUEVDNjQgIi1tIGVsZjY0cHBjICV7IXNoYXJlZDogJXshc3Rh dGljOiBcCi0rI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUM2NCAiLW0gZWxmNjRwcGMgLS1oYXNo LXN0eWxlPWdudSAleyFzaGFyZWQ6ICV7IXN0YXRpYzogXAotICAgJXtyZHluYW1pYzotZXhwb3J0 LWR5bmFtaWN9IFwKLSAgICV7IWR5bmFtaWMtbGlua2VyOi1keW5hbWljLWxpbmtlciAvbGliNjQv bGQ2NC5zby4xfX19IgotIAotLS0tIGdjYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmguamoJMjAw Ni0wNy0xMSAxMDo1NDowMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvY29uZmlnL2FscGhhL2xp bnV4LWVsZi5oCTIwMDYtMDctMTEgMTI6NTM6NDguMDAwMDAwMDAwICswMjAwCi1AQCAtMjksNyAr MjksNyBAQCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCi0gCi0gI2RlZmluZSBFTEZf RFlOQU1JQ19MSU5LRVIJIi9saWIvbGQtbGludXguc28uMiIKLSAKLS0jZGVmaW5lIExJTktfU1BF QyAiLW0gZWxmNjRhbHBoYSAle0cqfSAle3JlbGF4Oi1yZWxheH0JCVwKLSsjZGVmaW5lIExJTktf U1BFQyAiLW0gZWxmNjRhbHBoYSAtLWhhc2gtc3R5bGU9Z251ICV7Ryp9ICV7cmVsYXg6LXJlbGF4 fQlcCi0gICAle08qOi1PM30gJXshTyo6LU8xfQkJCQkJCVwKLSAgICV7c2hhcmVkOi1zaGFyZWR9 CQkJCQkJXAotICAgJXshc2hhcmVkOgkJCQkJCQlcCi0tLS0gZ2NjL2NvbmZpZy9zMzkwL2xpbnV4 LmguamoJMjAwNi0wNy0xMSAxMDo1NDowMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvY29uZmln L3MzOTAvbGludXguaAkyMDA2LTA3LTExIDEyOjUyOjM5LjAwMDAwMDAwMCArMDIwMAotQEAgLTc5 LDcgKzc5LDcgQEAgU29mdHdhcmUgRm91bmRhdGlvbiwgNTEgRnJhbmtsaW4gU3RyZWV0LAotIAot ICN1bmRlZiAgTElOS19TUEVDCi0gI2RlZmluZSBMSU5LX1NQRUMgXAotLSAgIiV7bTMxOi1tIGVs Zl9zMzkwfSV7bTY0Oi1tIGVsZjY0X3MzOTB9IFwKLSsgICIle20zMTotbSBlbGZfczM5MH0le202 NDotbSBlbGY2NF9zMzkwfSAtLWhhc2gtc3R5bGU9Z251IFwKLSAgICAle3NoYXJlZDotc2hhcmVk fSBcCi0gICAgJXshc2hhcmVkOiBcCi0gICAgICAgJXtzdGF0aWM6LXN0YXRpY30gXAotLS0tIGdj Yy9jb25maWcvc3BhcmMvbGludXguaC5qagkyMDA2LTA3LTExIDEwOjU0OjAzLjAwMDAwMDAwMCAr MDIwMAotKysrIGdjYy9jb25maWcvc3BhcmMvbGludXguaAkyMDA2LTA3LTExIDEyOjU0OjE2LjAw MDAwMDAwMCArMDIwMAotQEAgLTEyNyw3ICsxMjcsNyBAQCBCb3N0b24sIE1BIDAyMTEwLTEzMDEs IFVTQS4gICovCi0gLyogSWYgRUxGIGlzIHRoZSBkZWZhdWx0IGZvcm1hdCwgd2Ugc2hvdWxkIG5v dCB1c2UgL2xpYi9lbGYuICAqLwotIAotICN1bmRlZiAgTElOS19TUEVDCi0tI2RlZmluZSBMSU5L X1NQRUMgIi1tIGVsZjMyX3NwYXJjIC1ZIFAsL3Vzci9saWIgJXtzaGFyZWQ6LXNoYXJlZH0gXAot KyNkZWZpbmUgTElOS19TUEVDICItbSBlbGYzMl9zcGFyYyAtLWhhc2gtc3R5bGU9Z251IC1ZIFAs L3Vzci9saWIgJXtzaGFyZWQ6LXNoYXJlZH0gXAotICAgJXshbW5vLXJlbGF4OiV7IXI6LXJlbGF4 fX0gXAotICAgJXshc2hhcmVkOiBcCi0gICAgICV7IWliY3M6IFwKLS0tLSBnY2MvY29uZmlnL3Nw YXJjL2xpbnV4NjQuaC5qagkyMDA2LTA3LTExIDEwOjU0OjAzLjAwMDAwMDAwMCArMDIwMAotKysr IGdjYy9jb25maWcvc3BhcmMvbGludXg2NC5oCTIwMDYtMDctMTEgMTI6NTU6MTAuMDAwMDAwMDAw ICswMjAwCi1AQCAtMTU3LDcgKzE1Nyw3IEBAIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAg Ki8KLSAgIHsgImxpbmtfYXJjaF9kZWZhdWx0IiwgTElOS19BUkNIX0RFRkFVTFRfU1BFQyB9LAkg IFwKLSAgIHsgImxpbmtfYXJjaCIsCSBMSU5LX0FSQ0hfU1BFQyB9LAotICAgICAKLS0jZGVmaW5l IExJTktfQVJDSDMyX1NQRUMgIi1tIGVsZjMyX3NwYXJjIC1ZIFAsL3Vzci9saWIgJXtzaGFyZWQ6 LXNoYXJlZH0gXAotKyNkZWZpbmUgTElOS19BUkNIMzJfU1BFQyAiLW0gZWxmMzJfc3BhcmMgLS1o YXNoLXN0eWxlPWdudSAtWSBQLC91c3IvbGliICV7c2hhcmVkOi1zaGFyZWR9IFwKLSAgICV7IXNo YXJlZDogXAotICAgICAleyFpYmNzOiBcCi0gICAgICAgJXshc3RhdGljOiBcCi1AQCAtMTY2LDcg KzE2Niw3IEBAIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KLSAgICAgICAgICV7c3Rh dGljOi1zdGF0aWN9fX0gXAotICIKLSAKLS0jZGVmaW5lIExJTktfQVJDSDY0X1NQRUMgIi1tIGVs ZjY0X3NwYXJjIC1ZIFAsL3Vzci9saWI2NCAle3NoYXJlZDotc2hhcmVkfSBcCi0rI2RlZmluZSBM SU5LX0FSQ0g2NF9TUEVDICItbSBlbGY2NF9zcGFyYyAtLWhhc2gtc3R5bGU9Z251IC1ZIFAsL3Vz ci9saWI2NCAle3NoYXJlZDotc2hhcmVkfSBcCi0gICAleyFzaGFyZWQ6IFwKLSAgICAgJXshaWJj czogXAotICAgICAgICV7IXN0YXRpYzogXAotQEAgLTI0Nyw3ICsyNDcsNyBAQCBCb3N0b24sIE1B IDAyMTEwLTEzMDEsIFVTQS4gICovCi0gI2Vsc2UgLyogIVNQQVJDX0JJX0FSQ0ggKi8KLSAKLSAj dW5kZWYgTElOS19TUEVDCi0tI2RlZmluZSBMSU5LX1NQRUMgIi1tIGVsZjY0X3NwYXJjIC1ZIFAs L3Vzci9saWI2NCAle3NoYXJlZDotc2hhcmVkfSBcCi0rI2RlZmluZSBMSU5LX1NQRUMgIi1tIGVs ZjY0X3NwYXJjIC0taGFzaC1zdHlsZT1nbnUgLVkgUCwvdXNyL2xpYjY0ICV7c2hhcmVkOi1zaGFy ZWR9IFwKLSAgICV7IXNoYXJlZDogXAotICAgICAleyFpYmNzOiBcCi0gICAgICAgJXshc3RhdGlj OiBcCi0tLS0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmguamoJMjAwNi0wNy0xMSAxMDo1NDowNS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvY29uZmlnL2kzODYvbGludXguaAkyMDA2LTA3LTExIDEy OjQ0OjQ1LjAwMDAwMDAwMCArMDIwMAotQEAgLTExMyw3ICsxMTMsNyBAQCBCb3N0b24sIE1BIDAy MTEwLTEzMDEsIFVTQS4gICovCi0gICB7ICJkeW5hbWljX2xpbmtlciIsIERZTkFNSUNfTElOS0VS IH0KLSAKLSAjdW5kZWYJTElOS19TUEVDCi0tI2RlZmluZSBMSU5LX1NQRUMgIi1tICUobGlua19l bXVsYXRpb24pICV7c2hhcmVkOi1zaGFyZWR9IFwKLSsjZGVmaW5lIExJTktfU1BFQyAiLW0gJShs aW5rX2VtdWxhdGlvbikgLS1oYXNoLXN0eWxlPWdudSAle3NoYXJlZDotc2hhcmVkfSBcCi0gICAl eyFzaGFyZWQ6IFwKLSAgICAgJXshaWJjczogXAotICAgICAgICV7IXN0YXRpYzogXAotLS0tIGdj Yy9jb25maWcvaTM4Ni9saW51eDY0LmguamoJMjAwNi0wNy0xMSAxMDo1NDowNC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oCTIwMDYtMDctMTEgMTI6NDU6MDIu MDAwMDAwMDAwICswMjAwCi1AQCAtNTUsNyArNTUsNyBAQCBCb3N0b24sIE1BIDAyMTEwLTEzMDEs IFVTQS4gICovCi0gICAgZG9uZS4gICovCi0gCi0gI3VuZGVmCUxJTktfU1BFQwotLSNkZWZpbmUg TElOS19TUEVDICIleyFtMzI6LW0gZWxmX3g4Nl82NH0gJXttMzI6LW0gZWxmX2kzODZ9IFwKLSsj ZGVmaW5lIExJTktfU1BFQyAiJXshbTMyOi1tIGVsZl94ODZfNjR9ICV7bTMyOi1tIGVsZl9pMzg2 fSAtLWhhc2gtc3R5bGU9Z251IFwKLSAgICV7c2hhcmVkOi1zaGFyZWR9IFwKLSAgICV7IXNoYXJl ZDogXAotICAgICAleyFzdGF0aWM6IFwKLS0tLSBnY2MvY29uZmlnL2lhNjQvbGludXguaC5qagky MDA2LTA3LTExIDEwOjU0OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9jb25maWcvaWE2NC9s aW51eC5oCTIwMDYtMDctMTEgMTI6NDg6MTkuMDAwMDAwMDAwICswMjAwCi1AQCAtNDAsNyArNDAs NyBAQCBkbyB7CQkJCQkJXAotICAgIGxpbnV4LmggZmlsZS4gICovCi0gCi0gI3VuZGVmIExJTktf U1BFQwotLSNkZWZpbmUgTElOS19TUEVDICJcCi0rI2RlZmluZSBMSU5LX1NQRUMgIi0taGFzaC1z dHlsZT1nbnUgXAotICAgJXtzaGFyZWQ6LXNoYXJlZH0gXAotICAgJXshc2hhcmVkOiBcCi0gICAg ICV7IXN0YXRpYzogXAoKZGlmZiAtLWdpdCBhL2djYzQxLWlhNjQtbGlidW53aW5kLnBhdGNoIGIv Z2NjNDEtaWE2NC1saWJ1bndpbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGU0ZmRkNjEuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtaWE2NC1saWJ1bndpbmQucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw1MzggKzAsMCBAQAotMjAwNC0xMS0yNyAgSmFrdWIgSmVsaW5layAgPGph a3ViQHJlZGhhdC5jb20+Ci0KLQkqIGNvbmZpZy5nY2MgKGlhNjQqLSotbGludXgqKTogSWYgbmF0 aXZlIGFuZCBsaWJlbGYgaXMgaW5zdGFsbGVkLAotCXVzZSBpYTY0L3QtZ2xpYmMtbm8tbGlidW53 aW5kIGluc3RlYWQgb2YgdGhlIG90aGVyIHQtKnVud2luZCoKLQlmcmFnbWVudHMuCi0JKiBjb25m aWcvaWE2NC90LWdsaWJjLW5vLWxpYnVud2luZDogTmV3IGZpbGUuCi0JKiBjb25maWcvaWE2NC9j aGFuZ2Utc3ltdmVyLmM6IE5ldyBmaWxlLgotCSogY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYzog SWYgVVNFX1NZTVZFUl9HTE9CQUwgYW5kIFNIQVJFRCwKLQlkZWZpbmUgX1Vud2luZF8qIHRvIF9f c3ltdmVyZ2xvYmFsX1Vud2luZF8qLgotCShhbGlhcyk6IFVuZGVmaW5lLgotCShzeW12ZXJnbG9i YWwpOiBEZWZpbmUuICBVc2UgaXQgb24gX1Vud2luZF8qLgotCSogY29uZmlnL2lhNjQvbWttYXAt c3ltdmVyLW11bHRpLmF3azogTmV3IGZpbGUuCi0JKiBjb25maWcvaWE2NC9saWJnY2MtaWE2NC1u by1saWJ1bndpbmQudmVyOiBOZXcgZmlsZS4KLQotLS0tIGdjYy9jb25maWcuZ2NjLmpqCTIwMDQt MTAtMDQgMDg6NTU6NDQuMDAwMDAwMDAwIC0wNDAwCi0rKysgZ2NjL2NvbmZpZy5nY2MJMjAwNC0x MS0xMyAwNToyMzo1MC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xMTg1LDkgKzExODUsMTYgQEAgaWE2 NCotKi1mcmVlYnNkKikKLSAJOzsKLSBpYTY0Ki0qLWxpbnV4KikKLSAJdG1fZmlsZT0iJHt0bV9m aWxlfSBkYnhlbGYuaCBlbGZvcy5oIHN2cjQuaCBsaW51eC5oIGlhNjQvc3lzdjQuaCBpYTY0L2xp bnV4LmgiCi0tCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gaWE2NC90LWlhNjQgdC1saWJ1bndp bmQgaWE2NC90LWdsaWJjIgotLQlpZiB0ZXN0IHgkd2l0aF9zeXN0ZW1fbGlidW53aW5kICE9IHh5 ZXMgOyB0aGVuCi0tCQl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHQtbGlidW53aW5kLWVsZiBp YTY0L3QtZ2xpYmMtbGlidW53aW5kIgotKwl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IGlhNjQv dC1pYTY0IgotKwlpZiB0ZXN0IHgke3RhcmdldH0gPSB4JHtob3N0fSAmJiB0ZXN0IHgke3Rhcmdl dH0gPSB4JHtidWlsZH0gXAotKwkgICAmJiBncmVwIGdlbGZfZ2V0dmVyZGVmIC91c3IvaW5jbHVk ZS9nZWxmLmggPiAvZGV2L251bGwgMj4mMSBcCi0rCSAgICYmIHRlc3QgLWYgL3Vzci9saWIvbGli ZWxmLnNvOyB0aGVuCi0rCQl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IGlhNjQvdC1nbGliYy1u by1saWJ1bndpbmQiCi0rCWVsc2UKLSsJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gdC1saWJ1 bndpbmQgaWE2NC90LWdsaWJjIgotKwkJaWYgdGVzdCB4JHdpdGhfc3lzdGVtX2xpYnVud2luZCAh PSB4eWVzIDsgdGhlbgotKwkJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gdC1saWJ1bndpbmQt ZWxmIGlhNjQvdC1nbGliYy1saWJ1bndpbmQiCi0rCQlmaQotIAlmaQotIAl0YXJnZXRfY3B1X2Rl ZmF1bHQ9Ik1BU0tfR05VX0FTfE1BU0tfR05VX0xEIgotIAlleHRyYV9wYXJ0cz0iY3J0YmVnaW4u byBjcnRlbmQubyBjcnRiZWdpblMubyBjcnRlbmRTLm8gY3J0ZmFzdG1hdGgubyIKLS0tLSBnY2Mv Y29uZmlnL2lhNjQvdC1nbGliYy1uby1saWJ1bndpbmQuamoJMjAwNC0wMi0xOCAxMDoyNzozNi4w MDAwMDAwMDAgLTA1MDAKLSsrKyBnY2MvY29uZmlnL2lhNjQvdC1nbGliYy1uby1saWJ1bndpbmQJ MjAwNC0xMS0xNSAwOTo1NjozMy4wMDAwMDAwMDAgLTA1MDAKLUBAIC0wLDAgKzEsMzAgQEAKLSsj IERvbid0IHVzZSBzeXN0ZW0gbGlidW53aW5kIGxpYnJhcnkgb24gSUEtNjQgR0xJQkMgYmFzZWQg c3lzdGVtLAotKyMgYnV0IG1ha2UgX1Vud2luZF8qIHN5bWJvbHMgdW52ZXJzaW9uZWQsIHNvIHRo YXQgY3JlYXRlZCBwcm9ncmFtcwotKyMgYXJlIHVzYWJsZSBldmVuIHdoZW4gbGliZ2NjX3MgdXNl cyBsaWJ1bndpbmQuCi0rTElCMkFEREVIICs9ICQoc3JjZGlyKS9jb25maWcvaWE2NC9mZGUtZ2xp YmMuYwotK1NITElCX01BUEZJTEVTICs9ICQoc3JjZGlyKS9jb25maWcvaWE2NC9saWJnY2MtaWE2 NC1uby1saWJ1bndpbmQudmVyCi0rU0hMSUJfTUtNQVAgPSAkKHNyY2RpcikvY29uZmlnL2lhNjQv bWttYXAtc3ltdmVyLW11bHRpLmF3awotKwotK1NITElCX0xJTksgPSAkKEdDQ19GT1JfVEFSR0VU KSAkKExJQkdDQzJfQ0ZMQUdTKSAtc2hhcmVkIC1ub2RlZmF1bHRsaWJzIFwKLSsJLVdsLC0tc29u YW1lPSQoU0hMSUJfU09OQU1FKSBcCi0rCS1XbCwtLXZlcnNpb24tc2NyaXB0PSQoU0hMSUJfTUFQ KSBcCi0rCS1vICQoU0hMSUJfRElSKS8kKFNITElCX1NPTkFNRSkudG1wIEBtdWx0aWxpYl9mbGFn c0AgJChTSExJQl9PQkpTKSAtbGMgJiYgXAotKwlybSAtZiAkKFNITElCX0RJUikvJChTSExJQl9T T0xJTkspICYmIFwKLSsJaWYgWyAtZiAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpIF07IHRo ZW4gXAotKwkgIG12IC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTkFNRSkgXAotKwkJJChTSExJ Ql9ESVIpLyQoU0hMSUJfU09OQU1FKS5iYWNrdXA7IFwKLSsJZWxzZSB0cnVlOyBmaSAmJiBcCi0r CWdjYyAtTzIgLW8gJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50d2VhayBcCi0rCSAgJChz cmNkaXIpL2NvbmZpZy9pYTY0L2NoYW5nZS1zeW12ZXIuYyAtbGVsZiAmJiBcCi0rCSQoU0hMSUJf RElSKS8kKFNITElCX1NPTkFNRSkudHdlYWsgJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50 bXAgXAotKwlHQ0NfMy40LjIgX0dMT0JBTF8gXAotKwlfVW53aW5kX0dldEdSIF9VbndpbmRfUmFp c2VFeGNlcHRpb24gX1Vud2luZF9HZXRSZWdpb25TdGFydCBfVW53aW5kX1NldElQIFwKLSsJX1Vu d2luZF9HZXRJUCBfVW53aW5kX0dldExhbmd1YWdlU3BlY2lmaWNEYXRhIF9VbndpbmRfUmVzdW1l IFwKLSsJX1Vud2luZF9EZWxldGVFeGNlcHRpb24gX1Vud2luZF9TZXRHUiBfVW53aW5kX0ZvcmNl ZFVud2luZCBcCi0rCV9VbndpbmRfQmFja3RyYWNlIF9VbndpbmRfRmluZEVuY2xvc2luZ0Z1bmN0 aW9uIF9VbndpbmRfR2V0Q0ZBIFwKLSsJX1Vud2luZF9SZXN1bWVfb3JfUmV0aHJvdyBfVW53aW5k X0dldEJTUCAmJiBcCi0rCXJtIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTkFNRSkudHdlYWsg JiYgXAotKwltdiAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnRtcCAkKFNITElCX0RJUikv JChTSExJQl9TT05BTUUpICYmIFwKLSsJJChMTl9TKSAkKFNITElCX1NPTkFNRSkgJChTSExJQl9E SVIpLyQoU0hMSUJfU09MSU5LKQotKwotK1RBUkdFVF9MSUJHQ0MyX0NGTEFHUyArPSAtRFVTRV9T WU1WRVJfR0xPQkFMCi0tLS0gZ2NjL2NvbmZpZy9pYTY0L2NoYW5nZS1zeW12ZXIuYy5qagkyMDA0 LTAyLTE4IDEwOjI3OjM2LjAwMDAwMDAwMCAtMDUwMAotKysrIGdjYy9jb25maWcvaWE2NC9jaGFu Z2Utc3ltdmVyLmMJMjAwNC0xMS0xMyAwNToyMzo1MC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0wLDAg KzEsMjExIEBACi0rI2RlZmluZSBfR05VX1NPVVJDRSAxCi0rI2RlZmluZSBfRklMRV9PRkZTRVRf QklUUyA2NAotKyNpbmNsdWRlIDxlbmRpYW4uaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5j bHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsjaW5jbHVkZSA8Zm5tYXRjaC5o PgotKyNpbmNsdWRlIDxnZWxmLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxz dHJpbmcuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rCi0raW50Ci0rY29tcHV0ZV92ZXJpZHgg KGNvbnN0IGNoYXIgKm5hbWUsIEVsZiAqZWxmLCBFbGZfRGF0YSAqdmVyZCwgR0VsZl9TaGRyICp2 ZXJkX3NoZHIpCi0rewotKyAgaWYgKHN0cmNtcCAobmFtZSwgIl9HTE9CQUxfIikgPT0gMCkKLSsg ICAgcmV0dXJuIDE7Ci0rCi0rICBpbnQgY250OwotKyAgc2l6ZV90IG9mZnNldCA9IDA7Ci0rICBm b3IgKGNudCA9IHZlcmRfc2hkci0+c2hfaW5mbzsgLS1jbnQgPj0gMDsgKQotKyAgICB7Ci0rICAg ICAgR0VsZl9WZXJkZWYgZGVmbWVtOwotKyAgICAgIEdFbGZfVmVyZGVmICpkZWY7Ci0rICAgICAg R0VsZl9WZXJkYXV4IGF1eG1lbTsKLSsgICAgICBHRWxmX1ZlcmRhdXggKmF1eDsKLSsgICAgICB1 bnNpZ25lZCBpbnQgYXV4b2Zmc2V0OwotKwotKyAgICAgIC8qIEdldCB0aGUgZGF0YSBhdCB0aGUg bmV4dCBvZmZzZXQuICAqLwotKyAgICAgIGRlZiA9IGdlbGZfZ2V0dmVyZGVmICh2ZXJkLCBvZmZz ZXQsICZkZWZtZW0pOwotKyAgICAgIGlmIChkZWYgPT0gTlVMTCkKLSsJYnJlYWs7Ci0rCi0rICAg ICAgYXV4b2Zmc2V0ID0gb2Zmc2V0ICsgZGVmLT52ZF9hdXg7Ci0rICAgICAgYXV4ID0gZ2VsZl9n ZXR2ZXJkYXV4ICh2ZXJkLCBhdXhvZmZzZXQsICZhdXhtZW0pOwotKyAgICAgIGlmIChhdXggPT0g TlVMTCkKLSsJYnJlYWs7Ci0rCi0rICAgICAgaWYgKHN0cmNtcCAobmFtZSwgZWxmX3N0cnB0ciAo ZWxmLCB2ZXJkX3NoZHItPnNoX2xpbmssCi0rCQkgIGF1eC0+dmRhX25hbWUpKSA9PSAwKQotKwly ZXR1cm4gZGVmLT52ZF9uZHg7Ci0rCi0rICAgICAgLyogRmluZCB0aGUgbmV4dCBvZmZzZXQuICAq LwotKyAgICAgIG9mZnNldCArPSBkZWYtPnZkX25leHQ7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAt MTsKLSt9Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsgIGlm IChhcmdjIDwgNCkKLSsgICAgZXJyb3IgKDEsIDAsICJVc2FnZTogY2hhbmdlX3N5bXZlciBsaWJy YXJ5IGZyb21fc3ltdmVyIHRvX3N5bXZlciBzeW1ib2wuLi5cbkV4YW1wbGU6IGNoYW5nZV9zeW12 ZXIgbGliZm9vLnNvIEZPT18xLjAgKmdsb2JhbCogYmFyIGJheiIpOwotKwotKyAgY29uc3QgY2hh ciAqZm5hbWUgPSBhcmd2WzFdOwotKwotKyAgLyogT3BlbiB0aGUgZmlsZS4gICovCi0rICBpbnQg ZmQ7Ci0rICBmZCA9IG9wZW4gKGZuYW1lLCBPX1JEV1IpOwotKyAgaWYgKGZkID09IC0xKQotKyAg ICBlcnJvciAoMSwgZXJybm8sIGZuYW1lKTsKLSsKLSsgIGVsZl92ZXJzaW9uIChFVl9DVVJSRU5U KTsKLSsKLSsgIC8qIE5vdyBnZXQgdGhlIEVMRiBkZXNjcmlwdG9yLiAgKi8KLSsgIEVsZiAqZWxm ID0gZWxmX2JlZ2luIChmZCwgRUxGX0NfUkVBRF9NTUFQLCBOVUxMKTsKLSsgIGlmIChlbGYgPT0g TlVMTCB8fCBlbGZfa2luZCAoZWxmKSAhPSBFTEZfS19FTEYpCi0rICAgIGVycm9yICgxLCAwLCAi Q291bGRuJ3Qgb3BlbiAlczogJXMiLCBmbmFtZSwgZWxmX2Vycm1zZyAoLTEpKTsKLSsKLSsgIHNp emVfdCBzaHN0cm5keDsKLSsgIC8qIEdldCB0aGUgc2VjdGlvbiBoZWFkZXIgc3RyaW5nIHRhYmxl IGluZGV4LiAgKi8KLSsgIGlmIChlbGZfZ2V0c2hzdHJuZHggKGVsZiwgJnNoc3RybmR4KSA8IDAp Ci0rICAgIGVycm9yICgxLCAwLCAiY2Fubm90IGdldCBzaHN0cm5keCBmcm9tICVzIiwgZm5hbWUp OwotKwotKyAgR0VsZl9FaGRyIGVoZHJfbWVtOwotKyAgR0VsZl9FaGRyICplaGRyOwotKwotKyAg LyogV2UgbmVlZCB0aGUgRUxGIGhlYWRlciBpbiBhIGZldyBwbGFjZXMuICAqLwotKyAgZWhkciA9 IGdlbGZfZ2V0ZWhkciAoZWxmLCAmZWhkcl9tZW0pOwotKyAgaWYgKGVoZHIgPT0gTlVMTCkKLSsg ICAgZXJyb3IgKDEsIDAsICJjb3VsZG4ndCBnZXQgRUxGIGhlYWRlcnMgJXM6ICVzIiwgZm5hbWUs IGVsZl9lcnJtc2cgKC0xKSk7Ci0rCi0rICBFbGZfU2NuICpzY24gPSBOVUxMOwotKyAgR0VsZl9T aGRyIHNoZHJfbWVtLCB2ZXJkX3NoZHIsIHZlcl9zaGRyLCBkeW5zeW1fc2hkcjsKLSsgIEVsZl9E YXRhICp2ZXIgPSBOVUxMLCAqdmVyZCA9IE5VTEwsICpkeW5zeW0gPSBOVUxMOwotKwotKyAgd2hp bGUgKChzY24gPSBlbGZfbmV4dHNjbiAoZWxmLCBzY24pKSAhPSBOVUxMKQotKyAgICB7Ci0rICAg ICAgR0VsZl9TaGRyICpzaGRyID0gZ2VsZl9nZXRzaGRyIChzY24sICZzaGRyX21lbSk7Ci0rCi0r ICAgICAgaWYgKHNoZHIgPT0gTlVMTCkKLSsJZXJyb3IgKDEsIDAsICJjb3VsZG4ndCBnZXQgc2hk ciBmcm9tICVzIiwgZm5hbWUpOwotKwotKyAgICAgIGlmICgoc2hkci0+c2hfZmxhZ3MgJiBTSEZf QUxMT0MpICE9IDApCi0rCXsKLSsJICBjb25zdCBjaGFyICpuYW1lID0gZWxmX3N0cnB0ciAoZWxm LCBzaHN0cm5keCwgc2hkci0+c2hfbmFtZSk7Ci0rCSAgRWxmX0RhdGEgKipwOwotKwotKwkgIGlm IChzdHJjbXAgKG5hbWUsICIuZ251LnZlcnNpb24iKSA9PSAwKQotKwkgICAgewotKwkgICAgICBw ID0gJnZlcjsKLSsJICAgICAgdmVyX3NoZHIgPSAqc2hkcjsKLSsJICAgIH0KLSsJICBlbHNlIGlm IChzdHJjbXAgKG5hbWUsICIuZ251LnZlcnNpb25fZCIpID09IDApCi0rCSAgICB7Ci0rCSAgICAg IHAgPSAmdmVyZDsKLSsJICAgICAgdmVyZF9zaGRyID0gKnNoZHI7Ci0rCSAgICB9Ci0rCSAgZWxz ZSBpZiAoc3RyY21wIChuYW1lLCAiLmR5bnN5bSIpID09IDApCi0rCSAgICB7Ci0rCSAgICAgIHAg PSAmZHluc3ltOwotKwkgICAgICBkeW5zeW1fc2hkciA9ICpzaGRyOwotKwkgICAgfQotKwkgIGVs c2UKLSsJICAgIGNvbnRpbnVlOwotKwotKwkgIGlmICgqcCAhPSBOVUxMKQotKwkgICAgZXJyb3Ig KDEsIDAsICJUd28gJXMgc2VjdGlvbnMgaW4gJXMiLCBuYW1lLCBmbmFtZSk7Ci0rCSAgKnAgPSBl bGZfZ2V0ZGF0YSAoc2NuLCBOVUxMKTsKLSsJICBpZiAoKnAgPT0gTlVMTCB8fCBlbGZfZ2V0ZGF0 YSAoc2NuLCAqcCkgIT0gTlVMTCkKLSsJICAgIGVycm9yICgxLCAwLCAiTm8gZGF0YSBvciBub24t Y29udGlndW91cyBkYXRhIGluICVzIHNlY3Rpb24gaW4gJXMiLAotKwkJICAgbmFtZSwgZm5hbWUp OwotKwl9Ci0rICAgIH0KLSsKLSsgIGlmICh2ZXIgPT0gTlVMTCB8fCB2ZXJkID09IE5VTEwgfHwg ZHluc3ltID09IE5VTEwpCi0rICAgIGVycm9yICgxLCAwLCAiQ291bGRuJ3QgZmluZCBvbmUgb2Yg dGhlIG5lZWRlZCBzZWN0aW9ucyBpbiAlcyIsIGZuYW1lKTsKLSsKLSsgIGludCBmcm9tX2lkeCA9 IGNvbXB1dGVfdmVyaWR4IChhcmd2WzJdLCBlbGYsIHZlcmQsICZ2ZXJkX3NoZHIpOwotKyAgaWYg KGZyb21faWR4ID09IC0xKQotKyAgICBlcnJvciAoMSwgMCwgIkNvdWxkIG5vdCBmaW5kIHN5bWJv bCB2ZXJzaW9uICVzIGluICVzIiwgYXJndlsyXSwgZm5hbWUpOwotKwotKyAgaW50IHRvX2lkeCA9 IGNvbXB1dGVfdmVyaWR4IChhcmd2WzNdLCBlbGYsIHZlcmQsICZ2ZXJkX3NoZHIpOwotKyAgaWYg KHRvX2lkeCA9PSAtMSkKLSsgICAgZXJyb3IgKDEsIDAsICJDb3VsZCBub3QgZmluZCBzeW1ib2wg dmVyc2lvbiAlcyBpbiAlcyIsIGFyZ3ZbM10sIGZuYW1lKTsKLSsKLSsgIGlmIChkeW5zeW1fc2hk ci5zaF9lbnRzaXplICE9IGdlbGZfZnNpemUgKGVsZiwgRUxGX1RfU1lNLCAxLCBlaGRyLT5lX3Zl cnNpb24pCi0rICAgICAgfHwgZHluc3ltX3NoZHIuc2hfc2l6ZSAlIGR5bnN5bV9zaGRyLnNoX2Vu dHNpemUKLSsgICAgICB8fCB2ZXJfc2hkci5zaF9lbnRzaXplICE9IDIKLSsgICAgICB8fCAodmVy X3NoZHIuc2hfc2l6ZSAmIDEpCi0rICAgICAgfHwgZHluc3ltX3NoZHIuc2hfc2l6ZSAvIGR5bnN5 bV9zaGRyLnNoX2VudHNpemUgIT0gdmVyX3NoZHIuc2hfc2l6ZSAvIDIpCi0rICAgIGVycm9yICgx LCAwLCAiVW5leHBlY3RlZCBzaF9zaXplIG9yIHNoX2VudHNpemUgaW4gJXMiLCBmbmFtZSk7Ci0r Ci0rICBzaXplX3QgbmVudHJpZXMgPSB2ZXJfc2hkci5zaF9zaXplIC8gMjsKLSsgIHNpemVfdCBj bnQ7Ci0rICBHRWxmX1ZlcnN5bSBhcnJheVtuZW50cmllc107Ci0rICBmb3IgKGNudCA9IDA7IGNu dCA8IG5lbnRyaWVzOyArK2NudCkKLSsgICAgewotKyAgICAgIEdFbGZfVmVyc3ltIHZzeW1tZW07 Ci0rICAgICAgR0VsZl9WZXJzeW0gKnZzeW07Ci0rCi0rICAgICAgdnN5bSA9IGdlbGZfZ2V0dmVy c3ltICh2ZXIsIGNudCwgJnZzeW1tZW0pOwotKyAgICAgIGlmICh2c3ltID09IE5VTEwpCi0rCWVy cm9yICgxLCAwLCAiZ2VsdF9nZXR2ZXJzeW0gZmFpbGVkIGluICVzOiAlcyIsIGZuYW1lLCBlbGZf ZXJybXNnICgtMSkpOwotKwotKyAgICAgIGFycmF5W2NudF0gPSAqdnN5bTsKLSsgICAgICBpZiAo KnZzeW0gIT0gZnJvbV9pZHgpCi0rCWNvbnRpbnVlOwotKwotKyAgICAgIEdFbGZfU3ltIHN5bV9t ZW07Ci0rICAgICAgR0VsZl9TeW0gKnN5bTsKLSsgICAgICBzeW0gPSBnZWxmX2dldHN5bSAoZHlu c3ltLCBjbnQsICZzeW1fbWVtKTsKLSsgICAgICBpZiAoc3ltID09IE5VTEwpCi0rCWVycm9yICgx LCAwLCAiZ2VsdF9nZXRzeW0gZmFpbGVkIGluICVzOiAlcyIsIGZuYW1lLCBlbGZfZXJybXNnICgt MSkpOwotKwotKyAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBlbGZfc3RycHRyIChlbGYsIGR5bnN5 bV9zaGRyLnNoX2xpbmssIHN5bS0+c3RfbmFtZSk7Ci0rCi0rICAgICAgaW50IGFyZ247Ci0rICAg ICAgZm9yIChhcmduID0gNDsgYXJnbiA8IGFyZ2M7ICsrYXJnbikKLSsJaWYgKGZubWF0Y2ggKGFy Z3ZbYXJnbl0sIG5hbWUsIDApID09IDApCi0rCSAgewotKwkgICAgYXJyYXlbY250XSA9IHRvX2lk eDsKLSsJICAgIGJyZWFrOwotKwkgIH0KLSsgICAgfQotKwotKyAgaWYgKHNpemVvZiAoYXJyYXlb MF0pICE9IDIpCi0rICAgIGFib3J0ICgpOwotKwotKyNpZiBfX0JZVEVfT1JERVIgPT0gX19MSVRU TEVfRU5ESUFOCi0rICBpZiAoZWhkci0+ZV9pZGVudFtFSV9EQVRBXSA9PSBFTEZEQVRBMkxTQikK LSsgICAgOwotKyAgZWxzZSBpZiAoZWhkci0+ZV9pZGVudFtFSV9EQVRBXSA9PSBFTEZEQVRBMk1T QikKLSsjZWxpZiBfX0JZVEVfT1JERVIgPT0gX19CSUdfRU5ESUFOCi0rICBpZiAoZWhkci0+ZV9p ZGVudFtFSV9EQVRBXSA9PSBFTEZEQVRBMk1TQikKLSsgICAgOwotKyAgZWxzZSBpZiAoZWhkci0+ ZV9pZGVudFtFSV9EQVRBXSA9PSBFTEZEQVRBMkxTQikKLSsjZWxzZQotKyMgZXJyb3IgVW5zdXBw b3J0ZWQgZW5kaWFuaXR5Ci0rI2VuZGlmCi0rICAgIHsKLSsgICAgICBmb3IgKGNudCA9IDA7IGNu dCA8IG5lbnRyaWVzOyArK2NudCkKLSsJYXJyYXlbY250XSA9ICgoYXJyYXlbY250XSAmIDB4ZmYp IDw8IDgpIHwgKChhcnJheVtjbnRdICYgMHhmZjAwKSA+PiA4KTsKLSsgICAgfQotKyAgZWxzZQot KyAgICBlcnJvciAoMSwgMCwgIlVua25vd24gRUlfREFUQSAlZCBpbiAlcyIsIGVoZHItPmVfaWRl bnRbRUlfREFUQV0sIGZuYW1lKTsKLSsKLSsgIGlmIChlbGZfZW5kIChlbGYpICE9IDApCi0rICAg IGVycm9yICgxLCAwLCAiY291bGRuJ3QgY2xvc2UgJXM6ICVzIiwgZm5hbWUsIGVsZl9lcnJtc2cg KC0xKSk7Ci0rCi0rICBpZiAobHNlZWsgKGZkLCB2ZXJfc2hkci5zaF9vZmZzZXQsIFNFRUtfU0VU KSAhPSAob2ZmX3QpIHZlcl9zaGRyLnNoX29mZnNldCkKLSsgICAgZXJyb3IgKDEsIDAsICJmYWls ZWQgdG8gc2VlayB0byAlemQgaW4gJXMiLCAoc2l6ZV90KSB2ZXJfc2hkci5zaF9vZmZzZXQsCi0r CSAgIGZuYW1lKTsKLSsKLSsgIGlmICh3cml0ZSAoZmQsIGFycmF5LCAyICogbmVudHJpZXMpICE9 IChzc2l6ZV90KSAoMiAqIG5lbnRyaWVzKSkKLSsgICAgZXJyb3IgKDEsIDAsICJmYWlsZWQgdG8g d3JpdGUgLmdudS52ZXJzaW9uIHNlY3Rpb24gaW50byAlcyIsIGZuYW1lKTsKLSsKLSsgIGNsb3Nl IChmZCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0tLS0gZ2NjL2NvbmZpZy9pYTY0L3Vud2luZC1pYTY0 LmMuamoJMjAwNC0xMC0wNCAwODo1NTo1Ny4wMDAwMDAwMDAgLTA0MDAKLSsrKyBnY2MvY29uZmln L2lhNjQvdW53aW5kLWlhNjQuYwkyMDA0LTExLTE1IDA5OjA3OjQ1LjAwMDAwMDAwMCAtMDUwMAot QEAgLTUxLDYgKzUxLDUxIEBACi0gI2RlZmluZSBVTldfRkxBR19VSEFORExFUih4KQkoKHgpICYg MHgwMDAwMDAwMjAwMDAwMDAwTCkKLSAjZGVmaW5lIFVOV19MRU5HVEgoeCkJCSgoeCkgJiAweDAw MDAwMDAwZmZmZmZmZmZMKQotIAotKyNpZiBkZWZpbmVkIChVU0VfU1lNVkVSX0dMT0JBTCkgJiYg ZGVmaW5lZCAoU0hBUkVEKQotK2V4dGVybiBfVW53aW5kX1JlYXNvbl9Db2RlIF9fc3ltdmVyZ2xv YmFsX1Vud2luZF9CYWNrdHJhY2UKLSsgIChfVW53aW5kX1RyYWNlX0ZuLCB2b2lkICopOwotK2V4 dGVybiB2b2lkIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9EZWxldGVFeGNlcHRpb24KLSsgIChzdHJ1 Y3QgX1Vud2luZF9FeGNlcHRpb24gKik7Ci0rZXh0ZXJuIHZvaWQgKiBfX3N5bXZlcmdsb2JhbF9V bndpbmRfRmluZEVuY2xvc2luZ0Z1bmN0aW9uICh2b2lkICopOwotK2V4dGVybiBfVW53aW5kX1Jl YXNvbl9Db2RlIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9Gb3JjZWRVbndpbmQKLSsgIChzdHJ1Y3Qg X1Vud2luZF9FeGNlcHRpb24gKiwgX1Vud2luZF9TdG9wX0ZuLCB2b2lkICopOwotK2V4dGVybiBf VW53aW5kX1dvcmQgX19zeW12ZXJnbG9iYWxfVW53aW5kX0dldENGQQotKyAgKHN0cnVjdCBfVW53 aW5kX0NvbnRleHQgKik7Ci0rZXh0ZXJuIF9VbndpbmRfV29yZCBfX3N5bXZlcmdsb2JhbF9Vbndp bmRfR2V0QlNQCi0rICAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKLStleHRlcm4gX1Vud2lu ZF9Xb3JkIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9HZXRHUgotKyAgKHN0cnVjdCBfVW53aW5kX0Nv bnRleHQgKiwgaW50ICk7Ci0rZXh0ZXJuIF9VbndpbmRfUHRyIF9fc3ltdmVyZ2xvYmFsX1Vud2lu ZF9HZXRJUCAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKLStleHRlcm4gdm9pZCAqX19zeW12 ZXJnbG9iYWxfVW53aW5kX0dldExhbmd1YWdlU3BlY2lmaWNEYXRhCi0rICAoc3RydWN0IF9Vbndp bmRfQ29udGV4dCAqKTsKLStleHRlcm4gX1Vud2luZF9QdHIgX19zeW12ZXJnbG9iYWxfVW53aW5k X0dldFJlZ2lvblN0YXJ0Ci0rICAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKLStleHRlcm4g X1Vud2luZF9SZWFzb25fQ29kZSBfX3N5bXZlcmdsb2JhbF9VbndpbmRfUmFpc2VFeGNlcHRpb24K LSsgIChzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24gKik7Ci0rZXh0ZXJuIHZvaWQgX19zeW12ZXJn bG9iYWxfVW53aW5kX1Jlc3VtZSAoc3RydWN0IF9VbndpbmRfRXhjZXB0aW9uICopOwotK2V4dGVy biBfVW53aW5kX1JlYXNvbl9Db2RlIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9SZXN1bWVfb3JfUmV0 aHJvdwotKyAgIChzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24gKik7Ci0rZXh0ZXJuIHZvaWQgX19z eW12ZXJnbG9iYWxfVW53aW5kX1NldEdSCi0rICAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqLCBp bnQsIF9VbndpbmRfV29yZCk7Ci0rZXh0ZXJuIHZvaWQgX19zeW12ZXJnbG9iYWxfVW53aW5kX1Nl dElQCi0rICAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqLCBfVW53aW5kX1B0cik7Ci0rI2RlZmlu ZSBfVW53aW5kX0JhY2t0cmFjZSBfX3N5bXZlcmdsb2JhbF9VbndpbmRfQmFja3RyYWNlCi0rI2Rl ZmluZSBfVW53aW5kX0RlbGV0ZUV4Y2VwdGlvbiBfX3N5bXZlcmdsb2JhbF9VbndpbmRfRGVsZXRl RXhjZXB0aW9uCi0rI2RlZmluZSBfVW53aW5kX0ZpbmRFbmNsb3NpbmdGdW5jdGlvbiBfX3N5bXZl cmdsb2JhbF9VbndpbmRfRmluZEVuY2xvc2luZ0Z1bmN0aW9uCi0rI2RlZmluZSBfVW53aW5kX0Zv cmNlZFVud2luZCBfX3N5bXZlcmdsb2JhbF9VbndpbmRfRm9yY2VkVW53aW5kCi0rI2RlZmluZSBf VW53aW5kX0dldEJTUCBfX3N5bXZlcmdsb2JhbF9VbndpbmRfR2V0QlNQCi0rI2RlZmluZSBfVW53 aW5kX0dldENGQSBfX3N5bXZlcmdsb2JhbF9VbndpbmRfR2V0Q0ZBCi0rI2RlZmluZSBfVW53aW5k X0dldEdSIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9HZXRHUgotKyNkZWZpbmUgX1Vud2luZF9HZXRJ UCBfX3N5bXZlcmdsb2JhbF9VbndpbmRfR2V0SVAKLSsjZGVmaW5lIF9VbndpbmRfR2V0TGFuZ3Vh Z2VTcGVjaWZpY0RhdGEgX19zeW12ZXJnbG9iYWxfVW53aW5kX0dldExhbmd1YWdlU3BlY2lmaWNE YXRhCi0rI2RlZmluZSBfVW53aW5kX0dldFJlZ2lvblN0YXJ0IF9fc3ltdmVyZ2xvYmFsX1Vud2lu ZF9HZXRSZWdpb25TdGFydAotKyNkZWZpbmUgX1Vud2luZF9SYWlzZUV4Y2VwdGlvbiBfX3N5bXZl cmdsb2JhbF9VbndpbmRfUmFpc2VFeGNlcHRpb24KLSsjZGVmaW5lIF9VbndpbmRfUmVzdW1lIF9f c3ltdmVyZ2xvYmFsX1Vud2luZF9SZXN1bWUKLSsjZGVmaW5lIF9VbndpbmRfUmVzdW1lX29yX1Jl dGhyb3cgX19zeW12ZXJnbG9iYWxfVW53aW5kX1Jlc3VtZV9vcl9SZXRocm93Ci0rI2RlZmluZSBf VW53aW5kX1NldEdSIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9TZXRHUgotKyNkZWZpbmUgX1Vud2lu ZF9TZXRJUCBfX3N5bXZlcmdsb2JhbF9VbndpbmRfU2V0SVAKLSsjZW5kaWYKLSsKLSBlbnVtIHVu d19hcHBsaWNhdGlvbl9yZWdpc3RlcgotIHsKLSAgIFVOV19BUl9CU1AsCi1AQCAtMjQwMiw0ICsy NDQ3LDQ0IEBAIGFsaWFzIChfVW53aW5kX1NldEdSKTsKLSBhbGlhcyAoX1Vud2luZF9TZXRJUCk7 Ci0gI2VuZGlmCi0gCi0rI2lmIGRlZmluZWQgKFVTRV9TWU1WRVJfR0xPQkFMKSAmJiBkZWZpbmVk IChTSEFSRUQpCi0rI3VuZGVmIGFsaWFzCi0rI2RlZmluZSBzeW12ZXJnbG9iYWwobmFtZSwgdmVy c2lvbikgXAotK19fdHlwZW9mIChfX3N5bXZlcmdsb2JhbCMjbmFtZSkgX19zeW12ZXJsb2NhbCMj bmFtZQkJXAotKyAgX19hdHRyaWJ1dGVfXyAoKGFsaWFzICgiX19zeW12ZXJnbG9iYWwiICNuYW1l KSkpOwkJXAotK19fYXNtX18gKCIuc3ltdmVyIF9fc3ltdmVyZ2xvYmFsIiAjbmFtZSIsIiAjbmFt ZSAiQEBHQ0NfMy40LjIiKTtcCi0rX19hc21fXyAoIi5zeW12ZXIgX19zeW12ZXJsb2NhbCIgI25h bWUiLCIgI25hbWUgIkAiICN2ZXJzaW9uKQotKwotKyN1bmRlZiBfVW53aW5kX0JhY2t0cmFjZQot KyN1bmRlZiBfVW53aW5kX0RlbGV0ZUV4Y2VwdGlvbgotKyN1bmRlZiBfVW53aW5kX0ZpbmRFbmNs b3NpbmdGdW5jdGlvbgotKyN1bmRlZiBfVW53aW5kX0ZvcmNlZFVud2luZAotKyN1bmRlZiBfVW53 aW5kX0dldEJTUAotKyN1bmRlZiBfVW53aW5kX0dldENGQQotKyN1bmRlZiBfVW53aW5kX0dldEdS Ci0rI3VuZGVmIF9VbndpbmRfR2V0SVAKLSsjdW5kZWYgX1Vud2luZF9HZXRMYW5ndWFnZVNwZWNp ZmljRGF0YQotKyN1bmRlZiBfVW53aW5kX0dldFJlZ2lvblN0YXJ0Ci0rI3VuZGVmIF9VbndpbmRf UmFpc2VFeGNlcHRpb24KLSsjdW5kZWYgX1Vud2luZF9SZXN1bWUKLSsjdW5kZWYgX1Vud2luZF9S ZXN1bWVfb3JfUmV0aHJvdwotKyN1bmRlZiBfVW53aW5kX1NldEdSCi0rI3VuZGVmIF9VbndpbmRf U2V0SVAKLStzeW12ZXJnbG9iYWwgKF9VbndpbmRfQmFja3RyYWNlLCBHQ0NfMy4zKTsKLStzeW12 ZXJnbG9iYWwgKF9VbndpbmRfRGVsZXRlRXhjZXB0aW9uLCBHQ0NfMy4wKTsKLStzeW12ZXJnbG9i YWwgKF9VbndpbmRfRmluZEVuY2xvc2luZ0Z1bmN0aW9uLCBHQ0NfMy4zKTsKLStzeW12ZXJnbG9i YWwgKF9VbndpbmRfRm9yY2VkVW53aW5kLCBHQ0NfMy4wKTsKLStzeW12ZXJnbG9iYWwgKF9Vbndp bmRfR2V0QlNQLCBHQ0NfMy4zLjIpOwotK3N5bXZlcmdsb2JhbCAoX1Vud2luZF9HZXRDRkEsIEdD Q18zLjMpOwotK3N5bXZlcmdsb2JhbCAoX1Vud2luZF9HZXRHUiwgR0NDXzMuMCk7Ci0rc3ltdmVy Z2xvYmFsIChfVW53aW5kX0dldElQLCBHQ0NfMy4wKTsKLStzeW12ZXJnbG9iYWwgKF9VbndpbmRf R2V0TGFuZ3VhZ2VTcGVjaWZpY0RhdGEsIEdDQ18zLjApOwotK3N5bXZlcmdsb2JhbCAoX1Vud2lu ZF9HZXRSZWdpb25TdGFydCwgR0NDXzMuMCk7Ci0rc3ltdmVyZ2xvYmFsIChfVW53aW5kX1JhaXNl RXhjZXB0aW9uLCBHQ0NfMy4wKTsKLStzeW12ZXJnbG9iYWwgKF9VbndpbmRfUmVzdW1lLCBHQ0Nf My4wKTsKLStzeW12ZXJnbG9iYWwgKF9VbndpbmRfUmVzdW1lX29yX1JldGhyb3csIEdDQ18zLjMp OwotK3N5bXZlcmdsb2JhbCAoX1Vud2luZF9TZXRHUiwgR0NDXzMuMCk7Ci0rc3ltdmVyZ2xvYmFs IChfVW53aW5kX1NldElQLCBHQ0NfMy4wKTsKLSsjZW5kaWYKLSsKLSAjZW5kaWYKLS0tLSBnY2Mv Y29uZmlnL2lhNjQvbWttYXAtc3ltdmVyLW11bHRpLmF3ay5qagkyMDA0LTAyLTE4IDEwOjI3OjM2 LjAwMDAwMDAwMCAtMDUwMAotKysrIGdjYy9jb25maWcvaWE2NC9ta21hcC1zeW12ZXItbXVsdGku YXdrCTIwMDQtMTEtMTUgMDk6NDY6NTAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMCwwICsxLDEzMyBA QAotKyMgR2VuZXJhdGUgYW4gRUxGIHN5bWJvbCB2ZXJzaW9uIG1hcCBhLWxhIFNvbGFyaXMgYW5k IEdOVSBsZC4KLSsjCUNvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgSGVuZGVyc29uIDxydGhAY3lnbnVz LmNvbT4KLSsjCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCi0rIwotKyMgR0NDIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5k ZXIKLSsjIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlCi0rIyBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlcgotKyMgdmVyc2lvbi4KLSsjCi0rIyBH Q0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 IFdJVEhPVVQKLSsjIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mIE1FUkNIQU5UQUJJTElUWQotKyMgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotKyMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxl IENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rIyBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCi0rIyAwMjEx MC0xMzAxLCBVU0EuCi0rCi0rQkVHSU4gewotKyAgc3RhdGUgPSAibm0iOwotKyAgc2F3c3ltYm9s ID0gMDsKLSt9Ci0rCi0rIyBSZW1vdmUgY29tbWVudCBhbmQgYmxhbmsgbGluZXMuCi0rL14gKiMv IHx8IC9eICokLyB7Ci0rICBuZXh0OwotK30KLSsKLSsjIFdlIGJlZ2luIHdpdGggbm0gaW5wdXQu ICBDb2xsZWN0IHRoZSBzZXQgb2Ygc3ltYm9scyB0aGF0IGFyZSBwcmVzZW50Ci0rIyBzbyB0aGF0 IHdlIGNhbiBub3QgZW1pdCB0aGVtIGludG8gdGhlIGZpbmFsIHZlcnNpb24gc2NyaXB0IC0tIFNv bGFyaXMKLSsjIGNvbXBsYWlucyBhdCB1cyBpZiB3ZSBkby4KLSsKLStzdGF0ZSA9PSAibm0iICYm IC9eJSUvIHsKLSsgIHN0YXRlID0gInZlciI7Ci0rICBuZXh0OwotK30KLSsKLStzdGF0ZSA9PSAi bm0iICYmICgkMSA9PSAiVSIgfHwgJDIgPT0gIlUiKSB7Ci0rICBuZXh0OwotK30KLSsKLStzdGF0 ZSA9PSAibm0iICYmIE5GID09IDMgewotKyAgaWYgKCQzIH4gL15bXkBdKkBHQ0NfWzAtOS5dKiQv KSB7Ci0rICAgIGRlZlskM10gPSAxCi0rICAgIHRsPSQzCi0rICAgIHN1YigvXi4qQC8sIiIsdGwp Ci0rICAgIHZlclskM10gPSB0bAotKyAgfSBlbHNlIHsKLSsgICAgc3ViKC9AQD9HQ0NfWzAtOS5d KiQvLCIiLCQzKQotKyAgICBkZWZbJDNdID0gMTsKLSsgIH0KLSsgIHNhd3N5bWJvbCA9IDE7Ci0r ICBuZXh0OwotK30KLSsKLStzdGF0ZSA9PSAibm0iIHsKLSsgIG5leHQ7Ci0rfQotKwotKyMgTm93 IHdlIHByb2Nlc3MgYSBzaW1wbGlmaWVkIHZhcmlhbnQgb2YgdGhlIFNvbGFyaXMgc3ltYm9sIHZl cnNpb24KLSsjIHNjcmlwdC4gIFdlIGhhdmUgb25lIHN5bWJvbCBwZXIgbGluZSwgbm8gc2VtaWNv bG9ucywgc2ltcGxlIG1hcmtlcnMKLSsjIGZvciBiZWdpbm5pbmcgYW5kIGVuZGluZyBlYWNoIHNl Y3Rpb24sIGFuZCAlaW5oZXJpdCBtYXJrZXJzIGZvcgotKyMgZGVzY3JpYmluZyB2ZXJzaW9uIGlu aGVyaXRlbmNlLiAgQSBzeW1ib2wgbWF5IGFwcGVhciBpbiBtb3JlIHRoYW4KLSsjIG9uZSBzeW1i b2wgdmVyc2lvbiwgYW5kIHRoZSBsYXN0IHNlZW4gdGFrZXMgZWZmZWN0LgotKwotK05GID09IDMg JiYgJDEgPT0gIiVpbmhlcml0IiB7Ci0rICBpbmhlcml0WyQyXSA9ICQzOwotKyAgbmV4dDsKLSt9 Ci0rCi0rTkYgPT0gMiAmJiAkMiA9PSAieyIgewotKyAgbGlic1skMV0gPSAxOwotKyAgdGhpc2xp YiA9ICQxOwotKyAgbmV4dDsKLSt9Ci0rCi0rJDEgPT0gIn0iIHsKLSsgIHRoaXNsaWIgPSAiIjsK LSsgIG5leHQ7Ci0rfQotKwotK3sKLSsgIHZlclskMV0gPSB0aGlzbGliOwotKyAgbmV4dDsKLSt9 Ci0rCi0rRU5EIHsKLSsgIGlmICghc2F3c3ltYm9sKQotKyAgICB7Ci0rICAgICAgcHJpbnQgIk5v IHN5bWJvbHMgc2VlbiAtLSBicm9rZW4gb3IgbWlzLWluc3RhbGxlZCBubT8iIHwgImNhdCAxPiYy IjsKLSsgICAgICBleGl0IDE7Ci0rICAgIH0KLSsgIGZvciAobCBpbiBsaWJzKQotKyAgICBvdXRw dXQobCk7Ci0rfQotKwotK2Z1bmN0aW9uIG91dHB1dChsaWIpIHsKLSsgIGlmIChkb25lW2xpYl0p Ci0rICAgIHJldHVybjsKLSsgIGRvbmVbbGliXSA9IDE7Ci0rICBpZiAoaW5oZXJpdFtsaWJdKQot KyAgICBvdXRwdXQoaW5oZXJpdFtsaWJdKTsKLSsKLSsgIGVtcHR5PTEKLSsgIGZvciAoc3ltIGlu IHZlcikKLSsgICAgaWYgKCh2ZXJbc3ltXSA9PSBsaWIpICYmIChzeW0gaW4gZGVmKSkKLSsgICAg ICB7Ci0rCWlmIChlbXB0eSkKLSsJICB7Ci0rCSAgICBwcmludGYoIiVzIHtcbiIsIGxpYik7Ci0r CSAgICBwcmludGYoIiAgZ2xvYmFsOlxuIik7Ci0rCSAgICBlbXB0eSA9IDA7Ci0rCSAgfQotKwlz eW1wID0gc3ltOwotKwlzdWIoL0BHQ0NfWzAtOS5dKiQvLCIiLHN5bXApOwotKwlwcmludGYoIlx0 JXM7XG4iLCBzeW1wKTsKLSsJaWYgKGRvdHN5bXMpCi0rCSAgcHJpbnRmKCJcdC4lcztcbiIsIHN5 bXApOwotKyAgICAgIH0KLSsKLSsgIGlmIChlbXB0eSkKLSsgICAgewotKyAgICAgIGZvciAobCBp biBsaWJzKQotKwlpZiAoaW5oZXJpdFtsXSA9PSBsaWIpCi0rCSAgaW5oZXJpdFtsXSA9IGluaGVy aXRbbGliXTsKLSsgICAgfQotKyAgZWxzZSBpZiAoaW5oZXJpdFtsaWJdKQotKyAgICBwcmludGYo In0gJXM7XG4iLCBpbmhlcml0W2xpYl0pOwotKyAgZWxzZQotKyAgICBwcmludGYgKCJcbiAgbG9j YWw6XG5cdCo7XG59O1xuIik7Ci0rfQotLS0tIGdjYy9jb25maWcvaWE2NC9saWJnY2MtaWE2NC1u by1saWJ1bndpbmQudmVyLmpqCTIwMDQtMDItMTggMTA6Mjc6MzYuMDAwMDAwMDAwIC0wNTAwCi0r KysgZ2NjL2NvbmZpZy9pYTY0L2xpYmdjYy1pYTY0LW5vLWxpYnVud2luZC52ZXIJMjAwNC0xMS0x NSAwOToxOTo1Ni4wMDAwMDAwMDAgLTA1MDAKLUBAIC0wLDAgKzEsMTcgQEAKLStHQ0NfMy40LjIg ewotKyAgX1Vud2luZF9HZXRHUgotKyAgX1Vud2luZF9SYWlzZUV4Y2VwdGlvbgotKyAgX1Vud2lu ZF9HZXRSZWdpb25TdGFydAotKyAgX1Vud2luZF9TZXRJUAotKyAgX1Vud2luZF9HZXRJUAotKyAg X1Vud2luZF9HZXRMYW5ndWFnZVNwZWNpZmljRGF0YQotKyAgX1Vud2luZF9SZXN1bWUKLSsgIF9V bndpbmRfRGVsZXRlRXhjZXB0aW9uCi0rICBfVW53aW5kX1NldEdSCi0rICBfVW53aW5kX0ZvcmNl ZFVud2luZAotKyAgX1Vud2luZF9CYWNrdHJhY2UKLSsgIF9VbndpbmRfRmluZEVuY2xvc2luZ0Z1 bmN0aW9uCi0rICBfVW53aW5kX0dldENGQQotKyAgX1Vud2luZF9SZXN1bWVfb3JfUmV0aHJvdwot KyAgX1Vud2luZF9HZXRCU1AKLSt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtaWNlLWhhY2sucGF0Y2gg Yi9nY2M0MS1pY2UtaGFjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBi NTM2Mi4uMDAwMDAwMAotLS0gYS9nY2M0MS1pY2UtaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDMxNiArMCwwIEBACi0yMDA0LTAxLTIzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0 LmNvbT4KLQotCSogc3lzdGVtLmggKElDRV9FWElUX0NPREUpOiBEZWZpbmUuCi0JKiBnY2MuYyAo ZXhlY3V0ZSk6IERvbid0IGZyZWUgZmlyc3Qgc3RyaW5nIGVhcmx5LCBidXQgYXQgdGhlIGVuZAot CW9mIHRoZSBmdW5jdGlvbi4gIENhbGwgcmV0cnlfaWNlIGlmIGNvbXBpbGVyIGV4aXRlZCB3aXRo Ci0JSUNFX0VYSVRfQ09ERS4KLQkocmV0cnlfaWNlKTogTmV3IGZ1bmN0aW9uLgotCSogZGlhZ25v c3RpYy5jIChkaWFnbm9zdGljX2NvdW50X2RpYWdub3N0aWMsCi0JZGlhZ25vc3RpY19hY3Rpb25f YWZ0ZXJfb3V0cHV0LCBlcnJvcl9yZWN1cnNpb24pOiBFeGl0IHdpdGgKLQlJQ0VfRVhJVF9DT0RF IGluc3RlYWQgb2YgRkFUQUxfRVhJVF9DT0RFLgotCi0tLS0gZ2NjL3N5c3RlbS5oLmpqCTIwMDQt MDEtMTkgMTc6Mjk6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2NjL3N5c3RlbS5oCTIwMDQtMDEt MjEgMTE6NTM6NDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMTUzLDYgKzE1MywxMCBAQCBleHRlcm4g aW50IGVycm5vOwotICMgZW5kaWYKLSAjZW5kaWYKLSAKLSsjaWZuZGVmIElDRV9FWElUX0NPREUK LSsjIGRlZmluZSBJQ0VfRVhJVF9DT0RFIDI3Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIEhBVkVfVU5J U1REX0gKLSAjIGluY2x1ZGUgPHVuaXN0ZC5oPgotICNlbmRpZgotLS0tIGdjYy9nY2MuYy5qagky MDA0LTAxLTIxIDExOjQ1OjIwLjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy9nY2MuYwkyMDA0LTAx LTIxIDExOjU2OjQ2LjAwMDAwMDAwMCArMDEwMAotQEAgLTM0Niw2ICszNDYsOSBAQCBzdGF0aWMg dm9pZCBpbml0X2djY19zcGVjcyAoc3RydWN0IG9ic3RhCi0gI2lmIGRlZmluZWQoSEFWRV9UQVJH RVRfT0JKRUNUX1NVRkZJWCkgfHwgZGVmaW5lZChIQVZFX1RBUkdFVF9FWEVDVVRBQkxFX1NVRkZJ WCkKLSBzdGF0aWMgY29uc3QgY2hhciAqY29udmVydF9maWxlbmFtZSAoY29uc3QgY2hhciAqLCBp bnQsIGludCk7Ci0gI2VuZGlmCi0rI2lmICEoZGVmaW5lZCAoX19NU0RPU19fKSB8fCBkZWZpbmVk IChPUzIpIHx8IGRlZmluZWQgKFZNUykpCi0rc3RhdGljIHZvaWQgcmV0cnlfaWNlIChjb25zdCBj aGFyICpwcm9nLCBjb25zdCBjaGFyICoqYXJndik7Ci0rI2VuZGlmCi0gCi0gc3RhdGljIGNvbnN0 IGNoYXIgKmlmX2V4aXN0c19zcGVjX2Z1bmN0aW9uIChpbnQsIGNvbnN0IGNoYXIgKiopOwotIHN0 YXRpYyBjb25zdCBjaGFyICppZl9leGlzdHNfZWxzZV9zcGVjX2Z1bmN0aW9uIChpbnQsIGNvbnN0 IGNoYXIgKiopOwotQEAgLTI4NDEsNyArMjg0NCw3IEBAIGV4ZWN1dGUgKHZvaWQpCi0gCSAgICB9 Ci0gCX0KLSAKLS0gICAgICBpZiAoc3RyaW5nICE9IGNvbW1hbmRzW2ldLnByb2cpCi0rICAgICAg aWYgKGkgJiYgc3RyaW5nICE9IGNvbW1hbmRzW2ldLnByb2cpCi0gCWZyZWUgKCh2b2lkICopIHN0 cmluZyk7Ci0gICAgIH0KLSAKLUBAIC0yODk3LDYgKzI5MDAsMTYgQEAgU2VlICVzIGZvciBpbnN0 cnVjdGlvbnMuIiwKLSAJZWxzZSBpZiAoV0lGRVhJVEVEIChzdGF0dXMpCi0gCQkgJiYgV0VYSVRT VEFUVVMgKHN0YXR1cykgPj0gTUlOX0ZBVEFMX1NUQVRVUykKLSAJICB7Ci0rI2lmICEoZGVmaW5l ZCAoX19NU0RPU19fKSB8fCBkZWZpbmVkIChPUzIpIHx8IGRlZmluZWQgKFZNUykpCi0rCSAgICAv KiBGb3IgSUNFcyBpbiBjYzEsIGNjMW9iaiwgY2MxcGx1cyBzZWUgaWYgaXQgaXMKLSsJICAgICAg IHJlcHJvZHVjaWJsZSBvciBub3QuICAqLwotKwkgICAgY2hhciAqcDsKLSsJICAgIGlmIChXRVhJ VFNUQVRVUyAoc3RhdHVzKSA9PSBJQ0VfRVhJVF9DT0RFCi0rCQkmJiBpID09IDAKLSsJCSYmIChw ID0gc3RycmNociAoY29tbWFuZHNbMF0uYXJndlswXSwgRElSX1NFUEFSQVRPUikpCi0rCQkmJiAh IHN0cm5jbXAgKHAgKyAxLCAiY2MxIiwgMykpCi0rCSAgICAgIHJldHJ5X2ljZSAoY29tbWFuZHNb MF0ucHJvZywgY29tbWFuZHNbMF0uYXJndik7Ci0rI2VuZGlmCi0gCSAgICBpZiAoV0VYSVRTVEFU VVMgKHN0YXR1cykgPiBncmVhdGVzdF9zdGF0dXMpCi0gCSAgICAgIGdyZWF0ZXN0X3N0YXR1cyA9 IFdFWElUU1RBVFVTIChzdGF0dXMpOwotIAkgICAgcmV0X2NvZGUgPSAtMTsKLUBAIC0yOTE3LDYg KzI5MzAsOSBAQCBTZWUgJXMgZm9yIGluc3RydWN0aW9ucy4iLAotIAkgIH0KLSAgICAgICB9Ci0g Ci0rICAgIGlmIChjb21tYW5kc1swXS5hcmd2WzBdICE9IGNvbW1hbmRzWzBdLnByb2cpCi0rICAg ICAgZnJlZSAoKFBUUikgY29tbWFuZHNbMF0uYXJndlswXSk7Ci0rCi0gICAgIHJldHVybiByZXRf Y29kZTsKLSAgIH0KLSB9Ci1AQCAtNTg5OCw2ICs1OTE0LDIyNCBAQCBnaXZlX3N3aXRjaCAoaW50 IHN3aXRjaG51bSwgaW50IG9taXRfZmlyCi0gICBzd2l0Y2hlc1tzd2l0Y2hudW1dLnZhbGlkYXRl ZCA9IDE7Ci0gfQotIAwKLSsjaWYgIShkZWZpbmVkIChfX01TRE9TX18pIHx8IGRlZmluZWQgKE9T MikgfHwgZGVmaW5lZCAoVk1TKSkKLSsjZGVmaW5lIFJFVFJZX0lDRV9BVFRFTVBUUyAyCi0rCi0r c3RhdGljIHZvaWQKLStyZXRyeV9pY2UgKGNvbnN0IGNoYXIgKnByb2csIGNvbnN0IGNoYXIgKiph cmd2KQotK3sKLSsgIGludCBuYXJncywgb3V0X2FyZyA9IC0xLCBxdWlldCA9IDAsIGF0dGVtcHQ7 Ci0rICBpbnQgcGlkLCByZXRyaWVzLCBzbGVlcF9pbnRlcnZhbDsKLSsgIGNvbnN0IGNoYXIgKipu ZXdfYXJndjsKLSsgIGNoYXIgKnRlbXBfZmlsZW5hbWVzW1JFVFJZX0lDRV9BVFRFTVBUUyAqIDIg KyAyXTsKLSsKLSsgIGlmIChpbnB1dF9maWxlbmFtZSA9PSBOVUxMIHx8ICEgc3RyY21wIChpbnB1 dF9maWxlbmFtZSwgIi0iKSkKLSsgICAgcmV0dXJuOwotKwotKyAgZm9yIChuYXJncyA9IDA7IGFy Z3ZbbmFyZ3NdICE9IE5VTEw7ICsrbmFyZ3MpCi0rICAgIC8qIE9ubHkgcmV0cnkgY29tcGlsZXIg SUNFcywgbm90IHByZXByb2Nlc3NvciBvbmVzLiAgKi8KLSsgICAgaWYgKCEgc3RyY21wIChhcmd2 W25hcmdzXSwgIi1FIikpCi0rICAgICAgcmV0dXJuOwotKyAgICBlbHNlIGlmIChhcmd2W25hcmdz XVswXSA9PSAnLScgJiYgYXJndltuYXJnc11bMV0gPT0gJ28nKQotKyAgICAgIHsKLSsJaWYgKG91 dF9hcmcgPT0gLTEpCi0rCSAgb3V0X2FyZyA9IG5hcmdzOwotKwllbHNlCi0rCSAgcmV0dXJuOwot KyAgICAgIH0KLSsgICAgLyogSWYgdGhlIGNvbXBpbGVyIGlzIGdvaW5nIHRvIG91dHB1dCBhbnkg dGltZSBpbmZvcm1hdGlvbiwKLSsgICAgICAgaXQgbWlnaHQgdmFycnkgYmV0d2VlbiBpbnZvY2F0 aW9ucy4gICovCi0rICAgIGVsc2UgaWYgKCEgc3RyY21wIChhcmd2W25hcmdzXSwgIi1xdWlldCIp KQotKyAgICAgIHF1aWV0ID0gMTsKLSsgICAgZWxzZSBpZiAoISBzdHJjbXAgKGFyZ3ZbbmFyZ3Nd LCAiLWZ0aW1lLXJlcG9ydCIpKQotKyAgICAgIHJldHVybjsKLSsKLSsgIGlmIChvdXRfYXJnID09 IC0xIHx8ICFxdWlldCkKLSsgICAgcmV0dXJuOwotKwotKyAgbWVtc2V0ICh0ZW1wX2ZpbGVuYW1l cywgJ1wwJywgc2l6ZW9mICh0ZW1wX2ZpbGVuYW1lcykpOwotKyAgbmV3X2FyZ3YgPSBhbGxvY2Eg KChuYXJncyArIDMpICogc2l6ZW9mIChjb25zdCBjaGFyICopKTsKLSsgIG1lbWNweSAobmV3X2Fy Z3YsIGFyZ3YsIChuYXJncyArIDEpICogc2l6ZW9mIChjb25zdCBjaGFyICopKTsKLSsgIG5ld19h cmd2W25hcmdzKytdID0gIi1mcmFuZG9tLXNlZWQ9MCI7Ci0rICBuZXdfYXJndltuYXJnc10gPSBO VUxMOwotKyAgaWYgKG5ld19hcmd2W291dF9hcmddWzJdID09ICdcMCcpCi0rICAgIG5ld19hcmd2 W291dF9hcmcgKyAxXSA9ICItIjsKLSsgIGVsc2UKLSsgICAgbmV3X2FyZ3Zbb3V0X2FyZ10gPSAi LW8tIjsKLSsKLSsgIGZvciAoYXR0ZW1wdCA9IDA7IGF0dGVtcHQgPCBSRVRSWV9JQ0VfQVRURU1Q VFMgKyAxOyArK2F0dGVtcHQpCi0rICAgIHsKLSsgICAgICBpbnQgZmQgPSAtMTsKLSsgICAgICBp bnQgc3RhdHVzOwotKwotKyAgICAgIHRlbXBfZmlsZW5hbWVzW2F0dGVtcHQgKiAyXSA9IG1ha2Vf dGVtcF9maWxlICgiLm91dCIpOwotKyAgICAgIHRlbXBfZmlsZW5hbWVzW2F0dGVtcHQgKiAyICsg MV0gPSBtYWtlX3RlbXBfZmlsZSAoIi5lcnIiKTsKLSsKLSsgICAgICBpZiAoYXR0ZW1wdCA9PSBS RVRSWV9JQ0VfQVRURU1QVFMpCi0rICAgICAgICB7Ci0rCSAgaW50IGk7Ci0rCSAgaW50IGZkMSwg ZmQyOwotKwkgIHN0cnVjdCBzdGF0IHN0MSwgc3QyOwotKwkgIHNpemVfdCBuLCBsZW47Ci0rCSAg Y2hhciAqYnVmOwotKwotKwkgIGJ1ZiA9IHhtYWxsb2MgKDgxOTIpOwotKwotKwkgIGZvciAoaSA9 IDA7IGkgPCAyOyArK2kpCi0rCSAgICB7Ci0rCSAgICAgIGZkMSA9IG9wZW4gKHRlbXBfZmlsZW5h bWVzW2ldLCBPX1JET05MWSk7Ci0rCSAgICAgIGZkMiA9IG9wZW4gKHRlbXBfZmlsZW5hbWVzWzIg KyBpXSwgT19SRE9OTFkpOwotKwotKwkgICAgICBpZiAoZmQxIDwgMCB8fCBmZDIgPCAwKQotKwkJ ewotKwkJICBpID0gLTE7Ci0rCQkgIGNsb3NlIChmZDEpOwotKwkJICBjbG9zZSAoZmQyKTsKLSsJ CSAgYnJlYWs7Ci0rCQl9Ci0rCi0rCSAgICAgIGlmIChmc3RhdCAoZmQxLCAmc3QxKSA8IDAgfHwg ZnN0YXQgKGZkMiwgJnN0MikgPCAwKQotKwkJewotKwkJICBpID0gLTE7Ci0rCQkgIGNsb3NlIChm ZDEpOwotKwkJICBjbG9zZSAoZmQyKTsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCi0rCSAgICAgIGlm IChzdDEuc3Rfc2l6ZSAhPSBzdDIuc3Rfc2l6ZSkKLSsJCXsKLSsJCSAgY2xvc2UgKGZkMSk7Ci0r CQkgIGNsb3NlIChmZDIpOwotKwkJICBicmVhazsKLSsJCX0KLSsKLSsJICAgICAgbGVuID0gMDsK LSsJICAgICAgZm9yIChuID0gc3QxLnN0X3NpemU7IG47IG4gLT0gbGVuKQotKwkJewotKwkJICBs ZW4gPSBuOwotKwkJICBpZiAobGVuID4gNDA5NikKLSsJCSAgICBsZW4gPSA0MDk2OwotKwotKwkJ ICBpZiAocmVhZCAoZmQxLCBidWYsIGxlbikgIT0gKGludCkgbGVuCi0rCQkgICAgICB8fCByZWFk IChmZDIsIGJ1ZiArIDQwOTYsIGxlbikgIT0gKGludCkgbGVuKQotKwkJICAgIHsKLSsJCSAgICAg IGkgPSAtMTsKLSsJCSAgICAgIGJyZWFrOwotKwkJICAgIH0KLSsKLSsJCSAgaWYgKG1lbWNtcCAo YnVmLCBidWYgKyA0MDk2LCBsZW4pICE9IDApCi0rCQkgICAgYnJlYWs7Ci0rCQl9Ci0rCi0rCSAg ICAgIGNsb3NlIChmZDEpOwotKwkgICAgICBjbG9zZSAoZmQyKTsKLSsKLSsJICAgICAgaWYgKG4p Ci0rCQlicmVhazsKLSsJICAgIH0KLSsKLSsJICBmcmVlIChidWYpOwotKwkgIGlmIChpID09IC0x KQotKwkgICAgYnJlYWs7Ci0rCi0rCSAgaWYgKGkgIT0gMikKLSsJICAgIHsKLSsJICAgICAgbm90 aWNlICgiVGhlIGJ1ZyBpcyBub3QgcmVwcm9kdWNpYmxlLCBzbyBpdCBpcyBsaWtlbHkgYSBoYXJk d2FyZSBvciBPUyBwcm9ibGVtLlxuIik7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwotKyAg ICAgICAgICBmZCA9IG9wZW4gKHRlbXBfZmlsZW5hbWVzW2F0dGVtcHQgKiAyXSwgT19SRFdSKTsK LSsJICBpZiAoZmQgPCAwKQotKwkgICAgYnJlYWs7Ci0rCSAgd3JpdGUgKGZkLCAiLy8iLCAyKTsK LSsJICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKLSsJICAgIHsKLSsJICAgICAgd3JpdGUg KGZkLCAiICIsIDEpOwotKwkgICAgICB3cml0ZSAoZmQsIG5ld19hcmd2W2ldLCBzdHJsZW4gKG5l d19hcmd2W2ldKSk7Ci0rCSAgICB9Ci0rCSAgd3JpdGUgKGZkLCAiXG4iLCAxKTsKLSsJICBuZXdf YXJndltuYXJnc10gPSAiLUUiOwotKwkgIG5ld19hcmd2W25hcmdzICsgMV0gPSBOVUxMOwotKyAg ICAgICAgfQotKwotKyAgICAgIC8qIEZvcmsgYSBzdWJwcm9jZXNzOyB3YWl0IGFuZCByZXRyeSBp ZiBpdCBmYWlscy4gICovCi0rICAgICAgc2xlZXBfaW50ZXJ2YWwgPSAxOwotKyAgICAgIHBpZCA9 IC0xOwotKyAgICAgIGZvciAocmV0cmllcyA9IDA7IHJldHJpZXMgPCA0OyByZXRyaWVzKyspCi0r CXsKLSsJICBwaWQgPSBmb3JrICgpOwotKwkgIGlmIChwaWQgPj0gMCkKLSsJICAgIGJyZWFrOwot KwkgIHNsZWVwIChzbGVlcF9pbnRlcnZhbCk7Ci0rCSAgc2xlZXBfaW50ZXJ2YWwgKj0gMjsKLSsJ fQotKwotKyAgICAgIGlmIChwaWQgPCAwKQotKwlicmVhazsKLSsgICAgICBlbHNlIGlmIChwaWQg PT0gMCkKLSsJewotKwkgIGlmIChhdHRlbXB0ICE9IFJFVFJZX0lDRV9BVFRFTVBUUykKLSsJICAg IGZkID0gb3BlbiAodGVtcF9maWxlbmFtZXNbYXR0ZW1wdCAqIDJdLCBPX1JEV1IpOwotKwkgIGlm IChmZCA8IDApCi0rCSAgICBleGl0ICgtMSk7Ci0rCSAgaWYgKGZkICE9IDEpCi0rCSAgICB7Ci0r CSAgICAgIGNsb3NlICgxKTsKLSsJICAgICAgZHVwIChmZCk7Ci0rCSAgICAgIGNsb3NlIChmZCk7 Ci0rCSAgICB9Ci0rCi0rCSAgZmQgPSBvcGVuICh0ZW1wX2ZpbGVuYW1lc1thdHRlbXB0ICogMiAr IDFdLCBPX1JEV1IpOwotKwkgIGlmIChmZCA8IDApCi0rCSAgICBleGl0ICgtMSk7Ci0rCSAgaWYg KGZkICE9IDIpCi0rCSAgICB7Ci0rCSAgICAgIGNsb3NlICgyKTsKLSsJICAgICAgZHVwIChmZCk7 Ci0rCSAgICAgIGNsb3NlIChmZCk7Ci0rCSAgICB9Ci0rCi0rCSAgaWYgKHByb2cgPT0gbmV3X2Fy Z3ZbMF0pCi0rCSAgICBleGVjdnAgKHByb2csIChjaGFyICpjb25zdCAqKSBuZXdfYXJndik7Ci0r CSAgZWxzZQotKwkgICAgZXhlY3YgKG5ld19hcmd2WzBdLCAoY2hhciAqY29uc3QgKikgbmV3X2Fy Z3YpOwotKwkgIGV4aXQgKC0xKTsKLSsJfQotKwotKyAgICAgIGlmICh3YWl0cGlkIChwaWQsICZz dGF0dXMsIDApIDwgMCkKLSsJYnJlYWs7Ci0rCi0rICAgICAgaWYgKGF0dGVtcHQgPCBSRVRSWV9J Q0VfQVRURU1QVFMKLSsJICAmJiAoISBXSUZFWElURUQgKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMg KHN0YXR1cykgIT0gSUNFX0VYSVRfQ09ERSkpCi0rCXsKLSsJICBub3RpY2UgKCJUaGUgYnVnIGlz IG5vdCByZXByb2R1Y2libGUsIHNvIGl0IGlzIGxpa2VseSBhIGhhcmR3YXJlIG9yIE9TIHByb2Js ZW0uXG4iKTsKLSsJICBicmVhazsKLSsJfQotKyAgICAgIGVsc2UgaWYgKGF0dGVtcHQgPT0gUkVU UllfSUNFX0FUVEVNUFRTKQotKwl7Ci0rCSAgY2xvc2UgKGZkKTsKLSsJICBpZiAoV0lGRVhJVEVE IChzdGF0dXMpCi0rCSAgICAgICYmIFdFWElUU1RBVFVTIChzdGF0dXMpID09IFNVQ0NFU1NfRVhJ VF9DT0RFKQotKwkgICAgewotKwkgICAgICBub3RpY2UgKCJQcmVwcm9jZXNzZWQgc291cmNlIHN0 b3JlZCBpbnRvICVzIGZpbGUsIHBsZWFzZSBhdHRhY2ggdGhpcyB0byB5b3VyIGJ1Z3JlcG9ydC5c biIsCi0rCQkgICAgICB0ZW1wX2ZpbGVuYW1lc1thdHRlbXB0ICogMl0pOwotKwkgICAgICAvKiBN YWtlIHN1cmUgaXQgaXMgbm90IGRlbGV0ZWQuICAqLwotKwkgICAgICBmcmVlICh0ZW1wX2ZpbGVu YW1lc1thdHRlbXB0ICogMl0pOwotKwkgICAgICB0ZW1wX2ZpbGVuYW1lc1thdHRlbXB0ICogMl0g PSBOVUxMOwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICBmb3Ig KGF0dGVtcHQgPSAwOyBhdHRlbXB0IDwgUkVUUllfSUNFX0FUVEVNUFRTICogMiArIDI7IGF0dGVt cHQrKykKLSsgICAgaWYgKHRlbXBfZmlsZW5hbWVzW2F0dGVtcHRdKQotKyAgICAgIHsKLSsJdW5s aW5rICh0ZW1wX2ZpbGVuYW1lc1thdHRlbXB0XSk7Ci0rCWZyZWUgKHRlbXBfZmlsZW5hbWVzW2F0 dGVtcHRdKTsKLSsgICAgICB9Ci0rfQotKyNlbmRpZgotKwwKLSAvKiBTZWFyY2ggZm9yIGEgZmls ZSBuYW1lZCBOQU1FIHRyeWluZyB2YXJpb3VzIHByZWZpeGVzIGluY2x1ZGluZyB0aGUKLSAgICB1 c2VyJ3MgLUIgcHJlZml4IGFuZCBzb21lIHN0YW5kYXJkIG9uZXMuCi0gICAgUmV0dXJuIHRoZSBh YnNvbHV0ZSBmaWxlIG5hbWUgZm91bmQuICBJZiBub3RoaW5nIGlzIGZvdW5kLCByZXR1cm4gTkFN RS4gICovCi0tLS0gZ2NjL2RpYWdub3N0aWMuYy5qagkyMDAzLTEwLTAxIDEyOjA5OjIxLjAwMDAw MDAwMCArMDIwMAotKysrIGdjYy9kaWFnbm9zdGljLmMJMjAwNC0wMS0yMSAxMTo1NDo0Ny4wMDAw MDAwMDAgKzAxMDAKLUBAIC0yMzcsMTQgKzIzNywxNCBAQCBkaWFnbm9zdGljX2FjdGlvbl9hZnRl cl9vdXRwdXQgKGRpYWdub3N0Ci0gICAgICAgZm5vdGljZSAoc3RkZXJyLCAiUGxlYXNlIHN1Ym1p dCBhIGZ1bGwgYnVnIHJlcG9ydCxcbiIKLSAJICAgICAgICJ3aXRoIHByZXByb2Nlc3NlZCBzb3Vy Y2UgaWYgYXBwcm9wcmlhdGUuXG4iCi0gCSAgICAgICAiU2VlICVzIGZvciBpbnN0cnVjdGlvbnMu XG4iLCBidWdfcmVwb3J0X3VybCk7Ci0tICAgICAgZXhpdCAoRkFUQUxfRVhJVF9DT0RFKTsKLSsg ICAgICBleGl0IChJQ0VfRVhJVF9DT0RFKTsKLSAKLSAgICAgY2FzZSBES19GQVRBTDoKLSAgICAg ICBpZiAoY29udGV4dC0+YWJvcnRfb25fZXJyb3IpCi0gCXJlYWxfYWJvcnQgKCk7Ci0gCi0gICAg ICAgZm5vdGljZSAoc3RkZXJyLCAiY29tcGlsYXRpb24gdGVybWluYXRlZC5cbiIpOwotLSAgICAg IGV4aXQgKEZBVEFMX0VYSVRfQ09ERSk7Ci0rICAgICAgZXhpdCAoSUNFX0VYSVRfQ09ERSk7Ci0g Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwoKZGlmZiAtLWdpdCBh L2djYzQxLWphdmEtYXJtMS5wYXRjaCBiL2djYzQxLWphdmEtYXJtMS5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ4NThlYi4uMDAwMDAwMAotLS0gYS9nY2M0MS1qYXZhLWFy bTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NTcgKzAsMCBAQAotMjAwNy0wNS0xOCAgQXVy ZWxpZW4gSmFybm8gIDxhdXJlbGllbkBhdXJlbDMyLm5ldD4KLQotCSogc3JjL2FybS9mZmkuYyAo ZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBSZW5hbWVkIGFuZCBhanVzdGVkCi0JZnJvbSAoZmZpX3By ZXBfY2xvc3VyZSk6IC4uLiB0aGlzLgotCShGRklfSU5JVF9UUkFNUE9MSU5FKTogQWRqdXN0Lgot Ci0yMDA1LTEyLTMxICBQaGlsIEJsdW5kZWxsICA8cGJAcmVjaXZhLmNvbT4KLQotCSogc3JjL2Fy bS9mZmkuYyAoZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWLCAKLSAgICAgICAgZmZpX2Nsb3N1 cmVfU1lTVl9pbm5lciwgZmZpX3ByZXBfY2xvc3VyZSk6IE5ldywgYWRkIGNsb3N1cmUgc3VwcG9y dC4KLQkqIHNyYy9hcm0vc3lzdi5TKGZmaV9jbG9zdXJlX1NZU1YpOiBMaWtld2lzZS4KLQkqIHNy Yy9hcm0vZmZpdGFyZ2V0LmggKEZGSV9UUkFNUE9MSU5FX1NJWkUpOiBMaWtld2lzZS4KLQkoRkZJ X0NMT1NVUkVTKTogRW5hYmxlIGNsb3N1cmUgc3VwcG9ydC4KLQotMjAwNy0wNy0wMyAgQW5kcmV3 IEhhbGV5ICA8YXBoQGhlZGdlcy5iaWxsZ2F0bGlmZi5jb20+Ci0KLSAgICAgICAgKiB0ZXN0c3Vp dGUvbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydC5jLAotICAgICAgICB0ZXN0c3VpdGUvbGli ZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLmNh bGwvbmVzdGVkX3N0cnVjdDEuYywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3Rl ZF9zdHJ1Y3QzLmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN18xX2J5dGUu YywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGUuYywKLSAgICAgICAg dGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19zaW50LmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJm ZmkuY2FsbC9jbHNfMjBieXRlMS5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xz X211bHRpX3NzaG9ydGNoYXIuYywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19h bGlnbl9zaW50NjQuYywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIu YywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19tdWx0aV9zY2hhci5jLAotICAg ICAgICB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX211bHRpX3VjaGFyLmMsCi0gICAgICAgIHRl c3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTlieXRlLmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJm ZmkuY2FsbC9jbHNfOWJ5dGUxLmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNf YWxpZ25fZmxvYXQuYywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm4x LmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9wcm9ibGVtMS5jLAotICAgICAgICB0 ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9mbjMuYywKLSAgICAgICAgdGVzdHN1aXRlL2xp YmZmaS5jYWxsL2Nsc19zc2hvcnQuYywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Ns b3N1cmVfZm41LmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91 YmxlLmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYywKLSAgICAg ICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYywKLSAgICAgICAgdGVzdHN1 aXRlL2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLmNh bGwvY2xzXzZieXRlLmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOGJ5dGUu YywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnQuYywKLSAg ICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYywKLSAgICAgICAg dGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYywKLSAgICAgICAgdGVzdHN1 aXRlL2xpYmZmaS5jYWxsL2Nsc19mbG9hdC5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLmNh bGwvY2xzXzIwYnl0ZS5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9i eXRlLmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jLAot ICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jLAotICAgICAgICB0ZXN0 c3VpdGUvbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZp LmNhbGwvY2xzX3VpbnQuYywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19tdWx0 aV91c2hvcnRjaGFyLmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfc2NoYXIu YywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc191Y2hhci5jLAotICAgICAgICB0 ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jLAotICAgICAgICB0ZXN0c3Vp dGUvbGliZmZpLmNhbGwvY2xzX3Vsb25nbG9uZy5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZp LmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5j YWxsL2Nsc18xXzFieXRlLmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTJi eXRlLmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jLAotICAg ICAgICB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jLAotICAgICAgICB0ZXN0c3Vp dGUvbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5j YWxsL2Nsc182XzFfYnl0ZS5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE2 Ynl0ZS5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jLAotICAg ICAgICB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9mbjAuYywKLSAgICAgICAgdGVzdHN1 aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5j YWxsL2Nsb3N1cmVfZm4yLmMsCi0gICAgICAgIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJl X2ZuNC5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3VzaG9ydC5jLAotICAg ICAgICB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9mbjYuYywKLSAgICAgICAgdGVzdHN1 aXRlL2xpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLmNh bGwvY2xzX2FsaWduX3BvaW50ZXIuYywKLSAgICAgICAgdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Ns c183Ynl0ZS5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQz Mi5jLAotICAgICAgICB0ZXN0c3VpdGUvbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdC5jYzogRW5h YmxlIGZvciBBUk0uCi0KLS0tLSBsaWJmZmkvc3JjL2FybS9mZml0YXJnZXQuaC5qagkyMDA3LTA5 LTA2IDE0OjA1OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS9zcmMvYXJtL2ZmaXRhcmdl dC5oCTIwMDctMDktMDYgMTQ6MDc6MzAuMDAwMDAwMDAwICswMjAwCi1AQCAtNDAsNyArNDAsOCBA QCB0eXBlZGVmIGVudW0gZmZpX2FiaSB7Ci0gCi0gLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgY2xv c3VyZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLSAKLS0j ZGVmaW5lIEZGSV9DTE9TVVJFUyAwCi0rI2RlZmluZSBGRklfQ0xPU1VSRVMgMQotKyNkZWZpbmUg RkZJX1RSQU1QT0xJTkVfU0laRSAyMAotICNkZWZpbmUgRkZJX05BVElWRV9SQVdfQVBJIDAKLSAK LSAjZW5kaWYKLS0tLSBsaWJmZmkvc3JjL2FybS9mZmkuYy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5 LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS9zcmMvYXJtL2ZmaS5jCTIwMDctMDktMDYgMTQ6 MDc6MzAuMDAwMDAwMDAwICswMjAwCi1AQCAtMTY4LDMgKzE2OCwxMjIgQEAgdm9pZCBmZmlfY2Fs bChmZmlfY2lmICpjaWYsIHZvaWQgKCpmbikoKQotICAgICAgIGJyZWFrOwotICAgICB9Ci0gfQot KwotKy8qKiBwcml2YXRlIG1lbWJlcnMgKiovCi0rCi0rc3RhdGljIHZvaWQgZmZpX3ByZXBfaW5j b21pbmdfYXJnc19TWVNWIChjaGFyICpzdGFjaywgdm9pZCAqKnJldCwKLSsJCQkJCSB2b2lkKiog YXJncywgZmZpX2NpZiogY2lmKTsKLSsKLSt2b2lkIGZmaV9jbG9zdXJlX1NZU1YgKGZmaV9jbG9z dXJlICopOwotKwotKy8qIFRoaXMgZnVuY3Rpb24gaXMganVtcGVkIHRvIGJ5IHRoZSB0cmFtcG9s aW5lICovCi0rCi0rdW5zaWduZWQgaW50Ci0rZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoY2xvc3Vy ZSwgcmVzcHAsIGFyZ3MpCi0rICAgICBmZmlfY2xvc3VyZSAqY2xvc3VyZTsKLSsgICAgIHZvaWQg KipyZXNwcDsKLSsgICAgIHZvaWQgKmFyZ3M7Ci0rewotKyAgLy8gb3VyIHZhcmlvdXMgdGhpbmdz Li4uCi0rICBmZmlfY2lmICAgICAgICpjaWY7Ci0rICB2b2lkICAgICAgICAgKiphcmdfYXJlYTsK LSsKLSsgIGNpZiAgICAgICAgID0gY2xvc3VyZS0+Y2lmOwotKyAgYXJnX2FyZWEgICAgPSAodm9p ZCoqKSBhbGxvY2EgKGNpZi0+bmFyZ3MgKiBzaXplb2YgKHZvaWQqKSk7ICAKLSsKLSsgIC8qIHRo aXMgY2FsbCB3aWxsIGluaXRpYWxpemUgQVJHX0FSRUEsIHN1Y2ggdGhhdCBlYWNoCi0rICAgKiBl bGVtZW50IGluIHRoYXQgYXJyYXkgcG9pbnRzIHRvIHRoZSBjb3JyZXNwb25kaW5nIAotKyAgICog dmFsdWUgb24gdGhlIHN0YWNrOyBhbmQgaWYgdGhlIGZ1bmN0aW9uIHJldHVybnMKLSsgICAqIGEg c3RydWN0dXJlLCBpdCB3aWxsIHJlLXNldCBSRVNQIHRvIHBvaW50IHRvIHRoZQotKyAgICogc3Ry dWN0dXJlIHJldHVybiBhZGRyZXNzLiAgKi8KLSsKLSsgIGZmaV9wcmVwX2luY29taW5nX2FyZ3Nf U1lTVihhcmdzLCByZXNwcCwgYXJnX2FyZWEsIGNpZik7Ci0rCi0rICAoY2xvc3VyZS0+ZnVuKSAo Y2lmLCAqcmVzcHAsIGFyZ19hcmVhLCBjbG9zdXJlLT51c2VyX2RhdGEpOwotKwotKyAgcmV0dXJu IGNpZi0+ZmxhZ3M7Ci0rfQotKwotKy8qQC1leHBvcnRoZWFkZXJAKi8KLStzdGF0aWMgdm9pZCAK LStmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoY2hhciAqc3RhY2ssIHZvaWQgKipydmFsdWUs Ci0rCQkJICAgIHZvaWQgKiphdmFsdWUsIGZmaV9jaWYgKmNpZikKLSsvKkA9ZXhwb3J0aGVhZGVy QCovCi0rewotKyAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGk7Ci0rICByZWdpc3RlciB2b2lkICoq cF9hcmd2OwotKyAgcmVnaXN0ZXIgY2hhciAqYXJncDsKLSsgIHJlZ2lzdGVyIGZmaV90eXBlICoq cF9hcmc7Ci0rCi0rICBhcmdwID0gc3RhY2s7Ci0rCi0rICBpZiAoIGNpZi0+ZmxhZ3MgPT0gRkZJ X1RZUEVfU1RSVUNUICkgewotKyAgICAqcnZhbHVlID0gKih2b2lkICoqKSBhcmdwOwotKyAgICBh cmdwICs9IDQ7Ci0rICB9Ci0rCi0rICBwX2FyZ3YgPSBhdmFsdWU7Ci0rCi0rICBmb3IgKGkgPSBj aWYtPm5hcmdzLCBwX2FyZyA9IGNpZi0+YXJnX3R5cGVzOyAoaSAhPSAwKTsgaS0tLCBwX2FyZysr KQotKyAgICB7Ci0rICAgICAgc2l6ZV90IHo7Ci0rCi0rICAgICAgLyogQWxpZ24gaWYgbmVjZXNz YXJ5ICovCi0rICAgICAgaWYgKChzaXplb2YoaW50KSAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7 Ci0rCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCBzaXplb2YoaW50KSk7Ci0rICAgICAgfQot KwotKyAgICAgIHogPSAoKnBfYXJnKS0+c2l6ZTsKLSsKLSsgICAgICAvKiBiZWNhdXNlIHdlJ3Jl IGxpdHRsZSBlbmRpYW4sIHRoaXMgaXMgd2hhdCBpdCB0dXJucyBpbnRvLiAgICovCi0rCi0rICAg ICAgKnBfYXJndiA9ICh2b2lkKikgYXJncDsKLSsKLSsgICAgICBwX2FyZ3YrKzsKLSsgICAgICBh cmdwICs9IHo7Ci0rICAgIH0KLSsgIAotKyAgcmV0dXJuOwotK30KLSsKLSsvKiBIb3cgdG8gbWFr ZSBhIHRyYW1wb2xpbmUuICAqLwotKwotKyNkZWZpbmUgRkZJX0lOSVRfVFJBTVBPTElORShUUkFN UCxGVU4sQ1RYKSBcCi0rKHsgdW5zaWduZWQgY2hhciAqX190cmFtcCA9ICh1bnNpZ25lZCBjaGFy KikoVFJBTVApOyBcCi0rICAgdW5zaWduZWQgaW50ICBfX2Z1biA9ICh1bnNpZ25lZCBpbnQpKEZV Tik7IFwKLSsgICB1bnNpZ25lZCBpbnQgIF9fY3R4ID0gKHVuc2lnbmVkIGludCkoQ1RYKTsgXAot KyAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbMF0gPSAweGU5MmQwMDBmOyAvKiBzdG1mZCBz cCEsIHtyMC1yM30gKi8JXAotKyAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbNF0gPSAweGU1 OWYwMDAwOyAvKiBsZHIgcjAsIFtwY10gKi8gXAotKyAgICoodW5zaWduZWQgaW50KikgJl9fdHJh bXBbOF0gPSAweGU1OWZmMDAwOyAvKiBsZHIgcGMsIFtwY10gKi8gXAotKyAgICoodW5zaWduZWQg aW50KikgJl9fdHJhbXBbMTJdID0gX19jdHg7IFwKLSsgICAqKHVuc2lnbmVkIGludCopICZfX3Ry YW1wWzE2XSA9IF9fZnVuOyBcCi0rICAgcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfYmVnIF9fYXNt ICgiYTEiKSA9ICh1bnNpZ25lZCBsb25nKSAoJl9fdHJhbXBbMF0pOwlcCi0rICAgcmVnaXN0ZXIg dW5zaWduZWQgbG9uZyBfZW5kIF9fYXNtICgiYTIiKSA9ICh1bnNpZ25lZCBsb25nKSAoJl9fdHJh bXBbMTldKTsJXAotKyAgIHJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX2ZsZyBfX2FzbSAoImEzIikg PSAwOwkJCVwKLSsgICBfX2FzbSBfX3ZvbGF0aWxlICgic3dpIDB4OWYwMDAyCQlAIHN5c19jYWNo ZWZsdXNoIglcCi0rCSAgIAkJICAgIDogIj1yIiAoX2JlZykJCQkJXAotKwkgICAJCSAgICA6ICIw IiAoX2JlZyksICJyIiAoX2VuZCksICJyIiAoX2ZsZykpOwlcCi0rIH0pCi0rCi0rCi0rLyogdGhl IGNpZiBtdXN0IGFscmVhZHkgYmUgcHJlcCdlZCAqLwotKwotK2ZmaV9zdGF0dXMKLStmZmlfcHJl cF9jbG9zdXJlX2xvYyAoZmZpX2Nsb3N1cmUqIGNsb3N1cmUsCi0rCQkgICAgICBmZmlfY2lmKiBj aWYsCi0rCQkgICAgICB2b2lkICgqZnVuKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopLAot KwkJICAgICAgdm9pZCAqdXNlcl9kYXRhLAotKwkJICAgICAgdm9pZCAqY29kZWxvYykKLSt7Ci0r ICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfU1lTVik7Ci0rCi0rICBGRklfSU5JVF9UUkFN UE9MSU5FICgmY2xvc3VyZS0+dHJhbXBbMF0sIFwKLSsJCSAgICAgICAmZmZpX2Nsb3N1cmVfU1lT ViwgIFwKLSsJCSAgICAgICBjb2RlbG9jKTsKLSsgICAgCi0rICBjbG9zdXJlLT5jaWYgID0gY2lm OwotKyAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwotKyAgY2xvc3VyZS0+ZnVuICA9 IGZ1bjsKLSsKLSsgIHJldHVybiBGRklfT0s7Ci0rfQotLS0tIGxpYmZmaS9zcmMvYXJtL3N5c3Yu Uy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS9zcmMv YXJtL3N5c3YuUwkyMDA3LTA5LTA2IDE0OjA4OjI2LjAwMDAwMDAwMCArMDIwMAotQEAgLTIwNyw2 ICsyMDcsNTQgQEAgTFNZTShMZXBpbG9ndWUpOgotIC5mZmlfY2FsbF9TWVNWX2VuZDoKLSAgICAg ICAgIC5zaXplICAgIENOQU1FKGZmaV9jYWxsX1NZU1YpLC5mZmlfY2FsbF9TWVNWX2VuZC1DTkFN RShmZmlfY2FsbF9TWVNWKQotIAotKy8qCi0rCXVuc2lnbmVkIGludCBGRklfSElEREVOCi0rCWZm aV9jbG9zdXJlX1NZU1ZfaW5uZXIgKGNsb3N1cmUsIHJlc3BwLCBhcmdzKQotKwkgICAgIGZmaV9j bG9zdXJlICpjbG9zdXJlOwotKwkgICAgIHZvaWQgKipyZXNwcDsKLSsgIAkgICAgIHZvaWQgKmFy Z3M7Ci0rKi8KLSsKLStBUk1fRlVOQ19TVEFSVCBmZmlfY2xvc3VyZV9TWVNWCi0rCWFkZAlpcCwg c3AsICMxNgotKwlzdG1mZAlzcCEsIHtpcCwgbHJ9Ci0rCWFkZAlyMiwgc3AsICM4Ci0rCXN1Yglz cCwgc3AsICMxNgotKwlzdHIJc3AsIFtzcCwgIzhdCi0rCWFkZAlyMSwgc3AsICM4Ci0rCWJsCWZm aV9jbG9zdXJlX1NZU1ZfaW5uZXIKLSsJY21wCXIwLCAjRkZJX1RZUEVfSU5UCi0rCWJlcQkuTHJl dGludAotKwljbXAJcjAsICNGRklfVFlQRV9GTE9BVAotKwliZXEJLkxyZXRmbG9hdAotKwljbXAJ cjAsICNGRklfVFlQRV9ET1VCTEUKLSsJYmVxCS5McmV0ZG91YmxlCi0rCWNtcAlyMCwgI0ZGSV9U WVBFX0xPTkdET1VCTEUKLSsJYmVxCS5McmV0bG9uZ2RvdWJsZQotKwljbXAJcjAsICNGRklfVFlQ RV9TSU5UNjQKLSsJYmVxCS5McmV0bG9uZ2xvbmcKLSsuTGNsb3N1cmVfZXBpbG9ndWU6Ci0rCWFk ZAlzcCwgc3AsICMxNgotKwlsZG1mZAlzcCwge3NwLCBwY30KLSsuTHJldGludDoKLSsJbGRyCXIw LCBbc3BdCi0rCWIJLkxjbG9zdXJlX2VwaWxvZ3VlCi0rLkxyZXRsb25nbG9uZzoKLSsJbGRyCXIw LCBbc3BdCi0rCWxkcglyMSwgW3NwLCAjNF0KLSsJYgkuTGNsb3N1cmVfZXBpbG9ndWUKLSsuTHJl dGZsb2F0OgotKwlsZGZzCWYwLCBbc3BdCi0rCWIJLkxjbG9zdXJlX2VwaWxvZ3VlCi0rLkxyZXRk b3VibGU6Ci0rCWxkZmQJZjAsIFtzcF0KLSsJYgkuTGNsb3N1cmVfZXBpbG9ndWUKLSsuTHJldGxv bmdkb3VibGU6Ci0rCWxkZmQJZjAsIFtzcF0KLSsJYgkuTGNsb3N1cmVfZXBpbG9ndWUKLSsuZmZp X2Nsb3N1cmVfU1lTVl9lbmQ6Ci0rICAgICAgICAuc2l6ZSAgICBDTkFNRShmZmlfY2xvc3VyZV9T WVNWKSwuZmZpX2Nsb3N1cmVfU1lTVl9lbmQtQ05BTUUoZmZpX2Nsb3N1cmVfU1lTVikKLSsKLSAj aWYgZGVmaW5lZCBfX0VMRl9fICYmIGRlZmluZWQgX19saW51eF9fCi0gCS5zZWN0aW9uCS5ub3Rl LkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLSAjZW5kaWYKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xp YmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnQuYy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5LjAwMDAw MDAwMCArMDIwMAotKysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX211bHRpX3Vz aG9ydC5jCTIwMDctMDktMDYgMTQ6MDc6MzAuMDAwMDAwMDAwICswMjAwCi1AQCAtNCw3ICs0LDcg QEAKLSAgICBQUjoJCVBSMTMyMjEuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0QGdjYy5nbnUu b3JnPiAyMDAzMTEyOSAgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0q IGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKy8qIHsgZGctZG8g cnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIKLSAK LSB1bnNpZ25lZCBzaG9ydCB0ZXN0X2Z1bmNfZm4odW5zaWduZWQgc2hvcnQgYTEsIHVuc2lnbmVk IHNob3J0IGEyKQotLS0tIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3Vp bnQxNi5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZp L3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMJMjAwNy0wOS0wNiAxNDow NzozMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC00LDcgKzQsNyBAQAotICAgIFBSOgkJbm9uZS4KLSAg ICBPcmlnaW5hdG9yOgk8aG9zQHRhbWFuZWdpLm9yZz4gMjAwMzEyMDMJICovCi0gCi0tLyogeyBk Zy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2Nh bGUqLSotKiB9IH0gKi8KLSsvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAq LwotICNpbmNsdWRlICJmZml0ZXN0LmgiCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgY2xzX3N0cnVjdF9h bGlnbiB7Ci0tLS0gbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5j LmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3Rz dWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jCTIwMDctMDktMDYgMTQ6MDc6MzAuMDAw MDAwMDAwICswMjAwCi1AQCAtNSw3ICs1LDcgQEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2lu YXRvcjoJPGFuZHJlYXN0QGdjYy5nbnUub3JnPiAyMDAzMDgyOAkgKi8KLSAKLS0vKiB7IGRnLWRv IHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSot Ki0qIH0gfSAqLwotKy8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0g I2luY2x1ZGUgImZmaXRlc3QuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0 ZTEgewotLS0tIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYy5q agkyMDA3LTA5LTA2IDE0OjA1OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS90ZXN0c3Vp dGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYwkyMDA3LTA5LTA2IDE0OjA3OjMwLjAwMDAw MDAwMCArMDIwMAotQEAgLTYsNyArNiw3IEBACi0gICAgUFI6CQlub25lLgotICAgIE9yaWdpbmF0 b3I6CTxhbmRyZWFzdEBnY2MuZ251Lm9yZz4gMjAwMzA5MTEJICovCi0gCi0tLyogeyBkZy1kbyBy dW4geyB4ZmFpbCBtaXBzNjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSot KiB9IH0gKi8KLSsvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAqLwotICNp bmNsdWRlICJmZml0ZXN0LmgiCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgQSB7Ci0tLS0gbGliZmZpL3Rl c3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5 LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdf MV9ieXRlLmMJMjAwNy0wOS0wNiAxNDowNzozMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC01LDcgKzUs NyBAQAotICAgIFBSOgkJbm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5v cmc+IDIwMDUwNzA4CSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSog YXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBy dW4geyB4ZmFpbCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAot IHR5cGVkZWYgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgewotLS0tIGxpYmZmaS90ZXN0c3VpdGUv bGliZmZpLmNhbGwvY2xzX2RvdWJsZS5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAwMDAw ICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlLmMJMjAw Ny0wOS0wNiAxNDowNzozMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC00LDcgKzQsNyBAQAotICAgIFBS OgkJbm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIwMDMwODI4 CSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ry b25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFpbCBt aXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHN0YXRpYyB2b2lk IGNsc19yZXRfZG91YmxlX2ZuKGZmaV9jaWYqIGNpZiBfX1VOVVNFRF9fLCB2b2lkKiByZXNwLCB2 b2lkKiogYXJncywKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19zaW50LmMu amoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1 aXRlL2xpYmZmaS5jYWxsL2Nsc19zaW50LmMJMjAwNy0wOS0wNiAxNDowNzozMy4wMDAwMDAwMDAg KzAyMDAKLUBAIC00LDcgKzQsNyBAQAotICAgIFBSOgkJbm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8 YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIwMDMxMTA4CSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsg eGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9 ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVk ZSAiZmZpdGVzdC5oIgotIAotIHN0YXRpYyB2b2lkIGNsc19yZXRfc2ludF9mbihmZmlfY2lmKiBj aWYgX19VTlVTRURfXywgdm9pZCogcmVzcCwgdm9pZCoqIGFyZ3MsCi0tLS0gbGliZmZpL3Rlc3Rz dWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAw MDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRl MS5jCTIwMDctMDktMDYgMTQ6MDc6MzQuMDAwMDAwMDAwICswMjAwCi1AQCAtNSw3ICs1LDkgQEAK LSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0QGdjYy5nbnUub3JnPiAy MDAzMDgyOAkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSot Ki0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKwotKwotKy8qIHsgZGctZG8g cnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIKLSAK LSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSB7Ci0tLS0gbGliZmZpL3Rlc3RzdWl0 ZS9saWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0Y2hhci5jLmpqCTIwMDctMDktMDYgMTQ6MDU6 MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNf bXVsdGlfc3Nob3J0Y2hhci5jCTIwMDctMDktMDYgMTQ6MDc6MzQuMDAwMDAwMDAwICswMjAwCi1A QCAtNCw3ICs0LDcgQEAKLSAgICBQUjoJCVBSMTMyMjEuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJl YXN0QGdjYy5nbnUub3JnPiAyMDAzMTEyOSAgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWls IG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwot Ky8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZm aXRlc3QuaCIKLSAKLSBzaWduZWQgc2hvcnQgdGVzdF9mdW5jX2ZuKHNpZ25lZCBjaGFyIGExLCBz aWduZWQgc2hvcnQgYTIsCi0tLS0gbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxp Z25fc2ludDY0LmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBs aWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYwkyMDA3LTA5LTA2 IDE0OjA3OjM0LjAwMDAwMDAwMCArMDIwMAotQEAgLTQsNyArNCw3IEBACi0gICAgUFI6CQlub25l LgotICAgIE9yaWdpbmF0b3I6CTxob3NAdGFtYW5lZ2kub3JnPiAyMDAzMTIwMwkgKi8KLSAKLS0v KiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0q IHhzY2FsZSotKi0qIH0gfSAqLwotKy8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSog fSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBjbHNfc3Ry dWN0X2FsaWduIHsKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIu Yy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS90ZXN0 c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jCTIwMDctMDktMDYgMTQ6MDc6MzQuMDAwMDAw MDAwICswMjAwCi1AQCAtNiw3ICs2LDcgQEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRv cjoJPGFuZHJlYXN0QGdjYy5nbnUub3JnPiAyMDAzMDgyOAkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1 biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0q IH0gfSAqLwotKy8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2lu Y2x1ZGUgImZmaXRlc3QuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEg ewotLS0tIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX211bHRpX3NjaGFyLmMuamoJ MjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRl L2xpYmZmaS5jYWxsL2Nsc19tdWx0aV9zY2hhci5jCTIwMDctMDktMDYgMTQ6MDc6MzQuMDAwMDAw MDAwICswMjAwCi1AQCAtNCw3ICs0LDcgQEAKLSAgICBQUjoJCVBSMTMyMjEuCi0gICAgT3JpZ2lu YXRvcjoJPGhvc0B0YW1hbmVnaS5vcmc+IDIwMDMxMTI5ICAqLwotIAotLS8qIHsgZGctZG8gcnVu IHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSog fSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5j bHVkZSAiZmZpdGVzdC5oIgotIAotIHNpZ25lZCBjaGFyIHRlc3RfZnVuY19mbihzaWduZWQgY2hh ciBhMSwgc2lnbmVkIGNoYXIgYTIpCi0tLS0gbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9j bHNfbXVsdGlfdWNoYXIuYy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5LjAwMDAwMDAwMCArMDIwMAot KysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX211bHRpX3VjaGFyLmMJMjAwNy0w OS0wNiAxNDowNzozNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC00LDcgKzQsNyBAQAotICAgIFBSOgkJ UFIxMzIyMS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIwMDMxMTI5 ICAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ry b25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFpbCBt aXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHVuc2lnbmVkIGNo YXIgdGVzdF9mdW5jX2ZuKHVuc2lnbmVkIGNoYXIgYTEsIHVuc2lnbmVkIGNoYXIgYTIsCi0tLS0g bGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTlieXRlLmMuamoJMjAwNy0wOS0wNiAx NDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxs L2Nsc18xOWJ5dGUuYwkyMDA3LTA5LTA2IDE0OjA3OjM0LjAwMDAwMDAwMCArMDIwMAotQEAgLTUs NyArNSw3IEBACi0gICAgUFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6CTxhbmRyZWFzdEBnY2Mu Z251Lm9yZz4gMjAwMzA5MTUJICovCi0gCi0tLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQq LSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8KLSsvKiB7IGRn LWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAqLwotICNpbmNsdWRlICJmZml0ZXN0Lmgi Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgY2xzX3N0cnVjdF8xOWJ5dGUgewotLS0tIGxpYmZmaS90ZXN0 c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAw MDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUx LmMJMjAwNy0wOS0wNiAxNDowNzozNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC03LDcgKzcsNyBAQAot ICAgIFBSOgkJbm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIw MDMwOTE0CSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0q LSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4 ZmFpbCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHR5cGVk ZWYgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgewotLS0tIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZp LmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5j CTIwMDctMDktMDYgMTQ6MDc6MzQuMDAwMDAwMDAwICswMjAwCi1AQCAtNCw3ICs0LDcgQEAKLSAg ICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJPGhvc0B0YW1hbmVnaS5vcmc+IDIwMDMxMjAz CSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ry b25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFpbCBt aXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHR5cGVkZWYgc3Ry dWN0IGNsc19zdHJ1Y3RfYWxpZ24gewotLS0tIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwv Y2xvc3VyZV9mbjEuYy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5LjAwMDAwMDAwMCArMDIwMAotKysr IGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9mbjEuYwkyMDA3LTA5LTA2IDE0 OjA3OjM0LjAwMDAwMDAwMCArMDIwMAotQEAgLTYsNyArNiw3IEBACi0gICAgUFI6CQlub25lLgot ICAgIE9yaWdpbmF0b3I6CTxhbmRyZWFzdEBnY2MuZ251Lm9yZz4gMjAwMzA4MjgJICovCi0gCi0t LyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSot KiB4c2NhbGUqLSotKiB9IH0gKi8KLSsvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0q IH0gfSAqLwotICNpbmNsdWRlICJmZml0ZXN0LmgiCi0gCi0gCi0tLS0gbGliZmZpL3Rlc3RzdWl0 ZS9saWJmZmkuY2FsbC9wcm9ibGVtMS5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAwMDAw ICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9wcm9ibGVtMS5jCTIwMDct MDktMDYgMTQ6MDc6MzQuMDAwMDAwMDAwICswMjAwCi1AQCAtNCw3ICs0LDcgQEAKLSAgICBQUjoJ CW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0QGdjYy5nbnUub3JnPiAyMDAzMDgyOAkg Ki8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9u Z2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKy8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlw czY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIKLSAKLSB0eXBlZGVmIHN0cnVj dCBteV9mZmlfc3RydWN0IHsKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1 cmVfZm4zLmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJm ZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm4zLmMJMjAwNy0wOS0wNiAxNDowNzoz NC4wMDAwMDAwMDAgKzAyMDAKLUBAIC02LDcgKzYsNyBAQAotICAgIFBSOgkJbm9uZS4KLSAgICBP cmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIwMDMwODI4CSAqLwotIAotLS8qIHsg ZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNj YWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiB9IH0g Ki8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHN0YXRpYyB2b2lkIGNsb3N1cmVfdGVzdF9m bjMoZmZpX2NpZiogY2lmIF9fVU5VU0VEX18sIHZvaWQqIHJlc3AsIHZvaWQqKiBhcmdzLAotLS0t IGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3NzaG9ydC5jLmpqCTIwMDctMDktMDYg MTQ6MDU6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2Fs bC9jbHNfc3Nob3J0LmMJMjAwNy0wOS0wNiAxNDowNzozNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC00 LDcgKzQsNyBAQAotICAgIFBSOgkJbm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2Nj LmdudS5vcmc+IDIwMDMxMTA4CSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0 Ki0qLSogYXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBk Zy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5o IgotIAotIHN0YXRpYyB2b2lkIGNsc19yZXRfc3Nob3J0X2ZuKGZmaV9jaWYqIGNpZiBfX1VOVVNF RF9fLCB2b2lkKiByZXNwLCB2b2lkKiogYXJncywKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZm aS5jYWxsL2Nsb3N1cmVfZm41LmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm41LmMJMjAwNy0w OS0wNiAxNDowNzozNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC02LDcgKzYsNyBAQAotICAgIFBSOgkJ bm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIwMDMxMDI2CSAq LwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ryb25n YXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBz NjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHN0YXRpYyB2b2lkCi0t LS0gbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMuamoJMjAw Ny0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xp YmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYwkyMDA3LTA5LTA2IDE0OjA3OjM0LjAwMDAwMDAw MCArMDIwMAotQEAgLTQsNyArNCw5IEBACi0gICAgUFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6 CTxob3NAdGFtYW5lZ2kub3JnPiAyMDAzMTIwMwkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhm YWlsIG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAq LwotKwotKwotKy8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2lu Y2x1ZGUgImZmaXRlc3QuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHsK LS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jLmpqCTIwMDctMDkt MDYgMTQ6MDU6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmku Y2FsbC9jbHNfMmJ5dGUuYwkyMDA3LTA5LTA2IDE0OjA3OjM0LjAwMDAwMDAwMCArMDIwMAotQEAg LTYsNyArNiw3IEBACi0gICAgUFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6CTxhbmRyZWFzdEBn Y2MuZ251Lm9yZz4gMjAwMzA4MjgJICovCi0gCi0tLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBz NjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8KLSsvKiB7 IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAqLwotICNpbmNsdWRlICJmZml0ZXN0 LmgiCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgY2xzX3N0cnVjdF8yYnl0ZSB7Ci0tLS0gbGliZmZpL3Rl c3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMuamoJMjAwNy0wOS0wNiAxNDowNTow OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3Rl ZF9zdHJ1Y3QuYwkyMDA3LTA5LTA2IDE0OjA3OjM0LjAwMDAwMDAwMCArMDIwMAotQEAgLTUsNyAr NSw3IEBACi0gICAgUFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6CTxhbmRyZWFzdEBnY2MuZ251 Lm9yZz4gMjAwMzA4MjgJICovCi0gCi0tLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSot KiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8KLSsvKiB7IGRnLWRv IHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAqLwotICNpbmNsdWRlICJmZml0ZXN0LmgiCi0g Ci0gdHlwZWRlZiBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUxIHsKLS0tLSBsaWJmZmkvdGVzdHN1 aXRlL2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAw MDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNGJ5dGUuYwky MDA3LTA5LTA2IDE0OjA3OjM1LjAwMDAwMDAwMCArMDIwMAotQEAgLTUsNyArNSw3IEBACi0gICAg UFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6CTxhbmRyZWFzdEBnY2MuZ251Lm9yZz4gMjAwMzA4 MjgJICovCi0gCi0tLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiBhcm0qLSotKiBz dHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8KLSsvKiB7IGRnLWRvIHJ1biB7IHhmYWls IG1pcHM2NCotKi0qIH0gfSAqLwotIAotICNpbmNsdWRlICJmZml0ZXN0LmgiCi0gCi0tLS0gbGli ZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYy5qagkyMDA3LTA5LTA2IDE0OjA1 OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xz XzZieXRlLmMJMjAwNy0wOS0wNiAxNDowNzozNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC01LDcgKzUs OCBAQAotICAgIFBSOgkJbm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5v cmc+IDIwMDMwODI4CSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSog YXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rCi0rLyogeyBkZy1k byBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgot IAotIHR5cGVkZWYgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgewotLS0tIGxpYmZmaS90ZXN0c3Vp dGUvbGliZmZpLmNhbGwvY2xzXzhieXRlLmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jCTIw MDctMDktMDYgMTQ6MDc6MzUuMDAwMDAwMDAwICswMjAwCi1AQCAtNSw3ICs1LDcgQEAKLSAgICBQ UjoJCW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0QGdjYy5nbnUub3JnPiAyMDAzMDgy OAkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSotKi0qIHN0 cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKy8qIHsgZGctZG8gcnVuIHsgeGZhaWwg bWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIKLSAKLSB0eXBlZGVmIHN0 cnVjdCBjbHNfc3RydWN0XzhieXRlIHsKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxs L2Nsc19tdWx0aV9zc2hvcnQuYy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5LjAwMDAwMDAwMCArMDIw MAotKysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydC5jCTIw MDctMDktMDYgMTQ6MDc6MzUuMDAwMDAwMDAwICswMjAwCi1AQCAtNCw3ICs0LDcgQEAKLSAgICBQ UjoJCVBSMTMyMjEuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0QGdjYy5nbnUub3JnPiAyMDAz MTEyOSAgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSotKi0q IHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKy8qIHsgZGctZG8gcnVuIHsgeGZh aWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIKLSAKLSBzaWduZWQg c2hvcnQgdGVzdF9mdW5jX2ZuKHNpZ25lZCBzaG9ydCBhMSwgc2lnbmVkIHNob3J0IGEyKQotLS0t IGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jLmpqCTIwMDct MDktMDYgMTQ6MDU6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJm ZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMJMjAwNy0wOS0wNiAxNDowNzozNS4wMDAwMDAwMDAg KzAyMDAKLUBAIC00LDcgKzQsNyBAQAotICAgIFBSOgkJbm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8 aG9zQHRhbWFuZWdpLm9yZz4gMjAwMzEyMDMJICovCi0gCi0tLyogeyBkZy1kbyBydW4geyB4ZmFp bCBtaXBzNjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8K LSsvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAqLwotICNpbmNsdWRlICJm Zml0ZXN0LmgiCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiB7Ci0tLS0gbGli ZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMuamoJMjAwNy0wOS0w NiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5j YWxsL2Nsc19hbGlnbl9zaW50MTYuYwkyMDA3LTA5LTA2IDE0OjA3OjM1LjAwMDAwMDAwMCArMDIw MAotQEAgLTQsNyArNCw3IEBACi0gICAgUFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6CTxob3NA dGFtYW5lZ2kub3JnPiAyMDAzMTIwMwkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1p cHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKy8q IHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRl c3QuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHsKLS0tLSBsaWJmZmkv dGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19mbG9hdC5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDku MDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZmxv YXQuYwkyMDA3LTA5LTA2IDE0OjA3OjM1LjAwMDAwMDAwMCArMDIwMAotQEAgLTQsNyArNCw3IEBA Ci0gICAgUFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6CTxhbmRyZWFzdEBnY2MuZ251Lm9yZz4g MjAwMzA4MjgJICovCi0gCi0tLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiBhcm0q LSotKiBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8KLSsvKiB7IGRnLWRvIHJ1biB7 IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAqLwotICNpbmNsdWRlICJmZml0ZXN0LmgiCi0gCi0gc3Rh dGljIHZvaWQgY2xzX3JldF9mbG9hdF9mbihmZmlfY2lmKiBjaWYgX19VTlVTRURfXywgdm9pZCog cmVzcCwgdm9pZCoqIGFyZ3MsCi0tLS0gbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNf MjBieXRlLmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJm ZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYwkyMDA3LTA5LTA2IDE0OjA3OjM1 LjAwMDAwMDAwMCArMDIwMAotQEAgLTUsNyArNSw3IEBACi0gICAgUFI6CQlub25lLgotICAgIE9y aWdpbmF0b3I6CTxhbmRyZWFzdEBnY2MuZ251Lm9yZz4gMjAwMzA4MjgJICovCi0gCi0tLyogeyBk Zy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2Nh bGUqLSotKiB9IH0gKi8KLSsvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAq LwotICNpbmNsdWRlICJmZml0ZXN0LmgiCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgY2xzX3N0cnVjdF8y MGJ5dGUgewotLS0tIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMu amoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1 aXRlL2xpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jCTIwMDctMDktMDYgMTQ6MDc6MzUuMDAwMDAw MDAwICswMjAwCi1AQCAtNSw3ICs1LDcgQEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRv cjoJPGFuZHJlYXN0QGdjYy5nbnUub3JnPiAyMDA1MDcwOAkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1 biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0q IH0gfSAqLwotKy8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2lu Y2x1ZGUgImZmaXRlc3QuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIHsK LS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMuamoJMjAw Ny0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xp YmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMJMjAwNy0wOS0wNiAxNDowNzozNS4wMDAwMDAwMDAg KzAyMDAKLUBAIC02LDcgKzYsNyBAQAotICAgIFBSOgkJbm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8 YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIwMDMwOTExCSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsg eGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9 ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVk ZSAiZmZpdGVzdC5oIgotIAotIHR5cGVkZWYgc3RydWN0IEEgewotLS0tIGxpYmZmaS90ZXN0c3Vp dGUvbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAw MDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMJ MjAwNy0wOS0wNiAxNDowNzozNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC01LDcgKzUsNyBAQAotICAg IFBSOgkJbm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIwMDMw ODI4CSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSog c3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFp bCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHR5cGVkZWYg c3RydWN0IGNsc19zdHJ1Y3RfMjRieXRlIHsKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5j YWxsL2Nsc182NGJ5dGUuYy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5LjAwMDAwMDAwMCArMDIwMAot KysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jCTIwMDctMDktMDYg MTQ6MDc6MzcuMDAwMDAwMDAwICswMjAwCi1AQCAtNiw3ICs2LDcgQEAKLSAgICBQUjoJCW5vbmUu Ci0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0QGdjYy5nbnUub3JnPiAyMDAzMDgyOAkgKi8KLSAK LS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSot Ki0qIHhzY2FsZSotKi0qIH0gfSAqLwotKy8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0q LSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBjbHNf c3RydWN0XzY0Ynl0ZSB7Ci0tLS0gbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfdWlu dC5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rl c3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfdWludC5jCTIwMDctMDktMDYgMTQ6MDc6MzcuMDAwMDAw MDAwICswMjAwCi1AQCAtNCw3ICs0LDcgQEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRv cjoJPGFuZHJlYXN0QGdjYy5nbnUub3JnPiAyMDAzMDgyOAkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1 biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0q IH0gfSAqLwotKy8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2lu Y2x1ZGUgImZmaXRlc3QuaCIKLSAKLSBzdGF0aWMgdm9pZCBjbHNfcmV0X3VpbnRfZm4oZmZpX2Np ZiogY2lmIF9fVU5VU0VEX18sIHZvaWQqIHJlc3AsIHZvaWQqKiBhcmdzLAotLS0tIGxpYmZmaS90 ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydGNoYXIuYy5qagkyMDA3LTA5LTA2 IDE0OjA1OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNh bGwvY2xzX211bHRpX3VzaG9ydGNoYXIuYwkyMDA3LTA5LTA2IDE0OjA3OjM3LjAwMDAwMDAwMCAr MDIwMAotQEAgLTQsNyArNCw3IEBACi0gICAgUFI6CQlQUjEzMjIxLgotICAgIE9yaWdpbmF0b3I6 CTxhbmRyZWFzdEBnY2MuZ251Lm9yZz4gMjAwMzExMjkgICovCi0gCi0tLyogeyBkZy1kbyBydW4g eyB4ZmFpbCBtaXBzNjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9 IH0gKi8KLSsvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAqLwotICNpbmNs dWRlICJmZml0ZXN0LmgiCi0gCi0gdW5zaWduZWQgc2hvcnQgdGVzdF9mdW5jX2ZuKHVuc2lnbmVk IGNoYXIgYTEsIHVuc2lnbmVkIHNob3J0IGEyLAotLS0tIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZp LmNhbGwvY2xzX3NjaGFyLmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19zY2hhci5jCTIwMDctMDktMDYg MTQ6MDc6MzcuMDAwMDAwMDAwICswMjAwCi1AQCAtNCw3ICs0LDkgQEAKLSAgICBQUjoJCW5vbmUu Ci0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0QGdjYy5nbnUub3JnPiAyMDAzMTEwOAkgKi8KLSAK LS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSot Ki0qIHhzY2FsZSotKi0qIH0gfSAqLwotKwotKwotKy8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlw czY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIKLSAKLSBzdGF0aWMgdm9pZCBj bHNfcmV0X3NjaGFyX2ZuKGZmaV9jaWYqIGNpZiBfX1VOVVNFRF9fLCB2b2lkKiByZXNwLCB2b2lk KiogYXJncywKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc191Y2hhci5jLmpq CTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0 ZS9saWJmZmkuY2FsbC9jbHNfdWNoYXIuYwkyMDA3LTA5LTA2IDE0OjA3OjM3LjAwMDAwMDAwMCAr MDIwMAotQEAgLTQsNyArNCw3IEBACi0gICAgUFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6CTxh bmRyZWFzdEBnY2MuZ251Lm9yZz4gMjAwMzA4MjgJICovCi0gCi0tLyogeyBkZy1kbyBydW4geyB4 ZmFpbCBtaXBzNjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0g Ki8KLSsvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAqLwotICNpbmNsdWRl ICJmZml0ZXN0LmgiCi0gCi0gc3RhdGljIHZvaWQgY2xzX3JldF91Y2hhcl9mbihmZmlfY2lmKiBj aWYgX19VTlVTRURfXywgdm9pZCogcmVzcCwgdm9pZCoqIGFyZ3MsCi0tLS0gbGliZmZpL3Rlc3Rz dWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMuamoJMjAwNy0wOS0wNiAxNDowNTow OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19h bGlnbl91aW50NjQuYwkyMDA3LTA5LTA2IDE0OjA3OjM3LjAwMDAwMDAwMCArMDIwMAotQEAgLTQs NyArNCw4IEBACi0gICAgUFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6CTxob3NAdGFtYW5lZ2ku b3JnPiAyMDAzMTIwMwkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0q IGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKwotKy8qIHsgZGct ZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIK LSAKLSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHsKLS0tLSBsaWJmZmkvdGVzdHN1 aXRlL2xpYmZmaS5jYWxsL2Nsc191bG9uZ2xvbmcuYy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5LjAw MDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3Vsb25n bG9uZy5jCTIwMDctMDktMDYgMTQ6MDc6MzcuMDAwMDAwMDAwICswMjAwCi1AQCAtNCw3ICs0LDcg QEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0QGdjYy5nbnUub3Jn PiAyMDAzMDgyOAkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIGFy bSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKy8qIHsgZGctZG8gcnVu IHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIKLSAKLSBz dGF0aWMgdm9pZCBjbHNfcmV0X3Vsb25nbG9uZ19mbihmZmlfY2lmKiBjaWYgX19VTlVTRURfXywg dm9pZCogcmVzcCwKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9s b25nZG91YmxlLmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBs aWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMJMjAwNy0w OS0wNiAxNDowNzozNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC00LDcgKzQsNyBAQAotICAgIFBSOgkJ bm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8aG9zQHRhbWFuZWdpLm9yZz4gMjAwMzEyMDMJICovCi0g Ci0tLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0q LSotKiB4c2NhbGUqLSotKiB9IH0gKi8KLSsvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCot Ki0qIH0gfSAqLwotIAotICNpbmNsdWRlICJmZml0ZXN0LmgiCi0gCi0tLS0gbGliZmZpL3Rlc3Rz dWl0ZS9saWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAw MDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMV8xYnl0 ZS5jCTIwMDctMDktMDYgMTQ6MDc6MzcuMDAwMDAwMDAwICswMjAwCi1AQCAtNiw3ICs2LDkgQEAK LSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0QGdjYy5nbnUub3JnPiAy MDAzMDkwMgkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIGFybSot Ki0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKwotKwotKy8qIHsgZGctZG8g cnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIKLSAK LSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0XzFfMWJ5dGUgewotLS0tIGxpYmZmaS90ZXN0c3Vp dGUvbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAw MDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTJieXRlLmMJ MjAwNy0wOS0wNiAxNDowNzozNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC00LDcgKzQsNyBAQAotICAg IFBSOgkJbm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIwMDMw ODI4CSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSog c3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFp bCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHR5cGVkZWYg c3RydWN0IGNsc19zdHJ1Y3RfMTJieXRlIHsKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5j YWxsL2Nsc18zXzFieXRlLmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMJMjAwNy0wOS0w NiAxNDowNzozNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC02LDcgKzYsNyBAQAotICAgIFBSOgkJbm9u ZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIwMDMwOTAyCSAqLwot IAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ryb25nYXJt Ki0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQq LSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHR5cGVkZWYgc3RydWN0IGNs c19zdHJ1Y3RfM18xYnl0ZSB7Ci0tLS0gbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNf M2J5dGUxLmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJm ZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYwkyMDA3LTA5LTA2IDE0OjA3OjM3 LjAwMDAwMDAwMCArMDIwMAotQEAgLTYsNyArNiw3IEBACi0gICAgUFI6CQlub25lLgotICAgIE9y aWdpbmF0b3I6CTxhbmRyZWFzdEBnY2MuZ251Lm9yZz4gMjAwMzA4MjgJICovCi0gCi0tLyogeyBk Zy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2Nh bGUqLSotKiB9IH0gKi8KLSsvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAq LwotICNpbmNsdWRlICJmZml0ZXN0LmgiCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgY2xzX3N0cnVjdF8z Ynl0ZSB7Ci0tLS0gbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jLmpq CTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0 ZS9saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jCTIwMDctMDktMDYgMTQ6MDc6MzcuMDAwMDAwMDAw ICswMjAwCi1AQCAtNiw3ICs2LDcgQEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJ PGFuZHJlYXN0QGdjYy5nbnUub3JnPiAyMDAzMDkwMgkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7 IHhmYWlsIG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0g fSAqLwotKy8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1 ZGUgImZmaXRlc3QuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0XzRfMWJ5dGUgewot LS0tIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMuamoJMjAwNy0w OS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZm aS5jYWxsL2Nsc182XzFfYnl0ZS5jCTIwMDctMDktMDYgMTQ6MDc6MzcuMDAwMDAwMDAwICswMjAw Ci1AQCAtNSw3ICs1LDcgQEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJl YXN0QGdjYy5nbnUub3JnPiAyMDA1MDcwOAkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWls IG1pcHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwot Ky8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZm aXRlc3QuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIHsKLS0tLSBsaWJm ZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYy5qagkyMDA3LTA5LTA2IDE0OjA1 OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xz XzE2Ynl0ZS5jCTIwMDctMDktMDYgMTQ6MDc6MzcuMDAwMDAwMDAwICswMjAwCi1AQCAtNSw3ICs1 LDcgQEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0QGdjYy5nbnUu b3JnPiAyMDAzMDgyOAkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0q IGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKy8qIHsgZGctZG8g cnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIKLSAK LSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZSB7Ci0tLS0gbGliZmZpL3Rlc3RzdWl0 ZS9saWJmZmkuY2FsbC9jbHNfMThieXRlLmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYwky MDA3LTA5LTA2IDE0OjA3OjM3LjAwMDAwMDAwMCArMDIwMAotQEAgLTUsNyArNSw3IEBACi0gICAg UFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6CTxhbmRyZWFzdEBnY2MuZ251Lm9yZz4gMjAwMzA5 MTUJICovCi0gCi0tLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiBhcm0qLSotKiBz dHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8KLSsvKiB7IGRnLWRvIHJ1biB7IHhmYWls IG1pcHM2NCotKi0qIH0gfSAqLwotICNpbmNsdWRlICJmZml0ZXN0LmgiCi0gCi0gdHlwZWRlZiBz dHJ1Y3QgY2xzX3N0cnVjdF8xOGJ5dGUgewotLS0tIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNh bGwvY2xvc3VyZV9mbjAuYy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5LjAwMDAwMDAwMCArMDIwMAot KysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9mbjAuYwkyMDA3LTA5LTA2 IDE0OjA3OjM3LjAwMDAwMDAwMCArMDIwMAotQEAgLTYsNyArNiwxMCBAQAotICAgIFBSOgkJbm9u ZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIwMDMwODI4CSAqLwot IAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ryb25nYXJt Ki0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rCi0rCi0rCi0rLyogeyBkZy1kbyBydW4geyB4ZmFp bCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHN0YXRpYyB2 b2lkCi0tLS0gbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMuamoJMjAw Ny0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xp YmZmaS5jYWxsL2Nsc185Ynl0ZTIuYwkyMDA3LTA5LTA2IDE0OjA3OjM3LjAwMDAwMDAwMCArMDIw MAotQEAgLTcsNyArNyw3IEBACi0gICAgUFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6CTxhbmRy ZWFzdEBnY2MuZ251Lm9yZz4gMjAwMzA5MTQJICovCi0gCi0tLyogeyBkZy1kbyBydW4geyB4ZmFp bCBtaXBzNjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8K LSsvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAqLwotICNpbmNsdWRlICJm Zml0ZXN0LmgiCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSB7Ci0tLS0gbGli ZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX2ZuMi5jLmpqCTIwMDctMDktMDYgMTQ6 MDU6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9j bG9zdXJlX2ZuMi5jCTIwMDctMDktMDYgMTQ6MDc6MzcuMDAwMDAwMDAwICswMjAwCi1AQCAtNiw3 ICs2LDcgQEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0QGdjYy5n bnUub3JnPiAyMDAzMDgyOAkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCot Ki0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKy8qIHsgZGct ZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3QuaCIK LSAKLSBzdGF0aWMgdm9pZCBjbG9zdXJlX3Rlc3RfZm4yKGZmaV9jaWYqIGNpZiBfX1VOVVNFRF9f LCB2b2lkKiByZXNwLCB2b2lkKiogYXJncywKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5j YWxsL2Nsb3N1cmVfZm40LmMuamoJMjAwNy0wOS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm40LmMJMjAwNy0wOS0w NiAxNDowNzozNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC02LDcgKzYsNyBAQAotICAgIFBSOgkJbm9u ZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIwMDMxMDI2CSAqLwot IAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ryb25nYXJt Ki0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQq LSotKiB9IH0gKi8KLSAKLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotLS0tIGxpYmZmaS90ZXN0 c3VpdGUvbGliZmZpLmNhbGwvY2xzX3VzaG9ydC5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAw MDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfdXNob3J0 LmMJMjAwNy0wOS0wNiAxNDowNzozNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC00LDcgKzQsNyBAQAot ICAgIFBSOgkJbm9uZS4KLSAgICBPcmlnaW5hdG9yOgk8YW5kcmVhc3RAZ2NjLmdudS5vcmc+IDIw MDMwODI4CSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0q LSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4 ZmFpbCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHN0YXRp YyB2b2lkIGNsc19yZXRfdXNob3J0X2ZuKGZmaV9jaWYqIGNpZiBfX1VOVVNFRF9fLCB2b2lkKiBy ZXNwLCB2b2lkKiogYXJncywKLS0tLSBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181 Ynl0ZS5jLmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZp L3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNWJ5dGUuYwkyMDA3LTA5LTA2IDE0OjA3OjM4LjAw MDAwMDAwMCArMDIwMAotQEAgLTUsNyArNSw3IEBACi0gICAgUFI6CQlub25lLgotICAgIE9yaWdp bmF0b3I6CTxhbmRyZWFzdEBnY2MuZ251Lm9yZz4gMjAwMzA4MjgJICovCi0gCi0tLyogeyBkZy1k byBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2NhbGUq LSotKiB9IH0gKi8KLSsvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCotKi0qIH0gfSAqLwot ICNpbmNsdWRlICJmZml0ZXN0LmgiCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0 ZSB7Ci0tLS0gbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5j LmpqCTIwMDctMDktMDYgMTQ6MDU6MDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliZmZpL3Rlc3Rz dWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jCTIwMDctMDktMDYgMTQ6MDc6Mzgu MDAwMDAwMDAwICswMjAwCi1AQCAtNCw3ICs0LDcgQEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3Jp Z2luYXRvcjoJPGhvc0B0YW1hbmVnaS5vcmc+IDIwMDMxMjAzCSAqLwotIAotLS8qIHsgZGctZG8g cnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogYXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0q LSogfSB9ICovCi0rLyogeyBkZy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiB9IH0gKi8KLSAj aW5jbHVkZSAiZmZpdGVzdC5oIgotIAotIHR5cGVkZWYgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24g ewotLS0tIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdieXRlLmMuamoJMjAwNy0w OS0wNiAxNDowNTowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJmZmkvdGVzdHN1aXRlL2xpYmZm aS5jYWxsL2Nsc183Ynl0ZS5jCTIwMDctMDktMDYgMTQ6MDc6MzguMDAwMDAwMDAwICswMjAwCi1A QCAtNSw3ICs1LDcgQEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJPGFuZHJlYXN0 QGdjYy5nbnUub3JnPiAyMDAzMDgyOAkgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1p cHM2NCotKi0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKy8q IHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRl c3QuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIHsKLS0tLSBsaWJmZmkv dGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYy5qagkyMDA3LTA5LTA2IDE0 OjA1OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwv Y2xzX2FsaWduX3NpbnQzMi5jCTIwMDctMDktMDYgMTQ6MDc6MzguMDAwMDAwMDAwICswMjAwCi1A QCAtNCw3ICs0LDcgQEAKLSAgICBQUjoJCW5vbmUuCi0gICAgT3JpZ2luYXRvcjoJPGhvc0B0YW1h bmVnaS5vcmc+IDIwMDMxMjAzCSAqLwotIAotLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgbWlwczY0 Ki0qLSogYXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0rLyogeyBk Zy1kbyBydW4geyB4ZmFpbCBtaXBzNjQqLSotKiB9IH0gKi8KLSAjaW5jbHVkZSAiZmZpdGVzdC5o IgotIAotIHR5cGVkZWYgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gewotLS0tIGxpYmZmaS90ZXN0 c3VpdGUvbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdC5jYy5qagkyMDA3LTA5LTA2IDE0OjA1OjA5 LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLnNwZWNpYWwvdW53 aW5kdGVzdC5jYwkyMDA3LTA5LTA2IDE0OjA3OjM5LjAwMDAwMDAwMCArMDIwMAotQEAgLTQsNyAr NCw3IEBACi0gICAgUFI6CQlub25lLgotICAgIE9yaWdpbmF0b3I6CUplZmYgU3R1cm0gPGpzdHVy bUBvbmUtcG9pbnQuY29tPiAgKi8KLSAKLS0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsIG1pcHM2NCot Ki0qIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotKy8qIHsgZGct ZG8gcnVuIHsgeGZhaWwgbWlwczY0Ki0qLSogfSB9ICovCi0gI2luY2x1ZGUgImZmaXRlc3RjeHgu aCIKLSAKLSB2b2lkCgpkaWZmIC0tZ2l0IGEvZ2NjNDEtamF2YS1hcm0yLnBhdGNoIGIvZ2NjNDEt amF2YS1hcm0yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmZmY2NjLi4w MDAwMDAwCi0tLSBhL2djYzQxLWphdmEtYXJtMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEx NCArMCwwIEBACi0yMDA3LTA3LTEzICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KLQot CSogbGliZ2NqLnZlcjogQWRkIF9fZ2NqX3BlcnNvbmFsaXR5X3NqMC4KLQotMjAwNy0wNy0xMSAg QW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5ob3N0IChhcm0q LWxpbnV4LWdudSk6IE5ldy4KLQkqIHN5c2RlcC9hcm0vbG9ja3MuaDogTmV3LgotCi0tLS0gbGli amF2YS9jb25maWd1cmUuaG9zdAkocmV2aXNpb24gMTI2NjIxKQotKysrIGxpYmphdmEvY29uZmln dXJlLmhvc3QJKHJldmlzaW9uIDEyNjYyMykKLUBAIC04Miw2ICs4MiwxMCBAQCBjYXNlICIke2hv c3R9IiBpbgotIAllbmFibGVfZ2V0ZW52X3Byb3BlcnRpZXNfZGVmYXVsdD1ubwotIAllbmFibGVf bWFpbl9hcmdzX2RlZmF1bHQ9bm8KLSAJOzsKLSsgIGFybSotbGludXgtZ251KQotKwlsaWJnY2pf aW50ZXJwcmV0ZXI9eWVzCi0rCXN5c2RlcHNfZGlyPWFybQotKwk7OwotICAgbWlwcy10eDM5LSp8 bWlwc3R4MzktdW5rbm93bi0qKQotIAlsaWJnY2pfZmxhZ3M9IiR7bGliZ2NqX2ZsYWdzfSAtRyAw IgotIAlMREZMQUdTPSIkTERGTEFHUyAtVGptcjM5MDRkcmFtLmxkIgotLS0tIGxpYmphdmEvbGli Z2NqLnZlcgkocmV2aXNpb24gMTI2NjIxKQotKysrIGxpYmphdmEvbGliZ2NqLnZlcgkocmV2aXNp b24gMTI2NjIzKQotQEAgLTIsNiArMiw2IEBACi0gIyBzeW1ib2xzIGluIGxpYmdjai5zby4KLSAK LSB7Ci0tICBnbG9iYWw6IEp2KjsgX0p2Xyo7IF9fZ2NqX3BlcnNvbmFsaXR5X3YwOyBfWio7Ci0r ICBnbG9iYWw6IEp2KjsgX0p2Xyo7IF9fZ2NqX3BlcnNvbmFsaXR5X3YwOyBfX2djal9wZXJzb25h bGl0eV9zajA7IF9aKjsKLSAgIGxvY2FsOiAqOwotIH07Ci0tLS0gbGliamF2YS9zeXNkZXAvYXJt L2xvY2tzLmgJKHJldmlzaW9uIDApCi0rKysgbGliamF2YS9zeXNkZXAvYXJtL2xvY2tzLmgJKHJl dmlzaW9uIDEyNjYyMykKLUBAIC0wLDAgKzEsNzkgQEAKLSsvLyBsb2Nrcy5oIC0gVGhyZWFkIHN5 bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLiBBUk0gaW1wbGVtZW50YXRpb24uCi0rCi0rLyogQ29w eXJpZ2h0IChDKSAyMDA3ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSsKLSsgICBUaGlzIGZp bGUgaXMgcGFydCBvZiBsaWJnY2ouCi0rCi0rVGhpcyBzb2Z0d2FyZSBpcyBjb3B5cmlnaHRlZCB3 b3JrIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKLStMaWJnY2ogTGljZW5zZS4gIFBs ZWFzZSBjb25zdWx0IHRoZSBmaWxlICJMSUJHQ0pfTElDRU5TRSIgZm9yCi0rZGV0YWlscy4gICov Ci0rCi0rI2lmbmRlZiBfX1NZU0RFUF9MT0NLU19IX18KLSsjZGVmaW5lIF9fU1lTREVQX0xPQ0tT X0hfXwotKwotK3R5cGVkZWYgc2l6ZV90IG9ial9hZGRyX3Q7CS8qIEludGVnZXIgdHlwZSBiaWcg ZW5vdWdoIGZvciBvYmplY3QJKi8KLSsJCQkJLyogYWRkcmVzcy4JCQkJKi8KLSsKLSsvKiBBdG9t aWMgY29tcGFyZSBhbmQgZXhjaGFuZ2UuICBUaGVzZSBzZXF1ZW5jZXMgYXJlIG5vdCBhY3R1YWxs eQotKyAgIGF0b21pYzsgdGhlcmUgaXMgYSByYWNlIGlmICpBRERSICE9IE9MRF9WQUwgYW5kIHdl IGFyZSBwcmVlbXB0ZWQKLSsgICBiZXR3ZWVuIHRoZSB0d28gc3dhcHMuICBIb3dldmVyLCB0aGV5 IGFyZSB2ZXJ5IGNsb3NlIHRvIGF0b21pYywgYW5kCi0rICAgYXJlIHRoZSBiZXN0IHRoYXQgYSBw cmUtQVJNdjYgaW1wbGVtZW50YXRpb24gY2FuIGRvIHdpdGhvdXQKLSsgICBvcGVyYXRpbmcgc3lz dGVtIHN1cHBvcnQuICBMaW51eFRocmVhZHMgaGFzIGJlZW4gdXNpbmcgdGhlc2UKLSsgICBzZXF1 ZW5jZXMgZm9yIG1hbnkgeWVhcnMuICAqLwotKwotK2lubGluZSBzdGF0aWMgYm9vbAotK2NvbXBh cmVfYW5kX3N3YXAodm9sYXRpbGUgb2JqX2FkZHJfdCAqYWRkciwKLSsJCSBvYmpfYWRkcl90IG9s ZF92YWwsCi0rCQkgb2JqX2FkZHJfdCBuZXdfdmFsKQotK3sKLSsgIHZvbGF0aWxlIG9ial9hZGRy X3QgcmVzdWx0LCB0bXA7Ci0rICBfX2FzbV9fICgiXG4iCi0rCSAgICIwOglsZHIJJVt0bXBdLFsl W2FkZHJdXVxuIgotKwkgICAiCWNtcAklW3RtcF0sJVtvbGRfdmFsXVxuIgotKwkgICAiCW1vdm5l CSVbcmVzdWx0XSwjMFxuIgotKwkgICAiCWJuZQkxZlxuIgotKwkgICAiCXN3cAklW3Jlc3VsdF0s JVtuZXdfdmFsXSxbJVthZGRyXV1cbiIKLSsJICAgIgljbXAJJVt0bXBdLCVbcmVzdWx0XVxuIgot KwkgICAiCXN3cG5lCSVbdG1wXSwlW3Jlc3VsdF0sWyVbYWRkcl1dXG4iCi0rCSAgICIJYm5lCTBi XG4iCi0rCSAgICIJbW92CSVbcmVzdWx0XSwjMVxuIgotKwkgICAiMToiCi0rCSAgIDogW3Jlc3Vs dF0gIj0mciIgKHJlc3VsdCksIFt0bXBdICI9JnIiICh0bXApCi0rCSAgIDogW2FkZHJdICJyIiAo YWRkciksIFtuZXdfdmFsXSAiciIgKG5ld192YWwpLCBbb2xkX3ZhbF0gInIiIChvbGRfdmFsKQot KwkgICA6ICJjYyIsICJtZW1vcnkiKTsKLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotK2lu bGluZSBzdGF0aWMgdm9pZAotK3JlbGVhc2Vfc2V0KHZvbGF0aWxlIG9ial9hZGRyX3QgKmFkZHIs IG9ial9hZGRyX3QgbmV3X3ZhbCkKLSt7Ci0rICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIiA6IDog OiAibWVtb3J5Iik7Ci0rICAqKGFkZHIpID0gbmV3X3ZhbDsKLSt9Ci0rCi0raW5saW5lIHN0YXRp YyBib29sCi0rY29tcGFyZV9hbmRfc3dhcF9yZWxlYXNlKHZvbGF0aWxlIG9ial9hZGRyX3QgKmFk ZHIsCi0rCQkgIAkJCQkgICAgIG9ial9hZGRyX3Qgb2xkLAotKwkJCQkJCSAgICAgb2JqX2FkZHJf dCBuZXdfdmFsKQotK3sKLSsgIHJldHVybiBjb21wYXJlX2FuZF9zd2FwKGFkZHIsIG9sZCwgbmV3 X3ZhbCk7Ci0rfQotKwotKy8vIEVuc3VyZSB0aGF0IHN1YnNlcXVlbnQgaW5zdHJ1Y3Rpb25zIGRv IG5vdCBleGVjdXRlIG9uIHN0YWxlCi0rLy8gZGF0YSB0aGF0IHdhcyBsb2FkZWQgZnJvbSBtZW1v cnkgYmVmb3JlIHRoZSBiYXJyaWVyLgotK2lubGluZSBzdGF0aWMgdm9pZAotK3JlYWRfYmFycmll cigpCi0rewotKyAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiIgOiA6IDogIm1lbW9yeSIpOwotK30K LSsKLSsvLyBFbnN1cmUgdGhhdCBwcmlvciBzdG9yZXMgdG8gbWVtb3J5IGFyZSBjb21wbGV0ZWQg d2l0aCByZXNwZWN0IHRvIG90aGVyCi0rLy8gcHJvY2Vzc29ycy4KLStpbmxpbmUgc3RhdGljIHZv aWQKLSt3cml0ZV9iYXJyaWVyKCkKLSt7Ci0rICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIiA6IDog OiAibWVtb3J5Iik7Ci0rfQotKwotKyNlbmRpZgoKZGlmZiAtLWdpdCBhL2djYzQxLWphdmEtYXJt My5wYXRjaCBiL2djYzQxLWphdmEtYXJtMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggYWMxMmNhMS4uMDAwMDAwMAotLS0gYS9nY2M0MS1qYXZhLWFybTMucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0yMDA3LTA3LTE1ICBBbmRyZXcgSGFsZXkgIDxhcGhA cmVkaGF0LmNvbT4KLQotCSogdW53aW5kLXNqbGouYyAoX1Vud2luZF9HZXRJUEluZm8pOiBDaGVj ayBmb3IgY29udGV4dC0+ZmMgIT0gTlVMTAotCWJlZm9yZSBsb29raW5nIGluIHRoZSBjb250ZXh0 LgotCi0JKiBjb25maWd1cmUuaG9zdDogCi0JYXJtKi1saW51eC1nbnUgLT4gYXJtKi1saW51eCou Ci0KLS0tLSBnY2MvdW53aW5kLXNqbGouYwkocmV2aXNpb24gMTI2NjU3KQotKysrIGdjYy91bndp bmQtc2psai5jCShyZXZpc2lvbiAxMjY2NTkpCi1AQCAtMjIyLDcgKzIyMiwxMCBAQCBfVW53aW5k X1B0cgotIF9VbndpbmRfR2V0SVBJbmZvIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250ZXh0 LCBpbnQgKmlwX2JlZm9yZV9pbnNuKQotIHsKLSAgICppcF9iZWZvcmVfaW5zbiA9IDA7Ci0tICBy ZXR1cm4gY29udGV4dC0+ZmMtPmNhbGxfc2l0ZSArIDE7Ci0rICBpZiAoY29udGV4dC0+ZmMgIT0g TlVMTCkKLSsgICAgcmV0dXJuIGNvbnRleHQtPmZjLT5jYWxsX3NpdGUgKyAxOwotKyAgZWxzZQot KyAgICByZXR1cm4gMDsKLSB9Ci0gCi0gLyogU2V0IHRoZSByZXR1cm4gbGFuZGluZyBwYWQgaW5k ZXggaW4gQ09OVEVYVC4gICovCi0tLS0gbGliamF2YS9jb25maWd1cmUuaG9zdAkocmV2aXNpb24g MTI2NjU3KQotKysrIGxpYmphdmEvY29uZmlndXJlLmhvc3QJKHJldmlzaW9uIDEyNjY1OSkKLUBA IC04Miw3ICs4Miw3IEBAIGNhc2UgIiR7aG9zdH0iIGluCi0gCWVuYWJsZV9nZXRlbnZfcHJvcGVy dGllc19kZWZhdWx0PW5vCi0gCWVuYWJsZV9tYWluX2FyZ3NfZGVmYXVsdD1ubwotIAk7OwotLSAg YXJtKi1saW51eC1nbnUpCi0rICBhcm0qLWxpbnV4KikKLSAJbGliZ2NqX2ludGVycHJldGVyPXll cwotIAlzeXNkZXBzX2Rpcj1hcm0KLSAJOzsKCmRpZmYgLS1naXQgYS9nY2M0MS1qYXZhLWFybTQu cGF0Y2ggYi9nY2M0MS1qYXZhLWFybTQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGU2ZTI5NDcuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtamF2YS1hcm00LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLTIwMDctMDktMDQgIEFuZHJldyBIYWxleSAgPGFwaEBy ZWRoYXQuY29tPgotCi0JKiBkZWNsLmMgKGphdmFfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxs ICJfX2N4YV9lbmRfY2xlYW51cCIKLQl3aGVuIHVzaW5nIHRoZSBBUk0gRUFCSS4KLQotMjAwNy0w OC0yOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+Ci0KLSAgICAgICAgKiBjb25maWcv YXJtL2xpYmdjYy1icGFiaS52ZXI6IEFkZCBfVW53aW5kX0JhY2t0cmFjZSBhcyBHQ0NfNC4zLjAu Ci0KLTIwMDctMDgtMDggIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgotCi0JKiBjb25m aWcvYXJtL2xpYnVud2luZC5TIChVTldJTkRfV1JBUFBFUiBfVW53aW5kX0JhY2t0cmFjZSk6IE5l dy4KLQkqIGNvbmZpZy9hcm0vdW53aW5kLWFybS5oIChfX2dudV9VbndpbmRfQmFja3RyYWNlKTog TmV3LgotCSogY29uZmlnL2FybS91bndpbmQtYXJtLmMgKF9fZ251X1Vud2luZF9CYWNrdHJhY2Up OiBOZXcuCi0KLS0tLSBnY2MvamF2YS9kZWNsLmMJKHJldmlzaW9uIDEyODA4NSkKLSsrKyBnY2Mv amF2YS9kZWNsLmMJKHJldmlzaW9uIDEyODA4OCkKLUBAIC0xMDc1LDcgKzEwNzUsMTAgQEAgamF2 YV9pbml0X2RlY2xfcHJvY2Vzc2luZyAodm9pZCkKLSAgIGVoX3BlcnNvbmFsaXR5X2xpYmZ1bmMg PSBpbml0X29uZV9saWJmdW5jIChVU0lOR19TSkxKX0VYQ0VQVElPTlMKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJfX2djal9wZXJzb25hbGl0eV9zajAi Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiX19nY2pf cGVyc29uYWxpdHlfdjAiKTsKLS0gIGRlZmF1bHRfaW5pdF91bndpbmRfcmVzdW1lX2xpYmZ1bmMg KCk7Ci0rICBpZiAodGFyZ2V0bS5hcm1fZWFiaV91bndpbmRlcikKLSsgICAgdW53aW5kX3Jlc3Vt ZV9saWJmdW5jID0gaW5pdF9vbmVfbGliZnVuYyAoIl9fY3hhX2VuZF9jbGVhbnVwIik7Ci0rICBl bHNlCi0rICAgIGRlZmF1bHRfaW5pdF91bndpbmRfcmVzdW1lX2xpYmZ1bmMgKCk7Ci0gCi0gICBs YW5nX2VoX3J1bnRpbWVfdHlwZSA9IGRvX25vdGhpbmc7Ci0gCi0tLS0gZ2NjL2NvbmZpZy9hcm0v bGlidW53aW5kLlMJKHJldmlzaW9uIDEyODA4NSkKLSsrKyBnY2MvY29uZmlnL2FybS9saWJ1bndp bmQuUwkocmV2aXNpb24gMTI4MDg4KQotQEAgLTIzNyw1ICsyMzcsNiBAQCBVTldJTkRfV1JBUFBF UiBfVW53aW5kX1JhaXNlRXhjZXB0aW9uIDEKLSBVTldJTkRfV1JBUFBFUiBfVW53aW5kX1Jlc3Vt ZSAxCi0gVU5XSU5EX1dSQVBQRVIgX1Vud2luZF9SZXN1bWVfb3JfUmV0aHJvdyAxCi0gVU5XSU5E X1dSQVBQRVIgX1Vud2luZF9Gb3JjZWRVbndpbmQgMwotK1VOV0lORF9XUkFQUEVSIF9VbndpbmRf QmFja3RyYWNlIDIKLSAKLS0jZW5kaWYgIC8qIF9fc3ltYmlhbl9fICovCi0rI2VuZGlmICAvKiBu ZGVmIF9fc3ltYmlhbl9fICovCi0tLS0gZ2NjL2NvbmZpZy9hcm0vbGliZ2NjLWJwYWJpLnZlcgko cmV2aXNpb24gMTI4MDg1KQotKysrIGdjYy9jb25maWcvYXJtL2xpYmdjYy1icGFiaS52ZXIJKHJl dmlzaW9uIDEyODA4OCkKLUBAIC04MSwzICs4MSwxMSBAQCBHQ0NfMy41IHsKLSAgICMgR05VLXNw ZWNpZmljIGVudHJ5IHBvaW50LgotICAgX19nbnVfdW53aW5kX2ZyYW1lCi0gfQotKwotKyVleGNs dWRlIHsKLSsgIF9VbndpbmRfQmFja3RyYWNlCi0rfQotKyVpbmhlcml0IEdDQ180LjMuMCBHQ0Nf NC4yLjAKLStHQ0NfNC4zLjAgewotKyAgX1Vud2luZF9CYWNrdHJhY2UKLSt9Ci0tLS0gZ2NjL2Nv bmZpZy9hcm0vdW53aW5kLWFybS5jCShyZXZpc2lvbiAxMjgwODUpCi0rKysgZ2NjL2NvbmZpZy9h cm0vdW53aW5kLWFybS5jCShyZXZpc2lvbiAxMjgwODgpCi1AQCAtOTUwLDYgKzk1MCw2NiBAQCBf VW53aW5kX0RlbGV0ZUV4Y2VwdGlvbiAoX1Vud2luZF9FeGNlcHRpCi0gfQotIAotIAotKy8qIFBl cmZvcm0gc3RhY2sgYmFja3RyYWNlIHRocm91Z2ggdW53aW5kIGRhdGEuICAqLwotK19VbndpbmRf UmVhc29uX0NvZGUKLStfX2dudV9VbndpbmRfQmFja3RyYWNlKF9VbndpbmRfVHJhY2VfRm4gdHJh Y2UsIHZvaWQgKiB0cmFjZV9hcmd1bWVudCwKLSsJCSAgICAgICBwaGFzZTJfdnJzICogZW50cnlf dnJzKTsKLStfVW53aW5kX1JlYXNvbl9Db2RlCi0rX19nbnVfVW53aW5kX0JhY2t0cmFjZShfVW53 aW5kX1RyYWNlX0ZuIHRyYWNlLCB2b2lkICogdHJhY2VfYXJndW1lbnQsCi0rCQkgICAgICAgcGhh c2UyX3ZycyAqIGVudHJ5X3ZycykKLSt7Ci0rICBwaGFzZTFfdnJzIHNhdmVkX3ZyczsKLSsgIF9V bndpbmRfUmVhc29uX0NvZGUgY29kZTsKLSsKLSsgIF9VbndpbmRfQ29udHJvbF9CbG9jayB1Y2I7 Ci0rICBfVW53aW5kX0NvbnRyb2xfQmxvY2sgKnVjYnAgPSAmdWNiOwotKwotKyAgLyogU2V0IHRo ZSBwYyB0byB0aGUgY2FsbCBzaXRlLiAgKi8KLSsgIGVudHJ5X3Zycy0+Y29yZS5yW1JfUENdID0g ZW50cnlfdnJzLT5jb3JlLnJbUl9MUl07Ci0rCi0rICAvKiBTYXZlIHRoZSBjb3JlIHJlZ2lzdGVy cy4gICovCi0rICBzYXZlZF92cnMuY29yZSA9IGVudHJ5X3Zycy0+Y29yZTsKLSsgIC8qIFNldCBk ZW1hbmQtc2F2ZSBmbGFncy4gICovCi0rICBzYXZlZF92cnMuZGVtYW5kX3NhdmVfZmxhZ3MgPSB+ KF91dykgMDsKLSsgIAotKyAgZG8KLSsgICAgewotKyAgICAgIC8qIEZpbmQgdGhlIGVudHJ5IGZv ciB0aGlzIHJvdXRpbmUuICAqLwotKyAgICAgIGlmIChnZXRfZWl0X2VudHJ5ICh1Y2JwLCBzYXZl ZF92cnMuY29yZS5yW1JfUENdKSAhPSBfVVJDX09LKQotKwl7Ci0rCSAgY29kZSA9IF9VUkNfRkFJ TFVSRTsKLSsJICBicmVhazsKLSsJfQotKwotKyAgICAgIC8qIFRoZSBkd2FyZiB1bndpbmRlciBh c3N1bWVzIHRoZSBjb250ZXh0IHN0cnVjdHVyZSBob2xkcyB0aGluZ3MKLSsJIGxpa2UgdGhlIGZ1 bmN0aW9uIGFuZCBMU0RBIHBvaW50ZXJzLiAgVGhlIEFSTSBpbXBsZW1lbnRhdGlvbgotKwkgY2Fj aGVzIHRoZXNlIGluIHRoZSBleGNlcHRpb24gaGVhZGVyIChVQ0IpLiAgVG8gYXZvaWQKLSsJIHJl d3JpdGluZyBldmVyeXRoaW5nIHdlIG1ha2UgdGhlIHZpcnR1YWwgSVAgcmVnaXN0ZXIgcG9pbnQg YXQKLSsJIHRoZSBVQ0IuICAqLwotKyAgICAgIF9VbndpbmRfU2V0R1IoKF9VbndpbmRfQ29udGV4 dCAqKSZzYXZlZF92cnMsIDEyLCAoX1Vud2luZF9QdHIpIHVjYnApOwotKwotKyAgICAgIC8qIENh bGwgdHJhY2UgZnVuY3Rpb24uICAqLwotKyAgICAgIGlmICgoKnRyYWNlKSAoKF9VbndpbmRfQ29u dGV4dCAqKSAmc2F2ZWRfdnJzLCB0cmFjZV9hcmd1bWVudCkgCi0rCSAgIT0gX1VSQ19OT19SRUFT T04pCi0rCXsKLSsJICBjb2RlID0gX1VSQ19GQUlMVVJFOwotKwkgIGJyZWFrOwotKwl9Ci0rCi0r ICAgICAgLyogQ2FsbCB0aGUgcHIgdG8gZGVjaWRlIHdoYXQgdG8gZG8uICAqLwotKyAgICAgIGNv ZGUgPSAoKHBlcnNvbmFsaXR5X3JvdXRpbmUpIFVDQl9QUl9BRERSICh1Y2JwKSkKLSsJKF9VU19W SVJUVUFMX1VOV0lORF9GUkFNRSB8IF9VU19GT1JDRV9VTldJTkQsIAotKwkgdWNicCwgKHZvaWQg KikgJnNhdmVkX3Zycyk7Ci0rICAgIH0KLSsgIHdoaWxlIChjb2RlICE9IF9VUkNfRU5EX09GX1NU QUNLCi0rCSAmJiBjb2RlICE9IF9VUkNfRkFJTFVSRSk7Ci0rCi0rIGZpbmlzaDoKLSsgIHJlc3Rv cmVfbm9uX2NvcmVfcmVncyAoJnNhdmVkX3Zycyk7Ci0rICByZXR1cm4gY29kZTsKLSt9Ci0rCi0r Ci0gLyogQ29tbW9uIGltcGxlbWVudGF0aW9uIGZvciBBUk0gQUJJIGRlZmluZWQgcGVyc29uYWxp dHkgcm91dGluZXMuCi0gICAgSUQgaXMgdGhlIGluZGV4IG9mIHRoZSBwZXJzb25hbGl0eSByb3V0 aW5lLCBvdGhlciBhcmd1bWVudHMgYXJlIGFzIGRlZmluZWQKLSAgICBieSBfX2FlYWJpX3Vud2lu ZF9jcHBfcHJ7MCwxLDJ9LiAgKi8KLS0tLSBnY2MvY29uZmlnL2FybS91bndpbmQtYXJtLmgJKHJl dmlzaW9uIDEyODA4NSkKLSsrKyBnY2MvY29uZmlnL2FybS91bndpbmQtYXJtLmgJKHJldmlzaW9u IDEyODA4OCkKLUBAIC0yMDUsNiArMjA1LDEzIEBAIGV4dGVybiAiQyIgewotIAlfVW53aW5kX0Nv bnRyb2xfQmxvY2sgKiwgc3RydWN0IF9VbndpbmRfQ29udGV4dCAqLCB2b2lkICopOwotICAgX1Vu d2luZF9SZWFzb25fQ29kZSBfVW53aW5kX0ZvcmNlZFVud2luZCAoX1Vud2luZF9Db250cm9sX0Js b2NrICosCi0gCQkJCQkgICAgX1Vud2luZF9TdG9wX0ZuLCB2b2lkICopOwotKyAgLyogQEBAIFVz ZSB1bndpbmQgZGF0YSB0byBwZXJmb3JtIGEgc3RhY2sgYmFja3RyYWNlLiAgVGhlIHRyYWNlIGNh bGxiYWNrCi0rICAgICBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHN0YWNrIGZyYW1lIGluIHRoZSBjYWxs IGNoYWluLCBidXQgbm8gY2xlYW51cAotKyAgICAgYWN0aW9ucyBhcmUgcGVyZm9ybWVkLiAgKi8K LSsgIHR5cGVkZWYgX1Vud2luZF9SZWFzb25fQ29kZSAoKl9VbndpbmRfVHJhY2VfRm4pIChfVW53 aW5kX0NvbnRleHQgKiwgdm9pZCAqKTsKLSsgIF9VbndpbmRfUmVhc29uX0NvZGUgX1Vud2luZF9C YWNrdHJhY2UoX1Vud2luZF9UcmFjZV9GbiwKLSsJCQkJCXZvaWQqKTsKLSsKLSAgIF9VbndpbmRf V29yZCBfVW53aW5kX0dldENGQSAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKLSAgIHZvaWQg X1Vud2luZF9Db21wbGV0ZShfVW53aW5kX0NvbnRyb2xfQmxvY2sgKnVjYnApOwotICAgdm9pZCBf VW53aW5kX0RlbGV0ZUV4Y2VwdGlvbiAoX1Vud2luZF9FeGNlcHRpb24gKik7CgpkaWZmIC0tZ2l0 IGEvZ2NjNDEtamF2YS1hcm01LnBhdGNoIGIvZ2NjNDEtamF2YS1hcm01LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWM1YjczLi4wMDAwMDAwCi0tLSBhL2djYzQxLWphdmEt YXJtNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4MCArMCwwIEBACi0yMDA3LTA5LTA0ICBB bmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KLQotCSogc3JjL2FybS9zeXN2LlMgKFVOV0lO RCk6IE5ldy4KLQkoV2hvbGUgZmlsZSk6IENvbmRpdGlvbmFsbHkgY29tcGlsZSB1bndpbmRlciBk aXJlY3RpdmVzLgotCSogc3JjL2FybS9zeXN2LlM6IEFkZCB1bndpbmRlciBkaXJlY3RpdmVzLgot Ci0JKiBzcmMvYXJtL2ZmaS5jIChmZmlfcHJlcF9hcmdzKTogQWxpZ24gc3RydWN0cyBieSBhdCBs ZWFzdCA0IGJ5dGVzLgotCU9ubHkgdHJlYXQgcjAgYXMgYSBzdHJ1Y3QgYWRkcmVzcyBpZiB3ZSdy ZSBhY3R1YWxseSByZXR1cm5pbmcgYQotCXN0cnVjdCBieSBhZGRyZXNzLgotCU9ubHkgY29weSB0 aGUgYnl0ZXMgdGhhdCBhcmUgYWN0dWFsbHkgd2l0aGluIGEgc3RydWN0LgotCShmZmlfcHJlcF9j aWZfbWFjaGRlcCk6IEEgQ29tcG9zaXRlIFR5cGUgbm90IGxhcmdlciB0aGFuIDQgYnl0ZXMKLQlp cyByZXR1cm5lZCBpbiByMCwgbm90IHBhc3NlZCBieSBhZGRyZXNzLgotCShmZmlfY2FsbCk6IEFs bG9jYXRlIGEgd29yZC1zaXplZCB0ZW1wb3JhcnkgZm9yIHRoZSBjYXNlIHdoZXJlCi0JYSBjb21w b3NpdGUgaXMgcmV0dXJuZWQgaW4gcjAuCi0JKGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVik6 IEFsaWduIGFzIG5lY2Vzc2FyeS4KLQotMjAwNy0wOC0wNSAgU3RldmVuIE5ld2J1cnkgIDxzX2pf bmV3YnVyeUB5YWhvby5jby51az4KLQotCSogc3JjL2FybS9mZmkuYyAoRkZJX0lOSVRfVFJBTVBP TElORSk6IFVzZSBfX2NsZWFyX2NhY2hlIGluc3RlYWQgb2YgCi0JZGlyZWN0bHkgdXNpbmcgdGhl IHN5c19jYWNoZWZsdXNoIHN5c2NhbGwuCi0KLTIwMDctMDctMjcgIEFuZHJldyBIYWxleSAgPGFw aEByZWRoYXQuY29tPgotCi0JKiBzcmMvYXJtL3N5c3YuUyAoZmZpX2Nsb3N1cmVfU1lTVik6IEFk ZCBzb2Z0LWZsb2F0LgotCi0tLS0gbGliZmZpL3NyYy9hcm0vZmZpLmMJKHJldmlzaW9uIDEyODA5 MikKLSsrKyBsaWJmZmkvc3JjL2FybS9mZmkuYwkocmV2aXNpb24gMTI4MDkzKQotQEAgLTQwLDcg KzQwLDcgQEAgdm9pZCBmZmlfcHJlcF9hcmdzKGNoYXIgKnN0YWNrLCBleHRlbmRlZAotIAotICAg YXJncCA9IHN0YWNrOwotIAotLSAgaWYgKCBlY2lmLT5jaWYtPnJ0eXBlLT50eXBlID09IEZGSV9U WVBFX1NUUlVDVCApIHsKLSsgIGlmICggZWNpZi0+Y2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJV Q1QgKSB7Ci0gICAgICoodm9pZCAqKikgYXJncCA9IGVjaWYtPnJ2YWx1ZTsKLSAgICAgYXJncCAr PSA0OwotICAgfQotQEAgLTU4LDYgKzU4LDkgQEAgdm9pZCBmZmlfcHJlcF9hcmdzKGNoYXIgKnN0 YWNrLCBleHRlbmRlZAotIAlhcmdwID0gKGNoYXIgKikgQUxJR04oYXJncCwgKCpwX2FyZyktPmFs aWdubWVudCk7Ci0gICAgICAgfQotIAotKyAgICAgIGlmICgoKnBfYXJnKS0+dHlwZSA9PSBGRklf VFlQRV9TVFJVQ1QpCi0rCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCA0KTsKLSsKLSAJICB6 ID0gKCpwX2FyZyktPnNpemU7Ci0gCSAgaWYgKHogPCBzaXplb2YoaW50KSkKLSAJICAgIHsKLUBA IC04MSw3ICs4NCw3IEBAIHZvaWQgZmZpX3ByZXBfYXJncyhjaGFyICpzdGFjaywgZXh0ZW5kZWQK LSAJCSAgYnJlYWs7Ci0gCQkgIAotIAkJY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0tCQkgICoodW5z aWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDMyICopKCogcF9hcmd2KTsK LSsJCSAgbWVtY3B5KGFyZ3AsICpwX2FyZ3YsICgqcF9hcmcpLT5zaXplKTsKLSAJCSAgYnJlYWs7 Ci0gCi0gCQlkZWZhdWx0OgotQEAgLTExNSw3ICsxMTgsNiBAQCBmZmlfc3RhdHVzIGZmaV9wcmVw X2NpZl9tYWNoZGVwKGZmaV9jaWYgCi0gICBzd2l0Y2ggKGNpZi0+cnR5cGUtPnR5cGUpCi0gICAg IHsKLSAgICAgY2FzZSBGRklfVFlQRV9WT0lEOgotLSAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoK LSAgICAgY2FzZSBGRklfVFlQRV9GTE9BVDoKLSAgICAgY2FzZSBGRklfVFlQRV9ET1VCTEU6Ci0g ICAgICAgY2lmLT5mbGFncyA9ICh1bnNpZ25lZCkgY2lmLT5ydHlwZS0+dHlwZTsKLUBAIC0xMjYs NiArMTI4LDE3IEBAIGZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXAoZmZpX2NpZiAKLSAg ICAgICBjaWYtPmZsYWdzID0gKHVuc2lnbmVkKSBGRklfVFlQRV9TSU5UNjQ7Ci0gICAgICAgYnJl YWs7Ci0gCi0rICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgotKyAgICAgIGlmIChjaWYtPnJ0eXBl LT5zaXplIDw9IDQpCi0rCS8qIEEgQ29tcG9zaXRlIFR5cGUgbm90IGxhcmdlciB0aGFuIDQgYnl0 ZXMgaXMgcmV0dXJuZWQgaW4gcjAuICAqLwotKwljaWYtPmZsYWdzID0gKHVuc2lnbmVkKUZGSV9U WVBFX0lOVDsKLSsgICAgICBlbHNlCi0rCS8qIEEgQ29tcG9zaXRlIFR5cGUgbGFyZ2VyIHRoYW4g NCBieXRlcywgb3Igd2hvc2Ugc2l6ZSBjYW5ub3QKLSsJICAgYmUgZGV0ZXJtaW5lZCBzdGF0aWNh bGx5IC4uLiBpcyBzdG9yZWQgaW4gbWVtb3J5IGF0IGFuCi0rCSAgIGFkZHJlc3MgcGFzc2VkIFtp biByMF0uICAqLwotKwljaWYtPmZsYWdzID0gKHVuc2lnbmVkKUZGSV9UWVBFX1NUUlVDVDsKLSsg ICAgICBicmVhazsKLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBjaWYtPmZsYWdzID0gRkZJX1RZ UEVfSU5UOwotICAgICAgIGJyZWFrOwotQEAgLTE0MSwyMSArMTU0LDI3IEBAIHZvaWQgZmZpX2Nh bGwoZmZpX2NpZiAqY2lmLCB2b2lkICgqZm4pKCkKLSB7Ci0gICBleHRlbmRlZF9jaWYgZWNpZjsK LSAKLSsgIGludCBzbWFsbF9zdHJ1Y3QgPSAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9JTlQgCi0r CQkgICAgICAmJiBjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCk7Ci0rCi0gICBl Y2lmLmNpZiA9IGNpZjsKLSAgIGVjaWYuYXZhbHVlID0gYXZhbHVlOwotKwotKyAgdW5zaWduZWQg aW50IHRlbXA7Ci0gICAKLSAgIC8qIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3QgYW5k IHdlIGRvbid0IGhhdmUgYSByZXR1cm4JKi8KLSAgIC8qIHZhbHVlIGFkZHJlc3MgdGhlbiB3ZSBu ZWVkIHRvIG1ha2Ugb25lCQkgICAgICAgICovCi0gCi0gICBpZiAoKHJ2YWx1ZSA9PSBOVUxMKSAm JiAKLS0gICAgICAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpKQotKyAgICAg IChjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVCkpCi0gICAgIHsKLSAgICAgICBlY2lmLnJ2 YWx1ZSA9IGFsbG9jYShjaWYtPnJ0eXBlLT5zaXplKTsKLSAgICAgfQotKyAgZWxzZSBpZiAoc21h bGxfc3RydWN0KQotKyAgICBlY2lmLnJ2YWx1ZSA9ICZ0ZW1wOwotICAgZWxzZQotICAgICBlY2lm LnJ2YWx1ZSA9IHJ2YWx1ZTsKLS0gICAgCi0tICAKLSsKLSAgIHN3aXRjaCAoY2lmLT5hYmkpIAot ICAgICB7Ci0gICAgIGNhc2UgRkZJX1NZU1Y6Ci1AQCAtMTY3LDYgKzE4Niw4IEBAIHZvaWQgZmZp X2NhbGwoZmZpX2NpZiAqY2lmLCB2b2lkICgqZm4pKCkKLSAgICAgICBGRklfQVNTRVJUKDApOwot ICAgICAgIGJyZWFrOwotICAgICB9Ci0rICBpZiAoc21hbGxfc3RydWN0KQotKyAgICBtZW1jcHkg KHJ2YWx1ZSwgJnRlbXAsIGNpZi0+cnR5cGUtPnNpemUpOwotIH0KLSAKLSAvKiogcHJpdmF0ZSBt ZW1iZXJzICoqLwotQEAgLTIyOCw5ICsyNDksMTIgQEAgZmZpX3ByZXBfaW5jb21pbmdfYXJnc19T WVNWKGNoYXIgKnN0YWNrLAotICAgICB7Ci0gICAgICAgc2l6ZV90IHo7Ci0gCi0rICAgICAgc2l6 ZV90IGFsaWdubWVudCA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7Ci0rICAgICAgaWYgKGFsaWdubWVu dCA8IDQpCi0rCWFsaWdubWVudCA9IDQ7Ci0gICAgICAgLyogQWxpZ24gaWYgbmVjZXNzYXJ5ICov Ci0tICAgICAgaWYgKChzaXplb2YoaW50KSAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7Ci0tCWFy Z3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCBzaXplb2YoaW50KSk7Ci0rICAgICAgaWYgKChhbGln bm1lbnQgLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgewotKwlhcmdwID0gKGNoYXIgKikgQUxJR04o YXJncCwgYWxpZ25tZW50KTsKLSAgICAgICB9Ci0gCi0gICAgICAgeiA9ICgqcF9hcmcpLT5zaXpl OwotQEAgLTI0OCwyMSArMjcyLDE2IEBAIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVihjaGFy ICpzdGFjaywKLSAKLSAvKiBIb3cgdG8gbWFrZSBhIHRyYW1wb2xpbmUuICAqLwotIAotLSNkZWZp bmUgRkZJX0lOSVRfVFJBTVBPTElORShUUkFNUCxGVU4sQ1RYKSBcCi0tKHsgdW5zaWduZWQgY2hh ciAqX190cmFtcCA9ICh1bnNpZ25lZCBjaGFyKikoVFJBTVApOyBcCi0tICAgdW5zaWduZWQgaW50 ICBfX2Z1biA9ICh1bnNpZ25lZCBpbnQpKEZVTik7IFwKLS0gICB1bnNpZ25lZCBpbnQgIF9fY3R4 ID0gKHVuc2lnbmVkIGludCkoQ1RYKTsgXAotKyNkZWZpbmUgRkZJX0lOSVRfVFJBTVBPTElORShU UkFNUCxGVU4sQ1RYKQkJCQlcCi0rKHsgdW5zaWduZWQgY2hhciAqX190cmFtcCA9ICh1bnNpZ25l ZCBjaGFyKikoVFJBTVApOwkJCVwKLSsgICB1bnNpZ25lZCBpbnQgIF9fZnVuID0gKHVuc2lnbmVk IGludCkoRlVOKTsJCQkJXAotKyAgIHVuc2lnbmVkIGludCAgX19jdHggPSAodW5zaWduZWQgaW50 KShDVFgpOwkJCQlcCi0gICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFswXSA9IDB4ZTkyZDAw MGY7IC8qIHN0bWZkIHNwISwge3IwLXIzfSAqLwlcCi0tICAgKih1bnNpZ25lZCBpbnQqKSAmX190 cmFtcFs0XSA9IDB4ZTU5ZjAwMDA7IC8qIGxkciByMCwgW3BjXSAqLyBcCi0tICAgKih1bnNpZ25l ZCBpbnQqKSAmX190cmFtcFs4XSA9IDB4ZTU5ZmYwMDA7IC8qIGxkciBwYywgW3BjXSAqLyBcCi0t ICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFsxMl0gPSBfX2N0eDsgXAotLSAgICoodW5zaWdu ZWQgaW50KikgJl9fdHJhbXBbMTZdID0gX19mdW47IFwKLS0gICByZWdpc3RlciB1bnNpZ25lZCBs b25nIF9iZWcgX19hc20gKCJhMSIpID0gKHVuc2lnbmVkIGxvbmcpICgmX190cmFtcFswXSk7CVwK LS0gICByZWdpc3RlciB1bnNpZ25lZCBsb25nIF9lbmQgX19hc20gKCJhMiIpID0gKHVuc2lnbmVk IGxvbmcpICgmX190cmFtcFsxOV0pOwlcCi0tICAgcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBfZmxn IF9fYXNtICgiYTMiKSA9IDA7CQkJXAotLSAgIF9fYXNtIF9fdm9sYXRpbGUgKCJzd2kgMHg5ZjAw MDIJCUAgc3lzX2NhY2hlZmx1c2giCVwKLS0JICAgCQkgICAgOiAiPXIiIChfYmVnKQkJCQlcCi0t CSAgIAkJICAgIDogIjAiIChfYmVnKSwgInIiIChfZW5kKSwgInIiIChfZmxnKSk7CVwKLSsgICAq KHVuc2lnbmVkIGludCopICZfX3RyYW1wWzRdID0gMHhlNTlmMDAwMDsgLyogbGRyIHIwLCBbcGNd ICovCVwKLSsgICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1wWzhdID0gMHhlNTlmZjAwMDsgLyog bGRyIHBjLCBbcGNdICovCVwKLSsgICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1wWzEyXSA9IF9f Y3R4OwkJCQlcCi0rICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFsxNl0gPSBfX2Z1bjsJCQkJ XAotKyAgIF9fY2xlYXJfY2FjaGUoKCZfX3RyYW1wWzBdKSwgKCZfX3RyYW1wWzE5XSkpOwkJCVwK LSAgfSkKLSAKLSAKLS0tLSBsaWJmZmkvc3JjL2FybS9zeXN2LlMJKHJldmlzaW9uIDEyODA5MikK LSsrKyBsaWJmZmkvc3JjL2FybS9zeXN2LlMJKHJldmlzaW9uIDEyODA5MykKLUBAIC04Miw2ICs4 MiwxNCBAQAotICMgZGVmaW5lIGNhbGxfcmVnKHgpCW1vdglsciwgcGMgOyBtb3YJcGMsIHgKLSAj ZW5kaWYKLSAKLSsvKiBDb25kaXRpb25hbGx5IGNvbXBpbGUgdW53aW5kZXIgZGlyZWN0aXZlcy4g ICovCi0rI2lmZGVmIF9fQVJNX0VBQklfXwotKyNkZWZpbmUgVU5XSU5ECi0rI2Vsc2UKLSsjZGVm aW5lIFVOV0lORCBACi0rI2VuZGlmCQotKwotKwkKLSAjaWYgZGVmaW5lZChfX3RodW1iX18pICYm ICFkZWZpbmVkKF9fVEhVTUJfSU5URVJXT1JLX18pCi0gLm1hY3JvCUFSTV9GVU5DX1NUQVJUIG5h bWUKLSAJLnRleHQKLUBAIC05Miw2ICsxMDAsNyBAQAotIAlieAlwYwotIAlub3AKLSAJLmFybQot KwlVTldJTkQgLmZuc3RhcnQKLSAvKiBBIGhvb2sgdG8gdGVsbCBnZGIgdGhhdCB3ZSd2ZSBzd2l0 Y2hlZCB0byBBUk0gbW9kZS4gIEFsc28gdXNlZCB0byBjYWxsCi0gICAgZGlyZWN0bHkgZnJvbSBv dGhlciBsb2NhbCBhcm0gcm91dGluZXMuICAqLwotIF9MX19cbmFtZToJCQotQEAgLTEwMiw2ICsx MTEsNyBAQCBfTF9fXG5hbWU6CQkKLSAJLmFsaWduIDAKLSAJLmFybQotIAlFTlRSWShcbmFtZSkK LSsJVU5XSU5EIC5mbnN0YXJ0Ci0gLmVuZG0KLSAjZW5kaWYKLSAKLUBAIC0xMzQsOCArMTQ0LDEx IEBAIF9MX19cbmFtZToJCQotIEFSTV9GVU5DX1NUQVJUIGZmaV9jYWxsX1NZU1YKLSAJQCBTYXZl IHJlZ2lzdGVycwotICAgICAgICAgc3RtZmQJc3AhLCB7cjAtcjMsIGZwLCBscn0KLSsJVU5XSU5E IC5zYXZlCXtyMC1yMywgZnAsIGxyfQotIAltb3YJZnAsIHNwCi0gCi0rCVVOV0lORCAuc2V0ZnAJ ZnAsIHNwCi0rCi0gCUAgTWFrZSByb29tIGZvciBhbGwgb2YgdGhlIG5ldyBhcmdzLgotIAlzdWIJ c3AsIGZwLCByMgotIAotQEAgLTIwNSw2ICsyMTgsNyBAQCBMU1lNKExlcGlsb2d1ZSk6Ci0gCVJF VExETQkicjAtcjMsZnAiCi0gCi0gLmZmaV9jYWxsX1NZU1ZfZW5kOgotKwlVTldJTkQgLmZuZW5k Ci0gICAgICAgICAuc2l6ZSAgICBDTkFNRShmZmlfY2FsbF9TWVNWKSwuZmZpX2NhbGxfU1lTVl9l bmQtQ05BTUUoZmZpX2NhbGxfU1lTVikKLSAKLSAvKgotQEAgLTIxNiwyMSArMjMwLDQwIEBAIExT WU0oTGVwaWxvZ3VlKToKLSAqLwotIAotIEFSTV9GVU5DX1NUQVJUIGZmaV9jbG9zdXJlX1NZU1YK LSsJVU5XSU5EIC5wYWQgIzE2Ci0gCWFkZAlpcCwgc3AsICMxNgotIAlzdG1mZAlzcCEsIHtpcCwg bHJ9Ci0rCVVOV0lORCAuc2F2ZQl7cjAsIGxyfQotIAlhZGQJcjIsIHNwLCAjOAotKwkucGFkICMx NgotIAlzdWIJc3AsIHNwLCAjMTYKLSAJc3RyCXNwLCBbc3AsICM4XQotIAlhZGQJcjEsIHNwLCAj OAotIAlibAlmZmlfY2xvc3VyZV9TWVNWX2lubmVyCi0gCWNtcAlyMCwgI0ZGSV9UWVBFX0lOVAot IAliZXEJLkxyZXRpbnQKLSsKLSAJY21wCXIwLCAjRkZJX1RZUEVfRkxPQVQKLSsjaWZkZWYgX19T T0ZURlBfXwotKwliZXEJLkxyZXRpbnQKLSsjZWxzZQotIAliZXEJLkxyZXRmbG9hdAotKyNlbmRp ZgotKwotIAljbXAJcjAsICNGRklfVFlQRV9ET1VCTEUKLSsjaWZkZWYgX19TT0ZURlBfXwotKwli ZXEJLkxyZXRsb25nbG9uZwotKyNlbHNlCi0gCWJlcQkuTHJldGRvdWJsZQotKyNlbmRpZgotKwot IAljbXAJcjAsICNGRklfVFlQRV9MT05HRE9VQkxFCi0rI2lmZGVmIF9fU09GVEZQX18KLSsJYmVx CS5McmV0bG9uZ2xvbmcKLSsjZWxzZQotIAliZXEJLkxyZXRsb25nZG91YmxlCi0rI2VuZGlmCi0r Ci0gCWNtcAlyMCwgI0ZGSV9UWVBFX1NJTlQ2NAotIAliZXEJLkxyZXRsb25nbG9uZwotIC5MY2xv c3VyZV9lcGlsb2d1ZToKLUBAIC0yNDMsNiArMjc2LDggQEAgQVJNX0ZVTkNfU1RBUlQgZmZpX2Ns b3N1cmVfU1lTVgotIAlsZHIJcjAsIFtzcF0KLSAJbGRyCXIxLCBbc3AsICM0XQotIAliCS5MY2xv c3VyZV9lcGlsb2d1ZQotKwotKyNpZm5kZWYgX19TT0ZURlBfXwotIC5McmV0ZmxvYXQ6Ci0gCWxk ZnMJZjAsIFtzcF0KLSAJYgkuTGNsb3N1cmVfZXBpbG9ndWUKLUBAIC0yNTIsNiArMjg3LDkgQEAg QVJNX0ZVTkNfU1RBUlQgZmZpX2Nsb3N1cmVfU1lTVgotIC5McmV0bG9uZ2RvdWJsZToKLSAJbGRm ZAlmMCwgW3NwXQotIAliCS5MY2xvc3VyZV9lcGlsb2d1ZQotKyNlbmRpZgotKwotIC5mZmlfY2xv c3VyZV9TWVNWX2VuZDoKLSsJVU5XSU5EIC5mbmVuZAotICAgICAgICAgLnNpemUgICAgQ05BTUUo ZmZpX2Nsb3N1cmVfU1lTViksLmZmaV9jbG9zdXJlX1NZU1ZfZW5kLUNOQU1FKGZmaV9jbG9zdXJl X1NZU1YpCi0gCgpkaWZmIC0tZ2l0IGEvZ2NjNDEtamF2YS1hcm02LnBhdGNoIGIvZ2NjNDEtamF2 YS1hcm02LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjFiMWFiLi4wMDAw MDAwCi0tLSBhL2djYzQxLWphdmEtYXJtNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkzMiAr MCwwIEBACi0yMDA3LTA5LTA0ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KLQotCVBS IGphdmEvMjc5MDgKLQkqIHRlc3RzdWl0ZS9saWJqYXZhLmxhbmcvUFIyNzkwOC5qYXZhCi0JKHty dW4xLHJ1bjIscnVuM30uaXNSdW5uaW5nKTogTmV3IE1ldGhvZC4KLQkobWFpbik6IEZpeCByYWNl IGNvbmRpdGlvbi4KLQotMjAwNy0wOC0yOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+ Ci0KLQkqIGdudS9jbGFzc3BhdGgvbmF0Vk1TdGFja1dhbGtlci5jYyAoVk1TdGFja1dhbGtlcjo6 Z2V0Q2FsbGluZ0NsYXNzKToKLQlNYWtlIHN1cmUgd2UncmUgbm90IHNpYmNhbGxlZC4KLQkoR0VU X0NBTExJTkdfQ0xBU1MpOiBEZWZpbmUgZm9yIEFSTSBFQUJJLgotCi0yMDA3LTA4LTIyICBBbmRy ZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KLQotCSogY29uZmlndXJlLmhvc3QgKEJBQ0tUUkFD RVNQRUMpOiBBZGQgYXJtKi1saW51eCouCi0KLTIwMDctMDgtMjIgIEFuZHJldyBIYWxleSAgPGFw aEByZWRoYXQuY29tPgotCi0JKiBjb25maWd1cmUuYWMgKExJQlNURENYWFNQRUMpOiBOZXcuCi0J KiBjb25maWd1cmUuaG9zdDogQWRkIGFybSotbGludXgqIHRvIHB0aHJlYWQgdGVzdC4KLQkqIGNv bmZpZ3VyZS5hYyAoTElCR0NKVEVTVFNQRUMpOiBBZGQgcGF0aCB0byBsaWJzdGRjKysgZm9yIEFS TQotCUVBQkkuCi0JKiB0ZXN0c3VpdGUvbGliamF2YS5qbmkvam5pLmV4cCAoZ2NqX2puaV9jb21w aWxlX2NfdG9fc28pOiBVc2UKLQktZmV4Y2VwdGlvbnMgZm9yIEFSTSBFQUJJLgotCSogdGVzdHN1 aXRlL2xpYi9saWJqYXZhLmV4cCAobGliamF2YV9hcmd1bWVudHMpOiBBZGQgbGliZ2NqLXRlc3Qu c3BlYy4KLQkobGliamF2YV9pbnZva2UpOiBMb2cgdGhlIGludm9jYXRpb24uCi0KLTIwMDctMDgt MTUgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgotCi0JKiBjb25maWd1cmUuYWMgKGV4 dHJhX2xkZmxhZ3MpOiBEZWZpbmUuCi0JKiBNYWtlZmlsZS5hbTogVXNlIGV4dHJhX2xkZmxhZ3Mg Zm9yIGFsbCBleGVjdXRhYmxlcy4KLQotMjAwNy0wOC0xNCAgQW5kcmV3IEhhbGV5ICA8YXBoQHJl ZGhhdC5jb20+Ci0KLQkqIHN5c2RlcC9hcm0vYmFja3RyYWNlLmg6IFJlbW92ZSBzdHVicyBmb3Ig X1Vud2luZF9HZXRJUEluZm8sCi0JX1Vud2luZF9HZXRSZWdpb25TdGFydCwgYW5kIF9VbndpbmRf QmFja3RyYWNlLgotCi0yMDA3LTA3LTI3ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4K LQotCSogZ251L2NsYXNzcGF0aC9uYXRWTVN0YWNrV2Fsa2VyLmNjIChHRVRfQ0FMTElOR19DTEFT Uyk6IFN0dWIgZm9yCi0JQVJNIEVBQkkuCi0JKiBleGNlcHRpb24uY2MgKGdldF9leGNlcHRpb25f aGVhZGVyX2Zyb21fdWUpOiBOZXcuCi0JKGdldF90dHlwZV9lbnRyeSk6IEFSTSBFQUJJIHZlcnNp b24uCi0JKFBFUlNPTkFMSVRZX0ZVTkNUSU9OKTogQWRkIEFSTSBFQUJJIGNvZGUuCi0JKiBzeXNk ZXAvYXJtL2JhY2t0cmFjZS5oOiBOZXcgZmlsZS4KLQkqIHN0YWNrdHJhY2UuY2MgKF9VUkNfTk9S TUFMX1NUT1ApOiBOZXcuCi0JKiBjb25maWd1cmUuYWMgKGV4dHJhX2xkZmxhZ3NfbGliamF2YSk6 IEFkZCBsaWJzdXBjKysubGEgZm9yIEFSTQotCUVBQkkuCi0JKiBjb25maWd1cmUuaG9zdCAoQkFD S1RSQUNFU1BFQyk6IEFkZCBhcm0vYmFja3RyYWNlLmguCi0KLS0tLSBsaWJqYXZhL3Rlc3RzdWl0 ZS9NYWtlZmlsZS5pbi5qagkyMDA3LTA5LTA2IDE0OjA2OjEzLjAwMDAwMDAwMCArMDIwMAotKysr IGxpYmphdmEvdGVzdHN1aXRlL01ha2VmaWxlLmluCTIwMDctMDktMDYgMTc6MjA6NDIuMDAwMDAw MDAwICswMjAwCi1AQCAtMTYwLDYgKzE2MCw3IEBAIExJQkxUREwgPSBATElCTFRETEAKLSBMSUJN QUdJQyA9IEBMSUJNQUdJQ0AKLSBMSUJPQkpTID0gQExJQk9CSlNACi0gTElCUyA9IEBMSUJTQAot K0xJQlNURENYWFNQRUMgPSBATElCU1REQ1hYU1BFQ0AKLSBMSUJUT09MID0gQExJQlRPT0xACi0g TE5fUyA9IEBMTl9TQAotIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKLUBAIC0yNjQsNiArMjY1 LDcgQEAgYnVpbGRfdmVuZG9yID0gQGJ1aWxkX3ZlbmRvckAKLSBkYXRhZGlyID0gQGRhdGFkaXJA Ci0gZGJleGVjZGlyID0gQGRiZXhlY2RpckAKLSBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAK LStleHRyYV9sZGZsYWdzID0gQGV4dHJhX2xkZmxhZ3NACi0gZXh0cmFfbGRmbGFnc19saWJqYXZh ID0gQGV4dHJhX2xkZmxhZ3NfbGliamF2YUAKLSBneHhfaW5jbHVkZV9kaXIgPSBAZ3h4X2luY2x1 ZGVfZGlyQAotIGhlcmUgPSBAaGVyZUAKLS0tLSBsaWJqYXZhL3Rlc3RzdWl0ZS9saWJqYXZhLmpu aS9qbmkuZXhwLmpqCTIwMDctMDktMDYgMTQ6MDY6MTMuMDAwMDAwMDAwICswMjAwCi0rKysgbGli amF2YS90ZXN0c3VpdGUvbGliamF2YS5qbmkvam5pLmV4cAkyMDA3LTA5LTA2IDE3OjIwOjQyLjAw MDAwMDAwMCArMDIwMAotQEAgLTI5LDYgKzI5LDEwIEBAIHByb2MgZ2NqX2puaV9jb21waWxlX2Nf dG9fc28ge2ZpbGUge29wdGkKLSAgIHNldCBuYW1lIFtmaWxlIHJvb3RuYW1lICRmaWxlbmFtZV0K LSAgIHNldCBzb25hbWUgbGliJHtuYW1lfS4ke3NvX2V4dGVuc2lvbn0KLSAKLSsgIGlmIHsgW2lz dGFyZ2V0ICIqYXJtLSplYWJpKiJdIH0gewotKyAgICAgIGxhcHBlbmQgb3B0aW9ucyAiYWRkaXRp b25hbF9mbGFncz0tZmV4Y2VwdGlvbnMiCi0rICB9Ci0rCi0gICBsYXBwZW5kIG9wdGlvbnMgImFk ZGl0aW9uYWxfZmxhZ3M9JHtzb19mbGFnfSAtZlBJQyIKLSAgICMgRmluZCB0aGUgZ2VuZXJhdGVk IGhlYWRlci4KLSAgIGxhcHBlbmQgb3B0aW9ucyAiYWRkaXRpb25hbF9mbGFncz0tSS4gLUkuLiAt SSRzcmNkaXIvJHN1YmRpciIKLS0tLSBsaWJqYXZhL3Rlc3RzdWl0ZS9saWIvbGliamF2YS5leHAu amoJMjAwNy0wOS0wNiAxNDowNjoxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJqYXZhL3Rlc3Rz dWl0ZS9saWIvbGliamF2YS5leHAJMjAwNy0wOS0wNiAxNzoyMDo0Mi4wMDAwMDAwMDAgKzAyMDAK LUBAIC0zNzksNiArMzc5LDcgQEAgcHJvYyBsaWJqYXZhX2FyZ3VtZW50cyB7e21vZGUgY29tcGls ZX19IAotICAgICBpZiB7JG1vZGUgPT0gImxpbmsifSB7Ci0gCWdsb2JhbCB3cmFwcGVyX2ZpbGUg d3JhcF9jb21waWxlX2ZsYWdzCi0gCWxhcHBlbmQgYXJncyAiYWRkaXRpb25hbF9mbGFncz0kd3Jh cF9jb21waWxlX2ZsYWdzIgotKwlsYXBwZW5kIGFyZ3MgImFkZGl0aW9uYWxfZmxhZ3M9LXNwZWNz PWxpYmdjai10ZXN0LnNwZWMiCi0gCWxhcHBlbmQgYXJncyAibGlicz0kd3JhcHBlcl9maWxlIgot IAlsYXBwZW5kIGFyZ3MgImxpYnM9JGxpYmphdmEiCi0gCWxhcHBlbmQgYXJncyBkZWJ1ZwotLS0t IGxpYmphdmEvY29uZmlndXJlLmpqCTIwMDctMDktMDYgMTQ6MDY6MTUuMDAwMDAwMDAwICswMjAw Ci0rKysgbGliamF2YS9jb25maWd1cmUJMjAwNy0wOS0wNiAxNzoyNzowNC4wMDAwMDAwMDAgKzAy MDAKLUBAIC0zMTAsNyArMzEwLDcgQEAgYWNfaW5jbHVkZXNfZGVmYXVsdD0iXAotICMgaW5jbHVk ZSA8dW5pc3RkLmg+Ci0gI2VuZGlmIgotIAotLWFjX3N1YnN0X3ZhcnM9J1NIRUxMIFBBVEhfU0VQ QVJBVE9SIFBBQ0tBR0VfTkFNRSBQQUNLQUdFX1RBUk5BTUUgUEFDS0FHRV9WRVJTSU9OIFBBQ0tB R0VfU1RSSU5HIFBBQ0tBR0VfQlVHUkVQT1JUIGV4ZWNfcHJlZml4IHByZWZpeCBwcm9ncmFtX3Ry YW5zZm9ybV9uYW1lIGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YWRpciBzeXNjb25mZGly IHNoYXJlZHN0YXRlZGlyIGxvY2Fsc3RhdGVkaXIgbGliZGlyIGluY2x1ZGVkaXIgb2xkaW5jbHVk ZWRpciBpbmZvZGlyIG1hbmRpciBidWlsZF9hbGlhcyBob3N0X2FsaWFzIHRhcmdldF9hbGlhcyBE RUZTIEVDSE9fQyBFQ0hPX04gRUNIT19UIExJQlMgYnVpbGQgYnVpbGRfY3B1IGJ1aWxkX3ZlbmRv ciBidWlsZF9vcyBidWlsZF9zdWJkaXIgaG9zdF9zdWJkaXIgdGFyZ2V0X3N1YmRpciBsaWJnY2pf YmFzZWRpciBob3N0IGhvc3RfY3B1IGhvc3RfdmVuZG9yIGhvc3Rfb3MgdGFyZ2V0IHRhcmdldF9j cHUgdGFyZ2V0X3ZlbmRvciB0YXJnZXRfb3MgdGFyZ2V0X25vbmNhbm9uaWNhbCBMTl9TIG1raW5z dGFsbGRpcnMgSkFWQV9NQUlOVEFJTkVSX01PREVfVFJVRSBKQVZBX01BSU5UQUlORVJfTU9ERV9G QUxTRSBDQyBhY19jdF9DQyBFWEVFWFQgT0JKRVhUIENYWCBhY19jdF9DWFggQ0ZMQUdTIENYWEZM QUdTIExERkxBR1MgSU5TVEFMTF9QUk9HUkFNIElOU1RBTExfU0NSSVBUIElOU1RBTExfREFUQSBD WUdQQVRIX1cgUEFDS0FHRSBWRVJTSU9OIEFDTE9DQUwgQVVUT0NPTkYgQVVUT01BS0UgQVVUT0hF QURFUiBNQUtFSU5GTyBpbnN0YWxsX3NoIFNUUklQIGFjX2N0X1NUUklQIElOU1RBTExfU1RSSVBf UFJPR1JBTSBta2Rpcl9wIEFXSyBTRVRfTUFLRSBhbV9fbGVhZGluZ19kb3QgQU1UQVIgYW1fX3Rh ciBhbV9fdW50YXIgREVQRElSIGFtX19pbmNsdWRlIGFtX19xdW90ZSBBTURFUF9UUlVFIEFNREVQ X0ZBTFNFIEFNREVQQkFDS1NMQVNIIENDREVQTU9ERSBhbV9fZmFzdGRlcENDX1RSVUUgYW1fX2Zh c3RkZXBDQ19GQUxTRSBDWFhERVBNT0RFIGFtX19mYXN0ZGVwQ1hYX1RSVUUgYW1fX2Zhc3RkZXBD WFhfRkFMU0UgQVMgYWNfY3RfQVMgTEQgYWNfY3RfTEQgQVIgYWNfY3RfQVIgUkFOTElCIGFjX2N0 X1JBTkxJQiBKQVIgWklQIFVOWklQIE1BSU5UQUlORVJfTU9ERV9UUlVFIE1BSU5UQUlORVJfTU9E RV9GQUxTRSBNQUlOVCBMSUJHQ0pfQ0ZMQUdTIExJQkdDSl9DWFhGTEFHUyBMSUJHQ0pfSkFWQUZM QUdTIExJQkdDSl9MRF9TWU1CT0xJQyBMSUJHQ0pERUJVRyBUT09MS0lUIFhMSUJfQVdUX1RSVUUg WExJQl9BV1RfRkFMU0UgWF9BV1RfVFJVRSBYX0FXVF9GQUxTRSBHQ0pfRk9SX0VDSlggR0NKSCBo b3N0X2V4ZWV4dCBJTkNMVERMIExJQkxUREwgRElSTFRETCBMSUJUT09MIENYWENQUCBDUFBGTEFH UyBHQ0ogR0NKRkxBR1MgR0NKREVQTU9ERSBhbV9fZmFzdGRlcEdDSl9UUlVFIGFtX19mYXN0ZGVw R0NKX0ZBTFNFIHN1YmRpcnMgVEVTVFNVQkRJUl9UUlVFIFRFU1RTVUJESVJfRkFMU0UgRUNKX0JV SUxEX0pBUiBFQ0pfSkFSIEJVSUxEX0VDSjFfVFJVRSBCVUlMRF9FQ0oxX0ZBTFNFIElOU1RBTExf RUNKX0pBUl9UUlVFIElOU1RBTExfRUNKX0pBUl9GQUxTRSBKQVZBX0hPTUVfU0VUX1RSVUUgSkFW QV9IT01FX1NFVF9GQUxTRSBKQVZBX0hPTUUgSU5URVJQUkVURVIgTElCRkZJIExJQkZGSUlOQ1Mg UExBVEZPUk0gQ1BQIEVHUkVQIFVTSU5HX1dJTjMyX1BMQVRGT1JNX1RSVUUgVVNJTkdfV0lOMzJf UExBVEZPUk1fRkFMU0UgVVNJTkdfUE9TSVhfUExBVEZPUk1fVFJVRSBVU0lOR19QT1NJWF9QTEFU Rk9STV9GQUxTRSBVU0lOR19EQVJXSU5fQ1JUX1RSVUUgVVNJTkdfREFSV0lOX0NSVF9GQUxTRSBT WVNURU1TUEVDIExJQkdDSlRFU1RTUEVDIFpMSUJTUEVDIFpMSUJURVNUU1BFQyBYX0NGTEFHUyBY X1BSRV9MSUJTIFhfTElCUyBYX0VYVFJBX0xJQlMgZXh0cmFfbGRmbGFnc19saWJqYXZhIEdDTElC UyBHQ0lOQ1MgR0NERVBTIEdDU1BFQyBKQzFHQ1NQRUMgR0NURVNUU1BFQyBVU0lOR19CT0VITUdD X1RSVUUgVVNJTkdfQk9FSE1HQ19GQUxTRSBVU0lOR19OT0dDX1RSVUUgVVNJTkdfTk9HQ19GQUxT RSBUSFJFQURMSUJTIFRIUkVBRElOQ1MgVEhSRUFEREVQUyBUSFJFQURTUEVDIFRIUkVBRFNUQVJU RklMRVNQRUMgVEhSRUFETERGTEFHUyBUSFJFQURDWFhGTEFHUyBVU0lOR19QT1NJWF9USFJFQURT X1RSVUUgVVNJTkdfUE9TSVhfVEhSRUFEU19GQUxTRSBVU0lOR19XSU4zMl9USFJFQURTX1RSVUUg VVNJTkdfV0lOMzJfVEhSRUFEU19GQUxTRSBVU0lOR19OT19USFJFQURTX1RSVUUgVVNJTkdfTk9f VEhSRUFEU19GQUxTRSBVU0VfTElCR0NKX0JDX1RSVUUgVVNFX0xJQkdDSl9CQ19GQUxTRSBMSUJH Q0pfU1BFQyBIQVNIX1NZTkNfU1BFQyBVU0lOR19HQ0NfVFJVRSBVU0lOR19HQ0NfRkFMU0UgTElC SUNPTlYgTFRMSUJJQ09OViBMSUJNQUdJQyBQS0dfQ09ORklHIEdUS19DRkxBR1MgR1RLX0xJQlMg R0xJQl9DRkxBR1MgR0xJQl9MSUJTIExJQkFSVF9DRkxBR1MgTElCQVJUX0xJQlMgQ0xBU1NQQVRI X1NFUEFSQVRPUiBhY19jdF9HQ0ogWkxJQlMgU1lTX1pMSUJTIFpJTkNTIERJVklERVNQRUMgQ0hF Q0tSRUZTUEVDIEVYQ0VQVElPTlNQRUMgQkFDS1RSQUNFU1BFQyBJRUVFU1BFQyBOQVRJVkVfVFJV RSBOQVRJVkVfRkFMU0UgRU5BQkxFX1NIQVJFRF9UUlVFIEVOQUJMRV9TSEFSRURfRkFMU0UgTkVF RFNfREFUQV9TVEFSVF9UUlVFIE5FRURTX0RBVEFfU1RBUlRfRkFMU0UgR0NDX1VOV0lORF9JTkNM VURFIHRvb2xleGVjZGlyIHRvb2xleGVjbWFpbmxpYmRpciB0b29sZXhlY2xpYmRpciBkYmV4ZWNk aXIgR0NKVkVSU0lPTiBneHhfaW5jbHVkZV9kaXIgbGlic3RkY3h4X2luY2RpciBBTExPQ0EgUEVS TCBTWVNERVBfU09VUkNFUyBBTk9OVkVSU0NSSVBUX1RSVUUgQU5PTlZFUlNDUklQVF9GQUxTRSBM RF9TVEFSVF9TVEFUSUNfU1BFQyBMRF9GSU5JU0hfU1RBVElDX1NQRUMgaGVyZSBMSUJPQkpTIExU TElCT0JKUycKLSthY19zdWJzdF92YXJzPSdTSEVMTCBQQVRIX1NFUEFSQVRPUiBQQUNLQUdFX05B TUUgUEFDS0FHRV9UQVJOQU1FIFBBQ0tBR0VfVkVSU0lPTiBQQUNLQUdFX1NUUklORyBQQUNLQUdF X0JVR1JFUE9SVCBleGVjX3ByZWZpeCBwcmVmaXggcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSBiaW5k aXIgc2JpbmRpciBsaWJleGVjZGlyIGRhdGFkaXIgc3lzY29uZmRpciBzaGFyZWRzdGF0ZWRpciBs b2NhbHN0YXRlZGlyIGxpYmRpciBpbmNsdWRlZGlyIG9sZGluY2x1ZGVkaXIgaW5mb2RpciBtYW5k aXIgYnVpbGRfYWxpYXMgaG9zdF9hbGlhcyB0YXJnZXRfYWxpYXMgREVGUyBFQ0hPX0MgRUNIT19O IEVDSE9fVCBMSUJTIGJ1aWxkIGJ1aWxkX2NwdSBidWlsZF92ZW5kb3IgYnVpbGRfb3MgYnVpbGRf c3ViZGlyIGhvc3Rfc3ViZGlyIHRhcmdldF9zdWJkaXIgbGliZ2NqX2Jhc2VkaXIgaG9zdCBob3N0 X2NwdSBob3N0X3ZlbmRvciBob3N0X29zIHRhcmdldCB0YXJnZXRfY3B1IHRhcmdldF92ZW5kb3Ig dGFyZ2V0X29zIHRhcmdldF9ub25jYW5vbmljYWwgTE5fUyBta2luc3RhbGxkaXJzIEpBVkFfTUFJ TlRBSU5FUl9NT0RFX1RSVUUgSkFWQV9NQUlOVEFJTkVSX01PREVfRkFMU0UgQ0MgYWNfY3RfQ0Mg RVhFRVhUIE9CSkVYVCBDWFggYWNfY3RfQ1hYIENGTEFHUyBDWFhGTEFHUyBMREZMQUdTIElOU1RB TExfUFJPR1JBTSBJTlNUQUxMX1NDUklQVCBJTlNUQUxMX0RBVEEgQ1lHUEFUSF9XIFBBQ0tBR0Ug VkVSU0lPTiBBQ0xPQ0FMIEFVVE9DT05GIEFVVE9NQUtFIEFVVE9IRUFERVIgTUFLRUlORk8gaW5z dGFsbF9zaCBTVFJJUCBhY19jdF9TVFJJUCBJTlNUQUxMX1NUUklQX1BST0dSQU0gbWtkaXJfcCBB V0sgU0VUX01BS0UgYW1fX2xlYWRpbmdfZG90IEFNVEFSIGFtX190YXIgYW1fX3VudGFyIERFUERJ UiBhbV9faW5jbHVkZSBhbV9fcXVvdGUgQU1ERVBfVFJVRSBBTURFUF9GQUxTRSBBTURFUEJBQ0tT TEFTSCBDQ0RFUE1PREUgYW1fX2Zhc3RkZXBDQ19UUlVFIGFtX19mYXN0ZGVwQ0NfRkFMU0UgQ1hY REVQTU9ERSBhbV9fZmFzdGRlcENYWF9UUlVFIGFtX19mYXN0ZGVwQ1hYX0ZBTFNFIEFTIGFjX2N0 X0FTIExEIGFjX2N0X0xEIEFSIGFjX2N0X0FSIFJBTkxJQiBhY19jdF9SQU5MSUIgSkFSIFpJUCBV TlpJUCBNQUlOVEFJTkVSX01PREVfVFJVRSBNQUlOVEFJTkVSX01PREVfRkFMU0UgTUFJTlQgTElC R0NKX0NGTEFHUyBMSUJHQ0pfQ1hYRkxBR1MgTElCR0NKX0pBVkFGTEFHUyBMSUJHQ0pfTERfU1lN Qk9MSUMgTElCR0NKREVCVUcgVE9PTEtJVCBYTElCX0FXVF9UUlVFIFhMSUJfQVdUX0ZBTFNFIFhf QVdUX1RSVUUgWF9BV1RfRkFMU0UgR0NKX0ZPUl9FQ0pYIEdDSkggaG9zdF9leGVleHQgSU5DTFRE TCBMSUJMVERMIERJUkxUREwgTElCVE9PTCBDWFhDUFAgQ1BQRkxBR1MgR0NKIEdDSkZMQUdTIEdD SkRFUE1PREUgYW1fX2Zhc3RkZXBHQ0pfVFJVRSBhbV9fZmFzdGRlcEdDSl9GQUxTRSBzdWJkaXJz IFRFU1RTVUJESVJfVFJVRSBURVNUU1VCRElSX0ZBTFNFIEVDSl9CVUlMRF9KQVIgRUNKX0pBUiBC VUlMRF9FQ0oxX1RSVUUgQlVJTERfRUNKMV9GQUxTRSBJTlNUQUxMX0VDSl9KQVJfVFJVRSBJTlNU QUxMX0VDSl9KQVJfRkFMU0UgSkFWQV9IT01FX1NFVF9UUlVFIEpBVkFfSE9NRV9TRVRfRkFMU0Ug SkFWQV9IT01FIElOVEVSUFJFVEVSIExJQkZGSSBMSUJGRklJTkNTIFBMQVRGT1JNIENQUCBFR1JF UCBVU0lOR19XSU4zMl9QTEFURk9STV9UUlVFIFVTSU5HX1dJTjMyX1BMQVRGT1JNX0ZBTFNFIFVT SU5HX1BPU0lYX1BMQVRGT1JNX1RSVUUgVVNJTkdfUE9TSVhfUExBVEZPUk1fRkFMU0UgVVNJTkdf REFSV0lOX0NSVF9UUlVFIFVTSU5HX0RBUldJTl9DUlRfRkFMU0UgU1lTVEVNU1BFQyBaTElCU1BF QyBaTElCVEVTVFNQRUMgWF9DRkxBR1MgWF9QUkVfTElCUyBYX0xJQlMgWF9FWFRSQV9MSUJTIGV4 dHJhX2xkZmxhZ3NfbGliamF2YSBleHRyYV9sZGZsYWdzIExJQlNURENYWFNQRUMgTElCR0NKVEVT VFNQRUMgR0NMSUJTIEdDSU5DUyBHQ0RFUFMgR0NTUEVDIEpDMUdDU1BFQyBHQ1RFU1RTUEVDIFVT SU5HX0JPRUhNR0NfVFJVRSBVU0lOR19CT0VITUdDX0ZBTFNFIFVTSU5HX05PR0NfVFJVRSBVU0lO R19OT0dDX0ZBTFNFIFRIUkVBRExJQlMgVEhSRUFESU5DUyBUSFJFQURERVBTIFRIUkVBRFNQRUMg VEhSRUFEU1RBUlRGSUxFU1BFQyBUSFJFQURMREZMQUdTIFRIUkVBRENYWEZMQUdTIFVTSU5HX1BP U0lYX1RIUkVBRFNfVFJVRSBVU0lOR19QT1NJWF9USFJFQURTX0ZBTFNFIFVTSU5HX1dJTjMyX1RI UkVBRFNfVFJVRSBVU0lOR19XSU4zMl9USFJFQURTX0ZBTFNFIFVTSU5HX05PX1RIUkVBRFNfVFJV RSBVU0lOR19OT19USFJFQURTX0ZBTFNFIFVTRV9MSUJHQ0pfQkNfVFJVRSBVU0VfTElCR0NKX0JD X0ZBTFNFIExJQkdDSl9TUEVDIEhBU0hfU1lOQ19TUEVDIFVTSU5HX0dDQ19UUlVFIFVTSU5HX0dD Q19GQUxTRSBMSUJJQ09OViBMVExJQklDT05WIExJQk1BR0lDIFBLR19DT05GSUcgR1RLX0NGTEFH UyBHVEtfTElCUyBHTElCX0NGTEFHUyBHTElCX0xJQlMgTElCQVJUX0NGTEFHUyBMSUJBUlRfTElC UyBDTEFTU1BBVEhfU0VQQVJBVE9SIGFjX2N0X0dDSiBaTElCUyBTWVNfWkxJQlMgWklOQ1MgRElW SURFU1BFQyBDSEVDS1JFRlNQRUMgRVhDRVBUSU9OU1BFQyBCQUNLVFJBQ0VTUEVDIElFRUVTUEVD IE5BVElWRV9UUlVFIE5BVElWRV9GQUxTRSBFTkFCTEVfU0hBUkVEX1RSVUUgRU5BQkxFX1NIQVJF RF9GQUxTRSBORUVEU19EQVRBX1NUQVJUX1RSVUUgTkVFRFNfREFUQV9TVEFSVF9GQUxTRSBHQ0Nf VU5XSU5EX0lOQ0xVREUgdG9vbGV4ZWNkaXIgdG9vbGV4ZWNtYWlubGliZGlyIHRvb2xleGVjbGli ZGlyIGRiZXhlY2RpciBHQ0pWRVJTSU9OIGd4eF9pbmNsdWRlX2RpciBsaWJzdGRjeHhfaW5jZGly IEFMTE9DQSBQRVJMIFNZU0RFUF9TT1VSQ0VTIEFOT05WRVJTQ1JJUFRfVFJVRSBBTk9OVkVSU0NS SVBUX0ZBTFNFIExEX1NUQVJUX1NUQVRJQ19TUEVDIExEX0ZJTklTSF9TVEFUSUNfU1BFQyBoZXJl IExJQk9CSlMgTFRMSUJPQkpTJwotIGFjX3N1YnN0X2ZpbGVzPScnCi0gCi0gIyBJbml0aWFsaXpl IHNvbWUgdmFyaWFibGVzIHNldCBieSBvcHRpb25zLgotQEAgLTc2NDAsOSArNzY0MCw2IEBAIGNh c2UgIiR7aG9zdH0iIGluCi0gZXNhYwotIAotIAotLUxJQkdDSlRFU1RTUEVDPSItTGAke1BXRENN RC1wd2R9YC8ubGlicyAtcnBhdGggYCR7UFdEQ01ELXB3ZH1gLy5saWJzIgotLQotLQotIAotICMg Q2hlY2sgd2hldGhlciAtLXdpdGgtc3lzdGVtLXpsaWIgb3IgLS13aXRob3V0LXN5c3RlbS16bGli IHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke3dpdGhfc3lzdGVtX3psaWIrc2V0fSIgPSBzZXQ7IHRo ZW4KLUBAIC05MTI2LDYgKzkxMjMsOSBAQCBmaQotICMgRklYTUU6IHRoaXMgc2hvdWxkIGJlIF9s aWJzIG9uIHNvbWUgaG9zdHMuCi0gbGlic3ViZGlyPS5saWJzCi0gCi0rTElCR0NKVEVTVFNQRUM9 Ii1MYCR7UFdEQ01ELXB3ZH1gLy5saWJzIC1ycGF0aCBgJHtQV0RDTUQtcHdkfWAvLmxpYnMiCi0r Ci0rTElCU1REQ1hYU1BFQz0KLSAjIGV4dHJhIExEIEZsYWdzIHdoaWNoIGFyZSByZXF1aXJlZCBm b3IgdGFyZ2V0cwotIGNhc2UgIiR7aG9zdH0iIGluCi0gKi0qLWRhcndpblswLTddLiopCi1AQCAt OTEzNCw5ICs5MTM0LDIxIEBAIGNhc2UgIiR7aG9zdH0iIGluCi0gICAgICMgb24gRGFyd2luIC1z aW5nbGVfbW9kdWxlIHNwZWVkcyB1cCBsb2FkaW5nIG9mIHRoZSBkeW5hbWljIGxpYnJhcmllcy4K LSAgICAgZXh0cmFfbGRmbGFnc19saWJqYXZhPS1XbCwtc2luZ2xlX21vZHVsZQotICAgICA7Owot K2FybSpsaW51eCplYWJpKQotKyAgICAjIFNvbWUgb2YgdGhlIEFSTSB1bndpbmRlciBjb2RlIGlz IGFjdHVhbGx5IGluIGxpYnN0ZGMrKy4gIFdlCi0rICAgICMgY291bGQgaW4gcHJpbmNpcGxlIHJl cGxpY2F0ZSBpdCBpbiBsaWJnY2osIGJ1dCBpdCdzIGJldHRlciB0bwotKyAgICAjIGhhdmUgYSBk ZXBlbmRlbmN5IG9uIGxpYnN0ZGMrKy4KLSsgICAgZXh0cmFfbGRmbGFncz0nLUwkKGhlcmUpLy4u L2xpYnN0ZGMrKy12My9zcmMgLWxzdGRjKysnCi0rICAgIExJQlNURENYWFNQRUM9LWxzdGRjKysK LSsgICAgTElCR0NKVEVTVFNQRUM9Ii1MYCR7UFdEQ01ELXB3ZH1gLy5saWJzIC1MYCR7UFdEQ01E LXB3ZH1gLy4uL2xpYnN0ZGMrKy12My9zcmMvLmxpYnMgLXJwYXRoIGAke1BXRENNRC1wd2R9YC8u bGliczpgJHtQV0RDTUQtcHdkfWAvLi4vbGlic3RkYysrLXYzL3NyYy8ubGlicyAtbHN0ZGMrKyIK LSsgICAgOzsKLSBlc2FjCi0gCi0gCi0rCi0rCi0rCi0rCi0gIyBBbGxvdyB0aGUgR0MgdG8gYmUg ZGlzYWJsZWQuICBDYW4gYmUgdXNlZnVsIHdoZW4gZGVidWdnaW5nLgotIGVjaG8gIiRhc19tZTok TElORU5POiBjaGVja2luZyBmb3IgZ2FyYmFnZSBjb2xsZWN0b3IgdG8gdXNlIiA+JjUKLSBlY2hv ICRFQ0hPX04gImNoZWNraW5nIGZvciBnYXJiYWdlIGNvbGxlY3RvciB0byB1c2UuLi4gJEVDSE9f QyIgPiY2Ci1AQCAtMTgwMjQsNyArMTgwMzYsNiBAQCBzLEBVU0lOR19QT1NJWF9QTEFURk9STV9G QUxTRUAsJFVTSU5HX1BPCi0gcyxAVVNJTkdfREFSV0lOX0NSVF9UUlVFQCwkVVNJTkdfREFSV0lO X0NSVF9UUlVFLDt0IHQKLSBzLEBVU0lOR19EQVJXSU5fQ1JUX0ZBTFNFQCwkVVNJTkdfREFSV0lO X0NSVF9GQUxTRSw7dCB0Ci0gcyxAU1lTVEVNU1BFQ0AsJFNZU1RFTVNQRUMsO3QgdAotLXMsQExJ QkdDSlRFU1RTUEVDQCwkTElCR0NKVEVTVFNQRUMsO3QgdAotIHMsQFpMSUJTUEVDQCwkWkxJQlNQ RUMsO3QgdAotIHMsQFpMSUJURVNUU1BFQ0AsJFpMSUJURVNUU1BFQyw7dCB0Ci0gcyxAWF9DRkxB R1NALCRYX0NGTEFHUyw7dCB0Ci1AQCAtMTgwMzIsNiArMTgwNDMsOSBAQCBzLEBYX1BSRV9MSUJT QCwkWF9QUkVfTElCUyw7dCB0Ci0gcyxAWF9MSUJTQCwkWF9MSUJTLDt0IHQKLSBzLEBYX0VYVFJB X0xJQlNALCRYX0VYVFJBX0xJQlMsO3QgdAotIHMsQGV4dHJhX2xkZmxhZ3NfbGliamF2YUAsJGV4 dHJhX2xkZmxhZ3NfbGliamF2YSw7dCB0Ci0rcyxAZXh0cmFfbGRmbGFnc0AsJGV4dHJhX2xkZmxh Z3MsO3QgdAotK3MsQExJQlNURENYWFNQRUNALCRMSUJTVERDWFhTUEVDLDt0IHQKLStzLEBMSUJH Q0pURVNUU1BFQ0AsJExJQkdDSlRFU1RTUEVDLDt0IHQKLSBzLEBHQ0xJQlNALCRHQ0xJQlMsO3Qg dAotIHMsQEdDSU5DU0AsJEdDSU5DUyw7dCB0Ci0gcyxAR0NERVBTQCwkR0NERVBTLDt0IHQKLS0t LSBsaWJqYXZhL01ha2VmaWxlLmluLmpqCTIwMDctMDktMDYgMTQ6MDY6MTUuMDAwMDAwMDAwICsw MjAwCi0rKysgbGliamF2YS9NYWtlZmlsZS5pbgkyMDA3LTA5LTA2IDE3OjI4OjUxLjAwMDAwMDAw MCArMDIwMAotQEAgLTYyNyw2ICs2MjcsNyBAQCBMSUJMVERMID0gQExJQkxURExACi0gTElCTUFH SUMgPSBATElCTUFHSUNACi0gTElCT0JKUyA9IEBMSUJPQkpTQAotIExJQlMgPSBATElCU0AKLStM SUJTVERDWFhTUEVDID0gQExJQlNURENYWFNQRUNACi0gTElCVE9PTCA9IEBMSUJUT09MQAotIExO X1MgPSBATE5fU0AKLSBMVExJQklDT05WID0gQExUTElCSUNPTlZACi1AQCAtNzMxLDYgKzczMiw3 IEBAIGJ1aWxkX3ZlbmRvciA9IEBidWlsZF92ZW5kb3JACi0gZGF0YWRpciA9IEBkYXRhZGlyQAot IGRiZXhlY2RpciA9IEBkYmV4ZWNkaXJACi0gZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi0r ZXh0cmFfbGRmbGFncyA9IEBleHRyYV9sZGZsYWdzQAotIGV4dHJhX2xkZmxhZ3NfbGliamF2YSA9 IEBleHRyYV9sZGZsYWdzX2xpYmphdmFAICQoYW1fX2FwcGVuZF81KQotIGd4eF9pbmNsdWRlX2Rp ciA9IEBneHhfaW5jbHVkZV9kaXJACi0gaGVyZSA9IEBoZXJlQAotQEAgLTgxMiw3ICs4MTQsNyBA QCBHQ0pMSU5LID0gJChMSUJUT09MKSAtLXRhZz1HQ0ogLS1tb2RlPWxpCi0gCi0gR0NKX0ZPUl9F Q0pYX0xJTksgPSAkKEdDSl9GT1JfRUNKWCkgLW8gJEAKLSBMSUJMSU5LID0gJChMSUJUT09MKSAt LXRhZz1DWFggLS1tb2RlPWxpbmsgJChDWFgpIC1MJChoZXJlKSAkKEpDMUZMQUdTKSBcCi0tICAg ICAgICAgICQoTERGTEFHUykgJChleHRyYV9sZGZsYWdzX2xpYmphdmEpIC1vICRACi0rICAgICAg ICAgICQoTERGTEFHUykgJChleHRyYV9sZGZsYWdzX2xpYmphdmEpICQoZXh0cmFfbGRmbGFncykg LW8gJEAKLSAKLSBXQVJOSU5HUyA9IC1XZXh0cmEgLVdhbGwKLSBBTV9DWFhGTEFHUyA9IFwKLUBA IC04NzIsNyArODc0LDcgQEAgeGxpYl9uYXRfZmlsZXMgPSAkKHhsaWJfbmF0X3NvdXJjZV9maWxl cwotIAotICMgSW5jbHVkZSBUSFJFQURMSUJTIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJl Y3QgdmVyc2lvbiBvZgotICMgY2VydGFpbiBsaW51eHRocmVhZCBmdW5jdGlvbnMgZ2V0IGxpbmtl ZDoKLS1saWJnY2pfbGFfTERGTEFHUyA9IC1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSAkKFRIUkVB RExERkxBR1MpICQoVEhSRUFETElCUykgXAotK2xpYmdjal9sYV9MREZMQUdTID0gLXJwYXRoICQo dG9vbGV4ZWNsaWJkaXIpICQoVEhSRUFETERGTEFHUykgJChleHRyYV9sZGZsYWdzKSAkKFRIUkVB RExJQlMpIFwKLSAJJChMSUJMVERMKSAkKFNZU19aTElCUykgXAotIAktdmVyc2lvbi1pbmZvIGBn cmVwIC12ICdeXCMnICQoc3JjZGlyKS9saWJ0b29sLXZlcnNpb25gCi0gCi1AQCAtNzc4NCw3ICs3 Nzg2LDcgQEAgTk0gPSBubQotIAotIGp2X2NvbnZlcnRfU09VUkNFUyA9IAotIGp2X2NvbnZlcnRf TERGTEFHUyA9IC0tbWFpbj1nbnUuZ2NqLmNvbnZlcnQuQ29udmVydCBcCi0tCS1ycGF0aCAkKHRv b2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpCi0rCS1ycGF0aCAk KHRvb2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpICQoZXh0cmFf bGRmbGFncykKLSAKLSBqdl9jb252ZXJ0X0xJTksgPSAkKEdDSkxJTkspCi0ganZfY29udmVydF9M REFERCA9IC1MJChoZXJlKS8ubGlicyBsaWJnY2oubGEKLUBAIC03ODAwLDcgKzc4MDIsNyBAQCBn Y2pfZGJ0b29sX0xEQUREID0gZ251L2djai90b29scy9nY2pfZGJ0Ci0gZ2NqX2RidG9vbF9ERVBF TkRFTkNJRVMgPSBnbnUvZ2NqL3Rvb2xzL2djal9kYnRvb2wubG8gbGliZ2NqLmxhIGxpYmdjai5z cGVjCi0gZ2lqX1NPVVJDRVMgPSAKLSBnaWpfTERGTEFHUyA9IC1ycGF0aCAkKGxpYmRpcikvZ2Nq LSQoZ2NjX3ZlcnNpb24pIC1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSBcCi0tCS1zaGFyZWQtbGli Z2NjICQoVEhSRUFETERGTEFHUykKLSsJLXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKSAk KGV4dHJhX2xkZmxhZ3MpCi0gCi0gZ2lqX0xJTksgPSAkKEdDSkxJTkspCi0gZ2lqX0xEQUREID0g LUwkKGhlcmUpLy5saWJzIGxpYmdpai5sYQotQEAgLTc4MjAsOTEgKzc4MjIsOTEgQEAgRUNKWF9C QVNFX0ZMQUdTID0gLWZpbmRpcmVjdC1kaXNwYXRjaCBcCi0gQE5BVElWRV9UUlVFQGVjanhfREVQ RU5ERU5DSUVTID0gbGliZ2NqLmxhIGxpYmdjai5zcGVjCi0gZ2FwcGxldHZpZXdlcl9TT1VSQ0VT ID0gCi0gZ2FwcGxldHZpZXdlcl9MREZMQUdTID0gLS1tYWluPWdudS5jbGFzc3BhdGgudG9vbHMu YXBwbGV0dmlld2VyLk1haW4gXAotLQktcnBhdGggJCh0b29sZXhlY2xpYmRpcikgLXNoYXJlZC1s aWJnY2MgJChUSFJFQURMREZMQUdTKQotKwktcnBhdGggJCh0b29sZXhlY2xpYmRpcikgLXNoYXJl ZC1saWJnY2MgJChUSFJFQURMREZMQUdTKSAkKGV4dHJhX2xkZmxhZ3MpCi0gCi0gZ2FwcGxldHZp ZXdlcl9MSU5LID0gJChHQ0pMSU5LKQotIGdhcHBsZXR2aWV3ZXJfTERBREQgPSAtTCQoaGVyZSkv LmxpYnMgbGliZ2NqLXRvb2xzLmxhCi0gZ2FwcGxldHZpZXdlcl9ERVBFTkRFTkNJRVMgPSBsaWJn Y2otdG9vbHMubGEKLSBnamFyc2lnbmVyX1NPVVJDRVMgPSAKLSBnamFyc2lnbmVyX0xERkxBR1Mg PSAtLW1haW49Z251LmNsYXNzcGF0aC50b29scy5qYXJzaWduZXIuTWFpbiBcCi0tCS1ycGF0aCAk KHRvb2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpCi0rCS1ycGF0 aCAkKHRvb2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpICQoZXh0 cmFfbGRmbGFncykKLSAKLSBnamFyc2lnbmVyX0xJTksgPSAkKEdDSkxJTkspCi0gZ2phcnNpZ25l cl9MREFERCA9IC1MJChoZXJlKS8ubGlicyBsaWJnY2otdG9vbHMubGEKLSBnamFyc2lnbmVyX0RF UEVOREVOQ0lFUyA9IGxpYmdjai10b29scy5sYQotIGdrZXl0b29sX1NPVVJDRVMgPSAKLSBna2V5 dG9vbF9MREZMQUdTID0gLS1tYWluPWdudS5jbGFzc3BhdGgudG9vbHMua2V5dG9vbC5NYWluIFwK LS0JLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFH UykKLSsJLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERG TEFHUykgJChleHRyYV9sZGZsYWdzKQotIAotIGdrZXl0b29sX0xJTksgPSAkKEdDSkxJTkspCi0g Z2tleXRvb2xfTERBREQgPSAtTCQoaGVyZSkvLmxpYnMgbGliZ2NqLXRvb2xzLmxhCi0gZ2tleXRv b2xfREVQRU5ERU5DSUVTID0gbGliZ2NqLXRvb2xzLmxhCi0gZ2phcl9TT1VSQ0VTID0gCi0gZ2ph cl9MREZMQUdTID0gLS1tYWluPWdudS5jbGFzc3BhdGgudG9vbHMuamFyLk1haW4gXAotLQktcnBh dGggJCh0b29sZXhlY2xpYmRpcikgLXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKQotKwkt cnBhdGggJCh0b29sZXhlY2xpYmRpcikgLXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKSAk KGV4dHJhX2xkZmxhZ3MpCi0gCi0gZ2phcl9MSU5LID0gJChHQ0pMSU5LKQotIGdqYXJfTERBREQg PSAtTCQoaGVyZSkvLmxpYnMgbGliZ2NqLXRvb2xzLmxhCi0gZ2phcl9ERVBFTkRFTkNJRVMgPSBs aWJnY2otdG9vbHMubGEKLSBnamF2YWhfU09VUkNFUyA9IAotIGdqYXZhaF9MREZMQUdTID0gLS1t YWluPWdudS5jbGFzc3BhdGgudG9vbHMuamF2YWguTWFpbiBcCi0tCS1ycGF0aCAkKHRvb2xleGVj bGliZGlyKSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpCi0rCS1ycGF0aCAkKHRvb2xl eGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpICQoZXh0cmFfbGRmbGFn cykKLSAKLSBnamF2YWhfTElOSyA9ICQoR0NKTElOSykKLSBnamF2YWhfTERBREQgPSAtTCQoaGVy ZSkvLmxpYnMgbGliZ2NqLXRvb2xzLmxhCi0gZ2phdmFoX0RFUEVOREVOQ0lFUyA9IGxpYmdjai10 b29scy5sYQotIGdjamhfU09VUkNFUyA9IAotIGdjamhfTERGTEFHUyA9IC0tbWFpbj1nbnUuY2xh c3NwYXRoLnRvb2xzLmphdmFoLkdjamhNYWluIFwKLS0JLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIp IC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykKLSsJLXJwYXRoICQodG9vbGV4ZWNsaWJk aXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykgJChleHRyYV9sZGZsYWdzKQotIAot IGdjamhfTElOSyA9ICQoR0NKTElOSykKLSBnY2poX0xEQUREID0gLUwkKGhlcmUpLy5saWJzIGxp Ymdjai10b29scy5sYQotIGdjamhfREVQRU5ERU5DSUVTID0gbGliZ2NqLXRvb2xzLmxhCi0gZ25h dGl2ZTJhc2NpaV9TT1VSQ0VTID0gCi0gZ25hdGl2ZTJhc2NpaV9MREZMQUdTID0gLS1tYWluPWdu dS5jbGFzc3BhdGgudG9vbHMubmF0aXZlMmFzY2lpLk5hdGl2ZTJBU0NJSSBcCi0tCS1ycGF0aCAk KHRvb2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpCi0rCS1ycGF0 aCAkKHRvb2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpICQoZXh0 cmFfbGRmbGFncykKLSAKLSBnbmF0aXZlMmFzY2lpX0xJTksgPSAkKEdDSkxJTkspCi0gZ25hdGl2 ZTJhc2NpaV9MREFERCA9IC1MJChoZXJlKS8ubGlicyBsaWJnY2otdG9vbHMubGEKLSBnbmF0aXZl MmFzY2lpX0RFUEVOREVOQ0lFUyA9IGxpYmdjai10b29scy5sYQotIGdvcmJkX1NPVVJDRVMgPSAK LSBnb3JiZF9MREZMQUdTID0gLS1tYWluPWdudS5jbGFzc3BhdGgudG9vbHMub3JiZC5NYWluIFwK LS0JLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFH UykKLSsJLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERG TEFHUykgJChleHRyYV9sZGZsYWdzKQotIAotIGdvcmJkX0xJTksgPSAkKEdDSkxJTkspCi0gZ29y YmRfTERBREQgPSAtTCQoaGVyZSkvLmxpYnMgbGliZ2NqLXRvb2xzLmxhCi0gZ29yYmRfREVQRU5E RU5DSUVTID0gbGliZ2NqLXRvb2xzLmxhCi0gZ3JtaWRfU09VUkNFUyA9IAotIGdybWlkX0xERkxB R1MgPSAtLW1haW49Z251LmNsYXNzcGF0aC50b29scy5ybWlkLk1haW4gXAotLQktcnBhdGggJCh0 b29sZXhlY2xpYmRpcikgLXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKQotKwktcnBhdGgg JCh0b29sZXhlY2xpYmRpcikgLXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKSAkKGV4dHJh X2xkZmxhZ3MpCi0gCi0gZ3JtaWRfTElOSyA9ICQoR0NKTElOSykKLSBncm1pZF9MREFERCA9IC1M JChoZXJlKS8ubGlicyBsaWJnY2otdG9vbHMubGEKLSBncm1pZF9ERVBFTkRFTkNJRVMgPSBsaWJn Y2otdG9vbHMubGEKLSBnc2VyaWFsdmVyX1NPVVJDRVMgPSAKLSBnc2VyaWFsdmVyX0xERkxBR1Mg PSAtLW1haW49Z251LmNsYXNzcGF0aC50b29scy5zZXJpYWx2ZXIuU2VyaWFsVmVyIFwKLS0JLXJw YXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykKLSsJ LXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykg JChleHRyYV9sZGZsYWdzKQotIAotIGdzZXJpYWx2ZXJfTElOSyA9ICQoR0NKTElOSykKLSBnc2Vy aWFsdmVyX0xEQUREID0gLUwkKGhlcmUpLy5saWJzIGxpYmdjai10b29scy5sYQotIGdzZXJpYWx2 ZXJfREVQRU5ERU5DSUVTID0gbGliZ2NqLXRvb2xzLmxhCi0gZ3RuYW1lc2Vydl9TT1VSQ0VTID0g Ci0gZ3RuYW1lc2Vydl9MREZMQUdTID0gLS1tYWluPWdudS5jbGFzc3BhdGgudG9vbHMudG5hbWVz ZXJ2Lk1haW4gXAotLQktcnBhdGggJCh0b29sZXhlY2xpYmRpcikgLXNoYXJlZC1saWJnY2MgJChU SFJFQURMREZMQUdTKQotKwktcnBhdGggJCh0b29sZXhlY2xpYmRpcikgLXNoYXJlZC1saWJnY2Mg JChUSFJFQURMREZMQUdTKSAkKGV4dHJhX2xkZmxhZ3MpCi0gCi0gZ3RuYW1lc2Vydl9MSU5LID0g JChHQ0pMSU5LKQotIGd0bmFtZXNlcnZfTERBREQgPSAtTCQoaGVyZSkvLmxpYnMgbGliZ2NqLXRv b2xzLmxhCi0gZ3RuYW1lc2Vydl9ERVBFTkRFTkNJRVMgPSBsaWJnY2otdG9vbHMubGEKLSBncm1p Y19TT1VSQ0VTID0gCi0gZ3JtaWNfTERGTEFHUyA9IC0tbWFpbj1nbnUuY2xhc3NwYXRoLnRvb2xz LnJtaWMuTWFpbiBcCi0tCS1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAk KFRIUkVBRExERkxBR1MpCi0rCS1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdj YyAkKFRIUkVBRExERkxBR1MpICQoZXh0cmFfbGRmbGFncykKLSAKLSBncm1pY19MSU5LID0gJChH Q0pMSU5LKQotIGdybWljX0xEQUREID0gLUwkKGhlcmUpLy5saWJzIGxpYmdjai10b29scy5sYQot IGdybWljX0RFUEVOREVOQ0lFUyA9IGxpYmdjai10b29scy5sYQotIGdybWlyZWdpc3RyeV9TT1VS Q0VTID0gCi0gZ3JtaXJlZ2lzdHJ5X0xERkxBR1MgPSAtLW1haW49Z251LmNsYXNzcGF0aC50b29s cy5ybWlyZWdpc3RyeS5NYWluIFwKLS0JLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQt bGliZ2NjICQoVEhSRUFETERGTEFHUykKLSsJLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFy ZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykgJChleHRyYV9sZGZsYWdzKQotIAotIGdybWlyZWdp c3RyeV9MSU5LID0gJChHQ0pMSU5LKQotIGdybWlyZWdpc3RyeV9MREFERCA9IC1MJChoZXJlKS8u bGlicyBsaWJnY2otdG9vbHMubGEKLS0tLSBsaWJqYXZhL2djai9NYWtlZmlsZS5pbi5qagkyMDA3 LTA5LTA2IDE0OjA2OjE1LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmphdmEvZ2NqL01ha2VmaWxl LmluCTIwMDctMDktMDYgMTc6MjA6NDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTcyLDYgKzE3Miw3 IEBAIExJQkxUREwgPSBATElCTFRETEAKLSBMSUJNQUdJQyA9IEBMSUJNQUdJQ0AKLSBMSUJPQkpT ID0gQExJQk9CSlNACi0gTElCUyA9IEBMSUJTQAotK0xJQlNURENYWFNQRUMgPSBATElCU1REQ1hY U1BFQ0AKLSBMSUJUT09MID0gQExJQlRPT0xACi0gTE5fUyA9IEBMTl9TQAotIExUTElCSUNPTlYg PSBATFRMSUJJQ09OVkAKLUBAIC0yNzYsNiArMjc3LDcgQEAgYnVpbGRfdmVuZG9yID0gQGJ1aWxk X3ZlbmRvckAKLSBkYXRhZGlyID0gQGRhdGFkaXJACi0gZGJleGVjZGlyID0gQGRiZXhlY2RpckAK LSBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLStleHRyYV9sZGZsYWdzID0gQGV4dHJhX2xk ZmxhZ3NACi0gZXh0cmFfbGRmbGFnc19saWJqYXZhID0gQGV4dHJhX2xkZmxhZ3NfbGliamF2YUAK LSBneHhfaW5jbHVkZV9kaXIgPSBAZ3h4X2luY2x1ZGVfZGlyQAotIGhlcmUgPSBAaGVyZUAKLS0t LSBsaWJqYXZhL2luY2x1ZGUvTWFrZWZpbGUuaW4uamoJMjAwNy0wOS0wNiAxNDowNjoxNS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBsaWJqYXZhL2luY2x1ZGUvTWFrZWZpbGUuaW4JMjAwNy0wOS0wNiAx NzoyMDo0Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNzEsNiArMTcxLDcgQEAgTElCTFRETCA9IEBM SUJMVERMQAotIExJQk1BR0lDID0gQExJQk1BR0lDQAotIExJQk9CSlMgPSBATElCT0JKU0AKLSBM SUJTID0gQExJQlNACi0rTElCU1REQ1hYU1BFQyA9IEBMSUJTVERDWFhTUEVDQAotIExJQlRPT0wg PSBATElCVE9PTEAKLSBMTl9TID0gQExOX1NACi0gTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAot QEAgLTI3NSw2ICsyNzYsNyBAQCBidWlsZF92ZW5kb3IgPSBAYnVpbGRfdmVuZG9yQAotIGRhdGFk aXIgPSBAZGF0YWRpckAKLSBkYmV4ZWNkaXIgPSBAZGJleGVjZGlyQAotIGV4ZWNfcHJlZml4ID0g QGV4ZWNfcHJlZml4QAotK2V4dHJhX2xkZmxhZ3MgPSBAZXh0cmFfbGRmbGFnc0AKLSBleHRyYV9s ZGZsYWdzX2xpYmphdmEgPSBAZXh0cmFfbGRmbGFnc19saWJqYXZhQAotIGd4eF9pbmNsdWRlX2Rp ciA9IEBneHhfaW5jbHVkZV9kaXJACi0gaGVyZSA9IEBoZXJlQAotLS0tIGxpYmphdmEvY29uZmln dXJlLmFjLmpqCTIwMDctMDktMDYgMTQ6MDY6MTUuMDAwMDAwMDAwICswMjAwCi0rKysgbGliamF2 YS9jb25maWd1cmUuYWMJMjAwNy0wOS0wNiAxNzoyMDo0Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC03 NzcsOSArNzc3LDYgQEAgY2FzZSAiJHtob3N0fSIgaW4KLSBlc2FjCi0gQUNfU1VCU1QoU1lTVEVN U1BFQykKLSAKLS1MSUJHQ0pURVNUU1BFQz0iLUxgJHtQV0RDTUQtcHdkfWAvLmxpYnMgLXJwYXRo IGAke1BXRENNRC1wd2R9YC8ubGlicyIKLS1BQ19TVUJTVChMSUJHQ0pURVNUU1BFQykKLS0KLSBB Q19BUkdfV0lUSChzeXN0ZW0temxpYiwKLSAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVt LXpsaWJdLAotICAgICAgICAgICAgICAgICAgW3VzZSBpbnN0YWxsZWQgbGliel0pKQotQEAgLTc5 Myw2ICs3OTAsOSBAQCBBQ19QQVRIX1hUUkEKLSAjIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBfbGli cyBvbiBzb21lIGhvc3RzLgotIGxpYnN1YmRpcj0ubGlicwotIAotK0xJQkdDSlRFU1RTUEVDPSIt TGAke1BXRENNRC1wd2R9YC8ubGlicyAtcnBhdGggYCR7UFdEQ01ELXB3ZH1gLy5saWJzIgotKwot K0xJQlNURENYWFNQRUM9Ci0gIyBleHRyYSBMRCBGbGFncyB3aGljaCBhcmUgcmVxdWlyZWQgZm9y IHRhcmdldHMKLSBjYXNlICIke2hvc3R9IiBpbgotICotKi1kYXJ3aW5bWzAtN11dLiopCi1AQCAt ODAxLDggKzgwMSwyMCBAQCBjYXNlICIke2hvc3R9IiBpbgotICAgICAjIG9uIERhcndpbiAtc2lu Z2xlX21vZHVsZSBzcGVlZHMgdXAgbG9hZGluZyBvZiB0aGUgZHluYW1pYyBsaWJyYXJpZXMuCi0g ICAgIGV4dHJhX2xkZmxhZ3NfbGliamF2YT0tV2wsLXNpbmdsZV9tb2R1bGUKLSAgICAgOzsKLSth cm0qbGludXgqZWFiaSkKLSsgICAgIyBTb21lIG9mIHRoZSBBUk0gdW53aW5kZXIgY29kZSBpcyBh Y3R1YWxseSBpbiBsaWJzdGRjKysuICBXZQotKyAgICAjIGNvdWxkIGluIHByaW5jaXBsZSByZXBs aWNhdGUgaXQgaW4gbGliZ2NqLCBidXQgaXQncyBiZXR0ZXIgdG8KLSsgICAgIyBoYXZlIGEgZGVw ZW5kZW5jeSBvbiBsaWJzdGRjKysuCi0rICAgIGV4dHJhX2xkZmxhZ3M9Jy1MJChoZXJlKS8uLi9s aWJzdGRjKystdjMvc3JjIC1sc3RkYysrJwotKyAgICBMSUJTVERDWFhTUEVDPS1sc3RkYysrCi0r ICAgIExJQkdDSlRFU1RTUEVDPSItTGAke1BXRENNRC1wd2R9YC8ubGlicyAtTGAke1BXRENNRC1w d2R9YC8uLi9saWJzdGRjKystdjMvc3JjLy5saWJzIC1ycGF0aCBgJHtQV0RDTUQtcHdkfWAvLmxp YnM6YCR7UFdEQ01ELXB3ZH1gLy4uL2xpYnN0ZGMrKy12My9zcmMvLmxpYnMgLWxzdGRjKysiCi0r ICAgIDs7Ci0gZXNhYwotIEFDX1NVQlNUKGV4dHJhX2xkZmxhZ3NfbGliamF2YSkKLStBQ19TVUJT VChleHRyYV9sZGZsYWdzKQotK0FDX1NVQlNUKExJQlNURENYWFNQRUMpCi0rCi0rQUNfU1VCU1Qo TElCR0NKVEVTVFNQRUMpCi0gCi0gIyBBbGxvdyB0aGUgR0MgdG8gYmUgZGlzYWJsZWQuICBDYW4g YmUgdXNlZnVsIHdoZW4gZGVidWdnaW5nLgotIEFDX01TR19DSEVDS0lORyhbZm9yIGdhcmJhZ2Ug Y29sbGVjdG9yIHRvIHVzZV0pCi0tLS0gbGliamF2YS9saWJnY2ouc3BlYy5pbi5qagkyMDA3LTA5 LTA2IDE0OjA2OjE1LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmphdmEvbGliZ2NqLnNwZWMuaW4J MjAwNy0wOS0wNiAxNzoyMDo0Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC03LDYgKzcsNiBAQAotICpz dGFydGZpbGU6IEBUSFJFQURTVEFSVEZJTEVTUEVDQCAlKHN0YXJ0ZmlsZW9yaWcpCi0gCi0gJXJl bmFtZSBsaWIgbGlib3JpZwotLSpsaWI6IEBMRF9TVEFSVF9TVEFUSUNfU1BFQ0AgQExJQkdDSl9T UEVDQCBATERfRklOSVNIX1NUQVRJQ19TUEVDQCAtbG0gQExJQklDT05WQCBAR0NTUEVDQCBAVEhS RUFEU1BFQ0AgQFpMSUJTUEVDQCBAU1lTVEVNU1BFQ0AgJShsaWJnY2MpICUobGlib3JpZykKLSsq bGliOiBATERfU1RBUlRfU1RBVElDX1NQRUNAIEBMSUJHQ0pfU1BFQ0AgQExEX0ZJTklTSF9TVEFU SUNfU1BFQ0AgLWxtIEBMSUJJQ09OVkAgQEdDU1BFQ0AgQFRIUkVBRFNQRUNAIEBaTElCU1BFQ0Ag QFNZU1RFTVNQRUNAICUobGliZ2NjKSBATElCU1REQ1hYU1BFQ0AgJShsaWJvcmlnKQotIAotICpq YzE6IEBIQVNIX1NZTkNfU1BFQ0AgQERJVklERVNQRUNAIEBDSEVDS1JFRlNQRUNAIEBKQzFHQ1NQ RUNAIEBFWENFUFRJT05TUEVDQCBAQkFDS1RSQUNFU1BFQ0AgQElFRUVTUEVDQCAtZmtlZXAtaW5s aW5lLWZ1bmN0aW9ucwotLS0tIGxpYmphdmEvc3RhY2t0cmFjZS5jYy5qagkyMDA3LTA5LTA2IDE0 OjA2OjE2LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmphdmEvc3RhY2t0cmFjZS5jYwkyMDA3LTA5 LTA2IDE3OjIwOjQyLjAwMDAwMDAwMCArMDIwMAotQEAgLTM5LDYgKzM5LDEwIEBAIHVzaW5nIG5h bWVzcGFjZSBqYXZhOjpsYW5nOjpyZWZsZWN0OwotIHVzaW5nIG5hbWVzcGFjZSBqYXZhOjp1dGls OwotIHVzaW5nIG5hbWVzcGFjZSBnbnU6Omdjajo6cnVudGltZTsKLSAKLSsjaWZkZWYgX19BUk1f RUFCSV9VTldJTkRFUl9fCi0rI2RlZmluZSBfVVJDX05PUk1BTF9TVE9QIF9VUkNfRkFJTFVSRQot KyNlbmRpZgotKwotIC8vIE1hcHMgbmNvZGUgdmFsdWVzIHRvIHRoZWlyIGNvbnRhaW5pbmcgbmF0 aXZlIGNsYXNzLgotIC8vIE5PVEU6IEN1cnJlbnRseSB0aGlzIE1hcCBjb250cmFkaWN0cyBjbGFz cyBHQyBmb3IgbmF0aXZlIGNsYXNzZXMuIFRoaXMgbWFwCi0gLy8gKGFuZCB0aGUgIm5ldyBjbGFz cyBzdGFjayIpIHdpbGwgbmVlZCB0byB1c2UgV2Vha1JlZmVyZW5jZXMgaW4gb3JkZXIgdG8gCi0t LS0gbGliamF2YS9jb25maWd1cmUuaG9zdC5qagkyMDA3LTA5LTA2IDE3OjExOjA1LjAwMDAwMDAw MCArMDIwMAotKysrIGxpYmphdmEvY29uZmlndXJlLmhvc3QJMjAwNy0wOS0wNiAxNzoyMDo0Mi4w MDAwMDAwMDAgKzAyMDAKLUBAIC04NSw2ICs4NSw3IEBAIGNhc2UgIiR7aG9zdH0iIGluCi0gICBh cm0qLWxpbnV4KikKLSAJbGliZ2NqX2ludGVycHJldGVyPXllcwotIAlzeXNkZXBzX2Rpcj1hcm0K LSsJZmFsbGJhY2tfYmFja3RyYWNlX2g9c3lzZGVwL2FybS9iYWNrdHJhY2UuaAotIAk7OwotICAg bWlwcy10eDM5LSp8bWlwc3R4MzktdW5rbm93bi0qKQotIAlsaWJnY2pfZmxhZ3M9IiR7bGliZ2Nq X2ZsYWdzfSAtRyAwIgotQEAgLTI1OCw2ICsyNTksMTIgQEAgRU9GCi0gCXN5c2RlcHNfZGlyPXg4 Ni02NAotIAlESVZJREVTUEVDPS1mJXttMzI6bm8tfSV7IW0zMjoleyFtNjQ6bm8tfX0le202NDp9 dXNlLWRpdmlkZS1zdWJyb3V0aW5lCi0gCTs7Ci0rICBhcm0qLWxpbnV4KiApCi0rCXNsb3dfcHRo cmVhZF9zZWxmPW5vCi0rCWNhbl91bndpbmRfc2lnbmFsPW5vCi0rCUNIRUNLUkVGU1BFQz0tZmNo ZWNrLXJlZmVyZW5jZXMKLSsJRElWSURFU1BFQz0tZnVzZS1kaXZpZGUtc3Vicm91dGluZQotKwk7 OwotICAgbWlwcyotKi1saW51eCogKQotICAgCXN5c2RlcHNfZGlyPW1pcHMKLSAgIAljYW5fdW53 aW5kX3NpZ25hbD15ZXMKLS0tLSBsaWJqYXZhL01ha2VmaWxlLmFtLmpqCTIwMDctMDktMDYgMTQ6 MDY6MTYuMDAwMDAwMDAwICswMjAwCi0rKysgbGliamF2YS9NYWtlZmlsZS5hbQkyMDA3LTA5LTA2 IDE3OjI4OjI3LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwMCw2ICsxMDAsNyBAQCBlbmRpZgotIEdD Sl9XSVRIX0ZMQUdTID0gJChHQ0opIC0tZW5jb2Rpbmc9VVRGLTggLVduby1kZXByZWNhdGVkCi0g Ci0gZXh0cmFfbGRmbGFnc19saWJqYXZhID0gQGV4dHJhX2xkZmxhZ3NfbGliamF2YUAKLStleHRy YV9sZGZsYWdzID0gQGV4dHJhX2xkZmxhZ3NACi0gCi0gaWYgQU5PTlZFUlNDUklQVAotIGV4dHJh X2xkZmxhZ3NfbGliamF2YSArPSAtV2wsLS12ZXJzaW9uLXNjcmlwdD0kKHNyY2RpcikvbGliZ2Nq LnZlcgotQEAgLTExMCw3ICsxMTEsNyBAQCBHQ0pMSU5LID0gJChMSUJUT09MKSAtLXRhZz1HQ0og LS1tb2RlPWxpCi0gR0NKX0ZPUl9FQ0pYID0gQEdDSl9GT1JfRUNKWEAKLSBHQ0pfRk9SX0VDSlhf TElOSyA9ICQoR0NKX0ZPUl9FQ0pYKSAtbyAkQAotIExJQkxJTksgPSAkKExJQlRPT0wpIC0tdGFn PUNYWCAtLW1vZGU9bGluayAkKENYWCkgLUwkKGhlcmUpICQoSkMxRkxBR1MpIFwKLS0gICAgICAg ICAgJChMREZMQUdTKSAkKGV4dHJhX2xkZmxhZ3NfbGliamF2YSkgLW8gJEAKLSsgICAgICAgICAg JChMREZMQUdTKSAkKGV4dHJhX2xkZmxhZ3NfbGliamF2YSkgJChleHRyYV9sZGZsYWdzKSAtbyAk QAotIAotIEdDQ19VTldJTkRfSU5DTFVERSA9IEBHQ0NfVU5XSU5EX0lOQ0xVREVACi0gCi1AQCAt MjMyLDcgKzIzMyw3IEBAIHhsaWJfbmF0X2ZpbGVzID0gJCh4bGliX25hdF9zb3VyY2VfZmlsZXMK LSAjIEluY2x1ZGUgVEhSRUFETElCUyBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IHZl cnNpb24gb2YKLSAjIGNlcnRhaW4gbGludXh0aHJlYWQgZnVuY3Rpb25zIGdldCBsaW5rZWQ6Ci0g IyMgVGhlIG15c3RlcmlvdXMgYmFja3NsYXNoIGluIHRoZSBncmVwIHBhdHRlcm4gaXMgY29uc3Vt ZWQgYnkgbWFrZS4KLS1saWJnY2pfbGFfTERGTEFHUyA9IC1ycGF0aCAkKHRvb2xleGVjbGliZGly KSAkKFRIUkVBRExERkxBR1MpICQoVEhSRUFETElCUykgXAotK2xpYmdjal9sYV9MREZMQUdTID0g LXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpICQoVEhSRUFETERGTEFHUykgJChleHRyYV9sZGZsYWdz KSAkKFRIUkVBRExJQlMpIFwKLSAJJChMSUJMVERMKSAkKFNZU19aTElCUykgXAotIAktdmVyc2lv bi1pbmZvIGBncmVwIC12ICdeXCMnICQoc3JjZGlyKS9saWJ0b29sLXZlcnNpb25gCi0gbGliZ2Nq X2xhX0xJQkFERCA9IFwKLUBAIC02MTQsNyArNjE1LDcgQEAganZfY29udmVydF9TT1VSQ0VTID0K LSAjIyBuZWVkIHRoaXMgYmVjYXVzZSB3ZSBhcmUgZXhwbGljaXRseSB1c2luZyBsaWJ0b29sIHRv IGxpbmsgdXNpbmcgdGhlCi0gIyMgYC5sYScgZmlsZS4KLSBqdl9jb252ZXJ0X0xERkxBR1MgPSAt LW1haW49Z251Lmdjai5jb252ZXJ0LkNvbnZlcnQgXAotLQktcnBhdGggJCh0b29sZXhlY2xpYmRp cikgLXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKQotKwktcnBhdGggJCh0b29sZXhlY2xp YmRpcikgLXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKSAkKGV4dHJhX2xkZmxhZ3MpCi0g anZfY29udmVydF9MSU5LID0gJChHQ0pMSU5LKQotICMjIFdlIGRvbid0IGV4cGxpY2l0bHkgbGlu ayBpbiB0aGUgbGlicmFyaWVzIHdlIG5lZWQ7IGxpYmdjai5sYSBicmluZ3MKLSAjIyBpbiBhbGwg ZGVwZW5kZW5jaWVzLiAgV2UgbmVlZCB0aGUgLUwgc28gdGhhdCBnY2ogY2FuIGZpbmQgbGliZ2Nq Ci1AQCAtNjM1LDcgKzYzNiw3IEBAIGdudS9nY2ovdG9vbHMvZ2NqX2RidG9vbC9uYXRNYWluLmNj Ci0gIyMgbmVlZCB0aGlzIGJlY2F1c2Ugd2UgYXJlIGV4cGxpY2l0bHkgdXNpbmcgbGlidG9vbCB0 byBsaW5rIHVzaW5nIHRoZQotICMjIGAubGEnIGZpbGUuCi0gZ2NqX2RidG9vbF9MREZMQUdTID0g LS1tYWluPWdudS5nY2oudG9vbHMuZ2NqX2RidG9vbC5NYWluIFwKLS0JLXJwYXRoICQodG9vbGV4 ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykKLSsJLXJwYXRoICQodG9v bGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykgJChleHRyYV9sZGZs YWdzKQotIGdjal9kYnRvb2xfTElOSyA9ICQoR0NKTElOSykKLSAjIyBXZSBkb24ndCBleHBsaWNp dGx5IGxpbmsgaW4gdGhlIGxpYnJhcmllcyB3ZSBuZWVkOyBsaWJnY2oubGEgYnJpbmdzCi0gIyMg aW4gYWxsIGRlcGVuZGVuY2llcy4gIFdlIG5lZWQgdGhlIC1MIHNvIHRoYXQgZ2NqIGNhbiBmaW5k IGxpYmdjagotQEAgLTY1NCw3ICs2NTUsNyBAQCBnaWpfU09VUkNFUyA9IAotICMjIG5lZWQgdGhp cyBiZWNhdXNlIHdlIGFyZSBleHBsaWNpdGx5IHVzaW5nIGxpYnRvb2wgdG8gbGluayB1c2luZyB0 aGUKLSAjIyBgLmxhJyBmaWxlLgotIGdpal9MREZMQUdTID0gLXJwYXRoICQobGliZGlyKS9nY2ot JChnY2NfdmVyc2lvbikgLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIFwKLS0JLXNoYXJlZC1saWJn Y2MgJChUSFJFQURMREZMQUdTKQotKwktc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpICQo ZXh0cmFfbGRmbGFncykKLSBnaWpfTElOSyA9ICQoR0NKTElOSykKLSAjIyBTZWUganZfY29udmVy dF9MREFERC4KLSBnaWpfTERBREQgPSAtTCQoaGVyZSkvLmxpYnMgbGliZ2lqLmxhCi1AQCAtNjk4 LDcgKzY5OSw3IEBAIGVuZGlmICFOQVRJVkUKLSAjIyBUaGlzIGlzIGEgZHVtbXkgZGVmaW5pdGlv bi4KLSBnYXBwbGV0dmlld2VyX1NPVVJDRVMgPQotIGdhcHBsZXR2aWV3ZXJfTERGTEFHUyA9IC0t bWFpbj1nbnUuY2xhc3NwYXRoLnRvb2xzLmFwcGxldHZpZXdlci5NYWluIFwKLS0JLXJwYXRoICQo dG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykKLSsJLXJwYXRo ICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykgJChleHRy YV9sZGZsYWdzKQotIGdhcHBsZXR2aWV3ZXJfTElOSyA9ICQoR0NKTElOSykKLSAjIyBTZWUganZf Y29udmVydF9MREFERC4KLSBnYXBwbGV0dmlld2VyX0xEQUREID0gLUwkKGhlcmUpLy5saWJzIGxp Ymdjai10b29scy5sYQotQEAgLTcwNyw3ICs3MDgsNyBAQCBnYXBwbGV0dmlld2VyX0RFUEVOREVO Q0lFUyA9IGxpYmdjai10b29sCi0gIyMgVGhpcyBpcyBhIGR1bW15IGRlZmluaXRpb24uCi0gZ2ph cnNpZ25lcl9TT1VSQ0VTID0KLSBnamFyc2lnbmVyX0xERkxBR1MgPSAtLW1haW49Z251LmNsYXNz cGF0aC50b29scy5qYXJzaWduZXIuTWFpbiBcCi0tCS1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSAt c2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpCi0rCS1ycGF0aCAkKHRvb2xleGVjbGliZGly KSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpICQoZXh0cmFfbGRmbGFncykKLSBnamFy c2lnbmVyX0xJTksgPSAkKEdDSkxJTkspCi0gIyMgU2VlIGp2X2NvbnZlcnRfTERBREQuCi0gZ2ph cnNpZ25lcl9MREFERCA9IC1MJChoZXJlKS8ubGlicyBsaWJnY2otdG9vbHMubGEKLUBAIC03MTYs NyArNzE3LDcgQEAgZ2phcnNpZ25lcl9ERVBFTkRFTkNJRVMgPSBsaWJnY2otdG9vbHMubAotICMj IFRoaXMgaXMgYSBkdW1teSBkZWZpbml0aW9uLgotIGdrZXl0b29sX1NPVVJDRVMgPQotIGdrZXl0 b29sX0xERkxBR1MgPSAtLW1haW49Z251LmNsYXNzcGF0aC50b29scy5rZXl0b29sLk1haW4gXAot LQktcnBhdGggJCh0b29sZXhlY2xpYmRpcikgLXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdT KQotKwktcnBhdGggJCh0b29sZXhlY2xpYmRpcikgLXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZM QUdTKSAkKGV4dHJhX2xkZmxhZ3MpCi0gZ2tleXRvb2xfTElOSyA9ICQoR0NKTElOSykKLSAjIyBT ZWUganZfY29udmVydF9MREFERC4KLSBna2V5dG9vbF9MREFERCA9IC1MJChoZXJlKS8ubGlicyBs aWJnY2otdG9vbHMubGEKLUBAIC03MjUsNyArNzI2LDcgQEAgZ2tleXRvb2xfREVQRU5ERU5DSUVT ID0gbGliZ2NqLXRvb2xzLmxhCi0gIyMgVGhpcyBpcyBhIGR1bW15IGRlZmluaXRpb24uCi0gZ2ph cl9TT1VSQ0VTID0KLSBnamFyX0xERkxBR1MgPSAtLW1haW49Z251LmNsYXNzcGF0aC50b29scy5q YXIuTWFpbiBcCi0tCS1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAkKFRI UkVBRExERkxBR1MpCi0rCS1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAk KFRIUkVBRExERkxBR1MpICQoZXh0cmFfbGRmbGFncykKLSBnamFyX0xJTksgPSAkKEdDSkxJTksp Ci0gIyMgU2VlIGp2X2NvbnZlcnRfTERBREQuCi0gZ2phcl9MREFERCA9IC1MJChoZXJlKS8ubGli cyBsaWJnY2otdG9vbHMubGEKLUBAIC03MzQsNyArNzM1LDcgQEAgZ2phcl9ERVBFTkRFTkNJRVMg PSBsaWJnY2otdG9vbHMubGEKLSAjIyBUaGlzIGlzIGEgZHVtbXkgZGVmaW5pdGlvbi4KLSBnamF2 YWhfU09VUkNFUyA9Ci0gZ2phdmFoX0xERkxBR1MgPSAtLW1haW49Z251LmNsYXNzcGF0aC50b29s cy5qYXZhaC5NYWluIFwKLS0JLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2Nj ICQoVEhSRUFETERGTEFHUykKLSsJLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGli Z2NjICQoVEhSRUFETERGTEFHUykgJChleHRyYV9sZGZsYWdzKQotIGdqYXZhaF9MSU5LID0gJChH Q0pMSU5LKQotICMjIFNlZSBqdl9jb252ZXJ0X0xEQURELgotIGdqYXZhaF9MREFERCA9IC1MJCho ZXJlKS8ubGlicyBsaWJnY2otdG9vbHMubGEKLUBAIC03NDMsNyArNzQ0LDcgQEAgZ2phdmFoX0RF UEVOREVOQ0lFUyA9IGxpYmdjai10b29scy5sYQotICMjIFRoaXMgaXMgYSBkdW1teSBkZWZpbml0 aW9uLgotIGdjamhfU09VUkNFUyA9Ci0gZ2NqaF9MREZMQUdTID0gLS1tYWluPWdudS5jbGFzc3Bh dGgudG9vbHMuamF2YWguR2NqaE1haW4gXAotLQktcnBhdGggJCh0b29sZXhlY2xpYmRpcikgLXNo YXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKQotKwktcnBhdGggJCh0b29sZXhlY2xpYmRpcikg LXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKSAkKGV4dHJhX2xkZmxhZ3MpCi0gZ2NqaF9M SU5LID0gJChHQ0pMSU5LKQotICMjIFNlZSBqdl9jb252ZXJ0X0xEQURELgotIGdjamhfTERBREQg PSAtTCQoaGVyZSkvLmxpYnMgbGliZ2NqLXRvb2xzLmxhCi1AQCAtNzUyLDcgKzc1Myw3IEBAIGdj amhfREVQRU5ERU5DSUVTID0gbGliZ2NqLXRvb2xzLmxhCi0gIyMgVGhpcyBpcyBhIGR1bW15IGRl ZmluaXRpb24uCi0gZ25hdGl2ZTJhc2NpaV9TT1VSQ0VTID0KLSBnbmF0aXZlMmFzY2lpX0xERkxB R1MgPSAtLW1haW49Z251LmNsYXNzcGF0aC50b29scy5uYXRpdmUyYXNjaWkuTmF0aXZlMkFTQ0lJ IFwKLS0JLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERG TEFHUykKLSsJLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFE TERGTEFHUykgJChleHRyYV9sZGZsYWdzKQotIGduYXRpdmUyYXNjaWlfTElOSyA9ICQoR0NKTElO SykKLSAjIyBTZWUganZfY29udmVydF9MREFERC4KLSBnbmF0aXZlMmFzY2lpX0xEQUREID0gLUwk KGhlcmUpLy5saWJzIGxpYmdjai10b29scy5sYQotQEAgLTc2MSw3ICs3NjIsNyBAQCBnbmF0aXZl MmFzY2lpX0RFUEVOREVOQ0lFUyA9IGxpYmdjai10b29sCi0gIyMgVGhpcyBpcyBhIGR1bW15IGRl ZmluaXRpb24uCi0gZ29yYmRfU09VUkNFUyA9Ci0gZ29yYmRfTERGTEFHUyA9IC0tbWFpbj1nbnUu Y2xhc3NwYXRoLnRvb2xzLm9yYmQuTWFpbiBcCi0tCS1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSAt c2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpCi0rCS1ycGF0aCAkKHRvb2xleGVjbGliZGly KSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxBR1MpICQoZXh0cmFfbGRmbGFncykKLSBnb3Ji ZF9MSU5LID0gJChHQ0pMSU5LKQotICMjIFNlZSBqdl9jb252ZXJ0X0xEQURELgotIGdvcmJkX0xE QUREID0gLUwkKGhlcmUpLy5saWJzIGxpYmdjai10b29scy5sYQotQEAgLTc3MCw3ICs3NzEsNyBA QCBnb3JiZF9ERVBFTkRFTkNJRVMgPSBsaWJnY2otdG9vbHMubGEKLSAjIyBUaGlzIGlzIGEgZHVt bXkgZGVmaW5pdGlvbi4KLSBncm1pZF9TT1VSQ0VTID0KLSBncm1pZF9MREZMQUdTID0gLS1tYWlu PWdudS5jbGFzc3BhdGgudG9vbHMucm1pZC5NYWluIFwKLS0JLXJwYXRoICQodG9vbGV4ZWNsaWJk aXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykKLSsJLXJwYXRoICQodG9vbGV4ZWNs aWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykgJChleHRyYV9sZGZsYWdzKQot IGdybWlkX0xJTksgPSAkKEdDSkxJTkspCi0gIyMgU2VlIGp2X2NvbnZlcnRfTERBREQuCi0gZ3Jt aWRfTERBREQgPSAtTCQoaGVyZSkvLmxpYnMgbGliZ2NqLXRvb2xzLmxhCi1AQCAtNzc5LDcgKzc4 MCw3IEBAIGdybWlkX0RFUEVOREVOQ0lFUyA9IGxpYmdjai10b29scy5sYQotICMjIFRoaXMgaXMg YSBkdW1teSBkZWZpbml0aW9uLgotIGdzZXJpYWx2ZXJfU09VUkNFUyA9Ci0gZ3NlcmlhbHZlcl9M REZMQUdTID0gLS1tYWluPWdudS5jbGFzc3BhdGgudG9vbHMuc2VyaWFsdmVyLlNlcmlhbFZlciBc Ci0tCS1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExERkxB R1MpCi0rCS1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSAtc2hhcmVkLWxpYmdjYyAkKFRIUkVBRExE RkxBR1MpICQoZXh0cmFfbGRmbGFncykKLSBnc2VyaWFsdmVyX0xJTksgPSAkKEdDSkxJTkspCi0g IyMgU2VlIGp2X2NvbnZlcnRfTERBREQuCi0gZ3NlcmlhbHZlcl9MREFERCA9IC1MJChoZXJlKS8u bGlicyBsaWJnY2otdG9vbHMubGEKLUBAIC03ODgsNyArNzg5LDcgQEAgZ3NlcmlhbHZlcl9ERVBF TkRFTkNJRVMgPSBsaWJnY2otdG9vbHMubAotICMjIFRoaXMgaXMgYSBkdW1teSBkZWZpbml0aW9u LgotIGd0bmFtZXNlcnZfU09VUkNFUyA9Ci0gZ3RuYW1lc2Vydl9MREZMQUdTID0gLS1tYWluPWdu dS5jbGFzc3BhdGgudG9vbHMudG5hbWVzZXJ2Lk1haW4gXAotLQktcnBhdGggJCh0b29sZXhlY2xp YmRpcikgLXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKQotKwktcnBhdGggJCh0b29sZXhl Y2xpYmRpcikgLXNoYXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKSAkKGV4dHJhX2xkZmxhZ3Mp Ci0gZ3RuYW1lc2Vydl9MSU5LID0gJChHQ0pMSU5LKQotICMjIFNlZSBqdl9jb252ZXJ0X0xEQURE LgotIGd0bmFtZXNlcnZfTERBREQgPSAtTCQoaGVyZSkvLmxpYnMgbGliZ2NqLXRvb2xzLmxhCi1A QCAtNzk3LDcgKzc5OCw3IEBAIGd0bmFtZXNlcnZfREVQRU5ERU5DSUVTID0gbGliZ2NqLXRvb2xz LmwKLSAjIyBUaGlzIGlzIGEgZHVtbXkgZGVmaW5pdGlvbi4KLSBncm1pY19TT1VSQ0VTID0KLSBn cm1pY19MREZMQUdTID0gLS1tYWluPWdudS5jbGFzc3BhdGgudG9vbHMucm1pYy5NYWluIFwKLS0J LXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFHUykK LSsJLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIpIC1zaGFyZWQtbGliZ2NjICQoVEhSRUFETERGTEFH UykgJChleHRyYV9sZGZsYWdzKQotIGdybWljX0xJTksgPSAkKEdDSkxJTkspCi0gIyMgU2VlIGp2 X2NvbnZlcnRfTERBREQuCi0gZ3JtaWNfTERBREQgPSAtTCQoaGVyZSkvLmxpYnMgbGliZ2NqLXRv b2xzLmxhCi1AQCAtODA2LDcgKzgwNyw3IEBAIGdybWljX0RFUEVOREVOQ0lFUyA9IGxpYmdjai10 b29scy5sYQotICMjIFRoaXMgaXMgYSBkdW1teSBkZWZpbml0aW9uLgotIGdybWlyZWdpc3RyeV9T T1VSQ0VTID0KLSBncm1pcmVnaXN0cnlfTERGTEFHUyA9IC0tbWFpbj1nbnUuY2xhc3NwYXRoLnRv b2xzLnJtaXJlZ2lzdHJ5Lk1haW4gXAotLQktcnBhdGggJCh0b29sZXhlY2xpYmRpcikgLXNoYXJl ZC1saWJnY2MgJChUSFJFQURMREZMQUdTKQotKwktcnBhdGggJCh0b29sZXhlY2xpYmRpcikgLXNo YXJlZC1saWJnY2MgJChUSFJFQURMREZMQUdTKSAkKGV4dHJhX2xkZmxhZ3MpCi0gZ3JtaXJlZ2lz dHJ5X0xJTksgPSAkKEdDSkxJTkspCi0gIyMgU2VlIGp2X2NvbnZlcnRfTERBREQuCi0gZ3JtaXJl Z2lzdHJ5X0xEQUREID0gLUwkKGhlcmUpLy5saWJzIGxpYmdjai10b29scy5sYQotLS0tIGxpYmph dmEvZXhjZXB0aW9uLmNjLmpqCTIwMDctMDktMDYgMTQ6MDY6MTUuMDAwMDAwMDAwICswMjAwCi0r KysgbGliamF2YS9leGNlcHRpb24uY2MJMjAwNy0wOS0wNiAxNzoyMDo0Mi4wMDAwMDAwMDAgKzAy MDAKLUBAIC01OCw2ICs1OCwyMSBAQCBzdHJ1Y3QgamF2YV9leGNlcHRpb25faGVhZGVyCi0gICBf VW53aW5kX0V4Y2VwdGlvbiB1bndpbmRIZWFkZXI7Ci0gfTsKLSAKLSsjaWZkZWYgX19BUk1fRUFC SV9VTldJTkRFUl9fCi0rLy8gVGhpcyBpcyB0aGUgZXhjZXB0aW9uIGNsYXNzIHdlIHJlcG9ydCAt LSAiR05VQ0pBVkEiLgotKwotK2NvbnN0IF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzIF9fZ2NqX2V4 Y2VwdGlvbl9jbGFzcwotKyAgPSB7J0cnLCAnTicsICdVJywgJ0MnLCAnSicsICdBJywgJ1YnLCAn QSd9OwotKwotK3N0YXRpYyBpbmxpbmUgamF2YV9leGNlcHRpb25faGVhZGVyICoKLStnZXRfZXhj ZXB0aW9uX2hlYWRlcl9mcm9tX3VlIChfVW53aW5kX0V4Y2VwdGlvbiAqZXhjKQotK3sKLSsgIHJl dHVybiByZWludGVycHJldF9jYXN0PGphdmFfZXhjZXB0aW9uX2hlYWRlciAqPihleGMgKyAxKSAt IDE7Ci0rfQotKwotK2V4dGVybiAiQyIgdm9pZCBfX2N4YV9iZWdpbl9jbGVhbnVwIChfVW53aW5k X0V4Y2VwdGlvbiopOwotKwotKyNlbHNlIC8vICFfX0FSTV9FQUJJX1VOV0lOREVSX18KLSAvLyBU aGlzIGlzIHRoZSBleGNlcHRpb24gY2xhc3Mgd2UgcmVwb3J0IC0tICJHTlVDSkFWQSIuCi0gY29u c3QgX1Vud2luZF9FeGNlcHRpb25fQ2xhc3MgX19nY2pfZXhjZXB0aW9uX2NsYXNzCi0gPSAoKCgo KCgoKF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzKSAnRycgCi1AQCAtNzUsNiArOTAsNyBAQCBnZXRf ZXhjZXB0aW9uX2hlYWRlcl9mcm9tX3VlIChfVW53aW5kX0V4Ci0gewotICAgcmV0dXJuIHJlaW50 ZXJwcmV0X2Nhc3Q8amF2YV9leGNlcHRpb25faGVhZGVyICo+KGV4YyArIDEpIC0gMTsKLSB9Ci0r I2VuZGlmIC8vICFfX0FSTV9FQUJJX1VOV0lOREVSX18KLSAKLSAvKiBQZXJmb3JtIGEgdGhyb3cs IEphdmEgc3R5bGUuIFRocm93IHdpbGwgdW53aW5kIHRocm91Z2ggdGhpcyBjYWxsLAotICAgIHNv IHRoZXJlIGJldHRlciBub3QgYmUgYW55IGhhbmRsZXJzIG9yIGV4Y2VwdGlvbiB0aHJvd24gaGVy ZS4gKi8KLUBAIC04OSw3ICsxMDUsOCBAQCBfSnZfVGhyb3cgKGp0aHJvd2FibGUgdmFsdWUpCi0g ICAgIHZhbHVlID0gbmV3IGphdmE6Omxhbmc6Ok51bGxQb2ludGVyRXhjZXB0aW9uICgpOwotICAg eGgtPnZhbHVlID0gdmFsdWU7Ci0gCi0tICB4aC0+dW53aW5kSGVhZGVyLmV4Y2VwdGlvbl9jbGFz cyA9IF9fZ2NqX2V4Y2VwdGlvbl9jbGFzczsKLSsgIG1lbWNweSAoJnhoLT51bndpbmRIZWFkZXIu ZXhjZXB0aW9uX2NsYXNzLCAmX19nY2pfZXhjZXB0aW9uX2NsYXNzLAotKwkgIHNpemVvZiB4aC0+ dW53aW5kSGVhZGVyLmV4Y2VwdGlvbl9jbGFzcyk7Ci0gICB4aC0+dW53aW5kSGVhZGVyLmV4Y2Vw dGlvbl9jbGVhbnVwID0gTlVMTDsKLSAKLSAgIC8qIFdlJ3JlIGhhcHB5IHdpdGggc2V0am1wL2xv bmdqbXAgZXhjZXB0aW9ucyBvciByZWdpb24tYmFzZWQKLUBAIC0xNTksNiArMTc2LDIxIEBAIHBh cnNlX2xzZGFfaGVhZGVyIChfVW53aW5kX0NvbnRleHQgKmNvbnQKLSAgIHJldHVybiBwOwotIH0K LSAKLSsjaWZkZWYgX19BUk1fRUFCSV9VTldJTkRFUl9fCi0rCi0rc3RhdGljIHZvaWQgKioKLStn ZXRfdHR5cGVfZW50cnkoX1Vud2luZF9Db250ZXh0ICosIGxzZGFfaGVhZGVyX2luZm8qIGluZm8s IF9VbndpbmRfV29yZCBpKQotK3sKLSsgIF9VbndpbmRfUHRyIHB0cjsKLSsKLSsgIHB0ciA9IChf VW53aW5kX1B0cikgKGluZm8tPlRUeXBlIC0gKGkgKiA0KSk7Ci0rICBwdHIgPSBfVW53aW5kX2Rl Y29kZV90YXJnZXQyKHB0cik7Ci0rICAKLSsgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQg Kio+KHB0cik7Ci0rfQotKwotKyNlbHNlCi0rCi0gc3RhdGljIHZvaWQgKioKLSBnZXRfdHR5cGVf ZW50cnkgKF9VbndpbmRfQ29udGV4dCAqY29udGV4dCwgbHNkYV9oZWFkZXJfaW5mbyAqaW5mbywg bG9uZyBpKQotIHsKLUBAIC0xNzAsNiArMjAyLDcgQEAgZ2V0X3R0eXBlX2VudHJ5IChfVW53aW5k X0NvbnRleHQgKmNvbnRleAotICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqKj4ocHRy KTsKLSB9Ci0gCi0rI2VuZGlmCi0gCi0gLy8gVXNpbmcgYSBkaWZmZXJlbnQgcGVyc29uYWxpdHkg ZnVuY3Rpb24gbmFtZSBjYXVzZXMgbGluayBmYWlsdXJlcwotIC8vIHdoZW4gdHJ5aW5nIHRvIG1p eCBjb2RlIHVzaW5nIGRpZmZlcmVudCBleGNlcHRpb24gaGFuZGxpbmcgbW9kZWxzLgotQEAgLTE4 MCwxMiArMjEzLDMzIEBAIGdldF90dHlwZV9lbnRyeSAoX1Vud2luZF9Db250ZXh0ICpjb250ZXgK LSAjZGVmaW5lIFBFUlNPTkFMSVRZX0ZVTkNUSU9OCV9fZ2NqX3BlcnNvbmFsaXR5X3YwCi0gI2Vu ZGlmCi0gCi0rI2lmZGVmIF9fQVJNX0VBQklfVU5XSU5ERVJfXwotKwotKyNkZWZpbmUgQ09OVElO VUVfVU5XSU5ESU5HIFwKLSsgIGRvCQkJCQkJCQlcCi0rICAgIHsJCQkJCQkJCVwKLSsgICAgICBp ZiAoX19nbnVfdW53aW5kX2ZyYW1lKHVlX2hlYWRlciwgY29udGV4dCkgIT0gX1VSQ19PSykJXAot KwlyZXR1cm4gX1VSQ19GQUlMVVJFOwkJCQkJXAotKyAgICAgIHJldHVybiBfVVJDX0NPTlRJTlVF X1VOV0lORDsJCQkJXAotKyAgICB9CQkJCQkJCQlcCi0rICB3aGlsZSAoMCkKLSsKLStleHRlcm4g IkMiIF9VbndpbmRfUmVhc29uX0NvZGUKLStQRVJTT05BTElUWV9GVU5DVElPTiAoX1Vud2luZF9T dGF0ZSBzdGF0ZSwKLSsJCSAgICAgIHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiogdWVfaGVhZGVy LAotKwkJICAgICAgc3RydWN0IF9VbndpbmRfQ29udGV4dCogY29udGV4dCkKLSsjZWxzZQotKwot KyNkZWZpbmUgQ09OVElOVUVfVU5XSU5ESU5HIHJldHVybiBfVVJDX0NPTlRJTlVFX1VOV0lORAot KwotIGV4dGVybiAiQyIgX1Vud2luZF9SZWFzb25fQ29kZQotIFBFUlNPTkFMSVRZX0ZVTkNUSU9O IChpbnQgdmVyc2lvbiwKLSAJCSAgICAgIF9VbndpbmRfQWN0aW9uIGFjdGlvbnMsCi0gCQkgICAg ICBfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcyBleGNlcHRpb25fY2xhc3MsCi0gCQkgICAgICBzdHJ1 Y3QgX1Vud2luZF9FeGNlcHRpb24gKnVlX2hlYWRlciwKLSAJCSAgICAgIHN0cnVjdCBfVW53aW5k X0NvbnRleHQgKmNvbnRleHQpCi0rCi0rI2VuZGlmCi0gewotICAgamF2YV9leGNlcHRpb25faGVh ZGVyICp4aCA9IGdldF9leGNlcHRpb25faGVhZGVyX2Zyb21fdWUgKHVlX2hlYWRlcik7Ci0gCi1A QCAtMTk3LDE2ICsyNTEsNTYgQEAgUEVSU09OQUxJVFlfRlVOQ1RJT04gKGludCB2ZXJzaW9uLAot ICAgaW50IGhhbmRsZXJfc3dpdGNoX3ZhbHVlOwotICAgYm9vbCBzYXdfY2xlYW51cDsKLSAgIGJv b2wgc2F3X2hhbmRsZXI7Ci0rICBib29sIGZvcmVpZ25fZXhjZXB0aW9uOwotICAgaW50IGlwX2Jl Zm9yZV9pbnNuID0gMDsKLSAKLSsjaWZkZWYgX19BUk1fRUFCSV9VTldJTkRFUl9fCi0rICBfVW53 aW5kX0FjdGlvbiBhY3Rpb25zOwotKwotKyAgc3dpdGNoIChzdGF0ZSAmIF9VU19BQ1RJT05fTUFT SykKLSsgICAgewotKyAgICBjYXNlIF9VU19WSVJUVUFMX1VOV0lORF9GUkFNRToKLSsgICAgICBh Y3Rpb25zID0gX1VBX1NFQVJDSF9QSEFTRTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBf VVNfVU5XSU5EX0ZSQU1FX1NUQVJUSU5HOgotKyAgICAgIGFjdGlvbnMgPSBfVUFfQ0xFQU5VUF9Q SEFTRTsKLSsgICAgICBpZiAoIShzdGF0ZSAmIF9VU19GT1JDRV9VTldJTkQpCi0rCSAgJiYgdWVf aGVhZGVyLT5iYXJyaWVyX2NhY2hlLnNwID09IF9VbndpbmRfR2V0R1IoY29udGV4dCwgMTMpKQot KwlhY3Rpb25zIHw9IF9VQV9IQU5ETEVSX0ZSQU1FOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBj YXNlIF9VU19VTldJTkRfRlJBTUVfUkVTVU1FOgotKyAgICAgIENPTlRJTlVFX1VOV0lORElORzsK LSsgICAgICBicmVhazsKLSsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBzdGQ6OmFib3J0KCk7Ci0r ICAgIH0KLSsgIGFjdGlvbnMgfD0gc3RhdGUgJiBfVVNfRk9SQ0VfVU5XSU5EOwotKwotKyAgLy8g V2UgZG9uJ3Qga25vdyB3aGljaCBydW50aW1lIHdlJ3JlIHdvcmtpbmcgd2l0aCwgc28gY2FuJ3Qg Y2hlY2sgdGhpcy4KLSsgIC8vIEhvd2V2ZXIgdGhlIEFCSSByb3V0aW5lcyBoaWRlIHRoaXMgZnJv bSB1cywgYW5kIHdlIGRvbid0IGFjdHVhbGx5IG5lZWQKLSsgIC8vIHRvIGtub3cuCi0rICBmb3Jl aWduX2V4Y2VwdGlvbiA9IGZhbHNlOwotKwotKyAgLy8gVGhlIGR3YXJmIHVud2luZGVyIGFzc3Vt ZXMgdGhlIGNvbnRleHQgc3RydWN0dXJlIGhvbGRzIHRoaW5ncyBsaWtlIHRoZQotKyAgLy8gZnVu Y3Rpb24gYW5kIExTREEgcG9pbnRlcnMuICBUaGUgQVJNIGltcGxlbWVudGF0aW9uIGNhY2hlcyB0 aGVzZSBpbgotKyAgLy8gdGhlIGV4Y2VwdGlvbiBoZWFkZXIgKFVDQikuICBUbyBhdm9pZCByZXdy aXRpbmcgZXZlcnl0aGluZyB3ZSBtYWtlIHRoZQotKyAgLy8gdmlydHVhbCBJUCByZWdpc3RlciBw b2ludCBhdCB0aGUgVUNCLgotKyAgaXAgPSAoX1Vud2luZF9QdHIpIHVlX2hlYWRlcjsKLSsgIF9V bndpbmRfU2V0R1IoY29udGV4dCwgMTIsIGlwKTsKLSAKLSsjZWxzZQotICAgLy8gSW50ZXJmYWNl IHZlcnNpb24gY2hlY2suCi0gICBpZiAodmVyc2lvbiAhPSAxKQotICAgICByZXR1cm4gX1VSQ19G QVRBTF9QSEFTRTFfRVJST1I7Ci0rICBmb3JlaWduX2V4Y2VwdGlvbiA9IGV4Y2VwdGlvbl9jbGFz cyAhPSBfX2djal9leGNlcHRpb25fY2xhc3M7Ci0rI2VuZGlmCi0gCi0gICAvLyBTaG9ydGN1dCBm b3IgcGhhc2UgMiBmb3VuZCBoYW5kbGVyIGZvciBkb21lc3RpYyBleGNlcHRpb24uCi0gICBpZiAo YWN0aW9ucyA9PSAoX1VBX0NMRUFOVVBfUEhBU0UgfCBfVUFfSEFORExFUl9GUkFNRSkKLS0gICAg ICAmJiBleGNlcHRpb25fY2xhc3MgPT0gX19nY2pfZXhjZXB0aW9uX2NsYXNzKQotKyAgICAgICYm ICFmb3JlaWduX2V4Y2VwdGlvbikKLSAgICAgewotICAgICAgIGhhbmRsZXJfc3dpdGNoX3ZhbHVl ID0geGgtPmhhbmRsZXJTd2l0Y2hWYWx1ZTsKLSAgICAgICBsYW5kaW5nX3BhZCA9IHhoLT5sYW5k aW5nUGFkOwotQEAgLTIyNywxNyArMzIxLDE3IEBAIFBFUlNPTkFMSVRZX0ZVTkNUSU9OIChpbnQg dmVyc2lvbiwKLSAKLSAgIC8vIElmIG5vIExTREEsIHRoZW4gdGhlcmUgYXJlIG5vIGhhbmRsZXJz IG9yIGNsZWFudXBzLgotICAgaWYgKCEgbGFuZ3VhZ2Vfc3BlY2lmaWNfZGF0YSkKLS0gICAgcmV0 dXJuIF9VUkNfQ09OVElOVUVfVU5XSU5EOwotKyAgICBDT05USU5VRV9VTldJTkRJTkc7Ci0gCi0g ICAvLyBQYXJzZSB0aGUgTFNEQSBoZWFkZXIuCi0gICBwID0gcGFyc2VfbHNkYV9oZWFkZXIgKGNv bnRleHQsIGxhbmd1YWdlX3NwZWNpZmljX2RhdGEsICZpbmZvKTsKLSAjaWZkZWYgSEFWRV9HRVRJ UElORk8KLSAgIGlwID0gX1Vud2luZF9HZXRJUEluZm8gKGNvbnRleHQsICZpcF9iZWZvcmVfaW5z bik7Ci0tICBpZiAoISBpcF9iZWZvcmVfaW5zbikKLS0gICAgLS1pcDsKLSAjZWxzZQotICAgaXAg PSBfVW53aW5kX0dldElQIChjb250ZXh0KSAtIDE7Ci0gI2VuZGlmCi0rICBpZiAoISBpcF9iZWZv cmVfaW5zbikKLSsgICAgLS1pcDsKLSAgIGxhbmRpbmdfcGFkID0gMDsKLSAgIGFjdGlvbl9yZWNv cmQgPSAwOwotICAgaGFuZGxlcl9zd2l0Y2hfdmFsdWUgPSAwOwotQEAgLTI5Niw3ICszOTAsNyBA QCBQRVJTT05BTElUWV9GVU5DVElPTiAoaW50IHZlcnNpb24sCi0gICAvLyBJZiBpcCBpcyBub3Qg cHJlc2VudCBpbiB0aGUgdGFibGUsIEMrKyB3b3VsZCBjYWxsIHRlcm1pbmF0ZS4KLSAgIC8vID8/ PyBJdCBpcyBwZXJoYXBzIGJldHRlciB0byB0d2VlayB0aGUgTFNEQSBzbyB0aGF0IG5vLWFjdGlv bgotICAgLy8gaXMgbWFwcGVkIHRvIG5vLWVudHJ5IGZvciBKYXZhLgotLSAgcmV0dXJuIF9VUkNf Q09OVElOVUVfVU5XSU5EOwotKyAgQ09OVElOVUVfVU5XSU5ESU5HOwotIAotICBmb3VuZF9zb21l dGhpbmc6Ci0gICBzYXdfY2xlYW51cCA9IGZhbHNlOwotQEAgLTMzNCw3ICs0MjgsNyBAQCBQRVJT T05BTElUWV9GVU5DVElPTiAoaW50IHZlcnNpb24sCi0gCSAgLy8gRHVyaW5nIGZvcmNlZCB1bndp bmRpbmcsIHdlIG9ubHkgcnVuIGNsZWFudXBzLiAgV2l0aCBhCi0gCSAgLy8gZm9yZWlnbiBleGNl cHRpb24gY2xhc3MsIHdlIGhhdmUgbm8gY2xhc3MgaW5mbyB0byBtYXRjaC4KLSAJICBlbHNlIGlm ICgoYWN0aW9ucyAmIF9VQV9GT1JDRV9VTldJTkQpCi0tCSAgICAgIHx8IGV4Y2VwdGlvbl9jbGFz cyAhPSBfX2djal9leGNlcHRpb25fY2xhc3MpCi0rCQkgICB8fCBmb3JlaWduX2V4Y2VwdGlvbikK LSAJICAgIDsKLSAKLSAJICBlbHNlIGlmIChhcl9maWx0ZXIgPiAwKQotQEAgLTM3NCwxNSArNDY4 LDE1IEBAIFBFUlNPTkFMSVRZX0ZVTkNUSU9OIChpbnQgdmVyc2lvbiwKLSAgICAgfQotIAotICAg aWYgKCEgc2F3X2hhbmRsZXIgJiYgISBzYXdfY2xlYW51cCkKLS0gICAgcmV0dXJuIF9VUkNfQ09O VElOVUVfVU5XSU5EOwotKwlDT05USU5VRV9VTldJTkRJTkc7Ci0gCi0gICBpZiAoYWN0aW9ucyAm IF9VQV9TRUFSQ0hfUEhBU0UpCi0gICAgIHsKLSAgICAgICBpZiAoISBzYXdfaGFuZGxlcikKLS0J cmV0dXJuIF9VUkNfQ09OVElOVUVfVU5XSU5EOwotKwlDT05USU5VRV9VTldJTkRJTkc7Ci0gCi0g ICAgICAgLy8gRm9yIGRvbWVzdGljIGV4Y2VwdGlvbnMsIHdlIGNhY2hlIGRhdGEgZnJvbSBwaGFz ZSAxIGZvciBwaGFzZSAyLgotLSAgICAgIGlmIChleGNlcHRpb25fY2xhc3MgPT0gX19nY2pfZXhj ZXB0aW9uX2NsYXNzKQotKyAgICAgIGlmICghIGZvcmVpZ25fZXhjZXB0aW9uKQotICAgICAgICAg ewotICAgICAgICAgICB4aC0+aGFuZGxlclN3aXRjaFZhbHVlID0gaGFuZGxlcl9zd2l0Y2hfdmFs dWU7Ci0gICAgICAgICAgIHhoLT5sYW5kaW5nUGFkID0gbGFuZGluZ19wYWQ7Ci1AQCAtMzk2LDUg KzQ5MCw5IEBAIFBFUlNPTkFMSVRZX0ZVTkNUSU9OIChpbnQgdmVyc2lvbiwKLSAgIF9VbndpbmRf U2V0R1IgKGNvbnRleHQsIF9fYnVpbHRpbl9laF9yZXR1cm5fZGF0YV9yZWdubyAoMSksCi0gCQkg aGFuZGxlcl9zd2l0Y2hfdmFsdWUpOwotICAgX1Vud2luZF9TZXRJUCAoY29udGV4dCwgbGFuZGlu Z19wYWQpOwotKyNpZmRlZiBfX0FSTV9FQUJJX1VOV0lOREVSX18KLSsgIGlmIChzYXdfY2xlYW51 cCkKLSsgICAgX19jeGFfYmVnaW5fY2xlYW51cCh1ZV9oZWFkZXIpOwotKyNlbmRpZgotICAgcmV0 dXJuIF9VUkNfSU5TVEFMTF9DT05URVhUOwotIH0KLS0tLSBsaWJqYXZhL2dudS9jbGFzc3BhdGgv bmF0Vk1TdGFja1dhbGtlci5jYy5qagkyMDA3LTA5LTA2IDE0OjA2OjE1LjAwMDAwMDAwMCArMDIw MAotKysrIGxpYmphdmEvZ251L2NsYXNzcGF0aC9uYXRWTVN0YWNrV2Fsa2VyLmNjCTIwMDctMDkt MDYgMTc6MjA6NDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTksNiArMTksNyBAQCBkZXRhaWxzLiAg Ki8KLSAjaW5jbHVkZSA8amF2YS9sYW5nL0NsYXNzTG9hZGVyLmg+Ci0gI2luY2x1ZGUgPGphdmEv bGFuZy9DbGFzcy5oPgotIAotKyNpZm5kZWYgX19BUk1fRUFCSV9VTldJTkRFUl9fCi0gLy8gUmV0 dXJuIHRoZSBjbGFzcyBvZiB0aGUgbWV0aG9kIHRoYXQgY29udGFpbnMgUEMuCi0gLy8gVGhpcyBp cyBhIG1hY3JvIG5vdCBhIGZ1bmN0aW9uLCBzaW5jZSBkZWZpbmluZyBpdCBhcyBvbmUgd291bGQK LSAvLyBpbnRyb2R1Y2UgYW4gZXh0cmEgZnJhbWUgb24gdGhlIHN0YWNrLiAgKi8KLUBAIC00NCw2 ICs0NSwxMSBAQCBkZXRhaWxzLiAgKi8KLSAJCQkJCQkJCQlcCi0gICBrbGFzczsJCQkJCQkJCVwK LSAgfSkKLSsjZWxzZSAvLyBfX0FSTV9FQUJJX1VOV0lOREVSX18KLSsvLyBBUk0gRUFCSSBkb2Vz bid0IHN1cHBvcnQgX1Vud2luZF9GaW5kRW5jbG9zaW5nRnVuY3Rpb24uCi0rI2RlZmluZSBHRVRf Q0FMTElOR19DTEFTUyhQQykJCQkJXAotKyAgKF9Kdl9TdGFja1RyYWNlOjpHZXRTdGFja1dhbGtl ckNhbGxpbmdDbGFzcyAoKSkKLSsjZW5kaWYKLSAKLSBKQXJyYXk8amNsYXNzPiAqCi0gZ251Ojpj bGFzc3BhdGg6OlZNU3RhY2tXYWxrZXI6OmdldENsYXNzQ29udGV4dCh2b2lkKQotQEAgLTU5LDE0 ICs2NSwxOCBAQCBqY2xhc3MKLSBnbnU6OmNsYXNzcGF0aDo6Vk1TdGFja1dhbGtlcjo6Z2V0Q2Fs bGluZ0NsYXNzKHZvaWQpCi0gewotICAgX0p2X0luaXRDbGFzcyAoJjo6Z251OjpjbGFzc3BhdGg6 OlZNU3RhY2tXYWxrZXI6OmNsYXNzJCk7Ci0tICByZXR1cm4gX0p2X1N0YWNrVHJhY2U6OkdldFN0 YWNrV2Fsa2VyQ2FsbGluZ0NsYXNzICgpOwotKyAgamNsYXNzIHJlc3VsdCA9IF9Kdl9TdGFja1Ry YWNlOjpHZXRTdGFja1dhbGtlckNhbGxpbmdDbGFzcyAoKTsKLSsgIF9fYXNtX18gX192b2xhdGls ZV9fICgiIiA6IDogImciIChyZXN1bHQpKTsKLSsgIHJldHVybiByZXN1bHQ7Ci0gfQotIAotIGpj bGFzcwotIGdudTo6Y2xhc3NwYXRoOjpWTVN0YWNrV2Fsa2VyOjpnZXRDYWxsaW5nQ2xhc3MoOjpn bnU6Omdjajo6UmF3RGF0YSAqcGMpCi0gewotICAgX0p2X0luaXRDbGFzcyAoJjo6Z251OjpjbGFz c3BhdGg6OlZNU3RhY2tXYWxrZXI6OmNsYXNzJCk7Ci0tICByZXR1cm4gR0VUX0NBTExJTkdfQ0xB U1MocGMpOwotKyAgamNsYXNzIHJlc3VsdCA9IEdFVF9DQUxMSU5HX0NMQVNTKHBjKTsKLSsgIF9f YXNtX18gX192b2xhdGlsZV9fICgiIiA6IDogImciIChyZXN1bHQpKTsKLSsgIHJldHVybiByZXN1 bHQ7Ci0gfQotIAotIDo6amF2YTo6bGFuZzo6Q2xhc3NMb2FkZXIgKgotLS0tIGxpYmphdmEvc3lz ZGVwL2FybS9iYWNrdHJhY2UuaC5qagkyMDA3LTA5LTA2IDE3OjIwOjQyLjAwMDAwMDAwMCArMDIw MAotKysrIGxpYmphdmEvc3lzZGVwL2FybS9iYWNrdHJhY2UuaAkyMDA3LTA5LTA2IDE3OjIwOjQy LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwzNSBAQAotKy8vIGJhY2t0cmFjZS5oIC0gRmFs bGJhY2sgYmFja3RyYWNlIGltcGxlbWVudGF0aW9uLiBBUk0gaW1wbGVtZW50YXRpb24uCi0rCi0r LyogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSsK LSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJnY2ouCi0rCi0rVGhpcyBzb2Z0d2FyZSBpcyBj b3B5cmlnaHRlZCB3b3JrIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKLStMaWJnY2og TGljZW5zZS4gIFBsZWFzZSBjb25zdWx0IHRoZSBmaWxlICJMSUJHQ0pfTElDRU5TRSIgZm9yCi0r ZGV0YWlscy4gICovCi0rCi0rI2lmbmRlZiBfX1NZU0RFUF9CQUNLVFJBQ0VfSF9fCi0rI2RlZmlu ZSBfX1NZU0RFUF9CQUNLVFJBQ0VfSF9fCi0rCi0rI2luY2x1ZGUgPGphdmEtc3RhY2suaD4KLSsK LStleHRlcm4gIkMiCi0rewotKy8qIFVud2luZCB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrIGNhbGxp bmcgVFJBQ0VfRk4gd2l0aCBTVEFURSBmb3IgZXZlcnkgc3RhY2sKLSsgICBmcmFtZS4gIFJldHVy bnMgdGhlIHJlYXNvbiB3aHkgdGhlIHVud2luZGluZyB3YXMgc3RvcHBlZC4gICovCi0rI2lmZGVm IF9fQVJNX0VBQklfVU5XSU5ERVJfXwotKwotKyNkZWZpbmUgX1Vud2luZF9GaW5kRW5jbG9zaW5n RnVuY3Rpb24oUEMpIFwKLSsgIChQQykKLSsKLStfVW53aW5kX1JlYXNvbl9Db2RlCi0rZmFsbGJh Y2tfYmFja3RyYWNlIChfVW53aW5kX1JlYXNvbl9Db2RlICgqKShzdHJ1Y3QgX1Vud2luZF9Db250 ZXh0Kiwgdm9pZCopLCBfSnZfVW53aW5kU3RhdGUgKikKLSsjZWxzZQotK19VbndpbmRfUmVhc29u X0NvZGUKLStmYWxsYmFja19iYWNrdHJhY2UgKF9VbndpbmRfVHJhY2VfRm4sIF9Kdl9VbndpbmRT dGF0ZSAqKQotKyNlbmRpZgotK3sKLSsgIHJldHVybiBfVVJDX05PX1JFQVNPTjsKLSt9Ci0rfQot KyNlbmRpZgoKZGlmZiAtLWdpdCBhL2djYzQxLWphdmEtYXJtNy5wYXRjaCBiL2djYzQxLWphdmEt YXJtNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNjZTUzMC4uMDAwMDAw MAotLS0gYS9nY2M0MS1qYXZhLWFybTcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCww IEBACi0yMDA3LTA5LTA3ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KLQotCSogY29u ZmlndXJlLmluIChub2NvbmZpZ2RpcnMpOiBSZW1vdmUgdGFyZ2V0LWxpYmZmaSBhbmQKLQl0YXJn ZXQtbGliamF2YS4KLQkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KLQotLS0tIGNvbmZpZ3VyZS5p bgkocmV2aXNpb24gMTI4MjQ5KQotKysrIGNvbmZpZ3VyZS5pbgkocmV2aXNpb24gMTI4MjUwKQot QEAgLTUwMSw4ICs1MDEsOCBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gICAgIG5vY29uZmlnZGly cz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbGliZmZpIHRhcmdldC1xdGhyZWFkcyIKLSAgICAgOzsK LSAgIGFybSotKi1saW51eC1nbnVlYWJpKQotLSAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2Rp cnMgdGFyZ2V0LWxpYmZmaSB0YXJnZXQtcXRocmVhZHMiCi0tICAgIG5vY29uZmlnZGlycz0iJG5v Y29uZmlnZGlycyB0YXJnZXQtbGliamF2YSB0YXJnZXQtbGlib2JqYyIKLSsgICAgbm9jb25maWdk aXJzPSIkbm9jb25maWdkaXJzIHRhcmdldC1xdGhyZWFkcyIKLSsgICAgbm9jb25maWdkaXJzPSIk bm9jb25maWdkaXJzIHRhcmdldC1saWJvYmpjIgotICAgICA7OwotICAgYXJtKi0qLXN5bWJpYW5l bGYqKQotICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgJHtsaWJnY2p9IHRhcmdldC1s aWJpYmVydHkiCi0tLS0gY29uZmlndXJlCShyZXZpc2lvbiAxMjgyNDkpCi0rKysgY29uZmlndXJl CShyZXZpc2lvbiAxMjgyNTApCi1AQCAtMTI5Myw4ICsxMjkzLDggQEAgY2FzZSAiJHt0YXJnZXR9 IiBpbgotICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LWxpYmZmaSB0YXJn ZXQtcXRocmVhZHMiCi0gICAgIDs7Ci0gICBhcm0qLSotbGludXgtZ251ZWFiaSkKLS0gICAgbm9j b25maWdkaXJzPSIkbm9jb25maWdkaXJzIHRhcmdldC1saWJmZmkgdGFyZ2V0LXF0aHJlYWRzIgot LSAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LWxpYmphdmEgdGFyZ2V0LWxp Ym9iamMiCi0rICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtcXRocmVhZHMi Ci0rICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbGlib2JqYyIKLSAgICAg OzsKLSAgIGFybSotKi1zeW1iaWFuZWxmKikKLSAgICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdk aXJzICR7bGliZ2NqfSB0YXJnZXQtbGliaWJlcnR5IgoKZGlmZiAtLWdpdCBhL2djYzQxLWphdmEt YXJtOC5wYXRjaCBiL2djYzQxLWphdmEtYXJtOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggNDgyMDczMS4uMDAwMDAwMAotLS0gYS9nY2M0MS1qYXZhLWFybTgucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0yMDA3LTA3LTEzICBBbmRyZXcgSGFsZXkgIDxh cGhAcmVkaGF0LmNvbT4KLQotCSogdGVzdHN1aXRlL2xpYmphdmEuanZtdGkvanZtdGktaW50ZXJw LmV4cDogTGlrZXdpc2UuCi0JKiB0ZXN0c3VpdGUvbGliamF2YS5qbmkvam5pLmV4cDogVXNlIC1m ZG9sbGFycy1pbi1pZGVudGlmaWVycy4KLQkqIHRlc3RzdWl0ZS9saWJqYXZhLmpuaS9jbmkuZXhw OiBVc2UgLWZkb2xsYXJzLWluLWlkZW50aWZpZXJzLgotCSogdGVzdHN1aXRlL2xpYmphdmEuanZt dGkvanZtdGkuZXhwIChnY2pfanZtdGlfY29tcGlsZV9jeHhfdG9fbyk6IExpa2V3aXNlLgotCi0t LS0gbGliamF2YS90ZXN0c3VpdGUvbGliamF2YS5jbmkvY25pLmV4cAkocmV2aXNpb24gMTI2NjIx KQotKysrIGxpYmphdmEvdGVzdHN1aXRlL2xpYmphdmEuY25pL2NuaS5leHAJKHJldmlzaW9uIDEy NjYyMikKLUBAIC0xMCw3ICsxMCw3IEBACi0gICBzZXQgb25hbWUgJHtuYW1lfS5vCi0gCi0gICAj IEZpbmQgdGhlIGdlbmVyYXRlZCBoZWFkZXIuCi0tICBsYXBwZW5kIG9wdGlvbnMgImFkZGl0aW9u YWxfZmxhZ3M9LUkuIC1JLi4gLUkkc3JjZGlyLyRzdWJkaXIiCi0rICBsYXBwZW5kIG9wdGlvbnMg ImFkZGl0aW9uYWxfZmxhZ3M9LUkuIC1JLi4gLUkkc3JjZGlyLyRzdWJkaXIgLWZkb2xsYXJzLWlu LWlkZW50aWZpZXJzIgotICAgIyBGaW5kIGxpYmdjaiBoZWFkZXJzLgotICAgbGFwcGVuZCBvcHRp b25zICJhZGRpdGlvbmFsX2ZsYWdzPS1JJHNyY2Rpci8uLiIKLSAKLS0tLSBsaWJqYXZhL3Rlc3Rz dWl0ZS9saWJqYXZhLmp2bXRpL2p2bXRpLWludGVycC5leHAJKHJldmlzaW9uIDEyNjYyMSkKLSsr KyBsaWJqYXZhL3Rlc3RzdWl0ZS9saWJqYXZhLmp2bXRpL2p2bXRpLWludGVycC5leHAJKHJldmlz aW9uIDEyNjYyMikKLUBAIC00Nyw3ICs0Nyw3IEBACi0gCi0gICAjIEZpbmQgam5pLmggYW5kIGpu aV9tZC5oLgotICAgbGFwcGVuZCBvcHRpb25zICJhZGRpdGlvbmFsX2ZsYWdzPS1JJHNyY2Rpci8u Li9pbmNsdWRlICBcCi0tICAgICAgICAgICAgICAgICAgIC1JJHNyY2Rpci8uLi9jbGFzc3BhdGgv aW5jbHVkZSIKLSsgICAgICAgICAgICAgICAgICAgLUkkc3JjZGlyLy4uL2NsYXNzcGF0aC9pbmNs dWRlIC1mZG9sbGFycy1pbi1pZGVudGlmaWVycyIKLSAKLSAgICMgQXBwZW5kIEMrKyBvcHRpb25z Ci0gICBsYXBwZW5kIG9wdGlvbnMgImFkZGl0aW9uYWxfZmxhZ3M9JG9wdGlvbnNfY3h4IgotLS0t IGxpYmphdmEvdGVzdHN1aXRlL2xpYmphdmEuanZtdGkvanZtdGkuZXhwCShyZXZpc2lvbiAxMjY2 MjEpCi0rKysgbGliamF2YS90ZXN0c3VpdGUvbGliamF2YS5qdm10aS9qdm10aS5leHAJKHJldmlz aW9uIDEyNjYyMikKLUBAIC0xMSwxMSArMTEsMTEgQEAKLSAgIHNldCBvbmFtZSAke25hbWV9Lm8K LSAKLSAgICMgRmluZCB0aGUgZ2VuZXJhdGVkIGhlYWRlci4KLS0gIGxhcHBlbmQgb3B0aW9ucyAi YWRkaXRpb25hbF9mbGFncz0tZyAtSS4gLUkuLiIKLSsgIGxhcHBlbmQgb3B0aW9ucyAiYWRkaXRp b25hbF9mbGFncz0tZyAtSS4gLUkuLiAtZmRvbGxhcnMtaW4taWRlbnRpZmllcnMiCi0gICAjIEZp bmQgbGliZ2NqIGhlYWRlcnMuCi0gICBsYXBwZW5kIG9wdGlvbnMgImFkZGl0aW9uYWxfZmxhZ3M9 LUkkc3JjZGlyLy4uIgotICAgIyBGaW5kIGp2bXRpLmgsIGp2bXRpX21kLmgsIGp2bXRpLWludC5o LCBqdm0uaCByZXF1aXJlbWVudHMKLS0gIGxhcHBlbmQgb3B0aW9ucyAiYWRkaXRpb25hbF9mbGFn cz0tSSRzcmNkaXIvLi4vaW5jbHVkZSAtSSRzcmNkaXIvLi4vY2xhc3NwYXRoL2luY2x1ZGUgLUkk b2JqZGlyLy4uL2luY2x1ZGUgLUkkb2JqZGlyLy4uLy4uL2JvZWhtLWdjL2luY2x1ZGUiCi0rICBs YXBwZW5kIG9wdGlvbnMgImFkZGl0aW9uYWxfZmxhZ3M9LUkkc3JjZGlyLy4uL2luY2x1ZGUgLUkk c3JjZGlyLy4uL2NsYXNzcGF0aC9pbmNsdWRlIC1JJG9iamRpci8uLi9pbmNsdWRlIC1JJG9iamRp ci8uLi8uLi9ib2VobS1nYy9pbmNsdWRlICIKLSAKLSAgIHNldCB4IFtsaWJqYXZhX3BydW5lX3dh cm5pbmdzIFwKLSAJICAgW3RhcmdldF9jb21waWxlICRmaWxlICRvbmFtZSBvYmplY3QgJG9wdGlv bnNdXQotLS0tIGxpYmphdmEvdGVzdHN1aXRlL2xpYmphdmEuam5pL2puaS5leHAJKHJldmlzaW9u IDEyNjYyMSkKLSsrKyBsaWJqYXZhL3Rlc3RzdWl0ZS9saWJqYXZhLmpuaS9qbmkuZXhwCShyZXZp c2lvbiAxMjY2MjIpCi1AQCAtMzEsNyArMzEsNyBAQAotIAotICAgbGFwcGVuZCBvcHRpb25zICJh ZGRpdGlvbmFsX2ZsYWdzPSR7c29fZmxhZ30gLWZQSUMiCi0gICAjIEZpbmQgdGhlIGdlbmVyYXRl ZCBoZWFkZXIuCi0tICBsYXBwZW5kIG9wdGlvbnMgImFkZGl0aW9uYWxfZmxhZ3M9LUkuIC1JLi4g LUkkc3JjZGlyLyRzdWJkaXIiCi0rICBsYXBwZW5kIG9wdGlvbnMgImFkZGl0aW9uYWxfZmxhZ3M9 LUkuIC1JLi4gLUkkc3JjZGlyLyRzdWJkaXIgLWZkb2xsYXJzLWluLWlkZW50aWZpZXJzIgotIAot ICAgIyBFbnN1cmUgdGhhdCB0aGUgZ2VuZXJhdGVkIGhlYWRlciBoYXMgY29ycmVjdCBwcm90b3R5 cGVzLgotICAgc2V0IGNmaWxlIFtmaWxlIHJvb3RuYW1lICRmaWxlXS5jCi1AQCAtMjE5LDcgKzIx OSw3IEBACi0gICBsYXBwZW5kIG9wdGlvbnMgImFkZGl0aW9uYWxfZmxhZ3M9LUkuIC1JLi4gLUkk c3JjZGlyLyRzdWJkaXIiCi0gCi0gICAjIEZpbmQgam5pLmggYW5kIGpuaV9tZC5oLgotLSAgbGFw cGVuZCBvcHRpb25zICJhZGRpdGlvbmFsX2ZsYWdzPS1JJHNyY2Rpci8uLi9pbmNsdWRlIC1JJHNy Y2Rpci8uLi9jbGFzc3BhdGgvaW5jbHVkZSIKLSsgIGxhcHBlbmQgb3B0aW9ucyAiYWRkaXRpb25h bF9mbGFncz0tSSRzcmNkaXIvLi4vaW5jbHVkZSAtSSRzcmNkaXIvLi4vY2xhc3NwYXRoL2luY2x1 ZGUgLWZkb2xsYXJzLWluLWlkZW50aWZpZXJzIgotIAotICAgIyBBcHBlbmQgQysrIG9wdGlvbnMK LSAgIGxhcHBlbmQgb3B0aW9ucyAiYWRkaXRpb25hbF9mbGFncz0kb3B0aW9uc19jeHgiCgpkaWZm IC0tZ2l0IGEvZ2NjNDEtamF2YS1ib2d1cy1kZWJ1Z2xpbmUucGF0Y2ggYi9nY2M0MS1qYXZhLWJv Z3VzLWRlYnVnbGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNiZGIw Yi4uMDAwMDAwMAotLS0gYS9nY2M0MS1qYXZhLWJvZ3VzLWRlYnVnbGluZS5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTIwMDctMDMtMTYgIEFuZHJldyBIYWxleSAgPGFwaEBy ZWRoYXQuY29tPgotCi0JKiBjbGFzcy5jIChwdXNoX2NsYXNzKTogRG9uJ3QgYm9ndXNseSBndWVz cyB0aGUgc291cmNlIGZpbGVuYW1lLgotCSogamNmLXBhcnNlLmMgKGdpdmVfbmFtZV90b19jbGFz cyk6IERvbid0IHNldCBpbnB1dF9sb2NhdGlvbiBmcm9tCi0JREVDTF9BUlRJRklDSUFMIGRlY2xz LgotCi0tLS0gZ2NjL2phdmEvY2xhc3MuYyAgICAgICAgKHJldmlzaW9uIDEyMjc0NikKLSsrKyBn Y2MvamF2YS9jbGFzcy5jICAgICAgICAod29ya2luZyBjb3B5KQotQEAgLTQyNiw4ICs0MjYsNyBA QAotICAgdHJlZSBkZWNsLCBzaWduYXR1cmU7Ci0gICBsb2NhdGlvbl90IHNhdmVkX2xvYyA9IGlu cHV0X2xvY2F0aW9uOwotICNpZm5kZWYgVVNFX01BUFBFRF9MT0NBVElPTgotLSAgdHJlZSBzb3Vy Y2VfbmFtZSA9IGlkZW50aWZpZXJfc3Vic3QgKGNsYXNzX25hbWUsICIiLCAnLicsICcvJywgIi5q YXZhIik7Ci0tICBpbnB1dF9maWxlbmFtZSA9IElERU5USUZJRVJfUE9JTlRFUiAoc291cmNlX25h bWUpOwotKyAgaW5wdXRfZmlsZW5hbWUgPSAiPHVua25vd24+IjsKLSAgIGlucHV0X2xpbmUgPSAw OwotICNlbmRpZgotICAgQ0xBU1NfUCAoY2xhc3NfdHlwZSkgPSAxOwotLS0tIGdjYy9qYXZhL2pj Zi1wYXJzZS5jICAgIChyZXZpc2lvbiAxMjI3NDYpCi0rKysgZ2NjL2phdmEvamNmLXBhcnNlLmMg ICAgKHdvcmtpbmcgY29weSkKLUBAIC0xMjIxLDkgKzEyMjEsMTIgQEAgZ2l2ZV9uYW1lX3RvX2Ns YXNzIChKQ0YgKmpjZiwgaW50IGkpCi0gCW1haW5faW5wdXRfZmlsZW5hbWUgPSBzZm5hbWU7Ci0g ICAgICAgfQotICNlbHNlCi0tICAgICAgaW5wdXRfbG9jYXRpb24gPSBERUNMX1NPVVJDRV9MT0NB VElPTiAoVFlQRV9OQU1FICh0aGlzX2NsYXNzKSk7Ci0tICAgICAgaWYgKG1haW5faW5wdXRfZmls ZW5hbWUgPT0gTlVMTCAmJiBqY2YgPT0gbWFpbl9qY2YpCi0tCW1haW5faW5wdXRfZmlsZW5hbWUg PSBpbnB1dF9maWxlbmFtZTsKLSsgICAgICBpZiAoISBERUNMX0FSVElGSUNJQUwgKFRZUEVfTkFN RSAodGhpc19jbGFzcykpKQotKwl7Ci0rCSAgaW5wdXRfbG9jYXRpb24gPSBERUNMX1NPVVJDRV9M T0NBVElPTiAoVFlQRV9OQU1FICh0aGlzX2NsYXNzKSk7Ci0rCSAgaWYgKG1haW5faW5wdXRfZmls ZW5hbWUgPT0gTlVMTCAmJiBqY2YgPT0gbWFpbl9qY2YpCi0rCSAgICBtYWluX2lucHV0X2ZpbGVu YW1lID0gaW5wdXRfZmlsZW5hbWU7Ci0rCX0KLSAjZW5kaWYKLSAKLSAgICAgICBqY2YtPmNwb29s LmRhdGFbaV0udCA9IHRoaXNfY2xhc3M7CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtamF2YS1saWJkb3Rk b3RsaWIucGF0Y2ggYi9nY2M0MS1qYXZhLWxpYmRvdGRvdGxpYi5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggNWQyYzBkMy4uMDAwMDAwMAotLS0gYS9nY2M0MS1qYXZhLWxpYmRv dGRvdGxpYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTIwMDYtMDctMjAg IEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JKiBjb25maWd1cmUuYWMgKHRv b2xleGVjbGliZGlyLCBkYmV4ZWNkaXIpOiBDYW5vbmljYWxpemUgL2xpYi8uLi9saWIKLQl0byAv bGliLgotCSogY29uZmlndXJlOiBSZWJ1aWx0LgotCi0tLS0gbGliamF2YS9jb25maWd1cmUuYWMu amoJMjAwNi0wNy0yMCAxNDowMTowMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJqYXZhL2NvbmZp Z3VyZS5hYwkyMDA2LTA3LTIwIDE2OjM2OjMxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEyNjIsNiAr MTI2Miw3IEBAIGNhc2UgJHt2ZXJzaW9uX3NwZWNpZmljX2xpYnN9IGluCi0gICAgIG11bHRpX29z X2RpcmVjdG9yeT1gJENDIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCi0gICAgIGNhc2UgJG11 bHRpX29zX2RpcmVjdG9yeSBpbgotICAgICAgIC4pIHRvb2xleGVjbGliZGlyPSR0b29sZXhlY21h aW5saWJkaXIgOzsgIyBBdm9pZCB0cmFpbGluZyAvLgotKyAgICAgIC4uL2xpYiopIHRvb2xleGVj bGliZGlyPSckKHN1YnN0IC9saWIvLi4vbGliLC9saWIsJyR0b29sZXhlY21haW5saWJkaXIvJG11 bHRpX29zX2RpcmVjdG9yeScpJyA7OwotICAgICAgICopIHRvb2xleGVjbGliZGlyPSR0b29sZXhl Y21haW5saWJkaXIvJG11bHRpX29zX2RpcmVjdG9yeSA7OwotICAgICBlc2FjCi0gICAgIDs7Ci1A QCAtMTI3OCw2ICsxMjc5LDEwIEBAIGNhc2UgJG11bHRpX29zX2RpcmVjdG9yeSBpbgotICAgIGRi ZXhlY2Rpcj0nJChsaWJkaXIpL2djai0kKGdjY192ZXJzaW9uKScgIyBBdm9pZCAvLgotICAgIGFj X2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgLS13aXRoLW5hdGl2ZS1saWJkaXI9 XCRcKGxpYmRpclwpL2djai1gY2F0ICRzcmNkaXIvLi4vZ2NjL0JBU0UtVkVSYCIKLSAgICA7Owot KyAgLi4vbGliKikKLSsgICBkYmV4ZWNkaXI9JyQoc3Vic3QgL2xpYi8uLi9saWIsL2xpYiwkKGxp YmRpcikvJyRtdWx0aV9vc19kaXJlY3RvcnknL2djai0kKGdjY192ZXJzaW9uKSknCi0rICAgYWNf Y29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAtLXdpdGgtbmF0aXZlLWxpYmRpcj1c JFwobGliZGlyXCkvJG11bHRpX29zX2RpcmVjdG9yeS9nY2otYGNhdCAkc3JjZGlyLy4uL2djYy9C QVNFLVZFUmAiCi0rICAgOzsKLSAgICopCi0gICAgZGJleGVjZGlyPSckKGxpYmRpcikvJyRtdWx0 aV9vc19kaXJlY3RvcnknL2djai0kKGdjY192ZXJzaW9uKScKLSAgICBhY19jb25maWd1cmVfYXJn cz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0td2l0aC1uYXRpdmUtbGliZGlyPVwkXChsaWJkaXJcKS8k bXVsdGlfb3NfZGlyZWN0b3J5L2djai1gY2F0ICRzcmNkaXIvLi4vZ2NjL0JBU0UtVkVSYCIKLS0t LSBsaWJqYXZhL2NvbmZpZ3VyZS5qagkyMDA2LTA3LTIwIDE0OjAxOjAyLjAwMDAwMDAwMCArMDIw MAotKysrIGxpYmphdmEvY29uZmlndXJlCTIwMDYtMDctMjAgMTY6NDU6MjQuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTQ4NjMsNiArMTQ4NjQsNyBAQCBjYXNlICR7dmVyc2lvbl9zcGVjaWZpY19saWJz fSBpbgotICAgICBtdWx0aV9vc19kaXJlY3Rvcnk9YCRDQyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0 b3J5YAotICAgICBjYXNlICRtdWx0aV9vc19kaXJlY3RvcnkgaW4KLSAgICAgICAuKSB0b29sZXhl Y2xpYmRpcj0kdG9vbGV4ZWNtYWlubGliZGlyIDs7ICMgQXZvaWQgdHJhaWxpbmcgLy4KLSsgICAg ICAuLi9saWIqKSB0b29sZXhlY2xpYmRpcj0nJChzdWJzdCAvbGliLy4uL2xpYiwvbGliLCckdG9v bGV4ZWNtYWlubGliZGlyLyRtdWx0aV9vc19kaXJlY3RvcnknKScgOzsKLSAgICAgICAqKSB0b29s ZXhlY2xpYmRpcj0kdG9vbGV4ZWNtYWlubGliZGlyLyRtdWx0aV9vc19kaXJlY3RvcnkgOzsKLSAg ICAgZXNhYwotICAgICA7OwotQEAgLTE0ODc5LDYgKzE0ODgxLDEwIEBAIGNhc2UgJG11bHRpX29z X2RpcmVjdG9yeSBpbgotICAgIGRiZXhlY2Rpcj0nJChsaWJkaXIpL2djai0kKGdjY192ZXJzaW9u KScgIyBBdm9pZCAvLgotICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3Mg LS13aXRoLW5hdGl2ZS1saWJkaXI9XCRcKGxpYmRpclwpL2djai1gY2F0ICRzcmNkaXIvLi4vZ2Nj L0JBU0UtVkVSYCIKLSAgICA7OwotKyAgLi4vbGliKikKLSsgICBkYmV4ZWNkaXI9JyQoc3Vic3Qg L2xpYi8uLi9saWIsL2xpYiwkKGxpYmRpcikvJyRtdWx0aV9vc19kaXJlY3RvcnknL2djai0kKGdj Y192ZXJzaW9uKSknCi0rICAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAt LXdpdGgtbmF0aXZlLWxpYmRpcj1cJFwobGliZGlyXCkvJG11bHRpX29zX2RpcmVjdG9yeS9nY2ot YGNhdCAkc3JjZGlyLy4uL2djYy9CQVNFLVZFUmAiCi0rICAgOzsKLSAgICopCi0gICAgZGJleGVj ZGlyPSckKGxpYmRpcikvJyRtdWx0aV9vc19kaXJlY3RvcnknL2djai0kKGdjY192ZXJzaW9uKScK LSAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0td2l0aC1uYXRpdmUt bGliZGlyPVwkXChsaWJkaXJcKS8kbXVsdGlfb3NfZGlyZWN0b3J5L2djai1gY2F0ICRzcmNkaXIv Li4vZ2NjL0JBU0UtVkVSYCIKCmRpZmYgLS1naXQgYS9nY2M0MS1qYXZhLW5vbXVsdGkucGF0Y2gg Yi9nY2M0MS1qYXZhLW5vbXVsdGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDNhNjU1NGQuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtamF2YS1ub211bHRpLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLS0tIGxpYmphdmEvY29uZmlndXJlLmFjLmpqCTIwMDQt MDgtMTYgMjE6MTM6MjkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliamF2YS9jb25maWd1cmUuYWMJ MjAwNC0wOC0yMSAxMTo0NDo1OS4wMjA3NTU1NDIgKzAyMDAKLUBAIC0zNjcsNiArMzY3LDEwIEBA IHVzZV9ndGtfYXd0PSIiCi0gVE9PTEtJVD0KLSBBQ19TVUJTVChUT09MS0lUKQotIAotK2lmIHRl c3QgLW4gIiR7d2l0aF9tdWx0aXN1YmRpcn0iOyB0aGVuCi0rICBwZWVybGlicz1ubwotK2ZpCi0r Ci0gZm9yIHBlZXIgaW4gJHBlZXJsaWJzIDsgZG8KLSAgIGNhc2UgJHBlZXIgaW4KLSAgICAgeGxp YikKLS0tLSBsaWJqYXZhL2NvbmZpZ3VyZS5qagkyMDA0LTA4LTE2IDIxOjIyOjE0LjAwMDAwMDAw MCArMDIwMAotKysrIGxpYmphdmEvY29uZmlndXJlCTIwMDQtMDgtMjEgMTE6NDU6MTYuMjYwNzM4 MDYwICswMjAwCi1AQCAtNDExOCw2ICs0MTE4LDkgQEAgdXNlX2d0a19hd3Q9IiIKLSAjIFRoZSBk ZWZhdWx0IHRvb2xraXQgdG8gdXNlIGlzIHRoZSBmaXJzdCBvbmUgc3BlY2lmaWVkLgotIFRPT0xL SVQ9Ci0gCi0raWYgdGVzdCAtbiAiJHt3aXRoX211bHRpc3ViZGlyfSI7IHRoZW4KLSsgIHBlZXJs aWJzPW5vCi0rZmkKLSAKLSBmb3IgcGVlciBpbiAkcGVlcmxpYnMgOyBkbwotICAgY2FzZSAkcGVl ciBpbgoKZGlmZiAtLWdpdCBhL2djYzQxLWphdmEtc2xvd19wdGhyZWFkX3NlbGYucGF0Y2ggYi9n Y2M0MS1qYXZhLXNsb3dfcHRocmVhZF9zZWxmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBkZTE2MGJlLi4wMDAwMDAwCi0tLSBhL2djYzQxLWphdmEtc2xvd19wdGhyZWFkX3Nl bGYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0yMDA1LTA1LTIwICBKYWt1 YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCSogY29uZmlndXJlLmhvc3QgKHNsb3df cHRocmVhZF9zZWxmKTogU2V0IHRvIGVtcHR5IHVuY29uZGl0aW9uYWxseQotCW9uIExpbnV4IHRh cmdldHMuCi0KLS0tLSBsaWJqYXZhL2NvbmZpZ3VyZS5ob3N0CSguLi4vZ2NjLTRfMC1icmFuY2gp CShyZXZpc2lvbiAxMDcyNjYpCi0rKysgbGliamF2YS9jb25maWd1cmUuaG9zdAkoLi4uL3JlZGhh dC9nY2MtNF8wLWJyYW5jaCkJKHJldmlzaW9uIDEwNzQxNCkKLUBAIC0xNzQsNiArMTc0LDcgQEAK LSAgIHNoLWxpbnV4KiB8IHNoWzM0XSotbGludXgqKQotICAgCWNhbl91bndpbmRfc2lnbmFsPXll cwotIAlsaWJnY2pfbGRfc3ltYm9saWM9Jy1XbCwtQnN5bWJvbGljJwotKwlzbG93X3B0aHJlYWRf c2VsZj0KLSAJaWYgdGVzdCB4JHNsb3dfcHRocmVhZF9zZWxmID0geHllcyBcCi0gCSAgICYmIHRl c3QgeCRjcm9zc19jb21waWxpbmcgIT0geHllczsgdGhlbgotIAkgIGNhdCA+IGNvbmZ0ZXN0LmMg PDxFT0YKCmRpZmYgLS1naXQgYS9nY2M0MS1qZHdwLnBhdGNoIGIvZ2NjNDEtamR3cC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlNGI3Yi4uMDAwMDAwMAotLS0gYS9nY2M0 MS1qZHdwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQyICswLDAgQEAKLTIwMDctMDktMjQg IEtlaXRoIFNlaXR6ICA8a2VpdGhzQHJlZGhhdC5jb20+Ci0KLQkqIGluY2x1ZGUvanZtLmggKHN0 cnVjdCBuYXRUaHJlYWQpOiBBZGQgbmV3IGZpZWxkICdmcmFtZScuCi0JKiBpbmNsdWRlL2phdmEt aW50ZXJwLmggKF9Kdl9GcmFtZSk6IFVzZSBfSnZfVGhyZWFkU3RhY2tQZWVrLAotCV9Kdl9UaHJl YWRTdGFja1BvcCwgYW5kIF9Kdl9UaHJlYWRTdGFja1B1c2ggaW5zdGVhZCBvZgotCWphdmEubGFu Zy5UaHJlYWQuZnJhbWUuCi0JKH5fSnZfRnJhbWUpOiBVc2UgX0p2X1RocmVhZFN0YWNrUG9wLgot CSogamF2YS9sYW5nL25hdFRocmVhZC5jYyAoX0p2X1RocmVhZFN0YWNrUGVlayk6IE5ldyBmdW5j dGlvbi4KLQkoX0p2X1RocmVhZFN0YWNrUHVzaCk6IE5ldyBmdW5jdGlvbi4KLQkoX0p2X1RocmVh ZFN0YWNrUG9wKTogTmV3IGZ1bmN0aW9uLgotCSogamF2YS9sYW5nL1RocmVhZC5qYXZhIChmcmFt ZSk6IFJlbW92ZSBmaWVsZCB0byByZXN0b3JlCi0JQysrIEFCSSBjb21wYXRpYmlsaXR5LgotCSog Z251L2NsYXNzcGF0aC9qZHdwL25hdFZNVmlydHVhbE1hY2hpbmUuY2MgKGdldEZyYW1lcyk6IFVz ZQotCV9Kdl9UaHJlYWRTdGFja1BlZWsuCi0JKGdldEZyYW1lKTogTGlrZXdpc2UuCi0JKiBnbnUv Y2xhc3NwYXRoL2pkd3AvbmF0Vk1GcmFtZS5jYyAoZ2V0RnJhbWVEZXB0aCk6IExpa2V3aXNlLgot CSoganZtdGkuY2MgKGdldExvY2FsRnJhbWUpOiBMaWtld2lzZS4KLQkoX0p2X0pWTVRJX0dldEZy YW1lQ291bnQpOiBMaWtld2lzZS4KLQkoX0p2X0pWTVRJX0dldFRocmVhZFN0YXRlKTogTGlrZXdp c2UuCi0JKF9Kdl9KVk1USV9HZXRTdGFja1RyYWNlKTogTGlrZXdpc2UuCi0JKiBpbnRlcnByZXQu Y2MgKF9Kdl9SZXBvcnRKVk1USUV4Y2VwdGlvblRocm93KTogTGlrZXdpc2UuCi0JKiBoZWFkZXJz LnR4dCAoamF2YS9sYW5nL1RocmVhZC5oKTogUHJlcGVuZCBkZWNsYXJhdGlvbnMKLQlmb3IgX0p2 X1RocmVhZFN0YWNrUGVlaywgX0p2X1RocmVhZFN0YWNrUHVzaCwgYW5kIF9Kdl9UaHJlYWRTdGFj a1BvcC4KLQlBZGQgYXMgZnJpZW5kIGZ1bmN0aW9ucy4KLQkqIGpuaS5jYyAoX0p2X0pOSU1ldGhv ZDo6Y2FsbCk6IFB1c2ggYSBmcmFtZSBvbnRvIHRoZSBzdGFjayB3aGVuCi0JY2FsbGluZyBhIEpO SSBtZXRob2QuCi0KLS0tLSBsaWJqYXZhL2ludGVycHJldC5jYwkocmV2aXNpb24gMTI4NjAzKQot KysrIGxpYmphdmEvaW50ZXJwcmV0LmNjCSh3b3JraW5nIGNvcHkpCi1AQCAtMTcwOSw3ICsxNzA5 LDcgQEAKLSBfSnZfUmVwb3J0SlZNVElFeGNlcHRpb25UaHJvdyAoanRocm93YWJsZSBleCkKLSB7 Ci0gICBqdGhyZWFkIHRocmVhZCA9IDo6amF2YTo6bGFuZzo6VGhyZWFkOjpjdXJyZW50VGhyZWFk ICgpOwotLSAgX0p2X0ZyYW1lICpmcmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8X0p2X0ZyYW1lICo+ ICh0aHJlYWQtPmZyYW1lKTsKLSsgIF9Kdl9GcmFtZSAqZnJhbWUgPSBfSnZfVGhyZWFkU3RhY2tQ ZWVrICh0aHJlYWQpOwotICAgam1ldGhvZElEIHRocm93X21ldGggPSBmcmFtZS0+c2VsZi0+Z2V0 X21ldGhvZCAoKTsKLSAgIGpsb2NhdGlvbiB0aHJvd19sb2MgPSAtMTsKLSAgIGlmIChmcmFtZS0+ ZnJhbWVfdHlwZSA9PSBmcmFtZV9pbnRlcnByZXRlcikKLS0tLSBsaWJqYXZhL2luY2x1ZGUvamF2 YS1pbnRlcnAuaAkocmV2aXNpb24gMTI4NjAzKQotKysrIGxpYmphdmEvaW5jbHVkZS9qYXZhLWlu dGVycC5oCSh3b3JraW5nIGNvcHkpCi1AQCAtMzkxLDE0ICszOTEsMTQgQEAKLSAgIHsKLSAgICAg c2VsZiA9IHM7Ci0gICAgIGZyYW1lX3R5cGUgPSB0eXBlOwotLSAgICBuZXh0ID0gKF9Kdl9GcmFt ZSAqKSB0aHItPmZyYW1lOwotLSAgICB0aHItPmZyYW1lID0gKGdudTo6Z2NqOjpSYXdEYXRhICop IHRoaXM7Ci0rICAgIG5leHQgPSBfSnZfVGhyZWFkU3RhY2tQZWVrICh0aHIpOwotKyAgICBfSnZf VGhyZWFkU3RhY2tQdXNoICh0aHIsIHRoaXMpOwotICAgICB0aHJlYWQgPSB0aHI7Ci0gICB9Ci0g Ci0gICB+X0p2X0ZyYW1lICgpCi0gICB7Ci0tICAgIHRocmVhZC0+ZnJhbWUgPSAoZ251OjpnY2o6 OlJhd0RhdGEgKikgbmV4dDsKLSsgICAgX0p2X1RocmVhZFN0YWNrUG9wICh0aHJlYWQpOwotICAg fQotIAotICAgaW50IGRlcHRoICgpCi0tLS0gbGliamF2YS9pbmNsdWRlL2p2bS5oCShyZXZpc2lv biAxMjg2MDMpCi0rKysgbGliamF2YS9pbmNsdWRlL2p2bS5oCSh3b3JraW5nIGNvcHkpCi1AQCAt MzQsNiArMzQsOCBAQAotIAotICNpbmNsdWRlIDxzeXNkZXAvbG9ja3MuaD4KLSAKLStjbGFzcyBf SnZfRnJhbWU7Ci0rCi0gLyogTWFjcm8gZm9yIHBvc3NpYmxlIHVudXNlZCBhcmd1bWVudHMuICAq LwotICNkZWZpbmUgTUFZQkVfVU5VU0VEIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKQotIAot QEAgLTc2Nyw2ICs3NjksMTIgQEAKLSAKLSAgIC8vIEVhY2ggdGhyZWFkIGhhcyBpdHMgb3duIEpO SSBvYmplY3QuCi0gICBfSnZfSk5JRW52ICpqbmlfZW52OwotKwotKyAgLy8gRGVzY3JpYmVzIHRo ZSB0b3Btb3N0IGZyYW1lIGluIHRoZSB0aHJlYWQncyBjb21wb3NpdGUKLSsgIC8vIChpbnRlcnAg KyBKTkkpIHN0YWNrLiBBZGRlZCBoZXJlIHRvIG1haW50YWluIEMrKyBBQkkKLSsgIC8vIGNvbXBh dGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucy4gTmV3ZXIgdmVyc2lvbnMKLSsgIC8vIG9m IGdjaiBwdXQgdGhpcyBpbiBqYXZhL2xhbmcvVGhyZWFkLmphdmEuCi0rICBfSnZfRnJhbWUgKmZy YW1lOwotIH07Ci0gCi0gI2VuZGlmIC8qIF9fSkFWQV9KVk1fSF9fICovCi0tLS0gbGliamF2YS9q bmkuY2MJKHJldmlzaW9uIDEyODYwMykKLSsrKyBsaWJqYXZhL2puaS5jYwkod29ya2luZyBjb3B5 KQotQEAgLTIzNDMsNiArMjM0MywxMCBAQAotICAgLy8gQ29weSBvdmVyIHBhc3NlZC1pbiBhcmd1 bWVudHMuCi0gICBtZW1jcHkgKCZyZWFsX2FyZ3Nbb2Zmc2V0XSwgYXJncywgX3RoaXMtPmFyZ3Nf cmF3X3NpemUpOwotIAotKyAgLy8gQWRkIGEgZnJhbWUgdG8gdGhlIGNvbXBvc2l0ZSAoaW50ZXJw cmV0ZWQgKyBKTkkpIGNhbGwgc3RhY2sKLSsgIGphdmE6Omxhbmc6OlRocmVhZCAqdGhyZWFkID0g amF2YTo6bGFuZzo6VGhyZWFkOjpjdXJyZW50VGhyZWFkICgpOwotKyAgX0p2X05hdGl2ZUZyYW1l IG5hdF9mcmFtZSAoX3RoaXMsIHRocmVhZCk7Ci0rCi0gICAvLyBUaGUgYWN0dWFsIGNhbGwgdG8g dGhlIEpOSSBmdW5jdGlvbi4KLSAjaWYgRkZJX05BVElWRV9SQVdfQVBJCi0gICBmZmlfcmF3X2Nh bGwgKCZfdGhpcy0+am5pX2NpZiwgKHZvaWQgKCopKCkpIF90aGlzLT5mdW5jdGlvbiwKLS0tLSBs aWJqYXZhL2p2bXRpLmNjCShyZXZpc2lvbiAxMjg2MDMpCi0rKysgbGliamF2YS9qdm10aS5jYwko d29ya2luZyBjb3B5KQotQEAgLTIyOCw3ICsyMjgsNyBAQAotICAgVEhSRUFEX0NIRUNLX1ZBTElE ICh0aHJlYWQpOwotICAgVEhSRUFEX0NIRUNLX0lTX0FMSVZFICh0aHJlYWQpOwotICAgCi0tICBf SnZfRnJhbWUgKmZyYW1lID0gcmVpbnRlcnByZXRfY2FzdDxfSnZfRnJhbWUgKj4gKHRocmVhZC0+ ZnJhbWUpOwotKyAgX0p2X0ZyYW1lICpmcmFtZSA9IF9Kdl9UaHJlYWRTdGFja1BlZWsgKHRocmVh ZCk7Ci0gICAKLSAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVwdGg7IGkrKykKLSAgICAgeyAgICAK LUBAIC01MTYsNyArNTE2LDcgQEAKLSAgIFRIUkVBRF9DSEVDS19WQUxJRCAodGhyZWFkKTsKLSAg IFRIUkVBRF9DSEVDS19JU19BTElWRSAodGhyZWFkKTsKLSAgICAKLS0gIF9Kdl9GcmFtZSAqZnJh bWUgPSByZWludGVycHJldF9jYXN0PF9Kdl9GcmFtZSAqPiAodGhyZWFkLT5mcmFtZSk7Ci0rICBf SnZfRnJhbWUgKmZyYW1lID0gX0p2X1RocmVhZFN0YWNrUGVlayAodGhyZWFkKTsKLSAgICgqZnJh bWVfY291bnQpID0gZnJhbWUtPmRlcHRoICgpOwotICAgcmV0dXJuIEpWTVRJX0VSUk9SX05PTkU7 Ci0gfQotQEAgLTU0Myw3ICs1NDMsNyBAQAotICAgICAgIGlmICh0aHJlYWQtPmlzSW50ZXJydXB0 ZWQgKCkpCi0gCXN0YXRlIHw9IEpWTVRJX1RIUkVBRF9TVEFURV9JTlRFUlJVUFRFRDsKLSAKLS0g ICAgICBfSnZfRnJhbWUgKmZyYW1lID0gcmVpbnRlcnByZXRfY2FzdDxfSnZfRnJhbWUgKj4gKHRo cmVhZC0+ZnJhbWUpOwotKyAgICAgIF9Kdl9GcmFtZSAqZnJhbWUgPSBfSnZfVGhyZWFkU3RhY2tQ ZWVrICh0aHJlYWQpOwotICAgICAgIGlmIChmcmFtZSAhPSBOVUxMICYmIGZyYW1lLT5mcmFtZV90 eXBlID09IGZyYW1lX25hdGl2ZSkKLSAJc3RhdGUgfD0gSlZNVElfVEhSRUFEX1NUQVRFX0lOX05B VElWRTsKLSAKLUBAIC0xMjczLDcgKzEyNzMsNyBAQAotICAgSUxMRUdBTF9BUkdVTUVOVCAoc3Rh cnRfZGVwdGggPj0gKCpmcmFtZV9jb3VudCkpOwotICAgSUxMRUdBTF9BUkdVTUVOVCAoc3RhcnRf ZGVwdGggPCAoLSgqZnJhbWVfY291bnQpKSk7Ci0gICAKLS0gIF9Kdl9GcmFtZSAqZnJhbWUgPSBy ZWludGVycHJldF9jYXN0PF9Kdl9GcmFtZSAqPiAodGhyZWFkLT5mcmFtZSk7Ci0rICBfSnZfRnJh bWUgKmZyYW1lID0gX0p2X1RocmVhZFN0YWNrUGVlayAodGhyZWFkKTsKLSAKLSAgIC8vIElmIHN0 YXJ0X2RlcHRoIGlzIG5lZ2F0aXZlIHVzZSB0aGlzIHRvIGRldGVybWluZSBhdCB3aGF0IGRlcHRo IHRvIHN0YXJ0Ci0gICAvLyB0aGUgdHJhY2UgYnkgYWRkaW5nIGl0IHRvIHRoZSBsZW5ndGggb2Yg dGhlIGNhbGwgc3RhY2suICBUaGlzIGFsbG93cyB0aGUKLS0tLSBsaWJqYXZhL2hlYWRlcnMudHh0 CShyZXZpc2lvbiAxMjg2MDMpCi0rKysgbGliamF2YS9oZWFkZXJzLnR4dAkod29ya2luZyBjb3B5 KQotQEAgLTYsNiArNiw3IEBACi0gCi0gY2xhc3MgamF2YS9sYW5nL1RocmVhZAotIHByZXBlbmQg Y2xhc3MgX0p2X0pOSUVudjsKLStwcmVwZW5kIGNsYXNzIF9Kdl9GcmFtZTsKLSBwcmVwZW5kICNk ZWZpbmUgX0pWX05PVF9PV05FUiAxCi0gcHJlcGVuZCAjZGVmaW5lIF9KVl9JTlRFUlJVUFRFRCAy Ci0gcHJlcGVuZCBfSnZfSk5JRW52ICogX0p2X0dldEN1cnJlbnRKTklFbnYgKCk7Ci1AQCAtMTcs NiArMTgsOSBAQAotIHByZXBlbmQgamludCBfSnZfRGV0YWNoQ3VycmVudFRocmVhZCAoKTsKLSBw cmVwZW5kIHN0cnVjdCBfSnZfVGhyZWFkX3Q7Ci0gcHJlcGVuZCBfSnZfVGhyZWFkX3QqIF9Kdl9U aHJlYWRHZXREYXRhIChqYXZhOjpsYW5nOjpUaHJlYWQqIHRocmVhZCk7Ci0rcHJlcGVuZCBfSnZf RnJhbWUgKl9Kdl9UaHJlYWRTdGFja1BlZWsgKGphdmE6Omxhbmc6OlRocmVhZCAqdGhyZWFkKTsK LStwcmVwZW5kIHZvaWQgX0p2X1RocmVhZFN0YWNrUHVzaCAoamF2YTo6bGFuZzo6VGhyZWFkICp0 aHJlYWQsIF9Kdl9GcmFtZSAqZnJhbWUpOwotK3ByZXBlbmQgdm9pZCBfSnZfVGhyZWFkU3RhY2tQ b3AgKGphdmE6Omxhbmc6OlRocmVhZCAqdGhyZWFkKTsKLSBmcmllbmQgX0p2X0pOSUVudiAqIDo6 X0p2X0dldEN1cnJlbnRKTklFbnYgKCk7Ci0gZnJpZW5kIHZvaWQgOjpfSnZfU2V0Q3VycmVudEpO SUVudiAoX0p2X0pOSUVudiAqZW52KTsKLSBmcmllbmQgdm9pZCA6Ol9Kdl9UaHJlYWRSdW4gKGph dmE6Omxhbmc6OlRocmVhZCogdGhyZWFkKTsKLUBAIC0yNCw2ICsyOCw5IEBACi0gZnJpZW5kIGph dmE6Omxhbmc6OlRocmVhZCogOjpfSnZfQXR0YWNoQ3VycmVudFRocmVhZCAoanN0cmluZyBuYW1l LCBqYXZhOjpsYW5nOjpUaHJlYWRHcm91cCogZ3JvdXApOwotIGZyaWVuZCBqYXZhOjpsYW5nOjpU aHJlYWQqIDo6X0p2X0F0dGFjaEN1cnJlbnRUaHJlYWRBc0RhZW1vbiAoanN0cmluZyBuYW1lLCBq YXZhOjpsYW5nOjpUaHJlYWRHcm91cCogZ3JvdXApOwotIGZyaWVuZCBqaW50ICg6Ol9Kdl9EZXRh Y2hDdXJyZW50VGhyZWFkKSAoKTsKLStmcmllbmQgX0p2X0ZyYW1lICo6Ol9Kdl9UaHJlYWRTdGFj a1BlZWsgKGphdmE6Omxhbmc6OlRocmVhZCAqdGhyZWFkKTsKLStmcmllbmQgdm9pZCA6Ol9Kdl9U aHJlYWRTdGFja1B1c2ggKGphdmE6Omxhbmc6OlRocmVhZCAqdGhyZWFkLCBfSnZfRnJhbWUgKmZy YW1lKTsKLStmcmllbmQgdm9pZCA6Ol9Kdl9UaHJlYWRTdGFja1BvcCAoamF2YTo6bGFuZzo6VGhy ZWFkICp0aHJlYWQpOwotIAotIGNsYXNzIGphdmEvbGFuZy9TdHJpbmcKLSBwcmVwZW5kIGpjaGFy KiBfSnZfR2V0U3RyaW5nQ2hhcnMgKGpzdHJpbmcgc3RyKTsKLS0tLSBsaWJqYXZhL2dudS9jbGFz c3BhdGgvamR3cC9uYXRWTUZyYW1lLmNjCShyZXZpc2lvbiAxMjg2MDMpCi0rKysgbGliamF2YS9n bnUvY2xhc3NwYXRoL2pkd3AvbmF0Vk1GcmFtZS5jYwkod29ya2luZyBjb3B5KQotQEAgLTE4MSw3 ICsxODEsNyBAQAotIGdldEZyYW1lRGVwdGggKF9Kdl9GcmFtZSAqZnJhbWUpCi0gewotICAgamlu dCBkZXB0aCA9IDA7Ci0tICBfSnZfRnJhbWUgKnRvcF9mcmFtZSA9IChfSnZfRnJhbWUgKikgZnJh bWUtPnRocmVhZC0+ZnJhbWU7Ci0rICBfSnZfRnJhbWUgKnRvcF9mcmFtZSA9IF9Kdl9UaHJlYWRT dGFja1BlZWsgKGZyYW1lLT50aHJlYWQpOwotICAgamludCBudW1fZnJhbWVzID0gVk1WaXJ0dWFs TWFjaGluZTo6Z2V0RnJhbWVDb3VudCAoZnJhbWUtPnRocmVhZCk7Ci0gICAKLSAgIHdoaWxlIChm cmFtZSAhPSB0b3BfZnJhbWUpCi0tLS0gbGliamF2YS9nbnUvY2xhc3NwYXRoL2pkd3AvbmF0Vk1W aXJ0dWFsTWFjaGluZS5jYwkocmV2aXNpb24gMTI4NjAzKQotKysrIGxpYmphdmEvZ251L2NsYXNz cGF0aC9qZHdwL25hdFZNVmlydHVhbE1hY2hpbmUuY2MJKHdvcmtpbmcgY29weSkKLUBAIC01NTMs NyArNTUzLDcgQEAKLSAgICAgIAotICAgZnJhbWVfbGlzdCA9IG5ldyA6OmphdmE6OnV0aWw6OkFy cmF5TGlzdCAobnVtX2ZyYW1lcyk7Ci0gICAKLS0gIF9Kdl9GcmFtZSAqdm1fZnJhbWUgPSByZWlu dGVycHJldF9jYXN0PF9Kdl9GcmFtZSAqPiAodGhyZWFkLT5mcmFtZSk7Ci0rICBfSnZfRnJhbWUg KnZtX2ZyYW1lID0gX0p2X1RocmVhZFN0YWNrUGVlayAodGhyZWFkKTsKLSAgIAotICAgLy8gVGFr ZSBzdGFydCBmcmFtZXMgb2ZmIHRoZSB0b3Agb2YgdGhlIHN0YWNrCi0gICB3aGlsZSAodm1fZnJh bWUgIT0gTlVMTCAmJiBzdGFydCA+IDApCi1AQCAtNTg0LDcgKzU4NCw3IEBACi0gewotICAgdXNp bmcgbmFtZXNwYWNlIGdudTo6Y2xhc3NwYXRoOjpqZHdwOjpleGNlcHRpb247Ci0gICAKLS0gIF9K dl9GcmFtZSAqdm1fZnJhbWUgPSAoX0p2X0ZyYW1lICopIHRocmVhZC0+ZnJhbWU7Ci0rICBfSnZf RnJhbWUgKnZtX2ZyYW1lID0gX0p2X1RocmVhZFN0YWNrUGVlayAodGhyZWFkKTsKLSAgIGppbnQg ZGVwdGggPSAwOwotICAgX0p2X0ZyYW1lICpmcmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8X0p2X0Zy YW1lICo+IChmcmFtZUlEKTsgCi0gICAKLS0tLSBsaWJqYXZhL2phdmEvbGFuZy9UaHJlYWQuamF2 YQkocmV2aXNpb24gMTI4NjAzKQotKysrIGxpYmphdmEvamF2YS9sYW5nL1RocmVhZC5qYXZhCSh3 b3JraW5nIGNvcHkpCi1AQCAtMTg2LDkgKzE4Niw2IEBACi0gICAvLyBUaGlzIGRlc2NyaWJlcyB0 aGUgdG9wLW1vc3QgaW50ZXJwcmV0ZXIgZnJhbWUgZm9yIHRoaXMgdGhyZWFkLgotICAgUmF3RGF0 YSBpbnRlcnBfZnJhbWU7Ci0gICAKLS0gIC8vIFRoaXMgZGVzY3JpYmVzIHRoZSB0b3AgbW9zdCBm cmFtZSBpbiB0aGUgY29tcG9zaXRlIChpbnRlcnAgKyBKTkkpIHN0YWNrCi0tICBSYXdEYXRhIGZy YW1lOwotLQotICAgLy8gQ3VycmVudCBzdGF0ZS4KLSAgIHZvbGF0aWxlIGludCBzdGF0ZTsKLSAK LS0tLSBsaWJqYXZhL2phdmEvbGFuZy9uYXRUaHJlYWQuY2MJKHJldmlzaW9uIDEyODYwMykKLSsr KyBsaWJqYXZhL2phdmEvbGFuZy9uYXRUaHJlYWQuY2MJKHdvcmtpbmcgY29weSkKLUBAIC0xNSw2 ICsxNSw3IEBACi0gI2luY2x1ZGUgPGdjai9jbmkuaD4KLSAjaW5jbHVkZSA8anZtLmg+Ci0gI2lu Y2x1ZGUgPGphdmEtdGhyZWFkcy5oPgotKyNpbmNsdWRlIDxqYXZhLWludGVycC5oPgotIAotICNp bmNsdWRlIDxnbnUvZ2NqL1Jhd0RhdGFNYW5hZ2VkLmg+Ci0gI2luY2x1ZGUgPGphdmEvbGFuZy9U aHJlYWQuaD4KLUBAIC01MjUsMyArNTI2LDI1IEBACi0gCi0gICByZXR1cm4gMDsKLSB9Ci0rCi0r X0p2X0ZyYW1lICoKLStfSnZfVGhyZWFkU3RhY2tQZWVrIChqYXZhOjpsYW5nOjpUaHJlYWQgKnRo cmVhZCkKLSt7Ci0rICBzdHJ1Y3QgbmF0VGhyZWFkICpudCA9IChuYXRUaHJlYWQgKikgdGhyZWFk LT5kYXRhOwotKyAgcmV0dXJuIG50LT5mcmFtZTsKLSt9Ci0rCi0rdm9pZAotK19Kdl9UaHJlYWRT dGFja1B1c2ggKGphdmE6Omxhbmc6OlRocmVhZCAqdGhyZWFkLCBfSnZfRnJhbWUgKmZyYW1lKQot K3sKLSsgIHN0cnVjdCBuYXRUaHJlYWQgKm50ID0gKG5hdFRocmVhZCAqKSB0aHJlYWQtPmRhdGE7 Ci0rICBudC0+ZnJhbWUgPSBmcmFtZTsKLSt9Ci0rCi0rdm9pZAotK19Kdl9UaHJlYWRTdGFja1Bv cCAoamF2YTo6bGFuZzo6VGhyZWFkICp0aHJlYWQpCi0rewotKyAgc3RydWN0IG5hdFRocmVhZCAq bnQgPSAobmF0VGhyZWFkICopIHRocmVhZC0+ZGF0YTsKLSsgIF9Kdl9GcmFtZSAqbmV4dCA9IG50 LT5mcmFtZS0+bmV4dDsKLSsgIG50LT5mcmFtZSA9IG5leHQ7Ci0rfQoKZGlmZiAtLWdpdCBhL2dj YzQxLWxpYmphdmEtdmlzaWJpbGl0eS5wYXRjaCBiL2djYzQxLWxpYmphdmEtdmlzaWJpbGl0eS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYzZWNjMy4uMDAwMDAwMAotLS0g YS9nY2M0MS1saWJqYXZhLXZpc2liaWxpdHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUg KzAsMCBAQAotMjAwNy0wMy0yOSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+Ci0KLQkq IGp2Z2VubWFpbi5jIChtYWluKTogQ2hhbmdlIG1haW4gdG8gdXNlIGNsYXNzJCwgbm90IGNsYXNz JCQuCi0JKGRvX21hbmdsZV9jbGFzc25hbWUpOiBMaWtld2lzZS4KLQkqIGNsYXNzLmMgKGhpZGUp OiBOZXcgZnVuY3Rpb24uCi0JKGFkZF9maWVsZCk6IEhpZGUgZXZlcnl0aGluZyB0aGF0IHNob3Vs ZG4ndCBiZSB2aXNpYmxlIG91dHNpZGUgYQotCURTTy4KLQkoYnVpbGRfc3RhdGljX2NsYXNzX3Jl Zik6IExpa2V3aXNlLgotCShidWlsZF9jbGFzc2RvbGxhcl9maWVsZCk6IExpa2V3aXNlLgotCSht YWtlX2NsYXNzX2RhdGEpOiBMaWtld2lzZS4KLQkobGF5b3V0X2NsYXNzX21ldGhvZCk6IExpa2V3 aXNlLgotCSogZXhwci5jIChzcGVjaWFsX21ldGhvZF9wKTogTmV3IGZ1bmN0aW9uLgotCi0tLS0g Z2NjL2phdmEvY2xhc3MuYwkocmV2aXNpb24gMTIyNzQ2KQotKysrIGdjYy9qYXZhL2NsYXNzLmMJ KHdvcmtpbmcgY29weSkKLUBAIC02ODksNiArNjg4LDEzIEBACi0gICByZXR1cm4gZm50eXBlOwot IH0KLSAKLStzdGF0aWMgdm9pZAotK2hpZGUgKHRyZWUgZGVjbCkKLSt7Ci0rICBERUNMX1ZJU0lC SUxJVFkgKGRlY2wpID0gVklTSUJJTElUWV9ISURERU47Ci0rICBERUNMX1ZJU0lCSUxJVFlfU1BF Q0lGSUVEIChkZWNsKSA9IDE7Ci0rfQotKwotIHRyZWUKLSBhZGRfbWV0aG9kXzEgKHRyZWUgdGhp c19jbGFzcywgaW50IGFjY2Vzc19mbGFncywgdHJlZSBuYW1lLCB0cmVlIGZ1bmN0aW9uX3R5cGUp Ci0gewotQEAgLTc5OSw2ICs4MDUsMTAgQEAKLSAgICAgICAvKiBBbHdheXMgbWFrZSBmaWVsZCBl eHRlcm5hbGx5IHZpc2libGUuICBUaGlzIGlzIHJlcXVpcmVkIHNvCi0gCSB0aGF0IG5hdGl2ZSBt ZXRob2RzIGNhbiBhbHdheXMgYWNjZXNzIHRoZSBmaWVsZC4gICovCi0gICAgICAgVFJFRV9QVUJM SUMgKGZpZWxkKSA9IDE7Ci0rICAgICAgLyogSGlkZSBldmVyeXRoaW5nIHRoYXQgc2hvdWxkbid0 IGJlIHZpc2libGUgb3V0c2lkZSBhIERTTy4gICovCi0rICAgICAgaWYgKGZsYWdfaW5kaXJlY3Rf Y2xhc3NlcwotKwkgIHx8IChGSUVMRF9QUklWQVRFIChmaWVsZCkpKQotKwloaWRlIChmaWVsZCk7 Ci0gICAgICAgLyogQ29uc2lkZXJlZCBleHRlcm5hbCB1bmxlc3Mgd2UgYXJlIGNvbXBpbGluZyBp dCBpbnRvIHRoaXMKLSAJIG9iamVjdCBmaWxlLiAgKi8KLSAgICAgICBERUNMX0VYVEVSTkFMIChm aWVsZCkgPSAoaXNfY29tcGlsZWRfY2xhc3MgKGNsYXNzKSAhPSAyKTsKLUBAIC05NTYsNyArOTY2 LDExIEBACi0gICAgICAgZGVjbCA9IGJ1aWxkX2RlY2wgKFZBUl9ERUNMLCBkZWNsX25hbWUsIGNs YXNzX3R5cGVfbm9kZSk7Ci0gICAgICAgVFJFRV9TVEFUSUMgKGRlY2wpID0gMTsKLSAgICAgICBp ZiAoISBmbGFnX2luZGlyZWN0X2NsYXNzZXMpCi0tCVRSRUVfUFVCTElDIChkZWNsKSA9IDE7Ci0r CXsKLSsJICBUUkVFX1BVQkxJQyAoZGVjbCkgPSAxOwotKwkgIGlmIChDTEFTU19QUklWQVRFIChU WVBFX05BTUUgKHR5cGUpKSkKLSsJICAgIGhpZGUgKGRlY2wpOwotKwl9Ci0gICAgICAgREVDTF9J R05PUkVEX1AgKGRlY2wpID0gMTsKLSAgICAgICBERUNMX0FSVElGSUNJQUwgKGRlY2wpID0gMTsK LSAgICAgICBpZiAoaXNfY29tcGlsZWRfY2xhc3MgKHR5cGUpID09IDEpCi1AQCAtOTk1LDYgKzEw MDksNyBAQAotICAgICAgIFRSRUVfQ09OU1RBTlQgKGRlY2wpID0gMTsKLSAgICAgICBUUkVFX1JF QURPTkxZIChkZWNsKSA9IDE7Ci0gICAgICAgVFJFRV9QVUJMSUMgKGRlY2wpID0gMTsKLSsgICAg ICBoaWRlIChkZWNsKTsKLSAgICAgICBERUNMX0lHTk9SRURfUCAoZGVjbCkgPSAxOwotICAgICAg IERFQ0xfQVJUSUZJQ0lBTCAoZGVjbCkgPSAxOwotICAgICAgIE1BWUJFX0NSRUFURV9WQVJfTEFO R19ERUNMX1NQRUNJRklDIChkZWNsKTsKLUBAIC0xNjQwLDYgKzE2NTUsMTAgQEAKLSAKLSAgICAg ICBUUkVFX1BVQkxJQyAoZHRhYmxlX2RlY2wpID0gMTsKLSAgICAgICBERUNMX0lOSVRJQUwgKGR0 YWJsZV9kZWNsKSA9IGR0YWJsZTsKLSsgICAgICAvKiBUaGUgb25seSBkaXNwYXRjaCB0YWJsZSBl eHBvcnRlZCBmcm9tIGEgRFNPIGlzIHRoZSBkaXNwYXRjaAotKwkgdGFibGUgZm9yIGphdmEubGFu Zy5DbGFzcy4gICovCi0rICAgICAgaWYgKERFQ0xfTkFNRSAodHlwZV9kZWNsKSAhPSBpZF9jbGFz cykKLSsJaGlkZSAoZHRhYmxlX2RlY2wpOwotICAgICAgIGlmICghIGZsYWdfaW5kaXJlY3RfY2xh c3NlcykKLSAJcmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uIChkdGFibGVfZGVjbCwgMSwgMCk7Ci0g ICAgICAgLyogTWF5YmUgd2UncmUgY29tcGlsaW5nIENsYXNzIGFzIHRoZSBmaXJzdCBjbGFzcy4g IElmIHNvLCBzZXQKLUBAIC0yNTA5LDYgKzI1MjgsMTIgQEAKLSAKLSAgIFRSRUVfUFVCTElDICht ZXRob2RfZGVjbCkgPSAxOwotIAotKyAgaWYgKGZsYWdfaW5kaXJlY3RfY2xhc3NlcwotKyAgICAg IHx8IChNRVRIT0RfUFJJVkFURSAobWV0aG9kX2RlY2wpICYmIE1FVEhPRF9TVEFUSUMgKG1ldGhv ZF9kZWNsKQotKwkgICYmICEgTUVUSE9EX05BVElWRSAobWV0aG9kX2RlY2wpCi0rCSAgJiYgISBz cGVjaWFsX21ldGhvZF9wIChtZXRob2RfZGVjbCkpKQotKyAgICBoaWRlIChtZXRob2RfZGVjbCk7 Ci0rCi0gICAvKiBDb25zaWRlcmVkIGV4dGVybmFsIHVubGVzcyBpdCBpcyBiZWluZyBjb21waWxl ZCBpbnRvIHRoaXMgb2JqZWN0Ci0gICAgICBmaWxlLCBvciBpdCB3YXMgYWxyZWFkeSBmbGFnZ2Vk IGFzIGV4dGVybmFsLiAgKi8KLSAgIGlmICghREVDTF9FWFRFUk5BTCAobWV0aG9kX2RlY2wpKQot LS0tIGdjYy9qYXZhL2p2Z2VubWFpbi5jCShyZXZpc2lvbiAxMjI3NDYpCi0rKysgZ2NjL2phdmEv anZnZW5tYWluLmMJKHdvcmtpbmcgY29weSkKLUBAIC0xNDMsOCArMTQzLDggQEAKLSAgICAgZnBy aW50ZiAoc3RyZWFtLCAiICAgSnZSdW5NYWluTmFtZSAoXCIlc1wiLCBhcmdjLCBhcmd2KTtcbiIs IGNsYXNzbmFtZSk7Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBmcHJpbnRmIChzdHJlYW0sICIg ICBleHRlcm4gdm9pZCAqJXM7XG4iLCBtYW5nbGVkX2NsYXNzbmFtZSk7Ci0tICAgICAgZnByaW50 ZiAoc3RyZWFtLCAiICAgSnZSdW5NYWluICglcywgYXJnYywgYXJndik7XG4iLCBtYW5nbGVkX2Ns YXNzbmFtZSk7Ci0rICAgICAgZnByaW50ZiAoc3RyZWFtLCAiICAgZXh0ZXJuIGNoYXIgJXM7XG4i LCBtYW5nbGVkX2NsYXNzbmFtZSk7Ci0rICAgICAgZnByaW50ZiAoc3RyZWFtLCAiICAgSnZSdW5N YWluICgmJXMsIGFyZ2MsIGFyZ3YpO1xuIiwgbWFuZ2xlZF9jbGFzc25hbWUpOwotICAgICB9Ci0g ICBmcHJpbnRmIChzdHJlYW0sICJ9XG4iKTsKLSAgIGlmIChzdHJlYW0gIT0gc3Rkb3V0ICYmIGZj bG9zZSAoc3RyZWFtKSAhPSAwKQotQEAgLTE3Niw3ICsxNzYsNyBAQAotIAljb3VudCsrOwotICAg ICB9Ci0gICBhcHBlbmRfZ3BwX21hbmdsZWRfbmFtZSAoJnB0ciBbLWNvdW50XSwgY291bnQpOwot LSAgb2JzdGFja19ncm93IChtYW5nbGVfb2JzdGFjaywgIjdjbGFzcyQkRSIsIHN0cmxlbiAoIjdj bGFzcyQkRSIpKTsKLSsgIG9ic3RhY2tfZ3JvdyAobWFuZ2xlX29ic3RhY2ssICI2Y2xhc3MkRSIs IHN0cmxlbiAoIjZjbGFzcyRFIikpOwotICAgb2JzdGFja18xZ3JvdyAobWFuZ2xlX29ic3RhY2ss ICdcMCcpOwotICAgcmV0dXJuIG9ic3RhY2tfZmluaXNoIChtYW5nbGVfb2JzdGFjayk7Ci0gfQot LS0tIGdjYy9qYXZhL2V4cHIuYwkocmV2aXNpb24gMTIyNzQ2KQotKysrIGdjYy9qYXZhL2V4cHIu Ywkod29ya2luZyBjb3B5KQotQEAgLTIxMjEsNiArMjEyMSwyNSBAQAotIAotICAgIHtOVUxMLCBO VUxMLCBOVUxMLCBOVUxMLCAwLCBOVUxMfX07Ci0gCi0rLyogVHJ1ZSBpZiB0aGlzIG1ldGhvZCBp cyBzcGVjaWFsLCBpLmUuIGl0J3MgYSBwcml2YXRlIG1ldGhvZCB0aGF0Ci0rICAgc2hvdWxkIGJl IGV4cG9ydGVkIGZybyBhIERTTy4gICovCi0rCi0rYm9vbAotK3NwZWNpYWxfbWV0aG9kX3AgKHRy ZWUgY2FuZGlkYXRlX21ldGhvZCkKLSt7Ci0rICB0cmVlIGNvbnRleHQgPSBERUNMX05BTUUgKFRZ UEVfTkFNRSAoREVDTF9DT05URVhUIChjYW5kaWRhdGVfbWV0aG9kKSkpOwotKyAgdHJlZSBtZXRo b2QgPSBERUNMX05BTUUgKGNhbmRpZGF0ZV9tZXRob2QpOwotKyAgcmV3cml0ZV9ydWxlICpwOwot KwotKyAgZm9yIChwID0gcnVsZXM7IHAtPmNsYXNzbmFtZTsgcCsrKQotKyAgICB7Ci0rICAgICAg aWYgKGdldF9pZGVudGlmaWVyIChwLT5jbGFzc25hbWUpID09IGNvbnRleHQKLSsJICAmJiBnZXRf aWRlbnRpZmllciAocC0+bWV0aG9kKSA9PSBtZXRob2QpCi0rCXJldHVybiB0cnVlOwotKyAgICB9 Ci0rICByZXR1cm4gZmFsc2U7Ci0rfQotKwotIC8qIFNjYW4gdGhlIHJ1bGVzIGxpc3QgZm9yIHJl cGxhY2VtZW50cyBmb3IgKk1FVEhPRF9QIGFuZCByZXBsYWNlIHRoZQotICAgIGFyZ3MgYWNjb3Jk aW5nbHkuICBJZiB0aGUgcmV3cml0ZSByZXN1bHRzIGluIGFuIGFjY2VzcyB0byBhIHByaXZhdGUK LSAgICBtZXRob2QsIHVwZGF0ZSBTUEVDSUFMLiovCi0tLS0gZ2NjL2phdmEvamF2YS10cmVlLmgJ KHJldmlzaW9uIDEyMjc0NikKLSsrKyBnY2MvamF2YS9qYXZhLXRyZWUuaAkod29ya2luZyBjb3B5 KQotQEAgLTExNzEsNiArMTE3MSw3IEBACi0gZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV9idWlsdGlu cyAodm9pZCk7Ci0gCi0gZXh0ZXJuIHRyZWUgbG9va3VwX25hbWUgKHRyZWUpOwotK2V4dGVybiBi b29sIHNwZWNpYWxfbWV0aG9kX3AgKHRyZWUpOwotIGV4dGVybiB2b2lkIG1heWJlX3Jld3JpdGVf aW52b2NhdGlvbiAodHJlZSAqLCB0cmVlICosIHRyZWUgKiwgdHJlZSAqKTsKLSBleHRlcm4gdHJl ZSBidWlsZF9rbm93bl9tZXRob2RfcmVmICh0cmVlLCB0cmVlLCB0cmVlLCB0cmVlLCB0cmVlLCB0 cmVlKTsKLSBleHRlcm4gdHJlZSBidWlsZF9jbGFzc19pbml0ICh0cmVlLCB0cmVlKTsKCmRpZmYg LS1naXQgYS9nY2M0MS1vbXAtb3V0ZXItY3R4LnBhdGNoIGIvZ2NjNDEtb21wLW91dGVyLWN0eC5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YwYjFmNi4uMDAwMDAwMAotLS0g YS9nY2M0MS1vbXAtb3V0ZXItY3R4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAg QEAKLTIwMDctMTItMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JKiBv bXAtbG93LmMgKGxvb2t1cF9kZWNsX2luX291dGVyX2N0eCk6IEFsbG93IGNhbGxpbmcgdGhpcwot CXdpdGggIWN0eC0+aXNfbmVzdGVkLgotCShtYXliZV9sb29rdXBfZGVjbF9pbl9vdXRlcl9jdHgp OiBMb29rIHVwIGluIG91dGVyIGNvbnRleHRzCi0JZXZlbiBpZiAhY3R4LT5pc19uZXN0ZWQuCi0J KGxvd2VyX2NvcHlwcml2YXRlX2NsYXVzZXMsIGxvd2VyX3NlbmRfY2xhdXNlcywKLQlsb3dlcl9z ZW5kX3NoYXJlZF92YXJzKTogQ2FsbCBsb29rdXBfZGVjbF9pbl9vdXRlcl9jdHgKLQl1bmNvbmRp dGlvbmFsbHkuCi0KLQkqIHRlc3RzdWl0ZS9saWJnb21wLmMvcHJpdmF0ZS0xLmM6IE5ldyB0ZXN0 LgotCi0tLS0gZ2NjL29tcC1sb3cuYwkocmV2aXNpb24gMTMwNTg5KQotKysrIGdjYy9vbXAtbG93 LmMJKHJldmlzaW9uIDEzMDU5MCkKLUBAIC0xNTE4LDEyICsxNTE4LDEwIEBAIGxvb2t1cF9kZWNs X2luX291dGVyX2N0eCAodHJlZSBkZWNsLCBvbXAKLSAgIHRyZWUgdDsKLSAgIG9tcF9jb250ZXh0 ICp1cDsKLSAKLS0gIGdjY19hc3NlcnQgKGN0eC0+aXNfbmVzdGVkKTsKLS0KLSAgIGZvciAodXAg PSBjdHgtPm91dGVyLCB0ID0gTlVMTDsgdXAgJiYgdCA9PSBOVUxMOyB1cCA9IHVwLT5vdXRlcikK LSAgICAgdCA9IG1heWJlX2xvb2t1cF9kZWNsIChkZWNsLCB1cCk7Ci0gCi0tICBnY2NfYXNzZXJ0 ICh0IHx8IGlzX2dsb2JhbF92YXIgKGRlY2wpKTsKLSsgIGdjY19hc3NlcnQgKCFjdHgtPmlzX25l c3RlZCB8fCB0IHx8IGlzX2dsb2JhbF92YXIgKGRlY2wpKTsKLSAKLSAgIHJldHVybiB0ID8gdCA6 IGRlY2w7Ci0gfQotQEAgLTE1MzgsOSArMTUzNiw4IEBAIG1heWJlX2xvb2t1cF9kZWNsX2luX291 dGVyX2N0eCAodHJlZSBkZWMKLSAgIHRyZWUgdCA9IE5VTEw7Ci0gICBvbXBfY29udGV4dCAqdXA7 Ci0gCi0tICBpZiAoY3R4LT5pc19uZXN0ZWQpCi0tICAgIGZvciAodXAgPSBjdHgtPm91dGVyLCB0 ID0gTlVMTDsgdXAgJiYgdCA9PSBOVUxMOyB1cCA9IHVwLT5vdXRlcikKLS0gICAgICB0ID0gbWF5 YmVfbG9va3VwX2RlY2wgKGRlY2wsIHVwKTsKLSsgIGZvciAodXAgPSBjdHgtPm91dGVyLCB0ID0g TlVMTDsgdXAgJiYgdCA9PSBOVUxMOyB1cCA9IHVwLT5vdXRlcikKLSsgICAgdCA9IG1heWJlX2xv b2t1cF9kZWNsIChkZWNsLCB1cCk7Ci0gCi0gICByZXR1cm4gdCA/IHQgOiBkZWNsOwotIH0KLUBA IC0yMDEyLDcgKzIwMDksNyBAQCBsb3dlcl9jb3B5cHJpdmF0ZV9jbGF1c2VzICh0cmVlIGNsYXVz ZXMsCi0gICAgICAgYnlfcmVmID0gdXNlX3BvaW50ZXJfZm9yX2ZpZWxkICh2YXIsIGZhbHNlKTsK LSAKLSAgICAgICByZWYgPSBidWlsZF9zZW5kZXJfcmVmICh2YXIsIGN0eCk7Ci0tICAgICAgeCA9 IChjdHgtPmlzX25lc3RlZCkgPyBsb29rdXBfZGVjbF9pbl9vdXRlcl9jdHggKHZhciwgY3R4KSA6 IHZhcjsKLSsgICAgICB4ID0gbG9va3VwX2RlY2xfaW5fb3V0ZXJfY3R4ICh2YXIsIGN0eCk7Ci0g ICAgICAgeCA9IGJ5X3JlZiA/IGJ1aWxkX2ZvbGRfYWRkcl9leHByICh4KSA6IHg7Ci0gICAgICAg eCA9IGJ1aWxkX2dpbXBsZV9tb2RpZnlfc3RtdCAocmVmLCB4KTsKLSAgICAgICBnaW1wbGlmeV9h bmRfYWRkICh4LCBzbGlzdCk7Ci1AQCAtMjA1Myw5ICsyMDUwLDggQEAgbG93ZXJfc2VuZF9jbGF1 c2VzICh0cmVlIGNsYXVzZXMsIHRyZWUgKgotIAkgIGNvbnRpbnVlOwotIAl9Ci0gCi0tICAgICAg dmFyID0gdmFsID0gT01QX0NMQVVTRV9ERUNMIChjKTsKLS0gICAgICBpZiAoY3R4LT5pc19uZXN0 ZWQpCi0tCXZhciA9IGxvb2t1cF9kZWNsX2luX291dGVyX2N0eCAodmFsLCBjdHgpOwotKyAgICAg IHZhbCA9IE9NUF9DTEFVU0VfREVDTCAoYyk7Ci0rICAgICAgdmFyID0gbG9va3VwX2RlY2xfaW5f b3V0ZXJfY3R4ICh2YWwsIGN0eCk7Ci0gCi0gICAgICAgaWYgKE9NUF9DTEFVU0VfQ09ERSAoYykg IT0gT01QX0NMQVVTRV9DT1BZSU4KLSAJICAmJiBpc19nbG9iYWxfdmFyICh2YXIpKQotQEAgLTIx MjcsMTMgKzIxMjMsMTAgQEAgbG93ZXJfc2VuZF9zaGFyZWRfdmFycyAodHJlZSAqaWxpc3QsIHRy ZQotICAgICAgIGlmICghbnZhciB8fCAhREVDTF9IQVNfVkFMVUVfRVhQUl9QIChudmFyKSkKLSAJ Y29udGludWU7Ci0gCi0tICAgICAgdmFyID0gb3ZhcjsKLS0KLSAgICAgICAvKiBJZiBDVFggaXMg YSBuZXN0ZWQgcGFyYWxsZWwgZGlyZWN0aXZlLiAgRmluZCB0aGUgaW1tZWRpYXRlbHkKLSAJIGVu Y2xvc2luZyBwYXJhbGxlbCBvciB3b3Jrc2hhcmUgY29uc3RydWN0IHRoYXQgY29udGFpbnMgYQot IAkgbWFwcGluZyBmb3IgT1ZBUi4gICovCi0tICAgICAgaWYgKGN0eC0+aXNfbmVzdGVkKQotLQl2 YXIgPSBsb29rdXBfZGVjbF9pbl9vdXRlcl9jdHggKG92YXIsIGN0eCk7Ci0rICAgICAgdmFyID0g bG9va3VwX2RlY2xfaW5fb3V0ZXJfY3R4IChvdmFyLCBjdHgpOwotIAotICAgICAgIGlmICh1c2Vf cG9pbnRlcl9mb3JfZmllbGQgKG92YXIsIHRydWUpKQotIAl7Ci0tLS0gbGliZ29tcC90ZXN0c3Vp dGUvbGliZ29tcC5jL3ByaXZhdGUtMS5jCShyZXZpc2lvbiAwKQotKysrIGxpYmdvbXAvdGVzdHN1 aXRlL2xpYmdvbXAuYy9wcml2YXRlLTEuYwkocmV2aXNpb24gMTMwNTkwKQotQEAgLTAsMCArMSw1 NCBAQAotK2V4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKLSsKLStpbnQgYSA9IDE4OwotKwotK3Zv aWQKLStmMSAoaW50IGksIGludCBqLCBpbnQgaykKLSt7Ci0rICBpbnQgbCA9IDYsIG0gPSA3LCBu ID0gODsKLSsjcHJhZ21hIG9tcCBwYXJhbGxlbCBwcml2YXRlKGosIG0pIHNoYXJlZChrLCBuKSBm aXJzdHByaXZhdGUoaSwgbCkgXAotKwkgICAgbnVtX3RocmVhZHMoMSkKLSsgIHsKLSsgICAgaiA9 IDY7Ci0rICAgIG0gPSA1OwotKyAgICBpZiAoKythICE9IDE5IHx8ICsraSAhPSA5IHx8IGogIT0g NiB8fCArK2wgIT0gNyB8fCBtICE9IDUgfHwgKytuICE9IDkpCi0rICAgICAgI3ByYWdtYSBvbXAg YXRvbWljCi0rCWsrKzsKLSsgIH0KLSsgIGlmIChhICE9IDE5IHx8IGkgIT0gOCB8fCBqICE9IDI2 IHx8IGsgIT0gMCB8fCBsICE9IDYgfHwgbSAhPSA3IHx8IG4gIT0gOSkKLSsgICAgYWJvcnQgKCk7 Ci0rfQotKwotK2ludCB2MSA9IDEsIHYyID0gMiwgdjUgPSA1OwotK2ludCBlcnI7Ci0rCi0rdm9p ZAotK2YyICh2b2lkKQotK3sKLSsgIGludCB2MyA9IDM7Ci0rI3ByYWdtYSBvbXAgc2VjdGlvbnMg cHJpdmF0ZSAodjEpIGZpcnN0cHJpdmF0ZSAodjIpCi0rICB7Ci0rICAjcHJhZ21hIG9tcCBzZWN0 aW9uCi0rICAgIHsKLSsgICAgICBpbnQgdjQgPSA0OwotKyAgICAgIHYxID0gNzsKLSsgICAgICAj cHJhZ21hIG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcygxKSBmaXJzdHByaXZhdGUodjEsIHYyLCB2 MywgdjQpCi0rCXsKLSsJICBpZiAoKyt2MSAhPSA4IHx8ICsrdjIgIT0gMyB8fCArK3YzICE9IDQg fHwgKyt2NCAhPSA1IHx8ICsrdjUgIT0gNikKLSsJICAgIGVyciA9IDE7Ci0rCX0KLSsgICAgICBp ZiAodjEgIT0gNyB8fCB2MiAhPSAyIHx8IHYzICE9IDMgfHwgdjQgIT0gNCB8fCB2NSAhPSA2KQot KwlhYm9ydCAoKTsKLSsgICAgICBpZiAoZXJyKQotKwlhYm9ydCAoKTsKLSsgICAgfQotKyAgfQot K30KLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGYxICg4LCAyNiwgMCk7Ci0rICBmMiAo KTsKLSsgIHJldHVybiAwOwotK30KCmRpZmYgLS1naXQgYS9nY2M0MS1wcGMzMi1yZXRhZGRyLnBh dGNoIGIvZ2NjNDEtcHBjMzItcmV0YWRkci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZTlhZTFiYy4uMDAwMDAwMAotLS0gYS9nY2M0MS1wcGMzMi1yZXRhZGRyLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotMjAwNS0xMS0yOCAgSmFrdWIgSmVsaW5layAg PGpha3ViQHJlZGhhdC5jb20+Ci0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9y ZXR1cm5fYWRkcik6IElmIENPVU5UID09IDAsCi0JcmVhZCB3b3JkIFJFVFVSTl9BRERSRVNTX09G RlNFVCBieXRlcyBhYm92ZSBhcmdfcG9pbnRlcl9ydHgKLQlpbnN0ZWFkIG9mIGRvaW5nIGFuIGV4 dHJhbiBpbmRpcmVjdGlvbiBmcm9tIGZyYW1lX3BvaW50ZXJfcnR4LgotCi0JKiBnY2MuZGcvMjAw NTExMjgtMS5jOiBOZXcgdGVzdC4KLQotLS0tIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jLmpq CTIwMDUtMTEtMjYgMTQ6Mzg6MDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2NjL2NvbmZpZy9yczYw MDAvcnM2MDAwLmMJMjAwNS0xMS0yOCAyMDozMjoxOC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMzE2 NiwxNyArMTMxNjYsMjIgQEAgcnM2MDAwX3JldHVybl9hZGRyIChpbnQgY291bnQsIHJ0eCBmcmFt ZQotICAgICAgZG9uJ3QgdHJ5IHRvIGJlIHRvbyBjbGV2ZXIgaGVyZS4gICovCi0gICBpZiAoY291 bnQgIT0gMCB8fCAoREVGQVVMVF9BQkkgIT0gQUJJX0FJWCAmJiBmbGFnX3BpYykpCi0gICAgIHsK LSsgICAgICBydHggeDsKLSAgICAgICBjZnVuLT5tYWNoaW5lLT5yYV9uZWVkc19mdWxsX2ZyYW1l ID0gMTsKLSAKLS0gICAgICByZXR1cm4KLS0JZ2VuX3J0eF9NRU0KLS0JICAoUG1vZGUsCi0tCSAg IG1lbW9yeV9hZGRyZXNzCi0tCSAgIChQbW9kZSwKLS0JICAgIHBsdXNfY29uc3RhbnQgKGNvcHlf dG9fcmVnCi0tCQkJICAgKGdlbl9ydHhfTUVNIChQbW9kZSwKLS0JCQkJCSBtZW1vcnlfYWRkcmVz cyAoUG1vZGUsIGZyYW1lKSkpLAotLQkJCSAgIFJFVFVSTl9BRERSRVNTX09GRlNFVCkpKTsKLSsg ICAgICBpZiAoY291bnQgPT0gMCkKLSsJewotKwkgIGdjY19hc3NlcnQgKGZyYW1lID09IGZyYW1l X3BvaW50ZXJfcnR4KTsKLSsJICB4ID0gYXJnX3BvaW50ZXJfcnR4OwotKwl9Ci0rICAgICAgZWxz ZQotKwl7Ci0rCSAgeCA9IG1lbW9yeV9hZGRyZXNzIChQbW9kZSwgZnJhbWUpOwotKwkgIHggPSBj b3B5X3RvX3JlZyAoZ2VuX3J0eF9NRU0gKFBtb2RlLCB4KSk7Ci0rCX0KLSsKLSsgICAgICB4ID0g cGx1c19jb25zdGFudCAoeCwgUkVUVVJOX0FERFJFU1NfT0ZGU0VUKTsKLSsgICAgICByZXR1cm4g Z2VuX3J0eF9NRU0gKFBtb2RlLCBtZW1vcnlfYWRkcmVzcyAoUG1vZGUsIHgpKTsKLSAgICAgfQot IAotICAgY2Z1bi0+bWFjaGluZS0+cmFfbmVlZF9sciA9IDE7Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvMjAwNTExMjgtMS5jLmpqCTIwMDUtMTAtMTAgMTE6MjE6NDEuMDk2OTk5MDAwICswMjAw Ci0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvMjAwNTExMjgtMS5jCTIwMDUtMTEtMjggMTI6MzA6 NTcuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDQxIEBACi0rLyogeyBkZy1kbyBydW4gfSAq LwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgZXhp dCAoaW50KTsKLStleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7Ci0rCi0raW50IGI7Ci0rCi0rc3Ry dWN0IEEKLSt7Ci0rICB2b2lkICpwYWRbMTQ3XTsKLSsgIHZvaWQgKnJhLCAqaDsKLSsgIGxvbmcg bzsKLSt9OwotKwotK3ZvaWQKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCi0rZm9vIChzdHJ1 Y3QgQSAqYSwgdm9pZCAqeCkKLSt7Ci0rICBfX2J1aWx0aW5fbWVtc2V0IChhLCAwLCBzaXplb2Yg KGEpKTsKLSsgIGlmICghYikKLSsgICAgZXhpdCAoMCk7Ci0rfQotKwotK3ZvaWQKLStfX2F0dHJp YnV0ZV9fKChub2lubGluZSkpCi0rYmFyICh2b2lkKQotK3sKLSsgIHN0cnVjdCBBIGE7Ci0rCi0r ICBfX2J1aWx0aW5fdW53aW5kX2luaXQgKCk7Ci0rICBmb28gKCZhLCBfX2J1aWx0aW5fcmV0dXJu X2FkZHJlc3MgKDApKTsKLSt9Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBiYXIgKCk7 Ci0rICBhYm9ydCAoKTsKLSsgIHJldHVybiAwOwotK30KCmRpZmYgLS1naXQgYS9nY2M0MS1wcGM2 NC1pYTY0LUdOVS1zdGFjay5wYXRjaCBiL2djYzQxLXBwYzY0LWlhNjQtR05VLXN0YWNrLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTVmMGZlLi4wMDAwMDAwCi0tLSBhL2dj YzQxLXBwYzY0LWlhNjQtR05VLXN0YWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAs MCBAQAotMjAwNy0wOC0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQkq IGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbGZfZW5kX2luZGljYXRlX2V4ZWNfc3Rh Y2spOiBOZXcuCi0JKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoVEFSR0VUX0FTTV9GSUxFX0VO RCk6IFVzZQotCXJzNjAwMF9lbGZfZW5kX2luZGljYXRlX2V4ZWNfc3RhY2suCi0JKiBjb25maWcv aWE2NC9pYTY0LmMgKGlhNjRfbGludXhfZmlsZV9lbmQpOiBuZXcuCi0JKiBjb25maWcvaWE2NC9s aW51eC5oIChUQVJHRVRfQVNNX0ZJTEVfRU5EKTogVXNlIGlhNjRfbGludXhfZmlsZV9lbmQuCi0K LS0tLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuYy5qagkyMDA3LTA2LTI3IDEyOjEwOjE5LjAw MDAwMDAwMCArMDIwMAotKysrIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jCTIwMDctMDgtMjcg MTk6Mjc6MjQuMDAwMDAwMDAwICswMjAwCi1AQCAtNjM4LDYgKzYzOCw3IEBAIHN0YXRpYyB2b2lk IHJzNjAwMF9maWxlX3N0YXJ0ICh2b2lkKTsKLSBzdGF0aWMgdW5zaWduZWQgaW50IHJzNjAwMF9l bGZfc2VjdGlvbl90eXBlX2ZsYWdzICh0cmVlLCBjb25zdCBjaGFyICosIGludCk7Ci0gc3RhdGlj IHZvaWQgcnM2MDAwX2VsZl9hc21fb3V0X2NvbnN0cnVjdG9yIChydHgsIGludCk7Ci0gc3RhdGlj IHZvaWQgcnM2MDAwX2VsZl9hc21fb3V0X2Rlc3RydWN0b3IgKHJ0eCwgaW50KTsKLStzdGF0aWMg dm9pZCByczYwMDBfZWxmX2VuZF9pbmRpY2F0ZV9leGVjX3N0YWNrICh2b2lkKSBBVFRSSUJVVEVf VU5VU0VEOwotIHN0YXRpYyB2b2lkIHJzNjAwMF9lbGZfc2VsZWN0X3NlY3Rpb24gKHRyZWUsIGlu dCwgdW5zaWduZWQgSE9TVF9XSURFX0lOVCk7Ci0gc3RhdGljIHZvaWQgcnM2MDAwX2VsZl91bmlx dWVfc2VjdGlvbiAodHJlZSwgaW50KTsKLSBzdGF0aWMgdm9pZCByczYwMDBfZWxmX3NlbGVjdF9y dHhfc2VjdGlvbiAoZW51bSBtYWNoaW5lX21vZGUsIHJ0eCwKLUBAIC0xODg5Niw2ICsxODg5Nywy MCBAQCByczYwMDBfZWxmX2RlY2xhcmVfZnVuY3Rpb25fbmFtZSAoRklMRSAqCi0gICAgIH0KLSAg IEFTTV9PVVRQVVRfTEFCRUwgKGZpbGUsIG5hbWUpOwotIH0KLSsKLStzdGF0aWMgdm9pZAotK3Jz NjAwMF9lbGZfZW5kX2luZGljYXRlX2V4ZWNfc3RhY2sgKHZvaWQpCi0rewotKyAgaWYgKFRBUkdF VF8zMkJJVCkKLSsgICAgZmlsZV9lbmRfaW5kaWNhdGVfZXhlY19zdGFjayAoKTsKLSsgIGVsc2UK LSsgICAgewotKyAgICAgIGludCBzYXZlZF90cmFtcG9saW5lc19jcmVhdGVkID0gdHJhbXBvbGlu ZXNfY3JlYXRlZDsKLSsgICAgICB0cmFtcG9saW5lc19jcmVhdGVkID0gMDsKLSsgICAgICBmaWxl X2VuZF9pbmRpY2F0ZV9leGVjX3N0YWNrICgpOwotKyAgICAgIHRyYW1wb2xpbmVzX2NyZWF0ZWQg PSBzYXZlZF90cmFtcG9saW5lc19jcmVhdGVkOwotKyAgICB9Ci0rfQotICNlbmRpZgotIAotICNp ZiBUQVJHRVRfWENPRkYKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmguamoJMjAwNi0x MS0wOCAxNzo1MzoxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9saW51 eDY0LmgJMjAwNy0wOC0yNyAxOToyNTowOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC01NDksNyArNTQ5 LDcgQEAgd2hpbGUgKDApCi0gI3VuZGVmIERSQUZUX1Y0X1NUUlVDVF9SRVQKLSAjZGVmaW5lIERS QUZUX1Y0X1NUUlVDVF9SRVQgKCFUQVJHRVRfNjRCSVQpCi0gCi0tI2RlZmluZSBUQVJHRVRfQVNN X0ZJTEVfRU5EIGZpbGVfZW5kX2luZGljYXRlX2V4ZWNfc3RhY2sKLSsjZGVmaW5lIFRBUkdFVF9B U01fRklMRV9FTkQgcnM2MDAwX2VsZl9lbmRfaW5kaWNhdGVfZXhlY19zdGFjawotIAotICNkZWZp bmUgVEFSR0VUX1BPU0lYX0lPCi0gCi0tLS0gZ2NjL2NvbmZpZy9pYTY0L2xpbnV4LmguamoJMjAw Ni0wNy0xNCAxODowMDo1OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvY29uZmlnL2lhNjQvbGlu dXguaAkyMDA3LTA4LTI3IDE5OjIxOjEyLjAwMDAwMDAwMCArMDIwMAotQEAgLTUsNyArNSw3IEBA Ci0gCi0gI2RlZmluZSBUQVJHRVRfVkVSU0lPTiBmcHJpbnRmIChzdGRlcnIsICIgKElBLTY0KSBM aW51eCIpOwotIAotLSNkZWZpbmUgVEFSR0VUX0FTTV9GSUxFX0VORCBmaWxlX2VuZF9pbmRpY2F0 ZV9leGVjX3N0YWNrCi0rI2RlZmluZSBUQVJHRVRfQVNNX0ZJTEVfRU5EIGlhNjRfbGludXhfZmls ZV9lbmQKLSAKLSAvKiBUaGlzIGlzIGZvciAtcHJvZmlsZSB0byB1c2UgLWxjX3AgaW5zdGVhZCBv ZiAtbGMuICAqLwotICN1bmRlZiBDQzFfU1BFQwotLS0tIGdjYy9jb25maWcvaWE2NC9pYTY0LmMu amoJMjAwNy0wMS0wNSAyMzo1NDoxMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvY29uZmlnL2lh NjQvaWE2NC5jCTIwMDctMDgtMjcgMTk6MjE6NDMuMDAwMDAwMDAwICswMjAwCi1AQCAtMjQ2LDYg KzI0Niw4IEBAIHN0YXRpYyB2b2lkIGlhNjRfaHB1eF9hZGRfZXh0ZXJuX2RlY2wgKHQKLSAgICAg IEFUVFJJQlVURV9VTlVTRUQ7Ci0gc3RhdGljIHZvaWQgaWE2NF9ocHV4X2ZpbGVfZW5kICh2b2lk KQotICAgICAgQVRUUklCVVRFX1VOVVNFRDsKLStzdGF0aWMgdm9pZCBpYTY0X2xpbnV4X2ZpbGVf ZW5kICh2b2lkKQotKyAgICAgQVRUUklCVVRFX1VOVVNFRDsKLSBzdGF0aWMgdm9pZCBpYTY0X2lu aXRfbGliZnVuY3MgKHZvaWQpCi0gICAgICBBVFRSSUJVVEVfVU5VU0VEOwotIHN0YXRpYyB2b2lk IGlhNjRfaHB1eF9pbml0X2xpYmZ1bmNzICh2b2lkKQotQEAgLTkwOTYsNCArOTA5OCwxMyBAQCBp YTY0X2ludmFsaWRfYmluYXJ5X29wIChpbnQgb3AgQVRUUklCVVRFCi0gICByZXR1cm4gTlVMTDsK LSB9Ci0gCi0rc3RhdGljIHZvaWQKLStpYTY0X2xpbnV4X2ZpbGVfZW5kICh2b2lkKQotK3sKLSsg IGludCBzYXZlZF90cmFtcG9saW5lc19jcmVhdGVkID0gdHJhbXBvbGluZXNfY3JlYXRlZDsKLSsg IHRyYW1wb2xpbmVzX2NyZWF0ZWQgPSAwOwotKyAgZmlsZV9lbmRfaW5kaWNhdGVfZXhlY19zdGFj ayAoKTsKLSsgIHRyYW1wb2xpbmVzX2NyZWF0ZWQgPSBzYXZlZF90cmFtcG9saW5lc19jcmVhdGVk OwotK30KLSsKLSAjaW5jbHVkZSAiZ3QtaWE2NC5oIgoKZGlmZiAtLWdpdCBhL2djYzQxLXBwYzY0 LW0zMi1tNjQtbXVsdGlsaWItb25seS5wYXRjaCBiL2djYzQxLXBwYzY0LW0zMi1tNjQtbXVsdGls aWItb25seS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBkYmVhYy4uMDAw MDAwMAotLS0gYS9nY2M0MS1wcGM2NC1tMzItbTY0LW11bHRpbGliLW9ubHkucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0tLS0gZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0 CTIwMDMtMDYtMDMgMDU6MTE6NDUuMDAwMDAwMDAwIC0wNDAwCi0rKysgZ2NjL2NvbmZpZy9yczYw MDAvdC1saW51eDY0CTIwMDMtMDYtMTEgMTc6MDc6MTYuMDAwMDAwMDAwIC0wNDAwCi1AQCAtNCwx MyArNCwxMyBAQCBMSUIyRlVOQ1NfRVhUUkEgPSB0cmFtcC5TICQoc3JjZGlyKS9jb25mCi0gIyBN b2RpZnkgdGhlIHNoYXJlZCBsaWIgdmVyc2lvbiBmaWxlCi0gU0hMSUJfTUtNQVBfT1BUUyA9IC12 IGRvdHN5bXM9MQotIAotLU1VTFRJTElCX09QVElPTlMgICAgICAgID0gbTY0L20zMiBtc29mdC1m bG9hdAotLU1VTFRJTElCX0RJUk5BTUVTICAgICAgID0gNjQgMzIgbm9mCi0rTVVMVElMSUJfT1BU SU9OUyAgICAgICAgPSBtNjQvbTMyCi0rTVVMVElMSUJfRElSTkFNRVMgICAgICAgPSA2NCAzMgot IE1VTFRJTElCX0VYVFJBX09QVFMgICAgID0gZlBJQyBtc3RyaWN0LWFsaWduCi0tTVVMVElMSUJf RVhDRVBUSU9OUyAgICAgPSBtNjQvbXNvZnQtZmxvYXQKLS1NVUxUSUxJQl9FWENMVVNJT05TICAg ICA9IG02NC8hbTMyL21zb2Z0LWZsb2F0Ci0tTVVMVElMSUJfT1NESVJOQU1FUwk9IC4uL2xpYjY0 IC4uL2xpYiBub2YKLS1NVUxUSUxJQl9NQVRDSEVTICAgICAgICA9ICQoTVVMVElMSUJfTUFUQ0hF U19GTE9BVCkKLStNVUxUSUxJQl9FWENFUFRJT05TICAgICA9Ci0rTVVMVElMSUJfRVhDTFVTSU9O UyAgICAgPQotK01VTFRJTElCX09TRElSTkFNRVMJPSAuLi9saWI2NCAuLi9saWIKLStNVUxUSUxJ Ql9NQVRDSEVTICAgICAgICA9Ci0gCi0gVEFSR0VUX0xJQkdDQzJfQ0ZMQUdTID0gLW1uby1taW5p bWFsLXRvYyAtZlBJQwotIAoKZGlmZiAtLWdpdCBhL2djYzQxLXByMjAyOTctdGVzdC5wYXRjaCBi L2djYzQxLXByMjAyOTctdGVzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg NWJlMjAxMi4uMDAwMDAwMAotLS0gYS9nY2M0MS1wcjIwMjk3LXRlc3QucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw2MiArMCwwIEBACi0yMDA2LTA0LTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJA cmVkaGF0LmNvbT4KLQotCVBSIG1pZGRsZS1lbmQvMjAyOTcKLQkqIGdjYy5kZy92aXNpYmlsaXR5 LTExLmM6IE1vdmVkIHRvLi4uCi0JKiBnY2MudGFyZ2V0L2kzODYvdmlzaWJpbGl0eS0xLmM6IC4u LiBoZXJlLiAgT25seSBydW4gb24KLQkzMi1iaXQgbGludXggYW5kIGJzZHMuCi0KLS0tLSBnY2Mv dGVzdHN1aXRlL2djYy5kZy92aXNpYmlsaXR5LTExLmMuamoJMjAwNi0wMy0yNCAxNzowNzoxNS4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy92aXNpYmlsaXR5LTExLmMJ MjAwNi0wMy0yOCAxNDo1OToyNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xLDI0ICswLDAgQEAKLS0v KiBQUiBtaWRkbGUtZW5kLzIwMjk3ICovCi0tLyogVGhlIG1lbWNweSBGVU5DVElPTl9ERUNMIGJ1 aWx0IGluIHRoZSBtaWRkbGUtZW5kIGZvciBibG9jayBtb3ZlcyBnb3QKLS0gICBoaWRkZW4gdmlz aWJpbGl0eSBmcm9tIHRoZSBmaXJzdCBwdXNoLCBzbyB0aGUgY2FsbCBkaWRuJ3QgdXNlIHRoZSBQ TFQuICAqLwotLQotLS8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQt Ki0qIH0gfSAqLwotLS8qIHsgZGctcmVxdWlyZS12aXNpYmlsaXR5ICIiIH0gKi8KLS0vKiB7IGRn LW9wdGlvbnMgIi1PcyAtZnBpYyIgfQotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi bWVtY3B5QFBMVCIgfSB9ICovCi0tCi0tI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGhpZGRl bikKLS0jcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2goZGVmYXVsdCkKLS1leHRlcm4gdm9pZCog bWVtY3B5ICh2b2lkICosIGNvbnN0IHZvaWQgKiwgX19TSVpFX1RZUEVfXyk7Ci0tI3ByYWdtYSBH Q0MgdmlzaWJpbGl0eSBwb3AKLS0KLS1zdHJ1Y3QgYSB7IGludCBhWzEwMjRdOyB9OwotLQotLWV4 dGVybiB2b2lkICpiYXIgKHN0cnVjdCBhICosIHN0cnVjdCBhICosIGludCk7Ci0tCi0tdm9pZCAq Ci0tZm9vIChzdHJ1Y3QgYSAqYSwgc3RydWN0IGEgKmIsIGludCBjKQotLXsKLS0gIHN0cnVjdCBh IGNjID0gKmI7Ci0tICByZXR1cm4gYmFyIChhLCAmY2MsIDQgKiBjKTsKLS19Ci0tLS0gZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvdmlzaWJpbGl0eS0xLmMuamoJMjAwNi0wMy0yOCAxNDoz MDoxNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni92 aXNpYmlsaXR5LTEuYwkyMDA2LTAzLTI4IDE0OjU4OjQ4LjAwMDAwMDAwMCArMDIwMAotQEAgLTAs MCArMSwyNSBAQAotKy8qIFBSIG1pZGRsZS1lbmQvMjAyOTcgKi8KLSsvKiBUaGUgbWVtY3B5IEZV TkNUSU9OX0RFQ0wgYnVpbHQgaW4gdGhlIG1pZGRsZS1lbmQgZm9yIGJsb2NrIG1vdmVzIGdvdAot KyAgIGhpZGRlbiB2aXNpYmlsaXR5IGZyb20gdGhlIGZpcnN0IHB1c2gsIHNvIHRoZSBjYWxsIGRp ZG4ndCB1c2UgdGhlIFBMVC4gICovCi0rCi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsg eyAqLSotbGludXgqICotKi0qYnNkKiAqLSotc29sYXJpczIqICotKi1lbGYqICotKi1nbnUqICot Ki1zeXN2WzQ1XSogfSAmJiBpbHAzMiB9IH0gfSAqLwotKy8qIHsgZGctcmVxdWlyZS1lZmZlY3Rp dmUtdGFyZ2V0IGZwaWMgfSAqLwotKy8qIHsgZGctcmVxdWlyZS12aXNpYmlsaXR5ICIiIH0gKi8K LSsvKiB7IGRnLW9wdGlvbnMgIi1PcyAtZnBpYyIgfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAibWVtY3B5QFBMVCIgfSB9ICovCi0rCi0rI3ByYWdtYSBHQ0MgdmlzaWJpbGl0 eSBwdXNoKGhpZGRlbikKLSsjcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2goZGVmYXVsdCkKLStl eHRlcm4gdm9pZCogbWVtY3B5ICh2b2lkICosIGNvbnN0IHZvaWQgKiwgX19TSVpFX1RZUEVfXyk7 Ci0rI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKLSsKLStzdHJ1Y3QgYSB7IGludCBhWzEwMjRd OyB9OwotKwotK2V4dGVybiB2b2lkICpiYXIgKHN0cnVjdCBhICosIHN0cnVjdCBhICosIGludCk7 Ci0rCi0rdm9pZCAqCi0rZm9vIChzdHJ1Y3QgYSAqYSwgc3RydWN0IGEgKmIsIGludCBjKQotK3sK LSsgIHN0cnVjdCBhIGNjID0gKmI7Ci0rICByZXR1cm4gYmFyIChhLCAmY2MsIDQgKiBjKTsKLSt9 CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcHIyMDg4MC5wYXRjaCBiL2djYzQxLXByMjA4ODAucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNzJhODEuLjAwMDAwMDAKLS0tIGEvZ2Nj NDEtcHIyMDg4MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLTIwMDYtMTEt MjQgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+Ci0KLQlQUiBmb3J0cmFuLzIwODgw Ci0JKiBwYXJzZS5jIChwYXJzZV9pbnRlcmZhY2UpOiBFcnJvciBpZiBwcm9jZWR1cmUgbmFtZSBp cyB0aGF0IG9mCi0JZW5jb21wYXNzaW5nIHNjb3BlLgotCi0JKiBnZm9ydHJhbi5kZy9pbnRlcmZh Y2VfM2EuZjkwOiBOZXcgdGVzdC4KLQotLS0tIGdjYy9mb3J0cmFuL3BhcnNlLmMJKHJldmlzaW9u IDExOTE3MikKLSsrKyBnY2MvZm9ydHJhbi9wYXJzZS5jCShyZXZpc2lvbiAxMTkxNzMpCi1AQCAt MTY5NCw2ICsxNjk0LDcgQEAgcGFyc2VfaW50ZXJmYWNlICh2b2lkKQotICAgZ2ZjX2ludGVyZmFj ZV9pbmZvIHNhdmU7Ci0gICBnZmNfc3RhdGVfZGF0YSBzMSwgczI7Ci0gICBnZmNfc3RhdGVtZW50 IHN0OwotKyAgbG9jdXMgcHJvY19sb2N1czsKLSAKLSAgIGFjY2VwdF9zdGF0ZW1lbnQgKFNUX0lO VEVSRkFDRSk7Ci0gCi1AQCAtMTc4MSw2ICsxNzgyLDcgQEAgbG9vcDoKLSAgIGFjY2VwdF9zdGF0 ZW1lbnQgKHN0KTsKLSAgIHByb2dfdW5pdCA9IGdmY19uZXdfYmxvY2s7Ci0gICBwcm9nX3VuaXQt PmZvcm1hbF9ucyA9IGdmY19jdXJyZW50X25zOwotKyAgcHJvY19sb2N1cyA9IGdmY19jdXJyZW50 X2xvY3VzOwotIAotIGRlY2w6Ci0gICAvKiBSZWFkIGRhdGEgZGVjbGFyYXRpb24gc3RhdGVtZW50 cy4gICovCi1AQCAtMTc5Niw4ICsxNzk4LDE1IEBAIGRlY2w6Ci0gCi0gICBjdXJyZW50X2ludGVy ZmFjZSA9IHNhdmU7Ci0gICBnZmNfYWRkX2ludGVyZmFjZSAocHJvZ191bml0KTsKLS0KLSAgIHBv cF9zdGF0ZSAoKTsKLSsKLSsgIGlmIChjdXJyZW50X2ludGVyZmFjZS5ucwotKwkmJiBjdXJyZW50 X2ludGVyZmFjZS5ucy0+cHJvY19uYW1lCi0rCSYmIHN0cmNtcCAoY3VycmVudF9pbnRlcmZhY2Uu bnMtPnByb2NfbmFtZS0+bmFtZSwKLSsJCSAgIHByb2dfdW5pdC0+bmFtZSkgPT0gMCkKLSsgICAg Z2ZjX2Vycm9yICgiSU5URVJGQUNFIHByb2NlZHVyZSAnJXMnIGF0ICVMIGhhcyB0aGUgc2FtZSBu YW1lIGFzIHRoZSAiCi0rCSAgICAgICAiZW5jbG9zaW5nIHByb2NlZHVyZSIsIHByb2dfdW5pdC0+ bmFtZSwgJnByb2NfbG9jdXMpOwotKwotICAgZ290byBsb29wOwotIAotIGRvbmU6Ci0tLS0gZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9pbnRlcmZhY2VfM2EuZjkwCi0rKysgZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9pbnRlcmZhY2VfM2EuZjkwCi1AQCAtMCwwICsxLDEzIEBACi0rISB7IGRn LWRvIGNvbXBpbGUgfQotKyEgQ29udHJpYnV0ZWQgYnkgSm9vc3QgVmFuZGVWb25kZWxlICA8anYy NDRAY2FtLmFjLnVrPgotKyEKLSshIFRoaXMgd2FzIGZvdW5kIHdoaWxzdCBpbnZlc3RpZ2F0aW5n ID0+IHNlZ2ZhdWx0Ci0rc3Vicm91dGluZSB0aHlfc3ViIChhKQotKyAgaW50ZXJmYWNlIAotKyAg ICBzdWJyb3V0aW5lIHRoeV9zdWIgKGEpICEgeyBkZy1lcnJvciAiZW5jbG9zaW5nIHByb2NlZHVy ZSIgfQotKyAgICAgIHJlYWwgYQotKyAgICBlbmQgc3Vicm91dGluZQotKyAgZW5kIGludGVyZmFj ZQotKyAgcmVhbCBhCi0rICBwcmludCAqLCBhCi0rZW5kIHN1YnJvdXRpbmUKCmRpZmYgLS1naXQg YS9nY2M0MS1wcjIzODQ4LnBhdGNoIGIvZ2NjNDEtcHIyMzg0OC5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMWZlZjU3OS4uMDAwMDAwMAotLS0gYS9nY2M0MS1wcjIzODQ4LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjI1ICswLDAgQEAKLTIwMDctMTEtMTUgIEpha3ViIEpl bGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgbWlkZGxlLWVuZC8yMzg0OAotCSogdHJl ZS1zc2EtY2NwLmMgKG9wdGltaXplX3N0YWNrX3Jlc3RvcmUpOiBOZXcgZnVuY3Rpb24uCi0JKGV4 ZWN1dGVfZm9sZF9hbGxfYnVpbHRpbnMpOiBDYWxsIG9wdGltaXplX3N0YWNrX3Jlc3RvcmUgZm9y Ci0JQlVJTFRfSU5fU1RBQ0tfUkVTVE9SRS4KLQotCSogZ2NjLmRnL3RyZWUtc3NhL3ByMjM4NDgt MS5jOiBOZXcgdGVzdC4KLQkqIGdjYy5kZy90cmVlLXNzYS9wcjIzODQ4LTIuYzogTmV3IHRlc3Qu Ci0JKiBnY2MuZGcvdHJlZS1zc2EvcHIyMzg0OC0zLmM6IE5ldyB0ZXN0LgotCSogZ2NjLmRnL3Ry ZWUtc3NhL3ByMjM4NDgtNC5jOiBOZXcgdGVzdC4KLQotLS0tIGdjYy90cmVlLXNzYS1jY3AuYwko cmV2aXNpb24gMTMwMjA1KQotKysrIGdjYy90cmVlLXNzYS1jY3AuYwkocmV2aXNpb24gMTMwMjA2 KQotQEAgLTIzOTQsNiArMjM5NCw3NSBAQCBmb2xkX3N0bXRfaW5wbGFjZSAodHJlZSBzdG10KQot ICAgcmV0dXJuIGNoYW5nZWQ7Ci0gfQotIAwKLSsvKiBUcnkgdG8gb3B0aW1pemUgb3V0IF9fYnVp bHRpbl9zdGFja19yZXN0b3JlLiAgT3B0aW1pemUgaXQgb3V0Ci0rICAgaWYgdGhlcmUgaXMgYW5v dGhlciBfX2J1aWx0aW5fc3RhY2tfcmVzdG9yZSBpbiB0aGUgc2FtZSBiYXNpYwotKyAgIGJsb2Nr IGFuZCBubyBjYWxscyBvciBBU01fRVhQUnMgYXJlIGluIGJldHdlZW4sIG9yIGlmIHRoaXMgYmxv Y2sncwotKyAgIG9ubHkgb3V0Z29pbmcgZWRnZSBpcyB0byBFWElUX0JMT0NLIGFuZCB0aGVyZSBh cmUgbm8gY2FsbHMgb3IKLSsgICBBU01fRVhQUnMgYWZ0ZXIgdGhpcyBfX2J1aWx0aW5fc3RhY2tf cmVzdG9yZS4gICovCi0rCi0rc3RhdGljIHRyZWUKLStvcHRpbWl6ZV9zdGFja19yZXN0b3JlIChi YXNpY19ibG9jayBiYiwgdHJlZSBjYWxsLCBibG9ja19zdG10X2l0ZXJhdG9yIGkpCi0rewotKyAg dHJlZSBzdGFja19zYXZlLCBzdG10LCBjYWxsZWU7Ci0rCi0rICBpZiAoVFJFRV9DT0RFIChjYWxs KSAhPSBDQUxMX0VYUFIKLSsgICAgICB8fCBUUkVFX09QRVJBTkQgKGNhbGwsIDEpID09IE5VTExf VFJFRQotKyAgICAgIHx8IFRSRUVfQ0hBSU4gKFRSRUVfT1BFUkFORCAoY2FsbCwgMSkpICE9IE5V TExfVFJFRQotKyAgICAgIHx8IFRSRUVfQ09ERSAoVFJFRV9WQUxVRSAoVFJFRV9PUEVSQU5EIChj YWxsLCAxKSkpICE9IFNTQV9OQU1FCi0rICAgICAgfHwgIVBPSU5URVJfVFlQRV9QIChUUkVFX1RZ UEUgKFRSRUVfVkFMVUUgKFRSRUVfT1BFUkFORCAoY2FsbCwgMSkpKSkpCi0rICAgIHJldHVybiBO VUxMX1RSRUU7Ci0rCi0rICBmb3IgKGJzaV9uZXh0ICgmaSk7ICFic2lfZW5kX3AgKGkpOyBic2lf bmV4dCAoJmkpKQotKyAgICB7Ci0rICAgICAgdHJlZSBjYWxsOwotKwotKyAgICAgIHN0bXQgPSBi c2lfc3RtdCAoaSk7Ci0rICAgICAgaWYgKFRSRUVfQ09ERSAoc3RtdCkgPT0gQVNNX0VYUFIpCi0r CXJldHVybiBOVUxMX1RSRUU7Ci0rICAgICAgY2FsbCA9IGdldF9jYWxsX2V4cHJfaW4gKHN0bXQp OwotKyAgICAgIGlmIChjYWxsID09IE5VTEwpCi0rCWNvbnRpbnVlOwotKwotKyAgICAgIGNhbGxl ZSA9IGdldF9jYWxsZWVfZm5kZWNsIChjYWxsKTsKLSsgICAgICBpZiAoIWNhbGxlZSB8fCBERUNM X0JVSUxUX0lOX0NMQVNTIChjYWxsZWUpICE9IEJVSUxUX0lOX05PUk1BTCkKLSsJcmV0dXJuIE5V TExfVFJFRTsKLSsKLSsgICAgICBpZiAoREVDTF9GVU5DVElPTl9DT0RFIChjYWxsZWUpID09IEJV SUxUX0lOX1NUQUNLX1JFU1RPUkUpCi0rCWJyZWFrOwotKyAgICB9Ci0rCi0rICBpZiAoYnNpX2Vu ZF9wIChpKQotKyAgICAgICYmICghIHNpbmdsZV9zdWNjX3AgKGJiKQotKwkgIHx8IHNpbmdsZV9z dWNjX2VkZ2UgKGJiKS0+ZGVzdCAhPSBFWElUX0JMT0NLX1BUUikpCi0rICAgIHJldHVybiBOVUxM X1RSRUU7Ci0rCi0rICBzdGFja19zYXZlID0gU1NBX05BTUVfREVGX1NUTVQgKFRSRUVfVkFMVUUg KFRSRUVfT1BFUkFORCAoY2FsbCwgMSkpKTsKLSsgIGlmIChUUkVFX0NPREUgKHN0YWNrX3NhdmUp ICE9IE1PRElGWV9FWFBSCi0rICAgICAgfHwgVFJFRV9PUEVSQU5EIChzdGFja19zYXZlLCAwKQot KwkgIT0gVFJFRV9WQUxVRSAoVFJFRV9PUEVSQU5EIChjYWxsLCAxKSkKLSsgICAgICB8fCBUUkVF X0NPREUgKFRSRUVfT1BFUkFORCAoc3RhY2tfc2F2ZSwgMSkpICE9IENBTExfRVhQUgotKyAgICAg IHx8IHRyZWVfY291bGRfdGhyb3dfcCAoc3RhY2tfc2F2ZSkKLSsgICAgICB8fCAhaGFzX3Npbmds ZV91c2UgKFRSRUVfVkFMVUUgKFRSRUVfT1BFUkFORCAoY2FsbCwgMSkpKSkKLSsgICAgcmV0dXJu IE5VTExfVFJFRTsKLSsKLSsgIGNhbGxlZSA9IGdldF9jYWxsZWVfZm5kZWNsIChUUkVFX09QRVJB TkQgKHN0YWNrX3NhdmUsIDEpKTsKLSsgIGlmICghY2FsbGVlCi0rICAgICAgfHwgREVDTF9CVUlM VF9JTl9DTEFTUyAoY2FsbGVlKSAhPSBCVUlMVF9JTl9OT1JNQUwKLSsgICAgICB8fCBERUNMX0ZV TkNUSU9OX0NPREUgKGNhbGxlZSkgIT0gQlVJTFRfSU5fU1RBQ0tfU0FWRQotKyAgICAgIHx8IFRS RUVfT1BFUkFORCAoVFJFRV9PUEVSQU5EIChzdGFja19zYXZlLCAxKSwgMSkgIT0gTlVMTF9UUkVF KQotKyAgICByZXR1cm4gTlVMTF9UUkVFOwotKwotKyAgc3RtdCA9IHN0YWNrX3NhdmU7Ci0rICBp ZiAoIXNldF9yaHMgKCZzdG10LAotKwkJYnVpbGRfaW50X2NzdCAoVFJFRV9UWVBFIChUUkVFX1ZB TFVFIChUUkVFX09QRVJBTkQgKGNhbGwsCi0rCQkJCQkJCQkgICAgMSkpKSwgMCkpKQotKyAgICBy ZXR1cm4gTlVMTF9UUkVFOwotKyAgZ2NjX2Fzc2VydCAoc3RtdCA9PSBzdGFja19zYXZlKTsKLSsg IG1hcmtfbmV3X3ZhcnNfdG9fcmVuYW1lIChzdG10KTsKLSsKLSsgIHJldHVybiBpbnRlZ2VyX3pl cm9fbm9kZTsKLSt9Ci0rDAotIC8qIENvbnZlcnQgRVhQUiBpbnRvIGEgR0lNUExFIHZhbHVlIHN1 aXRhYmxlIGZvciBzdWJzdGl0dXRpb24gb24gdGhlCi0gICAgUkhTIG9mIGFuIGFzc2lnbm1lbnQu ICBJbnNlcnQgdGhlIG5lY2Vzc2FyeSBzdGF0ZW1lbnRzIGJlZm9yZQotICAgIGl0ZXJhdG9yICpT SV9QLiAgKi8KLUBAIC0yNDY5LDYgKzI1MzgsMTIgQEAgZXhlY3V0ZV9mb2xkX2FsbF9idWlsdGlu cyAodm9pZCkKLSAJCXJlc3VsdCA9IGludGVnZXJfemVyb19ub2RlOwotIAkJYnJlYWs7Ci0gCi0r CSAgICAgIGNhc2UgQlVJTFRfSU5fU1RBQ0tfUkVTVE9SRToKLSsJCXJlc3VsdCA9IG9wdGltaXpl X3N0YWNrX3Jlc3RvcmUgKGJiLCAqc3RtdHAsIGkpOwotKwkJaWYgKHJlc3VsdCkKLSsJCSAgYnJl YWs7Ci0rCQkvKiBGQUxMVEhSVSAqLwotKwotIAkgICAgICBkZWZhdWx0OgotIAkJYnNpX25leHQg KCZpKTsKLSAJCWNvbnRpbnVlOwotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3By MjM4NDgtMS5jCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3Nh L3ByMjM4NDgtMS5jCShyZXZpc2lvbiAxMzAyMDYpCi1AQCAtMCwwICsxLDMyIEBACi0rLyogUFIg bWlkZGxlLWVuZC8yMzg0OCAqLwotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1v cHRpb25zICItTzIgLWZkdW1wLXRyZWUtb3B0aW1pemVkIiB9ICovCi0rCi0rdm9pZCBiYXIxIChj aGFyICosIGludCk7Ci0rdm9pZCBmb28xIChpbnQgc2l6ZSkKLSt7Ci0rICBjaGFyIHRlbXBbc2l6 ZV07Ci0rICB0ZW1wW3NpemUtMV0gPSAnXDAnOwotKyAgYmFyMSAodGVtcCwgc2l6ZSk7Ci0rfQot KwotK3ZvaWQgYmFyMiAoY2hhciAqLCBjaGFyICosIGNoYXIgKiwgY2hhciAqLCBpbnQpOwotK3Zv aWQgZm9vMiAoaW50IHNpemUpCi0rewotKyAgY2hhciB0ZW1wW3NpemVdOwotKyAgdGVtcFtzaXpl LTFdID0gJ1wwJzsKLSsgIHsKLSsgICAgY2hhciB0ZW1wMltzaXplXTsKLSsgICAgewotKyAgICAg IGNoYXIgdGVtcDNbc2l6ZV07Ci0rICAgICAgewotKwljaGFyIHRlbXA0W3NpemVdOwotKwliYXIy ICh0ZW1wLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBzaXplKTsKLSsgICAgICB9Ci0rICAgIH0KLSsg IH0KLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAiX19idWlsdGlu X3N0YWNrX3NhdmUiICJvcHRpbWl6ZWQifSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLW5vdCAiX19idWlsdGluX3N0YWNrX3Jlc3RvcmUiICJvcHRpbWl6ZWQifSB9ICovCi0r LyogeyBkZy1maW5hbCB7IGNsZWFudXAtdHJlZS1kdW1wICJvcHRpbWl6ZWQiIH0gfSAqLwotLS0t IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByMjM4NDgtMi5jCShyZXZpc2lvbiAwKQot KysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByMjM4NDgtMi5jCShyZXZpc2lvbiAx MzAyMDYpCi1AQCAtMCwwICsxLDI1IEBACi0rLyogUFIgbWlkZGxlLWVuZC8yMzg0OCAqLwotKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUt b3B0aW1pemVkIiB9ICovCi0rCi0rdm9pZCBiYXIgKGNoYXIgKiwgY2hhciAqLCBjaGFyICosIGNo YXIgKiwgaW50KTsKLSt2b2lkIGZvbyAoaW50IHNpemUpCi0rewotKyAgY2hhciB0ZW1wW3NpemVd OwotKyAgdGVtcFtzaXplLTFdID0gJ1wwJzsKLSsgIHsKLSsgICAgY2hhciB0ZW1wMltzaXplXTsK LSsgICAgewotKyAgICAgIGNoYXIgdGVtcDNbc2l6ZV07Ci0rICAgICAgewotKwljaGFyIHRlbXA0 W3NpemVdOwotKwliYXIgKHRlbXAsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHNpemUpOwotKyAgICAg IH0KLSsgICAgfQotKyAgICBiYXIgKHRlbXAsIHRlbXAyLCAoY2hhciAqKSAwLCAoY2hhciAqKSAw LCBzaXplKTsKLSsgIH0KLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRp bWVzICJfX2J1aWx0aW5fc3RhY2tfc2F2ZSIgMSAib3B0aW1pemVkIn0gfSAqLwotKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX3N0YWNrX3Jlc3RvcmUiIDEg Im9wdGltaXplZCJ9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgY2xlYW51cC10cmVlLWR1bXAgIm9w dGltaXplZCIgfSB9ICovCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHIyMzg0 OC0zLmMJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHIy Mzg0OC0zLmMJKHJldmlzaW9uIDEzMDIwNikKLUBAIC0wLDAgKzEsMjggQEAKLSsvKiBQUiBtaWRk bGUtZW5kLzIzODQ4ICovCi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlv bnMgIi1PMiAtZmR1bXAtdHJlZS1vcHRpbWl6ZWQiIH0gKi8KLSsKLSt2b2lkIGJhciAoaW50LCBj aGFyICosIGNoYXIgKiwgY2hhciAqLCBjaGFyICosIGludCk7Ci0rdm9pZCBmb28gKGludCBzaXpl KQotK3sKLSsgIGludCBpOwotKyAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKLSsgICAgewot KyAgICAgIGNoYXIgdGVtcFtzaXplXTsKLSsgICAgICB0ZW1wW3NpemUtMV0gPSAnXDAnOwotKyAg ICAgIHsKLSsJY2hhciB0ZW1wMltzaXplXTsKLSsJewotKwkgIGNoYXIgdGVtcDNbc2l6ZV07Ci0r CSAgewotKwkgICAgY2hhciB0ZW1wNFtzaXplXTsKLSsJICAgIGJhciAoaSwgdGVtcCwgdGVtcDIs IHRlbXAzLCB0ZW1wNCwgc2l6ZSk7Ci0rCSAgfQotKwl9Ci0rICAgICAgfQotKyAgICB9Ci0rfQot KwotKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX3N0YWNr X3NhdmUiIDEgIm9wdGltaXplZCJ9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgIl9fYnVpbHRpbl9zdGFja19yZXN0b3JlIiAxICJvcHRpbWl6ZWQifSB9ICovCi0r LyogeyBkZy1maW5hbCB7IGNsZWFudXAtdHJlZS1kdW1wICJvcHRpbWl6ZWQiIH0gfSAqLwotLS0t IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByMjM4NDgtNC5jCShyZXZpc2lvbiAwKQot KysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByMjM4NDgtNC5jCShyZXZpc2lvbiAx MzAyMDYpCi1AQCAtMCwwICsxLDI1IEBACi0rLyogUFIgbWlkZGxlLWVuZC8yMzg0OCAqLwotKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUt b3B0aW1pemVkIiB9ICovCi0rCi0rdm9pZCBiYXIgKGNoYXIgKiwgY2hhciAqLCBjaGFyICosIGNo YXIgKiwgaW50KTsKLSt2b2lkIGZvbyAoaW50IHNpemUpCi0rewotKyAgY2hhciB0ZW1wW3NpemVd OwotKyAgdGVtcFtzaXplLTFdID0gJ1wwJzsKLSsgIHsKLSsgICAgY2hhciB0ZW1wMltzaXplXTsK LSsgICAgewotKyAgICAgIGNoYXIgdGVtcDNbc2l6ZV07Ci0rICAgICAgewotKwljaGFyIHRlbXA0 W3NpemVdOwotKwliYXIgKHRlbXAsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHNpemUpOwotKyAgICAg IH0KLSsgICAgfQotKyAgICBfX2FzbSBfX3ZvbGF0aWxlICgiIiA6IDogInIiICgmdGVtcFswXSks ICJyIiAoJnRlbXAyWzBdKSA6ICJtZW1vcnkiKTsKLSsgIH0KLSt9Ci0rCi0rLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJfX2J1aWx0aW5fc3RhY2tfc2F2ZSIgMSAib3B0aW1p emVkIn0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWls dGluX3N0YWNrX3Jlc3RvcmUiIDEgIm9wdGltaXplZCJ9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsg Y2xlYW51cC10cmVlLWR1bXAgIm9wdGltaXplZCIgfSB9ICovCgpkaWZmIC0tZ2l0IGEvZ2NjNDEt cHIyNzg5OC5wYXRjaCBiL2djYzQxLXByMjc4OTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDg2YmY4NjIuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtcHIyNzg5OC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLTIwMDYtMDctMDYgIEFsZXhhbmRyZSBPbGl2YSAg PGFvbGl2YUByZWRoYXQuY29tPgotCi0JUFIgYy8yNzg5OAotCSogYy10eXBlY2suYyAodGFnZ2Vk X3R5cGVzX3R1X2NvbXBhdGlibGVfcCk6IEVuYWJsZSBleGFjdAotCW1hdGNoZXMgYmV0d2VlbiBh bm9ueW1vdXMgdW5pb24gZmllbGRzLgotCi0yMDA2LTA4LTE4ICBKYWt1YiBKZWxpbmVrICA8amFr dWJAcmVkaGF0LmNvbT4KLQotCVBSIGMvMjc4OTgKLQkqIGdjYy5kZy9wcjI3ODk4LmM6IE5ldyB0 ZXN0LgotCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIyNzg5OC5jLmpqCTIwMDYtMDgtMTgg MDk6MTk6MzMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIyNzg5 OC5jCTIwMDYtMDgtMTggMDk6MTk6MjcuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDggQEAK LSsvKiBQUiBjLzI3ODk4ICovCi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9w dGlvbnMgIi0tY29tYmluZSIgfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1zb3VyY2VzICJwcjI3 ODk4LmMiIH0gKi8KLSsKLSt1bmlvbiB1IHsgc3RydWN0IHsgaW50IGk7IH07IH07Ci0rCi0rZXh0 ZXJuIGludCBmb28gKHVuaW9uIHUgKik7Ci0tLS0gZ2NjL2MtdHlwZWNrLmMuamoJMjAwNi0wOC0x NyAwOTo1NToxMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvYy10eXBlY2suYwkyMDA2LTA4LTE4 IDA5OjE0OjE1LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwNzIsMTEgKzEwNzIsMTIgQEAgdGFnZ2Vk X3R5cGVzX3R1X2NvbXBhdGlibGVfcCAodHJlZSB0MSwgdAotIAkgIHsKLSAJICAgIGludCByZXN1 bHQ7Ci0gCSAgICAKLS0JICAgIAotLQkgICAgaWYgKERFQ0xfTkFNRSAoczEpID09IE5VTEwKLS0J ICAgICAgICB8fCBERUNMX05BTUUgKHMxKSAhPSBERUNMX05BTUUgKHMyKSkKLSsJICAgIGlmIChE RUNMX05BTUUgKHMxKSAhPSBERUNMX05BTUUgKHMyKSkKLSAJICAgICAgYnJlYWs7Ci0gCSAgICBy ZXN1bHQgPSBjb21wdHlwZXNfaW50ZXJuYWwgKFRSRUVfVFlQRSAoczEpLCBUUkVFX1RZUEUgKHMy KSk7Ci0rCi0rCSAgICBpZiAocmVzdWx0ICE9IDEgJiYgIURFQ0xfTkFNRSAoczEpKQotKwkgICAg ICBicmVhazsKLSAJICAgIGlmIChyZXN1bHQgPT0gMCkKLSAJICAgICAgewotIAkJdHUtPnZhbCA9 IDA7Ci1AQCAtMTEwMywyOCArMTEwNCwzMSBAQCB0YWdnZWRfdHlwZXNfdHVfY29tcGF0aWJsZV9w ICh0cmVlIHQxLCB0Ci0gCSAgewotIAkgICAgYm9vbCBvayA9IGZhbHNlOwotIAotLQkgICAgaWYg KERFQ0xfTkFNRSAoczEpICE9IE5VTEwpCi0tCSAgICAgIGZvciAoczIgPSBUWVBFX0ZJRUxEUyAo dDIpOyBzMjsgczIgPSBUUkVFX0NIQUlOIChzMikpCi0tCQlpZiAoREVDTF9OQU1FIChzMSkgPT0g REVDTF9OQU1FIChzMikpCi0tCQkgIHsKLS0JCSAgICBpbnQgcmVzdWx0OwotLQkJICAgIHJlc3Vs dCA9IGNvbXB0eXBlc19pbnRlcm5hbCAoVFJFRV9UWVBFIChzMSksIFRSRUVfVFlQRSAoczIpKTsK LS0JCSAgICBpZiAocmVzdWx0ID09IDApCi0tCQkgICAgICB7Ci0tCQkJdHUtPnZhbCA9IDA7Ci0t CQkJcmV0dXJuIDA7Ci0tCQkgICAgICB9Ci0tCQkgICAgaWYgKHJlc3VsdCA9PSAyKQotLQkJICAg ICAgbmVlZHNfd2FybmluZyA9IHRydWU7Ci0tCi0tCQkgICAgaWYgKFRSRUVfQ09ERSAoczEpID09 IEZJRUxEX0RFQ0wKLS0JCQkmJiBzaW1wbGVfY3N0X2VxdWFsIChERUNMX0ZJRUxEX0JJVF9PRkZT RVQgKHMxKSwKLS0JCQkJCSAgICAgREVDTF9GSUVMRF9CSVRfT0ZGU0VUIChzMikpICE9IDEpCi0t CQkgICAgICBicmVhazsKLSsJICAgIGZvciAoczIgPSBUWVBFX0ZJRUxEUyAodDIpOyBzMjsgczIg PSBUUkVFX0NIQUlOIChzMikpCi0rCSAgICAgIGlmIChERUNMX05BTUUgKHMxKSA9PSBERUNMX05B TUUgKHMyKSkKLSsJCXsKLSsJCSAgaW50IHJlc3VsdDsKLSsKLSsJCSAgcmVzdWx0ID0gY29tcHR5 cGVzX2ludGVybmFsIChUUkVFX1RZUEUgKHMxKSwgVFJFRV9UWVBFIChzMikpOwotIAotLQkJICAg IG9rID0gdHJ1ZTsKLSsJCSAgaWYgKHJlc3VsdCAhPSAxICYmICFERUNMX05BTUUgKHMxKSkKLSsJ CSAgICBjb250aW51ZTsKLSsJCSAgaWYgKHJlc3VsdCA9PSAwKQotKwkJICAgIHsKLSsJCSAgICAg IHR1LT52YWwgPSAwOwotKwkJICAgICAgcmV0dXJuIDA7Ci0rCQkgICAgfQotKwkJICBpZiAocmVz dWx0ID09IDIpCi0rCQkgICAgbmVlZHNfd2FybmluZyA9IHRydWU7Ci0rCi0rCQkgIGlmIChUUkVF X0NPREUgKHMxKSA9PSBGSUVMRF9ERUNMCi0rCQkgICAgICAmJiBzaW1wbGVfY3N0X2VxdWFsIChE RUNMX0ZJRUxEX0JJVF9PRkZTRVQgKHMxKSwKLSsJCQkJCSAgIERFQ0xfRklFTERfQklUX09GRlNF VCAoczIpKSAhPSAxKQotIAkJICAgIGJyZWFrOwotLQkJICB9Ci0rCi0rCQkgIG9rID0gdHJ1ZTsK LSsJCSAgYnJlYWs7Ci0rCQl9Ci0gCSAgICBpZiAoIW9rKQotIAkgICAgICB7Ci0gCQl0dS0+dmFs ID0gMDsKCmRpZmYgLS1naXQgYS9nY2M0MS1wcjI4NjkwLnBhdGNoIGIvZ2NjNDEtcHIyODY5MC5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFjMmNjMS4uMDAwMDAwMAotLS0g YS9nY2M0MS1wcjI4NjkwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLTIw MDctMDYtMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JKiBkZWZhdWx0 cy5oIChUQVJHRVRfSU5ERVhfT1BFUkFORF9GSVJTVCk6IERlZmluZS4KLQkqIGNvbmZpZy9yczYw MDAvcnM2MDAwLmggKFRBUkdFVF9JTkRFWF9PUEVSQU5EX0ZJUlNUKTogRGVmaW5lLgotCSogb3B0 YWJzLmMgKGVtaXRfY21wX2FuZF9qdW1wX2luc25zKTogRG9uJ3QgY2FsbCBzd2FwX29wZXJhbmQK LQl0d2ljZS4KLQkqIHJ0bGFuYWwuYyAoY29tbXV0YXRpdmVfb3BlcmFuZF9wcmVjZWRlbmNlKTog T25seSBwcmVmZXIKLQlSRUdfUE9JTlRFUiBhbmQgTUVNX1BPSU5URVIgb3BlcmFuZHMgb3ZlciBS RUcgYW5kIE1FTSBvcGVyYW5kcwotCWlmIFRBUkdFVF9JTkRFWF9PUEVSQU5EX0ZJUlNULgotCShz d2FwX2NvbW11dGF0aXZlX29wZXJhbmRzX3ApOiBPbmx5IHNvcnQgb24gUkVHTk8gaWYKLQlUQVJH RVRfSU5ERVhfT1BFUkFORF9GSVJTVC4KLQkqIHRyZWUtc3NhLWFkZHJlc3MuYyAoZ2VuX2FkZHJf cnR4KTogT25seSB1c2Ugc2ltcGxpZnlfZ2VuX2JpbmFyeQotCWluc3RlYWQgb2YgZ2VuX3J0eF9Q TFVTIGlmIFRBUkdFVF9JTkRFWF9PUEVSQU5EX0ZJUlNULgotCi0yMDA3LTA2LTIwICBQZXRlciBC ZXJnbmVyICA8YmVyZ25lckB2bmV0LmlibS5jb20+Ci0KLQlQUiBtaWRkbGUtZW5kLzI4NjkwCi0J KiBvcHRhYnMuYyAoZW1pdF9jbXBfYW5kX2p1bXBfaW5zbnMpOiBBbGxvdyBFUSBjb21wYXJlcy4K LQkqIHJ0bGFuYWwuYyAoY29tbXV0YXRpdmVfb3BlcmFuZF9wcmVjZWRlbmNlKTogUHJlZmVyIGJv dGggUkVHX1BPSU5URVIKLQlhbmQgTUVNX1BPSU5URVIgb3BlcmFuZHMgb3ZlciBSRUcgYW5kIE1F TSBvcGVyYW5kcy4KLQkoc3dhcF9jb21tdXRhdGl2ZV9vcGVyYW5kc19wKTogSW4gY2FzZSBvZiBh IHRpZSwgc29ydCBvbiBSRUdOTy4KLQkqIHRyZWUtc3NhLWFkZHJlc3MuYyAoZ2VuX2FkZHJfcnR4 KTogVXNlIHNpbXBsaWZ5X2dlbl9iaW5hcnkKLQlpbnN0ZWFkIG9mIGdlbl9ydHhfUExVUy4KLQot LS0tIGdjYy9kZWZhdWx0cy5oLmpqCTIwMDctMDItMjAgMjI6Mzk6MTIuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2NjL2RlZmF1bHRzLmgJMjAwNy0wNi0yNiAwMDozMjoxNi4wMDAwMDAwMDAgKzAyMDAK LUBAIC03ODUsNiArNzg1LDEwIEBAIFNvZnR3YXJlIEZvdW5kYXRpb24sIDUxIEZyYW5rbGluIFN0 cmVldCwKLSAjZGVmaW5lIFRBUkdFVF9DOTlfRlVOQ1RJT05TIDAKLSAjZW5kaWYKLSAKLSsjaWZu ZGVmIFRBUkdFVF9JTkRFWF9PUEVSQU5EX0ZJUlNUCi0rI2RlZmluZSBUQVJHRVRfSU5ERVhfT1BF UkFORF9GSVJTVCAwCi0rI2VuZGlmCi0rCi0gLyogSW5kaWNhdGUgdGhhdCBDTFogYW5kIENUWiBh cmUgdW5kZWZpbmVkIGF0IHplcm8uICAqLwotICNpZm5kZWYgQ0xaX0RFRklORURfVkFMVUVfQVRf WkVSTwotICNkZWZpbmUgQ0xaX0RFRklORURfVkFMVUVfQVRfWkVSTyhNT0RFLCBWQUxVRSkgIDAK LS0tLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaC5qagkyMDA3LTAyLTIwIDIyOjM5OjAwLjAw MDAwMDAwMCArMDEwMAotKysrIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5oCTIwMDctMDYtMjYg MDA6MzM6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtNTcsNiArNTcsOCBAQAotICNkZWZpbmUgUFBD NDA1X0VSUkFUVU03NyAwCi0gI2VuZGlmCi0gCi0rI2RlZmluZSBUQVJHRVRfSU5ERVhfT1BFUkFO RF9GSVJTVCAocnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUE9XRVI2KQotKwotIC8qIENvbW1vbiBB U00gZGVmaW5pdGlvbnMgdXNlZCBieSBBU01fU1BFQyBhbW9uZyB0aGUgdmFyaW91cyB0YXJnZXRz Ci0gICAgZm9yIGhhbmRsaW5nIC1tY3B1PXh4eCBzd2l0Y2hlcy4gICovCi0gI2RlZmluZSBBU01f Q1BVX1NQRUMgXAotLS0tIGdjYy9vcHRhYnMuYy5qagkyMDA3LTAyLTIwIDIyOjM5OjEyLjAwMDAw MDAwMCArMDEwMAotKysrIGdjYy9vcHRhYnMuYwkyMDA3LTA2LTI2IDAwOjMwOjI3LjAwMDAwMDAw MCArMDIwMAotQEAgLTM2NzMsMTIgKzM2NzMsMTYgQEAgZW1pdF9jbXBfYW5kX2p1bXBfaW5zbnMg KHJ0eCB4LCBydHggeSwgZQotICAgLyogU3dhcCBvcGVyYW5kcyBhbmQgY29uZGl0aW9uIHRvIGVu c3VyZSBjYW5vbmljYWwgUlRMLiAgKi8KLSAgIGlmIChzd2FwX2NvbW11dGF0aXZlX29wZXJhbmRz X3AgKHgsIHkpKQotICAgICB7Ci0tICAgICAgLyogSWYgd2UncmUgbm90IGVtaXR0aW5nIGEgYnJh bmNoLCB0aGlzIG1lYW5zIHNvbWUgY2FsbGVyCi0tICAgICAgICAgaXMgb3V0IG9mIHN5bmMuICAq LwotLSAgICAgIGdjY19hc3NlcnQgKGxhYmVsKTsKLSsgICAgICBlbnVtIHJ0eF9jb2RlIHN3YXBw ZWRfY29tcGFyaXNvbiA9IHN3YXBfY29uZGl0aW9uIChjb21wYXJpc29uKTsKLSsKLSsgICAgICAv KiBJZiB3ZSdyZSBub3QgZW1pdHRpbmcgYSBicmFuY2gsIGNhbGxlcnMgYXJlIHJlcXVpcmVkIHRv IHBhc3MKLSsJIG9wZXJhbmRzIGluIGFuIG9yZGVyIGNvbmZvcm1pbmcgdG8gY2Fub25pY2FsIFJU TC4gIFdlIHJlbGF4IHRoaXMKLSsJIGZvciBjb21tdXRhdGl2ZSBjb21wYXJzaW9ucyBzbyBjYWxs ZXJzIHVzaW5nIEVRIGRvbid0IG5lZWQgdG8gZG8KLSsJIHN3YXBwaW5nIGJ5IGhhbmQuICAqLwot KyAgICAgIGdjY19hc3NlcnQgKGxhYmVsIHx8IHN3YXBwZWRfY29tcGFyaXNvbiA9PSBjb21wYXJp c29uKTsKLSAKLSAgICAgICBvcDAgPSB5LCBvcDEgPSB4OwotLSAgICAgIGNvbXBhcmlzb24gPSBz d2FwX2NvbmRpdGlvbiAoY29tcGFyaXNvbik7Ci0rICAgICAgY29tcGFyaXNvbiA9IHN3YXBwZWRf Y29tcGFyaXNvbjsKLSAgICAgfQotIAotICNpZmRlZiBIQVZFX2NjMAotLS0tIGdjYy9ydGxhbmFs LmMuamoJMjAwNy0wMi0yMCAyMjozOToxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvcnRsYW5h bC5jCTIwMDctMDYtMjYgMDA6Mjg6NTYuMDAwMDAwMDAwICswMjAwCi1AQCAtMjg5MCw5ICsyODkw LDkgQEAgY29tbXV0YXRpdmVfb3BlcmFuZF9wcmVjZWRlbmNlIChydHggb3ApCi0gICAKLSAgIC8q IENvbnN0YW50cyBhbHdheXMgY29tZSB0aGUgc2Vjb25kIG9wZXJhbmQuICBQcmVmZXIgIm5pY2Ui IGNvbnN0YW50cy4gICovCi0gICBpZiAoY29kZSA9PSBDT05TVF9JTlQpCi0tICAgIHJldHVybiAt NzsKLSsgICAgcmV0dXJuIC0xMDsKLSAgIGlmIChjb2RlID09IENPTlNUX0RPVUJMRSkKLS0gICAg cmV0dXJuIC02OwotKyAgICByZXR1cm4gLTk7Ci0gICBvcCA9IGF2b2lkX2NvbnN0YW50X3Bvb2xf cmVmZXJlbmNlIChvcCk7Ci0gICBjb2RlID0gR0VUX0NPREUgKG9wKTsKLSAKLUBAIC0yOTAwLDI2 ICsyOTAwLDMxIEBAIGNvbW11dGF0aXZlX29wZXJhbmRfcHJlY2VkZW5jZSAocnR4IG9wKQotICAg ICB7Ci0gICAgIGNhc2UgUlRYX0NPTlNUX09CSjoKLSAgICAgICBpZiAoY29kZSA9PSBDT05TVF9J TlQpCi0tICAgICAgICByZXR1cm4gLTU7Ci0rCXJldHVybiAtODsKLSAgICAgICBpZiAoY29kZSA9 PSBDT05TVF9ET1VCTEUpCi0tICAgICAgICByZXR1cm4gLTQ7Ci0tICAgICAgcmV0dXJuIC0zOwot KwlyZXR1cm4gLTc7Ci0rICAgICAgcmV0dXJuIC02OwotIAotICAgICBjYXNlIFJUWF9FWFRSQToK LSAgICAgICAvKiBTVUJSRUdzIG9mIG9iamVjdHMgc2hvdWxkIGNvbWUgc2Vjb25kLiAgKi8KLSAg ICAgICBpZiAoY29kZSA9PSBTVUJSRUcgJiYgT0JKRUNUX1AgKFNVQlJFR19SRUcgKG9wKSkpCi0t ICAgICAgICByZXR1cm4gLTI7Ci0rCXJldHVybiAtNTsKLSAKLSAgICAgICBpZiAoIUNPTlNUQU5U X1AgKG9wKSkKLSAgICAgICAgIHJldHVybiAwOwotICAgICAgIGVsc2UKLSAJLyogQXMgZm9yIFJU WF9DT05TVF9PQkouICAqLwotLQlyZXR1cm4gLTM7Ci0rCXJldHVybiAtNjsKLSAKLSAgICAgY2Fz ZSBSVFhfT0JKOgotICAgICAgIC8qIENvbXBsZXggZXhwcmVzc2lvbnMgc2hvdWxkIGJlIHRoZSBm aXJzdCwgc28gZGVjcmVhc2UgcHJpb3JpdHkKLSAgICAgICAgICBvZiBvYmplY3RzLiAgKi8KLS0g ICAgICByZXR1cm4gLTE7Ci0rICAgICAgaWYgKCFUQVJHRVRfSU5ERVhfT1BFUkFORF9GSVJTVCkK LSsJcmV0dXJuIC0xOwotKyAgICAgIGlmIChSRUdfUCAob3ApKQotKwlyZXR1cm4gKFJFR19QT0lO VEVSIChvcCkpID8gLTEgOiAtMzsKLSsgICAgICBlbHNlCi0rCXJldHVybiAoTUVNX1AgKG9wKSAm JiBNRU1fUE9JTlRFUiAob3ApKSA/IC0yIDogLTQ7Ci0gCi0gICAgIGNhc2UgUlRYX0NPTU1fQVJJ VEg6Ci0gICAgICAgLyogUHJlZmVyIG9wZXJhbmRzIHRoYXQgYXJlIHRoZW1zZWx2ZXMgY29tbXV0 YXRpdmUgdG8gYmUgZmlyc3QuCi1AQCAtMjk0OSw4ICsyOTU0LDE2IEBAIGNvbW11dGF0aXZlX29w ZXJhbmRfcHJlY2VkZW5jZSAocnR4IG9wKQotIGludAotIHN3YXBfY29tbXV0YXRpdmVfb3BlcmFu ZHNfcCAocnR4IHgsIHJ0eCB5KQotIHsKLS0gIHJldHVybiAoY29tbXV0YXRpdmVfb3BlcmFuZF9w cmVjZWRlbmNlICh4KQotLQkgIDwgY29tbXV0YXRpdmVfb3BlcmFuZF9wcmVjZWRlbmNlICh5KSk7 Ci0rICBpbnQgcmVzdWx0ID0gKGNvbW11dGF0aXZlX29wZXJhbmRfcHJlY2VkZW5jZSAoeCkKLSsJ CS0gY29tbXV0YXRpdmVfb3BlcmFuZF9wcmVjZWRlbmNlICh5KSk7Ci0rICBpZiAoIVRBUkdFVF9J TkRFWF9PUEVSQU5EX0ZJUlNUIHx8IHJlc3VsdCkKLSsgICAgcmV0dXJuIHJlc3VsdCA8IDA7Ci0r Ci0rICAvKiBHcm91cCB0b2dldGhlciBlcXVhbCBSRUdzIHRvIGRvIG1vcmUgc2ltcGxpZmljYXRp b24uICAqLwotKyAgaWYgKFJFR19QICh4KSAmJiBSRUdfUCAoeSkpCi0rICAgIHJldHVybiBSRUdO TyAoeCkgPiBSRUdOTyAoeSk7Ci0rCi0rICByZXR1cm4gMDsKLSB9Ci0gCi0gLyogUmV0dXJuIDEg aWYgWCBpcyBhbiBhdXRvaW5jcmVtZW50IHNpZGUgZWZmZWN0IGFuZCB0aGUgcmVnaXN0ZXIgaXMK LS0tLSBnY2MvdHJlZS1zc2EtYWRkcmVzcy5jLmpqCTIwMDctMDItMjAgMjI6Mzk6MTIuMDAwMDAw MDAwICswMTAwCi0rKysgZ2NjL3RyZWUtc3NhLWFkZHJlc3MuYwkyMDA3LTA2LTI2IDAwOjI5OjQ5 LjAwMDAwMDAwMCArMDIwMAotQEAgLTEyNCw3ICsxMjQsOSBAQCBnZW5fYWRkcl9ydHggKHJ0eCBz eW1ib2wsIHJ0eCBiYXNlLCBydHggCi0gICBpZiAoYmFzZSkKLSAgICAgewotICAgICAgIGlmICgq YWRkcikKLS0JKmFkZHIgPSBnZW5fcnR4X1BMVVMgKFBtb2RlLCAqYWRkciwgYmFzZSk7Ci0rCSph ZGRyID0gKFRBUkdFVF9JTkRFWF9PUEVSQU5EX0ZJUlNUCi0rCQkgPyBzaW1wbGlmeV9nZW5fYmlu YXJ5IChQTFVTLCBQbW9kZSwgYmFzZSwgKmFkZHIpCi0rCQkgOiBnZW5fcnR4X1BMVVMgKFBtb2Rl LCAqYWRkciwgYmFzZSkpOwotICAgICAgIGVsc2UKLSAJKmFkZHIgPSBiYXNlOwotICAgICB9Cgpk aWZmIC0tZ2l0IGEvZ2NjNDEtcHIyODc1NS5wYXRjaCBiL2djYzQxLXByMjg3NTUucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2YmI5MGEuLjAwMDAwMDAKLS0tIGEvZ2NjNDEt cHIyODc1NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzMCArMCwwIEBACi0yMDA3LTA5LTIz ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIG1pZGRsZS1lbmQvMjg3 NTUKLQkqIGV4cHIuYyAoZXhwYW5kX2NvbnN0cnVjdG9yKTogTmV3IGZ1bmN0aW9uLgotCShleHBh bmRfZXhwcl9yZWFsXzEpIDxjYXNlIENPTlNUUlVDVE9SPjogQ2FsbCBpdC4KLQkoZXhwYW5kX2V4 cHJfcmVhbF8xKSA8Y2FzZSBBUlJBWV9SRUY+OiBDYWxsIGl0IGlmIFZBTFVFIGlzCi0JQ09OU1RS VUNUT1IuCi0KLQkqIGdjYy5kZy9wcjI4NzU1LmM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL2V4cHIu YwkocmV2aXNpb24gMTI4Njg0KQotKysrIGdjYy9leHByLmMJKHJldmlzaW9uIDEyODY4NSkKLUBA IC02NDM1LDYgKzY0MzUsODkgQEAgZXhwYW5kX2V4cHJfYWRkcl9leHByICh0cmVlIGV4cCwgcnR4 IHRhcgotICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi0rLyogR2VuZXJhdGUgY29kZSBmb3IgY29t cHV0aW5nIENPTlNUUlVDVE9SIEVYUC4KLSsgICBBbiBydHggZm9yIHRoZSBjb21wdXRlZCB2YWx1 ZSBpcyByZXR1cm5lZC4gIElmIEFWT0lEX1RFTVBfTUVNCi0rICAgaXMgVFJVRSwgaW5zdGVhZCBv ZiBjcmVhdGluZyBhIHRlbXBvcmFyeSB2YXJpYWJsZSBpbiBtZW1vcnkKLSsgICBOVUxMIGlzIHJl dHVybmVkIGFuZCB0aGUgY2FsbGVyIG5lZWRzIHRvIGhhbmRsZSBpdCBkaWZmZXJlbnRseS4gICov Ci0rCi0rc3RhdGljIHJ0eAotK2V4cGFuZF9jb25zdHJ1Y3RvciAodHJlZSBleHAsIHJ0eCB0YXJn ZXQsIGVudW0gZXhwYW5kX21vZGlmaWVyIG1vZGlmaWVyLAotKwkJICAgIGJvb2wgYXZvaWRfdGVt cF9tZW0pCi0rewotKyAgdHJlZSB0eXBlID0gVFJFRV9UWVBFIChleHApOwotKyAgZW51bSBtYWNo aW5lX21vZGUgbW9kZSA9IFRZUEVfTU9ERSAodHlwZSk7Ci0rCi0rICAvKiBUcnkgdG8gYXZvaWQg Y3JlYXRpbmcgYSB0ZW1wb3JhcnkgYXQgYWxsLiAgVGhpcyBpcyBwb3NzaWJsZQotKyAgICAgaWYg YWxsIG9mIHRoZSBpbml0aWFsaXplciBpcyB6ZXJvLgotKyAgICAgRklYTUU6IHRyeSB0byBoYW5k bGUgYWxsIFswLi4yNTVdIGluaXRpYWxpemVycyB3ZSBjYW4gaGFuZGxlCi0rICAgICB3aXRoIG1l bXNldC4gICovCi0rICBpZiAoVFJFRV9TVEFUSUMgKGV4cCkKLSsgICAgICAmJiAhVFJFRV9BRERS RVNTQUJMRSAoZXhwKQotKyAgICAgICYmIHRhcmdldCAhPSAwICYmIG1vZGUgPT0gQkxLbW9kZQot KyAgICAgICYmIGFsbF96ZXJvc19wIChleHApKQotKyAgICB7Ci0rICAgICAgY2xlYXJfc3RvcmFn ZSAodGFyZ2V0LCBleHByX3NpemUgKGV4cCksIEJMT0NLX09QX05PUk1BTCk7Ci0rICAgICAgcmV0 dXJuIHRhcmdldDsKLSsgICAgfQotKwotKyAgLyogQWxsIGVsdHMgc2ltcGxlIGNvbnN0YW50cyA9 PiByZWZlciB0byBhIGNvbnN0YW50IGluIG1lbW9yeS4gIEJ1dAotKyAgICAgaWYgdGhpcyBpcyBh IG5vbi1CTEttb2RlIG1vZGUsIGxldCBpdCBzdG9yZSBhIGZpZWxkIGF0IGEgdGltZQotKyAgICAg c2luY2UgdGhhdCBzaG91bGQgbWFrZSBhIENPTlNUX0lOVCBvciBDT05TVF9ET1VCTEUgd2hlbiB3 ZQotKyAgICAgZm9sZC4gIExpa2V3aXNlLCBpZiB3ZSBoYXZlIGEgdGFyZ2V0IHdlIGNhbiB1c2Us IGl0IGlzIGJlc3QgdG8KLSsgICAgIHN0b3JlIGRpcmVjdGx5IGludG8gdGhlIHRhcmdldCB1bmxl c3MgdGhlIHR5cGUgaXMgbGFyZ2UgZW5vdWdoCi0rICAgICB0aGF0IG1lbWNweSB3aWxsIGJlIHVz ZWQuICBJZiB3ZSBhcmUgbWFraW5nIGFuIGluaXRpYWxpemVyIGFuZAotKyAgICAgYWxsIG9wZXJh bmRzIGFyZSBjb25zdGFudCwgcHV0IGl0IGluIG1lbW9yeSBhcyB3ZWxsLgotKwotKyAgICAgRklY TUU6IEF2b2lkIHRyeWluZyB0byBmaWxsIHZlY3RvciBjb25zdHJ1Y3RvcnMgcGllY2UtbWVhbC4K LSsgICAgIE91dHB1dCB0aGVtIHdpdGggb3V0cHV0X2NvbnN0YW50X2RlZiBiZWxvdyB1bmxlc3Mg d2UncmUgc3VyZQotKyAgICAgdGhleSdyZSB6ZXJvcy4gIFRoaXMgc2hvdWxkIGdvIGF3YXkgd2hl biB2ZWN0b3IgaW5pdGlhbGl6ZXJzCi0rICAgICBhcmUgdHJlYXRlZCBsaWtlIFZFQ1RPUl9DU1Qg aW5zdGVhZCBvZiBhcnJheXMuICAqLwotKyAgaWYgKChUUkVFX1NUQVRJQyAoZXhwKQotKyAgICAg ICAmJiAoKG1vZGUgPT0gQkxLbW9kZQotKwkgICAgJiYgISAodGFyZ2V0ICE9IDAgJiYgc2FmZV9m cm9tX3AgKHRhcmdldCwgZXhwLCAxKSkpCi0rCQkgIHx8IFRSRUVfQUREUkVTU0FCTEUgKGV4cCkK LSsJCSAgfHwgKGhvc3RfaW50ZWdlcnAgKFRZUEVfU0laRV9VTklUICh0eXBlKSwgMSkKLSsJCSAg ICAgICYmICghIE1PVkVfQllfUElFQ0VTX1AKLSsJCQkJICAgICAodHJlZV9sb3dfY3N0IChUWVBF X1NJWkVfVU5JVCAodHlwZSksIDEpLAotKwkJCQkgICAgICBUWVBFX0FMSUdOICh0eXBlKSkpCi0r CQkgICAgICAmJiAhIG1vc3RseV96ZXJvc19wIChleHApKSkpCi0rICAgICAgfHwgKChtb2RpZmll ciA9PSBFWFBBTkRfSU5JVElBTElaRVIgfHwgbW9kaWZpZXIgPT0gRVhQQU5EX0NPTlNUX0FERFJF U1MpCi0rCSAgJiYgVFJFRV9DT05TVEFOVCAoZXhwKSkpCi0rICAgIHsKLSsgICAgICBydHggY29u c3RydWN0b3I7Ci0rCi0rICAgICAgaWYgKGF2b2lkX3RlbXBfbWVtKQotKwlyZXR1cm4gTlVMTF9S VFg7Ci0rCi0rICAgICAgY29uc3RydWN0b3IgPSBvdXRwdXRfY29uc3RhbnRfZGVmIChleHAsIDEp OwotKwotKyAgICAgIGlmIChtb2RpZmllciAhPSBFWFBBTkRfQ09OU1RfQUREUkVTUwotKwkgICYm IG1vZGlmaWVyICE9IEVYUEFORF9JTklUSUFMSVpFUgotKwkgICYmIG1vZGlmaWVyICE9IEVYUEFO RF9TVU0pCi0rCWNvbnN0cnVjdG9yID0gdmFsaWRpemVfbWVtIChjb25zdHJ1Y3Rvcik7Ci0rCi0r ICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwotKyAgICB9Ci0rCi0rICAvKiBIYW5kbGUgY2FsbHMg dGhhdCBwYXNzIHZhbHVlcyBpbiBtdWx0aXBsZSBub24tY29udGlndW91cwotKyAgICAgbG9jYXRp b25zLiAgVGhlIElyaXggNiBBQkkgaGFzIGV4YW1wbGVzIG9mIHRoaXMuICAqLwotKyAgaWYgKHRh cmdldCA9PSAwIHx8ICEgc2FmZV9mcm9tX3AgKHRhcmdldCwgZXhwLCAxKQotKyAgICAgIHx8IEdF VF9DT0RFICh0YXJnZXQpID09IFBBUkFMTEVMIHx8IG1vZGlmaWVyID09IEVYUEFORF9TVEFDS19Q QVJNKQotKyAgICB7Ci0rICAgICAgaWYgKGF2b2lkX3RlbXBfbWVtKQotKwlyZXR1cm4gTlVMTF9S VFg7Ci0rCi0rICAgICAgdGFyZ2V0Ci0rCT0gYXNzaWduX3RlbXAgKGJ1aWxkX3F1YWxpZmllZF90 eXBlICh0eXBlLCAoVFlQRV9RVUFMUyAodHlwZSkKLSsJCQkJCQkgICAgfCAoVFJFRV9SRUFET05M WSAoZXhwKQotKwkJCQkJCSAgICAgICAqIFRZUEVfUVVBTF9DT05TVCkpKSwKLSsJCSAgICAgICAw LCBUUkVFX0FERFJFU1NBQkxFIChleHApLCAxKTsKLSsgICAgfQotKwotKyAgc3RvcmVfY29uc3Ry dWN0b3IgKGV4cCwgdGFyZ2V0LCAwLCBpbnRfZXhwcl9zaXplIChleHApKTsKLSsgIHJldHVybiB0 YXJnZXQ7Ci0rfQotKwotIAotIC8qIGV4cGFuZF9leHByOiBnZW5lcmF0ZSBjb2RlIGZvciBjb21w dXRpbmcgZXhwcmVzc2lvbiBFWFAuCi0gICAgQW4gcnR4IGZvciB0aGUgY29tcHV0ZWQgdmFsdWUg aXMgcmV0dXJuZWQuICBUaGUgdmFsdWUgaXMgbmV2ZXIgbnVsbC4KLUBAIC02ODk5LDcxICs2OTgy LDcgQEAgZXhwYW5kX2V4cHJfcmVhbF8xICh0cmVlIGV4cCwgcnR4IHRhcmdldAotIAkgIHJldHVy biBjb25zdDBfcnR4OwotIAl9Ci0gCi0tICAgICAgLyogVHJ5IHRvIGF2b2lkIGNyZWF0aW5nIGEg dGVtcG9yYXJ5IGF0IGFsbC4gIFRoaXMgaXMgcG9zc2libGUKLS0JIGlmIGFsbCBvZiB0aGUgaW5p dGlhbGl6ZXIgaXMgemVyby4KLS0JIEZJWE1FOiB0cnkgdG8gaGFuZGxlIGFsbCBbMC4uMjU1XSBp bml0aWFsaXplcnMgd2UgY2FuIGhhbmRsZQotLQkgd2l0aCBtZW1zZXQuICAqLwotLSAgICAgIGVs c2UgaWYgKFRSRUVfU1RBVElDIChleHApCi0tCSAgICAgICAmJiAhVFJFRV9BRERSRVNTQUJMRSAo ZXhwKQotLQkgICAgICAgJiYgdGFyZ2V0ICE9IDAgJiYgbW9kZSA9PSBCTEttb2RlCi0tCSAgICAg ICAmJiBhbGxfemVyb3NfcCAoZXhwKSkKLS0JewotLQkgIGNsZWFyX3N0b3JhZ2UgKHRhcmdldCwg ZXhwcl9zaXplIChleHApLCBCTE9DS19PUF9OT1JNQUwpOwotLQkgIHJldHVybiB0YXJnZXQ7Ci0t CX0KLS0KLS0gICAgICAvKiBBbGwgZWx0cyBzaW1wbGUgY29uc3RhbnRzID0+IHJlZmVyIHRvIGEg Y29uc3RhbnQgaW4gbWVtb3J5LiAgQnV0Ci0tCSBpZiB0aGlzIGlzIGEgbm9uLUJMS21vZGUgbW9k ZSwgbGV0IGl0IHN0b3JlIGEgZmllbGQgYXQgYSB0aW1lCi0tCSBzaW5jZSB0aGF0IHNob3VsZCBt YWtlIGEgQ09OU1RfSU5UIG9yIENPTlNUX0RPVUJMRSB3aGVuIHdlCi0tCSBmb2xkLiAgTGlrZXdp c2UsIGlmIHdlIGhhdmUgYSB0YXJnZXQgd2UgY2FuIHVzZSwgaXQgaXMgYmVzdCB0bwotLQkgc3Rv cmUgZGlyZWN0bHkgaW50byB0aGUgdGFyZ2V0IHVubGVzcyB0aGUgdHlwZSBpcyBsYXJnZSBlbm91 Z2gKLS0JIHRoYXQgbWVtY3B5IHdpbGwgYmUgdXNlZC4gIElmIHdlIGFyZSBtYWtpbmcgYW4gaW5p dGlhbGl6ZXIgYW5kCi0tCSBhbGwgb3BlcmFuZHMgYXJlIGNvbnN0YW50LCBwdXQgaXQgaW4gbWVt b3J5IGFzIHdlbGwuCi0tCi0tCUZJWE1FOiBBdm9pZCB0cnlpbmcgdG8gZmlsbCB2ZWN0b3IgY29u c3RydWN0b3JzIHBpZWNlLW1lYWwuCi0tCU91dHB1dCB0aGVtIHdpdGggb3V0cHV0X2NvbnN0YW50 X2RlZiBiZWxvdyB1bmxlc3Mgd2UncmUgc3VyZQotLQl0aGV5J3JlIHplcm9zLiAgVGhpcyBzaG91 bGQgZ28gYXdheSB3aGVuIHZlY3RvciBpbml0aWFsaXplcnMKLS0JYXJlIHRyZWF0ZWQgbGlrZSBW RUNUT1JfQ1NUIGluc3RlYWQgb2YgYXJyYXlzLgotLSAgICAgICovCi0tICAgICAgZWxzZSBpZiAo KFRSRUVfU1RBVElDIChleHApCi0tCQkmJiAoKG1vZGUgPT0gQkxLbW9kZQotLQkJICAgICAmJiAh ICh0YXJnZXQgIT0gMCAmJiBzYWZlX2Zyb21fcCAodGFyZ2V0LCBleHAsIDEpKSkKLS0JCSAgICB8 fCBUUkVFX0FERFJFU1NBQkxFIChleHApCi0tCQkgICAgfHwgKGhvc3RfaW50ZWdlcnAgKFRZUEVf U0laRV9VTklUICh0eXBlKSwgMSkKLS0JCQkmJiAoISBNT1ZFX0JZX1BJRUNFU19QCi0tCQkJICAg ICh0cmVlX2xvd19jc3QgKFRZUEVfU0laRV9VTklUICh0eXBlKSwgMSksCi0tCQkJICAgICBUWVBF X0FMSUdOICh0eXBlKSkpCi0tCQkJJiYgISBtb3N0bHlfemVyb3NfcCAoZXhwKSkpKQotLQkgICAg ICAgfHwgKChtb2RpZmllciA9PSBFWFBBTkRfSU5JVElBTElaRVIKLS0JCSAgICB8fCBtb2RpZmll ciA9PSBFWFBBTkRfQ09OU1RfQUREUkVTUykKLS0JCSAgICYmIFRSRUVfQ09OU1RBTlQgKGV4cCkp KQotLQl7Ci0tCSAgcnR4IGNvbnN0cnVjdG9yID0gb3V0cHV0X2NvbnN0YW50X2RlZiAoZXhwLCAx KTsKLS0KLS0JICBpZiAobW9kaWZpZXIgIT0gRVhQQU5EX0NPTlNUX0FERFJFU1MKLS0JICAgICAg JiYgbW9kaWZpZXIgIT0gRVhQQU5EX0lOSVRJQUxJWkVSCi0tCSAgICAgICYmIG1vZGlmaWVyICE9 IEVYUEFORF9TVU0pCi0tCSAgICBjb25zdHJ1Y3RvciA9IHZhbGlkaXplX21lbSAoY29uc3RydWN0 b3IpOwotLQotLQkgIHJldHVybiBjb25zdHJ1Y3RvcjsKLS0JfQotLSAgICAgIGVsc2UKLS0Jewot LQkgIC8qIEhhbmRsZSBjYWxscyB0aGF0IHBhc3MgdmFsdWVzIGluIG11bHRpcGxlIG5vbi1jb250 aWd1b3VzCi0tCSAgICAgbG9jYXRpb25zLiAgVGhlIElyaXggNiBBQkkgaGFzIGV4YW1wbGVzIG9m IHRoaXMuICAqLwotLQkgIGlmICh0YXJnZXQgPT0gMCB8fCAhIHNhZmVfZnJvbV9wICh0YXJnZXQs IGV4cCwgMSkKLS0JICAgICAgfHwgR0VUX0NPREUgKHRhcmdldCkgPT0gUEFSQUxMRUwKLS0JICAg ICAgfHwgbW9kaWZpZXIgPT0gRVhQQU5EX1NUQUNLX1BBUk0pCi0tCSAgICB0YXJnZXQKLS0JICAg ICAgPSBhc3NpZ25fdGVtcCAoYnVpbGRfcXVhbGlmaWVkX3R5cGUgKHR5cGUsCi0tCQkJCQkJICAg KFRZUEVfUVVBTFMgKHR5cGUpCi0tCQkJCQkJICAgIHwgKFRSRUVfUkVBRE9OTFkgKGV4cCkKLS0J CQkJCQkgICAgICAgKiBUWVBFX1FVQUxfQ09OU1QpKSksCi0tCQkJICAgICAwLCBUUkVFX0FERFJF U1NBQkxFIChleHApLCAxKTsKLS0KLS0JICBzdG9yZV9jb25zdHJ1Y3RvciAoZXhwLCB0YXJnZXQs IDAsIGludF9leHByX3NpemUgKGV4cCkpOwotLQkgIHJldHVybiB0YXJnZXQ7Ci0tCX0KLSsgICAg ICByZXR1cm4gZXhwYW5kX2NvbnN0cnVjdG9yIChleHAsIHRhcmdldCwgbW9kaWZpZXIsIGZhbHNl KTsKLSAKLSAgICAgY2FzZSBNSVNBTElHTkVEX0lORElSRUNUX1JFRjoKLSAgICAgY2FzZSBBTElH Tl9JTkRJUkVDVF9SRUY6Ci1AQCAtNzEwNSwxMCArNzEyNCwyNSBAQCBleHBhbmRfZXhwcl9yZWFs XzEgKHRyZWUgZXhwLCBydHggdGFyZ2V0Ci0gCQkJCQkgICAgICBmaWVsZCwgdmFsdWUpCi0gCQkg ICAgICBpZiAodHJlZV9pbnRfY3N0X2VxdWFsIChmaWVsZCwgaW5kZXgpKQotIAkJCXsKLS0JCQkg IGlmICghVFJFRV9TSURFX0VGRkVDVFMgKHZhbHVlKSkKLS0JCQkgICAgcmV0dXJuIGV4cGFuZF9l eHByIChmb2xkICh2YWx1ZSksIHRhcmdldCwgdG1vZGUsCi0tCQkJCQkJbW9kaWZpZXIpOwotLQkJ CSAgYnJlYWs7Ci0rCQkJICBpZiAoVFJFRV9TSURFX0VGRkVDVFMgKHZhbHVlKSkKLSsJCQkgICAg YnJlYWs7Ci0rCi0rCQkJICBpZiAoVFJFRV9DT0RFICh2YWx1ZSkgPT0gQ09OU1RSVUNUT1IpCi0r CQkJICAgIHsKLSsJCQkgICAgICAvKiBJZiBWQUxVRSBpcyBhIENPTlNUUlVDVE9SLCB0aGlzCi0r CQkJCSBvcHRpbWl6YXRpb24gaXMgb25seSB1c2VmdWwgaWYKLSsJCQkJIHRoaXMgZG9lc24ndCBz dG9yZSB0aGUgQ09OU1RSVUNUT1IKLSsJCQkJIGludG8gbWVtb3J5LiAgSWYgaXQgZG9lcywgaXQg aXMgbW9yZQotKwkJCQkgZWZmaWNpZW50IHRvIGp1c3QgbG9hZCB0aGUgZGF0YSBmcm9tCi0rCQkJ CSB0aGUgYXJyYXkgZGlyZWN0bHkuICAqLwotKwkJCSAgICAgIHJ0eCByZXQgPSBleHBhbmRfY29u c3RydWN0b3IgKHZhbHVlLCB0YXJnZXQsCi0rCQkJCQkJCSAgICBtb2RpZmllciwgdHJ1ZSk7Ci0r CQkJICAgICAgaWYgKHJldCA9PSBOVUxMX1JUWCkKLSsJCQkJYnJlYWs7Ci0rCQkJICAgIH0KLSsK LSsJCQkgIHJldHVybiBleHBhbmRfZXhwciAoZm9sZCAodmFsdWUpLCB0YXJnZXQsIHRtb2RlLAot KwkJCQkJICAgICAgbW9kaWZpZXIpOwotIAkJCX0KLSAJCSAgfQotIAkJZWxzZSBpZihUUkVFX0NP REUgKGluaXQpID09IFNUUklOR19DU1QpCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIyODc1 NS5jCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMjg3NTUuYwkocmV2 aXNpb24gMTI4Njg1KQotQEAgLTAsMCArMSwyMiBAQAotKy8qIFBSIG1pZGRsZS1lbmQvMjg3NTUg Ki8KLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU9zIiB9ICov Ci0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICIyMTEyNTQzNzI2XHw3ZGVh ZGJlZSIgMiB9IH0gKi8KLSsKLStzdHJ1Y3QgUwotK3sKLSsgIHZvaWQgKnMxOwotKyAgdW5zaWdu ZWQgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczgsIHM5LCBzMTAsIHMxMSwgczEyLCBzMTMsIHMx NDsKLSt9OwotKwotK2NvbnN0IHN0cnVjdCBTIGFycmF5W10gPSB7Ci0rICB7ICh2b2lkICopIDAs IDYwLCA2NDAsIDIxMTI1NDM3MjYsIDM5NjgyLCA0OCwgMTYsIDMzLCAxMCwgOTYsIDIsIDAsIDAs IDQgfSwKLSsgIHsgKHZvaWQgKikgMCwgNjAsIDIxMTI1NDM3MjYsIDE5MiwgMTgyNTEsIDE2LCAz MywgMTAsIDk2LCAyLCAwLCAwLCA0LCAyMTIgfQotK307Ci0rCi0rdm9pZAotK2ZvbyAoc3RydWN0 IFMgKngpCi0rewotKyAgeFswXSA9IGFycmF5WzBdOwotKyAgeFs1XSA9IGFycmF5WzFdOwotK30K CmRpZmYgLS1naXQgYS9nY2M0MS1wcjI5MjI1LnBhdGNoIGIvZ2NjNDEtcHIyOTIyNS5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk1Y2Q4Yy4uMDAwMDAwMAotLS0gYS9nY2M0 MS1wcjI5MjI1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotMjAwNy0xMS0x MyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQlQUiBjKysvMjkyMjUKLQkq IGNhbGwuYyAoYnVpbGRfbmV3X29wKTogQ2FsbCByZXNvbHZlX2FyZ3MgYmVmb3JlIGNhbGxpbmcK LQlidWlsZF9vdmVyX2NhbGwuCi0KLQkqIGcrKy5kZy90ZW1wbGF0ZS9jcmFzaDcyLkM6IE5ldyB0 ZXN0LgotCi0tLS0gZ2NjL2NwL2NhbGwuYwkocmV2aXNpb24gMTMwMTI1KQotKysrIGdjYy9jcC9j YWxsLmMJKHJldmlzaW9uIDEzMDEyNikKLUBAIC0zOTE4LDcgKzM5MTgsMTAgQEAgYnVpbGRfbmV3 X29wIChlbnVtIHRyZWVfY29kZSBjb2RlLCBpbnQgZgotIAkgIGlmIChvdmVybG9hZGVkX3ApCi0g CSAgICAqb3ZlcmxvYWRlZF9wID0gdHJ1ZTsKLSAKLS0JICByZXN1bHQgPSBidWlsZF9vdmVyX2Nh bGwgKGNhbmQsIExPT0tVUF9OT1JNQUwpOwotKwkgIGlmIChyZXNvbHZlX2FyZ3MgKGFyZ2xpc3Qp ID09IGVycm9yX21hcmtfbm9kZSkKLSsJICAgIHJlc3VsdCA9IGVycm9yX21hcmtfbm9kZTsKLSsJ ICBlbHNlCi0rCSAgICByZXN1bHQgPSBidWlsZF9vdmVyX2NhbGwgKGNhbmQsIExPT0tVUF9OT1JN QUwpOwotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvdGVt cGxhdGUvY3Jhc2g3Mi5DCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL3Rl bXBsYXRlL2NyYXNoNzIuQwkocmV2aXNpb24gMTMwMTI2KQotQEAgLTAsMCArMSwyNSBAQAotKy8v IFBSIGMrKy8yOTIyNQotKy8vIHsgZGctZG8gY29tcGlsZSB9Ci0rCi0rdGVtcGxhdGUgPHR5cGVu YW1lIEwsIHR5cGVuYW1lIFI+IGJvb2wgb3BlcmF0b3I8IChMIHgsIFIgeSk7Ci0rc3RydWN0IFQg eyBpbnQgdCAoKTsgfTsKLStjbGFzcyBTIHt9OwotKwotK3N0cnVjdCBVCi0rewotKyAgIHR5cGVk ZWYgaW50IChUOjoqIE0pICgpOwotKyAgIE0gbTsKLSsKLSsgICBib29sIG9wZXJhdG9yKCkgKFMg JngpCi0rICAgewotKyAgICAgVCBhOwotKyAgICAgcmV0dXJuIChhLiptKSA8IHg7CS8vIHsgZGct ZXJyb3IgImludmFsaWQgdXNlIG9mIG5vbi1zdGF0aWMgbWVtYmVyIiB9Ci0rICAgfQotK307Ci0r Ci0rdm9pZCBmb28gKFMgJngpCi0rewotKyAgVSBtOwotKyAgbS5tID0gJlQ6OnQ7Ci0rICBtICh4 KTsKLSt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcHIyOTcxMi5wYXRjaCBiL2djYzQxLXByMjk3MTIu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMTMwYzguLjAwMDAwMDAKLS0t IGEvZ2NjNDEtcHIyOTcxMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLTIw MDctMDEtMTUgIFBhdWwgVGhvbWFzICA8cGF1bHRAZ2NjLmdudS5vcmc+Ci0KLQlQUiBmb3J0cmFu LzI5NzEyCi0JKiByZXNvbHZlLmMgKHJlc29sdmVfZnVuY3Rpb24pOiBPbmx5IGEgcmVmZXJlbmNl IHRvIHRoZSBmaW5hbAotCWRpbWVuc2lvbiBvZiBhbiBhc3N1bWVkIHNpemUgYXJyYXkgaXMgYW4g ZXJyb3IgaW4gYW4gaW5xdWlyeQotCWZ1bmN0aW9uLgotCi0JKiBnZm9ydHJhbi5kZy9ib3VuZF8y LmY5MDogUmVpbnN0YXRlIGNvbW1lbnRlZCBvdXQgbGluZS4KLQkqIGdmb3J0cmFuLmRnL2luaXRp YWxpemF0aW9uXzEuZjkwOiBDaGFuZ2Ugd2FybmluZy4KLQotLS0tIGdjYy9mb3J0cmFuL3Jlc29s dmUuYwkocmV2aXNpb24gMTIwNzg5KQotKysrIGdjYy9mb3J0cmFuL3Jlc29sdmUuYwkocmV2aXNp b24gMTIwNzkwKQotQEAgLTE0OTgsMTAgKzE0OTgsMTYgQEAgcmVzb2x2ZV9mdW5jdGlvbiAoZ2Zj X2V4cHIgKiBleHByKQotIAkgICAgCi0gICAgICAgZm9yIChhcmcgPSBleHByLT52YWx1ZS5mdW5j dGlvbi5hY3R1YWw7IGFyZzsgYXJnID0gYXJnLT5uZXh0KQotIAl7Ci0tCSAgaWYgKGlucXVpcnkg JiYgYXJnLT5uZXh0ICE9IE5VTEwgJiYgYXJnLT5uZXh0LT5leHByCi0tCQkmJiBhcmctPm5leHQt PmV4cHItPmV4cHJfdHlwZSAhPSBFWFBSX0NPTlNUQU5UKQotLQkgICAgYnJlYWs7Ci0tCSAgCi0r CSAgaWYgKGlucXVpcnkgJiYgYXJnLT5uZXh0ICE9IE5VTEwgJiYgYXJnLT5uZXh0LT5leHByKQot KwkgICAgewotKwkgICAgICBpZiAoYXJnLT5uZXh0LT5leHByLT5leHByX3R5cGUgIT0gRVhQUl9D T05TVEFOVCkKLSsJCWJyZWFrOwotKwotKwkgICAgICBpZiAoKGludCltcHpfZ2V0X3NpIChhcmct Pm5leHQtPmV4cHItPnZhbHVlLmludGVnZXIpCi0rCQkJPCBhcmctPmV4cHItPnJhbmspCi0rCQli cmVhazsKLSsJICAgIH0KLSsKLSAJICBpZiAoYXJnLT5leHByICE9IE5VTEwKLSAJCSYmIGFyZy0+ ZXhwci0+cmFuayA+IDAKLSAJCSYmIHJlc29sdmVfYXNzdW1lZF9zaXplX2FjdHVhbCAoYXJnLT5l eHByKSkKLS0tLSBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2luaXRpYWxpemF0aW9uXzEuZjkw CShyZXZpc2lvbiAxMjA3ODkpCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9pbml0aWFs aXphdGlvbl8xLmY5MAkocmV2aXNpb24gMTIwNzkwKQotQEAgLTI3LDcgKzI3LDcgQEAgY29udGFp bnMKLSAgICAgaW50ZWdlciA6OiBsMSA9IGxlbiAoY2gxKSAgICAgISB7IGRnLXdhcm5pbmcgImFz c3VtZWQgY2hhcmFjdGVyIGxlbmd0aCB2YXJpYWJsZSIgfQotIAotICEgVGhlc2UgYXJlIHdhcm5p bmdzIGJlY2F1c2UgdGhleSBhcmUgZ2ZvcnRyYW4gZXh0ZW5zaW9ucy4KLS0gICAgaW50ZWdlciA6 OiBtMyA9IHNpemUgKHgsIDEpICAgISB7IGRnLXdhcm5pbmcgInVwcGVyIGJvdW5kIGluIHRoZSBs YXN0IGRpbWVuc2lvbiIgfQotKyAgICBpbnRlZ2VyIDo6IG0zID0gc2l6ZSAoeCwgMSkgICAhIHsg ZGctd2FybmluZyAiRXZhbHVhdGlvbiBvZiBub25zdGFuZGFyZCBpbml0aWFsaXphdGlvbiIgfQot ICAgICBpbnRlZ2VyIDo6IG00KDIpID0gc2hhcGUgKHopICAhIHsgZGctd2FybmluZyAiRXZhbHVh dGlvbiBvZiBub25zdGFuZGFyZCBpbml0aWFsaXphdGlvbiIgfQotIAotICEgVGhpcyBkb2VzIG5v dCBkZXBlbmQgb24gbm9uLWNvbnN0YW50IHByb3BlcnRpZXMuCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9ib3VuZF8yLmY5MAkocmV2aXNpb24gMTIwNzg5KQotKysrIGdjYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvYm91bmRfMi5mOTAJKHJldmlzaW9uIDEyMDc5MCkKLUBAIC0xOTQsNyAr MTk0LDcgQEAgY29udGFpbnMKLSAgIHN1YnJvdXRpbmUgZm9vICh4LG4pCi0gICAgIGludGVnZXIg OjogeCg3LG4sMiwqKSwgbgotIAotLSAgICAhaWYgKHVib3VuZCh4LDEpIC89IDcgLm9yLiB1Ym91 bmQoeCwyKSAvPSA0IC5vci4gdWJvdW5kKHgsMykgLz0gMikgY2FsbCBhYm9ydAotKyAgICBpZiAo dWJvdW5kKHgsMSkgLz0gNyAub3IuIHVib3VuZCh4LDIpIC89IDQgLm9yLiB1Ym91bmQoeCwzKSAv PSAyKSBjYWxsIGFib3J0Ci0gICBlbmQgc3Vicm91dGluZSBmb28KLSAKLSAgIHN1YnJvdXRpbmUg amFja2FsIChiLCBjKQoKZGlmZiAtLWdpdCBhL2djYzQxLXByMzAyOTMucGF0Y2ggYi9nY2M0MS1w cjMwMjkzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjg1NDlhLi4wMDAw MDAwCi0tLSBhL2djYzQxLXByMzAyOTMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAs MCBAQAotMjAwNy0xMS0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQlQ UiBjKysvMzAyOTMKLQlQUiBjKysvMzAyOTQKLQkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBE aXNhbGxvdyB2YXJpYWJsZSBvciBmaWVsZAotCWRlZmluaXRpb25zIGlmIGV4dGVybiAiSmF2YSIg YWdncmVnYXRlcy4KLQkoZ3Jva3Bhcm1zKTogRGlzYWxsb3cgcGFyYW1ldGVycyB3aXRoIGV4dGVy biAiSmF2YSIKLQlhZ2dyZWdhdGVzLgotCShjaGVja19mdW5jdGlvbl90eXBlKTogRGlzYWxsb3cg ZnVuY3Rpb24gcmV0dXJuIHZhbHVlcwotCXdpdGggZXh0ZXJuICJKYXZhIiBhZ2dyZWdhdGVzLgot CSogaW5pdC5jIChidWlsZF9uZXdfMSk6IERpc2FsbG93IHBsYWNlbWVudCBuZXcgd2l0aAotCWV4 dGVybiAiSmF2YSIgYWdncmVnYXRlcy4KLQotCSogZysrLmRnL2V4dC9qYXZhLTIuQzogTmV3IHRl c3QuCi0KLS0tLSBnY2MvY3AvZGVjbC5jLmpqCTIwMDctMTEtMTkgMTc6NDY6NDEuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2NjL2NwL2RlY2wuYwkyMDA3LTExLTIyIDEzOjM0OjUyLjAwMDAwMDAwMCAr MDEwMAotQEAgLTUzNDksNiArNTM0OSwyMCBAQCBjcF9maW5pc2hfZGVjbCAodHJlZSBkZWNsLCB0 cmVlIGluaXQsIGJvCi0gCSAgICAgaXMgKm5vdCogZGVmaW5lZC4gICovCi0gCSAgJiYgKCFERUNM X0VYVEVSTkFMIChkZWNsKSB8fCBpbml0KSkKLSAJewotKwkgIGlmIChUWVBFX0ZPUl9KQVZBICh0 eXBlKSAmJiBJU19BR0dSX1RZUEUgKHR5cGUpKQotKwkgICAgewotKwkgICAgICB0cmVlIGpjbGFz cwotKwkJPSBJREVOVElGSUVSX0dMT0JBTF9WQUxVRSAoZ2V0X2lkZW50aWZpZXIgKCJqY2xhc3Mi KSk7Ci0rCSAgICAgIC8qIEFsbG93IGxpYmphdmEvcHJpbXMuY2MgZGVmaW5lIHByaW1pdGl2ZSBj bGFzc2VzLiAgKi8KLSsJICAgICAgaWYgKGluaXQgIT0gTlVMTF9UUkVFCi0rCQkgIHx8IGpjbGFz cyA9PSBOVUxMX1RSRUUKLSsJCSAgfHwgVFJFRV9DT0RFIChqY2xhc3MpICE9IFRZUEVfREVDTAot KwkJICB8fCAhUE9JTlRFUl9UWVBFX1AgKFRSRUVfVFlQRSAoamNsYXNzKSkKLSsJCSAgfHwgIXNh bWVfdHlwZV9pZ25vcmluZ190b3BfbGV2ZWxfcXVhbGlmaWVyc19wCi0rCQkJCQkodHlwZSwgVFJF RV9UWVBFIChUUkVFX1RZUEUgKGpjbGFzcykpKSkKLSsJCWVycm9yICgiSmF2YSBvYmplY3QgJXFE IG5vdCBhbGxvY2F0ZWQgd2l0aCAlPG5ldyU+IiwgZGVjbCk7Ci0rCSAgICAgIGluaXQgPSBOVUxM X1RSRUU7Ci0rCSAgICB9Ci0gCSAgaWYgKGluaXQpCi0gCSAgICB7Ci0gCSAgICAgIERFQ0xfTk9O VFJJVklBTExZX0lOSVRJQUxJWkVEX1AgKGRlY2wpID0gMTsKLUBAIC01NDE5LDYgKzU0MzMsOSBA QCBjcF9maW5pc2hfZGVjbCAodHJlZSBkZWNsLCB0cmVlIGluaXQsIGJvCi0gICAgICAgZWxzZSBp ZiAoVFJFRV9DT0RFICh0eXBlKSA9PSBBUlJBWV9UWVBFKQotIAlsYXlvdXRfdHlwZSAodHlwZSk7 Ci0gICAgIH0KLSsgIGVsc2UgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gRklFTERfREVDTAotKwkg ICAmJiBUWVBFX0ZPUl9KQVZBICh0eXBlKSAmJiBJU19BR0dSX1RZUEUgKHR5cGUpKQotKyAgICBl cnJvciAoIm5vbi1zdGF0aWMgZGF0YSBtZW1iZXIgJXFEIGhhcyBKYXZhIGNsYXNzIHR5cGUiLCBk ZWNsKTsKLSAKLSAgIC8qIEFkZCB0aGlzIGRlY2xhcmF0aW9uIHRvIHRoZSBzdGF0ZW1lbnQtdHJl ZS4gIFRoaXMgbmVlZHMgdG8gaGFwcGVuCi0gICAgICBhZnRlciB0aGUgY2FsbCB0byBjaGVja19p bml0aWFsaXplciBzbyB0aGF0IHRoZSBERUNMX0VYUFIgZm9yIGEKLUBAIC04OTkzLDYgKzkwMTAs MTYgQEAgZ3Jva3Bhcm1zIChjcF9wYXJhbWV0ZXJfZGVjbGFyYXRvciAqZmlycwotIAkgIFRSRUVf VFlQRSAoZGVjbCkgPSBlcnJvcl9tYXJrX25vZGU7Ci0gCX0KLSAKLSsgICAgICBpZiAodHlwZSAh PSBlcnJvcl9tYXJrX25vZGUKLSsJICAmJiBUWVBFX0ZPUl9KQVZBICh0eXBlKQotKwkgICYmIElT X0FHR1JfVFlQRSAodHlwZSkpCi0rCXsKLSsJICBlcnJvciAoInBhcmFtZXRlciAlcUQgaGFzIEph dmEgY2xhc3MgdHlwZSIsIGRlY2wpOwotKwkgIHR5cGUgPSBlcnJvcl9tYXJrX25vZGU7Ci0rCSAg VFJFRV9UWVBFIChkZWNsKSA9IGVycm9yX21hcmtfbm9kZTsKLSsJICBpbml0ID0gTlVMTF9UUkVF OwotKwl9Ci0rCi0gICAgICAgaWYgKHR5cGUgIT0gZXJyb3JfbWFya19ub2RlKQotIAl7Ci0gCSAg LyogVG9wLWxldmVsIHF1YWxpZmllcnMgb24gdGhlIHBhcmFtZXRlcnMgYXJlCi1AQCAtMTA0NjUs MTEgKzEwNDkyLDE1IEBAIGNoZWNrX2Z1bmN0aW9uX3R5cGUgKHRyZWUgZGVjbCwgdHJlZSBjdXIK LSAKLSAgIGlmIChkZXBlbmRlbnRfdHlwZV9wIChyZXR1cm5fdHlwZSkpCi0gICAgIHJldHVybjsK LS0gIGlmICghQ09NUExFVEVfT1JfVk9JRF9UWVBFX1AgKHJldHVybl90eXBlKSkKLSsgIGlmICgh Q09NUExFVEVfT1JfVk9JRF9UWVBFX1AgKHJldHVybl90eXBlKQotKyAgICAgIHx8IChUWVBFX0ZP Ul9KQVZBIChyZXR1cm5fdHlwZSkgJiYgSVNfQUdHUl9UWVBFIChyZXR1cm5fdHlwZSkpKQotICAg ICB7Ci0gICAgICAgdHJlZSBhcmdzID0gVFlQRV9BUkdfVFlQRVMgKGZudHlwZSk7Ci0tCSAgCi0t ICAgICAgZXJyb3IgKCJyZXR1cm4gdHlwZSAlcSNUIGlzIGluY29tcGxldGUiLCByZXR1cm5fdHlw ZSk7Ci0rCi0rICAgICAgaWYgKCFDT01QTEVURV9PUl9WT0lEX1RZUEVfUCAocmV0dXJuX3R5cGUp KQotKwllcnJvciAoInJldHVybiB0eXBlICVxI1QgaXMgaW5jb21wbGV0ZSIsIHJldHVybl90eXBl KTsKLSsgICAgICBlbHNlCi0rCWVycm9yICgicmV0dXJuIHR5cGUgaGFzIEphdmEgY2xhc3MgdHlw ZSAlcSNUIiwgcmV0dXJuX3R5cGUpOwotIAotICAgICAgIC8qIE1ha2UgaXQgcmV0dXJuIHZvaWQg aW5zdGVhZC4gICovCi0gICAgICAgaWYgKFRSRUVfQ09ERSAoZm50eXBlKSA9PSBNRVRIT0RfVFlQ RSkKLS0tLSBnY2MvY3AvaW5pdC5jLmpqCTIwMDctMDktMjAgMjE6MjY6NDguMDAwMDAwMDAwICsw MjAwCi0rKysgZ2NjL2NwL2luaXQuYwkyMDA3LTExLTIyIDEwOjQ5OjQ3LjAwMDAwMDAwMCArMDEw MAotQEAgLTE3ODYsNiArMTc4NiwxMSBAQCBidWlsZF9uZXdfMSAodHJlZSBwbGFjZW1lbnQsIHRy ZWUgdHlwZSwgCi0gCQkgICAgKGFsbG9jX2ZuLAotIAkJICAgICBidWlsZF90cmVlX2xpc3QgKE5V TExfVFJFRSwgY2xhc3NfYWRkcikpKTsKLSAgICAgfQotKyAgZWxzZSBpZiAoVFlQRV9GT1JfSkFW QSAoZWx0X3R5cGUpKQotKyAgICB7Ci0rICAgICAgZXJyb3IgKCJKYXZhIGNsYXNzICVxI1Qgb2Jq ZWN0IGFsbG9jYXRlZCB1c2luZyBwbGFjZW1lbnQgbmV3IiwgZWx0X3R5cGUpOwotKyAgICAgIHJl dHVybiBlcnJvcl9tYXJrX25vZGU7Ci0rICAgIH0KLSAgIGVsc2UKLSAgICAgewotICAgICAgIHRy ZWUgZm5uYW1lOwotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9qYXZhLTIuQy5qagkyMDA3 LTExLTIyIDEwOjU1OjEwLjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRn L2V4dC9qYXZhLTIuQwkyMDA3LTExLTIyIDEwOjU0OjU5LjAwMDAwMDAwMCArMDEwMAotQEAgLTAs MCArMSw3OSBAQAotKy8vIFBSIGMrKy8zMDI5MwotKy8vIFBSIGMrKy8zMDI5NAotKy8vIHsgZGct ZG8gY29tcGlsZSB9Ci0rLy8geyBkZy1vcHRpb25zICIiIH0KLSsKLStleHRlcm4gIkphdmEiIHsK LSt0eXBlZGVmIF9famF2YV9ieXRlIGpieXRlOwotK25hbWVzcGFjZSBqYXZhIHsKLStuYW1lc3Bh Y2UgbGFuZyB7Ci0rICBjbGFzcyBPYmplY3Qge307Ci0rICBjbGFzcyBDbGFzcyB7fTsKLSt9Ci0r fQotK3R5cGVkZWYgc3RydWN0IGphdmE6Omxhbmc6Ok9iamVjdCogam9iamVjdDsKLSt0eXBlZGVm IGphdmE6Omxhbmc6OkNsYXNzICpqY2xhc3M7Ci0rfQotK2V4dGVybiAiQyIgam9iamVjdCBfSnZf QWxsb2NPYmplY3QgKGpjbGFzcyk7Ci0rCi0rZXh0ZXJuICJKYXZhIiB7Ci0rICBzdHJ1Y3QgQSB7 IHN0YXRpYyBqYXZhOjpsYW5nOjpDbGFzcyBjbGFzcyQ7IH07Ci0rfQotKwotK3N0cnVjdCBCIHsK LSsgIEEgYTsJCS8vIHsgZGctZXJyb3IgImhhcyBKYXZhIGNsYXNzIHR5cGUiIH0KLSt9OwotKwot K3ZvaWQqIG9wZXJhdG9yIG5ldyAoX19TSVpFX1RZUEVfXywgdm9pZCopIHRocm93KCk7Ci0rY2hh ciBidWZbMTAyNF07Ci0rCi0rQSBhOwkJLy8geyBkZy1lcnJvciAibm90IGFsbG9jYXRlZCB3aXRo IiB9Ci0rQSBiID0gQSAoKTsJLy8geyBkZy1lcnJvciAibm90IGFsbG9jYXRlZCB3aXRoIiB9Ci0r QSAqYyA9IG5ldyAoKHZvaWQgKikgYnVmKSBBICgpOwkvLyB7IGRnLWVycm9yICJ1c2luZyBwbGFj ZW1lbnQgbmV3IiB9Ci0rQSAqZCA9IG5ldyBBICgpOwotK2pieXRlIGUgPSA2OwotKwotK2NvbnN0 IEEgZm4xICgpCS8vIHsgZGctZXJyb3IgInJldHVybiB0eXBlIGhhcyBKYXZhIGNsYXNzIHR5cGUi IH0KLSt7Ci0rICBBIGE7CQkvLyB7IGRnLWVycm9yICJub3QgYWxsb2NhdGVkIHdpdGgiIH0KLSsg IHJldHVybiBhOwotK30KLSsKLStBIGZuMiAoKQkvLyB7IGRnLWVycm9yICJyZXR1cm4gdHlwZSBo YXMgSmF2YSBjbGFzcyB0eXBlIiB9Ci0rewotKyAgQSBhOwkJLy8geyBkZy1lcnJvciAibm90IGFs bG9jYXRlZCB3aXRoIiB9Ci0rICByZXR1cm4gYTsKLSt9Ci0rCi0rQSAqZm4zICgpCi0rewotKyAg cmV0dXJuIG5ldyBBICgpOwotK30KLSsKLStBICZmbjQgKCkKLSt7Ci0rICByZXR1cm4gKmM7Ci0r fQotKwotK2pieXRlIGZuNSAoKQotK3sKLSsgIHJldHVybiA3OwotK30KLSsKLSt2b2lkIGZuNiAo QSB4KQkvLyB7IGRnLWVycm9yICJoYXMgSmF2YSBjbGFzcyB0eXBlIiB9Ci0rewotK30KLSsKLSt2 b2lkIGZuNyAoY29uc3QgQSB4KQkvLyB7IGRnLWVycm9yICJoYXMgSmF2YSBjbGFzcyB0eXBlIiB9 Ci0rewotK30KLSsKLSt2b2lkIGZuOCAoQSAqeCkKLSt7Ci0rICAodm9pZCkgeDsKLSt9Ci0rCi0r dm9pZCBmbjkgKGpieXRlIHgpCi0rewotKyAgKHZvaWQpIHg7Ci0rfQoKZGlmZiAtLWdpdCBhL2dj YzQxLXByMzA5ODgucGF0Y2ggYi9nY2M0MS1wcjMwOTg4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBmYzI2NjY4Li4wMDAwMDAwCi0tLSBhL2djYzQxLXByMzA5ODgucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotMjAwNy0xMS0xOCAgSmFrdWIgSmVsaW5l ayAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQlQUiBjKysvMzA5ODgKLQkqIHNlbWFudGljcy5jIChm aW5pc2hfY2FsbF9leHByKTogU2V0Ci0JY3VycmVudF9mdW5jdGlvbl9yZXR1cm5zX2Fibm9ybWFs bHkgaWYgZm4gaXMgbm9yZXR1cm4gRlVOQ1RJT05fREVDTAotCW9yIE9WRVJMT0FEIHdpdGggYWxs IG5vcmV0dXJuIGZ1bmN0aW9ucy4KLQotCSogZysrLmRnL3dhcm4vbm9yZXR1cm4tNC5DOiBOZXcg dGVzdC4KLQkqIGcrKy5kZy93YXJuL25vcmV0dXJuLTUuQzogTmV3IHRlc3QuCi0JKiBnKysuZGcv d2Fybi9ub3JldHVybi02LkM6IE5ldyB0ZXN0LgotCSogZysrLmRnL3dhcm4vbm9yZXR1cm4tNy5D OiBOZXcgdGVzdC4KLQotLS0tIGdjYy9jcC9zZW1hbnRpY3MuYwkocmV2aXNpb24gMTMwMjc5KQot KysrIGdjYy9jcC9zZW1hbnRpY3MuYwkocmV2aXNpb24gMTMwMjgwKQotQEAgLTE4NDYsNiArMTg0 NiwyMCBAQCBmaW5pc2hfY2FsbF9leHByICh0cmVlIGZuLCB0cmVlIGFyZ3MsIGJvCi0gCXsKLSAJ ICByZXN1bHQgPSBidWlsZF9udF9jYWxsX2xpc3QgKGZuLCBhcmdzKTsKLSAJICBLT0VOSUdfTE9P S1VQX1AgKHJlc3VsdCkgPSBrb2VuaWdfcDsKLSsJICBpZiAoY2Z1bikKLSsJICAgIHsKLSsJICAg ICAgZG8KLSsJCXsKLSsJCSAgdHJlZSBmbmRlY2wgPSBPVkxfQ1VSUkVOVCAoZm4pOwotKwkJICBp ZiAoVFJFRV9DT0RFIChmbmRlY2wpICE9IEZVTkNUSU9OX0RFQ0wKLSsJCSAgICAgIHx8ICFUUkVF X1RISVNfVk9MQVRJTEUgKGZuZGVjbCkpCi0rCQkgICAgYnJlYWs7Ci0rCQkgIGZuID0gT1ZMX05F WFQgKGZuKTsKLSsJCX0KLSsJICAgICAgd2hpbGUgKGZuKTsKLSsJICAgICAgaWYgKCFmbikKLSsJ CWN1cnJlbnRfZnVuY3Rpb25fcmV0dXJuc19hYm5vcm1hbGx5ID0gMTsKLSsJICAgIH0KLSAJICBy ZXR1cm4gcmVzdWx0OwotIAl9Ci0gICAgICAgaWYgKCFCQVNFTElOS19QIChmbikKLS0tLSBnY2Mv dGVzdHN1aXRlL2crKy5kZy93YXJuL25vcmV0dXJuLTQuQwkocmV2aXNpb24gMCkKLSsrKyBnY2Mv dGVzdHN1aXRlL2crKy5kZy93YXJuL25vcmV0dXJuLTQuQwkocmV2aXNpb24gMTMwMjgwKQotQEAg LTAsMCArMSwxMyBAQAotKy8vIFBSIGMrKy8zMDk4OAotKy8vIHsgZGctZG8gY29tcGlsZSB9Ci0r Ly8geyBkZy1vcHRpb25zICItTzIgLVdhbGwiIH0KLSsKLSt2b2lkIGYgKGNvbnN0IGNoYXIgKikg X19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7Ci0rCi0rdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0 cnVjdCBBCi0rewotKyAgaW50IGcgKCkKLSsgIHsKLSsgICAgZiAoX19GVU5DVElPTl9fKTsKLSsg IH0KLSt9OwotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vbm9yZXR1cm4tNS5DCShyZXZp c2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vbm9yZXR1cm4tNS5DCShyZXZp c2lvbiAxMzAyODApCi1AQCAtMCwwICsxLDE1IEBACi0rLy8gUFIgYysrLzMwOTg4Ci0rLy8geyBk Zy1kbyBjb21waWxlIH0KLSsvLyB7IGRnLW9wdGlvbnMgIi1PMiAtV2FsbCIgfQotKwotK3ZvaWQg ZiAoY29uc3QgY2hhciAqKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKLSt2b2lkIGYgKGlu dCkgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7Ci0rdm9pZCBmIChkb3VibGUpIF9fYXR0cmli dXRlX18gKChub3JldHVybikpOwotKwotK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgQQot K3sKLSsgIGludCBnICgpCi0rICB7Ci0rICAgIGYgKChUKSAwKTsKLSsgIH0KLSt9OwotLS0tIGdj Yy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vbm9yZXR1cm4tNi5DCShyZXZpc2lvbiAwKQotKysrIGdj Yy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vbm9yZXR1cm4tNi5DCShyZXZpc2lvbiAxMzAyODApCi1A QCAtMCwwICsxLDEzIEBACi0rLy8gUFIgYysrLzMwOTg4Ci0rLy8geyBkZy1kbyBjb21waWxlIH0K LSsvLyB7IGRnLW9wdGlvbnMgIi1PMiAtV2FsbCIgfQotKwotK3ZvaWQgZiAoY29uc3QgY2hhciAq KTsKLSsKLSt0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEEKLSt7Ci0rICBpbnQgZyAoKQot KyAgewotKyAgICBmIChfX0ZVTkNUSU9OX18pOwotKyAgfQkvLyB7IGRnLXdhcm5pbmcgIm5vIHJl dHVybiBzdGF0ZW1lbnQgaW4gZnVuY3Rpb24gcmV0dXJuaW5nIG5vbi12b2lkIiB9Ci0rfTsKLS0t LSBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL25vcmV0dXJuLTcuQwkocmV2aXNpb24gMCkKLSsr KyBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL25vcmV0dXJuLTcuQwkocmV2aXNpb24gMTMwMjgw KQotQEAgLTAsMCArMSwxNSBAQAotKy8vIFBSIGMrKy8zMDk4OAotKy8vIHsgZGctZG8gY29tcGls ZSB9Ci0rLy8geyBkZy1vcHRpb25zICItTzIgLVdhbGwiIH0KLSsKLSt2b2lkIGYgKGNvbnN0IGNo YXIgKikgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7Ci0rdm9pZCBmIChpbnQpOwotK3ZvaWQg ZiAoZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKLSsKLSt0ZW1wbGF0ZSA8dHlw ZW5hbWUgVD4gc3RydWN0IEEKLSt7Ci0rICBpbnQgZyAoKQotKyAgewotKyAgICBmICgoVCkgMCk7 Ci0rICB9CS8vIHsgZGctd2FybmluZyAibm8gcmV0dXJuIHN0YXRlbWVudCBpbiBmdW5jdGlvbiBy ZXR1cm5pbmcgbm9uLXZvaWQiIH0KLSt9OwoKZGlmZiAtLWdpdCBhL2djYzQxLXByMzIxMjEucGF0 Y2ggYi9nY2M0MS1wcjMyMTIxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2 YmYzMzJkLi4wMDAwMDAwCi0tLSBhL2djYzQxLXByMzIxMjEucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMzIgKzAsMCBAQAotMjAwNy0xMC0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhh dC5jb20+Ci0KLQlQUiBjKysvMzIxMjEKLQkqIHBhcnNlci5jIChjcF9wYXJzZXJfY29tcG91bmRf c3RhdGVtZW50KTogSGFuZGxlIGxhYmVsLWRlY2xhcmF0aW9ucwotCWF0IHRoZSBiZWdpbm5pbmcg b2YgdGhlIGNvbXBvdW5kIHN0YXRlbWVudC4KLQkoY3BfcGFyc2VyX2Jsb2NrX2RlY2xhcmF0aW9u KTogSXNzdWUgZGlhZ25vc3RpY3MgYWJvdXQgX19sYWJlbF9fCi0Jbm90IGF0IHRoZSBiZWdpbm5p bmcgb2YgYSBibG9jay4KLQotCSogZysrLmRnL2V4dC9sYWJlbDQuQzogQWRqdXN0IGVycm9yIHJl Z2V4cC4KLQkqIGcrKy5kZy9leHQvbGFiZWw3LkM6IE5ldyB0ZXN0LgotCSogZysrLmRnL2V4dC9s YWJlbDguQzogTmV3IHRlc3QuCi0JKiBnKysuZGcvZXh0L2xhYmVsOS5DOiBOZXcgdGVzdC4KLQot LS0tIGdjYy9jcC9wYXJzZXIuYwkocmV2aXNpb24gMTI5MjUyKQotKysrIGdjYy9jcC9wYXJzZXIu YwkocmV2aXNpb24gMTI5MjUzKQotQEAgLTY4MjEsNiArNjgyMSwxNSBAQCBjcF9wYXJzZXJfZXhw cmVzc2lvbl9zdGF0ZW1lbnQgKGNwX3BhcnNlCi0gICAgY29tcG91bmQtc3RhdGVtZW50OgotICAg ICAgeyBzdGF0ZW1lbnQtc2VxIFtvcHRdIH0KLSAKLSsgICBHTlUgZXh0ZW5zaW9uOgotKwotKyAg IGNvbXBvdW5kLXN0YXRlbWVudDoKLSsgICAgIHsgbGFiZWwtZGVjbGFyYXRpb24tc2VxIFtvcHRd IHN0YXRlbWVudC1zZXEgW29wdF0gfQotKwotKyAgIGxhYmVsLWRlY2xhcmF0aW9uLXNlcToKLSsg ICAgIGxhYmVsLWRlY2xhcmF0aW9uCi0rICAgICBsYWJlbC1kZWNsYXJhdGlvbi1zZXEgbGFiZWwt ZGVjbGFyYXRpb24KLSsKLSAgICBSZXR1cm5zIGEgdHJlZSByZXByZXNlbnRpbmcgdGhlIHN0YXRl bWVudC4gICovCi0gCi0gc3RhdGljIHRyZWUKLUBAIC02ODM0LDYgKzY4NDMsOSBAQCBjcF9wYXJz ZXJfY29tcG91bmRfc3RhdGVtZW50IChjcF9wYXJzZXIgCi0gICAgIHJldHVybiBlcnJvcl9tYXJr X25vZGU7Ci0gICAvKiBCZWdpbiB0aGUgY29tcG91bmQtc3RhdGVtZW50LiAgKi8KLSAgIGNvbXBv dW5kX3N0bXQgPSBiZWdpbl9jb21wb3VuZF9zdG10IChpbl90cnkgPyBCQ1NfVFJZX0JMT0NLIDog MCk7Ci0rICAvKiBJZiB0aGUgbmV4dCBrZXl3b3JkIGlzIGBfX2xhYmVsX18nIHdlIGhhdmUgYSBs YWJlbCBkZWNsYXJhdGlvbi4gICovCi0rICB3aGlsZSAoY3BfbGV4ZXJfbmV4dF90b2tlbl9pc19r ZXl3b3JkIChwYXJzZXItPmxleGVyLCBSSURfTEFCRUwpKQotKyAgICBjcF9wYXJzZXJfbGFiZWxf ZGVjbGFyYXRpb24gKHBhcnNlcik7Ci0gICAvKiBQYXJzZSBhbiAob3B0aW9uYWwpIHN0YXRlbWVu dC1zZXEuICAqLwotICAgY3BfcGFyc2VyX3N0YXRlbWVudF9zZXFfb3B0IChwYXJzZXIsIGluX3N0 YXRlbWVudF9leHByKTsKLSAgIC8qIEZpbmlzaCB0aGUgY29tcG91bmQtc3RhdGVtZW50LiAgKi8K LUBAIC03NzExLDcgKzc3MjMsNiBAQCBjcF9wYXJzZXJfZGVjbGFyYXRpb24gKGNwX3BhcnNlciog cGFyc2VyCi0gCi0gICAgYmxvY2stZGVjbGFyYXRpb246Ci0gICAgICBfX2V4dGVuc2lvbl9fIGJs b2NrLWRlY2xhcmF0aW9uCi0tICAgICBsYWJlbC1kZWNsYXJhdGlvbgotIAotICAgIEMrKzB4IEV4 dGVuc2lvbjoKLSAKLUBAIC03NzcyLDEyICs3NzgzLDE2IEBAIGNwX3BhcnNlcl9ibG9ja19kZWNs YXJhdGlvbiAoY3BfcGFyc2VyICoKLSAJY3BfcGFyc2VyX3VzaW5nX2RlY2xhcmF0aW9uIChwYXJz ZXIsCi0gCQkJCSAgICAgLyphY2Nlc3NfZGVjbGFyYXRpb25fcD0qL2ZhbHNlKTsKLSAgICAgfQot LSAgLyogSWYgdGhlIG5leHQga2V5d29yZCBpcyBgX19sYWJlbF9fJyB3ZSBoYXZlIGEgbGFiZWwg ZGVjbGFyYXRpb24uICAqLwotKyAgLyogSWYgdGhlIG5leHQga2V5d29yZCBpcyBgX19sYWJlbF9f JyB3ZSBoYXZlIGEgbWlzcGxhY2VkIGxhYmVsCi0rICAgICBkZWNsYXJhdGlvbi4gICovCi0gICBl bHNlIGlmICh0b2tlbjEtPmtleXdvcmQgPT0gUklEX0xBQkVMKQotICAgICB7Ci0tICAgICAgaWYg KHN0YXRlbWVudF9wKQotLQljcF9wYXJzZXJfY29tbWl0X3RvX3RlbnRhdGl2ZV9wYXJzZSAocGFy c2VyKTsKLS0gICAgICBjcF9wYXJzZXJfbGFiZWxfZGVjbGFyYXRpb24gKHBhcnNlcik7Ci0rICAg ICAgY3BfbGV4ZXJfY29uc3VtZV90b2tlbiAocGFyc2VyLT5sZXhlcik7Ci0rICAgICAgZXJyb3Ig KCIlPF9fbGFiZWxfXyU+IG5vdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgYmxvY2siKTsKLSsgICAg ICBjcF9wYXJzZXJfc2tpcF90b19lbmRfb2Zfc3RhdGVtZW50IChwYXJzZXIpOwotKyAgICAgIC8q IElmIHRoZSBuZXh0IHRva2VuIGlzIG5vdyBhIGA7JywgY29uc3VtZSBpdC4gICovCi0rICAgICAg aWYgKGNwX2xleGVyX25leHRfdG9rZW5faXMgKHBhcnNlci0+bGV4ZXIsIENQUF9TRU1JQ09MT04p KQotKwljcF9sZXhlcl9jb25zdW1lX3Rva2VuIChwYXJzZXItPmxleGVyKTsKLSAgICAgfQotICAg LyogSWYgdGhlIG5leHQgdG9rZW4gaXMgYHN0YXRpY19hc3NlcnQnIHdlIGhhdmUgYSBzdGF0aWMg YXNzZXJ0aW9uLiAgKi8KLSAgIGVsc2UgaWYgKHRva2VuMS0+a2V5d29yZCA9PSBSSURfU1RBVElD X0FTU0VSVCkKLQotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9sYWJlbDkuQwkocmV2aXNp b24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvbGFiZWw5LkMJKHJldmlzaW9uIDEy OTI1MykKLUBAIC0wLDAgKzEsMTAgQEAKLSsvLyBQUiBjKysvMzIxMjEKLSsvLyB7IGRnLWRvIGNv bXBpbGUgfQotKwotK2ludCBmICh2b2lkKQotK3sKLSsgIHdoaWxlICgxKQotKyAgICBfX2xhYmVs X18gYTsJLy8geyBkZy1lcnJvciAibm90IGF0IHRoZSBiZWdpbm5pbmciIH0KLSsgIGZvciAoOzsp Ci0rICAgIF9fbGFiZWxfXyBiOwkvLyB7IGRnLWVycm9yICJub3QgYXQgdGhlIGJlZ2lubmluZyIg fQotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvbGFiZWw0LkMJKHJldmlzaW9uIDEy OTI1MikKLSsrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvbGFiZWw0LkMJKHJldmlzaW9uIDEy OTI1MykKLUBAIC0zLDQgKzMsNCBAQAotIAotIC8vIHsgZGctZG8gY29tcGlsZSB9Ci0gCi0tX19s YWJlbF9fICpsOyAgLy8geyBkZy1lcnJvciAiYmVmb3JlIiB9Ci0rX19sYWJlbF9fICpsOyAgLy8g eyBkZy1lcnJvciAibm90IGF0IHRoZSBiZWdpbm5pbmcgb2YiIH0KLS0tLSBnY2MvdGVzdHN1aXRl L2crKy5kZy9leHQvbGFiZWw3LkMJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvZXh0L2xhYmVsNy5DCShyZXZpc2lvbiAxMjkyNTMpCi1AQCAtMCwwICsxLDEyIEBACi0rLy8g UFIgYysrLzMyMTIxCi0rLy8geyBkZy1kbyBjb21waWxlIH0KLSsKLStpbnQgZiAodm9pZCkKLSt7 Ci0rICBhOjsKLSsgIF9fbGFiZWxfXyBhOwkvLyB7IGRnLWVycm9yICJub3QgYXQgdGhlIGJlZ2lu bmluZyIgfQotKyAgaW50IGI7Ci0rICBfX2xhYmVsX18gYzsJLy8geyBkZy1lcnJvciAibm90IGF0 IHRoZSBiZWdpbm5pbmciIH0KLSsgIGE6OwkJLy8geyBkZy1lcnJvciAiZHVwbGljYXRlIGxhYmVs IiB9Ci0rICBjOjsKLSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L2xhYmVsOC5DCShy ZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9sYWJlbDguQwkocmV2aXNp b24gMTI5MjUzKQotQEAgLTAsMCArMSwyMiBAQAotKy8vIFBSIGMrKy8zMjEyMQotKy8vIHsgZGct ZG8gY29tcGlsZSB9Ci0rCi0raW50IGYgKHZvaWQpCi0rewotKyAgX19sYWJlbF9fIGEsIGI7Ci0r ICBfX2xhYmVsX18gYzsKLSsgIGE6OwotKyAgYjo7Ci0rICBjOjsKLSsgIHsKLSsgICAgX19sYWJl bF9fIGQ7Ci0rICAgIGQ6OwotKyAgICBpZiAoMCkKLSsgICAgICB7Ci0rCV9fbGFiZWxfXyBlOwot KwlfX2xhYmVsX18gZjsKLSsJZjo7Ci0rCWU6OwotKyAgICAgIH0KLSsgIH0KLSt9CgpkaWZmIC0t Z2l0IGEvZ2NjNDEtcHIzMjEzOS5wYXRjaCBiL2djYzQxLXByMzIxMzkucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZThmZmIuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtcHIzMjEz OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLTIwMDctMDYtMDEgIEpha3Vi IEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgdHJlZS1vcHRpbWl6YXRpb24vMzIx MzkKLQkqIGMtdHlwZWNrLmMgKGNvbW1vbl9wb2ludGVyX3R5cGUpOiBTZXQgVFlQRV9SRUFET05M WQotCWFuZCBUWVBFX1ZPTEFUSUxFIG9uIHRoZSBtZXJnZWQgcG9pbnRlZCB0byBGVU5DVElPTl9U WVBFCi0Jb25seSBpZiBib3RoIHBvaW50ZWRfdG9fMSBhbmQgcG9pbnRlZF90b18yIGFyZSBUWVBF X1JFQURPTkxZCi0JcmVzcC4gVFlQRV9WT0xBVElMRS4KLQotCSogZ2NjLmMtdG9ydHVyZS9jb21w aWxlLzIwMDcwNTMxLTEuYzogTmV3IHRlc3QuCi0KLS0tLSBnY2MvYy10eXBlY2suYy5qagkyMDA3 LTA0LTI1IDEwOjEzOjUyLjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9jLXR5cGVjay5jCTIwMDct MDYtMDEgMTA6NTE6NTMuMDAwMDAwMDAwICswMjAwCi1AQCAtNDk5LDYgKzQ5OSw3IEBAIGNvbW1v bl9wb2ludGVyX3R5cGUgKHRyZWUgdDEsIHRyZWUgdDIpCi0gICB0cmVlIHBvaW50ZWRfdG9fMSwg bXYxOwotICAgdHJlZSBwb2ludGVkX3RvXzIsIG12MjsKLSAgIHRyZWUgdGFyZ2V0OwotKyAgaW50 IHR5cGVfcXVhbHM7Ci0gCi0gICAvKiBTYXZlIHRpbWUgaWYgdGhlIHR3byB0eXBlcyBhcmUgdGhl IHNhbWUuICAqLwotIAotQEAgLTUyNiwxMCArNTI3LDE5IEBAIGNvbW1vbl9wb2ludGVyX3R5cGUg KHRyZWUgdDEsIHRyZWUgdDIpCi0gICBpZiAoVFJFRV9DT0RFIChtdjIpICE9IEFSUkFZX1RZUEUp Ci0gICAgIG12MiA9IFRZUEVfTUFJTl9WQVJJQU5UIChwb2ludGVkX3RvXzIpOwotICAgdGFyZ2V0 ID0gY29tcG9zaXRlX3R5cGUgKG12MSwgbXYyKTsKLS0gIHQxID0gYnVpbGRfcG9pbnRlcl90eXBl IChjX2J1aWxkX3F1YWxpZmllZF90eXBlCi0tCQkJICAgKHRhcmdldCwKLS0JCQkgICAgVFlQRV9R VUFMUyAocG9pbnRlZF90b18xKSB8Ci0tCQkJICAgIFRZUEVfUVVBTFMgKHBvaW50ZWRfdG9fMikp KTsKLSsgIHR5cGVfcXVhbHMgPSBUWVBFX1FVQUxTIChwb2ludGVkX3RvXzEpIHwgVFlQRV9RVUFM UyAocG9pbnRlZF90b18yKTsKLSsgIGlmIChUUkVFX0NPREUgKHBvaW50ZWRfdG9fMSkgPT0gRlVO Q1RJT05fVFlQRSkKLSsgICAgewotKyAgICAgIC8qIFRZUEVfUkVBRE9OTFkgYW5kIFRZUEVfVk9M QVRJTEUgb24gRlVOQ1RJT05fVFlQRSBzaG91bGQgYmUKLSsJIGxvZ2ljYWxseSBBTkRlZCwgbm90 IE9SZWQsIGFzIGlmIG9uZSBmdW5jdGlvbiBpcwotKwkgX19hdHRyaWJ1dGVfXygoY29uc3QpKSBh bmQgdGhlIG90aGVyIGlzIG5vdCwgdGhlIGNvbW1vbiB0eXBlCi0rCSBtdXN0IGJlIGNvbnNlcnZh dGl2ZWx5IG5vdCBfX2F0dHJpYnV0ZV9fKChjb25zdCkpCi0rCSBhbmQgc2ltaWxhcmx5IGZvciBf X2F0dHJpYnV0ZV9fKChub3JldHVybikpLiAgKi8KLSsgICAgICB0eXBlX3F1YWxzICY9IH4oVFlQ RV9RVUFMX0NPTlNUIHwgVFlQRV9RVUFMX1ZPTEFUSUxFKTsKLSsgICAgICB0eXBlX3F1YWxzIHw9 IChUWVBFX1FVQUxTIChwb2ludGVkX3RvXzEpICYgVFlQRV9RVUFMUyAocG9pbnRlZF90b18yKSkK LSsJCSAgICAmIChUWVBFX1FVQUxfQ09OU1QgfCBUWVBFX1FVQUxfVk9MQVRJTEUpOwotKyAgICB9 Ci0rICB0MSA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAoY19idWlsZF9xdWFsaWZpZWRfdHlwZSAodGFy Z2V0LCB0eXBlX3F1YWxzKSk7Ci0gICByZXR1cm4gYnVpbGRfdHlwZV9hdHRyaWJ1dGVfdmFyaWFu dCAodDEsIGF0dHJpYnV0ZXMpOwotIH0KLSAKLS0tLSBnY2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1 cmUvY29tcGlsZS8yMDA3MDUzMS0xLmMuamoJMjAwNy0wNS0zMSAxMzo0NzoyMi4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvY29tcGlsZS8yMDA3MDUzMS0x LmMJMjAwNy0wNi0wMSAxMDo1NzoxNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTEgQEAK LSsvKiBQUiB0cmVlLW9wdGltaXphdGlvbi8zMjEzOSAqLwotK2ludCBmb28gKHZvaWQpOwotK2lu dCBiYXIgKHZvaWQpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwotKwotK2ludAotK3Rlc3QgKGlu dCB4KQotK3sKLSsgIGludCBhID0gKHggPT0gMTAwMDAgPyBmb28gOiBiYXIpICgpOwotKyAgaW50 IGIgPSAoeCA9PSAxMDAwMCA/IGZvbyA6IGJhcikgKCk7Ci0rICByZXR1cm4gYSArIGI7Ci0rfQoK ZGlmZiAtLWdpdCBhL2djYzQxLXByMzIyNDEucGF0Y2ggYi9nY2M0MS1wcjMyMjQxLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2RmZTNjLi4wMDAwMDAwCi0tLSBhL2djYzQx LXByMzIyNDEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0yMDA3LTExLTEw ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIGMrKy8zMjI0MQotCSog cHQuYyAodHN1YnN0X2NvcHlfYW5kX2J1aWxkKSA8Y2FzZSBDT01QT05FTlRfUkVGPjogSWYgb2Jq ZWN0X3R5cGUKLQlpcyBub3Qgc2NhbGFyIHR5cGUsIGxldCBmaW5pc2hfY2xhc3NfbWVtYmVyX2Fj Y2Vzc19leHByIGhhbmRsZQotCWRpYWdub3N0aWNzLiAgUGFzcyBCSVRfTk9UX0VYUFIgYXJndW1l bnQgdG8KLQlmaW5pc2hfcHNldWRvX2Rlc3RydWN0b3JfZXhwci4gIEhhbmRsZSBTQ09QRV9SRUYg cHJvcGVybHkuCi0KLQkqIGcrKy5kZy90ZW1wbGF0ZS9wc2V1ZG9kdG9yMy5DOiBOZXcgdGVzdC4K LQotLS0tIGdjYy9jcC9wdC5jCShyZXZpc2lvbiAxMzAwNjUpCi0rKysgZ2NjL2NwL3B0LmMJKHJl dmlzaW9uIDEzMDA2NikKLUBAIC0xMTAwNCwxNSArMTEwMDQsMjMgQEAgdHN1YnN0X2NvcHlfYW5k X2J1aWxkICh0cmVlIHQsCi0gCi0gCWlmIChvYmplY3RfdHlwZSAmJiAhQ0xBU1NfVFlQRV9QIChv YmplY3RfdHlwZSkpCi0gCSAgewotLQkgICAgaWYgKFRSRUVfQ09ERSAobWVtYmVyKSA9PSBCSVRf Tk9UX0VYUFIpCi0tCSAgICAgIHJldHVybiBmaW5pc2hfcHNldWRvX2Rlc3RydWN0b3JfZXhwciAo b2JqZWN0LAotLQkJCQkJCSAgICBOVUxMX1RSRUUsCi0tCQkJCQkJICAgIG9iamVjdF90eXBlKTsK LS0JICAgIGVsc2UgaWYgKFRSRUVfQ09ERSAobWVtYmVyKSA9PSBTQ09QRV9SRUYKLS0JCSAgICAg JiYgKFRSRUVfQ09ERSAoVFJFRV9PUEVSQU5EIChtZW1iZXIsIDEpKSA9PSBCSVRfTk9UX0VYUFIp KQotLQkgICAgICByZXR1cm4gZmluaXNoX3BzZXVkb19kZXN0cnVjdG9yX2V4cHIgKG9iamVjdCwK LS0JCQkJCQkgICAgb2JqZWN0LAotLQkJCQkJCSAgICBvYmplY3RfdHlwZSk7Ci0rCSAgICBpZiAo U0NBTEFSX1RZUEVfUCAob2JqZWN0X3R5cGUpKQotKwkgICAgICB7Ci0rCQl0cmVlIHMgPSBOVUxM X1RSRUU7Ci0rCQl0cmVlIGR0b3IgPSBtZW1iZXI7Ci0rCi0rCQlpZiAoVFJFRV9DT0RFIChkdG9y KSA9PSBTQ09QRV9SRUYpCi0rCQkgIHsKLSsJCSAgICBzID0gVFJFRV9PUEVSQU5EIChkdG9yLCAw KTsKLSsJCSAgICBkdG9yID0gVFJFRV9PUEVSQU5EIChkdG9yLCAxKTsKLSsJCSAgfQotKwkJaWYg KFRSRUVfQ09ERSAoZHRvcikgPT0gQklUX05PVF9FWFBSKQotKwkJICB7Ci0rCQkgICAgZHRvciA9 IFRSRUVfT1BFUkFORCAoZHRvciwgMCk7Ci0rCQkgICAgaWYgKFRZUEVfUCAoZHRvcikpCi0rCQkg ICAgICByZXR1cm4gZmluaXNoX3BzZXVkb19kZXN0cnVjdG9yX2V4cHIgKG9iamVjdCwgcywgZHRv cik7Ci0rCQkgIH0KLSsJICAgICAgfQotIAkgIH0KLSAJZWxzZSBpZiAoVFJFRV9DT0RFIChtZW1i ZXIpID09IFNDT1BFX1JFRgotIAkJICYmIFRSRUVfQ09ERSAoVFJFRV9PUEVSQU5EIChtZW1iZXIs IDEpKSA9PSBURU1QTEFURV9JRF9FWFBSKQotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBs YXRlL3BzZXVkb2R0b3IzLkMJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv dGVtcGxhdGUvcHNldWRvZHRvcjMuQwkocmV2aXNpb24gMTMwMDY2KQotQEAgLTAsMCArMSw0MyBA QAotKy8vIFBSIGMrKy8zMjI0MQotKy8vIHsgZGctZG8gY29tcGlsZSB9Ci0rCi0rc3RydWN0IEEK LSt7Ci0rICB0eXBlZGVmIGludCBUOwotKyAgVCAmZm9vICgpOwotKyAgQSAoKSB7IGZvby5+VCAo KTsgfQkvLyB7IGRnLWVycm9yICJkb2VzIG5vdCBoYXZlIGNsYXNzIHR5cGV8ZXhwZWN0ZWQiIH0K LSt9OwotKwotK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgQgotK3sKLSsgIFQgJmZvbyAo KTsKLSsgIEIgKCkgeyBmb28uflQgKCk7IH0JLy8geyBkZy1lcnJvciAiaW52YWxpZCB1c2Ugb2Yg bWVtYmVyIiB9Ci0rfTsKLSsKLStCPGludD4gYjsKLSsKLSt0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg dHlwZW5hbWUgUz4gc3RydWN0IEMKLSt7Ci0rICBUIHQ7Ci0rICBDICgpIHsgdC5+UyAoKTsgfQkv LyB7IGRnLWVycm9yICJpcyBub3Qgb2YgdHlwZSIgfQotK307Ci0rCi0rQzxpbnQsIGxvbmcgaW50 PiBjOwotKwotK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgRAotK3sKLSsgIFQgdDsKLSsg IHR5cGVkZWYgbG9uZyBpbnQgVTsKLSsgIEQgKCkgeyB0Ln5VICgpOyB9CS8vIHsgZGctZXJyb3Ig ImlzIG5vdCBvZiB0eXBlIiB9Ci0rfTsKLSsKLStEPGludD4gZDsKLSsKLSt0ZW1wbGF0ZSA8dHlw ZW5hbWUgVD4gc3RydWN0IEUKLSt7Ci0rICBUICZmb28gKCk7Ci0rICB0eXBlZGVmIGxvbmcgaW50 IFU7Ci0rICBFICgpIHsgZm9vLn5VICgpOyB9CS8vIHsgZGctZXJyb3IgImlzIG5vdCBvZiB0eXBl IiB9Ci0rfTsKLSsKLStFPGludD4gZTsKCmRpZmYgLS1naXQgYS9nY2M0MS1wcjMyMzg0LnBhdGNo IGIvZ2NjNDEtcHIzMjM4NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgz MDY4Zi4uMDAwMDAwMAotLS0gYS9nY2M0MS1wcjMyMzg0LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTA4ICswLDAgQEAKLTIwMDctMTEtMDEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQu Y29tPgotCi0JUFIgYysrLzMyMzg0Ci0JKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3Bvc3RmaXhfZG90 X2RlcmVmX2V4cHJlc3Npb24pOiBJZgotCVBPU1RGSVhfRVhQUkVTU0lPTiBpcyB0eXBlIGRlcGVu ZGVudCwgdHJ5IHRvIHBhcnNlIGl0IGFzIHBzZXVkbyBkdG9yCi0JZmlyc3QgYW5kIGlmIHRoYXQg c3VjY2VlZHMgYW5kIHR5cGUgaXMgU0NBTEFSX1RZUEVfUCwgY3JlYXRlCi0JUFNFVURPX0RUT1Jf RVhQUi4KLQotCSogZysrLmRnL3RlbXBsYXRlL3BzZXVkb2R0b3IxLkM6IE5ldyB0ZXN0LgotCSog ZysrLmRnL3RlbXBsYXRlL3BzZXVkb2R0b3IyLkM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL2NwL3Bh cnNlci5jCShyZXZpc2lvbiAxMjk4MzUpCi0rKysgZ2NjL2NwL3BhcnNlci5jCShyZXZpc2lvbiAx Mjk4MzYpCi1AQCAtNDg1MCw4ICs0ODUwLDEwIEBAIGNwX3BhcnNlcl9wb3N0Zml4X2RvdF9kZXJl Zl9leHByZXNzaW9uICgKLSAgIHBzZXVkb19kZXN0cnVjdG9yX3AgPSBmYWxzZTsKLSAKLSAgIC8q IElmIHRoZSBTQ09QRSBpcyBhIHNjYWxhciB0eXBlLCB0aGVuLCBpZiB0aGlzIGlzIGEgdmFsaWQg cHJvZ3JhbSwKLS0gICAgIHdlIG11c3QgYmUgbG9va2luZyBhdCBhIHBzZXVkby1kZXN0cnVjdG9y LW5hbWUuICAqLwotLSAgaWYgKHNjb3BlICYmIFNDQUxBUl9UWVBFX1AgKHNjb3BlKSkKLSsgICAg IHdlIG11c3QgYmUgbG9va2luZyBhdCBhIHBzZXVkby1kZXN0cnVjdG9yLW5hbWUuICBJZiBQT1NU RklYX0VYUFJFU1NJT04KLSsgICAgIGlzIHR5cGUgZGVwZW5kZW50LCBpdCBjYW4gYmUgcHNldWRv LWRlc3RydWN0b3ItbmFtZSBvciBzb21ldGhpbmcgZWxzZS4KLSsgICAgIFRyeSB0byBwYXJzZSBp dCBhcyBwc2V1ZG8tZGVzdHJ1Y3Rvci1uYW1lIGZpcnN0LiAgKi8KLSsgIGlmICgoc2NvcGUgJiYg U0NBTEFSX1RZUEVfUCAoc2NvcGUpKSB8fCBkZXBlbmRlbnRfcCkKLSAgICAgewotICAgICAgIHRy ZWUgczsKLSAgICAgICB0cmVlIHR5cGU7Ci1AQCAtNDg2MCw3ICs0ODYyLDEyIEBAIGNwX3BhcnNl cl9wb3N0Zml4X2RvdF9kZXJlZl9leHByZXNzaW9uICgKLSAgICAgICAvKiBQYXJzZSB0aGUgcHNl dWRvLWRlc3RydWN0b3ItbmFtZS4gICovCi0gICAgICAgcyA9IE5VTExfVFJFRTsKLSAgICAgICBj cF9wYXJzZXJfcHNldWRvX2Rlc3RydWN0b3JfbmFtZSAocGFyc2VyLCAmcywgJnR5cGUpOwotLSAg ICAgIGlmIChjcF9wYXJzZXJfcGFyc2VfZGVmaW5pdGVseSAocGFyc2VyKSkKLSsgICAgICBpZiAo ZGVwZW5kZW50X3AKLSsJICAmJiAoY3BfcGFyc2VyX2Vycm9yX29jY3VycmVkIChwYXJzZXIpCi0r CSAgICAgIHx8IFRSRUVfQ09ERSAodHlwZSkgIT0gVFlQRV9ERUNMCi0rCSAgICAgIHx8ICFTQ0FM QVJfVFlQRV9QIChUUkVFX1RZUEUgKHR5cGUpKSkpCi0rCWNwX3BhcnNlcl9hYm9ydF90ZW50YXRp dmVfcGFyc2UgKHBhcnNlcik7Ci0rICAgICAgZWxzZSBpZiAoY3BfcGFyc2VyX3BhcnNlX2RlZmlu aXRlbHkgKHBhcnNlcikpCi0gCXsKLSAJICBwc2V1ZG9fZGVzdHJ1Y3Rvcl9wID0gdHJ1ZTsKLSAJ ICBwb3N0Zml4X2V4cHJlc3Npb24KLS0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy90ZW1wbGF0ZS9w c2V1ZG9kdG9yMS5DCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBs YXRlL3BzZXVkb2R0b3IxLkMJKHJldmlzaW9uIDEyOTgzNikKLUBAIC0wLDAgKzEsNDQgQEAKLSsv LyBQUiBjKysvMzIzODQKLSsvLyB7IGRnLWRvIGNvbXBpbGUgfQotKwotK3N0cnVjdCBBCi0rewot KyAgdHlwZWRlZiBpbnQgVDsKLSsgIFQgZm9vICgpOwotKwotKyAgQSAoKSB7IGZvbyAoKS5+VCAo KTsgfQotK307Ci0rCi0rdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBCCi0rewotKyAgdHlwZWRl ZiBpbnQgVDsKLSsgIFQgZm9vICgpOwotKwotKyAgQiAoKSB7IGZvbyAoKS5+VCAoKTsgfQotK307 Ci0rCi0rdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEMKLSt7Ci0rICBUIHQ7Ci0rICBDICgp IHsgdC5+VCAoKTsgfQotK307Ci0rCi0rdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IEQKLSt7 Ci0rICB0eXBlZGVmIGludCBUOwotKyAgUyBmb28gKCk7Ci0rCi0rICBEICgpIHsgZm9vICgpLn5U KCk7IH0KLSt9OwotKwotK3N0cnVjdCBaCi0rewotKyAgWiAoKSB7fQotKyAgflogKCkge30KLSt9 OwotKwotK0EgYTsKLStCPGludD4gYjsKLStDPGludD4gYzE7Ci0rQzxaPiBjMjsKLStEPGludD4g ZDsKLS0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy90ZW1wbGF0ZS9wc2V1ZG9kdG9yMi5DCShyZXZp c2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBsYXRlL3BzZXVkb2R0b3IyLkMJ KHJldmlzaW9uIDEyOTgzNikKLUBAIC0wLDAgKzEsMTggQEAKLSsvLyBQUiBjKysvMzIzODQKLSsv LyB7IGRnLWRvIGNvbXBpbGUgfQotKwotK3RlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBECi0r ewotKyAgdHlwZWRlZiBpbnQgVDsKLSsgIFMgZm9vICgpOwotKwotKyAgRCAoKSB7IGZvbyAoKS5+ VCgpOyB9CQkvLyB7IGRnLWVycm9yICJpcyBub3Qgb2YgdHlwZSIgfQotK307Ci0rCi0rc3RydWN0 IFoKLSt7Ci0rICBaICgpIHt9Ci0rICB+WiAoKSB7fQotK307Ci0rCi0rRDxaPiBkOwoKZGlmZiAt LWdpdCBhL2djYzQxLXByMzI2OTQucGF0Y2ggYi9nY2M0MS1wcjMyNjk0LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjE3MmU0Li4wMDAwMDAwCi0tLSBhL2djYzQxLXByMzI2 OTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0yMDA3LTA5LTI1ICBKYWt1 YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMy Njk0Ci0JMjAwNi0xMS0wOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+Ci0JKiB0 cmVlLXNzYS1wcm9wYWdhdGUuYyAoc2V0X3Jocyk6IFZlcmlmeSB0Y2NfY29tcGFyaXNvbiB0aGUg c2FtZSB3YXkKLQlhcyB0Y2NfYmluYXJ5LgotCi0JKiBnY2MuYy10b3J0dXJlL2NvbXBpbGUvMjAw NzA5MjUtMS5jOiBOZXcgdGVzdC4KLQotLS0tIGdjYy90cmVlLXNzYS1wcm9wYWdhdGUuYy5qagky MDA3LTA5LTIzIDE5OjQzOjM2LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy90cmVlLXNzYS1wcm9w YWdhdGUuYwkyMDA3LTA5LTI1IDA5OjMwOjUwLjAwMDAwMDAwMCArMDIwMAotQEAgLTU3MCw3ICs1 NzAsOCBAQCBzZXRfcmhzICh0cmVlICpzdG10X3AsIHRyZWUgZXhwcikKLSAgIHNzYV9vcF9pdGVy IGl0ZXI7Ci0gCi0gICAvKiBWZXJpZnkgdGhlIGNvbnN0YW50IGZvbGRlZCByZXN1bHQgaXMgdmFs aWQgZ2ltcGxlLiAgKi8KLS0gIGlmIChUUkVFX0NPREVfQ0xBU1MgKGNvZGUpID09IHRjY19iaW5h cnkpCi0rICBpZiAoVFJFRV9DT0RFX0NMQVNTIChjb2RlKSA9PSB0Y2NfYmluYXJ5Ci0rICAgICAg fHwgVFJFRV9DT0RFX0NMQVNTIChjb2RlKSA9PSB0Y2NfY29tcGFyaXNvbikKLSAgICAgewotICAg ICAgIGlmICghaXNfZ2ltcGxlX3ZhbCAoVFJFRV9PUEVSQU5EIChleHByLCAwKSkKLSAJICB8fCAh aXNfZ2ltcGxlX3ZhbCAoVFJFRV9PUEVSQU5EIChleHByLCAxKSkpCi0tLS0gZ2NjL3Rlc3RzdWl0 ZS9nY2MuYy10b3J0dXJlL2NvbXBpbGUvMjAwNzA5MjUtMS5jLmpqCTIwMDctMDktMjUgMDk6Mjg6 MzcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2NvbXBp bGUvMjAwNzA5MjUtMS5jCTIwMDctMDktMjUgMDk6Mjk6NDEuMDAwMDAwMDAwICswMjAwCi1AQCAt MCwwICsxLDIyIEBACi0rLyogUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI2OTQgKi8KLSsKLSt0eXBl ZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IFdvcmRTNjQ7Ci0rdHlwZWRlZiB1bnNpZ25lZCBsb25n IGxvbmcgaW50IFdvcmQ2NDsKLSsKLStpbnQKLStmb28gKFdvcmQ2NCAqIHApCi0rewotKyAgd2hp bGUgKDEpCi0rICAgIHsKLSsgICAgICBXb3JkUzY0IGMgPSAweDFsbHU7Ci0rICAgICAgV29yZFM2 NCB4ID0gKnA7Ci0rICAgICAgaWYgKGMgPj0gMCkKLSsJewotKwkgIGlmICh4ID4gKFdvcmRTNjQp IDB4N0ZGRkZGRkZGRkZGRkZGRmxsIC0gYykKLSsJICAgIHJldHVybiA2OwotKwl9Ci0rICAgICAg ZWxzZSBpZiAoeCA8IChXb3JkUzY0KSAweDgwMDAwMDAwMDAwMDAwMDBsbCAtIGMpCi0rCXJldHVy biA3OwotKyAgICAgIHArKzsKLSsgICAgfQotK30KCmRpZmYgLS1naXQgYS9nY2M0MS1wcjMzMTM2 LnBhdGNoIGIvZ2NjNDEtcHIzMzEzNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggZWQzODlhYS4uMDAwMDAwMAotLS0gYS9nY2M0MS1wcjMzMTM2LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMjMwICswLDAgQEAKLTIwMDctMTAtMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkBy ZWRoYXQuY29tPgotCi0JUFIgdHJlZS1vcHRpbWl6YXRpb24vMzMxMzYKLQkqIG9wdHMuYyAoZGVj b2RlX29wdGlvbnMpOiBEb24ndCBlbmFibGUgZmxhZ19pcGFfdHlwZV9lc2NhcGUuCi0KLQkqIGdj Yy5jLXRvcnR1cmUvZXhlY3V0ZS8yMDA3MDgyNC0xLmM6IE5ldyB0ZXN0LgotCSogZ2NjLmRnL3By MzMxMzYtMS5jOiBOZXcgdGVzdC4KLQkqIGdjYy5kZy9wcjMzMTM2LTIuYzogTmV3IHRlc3QuCi0J KiBnY2MuZGcvcHIzMzEzNi0zLmM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL29wdHMuYwkocmV2aXNp b24gMTI5MzY1KQotKysrIGdjYy9vcHRzLmMJKHJldmlzaW9uIDEyOTM2NikKLUBAIC00NzMsNyAr NDczLDYgQEAgZGVjb2RlX29wdGlvbnMgKHVuc2lnbmVkIGludCBhcmdjLCBjb25zdAotICAgICAg IGZsYWdfY3NlX3NraXBfYmxvY2tzID0gMTsKLSAgICAgICBmbGFnX2djc2UgPSAxOwotICAgICAg IGZsYWdfZXhwZW5zaXZlX29wdGltaXphdGlvbnMgPSAxOwotLSAgICAgIGZsYWdfaXBhX3R5cGVf ZXNjYXBlID0gMTsKLSAgICAgICBmbGFnX3N0cmVuZ3RoX3JlZHVjZSA9IDE7Ci0gICAgICAgZmxh Z19yZXJ1bl9jc2VfYWZ0ZXJfbG9vcCA9IDE7Ci0gICAgICAgZmxhZ19yZXJ1bl9sb29wX29wdCA9 IDE7Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4ZWN1dGUvMjAwNzA4MjQtMS5j CShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9leGVjdXRlLzIw MDcwODI0LTEuYwkocmV2aXNpb24gMTI5MzY2KQotQEAgLTAsMCArMSwyNCBAQAotKy8qIFBSIHRy ZWUtb3B0aW1pemF0aW9uLzMzMTM2ICovCi0rCi0rZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOwot KwotK3N0cnVjdCBTCi0rewotKyAgc3RydWN0IFMgKmE7Ci0rICBpbnQgYjsKLSt9OwotKwotK2lu dAotK21haW4gKHZvaWQpCi0rewotKyAgc3RydWN0IFMgKnMgPSAoc3RydWN0IFMgKikgMCwgKipw LCAqbjsKLSsgIGZvciAocCA9ICZzOyAqcDsgcCA9ICYoKnApLT5hKTsKLSsgIG4gPSAoc3RydWN0 IFMgKikgX19idWlsdGluX2FsbG9jYSAoc2l6ZW9mICgqbikpOwotKyAgbi0+YSA9ICpwOwotKyAg bi0+YiA9IDE7Ci0rICAqcCA9IG47Ci0rCi0rICBpZiAoIXMpCi0rICAgIGFib3J0ICgpOwotKyAg cmV0dXJuIDA7Ci0rfQotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMzMxMzYtMS5jCShyZXZp c2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMzMxMzYtMS5jCShyZXZpc2lvbiAx MjkzNjYpCi1AQCAtMCwwICsxLDU0IEBACi0rLyogUFIgdHJlZS1vcHRpbWl6YXRpb24vMzMxMzYg Ki8KLSsvKiB7IGRnLWRvIHJ1biB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KLSsK LStleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7Ci0rCi0rc3RydWN0IFMKLSt7Ci0rICBzdHJ1Y3Qg UyAqYTsKLSsgIGludCBiOwotKyAgZmxvYXQgZjsKLSt9OwotKwotK3N0YXRpYyBzdHJ1Y3QgUyBz OwotKwotK3N0YXRpYyBpbnQgKgotK19fYXR0cmlidXRlX18oKG5vaW5saW5lLCBjb25zdCkpCi0r Zm9vICh2b2lkKQotK3sKLSsgIHJldHVybiAmcy5iOwotK30KLSsKLStmbG9hdAotK19fYXR0cmli dXRlX18oKG5vaW5saW5lKSkKLStiYXIgKGZsb2F0ICpmKQotK3sKLSsgIHMuZiA9IDEuMDsKLSsg ICpmID0gNC4wOwotKyAgcmV0dXJuIHMuZjsKLSt9Ci0rCi0raW50Ci0rX19hdHRyaWJ1dGVfXygo bm9pbmxpbmUpKQotK2JheiAoaW50ICp4KQotK3sKLSsgIHMuYiA9IDE7Ci0rICAqeCA9IDQ7Ci0r ICByZXR1cm4gcy5iOwotK30KLSsKLStpbnQKLSt0ICh2b2lkKQotK3sKLSsgIGZsb2F0IGYgPSA4 LjA7Ci0rICByZXR1cm4gYmFyICgmZikgKyBiYXogKGZvbyAoKSk7Ci0rfQotKwotK2ludAotK21h aW4gKHZvaWQpCi0rewotKyAgaWYgKHQgKCkgIT0gNSkKLSsgICAgYWJvcnQgKCk7Ci0rICByZXR1 cm4gMDsKLSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzEzNi0zLmMJKHJldmlzaW9u IDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzEzNi0zLmMJKHJldmlzaW9uIDEyOTM2 NikKLUBAIC0wLDAgKzEsNjAgQEAKLSsvKiBQUiB0cmVlLW9wdGltaXphdGlvbi8zMzEzNiAqLwot Ky8qIHsgZGctZG8gcnVuIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLwotKwotK2V4 dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKLSsKLStzdHJ1Y3QgUwotK3sKLSsgIHZvaWQgKmE7Ci0r ICBpbnQgYlszXTsKLSsgIGRvdWJsZSAqYzsKLSt9OwotK3N0YXRpYyBkb3VibGUgZCwgZTsKLSsK LStzdGF0aWMgc3RydWN0IFMgczsKLSsKLStzdGF0aWMgaW50ICoKLStfX2F0dHJpYnV0ZV9fKChu b2lubGluZSwgY29uc3QpKQotK2ZvbyAodm9pZCkKLSt7Ci0rICByZXR1cm4gKGludCAqKSAmcy5i OwotK30KLSsKLStkb3VibGUgKgotK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKLStiYXIgKGRv dWJsZSAqKmYpCi0rewotKyAgcy5jID0gJmQ7Ci0rICAqZiA9ICZlOwotKyAgLyogQXMgbm90aGlu ZyBldmVyIHRha2VzIHRoZSBhZGRyZXNzIG9mIGFueSBkb3VibGUgKiBmaWVsZCBpbiBzdHJ1Y3Qg UywKLSsgICAgIHRoZSB3cml0ZSB0byAqZiBjYW4ndCBhbGlhcyB3aXRoIHRoZSBzLmMgZmllbGQu ICAqLwotKyAgcmV0dXJuIHMuYzsKLSt9Ci0rCi0raW50Ci0rX19hdHRyaWJ1dGVfXygobm9pbmxp bmUpKQotK2JheiAoaW50ICp4KQotK3sKLSsgIHMuYlswXSA9IDE7Ci0rICAqeCA9IDQ7Ci0rICAv KiBGdW5jdGlvbiBmb28gdGFrZXMgYWRkcmVzcyBvZiBhbiBpbnQgYXJyYXkgZmllbGQgaW4gc3Ry dWN0IFMsCi0rICAgICBzbyAqeCBjYW4gYWxpYXMgd2l0aCB0aGUgcy5iIGZpZWxkIChhbmQgaXQg ZG9lcyBpbiB0aGlzIHRlc3RjYXNlKS4gICovCi0rICByZXR1cm4gcy5iWzBdOwotK30KLSsKLStp bnQKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCi0rdCAodm9pZCkKLSt7Ci0rICBkb3VibGUg KmYgPSAoZG91YmxlICopIDA7Ci0rICByZXR1cm4gMTAgKiAoYmFyICgmZikgIT0gJmQpICsgYmF6 IChmb28gKCkpOwotK30KLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGlmICh0ICgpICE9 IDQpCi0rICAgIGFib3J0ICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIGdjYy90ZXN0c3VpdGUv Z2NjLmRnL3ByMzMxMzYtMi5jCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRn L3ByMzMxMzYtMi5jCShyZXZpc2lvbiAxMjkzNjYpCi1AQCAtMCwwICsxLDYwIEBACi0rLyogUFIg dHJlZS1vcHRpbWl6YXRpb24vMzMxMzYgKi8KLSsvKiB7IGRnLWRvIHJ1biB9ICovCi0rLyogeyBk Zy1vcHRpb25zICItTzIiIH0gKi8KLSsKLStleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7Ci0rCi0r c3RydWN0IFMKLSt7Ci0rICB2b2lkICphOwotKyAgaW50IGI7Ci0rICBpbnQgKmM7Ci0rfTsKLStz dGF0aWMgaW50IGQsIGU7Ci0rCi0rc3RhdGljIHN0cnVjdCBTIHM7Ci0rCi0rc3RhdGljIGludCAq Ci0rX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIGNvbnN0KSkKLStmb28gKHZvaWQpCi0rewotKyAg cmV0dXJuICZzLmI7Ci0rfQotKwotK2ludCAqCi0rX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQot K2JhciAoaW50ICoqZikKLSt7Ci0rICBzLmMgPSAmZDsKLSsgICpmID0gJmU7Ci0rICAvKiBBcyBu b3RoaW5nIGV2ZXIgdGFrZXMgdGhlIGFkZHJlc3Mgb2YgYW55IGludCAqIGZpZWxkIGluIHN0cnVj dCBTLAotKyAgICAgdGhlIHdyaXRlIHRvICpmIGNhbid0IGFsaWFzIHdpdGggdGhlIHMuYyBmaWVs ZC4gICovCi0rICByZXR1cm4gcy5jOwotK30KLSsKLStpbnQKLStfX2F0dHJpYnV0ZV9fKChub2lu bGluZSkpCi0rYmF6IChpbnQgKngpCi0rewotKyAgcy5iID0gMTsKLSsgICp4ID0gNDsKLSsgIC8q IEZ1bmN0aW9uIGZvbyB0YWtlcyBhZGRyZXNzIG9mIGFuIGludCBmaWVsZCBpbiBzdHJ1Y3QgUywK LSsgICAgIHNvICp4IGNhbiBhbGlhcyB3aXRoIHRoZSBzLmIgZmllbGQgKGFuZCBpdCBkb2VzIGlu IHRoaXMgdGVzdGNhc2UpLiAgKi8KLSsgIHJldHVybiBzLmI7Ci0rfQotKwotK2ludAotK19fYXR0 cmlidXRlX18oKG5vaW5saW5lKSkKLSt0ICh2b2lkKQotK3sKLSsgIGludCAqZiA9IChpbnQgKikg MDsKLSsgIHJldHVybiAxMCAqIChiYXIgKCZmKSAhPSAmZCkgKyBiYXogKGZvbyAoKSk7Ci0rfQot KwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgaWYgKHQgKCkgIT0gNCkKLSsgICAgYWJvcnQg KCk7Ci0rICByZXR1cm4gMDsKLSt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcHIzMzIzOC5wYXRjaCBi L2djYzQxLXByMzMyMzgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYzI4 NWEuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtcHIzMzIzOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDE5NCArMCwwIEBACi0yMDA3LTA5LTIwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNv bT4KLQotCVBSIGMvMzMyMzgKLQlQUiBjLzI3MzAxCi0JKiBnaW1wbGlmeS5jIChnaW1wbGlmeV92 bGFfZGVjbCk6IE5ldyBmdW5jdGlvbi4KLQkoZ2ltcGxpZnlfZGVjbF9leHByKTogTW92ZSBWTEEg ZGVjbCBoYW5kbGluZyB0byBnaW1wbGlmeV92bGFfZGVjbC4KLQlDYWxsIGl0LgotCShnaW1wbGlm eV90YXJnZXRfZXhwcik6IEhhbmRsZSB2YXJpYWJsZSBsZW5ndGggVEFSR0VUX0VYUFJzLgotCi0J KiBnY2MuYy10b3J0dXJlL2V4ZWN1dGUvMjAwNzA5MTktMS5jOiBOZXcgdGVzdC4KLQkqIGdjYy5k Zy9wcjMzMjM4LmM6IE5ldyB0ZXN0LgotCSogZ2NjLmRnL3ByMjczMDEuYzogTmV3IHRlc3QuCi0K LS0tLSBnY2MvZ2ltcGxpZnkuYwkocmV2aXNpb24gMTI4NjI4KQotKysrIGdjYy9naW1wbGlmeS5j CShyZXZpc2lvbiAxMjg2MjkpCi1AQCAtMTE0NCw2ICsxMTQ0LDQyIEBAIGdpbXBsaWZ5X3JldHVy bl9leHByICh0cmVlIHN0bXQsIHRyZWUgKnAKLSAgIHJldHVybiBHU19BTExfRE9ORTsKLSB9Ci0g Ci0rc3RhdGljIHZvaWQKLStnaW1wbGlmeV92bGFfZGVjbCAodHJlZSBkZWNsLCB0cmVlICpzdG10 X3ApCi0rewotKyAgLyogVGhpcyBpcyBhIHZhcmlhYmxlLXNpemVkIGRlY2wuICBTaW1wbGlmeSBp dHMgc2l6ZSBhbmQgbWFyayBpdAotKyAgICAgZm9yIGRlZmVycmVkIGV4cGFuc2lvbi4gIE5vdGUg dGhhdCBtdWRmbGFwIGRlcGVuZHMgb24gdGhlIGZvcm1hdAotKyAgICAgb2YgdGhlIGVtaXR0ZWQg Y29kZTogc2VlIG14X3JlZ2lzdGVyX2RlY2xzKCkuICAqLwotKyAgdHJlZSB0LCBhcmdzLCBhZGRy LCBwdHJfdHlwZTsKLSsKLSsgIGdpbXBsaWZ5X29uZV9zaXplcG9zICgmREVDTF9TSVpFIChkZWNs KSwgc3RtdF9wKTsKLSsgIGdpbXBsaWZ5X29uZV9zaXplcG9zICgmREVDTF9TSVpFX1VOSVQgKGRl Y2wpLCBzdG10X3ApOwotKwotKyAgLyogQWxsIG9jY3VycmVuY2VzIG9mIHRoaXMgZGVjbCBpbiBm aW5hbCBnaW1wbGlmaWVkIGNvZGUgd2lsbCBiZQotKyAgICAgcmVwbGFjZWQgYnkgaW5kaXJlY3Rp b24uICBTZXR0aW5nIERFQ0xfVkFMVUVfRVhQUiBkb2VzIHR3bwotKyAgICAgdGhpbmdzOiBGaXJz dCwgaXQgbGV0cyB0aGUgcmVzdCBvZiB0aGUgZ2ltcGxpZmllciBrbm93IHdoYXQKLSsgICAgIHJl cGxhY2VtZW50IHRvIHVzZS4gIFNlY29uZCwgaXQgbGV0cyB0aGUgZGVidWcgaW5mbyBrbm93Ci0r ICAgICB3aGVyZSB0byBmaW5kIHRoZSB2YWx1ZS4gICovCi0rICBwdHJfdHlwZSA9IGJ1aWxkX3Bv aW50ZXJfdHlwZSAoVFJFRV9UWVBFIChkZWNsKSk7Ci0rICBhZGRyID0gY3JlYXRlX3RtcF92YXIg KHB0cl90eXBlLCBnZXRfbmFtZSAoZGVjbCkpOwotKyAgREVDTF9JR05PUkVEX1AgKGFkZHIpID0g MDsKLSsgIHQgPSBidWlsZF9mb2xkX2luZGlyZWN0X3JlZiAoYWRkcik7Ci0rICBTRVRfREVDTF9W QUxVRV9FWFBSIChkZWNsLCB0KTsKLSsgIERFQ0xfSEFTX1ZBTFVFX0VYUFJfUCAoZGVjbCkgPSAx OwotKwotKyAgYXJncyA9IHRyZWVfY29ucyAoTlVMTCwgREVDTF9TSVpFX1VOSVQgKGRlY2wpLCBO VUxMKTsKLSsgIHQgPSBidWlsdF9pbl9kZWNsc1tCVUlMVF9JTl9BTExPQ0FdOwotKyAgdCA9IGJ1 aWxkX2Z1bmN0aW9uX2NhbGxfZXhwciAodCwgYXJncyk7Ci0rICB0ID0gZm9sZF9jb252ZXJ0IChw dHJfdHlwZSwgdCk7Ci0rICB0ID0gYnVpbGQyIChNT0RJRllfRVhQUiwgdm9pZF90eXBlX25vZGUs IGFkZHIsIHQpOwotKwotKyAgZ2ltcGxpZnlfYW5kX2FkZCAodCwgc3RtdF9wKTsKLSsKLSsgIC8q IEluZGljYXRlIHRoYXQgd2UgbmVlZCB0byByZXN0b3JlIHRoZSBzdGFjayBsZXZlbCB3aGVuIHRo ZQotKyAgICAgZW5jbG9zaW5nIEJJTkRfRVhQUiBpcyBleGl0ZWQuICAqLwotKyAgZ2ltcGxpZnlf Y3R4cC0+c2F2ZV9zdGFjayA9IHRydWU7Ci0rfQotKwotIC8qIEdpbXBsaWZpZXMgYSBERUNMX0VY UFIgbm9kZSAqU1RNVF9QIGJ5IG1ha2luZyBhbnkgbmVjZXNzYXJ5IGFsbG9jYXRpb24KLSAgICBh bmQgaW5pdGlhbGl6YXRpb24gZXhwbGljaXQuICAqLwotIAotQEAgLTExNjgsMzkgKzEyMDQsNyBA QCBnaW1wbGlmeV9kZWNsX2V4cHIgKHRyZWUgKnN0bXRfcCkKLSAgICAgICB0cmVlIGluaXQgPSBE RUNMX0lOSVRJQUwgKGRlY2wpOwotIAotICAgICAgIGlmIChUUkVFX0NPREUgKERFQ0xfU0laRSAo ZGVjbCkpICE9IElOVEVHRVJfQ1NUKQotLQl7Ci0tCSAgLyogVGhpcyBpcyBhIHZhcmlhYmxlLXNp emVkIGRlY2wuICBTaW1wbGlmeSBpdHMgc2l6ZSBhbmQgbWFyayBpdAotLQkgICAgIGZvciBkZWZl cnJlZCBleHBhbnNpb24uICBOb3RlIHRoYXQgbXVkZmxhcCBkZXBlbmRzIG9uIHRoZSBmb3JtYXQK LS0JICAgICBvZiB0aGUgZW1pdHRlZCBjb2RlOiBzZWUgbXhfcmVnaXN0ZXJfZGVjbHMoKS4gICov Ci0tCSAgdHJlZSB0LCBhcmdzLCBhZGRyLCBwdHJfdHlwZTsKLS0KLS0JICBnaW1wbGlmeV9vbmVf c2l6ZXBvcyAoJkRFQ0xfU0laRSAoZGVjbCksIHN0bXRfcCk7Ci0tCSAgZ2ltcGxpZnlfb25lX3Np emVwb3MgKCZERUNMX1NJWkVfVU5JVCAoZGVjbCksIHN0bXRfcCk7Ci0tCi0tCSAgLyogQWxsIG9j Y3VycmVuY2VzIG9mIHRoaXMgZGVjbCBpbiBmaW5hbCBnaW1wbGlmaWVkIGNvZGUgd2lsbCBiZQot LQkgICAgIHJlcGxhY2VkIGJ5IGluZGlyZWN0aW9uLiAgU2V0dGluZyBERUNMX1ZBTFVFX0VYUFIg ZG9lcyB0d28KLS0JICAgICB0aGluZ3M6IEZpcnN0LCBpdCBsZXRzIHRoZSByZXN0IG9mIHRoZSBn aW1wbGlmaWVyIGtub3cgd2hhdAotLQkgICAgIHJlcGxhY2VtZW50IHRvIHVzZS4gIFNlY29uZCwg aXQgbGV0cyB0aGUgZGVidWcgaW5mbyBrbm93Ci0tCSAgICAgd2hlcmUgdG8gZmluZCB0aGUgdmFs dWUuICAqLwotLQkgIHB0cl90eXBlID0gYnVpbGRfcG9pbnRlcl90eXBlIChUUkVFX1RZUEUgKGRl Y2wpKTsKLS0JICBhZGRyID0gY3JlYXRlX3RtcF92YXIgKHB0cl90eXBlLCBnZXRfbmFtZSAoZGVj bCkpOwotLQkgIERFQ0xfSUdOT1JFRF9QIChhZGRyKSA9IDA7Ci0tCSAgdCA9IGJ1aWxkX2ZvbGRf aW5kaXJlY3RfcmVmIChhZGRyKTsKLS0JICBTRVRfREVDTF9WQUxVRV9FWFBSIChkZWNsLCB0KTsK LS0JICBERUNMX0hBU19WQUxVRV9FWFBSX1AgKGRlY2wpID0gMTsKLS0KLS0JICBhcmdzID0gdHJl ZV9jb25zIChOVUxMLCBERUNMX1NJWkVfVU5JVCAoZGVjbCksIE5VTEwpOwotLQkgIHQgPSBidWls dF9pbl9kZWNsc1tCVUlMVF9JTl9BTExPQ0FdOwotLQkgIHQgPSBidWlsZF9mdW5jdGlvbl9jYWxs X2V4cHIgKHQsIGFyZ3MpOwotLQkgIHQgPSBmb2xkX2NvbnZlcnQgKHB0cl90eXBlLCB0KTsKLS0J ICB0ID0gYnVpbGQyIChNT0RJRllfRVhQUiwgdm9pZF90eXBlX25vZGUsIGFkZHIsIHQpOwotLQot LQkgIGdpbXBsaWZ5X2FuZF9hZGQgKHQsIHN0bXRfcCk7Ci0tCi0tCSAgLyogSW5kaWNhdGUgdGhh dCB3ZSBuZWVkIHRvIHJlc3RvcmUgdGhlIHN0YWNrIGxldmVsIHdoZW4gdGhlCi0tCSAgICAgZW5j bG9zaW5nIEJJTkRfRVhQUiBpcyBleGl0ZWQuICAqLwotLQkgIGdpbXBsaWZ5X2N0eHAtPnNhdmVf c3RhY2sgPSB0cnVlOwotLQl9Ci0rCWdpbXBsaWZ5X3ZsYV9kZWNsIChkZWNsLCBzdG10X3ApOwot IAotICAgICAgIGlmIChpbml0ICYmIGluaXQgIT0gZXJyb3JfbWFya19ub2RlKQotIAl7Ci1AQCAt NDE0Niw4ICs0MTUwLDE1IEBAIGdpbXBsaWZ5X3RhcmdldF9leHByICh0cmVlICpleHByX3AsIHRy ZWUKLSAgIGlmIChpbml0KQotICAgICB7Ci0gICAgICAgLyogVEFSR0VUX0VYUFIgdGVtcHMgYXJl bid0IHBhcnQgb2YgdGhlIGVuY2xvc2luZyBibG9jaywgc28gYWRkIGl0Ci0tCSB0byB0aGUgdGVt cHMgbGlzdC4gICovCi0tICAgICAgZ2ltcGxlX2FkZF90bXBfdmFyICh0ZW1wKTsKLSsJIHRvIHRo ZSB0ZW1wcyBsaXN0LiAgSGFuZGxlIGFsc28gdmFyaWFibGUgbGVuZ3RoIFRBUkdFVF9FWFBScy4g ICovCi0rICAgICAgaWYgKFRSRUVfQ09ERSAoREVDTF9TSVpFICh0ZW1wKSkgIT0gSU5URUdFUl9D U1QpCi0rCXsKLSsJICBpZiAoIVRZUEVfU0laRVNfR0lNUExJRklFRCAoVFJFRV9UWVBFICh0ZW1w KSkpCi0rCSAgICBnaW1wbGlmeV90eXBlX3NpemVzIChUUkVFX1RZUEUgKHRlbXApLCBwcmVfcCk7 Ci0rCSAgZ2ltcGxpZnlfdmxhX2RlY2wgKHRlbXAsIHByZV9wKTsKLSsJfQotKyAgICAgIGVsc2UK LSsJZ2ltcGxlX2FkZF90bXBfdmFyICh0ZW1wKTsKLSAKLSAgICAgICAvKiBJZiBUQVJHRVRfRVhQ Ul9JTklUSUFMIGlzIHZvaWQsIHRoZW4gdGhlIG1lcmUgZXZhbHVhdGlvbiBvZiB0aGUKLSAJIGV4 cHJlc3Npb24gaXMgc3VwcG9zZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc2xvdC4gICovCi0tLS0gZ2Nj L3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4ZWN1dGUvMjAwNzA5MTktMS5jCShyZXZpc2lvbiAw KQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9leGVjdXRlLzIwMDcwOTE5LTEuYwko cmV2aXNpb24gMTI4NjI5KQotQEAgLTAsMCArMSw0MSBAQAotKy8qIFBSIGMvMzMyMzggKi8KLSsK LSt0eXBlZGVmIF9fU0laRV9UWVBFX18gc2l6ZV90OwotK2ludCBtZW1jbXAgKGNvbnN0IHZvaWQg KiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwotK3ZvaWQgYWJvcnQgKHZvaWQpOwotKwotK3ZvaWQK LStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCi0rYmFyICh2b2lkICp4LCB2b2lkICp5KQotK3sK LSsgIHN0cnVjdCBTIHsgY2hhciB3WzhdOyB9ICpwID0geCwgKnEgPSB5OwotKyAgaWYgKG1lbWNt cCAocC0+dywgInp5eHd2dXQiLCA4KSAhPSAwKQotKyAgICBhYm9ydCAoKTsKLSsgIGlmIChtZW1j bXAgKHFbMF0udywgImFiY2RlZmciLCA4KSAhPSAwKQotKyAgICBhYm9ydCAoKTsKLSsgIGlmICht ZW1jbXAgKHFbMV0udywgIkFCQ0RFRkciLCA4KSAhPSAwKQotKyAgICBhYm9ydCAoKTsKLSsgIGlm IChtZW1jbXAgKHFbMl0udywgInp5eHd2dXQiLCA4KSAhPSAwKQotKyAgICBhYm9ydCAoKTsKLSsg IGlmIChtZW1jbXAgKHFbM10udywgInp5eHd2dXQiLCA4KSAhPSAwKQotKyAgICBhYm9ydCAoKTsK LSt9Ci0rCi0rdm9pZAotK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKLStmb28gKHZvaWQgKngs IGludCB5KQotK3sKLSsgIHN0cnVjdCBTIHsgY2hhciB3W3ldOyB9ICpwID0geCwgYTsKLSsgIGlu dCBpOwotKyAgYSA9ICh7IHN0cnVjdCBTIGI7IGIgPSBwWzJdOyBwWzNdID0gYjsgfSk7Ci0rICBi YXIgKCZhLCB4KTsKLSt9Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgUyB7 IGNoYXIgd1s4XTsgfSBwWzRdCi0rICAgID0geyAiYWJjZGVmZyIsICJBQkNERUZHIiwgInp5eHd2 dXQiLCAiWllYV1ZVVCIgfTsKLSsgIGZvbyAocCwgOCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0tLS0g Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzIzOC5jCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL3ByMzMyMzguYwkocmV2aXNpb24gMTI4NjI5KQotQEAgLTAsMCArMSwxMiBA QAotKy8qIFBSIGMvMzMyMzggKi8KLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGct b3B0aW9ucyAiLXN0ZD1nbnU4OSIgfSAqLwotKwotK3ZvaWQKLStyZXZlcnNlICh2b2lkICp4LCBp bnQgeSwgaW50IHopCi0rewotKyAgc3RydWN0IHsgY2hhciB3W3pdOyB9ICpwID0geCwgYTsKLSsg IGludCBpLCBqOwotKyAgZm9yIChpID0geSAtIDEsIGogPSAwOyBqIDwgeSAvIDI7IGktLSwgaisr KQotKyAgICAoeyBhID0gcFtpXTsgcFtpXSA9IHBbal07IHBbal0gPSBhOyB9KTsKLSt9Ci0tLS0g Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIyNzMwMS5jCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL3ByMjczMDEuYwkocmV2aXNpb24gMTI4NjI5KQotQEAgLTAsMCArMSwxNSBA QAotKy8qIFBSIGMvMjczMDEgKi8KLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGct b3B0aW9ucyAiLU8yIC1zdGQ9Z251ODkiIH0gKi8KLSsKLSt2b2lkCi0rZm9vICh2b2lkICpwdHIs IGxvbmcgbikKLSt7Ci0rICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiIgOjogIm0iICgoeyBzdHJ1 Y3QgeyBjaGFyIHhbbl07IH0gKnAgPSBwdHI7ICpwOyB9KSkpOwotK30KLSsKLSt2b2lkCi0rYmFy ICh2b2lkICpwdHIsIGxvbmcgbikKLSt7Ci0rICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiIgOjog Im0iICgqKHsgc3RydWN0IHsgY2hhciB4W25dOyB9ICpwID0gcHRyOyBwOyB9KSkpOwotK30KCmRp ZmYgLS1naXQgYS9nY2M0MS1wcjMzNTAxLnBhdGNoIGIvZ2NjNDEtcHIzMzUwMS5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRhYjcwMS4uMDAwMDAwMAotLS0gYS9nY2M0MS1w cjMzNTAxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotMjAwNy0xMS0wNyAg SmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQlQUiBjKysvMzM1MDEKLQkqIGNh bGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRG9uJ3QgY2hlY2sgVFJFRV9BRERSRVNTQUJMRQotCW9u IGluY29tcGxldGUgdHlwZS4KLQotCSogZysrLmRnL3dhcm4vaW5jb21wbGV0ZTIuQzogTmV3IHRl c3QuCi0JKiBnKysuZGcvdGVtcGxhdGUvaW5jb21wbGV0ZTQuQzogTmV3IHRlc3QuCi0JKiBnKysu ZGcvdGVtcGxhdGUvaW5jb21wbGV0ZTUuQzogTmV3IHRlc3QuCi0KLS0tLSBnY2MvY3AvY2FsbC5j CShyZXZpc2lvbiAxMjk5NjcpCi0rKysgZ2NjL2NwL2NhbGwuYwkocmV2aXNpb24gMTI5OTY4KQot QEAgLTQ5OTMsNyArNDk5Myw4IEBAIGJ1aWxkX292ZXJfY2FsbCAoc3RydWN0IHpfY2FuZGlkYXRl ICpjYW4KLSAKLSAgICAgICAvKiBEb24ndCBtYWtlIGEgY29weSBoZXJlIGlmIGJ1aWxkX2NhbGwg aXMgZ29pbmcgdG8uICAqLwotICAgICAgIGlmIChjb252LT5raW5kID09IGNrX3J2YWx1ZQotLQkg ICYmICFUUkVFX0FERFJFU1NBQkxFIChjb21wbGV0ZV90eXBlICh0eXBlKSkpCi0rCSAgJiYgQ09N UExFVEVfVFlQRV9QIChjb21wbGV0ZV90eXBlICh0eXBlKSkKLSsJICAmJiAhVFJFRV9BRERSRVNT QUJMRSAodHlwZSkpCi0gCWNvbnYgPSBjb252LT51Lm5leHQ7Ci0gCi0gICAgICAgdmFsID0gY29u dmVydF9saWtlX3dpdGhfY29udGV4dAotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vaW5j b21wbGV0ZTIuQwkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL2lu Y29tcGxldGUyLkMJKHJldmlzaW9uIDEyOTk2OCkKLUBAIC0wLDAgKzEsMTMgQEAKLSsvLyBQUiBj KysvMzM1MDEKLSsvLyB7IGRnLWRvIGNvbXBpbGUgfQotKwotK2NsYXNzIEE7CS8vIHsgZGctZXJy b3IgImZvcndhcmQgZGVjbGFyYXRpb24iIH0KLSsKLStpbnQgZiAoQSk7Ci0rY29uc3QgQSAmbWFr ZSAoKTsKLSsKLStpbnQKLSttYWluICgpCi0rewotKyAgcmV0dXJuIGYgKG1ha2UgKCkpOwkvLyB7 IGRnLWVycm9yICJpbnZhbGlkIHVzZSBvZiB1bmRlZmluZWQgdHlwZXxpbml0aWFsaXppbmcgYXJn dW1lbnQiIH0KLSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvdGVtcGxhdGUvaW5jb21wbGV0 ZTUuQwkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy90ZW1wbGF0ZS9pbmNv bXBsZXRlNS5DCShyZXZpc2lvbiAxMjk5NjgpCi1AQCAtMCwwICsxLDE3IEBACi0rLy8gUFIgYysr LzMzNTAxCi0rLy8geyBkZy1kbyBjb21waWxlIH0KLSsKLStjbGFzcyBBOwkvLyB7IGRnLWVycm9y ICJmb3J3YXJkIGRlY2xhcmF0aW9uIiB9Ci0rCi0rdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVj dCBYCi0rewotKyAgc3RhdGljIGludCBmIChUKTsKLSsgIHN0YXRpYyBjb25zdCBUICZtYWtlICgp OwotKyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBzaXplb2YgKGYgKG1ha2UgKCkpKSA9PSBz aXplb2YgKGludCk7CS8vIHsgZGctZXJyb3IgImludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBl fGluaXRpYWxpemluZyBhcmd1bWVudCIgfQotK307Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsg IHJldHVybiBYIDxBPjo6dmFsdWU7Ci0rfQotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBs YXRlL2luY29tcGxldGU0LkMJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv dGVtcGxhdGUvaW5jb21wbGV0ZTQuQwkocmV2aXNpb24gMTI5OTY4KQotQEAgLTAsMCArMSwxNiBA QAotKy8vIFBSIGMrKy8zMzUwMQotKy8vIHsgZGctZG8gY29tcGlsZSB9Ci0rCi0rY2xhc3MgQTsJ Ly8geyBkZy1lcnJvciAiZm9yd2FyZCBkZWNsYXJhdGlvbiIgfQotKwotK3RlbXBsYXRlIDx0eXBl bmFtZSBUPiBzdHJ1Y3QgWAotK3sKLSsgIHN0YXRpYyBpbnQgZiAoVCk7Ci0rICBzdGF0aWMgY29u c3QgVCAmbWFrZSAoKTsKLSt9OwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rICByZXR1cm4gWDxB Pjo6ZiAoWDxBPjo6bWFrZSAoKSk7CS8vIHsgZGctZXJyb3IgImludmFsaWQgdXNlIG9mIHVuZGVm aW5lZCB0eXBlfGluaXRpYWxpemluZyBhcmd1bWVudCIgfQotK30KCmRpZmYgLS1naXQgYS9nY2M0 MS1wcjMzNTA2LnBhdGNoIGIvZ2NjNDEtcHIzMzUwNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYTVjN2JjYS4uMDAwMDAwMAotLS0gYS9nY2M0MS1wcjMzNTA2LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTY4ICswLDAgQEAKLTIwMDctMDktMjEgIEpha3ViIEplbGluZWsg IDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgYysrLzMzNTA2Ci0JKiBsYW5naG9va3MuaCAoc3Ry dWN0IGxhbmdfaG9va3NfZm9yX3R5cGVzKTogQWRkIHR5cGVfaGFzaF9lcQotCWZpZWxkLgotCSog bGFuZ2hvb2tzLmMgKGxoZF90eXBlX2hhc2hfZXEpOiBOZXcgZnVuY3Rpb24uCi0JKiBsYW5naG9v a3MtZGVmLmggKGxoZF90eXBlX2hhc2hfZXEpOiBOZXcgcHJvdG90eXBlLgotCShMQU5HX0hPT0tT X1RZUEVfSEFTSF9FUSk6IERlZmluZS4KLQkoTEFOR19IT09LU19GT1JfVFlQRVNfSU5JVElBTEla RVIpOiBBZGQgTEFOR19IT09LU19UWVBFX0hBU0hfRVEuCi0JKiB0cmVlLmMgKHR5cGVfaGFzaF9l cSk6IEZvciBGVU5DVElPTl9UWVBFIHVzZQotCWxhbmdfaG9va3MudHlwZS50eXBlX2hhc2hfZXEg aW4gYWRkaXRpb24gdG8gZ2VuZXJpYyB0ZXN0cy4KLQotCSogY3AtdHJlZS5oIChjeHhfdHlwZV9o YXNoX2VxKTogTmV3IHByb3RvdHlwZS4KLQkqIGNwLW9iamNwLWNvbW1vbi5oIChMQU5HX0hPT0tT X1RZUEVfSEFTSF9FUSk6IFJlZGVmaW5lLgotCSogdHJlZS5jIChjeHhfdHlwZV9oYXNoX2VxKTog TmV3IGZ1bmN0aW9uLgotCi0JKiBnKysuZGcvZXh0L2F0dHJpYjI5LkM6IE5ldyB0ZXN0LgotCi0t LS0gZ2NjL2xhbmdob29rcy5oLmpqCTIwMDctMDItMjAgMTY6Mzk6MTIuMDAwMDAwMDAwIC0wNTAw Ci0rKysgZ2NjL2xhbmdob29rcy5oCTIwMDctMDktMjIgMDM6NDY6MTAuMDAwMDAwMDAwIC0wNDAw Ci1AQCAtMTQ4LDYgKzE0OCwxMCBAQCBzdHJ1Y3QgbGFuZ19ob29rc19mb3JfdHlwZXMKLSAgICAg IGZpcnN0cHJpdmF0ZSB2YXJpYWJsZXMuICAqLwotICAgdm9pZCAoKm9tcF9maXJzdHByaXZhdGl6 ZV90eXBlX3NpemVzKSAoc3RydWN0IGdpbXBsaWZ5X29tcF9jdHggKiwgdHJlZSk7Ci0gCi0rICAv KiBSZXR1cm4gVFJVRSBpZiBUWVBFMSBhbmQgVFlQRTIgYXJlIGlkZW50aWNhbCBmb3IgdHlwZSBo YXNoaW5nIHB1cnBvc2VzLgotKyAgICAgQ2FsbGVkIG9ubHkgYWZ0ZXIgZG9pbmcgYWxsIGxhbmd1 YWdlIGluZGVwZW5kZW50IGNoZWNrcy4gICovCi0rICBib29sICgqdHlwZV9oYXNoX2VxKSAodHJl ZSwgdHJlZSk7Ci0rCi0gICAvKiBOb256ZXJvIGlmIHR5cGVzIHRoYXQgYXJlIGlkZW50aWNhbCBh cmUgdG8gYmUgaGFzaGVkIHNvIHRoYXQgb25seQotICAgICAgb25lIGNvcHkgaXMga2VwdC4gIElm IGEgbGFuZ3VhZ2UgcmVxdWlyZXMgdW5pcXVlIHR5cGVzIGZvciBlYWNoCi0gICAgICB1c2VyLXNw ZWNpZmllZCB0eXBlLCBzdWNoIGFzIEFkYSwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIFRSVUUuICAq LwotLS0tIGdjYy9sYW5naG9va3MuYy5qagkyMDA3LTAyLTIwIDE2OjM5OjEyLjAwMDAwMDAwMCAt MDUwMAotKysrIGdjYy9sYW5naG9va3MuYwkyMDA3LTA5LTIyIDAzOjQ2OjEwLjAwMDAwMDAwMCAt MDQwMAotQEAgLTQxMSw2ICs0MTEsMTYgQEAgbGhkX3RyZWVfZHVtcF90eXBlX3F1YWxzICh0cmVl IHQpCi0gLyogbGFuZ19ob29rcy5leHByX3NpemU6IERldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUg dmFsdWUgb2YgYW4gZXhwcmVzc2lvbiBUCi0gICAgaW4gYSBsYW5ndWFnZS1zcGVjaWZpYyB3YXku ICBSZXR1cm5zIGEgdHJlZSBmb3IgdGhlIHNpemUgaW4gYnl0ZXMuICAqLwotIAotKy8qIFJldHVy biBUUlVFIGlmIFRZUEUxIGFuZCBUWVBFMiBhcmUgaWRlbnRpY2FsIGZvciB0eXBlIGhhc2hpbmcg cHVycG9zZXMuCi0rICAgQ2FsbGVkIG9ubHkgYWZ0ZXIgZG9pbmcgYWxsIGxhbmd1YWdlIGluZGVw ZW5kZW50IGNoZWNrcy4gICovCi0rCi0rYm9vbAotK2xoZF90eXBlX2hhc2hfZXEgKHRyZWUgdHlw ZWEgQVRUUklCVVRFX1VOVVNFRCwKLSsJCSAgdHJlZSB0eXBlYiBBVFRSSUJVVEVfVU5VU0VEKQot K3sKLSsgIHJldHVybiB0cnVlOwotK30KLSsKLSB0cmVlCi0gbGhkX2V4cHJfc2l6ZSAodHJlZSBl eHApCi0gewotLS0tIGdjYy9sYW5naG9va3MtZGVmLmguamoJMjAwNy0wMi0yMCAxNjozOToxMy4w MDAwMDAwMDAgLTA1MDAKLSsrKyBnY2MvbGFuZ2hvb2tzLWRlZi5oCTIwMDctMDktMjIgMDM6NDY6 NTYuMDAwMDAwMDAwIC0wNDAwCi1AQCAtNzAsNiArNzAsNyBAQCBleHRlcm4gdHJlZSBsaGRfZXhw cl9zaXplICh0cmVlKTsKLSBleHRlcm4gc2l6ZV90IGxoZF90cmVlX3NpemUgKGVudW0gdHJlZV9j b2RlKTsKLSBleHRlcm4gSE9TVF9XSURFX0lOVCBsaGRfdG9fdGFyZ2V0X2NoYXJzZXQgKEhPU1Rf V0lERV9JTlQpOwotIGV4dGVybiB0cmVlIGxoZF9leHByX3RvX2RlY2wgKHRyZWUsIGJvb2wgKiwg Ym9vbCAqLCBib29sICopOwotK2V4dGVybiBib29sIGxoZF90eXBlX2hhc2hfZXEgKHRyZWUsIHRy ZWUpOwotIAotIC8qIERlY2xhcmF0aW9ucyBvZiBkZWZhdWx0IHRyZWUgaW5saW5pbmcgaG9va3Mu ICAqLwotIGV4dGVybiB0cmVlIGxoZF90cmVlX2lubGluaW5nX3dhbGtfc3VidHJlZXMgKHRyZWUg KiwgaW50ICosIHdhbGtfdHJlZV9mbiwKLUBAIC0yMjAsNiArMjIxLDcgQEAgZXh0ZXJuIHRyZWUg bGhkX21ha2Vfbm9kZSAoZW51bSB0cmVlX2NvZAotICNkZWZpbmUgTEFOR19IT09LU19UWVBFX01B WF9TSVpFCWxoZF9yZXR1cm5fbnVsbF90cmVlCi0gI2RlZmluZSBMQU5HX0hPT0tTX09NUF9GSVJT VFBSSVZBVElaRV9UWVBFX1NJWkVTIFwKLSAgIGxoZF9vbXBfZmlyc3Rwcml2YXRpemVfdHlwZV9z aXplcwotKyNkZWZpbmUgTEFOR19IT09LU19UWVBFX0hBU0hfRVEJCWxoZF90eXBlX2hhc2hfZXEK LSAjZGVmaW5lIExBTkdfSE9PS1NfSEFTSF9UWVBFUwkJdHJ1ZQotIAotICNkZWZpbmUgTEFOR19I T09LU19GT1JfVFlQRVNfSU5JVElBTElaRVIgeyBcCi1AQCAtMjM0LDYgKzIzNiw3IEBAIGV4dGVy biB0cmVlIGxoZF9tYWtlX25vZGUgKGVudW0gdHJlZV9jb2QKLSAgIExBTkdfSE9PS1NfSU5DT01Q TEVURV9UWVBFX0VSUk9SLCBcCi0gICBMQU5HX0hPT0tTX1RZUEVfTUFYX1NJWkUsIFwKLSAgIExB TkdfSE9PS1NfT01QX0ZJUlNUUFJJVkFUSVpFX1RZUEVfU0laRVMsIFwKLSsgIExBTkdfSE9PS1Nf VFlQRV9IQVNIX0VRLCBcCi0gICBMQU5HX0hPT0tTX0hBU0hfVFlQRVMgXAotIH0KLSAKLS0tLSBn Y2MvdHJlZS5jLmpqCTIwMDctMDQtMDMgMDc6MTg6MjYuMDAwMDAwMDAwIC0wNDAwCi0rKysgZ2Nj L3RyZWUuYwkyMDA3LTA5LTIyIDAzOjQ2OjEwLjAwMDAwMDAwMCAtMDQwMAotQEAgLTQxNjgsMTcg KzQxNjgsMjEgQEAgdHlwZV9oYXNoX2VxIChjb25zdCB2b2lkICp2YSwgY29uc3Qgdm9pZAotIAkJ CQkgICAgICBUWVBFX0ZJRUxEUyAoYi0+dHlwZSkpKSk7Ci0gCi0gICAgIGNhc2UgRlVOQ1RJT05f VFlQRToKLS0gICAgICByZXR1cm4gKFRZUEVfQVJHX1RZUEVTIChhLT50eXBlKSA9PSBUWVBFX0FS R19UWVBFUyAoYi0+dHlwZSkKLS0JICAgICAgfHwgKFRZUEVfQVJHX1RZUEVTIChhLT50eXBlKQot LQkJICAmJiBUUkVFX0NPREUgKFRZUEVfQVJHX1RZUEVTIChhLT50eXBlKSkgPT0gVFJFRV9MSVNU Ci0tCQkgICYmIFRZUEVfQVJHX1RZUEVTIChiLT50eXBlKQotLQkJICAmJiBUUkVFX0NPREUgKFRZ UEVfQVJHX1RZUEVTIChiLT50eXBlKSkgPT0gVFJFRV9MSVNUCi0tCQkgICYmIHR5cGVfbGlzdF9l cXVhbCAoVFlQRV9BUkdfVFlQRVMgKGEtPnR5cGUpLAotLQkJCQkgICAgICBUWVBFX0FSR19UWVBF UyAoYi0+dHlwZSkpKSk7Ci0rICAgICAgaWYgKFRZUEVfQVJHX1RZUEVTIChhLT50eXBlKSA9PSBU WVBFX0FSR19UWVBFUyAoYi0+dHlwZSkKLSsJICB8fCAoVFlQRV9BUkdfVFlQRVMgKGEtPnR5cGUp Ci0rCSAgICAgICYmIFRSRUVfQ09ERSAoVFlQRV9BUkdfVFlQRVMgKGEtPnR5cGUpKSA9PSBUUkVF X0xJU1QKLSsJICAgICAgJiYgVFlQRV9BUkdfVFlQRVMgKGItPnR5cGUpCi0rCSAgICAgICYmIFRS RUVfQ09ERSAoVFlQRV9BUkdfVFlQRVMgKGItPnR5cGUpKSA9PSBUUkVFX0xJU1QKLSsJICAgICAg JiYgdHlwZV9saXN0X2VxdWFsIChUWVBFX0FSR19UWVBFUyAoYS0+dHlwZSksCi0rCQkJCSAgVFlQ RV9BUkdfVFlQRVMgKGItPnR5cGUpKSkpCi0rCWJyZWFrOwotKyAgICAgIHJldHVybiAwOwotIAot ICAgICBkZWZhdWx0OgotICAgICAgIHJldHVybiAwOwotICAgICB9Ci0rCi0rICByZXR1cm4gbGFu Z19ob29rcy50eXBlcy50eXBlX2hhc2hfZXEgKGEtPnR5cGUsIGItPnR5cGUpOwotIH0KLSAKLSAv KiBSZXR1cm4gdGhlIGNhY2hlZCBoYXNoIHZhbHVlLiAgKi8KLS0tLSBnY2MvY3AvY3AtdHJlZS5o LmpqCTIwMDctMDYtMjYgMDc6NTc6MDkuMDAwMDAwMDAwIC0wNDAwCi0rKysgZ2NjL2NwL2NwLXRy ZWUuaAkyMDA3LTA5LTIyIDAzOjUwOjIyLjAwMDAwMDAwMCAtMDQwMAotQEAgLTQ0MjEsNyArNDQy MSw4IEBAIGV4dGVybiB0cmVlIGNwX2FkZF9wZW5kaW5nX2ZuX2RlY2xzCQkodm8KLSBleHRlcm4g aW50IGNwX2F1dG9fdmFyX2luX2ZuX3AJCQkodHJlZSx0cmVlKTsKLSBleHRlcm4gdHJlZSBmb2xk X2lmX25vdF9pbl90ZW1wbGF0ZQkJKHRyZWUpOwotIGV4dGVybiB0cmVlIHJ2YWx1ZSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh0cmVlKTsKLS0gICAKLStleHRlcm4gYm9vbCBjeHhfdHlw ZV9oYXNoX2VxCQkJKHRyZWUsIHRyZWUpOwotKwotIC8qIGluIHR5cGVjay5jICovCi0gZXh0ZXJu IGludCBzdHJpbmdfY29udl9wCQkJKHRyZWUsIHRyZWUsIGludCk7Ci0gZXh0ZXJuIHRyZWUgY3Bf dHJ1dGh2YWx1ZV9jb252ZXJzaW9uCQkodHJlZSk7Ci0tLS0gZ2NjL2NwL2NwLW9iamNwLWNvbW1v bi5oLmpqCTIwMDctMDItMjAgMTY6Mzc6MzQuMDAwMDAwMDAwIC0wNTAwCi0rKysgZ2NjL2NwL2Nw LW9iamNwLWNvbW1vbi5oCTIwMDctMDktMjIgMDM6NDk6MzguMDAwMDAwMDAwIC0wNDAwCi1AQCAt ODUsNiArODUsOCBAQCBleHRlcm4gdHJlZSBvYmpjcF90c3Vic3RfY29weV9hbmRfYnVpbGQgCi0g I2RlZmluZSBMQU5HX0hPT0tTX1dSSVRFX0dMT0JBTFMgbGhkX2RvX25vdGhpbmcKLSAjdW5kZWYg TEFOR19IT09LU19DT01EQVRfR1JPVVAKLSAjZGVmaW5lIExBTkdfSE9PS1NfQ09NREFUX0dST1VQ IGN4eF9jb21kYXRfZ3JvdXAKLSsjdW5kZWYgTEFOR19IT09LU19UWVBFX0hBU0hfRVEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKLSsjZGVmaW5lIExBTkdfSE9PS1NfVFlQRV9IQVNI X0VRIGN4eF90eXBlX2hhc2hfZXEKLSAKLSAjdW5kZWYgTEFOR19IT09LU19GVU5DVElPTl9JTklU Ci0gI2RlZmluZSBMQU5HX0hPT0tTX0ZVTkNUSU9OX0lOSVQgY3h4X3B1c2hfZnVuY3Rpb25fY29u dGV4dAotLS0tIGdjYy9jcC90cmVlLmMuamoJMjAwNy0wMy0xMiAwMzoyODowMS4wMDAwMDAwMDAg LTA0MDAKLSsrKyBnY2MvY3AvdHJlZS5jCTIwMDctMDktMjIgMDM6NDY6MTAuMDAwMDAwMDAwIC0w NDAwCi1AQCAtMTk1OSw2ICsxOTU5LDIyIEBAIGNwX2J1aWxkX3R5cGVfYXR0cmlidXRlX3Zhcmlh bnQgKHRyZWUgdHkKLSAgIHJldHVybiBuZXdfdHlwZTsKLSB9Ci0gCi0rLyogUmV0dXJuIFRSVUUg aWYgVFlQRTEgYW5kIFRZUEUyIGFyZSBpZGVudGljYWwgZm9yIHR5cGUgaGFzaGluZyBwdXJwb3Nl cy4KLSsgICBDYWxsZWQgb25seSBhZnRlciBkb2luZyBhbGwgbGFuZ3VhZ2UgaW5kZXBlbmRlbnQg Y2hlY2tzLiAgT25seQotKyAgIHRvIGNoZWNrIFRZUEVfUkFJU0VTX0VYQ0VQVElPTlMgZm9yIEZV TkNUSU9OX1RZUEUsIHRoZSByZXN0IGlzIGFscmVhZHkKLSsgICBjb21wYXJlZCBpbiB0eXBlX2hh c2hfZXEuICAqLwotKwotK2Jvb2wKLStjeHhfdHlwZV9oYXNoX2VxICh0cmVlIHR5cGVhLCB0cmVl IHR5cGViKQotK3sKLSsgIGlmIChUUkVFX0NPREUgKHR5cGVhKSAhPSBGVU5DVElPTl9UWVBFCi0r ICAgICAgfHwgVFlQRV9SQUlTRVNfRVhDRVBUSU9OUyAodHlwZWEpID09IFRZUEVfUkFJU0VTX0VY Q0VQVElPTlMgKHR5cGViKSkKLSsgICAgcmV0dXJuIHRydWU7Ci0rCi0rICByZXR1cm4gY29tcF9l eGNlcHRfc3BlY3MgKFRZUEVfUkFJU0VTX0VYQ0VQVElPTlMgKHR5cGVhKSwKLSsJCQkgICAgVFlQ RV9SQUlTRVNfRVhDRVBUSU9OUyAodHlwZWIpLCAxKTsKLSt9Ci0rCi0gLyogQXBwbHkgRlVOQyB0 byBhbGwgbGFuZ3VhZ2Utc3BlY2lmaWMgc3ViLXRyZWVzIG9mIFRQIGluIGEgcHJlLW9yZGVyCi0g ICAgdHJhdmVyc2FsLiAgQ2FsbGVkIGZyb20gd2Fsa190cmVlLiAgKi8KLSAKLS0tLSBnY2MvdGVz dHN1aXRlL2crKy5kZy9leHQvYXR0cmliMjkuQy5qagkyMDA3LTA5LTIyIDAzOjQ2OjEwLjAwMDAw MDAwMCAtMDQwMAotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9hdHRyaWIyOS5DCTIwMDct MDktMjIgMDM6NDY6MTAuMDAwMDAwMDAwIC0wNDAwCi1AQCAtMCwwICsxLDEwIEBACi0rLy8gUFIg YysrLzMzNTA2Ci0rLy8geyBkZy1kbyBjb21waWxlIH0KLSsKLStleHRlcm4gaW50IGYxIChjaGFy ICopIF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsKLStleHRlcm4gaW50IGYy IChjaGFyICopIHRocm93ICgpIF9fYXR0cmlidXRlX18gKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsK LStleHRlcm4gaW50IGYyIChjaGFyICopIHRocm93ICgpOwotKwotK2V4dGVybiBpbnQgZjMgKGNo YXIgKikgX19hdHRyaWJ1dGVfXyAoKG5vbm51bGwgKDEpKSk7Ci0rZXh0ZXJuIGludCBmNCAoY2hh ciAqKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgobm9ubnVsbCAoMSkpKTsKLStleHRlcm4gaW50 IGY0IChjaGFyICopIHRocm93ICgpOwoKZGlmZiAtLWdpdCBhL2djYzQxLXByMzM1MTYucGF0Y2gg Yi9nY2M0MS1wcjMzNTE2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDkx ZTExLi4wMDAwMDAwCi0tLSBhL2djYzQxLXByMzM1MTYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw2MyArMCwwIEBACi0yMDA3LTExLTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNv bT4KLQotCVBSIGMrKy8zMzUxNgotCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9uZXN0ZWRfbmFtZV9z cGVjaWZpZXJfb3B0KTogVXNlCi0JVFlQRV9NQUlOX1ZBUklBTlQgKG5ld19zY29wZSkgYXMgc2Nv cGUgaWYgbmV3X3Njb3BlIGlzIGFuIGluY29tcGxldGUKLQl0eXBlZGVmIG9mIGN1cnJlbnRseSBv cGVuIGNsYXNzLgotCi0JKiBnKysuZGcvbG9va3VwL3R5cGVkZWYxLkM6IE5ldyB0ZXN0LgotCi0t LS0gZ2NjL2NwL3BhcnNlci5jCShyZXZpc2lvbiAxMjk4NjEpCi0rKysgZ2NjL2NwL3BhcnNlci5j CShyZXZpc2lvbiAxMjk4NjIpCi1AQCAtNDA4NSw3ICs0MDg1LDE1IEBAIGNwX3BhcnNlcl9uZXN0 ZWRfbmFtZV9zcGVjaWZpZXJfb3B0IChjcF8KLSAJICAmJiAhQ09NUExFVEVfVFlQRV9QIChuZXdf c2NvcGUpCi0gCSAgLyogRG8gbm90IHRyeSB0byBjb21wbGV0ZSBkZXBlbmRlbnQgdHlwZXMuICAq LwotIAkgICYmICFkZXBlbmRlbnRfdHlwZV9wIChuZXdfc2NvcGUpKQotLQluZXdfc2NvcGUgPSBj b21wbGV0ZV90eXBlIChuZXdfc2NvcGUpOwotKwl7Ci0rCSAgbmV3X3Njb3BlID0gY29tcGxldGVf dHlwZSAobmV3X3Njb3BlKTsKLSsJICAvKiBJZiBpdCBpcyBhIHR5cGVkZWYgdG8gY3VycmVudCBj bGFzcywgdXNlIHRoZSBjdXJyZW50Ci0rCSAgICAgY2xhc3MgaW5zdGVhZCwgYXMgdGhlIHR5cGVk ZWYgd29uJ3QgaGF2ZSBhbnkgbmFtZXMgaW5zaWRlCi0rCSAgICAgaXQgeWV0LiAgKi8KLSsJICBp ZiAoIUNPTVBMRVRFX1RZUEVfUCAobmV3X3Njb3BlKQotKwkgICAgICAmJiBjdXJyZW50bHlfb3Bl bl9jbGFzcyAobmV3X3Njb3BlKSkKLSsJICAgIG5ld19zY29wZSA9IFRZUEVfTUFJTl9WQVJJQU5U IChuZXdfc2NvcGUpOwotKwl9Ci0gICAgICAgLyogTWFrZSBzdXJlIHdlIGxvb2sgaW4gdGhlIHJp Z2h0IHNjb3BlIHRoZSBuZXh0IHRpbWUgdGhyb3VnaAotIAkgdGhlIGxvb3AuICAqLwotICAgICAg IHBhcnNlci0+c2NvcGUgPSBuZXdfc2NvcGU7Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9v a3VwL3R5cGVkZWYxLkMJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbG9v a3VwL3R5cGVkZWYxLkMJKHJldmlzaW9uIDEyOTg2MikKLUBAIC0wLDAgKzEsMzIgQEAKLSsvLyBQ UiBjKysvMzM1MTYKLSsvLyB7IGRnLWRvIGNvbXBpbGUgfQotKwotK3N0cnVjdCBTMTsKLSt0eXBl ZGVmIFMxIFQxOwotK3N0cnVjdCBTMSB7Ci0rICB0eXBlZGVmIGludCBVOwotKyAgVDE6OlUgaTsK LSt9OwotK3N0cnVjdCBTMjsKLSt0eXBlZGVmIFMyIFQyOwotK3N0cnVjdCBTMiB7Ci0rICB0eXBl ZGVmIGludCBVOwotK307Ci0rVDI6OlUgajsKLStzdHJ1Y3QgUzM7Ci0rdHlwZWRlZiBTMyBUMzsK LStzdHJ1Y3QgUzMgewotKyAgdHlwZWRlZiBpbnQgVTsKLSsgIFMzOjpVIGk7Ci0rfTsKLSsKLSt2 b2lkCi0rZm9vICgpCi0rewotKyAgUzEgczE7Ci0rICBTMiBzMjsKLSsgIFMzIHMzOwotKyAgczEu aSA9IDY7Ci0rICBqID0gNzsKLSsgIHMzLmkgPSA4OwotK30KCmRpZmYgLS1naXQgYS9nY2M0MS1w cjMzNTM3LnBhdGNoIGIvZ2NjNDEtcHIzMzUzNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDNmZDUwMC4uMDAwMDAwMAotLS0gYS9nY2M0MS1wcjMzNTM3LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotMjAwNy0xMS0wMSAgSmFrdWIgSmVsaW5layAgPGph a3ViQHJlZGhhdC5jb20+Ci0KLQlQUiBkZWJ1Zy8zMzUzNwotCSogZHdhcmYyb3V0LmMgKGdlbl9m b3JtYWxfcGFyYW1ldGVyX2RpZSwgZ2VuX3ZhcmlhYmxlX2RpZSwKLQlnZW5fZGVjbF9kaWUpOiBV c2UgVFJFRV9UWVBFIChUUkVFX1RZUEUgKGRlY2wpKSBhcyB0eXBlCi0JcmF0aGVyIHRoYW4gVFJF RV9UWVBFIChkZWNsKSBpZiBERUNMX0JZX1JFRkVSRU5DRSAoZGVjbCkuCi0KLS0tLSBnY2MvZHdh cmYyb3V0LmMJKHJldmlzaW9uIDEyOTgxOSkKLSsrKyBnY2MvZHdhcmYyb3V0LmMJKHJldmlzaW9u IDEyOTgyMCkKLUBAIC0xMTgzMiw4ICsxMTgzMiwxMSBAQCBnZW5fZm9ybWFsX3BhcmFtZXRlcl9k aWUgKHRyZWUgbm9kZSwgZHdfCi0gCWFkZF9hYnN0cmFjdF9vcmlnaW5fYXR0cmlidXRlIChwYXJt X2RpZSwgb3JpZ2luKTsKLSAgICAgICBlbHNlCi0gCXsKLSsJICB0cmVlIHR5cGUgPSBUUkVFX1RZ UEUgKG5vZGUpOwotIAkgIGFkZF9uYW1lX2FuZF9zcmNfY29vcmRzX2F0dHJpYnV0ZXMgKHBhcm1f ZGllLCBub2RlKTsKLS0JICBhZGRfdHlwZV9hdHRyaWJ1dGUgKHBhcm1fZGllLCBUUkVFX1RZUEUg KG5vZGUpLAotKwkgIGlmIChERUNMX0JZX1JFRkVSRU5DRSAobm9kZSkpCi0rCSAgICB0eXBlID0g VFJFRV9UWVBFICh0eXBlKTsKLSsJICBhZGRfdHlwZV9hdHRyaWJ1dGUgKHBhcm1fZGllLCB0eXBl LAotIAkJCSAgICAgIFRSRUVfUkVBRE9OTFkgKG5vZGUpLAotIAkJCSAgICAgIFRSRUVfVEhJU19W T0xBVElMRSAobm9kZSksCi0gCQkJICAgICAgY29udGV4dF9kaWUpOwotQEAgLTEyNDM3LDggKzEy NDQwLDE0IEBAIGdlbl92YXJpYWJsZV9kaWUgKHRyZWUgZGVjbCwgZHdfZGllX3JlZiAKLSAgICAg fQotICAgZWxzZQotICAgICB7Ci0rICAgICAgdHJlZSB0eXBlID0gVFJFRV9UWVBFIChkZWNsKTsK LSsgICAgICBpZiAoKFRSRUVfQ09ERSAoZGVjbCkgPT0gUEFSTV9ERUNMCi0rCSAgIHx8IFRSRUVf Q09ERSAoZGVjbCkgPT0gUkVTVUxUX0RFQ0wpCi0rCSAgJiYgREVDTF9CWV9SRUZFUkVOQ0UgKGRl Y2wpKQotKwl0eXBlID0gVFJFRV9UWVBFICh0eXBlKTsKLSsKLSAgICAgICBhZGRfbmFtZV9hbmRf c3JjX2Nvb3Jkc19hdHRyaWJ1dGVzICh2YXJfZGllLCBkZWNsKTsKLS0gICAgICBhZGRfdHlwZV9h dHRyaWJ1dGUgKHZhcl9kaWUsIFRSRUVfVFlQRSAoZGVjbCksIFRSRUVfUkVBRE9OTFkgKGRlY2wp LAotKyAgICAgIGFkZF90eXBlX2F0dHJpYnV0ZSAodmFyX2RpZSwgdHlwZSwgVFJFRV9SRUFET05M WSAoZGVjbCksCi0gCQkJICBUUkVFX1RISVNfVk9MQVRJTEUgKGRlY2wpLCBjb250ZXh0X2RpZSk7 Ci0gCi0gICAgICAgaWYgKFRSRUVfUFVCTElDIChkZWNsKSkKLUBAIC0xMzY5NCw3ICsxMzcwMywx MCBAQCBnZW5fZGVjbF9kaWUgKHRyZWUgZGVjbCwgZHdfZGllX3JlZiBjb250Ci0gCi0gICAgICAg LyogT3V0cHV0IGFueSBESUVzIHRoYXQgYXJlIG5lZWRlZCB0byBzcGVjaWZ5IHRoZSB0eXBlIG9m IHRoaXMgZGF0YQotIAkgb2JqZWN0LiAgKi8KLS0gICAgICBnZW5fdHlwZV9kaWUgKFRSRUVfVFlQ RSAoZGVjbCksIGNvbnRleHRfZGllKTsKLSsgICAgICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBS RVNVTFRfREVDTCAmJiBERUNMX0JZX1JFRkVSRU5DRSAoZGVjbCkpCi0rCWdlbl90eXBlX2RpZSAo VFJFRV9UWVBFIChUUkVFX1RZUEUgKGRlY2wpKSwgY29udGV4dF9kaWUpOwotKyAgICAgIGVsc2UK LSsJZ2VuX3R5cGVfZGllIChUUkVFX1RZUEUgKGRlY2wpLCBjb250ZXh0X2RpZSk7Ci0gCi0gICAg ICAgLyogQW5kIGl0cyBjb250YWluaW5nIHR5cGUuICAqLwotICAgICAgIG9yaWdpbiA9IGRlY2xf Y2xhc3NfY29udGV4dCAoZGVjbCk7Ci1AQCAtMTM3MjgsNyArMTM3NDAsMTAgQEAgZ2VuX2RlY2xf ZGllICh0cmVlIGRlY2wsIGR3X2RpZV9yZWYgY29udAotICAgICAgIGJyZWFrOwotIAotICAgICBj YXNlIFBBUk1fREVDTDoKLS0gICAgICBnZW5fdHlwZV9kaWUgKFRSRUVfVFlQRSAoZGVjbCksIGNv bnRleHRfZGllKTsKLSsgICAgICBpZiAoREVDTF9CWV9SRUZFUkVOQ0UgKGRlY2wpKQotKwlnZW5f dHlwZV9kaWUgKFRSRUVfVFlQRSAoVFJFRV9UWVBFIChkZWNsKSksIGNvbnRleHRfZGllKTsKLSsg ICAgICBlbHNlCi0rCWdlbl90eXBlX2RpZSAoVFJFRV9UWVBFIChkZWNsKSwgY29udGV4dF9kaWUp OwotICAgICAgIGdlbl9mb3JtYWxfcGFyYW1ldGVyX2RpZSAoZGVjbCwgY29udGV4dF9kaWUpOwot ICAgICAgIGJyZWFrOwotIAoKZGlmZiAtLWdpdCBhL2djYzQxLXByMzM2MTYucGF0Y2ggYi9nY2M0 MS1wcjMzNjE2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODE3ZmUxLi4w MDAwMDAwCi0tLSBhL2djYzQxLXByMzM2MTYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NCAr MCwwIEBACi0yMDA3LTEwLTMwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQot CVBSIGMrKy8zMzYxNgotCSogZGVjbDIuYyAoYnVpbGRfb2Zmc2V0X3JlZl9jYWxsX2Zyb21fdHJl ZSk6IENhbGwKLQlidWlsZF9ub25fZGVwZW5kZW50X2V4cHIgb24gb2JqZWN0IHByaW9yIHRvIGJ1 aWxkaW5nIEFERFJfRVhQUiBmcm9tIGl0Ci0JaWYgRk4gaXMgRE9UU1RBUl9FWFBSLgotCi0JKiBn KysuZGcvdGVtcGxhdGUvcHRybWVtMTguQzogTmV3IHRlc3QuCi0KLS0tLSBnY2MvY3AvZGVjbDIu YwkocmV2aXNpb24gMTI5NzgzKQotKysrIGdjYy9jcC9kZWNsMi5jCShyZXZpc2lvbiAxMjk3ODQp Ci1AQCAtMzQ5OSw5ICszNDk5LDkgQEAgYnVpbGRfb2Zmc2V0X3JlZl9jYWxsX2Zyb21fdHJlZSAo dHJlZSBmbgotIAkgcGFyYW1ldGVyLiAgVGhhdCBtdXN0IGJlIGRvbmUgYmVmb3JlIHRoZSBGTiBp cyB0cmFuc2Zvcm1lZAotIAkgYmVjYXVzZSB3ZSBkZXBlbmQgb24gdGhlIGZvcm0gb2YgRk4uICAq LwotICAgICAgIGFyZ3MgPSBidWlsZF9ub25fZGVwZW5kZW50X2FyZ3MgKGFyZ3MpOwotKyAgICAg IG9iamVjdCA9IGJ1aWxkX25vbl9kZXBlbmRlbnRfZXhwciAob2JqZWN0KTsKLSAgICAgICBpZiAo VFJFRV9DT0RFIChmbikgPT0gRE9UU1RBUl9FWFBSKQotIAlvYmplY3QgPSBidWlsZF91bmFyeV9v cCAoQUREUl9FWFBSLCBvYmplY3QsIDApOwotLSAgICAgIG9iamVjdCA9IGJ1aWxkX25vbl9kZXBl bmRlbnRfZXhwciAob2JqZWN0KTsKLSAgICAgICBhcmdzID0gdHJlZV9jb25zIChOVUxMX1RSRUUs IG9iamVjdCwgYXJncyk7Ci0gICAgICAgLyogTm93IHRoYXQgdGhlIGFyZ3VtZW50cyBhcmUgZG9u ZSwgdHJhbnNmb3JtIEZOLiAgKi8KLSAgICAgICBmbiA9IGJ1aWxkX25vbl9kZXBlbmRlbnRfZXhw ciAoZm4pOwotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBsYXRlL3B0cm1lbTE4LkMJKHJl dmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvdGVtcGxhdGUvcHRybWVtMTguQwko cmV2aXNpb24gMTI5Nzg0KQotQEAgLTAsMCArMSw0OSBAQAotKy8vIFBSIGMrKy8zMzYxNgotKy8v IHsgZGctZG8gcnVuIH0KLSsvLyB7IGRnLW9wdGlvbnMgIi1PMiIgfQotKwotK2V4dGVybiAiQyIg dm9pZCBhYm9ydCAoKTsKLSsKLStzdHJ1Y3QgUyB7Ci0rICBpbnQgYzsKLSsgIFMgKCkgOiBjICgw KSB7fQotKyAgdmlydHVhbCB2b2lkIGYxICgpIHsgYyArPSAxOyB9Ci0rICB2aXJ0dWFsIHZvaWQg ZjIgKCkgeyBjICs9IDE2OyB9Ci0rfTsKLSsKLStzdHJ1Y3QgVCB7Ci0rICBTIHM7Ci0rfTsKLSsK LSt0eXBlZGVmIHZvaWQgKFM6OipRKSAoKTsKLSsKLSt0ZW1wbGF0ZSA8USBQPgotK3ZvaWQgdGVz dDEgKFQgKnQpCi0rewotKyAgKHQtPnMuKlApKCk7Ci0rfQotKwotK3RlbXBsYXRlIDxRIFA+Ci0r dm9pZCB0ZXN0MiAoVCAqdCkKLSt7Ci0rICBTICZzID0gdC0+czsKLSsgIChzLipQKSgpOwotK30K LSsKLStpbnQKLSttYWluICgpCi0rewotKyAgVCB0OwotKyAgdGVzdDEgPCZTOjpmMT4gKCZ0KTsK LSsgIGlmICh0LnMuYyAhPSAxKQotKyAgICBhYm9ydCAoKTsKLSsgIHRlc3QxIDwmUzo6ZjI+ICgm dCk7Ci0rICBpZiAodC5zLmMgIT0gMTcpCi0rICAgIGFib3J0ICgpOwotKyAgdGVzdDIgPCZTOjpm MT4gKCZ0KTsKLSsgIGlmICh0LnMuYyAhPSAxOCkKLSsgICAgYWJvcnQgKCk7Ci0rICB0ZXN0MiA8 JlM6OmYyPiAoJnQpOwotKyAgaWYgKHQucy5jICE9IDM0KQotKyAgICBhYm9ydCAoKTsKLSt9Cgpk aWZmIC0tZ2l0IGEvZ2NjNDEtcHIzMzYxOS5wYXRjaCBiL2djYzQxLXByMzM2MTkucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0M2FhMWUuLjAwMDAwMDAKLS0tIGEvZ2NjNDEt cHIzMzYxOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLTIwMDctMTAtMTUg IEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgdHJlZS1vcHRpbWl6YXRp b24vMzM2MTkKLQkqIHRyZWUtb3V0b2Ytc3NhLmMgKGNoZWNrX3JlcGxhY2VhYmxlKTogUmV0dXJu IGZhbHNlIGZvciBhbGwKLQljYWxscyBvdGhlciB0aGFuIF9fYnVpbHRpbl9leHBlY3QuCi0KLQkq IGdjYy5kZy9wcjMzNjE5LmM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL3RyZWUtb3V0b2Ytc3NhLmMJ MjAwNy0xMC0xMSAyMjowMTo0MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdHJlZS1vdXRvZi1z c2EuYwkyMDA3LTEwLTE2IDE0OjI4OjQyLjAwMDAwMDAwMCArMDIwMAotQEAgLTE1NzAsMTIgKzE1 NzAsMTQgQEAgY2hlY2tfcmVwbGFjZWFibGUgKHRlbXBfZXhwcl90YWJsZV9wIHRhYgotICAgaWYg KGZsYWdfZmxvYXRfc3RvcmUgJiYgRkxPQVRfVFlQRV9QIChUUkVFX1RZUEUgKFRSRUVfT1BFUkFO RCAoc3RtdCwgMSkpKSkKLSAgICAgcmV0dXJuIGZhbHNlOwotIAotLSAgLyogQ2FsbHMgdG8gZnVu Y3Rpb25zIHdpdGggc2lkZS1lZmZlY3RzIGNhbm5vdCBiZSByZXBsYWNlZC4gICovCi0rICAvKiBO byBjYWxscyB0byBmdW5jdGlvbnMgb3RoZXIgdGhhbiBfX2J1aWx0aW5fZXhwZWN0IGFyZSByZXBs YWNlYWJsZS4gICovCi0gICBpZiAoKGNhbGxfZXhwciA9IGdldF9jYWxsX2V4cHJfaW4gKHN0bXQp KSAhPSBOVUxMX1RSRUUpCi0gICAgIHsKLS0gICAgICBpbnQgY2FsbF9mbGFncyA9IGNhbGxfZXhw cl9mbGFncyAoY2FsbF9leHByKTsKLS0gICAgICBpZiAoVFJFRV9TSURFX0VGRkVDVFMgKGNhbGxf ZXhwcikKLS0JICAmJiAhKGNhbGxfZmxhZ3MgJiAoRUNGX1BVUkUgfCBFQ0ZfQ09OU1QgfCBFQ0Zf Tk9SRVRVUk4pKSkKLSsgICAgICB0cmVlIGZuZGVjbCA9IGdldF9jYWxsZWVfZm5kZWNsIChjYWxs X2V4cHIpOwotKwotKyAgICAgIGlmIChmbmRlY2wgPT0gTlVMTF9UUkVFCi0rCSAgfHwgREVDTF9C VUlMVF9JTl9DTEFTUyAoZm5kZWNsKSAhPSBCVUlMVF9JTl9OT1JNQUwKLSsJICB8fCBERUNMX0ZV TkNUSU9OX0NPREUgKGZuZGVjbCkgIT0gQlVJTFRfSU5fRVhQRUNUKQotIAlyZXR1cm4gZmFsc2U7 Ci0gICAgIH0KLSAKLS0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjMzNjE5LmMJKHJldmlzaW9u IDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzYxOS5jCShyZXZpc2lvbiAxMjkzNTAp Ci1AQCAtMCwwICsxLDQ1IEBACi0rLyogUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM2MTkgKi8KLSsv KiB7IGRnLWRvIHJ1biB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KLSsKLSsjaWZk ZWYgX19wb3dlcnBjX18KLSsjIGRlZmluZSBSRUcxIF9fYXNtX18gKCIzIikKLSsjIGRlZmluZSBS RUcyIF9fYXNtX18gKCI0IikKLSsjZWxpZiBkZWZpbmVkIF9feDg2XzY0X18KLSsjIGRlZmluZSBS RUcxIF9fYXNtX18gKCJyZGkiKQotKyMgZGVmaW5lIFJFRzIgX19hc21fXyAoInJzaSIpCi0rI2Vs c2UKLSsjIGRlZmluZSBSRUcxCi0rIyBkZWZpbmUgUkVHMgotKyNlbmRpZgotKwotK3N0YXRpYyBp bmxpbmUgdm9pZAotK2JhciAodW5zaWduZWQgbG9uZyB4LCBpbnQgeSkKLSt7Ci0rICByZWdpc3Rl ciB1bnNpZ25lZCBsb25nIHAxIFJFRzEgPSB4OwotKyAgcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBw MiBSRUcyID0geTsKLSsgIF9fYXNtX18gdm9sYXRpbGUgKCIiIDogIj1yIiAocDEpLCAiPXIiIChw MikgOiAiMCIgKHAxKSwgIjEiIChwMikgOiAibWVtb3J5Iik7Ci0rICBpZiAocDEgIT0gMHhkZWFk VUwgfHwgcDIgIT0gMHhiZWZVTCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotK30KLSsKLStf X2F0dHJpYnV0ZV9fKChjb25zdCwgbm9pbmxpbmUpKSBpbnQKLStiYXogKGludCB4KQotK3sKLSsg IHJldHVybiB4OwotK30KLSsKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQKLStmb28g KHVuc2lnbmVkIGxvbmcgKngsIGludCB5KQotK3sKLSsgIHVuc2lnbmVkIGxvbmcgYSA9ICp4Owot KyAgYmFyIChhLCBiYXogKHkpKTsKLSt9Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICB1 bnNpZ25lZCBsb25nIGEgPSAweGRlYWRVTDsKLSsgIGZvbyAoJmEsIDB4YmVmVUwpOwotKyAgcmV0 dXJuIDA7Ci0rfQoKZGlmZiAtLWdpdCBhL2djYzQxLXByMzM2MzkucGF0Y2ggYi9nY2M0MS1wcjMz NjM5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGNjZGI0Li4wMDAwMDAw Ci0tLSBhL2djYzQxLXByMzM2MzkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBA Ci0yMDA3LTEwLTAzICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KLQotCVBSIGphdmEv MzM2MzkKLQkqIGNsYXNzLmMgKG1hbmdsZWRfY2xhc3NuYW1lKTogRGV0ZWN0IGFuZCByZXBsYWNl IGlsbGVnYWwKLQljaGFyYWN0ZXJzIGluIGFzc2VtYmx5IGxhbmd1YWdlIHN5bWJvbHMuCi0JKGdl bl9pbmRpcmVjdF9kaXNwYXRjaF90YWJsZXMpOiBDYWxsIG1hbmdsZWRfY2xhc3NuYW1lKCkgb24K LQl0aGUgdHlwZS4KLQotLS0tIGdjYy9qYXZhL2NsYXNzLmMJKHJldmlzaW9uIDEyODk4MCkKLSsr KyBnY2MvamF2YS9jbGFzcy5jCShyZXZpc2lvbiAxMjg5ODEpCi1AQCAtMzE0LDEwICszMTQsNjMg QEAgaWRlbnRpZmllcl9zdWJzdCAoY29uc3QgdHJlZSBvbGRfaWQsCi0gdHJlZQotIG1hbmdsZWRf Y2xhc3NuYW1lIChjb25zdCBjaGFyICpwcmVmaXgsIHRyZWUgdHlwZSkKLSB7Ci0rICB0cmVlIHJl c3VsdDsKLSAgIHRyZWUgaWRlbnQgPSBUWVBFX05BTUUgKHR5cGUpOwotICAgaWYgKFRSRUVfQ09E RSAoaWRlbnQpICE9IElERU5USUZJRVJfTk9ERSkKLSAgICAgaWRlbnQgPSBERUNMX05BTUUgKGlk ZW50KTsKLS0gIHJldHVybiBpZGVudGlmaWVyX3N1YnN0IChpZGVudCwgcHJlZml4LCAnLicsICdf JywgIiIpOwotKyAgcmVzdWx0ID0gaWRlbnRpZmllcl9zdWJzdCAoaWRlbnQsIHByZWZpeCwgJy4n LCAnXycsICIiKTsKLSsKLSsgIC8qIFJlcGxhY2UgYW55IGNoYXJhY3RlcnMgdGhhdCBhcmVuJ3Qg aW4gdGhlIHNldCBbMC05YS16QS1aXyRdIHdpdGgKLSsgICAgICJfMHhYWCIuICBDbGFzcyBuYW1l cyBjb250YWluaW5nIHN1Y2ggY2hyYWN0ZXJzIGFyZSB1bmNvbW1vbiwgYnV0Ci0rICAgICB0aGV5 IGRvIHNvbWV0aW1lcyBvY2N1ciBpbiBjbGFzcyBmaWxlcy4gIFdpdGhvdXQgdGhpcyBjaGVjaywK LSsgICAgIHRoZXNlIG5hbWVzIGNhdXNlIGFzc2VtYmx5IGVycm9ycy4KLSsKLSsgICAgIFRoZXJl IGlzIGEgcG9zc2liaWxpdHkgdGhhdCBhIHJlYWwgY2xhc3MgbmFtZSBjb3VsZCBjb25mbGljdCB3 aXRoCi0rICAgICB0aGUgaWRlbnRpZmllciB3ZSBnZW5lcmF0ZSwgYnV0IGl0IGlzIHVubGlrZWx5 IGFuZCB3aWxsCi0rICAgICBpbW1lZGlhdGVseSBiZSBkZXRlY3RlZCBhcyBhbiBhc3NlbWJsZXIg ZXJyb3IuICBBdCBzb21lIHBvaW50IHdlCi0rICAgICBzaG91bGQgZG8gc29tZXRoaW5nIG1vcmUg ZWxhYm9yYXRlIChwZXJoYXBzIHVzaW5nIHRoZSBmdWxsCi0rICAgICB1bmljb2RlIG1hbmdsaW5n IHNjaGVtZSkgaW4gb3JkZXIgdG8gcHJldmVudCBzdWNoIGEgY29uZmxpY3QuICAqLwotKyAgewot KyAgICBpbnQgaTsKLSsgICAgY29uc3QgaW50IGxlbiA9IElERU5USUZJRVJfTEVOR1RIIChyZXN1 bHQpOwotKyAgICBjb25zdCBjaGFyICpwID0gSURFTlRJRklFUl9QT0lOVEVSIChyZXN1bHQpOwot KyAgICBpbnQgaWxsZWdhbF9jaGFycyA9IDA7Ci0rCi0rICAgIC8qIE1ha2UgdHdvIHBhc3NlcyBv dmVyIHRoZSBpZGVudGlmaWVyLiAgVGhlIGZpcnN0IHBhc3MgaXMgbWVyZWx5Ci0rICAgICAgIHRv IGNvdW50IGlsbGVnYWwgY2hhcmFjdGVyczsgd2UgbmVlZCB0byBkbyB0aGlzIGluIG9yZGVyIHRv Ci0rICAgICAgIGFsbG9jYXRlIGEgYnVmZmVyLiAgKi8KLSsgICAgZm9yIChpID0gMDsgaSA8IGxl bjsgaSsrKQotKyAgICAgIHsKLSsJY2hhciBjID0gcFtpXTsKLSsJaWxsZWdhbF9jaGFycyArPSAo ISBJU0FMTlVNIChjKSAmJiBjICE9ICdfJyAmJiBjICE9ICckJyk7Ci0rICAgICAgfQotKwotKyAg ICAvKiBBbmQgdGhlIHNlY29uZCBwYXNzLCB3aGljaCBpcyByYXJlbHkgZXhlY3V0ZWQsIGRvZXMg dGhlCi0rICAgICAgIHJld3JpdGluZy4gICovCi0rICAgIGlmIChpbGxlZ2FsX2NoYXJzICE9IDAp Ci0rICAgICAgewotKwljaGFyICpidWZmZXIgPSBhbGxvY2EgKGlsbGVnYWxfY2hhcnMgKiA0ICsg bGVuICsgMSk7Ci0rCWludCBqOwotKwotKwlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGxlbjsgaSsr KQotKwkgIHsKLSsJICAgIGNoYXIgYyA9IHBbaV07Ci0rCSAgICBpZiAoISBJU0FMTlVNIChjKSAm JiBjICE9ICdfJyAmJiBjICE9ICckJykKLSsJICAgICAgewotKwkJYnVmZmVyW2orK10gPSAnXyc7 Ci0rCQlzcHJpbnRmICgmYnVmZmVyW2pdLCAiMHglMDJ4IiwgYyk7Ci0rCQlqICs9IDQ7Ci0rCSAg ICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgYnVmZmVyW2orK10gPSBjOwotKwkgIH0KLSsKLSsJ YnVmZmVyW2pdID0gMDsKLSsJcmVzdWx0ID0gZ2V0X2lkZW50aWZpZXIgKGJ1ZmZlcik7Ci0rICAg ICAgfQotKyAgfQotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi0gdHJlZQotQEAgLTM4OSw3 ICs0NDIsNyBAQCB3aGlsZSAoMCkKLSB2b2lkCi0gZ2VuX2luZGlyZWN0X2Rpc3BhdGNoX3RhYmxl cyAodHJlZSB0eXBlKQotIHsKLS0gIGNvbnN0IGNoYXIgKnR5cGVuYW1lID0gSURFTlRJRklFUl9Q T0lOVEVSIChERUNMX05BTUUgKFRZUEVfTkFNRSAodHlwZSkpKTsKLSsgIGNvbnN0IGNoYXIgKnR5 cGVuYW1lID0gSURFTlRJRklFUl9QT0lOVEVSIChtYW5nbGVkX2NsYXNzbmFtZSAoIiIsIHR5cGUp KTsKLSAgIHsgIAotICAgICB0cmVlIGZpZWxkID0gTlVMTDsKLSAgICAgY2hhciAqYnVmID0gYWxs b2NhIChzdHJsZW4gKHR5cGVuYW1lKSArIHN0cmxlbiAoIl9jYXRjaF9jbGFzc2VzXyIpICsgMSk7 CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcHIzMzcyMy5wYXRjaCBiL2djYzQxLXByMzM3MjMucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkM2U3NDYuLjAwMDAwMDAKLS0tIGEvZ2Nj NDEtcHIzMzcyMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0yMDA3LTEw LTI5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIHRyZWUtb3B0aW1p emF0aW9uLzMzNzIzCi0JKiBjLWdpbXBsaWZ5LmMgKGNfZ2ltcGxpZnlfZXhwcik6IE9wdGltaXpl IElOSVRfRVhQUiBvcgotCU1PRElGWV9FWFBSIHdpdGggbm9uLWFkZHJlc3NhYmxlIENPTVBPVU5E X0xJVEVSQUxfRVhQUiBhcyBzb3VyY2UuCi0KLTIwMDctMTEtMjAgIEpha3ViIEplbGluZWsgIDxq YWt1YkByZWRoYXQuY29tPgotCi0JUFIgdGVzdHN1aXRlLzMzOTc4Ci0JKiBnY2MuZGcvdHJlZS1z c2EvcHIzMzcyMy5jOiBBZGp1c3Qgc2NhbiBwYXR0ZXJuIHRvIG1ha2UgaXQgbGVzcwotCWRlcGVu ZGVudCBvbiB0YXJnZXQgc2V0dGluZ3MgbGlrZSBtb3ZlX2J5X3BpZWNlcyBldGMuCi0KLTIwMDct MTAtMzAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgdHJlZS1vcHRp bWl6YXRpb24vMzM3MjMKLQkqIGdjYy5kZy90cmVlLXNzYS9wcjMzNzIzLmMgKFQpOiBEZWNyZWFz ZSBzaXplIG9mIGZpZWxkIHMuCi0KLTIwMDctMTAtMjkgIEpha3ViIEplbGluZWsgIDxqYWt1YkBy ZWRoYXQuY29tPgotCi0JUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM3MjMKLQkqIGdjYy5jLXRvcnR1 cmUvZXhlY3V0ZS8yMDA3MTAyOS0xLmM6IE5ldyB0ZXN0LgotCSogZ2NjLmRnL3RyZWUtc3NhL3By MzM3MjMuYzogTmV3IHRlc3QuCi0KLS0tLSBnY2MvYy1naW1wbGlmeS5jCShyZXZpc2lvbiAxMjk3 NDIpCi0rKysgZ2NjL2MtZ2ltcGxpZnkuYwkocmV2aXNpb24gMTI5NzQzKQotQEAgLTIzMyw2ICsy MzMsMjkgQEAgY19naW1wbGlmeV9leHByICh0cmVlICpleHByX3AsIHRyZWUgKnByZQotICAgICBj YXNlIENPTVBPVU5EX0xJVEVSQUxfRVhQUjoKLSAgICAgICByZXR1cm4gZ2ltcGxpZnlfY29tcG91 bmRfbGl0ZXJhbF9leHByIChleHByX3AsIHByZV9wKTsKLSAKLSsgICAgY2FzZSBJTklUX0VYUFI6 Ci0rICAgIGNhc2UgTU9ESUZZX0VYUFI6Ci0rICAgICAgaWYgKFRSRUVfQ09ERSAoVFJFRV9PUEVS QU5EICgqZXhwcl9wLCAxKSkgPT0gQ09NUE9VTkRfTElURVJBTF9FWFBSKQotKwl7Ci0rCSAgdHJl ZSBjb21wbGl0ID0gVFJFRV9PUEVSQU5EICgqZXhwcl9wLCAxKTsKLSsJICB0cmVlIGRlY2xfcyA9 IENPTVBPVU5EX0xJVEVSQUxfRVhQUl9ERUNMX1NUTVQgKGNvbXBsaXQpOwotKwkgIHRyZWUgZGVj bCA9IERFQ0xfRVhQUl9ERUNMIChkZWNsX3MpOwotKwkgIHRyZWUgaW5pdCA9IERFQ0xfSU5JVElB TCAoZGVjbCk7Ci0rCi0rCSAgLyogc3RydWN0IFQgeCA9IChzdHJ1Y3QgVCkgeyAwLCAxLCAyIH0g Y2FuIGJlIG9wdGltaXplZAotKwkgICAgIGludG8gc3RydWN0IFQgeCA9IHsgMCwgMSwgMiB9IGlm IHRoZSBhZGRyZXNzIG9mIHRoZQotKwkgICAgIGNvbXBvdW5kIGxpdGVyYWwgaGFzIG5ldmVyIGJl ZW4gdGFrZW4uICAqLwotKwkgIGlmICghVFJFRV9BRERSRVNTQUJMRSAoY29tcGxpdCkKLSsJICAg ICAgJiYgIVRSRUVfQUREUkVTU0FCTEUgKGRlY2wpCi0rCSAgICAgICYmIGluaXQpCi0rCSAgICB7 Ci0rCSAgICAgICpleHByX3AgPSBjb3B5X25vZGUgKCpleHByX3ApOwotKwkgICAgICBUUkVFX09Q RVJBTkQgKCpleHByX3AsIDEpID0gaW5pdDsKLSsJICAgICAgcmV0dXJuIEdTX09LOwotKwkgICAg fQotKwl9Ci0rICAgICAgcmV0dXJuIEdTX1VOSEFORExFRDsKLSsKLSAgICAgZGVmYXVsdDoKLSAg ICAgICByZXR1cm4gR1NfVU5IQU5ETEVEOwotICAgICB9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2Mu Yy10b3J0dXJlL2V4ZWN1dGUvMjAwNzEwMjktMS5jCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0 c3VpdGUvZ2NjLmMtdG9ydHVyZS9leGVjdXRlLzIwMDcxMDI5LTEuYwkocmV2aXNpb24gMTI5NzQz KQotQEAgLTAsMCArMSw1NiBAQAotK2V4dGVybiB2b2lkIGV4aXQgKGludCk7Ci0rZXh0ZXJuIHZv aWQgYWJvcnQgKHZvaWQpOwotKwotK3R5cGVkZWYgdW5pb24KLSt7Ci0rICBzdHJ1Y3QKLSsgIHsK LSsgICAgaW50IGYxLCBmMiwgZjMsIGY0LCBmNSwgZjYsIGY3LCBmODsKLSsgICAgbG9uZyBpbnQg ZjksIGYxMDsKLSsgICAgaW50IGYxMTsKLSsgIH0gZjsKLSsgIGNoYXIgc1s1Nl07Ci0rICBsb25n IGludCBhOwotK30gVDsKLSsKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCi0rdm9pZAotK3Rl c3QgKFQgKnQpCi0rewotKyAgc3RhdGljIGludCBpID0gMTE7Ci0rICBpZiAodC0+Zi5mMSAhPSBp KyspCi0rICAgIGFib3J0ICgpOwotKyAgaWYgKHQtPmYuZjIgfHwgdC0+Zi5mMyB8fCB0LT5mLmY0 IHx8IHQtPmYuZjUgfHwgdC0+Zi5mNgotKyAgICAgIHx8IHQtPmYuZjcgfHwgdC0+Zi5mOCB8fCB0 LT5mLmY5IHx8IHQtPmYuZjEwIHx8IHQtPmYuZjExKQotKyAgICBhYm9ydCAoKTsKLSsgIGlmIChp ID09IDIwKQotKyAgICBleGl0ICgwKTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVfXygobm9pbmxpbmUp KQotK3ZvaWQKLStmb28gKGludCBpKQotK3sKLSsgIFQgdDsKLSthZ2FpbjoKLSsgIHQgPSAoVCkg eyB7ICsraSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9IH07Ci0rICB0ZXN0ICgmdCk7 Ci0rICBnb3RvIGFnYWluOwotK30KLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIFQgKnQx LCAqdDI7Ci0rICBpbnQgY250ID0gMDsKLSsgIHQxID0gKFQgKikgMDsKLStsb29wOgotKyAgdDIg PSB0MTsKLSsgIHQxID0gJiAoVCkgeyAuZi5mOSA9IGNudCsrIH07Ci0rICBpZiAoY250IDwgMykK LSsgICAgZ290byBsb29wOwotKyAgaWYgKHQxICE9IHQyIHx8IHQxLT5mLmY5ICE9IDIpCi0rICAg IGFib3J0ICgpOwotKyAgZm9vICgxMCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0tLS0gZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHIzMzcyMy5jCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByMzM3MjMuYwkocmV2aXNpb24gMTI5NzQzKQotQEAgLTAs MCArMSw3MiBAQAotKy8qIFBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNzIzICovCi0rLyogeyBkZy1k byBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmR1bXAtdHJlZS1naW1wbGUi IH0gKi8KLSsKLSt0eXBlZGVmIHVuaW9uCi0rewotKyAgc3RydWN0Ci0rICB7Ci0rICAgIGludCBm MSwgZjIsIGYzLCBmNCwgZjUsIGY2LCBmNywgZjg7Ci0rICAgIGxvbmcgaW50IGY5LCBmMTA7Ci0r ICAgIGludCBmMTE7Ci0rICB9IGY7Ci0rICBjaGFyIHNbNF07Ci0rICBsb25nIGludCBhOwotK30g VDsKLSsKLSt2b2lkCi0rZm9vMSAodm9pZCkKLSt7Ci0rICBUIHQ7Ci0rICB0ID0gKFQpIHsgeyAw LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH0gfTsKLSsgIHRlc3QgKCZ0KTsKLSt9Ci0r Ci0rdm9pZAotK2JhcjEgKHZvaWQpCi0rewotKyAgVCB0ID0geyB7IDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDAsIDAgfSB9OwotKyAgdGVzdCAoJnQpOwotK30KLSsKLSt2b2lkCi0rYmF6MSAo dm9pZCkKLSt7Ci0rICBUIHQ7Ci0rICB0ID0gKGNvbnN0IFQpIHsgeyAwLCAwLCAwLCAwLCAwLCAw LCAwLCAwLCAwLCAwLCAwIH0gfTsKLSsgIHRlc3QgKCZ0KTsKLSt9Ci0rCi0rdm9pZAotK2ZvbzIg KHZvaWQpCi0rewotKyAgVCB0OwotKyAgdCA9IChUKSB7IHsgMSwgMiwgMywgNCwgNSwgNiwgNywg OCwgOSwgMTAsIDExIH0gfTsKLSsgIHRlc3QgKCZ0KTsKLSt9Ci0rCi0rdm9pZAotK2JhcjIgKHZv aWQpCi0rewotKyAgVCB0ID0geyB7IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSB9 IH07Ci0rICB0ZXN0ICgmdCk7Ci0rfQotKwotK3ZvaWQKLStiYXoyICh2b2lkKQotK3sKLSsgIFQg dDsKLSsgIHQgPSAoY29uc3QgVCkgeyB7IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAx MSB9IH07Ci0rICB0ZXN0ICgmdCk7Ci0rfQotKwotK3ZvaWQKLStiYXozICh2b2lkKQotK3sKLSsg IFQgdDsKLSsgIHQgPSAoY29uc3QgVCkgKFQpIHsgeyAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5 LCAxMCwgMTEgfSB9OwotKyAgdGVzdCAoJnQpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtbm90ICJ0ID0gRCIgImdpbXBsZSJ9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsg Y2xlYW51cC10cmVlLWR1bXAgImdpbXBsZSIgfSB9ICovCgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcHIz Mzc2My5wYXRjaCBiL2djYzQxLXByMzM3NjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDhmMTExYmEuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtcHIzMzc2My5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0yMDA3LTEwLTE2ICBKYWt1YiBKZWxpbmVrICA8amFr dWJAcmVkaGF0LmNvbT4KLQotCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNzYzCi0JKiBnY2MuZGcv cHIzMzc2My5jOiBOZXcgdGVzdC4KLQkqIGcrKy5kZy9vcHQvaW5saW5lMTIuQzogTmV3IHRlc3Qu Ci0KLTIwMDctMTAtMTQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KLQotCVBSIHRyZWUtb3B0 aW1pemF0aW9uLzMzNzYzCi0JKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBT aWxlbnRseSBpZ25vcmUgYWx3YXlzX2lubGluZQotCWF0dHJpYnV0ZSBmb3IgcmVkZWZpbmVkIGV4 dGVybiBpbmxpbmUgZnVuY3Rpb25zLgotCi0tLS0gZ2NjL3RyZWUtaW5saW5lLmMuamoJMjAwNy0w OS0yNSAxMjoyMzowNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdHJlZS1pbmxpbmUuYwkyMDA3 LTEwLTE2IDE1OjI3OjUxLjAwMDAwMDAwMCArMDIwMAotQEAgLTIwNTksNiArMjA1OSwxMiBAQCBl eHBhbmRfY2FsbF9pbmxpbmUgKGJhc2ljX2Jsb2NrIGJiLCB0cmVlCi0gICBpZiAoIWNncmFwaF9p bmxpbmVfcCAoY2dfZWRnZSwgJnJlYXNvbikpCi0gICAgIHsKLSAgICAgICBpZiAobG9va3VwX2F0 dHJpYnV0ZSAoImFsd2F5c19pbmxpbmUiLCBERUNMX0FUVFJJQlVURVMgKGZuKSkKLSsJLyogRm9y IGV4dGVybiBpbmxpbmUgZnVuY3Rpb25zIHRoYXQgZ2V0IHJlZGVmaW5lZCB3ZSBhbHdheXMKLSsJ ICAgc2lsZW50bHkgaWdub3JlZCBhbHdheV9pbmxpbmUgZmxhZy4gQmV0dGVyIGJlaGF2aW91ciB3 b3VsZAotKwkgICBiZSB0byBiZSBhYmxlIHRvIGtlZXAgYm90aCBib2RpZXMgYW5kIHVzZSBleHRl cm4gaW5saW5lIGJvZHkKLSsJICAgZm9yIGlubGluaW5nLCBidXQgd2UgY2FuJ3QgZG8gdGhhdCBi ZWNhdXNlIGZyb250ZW5kcyBvdmVyd3JpdGUKLSsJICAgdGhlIGJvZHkuICAqLwotKwkgICYmICFj Z19lZGdlLT5jYWxsZWUtPmxvY2FsLnJlZGVmaW5lZF9leHRlcm5faW5saW5lCi0gCSAgLyogQXZv aWQgd2FybmluZ3MgZHVyaW5nIGVhcmx5IGlubGluZSBwYXNzLiAqLwotIAkgICYmICghZmxhZ191 bml0X2F0X2FfdGltZSB8fCBjZ3JhcGhfZ2xvYmFsX2luZm9fcmVhZHkpKQotIAl7Ci0tLS0gZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzc2My5jLmpqCTIwMDctMTAtMTYgMTU6MjA6NDEuMDAwMDAw MDAwICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzc2My5jCTIwMDctMTAtMTYg MTU6MjA6MzUuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDYwIEBACi0rLyogUFIgdHJlZS1v cHRpbWl6YXRpb24vMzM3NjMgKi8KLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGct b3B0aW9ucyAiLU8yIiB9ICovCi0rCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICB2b2lkICphOwot KyAgdm9pZCAqYjsKLSt9IFQ7Ci0rZXh0ZXJuIHZvaWQgKmZvbyAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICopOwotK2V4dGVybiB2b2lkICpiYXIgKHZvaWQgKiwgY29uc3QgY2hhciAqLCBUKTsK LStleHRlcm4gaW50IGJheiAoY29uc3QgY2hhciAqLCBpbnQpOwotKwotK2V4dGVybiBpbmxpbmUg X19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUsIGdudV9pbmxpbmUpKSBpbnQKLStiYXogKGNv bnN0IGNoYXIgKngsIGludCB5KQotK3sKLSsgIHJldHVybiAyOwotK30KLSsKLStpbnQKLStiYXog KGNvbnN0IGNoYXIgKngsIGludCB5KQotK3sKLSsgIHJldHVybiAxOwotK30KLSsKLStpbnQgeGEs IHhiOwotKwotK3N0YXRpYyB2b2lkICoKLStpbmwgKGNvbnN0IGNoYXIgKngsIGNvbnN0IGNoYXIg KnkpCi0rewotKyAgVCB0ID0geyAmeGEsICZ4YiB9OwotKyAgaW50ICpmID0gKGludCAqKSBfX2J1 aWx0aW5fbWFsbG9jIChzaXplb2YgKGludCkpOwotKyAgY29uc3QgY2hhciAqejsKLSsgIGludCBv ID0gMDsKLSsgIHZvaWQgKnIgPSAwOwotKwotKyAgZm9yICh6ID0geTsgKno7IHorKykKLSsgICAg ewotKyAgICAgIGlmICgqeiA9PSAncicpCi0rCW8gfD0gMTsKLSsgICAgICBpZiAoKnogPT0gJ3cn KQotKwlvIHw9IDI7Ci0rICAgIH0KLSsgIGlmIChvID09IDEpCi0rICAgICpmID0gYmF6ICh4LCAw KTsKLSsgIGlmIChvID09IDIpCi0rICAgICpmID0gYmF6ICh4LCAxKTsKLSsgIGlmIChvID09IDMp Ci0rICAgICpmID0gYmF6ICh4LCAyKTsKLSsKLSsgIGlmIChvICYmICpmID4gMCkKLSsgICAgciA9 IGJhciAoZiwgInciLCB0KTsKLSsgIHJldHVybiByOwotK30KLSsKLSt2b2lkICoKLStmb28gKGNv bnN0IGNoYXIgKngsIGNvbnN0IGNoYXIgKnkpCi0rewotKyAgcmV0dXJuIGlubCAoeCwgeSk7Ci0r fQotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL29wdC9pbmxpbmUxMi5DLmpqCTIwMDctMTAtMTYg MTU6MjY6MDEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvb3B0L2lu bGluZTEyLkMJMjAwNy0xMC0xNiAxNToyNjoyMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEs NjAgQEAKLSsvLyBQUiB0cmVlLW9wdGltaXphdGlvbi8zMzc2MwotKy8vIHsgZGctZG8gY29tcGls ZSB9Ci0rLy8geyBkZy1vcHRpb25zICItTzIiIH0KLSsKLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsg IHZvaWQgKmE7Ci0rICB2b2lkICpiOwotK30gVDsKLStleHRlcm4gdm9pZCAqZm9vIChjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKik7Ci0rZXh0ZXJuIHZvaWQgKmJhciAodm9pZCAqLCBjb25zdCBj aGFyICosIFQpOwotK2V4dGVybiBpbnQgYmF6IChjb25zdCBjaGFyICosIGludCk7Ci0rCi0rZXh0 ZXJuIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSwgZ251X2lubGluZSkpIGlu dAotK2JheiAoY29uc3QgY2hhciAqeCwgaW50IHkpCi0rewotKyAgcmV0dXJuIDI7Ci0rfQotKwot K2ludAotK2JheiAoY29uc3QgY2hhciAqeCwgaW50IHkpCi0rewotKyAgcmV0dXJuIDE7Ci0rfQot KwotK2ludCB4YSwgeGI7Ci0rCi0rc3RhdGljIHZvaWQgKgotK2lubCAoY29uc3QgY2hhciAqeCwg Y29uc3QgY2hhciAqeSkKLSt7Ci0rICBUIHQgPSB7ICZ4YSwgJnhiIH07Ci0rICBpbnQgKmYgPSAo aW50ICopIF9fYnVpbHRpbl9tYWxsb2MgKHNpemVvZiAoaW50KSk7Ci0rICBjb25zdCBjaGFyICp6 OwotKyAgaW50IG8gPSAwOwotKyAgdm9pZCAqciA9IDA7Ci0rCi0rICBmb3IgKHogPSB5OyAqejsg eisrKQotKyAgICB7Ci0rICAgICAgaWYgKCp6ID09ICdyJykKLSsJbyB8PSAxOwotKyAgICAgIGlm ICgqeiA9PSAndycpCi0rCW8gfD0gMjsKLSsgICAgfQotKyAgaWYgKG8gPT0gMSkKLSsgICAgKmYg PSBiYXogKHgsIDApOwotKyAgaWYgKG8gPT0gMikKLSsgICAgKmYgPSBiYXogKHgsIDEpOwotKyAg aWYgKG8gPT0gMykKLSsgICAgKmYgPSBiYXogKHgsIDIpOwotKwotKyAgaWYgKG8gJiYgKmYgPiAw KQotKyAgICByID0gYmFyIChmLCAidyIsIHQpOwotKyAgcmV0dXJuIHI7Ci0rfQotKwotK3ZvaWQg KgotK2ZvbyAoY29uc3QgY2hhciAqeCwgY29uc3QgY2hhciAqeSkKLSt7Ci0rICByZXR1cm4gaW5s ICh4LCB5KTsKLSt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcHIzMzgzNi5wYXRjaCBiL2djYzQxLXBy MzM4MzYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMWUxMjguLjAwMDAw MDAKLS0tIGEvZ2NjNDEtcHIzMzgzNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAg QEAKLTIwMDctMTEtMDUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIg YysrLzMzODM2Ci0JKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3VuYXJ5X2V4cHJlc3Npb24pOiBGb3Ig JiZsYWJlbCBjYWxsCi0JY3BfcGFyc2VyX25vbl9pbnRlZ3JhbF9jb25zdGFudF9leHByZXNzaW9u IGFuZCByZXR1cm4gZXJyb3JfbWFya19ub2RlCi0JaWYgaXQgcmV0dXJuZWQgdHJ1ZS4KLQotCSog ZysrLmRnL2V4dC9sYWJlbDEwLkM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL2NwL3BhcnNlci5jCShy ZXZpc2lvbiAxMjk4OTUpCi0rKysgZ2NjL2NwL3BhcnNlci5jCShyZXZpc2lvbiAxMjk4OTYpCi1A QCAtNTMyOSwxMyArNTMyOSwxOCBAQCBjcF9wYXJzZXJfdW5hcnlfZXhwcmVzc2lvbiAoY3BfcGFy c2VyICpwCi0gCSAgICAgICAmJiB0b2tlbi0+dHlwZSA9PSBDUFBfQU5EX0FORCkKLSAJewotIAkg IHRyZWUgaWRlbnRpZmllcjsKLSsJICB0cmVlIGV4cHJlc3Npb247Ci0gCi0gCSAgLyogQ29uc3Vt ZSB0aGUgJyYmJyB0b2tlbi4gICovCi0gCSAgY3BfbGV4ZXJfY29uc3VtZV90b2tlbiAocGFyc2Vy LT5sZXhlcik7Ci0gCSAgLyogTG9vayBmb3IgdGhlIGlkZW50aWZpZXIuICAqLwotIAkgIGlkZW50 aWZpZXIgPSBjcF9wYXJzZXJfaWRlbnRpZmllciAocGFyc2VyKTsKLSAJICAvKiBDcmVhdGUgYW4g ZXhwcmVzc2lvbiByZXByZXNlbnRpbmcgdGhlIGFkZHJlc3MuICAqLwotLQkgIHJldHVybiBmaW5p c2hfbGFiZWxfYWRkcmVzc19leHByIChpZGVudGlmaWVyKTsKLSsJICBleHByZXNzaW9uID0gZmlu aXNoX2xhYmVsX2FkZHJlc3NfZXhwciAoaWRlbnRpZmllcik7Ci0rCSAgaWYgKGNwX3BhcnNlcl9u b25faW50ZWdyYWxfY29uc3RhbnRfZXhwcmVzc2lvbiAocGFyc2VyLAotKwkJCQkJCSJ0aGUgYWRk cmVzcyBvZiBhIGxhYmVsIikpCi0rCSAgICBleHByZXNzaW9uID0gZXJyb3JfbWFya19ub2RlOwot KwkgIHJldHVybiBleHByZXNzaW9uOwotIAl9Ci0gICAgIH0KLSAgIGlmICh1bmFyeV9vcGVyYXRv ciAhPSBFUlJPUl9NQVJLKQotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9sYWJlbDEwLkMJ KHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L2xhYmVsMTAuQwkocmV2 aXNpb24gMTI5ODk2KQotQEAgLTAsMCArMSwxNyBAQAotKy8vIFBSIGMrKy8zMzgzNgotKy8vIHsg ZGctZG8gY29tcGlsZSB9Ci0rLy8geyBkZy1vcHRpb25zICItc3RkPWdudSsrOTgiIH0KLSsKLSt0 ZW1wbGF0ZTxpbnQgTj4gc3RydWN0IEEKLSt7Ci0rICBlbnVtIHsgTSA9ICYmIE4gfTsJLy8geyBk Zy1lcnJvciAicmVmZXJlbmNlZCBvdXRzaWRlfGNhbm5vdCBhcHBlYXIgaW4iIH0KLSt9OwotKwot K0E8MD4gYTsKLSsKLSt2b2lkIGZvbyAoKQotK3sKLSsgIF9fbGFiZWxfXyBQOwotKyAgZW51bSB7 IE8gPSAmJiBQIH07CS8vIHsgZGctZXJyb3IgImNhbm5vdCBhcHBlYXIgaW4iIH0KLSsgIFA6Owot K30KCmRpZmYgLS1naXQgYS9nY2M0MS1wcjMzODQyLnBhdGNoIGIvZ2NjNDEtcHIzMzg0Mi5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk4MDNmMS4uMDAwMDAwMAotLS0gYS9n Y2M0MS1wcjMzODQyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLTIwMDct MTAtMjcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgYysrLzMzODQy Ci0JKiBjeHgtcHJldHR5LXByaW50LmggKHBwX2N4eF9vZmZzZXRvZl9leHByZXNzaW9uKTogTmV3 IHByb3RvdHlwZS4KLQkqIGN4eC1wcmV0dHktcHJpbnQuYyAocHBfY3h4X3ByaW1hcnlfZXhwcmVz c2lvbik6IEhhbmRsZQotCU9GRlNFVE9GX0VYUFIuCi0JKHBwX2N4eF9vZmZzZXRvZl9leHByZXNz aW9uXzEsIHBwX2N4eF9vZmZzZXRvZl9leHByZXNzaW9uKTogTmV3Ci0JZnVuY3Rpb25zLgotCSog ZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIE9GRlNFVE9GX0VYUFIuCi0KLQkqIGcrKy5kZy90 ZW1wbGF0ZS9lcnJvcjM0LkM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL2NwL2Vycm9yLmMJKHJldmlz aW9uIDEyOTY3NikKLSsrKyBnY2MvY3AvZXJyb3IuYwkocmV2aXNpb24gMTI5Njc3KQotQEAgLTE4 ODcsNiArMTg4NywxMCBAQCBkdW1wX2V4cHIgKHRyZWUgdCwgaW50IGZsYWdzKQotICAgICAgIGR1 bXBfZXhwciAoVFJFRV9PUEVSQU5EICh0LCAwKSwgZmxhZ3MpOwotICAgICAgIGJyZWFrOwotIAot KyAgICBjYXNlIE9GRlNFVE9GX0VYUFI6Ci0rICAgICAgcHBfY3h4X29mZnNldG9mX2V4cHJlc3Np b24gKGN4eF9wcCwgdCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgICAgLyogIFRoaXMgbGlzdCBp cyBpbmNvbXBsZXRlLCBidXQgc2hvdWxkIHN1ZmZpY2UgZm9yIG5vdy4KLSAJICBJdCBpcyB2ZXJ5 IGltcG9ydGFudCB0aGF0IGBzb3JyeScgZG9lcyBub3QgY2FsbAotIAkgIGByZXBvcnRfZXJyb3Jf ZnVuY3Rpb24nLiAgVGhhdCBjb3VsZCBjYXVzZSBhbiBpbmZpbml0ZSBsb29wLiAgKi8KLS0tLSBn Y2MvY3AvY3h4LXByZXR0eS1wcmludC5jCShyZXZpc2lvbiAxMjk2NzYpCi0rKysgZ2NjL2NwL2N4 eC1wcmV0dHktcHJpbnQuYwkocmV2aXNpb24gMTI5Njc3KQotQEAgLTM1Niw2ICszNTYsMTAgQEAg cHBfY3h4X3ByaW1hcnlfZXhwcmVzc2lvbiAoY3h4X3ByZXR0eV9wcgotICAgICAgIHBwX2N4eF9y aWdodF9wYXJlbiAocHApOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIE9GRlNFVE9GX0VY UFI6Ci0rICAgICAgcHBfY3h4X29mZnNldG9mX2V4cHJlc3Npb24gKHBwLCB0KTsKLSsgICAgICBi cmVhazsKLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBwcF9jX3ByaW1hcnlfZXhwcmVzc2lvbiAo cHBfY19iYXNlIChwcCksIHQpOwotICAgICAgIGJyZWFrOwotQEAgLTE5NDQsNiArMTk0OCw0OSBA QCB0eXBlZGVmIGNfcHJldHR5X3ByaW50X2ZuIHBwX2Z1bjsKLSAKLSAvKiBJbml0aWFsaXphdGlv biBvZiBhIEMrKyBwcmV0dHktcHJpbnRlciBvYmplY3QuICAqLwotIAotK3N0YXRpYyBib29sCi0r cHBfY3h4X29mZnNldG9mX2V4cHJlc3Npb25fMSAoY3h4X3ByZXR0eV9wcmludGVyICpwcCwgdHJl ZSB0KQotK3sKLSsgIHN3aXRjaCAoVFJFRV9DT0RFICh0KSkKLSsgICAgewotKyAgICBjYXNlIEFS Uk9XX0VYUFI6Ci0rICAgICAgaWYgKFRSRUVfQ09ERSAoVFJFRV9PUEVSQU5EICh0LCAwKSkgPT0g U1RBVElDX0NBU1RfRVhQUgotKwkgICYmIFBPSU5URVJfVFlQRV9QIChUUkVFX1RZUEUgKFRSRUVf T1BFUkFORCAodCwgMCkpKSkKLSsJewotKwkgIHBwX2N4eF90eXBlX2lkIChwcCwgVFJFRV9UWVBF IChUUkVFX1RZUEUgKFRSRUVfT1BFUkFORCAodCwgMCkpKSk7Ci0rCSAgcHBfY3h4X3NlcGFyYXRl X3dpdGggKHBwLCAnLCcpOwotKwkgIHJldHVybiB0cnVlOwotKwl9Ci0rICAgICAgcmV0dXJuIGZh bHNlOwotKyAgICBjYXNlIENPTVBPTkVOVF9SRUY6Ci0rICAgICAgaWYgKCFwcF9jeHhfb2Zmc2V0 b2ZfZXhwcmVzc2lvbl8xIChwcCwgVFJFRV9PUEVSQU5EICh0LCAwKSkpCi0rCXJldHVybiBmYWxz ZTsKLSsgICAgICBpZiAoVFJFRV9DT0RFIChUUkVFX09QRVJBTkQgKHQsIDApKSAhPSBBUlJPV19F WFBSKQotKwlwcF9jeHhfZG90IChwcCk7Ci0rICAgICAgcHBfY3h4X2V4cHJlc3Npb24gKHBwLCBU UkVFX09QRVJBTkQgKHQsIDEpKTsKLSsgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgY2FzZSBBUlJB WV9SRUY6Ci0rICAgICAgaWYgKCFwcF9jeHhfb2Zmc2V0b2ZfZXhwcmVzc2lvbl8xIChwcCwgVFJF RV9PUEVSQU5EICh0LCAwKSkpCi0rCXJldHVybiBmYWxzZTsKLSsgICAgICBwcF9sZWZ0X2JyYWNr ZXQgKHBwKTsKLSsgICAgICBwcF9jeHhfZXhwcmVzc2lvbiAocHAsIFRSRUVfT1BFUkFORCAodCwg MSkpOwotKyAgICAgIHBwX3JpZ2h0X2JyYWNrZXQgKHBwKTsKLSsgICAgICByZXR1cm4gdHJ1ZTsK LSsgICAgZGVmYXVsdDoKLSsgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgIH0KLSt9Ci0rCi0rdm9p ZAotK3BwX2N4eF9vZmZzZXRvZl9leHByZXNzaW9uIChjeHhfcHJldHR5X3ByaW50ZXIgKnBwLCB0 cmVlIHQpCi0rewotKyAgcHBfY3h4X2lkZW50aWZpZXIgKHBwLCAib2Zmc2V0b2YiKTsKLSsgIHBw X2N4eF9sZWZ0X3BhcmVuIChwcCk7Ci0rICBpZiAoIXBwX2N4eF9vZmZzZXRvZl9leHByZXNzaW9u XzEgKHBwLCBUUkVFX09QRVJBTkQgKHQsIDApKSkKLSsgICAgcHBfY3h4X2V4cHJlc3Npb24gKHBw LCBUUkVFX09QRVJBTkQgKHQsIDApKTsKLSsgIHBwX2N4eF9yaWdodF9wYXJlbiAocHApOwotK30K LSsKLSB2b2lkCi0gcHBfY3h4X3ByZXR0eV9wcmludGVyX2luaXQgKGN4eF9wcmV0dHlfcHJpbnRl ciAqcHApCi0gewotLS0tIGdjYy9jcC9jeHgtcHJldHR5LXByaW50LmgJKHJldmlzaW9uIDEyOTY3 NikKLSsrKyBnY2MvY3AvY3h4LXByZXR0eS1wcmludC5oCShyZXZpc2lvbiAxMjk2NzcpCi1AQCAt NzAsNiArNzAsNiBAQCB2b2lkIHBwX2N4eF9zZXBhcmF0ZV93aXRoIChjeHhfcHJldHR5X3ByCi0g Ci0gdm9pZCBwcF9jeHhfZGVjbGFyYXRpb24gKGN4eF9wcmV0dHlfcHJpbnRlciAqLCB0cmVlKTsK LSB2b2lkIHBwX2N4eF9jYW5vbmljYWxfdGVtcGxhdGVfcGFyYW1ldGVyIChjeHhfcHJldHR5X3By aW50ZXIgKiwgdHJlZSk7Ci0tCi0rdm9pZCBwcF9jeHhfb2Zmc2V0b2ZfZXhwcmVzc2lvbiAoY3h4 X3ByZXR0eV9wcmludGVyICosIHRyZWUpOwotIAotICNlbmRpZiAvKiBHQ0NfQ1hYX1BSRVRUWV9Q UklOVF9IICovCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvdGVtcGxhdGUvZXJyb3IzNC5DCShy ZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBsYXRlL2Vycm9yMzQuQwko cmV2aXNpb24gMTI5Njc3KQotQEAgLTAsMCArMSwyOSBAQAotKy8vIFBSIGMrKy8zMzg0MgotKy8v IHsgZGctZG8gY29tcGlsZSB9Ci0rCi0rdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEEKLSt7 Ci0rICBBPF9fYnVpbHRpbl9vZmZzZXRvZihULCB4KT4oKTsJLy8geyBkZy1lcnJvciAidHlwZS92 YWx1ZSBtaXNtYXRjaHxvZmZzZXRvZlxcKFQsIHhcXCkiIH0KLSt9OwotKwotK3RlbXBsYXRlPHR5 cGVuYW1lIFQ+IHN0cnVjdCBCCi0rewotKyAgQjxfX2J1aWx0aW5fb2Zmc2V0b2YoVCwgeC55KT4o KTsJLy8geyBkZy1lcnJvciAidHlwZS92YWx1ZSBtaXNtYXRjaHxvZmZzZXRvZlxcKFQsIHgueVxc KSIgfQotK307Ci0rCi0rdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEMKLSt7Ci0rICBDPF9f YnVpbHRpbl9vZmZzZXRvZihULCB4WzZdKT4oKTsJLy8geyBkZy1lcnJvciAidHlwZS92YWx1ZSBt aXNtYXRjaHxvZmZzZXRvZlxcKFQsIHhcXFxbNlxcXF1cXCkiIH0KLSt9OwotKwotK3RlbXBsYXRl PHR5cGVuYW1lIFQ+IHN0cnVjdCBECi0rewotKyAgRDxfX2J1aWx0aW5fb2Zmc2V0b2YoVCwgeC55 WzZdLnopPigpOwkvLyB7IGRnLWVycm9yICJ0eXBlL3ZhbHVlIG1pc21hdGNofG9mZnNldG9mXFwo VCwgeC55XFxcWzZcXFxdLnpcXCkiIH0KLSt9OwotKwotK3N0cnVjdCBFIHsgaW50IHg7IH07Ci0r Ci0rdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEYKLSt7Ci0rICBGPF9fYnVpbHRpbl9vZmZz ZXRvZihFLCB4KT4oKTsJLy8geyBkZy1lcnJvciAidHlwZS92YWx1ZSBtaXNtYXRjaHxvZmZzZXRv ZlxcKEUsIHhcXCkiIH0KLSt9OwoKZGlmZiAtLWdpdCBhL2djYzQxLXByMzM4NDQucGF0Y2ggYi9n Y2M0MS1wcjMzODQ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDVkODgz Li4wMDAwMDAwCi0tLSBhL2djYzQxLXByMzM4NDQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1 NiArMCwwIEBACi0yMDA3LTEwLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4K LQotCVBSIGMrKy8zMzg0NAotCSogY3h4LXByZXR0eS1wcmludC5jIChwcF9jeHhfcG1fZXhwcmVz c2lvbikgPGNhc2UgTUVNQkVSX1JFRj46IFByaW50Ci0JLT4qIHJhdGhlciB0aGFuIC4qLgotCSog ZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIE1FTUJFUl9SRUYgYW5kIERPVFNUQVJfRVhQUi4K LQotCSogZysrLmRnL290aGVyL3B0cm1lbTguQzogTmV3IHRlc3QuCi0KLS0tLSBnY2MvY3AvZXJy b3IuYwkocmV2aXNpb24gMTI5NjgxKQotKysrIGdjYy9jcC9lcnJvci5jCShyZXZpc2lvbiAxMjk2 ODIpCi1AQCAtMTg5MSw2ICsxODkxLDExIEBAIGR1bXBfZXhwciAodHJlZSB0LCBpbnQgZmxhZ3Mp Ci0gICAgICAgcHBfY3h4X29mZnNldG9mX2V4cHJlc3Npb24gKGN4eF9wcCwgdCk7Ci0gICAgICAg YnJlYWs7Ci0gCi0rICAgIGNhc2UgTUVNQkVSX1JFRjoKLSsgICAgY2FzZSBET1RTVEFSX0VYUFI6 Ci0rICAgICAgcHBfbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiAoY3h4X3BwLCB0KTsKLSsgICAg ICBicmVhazsKLSsKLSAgICAgICAvKiAgVGhpcyBsaXN0IGlzIGluY29tcGxldGUsIGJ1dCBzaG91 bGQgc3VmZmljZSBmb3Igbm93LgotIAkgIEl0IGlzIHZlcnkgaW1wb3J0YW50IHRoYXQgYHNvcnJ5 JyBkb2VzIG5vdCBjYWxsCi0gCSAgYHJlcG9ydF9lcnJvcl9mdW5jdGlvbicuICBUaGF0IGNvdWxk IGNhdXNlIGFuIGluZmluaXRlIGxvb3AuICAqLwotLS0tIGdjYy9jcC9jeHgtcHJldHR5LXByaW50 LmMJKHJldmlzaW9uIDEyOTY4MSkKLSsrKyBnY2MvY3AvY3h4LXByZXR0eS1wcmludC5jCShyZXZp c2lvbiAxMjk2ODIpCi1AQCAtODE0LDcgKzgxNCwxMCBAQCBwcF9jeHhfcG1fZXhwcmVzc2lvbiAo Y3h4X3ByZXR0eV9wcmludGVyCi0gICAgIGNhc2UgTUVNQkVSX1JFRjoKLSAgICAgY2FzZSBET1RT VEFSX0VYUFI6Ci0gICAgICAgcHBfY3h4X3BtX2V4cHJlc3Npb24gKHBwLCBUUkVFX09QRVJBTkQg KHQsIDApKTsKLS0gICAgICBwcF9jeHhfZG90IChwcCk7Ci0rICAgICAgaWYgKFRSRUVfQ09ERSAo dCkgPT0gTUVNQkVSX1JFRikKLSsJcHBfY3h4X2Fycm93IChwcCk7Ci0rICAgICAgZWxzZQotKwlw cF9jeHhfZG90IChwcCk7Ci0gICAgICAgcHBfc3RhcihwcCk7Ci0gICAgICAgcHBfY3h4X2Nhc3Rf ZXhwcmVzc2lvbiAocHAsIFRSRUVfT1BFUkFORCAodCwgMSkpOwotICAgICAgIGJyZWFrOwotLS0t IGdjYy90ZXN0c3VpdGUvZysrLmRnL290aGVyL3B0cm1lbTguQwkocmV2aXNpb24gMCkKLSsrKyBn Y2MvdGVzdHN1aXRlL2crKy5kZy9vdGhlci9wdHJtZW04LkMJKHJldmlzaW9uIDEyOTY4MikKLUBA IC0wLDAgKzEsMTYgQEAKLSsvLyBQUiBjKysvMzM4NDQKLSsvLyB7IGRnLWRvIGNvbXBpbGUgfQot KwotK3N0cnVjdCBBIHt9OwotKwotK3RlbXBsYXRlPGludD4gdm9pZCBmb28odm9pZCAoQTo6KiBm KSgpKQotK3sKLSsgIEEgYTsKLSsgICYoYS4qZik7CS8vIHsgZGctZXJyb3IgImludmFsaWQgdXNl IG9mXFteXG5cXSpcXC5cXCpcW15cblxdKnRvIGZvcm18cXVhbGlmaWVkLWlkIGlzIHJlcXVpcmVk IiB9Ci0rfQotKwotK3RlbXBsYXRlPGludD4gdm9pZCBiYXIodm9pZCAoQTo6KiBmKSgpKQotK3sK LSsgIEEgKnA7Ci0rICAmKHAtPipmKTsJLy8geyBkZy1lcnJvciAiaW52YWxpZCB1c2Ugb2ZcW15c blxdKi0+XFwqXFteXG5cXSp0byBmb3JtfHF1YWxpZmllZC1pZCBpcyByZXF1aXJlZCIgfQotK30K CmRpZmYgLS1naXQgYS9nY2M0MS1wcjMzOTYyLnBhdGNoIGIvZ2NjNDEtcHIzMzk2Mi5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNkODNkYy4uMDAwMDAwMAotLS0gYS9nY2M0 MS1wcjMzOTYyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotMjAwNy0xMS0y MCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQlQUiBjKysvMzM5NjIKLQkq IHB0LmMgKG1vcmVfc3BlY2lhbGl6ZWRfZm4pOiBEb24ndCBzZWdmYXVsdCBpZiBvbmUgb3IKLQli b3RoIGFyZ3VtZW50IGxpc3QgZW5kIHdpdGggZWxsaXBzaXMuCi0KLQkqIGcrKy5kZy9vdmVybG9h ZC90ZW1wbGF0ZTMuQzogTmV3IHRlc3QuCi0KLS0tLSBnY2MvY3AvcHQuYwkocmV2aXNpb24gMTMw MzA3KQotKysrIGdjYy9jcC9wdC5jCShyZXZpc2lvbiAxMzAzMDgpCi1AQCAtMTM1MjMsNiArMTM1 MjMsMTAgQEAgbW9yZV9zcGVjaWFsaXplZF9mbiAodHJlZSBwYXQxLCB0cmVlIHBhdAotIAotICAg ICAgIGFyZ3MxID0gVFJFRV9DSEFJTiAoYXJnczEpOwotICAgICAgIGFyZ3MyID0gVFJFRV9DSEFJ TiAoYXJnczIpOwotKwotKyAgICAgIC8qIFN0b3Agd2hlbiBhbiBlbGxpcHNpcyBpcyBzZWVuLiAg Ki8KLSsgICAgICBpZiAoYXJnczEgPT0gTlVMTF9UUkVFIHx8IGFyZ3MyID09IE5VTExfVFJFRSkK LSsJYnJlYWs7Ci0gICAgIH0KLSAKLSAgIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbC0tOwotLS0t IGdjYy90ZXN0c3VpdGUvZysrLmRnL292ZXJsb2FkL3RlbXBsYXRlMy5DCShyZXZpc2lvbiAwKQot KysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL292ZXJsb2FkL3RlbXBsYXRlMy5DCShyZXZpc2lvbiAx MzAzMDgpCi1AQCAtMCwwICsxLDE1IEBACi0rLy8gUFIgYysrLzMzOTYyCi0rLy8geyBkZy1kbyBj b21waWxlIH0KLSsKLSt0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IEE7Ci0rCi0rdGVtcGxhdGUg PGNsYXNzIFU+IHZvaWQgZm9vIChjb25zdCBVICZ4LCAuLi4pOwotK3RlbXBsYXRlIDxjbGFzcyBU PiB2b2lkIGZvbyAoY29uc3QgQTxUPiAmeCwgLi4uKTsKLSsKLSt2b2lkIGJhciAoY29uc3QgQTxp bnQ+ICZ4LCBjb25zdCBjaGFyICp5KQotK3sKLSsgIGZvbyAoeCwgeSk7Ci0rfQotKwotKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX1ozZm9vSWlFdlJLMUFJVF9FeiIgfSB9ICovCi0r LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX1ozZm9vSTFBSWlFRXZSS1RfeiIg fSB9ICovCgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcHIzNDA3MC5wYXRjaCBiL2djYzQxLXByMzQwNzAu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YjFmNmEuLjAwMDAwMDAKLS0t IGEvZ2NjNDEtcHIzNDA3MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLTIw MDctMTEtMTIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KLQotCVBSIG1p ZGRsZS1lbmQvMzQwNzAKLQkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnkpOiBJZiB0ZXN0aW5n IGZvciBub24tbmVnYXRpdmUKLQlvcGVyYW5kcyB3aXRoIHRyZWVfZXhwcl9ub25uZWdhdGl2ZV93 YXJudl9wIG1ha2Ugc3VyZSB0bwotCXVzZSBvcDAgd2hpY2ggaGFzIGFsbCAoc2lnbikgY29udmVy c2lvbnMgcmV0YWluZWQuCi0KLQkqIGdjYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjM0MDcwLTEuYzog TmV3IHRlc3RjYXNlLgotCSogZ2NjLmMtdG9ydHVyZS9leGVjdXRlL3ByMzQwNzAtMi5jOiBMaWtl d2lzZS4KLQotLS0tIGdjYy9mb2xkLWNvbnN0LmMJKHJldmlzaW9uIDEzMDA5NykKLSsrKyBnY2Mv Zm9sZC1jb25zdC5jCShyZXZpc2lvbiAxMzAwOTgpCi1AQCAtODUwOSw3ICs4NTA5LDcgQEAgZm9s ZF9iaW5hcnkgKGVudW0gdHJlZV9jb2RlIGNvZGUsIHRyZWUgdAotICAgICAgIC8qIFNpbXBsaWZ5 IEEgLyAoQiA8PCBOKSB3aGVyZSBBIGFuZCBCIGFyZSBwb3NpdGl2ZSBhbmQgQiBpcwotIAkgYSBw b3dlciBvZiAyLCB0byBBID4+IChOICsgbG9nMihCKSkuICAqLwotICAgICAgIGlmIChUUkVFX0NP REUgKGFyZzEpID09IExTSElGVF9FWFBSCi0tCSAgJiYgKFRZUEVfVU5TSUdORUQgKHR5cGUpIHx8 IHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wIChhcmcwKSkpCi0rCSAgJiYgKFRZUEVfVU5TSUdORUQg KHR5cGUpIHx8IHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wIChvcDApKSkKLSAJewotIAkgIHRyZWUg c3ZhbCA9IFRSRUVfT1BFUkFORCAoYXJnMSwgMCk7Ci0gCSAgaWYgKGludGVnZXJfcG93MnAgKHN2 YWwpICYmIHRyZWVfaW50X2NzdF9zZ24gKHN2YWwpID4gMCkKLUBAIC04NTg0LDcgKzg1ODQsNyBA QCBmb2xkX2JpbmFyeSAoZW51bSB0cmVlX2NvZGUgY29kZSwgdHJlZSB0Ci0gICAgICAgLyogT3B0 aW1pemUgVFJVTkNfTU9EX0VYUFIgYnkgYSBwb3dlciBvZiB0d28gaW50byBhIEJJVF9BTkRfRVhQ UiwKLSAgICAgICAgICBpLmUuICJYICUgQyIgaW50byAiWCAmIChDIC0gMSkiLCBpZiBYIGFuZCBD IGFyZSBwb3NpdGl2ZS4gICovCi0gICAgICAgaWYgKChjb2RlID09IFRSVU5DX01PRF9FWFBSIHx8 IGNvZGUgPT0gRkxPT1JfTU9EX0VYUFIpCi0tCSAgJiYgKFRZUEVfVU5TSUdORUQgKHR5cGUpIHx8 IHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wIChhcmcwKSkpCi0rCSAgJiYgKFRZUEVfVU5TSUdORUQg KHR5cGUpIHx8IHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wIChvcDApKSkKLSAJewotIAkgIHRyZWUg YyA9IGFyZzE7Ci0gCSAgLyogQWxzbyBvcHRpbWl6ZSBBICUgKEMgPDwgTikgIHdoZXJlIEMgaXMg YSBwb3dlciBvZiAyLAotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9leGVjdXRlL3By MzQwNzAtMS5jCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9l eGVjdXRlL3ByMzQwNzAtMS5jCShyZXZpc2lvbiAxMzAwOTgpCi1AQCAtMCwwICsxLDEzIEBACi0r ZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOwotKwotK2ludCBmKHVuc2lnbmVkIGludCB4KQotK3sK LSsgICAgcmV0dXJuICgoaW50KXgpICUgNDsKLSt9Ci0rCi0raW50IG1haW4oKQotK3sKLSsgIGlm IChmKC0xKSAhPSAtMSkKLSsgICAgYWJvcnQgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0tLS0gZ2Nj L3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4ZWN1dGUvcHIzNDA3MC0yLmMJKHJldmlzaW9uIDAp Ci0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4ZWN1dGUvcHIzNDA3MC0yLmMJKHJl dmlzaW9uIDEzMDA5OCkKLUBAIC0wLDAgKzEsMTMgQEAKLStleHRlcm4gdm9pZCBhYm9ydCAodm9p ZCk7Ci0rCi0raW50IGYodW5zaWduZWQgaW50IHgsIGludCBuKQotK3sKLSsgICAgcmV0dXJuICgo aW50KXgpIC8gKDEgPDwgbik7Ci0rfQotKwotK2ludCBtYWluKCkKLSt7Ci0rICBpZiAoZigtMSwg MSkgIT0gMCkKLSsgICAgYWJvcnQgKCk7Ci0rICByZXR1cm4gMDsKLSt9CgpkaWZmIC0tZ2l0IGEv Z2NjNDEtcHIzNDA4OS5wYXRjaCBiL2djYzQxLXByMzQwODkucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDc2ZmY5Y2YuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtcHIzNDA4OS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTIwMDctMTEtMjAgIEpha3ViIEplbGlu ZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgYysrLzM0MDg5Ci0JKiBwYXJzZXIuYyAoY3Bf cGFyc2VyX2NsYXNzX2hlYWQpOiBSZWplY3QgZnVuY3Rpb24gdGVtcGxhdGUgaWRzLgotCi0JKiBn KysuZGcvdGVtcGxhdGUvY3Jhc2g3NC5DOiBOZXcgdGVzdC4KLQotLS0tIGdjYy9jcC9wYXJzZXIu YwkocmV2aXNpb24gMTMwMzE1KQotKysrIGdjYy9jcC9wYXJzZXIuYwkocmV2aXNpb24gMTMwMzE2 KQotQEAgLTE0NTM2LDggKzE0NTM2LDE4IEBAIGNwX3BhcnNlcl9jbGFzc19oZWFkIChjcF9wYXJz ZXIqIHBhcnNlciwKLSAgIC8qIExvb2sgdXAgdGhlIHR5cGUuICAqLwotICAgaWYgKHRlbXBsYXRl X2lkX3ApCi0gICAgIHsKLS0gICAgICB0eXBlID0gVFJFRV9UWVBFIChpZCk7Ci0tICAgICAgdHlw ZSA9IG1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbiAodHlwZSk7Ci0rICAgICAg aWYgKFRSRUVfQ09ERSAoaWQpID09IFRFTVBMQVRFX0lEX0VYUFIKLSsJICAmJiAoREVDTF9GVU5D VElPTl9URU1QTEFURV9QIChUUkVFX09QRVJBTkQgKGlkLCAwKSkKLSsJICAgICAgfHwgVFJFRV9D T0RFIChUUkVFX09QRVJBTkQgKGlkLCAwKSkgPT0gT1ZFUkxPQUQpKQotKwl7Ci0rCSAgZXJyb3Ig KCJmdW5jdGlvbiB0ZW1wbGF0ZSAlcUQgcmVkZWNsYXJlZCBhcyBhIGNsYXNzIHRlbXBsYXRlIiwg aWQpOwotKwkgIHR5cGUgPSBlcnJvcl9tYXJrX25vZGU7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsK LSsJICB0eXBlID0gVFJFRV9UWVBFIChpZCk7Ci0rCSAgdHlwZSA9IG1heWJlX3Byb2Nlc3NfcGFy dGlhbF9zcGVjaWFsaXphdGlvbiAodHlwZSk7Ci0rCX0KLSAgICAgICBpZiAobmVzdGVkX25hbWVf c3BlY2lmaWVyKQotIAlwdXNoZWRfc2NvcGUgPSBwdXNoX3Njb3BlIChuZXN0ZWRfbmFtZV9zcGVj aWZpZXIpOwotICAgICB9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvdGVtcGxhdGUvY3Jhc2g3 NC5DCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBsYXRlL2NyYXNo NzQuQwkocmV2aXNpb24gMTMwMzE2KQotQEAgLTAsMCArMSw2IEBACi0rLy8gUFIgYysrLzM0MDg5 Ci0rLy8geyBkZy1kbyBjb21waWxlIH0KLSsvLyB7IGRnLW9wdGlvbnMgIiIgfQotKwotK3RlbXBs YXRlPHR5cGVuYW1lIEY+IHZvaWQgZm9vICgpIHsgfQotK3RlbXBsYXRlPHR5cGVuYW1lIEY+IHN0 cnVjdCBmb288Rj4geyB9OwkvLyB7IGRnLWVycm9yICJyZWRlY2xhcmVkIGFzIiB9CgpkaWZmIC0t Z2l0IGEvZ2NjNDEtcHIzNDEzMC5wYXRjaCBiL2djYzQxLXByMzQxMzAucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2N2Y4YWUuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtcHIzNDEz MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLTIwMDctMTEtMTcgIFJpY2hh cmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KLQotCVBSIG1pZGRsZS1lbmQvMzQxMzAK LQkqIGZvbGQtY29uc3QuYyAoZXh0cmFjdF9tdWxkaXZfMSk6IERvIG5vdCBtb3ZlIG5lZ2F0aXZl Ci0JY29uc3RhbnRzIGluc2lkZSBBQlNfRVhQUi4KLQotCSogZ2NjLmMtdG9ydHVyZS9leGVjdXRl L3ByMzQxMzAuYzogTmV3IHRlc3RjYXNlLgotCi0tLS0gZ2NjL2ZvbGQtY29uc3QuYwkocmV2aXNp b24gMTMwMjU3KQotKysrIGdjYy9mb2xkLWNvbnN0LmMJKHJldmlzaW9uIDEzMDI1OCkKLUBAIC02 MDk1LDYgKzYwOTUsOSBAQCBleHRyYWN0X211bGRpdl8xICh0cmVlIHQsIHRyZWUgYywgZW51bSB0 Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSsgICAgICAv KiBJZiB0aGUgY29uc3RhbnQgaXMgbmVnYXRpdmUsIHdlIGNhbm5vdCBzaW1wbGlmeSB0aGlzLiAg Ki8KLSsgICAgICBpZiAodHJlZV9pbnRfY3N0X3NnbiAoYykgPT0gLTEpCi0rICAgICAgICBicmVh azsKLSAgICAgICAvKiBGQUxMVEhST1VHSCAqLwotICAgICBjYXNlIE5FR0FURV9FWFBSOgotICAg ICAgIGlmICgodDEgPSBleHRyYWN0X211bGRpdiAob3AwLCBjLCBjb2RlLCB3aWRlX3R5cGUsIHN0 cmljdF9vdmVyZmxvd19wKSkKLS0tLSBnY2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0 ZS9wcjM0MTMwLmMJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJl L2V4ZWN1dGUvcHIzNDEzMC5jCShyZXZpc2lvbiAxMzAyNTgpCi1AQCAtMCwwICsxLDEyIEBACi0r ZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOwotK2ludCBmb28gKGludCBpKQotK3sKLSsgIHJldHVy biAtMiAqIF9fYnVpbHRpbl9hYnMoaSAtIDIpOwotK30KLStpbnQgbWFpbigpCi0rewotKyAgaWYg KGZvbygxKSAhPSAtMgotKyAgICAgIHx8IGZvbygzKSAhPSAtMikKLSsgICAgYWJvcnQgKCk7Ci0r ICByZXR1cm4gMDsKLSt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcHIzNDE0Ni5wYXRjaCBiL2djYzQx LXByMzQxNDYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkODMwZDYuLjAw MDAwMDAKLS0tIGEvZ2NjNDEtcHIzNDE0Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyAr MCwwIEBACi0yMDA3LTExLTIwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQot CVBSIGMvMzQxNDYKLQkqIGMtZ2ltcGxpZnkuYyAob3B0aW1pemVfY29tcG91bmRfbGl0ZXJhbHNf aW5fY3Rvcik6IE5ldyBmdW5jdGlvbi4KLQkoY19naW1wbGlmeV9leHByKTogVXNlIGl0LgotCi0J KiBnY2MuZGcvdHJlZS1zc2EvcHIzNDE0Ni5jOiBOZXcgdGVzdC4KLSAKLS0tLSBnY2MvYy1naW1w bGlmeS5jCShyZXZpc2lvbiAxMzAzMTApCi0rKysgZ2NjL2MtZ2ltcGxpZnkuYwkocmV2aXNpb24g MTMwMzExKQotQEAgLTIwOCw2ICsyMDgsNDcgQEAgZ2ltcGxpZnlfY29tcG91bmRfbGl0ZXJhbF9l eHByICh0cmVlICpleAotICAgcmV0dXJuIEdTX09LOwotIH0KLSAKLSsvKiBPcHRpbWl6ZSBlbWJl ZGRlZCBDT01QT1VORF9MSVRFUkFMX0VYUFJzIHdpdGhpbiBhIENPTlNUUlVDVE9SLAotKyAgIHJl dHVybiBhIG5ldyBDT05TVFJVQ1RPUiBpZiBzb21ldGhpbmcgY2hhbmdlZC4gICovCi0rCi0rc3Rh dGljIHRyZWUKLStvcHRpbWl6ZV9jb21wb3VuZF9saXRlcmFsc19pbl9jdG9yICh0cmVlIG9yaWdf Y3RvcikKLSt7Ci0rICB0cmVlIGN0b3IgPSBvcmlnX2N0b3I7Ci0rICBWRUMoY29uc3RydWN0b3Jf ZWx0LGdjKSAqZWx0cyA9IENPTlNUUlVDVE9SX0VMVFMgKGN0b3IpOwotKyAgdW5zaWduZWQgaW50 IGlkeCwgbnVtID0gVkVDX2xlbmd0aCAoY29uc3RydWN0b3JfZWx0LCBlbHRzKTsKLSsKLSsgIGZv ciAoaWR4ID0gMDsgaWR4IDwgbnVtOyBpZHgrKykKLSsgICAgewotKyAgICAgIHRyZWUgdmFsdWUg PSBWRUNfaW5kZXggKGNvbnN0cnVjdG9yX2VsdCwgZWx0cywgaWR4KS0+dmFsdWU7Ci0rICAgICAg dHJlZSBuZXd2YWwgPSB2YWx1ZTsKLSsgICAgICBpZiAoVFJFRV9DT0RFICh2YWx1ZSkgPT0gQ09O U1RSVUNUT1IpCi0rCW5ld3ZhbCA9IG9wdGltaXplX2NvbXBvdW5kX2xpdGVyYWxzX2luX2N0b3Ig KHZhbHVlKTsKLSsgICAgICBlbHNlIGlmIChUUkVFX0NPREUgKHZhbHVlKSA9PSBDT01QT1VORF9M SVRFUkFMX0VYUFIpCi0rCXsKLSsJICB0cmVlIGRlY2xfcyA9IENPTVBPVU5EX0xJVEVSQUxfRVhQ Ul9ERUNMX1NUTVQgKHZhbHVlKTsKLSsJICB0cmVlIGRlY2wgPSBERUNMX0VYUFJfREVDTCAoZGVj bF9zKTsKLSsJICB0cmVlIGluaXQgPSBERUNMX0lOSVRJQUwgKGRlY2wpOwotKwotKwkgIGlmICgh VFJFRV9BRERSRVNTQUJMRSAodmFsdWUpCi0rCSAgICAgICYmICFUUkVFX0FERFJFU1NBQkxFIChk ZWNsKQotKwkgICAgICAmJiBpbml0KQotKwkgICAgbmV3dmFsID0gaW5pdDsKLSsJfQotKyAgICAg IGlmIChuZXd2YWwgPT0gdmFsdWUpCi0rCWNvbnRpbnVlOwotKwotKyAgICAgIGlmIChjdG9yID09 IG9yaWdfY3RvcikKLSsJewotKwkgIGN0b3IgPSBjb3B5X25vZGUgKG9yaWdfY3Rvcik7Ci0rCSAg Q09OU1RSVUNUT1JfRUxUUyAoY3RvcikgPSBWRUNfY29weSAoY29uc3RydWN0b3JfZWx0LCBnYywg ZWx0cyk7Ci0rCSAgZWx0cyA9IENPTlNUUlVDVE9SX0VMVFMgKGN0b3IpOwotKwl9Ci0rICAgICAg VkVDX2luZGV4IChjb25zdHJ1Y3Rvcl9lbHQsIGVsdHMsIGlkeCktPnZhbHVlID0gbmV3dmFsOwot KyAgICB9Ci0rICByZXR1cm4gY3RvcjsKLSt9Ci0rCi0gLyogRG8gQy1zcGVjaWZpYyBnaW1wbGlm aWNhdGlvbi4gIEFyZ3MgYXJlIGFzIGZvciBnaW1wbGlmeV9leHByLiAgKi8KLSAKLSBpbnQKLUBA IC0yNTQsNiArMjk1LDE4IEBAIGNfZ2ltcGxpZnlfZXhwciAodHJlZSAqZXhwcl9wLCB0cmVlICpw cmUKLSAJICAgICAgcmV0dXJuIEdTX09LOwotIAkgICAgfQotIAl9Ci0rICAgICAgZWxzZSBpZiAo VFJFRV9DT0RFIChUUkVFX09QRVJBTkQgKCpleHByX3AsIDEpKSA9PSBDT05TVFJVQ1RPUikKLSsJ ewotKwkgIHRyZWUgY3RvcgotKwkgICAgPSBvcHRpbWl6ZV9jb21wb3VuZF9saXRlcmFsc19pbl9j dG9yIChUUkVFX09QRVJBTkQgKCpleHByX3AsIDEpKTsKLSsKLSsJICBpZiAoY3RvciAhPSBUUkVF X09QRVJBTkQgKCpleHByX3AsIDEpKQotKwkgICAgewotKwkgICAgICAqZXhwcl9wID0gY29weV9u b2RlICgqZXhwcl9wKTsKLSsJICAgICAgVFJFRV9PUEVSQU5EICgqZXhwcl9wLCAxKSA9IGN0b3I7 Ci0rCSAgICAgIHJldHVybiBHU19PSzsKLSsJICAgIH0KLSsJfQotICAgICAgIHJldHVybiBHU19V TkhBTkRMRUQ7Ci0gCi0gICAgIGRlZmF1bHQ6Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJl ZS1zc2EvcHIzNDE0Ni5jCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3Ry ZWUtc3NhL3ByMzQxNDYuYwkocmV2aXNpb24gMTMwMzExKQotQEAgLTAsMCArMSw1MyBAQAotKy8q IFBSIGMvMzQxNDYgKi8KLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9u cyAiLU8yIC1mZHVtcC10cmVlLWdpbXBsZSIgfSAqLwotKwotK3N0cnVjdCBBCi0rewotKyAgaW50 IGYxLCBmMiwgZjM7Ci0rfTsKLSsKLStzdHJ1Y3QgQgotK3sKLSsgIHN0cnVjdCBBIGcxLCBnMjsK LSt9OwotKwotK3N0cnVjdCBDCi0rewotKyAgc3RydWN0IEIgaDEsIGgyOwotK307Ci0rCi0rdHlw ZWRlZiB1bmlvbgotK3sKLSsgIHN0cnVjdCBDIGM7Ci0rICBjaGFyIHNbNF07Ci0rICBsb25nIGlu dCBhOwotK30gVDsKLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSsgIFQgdCA9IHsgeyB7IHsg MCwgMCwgMCB9LCB7IDAsIDAsIDAgfSB9LCB7IHsgMCwgMCwgMCB9LCB7IDAsIDAsIDAgfSB9IH0g fTsKLSsgIHRlc3QgKCZ0KTsKLSt9Ci0rCi0rdm9pZAotK2JhciAodm9pZCkKLSt7Ci0rICBUIHQg PSB7IHsgeyB7IDAsIDAsIDAgfSwgKHN0cnVjdCBBKSB7IDAsIDAsIDAgfSB9LAotKwkgICAgKHN0 cnVjdCBCKSB7IChzdHJ1Y3QgQSkgeyAwLCAwLCAwIH0sIHsgMCwgMCwgMCB9IH0gfSB9OwotKyAg dGVzdCAoJnQpOwotK30KLSsKLSt2b2lkCi0rYmF6ICh2b2lkKQotK3sKLSsgIFQgdCA9IHsgeyB7 IHsgMCwgMCwgMCB9LCAoc3RydWN0IEEpIHsgMSwgMSwgMSB9IH0sCi0rCSAgICAoc3RydWN0IEIp IHsgKHN0cnVjdCBBKSB7IDAsIDAsIDAgfSwgeyAxLCAxLCAxIH0gfSB9IH07Ci0rICB0ZXN0ICgm dCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgInQgPSBEIiAi Z2ltcGxlIn0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgInRcLmNc LmhcWzEyXF0gPSBEIiAiZ2ltcGxlIn0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC1ub3QgIlwuZ1xbMTJcXSA9IEQiICJnaW1wbGUifSB9ICovCi0rLyogeyBkZy1maW5hbCB7 IGNsZWFudXAtdHJlZS1kdW1wICJnaW1wbGUiIH0gfSAqLwoKZGlmZiAtLWdpdCBhL2djYzQxLXBy MzQxNzgucGF0Y2ggYi9nY2M0MS1wcjM0MTc4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA3ZDllNjU1Li4wMDAwMDAwCi0tLSBhL2djYzQxLXByMzQxNzgucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotMjAwNy0xMi0wOSAgSmFrdWIgSmVsaW5layAgPGph a3ViQHJlZGhhdC5jb20+Ci0KLQlQUiBjKysvMzQxNzgKLQlQUiBjKysvMzQzNDAKLQkqIHJlcG8u YyAocmVwb19lbWl0X3ApOiBSZXR1cm4gMiBmb3IgREVDTF9JTlRFR1JBTF9DT05TVEFOVF9WQVJf UAotCWluIGNsYXNzIHNjb3BlIHJhdGhlciB0aGFuIERFQ0xfSU5JVElBTElaRURfQllfQ09OU1RB TlRfRVhQUkVTU0lPTl9QLgotCVJldHVybiAyIGFsc28gaWYgREVDTF9FWFBMSUNJVF9JTlNUQU5U SUFUSU9OLgotCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogRG9uJ3QgbWFrZSBWQVJf REVDTHMgaW1wb3J0X3Agd2hlbgotCWZsYWdfdXNlX3JlcG9zaXRvcnkgYW5kIHJlcG9fZW1pdF9w IHJldHVybmVkIDIuCi0KLQkqIGcrKy5kZy90ZW1wbGF0ZS9yZXBvNi5DOiBOZXcgdGVzdC4KLQkq IGcrKy5kZy90ZW1wbGF0ZS9yZXBvNy5DOiBOZXcgdGVzdC4KLQkqIGcrKy5kZy90ZW1wbGF0ZS9y ZXBvOC5DOiBOZXcgdGVzdC4KLQotLS0tIGdjYy9jcC9kZWNsMi5jCShyZXZpc2lvbiAxMzA3MjYp Ci0rKysgZ2NjL2NwL2RlY2wyLmMJKHJldmlzaW9uIDEzMDcyNykKLUBAIC0yMjMwLDcgKzIyMzAs OCBAQCBpbXBvcnRfZXhwb3J0X2RlY2wgKHRyZWUgZGVjbCkKLSAgICAgewotICAgICAgIC8qIERF Q0wgaXMgYW4gaW1wbGljaXQgaW5zdGFudGlhdGlvbiBvZiBhIGZ1bmN0aW9uIG9yIHN0YXRpYwot IAkgZGF0YSBtZW1iZXIuICAqLwotLSAgICAgIGlmIChmbGFnX2ltcGxpY2l0X3RlbXBsYXRlcwot KyAgICAgIGlmICgoZmxhZ19pbXBsaWNpdF90ZW1wbGF0ZXMKLSsJICAgJiYgIWZsYWdfdXNlX3Jl cG9zaXRvcnkpCi0gCSAgfHwgKGZsYWdfaW1wbGljaXRfaW5saW5lX3RlbXBsYXRlcwotIAkgICAg ICAmJiBUUkVFX0NPREUgKGRlY2wpID09IEZVTkNUSU9OX0RFQ0wKLSAJICAgICAgJiYgREVDTF9E RUNMQVJFRF9JTkxJTkVfUCAoZGVjbCkpKQotLS0tIGdjYy9jcC9yZXBvLmMJKHJldmlzaW9uIDEz MDcyNikKLSsrKyBnY2MvY3AvcmVwby5jCShyZXZpc2lvbiAxMzA3MjcpCi1AQCAtMzA0LDE2ICsz MDQsMTkgQEAgcmVwb19lbWl0X3AgKHRyZWUgZGVjbCkKLSAJICAmJiAoIVRZUEVfTEFOR19TUEVD SUZJQyAodHlwZSkKLSAJICAgICAgfHwgIUNMQVNTVFlQRV9URU1QTEFURV9JTlNUQU5USUFUSU9O ICh0eXBlKSkpCi0gCXJldHVybiAyOwotLSAgICAgIC8qIFN0YXRpYyBkYXRhIG1lbWJlcnMgaW5p dGlhbGl6ZWQgYnkgY29uc3RhbnQgZXhwcmVzc2lvbnMgbXVzdAotKyAgICAgIC8qIENvbnN0IHN0 YXRpYyBkYXRhIG1lbWJlcnMgaW5pdGlhbGl6ZWQgYnkgY29uc3RhbnQgZXhwcmVzc2lvbnMgbXVz dAotIAkgYmUgcHJvY2Vzc2VkIHdoZXJlIG5lZWRlZCBzbyB0aGF0IHRoZWlyIGRlZmluaXRpb25z IGFyZQotIAkgYXZhaWxhYmxlLiAgKi8KLS0gICAgICBpZiAoREVDTF9JTklUSUFMSVpFRF9CWV9D T05TVEFOVF9FWFBSRVNTSU9OX1AgKGRlY2wpCi0rICAgICAgaWYgKERFQ0xfSU5URUdSQUxfQ09O U1RBTlRfVkFSX1AgKGRlY2wpCi0gCSAgJiYgREVDTF9DTEFTU19TQ09QRV9QIChkZWNsKSkKLSAJ cmV0dXJuIDI7Ci0gICAgIH0KLSAgIGVsc2UgaWYgKCFERUNMX1RFTVBMQVRFX0lOU1RBTlRJQVRJ T04gKGRlY2wpKQotICAgICByZXR1cm4gMjsKLSAKLSsgIGlmIChERUNMX0VYUExJQ0lUX0lOU1RB TlRJQVRJT04gKGRlY2wpKQotKyAgICByZXR1cm4gMjsKLSsKLSAgIC8qIEZvciBjb25zdHJ1Y3Rv cnMgYW5kIGRlc3RydWN0b3JzLCB0aGUgcmVwb3NpdG9yeSBjb250YWlucwotICAgICAgaW5mb3Jt YXRpb24gYWJvdXQgdGhlIGNsb25lcyAtLSBub3QgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIC0tCi0g ICAgICBiZWNhdXNlIG9ubHkgdGhlIGNsb25lcyBhcmUgZW1pdHRlZCBpbiB0aGUgb2JqZWN0IGZp bGUuICAqLwotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBsYXRlL3JlcG83LkMJKHJldmlz aW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvdGVtcGxhdGUvcmVwbzcuQwkocmV2aXNp b24gMTMwNzI3KQotQEAgLTAsMCArMSwyMyBAQAotKy8vIFBSIGMrKy8zNDM0MAotKy8vIHsgZGct b3B0aW9ucyAiLWZyZXBvIiB9Ci0rLy8geyBkZy1maW5hbCB7IGNsZWFudXAtcmVwby1maWxlcyB9 IH0KLSsKLStzdHJ1Y3QgQQotK3sKLSsgIGludCBhOwotK307Ci0rCi0rdGVtcGxhdGUgPHR5cGVu YW1lIFQ+IHN0cnVjdCBECi0rewotKyAgc3RhdGljIGNvbnN0IEEgYjsKLSt9OwotKwotK3RlbXBs YXRlPHR5cGVuYW1lIFQ+IGNvbnN0IEEgRDxUPjo6YiA9IHsgMiB9OwotK3RlbXBsYXRlIGNsYXNz IEQ8QT47Ci0rCi0rY29uc3QgQSAqeCA9ICZEPEE+OjpiOwotKwotK2ludAotK21haW4gKCkKLSt7 Ci0rfQotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL3RlbXBsYXRlL3JlcG84LkMJKHJldmlzaW9u IDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvdGVtcGxhdGUvcmVwbzguQwkocmV2aXNpb24g MTMwNzI3KQotQEAgLTAsMCArMSwyMiBAQAotKy8vIFBSIGMrKy8zNDM0MAotKy8vIHsgZGctb3B0 aW9ucyAiLWZyZXBvIiB9Ci0rLy8geyBkZy1maW5hbCB7IGNsZWFudXAtcmVwby1maWxlcyB9IH0K LSsKLStzdHJ1Y3QgQQotK3sKLSsgIGludCBhOwotK307Ci0rCi0rdGVtcGxhdGUgPHR5cGVuYW1l IFQ+IHN0cnVjdCBECi0rewotKyAgc3RhdGljIGNvbnN0IEEgYjsKLSt9OwotKwotK3RlbXBsYXRl PHR5cGVuYW1lIFQ+IGNvbnN0IEEgRDxUPjo6YiA9IHsgMiB9OwotKwotK2NvbnN0IEEgKnggPSAm RDxBPjo6YjsKLSsKLStpbnQKLSttYWluICgpCi0rewotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2cr Ky5kZy90ZW1wbGF0ZS9yZXBvNi5DCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZysr LmRnL3RlbXBsYXRlL3JlcG82LkMJKHJldmlzaW9uIDEzMDcyNykKLUBAIC0wLDAgKzEsMjQgQEAK LSsvLyBQUiBjKysvMzQxNzgKLSsvLyB7IGRnLW9wdGlvbnMgIi1mcmVwbyIgfQotKy8vIHsgZGct ZmluYWwgeyBjbGVhbnVwLXJlcG8tZmlsZXMgfSB9Ci0rCi0rdGVtcGxhdGU8dHlwZW5hbWUgVD4K LStjbGFzcyBBCi0rewotK3ByaXZhdGU6Ci0rICBzdGF0aWMgY29uc3QgaW50IHg7Ci0rICBzdGF0 aWMgaW50IHk7Ci0rCi0rcHVibGljOgotKyAgaW50IGdldFggKCkgeyByZXR1cm4geCArIHk7IH0K LSt9OwotKwotK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0IGludCBBPFQ+Ojp4ID0gMDsKLSt0 ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbnQgQTxUPjo6eSA9IDA7Ci0rCi0raW50Ci0rbWFpbiAoKQot K3sKLSsgIEE8aW50PiBhOwotKyAgcmV0dXJuIGEuZ2V0WCgpOwotK30KCmRpZmYgLS1naXQgYS9n Y2M0MS1wcjM0MjEzLnBhdGNoIGIvZ2NjNDEtcHIzNDIxMy5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggYjEwMmQzOS4uMDAwMDAwMAotLS0gYS9nY2M0MS1wcjM0MjEzLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotMjAwNy0xMS0yNyAgSmFrdWIgSmVsaW5l ayAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQlQUiBjKysvMzQyMTMKLQkqIHRyZWUuYyAoZGVjbF9s aW5rYWdlKTogU3RhdGljIGRhdGEgbWVtYmVycyBhbmQgc3RhdGljIG1lbWJlcgotCWZ1bmN0aW9u cyBpbiBhbm9ueW1vdXMgbnMgY2xhc3NlcyBhcmUgbGtfZXh0ZXJuYWwuCi0KLQkqIGcrKy5kZy9l eHQvdmlzaWJpbGl0eS9hbm9uOC5DOiBOZXcgdGVzdC4KLQotLS0tIGdjYy9jcC90cmVlLmMJKHJl dmlzaW9uIDEzMDQ2MikKLSsrKyBnY2MvY3AvdHJlZS5jCShyZXZpc2lvbiAxMzA0NjMpCi1AQCAt MjUyNiwxMCArMjUyNiwxOCBAQCBkZWNsX2xpbmthZ2UgKHRyZWUgZGVjbCkKLSAgIC8qIE1lbWJl cnMgb2YgdGhlIGFub255bW91cyBuYW1lc3BhY2UgYWxzbyBoYXZlIFRSRUVfUFVCTElDIHVuc2V0 LCBidXQKLSAgICAgIGFyZSBjb25zaWRlcmVkIHRvIGhhdmUgZXh0ZXJuYWwgbGlua2FnZSBmb3Ig bGFuZ3VhZ2UgcHVycG9zZXMuICBERUNMcwotICAgICAgcmVhbGx5IG1lYW50IHRvIGhhdmUgaW50 ZXJuYWwgbGlua2FnZSBoYXZlIERFQ0xfVEhJU19TVEFUSUMgc2V0LiAgKi8KLS0gIGlmIChUUkVF X0NPREUgKGRlY2wpID09IFRZUEVfREVDTAotLSAgICAgIHx8ICgoVFJFRV9DT0RFIChkZWNsKSA9 PSBWQVJfREVDTCB8fCBUUkVFX0NPREUgKGRlY2wpID09IEZVTkNUSU9OX0RFQ0wpCi0tCSAgJiYg IURFQ0xfVEhJU19TVEFUSUMgKGRlY2wpKSkKLSsgIGlmIChUUkVFX0NPREUgKGRlY2wpID09IFRZ UEVfREVDTCkKLSAgICAgcmV0dXJuIGxrX2V4dGVybmFsOwotKyAgaWYgKFRSRUVfQ09ERSAoZGVj bCkgPT0gVkFSX0RFQ0wgfHwgVFJFRV9DT0RFIChkZWNsKSA9PSBGVU5DVElPTl9ERUNMKQotKyAg ICB7Ci0rICAgICAgaWYgKCFERUNMX1RISVNfU1RBVElDIChkZWNsKSkKLSsJcmV0dXJuIGxrX2V4 dGVybmFsOwotKwotKyAgICAgIC8qIFN0YXRpYyBkYXRhIG1lbWJlcnMgYW5kIHN0YXRpYyBtZW1i ZXIgZnVuY3Rpb25zIGZyb20gY2xhc3NlcwotKwkgaW4gYW5vbnltb3VzIG5hbWVzcGFjZSBhbHNv IGRvbid0IGhhdmUgVFJFRV9QVUJMSUMgc2V0LiAgKi8KLSsgICAgICBpZiAoREVDTF9DTEFTU19D T05URVhUIChkZWNsKSkKLSsJcmV0dXJuIGxrX2V4dGVybmFsOwotKyAgICB9Ci0gCi0gICAvKiBF dmVyeXRoaW5nIGVsc2UgaGFzIGludGVybmFsIGxpbmthZ2UuICAqLwotICAgcmV0dXJuIGxrX2lu dGVybmFsOwotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC92aXNpYmlsaXR5L2Fub244LkMJ KHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L3Zpc2liaWxpdHkvYW5v bjguQwkocmV2aXNpb24gMTMwNDYzKQotQEAgLTAsMCArMSwzMyBAQAotKy8vIFBSIGMrKy8zNDIx MwotKy8vIHsgZGctZG8gY29tcGlsZSB9Ci0rCi0rdGVtcGxhdGUgPHZvaWQgKCpmbikgKCk+Ci0r dm9pZCBjYWxsICgpCi0rewotKyAgZm4gKCk7Ci0rfQotKwotK25hbWVzcGFjZQotK3sKLSsgIHN0 cnVjdCBCMQotKyAgewotKyAgICBzdGF0aWMgdm9pZCBmbjEgKCkge30KLSsgICAgc3RhdGljIHZv aWQgZm40ICgpOwotKyAgfTsKLSsgIHZvaWQgZm4zICgpIHt9Ci0rICB2b2lkIEIxOjpmbjQgKCkg e30KLSsgIHN0YXRpYyB2b2lkIGZuNSAoKSB7fQotK30KLSsKLStpbnQgbWFpbiAoKQotK3sKLSsg IHN0cnVjdCBCMgotKyAgewotKyAgICBzdGF0aWMgdm9pZCBmbjIgKCkge30KLSsgIH07Ci0rICBj YWxsPCZCMTo6Zm4xPiAoKTsKLSsgIGNhbGw8JkIyOjpmbjI+ICgpOwkvLyB7IGRnLWVycm9yICJu b3QgZXh0ZXJuYWwgbGlua2FnZXxubyBtYXRjaGluZyIgfQotKyAgY2FsbDwmZm4zPiAoKTsKLSsg IGNhbGw8JkIxOjpmbjQ+ICgpOwotKyAgY2FsbDwmZm41PiAoKTsJLy8geyBkZy1lcnJvciAibm90 IGV4dGVybmFsIGxpbmthZ2V8bm8gbWF0Y2hpbmciIH0KLSt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDEt cHIzNDI3NS5wYXRjaCBiL2djYzQxLXByMzQyNzUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDM1NDVmYzUuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtcHIzNDI3NS5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLTIwMDctMTEtMzAgIEpha3ViIEplbGluZWsgIDxq YWt1YkByZWRoYXQuY29tPgotCi0JUFIgYysrLzM0Mjc1Ci0JKiBlcnJvci5jIChkdW1wX2V4cHIp OiBIYW5kbGUgT0JKX1RZUEVfUkVGLgotCi0JKiBnKysuZGcvb3RoZXIvZXJyb3IyMC5DOiBOZXcg dGVzdC4KLQotLS0tIGdjYy9jcC9lcnJvci5jCShyZXZpc2lvbiAxMzA1MzIpCi0rKysgZ2NjL2Nw L2Vycm9yLmMJKHJldmlzaW9uIDEzMDUzMykKLUBAIC0yMDU2LDYgKzIwNTYsMTAgQEAgZHVtcF9l eHByICh0cmVlIHQsIGludCBmbGFncykKLSAgICAgICBwcF9leHByZXNzaW9uIChjeHhfcHAsIHQp OwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIE9CSl9UWVBFX1JFRjoKLSsgICAgICBkdW1w X2V4cHIgKHJlc29sdmVfdmlydHVhbF9mdW5fZnJvbV9vYmpfdHlwZV9yZWYgKHQpLCBmbGFncyk7 Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgICAgLyogIFRoaXMgbGlzdCBpcyBpbmNvbXBsZXRlLCBi dXQgc2hvdWxkIHN1ZmZpY2UgZm9yIG5vdy4KLSAJICBJdCBpcyB2ZXJ5IGltcG9ydGFudCB0aGF0 IGBzb3JyeScgZG9lcyBub3QgY2FsbAotIAkgIGByZXBvcnRfZXJyb3JfZnVuY3Rpb24nLiAgVGhh dCBjb3VsZCBjYXVzZSBhbiBpbmZpbml0ZSBsb29wLiAgKi8KLS0tLSBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9vdGhlci9lcnJvcjIwLkMJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvb3RoZXIvZXJyb3IyMC5DCShyZXZpc2lvbiAxMzA1MzMpCi1AQCAtMCwwICsxLDEyIEBACi0r Ly8gUFIgYysrLzM0Mjc1Ci0rLy8geyBkZy1kbyBjb21waWxlIH0KLSsKLStzdHJ1Y3QgQQotK3sJ CS8vIHsgZGctZXJyb3IgImNhbmRpZGF0ZXMiIH0KLSsgIHZpcnR1YWwgQSBmb28gKCk7Ci0rfTsK LSsKLSt2b2lkIGJhciAoQSYgYSkKLSt7Ci0rICBhLmZvbyAoKSA9IDA7IC8vIHsgZGctZXJyb3Ig IkE6OmZvb1xcKFxcKSA9IDAiIH0KLSt9ICAgCgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcHIzNDM2NC5w YXRjaCBiL2djYzQxLXByMzQzNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGUyMWE2MDcuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtcHIzNDM2NC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDU0ICswLDAgQEAKLTIwMDctMTItMTEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRo YXQuY29tPgotCi0JUFIgYysrLzM0MzY0Ci0JKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCk6 IENhbGwgY29udmVydF9mcm9tX3JlZmVyZW5jZSBldmVuIGZvcgotCWR5bmFtaWNfY2FzdCBpbiBh IHRlbXBsYXRlLgotCi0JKiBnKysuZGcvcnR0aS9keW5jYXN0Mi5DOiBOZXcgdGVzdC4KLQotLS0t IGdjYy9jcC9ydHRpLmMJKHJldmlzaW9uIDEzMDc2OSkKLSsrKyBnY2MvY3AvcnR0aS5jCShyZXZp c2lvbiAxMzA3NzApCi1AQCAtNzI4LDggKzcyOCw3IEBAIGJ1aWxkX2R5bmFtaWNfY2FzdCAodHJl ZSB0eXBlLCB0cmVlIGV4cHIKLSAgICAgewotICAgICAgIGV4cHIgPSBidWlsZF9taW4gKERZTkFN SUNfQ0FTVF9FWFBSLCB0eXBlLCBleHByKTsKLSAgICAgICBUUkVFX1NJREVfRUZGRUNUUyAoZXhw cikgPSAxOwotLQotLSAgICAgIHJldHVybiBleHByOwotKyAgICAgIHJldHVybiBjb252ZXJ0X2Zy b21fcmVmZXJlbmNlIChleHByKTsKLSAgICAgfQotIAotICAgcmV0dXJuIGNvbnZlcnRfZnJvbV9y ZWZlcmVuY2UgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xICh0eXBlLCBleHByKSk7Ci0tLS0gZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvcnR0aS9keW5jYXN0Mi5DCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0 c3VpdGUvZysrLmRnL3J0dGkvZHluY2FzdDIuQwkocmV2aXNpb24gMTMwNzcwKQotQEAgLTAsMCAr MSwzMSBAQAotKy8vIFBSIGMrKy8zNDM2NAotKy8vIHsgZGctZG8gcnVuIH0KLSsKLStzdHJ1Y3Qg QQotK3sKLSsgIHZpcnR1YWwgfkEgKCkge30KLSt9OwotKwotK3N0cnVjdCBCIDogcHVibGljIEEK LSt7Ci0rICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEMKLSsgIHsKLSsgICAgc3RhdGlj IHZvaWQgZiAoQSAmYSkKLSsgICAgewotKyAgICAgIGR5bmFtaWNfY2FzdCA8QiAmPihhKS5nICgp OwotKyAgICB9Ci0rICB9OwotKwotKyAgQiAoKSA6IGMgKDYpIHt9Ci0rICB2b2lkIGcgKCkgeyBj Kys7IH0KLSsgIGludCBjOwotK307Ci0rCi0rQiBiOwotKwotK2ludAotK21haW4gKHZvaWQpCi0r ewotKyAgQjo6QzxpbnQ+OjpmIChiKTsKLSsgIHJldHVybiBiLmMgIT0gNzsKLSt9CgpkaWZmIC0t Z2l0IGEvZ2NjNDEtcHIzNDM5NC5wYXRjaCBiL2djYzQxLXByMzQzOTQucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NDlmNDMuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtcHIzNDM5 NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLTIwMDctMTItMTAgIEpha3Vi IEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgYysrLzM0Mzk0Ci0JKiBlcnJvci5j IChkdW1wX2V4cHIpOiBIYW5kbGUgQUJTX0VYUFIuCi0KLQkqIGcrKy5kZy9vdGhlci9lcnJvcjIy LkM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL2NwL2Vycm9yLmMJKHJldmlzaW9uIDEzMDc0MykKLSsr KyBnY2MvY3AvZXJyb3IuYwkocmV2aXNpb24gMTMwNzQ0KQotQEAgLTE3NTcsNiArMTc1Nyw3IEBA IGR1bXBfZXhwciAodHJlZSB0LCBpbnQgZmxhZ3MpCi0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNh c2UgU0NPUEVfUkVGOgotKyAgICBjYXNlIEFCU19FWFBSOgotICAgICAgIHBwX2V4cHJlc3Npb24g KGN4eF9wcCwgdCk7Ci0gICAgICAgYnJlYWs7Ci0gCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv b3RoZXIvZXJyb3IyMi5DCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL290 aGVyL2Vycm9yMjIuQwkocmV2aXNpb24gMTMwNzQ0KQotQEAgLTAsMCArMSw5IEBACi0rLy8gUFIg YysrLzM0Mzk0Ci0rLy8geyBkZy1kbyBjb21waWxlIH0KLSsKLStleHRlcm4gZG91YmxlIGZhYnMg KGRvdWJsZSk7Ci0rCi0rdm9pZCBmb28gKGRvdWJsZSB4KQotK3sKLSsgIGZhYnMgKHgpICgpOwkv LyB7IGRnLWVycm9yICJfX2J1aWx0aW5fYWJzIiB9Ci0rfQoKZGlmZiAtLWdpdCBhL2djYzQxLXJo MTg0NDQ2LnBhdGNoIGIvZ2NjNDEtcmgxODQ0NDYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGRiMWU0N2IuLjAwMDAwMDAKLS0tIGEvZ2NjNDEtcmgxODQ0NDYucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0yMDA2LTAzLTA5ICBSaWNoYXJkIEhlbmRlcnNv biAgPHJ0aEByZWRoYXQuY29tPgotCSAgICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0 LmNvbT4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2xlZ2l0aW1pemVfdGxz X2FkZHJlc3MpOiBVc2UKLQlzZWN1cmUtcGx0LWNvbXBhdGlibGUgbG9hZCBzZXF1ZW5jZSB0byBj b21wdXRlIHRoZSBHT1QgYWRkcmVzcwotCWZvciAtZlBJQyAtbXNlY3VyZS1wbHQuCi0KLS0tLSBn Y2MvY29uZmlnL3JzNjAwMC9yczYwMDAuYy5vcmlnCTIwMDYtMDMtMDkgMjA6MDI6MTMuMDAwMDAw MDAwIC0wMzAwCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMJMjAwNi0wMy0wOSAyMjow MDo0My4wMDAwMDAwMDAgLTAzMDAKLUBAIC0zMDgxLDcgKzMwODEsNyBAQCByczYwMDBfbGVnaXRp bWl6ZV90bHNfYWRkcmVzcyAocnR4IGFkZHIsCi0gCSAgICB7Ci0gCSAgICAgIHJ0eCBnc3ltID0g cnM2MDAwX2dvdF9zeW0gKCk7Ci0gCSAgICAgIGdvdCA9IGdlbl9yZWdfcnR4IChQbW9kZSk7Ci0t CSAgICAgIGlmIChmbGFnX3BpYyA9PSAwKQotKwkgICAgICBpZiAoZmxhZ19waWMgPT0gMCB8fCAo ZmxhZ19waWMgJiYgVEFSR0VUX1NFQ1VSRV9QTFQpKQotIAkJcnM2MDAwX2VtaXRfbW92ZSAoZ290 LCBnc3ltLCBQbW9kZSk7Ci0gCSAgICAgIGVsc2UKLSAJCXsKCmRpZmYgLS1naXQgYS9nY2M0MS1y aDIzNTAwOC5wYXRjaCBiL2djYzQxLXJoMjM1MDA4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBjNjA0NWUzLi4wMDAwMDAwCi0tLSBhL2djYzQxLXJoMjM1MDA4LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotMjAwNy0wNC0xMiAgSmFrdWIgSmVsaW5layAg PGpha3ViQHJlZGhhdC5jb20+Ci0KLQkqIGZyLnBvOiBVc2UgJXMgcmF0aGVyIHRoYW4gJVMuCi0J KiBzci5wbzogTGlrZXdpc2UuCi0JKiB0ci5wbzogTGlrZXdpc2UuCi0JKiBzdi5wbzogTGlrZXdp c2UuCi0JKiBydy5wbzogQ29tbWVudCBvdXQgdHJhbnNsYXRpb25zIHdpdGggYm9ndXMgZm9ybWF0 Ci0Jc3RyaW5ncy4KLQotLS0tIGdjYy9wby9mci5wbwkocmV2aXNpb24gMTIzNjM2KQotKysrIGdj Yy9wby9mci5wbwkod29ya2luZyBjb3B5KQotQEAgLTMxNDE2LDcgKzMxNDE2LDcgQEAgbXNnc3Ry ICJhdHRyaWJ1dCDvv70gJXMg77+9IGlnbm9y77+9IgotICN+IG1zZ3N0ciAicHJpc2UgZGUgbCdh ZHJlc3NlIGRlIGxhIGJvcm5lIGRlIGwnZXhwcmVzc2lvbiBkJ3VuIHBvaW50ZXVyLXZlcnMtdW4g bWVtYnJlIgotIAotICN+IG1zZ2lkICIlcyBmcm9tIHR5cGUgYCVUJyB0byB0eXBlIGAlVCcgY2Fz dHMgYXdheSBjb25zdG5lc3MiCi0tI34gbXNnc3RyICIlUyDvv70gcGFydGlyIGR1IO+/vSAlVCDv v70gdmVycyBsZSB0eXBlIO+/vSAlVCDvv70gcHJvdm9xdWUgdW4gdHJhbnN0eXBhZ2Ugc2FucyBj b25zdGFudGUiCi0rI34gbXNnc3RyICIlcyDvv70gcGFydGlyIGR1IO+/vSAlVCDvv70gdmVycyBs ZSB0eXBlIO+/vSAlVCDvv70gcHJvdm9xdWUgdW4gdHJhbnN0eXBhZ2Ugc2FucyBjb25zdGFudGUi Ci0gCi0gI34gbXNnaWQgImludmFsaWQgcmVpbnRlcnByZXRfY2FzdCBmcm9tIHR5cGUgYCVUJyB0 byB0eXBlIGAlVCciCi0gI34gbXNnc3RyICJyZWludGVycHJldF9jYXN0IGludmFsaWRlIO+/vSBw YXJ0aXIgZHUgdHlwZSDvv70gJVQg77+9IHZlcnMgbGUgdHlwZSDvv70gJVQg77+9IgotLS0tIGdj Yy9wby9zci5wbwkocmV2aXNpb24gMTIzNjM2KQotKysrIGdjYy9wby9zci5wbwkod29ya2luZyBj b3B5KQotQEAgLTg1MTYsNyArODUxNiw3IEBAIG1zZ3N0ciAi0J3QtSDQvNC+0LPRgyDRgdC1INC/ 0YDQvtC80LXQve+/vQotICM6IGZvcnRyYW4vc3ltYm9sLmM6NTkyCi0gIywgbm8tYy1mb3JtYXQK LSBtc2dpZCAiRHVwbGljYXRlICVzIGF0dHJpYnV0ZSBzcGVjaWZpZWQgYXQgJUwiCi0tbXNnc3Ry ICLQlNCy0L7RgdGC0YDRg9C60Lgg0LDRgtGA0LjQsdGD0YIgJVMg0L3QsNCy0LXQtNC10L0g0LrQ vtC0ICVMIgotK21zZ3N0ciAi0JTQstC+0YHRgtGA0YPQutC4INCw0YLRgNC40LHRg9GCICVzINC9 0LDQstC10LTQtdC9INC60L7QtCAlTCIKLSAKLSAjOiBmb3J0cmFuL3N5bWJvbC5jOjczMwotICMs IG5vLWMtZm9ybWF0Ci0tLS0gZ2NjL3BvL3RyLnBvCShyZXZpc2lvbiAxMjM2MzYpCi0rKysgZ2Nj L3BvL3RyLnBvCSh3b3JraW5nIGNvcHkpCi1AQCAtNjk1MSw3ICs2OTUxLDcgQEAgbXNnc3RyICJJ TlRFUkZBQ0UgZ8O2dmRlc2luZGUgdW11bG1hZMSxawotICM6IGZvcnRyYW4vcGFyc2UuYzoxNjA0 Ci0gIywgbm8tYy1mb3JtYXQKLSBtc2dpZCAiJXMgc3RhdGVtZW50IG11c3QgYXBwZWFyIGluIGEg TU9EVUxFIgotLW1zZ3N0ciAiJVMgZGV5aW1pIGJpciBNT0RVTEUnZGUgZ8O2csO8bm1lbWVsaSIK LSttc2dzdHIgIiVzIGRleWltaSBiaXIgTU9EVUxFJ2RlIGfDtnLDvG5tZW1lbGkiCi0gCi0gIzog Zm9ydHJhbi9wYXJzZS5jOjE2MTEKLSAjLCBuby1jLWZvcm1hdAotLS0tIGdjYy9wby9ydy5wbwko cmV2aXNpb24gMTIzNjM2KQotKysrIGdjYy9wby9ydy5wbwkod29ya2luZyBjb3B5KQotQEAgLTIx NjgsOCArMjE2OCw4IEBAIG1zZ3N0ciAiIgotIAotICM6IHRsaW5rLmM6NDgwCi0gIywgZnV6enks IGMtZm9ybWF0Ci0tbXNnaWQgInJlbmFtaW5nIC5ycG8gZmlsZSIKLS1tc2dzdHIgIkd1ZnVuZ3Vy YSAlcyVTIEliaXNvaG9rYSBJRE9TSVlFIgotKyN+IG1zZ2lkICJyZW5hbWluZyAucnBvIGZpbGUi Ci0rI34gbXNnc3RyICJHdWZ1bmd1cmEgJXMlUyBJYmlzb2hva2EgSURPU0lZRSIKLSAKLSAjOiB0 bGluay5jOjUzNAotICMsIGMtZm9ybWF0Ci1AQCAtMTc1MDAsOCArMTc1MDAsOCBAQCBtc2dzdHIg Ii1VbXV0ZWthbm8iCi0gCi0gIzogYy1vcHRzLmM6MTA0MAotICMsIGZ1enp5LCBnY2MtaW50ZXJu YWwtZm9ybWF0Ci0tbXNnaWQgIm9wZW5pbmcgb3V0cHV0IGZpbGUgJXM6ICVtIgotLW1zZ3N0ciAi R3VmdW5ndXJhICVzJVMgSWJpc29ob2thIElET1NJWUUiCi0rI34gbXNnaWQgIm9wZW5pbmcgb3V0 cHV0IGZpbGUgJXM6ICVtIgotKyN+IG1zZ3N0ciAiR3VmdW5ndXJhICVzJVMgSWJpc29ob2thIElE T1NJWUUiCi0gCi0gIzogYy1vcHRzLmM6MTA0NQotICMsIGZ1enp5LCBnY2MtaW50ZXJuYWwtZm9y bWF0Ci1AQCAtMTc1MTUsOCArMTc1MTUsOCBAQCBtc2dzdHIgIiIKLSAKLSAjOiBjLW9wdHMuYzox MTc3Ci0gIywgZnV6enksIGdjYy1pbnRlcm5hbC1mb3JtYXQKLS1tc2dpZCAib3BlbmluZyBkZXBl bmRlbmN5IGZpbGUgJXM6ICVtIgotLW1zZ3N0ciAiR3VmdW5ndXJhICVzJVMgSURPU0lZRSIKLSsj fiBtc2dpZCAib3BlbmluZyBkZXBlbmRlbmN5IGZpbGUgJXM6ICVtIgotKyN+IG1zZ3N0ciAiR3Vm dW5ndXJhICVzJVMgSURPU0lZRSIKLSAKLSAjOiBjLW9wdHMuYzoxMTg3Ci0gIywgZnV6enksIGdj Yy1pbnRlcm5hbC1mb3JtYXQKLS0tLSBnY2MvcG8vc3YucG8JMjAwNy0wMi0yMCAyMjozODo0NS4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvcG8vc3YucG8JMjAwNy0wNC0xMyAwMDoxODoxMS4wMDAw MDAwMDAgKzAyMDAKLUBAIC0zMzI4LDcgKzMzMjgsNyBAQCBtc2dzdHIgIm9naWx0aWcgb3BlcmFu ZCB0aWxsICUlUiIKLSAjOiBjb25maWcvc2gvc2guYzo3NzMKLSAjLCBjLWZvcm1hdAotIG1zZ2lk ICJpbnZhbGlkIG9wZXJhbmQgdG8gJSVTIgotLW1zZ3N0ciAib2dpbHRpZyBvcGVyYW5kIHRpbGwg JSVSIgotK21zZ3N0ciAib2dpbHRpZyBvcGVyYW5kIHRpbGwgJSVTIgotIAotICM6IGNvbmZpZy9z aC9zaC5jOjc2NzkKLSBtc2dpZCAiY3JlYXRlZCBhbmQgdXNlZCB3aXRoIGRpZmZlcmVudCBhcmNo aXRlY3R1cmVzIC8gQUJJcyIKLUBAIC04MDE5LDcgKzgwMTksNyBAQCBtc2dzdHIgIlBST0NFRFVS RS1hdHRyaWJ1dCBpIGtvbmZsaWt0IG1lCi0gIzogZm9ydHJhbi9yZXNvbHZlLmM6NDk0MwotICMs IG5vLWMtZm9ybWF0Ci0gbXNnaWQgIlBhcmFtZXRlciBhcnJheSAnJXMnIGF0ICVMIGNhbm5vdCBi ZSBhdXRvbWF0aWMgb3IgYXNzdW1lZCBzaGFwZSIKLS1tc2dzdHIgIlBhcmFtZXRlcnZla3RvciBc IiVTXCIgdmlkICVMIGthbiBpbnRlIGhhIGF1dG9tYXRpc2sgZWxsZXIgYW50YWdlbiBmb3JtIgot K21zZ3N0ciAiUGFyYW1ldGVydmVrdG9yIFwiJXNcIiB2aWQgJUwga2FuIGludGUgaGEgYXV0b21h dGlzayBlbGxlciBhbnRhZ2VuIGZvcm0iCi0gCi0gIzogZm9ydHJhbi9yZXNvbHZlLmM6NDk1NQot ICMsIG5vLWMtZm9ybWF0CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcmgyMzY4OTUucGF0Y2ggYi9nY2M0 MS1yaDIzNjg5NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdmZTliNS4u MDAwMDAwMAotLS0gYS9nY2M0MS1yaDIzNjg5NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2 ICswLDAgQEAKLTIwMDctMDQtMTggIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgotCi0J KiBqYXZhL2xhbmcvcmVmbGVjdC9WTVByb3h5LmphdmEgKEhBVkVfTkFUSVZFX0dFTkVSQVRFX1BS T1hZX0NMQVNTKToKLQlTZXQgdG8gZmFsc2UuCi0KLS0tLSBsaWJqYXZhL2phdmEvbGFuZy9yZWZs ZWN0L1ZNUHJveHkuamF2YQkocmV2aXNpb24gMTIzODYxKQotKysrIGxpYmphdmEvamF2YS9sYW5n L3JlZmxlY3QvVk1Qcm94eS5qYXZhCSh3b3JraW5nIGNvcHkpCi1AQCAtNjUsNyArNjUsNyBAQAot ICAgICogSWYgdGhpcyBpcyB0cnVlLCBIQVZFX05BVElWRV9HRVRfUFJPWFlfQ0xBU1Mgc2hvdWxk IGJlIGZhbHNlLgotICAgICogQHNlZSBqYXZhLmxhbmcucmVmbGVjdC5Qcm94eQotICAgICovCi0t ICBzdGF0aWMgYm9vbGVhbiBIQVZFX05BVElWRV9HRU5FUkFURV9QUk9YWV9DTEFTUyA9IHRydWU7 Ci0rICBzdGF0aWMgYm9vbGVhbiBIQVZFX05BVElWRV9HRU5FUkFURV9QUk9YWV9DTEFTUyA9IGZh bHNlOwotIAotICAgLyoqCi0gICAgKiBPcHRpb25hbCBuYXRpdmUgbWV0aG9kIHRvIHJlcGxhY2Ug KGFuZCBzcGVlZCB1cCkgdGhlIHB1cmUgSmF2YQoKZGlmZiAtLWdpdCBhL2djYzQxLXJoMjQ3MjU2 LnBhdGNoIGIvZ2NjNDEtcmgyNDcyNTYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGJjM2M3NzguLjAwMDAwMDAKLS0tIGEvZ2NjNDEtcmgyNDcyNTYucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw0MiArMCwwIEBACi0yMDA3LTA3LTEwICBKYWt1YiBKZWxpbmVrICA8amFrdWJA cmVkaGF0LmNvbT4KLQotCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3BsdXNfbWludXNfb3Bf ZGF0YV9jbXApOiBJZiBib3RoIG9wZXJhbmRzCi0JYXJlIFJFR3MgYW5kIFRBUkdFVF9JTkRFWF9P UEVSQU5EX0ZJUlNULCBzb3J0IGxvd2VyIFJFR05PcyBmaXJzdC4KLQotCSogZ2NjLmRnLzIwMDcw NzEwLTEuYzogTmV3IHRlc3QuCi0KLS0tLSBnY2Mvc2ltcGxpZnktcnR4LmMuamoJMjAwNi0wOC0x MSAxNzozMjowNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2Mvc2ltcGxpZnktcnR4LmMJMjAwNy0w Ny0wOSAyMjo1MzoyNi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNjA4LDYgKzI2MDgsMTIgQEAgc2lt cGxpZnlfcGx1c19taW51c19vcF9kYXRhX2NtcCAoY29uc3QgdgotIAkgICAgLSBjb21tdXRhdGl2 ZV9vcGVyYW5kX3ByZWNlZGVuY2UgKGQxLT5vcCkpOwotICAgaWYgKHJlc3VsdCkKLSAgICAgcmV0 dXJuIHJlc3VsdDsKLSsKLSsgIC8qIEdyb3VwIHRvZ2V0aGVyIGVxdWFsIFJFR3MgdG8gZG8gbW9y ZSBzaW1wbGlmaWNhdGlvbi4gICovCi0rICBpZiAoVEFSR0VUX0lOREVYX09QRVJBTkRfRklSU1Qg JiYgUkVHX1AgKGQxLT5vcCkgJiYgUkVHX1AgKGQyLT5vcCkKLSsgICAgICAmJiBSRUdOTyAoZDEt Pm9wKSAhPSBSRUdOTyAoZDItPm9wKSkKLSsgICAgcmV0dXJuIFJFR05PIChkMS0+b3ApIC0gUkVH Tk8gKGQyLT5vcCk7Ci0rCi0gICByZXR1cm4gZDEtPml4IC0gZDItPml4OwotIH0KLSAKLS0tLSBn Y2MvdGVzdHN1aXRlL2djYy5kZy8yMDA3MDcxMC0xLmMuamoJMjAwNy0wNy0xMCAwOTozMjo0My4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy8yMDA3MDcxMC0xLmMJMjAw Ny0wNy0xMCAwOTozMTozOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTcgQEAKLSsvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZmFzdC1tYXRoIiB9 ICovCi0rCi0rZXh0ZXJuIGZsb2F0IHNxcnRmIChmbG9hdCk7Ci0rCi0rZmxvYXQKLStmb28gKGNv bnN0IGZsb2F0ICptKQotK3sKLSsgIGZsb2F0IHggPSBtWzBdICsgbVsxXSArIG1bMl0gKyAxLjBm OwotKyAgZmxvYXQgczsKLSsKLSsgIGlmICh4ID4gMC4wMDEpCi0rICAgIHMgPSAwLjVmIC8gc3Fy dGYgKHgpOwotKyAgZWxzZQotKyAgICBzID0gMi4wZiAqIHNxcnRmICgxLjBmICsgbVswXSAtIG1b MV0gLSBtWzJdKTsKLSsgIHJldHVybiBzOwotK30KCmRpZmYgLS1naXQgYS9nY2M0MS1yaDMxNzA1 MS5wYXRjaCBiL2djYzQxLXJoMzE3MDUxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBhZjRhMDQwLi4wMDAwMDAwCi0tLSBhL2djYzQxLXJoMzE3MDUxLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMjkxICswLDAgQEAKLTIwMDYtMDctMjYgIEZyYW5jb2lzLVhhdmllciBDb3Vk ZXJ0ICA8Y291ZGVydEBjbGlwcGVyLmVucy5mcj4KLQotCSogaW50cmluc2ljLmMgKGFkZF9mdW5j dGlvbnMpOiBBZGQgSU5UMiwgU0hPUlQsIElOVDgsIExPTkcsCi0JTFNUQVQsIE1DTE9DSyBhbmQg TUNMT0NLOCBpbnRyaW5zaWMgZnVuY3Rpb25zLgotCShhZGRfc3Vicm91dGluZXMpOiBBZGQgTFNU QVQgaW50cmluc2ljIHN1YnJvdXRpbmUuCi0JKiBnZm9ydHJhbi5oIChnZmNfZ2VuZXJpY19pc3lt X2lkKTogQWRkIEdGQ19JU1lNX0lOVDIsCi0JR0ZDX0lTWU1fSU5UOCwgR0ZDX0lTWU1fTE9ORywg R0ZDX0lTWU1fTFNUQVQsIEdGQ19JU1lNX01DTE9DSwotCWFuZCBHRkNfSVNZTV9NQ0xPQ0s4Lgot CSogaXJlc29sdmUuYyAoZ2ZjX3Jlc29sdmVfaW50MiwgZ2ZjX3Jlc29sdmVfaW50OCwKLQlnZmNf cmVzb2x2ZV9sb25nLCBnZmNfcmVzb2x2ZV9sc3RhdCwgZ2ZjX3Jlc29sdmVfbWNsb2NrLAotCWdm Y19yZXNvbHZlX21jbG9jazgsIGdmY19yZXNvbHZlX2xzdGF0X3N1Yik6IE5ldyBmdW5jdGlvbnMu Ci0JKiBjaGVjay5jIChnZmNfY2hlY2tfaW50Y29udik6IE5ldyBmdW5jdGlvbi4KLQkqIHRyYW5z LWludHJpbnNpYy5jIChnZmNfY29udl9pbnRyaW5zaWNfZnVuY3Rpb24pOiBBZGQgY2FzZXMgZm9y Ci0JdGhlIGFkZGVkIEdGQ19JU1lNXyouCi0JKiBzaW1wbGlmeS5jIChnZmNfc2ltcGxpZnlfaW50 Y29udiwgZ2ZjX3NpbXBsaWZ5X2ludDIsCi0JZ2ZjX3NpbXBsaWZ5X2ludDgsIGdmY19zaW1wbGlm eV9sb25nKTogTmV3IGZ1bmN0aW9ucy4KLQkqIGludHJpbnNpYy5oIChnZmNfY2hlY2tfaW50Y29u diwgZ2ZjX3NpbXBsaWZ5X2ludDIsCi0JZ2ZjX3NpbXBsaWZ5X2ludDgsIGdmY19zaW1wbGlmeV9s b25nLCBnZmNfcmVzb2x2ZV9pbnQyLAotCWdmY19yZXNvbHZlX2ludDgsIGdmY19yZXNvbHZlX2xv bmcsIGdmY19yZXNvbHZlX2xzdGF0LAotCWdmY19yZXNvbHZlX21jbG9jaywgZ2ZjX3Jlc29sdmVf bWNsb2NrOCwgZ2ZjX3Jlc29sdmVfbHN0YXRfc3ViKToKLQlBZGQgcHJvdG90eXBlcy4KLQotCSog Z2ZvcnRyYW4uZGcvaW50X2NvbnZfMS5mOTA6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL3Rlc3RzdWl0 ZS9nZm9ydHJhbi5kZy9pbnRfY29udl8xLmY5MAkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL2ludF9jb252XzEuZjkwCShyZXZpc2lvbiAxMTU3NTQpCi1AQCAtMCww ICsxLDM2IEBACi0rISB7IGRnLWRvIHJ1biB9Ci0rISB7IGRnLW9wdGlvbnMgIi1zdGQ9Z251IiB9 Ci0rICBpbnRlZ2VyKGtpbmQ9MikgOjogaTIsIGoyLCBrMiwgbDIsIG0yLCBuMiwgbzIKLSsgIGlu dGVnZXIoa2luZD00KSA6OiBpNCwgajQKLSsgIGludGVnZXIoa2luZD04KSA6OiBpOCwgajgKLSsg IHJlYWwgOjogeAotKyAgY29tcGxleCA6OiB6Ci0rCi0rICBpMiA9IGh1Z2UoaTIpIC8gMwotKyAg aTggPSBpbnQ4KGkyKQotKyAgaTQgPSBsb25nKGkyKQotKyAgajIgPSBzaG9ydChpMikKLSsgIGsy ID0gaW50MihpMikKLSsgIGwyID0gaW50MihpOCkKLSsgIG0yID0gc2hvcnQoaTgpCi0rICBuMiA9 IGludDIoaTQpCi0rICBvMiA9IHNob3J0KGk0KQotKwotKyAgaWYgKGk4IC89IGkyIC5vci4gaTQg Lz0gaTIgLm9yLiBqMiAvPSBpMiAub3IuIGsyIC89IGkyICYKLSsgICAgICAub3IuIGwyIC89IGky IC5vci4gbTIgLz0gaTIgLm9yLiBuMiAvPSBpMiAub3IuIG8yIC89IGkyKSBjYWxsIGFib3J0Ci0r Ci0rICB4ID0gaTIKLSsgIGk4ID0gaW50OCh4KQotKyAgaTQgPSBsb25nKHgpCi0rICBqMiA9IHNo b3J0KHgpCi0rICBrMiA9IGludDIoeCkKLSsgIGlmIChpOCAvPSBpMiAub3IuIGk0IC89IGkyIC5v ci4gajIgLz0gaTIgLm9yLiBrMiAvPSBpMikgY2FsbCBhYm9ydAotKwotKyAgeiA9IGkyICsgKDAu LC00Mi4pCi0rICBpOCA9IGludDgoeikKLSsgIGk0ID0gbG9uZyh6KQotKyAgajIgPSBzaG9ydCh6 KQotKyAgazIgPSBpbnQyKHopCi0rICBpZiAoaTggLz0gaTIgLm9yLiBpNCAvPSBpMiAub3IuIGoy IC89IGkyIC5vci4gazIgLz0gaTIpIGNhbGwgYWJvcnQKLSsKLSsgIGVuZAotLS0tIGdjYy9mb3J0 cmFuL2ludHJpbnNpYy5jCShyZXZpc2lvbiAxMTU3NTMpCi0rKysgZ2NjL2ZvcnRyYW4vaW50cmlu c2ljLmMJKHJldmlzaW9uIDExNTc1NCkKLUBAIC0xNTM1LDYgKzE1MzUsMjYgQEAgYWRkX2Z1bmN0 aW9ucyAodm9pZCkKLSAKLSAgIG1ha2VfZ2VuZXJpYyAoImludCIsIEdGQ19JU1lNX0lOVCwgR0ZD X1NURF9GNzcpOwotIAotKyAgYWRkX3N5bV8xICgiaW50MiIsIDEsIDAsIEJUX0lOVEVHRVIsIGRp LCBHRkNfU1REX0dOVSwKLSsJICAgICBnZmNfY2hlY2tfaW50Y29udiwgZ2ZjX3NpbXBsaWZ5X2lu dDIsIGdmY19yZXNvbHZlX2ludDIsCi0rCSAgICAgYSwgQlRfUkVBTCwgZHIsIFJFUVVJUkVEKTsK LSsKLSsgIG1ha2VfYWxpYXMgKCJzaG9ydCIsIEdGQ19TVERfR05VKTsKLSsKLSsgIG1ha2VfZ2Vu ZXJpYyAoImludDIiLCBHRkNfSVNZTV9JTlQyLCBHRkNfU1REX0dOVSk7Ci0rCi0rICBhZGRfc3lt XzEgKCJpbnQ4IiwgMSwgMCwgQlRfSU5URUdFUiwgZGksIEdGQ19TVERfR05VLAotKwkgICAgIGdm Y19jaGVja19pbnRjb252LCBnZmNfc2ltcGxpZnlfaW50OCwgZ2ZjX3Jlc29sdmVfaW50OCwKLSsJ ICAgICBhLCBCVF9SRUFMLCBkciwgUkVRVUlSRUQpOwotKwotKyAgbWFrZV9nZW5lcmljICgiaW50 OCIsIEdGQ19JU1lNX0lOVDgsIEdGQ19TVERfR05VKTsKLSsKLSsgIGFkZF9zeW1fMSAoImxvbmci LCAxLCAwLCBCVF9JTlRFR0VSLCBkaSwgR0ZDX1NURF9HTlUsCi0rCSAgICAgZ2ZjX2NoZWNrX2lu dGNvbnYsIGdmY19zaW1wbGlmeV9sb25nLCBnZmNfcmVzb2x2ZV9sb25nLAotKwkgICAgIGEsIEJU X1JFQUwsIGRyLCBSRVFVSVJFRCk7Ci0rCi0rICBtYWtlX2dlbmVyaWMgKCJsb25nIiwgR0ZDX0lT WU1fTE9ORywgR0ZDX1NURF9HTlUpOwotKwotICAgYWRkX3N5bV8yICgiaW9yIiwgMSwgMSwgQlRf SU5URUdFUiwgZGksIEdGQ19TVERfRjk1LAotIAkgICAgIGdmY19jaGVja19pb3IsIGdmY19zaW1w bGlmeV9pb3IsIGdmY19yZXNvbHZlX2lvciwKLSAJICAgICBpLCBCVF9JTlRFR0VSLCBkaSwgUkVR VUlSRUQsIGosIEJUX0lOVEVHRVIsIGRpLCBSRVFVSVJFRCk7Ci0tLS0gZ2NjL2ZvcnRyYW4vaW50 cmluc2ljLmgJKHJldmlzaW9uIDExNTc1MykKLSsrKyBnY2MvZm9ydHJhbi9pbnRyaW5zaWMuaAko cmV2aXNpb24gMTE1NzU0KQotQEAgLTc0LDYgKzc0LDcgQEAgdHJ5IGdmY19jaGVja19pZG5pbnQg KGdmY19leHByICopOwotIHRyeSBnZmNfY2hlY2tfaWVvciAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIg Kik7Ci0gdHJ5IGdmY19jaGVja19pbmRleCAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKiwgZ2ZjX2V4 cHIgKik7Ci0gdHJ5IGdmY19jaGVja19pbnQgKGdmY19leHByICosIGdmY19leHByICopOwotK3Ry eSBnZmNfY2hlY2tfaW50Y29udiAoZ2ZjX2V4cHIgKik7Ci0gdHJ5IGdmY19jaGVja19pb3IgKGdm Y19leHByICosIGdmY19leHByICopOwotIHRyeSBnZmNfY2hlY2tfaXJhbmQgKGdmY19leHByICop OwotIHRyeSBnZmNfY2hlY2tfaXNhdHR5IChnZmNfZXhwciAqKTsKLUBAIC0yMjIsNiArMjIzLDkg QEAgZ2ZjX2V4cHIgKmdmY19zaW1wbGlmeV9pY2hhciAoZ2ZjX2V4cHIgKgotIGdmY19leHByICpn ZmNfc2ltcGxpZnlfaWVvciAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7Ci0gZ2ZjX2V4cHIgKmdm Y19zaW1wbGlmeV9pbmRleCAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7Ci0g Z2ZjX2V4cHIgKmdmY19zaW1wbGlmeV9pbnQgKGdmY19leHByICosIGdmY19leHByICopOwotK2dm Y19leHByICpnZmNfc2ltcGxpZnlfaW50MiAoZ2ZjX2V4cHIgKik7Ci0rZ2ZjX2V4cHIgKmdmY19z aW1wbGlmeV9pbnQ4IChnZmNfZXhwciAqKTsKLStnZmNfZXhwciAqZ2ZjX3NpbXBsaWZ5X2xvbmcg KGdmY19leHByICopOwotIGdmY19leHByICpnZmNfc2ltcGxpZnlfaWZpeCAoZ2ZjX2V4cHIgKik7 Ci0gZ2ZjX2V4cHIgKmdmY19zaW1wbGlmeV9pZGludCAoZ2ZjX2V4cHIgKik7Ci0gZ2ZjX2V4cHIg KmdmY19zaW1wbGlmeV9pb3IgKGdmY19leHByICosIGdmY19leHByICopOwotQEAgLTM1Miw2ICsz NTYsOSBAQCB2b2lkIGdmY19yZXNvbHZlX2llb3IgKGdmY19leHByICosIGdmY19lCi0gdm9pZCBn ZmNfcmVzb2x2ZV9pY2hhciAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7Ci0gdm9pZCBnZmNfcmVz b2x2ZV9pZG5pbnQgKGdmY19leHByICosIGdmY19leHByICopOwotIHZvaWQgZ2ZjX3Jlc29sdmVf aW50IChnZmNfZXhwciAqLCBnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKLSt2b2lkIGdmY19yZXNv bHZlX2ludDIgKGdmY19leHByICosIGdmY19leHByICopOwotK3ZvaWQgZ2ZjX3Jlc29sdmVfaW50 OCAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7Ci0rdm9pZCBnZmNfcmVzb2x2ZV9sb25nIChnZmNf ZXhwciAqLCBnZmNfZXhwciAqKTsKLSB2b2lkIGdmY19yZXNvbHZlX2lvciAoZ2ZjX2V4cHIgKiwg Z2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7Ci0gdm9pZCBnZmNfcmVzb2x2ZV9pc2F0dHkgKGdmY19l eHByICosIGdmY19leHByICopOwotIHZvaWQgZ2ZjX3Jlc29sdmVfaXNoZnQgKGdmY19leHByICos IGdmY19leHByICosIGdmY19leHByICopOwotLS0tIGdjYy9mb3J0cmFuL2dmb3J0cmFuLmgJKHJl dmlzaW9uIDExNTc1MykKLSsrKyBnY2MvZm9ydHJhbi9nZm9ydHJhbi5oCShyZXZpc2lvbiAxMTU3 NTQpCi1AQCAtMzc3LDYgKzM3Nyw4IEBAIGVudW0gZ2ZjX2dlbmVyaWNfaXN5bV9pZAotICAgR0ZD X0lTWU1fSUVSUk5PLAotICAgR0ZDX0lTWU1fSU5ERVgsCi0gICBHRkNfSVNZTV9JTlQsCi0rICBH RkNfSVNZTV9JTlQyLAotKyAgR0ZDX0lTWU1fSU5UOCwKLSAgIEdGQ19JU1lNX0lPUiwKLSAgIEdG Q19JU1lNX0lSQU5ELAotICAgR0ZDX0lTWU1fSVNBVFRZLAotQEAgLTM5MSwxMCArMzkzLDExIEBA IGVudW0gZ2ZjX2dlbmVyaWNfaXN5bV9pZAotICAgR0ZDX0lTWU1fTEdULAotICAgR0ZDX0lTWU1f TExFLAotICAgR0ZDX0lTWU1fTExULAotLSAgR0ZDX0lTWU1fTE9HLAotICAgR0ZDX0lTWU1fTE9D LAotKyAgR0ZDX0lTWU1fTE9HLAotICAgR0ZDX0lTWU1fTE9HMTAsCi0gICBHRkNfSVNZTV9MT0dJ Q0FMLAotKyAgR0ZDX0lTWU1fTE9ORywKLSAgIEdGQ19JU1lNX01BTExPQywKLSAgIEdGQ19JU1lN X01BVE1VTCwKLSAgIEdGQ19JU1lNX01BWCwKLS0tLSBnY2MvZm9ydHJhbi9pcmVzb2x2ZS5jCShy ZXZpc2lvbiAxMTU3NTMpCi0rKysgZ2NjL2ZvcnRyYW4vaXJlc29sdmUuYwkocmV2aXNpb24gMTE1 NzU0KQotQEAgLTg1NCw2ICs4NTQsNDIgQEAgZ2ZjX3Jlc29sdmVfaW50IChnZmNfZXhwciAqIGYs IGdmY19leHByIAotIAotIAotIHZvaWQKLStnZmNfcmVzb2x2ZV9pbnQyIChnZmNfZXhwciAqIGYs IGdmY19leHByICogYSkKLSt7Ci0rICBmLT50cy50eXBlID0gQlRfSU5URUdFUjsKLSsgIGYtPnRz LmtpbmQgPSAyOwotKwotKyAgZi0+dmFsdWUuZnVuY3Rpb24ubmFtZSA9Ci0rICAgIGdmY19nZXRf c3RyaW5nICgiX19pbnRfJWRfJWMlZCIsIGYtPnRzLmtpbmQsIGdmY190eXBlX2xldHRlciAoYS0+ dHMudHlwZSksCi0rCQkgICAgYS0+dHMua2luZCk7Ci0rfQotKwotKwotK3ZvaWQKLStnZmNfcmVz b2x2ZV9pbnQ4IChnZmNfZXhwciAqIGYsIGdmY19leHByICogYSkKLSt7Ci0rICBmLT50cy50eXBl ID0gQlRfSU5URUdFUjsKLSsgIGYtPnRzLmtpbmQgPSA4OwotKwotKyAgZi0+dmFsdWUuZnVuY3Rp b24ubmFtZSA9Ci0rICAgIGdmY19nZXRfc3RyaW5nICgiX19pbnRfJWRfJWMlZCIsIGYtPnRzLmtp bmQsIGdmY190eXBlX2xldHRlciAoYS0+dHMudHlwZSksCi0rCQkgICAgYS0+dHMua2luZCk7Ci0r fQotKwotKwotK3ZvaWQKLStnZmNfcmVzb2x2ZV9sb25nIChnZmNfZXhwciAqIGYsIGdmY19leHBy ICogYSkKLSt7Ci0rICBmLT50cy50eXBlID0gQlRfSU5URUdFUjsKLSsgIGYtPnRzLmtpbmQgPSA0 OwotKwotKyAgZi0+dmFsdWUuZnVuY3Rpb24ubmFtZSA9Ci0rICAgIGdmY19nZXRfc3RyaW5nICgi X19pbnRfJWRfJWMlZCIsIGYtPnRzLmtpbmQsIGdmY190eXBlX2xldHRlciAoYS0+dHMudHlwZSks Ci0rCQkgICAgYS0+dHMua2luZCk7Ci0rfQotKwotKwotK3ZvaWQKLSBnZmNfcmVzb2x2ZV9pc2F0 dHkgKGdmY19leHByICogZiwgZ2ZjX2V4cHIgKiB1KQotIHsKLSAgIGdmY190eXBlc3BlYyB0czsK LS0tLSBnY2MvZm9ydHJhbi9jaGVjay5jCShyZXZpc2lvbiAxMTU3NTMpCi0rKysgZ2NjL2ZvcnRy YW4vY2hlY2suYwkocmV2aXNpb24gMTE1NzU0KQotQEAgLTEyMDAsNiArMTIwMCwxNiBAQCBnZmNf Y2hlY2tfaW50IChnZmNfZXhwciAqIHgsIGdmY19leHByICogCi0gCi0gCi0gdHJ5Ci0rZ2ZjX2No ZWNrX2ludGNvbnYgKGdmY19leHByICogeCkKLSt7Ci0rICBpZiAobnVtZXJpY19jaGVjayAoeCwg MCkgPT0gRkFJTFVSRSkKLSsgICAgcmV0dXJuIEZBSUxVUkU7Ci0rCi0rICByZXR1cm4gU1VDQ0VT UzsKLSt9Ci0rCi0rCi0rdHJ5Ci0gZ2ZjX2NoZWNrX2lvciAoZ2ZjX2V4cHIgKiBpLCBnZmNfZXhw ciAqIGopCi0gewotICAgaWYgKHR5cGVfY2hlY2sgKGksIDAsIEJUX0lOVEVHRVIpID09IEZBSUxV UkUpCi0tLS0gZ2NjL2ZvcnRyYW4vdHJhbnMtaW50cmluc2ljLmMJKHJldmlzaW9uIDExNTc1MykK LSsrKyBnY2MvZm9ydHJhbi90cmFucy1pbnRyaW5zaWMuYwkocmV2aXNpb24gMTE1NzU0KQotQEAg LTM0NzcsNiArMzQ3Nyw5IEBAIGdmY19jb252X2ludHJpbnNpY19mdW5jdGlvbiAoZ2ZjX3NlICog c2UKLSAgICAgICAvKiBJbnRlZ2VyIGNvbnZlcnNpb25zIGFyZSBoYW5kbGVkIHNlcGFyYXRlbHkg dG8gbWFrZSBzdXJlIHdlIGdldCB0aGUKLSAgICAgICAgICBjb3JyZWN0IHJvdW5kaW5nIG1vZGUu ICAqLwotICAgICBjYXNlIEdGQ19JU1lNX0lOVDoKLSsgICAgY2FzZSBHRkNfSVNZTV9JTlQyOgot KyAgICBjYXNlIEdGQ19JU1lNX0lOVDg6Ci0rICAgIGNhc2UgR0ZDX0lTWU1fTE9ORzoKLSAgICAg ICBnZmNfY29udl9pbnRyaW5zaWNfaW50IChzZSwgZXhwciwgRklYX1RSVU5DX0VYUFIpOwotICAg ICAgIGJyZWFrOwotIAotLS0tIGdjYy9mb3J0cmFuL3NpbXBsaWZ5LmMJKHJldmlzaW9uIDExNTc1 MykKLSsrKyBnY2MvZm9ydHJhbi9zaW1wbGlmeS5jCShyZXZpc2lvbiAxMTU3NTQpCi1AQCAtMTYx MCw2ICsxNjEwLDY2IEBAIGdmY19zaW1wbGlmeV9pbnQgKGdmY19leHByICogZSwgZ2ZjX2V4cHIK LSB9Ci0gCi0gCi0rc3RhdGljIGdmY19leHByICoKLStnZmNfc2ltcGxpZnlfaW50Y29udiAoZ2Zj X2V4cHIgKiBlLCBpbnQga2luZCwgY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICBnZmNfZXhwciAq cnBhcnQsICpydHJ1bmMsICpyZXN1bHQ7Ci0rCi0rICBpZiAoZS0+ZXhwcl90eXBlICE9IEVYUFJf Q09OU1RBTlQpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgcmVzdWx0ID0gZ2ZjX2NvbnN0YW50 X3Jlc3VsdCAoQlRfSU5URUdFUiwga2luZCwgJmUtPndoZXJlKTsKLSsKLSsgIHN3aXRjaCAoZS0+ dHMudHlwZSkKLSsgICAgewotKyAgICBjYXNlIEJUX0lOVEVHRVI6Ci0rICAgICAgbXB6X3NldCAo cmVzdWx0LT52YWx1ZS5pbnRlZ2VyLCBlLT52YWx1ZS5pbnRlZ2VyKTsKLSsgICAgICBicmVhazsK LSsKLSsgICAgY2FzZSBCVF9SRUFMOgotKyAgICAgIHJ0cnVuYyA9IGdmY19jb3B5X2V4cHIgKGUp OwotKyAgICAgIG1wZnJfdHJ1bmMgKHJ0cnVuYy0+dmFsdWUucmVhbCwgZS0+dmFsdWUucmVhbCk7 Ci0rICAgICAgZ2ZjX21wZnJfdG9fbXB6IChyZXN1bHQtPnZhbHVlLmludGVnZXIsIHJ0cnVuYy0+ dmFsdWUucmVhbCk7Ci0rICAgICAgZ2ZjX2ZyZWVfZXhwciAocnRydW5jKTsKLSsgICAgICBicmVh azsKLSsKLSsgICAgY2FzZSBCVF9DT01QTEVYOgotKyAgICAgIHJwYXJ0ID0gZ2ZjX2NvbXBsZXgy cmVhbCAoZSwga2luZCk7Ci0rICAgICAgcnRydW5jID0gZ2ZjX2NvcHlfZXhwciAocnBhcnQpOwot KyAgICAgIG1wZnJfdHJ1bmMgKHJ0cnVuYy0+dmFsdWUucmVhbCwgcnBhcnQtPnZhbHVlLnJlYWwp OwotKyAgICAgIGdmY19tcGZyX3RvX21weiAocmVzdWx0LT52YWx1ZS5pbnRlZ2VyLCBydHJ1bmMt PnZhbHVlLnJlYWwpOwotKyAgICAgIGdmY19mcmVlX2V4cHIgKHJwYXJ0KTsKLSsgICAgICBnZmNf ZnJlZV9leHByIChydHJ1bmMpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0OgotKyAg ICAgIGdmY19lcnJvciAoIkFyZ3VtZW50IG9mICVzIGF0ICVMIGlzIG5vdCBhIHZhbGlkIHR5cGUi LCBuYW1lLCAmZS0+d2hlcmUpOwotKyAgICAgIGdmY19mcmVlX2V4cHIgKHJlc3VsdCk7Ci0rICAg ICAgcmV0dXJuICZnZmNfYmFkX2V4cHI7Ci0rICAgIH0KLSsKLSsgIHJldHVybiByYW5nZV9jaGVj ayAocmVzdWx0LCBuYW1lKTsKLSt9Ci0rCi0rZ2ZjX2V4cHIgKgotK2dmY19zaW1wbGlmeV9pbnQy IChnZmNfZXhwciAqIGUpCi0rewotKyAgcmV0dXJuIGdmY19zaW1wbGlmeV9pbnRjb252IChlLCAy LCAiSU5UMiIpOwotK30KLSsKLStnZmNfZXhwciAqCi0rZ2ZjX3NpbXBsaWZ5X2ludDggKGdmY19l eHByICogZSkKLSt7Ci0rICByZXR1cm4gZ2ZjX3NpbXBsaWZ5X2ludGNvbnYgKGUsIDgsICJJTlQ4 Iik7Ci0rfQotKwotK2dmY19leHByICoKLStnZmNfc2ltcGxpZnlfbG9uZyAoZ2ZjX2V4cHIgKiBl KQotK3sKLSsgIHJldHVybiBnZmNfc2ltcGxpZnlfaW50Y29udiAoZSwgNCwgIkxPTkciKTsKLSt9 Ci0rCi0rCi0gZ2ZjX2V4cHIgKgotIGdmY19zaW1wbGlmeV9pZml4IChnZmNfZXhwciAqIGUpCi0g ewoKZGlmZiAtLWdpdCBhL2djYzQxLXJoMzMwNzcxLnBhdGNoIGIvZ2NjNDEtcmgzMzA3NzEucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4OTRmODMuLjAwMDAwMDAKLS0tIGEv Z2NjNDEtcmgzMzA3NzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0yMDA3 LTEwLTE2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCSogTWFrZWZpbGUu YW0gKGxpYmdjal90b29sc19sYV9MSUJBREQpOiBBZGQuCi0JKiBNYWtlZmlsZS5pbjogUmVnZW5l cmF0ZWQuCi0KLS0tLSBsaWJqYXZhL01ha2VmaWxlLmFtLmpqCTIwMDctMDMtMTcgMDk6MjA6MzAu MDAwMDAwMDAwICswMTAwCi0rKysgbGliamF2YS9NYWtlZmlsZS5hbQkyMDA3LTEwLTE2IDE1OjQ1 OjE0LjAwMDAwMDAwMCArMDIwMAotQEAgLTI2Miw2ICsyNjIsOCBAQCBFWFRSQV9saWJnY2pfbGFf U09VUkNFUyA9IGphdmEvbGFuZy9PYmplCi0gCi0gbGliZ2NqX3Rvb2xzX2xhX1NPVVJDRVMgPSBj bGFzc3BhdGgvdG9vbHMvdG9vbHMuemlwCi0gbGliZ2NqX3Rvb2xzX2xhX0dDSkZMQUdTID0gJChB TV9HQ0pGTEFHUykgLWZpbmRpcmVjdC1kaXNwYXRjaCAtZm5vLWluZGlyZWN0LWNsYXNzZXMgIC1m c291cmNlLWZpbGVuYW1lPSQoaGVyZSkvY2xhc3NwYXRoL3Rvb2xzL2FsbC1jbGFzc2VzLmxzdAot KyMjIFNlZSBqdl9jb252ZXJ0X0xEQURELgotK2xpYmdjal90b29sc19sYV9MSUJBREQgPSAtTCQo aGVyZSkvLmxpYnMgbGliZ2NqLmxhCi0gbGliZ2NqX3Rvb2xzX2xhX0xERkxBR1MgPSAtcnBhdGgg JCh0b29sZXhlY2xpYmRpcikgXAotICAtdmVyc2lvbi1pbmZvIGBncmVwIC12ICdeXCMnICQoc3Jj ZGlyKS9saWJ0b29sLXZlcnNpb25gCi0gbGliZ2NqX3Rvb2xzX2xhX0RFUEVOREVOQ0lFUyA9IGxp Ymdjai5sYSBsaWJnY2ouc3BlYwotLS0tIGxpYmphdmEvTWFrZWZpbGUuaW4uamoJMjAwNy0wNy0w NCAyMToxMToxMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJqYXZhL01ha2VmaWxlLmluCTIwMDct MTAtMTYgMTU6NTY6MDcuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQ2LDcgKzE0Niw2IEBAIGFtX19v YmplY3RzXzEgPSBnbnUvZ2NqL3hsaWIvbGliX2dudV9hd3QKLSBhbV9saWJfZ251X2F3dF94bGli X2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzEpCi0gbGliX2dudV9hd3RfeGxpYl9sYV9PQkpF Q1RTID0gJChhbV9saWJfZ251X2F3dF94bGliX2xhX09CSkVDVFMpCi0gQFhMSUJfQVdUX1RSVUVA YW1fbGliX2dudV9hd3RfeGxpYl9sYV9ycGF0aCA9IC1ycGF0aCAkKHRvb2xleGVjbGliZGlyKQot LWxpYmdjal90b29sc19sYV9MSUJBREQgPQotIGFtX2xpYmdjal90b29sc19sYV9PQkpFQ1RTID0g Y2xhc3NwYXRoL3Rvb2xzL2xpYmdjal90b29sc19sYS10b29scy5sbwotIGxpYmdjal90b29sc19s YV9PQkpFQ1RTID0gJChhbV9saWJnY2pfdG9vbHNfbGFfT0JKRUNUUykKLSBhbV9fREVQRU5ERU5D SUVTXzEgPSBnbnUvYXd0LmxvIGdudS9hd3QvajJkLmxvIGdudS9jbGFzc3BhdGgubG8gXAotQEAg LTg5NCw2ICs4OTMsNyBAQCBsaWJnY2pfbGFfTElOSyA9ICQoTElCTElOSykKLSBFWFRSQV9saWJn Y2pfbGFfU09VUkNFUyA9IGphdmEvbGFuZy9PYmplY3QuamF2YQotIGxpYmdjal90b29sc19sYV9T T1VSQ0VTID0gY2xhc3NwYXRoL3Rvb2xzL3Rvb2xzLnppcAotIGxpYmdjal90b29sc19sYV9HQ0pG TEFHUyA9ICQoQU1fR0NKRkxBR1MpIC1maW5kaXJlY3QtZGlzcGF0Y2ggLWZuby1pbmRpcmVjdC1j bGFzc2VzICAtZnNvdXJjZS1maWxlbmFtZT0kKGhlcmUpL2NsYXNzcGF0aC90b29scy9hbGwtY2xh c3Nlcy5sc3QKLStsaWJnY2pfdG9vbHNfbGFfTElCQUREID0gLUwkKGhlcmUpLy5saWJzIGxpYmdj ai5sYQotIGxpYmdjal90b29sc19sYV9MREZMQUdTID0gLXJwYXRoICQodG9vbGV4ZWNsaWJkaXIp IFwKLSAgLXZlcnNpb24taW5mbyBgZ3JlcCAtdiAnXlwjJyAkKHNyY2RpcikvbGlidG9vbC12ZXJz aW9uYAotIAoKZGlmZiAtLWdpdCBhL2djYzQxLXJoMzQxMjIxLnBhdGNoIGIvZ2NjNDEtcmgzNDEy MjEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1NjE1NGYuLjAwMDAwMDAK LS0tIGEvZ2NjNDEtcmgzNDEyMjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBA Ci0yMDA3LTEwLTIxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCSogZG9j L01ha2VmaWxlLmFtIChQT0QyTUFOKTogU2V0IGRhdGUgZnJvbSBjcC10b29scy50ZXhpbmZvCi0J dGltZXN0YW1wIHJhdGhlciB0aGFuIGZyb20gY3VycmVudCBkYXRlLgotCSogZG9jL01ha2VmaWxl LmluOiBSZWdlbmVyYXRlZC4KLQotLS0tIGxpYmphdmEvY2xhc3NwYXRoL2RvYy9NYWtlZmlsZS5h bS5qagkyMDA3LTAzLTI5IDEyOjIzOjA1LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmphdmEvY2xh c3NwYXRoL2RvYy9NYWtlZmlsZS5hbQkyMDA3LTEwLTIxIDEzOjIzOjE3LjAwMDAwMDAwMCArMDIw MAotQEAgLTMxLDcgKzMxLDcgQEAgVE9PTFNfTUFORklMRVMgPSBcCi0gQkFTRVZFUiA9ICQodG9w X3NyY2RpcikvLi4vLi4vZ2NjL0JBU0UtVkVSCi0gREVWUEhBU0UgPSAkKHRvcF9zcmNkaXIpLy4u Ly4uL2djYy9ERVYtUEhBU0UKLSAKLS1QT0QyTUFOID0gcG9kMm1hbiAtLWNlbnRlcj0iR05VIiAt LXJlbGVhc2U9ImdjYy0kKHNoZWxsIGNhdCAkKEJBU0VWRVIpKSIKLStQT0QyTUFOID0gcG9kMm1h biAtLWNlbnRlcj0iR05VIiAtLXJlbGVhc2U9ImdjYy0kKHNoZWxsIGNhdCAkKEJBU0VWRVIpKSIg LS1kYXRlPSIkKHNoZWxsIGxzIC0tdGltZS1zdHlsZT0rJUYgLWwgJChzcmNkaXIpL2NwLXRvb2xz LnRleGluZm8gfCBhd2sgJ3twcmludCAkJDZ9JykiCi0gVEVYSTJQT0QgPSBwZXJsICQodG9wX3Ny Y2RpcikvLi4vLi4vY29udHJpYi90ZXhpMnBvZC5wbAotIFNUQU1QID0gZWNobyB0aW1lc3RhbXAg PgotIAotLS0tIGxpYmphdmEvY2xhc3NwYXRoL2RvYy9NYWtlZmlsZS5pbi5qagkyMDA3LTAzLTI5 IDEyOjIzOjA1LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmphdmEvY2xhc3NwYXRoL2RvYy9NYWtl ZmlsZS5pbgkyMDA3LTEwLTIxIDEzOjI0OjAwLjAwMDAwMDAwMCArMDIwMAotQEAgLTMxNyw3ICsz MTcsNyBAQCBUT09MU19NQU5GSUxFUyA9IFwKLSAKLSBCQVNFVkVSID0gJCh0b3Bfc3JjZGlyKS8u Li8uLi9nY2MvQkFTRS1WRVIKLSBERVZQSEFTRSA9ICQodG9wX3NyY2RpcikvLi4vLi4vZ2NjL0RF Vi1QSEFTRQotLVBPRDJNQU4gPSBwb2QybWFuIC0tY2VudGVyPSJHTlUiIC0tcmVsZWFzZT0iZ2Nj LSQoc2hlbGwgY2F0ICQoQkFTRVZFUikpIgotK1BPRDJNQU4gPSBwb2QybWFuIC0tY2VudGVyPSJH TlUiIC0tcmVsZWFzZT0iZ2NjLSQoc2hlbGwgY2F0ICQoQkFTRVZFUikpIiAtLWRhdGU9IiQoc2hl bGwgbHMgLS10aW1lLXN0eWxlPSslRiAtbCAkKHNyY2RpcikvY3AtdG9vbHMudGV4aW5mbyB8IGF3 ayAne3ByaW50ICQkNn0nKSIKLSBURVhJMlBPRCA9IHBlcmwgJCh0b3Bfc3JjZGlyKS8uLi8uLi9j b250cmliL3RleGkycG9kLnBsCi0gU1RBTVAgPSBlY2hvIHRpbWVzdGFtcCA+Ci0gYWxsOiBhbGwt cmVjdXJzaXZlCgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcmgzNjQwMDEucGF0Y2ggYi9nY2M0MS1yaDM2 NDAwMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU4Yzk1OC4uMDAwMDAw MAotLS0gYS9nY2M0MS1yaDM2NDAwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY3NiArMCww IEBACi0yMDA3LTExLTE2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBS IGZvcnRyYW4vMjIyNDQKLQkqIGxhbmdob29rcy1kZWYuaCAoTEFOR19IT09LU19HRVRfQVJSQVlf REVTQ1JfSU5GTyk6IERlZmluZS4KLQkoTEFOR19IT09LU19GT1JfVFlQRVNfSU5JVElBTElaRVIp OiBBZGQgaXQuCi0JKiBsYW5naG9va3MuaCAoc3RydWN0IGFycmF5X2Rlc2NyX2luZm8pOiBGb3J3 YXJkIGRlY2xhcmF0aW9uLgotCShzdHJ1Y3QgbGFuZ19ob29rc19mb3JfdHlwZXMpOiBBZGQgZ2V0 X2FycmF5X2Rlc2NyX2luZm8gZmllbGQuCi0JKiBkd2FyZjIuaCAoRFdfQVRfYml0X3N0cmlkZSwg RFdfQVRfYnl0ZV9zdHJpZGUpOiBOZXcuCi0JKERXX0FUX3N0cmlkZV9zaXplLCBEV19BVF9zdHJp ZGUpOiBLZWVwIGFyb3VuZCBmb3IgRHdhcmYyCi0JY29tcGF0aWJpbGl0eS4KLQkqIGR3YXJmMm91 dC5oIChzdHJ1Y3QgYXJyYXlfZGVzY3JfaW5mbyk6IE5ldyB0eXBlLgotCSogZHdhcmYyb3V0LmMg KGR3YXJmX2F0dHJfbmFtZSk6IFJlbmFtZSBEV19BVF9zdHJpZGUgdG8KLQlEV19BVF9ieXRlX3N0 cmlkZSBhbmQgRFdfQVRfc3RyaWRlX3NpemUgdG8gRFdfQVRfYml0X3NpemUuCi0JKGRlc2NyX2lu Zm9fbG9jLCBhZGRfZGVzY3JfaW5mb19maWVsZCwgZ2VuX2Rlc2NyX2FycmF5X3R5cGVfZGllKToK LQlOZXcgZnVuY3Rpb25zLgotCShnZW5fdHlwZV9kaWVfd2l0aF91c2FnZSk6IENhbGwgbGFuZ19o b29rcy50eXBlcy5nZXRfYXJyYXlfZGVzY3JfaW5mbwotCWFuZCBnZW5fZGVzY3JfYXJyYXlfdHlw ZV9kaWUuCi0KLQkqIHRyYW5zLmggKHN0cnVjdCBhcnJheV9kZXNjcl9pbmZvKTogRm9yd2FyZCBk ZWNsYXJhdGlvbi4KLQkoZ2ZjX2dldF9hcnJheV9kZXNjcl9pbmZvKTogTmV3IHByb3RvdHlwZS4K LQkoZW51bSBnZmNfYXJyYXlfa2luZCk6IE5ldyB0eXBlLgotCShzdHJ1Y3QgbGFuZ190eXBlKTog QWRkIGFraW5kIGZpZWxkLgotCShHRkNfVFlQRV9BUlJBWV9BS0lORCk6IERlZmluZS4KLQkqIHRy YW5zLXR5cGVzLmM6IEluY2x1ZGUgZHdhcmYyb3V0LmguCi0JKGdmY19idWlsZF9hcnJheV90eXBl KTogQWRkIGFraW5kIGFyZ3VtZW50LiAgQWRqdXN0Ci0JZ2ZjX2dldF9hcnJheV90eXBlX2JvdW5k cyBjYWxsLgotCShnZmNfZ2V0X25vZGVzY19hcnJheV90eXBlKTogSW5jbHVkZSBwcm9wZXIgZGVi dWcgaW5mbyBldmVuIGZvcgotCWFzc3VtZWQtc2l6ZSBhcnJheXMuCi0JKGdmY19nZXRfYXJyYXlf dHlwZV9ib3VuZHMpOiBBZGQgYWtpbmQgYXJndW1lbnQsIHNldAotCUdGQ19UWVBFX0FSUkFZX0FL SU5EIHRvIGl0LgotCShnZmNfc3ltX3R5cGUsIGdmY19nZXRfZGVyaXZlZF90eXBlKTogQWRqdXN0 IGdmY19idWlsZF9hcnJheV90eXBlCi0JY2FsbGVycy4KLQkoZ2ZjX2dldF9hcnJheV9kZXNjcl9p bmZvKTogTmV3IGZ1bmN0aW9uLgotCSogdHJhbnMtYXJyYXkuYyAoZ2ZjX3RyYW5zX2NyZWF0ZV90 ZW1wX2FycmF5LAotCWdmY19jb252X2V4cHJfZGVzY3JpcHRvcik6IEFkanVzdCBnZmNfZ2V0X2Fy cmF5X3R5cGVfYm91bmRzCi0JY2FsbGVycy4KLQkqIHRyYW5zLXN0bXQuYyAoZ2ZjX3RyYW5zX3Bv aW50ZXJfYXNzaWduX25lZWRfdGVtcCk6IExpa2V3aXNlLgotCSogdHJhbnMtdHlwZXMuaCAoZ2Zj X2dldF9hcnJheV90eXBlX2JvdW5kcyk6IEFkanVzdCBwcm90b3R5cGUuCi0JKiBNYWtlLWxhbmcu aW4gKGZvcnRyYW4vdHJhbnMtdHlwZXMubyk6IERlcGVuZCBvbiBkd2FyZjJvdXQuaC4KLQkqIGY5 NS1sYW5nLmMgKExBTkdfSE9PS1NfR0VUX0FSUkFZX0RFU0NSX0lORk8pOiBEZWZpbmUuCi0KLS0t LSBnY2MvZm9ydHJhbi90cmFucy5oLmpqCTIwMDctMDctMjMgMTI6MjQ6MTYuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2NjL2ZvcnRyYW4vdHJhbnMuaAkyMDA3LTExLTI0IDE1OjA0OjUxLjAwMDAwMDAw MCArMDEwMAotQEAgLTQ1Myw2ICs0NTMsOCBAQCB0cmVlIGdldGRlY2xzICh2b2lkKTsKLSB0cmVl IGdmY190cnV0aHZhbHVlX2NvbnZlcnNpb24gKHRyZWUpOwotIHRyZWUgYnVpbHRpbl9mdW5jdGlv biAoY29uc3QgY2hhciAqLCB0cmVlLCBpbnQsIGVudW0gYnVpbHRfaW5fY2xhc3MsCi0gCQkgICAg ICAgY29uc3QgY2hhciAqLCB0cmVlKTsKLStzdHJ1Y3QgYXJyYXlfZGVzY3JfaW5mbzsKLStib29s IGdmY19nZXRfYXJyYXlfZGVzY3JfaW5mbyAodHJlZSwgc3RydWN0IGFycmF5X2Rlc2NyX2luZm8g Kik7Ci0gCi0gLyogSW4gdHJhbnMtb3Blbm1wLmMgKi8KLSBib29sIGdmY19vbXBfcHJpdmF0aXpl X2J5X3JlZmVyZW5jZSAodHJlZSk7Ci1AQCAtNTQxLDEwICs1NDMsMTkgQEAgZXh0ZXJuIEdUWSgo KSkgdHJlZSBnZm9yX2ZuZGVjbF9zcl9raW5kOwotIAotIC8qIEc5NS1zcGVjaWZpYyBkZWNsYXJh dGlvbiBpbmZvcm1hdGlvbi4gICovCi0gCi0rZW51bSBnZmNfYXJyYXlfa2luZAotK3sKLSsgIEdG Q19BUlJBWV9VTktOT1dOLAotKyAgR0ZDX0FSUkFZX0FTU1VNRURfU0hBUEUsCi0rICBHRkNfQVJS QVlfQUxMT0NBVEFCTEUsCi0rICBHRkNfQVJSQVlfUE9JTlRFUgotK307Ci0rCi0gLyogQXJyYXkg dHlwZXMgb25seS4gICovCi0gc3RydWN0IGxhbmdfdHlwZQkJR1RZKCgpKQotIHsKLSAgIGludCBy YW5rOwotKyAgZW51bSBnZmNfYXJyYXlfa2luZCBha2luZDsKLSAgIHRyZWUgbGJvdW5kW0dGQ19N QVhfRElNRU5TSU9OU107Ci0gICB0cmVlIHVib3VuZFtHRkNfTUFYX0RJTUVOU0lPTlNdOwotICAg dHJlZSBzdHJpZGVbR0ZDX01BWF9ESU1FTlNJT05TXTsKLUBAIC01OTUsNyArNjA2LDggQEAgc3Ry dWN0IGxhbmdfZGVjbAkJR1RZKCgpKQotICNkZWZpbmUgR0ZDX1RZUEVfQVJSQVlfUkFOSyhub2Rl KSAoVFlQRV9MQU5HX1NQRUNJRklDKG5vZGUpLT5yYW5rKQotICNkZWZpbmUgR0ZDX1RZUEVfQVJS QVlfU0laRShub2RlKSAoVFlQRV9MQU5HX1NQRUNJRklDKG5vZGUpLT5zaXplKQotICNkZWZpbmUg R0ZDX1RZUEVfQVJSQVlfT0ZGU0VUKG5vZGUpIChUWVBFX0xBTkdfU1BFQ0lGSUMobm9kZSktPm9m ZnNldCkKLS0vKiBDb2RlIHNob3VsZCB1c2UgZ2ZjX2dldF9kdHlwZSBpbnN0ZWFkIG9mIGFjY2Vz aWcgdGhpcyBkaXJlY3RseS4gIEl0IG1heQotKyNkZWZpbmUgR0ZDX1RZUEVfQVJSQVlfQUtJTkQo bm9kZSkgKFRZUEVfTEFOR19TUEVDSUZJQyhub2RlKS0+YWtpbmQpCi0rLyogQ29kZSBzaG91bGQg dXNlIGdmY19nZXRfZHR5cGUgaW5zdGVhZCBvZiBhY2Nlc2luZyB0aGlzIGRpcmVjdGx5LiAgSXQg bWF5Ci0gICAgbm90IGJlIGtub3duIHdoZW4gdGhlIHR5cGUgaXMgY3JlYXRlZC4gICovCi0gI2Rl ZmluZSBHRkNfVFlQRV9BUlJBWV9EVFlQRShub2RlKSAoVFlQRV9MQU5HX1NQRUNJRklDKG5vZGUp LT5kdHlwZSkKLSAjZGVmaW5lIEdGQ19UWVBFX0FSUkFZX0RBVEFQVFJfVFlQRShub2RlKSBcCi0t LS0gZ2NjL2ZvcnRyYW4vdHJhbnMtc3RtdC5jLmpqCTIwMDctMDMtMTIgMDg6Mjg6MTUuMDAwMDAw MDAwICswMTAwCi0rKysgZ2NjL2ZvcnRyYW4vdHJhbnMtc3RtdC5jCTIwMDctMTEtMjQgMTQ6NTg6 MjAuMDAwMDAwMDAwICswMTAwCi1AQCAtMjMxMyw3ICsyMzEzLDggQEAgZ2ZjX3RyYW5zX3BvaW50 ZXJfYXNzaWduX25lZWRfdGVtcCAoZ2ZjXwotICAgICAgIC8qIE1ha2UgYSBuZXcgZGVzY3JpcHRv ci4gICovCi0gICAgICAgcGFybXR5cGUgPSBnZmNfZ2V0X2VsZW1lbnRfdHlwZSAoVFJFRV9UWVBF IChkZXNjKSk7Ci0gICAgICAgcGFybXR5cGUgPSBnZmNfZ2V0X2FycmF5X3R5cGVfYm91bmRzIChw YXJtdHlwZSwgbG9vcC5kaW1lbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxvb3AuZnJvbSwgbG9vcC50bywgMSk7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsb29wLmZyb20sIGxvb3AudG8sIDEsCi0rCQkJCQkgICAg R0ZDX0FSUkFZX1VOS05PV04pOwotIAotICAgICAgIC8qIEFsbG9jYXRlIHRlbXBvcmFyeSBmb3Ig bmVzdGVkIGZvcmFsbCBjb25zdHJ1Y3QuICAqLwotICAgICAgIHRtcDEgPSBhbGxvY2F0ZV90ZW1w X2Zvcl9mb3JhbGxfbmVzdCAobmVzdGVkX2ZvcmFsbF9pbmZvLCBwYXJtdHlwZSwKLS0tLSBnY2Mv Zm9ydHJhbi9mOTUtbGFuZy5jLmpqCTIwMDctMDItMjAgMjI6Mzg6MjAuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2NjL2ZvcnRyYW4vZjk1LWxhbmcuYwkyMDA3LTExLTI0IDE1OjAzOjE5LjAwMDAwMDAw MCArMDEwMAotQEAgLTEyNCw2ICsxMjQsNyBAQCBzdGF0aWMgSE9TVF9XSURFX0lOVCBnZmNfZ2V0 X2FsaWFzX3NldCAoCi0gI3VuZGVmIExBTkdfSE9PS1NfT01QX0RJU1JFR0FSRF9WQUxVRV9FWFBS Ci0gI3VuZGVmIExBTkdfSE9PS1NfT01QX1BSSVZBVEVfREVCVUdfQ0xBVVNFCi0gI3VuZGVmIExB TkdfSE9PS1NfT01QX0ZJUlNUUFJJVkFUSVpFX1RZUEVfU0laRVMKLSsjdW5kZWYgTEFOR19IT09L U19HRVRfQVJSQVlfREVTQ1JfSU5GTwotIAotIC8qIERlZmluZSBsYW5nIGhvb2tzLiAgKi8KLSAj ZGVmaW5lIExBTkdfSE9PS1NfTkFNRSAgICAgICAgICAgICAgICAgIkdOVSBGOTUiCi1AQCAtMTUw LDYgKzE1MSw3IEBAIHN0YXRpYyBIT1NUX1dJREVfSU5UIGdmY19nZXRfYWxpYXNfc2V0ICgKLSAj ZGVmaW5lIExBTkdfSE9PS1NfT01QX1BSSVZBVEVfREVCVUdfQ0xBVVNFCWdmY19vbXBfcHJpdmF0 ZV9kZWJ1Z19jbGF1c2UKLSAjZGVmaW5lIExBTkdfSE9PS1NfT01QX0ZJUlNUUFJJVkFUSVpFX1RZ UEVfU0laRVMgXAotICAgZ2ZjX29tcF9maXJzdHByaXZhdGl6ZV90eXBlX3NpemVzCi0rI2RlZmlu ZSBMQU5HX0hPT0tTX0dFVF9BUlJBWV9ERVNDUl9JTkZPCQlnZmNfZ2V0X2FycmF5X2Rlc2NyX2lu Zm8KLSAKLSBjb25zdCBzdHJ1Y3QgbGFuZ19ob29rcyBsYW5nX2hvb2tzID0gTEFOR19IT09LU19J TklUSUFMSVpFUjsKLSAKLS0tLSBnY2MvZm9ydHJhbi9NYWtlLWxhbmcuaW4uamoJMjAwNy0wOS0y NSAxMTozMjoxNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvZm9ydHJhbi9NYWtlLWxhbmcuaW4J MjAwNy0xMS0yNCAxNTowMjozNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yOTIsNyArMjkyLDcgQEAg Zm9ydHJhbi90cmFucy1kZWNsLm86ICQoR0ZPUlRSQU5fVFJBTlNfRAotICAgY2dyYXBoLmggJChU QVJHRVRfSCkgZnVuY3Rpb24uaCAkKEZMQUdTX0gpICQoUlRMX0gpIHRyZWUtZ2ltcGxlLmggXAot ICAgdHJlZS1kdW1wLmgKLSBmb3J0cmFuL3RyYW5zLXR5cGVzLm86ICQoR0ZPUlRSQU5fVFJBTlNf REVQUykgZ3QtZm9ydHJhbi10cmFucy10eXBlcy5oIFwKLS0gIHJlYWwuaCB0b3BsZXYuaCAkKFRB UkdFVF9IKSAkKEZMQUdTX0gpCi0rICByZWFsLmggdG9wbGV2LmggJChUQVJHRVRfSCkgJChGTEFH U19IKSBkd2FyZjJvdXQuaAotIGZvcnRyYW4vdHJhbnMtY29uc3QubzogJChHRk9SVFJBTl9UUkFO U19ERVBTKQotIGZvcnRyYW4vdHJhbnMtZXhwci5vOiAkKEdGT1JUUkFOX1RSQU5TX0RFUFMpIGZv cnRyYW4vZGVwZW5kZW5jeS5oCi0gZm9ydHJhbi90cmFucy1zdG10Lm86ICQoR0ZPUlRSQU5fVFJB TlNfREVQUykgZm9ydHJhbi9kZXBlbmRlbmN5LmgKLS0tLSBnY2MvZm9ydHJhbi90cmFucy10eXBl cy5jLmpqCTIwMDctMDktMjUgMTE6MzI6MTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2ZvcnRy YW4vdHJhbnMtdHlwZXMuYwkyMDA3LTExLTI0IDE1OjA2OjU5LjAwMDAwMDAwMCArMDEwMAotQEAg LTM2LDYgKzM2LDcgQEAgU29mdHdhcmUgRm91bmRhdGlvbiwgNTEgRnJhbmtsaW4gU3RyZWV0LAot ICNpbmNsdWRlICJ0cmFucy1jb25zdC5oIgotICNpbmNsdWRlICJyZWFsLmgiCi0gI2luY2x1ZGUg ImZsYWdzLmgiCi0rI2luY2x1ZGUgImR3YXJmMm91dC5oIgotIAwKLSAKLSAjaWYgKEdGQ19NQVhf RElNRU5TSU9OUyA8IDEwKQotQEAgLTgyMSw3ICs4MjIsOCBAQCBnZmNfaXNfbm9kZXNjX2FycmF5 IChnZmNfc3ltYm9sICogc3ltKQotIC8qIENyZWF0ZSBhbiBhcnJheSBkZXNjcmlwdG9yIHR5cGUu ICAqLwotIAotIHN0YXRpYyB0cmVlCi0tZ2ZjX2J1aWxkX2FycmF5X3R5cGUgKHRyZWUgdHlwZSwg Z2ZjX2FycmF5X3NwZWMgKiBhcykKLStnZmNfYnVpbGRfYXJyYXlfdHlwZSAodHJlZSB0eXBlLCBn ZmNfYXJyYXlfc3BlYyAqIGFzLAotKwkJICAgICAgZW51bSBnZmNfYXJyYXlfa2luZCBha2luZCkK LSB7Ci0gICB0cmVlIGxib3VuZFtHRkNfTUFYX0RJTUVOU0lPTlNdOwotICAgdHJlZSB1Ym91bmRb R0ZDX01BWF9ESU1FTlNJT05TXTsKLUBAIC04MzcsNyArODM5LDkgQEAgZ2ZjX2J1aWxkX2FycmF5 X3R5cGUgKHRyZWUgdHlwZSwgZ2ZjX2FycgotICAgICAgIHVib3VuZFtuXSA9IGdmY19jb252X2Fy cmF5X2JvdW5kIChhcy0+dXBwZXJbbl0pOwotICAgICB9Ci0gCi0tICByZXR1cm4gZ2ZjX2dldF9h cnJheV90eXBlX2JvdW5kcyAodHlwZSwgYXMtPnJhbmssIGxib3VuZCwgdWJvdW5kLCAwKTsKLSsg IGlmIChhcy0+dHlwZSA9PSBBU19BU1NVTUVEX1NIQVBFKQotKyAgICBha2luZCA9IEdGQ19BUlJB WV9BU1NVTUVEX1NIQVBFOwotKyAgcmV0dXJuIGdmY19nZXRfYXJyYXlfdHlwZV9ib3VuZHMgKHR5 cGUsIGFzLT5yYW5rLCBsYm91bmQsIHVib3VuZCwgMCwgYWtpbmQpOwotIH0KLSAMCi0gLyogUmV0 dXJucyB0aGUgc3RydWN0IGRlc2NyaXB0b3JfZGltZW5zaW9uIHR5cGUuICAqLwotQEAgLTEwMTUs NyArMTAxOSw3IEBAIGdmY19nZXRfbm9kZXNjX2FycmF5X3R5cGUgKHRyZWUgZXR5cGUsIGcKLSAg ICAgICBpZiAoZXhwci0+ZXhwcl90eXBlID09IEVYUFJfQ09OU1RBTlQpCi0gICAgICAgICB7Ci0g ICAgICAgICAgIHRtcCA9IGdmY19jb252X21wel90b190cmVlIChleHByLT52YWx1ZS5pbnRlZ2Vy LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZmNfaW5kZXhfaW50ZWdlcl9r aW5kKTsKLSsJCQkJICAgICAgZ2ZjX2luZGV4X2ludGVnZXJfa2luZCk7Ci0gICAgICAgICB9Ci0g ICAgICAgZWxzZQotICAgICAgICAgewotQEAgLTExMDcsNyArMTExMSw3IEBAIGdmY19nZXRfbm9k ZXNjX2FycmF5X3R5cGUgKHRyZWUgZXR5cGUsIGcKLSAgIC8qIEluIGRlYnVnIGluZm8gcmVwcmVz ZW50IHBhY2tlZCBhcnJheXMgYXMgbXVsdGktZGltZW5zaW9uYWwKLSAgICAgIGlmIHRoZXkgaGF2 ZSByYW5rID4gMSBhbmQgd2l0aCBwcm9wZXIgYm91bmRzLCBpbnN0ZWFkIG9mIGZsYXQKLSAgICAg IGFycmF5cy4gICovCi0tICBpZiAoa25vd25fc3RyaWRlICYmIHdyaXRlX3N5bWJvbHMgIT0gTk9f REVCVUcpCi0rICBpZiAoa25vd25fb2Zmc2V0ICYmIHdyaXRlX3N5bWJvbHMgIT0gTk9fREVCVUcp Ci0gICAgIHsKLSAgICAgICB0cmVlIGd0eXBlID0gZXR5cGUsIHJ0eXBlLCB0eXBlX2RlY2w7Ci0g Ci1AQCAtMTE5Myw3ICsxMTk3LDggQEAgZ2ZjX2dldF9hcnJheV9kZXNjcmlwdG9yX2Jhc2UgKGlu dCBkaW1lbgotIAotIHRyZWUKLSBnZmNfZ2V0X2FycmF5X3R5cGVfYm91bmRzICh0cmVlIGV0eXBl LCBpbnQgZGltZW4sIHRyZWUgKiBsYm91bmQsCi0tCQkJICAgdHJlZSAqIHVib3VuZCwgaW50IHBh Y2tlZCkKLSsJCQkgICB0cmVlICogdWJvdW5kLCBpbnQgcGFja2VkLAotKwkJCSAgIGVudW0gZ2Zj X2FycmF5X2tpbmQgYWtpbmQpCi0gewotICAgY2hhciBuYW1lWzggKyBHRkNfUkFOS19ESUdJVFMg KyBHRkNfTUFYX1NZTUJPTF9MRU5dOwotICAgdHJlZSBmYXRfdHlwZSwgYmFzZV90eXBlLCBhcnJh eXR5cGUsIGxvd2VyLCB1cHBlciwgc3RyaWRlLCB0bXA7Ci1AQCAtMTIyMCw2ICsxMjI1LDcgQEAg Z2ZjX2dldF9hcnJheV90eXBlX2JvdW5kcyAodHJlZSBldHlwZSwgaQotIAotICAgR0ZDX1RZUEVf QVJSQVlfUkFOSyAoZmF0X3R5cGUpID0gZGltZW47Ci0gICBHRkNfVFlQRV9BUlJBWV9EVFlQRSAo ZmF0X3R5cGUpID0gTlVMTF9UUkVFOwotKyAgR0ZDX1RZUEVfQVJSQVlfQUtJTkQgKGZhdF90eXBl KSA9IGFraW5kOwotIAotICAgLyogQnVpbGQgYW4gYXJyYXkgZGVzY3JpcHRvciByZWNvcmQgdHlw ZS4gICovCi0gICBpZiAocGFja2VkICE9IDApCi1AQCAtMTMzNyw3ICsxMzQzLDE0IEBAIGdmY19z eW1fdHlwZSAoZ2ZjX3N5bWJvbCAqIHN5bSkKLSAJICAgIH0KLSAgICAgICAgIH0KLSAgICAgICBl bHNlCi0tCXR5cGUgPSBnZmNfYnVpbGRfYXJyYXlfdHlwZSAodHlwZSwgc3ltLT5hcyk7Ci0rCXsK LSsJICBlbnVtIGdmY19hcnJheV9raW5kIGFraW5kID0gR0ZDX0FSUkFZX1VOS05PV047Ci0rCSAg aWYgKHN5bS0+YXR0ci5wb2ludGVyKQotKwkgICAgYWtpbmQgPSBHRkNfQVJSQVlfUE9JTlRFUjsK LSsJICBlbHNlIGlmIChzeW0tPmF0dHIuYWxsb2NhdGFibGUpCi0rCSAgICBha2luZCA9IEdGQ19B UlJBWV9BTExPQ0FUQUJMRTsKLSsJICB0eXBlID0gZ2ZjX2J1aWxkX2FycmF5X3R5cGUgKHR5cGUs IHN5bS0+YXMsIGFraW5kKTsKLSsJfQotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLUBAIC0xNTUw LDcgKzE1NjMsOCBAQCBnZmNfZ2V0X2Rlcml2ZWRfdHlwZSAoZ2ZjX3N5bWJvbCAqIGRlcml2Ci0g CSAgICB7Ci0gCSAgICAgIC8qIFBvaW50ZXJzIHRvIGFycmF5cyBhcmVuJ3QgYWN0dWFsbHkgcG9p bnRlciB0eXBlcy4gIFRoZQotIAkgICAgICAgICBkZXNjcmlwdG9ycyBhcmUgc2VwYXJhdGUsIGJ1 dCB0aGUgZGF0YSBpcyBjb21tb24uICAqLwotLQkgICAgICBmaWVsZF90eXBlID0gZ2ZjX2J1aWxk X2FycmF5X3R5cGUgKGZpZWxkX3R5cGUsIGMtPmFzKTsKLSsJICAgICAgZmllbGRfdHlwZSA9IGdm Y19idWlsZF9hcnJheV90eXBlIChmaWVsZF90eXBlLCBjLT5hcywKLSsJCQkJCQkgR0ZDX0FSUkFZ X1BPSU5URVIpOwotIAkgICAgfQotIAkgIGVsc2UKLSAJICAgIGZpZWxkX3R5cGUgPSBnZmNfZ2V0 X25vZGVzY19hcnJheV90eXBlIChmaWVsZF90eXBlLCBjLT5hcywgMyk7Ci1AQCAtMTg5Myw0ICsx OTA3LDEyNCBAQCBnZmNfc2lnbmVkX3R5cGUgKHRyZWUgdHlwZSkKLSAgIHJldHVybiBnZmNfc2ln bmVkX29yX3Vuc2lnbmVkX3R5cGUgKDAsIHR5cGUpOwotIH0KLSAKLSsvKiBSZXR1cm4gVFJVRSBp ZiBUWVBFIGlzIGEgdHlwZSB3aXRoIGEgaGlkZGVuIGRlc2NyaXB0b3IsIGZpbGwgaW4gSU5GTwot KyAgIGluIHRoYXQgY2FzZS4gICovCi0rCi0rYm9vbAotK2dmY19nZXRfYXJyYXlfZGVzY3JfaW5m byAodHJlZSB0eXBlLCBzdHJ1Y3QgYXJyYXlfZGVzY3JfaW5mbyAqaW5mbykKLSt7Ci0rICBpbnQg cmFuaywgZGltOwotKyAgYm9vbCBpbmRpcmVjdCA9IGZhbHNlOwotKyAgdHJlZSBldHlwZSwgcHR5 cGUsIGZpZWxkLCB0LCBiYXNlX2RlY2w7Ci0rICB0cmVlIGRhdGFfb2ZmLCBvZmZzZXRfb2ZmLCBk aW1fb2ZmLCBkaW1fc2l6ZSwgZWxlbV9zaXplOwotKyAgdHJlZSBsb3dlcl9zdWJvZmYsIHVwcGVy X3N1Ym9mZiwgc3RyaWRlX3N1Ym9mZjsKLSsKLSsgIGlmICghIEdGQ19ERVNDUklQVE9SX1RZUEVf UCAodHlwZSkpCi0rICAgIHsKLSsgICAgICBpZiAoISBQT0lOVEVSX1RZUEVfUCAodHlwZSkpCi0r CXJldHVybiBmYWxzZTsKLSsgICAgICB0eXBlID0gVFJFRV9UWVBFICh0eXBlKTsKLSsgICAgICBp ZiAoISBHRkNfREVTQ1JJUFRPUl9UWVBFX1AgKHR5cGUpKQotKwlyZXR1cm4gZmFsc2U7Ci0rICAg ICAgaW5kaXJlY3QgPSB0cnVlOwotKyAgICB9Ci0rCi0rICByYW5rID0gR0ZDX1RZUEVfQVJSQVlf UkFOSyAodHlwZSk7Ci0rICBpZiAocmFuayA+PSAoaW50KSAoc2l6ZW9mIChpbmZvLT5kaW1lbikg LyBzaXplb2YgKGluZm8tPmRpbWVuWzBdKSkpCi0rICAgIHJldHVybiBmYWxzZTsKLSsKLSsgIGV0 eXBlID0gR0ZDX1RZUEVfQVJSQVlfREFUQVBUUl9UWVBFICh0eXBlKTsKLSsgIGdjY19hc3NlcnQg KFBPSU5URVJfVFlQRV9QIChldHlwZSkpOwotKyAgZXR5cGUgPSBUUkVFX1RZUEUgKGV0eXBlKTsK LSsgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAoZXR5cGUpID09IEFSUkFZX1RZUEUpOwotKyAgZXR5 cGUgPSBUUkVFX1RZUEUgKGV0eXBlKTsKLSsgIC8qIENhbid0IGhhbmRsZSB2YXJpYWJsZSBzaXpl ZCBlbGVtZW50cyB5ZXQuICAqLwotKyAgaWYgKGludF9zaXplX2luX2J5dGVzIChldHlwZSkgPD0g MCkKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAgLyogTm9yIG5vbi1jb25zdGFudCBsb3dlciBib3Vu ZHMgaW4gYXNzdW1lZCBzaGFwZSBhcnJheXMuICAqLwotKyAgaWYgKEdGQ19UWVBFX0FSUkFZX0FL SU5EICh0eXBlKSA9PSBHRkNfQVJSQVlfQVNTVU1FRF9TSEFQRSkKLSsgICAgewotKyAgICAgIGZv ciAoZGltID0gMDsgZGltIDwgcmFuazsgZGltKyspCi0rCWlmIChHRkNfVFlQRV9BUlJBWV9MQk9V TkQgKHR5cGUsIGRpbSkgPT0gTlVMTF9UUkVFCi0rCSAgICB8fCBUUkVFX0NPREUgKEdGQ19UWVBF X0FSUkFZX0xCT1VORCAodHlwZSwgZGltKSkgIT0gSU5URUdFUl9DU1QpCi0rCSAgcmV0dXJuIGZh bHNlOwotKyAgICB9Ci0rCi0rICBtZW1zZXQgKGluZm8sICdcMCcsIHNpemVvZiAoKmluZm8pKTsK LSsgIGluZm8tPm5kaW1lbnNpb25zID0gcmFuazsKLSsgIGluZm8tPmVsZW1lbnRfdHlwZSA9IGV0 eXBlOwotKyAgcHR5cGUgPSBidWlsZF9wb2ludGVyX3R5cGUgKGdmY19hcnJheV9pbmRleF90eXBl KTsKLSsgIGlmIChpbmRpcmVjdCkKLSsgICAgewotKyAgICAgIGluZm8tPmJhc2VfZGVjbCA9IGJ1 aWxkX2RlY2wgKFZBUl9ERUNMLCBOVUxMX1RSRUUsCi0rCQkJCSAgICBidWlsZF9wb2ludGVyX3R5 cGUgKHB0eXBlKSk7Ci0rICAgICAgYmFzZV9kZWNsID0gYnVpbGQxIChJTkRJUkVDVF9SRUYsIHB0 eXBlLCBpbmZvLT5iYXNlX2RlY2wpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIGluZm8tPmJhc2Vf ZGVjbCA9IGJhc2VfZGVjbCA9IGJ1aWxkX2RlY2wgKFZBUl9ERUNMLCBOVUxMX1RSRUUsIHB0eXBl KTsKLSsKLSsgIGVsZW1fc2l6ZSA9IGZvbGRfY29udmVydCAoZ2ZjX2FycmF5X2luZGV4X3R5cGUs IFRZUEVfU0laRV9VTklUIChldHlwZSkpOwotKyAgZmllbGQgPSBUWVBFX0ZJRUxEUyAoVFlQRV9N QUlOX1ZBUklBTlQgKHR5cGUpKTsKLSsgIGRhdGFfb2ZmID0gYnl0ZV9wb3NpdGlvbiAoZmllbGQp OwotKyAgZmllbGQgPSBUUkVFX0NIQUlOIChmaWVsZCk7Ci0rICBvZmZzZXRfb2ZmID0gYnl0ZV9w b3NpdGlvbiAoZmllbGQpOwotKyAgZmllbGQgPSBUUkVFX0NIQUlOIChmaWVsZCk7Ci0rICBmaWVs ZCA9IFRSRUVfQ0hBSU4gKGZpZWxkKTsKLSsgIGRpbV9vZmYgPSBieXRlX3Bvc2l0aW9uIChmaWVs ZCk7Ci0rICBkaW1fc2l6ZSA9IFRZUEVfU0laRV9VTklUIChUUkVFX1RZUEUgKFRSRUVfVFlQRSAo ZmllbGQpKSk7Ci0rICBmaWVsZCA9IFRZUEVfRklFTERTIChUUkVFX1RZUEUgKFRSRUVfVFlQRSAo ZmllbGQpKSk7Ci0rICBzdHJpZGVfc3Vib2ZmID0gYnl0ZV9wb3NpdGlvbiAoZmllbGQpOwotKyAg ZmllbGQgPSBUUkVFX0NIQUlOIChmaWVsZCk7Ci0rICBsb3dlcl9zdWJvZmYgPSBieXRlX3Bvc2l0 aW9uIChmaWVsZCk7Ci0rICBmaWVsZCA9IFRSRUVfQ0hBSU4gKGZpZWxkKTsKLSsgIHVwcGVyX3N1 Ym9mZiA9IGJ5dGVfcG9zaXRpb24gKGZpZWxkKTsKLSsKLSsgIHQgPSBiYXNlX2RlY2w7Ci0rICBp ZiAoIWludGVnZXJfemVyb3AgKGRhdGFfb2ZmKSkKLSsgICAgdCA9IGJ1aWxkMiAoUExVU19FWFBS LCBwdHlwZSwgdCwgZGF0YV9vZmYpOwotKyAgdCA9IGJ1aWxkMSAoTk9QX0VYUFIsIGJ1aWxkX3Bv aW50ZXJfdHlwZSAocHRyX3R5cGVfbm9kZSksIHQpOwotKyAgaW5mby0+ZGF0YV9sb2NhdGlvbiA9 IGJ1aWxkMSAoSU5ESVJFQ1RfUkVGLCBwdHJfdHlwZV9ub2RlLCB0KTsKLSsgIGlmIChHRkNfVFlQ RV9BUlJBWV9BS0lORCAodHlwZSkgPT0gR0ZDX0FSUkFZX0FMTE9DQVRBQkxFKQotKyAgICBpbmZv LT5hbGxvY2F0ZWQgPSBidWlsZDIgKE5FX0VYUFIsIGJvb2xlYW5fdHlwZV9ub2RlLAotKwkJCSAg ICAgIGluZm8tPmRhdGFfbG9jYXRpb24sIG51bGxfcG9pbnRlcl9ub2RlKTsKLSsgIGVsc2UgaWYg KEdGQ19UWVBFX0FSUkFZX0FLSU5EICh0eXBlKSA9PSBHRkNfQVJSQVlfUE9JTlRFUikKLSsgICAg aW5mby0+YXNzb2NpYXRlZCA9IGJ1aWxkMiAoTkVfRVhQUiwgYm9vbGVhbl90eXBlX25vZGUsCi0r CQkJICAgICAgIGluZm8tPmRhdGFfbG9jYXRpb24sIG51bGxfcG9pbnRlcl9ub2RlKTsKLSsKLSsg IGZvciAoZGltID0gMDsgZGltIDwgcmFuazsgZGltKyspCi0rICAgIHsKLSsgICAgICB0ID0gYnVp bGQyIChQTFVTX0VYUFIsIHB0eXBlLCBiYXNlX2RlY2wsCi0rCQkgIHNpemVfYmlub3AgKFBMVVNf RVhQUiwgZGltX29mZiwgbG93ZXJfc3Vib2ZmKSk7Ci0rICAgICAgdCA9IGJ1aWxkMSAoSU5ESVJF Q1RfUkVGLCBnZmNfYXJyYXlfaW5kZXhfdHlwZSwgdCk7Ci0rICAgICAgaW5mby0+ZGltZW5bZGlt XS5sb3dlcl9ib3VuZCA9IHQ7Ci0rICAgICAgdCA9IGJ1aWxkMiAoUExVU19FWFBSLCBwdHlwZSwg YmFzZV9kZWNsLAotKwkJICBzaXplX2Jpbm9wIChQTFVTX0VYUFIsIGRpbV9vZmYsIHVwcGVyX3N1 Ym9mZikpOwotKyAgICAgIHQgPSBidWlsZDEgKElORElSRUNUX1JFRiwgZ2ZjX2FycmF5X2luZGV4 X3R5cGUsIHQpOwotKyAgICAgIGluZm8tPmRpbWVuW2RpbV0udXBwZXJfYm91bmQgPSB0OwotKyAg ICAgIGlmIChHRkNfVFlQRV9BUlJBWV9BS0lORCAodHlwZSkgPT0gR0ZDX0FSUkFZX0FTU1VNRURf U0hBUEUpCi0rCXsKLSsJICAvKiBBc3N1bWVkIHNoYXBlIGFycmF5cyBoYXZlIGtub3duIGxvd2Vy IGJvdW5kcy4gICovCi0rCSAgaW5mby0+ZGltZW5bZGltXS51cHBlcl9ib3VuZAotKwkgICAgPSBi dWlsZDIgKE1JTlVTX0VYUFIsIGdmY19hcnJheV9pbmRleF90eXBlLAotKwkJICAgICAgaW5mby0+ ZGltZW5bZGltXS51cHBlcl9ib3VuZCwKLSsJCSAgICAgIGluZm8tPmRpbWVuW2RpbV0ubG93ZXJf Ym91bmQpOwotKwkgIGluZm8tPmRpbWVuW2RpbV0ubG93ZXJfYm91bmQKLSsJICAgID0gZm9sZF9j b252ZXJ0IChnZmNfYXJyYXlfaW5kZXhfdHlwZSwKLSsJCQkgICAgR0ZDX1RZUEVfQVJSQVlfTEJP VU5EICh0eXBlLCBkaW0pKTsKLSsJICBpbmZvLT5kaW1lbltkaW1dLnVwcGVyX2JvdW5kCi0rCSAg ICA9IGJ1aWxkMiAoUExVU19FWFBSLCBnZmNfYXJyYXlfaW5kZXhfdHlwZSwKLSsJCSAgICAgIGlu Zm8tPmRpbWVuW2RpbV0ubG93ZXJfYm91bmQsCi0rCQkgICAgICBpbmZvLT5kaW1lbltkaW1dLnVw cGVyX2JvdW5kKTsKLSsJfQotKyAgICAgIHQgPSBidWlsZDIgKFBMVVNfRVhQUiwgcHR5cGUsIGJh c2VfZGVjbCwKLSsJCSAgc2l6ZV9iaW5vcCAoUExVU19FWFBSLCBkaW1fb2ZmLCBzdHJpZGVfc3Vi b2ZmKSk7Ci0rICAgICAgdCA9IGJ1aWxkMSAoSU5ESVJFQ1RfUkVGLCBnZmNfYXJyYXlfaW5kZXhf dHlwZSwgdCk7Ci0rICAgICAgdCA9IGJ1aWxkMiAoTVVMVF9FWFBSLCBnZmNfYXJyYXlfaW5kZXhf dHlwZSwgdCwgZWxlbV9zaXplKTsKLSsgICAgICBpbmZvLT5kaW1lbltkaW1dLnN0cmlkZSA9IHQ7 Ci0rICAgICAgZGltX29mZiA9IHNpemVfYmlub3AgKFBMVVNfRVhQUiwgZGltX29mZiwgZGltX3Np emUpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0gI2luY2x1ZGUgImd0LWZv cnRyYW4tdHJhbnMtdHlwZXMuaCIKLS0tLSBnY2MvZm9ydHJhbi90cmFucy1hcnJheS5jLmpqCTIw MDctMDQtMDMgMTM6MTA6MDAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2ZvcnRyYW4vdHJhbnMt YXJyYXkuYwkyMDA3LTExLTI0IDE0OjU4OjIwLjAwMDAwMDAwMCArMDEwMAotQEAgLTYxMiw3ICs2 MTIsOCBAQCBnZmNfdHJhbnNfYWxsb2NhdGVfdGVtcF9hcnJheSAoc3RtdGJsb2NrCi0gCi0gICAv KiBJbml0aWFsaXplIHRoZSBkZXNjcmlwdG9yLiAgKi8KLSAgIHR5cGUgPQotLSAgICBnZmNfZ2V0 X2FycmF5X3R5cGVfYm91bmRzIChlbHR5cGUsIGluZm8tPmRpbWVuLCBsb29wLT5mcm9tLCBsb29w LT50bywgMSk7Ci0rICAgIGdmY19nZXRfYXJyYXlfdHlwZV9ib3VuZHMgKGVsdHlwZSwgaW5mby0+ ZGltZW4sIGxvb3AtPmZyb20sIGxvb3AtPnRvLCAxLAotKwkJCSAgICAgICBHRkNfQVJSQVlfVU5L Tk9XTik7Ci0gICBkZXNjID0gZ2ZjX2NyZWF0ZV92YXIgKHR5cGUsICJhdG1wIik7Ci0gICBHRkNf REVDTF9QQUNLRURfQVJSQVkgKGRlc2MpID0gMTsKLSAKLUBAIC00MzQ1LDcgKzQzNDYsOCBAQCBn ZmNfY29udl9leHByX2Rlc2NyaXB0b3IgKGdmY19zZSAqIHNlLCBnCi0gCSAgLyogT3RoZXJ3aXNl IG1ha2UgYSBuZXcgb25lLiAgKi8KLSAJICBwYXJtdHlwZSA9IGdmY19nZXRfZWxlbWVudF90eXBl IChUUkVFX1RZUEUgKGRlc2MpKTsKLSAJICBwYXJtdHlwZSA9IGdmY19nZXRfYXJyYXlfdHlwZV9i b3VuZHMgKHBhcm10eXBlLCBsb29wLmRpbWVuLAotLQkJCQkJCWxvb3AuZnJvbSwgbG9vcC50bywg MCk7Ci0rCQkJCQkJbG9vcC5mcm9tLCBsb29wLnRvLCAwLAotKwkJCQkJCUdGQ19BUlJBWV9VTktO T1dOKTsKLSAJICBwYXJtID0gZ2ZjX2NyZWF0ZV92YXIgKHBhcm10eXBlLCAicGFybSIpOwotIAl9 Ci0gCi0tLS0gZ2NjL2ZvcnRyYW4vdHJhbnMtdHlwZXMuaC5qagkyMDA3LTAyLTIwIDIyOjM4OjIw LjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy9mb3J0cmFuL3RyYW5zLXR5cGVzLmgJMjAwNy0xMS0y NCAxNTowMzo1OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC03OSw3ICs3OSw4IEBAIHRyZWUgZ2ZjX3Np Z25lZF90eXBlICh0cmVlKTsKLSB0cmVlIGdmY19zaWduZWRfb3JfdW5zaWduZWRfdHlwZSAoaW50 LCB0cmVlKTsKLSAKLSB0cmVlIGdmY19nZXRfZWxlbWVudF90eXBlICh0cmVlKTsKLS10cmVlIGdm Y19nZXRfYXJyYXlfdHlwZV9ib3VuZHMgKHRyZWUsIGludCwgdHJlZSAqLCB0cmVlICosIGludCk7 Ci0rdHJlZSBnZmNfZ2V0X2FycmF5X3R5cGVfYm91bmRzICh0cmVlLCBpbnQsIHRyZWUgKiwgdHJl ZSAqLCBpbnQsCi0rCQkJCWVudW0gZ2ZjX2FycmF5X2tpbmQpOwotIHRyZWUgZ2ZjX2dldF9ub2Rl c2NfYXJyYXlfdHlwZSAodHJlZSwgZ2ZjX2FycmF5X3NwZWMgKiwgaW50KTsKLSAKLSAvKiBBZGQg YSBmaWVsZCBvZiBnaXZlbiBuYW1lIGFuZCB0eXBlIHRvIGEgVU5JT05fVFlQRSBvciBSRUNPUkRf VFlQRS4gICovCi0tLS0gZ2NjL2R3YXJmMi5oLmpqCTIwMDctMDItMjAgMjI6Mzk6MTIuMDAwMDAw MDAwICswMTAwCi0rKysgZ2NjL2R3YXJmMi5oCTIwMDctMTEtMjQgMTQ6NTg6MjAuMDAwMDAwMDAw ICswMTAwCi1AQCAtMjc1LDcgKzI3NSw4IEBAIGVudW0gZHdhcmZfYXR0cmlidXRlCi0gICAgIERX X0FUX3Byb3RvdHlwZWQgPSAweDI3LAotICAgICBEV19BVF9yZXR1cm5fYWRkciA9IDB4MmEsCi0g ICAgIERXX0FUX3N0YXJ0X3Njb3BlID0gMHgyYywKLS0gICAgRFdfQVRfc3RyaWRlX3NpemUgPSAw eDJlLAotKyAgICBEV19BVF9iaXRfc3RyaWRlID0gMHgyZSwKLSsgICAgRFdfQVRfc3RyaWRlX3Np emUgPSBEV19BVF9iaXRfc3RyaWRlLAotICAgICBEV19BVF91cHBlcl9ib3VuZCA9IDB4MmYsCi0g ICAgIERXX0FUX2Fic3RyYWN0X29yaWdpbiA9IDB4MzEsCi0gICAgIERXX0FUX2FjY2Vzc2liaWxp dHkgPSAweDMyLAotQEAgLTMxMCw3ICszMTEsOCBAQCBlbnVtIGR3YXJmX2F0dHJpYnV0ZQotICAg ICBEV19BVF9hbGxvY2F0ZWQgICAgID0gMHg0ZSwKLSAgICAgRFdfQVRfYXNzb2NpYXRlZCAgICA9 IDB4NGYsCi0gICAgIERXX0FUX2RhdGFfbG9jYXRpb24gPSAweDUwLAotLSAgICBEV19BVF9zdHJp ZGUgICAgICAgID0gMHg1MSwKLSsgICAgRFdfQVRfYnl0ZV9zdHJpZGUgICA9IDB4NTEsCi0rICAg IERXX0FUX3N0cmlkZSAgICAgICAgPSBEV19BVF9ieXRlX3N0cmlkZSwKLSAgICAgRFdfQVRfZW50 cnlfcGMgICAgICA9IDB4NTIsCi0gICAgIERXX0FUX3VzZV9VVEY4ICAgICAgPSAweDUzLAotICAg ICBEV19BVF9leHRlbnNpb24gICAgID0gMHg1NCwKLS0tLSBnY2MvbGFuZ2hvb2tzLmguamoJMjAw Ny0xMS0yMyAxNzo0MToxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvbGFuZ2hvb2tzLmgJMjAw Ny0xMS0yNCAxNTowMTozMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yOCw2ICsyOCw4IEBAIHN0cnVj dCBkaWFnbm9zdGljX2luZm87Ci0gCi0gc3RydWN0IGdpbXBsaWZ5X29tcF9jdHg7Ci0gCi0rc3Ry dWN0IGFycmF5X2Rlc2NyX2luZm87Ci0rCi0gLyogQSBwcmludCBob29rIGZvciBwcmludF90cmVl ICgpLiAgKi8KLSB0eXBlZGVmIHZvaWQgKCpsYW5nX3ByaW50X3RyZWVfaG9vaykgKEZJTEUgKiwg dHJlZSwgaW50IGluZGVudCk7Ci0gCi1AQCAtMTUzLDYgKzE1NSwxMCBAQCBzdHJ1Y3QgbGFuZ19o b29rc19mb3JfdHlwZXMKLSAgICAgIENhbGxlZCBvbmx5IGFmdGVyIGRvaW5nIGFsbCBsYW5ndWFn ZSBpbmRlcGVuZGVudCBjaGVja3MuICAqLwotICAgYm9vbCAoKnR5cGVfaGFzaF9lcSkgKHRyZWUs IHRyZWUpOwotIAotKyAgLyogUmV0dXJuIFRSVUUgaWYgVFlQRSB1c2VzIGEgaGlkZGVuIGRlc2Ny aXB0b3IgYW5kIGZpbGxzIGluIGluZm9ybWF0aW9uCi0rICAgICBmb3IgdGhlIGRlYnVnZ2VyIGFi b3V0IHRoZSBhcnJheSBib3VuZHMsIHN0cmlkZXMsIGV0Yy4gICovCi0rICBib29sICgqZ2V0X2Fy cmF5X2Rlc2NyX2luZm8pICh0cmVlLCBzdHJ1Y3QgYXJyYXlfZGVzY3JfaW5mbyAqKTsKLSsKLSAg IC8qIE5vbnplcm8gaWYgdHlwZXMgdGhhdCBhcmUgaWRlbnRpY2FsIGFyZSB0byBiZSBoYXNoZWQg c28gdGhhdCBvbmx5Ci0gICAgICBvbmUgY29weSBpcyBrZXB0LiAgSWYgYSBsYW5ndWFnZSByZXF1 aXJlcyB1bmlxdWUgdHlwZXMgZm9yIGVhY2gKLSAgICAgIHVzZXItc3BlY2lmaWVkIHR5cGUsIHN1 Y2ggYXMgQWRhLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8gVFJVRS4gICovCi0tLS0gZ2NjL2xhbmdo b29rcy1kZWYuaC5qagkyMDA3LTExLTIzIDE3OjQxOjE1LjAwMDAwMDAwMCArMDEwMAotKysrIGdj Yy9sYW5naG9va3MtZGVmLmgJMjAwNy0xMS0yNCAxNTowMDo0Ny4wMDAwMDAwMDAgKzAxMDAKLUBA IC0yMjMsNiArMjIzLDcgQEAgZXh0ZXJuIHRyZWUgbGhkX21ha2Vfbm9kZSAoZW51bSB0cmVlX2Nv ZAotICNkZWZpbmUgTEFOR19IT09LU19PTVBfRklSU1RQUklWQVRJWkVfVFlQRV9TSVpFUyBcCi0g ICBsaGRfb21wX2ZpcnN0cHJpdmF0aXplX3R5cGVfc2l6ZXMKLSAjZGVmaW5lIExBTkdfSE9PS1Nf VFlQRV9IQVNIX0VRCQlsaGRfdHlwZV9oYXNoX2VxCi0rI2RlZmluZSBMQU5HX0hPT0tTX0dFVF9B UlJBWV9ERVNDUl9JTkZPCU5VTEwKLSAjZGVmaW5lIExBTkdfSE9PS1NfSEFTSF9UWVBFUwkJdHJ1 ZQotIAotICNkZWZpbmUgTEFOR19IT09LU19GT1JfVFlQRVNfSU5JVElBTElaRVIgeyBcCi1AQCAt MjM4LDYgKzIzOSw3IEBAIGV4dGVybiB0cmVlIGxoZF9tYWtlX25vZGUgKGVudW0gdHJlZV9jb2QK LSAgIExBTkdfSE9PS1NfVFlQRV9NQVhfU0laRSwgXAotICAgTEFOR19IT09LU19PTVBfRklSU1RQ UklWQVRJWkVfVFlQRV9TSVpFUywgXAotICAgTEFOR19IT09LU19UWVBFX0hBU0hfRVEsIFwKLSsg IExBTkdfSE9PS1NfR0VUX0FSUkFZX0RFU0NSX0lORk8sIFwKLSAgIExBTkdfSE9PS1NfSEFTSF9U WVBFUyBcCi0gfQotIAotLS0tIGdjYy9kd2FyZjJvdXQuYy5qagkyMDA3LTExLTIzIDE4OjEwOjIw LjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy9kd2FyZjJvdXQuYwkyMDA3LTExLTI0IDE0OjU4OjIw LjAwMDAwMDAwMCArMDEwMAotQEAgLTQxNDYsNiArNDE0Niw3IEBAIHN0YXRpYyB0cmVlIG1lbWJl cl9kZWNsYXJlZF90eXBlICh0cmVlKTsKLSBzdGF0aWMgY29uc3QgY2hhciAqZGVjbF9zdGFydF9s YWJlbCAodHJlZSk7Ci0gI2VuZGlmCi0gc3RhdGljIHZvaWQgZ2VuX2FycmF5X3R5cGVfZGllICh0 cmVlLCBkd19kaWVfcmVmKTsKLStzdGF0aWMgdm9pZCBnZW5fZGVzY3JfYXJyYXlfdHlwZV9kaWUg KHRyZWUsIHN0cnVjdCBhcnJheV9kZXNjcl9pbmZvICosIGR3X2RpZV9yZWYpOwotICNpZiAwCi0g c3RhdGljIHZvaWQgZ2VuX2VudHJ5X3BvaW50X2RpZSAodHJlZSwgZHdfZGllX3JlZik7Ci0gI2Vu ZGlmCi1AQCAtNDU1Miw4ICs0NTUzLDggQEAgZHdhcmZfYXR0cl9uYW1lICh1bnNpZ25lZCBpbnQg YXR0cikKLSAgICAgICByZXR1cm4gIkRXX0FUX3JldHVybl9hZGRyIjsKLSAgICAgY2FzZSBEV19B VF9zdGFydF9zY29wZToKLSAgICAgICByZXR1cm4gIkRXX0FUX3N0YXJ0X3Njb3BlIjsKLS0gICAg Y2FzZSBEV19BVF9zdHJpZGVfc2l6ZToKLS0gICAgICByZXR1cm4gIkRXX0FUX3N0cmlkZV9zaXpl IjsKLSsgICAgY2FzZSBEV19BVF9iaXRfc3RyaWRlOgotKyAgICAgIHJldHVybiAiRFdfQVRfYml0 X3N0cmlkZSI7Ci0gICAgIGNhc2UgRFdfQVRfdXBwZXJfYm91bmQ6Ci0gICAgICAgcmV0dXJuICJE V19BVF91cHBlcl9ib3VuZCI7Ci0gICAgIGNhc2UgRFdfQVRfYWJzdHJhY3Rfb3JpZ2luOgotQEAg LTQ2MjEsOCArNDYyMiw4IEBAIGR3YXJmX2F0dHJfbmFtZSAodW5zaWduZWQgaW50IGF0dHIpCi0g ICAgICAgcmV0dXJuICJEV19BVF9hc3NvY2lhdGVkIjsKLSAgICAgY2FzZSBEV19BVF9kYXRhX2xv Y2F0aW9uOgotICAgICAgIHJldHVybiAiRFdfQVRfZGF0YV9sb2NhdGlvbiI7Ci0tICAgIGNhc2Ug RFdfQVRfc3RyaWRlOgotLSAgICAgIHJldHVybiAiRFdfQVRfc3RyaWRlIjsKLSsgICAgY2FzZSBE V19BVF9ieXRlX3N0cmlkZToKLSsgICAgICByZXR1cm4gIkRXX0FUX2J5dGVfc3RyaWRlIjsKLSAg ICAgY2FzZSBEV19BVF9lbnRyeV9wYzoKLSAgICAgICByZXR1cm4gIkRXX0FUX2VudHJ5X3BjIjsK LSAgICAgY2FzZSBEV19BVF91c2VfVVRGODoKLUBAIC0xMTE2OSw2ICsxMTE3MCwxNTkgQEAgZ2Vu X2FycmF5X3R5cGVfZGllICh0cmVlIHR5cGUsIGR3X2RpZV9yZQotICAgYWRkX3R5cGVfYXR0cmli dXRlIChhcnJheV9kaWUsIGVsZW1lbnRfdHlwZSwgMCwgMCwgY29udGV4dF9kaWUpOwotIH0KLSAK LStzdGF0aWMgZHdfbG9jX2Rlc2NyX3JlZgotK2Rlc2NyX2luZm9fbG9jICh0cmVlIHZhbCwgdHJl ZSBiYXNlX2RlY2wpCi0rewotKyAgSE9TVF9XSURFX0lOVCBzaXplOwotKyAgZHdfbG9jX2Rlc2Ny X3JlZiBsb2MsIGxvYzI7Ci0rICBlbnVtIGR3YXJmX2xvY2F0aW9uX2F0b20gb3A7Ci0rCi0rICBp ZiAodmFsID09IGJhc2VfZGVjbCkKLSsgICAgcmV0dXJuIG5ld19sb2NfZGVzY3IgKERXX09QX3B1 c2hfb2JqZWN0X2FkZHJlc3MsIDAsIDApOwotKwotKyAgc3dpdGNoIChUUkVFX0NPREUgKHZhbCkp Ci0rICAgIHsKLSsgICAgY2FzZSBOT1BfRVhQUjoKLSsgICAgY2FzZSBDT05WRVJUX0VYUFI6Ci0r ICAgICAgcmV0dXJuIGRlc2NyX2luZm9fbG9jIChUUkVFX09QRVJBTkQgKHZhbCwgMCksIGJhc2Vf ZGVjbCk7Ci0rICAgIGNhc2UgSU5URUdFUl9DU1Q6Ci0rICAgICAgaWYgKGhvc3RfaW50ZWdlcnAg KHZhbCwgMCkpCi0rCXJldHVybiBpbnRfbG9jX2Rlc2NyaXB0b3IgKHRyZWVfbG93X2NzdCAodmFs LCAwKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgSU5ESVJFQ1RfUkVGOgotKyAgICAgIHNp emUgPSBpbnRfc2l6ZV9pbl9ieXRlcyAoVFJFRV9UWVBFICh2YWwpKTsKLSsgICAgICBpZiAoc2l6 ZSA8IDApCi0rCWJyZWFrOwotKyAgICAgIGxvYyA9IGRlc2NyX2luZm9fbG9jIChUUkVFX09QRVJB TkQgKHZhbCwgMCksIGJhc2VfZGVjbCk7Ci0rICAgICAgaWYgKCFsb2MpCi0rCWJyZWFrOwotKyAg ICAgIGlmIChzaXplID09IERXQVJGMl9BRERSX1NJWkUpCi0rCWFkZF9sb2NfZGVzY3IgKCZsb2Ms IG5ld19sb2NfZGVzY3IgKERXX09QX2RlcmVmLCAwLCAwKSk7Ci0rICAgICAgZWxzZQotKwlhZGRf bG9jX2Rlc2NyICgmbG9jLCBuZXdfbG9jX2Rlc2NyIChEV19PUF9kZXJlZl9zaXplLCBzaXplLCAw KSk7Ci0rICAgICAgcmV0dXJuIGxvYzsKLSsgICAgY2FzZSBQTFVTX0VYUFI6Ci0rICAgICAgaWYg KGhvc3RfaW50ZWdlcnAgKFRSRUVfT1BFUkFORCAodmFsLCAxKSwgMSkKLSsJICAmJiAodW5zaWdu ZWQgSE9TVF9XSURFX0lOVCkgdHJlZV9sb3dfY3N0IChUUkVFX09QRVJBTkQgKHZhbCwgMSksIDEp Ci0rCSAgICAgPCAxNjM4NCkKLSsJewotKwkgIGxvYyA9IGRlc2NyX2luZm9fbG9jIChUUkVFX09Q RVJBTkQgKHZhbCwgMCksIGJhc2VfZGVjbCk7Ci0rCSAgaWYgKCFsb2MpCi0rCSAgICBicmVhazsK LSsJICBhZGRfbG9jX2Rlc2NyICgmbG9jLAotKwkJCSBuZXdfbG9jX2Rlc2NyIChEV19PUF9wbHVz X3Vjb25zdCwKLSsJCQkJCXRyZWVfbG93X2NzdCAoVFJFRV9PUEVSQU5EICh2YWwsIDEpLAotKwkJ CQkJCSAgICAgIDEpLCAwKSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBvcCA9IERXX09Q X3BsdXM7Ci0rCWRvX2Jpbm9wOgotKwkgIGxvYyA9IGRlc2NyX2luZm9fbG9jIChUUkVFX09QRVJB TkQgKHZhbCwgMCksIGJhc2VfZGVjbCk7Ci0rCSAgaWYgKCFsb2MpCi0rCSAgICBicmVhazsKLSsJ ICBsb2MyID0gZGVzY3JfaW5mb19sb2MgKFRSRUVfT1BFUkFORCAodmFsLCAxKSwgYmFzZV9kZWNs KTsKLSsJICBpZiAoIWxvYzIpCi0rCSAgICBicmVhazsKLSsJICBhZGRfbG9jX2Rlc2NyICgmbG9j LCBsb2MyKTsKLSsJICBhZGRfbG9jX2Rlc2NyICgmbG9jMiwgbmV3X2xvY19kZXNjciAob3AsIDAs IDApKTsKLSsJfQotKyAgICAgIHJldHVybiBsb2M7Ci0rICAgIGNhc2UgTUlOVVNfRVhQUjoKLSsg ICAgICBvcCA9IERXX09QX21pbnVzOwotKyAgICAgIGdvdG8gZG9fYmlub3A7Ci0rICAgIGNhc2Ug TVVMVF9FWFBSOgotKyAgICAgIG9wID0gRFdfT1BfbXVsOwotKyAgICAgIGdvdG8gZG9fYmlub3A7 Ci0rICAgIGNhc2UgRVFfRVhQUjoKLSsgICAgICBvcCA9IERXX09QX2VxOwotKyAgICAgIGdvdG8g ZG9fYmlub3A7Ci0rICAgIGNhc2UgTkVfRVhQUjoKLSsgICAgICBvcCA9IERXX09QX25lOwotKyAg ICAgIGdvdG8gZG9fYmlub3A7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0K LSsgIHJldHVybiBOVUxMOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2FkZF9kZXNjcl9pbmZvX2Zp ZWxkIChkd19kaWVfcmVmIGRpZSwgZW51bSBkd2FyZl9hdHRyaWJ1dGUgYXR0ciwKLSsJCSAgICAg IHRyZWUgdmFsLCB0cmVlIGJhc2VfZGVjbCkKLSt7Ci0rICBkd19sb2NfZGVzY3JfcmVmIGxvYzsK LSsKLSsgIGlmIChob3N0X2ludGVnZXJwICh2YWwsIDApKQotKyAgICB7Ci0rICAgICAgYWRkX0FU X3Vuc2lnbmVkIChkaWUsIGF0dHIsIHRyZWVfbG93X2NzdCAodmFsLCAwKSk7Ci0rICAgICAgcmV0 dXJuOwotKyAgICB9Ci0rCi0rICBsb2MgPSBkZXNjcl9pbmZvX2xvYyAodmFsLCBiYXNlX2RlY2wp OwotKyAgaWYgKCFsb2MpCi0rICAgIHJldHVybjsKLSsKLSsgIGFkZF9BVF9sb2MgKGRpZSwgYXR0 ciwgbG9jKTsKLSt9Ci0rCi0rLyogVGhpcyByb3V0aW5lIGdlbmVyYXRlcyBESUUgZm9yIGFycmF5 IHdpdGggaGlkZGVuIGRlc2NyaXB0b3IsIGRldGFpbHMKLSsgICBhcmUgZmlsbGVkIGludG8gKmlu Zm8gYnkgYSBsYW5naG9vay4gICovCi0rCi0rc3RhdGljIHZvaWQKLStnZW5fZGVzY3JfYXJyYXlf dHlwZV9kaWUgKHRyZWUgdHlwZSwgc3RydWN0IGFycmF5X2Rlc2NyX2luZm8gKmluZm8sCi0rCQkJ ICBkd19kaWVfcmVmIGNvbnRleHRfZGllKQotK3sKLSsgIGR3X2RpZV9yZWYgc2NvcGVfZGllID0g c2NvcGVfZGllX2ZvciAodHlwZSwgY29udGV4dF9kaWUpOwotKyAgZHdfZGllX3JlZiBhcnJheV9k aWU7Ci0rICBpbnQgZGltOwotKwotKyAgYXJyYXlfZGllID0gbmV3X2RpZSAoRFdfVEFHX2FycmF5 X3R5cGUsIHNjb3BlX2RpZSwgdHlwZSk7Ci0rICBhZGRfbmFtZV9hdHRyaWJ1dGUgKGFycmF5X2Rp ZSwgdHlwZV90YWcgKHR5cGUpKTsKLSsgIGVxdWF0ZV90eXBlX251bWJlcl90b19kaWUgKHR5cGUs IGFycmF5X2RpZSk7Ci0rCi0rICBpZiAoaW5mby0+ZGF0YV9sb2NhdGlvbikKLSsgICAgYWRkX2Rl c2NyX2luZm9fZmllbGQgKGFycmF5X2RpZSwgRFdfQVRfZGF0YV9sb2NhdGlvbiwgaW5mby0+ZGF0 YV9sb2NhdGlvbiwKLSsJCQkgIGluZm8tPmJhc2VfZGVjbCk7Ci0rICBpZiAoaW5mby0+YXNzb2Np YXRlZCkKLSsgICAgYWRkX2Rlc2NyX2luZm9fZmllbGQgKGFycmF5X2RpZSwgRFdfQVRfYXNzb2Np YXRlZCwgaW5mby0+YXNzb2NpYXRlZCwKLSsJCQkgIGluZm8tPmJhc2VfZGVjbCk7Ci0rICBpZiAo aW5mby0+YWxsb2NhdGVkKQotKyAgICBhZGRfZGVzY3JfaW5mb19maWVsZCAoYXJyYXlfZGllLCBE V19BVF9hbGxvY2F0ZWQsIGluZm8tPmFsbG9jYXRlZCwKLSsJCQkgIGluZm8tPmJhc2VfZGVjbCk7 Ci0rCi0rICBmb3IgKGRpbSA9IDA7IGRpbSA8IGluZm8tPm5kaW1lbnNpb25zOyBkaW0rKykKLSsg ICAgewotKyAgICAgIGR3X2RpZV9yZWYgc3VicmFuZ2VfZGllCi0rCT0gbmV3X2RpZSAoRFdfVEFH X3N1YnJhbmdlX3R5cGUsIGFycmF5X2RpZSwgTlVMTCk7Ci0rCi0rICAgICAgaWYgKGluZm8tPmRp bWVuW2RpbV0ubG93ZXJfYm91bmQpCi0rCXsKLSsJICAvKiBJZiBpdCBpcyB0aGUgZGVmYXVsdCB2 YWx1ZSwgb21pdCBpdC4gICovCi0rCSAgaWYgKChpc19jX2ZhbWlseSAoKSB8fCBpc19qYXZhICgp KQotKwkgICAgICAmJiBpbnRlZ2VyX3plcm9wIChpbmZvLT5kaW1lbltkaW1dLmxvd2VyX2JvdW5k KSkKLSsJICAgIDsKLSsJICBlbHNlIGlmIChpc19mb3J0cmFuICgpCi0rCQkgICAmJiBpbnRlZ2Vy X29uZXAgKGluZm8tPmRpbWVuW2RpbV0ubG93ZXJfYm91bmQpKQotKwkgICAgOwotKwkgIGVsc2UK LSsJICAgIGFkZF9kZXNjcl9pbmZvX2ZpZWxkIChzdWJyYW5nZV9kaWUsIERXX0FUX2xvd2VyX2Jv dW5kLAotKwkJCQkgIGluZm8tPmRpbWVuW2RpbV0ubG93ZXJfYm91bmQsCi0rCQkJCSAgaW5mby0+ YmFzZV9kZWNsKTsKLSsJfQotKyAgICAgIGlmIChpbmZvLT5kaW1lbltkaW1dLnVwcGVyX2JvdW5k KQotKwlhZGRfZGVzY3JfaW5mb19maWVsZCAoc3VicmFuZ2VfZGllLCBEV19BVF91cHBlcl9ib3Vu ZCwKLSsJCQkgICAgICBpbmZvLT5kaW1lbltkaW1dLnVwcGVyX2JvdW5kLAotKwkJCSAgICAgIGlu Zm8tPmJhc2VfZGVjbCk7Ci0rICAgICAgaWYgKGluZm8tPmRpbWVuW2RpbV0uc3RyaWRlKQotKwlh ZGRfZGVzY3JfaW5mb19maWVsZCAoc3VicmFuZ2VfZGllLCBEV19BVF9ieXRlX3N0cmlkZSwKLSsJ CQkgICAgICBpbmZvLT5kaW1lbltkaW1dLnN0cmlkZSwKLSsJCQkgICAgICBpbmZvLT5iYXNlX2Rl Y2wpOwotKyAgICB9Ci0rCi0rICBnZW5fdHlwZV9kaWUgKGluZm8tPmVsZW1lbnRfdHlwZSwgY29u dGV4dF9kaWUpOwotKyAgYWRkX3R5cGVfYXR0cmlidXRlIChhcnJheV9kaWUsIGluZm8tPmVsZW1l bnRfdHlwZSwgMCwgMCwgY29udGV4dF9kaWUpOwotK30KLSsKLSAjaWYgMAotIHN0YXRpYyB2b2lk Ci0gZ2VuX2VudHJ5X3BvaW50X2RpZSAodHJlZSBkZWNsLCBkd19kaWVfcmVmIGNvbnRleHRfZGll KQotQEAgLTEyNDc4LDYgKzEyNjMyLDcgQEAgc3RhdGljIHZvaWQKLSBnZW5fdHlwZV9kaWUgKHRy ZWUgdHlwZSwgZHdfZGllX3JlZiBjb250ZXh0X2RpZSkKLSB7Ci0gICBpbnQgbmVlZF9wb3A7Ci0r ICBzdHJ1Y3QgYXJyYXlfZGVzY3JfaW5mbyBpbmZvOwotIAotICAgaWYgKHR5cGUgPT0gTlVMTF9U UkVFIHx8IHR5cGUgPT0gZXJyb3JfbWFya19ub2RlKQotICAgICByZXR1cm47Ci1AQCAtMTI0OTYs NiArMTI2NTEsMTYgQEAgZ2VuX3R5cGVfZGllICh0cmVlIHR5cGUsIGR3X2RpZV9yZWYgY29udAot ICAgICAgIHJldHVybjsKLSAgICAgfQotIAotKyAgLyogSWYgdGhpcyBpcyBhbiBhcnJheSB0eXBl IHdpdGggaGlkZGVuIGRlc2NyaXB0b3IsIGhhbmRsZSBpdCBmaXJzdC4gICovCi0rICBpZiAoIVRS RUVfQVNNX1dSSVRURU4gKHR5cGUpCi0rICAgICAgJiYgbGFuZ19ob29rcy50eXBlcy5nZXRfYXJy YXlfZGVzY3JfaW5mbwotKyAgICAgICYmIGxhbmdfaG9va3MudHlwZXMuZ2V0X2FycmF5X2Rlc2Ny X2luZm8gKHR5cGUsICZpbmZvKSkKLSsgICAgewotKyAgICAgIGdlbl9kZXNjcl9hcnJheV90eXBl X2RpZSAodHlwZSwgJmluZm8sIGNvbnRleHRfZGllKTsKLSsgICAgICBUUkVFX0FTTV9XUklUVEVO ICh0eXBlKSA9IDE7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0gICAvKiBXZSBhcmUgZ29p bmcgdG8gb3V0cHV0IGEgRElFIHRvIHJlcHJlc2VudCB0aGUgdW5xdWFsaWZpZWQgdmVyc2lvbgot ICAgICAgb2YgdGhpcyB0eXBlIChpLmUuIHdpdGhvdXQgYW55IGNvbnN0IG9yIHZvbGF0aWxlIHF1 YWxpZmllcnMpIHNvCi0gICAgICBnZXQgdGhlIG1haW4gdmFyaWFudCAoaS5lLiB0aGUgdW5xdWFs aWZpZWQgdmVyc2lvbikgb2YgdGhpcyB0eXBlCi0tLS0gZ2NjL2R3YXJmMm91dC5oLmpqCTIwMDct MDItMjAgMjI6Mzk6MTIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2NjL2R3YXJmMm91dC5oCTIwMDct MTEtMjQgMTU6MDA6MTQuMDAwMDAwMDAwICswMTAwCi1AQCAtMjcsMyArMjcsMTkgQEAgc3RydWN0 IGRpZV9zdHJ1Y3Q7Ci0gZXh0ZXJuIHZvaWQgZGVidWdfZHdhcmZfZGllIChzdHJ1Y3QgZGllX3N0 cnVjdCAqKTsKLSBleHRlcm4gdm9pZCBkd2FyZjJvdXRfc2V0X2RlbWFuZ2xlX25hbWVfZnVuYyAo Y29uc3QgY2hhciAqKCopIChjb25zdCBjaGFyICopKTsKLSBleHRlcm4gdm9pZCBkd2FyZjJvdXRf YWRkX2xpYnJhcnlfdW5pdF9pbmZvIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0rCi0r c3RydWN0IGFycmF5X2Rlc2NyX2luZm8KLSt7Ci0rICBpbnQgbmRpbWVuc2lvbnM7Ci0rICB0cmVl IGVsZW1lbnRfdHlwZTsKLSsgIHRyZWUgYmFzZV9kZWNsOwotKyAgdHJlZSBkYXRhX2xvY2F0aW9u OwotKyAgdHJlZSBhbGxvY2F0ZWQ7Ci0rICB0cmVlIGFzc29jaWF0ZWQ7Ci0rICBzdHJ1Y3QgYXJy YXlfZGVzY3JfZGltZW4KLSsgICAgewotKyAgICAgIHRyZWUgbG93ZXJfYm91bmQ7Ci0rICAgICAg dHJlZSB1cHBlcl9ib3VuZDsKLSsgICAgICB0cmVlIHN0cmlkZTsKLSsgICAgfSBkaW1lblsxMF07 Ci0rfTsKCmRpZmYgLS1naXQgYS9nY2M0MS1yaDQwNzI4MS5wYXRjaCBiL2djYzQxLXJoNDA3Mjgx LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWJkMDczLi4wMDAwMDAwCi0t LSBhL2djYzQxLXJoNDA3MjgxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAK LTIwMDctMTItMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JKiBnY2Mu Yy10b3J0dXJlL2V4ZWN1dGUvMjAwNzEyMDItMS5jOiBOZXcgdGVzdC4KLQotMjAwNy0wMi0xOSAg RXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KLQotCSogZ2ltcGxpZnkuYyAo Z2ltcGxpZnlfaW5pdF9jdG9yX3ByZWV2YWxfMSk6IERldGVjdCBwb3RlbnRpYWwgb3ZlcmxhcAot CWR1ZSB0byBjYWxscyB0byBmdW5jdGlvbnMgdGFraW5nIHBvaW50ZXJzIGFzIHBhcmFtZXRlcnMu Ci0KLQkqIGduYXQuZGcvc2VsZl9hZ2dyZWdhdGVfd2l0aF9jYWxsLmFkYjogTmV3IHRlc3QuCi0K LTIwMDYtMDgtMjEgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+Ci0KLQkq IGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2luaXRfY29uc3RydWN0b3IpIDxSRUNPUkQsVU5JT04sQVJS QVkgdHlwZXM+OgotCUFycmFuZ2UgZm9yIHRoZSB0ZW1wb3JhcnkgY2FwdHVyZXMgb2YgY29tcG9u ZW50cyBvdmVybGFwcGluZyB0aGUgbGhzCi0JdG8gaGFwcGVuIGJlZm9yZSB0aGUgbGhzIGlzIHBv c3NpYmx5IGNsZWFyZWQuCi0JCi0JKiBnbmF0LmRnL3NlbGZfYWdncmVnYXRlX3dpdGhfemVyb3Mu YWRiOiBOZXcgdGVzdC4KLQkqIGduYXQuZGcvc2VsZl9hZ2dyZWdhdGVfd2l0aF9hcnJheS5hZGI6 IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL2dpbXBsaWZ5LmMJKHJldmlzaW9uIDExNjI5OSkKLSsrKyBn Y2MvZ2ltcGxpZnkuYwkocmV2aXNpb24gMTE2MzAwKQotQEAgLTI2MzgsNiArMjYzOCwyMSBAQCBn aW1wbGlmeV9pbml0X2N0b3JfcHJlZXZhbF8xICh0cmVlICp0cCwgCi0gICAgICAgJiYgYWxpYXNf c2V0c19jb25mbGljdF9wIChkYXRhLT5saHNfYWxpYXNfc2V0LCBnZXRfYWxpYXNfc2V0ICh0KSkp Ci0gICAgIHJldHVybiB0OwotIAotKyAgLyogSWYgdGhlIGNvbnN0cnVjdG9yIGNvbXBvbmVudCBp cyBhIGNhbGwsIGRldGVybWluZSBpZiBpdCBjYW4gaGlkZSBhCi0rICAgICBwb3RlbnRpYWwgb3Zl cmxhcCB3aXRoIHRoZSBsaHMgdGhyb3VnaCBhbiBJTkRJUkVDVF9SRUYgbGlrZSBhYm92ZS4gICov Ci0rICBpZiAoVFJFRV9DT0RFICh0KSA9PSBDQUxMX0VYUFIpCi0rICAgIHsKLSsgICAgICB0cmVl IHR5cGUsIGZudHlwZSA9IFRSRUVfVFlQRSAoVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHQsIDAp KSk7Ci0rCi0rICAgICAgZm9yICh0eXBlID0gVFlQRV9BUkdfVFlQRVMgKGZudHlwZSk7IHR5cGU7 IHR5cGUgPSBUUkVFX0NIQUlOICh0eXBlKSkKLSsJaWYgKFBPSU5URVJfVFlQRV9QIChUUkVFX1ZB TFVFICh0eXBlKSkKLSsJICAgICYmICghZGF0YS0+bGhzX2Jhc2VfZGVjbCB8fCBUUkVFX0FERFJF U1NBQkxFIChkYXRhLT5saHNfYmFzZV9kZWNsKSkKLSsJICAgICYmIGFsaWFzX3NldHNfY29uZmxp Y3RfcCAoZGF0YS0+bGhzX2FsaWFzX3NldCwKLSsJCQkJICAgICAgZ2V0X2FsaWFzX3NldAotKwkJ CQkgICAgICAgIChUUkVFX1RZUEUgKFRSRUVfVkFMVUUgKHR5cGUpKSkpKQotKwkgIHJldHVybiB0 OwotKyAgICB9Ci0rCi0gICBpZiAoSVNfVFlQRV9PUl9ERUNMX1AgKHQpKQotICAgICAqd2Fsa19z dWJ0cmVlcyA9IDA7Ci0gICByZXR1cm4gTlVMTDsKLUBAIC0zMDYxLDYgKzMwNjEsMjAgQEAgZ2lt cGxpZnlfaW5pdF9jb25zdHJ1Y3RvciAodHJlZSAqZXhwcl9wLAotIAkgICAgICB9Ci0gCSAgfQot IAotKwkvKiBJZiB0aGVyZSBhcmUgbm9uemVybyBlbGVtZW50cywgcHJlLWV2YWx1YXRlIHRvIGNh cHR1cmUgZWxlbWVudHMKLSsJICAgb3ZlcmxhcHBpbmcgd2l0aCB0aGUgbGhzIGludG8gdGVtcG9y YXJpZXMuICBXZSBtdXN0IGRvIHRoaXMgYmVmb3JlCi0rCSAgIGNsZWFyaW5nIHRvIGZldGNoIHRo ZSB2YWx1ZXMgYmVmb3JlIHRoZXkgYXJlIHplcm9lZC1vdXQuICAqLwotKwlpZiAobnVtX25vbnpl cm9fZWxlbWVudHMgPiAwKQotKwkgIHsKLSsJICAgIHByZWV2YWxfZGF0YS5saHNfYmFzZV9kZWNs ID0gZ2V0X2Jhc2VfYWRkcmVzcyAob2JqZWN0KTsKLSsJICAgIGlmICghREVDTF9QIChwcmVldmFs X2RhdGEubGhzX2Jhc2VfZGVjbCkpCi0rCSAgICAgIHByZWV2YWxfZGF0YS5saHNfYmFzZV9kZWNs ID0gTlVMTDsKLSsJICAgIHByZWV2YWxfZGF0YS5saHNfYWxpYXNfc2V0ID0gZ2V0X2FsaWFzX3Nl dCAob2JqZWN0KTsKLSsKLSsJICAgIGdpbXBsaWZ5X2luaXRfY3Rvcl9wcmVldmFsICgmVFJFRV9P UEVSQU5EICgqZXhwcl9wLCAxKSwKLSsJCQkJCXByZV9wLCBwb3N0X3AsICZwcmVldmFsX2RhdGEp OwotKwkgIH0KLSsKLSAJaWYgKGNsZWFyZWQpCi0gCSAgewotIAkgICAgLyogWmFwIHRoZSBDT05T VFJVQ1RPUiBlbGVtZW50IGxpc3QsIHdoaWNoIHNpbXBsaWZpZXMgdGhpcyBjYXNlLgotQEAgLTMw NzYsMTYgKzMwOTAsNyBAQCBnaW1wbGlmeV9pbml0X2NvbnN0cnVjdG9yICh0cmVlICpleHByX3As Ci0gCSAgIGVsZW1lbnRzIGluIHRoZSBjb25zdHJ1Y3RvciwgYWRkIGFzc2lnbm1lbnRzIHRvIHRo ZSBpbmRpdmlkdWFsCi0gCSAgIHNjYWxhciBmaWVsZHMgb2YgdGhlIG9iamVjdC4gICovCi0gCWlm ICghY2xlYXJlZCB8fCBudW1fbm9uemVyb19lbGVtZW50cyA+IDApCi0tCSAgewotLQkgICAgcHJl ZXZhbF9kYXRhLmxoc19iYXNlX2RlY2wgPSBnZXRfYmFzZV9hZGRyZXNzIChvYmplY3QpOwotLQkg ICAgaWYgKCFERUNMX1AgKHByZWV2YWxfZGF0YS5saHNfYmFzZV9kZWNsKSkKLS0JICAgICAgcHJl ZXZhbF9kYXRhLmxoc19iYXNlX2RlY2wgPSBOVUxMOwotLQkgICAgcHJlZXZhbF9kYXRhLmxoc19h bGlhc19zZXQgPSBnZXRfYWxpYXNfc2V0IChvYmplY3QpOwotLQotLQkgICAgZ2ltcGxpZnlfaW5p dF9jdG9yX3ByZWV2YWwgKCZUUkVFX09QRVJBTkQgKCpleHByX3AsIDEpLAotLQkJCQkJcHJlX3As IHBvc3RfcCwgJnByZWV2YWxfZGF0YSk7Ci0tCSAgICBnaW1wbGlmeV9pbml0X2N0b3JfZXZhbCAo b2JqZWN0LCBlbHRzLCBwcmVfcCwgY2xlYXJlZCk7Ci0tCSAgfQotKwkgIGdpbXBsaWZ5X2luaXRf Y3Rvcl9ldmFsIChvYmplY3QsIGVsdHMsIHByZV9wLCBjbGVhcmVkKTsKLSAKLSAJKmV4cHJfcCA9 IE5VTExfVFJFRTsKLSAgICAgICB9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4 ZWN1dGUvMjAwNzEyMDItMS5jLmpqCTIwMDctMTItMDIgMTk6MjY6MTkuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4ZWN1dGUvMjAwNzEyMDItMS5jCTIw MDctMTItMDIgMTk6MjQ6MjguMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDI1IEBACi0rZXh0 ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOwotK3N0cnVjdCBUIHsgaW50IHQ7IGludCByWzhdOyB9Owot K3N0cnVjdCBTIHsgaW50IGE7IGludCBiOyBpbnQgY1s2XTsgc3RydWN0IFQgZDsgfTsKLSsKLStf X2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQKLStmb28gKHN0cnVjdCBTICpzKQotK3sKLSsg ICpzID0gKHN0cnVjdCBTKSB7IHMtPmIsIHMtPmEsIHsgMCwgMCwgMCwgMCwgMCwgMCB9LCBzLT5k IH07Ci0rfQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgc3RydWN0IFMgcyA9IHsgNiwg MTIsIHsgMSwgMiwgMywgNCwgNSwgNiB9LAotKwkJIHsgNywgeyA4LCA5LCAxMCwgMTEsIDEyLCAx MywgMTQsIDE1IH0gfSB9OwotKyAgZm9vICgmcyk7Ci0rICBpZiAocy5hICE9IDEyIHx8IHMuYiAh PSA2Ci0rICAgICAgfHwgcy5jWzBdIHx8IHMuY1sxXSB8fCBzLmNbMl0gfHwgcy5jWzNdIHx8IHMu Y1s0XSB8fCBzLmNbNV0pCi0rICAgIGFib3J0ICgpOwotKyAgaWYgKHMuZC50ICE9IDcgfHwgcy5k LnJbMF0gIT0gOCB8fCBzLmQuclsxXSAhPSA5IHx8IHMuZC5yWzJdICE9IDEwCi0rICAgICAgfHwg cy5kLnJbM10gIT0gMTEgfHwgcy5kLnJbNF0gIT0gMTIgfHwgcy5kLnJbNV0gIT0gMTMKLSsgICAg ICB8fCBzLmQucls2XSAhPSAxNCB8fCBzLmQucls3XSAhPSAxNSkKLSsgICAgYWJvcnQgKCk7Ci0r ICByZXR1cm4gMDsKLSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nbmF0LmRnL3NlbGZfYWdncmVnYXRl X3dpdGhfemVyb3MuYWRiCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUvZ25hdC5kZy9z ZWxmX2FnZ3JlZ2F0ZV93aXRoX3plcm9zLmFkYgkocmV2aXNpb24gMTE2MzAwKQotQEAgLTAsMCAr MSwxOSBAQAotKy0tIHsgZGctZG8gcnVuIH0KLSsKLStwcm9jZWR1cmUgc2VsZl9hZ2dyZWdhdGVf d2l0aF96ZXJvcyBpcwotKwotKyAgIHR5cGUgU2Vuc29yIGlzIHJlY29yZAotKyAgICAgIFZhbHVl ICA6IE5hdHVyYWw7Ci0rICAgICAgQSwgQiwgQywgRCwgRSwgRiwgRywgSCwgSSwgSiwgSywgTCwg TSA6IE5hdHVyYWw7Ci0rICAgZW5kIHJlY29yZDsKLSsKLSsgICBQcmVzc3VyZSA6IFNlbnNvcjsK LSsKLStiZWdpbgotKyAgIFByZXNzdXJlLlZhbHVlIDo9IDI1NjsKLSsgICBQcmVzc3VyZSA6PSAo UHJlc3N1cmUuVmFsdWUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApOwot KwotKyAgIGlmIFByZXNzdXJlLlZhbHVlIC89IDI1NiB0aGVuCi0rICAgICAgcmFpc2UgUHJvZ3Jh bV9FcnJvcjsKLSsgICBlbmQgaWY7Ci0rZW5kOwotLS0tIGdjYy90ZXN0c3VpdGUvZ25hdC5kZy9z ZWxmX2FnZ3JlZ2F0ZV93aXRoX2FycmF5LmFkYgkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1 aXRlL2duYXQuZGcvc2VsZl9hZ2dyZWdhdGVfd2l0aF9hcnJheS5hZGIJKHJldmlzaW9uIDExNjMw MCkKLUBAIC0wLDAgKzEsMjEgQEAKLSstLSB7IGRnLWRvIHJ1biB9Ci0rCi0rcHJvY2VkdXJlIHNl bGZfYWdncmVnYXRlX3dpdGhfYXJyYXkgaXMKLSsKLSsgICB0eXBlIFZhbHVlX0JvdW5kcyBpcyBh cnJheSAoMSAuLiAyKSBvZiBOYXR1cmFsOwotKwotKyAgIHR5cGUgU2Vuc29yIGlzIHJlY29yZAot KyAgICAgIFZhbHVlICA6IE5hdHVyYWw7Ci0rICAgICAgQm91bmRzIDogVmFsdWVfQm91bmRzOwot KyAgIGVuZCByZWNvcmQ7Ci0rCi0rICAgUHJlc3N1cmUgOiBTZW5zb3I7Ci0rCi0rYmVnaW4KLSsg ICBQcmVzc3VyZS5WYWx1ZSA6PSAyNTY7Ci0rICAgUHJlc3N1cmUgOj0gKFZhbHVlID0+IFByZXNz dXJlLlZhbHVlLCBCb3VuZHMgPT4gKDEsIDIpKTsKLSsKLSsgICBpZiBQcmVzc3VyZS5WYWx1ZSAv PSAyNTYgdGhlbgotKyAgICAgIHJhaXNlIFByb2dyYW1fRXJyb3I7Ci0rICAgZW5kIGlmOwotK2Vu ZDsKLS0tLSBnY2MvdGVzdHN1aXRlL2duYXQuZGcvc2VsZl9hZ2dyZWdhdGVfd2l0aF9jYWxsLmFk YgkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2duYXQuZGcvc2VsZl9hZ2dyZWdhdGVf d2l0aF9jYWxsLmFkYgkocmV2aXNpb24gMTIyMTM0KQotQEAgLTAsMCArMSwzMCBAQAotKy0tIHsg ZGctZG8gcnVuIH0KLSstLSB7IGRnLW9wdGlvbnMgIi1PMiIgfQotKwotK3Byb2NlZHVyZSBzZWxm X2FnZ3JlZ2F0ZV93aXRoX2NhbGwgaXMKLSsKLSsgICB0eXBlIFZhbHVlcyBpcyBhcnJheSAoMSAu LiA4KSBvZiBOYXR1cmFsOwotKwotKyAgIHR5cGUgVmVjdG9yIGlzIHJlY29yZAotKyAgICAgIENv bXBvbmVudHMgOiBWYWx1ZXM7Ci0rICAgZW5kIHJlY29yZDsKLSsKLSsgICBmdW5jdGlvbiBDbG9u ZSAoQ29tcG9uZW50czogVmFsdWVzKSByZXR1cm4gVmFsdWVzIGlzCi0rICAgYmVnaW4KLSsgICAg ICByZXR1cm4gQ29tcG9uZW50czsKLSsgICBlbmQ7Ci0rCi0rICAgcHJvY2VkdXJlIFByb2Nlc3Mg KFYgOiBpbiBvdXQgVmVjdG9yKSBpcwotKyAgIGJlZ2luCi0rICAgICAgVi5Db21wb25lbnRzIChW YWx1ZXMnRmlyc3QpIDo9IDE7Ci0rICAgICAgViA6PSAoQ29tcG9uZW50cyA9PiBDbG9uZSAoVi5D b21wb25lbnRzKSk7Ci0rCi0rICAgICAgaWYgVi5Db21wb25lbnRzIChWYWx1ZXMnRmlyc3QpIC89 IDEgdGhlbgotKyAgICAgICAgIHJhaXNlIFByb2dyYW1fRXJyb3I7Ci0rICAgICAgZW5kIGlmOwot KyAgIGVuZDsKLSsKLSsgICBWIDogVmVjdG9yOwotK2JlZ2luCi0rICAgUHJvY2VzcyAoVik7Ci0r ZW5kOwoKZGlmZiAtLWdpdCBhL2djYzQxLXZpcnR1YWwtaW5saW5lLWJhY2t0cmFjZS5wYXRjaCBi L2djYzQxLXZpcnR1YWwtaW5saW5lLWJhY2t0cmFjZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMjIxNWY3Yy4uMDAwMDAwMAotLS0gYS9nY2M0MS12aXJ0dWFsLWlubGluZS1i YWNrdHJhY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NTggKzAsMCBAQAotMjAwNy0wOS0y NyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQkqIGJ1aWx0aW5zLmMgKGV4 cGFuZF9idWlsdGluLCBleHBhbmRfYnVpbHRpbl9vYmplY3Rfc2l6ZSwKLQlleHBhbmRfYnVpbHRp bl9tZW1vcnlfY2hrLCBtYXliZV9lbWl0X2Noa193YXJuaW5nLAotCW1heWJlX2VtaXRfc3ByaW50 Zl9jaGtfd2FybmluZyk6IFVzZSBuZXcgJUsgZm9ybWF0IHN0cmluZyBzcGVjaWZpZXIKLQlmb3Ig ZGlhZ25vc3RpY3MuCi0JKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSk6IExpa2V3aXNlLgot CSogbGFuZ2hvb2tzLWRlZi5oIChzdHJ1Y3QgZGlhZ25vc3RpY19pbmZvKTogQWRkIGZvcndhcmQg ZGVjbC4KLQkobGhkX3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogQWRkIHRoaXJkIGFyZ3VtZW50Lgot CSogbGFuZ2hvb2tzLmggKHN0cnVjdCBkaWFnbm9zdGljX2luZm8pOiBBZGQgZm9yd2FyZCBkZWNs LgotCShzdHJ1Y3QgbGFuZ19ob29rcyk6IEFkZCB0aGlyZCBhcmd1bWVudCB0byBwcmludF9lcnJv cl9mdW5jdGlvbi4KLQkqIGRpYWdub3N0aWMuaCAoZGlhZ25vc3RpY19pbmZvKTogQWRkIGFic3Ry YWN0X29yaWdpbiBmaWVsZC4KLQkoZGlhZ25vc3RpY19sYXN0X2Z1bmN0aW9uX2NoYW5nZWQsIGRp YWdub3N0aWNfc2V0X2xhc3RfZnVuY3Rpb24pOiBBZGQKLQlzZWNvbmQgYXJndW1lbnQuCi0JKGRp YWdub3N0aWNfcmVwb3J0X2N1cnJlbnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KLQkqIHRvcGxldi5j IChhbm5vdW5jZV9mdW5jdGlvbik6IFBhc3MgTlVMTCBhcyBzZWNvbmQgYXJndW1lbnQgdG8KLQlk aWFnbm9zdGljX3NldF9sYXN0X2Z1bmN0aW9uLgotCSogZGlhZ25vc3RpYy5jIChkaWFnbm9zdGlj X3JlcG9ydF9jdXJyZW50X2Z1bmN0aW9uKTogQWRkIHNlY29uZAotCWFyZ3VtZW50LCBwYXNzIGl0 IGFzIHRoaXJkIGFyZ3VtZW50IHRvIGxhbmdfaG9va3MucHJpbnRfZXJyb3JfZnVuY3Rpb24uCi0J KGRlZmF1bHRfZGlhZ25vc3RpY19zdGFydGVyKTogUGFzcyBESUFHTk9TVElDIGFzIHNlY29uZCBh cmd1bWVudAotCXRvIGRpYWdub3N0aWNfcmVwb3J0X2N1cnJlbnRfZnVuY3Rpb24uCi0JKGRpYWdu b3N0aWNfcmVwb3J0X2RpYWdub3N0aWMpOiBJbml0aWFsaXplIGRpYWdub3N0aWMtPmFic3RyYWN0 X29yaWdpbgotCWFuZCBtZXNzYWdlLmFic3RyYWN0X29yaWdpbi4KLQkodmVyYmF0aW0pOiBJbml0 aWFsaXplIGFic3RyYWN0X29yaWdpbi4KLQkqIHByZXR0eS1wcmludC5oICh0ZXh0X2luZm8pOiBB ZGQgYWJzdHJhY3Rfb3JpZ2luIGZpZWxkLgotCSogcHJldHR5LXByaW50LmMgKHBwX2Jhc2VfZm9y bWF0KTogSGFuZGxlICVLLgotCSogbGFuZ2hvb2tzLmMgKGxoZF9wcmludF9lcnJvcl9mdW5jdGlv bik6IEFkZCB0aGlyZCBhcmd1bWVudC4gIElmCi0JZGlhZ25vc3RpYy0+YWJzdHJhY3Rfb3JpZ2lu LCBwcmludCB2aXJ0dWFsIGJhY2t0cmFjZS4KLQkqIGMtZm9ybWF0LmMgKGdjY19kaWFnX2NoYXJf dGFibGUsIGdjY190ZGlhZ19jaGFyX3RhYmxlLAotCWdjY19jZGlhZ19jaGFyX3RhYmxlLCBnY2Nf Y3h4ZGlhZ19jaGFyX3RhYmxlKTogU3VwcG9ydCAlSy4KLQkoaW5pdF9keW5hbWljX2RpYWdfaW5m byk6IExpa2V3aXNlLgotY3AvCi0JKiBlcnJvci5jIChjeHhfcHJpbnRfZXJyb3JfZnVuY3Rpb24p OiBBZGQgdGhpcmQgYXJndW1lbnQsIHBhc3MKLQlpdCBvdmVyIHRvIGxoZF9wcmludF9lcnJvcl9m dW5jdGlvbi4KLQkoY3BfcHJpbnRfZXJyb3JfZnVuY3Rpb24pOiBJZiBkaWFnbm9zdGljLT5hYnN0 cmFjdF9vcmlnaW4sIHByaW50Ci0JdmlydHVhbCBiYWNrdHJhY2UuCi0JKiBjcC10cmVlLmggKHN0 cnVjdCBkaWFnbm9zdGljX2luZm8pOiBOZXcgZm9yd2FyZCBkZWNsLgotCShjeHhfcHJpbnRfZXJy b3JfZnVuY3Rpb24pOiBBZGQgdGhpcmQgYXJndW1lbnQuCi10ZXN0c3VpdGUvCi0JKiBsaWIvcHJ1 bmUuZXhwOiBQcnVuZSBhbHNvICJeSW4gZnVuY3Rpb24gLiokIiBsaW5lcyBhbmQKLQkiXiAgICBp bmxpbmVkIGZyb20gLiokIiBsaW5lcy4KLWphdmEvCi0JKiBsYW5nLmMgKGphdmFfcHJpbnRfZXJy b3JfZnVuY3Rpb24pOiBBZGQgdGhpcmQgYXJndW1lbnQuCi0KLS0tLSBnY2MvamF2YS9sYW5nLmMu amoJMjAwNy0wMi0yMCAyMjozNTowOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvamF2YS9sYW5n LmMJMjAwNy0wOS0yOCAyMjo0NzozOC4wMDAwMDAwMDAgKzAyMDAKLUBAIC01NSw3ICs1NSw4IEBA IHN0YXRpYyBib29sIGphdmFfcG9zdF9vcHRpb25zIChjb25zdCBjaGEKLSBzdGF0aWMgaW50IGph dmFfaGFuZGxlX29wdGlvbiAoc2l6ZV90IHNjb2RlLCBjb25zdCBjaGFyICphcmcsIGludCB2YWx1 ZSk7Ci0gc3RhdGljIHZvaWQgcHV0X2RlY2xfc3RyaW5nIChjb25zdCBjaGFyICosIGludCk7Ci0g c3RhdGljIHZvaWQgcHV0X2RlY2xfbm9kZSAodHJlZSk7Ci0tc3RhdGljIHZvaWQgamF2YV9wcmlu dF9lcnJvcl9mdW5jdGlvbiAoZGlhZ25vc3RpY19jb250ZXh0ICosIGNvbnN0IGNoYXIgKik7Ci0r c3RhdGljIHZvaWQgamF2YV9wcmludF9lcnJvcl9mdW5jdGlvbiAoZGlhZ25vc3RpY19jb250ZXh0 ICosIGNvbnN0IGNoYXIgKiwKLSsJCQkJICAgICAgIGRpYWdub3N0aWNfaW5mbyAqKTsKLSBzdGF0 aWMgdHJlZSBqYXZhX3RyZWVfaW5saW5pbmdfd2Fsa19zdWJ0cmVlcyAodHJlZSAqLCBpbnQgKiwg d2Fsa190cmVlX2ZuLAotIAkJCQkJICAgICAgdm9pZCAqLCBzdHJ1Y3QgcG9pbnRlcl9zZXRfdCAq KTsKLSBzdGF0aWMgaW50IG1lcmdlX2luaXRfdGVzdF9pbml0aWFsaXphdGlvbiAodm9pZCAqICos IHZvaWQgKik7Ci1AQCAtNTExLDcgKzUxMiw4IEBAIHN0YXRpYyBHVFkoKCkpIHRyZWUgbGFzdF9l cnJvcl9mdW5jdGlvbl8KLSBzdGF0aWMgR1RZKCgpKSB0cmVlIGxhc3RfZXJyb3JfZnVuY3Rpb247 Ci0gc3RhdGljIHZvaWQKLSBqYXZhX3ByaW50X2Vycm9yX2Z1bmN0aW9uIChkaWFnbm9zdGljX2Nv bnRleHQgKmNvbnRleHQgQVRUUklCVVRFX1VOVVNFRCwKLS0JCQkgICBjb25zdCBjaGFyICpmaWxl KQotKwkJCSAgIGNvbnN0IGNoYXIgKmZpbGUsCi0rCQkJICAgZGlhZ25vc3RpY19pbmZvICpkaWFn bm9zdGljIEFUVFJJQlVURV9VTlVTRUQpCi0gewotICAgLyogRG9uJ3QgcHJpbnQgZXJyb3IgbWVz c2FnZXMgd2l0aCBib2d1cyBmdW5jdGlvbiBwcm90b3R5cGVzLiAgKi8KLSAgIGlmIChpbmhpYml0 X2Vycm9yX2Z1bmN0aW9uX3ByaW50aW5nKQotLS0tIGdjYy9kaWFnbm9zdGljLmMuamoJMjAwNy0w Mi0yMCAyMjozOToxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvZGlhZ25vc3RpYy5jCTIwMDct MDktMjggMjI6NDU6MTkuMDAwMDAwMDAwICswMjAwCi1AQCAtMjcyLDEwICsyNzIsMTEgQEAgZGlh Z25vc3RpY19hY3Rpb25fYWZ0ZXJfb3V0cHV0IChkaWFnbm9zdAotIC8qIFByaW50cyBvdXQsIGlm IG5lY2Vzc2FyeSwgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24KLSAgICB0aGF0IGNh dXNlZCBhbiBlcnJvci4gIENhbGxlZCBmcm9tIGFsbCBlcnJvciBhbmQgd2FybmluZyBmdW5jdGlv bnMuICAqLwotIHZvaWQKLS1kaWFnbm9zdGljX3JlcG9ydF9jdXJyZW50X2Z1bmN0aW9uIChkaWFn bm9zdGljX2NvbnRleHQgKmNvbnRleHQpCi0rZGlhZ25vc3RpY19yZXBvcnRfY3VycmVudF9mdW5j dGlvbiAoZGlhZ25vc3RpY19jb250ZXh0ICpjb250ZXh0LAotKwkJCQkgICAgZGlhZ25vc3RpY19p bmZvICpkaWFnbm9zdGljKQotIHsKLSAgIGRpYWdub3N0aWNfcmVwb3J0X2N1cnJlbnRfbW9kdWxl IChjb250ZXh0KTsKLS0gIGxhbmdfaG9va3MucHJpbnRfZXJyb3JfZnVuY3Rpb24gKGNvbnRleHQs IGlucHV0X2ZpbGVuYW1lKTsKLSsgIGxhbmdfaG9va3MucHJpbnRfZXJyb3JfZnVuY3Rpb24gKGNv bnRleHQsIGlucHV0X2ZpbGVuYW1lLCBkaWFnbm9zdGljKTsKLSB9Ci0gCi0gdm9pZAotQEAgLTMx Myw3ICszMTQsNyBAQCBzdGF0aWMgdm9pZAotIGRlZmF1bHRfZGlhZ25vc3RpY19zdGFydGVyIChk aWFnbm9zdGljX2NvbnRleHQgKmNvbnRleHQsCi0gCQkJICAgIGRpYWdub3N0aWNfaW5mbyAqZGlh Z25vc3RpYykKLSB7Ci0tICBkaWFnbm9zdGljX3JlcG9ydF9jdXJyZW50X2Z1bmN0aW9uIChjb250 ZXh0KTsKLSsgIGRpYWdub3N0aWNfcmVwb3J0X2N1cnJlbnRfZnVuY3Rpb24gKGNvbnRleHQsIGRp YWdub3N0aWMpOwotICAgcHBfc2V0X3ByZWZpeCAoY29udGV4dC0+cHJpbnRlciwgZGlhZ25vc3Rp Y19idWlsZF9wcmVmaXggKGRpYWdub3N0aWMpKTsKLSB9Ci0gCi1AQCAtMzYxLDYgKzM2Miw4IEBA IGRpYWdub3N0aWNfcmVwb3J0X2RpYWdub3N0aWMgKGRpYWdub3N0aWMKLSAJCSAgICAgICIgWyIs IGNsX29wdGlvbnNbZGlhZ25vc3RpYy0+b3B0aW9uX2luZGV4XS5vcHRfdGV4dCwgIl0iLCBOVUxM KSk7Ci0gCi0gICAgICAgZGlhZ25vc3RpYy0+bWVzc2FnZS5sb2N1cyA9ICZkaWFnbm9zdGljLT5s b2NhdGlvbjsKLSsgICAgICBkaWFnbm9zdGljLT5tZXNzYWdlLmFic3RyYWN0X29yaWdpbiA9ICZk aWFnbm9zdGljLT5hYnN0cmFjdF9vcmlnaW47Ci0rICAgICAgZGlhZ25vc3RpYy0+YWJzdHJhY3Rf b3JpZ2luID0gTlVMTDsKLSAgICAgICBwcF9mb3JtYXQgKGNvbnRleHQtPnByaW50ZXIsICZkaWFn bm9zdGljLT5tZXNzYWdlKTsKLSAgICAgICAoKmRpYWdub3N0aWNfc3RhcnRlciAoY29udGV4dCkp IChjb250ZXh0LCBkaWFnbm9zdGljKTsKLSAgICAgICBwcF9vdXRwdXRfZm9ybWF0dGVkX3RleHQg KGNvbnRleHQtPnByaW50ZXIpOwotQEAgLTM2OCw2ICszNzEsNyBAQCBkaWFnbm9zdGljX3JlcG9y dF9kaWFnbm9zdGljIChkaWFnbm9zdGljCi0gICAgICAgcHBfZmx1c2ggKGNvbnRleHQtPnByaW50 ZXIpOwotICAgICAgIGRpYWdub3N0aWNfYWN0aW9uX2FmdGVyX291dHB1dCAoY29udGV4dCwgZGlh Z25vc3RpYyk7Ci0gICAgICAgZGlhZ25vc3RpYy0+bWVzc2FnZS5mb3JtYXRfc3BlYyA9IHNhdmVk X2Zvcm1hdF9zcGVjOwotKyAgICAgIGRpYWdub3N0aWMtPmFic3RyYWN0X29yaWdpbiA9IE5VTEw7 Ci0gICAgIH0KLSAKLSAgIGNvbnRleHQtPmxvY2stLTsKLUBAIC00MTksNiArNDIzLDcgQEAgdmVy YmF0aW0gKGNvbnN0IGNoYXIgKmdtc2dpZCwgLi4uKQotICAgdGV4dC5hcmdzX3B0ciA9ICZhcDsK LSAgIHRleHQuZm9ybWF0X3NwZWMgPSBfKGdtc2dpZCk7Ci0gICB0ZXh0LmxvY3VzID0gTlVMTDsK LSsgIHRleHQuYWJzdHJhY3Rfb3JpZ2luID0gTlVMTDsKLSAgIHBwX2Zvcm1hdF92ZXJiYXRpbSAo Z2xvYmFsX2RjLT5wcmludGVyLCAmdGV4dCk7Ci0gICBwcF9mbHVzaCAoZ2xvYmFsX2RjLT5wcmlu dGVyKTsKLSAgIHZhX2VuZCAoYXApOwotLS0tIGdjYy9idWlsdGlucy5jLmpqCTIwMDctMDktMjUg MTI6MjY6NTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2J1aWx0aW5zLmMJMjAwNy0wOS0yOCAy Mjo0NzowMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC01OTgyLDEzICs1OTgyLDEzIEBAIGV4cGFuZF9i dWlsdGluICh0cmVlIGV4cCwgcnR4IHRhcmdldCwgcnQKLSAgICAgY2FzZSBCVUlMVF9JTl9WQV9B UkdfUEFDSzoKLSAgICAgICAvKiBBbGwgdmFsaWQgdXNlcyBvZiBfX2J1aWx0aW5fdmFfYXJnX3Bh Y2sgKCkgYXJlIHJlbW92ZWQgZHVyaW5nCi0gCSBpbmxpbmluZy4gICovCi0tICAgICAgZXJyb3Ig KCJpbnZhbGlkIHVzZSBvZiAlPF9fYnVpbHRpbl92YV9hcmdfcGFjayAoKSU+Iik7Ci0rICAgICAg ZXJyb3IgKCIlS2ludmFsaWQgdXNlIG9mICU8X19idWlsdGluX3ZhX2FyZ19wYWNrICgpJT4iLCBl eHApOwotICAgICAgIHJldHVybiBjb25zdDBfcnR4OwotIAotICAgICBjYXNlIEJVSUxUX0lOX1ZB X0FSR19QQUNLX0xFTjoKLSAgICAgICAvKiBBbGwgdmFsaWQgdXNlcyBvZiBfX2J1aWx0aW5fdmFf YXJnX3BhY2tfbGVuICgpIGFyZSByZW1vdmVkIGR1cmluZwotIAkgaW5saW5pbmcuICAqLwotLSAg ICAgIGVycm9yICgiaW52YWxpZCB1c2Ugb2YgJTxfX2J1aWx0aW5fdmFfYXJnX3BhY2tfbGVuICgp JT4iKTsKLSsgICAgICBlcnJvciAoIiVLaW52YWxpZCB1c2Ugb2YgJTxfX2J1aWx0aW5fdmFfYXJn X3BhY2tfbGVuICgpJT4iLCBleHApOwotICAgICAgIHJldHVybiBjb25zdDBfcnR4OwotIAotICAg ICAgIC8qIFJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgZmlyc3QgYW5vbnltb3VzIHN0YWNrIGFy Zy4gICovCi1AQCAtMTAyODYsMTIgKzEwMjg2LDExIEBAIGV4cGFuZF9idWlsdGluX29iamVjdF9z aXplICh0cmVlIGV4cCkKLSAgIGludCBvYmplY3Rfc2l6ZV90eXBlOwotICAgdHJlZSBmbmRlY2wg PSBnZXRfY2FsbGVlX2ZuZGVjbCAoZXhwKTsKLSAgIHRyZWUgYXJnbGlzdCA9IFRSRUVfT1BFUkFO RCAoZXhwLCAxKTsKLS0gIGxvY2F0aW9uX3QgbG9jdXMgPSBFWFBSX0xPQ0FUSU9OIChleHApOwot IAotICAgaWYgKCF2YWxpZGF0ZV9hcmdsaXN0IChhcmdsaXN0LCBQT0lOVEVSX1RZUEUsIElOVEVH RVJfVFlQRSwgVk9JRF9UWVBFKSkKLSAgICAgewotLSAgICAgIGVycm9yICgiJUhmaXJzdCBhcmd1 bWVudCBvZiAlRCBtdXN0IGJlIGEgcG9pbnRlciwgc2Vjb25kIGludGVnZXIgY29uc3RhbnQiLAot LQkgICAgICZsb2N1cywgZm5kZWNsKTsKLSsgICAgICBlcnJvciAoIiVLZmlyc3QgYXJndW1lbnQg b2YgJUQgbXVzdCBiZSBhIHBvaW50ZXIsIHNlY29uZCBpbnRlZ2VyIGNvbnN0YW50IiwKLSsJICAg ICBleHAsIGZuZGVjbCk7Ci0gICAgICAgZXhwYW5kX2J1aWx0aW5fdHJhcCAoKTsKLSAgICAgICBy ZXR1cm4gY29uc3QwX3J0eDsKLSAgICAgfQotQEAgLTEwMzAzLDggKzEwMzAyLDggQEAgZXhwYW5k X2J1aWx0aW5fb2JqZWN0X3NpemUgKHRyZWUgZXhwKQotICAgICAgIHx8IHRyZWVfaW50X2NzdF9z Z24gKG9zdCkgPCAwCi0gICAgICAgfHwgY29tcGFyZV90cmVlX2ludCAob3N0LCAzKSA+IDApCi0g ICAgIHsKLS0gICAgICBlcnJvciAoIiVIbGFzdCBhcmd1bWVudCBvZiAlRCBpcyBub3QgaW50ZWdl ciBjb25zdGFudCBiZXR3ZWVuIDAgYW5kIDMiLAotLQkgICAgICZsb2N1cywgZm5kZWNsKTsKLSsg ICAgICBlcnJvciAoIiVLbGFzdCBhcmd1bWVudCBvZiAlRCBpcyBub3QgaW50ZWdlciBjb25zdGFu dCBiZXR3ZWVuIDAgYW5kIDMiLAotKwkgICAgIGV4cCwgZm5kZWNsKTsKLSAgICAgICBleHBhbmRf YnVpbHRpbl90cmFwICgpOwotICAgICAgIHJldHVybiBjb25zdDBfcnR4OwotICAgICB9Ci1AQCAt MTAzNDgsOSArMTAzNDcsOCBAQCBleHBhbmRfYnVpbHRpbl9tZW1vcnlfY2hrICh0cmVlIGV4cCwg cnR4Ci0gCi0gICAgICAgaWYgKCEgaW50ZWdlcl9hbGxfb25lc3AgKHNpemUpICYmIHRyZWVfaW50 X2NzdF9sdCAoc2l6ZSwgbGVuKSkKLSAJewotLQkgIGxvY2F0aW9uX3QgbG9jdXMgPSBFWFBSX0xP Q0FUSU9OIChleHApOwotLQkgIHdhcm5pbmcgKDAsICIlSGNhbGwgdG8gJUQgd2lsbCBhbHdheXMg b3ZlcmZsb3cgZGVzdGluYXRpb24gYnVmZmVyIiwKLS0JCSAgICZsb2N1cywgZ2V0X2NhbGxlZV9m bmRlY2wgKGV4cCkpOwotKwkgIHdhcm5pbmcgKDAsICIlS2NhbGwgdG8gJUQgd2lsbCBhbHdheXMg b3ZlcmZsb3cgZGVzdGluYXRpb24gYnVmZmVyIiwKLSsJCSAgIGV4cCwgZ2V0X2NhbGxlZV9mbmRl Y2wgKGV4cCkpOwotIAkgIHJldHVybiAwOwotIAl9Ci0gCi1AQCAtMTA0NjMsNyArMTA0NjEsNiBA QCBtYXliZV9lbWl0X2Noa193YXJuaW5nICh0cmVlIGV4cCwgZW51bSBiCi0gICBpbnQgYXJnX21h c2ssIGlzX3N0cmxlbiA9IDA7Ci0gICB0cmVlIGFyZ2xpc3QgPSBUUkVFX09QRVJBTkQgKGV4cCwg MSksIGE7Ci0gICB0cmVlIGxlbiwgc2l6ZTsKLS0gIGxvY2F0aW9uX3QgbG9jdXM7Ci0gCi0gICBz d2l0Y2ggKGZjb2RlKQotICAgICB7Ci1AQCAtMTA1MjUsOSArMTA1MjIsOCBAQCBtYXliZV9lbWl0 X2Noa193YXJuaW5nICh0cmVlIGV4cCwgZW51bSBiCi0gICAgICAgc3JjID0gY19zdHJsZW4gKHNy YywgMSk7Ci0gICAgICAgaWYgKCEgc3JjIHx8ICEgaG9zdF9pbnRlZ2VycCAoc3JjLCAxKSkKLSAJ ewotLQkgIGxvY3VzID0gRVhQUl9MT0NBVElPTiAoZXhwKTsKLS0JICB3YXJuaW5nICgwLCAiJUhj YWxsIHRvICVEIG1pZ2h0IG92ZXJmbG93IGRlc3RpbmF0aW9uIGJ1ZmZlciIsCi0tCQkgICAmbG9j dXMsIGdldF9jYWxsZWVfZm5kZWNsIChleHApKTsKLSsJICB3YXJuaW5nICgwLCAiJUtjYWxsIHRv ICVEIG1pZ2h0IG92ZXJmbG93IGRlc3RpbmF0aW9uIGJ1ZmZlciIsCi0rCQkgICBleHAsIGdldF9j YWxsZWVfZm5kZWNsIChleHApKTsKLSAJICByZXR1cm47Ci0gCX0KLSAgICAgICBlbHNlIGlmICh0 cmVlX2ludF9jc3RfbHQgKHNyYywgc2l6ZSkpCi1AQCAtMTA1MzYsOSArMTA1MzIsOCBAQCBtYXli ZV9lbWl0X2Noa193YXJuaW5nICh0cmVlIGV4cCwgZW51bSBiCi0gICBlbHNlIGlmICghIGhvc3Rf aW50ZWdlcnAgKGxlbiwgMSkgfHwgISB0cmVlX2ludF9jc3RfbHQgKHNpemUsIGxlbikpCi0gICAg IHJldHVybjsKLSAKLS0gIGxvY3VzID0gRVhQUl9MT0NBVElPTiAoZXhwKTsKLS0gIHdhcm5pbmcg KDAsICIlSGNhbGwgdG8gJUQgd2lsbCBhbHdheXMgb3ZlcmZsb3cgZGVzdGluYXRpb24gYnVmZmVy IiwKLS0JICAgJmxvY3VzLCBnZXRfY2FsbGVlX2ZuZGVjbCAoZXhwKSk7Ci0rICB3YXJuaW5nICgw LCAiJUtjYWxsIHRvICVEIHdpbGwgYWx3YXlzIG92ZXJmbG93IGRlc3RpbmF0aW9uIGJ1ZmZlciIs Ci0rCSAgIGV4cCwgZ2V0X2NhbGxlZV9mbmRlY2wgKGV4cCkpOwotIH0KLSAKLSAvKiBFbWl0IHdh cm5pbmcgaWYgYSBidWZmZXIgb3ZlcmZsb3cgaXMgZGV0ZWN0ZWQgYXQgY29tcGlsZSB0aW1lCi1A QCAtMTA2MDQsOSArMTA1OTksOCBAQCBtYXliZV9lbWl0X3NwcmludGZfY2hrX3dhcm5pbmcgKHRy ZWUgZXhwCi0gCi0gICBpZiAoISB0cmVlX2ludF9jc3RfbHQgKGxlbiwgc2l6ZSkpCi0gICAgIHsK LS0gICAgICBsb2NhdGlvbl90IGxvY3VzID0gRVhQUl9MT0NBVElPTiAoZXhwKTsKLS0gICAgICB3 YXJuaW5nICgwLCAiJUhjYWxsIHRvICVEIHdpbGwgYWx3YXlzIG92ZXJmbG93IGRlc3RpbmF0aW9u IGJ1ZmZlciIsCi0tCSAgICAgICAmbG9jdXMsIGdldF9jYWxsZWVfZm5kZWNsIChleHApKTsKLSsg ICAgICB3YXJuaW5nICgwLCAiJUtjYWxsIHRvICVEIHdpbGwgYWx3YXlzIG92ZXJmbG93IGRlc3Rp bmF0aW9uIGJ1ZmZlciIsCi0rCSAgICAgICBleHAsIGdldF9jYWxsZWVfZm5kZWNsIChleHApKTsK LSAgICAgfQotIH0KLSAKLS0tLSBnY2MvZGlhZ25vc3RpYy5oLmpqCTIwMDctMDItMjAgMjI6Mzk6 MTIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2NjL2RpYWdub3N0aWMuaAkyMDA3LTA5LTI4IDIyOjQ1 OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTM3LDEwICszNywxMyBAQCB0eXBlZGVmIGVudW0KLSAv KiBBIGRpYWdub3N0aWMgaXMgZGVzY3JpYmVkIGJ5IHRoZSBNRVNTQUdFIHRvIHNlbmQsIHRoZSBG SUxFIGFuZCBMSU5FIG9mCi0gICAgaXRzIGNvbnRleHQgYW5kIGl0cyBLSU5EIChpY2UsIGVycm9y LCB3YXJuaW5nLCBub3RlLCAuLi4pICBTZWUgY29tcGxldGUKLSAgICBsaXN0IGluIGRpYWdub3N0 aWMuZGVmLiAgKi8KLS10eXBlZGVmIHN0cnVjdAotK3R5cGVkZWYgc3RydWN0IGRpYWdub3N0aWNf aW5mbwotIHsKLSAgIHRleHRfaW5mbyBtZXNzYWdlOwotICAgbG9jYXRpb25fdCBsb2NhdGlvbjsK LSsgIC8qIFRSRUVfQkxPQ0sgaWYgdGhlIGRpYWdub3N0aWMgaXMgdG8gYmUgcmVwb3J0ZWQgaW4g c29tZSBpbmxpbmUKLSsgICAgIGZ1bmN0aW9uIGlubGluZWQgaW50byBvdGhlciBmdW5jdGlvbiwg b3RoZXJ3aXNlIE5VTEwuICAqLwotKyAgdHJlZSBhYnN0cmFjdF9vcmlnaW47Ci0gICAvKiBUaGUg a2luZCBvZiBkaWFnbm9zdGljIGl0IGlzIGFib3V0LiAgKi8KLSAgIGRpYWdub3N0aWNfdCBraW5k OwotICAgLyogV2hpY2ggT1BUXyogZGlyZWN0bHkgY29udHJvbHMgdGhpcyBkaWFnbm9zdGljLiAg Ki8KLUBAIC0xMzAsMTMgKzEzMywxNSBAQCBzdHJ1Y3QgZGlhZ25vc3RpY19jb250ZXh0Ci0gCi0g LyogVHJ1ZSBpZiB0aGUgbGFzdCBmdW5jdGlvbiBpbiB3aGljaCBhIGRpYWdub3N0aWMgd2FzIHJl cG9ydGVkIGlzCi0gICAgZGlmZmVyZW50IGZyb20gdGhlIGN1cnJlbnQgb25lLiAgKi8KLS0jZGVm aW5lIGRpYWdub3N0aWNfbGFzdF9mdW5jdGlvbl9jaGFuZ2VkKERDKSBcCi0tICAoKERDKS0+bGFz dF9mdW5jdGlvbiAhPSBjdXJyZW50X2Z1bmN0aW9uX2RlY2wpCi0rI2RlZmluZSBkaWFnbm9zdGlj X2xhc3RfZnVuY3Rpb25fY2hhbmdlZChEQywgREkpIFwKLSsgICgoREMpLT5sYXN0X2Z1bmN0aW9u ICE9ICgoREkpLT5hYnN0cmFjdF9vcmlnaW4gXAotKwkJCSAgID8gKERJKS0+YWJzdHJhY3Rfb3Jp Z2luIDogY3VycmVudF9mdW5jdGlvbl9kZWNsKSkKLSAKLSAvKiBSZW1lbWJlciB0aGUgY3VycmVu dCBmdW5jdGlvbiBhcyBiZWluZyB0aGUgbGFzdCBvbmUgaW4gd2hpY2ggd2UgcmVwb3J0Ci0gICAg YSBkaWFnbm9zdGljLiAgKi8KLS0jZGVmaW5lIGRpYWdub3N0aWNfc2V0X2xhc3RfZnVuY3Rpb24o REMpIFwKLS0gIChEQyktPmxhc3RfZnVuY3Rpb24gPSBjdXJyZW50X2Z1bmN0aW9uX2RlY2wKLSsj ZGVmaW5lIGRpYWdub3N0aWNfc2V0X2xhc3RfZnVuY3Rpb24oREMsIERJKSBcCi0rICAoREMpLT5s YXN0X2Z1bmN0aW9uID0gKCgoREkpICYmIChESSktPmFic3RyYWN0X29yaWdpbikgXAotKwkJCSA/ IChESSktPmFic3RyYWN0X29yaWdpbiA6IGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkKLSAKLSAvKiBU cnVlIGlmIHRoZSBsYXN0IG1vZHVsZSBvciBmaWxlIGluIHdoaWNoIGEgZGlhZ25vc3RpYyB3YXMg cmVwb3J0ZWQgaXMKLSAgICBkaWZmZXJlbnQgZnJvbSB0aGUgY3VycmVudCBvbmUuICAqLwotQEAg LTE3OCw3ICsxODMsOCBAQCBleHRlcm4gZGlhZ25vc3RpY19jb250ZXh0ICpnbG9iYWxfZGM7Ci0g LyogRGlhZ25vc3RpYyByZWxhdGVkIGZ1bmN0aW9ucy4gICovCi0gZXh0ZXJuIHZvaWQgZGlhZ25v c3RpY19pbml0aWFsaXplIChkaWFnbm9zdGljX2NvbnRleHQgKik7Ci0gZXh0ZXJuIHZvaWQgZGlh Z25vc3RpY19yZXBvcnRfY3VycmVudF9tb2R1bGUgKGRpYWdub3N0aWNfY29udGV4dCAqKTsKLS1l eHRlcm4gdm9pZCBkaWFnbm9zdGljX3JlcG9ydF9jdXJyZW50X2Z1bmN0aW9uIChkaWFnbm9zdGlj X2NvbnRleHQgKik7Ci0rZXh0ZXJuIHZvaWQgZGlhZ25vc3RpY19yZXBvcnRfY3VycmVudF9mdW5j dGlvbiAoZGlhZ25vc3RpY19jb250ZXh0ICosCi0rCQkJCQkJZGlhZ25vc3RpY19pbmZvICopOwot IGV4dGVybiB2b2lkIGRpYWdub3N0aWNfcmVwb3J0X2RpYWdub3N0aWMgKGRpYWdub3N0aWNfY29u dGV4dCAqLAotIAkJCQkJICBkaWFnbm9zdGljX2luZm8gKik7Ci0gI2lmZGVmIEFUVFJJQlVURV9H Q0NfRElBRwotLS0tIGdjYy90b3BsZXYuYy5qagkyMDA3LTA0LTAzIDEzOjE4OjI3LjAwMDAwMDAw MCArMDIwMAotKysrIGdjYy90b3BsZXYuYwkyMDA3LTA5LTI4IDIyOjQ1OjE5LjAwMDAwMDAwMCAr MDIwMAotQEAgLTQ0OCw3ICs0NDgsNyBAQCBhbm5vdW5jZV9mdW5jdGlvbiAodHJlZSBkZWNsKQot IAlmcHJpbnRmIChzdGRlcnIsICIgJXMiLCBsYW5nX2hvb2tzLmRlY2xfcHJpbnRhYmxlX25hbWUg KGRlY2wsIDIpKTsKLSAgICAgICBmZmx1c2ggKHN0ZGVycik7Ci0gICAgICAgcHBfbmVlZHNfbmV3 bGluZSAoZ2xvYmFsX2RjLT5wcmludGVyKSA9IHRydWU7Ci0tICAgICAgZGlhZ25vc3RpY19zZXRf bGFzdF9mdW5jdGlvbiAoZ2xvYmFsX2RjKTsKLSsgICAgICBkaWFnbm9zdGljX3NldF9sYXN0X2Z1 bmN0aW9uIChnbG9iYWxfZGMsIChkaWFnbm9zdGljX2luZm8gKikgTlVMTCk7Ci0gICAgIH0KLSB9 Ci0gCi0tLS0gZ2NjL3ByZXR0eS1wcmludC5jLmpqCTIwMDctMDItMjAgMjI6Mzk6MTIuMDAwMDAw MDAwICswMTAwCi0rKysgZ2NjL3ByZXR0eS1wcmludC5jCTIwMDctMDktMjggMjI6NDU6MTkuMDAw MDAwMDAwICswMjAwCi1AQCAtMTg4LDYgKzE4OCw3IEBAIHBwX2Jhc2VfaW5kZW50IChwcmV0dHlf cHJpbnRlciAqcHApCi0gICAgJU5zOiBsaWtld2lzZSwgYnV0IGxlbmd0aCBzcGVjaWZpZWQgYXMg Y29uc3RhbnQgaW4gdGhlIGZvcm1hdCBzdHJpbmcuCi0gICAgJUg6IGxvY2F0aW9uX3QuCi0gICAg JUo6IGEgZGVjbCB0cmVlLCBmcm9tIHdoaWNoIERFQ0xfU09VUkNFX0xPQ0FUSU9OIHdpbGwgYmUg cmVjb3JkZWQuCi0rICAgJUs6IGEgc3RhdGVtZW50LCBmcm9tIHdoaWNoIEVYUFJfTE9DQVRJT04g YW5kIFRSRUVfQkxPQ0sgd2lsbCBiZSByZWNvcmRlZC4KLSAgICBGbGFnICdxJzogcXVvdGUgZm9y bWF0dGVkIHRleHQgKG11c3QgY29tZSBpbW1lZGlhdGVseSBhZnRlciAnJScpLgotIAotICAgIEFy Z3VtZW50cyBjYW4gYmUgdXNlZCBzZXF1ZW50aWFsbHksIG9yIHRocm91Z2ggJU4kIHJlc3AuICpO JAotQEAgLTQ4Nyw2ICs0ODgsMzMgQEAgcHBfYmFzZV9mb3JtYXQgKHByZXR0eV9wcmludGVyICpw cCwgdGV4dAotIAkgIH0KLSAJICBicmVhazsKLSAKLSsJY2FzZSAnSyc6Ci0rCSAgewotKwkgICAg dHJlZSB0ID0gdmFfYXJnICgqdGV4dC0+YXJnc19wdHIsIHRyZWUpLCBibG9jazsKLSsJICAgIGdj Y19hc3NlcnQgKHRleHQtPmxvY3VzICE9IE5VTEwpOwotKwkgICAgKnRleHQtPmxvY3VzID0gRVhQ Ul9MT0NBVElPTiAodCk7Ci0rCSAgICBnY2NfYXNzZXJ0ICh0ZXh0LT5hYnN0cmFjdF9vcmlnaW4g IT0gTlVMTCk7Ci0rCSAgICBibG9jayA9IFRSRUVfQkxPQ0sgKHQpOwotKwkgICAgKnRleHQtPmFi c3RyYWN0X29yaWdpbiA9IE5VTEw7Ci0rCSAgICB3aGlsZSAoYmxvY2sKLSsJCSAgICYmIFRSRUVf Q09ERSAoYmxvY2spID09IEJMT0NLCi0rCQkgICAmJiBCTE9DS19BQlNUUkFDVF9PUklHSU4gKGJs b2NrKSkKLSsJICAgICAgewotKwkJdHJlZSBhbyA9IEJMT0NLX0FCU1RSQUNUX09SSUdJTiAoYmxv Y2spOwotKwotKwkJd2hpbGUgKFRSRUVfQ09ERSAoYW8pID09IEJMT0NLICYmIEJMT0NLX0FCU1RS QUNUX09SSUdJTiAoYW8pKQotKwkJICBhbyA9IEJMT0NLX0FCU1RSQUNUX09SSUdJTiAoYW8pOwot KwotKwkJaWYgKFRSRUVfQ09ERSAoYW8pID09IEZVTkNUSU9OX0RFQ0wpCi0rCQkgIHsKLSsJCSAg ICAqdGV4dC0+YWJzdHJhY3Rfb3JpZ2luID0gYmxvY2s7Ci0rCQkgICAgYnJlYWs7Ci0rCQkgIH0K LSsJCWJsb2NrID0gQkxPQ0tfU1VQRVJDT05URVhUIChibG9jayk7Ci0rCSAgICAgIH0KLSsJICB9 Ci0rCSAgYnJlYWs7Ci0rCi0gCWNhc2UgJy4nOgotIAkgIHsKLSAJICAgIGludCBuOwotLS0tIGdj Yy9wcmV0dHktcHJpbnQuaC5qagkyMDA3LTAyLTIwIDIyOjM5OjEyLjAwMDAwMDAwMCArMDEwMAot KysrIGdjYy9wcmV0dHktcHJpbnQuaAkyMDA3LTA5LTI4IDIyOjQ1OjE5LjAwMDAwMDAwMCArMDIw MAotQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgIHZhX2xpc3QgKmFyZ3NfcHRy OwotICAgaW50IGVycl9ubzsgIC8qIGZvciAlbSAqLwotICAgbG9jYXRpb25fdCAqbG9jdXM7Ci0r ICB0cmVlICphYnN0cmFjdF9vcmlnaW47Ci0gfSB0ZXh0X2luZm87Ci0gCi0gLyogSG93IG9mdGVu IGRpYWdub3N0aWNzIGFyZSBwcmVmaXhlZCBieSB0aGVpciBsb2NhdGlvbnM6Ci0tLS0gZ2NjL3Rl c3RzdWl0ZS9saWIvcHJ1bmUuZXhwLmpqCTIwMDctMDItMjAgMjI6Mzc6MDkuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9saWIvcHJ1bmUuZXhwCTIwMDctMDktMjggMjI6NDU6MTku MDAwMDAwMDAwICswMjAwCi1AQCAtMTksOSArMTksMTAgQEAKLSBwcm9jIHBydW5lX2djY19vdXRw dXQgeyB0ZXh0IH0gewotICAgICAjc2VuZF91c2VyICJCZWZvcmU6JHRleHRcbiIKLSAKLS0gICAg cmVnc3ViIC1hbGwgIihefFxuKVxbXlxuXF0qOiBJbiAoKHN0YXRpYyBtZW1iZXIgKT9mdW5jdGlv bnxtZW1iZXJ8bWV0aG9kfChjb3B5ICk/Y29uc3RydWN0b3J8ZGVzdHJ1Y3RvcnxpbnN0YW50aWF0 aW9ufHByb2dyYW18c3Vicm91dGluZXxibG9jay1kYXRhKSBcW15cblxdKiIgJHRleHQgIiIgdGV4 dAotKyAgICByZWdzdWIgLWFsbCAiKF58XG4pKFxbXlxuXF0qOiApP0luICgoc3RhdGljIG1lbWJl ciApP2Z1bmN0aW9ufG1lbWJlcnxtZXRob2R8KGNvcHkgKT9jb25zdHJ1Y3RvcnxkZXN0cnVjdG9y fGluc3RhbnRpYXRpb258cHJvZ3JhbXxzdWJyb3V0aW5lfGJsb2NrLWRhdGEpIFxbXlxuXF0qIiAk dGV4dCAiIiB0ZXh0Ci0gICAgIHJlZ3N1YiAtYWxsICIoXnxcbilcW15cblxdKjogQXQgKHRvcCBs ZXZlbHxnbG9iYWwgc2NvcGUpOlxbXlxuXF0qIiAkdGV4dCAiIiB0ZXh0Ci0gICAgIHJlZ3N1YiAt YWxsICIoXnxcbilcW15cblxdKjogICBpbnN0YW50aWF0ZWQgZnJvbSBcW15cblxdKiIgJHRleHQg IiIgdGV4dAotKyAgICByZWdzdWIgLWFsbCAiKF58XG4pICAgIGlubGluZWQgZnJvbSBcW15cblxd KiIgJHRleHQgIiIgdGV4dAotICAgICByZWdzdWIgLWFsbCAiKF58XG4pY29sbGVjdDI6IGxkIHJl dHVybmVkIFxbXlxuXF0qIiAkdGV4dCAiIiB0ZXh0Ci0gICAgIHJlZ3N1YiAtYWxsICIoXnxcbilj b2xsZWN0OiByZShjb21waWxpbmd8bGlua2luZylcW15cblxdKiIgJHRleHQgIiIgdGV4dAotICAg ICByZWdzdWIgLWFsbCAiKF58XG4pUGxlYXNlIHN1Ym1pdC4qaW5zdHJ1Y3Rpb25zXFteXG5cXSoi ICR0ZXh0ICIiIHRleHQKLS0tLSBnY2MvY3AvZXJyb3IuYy5qagkyMDA3LTA5LTI1IDExOjE1OjMx LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9jcC9lcnJvci5jCTIwMDctMDktMjggMjI6NDU6MTku MDAwMDAwMDAwICswMjAwCi1AQCAtMjE1MCw5ICsyMTUwLDEwIEBAIGN2X3RvX3N0cmluZyAodHJl ZSBwLCBpbnQgdikKLSAKLSAvKiBMYW5naG9vayBmb3IgcHJpbnRfZXJyb3JfZnVuY3Rpb24uICAq LwotIHZvaWQKLS1jeHhfcHJpbnRfZXJyb3JfZnVuY3Rpb24gKGRpYWdub3N0aWNfY29udGV4dCAq Y29udGV4dCwgY29uc3QgY2hhciAqZmlsZSkKLStjeHhfcHJpbnRfZXJyb3JfZnVuY3Rpb24gKGRp YWdub3N0aWNfY29udGV4dCAqY29udGV4dCwgY29uc3QgY2hhciAqZmlsZSwKLSsJCQkgIGRpYWdu b3N0aWNfaW5mbyAqZGlhZ25vc3RpYykKLSB7Ci0tICBsaGRfcHJpbnRfZXJyb3JfZnVuY3Rpb24g KGNvbnRleHQsIGZpbGUpOwotKyAgbGhkX3ByaW50X2Vycm9yX2Z1bmN0aW9uIChjb250ZXh0LCBm aWxlLCBkaWFnbm9zdGljKTsKLSAgIHBwX2Jhc2Vfc2V0X3ByZWZpeCAoY29udGV4dC0+cHJpbnRl ciwgZmlsZSk7Ci0gICBtYXliZV9wcmludF9pbnN0YW50aWF0aW9uX2NvbnRleHQgKGNvbnRleHQp OwotIH0KLUBAIC0yMTgwLDIzICsyMTgxLDEwNSBAQCBzdGF0aWMgdm9pZAotIGNwX3ByaW50X2Vy cm9yX2Z1bmN0aW9uIChkaWFnbm9zdGljX2NvbnRleHQgKmNvbnRleHQsCi0gCQkJIGRpYWdub3N0 aWNfaW5mbyAqZGlhZ25vc3RpYykKLSB7Ci0tICBpZiAoZGlhZ25vc3RpY19sYXN0X2Z1bmN0aW9u X2NoYW5nZWQgKGNvbnRleHQpKQotKyAgaWYgKGRpYWdub3N0aWNfbGFzdF9mdW5jdGlvbl9jaGFu Z2VkIChjb250ZXh0LCBkaWFnbm9zdGljKSkKLSAgICAgewotICAgICAgIGNvbnN0IGNoYXIgKm9s ZF9wcmVmaXggPSBjb250ZXh0LT5wcmludGVyLT5wcmVmaXg7Ci0gICAgICAgY29uc3QgY2hhciAq ZmlsZSA9IExPQ0FUSU9OX0ZJTEUgKGRpYWdub3N0aWMtPmxvY2F0aW9uKTsKLS0gICAgICBjaGFy ICpuZXdfcHJlZml4ID0gZmlsZSA/IGZpbGVfbmFtZV9hc19wcmVmaXggKGZpbGUpIDogTlVMTDsK LSsgICAgICB0cmVlIGFic3RyYWN0X29yaWdpbiA9IGRpYWdub3N0aWMtPmFic3RyYWN0X29yaWdp bjsKLSsgICAgICBjaGFyICpuZXdfcHJlZml4ID0gKGZpbGUgJiYgYWJzdHJhY3Rfb3JpZ2luID09 IE5VTEwpCi0rCQkJID8gZmlsZV9uYW1lX2FzX3ByZWZpeCAoZmlsZSkgOiBOVUxMOwotIAotICAg ICAgIHBwX2Jhc2Vfc2V0X3ByZWZpeCAoY29udGV4dC0+cHJpbnRlciwgbmV3X3ByZWZpeCk7Ci0g Ci0gICAgICAgaWYgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCA9PSBOVUxMKQotIAlwcF9iYXNlX3N0 cmluZyAoY29udGV4dC0+cHJpbnRlciwgIkF0IGdsb2JhbCBzY29wZToiKTsKLSAgICAgICBlbHNl Ci0tCXBwX3ByaW50ZiAoY29udGV4dC0+cHJpbnRlciwgIkluICVzICVxczoiLAotLQkJICAgZnVu Y3Rpb25fY2F0ZWdvcnkgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCksCi0tCQkgICBjeHhfcHJpbnRh YmxlX25hbWUgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCwgMikpOwotKwl7Ci0rCSAgdHJlZSBmbmRl Y2wsIGFvOwotKwotKwkgIGlmIChhYnN0cmFjdF9vcmlnaW4pCi0rCSAgICB7Ci0rCSAgICAgIGFv ID0gQkxPQ0tfQUJTVFJBQ1RfT1JJR0lOIChhYnN0cmFjdF9vcmlnaW4pOwotKwkgICAgICB3aGls ZSAoVFJFRV9DT0RFIChhbykgPT0gQkxPQ0sgJiYgQkxPQ0tfQUJTVFJBQ1RfT1JJR0lOIChhbykp Ci0rCQlhbyA9IEJMT0NLX0FCU1RSQUNUX09SSUdJTiAoYW8pOwotKwkgICAgICBnY2NfYXNzZXJ0 IChUUkVFX0NPREUgKGFvKSA9PSBGVU5DVElPTl9ERUNMKTsKLSsJICAgICAgZm5kZWNsID0gYW87 Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgZm5kZWNsID0gY3VycmVudF9mdW5jdGlvbl9kZWNs OwotKwotKwkgIHBwX3ByaW50ZiAoY29udGV4dC0+cHJpbnRlciwgIkluICVzICVxcyIsCi0rCQkg ICAgIGZ1bmN0aW9uX2NhdGVnb3J5IChmbmRlY2wpLAotKwkJICAgICBjeHhfcHJpbnRhYmxlX25h bWUgKGZuZGVjbCwgMikpOwotKwotKwkgIHdoaWxlIChhYnN0cmFjdF9vcmlnaW4pCi0rCSAgICB7 Ci0rCSAgICAgIGxvY2F0aW9uX3QgKmxvY3VzOwotKwkgICAgICB0cmVlIGJsb2NrID0gYWJzdHJh Y3Rfb3JpZ2luOwotKwotKwkgICAgICBsb2N1cyA9ICZCTE9DS19TT1VSQ0VfTE9DQVRJT04gKGJs b2NrKTsKLSsJICAgICAgZm5kZWNsID0gTlVMTDsKLSsJICAgICAgYmxvY2sgPSBCTE9DS19TVVBF UkNPTlRFWFQgKGJsb2NrKTsKLSsJICAgICAgd2hpbGUgKGJsb2NrICYmIFRSRUVfQ09ERSAoYmxv Y2spID09IEJMT0NLCi0rCQkgICAgICYmIEJMT0NLX0FCU1RSQUNUX09SSUdJTiAoYmxvY2spKQot KwkJewotKwkJICBhbyA9IEJMT0NLX0FCU1RSQUNUX09SSUdJTiAoYmxvY2spOwotKwotKwkJICB3 aGlsZSAoVFJFRV9DT0RFIChhbykgPT0gQkxPQ0sgJiYgQkxPQ0tfQUJTVFJBQ1RfT1JJR0lOIChh bykpCi0rCQkgICAgYW8gPSBCTE9DS19BQlNUUkFDVF9PUklHSU4gKGFvKTsKLSsKLSsJCSAgaWYg KFRSRUVfQ09ERSAoYW8pID09IEZVTkNUSU9OX0RFQ0wpCi0rCQkgICAgewotKwkJICAgICAgZm5k ZWNsID0gYW87Ci0rCQkgICAgICBicmVhazsKLSsJCSAgICB9Ci0rCQkgIGVsc2UgaWYgKFRSRUVf Q09ERSAoYW8pICE9IEJMT0NLKQotKwkJICAgIGJyZWFrOwotKwotKwkJICBibG9jayA9IEJMT0NL X1NVUEVSQ09OVEVYVCAoYmxvY2spOwotKwkJfQotKwkgICAgICBpZiAoZm5kZWNsKQotKwkJYWJz dHJhY3Rfb3JpZ2luID0gYmxvY2s7Ci0rCSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgd2hpbGUgKGJs b2NrICYmIFRSRUVfQ09ERSAoYmxvY2spID09IEJMT0NLKQotKwkJICAgIGJsb2NrID0gQkxPQ0tf U1VQRVJDT05URVhUIChibG9jayk7Ci0rCi0rCQkgIGlmIChUUkVFX0NPREUgKGJsb2NrKSA9PSBG VU5DVElPTl9ERUNMKQotKwkJICAgIGZuZGVjbCA9IGJsb2NrOwotKwkJICBhYnN0cmFjdF9vcmln aW4gPSBOVUxMOwotKwkJfQotKwkgICAgICBpZiAoZm5kZWNsKQotKwkJewotKwkJICBleHBhbmRl ZF9sb2NhdGlvbiBzID0gZXhwYW5kX2xvY2F0aW9uICgqbG9jdXMpOwotKwkJICBwcF9iYXNlX2No YXJhY3RlciAoY29udGV4dC0+cHJpbnRlciwgJywnKTsKLSsJCSAgcHBfYmFzZV9uZXdsaW5lIChj b250ZXh0LT5wcmludGVyKTsKLSsJCSAgaWYgKHMuZmlsZSAhPSBOVUxMKQotKwkJICAgIHsKLSsj aWZkZWYgVVNFX01BUFBFRF9MT0NBVElPTgotKwkJICAgICAgaWYgKGZsYWdfc2hvd19jb2x1bW4g JiYgcy5jb2x1bW4gIT0gMCkKLSsJCQlwcF9wcmludGYgKGNvbnRleHQtPnByaW50ZXIsCi0rCQkJ CSAgICIgICAgaW5saW5lZCBmcm9tICVxcyBhdCAlczolZDolZCIsCi0rCQkJCSAgIGN4eF9wcmlu dGFibGVfbmFtZSAoZm5kZWNsLCAyKSwKLSsJCQkJICAgcy5maWxlLCBzLmxpbmUsIHMuY29sdW1u KTsKLSsJCSAgICAgIGVsc2UKLSsjZW5kaWYKLSsJCQlwcF9wcmludGYgKGNvbnRleHQtPnByaW50 ZXIsCi0rCQkJCSAgICIgICAgaW5saW5lZCBmcm9tICVxcyBhdCAlczolZCIsCi0rCQkJCSAgIGN4 eF9wcmludGFibGVfbmFtZSAoZm5kZWNsLCAyKSwKLSsJCQkJICAgcy5maWxlLCBzLmxpbmUpOwot KwotKwkJICAgIH0KLSsJCSAgZWxzZQotKwkJICAgIHBwX3ByaW50ZiAoY29udGV4dC0+cHJpbnRl ciwgIiAgICBpbmxpbmVkIGZyb20gJXFzIiwKLSsJCQkgICAgICAgY3h4X3ByaW50YWJsZV9uYW1l IChmbmRlY2wsIDIpKTsKLSsJCX0KLSsJICAgIH0KLSsJICBwcF9iYXNlX2NoYXJhY3RlciAoY29u dGV4dC0+cHJpbnRlciwgJzonKTsKLSsJfQotICAgICAgIHBwX2Jhc2VfbmV3bGluZSAoY29udGV4 dC0+cHJpbnRlcik7Ci0gCi0tICAgICAgZGlhZ25vc3RpY19zZXRfbGFzdF9mdW5jdGlvbiAoY29u dGV4dCk7Ci0rICAgICAgZGlhZ25vc3RpY19zZXRfbGFzdF9mdW5jdGlvbiAoY29udGV4dCwgZGlh Z25vc3RpYyk7Ci0gICAgICAgcHBfYmFzZV9kZXN0cm95X3ByZWZpeCAoY29udGV4dC0+cHJpbnRl cik7Ci0gICAgICAgY29udGV4dC0+cHJpbnRlci0+cHJlZml4ID0gb2xkX3ByZWZpeDsKLSAgICAg fQotLS0tIGdjYy9jcC9jcC10cmVlLmguamoJMjAwNy0wOS0yNSAxMTo0NToyNS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnY2MvY3AvY3AtdHJlZS5oCTIwMDctMDktMjggMjI6NDU6MTkuMDAwMDAwMDAw ICswMjAwCi1AQCAtMzIsNiArMzIsNyBAQCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICov Ci0gI2luY2x1ZGUgImMtY29tbW9uLmgiCi0gI2luY2x1ZGUgIm5hbWUtbG9va3VwLmgiCi0gc3Ry dWN0IGRpYWdub3N0aWNfY29udGV4dDsKLStzdHJ1Y3QgZGlhZ25vc3RpY19pbmZvOwotIAotIC8q IFVzYWdlIG9mIFRSRUVfTEFOR19GTEFHXz86Ci0gICAgMDogSURFTlRJRklFUl9NQVJLRUQgKElE RU5USUZJRVJfTk9ERXMpCi1AQCAtMzgzMiw3ICszODMzLDggQEAgZXh0ZXJuIHZvaWQgY3h4X3By aW50X2RlY2wJCQkoRklMRSAqLCB0cgotIGV4dGVybiB2b2lkIGN4eF9wcmludF90eXBlCQkJKEZJ TEUgKiwgdHJlZSwgaW50KTsKLSBleHRlcm4gdm9pZCBjeHhfcHJpbnRfaWRlbnRpZmllcgkJKEZJ TEUgKiwgdHJlZSwgaW50KTsKLSBleHRlcm4gdm9pZCBjeHhfcHJpbnRfZXJyb3JfZnVuY3Rpb24J KHN0cnVjdCBkaWFnbm9zdGljX2NvbnRleHQgKiwKLS0JCQkJCQkgY29uc3QgY2hhciAqKTsKLSsJ CQkJCQkgY29uc3QgY2hhciAqLAotKwkJCQkJCSBzdHJ1Y3QgZGlhZ25vc3RpY19pbmZvICopOwot IGV4dGVybiB2b2lkIGJ1aWxkX3NlbGZfcmVmZXJlbmNlCQkodm9pZCk7Ci0gZXh0ZXJuIGludCBz YW1lX3NpZ25hdHVyZV9wCQkJKHRyZWUsIHRyZWUpOwotIGV4dGVybiB2b2lkIHdhcm5faGlkZGVu CQkJCSh0cmVlKTsKLS0tLSBnY2MvYy1mb3JtYXQuYy5qagkyMDA3LTA5LTI1IDEyOjI3OjU1LjAw MDAwMDAwMCArMDIwMAotKysrIGdjYy9jLWZvcm1hdC5jCTIwMDctMDktMjggMjI6NTA6MzUuMDAw MDAwMDAwICswMjAwCi1AQCAtNTQ3LDcgKzU0Nyw3IEBAIHN0YXRpYyBjb25zdCBmb3JtYXRfY2hh cl9pbmZvIGdjY19kaWFnX2MKLSAgIHsgIkgiLCAgIDAsIFNURF9DODksIHsgVDg5X1YsICAgQkFE TEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVO LCAgQkFETEVOICB9LCAicSIsICAiIiwgICBOVUxMIH0sCi0gCi0gICAvKiBUaGVzZSB3aWxsIHJl cXVpcmUgYSAidHJlZSIgYXQgcnVudGltZS4gICovCi0tICB7ICJKIiwgMCwgU1REX0M4OSwgeyBU ODlfViwgICBCQURMRU4sICBCQURMRU4sICBCQURMRU4sICBCQURMRU4sICBCQURMRU4sICBCQURM RU4sICBCQURMRU4sICBCQURMRU4gIH0sICJxIiwgICAgIiIsICAgTlVMTCB9LAotKyAgeyAiSksi LCAgMCwgU1REX0M4OSwgeyBUODlfViwgICBCQURMRU4sICBCQURMRU4sICBCQURMRU4sICBCQURM RU4sICBCQURMRU4sICBCQURMRU4sICBCQURMRU4sICBCQURMRU4gIH0sICJxIiwgICIiLCAgIE5V TEwgfSwKLSAKLSAgIHsgIjw+JyIsIDAsIFNURF9DODksIE5PQVJHVU1FTlRTLCAiIiwgICAgICAi IiwgICBOVUxMIH0sCi0gICB7ICJtIiwgICAwLCBTVERfQzg5LCBOT0FSR1VNRU5UUywgInEiLCAg ICAgIiIsICAgTlVMTCB9LAotQEAgLTU3MCw3ICs1NzAsNyBAQCBzdGF0aWMgY29uc3QgZm9ybWF0 X2NoYXJfaW5mbyBnY2NfdGRpYWdfCi0gICB7ICJIIiwgICAwLCBTVERfQzg5LCB7IFQ4OV9WLCAg IEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJB RExFTiwgIEJBRExFTiAgfSwgInEiLCAgIiIsICAgTlVMTCB9LAotIAotICAgLyogVGhlc2Ugd2ls bCByZXF1aXJlIGEgInRyZWUiIGF0IHJ1bnRpbWUuICAqLwotLSAgeyAiREZKVCIsIDAsIFNURF9D ODksIHsgVDg5X1YsICAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVO LCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOICB9LCAicSsiLCAiIiwgICBOVUxMIH0sCi0rICB7 ICJERkpLVCIsIDAsIFNURF9DODksIHsgVDg5X1YsIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwg IEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiAgfSwgInErIiwgIiIs ICAgTlVMTCB9LAotIAotICAgeyAiPD4nIiwgMCwgU1REX0M4OSwgTk9BUkdVTUVOVFMsICIiLCAg ICAgICIiLCAgIE5VTEwgfSwKLSAgIHsgIm0iLCAgIDAsIFNURF9DODksIE5PQVJHVU1FTlRTLCAi cSIsICAgICAiIiwgICBOVUxMIH0sCi1AQCAtNTkzLDcgKzU5Myw3IEBAIHN0YXRpYyBjb25zdCBm b3JtYXRfY2hhcl9pbmZvIGdjY19jZGlhZ18KLSAgIHsgIkgiLCAgIDAsIFNURF9DODksIHsgVDg5 X1YsICAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVO LCAgQkFETEVOLCAgQkFETEVOICB9LCAicSIsICAiIiwgICBOVUxMIH0sCi0gCi0gICAvKiBUaGVz ZSB3aWxsIHJlcXVpcmUgYSAidHJlZSIgYXQgcnVudGltZS4gICovCi0tICB7ICJERUZKVCIsIDAs IFNURF9DODksIHsgVDg5X1YsICAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAg QkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOICB9LCAicSsiLCAiIiwgICBOVUxMIH0s Ci0rICB7ICJERUZKS1QiLCAwLCBTVERfQzg5LCB7IFQ4OV9WLCBCQURMRU4sIEJBRExFTiwgIEJB RExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiAgfSwgInEr IiwgIiIsICAgTlVMTCB9LAotIAotICAgeyAiPD4nIiwgMCwgU1REX0M4OSwgTk9BUkdVTUVOVFMs ICIiLCAgICAgICIiLCAgIE5VTEwgfSwKLSAgIHsgIm0iLCAgIDAsIFNURF9DODksIE5PQVJHVU1F TlRTLCAicSIsICAgICAiIiwgICBOVUxMIH0sCi1AQCAtNjE2LDcgKzYxNiw3IEBAIHN0YXRpYyBj b25zdCBmb3JtYXRfY2hhcl9pbmZvIGdjY19jeHhkaWEKLSAgIHsgIkgiLCAgIDAsIFNURF9DODks IHsgVDg5X1YsICAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAg QkFETEVOLCAgQkFETEVOLCAgQkFETEVOICB9LCAicSIsICAiIiwgICBOVUxMIH0sCi0gCi0gICAv KiBUaGVzZSB3aWxsIHJlcXVpcmUgYSAidHJlZSIgYXQgcnVudGltZS4gICovCi0tICB7ICJBREVG SlRWIiwwLFNURF9DODkseyBUODlfViwgICBCQURMRU4sICBCQURMRU4sICBCQURMRU4sICBCQURM RU4sICBCQURMRU4sICBCQURMRU4sICBCQURMRU4sICBCQURMRU4gIH0sICJxKyMiLCAgICIiLCAg IE5VTEwgfSwKLSsgIHsgIkFERUZKS1RWIiwwLFNURF9DODkseyBUODlfViwgQkFETEVOLCAgQkFE TEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVO ICB9LCAicSsjIiwgICAiIiwgICBOVUxMIH0sCi0gCi0gICAvKiBUaGVzZSBhY2NlcHQgZWl0aGVy IGFuICdpbnQnIG9yIGFuICdlbnVtIHRyZWVfY29kZScgKHdoaWNoIGlzIGhhbmRsZWQgYXMgYW4g J2ludCcuKSAgKi8KLSAgIHsgIkNMT1BRIiwwLFNURF9DODksIHsgVDg5X0ksICAgQkFETEVOLCAg QkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFE TEVOICB9LCAicSIsICAiIiwgICBOVUxMIH0sCi1AQCAtMjYwMSw2ICsyNjAxLDkgQEAgaW5pdF9k eW5hbWljX2RpYWdfaW5mbyAodm9pZCkKLSAJICBpID0gZmluZF9jaGFyX2luZm9fc3BlY2lmaWVy X2luZGV4IChkaWFnX2ZjaSwgJ0onKTsKLSAJICBkaWFnX2ZjaVtpXS50eXBlc1swXS50eXBlID0g JnQ7Ci0gCSAgZGlhZ19mY2lbaV0ucG9pbnRlcl9jb3VudCA9IDE7Ci0rCSAgaSA9IGZpbmRfY2hh cl9pbmZvX3NwZWNpZmllcl9pbmRleCAoZGlhZ19mY2ksICdLJyk7Ci0rCSAgZGlhZ19mY2lbaV0u dHlwZXNbMF0udHlwZSA9ICZ0OwotKwkgIGRpYWdfZmNpW2ldLnBvaW50ZXJfY291bnQgPSAxOwot IAl9Ci0gCi0gICAgICAgLyogSGFuZGxlIHRoZSBfX2djY190ZGlhZ19fIGZvcm1hdCBzcGVjaWZp Y3MuICAqLwotQEAgLTI2MjUsNiArMjYyOCw5IEBAIGluaXRfZHluYW1pY19kaWFnX2luZm8gKHZv aWQpCi0gCSAgaSA9IGZpbmRfY2hhcl9pbmZvX3NwZWNpZmllcl9pbmRleCAodGRpYWdfZmNpLCAn SicpOwotIAkgIHRkaWFnX2ZjaVtpXS50eXBlc1swXS50eXBlID0gJnQ7Ci0gCSAgdGRpYWdfZmNp W2ldLnBvaW50ZXJfY291bnQgPSAxOwotKwkgIGkgPSBmaW5kX2NoYXJfaW5mb19zcGVjaWZpZXJf aW5kZXggKHRkaWFnX2ZjaSwgJ0snKTsKLSsJICB0ZGlhZ19mY2lbaV0udHlwZXNbMF0udHlwZSA9 ICZ0OwotKwkgIHRkaWFnX2ZjaVtpXS5wb2ludGVyX2NvdW50ID0gMTsKLSAJfQotIAotICAgICAg IC8qIEhhbmRsZSB0aGUgX19nY2NfY2RpYWdfXyBmb3JtYXQgc3BlY2lmaWNzLiAgKi8KLUBAIC0y NjQ5LDYgKzI2NTUsOSBAQCBpbml0X2R5bmFtaWNfZGlhZ19pbmZvICh2b2lkKQotIAkgIGkgPSBm aW5kX2NoYXJfaW5mb19zcGVjaWZpZXJfaW5kZXggKGNkaWFnX2ZjaSwgJ0onKTsKLSAJICBjZGlh Z19mY2lbaV0udHlwZXNbMF0udHlwZSA9ICZ0OwotIAkgIGNkaWFnX2ZjaVtpXS5wb2ludGVyX2Nv dW50ID0gMTsKLSsJICBpID0gZmluZF9jaGFyX2luZm9fc3BlY2lmaWVyX2luZGV4IChjZGlhZ19m Y2ksICdLJyk7Ci0rCSAgY2RpYWdfZmNpW2ldLnR5cGVzWzBdLnR5cGUgPSAmdDsKLSsJICBjZGlh Z19mY2lbaV0ucG9pbnRlcl9jb3VudCA9IDE7Ci0gCX0KLSAKLSAgICAgICAvKiBIYW5kbGUgdGhl IF9fZ2NjX2N4eGRpYWdfXyBmb3JtYXQgc3BlY2lmaWNzLiAgKi8KLUBAIC0yNjczLDYgKzI2ODIs OSBAQCBpbml0X2R5bmFtaWNfZGlhZ19pbmZvICh2b2lkKQotIAkgIGkgPSBmaW5kX2NoYXJfaW5m b19zcGVjaWZpZXJfaW5kZXggKGN4eGRpYWdfZmNpLCAnSicpOwotIAkgIGN4eGRpYWdfZmNpW2ld LnR5cGVzWzBdLnR5cGUgPSAmdDsKLSAJICBjeHhkaWFnX2ZjaVtpXS5wb2ludGVyX2NvdW50ID0g MTsKLSsJICBpID0gZmluZF9jaGFyX2luZm9fc3BlY2lmaWVyX2luZGV4IChjeHhkaWFnX2ZjaSwg J0snKTsKLSsJICBjeHhkaWFnX2ZjaVtpXS50eXBlc1swXS50eXBlID0gJnQ7Ci0rCSAgY3h4ZGlh Z19mY2lbaV0ucG9pbnRlcl9jb3VudCA9IDE7Ci0gCX0KLSAgICAgfQotIH0KLS0tLSBnY2MvZXhw ci5jLmpqCTIwMDctMDktMjUgMTU6MTk6MTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2V4cHIu YwkyMDA3LTA5LTI4IDIyOjQ1OjE5LjAwMDAwMDAwMCArMDIwMAotQEAgLTc1MTIsMjEgKzc1MTIs MjEgQEAgZXhwYW5kX2V4cHJfcmVhbF8xICh0cmVlIGV4cCwgcnR4IHRhcmdldAotICAgICAgIC8q IEFsbCB2YWxpZCB1c2VzIG9mIF9fYnVpbHRpbl92YV9hcmdfcGFjayAoKSBhcmUgcmVtb3ZlZCBk dXJpbmcKLSAJIGlubGluaW5nLiAgKi8KLSAgICAgICBpZiAoQ0FMTF9FWFBSX1ZBX0FSR19QQUNL IChleHApKQotLQllcnJvciAoImludmFsaWQgdXNlIG9mICU8X19idWlsdGluX3ZhX2FyZ19wYWNr ICgpJT4iKTsKLSsJZXJyb3IgKCIlS2ludmFsaWQgdXNlIG9mICU8X19idWlsdGluX3ZhX2FyZ19w YWNrICgpJT4iLCBleHApOwotICAgICAgIHsKLSAJdHJlZSBmbmRlY2wgPSBnZXRfY2FsbGVlX2Zu ZGVjbCAoZXhwKSwgYXR0cjsKLSAKLSAJaWYgKGZuZGVjbAotIAkgICAgJiYgKGF0dHIgPSBsb29r dXBfYXR0cmlidXRlICgiZXJyb3IiLAotIAkJCQkJIERFQ0xfQVRUUklCVVRFUyAoZm5kZWNsKSkp ICE9IE5VTEwpCi0tCSAgZXJyb3IgKCJjYWxsIHRvICVxcyBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0 ZSBlcnJvcjogJXMiLAotLQkJIGxhbmdfaG9va3MuZGVjbF9wcmludGFibGVfbmFtZSAoZm5kZWNs LCAxKSwKLSsJICBlcnJvciAoIiVLY2FsbCB0byAlcXMgZGVjbGFyZWQgd2l0aCBhdHRyaWJ1dGUg ZXJyb3I6ICVzIiwKLSsJCSBleHAsIGxhbmdfaG9va3MuZGVjbF9wcmludGFibGVfbmFtZSAoZm5k ZWNsLCAxKSwKLSAJCSBUUkVFX1NUUklOR19QT0lOVEVSIChUUkVFX1ZBTFVFIChUUkVFX1ZBTFVF IChhdHRyKSkpKTsKLSAJaWYgKGZuZGVjbAotIAkgICAgJiYgKGF0dHIgPSBsb29rdXBfYXR0cmli dXRlICgid2FybmluZyIsCi0gCQkJCQkgREVDTF9BVFRSSUJVVEVTIChmbmRlY2wpKSkgIT0gTlVM TCkKLS0JICB3YXJuaW5nICgwLCAiY2FsbCB0byAlcXMgZGVjbGFyZWQgd2l0aCBhdHRyaWJ1dGUg d2FybmluZzogJXMiLAotLQkJICAgbGFuZ19ob29rcy5kZWNsX3ByaW50YWJsZV9uYW1lIChmbmRl Y2wsIDEpLAotKwkgIHdhcm5pbmcgKDAsICIlS2NhbGwgdG8gJXFzIGRlY2xhcmVkIHdpdGggYXR0 cmlidXRlIHdhcm5pbmc6ICVzIiwKLSsJCSAgIGV4cCwgbGFuZ19ob29rcy5kZWNsX3ByaW50YWJs ZV9uYW1lIChmbmRlY2wsIDEpLAotIAkJICAgVFJFRV9TVFJJTkdfUE9JTlRFUiAoVFJFRV9WQUxV RSAoVFJFRV9WQUxVRSAoYXR0cikpKSk7Ci0gCi0gCS8qIENoZWNrIGZvciBhIGJ1aWx0LWluIGZ1 bmN0aW9uLiAgKi8KLS0tLSBnY2MvbGFuZ2hvb2tzLmMuamoJMjAwNy0wMi0yMCAyMjozOToxMi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnY2MvbGFuZ2hvb2tzLmMJMjAwNy0wOS0yOCAyMjo0NToxOS4w MDAwMDAwMDAgKzAyMDAKLUBAIC00OTQsMTIgKzQ5NCwxNSBAQCBsaGRfaW5pdGlhbGl6ZV9kaWFn bm9zdGljcyAoc3RydWN0IGRpYWduCi0gLyogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gcHJpbnQg b3V0IG5hbWUgb2YgY3VycmVudCBmdW5jdGlvbiB0aGF0IGNhdXNlZAotICAgIGFuIGVycm9yLiAg Ki8KLSB2b2lkCi0tbGhkX3ByaW50X2Vycm9yX2Z1bmN0aW9uIChkaWFnbm9zdGljX2NvbnRleHQg KmNvbnRleHQsIGNvbnN0IGNoYXIgKmZpbGUpCi0rbGhkX3ByaW50X2Vycm9yX2Z1bmN0aW9uIChk aWFnbm9zdGljX2NvbnRleHQgKmNvbnRleHQsIGNvbnN0IGNoYXIgKmZpbGUsCi0rCQkJICBkaWFn bm9zdGljX2luZm8gKmRpYWdub3N0aWMpCi0gewotLSAgaWYgKGRpYWdub3N0aWNfbGFzdF9mdW5j dGlvbl9jaGFuZ2VkIChjb250ZXh0KSkKLSsgIGlmIChkaWFnbm9zdGljX2xhc3RfZnVuY3Rpb25f Y2hhbmdlZCAoY29udGV4dCwgZGlhZ25vc3RpYykpCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFy ICpvbGRfcHJlZml4ID0gY29udGV4dC0+cHJpbnRlci0+cHJlZml4OwotLSAgICAgIGNoYXIgKm5l d19wcmVmaXggPSBmaWxlID8gZmlsZV9uYW1lX2FzX3ByZWZpeCAoZmlsZSkgOiBOVUxMOwotKyAg ICAgIHRyZWUgYWJzdHJhY3Rfb3JpZ2luID0gZGlhZ25vc3RpYy0+YWJzdHJhY3Rfb3JpZ2luOwot KyAgICAgIGNoYXIgKm5ld19wcmVmaXggPSAoZmlsZSAmJiBhYnN0cmFjdF9vcmlnaW4gPT0gTlVM TCkKLSsJCQkgPyBmaWxlX25hbWVfYXNfcHJlZml4IChmaWxlKSA6IE5VTEw7Ci0gCi0gICAgICAg cHBfc2V0X3ByZWZpeCAoY29udGV4dC0+cHJpbnRlciwgbmV3X3ByZWZpeCk7Ci0gCi1AQCAtNTA3 LDE3ICs1MTAsOTUgQEAgbGhkX3ByaW50X2Vycm9yX2Z1bmN0aW9uIChkaWFnbm9zdGljX2Nvbgot IAlwcF9wcmludGYgKGNvbnRleHQtPnByaW50ZXIsIF8oIkF0IHRvcCBsZXZlbDoiKSk7Ci0gICAg ICAgZWxzZQotIAl7Ci0tCSAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChjdXJyZW50X2Z1bmN0 aW9uX2RlY2wpKSA9PSBNRVRIT0RfVFlQRSkKLSsJICB0cmVlIGZuZGVjbCwgYW87Ci0rCi0rCSAg aWYgKGFic3RyYWN0X29yaWdpbikKLSsJICAgIHsKLSsJICAgICAgYW8gPSBCTE9DS19BQlNUUkFD VF9PUklHSU4gKGFic3RyYWN0X29yaWdpbik7Ci0rCSAgICAgIHdoaWxlIChUUkVFX0NPREUgKGFv KSA9PSBCTE9DSyAmJiBCTE9DS19BQlNUUkFDVF9PUklHSU4gKGFvKSkKLSsJCWFvID0gQkxPQ0tf QUJTVFJBQ1RfT1JJR0lOIChhbyk7Ci0rCSAgICAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAoYW8p ID09IEZVTkNUSU9OX0RFQ0wpOwotKwkgICAgICBmbmRlY2wgPSBhbzsKLSsJICAgIH0KLSsJICBl bHNlCi0rCSAgICBmbmRlY2wgPSBjdXJyZW50X2Z1bmN0aW9uX2RlY2w7Ci0rCi0rCSAgaWYgKFRS RUVfQ09ERSAoVFJFRV9UWVBFIChmbmRlY2wpKSA9PSBNRVRIT0RfVFlQRSkKLSAJICAgIHBwX3By aW50ZgotLQkgICAgICAoY29udGV4dC0+cHJpbnRlciwgXygiSW4gbWVtYmVyIGZ1bmN0aW9uICVx czoiKSwKLS0JICAgICAgIGxhbmdfaG9va3MuZGVjbF9wcmludGFibGVfbmFtZSAoY3VycmVudF9m dW5jdGlvbl9kZWNsLCAyKSk7Ci0rCSAgICAgIChjb250ZXh0LT5wcmludGVyLCBfKCJJbiBtZW1i ZXIgZnVuY3Rpb24gJXFzIiksCi0rCSAgICAgICBsYW5nX2hvb2tzLmRlY2xfcHJpbnRhYmxlX25h bWUgKGZuZGVjbCwgMikpOwotIAkgIGVsc2UKLSAJICAgIHBwX3ByaW50ZgotLQkgICAgICAoY29u dGV4dC0+cHJpbnRlciwgXygiSW4gZnVuY3Rpb24gJXFzOiIpLAotLQkgICAgICAgbGFuZ19ob29r cy5kZWNsX3ByaW50YWJsZV9uYW1lIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wsIDIpKTsKLSsJICAg ICAgKGNvbnRleHQtPnByaW50ZXIsIF8oIkluIGZ1bmN0aW9uICVxcyIpLAotKwkgICAgICAgbGFu Z19ob29rcy5kZWNsX3ByaW50YWJsZV9uYW1lIChmbmRlY2wsIDIpKTsKLSsKLSsJICB3aGlsZSAo YWJzdHJhY3Rfb3JpZ2luKQotKwkgICAgewotKwkgICAgICBsb2NhdGlvbl90ICpsb2N1czsKLSsJ ICAgICAgdHJlZSBibG9jayA9IGFic3RyYWN0X29yaWdpbjsKLSsKLSsJICAgICAgbG9jdXMgPSAm QkxPQ0tfU09VUkNFX0xPQ0FUSU9OIChibG9jayk7Ci0rCSAgICAgIGZuZGVjbCA9IE5VTEw7Ci0r CSAgICAgIGJsb2NrID0gQkxPQ0tfU1VQRVJDT05URVhUIChibG9jayk7Ci0rCSAgICAgIHdoaWxl IChibG9jayAmJiBUUkVFX0NPREUgKGJsb2NrKSA9PSBCTE9DSwotKwkJICAgICAmJiBCTE9DS19B QlNUUkFDVF9PUklHSU4gKGJsb2NrKSkKLSsJCXsKLSsJCSAgYW8gPSBCTE9DS19BQlNUUkFDVF9P UklHSU4gKGJsb2NrKTsKLSsKLSsJCSAgd2hpbGUgKFRSRUVfQ09ERSAoYW8pID09IEJMT0NLICYm IEJMT0NLX0FCU1RSQUNUX09SSUdJTiAoYW8pKQotKwkJICAgIGFvID0gQkxPQ0tfQUJTVFJBQ1Rf T1JJR0lOIChhbyk7Ci0rCi0rCQkgIGlmIChUUkVFX0NPREUgKGFvKSA9PSBGVU5DVElPTl9ERUNM KQotKwkJICAgIHsKLSsJCSAgICAgIGZuZGVjbCA9IGFvOwotKwkJICAgICAgYnJlYWs7Ci0rCQkg ICAgfQotKwkJICBlbHNlIGlmIChUUkVFX0NPREUgKGFvKSAhPSBCTE9DSykKLSsJCSAgICBicmVh azsKLSsKLSsJCSAgYmxvY2sgPSBCTE9DS19TVVBFUkNPTlRFWFQgKGJsb2NrKTsKLSsJCX0KLSsJ ICAgICAgaWYgKGZuZGVjbCkKLSsJCWFic3RyYWN0X29yaWdpbiA9IGJsb2NrOwotKwkgICAgICBl bHNlCi0rCQl7Ci0rCQkgIHdoaWxlIChibG9jayAmJiBUUkVFX0NPREUgKGJsb2NrKSA9PSBCTE9D SykKLSsJCSAgICBibG9jayA9IEJMT0NLX1NVUEVSQ09OVEVYVCAoYmxvY2spOwotKwotKwkJICBp ZiAoVFJFRV9DT0RFIChibG9jaykgPT0gRlVOQ1RJT05fREVDTCkKLSsJCSAgICBmbmRlY2wgPSBi bG9jazsKLSsJCSAgYWJzdHJhY3Rfb3JpZ2luID0gTlVMTDsKLSsJCX0KLSsJICAgICAgaWYgKGZu ZGVjbCkKLSsJCXsKLSsJCSAgZXhwYW5kZWRfbG9jYXRpb24gcyA9IGV4cGFuZF9sb2NhdGlvbiAo KmxvY3VzKTsKLSsJCSAgcHBfY2hhcmFjdGVyIChjb250ZXh0LT5wcmludGVyLCAnLCcpOwotKwkJ ICBwcF9uZXdsaW5lIChjb250ZXh0LT5wcmludGVyKTsKLSsJCSAgaWYgKHMuZmlsZSAhPSBOVUxM KQotKwkJICAgIHsKLSsjaWZkZWYgVVNFX01BUFBFRF9MT0NBVElPTgotKwkJICAgICAgaWYgKGZs YWdfc2hvd19jb2x1bW4gJiYgcy5jb2x1bW4gIT0gMCkKLSsJCQlwcF9wcmludGYgKGNvbnRleHQt PnByaW50ZXIsCi0rCQkJCSAgIF8oIiAgICBpbmxpbmVkIGZyb20gJXFzIGF0ICVzOiVkOiVkIiks Ci0rCQkJCSAgIGxhbmdfaG9va3MuZGVjbF9wcmludGFibGVfbmFtZSAoZm5kZWNsLCAyKSwKLSsJ CQkJICAgcy5maWxlLCBzLmxpbmUsIHMuY29sdW1uKTsKLSsJCSAgICAgIGVsc2UKLSsjZW5kaWYK LSsJCQlwcF9wcmludGYgKGNvbnRleHQtPnByaW50ZXIsCi0rCQkJCSAgIF8oIiAgICBpbmxpbmVk IGZyb20gJXFzIGF0ICVzOiVkIiksCi0rCQkJCSAgIGxhbmdfaG9va3MuZGVjbF9wcmludGFibGVf bmFtZSAoZm5kZWNsLCAyKSwKLSsJCQkJICAgcy5maWxlLCBzLmxpbmUpOwotKwotKwkJICAgIH0K LSsJCSAgZWxzZQotKwkJICAgIHBwX3ByaW50ZiAoY29udGV4dC0+cHJpbnRlciwgXygiICAgIGlu bGluZWQgZnJvbSAlcXMiKSwKLSsJCQkgICAgICAgbGFuZ19ob29rcy5kZWNsX3ByaW50YWJsZV9u YW1lIChmbmRlY2wsIDIpKTsKLSsJCX0KLSsJICAgIH0KLSsJICBwcF9jaGFyYWN0ZXIgKGNvbnRl eHQtPnByaW50ZXIsICc6Jyk7Ci0gCX0KLSAKLS0gICAgICBkaWFnbm9zdGljX3NldF9sYXN0X2Z1 bmN0aW9uIChjb250ZXh0KTsKLSsgICAgICBkaWFnbm9zdGljX3NldF9sYXN0X2Z1bmN0aW9uIChj b250ZXh0LCBkaWFnbm9zdGljKTsKLSAgICAgICBwcF9mbHVzaCAoY29udGV4dC0+cHJpbnRlcik7 Ci0gICAgICAgY29udGV4dC0+cHJpbnRlci0+cHJlZml4ID0gb2xkX3ByZWZpeDsKLSAgICAgICBm cmVlICgoY2hhciopIG5ld19wcmVmaXgpOwotLS0tIGdjYy9sYW5naG9va3MuaC5qagkyMDA3LTAy LTIwIDIyOjM5OjEyLjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy9sYW5naG9va3MuaAkyMDA3LTA5 LTI4IDIyOjQ1OjE5LjAwMDAwMDAwMCArMDIwMAotQEAgLTI0LDYgKzI0LDcgQEAgQm9zdG9uLCBN QSAwMjExMC0xMzAxLCBVU0EuICAqLwotIC8qIFRoaXMgZmlsZSBzaG91bGQgYmUgI2luY2x1ZGUt ZCBhZnRlciB0cmVlLmguICAqLwotIAotIHN0cnVjdCBkaWFnbm9zdGljX2NvbnRleHQ7Ci0rc3Ry dWN0IGRpYWdub3N0aWNfaW5mbzsKLSAKLSBzdHJ1Y3QgZ2ltcGxpZnlfb21wX2N0eDsKLSAKLUBA IC0zOTEsNyArMzkyLDggQEAgc3RydWN0IGxhbmdfaG9va3MKLSAgIHRyZWUgKCpsYW5nX2dldF9j YWxsZWVfZm5kZWNsKSAodHJlZSk7Ci0gCi0gICAvKiBDYWxsZWQgYnkgcmVwb3J0X2Vycm9yX2Z1 bmN0aW9uIHRvIHByaW50IG91dCBmdW5jdGlvbiBuYW1lLiAgKi8KLS0gIHZvaWQgKCpwcmludF9l cnJvcl9mdW5jdGlvbikgKHN0cnVjdCBkaWFnbm9zdGljX2NvbnRleHQgKiwgY29uc3QgY2hhciAq KTsKLSsgIHZvaWQgKCpwcmludF9lcnJvcl9mdW5jdGlvbikgKHN0cnVjdCBkaWFnbm9zdGljX2Nv bnRleHQgKiwgY29uc3QgY2hhciAqLAotKwkJCQlzdHJ1Y3QgZGlhZ25vc3RpY19pbmZvICopOwot IAotICAgLyogQ2FsbGVkIGZyb20gZXhwcl9zaXplIHRvIGNhbGN1bGF0ZSB0aGUgc2l6ZSBvZiB0 aGUgdmFsdWUgb2YgYW4KLSAgICAgIGV4cHJlc3Npb24gaW4gYSBsYW5ndWFnZS1kZXBlbmRlbnQg d2F5LiAgUmV0dXJucyBhIHRyZWUgZm9yIHRoZSBzaXplCi0tLS0gZ2NjL2xhbmdob29rcy1kZWYu aC5qagkyMDA3LTAyLTIwIDIyOjM5OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy9sYW5naG9v a3MtZGVmLmgJMjAwNy0wOS0yOCAyMjo0NToxOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNSw2ICsy NSw3IEBAIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KLSAjaW5jbHVkZSAiaG9va3Mu aCIKLSAKLSBzdHJ1Y3QgZGlhZ25vc3RpY19jb250ZXh0OwotK3N0cnVjdCBkaWFnbm9zdGljX2lu Zm87Ci0gCi0gLyogUHJvdmlkZSBhIGhvb2sgcm91dGluZSBmb3IgYWxpYXMgc2V0cyB0aGF0IGFs d2F5cyByZXR1cm5zIDEuICBUaGlzIGlzCi0gICAgdXNlZCBieSBsYW5ndWFnZXMgdGhhdCBoYXZl bid0IGRlYWwgd2l0aCBhbGlhcyBzZXRzIHlldC4gICovCi1AQCAtNTcsNyArNTgsNyBAQCBleHRl cm4gaW50IGxoZF90eXBlc19jb21wYXRpYmxlX3AgKHRyZWUsCi0gZXh0ZXJuIHJ0eCBsaGRfZXhw YW5kX2V4cHIgKHRyZWUsIHJ0eCwgZW51bSBtYWNoaW5lX21vZGUsIGludCwgcnR4ICopOwotIGV4 dGVybiBpbnQgbGhkX2V4cGFuZF9kZWNsICh0cmVlKTsKLSBleHRlcm4gdm9pZCBsaGRfcHJpbnRf ZXJyb3JfZnVuY3Rpb24gKHN0cnVjdCBkaWFnbm9zdGljX2NvbnRleHQgKiwKLS0JCQkJICAgICAg Y29uc3QgY2hhciAqKTsKLSsJCQkJICAgICAgY29uc3QgY2hhciAqLCBzdHJ1Y3QgZGlhZ25vc3Rp Y19pbmZvICopOwotIGV4dGVybiB2b2lkIGxoZF9zZXRfZGVjbF9hc3NlbWJsZXJfbmFtZSAodHJl ZSk7Ci0gZXh0ZXJuIGJvb2wgbGhkX2Nhbl91c2VfYml0X2ZpZWxkc19wICh2b2lkKTsKLSBleHRl cm4gYm9vbCBsaGRfd2Fybl91bnVzZWRfZ2xvYmFsX2RlY2wgKHRyZWUpOwoKZGlmZiAtLWdpdCBh L2djYzQxLnNwZWMgYi9nY2M0MS5zcGVjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi YTMyOTc4Li4wMDAwMDAwCi0tLSBhL2djYzQxLnNwZWMKKysrIC9kZXYvbnVsbApAQCAtMSwzMDc4 ICswLDAgQEAKLSVkZWZpbmUgREFURSAyMDA3MTEyNAotJWRlZmluZSBnY2NfdmVyc2lvbiA0LjEu MgotJWRlZmluZSBnY2NfcmVsZWFzZSAzNgotJWRlZmluZSBfdW5wYWNrYWdlZF9maWxlc190ZXJt aW5hdGVfYnVpbGQgMAotJWRlZmluZSBtdWx0aWxpYl82NF9hcmNocyBzcGFyYzY0IHBwYzY0IHMz OTB4IHg4Nl82NAotJWRlZmluZSBpbmNsdWRlX2dhcHBsZXR2aWV3ZXIgMQotJWlmYXJjaCAle2l4 ODZ9IHg4Nl82NCBpYTY0IHBwYyBhbHBoYQotJWRlZmluZSBidWlsZF9hZGEgMQotJWVsc2UKLSVk ZWZpbmUgYnVpbGRfYWRhIDAKLSVlbmRpZgotJWRlZmluZSBidWlsZF9qYXZhIDEKLSMgSWYgeW91 IGRvbid0IGhhdmUgYWxyZWFkeSBhIHVzYWJsZSBnY2MtamF2YSBhbmQgbGliZ2NqIGZvciB5b3Vy IGFyY2gsCi0jIGRvIG9uIHNvbWUgYXJjaCB3aGljaCBoYXMgaXQgcnBtYnVpbGQgLWJjIC0td2l0 aCBqYXZhX3RhciBnY2M0MS5zcGVjCi0jIHdoaWNoIGNyZWF0ZXMgbGliamF2YS1jbGFzc2VzLSV7 dmVyc2lvbn0tJXtyZWxlYXNlfS50YXIuYnoyCi0jIFdpdGggdGhpcyB0aGVuIG9uIHRoZSBuZXcg YXJjaCBkbyBycG1idWlsZCAtYmEgLXYgLS13aXRoIGphdmFfYm9vdHN0cmFwIGdjYzQxLnNwZWMK LSVkZWZpbmUgYm9vdHN0cmFwX2phdmEgJXs/X3dpdGhfamF2YV9ib290c3RyYXA6JXtidWlsZF9q YXZhfX0leyE/X3dpdGhfamF2YV9ib290c3RyYXA6MH0KLSVkZWZpbmUgYnVpbGRfamF2YV90YXIg JXs/X3dpdGhfamF2YV90YXI6JXtidWlsZF9qYXZhfX0leyE/X3dpdGhfamF2YV90YXI6MH0KLSVp ZmFyY2ggczM5MHgKLSVkZWZpbmUgbXVsdGlsaWJfMzJfYXJjaCBzMzkwCi0lZW5kaWYKLSVpZmFy Y2ggc3BhcmM2NAotJWRlZmluZSBtdWx0aWxpYl8zMl9hcmNoIHNwYXJjCi0lZW5kaWYKLSVpZmFy Y2ggcHBjNjQKLSVkZWZpbmUgbXVsdGlsaWJfMzJfYXJjaCBwcGMKLSVlbmRpZgotJWlmYXJjaCB4 ODZfNjQKLSVkZWZpbmUgbXVsdGlsaWJfMzJfYXJjaCBpMzg2Ci0lZW5kaWYKLVN1bW1hcnk6IFZh cmlvdXMgY29tcGlsZXJzIChDLCBDKyssIE9iamVjdGl2ZS1DLCBKYXZhLCAuLi4pCi1OYW1lOiBn Y2MKLVZlcnNpb246ICV7Z2NjX3ZlcnNpb259Ci1SZWxlYXNlOiAle2djY19yZWxlYXNlfQotIyBs aWJnY2MsIGxpYmdmb3J0cmFuLCBsaWJtdWRmbGFwIGFuZCBjcnRzdHVmZiBoYXZlIGFuIGV4Y2Vw dGlvbiB3aGljaCBhbGxvd3MKLSMgbGlua2luZyBpdCBpbnRvIGFueSBraW5kIG9mIHByb2dyYW1z IG9yIHNoYXJlZCBsaWJyYXJpZXMgd2l0aG91dAotIyByZXN0cmljdGlvbnMuCi1MaWNlbnNlOiBH UEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlvbnMKLUdyb3VwOiBEZXZlbG9wbWVudC9MYW5n dWFnZXMKLVNvdXJjZTA6IGdjYy0le3ZlcnNpb259LSV7REFURX0udGFyLmJ6MgotU291cmNlMTog bGliZ2NjX3Bvc3RfdXBncmFkZS5jCi1Tb3VyY2UyOiBSRUFETUUubGliZ2Nqd2VicGx1Z2luLnNv Ci1Tb3VyY2UzOiBwcm90b2l6ZS4xCi1VUkw6IGh0dHA6Ly9nY2MuZ251Lm9yZwotQnVpbGRSb290 OiAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0tJXtyZWxlYXNlfS1yb290Ci0jIE5lZWQg YmludXRpbHMgd2l0aCAtcGllIHN1cHBvcnQgPj0gMi4xNC45MC4wLjQtNAotIyBOZWVkIGJpbnV0 aWxzIHdoaWNoIGNhbiBvbWl0IGRvdCBzeW1ib2xzIGFuZCBvdmVybGFwIC5vcGQgb24gcHBjNjQg Pj0gMi4xNS45MS4wLjItNAotIyBOZWVkIGJpbnV0aWxzIHdoaWNoIGhhbmRsZSAtbXNlY3VyZS1w bHQgb24gcHBjID49IDIuMTYuOTEuMC4yLTIKLSMgTmVlZCBiaW51dGlscyB3aGljaCBzdXBwb3J0 IC53ZWFrcmVmID49IDIuMTYuOTEuMC4zLTEKLSMgTmVlZCBiaW51dGlscyB3aGljaCBzdXBwb3J0 IC0taGFzaC1zdHlsZT1nbnUgPj0gMi4xNy41MC4wLjItNwotIyBOZWVkIGJpbnV0aWxzIHdoaWNo IHN1cHBvcnQgbWZmZ3ByIGFuZCBtZnRncHIgPj0gMi4xNy41MC4wLjItOAotIyBOZWVkIGJpbnV0 aWxzIHdoaWNoIHN1cHBvcnQgLS1idWlsZC1pZCA+PSAyLjE3LjUwLjAuMTctMwotQnVpbGRSZXF1 aXJlczogYmludXRpbHMgPj0gMi4xNy41MC4wLjE3LTMKLUJ1aWxkUmVxdWlyZXM6IHpsaWItZGV2 ZWwsIGdldHRleHQsIGRlamFnbnUsIGJpc29uLCBmbGV4LCB0ZXhpbmZvLCBzaGFydXRpbHMKLSVp ZiAle2J1aWxkX2phdmF9Ci1CdWlsZFJlcXVpcmVzOiAvdXNyL3NoYXJlL2phdmEvZWNsaXBzZS1l Y2ouamFyLCB6aXAsIHVuemlwCi0laWYgJXtib290c3RyYXBfamF2YX0KLVNvdXJjZTEwOiBsaWJq YXZhLWNsYXNzZXMtJXt2ZXJzaW9ufS0le3JlbGVhc2V9LnRhci5iejIKLSVlbHNlCi1CdWlsZFJl cXVpcmVzOiBnY2MtamF2YSwgbGliZ2NqCi0lZW5kaWYKLSVlbmRpZgotIyBNYWtlIHN1cmUgcHRo cmVhZC5oIGRvZXNuJ3QgY29udGFpbiBfX3RocmVhZCB0b2tlbnMKLSMgTWFrZSBzdXJlIGdsaWJj IHN1cHBvcnRzIHN0YWNrIHByb3RlY3RvcgotIyBNYWtlIHN1cmUgZ2xpYmMgc3VwcG9ydHMgRFRf R05VX0hBU0gKLUJ1aWxkUmVxdWlyZXM6IGdsaWJjLWRldmVsID49IDIuNC45MC0xMwotQnVpbGRS ZXF1aXJlczogZWxmdXRpbHMtZGV2ZWwgPj0gMC43MgotJWlmYXJjaCBwcGMgcHBjNjQgczM5MCBz MzkweCBzcGFyYyBzcGFyY3Y5IGFscGhhCi0jIE1ha2Ugc3VyZSBnbGliYyBzdXBwb3J0cyBURm1v ZGUgbG9uZyBkb3VibGUKLUJ1aWxkUmVxdWlyZXM6IGdsaWJjID49IDIuMy45MC0zNQotJWVuZGlm Ci0laWZhcmNoICV7bXVsdGlsaWJfNjRfYXJjaHN9IHNwYXJjIHBwYwotIyBFbnN1cmUgZ2xpYmN7 LC1kZXZlbH0gaXMgaW5zdGFsbGVkIGZvciBib3RoIG11bHRpbGliIGFyY2hlcwotQnVpbGRSZXF1 aXJlczogL2xpYi9saWJjLnNvLjYgL3Vzci9saWIvbGliYy5zbyAvbGliNjQvbGliYy5zby42IC91 c3IvbGliNjQvbGliYy5zbwotJWVuZGlmCi0laWYgJXtidWlsZF9hZGF9Ci0jIEFkYSByZXF1aXJl cyBBZGEgdG8gYnVpbGQKLUJ1aWxkUmVxdWlyZXM6IGdjYy1nbmF0ID49IDMuMSwgbGliZ25hdCA+ PSAzLjEKLSVlbmRpZgotJWlmYXJjaCBpYTY0Ci1CdWlsZFJlcXVpcmVzOiBsaWJ1bndpbmQgPj0g MC45OAotJWVuZGlmCi1SZXF1aXJlczogY3BwID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9Ci0jIE5l ZWQgLmVoX2ZyYW1lIGxkIG9wdGltaXphdGlvbnMKLSMgTmVlZCBwcm9wZXIgdmlzaWJpbGl0eSBz dXBwb3J0Ci0jIE5lZWQgLXBpZSBzdXBwb3J0Ci0jIE5lZWQgLS1hcy1uZWVkZWQvLS1uby1hcy1u ZWVkZWQgc3VwcG9ydAotIyBPbiBwcGM2NCwgbmVlZCBvbWl0IGRvdCBzeW1ib2xzIHN1cHBvcnQg YW5kIC0tbm9uLW92ZXJsYXBwaW5nLW9wZAotIyBOZWVkIGJpbnV0aWxzIHRoYXQgb3ducyAvdXNy L2Jpbi9jKytmaWx0Ci0jIE5lZWQgYmludXRpbHMgdGhhdCBzdXBwb3J0IC53ZWFrcmVmCi0jIE5l ZWQgYmludXRpbHMgdGhhdCBzdXBwb3J0cyAtLWhhc2gtc3R5bGU9Z251Ci0jIE5lZWQgYmludXRp bHMgdGhhdCBzdXBwb3J0IG1mZmdwci9tZnRncHIKLSMgTmVlZCBiaW51dGlscyB0aGF0IHN1cHBv cnQgLS1idWlsZC1pZAotUmVxdWlyZXM6IGJpbnV0aWxzID49IDIuMTcuNTAuMC4xNy0zCi0jIE1h a2Ugc3VyZSBnZGIgd2lsbCB1bmRlcnN0YW5kIERXX0ZPUk1fc3RycAotQ29uZmxpY3RzOiBnZGIg PCA1LjEtMgotUmVxdWlyZXM6IGdsaWJjLWRldmVsID49IDIuMi45MC0xMgotJWlmYXJjaCBwcGMg cHBjNjQgczM5MCBzMzkweCBzcGFyYyBzcGFyY3Y5IGFscGhhCi0jIE1ha2Ugc3VyZSBnbGliYyBz dXBwb3J0cyBURm1vZGUgbG9uZyBkb3VibGUKLVJlcXVpcmVzOiBnbGliYyA+PSAyLjMuOTAtMzUK LSVlbmRpZgotUmVxdWlyZXM6IGxpYmdjYyA+PSAle3ZlcnNpb259LSV7cmVsZWFzZX0KLVJlcXVp cmVzOiBsaWJnb21wID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9Ci1PYnNvbGV0ZXM6IGdjYzMKLU9i c29sZXRlczogZWdjcwotJWlmYXJjaCBzcGFyYwotT2Jzb2xldGVzOiBnY2Mtc3BhcmMzMgotT2Jz b2xldGVzOiBnY2MtYysrLXNwYXJjMzIKLSVlbmRpZgotJWlmYXJjaCBwcGMKLU9ic29sZXRlczog Z2NjLXBwYzMyCi1PYnNvbGV0ZXM6IGdjYy1jKystcHBjMzIKLSVlbmRpZgotT2Jzb2xldGVzOiBn Y2MtY2hpbGwKLSVpZiAhJXtidWlsZF9hZGF9Ci1PYnNvbGV0ZXM6IGdjYy1nbmF0IDwgJXt2ZXJz aW9ufS0le3JlbGVhc2V9Ci1PYnNvbGV0ZXM6IGxpYmduYXQgPCAle3ZlcnNpb259LSV7cmVsZWFz ZX0KLSVlbmRpZgotJWlmYXJjaCBzcGFyYyBzcGFyYzY0Ci1PYnNvbGV0ZXM6IGVnY3M2NAotJWVu ZGlmCi1PYnNvbGV0ZXM6IGdjYzM0Ci1PYnNvbGV0ZXM6IGdjYzM1Ci1PYnNvbGV0ZXM6IGdjYzQK LVByZXJlcTogL3NiaW4vaW5zdGFsbC1pbmZvCi1BdXRvUmVxOiB0cnVlCi0KLVBhdGNoMTogZ2Nj NDEtaWNlLWhhY2sucGF0Y2gKLVBhdGNoMjogZ2NjNDEtcHBjNjQtbTMyLW02NC1tdWx0aWxpYi1v bmx5LnBhdGNoCi1QYXRjaDM6IGdjYzQxLWlhNjQtbGlidW53aW5kLnBhdGNoCi1QYXRjaDQ6IGdj YzQxLWdudWMtcmgtcmVsZWFzZS5wYXRjaAotUGF0Y2g1OiBnY2M0MS1qYXZhLW5vbXVsdGkucGF0 Y2gKLVBhdGNoNjogZ2NjNDEtYWRhLXByMTgzMDIucGF0Y2gKLVBhdGNoNzogZ2NjNDEtYWRhLXR3 ZWFrcy5wYXRjaAotUGF0Y2g4OiBnY2M0MS1qYXZhLXNsb3dfcHRocmVhZF9zZWxmLnBhdGNoCi1Q YXRjaDk6IGdjYzQxLXBwYzMyLXJldGFkZHIucGF0Y2gKLVBhdGNoMTA6IGdjYzQxLWRzb2hhbmRs ZS5wYXRjaAotUGF0Y2gxMTogZ2NjNDEtcmgxODQ0NDYucGF0Y2gKLVBhdGNoMTI6IGdjYzQxLXBy MjAyOTctdGVzdC5wYXRjaAotUGF0Y2gxMzogZ2NjNDEtaGFzaC1zdHlsZS1nbnUucGF0Y2gKLVBh dGNoMTQ6IGdjYzQxLWphdmEtbGliZG90ZG90bGliLnBhdGNoCi1QYXRjaDE1OiBnY2M0MS1wcjI4 NzU1LnBhdGNoCi1QYXRjaDE2OiBnY2M0MS1wcjI3ODk4LnBhdGNoCi1QYXRjaDE3OiBnY2M0MS1q YXZhLWJvZ3VzLWRlYnVnbGluZS5wYXRjaAotUGF0Y2gxODogZ2NjNDEtbGliamF2YS12aXNpYmls aXR5LnBhdGNoCi1QYXRjaDE5OiBnY2M0MS1wcjMyMTM5LnBhdGNoCi1QYXRjaDIwOiBnY2M0MS1y aDIzNjg5NS5wYXRjaAotUGF0Y2gyMTogZ2NjNDEtcmgyMzUwMDgucGF0Y2gKLVBhdGNoMjI6IGdj YzQxLWJ1aWxkLWlkLnBhdGNoCi1QYXRjaDIzOiBnY2M0MS1wcjI4NjkwLnBhdGNoCi1QYXRjaDI0 OiBnY2M0MS1yaDI0NzI1Ni5wYXRjaAotUGF0Y2gyNTogZ2NjNDEtcHBjNjQtaWE2NC1HTlUtc3Rh Y2sucGF0Y2gKLVBhdGNoMjY6IGdjYzQxLXByMzM1MDYucGF0Y2gKLVBhdGNoMjc6IGdjYzQxLWFy dGlmaWNpYWwtYXR0cmliLnBhdGNoCi1QYXRjaDI4OiBnY2M0MS1lcnJvci1hdHRyaWIucGF0Y2gK LVBhdGNoMjk6IGdjYzQxLWpkd3AucGF0Y2gKLVBhdGNoMzA6IGdjYzQxLXByMjA4ODAucGF0Y2gK LVBhdGNoMzE6IGdjYzQxLXByMzI2OTQucGF0Y2gKLVBhdGNoMzI6IGdjYzQxLXZpcnR1YWwtaW5s aW5lLWJhY2t0cmFjZS5wYXRjaAotUGF0Y2gzMzogZ2NjNDEtYysrLWdudS1pbmxpbmUtcmVkZWNs LnBhdGNoCi1QYXRjaDM0OiBnY2M0MS1jKystYnVpbHRpbi1yZWRlY2wucGF0Y2gKLVBhdGNoMzU6 IGdjYzQxLWMrKy1ndWFyZC12aXNpYmlsaXR5LnBhdGNoCi1QYXRjaDM2OiBnY2M0MS1wcjMyMTIx LnBhdGNoCi1QYXRjaDM3OiBnY2M0MS1wcjMzMTM2LnBhdGNoCi1QYXRjaDM4OiBnY2M0MS1wcjMz MjM4LnBhdGNoCi1QYXRjaDM5OiBnY2M0MS1wcjMzNjE5LnBhdGNoCi1QYXRjaDQwOiBnY2M0MS1w cjMzNjM5LnBhdGNoCi1QYXRjaDQyOiBnY2M0MS1wcjMzNzYzLnBhdGNoCi1QYXRjaDQzOiBnY2M0 MS1yaDMxNzA1MS5wYXRjaAotUGF0Y2g0NDogZ2NjNDEtcmgzMzA3NzEucGF0Y2gKLVBhdGNoNDU6 IGdjYzQxLXJoMzQxMjIxLnBhdGNoCi1QYXRjaDQ3OiBnY2M0MS1qYXZhLWFybTEucGF0Y2gKLVBh dGNoNDg6IGdjYzQxLWphdmEtYXJtMi5wYXRjaAotUGF0Y2g0OTogZ2NjNDEtamF2YS1hcm0zLnBh dGNoCi1QYXRjaDUwOiBnY2M0MS1qYXZhLWFybTQucGF0Y2gKLVBhdGNoNTE6IGdjYzQxLWphdmEt YXJtNS5wYXRjaAotUGF0Y2g1MjogZ2NjNDEtamF2YS1hcm02LnBhdGNoCi1QYXRjaDUzOiBnY2M0 MS1qYXZhLWFybTcucGF0Y2gKLVBhdGNoNTQ6IGdjYzQxLWphdmEtYXJtOC5wYXRjaAotUGF0Y2g1 NTogZ2NjNDEtcHIyMzg0OC5wYXRjaAotUGF0Y2g1NjogZ2NjNDEtcHIyOTIyNS5wYXRjaAotUGF0 Y2g1NzogZ2NjNDEtcHIyOTcxMi5wYXRjaAotUGF0Y2g1ODogZ2NjNDEtcHIzMDI5My5wYXRjaAot UGF0Y2g1OTogZ2NjNDEtcHIzMDk4OC5wYXRjaAotUGF0Y2g2MDogZ2NjNDEtcHIzMjI0MS5wYXRj aAotUGF0Y2g2MTogZ2NjNDEtcHIzMjM4NC5wYXRjaAotUGF0Y2g2MjogZ2NjNDEtcHIzMzUwMS5w YXRjaAotUGF0Y2g2MzogZ2NjNDEtcHIzMzUxNi5wYXRjaAotUGF0Y2g2NDogZ2NjNDEtcHIzMzUz Ny5wYXRjaAotUGF0Y2g2NTogZ2NjNDEtcHIzMzYxNi5wYXRjaAotUGF0Y2g2NjogZ2NjNDEtcHIz MzcyMy5wYXRjaAotUGF0Y2g2NzogZ2NjNDEtcHIzMzgzNi5wYXRjaAotUGF0Y2g2ODogZ2NjNDEt cHIzMzg0Mi5wYXRjaAotUGF0Y2g2OTogZ2NjNDEtcHIzMzg0NC5wYXRjaAotUGF0Y2g3MDogZ2Nj NDEtcHIzMzk2Mi5wYXRjaAotUGF0Y2g3MTogZ2NjNDEtcHIzNDA3MC5wYXRjaAotUGF0Y2g3Mjog Z2NjNDEtcHIzNDA4OS5wYXRjaAotUGF0Y2g3MzogZ2NjNDEtcHIzNDE3OC5wYXRjaAotUGF0Y2g3 NDogZ2NjNDEtcHIzNDEzMC5wYXRjaAotUGF0Y2g3NTogZ2NjNDEtcHIzNDE0Ni5wYXRjaAotUGF0 Y2g3NjogZ2NjNDEtcmgzNjQwMDEucGF0Y2gKLVBhdGNoNzc6IGdjYzQxLXByMzQyMTMucGF0Y2gK LVBhdGNoNzg6IGdjYzQxLXByMzQzNjQucGF0Y2gKLVBhdGNoNzk6IGdjYzQxLXByMzQyNzUucGF0 Y2gKLVBhdGNoODA6IGdjYzQxLXJoNDA3MjgxLnBhdGNoCi1QYXRjaDgxOiBnY2M0MS1wcjM0Mzk0 LnBhdGNoCi1QYXRjaDgyOiBnY2M0MS1kZWJ1Zy1mb3J0cmFuLWFycmF5LnBhdGNoCi1QYXRjaDgz OiBnY2M0MS1vbXAtb3V0ZXItY3R4LnBhdGNoCi0KLSMgT24gQVJNIEVBQkkgc3lzdGVtcywgd2Ug ZG8gd2FudCAtZ251ZWFiaSB0byBiZSBwYXJ0IG9mIHRoZQotIyB0YXJnZXQgdHJpcGxlLgotJWlm bmFyY2ggJXthcm19Ci0lZGVmaW5lIF9nbnUgJXtuaWx9Ci0lZW5kaWYKLSVpZmFyY2ggc3BhcmMK LSVkZWZpbmUgZ2NjX3RhcmdldF9wbGF0Zm9ybSBzcGFyYzY0LSV7X3ZlbmRvcn0tJXtfdGFyZ2V0 X29zfQotJWVuZGlmCi0laWZhcmNoIHBwYwotJWRlZmluZSBnY2NfdGFyZ2V0X3BsYXRmb3JtIHBw YzY0LSV7X3ZlbmRvcn0tJXtfdGFyZ2V0X29zfQotJWVuZGlmCi0laWZuYXJjaCBzcGFyYyBwcGMK LSVkZWZpbmUgZ2NjX3RhcmdldF9wbGF0Zm9ybSAle190YXJnZXRfcGxhdGZvcm19Ci0lZW5kaWYK LQotJWRlc2NyaXB0aW9uCi1UaGUgZ2NjIHBhY2thZ2UgY29udGFpbnMgdGhlIEdOVSBDb21waWxl ciBDb2xsZWN0aW9uIHZlcnNpb24gNC4xLgotWW91J2xsIG5lZWQgdGhpcyBwYWNrYWdlIGluIG9y ZGVyIHRvIGNvbXBpbGUgQyBjb2RlLgotCi0lcGFja2FnZSAtbiBsaWJnY2MKLVN1bW1hcnk6IEdD QyB2ZXJzaW9uIDQuMSBzaGFyZWQgc3VwcG9ydCBsaWJyYXJ5Ci1Hcm91cDogU3lzdGVtIEVudmly b25tZW50L0xpYnJhcmllcwotQXV0b3JlcTogZmFsc2UKLQotJWRlc2NyaXB0aW9uIC1uIGxpYmdj YwotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIEdDQyBzaGFyZWQgc3VwcG9ydCBsaWJyYXJ5IHdoaWNo IGlzIG5lZWRlZAotZS5nLiBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIHN1cHBvcnQuCi0KLSVwYWNr YWdlIGMrKwotU3VtbWFyeTogQysrIHN1cHBvcnQgZm9yIEdDQwotR3JvdXA6IERldmVsb3BtZW50 L0xhbmd1YWdlcwotUmVxdWlyZXM6IGdjYyA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQotUmVxdWly ZXM6IGxpYnN0ZGMrKyA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQotUmVxdWlyZXM6IGxpYnN0ZGMr Ky1kZXZlbCA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQotT2Jzb2xldGVzOiBnY2MzLWMrKwotT2Jz b2xldGVzOiBnY2MzNC1jKysKLU9ic29sZXRlczogZ2NjMzUtYysrCi1PYnNvbGV0ZXM6IGdjYzQt YysrCi1BdXRvcmVxOiB0cnVlCi0KLSVkZXNjcmlwdGlvbiBjKysKLVRoaXMgcGFja2FnZSBhZGRz IEMrKyBzdXBwb3J0IHRvIHRoZSBHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbi4KLUl0IGluY2x1ZGVz IHN1cHBvcnQgZm9yIG1vc3Qgb2YgdGhlIGN1cnJlbnQgQysrIHNwZWNpZmljYXRpb24sCi1pbmNs dWRpbmcgdGVtcGxhdGVzIGFuZCBleGNlcHRpb24gaGFuZGxpbmcuCi0KLSVwYWNrYWdlIC1uIGxp YnN0ZGMrKwotU3VtbWFyeTogR05VIFN0YW5kYXJkIEMrKyBMaWJyYXJ5Ci1Hcm91cDogU3lzdGVt IEVudmlyb25tZW50L0xpYnJhcmllcwotT2Jzb2xldGVzOiBsaWJzdGRjKyszCi1PYnNvbGV0ZXM6 IGxpYnN0ZGMrKzM0Ci1BdXRvcmVxOiB0cnVlCi0KLSVkZXNjcmlwdGlvbiAtbiBsaWJzdGRjKysK LVRoZSBsaWJzdGRjKysgcGFja2FnZSBjb250YWlucyBhIHJld3JpdHRlbiBzdGFuZGFyZCBjb21w bGlhbnQgR0NDIFN0YW5kYXJkCi1DKysgTGlicmFyeS4KLQotJXBhY2thZ2UgLW4gbGlic3RkYysr LWRldmVsCi1TdW1tYXJ5OiBIZWFkZXIgZmlsZXMgYW5kIGxpYnJhcmllcyBmb3IgQysrIGRldmVs b3BtZW50Ci1Hcm91cDogRGV2ZWxvcG1lbnQvTGlicmFyaWVzCi1SZXF1aXJlczogbGlic3RkYysr ID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9LCAle19wcmVmaXh9LyV7X2xpYn0vbGlic3RkYysrLnNv LjYKLU9ic29sZXRlczogbGlic3RkYysrMy1kZXZlbAotT2Jzb2xldGVzOiBsaWJzdGRjKyszNC1k ZXZlbAotQXV0b3JlcTogdHJ1ZQotCi0lZGVzY3JpcHRpb24gLW4gbGlic3RkYysrLWRldmVsCi1U aGlzIGlzIHRoZSBHTlUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YW5kYXJkIEMrKyBsaWJyYXJp ZXMuICBUaGlzCi1wYWNrYWdlIGluY2x1ZGVzIHRoZSBoZWFkZXIgZmlsZXMgYW5kIGxpYnJhcmll cyBuZWVkZWQgZm9yIEMrKwotZGV2ZWxvcG1lbnQuIFRoaXMgaW5jbHVkZXMgcmV3cml0dGVuIGlt cGxlbWVudGF0aW9uIG9mIFNUTC4KLQotJXBhY2thZ2Ugb2JqYwotU3VtbWFyeTogT2JqZWN0aXZl LUMgc3VwcG9ydCBmb3IgR0NDCi1Hcm91cDogRGV2ZWxvcG1lbnQvTGFuZ3VhZ2VzCi1SZXF1aXJl czogZ2NjID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9Ci1SZXF1aXJlczogbGlib2JqYyA9ICV7dmVy c2lvbn0tJXtyZWxlYXNlfQotT2Jzb2xldGVzOiBnY2MzLW9iamMKLUF1dG9yZXE6IHRydWUKLQot JWRlc2NyaXB0aW9uIG9iamMKLWdjYy1vYmpjIHByb3ZpZGVzIE9iamVjdGl2ZS1DIHN1cHBvcnQg Zm9yIHRoZSBHQ0MuCi1NYWlubHkgdXNlZCBvbiBzeXN0ZW1zIHJ1bm5pbmcgTmVYVFNURVAsIE9i amVjdGl2ZS1DIGlzIGFuCi1vYmplY3Qtb3JpZW50ZWQgZGVyaXZhdGl2ZSBvZiB0aGUgQyBsYW5n dWFnZS4KLQotJXBhY2thZ2Ugb2JqYysrCi1TdW1tYXJ5OiBPYmplY3RpdmUtQysrIHN1cHBvcnQg Zm9yIEdDQwotR3JvdXA6IERldmVsb3BtZW50L0xhbmd1YWdlcwotUmVxdWlyZXM6IGdjYy1jKysg PSAle3ZlcnNpb259LSV7cmVsZWFzZX0sIGdjYy1vYmpjID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9 Ci1BdXRvcmVxOiB0cnVlCi0KLSVkZXNjcmlwdGlvbiBvYmpjKysKLWdjYy1vYmpjKysgcGFja2Fn ZSBwcm92aWRlcyBPYmplY3RpdmUtQysrIHN1cHBvcnQgZm9yIHRoZSBHQ0MuCi0KLSVwYWNrYWdl IC1uIGxpYm9iamMKLVN1bW1hcnk6IE9iamVjdGl2ZS1DIHJ1bnRpbWUKLUdyb3VwOiBTeXN0ZW0g RW52aXJvbm1lbnQvTGlicmFyaWVzCi1BdXRvcmVxOiB0cnVlCi0KLSVkZXNjcmlwdGlvbiAtbiBs aWJvYmpjCi1UaGlzIHBhY2thZ2UgY29udGFpbnMgT2JqZWN0aXZlLUMgc2hhcmVkIGxpYnJhcnkg d2hpY2ggaXMgbmVlZGVkIHRvIHJ1bgotT2JqZWN0aXZlLUMgZHluYW1pY2FsbHkgbGlua2VkIHBy b2dyYW1zLgotCi0lcGFja2FnZSBnZm9ydHJhbgotU3VtbWFyeTogRm9ydHJhbiA5NSBzdXBwb3J0 Ci1Hcm91cDogRGV2ZWxvcG1lbnQvTGFuZ3VhZ2VzCi1SZXF1aXJlczogZ2NjID0gJXt2ZXJzaW9u fS0le3JlbGVhc2V9Ci1SZXF1aXJlczogbGliZ2ZvcnRyYW4gPSAle3ZlcnNpb259LSV7cmVsZWFz ZX0KLUJ1aWxkUmVxdWlyZXM6IGdtcC1kZXZlbCA+PSA0LjEuMi04LCBtcGZyLWRldmVsID49IDIu Mi4xCi1QcmVyZXE6IC9zYmluL2luc3RhbGwtaW5mbwotT2Jzb2xldGVzOiBnY2MzLWc3NwotT2Jz b2xldGVzOiBnY2MtZzc3Ci1PYnNvbGV0ZXM6IGdjYzQtZ2ZvcnRyYW4KLUF1dG9yZXE6IHRydWUK LQotJWRlc2NyaXB0aW9uIGdmb3J0cmFuCi1UaGUgZ2NjLWdmb3J0cmFuIHBhY2thZ2UgcHJvdmlk ZXMgc3VwcG9ydCBmb3IgY29tcGlsaW5nIEZvcnRyYW4gOTUKLXByb2dyYW1zIHdpdGggdGhlIEdO VSBDb21waWxlciBDb2xsZWN0aW9uLgotCi0lcGFja2FnZSAtbiBsaWJnZm9ydHJhbgotU3VtbWFy eTogRm9ydHJhbiA5NSBydW50aW1lCi1Hcm91cDogU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmll cwotT2Jzb2xldGVzOiBsaWJmMmMKLUF1dG9yZXE6IHRydWUKLQotJWRlc2NyaXB0aW9uIC1uIGxp Ymdmb3J0cmFuCi1UaGlzIHBhY2thZ2UgY29udGFpbnMgRm9ydHJhbiA5NSBzaGFyZWQgbGlicmFy eSB3aGljaCBpcyBuZWVkZWQgdG8gcnVuCi1Gb3J0cmFuIDk1IGR5bmFtaWNhbGx5IGxpbmtlZCBw cm9ncmFtcy4KLQotJXBhY2thZ2UgLW4gbGliZ29tcAotU3VtbWFyeTogR0NDIE9wZW5NUCAyLjUg c2hhcmVkIHN1cHBvcnQgbGlicmFyeQotR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJp ZXMKLQotJWRlc2NyaXB0aW9uIC1uIGxpYmdvbXAKLVRoaXMgcGFja2FnZSBjb250YWlucyBHQ0Mg c2hhcmVkIHN1cHBvcnQgbGlicmFyeSB3aGljaCBpcyBuZWVkZWQKLWZvciBPcGVuTVAgMi41IHN1 cHBvcnQuCi0KLSVwYWNrYWdlIC1uIGxpYm11ZGZsYXAKLVN1bW1hcnk6IEdDQyBtdWRmbGFwIHNo YXJlZCBzdXBwb3J0IGxpYnJhcnkKLUdyb3VwOiBTeXN0ZW0gRW52aXJvbm1lbnQvTGlicmFyaWVz Ci0KLSVkZXNjcmlwdGlvbiAtbiBsaWJtdWRmbGFwCi1UaGlzIHBhY2thZ2UgY29udGFpbnMgR0ND IHNoYXJlZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggaXMgbmVlZGVkCi1mb3IgbXVkZmxhcCBzdXBw b3J0LgotCi0lcGFja2FnZSAtbiBsaWJtdWRmbGFwLWRldmVsCi1TdW1tYXJ5OiBHQ0MgbXVkZmxh cCBzdXBwb3J0Ci1Hcm91cDogRGV2ZWxvcG1lbnQvTGlicmFyaWVzCi1SZXF1aXJlczogbGlibXVk ZmxhcCA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQotUmVxdWlyZXM6IGdjYyA9ICV7dmVyc2lvbn0t JXtyZWxlYXNlfQotCi0lZGVzY3JpcHRpb24gLW4gbGlibXVkZmxhcC1kZXZlbAotVGhpcyBwYWNr YWdlIGNvbnRhaW5zIGhlYWRlcnMgYW5kIHN0YXRpYyBsaWJyYXJpZXMgZm9yIGJ1aWxkaW5nCi1t dWRmbGFwLWluc3RydW1lbnRlZCBwcm9ncmFtcy4KLQotVG8gaW5zdHJ1bWVudCBhIG5vbi10aHJl YWRlZCBwcm9ncmFtLCBhZGQgLWZtdWRmbGFwCi1vcHRpb24gdG8gR0NDIGFuZCB3aGVuIGxpbmtp bmcgYWRkIC1sbXVkZmxhcCwgZm9yIHRocmVhZGVkIHByb2dyYW1zCi1hbHNvIGFkZCAtZm11ZGZs YXB0aCBhbmQgLWxtdWRmbGFwdGguCi0KLSVwYWNrYWdlIGphdmEKLVN1bW1hcnk6IEphdmEgc3Vw cG9ydCBmb3IgR0NDCi1Hcm91cDogRGV2ZWxvcG1lbnQvTGFuZ3VhZ2VzCi1SZXF1aXJlczogZ2Nj ID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9Ci1SZXF1aXJlczogbGliZ2NqID0gJXt2ZXJzaW9ufS0l e3JlbGVhc2V9Ci1SZXF1aXJlczogbGliZ2NqLWRldmVsID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9 Ci1SZXF1aXJlczogL3Vzci9zaGFyZS9qYXZhL2VjbGlwc2UtZWNqLmphcgotT2Jzb2xldGVzOiBn Y2MzLWphdmEKLU9ic29sZXRlczogZ2NjMzQtamF2YQotT2Jzb2xldGVzOiBnY2MzNS1qYXZhCi1P YnNvbGV0ZXM6IGdjYzQtamF2YQotUHJlcmVxOiAvc2Jpbi9pbnN0YWxsLWluZm8KLUF1dG9yZXE6 IHRydWUKLQotJWRlc2NyaXB0aW9uIGphdmEKLVRoaXMgcGFja2FnZSBhZGRzIHN1cHBvcnQgZm9y IGNvbXBpbGluZyBKYXZhKHRtKSBwcm9ncmFtcyBhbmQKLWJ5dGVjb2RlIGludG8gbmF0aXZlIGNv ZGUuCi0KLSVwYWNrYWdlIC1uIGxpYmdjagotU3VtbWFyeTogSmF2YSBydW50aW1lIGxpYnJhcnkg Zm9yIGdjYwotR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJpZXMKLVByZXJlcTogL3Ni aW4vaW5zdGFsbC1pbmZvCi1SZXF1aXJlczogemlwID49IDIuMQotUmVxdWlyZXM6IGd0azIgPj0g Mi40LjAKLVJlcXVpcmVzOiBnbGliMiA+PSAyLjQuMAotUmVxdWlyZXM6IGxpYmFydF9sZ3BsID49 IDIuMS4wCi0laWYgJXtidWlsZF9qYXZhfQotQnVpbGRSZXF1aXJlczogZ3RrMi1kZXZlbCA+PSAy LjQuMAotQnVpbGRSZXF1aXJlczogZ2xpYjItZGV2ZWwgPj0gMi40LjAKLUJ1aWxkUmVxdWlyZXM6 IGZpcmVmb3gtZGV2ZWwKLUJ1aWxkUmVxdWlyZXM6IGxpYmFydF9sZ3BsLWRldmVsID49IDIuMS4w Ci1CdWlsZFJlcXVpcmVzOiBhbHNhLWxpYi1kZXZlbAotQnVpbGRSZXF1aXJlczogbGliWHRzdC1k ZXZlbAotQnVpbGRSZXF1aXJlczogbGliWHQtZGV2ZWwKLSVlbmRpZgotT2Jzb2xldGVzOiBnY2Mt bGliZ2NqCi1PYnNvbGV0ZXM6IGxpYmdjajMKLU9ic29sZXRlczogbGliZ2NqMzQKLU9ic29sZXRl czogbGliZ2NqNAotQXV0b3JlcTogdHJ1ZQotCi0lZGVzY3JpcHRpb24gLW4gbGliZ2NqCi1UaGUg SmF2YSh0bSkgcnVudGltZSBsaWJyYXJ5LiBZb3Ugd2lsbCBuZWVkIHRoaXMgcGFja2FnZSB0byBy dW4geW91ciBKYXZhCi1wcm9ncmFtcyBjb21waWxlZCB1c2luZyB0aGUgSmF2YSBjb21waWxlciBm cm9tIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIChnY2opLgotCi0lcGFja2FnZSAtbiBsaWJnY2ot ZGV2ZWwKLVN1bW1hcnk6IExpYnJhcmllcyBmb3IgSmF2YSBkZXZlbG9wbWVudCB1c2luZyBHQ0MK LUdyb3VwOiBEZXZlbG9wbWVudC9MYW5ndWFnZXMKLVJlcXVpcmVzOiBsaWJnY2ogPSAle3ZlcnNp b259LSV7cmVsZWFzZX0sICV7X3ByZWZpeH0vJXtfbGlifS9saWJnY2ouc28uOHJoCi1SZXF1aXJl czogemxpYi1kZXZlbCwgJXtfcHJlZml4fS8le19saWJ9L2xpYnouc28KLVJlcXVpcmVzOiAvYmlu L2F3awotT2Jzb2xldGVzOiBsaWJnY2ozLWRldmVsCi1PYnNvbGV0ZXM6IGxpYmdjajM0LWRldmVs Ci1PYnNvbGV0ZXM6IGxpYmdjajQtZGV2ZWwKLUF1dG9yZXE6IGZhbHNlCi1BdXRvcHJvdjogZmFs c2UKLQotJWRlc2NyaXB0aW9uIC1uIGxpYmdjai1kZXZlbAotVGhlIEphdmEodG0pIHN0YXRpYyBs aWJyYXJpZXMgYW5kIEMgaGVhZGVyIGZpbGVzLiBZb3Ugd2lsbCBuZWVkIHRoaXMKLXBhY2thZ2Ug dG8gY29tcGlsZSB5b3VyIEphdmEgcHJvZ3JhbXMgdXNpbmcgdGhlIEdDQyBKYXZhIGNvbXBpbGVy IChnY2opLgotCi0lcGFja2FnZSAtbiBsaWJnY2otc3JjCi1TdW1tYXJ5OiBKYXZhIGxpYnJhcnkg c291cmNlcyBmcm9tIEdDQzQgcHJldmlldwotR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9MaWJy YXJpZXMKLVJlcXVpcmVzOiBsaWJnY2ogPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KLU9ic29sZXRl czogbGliZ2NqNC1zcmMKLUF1dG9yZXE6IHRydWUKLQotJWRlc2NyaXB0aW9uIC1uIGxpYmdjai1z cmMKLVRoZSBKYXZhKHRtKSBydW50aW1lIGxpYnJhcnkgc291cmNlcyBmb3IgdXNlIGluIEVjbGlw c2UuCi0KLSVwYWNrYWdlIC1uIGNwcAotU3VtbWFyeTogVGhlIEMgUHJlcHJvY2Vzc29yLgotR3Jv dXA6IERldmVsb3BtZW50L0xhbmd1YWdlcwotUHJlcmVxOiAvc2Jpbi9pbnN0YWxsLWluZm8KLSVp ZmFyY2ggaWE2NAotT2Jzb2xldGVzOiBnbnVwcm8KLSVlbmRpZgotQXV0b3JlcTogdHJ1ZQotCi0l ZGVzY3JpcHRpb24gLW4gY3BwCi1DcHAgaXMgdGhlIEdOVSBDLUNvbXBhdGlibGUgQ29tcGlsZXIg UHJlcHJvY2Vzc29yLgotQ3BwIGlzIGEgbWFjcm8gcHJvY2Vzc29yIHdoaWNoIGlzIHVzZWQgYXV0 b21hdGljYWxseQotYnkgdGhlIEMgY29tcGlsZXIgdG8gdHJhbnNmb3JtIHlvdXIgcHJvZ3JhbSBi ZWZvcmUgYWN0dWFsCi1jb21waWxhdGlvbi4gSXQgaXMgY2FsbGVkIGEgbWFjcm8gcHJvY2Vzc29y IGJlY2F1c2UgaXQgYWxsb3dzCi15b3UgdG8gZGVmaW5lIG1hY3JvcywgYWJicmV2aWF0aW9ucyBm b3IgbG9uZ2VyCi1jb25zdHJ1Y3RzLgotCi1UaGUgQyBwcmVwcm9jZXNzb3IgcHJvdmlkZXMgZm91 ciBzZXBhcmF0ZSBmdW5jdGlvbmFsaXRpZXM6IHRoZQotaW5jbHVzaW9uIG9mIGhlYWRlciBmaWxl cyAoZmlsZXMgb2YgZGVjbGFyYXRpb25zIHRoYXQgY2FuIGJlCi1zdWJzdGl0dXRlZCBpbnRvIHlv dXIgcHJvZ3JhbSk7IG1hY3JvIGV4cGFuc2lvbiAoeW91IGNhbiBkZWZpbmUgbWFjcm9zLAotYW5k IHRoZSBDIHByZXByb2Nlc3NvciB3aWxsIHJlcGxhY2UgdGhlIG1hY3JvcyB3aXRoIHRoZWlyIGRl ZmluaXRpb25zCi10aHJvdWdob3V0IHRoZSBwcm9ncmFtKTsgY29uZGl0aW9uYWwgY29tcGlsYXRp b24gKHVzaW5nIHNwZWNpYWwKLXByZXByb2Nlc3NpbmcgZGlyZWN0aXZlcywgeW91IGNhbiBpbmNs dWRlIG9yIGV4Y2x1ZGUgcGFydHMgb2YgdGhlCi1wcm9ncmFtIGFjY29yZGluZyB0byB2YXJpb3Vz IGNvbmRpdGlvbnMpOyBhbmQgbGluZSBjb250cm9sIChpZiB5b3UgdXNlCi1hIHByb2dyYW0gdG8g Y29tYmluZSBvciByZWFycmFuZ2Ugc291cmNlIGZpbGVzIGludG8gYW4gaW50ZXJtZWRpYXRlCi1m aWxlIHdoaWNoIGlzIHRoZW4gY29tcGlsZWQsIHlvdSBjYW4gdXNlIGxpbmUgY29udHJvbCB0byBp bmZvcm0gdGhlCi1jb21waWxlciBhYm91dCB3aGVyZSBlYWNoIHNvdXJjZSBsaW5lIG9yaWdpbmF0 ZWQpLgotCi1Zb3Ugc2hvdWxkIGluc3RhbGwgdGhpcyBwYWNrYWdlIGlmIHlvdSBhcmUgYSBDIHBy b2dyYW1tZXIgYW5kIHlvdSB1c2UKLW1hY3Jvcy4KLQotJXBhY2thZ2UgZ25hdAotU3VtbWFyeTog QWRhIDk1IHN1cHBvcnQgZm9yIEdDQwotR3JvdXA6IERldmVsb3BtZW50L0xhbmd1YWdlcwotUmVx dWlyZXM6IGdjYyA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfSwgbGliZ25hdCA9ICV7dmVyc2lvbn0t JXtyZWxlYXNlfQotT2Jzb2xldGVzOiBnbmF0LWRldmVsLCBnY2MzLWduYXQKLVByZXJlcTogL3Ni aW4vaW5zdGFsbC1pbmZvCi1BdXRvcmVxOiB0cnVlCi0KLSVkZXNjcmlwdGlvbiBnbmF0Ci1HTkFU IGlzIGEgR05VIEFkYSA5NSBmcm9udC1lbmQgdG8gR0NDLiBUaGlzIHBhY2thZ2UgaW5jbHVkZXMg ZGV2ZWxvcG1lbnQgdG9vbHMsCi10aGUgZG9jdW1lbnRzIGFuZCBBZGEgOTUgY29tcGlsZXIuCi0K LSVwYWNrYWdlIC1uIGxpYmduYXQKLVN1bW1hcnk6IEdOVSBBZGEgOTUgcnVudGltZSBzaGFyZWQg bGlicmFyaWVzCi1Hcm91cDogU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcwotT2Jzb2xldGVz OiBnbmF0IGxpYmduYXQzCi1BdXRvcmVxOiB0cnVlCi0KLSVkZXNjcmlwdGlvbiAtbiBsaWJnbmF0 Ci1HTkFUIGlzIGEgR05VIEFkYSA5NSBmcm9udC1lbmQgdG8gR0NDLiBUaGlzIHBhY2thZ2UgaW5j bHVkZXMgc2hhcmVkIGxpYnJhcmllcywKLXdoaWNoIGFyZSByZXF1aXJlZCB0byBydW4gcHJvZ3Jh bXMgY29tcGlsZWQgd2l0aCB0aGUgR05BVC4KLQotJXByZXAKLSVzZXR1cCAtcSAtbiBnY2MtJXt2 ZXJzaW9ufS0le0RBVEV9Ci0lcGF0Y2gxIC1wMCAtYiAuaWNlLWhhY2t+Ci0lcGF0Y2gyIC1wMCAt YiAucHBjNjQtbTMyLW02NC1tdWx0aWxpYi1vbmx5fgotJXBhdGNoMyAtcDAgLWIgLmlhNjQtbGli dW53aW5kfgotJXBhdGNoNCAtcDAgLWIgLmdudWMtcmgtcmVsZWFzZX4KLSVwYXRjaDUgLXAwIC1i IC5qYXZhLW5vbXVsdGl+Ci0lcGF0Y2g2IC1wMCAtYiAuYWRhLXByMTgzMDJ+Ci0lcGF0Y2g3IC1w MCAtYiAuYWRhLXR3ZWFrc34KLSVwYXRjaDggLXAwIC1iIC5qYXZhLXNsb3dfcHRocmVhZF9zZWxm fgotJXBhdGNoOSAtcDAgLWIgLnBwYzMyLXJldGFkZHJ+Ci0lcGF0Y2gxMCAtcDAgLWIgLmRzb2hh bmRsZX4KLSVwYXRjaDExIC1wMCAtYiAucmgxODQ0NDZ+Ci0lcGF0Y2gxMiAtcDAgLUUgLWIgLnBy MjAyOTctdGVzdH4KLSVwYXRjaDEzIC1wMCAtYiAuaGFzaC1zdHlsZS1nbnV+Ci0lcGF0Y2gxNCAt cDAgLWIgLmphdmEtbGliZG90ZG90bGlifgotJXBhdGNoMTUgLXAwIC1iIC5wcjI4NzU1fgotJXBh dGNoMTYgLXAwIC1iIC5wcjI3ODk4fgotJXBhdGNoMTcgLXAwIC1iIC5qYXZhLWJvZ3VzLWRlYnVn bGluZX4KLSVwYXRjaDE4IC1wMCAtYiAubGliamF2YS12aXNpYmlsaXR5fgotJXBhdGNoMTkgLXAw IC1iIC5wcjMyMTM5fgotJXBhdGNoMjAgLXAwIC1iIC5yaDIzNjg5NX4KLSVwYXRjaDIxIC1wMCAt YiAucmgyMzUwMDh+Ci0lcGF0Y2gyMiAtcDAgLWIgLmJ1aWxkLWlkfgotJXBhdGNoMjMgLXAwIC1i IC5wcjI4NjkwfgotJXBhdGNoMjQgLXAwIC1iIC5yaDI0NzI1Nn4KLSVwYXRjaDI1IC1wMCAtYiAu cHBjNjQtaWE2NC1HTlUtc3RhY2t+Ci0lcGF0Y2gyNiAtcDAgLWIgLnByMzM1MDZ+Ci0lcGF0Y2gy NyAtcDAgLWIgLmFydGlmaWNpYWwtYXR0cmlifgotJXBhdGNoMjggLXAwIC1iIC5lcnJvci1hdHRy aWJ+Ci0lcGF0Y2gyOSAtcDAgLWIgLmpkd3B+Ci0lcGF0Y2gzMCAtcDAgLWIgLnByMjA4ODB+Ci0l cGF0Y2gzMSAtcDAgLWIgLnByMzI2OTR+Ci0lcGF0Y2gzMiAtcDAgLWIgLnZpcnR1YWwtaW5saW5l LWJhY2t0cmFjZX4KLSVwYXRjaDMzIC1wMCAtYiAuYysrLWdudS1pbmxpbmUtcmVkZWNsfgotJXBh dGNoMzQgLXAwIC1iIC5jKystYnVpbHRpbi1yZWRlY2x+Ci0lcGF0Y2gzNSAtcDAgLWIgLmMrKy1n dWFyZC12aXNpYmlsaXR5fgotJXBhdGNoMzYgLXAwIC1iIC5wcjMyMTIxfgotJXBhdGNoMzcgLXAw IC1iIC5wcjMzMTM2fgotJXBhdGNoMzggLXAwIC1iIC5wcjMzMjM4fgotJXBhdGNoMzkgLXAwIC1i IC5wcjMzNjE5fgotJXBhdGNoNDAgLXAwIC1iIC5wcjMzNjM5fgotJXBhdGNoNDIgLXAwIC1iIC5w cjMzNzYzfgotJXBhdGNoNDMgLXAwIC1iIC5yaDMxNzA1MX4KLSVwYXRjaDQ0IC1wMCAtYiAucmgz MzA3NzF+Ci0lcGF0Y2g0NSAtcDAgLWIgLnJoMzQxMjIxfgotJXBhdGNoNDcgLXAwIC1iIC5qYXZh LWFybTF+Ci0lcGF0Y2g0OCAtcDAgLWIgLmphdmEtYXJtMn4KLSVwYXRjaDQ5IC1wMCAtYiAuamF2 YS1hcm0zfgotJXBhdGNoNTAgLXAwIC1iIC5qYXZhLWFybTR+Ci0lcGF0Y2g1MSAtcDAgLWIgLmph dmEtYXJtNX4KLSVwYXRjaDUyIC1wMCAtYiAuamF2YS1hcm02fgotJXBhdGNoNTMgLXAwIC1iIC5q YXZhLWFybTd+Ci0lcGF0Y2g1NCAtcDAgLWIgLmphdmEtYXJtOH4KLSVwYXRjaDU1IC1wMCAtYiAu cHIyMzg0OH4KLSVwYXRjaDU2IC1wMCAtYiAucHIyOTIyNX4KLSVwYXRjaDU3IC1wMCAtYiAucHIy OTcxMn4KLSVwYXRjaDU4IC1wMCAtYiAucHIzMDI5M34KLSVwYXRjaDU5IC1wMCAtYiAucHIzMDk4 OH4KLSVwYXRjaDYwIC1wMCAtYiAucHIzMjI0MX4KLSVwYXRjaDYxIC1wMCAtYiAucHIzMjM4NH4K LSVwYXRjaDYyIC1wMCAtYiAucHIzMzUwMX4KLSVwYXRjaDYzIC1wMCAtYiAucHIzMzUxNn4KLSVw YXRjaDY0IC1wMCAtYiAucHIzMzUzN34KLSVwYXRjaDY1IC1wMCAtYiAucHIzMzYxNn4KLSVwYXRj aDY2IC1wMCAtYiAucHIzMzcyM34KLSVwYXRjaDY3IC1wMCAtYiAucHIzMzgzNn4KLSVwYXRjaDY4 IC1wMCAtYiAucHIzMzg0Mn4KLSVwYXRjaDY5IC1wMCAtYiAucHIzMzg0NH4KLSVwYXRjaDcwIC1w MCAtYiAucHIzMzk2Mn4KLSVwYXRjaDcxIC1wMCAtYiAucHIzNDA3MH4KLSVwYXRjaDcyIC1wMCAt YiAucHIzNDA4OX4KLSVwYXRjaDczIC1wMCAtYiAucHIzNDE3OH4KLSVwYXRjaDc0IC1wMCAtYiAu cHIzNDEzMH4KLSVwYXRjaDc1IC1wMCAtYiAucHIzNDE0Nn4KLSVwYXRjaDc2IC1wMCAtYiAucmgz NjQwMDF+Ci0lcGF0Y2g3NyAtcDAgLWIgLnByMzQyMTN+Ci0lcGF0Y2g3OCAtcDAgLWIgLnByMzQz NjR+Ci0lcGF0Y2g3OSAtcDAgLWIgLnByMzQyNzV+Ci0lcGF0Y2g4MCAtcDAgLWIgLnJoNDA3Mjgx fgotJXBhdGNoODEgLXAwIC1iIC5wcjM0Mzk0fgotJXBhdGNoODIgLXAwIC1iIC5kZWJ1Zy1mb3J0 cmFuLWFycmF5fgotJXBhdGNoODMgLXAwIC1iIC5vbXAtb3V0ZXItY3R4fgotCi0laWYgJXtib290 c3RyYXBfamF2YX0KLXRhciB4amYgJXtTT1VSQ0UxMH0KLSVlbmRpZgotCi1zZWQgLWkgLWUgJ3Mv NFwuMVwuMy80LjEuMi8nIGdjYy9CQVNFLVZFUiBnY2MvdmVyc2lvbi5jCi1zZWQgLWkgLWUgJ3Mv IiAoUmVkIEhhdFteKV0qKSIvIiAoUmVkIEhhdCAle3ZlcnNpb259LSV7Z2NjX3JlbGVhc2V9KSIv JyBnY2MvdmVyc2lvbi5jCi0KLWNwIC1hIGxpYnN0ZGMrKy12My9jb25maWcvY3B1L2l7NCwzfTg2 L2F0b21pY2l0eS5oCi0KLSMgSGFjayB0byBhdm9pZCBidWlsZGluZyBtdWx0aWxpYiBsaWJqYXZh Ci1wZXJsIC1waSAtZSAncy9eYWxsOiBhbGwtcmVkaXJlY3QvaWZlcSAoXCQoTVVMVElTVUJESVIp LClcbmFsbDogYWxsLXJlZGlyZWN0XG5lbHNlXG5hbGw6XG5cdGVjaG8gTXVsdGlsaWIgbGliamF2 YSBidWlsZCBkaXNhYmxlZFxuZW5kaWYvJyBsaWJqYXZhL01ha2VmaWxlLmluCi1wZXJsIC1waSAt ZSAncy9eaW5zdGFsbDogaW5zdGFsbC1yZWRpcmVjdC9pZmVxIChcJChNVUxUSVNVQkRJUiksKVxu aW5zdGFsbDogaW5zdGFsbC1yZWRpcmVjdFxuZWxzZVxuaW5zdGFsbDpcblx0ZWNobyBNdWx0aWxp YiBsaWJqYXZhIGluc3RhbGwgZGlzYWJsZWRcbmVuZGlmLycgbGliamF2YS9NYWtlZmlsZS5pbgot cGVybCAtcGkgLWUgJ3MvXmNoZWNrOiBjaGVjay1yZWRpcmVjdC9pZmVxIChcJChNVUxUSVNVQkRJ UiksKVxuY2hlY2s6IGNoZWNrLXJlZGlyZWN0XG5lbHNlXG5jaGVjazpcblx0ZWNobyBNdWx0aWxp YiBsaWJqYXZhIGNoZWNrIGRpc2FibGVkXG5lbmRpZi8nIGxpYmphdmEvTWFrZWZpbGUuaW4KLXBl cmwgLXBpIC1lICdzL15hbGw6IGFsbC1yZWN1cnNpdmUvaWZlcSAoXCQoTVVMVElTVUJESVIpLClc bmFsbDogYWxsLXJlY3Vyc2l2ZVxuZWxzZVxuYWxsOlxuXHRlY2hvIE11bHRpbGliIGxpYmphdmEg YnVpbGQgZGlzYWJsZWRcbmVuZGlmLycgbGliamF2YS9NYWtlZmlsZS5pbgotcGVybCAtcGkgLWUg J3MvXmluc3RhbGw6IGluc3RhbGwtcmVjdXJzaXZlL2lmZXEgKFwkKE1VTFRJU1VCRElSKSwpXG5p bnN0YWxsOiBpbnN0YWxsLXJlY3Vyc2l2ZVxuZWxzZVxuaW5zdGFsbDpcblx0ZWNobyBNdWx0aWxp YiBsaWJqYXZhIGluc3RhbGwgZGlzYWJsZWRcbmVuZGlmLycgbGliamF2YS9NYWtlZmlsZS5pbgot cGVybCAtcGkgLWUgJ3MvXmNoZWNrOiBjaGVjay1yZWN1cnNpdmUvaWZlcSAoXCQoTVVMVElTVUJE SVIpLClcbmNoZWNrOiBjaGVjay1yZWN1cnNpdmVcbmVsc2VcbmNoZWNrOlxuXHRlY2hvIE11bHRp bGliIGxpYmphdmEgY2hlY2sgZGlzYWJsZWRcbmVuZGlmLycgbGliamF2YS9NYWtlZmlsZS5pbgot Ci0uL2NvbnRyaWIvZ2NjX3VwZGF0ZSAtLXRvdWNoCi0KLSVpZmFyY2ggcHBjCi1pZiBbIC1kIGxp YnN0ZGMrKy12My9jb25maWcvYWJpL3Bvd2VycGM2NC1saW51eC1nbnUgXTsgdGhlbgotICBta2Rp ciAtcCBsaWJzdGRjKystdjMvY29uZmlnL2FiaS9wb3dlcnBjNjQtbGludXgtZ251LzY0Ci0gIG12 IGxpYnN0ZGMrKy12My9jb25maWcvYWJpL3Bvd2VycGM2NC1saW51eC1nbnUveyw2NC99YmFzZWxp bmVfc3ltYm9scy50eHQKLSAgbXYgbGlic3RkYysrLXYzL2NvbmZpZy9hYmkvcG93ZXJwYzY0LWxp bnV4LWdudS97MzIvLH1iYXNlbGluZV9zeW1ib2xzLnR4dAotICBybSAtcmYgbGlic3RkYysrLXYz L2NvbmZpZy9hYmkvcG93ZXJwYzY0LWxpbnV4LWdudS8zMgotZmkKLSVlbmRpZgotJWlmYXJjaCBz cGFyYwotaWYgWyAtZCBsaWJzdGRjKystdjMvY29uZmlnL2FiaS9zcGFyYzY0LWxpbnV4LWdudSBd OyB0aGVuCi0gIG1rZGlyIC1wIGxpYnN0ZGMrKy12My9jb25maWcvYWJpL3NwYXJjNjQtbGludXgt Z251LzY0Ci0gIG12IGxpYnN0ZGMrKy12My9jb25maWcvYWJpL3NwYXJjNjQtbGludXgtZ251L3ss NjQvfWJhc2VsaW5lX3N5bWJvbHMudHh0Ci0gIG12IGxpYnN0ZGMrKy12My9jb25maWcvYWJpL3Nw YXJjNjQtbGludXgtZ251L3szMi8sfWJhc2VsaW5lX3N5bWJvbHMudHh0Ci0gIHJtIC1yZiBsaWJz dGRjKystdjMvY29uZmlnL2FiaS9zcGFyYzY0LWxpbnV4LWdudS8zMgotZmkKLSVlbmRpZgotCi0l YnVpbGQKLQotcm0gLWZyIG9iai0le2djY190YXJnZXRfcGxhdGZvcm19Ci1ta2RpciBvYmotJXtn Y2NfdGFyZ2V0X3BsYXRmb3JtfQotY2Qgb2JqLSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KLQotaWYg WyAhIC1mIC91c3IvbGliL2xvY2FsZS9kZV9ERS9MQ19DVFlQRSBdOyB0aGVuCi0gIG1rZGlyIGxv Y2FsZQotICBsb2NhbGVkZWYgLWYgSVNPLTg4NTktMSAtaSBkZV9ERSBsb2NhbGUvZGVfREUKLSAg ZXhwb3J0IExPQ1BBVEg9YHB3ZGAvbG9jYWxlOi91c3IvbGliL2xvY2FsZQotZmkKLQotJWlmICV7 YnVpbGRfamF2YX0KLSVpZiAhJXtib290c3RyYXBfamF2YX0KLSMgSWYgd2UgZG9uJ3QgaGF2ZSBn amF2YWggaW4gJFBBVEgsIHRyeSB0byBidWlsZCBpdCB3aXRoIHRoZSBvbGQgZ2lqCi1ta2RpciBq YXZhX2hhY2tzCi1jZCBqYXZhX2hhY2tzCi1pZiBbICEgLXggL3Vzci9iaW4vZ2phdmFoIF07IHRo ZW4KLSAgY3AgLWEgLi4vLi4vbGliamF2YS9jbGFzc3BhdGgvdG9vbHMvZXh0ZXJuYWwgZXh0ZXJu YWwKLSAgbWtkaXIgLXAgZ251L2NsYXNzcGF0aC90b29scwotICBjcCAtYSAuLi8uLi9saWJqYXZh L2NsYXNzcGF0aC90b29scy9nbnUvY2xhc3NwYXRoL3Rvb2xzL3tjb21tb24samF2YWgsZ2V0b3B0 fSBnbnUvY2xhc3NwYXRoL3Rvb2xzLwotICBjcCAtYSAuLi8uLi9saWJqYXZhL2NsYXNzcGF0aC9y ZXNvdXJjZS9nbnUvY2xhc3NwYXRoL3Rvb2xzL2NvbW1vbi9NZXNzYWdlcy5wcm9wZXJ0aWVzIGdu dS9jbGFzc3BhdGgvdG9vbHMvY29tbW9uCi0gIGNkIGV4dGVybmFsL2FzbTsgZm9yIGkgaW4gYGZp bmQgLiAtbmFtZSBcKi5qYXZhYDsgZG8gZ2NqIC0tZW5jb2RpbmcgSVNPLTg4NTktMSAtQyAkaSAt SS47IGRvbmU7IGNkIC4uLy4uCi0gIGZvciBpIGluIGBmaW5kIGdudSAtbmFtZSBcKi5qYXZhYDsg ZG8gZ2NqIC1DICRpIC1JLiAtSWV4dGVybmFsL2FzbS87IGRvbmUKLSAgZ2NqIC1maW5kaXJlY3Qt ZGlzcGF0Y2ggLU8yIC1mbWFpbj1nbnUuY2xhc3NwYXRoLnRvb2xzLmphdmFoLk1haW4gLUkuIC1J ZXh0ZXJuYWwvYXNtLyBgZmluZCAuIC1uYW1lIFwqLmNsYXNzYCAtbyBnamF2YWgucmVhbAotICBj YXQgPiBnamF2YWggPDxFT0YKLSMhL2Jpbi9zaAotZXhwb3J0IENMQVNTUEFUSD1gcHdkYCR7Q0xB U1NQQVRIOis6JENMQVNTUEFUSH0KLWV4ZWMgYHB3ZGAvZ2phdmFoLnJlYWwgIlwkQCIKLUVPRgot ICBjaG1vZCAreCBgcHdkYC9namF2YWgKLWZpCi1jYXQgPiBlY2oxIDw8RU9GCi0jIS9iaW4vc2gK LWV4ZWMgZ2lqIC1jcCAvdXNyL3NoYXJlL2phdmEvZWNsaXBzZS1lY2ouamFyIG9yZy5lY2xpcHNl LmpkdC5pbnRlcm5hbC5jb21waWxlci5iYXRjaC5HQ0NNYWluICJcJEAiCi1FT0YKLWNobW9kICt4 IGBwd2RgL2VjajEKLWV4cG9ydCBQQVRIPWBwd2RgJHtQQVRIOis6JFBBVEh9Ci1jZCAuLgotJWVu ZGlmCi0lZW5kaWYKLQotQ0M9Z2NjCi1PUFRfRkxBR1M9YGVjaG8gJFJQTV9PUFRfRkxBR1N8c2Vk IC1lICdzL1woLVdwLFwpXD8tRF9GT1JUSUZZX1NPVVJDRT1bMTJdLy9nJ2AKLU9QVF9GTEFHUz1g ZWNobyAkT1BUX0ZMQUdTfHNlZCAtZSAncy8tbTY0Ly9nO3MvLW0zMi8vZztzLy1tMzEvL2cnYAot JWlmYXJjaCBzcGFyYyBzcGFyYzY0Ci1PUFRfRkxBR1M9YGVjaG8gJE9QVF9GTEFHU3xzZWQgLWUg J3MvLW1jcHU9dWx0cmFzcGFyYy8tbXR1bmU9dWx0cmFzcGFyYy9nO3MvLW1jcHU9dls3OF0vL2cn YAotJWVuZGlmCi0laWZhcmNoIHNwYXJjNjQKLWNhdCA+IGdjYzY0IDw8IkVPRiIKLSMhL2Jpbi9z aAotZXhlYyAvdXNyL2Jpbi9nY2MgLW02NCAiJEAiCi1FT0YKLWNobW9kICt4IGdjYzY0Ci1DQz1g cHdkYC9nY2M2NAotJWVuZGlmCi0laWZhcmNoIHBwYzY0Ci1pZiBnY2MgLW02NCAteGMgLVMgL2Rl di9udWxsIC1vIC0gPiAvZGV2L251bGwgMj4mMTsgdGhlbgotICBjYXQgPiBnY2M2NCA8PCJFT0Yi Ci0jIS9iaW4vc2gKLWV4ZWMgL3Vzci9iaW4vZ2NjIC1tNjQgIiRAIgotRU9GCi0gIGNobW9kICt4 IGdjYzY0Ci0gIENDPWBwd2RgL2djYzY0Ci1maQotJWVuZGlmCi1PUFRfRkxBR1M9YGVjaG8gIiRP UFRfRkxBR1MiIHwgc2VkIC1lICdzL1tbOmJsYW5rOl1dXCsvIC9nJ2AKLWNhc2UgIiRPUFRfRkxB R1MiIGluCi0gICotZmFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzKikKLSAgICBzZWQgLWkgLWUg J3MvLWZuby1leGNlcHRpb25zIC8tZm5vLWV4Y2VwdGlvbnMgLWZuby1hc3luY2hyb25vdXMtdW53 aW5kLXRhYmxlcy8nIFwKLSAgICAgIC4uL2djYy9NYWtlZmlsZS5pbgotICAgIDs7Ci1lc2FjCi1D Qz0iJENDIiBDRkxBR1M9IiRPUFRfRkxBR1MiIENYWEZMQUdTPSIkT1BUX0ZMQUdTIiBYQ0ZMQUdT PSIkT1BUX0ZMQUdTIiBUQ0ZMQUdTPSIkT1BUX0ZMQUdTIiBcCi0JR0NKRkxBR1M9IiRPUFRfRkxB R1MiIFwKLQkuLi9jb25maWd1cmUgLS1wcmVmaXg9JXtfcHJlZml4fSAtLW1hbmRpcj0le19tYW5k aXJ9IC0taW5mb2Rpcj0le19pbmZvZGlyfSBcCi0JLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXRo cmVhZHM9cG9zaXggLS1lbmFibGUtY2hlY2tpbmc9cmVsZWFzZSBcCi0JLS13aXRoLXN5c3RlbS16 bGliIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCAtLWRpc2FibGUtbGlidW53aW5kLWV4Y2VwdGlvbnMg XAotJWlmICEle2J1aWxkX2FkYX0KLQktLWVuYWJsZS1sYW5ndWFnZXM9YyxjKyssb2JqYyxvYmot YysrLGphdmEsZm9ydHJhbiBcCi0lZWxzZQotCS0tZW5hYmxlLWxhbmd1YWdlcz1jLGMrKyxvYmpj LG9iai1jKyssamF2YSxmb3J0cmFuLGFkYSBcCi0lZW5kaWYKLSVpZiAhJXtidWlsZF9qYXZhfQot CS0tZGlzYWJsZS1saWJnY2ogXAotJWVsc2UKLQktLWVuYWJsZS1qYXZhLWF3dD1ndGsgLS1kaXNh YmxlLWRzc2kgLS1lbmFibGUtcGx1Z2luIFwKLQktLXdpdGgtamF2YS1ob21lPSV7X3ByZWZpeH0v bGliL2p2bS9qYXZhLTEuNS4wLWdjai0xLjUuMC4wL2pyZSBcCi0JLS1lbmFibGUtbGliZ2NqLW11 bHRpZmlsZSAtLWVuYWJsZS1qYXZhLW1haW50YWluZXItbW9kZSBcCi0JLS13aXRoLWVjai1qYXI9 L3Vzci9zaGFyZS9qYXZhL2VjbGlwc2UtZWNqLmphciBcCi0lZW5kaWYKLSVpZmFyY2ggJXthcm19 Ci0JLS1kaXNhYmxlLXNqbGotZXhjZXB0aW9ucyBcCi0lZW5kaWYKLSVpZmFyY2ggcHBjIHBwYzY0 Ci0JLS1lbmFibGUtc2VjdXJlcGx0IFwKLSVlbmRpZgotJWlmYXJjaCBzcGFyYyBwcGMgcHBjNjQg czM5MCBzMzkweCBhbHBoYQotCS0td2l0aC1sb25nLWRvdWJsZS0xMjggXAotJWVuZGlmCi0laWZh cmNoIHNwYXJjCi0JLS1ob3N0PSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0gLS1idWlsZD0le2djY190 YXJnZXRfcGxhdGZvcm19IC0tdGFyZ2V0PSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0gLS13aXRoLWNw dT12NwotJWVuZGlmCi0laWZhcmNoIHBwYwotCS0taG9zdD0le2djY190YXJnZXRfcGxhdGZvcm19 IC0tYnVpbGQ9JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfSAtLXRhcmdldD0le2djY190YXJnZXRfcGxh dGZvcm19IC0td2l0aC1jcHU9ZGVmYXVsdDMyCi0lZW5kaWYKLSVpZmFyY2ggJXtpeDg2fSB4ODZf NjQKLQktLXdpdGgtY3B1PWdlbmVyaWMgXAotJWVuZGlmCi0laWZhcmNoIHMzOTAgczM5MHgKLQkt LXdpdGgtdHVuZT16OS0xMDkgXAotJWVuZGlmCi0laWZuYXJjaCBzcGFyYyBwcGMKLQktLWhvc3Q9 JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQotJWVuZGlmCi0KLSNHQ0pGTEFHUz0iJE9QVF9GTEFHUyIg bWFrZSAlez9fc21wX21mbGFnc30gQk9PVF9DRkxBR1M9IiRPUFRfRkxBR1MiIGJvb3RzdHJhcAot R0NKRkxBR1M9IiRPUFRfRkxBR1MiIG1ha2UgJXs/X3NtcF9tZmxhZ3N9IEJPT1RfQ0ZMQUdTPSIk T1BUX0ZMQUdTIiBwcm9maWxlZGJvb3RzdHJhcAotCi0jIHJ1biB0aGUgdGVzdHMuCi1tYWtlICV7 P19zbXBfbWZsYWdzfSAtayBjaGVjayBSVU5URVNURkxBR1M9IkFMVF9DQ19VTkRFUl9URVNUPWdj YyBBTFRfQ1hYX1VOREVSX1RFU1Q9ZysrIiB8fCA6Ci1jZCBnY2MKLW12IHRlc3RzdWl0ZXssLm5v cm1hbH0KLW1ha2UgJXs/X3NtcF9tZmxhZ3N9IC1rIFwKLSAgYHNlZCAtbiAncy9jaGVjay1hZGEv LztzL15DSEVDS19UQVJHRVRTW1s6Ymxhbms6XV0qPVtbOmJsYW5rOl1dKi8vcCcgTWFrZWZpbGVg IFwKLSAgUlVOVEVTVEZMQUdTPSItLXRhcmdldF9ib2FyZD11bml4Ly1mc3RhY2stcHJvdGVjdG9y IEFMVF9DQ19VTkRFUl9URVNUPWdjYyBBTFRfQ1hYX1VOREVSX1RFU1Q9ZysrIiB8fCA6Ci1tdiB0 ZXN0c3VpdGV7LC5zc3B9Ci1tdiB0ZXN0c3VpdGV7Lm5vcm1hbCx9Ci1jZCAuLgotZWNobyA9PT09 PT09PT09PT09PT09PT09PVRFU1RJTkc9PT09PT09PT09PT09PT09PT09PT09PT09Ci0oIC4uL2Nv bnRyaWIvdGVzdF9zdW1tYXJ5IHx8IDogKSAyPiYxIHwgc2VkIC1uICcvXmNhdC4qRU9GLywvXkVP Ri97L15jYXQuKkVPRi9kOy9eRU9GL2Q7L15MQVNUX1VQREFURUQ6L2Q7cDt9JwotZWNobyA9PT09 PT09PT09PT09PT09PT09PVRFU1RJTkcgRU5EPT09PT09PT09PT09PT09PT09PT09Ci1ta2RpciB0 ZXN0bG9ncy0le190YXJnZXRfcGxhdGZvcm19LSV7dmVyc2lvbn0tJXtyZWxlYXNlfQotZm9yIGkg aW4gYGZpbmQgLiAtbmFtZSBcKi5sb2cgfCBncmVwIC1GIHRlc3RzdWl0ZS8gfCBncmVwIC12ICdj b25maWcubG9nXHxhY2F0c1x8YWRhJ2A7IGRvCi0gIGxuICRpIHRlc3Rsb2dzLSV7X3RhcmdldF9w bGF0Zm9ybX0tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LyB8fCA6Ci1kb25lCi1mb3IgaSBpbiBgZmlu ZCAuIC1uYW1lIFwqLmxvZyB8IGdyZXAgLUYgdGVzdHN1aXRlLnNzcC8gfCBncmVwIC12ICdjb25m aWcubG9nXHxhY2F0c1x8YWRhJ2A7IGRvCi0gIGxuICRpIHRlc3Rsb2dzLSV7X3RhcmdldF9wbGF0 Zm9ybX0tJXt2ZXJzaW9ufS0le3JlbGVhc2V9L3NzcC1gYmFzZW5hbWUgJGlgIHx8IDoKLWRvbmUK LXRhciBjZiAtIHRlc3Rsb2dzLSV7X3RhcmdldF9wbGF0Zm9ybX0tJXt2ZXJzaW9ufS0le3JlbGVh c2V9IHwgYnppcDIgLTljIFwKLSAgfCB1dWVuY29kZSB0ZXN0bG9ncy0le190YXJnZXRfcGxhdGZv cm19LnRhci5iejIgfHwgOgotcm0gLXJmIHRlc3Rsb2dzLSV7X3RhcmdldF9wbGF0Zm9ybX0tJXt2 ZXJzaW9ufS0le3JlbGVhc2V9Ci0KLSMgTWFrZSBwcm90b2l6ZQotbWFrZSAtQyBnY2MgQ0M9Ii4v eGdjYyAtQiAuLyAtTzIiIHByb3RvCi0KLSMgTWFrZSBnZW5lcmF0ZWQgbWFuIHBhZ2VzIGV2ZW4g aWYgUG9kOjpNYW4gaXMgbm90IG5ldyBlbm91Z2gKLXBlcmwgLXBpIC1lICdzL2hlYWQzL2hlYWQy LycgLi4vY29udHJpYi90ZXhpMnBvZC5wbAotZm9yIGkgaW4gLi4vZ2NjL2RvYy8qLnRleGk7IGRv Ci0gIGNwIC1hICRpICRpLm9yaWc7IHNlZCAncy9mdGFibGUvdGFibGUvJyAkaS5vcmlnID4gJGkK LWRvbmUKLW1ha2UgLUMgZ2NjIGdlbmVyYXRlZC1tYW5wYWdlcwotZm9yIGkgaW4gLi4vZ2NjL2Rv Yy8qLnRleGk7IGRvIG12IC1mICRpLm9yaWcgJGk7IGRvbmUKLQotIyBDb3B5IHZhcmlvdXMgZG9j IGZpbGVzIGhlcmUgYW5kIHRoZXJlCi1jZCAuLgotbWtkaXIgLXAgcnBtLmRvYy9nZm9ydHJhbiBy cG0uZG9jL29iamMKLW1rZGlyIC1wIHJwbS5kb2MvYm9laG0tZ2MgcnBtLmRvYy9mYXN0amFyIHJw bS5kb2MvbGliZmZpIHJwbS5kb2MvbGliamF2YQotbWtkaXIgLXAgcnBtLmRvYy9jaGFuZ2Vsb2dz L3tnY2MvY3AsZ2NjL2phdmEsZ2NjL2FkYSxsaWJzdGRjKystdjMsbGlib2JqYyxsaWJtdWRmbGFw LGxpYmdvbXB9Ci1zZWQgLWUgJ3MsQFZFUlNJT05ALCV7Z2NjX3ZlcnNpb259LCcgJXtTT1VSQ0Uy fSA+IHJwbS5kb2MvUkVBRE1FLmxpYmdjandlYnBsdWdpbi5zbwotCi1mb3IgaSBpbiB7Z2NjLGdj Yy9jcCxnY2MvamF2YSxnY2MvYWRhLGxpYnN0ZGMrKy12MyxsaWJvYmpjLGxpYm11ZGZsYXAsbGli Z29tcH0vQ2hhbmdlTG9nKjsgZG8KLQljcCAtcCAkaSBycG0uZG9jL2NoYW5nZWxvZ3MvJGkKLWRv bmUKLQotKGNkIGdjYy9mb3J0cmFuOyBmb3IgaSBpbiBDaGFuZ2VMb2cqOyBkbwotCWNwIC1wICRp IC4uLy4uL3JwbS5kb2MvZ2ZvcnRyYW4vJGkKLWRvbmUpCi0oY2QgbGliZ2ZvcnRyYW47IGZvciBp IGluIENoYW5nZUxvZyo7IGRvCi0JY3AgLXAgJGkgLi4vcnBtLmRvYy9nZm9ydHJhbi8kaS5saWJn Zm9ydHJhbgotZG9uZSkKLShjZCBnY2Mvb2JqYzsgZm9yIGkgaW4gUkVBRE1FKjsgZG8KLQljcCAt cCAkaSAuLi8uLi9ycG0uZG9jL29iamMvJGkub2JqYwotZG9uZSkKLShjZCBsaWJvYmpjOyBmb3Ig aSBpbiBSRUFETUUqOyBkbwotCWNwIC1wICRpIC4uL3JwbS5kb2Mvb2JqYy8kaS5saWJvYmpjCi1k b25lKQotKGNkIGJvZWhtLWdjOyBmb3IgaSBpbiBDaGFuZ2VMb2cqOyBkbwotCWNwIC1wICRpIC4u L3JwbS5kb2MvYm9laG0tZ2MvJGkuZ2MKLWRvbmUpCi0oY2QgZmFzdGphcjsgZm9yIGkgaW4gQ2hh bmdlTG9nKiBSRUFETUUqOyBkbwotCWNwIC1wICRpIC4uL3JwbS5kb2MvZmFzdGphci8kaS5mYXN0 amFyCi1kb25lKQotKGNkIGxpYmZmaTsgZm9yIGkgaW4gQ2hhbmdlTG9nKiBSRUFETUUqIExJQ0VO U0U7IGRvCi0JY3AgLXAgJGkgLi4vcnBtLmRvYy9saWJmZmkvJGkubGliZmZpCi1kb25lKQotKGNk IGxpYmphdmE7IGZvciBpIGluIENoYW5nZUxvZyogUkVBRE1FKjsgZG8KLQljcCAtcCAkaSAuLi9y cG0uZG9jL2xpYmphdmEvJGkubGliamF2YQotZG9uZSkKLWNwIC1wIGxpYmphdmEvTElCR0NKX0xJ Q0VOU0UgcnBtLmRvYy9saWJqYXZhLwotCi1ybSAtZiBycG0uZG9jL2NoYW5nZWxvZ3MvZ2NjL0No YW5nZUxvZy5bMS05XQotZmluZCBycG0uZG9jIC1uYW1lIFwqQ2hhbmdlTG9nXCogfCB4YXJncyBi emlwMiAtOQotCi0laWYgJXtidWlsZF9qYXZhX3Rhcn0KLWZpbmQgbGliamF2YSAtbmFtZSBcKi5o IC10eXBlIGYgfCB4YXJncyBncmVwIC1sICcvLyBETyBOT1QgRURJVCBUSElTIEZJTEUgLSBpdCBp cyBtYWNoaW5lIGdlbmVyYXRlZCcgPiBsaWJqYXZhLWNsYXNzZXMubGlzdAotZmluZCBsaWJqYXZh IC1uYW1lIFwqLmNsYXNzIC10eXBlIGYgPj4gbGliamF2YS1jbGFzc2VzLmxpc3QKLWZpbmQgbGli amF2YS90ZXN0c3VpdGUgLW5hbWUgXCouamFyIC10eXBlIGYgPj4gbGliamF2YS1jbGFzc2VzLmxp c3QKLXRhciBjZiAtIC1UIGxpYmphdmEtY2xhc3Nlcy5saXN0IHwgYnppcDIgLTkgPiAkUlBNX1NP VVJDRV9ESVIvbGliamF2YS1jbGFzc2VzLSV7dmVyc2lvbn0tJXtyZWxlYXNlfS50YXIuYnoyCi0l ZW5kaWYKLQotJWluc3RhbGwKLXJtIC1mciAkUlBNX0JVSUxEX1JPT1QKLQotcGVybCAtcGkgLWUg XAotICAnc35ocmVmPSJsKGlic3RkY3xhdGVzdCl+aHJlZj0iaHR0cDovL2djYy5nbnUub3JnL29u bGluZWRvY3MvbGlic3RkYysrL2xcMX4nIFwKLSAgbGlic3RkYysrLXYzL2RvY3MvaHRtbC9kb2N1 bWVudGF0aW9uLmh0bWwKLWxuIC1zZiBkb2N1bWVudGF0aW9uLmh0bWwgbGlic3RkYysrLXYzL2Rv Y3MvaHRtbC9pbmRleC5odG1sCi0KLWNkIG9iai0le2djY190YXJnZXRfcGxhdGZvcm19Ci0KLWlm IFsgISAtZiAvdXNyL2xpYi9sb2NhbGUvZGVfREUvTENfQ1RZUEUgXTsgdGhlbgotICBleHBvcnQg TE9DUEFUSD1gcHdkYC9sb2NhbGU6L3Vzci9saWIvbG9jYWxlCi1maQotCi0laWYgJXtidWlsZF9q YXZhfQotJWlmICEle2Jvb3RzdHJhcF9qYXZhfQotZXhwb3J0IFBBVEg9YHB3ZGAvamF2YV9oYWNr cyR7UEFUSDorOiRQQVRIfQotJWVuZGlmCi0lZW5kaWYKLQotVEFSR0VUX1BMQVRGT1JNPSV7Z2Nj X3RhcmdldF9wbGF0Zm9ybX0KLQotIyBUaGVyZSBhcmUgc29tZSBNUCBidWdzIGluIGxpYnN0ZGMr KyBNYWtlZmlsZXMKLW1ha2UgLUMgJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS9saWJzdGRjKystdjMK LQotbWFrZSBwcmVmaXg9JFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fSBtYW5kaXI9JFJQTV9CVUlM RF9ST09UJXtfbWFuZGlyfSBcCi0gIGluZm9kaXI9JFJQTV9CVUlMRF9ST09UJXtfaW5mb2Rpcn0g aW5zdGFsbAotJWlmICV7YnVpbGRfamF2YX0KLW1ha2UgREVTVERJUj0kUlBNX0JVSUxEX1JPT1Qg LUMgJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS9saWJqYXZhIGluc3RhbGwtc3JjLnppcAotJWVuZGlm Ci0laWYgJXtidWlsZF9hZGF9Ci1jaG1vZCA2NDQgJFJQTV9CVUlMRF9ST09UJXtfaW5mb2Rpcn0v Z25hdCoKLSVlbmRpZgotCi1GVUxMUEFUSD0kUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYi9n Y2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQotRlVMTEVQQVRIPSRSUE1f QlVJTERfUk9PVCV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8l e2djY192ZXJzaW9ufQotCi0jIGZpeCBzb21lIHRoaW5ncwotbG4gLXNmIGdjYyAkUlBNX0JVSUxE X1JPT1Qle19wcmVmaXh9L2Jpbi9jYwotbWtkaXIgLXAgJFJQTV9CVUlMRF9ST09UL2xpYgotbG4g LXNmIC4uJXtfcHJlZml4fS9iaW4vY3BwICRSUE1fQlVJTERfUk9PVC9saWIvY3BwCi1sbiAtc2Yg Z2ZvcnRyYW4gJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vZjk1Ci1ybSAtZiAkUlBNX0JV SUxEX1JPT1Qle19pbmZvZGlyfS9kaXIKLWd6aXAgLTkgJFJQTV9CVUlMRF9ST09UJXtfaW5mb2Rp cn0vKi5pbmZvKgotbG4gLXNmIGdjYyAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2Jpbi9nbmF0 Z2NjCi0KLWN4eGNvbmZpZz0iYGZpbmQgJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS9saWJzdGRjKyst djMvaW5jbHVkZSAtbmFtZSBjKytjb25maWcuaGAiCi1mb3IgaSBpbiBgZmluZCAle2djY190YXJn ZXRfcGxhdGZvcm19L1szNl0qL2xpYnN0ZGMrKy12My9pbmNsdWRlIC1uYW1lIGMrK2NvbmZpZy5o IDI+L2Rldi9udWxsYDsgZG8KLSAgaWYgISBkaWZmIC11cCAkY3h4Y29uZmlnICRpOyB0aGVuCi0g ICAgY2F0ID4gJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9pbmNsdWRlL2MrKy8le2djY192ZXJz aW9ufS8le2djY190YXJnZXRfcGxhdGZvcm19L2JpdHMvYysrY29uZmlnLmggPDxFT0YKLSNpZm5k ZWYgX0NQUF9DUFBDT05GSUdfV1JBUFBFUgotI2RlZmluZSBfQ1BQX0NQUENPTkZJR19XUkFQUEVS IDEKLSNpbmNsdWRlIDxiaXRzL3dvcmRzaXplLmg+Ci0jaWYgX19XT1JEU0laRSA9PSAzMgotJWlm YXJjaCAle211bHRpbGliXzY0X2FyY2hzfQotYGNhdCAkKGZpbmQgJXtnY2NfdGFyZ2V0X3BsYXRm b3JtfS8zMi9saWJzdGRjKystdjMvaW5jbHVkZSAtbmFtZSBjKytjb25maWcuaClgCi0lZWxzZQot YGNhdCAkKGZpbmQgJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS9saWJzdGRjKystdjMvaW5jbHVkZSAt bmFtZSBjKytjb25maWcuaClgCi0lZW5kaWYKLSNlbHNlCi0laWZhcmNoICV7bXVsdGlsaWJfNjRf YXJjaHN9Ci1gY2F0ICQoZmluZCAle2djY190YXJnZXRfcGxhdGZvcm19L2xpYnN0ZGMrKy12My9p bmNsdWRlIC1uYW1lIGMrK2NvbmZpZy5oKWAKLSVlbHNlCi1gY2F0ICQoZmluZCAle2djY190YXJn ZXRfcGxhdGZvcm19LzY0L2xpYnN0ZGMrKy12My9pbmNsdWRlIC1uYW1lIGMrK2NvbmZpZy5oKWAK LSVlbmRpZgotI2VuZGlmCi0jZW5kaWYKLUVPRgotICAgIGJyZWFrCi0gIGZpCi1kb25lCi0KLSMg TnVrZSBiaXRzL3N0ZGMrKy5oLmdjaCBkaXJzCi0jIDEpIHRoZXJlIGlzIG5vIGJpdHMvc3RkYysr LmggaGVhZGVyIGluc3RhbGxlZCwgc28gd2hlbiBnY2ggZmlsZSBjYW4ndCBiZQotIyAgICB1c2Vk LCBjb21waWxhdGlvbiBmYWlscwotIyAyKSBzb21ldGltZXMgaXQgaXMgaGFyZCB0byBtYXRjaCB0 aGUgZXhhY3Qgb3B0aW9ucyB1c2VkIGZvciBidWlsZGluZwotIyAgICBsaWJzdGRjKystdjMgb3Ig dGhleSBhcmVuJ3QgZGVzaXJhYmxlCi0jIDMpIHRoZXJlIGFyZSBtdWx0aWxpYiBpc3N1ZXMsIGNv bmZsaWN0cyBldGMuIHdpdGggdGhpcwotIyA0KSBpdCBpcyBodWdlCi0jIFBlb3BsZSBjYW4gYWx3 YXlzIHByZWNvbXBpbGUgb24gdGhlaXIgb3duIHdoYXRldmVyIHRoZXkgd2FudCwgYnV0Ci0jIHNo aXBwaW5nIHRoaXMgZm9yIGV2ZXJ5Ym9keSBpcyB1bm5lY2Vzc2FyeS4KLXJtIC1yZiAkUlBNX0JV SUxEX1JPT1Qle19wcmVmaXh9L2luY2x1ZGUvYysrLyV7Z2NjX3ZlcnNpb259LyV7Z2NjX3Rhcmdl dF9wbGF0Zm9ybX0vYml0cy9zdGRjKysuaC5nY2gKLQotJWlmYXJjaCBzcGFyYyBzcGFyYzY0Ci1s biAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2Jpbi8le2djY190YXJnZXRfcGxhdGZvcm19 LWdjYyBcCi0gICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vYmluL3NwYXJjLSV7X3ZlbmRvcn0t JXtfdGFyZ2V0X29zfS1nY2MKLSVlbmRpZgotJWlmYXJjaCBwcGMgcHBjNjQKLWxuIC1mICRSUE1f QlVJTERfUk9PVCV7X3ByZWZpeH0vYmluLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0tZ2NjIFwKLSAg JFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vcHBjLSV7X3ZlbmRvcn0tJXtfdGFyZ2V0X29z fS1nY2MKLSVlbmRpZgotCi0laWZhcmNoIHNwYXJjIHBwYwotRlVMTExQQVRIPSRGVUxMUEFUSC9s aWIzMgotJWVuZGlmCi0laWZhcmNoIHNwYXJjNjQgcHBjNjQKLUZVTExMUEFUSD0kRlVMTFBBVEgv bGliNjQKLSVlbmRpZgotaWYgWyAtbiAiJEZVTExMUEFUSCIgXTsgdGhlbgotICBta2RpciAtcCAk RlVMTExQQVRICi1lbHNlCi0gIEZVTExMUEFUSD0kRlVMTFBBVEgKLWZpCi0KLWZpbmQgJFJQTV9C VUlMRF9ST09UIC1uYW1lIFwqLmxhIHwgeGFyZ3Mgcm0gLWYKLSVpZiAle2J1aWxkX2phdmF9Ci0j IGdjaiAtc3RhdGljIGRvZXNuJ3Qgd29yayBwcm9wZXJseSBhbnl3YXksIHVubGVzcyB1c2luZyAt LXdob2xlLWFyY2hpdmUKLSMgYW5kIHNhdmluZyAzNU1CIGlzIG5vdCBiYWQuCi1maW5kICRSUE1f QlVJTERfUk9PVCAtbmFtZSBsaWJnY2ouYSAtbyAtbmFtZSBsaWJndGtwZWVyLmEgXAotCQkgICAg IC1vIC1uYW1lIGxpYmdqc21hbHNhLmEgLW8gLW5hbWUgbGliZ2NqLXRvb2xzLmEgLW8gLW5hbWUg bGlianZtLmEgXAotCQkgICAgIC1vIC1uYW1lIGxpYmdpai5hIC1vIC1uYW1lIGxpYmdjal9iYy5h IHwgeGFyZ3Mgcm0gLWYKLQotbXYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWIvbGliZ2Nq LnNwZWMgJEZVTExQQVRILwotc2VkIC1pIC1lICdzL2xpYjogLyYlJXtzdGF0aWM6JSVlSmF2YSBw cm9ncmFtcyBjYW5ub3QgYmUgbGlua2VkIHN0YXRpY2FsbHl9LycgXAotICAkRlVMTFBBVEgvbGli Z2NqLnNwZWMKLSVlbmRpZgotCi1ta2RpciAtcCAkUlBNX0JVSUxEX1JPT1QvJXtfbGlifQotbXYg LWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS8le19saWJ9L2xpYmdjY19zLnNvLjEgJFJQTV9C VUlMRF9ST09ULyV7X2xpYn0vbGliZ2NjX3MtJXtnY2NfdmVyc2lvbn0tJXtEQVRFfS5zby4xCi1j aG1vZCA3NTUgJFJQTV9CVUlMRF9ST09ULyV7X2xpYn0vbGliZ2NjX3MtJXtnY2NfdmVyc2lvbn0t JXtEQVRFfS5zby4xCi1sbiAtc2YgbGliZ2NjX3MtJXtnY2NfdmVyc2lvbn0tJXtEQVRFfS5zby4x ICRSUE1fQlVJTERfUk9PVC8le19saWJ9L2xpYmdjY19zLnNvLjEKLWxuIC1zZiAvJXtfbGlifS9s aWJnY2Nfcy5zby4xICRGVUxMUEFUSC9saWJnY2Nfcy5zbwotJWlmYXJjaCBzcGFyYyBwcGMKLWxu IC1zZiAvbGliNjQvbGliZ2NjX3Muc28uMSAkRlVMTFBBVEgvNjQvbGliZ2NjX3Muc28KLSVlbmRp ZgotJWlmYXJjaCAle211bHRpbGliXzY0X2FyY2hzfQotbG4gLXNmIC9saWIvbGliZ2NjX3Muc28u MSAkRlVMTFBBVEgvMzIvbGliZ2NjX3Muc28KLSVlbmRpZgotCi1tdiAtZiAkUlBNX0JVSUxEX1JP T1Qle19wcmVmaXh9LyV7X2xpYn0vbGliZ29tcC5zcGVjICRGVUxMUEFUSC8KLW12IC1mICRSUE1f QlVJTERfUk9PVCV7X3ByZWZpeH0vaW5jbHVkZS9vbXAuaCAkRlVMTFBBVEgvaW5jbHVkZS8KLQot JWlmICV7YnVpbGRfYWRhfQotbXYgLWYgJEZVTExQQVRIL2FkYWxpYi9saWJnbmFybC0qLnNvICRS UE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS8KLW12IC1mICRGVUxMUEFUSC9hZGFsaWIv bGliZ25hdC0qLnNvICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS8KLXJtIC1mICRG VUxMUEFUSC9hZGFsaWIvbGliZ25hcmwuc28qICRGVUxMUEFUSC9hZGFsaWIvbGliZ25hdC5zbyoK LSVlbmRpZgotCi1ta2RpciAtcCAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYmV4ZWMvZ2V0 Y29uZgotaWYgZ2NjL3hnY2MgLUIgZ2NjLyAtRSAtZEQgLXhjIC9kZXYvbnVsbCB8IGdyZXAgX19M T05HX01BWF9fLioyMTQ3NDgzNjQ3OyB0aGVuCi0gIGxuIC1zZiBQT1NJWF9WNl9JTFAzMl9PRkYz MiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYmV4ZWMvZ2V0Y29uZi9kZWZhdWx0Ci1lbHNl Ci0gIGxuIC1zZiBQT1NJWF9WNl9MUDY0X09GRjY0ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0v bGliZXhlYy9nZXRjb25mL2RlZmF1bHQKLWZpCi0KLSVpZiAle2J1aWxkX2phdmF9Ci1pZiBbICIl e19saWJ9IiAhPSAibGliIiBdOyB0aGVuCi0gIG1rZGlyIC1wICRSUE1fQlVJTERfUk9PVCV7X3By ZWZpeH0vJXtfbGlifS9wa2djb25maWcKLSAgc2VkICcvXmxpYmRpci9zL2xpYiQvJXtfbGlifS8n ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliL3BrZ2NvbmZpZy9saWJnY2otKi5wYyBcCi0g ICAgPiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vcGtnY29uZmlnL2BiYXNlbmFt ZSAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYi9wa2djb25maWcvbGliZ2NqLSoucGNgCi1m aQotJWVuZGlmCi0KLXB1c2hkICRGVUxMUEFUSAotaWYgWyAiJXtfbGlifSIgPSAibGliIiBdOyB0 aGVuCi1sbiAtc2YgLi4vLi4vLi4vbGlib2JqYy5zby4xIGxpYm9iamMuc28KLWxuIC1zZiAuLi8u Li8uLi9saWJzdGRjKysuc28uNi4qIGxpYnN0ZGMrKy5zbwotbG4gLXNmIC4uLy4uLy4uL2xpYmdm b3J0cmFuLnNvLjEuKiBsaWJnZm9ydHJhbi5zbwotbG4gLXNmIC4uLy4uLy4uL2xpYmdvbXAuc28u MS4qIGxpYmdvbXAuc28KLWxuIC1zZiAuLi8uLi8uLi9saWJtdWRmbGFwLnNvLjAuKiBsaWJtdWRm bGFwLnNvCi1sbiAtc2YgLi4vLi4vLi4vbGlibXVkZmxhcHRoLnNvLjAuKiBsaWJtdWRmbGFwdGgu c28KLSVpZiAle2J1aWxkX2phdmF9Ci1sbiAtc2YgLi4vLi4vLi4vbGliZ2NqLnNvLjhyaC4qIGxp Ymdjai5zbwotbG4gLXNmIC4uLy4uLy4uL2xpYmdjai10b29scy5zby44cmguKiBsaWJnY2otdG9v bHMuc28KLWxuIC1zZiAuLi8uLi8uLi9saWJnaWouc28uOHJoLiogbGliZ2lqLnNvCi0lZW5kaWYK LSVpZiAle2J1aWxkX2FkYX0KLWNkIGFkYWxpYgotbG4gLXNmIC4uLy4uLy4uLy4uL2xpYmduYXJs LSouc28gbGliZ25hcmwuc28KLWxuIC1zZiAuLi8uLi8uLi8uLi9saWJnbmFybC0qLnNvIGxpYmdu YXJsLTQuMS5zbwotbG4gLXNmIC4uLy4uLy4uLy4uL2xpYmduYXQtKi5zbyBsaWJnbmF0LnNvCi1s biAtc2YgLi4vLi4vLi4vLi4vbGliZ25hdC0qLnNvIGxpYmduYXQtNC4xLnNvCi1jZCAuLgotJWVu ZGlmCi1lbHNlCi1sbiAtc2YgLi4vLi4vLi4vLi4vJXtfbGlifS9saWJvYmpjLnNvLjEgbGlib2Jq Yy5zbwotbG4gLXNmIC4uLy4uLy4uLy4uLyV7X2xpYn0vbGlic3RkYysrLnNvLjYuKiBsaWJzdGRj Kysuc28KLWxuIC1zZiAuLi8uLi8uLi8uLi8le19saWJ9L2xpYmdmb3J0cmFuLnNvLjEuKiBsaWJn Zm9ydHJhbi5zbwotbG4gLXNmIC4uLy4uLy4uLy4uLyV7X2xpYn0vbGliZ29tcC5zby4xLiogbGli Z29tcC5zbwotbG4gLXNmIC4uLy4uLy4uLy4uLyV7X2xpYn0vbGlibXVkZmxhcC5zby4wLiogbGli bXVkZmxhcC5zbwotbG4gLXNmIC4uLy4uLy4uLy4uLyV7X2xpYn0vbGlibXVkZmxhcHRoLnNvLjAu KiBsaWJtdWRmbGFwdGguc28KLSVpZiAle2J1aWxkX2phdmF9Ci1sbiAtc2YgLi4vLi4vLi4vLi4v JXtfbGlifS9saWJnY2ouc28uOHJoLiogbGliZ2NqLnNvCi1sbiAtc2YgLi4vLi4vLi4vLi4vJXtf bGlifS9saWJnY2otdG9vbHMuc28uOHJoLiogbGliZ2NqLXRvb2xzLnNvCi1sbiAtc2YgLi4vLi4v Li4vLi4vJXtfbGlifS9saWJnaWouc28uOHJoLiogbGliZ2lqLnNvCi0lZW5kaWYKLSVpZiAle2J1 aWxkX2FkYX0KLWNkIGFkYWxpYgotbG4gLXNmIC4uLy4uLy4uLy4uLy4uLyV7X2xpYn0vbGliZ25h cmwtKi5zbyBsaWJnbmFybC5zbwotbG4gLXNmIC4uLy4uLy4uLy4uLy4uLyV7X2xpYn0vbGliZ25h cmwtKi5zbyBsaWJnbmFybC00LjEuc28KLWxuIC1zZiAuLi8uLi8uLi8uLi8uLi8le19saWJ9L2xp YmduYXQtKi5zbyBsaWJnbmF0LnNvCi1sbiAtc2YgLi4vLi4vLi4vLi4vLi4vJXtfbGlifS9saWJn bmF0LSouc28gbGliZ25hdC00LjEuc28KLWNkIC4uCi0lZW5kaWYKLWZpCi0laWYgJXtidWlsZF9q YXZhfQotbXYgLWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS8le19saWJ9L2xpYmdjal9iYy5z byAkRlVMTExQQVRILwotJWVuZGlmCi1tdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7 X2xpYn0vbGlic3RkYysrLiphICRGVUxMTFBBVEgvCi1tdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19w cmVmaXh9LyV7X2xpYn0vbGlic3VwYysrLiphIC4KLW12IC1mICRSUE1fQlVJTERfUk9PVCV7X3By ZWZpeH0vJXtfbGlifS9saWJnZm9ydHJhbi4qYSAuCi1tdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19w cmVmaXh9LyV7X2xpYn0vbGliZ2ZvcnRyYW5iZWdpbi4qYSAuCi1tdiAtZiAkUlBNX0JVSUxEX1JP T1Qle19wcmVmaXh9LyV7X2xpYn0vbGlib2JqYy4qYSAuCi1tdiAtZiAkUlBNX0JVSUxEX1JPT1Ql e19wcmVmaXh9LyV7X2xpYn0vbGliZ29tcC4qYSAuCi1tdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19w cmVmaXh9LyV7X2xpYn0vbGlibXVkZmxhcHssdGh9LiphICRGVUxMTFBBVEgvCi1tdiAtZiAkUlBN X0JVSUxEX1JPT1Qle19wcmVmaXh9L2luY2x1ZGUvbWYtcnVudGltZS5oIGluY2x1ZGUvCi0KLSVp ZmFyY2ggc3BhcmMgcHBjCi1sbiAtc2YgLi4vLi4vLi4vLi4vLi4vbGliNjQvbGlib2JqYy5zby4x IDY0L2xpYm9iamMuc28KLWxuIC1zZiAuLi9gZWNobyAuLi8uLi8uLi8uLi9saWIvbGlic3RkYysr LnNvLjYuKiB8IHNlZCBzfi9saWIvfi9saWI2NC9+YCA2NC9saWJzdGRjKysuc28KLWxuIC1zZiAu Li9gZWNobyAuLi8uLi8uLi8uLi9saWIvbGliZ2ZvcnRyYW4uc28uMS4qIHwgc2VkIHN+L2xpYi9+ L2xpYjY0L35gIDY0L2xpYmdmb3J0cmFuLnNvCi1sbiAtc2YgLi4vYGVjaG8gLi4vLi4vLi4vLi4v bGliL2xpYmdvbXAuc28uMS4qIHwgc2VkIHN+L2xpYi9+L2xpYjY0L35gIDY0L2xpYmdvbXAuc28K LWxuIC1zZiAuLi9gZWNobyAuLi8uLi8uLi8uLi9saWIvbGlibXVkZmxhcC5zby4wLiogfCBzZWQg c34vbGliL34vbGliNjQvfmAgNjQvbGlibXVkZmxhcC5zbwotbG4gLXNmIC4uL2BlY2hvIC4uLy4u Ly4uLy4uL2xpYi9saWJtdWRmbGFwdGguc28uMC4qIHwgc2VkIHN+L2xpYi9+L2xpYjY0L35gIDY0 L2xpYm11ZGZsYXB0aC5zbwotJWlmICV7YnVpbGRfamF2YX0KLWxuIC1zZiAuLi9gZWNobyAuLi8u Li8uLi8uLi9saWIvbGliZ2NqLnNvLjhyaC4qIHwgc2VkIHN+L2xpYi9+L2xpYjY0L35gIDY0L2xp Ymdjai5zbwotbG4gLXNmIC4uL2BlY2hvIC4uLy4uLy4uLy4uL2xpYi9saWJnY2otdG9vbHMuc28u OHJoLiogfCBzZWQgc34vbGliL34vbGliNjQvfmAgNjQvbGliZ2NqLXRvb2xzLnNvCi1sbiAtc2Yg Li4vYGVjaG8gLi4vLi4vLi4vLi4vbGliL2xpYmdpai5zby44cmguKiB8IHNlZCBzfi9saWIvfi9s aWI2NC9+YCA2NC9saWJnaWouc28KLWxuIC1zZiBsaWIzMi9saWJnY2pfYmMuc28gbGliZ2NqX2Jj LnNvCi1sbiAtc2YgLi4vbGliNjQvbGliZ2NqX2JjLnNvIDY0L2xpYmdjal9iYy5zbwotJWVuZGlm Ci1tdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYjY0L2xpYnN1cGMrKy4qYSA2NC8K LW12IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliNjQvbGliZ2ZvcnRyYW4uKmEgNjQv Ci1tdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYjY0L2xpYmdmb3J0cmFuYmVnaW4u KmEgNjQvCi1tdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYjY0L2xpYm9iamMuKmEg NjQvCi1tdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYjY0L2xpYmdvbXAuKmEgNjQv Ci1sbiAtc2YgbGliMzIvbGlic3RkYysrLmEgbGlic3RkYysrLmEKLWxuIC1zZiAuLi9saWI2NC9s aWJzdGRjKysuYSA2NC9saWJzdGRjKysuYQotbG4gLXNmIGxpYjMyL2xpYm11ZGZsYXAuYSBsaWJt dWRmbGFwLmEKLWxuIC1zZiAuLi9saWI2NC9saWJtdWRmbGFwLmEgNjQvbGlibXVkZmxhcC5hCi1s biAtc2YgbGliMzIvbGlibXVkZmxhcHRoLmEgbGlibXVkZmxhcHRoLmEKLWxuIC1zZiAuLi9saWI2 NC9saWJtdWRmbGFwdGguYSA2NC9saWJtdWRmbGFwdGguYQotJWVuZGlmCi0laWZhcmNoICV7bXVs dGlsaWJfNjRfYXJjaHN9Ci1ta2RpciAtcCAzMgotbG4gLXNmIC4uLy4uLy4uLy4uL2xpYm9iamMu c28uMSAzMi9saWJvYmpjLnNvCi1sbiAtc2YgLi4vYGVjaG8gLi4vLi4vLi4vLi4vbGliNjQvbGli c3RkYysrLnNvLjYuKiB8IHNlZCBzfi8uLi9saWI2NC9+L35gIDMyL2xpYnN0ZGMrKy5zbwotbG4g LXNmIC4uL2BlY2hvIC4uLy4uLy4uLy4uL2xpYjY0L2xpYmdmb3J0cmFuLnNvLjEuKiB8IHNlZCBz fi8uLi9saWI2NC9+L35gIDMyL2xpYmdmb3J0cmFuLnNvCi1sbiAtc2YgLi4vYGVjaG8gLi4vLi4v Li4vLi4vbGliNjQvbGliZ29tcC5zby4xLiogfCBzZWQgc34vLi4vbGliNjQvfi9+YCAzMi9saWJn b21wLnNvCi1sbiAtc2YgLi4vYGVjaG8gLi4vLi4vLi4vLi4vbGliNjQvbGlibXVkZmxhcC5zby4w LiogfCBzZWQgc34vLi4vbGliNjQvfi9+YCAzMi9saWJtdWRmbGFwLnNvCi1sbiAtc2YgLi4vYGVj aG8gLi4vLi4vLi4vLi4vbGliNjQvbGlibXVkZmxhcHRoLnNvLjAuKiB8IHNlZCBzfi8uLi9saWI2 NC9+L35gIDMyL2xpYm11ZGZsYXB0aC5zbwotJWlmICV7YnVpbGRfamF2YX0KLWxuIC1zZiAuLi9g ZWNobyAuLi8uLi8uLi8uLi9saWI2NC9saWJnY2ouc28uOHJoLiogfCBzZWQgc34vLi4vbGliNjQv fi9+YCAzMi9saWJnY2ouc28KLWxuIC1zZiAuLi9gZWNobyAuLi8uLi8uLi8uLi9saWI2NC9saWJn Y2otdG9vbHMuc28uOHJoLiogfCBzZWQgc34vLi4vbGliNjQvfi9+YCAzMi9saWJnY2otdG9vbHMu c28KLWxuIC1zZiAuLi9gZWNobyAuLi8uLi8uLi8uLi9saWI2NC9saWJnaWouc28uOHJoLiogfCBz ZWQgc34vLi4vbGliNjQvfi9+YCAzMi9saWJnaWouc28KLSVlbmRpZgotbXYgLWYgJFJQTV9CVUlM RF9ST09UJXtfcHJlZml4fS9saWIvbGlic3VwYysrLiphIDMyLwotbXYgLWYgJFJQTV9CVUlMRF9S T09UJXtfcHJlZml4fS9saWIvbGliZ2ZvcnRyYW4uKmEgMzIvCi1tdiAtZiAkUlBNX0JVSUxEX1JP T1Qle19wcmVmaXh9L2xpYi9saWJnZm9ydHJhbmJlZ2luLiphIDMyLwotbXYgLWYgJFJQTV9CVUlM RF9ST09UJXtfcHJlZml4fS9saWIvbGlib2JqYy4qYSAzMi8KLW12IC1mICRSUE1fQlVJTERfUk9P VCV7X3ByZWZpeH0vbGliL2xpYmdvbXAuKmEgMzIvCi0lZW5kaWYKLSVpZmFyY2ggc3BhcmM2NCBw cGM2NAotbG4gLXNmIC4uL2xpYjMyL2xpYnN0ZGMrKy5hIDMyL2xpYnN0ZGMrKy5hCi1sbiAtc2Yg bGliNjQvbGlic3RkYysrLmEgbGlic3RkYysrLmEKLWxuIC1zZiAuLi9saWIzMi9saWJtdWRmbGFw LmEgMzIvbGlibXVkZmxhcC5hCi1sbiAtc2YgbGliNjQvbGlibXVkZmxhcC5hIGxpYm11ZGZsYXAu YQotbG4gLXNmIC4uL2xpYjMyL2xpYm11ZGZsYXB0aC5hIDMyL2xpYm11ZGZsYXB0aC5hCi1sbiAt c2YgbGliNjQvbGlibXVkZmxhcHRoLmEgbGlibXVkZmxhcHRoLmEKLSVpZiAle2J1aWxkX2phdmF9 Ci1sbiAtc2YgLi4vbGliMzIvbGliZ2NqX2JjLnNvIDMyL2xpYmdjal9iYy5zbwotbG4gLXNmIGxp YjY0L2xpYmdjal9iYy5zbyBsaWJnY2pfYmMuc28KLSVlbmRpZgotJWVsc2UKLSVpZmFyY2ggJXtt dWx0aWxpYl82NF9hcmNoc30KLWxuIC1zZiAuLi8uLi8uLi8le211bHRpbGliXzMyX2FyY2h9LSV7 X3ZlbmRvcn0tJXtfdGFyZ2V0X29zfS8le2djY192ZXJzaW9ufS9saWJzdGRjKysuYSAzMi9saWJz dGRjKysuYQotbG4gLXNmIC4uLy4uLy4uLyV7bXVsdGlsaWJfMzJfYXJjaH0tJXtfdmVuZG9yfS0l e190YXJnZXRfb3N9LyV7Z2NjX3ZlcnNpb259L2xpYm11ZGZsYXAuYSAzMi9saWJtdWRmbGFwLmEK LWxuIC1zZiAuLi8uLi8uLi8le211bHRpbGliXzMyX2FyY2h9LSV7X3ZlbmRvcn0tJXtfdGFyZ2V0 X29zfS8le2djY192ZXJzaW9ufS9saWJtdWRmbGFwdGguYSAzMi9saWJtdWRmbGFwdGguYQotJWlm ICV7YnVpbGRfamF2YX0KLWxuIC1zZiAuLi8uLi8uLi8le211bHRpbGliXzMyX2FyY2h9LSV7X3Zl bmRvcn0tJXtfdGFyZ2V0X29zfS8le2djY192ZXJzaW9ufS9saWJnY2pfYmMuc28gMzIvbGliZ2Nq X2JjLnNvCi0lZW5kaWYKLSVlbmRpZgotJWVuZGlmCi0KLSMgU3RyaXAgZGVidWcgaW5mbyBmcm9t IEZvcnRyYW4vT2JqQy9KYXZhIHN0YXRpYyBsaWJyYXJpZXMKLXN0cmlwIC1nIGBmaW5kIC4gXCgg LW5hbWUgbGliZ2ZvcnRyYW4uYSAtbyAtbmFtZSBsaWJvYmpjLmEgLW8gLW5hbWUgbGliZ29tcC5h IFwKLQkJICAgIC1vIC1uYW1lIGxpYm11ZGZsYXAuYSAtbyAtbmFtZSBsaWJtdWRmbGFwdGguYSBc Ci0JCSAgICAtbyAtbmFtZSBsaWJnY2MuYSAtbyAtbmFtZSBsaWJnY292LmEgXCkgLWEgLXR5cGUg ZmAKLXBvcGQKLWNobW9kIDc1NSAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGli Z2ZvcnRyYW4uc28uMS4qCi1jaG1vZCA3NTUgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS8le19s aWJ9L2xpYmdvbXAuc28uMS4qCi1jaG1vZCA3NTUgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS8l e19saWJ9L2xpYm11ZGZsYXB7LHRofS5zby4wLioKLWNobW9kIDc1NSAkUlBNX0JVSUxEX1JPT1Ql e19wcmVmaXh9LyV7X2xpYn0vbGlib2JqYy5zby4xLioKLQotJWlmICV7YnVpbGRfYWRhfQotY2ht b2QgNzU1ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9saWJnbmFybCpzbyoKLWNo bW9kIDc1NSAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGliZ25hdCpzbyoKLSVl bmRpZgotCi1mb3IgaCBpbiBgZmluZCAkRlVMTFBBVEgvaW5jbHVkZSAtbmFtZSBcKi5oYDsgZG8K LSAgaWYgZ3JlcCAtcSAnSXQgaGFzIGJlZW4gYXV0by1lZGl0ZWQgYnkgZml4aW5jbHVkZXMgZnJv bScgJGg7IHRoZW4KLSAgICByaD1gZ3JlcCAtQTIgJ0l0IGhhcyBiZWVuIGF1dG8tZWRpdGVkIGJ5 IGZpeGluY2x1ZGVzIGZyb20nICRoIHwgdGFpbCAtMSB8IHNlZCAnc3xeLioiXCguKlwpIi4qJHxc MXwnYAotICAgIGRpZmYgLXVwICRyaCAkaCB8fCA6Ci0gICAgcm0gLWYgJGgKLSAgZmkKLWRvbmUK LQotY2F0ID4gJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vYzg5IDw8IkVPRiIKLSMhL2Jp bi9zaAotZmw9Ii1zdGQ9Yzg5IgotZm9yIG9wdDsgZG8KLSAgY2FzZSAiJG9wdCIgaW4KLSAgICAt YW5zaXwtc3RkPWM4OXwtc3RkPWlzbzk4OTk6MTk5MCkgZmw9IiI7OwotICAgIC1zdGQ9KikgZWNo byAiYGJhc2VuYW1lICQwYCBjYWxsZWQgd2l0aCBub24gQU5TSS9JU08gQyBvcHRpb24gJG9wdCIg PiYyCi0JICAgIGV4aXQgMTs7Ci0gIGVzYWMKLWRvbmUKLWV4ZWMgZ2NjICRmbCAkezErIiRAIn0K LUVPRgotY2F0ID4gJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vYzk5IDw8IkVPRiIKLSMh L2Jpbi9zaAotZmw9Ii1zdGQ9Yzk5IgotZm9yIG9wdDsgZG8KLSAgY2FzZSAiJG9wdCIgaW4KLSAg ICAtc3RkPWM5OXwtc3RkPWlzbzk4OTk6MTk5OSkgZmw9IiI7OwotICAgIC1zdGQ9KikgZWNobyAi YGJhc2VuYW1lICQwYCBjYWxsZWQgd2l0aCBub24gSVNPIEM5OSBvcHRpb24gJG9wdCIgPiYyCi0J ICAgIGV4aXQgMTs7Ci0gIGVzYWMKLWRvbmUKLWV4ZWMgZ2NjICRmbCAkezErIiRAIn0KLUVPRgot Y2htb2QgNzU1ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vYmluL2M/OQotCi1ta2RpciAtcCAk UlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L3NiaW4KLWdjYyAtc3RhdGljIC1PcyAle1NPVVJDRTF9 IC1vICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vc2Jpbi9saWJnY2NfcG9zdF91cGdyYWRlCi1z dHJpcCAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L3NiaW4vbGliZ2NjX3Bvc3RfdXBncmFkZQot Ci1jZCAuLgotJWZpbmRfbGFuZyAle25hbWV9Ci0lZmluZF9sYW5nIGNwcGxpYgotCi0jIFJlbW92 ZSBiaW5hcmllcyB3ZSB3aWxsIG5vdCBiZSBpbmNsdWRpbmcsIHNvIHRoYXQgdGhleSBkb24ndCBl bmQgdXAgaW4KLSMgZ2NjLWRlYnVnaW5mbwotcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4 fS8le19saWJ9L3tsaWJmZmkqLGxpYmliZXJ0eS5hfQotcm0gLWYgJEZVTExFUEFUSC9pbnN0YWxs LXRvb2xzL3tta2hlYWRlcnMsZml4aW5jbH0KLXJtIC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZp eH0vbGliL3szMiw2NH0vbGliaWJlcnR5LmEKLXJtIC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZp eH0vJXtfbGlifS9saWJzc3AqCi0KLSVpZmFyY2ggJXttdWx0aWxpYl82NF9hcmNoc30KLSMgUmVt b3ZlIGxpYnJhcmllcyBmb3IgdGhlIG90aGVyIGFyY2ggb24gbXVsdGlsaWIgYXJjaGVzCi1ybSAt ZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYi9saWIqLnNvKgotcm0gLWYgJFJQTV9CVUlM RF9ST09UJXtfcHJlZml4fS9saWIvbGliKi5hCi0lZWxzZQotJWlmYXJjaCBzcGFyYyBwcGMKLXJt IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliNjQvbGliKi5zbyoKLXJtIC1mICRSUE1f QlVJTERfUk9PVCV7X3ByZWZpeH0vbGliNjQvbGliKi5hCi0lZW5kaWYKLSVlbmRpZgotCi0laWYg JXtidWlsZF9qYXZhfQotbWtkaXIgLXAgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9zaGFyZS9q YXZhL2djai1lbmRvcnNlZCBcCi0JICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9n Y2otJXt2ZXJzaW9ufS9jbGFzc21hcC5kYi5kCi1jaG1vZCA3NTUgJFJQTV9CVUlMRF9ST09UJXtf cHJlZml4fS9zaGFyZS9qYXZhL2djai1lbmRvcnNlZCBcCi0JICAkUlBNX0JVSUxEX1JPT1Qle19w cmVmaXh9LyV7X2xpYn0vZ2NqLSV7dmVyc2lvbn0gXAotCSAgJFJQTV9CVUlMRF9ST09UJXtfcHJl Zml4fS8le19saWJ9L2djai0le3ZlcnNpb259L2NsYXNzbWFwLmRiLmQKLXRvdWNoICRSUE1fQlVJ TERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9nY2otJXt2ZXJzaW9ufS9jbGFzc21hcC5kYgotJWVu ZGlmCi0KLWluc3RhbGwgLW02NDQgJXtTT1VSQ0UzfSAkUlBNX0JVSUxEX1JPT1Qle19tYW5kaXJ9 L21hbjEvcHJvdG9pemUuMQotZWNobyAnLnNvIG1hbjEvcHJvdG9pemUuMScgPiAkUlBNX0JVSUxE X1JPT1Qle19tYW5kaXJ9L21hbjEvdW5wcm90b2l6ZS4xCi1jaG1vZCA2NDQgJFJQTV9CVUlMRF9S T09UJXtfbWFuZGlyfS9tYW4xL3VucHJvdG9pemUuMQotCi0lY2xlYW4KLXJtIC1yZiAkUlBNX0JV SUxEX1JPT1QKLQotJXBvc3QKLS9zYmluL2luc3RhbGwtaW5mbyBcCi0gIC0taW5mby1kaXI9JXtf aW5mb2Rpcn0gJXtfaW5mb2Rpcn0vZ2NjLmluZm8uZ3ogfHwgOgotCi0lcHJldW4KLWlmIFsgJDEg PSAwIF07IHRoZW4KLSAgL3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRlIFwKLSAgICAtLWluZm8t ZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2djYy5pbmZvLmd6IHx8IDoKLWZpCi0KLSVwb3N0 IC1uIGNwcAotL3NiaW4vaW5zdGFsbC1pbmZvIFwKLSAgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAl e19pbmZvZGlyfS9jcHAuaW5mby5neiB8fCA6Ci0KLSVwcmV1biAtbiBjcHAKLWlmIFsgJDEgPSAw IF07IHRoZW4KLSAgL3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRlIFwKLSAgICAtLWluZm8tZGly PSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2NwcC5pbmZvLmd6IHx8IDoKLWZpCi0KLSVwb3N0IGdm b3J0cmFuCi0vc2Jpbi9pbnN0YWxsLWluZm8gXAotICAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7 X2luZm9kaXJ9L2dmb3J0cmFuLmluZm8uZ3ogfHwgOgotCi0lcHJldW4gZ2ZvcnRyYW4KLWlmIFsg JDEgPSAwIF07IHRoZW4KLSAgL3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRlIFwKLSAgICAtLWlu Zm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2dmb3J0cmFuLmluZm8uZ3ogfHwgOgotZmkK LQotJXBvc3QgamF2YQotL3NiaW4vaW5zdGFsbC1pbmZvIFwKLSAgLS1pbmZvLWRpcj0le19pbmZv ZGlyfSAle19pbmZvZGlyfS9nY2ouaW5mby5neiB8fCA6Ci0KLSVwcmV1biBqYXZhCi1pZiBbICQx ID0gMCBdOyB0aGVuCi0gIC9zYmluL2luc3RhbGwtaW5mbyAtLWRlbGV0ZSBcCi0gICAgLS1pbmZv LWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9nY2ouaW5mby5neiB8fCA6Ci1maQotCi0lcG9z dCBnbmF0Ci0vc2Jpbi9pbnN0YWxsLWluZm8gXAotICAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7 X2luZm9kaXJ9L2duYXRfcm0uaW5mby5neiB8fCA6Ci0vc2Jpbi9pbnN0YWxsLWluZm8gXAotICAt LWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2duYXRfdWduX3Vudy5pbmZvLmd6IHx8 IDoKLS9zYmluL2luc3RhbGwtaW5mbyBcCi0gIC0taW5mby1kaXI9JXtfaW5mb2Rpcn0gJXtfaW5m b2Rpcn0vZ25hdC1zdHlsZS5pbmZvLmd6IHx8IDoKLQotJXByZXVuIGduYXQKLWlmIFsgJDEgPSAw IF07IHRoZW4KLSAgL3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRlIFwKLSAgICAtLWluZm8tZGly PSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2duYXRfcm0uaW5mby5neiB8fCA6Ci0gIC9zYmluL2lu c3RhbGwtaW5mbyAtLWRlbGV0ZSBcCi0gICAgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZv ZGlyfS9nbmF0X3Vnbl91bncuaW5mby5neiB8fCA6Ci0gIC9zYmluL2luc3RhbGwtaW5mbyAtLWRl bGV0ZSBcCi0gICAgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9nbmF0LXN0eWxl LmluZm8uZ3ogfHwgOgotZmkKLQotIyBCZWNhdXNlIGdsaWJjIFByZXJlcSdzIGxpYmdjYyBhbmQg L3NiaW4vbGRjb25maWcKLSMgY29tZXMgZnJvbSBnbGliYywgaXQgbWlnaHQgbm90IGV4aXN0IHll dCB3aGVuCi0jIGxpYmdjYyBpcyBpbnN0YWxsZWQKLSVwb3N0IC1uIGxpYmdjYyAtcCAle19wcmVm aXh9L3NiaW4vbGliZ2NjX3Bvc3RfdXBncmFkZQotCi0lcG9zdCAtbiBsaWJzdGRjKysgLXAgL3Ni aW4vbGRjb25maWcKLQotJXBvc3R1biAtbiBsaWJzdGRjKysgLXAgL3NiaW4vbGRjb25maWcKLQot JXBvc3QgLW4gbGlib2JqYyAtcCAvc2Jpbi9sZGNvbmZpZwotCi0lcG9zdHVuIC1uIGxpYm9iamMg LXAgL3NiaW4vbGRjb25maWcKLQotJXBvc3QgLW4gbGliZ2NqCi0vc2Jpbi9sZGNvbmZpZwotL3Ni aW4vaW5zdGFsbC1pbmZvIFwKLSAgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9m YXN0amFyLmluZm8uZ3ogfHwgOgotCi0lcHJldW4gLW4gbGliZ2NqCi1pZiBbICQxID0gMCBdOyB0 aGVuCi0gIC9zYmluL2luc3RhbGwtaW5mbyAtLWRlbGV0ZSBcCi0gICAgLS1pbmZvLWRpcj0le19p bmZvZGlyfSAle19pbmZvZGlyfS9mYXN0amFyLmluZm8uZ3ogfHwgOgotZmkKLQotJXBvc3R1biAt biBsaWJnY2ogLXAgL3NiaW4vbGRjb25maWcKLQotJXBvc3QgLW4gbGliZ2ZvcnRyYW4gLXAgL3Ni aW4vbGRjb25maWcKLQotJXBvc3R1biAtbiBsaWJnZm9ydHJhbiAtcCAvc2Jpbi9sZGNvbmZpZwot Ci0lcG9zdCAtbiBsaWJnbmF0IC1wIC9zYmluL2xkY29uZmlnCi0KLSVwb3N0dW4gLW4gbGliZ25h dCAtcCAvc2Jpbi9sZGNvbmZpZwotCi0lcG9zdCAtbiBsaWJnb21wIC1wIC9zYmluL2xkY29uZmln Ci0KLSVwb3N0dW4gLW4gbGliZ29tcCAtcCAvc2Jpbi9sZGNvbmZpZwotCi0lcG9zdCAtbiBsaWJt dWRmbGFwIC1wIC9zYmluL2xkY29uZmlnCi0KLSVwb3N0dW4gLW4gbGlibXVkZmxhcCAtcCAvc2Jp bi9sZGNvbmZpZwotCi0lZmlsZXMgLWYgJXtuYW1lfS5sYW5nCi0lZGVmYXR0cigtLHJvb3Qscm9v dCkKLSV7X3ByZWZpeH0vYmluL2NjCi0le19wcmVmaXh9L2Jpbi9jODkKLSV7X3ByZWZpeH0vYmlu L2M5OQotJXtfcHJlZml4fS9iaW4vZ2NjCi0le19wcmVmaXh9L2Jpbi9nY292Ci0le19wcmVmaXh9 L2Jpbi9wcm90b2l6ZQotJXtfcHJlZml4fS9iaW4vdW5wcm90b2l6ZQotJWlmYXJjaCBzcGFyYyBw cGMKLSV7X3ByZWZpeH0vYmluLyV7X3RhcmdldF9wbGF0Zm9ybX0tZ2NjCi0lZW5kaWYKLSVpZmFy Y2ggc3BhcmM2NAotJXtfcHJlZml4fS9iaW4vc3BhcmMtJXtfdmVuZG9yfS0le190YXJnZXRfb3N9 LWdjYwotJWVuZGlmCi0laWZhcmNoIHBwYzY0Ci0le19wcmVmaXh9L2Jpbi9wcGMtJXtfdmVuZG9y fS0le190YXJnZXRfb3N9LWdjYwotJWVuZGlmCi0le19wcmVmaXh9L2Jpbi8le2djY190YXJnZXRf cGxhdGZvcm19LWdjYwotJXtfbWFuZGlyfS9tYW4xL2djYy4xKgotJXtfbWFuZGlyfS9tYW4xL2dj b3YuMSoKLSV7X21hbmRpcn0vbWFuMS9wcm90b2l6ZS4xKgotJXtfbWFuZGlyfS9tYW4xL3VucHJv dG9pemUuMSoKLSV7X2luZm9kaXJ9L2djYyoKLSVkaXIgJXtfcHJlZml4fS9saWIvZ2NjCi0lZGly ICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19Ci0lZGlyICV7X3ByZWZp eH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259Ci0lZGlyICV7 X3ByZWZpeH0vbGliZXhlYy9nY2MKLSVkaXIgJXtfcHJlZml4fS9saWJleGVjL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19Ci0lZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQotJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2Nf dGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlCi0le19wcmVmaXh9L2xpYi9n Y2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9TWVNDQUxMUy5jLlgKLSV7 X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2lu Y2x1ZGUvc3RkZGVmLmgKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19 LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvc3RkYXJnLmgKLSV7X3ByZWZpeH0vbGliL2djYy8le2dj Y190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvdmFyYXJncy5oCi0le19w cmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNs dWRlL2Zsb2F0LmgKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7 Z2NjX3ZlcnNpb259L2luY2x1ZGUvbGltaXRzLmgKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvc3RkYm9vbC5oCi0le19wcmVm aXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRl L2lzbzY0Ni5oCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufS9pbmNsdWRlL3N5c2xpbWl0cy5oCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2Nf dGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL3Vud2luZC5oCi0le19wcmVm aXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRl L29tcC5oCi0laWZhcmNoICV7aXg4Nn0geDg2XzY0Ci0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2Nf dGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL21taW50cmluLmgKLSV7X3By ZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1 ZGUveG1taW50cmluLmgKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19 LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvZW1taW50cmluLmgKLSV7X3ByZWZpeH0vbGliL2djYy8l e2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvcG1taW50cmluLmgK LSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259 L2luY2x1ZGUvdG1taW50cmluLmgKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxh dGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvYW1taW50cmluLmgKLSV7X3ByZWZpeH0vbGli L2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvbW1fbWFs bG9jLmgKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259L2luY2x1ZGUvbW0zZG5vdy5oCi0lZW5kaWYKLSVpZmFyY2ggaWE2NAotJXtfcHJlZml4 fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS9p YTY0aW50cmluLmgKLSVlbmRpZgotJWlmYXJjaCBwcGMgcHBjNjQKLSV7X3ByZWZpeH0vbGliL2dj Yy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvcHBjLWFzbS5o Ci0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9u fS9pbmNsdWRlL2FsdGl2ZWMuaAotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0 Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS9zcGUuaAotJWVuZGlmCi0le19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL1JFQURN RQotJXtfcHJlZml4fS9saWJleGVjL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259L2NvbGxlY3QyCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufS9jcnQqLm8KLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRf cGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYmdjYy5hCi0le19wcmVmaXh9L2xpYi9nY2MvJXtn Y2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJnY292LmEKLSV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYmdjY19laC5h Ci0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9u fS9saWJnY2Nfcy5zbwotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0v JXtnY2NfdmVyc2lvbn0vbGliZ29tcC5zcGVjCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFy Z2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJnb21wLmEKLSV7X3ByZWZpeH0vbGliL2dj Yy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYmdvbXAuc28KLSVpZmFy Y2ggc3BhcmMgcHBjCi0lZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZv cm19LyV7Z2NjX3ZlcnNpb259LzY0Ci0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3Bs YXRmb3JtfS8le2djY192ZXJzaW9ufS82NC9jcnQqLm8KLSV7X3ByZWZpeH0vbGliL2djYy8le2dj Y190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzY0L2xpYmdjYy5hCi0le19wcmVmaXh9 L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS82NC9saWJnY292 LmEKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNp b259LzY0L2xpYmdjY19laC5hCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRm b3JtfS8le2djY192ZXJzaW9ufS82NC9saWJnY2Nfcy5zbwotJXtfcHJlZml4fS9saWIvZ2NjLyV7 Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvbGliZ29tcC5hCi0le19wcmVm aXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS82NC9saWJn b21wLnNvCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192 ZXJzaW9ufS82NC9saWJtdWRmbGFwLmEKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRf cGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzY0L2xpYm11ZGZsYXB0aC5hCi0le19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS82NC9saWJtdWRmbGFw LnNvCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJz aW9ufS82NC9saWJtdWRmbGFwdGguc28KLSVlbmRpZgotJWlmYXJjaCAle211bHRpbGliXzY0X2Fy Y2hzfQotJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufS8zMgotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0v JXtnY2NfdmVyc2lvbn0vMzIvY3J0Ki5vCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS8zMi9saWJnY2MuYQotJXtfcHJlZml4fS9saWIvZ2Nj LyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIvbGliZ2Nvdi5hCi0le19w cmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS8zMi9s aWJnY2NfZWguYQotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtn Y2NfdmVyc2lvbn0vMzIvbGliZ2NjX3Muc28KLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJn ZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYmdvbXAuYQotJXtfcHJlZml4fS9saWIv Z2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIvbGliZ29tcC5zbwot JXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0v MzIvbGlibXVkZmxhcC5hCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufS8zMi9saWJtdWRmbGFwdGguYQotJXtfcHJlZml4fS9saWIvZ2NjLyV7 Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIvbGlibXVkZmxhcC5zbwotJXtf cHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIv bGlibXVkZmxhcHRoLnNvCi0lZW5kaWYKLSVpZmFyY2ggc3BhcmMgc3BhcmM2NCBwcGMgcHBjNjQK LSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259 L2xpYm11ZGZsYXAuYQotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0v JXtnY2NfdmVyc2lvbn0vbGlibXVkZmxhcHRoLmEKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYm11ZGZsYXAuc28KLSV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYm11ZGZsYXB0 aC5zbwotJWVuZGlmCi0lZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nZXRjb25mCi0le19wcmVmaXh9 L2xpYmV4ZWMvZ2V0Y29uZi9kZWZhdWx0Ci0lZG9jIGdjYy9SRUFETUUqIHJwbS5kb2MvY2hhbmdl bG9ncy9nY2MvQ2hhbmdlTG9nKiBnY2MvQ09QWUlORyoKLQotJWZpbGVzIC1uIGNwcCAtZiBjcHBs aWIubGFuZwotJWRlZmF0dHIoLSxyb290LHJvb3QpCi0vbGliL2NwcAotJXtfcHJlZml4fS9iaW4v Y3BwCi0le19tYW5kaXJ9L21hbjEvY3BwLjEqCi0le19pbmZvZGlyfS9jcHAqCi0lZGlyICV7X3By ZWZpeH0vbGliZXhlYy9nY2MKLSVkaXIgJXtfcHJlZml4fS9saWJleGVjL2djYy8le2djY190YXJn ZXRfcGxhdGZvcm19Ci0lZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3Bs YXRmb3JtfS8le2djY192ZXJzaW9ufQotJXtfcHJlZml4fS9saWJleGVjL2djYy8le2djY190YXJn ZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2NjMQotCi0lZmlsZXMgLW4gbGliZ2NjCi0lZGVm YXR0cigtLHJvb3Qscm9vdCkKLS8le19saWJ9L2xpYmdjY19zLSV7Z2NjX3ZlcnNpb259LSV7REFU RX0uc28uMQotLyV7X2xpYn0vbGliZ2NjX3Muc28uMQotJXtfcHJlZml4fS9zYmluL2xpYmdjY19w b3N0X3VwZ3JhZGUKLSVkb2MgZ2NjL0NPUFlJTkcuTElCCi0KLSVmaWxlcyBjKysKLSVkZWZhdHRy KC0scm9vdCxyb290KQotJXtfcHJlZml4fS9iaW4vJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS0qKysK LSV7X3ByZWZpeH0vYmluL2crKwotJXtfcHJlZml4fS9iaW4vYysrCi0le19tYW5kaXJ9L21hbjEv ZysrLjEqCi0lZGlyICV7X3ByZWZpeH0vbGliL2djYwotJWRpciAle19wcmVmaXh9L2xpYi9nY2Mv JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQotJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFy Z2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQotJWRpciAle19wcmVmaXh9L2xpYmV4ZWMvZ2Nj Ci0lZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQotJWRp ciAle19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVy c2lvbn0KLSV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufS9jYzFwbHVzCi0laWZhcmNoIHNwYXJjIHBwYwotJWRpciAle19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS82NAotJXtfcHJlZml4 fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvbGlic3Rk YysrLnNvCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192 ZXJzaW9ufS82NC9saWJzdGRjKysuYQotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9w bGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvbGlic3VwYysrLmEKLSVlbmRpZgotJWlmYXJjaCAl e211bHRpbGliXzY0X2FyY2hzfQotJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS8zMgotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3Rh cmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIvbGlic3RkYysrLnNvCi0le19wcmVmaXh9 L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS8zMi9saWJzdGRj KysuYQotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVy c2lvbn0vMzIvbGlic3VwYysrLmEKLSVlbmRpZgotJWlmYXJjaCBzcGFyYyBwcGMgJXttdWx0aWxp Yl82NF9hcmNoc30KLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7 Z2NjX3ZlcnNpb259L2xpYnN0ZGMrKy5zbwotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3Rhcmdl dF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGlic3VwYysrLmEKLSVlbmRpZgotJWlmYXJjaCBz cGFyYyBzcGFyYzY0IHBwYyBwcGM2NAotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9w bGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGlic3RkYysrLmEKLSVlbmRpZgotJWRvYyBycG0uZG9j L2NoYW5nZWxvZ3MvZ2NjL2NwL0NoYW5nZUxvZyoKLQotJWZpbGVzIC1uIGxpYnN0ZGMrKwotJWRl ZmF0dHIoLSxyb290LHJvb3QpCi0le19wcmVmaXh9LyV7X2xpYn0vbGlic3RkYysrLnNvLjYqCi0K LSVmaWxlcyAtbiBsaWJzdGRjKystZGV2ZWwKLSVkZWZhdHRyKC0scm9vdCxyb290KQotJWRpciAl e19wcmVmaXh9L2luY2x1ZGUvYysrCi0lZGlyICV7X3ByZWZpeH0vaW5jbHVkZS9jKysvJXtnY2Nf dmVyc2lvbn0KLSV7X3ByZWZpeH0vaW5jbHVkZS9jKysvJXtnY2NfdmVyc2lvbn0vW15nam9zXSoK LSV7X3ByZWZpeH0vaW5jbHVkZS9jKysvJXtnY2NfdmVyc2lvbn0vb3MqCi0le19wcmVmaXh9L2lu Y2x1ZGUvYysrLyV7Z2NjX3ZlcnNpb259L3NbXnVdKgotJWRpciAle19wcmVmaXh9L2xpYi9nY2MK LSVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KLSVkaXIgJXtf cHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0KLSVp ZmFyY2ggc3BhcmMgcHBjCi0lZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxh dGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYjMyCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFy Z2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWIzMi9saWJzdGRjKysuYQotJWVuZGlmCi0l aWZhcmNoIHNwYXJjNjQgcHBjNjQKLSVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3Rhcmdl dF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliNjQKLSV7X3ByZWZpeH0vbGliL2djYy8le2dj Y190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYjY0L2xpYnN0ZGMrKy5hCi0lZW5k aWYKLSVpZm5hcmNoIHNwYXJjIHNwYXJjNjQgcHBjIHBwYzY0Ci0le19wcmVmaXh9L2xpYi9nY2Mv JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJzdGRjKysuYQotJWVuZGlm Ci0laWZuYXJjaCBzcGFyYyBwcGMgJXttdWx0aWxpYl82NF9hcmNoc30KLSV7X3ByZWZpeH0vbGli L2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYnN0ZGMrKy5zbwot JXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0v bGlic3VwYysrLmEKLSVlbmRpZgotJWRvYyBycG0uZG9jL2NoYW5nZWxvZ3MvbGlic3RkYysrLXYz L0NoYW5nZUxvZyogbGlic3RkYysrLXYzL1JFQURNRSogbGlic3RkYysrLXYzL2RvY3MvaHRtbC8K LQotJWZpbGVzIG9iamMKLSVkZWZhdHRyKC0scm9vdCxyb290KQotJWRpciAle19wcmVmaXh9L2xp Yi9nY2MKLSVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KLSVk aXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lv bn0KLSVkaXIgJXtfcHJlZml4fS9saWJleGVjL2djYwotJWRpciAle19wcmVmaXh9L2xpYmV4ZWMv Z2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KLSVkaXIgJXtfcHJlZml4fS9saWJleGVjL2djYy8l e2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259Ci0lZGlyICV7X3ByZWZpeH0vbGli L2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUKLSV7X3By ZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1 ZGUvb2JqYwotJXtfcHJlZml4fS9saWJleGVjL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7 Z2NjX3ZlcnNpb259L2NjMW9iagotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0 Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGlib2JqYy5hCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2Nf dGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJvYmpjLnNvCi0laWZhcmNoIHNwYXJj IHBwYwotJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufS82NAotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0v JXtnY2NfdmVyc2lvbn0vNjQvbGlib2JqYy5hCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFy Z2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS82NC9saWJvYmpjLnNvCi0lZW5kaWYKLSVpZmFy Y2ggJXttdWx0aWxpYl82NF9hcmNoc30KLSVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3Rh cmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIKLSV7X3ByZWZpeH0vbGliL2djYy8le2dj Y190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYm9iamMuYQotJXtfcHJlZml4 fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIvbGlib2Jq Yy5zbwotJWVuZGlmCi0lZG9jIHJwbS5kb2Mvb2JqYy8qCi0lZG9jIGxpYm9iamMvVEhSRUFEUyog cnBtLmRvYy9jaGFuZ2Vsb2dzL2xpYm9iamMvQ2hhbmdlTG9nKgotCi0lZmlsZXMgb2JqYysrCi0l ZGVmYXR0cigtLHJvb3Qscm9vdCkKLSVkaXIgJXtfcHJlZml4fS9saWJleGVjL2djYwotJWRpciAl e19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KLSVkaXIgJXtfcHJl Zml4fS9saWJleGVjL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259Ci0l e19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lv bn0vY2Mxb2JqcGx1cwotCi0lZmlsZXMgLW4gbGlib2JqYwotJWRlZmF0dHIoLSxyb290LHJvb3Qp Ci0le19wcmVmaXh9LyV7X2xpYn0vbGlib2JqYy5zby4xKgotCi0lZmlsZXMgZ2ZvcnRyYW4KLSVk ZWZhdHRyKC0scm9vdCxyb290KQotJXtfcHJlZml4fS9iaW4vZ2ZvcnRyYW4KLSV7X3ByZWZpeH0v YmluL2Y5NQotJXtfbWFuZGlyfS9tYW4xL2dmb3J0cmFuLjEqCi0le19pbmZvZGlyfS9nZm9ydHJh bioKLSVkaXIgJXtfcHJlZml4fS9saWIvZ2NjCi0lZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2dj Y190YXJnZXRfcGxhdGZvcm19Ci0lZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRf cGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259Ci0lZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nY2MKLSVk aXIgJXtfcHJlZml4fS9saWJleGVjL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19Ci0lZGlyICV7 X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9u fQotJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192 ZXJzaW9ufS9maW5jbHVkZQotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9y bX0vJXtnY2NfdmVyc2lvbn0vZmluY2x1ZGUvb21wX2xpYi5oCi0le19wcmVmaXh9L2xpYi9nY2Mv JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9maW5jbHVkZS9vbXBfbGliLmY5 MAotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lv bn0vZmluY2x1ZGUvb21wX2xpYi5tb2QKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRf cGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2ZpbmNsdWRlL29tcF9saWJfa2luZHMubW9kCi0le19w cmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0v Zjk1MQotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVy c2lvbn0vbGliZ2ZvcnRyYW5iZWdpbi5hCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJnZm9ydHJhbi5hCi0le19wcmVmaXh9L2xpYi9n Y2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJnZm9ydHJhbi5zbwot JWlmYXJjaCBzcGFyYyBwcGMKLSVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9w bGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJn ZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzY0L2xpYmdmb3J0cmFuYmVnaW4uYQotJXtfcHJl Zml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvbGli Z2ZvcnRyYW4uYQotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtn Y2NfdmVyc2lvbn0vNjQvbGliZ2ZvcnRyYW4uc28KLSVlbmRpZgotJWlmYXJjaCAle211bHRpbGli XzY0X2FyY2hzfQotJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufS8zMgotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0 Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIvbGliZ2ZvcnRyYW5iZWdpbi5hCi0le19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS8zMi9saWJnZm9ydHJh bi5hCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJz aW9ufS8zMi9saWJnZm9ydHJhbi5zbwotJWVuZGlmCi0lZG9jIHJwbS5kb2MvZ2ZvcnRyYW4vKgot Ci0lZmlsZXMgLW4gbGliZ2ZvcnRyYW4KLSVkZWZhdHRyKC0scm9vdCxyb290KQotJXtfcHJlZml4 fS8le19saWJ9L2xpYmdmb3J0cmFuLnNvLjEqCi0KLSVpZiAle2J1aWxkX2phdmF9Ci0lZmlsZXMg amF2YQotJWRlZmF0dHIoLSxyb290LHJvb3QpCi0le19wcmVmaXh9L2Jpbi9nY2oKLSV7X3ByZWZp eH0vYmluL2dqYXZhaAotJXtfcHJlZml4fS9iaW4vZ2NqaAotJXtfcHJlZml4fS9iaW4vamNmLWR1 bXAKLSV7X21hbmRpcn0vbWFuMS9nY2ouMSoKLSV7X21hbmRpcn0vbWFuMS9qY2YtZHVtcC4xKgot JXtfbWFuZGlyfS9tYW4xL2dqYXZhaC4xKgotJXtfbWFuZGlyfS9tYW4xL2djamguMSoKLSV7X2lu Zm9kaXJ9L2djaioKLSVkaXIgJXtfcHJlZml4fS9saWJleGVjL2djYwotJWRpciAle19wcmVmaXh9 L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KLSVkaXIgJXtfcHJlZml4fS9saWJl eGVjL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259Ci0lZGlyICV7X3By ZWZpeH0vbGliL2djYwotJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRm b3JtfQotJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufQotJXtfcHJlZml4fS9saWJleGVjL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19 LyV7Z2NjX3ZlcnNpb259L2pjMQotJXtfcHJlZml4fS9saWJleGVjL2djYy8le2djY190YXJnZXRf cGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2VjajEKLSV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtn Y2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9qdmdlbm1haW4KLSV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYmdjai5zbwot JXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0v bGliZ2NqLXRvb2xzLnNvCi0laWZhcmNoIHNwYXJjIHNwYXJjNjQgcHBjIHBwYzY0Ci0le19wcmVm aXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJnY2pf YmMuc28KLSVlbmRpZgotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0v JXtnY2NfdmVyc2lvbn0vbGliZ2lqLnNvCi0laWZhcmNoIHNwYXJjIHBwYwotJWRpciAle19wcmVm aXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS82NAotJXtf cHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQv bGliZ2NqLnNvCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufS82NC9saWJnY2otdG9vbHMuc28KLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzY0L2xpYmdjal9iYy5zbwotJXtfcHJlZml4 fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvbGliZ2lq LnNvCi0lZW5kaWYKLSVpZmFyY2ggJXttdWx0aWxpYl82NF9hcmNoc30KLSVkaXIgJXtfcHJlZml4 fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIKLSV7X3By ZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xp Ymdjai5zbwotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2Nf dmVyc2lvbn0vMzIvbGliZ2NqLXRvb2xzLnNvCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFy Z2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS8zMi9saWJnY2pfYmMuc28KLSV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYmdpai5z bwotJWVuZGlmCi0lZG9jIHJwbS5kb2MvY2hhbmdlbG9ncy9nY2MvamF2YS9DaGFuZ2VMb2cqCi0K LSVmaWxlcyAtbiBsaWJnY2oKLSVkZWZhdHRyKC0scm9vdCxyb290KQotJXtfcHJlZml4fS9iaW4v anYtY29udmVydAotJXtfcHJlZml4fS9iaW4vZ2lqCi0le19wcmVmaXh9L2Jpbi9namFyCi0le19w cmVmaXh9L2Jpbi9mYXN0amFyCi0le19wcmVmaXh9L2Jpbi9ncmVwamFyCi0le19wcmVmaXh9L2Jp bi9ncm1pYwotJXtfcHJlZml4fS9iaW4vZ3JtaWQKLSV7X3ByZWZpeH0vYmluL2dybWlyZWdpc3Ry eQotJXtfcHJlZml4fS9iaW4vZ3RuYW1lc2VydgotJXtfcHJlZml4fS9iaW4vZ2tleXRvb2wKLSV7 X3ByZWZpeH0vYmluL2dvcmJkCi0le19wcmVmaXh9L2Jpbi9nc2VyaWFsdmVyCi0le19wcmVmaXh9 L2Jpbi9nY2otZGJ0b29sCi0laWYgJXtpbmNsdWRlX2dhcHBsZXR2aWV3ZXJ9Ci0le19wcmVmaXh9 L2Jpbi9nYXBwbGV0dmlld2VyCi0le19tYW5kaXJ9L21hbjEvZ2FwcGxldHZpZXdlci4xKgotJWVu ZGlmCi0le19wcmVmaXh9L2Jpbi9namFyc2lnbmVyCi0le19tYW5kaXJ9L21hbjEvZmFzdGphci4x KgotJXtfbWFuZGlyfS9tYW4xL2dyZXBqYXIuMSoKLSV7X21hbmRpcn0vbWFuMS9namFyLjEqCi0l e19tYW5kaXJ9L21hbjEvZ2phcnNpZ25lci4xKgotJXtfbWFuZGlyfS9tYW4xL2p2LWNvbnZlcnQu MSoKLSV7X21hbmRpcn0vbWFuMS9naWouMSoKLSV7X21hbmRpcn0vbWFuMS9ncm1pYy4xKgotJXtf bWFuZGlyfS9tYW4xL2dybWlyZWdpc3RyeS4xKgotJXtfbWFuZGlyfS9tYW4xL2djai1kYnRvb2wu MSoKLSV7X21hbmRpcn0vbWFuMS9na2V5dG9vbC4xKgotJXtfbWFuZGlyfS9tYW4xL2dvcmJkLjEq Ci0le19tYW5kaXJ9L21hbjEvZ3JtaWQuMSoKLSV7X21hbmRpcn0vbWFuMS9nc2VyaWFsdmVyLjEq Ci0le19tYW5kaXJ9L21hbjEvZ3RuYW1lc2Vydi4xKgotJXtfaW5mb2Rpcn0vZmFzdGphcioKLSV7 X3ByZWZpeH0vJXtfbGlifS9saWJnY2ouc28uKgotJXtfcHJlZml4fS8le19saWJ9L2xpYmdjai10 b29scy5zby4qCi0le19wcmVmaXh9LyV7X2xpYn0vbGliZ2NqX2JjLnNvLioKLSV7X3ByZWZpeH0v JXtfbGlifS9saWJnaWouc28uKgotJWRpciAle19wcmVmaXh9LyV7X2xpYn0vZ2NqLSV7dmVyc2lv bn0KLSV7X3ByZWZpeH0vJXtfbGlifS9nY2otJXt2ZXJzaW9ufS9saWJndGtwZWVyLnNvCi0le19w cmVmaXh9LyV7X2xpYn0vZ2NqLSV7dmVyc2lvbn0vbGliZ2pzbWFsc2Euc28KLSV7X3ByZWZpeH0v JXtfbGlifS9nY2otJXt2ZXJzaW9ufS9saWJqYXd0LnNvCi0laWYgJXtpbmNsdWRlX2dhcHBsZXR2 aWV3ZXJ9Ci0le19wcmVmaXh9LyV7X2xpYn0vZ2NqLSV7dmVyc2lvbn0vbGliZ2Nqd2VicGx1Z2lu LnNvCi0lZW5kaWYKLSV7X3ByZWZpeH0vJXtfbGlifS9nY2otJXt2ZXJzaW9ufS9saWJqdm0uc28K LSVkaXIgJXtfcHJlZml4fS9zaGFyZS9qYXZhCi0le19wcmVmaXh9L3NoYXJlL2phdmEvW15zbF0q Ci0le19wcmVmaXh9L3NoYXJlL2phdmEvbGliZ2NqLSV7dmVyc2lvbn0uamFyCi0lZGlyICV7X3By ZWZpeH0vJXtfbGlifS9zZWN1cml0eQotJWNvbmZpZyhub3JlcGxhY2UpICV7X3ByZWZpeH0vJXtf bGlifS9zZWN1cml0eS9jbGFzc3BhdGguc2VjdXJpdHkKLSV7X3ByZWZpeH0vJXtfbGlifS9sb2dn aW5nLnByb3BlcnRpZXMKLSVkaXIgJXtfcHJlZml4fS8le19saWJ9L2djai0le3ZlcnNpb259L2Ns YXNzbWFwLmRiLmQKLSVhdHRyKDA2NDQscm9vdCxyb290KSAldmVyaWZ5KG5vdCBtZDUgc2l6ZSBt dGltZSkgJWdob3N0ICVjb25maWcobWlzc2luZ29rLG5vcmVwbGFjZSkgJXtfcHJlZml4fS8le19s aWJ9L2djai0le3ZlcnNpb259L2NsYXNzbWFwLmRiCi0laWYgJXtpbmNsdWRlX2dhcHBsZXR2aWV3 ZXJ9Ci0lZG9jIHJwbS5kb2MvUkVBRE1FLmxpYmdjandlYnBsdWdpbi5zbwotJWVuZGlmCi0KLSVm aWxlcyAtbiBsaWJnY2otZGV2ZWwKLSVkZWZhdHRyKC0scm9vdCxyb290KQotJXtfcHJlZml4fS9i aW4vYWRkcjJuYW1lLmF3awotJWRpciAle19wcmVmaXh9L2xpYi9nY2MKLSVkaXIgJXtfcHJlZml4 fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KLSVkaXIgJXtfcHJlZml4fS9saWIvZ2Nj LyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0KLSVkaXIgJXtfcHJlZml4fS9s aWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZQotJXtf cHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5j bHVkZS9nY2oKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2Nj X3ZlcnNpb259L2luY2x1ZGUvamF3dC5oCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL2phd3RfbWQuaAotJXtfcHJlZml4fS9s aWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS9qbmku aAotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lv bn0vaW5jbHVkZS9qbmlfbWQuaAotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0 Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS9qdm1waS5oCi0le19wcmVmaXh9L2xpYi9nY2Mv JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJnY2ouc3BlYwotJWlmYXJj aCBzcGFyYyBwcGMKLSVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9y bX0vJXtnY2NfdmVyc2lvbn0vbGliMzIKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRf cGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYjMyL2xpYmdjal9iYy5zbwotJWVuZGlmCi0laWZh cmNoIHNwYXJjNjQgcHBjNjQKLSVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9w bGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliNjQKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYjY0L2xpYmdjal9iYy5zbwotJWVuZGlm Ci0laWZuYXJjaCBzcGFyYyBzcGFyYzY0IHBwYyBwcGM2NAotJXtfcHJlZml4fS9saWIvZ2NjLyV7 Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliZ2NqX2JjLnNvCi0lZW5kaWYK LSVkaXIgJXtfcHJlZml4fS9pbmNsdWRlL2MrKwotJWRpciAle19wcmVmaXh9L2luY2x1ZGUvYysr LyV7Z2NjX3ZlcnNpb259Ci0le19wcmVmaXh9L2luY2x1ZGUvYysrLyV7Z2NjX3ZlcnNpb259L1tn al0qCi0le19wcmVmaXh9L2luY2x1ZGUvYysrLyV7Z2NjX3ZlcnNpb259L29yZwotJXtfcHJlZml4 fS9pbmNsdWRlL2MrKy8le2djY192ZXJzaW9ufS9zdW4KLSV7X3ByZWZpeH0vJXtfbGlifS9wa2dj b25maWcvbGliZ2NqLSoucGMKLSVkb2MgcnBtLmRvYy9ib2VobS1nYy8qIHJwbS5kb2MvZmFzdGph ci8qIHJwbS5kb2MvbGliZmZpLyoKLSVkb2MgcnBtLmRvYy9saWJqYXZhLyoKLQotJWZpbGVzIC1u IGxpYmdjai1zcmMKLSVkZWZhdHRyKC0scm9vdCxyb290KQotJWRpciAle19wcmVmaXh9L3NoYXJl L2phdmEKLSV7X3ByZWZpeH0vc2hhcmUvamF2YS9zcmMqLnppcAotJXtfcHJlZml4fS9zaGFyZS9q YXZhL2xpYmdjai10b29scy0le3ZlcnNpb259LmphcgotJWVuZGlmCi0KLSVpZiAle2J1aWxkX2Fk YX0KLSVmaWxlcyBnbmF0Ci0lZGVmYXR0cigtLHJvb3Qscm9vdCkKLSV7X3ByZWZpeH0vYmluL2du YXQqCi0le19wcmVmaXh9L2Jpbi9ncHIqCi0le19pbmZvZGlyfS9nbmF0KgotJWRpciAle19wcmVm aXh9L2xpYi9nY2MKLSVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9y bX0KLSVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2Nf dmVyc2lvbn0KLSVkaXIgJXtfcHJlZml4fS9saWJleGVjL2djYwotJWRpciAle19wcmVmaXh9L2xp YmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KLSVkaXIgJXtfcHJlZml4fS9saWJleGVj L2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259Ci0le19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9hZGFpbmNsdWRlCi0l e19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9h ZGFsaWIKLSV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufS9nbmF0MQotJWRvYyBycG0uZG9jL2NoYW5nZWxvZ3MvZ2NjL2FkYS9DaGFuZ2VM b2cqCi0KLSVmaWxlcyAtbiBsaWJnbmF0Ci0lZGVmYXR0cigtLHJvb3Qscm9vdCkKLSV7X3ByZWZp eH0vJXtfbGlifS9saWJnbmF0LSouc28KLSV7X3ByZWZpeH0vJXtfbGlifS9saWJnbmFybC0qLnNv Ci0lZW5kaWYKLQotJWZpbGVzIC1uIGxpYmdvbXAKLSVkZWZhdHRyKC0scm9vdCxyb290KQotJXtf cHJlZml4fS8le19saWJ9L2xpYmdvbXAuc28uMSoKLSVkb2MgcnBtLmRvYy9jaGFuZ2Vsb2dzL2xp YmdvbXAvQ2hhbmdlTG9nKgotCi0lZmlsZXMgLW4gbGlibXVkZmxhcAotJWRlZmF0dHIoLSxyb290 LHJvb3QpCi0le19wcmVmaXh9LyV7X2xpYn0vbGlibXVkZmxhcC5zby4wKgotJXtfcHJlZml4fS8l e19saWJ9L2xpYm11ZGZsYXB0aC5zby4wKgotCi0lZmlsZXMgLW4gbGlibXVkZmxhcC1kZXZlbAot JWRlZmF0dHIoLSxyb290LHJvb3QpCi0lZGlyICV7X3ByZWZpeH0vbGliL2djYwotJWRpciAle19w cmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQotJWRpciAle19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQotJWRpciAle19wcmVm aXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRl Ci0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9u fS9pbmNsdWRlL21mLXJ1bnRpbWUuaAotJWlmYXJjaCBzcGFyYyBwcGMKLSVkaXIgJXtfcHJlZml4 fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliMzIKLSV7 X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xp YjMyL2xpYm11ZGZsYXAuYQotJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9y bX0vJXtnY2NfdmVyc2lvbn0vbGliMzIvbGlibXVkZmxhcHRoLmEKLSVlbmRpZgotJWlmYXJjaCBz cGFyYzY0IHBwYzY0Ci0lZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZv cm19LyV7Z2NjX3ZlcnNpb259L2xpYjY0Ci0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWI2NC9saWJtdWRmbGFwLmEKLSV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYjY0L2xpYm11 ZGZsYXB0aC5hCi0lZW5kaWYKLSVpZm5hcmNoIHNwYXJjIHNwYXJjNjQgcHBjIHBwYzY0Ci0le19w cmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJt dWRmbGFwLmEKLSV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2Nj X3ZlcnNpb259L2xpYm11ZGZsYXB0aC5hCi0le19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJtdWRmbGFwLnNvCi0le19wcmVmaXh9L2xpYi9n Y2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJtdWRmbGFwdGguc28K LSVlbmRpZgotJWRvYyBycG0uZG9jL2NoYW5nZWxvZ3MvbGlibXVkZmxhcC9DaGFuZ2VMb2cqCi0K LSVjaGFuZ2Vsb2cKLSogV2VkIERlYyAxMiAyMDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhh dC5jb20+IDQuMS4yLTM2Ci0tIHJldmVydCBQUiBjKysvMzQwOTQgZml4IGFsdG9nZXRoZXIsIGl0 IHdhcyBvbmx5IGFjY2VwdHMtaW52YWxpZCBhbmQKLSAgY2F1c2VkIGEgYnVuY2ggb2YgdmFsaWQg b3IgdW5jbGVhciBjYXNlcyB0byBiZSByZWplY3RlZCAoIzQxMTg3MSwgIzQwMjUyMSkKLS0gZml4 IE9wZW5NUCBoYW5kbGluZyBvZiBnbG9iYWwgdmFycyBwcml2YXRpemVkIGluIG9ycGhhbmVkIGNv bnN0cnVjdHMKLSAgd2l0aCAjcHJhZ21hIG9tcCBwYXJhbGxlbCBpbnNpZGUgdGhlbQotLSAtZnJl cG8gZml4ZXMgKCM0MTE3NDEsIFBScyBjKysvMzQxNzgsIGMrKy8zNDM0MCkKLS0gZml4IGR5bmFt aWNfY2FzdDxDICY+IGluIHRlbXBsYXRlcyAoUFIgYysrLzM0MzY0KQotLSBmaXggZXJyb3IgZGlh Z25vc3RpY3MgaW52b2x2aW5nIEFCU19FWFBSIChQUiBjKysvMzQzOTQpCi0KLSogU3VuIERlYyAg MiAyMDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4yLTM1Ci0tIHR3byBj dG9yIHByZWV2YWx1YXRpb24gZml4ZXMgKE9saXZpZXIgSGFpbnF1ZSwKLSAgRXJpYyBCb3RjYXpv dSwgIzQwNzI4MSkKLS0gc2xpZ2h0bHkgd2Vha2VuIGRpYWdub3N0aWNzIGZvciBkZWNsYXJlZCwg YnV0IHVuZGVmaW5lZCBzdGF0aWMgZGF0YQotICBtZW1iZXJzIGluIGFub24gbnMgY2xhc3NlcyAo IzQwMjUyMSwgUFIgYysrLzM0MjM4KQotLSBjb25zaWRlciBzdGF0aWMgZGF0YSBtZW1iZXJzIGFu ZCBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyBpbiBhbm9uIG5zCi0gIGNsYXNzZXMgdG8gYmUgZXh0 ZXJuYWwgZm9yIEMrKyBsaW5rYWdlIHR5cGUgaGFuZGxpbmcgKFBSIGMrKy8zNDIxMykKLS0gaGFu ZGxlIE9CSl9UWVBFX1JFRiBpbiBDKysgZGlhZ25vc3RpY3MgKFBSIGMrKy8zNDI3NSkKLQotKiBT YXQgTm92IDI0IDIwMDcgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjItMzQK LS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTI4NzM2OjEzMDM4NykKLSAgLSBQUnMg bWlkZGxlLWVuZC8zNDAzMCwgcnRsLW9wdGltaXphdGlvbi8yODA2MiwgcnRsLW9wdGltaXphdGlv bi8zMzgyMgotICAtIGZpeCBpZi1jb252ZXJzaW9uIHRvIGF2b2lkIGludHJvZHVjaW5nIHJhY2Vz IGludG8gdGhyZWFkZWQgY29kZQotICAgIChJYW4gTGFuY2UgVGF5bG9yLCAjMzkxNzMxKQotLSBz b21lIEMrKyB2aXNpYmlsaXR5IGZpeGVzIChKYXNvbiBNZXJyaWxsLCBQUnMgYysrLzMyNDcwLCBj KysvMzMwOTQsCi0gIGMrKy8yOTM2NSkKLS0gYXJtIEphdmEgc3VwcG9ydCAoQW5kcmV3IEhhbGV5 LCAjMjQ2ODAwKQotLSBhZGQgcG9zc2liaWxpdHkgdG8gYm9vdHN0cmFwIGdjaiBvbiBhcmNoaXRl Y3R1cmVzIHdoZXJlIGxpYmdjagotICBpc24ndCBhbHJlYWR5IGF2YWlsYWJsZSBvciBpcyB0b28g b2xkIC0gYnVpbGQgb24gc29tZSBhbHJlYWR5Ci0gIHN1cHBvcnRlZCBhcmNoIHRoZSBycG0gd2l0 aCAtLXdpdGggamF2YV90YXIgYW5kIHRoZSBjcmVhdGVkCi0gIHRhcmJhbGwgYnJpbmcgdG8gdGhl IG5ldyBhcmNoIGFuZCBidWlsZCAtLXdpdGggamF2YV9ib290c3RyYXAKLS0gYmFja3BvcnQgYSBi dW5jaCBvZiBidWdmaXhlcyBmcm9tIEdDQyB0cnVuawotICAtIFBScyBjKysvMjkyMjUsIGMrKy8z MDI5MywgYysrLzMwMjk0LCBjKysvMzA5ODgsIGMrKy8zMjI0MSwKLQljKysvMzIzODQsIGMrKy8z MzUwMSwgYysrLzMzNTE2LCBjKysvMzM2MTYsIGMrKy8zMzgzNiwKLQljKysvMzM4NDIsIGMrKy8z Mzg0NCwgYysrLzMzOTYyLCBjKysvMzQwODksIGMrKy8zNDA5NCwKLQljLzM0MTQ2LCBkZWJ1Zy8z MzUzNywgbWlkZGxlLWVuZC8yMzg0OCwgbWlkZGxlLWVuZC8zNDA3MCwKLQl0ZXN0c3VpdGUvMzM5 NzgsIHRyZWUtb3B0aW1pemF0aW9uLzMzNzIzCi0tIGZpeCBhYnMgb3B0aW1pemF0aW9uIChSaWNo YXJkIEd1ZW50aGVyLCAjMzk0MjcxLCBQUiBtaWRkbGUtZW5kLzM0MTMwKQotLSBmb3J0cmFuIGxi b3VuZC91Ym91bmQgZml4IChQYXVsIFRob21hcywgIzM5MTE1MSwgUFIgZm9ydHJhbi8yOTcxMikK LS0gZ2VuZXJhdGUgcHJvcGVyIGZvcnRyYW4gZGVidWdpbmZvIGZvciBhc3N1bWVkLXNpemUsIGFz c3VtZWQtc2hhcGUKLSAgYW5kIGRlZmVycmVkIGFycmF5cyAoIzM2NDAwMSkKLQotKiBTdW4gT2N0 IDIxIDIwMDcgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjItMzMKLS0gcmVi dWlsZCB0byBmaXggbXVsdGlsaWIgY29uZmxpY3QgYmV0d2VlbiBpMzg2IGFuZCB4ODZfNjQgbGli Z2NqLAotICBzZXQgamF2YSBtYW4gcGFnZSB0aW1lc3RhbXAgZnJvbSB0aGUgdGltZXN0YW1wIG9m ICoudGV4aW5mbyByYXRoZXIKLSAgdGhhbiBjdXJyZW50IGRhdGUgdG8gYXZvaWQgdGhpcyBwcm9i bGVtIGluIHRoZSBmdXR1cmUgKCMzNDEyMjEpCi0tIGZpeCBwcGM2NCB1bndpbmRpbmcgb2YgY3Iy IHJlZ2lzdGVyIGlmIHZkc289MAotCi0qIFR1ZSBPY3QgMTYgMjAwNyBKYWt1YiBKZWxpbmVrIDxq YWt1YkByZWRoYXQuY29tPiA0LjEuMi0zMgotLSBvbmx5IGFsbG93IF9fbGFiZWxfXyBhdCB0aGUg c3RhcnQgb2YgYSBibG9jayAoUFIgYysrLzMyMTIxKQotLSBkaXNhYmxlIC1maXBhLXR5cGUtZXNj YXBlIGJ5IGRlZmF1bHQgKFBSIHRyZWUtb3B0aW1pemF0aW9uLzMzMTM2KQotLSBWTEEgaGFuZGxp bmcgZml4IChQUiBjLzMzMjM4LCBQUiBjLzI3MzAxKQotLSBkaXNhYmxlIFRFUiBvZiBwdXJlIGFu ZCBjb25zdCBmdW5jdGlvbiBjYWxscyBleGNlcHQgZm9yIF9fYnVpbHRpbl9leHBlY3QKLSAgKFBS IHRyZWUtb3B0aW1pemF0aW9uLzMzNjE5KQotLSBoYW5kbGUgY2xhc3NlcyB3aXRoIGNoYXJhY3Rl cnMgb3RoZXIgdGhhbiBbYS16QS1aMC05XyRdIGluCi0gIHRoZWlyIG5hbWVzIChBbmRyZXcgSGFs ZXksICMyOTc5NjEsIFBSIGphdmEvMzM2MzkpCi0tIGZpeCBwYXJzaW5nIG9mIEMrKyBmdW5jdGlv bi1saWtlIGNhc3QgaW4gdGVtcGxhdGUgYXJndW1lbnQgd2hlcmUgY2FzdCdzCi0gIGFyZ3VtZW50 IHVzZXMgZ3JlYXRlci10aGFuIG9wZXJhdG9yIChQUiBjKysvMzM3NDQpCi0tIGlnbm9yZSBhbHdh eXNfaW5saW5lIGF0dHJpYnV0ZSBvbiByZWRlZmluZWQgZXh0ZXJuIGlubGluZQotICBmdW5jdGlv bnMgKEphbiBIdWJpY2thLCAjMzI5NjcxLCBQUiB0cmVlLW9wdGltaXphdGlvbi8zMzc2MykKLS0g YWRkIHN1cHBvcnQgZm9yIEZvcnRyYW4gaW50IGNvbnZlcnNpb24gaW50cmluc2ljcyAoRnJhbmNv aXMtWGF2aWVyCi0gIENvdWRlcnQsICMzMTcwNTEpCi0tIGxpbmsgbGliZ2NqLXRvb2xzLnNvKiBh Z2FpbnN0IGxpYmdjai5zbyogKCMzMzA3NzEpCi0KLSogV2VkIE9jdCAgMyAyMDA3IEpha3ViIEpl bGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4yLTMxCi0tIGZpeCB2aXNpYmlsaXR5IG9mIEMr KyBndWFyZCB2YXJpYWJsZXMgKEphc29uIE1lcnJpbGwpCi0tIGRvbid0IGRyb3AgREVDTF9CVUlM VF9JTl9DTEFTUyB3aGVuIGRlZmluaW5nIGEgYnVpbHRpbiBmdW5jdGlvbgotCi0qIE1vbiBPY3Qg IDEgMjAwNyBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMi0zMAotLSBmaXgg SUNFIG9uIEMrKyBnbnVfaW5saW5lIGZ1bmN0aW9uIGZvbGxvd2VkIGJ5IHByb3RvdHlwZSBvZiB0 aGUgc2FtZQotICBmbiAoQWxleGFuZHJlIE9saXZhKQotCi0qIEZyaSBTZXAgMjggMjAwNyBKYWt1 YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMi0yOQotLSBwcmludCB2aXJ0dWFsIGlu bGluZSBiYWNrdHJhY2UgaW4gc29tZSBkaWFnbm9zdGljIG1lc3NhZ2VzIHRvIGhlbHAKLSAgbG9j YXRlIGJ1Z3MgcmVwb3J0ZWQgd2l0aCAtRF9GT1JUSUZZX1NPVVJDRXssPTJ9Ci0KLSogVHVlIFNl cCAyNSAyMDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4yLTI4Ci0tIHVw ZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjEyNzY3MjoxMjg3MzYpCi0gIC0gUFJzIGJvb3Rz dHJhcC8zMzQxOCwgYysrLzMxOTQxLCBjKysvMzIxMTMsIGphdmEvMzE4NDIsIHRhcmdldC8zMzI1 NiwKLQl0cmVlLW9wdGltaXphdGlvbi8zMzE0MgotLSBhZGQgc3VwcG9ydCBmb3IgYXJ0aWZpY2lh bCwgZXJyb3IgYW5kIHdhcm5pbmcgYXR0cmlidXRlcwotLSByZXN0b3JlIEphdmEgQ05JIEFCSSBj b21wYXRpYmlsaXR5IGJyb2tlbiBieSBKRFdQIGNoYW5nZXMgKEtlaXRoIFNlaXR6KQotLSBmaXgg SUNFIHdpdGggc2V0X3JocyBhbGxvd2luZyBub24tZ2ltcGxlIChSb2dlciBTYXlsZSwgIzI0NzQw NywKLSAgUFIgdHJlZS1vcHRpbWl6YXRpb24vMzI2OTQpCi0tIGZpeCBJQ0Ugb24gRm9ydHJhbiBp bnRlcmZhY2UtYm9keSBkZWNsYXJpbmcgY3VycmVudCBzdWJyb3V0aW5lIG5hbWUKLSAgKFBhdWwg VGhvbWFzLCAjMzAwODUxLCBQUiBmb3J0cmFuLzIwODgwKQotCi0qIFNhdCBTZXAgMjIgMjAwNyBK YWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMi0yNgotLSBkb24ndCBpZ25vcmUg dGhyb3cgc3BlY2lmaWNhdGlvbiBvZiBmdW5jdGlvbiB0eXBlcyBpbiB0eXBlIGhhc2hpbmcKLSAg KFBSIGMrKy8zMzUwNikKLS0gaGFuZGxlIG1ha2VpbmZvIHZlcnNpb24gPj0gNC4xMCBpbiBnY2Mg Y29uZmlndXJ5Ci0KLSogTW9uIFNlcCAxNyAyMDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhh dC5jb20+IDQuMS4yLTI1Ci0tIGZpeCBJQ0Ugb24gX19idWlsdGluX21lbSpfY2hrIGlmIGl0IGNv dWxkbid0IGJlIGZvbGRlZCB1bnRpbAotICBleHBhbmQgdGltZSBhbmQgYXQgdGhhdCBwb2ludCBp dCBjYW4gYXZvaWQgYSBjYWxsIChQUiBtaWRkbGUtZW5kLzMzNDIzKQotLSBoYW5kbGUgdGhlIHVw Y29taW5nIFBPU0lYICdtJyAqc2NhbmYgYWxsb2NhdGlvbiBtb2RpZmllciBpbgotICBHQ0MgZm9y bWF0IGNoZWNraW5nLCBmaXggdXAgc29tZSBkZXRhaWxzIGFib3V0ICVhcy8lYVMvJWFbCi0KLSog RnJpIFNlcCAxNCAyMDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4yLTI0 Ci0tIGJhY2twb3J0IF9fYnVpbHRpbl92YV9hcmdfcGFja19sZW4gKCkgc3VwcG9ydAotLSBmaXgg Rm9ydHJhbiBlcnJvciByZWNvdmVyeSB3aXRoIERBVEEgKEplcnJ5IERlTGlzbGUsICMyODEzMzEs Ci0gIFBSIGZvcnRyYW4vMjc5NTQpCi0KLSogRnJpIFNlcCAgNyAyMDA3IEpha3ViIEplbGluZWsg PGpha3ViQHJlZGhhdC5jb20+IDQuMS4yLTIzCi0tIGZpeCBfX2J1aWx0aW5fdmFfYXJnX3BhY2sg KCkgc3VwcG9ydCBmb3IgQysrCi0KLSogVGh1IFNlcCAgNiAyMDA3IEpha3ViIEplbGluZWsgPGph a3ViQHJlZGhhdC5jb20+IDQuMS4yLTIyCi0tIGJhY2twb3J0IF9fYnVpbHRpbl92YV9hcmdfcGFj ayAoKSBzdXBwb3J0Ci0tIG1ha2Ugc3VyZSBfX2J1aWx0aW5feyx2fXssZn17cHJpbnQsc2Nhbn1m LCBfX2J1aWx0aW5feyxmfXByaW50Zl91bmxvY2tlZAotICBhbmQgX19idWlsdGluX19feyx2fXss Zn1wcmludGZfY2hrIGNhbiB0aHJvdwotLSBoYW5kbGUgX18qX2NoayBidWlsdGlucyB3aXRob3V0 IF9fYnVpbHRpbl8gaW4gdGhlIG5hbWUgYXMgYW50aWNpcGF0ZWQgaW4KLSAgQysrCi0KLSogU2F0 IFNlcCAgMSAyMDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4yLTIxCi0t IGZpeCBsaWJtdWRmbGFwLWRldmVsIG11bHRpbGliIGNvbmZsaWN0IG9uIHBwYy9wcGM2NCBhbmQg c3BhcmMvc3BhcmM2NAotICAoIzI3MDI4MSkKLQotKiBGcmkgQXVnIDMxIDIwMDcgSmFrdWIgSmVs aW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjItMjAKLS0gYmFja3BvcnQgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBzdXBwb3J0IGZvciBDKysKLS0gZml4IHBwYy9wcGM2NCBfX3N5 bmNfKiBidWlsdGlucyB3aXRoIGFsaWduZWQgOCBvciAxNi1iaXQgdmFsdWVzCi0tIGRvbid0IHNl dCBleGVjdXRhYmxlIGZsYWcgb24gLm5vdGUuR05VLXN0YWNrIG9uIHBwYzY0L2lhNjQgZXZlbgot ICB3aGVuIHRyYW1wb2xpbmVzIGFyZSB1c2VkIC0gdHJhbXBvbGluZXMgb24gdGhvc2UgYXJjaGl0 ZWN0dXJlcwotICBkb24ndCBuZWVkIGV4ZWN1dGFibGUgc3RhY2sKLQotKiBUdWUgQXVnIDIxIDIw MDcgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjItMTkKLS0gdXBkYXRlIGZy b20gZ2NjLTRfMS1icmFuY2ggKC1yMTI3NTI4OjEyNzY3MikKLSAgLSBQUiBjKysvMzIxMTIKLS0g Zml4IHBwYzMyIGxpYmdjYy5hKHRyYW1wLm8pLCBzbyB0aGF0IGJpbmFyaWVzIHVzaW5nIHRyYW1w b2xpbmVzCi0gIGFyZW4ndCBmb3JjZWQgdG8gdXNlIGJzcyBQTFQKLS0gZml4IGEgZm9ydHJhbiBj aGFybGVuIHNoYXJpbmcgYnVnICgjMjUzMTAyKQotLSBmaXggSUNFIHdpdGggWHx+WCBvciBYXn5Y IHdpdGggdmVjdG9ycyAoUFIgbWlkZGxlLWVuZC8zMjkxMikKLS0gbnVrZSBiaXRzL3N0ZGMrKy5n Y2ggZGlyZWN0b3JpZXMgZnJvbSBsaWJzdGRjKystZGV2ZWwgKCMyNTMzMDQpCi0KLSogVGh1IEF1 ZyAxNiAyMDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4yLTE4Ci0tIHVw ZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjEyNjgzMDoxMjc1MjgpCi0gIC0gUFIgYysrLzE3 NzYzCi0tIGZpeCAtLWJ1aWxkLWlkIHBhdGNoIG9uIGlhNjQgKCMyNTE5MzYpCi0tIGZpeCBmb3J0 cmFuIFR4IGZvcm1hdCBoYW5kbGluZyAoSmVycnkgRGVMaXNsZSwgIzI1MjE1MiwKLSAgUFIgbGli Z2ZvcnRyYW4vMzI2NzgpCi0tIGFkZCBzdXBwb3J0IGZvciBTdW4gVWx0cmFTUEFSQyBUMSBjaGlw cyAtIC1tY3B1PW5pYWdhcmEgKERhdmlkIFMuIE1pbGxlcikKLS0gZG9uJ3QgTlJWIG9wdGltaXpl IGZpZWxkcyBpbnNpZGUgYW5vbnltb3VzIHVuaW9ucyAoUFIgYysrLzMyOTkyKQotLSBmb3J0cmFu IGRlYnVnaW5mbyBpbXByb3ZlbWVudHMgZm9yIGNvbnN0YW50IGJvdW5kIGFycmF5cyAoIzI0ODU0 MSwKLSAgUFIgZm9ydHJhbi8yMjI0NCkKLS0gQnVpbGRSZXF1aXJlIG1wZnItZGV2ZWwKLS0gdXBk YXRlIExpY2Vuc2UgdGFnCi0KLSogVHVlIEp1bCAyNCAyMDA3IEpha3ViIEplbGluZWsgPGpha3Vi QHJlZGhhdC5jb20+IDQuMS4yLTE3Ci0tIGZpeCB7LEJ1aWxkfVJlcXVpcmVzIGZyb20gbGFzdCBj aGFuZ2UgKCMyNDkzODQpCi0KLSogTW9uIEp1bCAyMyAyMDA3IEpha3ViIEplbGluZWsgPGpha3Vi QHJlZGhhdC5jb20+IDQuMS4yLTE2Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjEy NjMwMjoxMjY4MzApCi0gIC0gUFJzIHJ0bC1vcHRpbWl6YXRpb24vMzI0NTAsIHRhcmdldC8zMTMz MSwgdGFyZ2V0LzMyNjQxLCB0YXJnZXQvMzI2NjAsCi0JdHJlZS1vcHRpbWl6YXRpb24vMzI2ODEK LS0gcGFzcyAtLWJ1aWxkLWlkIHRvIGxkIGZvciBhbGwgbGlua2luZyBidXQgbGQgLXIsIHVwZGF0 ZSB7LEJ1aWxkfVJlcXVpcmVzCi0gIHRvIGJpbnV0aWxzIHRoYXQgc3VwcG9ydCBpdCAoUm9sYW5k IE1jR3JhdGgpCi0tIGJhY2twb3J0IEFSTSBmaXhlcyBmcm9tIHRydW5rICgjMjQ2ODAwKQotICAt IFBScyBtaWRkbGUtZW5kLzI0OTk4LCB0YXJnZXQvMjg1MTYsIHRhcmdldC8zMDQ4NgotLSBmaXgg c2ltcGxpZnlfcGx1c19taW51cyB3aXRoIHBwY3ssNjR9IHBvd2VyNiB0dW5pbmcgKHJlZ3Jlc3Np b24gZnJvbQotICA0LjEuMS01Mi5lbDUuMiwgIzI0NzI1NikKLQotKiBXZWQgSnVsICA0IDIwMDcg SmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjItMTUKLS0gdXBkYXRlIGZyb20g Z2NjLTRfMS1icmFuY2ggKC1yMTI2MDA4OjEyNjMwMikKLSAgLSBQUnMgYm9laG0tZ2MvMjE5NDAs IGJvZWhtLWdjLzIxOTQyLCB0YXJnZXQvMjgzMDcsIHRhcmdldC8zMjUwNiwKLQl0cmVlLW9wdGlt aXphdGlvbi8zMTk2NiwgdHJlZS1vcHRpbWl6YXRpb24vMzI1MzMKLS0gbWVyZ2UgaW4gcmVkaGF0 L2djYy00XzEtamR3cC1tZXJnZS1icmFuY2gKLSAgLSBKRFdQIHN1cHBvcnQgKEtlaXRoIFNlaXR6 KQotLSBmaXggT3Blbk1QIGhhbmRsaW5nIG9mIEZvcnRyYW4gUE9JTlRFUiBub24tYXJyYXkgdmFy cyAoUFIgZm9ydHJhbi8zMjU1MCkKLQotKiBUdWUgSnVuIDI2IDIwMDcgSmFrdWIgSmVsaW5layA8 amFrdWJAcmVkaGF0LmNvbT4gNC4xLjItMTQKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2gg KC1yMTI1NzI3OjEyNjAwOCkKLSAgLSBQUnMgaW5saW5lLWFzbS8zMjEwOSwgcnRsLW9wdGltaXph dGlvbi8yODAxMSwgdGFyZ2V0LzMyMzg5Ci0tIGdvbXAgdXBkYXRlIGZyb20gZ2NjLTRfMi1icmFu Y2ggKC1yMTI1OTE3OjEyNTkxOCkKLSAgLSBQUiBtaWRkbGUtZW5kLzMyMzYyCi0tIG9uIHBwY3ss NjR9IHdoZW4gdHVuaW5nIGZvciBwb3dlcjZ7LHh9LCB0cnkgdG8gcHV0IHRoZSBiYXNlCi0gIHJl Z2lzdGVyIGFzIGZpcnN0IG9wZXJhbmQgaW4gaW5zdHJ1Y3Rpb25zIHRvIGltcHJvdmUKLSAgcGVy Zm9ybWFuY2UgKFBldGVyIEJlcmduZXIsICMyMjU0MjUsIFBSIG1pZGRsZS1lbmQvMjg2OTApCi0t IG9uIHBwYzY0IGVtaXQgbm9wIGFmdGVyIGEgY2FsbCBhbmQgZGlzYWxsb3cgc2libGluZyBjYWxs cwotICBpZiB0aGUgdGFyZ2V0IGZ1bmN0aW9uIGlzIG5vdCBkZWZpbmVkIGluIHRoZSBzYW1lIG9i amVjdCBmaWxlCi0gIChEYXZpZCBFZGVsc29obiwgIzI0NTQyNCkKLS0gZ29tcCBwYXJhbGxlbCBz ZWN0aW9ucyBmaXggYW5kIGZpeCBmb3IgY2hlY2tpbmcgd2hldGhlciBjb21iaW5lZAotICBwYXJh bGxlbCBjYW4gYmUgdXNlZCAoUFIgbGliZ29tcC8zMjQ2OCkKLQotKiBGcmkgSnVuIDE1IDIwMDcg SmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjItMTMKLS0gdXBkYXRlIGZyb20g Z2NjLTRfMS1icmFuY2ggKC1yMTI0MzY1OjEyNTcyNykKLSAgLSBQUnMgbGliZm9ydHJhbi8zMTQw OSwgbGliZm9ydHJhbi8zMTg4MCwgbGliZm9ydHJhbi8zMTk2NCwKLQlydGwtb3B0aW1pemF0aW9u LzMxNjkxLCB0YXJnZXQvMzEwMjIsIHRhcmdldC8zMTQ4MCwgdGFyZ2V0LzMxNzAxLAotCXRhcmdl dC8zMTg3NiwgdGFyZ2V0LzMyMTYzLCB0cmVlLW9wdGltaXphdGlvbi8yNjk5OAotLSBnb21wIHVw ZGF0ZXMgZnJvbSB0aGUgdHJ1bmsgKC1yMTI1NTQxOjEyNTU0MiwgLXIxMjU1NDM6MTI1NTQ0KSBh bmQKLSAgZnJvbSBnY2MtNF8yLWJyYW5jaCAoLXIxMjUxODQ6MTI1MTg1KQotICAtIFBScyB0cmVl LW9wdGltaXphdGlvbi8zMTc2OSwgYysrLzMyMTc3Ci0tIGRvbid0IHNldCBUUkVFX1JFQURPTkxZ IG9uIEMrKyBvYmplY3RzIHRoYXQgbmVlZCBydW50aW1lIGluaXRpYWxpemF0aW9uCi0gIChQUnMg YysrLzMxODA2LCBjKysvMzE4MDkpCi0tIGZpeCBjb21wdXRhdGlvbiBvZiBjb21tb24gcG9pbnRl ciB0eXBlIChQUiB0cmVlLW9wdGltaXphdGlvbi8zMjEzOSkKLS0gcHJlY29tcHV0ZSBjb25zdCBh bmQgcHVyZSBmbiBjYWxscyBpbnNpZGUgYW5vdGhlciBmbiBjYWxsIGFyZ3VtZW50cwotICB3aXRo IGFjY3VtdWxhdGluZyBvdXRnb2luZyBhcmdzCi0gIChQUnMgbWlkZGxlLWVuZC8zMjI4NSwgdHJl ZS1vcHRpbWl6YXRpb24vMzA0OTMpCi0tIGZpeCBoYW5kbGluZyBvZiBSRVNVTFRfREVDTHMgaW4g cG9pbnRzLXRvIGFuYWx5c2lzCi0gICgjMjQzNDM4LCBQUiB0cmVlLW9wdGltaXphdGlvbi8zMjM1 MykKLS0gd29yayBhcm91bmQgamF2YS5sYW5nLnJlZmxlY3QuTW9kaWZpZXIuSU5URVJQUkVURUQg Y2xhc2ggd2l0aAotICBqYXZhLmxhbmcucmVmbGVjdC5Nb2RpZmllci5TWU5USEVUSUMgKEFuZHJl dyBIYWxleSwgIzI0MDcyMCkKLQotKiBUaHUgTWF5ICAzIDIwMDcgSmFrdWIgSmVsaW5layA8amFr dWJAcmVkaGF0LmNvbT4gNC4xLjItMTIKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1y MTI0MTAwOjEyNDM2NSkKLSAgLSBQUnMgYysrLzMwMDE2LCBjKysvMzAyMjEsIG1pZGRsZS1lbmQv MzA3NjEsIHRhcmdldC8xODk4OSwKLQl0YXJnZXQvMjg2NzUsIHRyZWUtb3B0aW1pemF0aW9uLzI5 NDQ2LCB0cmVlLW9wdGltaXphdGlvbi8zMTY5OAotLSBhZGQgZGVmYXVsdC5jc3MgSmF2YSByZXNv dXJjZSAoVG9tIEZpdHpzaW1tb25zLCAjMjM3MzA0KQotLSBkb24ndCBpbmNyZWFzZSBhbGlnbm1l bnQgb2YgVExTIHZhcmlhYmxlcyB0b28gbXVjaAotLSBfX2RvX2dsb2JhbF9kdG9yc19hdXggaGFy ZGVuaW5nCi0tIGFsbG93IGxpYmdvbXAgdG8gYmUgZGxvcGVuZWQgKFBSIGxpYmdvbXAvMjg0ODIp Ci0tIHNwZWVkIHVwIGFuZCBpbXByb3ZlIGxpYmdvbXAgb21wX2dldF9udW1fcHJvY3MgYW5kIGR5 bmFtaWMKLSAgdGhyZWFkIGNvdW50IGNvbXB1dGF0aW9uCi0tIEdPTVBfQ1BVX0FGRklOSVRZIHN1 cHBvcnQKLS0gZml4IElDRSBvbiBDKysgdHlwZSBwYXNzZWQgYXMgT3Blbk1QIGNsYXVzZSB2YXJp YWJsZSAoUFIgYysrLzMxNzQ4KQotCi0qIFdlZCBBcHIgMjUgMjAwNyBKYWt1YiBKZWxpbmVrIDxq YWt1YkByZWRoYXQuY29tPiA0LjEuMi0xMQotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5jaCAo LXIxMjM5NTE6MTI0MTAwKQotICAtIFBScyBtaWRkbGUtZW5kLzMxNDQ4LCBwcmVwcm9jZXNzb3Iv MzA0NjgsIHRhcmdldC8yODYyMywgdGFyZ2V0LzMxNjQxCi0tIEphdmEgZml4ZXMKLSAgLSBQUnMg Y2xhc3NwYXRoLzMxNjI2LCBjbGFzc3BhdGgvMzE2NDYsICMyMzY4OTUKLS0gZml4IGEgY291cGxl IG9mIHRyYW5zbGF0aW9uIGJ1Z3MgdGhhdCBjb3VsZCBsZWFkIHRvIElDRXMgKCMyMzUwMDgpCi0t IGZpeCBJQ0Ugd2l0aCAjcHJhZ21hIG9tcCBwYXJhbGxlbCBpbnNpZGUgb2YgYSB0cnkgY2F0Y2gg Y29uc3RydWN0Ci0gIChQUiB0cmVlLW9wdGltaXphdGlvbi8zMDU1OCkKLS0gZml4IE9wZW5NUCBj bGF1c2UgaGFuZGxpbmcgaW4gdGVtcGxhdGVzIChQUiBjKysvMzE1OTgpCi0KLSogVGh1IEFwciAx OSAyMDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4yLTEwCi0tIGZpeCBm b2xkaW5nIG9mIGNvbXBhcmlzaW9ucyBhZ2FpbnN0IG1pbiwgbWluKzEsIG1heC0xLCBtYXgKLSAg KCMyMzY3MTEsIFBSIHRyZWUtb3B0aW1pemF0aW9uLzMxNjMyKQotLSBmaXggX21tX2NtcG9yZF9z cyBvbiBpPzg2L3g4Nl82NCAoIzIzNzA2NykKLS0gSmF2YSBwcm94eSBmaXggKEFuZHJldyBIYWxl eSwgIzIzNjg5NSkKLQotKiBXZWQgQXByIDE4IDIwMDcgSmFrdWIgSmVsaW5layA8amFrdWJAcmVk aGF0LmNvbT4gNC4xLjItOQotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMjM0NjI6 MTIzOTUxKQotICAtIFBScyBjKysvMzAxNjgsIGMrKy8zMTA3NCwgYysrLzMxNDQ5LCBjKysvMzE1 MTcsIGMvMzE1MjAsIG1pZGRsZS1lbmQvMzA3MjksCi0JdGFyZ2V0LzI1NDQ4LCB0YXJnZXQvMzAy ODksIHRhcmdldC8zMDQ4MywgdGFyZ2V0LzMxMzYxLCB0YXJnZXQvMzE1ODIsCi0JdGVzdHN1aXRl LzMxNTc4Ci0tIGZpeCAlJWJ1aWxkX2phdmEgMCBidWlsZCAoIzIzNTUwMCkKLS0gZml4IGxpYmph dmEgYnVpbGQgb24gYWxwaGEgKCMyMzYzMzcpCi0tIGZpeCBmb3IgSmF2YSBBV1QgcHJvZ3JhbXMg dGhhdCBjb3VsZCBoYW5nIFggc2VydmVyIChGcmFuY2lzIEt1bmcsCi0gIFBSIGNsYXNzcGF0aC8z MTMxMSkKLS0gZml4IGdudS5qYXZheC5uZXQuc3NsLnByb3ZpZGVyLlNTTFNvY2tldEZhY3RvcnlJ bXBsIChUb20gVHJvbWV5LCAjMjM2NjE0KQotCi0qIFR1ZSBBcHIgIDMgMjAwNyBKYWt1YiBKZWxp bmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMi04Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJh bmNoICgtcjEyMzI0NToxMjM0NjIpCi0gIC0gUFJzIHRhcmdldC8zMTEzNywgdGFyZ2V0LzMxMzgw Ci0tIGxpYmphdmEgZml4ZXMgKFBScyBjbGFzc3BhdGgvMzEzMDIsIGNsYXNzcGF0aC8zMTMwMywg bGliZ2NqLzI5ODY5KQotLSBqYXZhIFByb3h5IGZpeCAoQW5kcmV3IEhhbGV5LCAjMjM0ODM2KQot LSBkZXF1ZTo6ZXJhc2UgZml4IChTdGV2ZSBMb0Jhc3NvLCBQYW9sbyBDYXJsaW5pLCAjMjM0NTE1 KQotLSBmaXggamF2YSBmb250IHJlbmRlcmluZyAoRnJhbmNpcyBLdW5nLCAjMjMxODE4KQotLSBm aXggYSByZWdyZXNzaW9uIGNhdXNlZCBieSBDKysgdmlzaWJpbGl0eSBmaXhlcyAoSmFzb24gTWVy cmlsbCwKLSAgUFIgYysrLzMxMTg3KQotLSB1c2UgaGlkZGVuIHZpc2liaWxpdHkgZm9yIG5vbi1u YXRpdmUgamF2YSBwcml2YXRlIG1ldGhvZHMgKEFuZHJldyBIYWxleSkKLQotKiBUaHUgTWFyIDI5 IDIwMDcgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjItNwotLSBtYWtlIHN1 cmUgYm9laG0tZ2MgZG9lc24ndCB1c2UgUFJPVF9FWEVDICgjMjAyMjA5KQotLSBmaXggQysrIElD RSBvbiBpID8gaiA6IGsgPSAodm9pZCkgMDsgKFBSIGMrKy8zMDg0NykKLQotKiBUdWUgTWFyIDI3 IDIwMDcgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjItNgotLSB1cGRhdGUg ZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMjMwMTE6MTIzMjQ1KQotICAtIFBScyBmb3J0cmFuLzMx MTg0LCB0YXJnZXQvMzEyNDUsIHRyZWUtb3B0aW1pemF0aW9uLzMwNTkwCi0tIGxpYmphdmEgV15Y IHN1cHBvcnQgKEFsZXhhbmRyZSBPbGl2YSwgIzIwMjIwOSkKLS0gZml4IGdjamggLWpuaSBhbmQg Z2phdmFoIC1jbmkgKFN0ZXBhbiBLYXNhbCwgIzIzMzM0OSkKLS0gZml4IEMrKyBhY2NlcHRzIGlu dmFsaWQgYnVnIChNYXJrIE1pdGNoZWxsLCBQUiBjKysvMzA4NjMpCi0KLSogU2F0IE1hciAxNyAy MDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4yLTUKLS0gdXBkYXRlIGZy b20gZ2NjLTRfMS1icmFuY2ggKC1yMTIyODMzOjEyMzAxMSkKLSAgLSBQUnMgZGVidWcvMjk5MDYs IG1pZGRsZS1lbmQvMzAzNjQsIG1pZGRsZS1lbmQvMzA0MzMsIHRhcmdldC8zMTEyMwotLSByZWJ1 aWx0IGFnYWluc3QgbmV3ZXIgcnBtIHRvIGZpeCBsaWJnY2ogZGVidWdpbmZvICgjMjMyMjIyKQot Ci0qIE1vbiBNYXIgMTIgMjAwNyBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEu Mi00Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjEyMjIxOToxMjI4MzMpCi0gIC0g UFJzIGMrKy8zMDg1MiwgYysrLzMwODk1LCBjbGFzc3BhdGgvMjg1NTAsIGNsYXNzcGF0aC8zMDgz MSwKLQljbGFzc3BhdGgvMzA5MDYsIGNsYXNzcGF0aC8zMDk4MywgZm9ydHJhbi8yOTQ0MSwgZm9y dHJhbi8zMDQwMCwKLQlsaWJnY2ovMTcwMDIsIGxpYmdmb3J0cmFuLzMwOTEwLCBsaWJnZm9ydHJh bi8zMDkxOCwgb3RoZXIvMzEwNTAsCi0JcnRsLW9wdGltaXphdGlvbi8zMDkzMSwgdGFyZ2V0LzMw ODQ4LCB0cmVlLW9wdGltaXphdGlvbi8yOTkyNQotICAtIHJlZW5hYmxlIG1lbW9yeSBDU0UgKEFs ZXhhbmRyZSBPbGl2YSwgIzIyOTM2NiwgUFIgcnRsLW9wdGltaXphdGlvbi8zMDY0MykKLS0gZml4 IHJhbmRvbSBzZWVkIGhhbmRsaW5nIHdpdGggLWZyZXBvIChBbGV4YW5kcmUgT2xpdmEsICMyMjg3 NjkpCi0tIGZpeCBmb3J0cmFuIE9QRU4gd2l0aG91dCBBQ1RJT04gb24gcmVhZC1vbmx5IGZpbGVz eXN0ZW0gKCMyMzExMzQpCi0tIGZpeCBmb3J0cmFuIG1vZHVsZSB3cml0ZXIgSUNFcyBvbiBpbXBs aWNpdCBjb252ZXJzaW9ucyAoIzIzMTI2MSkKLQotKiBUaHUgRmViIDIyIDIwMDcgSmFrdWIgSmVs aW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjItMwotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJy YW5jaCAoLXIxMjIxNjM6MTIyMjE5KQotICAtIFBSIGFkYS8zMDY4NAotLSBmaXggISRvbXAgc3Bh Y2Ugc3BhY2UgcGFyc2luZyBpbiBGb3J0cmFuCi0tIGZpeCBGb3J0cmFuIC1mZjJjIChUb2JpYXMg U2NobHVldGVyLCAjMjI5MTEwLCBQUiBmb3J0cmFuLzI1MzkyKQotLSBhZGQgZ251LmphdmEudXRp bC5ab25lSW5mbyBjbGFzcywgdXNlIHR6ZGF0YSBmaWxlcyBmb3IgbGliZ2NqCi0gIHRpbWV6b25l IHN0dWZmICgjMjI3ODg4KQotCi0qIFR1ZSBGZWIgMjAgMjAwNyBKYWt1YiBKZWxpbmVrIDxqYWt1 YkByZWRoYXQuY29tPiA0LjEuMi0yCi0tIG1lcmdlIGZyb20gcmVkaGF0L2djYy00XzEtYnJhbmNo LWphdmEtbWVyZ2UtMjAwNzAxMTcKLSAgdG8gZ2V0IGFuIGVjbGlwc2UgYmFzZWQgSmF2YSAxLjUg Z2NjLWphdmEvbGliZ2NqCi0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjEyMTk2Mjox MjIxNjMpCi0gIC0gUFJzIGZvcnRyYW4vMzA0NzgsIGZvcnRyYW4vMzA3OTksIG1pZGRsZS1lbmQv MjQ0MjcsIG90aGVyLzI3ODQzLAotCXJ0bC1vcHRpbWl6YXRpb24vMjgxNzMsIHJ0bC1vcHRpbWl6 YXRpb24vMjg3NzIsCi0JcnRsLW9wdGltaXphdGlvbi8yOTU5OSwgcnRsLW9wdGltaXphdGlvbi8z MDc4NywgdGFyZ2V0LzE5MDg3LAotCXRyZWUtb3B0aW1pemF0aW9uLzMwODIzCi0KLSogV2VkIEZl YiAxNCAyMDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4yLTEKLS0gdXBk YXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTIxNzM4OjEyMTk2MikKLSAgLSBHQ0MgNC4xLjIg cmVsZWFzZQotICAtIFBScyBmb3J0cmFuLzI0NzgzLCB0ZXN0c3VpdGUvMzA2NDksIG1pZGRsZS1l bmQvMzAzMTMKLS0gZml4IElDRSBpbiBkd2FyZjJvdXQgd2l0aCBsaW1ibyBkaWUgbm9kZXMgaW4g bmFtZXNwYWNlIGNvbnRleHQKLSAgKEFsZXhhbmRyZSBPbGl2YSwgIzIyNzM3NikKLS0gZml4IGEg U1JBIGJ1ZyB3aXRoIGJpdGZpZWxkcyAoQWxleGFuZHJlIE9saXZhLCAjMjIzNTc2KQotCi0qIFN1 biBGZWIgMTEgMjAwNyBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS01Nwot LSBwYWNrYWdlIHVwIGFtbWludHJpbi5oIG9uIGkzODYveDg2XzY0Ci0tIGZpeCBBTURmYW0xMCB0 ZXN0Y2FzZXMgKEguSi4gTHUpCi0tIGZpeCBmOTUxIGFzc2VydCBhY2Nlc3NpbmcgbWVtb3J5IGFm dGVyIGZyZWUgKEguSi4gTHUsIFBSIGZvcnRyYW4vMjczNTEpCi0KLSogU2F0IEZlYiAxMCAyMDA3 IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4xLTU2Ci0tIHVwZGF0ZSBmcm9t IGdjYy00XzEtYnJhbmNoICgtcjEyMTQ3OToxMjE3MzgpCi0gIC0gUFJzIGMrKy8yOTQ4NywgdGFy Z2V0LzI5NDg3LCB0YXJnZXQvMzAzNzAKLS0gbWVyZ2UgZ29tcCBmaXhlcyBmcm9tIGdjYy00XzIt YnJhbmNoICgtcjEyMTY4OToxMjE2OTApCi0gIFBSIGMrKy8zMDcwMwotLSBhZGQgQU1EZmFtMTAg c3VwcG9ydCAoSGFyc2hhIEphZ2FzaWEsICMyMjI4OTcpCi0tIHNldCBidWlsZF9hZGEgdG8gMSBv biBhbHBoYSAoIzIyNDI0NykKLS0gcmVnZW5lcmF0ZSBsaWJqYXZhLnV0aWwuVGltZVpvbmUgZGF0 YSBmcm9tIHR6ZGF0YTIwMDdhICgjMjI3ODg4KQotCi0qIEZyaSBGZWIgIDIgMjAwNyBKYWt1YiBK ZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS01NQotLSB1cGRhdGUgZnJvbSBnY2MtNF8x LWJyYW5jaCAoLXIxMjEwNjk6MTIxNDc5KQotICAtIFBScyBjKysvMjg5ODgsIGZvcnRyYW4vMzAy NzgsIGxpYnN0ZGMrKy8zMDU4NiwgbWlkZGxlLWVuZC8yOTY4MywKLQlvYmpjLzI3NDM4Ci0tIGFk ZCAtbWFyY2g9Y29yZTIgYW5kIC1tdHVuZT1jb3JlMiBzdXBwb3J0IChWbGFkIE1ha2Fyb3YpCi0t IGZpeCBzcHJpbnRmIGJ1aWx0aW4gKFBSIG1pZGRsZS1lbmQvMzA0NzMpCi0tIGZpeCBJQ0Ugb24g aW52YWxpZCBfX3RocmVhZCByZWdpc3RlciBvbiBmaWVsZHMgKFBSIGMrKy8zMDUzNikKLS0gaWdu b3JlIGluc3RhbGwtaW5mbyBlcnJvcnMgaW4gc2NyaXB0bGV0cyAoIzIyMzY4NykKLS0gcmVuYW1l IE1OSSBhbmQgbW5pIHRvIFNTU0UzIGFuZCBzc3NlMywga2VlcCAtbXssbm8tfW1uaSBvcHRpb24g YW5kCi0gIF9fTU5JX18gbWFjcm8gZm9yIGNvbXBhdGliaWxpdHkKLQotKiBUdWUgSmFuIDIzIDIw MDcgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjEtNTQKLS0gdXBkYXRlIGZy b20gZ2NjLTRfMS1icmFuY2ggKC1yMTIwNTA3OjEyMTA2OSkKLSAgLSBQUnMgYysrLzI4OTk5LCBs aWJnZm9ydHJhbi8zMDQzNSwgb2JqYy8zMDQ3OSwgcnRsLW9wdGltaXphdGlvbi8yOTMyOSwKLQl0 YXJnZXQvMzAxNzMsIHRlc3RzdWl0ZS8xMjMyNQotLSBPcGVuTVAgZml4ZXMgKFBScyBtaWRkbGUt ZW5kLzI3NDE2LCBtaWRkbGUtZW5kLzMwNDIxLCBtaWRkbGUtZW5kLzMwNDk0KQotCi0qIFR1ZSBK YW4gIDkgMjAwNyBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS01MwotLSBm aXggbGliZ29tcCB0ZXN0c3VpdGUgZHJpdmVyIChVbHJpY2ggV2VpZ2FuZCkKLS0gY29tYmluZXIg Zml4ZXMgKFJpY2hhcmQgU2FuZGlmb3JkLCBQUiBydGwtb3B0aW1pemF0aW9uLzI1NTE0LAotICBQ UiBydGwtb3B0aW1pemF0aW9uLzI3NzM2KQotCi0qIEZyaSBKYW4gIDUgMjAwNyBKYWt1YiBKZWxp bmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS01MgotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJy YW5jaCAoLXIxMjAzMjU6MTIwNTA3KQotICAtIFBScyBjKysvMzAzODIsIG1pZGRsZS1lbmQvMjc4 MjYsIG1pZGRsZS1lbmQvMjgxMTYsCi0JdHJlZS1vcHRpbWl6YXRpb24vMzAyMTIKLQotKiBUaHUg SmFuICA0IDIwMDcgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjEtNTEKLS0g Ym9vdHN0cmFwIEFkYSBvbiBwcGMzMiAoRGF2aWQgV29vZGhvdXNlKQotLSBmaXggY29tcGxleCBk aXZpc2lvbiB3aXRoIC1zdGQ9Yzk5IG9yIC1zdGQ9Z251OTkgKFBSIGMvMzAzNjApCi0KLSogV2Vk IEphbiAgMyAyMDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4xLTUwCi0t IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGxheW91dCBvZiBzdHJ1Y3QgX1Vud2lu ZF9Db250ZXh0Ci0gICgjMjIwNjI3KQotLSBmaXggcHJlcHJvY2Vzc29yIGRlZmluZXMgaW4gYXNz ZW1ibHkgcHJlcHJvY2Vzc2VkIHdpdGggLXN0ZD0uLi4KLSAgKFN0ZXZlbiBCb3NzY2hlciwgUFIg Yy8yNTk5MykKLS0gZml4IFBDSCBjcmVhdGlvbiB3aXRoIHRlbXBsYXRlcyAoSmFzb24gTWVycmls bCwgUFIgYysrLzI4MjE3KQotLSBmaXggZHdhcmYyb3V0IElDRSAoQWxleGFuZHJlIE9saXZhLCAj MjE3NTI5LCBQUiBkZWJ1Zy8zMDE4OSkKLQotKiBUdWUgSmFuICAyIDIwMDcgSmFrdWIgSmVsaW5l ayA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjEtNDkKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFu Y2ggKC1yMTIwMDYyOjEyMDMyNSkKLSAgLSBQUnMgZGVidWcvMjY5NjQsIGZvcnRyYW4vMzAyMDAs IGxpYmZvcnRyYW4vMzAxNDUKLS0gZml4IGVuZGxlc3MgcmVjdXJzaW9uIGluIG5lZ2F0ZV9leHBy L2ZvbGRfdW5hcnkgKFBSIG1pZGRsZS1lbmQvMzAyODYpCi0tIGZpeCBjcHAgcHJvYmxlbSBvbiBl bXB0eSBzb3VyY2UgZmlsZXMgKFRvbSBUcm9tZXksIFBSIHByZXByb2Nlc3Nvci8zMDAwMSkKLS0g aW1wcm92ZSBjb25zdHJ1Y3RvciBkaXNhbWJpZ3VhdGlvbiAoTWFyayBNaXRjaGVsbCwgUFIgYysr LzI4MjYxLAotICBQUiBjKysvMjk1MzUpCi0tIGZpeCBoYW5kbGluZyBvZiBub24tTlVMTCBhdHRy aWJ1dGUgb24gbmVzdGVkIGZ1bmN0aW9ucyAoQW5kcmV3IFBpbnNraSwKLSAgUFIgdHJlZS1vcHQv MzAwNDUpCi0tIGZpeCBJQ0Ugd2l0aCBmcmllbmQgdGVtcGxhdGl6ZWQgc3RhdGljIG1lbWJlciBm dW5jdGlvbiAoUFIgYysrLzI5MDU0KQotCi0qIFdlZCBEZWMgMjAgMjAwNiBKYWt1YiBKZWxpbmVr IDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS00OAotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5j aCAoLXIxMTk4MzM6MTIwMDYyKQotICAtIFBScyBsaWJzdGRjKysvMTE5NTMsIHRhcmdldC8yNDAz NgotLSBmaXggaWE2NCBFSCByZWdpb24gYm91bmRhcmllcyB3aGVyZSBsYXN0IGJyLmNhbGwgaW4g dGhlIHJlZ2lvbgotICBpcyBub3QgYXQgdGhlIGVuZCBvZiBhIGJ1bmRsZSAoIzIxOTU5NiwgUFIg dGFyZ2V0LzMwMjMwKQotLSBmaXggREkgcmVzcC4gVEltb2RlIF9fc3luY18qX2NvbXBhcmVfYW5k X3N3YXAgb24gaT84NiByZXNwLiB4ODZfNjQKLSAgKEthenUgSGlyYXRhLCAjMjIwMjU4LCBQUiB0 YXJnZXQvMjcyNjYpCi0tIGZpeCBhc20gdnMuIG5lc3RlZCBmdW5jdGlvbnMgb3IgT3Blbk1QICgj MjIwMjUwLCBQUnMgbWlkZGxlLWVuZC8zMDI2MiwKLSAgbWlkZGxlLWVuZC8zMDI2MykKLS0gZml4 IGhhbmRsaW5nIG9mIGNvbXBsZXggc2hhcmVkIE9wZW5NUCB2YXJzIChBbmRyZXcgUGluc2tpLAot ICBQUiBtaWRkbGUtZW5kLzMwMTQzKQotCi0qIFRodSBEZWMgMTQgMjAwNiBKYWt1YiBKZWxpbmVr IDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS00NwotLSBmaXggaWE2NCBwcm9sb2d1ZSBnZW5lcmF0 aW9uIChBbmRyZWFzIFNjaHdhYiwgIzIxOTU5NCwgUFIgdGFyZ2V0LzI5MTY2KQotLSBmaXggcHBj NjQgZGl2ZGkzIChQUiB0YXJnZXQvMzAxODUpCi0KLSogV2VkIERlYyAxMyAyMDA2IEpha3ViIEpl bGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4xLTQ2Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEt YnJhbmNoICgtcjExOTY1NDoxMTk4MzMpCi0gIC0gUFJzIGMrKy8yNzMxNiwgYysrLzI4NzQwLCBj KysvMjk3MzIsIGZvcnRyYW4vMjk4MjAsIGZvcnRyYW4vMjk4MjEsCi0JZm9ydHJhbi8yOTkxMiwg Zm9ydHJhbi8yOTkxNiwgZm9ydHJhbi8zMDAwMywgbGlic3RkYysrLzI2NDk3LAotCWxpYnN0ZGMr Ky8yODEyNSwgbGlic3RkYysrLzI4MjY1LCB0YXJnZXQvMzAwMzkKLS0gZml4IGxvb3AgdW5zd2l0 Y2hpbmcgKFpkZW5layBEdm9yYWssICMyMTkxMzgsIFBSIHJ0bC1vcHRpbWl6YXRpb24vMzAxMTMp Ci0KLSogRnJpIERlYyAgOCAyMDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQu MS4xLTQ1Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjExOTM0MzoxMTk2NTQpCi0g IC0gUFJzIGMrKy8xNDMyOSwgYysrLzI4Mjg0LCBjKysvMjk2MzIsIGMrKy8yOTcyOCwgYysrLzI5 NzI5LCBjKysvMjk3MzAsCi0JYysrLzI5NzMzLCBjKysvMzAwMjIsIGxpYmZvcnRyYW4vMjk4MTAK LS0gYWRkIHByb3RvaXplLjEgYW5kIHVucHJvdG9pemUuMSBtYW4gcGFnZXMgKCMxODg5MTQpCi0t IGZpeCBSVEwgc2hhcmluZyBwcm9ibGVtIGluIGNvbWJpbmUgKCMyMTg2MDMsIFBSIHJ0bC1vcHRp bWl6YXRpb24vMjc3NjEpCi0tIGFkZGl0aW9ucyB0byBsaWJnY2otc3JjIChCZW4gS29ucmF0aCwg UFIgbGliZ2NqLzMwMTEwKQotCi0qIEZyaSBEZWMgIDEgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1 YkByZWRoYXQuY29tPiA0LjEuMS00NAotLSBmaXggT3Blbk1QIGxvb3BzIHdpdGggMCBpdGVyYXRp b25zIChQUiBsaWJnb21wLzI5OTQ3KQotCi0qIFRodSBOb3YgMzAgMjAwNiBKYWt1YiBKZWxpbmVr IDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS00MwotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5j aCAoLXIxMTkxNjc6MTE5MzQzKQotICAtIFBScyBjKysvMjkwMjIsIGZvcnRyYW4vMjkzOTEsIGZv cnRyYW4vMjk0ODksIGZvcnRyYW4vMjk5ODIsCi0JbGliZ2ZvcnRyYW4vMjk5MzYsIHRhcmdldC8y OTMxOSwgdHJlZS1vcHQvMjk5NjQKLS0gZml4IC1mb3Blbm1wIElDRXMgb24gb21wIGNvbnN0cnVj dHMgd2hlcmUgdGhlIGJvZHkgbmV2ZXIgcmV0dXJucwotICAoUFIgbWlkZGxlLWVuZC8yOTk2NSkK LQotKiBGcmkgTm92IDI0IDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4x LjEtNDIKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTE5MDIxOjExOTE2NykKLSAg LSBmaXggczM5MHsseH0gX19zeW5jXyogYnVpbHRpbnMKLS0gZml4IHBwYzY0IGxpYmZmaSB1bndp bmQgaW5mbwotCi0qIFRodSBOb3YgMjMgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQu Y29tPiA0LjEuMS00MQotLSBmaXggSUNFIHdpdGggLWZvcGVubXAgLWZleGNlcHRpb25zIG9uIGlh NjQgKCMyMTY5ODgsIFBSIGMvMjk5NTUpCi0tIGZpeCBwYXJzaW5nIG9mIEMrKyBpZi9zd2l0Y2gv ZXRjLiBjb25kaXRpb25zIChQUiBjKysvMjk4ODYpCi0KLSogV2VkIE5vdiAyMiAyMDA2IEpha3Vi IEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4xLTQwCi0tIGRpc2FsbG93IG11bHRpcGxl IHZlY3Rvcl9zaXplIGF0dHJpYnV0ZXMgKFBSIGMvMjk3MzYpCi0tIGRvbid0IElDRSBvbiBtYWlu IHJldHVybmluZyBpbnQgd2l0aCB2ZWN0b3Jfc2l6ZSBhdHRyaWJ1dGUgKFBSIGMrKy8yOTczNSkK LS0gaGlkZSBzeW1ib2xzIHRoYXQgc2hvdWxkbid0IGJlIGV4cG9ydGVkIGZyb20gbGliZ2NqLnNv IChHQ18qLCBmZmlfKiwKLSAgbHRfKiBldGMuLCAjMjE2MTIwKQotCi0qIFR1ZSBOb3YgMjAgMjAw NiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS0zOQotLSB1cGRhdGUgZnJv bSBnY2MtNF8xLWJyYW5jaCAoLXIxMTg4OTE6MTE5MDIxKQotICAtIFBScyBtaWRkbGUtZW5kLzI2 MzA2LCBtaWRkbGUtZW5kLzI5NzUzLCB0YXJnZXQvMTg1NTMsIHRhcmdldC8yOTExNCwKLQl0YXJn ZXQvMjk0NDksIHRyZWUtb3B0LzI5Nzg4LCB0cmVlLW9wdGltaXphdGlvbi8yODg4OAotLSBmaXgg c29tZSBDKysgdmVjdG9yIGNvbnZlcnNpb25zIChQUiBjKysvMjk3MzQpCi0tIGZpeCBDKysgSUNF IHdpdGggdmFsdWUgZGVwZW5kZW50IGNvbnN0IGJyYWNlIGVuY2xvc2VkIGluaXRpYWxpemVyCi0g IChQUiBjKysvMjk1NzApCi0KLSogVGh1IE5vdiAxNiAyMDA2IEpha3ViIEplbGluZWsgPGpha3Vi QHJlZGhhdC5jb20+IDQuMS4xLTM4Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjEx ODgwNToxMTg4OTEpCi0gIC0gUFJzIHJ0bC1vcHRpbWl6YXRpb24vMjk3OTcKLS0gZml4IGZvcndw cm9wIHN3aXRjaCBvcHRpbWl6YXRpb24gKFBSIG1pZGRsZS1lbmQvMjk1ODQpCi0tIHJlbW92ZSBv bGQgKjM0KiBwcm92aWRlcyAoIzIxNTgzOSkKLQotKiBUdWUgTm92IDE0IDIwMDYgSmFrdWIgSmVs aW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjEtMzcKLS0gZml4IHVwIGNoZWNrX2VmZmVjdGl2 ZV90YXJnZXRfZm9wZW5tcCB0Y2wgdGVzdCBmb3IgdGhlIHRlc3RzdWl0ZQotICBmcmFtZXdvcmsg YmFja3BvcnQgY2hhbmdlcwotCi0qIFR1ZSBOb3YgMTQgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1 YkByZWRoYXQuY29tPiA0LjEuMS0zNgotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIx MTg1NzE6MTE4ODA1KQotICAtIFBScyBjKysvMjkxMDYsIGMrKy8yOTUxOCwgZm9ydHJhbi8yNDUx OCwgZm9ydHJhbi8yOTIxNiwgZm9ydHJhbi8yOTMxNCwKLQlmb3J0cmFuLzI5MzcxLCBmb3J0cmFu LzI5Mzg3LCBmb3J0cmFuLzI5MzkyLCBmb3J0cmFuLzI5NDkwLAotCWZvcnRyYW4vMjk1NjUsIGZv cnRyYW4vMjk2MzAsIGZvcnRyYW4vMjk2NzksIGZvcnRyYW4vMjk3MTMsCi0JbWlkZGxlLWVuZC8y MTAzMiwgdGVzdHN1aXRlLzI4NzAzLCB0cmVlLW9wdC8yODU0NQotLSBob25vciBpbml0aWFsIGNv bmRpdGlvbnMgYW5kIHZhcmlhYmxlIHR5cGVzIGluIGNvbnZlcnNpb24gdG8gcGVyZmVjdAotICBu ZXN0aW5nIGZvciAtZnRyZWUtbG9vcC1saW5lYXIgb3B0aW1pemF0aW9ucyAoIzIwOTI5NywKLSAg UFIgdHJlZS1vcHRpbWl6YXRpb24vMjk1ODEpCi0KLSogU2F0IE5vdiAxMSAyMDA2IEpha3ViIEpl bGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4xLTM1Ci0tIGZpeCBsaWJnY2pfYmMuc28gZHVt bXkgbGliIG9uIGk/ODYveDg2XzY0L2lhNjQvczM5MC9zMzkweAotCi0qIFNhdCBOb3YgMTEgMjAw NiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS0zNAotLSBmaXggbGliZ2Nq X2JjLnNvIHN5bWxpbmsgYW5kIGR1bW15IGxpYiBwbGFjZW1lbnQgdG8gYXZvaWQgNjQtYml0IGdj Yy1qYXZhCi0gIHJlcXVpcmluZyAzMi1iaXQgbGliYyBvciB2aWNlIHZlcnNhCi0tIGZpeCBJQ0Ug b24gRm9ydHJhbiAhJG9tcCBjb250aW51ZWQgbGluZSBmb2xsb3dlZCBieSAhJCBjb25kaXRpb25h bAotICBsaW5lIChQUiBmb3J0cmFuLzI5NzU5KQotCi0qIFdlZCBOb3YgIDggMjAwNiBKYWt1YiBK ZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS0zMwotLSB1cGRhdGUgZnJvbSBnY2MtNF8x LWJyYW5jaCAoLXIxMTg0Njg6MTE4NTcxKQotICAtIFBScyBmb3J0cmFuLzI0Mzk4LCBmb3J0cmFu LzI3NzAxLCBmb3J0cmFuLzI5MDk4LCBmb3J0cmFuLzI5MTE1LAotCWZvcnRyYW4vMjkyMTEsIGZv cnRyYW4vMjkyMzIsIGZvcnRyYW4vMjkzNjQsIGZvcnRyYW4vMjkzNzMsCi0JZm9ydHJhbi8yOTQw NywgbGliZm9ydHJhbi8yOTYyNywgdHJlZS1vcHRpbWl6YXRpb24vMjk2MTAKLS0gZml4IGphdmEu bmV0LlNvY2tldFBlcm1pc3Npb24gKEdhcnkgQmVuc29uLCAjMjEyNzM5KQotLSBmaXggamF2YS51 dGlsLnJlZ2V4Lk1hdGNoZXIgKEl0byBLYXp1bWl0c3UsICMxODM2OTgsIFBSIGNsYXNzcGF0aC8y OTcwMykKLS0gZml4ICMgPGxpbmVudW0+IDxmaWxlPiA8ZmxhZ3M+IGhhbmRsaW5nIGluIGxpYmNw cCB3aGVuIHN3aXRjaGluZwotICBmcm9tIHN5c3RlbSBoZWFkZXIgdG8gbm9uLXN5c3RlbSBoZWFk ZXIgb3IgbWFpbiBzb3VyY2UKLSAgKFBSIHByZXByb2Nlc3Nvci8yOTYxMikKLS0gZml4IGdjYyBj b25maWd1cnkgZGV0ZWN0aW9uIG9mIGxkIENPTURBVCBzdXBwb3J0Ci0tIG1vdmUgKi5zbyBzeW1s aW5rcyBmcm9tIGxpYmdjai1kZXZlbCB0byBnY2MtamF2YSAoIzIxNDE5NSkKLQotKiBTYXQgTm92 ICA0IDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjEtMzIKLS0gdXBk YXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTE4MDI1OjExODQ2OCkKLSAgLSBQUnMgYm9vdHN0 cmFwLzI4NDAwLCBmb3J0cmFuLzI5MDY3LCBsaWJnZm9ydHJhbi8yOTU2MywgbWlkZGxlLWVuZC8y OTI1MCwKLQlydGwtb3B0aW1pemF0aW9uLzI4OTcwLCBydGwtb3B0aW1pemF0aW9uLzI5NjMxLCB0 YXJnZXQvMjkzNzcsCi0JdHJlZS1vcHRpbWl6YXRpb24vMjc4OTEKLSAgLSBmaXggaW5maW5pdGUg cmVjdXJzaW9uIGluIG1ha2VfdmVjdG9yX3R5cGUgKCMyMTI4NDgsCi0gICAgUFIgdHJlZS1vcHRp bWl6YXRpb24vMjk2MzcpCi0tIG1lcmdlIGdvbXAgZml4ZXMgZnJvbSB0aGUgdHJ1bmsgKC1yMTE4 MTMzOjExODEzNCkKLSAgLSBQUiBmb3J0cmFuLzI5NjI5Ci0tIGZpeCBBIDwgMCA/IDxzaWduIGJp dCBvZiBBPiA6IDAgb3B0aW1pemF0aW9uICgjMjEzODIxLCBQUiBtaWRkbGUtZW5kLzI5Njk1KQot LSBmaXggSUNFIGluIGdmY19nZXRfZGVyaXZlZF90eXBlIChQYXVsIFRob21hcywgIzIxMjkzNiwg UFIgZm9ydHJhbi8yOTY0MSkKLQotKiBXZWQgT2N0IDI1IDIwMDYgSmFrdWIgSmVsaW5layA8amFr dWJAcmVkaGF0LmNvbT4gNC4xLjEtMzEKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1y MTE3NjI5OjExODAyNSkKLSAgLSBQUnMgYysrLzIwNjQ3LCBjKysvMjU4NzgsIGMrKy8yNjg4NCwg YysrLzI3Nzg3LCBjKysvMjg1MDYsIGMrKy8yODkwNiwKLQljKysvMjkwMjAsIGMrKy8yOTE3NSwg YysrLzI5MzE4LCBjKysvMjk0MDgsIGMrKy8yOTQzNSwgYy8yNzE4NCwKLQljLzI5MDkyLCBmb3J0 cmFuLzI1MDkxLCBmb3J0cmFuLzI1MDkyLCBmb3J0cmFuLzI5Mjg0LCBmb3J0cmFuLzI5MzIxLAot CWZvcnRyYW4vMjkzMjIsIGZvcnRyYW4vMjkzOTMsIGZvcnRyYW4vMjk0MDMsIGdjb3YvcHJvZmls ZS8yNjU3MCwKLQlpbmxpbmUtYXNtLzI5MTE5LCBtaWRkbGUtZW5kLzIwNDkxLCBydGwtb3B0aW1p emF0aW9uLzI5MzIzLAotCXRhcmdldC8yNTUxOSwgdGFyZ2V0LzI4ODI1LCB0YXJnZXQvMjg5NjAs IHRhcmdldC8yOTMwMCwKLQl0ZXN0c3VpdGUvMjg4MjksIHRyZWUtb3B0aW1pemF0aW9uLzI2OTY5 Ci0gIC0gZml4IGxpYnN0ZGMrKy5zbyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIEdDQyAz LjQueCAoIzIxMDQ1MikKLS0gZml4IGFsd2F5c19pbmxpbmUgYXR0cmlidXRlIGF0IC1PMCAoSmFu IEh1Ymlja2EsIFBSIG1pZGRsZS1lbmQvMjkyNDEpCi0tIGZpeCBmdW5jdGlvbiBsb2NhbCBzdGF0 aWMgdmFycyB3aXRoIHVzZWQgYXR0cmlidXRlIChKYW4gSHViaWNrYSwKLSAgUmljaGFyZCBHdWVu dGhlciwgUFIgbWlkZGxlLWVuZC8yOTI5OSkKLQotKiBXZWQgT2N0IDExIDIwMDYgSmFrdWIgSmVs aW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjEtMzAKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1i cmFuY2ggKC1yMTE3NDY0OjExNzYyOSkKLSAgLSBQUnMgYysrLzI4MzAyLCBjKysvMjgzNDksIGMr Ky8yODQ1MCwgYysrLzI5MDAyLCBsaWJzdGRjKysvMjkwOTUsCi0JbGlic3RkYysrLzI5MzU0LCBs aWJzdGRjKysvMjkzNjgsIHRhcmdldC8yODQ5MAotLSBmaXggZ251LnhtbC50cmFuc2Zvcm0uVHJh bnNmb3JtZXJJbXBsIChUb20gVHJvbWV5LCAjMjA4ODU0LAotICBQUiBjbGFzc3BhdGgvMjkzNjIp Ci0KLSogRnJpIE9jdCAgNiAyMDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQu MS4xLTI5Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjExNzI2NjoxMTc0NjQpCi0g IC0gUFJzIGJvb3RzdHJhcC8yNjc2NCwgYm9vdHN0cmFwLzI3MzM0LCBjKysvMjkwODAsIGMrKy8y OTEzOCwgYysrLzI5MjI2LAotCWMvMjc0ODksIGMvMjc0OTAsIGRlYnVnLzI4OTgwLCBmb3J0cmFu LzE4NzkxLCBsaWJmb3J0cmFuLzE4NzkxLAotCW1pZGRsZS1lbmQvMjg4NjIsIG9iamMvMjkxOTUs IG90aGVyLzI1MDM1LCB0cmVlLW9wdC8yODk1MgotICAtIGZpeCBzMzkweyx4fSBhZGRyZXNzIGxl Z2l0aW1pemF0aW9uIHdpdGggVExTIHN5bWJvbHMgKEFuZ2VsIE51bmV6Ci0gICAgTWVuY2lhcykK LS0gZml4IC1mbm8tYXV0b21hdGljIHdpdGggRm9ydHJhbiBhdXRvIGFycmF5cyB3aXRoIG5vbi1j b25zdGFudCBzaXplCi0gICgjMjAzOTI4LCBQUiBmb3J0cmFuLzI4NDE1KQotLSBmaXggY2hhciBh bmQgc2hvcnQgX19zeW5jX2ZldGNoX2FuZF9YWFggKFBSIHRhcmdldC8yODkyNCkKLS0gZml4IGVt aXR0aW5nIG9mIHZlY3RvciBjb25zdGFudHMgd2l0aCBpbmNvbXBsZXRlIGluaXRpYWxpemVycyAo UFIgYy8yOTA5MSkKLS0gZml4IElDRSB3aXRoIG11bHRpcGxlIGV4aXQgbG9vcCBhbmQgLWZ0cmVl LWxvb3AtbGluZWFyCi0gICgjMjA4OTM1LCBQUiB0cmVlLW9wdGltaXphdGlvbi8yOTI5MCkKLQot KiBTYXQgU2VwIDMwIDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjEt MjgKLS0gZml4IGkzODYveDg2XzY0IGxlZ2l0aW1pemVfcGljX2FkZHJlc3Mgd2l0aCBUTFMgc3lt Ym9scyAoUFIgdGFyZ2V0LzI5MTk4KQotLSBmaXggZ2ltcGxpZmljYXRpb24gb2YgcG9zdC1pbmNy ZW1lbnQgd2l0aCBzaWRlLWVmZmVjdHMgb24gdGhlIGlubmVyCi0gIGV4cHJlc3Npb24gKFBSIGMv MjkxNTQpCi0KLSogVGh1IFNlcCAyOCAyMDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5j b20+IDQuMS4xLTI3Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjExNzIyNToxMTcy NjYpCi0gIC0gUFIgdGFyZ2V0LzI5MjMwCi0tIHJlc3RyaWN0IHNpbmdsZSBlbnRyeSBtZW17eyxw fWNweSxtb3ZlLHNldH0gb3B0aW1pemF0aW9uIHRvIHZhcnMKLSAgYW5kIGNvbXBvbmVudHMgdGhl cmVvZiAoUFIgbWlkZGxlLWVuZC8yOTI3MikKLS0gZml4IGphdmEudXRpbC5Mb2NhbGUgKFRvbSBU cm9tZXksICMyMDE3MTIpCi0KLSogVHVlIFNlcCAyNiAyMDA2IEpha3ViIEplbGluZWsgPGpha3Vi QHJlZGhhdC5jb20+IDQuMS4xLTI2Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjEx NzE2MjoxMTcyMjUpCi0gIC0gUFJzIGNsYXNzcGF0aC8yODY2MSwgbGliZ2NqLzI5MTc4LCBsaWJz dGRjKysvMjkxNzksIGxpYnN0ZGMrKy8yOTIyNAotICAtIGZpeCB1bndpbmQgaW5mbyBnZW5lcmF0 aW9uLCBicm9rZW4gaW4gZ2NjLTQuMS4xLTIxCi0gICAgKFJvZ2VyIFNheWxlLCBQUiBkZWJ1Zy8y OTEzMikKLQotKiBTYXQgU2VwIDIzIDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNv bT4gNC4xLjEtMjUKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTE3MDY5OjExNzE2 MikKLSAgLSBQUnMgYysrLzI4OTk2LCBjKysvMjkwODcsIG1pZGRsZS1lbmQvMjY5ODMKLS0gZml4 IC1mcHJvZmlsZS11c2Ugd2l0aCBhbm9ueW1vdXMgbmFtZXNwYWNlcyAoSmFuIEh1Ymlja2EsIFBS cyBwcm9maWxlLzIwODE1LAotICBwcm9maWxlLzI2Mzk5KQotLSBmaXggI3ByYWdtYSBvbXAgcGFy YWxsZWwgYW5kICNwcmFnbWEgb21wIHNlY3Rpb24gdGhhdCBjYWxsIG5lc3RlZAotICBmdW5jdGlv bnMgKFBScyBtaWRkbGUtZW5kLzI1MjYxLCBtaWRkbGUtZW5kLzI4NzkwKQotCi0qIFdlZCBTZXAg MjAgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS0yNAotLSB1cGRh dGUgZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMTcwMDA6MTE3MDY5KQotICAtIFBScyBmb3J0cmFu LzIxOTE4LCBmb3J0cmFuLzI4NTI2LCBmb3J0cmFuLzI4ODE3LCBmb3J0cmFuLzI5MDYwLAotCWZv cnRyYW4vMjkxMDEsIGphdmEvMjg3NTQsIGphdmEvMjg4OTIsIGphdmEvMjkwMTMsCi0JbWlkZGxl LWVuZC8yNzIyNiwgbWlkZGxlLWVuZC80NTIwLCB0cmVlLW9wdGltaXphdGlvbi8yODkwMAotLSBm aXggamF2YS51dGlscy5sb2dnaW5nLkxvZ2dlciAoTWFyayBXaWVsYWFyZCwgIzIwNzExMSkKLS0g Zml4IGdudS5qYXZheC5uZXQuc3NsLnByb3ZpZGVyLlNTTFNvY2tldCAoVG9tIFRyb21leSwgIzIw NjkwNCkKLS0gYWRkIHN1cHBvcnQgZm9yIEZvcnRyYW4gT3Blbk1QIGNvbmRpdGlvbmFsIGluY2x1 c2lvbiAoUFIgZm9ydHJhbi8yOTA5NykKLS0gYWRkIHNvbWUgLURfRk9SVElGWV9TT1VSQ0UgY29t cGlsZSB0aW1lIHN0cm5jYXQgYnVmZmVyIG92ZXJmbG93IGNoZWNrcwotCi0qIFN1biBTZXAgMTcg MjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS0yMwotLSB1cGRhdGUg ZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMTY5NTg6MTE3MDAwKQotICAtIFBScyBmb3J0cmFuLzI5 MDUxLCB0YXJnZXQvMjg5NDYKLS0gZml4IHNpbmdsZSBlbnRyeSBtZW17eyxwfWNweSxtb3ZlLHNl dH0gb3B0aW1pemF0aW9uIChBbmRyZXcgUGluc2tpLAotICBQUiB0cmVlLW9wdC8yOTA1OSkKLQot KiBGcmkgU2VwIDE1IDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjEt MjIKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTE2Nzc4OjExNjk1OCkKLSAgLSBQ UnMgYWRhLzIxOTUyLCBhZGEvMjkwMjUsIGMrKy8yNjk1NywgZm9ydHJhbi8yODg5MCwgZm9ydHJh bi8yODkyMywKLQlmb3J0cmFuLzI4OTU5LCBsaWJmb3J0cmFuLzI4ODkwLCBsaWJmb3J0cmFuLzI4 OTIzLCBsaWJmb3J0cmFuLzI4OTQ3LAotCW1pZGRsZS1lbmQvMjg0OTMsIG90aGVyLzIzNTQxLCBv dGhlci8yNjUwNywgcnRsLW9wdGltaXphdGlvbi8yODI0MywKLQlydGwtb3B0aW1pemF0aW9uLzI4 NjM0LCBydGwtb3B0aW1pemF0aW9uLzI4NjM2LCBydGwtb3B0aW1pemF0aW9uLzI4NzI2LAotCXRh cmdldC8xMzY4NSwgdGFyZ2V0LzI2NTA0LCB0YXJnZXQvMjc1MzcsIHRhcmdldC8yNzY4MSwgdGFy Z2V0LzI4NjIxLAotCXRhcmdldC8yOTAwNiwgdGVzdHN1aXRlLzI4OTUwLCB0ZXN0c3VpdGUvMjkw MDcKLS0gZml4ICNwcmFnbWEgb21wIGF0b21pYyAoUFIgbWlkZGxlLWVuZC8yODA0NikKLS0gc3Bl ZWQgdXAgZG9taW5hbmNlIGZyb250aWVycyBjYWxjdWxhdGlvbiAoSmFuIEh1Ymlja2EpCi0tIGFk ZCBSRUFETUUubGliZ2Nqd2VicGx1Z2luLnNvIHRvIGxpYmdjaiAlJWRvYyAoVG9tIEZpdHpzaW1t b25zKQotLSBmaXggZ2NjLWdmb3J0cmFuICUlZG9jICgjMjA2MzMzKQotLSBmaXggZ2NjLWRlYnVn aW5mbyAoIzIwNTUwMCkKLQotKiBGcmkgU2VwICA4IDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJA cmVkaGF0LmNvbT4gNC4xLjEtMjEKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTE2 NDk4OjExNjc3OCkKLSAgLSBQUnMgYysrLzE5ODA5LCBjKysvMjYxMDIsIGMrKy8yNjE5NSwgYysr LzI2NTcxLCBjKysvMjY2NzAsIGMrKy8yNjY3MSwKLQljKysvMjY2OTYsIGMrKy8yNjkxNywgYysr LzI4ODYwLCBjKysvMjg4NzgsIGMrKy8yODg4NiwgZm9ydHJhbi8yMDA2NywKLQlmb3J0cmFuLzI0 ODY2LCBmb3J0cmFuLzI1MDc3LCBmb3J0cmFuLzI1MTAyLCBmb3J0cmFuLzI4MDA1LAotCWZvcnRy YW4vMjg4NzMsIGZvcnRyYW4vMjg4ODUsIGZvcnRyYW4vMjg5MDgsIGxpYmZvcnRyYW4vMjgwMDUs Ci0JbWlkZGxlLWVuZC8yNzcyNCwgbWlkZGxlLWVuZC8yODgxNCwgb3RoZXIvMjIzMTMsCi0JcnRs LW9wdGltaXphdGlvbi8yNzYxNiwgcnRsLW9wdGltaXphdGlvbi8yODM4NiwgdGFyZ2V0LzI0MzY3 Ci0tIGFkZCBwcmltaXRpdmUgY2xhc3Mgb2JqZWN0IHN5bWJvbHMgdG8gbGliZ2NqX2JjLnNvIChU b20gVHJvbWV5LAotICBQUiBsaWJnY2ovMjg2OTgpCi0tIG9wdGltaXplIHNpbmdsZSBlbnRyeSBt ZW1jcHkvbWVtcGNweS9tZW1tb3ZlL21lbXNldCBhbHJlYWR5IGF0IHRoZSB0cmVlCi0gIGxldmVs IChQUiBtaWRkbGUtZW5kLzI3NTY3KQotLSBhZGQgZGVwZW5kZW5jaWVzIHRvICotZGV2ZWwgc3Vi cGFja2FnZXMsIHNvIHRoYXQgZS5nLiBwcGM2NAotICBsaWJzdGRjKystZGV2ZWwgcmVxdWlyZXMg NjQtYml0IGxpYnN0ZGMrKywgc2ltaWxhcmx5IGZvciBsaWJnY2otZGV2ZWwKLSAgYW5kIGxpYmdj ai96bGliLWRldmVsCi0KLSogRnJpIEF1ZyAyNSAyMDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJl ZGhhdC5jb20+IDQuMS4xLTIwCi0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjExNjM4 OToxMTY0OTgpCi0gIC0gUFJzIGMrKy8yODA1NiwgYysrLzI4MDU4LCBjKysvMjg1OTUsIGMrKy8y ODg1MywgYy8yNzU1OCwKLQljLzI3ODkzLCBjLzI4Mjk5LCBjLzI4NDE4LCBkcml2ZXIvMjc2MjIs IGxpYmZvcnRyYW4vMjg0NTIsCi0JbGliZm9ydHJhbi8yODU0MiwgdGFyZ2V0LzI3MDc1Ci0tIG9w dGltaXplIEEgLyAoQiA8PCBOKSB3aGVyZSBBIGFuZCBCIGlzIHBvc2l0aXZlIGFuZCBCIGlzIGEg cG93ZXIgb2YgdHdvCi0gIChBbGFuIE1vZHJhLCAjMTk1OTI0LCBQUiBydGwtb3B0aW1pemF0aW9u LzI2MDI2KQotLSBmaXggYXR0cmlidXRlIGhhbmRsaW5nIGluIEMrKyAoSmFzb24gTWVycmlsbCwg IzIwNDI3NywgIzIwNDAzNSwKLSAgUFJzIGMrKy8yODY1OSwgYysrLzI4ODYzKQotCi0qIEZyaSBB dWcgMjUgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS0xOQotLSB1 cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMTYyMjM6MTE2Mzg5KQotICAtIFBScyBjKysv MjMzNzIsIGMrKy8yNzcxNCwgYysrLzI4MzQ2LCBjKysvMjgzODUsIGZvcnRyYW4vMTgxMTEsCi0J Zm9ydHJhbi8yMDg4NiwgZm9ydHJhbi8yNTIxNywgZm9ydHJhbi8yNTgyOCwgZm9ydHJhbi8yODQy NSwKLQlmb3J0cmFuLzI4NDk2LCBmb3J0cmFuLzI4NjAxLCBmb3J0cmFuLzI4NjMwLCBmb3J0cmFu LzI4NjYwLAotCWZvcnRyYW4vMjg3MzUsIGZvcnRyYW4vMjg3NjIsIGZvcnRyYW4vMjg3NzEsIGZv cnRyYW4vMjg3ODgsCi0JbGlic3RkYysrLzI4NzY1LCB0YXJnZXQvMjc1NjUKLS0gYW5vdGhlciBi aWcgSmF2YSBtZXJnZSBmcm9tIHRoZSB0cnVuayAoVG9tIEZpdHpzaW1tb25zKQotLSBmaXggSUNF IGluIGFkZF9yZWdfYnJfcHJvYl9ub3RlIChQUiBtaWRkbGUtZW5kLzI4NjgzKQotCi0qIEZyaSBB dWcgMTggMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS0xOAotLSB1 cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMTYxNzY6MTE2MjIzKQotICAtIFBScyBjKysv Mjg1OTMsIGMrKy8yODYwNiwgYysrLzI4NzEwLCBjLzI3Njk3LCBtaWRkbGUtZW5kLzIwMjU2LAot CW1pZGRsZS1lbmQvMjUyMTEsIG1pZGRsZS1lbmQvMjY0MzUKLS0gZG9uJ3Qgd2FzdGUgLnJvZGF0 YSBzcGFjZSB3aGVuIGNvcHlpbmcgZnJvbSBjb25zdCBhcnJheSB3aXRoIGxhcmdlCi0gIGVudHJp ZXMgKFBSIG1pZGRsZS1lbmQvMjg3NTUpCi0tIGZpeCAtLWNvbWJpbmUgd2l0aCBhbm9ueW1vdXMg c3RydWN0dXJlcyBpbiB1bmlvbnMgKEFsZXhhbmRyZSBPbGl2YSwKLSAgUFIgYy8yNzg5OCkKLS0g cmVidWlsdCB3aXRoIGxhdGVzdCBiaW51dGlscyB0byBwaWNrIHVwIDY0SyAteiBjb21tb25wYWdl c2l6ZSBvbiBwcGMqCi0gICgjMjAzMDAxKQotCi0qIFdlZCBBdWcgMTYgMjAwNiBKYWt1YiBKZWxp bmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS0xNwotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJy YW5jaCAoLXIxMTYwODI6MTE2MTc2KQotICAtIFBScyBjKysvMjc4OTQsIGMrKy8yODY3NywgYy8y ODY0OSwgbWlkZGxlLWVuZC8yODA3NSwKLQlydGwtb3B0aW1pemF0aW9uLzIzNDU0Ci0tIG1lcmdl IGdvbXAgZml4ZXMgZnJvbSB0aGUgdHJ1bmsgKC1yMTE2MTUyOjExNjE1NCkKLSAgLSBQUnMgbWlk ZGxlLWVuZC8yODcxMywgbWlkZGxlLWVuZC8yODcyNAotLSBhZGQgLW1hcmNoPWdlb2RlIGFuZCAt bXR1bmU9Z2VvZGUgc3VwcG9ydCAoVmxhZCBNYWthcm92KQotLSB1c2UgJWdzIHJhdGhlciB0aGFu ICVmcyByZWdpc3RlciBvbiB4ODZfNjQgd2l0aAotICAtbWNtb2RlbD1rZXJuZWwgLWZzdGFjay1w cm90ZWN0b3IgKEFyamFuIHZhbiBkZSBWZW4sICMyMDI4NDIpCi0tIGRvbid0IGNyZWF0ZSBqYXIg bWFuaWZlc3QgaW4gbGliZ2NqLXRvb2xzLTQuKi5qYXIgKCMyMDA4ODcpCi0tIGV4dGVybmFsbHlf dmlzaWJsZSBhdHRyaWJ1dGUgZml4ZXMgKEphbiBIdWJpY2thLCBQUnMgYy8yNTc5NSwgYysrLzI3 MzY5KQotLSAtLWNvbWJpbmUgZml4ZXMgZm9yIGFnZ3JlZ2F0ZXMgd2l0aCBhdHRyaWJ1dGVzIChQ UnMgYy8yODcwNiwgYy8yODcxMikKLS0gZnVydGhlciBleHRlcm5hbGx5X3Zpc2libGUgYXR0ciBm aXhlcyAoUFIgYy8yODc0NCkKLS0gZml4IGludmFsaWQgdG9rZW4gcGFzdGluZyBlcnJvciBtZXNz YWdlIChQUiBwcmVwcm9jZXNzb3IvMjg3MDkpCi0tIG9iZXkgT3Blbk1QIDIuNSBjaGFwdGVyIDQg ZW52IHZhciByZXF1aXJlbWVudHMgKHdoaXRlc3BhY2UgcnVsZXMKLSAgYW5kIGNhc2UgaW5zZW5z aXRpdml0eSBpbiB0aGUgZW52IHZhcnM7IFBSIGxpYmdvbXAvMjg3MjUpCi0tIGZpeCBPUFRfRkxB R1Mgb24gc3BhcmMKLQotKiBTYXQgQXVnIDEyIDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVk aGF0LmNvbT4gNC4xLjEtMTYKLS0gZml4IG11bHRpbGliIGNvbmZsaWN0IGluIGxpYmdjai10b29s cy00LjEuMS5qYXIgKCMyMDA4ODcpCi0KLSogRnJpIEF1ZyAxMSAyMDA2IEpha3ViIEplbGluZWsg PGpha3ViQHJlZGhhdC5jb20+IDQuMS4xLTE1Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNo ICgtcjExNTg3NzoxMTYwODIpCi0gIC0gUFJzIGMrKy8yNzUwOCwgYysrLzI4MTQ4LCBjKysvMjgy NTAsIGMrKy8yODI1NiwgYysrLzI4MjU3LCBjKysvMjgyNTksCi0JYysrLzI4MjY3LCBjKysvMjgy NzQsIGMrKy8yODM0NywgYysrLzI4NDMyLCBjKysvMjg1NTcsIGMrKy8yODU5NCwKLQljKysvMjg2 MzcsIGMrKy8yODYzOCwgYysrLzI4NjM5LCBjKysvMjg2NDAsIGMrKy8yODY0MSwgYy8yNzcyMSwK LQljLzI4MTM2LCBmb3J0cmFuLzI3OTgxLCBmb3J0cmFuLzI4NTQ4LCBmb3J0cmFuLzI4NTkwLAot CW1pZGRsZS1lbmQvMjg2NTEsIHJ0bC1vcHRpbWl6YXRpb24vMjcyOTEsIHJ0bC1vcHRpbWl6YXRp b24vMjgyMjEsCi0JdGFyZ2V0LzI3NTY2LCB0YXJnZXQvMjc4MjcKLS0gZml4IEZvcnRyYW4gSUNF IHdpdGggbmVzdGVkIGZ1bmN0aW9uIChQYXVsIFRob21hcywgIzIwMDYxOCwKLSAgUFIgZm9ydHJh bi8yODYwMCkKLQotKiBXZWQgQXVnICAyIDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0 LmNvbT4gNC4xLjEtMTQKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTE1NjQ0OjEx NTg3NykKLSAgLSBQUnMgYysrLzI3NTcyLCBjKysvMjc2NjgsIGMrKy8yNzk2MiwgYysrLzI4MDI1 LCBjKysvMjgyNTgsIGMrKy8yODUyMywKLQlkZWJ1Zy8yNTQ2OCwgZm9ydHJhbi8yMDg5MiwgZm9y dHJhbi8yNzg3NCwgZm9ydHJhbi8yODEyOSwKLQlmb3J0cmFuLzI4NDM5LCBsaWJnZm9ydHJhbi8y ODMzNSwgbGliZ2ZvcnRyYW4vMjgzMzksCi0JbWlkZGxlLWVuZC8yODQwMiwgbWlkZGxlLWVuZC8y ODQwMywgbWlkZGxlLWVuZC8yODQ3MywKLQl0YXJnZXQvMjcyODcsIHRhcmdldC8yODI0NywgdHJl ZS1vcHRpbWl6YXRpb24vMjY3MTksCi0JdHJlZS1vcHRpbWl6YXRpb24vMjc2MzksIHRyZWUtb3B0 aW1pemF0aW9uLzI3Nzk1LAotCXRyZWUtb3B0aW1pemF0aW9uLzI4MDI5LCB0cmVlLW9wdGltaXph dGlvbi8yODIzOAotLSBCdWlsZFJlcXVpcmUgZmlyZWZveC1kZXZlbCBpbnN0ZWFkIG9mIG1vemls bGEtZGV2ZWwKLQotKiBUdWUgSnVsIDI1IDIwMDYgQWxleGFuZHJlIE9saXZhIDxhb2xpdmFAcmVk aGF0LmNvbT4gNC4xLjEtMTMKLS0gYmFja3BvcnQgZml4IGJ5IEFuZHJldyBIYWxleSBmb3IgYnVp bGQgcHJvYmxlbXMgcmVsYXRlZCB3aXRoIHRoZQotICBib290c3RyYXAgQ2xhc3NMb2FkZXIKLQot KiBNb24gSnVsIDI0IDIwMDYgQWxleGFuZHJlIE9saXZhIDxhb2xpdmFAcmVkaGF0LmNvbT4gNC4x LjEtMTIKLS0gYmFja3BvcnQgZml4IGJ5IE1hcmsgV2llbGFhcmQgZm9yIE51bGxQb2ludGVyRXhj ZXB0aW9uIGluIEdDSiB3ZWIgcGx1Z2luCi0KLSogRnJpIEp1bCAyMSAyMDA2IEpha3ViIEplbGlu ZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4xLTExCi0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJh bmNoICgtcjExNTU2NToxMTU2NDQpCi0gIC0gUFJzIHRhcmdldC8yNzM2MywgYysrLzI3NDk1LCBj KysvMjgwNDgsIGMrKy8yODIzNSwgYysrLzI4MzM3LCBjKysvMjgzMzgsCi0JYysrLzI4MzYzLCBt aWRkbGUtZW5kLzI4MjgzCi0tIHR1cm4gYmFjayBhdXRvcHJvdi9hdXRvcmVxIG9uIGdjYy1qYXZh LCBpbnN0ZWFkIGRpc2FibGUgaXQgb24KLSAgbGliZ2NqLWRldmVsCi0KLSogVGh1IEp1bCAyMCAy MDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4xLTEwCi0tIEphdmEgYmFj a3BvcnQgb2YgZnJvbSBHQ0MgdHJ1bmsgKFRvbSBUcm9tZXksIEJyeWNlIE1jS2lubGF5KQotICAt IGluY2x1ZGUgbGliZ2Nqd2VicGx1Z2luLnNvLCBnYXBwbGV0dmlld2VyLCBnamFyc2lnbmVyLCBn a2V5dG9vbAotLSBDKysgdmlzaWJpbGl0eSBjaGFuZ2VzIChKYXNvbiBNZXJyaWxsLCBQUnMgYysr LzI4NDA3LCBjKysvMjg0MDkpCi0KLSogVHVlIEp1bCAxOCAyMDA2IEpha3ViIEplbGluZWsgPGph a3ViQHJlZGhhdC5jb20+IDQuMS4xLTkKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1y MTE1MzMwOjExNTU2NSkKLSAgLSBQUnMgYysrLzI4MDE2LCBjKysvMjgwNTEsIGMrKy8yODI0OSwg YysrLzI4MjkxLCBjKysvMjgyOTQsIGMrKy8yODMwNCwKLQljKysvMjgzNDMsIGMvMjY5OTMsIGMv MjgyODYsIGZvcnRyYW4vMjA4NDQsIGZvcnRyYW4vMjA4OTMsCi0JZm9ydHJhbi8yMDkwMywgZm9y dHJhbi8yNTA5NywgZm9ydHJhbi8yNzk4MCwgZm9ydHJhbi8yODIwMSwKLQlmb3J0cmFuLzI4MzUz LCBmb3J0cmFuLzI4Mzg0LCBsaWJzdGRjKysvMjc4NzgsCi0JdHJlZS1vcHRpbWl6YXRpb24vMTk1 MDUsIHRyZWUtb3B0aW1pemF0aW9uLzI4MTYyLAotCXRyZWUtb3B0aW1pemF0aW9uLzI4MTg3Ci0t IGZpeCBkaXJlY3RvcnkgdHJhdmVyc2FsIGlzc3VlIGluIGZhc3RqYXIgKFJpY2hhcmQgR3VlbnRo ZXIsIENWRS0yMDA2LTM2MTksCi0gIFBSIGZhc3RqYXIvMjgzNTkpCi0tIGZpeCBJQ0Ugb24gY29t cGxleCBhc3NpZ25tZW50IGluIG5lc3RlZCBmbiAoUmljaGFyZCBIZW5kZXJzb24sCi0gIFBSIG1p ZGRsZS1lbmQvMjc4ODkpCi0tIGZpeCBfX2J1aWx0aW5fY29uc3RhbnRfcCBpbiBpbml0aWFsaXpl cnMgKE1hcmsgU2hpbndlbGwsICMxOTg4NDkpCi0tIGZpeCB0cmVlIHZlcmlmaWNhdGlvbiAtIElE RU5USUZJRVJfTk9ERSBjYW4gYmUgc2hhcmVkIChEaWVnbyBOb3ZpbGxvKQotLSBmaXggZHVwbGlj YXRlX2VoX3JlZ2lvbnMKLS0gaGFuZGxlID4gOTkgdHJlZSBkdW1wcyBpbiB0aGUgdGVzdHN1aXRl Ci0KLSogU2F0IEp1bCAxNSAyMDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQu MS4xLTgKLS0gZml4IGhhbmRsaW5nIG9mIEMrKyB0ZW1wbGF0ZSBzdGF0aWMgZGF0YSBtZW1iZXJz IGluIGFub255bW91cyBuYW1lc3BhY2UKLSAgKFBSIGMrKy8yODM3MCkKLS0gZml4IEZvcnRyYW4g T3Blbk1QIGhhbmRsaW5nIG9mICEkb21wIHBhcmFsbGVsIGRvIHdpdGggbGFzdHByaXZhdGUgb24g dGhlCi0gIGl0ZXJhdGlvbiB2YXJpYWJsZSAoUFIgZm9ydHJhbi8yODM5MCkKLS0gYmFja3BvcnRl ZCByZWFzc29jaWF0aW9uIHBhc3MgcmV3cml0ZSAoRGFuaWVsIEJlcmxpbiwgSmVmZiBMYXcsCi0g IFJvZ2VyIFNheWxlLCBQZXRlciBCZXJnbmVyLCBQUnMgYWRhLzI0OTk0LCB0cmVlLW9wdGltaXph dGlvbi8yNjg1NCkKLS0gQnVpbGRSZXEgc2hhcnV0aWxzIGZvciB1dWVuY29kZQotCi0qIFR1ZSBK dWwgMTEgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS03Ci0tIHVw ZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjExNTA1ODoxMTUzMzApCi0gIC0gUFJzIGMrKy8x Mzk4MywgYysrLzE3NTE5LCBjKysvMTg2ODEsIGMrKy8xODY5OCwgYysrLzI2NTc3LCBjKysvMjcw MTksCi0JYysrLzI3NDI0LCBjKysvMjc3NjgsIGMrKy8yNzgyMCwgYysrLzI4MTE0LCBmb3J0cmFu LzIzNDIwLAotCWZvcnRyYW4vMjM4NjIsIGZvcnRyYW4vMjQ3NDgsIGZvcnRyYW4vMjY4MDEsIGZv cnRyYW4vMjc5NjUsCi0JZm9ydHJhbi8yODA4MSwgZm9ydHJhbi8yODA5NCwgZm9ydHJhbi8yODE2 NywgZm9ydHJhbi8yODE3NCwKLQlmb3J0cmFuLzI4MjEzLCBmb3J0cmFuLzI4MjM3LCBtaWRkbGUt ZW5kLzI3NDI4LCB0YXJnZXQvMjgwODQsCi0JdGFyZ2V0LzI4MjA3LCB0cmVlLW9wdGltaXphdGlv bi8yODIxOAotLSB1c2UgLS1oYXNoLXN0eWxlPWdudSBieSBkZWZhdWx0Ci0tIEMrKyB2aXNpYmls aXR5IGZpeGVzIChKYXNvbiBNZXJyaWxsLCBQUnMgYysrLzE3NDcwLCBjKysvMTkxMzQsCi0gIGMr Ky8yMTU4MSwgYysrLzIxNjc1LCBjKysvMjU5MTUsIGMrKy8yNjYxMiwgYysrLzI2OTA1LCBjKysv MjY5ODQsCi0gIGMrKy8yNzAwMCwgYysrLzI4MjE1LCBjKysvMjgyNzkpCi0tIGZpeCBwcGMgaW5z dmRpX2ludGVybmFsMi8zIChEYXZpZCBFZGVsc29obiwgQWxhbiBNb2RyYSwgIzE5Nzc1NSwKLSAg UFIgdGFyZ2V0LzI4MTcwKQotLSBhdm9pZCBURm1vZGUgUFJFX0lOQy9QUkVfREVDIG9uIHBwYyAo RGF2aWQgRWRlbHNvaG4sIFBSIHRhcmdldC8yODE1MCkKLQotKiBUaHUgSnVuIDI5IDIwMDYgSmFr dWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjEtNgotLSB1cGRhdGUgZnJvbSBnY2Mt NF8xLWJyYW5jaCAoLXIxMTQ3NjY6MTE1MDU4KQotICAtIFBScyBjKysvMjc4MjEsIGMrKy8yODEw OSwgYysrLzI4MTEwLCBjKysvMjgxMTIsIGZvcnRyYW4vMTYyMDYsCi0JZm9ydHJhbi8xODc2OSwg Zm9ydHJhbi8xOTMxMCwgZm9ydHJhbi8xOTkwNCwgZm9ydHJhbi8yMDg2NywKLQlmb3J0cmFuLzIw ODc0LCBmb3J0cmFuLzIwODc2LCBmb3J0cmFuLzIyMDM4LCBmb3J0cmFuLzI1MDQ5LAotCWZvcnRy YW4vMjUwNTAsIGZvcnRyYW4vMjUwNTYsIGZvcnRyYW4vMjUwNzMsIGZvcnRyYW4vMjc1NTQsCi0J Zm9ydHJhbi8yNzcxNSwgZm9ydHJhbi8yNzc4NCwgZm9ydHJhbi8yNzg5NSwgZm9ydHJhbi8yNzk1 OCwKLQlmb3J0cmFuLzI4MTE4LCBmb3J0cmFuLzI4MTE5LCBsaWJmb3J0cmFuLzI3Nzg0LCBsaWJm b3J0cmFuLzI3ODk1LAotCWxpYmdjai8yODE3OCwgbWlkZGxlLWVuZC8yODA0NSwgbWlkZGxlLWVu ZC8yODE1MSwgdGFyZ2V0LzI3MDgyLAotCXRhcmdldC8yNzg2MSwgdHJlZS1vcHRpbWl6YXRpb24v Mjc3ODEKLS0gZml4IGEgcmVsb2FkIHByb2JsZW0gdGhhdCBsZWFkIHNvbWV0aW1lcyB0byB3cml0 ZXMgdG8gcmVhZC1vbmx5IG9iamVjdHMKLSAgKEJlcm5kIFNjaG1pZHQsICMxOTY3MzYsIFBSIG1p ZGRsZS1lbmQvMjY5OTEsIFBSIHJ0bC1vcHRpbWl6YXRpb24vMjU2MzYpCi0tIHBwYyAtbWNwdT1w b3dlcjYgaW5pdGlhbCBzdXBwb3J0IChQZXRlIFN0ZWlubWV0eiwgIzE5NTkyNCkKLQotKiBUdWUg SnVuIDIwIDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjEtNQotLSBm aXggQysrICNwcmFnbWEgb21wIGF0b21pYyAoTWFyayBNaXRjaGVsbCkKLQotKiBNb24gSnVuIDE5 IDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjEtNAotLSB1cGRhdGUg ZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMTQ1NTU6MTE0NzY2KQotICAtIFBScyBib290c3RyYXAv MjI1NDEsIGMrKy8yMTIxMCwgYysrLzI2NTU5LCBjKysvMjcyMjcsIGMrKy8yNzY0OCwKLQljKysv Mjc2NjUsIGMrKy8yNzY2NiwgYysrLzI3Njg5LCBjKysvMjc4ODQsIGMrKy8yNzkzMywgYysrLzI3 OTUxLAotCWZvcnRyYW4vMjc3ODYsIGphdmEvMjgwMjQsIG1pZGRsZS1lbmQvMjc3MzMsIG1pZGRs ZS1lbmQvMjc4MDIsCi0JdGFyZ2V0LzI3ODU4LCB0cmVlLW9wdGltaXphdGlvbi8yNzgzMAotLSBt ZXJnZSBnb21wIGNoYW5nZXMgZnJvbSB0aGUgdHJ1bmsgKC1yMTE0NjQyOjExNDY0MykKLSAgLSBQ UiBsaWJnb21wLzI4MDA4Ci0tIGZpeCAtZm1lcmdlLWFsbC1jb25zdGFudHMKLS0gZml4ICNwcmFn bWEgb21wIGNyaXRpY2FsIGhhbmRsaW5nIGlmIG5vdCAtLWVuYWJsZS1saW51eC1mdXRleAotCi0q IFR1ZSBKdW4gMTMgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS0z Ci0tIGFkZCBCdWlsZFJlcXVpcmVzIGZvciBlbGZ1dGlscy1kZXZlbCBvbiBpYTY0Ci0tIGZpeCBh IHJlbG9hZCBidWcgdmlzaWJsZSBvbiBzMzkweCAoQW5kcmVhcyBLcmViYmVsLCAjMTkzOTEyLAot ICBQUiBtaWRkbGUtZW5kLzI3OTU5KQotCi0qIE1vbiBKdW4gMTIgMjAwNiBKYWt1YiBKZWxpbmVr IDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMS0yCi0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNo ICgtcjExNDEwNzoxMTQ1NTUpCi0gIC0gUFJzIGFkYS8yNzc2OSwgYysrLzIwMTczLCBjKysvMjYw NjgsIGMrKy8yNjQzMywgYysrLzI2NDk2LCBjKysvMjcxNzcsCi0JYysrLzI3Mzg1LCBjKysvMjc0 NDcsIGMrKy8yNzQ1MSwgYysrLzI3NjAxLCBjKysvMjc3MTMsIGMrKy8yNzcxNiwKLQljKysvMjc3 MjIsIGMrKy8yNzgwMSwgYysrLzI3ODA2LCBjKysvMjc4MDcsIGMrKy8yNzgxOSwgYy8yNTE2MSwK LQljLzI2ODE4LCBjLzI3MDIwLCBjLzI3NzE4LCBmb3J0cmFuLzE0MDY3LCBmb3J0cmFuLzE2OTQz LAotCWZvcnRyYW4vMTgwMDMsIGZvcnRyYW4vMTkwMTUsIGZvcnRyYW4vMTk3NzcsIGZvcnRyYW4v MjA4MzksCi0JZm9ydHJhbi8yMDg3NywgZm9ydHJhbi8yMzA5MSwgZm9ydHJhbi8yMzE1MSwgZm9y dHJhbi8yNDE2OCwKLQlmb3J0cmFuLzI0NTU4LCBmb3J0cmFuLzI1MDQ3LCBmb3J0cmFuLzI1MDU4 LCBmb3J0cmFuLzI1MDgyLAotCWZvcnRyYW4vMjUwOTAsIGZvcnRyYW4vMjUwOTgsIGZvcnRyYW4v MjUxNDcsIGZvcnRyYW4vMjU3NDYsCi0JZm9ydHJhbi8yNjU1MSwgZm9ydHJhbi8yNzE1NSwgZm9y dHJhbi8yNzMyMCwgZm9ydHJhbi8yNzQxMSwKLQlmb3J0cmFuLzI3NDQ5LCBmb3J0cmFuLzI3NDcw LCBmb3J0cmFuLzI3NTI0LCBmb3J0cmFuLzI3NTUyLAotCWZvcnRyYW4vMjc1ODQsIGZvcnRyYW4v Mjc2MTMsIGZvcnRyYW4vMjc2NTUsIGZvcnRyYW4vMjc2NjIsCi0JZm9ydHJhbi8yNzcwOSwgZm9y dHJhbi8yNzg5NywgbGliZ2NqLzI2NDgzLCBsaWJnZm9ydHJhbi8yNDQ1OSwKLQlsaWJnZm9ydHJh bi8yNzc1NywgbWlkZGxlLWVuZC8yNzc0MywgbWlkZGxlLWVuZC8yNzc5MywKLQl0YXJnZXQvMjU3 NTgsIHRhcmdldC8yNjIyMywgdGFyZ2V0LzI3NzkwLCB0YXJnZXQvMjc4NDIsCi0JdGVzdHN1aXRl LzI3NzA1LCB0cmVlLW9wdGltaXphdGlvbi8yNjI0MiwgdHJlZS1vcHRpbWl6YXRpb24vMjY2MjIK LS0gbWVyZ2UgZ29tcCBjaGFuZ2VzIGZyb20gdGhlIHRydW5rICgtcjExNDUxODoxMTQ1MjAgYW5k IC1yMTE0NTI0OjExNDUyNSkKLSAgLSBQUnMgcHJlcHJvY2Vzc29yLzI3NzQ2LCBjLzI3NzQ3LCBj KysvMjc3NDgsIGZvcnRyYW4vMjc5MTYKLS0gZG9uJ3QgZ2VuZXJhdGUgZGVjbHMgd2l0aCB0aGUg c2FtZSBERUNMX1VJRCBpbiBDKysgRkUgKFBSIG1pZGRsZS1lbmQvMjc3OTMpCi0KLSogVGh1IE1h eSAyNSAyMDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4xLTEKLS0gdXBk YXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTEzODQ4OjExNDEwNykKLSAgLSBHQ0MgNC4xLjEg cmVsZWFzZQotICAtIFBSIGZvcnRyYW4vMjc1NTMKLS0gZml4IGkzODYveDg2XzY0IC1PMCAtZnBp YyBsaW5rIGZhaWx1cmUgKCMxOTI4MTYsIFBSIHRhcmdldC8yNzc1OCkKLS0gZml4IGdjamggb24g NjQtYml0IGhvc3RzICgjMTkyNzAwKQotLSAtZnZhci10cmFja2luZyBmaXhlcyBuZWVkZWQgZm9y IFN5c3RlbVRhcCAoQWxleGFuZHJlIE9saXZhLCBCWiMyNDM4KQotCi0qIFdlZCBNYXkgMTcgMjAw NiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMC0xOQotLSB1cGRhdGUgZnJv bSBnY2MtNF8xLWJyYW5jaCAoLXIxMTM3ODU6MTEzODQ4KQotICAtIFBScyBjKysvMjY3NTcsIGMr Ky8yNzMzOSwgYysrLzI3NDkxLCBkcml2ZXIvMjY4ODUsIHJ0bC1vcHRpbWl6YXRpb24vMTQyNjEs Ci0JdGFyZ2V0LzI2NjAwLCB0cmVlLW9wdGltaXphdGlvbi8yNzYwMwotLSBtZXJnZSBnb21wIGNo YW5nZXMgZnJvbSB0aGUgdHJ1bmsgKC1yMTEzNTEzOjExMzUxNCwgLXIxMTM4MjE6MTEzODIzIGFu ZAotICAtcjExMzg0NToxMTM4NDYpCi0gIC0gUFJzIG1pZGRsZS1lbmQvMjc0MTUsIG1pZGRsZS1l bmQvMjc1NzMKLS0gb3B0aW1pemUgaGFuZGxpbmcgb2YgbGFyZ2UgQ09OU1RSVUNUT1JzIChCZXJu ZCBTY2htaWR0LAotICBQUiBtaWRkbGUtZW5kLzI3NjIwKQotCi0qIE1vbiBNYXkgMTUgMjAwNiBK YWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMC0xOAotLSB1cGRhdGUgZnJvbSBn Y2MtNF8xLWJyYW5jaCAoLXIxMTM3MjI6MTEzNzg1KQotICAtIFBScyBjKysvMjczMTUsIGMrKy8y NzU4MSwgYysrLzI3NTgyLCBydGwtb3B0aW1pemF0aW9uLzIyNTYzCi0tIG1lcmdlIGdvbXAgY2hh bmdlcyBmcm9tIHRoZSB0cnVuayAoLXIxMTM3ODY6MTEzNzkwKQotCi0qIFN1biBNYXkgMTQgMjAw NiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMC0xNwotLSBtYWtlIC1tdHVu ZT16OS0xMDkgdGhlIGRlZmF1bHQgb24gczM5MHsseH0gKCMxODQ2MzApCi0KLSogU2F0IE1heSAx MyAyMDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTE2Ci0tIHVwZGF0 ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjExMzYzNzoxMTM3MjIpCi0gIC0gUFJzIGJvb3RzdHJh cC8yNjg3MiwgYysrLzI3NTQ3LCBmb3J0cmFuLzIwNDYwLCBmb3J0cmFuLzI0NTQ5LAotCW1pZGRs ZS1lbmQvMjczODQsIG1pZGRsZS1lbmQvMjc0ODgsIHRhcmdldC8yNjU0NSwgdGFyZ2V0LzI3MTU4 Ci0tIGZpeCBsaWJnY2oucGMgbG9jYXRpb24gYW5kIGNvbnRlbnQgb24geDg2XzY0LCBwcGM2NCBh bmQgczM5MHggKCMxODUyMzApCi0tIG1ha2UgX19kc29faGFuZGxlIGNvbnN0LCBzbyB0aGF0IGl0 IGlzIGFkZGVkIGludG8gLmRhdGEucmVsLnJvIHNlY3Rpb24KLSAgaW4gc2hhcmVkIGxpYnJhcmll cwotLSBmaXggYSB0eXBvIGluIF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSBjb21wdXRhdGlvbiAoUmlj aGFyZCBHdWVudGhlciwKLSAgUFIgdHJlZS1vcHRpbWl6YXRpb24vMjc1MzIpCi0tIGZpeCBJQ0Ug b24gLU8wIC1nIGlmIHN0YXRpYyBsb2NhbCB2YXJpYWJsZXMgYXJlIGluIHVucmVhY2hhYmxlIGNv ZGUgYmxvY2tzCi0gIChKYW4gSHViaWNrYSwgUFIgZGVidWcvMjY4ODEpCi0tIGZpeCBJQ0VzIHdp dGggY29uZmxpY3RzIGFjcm9zcyBhYm5vcm1hbCBlZGdlcyAoWmRlbmVrIER2b3JhaywKLSAgUFJz IHRyZWUtb3B0aW1pemF0aW9uLzI3MjgzLCB0cmVlLW9wdGltaXphdGlvbi8yNzU0OCwKLSAgdHJl ZS1vcHRpbWl6YXRpb24vMjc1NDkpCi0tIHdhcm4gYWJvdXQgT3Blbk1QIHNlY3Rpb24gMi45IHJl Z2lvbiBuZXN0aW5nIHZpb2xhdGlvbnMKLS0gZml4IE9wZW5NUCBmb3J0cmFuIGFycmF5IFJFRFVD VElPTiB3aXRoIC1mYm91bmRzLWNoZWNrIChQUiBmb3J0cmFuLzI3NDQ2KQotLSBmaXggT3Blbk1Q IHt7RklSU1QsTEFTVH1QUklWQVRFLFJFRFVDVElPTn0gaW4gb3JwaGFuZWQgY29uc3RydWN0IG9u Ci0gIEZvcnRyYW4gZHVtbXkgYXJndW1lbnQgKFBSIG1pZGRsZS1lbmQvMjc0MTYpCi0tIGZpeCBJ Q0Ugb24gI3ByYWdtYSBvbXAgZm9yIHVuc2lnbmVkIGl0ZXJhdGlvbiB2YXJpYWJsZSAoUFIgYy8y NzQ5OSkKLQotKiBUdWUgTWF5ICA5IDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNv bT4gNC4xLjAtMTUKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTEzNjIzOjExMzYz NykKLSAgLSBQUiBmb3J0cmFuLzI3Mzc4Ci0tIHVwZGF0ZSBmcm9tIHRydW5rICgtcjEwOTUwMDox MDk1MDEsIC1yMTA5NjcwOjEwOTY3MSwgLXIxMTEzNDE6MTExMzQyLAotCQkgICAgIC1yMTExNzA0 OjExMTcwNSwgLXIxMTI1NDY6MTEyNTQ3LCAtcjExMzExMToxMTMxMTIsCi0JCSAgICAgLXIxMTMz Mzk6MTEzMzQxLCAtcjExMzUxMToxMTM1MTMpCi0tIGZpeCBsb29wIHBlZWxpbmcgKFpkZW5layBE dm9yYWssICMxOTAwMzksIFBSIHJ0bC1vcHRpbWl6YXRpb24vMjczMzUpCi0KLSogTW9uIE1heSAg OCAyMDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTE0Ci0tIHVwZGF0 ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjExMzQ4OToxMTM2MjMpCi0gIC0gUFJzIGMrKy8yNzQy MiwgYysrLzI3NDI3LCBmb3J0cmFuLzI0ODEzLCBmb3J0cmFuLzI1MDk5LCBmb3J0cmFuLzI1Njgx LAotCWZvcnRyYW4vMjcyNjksIGZvcnRyYW4vMjczMjQsIGxpYmZvcnRyYW4vMjY5ODUsIG9iamMv MjcyNDAsCi0JdGFyZ2V0LzI2NDgxLCB0YXJnZXQvMjY3NjUsIHRyZWUtb3B0aW1pemF0aW9uLzI1 OTg1LAotCXRyZWUtb3B0aW1pemF0aW9uLzI3MTUxCi0tIGZpeCB6ZXJvIHNpemUgZmllbGQgaGFu ZGxpbmcgaW4gc3RydWN0YWxpYXMgKFJpY2hhcmQgR3VlbnRoZXIsCi0gIFBSIHRyZWUtb3B0aW1p emF0aW9uLzI3NDA5KQotLSBmaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMjcxMzYgKFJpY2hhcmQg R3VlbnRoZXIpCi0tIGZpeCBjbGFzc2lmaWNhdGlvbiBvZiBpbnZhbGlkIHN0cnVjdCB0eXBlcyBv biB4ODZfNjQgKFZvbGtlciBSZWljaGVsdCwKLSAgUFIgdGFyZ2V0LzI3NDIxKQotCi0qIFdlZCBN YXkgIDMgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMC0xMwotLSB1 cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMTM0MTY6MTEzNDg5KQotICAtIFBScyBjLzI1 MzA5LCB0YXJnZXQvMjczNzQsIHRhcmdldC8yNzM4NywgdHJlZS1vcHRpbWl6YXRpb24vMjczNjQK LS0gbWVyZ2UgZ29tcCBjaGFuZ2VzIGZyb20gdHJ1bmsgKC1yMTEzMjY3OjExMzI3MSwgLXIxMTM0 MTE6MTEzNDEyLAotICAtcjExMzQ1MjoxMTM0NTYsIC1yMTEzNDgyOjExMzQ4MywgLXIxMTM0OTM6 MTEzNDk0KQotICAtIFBSIGZvcnRyYW4vMjczOTUKLS0gYWRkaXRpb25hbCBnb21wIGZpeGVzIChQ UnMgYysrLzI3MzU5LCBtaWRkbGUtZW5kLzI3Mzg4KQotLSBwYWNrYWdlIFNZU0NBTExTLmMuWCBm b3IgcHJvdG9pemUgKCMxOTAwNDcpCi0tIGZpeCBnY2ogLWZwcm9maWxlLWFyY3MgLWZ0ZXN0LWNv dmVyYWdlIChBbGV4YW5kcmUgT2xpdmEsICMxNzc0NTApCi0tIHJlZW5hYmxlIHByb2ZpbGVkYm9v dHN0cmFwCi0tIGluIDY0LWJpdCBidWlsZHMgcmVtb3ZlIDMyLWJpdCAvdXNyL2xpYi9saWIqIGxp YnJhcmllcyBmcm9tIHRoZQotICBidWlsZHJvb3RzIChhbmQgc2ltaWxhcmx5IG9uIDMyLWJpdCBi dWlsZHMgcmVtb3ZlIDY0LWJpdCAvdXNyL2xpYjY0L2xpYiopCi0gIGJlZm9yZSBBdXRvUmVxIGdl bmVyYXRpb24gKCMxOTA1NDEpCi0KLSogTW9uIE1heSAgMSAyMDA2IEpha3ViIEplbGluZWsgPGph a3ViQHJlZGhhdC5jb20+IDQuMS4wLTEyCi0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgt cjExMzI0MjoxMTM0MTYpCi0gIC0gUFJzIGMrKy8yNjUzNCwgYysrLzI2OTEyLCBjKysvMjcwOTQs IGMrKy8yNzI3OCwgYysrLzI3Mjc5LCBmb3J0cmFuLzI2MDE3LAotCWxpYmdmb3J0cmFuLzIwMjU3 LCBsaWJnZm9ydHJhbi8yNzMwNCwgbGliZ2ZvcnRyYW4vMjczNjAsCi0JbGlic3RkYysrLzI2NTEz LCBtaWRkbGUtZW5kLzI2NTY1LCBtaWRkbGUtZW5kLzI2ODY5LAotCXJ0bC1vcHRpbWl6YXRpb24v MjY2ODUsIHRhcmdldC8yNjgyNgotLSBtZXJnZSBnb21wIGNoYW5nZXMgZnJvbSB0cnVuayAoLXIx MTMyNTU6MTEzMjU2LCAtcjExMzQyMDoxMTM0MjEpCi0gIC0gUFJzIGxpYmdvbXAvMjU4NjUsIGMv MjczNTgKLS0gYXNzb3J0ZWQgZ29tcCBmaXhlcyAoUFJzIG1pZGRsZS1lbmQvMjczMjUsIG1pZGRs ZS1lbmQvMjczMTAsCi0gIG1pZGRsZS1lbmQvMjczMjgsIG1pZGRsZS1lbmQvMjczMzcsIGMrKy8y Njk0MykKLS0gZml4IGJ1aWx0aW4gbWVtc2V0IChBbGFuIE1vZHJhLCBQUiBtaWRkbGUtZW5kLzI3 MjYwLCBQUiBtaWRkbGUtZW5kLzI3MDk1KQotCi0qIFR1ZSBBcHIgMjUgMjAwNiBKYWt1YiBKZWxp bmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMC0xMQotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJy YW5jaCAoLXIxMTMxNDk6MTEzMjQyKQotICAtIFBScyBjLzI1ODc1LCBjLzI2Nzc0LCBmb3J0cmFu LzE4ODAzLCBmb3J0cmFuLzI1NTk3LCBmb3J0cmFuLzI1NjY5LAotCWZvcnRyYW4vMjY3ODcsIGZv cnRyYW4vMjY4MjIsIGZvcnRyYW4vMjY4MzQsIGZvcnRyYW4vMjcwODksCi0JZm9ydHJhbi8yNzEx MywgZm9ydHJhbi8yNzEyMiwgZm9ydHJhbi8yNzEyNCwgdGFyZ2V0LzIxMjgzLAotCXRhcmdldC8y Njk2MQotLSBmaXggbnVtYmVyIG9mIGl0ZXJhdGlvbnMgY29tcHV0YXRpb24gKFpkZW5layBEdm9y YWssICMxODkzNzYsCi0gIFBSIHRyZWUtb3B0aW1pemF0aW9uLzI3Mjg1KQotLSBmaXggaGFuZGxp bmcgb2Ygdm9sYXRpbGUgaW4gdGhlIGlubGluZXIgKEFuZHJldyBQaW5za2ksIFJpY2hhcmQgR3Vl bnRoZXIsCi0gIFBSIHRyZWUtb3B0aW1pemF0aW9uLzI3MjM2KQotLSBzdHJpcCB1c2VsZXNzIHR5 cGUgY29udmVyc2lvbnMgaW4gdGhlIGlubGluZXIgKEFuZHJldyBQaW5za2ksCi0gIFJpY2hhcmQg R3VlbnRoZXIsIFBSIHRyZWUtb3B0aW1pemF0aW9uLzI3MjE4KQotCi0qIEZyaSBBcHIgMjEgMjAw NiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMC0xMAotLSB1cGRhdGUgZnJv bSBnY2MtNF8xLWJyYW5jaCAoLXIxMTMxMTA6MTEzMTQ5KQotICAtIFBScyBsaWJnY2ovMjE5NDEs IGxpYmdjai8yNzE3MCwgbGliZ2NqLzI3MjMxLCBsaWJnZm9ydHJhbi8yNzEzOCwKLQlsaWJzdGRj KysvMjY0MjQsIG11ZGZsYXAvMjY3ODkKLS0gaW1wcm92ZSBkaXIvLi4vLXN0cmlwcGluZyBjb2Rl IHRvIHN1cHBvcnQgL3Vzci9saWI2NCBhbmQgL3Vzci9saWIgaW4KLSAgc2VwYXJhdGUgQUZTIG1v dW50cG9pbnRzIChBbGV4YW5kcmUgT2xpdmEsICMxMzcyMDApCi0tIGZpeCBmb3J0cmFuIHJlYWwo MTYpIHRyYW5zcG9zZSBhbmQgcmVzaGFwZSBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcwotICAoUFIg Zm9ydHJhbi8yNjc2OSkKLS0gZml4IGk/ODYveDg2XzY0IHZlY3RvciBleHRyYWN0aW9uIChBbGV4 YW5kcmUgT2xpdmEsICMxODc0NTApCi0tIGZpeCB0ZXN0Y2FzZSBmb3IgcHBjMzIgdmFfYXJnIGJ1 ZwotLSBmaXggdGVzdHN1aXRlIGxvZyB1dWVuY29kaW5nCi0tIGZpeCBhY2F0cyB0aW1lb3V0IGZy YW1ld29yawotCi0qIFRodSBBcHIgMjAgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQu Y29tPiA0LjEuMC05Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjExMjk1MToxMTMx MTApCi0gIC0gUFJzIGMrKy8xMDM4NSwgYysrLzI2MDM2LCBjKysvMjYzNjUsIGMrKy8yNjU1OCwg Y2xhc3NwYXRoLzI3MTYzLAotCWZvcnRyYW4vMjY3NjksIGxpYmdjai8yNzE3MSwgbGliZ2ZvcnRy YW4vMjY3NjYsIGxpYnN0ZGMrKy8yNzE2MiwKLQltaWRkbGUtZW5kLzI3MDk1LCBtaWRkbGUtZW5k LzI3MTM0LCB0YXJnZXQvMjcxODIsCi0JdHJlZS1vcHRpbWl6YXRpb24vMjY2NDMsIHRyZWUtb3B0 aW1pemF0aW9uLzI2ODIxLAotCXRyZWUtb3B0aW1pemF0aW9uLzI2ODU0LCB0cmVlLW9wdGltaXph dGlvbi8yNzA4NwotLSBmaXggcHBjMzIgdmFfYXJnIGJ1ZyAoQWxhbiBNb2RyYSkKLS0gYXNzb3J0 ZWQgZ29tcCBmaXhlcyAoUFJzIGMrKy8yNTg3NCwgbWlkZGxlLWVuZC8yNTk4OSwgYy8yNTk5Niwg Yy8yNjE3MSwKLSAgbWlkZGxlLWVuZC8yNjkxMykKLS0gZml4IHByZXR0eSBwcmludGluZyBDIGFy cmF5IHR5cGVzICgjMTg4OTQ0KQotLSBmaXggSUNFIG9uIHVucHJvdG90eXBlZCBhbGxvY2EgKFBS IHRyZWUtb3B0aW1pemF0aW9uLzI2ODY1KQotLSBmaXggdHJ1bmNhdGlvbiBvcHRpbWl6YXRpb24g b3ZlcmZsb3cgaGFuZGxpbmcgKFBSIG1pZGRsZS1lbmQvMjY3MjkpCi0tIHV1ZW5jb2RlIGRlamFn bnUgdGVzdHN1aXRlIGxvZyBmaWxlcyBpbiBycG1idWlsZCBvdXRwdXQKLQotKiBGcmkgQXByIDE0 IDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtOAotLSB1cGRhdGUg ZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMTI4MjU6MTEyOTUxKQotICAtIFBScyBjKysvMjYxMjIs IGMrKy8yNjI5NSwgZm9ydHJhbi8yMzYzNCwgZm9ydHJhbi8yNTYxOSwgZm9ydHJhbi8yNjI1NywK LQlsaWJnY2ovMjM4MjksIGxpYmdjai8yNjUyMiwgbGliZ2ZvcnRyYW4vMjY4OTAsIHRhcmdldC8y NzAwNgotLSBtZXJnZSBnb21wIGNoYW5nZXMgZnJvbSB0cnVuayAoLXIxMTI5MzQ6MTEyOTM1KQot ICAtIFBSIGxpYmdvbXAvMjY2NTEKLS0gZml4IElDRSBpbiBnb21wIGhhbmRsaW5nIG9mIEVIIHJl Z2lvbnMgKFBSIG1pZGRsZS1lbmQvMjY4MjMpCi0KLSogTW9uIEFwciAxMCAyMDA2IEpha3ViIEpl bGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTcKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1i cmFuY2ggKC1yMTEyNzI3OjExMjgyNSkKLSAgLSBQUnMgZm9ydHJhbi8xOTEwMSwgZm9ydHJhbi8y NTAzMSwgZm9ydHJhbi8yNjc3OSwgZm9ydHJhbi8yNjg5MSwKLQlmb3J0cmFuLzI2OTc2LCB0YXJn ZXQvMjY1MDgsIHRyZWUtb3B0aW1pemF0aW9uLzI2OTE5Ci0tIGZpeCBsaWJnZm9ydHJhbiBwcmlu dGluZyBvZiBSRUFMKjE2IGZvciBJRUVFIHF1YWQgYW5kIElCTSBleHRlbmRlZCBmb3JtYXRzCi0g IChQUiBsaWJnZm9ydHJhbi8yNDY4NSkKLS0gZml4IEZvcnRyYW4gLWZib3VuZHMtY2hlY2sgKFJv Z2VyIFNheWxlLCAjMTg4NDA5LCBQUiBtaWRkbGUtZW5kLzIyMzc1KQotLSBmaXggSmF2YSBTdGFj a1RyYWNlRWxlbWVudC50b1N0cmluZygpIChNYXJrIFdpZWxhYXJkLCAjMTgzMjEyLAotICBQUiBj bGFzc3BhdGgvMjcwODEpCi0tIGZpeCAtZm9wZW5tcCAtc3RhdGljCi0KLSogVGh1IEFwciAgNiAy MDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTYKLS0gdXBkYXRlIGZy b20gZ2NjLTRfMS1icmFuY2ggKC1yMTEyNzA2OjExMjcyNykKLSAgLSBQUnMgY2xhc3NwYXRoLzI0 NzUyLCBjbGFzc3BhdGgvMjcwMjgsIGxpYmdjai8yNjYyNSwgbGliZ2NqLzI3MDI0LAotCXRyZWUt b3B0aW1pemF0aW9uLzI2OTk2Ci0tIHJlZW5hYmxlIFBSIGMrKy8xOTIzOCwgYysrLzIxNzY0IGZp eGVzLCBvbmx5IFBSIGMrKy8yMTU4MSBpcyBub3QKLSAgYXBwbGllZAotLSBiZXR0ZXIgZml4IGZv ciBKYXZhIEdDIHZzLiBwdGhyZWFkX2NyZWF0ZSAoQnJ5Y2UgTWNLaW5sYXksICMxODIyNjMsCi0g IFBSIGxpYmdjai8xMzIxMikKLS0gZml4IG9iamNfcHVzaF9wYXJtICgjMTg1Mzk4KQotLSBmaXgg SUNFIHdpdGggLWZlbGltaW5hdGUtZHdhcmYyLWR1cHMgYW5kIHVzaW5nIG5hbWVzcGFjZSAoIzE4 Nzc4NywKLSAgUFIgZGVidWcvMjcwNTcpCi0KLSogV2VkIEFwciAgNSAyMDA2IEpha3ViIEplbGlu ZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTUKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFu Y2ggKC1yMTEyNDMxOjExMjcwNikKLSAgLSBQUnMgYm9vdHN0cmFwLzI2OTM2LCBib290c3RyYXAv MjcwMjMsIGNsYXNzcGF0aC8yNTkyNCwgZm9ydHJhbi8xOTMwMywKLQlmb3J0cmFuLzI1MzU4LCBm b3J0cmFuLzI2ODE2LCBqYXZhLzI1NDE0LCBqYXZhLzI2MDQyLCBqYXZhLzI2ODU4LAotCWxpYmZv cnRyYW4vMjY3MzUsIGxpYmdjai8yNjk5MCwgbGlic3RkYysrLzI2Nzc3LCB0ZXN0c3VpdGUvMjU3 NDEsCi0JdHJlZS1vcHRpbWl6YXRpb24vMTg1MjcsIHRyZWUtb3B0aW1pemF0aW9uLzI2NzYzLAot CXRyZWUtb3B0aW1pemF0aW9uLzI2ODMwCi0tIG1lcmdlIGdvbXAgY2hhbmdlcyBmcm9tIHRydW5r ICgtcjExMjYwMjoxMTI2MDMgYW5kIC1yMTEyNjE4OjExMjYxOSkKLS0gdGVtcG9yYXJpbHkgcmV2 ZXJ0IFBSIGMrKy8yMTc2NCwgYysrLzE5MjM4LCBjKysvMjE1ODEgZml4ZXMgKCMxODczOTkpCi0K LSogVHVlIE1hciAyOCAyMDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4w LTQKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTExNjk3OjExMjQzMSkKLSAgLSBQ UnMgYWRhLzI1ODg1LCBjLzI2MDA0LCBmb3J0cmFuLzE3Mjk4LCBmb3J0cmFuLzIwOTM1LCBmb3J0 cmFuLzIwOTM4LAotCWZvcnRyYW4vMjMwOTIsIGZvcnRyYW4vMjQ1MTksIGZvcnRyYW4vMjQ1NTcs IGZvcnRyYW4vMjUwNDUsCi0JZm9ydHJhbi8yNTA1NCwgZm9ydHJhbi8yNTA3NSwgZm9ydHJhbi8y NTA4OSwgZm9ydHJhbi8yNTM3OCwKLQlmb3J0cmFuLzI1Mzk1LCBmb3J0cmFuLzI2MDQxLCBmb3J0 cmFuLzI2MDU0LCBmb3J0cmFuLzI2MDY0LAotCWZvcnRyYW4vMjYxMDcsIGZvcnRyYW4vMjYyNzcs IGZvcnRyYW4vMjYzOTMsIGZvcnRyYW4vMjY3MTYsCi0JZm9ydHJhbi8yNjc0MSwgbGliZm9ydHJh bi8yMTMwMywgbGliZm9ydHJhbi8yNDkwMywgbGliZ2NqLzI0NDYxLAotCWxpYmdjai8yNTcxMywg bGliZ2NqLzI2MTAzLCBsaWJnY2ovMjY2ODgsIGxpYmdjai8yNjcwNiwKLQlsaWJnZm9ydHJhbi8y NjQ5OSwgbGliZ2ZvcnRyYW4vMjY1MDksIGxpYmdmb3J0cmFuLzI2NTU0LAotCWxpYmdmb3J0cmFu LzI2NjYxLCBsaWJnZm9ydHJhbi8yNjg4MCwgbGlic3RkYysrLzI2MTMyLAotCW1pZGRsZS1lbmQv MTg4NTksIG1pZGRsZS1lbmQvMTk1NDMsIG1pZGRsZS1lbmQvMjY1NTcsCi0JbWlkZGxlLWVuZC8y NjYzMCwgb3RoZXIvMjY0ODksIHRhcmdldC8yNTkxNywgdGFyZ2V0LzI2MzQ3LAotCXRhcmdldC8y NjQ1OSwgdGFyZ2V0LzI2NTMyLCB0YXJnZXQvMjY2MDcsIHRyZWUtb3B0aW1pemF0aW9uLzI2NTI0 LAotCXRyZWUtb3B0aW1pemF0aW9uLzI2NTg3LCB0cmVlLW9wdGltaXphdGlvbi8yNjY3MgotICAt IGZpeCB2aXNpYmlsaXR5IGFuZCBidWlsdGlucyBpbnRlcmFjdGlvbiAoSmFzb24gTWVycmlsbCwK LSAgICBQUiBtaWRkbGUtZW5kLzIwMjk3LCAjMTc1NDQyKQotLSBtZXJnZSBnb21wIGNoYW5nZXMg ZnJvbSB0cnVuayAoLXIxMTIwMjI6MTEyMDIzLCAtcjExMjI1MDoxMTIyNTEsCi0gIC1yMTEyMjUy OjExMjI1MywgLXIxMTIzNTA6MTEyMzUxIGFuZCAtcjExMjI4MjoxMTIyODMpCi0gIC0gUFJzIGMr Ky8yNjY5MSwgbWlkZGxlLWVuZC8yNjA4NCwgbWlkZGxlLWVuZC8yNjYxMSwgYysrLzI2NjkwLAot CW1pZGRsZS1lbmQvMjU5ODkKLS0gc3VwcG9ydCB2aXNpYmlsaXR5IGF0dHJpYnV0ZSBvbiBuYW1l c3BhY2VzIChKYXNvbiBNZXJyaWxsLCBQUiBjKysvMjE3NjQsCi0gIFBSIGMrKy8xOTIzOCkKLS0g dXNlIGhpZGRlbiB2aXNpYmlsaXR5IGZvciBhbm9ueW1vdXMgbmFtZXNwYWNlcyBieSBkZWZhdWx0 IChKYXNvbiBNZXJyaWxsLAotICBQUiBjKysvMjE1ODEpCi0KLSogVGh1IE1hciAgOSAyMDA2IEFs ZXhhbmRyZSBPbGl2YSA8YW9saXZhQHJlZGhhdC5jb20+IDQuMS4wLTMKLS0gbWFrZSBwcGMzMiBU TFMgUElDIGNvZGUgc2VxdWVuY2VzIGNvbXBhdGlibGUgd2l0aCBzZWN1cmUgcGx0ICgjMTg0NDQ2 KQotICAoUmljaGFyZCBIZW5kZXJzb24gYW5kIG15c2VsZikKLQotKiBTYXQgTWFyICA0IDIwMDYg SmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtMgotLSB1cGRhdGUgZnJvbSBn Y2MtNF8xLWJyYW5jaCAoLXIxMTE1NzA6MTExNjk3KQotICAtIFBScyBjKysvMjYyOTEsIGxpYmdm b3J0cmFuLzI2MTM2LCBsaWJnZm9ydHJhbi8yNjQyMywgbGliZ2ZvcnRyYW4vMjY0NjQsCi0JbGli c3RkYysrLzI2NTI2LCBydGwtb3B0aW1pemF0aW9uLzI2MzQ1LCB0YXJnZXQvMTkwNjEsIHRhcmdl dC8yNjQ1MwotLSBoYW5kbGUgRFdfQ0ZBX3ZhbF97b2Zmc2V0LG9mZnNldF9zZixleHByZXNzaW9u fSBpbiB0aGUgbGliZ2Njeyxfc30gdW53aW5kZXIKLQotKiBUdWUgRmViIDI4IDIwMDYgSmFrdWIg SmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtMQotLSB1cGRhdGUgZnJvbSBnY2MtNF8x LWJyYW5jaCAoLXIxMTE0NjY6MTExNTcwKQotICAtIEdDQyA0LjEuMCByZWxlYXNlCi0gIC0gUFIg b3RoZXIvMjY0NzMKLQotKiBNb24gRmViIDI3IDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVk aGF0LmNvbT4gNC4xLjAtMC4zMQotLSBhZGQgX19mbG9hdHVuc1tzZHRdaVtzZHh0XWYgZXhwb3J0 cyB0byBsaWJnY2Nfcy5zby4xIChKb3NlcGggUy4gTXllcnMpCi0tIGZpeCB1bndpbmRpbmcgdGhy b3VnaCBzaWduYWwgZnJhbWVzICgjMTc1OTUxLCBQUiBvdGhlci8yNjIwOCwgZ2xpYmMgQlojMzAw KQotCi0qIE1vbiBGZWIgMjcgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0 LjEuMC0wLjMwCi0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjExMTI3ODoxMTE0NjYp Ci0gIC0gR0NDIDQuMS4wIFJDMgotICAtIFBScyBmb3J0cmFuLzI2MjAxLCBsaWJvYmpjLzI2MzA5 LCBydGwtb3B0aW1pemF0aW9uLzI1NjAzLCB0YXJnZXQvMjU2MDMKLSAgLSBmaXggbmVzdGVkIHZl Y3RvciBzaGlmdHMgKCMxODIwNDcsIFBSIG1pZGRsZS1lbmQvMjYzNzkpCi0tIG1lcmdlIGdvbXAg Y2hhbmdlcyBmcm9tIHRydW5rICgtcjExMTM5MDoxMTEzOTEsIC1yMTExNDI4OjExMTQyOSBhbmQK LSAgLXIxMTE0NDA6MTExNDQxKQotICAtIFBSIG1pZGRsZS1lbmQvMjY0MTIKLS0gZm9ydHJhbiBN QVRNVUwgb3B0aW1pemF0aW9uIChSaWNoYXJkIFNhbmRpZm9yZCkKLS0gZm9ydHJhbiBXSEVSRSBv cHRpbWl6YXRpb25zIChSb2dlciBTYXlsZSkKLS0geDg2XzY0IF9tbV9tb25pdG9yIGZpeGVzIChI LkouIEx1LCBQUiB0YXJnZXQvMjQ4NzkpCi0tIGFkZCBNTkkgc3VwcG9ydCBvbiBpPzg2L3g4Nl82 NCwgLW1tbmkgb3B0aW9uIGFuZCA8dG1taW50cmluLmg+IGhlYWRlcgotICAoSC5KIEx1KQotCi0q IFN1biBGZWIgMTkgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMC0w LjI5Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjExMTE3OToxMTEyNzgpCi0gIC0g UFJzIGFkYS8xMzQwOCwgYysrLzI2MjY2LCB0YXJnZXQvMjIyMDksIHRhcmdldC8yNjE4OQotICAt IGZpeCBwcGMzMiAtZnBpYyByZWxvYWQgcHJvYmxlbSB3aXRoIGV4dGVuZGRmdGYyIHBhdHRlcm4K LSAgICAoRGF2aWQgRWRlbHNvaG4sICMxODE2MjUsIFBSIHRhcmdldC8yNjM1MCkKLSAgLSBmaXgg dGhlIFBSIG1pZGRsZS1lbmQvMjYzMzQgcGF0Y2gKLQotKiBGcmkgRmViIDE3IDIwMDYgSmFrdWIg SmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtMC4yOAotLSB1cGRhdGUgZnJvbSBnY2Mt NF8xLWJyYW5jaCAoLXIxMTA5Nzg6MTExMTc5KQotICAtIFBScyBhZGEvMjA3NTMsIGJvb3RzdHJh cC8xNjc4NywgYm9vdHN0cmFwLzI2MDUzLCBmb3J0cmFuLzI1ODA2LAotCWxpYmZvcnRyYW4vMTUy MzQsIGxpYmdmb3J0cmFuLzI1OTQ5LCBtaWRkbGUtZW5kLzI1MzM1LAotCXRhcmdldC8yNTI1OSwg dGFyZ2V0LzI2MjU1Ci0gIC0gZml4IElDRSB3aXRoIHNoaWZ0IGJ5IC0xICgjMTgxNTg2LCBQUiBt aWRkbGUtZW5kLzI2MzAwKQotLSBtZXJnZSBnb21wIGNoYW5nZXMgZnJvbSB0cnVuayAoLXIxMTA5 ODM6MTEwOTg0LCAtcjExMTAxNzoxMTEwMTgsCi0gIC1yMTExMTUyOjExMTE1MyBhbmQgLXIxMTEy MDQ6MTExMjA1KQotICAtIFBScyBib290c3RyYXAvMjYxNjEsIGZvcnRyYW4vMjYyMjQsIGxpYmdv bXAvMjU5MzgsIGxpYmdvbXAvMjU5ODQKLS0gZG9uJ3QgZGVmaW5lIF9SRUVOVFJBTlQgaW4gZ3Ro ciouaCAoIzE3NjI3OCwgUFIgbGlic3RkYysrLzExOTUzKQotLSBkZWZpbmUgX1JFRU5UUkFOVCBp ZiAtcHRocmVhZCBhbmQgX1BPU0lYX1NPVVJDRSBpZiAtcG9zaXggb24gczM5MHsseH0KLSAgYW5k IGlhNjQKLS0gZml4IElDRSB3aXRoIHJlZ2lzdGVyIHZhcmlhYmxlIGFuZCBfX2FzbSBzdGF0ZW1l bnQgKCMxODE3MzEsCi0gIFBSIG1pZGRsZS1lbmQvMjYzMzQpCi0KLSogVHVlIEZlYiAxNCAyMDA2 IEFsZXhhbmRyZSBPbGl2YSA8YW9saXZhQHJlZGhhdC5jb20+IDQuMS4wLTAuMjcKLS0gbWVyZ2Ug Zml4IGJ5IFpkZW5layBEdm9yYWsgZm9yIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSBwYXRjaCBm b3IgUFIKLSAgdHJlZS1vcHRpbWl6YXRpb24vMjYyMDkKLQotKiBUdWUgRmViIDE0IDIwMDYgSmFr dWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtMC4yNgotLSB1cGRhdGUgZnJvbSBn Y2MtNF8xLWJyYW5jaCAoLXIxMTA5MDM6MTEwOTc4KQotICAtIFBScyBmb3J0cmFuLzIwODYxLCBm b3J0cmFuLzIwODcxLCBmb3J0cmFuLzI1MDU5LCBmb3J0cmFuLzI1MDcwLAotCWZvcnRyYW4vMjUw ODMsIGZvcnRyYW4vMjUwODgsIGZvcnRyYW4vMjUxMDMsIGZvcnRyYW4vMjYwMzgsCi0JZm9ydHJh bi8yNjA3NCwgaW5saW5lLWFzbS8xNjE5NCwgbGliZm9ydHJhbi8yNDY4NSwKLQlsaWJmb3J0cmFu LzI1NDI1LCB0YXJnZXQvMjYxNDEsIHRyZWUtb3B0aW1pemF0aW9uLzI2MjU4Ci0tIEFCSSBjaGFu Z2UgLSByZXZlcnQgdG8gR0NDIDMuMyBhbmQgZWFybGllciBiZWhhdmlvdXIgb2YKLSAgemVybyBz aXplZCBiaXRmaWVsZHMgaW4gcGFja2VkIHN0cnVjdHMgKE1pY2hhZWwgTWF0eiwgUFIgbWlkZGxl LWVuZC8yMjI3NSkKLS0gZml4IHZhbGFycmF5cyB2cy4gbm9uLVBPRCAoUGFvbG8gQ2FybGluaSwg R2FicmllbCBEb3MgUmVpcywKLSAgUFIgbGlic3RkYysrLzI1NjI2KQotLSBmaXggQysrIGR1cGxp Y2F0ZSBkZWNsc3BlYyBkaWFnbm9zdGljcyAoVm9sa2VyIFJlaWNoZWx0LCBQUiBjKysvMjYxNTEp Ci0tIGZpeCBkb21pbmFuY2UgSUNFIChaZGVuZWsgRHZvcmFrLCBQUiB0cmVlLW9wdGltaXphdGlv bi8yNjIwOSkKLS0gYWRkIHNvbWUgbmV3IEludGVsIHssZSx4fW1taW50cmluLmggaW50cmluc2lj cyAoSC5KLiBMdSkKLS0gc3BlZWR1cCBiaXRzZXQ8Pjo6X01fY29weV90b19zdHJpbmcgKFBhb2xv IENhcmxpbmkpCi0tIGZpeCB0cmVlX2V4cHJfbm9uemVyb19wIChKZWZmIExhdykKLS0gZml4IFRS VVRIX1hPUl9FWFBSIGhhbmRsaW5nIGluIFZSUCAoSmVmZiBMYXcpCi0KLSogTW9uIEZlYiAxMyAy MDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTAuMjUKLS0gdXBkYXRl IGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTEwODMxOjExMDkwMykKLSAgLSBQUnMgYysrLzE2NDA1 LCBjKysvMjQ5OTYsIGZvcnRyYW4vMTQ3NzEsIGZvcnRyYW4vMjA4NTgsIGZvcnRyYW4vMjU3NTYs Ci0JbWlkZGxlLWVuZC8yMjQzOQotLSBtZXJnZSBnb21wIGNoYW5nZXMgZnJvbSB0cnVuayAoLXIx MTA3MTk6MTEwNzIwLCAtcjExMDg1MjoxMTA4NTMgYW5kCi0gIC1yMTEwOTA3OjExMDkwOCkKLSAg LSBQUiBsaWJnb21wLzI1OTM2Ci0tIGZpeCBnaW1wbGlmaWNhdGlvbiBvZiBjb25zdCBmbiBwb2lu dGVycyB0byBidWlsdGluZyBmdW5jdGlvbnMKLSAgKFBSIG1pZGRsZS1lbmQvMjYwOTIpCi0tIG1h a2Ugc3VyZSBGb3J0cmFuIGxlbmd0aCBhcnRpZmljYWwgdmFyaWFibGVzIGFyZW4ndCBTQVZFZCAo QW5kcmV3IFBpbnNraSwKLSAgUFIgZm9ydHJhbi8yNjI0NikKLQotKiBGcmkgRmViIDEwIDIwMDYg SmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtMC4yNAotLSB1cGRhdGUgZnJv bSBnY2MtNF8xLWJyYW5jaCAoLXIxMTA2MzI6MTEwODMxKQotICAtIFBScyB0cmVlLW9wdC8yNjE4 MCwgYysrLzI2MDcwLCBjKysvMjYwNzEsIGZvcnRyYW4vMjU1NzcsIGphdmEvMjYxOTIsCi0JbGli Zm9ydHJhbi8yMzgxNSwgbGlic3RkYysrLzI2MTI3LCB0YXJnZXQvMjMzNTksIHRhcmdldC8yNjEw OSwKLQl0cmVlLW9wdC8yNTI1MQotLSByZW1vdmUgZ2NjLXBwYzMyLCBnY2MtYysrLXBwYzMyLCBn Y2Mtc3BhcmMzMiBhbmQgZ2NjLWMrKy1zcGFyYzMyCi0gIHN1YnBhY2thZ2VzLCB0aGV5IGRvIG1v cmUgaGFybSB0aGFuIGdvb2QuICBQYXJ0aWN1bGFybHkgdGhpcyB0aW1lCi0gIGdjYypwcGMzMiBh bmQgZ2NjKnNwYXJjMzIgZGVmYXVsdGVkIHRvIERGbW9kZSBsb25nIGRvdWJsZSByYXRoZXIKLSAg dGhhbiBURm1vZGUgbG9uZyBkb3VibGUKLQotKiBNb24gRmViICA2IDIwMDYgSmFrdWIgSmVsaW5l ayA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtMC4yMwotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJy YW5jaCAoLXIxMTA1ODI6MTEwNjMyKQotICAtIFBScyBjbGFzc3BhdGgvMjQ2MTgsIGNsYXNzcGF0 aC8yNTE0MSwgY2xhc3NwYXRoLzI1NzI3LCBmb3J0cmFuLzI1MDQ2LAotCWZvcnRyYW4vMjYwMzkK LS0gdXNlIExPR0lDQUwqMSBpbnN0ZWFkIG9mIExPR0lDQUwqNCBmb3IgRm9ydHJhbiB3aGVyZSB0 ZW1wb3JhcnkgbWFza3MKLSAgKFJvZ2VyIFNheWxlKQotLSBmaXggc3ltYm9sIHZlcnNpb25zIGlu IHMzOTAgbGliZ2NjX3Muc28uMQotLSBzcGFyYzMyIGFuZCBhbHBoYSBsb25nIGRvdWJsZSBmaXhl cwotLSBCdWlsZFJlcXVpcmVzIGxpYlh0LWRldmVsCi0tIEJ1aWxkUmVxdWlyZXMgYW5kIFJlcXVp cmVzIGdsaWJjLWRldmVsID49IDIuMy45MC0zNSBvbiBhcmNoZXMKLSAgdGhhdCBhcmUgc3dpdGNo aW5nIGxvbmcgZG91YmxlCi0KLSogU2F0IEZlYiAgNCAyMDA2IEpha3ViIEplbGluZWsgPGpha3Vi QHJlZGhhdC5jb20+IDQuMS4wLTAuMjIKLS0gZml4IGlhNjQgZGVidWcgaW5mbyBwYXRjaAotLSBm aXggbGliamF2YSBwdGhyZWFkX2NyZWF0ZSB3cmFwcGVyIHBhdGNoCi0KLSogU2F0IEZlYiAgNCAy MDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTAuMjEKLS0gdXBkYXRl IGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTEwNDMzOjExMDU4MikKLSAgLSBQUnMgYysrLzI1MzQy LCBjKysvMjU5NzksIGZvcnRyYW4vMjA4NDUsIGZvcnRyYW4vMjQyNjYsCi0JZm9ydHJhbi8yNDk1 OCwgZm9ydHJhbi8yNTA3MiwgbGlic3RkYysrLzIxNTU0LCBtaWRkbGUtZW5kLzI0OTAxLAotCW1p ZGRsZS1lbmQvMjU5NzcsIG1pZGRsZS1lbmQvMjYwMDEsIHRhcmdldC8yNTg2NCwgdGFyZ2V0LzI1 OTI2LAotCXRhcmdldC8yNTk2MAotICAtIHB1dCBpYTY0IHJlYWQtb25seSBzZWN0aW9ucyB0aGF0 IHJlcXVpcmUgcnVudGltZSByZWxvY2F0aW9ucwotICAgIGV2ZW4gaW4gLWZuby1waWMgY29kZSBp bnRvIC5kYXRhLnJlbC5ybyBldGMuIHNlY3Rpb25zCi0gICAgcmF0aGVyIHRoYW4gLnJvZGF0YSB0 byBhdm9pZCBEVF9URVhUUkVMIGJpbmFyaWVzCi0gICAgKFJpY2hhcmQgSGVuZGVyc29uLCBQUiB0 YXJnZXQvMjYwOTApCi0tIG1lcmdlIGdvbXAgY2hhbmdlcyBmcm9tIHRydW5rICgtcjExMDUxMTox MTA1MTIgYW5kIC1yMTEwNTQ5OjExMDU1MikKLS0gZml4IGlhNjQgZGVidWcgaW5mbyBjb3ZlcmFn ZSBvZiBlcGlsb2d1ZXMgKEFsZXhhbmRyZSBPbGl2YSwgUFIgZGVidWcvMjQ0NDQpCi0tIGV4cG9y dCBwdGhyZWFkX2NyZWF0ZSBmcm9tIGxpYmdjai5zby43IGFzIGEgd3JhcHBlciBhcm91bmQKLSAg bGlicHRocmVhZC5zby4wJ3MgcHRocmVhZF9jcmVhdGUgdGhhdCBoYW5kbGVzIEdDIChBbnRob255 IEdyZWVuLCBUb20gVHJvbWV5KQotLSBCQy1BQkkgamF2YSBsb29rdXAgZml4IChBbmRyZXcgSGFs ZXksICMxNzkwNzAsICMxNzgxNTYpCi0tIG9uIHNwYXJjNjQgZW1pdCAucmVnaXN0ZXIgJWc3LCNp Z25vcmUgaW5zdGVhZCBvZiAucmVnaXN0ZXIgJWc3LCNzY3JhdGNoCi0gIHRvIGF2b2lkIHByb2Js ZW1zIHdpdGggVExTIG9yIC1mc3RhY2stcHJvdGVjdG9yCi0tIHN3aXRjaCB0byBJQk0gZXh0ZW5k ZWQgZm9ybWF0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHQgb24gcHBjIGFuZCBwcGM2NAotLSBzd2l0 Y2ggdG8gSUVFRSA3NTQgcXVhZCBmb3JtYXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdCBvbiBzMzkw LCBzMzkweCwKLSAgc3BhcmMzMiBhbmQgYWxwaGEKLQotKiBXZWQgRmViICAxIDIwMDYgSmFrdWIg SmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtMC4yMAotLSBtZXJnZSBmcm9tIGdvbXAt MjAwNTA4MDgtYnJhbmNoICh1cCB0byAtcjExMDM5MikKLSAgLSBmaXggUFIgYysrLzI1ODc0IChE aWVnbyBOb3ZpbGxvKQotCi0qIFdlZCBGZWIgIDEgMjAwNiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBy ZWRoYXQuY29tPiA0LjEuMC0wLjE5Ci0tIHMzOTB7LHh9IGxvbmcgZG91YmxlIHBhdGNoIGZpeCBm b3IgczM5MHggSUNFcyBvbiB0ZXN0LWxkb3VibGUKLSAgYW5kIHRzdC1hbGlnbjIgKEFuZHJlYXMg S3JlYmJlbCkKLQotKiBUdWUgSmFuIDMxIDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0 LmNvbT4gNC4xLjAtMC4xOAotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMTAzMTc6 MTEwNDMzKQotICAtIFBScyBjKysvMjU4NTUsIGMrKy8yNTk5OSwgZm9ydHJhbi8xNzkxMSwgZm9y dHJhbi8xODU3OCwgZm9ydHJhbi8xODU3OSwKLQlmb3J0cmFuLzIwODU3LCBmb3J0cmFuLzIwODg1 LCBmb3J0cmFuLzIwODk1LCBmb3J0cmFuLzI1MDMwLAotCWZvcnRyYW4vMjU4MzUsIGZvcnRyYW4v MjU5NTEsIGphdmEvMjE0MjgsIGxpYmdmb3J0cmFuLzI1ODM1LAotCXRhcmdldC8xNDc5OCwgdGFy Z2V0LzI1NzA2LCB0YXJnZXQvMjU3MTgsIHRhcmdldC8yNTk0NywKLQl0YXJnZXQvMjYwMTgsIHRl c3RzdWl0ZS8yNTMxOAotLSBhZGQgLW10dW5lPWdlbmVyaWMgc3VwcG9ydCBmb3IgaT84NiBhbmQg eDg2XzY0IChKYW4gSHViaWNrYSwgSC5KLiBMdSwKLSAgRXZhbmRybyBNZW5lemVzKQotLSB1c2Ug LW10dW5lPWdlbmVyaWMgYnkgZGVmYXVsdCBpZiBuZWl0aGVyIC1tYXJjaD0gbm9yIC1tdHVuZT0g aXMgc3BlY2lmaWVkCi0gIG9uIGNvbW1hbmQgbGluZSBvbiBpPzg2IG9yIHg4Nl82NAotLSB1cGRh dGVkIHMzOTB7LHh9IGxvbmcgZG91YmxlIHBhdGNoLCBmaXhpbmcgSUNFcyBvbiBzMzkweCBnbGli YyBidWlsZAotICAoQW5kcmVhcyBLcmViYmVsLCBVbHJpY2ggV2VpZ2FuZCkKLQotKiBTYXQgSmFu IDI4IDIwMDYgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtMC4xNwotLSB1 cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMTAwNjI6MTEwMzE3KQotICAtIFBScyBhZGEv MjA1NDgsIGFkYS8yMTMxNywgYm9vdHN0cmFwLzI1ODU5LCBjKysvMjU1NTIsIGMrKy8yNTg1NiwK LQljKysvMjU4NTgsIGMrKy8yNTg5NSwgYy8yNTg5MiwgZm9ydHJhbi8xODU0MCwgZm9ydHJhbi8y MDg1MiwKLQlmb3J0cmFuLzIwODgxLCBmb3J0cmFuLzIzMzA4LCBmb3J0cmFuLzI0Mjc2LCBmb3J0 cmFuLzI1MDg0LAotCWZvcnRyYW4vMjUwODUsIGZvcnRyYW4vMjUwODYsIGZvcnRyYW4vMjUxMjQs IGZvcnRyYW4vMjU0MTYsCi0JZm9ydHJhbi8yNTUzOCwgZm9ydHJhbi8yNTYyNSwgZm9ydHJhbi8y NTcxMCwgZm9ydHJhbi8yNTcxNiwKLQlmb3J0cmFuLzI1OTAxLCBmb3J0cmFuLzI1OTY0LCBqYXZh LzI1ODE2LCBvdGhlci8yNDgyOSwKLQlydGwtb3B0aW1pemF0aW9uLzI0NjI2LCBydGwtb3B0aW1p emF0aW9uLzI1NjU0LCB0YXJnZXQvMjQ4MzEsCi0JdGVzdHN1aXRlLzI0OTYyLCB0ZXN0c3VpdGUv MjU1OTAKLS0gYXRvbWljIGJ1aWx0aW4gZml4ZXMgKFJpY2hhcmQgSGVuZGVyc29uKQotLSAtbWxv bmctZG91YmxlLTEyOCBzdXBwb3J0IG9uIHBwYzMyIChEYXZpZCBFZGVsc29obiwgQWxhbiBNb2Ry YSkKLS0gLW1sb25nLWRvdWJsZS0xMjggc3VwcG9ydCBvbiBzMzkwIGFuZCBzMzkweCAoQW5kcmVh cyBLcmViYmVsLAotICBVbHJpY2ggV2VpZ2FuZCkKLQotKiBTYXQgSmFuIDIxIDIwMDYgSmFrdWIg SmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtMC4xNgotLSB1cGRhdGUgZnJvbSBnY2Mt NF8xLWJyYW5jaCAoLXIxMDk4MTU6MTEwMDYyKQotICAtIFBScyBhZGEvMjQ1MzMsIGMrKy8xNjgy OSwgYysrLzIyMTM2LCBjKysvMjU4MzYsIGMrKy8yNTg1NCwgYy8yNTgwNSwKLQljbGFzc3BhdGgv MjAxOTgsIGZvcnRyYW4vMjA4NjksIGZvcnRyYW4vMjA4NzUsIGZvcnRyYW4vMjUwMjQsCi0JZm9y dHJhbi8yNTYzMSwgZm9ydHJhbi8yNTY5NywgZm9ydHJhbi8yNTc4NSwgbGliZ2NqLzI1ODQwLAot CWxpYmdmb3J0cmFuLzI1NjMxLCBsaWJnZm9ydHJhbi8yNTY5NywgbGlic3RkYysrLzI1ODIzLAot CWxpYnN0ZGMrKy8yNTgyNCwgdGFyZ2V0LzI1NzMxLCB0ZXN0c3VpdGUvMjUxNzEKLSAgLSBmaXgg WDUwOUNlcnRpZmljYXRlLmphdmEgKCMxNzQ3MDgsICMxNzc3MzMpCi0KLSogVHVlIEphbiAxNyAy MDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTAuMTUKLS0gdXBkYXRl IGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTA5NDAxOjEwOTgxNSkKLSAgLSBQUnMgYysrLzI0ODI0 LCBjKysvMjUzODYsIGMrKy8yNTY2MywgYy8yNTY4MiwgY2xhc3NwYXRoLzI1ODAzLAotCWZvcnRy YW4vMTI0NTYsIGZvcnRyYW4vMjA4NjgsIGZvcnRyYW4vMjA4NzAsIGZvcnRyYW4vMjEyNTYsCi0J Zm9ydHJhbi8yMTk3NywgZm9ydHJhbi8yMjE0NiwgZm9ydHJhbi8yNDY0MCwgZm9ydHJhbi8yNTAy OSwKLQlmb3J0cmFuLzI1MDkzLCBmb3J0cmFuLzI1MTAxLCBmb3J0cmFuLzI1NDg2LCBmb3J0cmFu LzI1NTk4LAotCWZvcnRyYW4vMjU3MzAsIGxpYmdjai8yMTYzNywgbGliZ2NqLzIzNDk5LCBsaWJn Zm9ydHJhbi8yNTU5OCwKLQlsaWJzdGRjKysvMjM1OTEsIGxpYnN0ZGMrKy8yNTQ3MiwgcnRsLW9w dGltaXphdGlvbi8yNDI1NywKLQlydGwtb3B0aW1pemF0aW9uLzI1MzY3LCBydGwtb3B0aW1pemF0 aW9uLzI1NjYyLCB0YXJnZXQvMjA3NTQsCi0JdGFyZ2V0LzI1MDQyLCB0YXJnZXQvMjUxNjgsIHRl c3RzdWl0ZS8yNTcyOCwgdGVzdHN1aXRlLzI1Nzc3LAotCXRyZWUtb3B0LzI0MzY1LCB0cmVlLW9w dGltaXphdGlvbi8yMzEwOSwgdHJlZS1vcHRpbWl6YXRpb24vMjM5NDgsCi0JdHJlZS1vcHRpbWl6 YXRpb24vMjQxMjMsIHRyZWUtb3B0aW1pemF0aW9uLzI1MTI1Ci0tIHVwZGF0ZSBmcm9tIGdvbXAt MjAwNTA2MDgtYnJhbmNoICh1cCB0byAtcjEwOTgxNikKLS0gZml4IHBwYzMyIGxpYmZmaSAoIzE3 NzY1NSkKLS0gZml4IGxvb2t1cF9jb252ZXJzaW9uc19yICgjMTc3OTE4KQotLSBkZWZpbmUgX19T VERDX18gYXMgYSBub3JtYWwgbWFjcm8gcmF0aGVyIHRoYW4gYSBwcmVwcm9jZXNzb3IgYnVpbHRp bgotICB1bmxlc3MgaXQgbmVlZHMgdG8gY2hhbmdlIGl0cyB2YWx1ZSBiZXR3ZWVuIHN5c3RlbSBh bmQgbm9uLXN5c3RlbQotICBoZWFkZXJzIChQUiBwcmVwcm9jZXNzb3IvMjU3MTcpCi0KLSogRnJp IEphbiAgNiAyMDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTAuMTQK LS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTA5MzY5OjEwOTQwMSkKLSAgLSBQUiBm b3J0cmFuLzIzNjc1Ci0gIC0gZml4IEphdmEgc2h1dGRvd24gaG9vayAoVG9tIFRyb21leSwgIzE2 NTEzNikKLS0gZml4IGxpYmphdmEvc2hsaWJwYXRoLm00IChQUiBsaWJnY2ovMjQ5NDApCi0KLSog VGh1IEphbiAgNSAyMDA2IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTAu MTMKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTA4OTU3OjEwOTM2OSkKLSAgLSBQ UnMgYysrLzIzMTcxLCBjKysvMjMxNzIsIGMrKy8yNDY3MSwgYysrLzI0NzgyLCBjKysvMjUyOTQs IGMrKy8yNTQxNywKLQljKysvMjU0MzksIGMrKy8yNTQ5MiwgYysrLzI1NjI1LCBjKysvMjU2MzIs IGMrKy8yNTYzMywgYysrLzI1NjM0LAotCWMrKy8yNTYzNSwgYysrLzI1NjM3LCBjKysvMjU2Mzgs IGMvMjUxODMsIGMvMjU1NTksIGRlYnVnLzI1NTYyLAotCWZvcnRyYW4vMTg5OTAsIGZvcnRyYW4v MTkzNjIsIGZvcnRyYW4vMjAyNDQsIGZvcnRyYW4vMjA4NjIsCi0JZm9ydHJhbi8yMDg2NCwgZm9y dHJhbi8yMDg4OSwgZm9ydHJhbi8yMjYwNywgZm9ydHJhbi8yMzE1MiwKLQlmb3J0cmFuLzI1MDE4 LCBmb3J0cmFuLzI1MDUzLCBmb3J0cmFuLzI1MDU1LCBmb3J0cmFuLzI1MDYzLAotCWZvcnRyYW4v MjUwNjQsIGZvcnRyYW4vMjUwNjYsIGZvcnRyYW4vMjUwNjcsIGZvcnRyYW4vMjUwNjgsCi0JZm9y dHJhbi8yNTA2OSwgZm9ydHJhbi8yNTEwNiwgZm9ydHJhbi8yNTM5MSwgZm9ydHJhbi8yNTUzMiwK LQlmb3J0cmFuLzI1NTg2LCBmb3J0cmFuLzI1NTg3LCBsaWJnY2ovOTcxNSwgbGliZ2NqLzE5MTMy LAotCWxpYmdmb3J0cmFuLzI1MTM5LCBsaWJnZm9ydHJhbi8yNTQxOSwgbGliZ2ZvcnRyYW4vMjU1 MTAsCi0JbGliZ2ZvcnRyYW4vMjU1NTAsIGxpYmdmb3J0cmFuLzI1NTk0LCBtaWRkbGUtZW5kLzI0 ODI3LCBvYmpjLzI1MzI4LAotCXJ0bC1vcHRpbWl6YXRpb24vMjEwNDEsIHJ0bC1vcHRpbWl6YXRp b24vMjUxMzAsIHRhcmdldC8yNDM0MiwKLQl0YXJnZXQvMjU1NTQsIHRhcmdldC8yNTU3MiwgdGVz dHN1aXRlLzI1MjE0LCB0ZXN0c3VpdGUvMjU0NDEsCi0JdGVzdHN1aXRlLzI1NDQyLCB0ZXN0c3Vp dGUvMjU0NDQsIHRyZWUtb3B0LzI1NTEzCi0gIC0gY3JlYXRlIGphdmEgUGFja2FnZSBmb3IgY29t cGlsZWQgY2xhc3NlcyB3aGljaCBhcmUgbGlua2VkIGluIGJ1dAotICAgIGxvYWRlZCBieSB0aGUg c3lzdGVtIGNsYXNzIGxvYWRlciAoVG9tIFRyb21leSwgIzE3Njk1NikKLSAgLSBmaXggcG9zaXhf bWVtYWxpZ24gcHJvdG90eXBlIGluIDxtbV9tYWxsb2MuaD4gKCMxNzY0NjEpCi0tIHVwZGF0ZSBm cm9tIGdvbXAtMjAwNTA2MDgtYnJhbmNoICh1cCB0byAtcjEwOTM0OSkKLS0gYnVpbGRyZXF1aXJl IGxpYlh0c3QtZGV2ZWwgKCMxNzY4OTgpCi0tIGZpeCBidWlsdCBpbiBwYXRoIHRvIGNsYXNzbWFw LmRiIG9uIHg4Nl82NCwgczM5MHggYW5kIHBwYzY0ICgjMTc2NTYyKQotLSBmaXggZGVidWcgaW5m byBmb3IgcHJlcHJvY2Vzc2VkIEZvcnRyYW4gY29kZSAoIzE3NTA3MSwgUFIgZm9ydHJhbi8yNTMy NCkKLQotKiBGcmkgRGVjIDIyIDIwMDUgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4g NC4xLjAtMC4xMgotLSBtYWtlIHN1cmUgR0NKRkxBR1MgYXJlIHByb3BhZ2F0ZWQgZG93biB0byBs aWJqYXZhJ3MgY29uZmlndXJlCi0tIGJ1aWxkIGNydHtiZWdpbixlbmR9Ki5vIHdpdGggLWZuby1h c3luY2hyb25vdXMtdW53aW5kLXRhYmxlcwotICBpZiBSUE1fT1BUX0ZMQUdTIGluY2x1ZGUgLWZh c3luY2hyb25vdXMtdW53aW5kLXRhYmxlcwotLSBmaXggUFIgYysrLzI1MzY5IChNYXJrIE1pdGNo ZWxsKQotLSBmaXggUFIgbGliZ2ZvcnRyYW4vMjUzMDcgKEplcnJ5IERlTGlzbGUpCi0KLSogVGh1 IERlYyAyMiAyMDA1IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTAuMTEK LS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTA4ODYxOjEwODk1NykKLSAgLSBQUnMg ZGVidWcvMjU1MTgsIGZvcnRyYW4vMjQyNjgsIGZvcnRyYW4vMjU0MjMsIGxpYmdmb3J0cmFuLzI1 NDYzLAotCXJ0bC1vcHRpbWl6YXRpb24vMjUxOTYsIHRyZWUtb3B0aW1pemF0aW9uLzI0NzkzCi0t IHZhbGlkYXRlIGNoYW5nZXMgaW4gZm9yd2FyZCBjb3B5IHByb3BhZ2F0aW9uIChQUiB0YXJnZXQv MjUwMDUpCi0tIGZpeCBKYXZhIGNvbnN0YW50cyBjb25zdHJ1Y3RvcnMgb24gNjQtYml0IGJpZyBl bmRpYW4gYXJjaGVzCi0gIChBbmRyZXcgSGFsZXksIFBSIGphdmEvMjU1MzUpCi0tIGZpeCBQUiBj KysvMjUzNjQgKE1hcmsgTWl0Y2hlbGwpCi0KLSogV2VkIERlYyAyMSAyMDA1IEpha3ViIEplbGlu ZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTAuMTAKLS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1i cmFuY2ggKC1yMTA4NTM5OjEwODg2MSkKLSAgLSBQUnMgYWRhLzE4NjU5LCBhZGEvMTg4MTksIGMr Ky8yMDU1MiwgYysrLzIxMjI4LCBjKysvMjQyNzgsIGMrKy8yNDkxNSwKLQlmb3J0cmFuLzE4MTk3 LCBmb3J0cmFuLzI1NDU4LCBsaWJnZm9ydHJhbi8yNTAzOSwgbGliZ2ZvcnRyYW4vMjUyNjQsCi0J bGliZ2ZvcnRyYW4vMjUzNDksIGxpYm9iamMvMTQzODIsIGxpYnN0ZGMrKy8yNTQyMSwgbWlkZGxl LWVuZC8yMjMxMywKLQltaWRkbGUtZW5kLzI0MzA2LCBydGwtb3B0aW1pemF0aW9uLzIzODM3LCBy dGwtb3B0aW1pemF0aW9uLzI1MjI0LAotCXJ0bC1vcHRpbWl6YXRpb24vMjUzMTAsIHRhcmdldC8y NDk2OSwgdGVzdHN1aXRlLzI1MjE1LAotCXRyZWUtb3B0aW1pemF0aW9uLzIzODM4LCB0cmVlLW9w dGltaXphdGlvbi8yNDM3OAotLSB1cGRhdGUgZnJvbSBnb21wLTIwMDUwNjA4LWJyYW5jaCAodXAg dG8gLXIxMDg4NTkpCi0gIC0gZml4IF9QcmFnbWEgaGFuZGxpbmcgKFJpY2hhcmQgSGVuZGVyc29u LCBQUiBwcmVwcm9jZXNzb3IvMjUyNDApCi0tIGZpeCByZWxvYWQgcmUtcmVjb2duaXRpb24gb2Yg aW5zbnMgKEFsYW4gTW9kcmEsIFBSIHJ0bC1vcHRpbWl6YXRpb24vMjU0MzIpCi0tIGRvbid0IHBl ZXBob2xlIFJUWF9GUkFNRV9SRUxBVEVEX1AgaW5zbnMgKEFuZHJldyBIYWxleSwKLSAgUFIgbWlk ZGxlLWVuZC8yNTEyMSkKLQotKiBUaHUgRGVjIDE1IDIwMDUgSmFrdWIgSmVsaW5layA8amFrdWJA cmVkaGF0LmNvbT4gNC4xLjAtMC45Ci0tIGZpeCBPcGVuTVAgbGFzdHByaXZhdGUgaGFuZGxpbmcg Zm9yIGdsb2JhbCB2YXJzIChBbGR5IEhlcm5hbmRleikKLS0gZml4IGdudS54bWwuZG9tLkRvbU5v ZGUncyBkZXRhY2ggbWV0aG9kIChDYW9sYW4gTWNOYW1hcmEsCi0gIFBSIGNsYXNzcGF0aC8yNTQy NikKLS0gZml4IHVwIHRoZSAjMTc1NTY5IGZpeCAoVG9tIFRyb21leSwgIzE3NTgzMywgUFIgamF2 YS8yNTQyOSkKLS0gZml4IHN0cmVuZ3RoIHJlZHVjdGlvbiBtaXNjb21waWxhdGlvbiBvZiBsaWJn bm9tZWNhbnZhcwotICAoIzE3NTY2OSwgUFIgcnRsLW9wdGltaXphdGlvbi8yNDg5OSkKLS0gY3Jl YXRlIGxpYmdjai0qLmphciB3aXRoIC1ARSBvcHRpb25zIGFuZCBmZWVkIGEgc29ydGVkIGxpc3Qg dG8KLSAgaXQgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBmaWxlc3lzdGVtIHNvcnRpbmcKLQotKiBX ZWQgRGVjIDE0IDIwMDUgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtMC44 Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJhbmNoICgtcjEwODQxNDoxMDg1MzkpCi0gIC0gUFJz IGNsYXNzcGF0aC8yNTM4OSwgZm9ydHJhbi8yMzgxNSwgZm9ydHJhbi8yNTA3OCwgdGFyZ2V0LzI1 MjU0Ci0tIGZpeCBKYXZhIElDRSBvbiBpbml0aWFsaXplZCBzdGF0aWMgZmluYWwgdmFyIHVzZWQg aW4gY2FzZQotICAoQW5kcmV3IEhhbGV5LCAjMTc1NTY5LCBQUiBqYXZhLzI1NDI5KQotLSBmaXgg Y3Jhc2ggaW4gX1Vud2luZF9JdGVyYXRlUGhkckNhbGxiYWNrIChBbmRyZXcgSGFsZXkpCi0tIGRv bid0IFJlcXVpcmUgYWxzYS1saWItZGV2ZWwsIGp1c3QgQnVpbGRSZXF1aXJlIGl0Ci0gICgjMTc1 NjI3KQotLSB1c2UgLmdudS5saW5rb25jZS5kLnJlbC5yby4qIHNlY3Rpb25zIGZvciBvYmplY3Rz IHRoYXQKLSAgYXJlIGNvbnN0YW50IGFmdGVyIHJlbG9jYXRpb24gcHJvY2Vzc2luZwotCi0qIE1v biBEZWMgMTIgMjAwNSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjEuMC0wLjcK LS0gdXBkYXRlIGZyb20gZ2NjLTRfMS1icmFuY2ggKC1yMTA4MTU3OjEwODQxNCkKLSAgLSBQUnMg YysrLzE5MzE3LCBjKysvMTkzOTcsIGMrKy8xOTc2MiwgYysrLzE5NzY0LCBjKysvMjUwMTAsIGMr Ky8yNTMwMCwKLQljKysvMjUzMzcsIGRlYnVnLzI0OTA4LCBmb3J0cmFuLzI1MjkyLCBsaWJmb3J0 cmFuLzI1MTE2LAotCWxpYmdjai8yNTI2NSwgdGFyZ2V0LzE3ODI4LCB0YXJnZXQvMTkwMDUsIHRh cmdldC8yMzQyNCwKLQl0YXJnZXQvMjUyMTIsIHRhcmdldC8yNTI1OCwgdGFyZ2V0LzI1MzExLCB0 ZXN0c3VpdGUvMjA3NzIsCi0JdGVzdHN1aXRlLzI0NDc4LCB0ZXN0c3VpdGUvMjUxNjcsIHRyZWUt b3B0aW1pemF0aW9uLzI1MjQ4Ci0tIHVwZGF0ZSBmcm9tIGdvbXAtMjAwNTA2MDgtYnJhbmNoICh1 cCB0byAtcjEwODQyNCkKLS0gYWRkIEJ1aWxkUmVxIGZvciBhbHNhLWxpYi1kZXZlbCBhbmQgY29u ZmlndXJlIHdpdGggLS1kaXNhYmxlLWRzc2kKLS0gc29ydCBmaWxlcyBpbiBsaWJnY2otKi5qYXIg YW5kIHRvdWNoIHRoZW0gdG8gbGF0ZXN0IENoYW5nZUxvZwotICB0aW1lc3RhbXAsIHNvIHRoYXQg bGliZ2NqLSouamFyIGlzIGlkZW50aWNhbCBhY3Jvc3MgbXVsdGlsaWIgYXJjaGVzCi0tIGRvbid0 IHVzZSBwdXNodyBpbnN0cnVjdGlvbiBvbiBpPzg2LCBhcyB0aGF0IGxlYWRzIHRvIElDRXMKLSAg aW4gZGVmX2NmYV8xLCBiZWNhdXNlIG5lZ2F0aXZlIENGQSBvZmZzZXRzIG5vdCBtdWx0aXBsZSBv ZiA0Ci0gIGFyZW4ndCByZXByZXNlbnRhYmxlIGluIHRoZSB1bndpbmQgYW5kIGRlYnVnIGluZm8g KFBSIGRlYnVnLzI1MDIzLAotICBQUiB0YXJnZXQvMjUyOTMpCi0tIGZpeCBJQ0VzIHdpdGggeDg2 XzY0IC1tbGFyZ2UtZGF0YS10aHJlc2hvbGQ9TiBhbmQgU1RSSU5HX0NTVHMKLSAgKEphbiBIdWJp Y2thLCBQUiB0YXJnZXQvMjQxODgpCi0tIGZpeCBKYXZhIElDRSB3aXRoIGlucHV0X2ZpbGVuYW1l IGJlaW5nIHVuc2V0IChBbGV4YW5kcmUgT2xpdmEsICMxNzQ5MTIpCi0tIGRvbid0IGFjY2VwdCBp bnZhbGlkIGludCB4LDsgaW4gQysrIChQZXRyIE1hY2hhdGEsIFBSIGMrKy8yNDkwNykKLS0gZml4 IEphdmEgSUNFIGluIGRvX3Jlc29sdmVfY2xhc3MgKEFuZHJldyBIYWxleSwgUFIgamF2YS8yNTM2 NiwKLSAgUFIgamF2YS8yNTM2OCkKLS0gbWFrZSBzdXJlIGcqLmRnL2NvbXBhdC9zdHJ1Y3QtbGF5 b3V0LTEuZXhwIGdlbmVyYXRlZCB0ZXN0cwotICBkb24ndCB1c2UgYXJyYXlzIHdpdGggZW50cmll cyBhbGlnbmVkIG1vcmUgdGhhbiB0aGVpciBzaXplIChQUiBjKysvMjUzMzEpCi0tIGRvbid0IHVz ZSAtbGliZXJ0eSBpbiBnKysuZGcvY29tcGF0L3N0cnVjdC1sYXlvdXQtMS5leHAgdGVzdHMKLQot KiBXZWQgRGVjICA3IDIwMDUgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAt MC42Ci0tIGFsbG93ICNwcmFnbWFzIGF0IEMgc3RydWN0IHNjb3BlIGFzIHdlbGwgYXMgT2JqQyBj bGFzcyBzY29wZQotICAoUFIgYy8yNTI0NikKLS0gc29tZSBnb21wIHRlc3RjYXNlIGZpeGVzCi0K LSogV2VkIERlYyAgNyAyMDA1IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4w LTAuNQotLSB1cGRhdGUgZnJvbSBnY2MtNF8xLWJyYW5jaCAoLXIxMDc4MTA6MTA4MTU3KQotICAt IFBScyBib290c3RyYXAvMjUyMDcsIGMrKy8yNDEwMywgYysrLzI0MTM4LCBjKysvMjQxNzMsIGZv cnRyYW4vMTU4MDksCi0JZm9ydHJhbi8yMTMwMiwgZm9ydHJhbi8yMzkxMiwgamF2YS8yNTI4Mywg bGliZm9ydHJhbi8yNDkxOSwKLQlsaWJnZm9ydHJhbi8yNTE0OSwgbWlkZGxlLWVuZC8yNTE3Niwg b3RoZXIvMTM4NzMsIHRhcmdldC8xODU4MCwKLQl0YXJnZXQvMjQxMDgsIHRhcmdldC8yNDQ3NSwg dGFyZ2V0LzI0OTM0LCB0YXJnZXQvMjUxOTksCi0JdGVzdHN1aXRlLzI1MjQ3LCB0cmVlLW9wdGlt aXphdGlvbi8yNDk2MwotLSB1cGRhdGUgZnJvbSBnb21wLTIwMDUwNjA4LWJyYW5jaCAodXAgdG8g LXIxMDgxMDUpCi0tIC1Xc3RyaWN0LWFsaWFzaW5nIEMrKyBzdXBwb3J0IChSaWNoYXJkIEd1ZW50 aGVyLCBEaXJrIE11ZWxsZXIsCi0gIFBhb2xvIENhcmxpbmksIFBScyBjKysvMTQwMjQsIGxpYnN0 ZGMrKy8yNDk3NSkKLS0gZml4IG1hcmtfdXNlZF9yZWdzIHJlZ3Jlc3Npb24gKEFuZHJlYXMgS3Jl YmJlbCwgUFIgcnRsLW9wdGltaXphdGlvbi8yNDgyMykKLS0gZml4IHJlbG9hZCBJQ0UgKEtheiBL b2ppbWEsIFBSIHRhcmdldC8yNDk4MikKLS0gZml4IFBQQyBJQ0Ugb24gTGludXgga2VybmVsIChQ YW9sbyBCb256aW5pLCBQUiB0YXJnZXQvMjQ5ODIpCi0tIGZpeCBzMzkweyx4fSBzaGlmdHMgd2l0 aCBzaGlmdCBjb3VudCBBTkRlZCB3aXRoIGNvbnN0YW50IG1hc2sKLSAgKEFuZHJlYXMgS3JlYmJl bCwgUFIgdGFyZ2V0LzI1MjY4KQotLSBzMzkweyx4fSBhdG9taWMgYnVpbHRpbnMgZW5oYW5jZW1l bnRzIChBZHJpYW4gU3RyYWV0bGluZykKLQotKiBUaHUgRGVjICAxIDIwMDUgSmFrdWIgSmVsaW5l ayA8amFrdWJAcmVkaGF0LmNvbT4gNC4xLjAtMC40Ci0tIHVwZGF0ZSBmcm9tIGdjYy00XzEtYnJh bmNoICgtcjEwNzYxODoxMDc4MTApCi0gIC0gUFJzIGMrKy8yMTEyMywgYysrLzIxMTY2LCBmb3J0 cmFuLzI0MjIzLCBmb3J0cmFuLzI0NzA1LCBqYXZhLzE4Mjc4LAotCWxpYmdmb3J0cmFuLzI1MTA5 LCBtaWRkbGUtZW5kLzIwMTA5LCBtaWRkbGUtZW5kLzI1MTIwLAotCW1pZGRsZS1lbmQvMjUxNTgs IHJ0bC1vcHQvMjQ5MzAKLS0gdXNlICUle190bXBwYXRofSBpbiBCdWlsZFJvb3QgKCMxNzQ1OTQp Ci0tIHJlcXVpcmUgbGliZ29tcCBpbiBnY2Mgc3VicGFja2FnZQotLSBmaXggSmF2YSAuc28gc3lt bGlua3MKLQotKiBUdWUgTm92IDI5IDIwMDUgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNv bT4gNC4xLjAtMC4zCi0tIGZpeCBJQS02NCBsb2NhbC1leGVjIFRMUyBoYW5kbGluZwotLSBmaXgg SUEtNjQgX19zeW5jX2ZldGNoX2FuZF97c3ViLHhvciwuLi59Ci0KLSogTW9uIE5vdiAyOCAyMDA1 IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTAuMgotLSB1cGRhdGUgZnJv bSBnY2MtNF8xLWJyYW5jaCAoLXIxMDc0NjI6MTA3NjE4KQotICAtIFBScyBmb3J0cmFuLzI0OTE3 LCBsaWJnY2ovMjUwMTYsIGxpYmdmb3J0cmFuLzI0OTQ1LCBtaWRkbGUtZW5kLzIxMzA5LAotCW1p ZGRsZS1lbmQvMjUwMjIsIGxpYmZvcnRyYW4vMjQ5OTEKLS0gdXBkYXRlIGZyb20gZ29tcC0yMDA1 MDYwOC1icmFuY2ggKHVwIHRvIC1yMTA3NjE5KQotICAtIGZpeCBvbXBfZ2V0X3d0aXttZSxja30g b24gb2xkZXIga2VybmVscwotLSBwcGMzMiBFSCBmaXgKLS0gZml4ICNwcmFnbWEgb21wIGF0b21p YwotLSByZXN1cnJlY3RlZCBtdWx0aTMyIGhhY2sgZm9yIHBwYzMyIGFuZCBzcGFyYzMyCi0KLSog VGh1IE5vdiAyNCAyMDA1IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuMS4wLTAu MQotLSBpbml0aWFsIDQuMSBwYWNrYWdlLCB1c2luZyBuZXdseSBjcmVhdGVkIHJlZGhhdC9nY2Mt NF8xLWJyYW5jaAoKZGlmZiAtLWdpdCBhL2djYzQzLWJ1aWxkLWlkLnBhdGNoIGIvZ2NjNDMtYnVp bGQtaWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUxNjJlNgot LS0gL2Rldi9udWxsCisrKyBiL2djYzQzLWJ1aWxkLWlkLnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAK KzIwMDctMDctMjIgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CisKKwkqIGNv bmZpZy9yczYwMDAvc3lzdjQuaCAoTElOS19FSF9TUEVDKTogQWRkIC0tYnVpbGQtaWQgZm9yCisJ bm9uLXJlbG9jYXRhYmxlIGxpbmsuCisJKiBjb25maWcvbGludXguaCAoTElOS19FSF9TUEVDKTog TGlrZXdpc2UuCisJKiBjb25maWcvc3BhcmMvbGludXguaCAoTElOS19FSF9TUEVDKTogTGlrZXdp c2UuCisJKiBjb25maWcvc3BhcmMvbGludXg2NC5oIChMSU5LX0VIX1NQRUMpOiBMaWtld2lzZS4K KwkqIGNvbmZpZy9hbHBoYS9lbGYuaCAoTElOS19FSF9TUEVDKTogTGlrZXdpc2UuCisJKiBjb25m aWcvaWE2NC9saW51eC5oIChMSU5LX0VIX1NQRUMpOiBMaWtld2lzZS4KKworLS0tIGdjYy9jb25m aWcvcnM2MDAwL3N5c3Y0LmgufjF+CisrKysgZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAorQEAg LTEwNDQsNyArMTA0NCw3IEBAIGV4dGVybiBpbnQgZml4dXBsYWJlbG5vOworICAgJXshZHluYW1p Yy1saW5rZXI6LWR5bmFtaWMtbGlua2VyIC9saWIvbGQuc28uMX19fSIKKyAKKyAjaWYgZGVmaW5l ZChIQVZFX0xEX0VIX0ZSQU1FX0hEUikKKy0jIGRlZmluZSBMSU5LX0VIX1NQRUMgIiV7IXN0YXRp YzotLWVoLWZyYW1lLWhkcn0gIgorKyMgZGVmaW5lIExJTktfRUhfU1BFQyAiJXshc3RhdGljOi0t ZWgtZnJhbWUtaGRyfSAleyFyOi0tYnVpbGQtaWR9ICIKKyAjZW5kaWYKKyAKKyAjZGVmaW5lIENQ UF9PU19MSU5VWF9TUEVDICItRF9fdW5peF9fIC1EX19nbnVfbGludXhfXyAtRF9fbGludXhfXyBc CistLS0gZ2NjL2NvbmZpZy9saW51eC5oLn4xfgorKysrIGdjYy9jb25maWcvbGludXguaAorQEAg LTg1LDcgKzg1LDcgQEAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuICAqLworICAgICB9IHdo aWxlICgwKQorIAorICNpZiBkZWZpbmVkKEhBVkVfTERfRUhfRlJBTUVfSERSKQorLSNkZWZpbmUg TElOS19FSF9TUEVDICIleyFzdGF0aWM6LS1laC1mcmFtZS1oZHJ9ICIKKysjZGVmaW5lIExJTktf RUhfU1BFQyAiJXshc3RhdGljOi0tZWgtZnJhbWUtaGRyfSAleyFyOi0tYnVpbGQtaWR9ICIKKyAj ZW5kaWYKKyAKKyAvKiBEZWZpbmUgdGhpcyBzbyB3ZSBjYW4gY29tcGlsZSBNUyBjb2RlIGZvciB1 c2Ugd2l0aCBXSU5FLiAgKi8KKy0tLSBnY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaC5+MX4KKysr KyBnY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAorQEAgLTMxNiw3ICszMTYsNyBAQCBkbyB7CQkJ CQkJCQkJXAorICNkZWZpbmUgRElURl9DT05WRVJTSU9OX0xJQkZVTkNTIDEKKyAKKyAjaWYgZGVm aW5lZChIQVZFX0xEX0VIX0ZSQU1FX0hEUikKKy0jZGVmaW5lIExJTktfRUhfU1BFQyAiJXshc3Rh dGljOi0tZWgtZnJhbWUtaGRyfSAiCisrI2RlZmluZSBMSU5LX0VIX1NQRUMgIiV7IXN0YXRpYzot LWVoLWZyYW1lLWhkcn0gJXshcjotLWJ1aWxkLWlkfSAiCisgI2VuZGlmCisgDAorICNpZmRlZiBI QVZFX0FTX1RMUworLS0tIGdjYy9jb25maWcvc3BhcmMvbGludXguaC5+MX4KKysrKyBnY2MvY29u ZmlnL3NwYXJjL2xpbnV4LmgKK0BAIC0xODgsNyArMTg4LDcgQEAgZG8gewkJCQkJCQkJCVwKKyAj ZGVmaW5lIERJVEZfQ09OVkVSU0lPTl9MSUJGVU5DUyAxCisgCisgI2lmIGRlZmluZWQoSEFWRV9M RF9FSF9GUkFNRV9IRFIpCistI2RlZmluZSBMSU5LX0VIX1NQRUMgIiV7IXN0YXRpYzotLWVoLWZy YW1lLWhkcn0gIgorKyNkZWZpbmUgTElOS19FSF9TUEVDICIleyFzdGF0aWM6LS1laC1mcmFtZS1o ZHJ9ICV7IXI6LS1idWlsZC1pZH0gIgorICNlbmRpZgorIAwKKyAjaWZkZWYgSEFWRV9BU19UTFMK Ky0tLSBnY2MvY29uZmlnL2FscGhhL2VsZi5oLn4xfgorKysrIGdjYy9jb25maWcvYWxwaGEvZWxm LmgKK0BAIC00NTMsNSArNDUzLDUgQEAgZXh0ZXJuIGludCBhbHBoYV90aGlzX2dwZGlzcF9zZXF1 ZW5jZV9udQorICAgIEkgaW1hZ2luZSB0aGF0IG90aGVyIHN5c3RlbXMgd2lsbCBjYXRjaCB1cC4g IEluIHRoZSBtZWFudGltZSwgaXQKKyAgICBkb2Vzbid0IGhhcm0gdG8gbWFrZSBzdXJlIHRoYXQg dGhlIGRhdGEgZXhpc3RzIHRvIGJlIHVzZWQgbGF0ZXIuICAqLworICNpZiBkZWZpbmVkKEhBVkVf TERfRUhfRlJBTUVfSERSKQorLSNkZWZpbmUgTElOS19FSF9TUEVDICIleyFzdGF0aWM6LS1laC1m cmFtZS1oZHJ9ICIKKysjZGVmaW5lIExJTktfRUhfU1BFQyAiJXshc3RhdGljOi0tZWgtZnJhbWUt aGRyfSAleyFyOi0tYnVpbGQtaWR9ICIKKyAjZW5kaWYKKy0tLSBnY2MvY29uZmlnL2lhNjQvbGlu dXguaC5+MX4KKysrKyBnY2MvY29uZmlnL2lhNjQvbGludXguaAorQEAgLTU2LDcgKzU2LDcgQEAg ZG8gewkJCQkJCVwKKyAgICBTaWduYWxpemUgdGhhdCBiZWNhdXNlIHdlIGhhdmUgZmRlLWdsaWJj LCB3ZSBkb24ndCBuZWVkIGFsbCBDIHNoYXJlZCBsaWJzCisgICAgbGlua2VkIGFnYWluc3QgLWxn Y2Nfcy4gICovCisgI3VuZGVmIExJTktfRUhfU1BFQworLSNkZWZpbmUgTElOS19FSF9TUEVDICIi CisrI2RlZmluZSBMSU5LX0VIX1NQRUMgIiV7IXI6LS1idWlsZC1pZH0gIgorIAorICNkZWZpbmUg TURfVU5XSU5EX1NVUFBPUlQgImNvbmZpZy9pYTY0L2xpbnV4LXVud2luZC5oIgorIAoKZGlmZiAt LWdpdCBhL2djYzQzLWMrKy1idWlsdGluLXJlZGVjbC5wYXRjaCBiL2djYzQzLWMrKy1idWlsdGlu LXJlZGVjbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzY1NWFk Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDMtYysrLWJ1aWx0aW4tcmVkZWNsLnBhdGNoCkBAIC0w LDAgKzEsMTAyIEBACisyMDA3LTEwLTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNv bT4KKworCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBXaGVuIHJlZGVjbGFyaW5nIGEgYnVp bHRpbiBmdW5jdGlvbiwKKwlrZWVwIHRoZSBtZXJnZWQgZGVjbCBidWlsdGluIHdoZW5ldmVyIHR5 cGVzIG1hdGNoLCBldmVuIGlmIG5ldworCWRlY2wgZGVmaW5lcyBhIGZ1bmN0aW9uLgorCisJKiBn Y2MuZGcvYnVpbHRpbnMtNjUuYzogTmV3IHRlc3QuCisJKiBnKysuZGcvZXh0L2J1aWx0aW4xMC5D OiBOZXcgdGVzdC4KKworLS0tIGdjYy9jcC9kZWNsLmMuamoJMjAwNy0xMC0wMSAyMjoxMTowOS4w MDAwMDAwMDAgKzAyMDAKKysrKyBnY2MvY3AvZGVjbC5jCTIwMDctMTAtMDIgMTE6Mzk6NDYuMDAw MDAwMDAwICswMjAwCitAQCAtMTk4OCwyMyArMTk4OCwyMSBAQCBkdXBsaWNhdGVfZGVjbHMgKHRy ZWUgbmV3ZGVjbCwgdHJlZSBvbGRkCisgCSAgREVDTF9BUkdVTUVOVFMgKG9sZGRlY2wpID0gREVD TF9BUkdVTUVOVFMgKG5ld2RlY2wpOworIAkgIERFQ0xfUkVTVUxUIChvbGRkZWNsKSA9IERFQ0xf UkVTVUxUIChuZXdkZWNsKTsKKyAJfQorKyAgICAgIC8qIElmIHJlZGVjbGFyaW5nIGEgYnVpbHRp biBmdW5jdGlvbiwgaXQgc3RheXMgYnVpbHQgaW4uICAqLworKyAgICAgIGlmICh0eXBlc19tYXRj aCAmJiBERUNMX0JVSUxUX0lOIChvbGRkZWNsKSkKKysJeworKwkgIERFQ0xfQlVJTFRfSU5fQ0xB U1MgKG5ld2RlY2wpID0gREVDTF9CVUlMVF9JTl9DTEFTUyAob2xkZGVjbCk7CisrCSAgREVDTF9G VU5DVElPTl9DT0RFIChuZXdkZWNsKSA9IERFQ0xfRlVOQ1RJT05fQ09ERSAob2xkZGVjbCk7Cisr CSAgLyogSWYgd2UncmUga2VlcGluZyB0aGUgYnVpbHQtaW4gZGVmaW5pdGlvbiwga2VlcCB0aGUg cnRsLAorKwkgICAgIHJlZ2FyZGxlc3Mgb2YgZGVjbGFyYXRpb24gbWF0Y2hlcy4gICovCisrCSAg Q09QWV9ERUNMX1JUTCAob2xkZGVjbCwgbmV3ZGVjbCk7CisrCX0KKyAgICAgICBpZiAobmV3X2Rl ZmluZXNfZnVuY3Rpb24pCisgCS8qIElmIGRlZmluaW5nIGEgZnVuY3Rpb24gZGVjbGFyZWQgd2l0 aCBvdGhlciBsYW5ndWFnZQorIAkgICBsaW5rYWdlLCB1c2UgdGhlIHByZXZpb3VzbHkgZGVjbGFy ZWQgbGFuZ3VhZ2UgbGlua2FnZS4gICovCisgCVNFVF9ERUNMX0xBTkdVQUdFIChuZXdkZWNsLCBE RUNMX0xBTkdVQUdFIChvbGRkZWNsKSk7CisgICAgICAgZWxzZSBpZiAodHlwZXNfbWF0Y2gpCisg CXsKKy0JICAvKiBJZiByZWRlY2xhcmluZyBhIGJ1aWx0aW4gZnVuY3Rpb24sIGFuZCBub3QgYSBk ZWZpbml0aW9uLAorLQkgICAgIGl0IHN0YXlzIGJ1aWx0IGluLiAgKi8KKy0JICBpZiAoREVDTF9C VUlMVF9JTiAob2xkZGVjbCkpCistCSAgICB7CistCSAgICAgIERFQ0xfQlVJTFRfSU5fQ0xBU1Mg KG5ld2RlY2wpID0gREVDTF9CVUlMVF9JTl9DTEFTUyAob2xkZGVjbCk7CistCSAgICAgIERFQ0xf RlVOQ1RJT05fQ09ERSAobmV3ZGVjbCkgPSBERUNMX0ZVTkNUSU9OX0NPREUgKG9sZGRlY2wpOwor LQkgICAgICAvKiBJZiB3ZSdyZSBrZWVwaW5nIHRoZSBidWlsdC1pbiBkZWZpbml0aW9uLCBrZWVw IHRoZSBydGwsCistCQkgcmVnYXJkbGVzcyBvZiBkZWNsYXJhdGlvbiBtYXRjaGVzLiAgKi8KKy0J ICAgICAgQ09QWV9ERUNMX1JUTCAob2xkZGVjbCwgbmV3ZGVjbCk7CistCSAgICB9CistCisgCSAg REVDTF9SRVNVTFQgKG5ld2RlY2wpID0gREVDTF9SRVNVTFQgKG9sZGRlY2wpOworIAkgIC8qIERv bid0IGNsZWFyIG91dCB0aGUgYXJndW1lbnRzIGlmIHdlJ3JlIHJlZGVmaW5pbmcgYSBmdW5jdGlv bi4gICovCisgCSAgaWYgKERFQ0xfQVJHVU1FTlRTIChvbGRkZWNsKSkKKy0tLSBnY2MvdGVzdHN1 aXRlL2djYy5kZy9idWlsdGlucy02NS5jLmpqCTIwMDctMTAtMDIgMTE6MjM6NTEuMDAwMDAwMDAw ICswMjAwCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYnVpbHRpbnMtNjUuYwkyMDA3LTEwLTAy IDExOjI0OjEyLjAwMDAwMDAwMCArMDIwMAorQEAgLTAsMCArMSwyNSBAQAorKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KKysKKyt0eXBlZGVmIF9f U0laRV9UWVBFX18gc2l6ZV90OworK2V4dGVybiB2b2lkIF9fY2hrX2ZhaWwgKHZvaWQpOworK2V4 dGVybiBpbnQgc25wcmludGYgKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4uLik7Cisr ZXh0ZXJuIGlubGluZSBfX2F0dHJpYnV0ZV9fKChnbnVfaW5saW5lLCBhbHdheXNfaW5saW5lKSkg aW50IHNucHJpbnRmIChjaGFyICphLCBzaXplX3QgYiwgY29uc3QgY2hhciAqZm10LCAuLi4pCisr eworKyAgaWYgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoYSwgMCkgIT0gLTFVTCAmJiBfX2J1aWx0 aW5fb2JqZWN0X3NpemUgKGEsIDApIDwgYikKKysgICAgX19jaGtfZmFpbCAoKTsKKysgIHJldHVy biBfX2J1aWx0aW5fc25wcmludGYgKGEsIGIsIGZtdCwgX19idWlsdGluX3ZhX2FyZ19wYWNrICgp KTsKKyt9CisrZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIg KiwgLi4uKSBfX2FzbSAoIm15c25wcmludGYiKTsKKysKKytjaGFyIGJ1ZlsxMF07CisrCisraW50 CisrbWFpbiAodm9pZCkKKyt7CisrICBzbnByaW50ZiAoYnVmLCAxMCwgIiVkJWRcbiIsIDEwLCAx MCk7CisrICByZXR1cm4gMDsKKyt9CisrCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJteXNucHJpbnRmIiB9IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90 ICJfX2Noa19mYWlsIiB9IH0gKi8KKy0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvYnVpbHRp bjEwLkMuamoJMjAwNy0xMC0wMiAxMToxOTo0NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnY2MvdGVz dHN1aXRlL2crKy5kZy9leHQvYnVpbHRpbjEwLkMJMjAwNy0xMC0wMiAxMToyMzoyNi4wMDAwMDAw MDAgKzAyMDAKK0BAIC0wLDAgKzEsMjcgQEAKKysvLyB7IGRnLWRvIGNvbXBpbGUgfQorKy8vIHsg ZGctb3B0aW9ucyAiLU8yIiB9CisrCisrdHlwZWRlZiBfX1NJWkVfVFlQRV9fIHNpemVfdDsKKytl eHRlcm4gIkMiIHsKKytleHRlcm4gdm9pZCBfX2Noa19mYWlsICh2b2lkKTsKKytleHRlcm4gaW50 IHNucHJpbnRmIChjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCAuLi4pOworK2V4dGVybiBp bmxpbmUgX19hdHRyaWJ1dGVfXygoZ251X2lubGluZSwgYWx3YXlzX2lubGluZSkpIGludCBzbnBy aW50ZiAoY2hhciAqYSwgc2l6ZV90IGIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorK3sKKysgIGlm IChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKGEsIDApICE9IC0xVUwgJiYgX19idWlsdGluX29iamVj dF9zaXplIChhLCAwKSA8IGIpCisrICAgIF9fY2hrX2ZhaWwgKCk7CisrICByZXR1cm4gX19idWls dGluX3NucHJpbnRmIChhLCBiLCBmbXQsIF9fYnVpbHRpbl92YV9hcmdfcGFjayAoKSk7CisrfQor K2V4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4uLikg X19hc20gKCJteXNucHJpbnRmIik7CisrfQorKworK2NoYXIgYnVmWzEwXTsKKysKKytpbnQKKytt YWluICh2b2lkKQorK3sKKysgIHNucHJpbnRmIChidWYsIDEwLCAiJWQlZFxuIiwgMTAsIDEwKTsK KysgIHJldHVybiAwOworK30KKysKKysvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm15 c25wcmludGYiIH0gfQorKy8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9fY2hr X2ZhaWwiIH0gfQoKZGlmZiAtLWdpdCBhL2djYzQzLWlhNjQtbGlidW53aW5kLnBhdGNoIGIvZ2Nj NDMtaWE2NC1saWJ1bndpbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZTRmZGQ2MQotLS0gL2Rldi9udWxsCisrKyBiL2djYzQzLWlhNjQtbGlidW53aW5kLnBhdGNo CkBAIC0wLDAgKzEsNTM4IEBACisyMDA0LTExLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVk aGF0LmNvbT4KKworCSogY29uZmlnLmdjYyAoaWE2NCotKi1saW51eCopOiBJZiBuYXRpdmUgYW5k IGxpYmVsZiBpcyBpbnN0YWxsZWQsCisJdXNlIGlhNjQvdC1nbGliYy1uby1saWJ1bndpbmQgaW5z dGVhZCBvZiB0aGUgb3RoZXIgdC0qdW53aW5kKgorCWZyYWdtZW50cy4KKwkqIGNvbmZpZy9pYTY0 L3QtZ2xpYmMtbm8tbGlidW53aW5kOiBOZXcgZmlsZS4KKwkqIGNvbmZpZy9pYTY0L2NoYW5nZS1z eW12ZXIuYzogTmV3IGZpbGUuCisJKiBjb25maWcvaWE2NC91bndpbmQtaWE2NC5jOiBJZiBVU0Vf U1lNVkVSX0dMT0JBTCBhbmQgU0hBUkVELAorCWRlZmluZSBfVW53aW5kXyogdG8gX19zeW12ZXJn bG9iYWxfVW53aW5kXyouCisJKGFsaWFzKTogVW5kZWZpbmUuCisJKHN5bXZlcmdsb2JhbCk6IERl ZmluZS4gIFVzZSBpdCBvbiBfVW53aW5kXyouCisJKiBjb25maWcvaWE2NC9ta21hcC1zeW12ZXIt bXVsdGkuYXdrOiBOZXcgZmlsZS4KKwkqIGNvbmZpZy9pYTY0L2xpYmdjYy1pYTY0LW5vLWxpYnVu d2luZC52ZXI6IE5ldyBmaWxlLgorCistLS0gZ2NjL2NvbmZpZy5nY2MuamoJMjAwNC0xMC0wNCAw ODo1NTo0NC4wMDAwMDAwMDAgLTA0MDAKKysrKyBnY2MvY29uZmlnLmdjYwkyMDA0LTExLTEzIDA1 OjIzOjUwLjAwMDAwMDAwMCAtMDUwMAorQEAgLTExODUsOSArMTE4NSwxNiBAQCBpYTY0Ki0qLWZy ZWVic2QqKQorIAk7OworIGlhNjQqLSotbGludXgqKQorIAl0bV9maWxlPSIke3RtX2ZpbGV9IGRi eGVsZi5oIGVsZm9zLmggc3ZyNC5oIGxpbnV4LmggaWE2NC9zeXN2NC5oIGlhNjQvbGludXguaCIK Ky0JdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBpYTY0L3QtaWE2NCB0LWxpYnVud2luZCBpYTY0 L3QtZ2xpYmMiCistCWlmIHRlc3QgeCR3aXRoX3N5c3RlbV9saWJ1bndpbmQgIT0geHllcyA7IHRo ZW4KKy0JCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gdC1saWJ1bndpbmQtZWxmIGlhNjQvdC1n bGliYy1saWJ1bndpbmQiCisrCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gaWE2NC90LWlhNjQi CisrCWlmIHRlc3QgeCR7dGFyZ2V0fSA9IHgke2hvc3R9ICYmIHRlc3QgeCR7dGFyZ2V0fSA9IHgk e2J1aWxkfSBcCisrCSAgICYmIGdyZXAgZ2VsZl9nZXR2ZXJkZWYgL3Vzci9pbmNsdWRlL2dlbGYu aCA+IC9kZXYvbnVsbCAyPiYxIFwKKysJICAgJiYgdGVzdCAtZiAvdXNyL2xpYi9saWJlbGYuc287 IHRoZW4KKysJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gaWE2NC90LWdsaWJjLW5vLWxpYnVu d2luZCIKKysJZWxzZQorKwkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSB0LWxpYnVud2luZCBp YTY0L3QtZ2xpYmMiCisrCQlpZiB0ZXN0IHgkd2l0aF9zeXN0ZW1fbGlidW53aW5kICE9IHh5ZXMg OyB0aGVuCisrCQkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSB0LWxpYnVud2luZC1lbGYgaWE2 NC90LWdsaWJjLWxpYnVud2luZCIKKysJCWZpCisgCWZpCisgCXRhcmdldF9jcHVfZGVmYXVsdD0i TUFTS19HTlVfQVN8TUFTS19HTlVfTEQiCisgCWV4dHJhX3BhcnRzPSJjcnRiZWdpbi5vIGNydGVu ZC5vIGNydGJlZ2luUy5vIGNydGVuZFMubyBjcnRmYXN0bWF0aC5vIgorLS0tIGdjYy9jb25maWcv aWE2NC90LWdsaWJjLW5vLWxpYnVud2luZC5qagkyMDA0LTAyLTE4IDEwOjI3OjM2LjAwMDAwMDAw MCAtMDUwMAorKysrIGdjYy9jb25maWcvaWE2NC90LWdsaWJjLW5vLWxpYnVud2luZAkyMDA0LTEx LTE1IDA5OjU2OjMzLjAwMDAwMDAwMCAtMDUwMAorQEAgLTAsMCArMSwzMCBAQAorKyMgRG9uJ3Qg dXNlIHN5c3RlbSBsaWJ1bndpbmQgbGlicmFyeSBvbiBJQS02NCBHTElCQyBiYXNlZCBzeXN0ZW0s CisrIyBidXQgbWFrZSBfVW53aW5kXyogc3ltYm9scyB1bnZlcnNpb25lZCwgc28gdGhhdCBjcmVh dGVkIHByb2dyYW1zCisrIyBhcmUgdXNhYmxlIGV2ZW4gd2hlbiBsaWJnY2NfcyB1c2VzIGxpYnVu d2luZC4KKytMSUIyQURERUggKz0gJChzcmNkaXIpL2NvbmZpZy9pYTY0L2ZkZS1nbGliYy5jCisr U0hMSUJfTUFQRklMRVMgKz0gJChzcmNkaXIpL2NvbmZpZy9pYTY0L2xpYmdjYy1pYTY0LW5vLWxp YnVud2luZC52ZXIKKytTSExJQl9NS01BUCA9ICQoc3JjZGlyKS9jb25maWcvaWE2NC9ta21hcC1z eW12ZXItbXVsdGkuYXdrCisrCisrU0hMSUJfTElOSyA9ICQoR0NDX0ZPUl9UQVJHRVQpICQoTElC R0NDMl9DRkxBR1MpIC1zaGFyZWQgLW5vZGVmYXVsdGxpYnMgXAorKwktV2wsLS1zb25hbWU9JChT SExJQl9TT05BTUUpIFwKKysJLVdsLC0tdmVyc2lvbi1zY3JpcHQ9JChTSExJQl9NQVApIFwKKysJ LW8gJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50bXAgQG11bHRpbGliX2ZsYWdzQCAkKFNI TElCX09CSlMpIC1sYyAmJiBcCisrCXJtIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTElOSykg JiYgXAorKwlpZiBbIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTkFNRSkgXTsgdGhlbiBcCisr CSAgbXYgLWYgJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKSBcCisrCQkkKFNITElCX0RJUikv JChTSExJQl9TT05BTUUpLmJhY2t1cDsgXAorKwllbHNlIHRydWU7IGZpICYmIFwKKysJZ2NjIC1P MiAtbyAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnR3ZWFrIFwKKysJICAkKHNyY2Rpcikv Y29uZmlnL2lhNjQvY2hhbmdlLXN5bXZlci5jIC1sZWxmICYmIFwKKysJJChTSExJQl9ESVIpLyQo U0hMSUJfU09OQU1FKS50d2VhayAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnRtcCBcCisr CUdDQ18zLjQuMiBfR0xPQkFMXyBcCisrCV9VbndpbmRfR2V0R1IgX1Vud2luZF9SYWlzZUV4Y2Vw dGlvbiBfVW53aW5kX0dldFJlZ2lvblN0YXJ0IF9VbndpbmRfU2V0SVAgXAorKwlfVW53aW5kX0dl dElQIF9VbndpbmRfR2V0TGFuZ3VhZ2VTcGVjaWZpY0RhdGEgX1Vud2luZF9SZXN1bWUgXAorKwlf VW53aW5kX0RlbGV0ZUV4Y2VwdGlvbiBfVW53aW5kX1NldEdSIF9VbndpbmRfRm9yY2VkVW53aW5k IFwKKysJX1Vud2luZF9CYWNrdHJhY2UgX1Vud2luZF9GaW5kRW5jbG9zaW5nRnVuY3Rpb24gX1Vu d2luZF9HZXRDRkEgXAorKwlfVW53aW5kX1Jlc3VtZV9vcl9SZXRocm93IF9VbndpbmRfR2V0QlNQ ICYmIFwKKysJcm0gLWYgJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50d2VhayAmJiBcCisr CW12ICQoU0hMSUJfRElSKS8kKFNITElCX1NPTkFNRSkudG1wICQoU0hMSUJfRElSKS8kKFNITElC X1NPTkFNRSkgJiYgXAorKwkkKExOX1MpICQoU0hMSUJfU09OQU1FKSAkKFNITElCX0RJUikvJChT SExJQl9TT0xJTkspCisrCisrVEFSR0VUX0xJQkdDQzJfQ0ZMQUdTICs9IC1EVVNFX1NZTVZFUl9H TE9CQUwKKy0tLSBnY2MvY29uZmlnL2lhNjQvY2hhbmdlLXN5bXZlci5jLmpqCTIwMDQtMDItMTgg MTA6Mjc6MzYuMDAwMDAwMDAwIC0wNTAwCisrKysgZ2NjL2NvbmZpZy9pYTY0L2NoYW5nZS1zeW12 ZXIuYwkyMDA0LTExLTEzIDA1OjIzOjUwLjAwMDAwMDAwMCAtMDUwMAorQEAgLTAsMCArMSwyMTEg QEAKKysjZGVmaW5lIF9HTlVfU09VUkNFIDEKKysjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0 CisrI2luY2x1ZGUgPGVuZGlhbi5oPgorKyNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxl cnJvci5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDxmbm1hdGNoLmg+CisrI2lu Y2x1ZGUgPGdlbGYuaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN0cmluZy5o PgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysKKytpbnQKKytjb21wdXRlX3ZlcmlkeCAoY29uc3Qg Y2hhciAqbmFtZSwgRWxmICplbGYsIEVsZl9EYXRhICp2ZXJkLCBHRWxmX1NoZHIgKnZlcmRfc2hk cikKKyt7CisrICBpZiAoc3RyY21wIChuYW1lLCAiX0dMT0JBTF8iKSA9PSAwKQorKyAgICByZXR1 cm4gMTsKKysKKysgIGludCBjbnQ7CisrICBzaXplX3Qgb2Zmc2V0ID0gMDsKKysgIGZvciAoY250 ID0gdmVyZF9zaGRyLT5zaF9pbmZvOyAtLWNudCA+PSAwOyApCisrICAgIHsKKysgICAgICBHRWxm X1ZlcmRlZiBkZWZtZW07CisrICAgICAgR0VsZl9WZXJkZWYgKmRlZjsKKysgICAgICBHRWxmX1Zl cmRhdXggYXV4bWVtOworKyAgICAgIEdFbGZfVmVyZGF1eCAqYXV4OworKyAgICAgIHVuc2lnbmVk IGludCBhdXhvZmZzZXQ7CisrCisrICAgICAgLyogR2V0IHRoZSBkYXRhIGF0IHRoZSBuZXh0IG9m ZnNldC4gICovCisrICAgICAgZGVmID0gZ2VsZl9nZXR2ZXJkZWYgKHZlcmQsIG9mZnNldCwgJmRl Zm1lbSk7CisrICAgICAgaWYgKGRlZiA9PSBOVUxMKQorKwlicmVhazsKKysKKysgICAgICBhdXhv ZmZzZXQgPSBvZmZzZXQgKyBkZWYtPnZkX2F1eDsKKysgICAgICBhdXggPSBnZWxmX2dldHZlcmRh dXggKHZlcmQsIGF1eG9mZnNldCwgJmF1eG1lbSk7CisrICAgICAgaWYgKGF1eCA9PSBOVUxMKQor KwlicmVhazsKKysKKysgICAgICBpZiAoc3RyY21wIChuYW1lLCBlbGZfc3RycHRyIChlbGYsIHZl cmRfc2hkci0+c2hfbGluaywKKysJCSAgYXV4LT52ZGFfbmFtZSkpID09IDApCisrCXJldHVybiBk ZWYtPnZkX25keDsKKysKKysgICAgICAvKiBGaW5kIHRoZSBuZXh0IG9mZnNldC4gICovCisrICAg ICAgb2Zmc2V0ICs9IGRlZi0+dmRfbmV4dDsKKysgICAgfQorKworKyAgcmV0dXJuIC0xOworK30K KysKKytpbnQKKyttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisreworKyAgaWYgKGFyZ2Mg PCA0KQorKyAgICBlcnJvciAoMSwgMCwgIlVzYWdlOiBjaGFuZ2Vfc3ltdmVyIGxpYnJhcnkgZnJv bV9zeW12ZXIgdG9fc3ltdmVyIHN5bWJvbC4uLlxuRXhhbXBsZTogY2hhbmdlX3N5bXZlciBsaWJm b28uc28gRk9PXzEuMCAqZ2xvYmFsKiBiYXIgYmF6Iik7CisrCisrICBjb25zdCBjaGFyICpmbmFt ZSA9IGFyZ3ZbMV07CisrCisrICAvKiBPcGVuIHRoZSBmaWxlLiAgKi8KKysgIGludCBmZDsKKysg IGZkID0gb3BlbiAoZm5hbWUsIE9fUkRXUik7CisrICBpZiAoZmQgPT0gLTEpCisrICAgIGVycm9y ICgxLCBlcnJubywgZm5hbWUpOworKworKyAgZWxmX3ZlcnNpb24gKEVWX0NVUlJFTlQpOworKwor KyAgLyogTm93IGdldCB0aGUgRUxGIGRlc2NyaXB0b3IuICAqLworKyAgRWxmICplbGYgPSBlbGZf YmVnaW4gKGZkLCBFTEZfQ19SRUFEX01NQVAsIE5VTEwpOworKyAgaWYgKGVsZiA9PSBOVUxMIHx8 IGVsZl9raW5kIChlbGYpICE9IEVMRl9LX0VMRikKKysgICAgZXJyb3IgKDEsIDAsICJDb3VsZG4n dCBvcGVuICVzOiAlcyIsIGZuYW1lLCBlbGZfZXJybXNnICgtMSkpOworKworKyAgc2l6ZV90IHNo c3RybmR4OworKyAgLyogR2V0IHRoZSBzZWN0aW9uIGhlYWRlciBzdHJpbmcgdGFibGUgaW5kZXgu ICAqLworKyAgaWYgKGVsZl9nZXRzaHN0cm5keCAoZWxmLCAmc2hzdHJuZHgpIDwgMCkKKysgICAg ZXJyb3IgKDEsIDAsICJjYW5ub3QgZ2V0IHNoc3RybmR4IGZyb20gJXMiLCBmbmFtZSk7CisrCisr ICBHRWxmX0VoZHIgZWhkcl9tZW07CisrICBHRWxmX0VoZHIgKmVoZHI7CisrCisrICAvKiBXZSBu ZWVkIHRoZSBFTEYgaGVhZGVyIGluIGEgZmV3IHBsYWNlcy4gICovCisrICBlaGRyID0gZ2VsZl9n ZXRlaGRyIChlbGYsICZlaGRyX21lbSk7CisrICBpZiAoZWhkciA9PSBOVUxMKQorKyAgICBlcnJv ciAoMSwgMCwgImNvdWxkbid0IGdldCBFTEYgaGVhZGVycyAlczogJXMiLCBmbmFtZSwgZWxmX2Vy cm1zZyAoLTEpKTsKKysKKysgIEVsZl9TY24gKnNjbiA9IE5VTEw7CisrICBHRWxmX1NoZHIgc2hk cl9tZW0sIHZlcmRfc2hkciwgdmVyX3NoZHIsIGR5bnN5bV9zaGRyOworKyAgRWxmX0RhdGEgKnZl ciA9IE5VTEwsICp2ZXJkID0gTlVMTCwgKmR5bnN5bSA9IE5VTEw7CisrCisrICB3aGlsZSAoKHNj biA9IGVsZl9uZXh0c2NuIChlbGYsIHNjbikpICE9IE5VTEwpCisrICAgIHsKKysgICAgICBHRWxm X1NoZHIgKnNoZHIgPSBnZWxmX2dldHNoZHIgKHNjbiwgJnNoZHJfbWVtKTsKKysKKysgICAgICBp ZiAoc2hkciA9PSBOVUxMKQorKwllcnJvciAoMSwgMCwgImNvdWxkbid0IGdldCBzaGRyIGZyb20g JXMiLCBmbmFtZSk7CisrCisrICAgICAgaWYgKChzaGRyLT5zaF9mbGFncyAmIFNIRl9BTExPQykg IT0gMCkKKysJeworKwkgIGNvbnN0IGNoYXIgKm5hbWUgPSBlbGZfc3RycHRyIChlbGYsIHNoc3Ry bmR4LCBzaGRyLT5zaF9uYW1lKTsKKysJICBFbGZfRGF0YSAqKnA7CisrCisrCSAgaWYgKHN0cmNt cCAobmFtZSwgIi5nbnUudmVyc2lvbiIpID09IDApCisrCSAgICB7CisrCSAgICAgIHAgPSAmdmVy OworKwkgICAgICB2ZXJfc2hkciA9ICpzaGRyOworKwkgICAgfQorKwkgIGVsc2UgaWYgKHN0cmNt cCAobmFtZSwgIi5nbnUudmVyc2lvbl9kIikgPT0gMCkKKysJICAgIHsKKysJICAgICAgcCA9ICZ2 ZXJkOworKwkgICAgICB2ZXJkX3NoZHIgPSAqc2hkcjsKKysJICAgIH0KKysJICBlbHNlIGlmIChz dHJjbXAgKG5hbWUsICIuZHluc3ltIikgPT0gMCkKKysJICAgIHsKKysJICAgICAgcCA9ICZkeW5z eW07CisrCSAgICAgIGR5bnN5bV9zaGRyID0gKnNoZHI7CisrCSAgICB9CisrCSAgZWxzZQorKwkg ICAgY29udGludWU7CisrCisrCSAgaWYgKCpwICE9IE5VTEwpCisrCSAgICBlcnJvciAoMSwgMCwg IlR3byAlcyBzZWN0aW9ucyBpbiAlcyIsIG5hbWUsIGZuYW1lKTsKKysJICAqcCA9IGVsZl9nZXRk YXRhIChzY24sIE5VTEwpOworKwkgIGlmICgqcCA9PSBOVUxMIHx8IGVsZl9nZXRkYXRhIChzY24s ICpwKSAhPSBOVUxMKQorKwkgICAgZXJyb3IgKDEsIDAsICJObyBkYXRhIG9yIG5vbi1jb250aWd1 b3VzIGRhdGEgaW4gJXMgc2VjdGlvbiBpbiAlcyIsCisrCQkgICBuYW1lLCBmbmFtZSk7CisrCX0K KysgICAgfQorKworKyAgaWYgKHZlciA9PSBOVUxMIHx8IHZlcmQgPT0gTlVMTCB8fCBkeW5zeW0g PT0gTlVMTCkKKysgICAgZXJyb3IgKDEsIDAsICJDb3VsZG4ndCBmaW5kIG9uZSBvZiB0aGUgbmVl ZGVkIHNlY3Rpb25zIGluICVzIiwgZm5hbWUpOworKworKyAgaW50IGZyb21faWR4ID0gY29tcHV0 ZV92ZXJpZHggKGFyZ3ZbMl0sIGVsZiwgdmVyZCwgJnZlcmRfc2hkcik7CisrICBpZiAoZnJvbV9p ZHggPT0gLTEpCisrICAgIGVycm9yICgxLCAwLCAiQ291bGQgbm90IGZpbmQgc3ltYm9sIHZlcnNp b24gJXMgaW4gJXMiLCBhcmd2WzJdLCBmbmFtZSk7CisrCisrICBpbnQgdG9faWR4ID0gY29tcHV0 ZV92ZXJpZHggKGFyZ3ZbM10sIGVsZiwgdmVyZCwgJnZlcmRfc2hkcik7CisrICBpZiAodG9faWR4 ID09IC0xKQorKyAgICBlcnJvciAoMSwgMCwgIkNvdWxkIG5vdCBmaW5kIHN5bWJvbCB2ZXJzaW9u ICVzIGluICVzIiwgYXJndlszXSwgZm5hbWUpOworKworKyAgaWYgKGR5bnN5bV9zaGRyLnNoX2Vu dHNpemUgIT0gZ2VsZl9mc2l6ZSAoZWxmLCBFTEZfVF9TWU0sIDEsIGVoZHItPmVfdmVyc2lvbikK KysgICAgICB8fCBkeW5zeW1fc2hkci5zaF9zaXplICUgZHluc3ltX3NoZHIuc2hfZW50c2l6ZQor KyAgICAgIHx8IHZlcl9zaGRyLnNoX2VudHNpemUgIT0gMgorKyAgICAgIHx8ICh2ZXJfc2hkci5z aF9zaXplICYgMSkKKysgICAgICB8fCBkeW5zeW1fc2hkci5zaF9zaXplIC8gZHluc3ltX3NoZHIu c2hfZW50c2l6ZSAhPSB2ZXJfc2hkci5zaF9zaXplIC8gMikKKysgICAgZXJyb3IgKDEsIDAsICJV bmV4cGVjdGVkIHNoX3NpemUgb3Igc2hfZW50c2l6ZSBpbiAlcyIsIGZuYW1lKTsKKysKKysgIHNp emVfdCBuZW50cmllcyA9IHZlcl9zaGRyLnNoX3NpemUgLyAyOworKyAgc2l6ZV90IGNudDsKKysg IEdFbGZfVmVyc3ltIGFycmF5W25lbnRyaWVzXTsKKysgIGZvciAoY250ID0gMDsgY250IDwgbmVu dHJpZXM7ICsrY250KQorKyAgICB7CisrICAgICAgR0VsZl9WZXJzeW0gdnN5bW1lbTsKKysgICAg ICBHRWxmX1ZlcnN5bSAqdnN5bTsKKysKKysgICAgICB2c3ltID0gZ2VsZl9nZXR2ZXJzeW0gKHZl ciwgY250LCAmdnN5bW1lbSk7CisrICAgICAgaWYgKHZzeW0gPT0gTlVMTCkKKysJZXJyb3IgKDEs IDAsICJnZWx0X2dldHZlcnN5bSBmYWlsZWQgaW4gJXM6ICVzIiwgZm5hbWUsIGVsZl9lcnJtc2cg KC0xKSk7CisrCisrICAgICAgYXJyYXlbY250XSA9ICp2c3ltOworKyAgICAgIGlmICgqdnN5bSAh PSBmcm9tX2lkeCkKKysJY29udGludWU7CisrCisrICAgICAgR0VsZl9TeW0gc3ltX21lbTsKKysg ICAgICBHRWxmX1N5bSAqc3ltOworKyAgICAgIHN5bSA9IGdlbGZfZ2V0c3ltIChkeW5zeW0sIGNu dCwgJnN5bV9tZW0pOworKyAgICAgIGlmIChzeW0gPT0gTlVMTCkKKysJZXJyb3IgKDEsIDAsICJn ZWx0X2dldHN5bSBmYWlsZWQgaW4gJXM6ICVzIiwgZm5hbWUsIGVsZl9lcnJtc2cgKC0xKSk7Cisr CisrICAgICAgY29uc3QgY2hhciAqbmFtZSA9IGVsZl9zdHJwdHIgKGVsZiwgZHluc3ltX3NoZHIu c2hfbGluaywgc3ltLT5zdF9uYW1lKTsKKysKKysgICAgICBpbnQgYXJnbjsKKysgICAgICBmb3Ig KGFyZ24gPSA0OyBhcmduIDwgYXJnYzsgKythcmduKQorKwlpZiAoZm5tYXRjaCAoYXJndlthcmdu XSwgbmFtZSwgMCkgPT0gMCkKKysJICB7CisrCSAgICBhcnJheVtjbnRdID0gdG9faWR4OworKwkg ICAgYnJlYWs7CisrCSAgfQorKyAgICB9CisrCisrICBpZiAoc2l6ZW9mIChhcnJheVswXSkgIT0g MikKKysgICAgYWJvcnQgKCk7CisrCisrI2lmIF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJ QU4KKysgIGlmIChlaGRyLT5lX2lkZW50W0VJX0RBVEFdID09IEVMRkRBVEEyTFNCKQorKyAgICA7 CisrICBlbHNlIGlmIChlaGRyLT5lX2lkZW50W0VJX0RBVEFdID09IEVMRkRBVEEyTVNCKQorKyNl bGlmIF9fQllURV9PUkRFUiA9PSBfX0JJR19FTkRJQU4KKysgIGlmIChlaGRyLT5lX2lkZW50W0VJ X0RBVEFdID09IEVMRkRBVEEyTVNCKQorKyAgICA7CisrICBlbHNlIGlmIChlaGRyLT5lX2lkZW50 W0VJX0RBVEFdID09IEVMRkRBVEEyTFNCKQorKyNlbHNlCisrIyBlcnJvciBVbnN1cHBvcnRlZCBl bmRpYW5pdHkKKysjZW5kaWYKKysgICAgeworKyAgICAgIGZvciAoY250ID0gMDsgY250IDwgbmVu dHJpZXM7ICsrY250KQorKwlhcnJheVtjbnRdID0gKChhcnJheVtjbnRdICYgMHhmZikgPDwgOCkg fCAoKGFycmF5W2NudF0gJiAweGZmMDApID4+IDgpOworKyAgICB9CisrICBlbHNlCisrICAgIGVy cm9yICgxLCAwLCAiVW5rbm93biBFSV9EQVRBICVkIGluICVzIiwgZWhkci0+ZV9pZGVudFtFSV9E QVRBXSwgZm5hbWUpOworKworKyAgaWYgKGVsZl9lbmQgKGVsZikgIT0gMCkKKysgICAgZXJyb3Ig KDEsIDAsICJjb3VsZG4ndCBjbG9zZSAlczogJXMiLCBmbmFtZSwgZWxmX2Vycm1zZyAoLTEpKTsK KysKKysgIGlmIChsc2VlayAoZmQsIHZlcl9zaGRyLnNoX29mZnNldCwgU0VFS19TRVQpICE9IChv ZmZfdCkgdmVyX3NoZHIuc2hfb2Zmc2V0KQorKyAgICBlcnJvciAoMSwgMCwgImZhaWxlZCB0byBz ZWVrIHRvICV6ZCBpbiAlcyIsIChzaXplX3QpIHZlcl9zaGRyLnNoX29mZnNldCwKKysJICAgZm5h bWUpOworKworKyAgaWYgKHdyaXRlIChmZCwgYXJyYXksIDIgKiBuZW50cmllcykgIT0gKHNzaXpl X3QpICgyICogbmVudHJpZXMpKQorKyAgICBlcnJvciAoMSwgMCwgImZhaWxlZCB0byB3cml0ZSAu Z251LnZlcnNpb24gc2VjdGlvbiBpbnRvICVzIiwgZm5hbWUpOworKworKyAgY2xvc2UgKGZkKTsK KysgIHJldHVybiAwOworK30KKy0tLSBnY2MvY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYy5qagky MDA0LTEwLTA0IDA4OjU1OjU3LjAwMDAwMDAwMCAtMDQwMAorKysrIGdjYy9jb25maWcvaWE2NC91 bndpbmQtaWE2NC5jCTIwMDQtMTEtMTUgMDk6MDc6NDUuMDAwMDAwMDAwIC0wNTAwCitAQCAtNTEs NiArNTEsNTEgQEAKKyAjZGVmaW5lIFVOV19GTEFHX1VIQU5ETEVSKHgpCSgoeCkgJiAweDAwMDAw MDAyMDAwMDAwMDBMKQorICNkZWZpbmUgVU5XX0xFTkdUSCh4KQkJKCh4KSAmIDB4MDAwMDAwMDBm ZmZmZmZmZkwpCisgCisrI2lmIGRlZmluZWQgKFVTRV9TWU1WRVJfR0xPQkFMKSAmJiBkZWZpbmVk IChTSEFSRUQpCisrZXh0ZXJuIF9VbndpbmRfUmVhc29uX0NvZGUgX19zeW12ZXJnbG9iYWxfVW53 aW5kX0JhY2t0cmFjZQorKyAgKF9VbndpbmRfVHJhY2VfRm4sIHZvaWQgKik7CisrZXh0ZXJuIHZv aWQgX19zeW12ZXJnbG9iYWxfVW53aW5kX0RlbGV0ZUV4Y2VwdGlvbgorKyAgKHN0cnVjdCBfVW53 aW5kX0V4Y2VwdGlvbiAqKTsKKytleHRlcm4gdm9pZCAqIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9G aW5kRW5jbG9zaW5nRnVuY3Rpb24gKHZvaWQgKik7CisrZXh0ZXJuIF9VbndpbmRfUmVhc29uX0Nv ZGUgX19zeW12ZXJnbG9iYWxfVW53aW5kX0ZvcmNlZFVud2luZAorKyAgKHN0cnVjdCBfVW53aW5k X0V4Y2VwdGlvbiAqLCBfVW53aW5kX1N0b3BfRm4sIHZvaWQgKik7CisrZXh0ZXJuIF9VbndpbmRf V29yZCBfX3N5bXZlcmdsb2JhbF9VbndpbmRfR2V0Q0ZBCisrICAoc3RydWN0IF9VbndpbmRfQ29u dGV4dCAqKTsKKytleHRlcm4gX1Vud2luZF9Xb3JkIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9HZXRC U1AKKysgIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICopOworK2V4dGVybiBfVW53aW5kX1dvcmQg X19zeW12ZXJnbG9iYWxfVW53aW5kX0dldEdSCisrICAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAq LCBpbnQgKTsKKytleHRlcm4gX1Vud2luZF9QdHIgX19zeW12ZXJnbG9iYWxfVW53aW5kX0dldElQ IChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICopOworK2V4dGVybiB2b2lkICpfX3N5bXZlcmdsb2Jh bF9VbndpbmRfR2V0TGFuZ3VhZ2VTcGVjaWZpY0RhdGEKKysgIChzdHJ1Y3QgX1Vud2luZF9Db250 ZXh0ICopOworK2V4dGVybiBfVW53aW5kX1B0ciBfX3N5bXZlcmdsb2JhbF9VbndpbmRfR2V0UmVn aW9uU3RhcnQKKysgIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICopOworK2V4dGVybiBfVW53aW5k X1JlYXNvbl9Db2RlIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9SYWlzZUV4Y2VwdGlvbgorKyAgKHN0 cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAqKTsKKytleHRlcm4gdm9pZCBfX3N5bXZlcmdsb2JhbF9V bndpbmRfUmVzdW1lIChzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24gKik7CisrZXh0ZXJuIF9Vbndp bmRfUmVhc29uX0NvZGUgX19zeW12ZXJnbG9iYWxfVW53aW5kX1Jlc3VtZV9vcl9SZXRocm93Cisr ICAgKHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAqKTsKKytleHRlcm4gdm9pZCBfX3N5bXZlcmds b2JhbF9VbndpbmRfU2V0R1IKKysgIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICosIGludCwgX1Vu d2luZF9Xb3JkKTsKKytleHRlcm4gdm9pZCBfX3N5bXZlcmdsb2JhbF9VbndpbmRfU2V0SVAKKysg IChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICosIF9VbndpbmRfUHRyKTsKKysjZGVmaW5lIF9Vbndp bmRfQmFja3RyYWNlIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9CYWNrdHJhY2UKKysjZGVmaW5lIF9V bndpbmRfRGVsZXRlRXhjZXB0aW9uIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9EZWxldGVFeGNlcHRp b24KKysjZGVmaW5lIF9VbndpbmRfRmluZEVuY2xvc2luZ0Z1bmN0aW9uIF9fc3ltdmVyZ2xvYmFs X1Vud2luZF9GaW5kRW5jbG9zaW5nRnVuY3Rpb24KKysjZGVmaW5lIF9VbndpbmRfRm9yY2VkVW53 aW5kIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9Gb3JjZWRVbndpbmQKKysjZGVmaW5lIF9VbndpbmRf R2V0QlNQIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9HZXRCU1AKKysjZGVmaW5lIF9VbndpbmRfR2V0 Q0ZBIF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9HZXRDRkEKKysjZGVmaW5lIF9VbndpbmRfR2V0R1Ig X19zeW12ZXJnbG9iYWxfVW53aW5kX0dldEdSCisrI2RlZmluZSBfVW53aW5kX0dldElQIF9fc3lt dmVyZ2xvYmFsX1Vud2luZF9HZXRJUAorKyNkZWZpbmUgX1Vud2luZF9HZXRMYW5ndWFnZVNwZWNp ZmljRGF0YSBfX3N5bXZlcmdsb2JhbF9VbndpbmRfR2V0TGFuZ3VhZ2VTcGVjaWZpY0RhdGEKKysj ZGVmaW5lIF9VbndpbmRfR2V0UmVnaW9uU3RhcnQgX19zeW12ZXJnbG9iYWxfVW53aW5kX0dldFJl Z2lvblN0YXJ0CisrI2RlZmluZSBfVW53aW5kX1JhaXNlRXhjZXB0aW9uIF9fc3ltdmVyZ2xvYmFs X1Vud2luZF9SYWlzZUV4Y2VwdGlvbgorKyNkZWZpbmUgX1Vud2luZF9SZXN1bWUgX19zeW12ZXJn bG9iYWxfVW53aW5kX1Jlc3VtZQorKyNkZWZpbmUgX1Vud2luZF9SZXN1bWVfb3JfUmV0aHJvdyBf X3N5bXZlcmdsb2JhbF9VbndpbmRfUmVzdW1lX29yX1JldGhyb3cKKysjZGVmaW5lIF9VbndpbmRf U2V0R1IgX19zeW12ZXJnbG9iYWxfVW53aW5kX1NldEdSCisrI2RlZmluZSBfVW53aW5kX1NldElQ IF9fc3ltdmVyZ2xvYmFsX1Vud2luZF9TZXRJUAorKyNlbmRpZgorKworIGVudW0gdW53X2FwcGxp Y2F0aW9uX3JlZ2lzdGVyCisgeworICAgVU5XX0FSX0JTUCwKK0BAIC0yNDAyLDQgKzI0NDcsNDQg QEAgYWxpYXMgKF9VbndpbmRfU2V0R1IpOworIGFsaWFzIChfVW53aW5kX1NldElQKTsKKyAjZW5k aWYKKyAKKysjaWYgZGVmaW5lZCAoVVNFX1NZTVZFUl9HTE9CQUwpICYmIGRlZmluZWQgKFNIQVJF RCkKKysjdW5kZWYgYWxpYXMKKysjZGVmaW5lIHN5bXZlcmdsb2JhbChuYW1lLCB2ZXJzaW9uKSBc CisrX190eXBlb2YgKF9fc3ltdmVyZ2xvYmFsIyNuYW1lKSBfX3N5bXZlcmxvY2FsIyNuYW1lCQlc CisrICBfX2F0dHJpYnV0ZV9fICgoYWxpYXMgKCJfX3N5bXZlcmdsb2JhbCIgI25hbWUpKSk7CQlc CisrX19hc21fXyAoIi5zeW12ZXIgX19zeW12ZXJnbG9iYWwiICNuYW1lIiwiICNuYW1lICJAQEdD Q18zLjQuMiIpO1wKKytfX2FzbV9fICgiLnN5bXZlciBfX3N5bXZlcmxvY2FsIiAjbmFtZSIsIiAj bmFtZSAiQCIgI3ZlcnNpb24pCisrCisrI3VuZGVmIF9VbndpbmRfQmFja3RyYWNlCisrI3VuZGVm IF9VbndpbmRfRGVsZXRlRXhjZXB0aW9uCisrI3VuZGVmIF9VbndpbmRfRmluZEVuY2xvc2luZ0Z1 bmN0aW9uCisrI3VuZGVmIF9VbndpbmRfRm9yY2VkVW53aW5kCisrI3VuZGVmIF9VbndpbmRfR2V0 QlNQCisrI3VuZGVmIF9VbndpbmRfR2V0Q0ZBCisrI3VuZGVmIF9VbndpbmRfR2V0R1IKKysjdW5k ZWYgX1Vud2luZF9HZXRJUAorKyN1bmRlZiBfVW53aW5kX0dldExhbmd1YWdlU3BlY2lmaWNEYXRh CisrI3VuZGVmIF9VbndpbmRfR2V0UmVnaW9uU3RhcnQKKysjdW5kZWYgX1Vud2luZF9SYWlzZUV4 Y2VwdGlvbgorKyN1bmRlZiBfVW53aW5kX1Jlc3VtZQorKyN1bmRlZiBfVW53aW5kX1Jlc3VtZV9v cl9SZXRocm93CisrI3VuZGVmIF9VbndpbmRfU2V0R1IKKysjdW5kZWYgX1Vud2luZF9TZXRJUAor K3N5bXZlcmdsb2JhbCAoX1Vud2luZF9CYWNrdHJhY2UsIEdDQ18zLjMpOworK3N5bXZlcmdsb2Jh bCAoX1Vud2luZF9EZWxldGVFeGNlcHRpb24sIEdDQ18zLjApOworK3N5bXZlcmdsb2JhbCAoX1Vu d2luZF9GaW5kRW5jbG9zaW5nRnVuY3Rpb24sIEdDQ18zLjMpOworK3N5bXZlcmdsb2JhbCAoX1Vu d2luZF9Gb3JjZWRVbndpbmQsIEdDQ18zLjApOworK3N5bXZlcmdsb2JhbCAoX1Vud2luZF9HZXRC U1AsIEdDQ18zLjMuMik7Cisrc3ltdmVyZ2xvYmFsIChfVW53aW5kX0dldENGQSwgR0NDXzMuMyk7 Cisrc3ltdmVyZ2xvYmFsIChfVW53aW5kX0dldEdSLCBHQ0NfMy4wKTsKKytzeW12ZXJnbG9iYWwg KF9VbndpbmRfR2V0SVAsIEdDQ18zLjApOworK3N5bXZlcmdsb2JhbCAoX1Vud2luZF9HZXRMYW5n dWFnZVNwZWNpZmljRGF0YSwgR0NDXzMuMCk7Cisrc3ltdmVyZ2xvYmFsIChfVW53aW5kX0dldFJl Z2lvblN0YXJ0LCBHQ0NfMy4wKTsKKytzeW12ZXJnbG9iYWwgKF9VbndpbmRfUmFpc2VFeGNlcHRp b24sIEdDQ18zLjApOworK3N5bXZlcmdsb2JhbCAoX1Vud2luZF9SZXN1bWUsIEdDQ18zLjApOwor K3N5bXZlcmdsb2JhbCAoX1Vud2luZF9SZXN1bWVfb3JfUmV0aHJvdywgR0NDXzMuMyk7Cisrc3lt dmVyZ2xvYmFsIChfVW53aW5kX1NldEdSLCBHQ0NfMy4wKTsKKytzeW12ZXJnbG9iYWwgKF9Vbndp bmRfU2V0SVAsIEdDQ18zLjApOworKyNlbmRpZgorKworICNlbmRpZgorLS0tIGdjYy9jb25maWcv aWE2NC9ta21hcC1zeW12ZXItbXVsdGkuYXdrLmpqCTIwMDQtMDItMTggMTA6Mjc6MzYuMDAwMDAw MDAwIC0wNTAwCisrKysgZ2NjL2NvbmZpZy9pYTY0L21rbWFwLXN5bXZlci1tdWx0aS5hd2sJMjAw NC0xMS0xNSAwOTo0Njo1MC4wMDAwMDAwMDAgLTA1MDAKK0BAIC0wLDAgKzEsMTMzIEBACisrIyBH ZW5lcmF0ZSBhbiBFTEYgc3ltYm9sIHZlcnNpb24gbWFwIGEtbGEgU29sYXJpcyBhbmQgR05VIGxk LgorKyMJQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBIZW5kZXJzb24gPHJ0aEBjeWdudXMuY29tPgor KyMKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKysjCisrIyBHQ0MgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgorKyMg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUKKysjIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyCisrIyB2ZXJzaW9uLgorKyMKKysjIEdDQyBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9V VAorKyMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Yg TUVSQ0hBTlRBQklMSVRZCisrIyBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljCisrIyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlO Ry4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysjIFNvZnR3YXJlIEZvdW5kYXRpb24sIDUx IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKKysjIDAyMTEwLTEzMDEs IFVTQS4KKysKKytCRUdJTiB7CisrICBzdGF0ZSA9ICJubSI7CisrICBzYXdzeW1ib2wgPSAwOwor K30KKysKKysjIFJlbW92ZSBjb21tZW50IGFuZCBibGFuayBsaW5lcy4KKysvXiAqIy8gfHwgL14g KiQvIHsKKysgIG5leHQ7CisrfQorKworKyMgV2UgYmVnaW4gd2l0aCBubSBpbnB1dC4gIENvbGxl Y3QgdGhlIHNldCBvZiBzeW1ib2xzIHRoYXQgYXJlIHByZXNlbnQKKysjIHNvIHRoYXQgd2UgY2Fu IG5vdCBlbWl0IHRoZW0gaW50byB0aGUgZmluYWwgdmVyc2lvbiBzY3JpcHQgLS0gU29sYXJpcwor KyMgY29tcGxhaW5zIGF0IHVzIGlmIHdlIGRvLgorKworK3N0YXRlID09ICJubSIgJiYgL14lJS8g eworKyAgc3RhdGUgPSAidmVyIjsKKysgIG5leHQ7CisrfQorKworK3N0YXRlID09ICJubSIgJiYg KCQxID09ICJVIiB8fCAkMiA9PSAiVSIpIHsKKysgIG5leHQ7CisrfQorKworK3N0YXRlID09ICJu bSIgJiYgTkYgPT0gMyB7CisrICBpZiAoJDMgfiAvXlteQF0qQEdDQ19bMC05Ll0qJC8pIHsKKysg ICAgZGVmWyQzXSA9IDEKKysgICAgdGw9JDMKKysgICAgc3ViKC9eLipALywiIix0bCkKKysgICAg dmVyWyQzXSA9IHRsCisrICB9IGVsc2UgeworKyAgICBzdWIoL0BAP0dDQ19bMC05Ll0qJC8sIiIs JDMpCisrICAgIGRlZlskM10gPSAxOworKyAgfQorKyAgc2F3c3ltYm9sID0gMTsKKysgIG5leHQ7 CisrfQorKworK3N0YXRlID09ICJubSIgeworKyAgbmV4dDsKKyt9CisrCisrIyBOb3cgd2UgcHJv Y2VzcyBhIHNpbXBsaWZpZWQgdmFyaWFudCBvZiB0aGUgU29sYXJpcyBzeW1ib2wgdmVyc2lvbgor KyMgc2NyaXB0LiAgV2UgaGF2ZSBvbmUgc3ltYm9sIHBlciBsaW5lLCBubyBzZW1pY29sb25zLCBz aW1wbGUgbWFya2VycworKyMgZm9yIGJlZ2lubmluZyBhbmQgZW5kaW5nIGVhY2ggc2VjdGlvbiwg YW5kICVpbmhlcml0IG1hcmtlcnMgZm9yCisrIyBkZXNjcmliaW5nIHZlcnNpb24gaW5oZXJpdGVu Y2UuICBBIHN5bWJvbCBtYXkgYXBwZWFyIGluIG1vcmUgdGhhbgorKyMgb25lIHN5bWJvbCB2ZXJz aW9uLCBhbmQgdGhlIGxhc3Qgc2VlbiB0YWtlcyBlZmZlY3QuCisrCisrTkYgPT0gMyAmJiAkMSA9 PSAiJWluaGVyaXQiIHsKKysgIGluaGVyaXRbJDJdID0gJDM7CisrICBuZXh0OworK30KKysKKytO RiA9PSAyICYmICQyID09ICJ7IiB7CisrICBsaWJzWyQxXSA9IDE7CisrICB0aGlzbGliID0gJDE7 CisrICBuZXh0OworK30KKysKKyskMSA9PSAifSIgeworKyAgdGhpc2xpYiA9ICIiOworKyAgbmV4 dDsKKyt9CisrCisreworKyAgdmVyWyQxXSA9IHRoaXNsaWI7CisrICBuZXh0OworK30KKysKKytF TkQgeworKyAgaWYgKCFzYXdzeW1ib2wpCisrICAgIHsKKysgICAgICBwcmludCAiTm8gc3ltYm9s cyBzZWVuIC0tIGJyb2tlbiBvciBtaXMtaW5zdGFsbGVkIG5tPyIgfCAiY2F0IDE+JjIiOworKyAg ICAgIGV4aXQgMTsKKysgICAgfQorKyAgZm9yIChsIGluIGxpYnMpCisrICAgIG91dHB1dChsKTsK Kyt9CisrCisrZnVuY3Rpb24gb3V0cHV0KGxpYikgeworKyAgaWYgKGRvbmVbbGliXSkKKysgICAg cmV0dXJuOworKyAgZG9uZVtsaWJdID0gMTsKKysgIGlmIChpbmhlcml0W2xpYl0pCisrICAgIG91 dHB1dChpbmhlcml0W2xpYl0pOworKworKyAgZW1wdHk9MQorKyAgZm9yIChzeW0gaW4gdmVyKQor KyAgICBpZiAoKHZlcltzeW1dID09IGxpYikgJiYgKHN5bSBpbiBkZWYpKQorKyAgICAgIHsKKysJ aWYgKGVtcHR5KQorKwkgIHsKKysJICAgIHByaW50ZigiJXMge1xuIiwgbGliKTsKKysJICAgIHBy aW50ZigiICBnbG9iYWw6XG4iKTsKKysJICAgIGVtcHR5ID0gMDsKKysJICB9CisrCXN5bXAgPSBz eW07CisrCXN1YigvQEdDQ19bMC05Ll0qJC8sIiIsc3ltcCk7CisrCXByaW50ZigiXHQlcztcbiIs IHN5bXApOworKwlpZiAoZG90c3ltcykKKysJICBwcmludGYoIlx0LiVzO1xuIiwgc3ltcCk7Cisr ICAgICAgfQorKworKyAgaWYgKGVtcHR5KQorKyAgICB7CisrICAgICAgZm9yIChsIGluIGxpYnMp CisrCWlmIChpbmhlcml0W2xdID09IGxpYikKKysJICBpbmhlcml0W2xdID0gaW5oZXJpdFtsaWJd OworKyAgICB9CisrICBlbHNlIGlmIChpbmhlcml0W2xpYl0pCisrICAgIHByaW50ZigifSAlcztc biIsIGluaGVyaXRbbGliXSk7CisrICBlbHNlCisrICAgIHByaW50ZiAoIlxuICBsb2NhbDpcblx0 Kjtcbn07XG4iKTsKKyt9CistLS0gZ2NjL2NvbmZpZy9pYTY0L2xpYmdjYy1pYTY0LW5vLWxpYnVu d2luZC52ZXIuamoJMjAwNC0wMi0xOCAxMDoyNzozNi4wMDAwMDAwMDAgLTA1MDAKKysrKyBnY2Mv Y29uZmlnL2lhNjQvbGliZ2NjLWlhNjQtbm8tbGlidW53aW5kLnZlcgkyMDA0LTExLTE1IDA5OjE5 OjU2LjAwMDAwMDAwMCAtMDUwMAorQEAgLTAsMCArMSwxNyBAQAorK0dDQ18zLjQuMiB7CisrICBf VW53aW5kX0dldEdSCisrICBfVW53aW5kX1JhaXNlRXhjZXB0aW9uCisrICBfVW53aW5kX0dldFJl Z2lvblN0YXJ0CisrICBfVW53aW5kX1NldElQCisrICBfVW53aW5kX0dldElQCisrICBfVW53aW5k X0dldExhbmd1YWdlU3BlY2lmaWNEYXRhCisrICBfVW53aW5kX1Jlc3VtZQorKyAgX1Vud2luZF9E ZWxldGVFeGNlcHRpb24KKysgIF9VbndpbmRfU2V0R1IKKysgIF9VbndpbmRfRm9yY2VkVW53aW5k CisrICBfVW53aW5kX0JhY2t0cmFjZQorKyAgX1Vud2luZF9GaW5kRW5jbG9zaW5nRnVuY3Rpb24K KysgIF9VbndpbmRfR2V0Q0ZBCisrICBfVW53aW5kX1Jlc3VtZV9vcl9SZXRocm93CisrICBfVW53 aW5kX0dldEJTUAorK30KCmRpZmYgLS1naXQgYS9nY2M0My1qYXZhLW5vbXVsdGkucGF0Y2ggYi9n Y2M0My1qYXZhLW5vbXVsdGkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZjA3ZWFkOAotLS0gL2Rldi9udWxsCisrKyBiL2djYzQzLWphdmEtbm9tdWx0aS5wYXRjaApA QCAtMCwwICsxLDQ0IEBACistLS0gbGliamF2YS9jb25maWd1cmUuYWMuamoJMjAwNy0xMi0wNyAx Nzo1NTo1MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBsaWJqYXZhL2NvbmZpZ3VyZS5hYwkyMDA3LTEy LTA3IDE4OjM2OjU2LjAwMDAwMDAwMCArMDEwMAorQEAgLTgyLDYgKzgyLDEzIEBAIEFDX0FSR19F TkFCTEUoamF2YS1tYWludGFpbmVyLW1vZGUsCisgCVthbGxvdyByZWJ1aWxkaW5nIG9mIC5jbGFz cyBhbmQgLmggZmlsZXNdKSkKKyBBTV9DT05ESVRJT05BTChKQVZBX01BSU5UQUlORVJfTU9ERSwg dGVzdCAiJGVuYWJsZV9qYXZhX21haW50YWluZXJfbW9kZSIgPSB5ZXMpCisgCisrQUNfQVJHX0VO QUJMRShsaWJqYXZhLW11bHRpbGliLAorKwlBU19IRUxQX1NUUklORyhbLS1lbmFibGUtbGliamF2 YS1tdWx0aWxpYl0sIFtidWlsZCBsaWJqYXZhIGFzIG11bHRpbGliXSkpCisraWYgdGVzdCAiJGVu YWJsZV9saWJqYXZhX211bHRpbGliIiA9IG5vOyB0aGVuCisrICBtdWx0aWxpYj1ubworKyAgYWNf Y29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAtLWRpc2FibGUtbXVsdGlsaWIiCisr ZmkKKysKKyAjIEl0IG1heSBub3QgYmUgc2FmZSB0byBydW4gbGlua2luZyB0ZXN0cyBpbiBBQ19Q Uk9HX0NDL0FDX1BST0dfQ1hYLgorIEdDQ19OT19FWEVDVVRBQkxFUworIAorLS0tIGxpYmphdmEv Y29uZmlndXJlLmpqCTIwMDctMTItMDcgMTc6NTU6NTAuMDAwMDAwMDAwICswMTAwCisrKysgbGli amF2YS9jb25maWd1cmUJMjAwNy0xMi0wNyAxODozOTo1OC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0x MDE4LDYgKzEwMTgsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgIC0tZW5hYmxlLWdjb25mLXBl ZXIgICAgIGNvbXBpbGUgR0NvbmYgbmF0aXZlIHBlZXJzIGZvciB1dGlsLnByZWZlcmVuY2VzCisg ICAtLWVuYWJsZS1qYXZhLW1haW50YWluZXItbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWxsb3cgcmVidWlsZGluZyBvZiAuY2xhc3MgYW5kIC5oIGZpbGVzCisrICAtLWVuYWJsZS1s aWJqYXZhLW11bHRpbGliCisrICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBsaWJqYXZh IGFzIG11bHRpbGliCisgICAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyAgc3BlZWRzIHVw IG9uZS10aW1lIGJ1aWxkCisgICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90 IHJlamVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFjdG9ycworICAgLS1lbmFibGUtbWFpbnRhaW5l ci1tb2RlICBlbmFibGUgbWFrZSBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwKK0BA IC0xODQ4LDYgKzE4NTAsMTYgQEAgZWxzZQorIGZpCisgCisgCisrIyBDaGVjayB3aGV0aGVyIC0t ZW5hYmxlLWxpYmphdmEtbXVsdGlsaWIgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX2xp YmphdmFfbXVsdGlsaWIrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGVuYWJsZXZhbD0kZW5hYmxlX2xp YmphdmFfbXVsdGlsaWI7CisrZmkKKysKKytpZiB0ZXN0ICIkZW5hYmxlX2xpYmphdmFfbXVsdGls aWIiID0gbm87IHRoZW4KKysgIG11bHRpbGliPW5vCisrICBhY19jb25maWd1cmVfYXJncz0iJGFj X2NvbmZpZ3VyZV9hcmdzIC0tZGlzYWJsZS1tdWx0aWxpYiIKKytmaQorKworICMgSXQgbWF5IG5v dCBiZSBzYWZlIHRvIHJ1biBsaW5raW5nIHRlc3RzIGluIEFDX1BST0dfQ0MvQUNfUFJPR19DWFgu CisgCisgCgpkaWZmIC0tZ2l0IGEvZ2NjNDMtbGliamF2YS10ZXN0LnBhdGNoIGIvZ2NjNDMtbGli amF2YS10ZXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1Nzc5 NmQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0My1saWJqYXZhLXRlc3QucGF0Y2gKQEAgLTAsMCAr MSwyMiBAQAorLS0tIGxpYmphdmEvdGVzdHN1aXRlL01ha2VmaWxlLmFtCTIwMDctMDItMDcgMTM6 MDc6MTYuMDAwMDAwMDAwICswMTAwCisrKysgbGliamF2YS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0J MjAwNy0xMi0wOCAxMDo1ODowMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC00Myw3ICs0Myw3IEBAIGlm IEpBVkFfTUFJTlRBSU5FUl9NT0RFCisgCSAgICAgIHRlc3RkZXA9ImxpYmphdmEubG9hZGVyL015 TG9hZGVyLmphdmEiOzsgXAorIAkgICAgbGliamF2YS5qbmkvcmVnaXN0ZXIyLmphdmEpIFwKKyAJ ICAgICAgOzsgXAorLQkgICAgbGliamF2YS5qbmkvKi5qYXZhKSBcCisrCSAgICBsaWJqYXZhLmpu aS8qLmphdmF8bGliamF2YS5qdm10aS9pbnRlcnAvKi5qYXZhKSBcCisgCSAgICAgIGdlbmhlYWRl cj0tam5pOzsgXAorIAkgICAgbGliamF2YS5qdm10aS8qLmphdmF8bGliamF2YS5jbmkvKi5qYXZh KSBcCisgCSAgICAgIGdlbmhlYWRlcj0tY25pOzsgXAorLS0tIGxpYmphdmEvdGVzdHN1aXRlL01h a2VmaWxlLmluCTIwMDctMDktMDQgMjM6MDk6MzcuMDAwMDAwMDAwICswMjAwCisrKysgbGliamF2 YS90ZXN0c3VpdGUvTWFrZWZpbGUuaW4JMjAwNy0xMi0wOCAxMDo1ODoyNS4wMDAwMDAwMDAgKzAx MDAKK0BAIC01NTgsNyArNTU4LDcgQEAgY29tcGlsZS10ZXN0czoKKyBASkFWQV9NQUlOVEFJTkVS X01PREVfVFJVRUAJICAgICAgdGVzdGRlcD0ibGliamF2YS5sb2FkZXIvTXlMb2FkZXIuamF2YSI7 OyBcCisgQEpBVkFfTUFJTlRBSU5FUl9NT0RFX1RSVUVACSAgICBsaWJqYXZhLmpuaS9yZWdpc3Rl cjIuamF2YSkgXAorIEBKQVZBX01BSU5UQUlORVJfTU9ERV9UUlVFQAkgICAgICA7OyBcCistQEpB VkFfTUFJTlRBSU5FUl9NT0RFX1RSVUVACSAgICBsaWJqYXZhLmpuaS8qLmphdmEpIFwKKytASkFW QV9NQUlOVEFJTkVSX01PREVfVFJVRUAJICAgIGxpYmphdmEuam5pLyouamF2YXxsaWJqYXZhLmp2 bXRpL2ludGVycC8qLmphdmEpIFwKKyBASkFWQV9NQUlOVEFJTkVSX01PREVfVFJVRUAJICAgICAg Z2VuaGVhZGVyPS1qbmk7OyBcCisgQEpBVkFfTUFJTlRBSU5FUl9NT0RFX1RSVUVACSAgICBsaWJq YXZhLmp2bXRpLyouamF2YXxsaWJqYXZhLmNuaS8qLmphdmEpIFwKKyBASkFWQV9NQUlOVEFJTkVS X01PREVfVFJVRUAJICAgICAgZ2VuaGVhZGVyPS1jbmk7OyBcCgpkaWZmIC0tZ2l0IGEvZ2NjNDMt cHBjMzItcmV0YWRkci5wYXRjaCBiL2djYzQzLXBwYzMyLXJldGFkZHIucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlhZTFiYwotLS0gL2Rldi9udWxsCisrKyBiL2dj YzQzLXBwYzMyLXJldGFkZHIucGF0Y2gKQEAgLTAsMCArMSw4NiBAQAorMjAwNS0xMS0yOCAgSmFr dWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAw LmMgKHJzNjAwMF9yZXR1cm5fYWRkcik6IElmIENPVU5UID09IDAsCisJcmVhZCB3b3JkIFJFVFVS Tl9BRERSRVNTX09GRlNFVCBieXRlcyBhYm92ZSBhcmdfcG9pbnRlcl9ydHgKKwlpbnN0ZWFkIG9m IGRvaW5nIGFuIGV4dHJhbiBpbmRpcmVjdGlvbiBmcm9tIGZyYW1lX3BvaW50ZXJfcnR4LgorCisJ KiBnY2MuZGcvMjAwNTExMjgtMS5jOiBOZXcgdGVzdC4KKworLS0tIGdjYy9jb25maWcvcnM2MDAw L3JzNjAwMC5jLmpqCTIwMDUtMTEtMjYgMTQ6Mzg6MDEuMDAwMDAwMDAwICswMTAwCisrKysgZ2Nj L2NvbmZpZy9yczYwMDAvcnM2MDAwLmMJMjAwNS0xMS0yOCAyMDozMjoxOC4wMDAwMDAwMDAgKzAx MDAKK0BAIC0xMzE2NiwxNyArMTMxNjYsMjIgQEAgcnM2MDAwX3JldHVybl9hZGRyIChpbnQgY291 bnQsIHJ0eCBmcmFtZQorICAgICAgZG9uJ3QgdHJ5IHRvIGJlIHRvbyBjbGV2ZXIgaGVyZS4gICov CisgICBpZiAoY291bnQgIT0gMCB8fCAoREVGQVVMVF9BQkkgIT0gQUJJX0FJWCAmJiBmbGFnX3Bp YykpCisgICAgIHsKKysgICAgICBydHggeDsKKyAgICAgICBjZnVuLT5tYWNoaW5lLT5yYV9uZWVk c19mdWxsX2ZyYW1lID0gMTsKKyAKKy0gICAgICByZXR1cm4KKy0JZ2VuX3J0eF9NRU0KKy0JICAo UG1vZGUsCistCSAgIG1lbW9yeV9hZGRyZXNzCistCSAgIChQbW9kZSwKKy0JICAgIHBsdXNfY29u c3RhbnQgKGNvcHlfdG9fcmVnCistCQkJICAgKGdlbl9ydHhfTUVNIChQbW9kZSwKKy0JCQkJCSBt ZW1vcnlfYWRkcmVzcyAoUG1vZGUsIGZyYW1lKSkpLAorLQkJCSAgIFJFVFVSTl9BRERSRVNTX09G RlNFVCkpKTsKKysgICAgICBpZiAoY291bnQgPT0gMCkKKysJeworKwkgIGdjY19hc3NlcnQgKGZy YW1lID09IGZyYW1lX3BvaW50ZXJfcnR4KTsKKysJICB4ID0gYXJnX3BvaW50ZXJfcnR4OworKwl9 CisrICAgICAgZWxzZQorKwl7CisrCSAgeCA9IG1lbW9yeV9hZGRyZXNzIChQbW9kZSwgZnJhbWUp OworKwkgIHggPSBjb3B5X3RvX3JlZyAoZ2VuX3J0eF9NRU0gKFBtb2RlLCB4KSk7CisrCX0KKysK KysgICAgICB4ID0gcGx1c19jb25zdGFudCAoeCwgUkVUVVJOX0FERFJFU1NfT0ZGU0VUKTsKKysg ICAgICByZXR1cm4gZ2VuX3J0eF9NRU0gKFBtb2RlLCBtZW1vcnlfYWRkcmVzcyAoUG1vZGUsIHgp KTsKKyAgICAgfQorIAorICAgY2Z1bi0+bWFjaGluZS0+cmFfbmVlZF9sciA9IDE7CistLS0gZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvMjAwNTExMjgtMS5jLmpqCTIwMDUtMTAtMTAgMTE6MjE6NDEuMDk2 OTk5MDAwICswMjAwCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvMjAwNTExMjgtMS5jCTIwMDUt MTEtMjggMTI6MzA6NTcuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDQxIEBACisrLyogeyBk Zy1kbyBydW4gfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIiB9ICovCisrCisrZXh0 ZXJuIHZvaWQgZXhpdCAoaW50KTsKKytleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CisrCisraW50 IGI7CisrCisrc3RydWN0IEEKKyt7CisrICB2b2lkICpwYWRbMTQ3XTsKKysgIHZvaWQgKnJhLCAq aDsKKysgIGxvbmcgbzsKKyt9OworKworK3ZvaWQKKytfX2F0dHJpYnV0ZV9fKChub2lubGluZSkp CisrZm9vIChzdHJ1Y3QgQSAqYSwgdm9pZCAqeCkKKyt7CisrICBfX2J1aWx0aW5fbWVtc2V0IChh LCAwLCBzaXplb2YgKGEpKTsKKysgIGlmICghYikKKysgICAgZXhpdCAoMCk7CisrfQorKworK3Zv aWQKKytfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCisrYmFyICh2b2lkKQorK3sKKysgIHN0cnVj dCBBIGE7CisrCisrICBfX2J1aWx0aW5fdW53aW5kX2luaXQgKCk7CisrICBmb28gKCZhLCBfX2J1 aWx0aW5fcmV0dXJuX2FkZHJlc3MgKDApKTsKKyt9CisrCisraW50CisrbWFpbiAodm9pZCkKKyt7 CisrICBiYXIgKCk7CisrICBhYm9ydCAoKTsKKysgIHJldHVybiAwOworK30KCmRpZmYgLS1naXQg YS9nY2M0My1wcGM2NC1pYTY0LUdOVS1zdGFjay5wYXRjaCBiL2djYzQzLXBwYzY0LWlhNjQtR05V LXN0YWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0OWYyYjkK LS0tIC9kZXYvbnVsbAorKysgYi9nY2M0My1wcGM2NC1pYTY0LUdOVS1zdGFjay5wYXRjaApAQCAt MCwwICsxLDg2IEBACisyMDA3LTA4LTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNv bT4KKworCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VsZl9lbmRfaW5kaWNhdGVf ZXhlY19zdGFjayk6IE5ldy4KKwkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oIChUQVJHRVRfQVNN X0ZJTEVfRU5EKTogVXNlCisJcnM2MDAwX2VsZl9lbmRfaW5kaWNhdGVfZXhlY19zdGFjay4KKwkq IGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9saW51eF9maWxlX2VuZCk6IG5ldy4KKwkqIGNvbmZp Zy9pYTY0L2xpbnV4LmggKFRBUkdFVF9BU01fRklMRV9FTkQpOiBVc2UgaWE2NF9saW51eF9maWxl X2VuZC4KKworLS0tIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jLmpqCTIwMDctMTItMDcgMTg6 NDE6MDguMDAwMDAwMDAwICswMTAwCisrKysgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMJMjAw Ny0xMi0wNyAxODo0MjoxMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC03NDYsNiArNzQ2LDcgQEAgc3Rh dGljIHZvaWQgcnM2MDAwX2ZpbGVfc3RhcnQgKHZvaWQpOworIHN0YXRpYyBpbnQgcnM2MDAwX2Vs Zl9yZWxvY19yd19tYXNrICh2b2lkKTsKKyBzdGF0aWMgdm9pZCByczYwMDBfZWxmX2FzbV9vdXRf Y29uc3RydWN0b3IgKHJ0eCwgaW50KTsKKyBzdGF0aWMgdm9pZCByczYwMDBfZWxmX2FzbV9vdXRf ZGVzdHJ1Y3RvciAocnR4LCBpbnQpOworK3N0YXRpYyB2b2lkIHJzNjAwMF9lbGZfZW5kX2luZGlj YXRlX2V4ZWNfc3RhY2sgKHZvaWQpIEFUVFJJQlVURV9VTlVTRUQ7Cisgc3RhdGljIHZvaWQgcnM2 MDAwX2VsZl9hc21faW5pdF9zZWN0aW9ucyAodm9pZCk7Cisgc3RhdGljIHNlY3Rpb24gKnJzNjAw MF9lbGZfc2VsZWN0X3J0eF9zZWN0aW9uIChlbnVtIG1hY2hpbmVfbW9kZSwgcnR4LAorIAkJCQkJ ICAgICAgIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpOworQEAgLTIwNDE4LDYgKzIwNDE5LDIwIEBA IHJzNjAwMF9lbGZfZGVjbGFyZV9mdW5jdGlvbl9uYW1lIChGSUxFICoKKyAgICAgfQorICAgQVNN X09VVFBVVF9MQUJFTCAoZmlsZSwgbmFtZSk7CisgfQorKworK3N0YXRpYyB2b2lkCisrcnM2MDAw X2VsZl9lbmRfaW5kaWNhdGVfZXhlY19zdGFjayAodm9pZCkKKyt7CisrICBpZiAoVEFSR0VUXzMy QklUKQorKyAgICBmaWxlX2VuZF9pbmRpY2F0ZV9leGVjX3N0YWNrICgpOworKyAgZWxzZQorKyAg ICB7CisrICAgICAgaW50IHNhdmVkX3RyYW1wb2xpbmVzX2NyZWF0ZWQgPSB0cmFtcG9saW5lc19j cmVhdGVkOworKyAgICAgIHRyYW1wb2xpbmVzX2NyZWF0ZWQgPSAwOworKyAgICAgIGZpbGVfZW5k X2luZGljYXRlX2V4ZWNfc3RhY2sgKCk7CisrICAgICAgdHJhbXBvbGluZXNfY3JlYXRlZCA9IHNh dmVkX3RyYW1wb2xpbmVzX2NyZWF0ZWQ7CisrICAgIH0KKyt9CisgI2VuZGlmCisgCisgI2lmIFRB UkdFVF9YQ09GRgorLS0tIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaC5qagkyMDA3LTEyLTA3 IDE3OjE4OjA2LjAwMDAwMDAwMCArMDEwMAorKysrIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQu aAkyMDA3LTEyLTA3IDE4OjQxOjIxLjAwMDAwMDAwMCArMDEwMAorQEAgLTUwNCw3ICs1MDQsNyBA QCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOworICN1bmRlZiBEUkFGVF9WNF9TVFJVQ1RfUkVUCisg I2RlZmluZSBEUkFGVF9WNF9TVFJVQ1RfUkVUICghVEFSR0VUXzY0QklUKQorIAorLSNkZWZpbmUg VEFSR0VUX0FTTV9GSUxFX0VORCBmaWxlX2VuZF9pbmRpY2F0ZV9leGVjX3N0YWNrCisrI2RlZmlu ZSBUQVJHRVRfQVNNX0ZJTEVfRU5EIHJzNjAwMF9lbGZfZW5kX2luZGljYXRlX2V4ZWNfc3RhY2sK KyAKKyAjZGVmaW5lIFRBUkdFVF9QT1NJWF9JTworIAorLS0tIGdjYy9jb25maWcvaWE2NC9saW51 eC5oLmpqCTIwMDctMTItMDcgMTg6MTc6NDMuMDAwMDAwMDAwICswMTAwCisrKysgZ2NjL2NvbmZp Zy9pYTY0L2xpbnV4LmgJMjAwNy0xMi0wNyAxODo0MToyMS4wMDAwMDAwMDAgKzAxMDAKK0BAIC01 LDcgKzUsNyBAQAorIAorICNkZWZpbmUgVEFSR0VUX1ZFUlNJT04gZnByaW50ZiAoc3RkZXJyLCAi IChJQS02NCkgTGludXgiKTsKKyAKKy0jZGVmaW5lIFRBUkdFVF9BU01fRklMRV9FTkQgZmlsZV9l bmRfaW5kaWNhdGVfZXhlY19zdGFjaworKyNkZWZpbmUgVEFSR0VUX0FTTV9GSUxFX0VORCBpYTY0 X2xpbnV4X2ZpbGVfZW5kCisgCisgLyogVGhpcyBpcyBmb3IgLXByb2ZpbGUgdG8gdXNlIC1sY19w IGluc3RlYWQgb2YgLWxjLiAgKi8KKyAjdW5kZWYgQ0MxX1NQRUMKKy0tLSBnY2MvY29uZmlnL2lh NjQvaWE2NC5jLmpqCTIwMDctMTItMDcgMTU6NDE6NTguMDAwMDAwMDAwICswMTAwCisrKysgZ2Nj L2NvbmZpZy9pYTY0L2lhNjQuYwkyMDA3LTEyLTA3IDE4OjQzOjE4LjAwMDAwMDAwMCArMDEwMAor QEAgLTI2Miw2ICsyNjIsOCBAQCBzdGF0aWMgc2VjdGlvbiAqaWE2NF9zZWxlY3RfcnR4X3NlY3Rp b24gCisgc3RhdGljIHZvaWQgaWE2NF9vdXRwdXRfZHdhcmZfZHRwcmVsIChGSUxFICosIGludCwg cnR4KQorICAgICAgQVRUUklCVVRFX1VOVVNFRDsKKyBzdGF0aWMgdW5zaWduZWQgaW50IGlhNjRf c2VjdGlvbl90eXBlX2ZsYWdzICh0cmVlLCBjb25zdCBjaGFyICosIGludCk7Cisrc3RhdGljIHZv aWQgaWE2NF9saW51eF9maWxlX2VuZCAodm9pZCkKKysgICAgIEFUVFJJQlVURV9VTlVTRUQ7Cisg c3RhdGljIHZvaWQgaWE2NF9pbml0X2xpYmZ1bmNzICh2b2lkKQorICAgICAgQVRUUklCVVRFX1VO VVNFRDsKKyBzdGF0aWMgdm9pZCBpYTY0X2hwdXhfaW5pdF9saWJmdW5jcyAodm9pZCkKK0BAIC05 OTU3LDQgKzk5NTksMTMgQEAgaWE2NF9jX21vZGVfZm9yX3N1ZmZpeCAoY2hhciBzdWZmaXgpCisg ICByZXR1cm4gVk9JRG1vZGU7CisgfQorIAorK3N0YXRpYyB2b2lkCisraWE2NF9saW51eF9maWxl X2VuZCAodm9pZCkKKyt7CisrICBpbnQgc2F2ZWRfdHJhbXBvbGluZXNfY3JlYXRlZCA9IHRyYW1w b2xpbmVzX2NyZWF0ZWQ7CisrICB0cmFtcG9saW5lc19jcmVhdGVkID0gMDsKKysgIGZpbGVfZW5k X2luZGljYXRlX2V4ZWNfc3RhY2sgKCk7CisrICB0cmFtcG9saW5lc19jcmVhdGVkID0gc2F2ZWRf dHJhbXBvbGluZXNfY3JlYXRlZDsKKyt9CisrCisgI2luY2x1ZGUgImd0LWlhNjQuaCIKCmRpZmYg LS1naXQgYS9nY2M0My1wcjI3ODk4LnBhdGNoIGIvZ2NjNDMtcHIyNzg5OC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzJiYjgxCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjNDMtcHIyNzg5OC5wYXRjaApAQCAtMCwwICsxLDE2IEBACisyMDA2LTA4LTE4ICBKYWt1YiBK ZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCVBSIGMvMjc4OTgKKwkqIGdjYy5kZy9wcjI3 ODk4LmM6IE5ldyB0ZXN0LgorCistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIyNzg5OC5jLmpq CTIwMDYtMDgtMTggMDk6MTk6MzMuMDAwMDAwMDAwICswMjAwCisrKysgZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvcHIyNzg5OC5jCTIwMDYtMDgtMTggMDk6MTk6MjcuMDAwMDAwMDAwICswMjAwCitAQCAt MCwwICsxLDggQEAKKysvKiBQUiBjLzI3ODk4ICovCisrLyogeyBkZy1kbyBjb21waWxlIH0gKi8K KysvKiB7IGRnLW9wdGlvbnMgIi0tY29tYmluZSIgfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1z b3VyY2VzICJwcjI3ODk4LmMiIH0gKi8KKysKKyt1bmlvbiB1IHsgc3RydWN0IHsgaW50IGk7IH07 IH07CisrCisrZXh0ZXJuIGludCBmb28gKHVuaW9uIHUgKik7CgpkaWZmIC0tZ2l0IGEvZ2NjNDMt cHIzMjEzOS5wYXRjaCBiL2djYzQzLXByMzIxMzkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uODRlOGZmYgotLS0gL2Rldi9udWxsCisrKyBiL2djYzQzLXByMzIxMzku cGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorMjAwNy0wNi0wMSAgSmFrdWIgSmVsaW5layAgPGpha3Vi QHJlZGhhdC5jb20+CisKKwlQUiB0cmVlLW9wdGltaXphdGlvbi8zMjEzOQorCSogYy10eXBlY2su YyAoY29tbW9uX3BvaW50ZXJfdHlwZSk6IFNldCBUWVBFX1JFQURPTkxZCisJYW5kIFRZUEVfVk9M QVRJTEUgb24gdGhlIG1lcmdlZCBwb2ludGVkIHRvIEZVTkNUSU9OX1RZUEUKKwlvbmx5IGlmIGJv dGggcG9pbnRlZF90b18xIGFuZCBwb2ludGVkX3RvXzIgYXJlIFRZUEVfUkVBRE9OTFkKKwlyZXNw LiBUWVBFX1ZPTEFUSUxFLgorCisJKiBnY2MuYy10b3J0dXJlL2NvbXBpbGUvMjAwNzA1MzEtMS5j OiBOZXcgdGVzdC4KKworLS0tIGdjYy9jLXR5cGVjay5jLmpqCTIwMDctMDQtMjUgMTA6MTM6NTIu MDAwMDAwMDAwICswMjAwCisrKysgZ2NjL2MtdHlwZWNrLmMJMjAwNy0wNi0wMSAxMDo1MTo1My4w MDAwMDAwMDAgKzAyMDAKK0BAIC00OTksNiArNDk5LDcgQEAgY29tbW9uX3BvaW50ZXJfdHlwZSAo dHJlZSB0MSwgdHJlZSB0MikKKyAgIHRyZWUgcG9pbnRlZF90b18xLCBtdjE7CisgICB0cmVlIHBv aW50ZWRfdG9fMiwgbXYyOworICAgdHJlZSB0YXJnZXQ7CisrICBpbnQgdHlwZV9xdWFsczsKKyAK KyAgIC8qIFNhdmUgdGltZSBpZiB0aGUgdHdvIHR5cGVzIGFyZSB0aGUgc2FtZS4gICovCisgCitA QCAtNTI2LDEwICs1MjcsMTkgQEAgY29tbW9uX3BvaW50ZXJfdHlwZSAodHJlZSB0MSwgdHJlZSB0 MikKKyAgIGlmIChUUkVFX0NPREUgKG12MikgIT0gQVJSQVlfVFlQRSkKKyAgICAgbXYyID0gVFlQ RV9NQUlOX1ZBUklBTlQgKHBvaW50ZWRfdG9fMik7CisgICB0YXJnZXQgPSBjb21wb3NpdGVfdHlw ZSAobXYxLCBtdjIpOworLSAgdDEgPSBidWlsZF9wb2ludGVyX3R5cGUgKGNfYnVpbGRfcXVhbGlm aWVkX3R5cGUKKy0JCQkgICAodGFyZ2V0LAorLQkJCSAgICBUWVBFX1FVQUxTIChwb2ludGVkX3Rv XzEpIHwKKy0JCQkgICAgVFlQRV9RVUFMUyAocG9pbnRlZF90b18yKSkpOworKyAgdHlwZV9xdWFs cyA9IFRZUEVfUVVBTFMgKHBvaW50ZWRfdG9fMSkgfCBUWVBFX1FVQUxTIChwb2ludGVkX3RvXzIp OworKyAgaWYgKFRSRUVfQ09ERSAocG9pbnRlZF90b18xKSA9PSBGVU5DVElPTl9UWVBFKQorKyAg ICB7CisrICAgICAgLyogVFlQRV9SRUFET05MWSBhbmQgVFlQRV9WT0xBVElMRSBvbiBGVU5DVElP Tl9UWVBFIHNob3VsZCBiZQorKwkgbG9naWNhbGx5IEFORGVkLCBub3QgT1JlZCwgYXMgaWYgb25l IGZ1bmN0aW9uIGlzCisrCSBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGFuZCB0aGUgb3RoZXIgaXMg bm90LCB0aGUgY29tbW9uIHR5cGUKKysJIG11c3QgYmUgY29uc2VydmF0aXZlbHkgbm90IF9fYXR0 cmlidXRlX18oKGNvbnN0KSkKKysJIGFuZCBzaW1pbGFybHkgZm9yIF9fYXR0cmlidXRlX18oKG5v cmV0dXJuKSkuICAqLworKyAgICAgIHR5cGVfcXVhbHMgJj0gfihUWVBFX1FVQUxfQ09OU1QgfCBU WVBFX1FVQUxfVk9MQVRJTEUpOworKyAgICAgIHR5cGVfcXVhbHMgfD0gKFRZUEVfUVVBTFMgKHBv aW50ZWRfdG9fMSkgJiBUWVBFX1FVQUxTIChwb2ludGVkX3RvXzIpKQorKwkJICAgICYgKFRZUEVf UVVBTF9DT05TVCB8IFRZUEVfUVVBTF9WT0xBVElMRSk7CisrICAgIH0KKysgIHQxID0gYnVpbGRf cG9pbnRlcl90eXBlIChjX2J1aWxkX3F1YWxpZmllZF90eXBlICh0YXJnZXQsIHR5cGVfcXVhbHMp KTsKKyAgIHJldHVybiBidWlsZF90eXBlX2F0dHJpYnV0ZV92YXJpYW50ICh0MSwgYXR0cmlidXRl cyk7CisgfQorIAorLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9jb21waWxlLzIwMDcw NTMxLTEuYy5qagkyMDA3LTA1LTMxIDEzOjQ3OjIyLjAwMDAwMDAwMCArMDIwMAorKysrIGdjYy90 ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9jb21waWxlLzIwMDcwNTMxLTEuYwkyMDA3LTA2LTAxIDEw OjU3OjE1LjAwMDAwMDAwMCArMDIwMAorQEAgLTAsMCArMSwxMSBAQAorKy8qIFBSIHRyZWUtb3B0 aW1pemF0aW9uLzMyMTM5ICovCisraW50IGZvbyAodm9pZCk7CisraW50IGJhciAodm9pZCkgX19h dHRyaWJ1dGVfXyAoKGNvbnN0KSk7CisrCisraW50CisrdGVzdCAoaW50IHgpCisreworKyAgaW50 IGEgPSAoeCA9PSAxMDAwMCA/IGZvbyA6IGJhcikgKCk7CisrICBpbnQgYiA9ICh4ID09IDEwMDAw ID8gZm9vIDogYmFyKSAoKTsKKysgIHJldHVybiBhICsgYjsKKyt9CgpkaWZmIC0tZ2l0IGEvZ2Nj NDMtcHIzMjYzNi5wYXRjaCBiL2djYzQzLXByMzI2MzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNDIyMmRkZgotLS0gL2Rldi9udWxsCisrKyBiL2djYzQzLXByMzI2 MzYucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorMjAwNy0xMi0xMSAgSmFrdWIgSmVsaW5layAgPGph a3ViQHJlZGhhdC5jb20+CisKKwlQUiBydGwtb3B0aW1pemF0aW9uLzMyNjM2CisJKiBkZi1zY2Fu LmMgKGRmX2dldF9lbnRyeV9ibG9ja19kZWZfc2V0KTogU2V0IHN0cnVjdF92YWx1ZV9ydHgKKwly ZWdubyBpbiBlbnRyeV9ibG9ja19kZWZzIGV2ZW4gaWYgSEFWRV9wcm9sb2d1ZSAmJiBlcGlsb2d1 ZV9jb21wbGV0ZWQuCisKKy0tLSBnY2MvZGYtc2Nhbi5jLmpqCTIwMDctMTAtMjYgMTM6NDU6NDQu MDAwMDAwMDAwICswMjAwCisrKysgZ2NjL2RmLXNjYW4uYwkyMDA3LTEyLTExIDIyOjI0OjIxLjAw MDAwMDAwMCArMDEwMAorQEAgLTM1MzAsMTIgKzM1MzAsMTIgQEAgZGZfZ2V0X2VudHJ5X2Jsb2Nr X2RlZl9zZXQgKGJpdG1hcCBlbnRyeQorICAgICAgIGJpdG1hcF9zZXRfYml0IChlbnRyeV9ibG9j a19kZWZzLCBTVEFUSUNfQ0hBSU5fUkVHTlVNKTsKKyAjZW5kaWYKKyAjZW5kaWYKKy0gICAgICAK Ky0gICAgICByID0gdGFyZ2V0bS5jYWxscy5zdHJ1Y3RfdmFsdWVfcnR4IChjdXJyZW50X2Z1bmN0 aW9uX2RlY2wsIHRydWUpOworLSAgICAgIGlmIChyICYmIFJFR19QIChyKSkKKy0JYml0bWFwX3Nl dF9iaXQgKGVudHJ5X2Jsb2NrX2RlZnMsIFJFR05PIChyKSk7CisgICAgIH0KKyAKKysgIHIgPSB0 YXJnZXRtLmNhbGxzLnN0cnVjdF92YWx1ZV9ydHggKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCwgdHJ1 ZSk7CisrICBpZiAociAmJiBSRUdfUCAocikpCisrICAgIGJpdG1hcF9zZXRfYml0IChlbnRyeV9i bG9ja19kZWZzLCBSRUdOTyAocikpOworKworICAgaWYgKCghcmVsb2FkX2NvbXBsZXRlZCkgfHwg ZnJhbWVfcG9pbnRlcl9uZWVkZWQpCisgICAgIHsKKyAgICAgICAvKiBBbnkgcmVmZXJlbmNlIHRv IGFueSBwc2V1ZG8gYmVmb3JlIHJlbG9hZCBpcyBhIHBvdGVudGlhbAoKZGlmZiAtLWdpdCBhL2dj YzQzLXByMzM3NjMucGF0Y2ggYi9nY2M0My1wcjMzNzYzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjllOWM5MGQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0My1wcjMz NzYzLnBhdGNoCkBAIC0wLDAgKzEsMTUzIEBACisyMDA3LTExLTA2ICBKYWt1YiBKZWxpbmVrICA8 amFrdWJAcmVkaGF0LmNvbT4KKworCVBSIHRyZWUtb3B0aW1pemF0aW9uLzMzNzYzCisJKiBnY2Mu ZGcvcHIzMzc2My5jOiBOZXcgdGVzdC4KKwkqIGcrKy5kZy9vcHQvaW5saW5lMTMuQzogTmV3IHRl c3QuCisKKzIwMDctMTEtMDYgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KKworCVBSIHRyZWUt b3B0aW1pemF0aW9uLzMzNzYzCisJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUp OiBTaWxlbnRseSBpZ25vcmUgYWx3YXlzX2lubGluZQorCWF0dHJpYnV0ZSBmb3IgcmVkZWZpbmVk IGV4dGVybiBpbmxpbmUgZnVuY3Rpb25zLgorCistLS0gZ2NjL3RyZWUtaW5saW5lLmMuamoJMjAw Ny0xMS0wNiAwOToyOTowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnY2MvdHJlZS1pbmxpbmUuYwky MDA3LTExLTA2IDE2OjE5OjEyLjAwMDAwMDAwMCArMDEwMAorQEAgLTI1ODIsNiArMjU4MiwxMiBA QCBleHBhbmRfY2FsbF9pbmxpbmUgKGJhc2ljX2Jsb2NrIGJiLCB0cmVlCisgICBpZiAoIWNncmFw aF9pbmxpbmVfcCAoY2dfZWRnZSwgJnJlYXNvbikpCisgICAgIHsKKyAgICAgICBpZiAobG9va3Vw X2F0dHJpYnV0ZSAoImFsd2F5c19pbmxpbmUiLCBERUNMX0FUVFJJQlVURVMgKGZuKSkKKysJLyog Rm9yIGV4dGVybiBpbmxpbmUgZnVuY3Rpb25zIHRoYXQgZ2V0IHJlZGVmaW5lZCB3ZSBhbHdheXMK KysJICAgc2lsZW50bHkgaWdub3JlZCBhbHdheV9pbmxpbmUgZmxhZy4gQmV0dGVyIGJlaGF2aW91 ciB3b3VsZAorKwkgICBiZSB0byBiZSBhYmxlIHRvIGtlZXAgYm90aCBib2RpZXMgYW5kIHVzZSBl eHRlcm4gaW5saW5lIGJvZHkKKysJICAgZm9yIGlubGluaW5nLCBidXQgd2UgY2FuJ3QgZG8gdGhh dCBiZWNhdXNlIGZyb250ZW5kcyBvdmVyd3JpdGUKKysJICAgdGhlIGJvZHkuICAqLworKwkgICYm ICFjZ19lZGdlLT5jYWxsZWUtPmxvY2FsLnJlZGVmaW5lZF9leHRlcm5faW5saW5lCisgCSAgLyog QXZvaWQgd2FybmluZ3MgZHVyaW5nIGVhcmx5IGlubGluZSBwYXNzLiAqLworIAkgICYmICghZmxh Z191bml0X2F0X2FfdGltZSB8fCBjZ3JhcGhfZ2xvYmFsX2luZm9fcmVhZHkpKQorIAl7CistLS0g Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzc2My5jLmpqCTIwMDctMTEtMDYgMTY6MTk6MTIuMDAw MDAwMDAwICswMTAwCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzc2My5jCTIwMDctMTEt MDYgMTY6MTk6MTIuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDYwIEBACisrLyogUFIgdHJl ZS1vcHRpbWl6YXRpb24vMzM3NjMgKi8KKysvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworKy8qIHsg ZGctb3B0aW9ucyAiLU8yIiB9ICovCisrCisrdHlwZWRlZiBzdHJ1Y3QKKyt7CisrICB2b2lkICph OworKyAgdm9pZCAqYjsKKyt9IFQ7CisrZXh0ZXJuIHZvaWQgKmZvbyAoY29uc3QgY2hhciAqLCBj b25zdCBjaGFyICopOworK2V4dGVybiB2b2lkICpiYXIgKHZvaWQgKiwgY29uc3QgY2hhciAqLCBU KTsKKytleHRlcm4gaW50IGJheiAoY29uc3QgY2hhciAqLCBpbnQpOworKworK2V4dGVybiBpbmxp bmUgX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUsIGdudV9pbmxpbmUpKSBpbnQKKytiYXog KGNvbnN0IGNoYXIgKngsIGludCB5KQorK3sKKysgIHJldHVybiAyOworK30KKysKKytpbnQKKyti YXogKGNvbnN0IGNoYXIgKngsIGludCB5KQorK3sKKysgIHJldHVybiAxOworK30KKysKKytpbnQg eGEsIHhiOworKworK3N0YXRpYyB2b2lkICoKKytpbmwgKGNvbnN0IGNoYXIgKngsIGNvbnN0IGNo YXIgKnkpCisreworKyAgVCB0ID0geyAmeGEsICZ4YiB9OworKyAgaW50ICpmID0gKGludCAqKSBf X2J1aWx0aW5fbWFsbG9jIChzaXplb2YgKGludCkpOworKyAgY29uc3QgY2hhciAqejsKKysgIGlu dCBvID0gMDsKKysgIHZvaWQgKnIgPSAwOworKworKyAgZm9yICh6ID0geTsgKno7IHorKykKKysg ICAgeworKyAgICAgIGlmICgqeiA9PSAncicpCisrCW8gfD0gMTsKKysgICAgICBpZiAoKnogPT0g J3cnKQorKwlvIHw9IDI7CisrICAgIH0KKysgIGlmIChvID09IDEpCisrICAgICpmID0gYmF6ICh4 LCAwKTsKKysgIGlmIChvID09IDIpCisrICAgICpmID0gYmF6ICh4LCAxKTsKKysgIGlmIChvID09 IDMpCisrICAgICpmID0gYmF6ICh4LCAyKTsKKysKKysgIGlmIChvICYmICpmID4gMCkKKysgICAg ciA9IGJhciAoZiwgInciLCB0KTsKKysgIHJldHVybiByOworK30KKysKKyt2b2lkICoKKytmb28g KGNvbnN0IGNoYXIgKngsIGNvbnN0IGNoYXIgKnkpCisreworKyAgcmV0dXJuIGlubCAoeCwgeSk7 CisrfQorLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL29wdC9pbmxpbmUxMy5DLmpqCTIwMDctMTEt MDYgMTY6MjA6MjAuMDAwMDAwMDAwICswMTAwCisrKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvb3B0 L2lubGluZTEzLkMJMjAwNy0xMS0wNiAxNjoyMTozMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAg KzEsNjAgQEAKKysvLyBQUiB0cmVlLW9wdGltaXphdGlvbi8zMzc2MworKy8vIHsgZGctZG8gY29t cGlsZSB9CisrLy8geyBkZy1vcHRpb25zICItTzIiIH0KKysKKyt0eXBlZGVmIHN0cnVjdAorK3sK KysgIHZvaWQgKmE7CisrICB2b2lkICpiOworK30gVDsKKytleHRlcm4gdm9pZCAqZm9vIChjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisrZXh0ZXJuIHZvaWQgKmJhciAodm9pZCAqLCBjb25z dCBjaGFyICosIFQpOworK2V4dGVybiBpbnQgYmF6IChjb25zdCBjaGFyICosIGludCk7CisrCisr ZXh0ZXJuIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSwgZ251X2lubGluZSkp IGludAorK2JheiAoY29uc3QgY2hhciAqeCwgaW50IHkpCisreworKyAgcmV0dXJuIDI7CisrfQor KworK2ludAorK2JheiAoY29uc3QgY2hhciAqeCwgaW50IHkpCisreworKyAgcmV0dXJuIDE7Cisr fQorKworK2ludCB4YSwgeGI7CisrCisrc3RhdGljIHZvaWQgKgorK2lubCAoY29uc3QgY2hhciAq eCwgY29uc3QgY2hhciAqeSkKKyt7CisrICBUIHQgPSB7ICZ4YSwgJnhiIH07CisrICBpbnQgKmYg PSAoaW50ICopIF9fYnVpbHRpbl9tYWxsb2MgKHNpemVvZiAoaW50KSk7CisrICBjb25zdCBjaGFy ICp6OworKyAgaW50IG8gPSAwOworKyAgdm9pZCAqciA9IDA7CisrCisrICBmb3IgKHogPSB5OyAq ejsgeisrKQorKyAgICB7CisrICAgICAgaWYgKCp6ID09ICdyJykKKysJbyB8PSAxOworKyAgICAg IGlmICgqeiA9PSAndycpCisrCW8gfD0gMjsKKysgICAgfQorKyAgaWYgKG8gPT0gMSkKKysgICAg KmYgPSBiYXogKHgsIDApOworKyAgaWYgKG8gPT0gMikKKysgICAgKmYgPSBiYXogKHgsIDEpOwor KyAgaWYgKG8gPT0gMykKKysgICAgKmYgPSBiYXogKHgsIDIpOworKworKyAgaWYgKG8gJiYgKmYg PiAwKQorKyAgICByID0gYmFyIChmLCAidyIsIHQpOworKyAgcmV0dXJuIHI7CisrfQorKworK3Zv aWQgKgorK2ZvbyAoY29uc3QgY2hhciAqeCwgY29uc3QgY2hhciAqeSkKKyt7CisrICByZXR1cm4g aW5sICh4LCB5KTsKKyt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDMtcHIzNDQyNy5wYXRjaCBiL2djYzQz LXByMzQ0MjcucGF0Y2gKaW5kZXggMWY2NDcyMy4uYWM2Y2Y3MSAxMDA2NDQKLS0tIGEvZ2NjNDMt cHIzNDQyNy5wYXRjaAorKysgYi9nY2M0My1wcjM0NDI3LnBhdGNoCkBAIC0yNiw3ICsyNiw3IEBA CiAgCiAgICBwdXNoX2NoYXIgKGR0cCwgYyk7CiAgCi1AQCAtMTE0MSwxMyArMTEzNiw2IEBAIHBh cnNlX3JlYWwgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCB2b2lkICoKK0BAIC0xMTQxLDEzICsxMTM2 LDcgQEAgcGFyc2VfcmVhbCAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIHZvaWQgKgogIAogICBleHAy OgogICAgaWYgKCFpc2RpZ2l0IChjKSkKQEAgLTM3LDEwICszNywxMSBAQAogLQlnb3RvIGJhZDsK IC0gICAgfQogLQotICAgICBnb3RvIGJhZDsKKysgICAgZ290byBiYWQ7CiAgICBwdXNoX2NoYXIg KGR0cCwgYyk7CiAgCi1AQCAtMTE3OCw0MSArMTE2Niw2IEBAIHBhcnNlX3JlYWwgKHN0X3BhcmFt ZXRlcl9kdCAqZHRwLCB2b2lkICoKKyAgIGZvciAoOzspCitAQCAtMTE3Nyw0MSArMTE2Niw2IEBA IHBhcnNlX3JlYWwgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCB2b2lkICoKICAKICAgIHJldHVybiBt OwogIApAQCAtODIsNyArODMsNyBAQAogICBiYWQ6CiAgCiAgICBpZiAobm1sX2JhZF9yZXR1cm4g KGR0cCwgYykpCi1AQCAtMTM0MCwxMiArMTI5Myw2IEBAIHJlYWRfcmVhbCAoc3RfcGFyYW1ldGVy X2R0ICpkdHAsIGludCBsZW4KK0BAIC0xMzM5LDEyICsxMjkzLDYgQEAgcmVhZF9yZWFsIChzdF9w YXJhbWV0ZXJfZHQgKmR0cCwgaW50IGxlbgogICAgICAgIGVhdF9zZXBhcmF0b3IgKGR0cCk7CiAg ICAgICAgcmV0dXJuOwogIApAQCAtOTUsNyArOTYsNyBAQAogICAgICBkZWZhdWx0OgogICAgICAg IGdvdG8gYmFkX3JlYWw7CiAgICAgIH0KLUBAIC0xNDIwLDEyICsxMzY3LDcgQEAgcmVhZF9yZWFs IChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwgaW50IGxlbgorQEAgLTE0MTksMTIgKzEzNjcsNyBAQCBy ZWFkX3JlYWwgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCBpbnQgbGVuCiAgICAgIH0KICAKICAgIGlm ICghaXNkaWdpdCAoYykgJiYgYyAhPSAnLicpCkBAIC0xMDksNyArMTEwLDcgQEAKICAKICAgIGlm IChjID09ICcuJykKICAgICAgewotQEAgLTE1MjIsMzcgKzE0NjQsNiBAQCByZWFkX3JlYWwgKHN0 X3BhcmFtZXRlcl9kdCAqZHRwLCBpbnQgbGVuCitAQCAtMTUyMSwzNyArMTQ2NCw2IEBAIHJlYWRf cmVhbCAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIGludCBsZW4KICAgIGR0cC0+dS5wLnNhdmVkX3R5 cGUgPSBCVF9SRUFMOwogICAgcmV0dXJuOwogIAoKZGlmZiAtLWdpdCBhL2djYzQzLXJoMzMwNzcx LnBhdGNoIGIvZ2NjNDMtcmgzMzA3NzEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYzg5NGY4MwotLS0gL2Rldi9udWxsCisrKyBiL2djYzQzLXJoMzMwNzcxLnBhdGNo CkBAIC0wLDAgKzEsMzQgQEAKKzIwMDctMTAtMTYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRo YXQuY29tPgorCisJKiBNYWtlZmlsZS5hbSAobGliZ2NqX3Rvb2xzX2xhX0xJQkFERCk6IEFkZC4K KwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlZC4KKworLS0tIGxpYmphdmEvTWFrZWZpbGUuYW0u amoJMjAwNy0wMy0xNyAwOToyMDozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBsaWJqYXZhL01ha2Vm aWxlLmFtCTIwMDctMTAtMTYgMTU6NDU6MTQuMDAwMDAwMDAwICswMjAwCitAQCAtMjYyLDYgKzI2 Miw4IEBAIEVYVFJBX2xpYmdjal9sYV9TT1VSQ0VTID0gamF2YS9sYW5nL09iamUKKyAKKyBsaWJn Y2pfdG9vbHNfbGFfU09VUkNFUyA9IGNsYXNzcGF0aC90b29scy90b29scy56aXAKKyBsaWJnY2pf dG9vbHNfbGFfR0NKRkxBR1MgPSAkKEFNX0dDSkZMQUdTKSAtZmluZGlyZWN0LWRpc3BhdGNoIC1m bm8taW5kaXJlY3QtY2xhc3NlcyAgLWZzb3VyY2UtZmlsZW5hbWU9JChoZXJlKS9jbGFzc3BhdGgv dG9vbHMvYWxsLWNsYXNzZXMubHN0CisrIyMgU2VlIGp2X2NvbnZlcnRfTERBREQuCisrbGliZ2Nq X3Rvb2xzX2xhX0xJQkFERCA9IC1MJChoZXJlKS8ubGlicyBsaWJnY2oubGEKKyBsaWJnY2pfdG9v bHNfbGFfTERGTEFHUyA9IC1ycGF0aCAkKHRvb2xleGVjbGliZGlyKSBcCisgIC12ZXJzaW9uLWlu Zm8gYGdyZXAgLXYgJ15cIycgJChzcmNkaXIpL2xpYnRvb2wtdmVyc2lvbmAKKyBsaWJnY2pfdG9v bHNfbGFfREVQRU5ERU5DSUVTID0gbGliZ2NqLmxhIGxpYmdjai5zcGVjCistLS0gbGliamF2YS9N YWtlZmlsZS5pbi5qagkyMDA3LTA3LTA0IDIxOjExOjExLjAwMDAwMDAwMCArMDIwMAorKysrIGxp YmphdmEvTWFrZWZpbGUuaW4JMjAwNy0xMC0xNiAxNTo1NjowNy4wMDAwMDAwMDAgKzAyMDAKK0BA IC0xNDYsNyArMTQ2LDYgQEAgYW1fX29iamVjdHNfMSA9IGdudS9nY2oveGxpYi9saWJfZ251X2F3 dAorIGFtX2xpYl9nbnVfYXd0X3hsaWJfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMSkKKyBs aWJfZ251X2F3dF94bGliX2xhX09CSkVDVFMgPSAkKGFtX2xpYl9nbnVfYXd0X3hsaWJfbGFfT0JK RUNUUykKKyBAWExJQl9BV1RfVFJVRUBhbV9saWJfZ251X2F3dF94bGliX2xhX3JwYXRoID0gLXJw YXRoICQodG9vbGV4ZWNsaWJkaXIpCistbGliZ2NqX3Rvb2xzX2xhX0xJQkFERCA9CisgYW1fbGli Z2NqX3Rvb2xzX2xhX09CSkVDVFMgPSBjbGFzc3BhdGgvdG9vbHMvbGliZ2NqX3Rvb2xzX2xhLXRv b2xzLmxvCisgbGliZ2NqX3Rvb2xzX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdjal90b29sc19sYV9P QkpFQ1RTKQorIGFtX19ERVBFTkRFTkNJRVNfMSA9IGdudS9hd3QubG8gZ251L2F3dC9qMmQubG8g Z251L2NsYXNzcGF0aC5sbyBcCitAQCAtODk0LDYgKzg5Myw3IEBAIGxpYmdjal9sYV9MSU5LID0g JChMSUJMSU5LKQorIEVYVFJBX2xpYmdjal9sYV9TT1VSQ0VTID0gamF2YS9sYW5nL09iamVjdC5q YXZhCisgbGliZ2NqX3Rvb2xzX2xhX1NPVVJDRVMgPSBjbGFzc3BhdGgvdG9vbHMvdG9vbHMuemlw CisgbGliZ2NqX3Rvb2xzX2xhX0dDSkZMQUdTID0gJChBTV9HQ0pGTEFHUykgLWZpbmRpcmVjdC1k aXNwYXRjaCAtZm5vLWluZGlyZWN0LWNsYXNzZXMgIC1mc291cmNlLWZpbGVuYW1lPSQoaGVyZSkv Y2xhc3NwYXRoL3Rvb2xzL2FsbC1jbGFzc2VzLmxzdAorK2xpYmdjal90b29sc19sYV9MSUJBREQg PSAtTCQoaGVyZSkvLmxpYnMgbGliZ2NqLmxhCisgbGliZ2NqX3Rvb2xzX2xhX0xERkxBR1MgPSAt cnBhdGggJCh0b29sZXhlY2xpYmRpcikgXAorICAtdmVyc2lvbi1pbmZvIGBncmVwIC12ICdeXCMn ICQoc3JjZGlyKS9saWJ0b29sLXZlcnNpb25gCisgCgpkaWZmIC0tZ2l0IGEvZ2NjNDMtcmgzNDEy MjEucGF0Y2ggYi9nY2M0My1yaDM0MTIyMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4yOGU3M2IwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDMtcmgzNDEyMjEucGF0 Y2gKQEAgLTAsMCArMSwyOCBAQAorMjAwNy0xMC0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJl ZGhhdC5jb20+CisKKwkqIGRvYy9NYWtlZmlsZS5hbSAoUE9EMk1BTik6IFNldCBkYXRlIGZyb20g Y3AtdG9vbHMudGV4aW5mbworCXRpbWVzdGFtcCByYXRoZXIgdGhhbiBmcm9tIGN1cnJlbnQgZGF0 ZS4KKwkqIGRvYy9NYWtlZmlsZS5pbjogUmVnZW5lcmF0ZWQuCisKKy0tLSBsaWJqYXZhL2NsYXNz cGF0aC9kb2MvTWFrZWZpbGUuYW0uamoJMjAwNy0xMi0wNyAxNzo1NTowMC4wMDAwMDAwMDAgKzAx MDAKKysrKyBsaWJqYXZhL2NsYXNzcGF0aC9kb2MvTWFrZWZpbGUuYW0JMjAwNy0xMi0wNyAxODo1 NToyOC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMCw3ICszMCw3IEBAIFRPT0xTX01BTkZJTEVTID0g XAorIAlnc2VyaWFsdmVyLjEgXAorIAlndG5hbWVzZXJ2LjEKKyAKKy1QT0QyTUFOID0gcG9kMm1h biAtLWNlbnRlcj0iR05VIiAtLXJlbGVhc2U9IiQoVkVSU0lPTikiCisrUE9EMk1BTiA9IHBvZDJt YW4gLS1jZW50ZXI9IkdOVSIgLS1yZWxlYXNlPSIkKFZFUlNJT04pIiAtLWRhdGU9IiQoc2hlbGwg bHMgLS10aW1lLXN0eWxlPSslRiAtbCAkKHNyY2RpcikvY3AtdG9vbHMudGV4aW5mbyB8IGF3ayAn e3ByaW50ICQkNn0nKSIKKyBURVhJMlBPRCA9IHBlcmwgJChzcmNkaXIpL3RleGkycG9kLnBsCisg U1RBTVAgPSBlY2hvIHRpbWVzdGFtcCA+CisgCistLS0gbGliamF2YS9jbGFzc3BhdGgvZG9jL01h a2VmaWxlLmluLmpqCTIwMDctMTItMDcgMTc6NTU6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbGli amF2YS9jbGFzc3BhdGgvZG9jL01ha2VmaWxlLmluCTIwMDctMTItMDcgMTg6NTU6NDMuMDAwMDAw MDAwICswMTAwCitAQCAtMzU3LDcgKzM1Nyw3IEBAIFRPT0xTX01BTkZJTEVTID0gXAorIAlnc2Vy aWFsdmVyLjEgXAorIAlndG5hbWVzZXJ2LjEKKyAKKy1QT0QyTUFOID0gcG9kMm1hbiAtLWNlbnRl cj0iR05VIiAtLXJlbGVhc2U9IiQoVkVSU0lPTikiCisrUE9EMk1BTiA9IHBvZDJtYW4gLS1jZW50 ZXI9IkdOVSIgLS1yZWxlYXNlPSIkKFZFUlNJT04pIiAtLWRhdGU9IiQoc2hlbGwgbHMgLS10aW1l LXN0eWxlPSslRiAtbCAkKHNyY2RpcikvY3AtdG9vbHMudGV4aW5mbyB8IGF3ayAne3ByaW50ICQk Nn0nKSIKKyBURVhJMlBPRCA9IHBlcmwgJChzcmNkaXIpL3RleGkycG9kLnBsCisgU1RBTVAgPSBl Y2hvIHRpbWVzdGFtcCA+CisgQEdFTklOU1JDX0ZBTFNFQFNUQU1QX0dFTklOU1JDID0gCgpkaWZm IC0tZ2l0IGEvZ2NjNDMuc3BlYyBiL2djYzQzLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNTI1NDhhNgotLS0gL2Rldi9udWxsCisrKyBiL2djYzQzLnNwZWMKQEAgLTAs MCArMSwxNjIwIEBACislZGVmaW5lIERBVEUgMjAwNzEyMTIKKyVkZWZpbmUgZ2NjX3ZlcnNpb24g NC4zLjAKKyVkZWZpbmUgZ2NjX3JlbGVhc2UgMC4yCislZGVmaW5lIF91bnBhY2thZ2VkX2ZpbGVz X3Rlcm1pbmF0ZV9idWlsZCAwCislZGVmaW5lIG11bHRpbGliXzY0X2FyY2hzIHNwYXJjNjQgcHBj NjQgczM5MHggeDg2XzY0CislZGVmaW5lIGluY2x1ZGVfZ2FwcGxldHZpZXdlciAxCislaWZhcmNo ICV7aXg4Nn0geDg2XzY0IGlhNjQgcHBjIGFscGhhCislZGVmaW5lIGJ1aWxkX2FkYSAxCislZWxz ZQorJWRlZmluZSBidWlsZF9hZGEgMAorJWVuZGlmCislZGVmaW5lIGJ1aWxkX2phdmEgMQorIyBJ ZiB5b3UgZG9uJ3QgaGF2ZSBhbHJlYWR5IGEgdXNhYmxlIGdjYy1qYXZhIGFuZCBsaWJnY2ogZm9y IHlvdXIgYXJjaCwKKyMgZG8gb24gc29tZSBhcmNoIHdoaWNoIGhhcyBpdCBycG1idWlsZCAtYmMg LS13aXRoIGphdmFfdGFyIGdjYzQxLnNwZWMKKyMgd2hpY2ggY3JlYXRlcyBsaWJqYXZhLWNsYXNz ZXMtJXt2ZXJzaW9ufS0le3JlbGVhc2V9LnRhci5iejIKKyMgV2l0aCB0aGlzIHRoZW4gb24gdGhl IG5ldyBhcmNoIGRvIHJwbWJ1aWxkIC1iYSAtdiAtLXdpdGggamF2YV9ib290c3RyYXAgZ2NjNDEu c3BlYworJWRlZmluZSBib290c3RyYXBfamF2YSAlez9fd2l0aF9qYXZhX2Jvb3RzdHJhcDole2J1 aWxkX2phdmF9fSV7IT9fd2l0aF9qYXZhX2Jvb3RzdHJhcDowfQorJWRlZmluZSBidWlsZF9qYXZh X3RhciAlez9fd2l0aF9qYXZhX3Rhcjole2J1aWxkX2phdmF9fSV7IT9fd2l0aF9qYXZhX3Rhcjow fQorJWlmYXJjaCBzMzkweAorJWRlZmluZSBtdWx0aWxpYl8zMl9hcmNoIHMzOTAKKyVlbmRpZgor JWlmYXJjaCBzcGFyYzY0CislZGVmaW5lIG11bHRpbGliXzMyX2FyY2ggc3BhcmMKKyVlbmRpZgor JWlmYXJjaCBwcGM2NAorJWRlZmluZSBtdWx0aWxpYl8zMl9hcmNoIHBwYworJWVuZGlmCislaWZh cmNoIHg4Nl82NAorJWRlZmluZSBtdWx0aWxpYl8zMl9hcmNoIGkzODYKKyVlbmRpZgorU3VtbWFy eTogVmFyaW91cyBjb21waWxlcnMgKEMsIEMrKywgT2JqZWN0aXZlLUMsIEphdmEsIC4uLikKK05h bWU6IGdjYworVmVyc2lvbjogJXtnY2NfdmVyc2lvbn0KK1JlbGVhc2U6ICV7Z2NjX3JlbGVhc2V9 CisjIGxpYmdjYywgbGliZ2ZvcnRyYW4sIGxpYm11ZGZsYXAgYW5kIGNydHN0dWZmIGhhdmUgYW4g ZXhjZXB0aW9uIHdoaWNoIGFsbG93cworIyBsaW5raW5nIGl0IGludG8gYW55IGtpbmQgb2YgcHJv Z3JhbXMgb3Igc2hhcmVkIGxpYnJhcmllcyB3aXRob3V0CisjIHJlc3RyaWN0aW9ucy4KK0xpY2Vu c2U6IEdQTHYzKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucworR3JvdXA6IERldmVsb3BtZW50 L0xhbmd1YWdlcworU291cmNlMDogZ2NjLSV7dmVyc2lvbn0tJXtEQVRFfS50YXIuYnoyCitTb3Vy Y2UxOiBsaWJnY2NfcG9zdF91cGdyYWRlLmMKK1NvdXJjZTI6IFJFQURNRS5saWJnY2p3ZWJwbHVn aW4uc28KK1NvdXJjZTM6IHByb3RvaXplLjEKK1VSTDogaHR0cDovL2djYy5nbnUub3JnCitCdWls ZFJvb3Q6ICV7X3RtcHBhdGh9LyV7bmFtZX0tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LXJvb3QKKyMg TmVlZCBiaW51dGlscyB3aXRoIC1waWUgc3VwcG9ydCA+PSAyLjE0LjkwLjAuNC00CisjIE5lZWQg YmludXRpbHMgd2hpY2ggY2FuIG9taXQgZG90IHN5bWJvbHMgYW5kIG92ZXJsYXAgLm9wZCBvbiBw cGM2NCA+PSAyLjE1LjkxLjAuMi00CisjIE5lZWQgYmludXRpbHMgd2hpY2ggaGFuZGxlIC1tc2Vj dXJlLXBsdCBvbiBwcGMgPj0gMi4xNi45MS4wLjItMgorIyBOZWVkIGJpbnV0aWxzIHdoaWNoIHN1 cHBvcnQgLndlYWtyZWYgPj0gMi4xNi45MS4wLjMtMQorIyBOZWVkIGJpbnV0aWxzIHdoaWNoIHN1 cHBvcnQgLS1oYXNoLXN0eWxlPWdudSA+PSAyLjE3LjUwLjAuMi03CisjIE5lZWQgYmludXRpbHMg d2hpY2ggc3VwcG9ydCBtZmZncHIgYW5kIG1mdGdwciA+PSAyLjE3LjUwLjAuMi04CisjIE5lZWQg YmludXRpbHMgd2hpY2ggc3VwcG9ydCAtLWJ1aWxkLWlkID49IDIuMTcuNTAuMC4xNy0zCitCdWls ZFJlcXVpcmVzOiBiaW51dGlscyA+PSAyLjE3LjUwLjAuMTctMworQnVpbGRSZXF1aXJlczogemxp Yi1kZXZlbCwgZ2V0dGV4dCwgZGVqYWdudSwgYmlzb24sIGZsZXgsIHRleGluZm8sIHNoYXJ1dGls cworJWlmICV7YnVpbGRfamF2YX0KK0J1aWxkUmVxdWlyZXM6IC91c3Ivc2hhcmUvamF2YS9lY2xp cHNlLWVjai5qYXIsIHppcCwgdW56aXAKKyVpZiAle2Jvb3RzdHJhcF9qYXZhfQorU291cmNlMTA6 IGxpYmphdmEtY2xhc3Nlcy0le3ZlcnNpb259LSV7cmVsZWFzZX0udGFyLmJ6MgorJWVsc2UKK0J1 aWxkUmVxdWlyZXM6IGdjYy1qYXZhLCBsaWJnY2oKKyVlbmRpZgorJWVuZGlmCisjIE1ha2Ugc3Vy ZSBwdGhyZWFkLmggZG9lc24ndCBjb250YWluIF9fdGhyZWFkIHRva2VucworIyBNYWtlIHN1cmUg Z2xpYmMgc3VwcG9ydHMgc3RhY2sgcHJvdGVjdG9yCisjIE1ha2Ugc3VyZSBnbGliYyBzdXBwb3J0 cyBEVF9HTlVfSEFTSAorQnVpbGRSZXF1aXJlczogZ2xpYmMtZGV2ZWwgPj0gMi40LjkwLTEzCitC dWlsZFJlcXVpcmVzOiBlbGZ1dGlscy1kZXZlbCA+PSAwLjcyCislaWZhcmNoIHBwYyBwcGM2NCBz MzkwIHMzOTB4IHNwYXJjIHNwYXJjdjkgYWxwaGEKKyMgTWFrZSBzdXJlIGdsaWJjIHN1cHBvcnRz IFRGbW9kZSBsb25nIGRvdWJsZQorQnVpbGRSZXF1aXJlczogZ2xpYmMgPj0gMi4zLjkwLTM1Cisl ZW5kaWYKKyVpZmFyY2ggJXttdWx0aWxpYl82NF9hcmNoc30gc3BhcmMgcHBjCisjIEVuc3VyZSBn bGliY3ssLWRldmVsfSBpcyBpbnN0YWxsZWQgZm9yIGJvdGggbXVsdGlsaWIgYXJjaGVzCitCdWls ZFJlcXVpcmVzOiAvbGliL2xpYmMuc28uNiAvdXNyL2xpYi9saWJjLnNvIC9saWI2NC9saWJjLnNv LjYgL3Vzci9saWI2NC9saWJjLnNvCislZW5kaWYKKyVpZiAle2J1aWxkX2FkYX0KKyMgQWRhIHJl cXVpcmVzIEFkYSB0byBidWlsZAorQnVpbGRSZXF1aXJlczogZ2NjLWduYXQgPj0gMy4xLCBsaWJn bmF0ID49IDMuMQorJWVuZGlmCislaWZhcmNoIGlhNjQKK0J1aWxkUmVxdWlyZXM6IGxpYnVud2lu ZCA+PSAwLjk4CislZW5kaWYKK1JlcXVpcmVzOiBjcHAgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0K KyMgTmVlZCAuZWhfZnJhbWUgbGQgb3B0aW1pemF0aW9ucworIyBOZWVkIHByb3BlciB2aXNpYmls aXR5IHN1cHBvcnQKKyMgTmVlZCAtcGllIHN1cHBvcnQKKyMgTmVlZCAtLWFzLW5lZWRlZC8tLW5v LWFzLW5lZWRlZCBzdXBwb3J0CisjIE9uIHBwYzY0LCBuZWVkIG9taXQgZG90IHN5bWJvbHMgc3Vw cG9ydCBhbmQgLS1ub24tb3ZlcmxhcHBpbmctb3BkCisjIE5lZWQgYmludXRpbHMgdGhhdCBvd25z IC91c3IvYmluL2MrK2ZpbHQKKyMgTmVlZCBiaW51dGlscyB0aGF0IHN1cHBvcnQgLndlYWtyZWYK KyMgTmVlZCBiaW51dGlscyB0aGF0IHN1cHBvcnRzIC0taGFzaC1zdHlsZT1nbnUKKyMgTmVlZCBi aW51dGlscyB0aGF0IHN1cHBvcnQgbWZmZ3ByL21mdGdwcgorIyBOZWVkIGJpbnV0aWxzIHRoYXQg c3VwcG9ydCAtLWJ1aWxkLWlkCitSZXF1aXJlczogYmludXRpbHMgPj0gMi4xNy41MC4wLjE3LTMK KyMgTWFrZSBzdXJlIGdkYiB3aWxsIHVuZGVyc3RhbmQgRFdfRk9STV9zdHJwCitDb25mbGljdHM6 IGdkYiA8IDUuMS0yCitSZXF1aXJlczogZ2xpYmMtZGV2ZWwgPj0gMi4yLjkwLTEyCislaWZhcmNo IHBwYyBwcGM2NCBzMzkwIHMzOTB4IHNwYXJjIHNwYXJjdjkgYWxwaGEKKyMgTWFrZSBzdXJlIGds aWJjIHN1cHBvcnRzIFRGbW9kZSBsb25nIGRvdWJsZQorUmVxdWlyZXM6IGdsaWJjID49IDIuMy45 MC0zNQorJWVuZGlmCitSZXF1aXJlczogbGliZ2NjID49ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQor UmVxdWlyZXM6IGxpYmdvbXAgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KK09ic29sZXRlczogZ2Nj MworT2Jzb2xldGVzOiBlZ2NzCislaWZhcmNoIHNwYXJjCitPYnNvbGV0ZXM6IGdjYy1zcGFyYzMy CitPYnNvbGV0ZXM6IGdjYy1jKystc3BhcmMzMgorJWVuZGlmCislaWZhcmNoIHBwYworT2Jzb2xl dGVzOiBnY2MtcHBjMzIKK09ic29sZXRlczogZ2NjLWMrKy1wcGMzMgorJWVuZGlmCitPYnNvbGV0 ZXM6IGdjYy1jaGlsbAorJWlmICEle2J1aWxkX2FkYX0KK09ic29sZXRlczogZ2NjLWduYXQgPCAl e3ZlcnNpb259LSV7cmVsZWFzZX0KK09ic29sZXRlczogbGliZ25hdCA8ICV7dmVyc2lvbn0tJXty ZWxlYXNlfQorJWVuZGlmCislaWZhcmNoIHNwYXJjIHNwYXJjNjQKK09ic29sZXRlczogZWdjczY0 CislZW5kaWYKK09ic29sZXRlczogZ2NjMzQKK09ic29sZXRlczogZ2NjMzUKK09ic29sZXRlczog Z2NjNAorUHJlcmVxOiAvc2Jpbi9pbnN0YWxsLWluZm8KK0F1dG9SZXE6IHRydWUKKworUGF0Y2gx OiBnY2M0My1idWlsZC1pZC5wYXRjaAorUGF0Y2gyOiBnY2M0My1jKystYnVpbHRpbi1yZWRlY2wu cGF0Y2gKK1BhdGNoMzogZ2NjNDMtaWE2NC1saWJ1bndpbmQucGF0Y2gKK1BhdGNoNDogZ2NjNDMt amF2YS1ub211bHRpLnBhdGNoCitQYXRjaDU6IGdjYzQzLXBwYzMyLXJldGFkZHIucGF0Y2gKK1Bh dGNoNjogZ2NjNDMtcHBjNjQtaWE2NC1HTlUtc3RhY2sucGF0Y2gKK1BhdGNoNzogZ2NjNDMtcHIy Nzg5OC5wYXRjaAorUGF0Y2g4OiBnY2M0My1wcjMyMTM5LnBhdGNoCitQYXRjaDk6IGdjYzQzLXBy MzM3NjMucGF0Y2gKK1BhdGNoMTA6IGdjYzQzLXByMzI2MzYucGF0Y2gKK1BhdGNoMTE6IGdjYzQz LXJoMzMwNzcxLnBhdGNoCitQYXRjaDEyOiBnY2M0My1yaDM0MTIyMS5wYXRjaAorUGF0Y2gxMzog Z2NjNDMtbGliamF2YS10ZXN0LnBhdGNoCitQYXRjaDE0OiBnY2M0My1wcjM0NDI3LnBhdGNoCisK KyMgT24gQVJNIEVBQkkgc3lzdGVtcywgd2UgZG8gd2FudCAtZ251ZWFiaSB0byBiZSBwYXJ0IG9m IHRoZQorIyB0YXJnZXQgdHJpcGxlLgorJWlmbmFyY2ggJXthcm19CislZGVmaW5lIF9nbnUgJXtu aWx9CislZW5kaWYKKyVpZmFyY2ggc3BhcmMKKyVkZWZpbmUgZ2NjX3RhcmdldF9wbGF0Zm9ybSBz cGFyYzY0LSV7X3ZlbmRvcn0tJXtfdGFyZ2V0X29zfQorJWVuZGlmCislaWZhcmNoIHBwYworJWRl ZmluZSBnY2NfdGFyZ2V0X3BsYXRmb3JtIHBwYzY0LSV7X3ZlbmRvcn0tJXtfdGFyZ2V0X29zfQor JWVuZGlmCislaWZuYXJjaCBzcGFyYyBwcGMKKyVkZWZpbmUgZ2NjX3RhcmdldF9wbGF0Zm9ybSAl e190YXJnZXRfcGxhdGZvcm19CislZW5kaWYKKworJWRlc2NyaXB0aW9uCitUaGUgZ2NjIHBhY2th Z2UgY29udGFpbnMgdGhlIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIHZlcnNpb24gNC4zLgorWW91 J2xsIG5lZWQgdGhpcyBwYWNrYWdlIGluIG9yZGVyIHRvIGNvbXBpbGUgQyBjb2RlLgorCislcGFj a2FnZSAtbiBsaWJnY2MKK1N1bW1hcnk6IEdDQyB2ZXJzaW9uIDQuMyBzaGFyZWQgc3VwcG9ydCBs aWJyYXJ5CitHcm91cDogU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcworQXV0b3JlcTogZmFs c2UKKworJWRlc2NyaXB0aW9uIC1uIGxpYmdjYworVGhpcyBwYWNrYWdlIGNvbnRhaW5zIEdDQyBz aGFyZWQgc3VwcG9ydCBsaWJyYXJ5IHdoaWNoIGlzIG5lZWRlZAorZS5nLiBmb3IgZXhjZXB0aW9u IGhhbmRsaW5nIHN1cHBvcnQuCisKKyVwYWNrYWdlIGMrKworU3VtbWFyeTogQysrIHN1cHBvcnQg Zm9yIEdDQworR3JvdXA6IERldmVsb3BtZW50L0xhbmd1YWdlcworUmVxdWlyZXM6IGdjYyA9ICV7 dmVyc2lvbn0tJXtyZWxlYXNlfQorUmVxdWlyZXM6IGxpYnN0ZGMrKyA9ICV7dmVyc2lvbn0tJXty ZWxlYXNlfQorUmVxdWlyZXM6IGxpYnN0ZGMrKy1kZXZlbCA9ICV7dmVyc2lvbn0tJXtyZWxlYXNl fQorT2Jzb2xldGVzOiBnY2MzLWMrKworT2Jzb2xldGVzOiBnY2MzNC1jKysKK09ic29sZXRlczog Z2NjMzUtYysrCitPYnNvbGV0ZXM6IGdjYzQtYysrCitBdXRvcmVxOiB0cnVlCisKKyVkZXNjcmlw dGlvbiBjKysKK1RoaXMgcGFja2FnZSBhZGRzIEMrKyBzdXBwb3J0IHRvIHRoZSBHTlUgQ29tcGls ZXIgQ29sbGVjdGlvbi4KK0l0IGluY2x1ZGVzIHN1cHBvcnQgZm9yIG1vc3Qgb2YgdGhlIGN1cnJl bnQgQysrIHNwZWNpZmljYXRpb24sCitpbmNsdWRpbmcgdGVtcGxhdGVzIGFuZCBleGNlcHRpb24g aGFuZGxpbmcuCisKKyVwYWNrYWdlIC1uIGxpYnN0ZGMrKworU3VtbWFyeTogR05VIFN0YW5kYXJk IEMrKyBMaWJyYXJ5CitHcm91cDogU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcworT2Jzb2xl dGVzOiBsaWJzdGRjKyszCitPYnNvbGV0ZXM6IGxpYnN0ZGMrKzM0CitBdXRvcmVxOiB0cnVlCisK KyVkZXNjcmlwdGlvbiAtbiBsaWJzdGRjKysKK1RoZSBsaWJzdGRjKysgcGFja2FnZSBjb250YWlu cyBhIHJld3JpdHRlbiBzdGFuZGFyZCBjb21wbGlhbnQgR0NDIFN0YW5kYXJkCitDKysgTGlicmFy eS4KKworJXBhY2thZ2UgLW4gbGlic3RkYysrLWRldmVsCitTdW1tYXJ5OiBIZWFkZXIgZmlsZXMg YW5kIGxpYnJhcmllcyBmb3IgQysrIGRldmVsb3BtZW50CitHcm91cDogRGV2ZWxvcG1lbnQvTGli cmFyaWVzCitSZXF1aXJlczogbGlic3RkYysrID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9LCAle19w cmVmaXh9LyV7X2xpYn0vbGlic3RkYysrLnNvLjYKK09ic29sZXRlczogbGlic3RkYysrMy1kZXZl bAorT2Jzb2xldGVzOiBsaWJzdGRjKyszNC1kZXZlbAorQXV0b3JlcTogdHJ1ZQorCislZGVzY3Jp cHRpb24gLW4gbGlic3RkYysrLWRldmVsCitUaGlzIGlzIHRoZSBHTlUgaW1wbGVtZW50YXRpb24g b2YgdGhlIHN0YW5kYXJkIEMrKyBsaWJyYXJpZXMuICBUaGlzCitwYWNrYWdlIGluY2x1ZGVzIHRo ZSBoZWFkZXIgZmlsZXMgYW5kIGxpYnJhcmllcyBuZWVkZWQgZm9yIEMrKworZGV2ZWxvcG1lbnQu IFRoaXMgaW5jbHVkZXMgcmV3cml0dGVuIGltcGxlbWVudGF0aW9uIG9mIFNUTC4KKworJXBhY2th Z2Ugb2JqYworU3VtbWFyeTogT2JqZWN0aXZlLUMgc3VwcG9ydCBmb3IgR0NDCitHcm91cDogRGV2 ZWxvcG1lbnQvTGFuZ3VhZ2VzCitSZXF1aXJlczogZ2NjID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9 CitSZXF1aXJlczogbGlib2JqYyA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQorT2Jzb2xldGVzOiBn Y2MzLW9iamMKK0F1dG9yZXE6IHRydWUKKworJWRlc2NyaXB0aW9uIG9iamMKK2djYy1vYmpjIHBy b3ZpZGVzIE9iamVjdGl2ZS1DIHN1cHBvcnQgZm9yIHRoZSBHQ0MuCitNYWlubHkgdXNlZCBvbiBz eXN0ZW1zIHJ1bm5pbmcgTmVYVFNURVAsIE9iamVjdGl2ZS1DIGlzIGFuCitvYmplY3Qtb3JpZW50 ZWQgZGVyaXZhdGl2ZSBvZiB0aGUgQyBsYW5ndWFnZS4KKworJXBhY2thZ2Ugb2JqYysrCitTdW1t YXJ5OiBPYmplY3RpdmUtQysrIHN1cHBvcnQgZm9yIEdDQworR3JvdXA6IERldmVsb3BtZW50L0xh bmd1YWdlcworUmVxdWlyZXM6IGdjYy1jKysgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0sIGdjYy1v YmpjID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CitBdXRvcmVxOiB0cnVlCisKKyVkZXNjcmlwdGlv biBvYmpjKysKK2djYy1vYmpjKysgcGFja2FnZSBwcm92aWRlcyBPYmplY3RpdmUtQysrIHN1cHBv cnQgZm9yIHRoZSBHQ0MuCisKKyVwYWNrYWdlIC1uIGxpYm9iamMKK1N1bW1hcnk6IE9iamVjdGl2 ZS1DIHJ1bnRpbWUKK0dyb3VwOiBTeXN0ZW0gRW52aXJvbm1lbnQvTGlicmFyaWVzCitBdXRvcmVx OiB0cnVlCisKKyVkZXNjcmlwdGlvbiAtbiBsaWJvYmpjCitUaGlzIHBhY2thZ2UgY29udGFpbnMg T2JqZWN0aXZlLUMgc2hhcmVkIGxpYnJhcnkgd2hpY2ggaXMgbmVlZGVkIHRvIHJ1bgorT2JqZWN0 aXZlLUMgZHluYW1pY2FsbHkgbGlua2VkIHByb2dyYW1zLgorCislcGFja2FnZSBnZm9ydHJhbgor U3VtbWFyeTogRm9ydHJhbiA5NSBzdXBwb3J0CitHcm91cDogRGV2ZWxvcG1lbnQvTGFuZ3VhZ2Vz CitSZXF1aXJlczogZ2NjID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CitSZXF1aXJlczogbGliZ2Zv cnRyYW4gPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KK0J1aWxkUmVxdWlyZXM6IGdtcC1kZXZlbCA+ PSA0LjEuMi04LCBtcGZyLWRldmVsID49IDIuMi4xCitQcmVyZXE6IC9zYmluL2luc3RhbGwtaW5m bworT2Jzb2xldGVzOiBnY2MzLWc3NworT2Jzb2xldGVzOiBnY2MtZzc3CitPYnNvbGV0ZXM6IGdj YzQtZ2ZvcnRyYW4KK0F1dG9yZXE6IHRydWUKKworJWRlc2NyaXB0aW9uIGdmb3J0cmFuCitUaGUg Z2NjLWdmb3J0cmFuIHBhY2thZ2UgcHJvdmlkZXMgc3VwcG9ydCBmb3IgY29tcGlsaW5nIEZvcnRy YW4gOTUKK3Byb2dyYW1zIHdpdGggdGhlIEdOVSBDb21waWxlciBDb2xsZWN0aW9uLgorCislcGFj a2FnZSAtbiBsaWJnZm9ydHJhbgorU3VtbWFyeTogRm9ydHJhbiA5NSBydW50aW1lCitHcm91cDog U3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcworT2Jzb2xldGVzOiBsaWJmMmMKK0F1dG9yZXE6 IHRydWUKKworJWRlc2NyaXB0aW9uIC1uIGxpYmdmb3J0cmFuCitUaGlzIHBhY2thZ2UgY29udGFp bnMgRm9ydHJhbiA5NSBzaGFyZWQgbGlicmFyeSB3aGljaCBpcyBuZWVkZWQgdG8gcnVuCitGb3J0 cmFuIDk1IGR5bmFtaWNhbGx5IGxpbmtlZCBwcm9ncmFtcy4KKworJXBhY2thZ2UgLW4gbGliZ29t cAorU3VtbWFyeTogR0NDIE9wZW5NUCAyLjUgc2hhcmVkIHN1cHBvcnQgbGlicmFyeQorR3JvdXA6 IFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJpZXMKKworJWRlc2NyaXB0aW9uIC1uIGxpYmdvbXAK K1RoaXMgcGFja2FnZSBjb250YWlucyBHQ0Mgc2hhcmVkIHN1cHBvcnQgbGlicmFyeSB3aGljaCBp cyBuZWVkZWQKK2ZvciBPcGVuTVAgMi41IHN1cHBvcnQuCisKKyVwYWNrYWdlIC1uIGxpYm11ZGZs YXAKK1N1bW1hcnk6IEdDQyBtdWRmbGFwIHNoYXJlZCBzdXBwb3J0IGxpYnJhcnkKK0dyb3VwOiBT eXN0ZW0gRW52aXJvbm1lbnQvTGlicmFyaWVzCisKKyVkZXNjcmlwdGlvbiAtbiBsaWJtdWRmbGFw CitUaGlzIHBhY2thZ2UgY29udGFpbnMgR0NDIHNoYXJlZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2gg aXMgbmVlZGVkCitmb3IgbXVkZmxhcCBzdXBwb3J0LgorCislcGFja2FnZSAtbiBsaWJtdWRmbGFw LWRldmVsCitTdW1tYXJ5OiBHQ0MgbXVkZmxhcCBzdXBwb3J0CitHcm91cDogRGV2ZWxvcG1lbnQv TGlicmFyaWVzCitSZXF1aXJlczogbGlibXVkZmxhcCA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQor UmVxdWlyZXM6IGdjYyA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQorCislZGVzY3JpcHRpb24gLW4g bGlibXVkZmxhcC1kZXZlbAorVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGhlYWRlcnMgYW5kIHN0YXRp YyBsaWJyYXJpZXMgZm9yIGJ1aWxkaW5nCittdWRmbGFwLWluc3RydW1lbnRlZCBwcm9ncmFtcy4K KworVG8gaW5zdHJ1bWVudCBhIG5vbi10aHJlYWRlZCBwcm9ncmFtLCBhZGQgLWZtdWRmbGFwCitv cHRpb24gdG8gR0NDIGFuZCB3aGVuIGxpbmtpbmcgYWRkIC1sbXVkZmxhcCwgZm9yIHRocmVhZGVk IHByb2dyYW1zCithbHNvIGFkZCAtZm11ZGZsYXB0aCBhbmQgLWxtdWRmbGFwdGguCisKKyVwYWNr YWdlIGphdmEKK1N1bW1hcnk6IEphdmEgc3VwcG9ydCBmb3IgR0NDCitHcm91cDogRGV2ZWxvcG1l bnQvTGFuZ3VhZ2VzCitSZXF1aXJlczogZ2NjID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CitSZXF1 aXJlczogbGliZ2NqID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CitSZXF1aXJlczogbGliZ2NqLWRl dmVsID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CitSZXF1aXJlczogL3Vzci9zaGFyZS9qYXZhL2Vj bGlwc2UtZWNqLmphcgorT2Jzb2xldGVzOiBnY2MzLWphdmEKK09ic29sZXRlczogZ2NjMzQtamF2 YQorT2Jzb2xldGVzOiBnY2MzNS1qYXZhCitPYnNvbGV0ZXM6IGdjYzQtamF2YQorUHJlcmVxOiAv c2Jpbi9pbnN0YWxsLWluZm8KK0F1dG9yZXE6IHRydWUKKworJWRlc2NyaXB0aW9uIGphdmEKK1Ro aXMgcGFja2FnZSBhZGRzIHN1cHBvcnQgZm9yIGNvbXBpbGluZyBKYXZhKHRtKSBwcm9ncmFtcyBh bmQKK2J5dGVjb2RlIGludG8gbmF0aXZlIGNvZGUuCisKKyVwYWNrYWdlIC1uIGxpYmdjagorU3Vt bWFyeTogSmF2YSBydW50aW1lIGxpYnJhcnkgZm9yIGdjYworR3JvdXA6IFN5c3RlbSBFbnZpcm9u bWVudC9MaWJyYXJpZXMKK1ByZXJlcTogL3NiaW4vaW5zdGFsbC1pbmZvCitSZXF1aXJlczogemlw ID49IDIuMQorUmVxdWlyZXM6IGd0azIgPj0gMi40LjAKK1JlcXVpcmVzOiBnbGliMiA+PSAyLjQu MAorUmVxdWlyZXM6IGxpYmFydF9sZ3BsID49IDIuMS4wCislaWYgJXtidWlsZF9qYXZhfQorQnVp bGRSZXF1aXJlczogZ3RrMi1kZXZlbCA+PSAyLjQuMAorQnVpbGRSZXF1aXJlczogZ2xpYjItZGV2 ZWwgPj0gMi40LjAKK0J1aWxkUmVxdWlyZXM6IGZpcmVmb3gtZGV2ZWwKK0J1aWxkUmVxdWlyZXM6 IGxpYmFydF9sZ3BsLWRldmVsID49IDIuMS4wCitCdWlsZFJlcXVpcmVzOiBhbHNhLWxpYi1kZXZl bAorQnVpbGRSZXF1aXJlczogbGliWHRzdC1kZXZlbAorQnVpbGRSZXF1aXJlczogbGliWHQtZGV2 ZWwKKyVlbmRpZgorT2Jzb2xldGVzOiBnY2MtbGliZ2NqCitPYnNvbGV0ZXM6IGxpYmdjajMKK09i c29sZXRlczogbGliZ2NqMzQKK09ic29sZXRlczogbGliZ2NqNAorQXV0b3JlcTogdHJ1ZQorCisl ZGVzY3JpcHRpb24gLW4gbGliZ2NqCitUaGUgSmF2YSh0bSkgcnVudGltZSBsaWJyYXJ5LiBZb3Ug d2lsbCBuZWVkIHRoaXMgcGFja2FnZSB0byBydW4geW91ciBKYXZhCitwcm9ncmFtcyBjb21waWxl ZCB1c2luZyB0aGUgSmF2YSBjb21waWxlciBmcm9tIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIChn Y2opLgorCislcGFja2FnZSAtbiBsaWJnY2otZGV2ZWwKK1N1bW1hcnk6IExpYnJhcmllcyBmb3Ig SmF2YSBkZXZlbG9wbWVudCB1c2luZyBHQ0MKK0dyb3VwOiBEZXZlbG9wbWVudC9MYW5ndWFnZXMK K1JlcXVpcmVzOiBsaWJnY2ogPSAle3ZlcnNpb259LSV7cmVsZWFzZX0sICV7X3ByZWZpeH0vJXtf bGlifS9saWJnY2ouc28uOQorUmVxdWlyZXM6IHpsaWItZGV2ZWwsICV7X3ByZWZpeH0vJXtfbGli fS9saWJ6LnNvCitSZXF1aXJlczogL2Jpbi9hd2sKK09ic29sZXRlczogbGliZ2NqMy1kZXZlbAor T2Jzb2xldGVzOiBsaWJnY2ozNC1kZXZlbAorT2Jzb2xldGVzOiBsaWJnY2o0LWRldmVsCitBdXRv cmVxOiBmYWxzZQorQXV0b3Byb3Y6IGZhbHNlCisKKyVkZXNjcmlwdGlvbiAtbiBsaWJnY2otZGV2 ZWwKK1RoZSBKYXZhKHRtKSBzdGF0aWMgbGlicmFyaWVzIGFuZCBDIGhlYWRlciBmaWxlcy4gWW91 IHdpbGwgbmVlZCB0aGlzCitwYWNrYWdlIHRvIGNvbXBpbGUgeW91ciBKYXZhIHByb2dyYW1zIHVz aW5nIHRoZSBHQ0MgSmF2YSBjb21waWxlciAoZ2NqKS4KKworJXBhY2thZ2UgLW4gbGliZ2NqLXNy YworU3VtbWFyeTogSmF2YSBsaWJyYXJ5IHNvdXJjZXMgZnJvbSBHQ0M0IHByZXZpZXcKK0dyb3Vw OiBTeXN0ZW0gRW52aXJvbm1lbnQvTGlicmFyaWVzCitSZXF1aXJlczogbGliZ2NqID0gJXt2ZXJz aW9ufS0le3JlbGVhc2V9CitPYnNvbGV0ZXM6IGxpYmdjajQtc3JjCitBdXRvcmVxOiB0cnVlCisK KyVkZXNjcmlwdGlvbiAtbiBsaWJnY2otc3JjCitUaGUgSmF2YSh0bSkgcnVudGltZSBsaWJyYXJ5 IHNvdXJjZXMgZm9yIHVzZSBpbiBFY2xpcHNlLgorCislcGFja2FnZSAtbiBjcHAKK1N1bW1hcnk6 IFRoZSBDIFByZXByb2Nlc3Nvci4KK0dyb3VwOiBEZXZlbG9wbWVudC9MYW5ndWFnZXMKK1ByZXJl cTogL3NiaW4vaW5zdGFsbC1pbmZvCislaWZhcmNoIGlhNjQKK09ic29sZXRlczogZ251cHJvCisl ZW5kaWYKK0F1dG9yZXE6IHRydWUKKworJWRlc2NyaXB0aW9uIC1uIGNwcAorQ3BwIGlzIHRoZSBH TlUgQy1Db21wYXRpYmxlIENvbXBpbGVyIFByZXByb2Nlc3Nvci4KK0NwcCBpcyBhIG1hY3JvIHBy b2Nlc3NvciB3aGljaCBpcyB1c2VkIGF1dG9tYXRpY2FsbHkKK2J5IHRoZSBDIGNvbXBpbGVyIHRv IHRyYW5zZm9ybSB5b3VyIHByb2dyYW0gYmVmb3JlIGFjdHVhbAorY29tcGlsYXRpb24uIEl0IGlz IGNhbGxlZCBhIG1hY3JvIHByb2Nlc3NvciBiZWNhdXNlIGl0IGFsbG93cworeW91IHRvIGRlZmlu ZSBtYWNyb3MsIGFiYnJldmlhdGlvbnMgZm9yIGxvbmdlcgorY29uc3RydWN0cy4KKworVGhlIEMg cHJlcHJvY2Vzc29yIHByb3ZpZGVzIGZvdXIgc2VwYXJhdGUgZnVuY3Rpb25hbGl0aWVzOiB0aGUK K2luY2x1c2lvbiBvZiBoZWFkZXIgZmlsZXMgKGZpbGVzIG9mIGRlY2xhcmF0aW9ucyB0aGF0IGNh biBiZQorc3Vic3RpdHV0ZWQgaW50byB5b3VyIHByb2dyYW0pOyBtYWNybyBleHBhbnNpb24gKHlv dSBjYW4gZGVmaW5lIG1hY3JvcywKK2FuZCB0aGUgQyBwcmVwcm9jZXNzb3Igd2lsbCByZXBsYWNl IHRoZSBtYWNyb3Mgd2l0aCB0aGVpciBkZWZpbml0aW9ucwordGhyb3VnaG91dCB0aGUgcHJvZ3Jh bSk7IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uICh1c2luZyBzcGVjaWFsCitwcmVwcm9jZXNzaW5n IGRpcmVjdGl2ZXMsIHlvdSBjYW4gaW5jbHVkZSBvciBleGNsdWRlIHBhcnRzIG9mIHRoZQorcHJv Z3JhbSBhY2NvcmRpbmcgdG8gdmFyaW91cyBjb25kaXRpb25zKTsgYW5kIGxpbmUgY29udHJvbCAo aWYgeW91IHVzZQorYSBwcm9ncmFtIHRvIGNvbWJpbmUgb3IgcmVhcnJhbmdlIHNvdXJjZSBmaWxl cyBpbnRvIGFuIGludGVybWVkaWF0ZQorZmlsZSB3aGljaCBpcyB0aGVuIGNvbXBpbGVkLCB5b3Ug Y2FuIHVzZSBsaW5lIGNvbnRyb2wgdG8gaW5mb3JtIHRoZQorY29tcGlsZXIgYWJvdXQgd2hlcmUg ZWFjaCBzb3VyY2UgbGluZSBvcmlnaW5hdGVkKS4KKworWW91IHNob3VsZCBpbnN0YWxsIHRoaXMg cGFja2FnZSBpZiB5b3UgYXJlIGEgQyBwcm9ncmFtbWVyIGFuZCB5b3UgdXNlCittYWNyb3MuCisK KyVwYWNrYWdlIGduYXQKK1N1bW1hcnk6IEFkYSA5NSBzdXBwb3J0IGZvciBHQ0MKK0dyb3VwOiBE ZXZlbG9wbWVudC9MYW5ndWFnZXMKK1JlcXVpcmVzOiBnY2MgPSAle3ZlcnNpb259LSV7cmVsZWFz ZX0sIGxpYmduYXQgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KK09ic29sZXRlczogZ25hdC1kZXZl bCwgZ2NjMy1nbmF0CitQcmVyZXE6IC9zYmluL2luc3RhbGwtaW5mbworQXV0b3JlcTogdHJ1ZQor CislZGVzY3JpcHRpb24gZ25hdAorR05BVCBpcyBhIEdOVSBBZGEgOTUgZnJvbnQtZW5kIHRvIEdD Qy4gVGhpcyBwYWNrYWdlIGluY2x1ZGVzIGRldmVsb3BtZW50IHRvb2xzLAordGhlIGRvY3VtZW50 cyBhbmQgQWRhIDk1IGNvbXBpbGVyLgorCislcGFja2FnZSAtbiBsaWJnbmF0CitTdW1tYXJ5OiBH TlUgQWRhIDk1IHJ1bnRpbWUgc2hhcmVkIGxpYnJhcmllcworR3JvdXA6IFN5c3RlbSBFbnZpcm9u bWVudC9MaWJyYXJpZXMKK09ic29sZXRlczogZ25hdCBsaWJnbmF0MworQXV0b3JlcTogdHJ1ZQor CislZGVzY3JpcHRpb24gLW4gbGliZ25hdAorR05BVCBpcyBhIEdOVSBBZGEgOTUgZnJvbnQtZW5k IHRvIEdDQy4gVGhpcyBwYWNrYWdlIGluY2x1ZGVzIHNoYXJlZCBsaWJyYXJpZXMsCit3aGljaCBh cmUgcmVxdWlyZWQgdG8gcnVuIHByb2dyYW1zIGNvbXBpbGVkIHdpdGggdGhlIEdOQVQuCisKKyVw cmVwCislc2V0dXAgLXEgLW4gZ2NjLSV7dmVyc2lvbn0tJXtEQVRFfQorJXBhdGNoMSAtcDAgLWIg LmJ1aWxkLWlkfgorJXBhdGNoMiAtcDAgLWIgLmMrKy1idWlsdGluLXJlZGVjbH4KKyVwYXRjaDMg LXAwIC1iIC5pYTY0LWxpYnVud2luZH4KKyVwYXRjaDQgLXAwIC1iIC5qYXZhLW5vbXVsdGl+Cisl cGF0Y2g1IC1wMCAtYiAucHBjMzItcmV0YWRkcn4KKyVwYXRjaDYgLXAwIC1iIC5wcGM2NC1pYTY0 LUdOVS1zdGFja34KKyVwYXRjaDcgLXAwIC1iIC5wcjI3ODk4fgorJXBhdGNoOCAtcDAgLWIgLnBy MzIxMzl+CislcGF0Y2g5IC1wMCAtYiAucHIzMzc2M34KKyVwYXRjaDEwIC1wMCAtYiAucHIzMjYz Nn4KKyVwYXRjaDExIC1wMCAtYiAucmgzMzA3NzF+CislcGF0Y2gxMiAtcDAgLWIgLnJoMzQxMjIx fgorJXBhdGNoMTMgLXAwIC1iIC5saWJqYXZhLXRlc3R+CislcGF0Y2gxNCAtcDAgLUUgLWIgLnBy MzQ0Mjd+CisKKyVpZiAle2Jvb3RzdHJhcF9qYXZhfQordGFyIHhqZiAle1NPVVJDRTEwfQorJWVu ZGlmCisKK3NlZCAtaSAtZSAncy80XC4zXC4wLzQuMy4wLycgZ2NjL0JBU0UtVkVSCitlY2hvICco UmVkIEhhdCAle3ZlcnNpb259LSV7Z2NjX3JlbGVhc2V9KScgPiBnY2MvREVWLVBIQVNFCisKK2Nw IC1hIGxpYnN0ZGMrKy12My9jb25maWcvY3B1L2l7NCwzfTg2L2F0b21pY2l0eS5oCisKKyMgSGFj ayB0byBhdm9pZCBidWlsZGluZyBtdWx0aWxpYiBsaWJqYXZhCitwZXJsIC1waSAtZSAncy9eYWxs OiBhbGwtcmVkaXJlY3QvaWZlcSAoXCQoTVVMVElTVUJESVIpLClcbmFsbDogYWxsLXJlZGlyZWN0 XG5lbHNlXG5hbGw6XG5cdGVjaG8gTXVsdGlsaWIgbGliamF2YSBidWlsZCBkaXNhYmxlZFxuZW5k aWYvJyBsaWJqYXZhL01ha2VmaWxlLmluCitwZXJsIC1waSAtZSAncy9eaW5zdGFsbDogaW5zdGFs bC1yZWRpcmVjdC9pZmVxIChcJChNVUxUSVNVQkRJUiksKVxuaW5zdGFsbDogaW5zdGFsbC1yZWRp cmVjdFxuZWxzZVxuaW5zdGFsbDpcblx0ZWNobyBNdWx0aWxpYiBsaWJqYXZhIGluc3RhbGwgZGlz YWJsZWRcbmVuZGlmLycgbGliamF2YS9NYWtlZmlsZS5pbgorcGVybCAtcGkgLWUgJ3MvXmNoZWNr OiBjaGVjay1yZWRpcmVjdC9pZmVxIChcJChNVUxUSVNVQkRJUiksKVxuY2hlY2s6IGNoZWNrLXJl ZGlyZWN0XG5lbHNlXG5jaGVjazpcblx0ZWNobyBNdWx0aWxpYiBsaWJqYXZhIGNoZWNrIGRpc2Fi bGVkXG5lbmRpZi8nIGxpYmphdmEvTWFrZWZpbGUuaW4KK3BlcmwgLXBpIC1lICdzL15hbGw6IGFs bC1yZWN1cnNpdmUvaWZlcSAoXCQoTVVMVElTVUJESVIpLClcbmFsbDogYWxsLXJlY3Vyc2l2ZVxu ZWxzZVxuYWxsOlxuXHRlY2hvIE11bHRpbGliIGxpYmphdmEgYnVpbGQgZGlzYWJsZWRcbmVuZGlm LycgbGliamF2YS9NYWtlZmlsZS5pbgorcGVybCAtcGkgLWUgJ3MvXmluc3RhbGw6IGluc3RhbGwt cmVjdXJzaXZlL2lmZXEgKFwkKE1VTFRJU1VCRElSKSwpXG5pbnN0YWxsOiBpbnN0YWxsLXJlY3Vy c2l2ZVxuZWxzZVxuaW5zdGFsbDpcblx0ZWNobyBNdWx0aWxpYiBsaWJqYXZhIGluc3RhbGwgZGlz YWJsZWRcbmVuZGlmLycgbGliamF2YS9NYWtlZmlsZS5pbgorcGVybCAtcGkgLWUgJ3MvXmNoZWNr OiBjaGVjay1yZWN1cnNpdmUvaWZlcSAoXCQoTVVMVElTVUJESVIpLClcbmNoZWNrOiBjaGVjay1y ZWN1cnNpdmVcbmVsc2VcbmNoZWNrOlxuXHRlY2hvIE11bHRpbGliIGxpYmphdmEgY2hlY2sgZGlz YWJsZWRcbmVuZGlmLycgbGliamF2YS9NYWtlZmlsZS5pbgorCisuL2NvbnRyaWIvZ2NjX3VwZGF0 ZSAtLXRvdWNoCisKKyVpZmFyY2ggcHBjCitpZiBbIC1kIGxpYnN0ZGMrKy12My9jb25maWcvYWJp L3Bvd2VycGM2NC1saW51eC1nbnUgXTsgdGhlbgorICBta2RpciAtcCBsaWJzdGRjKystdjMvY29u ZmlnL2FiaS9wb3dlcnBjNjQtbGludXgtZ251LzY0CisgIG12IGxpYnN0ZGMrKy12My9jb25maWcv YWJpL3Bvd2VycGM2NC1saW51eC1nbnUveyw2NC99YmFzZWxpbmVfc3ltYm9scy50eHQKKyAgbXYg bGlic3RkYysrLXYzL2NvbmZpZy9hYmkvcG93ZXJwYzY0LWxpbnV4LWdudS97MzIvLH1iYXNlbGlu ZV9zeW1ib2xzLnR4dAorICBybSAtcmYgbGlic3RkYysrLXYzL2NvbmZpZy9hYmkvcG93ZXJwYzY0 LWxpbnV4LWdudS8zMgorZmkKKyVlbmRpZgorJWlmYXJjaCBzcGFyYworaWYgWyAtZCBsaWJzdGRj KystdjMvY29uZmlnL2FiaS9zcGFyYzY0LWxpbnV4LWdudSBdOyB0aGVuCisgIG1rZGlyIC1wIGxp YnN0ZGMrKy12My9jb25maWcvYWJpL3NwYXJjNjQtbGludXgtZ251LzY0CisgIG12IGxpYnN0ZGMr Ky12My9jb25maWcvYWJpL3NwYXJjNjQtbGludXgtZ251L3ssNjQvfWJhc2VsaW5lX3N5bWJvbHMu dHh0CisgIG12IGxpYnN0ZGMrKy12My9jb25maWcvYWJpL3NwYXJjNjQtbGludXgtZ251L3szMi8s fWJhc2VsaW5lX3N5bWJvbHMudHh0CisgIHJtIC1yZiBsaWJzdGRjKystdjMvY29uZmlnL2FiaS9z cGFyYzY0LWxpbnV4LWdudS8zMgorZmkKKyVlbmRpZgorCislYnVpbGQKKworcm0gLWZyIG9iai0l e2djY190YXJnZXRfcGxhdGZvcm19Citta2RpciBvYmotJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQor Y2Qgb2JqLSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KKworaWYgWyAhIC1mIC91c3IvbGliL2xvY2Fs ZS9kZV9ERS9MQ19DVFlQRSBdOyB0aGVuCisgIG1rZGlyIGxvY2FsZQorICBsb2NhbGVkZWYgLWYg SVNPLTg4NTktMSAtaSBkZV9ERSBsb2NhbGUvZGVfREUKKyAgZXhwb3J0IExPQ1BBVEg9YHB3ZGAv bG9jYWxlOi91c3IvbGliL2xvY2FsZQorZmkKKworJWlmICV7YnVpbGRfamF2YX0KKyVpZiAhJXti b290c3RyYXBfamF2YX0KKyMgSWYgd2UgZG9uJ3QgaGF2ZSBnamF2YWggaW4gJFBBVEgsIHRyeSB0 byBidWlsZCBpdCB3aXRoIHRoZSBvbGQgZ2lqCitta2RpciBqYXZhX2hhY2tzCitjZCBqYXZhX2hh Y2tzCitpZiBbICEgLXggL3Vzci9iaW4vZ2phdmFoIF07IHRoZW4KKyAgY3AgLWEgLi4vLi4vbGli amF2YS9jbGFzc3BhdGgvdG9vbHMvZXh0ZXJuYWwgZXh0ZXJuYWwKKyAgbWtkaXIgLXAgZ251L2Ns YXNzcGF0aC90b29scworICBjcCAtYSAuLi8uLi9saWJqYXZhL2NsYXNzcGF0aC90b29scy9nbnUv Y2xhc3NwYXRoL3Rvb2xzL3tjb21tb24samF2YWgsZ2V0b3B0fSBnbnUvY2xhc3NwYXRoL3Rvb2xz LworICBjcCAtYSAuLi8uLi9saWJqYXZhL2NsYXNzcGF0aC9yZXNvdXJjZS9nbnUvY2xhc3NwYXRo L3Rvb2xzL2NvbW1vbi9NZXNzYWdlcy5wcm9wZXJ0aWVzIGdudS9jbGFzc3BhdGgvdG9vbHMvY29t bW9uCisgIGNkIGV4dGVybmFsL2FzbTsgZm9yIGkgaW4gYGZpbmQgLiAtbmFtZSBcKi5qYXZhYDsg ZG8gZ2NqIC0tZW5jb2RpbmcgSVNPLTg4NTktMSAtQyAkaSAtSS47IGRvbmU7IGNkIC4uLy4uCisg IGZvciBpIGluIGBmaW5kIGdudSAtbmFtZSBcKi5qYXZhYDsgZG8gZ2NqIC1DICRpIC1JLiAtSWV4 dGVybmFsL2FzbS87IGRvbmUKKyAgZ2NqIC1maW5kaXJlY3QtZGlzcGF0Y2ggLU8yIC1mbWFpbj1n bnUuY2xhc3NwYXRoLnRvb2xzLmphdmFoLk1haW4gLUkuIC1JZXh0ZXJuYWwvYXNtLyBgZmluZCAu IC1uYW1lIFwqLmNsYXNzYCAtbyBnamF2YWgucmVhbAorICBjYXQgPiBnamF2YWggPDxFT0YKKyMh L2Jpbi9zaAorZXhwb3J0IENMQVNTUEFUSD1gcHdkYCR7Q0xBU1NQQVRIOis6JENMQVNTUEFUSH0K K2V4ZWMgYHB3ZGAvZ2phdmFoLnJlYWwgIlwkQCIKK0VPRgorICBjaG1vZCAreCBgcHdkYC9namF2 YWgKK2ZpCitjYXQgPiBlY2oxIDw8RU9GCisjIS9iaW4vc2gKK2V4ZWMgZ2lqIC1jcCAvdXNyL3No YXJlL2phdmEvZWNsaXBzZS1lY2ouamFyIG9yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5jb21waWxl ci5iYXRjaC5HQ0NNYWluICJcJEAiCitFT0YKK2NobW9kICt4IGBwd2RgL2VjajEKK2V4cG9ydCBQ QVRIPWBwd2RgJHtQQVRIOis6JFBBVEh9CitjZCAuLgorJWVuZGlmCislZW5kaWYKKworQ0M9Z2Nj CitPUFRfRkxBR1M9YGVjaG8gJFJQTV9PUFRfRkxBR1N8c2VkIC1lICdzL1woLVdwLFwpXD8tRF9G T1JUSUZZX1NPVVJDRT1bMTJdLy9nJ2AKK09QVF9GTEFHUz1gZWNobyAkT1BUX0ZMQUdTfHNlZCAt ZSAncy8tbTY0Ly9nO3MvLW0zMi8vZztzLy1tMzEvL2cnYAorJWlmYXJjaCBzcGFyYyBzcGFyYzY0 CitPUFRfRkxBR1M9YGVjaG8gJE9QVF9GTEFHU3xzZWQgLWUgJ3MvLW1jcHU9dWx0cmFzcGFyYy8t bXR1bmU9dWx0cmFzcGFyYy9nO3MvLW1jcHU9dls3OF0vL2cnYAorJWVuZGlmCislaWZhcmNoIHNw YXJjNjQKK2NhdCA+IGdjYzY0IDw8IkVPRiIKKyMhL2Jpbi9zaAorZXhlYyAvdXNyL2Jpbi9nY2Mg LW02NCAiJEAiCitFT0YKK2NobW9kICt4IGdjYzY0CitDQz1gcHdkYC9nY2M2NAorJWVuZGlmCisl aWZhcmNoIHBwYzY0CitpZiBnY2MgLW02NCAteGMgLVMgL2Rldi9udWxsIC1vIC0gPiAvZGV2L251 bGwgMj4mMTsgdGhlbgorICBjYXQgPiBnY2M2NCA8PCJFT0YiCisjIS9iaW4vc2gKK2V4ZWMgL3Vz ci9iaW4vZ2NjIC1tNjQgIiRAIgorRU9GCisgIGNobW9kICt4IGdjYzY0CisgIENDPWBwd2RgL2dj YzY0CitmaQorJWVuZGlmCitPUFRfRkxBR1M9YGVjaG8gIiRPUFRfRkxBR1MiIHwgc2VkIC1lICdz L1tbOmJsYW5rOl1dXCsvIC9nJ2AKK2Nhc2UgIiRPUFRfRkxBR1MiIGluCisgICotZmFzeW5jaHJv bm91cy11bndpbmQtdGFibGVzKikKKyAgICBzZWQgLWkgLWUgJ3MvLWZuby1leGNlcHRpb25zIC8t Zm5vLWV4Y2VwdGlvbnMgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcy8nIFwKKyAgICAg IC4uL2djYy9NYWtlZmlsZS5pbgorICAgIDs7Citlc2FjCitDQz0iJENDIiBDRkxBR1M9IiRPUFRf RkxBR1MiIENYWEZMQUdTPSJgZWNobyAkT1BUX0ZMQUdTIHwgc2VkICdzLyAtV2FsbCAvIC9nJ2Ai IFhDRkxBR1M9IiRPUFRfRkxBR1MiIFRDRkxBR1M9IiRPUFRfRkxBR1MiIFwKKwlHQ0pGTEFHUz0i JE9QVF9GTEFHUyIgXAorCS4uL2NvbmZpZ3VyZSAtLXByZWZpeD0le19wcmVmaXh9IC0tbWFuZGly PSV7X21hbmRpcn0gLS1pbmZvZGlyPSV7X2luZm9kaXJ9IFwKKwktLXdpdGgtYnVndXJsPWh0dHA6 Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhIC0tZW5hYmxlLWJvb3RzdHJhcCBcCisJLS1l bmFibGUtc2hhcmVkIC0tZW5hYmxlLXRocmVhZHM9cG9zaXggLS1lbmFibGUtY2hlY2tpbmc9cmVs ZWFzZSBcCisJLS13aXRoLXN5c3RlbS16bGliIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCAtLWRpc2Fi bGUtbGlidW53aW5kLWV4Y2VwdGlvbnMgXAorJWlmICEle2J1aWxkX2FkYX0KKwktLWVuYWJsZS1s YW5ndWFnZXM9YyxjKyssb2JqYyxvYmotYysrLGphdmEsZm9ydHJhbiBcCislZWxzZQorCS0tZW5h YmxlLWxhbmd1YWdlcz1jLGMrKyxvYmpjLG9iai1jKyssamF2YSxmb3J0cmFuLGFkYSBcCislZW5k aWYKKyVpZiAhJXtidWlsZF9qYXZhfQorCS0tZGlzYWJsZS1saWJnY2ogXAorJWVsc2UKKwktLWVu YWJsZS1qYXZhLWF3dD1ndGsgLS1kaXNhYmxlLWRzc2kgLS1lbmFibGUtcGx1Z2luIFwKKwktLXdp dGgtamF2YS1ob21lPSV7X3ByZWZpeH0vbGliL2p2bS9qYXZhLTEuNS4wLWdjai0xLjUuMC4wL2py ZSBcCisJLS1lbmFibGUtbGliZ2NqLW11bHRpZmlsZSAtLWVuYWJsZS1qYXZhLW1haW50YWluZXIt bW9kZSBcCisJLS13aXRoLWVjai1qYXI9L3Vzci9zaGFyZS9qYXZhL2VjbGlwc2UtZWNqLmphciBc CisJLS1kaXNhYmxlLWxpYmphdmEtbXVsdGlsaWIgXAorJWVuZGlmCislaWZhcmNoICV7YXJtfQor CS0tZGlzYWJsZS1zamxqLWV4Y2VwdGlvbnMgXAorJWVuZGlmCislaWZhcmNoIHBwYyBwcGM2NAor CS0tZW5hYmxlLXNlY3VyZXBsdCBcCislZW5kaWYKKyVpZmFyY2ggc3BhcmMgcHBjIHBwYzY0IHMz OTAgczM5MHggYWxwaGEKKwktLXdpdGgtbG9uZy1kb3VibGUtMTI4IFwKKyVlbmRpZgorJWlmYXJj aCBzcGFyYworCS0tYnVpbGQ9JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfSAtLXRhcmdldD0le2djY190 YXJnZXRfcGxhdGZvcm19IC0td2l0aC1jcHU9djcKKyVlbmRpZgorJWlmYXJjaCBwcGMKKwktLWJ1 aWxkPSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0gLS10YXJnZXQ9JXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fSAtLXdpdGgtY3B1PWRlZmF1bHQzMgorJWVuZGlmCislaWZhcmNoICV7aXg4Nn0geDg2XzY0CisJ LS13aXRoLWNwdT1nZW5lcmljIFwKKyVlbmRpZgorJWlmYXJjaCBzMzkwIHMzOTB4CisJLS13aXRo LXR1bmU9ejktMTA5IFwKKyVlbmRpZgorJWlmbmFyY2ggc3BhcmMgcHBjCisJLS1idWlsZD0le2dj Y190YXJnZXRfcGxhdGZvcm19CislZW5kaWYKKworR0NKRkxBR1M9IiRPUFRfRkxBR1MiIG1ha2Ug JXs/X3NtcF9tZmxhZ3N9IEJPT1RfQ0ZMQUdTPSIkT1BUX0ZMQUdTIiBib290c3RyYXAKKyNHQ0pG TEFHUz0iJE9QVF9GTEFHUyIgbWFrZSAlez9fc21wX21mbGFnc30gQk9PVF9DRkxBR1M9IiRPUFRf RkxBR1MiIHByb2ZpbGVkYm9vdHN0cmFwCisKKyMgcnVuIHRoZSB0ZXN0cy4KK21ha2UgJXs/X3Nt cF9tZmxhZ3N9IC1rIGNoZWNrIFJVTlRFU1RGTEFHUz0iQUxUX0NDX1VOREVSX1RFU1Q9Z2NjIEFM VF9DWFhfVU5ERVJfVEVTVD1nKysiIHx8IDoKK2NkIGdjYworbXYgdGVzdHN1aXRleywubm9ybWFs fQorbWFrZSAlez9fc21wX21mbGFnc30gLWsgXAorICBgc2VkIC1uICdzL2NoZWNrLWFkYS8vO3Mv XkNIRUNLX1RBUkdFVFNbWzpibGFuazpdXSo9W1s6Ymxhbms6XV0qLy9wJyBNYWtlZmlsZWAgXAor ICBSVU5URVNURkxBR1M9Ii0tdGFyZ2V0X2JvYXJkPXVuaXgvLWZzdGFjay1wcm90ZWN0b3IgQUxU X0NDX1VOREVSX1RFU1Q9Z2NjIEFMVF9DWFhfVU5ERVJfVEVTVD1nKysiIHx8IDoKK212IHRlc3Rz dWl0ZXssLnNzcH0KK212IHRlc3RzdWl0ZXsubm9ybWFsLH0KK2NkIC4uCitlY2hvID09PT09PT09 PT09PT09PT09PT09VEVTVElORz09PT09PT09PT09PT09PT09PT09PT09PT0KKyggLi4vY29udHJp Yi90ZXN0X3N1bW1hcnkgfHwgOiApIDI+JjEgfCBzZWQgLW4gJy9eY2F0LipFT0YvLC9eRU9GL3sv XmNhdC4qRU9GL2Q7L15FT0YvZDsvXkxBU1RfVVBEQVRFRDovZDtwO30nCitlY2hvID09PT09PT09 PT09PT09PT09PT09VEVTVElORyBFTkQ9PT09PT09PT09PT09PT09PT09PT0KK21rZGlyIHRlc3Rs b2dzLSV7X3RhcmdldF9wbGF0Zm9ybX0tJXt2ZXJzaW9ufS0le3JlbGVhc2V9Citmb3IgaSBpbiBg ZmluZCAuIC1uYW1lIFwqLmxvZyB8IGdyZXAgLUYgdGVzdHN1aXRlLyB8IGdyZXAgLXYgJ2NvbmZp Zy5sb2dcfGFjYXRzXHxhZGEnYDsgZG8KKyAgbG4gJGkgdGVzdGxvZ3MtJXtfdGFyZ2V0X3BsYXRm b3JtfS0le3ZlcnNpb259LSV7cmVsZWFzZX0vIHx8IDoKK2RvbmUKK2ZvciBpIGluIGBmaW5kIC4g LW5hbWUgXCoubG9nIHwgZ3JlcCAtRiB0ZXN0c3VpdGUuc3NwLyB8IGdyZXAgLXYgJ2NvbmZpZy5s b2dcfGFjYXRzXHxhZGEnYDsgZG8KKyAgbG4gJGkgdGVzdGxvZ3MtJXtfdGFyZ2V0X3BsYXRmb3Jt fS0le3ZlcnNpb259LSV7cmVsZWFzZX0vc3NwLWBiYXNlbmFtZSAkaWAgfHwgOgorZG9uZQordGFy IGNmIC0gdGVzdGxvZ3MtJXtfdGFyZ2V0X3BsYXRmb3JtfS0le3ZlcnNpb259LSV7cmVsZWFzZX0g fCBiemlwMiAtOWMgXAorICB8IHV1ZW5jb2RlIHRlc3Rsb2dzLSV7X3RhcmdldF9wbGF0Zm9ybX0u dGFyLmJ6MiB8fCA6CitybSAtcmYgdGVzdGxvZ3MtJXtfdGFyZ2V0X3BsYXRmb3JtfS0le3ZlcnNp b259LSV7cmVsZWFzZX0KKworIyBNYWtlIHByb3RvaXplCittYWtlIC1DIGdjYyBDQz0iLi94Z2Nj IC1CIC4vIC1PMiIgcHJvdG8KKworIyBNYWtlIGdlbmVyYXRlZCBtYW4gcGFnZXMgZXZlbiBpZiBQ b2Q6Ok1hbiBpcyBub3QgbmV3IGVub3VnaAorcGVybCAtcGkgLWUgJ3MvaGVhZDMvaGVhZDIvJyAu Li9jb250cmliL3RleGkycG9kLnBsCitmb3IgaSBpbiAuLi9nY2MvZG9jLyoudGV4aTsgZG8KKyAg Y3AgLWEgJGkgJGkub3JpZzsgc2VkICdzL2Z0YWJsZS90YWJsZS8nICRpLm9yaWcgPiAkaQorZG9u ZQorbWFrZSAtQyBnY2MgZ2VuZXJhdGVkLW1hbnBhZ2VzCitmb3IgaSBpbiAuLi9nY2MvZG9jLyou dGV4aTsgZG8gbXYgLWYgJGkub3JpZyAkaTsgZG9uZQorCisjIENvcHkgdmFyaW91cyBkb2MgZmls ZXMgaGVyZSBhbmQgdGhlcmUKK2NkIC4uCitta2RpciAtcCBycG0uZG9jL2dmb3J0cmFuIHJwbS5k b2Mvb2JqYworbWtkaXIgLXAgcnBtLmRvYy9ib2VobS1nYyBycG0uZG9jL2xpYmZmaSBycG0uZG9j L2xpYmphdmEKK21rZGlyIC1wIHJwbS5kb2MvY2hhbmdlbG9ncy97Z2NjL2NwLGdjYy9qYXZhLGdj Yy9hZGEsbGlic3RkYysrLXYzLGxpYm9iamMsbGlibXVkZmxhcCxsaWJnb21wfQorc2VkIC1lICdz LEBWRVJTSU9OQCwle2djY192ZXJzaW9ufSwnICV7U09VUkNFMn0gPiBycG0uZG9jL1JFQURNRS5s aWJnY2p3ZWJwbHVnaW4uc28KKworZm9yIGkgaW4ge2djYyxnY2MvY3AsZ2NjL2phdmEsZ2NjL2Fk YSxsaWJzdGRjKystdjMsbGlib2JqYyxsaWJtdWRmbGFwLGxpYmdvbXB9L0NoYW5nZUxvZyo7IGRv CisJY3AgLXAgJGkgcnBtLmRvYy9jaGFuZ2Vsb2dzLyRpCitkb25lCisKKyhjZCBnY2MvZm9ydHJh bjsgZm9yIGkgaW4gQ2hhbmdlTG9nKjsgZG8KKwljcCAtcCAkaSAuLi8uLi9ycG0uZG9jL2dmb3J0 cmFuLyRpCitkb25lKQorKGNkIGxpYmdmb3J0cmFuOyBmb3IgaSBpbiBDaGFuZ2VMb2cqOyBkbwor CWNwIC1wICRpIC4uL3JwbS5kb2MvZ2ZvcnRyYW4vJGkubGliZ2ZvcnRyYW4KK2RvbmUpCisoY2Qg Z2NjL29iamM7IGZvciBpIGluIFJFQURNRSo7IGRvCisJY3AgLXAgJGkgLi4vLi4vcnBtLmRvYy9v YmpjLyRpLm9iamMKK2RvbmUpCisoY2QgbGlib2JqYzsgZm9yIGkgaW4gUkVBRE1FKjsgZG8KKwlj cCAtcCAkaSAuLi9ycG0uZG9jL29iamMvJGkubGlib2JqYworZG9uZSkKKyhjZCBib2VobS1nYzsg Zm9yIGkgaW4gQ2hhbmdlTG9nKjsgZG8KKwljcCAtcCAkaSAuLi9ycG0uZG9jL2JvZWhtLWdjLyRp LmdjCitkb25lKQorKGNkIGxpYmZmaTsgZm9yIGkgaW4gQ2hhbmdlTG9nKiBSRUFETUUqIExJQ0VO U0U7IGRvCisJY3AgLXAgJGkgLi4vcnBtLmRvYy9saWJmZmkvJGkubGliZmZpCitkb25lKQorKGNk IGxpYmphdmE7IGZvciBpIGluIENoYW5nZUxvZyogUkVBRE1FKjsgZG8KKwljcCAtcCAkaSAuLi9y cG0uZG9jL2xpYmphdmEvJGkubGliamF2YQorZG9uZSkKK2NwIC1wIGxpYmphdmEvTElCR0NKX0xJ Q0VOU0UgcnBtLmRvYy9saWJqYXZhLworCitybSAtZiBycG0uZG9jL2NoYW5nZWxvZ3MvZ2NjL0No YW5nZUxvZy5bMS05XQorZmluZCBycG0uZG9jIC1uYW1lIFwqQ2hhbmdlTG9nXCogfCB4YXJncyBi emlwMiAtOQorCislaWYgJXtidWlsZF9qYXZhX3Rhcn0KK2ZpbmQgbGliamF2YSAtbmFtZSBcKi5o IC10eXBlIGYgfCB4YXJncyBncmVwIC1sICcvLyBETyBOT1QgRURJVCBUSElTIEZJTEUgLSBpdCBp cyBtYWNoaW5lIGdlbmVyYXRlZCcgPiBsaWJqYXZhLWNsYXNzZXMubGlzdAorZmluZCBsaWJqYXZh IC1uYW1lIFwqLmNsYXNzIC10eXBlIGYgPj4gbGliamF2YS1jbGFzc2VzLmxpc3QKK2ZpbmQgbGli amF2YS90ZXN0c3VpdGUgLW5hbWUgXCouamFyIC10eXBlIGYgPj4gbGliamF2YS1jbGFzc2VzLmxp c3QKK3RhciBjZiAtIC1UIGxpYmphdmEtY2xhc3Nlcy5saXN0IHwgYnppcDIgLTkgPiAkUlBNX1NP VVJDRV9ESVIvbGliamF2YS1jbGFzc2VzLSV7dmVyc2lvbn0tJXtyZWxlYXNlfS50YXIuYnoyCisl ZW5kaWYKKworJWluc3RhbGwKK3JtIC1mciAkUlBNX0JVSUxEX1JPT1QKKworcGVybCAtcGkgLWUg XAorICAnc35ocmVmPSJsKGlic3RkY3xhdGVzdCl+aHJlZj0iaHR0cDovL2djYy5nbnUub3JnL29u bGluZWRvY3MvbGlic3RkYysrL2xcMX4nIFwKKyAgbGlic3RkYysrLXYzL2RvY3MvaHRtbC9kb2N1 bWVudGF0aW9uLmh0bWwKK2xuIC1zZiBkb2N1bWVudGF0aW9uLmh0bWwgbGlic3RkYysrLXYzL2Rv Y3MvaHRtbC9pbmRleC5odG1sCisKK2NkIG9iai0le2djY190YXJnZXRfcGxhdGZvcm19CisKK2lm IFsgISAtZiAvdXNyL2xpYi9sb2NhbGUvZGVfREUvTENfQ1RZUEUgXTsgdGhlbgorICBleHBvcnQg TE9DUEFUSD1gcHdkYC9sb2NhbGU6L3Vzci9saWIvbG9jYWxlCitmaQorCislaWYgJXtidWlsZF9q YXZhfQorJWlmICEle2Jvb3RzdHJhcF9qYXZhfQorZXhwb3J0IFBBVEg9YHB3ZGAvamF2YV9oYWNr cyR7UEFUSDorOiRQQVRIfQorJWVuZGlmCislZW5kaWYKKworVEFSR0VUX1BMQVRGT1JNPSV7Z2Nj X3RhcmdldF9wbGF0Zm9ybX0KKworIyBUaGVyZSBhcmUgc29tZSBNUCBidWdzIGluIGxpYnN0ZGMr KyBNYWtlZmlsZXMKK21ha2UgLUMgJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS9saWJzdGRjKystdjMK KworbWFrZSBwcmVmaXg9JFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fSBtYW5kaXI9JFJQTV9CVUlM RF9ST09UJXtfbWFuZGlyfSBcCisgIGluZm9kaXI9JFJQTV9CVUlMRF9ST09UJXtfaW5mb2Rpcn0g aW5zdGFsbAorJWlmICV7YnVpbGRfamF2YX0KK21ha2UgREVTVERJUj0kUlBNX0JVSUxEX1JPT1Qg LUMgJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS9saWJqYXZhIGluc3RhbGwtc3JjLnppcAorJWVuZGlm CislaWYgJXtidWlsZF9hZGF9CitjaG1vZCA2NDQgJFJQTV9CVUlMRF9ST09UJXtfaW5mb2Rpcn0v Z25hdCoKKyVlbmRpZgorCitGVUxMUEFUSD0kUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYi9n Y2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQorRlVMTEVQQVRIPSRSUE1f QlVJTERfUk9PVCV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8l e2djY192ZXJzaW9ufQorCisjIGZpeCBzb21lIHRoaW5ncworbG4gLXNmIGdjYyAkUlBNX0JVSUxE X1JPT1Qle19wcmVmaXh9L2Jpbi9jYworbWtkaXIgLXAgJFJQTV9CVUlMRF9ST09UL2xpYgorbG4g LXNmIC4uJXtfcHJlZml4fS9iaW4vY3BwICRSUE1fQlVJTERfUk9PVC9saWIvY3BwCitsbiAtc2Yg Z2ZvcnRyYW4gJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vZjk1CitybSAtZiAkUlBNX0JV SUxEX1JPT1Qle19pbmZvZGlyfS9kaXIKK2d6aXAgLTkgJFJQTV9CVUlMRF9ST09UJXtfaW5mb2Rp cn0vKi5pbmZvKgorbG4gLXNmIGdjYyAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2Jpbi9nbmF0 Z2NjCisKK2N4eGNvbmZpZz0iYGZpbmQgJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS9saWJzdGRjKyst djMvaW5jbHVkZSAtbmFtZSBjKytjb25maWcuaGAiCitmb3IgaSBpbiBgZmluZCAle2djY190YXJn ZXRfcGxhdGZvcm19L1szNl0qL2xpYnN0ZGMrKy12My9pbmNsdWRlIC1uYW1lIGMrK2NvbmZpZy5o IDI+L2Rldi9udWxsYDsgZG8KKyAgaWYgISBkaWZmIC11cCAkY3h4Y29uZmlnICRpOyB0aGVuCisg ICAgY2F0ID4gJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9pbmNsdWRlL2MrKy8le2djY192ZXJz aW9ufS8le2djY190YXJnZXRfcGxhdGZvcm19L2JpdHMvYysrY29uZmlnLmggPDxFT0YKKyNpZm5k ZWYgX0NQUF9DUFBDT05GSUdfV1JBUFBFUgorI2RlZmluZSBfQ1BQX0NQUENPTkZJR19XUkFQUEVS IDEKKyNpbmNsdWRlIDxiaXRzL3dvcmRzaXplLmg+CisjaWYgX19XT1JEU0laRSA9PSAzMgorJWlm YXJjaCAle211bHRpbGliXzY0X2FyY2hzfQorYGNhdCAkKGZpbmQgJXtnY2NfdGFyZ2V0X3BsYXRm b3JtfS8zMi9saWJzdGRjKystdjMvaW5jbHVkZSAtbmFtZSBjKytjb25maWcuaClgCislZWxzZQor YGNhdCAkKGZpbmQgJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS9saWJzdGRjKystdjMvaW5jbHVkZSAt bmFtZSBjKytjb25maWcuaClgCislZW5kaWYKKyNlbHNlCislaWZhcmNoICV7bXVsdGlsaWJfNjRf YXJjaHN9CitgY2F0ICQoZmluZCAle2djY190YXJnZXRfcGxhdGZvcm19L2xpYnN0ZGMrKy12My9p bmNsdWRlIC1uYW1lIGMrK2NvbmZpZy5oKWAKKyVlbHNlCitgY2F0ICQoZmluZCAle2djY190YXJn ZXRfcGxhdGZvcm19LzY0L2xpYnN0ZGMrKy12My9pbmNsdWRlIC1uYW1lIGMrK2NvbmZpZy5oKWAK KyVlbmRpZgorI2VuZGlmCisjZW5kaWYKK0VPRgorICAgIGJyZWFrCisgIGZpCitkb25lCisKKyMg TnVrZSBiaXRzL3N0ZGMrKy5oLmdjaCBkaXJzCisjIDEpIHRoZXJlIGlzIG5vIGJpdHMvc3RkYysr LmggaGVhZGVyIGluc3RhbGxlZCwgc28gd2hlbiBnY2ggZmlsZSBjYW4ndCBiZQorIyAgICB1c2Vk LCBjb21waWxhdGlvbiBmYWlscworIyAyKSBzb21ldGltZXMgaXQgaXMgaGFyZCB0byBtYXRjaCB0 aGUgZXhhY3Qgb3B0aW9ucyB1c2VkIGZvciBidWlsZGluZworIyAgICBsaWJzdGRjKystdjMgb3Ig dGhleSBhcmVuJ3QgZGVzaXJhYmxlCisjIDMpIHRoZXJlIGFyZSBtdWx0aWxpYiBpc3N1ZXMsIGNv bmZsaWN0cyBldGMuIHdpdGggdGhpcworIyA0KSBpdCBpcyBodWdlCisjIFBlb3BsZSBjYW4gYWx3 YXlzIHByZWNvbXBpbGUgb24gdGhlaXIgb3duIHdoYXRldmVyIHRoZXkgd2FudCwgYnV0CisjIHNo aXBwaW5nIHRoaXMgZm9yIGV2ZXJ5Ym9keSBpcyB1bm5lY2Vzc2FyeS4KK3JtIC1yZiAkUlBNX0JV SUxEX1JPT1Qle19wcmVmaXh9L2luY2x1ZGUvYysrLyV7Z2NjX3ZlcnNpb259LyV7Z2NjX3Rhcmdl dF9wbGF0Zm9ybX0vYml0cy9zdGRjKysuaC5nY2gKKworJWlmYXJjaCBzcGFyYyBzcGFyYzY0Cits biAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2Jpbi8le2djY190YXJnZXRfcGxhdGZvcm19 LWdjYyBcCisgICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vYmluL3NwYXJjLSV7X3ZlbmRvcn0t JXtfdGFyZ2V0X29zfS1nY2MKKyVlbmRpZgorJWlmYXJjaCBwcGMgcHBjNjQKK2xuIC1mICRSUE1f QlVJTERfUk9PVCV7X3ByZWZpeH0vYmluLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0tZ2NjIFwKKyAg JFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vcHBjLSV7X3ZlbmRvcn0tJXtfdGFyZ2V0X29z fS1nY2MKKyVlbmRpZgorCislaWZhcmNoIHNwYXJjIHBwYworRlVMTExQQVRIPSRGVUxMUEFUSC9s aWIzMgorJWVuZGlmCislaWZhcmNoIHNwYXJjNjQgcHBjNjQKK0ZVTExMUEFUSD0kRlVMTFBBVEgv bGliNjQKKyVlbmRpZgoraWYgWyAtbiAiJEZVTExMUEFUSCIgXTsgdGhlbgorICBta2RpciAtcCAk RlVMTExQQVRICitlbHNlCisgIEZVTExMUEFUSD0kRlVMTFBBVEgKK2ZpCisKK2ZpbmQgJFJQTV9C VUlMRF9ST09UIC1uYW1lIFwqLmxhIHwgeGFyZ3Mgcm0gLWYKKyVpZiAle2J1aWxkX2phdmF9Cisj IGdjaiAtc3RhdGljIGRvZXNuJ3Qgd29yayBwcm9wZXJseSBhbnl3YXksIHVubGVzcyB1c2luZyAt LXdob2xlLWFyY2hpdmUKKyMgYW5kIHNhdmluZyAzNU1CIGlzIG5vdCBiYWQuCitmaW5kICRSUE1f QlVJTERfUk9PVCAtbmFtZSBsaWJnY2ouYSAtbyAtbmFtZSBsaWJndGtwZWVyLmEgXAorCQkgICAg IC1vIC1uYW1lIGxpYmdqc21hbHNhLmEgLW8gLW5hbWUgbGliZ2NqLXRvb2xzLmEgLW8gLW5hbWUg bGlianZtLmEgXAorCQkgICAgIC1vIC1uYW1lIGxpYmdpai5hIC1vIC1uYW1lIGxpYmdjal9iYy5h IHwgeGFyZ3Mgcm0gLWYKKworbXYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWIvbGliZ2Nq LnNwZWMgJEZVTExQQVRILworc2VkIC1pIC1lICdzL2xpYjogLyYlJXtzdGF0aWM6JSVlSmF2YSBw cm9ncmFtcyBjYW5ub3QgYmUgbGlua2VkIHN0YXRpY2FsbHl9LycgXAorICAkRlVMTFBBVEgvbGli Z2NqLnNwZWMKKyVlbmRpZgorCitta2RpciAtcCAkUlBNX0JVSUxEX1JPT1QvJXtfbGlifQorbXYg LWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS8le19saWJ9L2xpYmdjY19zLnNvLjEgJFJQTV9C VUlMRF9ST09ULyV7X2xpYn0vbGliZ2NjX3MtJXtnY2NfdmVyc2lvbn0tJXtEQVRFfS5zby4xCitj aG1vZCA3NTUgJFJQTV9CVUlMRF9ST09ULyV7X2xpYn0vbGliZ2NjX3MtJXtnY2NfdmVyc2lvbn0t JXtEQVRFfS5zby4xCitsbiAtc2YgbGliZ2NjX3MtJXtnY2NfdmVyc2lvbn0tJXtEQVRFfS5zby4x ICRSUE1fQlVJTERfUk9PVC8le19saWJ9L2xpYmdjY19zLnNvLjEKK2xuIC1zZiAvJXtfbGlifS9s aWJnY2Nfcy5zby4xICRGVUxMUEFUSC9saWJnY2Nfcy5zbworJWlmYXJjaCBzcGFyYyBwcGMKK2xu IC1zZiAvbGliNjQvbGliZ2NjX3Muc28uMSAkRlVMTFBBVEgvNjQvbGliZ2NjX3Muc28KKyVlbmRp ZgorJWlmYXJjaCAle211bHRpbGliXzY0X2FyY2hzfQorbG4gLXNmIC9saWIvbGliZ2NjX3Muc28u MSAkRlVMTFBBVEgvMzIvbGliZ2NjX3Muc28KKyVlbmRpZgorCittdiAtZiAkUlBNX0JVSUxEX1JP T1Qle19wcmVmaXh9LyV7X2xpYn0vbGliZ29tcC5zcGVjICRGVUxMUEFUSC8KKworJWlmICV7YnVp bGRfYWRhfQorbXYgLWYgJEZVTExQQVRIL2FkYWxpYi9saWJnbmFybC0qLnNvICRSUE1fQlVJTERf Uk9PVCV7X3ByZWZpeH0vJXtfbGlifS8KK212IC1mICRGVUxMUEFUSC9hZGFsaWIvbGliZ25hdC0q LnNvICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS8KK3JtIC1mICRGVUxMUEFUSC9h ZGFsaWIvbGliZ25hcmwuc28qICRGVUxMUEFUSC9hZGFsaWIvbGliZ25hdC5zbyoKKyVlbmRpZgor Citta2RpciAtcCAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYmV4ZWMvZ2V0Y29uZgoraWYg Z2NjL3hnY2MgLUIgZ2NjLyAtRSAtZEQgLXhjIC9kZXYvbnVsbCB8IGdyZXAgX19MT05HX01BWF9f LioyMTQ3NDgzNjQ3OyB0aGVuCisgIGxuIC1zZiBQT1NJWF9WNl9JTFAzMl9PRkYzMiAkUlBNX0JV SUxEX1JPT1Qle19wcmVmaXh9L2xpYmV4ZWMvZ2V0Y29uZi9kZWZhdWx0CitlbHNlCisgIGxuIC1z ZiBQT1NJWF9WNl9MUDY0X09GRjY0ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliZXhlYy9n ZXRjb25mL2RlZmF1bHQKK2ZpCisKKyVpZiAle2J1aWxkX2phdmF9CitpZiBbICIle19saWJ9IiAh PSAibGliIiBdOyB0aGVuCisgIG1rZGlyIC1wICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtf bGlifS9wa2djb25maWcKKyAgc2VkICcvXmxpYmRpci9zL2xpYiQvJXtfbGlifS8nICRSUE1fQlVJ TERfUk9PVCV7X3ByZWZpeH0vbGliL3BrZ2NvbmZpZy9saWJnY2otKi5wYyBcCisgICAgPiAkUlBN X0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vcGtnY29uZmlnL2BiYXNlbmFtZSAkUlBNX0JV SUxEX1JPT1Qle19wcmVmaXh9L2xpYi9wa2djb25maWcvbGliZ2NqLSoucGNgCitmaQorJWVuZGlm CisKK3B1c2hkICRGVUxMUEFUSAoraWYgWyAiJXtfbGlifSIgPSAibGliIiBdOyB0aGVuCitsbiAt c2YgLi4vLi4vLi4vbGlib2JqYy5zby4yIGxpYm9iamMuc28KK2xuIC1zZiAuLi8uLi8uLi9saWJz dGRjKysuc28uNi4qIGxpYnN0ZGMrKy5zbworbG4gLXNmIC4uLy4uLy4uL2xpYmdmb3J0cmFuLnNv LjMuKiBsaWJnZm9ydHJhbi5zbworbG4gLXNmIC4uLy4uLy4uL2xpYmdvbXAuc28uMS4qIGxpYmdv bXAuc28KK2xuIC1zZiAuLi8uLi8uLi9saWJtdWRmbGFwLnNvLjAuKiBsaWJtdWRmbGFwLnNvCits biAtc2YgLi4vLi4vLi4vbGlibXVkZmxhcHRoLnNvLjAuKiBsaWJtdWRmbGFwdGguc28KKyVpZiAl e2J1aWxkX2phdmF9CitsbiAtc2YgLi4vLi4vLi4vbGliZ2NqLnNvLjkuKiBsaWJnY2ouc28KK2xu IC1zZiAuLi8uLi8uLi9saWJnY2otdG9vbHMuc28uOS4qIGxpYmdjai10b29scy5zbworbG4gLXNm IC4uLy4uLy4uL2xpYmdpai5zby45LiogbGliZ2lqLnNvCislZW5kaWYKKyVpZiAle2J1aWxkX2Fk YX0KK2NkIGFkYWxpYgorbG4gLXNmIC4uLy4uLy4uLy4uL2xpYmduYXJsLSouc28gbGliZ25hcmwu c28KK2xuIC1zZiAuLi8uLi8uLi8uLi9saWJnbmFybC0qLnNvIGxpYmduYXJsLTQuMy5zbworbG4g LXNmIC4uLy4uLy4uLy4uL2xpYmduYXQtKi5zbyBsaWJnbmF0LnNvCitsbiAtc2YgLi4vLi4vLi4v Li4vbGliZ25hdC0qLnNvIGxpYmduYXQtNC4zLnNvCitjZCAuLgorJWVuZGlmCitlbHNlCitsbiAt c2YgLi4vLi4vLi4vLi4vJXtfbGlifS9saWJvYmpjLnNvLjIgbGlib2JqYy5zbworbG4gLXNmIC4u Ly4uLy4uLy4uLyV7X2xpYn0vbGlic3RkYysrLnNvLjYuKiBsaWJzdGRjKysuc28KK2xuIC1zZiAu Li8uLi8uLi8uLi8le19saWJ9L2xpYmdmb3J0cmFuLnNvLjMuKiBsaWJnZm9ydHJhbi5zbworbG4g LXNmIC4uLy4uLy4uLy4uLyV7X2xpYn0vbGliZ29tcC5zby4xLiogbGliZ29tcC5zbworbG4gLXNm IC4uLy4uLy4uLy4uLyV7X2xpYn0vbGlibXVkZmxhcC5zby4wLiogbGlibXVkZmxhcC5zbworbG4g LXNmIC4uLy4uLy4uLy4uLyV7X2xpYn0vbGlibXVkZmxhcHRoLnNvLjAuKiBsaWJtdWRmbGFwdGgu c28KKyVpZiAle2J1aWxkX2phdmF9CitsbiAtc2YgLi4vLi4vLi4vLi4vJXtfbGlifS9saWJnY2ou c28uOS4qIGxpYmdjai5zbworbG4gLXNmIC4uLy4uLy4uLy4uLyV7X2xpYn0vbGliZ2NqLXRvb2xz LnNvLjkuKiBsaWJnY2otdG9vbHMuc28KK2xuIC1zZiAuLi8uLi8uLi8uLi8le19saWJ9L2xpYmdp ai5zby45LiogbGliZ2lqLnNvCislZW5kaWYKKyVpZiAle2J1aWxkX2FkYX0KK2NkIGFkYWxpYgor bG4gLXNmIC4uLy4uLy4uLy4uLy4uLyV7X2xpYn0vbGliZ25hcmwtKi5zbyBsaWJnbmFybC5zbwor bG4gLXNmIC4uLy4uLy4uLy4uLy4uLyV7X2xpYn0vbGliZ25hcmwtKi5zbyBsaWJnbmFybC00LjMu c28KK2xuIC1zZiAuLi8uLi8uLi8uLi8uLi8le19saWJ9L2xpYmduYXQtKi5zbyBsaWJnbmF0LnNv CitsbiAtc2YgLi4vLi4vLi4vLi4vLi4vJXtfbGlifS9saWJnbmF0LSouc28gbGliZ25hdC00LjMu c28KK2NkIC4uCislZW5kaWYKK2ZpCislaWYgJXtidWlsZF9qYXZhfQorbXYgLWYgJFJQTV9CVUlM RF9ST09UJXtfcHJlZml4fS8le19saWJ9L2xpYmdjal9iYy5zbyAkRlVMTExQQVRILworJWVuZGlm CittdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGlic3RkYysrLiphICRG VUxMTFBBVEgvCittdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGlic3Vw YysrLiphIC4KK212IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9saWJnZm9y dHJhbi4qYSAuCittdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGlib2Jq Yy4qYSAuCittdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGliZ29tcC4q YSAuCittdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGlibXVkZmxhcHss dGh9LiphICRGVUxMTFBBVEgvCisKKyVpZmFyY2ggc3BhcmMgcHBjCitsbiAtc2YgLi4vLi4vLi4v Li4vLi4vbGliNjQvbGlib2JqYy5zby4yIDY0L2xpYm9iamMuc28KK2xuIC1zZiAuLi9gZWNobyAu Li8uLi8uLi8uLi9saWIvbGlic3RkYysrLnNvLjYuKiB8IHNlZCBzfi9saWIvfi9saWI2NC9+YCA2 NC9saWJzdGRjKysuc28KK2xuIC1zZiAuLi9gZWNobyAuLi8uLi8uLi8uLi9saWIvbGliZ2ZvcnRy YW4uc28uMy4qIHwgc2VkIHN+L2xpYi9+L2xpYjY0L35gIDY0L2xpYmdmb3J0cmFuLnNvCitsbiAt c2YgLi4vYGVjaG8gLi4vLi4vLi4vLi4vbGliL2xpYmdvbXAuc28uMS4qIHwgc2VkIHN+L2xpYi9+ L2xpYjY0L35gIDY0L2xpYmdvbXAuc28KK2xuIC1zZiAuLi9gZWNobyAuLi8uLi8uLi8uLi9saWIv bGlibXVkZmxhcC5zby4wLiogfCBzZWQgc34vbGliL34vbGliNjQvfmAgNjQvbGlibXVkZmxhcC5z bworbG4gLXNmIC4uL2BlY2hvIC4uLy4uLy4uLy4uL2xpYi9saWJtdWRmbGFwdGguc28uMC4qIHwg c2VkIHN+L2xpYi9+L2xpYjY0L35gIDY0L2xpYm11ZGZsYXB0aC5zbworJWlmICV7YnVpbGRfamF2 YX0KK2xuIC1zZiAuLi9gZWNobyAuLi8uLi8uLi8uLi9saWIvbGliZ2NqLnNvLjkuKiB8IHNlZCBz fi9saWIvfi9saWI2NC9+YCA2NC9saWJnY2ouc28KK2xuIC1zZiAuLi9gZWNobyAuLi8uLi8uLi8u Li9saWIvbGliZ2NqLXRvb2xzLnNvLjkuKiB8IHNlZCBzfi9saWIvfi9saWI2NC9+YCA2NC9saWJn Y2otdG9vbHMuc28KK2xuIC1zZiAuLi9gZWNobyAuLi8uLi8uLi8uLi9saWIvbGliZ2lqLnNvLjku KiB8IHNlZCBzfi9saWIvfi9saWI2NC9+YCA2NC9saWJnaWouc28KK2xuIC1zZiBsaWIzMi9saWJn Y2pfYmMuc28gbGliZ2NqX2JjLnNvCitsbiAtc2YgLi4vbGliNjQvbGliZ2NqX2JjLnNvIDY0L2xp Ymdjal9iYy5zbworJWVuZGlmCittdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYjY0 L2xpYnN1cGMrKy4qYSA2NC8KK212IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliNjQv bGliZ2ZvcnRyYW4uKmEgNjQvCittdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYjY0 L2xpYm9iamMuKmEgNjQvCittdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYjY0L2xp YmdvbXAuKmEgNjQvCitsbiAtc2YgbGliMzIvbGlic3RkYysrLmEgbGlic3RkYysrLmEKK2xuIC1z ZiAuLi9saWI2NC9saWJzdGRjKysuYSA2NC9saWJzdGRjKysuYQorbG4gLXNmIGxpYjMyL2xpYm11 ZGZsYXAuYSBsaWJtdWRmbGFwLmEKK2xuIC1zZiAuLi9saWI2NC9saWJtdWRmbGFwLmEgNjQvbGli bXVkZmxhcC5hCitsbiAtc2YgbGliMzIvbGlibXVkZmxhcHRoLmEgbGlibXVkZmxhcHRoLmEKK2xu IC1zZiAuLi9saWI2NC9saWJtdWRmbGFwdGguYSA2NC9saWJtdWRmbGFwdGguYQorJWVuZGlmCisl aWZhcmNoICV7bXVsdGlsaWJfNjRfYXJjaHN9Citta2RpciAtcCAzMgorbG4gLXNmIC4uLy4uLy4u Ly4uL2xpYm9iamMuc28uMiAzMi9saWJvYmpjLnNvCitsbiAtc2YgLi4vYGVjaG8gLi4vLi4vLi4v Li4vbGliNjQvbGlic3RkYysrLnNvLjYuKiB8IHNlZCBzfi8uLi9saWI2NC9+L35gIDMyL2xpYnN0 ZGMrKy5zbworbG4gLXNmIC4uL2BlY2hvIC4uLy4uLy4uLy4uL2xpYjY0L2xpYmdmb3J0cmFuLnNv LjMuKiB8IHNlZCBzfi8uLi9saWI2NC9+L35gIDMyL2xpYmdmb3J0cmFuLnNvCitsbiAtc2YgLi4v YGVjaG8gLi4vLi4vLi4vLi4vbGliNjQvbGliZ29tcC5zby4xLiogfCBzZWQgc34vLi4vbGliNjQv fi9+YCAzMi9saWJnb21wLnNvCitsbiAtc2YgLi4vYGVjaG8gLi4vLi4vLi4vLi4vbGliNjQvbGli bXVkZmxhcC5zby4wLiogfCBzZWQgc34vLi4vbGliNjQvfi9+YCAzMi9saWJtdWRmbGFwLnNvCits biAtc2YgLi4vYGVjaG8gLi4vLi4vLi4vLi4vbGliNjQvbGlibXVkZmxhcHRoLnNvLjAuKiB8IHNl ZCBzfi8uLi9saWI2NC9+L35gIDMyL2xpYm11ZGZsYXB0aC5zbworJWlmICV7YnVpbGRfamF2YX0K K2xuIC1zZiAuLi9gZWNobyAuLi8uLi8uLi8uLi9saWI2NC9saWJnY2ouc28uOS4qIHwgc2VkIHN+ Ly4uL2xpYjY0L34vfmAgMzIvbGliZ2NqLnNvCitsbiAtc2YgLi4vYGVjaG8gLi4vLi4vLi4vLi4v bGliNjQvbGliZ2NqLXRvb2xzLnNvLjkuKiB8IHNlZCBzfi8uLi9saWI2NC9+L35gIDMyL2xpYmdj ai10b29scy5zbworbG4gLXNmIC4uL2BlY2hvIC4uLy4uLy4uLy4uL2xpYjY0L2xpYmdpai5zby45 LiogfCBzZWQgc34vLi4vbGliNjQvfi9+YCAzMi9saWJnaWouc28KKyVlbmRpZgorbXYgLWYgJFJQ TV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWIvbGlic3VwYysrLiphIDMyLworbXYgLWYgJFJQTV9C VUlMRF9ST09UJXtfcHJlZml4fS9saWIvbGliZ2ZvcnRyYW4uKmEgMzIvCittdiAtZiAkUlBNX0JV SUxEX1JPT1Qle19wcmVmaXh9L2xpYi9saWJvYmpjLiphIDMyLworbXYgLWYgJFJQTV9CVUlMRF9S T09UJXtfcHJlZml4fS9saWIvbGliZ29tcC4qYSAzMi8KKyVlbmRpZgorJWlmYXJjaCBzcGFyYzY0 IHBwYzY0CitsbiAtc2YgLi4vbGliMzIvbGlic3RkYysrLmEgMzIvbGlic3RkYysrLmEKK2xuIC1z ZiBsaWI2NC9saWJzdGRjKysuYSBsaWJzdGRjKysuYQorbG4gLXNmIC4uL2xpYjMyL2xpYm11ZGZs YXAuYSAzMi9saWJtdWRmbGFwLmEKK2xuIC1zZiBsaWI2NC9saWJtdWRmbGFwLmEgbGlibXVkZmxh cC5hCitsbiAtc2YgLi4vbGliMzIvbGlibXVkZmxhcHRoLmEgMzIvbGlibXVkZmxhcHRoLmEKK2xu IC1zZiBsaWI2NC9saWJtdWRmbGFwdGguYSBsaWJtdWRmbGFwdGguYQorJWlmICV7YnVpbGRfamF2 YX0KK2xuIC1zZiAuLi9saWIzMi9saWJnY2pfYmMuc28gMzIvbGliZ2NqX2JjLnNvCitsbiAtc2Yg bGliNjQvbGliZ2NqX2JjLnNvIGxpYmdjal9iYy5zbworJWVuZGlmCislZWxzZQorJWlmYXJjaCAl e211bHRpbGliXzY0X2FyY2hzfQorbG4gLXNmIC4uLy4uLy4uLyV7bXVsdGlsaWJfMzJfYXJjaH0t JXtfdmVuZG9yfS0le190YXJnZXRfb3N9LyV7Z2NjX3ZlcnNpb259L2xpYnN0ZGMrKy5hIDMyL2xp YnN0ZGMrKy5hCitsbiAtc2YgLi4vLi4vLi4vJXttdWx0aWxpYl8zMl9hcmNofS0le192ZW5kb3J9 LSV7X3RhcmdldF9vc30vJXtnY2NfdmVyc2lvbn0vbGlibXVkZmxhcC5hIDMyL2xpYm11ZGZsYXAu YQorbG4gLXNmIC4uLy4uLy4uLyV7bXVsdGlsaWJfMzJfYXJjaH0tJXtfdmVuZG9yfS0le190YXJn ZXRfb3N9LyV7Z2NjX3ZlcnNpb259L2xpYm11ZGZsYXB0aC5hIDMyL2xpYm11ZGZsYXB0aC5hCisl aWYgJXtidWlsZF9qYXZhfQorbG4gLXNmIC4uLy4uLy4uLyV7bXVsdGlsaWJfMzJfYXJjaH0tJXtf dmVuZG9yfS0le190YXJnZXRfb3N9LyV7Z2NjX3ZlcnNpb259L2xpYmdjal9iYy5zbyAzMi9saWJn Y2pfYmMuc28KKyVlbmRpZgorJWVuZGlmCislZW5kaWYKKworIyBTdHJpcCBkZWJ1ZyBpbmZvIGZy b20gRm9ydHJhbi9PYmpDL0phdmEgc3RhdGljIGxpYnJhcmllcworc3RyaXAgLWcgYGZpbmQgLiBc KCAtbmFtZSBsaWJnZm9ydHJhbi5hIC1vIC1uYW1lIGxpYm9iamMuYSAtbyAtbmFtZSBsaWJnb21w LmEgXAorCQkgICAgLW8gLW5hbWUgbGlibXVkZmxhcC5hIC1vIC1uYW1lIGxpYm11ZGZsYXB0aC5h IFwKKwkJICAgIC1vIC1uYW1lIGxpYmdjYy5hIC1vIC1uYW1lIGxpYmdjb3YuYSBcKSAtYSAtdHlw ZSBmYAorcG9wZAorY2htb2QgNzU1ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9s aWJnZm9ydHJhbi5zby4zLioKK2NobW9kIDc1NSAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7 X2xpYn0vbGliZ29tcC5zby4xLioKK2NobW9kIDc1NSAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9 LyV7X2xpYn0vbGlibXVkZmxhcHssdGh9LnNvLjAuKgorY2htb2QgNzU1ICRSUE1fQlVJTERfUk9P VCV7X3ByZWZpeH0vJXtfbGlifS9saWJvYmpjLnNvLjIuKgorCislaWYgJXtidWlsZF9hZGF9Citj aG1vZCA3NTUgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS8le19saWJ9L2xpYmduYXJsKnNvKgor Y2htb2QgNzU1ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9saWJnbmF0KnNvKgor JWVuZGlmCisKK212ICRGVUxMUEFUSC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oICRGVUxMUEFU SC9pbmNsdWRlL3N5c2xpbWl0cy5oCittdiAkRlVMTFBBVEgvaW5jbHVkZS1maXhlZC9saW1pdHMu aCAkRlVMTFBBVEgvaW5jbHVkZS9saW1pdHMuaAorZm9yIGggaW4gYGZpbmQgJEZVTExQQVRIL2lu Y2x1ZGUgLW5hbWUgXCouaGA7IGRvCisgIGlmIGdyZXAgLXEgJ0l0IGhhcyBiZWVuIGF1dG8tZWRp dGVkIGJ5IGZpeGluY2x1ZGVzIGZyb20nICRoOyB0aGVuCisgICAgcmg9YGdyZXAgLUEyICdJdCBo YXMgYmVlbiBhdXRvLWVkaXRlZCBieSBmaXhpbmNsdWRlcyBmcm9tJyAkaCB8IHRhaWwgLTEgfCBz ZWQgJ3N8Xi4qIlwoLipcKSIuKiR8XDF8J2AKKyAgICBkaWZmIC11cCAkcmggJGggfHwgOgorICAg IHJtIC1mICRoCisgIGZpCitkb25lCisKK2NhdCA+ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0v YmluL2M4OSA8PCJFT0YiCisjIS9iaW4vc2gKK2ZsPSItc3RkPWM4OSIKK2ZvciBvcHQ7IGRvCisg IGNhc2UgIiRvcHQiIGluCisgICAgLWFuc2l8LXN0ZD1jODl8LXN0ZD1pc285ODk5OjE5OTApIGZs PSIiOzsKKyAgICAtc3RkPSopIGVjaG8gImBiYXNlbmFtZSAkMGAgY2FsbGVkIHdpdGggbm9uIEFO U0kvSVNPIEMgb3B0aW9uICRvcHQiID4mMgorCSAgICBleGl0IDE7OworICBlc2FjCitkb25lCitl eGVjIGdjYyAkZmwgJHsxKyIkQCJ9CitFT0YKK2NhdCA+ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZp eH0vYmluL2M5OSA8PCJFT0YiCisjIS9iaW4vc2gKK2ZsPSItc3RkPWM5OSIKK2ZvciBvcHQ7IGRv CisgIGNhc2UgIiRvcHQiIGluCisgICAgLXN0ZD1jOTl8LXN0ZD1pc285ODk5OjE5OTkpIGZsPSIi OzsKKyAgICAtc3RkPSopIGVjaG8gImBiYXNlbmFtZSAkMGAgY2FsbGVkIHdpdGggbm9uIElTTyBD OTkgb3B0aW9uICRvcHQiID4mMgorCSAgICBleGl0IDE7OworICBlc2FjCitkb25lCitleGVjIGdj YyAkZmwgJHsxKyIkQCJ9CitFT0YKK2NobW9kIDc1NSAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9 L2Jpbi9jPzkKKworbWtkaXIgLXAgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9zYmluCitnY2Mg LXN0YXRpYyAtT3MgJXtTT1VSQ0UxfSAtbyAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L3NiaW4v bGliZ2NjX3Bvc3RfdXBncmFkZQorc3RyaXAgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9zYmlu L2xpYmdjY19wb3N0X3VwZ3JhZGUKKworY2QgLi4KKyVmaW5kX2xhbmcgJXtuYW1lfQorJWZpbmRf bGFuZyBjcHBsaWIKKworIyBSZW1vdmUgYmluYXJpZXMgd2Ugd2lsbCBub3QgYmUgaW5jbHVkaW5n LCBzbyB0aGF0IHRoZXkgZG9uJ3QgZW5kIHVwIGluCisjIGdjYy1kZWJ1Z2luZm8KK3JtIC1mICRS UE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS97bGliZmZpKixsaWJpYmVydHkuYX0KK3Jt IC1mICRGVUxMRVBBVEgvaW5zdGFsbC10b29scy97bWtoZWFkZXJzLGZpeGluY2x9CitybSAtZiAk UlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYi97MzIsNjR9L2xpYmliZXJ0eS5hCitybSAtZiAk UlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGlic3NwKgorCislaWZhcmNoICV7bXVs dGlsaWJfNjRfYXJjaHN9CisjIFJlbW92ZSBsaWJyYXJpZXMgZm9yIHRoZSBvdGhlciBhcmNoIG9u IG11bHRpbGliIGFyY2hlcworcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWIvbGli Ki5zbyoKK3JtIC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliL2xpYiouYQorJWVsc2UK KyVpZmFyY2ggc3BhcmMgcHBjCitybSAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYjY0 L2xpYiouc28qCitybSAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYjY0L2xpYiouYQor JWVuZGlmCislZW5kaWYKKworJWlmICV7YnVpbGRfamF2YX0KK21rZGlyIC1wICRSUE1fQlVJTERf Uk9PVCV7X3ByZWZpeH0vc2hhcmUvamF2YS9nY2otZW5kb3JzZWQgXAorCSAkUlBNX0JVSUxEX1JP T1Qle19wcmVmaXh9LyV7X2xpYn0vZ2NqLSV7dmVyc2lvbn0vY2xhc3NtYXAuZGIuZAorY2htb2Qg NzU1ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vc2hhcmUvamF2YS9nY2otZW5kb3JzZWQgXAor CSAgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS8le19saWJ9L2djai0le3ZlcnNpb259IFwKKwkg ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9nY2otJXt2ZXJzaW9ufS9jbGFzc21h cC5kYi5kCit0b3VjaCAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vZ2NqLSV7dmVy c2lvbn0vY2xhc3NtYXAuZGIKKyVlbmRpZgorCitpbnN0YWxsIC1tNjQ0ICV7U09VUkNFM30gJFJQ TV9CVUlMRF9ST09UJXtfbWFuZGlyfS9tYW4xL3Byb3RvaXplLjEKK2VjaG8gJy5zbyBtYW4xL3By b3RvaXplLjEnID4gJFJQTV9CVUlMRF9ST09UJXtfbWFuZGlyfS9tYW4xL3VucHJvdG9pemUuMQor Y2htb2QgNjQ0ICRSUE1fQlVJTERfUk9PVCV7X21hbmRpcn0vbWFuMS91bnByb3RvaXplLjEKKwor JWNsZWFuCitybSAtcmYgJFJQTV9CVUlMRF9ST09UCisKKyVwb3N0Cisvc2Jpbi9pbnN0YWxsLWlu Zm8gXAorICAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2djYy5pbmZvLmd6IHx8 IDoKKworJXByZXVuCitpZiBbICQxID0gMCBdOyB0aGVuCisgIC9zYmluL2luc3RhbGwtaW5mbyAt LWRlbGV0ZSBcCisgICAgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9nY2MuaW5m by5neiB8fCA6CitmaQorCislcG9zdCAtbiBjcHAKKy9zYmluL2luc3RhbGwtaW5mbyBcCisgIC0t aW5mby1kaXI9JXtfaW5mb2Rpcn0gJXtfaW5mb2Rpcn0vY3BwLmluZm8uZ3ogfHwgOgorCislcHJl dW4gLW4gY3BwCitpZiBbICQxID0gMCBdOyB0aGVuCisgIC9zYmluL2luc3RhbGwtaW5mbyAtLWRl bGV0ZSBcCisgICAgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9jcHAuaW5mby5n eiB8fCA6CitmaQorCislcG9zdCBnZm9ydHJhbgorL3NiaW4vaW5zdGFsbC1pbmZvIFwKKyAgLS1p bmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9nZm9ydHJhbi5pbmZvLmd6IHx8IDoKKwor JXByZXVuIGdmb3J0cmFuCitpZiBbICQxID0gMCBdOyB0aGVuCisgIC9zYmluL2luc3RhbGwtaW5m byAtLWRlbGV0ZSBcCisgICAgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9nZm9y dHJhbi5pbmZvLmd6IHx8IDoKK2ZpCisKKyVwb3N0IGphdmEKKy9zYmluL2luc3RhbGwtaW5mbyBc CisgIC0taW5mby1kaXI9JXtfaW5mb2Rpcn0gJXtfaW5mb2Rpcn0vZ2NqLmluZm8uZ3ogfHwgOgor CislcHJldW4gamF2YQoraWYgWyAkMSA9IDAgXTsgdGhlbgorICAvc2Jpbi9pbnN0YWxsLWluZm8g LS1kZWxldGUgXAorICAgIC0taW5mby1kaXI9JXtfaW5mb2Rpcn0gJXtfaW5mb2Rpcn0vZ2NqLmlu Zm8uZ3ogfHwgOgorZmkKKworJXBvc3QgZ25hdAorL3NiaW4vaW5zdGFsbC1pbmZvIFwKKyAgLS1p bmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9nbmF0X3JtLmluZm8uZ3ogfHwgOgorL3Ni aW4vaW5zdGFsbC1pbmZvIFwKKyAgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9n bmF0X3Vnbl91bncuaW5mby5neiB8fCA6Cisvc2Jpbi9pbnN0YWxsLWluZm8gXAorICAtLWluZm8t ZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2duYXQtc3R5bGUuaW5mby5neiB8fCA6CisKKyVw cmV1biBnbmF0CitpZiBbICQxID0gMCBdOyB0aGVuCisgIC9zYmluL2luc3RhbGwtaW5mbyAtLWRl bGV0ZSBcCisgICAgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9nbmF0X3JtLmlu Zm8uZ3ogfHwgOgorICAvc2Jpbi9pbnN0YWxsLWluZm8gLS1kZWxldGUgXAorICAgIC0taW5mby1k aXI9JXtfaW5mb2Rpcn0gJXtfaW5mb2Rpcn0vZ25hdF91Z25fdW53LmluZm8uZ3ogfHwgOgorICAv c2Jpbi9pbnN0YWxsLWluZm8gLS1kZWxldGUgXAorICAgIC0taW5mby1kaXI9JXtfaW5mb2Rpcn0g JXtfaW5mb2Rpcn0vZ25hdC1zdHlsZS5pbmZvLmd6IHx8IDoKK2ZpCisKKyMgQmVjYXVzZSBnbGli YyBQcmVyZXEncyBsaWJnY2MgYW5kIC9zYmluL2xkY29uZmlnCisjIGNvbWVzIGZyb20gZ2xpYmMs IGl0IG1pZ2h0IG5vdCBleGlzdCB5ZXQgd2hlbgorIyBsaWJnY2MgaXMgaW5zdGFsbGVkCislcG9z dCAtbiBsaWJnY2MgLXAgJXtfcHJlZml4fS9zYmluL2xpYmdjY19wb3N0X3VwZ3JhZGUKKworJXBv c3QgLW4gbGlic3RkYysrIC1wIC9zYmluL2xkY29uZmlnCisKKyVwb3N0dW4gLW4gbGlic3RkYysr IC1wIC9zYmluL2xkY29uZmlnCisKKyVwb3N0IC1uIGxpYm9iamMgLXAgL3NiaW4vbGRjb25maWcK KworJXBvc3R1biAtbiBsaWJvYmpjIC1wIC9zYmluL2xkY29uZmlnCisKKyVwb3N0IC1uIGxpYmdj agorL3NiaW4vbGRjb25maWcKKy9zYmluL2luc3RhbGwtaW5mbyBcCisgIC0taW5mby1kaXI9JXtf aW5mb2Rpcn0gJXtfaW5mb2Rpcn0vY3AtdG9vbHMuaW5mby5neiB8fCA6CisKKyVwcmV1biAtbiBs aWJnY2oKK2lmIFsgJDEgPSAwIF07IHRoZW4KKyAgL3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRl IFwKKyAgICAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2NwLXRvb2xzLmluZm8u Z3ogfHwgOgorZmkKKworJXBvc3R1biAtbiBsaWJnY2ogLXAgL3NiaW4vbGRjb25maWcKKworJXBv c3QgLW4gbGliZ2ZvcnRyYW4gLXAgL3NiaW4vbGRjb25maWcKKworJXBvc3R1biAtbiBsaWJnZm9y dHJhbiAtcCAvc2Jpbi9sZGNvbmZpZworCislcG9zdCAtbiBsaWJnbmF0IC1wIC9zYmluL2xkY29u ZmlnCisKKyVwb3N0dW4gLW4gbGliZ25hdCAtcCAvc2Jpbi9sZGNvbmZpZworCislcG9zdCAtbiBs aWJnb21wCisvc2Jpbi9sZGNvbmZpZworL3NiaW4vaW5zdGFsbC1pbmZvIFwKKyAgLS1pbmZvLWRp cj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9saWJnb21wLmluZm8uZ3ogfHwgOgorCislcHJldW4g LW4gbGliZ29tcAoraWYgWyAkMSA9IDAgXTsgdGhlbgorICAvc2Jpbi9pbnN0YWxsLWluZm8gLS1k ZWxldGUgXAorICAgIC0taW5mby1kaXI9JXtfaW5mb2Rpcn0gJXtfaW5mb2Rpcn0vbGliZ29tcC5p bmZvLmd6IHx8IDoKK2ZpCisKKyVwb3N0dW4gLW4gbGliZ29tcCAtcCAvc2Jpbi9sZGNvbmZpZwor CislcG9zdCAtbiBsaWJtdWRmbGFwIC1wIC9zYmluL2xkY29uZmlnCisKKyVwb3N0dW4gLW4gbGli bXVkZmxhcCAtcCAvc2Jpbi9sZGNvbmZpZworCislZmlsZXMgLWYgJXtuYW1lfS5sYW5nCislZGVm YXR0cigtLHJvb3Qscm9vdCkKKyV7X3ByZWZpeH0vYmluL2NjCisle19wcmVmaXh9L2Jpbi9jODkK KyV7X3ByZWZpeH0vYmluL2M5OQorJXtfcHJlZml4fS9iaW4vZ2NjCisle19wcmVmaXh9L2Jpbi9n Y292Cisle19wcmVmaXh9L2Jpbi9wcm90b2l6ZQorJXtfcHJlZml4fS9iaW4vdW5wcm90b2l6ZQor JWlmYXJjaCBzcGFyYyBwcGMKKyV7X3ByZWZpeH0vYmluLyV7X3RhcmdldF9wbGF0Zm9ybX0tZ2Nj CislZW5kaWYKKyVpZmFyY2ggc3BhcmM2NAorJXtfcHJlZml4fS9iaW4vc3BhcmMtJXtfdmVuZG9y fS0le190YXJnZXRfb3N9LWdjYworJWVuZGlmCislaWZhcmNoIHBwYzY0Cisle19wcmVmaXh9L2Jp bi9wcGMtJXtfdmVuZG9yfS0le190YXJnZXRfb3N9LWdjYworJWVuZGlmCisle19wcmVmaXh9L2Jp bi8le2djY190YXJnZXRfcGxhdGZvcm19LWdjYworJXtfbWFuZGlyfS9tYW4xL2djYy4xKgorJXtf bWFuZGlyfS9tYW4xL2djb3YuMSoKKyV7X21hbmRpcn0vbWFuMS9wcm90b2l6ZS4xKgorJXtfbWFu ZGlyfS9tYW4xL3VucHJvdG9pemUuMSoKKyV7X2luZm9kaXJ9L2djYyoKKyVkaXIgJXtfcHJlZml4 fS9saWIvZ2NjCislZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19 CislZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259CislZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nY2MKKyVkaXIgJXtfcHJlZml4fS9saWJl eGVjL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19CislZGlyICV7X3ByZWZpeH0vbGliZXhlYy9n Y2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQorJWRpciAle19wcmVmaXh9 L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlCisl e19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9T WVNDQUxMUy5jLlgKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7 Z2NjX3ZlcnNpb259L2luY2x1ZGUvc3RkZGVmLmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvc3RkYXJnLmgKKyV7X3ByZWZp eH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUv dmFyYXJncy5oCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufS9pbmNsdWRlL2Zsb2F0LmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJn ZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvbGltaXRzLmgKKyV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvc3Rk Ym9vbC5oCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192 ZXJzaW9ufS9pbmNsdWRlL2lzbzY0Ni5oCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL3N5c2xpbWl0cy5oCisle19wcmVmaXh9 L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL3Vu d2luZC5oCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192 ZXJzaW9ufS9pbmNsdWRlL29tcC5oCislaWZhcmNoICV7aXg4Nn0geDg2XzY0Cisle19wcmVmaXh9 L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL21t aW50cmluLmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2Nj X3ZlcnNpb259L2luY2x1ZGUveG1taW50cmluLmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvZW1taW50cmluLmgKKyV7X3By ZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1 ZGUvcG1taW50cmluLmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19 LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvdG1taW50cmluLmgKKyV7X3ByZWZpeH0vbGliL2djYy8l e2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvYW1taW50cmluLmgK KyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259 L2luY2x1ZGUvc21taW50cmluLmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxh dGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvbm1taW50cmluLmgKKyV7X3ByZWZpeH0vbGli L2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvYm1taW50 cmluLmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259L2luY2x1ZGUvbW1pbnRyaW4tY29tbW9uLmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2dj Y190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvbW1fbWFsbG9jLmgKKyV7 X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2lu Y2x1ZGUvbW0zZG5vdy5oCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufS9pbmNsdWRlL2NwdWlkLmgKKyVlbmRpZgorJWlmYXJjaCBpYTY0Cisl e19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9p bmNsdWRlL2lhNjRpbnRyaW4uaAorJWVuZGlmCislaWZhcmNoIHBwYyBwcGM2NAorJXtfcHJlZml4 fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS9w cGMtYXNtLmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2Nj X3ZlcnNpb259L2luY2x1ZGUvYWx0aXZlYy5oCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFy Z2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL3NwZS5oCislZW5kaWYKKyV7X3By ZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9j b2xsZWN0MgorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2Nf dmVyc2lvbn0vY3J0Ki5vCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufS9saWJnY2MuYQorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3Rhcmdl dF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliZ2Nvdi5hCisle19wcmVmaXh9L2xpYi9nY2Mv JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJnY2NfZWguYQorJXtfcHJl Zml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliZ2Nj X3Muc28KKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259L2xpYmdvbXAuc3BlYworJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0 Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliZ29tcC5hCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2Nf dGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJnb21wLnNvCislaWZhcmNoIHNwYXJj IHBwYworJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufS82NAorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0v JXtnY2NfdmVyc2lvbn0vNjQvY3J0Ki5vCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS82NC9saWJnY2MuYQorJXtfcHJlZml4fS9saWIvZ2Nj LyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvbGliZ2Nvdi5hCisle19w cmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS82NC9s aWJnY2NfZWguYQorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtn Y2NfdmVyc2lvbn0vNjQvbGliZ2NjX3Muc28KKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJn ZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzY0L2xpYmdvbXAuYQorJXtfcHJlZml4fS9saWIv Z2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvbGliZ29tcC5zbwor JXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0v NjQvbGlibXVkZmxhcC5hCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufS82NC9saWJtdWRmbGFwdGguYQorJXtfcHJlZml4fS9saWIvZ2NjLyV7 Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvbGlibXVkZmxhcC5zbworJXtf cHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQv bGlibXVkZmxhcHRoLnNvCislZW5kaWYKKyVpZmFyY2ggJXttdWx0aWxpYl82NF9hcmNoc30KKyVk aXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lv bn0vMzIKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259LzMyL2NydCoubworJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9y bX0vJXtnY2NfdmVyc2lvbn0vMzIvbGliZ2NjLmEKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYmdjb3YuYQorJXtfcHJlZml4fS9s aWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIvbGliZ2NjX2Vo LmEKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNp b259LzMyL2xpYmdjY19zLnNvCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRm b3JtfS8le2djY192ZXJzaW9ufS8zMi9saWJnb21wLmEKKyV7X3ByZWZpeH0vbGliL2djYy8le2dj Y190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYmdvbXAuc28KKyV7X3ByZWZp eH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYm11 ZGZsYXAuYQorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2Nf dmVyc2lvbn0vMzIvbGlibXVkZmxhcHRoLmEKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJn ZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYm11ZGZsYXAuc28KKyV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYm11ZGZs YXB0aC5zbworJWVuZGlmCislaWZhcmNoIHNwYXJjIHNwYXJjNjQgcHBjIHBwYzY0Cisle19wcmVm aXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJtdWRm bGFwLmEKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259L2xpYm11ZGZsYXB0aC5hCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3Bs YXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJtdWRmbGFwLnNvCisle19wcmVmaXh9L2xpYi9nY2Mv JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJtdWRmbGFwdGguc28KKyVl bmRpZgorJWRpciAle19wcmVmaXh9L2xpYmV4ZWMvZ2V0Y29uZgorJXtfcHJlZml4fS9saWJleGVj L2dldGNvbmYvZGVmYXVsdAorJWRvYyBnY2MvUkVBRE1FKiBycG0uZG9jL2NoYW5nZWxvZ3MvZ2Nj L0NoYW5nZUxvZyogZ2NjL0NPUFlJTkcqCisKKyVmaWxlcyAtbiBjcHAgLWYgY3BwbGliLmxhbmcK KyVkZWZhdHRyKC0scm9vdCxyb290KQorL2xpYi9jcHAKKyV7X3ByZWZpeH0vYmluL2NwcAorJXtf bWFuZGlyfS9tYW4xL2NwcC4xKgorJXtfaW5mb2Rpcn0vY3BwKgorJWRpciAle19wcmVmaXh9L2xp YmV4ZWMvZ2NjCislZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRm b3JtfQorJWRpciAle19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0v JXtnY2NfdmVyc2lvbn0KKyV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRm b3JtfS8le2djY192ZXJzaW9ufS9jYzEKKworJWZpbGVzIC1uIGxpYmdjYworJWRlZmF0dHIoLSxy b290LHJvb3QpCisvJXtfbGlifS9saWJnY2Nfcy0le2djY192ZXJzaW9ufS0le0RBVEV9LnNvLjEK Ky8le19saWJ9L2xpYmdjY19zLnNvLjEKKyV7X3ByZWZpeH0vc2Jpbi9saWJnY2NfcG9zdF91cGdy YWRlCislZG9jIGdjYy9DT1BZSU5HLkxJQgorCislZmlsZXMgYysrCislZGVmYXR0cigtLHJvb3Qs cm9vdCkKKyV7X3ByZWZpeH0vYmluLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0tKisrCisle19wcmVm aXh9L2Jpbi9nKysKKyV7X3ByZWZpeH0vYmluL2MrKworJXtfbWFuZGlyfS9tYW4xL2crKy4xKgor JWRpciAle19wcmVmaXh9L2xpYi9nY2MKKyVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3Rh cmdldF9wbGF0Zm9ybX0KKyVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0 Zm9ybX0vJXtnY2NfdmVyc2lvbn0KKyVkaXIgJXtfcHJlZml4fS9saWJleGVjL2djYworJWRpciAl e19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KKyVkaXIgJXtfcHJl Zml4fS9saWJleGVjL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259Cisl e19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lv bn0vY2MxcGx1cworJWlmYXJjaCBzcGFyYyBwcGMKKyVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7 Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQKKyV7X3ByZWZpeH0vbGliL2dj Yy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzY0L2xpYnN0ZGMrKy5zbwor JXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0v NjQvbGlic3RkYysrLmEKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19 LyV7Z2NjX3ZlcnNpb259LzY0L2xpYnN1cGMrKy5hCislZW5kaWYKKyVpZmFyY2ggJXttdWx0aWxp Yl82NF9hcmNoc30KKyVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9y bX0vJXtnY2NfdmVyc2lvbn0vMzIKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxh dGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYnN0ZGMrKy5zbworJXtfcHJlZml4fS9saWIvZ2Nj LyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIvbGlic3RkYysrLmEKKyV7 X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMy L2xpYnN1cGMrKy5hCislZW5kaWYKKyVpZmFyY2ggc3BhcmMgcHBjICV7bXVsdGlsaWJfNjRfYXJj aHN9Cisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJz aW9ufS9saWJzdGRjKysuc28KKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZv cm19LyV7Z2NjX3ZlcnNpb259L2xpYnN1cGMrKy5hCislZW5kaWYKKyVpZmFyY2ggc3BhcmMgc3Bh cmM2NCBwcGMgcHBjNjQKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19 LyV7Z2NjX3ZlcnNpb259L2xpYnN0ZGMrKy5hCislZW5kaWYKKyVkb2MgcnBtLmRvYy9jaGFuZ2Vs b2dzL2djYy9jcC9DaGFuZ2VMb2cqCisKKyVmaWxlcyAtbiBsaWJzdGRjKysKKyVkZWZhdHRyKC0s cm9vdCxyb290KQorJXtfcHJlZml4fS8le19saWJ9L2xpYnN0ZGMrKy5zby42KgorCislZmlsZXMg LW4gbGlic3RkYysrLWRldmVsCislZGVmYXR0cigtLHJvb3Qscm9vdCkKKyVkaXIgJXtfcHJlZml4 fS9pbmNsdWRlL2MrKworJWRpciAle19wcmVmaXh9L2luY2x1ZGUvYysrLyV7Z2NjX3ZlcnNpb259 Cisle19wcmVmaXh9L2luY2x1ZGUvYysrLyV7Z2NjX3ZlcnNpb259L1teZ2pvc10qCisle19wcmVm aXh9L2luY2x1ZGUvYysrLyV7Z2NjX3ZlcnNpb259L29zKgorJXtfcHJlZml4fS9pbmNsdWRlL2Mr Ky8le2djY192ZXJzaW9ufS9zW151XSoKKyVkaXIgJXtfcHJlZml4fS9saWIvZ2NjCislZGlyICV7 X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19CislZGlyICV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259CislaWZhcmNoIHNw YXJjIHBwYworJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8l e2djY192ZXJzaW9ufS9saWIzMgorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0 Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliMzIvbGlic3RkYysrLmEKKyVlbmRpZgorJWlmYXJjaCBz cGFyYzY0IHBwYzY0CislZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZv cm19LyV7Z2NjX3ZlcnNpb259L2xpYjY0Cisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWI2NC9saWJzdGRjKysuYQorJWVuZGlmCislaWZu YXJjaCBzcGFyYyBzcGFyYzY0IHBwYyBwcGM2NAorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3Rh cmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGlic3RkYysrLmEKKyVlbmRpZgorJWlmbmFy Y2ggc3BhcmMgcHBjICV7bXVsdGlsaWJfNjRfYXJjaHN9Cisle19wcmVmaXh9L2xpYi9nY2MvJXtn Y2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJzdGRjKysuc28KKyV7X3ByZWZp eH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYnN1cGMr Ky5hCislZW5kaWYKKyVkb2MgcnBtLmRvYy9jaGFuZ2Vsb2dzL2xpYnN0ZGMrKy12My9DaGFuZ2VM b2cqIGxpYnN0ZGMrKy12My9SRUFETUUqIGxpYnN0ZGMrKy12My9kb2NzL2h0bWwvCisKKyVmaWxl cyBvYmpjCislZGVmYXR0cigtLHJvb3Qscm9vdCkKKyVkaXIgJXtfcHJlZml4fS9saWIvZ2NjCisl ZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19CislZGlyICV7X3By ZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259CislZGly ICV7X3ByZWZpeH0vbGliZXhlYy9nY2MKKyVkaXIgJXtfcHJlZml4fS9saWJleGVjL2djYy8le2dj Y190YXJnZXRfcGxhdGZvcm19CislZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFy Z2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQorJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtn Y2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlCisle19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL29iamMK KyV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJz aW9ufS9jYzFvYmoKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7 Z2NjX3ZlcnNpb259L2xpYm9iamMuYQorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9w bGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGlib2JqYy5zbworJWlmYXJjaCBzcGFyYyBwcGMKKyVk aXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lv bn0vNjQKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259LzY0L2xpYm9iamMuYQorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0 Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQvbGlib2JqYy5zbworJWVuZGlmCislaWZhcmNoICV7bXVs dGlsaWJfNjRfYXJjaHN9CislZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxh dGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS8zMi9saWJvYmpjLmEKKyV7X3ByZWZpeH0vbGliL2dj Yy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyL2xpYm9iamMuc28KKyVl bmRpZgorJWRvYyBycG0uZG9jL29iamMvKgorJWRvYyBsaWJvYmpjL1RIUkVBRFMqIHJwbS5kb2Mv Y2hhbmdlbG9ncy9saWJvYmpjL0NoYW5nZUxvZyoKKworJWZpbGVzIG9iamMrKworJWRlZmF0dHIo LSxyb290LHJvb3QpCislZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nY2MKKyVkaXIgJXtfcHJlZml4 fS9saWJleGVjL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19CislZGlyICV7X3ByZWZpeH0vbGli ZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQorJXtfcHJlZml4 fS9saWJleGVjL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2NjMW9i anBsdXMKKworJWZpbGVzIC1uIGxpYm9iamMKKyVkZWZhdHRyKC0scm9vdCxyb290KQorJXtfcHJl Zml4fS8le19saWJ9L2xpYm9iamMuc28uMioKKworJWZpbGVzIGdmb3J0cmFuCislZGVmYXR0cigt LHJvb3Qscm9vdCkKKyV7X3ByZWZpeH0vYmluL2dmb3J0cmFuCisle19wcmVmaXh9L2Jpbi9mOTUK KyV7X21hbmRpcn0vbWFuMS9nZm9ydHJhbi4xKgorJXtfaW5mb2Rpcn0vZ2ZvcnRyYW4qCislZGly ICV7X3ByZWZpeH0vbGliL2djYworJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfQorJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufQorJWRpciAle19wcmVmaXh9L2xpYmV4ZWMvZ2NjCislZGlyICV7X3By ZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQorJWRpciAle19wcmVmaXh9 L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0KKyVkaXIg JXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0v ZmluY2x1ZGUKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2Nj X3ZlcnNpb259L2ZpbmNsdWRlL29tcF9saWIuaAorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3Rh cmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vZmluY2x1ZGUvb21wX2xpYi5mOTAKKyV7X3By ZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2ZpbmNs dWRlL29tcF9saWIubW9kCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufS9maW5jbHVkZS9vbXBfbGliX2tpbmRzLm1vZAorJXtfcHJlZml4fS9s aWJleGVjL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2Y5NTEKKyV7 X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xp Ymdmb3J0cmFuYmVnaW4uYQorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9y bX0vJXtnY2NfdmVyc2lvbn0vbGliZ2ZvcnRyYW4uYQorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2Nj X3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliZ2ZvcnRyYW4uc28KKyVpZmFyY2gg c3BhcmMgcHBjCislZGlyICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19 LyV7Z2NjX3ZlcnNpb259LzY0Cisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRm b3JtfS8le2djY192ZXJzaW9ufS82NC9saWJnZm9ydHJhbmJlZ2luLmEKKyV7X3ByZWZpeH0vbGli L2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzY0L2xpYmdmb3J0cmFu LmEKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNp b259LzY0L2xpYmdmb3J0cmFuLnNvCislZW5kaWYKKyVpZmFyY2ggJXttdWx0aWxpYl82NF9hcmNo c30KKyVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2Nf dmVyc2lvbn0vMzIKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7 Z2NjX3ZlcnNpb259LzMyL2xpYmdmb3J0cmFuYmVnaW4uYQorJXtfcHJlZml4fS9saWIvZ2NjLyV7 Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIvbGliZ2ZvcnRyYW4uYQorJXtf cHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIv bGliZ2ZvcnRyYW4uc28KKyVlbmRpZgorJWRvYyBycG0uZG9jL2dmb3J0cmFuLyoKKworJWZpbGVz IC1uIGxpYmdmb3J0cmFuCislZGVmYXR0cigtLHJvb3Qscm9vdCkKKyV7X3ByZWZpeH0vJXtfbGli fS9saWJnZm9ydHJhbi5zby4zKgorCislaWYgJXtidWlsZF9qYXZhfQorJWZpbGVzIGphdmEKKyVk ZWZhdHRyKC0scm9vdCxyb290KQorJXtfcHJlZml4fS9iaW4vZ2NqCisle19wcmVmaXh9L2Jpbi9n amF2YWgKKyV7X3ByZWZpeH0vYmluL2djamgKKyV7X3ByZWZpeH0vYmluL2pjZi1kdW1wCisle19t YW5kaXJ9L21hbjEvZ2NqLjEqCisle19tYW5kaXJ9L21hbjEvamNmLWR1bXAuMSoKKyV7X21hbmRp cn0vbWFuMS9namF2YWguMSoKKyV7X21hbmRpcn0vbWFuMS9nY2poLjEqCisle19pbmZvZGlyfS9n Y2oqCislZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nY2MKKyVkaXIgJXtfcHJlZml4fS9saWJleGVj L2djYy8le2djY190YXJnZXRfcGxhdGZvcm19CislZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nY2Mv JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQorJWRpciAle19wcmVmaXh9L2xp Yi9nY2MKKyVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KKyVk aXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lv bn0KKyV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192 ZXJzaW9ufS9qYzEKKyV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufS9lY2oxCisle19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3Rhcmdl dF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vanZnZW5tYWluCisle19wcmVmaXh9L2xpYi9nY2Mv JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJnY2ouc28KKyV7X3ByZWZp eH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYmdjai10 b29scy5zbworJWlmYXJjaCBzcGFyYyBzcGFyYzY0IHBwYyBwcGM2NAorJXtfcHJlZml4fS9saWIv Z2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliZ2NqX2JjLnNvCisl ZW5kaWYKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3Zl cnNpb259L2xpYmdpai5zbworJWlmYXJjaCBzcGFyYyBwcGMKKyVkaXIgJXtfcHJlZml4fS9saWIv Z2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vNjQKKyV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzY0L2xpYmdjai5z bworJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lv bn0vNjQvbGliZ2NqLXRvb2xzLnNvCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3Bs YXRmb3JtfS8le2djY192ZXJzaW9ufS82NC9saWJnY2pfYmMuc28KKyV7X3ByZWZpeH0vbGliL2dj Yy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzY0L2xpYmdpai5zbworJWVu ZGlmCislaWZhcmNoICV7bXVsdGlsaWJfNjRfYXJjaHN9CislZGlyICV7X3ByZWZpeH0vbGliL2dj Yy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259LzMyCisle19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS8zMi9saWJnY2ouc28K KyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259 LzMyL2xpYmdjai10b29scy5zbworJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0 Zm9ybX0vJXtnY2NfdmVyc2lvbn0vMzIvbGliZ2NqX2JjLnNvCisle19wcmVmaXh9L2xpYi9nY2Mv JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS8zMi9saWJnaWouc28KKyVlbmRp ZgorJWRvYyBycG0uZG9jL2NoYW5nZWxvZ3MvZ2NjL2phdmEvQ2hhbmdlTG9nKgorCislZmlsZXMg LW4gbGliZ2NqCislZGVmYXR0cigtLHJvb3Qscm9vdCkKKyV7X3ByZWZpeH0vYmluL2p2LWNvbnZl cnQKKyV7X3ByZWZpeH0vYmluL2dpagorJXtfcHJlZml4fS9iaW4vZ2phcgorJXtfcHJlZml4fS9i aW4vZ3JtaWMKKyV7X3ByZWZpeH0vYmluL2dybWlkCisle19wcmVmaXh9L2Jpbi9ncm1pcmVnaXN0 cnkKKyV7X3ByZWZpeH0vYmluL2d0bmFtZXNlcnYKKyV7X3ByZWZpeH0vYmluL2drZXl0b29sCisl e19wcmVmaXh9L2Jpbi9nb3JiZAorJXtfcHJlZml4fS9iaW4vZ3NlcmlhbHZlcgorJXtfcHJlZml4 fS9iaW4vZ2NqLWRidG9vbAorJWlmICV7aW5jbHVkZV9nYXBwbGV0dmlld2VyfQorJXtfcHJlZml4 fS9iaW4vZ2FwcGxldHZpZXdlcgorJXtfbWFuZGlyfS9tYW4xL2dhcHBsZXR2aWV3ZXIuMSoKKyVl bmRpZgorJXtfcHJlZml4fS9iaW4vZ2phcnNpZ25lcgorJXtfbWFuZGlyfS9tYW4xL2dqYXIuMSoK KyV7X21hbmRpcn0vbWFuMS9namFyc2lnbmVyLjEqCisle19tYW5kaXJ9L21hbjEvanYtY29udmVy dC4xKgorJXtfbWFuZGlyfS9tYW4xL2dpai4xKgorJXtfbWFuZGlyfS9tYW4xL2dybWljLjEqCisl e19tYW5kaXJ9L21hbjEvZ3JtaXJlZ2lzdHJ5LjEqCisle19tYW5kaXJ9L21hbjEvZ2NqLWRidG9v bC4xKgorJXtfbWFuZGlyfS9tYW4xL2drZXl0b29sLjEqCisle19tYW5kaXJ9L21hbjEvZ29yYmQu MSoKKyV7X21hbmRpcn0vbWFuMS9ncm1pZC4xKgorJXtfbWFuZGlyfS9tYW4xL2dzZXJpYWx2ZXIu MSoKKyV7X21hbmRpcn0vbWFuMS9ndG5hbWVzZXJ2LjEqCisle19pbmZvZGlyfS9jcC10b29scy5p bmZvKgorJXtfcHJlZml4fS8le19saWJ9L2xpYmdjai5zby4qCisle19wcmVmaXh9LyV7X2xpYn0v bGliZ2NqLXRvb2xzLnNvLioKKyV7X3ByZWZpeH0vJXtfbGlifS9saWJnY2pfYmMuc28uKgorJXtf cHJlZml4fS8le19saWJ9L2xpYmdpai5zby4qCislZGlyICV7X3ByZWZpeH0vJXtfbGlifS9nY2ot JXt2ZXJzaW9ufQorJXtfcHJlZml4fS8le19saWJ9L2djai0le3ZlcnNpb259L2xpYmd0a3BlZXIu c28KKyV7X3ByZWZpeH0vJXtfbGlifS9nY2otJXt2ZXJzaW9ufS9saWJnanNtYWxzYS5zbworJXtf cHJlZml4fS8le19saWJ9L2djai0le3ZlcnNpb259L2xpYmphd3Quc28KKyVpZiAle2luY2x1ZGVf Z2FwcGxldHZpZXdlcn0KKyV7X3ByZWZpeH0vJXtfbGlifS9nY2otJXt2ZXJzaW9ufS9saWJnY2p3 ZWJwbHVnaW4uc28KKyVlbmRpZgorJXtfcHJlZml4fS8le19saWJ9L2djai0le3ZlcnNpb259L2xp Ymp2bS5zbworJWRpciAle19wcmVmaXh9L3NoYXJlL2phdmEKKyV7X3ByZWZpeH0vc2hhcmUvamF2 YS9bXnNsXSoKKyV7X3ByZWZpeH0vc2hhcmUvamF2YS9saWJnY2otJXt2ZXJzaW9ufS5qYXIKKyVk aXIgJXtfcHJlZml4fS8le19saWJ9L3NlY3VyaXR5CislY29uZmlnKG5vcmVwbGFjZSkgJXtfcHJl Zml4fS8le19saWJ9L3NlY3VyaXR5L2NsYXNzcGF0aC5zZWN1cml0eQorJXtfcHJlZml4fS8le19s aWJ9L2xvZ2dpbmcucHJvcGVydGllcworJWRpciAle19wcmVmaXh9LyV7X2xpYn0vZ2NqLSV7dmVy c2lvbn0vY2xhc3NtYXAuZGIuZAorJWF0dHIoMDY0NCxyb290LHJvb3QpICV2ZXJpZnkobm90IG1k NSBzaXplIG10aW1lKSAlZ2hvc3QgJWNvbmZpZyhtaXNzaW5nb2ssbm9yZXBsYWNlKSAle19wcmVm aXh9LyV7X2xpYn0vZ2NqLSV7dmVyc2lvbn0vY2xhc3NtYXAuZGIKKyVpZiAle2luY2x1ZGVfZ2Fw cGxldHZpZXdlcn0KKyVkb2MgcnBtLmRvYy9SRUFETUUubGliZ2Nqd2VicGx1Z2luLnNvCislZW5k aWYKKworJWZpbGVzIC1uIGxpYmdjai1kZXZlbAorJWRlZmF0dHIoLSxyb290LHJvb3QpCisle19w cmVmaXh9L2Jpbi9hZGRyMm5hbWUuYXdrCislZGlyICV7X3ByZWZpeH0vbGliL2djYworJWRpciAl e19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQorJWRpciAle19wcmVmaXh9 L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQorJWRpciAle19w cmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNs dWRlCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJz aW9ufS9pbmNsdWRlL2djagorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9y bX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS9qYXd0LmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2dj Y190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvamF3dF9tZC5oCisle19w cmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNs dWRlL2puaS5oCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufS9pbmNsdWRlL2puaV9tZC5oCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFy Z2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL2p2bXBpLmgKKyV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYmdjai5zcGVj CislaWZhcmNoIHNwYXJjIHBwYworJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWIzMgorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2Nj X3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliMzIvbGliZ2NqX2JjLnNvCislZW5k aWYKKyVpZmFyY2ggc3BhcmM2NCBwcGM2NAorJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2Nf dGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWI2NAorJXtfcHJlZml4fS9saWIvZ2Nj LyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliNjQvbGliZ2NqX2JjLnNv CislZW5kaWYKKyVpZm5hcmNoIHNwYXJjIHNwYXJjNjQgcHBjIHBwYzY0Cisle19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWJnY2pfYmMuc28K KyVlbmRpZgorJWRpciAle19wcmVmaXh9L2luY2x1ZGUvYysrCislZGlyICV7X3ByZWZpeH0vaW5j bHVkZS9jKysvJXtnY2NfdmVyc2lvbn0KKyV7X3ByZWZpeH0vaW5jbHVkZS9jKysvJXtnY2NfdmVy c2lvbn0vW2dqXSoKKyV7X3ByZWZpeH0vaW5jbHVkZS9jKysvJXtnY2NfdmVyc2lvbn0vb3JnCisl e19wcmVmaXh9L2luY2x1ZGUvYysrLyV7Z2NjX3ZlcnNpb259L3N1bgorJXtfcHJlZml4fS8le19s aWJ9L3BrZ2NvbmZpZy9saWJnY2otKi5wYworJWRvYyBycG0uZG9jL2JvZWhtLWdjLyogcnBtLmRv Yy9saWJmZmkvKgorJWRvYyBycG0uZG9jL2xpYmphdmEvKgorCislZmlsZXMgLW4gbGliZ2NqLXNy YworJWRlZmF0dHIoLSxyb290LHJvb3QpCislZGlyICV7X3ByZWZpeH0vc2hhcmUvamF2YQorJXtf cHJlZml4fS9zaGFyZS9qYXZhL3NyYyouemlwCisle19wcmVmaXh9L3NoYXJlL2phdmEvbGliZ2Nq LXRvb2xzLSV7dmVyc2lvbn0uamFyCislZW5kaWYKKworJWlmICV7YnVpbGRfYWRhfQorJWZpbGVz IGduYXQKKyVkZWZhdHRyKC0scm9vdCxyb290KQorJXtfcHJlZml4fS9iaW4vZ25hdCoKKyV7X2lu Zm9kaXJ9L2duYXQqCislZGlyICV7X3ByZWZpeH0vbGliL2djYworJWRpciAle19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQorJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtn Y2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQorJWRpciAle19wcmVmaXh9L2xpYmV4 ZWMvZ2NjCislZGlyICV7X3ByZWZpeH0vbGliZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fQorJWRpciAle19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtn Y2NfdmVyc2lvbn0KKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7 Z2NjX3ZlcnNpb259L2FkYWluY2x1ZGUKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRf cGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2FkYWxpYgorJXtfcHJlZml4fS9saWJleGVjL2djYy8l e2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2duYXQxCislZG9jIHJwbS5kb2Mv Y2hhbmdlbG9ncy9nY2MvYWRhL0NoYW5nZUxvZyoKKworJWZpbGVzIC1uIGxpYmduYXQKKyVkZWZh dHRyKC0scm9vdCxyb290KQorJXtfcHJlZml4fS8le19saWJ9L2xpYmduYXQtKi5zbworJXtfcHJl Zml4fS8le19saWJ9L2xpYmduYXJsLSouc28KKyVlbmRpZgorCislZmlsZXMgLW4gbGliZ29tcAor JWRlZmF0dHIoLSxyb290LHJvb3QpCisle19wcmVmaXh9LyV7X2xpYn0vbGliZ29tcC5zby4xKgor JXtfaW5mb2Rpcn0vbGliZ29tcC5pbmZvKgorJWRvYyBycG0uZG9jL2NoYW5nZWxvZ3MvbGliZ29t cC9DaGFuZ2VMb2cqCisKKyVmaWxlcyAtbiBsaWJtdWRmbGFwCislZGVmYXR0cigtLHJvb3Qscm9v dCkKKyV7X3ByZWZpeH0vJXtfbGlifS9saWJtdWRmbGFwLnNvLjAqCisle19wcmVmaXh9LyV7X2xp Yn0vbGlibXVkZmxhcHRoLnNvLjAqCisKKyVmaWxlcyAtbiBsaWJtdWRmbGFwLWRldmVsCislZGVm YXR0cigtLHJvb3Qscm9vdCkKKyVkaXIgJXtfcHJlZml4fS9saWIvZ2NjCislZGlyICV7X3ByZWZp eH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19CislZGlyICV7X3ByZWZpeH0vbGliL2dj Yy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259CislZGlyICV7X3ByZWZpeH0v bGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUKKyV7 X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2lu Y2x1ZGUvbWYtcnVudGltZS5oCislaWZhcmNoIHNwYXJjIHBwYworJWRpciAle19wcmVmaXh9L2xp Yi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9saWIzMgorJXtfcHJl Zml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliMzIv bGlibXVkZmxhcC5hCisle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8l e2djY192ZXJzaW9ufS9saWIzMi9saWJtdWRmbGFwdGguYQorJWVuZGlmCislaWZhcmNoIHNwYXJj NjQgcHBjNjQKKyVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0v JXtnY2NfdmVyc2lvbn0vbGliNjQKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxh dGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYjY0L2xpYm11ZGZsYXAuYQorJXtfcHJlZml4fS9saWIv Z2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGliNjQvbGlibXVkZmxh cHRoLmEKKyVlbmRpZgorJWlmbmFyY2ggc3BhcmMgc3BhcmM2NCBwcGMgcHBjNjQKKyV7X3ByZWZp eH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYm11ZGZs YXAuYQorJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVy c2lvbn0vbGlibXVkZmxhcHRoLmEKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxh dGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYm11ZGZsYXAuc28KKyV7X3ByZWZpeH0vbGliL2djYy8l e2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2xpYm11ZGZsYXB0aC5zbworJWVu ZGlmCislZG9jIHJwbS5kb2MvY2hhbmdlbG9ncy9saWJtdWRmbGFwL0NoYW5nZUxvZyoKKworJWNo YW5nZWxvZworKiBXZWQgRGVjIDEyIDIwMDcgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNv bT4gNC4zLjAtMC4yCistIHVwZGF0ZSBmcm9tIHRoZSB0cnVuaworCisqIFN1biBEZWMgIDkgMjAw NyBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjMuMC0wLjEKKy0gaW5pdGlhbCA0 LjMgcGFja2FnZSwgdXNpbmcgbmV3bHkgY3JlYXRlZCByZWRoYXQvZ2NjLTRfMy1icmFuY2gKCmRp ZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCA1ZmVlMTFmLi4yNTFhNWNhIDEwMDY0 NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEgKzEgQEAKLWIwZTMzMmYxYmU2ODBj MTM2MDhlMTI3YzZlZDlhY2Y5ICBnY2MtNC4xLjItMjAwNzExMjQudGFyLmJ6MgorNjVhYzMzNjIw YjM2MDVmNmM2MTJiODU5MWQ3ZjdmYTEgIGdjYy00LjMuMC0yMDA3MTIxMi50YXIuYnoyCg==