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.4.2-13 Date: Mon, 29 Jun 2026 12:24:40 GMT Message-ID: <178273588007.1.3263159773626094524.rpms-gcc-462317c02b50@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 462317c02b501137eee4ec4c31acfcf05f89fd76 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogNDYyMzE3YzAyYjUwMTEzN2VlZTRlYzRjMzFhY2ZjZjA1 Zjg5ZmQ3NgpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwOS0xMi0wNFQxMjo0MToyNyswMDowMApTdGF0cyAgOiArMTg2Ly0xNjk2IGlu IDcgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dj Yy9jLzQ2MjMxN2MwMmI1MDExMzdlZWU0ZWM0YzMxYWNmY2YwNWY4OWZkNzY/YnJhbmNoPXJoZWwt ZjQxLWJhc2UKCkxvZzoKNC40LjItMTMKCi0tLQpkaWZmIC0tZ2l0IGEvLmN2c2lnbm9yZSBiLy5j dnNpZ25vcmUKaW5kZXggMjQxZmEzOS4uZjJkZmMxYyAxMDA2NDQKLS0tIGEvLmN2c2lnbm9yZQor KysgYi8uY3ZzaWdub3JlCkBAIC0xLDIgKzEsMiBAQAogZmFzdGphci0wLjk3LnRhci5negotZ2Nj LTQuNC4xLTIwMDkxMDAxLnRhci5iejIKK2djYy00LjQuMi0yMDA5MTIwNC50YXIuYnoyCgpkaWZm IC0tZ2l0IGEvZ2NjLnNwZWMgYi9nY2Muc3BlYwppbmRleCA1YWQ4ZTViLi5kODYzMTFjIDEwMDY0 NAotLS0gYS9nY2Muc3BlYworKysgYi9nY2Muc3BlYwpAQCAtMSw5ICsxLDkgQEAKLSVnbG9iYWwg REFURSAyMDA5MTAwMQotJWdsb2JhbCBTVk5SRVYgMTUyMzY0Ci0lZ2xvYmFsIGdjY192ZXJzaW9u IDQuNC4xCislZ2xvYmFsIERBVEUgMjAwOTEyMDQKKyVnbG9iYWwgU1ZOUkVWIDE1NDk3NworJWds b2JhbCBnY2NfdmVyc2lvbiA0LjQuMgogIyBOb3RlLCBnY2NfcmVsZWFzZSBtdXN0IGJlIGludGVn ZXIsIGlmIHlvdSB3YW50IHRvIGFkZCBzdWZmaXhlcyB0bwogIyAle3JlbGVhc2V9LCBhcHBlbmQg dGhlbSBhZnRlciAle2djY19yZWxlYXNlfSBvbiBSZWxlYXNlOiBsaW5lLgotJWdsb2JhbCBnY2Nf cmVsZWFzZSAxOAorJWdsb2JhbCBnY2NfcmVsZWFzZSAxNAogJWdsb2JhbCBfdW5wYWNrYWdlZF9m aWxlc190ZXJtaW5hdGVfYnVpbGQgMAogJWdsb2JhbCBtdWx0aWxpYl82NF9hcmNocyBzcGFyYzY0 IHBwYzY0IHMzOTB4IHg4Nl82NAogJWdsb2JhbCBpbmNsdWRlX2dhcHBsZXR2aWV3ZXIgMQpAQCAt NDAsNyArNDAsNyBAQAogU3VtbWFyeTogVmFyaW91cyBjb21waWxlcnMgKEMsIEMrKywgT2JqZWN0 aXZlLUMsIEphdmEsIC4uLikKIE5hbWU6IGdjYwogVmVyc2lvbjogJXtnY2NfdmVyc2lvbn0KLVJl bGVhc2U6ICV7Z2NjX3JlbGVhc2V9CitSZWxlYXNlOiAle2djY19yZWxlYXNlfSV7P2Rpc3R9CiAj IGxpYmdjYywgbGliZ2ZvcnRyYW4sIGxpYm11ZGZsYXAsIGxpYmdvbXAsIGxpYnN0ZGMrKyBhbmQg Y3J0c3R1ZmYgaGF2ZQogIyBHQ0MgUnVudGltZSBFeGNlcHRpb24uCiBMaWNlbnNlOiBHUEx2Mysg YW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlvbnMKQEAg LTY1LDcgKzY1LDggQEAgQnVpbGRSb290OiAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0t JXtyZWxlYXNlfS1yb290LSUoJXtfX2lkX3V9IC1uKQogIyBOZWVkIGJpbnV0aWxzIHdoaWNoIHN1 cHBvcnQgbWZmZ3ByIGFuZCBtZnRncHIgPj0gMi4xNy41MC4wLjItOAogIyBOZWVkIGJpbnV0aWxz IHdoaWNoIHN1cHBvcnQgLS1idWlsZC1pZCA+PSAyLjE3LjUwLjAuMTctMwogIyBOZWVkIGJpbnV0 aWxzIHdoaWNoIHN1cHBvcnQgJWdudV91bmlxdWVfb2JqZWN0ID49IDIuMTkuNTEuMC4xNAotQnVp bGRSZXF1aXJlczogYmludXRpbHMgPj0gMi4xOS41MS4wLjE0CisjIE5lZWQgYmludXRpbHMgd2hp Y2ggc3VwcG9ydCAuY2ZpX3NlY3Rpb25zID49IDIuMTkuNTEuMC4xNC0zMworQnVpbGRSZXF1aXJl czogYmludXRpbHMgPj0gMi4xOS41MS4wLjE0LTMzCiAjIFdoaWxlIGdjYyBkb2Vzbid0IGluY2x1 ZGUgc3RhdGljYWxseSBsaW5rZWQgYmluYXJpZXMsIGR1cmluZyB0ZXN0aW5nCiAjIC1zdGF0aWMg aXMgdXNlZCBzZXZlcmFsIHRpbWVzLgogQnVpbGRSZXF1aXJlczogZ2xpYmMtc3RhdGljCkBAIC0x MTgsOCArMTE5LDkgQEAgUmVxdWlyZXM6IGNwcCA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQogIyBO ZWVkIGJpbnV0aWxzIHRoYXQgc3VwcG9ydHMgLS1oYXNoLXN0eWxlPWdudQogIyBOZWVkIGJpbnV0 aWxzIHRoYXQgc3VwcG9ydCBtZmZncHIvbWZ0Z3ByCiAjIE5lZWQgYmludXRpbHMgdGhhdCBzdXBw b3J0IC0tYnVpbGQtaWQKLSMgTmVlZCBiaW51dGlscyB3aGljaCBzdXBwb3J0ICVnbnVfdW5pcXVl X29iamVjdAotUmVxdWlyZXM6IGJpbnV0aWxzID49IDIuMTkuNTEuMC4xNAorIyBOZWVkIGJpbnV0 aWxzIHRoYXQgc3VwcG9ydCAlZ251X3VuaXF1ZV9vYmplY3QKKyMgTmVlZCBiaW51dGlscyB0aGF0 IHN1cHBvcnQgLmNmaV9zZWN0aW9ucworUmVxdWlyZXM6IGJpbnV0aWxzID49IDIuMTkuNTEuMC4x NC0zMwogIyBNYWtlIHN1cmUgZ2RiIHdpbGwgdW5kZXJzdGFuZCBEV19GT1JNX3N0cnAKIENvbmZs aWN0czogZ2RiIDwgNS4xLTIKIFJlcXVpcmVzOiBnbGliYy1kZXZlbCA+PSAyLjIuOTAtMTIKQEAg LTE1NSwxMiArMTU3LDEwIEBAIFBhdGNoMTE6IGdjYzQ0LXNwYXJjLWNvbmZpZy1kZXRlY3Rpb24u cGF0Y2gKIFBhdGNoMTI6IGdjYzQ0LWxpYmdvbXAtb21wX2gtbXVsdGlsaWIucGF0Y2gKIFBhdGNo MTM6IGdjYzQ0LWxpYnRvb2wtbm8tcnBhdGgucGF0Y2gKIFBhdGNoMTQ6IGdjYzQ0LWNsb29nLWRs LnBhdGNoCi1QYXRjaDE1OiBnY2M0NC1yYXctc3RyaW5nLnBhdGNoCiBQYXRjaDE2OiBnY2M0NC11 bndpbmQtZGVidWctaG9vay5wYXRjaAogUGF0Y2gxNzogZ2NjNDQtcHIzODc1Ny5wYXRjaAogUGF0 Y2gxODogZ2NjNDQtbGlic3RkYysrLWRvY3MucGF0Y2gKIFBhdGNoMTk6IGdjYzQ0LXBwYzY0LWFp eGRlc2MucGF0Y2gKLVBhdGNoMjA6IGdjYzQ0LXZ0YS1yaDUyMTk5MS5wYXRjaAogCiBQYXRjaDEw MDA6IGZhc3RqYXItMC45Ny1zZWdmYXVsdC5wYXRjaAogCkBAIC0yMTgsNyArMjE4LDcgQEAgQysr IExpYnJhcnkuCiAlcGFja2FnZSAtbiBsaWJzdGRjKystZGV2ZWwKIFN1bW1hcnk6IEhlYWRlciBm aWxlcyBhbmQgbGlicmFyaWVzIGZvciBDKysgZGV2ZWxvcG1lbnQKIEdyb3VwOiBEZXZlbG9wbWVu dC9MaWJyYXJpZXMKLVJlcXVpcmVzOiBsaWJzdGRjKysgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0s ICV7X3ByZWZpeH0vJXtfbGlifS9saWJzdGRjKysuc28uNgorUmVxdWlyZXM6IGxpYnN0ZGMrKyV7 P19pc2F9ID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CiBBdXRvcmVxOiB0cnVlCiAKICVkZXNjcmlw dGlvbiAtbiBsaWJzdGRjKystZGV2ZWwKQEAgLTM2Miw4ICszNjIsOCBAQCBwcm9ncmFtcyBjb21w aWxlZCB1c2luZyB0aGUgSmF2YSBjb21waWxlciBmcm9tIEdOVSBDb21waWxlciBDb2xsZWN0aW9u IChnY2opLgogJXBhY2thZ2UgLW4gbGliZ2NqLWRldmVsCiBTdW1tYXJ5OiBMaWJyYXJpZXMgZm9y IEphdmEgZGV2ZWxvcG1lbnQgdXNpbmcgR0NDCiBHcm91cDogRGV2ZWxvcG1lbnQvTGFuZ3VhZ2Vz Ci1SZXF1aXJlczogbGliZ2NqID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9LCAle19wcmVmaXh9LyV7 X2xpYn0vbGliZ2NqLnNvLjEwCi1SZXF1aXJlczogemxpYi1kZXZlbCwgJXtfcHJlZml4fS8le19s aWJ9L2xpYnouc28KK1JlcXVpcmVzOiBsaWJnY2olez9faXNhfSA9ICV7dmVyc2lvbn0tJXtyZWxl YXNlfQorUmVxdWlyZXM6IHpsaWItZGV2ZWwlez9faXNhfQogUmVxdWlyZXM6IC9iaW4vYXdrCiBB dXRvcmVxOiBmYWxzZQogQXV0b3Byb3Y6IGZhbHNlCkBAIC00NjAsMTQgKzQ2MCwxMiBAQCB3aGlj aCBhcmUgcmVxdWlyZWQgdG8gY29tcGlsZSB3aXRoIHRoZSBHTkFULgogJWlmICV7YnVpbGRfY2xv b2d9CiAlcGF0Y2gxNCAtcDAgLWIgLmNsb29nLWRsfgogJWVuZGlmCi0lcGF0Y2gxNSAtcDAgLWIg LnJhdy1zdHJpbmd+CiAlcGF0Y2gxNiAtcDAgLWIgLnVud2luZC1kZWJ1Zy1ob29rfgogJXBhdGNo MTcgLXAwIC1iIC5wcjM4NzU3fgogJWlmICV7YnVpbGRfbGlic3RkY3h4X2RvY3N9CiAlcGF0Y2gx OCAtcDAgLWIgLmxpYnN0ZGMrKy1kb2NzfgogJWVuZGlmCiAlcGF0Y2gxOSAtcDAgLWIgLnBwYzY0 LWFpeGRlc2N+Ci0lcGF0Y2gyMCAtcDAgLWIgLnZ0YS1yaDUyMTk5MX4KIAogIyBUaGlzIHRlc3Rj YXNlIGRvZXNuJ3QgY29tcGlsZS4KIHJtIGxpYmphdmEvdGVzdHN1aXRlL2xpYmphdmEubGFuZy9Q UjM1MDIwKgpAQCAtNDgwLDcgKzQ3OCw3IEBAIHRhciB4emYgJXtTT1VSQ0U0fQogdGFyIHhqZiAl e1NPVVJDRTEwfQogJWVuZGlmCiAKLXNlZCAtaSAtZSAncy80XC40XC4yLzQuNC4xLycgZ2NjL0JB U0UtVkVSCitzZWQgLWkgLWUgJ3MvNFwuNFwuMy80LjQuMi8nIGdjYy9CQVNFLVZFUgogZWNobyAn UmVkIEhhdCAle3ZlcnNpb259LSV7Z2NjX3JlbGVhc2V9JyA+IGdjYy9ERVYtUEhBU0UKIAogIyBE ZWZhdWx0IHRvIC1nZHdhcmYtMyByYXRoZXIgdGhhbiAtZ2R3YXJmLTIKQEAgLTY0Myw2ICs2NDEs MTEgQEAgQ0M9IiRDQyIgQ0ZMQUdTPSIkT1BUX0ZMQUdTIiBDWFhGTEFHUz0iYGVjaG8gJE9QVF9G TEFHUyB8IHNlZCAncy8gLVdhbGwgLyAvZydgIiAKICVpZmFyY2ggc3BhcmMgc3BhcmN2OQogCS0t aG9zdD0le2djY190YXJnZXRfcGxhdGZvcm19IC0tYnVpbGQ9JXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fSAtLXRhcmdldD0le2djY190YXJnZXRfcGxhdGZvcm19IC0td2l0aC1jcHU9djcKICVlbmRpZgor JWlmIDAlez9yaGVsfSA+PSA2CislaWZhcmNoIHBwYyBwcGM2NAorCS0td2l0aC1jcHUtMzI9cG93 ZXI0IC0td2l0aC10dW5lLTMyPXBvd2VyNiAtLXdpdGgtY3B1LTY0PXBvd2VyNCAtLXdpdGgtdHVu ZS02ND1wb3dlcjYgXAorJWVuZGlmCislZW5kaWYKICVpZmFyY2ggcHBjCiAJLS1idWlsZD0le2dj Y190YXJnZXRfcGxhdGZvcm19IC0tdGFyZ2V0PSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0gLS13aXRo LWNwdT1kZWZhdWx0MzIKICVlbmRpZgpAQCAtMTE3MCw2ICsxMTczLDEzIEBAIGNobW9kIDY0NCAl e2J1aWxkcm9vdH0le19tYW5kaXJ9L21hbjEvdW5wcm90b2l6ZS4xCiAlY2hlY2sKIGNkIG9iai0l e2djY190YXJnZXRfcGxhdGZvcm19CiAKKyVpZiAle2J1aWxkX2phdmF9CitleHBvcnQgUEFUSD1g cHdkYC8uLi9mYXN0amFyLSV7ZmFzdGphcl92ZXJ9L29iai0le2djY190YXJnZXRfcGxhdGZvcm19 JHtQQVRIOis6JFBBVEh9CislaWYgISV7Ym9vdHN0cmFwX2phdmF9CitleHBvcnQgUEFUSD1gcHdk YC9qYXZhX2hhY2tzJHtQQVRIOis6JFBBVEh9CislZW5kaWYKKyVlbmRpZgorCiAjIHJ1biB0aGUg dGVzdHMuCiBtYWtlICV7P19zbXBfbWZsYWdzfSAtayBjaGVjayBBTFRfQ0NfVU5ERVJfVEVTVD1n Y2MgQUxUX0NYWF9VTkRFUl9URVNUPWcrKyBSVU5URVNURkxBR1M9Ii0tdGFyZ2V0X2JvYXJkPXVu aXgvJ3ssLWZzdGFjay1wcm90ZWN0b3J9JyIgfHwgOgogZWNobyA9PT09PT09PT09PT09PT09PT09 PVRFU1RJTkc9PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xMzcxLDYgKzEzODEsOCBAQCBm aQogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lv bn0vaW5jbHVkZS9hdnhpbnRyaW4uaAogJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9w bGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS94ODZpbnRyaW4uaAogJXtfcHJlZml4fS9s aWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vaW5jbHVkZS9mbWE0 aW50cmluLmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2Nj X3ZlcnNpb259L2luY2x1ZGUveG9waW50cmluLmgKKyV7X3ByZWZpeH0vbGliL2djYy8le2djY190 YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvbHdwaW50cmluLmgKICV7X3By ZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259L2luY2x1 ZGUvbW1fbWFsbG9jLmgKICV7X3ByZWZpeH0vbGliL2djYy8le2djY190YXJnZXRfcGxhdGZvcm19 LyV7Z2NjX3ZlcnNpb259L2luY2x1ZGUvbW0zZG5vdy5oCiAle19wcmVmaXh9L2xpYi9nY2MvJXtn Y2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufS9pbmNsdWRlL2NwdWlkLmgKQEAgLTE4 MzcsNiArMTg0OSwxNTcgQEAgZmkKICVkb2MgcnBtLmRvYy9jaGFuZ2Vsb2dzL2xpYm11ZGZsYXAv Q2hhbmdlTG9nKgogCiAlY2hhbmdlbG9nCisqIEZyaSBEZWMgIDQgMjAwOSBKYWt1YiBKZWxpbmVr IDxqYWt1YkByZWRoYXQuY29tPiA0LjQuMi0xNAorLSB1cGRhdGUgZnJvbSBnY2MtNF80LWJyYW5j aAorICAtIFBScyBsaWJzdGRjKysvNDIyNjEsIG1pZGRsZS1lbmQvNDIwNDkKKy0gYmFja3BvcnQg QysrMHggSUNFIGZpeCBmcm9tIHRydW5rIChQUiBjKysvNDIyNjYpCistIGZvcnRyYW4gISRvbXAg d29ya3NoYXJlIGltcHJvdmVtZW50cyAoUFIgZm9ydHJhbi8zNTQyMykKKy0gRk1BNCBhbmQgWE9Q IGZpeGVzCisKKyogV2VkIERlYyAgMiAyMDA5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5j b20+IDQuNC4yLTEzCistIGZpeCBzZWN1cml0eSBpc3N1ZXMgaW4gbGlibHRkbCBidW5kbGVkIHdp dGhpbiBsaWJnY2ogKENWRS0yMDA5LTM3MzYpCisKKyogV2VkIERlYyAgMiAyMDA5IEpha3ViIEpl bGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuNC4yLTEyCistIHVwZGF0ZSBmcm9tIGdjYy00XzQt YnJhbmNoCisgIC0gUFJzIGMrKy80MjIzNCwgZm9ydHJhbi80MTI3OCwgZm9ydHJhbi80MTgwNywg Zm9ydHJhbi80MjE2MiwgdGFyZ2V0LzQyMTEzLAorCXRhcmdldC80MjE2NQorICAtIGRvbid0IElD RSBvbiAtTzI1NiAoIzUzOTkyMykKKy0gZml4IC1tcmVnbmFtZXMgb24gcHBjL3BwYzY0CistIG9w dGltaXplIGV2ZW4gQ09NREFUIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgd2l0aG91dCB2 aXJ0dWFsCisgIGJhc2VzIChQUiBjKysvMzE4NykKKworKiBNb24gTm92IDIzIDIwMDkgSmFrdWIg SmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC40LjItMTEKKy0gdXBkYXRlIGZyb20gZ2NjLTRf NC1icmFuY2gKKyAgLSBQUnMgYysrLzQyMDU5LCBjKysvNDIwNjEsIGxpYmdmb3J0cmFuLzQyMDkw CistIFZUQSBiYWNrcG9ydHMKKyAgLSBQUnMgZGVidWcvNDE4ODYsIGRlYnVnLzQxODg4LCBkZWJ1 Zy80MTkyNiwgdHJlZS1vcHRpbWl6YXRpb24vNDIwNzgKKy0gb3B0aW1pemUgbm9uLUNPTURBVCBj b25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIHdpdGhvdXQgdmlydHVhbAorICBiYXNlcyBieSBt YWtpbmcgdGhlIGJhc2UgYW5kIGNvbXBsZXRlIGN0b3Igb3IgZHRvciBhbGlhc2VzIG9mCisgIGVh Y2ggb3RoZXIgKFBSIGMrKy8zMTg3KQorCisqIFNhdCBOb3YgMTQgMjAwOSBKYWt1YiBKZWxpbmVr IDxqYWt1YkByZWRoYXQuY29tPiA0LjQuMi0xMAorLSB1cGRhdGUgZnJvbSBnY2MtNF80LWJyYW5j aAorICAtIFBScyBjKysvMjEwMDgsIGMrKy8zNzAzNywgYysrLzQxOTcyLCBjKysvNDE5OTQsIG1p ZGRsZS1lbmQvNDA5NDYsCisJbWlkZGxlLWVuZC80MjAyOQorLSBWVEEgYmFja3BvcnRzCisgIC0g UFIgbWlkZGxlLWVuZC80MTkzMAorLSBvcHRpbWl6ZSBkZWxldGluZyBkZXN0cnVjdG9ycyBmb3Ig c2l6ZSAoUFIgYysrLzMxODcpCistIHRyeSB0byBhdm9pZCBmaWxlIFJlcXVpcmVzIGJ5IHJlcXVp cmluZyBwYWNrYWdlJSV7P19pc2F9ICgjNTMzOTQ3KQorCisqIE1vbiBOb3YgIDkgMjAwOSBKYWt1 YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjQuMi05CistIHVwZGF0ZSBmcm9tIGdjYy00 XzQtYnJhbmNoCisgIC0gUFJzIGMrKy8zNTA2NywgYysrLzM2OTEyLCBjKysvMzY5NTksIGMrKy8z NzA5MywgYysrLzM4Njk5LCBjKysvMzk3ODYsCisJYysrLzQxODU2LCBjKysvNDE4NzYsIGMrKy80 MTk2NywgYysrLzkzODEsIGZvcnRyYW4vNDE3NzIsCisJZm9ydHJhbi80MTkwOSwgbWlkZGxlLWVu ZC80MTk2MywgcnRsLW9wdGltaXphdGlvbi80MTkxNywKKwl0YXJnZXQvNDE5MDAsIHRyZWUtb3B0 aW1pemF0aW9uLzQxNjQzCistIHNlbGVjdGVkIGJhY2twb3J0cyBmcm9tIHRydW5rCisgIC0gUFJz IGRlYnVnLzQxODAxLCBtaWRkbGUtZW5kLzQxODM3LCB0YXJnZXQvNDE5ODUsIHRyZWUtb3B0aW1p emF0aW9uLzQxODQxCistIGluaXRpYWwgQU1EIE9yb2NoaSAtbXhvcCBhbmQgLW1sd3Agc3VwcG9y dAorLSB0cnkgdG8gYXZvaWQgd3JhcHBpbmcgQ09OU1RfSU5Ucy9WT0lEbW9kZSBDT05TVF9ET1VC TEVzIGludG8gQ09OU1QKKworKiBNb24gTm92ICAyIDIwMDkgSmFrdWIgSmVsaW5layA8amFrdWJA cmVkaGF0LmNvbT4gNC40LjItOAorLSB1cGRhdGUgZnJvbSBnY2MtNF80LWJyYW5jaAorICAtIFBS cyBjKysvNDE3NTQsIGZvcnRyYW4vNDE3NzcsIGZvcnRyYW4vNDE4NTAsIGxpYnN0ZGMrKy80MDg1 MgorLSBmaXggSUNFIHdpdGggdW5tYXRjaGVkICNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaC9w b3AgKFBSIGMrKy80MTc3NCkKKy0gZml4IFZUQSBJQ0Ugd2l0aCAtY29tYmluZSAoIzUzMTM4NSwg UFIgZGVidWcvNDE4OTMpCistIGZpeCBSVFRJIGZvciBhbm9uIG5hbWVzcGFjZSBjbGFzc2VzCist IGZpeCBpbmNvcnJlY3QgdXNlcyBvZiBfX3Jlc3RyaWN0IGtleXdvcmQgaW4gdmFsYXJyYXkgKFBS IGxpYnN0ZGMrKy80MTc2MykKKworKiBUdWUgT2N0IDI3IDIwMDkgSmFrdWIgSmVsaW5layA8amFr dWJAcmVkaGF0LmNvbT4gNC40LjItNworLSB1cGRhdGUgZnJvbSBnY2MtNF80LWJyYW5jaAorICAt IFBScyBjKysvNDA4MDgsIGMvNDE4NDIsIGNwLXRvb2xzLzM5MTc3CistIFZUQSBiYWNrcG9ydHMK KyAgLSBQUiBib290c3RyYXAvNDEzNDUKKy0gZG9uJ3QgZW1pdCBEV19BVF9uYW1lOiA8YW5vbnlt b3VzIHN0cnVjdD4gZXRjLiBpbnRvIGRlYnVnIGluZm8KKyAgKCM1MzAzMDQsIFBSIGRlYnVnLzQx ODI4KQorLSBwb3dlcjcgQUJJIGZpeGVzIChQUiB0YXJnZXQvNDE3ODcpCistIGZpeCBJQ0UgaW4g aXg4Nl9waWNfcmVnaXN0ZXJfcCAoUFIgdGFyZ2V0LzQxNzYyKQorCisqIFRodSBPY3QgMjIgMjAw OSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjQuMi02CistIHVwZGF0ZSBmcm9t IGdjYy00XzQtYnJhbmNoCisgIC0gUFIgdGFyZ2V0LzQxNzAyCisgIC0gZml4IGEgcG9kMm1hbiBl cnJvciBpbiBnY2MuMSAoIzUzMDEwMikKKyAgLSBmaXggbWFuZ2xpbmcgb2YgdmVyeSBsYXJnZSBu YW1lcworLSBkb2N1bWVudCAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5IGluIGdjYy5pbmZvIGFu ZCBnY2MuMQorICAoIzUyOTY1OSwgUFIgb3RoZXIvMjU1MDcpCisKKyogTW9uIE9jdCAxOSAyMDA5 IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuNC4yLTUKKy0gdXBkYXRlIGZyb20g Z2NjLTRfNC1icmFuY2gKKyAgLSBQUiBmb3J0cmFuLzQxNzU1CisgIC0gczM5MCB6MTAgdHVuaW5n IGZpeGVzCistIHByb3ZpZGUgYWNjdXJhdGUgYXR0cmlidXRlcyBmb3IgcG93ZXJwYyBidWlsdGlu cyAoUFIgdGFyZ2V0LzIzOTgzKQorLSBmaXggLWZjb21wYXJlLWRlYnVnIGRpZmZlcmVuY2VzIGNh dXNlZCBieSBEQ0UgcmVtb3ZhbCBvZiBkZWJ1ZyBzdG10cworLSBmaXggdXBkYXRpbmcgb2Ygc3Bl Y3VsYXRpb24gc3RhdHVzIHdpdGggVlRBIChQUiBkZWJ1Zy80MTczOSkKKworKiBTdW4gT2N0IDE4 IDIwMDkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC40LjItNAorLSB1cGRhdGUg ZnJvbSBnY2MtNF80LWJyYW5jaAorICAtIFBScyBjKysvMzcyMDQsIGMrKy8zNzc2NiwgYysrLzM3 ODc1LCBjKysvMzg3OTgsIGMrKy80MDA5MiwKKwlsaWJzdGRjKysvNDA2NTQsIGxpYnN0ZGMrKy80 MDgyNgorLSBmaXggVlRBIElDRSBvbiBpbnZhbGlkIHBvaW50ZXIgYXJpdGhtZXRpY3MgKCM1Mjk1 MTIpCisKKyogU2F0IE9jdCAxNyAyMDA5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+ IDQuNC4yLTMKKy0gZml4IFZUQSBoYW5kbGluZyBpbiB0aGUgc2NoZWR1bGVyIChQUiBkZWJ1Zy80 MTUzNSkKKy0gZml4IHVwICUlY2hlY2sgc2VjdGlvbiB0byBiZSBhYmxlIHRvIGZpbmQgZWNqMQor CisqIEZyaSBPY3QgMTYgMjAwOSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjQu Mi0yCistIHVwZGF0ZSBmcm9tIGdjYy00XzQtYnJhbmNoCisgIC0gUFIgdGFyZ2V0LzQwOTEzCist IFZUQSBiYWNrcG9ydHMKKyAgLSBQUiBkZWJ1Zy80MTcxNworLSBmaXggQWRhIC5laF9mcmFtZSBn ZW5lcmF0aW9uIChQUiBkZWJ1Zy80MDUyMSkKKworKiBUaHUgT2N0IDE1IDIwMDkgSmFrdWIgSmVs aW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC40LjItMQorLSB1cGRhdGUgZnJvbSBnY2MtNF80LWJy YW5jaAorICAtIEdDQyA0LjQuMiByZWxlYXNlCisgIC0gUFJzIG1pZGRsZS1lbmQvMjIwNzIsIHRh cmdldC80MTY2NQorLSBkb24ndCBlbWl0IC1XcGFkZGVkIHdhcm5pbmdzIGZvciBidWlsdGluIHN0 cnVjdHVyZXMKKy0gZG9uJ3QgZ2VuZXJhdGUgLmVoX2ZyYW1lLCBidXQgZ2VuZXJhdGUgLmRlYnVn X2ZyYW1lIHdoZW4gLWcgYW5kIG5vbmUgb2YKKyAgLWZhc3luY2hyb25vdXMtdW53aW5kLXRhYmxl cy8tZmV4Y2VwdGlvbnMvLWZ1bndpbmQtdGFibGVzIGlzIHVzZWQKKyAgKFBSIGRlYnVnLzQwNTIx KQorCisqIFdlZCBPY3QgMTQgMjAwOSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0 LjQuMS0yMgorLSB1cGRhdGUgZnJvbSBnY2MtNF80LWJyYW5jaAorICAtIFBScyB0YXJnZXQvMjY1 MTUsIHRhcmdldC8zODk0OAorICAtIGZpeCBzMzkweyx4fSBCTEttb2RlIHN5bWJvbCBoYW5kbGlu ZworICAtIGZpeCBpPzg2IHRlc3RxaSBzcGxpdHRlciAoIzUyODIwNiwgUFIgdGFyZ2V0LzQxNjgw KQorLSBWVEEgYmFja3BvcnRzCisgIC0gaW50cm9kdWNlIGRlYnVnIHRlbXBzIChQUnMgZGVidWcv NDEyNjQsIGRlYnVnLzQxMzM4LCBkZWJ1Zy80MTM0MywKKyAgICBkZWJ1Zy80MTQ0NywgdGFyZ2V0 LzQxNjkzKQorICAtIGJ1aWxkIGRlYnVnIHN0bXRzIG9uIHVwZGF0ZXMgKFBSIGRlYnVnLzQxNjE2 KQorICAtIGZpeCBhbm90aGVyIHdpdGgvd2l0aG91dCAtc2F2ZS10ZW1wcyBkZWJ1ZyBpbmZvIGRp ZmZlcmVuY2UKKyAgICAoIzUyNjg0MSwgUFIgcHJlcHJvY2Vzc29yLzQxNTQzKQorICAtIGZpeCBp bnZhbGlkIHJhbmdlcyBpbiAuZGVidWdfbG9jIHNlY3Rpb24gKFBSIGRlYnVnLzQxNjk1KQorJWlm IDAlez9yaGVsfSA+PSA2CistIGlmIC1tY3B1PSBpc24ndCBzcGVjaWZpZWQsIGRlZmF1bHQgdG8g LW1jcHU9cG93ZXI0ICgjNDYzNTQ5KQorJWVuZGlmCisKKyogU2F0IE9jdCAxMCAyMDA5IEpha3Vi IEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuNC4xLTIxCistIHVwZGF0ZSBmcm9tIGdjYy00 XzQtYnJhbmNoCisgIC0gZml4IHMzOTB7LHh9IHByZWZldGNoIGZvciBwcmUtejEwIENQVXMgKCM1 MjQ1NTIpCistIFZUQSBiYWNrcG9ydHMKKyAgLSBmaXggZGVidWcgaW5mbyBkaWZmZXJlbmNlcyB3 aXRoL3dpdGhvdXQgLXNhdmUtdGVtcHMKKyAgICAoUFIgcHJlcHJvY2Vzc29yLzQxNDQ1KQorLSBm aXggSUNFIHdpdGggc21hbGwgQkxLbW9kZSByZXR1cm5pbmcgY2FsbCAoIzUxNjAyOCwKKyAgUFIg cnRsLW9wdGltaXphdGlvbi80MTY0NikKKworKiBUaHUgT2N0ICA4IDIwMDkgSmFrdWIgSmVsaW5l ayA8amFrdWJAcmVkaGF0LmNvbT4gNC40LjEtMjAKKy0gdXBkYXRlIGZyb20gZ2NjLTRfNC1icmFu Y2gKKyAgLSBQUnMgYysrLzM5ODYzLCBjKysvNDEwMzgKKy0gYXZvaWQgcmVkdW5kYW50IERXX0FU X2NvbnN0X3ZhbHVlIHdoZW4gYWJzdHJhY3Qgb3JpZ2luIGFscmVhZHkgaGFzIG9uZQorICAoIzUy NzQzMCkgCistIGFub3RoZXIgVlRBIGRlYnVnIHN0bXQgcmVuYW1pbmcgYnVnZml4ICgjNTIxOTkx KQorCisqIE1vbiBPY3QgIDUgMjAwOSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0 LjQuMS0xOQorLSB1cGRhdGUgZnJvbSBnY2MtNF80LWJyYW5jaAorICAtIFBScyBmb3J0cmFuLzQx NDc5LCBmb3J0cmFuLzQxNTE1CistIFZUQSBiYWNrcG9ydHMKKyAgLSBQUnMgZGVidWcvNDEzNTMs IGRlYnVnLzQxNDA0LCBydGwtb3B0aW1pemF0aW9uLzQxNTExCisgIC0gYW5vdGhlciBkZWJ1ZyBp bmZvIGZpeCBmb3IgZGVjbHMgcGFzc2VkIGJ5IHJlZmVyZW5jZSAoIzUyNzA1NywKKyAgICBQUiBk ZWJ1Zy80MTU1OCkKKyAgLSBkb24ndCBlbWl0IERXX0FUX25hbWUgb24gRFdfVEFHX2NvbnN0X3R5 cGUgKCM1MjY5NzApCistIGF2b2lkIGludmFsaWQgZm9sZGluZyBvZiBjYXN0cyB0byBhZGRyZXNz ZXMgb2YgZmlyc3QgZmllbGRzCisgICgjNTI3MTIxLCBQUiBtaWRkbGUtZW5kLzQxMzE3KQorCiAq IFRodSBPY3QgIDEgMjAwOSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjQuMS0x OAogLSB1cGRhdGUgZnJvbSBnY2MtNF80LWJyYW5jaAogICAtIFBScyBhZGEvNDExMDAsIHRhcmdl dC8yMjA5MwoKZGlmZiAtLWdpdCBhL2djYzQ0LWhhY2sucGF0Y2ggYi9nY2M0NC1oYWNrLnBhdGNo CmluZGV4IGM3NzAzMzkuLjg3MTlkMTcgMTAwNjQ0Ci0tLSBhL2djYzQ0LWhhY2sucGF0Y2gKKysr IGIvZ2NjNDQtaGFjay5wYXRjaApAQCAtMSw2ICsxLDYgQEAKIC0tLSBsaWJhZGEvTWFrZWZpbGUu aW4uamoJMjAwOS0wMS0xNCAxMjowNzozNS4wMDAwMDAwMDAgKzAxMDAKICsrKyBsaWJhZGEvTWFr ZWZpbGUuaW4JMjAwOS0wMS0xNSAxNDoyNTozMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC02NywxNyAr NjcsMzkgQEAgdmVyc2lvbiA6PSAkKHNoZWxsIGNhdCAkKHNyY2RpcikvLi4vZ2NjLworQEAgLTY5 LDE4ICs2OSw0MCBAQCB2ZXJzaW9uIDo9ICQoc2hlbGwgY2F0ICQoc3JjZGlyKS8uLi9nY2MvCiAg bGlic3ViZGlyIDo9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNp b24pJChNVUxUSVNVQkRJUikKICBBREFfUlRTX0RJUj0kKEdDQ19ESVIpL2FkYS9ydHMkKHN1YnN0 IC8sXywkKE1VTFRJU1VCRElSKSkKICAKQEAgLTM4LDEyICszOCwxNCBAQAogICAgICAgICAgIlNI RUxMPSQoU0hFTEwpIiBcCiAtICAgICAgICAiR05BVExJQkZMQUdTPSQoR05BVExJQkZMQUdTKSAk KE1VTFRJRkxBR1MpIiBcCiAtICAgICAgICAiR05BVExJQkNGTEFHUz0kKEdOQVRMSUJDRkxBR1Mp ICQoTVVMVElGTEFHUykiIFwKKy0gICAgICAgICJHTkFUTElCQ0ZMQUdTX0ZPUl9DPSQoR05BVExJ QkNGTEFHU19GT1JfQykgJChNVUxUSUZMQUdTKSIgXAogKyAgICAgICAgIkdOQVRMSUJGTEFHUz0k KHN0cmlwICQoR05BVExJQkZMQUdTKSAkKE1VTFRJRkxBR1MpICQoREVGQVVMVE1VTFRJRkxBR1Mp KSIgXAogKyAgICAgICAgIkdOQVRMSUJDRkxBR1M9JChzdHJpcCAkKEdOQVRMSUJDRkxBR1MpICQo TVVMVElGTEFHUykgJChERUZBVUxUTVVMVElGTEFHUykpIiBcCisrICAgICAgICAiR05BVExJQkNG TEFHU19GT1JfQz0kKHN0cmlwICQoR05BVExJQkNGTEFHU19GT1JfQykgJChNVUxUSUZMQUdTKSAk KERFRkFVTFRNVUxUSUZMQUdTKSkiIFwKICAgICAgICAgICJUQVJHRVRfTElCR0NDMl9DRkxBR1M9 JChUQVJHRVRfTElCR0NDMl9DRkxBR1MpIiBcCiAgICAgICAgICAiVEhSRUFEX0tJTkQ9JChUSFJF QURfS0lORCkiIFwKICAgICAgICAgICJUUkFDRT0kKFRSQUNFKSIgXAotQEAgLTg4LDcgKzExMCw3 IEBAIExJQkFEQV9GTEFHU19UT19QQVNTID0gXAorQEAgLTkxLDcgKzExMyw3IEBAIExJQkFEQV9G TEFHU19UT19QQVNTID0gXAogICAgICAgICAgImV4ZWV4dD0uZXhlZXh0LnNob3VsZC5ub3QuYmUu dXNlZCAiIFwKICAJJ0NDPXRoZS5ob3N0LmNvbXBpbGVyLnNob3VsZC5ub3QuYmUubmVlZGVkJyBc CiAgCSJHQ0NfRk9SX1RBUkdFVD0kKENDKSIgXAoKZGlmZiAtLWdpdCBhL2djYzQ0LXJhdy1zdHJp bmcucGF0Y2ggYi9nY2M0NC1yYXctc3RyaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA5MmEyZDU3Li4wMDAwMDAwCi0tLSBhL2djYzQ0LXJhdy1zdHJpbmcucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxNDk1ICswLDAgQEAKLTIwMDgtMDktMTIgIEpha3ViIEplbGluZWsg IDxqYWt1YkByZWRoYXQuY29tPgotCi0JKiBjaGFyc2V0LmMgKGNwcF9pbml0X2ljb252KTogSW5p dGlhbGl6ZSB1dGY4X2NzZXRfZGVzYy4KLQkoX2NwcF9kZXN0cm95X2ljb252KTogRGVzdHJveSB1 dGY4X2NzZXRfZGVzYywgY2hhcjE2X2NzZXRfZGVzYwotCWFuZCBjaGFyMzJfY3NldF9kZXNjLgot CShjb252ZXJ0ZXJfZm9yX3R5cGUpOiBIYW5kbGUgQ1BQX1VURjhTVFJJTkcuCi0JKGNwcF9pbnRl cnByZXRfc3RyaW5nKTogSGFuZGxlIENQUF9VVEY4U1RSSU5HIGFuZCByYXctc3RyaW5ncy4KLQkq IGRpcmVjdGl2ZXMuYyAoZ2V0X19QcmFnbWFfc3RyaW5nKTogSGFuZGxlIENQUF9VVEY4U1RSSU5H LgotCSogaW5jbHVkZS9jcHBsaWIuaCAoQ1BQX1VURjhTVFJJTkcpOiBOZXcgdG9rZW4gdHlwZS4K LQkqIGludGVybmFsLmggKHN0cnVjdCBjcHBfcmVhZGVyKTogQWRkIHV0ZjhfY3NldF9kZXNjIGZp ZWxkLgotCSogbGV4LmMgKGxleF9yYXdfc3RyaW5nKTogTmV3IGZ1bmN0aW9uLgotCShsZXhfc3Ry aW5nKTogSGFuZGxlIHU4IHN0cmluZyBsaXRlcmFscywgY2FsbCBsZXhfcmF3X3N0cmluZwotCWZv ciByYXcgc3RyaW5nIGxpdGVyYWxzLgotCShfY3BwX2xleF9kaXJlY3QpOiBDYWxsIGxleF9zdHJp bmcgZXZlbiBmb3IgdTgiIGFuZCB7LHUsVSxMLHU4fVIiCi0Jc2VxdWVuY2VzLgotCSogbWFjcm8u YyAoc3RyaW5naWZ5X2FyZyk6IEhhbmRsZSBDUFBfVVRGOFNUUklORy4KLQotCSogYy1jb21tb24u YyAoY19wYXJzZV9lcnJvcik6IEhhbmRsZSBDUFBfVVRGOFNUUklORy4KLQkqIGMtbGV4LmMgKGNf bGV4X3dpdGhfZmxhZ3MsIGxleF9zdHJpbmcpOiBMaWtld2lzZS4KLQkqIGMtcGFyc2VyLmMgKGNf cGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbik6IExpa2V3aXNlLgotCi0JKiBwYXJzZXIuYyAoY3Bf bGV4ZXJfcHJpbnRfdG9rZW4sIGNwX3BhcnNlcl9pc19zdHJpbmdfbGl0ZXJhbCwKLQljcF9wYXJz ZXJfc3RyaW5nX2xpdGVyYWwsIGNwX3BhcnNlcl9wcmltYXJ5X2V4cHJlc3Npb24pOiBMaWtld2lz ZS4KLQotCSogZ2NjLmRnL3Jhdy1zdHJpbmctMS5jOiBOZXcgdGVzdC4KLQkqIGdjYy5kZy9yYXct c3RyaW5nLTIuYzogTmV3IHRlc3QuCi0JKiBnY2MuZGcvcmF3LXN0cmluZy0zLmM6IE5ldyB0ZXN0 LgotCSogZ2NjLmRnL3Jhdy1zdHJpbmctNC5jOiBOZXcgdGVzdC4KLQkqIGdjYy5kZy9yYXctc3Ry aW5nLTUuYzogTmV3IHRlc3QuCi0JKiBnY2MuZGcvcmF3LXN0cmluZy02LmM6IE5ldyB0ZXN0Lgot CSogZ2NjLmRnL3Jhdy1zdHJpbmctNy5jOiBOZXcgdGVzdC4KLQkqIGdjYy5kZy91dGY4LTEuYzog TmV3IHRlc3QuCi0JKiBnY2MuZGcvdXRmOC0yLmM6IE5ldyB0ZXN0LgotCSogZ2NjLmRnL3V0Zi1i YWRjb25jYXQyLmM6IE5ldyB0ZXN0LgotCSogZ2NjLmRnL3V0Zi1kZmx0Mi5jOiBOZXcgdGVzdC4K LQkqIGcrKy5kZy9leHQvcmF3LXN0cmluZy0xLkM6IE5ldyB0ZXN0LgotCSogZysrLmRnL2V4dC9y YXctc3RyaW5nLTIuQzogTmV3IHRlc3QuCi0JKiBnKysuZGcvZXh0L3Jhdy1zdHJpbmctMy5DOiBO ZXcgdGVzdC4KLQkqIGcrKy5kZy9leHQvcmF3LXN0cmluZy00LkM6IE5ldyB0ZXN0LgotCSogZysr LmRnL2V4dC9yYXctc3RyaW5nLTUuQzogTmV3IHRlc3QuCi0JKiBnKysuZGcvZXh0L3Jhdy1zdHJp bmctNi5DOiBOZXcgdGVzdC4KLQkqIGcrKy5kZy9leHQvcmF3LXN0cmluZy03LkM6IE5ldyB0ZXN0 LgotCSogZysrLmRnL2V4dC91dGY4LTEuQzogTmV3IHRlc3QuCi0JKiBnKysuZGcvZXh0L3V0Zjgt Mi5DOiBOZXcgdGVzdC4KLQkqIGcrKy5kZy9leHQvdXRmLWJhZGNvbmNhdDIuQzogTmV3IHRlc3Qu Ci0JKiBnKysuZGcvZXh0L3V0Zi1kZmx0Mi5DOiBOZXcgdGVzdC4KLQotLS0tIGxpYmNwcC9jaGFy c2V0LmMuamoJMjAwOC0wOS0wNSAxMjo1OTo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJjcHAv Y2hhcnNldC5jCTIwMDgtMDktMTEgMjI6MTE6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNzIxLDYg KzcyMSw4IEBAIGNwcF9pbml0X2ljb252IChjcHBfcmVhZGVyICpwZmlsZSkKLSAKLSAgIHBmaWxl LT5uYXJyb3dfY3NldF9kZXNjID0gaW5pdF9pY29udl9kZXNjIChwZmlsZSwgbmNzZXQsIFNPVVJD RV9DSEFSU0VUKTsKLSAgIHBmaWxlLT5uYXJyb3dfY3NldF9kZXNjLndpZHRoID0gQ1BQX09QVElP TiAocGZpbGUsIGNoYXJfcHJlY2lzaW9uKTsKLSsgIHBmaWxlLT51dGY4X2NzZXRfZGVzYyA9IGlu aXRfaWNvbnZfZGVzYyAocGZpbGUsICJVVEYtOCIsIFNPVVJDRV9DSEFSU0VUKTsKLSsgIHBmaWxl LT51dGY4X2NzZXRfZGVzYy53aWR0aCA9IENQUF9PUFRJT04gKHBmaWxlLCBjaGFyX3ByZWNpc2lv bik7Ci0gICBwZmlsZS0+Y2hhcjE2X2NzZXRfZGVzYyA9IGluaXRfaWNvbnZfZGVzYyAocGZpbGUs Ci0gCQkJCQkgICAgIGJlID8gIlVURi0xNkJFIiA6ICJVVEYtMTZMRSIsCi0gCQkJCQkgICAgIFNP VVJDRV9DSEFSU0VUKTsKLUBAIC03NDEsNiArNzQzLDEyIEBAIF9jcHBfZGVzdHJveV9pY29udiAo Y3BwX3JlYWRlciAqcGZpbGUpCi0gICAgIHsKLSAgICAgICBpZiAocGZpbGUtPm5hcnJvd19jc2V0 X2Rlc2MuZnVuYyA9PSBjb252ZXJ0X3VzaW5nX2ljb252KQotIAlpY29udl9jbG9zZSAocGZpbGUt Pm5hcnJvd19jc2V0X2Rlc2MuY2QpOwotKyAgICAgIGlmIChwZmlsZS0+dXRmOF9jc2V0X2Rlc2Mu ZnVuYyA9PSBjb252ZXJ0X3VzaW5nX2ljb252KQotKwlpY29udl9jbG9zZSAocGZpbGUtPnV0Zjhf Y3NldF9kZXNjLmNkKTsKLSsgICAgICBpZiAocGZpbGUtPmNoYXIxNl9jc2V0X2Rlc2MuZnVuYyA9 PSBjb252ZXJ0X3VzaW5nX2ljb252KQotKwlpY29udl9jbG9zZSAocGZpbGUtPmNoYXIxNl9jc2V0 X2Rlc2MuY2QpOwotKyAgICAgIGlmIChwZmlsZS0+Y2hhcjMyX2NzZXRfZGVzYy5mdW5jID09IGNv bnZlcnRfdXNpbmdfaWNvbnYpCi0rCWljb252X2Nsb3NlIChwZmlsZS0+Y2hhcjMyX2NzZXRfZGVz Yy5jZCk7Ci0gICAgICAgaWYgKHBmaWxlLT53aWRlX2NzZXRfZGVzYy5mdW5jID09IGNvbnZlcnRf dXNpbmdfaWNvbnYpCi0gCWljb252X2Nsb3NlIChwZmlsZS0+d2lkZV9jc2V0X2Rlc2MuY2QpOwot ICAgICB9Ci1AQCAtMTMzMCw2ICsxMzM4LDggQEAgY29udmVydGVyX2Zvcl90eXBlIChjcHBfcmVh ZGVyICpwZmlsZSwgZQotICAgICB7Ci0gICAgIGRlZmF1bHQ6Ci0gCXJldHVybiBwZmlsZS0+bmFy cm93X2NzZXRfZGVzYzsKLSsgICAgY2FzZSBDUFBfVVRGOFNUUklORzoKLSsJcmV0dXJuIHBmaWxl LT51dGY4X2NzZXRfZGVzYzsKLSAgICAgY2FzZSBDUFBfQ0hBUjE2OgotICAgICBjYXNlIENQUF9T VFJJTkcxNjoKLSAJcmV0dXJuIHBmaWxlLT5jaGFyMTZfY3NldF9kZXNjOwotQEAgLTEzNjQsNyAr MTM3NCw0NyBAQCBjcHBfaW50ZXJwcmV0X3N0cmluZyAoY3BwX3JlYWRlciAqcGZpbGUsCi0gICBm b3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLSAgICAgewotICAgICAgIHAgPSBmcm9tW2ldLnRl eHQ7Ci0tICAgICAgaWYgKCpwID09ICdMJyB8fCAqcCA9PSAndScgfHwgKnAgPT0gJ1UnKSBwKys7 Ci0rICAgICAgaWYgKCpwID09ICd1JykKLSsJewotKwkgIGlmICgqKytwID09ICc4JykKLSsJICAg IHArKzsKLSsJfQotKyAgICAgIGVsc2UgaWYgKCpwID09ICdMJyB8fCAqcCA9PSAnVScpIHArKzsK LSsgICAgICBpZiAoKnAgPT0gJ1InKQotKwl7Ci0rCSAgY29uc3QgdWNoYXIgKnByZWZpeDsKLSsK LSsJICAvKiBTa2lwIG92ZXIgJ1IiJy4gICovCi0rCSAgcCArPSAyOwotKwkgIHByZWZpeCA9IHA7 Ci0rCSAgd2hpbGUgKCpwICE9ICdbJykKLSsJICAgIHArKzsKLSsJICBwKys7Ci0rCSAgbGltaXQg PSBmcm9tW2ldLnRleHQgKyBmcm9tW2ldLmxlbjsKLSsJICBpZiAobGltaXQgPj0gcCArIChwIC0g cHJlZml4KSArIDEpCi0rCSAgICBsaW1pdCAtPSAocCAtIHByZWZpeCkgKyAxOwotKwotKwkgIGZv ciAoOzspCi0rCSAgICB7Ci0rCSAgICAgIGJhc2UgPSBwOwotKwkgICAgICB3aGlsZSAocCA8IGxp bWl0ICYmICgqcCAhPSAnXFwnIHx8IChwWzFdICE9ICd1JyAmJiBwWzFdICE9ICdVJykpKQotKwkJ cCsrOwotKwkgICAgICBpZiAocCA+IGJhc2UpCi0rCQl7Ci0rCQkgIC8qIFdlIGhhdmUgYSBydW4g b2Ygbm9ybWFsIGNoYXJhY3RlcnM7IHRoZXNlIGNhbiBiZSBmZWQKLSsJCSAgICAgZGlyZWN0bHkg dG8gY29udmVydF9jc2V0LiAgKi8KLSsJCSAgaWYgKCFBUFBMWV9DT05WRVJTSU9OIChjdnQsIGJh c2UsIHAgLSBiYXNlLCAmdGJ1ZikpCi0rCQkgICAgZ290byBmYWlsOwotKwkJfQotKwkgICAgICBp ZiAocCA9PSBsaW1pdCkKLSsJCWJyZWFrOwotKwotKwkgICAgICBwID0gY29udmVydF91Y24gKHBm aWxlLCBwICsgMSwgbGltaXQsICZ0YnVmLCBjdnQpOwotKwkgICAgfQotKwotKwkgIGNvbnRpbnVl OwotKwl9Ci0rCi0gICAgICAgcCsrOyAvKiBTa2lwIGxlYWRpbmcgcXVvdGUuICAqLwotICAgICAg IGxpbWl0ID0gZnJvbVtpXS50ZXh0ICsgZnJvbVtpXS5sZW4gLSAxOyAvKiBTa2lwIHRyYWlsaW5n IHF1b3RlLiAgKi8KLSAKLS0tLSBsaWJjcHAvZGlyZWN0aXZlcy5jLmpqCTIwMDgtMDktMDUgMTI6 NTk6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliY3BwL2RpcmVjdGl2ZXMuYwkyMDA4LTA5LTEx IDIwOjI3OjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTE1MTksNyArMTUxOSw4IEBAIGdldF9fUHJh Z21hX3N0cmluZyAoY3BwX3JlYWRlciAqcGZpbGUpCi0gICBpZiAoc3RyaW5nLT50eXBlID09IENQ UF9FT0YpCi0gICAgIF9jcHBfYmFja3VwX3Rva2VucyAocGZpbGUsIDEpOwotICAgaWYgKHN0cmlu Zy0+dHlwZSAhPSBDUFBfU1RSSU5HICYmIHN0cmluZy0+dHlwZSAhPSBDUFBfV1NUUklORwotLSAg ICAgICYmIHN0cmluZy0+dHlwZSAhPSBDUFBfU1RSSU5HMzIgJiYgc3RyaW5nLT50eXBlICE9IENQ UF9TVFJJTkcxNikKLSsgICAgICAmJiBzdHJpbmctPnR5cGUgIT0gQ1BQX1NUUklORzMyICYmIHN0 cmluZy0+dHlwZSAhPSBDUFBfU1RSSU5HMTYKLSsgICAgICAmJiBzdHJpbmctPnR5cGUgIT0gQ1BQ X1VURjhTVFJJTkcpCi0gICAgIHJldHVybiBOVUxMOwotIAotICAgcGFyZW4gPSBnZXRfdG9rZW5f bm9fcGFkZGluZyAocGZpbGUpOwotLS0tIGxpYmNwcC9pbmNsdWRlL2NwcGxpYi5oLmpqCTIwMDgt MDktMDUgMTI6NTk6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgbGliY3BwL2luY2x1ZGUvY3BwbGli LmgJMjAwOC0wOS0xMSAyMDoyMzo1My4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMzEsNiArMTMxLDcg QEAgc3RydWN0IF9jcHBfZmlsZTsKLSAgIFRLKFdTVFJJTkcsCQlMSVRFUkFMKSAvKiBMInN0cmlu ZyIgKi8JCQlcCi0gICBUSyhTVFJJTkcxNiwJCUxJVEVSQUwpIC8qIHUic3RyaW5nIiAqLwkJCVwK LSAgIFRLKFNUUklORzMyLAkJTElURVJBTCkgLyogVSJzdHJpbmciICovCQkJXAotKyAgVEsoVVRG OFNUUklORywJTElURVJBTCkgLyogdTgic3RyaW5nIiAqLwkJCVwKLSAgIFRLKE9CSkNfU1RSSU5H LAlMSVRFUkFMKSAvKiBAInN0cmluZyIgLSBPYmplY3RpdmUtQyAqLwkJXAotICAgVEsoSEVBREVS X05BTUUsCUxJVEVSQUwpIC8qIDxzdGRpby5oPiBpbiAjaW5jbHVkZSAqLwkJXAotIAkJCQkJCQkJ CVwKLUBAIC03MjQsMTAgKzcyNSwxMCBAQCBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciAqY3Bw X21hY3JvX2RlCi0gZXh0ZXJuIHZvaWQgX2NwcF9iYWNrdXBfdG9rZW5zIChjcHBfcmVhZGVyICos IHVuc2lnbmVkIGludCk7Ci0gZXh0ZXJuIGNvbnN0IGNwcF90b2tlbiAqY3BwX3BlZWtfdG9rZW4g KGNwcF9yZWFkZXIgKiwgaW50KTsKLSAKLS0vKiBFdmFsdWF0ZSBhIENQUF9DSEFSIG9yIENQUF9X Q0hBUiB0b2tlbi4gICovCi0rLyogRXZhbHVhdGUgYSBDUFBfKkNIQVIqIHRva2VuLiAgKi8KLSBl eHRlcm4gY3BwY2hhcl90IGNwcF9pbnRlcnByZXRfY2hhcmNvbnN0IChjcHBfcmVhZGVyICosIGNv bnN0IGNwcF90b2tlbiAqLAotIAkJCQkJICB1bnNpZ25lZCBpbnQgKiwgaW50ICopOwotLS8qIEV2 YWx1YXRlIGEgdmVjdG9yIG9mIENQUF9TVFJJTkcgb3IgQ1BQX1dTVFJJTkcgdG9rZW5zLiAgKi8K LSsvKiBFdmFsdWF0ZSBhIHZlY3RvciBvZiBDUFBfKlNUUklORyogdG9rZW5zLiAgKi8KLSBleHRl cm4gYm9vbCBjcHBfaW50ZXJwcmV0X3N0cmluZyAoY3BwX3JlYWRlciAqLAotIAkJCQkgIGNvbnN0 IGNwcF9zdHJpbmcgKiwgc2l6ZV90LAotIAkJCQkgIGNwcF9zdHJpbmcgKiwgZW51bSBjcHBfdHR5 cGUpOwotLS0tIGxpYmNwcC9pbnRlcm5hbC5oLmpqCTIwMDgtMDktMDUgMTI6NTk6NDkuMDAwMDAw MDAwICswMjAwCi0rKysgbGliY3BwL2ludGVybmFsLmgJMjAwOC0wOS0xMSAxODoyMzowMi4wMDAw MDAwMDAgKzAyMDAKLUBAIC00MDAsNiArNDAwLDEwIEBAIHN0cnVjdCBjcHBfcmVhZGVyCi0gICBz dHJ1Y3QgY3NldF9jb252ZXJ0ZXIgbmFycm93X2NzZXRfZGVzYzsKLSAKLSAgIC8qIERlc2NyaXB0 b3IgZm9yIGNvbnZlcnRpbmcgZnJvbSB0aGUgc291cmNlIGNoYXJhY3RlciBzZXQgdG8gdGhlCi0r ICAgICBVVEYtOCBleGVjdXRpb24gY2hhcmFjdGVyIHNldC4gICovCi0rICBzdHJ1Y3QgY3NldF9j b252ZXJ0ZXIgdXRmOF9jc2V0X2Rlc2M7Ci0rCi0rICAvKiBEZXNjcmlwdG9yIGZvciBjb252ZXJ0 aW5nIGZyb20gdGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IHRvIHRoZQotICAgICAgVVRGLTE2IGV4 ZWN1dGlvbiBjaGFyYWN0ZXIgc2V0LiAgKi8KLSAgIHN0cnVjdCBjc2V0X2NvbnZlcnRlciBjaGFy MTZfY3NldF9kZXNjOwotIAotLS0tIGxpYmNwcC9sZXguYy5qagkyMDA4LTA5LTA1IDEyOjU5OjQ5 LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYmNwcC9sZXguYwkyMDA4LTA5LTEyIDEzOjU0OjAxLjAw MDAwMDAwMCArMDIwMAotQEAgLTYxMCwxMiArNjEwLDE4NiBAQCBjcmVhdGVfbGl0ZXJhbCAoY3Bw X3JlYWRlciAqcGZpbGUsIGNwcF90Ci0gICB0b2tlbi0+dmFsLnN0ci50ZXh0ID0gZGVzdDsKLSB9 Ci0gCi0rLyogTGV4ZXMgcmF3IGEgc3RyaW5nLiAgVGhlIHN0b3JlZCBzdHJpbmcgY29udGFpbnMg dGhlIHNwZWxsaW5nLCBpbmNsdWRpbmcKLSsgICBkb3VibGUgcXVvdGVzLCBkZWxpbWl0ZXIgc3Ry aW5nLCAnWycgYW5kICddJywgYW55IGxlYWRpbmcKLSsgICAnTCcsICd1JywgJ1UnIG9yICd1OCcg YW5kICdSJyBtb2RpZmllci4gIEl0IHJldHVybnMgdGhlIHR5cGUgb2YgdGhlCi0rICAgbGl0ZXJh bCwgb3IgQ1BQX09USEVSIGlmIGl0IHdhcyBub3QgcHJvcGVybHkgdGVybWluYXRlZC4KLSsKLSsg ICBUaGUgc3BlbGxpbmcgaXMgTlVMLXRlcm1pbmF0ZWQsIGJ1dCBpdCBpcyBub3QgZ3VhcmFudGVl ZCB0aGF0IHRoaXMKLSsgICBpcyB0aGUgZmlyc3QgTlVMIHNpbmNlIGVtYmVkZGVkIE5VTHMgYXJl IHByZXNlcnZlZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStsZXhfcmF3X3N0cmluZyAoY3BwX3Jl YWRlciAqcGZpbGUsIGNwcF90b2tlbiAqdG9rZW4sIGNvbnN0IHVjaGFyICpiYXNlLAotKwkJY29u c3QgdWNoYXIgKmN1cikKLSt7Ci0rICBib29sIHNhd19OVUwgPSBmYWxzZTsKLSsgIGNvbnN0IHVj aGFyICpyYXdfcHJlZml4OwotKyAgdW5zaWduZWQgaW50IHJhd19wcmVmaXhfbGVuID0gMDsKLSsg IGVudW0gY3BwX3R0eXBlIHR5cGU7Ci0rICBzaXplX3QgdG90YWxfbGVuID0gMDsKLSsgIF9jcHBf YnVmZiAqZmlyc3RfYnVmZiA9IE5VTEwsICpsYXN0X2J1ZmYgPSBOVUxMOwotKwotKyAgdHlwZSA9 ICgqYmFzZSA9PSAnTCcgPyBDUFBfV1NUUklORyA6Ci0rCSAgKmJhc2UgPT0gJ1UnID8gQ1BQX1NU UklORzMyIDoKLSsJICAqYmFzZSA9PSAndScgPyAoYmFzZVsxXSA9PSAnOCcgPyBDUFBfVVRGOFNU UklORyA6IENQUF9TVFJJTkcxNikKLSsJICA6IENQUF9TVFJJTkcpOwotKwotKyAgcmF3X3ByZWZp eCA9IGN1ciArIDE7Ci0rICB3aGlsZSAocmF3X3ByZWZpeF9sZW4gPCAxNikKLSsgICAgewotKyAg ICAgIHN3aXRjaCAocmF3X3ByZWZpeFtyYXdfcHJlZml4X2xlbl0pCi0rCXsKLSsJY2FzZSAnICc6 IGNhc2UgJ1snOiBjYXNlICddJzogY2FzZSAnXHQnOgotKwljYXNlICdcdic6IGNhc2UgJ1xmJzog Y2FzZSAnXG4nOiBkZWZhdWx0OgotKwkgIGJyZWFrOwotKwkvKiBCYXNpYyBzb3VyY2UgY2hhcnNl dCBleGNlcHQgdGhlIGFib3ZlIGNoYXJzLiAgKi8KLSsJY2FzZSAnYSc6IGNhc2UgJ2InOiBjYXNl ICdjJzogY2FzZSAnZCc6IGNhc2UgJ2UnOiBjYXNlICdmJzoKLSsJY2FzZSAnZyc6IGNhc2UgJ2gn OiBjYXNlICdpJzogY2FzZSAnaic6IGNhc2UgJ2snOiBjYXNlICdsJzoKLSsJY2FzZSAnbSc6IGNh c2UgJ24nOiBjYXNlICdvJzogY2FzZSAncCc6IGNhc2UgJ3EnOiBjYXNlICdyJzoKLSsJY2FzZSAn cyc6IGNhc2UgJ3QnOiBjYXNlICd1JzogY2FzZSAndic6IGNhc2UgJ3cnOiBjYXNlICd4JzoKLSsJ Y2FzZSAneSc6IGNhc2UgJ3onOgotKwljYXNlICdBJzogY2FzZSAnQic6IGNhc2UgJ0MnOiBjYXNl ICdEJzogY2FzZSAnRSc6IGNhc2UgJ0YnOgotKwljYXNlICdHJzogY2FzZSAnSCc6IGNhc2UgJ0kn OiBjYXNlICdKJzogY2FzZSAnSyc6IGNhc2UgJ0wnOgotKwljYXNlICdNJzogY2FzZSAnTic6IGNh c2UgJ08nOiBjYXNlICdQJzogY2FzZSAnUSc6IGNhc2UgJ1InOgotKwljYXNlICdTJzogY2FzZSAn VCc6IGNhc2UgJ1UnOiBjYXNlICdWJzogY2FzZSAnVyc6IGNhc2UgJ1gnOgotKwljYXNlICdZJzog Y2FzZSAnWic6Ci0rCWNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNl ICc0JzogY2FzZSAnNSc6Ci0rCWNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzkn OgotKwljYXNlICdfJzogY2FzZSAneyc6IGNhc2UgJ30nOiBjYXNlICcjJzogY2FzZSAnKCc6IGNh c2UgJyknOgotKwljYXNlICc8JzogY2FzZSAnPic6IGNhc2UgJyUnOiBjYXNlICc6JzogY2FzZSAn Oyc6IGNhc2UgJy4nOgotKwljYXNlICc/JzogY2FzZSAnKic6IGNhc2UgJysnOiBjYXNlICctJzog Y2FzZSAnLyc6IGNhc2UgJ14nOgotKwljYXNlICcmJzogY2FzZSAnfCc6IGNhc2UgJ34nOiBjYXNl ICchJzogY2FzZSAnPSc6IGNhc2UgJywnOgotKwljYXNlICdcXCc6IGNhc2UgJyInOiBjYXNlICdc Jyc6Ci0rCSAgcmF3X3ByZWZpeF9sZW4rKzsKLSsJICBjb250aW51ZTsKLSsJfQotKyAgICAgIGJy ZWFrOwotKyAgICB9Ci0rCi0rICBpZiAocmF3X3ByZWZpeFtyYXdfcHJlZml4X2xlbl0gIT0gJ1sn KQotKyAgICB7Ci0rICAgICAgaWYgKHJhd19wcmVmaXhfbGVuID09IDE2KQotKwljcHBfZXJyb3Ig KHBmaWxlLCBDUFBfRExfRVJST1IsCi0rCQkgICAicmF3IHN0cmluZyBkZWxpbWl0ZXIgbG9uZ2Vy IHRoYW4gMTYgY2hhcmFjdGVycyIpOwotKyAgICAgIGVsc2UKLSsJY3BwX2Vycm9yIChwZmlsZSwg Q1BQX0RMX0VSUk9SLAotKwkJICAgImludmFsaWQgY2hhcmFjdGVyICclYycgaW4gcmF3IHN0cmlu ZyBkZWxpbWl0ZXIiLAotKwkJICAgKGludCkgcmF3X3ByZWZpeFtyYXdfcHJlZml4X2xlbl0pOwot KyAgICAgIHBmaWxlLT5idWZmZXItPmN1ciA9IHJhd19wcmVmaXggLSAxOwotKyAgICAgIGNyZWF0 ZV9saXRlcmFsIChwZmlsZSwgdG9rZW4sIGJhc2UsIHJhd19wcmVmaXggLSAxIC0gYmFzZSwgQ1BQ X09USEVSKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGN1ciA9IHJhd19wcmVmaXgg KyByYXdfcHJlZml4X2xlbiArIDE7Ci0rICBmb3IgKDs7KQotKyAgICB7Ci0rICAgICAgY3BwY2hh cl90IGMgPSAqY3VyKys7Ci0rCi0rICAgICAgaWYgKGMgPT0gJ10nCi0rCSAgJiYgc3RybmNtcCAo KGNvbnN0IGNoYXIgKikgY3VyLCAoY29uc3QgY2hhciAqKSByYXdfcHJlZml4LAotKwkJICAgICAg cmF3X3ByZWZpeF9sZW4pID09IDAKLSsJICAmJiBjdXJbcmF3X3ByZWZpeF9sZW5dID09ICciJykK LSsJewotKwkgIGN1ciArPSByYXdfcHJlZml4X2xlbiArIDE7Ci0rCSAgYnJlYWs7Ci0rCX0KLSsg ICAgICBlbHNlIGlmIChjID09ICdcbicpCi0rCXsKLSsJICBpZiAocGZpbGUtPnN0YXRlLmluX2Rp cmVjdGl2ZQotKwkgICAgICB8fCBwZmlsZS0+c3RhdGUucGFyc2luZ19hcmdzCi0rCSAgICAgIHx8 IHBmaWxlLT5zdGF0ZS5pbl9kZWZlcnJlZF9wcmFnbWEpCi0rCSAgICB7Ci0rCSAgICAgIGN1ci0t OwotKwkgICAgICB0eXBlID0gQ1BQX09USEVSOwotKwkgICAgICBjcHBfZXJyb3IgKHBmaWxlLCBD UFBfRExfRVJST1IsICJ1bnRlcm1pbmF0ZWQgcmF3IHN0cmluZyIpOwotKwkgICAgICBicmVhazsK LSsJICAgIH0KLSsKLSsJICAvKiByYXcgc3RyaW5ncyBhbGxvdyBlbWJlZGRlZCBub24tZXNjYXBl ZCBuZXdsaW5lcywgd2hpY2gKLSsJICAgICBjb21wbGljYXRlcyB0aGlzIHJvdXRpbmUgYSBsb3Qu ICAqLwotKwkgIGlmIChmaXJzdF9idWZmID09IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIHRvdGFs X2xlbiA9IGN1ciAtIGJhc2U7Ci0rCSAgICAgIGZpcnN0X2J1ZmYgPSBsYXN0X2J1ZmYgPSBfY3Bw X2dldF9idWZmIChwZmlsZSwgdG90YWxfbGVuKTsKLSsJICAgICAgbWVtY3B5IChCVUZGX0ZST05U IChsYXN0X2J1ZmYpLCBiYXNlLCB0b3RhbF9sZW4pOwotKwkgICAgICByYXdfcHJlZml4ID0gQlVG Rl9GUk9OVCAobGFzdF9idWZmKSArIChyYXdfcHJlZml4IC0gYmFzZSk7Ci0rCSAgICAgIEJVRkZf RlJPTlQgKGxhc3RfYnVmZikgKz0gdG90YWxfbGVuOwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAg IHsKLSsJICAgICAgc2l6ZV90IGxlbiA9IGN1ciAtIGJhc2U7Ci0rCSAgICAgIHNpemVfdCBjdXJf bGVuID0gbGVuID4gQlVGRl9ST09NIChsYXN0X2J1ZmYpCi0rCQkJICAgICAgID8gQlVGRl9ST09N IChsYXN0X2J1ZmYpIDogbGVuOwotKwotKwkgICAgICB0b3RhbF9sZW4gKz0gbGVuOwotKwkgICAg ICBtZW1jcHkgKEJVRkZfRlJPTlQgKGxhc3RfYnVmZiksIGJhc2UsIGN1cl9sZW4pOwotKwkgICAg ICBCVUZGX0ZST05UIChsYXN0X2J1ZmYpICs9IGN1cl9sZW47Ci0rCSAgICAgIGlmIChsZW4gPiBj dXJfbGVuKQotKwkJewotKwkJICBsYXN0X2J1ZmYgPSBfY3BwX2FwcGVuZF9leHRlbmRfYnVmZiAo cGZpbGUsIGxhc3RfYnVmZiwKLSsJCQkJCQkgICAgICAgbGVuIC0gY3VyX2xlbik7Ci0rCQkgIG1l bWNweSAoQlVGRl9GUk9OVCAobGFzdF9idWZmKSwgYmFzZSArIGN1cl9sZW4sCi0rCQkJICBsZW4g LSBjdXJfbGVuKTsKLSsJCSAgQlVGRl9GUk9OVCAobGFzdF9idWZmKSArPSBsZW4gLSBjdXJfbGVu OwotKwkJfQotKwkgICAgfQotKwotKwkgIGlmIChwZmlsZS0+YnVmZmVyLT5jdXIgPCBwZmlsZS0+ YnVmZmVyLT5ybGltaXQpCi0rCSAgICBDUFBfSU5DUkVNRU5UX0xJTkUgKHBmaWxlLCAwKTsKLSsJ ICBwZmlsZS0+YnVmZmVyLT5uZWVkX2xpbmUgPSB0cnVlOwotKwotKwkgIGlmICghX2NwcF9nZXRf ZnJlc2hfbGluZSAocGZpbGUpKQotKwkgICAgewotKwkgICAgICB0b2tlbi0+dHlwZSA9IENQUF9F T0Y7Ci0rCSAgICAgIC8qIFRlbGwgdGhlIGNvbXBpbGVyIHRoZSBsaW5lIG51bWJlciBvZiB0aGUg RU9GIHRva2VuLiAgKi8KLSsJICAgICAgdG9rZW4tPnNyY19sb2MgPSBwZmlsZS0+bGluZV90YWJs ZS0+aGlnaGVzdF9saW5lOwotKwkgICAgICB0b2tlbi0+ZmxhZ3MgPSBCT0w7Ci0rCSAgICAgIGlm IChmaXJzdF9idWZmICE9IE5VTEwpCi0rCQlfY3BwX3JlbGVhc2VfYnVmZiAocGZpbGUsIGZpcnN0 X2J1ZmYpOwotKwkgICAgICBjcHBfZXJyb3IgKHBmaWxlLCBDUFBfRExfRVJST1IsICJ1bnRlcm1p bmF0ZWQgcmF3IHN0cmluZyIpOwotKwkgICAgICByZXR1cm47Ci0rCSAgICB9Ci0rCi0rCSAgY3Vy ID0gYmFzZSA9IHBmaWxlLT5idWZmZXItPmN1cjsKLSsJfQotKyAgICAgIGVsc2UgaWYgKGMgPT0g J1wwJykKLSsJc2F3X05VTCA9IHRydWU7Ci0rICAgIH0KLSsKLSsgIGlmIChzYXdfTlVMICYmICFw ZmlsZS0+c3RhdGUuc2tpcHBpbmcpCi0rICAgIGNwcF9lcnJvciAocGZpbGUsIENQUF9ETF9XQVJO SU5HLAotKwkgICAgICAgIm51bGwgY2hhcmFjdGVyKHMpIHByZXNlcnZlZCBpbiBsaXRlcmFsIik7 Ci0rCi0rICBwZmlsZS0+YnVmZmVyLT5jdXIgPSBjdXI7Ci0rICBpZiAoZmlyc3RfYnVmZiA9PSBO VUxMKQotKyAgICBjcmVhdGVfbGl0ZXJhbCAocGZpbGUsIHRva2VuLCBiYXNlLCBjdXIgLSBiYXNl LCB0eXBlKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHVjaGFyICpkZXN0ID0gX2NwcF91bmFs aWduZWRfYWxsb2MgKHBmaWxlLCB0b3RhbF9sZW4gKyAoY3VyIC0gYmFzZSkgKyAxKTsKLSsKLSsg ICAgICB0b2tlbi0+dHlwZSA9IHR5cGU7Ci0rICAgICAgdG9rZW4tPnZhbC5zdHIubGVuID0gdG90 YWxfbGVuICsgKGN1ciAtIGJhc2UpOwotKyAgICAgIHRva2VuLT52YWwuc3RyLnRleHQgPSBkZXN0 OwotKyAgICAgIGxhc3RfYnVmZiA9IGZpcnN0X2J1ZmY7Ci0rICAgICAgd2hpbGUgKGxhc3RfYnVm ZiAhPSBOVUxMKQotKwl7Ci0rCSAgbWVtY3B5IChkZXN0LCBsYXN0X2J1ZmYtPmJhc2UsCi0rCQkg IEJVRkZfRlJPTlQgKGxhc3RfYnVmZikgLSBsYXN0X2J1ZmYtPmJhc2UpOwotKwkgIGRlc3QgKz0g QlVGRl9GUk9OVCAobGFzdF9idWZmKSAtIGxhc3RfYnVmZi0+YmFzZTsKLSsJICBsYXN0X2J1ZmYg PSBsYXN0X2J1ZmYtPm5leHQ7Ci0rCX0KLSsgICAgICBfY3BwX3JlbGVhc2VfYnVmZiAocGZpbGUs IGZpcnN0X2J1ZmYpOwotKyAgICAgIG1lbWNweSAoZGVzdCwgYmFzZSwgY3VyIC0gYmFzZSk7Ci0r ICAgICAgZGVzdFtjdXIgLSBiYXNlXSA9ICdcMCc7Ci0rICAgIH0KLSt9Ci0rCi0gLyogTGV4ZXMg YSBzdHJpbmcsIGNoYXJhY3RlciBjb25zdGFudCwgb3IgYW5nbGUtYnJhY2tldGVkIGhlYWRlciBm aWxlCi0gICAgbmFtZS4gIFRoZSBzdG9yZWQgc3RyaW5nIGNvbnRhaW5zIHRoZSBzcGVsbGluZywg aW5jbHVkaW5nIG9wZW5pbmcKLS0gICBxdW90ZSBhbmQgbGVhZGluZyBhbnkgbGVhZGluZyAnTCcs ICd1JyBvciAnVScuICBJdCByZXR1cm5zIHRoZSB0eXBlCi0tICAgb2YgdGhlIGxpdGVyYWwsIG9y IENQUF9PVEhFUiBpZiBpdCB3YXMgbm90IHByb3Blcmx5IHRlcm1pbmF0ZWQsIG9yCi0tICAgQ1BQ X0xFU1MgZm9yIGFuIHVudGVybWluYXRlZCBoZWFkZXIgbmFtZSB3aGljaCBtdXN0IGJlIHJlbGV4 ZWQgYXMKLS0gICBub3JtYWwgdG9rZW5zLgotKyAgIHF1b3RlIGFuZCBhbnkgbGVhZGluZyAnTCcs ICd1JywgJ1UnIG9yICd1OCcgYW5kIG9wdGlvbmFsCi0rICAgJ1InIG1vZGlmaWVyLiAgSXQgcmV0 dXJucyB0aGUgdHlwZSBvZiB0aGUgbGl0ZXJhbCwgb3IgQ1BQX09USEVSCi0rICAgaWYgaXQgd2Fz IG5vdCBwcm9wZXJseSB0ZXJtaW5hdGVkLCBvciBDUFBfTEVTUyBmb3IgYW4gdW50ZXJtaW5hdGVk Ci0rICAgaGVhZGVyIG5hbWUgd2hpY2ggbXVzdCBiZSByZWxleGVkIGFzIG5vcm1hbCB0b2tlbnMu Ci0gCi0gICAgVGhlIHNwZWxsaW5nIGlzIE5VTC10ZXJtaW5hdGVkLCBidXQgaXQgaXMgbm90IGd1 YXJhbnRlZWQgdGhhdCB0aGlzCi0gICAgaXMgdGhlIGZpcnN0IE5VTCBzaW5jZSBlbWJlZGRlZCBO VUxzIGFyZSBwcmVzZXJ2ZWQuICAqLwotQEAgLTYyOSwxMiArODAzLDI0IEBAIGxleF9zdHJpbmcg KGNwcF9yZWFkZXIgKnBmaWxlLCBjcHBfdG9rZW4KLSAKLSAgIGN1ciA9IGJhc2U7Ci0gICB0ZXJt aW5hdG9yID0gKmN1cisrOwotLSAgaWYgKHRlcm1pbmF0b3IgPT0gJ0wnIHx8IHRlcm1pbmF0b3Ig PT0gJ3UnIHx8IHRlcm1pbmF0b3IgPT0gJ1UnKQotKyAgaWYgKHRlcm1pbmF0b3IgPT0gJ0wnIHx8 IHRlcm1pbmF0b3IgPT0gJ1UnKQotICAgICB0ZXJtaW5hdG9yID0gKmN1cisrOwotLSAgaWYgKHRl cm1pbmF0b3IgPT0gJ1wiJykKLSsgIGVsc2UgaWYgKHRlcm1pbmF0b3IgPT0gJ3UnKQotKyAgICB7 Ci0rICAgICAgdGVybWluYXRvciA9ICpjdXIrKzsKLSsgICAgICBpZiAodGVybWluYXRvciA9PSAn OCcpCi0rCXRlcm1pbmF0b3IgPSAqY3VyKys7Ci0rICAgIH0KLSsgIGlmICh0ZXJtaW5hdG9yID09 ICdSJykKLSsgICAgewotKyAgICAgIGxleF9yYXdfc3RyaW5nIChwZmlsZSwgdG9rZW4sIGJhc2Us IGN1cik7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rICBpZiAodGVybWluYXRvciA9PSAnIicp Ci0gICAgIHR5cGUgPSAoKmJhc2UgPT0gJ0wnID8gQ1BQX1dTVFJJTkcgOgotIAkgICAgKmJhc2Ug PT0gJ1UnID8gQ1BQX1NUUklORzMyIDoKLS0JICAgICpiYXNlID09ICd1JyA/IENQUF9TVFJJTkcx NiA6IENQUF9TVFJJTkcpOwotKwkgICAgKmJhc2UgPT0gJ3UnID8gKGJhc2VbMV0gPT0gJzgnID8g Q1BQX1VURjhTVFJJTkcgOiBDUFBfU1RSSU5HMTYpCi0rCQkJIDogQ1BQX1NUUklORyk7Ci0gICBl bHNlIGlmICh0ZXJtaW5hdG9yID09ICdcJycpCi0gICAgIHR5cGUgPSAoKmJhc2UgPT0gJ0wnID8g Q1BQX1dDSEFSIDoKLSAJICAgICpiYXNlID09ICdVJyA/IENQUF9DSEFSMzIgOgotQEAgLTEwOTQs MTAgKzEyODAsMjAgQEAgX2NwcF9sZXhfZGlyZWN0IChjcHBfcmVhZGVyICpwZmlsZSkKLSAgICAg Y2FzZSAnTCc6Ci0gICAgIGNhc2UgJ3UnOgotICAgICBjYXNlICdVJzoKLSsgICAgY2FzZSAnUic6 Ci0gICAgICAgLyogJ0wnLCAndScgb3IgJ1UnIG1heSBpbnRyb2R1Y2Ugd2lkZSBjaGFyYWN0ZXJz IG9yIHN0cmluZ3MuICAqLwotICAgICAgIGlmIChjID09ICdMJyB8fCBDUFBfT1BUSU9OIChwZmls ZSwgdWxpdGVyYWxzKSkKLSAJewotLQkgIGlmICgqYnVmZmVyLT5jdXIgPT0gJ1wnJyB8fCAqYnVm ZmVyLT5jdXIgPT0gJyInKQotKwkgIGlmICgoKmJ1ZmZlci0+Y3VyID09ICdcJycgJiYgYyAhPSAn UicpCi0rCSAgICAgIHx8ICpidWZmZXItPmN1ciA9PSAnIicKLSsJICAgICAgfHwgKCpidWZmZXIt PmN1ciA9PSAnUicKLSsJCSAgJiYgYyAhPSAnUicKLSsJCSAgJiYgYnVmZmVyLT5jdXJbMV0gPT0g JyInCi0rCQkgICYmIENQUF9PUFRJT04gKHBmaWxlLCB1bGl0ZXJhbHMpKQotKwkgICAgICB8fCAo KmJ1ZmZlci0+Y3VyID09ICc4JwotKwkJICAmJiBjID09ICd1JwotKwkJICAmJiAoYnVmZmVyLT5j dXJbMV0gPT0gJyInCi0rCQkgICAgICB8fCAoYnVmZmVyLT5jdXJbMV0gPT0gJ1InICYmIGJ1ZmZl ci0+Y3VyWzJdID09ICciJykpKSkKLSAJICAgIHsKLSAJICAgICAgbGV4X3N0cmluZyAocGZpbGUs IHJlc3VsdCwgYnVmZmVyLT5jdXIgLSAxKTsKLSAJICAgICAgYnJlYWs7Ci1AQCAtMTExMyw3ICsx MzA5LDcgQEAgX2NwcF9sZXhfZGlyZWN0IChjcHBfcmVhZGVyICpwZmlsZSkKLSAgICAgY2FzZSAn eSc6IGNhc2UgJ3onOgotICAgICBjYXNlICdBJzogY2FzZSAnQic6IGNhc2UgJ0MnOiBjYXNlICdE JzogY2FzZSAnRSc6IGNhc2UgJ0YnOgotICAgICBjYXNlICdHJzogY2FzZSAnSCc6IGNhc2UgJ0kn OiBjYXNlICdKJzogY2FzZSAnSyc6Ci0tICAgIGNhc2UgJ00nOiBjYXNlICdOJzogY2FzZSAnTyc6 IGNhc2UgJ1AnOiBjYXNlICdRJzogY2FzZSAnUic6Ci0rICAgIGNhc2UgJ00nOiBjYXNlICdOJzog Y2FzZSAnTyc6IGNhc2UgJ1AnOiBjYXNlICdRJzoKLSAgICAgY2FzZSAnUyc6IGNhc2UgJ1QnOiAg ICAgICAgICAgY2FzZSAnVic6IGNhc2UgJ1cnOiBjYXNlICdYJzoKLSAgICAgY2FzZSAnWSc6IGNh c2UgJ1onOgotICAgICAgIHJlc3VsdC0+dHlwZSA9IENQUF9OQU1FOwotLS0tIGxpYmNwcC9tYWNy by5jLmpqCTIwMDgtMDktMDUgMTI6NTk6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgbGliY3BwL21h Y3JvLmMJMjAwOC0wOS0xMSAyMDoyNToyMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zNzcsNyArMzc3 LDggQEAgc3RyaW5naWZ5X2FyZyAoY3BwX3JlYWRlciAqcGZpbGUsIG1hY3JvXwotICAgICAgIGVz Y2FwZV9pdCA9ICh0b2tlbi0+dHlwZSA9PSBDUFBfU1RSSU5HIHx8IHRva2VuLT50eXBlID09IENQ UF9DSEFSCi0gCQkgICB8fCB0b2tlbi0+dHlwZSA9PSBDUFBfV1NUUklORyB8fCB0b2tlbi0+dHlw ZSA9PSBDUFBfV0NIQVIKLSAJCSAgIHx8IHRva2VuLT50eXBlID09IENQUF9TVFJJTkczMiB8fCB0 b2tlbi0+dHlwZSA9PSBDUFBfQ0hBUjMyCi0tCQkgICB8fCB0b2tlbi0+dHlwZSA9PSBDUFBfU1RS SU5HMTYgfHwgdG9rZW4tPnR5cGUgPT0gQ1BQX0NIQVIxNik7Ci0rCQkgICB8fCB0b2tlbi0+dHlw ZSA9PSBDUFBfU1RSSU5HMTYgfHwgdG9rZW4tPnR5cGUgPT0gQ1BQX0NIQVIxNgotKwkJICAgfHwg dG9rZW4tPnR5cGUgPT0gQ1BQX1VURjhTVFJJTkcpOwotIAotICAgICAgIC8qIFJvb20gZm9yIGVh Y2ggY2hhciBiZWluZyB3cml0dGVuIGluIG9jdGFsLCBpbml0aWFsIHNwYWNlIGFuZAotIAkgZmlu YWwgcXVvdGUgYW5kIE5VTC4gICovCi0tLS0gZ2NjL2MtY29tbW9uLmMuamoJMjAwOC0wOS0wOSAx NjowODowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvYy1jb21tb24uYwkyMDA4LTA5LTExIDIw OjMwOjU3LjAwMDAwMDAwMCArMDIwMAotQEAgLTc0NzIsNyArNzQ3Miw3IEBAIGNfcGFyc2VfZXJy b3IgKGNvbnN0IGNoYXIgKmdtc2dpZCwgZW51bSAKLSAgICAgICBtZXNzYWdlID0gTlVMTDsKLSAg ICAgfQotICAgZWxzZSBpZiAodG9rZW4gPT0gQ1BQX1NUUklORyB8fCB0b2tlbiA9PSBDUFBfV1NU UklORyB8fCB0b2tlbiA9PSBDUFBfU1RSSU5HMTYKLS0JICAgfHwgdG9rZW4gPT0gQ1BQX1NUUklO RzMyKQotKwkgICB8fCB0b2tlbiA9PSBDUFBfU1RSSU5HMzIgfHwgdG9rZW4gPT0gQ1BQX1VURjhT VFJJTkcpCi0gICAgIG1lc3NhZ2UgPSBjYXRlbmF0ZV9tZXNzYWdlcyAoZ21zZ2lkLCAiIGJlZm9y ZSBzdHJpbmcgY29uc3RhbnQiKTsKLSAgIGVsc2UgaWYgKHRva2VuID09IENQUF9OVU1CRVIpCi0g ICAgIG1lc3NhZ2UgPSBjYXRlbmF0ZV9tZXNzYWdlcyAoZ21zZ2lkLCAiIGJlZm9yZSBudW1lcmlj IGNvbnN0YW50Iik7Ci0tLS0gZ2NjL2MtbGV4LmMuamoJMjAwOC0wOS0wNSAxMjo1NjozMS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnY2MvYy1sZXguYwkyMDA4LTA5LTExIDIwOjM0OjA2LjAwMDAwMDAw MCArMDIwMAotQEAgLTM2NSw2ICszNjUsNyBAQCBjX2xleF93aXRoX2ZsYWdzICh0cmVlICp2YWx1 ZSwgbG9jYXRpb25fCi0gCSAgICBjYXNlIENQUF9XU1RSSU5HOgotIAkgICAgY2FzZSBDUFBfU1RS SU5HMTY6Ci0gCSAgICBjYXNlIENQUF9TVFJJTkczMjoKLSsJICAgIGNhc2UgQ1BQX1VURjhTVFJJ Tkc6Ci0gCSAgICAgIHR5cGUgPSBsZXhfc3RyaW5nICh0b2ssIHZhbHVlLCB0cnVlLCB0cnVlKTsK LSAJICAgICAgYnJlYWs7Ci0gCi1AQCAtNDIzLDYgKzQyNCw3IEBAIGNfbGV4X3dpdGhfZmxhZ3Mg KHRyZWUgKnZhbHVlLCBsb2NhdGlvbl8KLSAgICAgY2FzZSBDUFBfV1NUUklORzoKLSAgICAgY2Fz ZSBDUFBfU1RSSU5HMTY6Ci0gICAgIGNhc2UgQ1BQX1NUUklORzMyOgotKyAgICBjYXNlIENQUF9V VEY4U1RSSU5HOgotICAgICAgIGlmICgobGV4X2ZsYWdzICYgQ19MRVhfUkFXX1NUUklOR1MpID09 IDApCi0gCXsKLSAJICB0eXBlID0gbGV4X3N0cmluZyAodG9rLCB2YWx1ZSwgZmFsc2UsCi1AQCAt ODMwLDEyICs4MzIsMTMgQEAgaW50ZXJwcmV0X2ZpeGVkIChjb25zdCBjcHBfdG9rZW4gKnRva2Vu LAotICAgcmV0dXJuIHZhbHVlOwotIH0KLSAKLS0vKiBDb252ZXJ0IGEgc2VyaWVzIG9mIFNUUklO RywgV1NUUklORywgU1RSSU5HMTYgYW5kL29yIFNUUklORzMyIHRva2VucwotLSAgIGludG8gYSB0 cmVlLCBwZXJmb3JtaW5nIHN0cmluZyBjb25zdGFudCBjb25jYXRlbmF0aW9uLiAgVE9LIGlzIHRo ZQotLSAgIGZpcnN0IG9mIHRoZXNlLiAgVkFMUCBpcyB0aGUgbG9jYXRpb24gdG8gd3JpdGUgdGhl IHN0cmluZyBpbnRvLgotLSAgIE9CSkNfU1RSSU5HIGluZGljYXRlcyB3aGV0aGVyIGFuICdAJyB0 b2tlbiBwcmVjZWRlZCB0aGUgaW5jb21pbmcgdG9rZW4uCi0rLyogQ29udmVydCBhIHNlcmllcyBv ZiBTVFJJTkcsIFdTVFJJTkcsIFNUUklORzE2LCBTVFJJTkczMiBhbmQvb3IKLSsgICBVVEY4U1RS SU5HIHRva2VucyBpbnRvIGEgdHJlZSwgcGVyZm9ybWluZyBzdHJpbmcgY29uc3RhbnQKLSsgICBj b25jYXRlbmF0aW9uLiAgVE9LIGlzIHRoZSBmaXJzdCBvZiB0aGVzZS4gIFZBTFAgaXMgdGhlIGxv Y2F0aW9uCi0rICAgdG8gd3JpdGUgdGhlIHN0cmluZyBpbnRvLiBPQkpDX1NUUklORyBpbmRpY2F0 ZXMgd2hldGhlciBhbiAnQCcgdG9rZW4KLSsgICBwcmVjZWRlZCB0aGUgaW5jb21pbmcgdG9rZW4u Ci0gICAgUmV0dXJucyB0aGUgQ1BQIHRva2VuIHR5cGUgb2YgdGhlIHJlc3VsdCAoQ1BQX1NUUklO RywgQ1BQX1dTVFJJTkcsCi0tICAgQ1BQX1NUUklORzMyLCBDUFBfU1RSSU5HMTYsIG9yIENQUF9P QkpDX1NUUklORykuCi0rICAgQ1BQX1NUUklORzMyLCBDUFBfU1RSSU5HMTYsIENQUF9VVEY4U1RS SU5HLCBvciBDUFBfT0JKQ19TVFJJTkcpLgotIAotICAgIFRoaXMgaXMgdW5mb3J0dW5hdGVseSBt b3JlIHdvcmsgdGhhbiBpdCBzaG91bGQgYmUuICBJZiBhbnkgb2YgdGhlCi0gICAgc3RyaW5ncyBp biB0aGUgc2VyaWVzIGhhcyBhbiBMIHByZWZpeCwgdGhlIHJlc3VsdCBpcyBhIHdpZGUgc3RyaW5n Ci1AQCAtODgwLDYgKzg4Myw3IEBAIGxleF9zdHJpbmcgKGNvbnN0IGNwcF90b2tlbiAqdG9rLCB0 cmVlICoKLSAgICAgY2FzZSBDUFBfV1NUUklORzoKLSAgICAgY2FzZSBDUFBfU1RSSU5HMTY6Ci0g ICAgIGNhc2UgQ1BQX1NUUklORzMyOgotKyAgICBjYXNlIENQUF9VVEY4U1RSSU5HOgotICAgICAg IGlmICh0eXBlICE9IHRvay0+dHlwZSkKLSAJewotIAkgIGlmICh0eXBlID09IENQUF9TVFJJTkcp Ci1AQCAtOTI1LDYgKzkyOSw3IEBAIGxleF9zdHJpbmcgKGNvbnN0IGNwcF90b2tlbiAqdG9rLCB0 cmVlICoKLSAJewotIAlkZWZhdWx0OgotIAljYXNlIENQUF9TVFJJTkc6Ci0rCWNhc2UgQ1BQX1VU RjhTVFJJTkc6Ci0gCSAgdmFsdWUgPSBidWlsZF9zdHJpbmcgKDEsICIiKTsKLSAJICBicmVhazsK LSAJY2FzZSBDUFBfU1RSSU5HMTY6Ci1AQCAtOTUwLDYgKzk1NSw3IEBAIGxleF9zdHJpbmcgKGNv bnN0IGNwcF90b2tlbiAqdG9rLCB0cmVlICoKLSAgICAgewotICAgICBkZWZhdWx0OgotICAgICBj YXNlIENQUF9TVFJJTkc6Ci0rICAgIGNhc2UgQ1BQX1VURjhTVFJJTkc6Ci0gICAgICAgVFJFRV9U WVBFICh2YWx1ZSkgPSBjaGFyX2FycmF5X3R5cGVfbm9kZTsKLSAgICAgICBicmVhazsKLSAgICAg Y2FzZSBDUFBfU1RSSU5HMTY6Ci0tLS0gZ2NjL2MtcGFyc2VyLmMuamoJMjAwOC0wOS0wOSAxNjow ODowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvYy1wYXJzZXIuYwkyMDA4LTA5LTExIDIwOjM0 OjM0LjAwMDAwMDAwMCArMDIwMAotQEAgLTUwODUsNiArNTA4NSw3IEBAIGNfcGFyc2VyX3Bvc3Rm aXhfZXhwcmVzc2lvbiAoY19wYXJzZXIgKnAKLSAgICAgY2FzZSBDUFBfU1RSSU5HMTY6Ci0gICAg IGNhc2UgQ1BQX1NUUklORzMyOgotICAgICBjYXNlIENQUF9XU1RSSU5HOgotKyAgICBjYXNlIENQ UF9VVEY4U1RSSU5HOgotICAgICAgIGV4cHIudmFsdWUgPSBjX3BhcnNlcl9wZWVrX3Rva2VuIChw YXJzZXIpLT52YWx1ZTsKLSAgICAgICBleHByLm9yaWdpbmFsX2NvZGUgPSBTVFJJTkdfQ1NUOwot ICAgICAgIGNfcGFyc2VyX2NvbnN1bWVfdG9rZW4gKHBhcnNlcik7Ci0tLS0gZ2NjL2NwL3BhcnNl ci5jLmpqCTIwMDgtMDktMDkgMTY6MDg6MDMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL2NwL3Bh cnNlci5jCTIwMDgtMDktMTEgMjA6MzY6MTAuMDAwMDAwMDAwICswMjAwCi1AQCAtNzk3LDYgKzc5 Nyw3IEBAIGNwX2xleGVyX3ByaW50X3Rva2VuIChGSUxFICogc3RyZWFtLCBjcF8KLSAgICAgY2Fz ZSBDUFBfU1RSSU5HMTY6Ci0gICAgIGNhc2UgQ1BQX1NUUklORzMyOgotICAgICBjYXNlIENQUF9X U1RSSU5HOgotKyAgICBjYXNlIENQUF9VVEY4U1RSSU5HOgotICAgICAgIGZwcmludGYgKHN0cmVh bSwgIiBcIiVzXCIiLCBUUkVFX1NUUklOR19QT0lOVEVSICh0b2tlbi0+dS52YWx1ZSkpOwotICAg ICAgIGJyZWFrOwotIAotQEAgLTIwNDksNyArMjA1MCw4IEBAIGNwX3BhcnNlcl9pc19zdHJpbmdf bGl0ZXJhbCAoY3BfdG9rZW4qIHQKLSAgIHJldHVybiAodG9rZW4tPnR5cGUgPT0gQ1BQX1NUUklO RyB8fAotIAkgIHRva2VuLT50eXBlID09IENQUF9TVFJJTkcxNiB8fAotIAkgIHRva2VuLT50eXBl ID09IENQUF9TVFJJTkczMiB8fAotLQkgIHRva2VuLT50eXBlID09IENQUF9XU1RSSU5HKTsKLSsJ ICB0b2tlbi0+dHlwZSA9PSBDUFBfV1NUUklORyB8fAotKwkgIHRva2VuLT50eXBlID09IENQUF9V VEY4U1RSSU5HKTsKLSB9Ci0gCi0gLyogUmV0dXJucyBub256ZXJvIGlmIFRPS0VOIGlzIHRoZSBp bmRpY2F0ZWQgS0VZV09SRC4gICovCi1AQCAtMjk3Miw2ICsyOTc0LDcgQEAgY3BfcGFyc2VyX3N0 cmluZ19saXRlcmFsIChjcF9wYXJzZXIgKnBhcgotIAl7Ci0gCWRlZmF1bHQ6Ci0gCWNhc2UgQ1BQ X1NUUklORzoKLSsJY2FzZSBDUFBfVVRGOFNUUklORzoKLSAJICBUUkVFX1RZUEUgKHZhbHVlKSA9 IGNoYXJfYXJyYXlfdHlwZV9ub2RlOwotIAkgIGJyZWFrOwotIAljYXNlIENQUF9TVFJJTkcxNjoK LUBAIC0zMTk1LDYgKzMxOTgsNyBAQCBjcF9wYXJzZXJfcHJpbWFyeV9leHByZXNzaW9uIChjcF9w YXJzZXIgCi0gICAgIGNhc2UgQ1BQX1NUUklORzE2OgotICAgICBjYXNlIENQUF9TVFJJTkczMjoK LSAgICAgY2FzZSBDUFBfV1NUUklORzoKLSsgICAgY2FzZSBDUFBfVVRGOFNUUklORzoKLSAgICAg ICAvKiA/Pz8gU2hvdWxkIHdpZGUgc3RyaW5ncyBiZSBhbGxvd2VkIHdoZW4gcGFyc2VyLT50cmFu c2xhdGVfc3RyaW5nc19wCi0gCSBpcyBmYWxzZSAoaS5lLiBpbiBhdHRyaWJ1dGVzKT8gIElmIG5v dCwgd2UgY2FuIGtpbGwgdGhlIHRoaXJkCi0gCSBhcmd1bWVudCB0byBjcF9wYXJzZXJfc3RyaW5n X2xpdGVyYWwuICAqLwotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3Jhdy1zdHJpbmctMS5jLmpq CTIwMDgtMDktMTIgMTE6NDg6MzYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvcmF3LXN0cmluZy0xLmMJMjAwOC0wOS0xMiAxNDowMToyNy4wMDAwMDAwMDAgKzAyMDAK LUBAIC0wLDAgKzEsMTAxIEBACi0rLyogeyBkZy1kbyBydW4gfSAqLwotKy8qIHsgZGctb3B0aW9u cyAiLXN0ZD1nbnU5OSIgfSAqLwotKwotKyNpbmNsdWRlIDx3Y2hhci5oPgotKwotK3R5cGVkZWYg X19DSEFSMTZfVFlQRV9fCWNoYXIxNl90OwotK3R5cGVkZWYgX19DSEFSMzJfVFlQRV9fIGNoYXIz Ml90OwotKwotK2NvbnN0IGNoYXIgczBbXSA9IFIiW2FcCi0rXHUwMTBkXFUwMDAwMDEwRFxcXCdc Ilw/XGFcYlxmXG5cclx0XHZcMFwwMFwwMDBceGFceGFiYgotK2NdIjsKLStjb25zdCBjaGFyIHMx W10gPSAiYVxVMDAwMDAxMGRcdTAxMGRcXFxcXFwnXFxcIlxcP1xcYVxcYlxcZlxcblxcclxcdFxc dlxcMFxcMDBcXDAwMFxceGFcXHhhYmJcbmMiOwotK2NvbnN0IGNoYXIgczJbXSA9IFIiKnwqW2Fc Ci0rYgotK2NdIgotK2NdKnwiCi0rY10qfCoiOwotK2NvbnN0IGNoYXIgczNbXSA9ICJhYlxuY11c IlxuY10qfFwiXG5jIjsKLSsKLStjb25zdCBjaGFyIHQwW10gPSB1OFIiW2FcCi0rXHUwMTBkXFUw MDAwMDEwRFxcXCdcIlw/XGFcYlxmXG5cclx0XHZcMFwwMFwwMDBceGFceGFiYgotK2NdIjsKLStj b25zdCBjaGFyIHQxW10gPSB1OCJhXFUwMDAwMDEwZFx1MDEwZFxcXFxcXCdcXFwiXFw/XFxhXFxi XFxmXFxuXFxyXFx0XFx2XFwwXFwwMFxcMDAwXFx4YVxceGFiYlxuYyI7Ci0rY29uc3QgY2hhciB0 MltdID0gdThSIip8KlthXAotK2IKLStjXSIKLStjXSp8IgotK2NdKnwqIjsKLStjb25zdCBjaGFy IHQzW10gPSB1OCJhYlxuY11cIlxuY10qfFwiXG5jIjsKLSsKLStjb25zdCBjaGFyMTZfdCB1MFtd ID0gdVIiW2FcCi0rXHUwMTBkXFUwMDAwMDEwRFxcXCdcIlw/XGFcYlxmXG5cclx0XHZcMFwwMFww MDBceGFceGFiYgotK2NdIjsKLStjb25zdCBjaGFyMTZfdCB1MVtdID0gdSJhXFUwMDAwMDEwZFx1 MDEwZFxcXFxcXCdcXFwiXFw/XFxhXFxiXFxmXFxuXFxyXFx0XFx2XFwwXFwwMFxcMDAwXFx4YVxc eGFiYlxuYyI7Ci0rY29uc3QgY2hhcjE2X3QgdTJbXSA9IHVSIip8KlthXAotK2IKLStjXSIKLStj XSp8IgotK2NdKnwqIjsKLStjb25zdCBjaGFyMTZfdCB1M1tdID0gdSJhYlxuY11cIlxuY10qfFwi XG5jIjsKLSsKLStjb25zdCBjaGFyMzJfdCBVMFtdID0gVVIiW2FcCi0rXHUwMTBkXFUwMDAwMDEw RFxcXCdcIlw/XGFcYlxmXG5cclx0XHZcMFwwMFwwMDBceGFceGFiYgotK2NdIjsKLStjb25zdCBj aGFyMzJfdCBVMVtdID0gVSJhXFUwMDAwMDEwZFx1MDEwZFxcXFxcXCdcXFwiXFw/XFxhXFxiXFxm XFxuXFxyXFx0XFx2XFwwXFwwMFxcMDAwXFx4YVxceGFiYlxuYyI7Ci0rY29uc3QgY2hhcjMyX3Qg VTJbXSA9IFVSIip8KlthXAotK2IKLStjXSIKLStjXSp8IgotK2NdKnwqIjsKLStjb25zdCBjaGFy MzJfdCBVM1tdID0gVSJhYlxuY11cIlxuY10qfFwiXG5jIjsKLSsKLStjb25zdCB3Y2hhcl90IEww W10gPSBMUiJbYVwKLStcdTAxMGRcVTAwMDAwMTBEXFxcJ1wiXD9cYVxiXGZcblxyXHRcdlwwXDAw XDAwMFx4YVx4YWJiCi0rY10iOwotK2NvbnN0IHdjaGFyX3QgTDFbXSA9IEwiYVxVMDAwMDAxMGRc dTAxMGRcXFxcXFwnXFxcIlxcP1xcYVxcYlxcZlxcblxcclxcdFxcdlxcMFxcMDBcXDAwMFxceGFc XHhhYmJcbmMiOwotK2NvbnN0IHdjaGFyX3QgTDJbXSA9IExSIip8KlthXAotK2IKLStjXSIKLStj XSp8IgotK2NdKnwqIjsKLStjb25zdCB3Y2hhcl90IEwzW10gPSBMImFiXG5jXVwiXG5jXSp8XCJc bmMiOwotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgaWYgKHNpemVvZiAoczApICE9IHNp emVvZiAoczEpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAoczAsIHMxLCBzaXplb2YgKHMw KSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAoczIpICE9 IHNpemVvZiAoczMpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAoczIsIHMzLCBzaXplb2Yg KHMyKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAodDAp ICE9IHNpemVvZiAodDEpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAodDAsIHQxLCBzaXpl b2YgKHQwKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAo dDIpICE9IHNpemVvZiAodDMpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAodDIsIHQzLCBz aXplb2YgKHQyKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVv ZiAodTApICE9IHNpemVvZiAodTEpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAodTAsIHUx LCBzaXplb2YgKHUwKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNp emVvZiAodTIpICE9IHNpemVvZiAodTMpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAodTIs IHUzLCBzaXplb2YgKHUyKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYg KHNpemVvZiAoVTApICE9IHNpemVvZiAoVTEpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAo VTAsIFUxLCBzaXplb2YgKFUwKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAg aWYgKHNpemVvZiAoVTIpICE9IHNpemVvZiAoVTMpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNt cCAoVTIsIFUzLCBzaXplb2YgKFUyKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwot KyAgaWYgKHNpemVvZiAoTDApICE9IHNpemVvZiAoTDEpCi0rICAgICAgfHwgX19idWlsdGluX21l bWNtcCAoTDAsIEwxLCBzaXplb2YgKEwwKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgp OwotKyAgaWYgKHNpemVvZiAoTDIpICE9IHNpemVvZiAoTDMpCi0rICAgICAgfHwgX19idWlsdGlu X21lbWNtcCAoTDIsIEwzLCBzaXplb2YgKEwyKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0 ICgpOwotKyAgaWYgKHNpemVvZiAoUiIqW10qIikgIT0gMQotKyAgICAgIHx8IF9fYnVpbHRpbl9t ZW1jbXAgKFIiKltdKiIsICIiLCAxKSAhPSAwKQotKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Ci0r ICByZXR1cm4gMDsKLSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcmF3LXN0cmluZy0yLmMu amoJMjAwOC0wOS0xMiAxMjoxNDo0Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdGVzdHN1aXRl L2djYy5kZy9yYXctc3RyaW5nLTIuYwkyMDA4LTA5LTEyIDEzOjM3OjEwLjAwMDAwMDAwMCArMDIw MAotQEAgLTAsMCArMSwxMDkgQEAKLSsvKiB7IGRnLWRvIHJ1biB9ICovCi0rLyogeyBkZy1vcHRp b25zICItc3RkPWdudTk5IiB9ICovCi0rCi0rI2luY2x1ZGUgPHdjaGFyLmg+Ci0rCi0rdHlwZWRl ZiBfX0NIQVIxNl9UWVBFX18JY2hhcjE2X3Q7Ci0rdHlwZWRlZiBfX0NIQVIzMl9UWVBFX18gY2hh cjMyX3Q7Ci0rCi0rI2RlZmluZSBSCi0rI2RlZmluZSB1Ci0rI2RlZmluZSB1UgotKyNkZWZpbmUg VQotKyNkZWZpbmUgVVIKLSsjZGVmaW5lIHU4Ci0rI2RlZmluZSB1OFIKLSsjZGVmaW5lIEwKLSsj ZGVmaW5lIExSCi0rCi0rY29uc3QgY2hhciBzMDBbXSA9IFIiW2FdIiAiW2JdIjsKLStjb25zdCBj aGFyIHMwMVtdID0gIlthXSIgUiIqW2JdKiI7Ci0rY29uc3QgY2hhciBzMDJbXSA9IFIiW2FdIiBS IltiXSI7Ci0rY29uc3QgY2hhciBzMDNbXSA9IFIiLVthXS0iIHU4IltiXSI7Ci0rY29uc3QgY2hh ciBzMDRbXSA9ICJbYV0iIHU4UiJNTk9QUVJTVFVWV1hZWltiXU1OT1BRUlNUVVZXWFlaIjsKLStj b25zdCBjaGFyIHMwNVtdID0gUiJbYV0iIHU4UiJ3eHl6QUJDREVGR0hJSktMW2Jdd3h5ekFCQ0RF RkdISUpLTCI7Ci0rY29uc3QgY2hhciBzMDZbXSA9IHU4UiI7KFthXTsoIiAiW2JdIjsKLStjb25z dCBjaGFyIHMwN1tdID0gdTgiW2FdIiBSIltiXSI7Ci0rY29uc3QgY2hhciBzMDhbXSA9IHU4UiJb YV0iIFIiX3t9IygpPD4lOjsuPyorLVtiXV97fSMoKTw+JTo7Lj8qKy0iOwotK2NvbnN0IGNoYXIg czA5W10gPSB1OFIiL14mfH4hPSwiJ1xbYV0vXiZ8fiE9LCInXCIgdTgiW2JdIjsKLStjb25zdCBj aGFyIHMxMFtdID0gdTgiW2FdIiB1OFIiMDEyMzQ1Njc4OWFiY2RlZltiXTAxMjM0NTY3ODlhYmNk ZWYiOwotK2NvbnN0IGNoYXIgczExW10gPSB1OFIiZ2hpamtsbW5vcHFyc3R1dlthXWdoaWprbG1u b3BxcnN0dXYiIHU4UiJ3W2JddyI7Ci0rCi0rY29uc3QgY2hhcjE2X3QgdTAzW10gPSBSIi1bYV0t IiB1IltiXSI7Ci0rY29uc3QgY2hhcjE2X3QgdTA0W10gPSAiW2FdIiB1UiJNTk9QUVJTVFVWV1hZ WltiXU1OT1BRUlNUVVZXWFlaIjsKLStjb25zdCBjaGFyMTZfdCB1MDVbXSA9IFIiW2FdIiB1UiJ3 eHl6QUJDREVGR0hJSktMW2Jdd3h5ekFCQ0RFRkdISUpLTCI7Ci0rY29uc3QgY2hhcjE2X3QgdTA2 W10gPSB1UiI7KFthXTsoIiAiW2JdIjsKLStjb25zdCBjaGFyMTZfdCB1MDdbXSA9IHUiW2FdIiBS IltiXSI7Ci0rY29uc3QgY2hhcjE2X3QgdTA4W10gPSB1UiJbYV0iIFIiX3t9IygpPD4lOjsuPyor LVtiXV97fSMoKTw+JTo7Lj8qKy0iOwotK2NvbnN0IGNoYXIxNl90IHUwOVtdID0gdVIiL14mfH4h PSwiJ1xbYV0vXiZ8fiE9LCInXCIgdSJbYl0iOwotK2NvbnN0IGNoYXIxNl90IHUxMFtdID0gdSJb YV0iIHVSIjAxMjM0NTY3ODlhYmNkZWZbYl0wMTIzNDU2Nzg5YWJjZGVmIjsKLStjb25zdCBjaGFy MTZfdCB1MTFbXSA9IHVSImdoaWprbG1ub3BxcnN0dXZbYV1naGlqa2xtbm9wcXJzdHV2IiB1UiJ3 W2JddyI7Ci0rCi0rY29uc3QgY2hhcjMyX3QgVTAzW10gPSBSIi1bYV0tIiBVIltiXSI7Ci0rY29u c3QgY2hhcjMyX3QgVTA0W10gPSAiW2FdIiBVUiJNTk9QUVJTVFVWV1hZWltiXU1OT1BRUlNUVVZX WFlaIjsKLStjb25zdCBjaGFyMzJfdCBVMDVbXSA9IFIiW2FdIiBVUiJ3eHl6QUJDREVGR0hJSktM W2Jdd3h5ekFCQ0RFRkdISUpLTCI7Ci0rY29uc3QgY2hhcjMyX3QgVTA2W10gPSBVUiI7KFthXTso IiAiW2JdIjsKLStjb25zdCBjaGFyMzJfdCBVMDdbXSA9IFUiW2FdIiBSIltiXSI7Ci0rY29uc3Qg Y2hhcjMyX3QgVTA4W10gPSBVUiJbYV0iIFIiX3t9IygpPD4lOjsuPyorLVtiXV97fSMoKTw+JTo7 Lj8qKy0iOwotK2NvbnN0IGNoYXIzMl90IFUwOVtdID0gVVIiL14mfH4hPSwiJ1xbYV0vXiZ8fiE9 LCInXCIgVSJbYl0iOwotK2NvbnN0IGNoYXIzMl90IFUxMFtdID0gVSJbYV0iIFVSIjAxMjM0NTY3 ODlhYmNkZWZbYl0wMTIzNDU2Nzg5YWJjZGVmIjsKLStjb25zdCBjaGFyMzJfdCBVMTFbXSA9IFVS ImdoaWprbG1ub3BxcnN0dXZbYV1naGlqa2xtbm9wcXJzdHV2IiBVUiJ3W2JddyI7Ci0rCi0rY29u c3Qgd2NoYXJfdCBMMDNbXSA9IFIiLVthXS0iIEwiW2JdIjsKLStjb25zdCB3Y2hhcl90IEwwNFtd ID0gIlthXSIgTFIiTU5PUFFSU1RVVldYWVpbYl1NTk9QUVJTVFVWV1hZWiI7Ci0rY29uc3Qgd2No YXJfdCBMMDVbXSA9IFIiW2FdIiBMUiJ3eHl6QUJDREVGR0hJSktMW2Jdd3h5ekFCQ0RFRkdISUpL TCI7Ci0rY29uc3Qgd2NoYXJfdCBMMDZbXSA9IExSIjsoW2FdOygiICJbYl0iOwotK2NvbnN0IHdj aGFyX3QgTDA3W10gPSBMIlthXSIgUiJbYl0iOwotK2NvbnN0IHdjaGFyX3QgTDA4W10gPSBMUiJb YV0iIFIiX3t9IygpPD4lOjsuPyorLVtiXV97fSMoKTw+JTo7Lj8qKy0iOwotK2NvbnN0IHdjaGFy X3QgTDA5W10gPSBMUiIvXiZ8fiE9LCInXFthXS9eJnx+IT0sIidcIiBMIltiXSI7Ci0rY29uc3Qg d2NoYXJfdCBMMTBbXSA9IEwiW2FdIiBMUiIwMTIzNDU2Nzg5YWJjZGVmW2JdMDEyMzQ1Njc4OWFi Y2RlZiI7Ci0rY29uc3Qgd2NoYXJfdCBMMTFbXSA9IExSImdoaWprbG1ub3BxcnN0dXZbYV1naGlq a2xtbm9wcXJzdHV2IiBMUiJ3W2JddyI7Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rI2Rl ZmluZSBURVNUKHN0ciwgdmFsKSBcCi0rICBpZiAoc2l6ZW9mIChzdHIpICE9IHNpemVvZiAodmFs KSBcCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAoc3RyLCB2YWwsIHNpemVvZiAoc3RyKSkg IT0gMCkgXAotKyAgICBfX2J1aWx0aW5fYWJvcnQgKCkKLSsgIFRFU1QgKHMwMCwgImFbYl0iKTsK LSsgIFRFU1QgKHMwMSwgIlthXWIiKTsKLSsgIFRFU1QgKHMwMiwgImFiIik7Ci0rICBURVNUIChz MDMsICJhW2JdIik7Ci0rICBURVNUIChzMDQsICJbYV1iIik7Ci0rICBURVNUIChzMDUsICJhYiIp OwotKyAgVEVTVCAoczA2LCAiYVtiXSIpOwotKyAgVEVTVCAoczA3LCAiW2FdYiIpOwotKyAgVEVT VCAoczA4LCAiYWIiKTsKLSsgIFRFU1QgKHMwOSwgImFbYl0iKTsKLSsgIFRFU1QgKHMxMCwgIlth XWIiKTsKLSsgIFRFU1QgKHMxMSwgImFiIik7Ci0rICBURVNUICh1MDMsIHUiYVtiXSIpOwotKyAg VEVTVCAodTA0LCB1IlthXWIiKTsKLSsgIFRFU1QgKHUwNSwgdSJhYiIpOwotKyAgVEVTVCAodTA2 LCB1ImFbYl0iKTsKLSsgIFRFU1QgKHUwNywgdSJbYV1iIik7Ci0rICBURVNUICh1MDgsIHUiYWIi KTsKLSsgIFRFU1QgKHUwOSwgdSJhW2JdIik7Ci0rICBURVNUICh1MTAsIHUiW2FdYiIpOwotKyAg VEVTVCAodTExLCB1ImFiIik7Ci0rICBURVNUIChVMDMsIFUiYVtiXSIpOwotKyAgVEVTVCAoVTA0 LCBVIlthXWIiKTsKLSsgIFRFU1QgKFUwNSwgVSJhYiIpOwotKyAgVEVTVCAoVTA2LCBVImFbYl0i KTsKLSsgIFRFU1QgKFUwNywgVSJbYV1iIik7Ci0rICBURVNUIChVMDgsIFUiYWIiKTsKLSsgIFRF U1QgKFUwOSwgVSJhW2JdIik7Ci0rICBURVNUIChVMTAsIFUiW2FdYiIpOwotKyAgVEVTVCAoVTEx LCBVImFiIik7Ci0rICBURVNUIChMMDMsIEwiYVtiXSIpOwotKyAgVEVTVCAoTDA0LCBMIlthXWIi KTsKLSsgIFRFU1QgKEwwNSwgTCJhYiIpOwotKyAgVEVTVCAoTDA2LCBMImFbYl0iKTsKLSsgIFRF U1QgKEwwNywgTCJbYV1iIik7Ci0rICBURVNUIChMMDgsIEwiYWIiKTsKLSsgIFRFU1QgKEwwOSwg TCJhW2JdIik7Ci0rICBURVNUIChMMTAsIEwiW2FdYiIpOwotKyAgVEVTVCAoTDExLCBMImFiIik7 Ci0rICByZXR1cm4gMDsKLSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcmF3LXN0cmluZy0z LmMuamoJMjAwOC0wOS0xMiAxMzoyNzowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdGVzdHN1 aXRlL2djYy5kZy9yYXctc3RyaW5nLTMuYwkyMDA4LTA5LTEyIDEzOjQyOjU1LjAwMDAwMDAwMCAr MDIwMAotQEAgLTAsMCArMSw1MyBAQAotKy8qIElmIG5vdCBnbnU5OSwgdGhlIHssdSx1OCxVLEx9 UiBwcmVmaXggc2hvdWxkIGJlIHBhcnNlZCBhcyBzZXBhcmF0ZQotKyAgIHRva2VuLiAqLwotKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICIiIH0gKi8KLSsKLStjb25z dCB2b2lkCSpzMAk9IFIiW2FdIjsJLyogeyBkZy1lcnJvciAidW5kZWNsYXJlZCIgfSAqLwotKwkJ LyogeyBkZy1lcnJvciAiZXhwZWN0ZWQgJywnIG9yICc7JyIgIiIgeyB0YXJnZXQgKi0qLSogfSA2 IH0gKi8KLStjb25zdCB2b2lkCSpzMQk9IHVSIlthXSI7CS8qIHsgZGctZXJyb3IgInVuZGVjbGFy ZWQiIH0gKi8KLSsJCS8qIHsgZGctZXJyb3IgImV4cGVjdGVkICcsJyBvciAnOyciICIiIHsgdGFy Z2V0ICotKi0qIH0gOCB9ICovCi0rY29uc3Qgdm9pZAkqczIJPSBVUiJbYV0iOwkvKiB7IGRnLWVy cm9yICJ1bmRlY2xhcmVkIiB9ICovCi0rCQkvKiB7IGRnLWVycm9yICJleHBlY3RlZCAnLCcgb3Ig JzsnIiAiIiB7IHRhcmdldCAqLSotKiB9IDEwIH0gKi8KLStjb25zdCB2b2lkCSpzMwk9IHU4UiJb YV0iOwkvKiB7IGRnLWVycm9yICJ1bmRlY2xhcmVkIiB9ICovCi0rCQkvKiB7IGRnLWVycm9yICJl eHBlY3RlZCAnLCcgb3IgJzsnIiAiIiB7IHRhcmdldCAqLSotKiB9IDEyIH0gKi8KLStjb25zdCB2 b2lkCSpzNAk9IExSIlthXSI7CS8qIHsgZGctZXJyb3IgInVuZGVjbGFyZWQiIH0gKi8KLSsJCS8q IHsgZGctZXJyb3IgImV4cGVjdGVkICcsJyBvciAnOyciICIiIHsgdGFyZ2V0ICotKi0qIH0gMTQg fSAqLwotKwotK2NvbnN0IGludAlpMAk9IFInYSc7CQkvKiB7IGRnLWVycm9yICJleHBlY3RlZCAn LCcgb3IgJzsnIiB9ICovCi0rY29uc3QgaW50CWkxCT0gdVInYSc7CS8qIHsgZGctZXJyb3IgImV4 cGVjdGVkICcsJyBvciAnOyciIH0gKi8KLStjb25zdCBpbnQJaTIJPSBVUidhJzsJLyogeyBkZy1l cnJvciAiZXhwZWN0ZWQgJywnIG9yICc7JyIgfSAqLwotK2NvbnN0IGludAlpMwk9IHU4UidhJzsJ LyogeyBkZy1lcnJvciAiZXhwZWN0ZWQgJywnIG9yICc7JyIgfSAqLwotK2NvbnN0IGludAlpNAk9 IExSJ2EnOwkvKiB7IGRnLWVycm9yICJleHBlY3RlZCAnLCcgb3IgJzsnIiB9ICovCi0rCi0rI2Rl ZmluZSBSCSJhIgotKyNkZWZpbmUgdVIJImIiCi0rI2RlZmluZSBVUgkiYyIKLSsjZGVmaW5lIHU4 UgkiZCIKLSsjZGVmaW5lIExSCSJlIgotKwotK2NvbnN0IHZvaWQJKnM1CT0gUiJbYV0iOwotK2Nv bnN0IHZvaWQJKnM2CT0gdVIiW2FdIjsKLStjb25zdCB2b2lkCSpzNwk9IFVSIlthXSI7Ci0rY29u c3Qgdm9pZAkqczgJPSB1OFIiW2FdIjsKLStjb25zdCB2b2lkCSpzOQk9IExSIlthXSI7Ci0rCi0r I3VuZGVmIFIKLSsjdW5kZWYgdVIKLSsjdW5kZWYgVVIKLSsjdW5kZWYgdThSCi0rI3VuZGVmIExS Ci0rCi0rI2RlZmluZSBSCTEgKwotKyNkZWZpbmUgdVIJMiArCi0rI2RlZmluZSBVUgkzICsKLSsj ZGVmaW5lIHU4Ugk0ICsKLSsjZGVmaW5lIExSCTUgKwotKwotK2NvbnN0IGludAlpNQk9IFInYSc7 Ci0rY29uc3QgaW50CWk2CT0gdVInYSc7Ci0rY29uc3QgaW50CWk3CT0gVVInYSc7Ci0rY29uc3Qg aW50CWk4CT0gdThSJ2EnOwotK2NvbnN0IGludAlpOQk9IExSJ2EnOwotKwotK2ludCBtYWluICgp IHt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcmF3LXN0cmluZy00LmMuamoJMjAwOC0wOS0x MiAxMzoyNzowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9yYXct c3RyaW5nLTQuYwkyMDA4LTA5LTEyIDEzOjMzOjQzLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCAr MSwyOCBAQAotKy8qIFIgaXMgbm90IGFwcGxpY2FibGUgZm9yIGNoYXJhY3RlciBsaXRlcmFscy4g ICovCi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1zdGQ9Z251 OTkiIH0gKi8KLSsKLStjb25zdCBpbnQJaTAJPSBSJ2EnOwkvKiB7IGRnLWVycm9yICJ1bmRlY2xh cmVkIiB9ICovCi0rCQkvKiB7IGRnLWVycm9yICJleHBlY3RlZCAnLCcgb3IgJzsnIiAiIiB7IHRh cmdldCAqLSotKiB9IDUgfSAqLwotK2NvbnN0IGludAlpMQk9IHVSJ2EnOwkvKiB7IGRnLWVycm9y ICJ1bmRlY2xhcmVkIiB9ICovCi0rCQkvKiB7IGRnLWVycm9yICJleHBlY3RlZCAnLCcgb3IgJzsn IiAiIiB7IHRhcmdldCAqLSotKiB9IDcgfSAqLwotK2NvbnN0IGludAlpMgk9IFVSJ2EnOwkvKiB7 IGRnLWVycm9yICJ1bmRlY2xhcmVkIiB9ICovCi0rCQkvKiB7IGRnLWVycm9yICJleHBlY3RlZCAn LCcgb3IgJzsnIiAiIiB7IHRhcmdldCAqLSotKiB9IDkgfSAqLwotK2NvbnN0IGludAlpMwk9IHU4 UidhJzsJLyogeyBkZy1lcnJvciAidW5kZWNsYXJlZCIgfSAqLwotKwkJLyogeyBkZy1lcnJvciAi ZXhwZWN0ZWQgJywnIG9yICc7JyIgIiIgeyB0YXJnZXQgKi0qLSogfSAxMSB9ICovCi0rY29uc3Qg aW50CWk0CT0gTFInYSc7CS8qIHsgZGctZXJyb3IgInVuZGVjbGFyZWQiIH0gKi8KLSsJCS8qIHsg ZGctZXJyb3IgImV4cGVjdGVkICcsJyBvciAnOyciICIiIHsgdGFyZ2V0ICotKi0qIH0gMTMgfSAq LwotKwotKyNkZWZpbmUgUgkxICsKLSsjZGVmaW5lIHVSCTIgKwotKyNkZWZpbmUgVVIJMyArCi0r I2RlZmluZSB1OFIJNCArCi0rI2RlZmluZSBMUgk1ICsKLSsKLStjb25zdCBpbnQJaTUJPSBSJ2En OwotK2NvbnN0IGludAlpNgk9IHVSJ2EnOwotK2NvbnN0IGludAlpNwk9IFVSJ2EnOwotK2NvbnN0 IGludAlpOAk9IHU4UidhJzsKLStjb25zdCBpbnQJaTkJPSBMUidhJzsKLSsKLStpbnQgbWFpbiAo KSB7fQotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3Jhdy1zdHJpbmctNS5jLmpqCTIwMDgtMDkt MTIgMTM6NDk6NTguMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcmF3 LXN0cmluZy01LmMJMjAwOC0wOS0xMiAxMzo1OToxNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAg KzEsMjMgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLXN0 ZD1nbnU5OSIgfSAqLwotKwotK2NvbnN0IHZvaWQgKnMwID0gUiIwMTIzNDU2Nzg5YWJjZGVmZ1td MDEyMzQ1Njc4OWFiY2RlZmciOwotKwkvKiB7IGRnLWVycm9yICJyYXcgc3RyaW5nIGRlbGltaXRl ciBsb25nZXIiICIiIHsgdGFyZ2V0ICotKi0qIH0gNCB9ICovCi0rCS8qIHsgZGctZXJyb3IgInN0 cmF5IiAiIiB7IHRhcmdldCAqLSotKiB9IDQgfSAqLwotK2NvbnN0IHZvaWQgKnMxID0gUiIgW10g IjsKLSsJLyogeyBkZy1lcnJvciAiaW52YWxpZCBjaGFyYWN0ZXIiICIiIHsgdGFyZ2V0ICotKi0q IH0gNyB9ICovCi0rCS8qIHsgZGctZXJyb3IgInN0cmF5IiAiIiB7IHRhcmdldCAqLSotKiB9IDcg fSAqLwotK2NvbnN0IHZvaWQgKnMyID0gUiIJW10JIjsKLSsJLyogeyBkZy1lcnJvciAiaW52YWxp ZCBjaGFyYWN0ZXIiICIiIHsgdGFyZ2V0ICotKi0qIH0gMTAgfSAqLwotKwkvKiB7IGRnLWVycm9y ICJzdHJheSIgIiIgeyB0YXJnZXQgKi0qLSogfSAxMCB9ICovCi0rY29uc3Qgdm9pZCAqczMgPSBS Il1bXV0iOwotKwkvKiB7IGRnLWVycm9yICJpbnZhbGlkIGNoYXJhY3RlciIgIiIgeyB0YXJnZXQg Ki0qLSogfSAxMyB9ICovCi0rCS8qIHsgZGctZXJyb3IgInN0cmF5IiAiIiB7IHRhcmdldCAqLSot KiB9IDEzIH0gKi8KLStjb25zdCB2b2lkICpzNCA9IFIiQFtdQCI7Ci0rCS8qIHsgZGctZXJyb3Ig ImludmFsaWQgY2hhcmFjdGVyIiAiIiB7IHRhcmdldCAqLSotKiB9IDE2IH0gKi8KLSsJLyogeyBk Zy1lcnJvciAic3RyYXkiICIiIHsgdGFyZ2V0ICotKi0qIH0gMTYgfSAqLwotK2NvbnN0IHZvaWQg KnM1ID0gUiIkW10kIjsKLSsJLyogeyBkZy1lcnJvciAiaW52YWxpZCBjaGFyYWN0ZXIiICIiIHsg dGFyZ2V0ICotKi0qIH0gMTkgfSAqLwotKwkvKiB7IGRnLWVycm9yICJzdHJheSIgIiIgeyB0YXJn ZXQgKi0qLSogfSAxOSB9ICovCi0rCi0raW50IG1haW4gKCkge30KLS0tLSBnY2MvdGVzdHN1aXRl L2djYy5kZy9yYXctc3RyaW5nLTYuYy5qagkyMDA4LTA5LTEyIDEzOjU5OjMzLjAwMDAwMDAwMCAr MDIwMAotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3Jhdy1zdHJpbmctNi5jCTIwMDgtMDktMTIg MTQ6MDM6NDYuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDUgQEAKLSsvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLXN0ZD1nbnU5OSIgfSAqLwotKwotK2NvbnN0 IHZvaWQgKnMwID0gUiJvdWNoW11vdUNoIjsJLyogeyBkZy1lcnJvciAiZXhwZWN0ZWQgZXhwcmVz c2lvbiBhdCBlbmQgb2YgaW5wdXQiIH0gKi8KLSsJLyogeyBkZy1lcnJvciAidW50ZXJtaW5hdGVk IHJhdyBzdHJpbmciICIiIHsgdGFyZ2V0ICotKi0qIH0gNiB9ICovCi0tLS0gZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvcmF3LXN0cmluZy03LmMuamoJMjAwOC0wOS0xMiAxNDoyNzozOS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9yYXctc3RyaW5nLTcuYwkyMDA4LTA5LTEy IDE0OjM0OjE3LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwyMyBAQAotKy8qIFRoZSB0cmFp bGluZyB3aGl0ZXNwYWNlIGFmdGVyIFwgYW5kIGJlZm9yZSBuZXdsaW5lIGV4dGVuc2lvbgotKyAg IGJyZWFrcyBmdWxsIGNvbXBsaWFuY2UgZm9yIHJhdyBzdHJpbmdzLiAgKi8KLSsvKiB7IGRnLWRv IHJ1biB7IHhmYWlsICotKi0qIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLXN0ZD1nbnU5OSIg fSAqLwotKwotKy8qIE5vdGUsIHRoZXJlIGlzIGEgc2luZ2xlIHNwYWNlIGFmdGVyIFwgb24gdGhl IGZvbGxvd2luZyBsaW5lLiAgKi8KLStjb25zdCB2b2lkICpzMCA9IFIiW1wgCi0rXSI7Ci0rLyog eyBkZy1ib2d1cyAiYmFja3NsYXNoIGFuZCBuZXdsaW5lIHNlcGFyYXRlZCBieSBzcGFjZSIgIiIg eyB4ZmFpbCAqLSotKiB9IDcgfSAqLwotKwotKy8qIE5vdGUsIHRoZXJlIGlzIGEgc2luZ2xlIHRh YiBhZnRlciBcIG9uIHRoZSBmb2xsb3dpbmcgbGluZS4gICovCi0rY29uc3Qgdm9pZCAqczEgPSBS IltcCQotK10iOwotKy8qIHsgZGctYm9ndXMgImJhY2tzbGFzaCBhbmQgbmV3bGluZSBzZXBhcmF0 ZWQgYnkgc3BhY2UiICIiIHsgeGZhaWwgKi0qLSogfSAxMiB9ICovCi0rCi0raW50Ci0rbWFpbiAo dm9pZCkKLSt7Ci0rICBpZiAoX19idWlsdGluX3N0cmNtcCAoczAsICJcXCBcbiIpICE9IDAKLSsg ICAgICB8fCBfX2J1aWx0aW5fc3RyY21wIChzMSwgIlxcXHRcbiIpICE9IDApCi0rICAgIF9fYnVp bHRpbl9hYm9ydCAoKTsKLSsgIHJldHVybiAwOwotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2djYy5k Zy91dGY4LTEuYy5qagkyMDA4LTA5LTEyIDEwOjAxOjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3V0ZjgtMS5jCTIwMDgtMDktMTIgMTE6NDU6NDguMDAwMDAwMDAw ICswMjAwCi1AQCAtMCwwICsxLDQ1IEBACi0rLyogeyBkZy1kbyBydW4gfSAqLwotKy8qIHsgZGct cmVxdWlyZS1pY29udiAiSVNPLTg4NTktMiIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLXN0ZD1n bnU5OSAtZmV4ZWMtY2hhcnNldD1JU08tODg1OS0yIiB9ICovCi0rCi0rY29uc3QgY2hhciAqc3Ry MSA9ICJoXHUwMGUxXFUwMDAwMDEwRGt5ICI7Ci0rY29uc3QgY2hhciAqc3RyMiA9ICJcdTAxMGRc dTAwRTFya3lcbiI7Ci0rY29uc3QgY2hhciAqc3RyMyA9IHU4ImhcdTAwZTFcVTAwMDAwMTBEa3kg IjsKLStjb25zdCBjaGFyICpzdHI0ID0gdTgiXHUwMTBkXHUwMEUxcmt5XG4iOwotK2NvbnN0IGNo YXIgKnN0cjUgPSAiaFx1MDBlMVxVMDAwMDAxMERreSAiICJcdTAxMGRcdTAwRTFya3lcbiI7Ci0r Y29uc3QgY2hhciAqc3RyNiA9IHU4ImhcdTAwZTFcVTAwMDAwMTBEa3kgIiAiXHUwMTBkXHUwMEUx cmt5XG4iOwotK2NvbnN0IGNoYXIgKnN0cjcgPSAiaFx1MDBlMVxVMDAwMDAxMERreSAiIHU4Ilx1 MDEwZFx1MDBFMXJreVxuIjsKLSsjZGVmaW5lIHU4Ci0rY29uc3QgY2hhciAqc3RyOCA9IHU4Imhc dTAwZTFcVTAwMDAwMTBEa3kgIiB1OCJcdTAxMGRcdTAwRTFya3lcbiI7Ci0rCi0rY29uc3QgY2hh ciBsYXRpbjJfMVtdID0gIlx4NjhceGUxXHhlOFx4NmJceDc5XHgyMCI7Ci0rY29uc3QgY2hhciBs YXRpbjJfMltdID0gIlx4ZThceGUxXHg3Mlx4NmJceDc5XG4iOwotK2NvbnN0IGNoYXIgdXRmOF8x W10gPSAiXHg2OFx4YzNceGExXHhjNFx4OGRceDZiXHg3OVx4MjAiOwotK2NvbnN0IGNoYXIgdXRm OF8yW10gPSAiXHhjNFx4OGRceGMzXHhhMVx4NzJceDZiXHg3OVxuIjsKLSsKLStpbnQKLSttYWlu ICh2b2lkKQotK3sKLSsgIGlmIChfX2J1aWx0aW5fc3RyY21wIChzdHIxLCBsYXRpbjJfMSkgIT0g MAotKyAgICAgIHx8IF9fYnVpbHRpbl9zdHJjbXAgKHN0cjIsIGxhdGluMl8yKSAhPSAwCi0rICAg ICAgfHwgX19idWlsdGluX3N0cmNtcCAoc3RyMywgdXRmOF8xKSAhPSAwCi0rICAgICAgfHwgX19i dWlsdGluX3N0cmNtcCAoc3RyNCwgdXRmOF8yKSAhPSAwCi0rICAgICAgfHwgX19idWlsdGluX3N0 cm5jbXAgKHN0cjUsIGxhdGluMl8xLCBzaXplb2YgKGxhdGluMl8xKSAtIDEpICE9IDAKLSsgICAg ICB8fCBfX2J1aWx0aW5fc3RyY21wIChzdHI1ICsgc2l6ZW9mIChsYXRpbjJfMSkgLSAxLCBsYXRp bjJfMikgIT0gMAotKyAgICAgIHx8IF9fYnVpbHRpbl9zdHJuY21wIChzdHI2LCB1dGY4XzEsIHNp emVvZiAodXRmOF8xKSAtIDEpICE9IDAKLSsgICAgICB8fCBfX2J1aWx0aW5fc3RyY21wIChzdHI2 ICsgc2l6ZW9mICh1dGY4XzEpIC0gMSwgdXRmOF8yKSAhPSAwCi0rICAgICAgfHwgX19idWlsdGlu X3N0cm5jbXAgKHN0cjcsIHV0ZjhfMSwgc2l6ZW9mICh1dGY4XzEpIC0gMSkgIT0gMAotKyAgICAg IHx8IF9fYnVpbHRpbl9zdHJjbXAgKHN0cjcgKyBzaXplb2YgKHV0ZjhfMSkgLSAxLCB1dGY4XzIp ICE9IDAKLSsgICAgICB8fCBfX2J1aWx0aW5fc3RybmNtcCAoc3RyOCwgdXRmOF8xLCBzaXplb2Yg KHV0ZjhfMSkgLSAxKSAhPSAwCi0rICAgICAgfHwgX19idWlsdGluX3N0cmNtcCAoc3RyOCArIHNp emVvZiAodXRmOF8xKSAtIDEsIHV0ZjhfMikgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgp OwotKyAgaWYgKHNpemVvZiAoImEiIHU4ImIiWzBdKSAhPSAxCi0rICAgICAgfHwgc2l6ZW9mICh1 OCJhIiAiYiJbMF0pICE9IDEKLSsgICAgICB8fCBzaXplb2YgKHU4ImEiIHU4ImIiWzBdKSAhPSAx Ci0rICAgICAgfHwgc2l6ZW9mICgiYSIgIlx1MDEwZCIpICE9IDMKLSsgICAgICB8fCBzaXplb2Yg KCJhIiB1OCJcdTAxMGQiKSAhPSA0Ci0rICAgICAgfHwgc2l6ZW9mICh1OCJhIiAiXHUwMTBkIikg IT0gNAotKyAgICAgIHx8IHNpemVvZiAodTgiYSIgIlx1MDEwZCIpICE9IDQpCi0rICAgIF9fYnVp bHRpbl9hYm9ydCAoKTsKLSsgIHJldHVybiAwOwotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2djYy5k Zy91dGY4LTIuYy5qagkyMDA4LTA5LTEyIDExOjI3OjUxLjAwMDAwMDAwMCArMDIwMAotKysrIGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3V0ZjgtMi5jCTIwMDgtMDktMTIgMTE6MzY6NDguMDAwMDAwMDAw ICswMjAwCi1AQCAtMCwwICsxLDI2IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7 IGRnLW9wdGlvbnMgIi1zdGQ9Z251OTkiIH0gKi8KLSsKLSsjaW5jbHVkZSA8d2NoYXIuaD4KLSsK LSt0eXBlZGVmIF9fQ0hBUjE2X1RZUEVfXwljaGFyMTZfdDsKLSt0eXBlZGVmIF9fQ0hBUjMyX1RZ UEVfXyBjaGFyMzJfdDsKLSsKLStjb25zdCBjaGFyCXMwW10JPSB1OCJhYiI7Ci0rY29uc3QgY2hh cjE2X3QJczFbXQk9IHU4ImFiIjsJLyogeyBkZy1lcnJvciAiZnJvbSBub24td2lkZSIgfSAqLwot K2NvbnN0IGNoYXIzMl90ICBzMltdICAgID0gdTgiYWIiOwkvKiB7IGRnLWVycm9yICJmcm9tIG5v bi13aWRlIiB9ICovCi0rY29uc3Qgd2NoYXJfdCAgIHMzW10gICAgPSB1OCJhYiI7CS8qIHsgZGct ZXJyb3IgImZyb20gbm9uLXdpZGUiIH0gKi8KLSsKLStjb25zdCBjaGFyICAgICAgdDBbMF0gICA9 IHU4ImFiIjsJLyogeyBkZy13YXJuaW5nICJjaGFycyBpcyB0b28gbG9uZyIgfSAqLwotK2NvbnN0 IGNoYXIgICAgICB0MVsxXSAgID0gdTgiYWIiOwkvKiB7IGRnLXdhcm5pbmcgImNoYXJzIGlzIHRv byBsb25nIiB9ICovCi0rY29uc3QgY2hhciAgICAgIHQyWzJdICAgPSB1OCJhYiI7Ci0rY29uc3Qg Y2hhciAgICAgIHQzWzNdICAgPSB1OCJhYiI7Ci0rY29uc3QgY2hhciAgICAgIHQ0WzRdICAgPSB1 OCJhYiI7Ci0rCi0rY29uc3QgY2hhciAgICAgIHUwWzBdICAgPSB1OCJcdTIxNjAuIjsJLyogeyBk Zy13YXJuaW5nICJjaGFycyBpcyB0b28gbG9uZyIgfSAqLwotK2NvbnN0IGNoYXIgICAgICB1MVsx XSAgID0gdTgiXHUyMTYwLiI7CS8qIHsgZGctd2FybmluZyAiY2hhcnMgaXMgdG9vIGxvbmciIH0g Ki8KLStjb25zdCBjaGFyICAgICAgdTJbMl0gICA9IHU4Ilx1MjE2MC4iOwkvKiB7IGRnLXdhcm5p bmcgImNoYXJzIGlzIHRvbyBsb25nIiB9ICovCi0rY29uc3QgY2hhciAgICAgIHUzWzNdICAgPSB1 OCJcdTIxNjAuIjsJLyogeyBkZy13YXJuaW5nICJjaGFycyBpcyB0b28gbG9uZyIgfSAqLwotK2Nv bnN0IGNoYXIgICAgICB1NFs0XSAgID0gdTgiXHUyMTYwLiI7Ci0rY29uc3QgY2hhciAgICAgIHU1 WzVdICAgPSB1OCJcdTIxNjAuIjsKLStjb25zdCBjaGFyICAgICAgdTZbNl0gICA9IHU4Ilx1MjE2 MC4iOwotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3V0Zi1iYWRjb25jYXQyLmMuamoJMjAwOC0w OS0xMiAxMToyODoyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy91 dGYtYmFkY29uY2F0Mi5jCTIwMDgtMDktMTIgMTE6MzA6NTMuMDAwMDAwMDAwICswMjAwCi1AQCAt MCwwICsxLDE1IEBACi0rLyogVGVzdCB1bnN1cHBvcnRlZCBjb25jYXRlbmF0aW9uIG9mIFVURi04 IHN0cmluZyBsaXRlcmFscy4gKi8KLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGct b3B0aW9ucyAiLXN0ZD1nbnU5OSIgfSAqLwotKwotK3ZvaWQJKnMwCT0gdTgiYSIgICAiYiI7Ci0r dm9pZAkqczEJPSAgICJhIiB1OCJiIjsKLSt2b2lkCSpzMgk9IHU4ImEiIHU4ImIiOwotK3ZvaWQJ KnMzCT0gdTgiYSIgIHUiYiI7CS8qIHsgZGctZXJyb3IgIm5vbi1zdGFuZGFyZCBjb25jYXRlbmF0 aW9uIiB9ICovCi0rdm9pZAkqczQJPSAgdSJhIiB1OCJiIjsJLyogeyBkZy1lcnJvciAibm9uLXN0 YW5kYXJkIGNvbmNhdGVuYXRpb24iIH0gKi8KLSt2b2lkCSpzNQk9IHU4ImEiICBVImIiOwkvKiB7 IGRnLWVycm9yICJub24tc3RhbmRhcmQgY29uY2F0ZW5hdGlvbiIgfSAqLwotK3ZvaWQJKnM2CT0g IFUiYSIgdTgiYiI7CS8qIHsgZGctZXJyb3IgIm5vbi1zdGFuZGFyZCBjb25jYXRlbmF0aW9uIiB9 ICovCi0rdm9pZAkqczcJPSB1OCJhIiAgTCJiIjsJLyogeyBkZy1lcnJvciAibm9uLXN0YW5kYXJk IGNvbmNhdGVuYXRpb24iIH0gKi8KLSt2b2lkCSpzOAk9ICBMImEiIHU4ImIiOwkvKiB7IGRnLWVy cm9yICJub24tc3RhbmRhcmQgY29uY2F0ZW5hdGlvbiIgfSAqLwotKwotK2ludCBtYWluICgpIHt9 Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdXRmLWRmbHQyLmMuamoJMjAwOC0wOS0xMiAxMToz MjowMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy91dGYtZGZsdDIu YwkyMDA4LTA5LTEyIDEzOjI0OjM5LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxMiBAQAot Ky8qIElmIG5vdCBnbnU5OSwgdGhlIHU4IHByZWZpeCBzaG91bGQgYmUgcGFyc2VkIGFzIHNlcGFy YXRlIHRva2Vucy4gKi8KLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9u cyAiIiB9ICovCi0rCi0rY29uc3Qgdm9pZAkqczAgPSB1OCJhIjsJCS8qIHsgZGctZXJyb3IgInVu ZGVjbGFyZWQiIH0gKi8KLSsJCS8qIHsgZGctZXJyb3IgImV4cGVjdGVkICcsJyBvciAnOyciICIi IHsgdGFyZ2V0ICotKi0qIH0gNSB9ICovCi0rCi0rI2RlZmluZSB1OAkiYSIKLSsKLStjb25zdCB2 b2lkCSpzMSA9IHU4ImEiOwotKwotK2ludCBtYWluICgpIHt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvZXh0L3Jhdy1zdHJpbmctMS5DLmpqCTIwMDgtMDktMTIgMTE6NDg6MzYuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L3Jhdy1zdHJpbmctMS5DCTIwMDgt MDktMTIgMTQ6MTg6MDcuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDk2IEBACi0rLy8geyBk Zy1kbyBydW4gfQotKy8vIHsgZGctb3B0aW9ucyAiLXN0ZD1jKysweCIgfQotKwotK2NvbnN0IGNo YXIgczBbXSA9IFIiW2FcCi0rXHUwMTBkXFUwMDAwMDEwRFxcXCdcIlw/XGFcYlxmXG5cclx0XHZc MFwwMFwwMDBceGFceGFiYgotK2NdIjsKLStjb25zdCBjaGFyIHMxW10gPSAiYVxVMDAwMDAxMGRc dTAxMGRcXFxcXFwnXFxcIlxcP1xcYVxcYlxcZlxcblxcclxcdFxcdlxcMFxcMDBcXDAwMFxceGFc XHhhYmJcbmMiOwotK2NvbnN0IGNoYXIgczJbXSA9IFIiKnwqW2FcCi0rYgotK2NdIgotK2NdKnwi Ci0rY10qfCoiOwotK2NvbnN0IGNoYXIgczNbXSA9ICJhYlxuY11cIlxuY10qfFwiXG5jIjsKLSsK LStjb25zdCBjaGFyIHQwW10gPSB1OFIiW2FcCi0rXHUwMTBkXFUwMDAwMDEwRFxcXCdcIlw/XGFc YlxmXG5cclx0XHZcMFwwMFwwMDBceGFceGFiYgotK2NdIjsKLStjb25zdCBjaGFyIHQxW10gPSB1 OCJhXFUwMDAwMDEwZFx1MDEwZFxcXFxcXCdcXFwiXFw/XFxhXFxiXFxmXFxuXFxyXFx0XFx2XFww XFwwMFxcMDAwXFx4YVxceGFiYlxuYyI7Ci0rY29uc3QgY2hhciB0MltdID0gdThSIip8KlthXAot K2IKLStjXSIKLStjXSp8IgotK2NdKnwqIjsKLStjb25zdCBjaGFyIHQzW10gPSB1OCJhYlxuY11c IlxuY10qfFwiXG5jIjsKLSsKLStjb25zdCBjaGFyMTZfdCB1MFtdID0gdVIiW2FcCi0rXHUwMTBk XFUwMDAwMDEwRFxcXCdcIlw/XGFcYlxmXG5cclx0XHZcMFwwMFwwMDBceGFceGFiYgotK2NdIjsK LStjb25zdCBjaGFyMTZfdCB1MVtdID0gdSJhXFUwMDAwMDEwZFx1MDEwZFxcXFxcXCdcXFwiXFw/ XFxhXFxiXFxmXFxuXFxyXFx0XFx2XFwwXFwwMFxcMDAwXFx4YVxceGFiYlxuYyI7Ci0rY29uc3Qg Y2hhcjE2X3QgdTJbXSA9IHVSIip8KlthXAotK2IKLStjXSIKLStjXSp8IgotK2NdKnwqIjsKLStj b25zdCBjaGFyMTZfdCB1M1tdID0gdSJhYlxuY11cIlxuY10qfFwiXG5jIjsKLSsKLStjb25zdCBj aGFyMzJfdCBVMFtdID0gVVIiW2FcCi0rXHUwMTBkXFUwMDAwMDEwRFxcXCdcIlw/XGFcYlxmXG5c clx0XHZcMFwwMFwwMDBceGFceGFiYgotK2NdIjsKLStjb25zdCBjaGFyMzJfdCBVMVtdID0gVSJh XFUwMDAwMDEwZFx1MDEwZFxcXFxcXCdcXFwiXFw/XFxhXFxiXFxmXFxuXFxyXFx0XFx2XFwwXFww MFxcMDAwXFx4YVxceGFiYlxuYyI7Ci0rY29uc3QgY2hhcjMyX3QgVTJbXSA9IFVSIip8KlthXAot K2IKLStjXSIKLStjXSp8IgotK2NdKnwqIjsKLStjb25zdCBjaGFyMzJfdCBVM1tdID0gVSJhYlxu Y11cIlxuY10qfFwiXG5jIjsKLSsKLStjb25zdCB3Y2hhcl90IEwwW10gPSBMUiJbYVwKLStcdTAx MGRcVTAwMDAwMTBEXFxcJ1wiXD9cYVxiXGZcblxyXHRcdlwwXDAwXDAwMFx4YVx4YWJiCi0rY10i OwotK2NvbnN0IHdjaGFyX3QgTDFbXSA9IEwiYVxVMDAwMDAxMGRcdTAxMGRcXFxcXFwnXFxcIlxc P1xcYVxcYlxcZlxcblxcclxcdFxcdlxcMFxcMDBcXDAwMFxceGFcXHhhYmJcbmMiOwotK2NvbnN0 IHdjaGFyX3QgTDJbXSA9IExSIip8KlthXAotK2IKLStjXSIKLStjXSp8IgotK2NdKnwqIjsKLStj b25zdCB3Y2hhcl90IEwzW10gPSBMImFiXG5jXVwiXG5jXSp8XCJcbmMiOwotKwotK2ludAotK21h aW4gKHZvaWQpCi0rewotKyAgaWYgKHNpemVvZiAoczApICE9IHNpemVvZiAoczEpCi0rICAgICAg fHwgX19idWlsdGluX21lbWNtcCAoczAsIHMxLCBzaXplb2YgKHMwKSkgIT0gMCkKLSsgICAgX19i dWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAoczIpICE9IHNpemVvZiAoczMpCi0rICAg ICAgfHwgX19idWlsdGluX21lbWNtcCAoczIsIHMzLCBzaXplb2YgKHMyKSkgIT0gMCkKLSsgICAg X19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAodDApICE9IHNpemVvZiAodDEpCi0r ICAgICAgfHwgX19idWlsdGluX21lbWNtcCAodDAsIHQxLCBzaXplb2YgKHQwKSkgIT0gMCkKLSsg ICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAodDIpICE9IHNpemVvZiAodDMp Ci0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAodDIsIHQzLCBzaXplb2YgKHQyKSkgIT0gMCkK LSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAodTApICE9IHNpemVvZiAo dTEpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAodTAsIHUxLCBzaXplb2YgKHUwKSkgIT0g MCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAodTIpICE9IHNpemVv ZiAodTMpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAodTIsIHUzLCBzaXplb2YgKHUyKSkg IT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAoVTApICE9IHNp emVvZiAoVTEpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAoVTAsIFUxLCBzaXplb2YgKFUw KSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAoVTIpICE9 IHNpemVvZiAoVTMpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAoVTIsIFUzLCBzaXplb2Yg KFUyKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAoTDAp ICE9IHNpemVvZiAoTDEpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAoTDAsIEwxLCBzaXpl b2YgKEwwKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVvZiAo TDIpICE9IHNpemVvZiAoTDMpCi0rICAgICAgfHwgX19idWlsdGluX21lbWNtcCAoTDIsIEwzLCBz aXplb2YgKEwyKSkgIT0gMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHNpemVv ZiAoUiIqW10qIikgIT0gMQotKyAgICAgIHx8IF9fYnVpbHRpbl9tZW1jbXAgKFIiKltdKiIsICIi LCAxKSAhPSAwKQotKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0t LS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L3Jhdy1zdHJpbmctMi5DLmpqCTIwMDgtMDktMTIg MTI6MTQ6NDIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L3Jh dy1zdHJpbmctMi5DCTIwMDgtMDktMTIgMTQ6MTg6MTQuMDAwMDAwMDAwICswMjAwCi1AQCAtMCww ICsxLDEwNCBAQAotKy8vIHsgZGctZG8gcnVuIH0KLSsvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9Yysr MHgiIH0KLSsKLSsjZGVmaW5lIFIKLSsjZGVmaW5lIHUKLSsjZGVmaW5lIHVSCi0rI2RlZmluZSBV Ci0rI2RlZmluZSBVUgotKyNkZWZpbmUgdTgKLSsjZGVmaW5lIHU4UgotKyNkZWZpbmUgTAotKyNk ZWZpbmUgTFIKLSsKLStjb25zdCBjaGFyIHMwMFtdID0gUiJbYV0iICJbYl0iOwotK2NvbnN0IGNo YXIgczAxW10gPSAiW2FdIiBSIipbYl0qIjsKLStjb25zdCBjaGFyIHMwMltdID0gUiJbYV0iIFIi W2JdIjsKLStjb25zdCBjaGFyIHMwM1tdID0gUiItW2FdLSIgdTgiW2JdIjsKLStjb25zdCBjaGFy IHMwNFtdID0gIlthXSIgdThSIk1OT1BRUlNUVVZXWFlaW2JdTU5PUFFSU1RVVldYWVoiOwotK2Nv bnN0IGNoYXIgczA1W10gPSBSIlthXSIgdThSInd4eXpBQkNERUZHSElKS0xbYl13eHl6QUJDREVG R0hJSktMIjsKLStjb25zdCBjaGFyIHMwNltdID0gdThSIjsoW2FdOygiICJbYl0iOwotK2NvbnN0 IGNoYXIgczA3W10gPSB1OCJbYV0iIFIiW2JdIjsKLStjb25zdCBjaGFyIHMwOFtdID0gdThSIlth XSIgUiJfe30jKCk8PiU6Oy4/KistW2JdX3t9IygpPD4lOjsuPyorLSI7Ci0rY29uc3QgY2hhciBz MDlbXSA9IHU4UiIvXiZ8fiE9LCInXFthXS9eJnx+IT0sIidcIiB1OCJbYl0iOwotK2NvbnN0IGNo YXIgczEwW10gPSB1OCJbYV0iIHU4UiIwMTIzNDU2Nzg5YWJjZGVmW2JdMDEyMzQ1Njc4OWFiY2Rl ZiI7Ci0rY29uc3QgY2hhciBzMTFbXSA9IHU4UiJnaGlqa2xtbm9wcXJzdHV2W2FdZ2hpamtsbW5v cHFyc3R1diIgdThSIndbYl13IjsKLSsKLStjb25zdCBjaGFyMTZfdCB1MDNbXSA9IFIiLVthXS0i IHUiW2JdIjsKLStjb25zdCBjaGFyMTZfdCB1MDRbXSA9ICJbYV0iIHVSIk1OT1BRUlNUVVZXWFla W2JdTU5PUFFSU1RVVldYWVoiOwotK2NvbnN0IGNoYXIxNl90IHUwNVtdID0gUiJbYV0iIHVSInd4 eXpBQkNERUZHSElKS0xbYl13eHl6QUJDREVGR0hJSktMIjsKLStjb25zdCBjaGFyMTZfdCB1MDZb XSA9IHVSIjsoW2FdOygiICJbYl0iOwotK2NvbnN0IGNoYXIxNl90IHUwN1tdID0gdSJbYV0iIFIi W2JdIjsKLStjb25zdCBjaGFyMTZfdCB1MDhbXSA9IHVSIlthXSIgUiJfe30jKCk8PiU6Oy4/Kist W2JdX3t9IygpPD4lOjsuPyorLSI7Ci0rY29uc3QgY2hhcjE2X3QgdTA5W10gPSB1UiIvXiZ8fiE9 LCInXFthXS9eJnx+IT0sIidcIiB1IltiXSI7Ci0rY29uc3QgY2hhcjE2X3QgdTEwW10gPSB1Ilth XSIgdVIiMDEyMzQ1Njc4OWFiY2RlZltiXTAxMjM0NTY3ODlhYmNkZWYiOwotK2NvbnN0IGNoYXIx Nl90IHUxMVtdID0gdVIiZ2hpamtsbW5vcHFyc3R1dlthXWdoaWprbG1ub3BxcnN0dXYiIHVSIndb Yl13IjsKLSsKLStjb25zdCBjaGFyMzJfdCBVMDNbXSA9IFIiLVthXS0iIFUiW2JdIjsKLStjb25z dCBjaGFyMzJfdCBVMDRbXSA9ICJbYV0iIFVSIk1OT1BRUlNUVVZXWFlaW2JdTU5PUFFSU1RVVldY WVoiOwotK2NvbnN0IGNoYXIzMl90IFUwNVtdID0gUiJbYV0iIFVSInd4eXpBQkNERUZHSElKS0xb Yl13eHl6QUJDREVGR0hJSktMIjsKLStjb25zdCBjaGFyMzJfdCBVMDZbXSA9IFVSIjsoW2FdOygi ICJbYl0iOwotK2NvbnN0IGNoYXIzMl90IFUwN1tdID0gVSJbYV0iIFIiW2JdIjsKLStjb25zdCBj aGFyMzJfdCBVMDhbXSA9IFVSIlthXSIgUiJfe30jKCk8PiU6Oy4/KistW2JdX3t9IygpPD4lOjsu PyorLSI7Ci0rY29uc3QgY2hhcjMyX3QgVTA5W10gPSBVUiIvXiZ8fiE9LCInXFthXS9eJnx+IT0s IidcIiBVIltiXSI7Ci0rY29uc3QgY2hhcjMyX3QgVTEwW10gPSBVIlthXSIgVVIiMDEyMzQ1Njc4 OWFiY2RlZltiXTAxMjM0NTY3ODlhYmNkZWYiOwotK2NvbnN0IGNoYXIzMl90IFUxMVtdID0gVVIi Z2hpamtsbW5vcHFyc3R1dlthXWdoaWprbG1ub3BxcnN0dXYiIFVSIndbYl13IjsKLSsKLStjb25z dCB3Y2hhcl90IEwwM1tdID0gUiItW2FdLSIgTCJbYl0iOwotK2NvbnN0IHdjaGFyX3QgTDA0W10g PSAiW2FdIiBMUiJNTk9QUVJTVFVWV1hZWltiXU1OT1BRUlNUVVZXWFlaIjsKLStjb25zdCB3Y2hh cl90IEwwNVtdID0gUiJbYV0iIExSInd4eXpBQkNERUZHSElKS0xbYl13eHl6QUJDREVGR0hJSktM IjsKLStjb25zdCB3Y2hhcl90IEwwNltdID0gTFIiOyhbYV07KCIgIltiXSI7Ci0rY29uc3Qgd2No YXJfdCBMMDdbXSA9IEwiW2FdIiBSIltiXSI7Ci0rY29uc3Qgd2NoYXJfdCBMMDhbXSA9IExSIlth XSIgUiJfe30jKCk8PiU6Oy4/KistW2JdX3t9IygpPD4lOjsuPyorLSI7Ci0rY29uc3Qgd2NoYXJf dCBMMDlbXSA9IExSIi9eJnx+IT0sIidcW2FdL14mfH4hPSwiJ1wiIEwiW2JdIjsKLStjb25zdCB3 Y2hhcl90IEwxMFtdID0gTCJbYV0iIExSIjAxMjM0NTY3ODlhYmNkZWZbYl0wMTIzNDU2Nzg5YWJj ZGVmIjsKLStjb25zdCB3Y2hhcl90IEwxMVtdID0gTFIiZ2hpamtsbW5vcHFyc3R1dlthXWdoaWpr bG1ub3BxcnN0dXYiIExSIndbYl13IjsKLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsjZGVm aW5lIFRFU1Qoc3RyLCB2YWwpIFwKLSsgIGlmIChzaXplb2YgKHN0cikgIT0gc2l6ZW9mICh2YWwp IFwKLSsgICAgICB8fCBfX2J1aWx0aW5fbWVtY21wIChzdHIsIHZhbCwgc2l6ZW9mIChzdHIpKSAh PSAwKSBcCi0rICAgIF9fYnVpbHRpbl9hYm9ydCAoKQotKyAgVEVTVCAoczAwLCAiYVtiXSIpOwot KyAgVEVTVCAoczAxLCAiW2FdYiIpOwotKyAgVEVTVCAoczAyLCAiYWIiKTsKLSsgIFRFU1QgKHMw MywgImFbYl0iKTsKLSsgIFRFU1QgKHMwNCwgIlthXWIiKTsKLSsgIFRFU1QgKHMwNSwgImFiIik7 Ci0rICBURVNUIChzMDYsICJhW2JdIik7Ci0rICBURVNUIChzMDcsICJbYV1iIik7Ci0rICBURVNU IChzMDgsICJhYiIpOwotKyAgVEVTVCAoczA5LCAiYVtiXSIpOwotKyAgVEVTVCAoczEwLCAiW2Fd YiIpOwotKyAgVEVTVCAoczExLCAiYWIiKTsKLSsgIFRFU1QgKHUwMywgdSJhW2JdIik7Ci0rICBU RVNUICh1MDQsIHUiW2FdYiIpOwotKyAgVEVTVCAodTA1LCB1ImFiIik7Ci0rICBURVNUICh1MDYs IHUiYVtiXSIpOwotKyAgVEVTVCAodTA3LCB1IlthXWIiKTsKLSsgIFRFU1QgKHUwOCwgdSJhYiIp OwotKyAgVEVTVCAodTA5LCB1ImFbYl0iKTsKLSsgIFRFU1QgKHUxMCwgdSJbYV1iIik7Ci0rICBU RVNUICh1MTEsIHUiYWIiKTsKLSsgIFRFU1QgKFUwMywgVSJhW2JdIik7Ci0rICBURVNUIChVMDQs IFUiW2FdYiIpOwotKyAgVEVTVCAoVTA1LCBVImFiIik7Ci0rICBURVNUIChVMDYsIFUiYVtiXSIp OwotKyAgVEVTVCAoVTA3LCBVIlthXWIiKTsKLSsgIFRFU1QgKFUwOCwgVSJhYiIpOwotKyAgVEVT VCAoVTA5LCBVImFbYl0iKTsKLSsgIFRFU1QgKFUxMCwgVSJbYV1iIik7Ci0rICBURVNUIChVMTEs IFUiYWIiKTsKLSsgIFRFU1QgKEwwMywgTCJhW2JdIik7Ci0rICBURVNUIChMMDQsIEwiW2FdYiIp OwotKyAgVEVTVCAoTDA1LCBMImFiIik7Ci0rICBURVNUIChMMDYsIEwiYVtiXSIpOwotKyAgVEVT VCAoTDA3LCBMIlthXWIiKTsKLSsgIFRFU1QgKEwwOCwgTCJhYiIpOwotKyAgVEVTVCAoTDA5LCBM ImFbYl0iKTsKLSsgIFRFU1QgKEwxMCwgTCJbYV1iIik7Ci0rICBURVNUIChMMTEsIEwiYWIiKTsK LSsgIHJldHVybiAwOwotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvcmF3LXN0cmlu Zy0zLkMuamoJMjAwOC0wOS0xMiAxMzoyNzowOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2MvdGVz dHN1aXRlL2crKy5kZy9leHQvcmF3LXN0cmluZy0zLkMJMjAwOC0wOS0xMiAxNDoxNzo1Ny4wMDAw MDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNTggQEAKLSsvLyBJZiBjKys5OCwgdGhlIHssdSx1OCxV LEx9UiBwcmVmaXggc2hvdWxkIGJlIHBhcnNlZCBhcyBzZXBhcmF0ZQotKy8vIHRva2VuLgotKy8v IHsgZGctZG8gY29tcGlsZSB9Ci0rLy8geyBkZy1vcHRpb25zICItc3RkPWMrKzk4IiB9Ci0rCi0r Y29uc3Qgdm9pZAkqczAJPSBSIlthXSI7CS8vIHsgZGctZXJyb3IgIndhcyBub3QgZGVjbGFyZWQi IH0KLSsJCS8vIHsgZGctZXJyb3IgImV4cGVjdGVkICcsJyBvciAnOyciICIiIHsgdGFyZ2V0ICot Ki0qIH0gNiB9Ci0rY29uc3Qgdm9pZAkqczEJPSB1UiJbYV0iOwkvLyB7IGRnLWVycm9yICJ3YXMg bm90IGRlY2xhcmVkIiB9Ci0rCQkvLyB7IGRnLWVycm9yICJleHBlY3RlZCAnLCcgb3IgJzsnIiAi IiB7IHRhcmdldCAqLSotKiB9IDggfQotK2NvbnN0IHZvaWQJKnMyCT0gVVIiW2FdIjsJLy8geyBk Zy1lcnJvciAid2FzIG5vdCBkZWNsYXJlZCIgfQotKwkJLy8geyBkZy1lcnJvciAiZXhwZWN0ZWQg JywnIG9yICc7JyIgIiIgeyB0YXJnZXQgKi0qLSogfSAxMCB9Ci0rY29uc3Qgdm9pZAkqczMJPSB1 OFIiW2FdIjsJLy8geyBkZy1lcnJvciAid2FzIG5vdCBkZWNsYXJlZCIgfQotKwkJLy8geyBkZy1l cnJvciAiZXhwZWN0ZWQgJywnIG9yICc7JyIgIiIgeyB0YXJnZXQgKi0qLSogfSAxMiB9Ci0rY29u c3Qgdm9pZAkqczQJPSBMUiJbYV0iOwkvLyB7IGRnLWVycm9yICJ3YXMgbm90IGRlY2xhcmVkIiB9 Ci0rCQkvLyB7IGRnLWVycm9yICJleHBlY3RlZCAnLCcgb3IgJzsnIiAiIiB7IHRhcmdldCAqLSot KiB9IDE0IH0KLSsKLStjb25zdCBpbnQJaTAJPSBSJ2EnOwkvLyB7IGRnLWVycm9yICJ3YXMgbm90 IGRlY2xhcmVkIiB9Ci0rCQkvLyB7IGRnLWVycm9yICJleHBlY3RlZCAnLCcgb3IgJzsnIiAiIiB7 IHRhcmdldCAqLSotKiB9IDE3IH0KLStjb25zdCBpbnQJaTEJPSB1UidhJzsJLy8geyBkZy1lcnJv ciAid2FzIG5vdCBkZWNsYXJlZCIgfQotKwkJLy8geyBkZy1lcnJvciAiZXhwZWN0ZWQgJywnIG9y ICc7JyIgIiIgeyB0YXJnZXQgKi0qLSogfSAxOSB9Ci0rY29uc3QgaW50CWkyCT0gVVInYSc7CS8v IHsgZGctZXJyb3IgIndhcyBub3QgZGVjbGFyZWQiIH0KLSsJCS8vIHsgZGctZXJyb3IgImV4cGVj dGVkICcsJyBvciAnOyciICIiIHsgdGFyZ2V0ICotKi0qIH0gMjEgfQotK2NvbnN0IGludAlpMwk9 IHU4UidhJzsJLy8geyBkZy1lcnJvciAid2FzIG5vdCBkZWNsYXJlZCIgfQotKwkJLy8geyBkZy1l cnJvciAiZXhwZWN0ZWQgJywnIG9yICc7JyIgIiIgeyB0YXJnZXQgKi0qLSogfSAyMyB9Ci0rY29u c3QgaW50CWk0CT0gTFInYSc7CS8vIHsgZGctZXJyb3IgIndhcyBub3QgZGVjbGFyZWQiIH0KLSsJ CS8vIHsgZGctZXJyb3IgImV4cGVjdGVkICcsJyBvciAnOyciICIiIHsgdGFyZ2V0ICotKi0qIH0g MjUgfQotKwotKyNkZWZpbmUgUgkiYSIKLSsjZGVmaW5lIHVSCSJiIgotKyNkZWZpbmUgVVIJImMi Ci0rI2RlZmluZSB1OFIJImQiCi0rI2RlZmluZSBMUgkiZSIKLSsKLStjb25zdCB2b2lkCSpzNQk9 IFIiW2FdIjsKLStjb25zdCB2b2lkCSpzNgk9IHVSIlthXSI7Ci0rY29uc3Qgdm9pZAkqczcJPSBV UiJbYV0iOwotK2NvbnN0IHZvaWQJKnM4CT0gdThSIlthXSI7Ci0rY29uc3Qgdm9pZAkqczkJPSBM UiJbYV0iOwotKwotKyN1bmRlZiBSCi0rI3VuZGVmIHVSCi0rI3VuZGVmIFVSCi0rI3VuZGVmIHU4 UgotKyN1bmRlZiBMUgotKwotKyNkZWZpbmUgUgkxICsKLSsjZGVmaW5lIHVSCTIgKwotKyNkZWZp bmUgVVIJMyArCi0rI2RlZmluZSB1OFIJNCArCi0rI2RlZmluZSBMUgk1ICsKLSsKLStjb25zdCBp bnQJaTUJPSBSJ2EnOwotK2NvbnN0IGludAlpNgk9IHVSJ2EnOwotK2NvbnN0IGludAlpNwk9IFVS J2EnOwotK2NvbnN0IGludAlpOAk9IHU4UidhJzsKLStjb25zdCBpbnQJaTkJPSBMUidhJzsKLSsK LStpbnQgbWFpbiAoKSB7fQotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9yYXctc3RyaW5n LTQuQy5qagkyMDA4LTA5LTEyIDEzOjI3OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy90ZXN0 c3VpdGUvZysrLmRnL2V4dC9yYXctc3RyaW5nLTQuQwkyMDA4LTA5LTEyIDE0OjE4OjIzLjAwMDAw MDAwMCArMDIwMAotQEAgLTAsMCArMSwyOCBAQAotKy8vIFIgaXMgbm90IGFwcGxpY2FibGUgZm9y IGNoYXJhY3RlciBsaXRlcmFscy4KLSsvLyB7IGRnLWRvIGNvbXBpbGUgfQotKy8vIHsgZGctb3B0 aW9ucyAiLXN0ZD1jKysweCIgfQotKwotK2NvbnN0IGludAlpMAk9IFInYSc7CS8vIHsgZGctZXJy b3IgIndhcyBub3QgZGVjbGFyZWQiIH0KLSsJCS8vIHsgZGctZXJyb3IgImV4cGVjdGVkICcsJyBv ciAnOyciICIiIHsgdGFyZ2V0ICotKi0qIH0gNSB9Ci0rY29uc3QgaW50CWkxCT0gdVInYSc7CS8v IHsgZGctZXJyb3IgIndhcyBub3QgZGVjbGFyZWQiIH0KLSsJCS8vIHsgZGctZXJyb3IgImV4cGVj dGVkICcsJyBvciAnOyciICIiIHsgdGFyZ2V0ICotKi0qIH0gNyB9Ci0rY29uc3QgaW50CWkyCT0g VVInYSc7CS8vIHsgZGctZXJyb3IgIndhcyBub3QgZGVjbGFyZWQiIH0KLSsJCS8vIHsgZGctZXJy b3IgImV4cGVjdGVkICcsJyBvciAnOyciICIiIHsgdGFyZ2V0ICotKi0qIH0gOSB9Ci0rY29uc3Qg aW50CWkzCT0gdThSJ2EnOwkvLyB7IGRnLWVycm9yICJ3YXMgbm90IGRlY2xhcmVkIiB9Ci0rCQkv LyB7IGRnLWVycm9yICJleHBlY3RlZCAnLCcgb3IgJzsnIiAiIiB7IHRhcmdldCAqLSotKiB9IDEx IH0KLStjb25zdCBpbnQJaTQJPSBMUidhJzsJLy8geyBkZy1lcnJvciAid2FzIG5vdCBkZWNsYXJl ZCIgfQotKwkJLy8geyBkZy1lcnJvciAiZXhwZWN0ZWQgJywnIG9yICc7JyIgIiIgeyB0YXJnZXQg Ki0qLSogfSAxMyB9Ci0rCi0rI2RlZmluZSBSCTEgKwotKyNkZWZpbmUgdVIJMiArCi0rI2RlZmlu ZSBVUgkzICsKLSsjZGVmaW5lIHU4Ugk0ICsKLSsjZGVmaW5lIExSCTUgKwotKwotK2NvbnN0IGlu dAlpNQk9IFInYSc7Ci0rY29uc3QgaW50CWk2CT0gdVInYSc7Ci0rY29uc3QgaW50CWk3CT0gVVIn YSc7Ci0rY29uc3QgaW50CWk4CT0gdThSJ2EnOwotK2NvbnN0IGludAlpOQk9IExSJ2EnOwotKwot K2ludCBtYWluICgpIHt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L3Jhdy1zdHJpbmct NS5DLmpqCTIwMDgtMDktMTIgMTM6NDk6NTguMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvZXh0L3Jhdy1zdHJpbmctNS5DCTIwMDgtMDktMTIgMTQ6MTg6MzIuMDAwMDAw MDAwICswMjAwCi1AQCAtMCwwICsxLDIzIEBACi0rLy8geyBkZy1kbyBjb21waWxlIH0KLSsvLyB7 IGRnLW9wdGlvbnMgIi1zdGQ9YysrMHgiIH0KLSsKLStjb25zdCB2b2lkICpzMCA9IFIiMDEyMzQ1 Njc4OWFiY2RlZmdbXTAxMjM0NTY3ODlhYmNkZWZnIjsKLSsJLy8geyBkZy1lcnJvciAicmF3IHN0 cmluZyBkZWxpbWl0ZXIgbG9uZ2VyIiAiIiB7IHRhcmdldCAqLSotKiB9IDQgfQotKwkvLyB7IGRn LWVycm9yICJzdHJheSIgIiIgeyB0YXJnZXQgKi0qLSogfSA0IH0KLStjb25zdCB2b2lkICpzMSA9 IFIiIFtdICI7Ci0rCS8vIHsgZGctZXJyb3IgImludmFsaWQgY2hhcmFjdGVyIiAiIiB7IHRhcmdl dCAqLSotKiB9IDcgfQotKwkvLyB7IGRnLWVycm9yICJzdHJheSIgIiIgeyB0YXJnZXQgKi0qLSog fSA3IH0KLStjb25zdCB2b2lkICpzMiA9IFIiCVtdCSI7Ci0rCS8vIHsgZGctZXJyb3IgImludmFs aWQgY2hhcmFjdGVyIiAiIiB7IHRhcmdldCAqLSotKiB9IDEwIH0KLSsJLy8geyBkZy1lcnJvciAi c3RyYXkiICIiIHsgdGFyZ2V0ICotKi0qIH0gMTAgfQotK2NvbnN0IHZvaWQgKnMzID0gUiJdW11d IjsKLSsJLy8geyBkZy1lcnJvciAiaW52YWxpZCBjaGFyYWN0ZXIiICIiIHsgdGFyZ2V0ICotKi0q IH0gMTMgfQotKwkvLyB7IGRnLWVycm9yICJzdHJheSIgIiIgeyB0YXJnZXQgKi0qLSogfSAxMyB9 Ci0rY29uc3Qgdm9pZCAqczQgPSBSIkBbXUAiOwotKwkvLyB7IGRnLWVycm9yICJpbnZhbGlkIGNo YXJhY3RlciIgIiIgeyB0YXJnZXQgKi0qLSogfSAxNiB9Ci0rCS8vIHsgZGctZXJyb3IgInN0cmF5 IiAiIiB7IHRhcmdldCAqLSotKiB9IDE2IH0KLStjb25zdCB2b2lkICpzNSA9IFIiJFtdJCI7Ci0r CS8vIHsgZGctZXJyb3IgImludmFsaWQgY2hhcmFjdGVyIiAiIiB7IHRhcmdldCAqLSotKiB9IDE5 IH0KLSsJLy8geyBkZy1lcnJvciAic3RyYXkiICIiIHsgdGFyZ2V0ICotKi0qIH0gMTkgfQotKwot K2ludCBtYWluICgpIHt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L3Jhdy1zdHJpbmct Ni5DLmpqCTIwMDgtMDktMTIgMTM6NTk6MzMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvZXh0L3Jhdy1zdHJpbmctNi5DCTIwMDgtMDktMTIgMTQ6MjA6MjEuMDAwMDAw MDAwICswMjAwCi1AQCAtMCwwICsxLDUgQEAKLSsvLyB7IGRnLWRvIGNvbXBpbGUgfQotKy8vIHsg ZGctb3B0aW9ucyAiLXN0ZD1jKysweCIgfQotKwotK2NvbnN0IHZvaWQgKnMwID0gUiJvdWNoW11v dUNoIjsJLy8geyBkZy1lcnJvciAiYXQgZW5kIG9mIGlucHV0IiB9Ci0rCS8vIHsgZGctZXJyb3Ig InVudGVybWluYXRlZCByYXcgc3RyaW5nIiAiIiB7IHRhcmdldCAqLSotKiB9IDYgfQotLS0tIGdj Yy90ZXN0c3VpdGUvZysrLmRnL2V4dC9yYXctc3RyaW5nLTcuQy5qagkyMDA4LTA5LTEyIDE0OjM0 OjU0LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9yYXctc3Ry aW5nLTcuQwkyMDA4LTA5LTEyIDE0OjM2OjQwLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwy MyBAQAotKy8vIFRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFmdGVyIFwgYW5kIGJlZm9yZSBuZXds aW5lIGV4dGVuc2lvbgotKy8vIGJyZWFrcyBmdWxsIGNvbXBsaWFuY2UgZm9yIHJhdyBzdHJpbmdz LgotKy8vIHsgZGctZG8gcnVuIHsgeGZhaWwgKi0qLSogfSB9Ci0rLy8geyBkZy1vcHRpb25zICIt c3RkPWMrKzB4IiB9Ci0rCi0rLy8gTm90ZSwgdGhlcmUgaXMgYSBzaW5nbGUgc3BhY2UgYWZ0ZXIg XCBvbiB0aGUgZm9sbG93aW5nIGxpbmUuCi0rY29uc3QgY2hhciAqczAgPSBSIltcIAotK10iOwot Ky8vIHsgZGctYm9ndXMgImJhY2tzbGFzaCBhbmQgbmV3bGluZSBzZXBhcmF0ZWQgYnkgc3BhY2Ui ICIiIHsgeGZhaWwgKi0qLSogfSA3IH0KLSsKLSsvLyBOb3RlLCB0aGVyZSBpcyBhIHNpbmdsZSB0 YWIgYWZ0ZXIgXCBvbiB0aGUgZm9sbG93aW5nIGxpbmUuCi0rY29uc3QgY2hhciAqczEgPSBSIltc CQotK10iOwotKy8vIHsgZGctYm9ndXMgImJhY2tzbGFzaCBhbmQgbmV3bGluZSBzZXBhcmF0ZWQg Ynkgc3BhY2UiICIiIHsgeGZhaWwgKi0qLSogfSAxMiB9Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkK LSt7Ci0rICBpZiAoX19idWlsdGluX3N0cmNtcCAoczAsICJcXCBcbiIpICE9IDAKLSsgICAgICB8 fCBfX2J1aWx0aW5fc3RyY21wIChzMSwgIlxcXHRcbiIpICE9IDApCi0rICAgIF9fYnVpbHRpbl9h Ym9ydCAoKTsKLSsgIHJldHVybiAwOwotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQv dXRmOC0xLkMuamoJMjAwOC0wOS0xMiAxMDowMTo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnY2Mv dGVzdHN1aXRlL2crKy5kZy9leHQvdXRmOC0xLkMJMjAwOC0wOS0xMiAxNDoxODo1My4wMDAwMDAw MDAgKzAyMDAKLUBAIC0wLDAgKzEsNDUgQEAKLSsvLyB7IGRnLWRvIHJ1biB9Ci0rLy8geyBkZy1y ZXF1aXJlLWljb252ICJJU08tODg1OS0yIiB9Ci0rLy8geyBkZy1vcHRpb25zICItc3RkPWMrKzB4 IC1mZXhlYy1jaGFyc2V0PUlTTy04ODU5LTIiIH0KLSsKLStjb25zdCBjaGFyICpzdHIxID0gImhc dTAwZTFcVTAwMDAwMTBEa3kgIjsKLStjb25zdCBjaGFyICpzdHIyID0gIlx1MDEwZFx1MDBFMXJr eVxuIjsKLStjb25zdCBjaGFyICpzdHIzID0gdTgiaFx1MDBlMVxVMDAwMDAxMERreSAiOwotK2Nv bnN0IGNoYXIgKnN0cjQgPSB1OCJcdTAxMGRcdTAwRTFya3lcbiI7Ci0rY29uc3QgY2hhciAqc3Ry NSA9ICJoXHUwMGUxXFUwMDAwMDEwRGt5ICIgIlx1MDEwZFx1MDBFMXJreVxuIjsKLStjb25zdCBj aGFyICpzdHI2ID0gdTgiaFx1MDBlMVxVMDAwMDAxMERreSAiICJcdTAxMGRcdTAwRTFya3lcbiI7 Ci0rY29uc3QgY2hhciAqc3RyNyA9ICJoXHUwMGUxXFUwMDAwMDEwRGt5ICIgdTgiXHUwMTBkXHUw MEUxcmt5XG4iOwotKyNkZWZpbmUgdTgKLStjb25zdCBjaGFyICpzdHI4ID0gdTgiaFx1MDBlMVxV MDAwMDAxMERreSAiIHU4Ilx1MDEwZFx1MDBFMXJreVxuIjsKLSsKLStjb25zdCBjaGFyIGxhdGlu Ml8xW10gPSAiXHg2OFx4ZTFceGU4XHg2Ylx4NzlceDIwIjsKLStjb25zdCBjaGFyIGxhdGluMl8y W10gPSAiXHhlOFx4ZTFceDcyXHg2Ylx4NzlcbiI7Ci0rY29uc3QgY2hhciB1dGY4XzFbXSA9ICJc eDY4XHhjM1x4YTFceGM0XHg4ZFx4NmJceDc5XHgyMCI7Ci0rY29uc3QgY2hhciB1dGY4XzJbXSA9 ICJceGM0XHg4ZFx4YzNceGExXHg3Mlx4NmJceDc5XG4iOwotKwotK2ludAotK21haW4gKHZvaWQp Ci0rewotKyAgaWYgKF9fYnVpbHRpbl9zdHJjbXAgKHN0cjEsIGxhdGluMl8xKSAhPSAwCi0rICAg ICAgfHwgX19idWlsdGluX3N0cmNtcCAoc3RyMiwgbGF0aW4yXzIpICE9IDAKLSsgICAgICB8fCBf X2J1aWx0aW5fc3RyY21wIChzdHIzLCB1dGY4XzEpICE9IDAKLSsgICAgICB8fCBfX2J1aWx0aW5f c3RyY21wIChzdHI0LCB1dGY4XzIpICE9IDAKLSsgICAgICB8fCBfX2J1aWx0aW5fc3RybmNtcCAo c3RyNSwgbGF0aW4yXzEsIHNpemVvZiAobGF0aW4yXzEpIC0gMSkgIT0gMAotKyAgICAgIHx8IF9f YnVpbHRpbl9zdHJjbXAgKHN0cjUgKyBzaXplb2YgKGxhdGluMl8xKSAtIDEsIGxhdGluMl8yKSAh PSAwCi0rICAgICAgfHwgX19idWlsdGluX3N0cm5jbXAgKHN0cjYsIHV0ZjhfMSwgc2l6ZW9mICh1 dGY4XzEpIC0gMSkgIT0gMAotKyAgICAgIHx8IF9fYnVpbHRpbl9zdHJjbXAgKHN0cjYgKyBzaXpl b2YgKHV0ZjhfMSkgLSAxLCB1dGY4XzIpICE9IDAKLSsgICAgICB8fCBfX2J1aWx0aW5fc3RybmNt cCAoc3RyNywgdXRmOF8xLCBzaXplb2YgKHV0ZjhfMSkgLSAxKSAhPSAwCi0rICAgICAgfHwgX19i dWlsdGluX3N0cmNtcCAoc3RyNyArIHNpemVvZiAodXRmOF8xKSAtIDEsIHV0ZjhfMikgIT0gMAot KyAgICAgIHx8IF9fYnVpbHRpbl9zdHJuY21wIChzdHI4LCB1dGY4XzEsIHNpemVvZiAodXRmOF8x KSAtIDEpICE9IDAKLSsgICAgICB8fCBfX2J1aWx0aW5fc3RyY21wIChzdHI4ICsgc2l6ZW9mICh1 dGY4XzEpIC0gMSwgdXRmOF8yKSAhPSAwKQotKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Ci0rICBp ZiAoc2l6ZW9mICgiYSIgdTgiYiJbMF0pICE9IDEKLSsgICAgICB8fCBzaXplb2YgKHU4ImEiICJi IlswXSkgIT0gMQotKyAgICAgIHx8IHNpemVvZiAodTgiYSIgdTgiYiJbMF0pICE9IDEKLSsgICAg ICB8fCBzaXplb2YgKCJhIiAiXHUwMTBkIikgIT0gMwotKyAgICAgIHx8IHNpemVvZiAoImEiIHU4 Ilx1MDEwZCIpICE9IDQKLSsgICAgICB8fCBzaXplb2YgKHU4ImEiICJcdTAxMGQiKSAhPSA0Ci0r ICAgICAgfHwgc2l6ZW9mICh1OCJhIiAiXHUwMTBkIikgIT0gNCkKLSsgICAgX19idWlsdGluX2Fi b3J0ICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC91 dGY4LTIuQy5qagkyMDA4LTA5LTEyIDExOjI3OjUxLjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy90 ZXN0c3VpdGUvZysrLmRnL2V4dC91dGY4LTIuQwkyMDA4LTA5LTEyIDE0OjE5OjAxLjAwMDAwMDAw MCArMDIwMAotQEAgLTAsMCArMSwyMSBAQAotKy8vIHsgZGctZG8gY29tcGlsZSB9Ci0rLy8geyBk Zy1vcHRpb25zICItc3RkPWMrKzB4IiB9Ci0rCi0rY29uc3QgY2hhcglzMFtdCT0gdTgiYWIiOwot K2NvbnN0IGNoYXIxNl90CXMxW10JPSB1OCJhYiI7CS8vIHsgZGctZXJyb3IgImZyb20gbm9uLXdp ZGUiIH0KLStjb25zdCBjaGFyMzJfdCAgczJbXSAgICA9IHU4ImFiIjsJLy8geyBkZy1lcnJvciAi ZnJvbSBub24td2lkZSIgfQotK2NvbnN0IHdjaGFyX3QgICBzM1tdICAgID0gdTgiYWIiOwkvLyB7 IGRnLWVycm9yICJmcm9tIG5vbi13aWRlIiB9Ci0rCi0rY29uc3QgY2hhciAgICAgIHQwWzBdICAg PSB1OCJhYiI7CS8vIHsgZGctZXJyb3IgImNoYXJzIGlzIHRvbyBsb25nIiB9Ci0rY29uc3QgY2hh ciAgICAgIHQxWzFdICAgPSB1OCJhYiI7CS8vIHsgZGctZXJyb3IgImNoYXJzIGlzIHRvbyBsb25n IiB9Ci0rY29uc3QgY2hhciAgICAgIHQyWzJdICAgPSB1OCJhYiI7CS8vIHsgZGctZXJyb3IgImNo YXJzIGlzIHRvbyBsb25nIiB9Ci0rY29uc3QgY2hhciAgICAgIHQzWzNdICAgPSB1OCJhYiI7Ci0r Y29uc3QgY2hhciAgICAgIHQ0WzRdICAgPSB1OCJhYiI7Ci0rCi0rY29uc3QgY2hhciAgICAgIHUw WzBdICAgPSB1OCJcdTIxNjAuIjsJLy8geyBkZy1lcnJvciAiY2hhcnMgaXMgdG9vIGxvbmciIH0K LStjb25zdCBjaGFyICAgICAgdTFbMV0gICA9IHU4Ilx1MjE2MC4iOwkvLyB7IGRnLWVycm9yICJj aGFycyBpcyB0b28gbG9uZyIgfQotK2NvbnN0IGNoYXIgICAgICB1MlsyXSAgID0gdTgiXHUyMTYw LiI7CS8vIHsgZGctZXJyb3IgImNoYXJzIGlzIHRvbyBsb25nIiB9Ci0rY29uc3QgY2hhciAgICAg IHUzWzNdICAgPSB1OCJcdTIxNjAuIjsJLy8geyBkZy1lcnJvciAiY2hhcnMgaXMgdG9vIGxvbmci IH0KLStjb25zdCBjaGFyICAgICAgdTRbNF0gICA9IHU4Ilx1MjE2MC4iOwkvLyB7IGRnLWVycm9y ICJjaGFycyBpcyB0b28gbG9uZyIgfQotK2NvbnN0IGNoYXIgICAgICB1NVs1XSAgID0gdTgiXHUy MTYwLiI7Ci0rY29uc3QgY2hhciAgICAgIHU2WzZdICAgPSB1OCJcdTIxNjAuIjsKLS0tLSBnY2Mv dGVzdHN1aXRlL2crKy5kZy9leHQvdXRmLWJhZGNvbmNhdDIuQy5qagkyMDA4LTA5LTEyIDExOjI4 OjI2LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC91dGYtYmFk Y29uY2F0Mi5DCTIwMDgtMDktMTIgMTQ6MTk6MTcuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsx LDE1IEBACi0rLy8gVGVzdCB1bnN1cHBvcnRlZCBjb25jYXRlbmF0aW9uIG9mIFVURi04IHN0cmlu ZyBsaXRlcmFscy4KLSsvLyB7IGRnLWRvIGNvbXBpbGUgfQotKy8vIHsgZGctb3B0aW9ucyAiLXN0 ZD1jKysweCIgfQotKwotK2NvbnN0IHZvaWQgKnMwCT0gdTgiYSIgICAiYiI7Ci0rY29uc3Qgdm9p ZCAqczEJPSAgICJhIiB1OCJiIjsKLStjb25zdCB2b2lkICpzMgk9IHU4ImEiIHU4ImIiOwotK2Nv bnN0IHZvaWQgKnMzCT0gdTgiYSIgIHUiYiI7CS8vIHsgZGctZXJyb3IgIm5vbi1zdGFuZGFyZCBj b25jYXRlbmF0aW9uIiB9Ci0rY29uc3Qgdm9pZCAqczQJPSAgdSJhIiB1OCJiIjsJLy8geyBkZy1l cnJvciAibm9uLXN0YW5kYXJkIGNvbmNhdGVuYXRpb24iIH0KLStjb25zdCB2b2lkICpzNQk9IHU4 ImEiICBVImIiOwkvLyB7IGRnLWVycm9yICJub24tc3RhbmRhcmQgY29uY2F0ZW5hdGlvbiIgfQot K2NvbnN0IHZvaWQgKnM2CT0gIFUiYSIgdTgiYiI7CS8vIHsgZGctZXJyb3IgIm5vbi1zdGFuZGFy ZCBjb25jYXRlbmF0aW9uIiB9Ci0rY29uc3Qgdm9pZCAqczcJPSB1OCJhIiAgTCJiIjsJLy8geyBk Zy1lcnJvciAibm9uLXN0YW5kYXJkIGNvbmNhdGVuYXRpb24iIH0KLStjb25zdCB2b2lkICpzOAk9 ICBMImEiIHU4ImIiOwkvLyB7IGRnLWVycm9yICJub24tc3RhbmRhcmQgY29uY2F0ZW5hdGlvbiIg fQotKwotK2ludCBtYWluICgpIHt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L3V0Zi1k Zmx0Mi5DLmpqCTIwMDgtMDktMTIgMTE6MzI6MDMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvZXh0L3V0Zi1kZmx0Mi5DCTIwMDgtMDktMTIgMTQ6MTk6MjguMDAwMDAw MDAwICswMjAwCi1AQCAtMCwwICsxLDEyIEBACi0rLy8gSW4gQysrMHgsIHRoZSB1OCBwcmVmaXgg c2hvdWxkIGJlIHBhcnNlZCBhcyBzZXBhcmF0ZSB0b2tlbnMuCi0rLy8geyBkZy1kbyBjb21waWxl IH0KLSsvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9YysrOTgiIH0KLSsKLStjb25zdCB2b2lkCSpzMCA9 IHU4ImEiOwkJLy8geyBkZy1lcnJvciAid2FzIG5vdCBkZWNsYXJlZCIgfQotKwkJLy8geyBkZy1l cnJvciAiZXhwZWN0ZWQgJywnIG9yICc7JyIgIiIgeyB0YXJnZXQgKi0qLSogfSA1IH0KLSsKLSsj ZGVmaW5lIHU4CSJhIgotKwotK2NvbnN0IHZvaWQJKnMxID0gdTgiYSI7Ci0rCi0raW50IG1haW4g KCkge30KCmRpZmYgLS1naXQgYS9nY2M0NC12dGEtcmg1MjE5OTEucGF0Y2ggYi9nY2M0NC12dGEt cmg1MjE5OTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMjZhZDEuLjAw MDAwMDAKLS0tIGEvZ2NjNDQtdnRhLXJoNTIxOTkxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MTgxICswLDAgQEAKLTIwMDktMDktMzAgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQu Y29tPgotCi0JKiB0cmVlLWRmYS5jIChyZWZlcmVuY2VkX3Zhcl9wKTogTmV3LgotCShyZW1vdmVf cmVmZXJlbmNlZF92YXIpOiBDbGVhciByZW5hbWluZyBtYXJrLgotCSogdHJlZS1mbG93LmggKHJl ZmVyZW5jZWRfdmFyX3ApOiBEZWNsYXJlLgotCShzeW1fbWFya2VkX2Zvcl9yZW5hbWluZywgY2xl YXJfbWFya19mb3JfcmVuYW1pbmcpOiBEZWNsYXJlLgotCSogdHJlZS1pbnRvLXNzYS5jIChjbGVh cl9tYXJrX2Zvcl9yZW5hbWluZyk6IE5ldy4KLQkoc3ltX21hcmtlZF9mb3JfcmVuYW1pbmcpOiBO ZXcuCi0JKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChwb3Bfc3RtdF9jaGFuZ2VzKTogUmVzZXQgZGVi dWcgc3RtdHMKLQl0aGF0IHJlZmVyZW5jZSBvdGhlcndpc2UtdW5yZWZlcmVuY2VkIHZhcmlhYmxl cy4KLQotCSogZ2NjLmRnL2RlYnVnL3Z0YS0xLmM6IE5ldy4KLQotLS0tIGdjYy90cmVlLWRmYS5j Lm9yaWcJMjAwOS0wOS0zMCAwNDowMDo0NS4wMDAwMDAwMDAgLTAzMDAKLSsrKyBnY2MvdHJlZS1k ZmEuYwkyMDA5LTA5LTMwIDA0OjAxOjIxLjAwMDAwMDAwMCAtMDMwMAotQEAgLTYzOSw2ICs2Mzks MjMgQEAgc2V0X2RlZmF1bHRfZGVmICh0cmVlIHZhciwgdHJlZSBkZWYpCi0gICAgU1NBX05BTUVf SVNfREVGQVVMVF9ERUYgKGRlZikgPSB0cnVlOwotIH0KLSAKLSsvKiBSZXR1cm4gVFJVRSBpZiBW QVIgaXMgaW4gdGhlIHNldCBvZiByZWZlcmVuY2VkIHZhcmlhYmxlcy4gICovCi0rCi0rYm9vbAot K3JlZmVyZW5jZWRfdmFyX3AgKHRyZWUgdmFyKQotK3sKLSsgIHN0cnVjdCB0cmVlX2RlY2xfbWlu aW1hbCBpbjsKLSsKLSsgIGdjY19hc3NlcnQgKERFQ0xfUCAodmFyKSk7Ci0rCi0rICBpZiAoIWdp bXBsZV9yZWZlcmVuY2VkX3ZhcnMgKGNmdW4pKQotKyAgICByZXR1cm4gZmFsc2U7Ci0rCi0rICBp bi51aWQgPSBERUNMX1VJRCAodmFyKTsKLSsgIHJldHVybiBodGFiX2ZpbmRfd2l0aF9oYXNoIChn aW1wbGVfcmVmZXJlbmNlZF92YXJzIChjZnVuKSwgJmluLCBpbi51aWQpCi0rICAgICE9IE5VTEw7 Ci0rfQotKwotIC8qIEFkZCBWQVIgdG8gdGhlIGxpc3Qgb2YgcmVmZXJlbmNlZCB2YXJpYWJsZXMg aWYgaXQgaXNuJ3QgYWxyZWFkeSB0aGVyZS4gICovCi0gCi0gYm9vbAotQEAgLTY4Niw2ICs3MDMs MTUgQEAgcmVtb3ZlX3JlZmVyZW5jZWRfdmFyICh0cmVlIHZhcikKLSAgIHZvaWQgKipsb2M7Ci0g ICB1bnNpZ25lZCBpbnQgdWlkID0gREVDTF9VSUQgKHZhcik7Ci0gCi0rICAvKiBTeW1ib2xzIHRo YXQgZGVjYXllZCBmcm9tIGFkZHJlc3NhYmxlIHRvIGdpbXBsZSByZWdpc3RlcnMsIGJ1dAotKyAg ICAgdGhhdCBhcmUgcmVmZXJlbmNlZCBvbmx5IGluIGRlYnVnIHN0bXRzLCBtYXkgYmUgbWFya2Vk IGZvcgotKyAgICAgcmVuYW1pbmcsIGJ1dCByZW5hbWluZyB0aGVtIHdvdWxkIGZhaWwgb25jZSB0 aGV5J3JlIG5vIGxvbmdlcgotKyAgICAgcmVmZXJlbmNlZC4gIExldCB0aGVtIHJlc3QgaW4gcGVh Y2UuICAqLwotKyAgaWYgKFRSRUVfQ09ERSAodmFyKSAhPSBTU0FfTkFNRQotKyAgICAgICYmIGlz X2dpbXBsZV9yZWcgKHZhcikKLSsgICAgICAmJiBzeW1fbWFya2VkX2Zvcl9yZW5hbWluZyAodmFy KSkKLSsgICAgY2xlYXJfbWFya19mb3JfcmVuYW1pbmcgKHZhcik7Ci0rCi0gICBjbGVhcl9jYWxs X2Nsb2JiZXJlZCAodmFyKTsKLSAgIGJpdG1hcF9jbGVhcl9iaXQgKGdpbXBsZV9jYWxsX3VzZWRf dmFycyAoY2Z1biksIHVpZCk7Ci0gICBpZiAoKHZfYW5uID0gdmFyX2FubiAodmFyKSkpCi0tLS0g Z2NjL3RyZWUtZmxvdy5oLm9yaWcJMjAwOS0wOS0zMCAwNDowMDo0Ni4wMDAwMDAwMDAgLTAzMDAK LSsrKyBnY2MvdHJlZS1mbG93LmgJMjAwOS0wOS0zMCAwNDowMToyMS4wMDAwMDAwMDAgLTAzMDAK LUBAIC03NzMsNiArNzczLDcgQEAgZXh0ZXJuIHZvaWQgZHVtcF9yZWZlcmVuY2VkX3ZhcnMgKEZJ TEUgKgotIGV4dGVybiB2b2lkIGR1bXBfdmFyaWFibGUgKEZJTEUgKiwgdHJlZSk7Ci0gZXh0ZXJu IHZvaWQgZGVidWdfdmFyaWFibGUgKHRyZWUpOwotIGV4dGVybiB0cmVlIGdldF92aXJ0dWFsX3Zh ciAodHJlZSk7Ci0rZXh0ZXJuIGJvb2wgcmVmZXJlbmNlZF92YXJfcCAodHJlZSk7Ci0gZXh0ZXJu IGJvb2wgYWRkX3JlZmVyZW5jZWRfdmFyICh0cmVlKTsKLSBleHRlcm4gdm9pZCByZW1vdmVfcmVm ZXJlbmNlZF92YXIgKHRyZWUpOwotIGV4dGVybiB2b2lkIG1hcmtfc3ltYm9sc19mb3JfcmVuYW1p bmcgKGdpbXBsZSk7Ci1AQCAtODg5LDcgKzg5MCw5IEBAIGJvb2wgbmFtZV9yZWdpc3RlcmVkX2Zv cl91cGRhdGVfcCAodHJlZSkKLSBiaXRtYXAgc3NhX25hbWVzX3RvX3JlcGxhY2UgKHZvaWQpOwot IHZvaWQgcmVsZWFzZV9zc2FfbmFtZV9hZnRlcl91cGRhdGVfc3NhICh0cmVlKTsKLSB2b2lkIGNv bXB1dGVfZ2xvYmFsX2xpdmVpbiAoYml0bWFwLCBiaXRtYXApOwotK2Jvb2wgc3ltX21hcmtlZF9m b3JfcmVuYW1pbmcgKHRyZWUpOwotIHZvaWQgbWFya19zeW1fZm9yX3JlbmFtaW5nICh0cmVlKTsK LSt2b2lkIGNsZWFyX21hcmtfZm9yX3JlbmFtaW5nICh0cmVlKTsKLSB2b2lkIG1hcmtfc2V0X2Zv cl9yZW5hbWluZyAoYml0bWFwKTsKLSB0cmVlIGdldF9jdXJyZW50X2RlZiAodHJlZSk7Ci0gdm9p ZCBzZXRfY3VycmVudF9kZWYgKHRyZWUsIHRyZWUpOwotLS0tIGdjYy90cmVlLWludG8tc3NhLmMu b3JpZwkyMDA5LTA5LTMwIDA0OjAwOjQ1LjAwMDAwMDAwMCAtMDMwMAotKysrIGdjYy90cmVlLWlu dG8tc3NhLmMJMjAwOS0wOS0zMCAwNDowMToyMS4wMDAwMDAwMDAgLTAzMDAKLUBAIC0yODc0LDYg KzI4NzQsMzcgQEAgbWFya19zeW1fZm9yX3JlbmFtaW5nICh0cmVlIHN5bSkKLSAgICAgfQotIH0K LSAKLSsvKiBVbnJlZ2lzdGVyIHN5bWJvbCBTWU0gdG8gYmUgcmVuYW1lZCBieSB1cGRhdGVfc3Nh LiAgU1lNIG11c3QgYmUgYQotKyAgIGdpbXBsZSByZWdpc3Rlci4gICovCi0rCi0rdm9pZAotK2Ns ZWFyX21hcmtfZm9yX3JlbmFtaW5nICh0cmVlIHN5bSkKLSt7Ci0rICBpZiAobmVlZF90b19pbml0 aWFsaXplX3VwZGF0ZV9zc2FfcCkKLSsgICAgcmV0dXJuOwotKwotKyAgZ2NjX2Fzc2VydCAoaXNf Z2ltcGxlX3JlZyAoc3ltKSk7Ci0rCi0rICBiaXRtYXBfY2xlYXJfYml0IChzeW1zX3RvX3JlbmFt ZSwgREVDTF9VSUQgKHN5bSkpOwotKwotKyAgaWYgKGJpdG1hcF9lbXB0eV9wIChzeW1zX3RvX3Jl bmFtZSkpCi0rICAgIEJJVE1BUF9GUkVFIChzeW1zX3RvX3JlbmFtZSk7Ci0rfQotKwotKy8qIFJl dHVybiB0cnVlIGlmIGEgc3ltYm9sIGlzIG1hcmtlZCBmb3IgcmVuYW1pbmcuICBUaGlzIGlzIGFu Ci0rICAgZXhwb3J0ZWQgaW50ZXJmYWNlIGZvciBzeW1ib2xfbWFya2VkX2Zvcl9yZW5hbWluZy4g ICovCi0rCi0rYm9vbAotK3N5bV9tYXJrZWRfZm9yX3JlbmFtaW5nICh0cmVlIHN5bSkKLSt7Ci0r ICBpZiAobmVlZF90b19pbml0aWFsaXplX3VwZGF0ZV9zc2FfcCkKLSsgICAgcmV0dXJuIGZhbHNl OwotKwotKyAgaWYgKCFzeW1zX3RvX3JlbmFtZSkKLSsgICAgcmV0dXJuIGZhbHNlOwotKwotKyAg cmV0dXJuIHN5bWJvbF9tYXJrZWRfZm9yX3JlbmFtaW5nIChzeW0pOwotK30KLSAKLSAvKiBSZWdp c3RlciBhbGwgdGhlIHN5bWJvbHMgaW4gU0VUIHRvIGJlIHJlbmFtZWQgYnkgdXBkYXRlX3NzYS4g ICovCi0gCi0tLS0gZ2NjL3RyZWUtc3NhLW9wZXJhbmRzLmMub3JpZwkyMDA5LTA5LTMwIDA0OjAw OjQ1LjAwMDAwMDAwMCAtMDMwMAotKysrIGdjYy90cmVlLXNzYS1vcGVyYW5kcy5jCTIwMDktMDkt MzAgMDQ6MDE6MjEuMDAwMDAwMDAwIC0wMzAwCi1AQCAtMjcxNiw5ICsyNzE2LDIyIEBAIHBvcF9z dG10X2NoYW5nZXMgKGdpbXBsZSAqc3RtdF9wKQotICAgbWFya19kaWZmZXJlbmNlX2Zvcl9yZW5h bWluZyAoc3RvcmVzLCBidWYtPnN0b3Jlcyk7Ci0gCi0gICAvKiBNYXJrIGFsbCB0aGUgbmFrZWQg R0lNUExFIHJlZ2lzdGVyIG9wZXJhbmRzIGZvciByZW5hbWluZy4gICovCi0tICBGT1JfRUFDSF9T U0FfVFJFRV9PUEVSQU5EIChvcCwgc3RtdCwgaXRlciwgU1NBX09QX0RFRnxTU0FfT1BfVVNFKQot LSAgICBpZiAoREVDTF9QIChvcCkpCi0tICAgICAgbWFya19zeW1fZm9yX3JlbmFtaW5nIChvcCk7 Ci0rICBpZiAoZ2ltcGxlX2RlYnVnX2JpbmRfcCAoc3RtdCkpCi0rICAgIHsKLSsgICAgICBGT1Jf RUFDSF9TU0FfVFJFRV9PUEVSQU5EIChvcCwgc3RtdCwgaXRlciwgU1NBX09QX0RFRnxTU0FfT1Bf VVNFKQotKwlpZiAoREVDTF9QIChvcCkgJiYgIXJlZmVyZW5jZWRfdmFyX3AgKG9wKSkKLSsJICB7 Ci0rCSAgICBnaW1wbGVfZGVidWdfYmluZF9yZXNldF92YWx1ZSAoc3RtdCk7Ci0rCSAgICB1cGRh dGVfc3RtdCAoc3RtdCk7Ci0rCSAgICBicmVhazsKLSsJICB9Ci0rICAgIH0KLSsgIGVsc2UKLSsg ICAgewotKyAgICAgIEZPUl9FQUNIX1NTQV9UUkVFX09QRVJBTkQgKG9wLCBzdG10LCBpdGVyLCBT U0FfT1BfREVGfFNTQV9PUF9VU0UpCi0rCWlmIChERUNMX1AgKG9wKSkKLSsJICBtYXJrX3N5bV9m b3JfcmVuYW1pbmcgKG9wKTsKLSsgICAgfQotIAotICAgLyogRklYTUUsIG5lZWQgdG8gYWRkIG1v cmUgZmluYWxpemVycyBoZXJlLiAgQ2xlYW51cCBFSCBpbmZvLAotICAgICAgcmVjb21wdXRlIGlu dmFyaWFudHMgZm9yIGFkZHJlc3MgZXhwcmVzc2lvbnMsIGFkZAotLS0tIGdjYy90ZXN0c3VpdGUv Z2NjLmRnL2RlYnVnL3Z0YS0xLmMJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK LSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9kZWJ1Zy92dGEtMS5jCTIwMDktMDktMzAgMDQ6MDE6 MjEuMDAwMDAwMDAwIC0wMzAwCi1AQCAtMCwwICsxLDM1IEBACi0rLyogaHR0cHM6Ly9idWd6aWxs YS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD01MjE5OTEjYzUKLSsKLSsgICBEaXN0aWxsZWQg ZnJvbSBMaW51eCBYRlMgc291cmNlIGNvZGUuICBmb28sIGlubGluZWQgaW50byBiYXIsIGVuZHMK LSsgICB1cCB3aXRoIGRlYnVnIHN0bXRzIHJlZmVyZW5jaW5nIHRoZSBhZGRyZXNzYWJsZSB2YXJp YWJsZSBiLgotKyAgIE9wdGltaXphdGlvbiBtYWRlIGl0IG5vbi1hZGRyZXNzYWJsZSwgYW5kIHRo ZW4gY29tcGxldGVseSBvcHRpbWl6ZWQKLSsgICBhd2F5LCBiZWZvcmUgd2UgZ290IGEgY2hhbmNl IHRvIHJlbmFtZSAoYW5kIGRpc2NhcmQpIHRoZSBvY2N1cnJlbmNlCi0rICAgaW4gdGhlIGRlYnVn IHN0bXQuICBXaGVuIHdlIGRpZCwgd2UgY3Jhc2hlZCwgYXR0ZW1wdGluZyB0byByZW5hbWUKLSsg ICBhbiB1bnJlZmVyZW5jZSB2YXJpYWJsZS4gICovCi0rCi0rLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZyIgfSAqLwotKwotK3N0YXRpYyBpbmxpbmUgaW50 Ci0rZm9vICh2b2lkICp4LCB1bnNpZ25lZCB5KQotK3sKLSsgIHVuc2lnbmVkIHogPSAqKHVuc2ln bmVkIGxvbmcgKikgeCAlIHk7Ci0rICAqKHVuc2lnbmVkIGxvbmcgKikgeCA9ICoodW5zaWduZWQg bG9uZyAqKSB4IC8geTsKLSsgIHJldHVybiB6OwotK30KLSsKLStzdHJ1Y3QgUwotK3sKLSsgIHVu c2lnbmVkIHQ7Ci0rfTsKLSsKLSt2b2lkCi0rYmFyIChzdHJ1Y3QgUyAqeCwgaW50ICp5KQotK3sK LSsgIGludCBhID0gMDsKLSsgIHVuc2lnbmVkIGxvbmcgYiA9IHgtPnQ7Ci0rICBmb28gKCZiLCB4 LT50KTsKLSsgIGZvciAoOzsgYSsrKQotKyAgICBpZiAoYikKLSsgICAgICAqeSA9IDE7Ci0rfQoK ZGlmZiAtLWdpdCBhL2ltcG9ydC5sb2cgYi9pbXBvcnQubG9nCmluZGV4IGNkM2QxMGQuLjM1Njgw M2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC5sb2cKKysrIGIvaW1wb3J0LmxvZwpAQCAtMSwyICsxLDMg QEAKIGdjYy00XzRfMC0wXzM6SEVBRDpnY2MtNC40LjAtMC4zLnNyYy5ycG06MTIzMjEzMDg0MQog Z2NjLTRfNF8wLTU6SEVBRDpnY2MtNC40LjAtNS5zcmMucnBtOjEyNDIyOTExMjYKK2djYy00XzRf Mi0xNF9mYzEzOkhFQUQ6Z2NjLTQuNC4yLTE0LmZjMTMuc3JjLnJwbToxMjU5OTMwNDY0CgpkaWZm IC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggODJlYmM1ZS4uNjNkNWUxZSAxMDA2NDQK LS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDIgKzEsMiBAQAogMjY1OWYwOWMyZTQz ZWY4YjdkNDQwNjMyMTc1M2YxYjIgIGZhc3RqYXItMC45Ny50YXIuZ3oKLTE4ZmUyMmRiOWUwNTVi MTNiOWNjMjkwZjZjYmJmMWZhICBnY2MtNC40LjEtMjAwOTEwMDEudGFyLmJ6MgorZGNmZjEzN2Q1 YmE4ZTcwY2Q1Y2Y4ZmNkMGIzNGVkZTYgIGdjYy00LjQuMi0yMDA5MTIwNC50YXIuYnoyCg==