Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:2100 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 78528 invoked from network); 30 May 2003 23:25:25 -0000 Received: from unknown (HELO cs181147.pp.htv.fi) (213.243.181.147) by pb1.pair.com with SMTP; 30 May 2003 23:25:25 -0000 Received: from localhost (jani@localhost) by cs181147.pp.htv.fi (8.11.6/8.11.6) with ESMTP id h4UNPSV09807 for ; Sat, 31 May 2003 02:25:28 +0300 X-Authentication-Warning: cs181147.pp.htv.fi: jani owned process doing -bs Date: Sat, 31 May 2003 02:25:28 +0300 (EEST) Sender: jani@cs181147.pp.htv.fi Reply-To: Jani Taskinen To: internals@lists.php.net Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-204106827-2121859922-1054337128=:30017" Subject: FD patch revert of revert.. From: sniper@iki.fi (Jani Taskinen) ---204106827-2121859922-1054337128=:30017 Content-Type: TEXT/PLAIN; charset=US-ASCII Hopefully attached. --Jani -- Donate at: https://www.paypal.com/affil/pal=sniper%40php.net All donated funds will be used for recreation :) ---204106827-2121859922-1054337128=:30017 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=fd_patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=fd_patch PyBmZF9wYXRjaA0KSW5kZXg6IE5FV1MNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9waHA0L05FV1Msdg0KcmV0cmll dmluZyByZXZpc2lvbiAxLjEyNDcuMi4yMjcNCmRpZmYgLXUgLXIxLjEyNDcu Mi4yMjcgTkVXUw0KLS0tIE5FV1MJMzAgTWF5IDIwMDMgMjE6NDA6MTMgLTAw MDAJMS4xMjQ3LjIuMjI3DQorKysgTkVXUwkzMCBNYXkgMjAwMyAyMzoyMjow NiAtMDAwMA0KQEAgLTEsNiArMSw3IEBADQogUEhQIDQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTkVXUw0KIHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8 fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8 fHx8fHx8fHwNCiA/PyBKdWwgMjAwMywgVmVyc2lvbiA0LjMuMw0KKy0gSW1w cm92ZWQgdGhlIGVuZ2luZSB0byB1c2UgUE9TSVgvc29ja2V0IElPIHdoZXJl IGZlYXNpYmxlLiAoU2FzY2hhKQ0KIC0gSW1wcm92ZWQgTlNBUEkgU0FQSSBt b2R1bGUgKFV3ZSBTY2hpbmRsZXIpDQogICAuIHBocDRfaW5pdCAobWFnbnVz LmNvbmYpOiBuZXcgcGFyYW1ldGVyIHRvIHNldCBhbHRlcm5hdGUgcGF0aCB0 byBwaHAuaW5pLg0KICAgICAocGhwX2luaT0iL3BhdGgvdG8vcGhwLmluaSIp DQpAQCAtOSw5ICsxMCw2IEBADQogICAgIChTZWUgc2FwaS9uc2FwaS9uc2Fw aS1yZWFkbWUudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uKQ0KICAgLiBBZGRl ZCBzdXBwb3J0IGZvciB2aXJ0dWFsKCkNCiAgIC4gU3luY2VkICRfU0VSVkVS IHZhcmlhYmxlcyB0byBiZSBzaW1pbGFyIHRvIEFwYWNoZSB2YXJpYWJsZXMN Ci0tIEFkZGVkIGxvbmcgb3B0aW9ucyBpbnRvIENMSSAmIENHSSAoZS5nLiAt LXZlcnNpb24pLiAoTWFyY3VzKQ0KLS0gQWRkZWQgbmV3IGNvbW1hbmQgbGlu ZSBwYXJhbWV0ZXJzIC1CLCAtRiwgLVIgYW5kIC1FIHdoaWNoIGFsbG93IHRv IHByb2Nlc3MgDQotICBzdGRpbiBsaW5lIGJ5IGxpbmUgKFNlZSAncGhwIC1o JyBvciAnbWFuIHBocCcgZm9yIG1vcmUpLiAoTWFyY3VzKQ0KIC0gQWRkZWQg REJBIGhhbmRsZXIgJ2luaWZpbGUnIHRvIHN1cHBvcnQgaW5pIGZpbGVzLiAo TWFyY3VzKQ0KIC0gQWRkZWQgYSAiREVCVUciIG5vdGUgdG8gJ3BocCAtdicg b3V0cHV0IHdoZW4gLS1lbmFibGUtZGVidWcgaXMgdXNlZC4gKERlcmljaykN CiAtIEZpeGVkIGV4dC95YXogdG8gbm90IGxvZyB1bmxlc3MgeWF6LmxvZ19m aWxlIGlzIHNldC4gKEFkYW0gRGlja21laXNzKQ0KSW5kZXg6IFplbmQvZmxl eC5za2wNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvcmVw b3NpdG9yeS9aZW5kL2ZsZXguc2tsLHYNCnJldHJpZXZpbmcgcmV2aXNpb24g MS4yNy40LjMNCmRpZmYgLXUgLXIxLjI3LjQuMyBmbGV4LnNrbA0KLS0tIFpl bmQvZmxleC5za2wJMjEgTWF5IDIwMDMgMDc6NTM6MjAgLTAwMDAJMS4yNy40 LjMNCisrKyBaZW5kL2ZsZXguc2tsCTMwIE1heSAyMDAzIDIzOjIyOjA3IC0w MDAwDQpAQCAtMSw3ICsxLDcgQEANCiAvKiBBIExleGljYWwgc2Nhbm5lciBn ZW5lcmF0ZWQgYnkgZmxleCAqLw0KIA0KIC8qIFNjYW5uZXIgc2tlbGV0b24g dmVyc2lvbjoNCi0gKiAkSGVhZGVyOiAvcmVwb3NpdG9yeS9aZW5kL2ZsZXgu c2tsLHYgMS4yNy40LjMgMjAwMy8wNS8yMSAwNzo1MzoyMCB6ZWV2IEV4cCAk DQorICogJEhlYWRlcjogL3JlcG9zaXRvcnkvWmVuZC9mbGV4LnNrbCx2IDEu MjcuNC4yIDIwMDMvMDUvMTMgMjM6NTg6MTkgc2FzIEV4cCAkDQogICovDQog DQogI2RlZmluZSBGTEVYX1NDQU5ORVINCkBAIC05LDYgKzksMjIgQEANCiAj ZGVmaW5lIFlZX0ZMRVhfTUlOT1JfVkVSU0lPTiA1DQogDQogJS0NCisNCisv KiBmb3IgSEFWRV8qICovDQorI2luY2x1ZGUgInplbmQuaCINCisNCisvKiBm b3IgcmVjdiAqLw0KKyNpZmRlZiBIQVZFX1NZU19UWVBFU19IDQorIyBpbmNs dWRlIDxzeXMvdHlwZXMuaD4NCisjZW5kaWYNCisjaWZkZWYgSEFWRV9TWVNf U09DS0VUX0gNCisjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4gDQorI2VuZGlm DQorDQorLyogZm9yIHJlYWQgKi8NCisjaWZkZWYgSEFWRV9VTklTVERfSA0K KyMgaW5jbHVkZSA8dW5pc3RkLmg+DQorI2VuZGlmDQogI2luY2x1ZGUgPHN0 ZGlvLmg+DQogJSoNCiANCkBAIC0xNTQsNyArMTcwLDcgQEANCiBzdHJ1Y3Qg eXlfYnVmZmVyX3N0YXRlDQogCXsNCiAlLQ0KLQlGSUxFICp5eV9pbnB1dF9m aWxlOw0KKwlzdHJ1Y3QgX3plbmRfZmlsZV9oYW5kbGUgKnl5X2lucHV0X2Zp bGU7DQogJSsNCiAJaXN0cmVhbSogeXlfaW5wdXRfZmlsZTsNCiAlKg0KQEAg LTE3OCwxMyArMTk0LDYgQEANCiAJICovDQogCWludCB5eV9pc19vdXJfYnVm ZmVyOw0KIA0KLQkvKiBXaGV0aGVyIHRoaXMgaXMgYW4gImludGVyYWN0aXZl IiBpbnB1dCBzb3VyY2U7IGlmIHNvLCBhbmQNCi0JICogaWYgd2UncmUgdXNp bmcgc3RkaW8gZm9yIGlucHV0LCB0aGVuIHdlIHdhbnQgdG8gdXNlIGdldGMo KQ0KLQkgKiBpbnN0ZWFkIG9mIGZyZWFkKCksIHRvIG1ha2Ugc3VyZSB3ZSBz dG9wIGZldGNoaW5nIGlucHV0IGFmdGVyDQotCSAqIGVhY2ggbmV3bGluZS4N Ci0JICovDQotCWludCB5eV9pc19pbnRlcmFjdGl2ZTsNCi0NCiAJLyogV2hl dGhlciB3ZSdyZSBjb25zaWRlcmVkIHRvIGJlIGF0IHRoZSBiZWdpbm5pbmcg b2YgYSBsaW5lLg0KIAkgKiBJZiBzbywgJ14nIHJ1bGVzIHdpbGwgYmUgYWN0 aXZlIG9uIHRoZSBuZXh0IG1hdGNoLCBvdGhlcndpc2UNCiAJICogbm90Lg0K QEAgLTIzOCwzMSArMjQ3LDE5IEBADQogI2RlZmluZSB5eV9pbml0IFNDTkco aW5pdCkNCiAjZGVmaW5lIHl5X3N0YXJ0IFNDTkcoc3RhcnQpDQogDQotI2lm ZGVmIFpUUw0KLSNkZWZpbmUgVFNSTUxTX0QJdm9pZCAqKip0c3JtX2xzDQot I2RlZmluZSBUU1JNTFNfREMJLCBUU1JNTFNfRA0KLSNkZWZpbmUgVFNSTUxT X0MJdHNybV9scw0KLSNkZWZpbmUgVFNSTUxTX0NDCSwgVFNSTUxTX0MNCi0j ZWxzZQ0KLSNkZWZpbmUgVFNSTUxTX0QNCi0jZGVmaW5lIFRTUk1MU19EQw0K LSNkZWZpbmUgVFNSTUxTX0MNCi0jZGVmaW5lIFRTUk1MU19DQw0KLSNlbmRp Zg0KLQ0KIC8qIEZsYWcgd2hpY2ggaXMgdXNlZCB0byBhbGxvdyB5eXdyYXAo KSdzIHRvIGRvIGJ1ZmZlciBzd2l0Y2hlcw0KICAqIGluc3RlYWQgb2Ygc2V0 dGluZyB1cCBhIGZyZXNoIHl5aW4uICBBIGJpdCBvZiBhIGhhY2sgLi4uDQog ICovDQogLyogc3RhdGljIGludCB5eV9kaWRfYnVmZmVyX3N3aXRjaF9vbl9l b2Y7ICovDQogI2RlZmluZSB5eV9kaWRfYnVmZmVyX3N3aXRjaF9vbl9lb2Yg U0NORyhfeXlfZGlkX2J1ZmZlcl9zd2l0Y2hfb25fZW9mKQ0KIA0KLXZvaWQg eXlyZXN0YXJ0IFlZX1BST1RPKCggRklMRSAqaW5wdXRfZmlsZSBUU1JNTFNf REMgKSk7DQordm9pZCB5eXJlc3RhcnQgWVlfUFJPVE8oKCBzdHJ1Y3QgX3pl bmRfZmlsZV9oYW5kbGUgICppbnB1dF9maWxlIFRTUk1MU19EQyApKTsNCiAN CiB2b2lkIHl5X3N3aXRjaF90b19idWZmZXIgWVlfUFJPVE8oKCBZWV9CVUZG RVJfU1RBVEUgbmV3X2J1ZmZlciBUU1JNTFNfREMgKSk7DQogdm9pZCB5eV9s b2FkX2J1ZmZlcl9zdGF0ZSBZWV9QUk9UTygoIFRTUk1MU19EICkpOw0KLVlZ X0JVRkZFUl9TVEFURSB5eV9jcmVhdGVfYnVmZmVyIFlZX1BST1RPKCggRklM RSAqZmlsZSwgaW50IHNpemUgVFNSTUxTX0RDICkpOw0KK1lZX0JVRkZFUl9T VEFURSB5eV9jcmVhdGVfYnVmZmVyIFlZX1BST1RPKCggc3RydWN0IF96ZW5k X2ZpbGVfaGFuZGxlICpmaWxlLCBpbnQgc2l6ZSBUU1JNTFNfREMgKSk7DQog dm9pZCB5eV9kZWxldGVfYnVmZmVyIFlZX1BST1RPKCggWVlfQlVGRkVSX1NU QVRFIGIgVFNSTUxTX0RDICkpOw0KLXZvaWQgeXlfaW5pdF9idWZmZXIgWVlf UFJPVE8oKCBZWV9CVUZGRVJfU1RBVEUgYiwgRklMRSAqZmlsZSBUU1JNTFNf REMgKSk7DQordm9pZCB5eV9pbml0X2J1ZmZlciBZWV9QUk9UTygoIFlZX0JV RkZFUl9TVEFURSBiLCBzdHJ1Y3QgX3plbmRfZmlsZV9oYW5kbGUgKmZpbGUg VFNSTUxTX0RDICkpOw0KIHZvaWQgeXlfZmx1c2hfYnVmZmVyIFlZX1BST1RP KCggWVlfQlVGRkVSX1NUQVRFIGIgVFNSTUxTX0RDICkpOw0KICNkZWZpbmUg WVlfRkxVU0hfQlVGRkVSIHl5X2ZsdXNoX2J1ZmZlciggeXlfY3VycmVudF9i dWZmZXIgVFNSTUxTX0NDICkNCiANCkBAIC0yODIsNyArMjc5LDYgQEANCiAJ eyBcDQogCWlmICggISB5eV9jdXJyZW50X2J1ZmZlciApIFwNCiAJCXl5X2N1 cnJlbnRfYnVmZmVyID0geXlfY3JlYXRlX2J1ZmZlciggU0NORyh5eV9pbiks IFlZX0JVRl9TSVpFIFRTUk1MU19DQyApOyBcDQotCXl5X2N1cnJlbnRfYnVm ZmVyLT55eV9pc19pbnRlcmFjdGl2ZSA9IGlzX2ludGVyYWN0aXZlOyBcDQog CX0NCiANCiAjZGVmaW5lIHl5X3NldF9ib2woYXRfYm9sKSBcDQpAQCAtMzIy LDExICszMTgsNiBAQA0KIHN0YXRpYyB2b2lkIHl5X2ZhdGFsX2Vycm9yIFlZ X1BST1RPKCggeXljb25zdCBjaGFyIG1zZ1tdICkpOw0KICUqDQogDQotI3Vu ZGVmIFRTUk1MU19EDQotI3VuZGVmIFRTUk1MU19EQw0KLSN1bmRlZiBUU1JN TFNfQw0KLSN1bmRlZiBUU1JNTFNfQ0MNCi0NCiAvKiBEb25lIGFmdGVyIHRo ZSBjdXJyZW50IHBhdHRlcm4gaGFzIGJlZW4gbWF0Y2hlZCBhbmQgYmVmb3Jl IHRoZQ0KICAqIGNvcnJlc3BvbmRpbmcgYWN0aW9uIC0gc2V0cyB1cCB5eXRl eHQuDQogICovDQpAQCAtNDM1LDE5ICs0MjYsMjUgQEANCiAvKiBDb3B5IHdo YXRldmVyIHRoZSBsYXN0IHJ1bGUgbWF0Y2hlZCB0byB0aGUgc3RhbmRhcmQg b3V0cHV0LiAqLw0KIA0KICNpZm5kZWYgRUNITw0KLSUtIFN0YW5kYXJkIChu b24tQysrKSBkZWZpbml0aW9uDQotLyogVGhpcyB1c2VkIHRvIGJlIGFuIGZw dXRzKCksIGJ1dCBzaW5jZSB0aGUgc3RyaW5nIG1pZ2h0IGNvbnRhaW4gTlVM J3MsDQotICogd2Ugbm93IHVzZSBmd3JpdGUoKS4NCi0gKi8NCi0jZGVmaW5l IEVDSE8gKHZvaWQpIGZ3cml0ZSggeXl0ZXh0LCB5eWxlbmcsIDEsIFNDTkco eXlfb3V0KSApDQotJSsgQysrIGRlZmluaXRpb24NCi0jZGVmaW5lIEVDSE8g TGV4ZXJPdXRwdXQoIHl5dGV4dCwgeXlsZW5nICkNCi0lKg0KKyNkZWZpbmUg RUNITw0KICNlbmRpZg0KIA0KIC8qIEdldHMgaW5wdXQgYW5kIHN0dWZmcyBp dCBpbnRvICJidWYiLiAgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZCwgb3Ig WVlfTlVMTCwNCiAgKiBpcyByZXR1cm5lZCBpbiAicmVzdWx0Ii4NCiAgKi8N CisNCisjZGVmaW5lIFlZX0lOUFVUKGJ1ZixyZXN1bHQsbWF4X3NpemUpIGRv IHsJCQkJXA0KKwlyZXN1bHQgPSB5eWluLT50eXBlID09IFpFTkRfSEFORExF X0ZEID8gCQkJXA0KKwkJCXJlYWQoeXlpbi0+aGFuZGxlLmZkLCBidWYsIG1h eF9zaXplKQkJXA0KKwkJCTogeXlpbi0+dHlwZSA9PSBaRU5EX0hBTkRMRV9G UCA/IAkJCVwNCisJCQlmcmVhZChidWYsIDEsIG1heF9zaXplLCB5eWluLT5o YW5kbGUuZnApCVwNCisJCQk6IHl5aW4tPnR5cGUgPT0gWkVORF9IQU5ETEVf U09DS0VUX0ZEID8JCVwNCisJCQlyZWN2KHl5aW4tPmhhbmRsZS5mZCwgYnVm LCBtYXhfc2l6ZSwgMCkJCVwNCisJCQk6IC0xOwkJCQkJCQkJCQlcDQorCWlm IChyZXN1bHQgPCAwKQkJCQkJCQkJCQlcDQorCQlZWV9GQVRBTF9FUlJPUigi aW5wdXQgaW4gZmxleCBzY2FubmVyIGZhaWxlZCIpOwlcDQorfSB3aGlsZSAo MCkNCisNCiAjaWZuZGVmIFlZX0lOUFVUDQogI2RlZmluZSBZWV9JTlBVVChi dWYscmVzdWx0LG1heF9zaXplKSBcDQogJSUgZnJlYWQoKS9yZWFkKCkgZGVm aW5pdGlvbiBvZiBZWV9JTlBVVCBnb2VzIGhlcmUgdW5sZXNzIHdlJ3JlIGRv aW5nIEMrKw0KQEAgLTUyNCw2ICs1MjEsNyBAQA0KIAkJaWYgKCAhIHl5X3N0 YXJ0ICkNCiAJCQl5eV9zdGFydCA9IDE7CS8qIGZpcnN0IHN0YXJ0IHN0YXRl ICovDQogDQorI2lmIDANCiAJCWlmICggISBTQ05HKHl5X2luKSApDQogJS0N CiAJCQlTQ05HKHl5X2luKSA9IHN0ZGluOw0KQEAgLTUzNyw2ICs1MzUsNyBA QA0KICUrDQogCQkJU0NORyh5eV9vdXQpID0gJmNvdXQ7DQogJSoNCisjZW5k aWYNCiANCiAJCWlmICggISB5eV9jdXJyZW50X2J1ZmZlciApDQogCQkJeXlf Y3VycmVudF9idWZmZXIgPQ0KQEAgLTExMTEsMTAgKzExMTAsMTAgQEANCiAN CiAlLQ0KICNpZmRlZiBZWV9VU0VfUFJPVE9TDQotdm9pZCB5eXJlc3RhcnQo IEZJTEUgKmlucHV0X2ZpbGUgVFNSTUxTX0RDICkNCit2b2lkIHl5cmVzdGFy dCggc3RydWN0IF96ZW5kX2ZpbGVfaGFuZGxlICppbnB1dF9maWxlIFRTUk1M U19EQyApDQogI2Vsc2UNCiB2b2lkIHl5cmVzdGFydCggaW5wdXRfZmlsZSBU U1JNTFNfQ0MgKQ0KLUZJTEUgKmlucHV0X2ZpbGU7DQorc3RydWN0IF96ZW5k X2ZpbGVfaGFuZGxlICppbnB1dF9maWxlOw0KICNlbmRpZg0KICUrDQogdm9p ZCB5eUZsZXhMZXhlcjo6eXlyZXN0YXJ0KCBpc3RyZWFtKiBpbnB1dF9maWxl IFRTUk1MU19EQyApDQpAQCAtMTE4NywxMCArMTE4NiwxMCBAQA0KIA0KICUt DQogI2lmZGVmIFlZX1VTRV9QUk9UT1MNCi1ZWV9CVUZGRVJfU1RBVEUgeXlf Y3JlYXRlX2J1ZmZlciggRklMRSAqZmlsZSwgaW50IHNpemUgVFNSTUxTX0RD ICkNCitZWV9CVUZGRVJfU1RBVEUgeXlfY3JlYXRlX2J1ZmZlciggc3RydWN0 IF96ZW5kX2ZpbGVfaGFuZGxlICpmaWxlLCBpbnQgc2l6ZSBUU1JNTFNfREMg KQ0KICNlbHNlDQogWVlfQlVGRkVSX1NUQVRFIHl5X2NyZWF0ZV9idWZmZXIo IGZpbGUsIHNpemUgVFNSTUxTX0NDICkNCi1GSUxFICpmaWxlOw0KK3N0cnVj dCBfemVuZF9maWxlX2hhbmRsZSAqZmlsZTsNCiBpbnQgc2l6ZTsNCiAjaWZk ZWYgWlRTDQogdm9pZCAqKip0c3JtX2xzOw0KQEAgLTEyNTMsMjMgKzEyNTIs MjEgQEANCiAlLQ0KICNpZm5kZWYgWVlfQUxXQVlTX0lOVEVSQUNUSVZFDQog I2lmbmRlZiBZWV9ORVZFUl9JTlRFUkFDVElWRQ0KLWV4dGVybiBpbnQgaXNh dHR5IFlZX1BST1RPKCggaW50ICkpOw0KICNlbmRpZg0KICNlbmRpZg0KIA0K ICNpZmRlZiBZWV9VU0VfUFJPVE9TDQotdm9pZCB5eV9pbml0X2J1ZmZlcigg WVlfQlVGRkVSX1NUQVRFIGIsIEZJTEUgKmZpbGUgVFNSTUxTX0RDICkNCit2 b2lkIHl5X2luaXRfYnVmZmVyKCBZWV9CVUZGRVJfU1RBVEUgYiwgc3RydWN0 IF96ZW5kX2ZpbGVfaGFuZGxlICpmaWxlIFRTUk1MU19EQyApDQogI2Vsc2UN CiB2b2lkIHl5X2luaXRfYnVmZmVyKCBiLCBmaWxlIFRTUk1MU19DQyApDQog WVlfQlVGRkVSX1NUQVRFIGI7DQotRklMRSAqZmlsZTsNCitzdHJ1Y3QgX3pl bmRfZmlsZV9oYW5kbGUgKmZpbGU7DQogI2lmZGVmIFpUUw0KIHZvaWQgKioq dHNybV9sczsNCiAjZW5kaWYNCiAjZW5kaWYNCiANCiAlKw0KLWV4dGVybiAi QyIgaW50IGlzYXR0eSBZWV9QUk9UTygoIGludCApKTsNCiB2b2lkIHl5Rmxl eExleGVyOjp5eV9pbml0X2J1ZmZlciggWVlfQlVGRkVSX1NUQVRFIGIsIGlz dHJlYW0qIGZpbGUgVFNSTUxTX0RDICkNCiAlKg0KIA0KQEAgLTEyODAsMTcg KzEyNzcsNyBAQA0KIAliLT55eV9maWxsX2J1ZmZlciA9IDE7DQogDQogJS0N Ci0jaWYgWVlfQUxXQVlTX0lOVEVSQUNUSVZFDQotCWItPnl5X2lzX2ludGVy YWN0aXZlID0gMTsNCi0jZWxzZQ0KLSNpZiBZWV9ORVZFUl9JTlRFUkFDVElW RQ0KLQliLT55eV9pc19pbnRlcmFjdGl2ZSA9IDA7DQotI2Vsc2UNCi0JYi0+ eXlfaXNfaW50ZXJhY3RpdmUgPSBmaWxlID8gKGlzYXR0eSggZmlsZW5vKGZp bGUpICkgPiAwKSA6IDA7DQotI2VuZGlmDQotI2VuZGlmDQogJSsNCi0JYi0+ eXlfaXNfaW50ZXJhY3RpdmUgPSAoZmlsZSA9PSAoaXN0cmVhbSAqKSAmY2lu KSA/IDEgOiAwOw0KICUqDQogCX0NCiANCkBAIC0xMzYzLDcgKzEzNTAsNiBA QA0KIAliLT55eV9pc19vdXJfYnVmZmVyID0gMDsNCiAJYi0+eXlfaW5wdXRf ZmlsZSA9IDA7DQogCWItPnl5X25fY2hhcnMgPSBiLT55eV9idWZfc2l6ZTsN Ci0JYi0+eXlfaXNfaW50ZXJhY3RpdmUgPSAwOw0KIAliLT55eV9hdF9ib2wg PSAxOw0KIAliLT55eV9maWxsX2J1ZmZlciA9IDA7DQogCWItPnl5X2J1ZmZl cl9zdGF0dXMgPSBZWV9CVUZGRVJfTkVXOw0KSW5kZXg6IFplbmQvemVuZC5j DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3JlcG9zaXRv cnkvWmVuZC96ZW5kLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjE2Mi4y LjUNCmRpZmYgLXUgLXIxLjE2Mi4yLjUgemVuZC5jDQotLS0gWmVuZC96ZW5k LmMJMjEgTWF5IDIwMDMgMDc6NTM6MjAgLTAwMDAJMS4xNjIuMi41DQorKysg WmVuZC96ZW5kLmMJMzAgTWF5IDIwMDMgMjM6MjI6MDcgLTAwMDANCkBAIC00 OCw2ICs0OCw3IEBADQogWkVORF9BUEkgaW50ICgqemVuZF9wcmludGYpKGNv bnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsNCiBaRU5EX0FQSSB6ZW5kX3dyaXRl X2Z1bmNfdCB6ZW5kX3dyaXRlOw0KIFpFTkRfQVBJIEZJTEUgKigqemVuZF9m b3BlbikoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNoYXIgKipvcGVuZWRfcGF0 aCk7DQorWkVORF9BUEkgemVuZF9ib29sICgqemVuZF9vcGVuKShjb25zdCBj aGFyICpmaWxlbmFtZSwgemVuZF9maWxlX2hhbmRsZSAqKTsNCiBaRU5EX0FQ SSB2b2lkICgqemVuZF9ibG9ja19pbnRlcnJ1cHRpb25zKSh2b2lkKTsNCiBa RU5EX0FQSSB2b2lkICgqemVuZF91bmJsb2NrX2ludGVycnVwdGlvbnMpKHZv aWQpOw0KIFpFTkRfQVBJIHZvaWQgKCp6ZW5kX3RpY2tzX2Z1bmN0aW9uKShp bnQgdGlja3MpOw0KQEAgLTI1NSw2ICsyNTYsMTggQEANCiB9DQogDQogDQor c3RhdGljIHplbmRfYm9vbCB6ZW5kX29wZW5fd3JhcHBlcihjb25zdCBjaGFy ICpmaWxlbmFtZSwgemVuZF9maWxlX2hhbmRsZSAqZmgpDQorew0KKwlmaC0+ aGFuZGxlLmZwID0gemVuZF9mb3BlbihmaWxlbmFtZSwgJmZoLT5vcGVuZWRf cGF0aCk7DQorDQorCWlmIChmaC0+aGFuZGxlLmZwKSB7DQorCQlmaC0+dHlw ZSA9IFpFTkRfSEFORExFX0ZQOw0KKwkJcmV0dXJuIFNVQ0NFU1M7DQorCX0N CisJcmV0dXJuIEZBSUxVUkU7DQorfQ0KKw0KKw0KIHN0YXRpYyBGSUxFICp6 ZW5kX2ZvcGVuX3dyYXBwZXIoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNoYXIg KipvcGVuZWRfcGF0aCkNCiB7DQogCWlmIChvcGVuZWRfcGF0aCkgew0KQEAg LTQzMiw2ICs0NDUsMTAgQEANCiAJemVuZF9mb3BlbiA9IHV0aWxpdHlfZnVu Y3Rpb25zLT5mb3Blbl9mdW5jdGlvbjsNCiAJaWYgKCF6ZW5kX2ZvcGVuKSB7 DQogCQl6ZW5kX2ZvcGVuID0gemVuZF9mb3Blbl93cmFwcGVyOw0KKwl9DQor CXplbmRfb3BlbiA9IHV0aWxpdHlfZnVuY3Rpb25zLT5vcGVuX2Z1bmN0aW9u Ow0KKwlpZiAoIXplbmRfb3Blbikgew0KKwkJemVuZF9vcGVuID0gemVuZF9v cGVuX3dyYXBwZXI7DQogCX0NCiAJemVuZF9tZXNzYWdlX2Rpc3BhdGNoZXJf cCA9IHV0aWxpdHlfZnVuY3Rpb25zLT5tZXNzYWdlX2hhbmRsZXI7DQogCXpl bmRfYmxvY2tfaW50ZXJydXB0aW9ucyA9IHV0aWxpdHlfZnVuY3Rpb25zLT5i bG9ja19pbnRlcnJ1cHRpb25zOw0KSW5kZXg6IFplbmQvemVuZC5oDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVu ZC96ZW5kLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjE2NC4yLjcNCmRp ZmYgLXUgLXIxLjE2NC4yLjcgemVuZC5oDQotLS0gWmVuZC96ZW5kLmgJMjEg TWF5IDIwMDMgMDc6NTM6MjAgLTAwMDAJMS4xNjQuMi43DQorKysgWmVuZC96 ZW5kLmgJMzAgTWF5IDIwMDMgMjM6MjI6MDcgLTAwMDANCkBAIC0xNyw3ICsx Nyw3IEBADQogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQogKi8N CiANCi0vKiAkSWQ6IHplbmQuaCx2IDEuMTY0LjIuNyAyMDAzLzA1LzIxIDA3 OjUzOjIwIHplZXYgRXhwICQgKi8NCisvKiAkSWQ6IHplbmQuaCx2IDEuMTY0 LjIuNiAyMDAzLzA1LzEzIDIzOjA4OjE5IHNhcyBFeHAgJCAqLw0KIA0KICNp Zm5kZWYgWkVORF9IDQogI2RlZmluZSBaRU5EX0gNCkBAIC0yNzksNiArMjc5 LDcgQEANCiAJaW50ICgqaGFuZGxlX3Byb3BlcnR5X3NldCkoemVuZF9wcm9w ZXJ0eV9yZWZlcmVuY2UgKnByb3BlcnR5X3JlZmVyZW5jZSwgenZhbCAqdmFs dWUpOw0KIH07DQogDQorc3RydWN0IF96ZW5kX2ZpbGVfaGFuZGxlOw0KIA0K IA0KIHR5cGVkZWYgc3RydWN0IF96ZW5kX3V0aWxpdHlfZnVuY3Rpb25zIHsN CkBAIC0yOTIsNiArMjkzLDcgQEANCiAJaW50ICgqZ2V0X2NvbmZpZ3VyYXRp b25fZGlyZWN0aXZlKShjaGFyICpuYW1lLCB1aW50IG5hbWVfbGVuZ3RoLCB6 dmFsICpjb250ZW50cyk7DQogCXZvaWQgKCp0aWNrc19mdW5jdGlvbikoaW50 IHRpY2tzKTsNCiAJdm9pZCAoKm9uX3RpbWVvdXQpKGludCBzZWNvbmRzIFRT Uk1MU19EQyk7DQorCXplbmRfYm9vbCAoKm9wZW5fZnVuY3Rpb24pKGNvbnN0 IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgX3plbmRfZmlsZV9oYW5kbGUgKik7 DQogfSB6ZW5kX3V0aWxpdHlfZnVuY3Rpb25zOw0KIA0KIAkJDQpAQCAtNDE3 LDYgKzQxOSw3IEBADQogZXh0ZXJuIFpFTkRfQVBJIGludCAoKnplbmRfcHJp bnRmKShjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7DQogZXh0ZXJuIFpFTkRf QVBJIHplbmRfd3JpdGVfZnVuY190IHplbmRfd3JpdGU7DQogZXh0ZXJuIFpF TkRfQVBJIEZJTEUgKigqemVuZF9mb3BlbikoY29uc3QgY2hhciAqZmlsZW5h bWUsIGNoYXIgKipvcGVuZWRfcGF0aCk7DQorZXh0ZXJuIFpFTkRfQVBJIHpl bmRfYm9vbCAoKnplbmRfb3BlbikoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0 cnVjdCBfemVuZF9maWxlX2hhbmRsZSAqZmgpOw0KIGV4dGVybiBaRU5EX0FQ SSB2b2lkICgqemVuZF9ibG9ja19pbnRlcnJ1cHRpb25zKSh2b2lkKTsNCiBl eHRlcm4gWkVORF9BUEkgdm9pZCAoKnplbmRfdW5ibG9ja19pbnRlcnJ1cHRp b25zKSh2b2lkKTsNCiBleHRlcm4gWkVORF9BUEkgdm9pZCAoKnplbmRfdGlj a3NfZnVuY3Rpb24pKGludCB0aWNrcyk7DQpJbmRleDogWmVuZC96ZW5kX2Nv bXBpbGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9y ZXBvc2l0b3J5L1plbmQvemVuZF9jb21waWxlLmgsdg0KcmV0cmlldmluZyBy ZXZpc2lvbiAxLjE0NC40LjQNCmRpZmYgLXUgLXIxLjE0NC40LjQgemVuZF9j b21waWxlLmgNCi0tLSBaZW5kL3plbmRfY29tcGlsZS5oCTIxIE1heSAyMDAz IDA3OjUzOjIwIC0wMDAwCTEuMTQ0LjQuNA0KKysrIFplbmQvemVuZF9jb21w aWxlLmgJMzAgTWF5IDIwMDMgMjM6MjI6MDcgLTAwMDANCkBAIC0xNzUsNyAr MTc1LDcgQEANCiAJemVuZF9ib29sIGZyZWVfZmlsZW5hbWU7DQogfSB6ZW5k X2ZpbGVfaGFuZGxlOw0KIA0KLQ0KKyNkZWZpbmUgWkVORF9JU19WQUxJRF9G SUxFX0hBTkRMRShobikgICAoKCgoaG4pLT50eXBlID09IFpFTkRfSEFORExF X0ZEIHx8IChobiktPnR5cGUgPT0gWkVORF9IQU5ETEVfU09DS0VUX0ZEKSAm JiAoaG4pLT5oYW5kbGUuZmQgPj0gMCkgfHwgKChobiktPnR5cGUgPT0gWkVO RF9IQU5ETEVfRlAgJiYgKGhuKS0+aGFuZGxlLmZwICE9IE5VTEwpKQ0KIA0K ICNkZWZpbmUgSVNfQ09OU1QJKDE8PDApDQogI2RlZmluZSBJU19UTVBfVkFS CSgxPDwxKQ0KQEAgLTU2OCw2ICs1NjgsNyBAQA0KICNkZWZpbmUgWkVORF9I QU5ETEVfRlAJCQkJMg0KICNkZWZpbmUgWkVORF9IQU5ETEVfU1RESU9TVFJF QU0JCTMNCiAjZGVmaW5lIFpFTkRfSEFORExFX0ZTVFJFQU0JCQk0DQorI2Rl ZmluZSBaRU5EX0hBTkRMRV9TT0NLRVRfRkQJCTUNCiANCiAjZGVmaW5lIFpF TkRfREVDTEFSRV9DTEFTUwkJCQkxDQogI2RlZmluZSBaRU5EX0RFQ0xBUkVf RlVOQ1RJT04JCQkyDQpJbmRleDogWmVuZC96ZW5kX2V4ZWN1dGUuYw0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1pl bmQvemVuZF9leGVjdXRlLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjMx Ni4yLjEwDQpkaWZmIC11IC1yMS4zMTYuMi4xMCB6ZW5kX2V4ZWN1dGUuYw0K LS0tIFplbmQvemVuZF9leGVjdXRlLmMJMjEgTWF5IDIwMDMgMDc6NTM6MjAg LTAwMDAJMS4zMTYuMi4xMA0KKysrIFplbmQvemVuZF9leGVjdXRlLmMJMzAg TWF5IDIwMDMgMjM6MjI6MDggLTAwMDANCkBAIC0yMTAxLDM4ICsyMTAxLDMy IEBADQogCQkJCQlzd2l0Y2ggKEVYKG9wbGluZSktPm9wMi51LmNvbnN0YW50 LnZhbHVlLmx2YWwpIHsNCiAJCQkJCQljYXNlIFpFTkRfSU5DTFVERV9PTkNF Og0KIAkJCQkJCWNhc2UgWkVORF9SRVFVSVJFX09OQ0U6IHsNCi0JCQkJCQkJ CWNoYXIgKm9wZW5lZF9wYXRoPU5VTEw7DQogCQkJCQkJCQlpbnQgZHVtbXkg PSAxOw0KLQkJCQkJCQkJemVuZF9maWxlX2hhbmRsZSBmaWxlX2hhbmRsZTsN CisJCQkJCQkJCXplbmRfZmlsZV9oYW5kbGUgZmlsZV9oYW5kbGUgPSB7MH07 DQogDQotCQkJCQkJCQlmaWxlX2hhbmRsZS5oYW5kbGUuZnAgPSB6ZW5kX2Zv cGVuKGluY19maWxlbmFtZS0+dmFsdWUuc3RyLnZhbCwgJm9wZW5lZF9wYXRo KTsNCi0JCQkJCQkJCWZpbGVfaGFuZGxlLnR5cGUgPSBaRU5EX0hBTkRMRV9G UDsNCi0JCQkJCQkJCWZpbGVfaGFuZGxlLmZpbGVuYW1lID0gaW5jX2ZpbGVu YW1lLT52YWx1ZS5zdHIudmFsOw0KLQkJCQkJCQkJZmlsZV9oYW5kbGUub3Bl bmVkX3BhdGggPSBvcGVuZWRfcGF0aDsNCi0JCQkJCQkJCWZpbGVfaGFuZGxl LmZyZWVfZmlsZW5hbWUgPSAwOw0KKwkJCQkJCQkJaWYgKHplbmRfb3Blbihp bmNfZmlsZW5hbWUtPnZhbHVlLnN0ci52YWwsICZmaWxlX2hhbmRsZSkgPT0g U1VDQ0VTUyANCisJCQkJCQkJCQkJJiYgWkVORF9JU19WQUxJRF9GSUxFX0hB TkRMRSgmZmlsZV9oYW5kbGUpKSB7DQogDQotCQkJCQkJCQlpZiAoZmlsZV9o YW5kbGUuaGFuZGxlLmZwKSB7DQotCQkJCQkJCQkJaWYoICFvcGVuZWRfcGF0 aCApIHsNCi0JCQkJCQkJCQkJb3BlbmVkX3BhdGggPSBmaWxlX2hhbmRsZS5v cGVuZWRfcGF0aCA9IGVzdHJuZHVwKGluY19maWxlbmFtZS0+dmFsdWUuc3Ry LnZhbCwgaW5jX2ZpbGVuYW1lLT52YWx1ZS5zdHIubGVuKTsNCisJCQkJCQkJ CQlmaWxlX2hhbmRsZS5maWxlbmFtZSA9IGluY19maWxlbmFtZS0+dmFsdWUu c3RyLnZhbDsNCisJCQkJCQkJCQlmaWxlX2hhbmRsZS5mcmVlX2ZpbGVuYW1l ID0gMDsNCisNCisJCQkJCQkJCQlpZiggIWZpbGVfaGFuZGxlLm9wZW5lZF9w YXRoICkgew0KKwkJCQkJCQkJCQlmaWxlX2hhbmRsZS5vcGVuZWRfcGF0aCA9 IGVzdHJuZHVwKGluY19maWxlbmFtZS0+dmFsdWUuc3RyLnZhbCwgaW5jX2Zp bGVuYW1lLT52YWx1ZS5zdHIubGVuKTsNCiAJCQkJCQkJCQl9CQ0KIAkJCQkJ CQkJDQotCQkJCQkJCQkJaWYgKHplbmRfaGFzaF9hZGQoJkVHKGluY2x1ZGVk X2ZpbGVzKSwgb3BlbmVkX3BhdGgsIHN0cmxlbihvcGVuZWRfcGF0aCkrMSwg KHZvaWQgKikmZHVtbXksIHNpemVvZihpbnQpLCBOVUxMKT09U1VDQ0VTUykg ew0KKwkJCQkJCQkJCWlmICh6ZW5kX2hhc2hfYWRkKCZFRyhpbmNsdWRlZF9m aWxlcyksIGZpbGVfaGFuZGxlLm9wZW5lZF9wYXRoLCBzdHJsZW4oZmlsZV9o YW5kbGUub3BlbmVkX3BhdGgpKzEsICh2b2lkICopJmR1bW15LCBzaXplb2Yo aW50KSwgTlVMTCk9PVNVQ0NFU1MpIHsNCiAJCQkJCQkJCQkJbmV3X29wX2Fy cmF5ID0gemVuZF9jb21waWxlX2ZpbGUoJmZpbGVfaGFuZGxlLCAoRVgob3Bs aW5lKS0+b3AyLnUuY29uc3RhbnQudmFsdWUubHZhbD09WkVORF9JTkNMVURF X09OQ0U/WkVORF9JTkNMVURFOlpFTkRfUkVRVUlSRSkgVFNSTUxTX0NDKTsN CiAJCQkJCQkJCQkJemVuZF9kZXN0cm95X2ZpbGVfaGFuZGxlKCZmaWxlX2hh bmRsZSBUU1JNTFNfQ0MpOw0KLQkJCQkJCQkJCQlvcGVuZWRfcGF0aCA9IE5V TEw7IC8qIHplbmRfZGVzdHJveV9maWxlX2hhbmRsZSgpIGFscmVhZHkgZnJl ZXMgaXQgKi8NCiAJCQkJCQkJCQl9IGVsc2Ugew0KLQkJCQkJCQkJCQlmY2xv c2UoZmlsZV9oYW5kbGUuaGFuZGxlLmZwKTsNCisJCQkJCQkJCQkJemVuZF9m aWxlX2hhbmRsZV9kdG9yKCZmaWxlX2hhbmRsZSk7DQogCQkJCQkJCQkJCWZh aWx1cmVfcmV0dmFsPTE7DQogCQkJCQkJCQkJfQ0KIAkJCQkJCQkJfSBlbHNl IHsNCiAJCQkJCQkJCQlpZiAoRVgob3BsaW5lKS0+b3AyLnUuY29uc3RhbnQu dmFsdWUubHZhbD09WkVORF9JTkNMVURFX09OQ0UpIHsNCi0JCQkJCQkJCQkJ emVuZF9tZXNzYWdlX2Rpc3BhdGNoZXIoWk1TR19GQUlMRURfSU5DTFVERV9G T1BFTiwgZmlsZV9oYW5kbGUuZmlsZW5hbWUpOw0KKwkJCQkJCQkJCQl6ZW5k X21lc3NhZ2VfZGlzcGF0Y2hlcihaTVNHX0ZBSUxFRF9JTkNMVURFX0ZPUEVO LCBpbmNfZmlsZW5hbWUtPnZhbHVlLnN0ci52YWwpOw0KIAkJCQkJCQkJCX0g ZWxzZSB7DQotCQkJCQkJCQkJCXplbmRfbWVzc2FnZV9kaXNwYXRjaGVyKFpN U0dfRkFJTEVEX1JFUVVJUkVfRk9QRU4sIGZpbGVfaGFuZGxlLmZpbGVuYW1l KTsNCisJCQkJCQkJCQkJemVuZF9tZXNzYWdlX2Rpc3BhdGNoZXIoWk1TR19G QUlMRURfUkVRVUlSRV9GT1BFTiwgaW5jX2ZpbGVuYW1lLT52YWx1ZS5zdHIu dmFsKTsNCiAJCQkJCQkJCQl9DQotCQkJCQkJCQl9DQotCQkJCQkJCQlpZiAo b3BlbmVkX3BhdGgpIHsNCi0JCQkJCQkJCQllZnJlZShvcGVuZWRfcGF0aCk7 DQogCQkJCQkJCQl9DQogCQkJCQkJCQlicmVhazsNCiAJCQkJCQkJfQ0KSW5k ZXg6IFplbmQvemVuZF9nbG9iYWxzLmgNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9aZW5kL3plbmRfZ2xvYmFscy5o LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS45My4yLjMNCmRpZmYgLXUgLXIx LjkzLjIuMyB6ZW5kX2dsb2JhbHMuaA0KLS0tIFplbmQvemVuZF9nbG9iYWxz LmgJMjEgTWF5IDIwMDMgMDc6NTM6MjAgLTAwMDAJMS45My4yLjMNCisrKyBa ZW5kL3plbmRfZ2xvYmFscy5oCTMwIE1heSAyMDAzIDIzOjIyOjA4IC0wMDAw DQpAQCAtMjM4LDggKzIzOCw4IEBADQogfTsNCiANCiBzdHJ1Y3QgX3plbmRf c2Nhbm5lcl9nbG9iYWxzIHsNCi0JRklMRSAqeXlfaW47DQotCUZJTEUgKnl5 X291dDsNCisJemVuZF9maWxlX2hhbmRsZSAqeXlfaW47DQorCXplbmRfZmls ZV9oYW5kbGUgKnl5X291dDsNCiAJaW50IHl5X2xlbmc7DQogCWNoYXIgKnl5 X3RleHQ7DQogCXN0cnVjdCB5eV9idWZmZXJfc3RhdGUgKmN1cnJlbnRfYnVm ZmVyOw0KSW5kZXg6IFplbmQvemVuZF9pbmlfc2Nhbm5lci5oDQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZC96 ZW5kX2luaV9zY2FubmVyLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEw LjguMg0KZGlmZiAtdSAtcjEuMTAuOC4yIHplbmRfaW5pX3NjYW5uZXIuaA0K LS0tIFplbmQvemVuZF9pbmlfc2Nhbm5lci5oCTIxIE1heSAyMDAzIDA3OjUz OjIxIC0wMDAwCTEuMTAuOC4yDQorKysgWmVuZC96ZW5kX2luaV9zY2FubmVy LmgJMzAgTWF5IDIwMDMgMjM6MjI6MDggLTAwMDANCkBAIC01LDcgKzUsNiBA QA0KIGludCB6ZW5kX2luaV9zY2FubmVyX2dldF9saW5lbm8oVFNSTUxTX0Qp Ow0KIGNoYXIgKnplbmRfaW5pX3NjYW5uZXJfZ2V0X2ZpbGVuYW1lKFRTUk1M U19EKTsNCiBpbnQgemVuZF9pbmlfb3Blbl9maWxlX2Zvcl9zY2FubmluZyh6 ZW5kX2ZpbGVfaGFuZGxlICpmaCBUU1JNTFNfREMpOw0KLXZvaWQgemVuZF9p bmlfY2xvc2VfZmlsZSh6ZW5kX2ZpbGVfaGFuZGxlICpmaCBUU1JNTFNfREMp Ow0KIGludCBpbmlfbGV4KHp2YWwgKmluaV9sdmFsIFRTUk1MU19EQyk7DQog RU5EX0VYVEVSTl9DKCkNCiANCkluZGV4OiBaZW5kL3plbmRfaW5pX3NjYW5u ZXIubA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9yZXBv c2l0b3J5L1plbmQvemVuZF9pbmlfc2Nhbm5lci5sLHYNCnJldHJpZXZpbmcg cmV2aXNpb24gMS4yNi4yLjQNCmRpZmYgLXUgLXIxLjI2LjIuNCB6ZW5kX2lu aV9zY2FubmVyLmwNCi0tLSBaZW5kL3plbmRfaW5pX3NjYW5uZXIubAkyMSBN YXkgMjAwMyAwNzo1MzoyMSAtMDAwMAkxLjI2LjIuNA0KKysrIFplbmQvemVu ZF9pbmlfc2Nhbm5lci5sCTMwIE1heSAyMDAzIDIzOjIyOjA4IC0wMDAwDQpA QCAtMzMsNiArMzMsMTAgQEANCiAjaW5jbHVkZSAiemVuZF9pbmlfcGFyc2Vy LmgiDQogI2luY2x1ZGUgInplbmRfaW5pX3NjYW5uZXIuaCINCiANCisjaWZk ZWYgSEFWRV9VTklTVERfSA0KKyMgaW5jbHVkZSA8dW5pc3RkLmg+DQorI2Vu ZGlmDQorDQogI3VuZGVmIFlZU1RZUEUNCiAjZGVmaW5lIFlZU1RZUEUgenZh bA0KIA0KQEAgLTY5LDM2ICs3Myw0MSBAQA0KIA0KIGludCB6ZW5kX2luaV9v cGVuX2ZpbGVfZm9yX3NjYW5uaW5nKHplbmRfZmlsZV9oYW5kbGUgKmZoIFRT Uk1MU19EQykNCiB7DQotCUZJTEUgKmZwOw0KLQ0KIAlzd2l0Y2ggKGZoLT50 eXBlKSB7DQotCQljYXNlIFpFTkRfSEFORExFX0ZQOg0KLQkJCWZwID0gZmgt PmhhbmRsZS5mcDsNCi0JCQlicmVhazsNCiAJCWNhc2UgWkVORF9IQU5ETEVf RklMRU5BTUU6DQotCQkJZnAgPSB6ZW5kX2ZvcGVuKGZoLT5maWxlbmFtZSwg TlVMTCk7DQogCQkJZmgtPnR5cGUgPSBaRU5EX0hBTkRMRV9GUDsNCisJCQlm aC0+aGFuZGxlLmZwID0gemVuZF9mb3BlbihmaC0+ZmlsZW5hbWUsIE5VTEwp Ow0KIAkJCWJyZWFrOw0KLQkJZGVmYXVsdDoNCi0JCQlyZXR1cm4gRkFJTFVS RTsNCiAJfQ0KIA0KKwlpZiAoIVpFTkRfSVNfVkFMSURfRklMRV9IQU5ETEUo ZmgpKQ0KKwkJcmV0dXJuIEZBSUxVUkU7DQorDQogCWluaXRfaW5pX3NjYW5u ZXIoVFNSTUxTX0MpOw0KLQl5eWluID0gZnA7DQorCXl5aW4gPSBmaDsNCiAJ eXlfc3dpdGNoX3RvX2J1ZmZlcih5eV9jcmVhdGVfYnVmZmVyKHl5aW4sIFlZ X0JVRl9TSVpFIFRTUk1MU19DQykgVFNSTUxTX0NDKTsNCiAJaW5pX2ZpbGVu YW1lID0gZmgtPmZpbGVuYW1lOw0KIAlyZXR1cm4gU1VDQ0VTUzsNCiB9DQog DQotDQogdm9pZCB6ZW5kX2luaV9jbG9zZV9maWxlKHplbmRfZmlsZV9oYW5k bGUgKmZoIFRTUk1MU19EQykNCiB7DQotCXN3aXRjaCAoZmgtPnR5cGUpIHsN Ci0JCWNhc2UgWkVORF9IQU5ETEVfRlA6DQotCQkJZmNsb3NlKGZoLT5oYW5k bGUuZnApOw0KLQkJCWJyZWFrOw0KLQl9DQorICAgIHN3aXRjaCAoZmgtPnR5 cGUpIHsNCisgICAgICAgIGNhc2UgWkVORF9IQU5ETEVfU09DS0VUX0ZEOg0K KyNpZmRlZiBaRU5EX1dJTjMyDQorICAgICAgICAgICAgY2xvc2Vzb2NrZXQo ZmgtPmhhbmRsZS5mZCk7DQorICAgICAgICAgICAgYnJlYWs7DQorI2VuZGlm DQorICAgICAgICAvKiBmYWxsLXRocm91Z2ggKi8NCisgICAgICAgIGNhc2Ug WkVORF9IQU5ETEVfRkQ6DQorICAgICAgICAgICAgY2xvc2UoZmgtPmhhbmRs ZS5mZCk7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFpF TkRfSEFORExFX0ZQOg0KKyAgICAgICAgICAgIGZjbG9zZShmaC0+aGFuZGxl LmZwKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgfQ0KIH0NCisNCiAN CiAlfQ0KIA0KSW5kZXg6IFplbmQvemVuZF9sYW5ndWFnZV9zY2FubmVyLmgN Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvcmVwb3NpdG9y eS9aZW5kL3plbmRfbGFuZ3VhZ2Vfc2Nhbm5lci5oLHYNCnJldHJpZXZpbmcg cmV2aXNpb24gMS4xMC40LjMNCmRpZmYgLXUgLXIxLjEwLjQuMyB6ZW5kX2xh bmd1YWdlX3NjYW5uZXIuaA0KLS0tIFplbmQvemVuZF9sYW5ndWFnZV9zY2Fu bmVyLmgJMjEgTWF5IDIwMDMgMDc6NTM6MjEgLTAwMDAJMS4xMC40LjMNCisr KyBaZW5kL3plbmRfbGFuZ3VhZ2Vfc2Nhbm5lci5oCTMwIE1heSAyMDAzIDIz OjIyOjA4IC0wMDAwDQpAQCAtMjQsNyArMjQsNyBAQA0KIHR5cGVkZWYgc3Ry dWN0IF96ZW5kX2xleF9zdGF0ZSB7DQogCVlZX0JVRkZFUl9TVEFURSBidWZm ZXJfc3RhdGU7DQogCWludCBzdGF0ZTsNCi0JRklMRSAqaW47DQorCXplbmRf ZmlsZV9oYW5kbGUgKmluOw0KIAl1aW50IGxpbmVubzsNCiAJY2hhciAqZmls ZW5hbWU7DQogI2lmZGVmIFpFTkRfTVVMVElCWVRFDQpJbmRleDogWmVuZC96 ZW5kX2xhbmd1YWdlX3NjYW5uZXIubA0KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmQvemVuZF9sYW5ndWFnZV9z Y2FubmVyLmwsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjU0LjIuMTkNCmRp ZmYgLXUgLXIxLjU0LjIuMTkgemVuZF9sYW5ndWFnZV9zY2FubmVyLmwNCi0t LSBaZW5kL3plbmRfbGFuZ3VhZ2Vfc2Nhbm5lci5sCTIxIE1heSAyMDAzIDA3 OjU4OjQ5IC0wMDAwCTEuNTQuMi4xOQ0KKysrIFplbmQvemVuZF9sYW5ndWFn ZV9zY2FubmVyLmwJMzAgTWF5IDIwMDMgMjM6MjI6MDkgLTAwMDANCkBAIC03 NCw2ICs3NCwxMSBAQA0KICNlbmRpZg0KIA0KIA0KKyNpZm5kZWYgU1RESU5f RklMRU5PDQorIyBkZWZpbmUgU1RESU5fRklMRU5PIDANCisjZW5kaWYNCisN CisNCiAvKiBHbG9iYWxzIE1hY3JvcyAqLw0KICNkZWZpbmUgU0NORwlMQU5H X1NDTkcNCiAjaWZkZWYgWlRTDQpAQCAtMTk4LDYgKzIwMywxNSBAQA0KIFpF TkRfQVBJIHZvaWQgemVuZF9maWxlX2hhbmRsZV9kdG9yKHplbmRfZmlsZV9o YW5kbGUgKmZoKQ0KIHsNCiAJc3dpdGNoIChmaC0+dHlwZSkgew0KKwkJY2Fz ZSBaRU5EX0hBTkRMRV9TT0NLRVRfRkQ6DQorI2lmZGVmIFpFTkRfV0lOMzIN CisJCQljbG9zZXNvY2tldChmaC0+aGFuZGxlLmZkKTsNCisJCQlicmVhazsN CisjZW5kaWYNCisJCS8qIGZhbGwtdGhyb3VnaCAqLyANCisJCWNhc2UgWkVO RF9IQU5ETEVfRkQ6DQorCQkJY2xvc2UoZmgtPmhhbmRsZS5mZCk7DQorCQkJ YnJlYWs7DQogCQljYXNlIFpFTkRfSEFORExFX0ZQOg0KIAkJCWZjbG9zZShm aC0+aGFuZGxlLmZwKTsNCiAJCQlicmVhazsNCkBAIC0yMDksOSArMjIzLDEx IEBADQogCX0NCiAJaWYgKGZoLT5vcGVuZWRfcGF0aCkgew0KIAkJZWZyZWUo ZmgtPm9wZW5lZF9wYXRoKTsNCisJCWZoLT5vcGVuZWRfcGF0aCA9IE5VTEw7 DQogCX0NCiAJaWYgKGZoLT5mcmVlX2ZpbGVuYW1lICYmIGZoLT5maWxlbmFt ZSkgew0KIAkJZWZyZWUoZmgtPmZpbGVuYW1lKTsNCisJCWZoLT5maWxlbmFt ZSA9IE5VTEw7DQogCX0NCiB9DQogDQpAQCAtMjI1LDYgKzI0MSwxMCBAQA0K IAkJY2FzZSBaRU5EX0hBTkRMRV9GUDoNCiAJCQlyZXR1cm4gZmgxLT5oYW5k bGUuZnA9PWZoMi0+aGFuZGxlLmZwOw0KIAkJCWJyZWFrOw0KKwkJY2FzZSBa RU5EX0hBTkRMRV9TT0NLRVRfRkQ6DQorCQljYXNlIFpFTkRfSEFORExFX0ZE Og0KKwkJCXJldHVybiBmaDEtPmhhbmRsZS5mZD09ZmgyLT5oYW5kbGUuZmQ7 DQorCQkJYnJlYWs7DQogCX0NCiAJcmV0dXJuIDA7DQogfQ0KQEAgLTIzOSwy OCArMjU5LDI4IEBADQogWkVORF9BUEkgaW50IG9wZW5fZmlsZV9mb3Jfc2Nh bm5pbmcoemVuZF9maWxlX2hhbmRsZSAqZmlsZV9oYW5kbGUgVFNSTUxTX0RD KQ0KIHsNCiAJY2hhciAqZmlsZV9wYXRoPU5VTEw7DQorCWludCBkb19hZGQg PSAxOw0KIA0KIAlzd2l0Y2ggKGZpbGVfaGFuZGxlLT50eXBlKSB7DQogCQlj YXNlIFpFTkRfSEFORExFX0ZJTEVOQU1FOg0KLQkJCWZpbGVfaGFuZGxlLT5o YW5kbGUuZnAgPSB6ZW5kX2ZvcGVuKGZpbGVfaGFuZGxlLT5maWxlbmFtZSwg JmZpbGVfaGFuZGxlLT5vcGVuZWRfcGF0aCk7DQotCQkJYnJlYWs7DQotCQlj YXNlIFpFTkRfSEFORExFX0ZEOg0KLQkJCWZpbGVfaGFuZGxlLT5oYW5kbGUu ZnAgPSBmZG9wZW4oZmlsZV9oYW5kbGUtPmhhbmRsZS5mZCwgInIiKTsNCisJ CQlpZiAoemVuZF9vcGVuKGZpbGVfaGFuZGxlLT5maWxlbmFtZSwgZmlsZV9o YW5kbGUpICE9IFNVQ0NFU1MpDQorCQkJCXJldHVybiBGQUlMVVJFOw0KIAkJ CWJyZWFrOw0KLQkJY2FzZSBaRU5EX0hBTkRMRV9GUDoNCi0JCQlmaWxlX2hh bmRsZS0+aGFuZGxlLmZwID0gZmlsZV9oYW5kbGUtPmhhbmRsZS5mcDsNCi0J CQlicmVhazsNCi0JfQ0KLQlpZiAoIWZpbGVfaGFuZGxlLT5oYW5kbGUuZnAp IHsNCi0JCXJldHVybiBGQUlMVVJFOw0KIAl9DQogDQotCWZpbGVfaGFuZGxl LT50eXBlID0gWkVORF9IQU5ETEVfRlA7CQ0KLQlpZiAoZmlsZV9oYW5kbGUt PmhhbmRsZS5mcCAhPSBzdGRpbikgew0KKwlpZiAoIVpFTkRfSVNfVkFMSURf RklMRV9IQU5ETEUoZmlsZV9oYW5kbGUpKQ0KKwkJCXJldHVybiBGQUlMVVJF Ow0KKwkNCisJaWYgKGZpbGVfaGFuZGxlLT50eXBlID09IFpFTkRfSEFORExF X0ZQICYmIGZpbGVfaGFuZGxlLT5oYW5kbGUuZnAgPT0gc3RkaW4pDQorCQlk b19hZGQgPSAwOw0KKwllbHNlIGlmIChmaWxlX2hhbmRsZS0+dHlwZSA9PSBa RU5EX0hBTkRMRV9GRCAmJiBmaWxlX2hhbmRsZS0+aGFuZGxlLmZkID09IFNU RElOX0ZJTEVOTykNCisJCWRvX2FkZCA9IDA7DQorCQ0KKwlpZiAoZG9fYWRk KSB7DQogCQl6ZW5kX2xsaXN0X2FkZF9lbGVtZW50KCZDRyhvcGVuX2ZpbGVz KSwgZmlsZV9oYW5kbGUpOw0KIAl9DQogCS8qIFJlc2V0IHRoZSBzY2FubmVy IGZvciBzY2FubmluZyB0aGUgbmV3IGZpbGUgKi8NCi0JU0NORyh5eV9pbikg PSBmaWxlX2hhbmRsZS0+aGFuZGxlLmZwOw0KKwlTQ05HKHl5X2luKSA9IGZp bGVfaGFuZGxlOw0KICNpZmRlZiBaRU5EX01VTFRJQllURQ0KIAlpZiAoemVu ZF9yZWFkX2ZpbGUoVFNSTUxTX0MpICE9IDApIHsNCiAJCXJldHVybiBGQUlM VVJFOw0KQEAgLTM5MSw3ICs0MTEsNyBAQA0KIA0KIHplbmRfb3BfYXJyYXkg KmNvbXBpbGVfZmlsZW5hbWUoaW50IHR5cGUsIHp2YWwgKmZpbGVuYW1lIFRT Uk1MU19EQykNCiB7DQotCXplbmRfZmlsZV9oYW5kbGUgZmlsZV9oYW5kbGU7 DQorCXplbmRfZmlsZV9oYW5kbGUgZmlsZV9oYW5kbGUgPSB7MH07DQogCXp2 YWwgdG1wOw0KIAl6ZW5kX29wX2FycmF5ICpyZXR2YWw7DQogCWNoYXIgKm9w ZW5lZF9wYXRoID0gTlVMTDsNCkBAIC00MDcsOSArNDI3LDggQEANCiAJZmls ZV9oYW5kbGUudHlwZSA9IFpFTkRfSEFORExFX0ZJTEVOQU1FOw0KIAlmaWxl X2hhbmRsZS5vcGVuZWRfcGF0aCA9IE5VTEw7DQogDQotDQogCXJldHZhbCA9 IHplbmRfY29tcGlsZV9maWxlKCZmaWxlX2hhbmRsZSwgdHlwZSBUU1JNTFNf Q0MpOw0KLQlpZiAocmV0dmFsICYmIGZpbGVfaGFuZGxlLmhhbmRsZS5mcCkg ew0KKwlpZiAocmV0dmFsICYmIFpFTkRfSVNfVkFMSURfRklMRV9IQU5ETEUo JmZpbGVfaGFuZGxlKSkgew0KIAkJaW50IGR1bW15ID0gMTsNCiAJDQogCQlp ZiAoIWZpbGVfaGFuZGxlLm9wZW5lZF9wYXRoKSB7DQpAQCAtNTQ0LDcgKzU2 Myw3IEBADQogaW50IGhpZ2hsaWdodF9maWxlKGNoYXIgKmZpbGVuYW1lLCB6 ZW5kX3N5bnRheF9oaWdobGlnaHRlcl9pbmkgKnN5bnRheF9oaWdobGlnaHRl cl9pbmkgVFNSTUxTX0RDKQ0KIHsNCiAJemVuZF9sZXhfc3RhdGUgb3JpZ2lu YWxfbGV4X3N0YXRlOw0KLQl6ZW5kX2ZpbGVfaGFuZGxlIGZpbGVfaGFuZGxl Ow0KKwl6ZW5kX2ZpbGVfaGFuZGxlIGZpbGVfaGFuZGxlID0gezB9Ow0KIA0K IAlmaWxlX2hhbmRsZS50eXBlID0gWkVORF9IQU5ETEVfRklMRU5BTUU7DQog CWZpbGVfaGFuZGxlLmZpbGVuYW1lID0gZmlsZW5hbWU7DQpAQCAtNjY2LDI3 ICs2ODUsNDEgQEANCiAJU0NORyhjb2RlKSA9IE5VTEw7DQogCVNDTkcoY29k ZV9zaXplKSA9IDA7DQogDQotCWRvIHsNCi0JCW4gPSBmcmVhZChidWYsIDEs IDgxOTIsIFNDTkcoeXlfaW4pKTsNCi0JCWlmIChuKSB7DQotCQkJU0NORyhj b2RlX3NpemUpICs9IG47DQotCQkJaWYgKFNDTkcoY29kZSkpIHsNCi0JCQkJ U0NORyhjb2RlKSA9IChjaGFyKillcmVhbGxvYyhTQ05HKGNvZGUpLCBTQ05H KGNvZGVfc2l6ZSkrMSk7DQotCQkJCWlmICghU0NORyhjb2RlKSkgew0KLQkJ CQkJcmV0dXJuIC0xOw0KLQkJCQl9DQotCQkJfSBlbHNlIHsNCi0JCQkJU0NO Ryhjb2RlKSA9IChjaGFyKillbWFsbG9jKFNDTkcoY29kZV9zaXplKSsxKTsN Ci0JCQkJaWYgKCFTQ05HKGNvZGUpKSB7DQotCQkJCQlyZXR1cm4gLTE7DQot CQkJCX0NCisJZm9yICg7Oykgew0KKwkJc3dpdGNoIChTQ05HKHl5X2luKS0+ dHlwZSkgew0KKwkJCWNhc2UgWkVORF9IQU5ETEVfRkQ6DQorCQkJCW4gPSBy ZWFkKFNDTkcoeXlfaW4pLT5oYW5kbGUuZmQsIGJ1Ziwgc2l6ZW9mKGJ1Zikp Ow0KKwkJCQlicmVhazsNCisJCQljYXNlIFpFTkRfSEFORExFX0ZQOg0KKwkJ CQluID0gZnJlYWQoYnVmLCBzaXplb2YoYnVmWzBdKSwgc2l6ZW9mKGJ1Zikg LyBzaXplb2YoYnVmWzBdKSwgU0NORyh5eV9pbiktPmhhbmRsZS5mcCk7DQor CQkJCWJyZWFrOw0KKwkJCWNhc2UgWkVORF9IQU5ETEVfU09DS0VUX0ZEOg0K KwkJCQluID0JcmVjdihTQ05HKHl5X2luKS0+aGFuZGxlLmZkLCBidWYsIHNp emVvZihidWYpLCAwKTsNCisJCX0NCisNCisJCWlmIChuIDw9IDApIHsNCisJ CQlicmVhazsNCisJCX0NCisNCisJCVNDTkcoY29kZV9zaXplKSArPSBuOw0K KwkJaWYgKFNDTkcoY29kZSkpIHsNCisJCQlTQ05HKGNvZGUpID0gKGNoYXIq KWVyZWFsbG9jKFNDTkcoY29kZSksIFNDTkcoY29kZV9zaXplKSsxKTsNCisJ CQlpZiAoIVNDTkcoY29kZSkpIHsNCisJCQkJcmV0dXJuIC0xOw0KKwkJCX0N CisJCX0gZWxzZSB7DQorCQkJU0NORyhjb2RlKSA9IChjaGFyKillbWFsbG9j KFNDTkcoY29kZV9zaXplKSsxKTsNCisJCQlpZiAoIVNDTkcoY29kZSkpIHsN CisJCQkJcmV0dXJuIC0xOw0KIAkJCX0NCi0JCQltZW1jcHkoU0NORyhjb2Rl KStTQ05HKGNvZGVfc2l6ZSktbiwgYnVmLCBuKTsNCiAJCX0NCi0JfSB3aGls ZShuKTsNCi0JaWYgKGZlcnJvcihTQ05HKHl5X2luKSkpIHsNCisJCW1lbWNw eShTQ05HKGNvZGUpK1NDTkcoY29kZV9zaXplKS1uLCBidWYsIG4pOw0KKwl9 DQorDQorCWlmIChuIDwgMCkgew0KIAkJcmV0dXJuIC0xOw0KIAl9DQorDQog CWlmICghU0NORyhjb2RlKSkgew0KIAkJU0NORyhjb2RlKSA9IGVtYWxsb2Mo U0NORyhjb2RlX3NpemUpKzEpOw0KIAl9DQpJbmRleDogZXh0L3N0YW5kYXJk L2Jhc2ljX2Z1bmN0aW9ucy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL3JlcG9zaXRvcnkvcGhwNC9leHQvc3RhbmRhcmQvYmFzaWNf ZnVuY3Rpb25zLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjU0My4yLjE3 DQpkaWZmIC11IC1yMS41NDMuMi4xNyBiYXNpY19mdW5jdGlvbnMuYw0KLS0t IGV4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYwkyMSBNYXkgMjAwMyAw OTozNDoxMiAtMDAwMAkxLjU0My4yLjE3DQorKysgZXh0L3N0YW5kYXJkL2Jh c2ljX2Z1bmN0aW9ucy5jCTMwIE1heSAyMDAzIDIzOjIyOjE3IC0wMDAwDQpA QCAtMTcsNyArMTcsNyBAQA0KICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKw0KICAqLw0KIA0KLS8qICRJZDogYmFzaWNfZnVuY3Rpb25zLmMsdiAx LjU0My4yLjE3IDIwMDMvMDUvMjEgMDk6MzQ6MTIgemVldiBFeHAgJCAqLw0K Ky8qICRJZDogYmFzaWNfZnVuY3Rpb25zLmMsdiAxLjU0My4yLjE2IDIwMDMv MDUvMTkgMTc6NDU6NTAgZGVyaWNrIEV4cCAkICovDQogDQogI2luY2x1ZGUg InBocC5oIg0KICNpbmNsdWRlICJwaHBfc3RyZWFtcy5oIg0KQEAgLTI4NDAs NyArMjg0MCw3IEBADQogUEhQX0ZVTkNUSU9OKHBhcnNlX2luaV9maWxlKQ0K IHsNCiAJenZhbCAqKmZpbGVuYW1lLCAqKnByb2Nlc3Nfc2VjdGlvbnM7DQot CXplbmRfZmlsZV9oYW5kbGUgZmg7DQorCXplbmRfZmlsZV9oYW5kbGUgZmgg PSB7MH07DQogCXplbmRfaW5pX3BhcnNlcl9jYl90IGluaV9wYXJzZXJfY2I7 DQogDQogCXN3aXRjaCAoQVJHX0NPVU5UKGh0KSkgew0KSW5kZXg6IGV4dC9z dGFuZGFyZC9icm93c2NhcC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL3JlcG9zaXRvcnkvcGhwNC9leHQvc3RhbmRhcmQvYnJvd3Nj YXAuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNjAuMi4xMQ0KZGlmZiAt dSAtcjEuNjAuMi4xMSBicm93c2NhcC5jDQotLS0gZXh0L3N0YW5kYXJkL2Jy b3dzY2FwLmMJMjcgTWF5IDIwMDMgMTc6MjQ6MDkgLTAwMDAJMS42MC4yLjEx DQorKysgZXh0L3N0YW5kYXJkL2Jyb3dzY2FwLmMJMzAgTWF5IDIwMDMgMjM6 MjI6MTcgLTAwMDANCkBAIC0xNiw3ICsxNiw3IEBADQogICAgKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rDQogICovDQogDQotLyogJElkOiBicm93c2Nh cC5jLHYgMS42MC4yLjExIDIwMDMvMDUvMjcgMTc6MjQ6MDkgc25pcGVyIEV4 cCAkICovDQorLyogJElkOiBicm93c2NhcC5jLHYgMS42MC4yLjkgMjAwMy8w NS8xNyAwNzo1NToxOCBzYXMgRXhwICQgKi8NCiANCiAjaW5jbHVkZSAicGhw LmgiDQogI2luY2x1ZGUgInBocF9yZWdleC5oIg0KQEAgLTE1MCw3ICsxNTAs NyBAQA0KIAljaGFyICpicm93c2NhcCA9IElOSV9TVFIoImJyb3dzY2FwIik7 DQogDQogCWlmIChicm93c2NhcCkgew0KLQkJemVuZF9maWxlX2hhbmRsZSBm aDsNCisJCXplbmRfZmlsZV9oYW5kbGUgZmggPSB7MH07DQogDQogCQlpZiAo emVuZF9oYXNoX2luaXQoJmJyb3dzZXJfaGFzaCwgMCwgTlVMTCwgKGR0b3Jf ZnVuY190KSBicm93c2NhcF9lbnRyeV9kdG9yLCAxKT09RkFJTFVSRSkgew0K IAkJCXJldHVybiBGQUlMVVJFOw0KSW5kZXg6IG1haW4vbWFpbi5jDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvcGhw NC9tYWluL21haW4uYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTEyLjIu MzcNCmRpZmYgLXUgLXIxLjUxMi4yLjM3IG1haW4uYw0KLS0tIG1haW4vbWFp bi5jCTIxIE1heSAyMDAzIDIyOjU0OjM4IC0wMDAwCTEuNTEyLjIuMzcNCisr KyBtYWluL21haW4uYwkzMCBNYXkgMjAwMyAyMzoyMjoxNyAtMDAwMA0KQEAg LTE4LDcgKzE4LDcgQEANCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsNCiAqLw0KIA0KLS8qICRJZDogbWFpbi5jLHYgMS41MTIuMi4zNyAyMDAz LzA1LzIxIDIyOjU0OjM4IGlsaWFhIEV4cCAkICovDQorLyogJElkOiBtYWlu LmMsdiAxLjUxMi4yLjM1IDIwMDMvMDUvMTcgMDc6NTU6MTggc2FzIEV4cCAk ICovDQogDQogLyoge3t7IGluY2x1ZGVzDQogICovDQpAQCAtNzYzLDYgKzc2 MywxNyBAQA0KIH0NCiAvKiB9fX0gKi8NCiANCisNCisvKiB7e3sgcGhwX29w ZW5fd3JhcHBlcl9mb3JfemVuZA0KKyAqLw0KK3N0YXRpYyB6ZW5kX2Jvb2wg cGhwX29wZW5fd3JhcHBlcl9mb3JfemVuZChjb25zdCBjaGFyICpmaWxlbmFt ZSwgc3RydWN0IF96ZW5kX2ZpbGVfaGFuZGxlICpmaCkNCit7DQorCVRTUk1M U19GRVRDSCgpOw0KKw0KKwlyZXR1cm4gcGhwX3N0cmVhbV9vcGVuX3dyYXBw ZXJfYXNfZmlsZV9oYW5kbGUoKGNoYXIgKilmaWxlbmFtZSwgInJiIiwgRU5G T1JDRV9TQUZFX01PREV8VVNFX1BBVEh8SUdOT1JFX1VSTF9XSU58UkVQT1JU X0VSUk9SU3xTVFJFQU1fT1BFTl9GT1JfSU5DTFVERSwgZmgpOw0KK30NCisv KiB9fX0gKi8NCisNCiAvKiB7e3sgcGhwX2dldF9jb25maWd1cmF0aW9uX2Rp cmVjdGl2ZV9mb3JfemVuZA0KICAqLw0KIHN0YXRpYyBpbnQgcGhwX2dldF9j b25maWd1cmF0aW9uX2RpcmVjdGl2ZV9mb3JfemVuZChjaGFyICpuYW1lLCB1 aW50IG5hbWVfbGVuZ3RoLCB6dmFsICpjb250ZW50cykNCkBAIC0xMDk2LDYg KzExMDcsNyBAQA0KIAl6dWYucHJpbnRmX2Z1bmN0aW9uID0gcGhwX3ByaW50 ZjsNCiAJenVmLndyaXRlX2Z1bmN0aW9uID0gcGhwX2JvZHlfd3JpdGVfd3Jh cHBlcjsNCiAJenVmLmZvcGVuX2Z1bmN0aW9uID0gcGhwX2ZvcGVuX3dyYXBw ZXJfZm9yX3plbmQ7DQorCXp1Zi5vcGVuX2Z1bmN0aW9uID0gcGhwX29wZW5f d3JhcHBlcl9mb3JfemVuZDsNCiAJenVmLm1lc3NhZ2VfaGFuZGxlciA9IHBo cF9tZXNzYWdlX2hhbmRsZXJfZm9yX3plbmQ7DQogCXp1Zi5ibG9ja19pbnRl cnJ1cHRpb25zID0gc2FwaV9tb2R1bGUuYmxvY2tfaW50ZXJydXB0aW9uczsN CiAJenVmLnVuYmxvY2tfaW50ZXJydXB0aW9ucyA9IHNhcGlfbW9kdWxlLnVu YmxvY2tfaW50ZXJydXB0aW9uczsNCkBAIC0xNTkxLDcgKzE2MDMsNyBAQA0K IFBIUEFQSSBpbnQgcGhwX2V4ZWN1dGVfc2NyaXB0KHplbmRfZmlsZV9oYW5k bGUgKnByaW1hcnlfZmlsZSBUU1JNTFNfREMpDQogew0KIAl6ZW5kX2ZpbGVf aGFuZGxlICpwcmVwZW5kX2ZpbGVfcCwgKmFwcGVuZF9maWxlX3A7DQotCXpl bmRfZmlsZV9oYW5kbGUgcHJlcGVuZF9maWxlLCBhcHBlbmRfZmlsZTsNCisJ emVuZF9maWxlX2hhbmRsZSBwcmVwZW5kX2ZpbGUgPSB7MH0sIGFwcGVuZF9m aWxlID0gezB9Ow0KICNpZiBIQVZFX0JST0tFTl9HRVRDV0QgDQogCWludCBv bGRfY3dkX2ZkID0gLTE7DQogI2Vsc2UNCkluZGV4OiBtYWluL3BocF9pbmku Yw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9yZXBvc2l0 b3J5L3BocDQvbWFpbi9waHBfaW5pLmMsdg0KcmV0cmlldmluZyByZXZpc2lv biAxLjEwNi4yLjExDQpkaWZmIC11IC1yMS4xMDYuMi4xMSBwaHBfaW5pLmMN Ci0tLSBtYWluL3BocF9pbmkuYwkyMSBNYXkgMjAwMyAwOTozNDoxMyAtMDAw MAkxLjEwNi4yLjExDQorKysgbWFpbi9waHBfaW5pLmMJMzAgTWF5IDIwMDMg MjM6MjI6MTcgLTAwMDANCkBAIC0xNiw3ICsxNiw3IEBADQogICAgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rDQogICovDQogDQotLyogJElkOiBwaHBf aW5pLmMsdiAxLjEwNi4yLjExIDIwMDMvMDUvMjEgMDk6MzQ6MTMgemVldiBF eHAgJCAqLw0KKy8qICRJZDogcGhwX2luaS5jLHYgMS4xMDYuMi4xMCAyMDAz LzA1LzE3IDA3OjU1OjE4IHNhcyBFeHAgJCAqLw0KIA0KIC8qIENoZWNrIENX RCBmb3IgcGhwLmluaSAqLw0KICNkZWZpbmUgSU5JX0NIRUNLX0NXRA0KQEAg LTIzNiw3ICsyMzYsNyBAQA0KIAlpbnQgc2FmZV9tb2RlX3N0YXRlOw0KIAlj aGFyICpvcGVuX2Jhc2VkaXI7DQogCWludCBmcmVlX2luaV9zZWFyY2hfcGF0 aD0wOw0KLQl6ZW5kX2ZpbGVfaGFuZGxlIGZoOw0KKwl6ZW5kX2ZpbGVfaGFu ZGxlIGZoID0gezB9Ow0KIAlzdHJ1Y3Qgc3RhdCBzYjsNCiAJY2hhciBpbmlf ZmlsZVtNQVhQQVRITEVOXTsNCiAJY2hhciAqcDsNCkBAIC0zNDcsNyArMzQ3 LDYgQEANCiAJUEcoc2FmZV9tb2RlKSA9IDA7DQogCVBHKG9wZW5fYmFzZWRp cikgPSBOVUxMOw0KIA0KLQltZW1zZXQoJmZoLCAwLCBzaXplb2YoZmgpKTsN CiAJLyogQ2hlY2sgaWYgcGhwX2luaV9wYXRoX292ZXJyaWRlIGlzIGEgZmls ZSAqLw0KIAlpZiAoIXNhcGlfbW9kdWxlLnBocF9pbmlfaWdub3JlKSB7DQog CQlpZiAoc2FwaV9tb2R1bGUucGhwX2luaV9wYXRoX292ZXJyaWRlICYmIHNh cGlfbW9kdWxlLnBocF9pbmlfcGF0aF9vdmVycmlkZVswXSkgew0KSW5kZXg6 IG1haW4vcGhwX3N0cmVhbXMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K UkNTIGZpbGU6IC9yZXBvc2l0b3J5L3BocDQvbWFpbi9waHBfc3RyZWFtcy5o LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS42MS4yLjEzDQpkaWZmIC11IC1y MS42MS4yLjEzIHBocF9zdHJlYW1zLmgNCi0tLSBtYWluL3BocF9zdHJlYW1z LmgJMjEgTWF5IDIwMDMgMTA6MTk6MDMgLTAwMDAJMS42MS4yLjEzDQorKysg bWFpbi9waHBfc3RyZWFtcy5oCTMwIE1heSAyMDAzIDIzOjIyOjE3IC0wMDAw DQpAQCAtMTYsNyArMTYsNyBAQA0KICAgICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKw0KICAqLw0KIA0KLS8qICRJZDogcGhwX3N0cmVhbXMuaCx2IDEu NjEuMi4xMyAyMDAzLzA1LzIxIDEwOjE5OjAzIHplZXYgRXhwICQgKi8NCisv KiAkSWQ6IHBocF9zdHJlYW1zLmgsdiAxLjYxLjIuMTIgMjAwMy8wNS8xMyAy MzowOToyNyBzYXMgRXhwICQgKi8NCiANCiAjaWZuZGVmIFBIUF9TVFJFQU1T X0gNCiAjZGVmaW5lIFBIUF9TVFJFQU1TX0gNCkBAIC01NTMsNiArNTUzLDkg QEANCiBQSFBBUEkgRklMRSAqIF9waHBfc3RyZWFtX29wZW5fd3JhcHBlcl9h c19maWxlKGNoYXIgKiBwYXRoLCBjaGFyICogbW9kZSwgaW50IG9wdGlvbnMs IGNoYXIgKipvcGVuZWRfcGF0aCBTVFJFQU1TX0RDIFRTUk1MU19EQyk7DQog I2RlZmluZSBwaHBfc3RyZWFtX29wZW5fd3JhcHBlcl9hc19maWxlKHBhdGgs IG1vZGUsIG9wdGlvbnMsIG9wZW5lZF9wYXRoKSBfcGhwX3N0cmVhbV9vcGVu X3dyYXBwZXJfYXNfZmlsZSgocGF0aCksIChtb2RlKSwgKG9wdGlvbnMpLCAo b3BlbmVkX3BhdGgpIFNUUkVBTVNfQ0MgVFNSTUxTX0NDKQ0KIA0KKw0KK1BI UEFQSSB6ZW5kX2Jvb2wgX3BocF9zdHJlYW1fb3Blbl93cmFwcGVyX2FzX2Zp bGVfaGFuZGxlKGNoYXIgKiBwYXRoLCBjaGFyICogbW9kZSwgaW50IG9wdGlv bnMsIHplbmRfZmlsZV9oYW5kbGUgKiBTVFJFQU1TX0RDIFRTUk1MU19EQyk7 DQorI2RlZmluZSBwaHBfc3RyZWFtX29wZW5fd3JhcHBlcl9hc19maWxlX2hh bmRsZShwYXRoLCBtb2RlLCBvcHRpb25zLCBmaCkgX3BocF9zdHJlYW1fb3Bl bl93cmFwcGVyX2FzX2ZpbGVfaGFuZGxlKChwYXRoKSwgKG1vZGUpLCAob3B0 aW9ucyksIChmaCkgU1RSRUFNU19DQyBUU1JNTFNfQ0MpDQogDQogLyogZm9y IHVzZXItc3BhY2Ugc3RyZWFtcyAqLw0KIFBIUEFQSSBleHRlcm4gcGhwX3N0 cmVhbV9vcHMgcGhwX3N0cmVhbV91c2Vyc3BhY2Vfb3BzOw0KSW5kZXg6IG1h aW4vc3RyZWFtcy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmls ZTogL3JlcG9zaXRvcnkvcGhwNC9tYWluL0F0dGljL3N0cmVhbXMuYyx2DQpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTI1LjIuNjcNCmRpZmYgLXUgLXIxLjEy NS4yLjY3IHN0cmVhbXMuYw0KLS0tIG1haW4vc3RyZWFtcy5jCTI4IE1heSAy MDAzIDEwOjE1OjAwIC0wMDAwCTEuMTI1LjIuNjcNCisrKyBtYWluL3N0cmVh bXMuYwkzMCBNYXkgMjAwMyAyMzoyMjoxOCAtMDAwMA0KQEAgLTI3MjgsNiAr MjcyOCw0NSBAQA0KIA0KIA0KIA0KKy8qIHt7eyBwaHBfc3RyZWFtX29wZW5f d3JhcHBlcl9hc19maWxlX2hhbmRsZSAqLw0KK1BIUEFQSSB6ZW5kX2Jvb2wg X3BocF9zdHJlYW1fb3Blbl93cmFwcGVyX2FzX2ZpbGVfaGFuZGxlKGNoYXIg KnBhdGgsIGNoYXIgKm1vZGUsIGludCBvcHRpb25zLCB6ZW5kX2ZpbGVfaGFu ZGxlICpmaCBTVFJFQU1TX0RDIFRTUk1MU19EQykNCit7DQorCXBocF9zdHJl YW0gKnN0cmVhbSA9IE5VTEw7DQorCWludCBpc19zb2NrID0gMDsNCisNCisJ c3RyZWFtID0gcGhwX3N0cmVhbV9vcGVuX3dyYXBwZXJfcmVsKHBhdGgsIG1v ZGUsIG9wdGlvbnN8U1RSRUFNX1dJTExfQ0FTVCwgJmZoLT5vcGVuZWRfcGF0 aCk7DQorDQorCWlmIChzdHJlYW0gPT0gTlVMTCkNCisJCXJldHVybiBGQUlM VVJFOw0KKw0KKwlpZiAoKG9wdGlvbnMgJiBTVFJFQU1fT1BFTl9GT1JfSU5D TFVERSkgDQorCQkJJiYgcGhwX3N0cmVhbV9pcyhzdHJlYW0sIFBIUF9TVFJF QU1fSVNfU09DS0VUKSkgew0KKwkJaXNfc29jayA9IDE7DQorCX0NCisNCisJ aWYgKHBocF9zdHJlYW1fY2FuX2Nhc3Qoc3RyZWFtLCBQSFBfU1RSRUFNX0FT X0ZEKSA9PSBTVUNDRVNTICYmDQorCQkJcGhwX3N0cmVhbV9jYXN0KHN0cmVh bSwgUEhQX1NUUkVBTV9BU19GRCB8IFBIUF9TVFJFQU1fQ0FTVF9UUllfSEFS RCANCisJCQkJfCBQSFBfU1RSRUFNX0NBU1RfUkVMRUFTRSwgKHZvaWQgKiop ICZmaC0+aGFuZGxlLmZkLCANCisJCQkJUkVQT1JUX0VSUk9SUykgPT0gU1VD Q0VTUykgew0KKwkJaWYgKGlzX3NvY2spIHsNCisJCQlmaC0+dHlwZSA9IFpF TkRfSEFORExFX1NPQ0tFVF9GRDsNCisJCX0gZWxzZSB7DQorCQkJZmgtPnR5 cGUgPSBaRU5EX0hBTkRMRV9GRDsNCisJCX0NCisJfSBlbHNlIGlmIChwaHBf c3RyZWFtX2Nhc3Qoc3RyZWFtLCBQSFBfU1RSRUFNX0FTX1NURElPDQorCQkJ CXxQSFBfU1RSRUFNX0NBU1RfVFJZX0hBUkQgfCBQSFBfU1RSRUFNX0NBU1Rf UkVMRUFTRSwNCisJCQkJKHZvaWQqKikgJmZoLT5oYW5kbGUuZnAsIFJFUE9S VF9FUlJPUlMpID09IFNVQ0NFU1MpIHsNCisJCWZoLT50eXBlID0gWkVORF9I QU5ETEVfRlA7DQorCX0gZWxzZSB7DQorCQlwaHBfc3RyZWFtX2Nsb3NlKHN0 cmVhbSk7DQorCQlpZiAoZmgtPm9wZW5lZF9wYXRoKQ0KKwkJCWVmcmVlKGZo LT5vcGVuZWRfcGF0aCk7DQorCQlmaC0+b3BlbmVkX3BhdGggPSBOVUxMOw0K KwkJcmV0dXJuIEZBSUxVUkU7DQorCX0NCisJcmV0dXJuIFNVQ0NFU1M7DQor fQ0KKy8qIH19fSAqLw0KIA0KIC8qIHt7eyBwaHBfc3RyZWFtX21ha2Vfc2Vl a2FibGUgKi8NCiBQSFBBUEkgaW50IF9waHBfc3RyZWFtX21ha2Vfc2Vla2Fi bGUocGhwX3N0cmVhbSAqb3JpZ3N0cmVhbSwgcGhwX3N0cmVhbSAqKm5ld3N0 cmVhbSwgaW50IGZsYWdzIFNUUkVBTVNfREMgVFNSTUxTX0RDKQ0KSW5kZXg6 IHNhcGkvYW9sc2VydmVyL2FvbHNlcnZlci5jDQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvcGhwNC9zYXBpL2FvbHNl cnZlci9hb2xzZXJ2ZXIuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNzIu Mi4zDQpkaWZmIC11IC1yMS43Mi4yLjMgYW9sc2VydmVyLmMNCi0tLSBzYXBp L2FvbHNlcnZlci9hb2xzZXJ2ZXIuYwkyMSBNYXkgMjAwMyAwOTozNDoxMyAt MDAwMAkxLjcyLjIuMw0KKysrIHNhcGkvYW9sc2VydmVyL2FvbHNlcnZlci5j CTMwIE1heSAyMDAzIDIzOjIyOjE4IC0wMDAwDQpAQCAtMjIsNyArMjIsNyBA QA0KICAqIC0gQ0dJLzEuMSBjb25mb3JtYW5jZQ0KICAqLw0KIA0KLS8qICRJ ZDogYW9sc2VydmVyLmMsdiAxLjcyLjIuMyAyMDAzLzA1LzIxIDA5OjM0OjEz IHplZXYgRXhwICQgKi8NCisvKiAkSWQ6IGFvbHNlcnZlci5jLHYgMS43Mi4y LjIgMjAwMy8wNS8xNyAwODowNjo1MiBzYXMgRXhwICQgKi8NCiANCiAvKiBj b25mbGljdCBiZXR3ZWVuIFBIUCBhbmQgQU9Mc2VydmVyIGhlYWRlcnMgKi8N CiAjZGVmaW5lIERlYnVnIHBocF9EZWJ1Zw0KQEAgLTIwNSw3ICsyMDUsNyBA QA0KIAlpbnQgaTsNCiAJDQogCXBocF9pbmZvX3ByaW50X3RhYmxlX3N0YXJ0 KCk7DQotCXBocF9pbmZvX3ByaW50X3RhYmxlX3JvdygyLCAiU0FQSSBtb2R1 bGUgdmVyc2lvbiIsICIkSWQ6IGFvbHNlcnZlci5jLHYgMS43Mi4yLjMgMjAw My8wNS8yMSAwOTozNDoxMyB6ZWV2IEV4cCAkIik7DQorCXBocF9pbmZvX3By aW50X3RhYmxlX3JvdygyLCAiU0FQSSBtb2R1bGUgdmVyc2lvbiIsICIkSWQ6 IGFvbHNlcnZlci5jLHYgMS43Mi4yLjIgMjAwMy8wNS8xNyAwODowNjo1MiBz YXMgRXhwICQiKTsNCiAJcGhwX2luZm9fcHJpbnRfdGFibGVfcm93KDIsICJC dWlsZCBkYXRlIiwgTnNfSW5mb0J1aWxkRGF0ZSgpKTsNCiAJcGhwX2luZm9f cHJpbnRfdGFibGVfcm93KDIsICJDb25maWcgZmlsZSBwYXRoIiwgTnNfSW5m b0NvbmZpZ0ZpbGUoKSk7DQogCXBocF9pbmZvX3ByaW50X3RhYmxlX3Jvdygy LCAiRXJyb3IgTG9nIHBhdGgiLCBOc19JbmZvRXJyb3JMb2coKSk7DQpAQCAt NDA0LDcgKzQwNCw3IEBADQogc3RhdGljIGludA0KIHBocF9uc19tb2R1bGVf bWFpbihUU1JNTFNfRCkNCiB7DQotCXplbmRfZmlsZV9oYW5kbGUgZmlsZV9o YW5kbGU7DQorCXplbmRfZmlsZV9oYW5kbGUgZmlsZV9oYW5kbGUgPSB7MH07 DQogDQogCWZpbGVfaGFuZGxlLnR5cGUgPSBaRU5EX0hBTkRMRV9GSUxFTkFN RTsNCiAJZmlsZV9oYW5kbGUuZmlsZW5hbWUgPSBTRyhyZXF1ZXN0X2luZm8p LnBhdGhfdHJhbnNsYXRlZDsNCkluZGV4OiBzYXBpL2FwYWNoZS9tb2RfcGhw NC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3JlcG9z aXRvcnkvcGhwNC9zYXBpL2FwYWNoZS9BdHRpYy9tb2RfcGhwNC5jLHYNCnJl dHJpZXZpbmcgcmV2aXNpb24gMS4xNDYuMi4xMA0KZGlmZiAtdSAtcjEuMTQ2 LjIuMTAgbW9kX3BocDQuYw0KLS0tIHNhcGkvYXBhY2hlL21vZF9waHA0LmMJ MjEgTWF5IDIwMDMgMDk6MzQ6MTMgLTAwMDAJMS4xNDYuMi4xMA0KKysrIHNh cGkvYXBhY2hlL21vZF9waHA0LmMJMzAgTWF5IDIwMDMgMjM6MjI6MTggLTAw MDANCkBAIC0xNyw3ICsxNyw3IEBADQogICAgfCBQSFAgNC4wIHBhdGNoZXMg YnkgWmVldiBTdXJhc2tpIDx6ZWV2QHplbmQuY29tPiAgICAgICAgICAgICAg ICAgICAgICB8DQogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQog ICovDQotLyogJElkOiBtb2RfcGhwNC5jLHYgMS4xNDYuMi4xMCAyMDAzLzA1 LzIxIDA5OjM0OjEzIHplZXYgRXhwICQgKi8NCisvKiAkSWQ6IG1vZF9waHA0 LmMsdiAxLjE0Ni4yLjkgMjAwMy8wNS8xNyAwODowNjo1MiBzYXMgRXhwICQg Ki8NCiANCiAjaW5jbHVkZSAicGhwX2FwYWNoZV9odHRwLmgiDQogI2luY2x1 ZGUgImh0dHBfY29uZl9nbG9iYWxzLmgiDQpAQCAtNTM0LDcgKzUzNCw3IEBA DQogCVRTUk1MU19GRVRDSCgpOw0KIA0KIAlpZiAoQVAoaW5fcmVxdWVzdCkp IHsNCi0JCXplbmRfZmlsZV9oYW5kbGUgZmg7DQorCQl6ZW5kX2ZpbGVfaGFu ZGxlIGZoID0gezB9Ow0KIA0KIAkJZmguZmlsZW5hbWUgPSByLT5maWxlbmFt ZTsNCiAJCWZoLm9wZW5lZF9wYXRoID0gTlVMTDsNCkluZGV4OiBzYXBpL2Fw YWNoZS9zYXBpX2FwYWNoZS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL3JlcG9zaXRvcnkvcGhwNC9zYXBpL2FwYWNoZS9zYXBpX2Fw YWNoZS5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS40MC40LjQNCmRpZmYg LXUgLXIxLjQwLjQuNCBzYXBpX2FwYWNoZS5jDQotLS0gc2FwaS9hcGFjaGUv c2FwaV9hcGFjaGUuYwkyMSBNYXkgMjAwMyAwOTozNDoxMyAtMDAwMAkxLjQw LjQuNA0KKysrIHNhcGkvYXBhY2hlL3NhcGlfYXBhY2hlLmMJMzAgTWF5IDIw MDMgMjM6MjI6MTggLTAwMDANCkBAIC0xOSw3ICsxOSw3IEBADQogICAgfCBT dGlnIEJha2tlbiA8c3NiQGZhc3Qubm8+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8DQogICAgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rDQogICovDQotLyogJElkOiBzYXBpX2FwYWNoZS5jLHYg MS40MC40LjQgMjAwMy8wNS8yMSAwOTozNDoxMyB6ZWV2IEV4cCAkICovDQor LyogJElkOiBzYXBpX2FwYWNoZS5jLHYgMS40MC40LjMgMjAwMy8wNS8xNyAw ODowNjo1MiBzYXMgRXhwICQgKi8NCiANCiAjaW5jbHVkZSAicGhwX2FwYWNo ZV9odHRwLmgiDQogDQpAQCAtMjgsNyArMjgsNyBAQA0KIGludCBhcGFjaGVf cGhwX21vZHVsZV9tYWluKHJlcXVlc3RfcmVjICpyLCBpbnQgZGlzcGxheV9z b3VyY2VfbW9kZSBUU1JNTFNfREMpDQogew0KIAlpbnQgcmV0dmFsID0gT0s7 CQ0KLQl6ZW5kX2ZpbGVfaGFuZGxlIGZpbGVfaGFuZGxlOw0KKwl6ZW5kX2Zp bGVfaGFuZGxlIGZpbGVfaGFuZGxlID0gezB9Ow0KIA0KIAlpZiAocGhwX3Jl cXVlc3Rfc3RhcnR1cChUU1JNTFNfQykgPT0gRkFJTFVSRSkgew0KIAkJcmV0 dXJuIEZBSUxVUkU7DQpJbmRleDogc2FwaS9hcGFjaGUyZmlsdGVyL3NhcGlf YXBhY2hlMi5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTog L3JlcG9zaXRvcnkvcGhwNC9zYXBpL2FwYWNoZTJmaWx0ZXIvc2FwaV9hcGFj aGUyLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjkxLjIuMTUNCmRpZmYg LXUgLXIxLjkxLjIuMTUgc2FwaV9hcGFjaGUyLmMNCi0tLSBzYXBpL2FwYWNo ZTJmaWx0ZXIvc2FwaV9hcGFjaGUyLmMJMjMgTWF5IDIwMDMgMDI6NDI6MjIg LTAwMDAJMS45MS4yLjE1DQorKysgc2FwaS9hcGFjaGUyZmlsdGVyL3NhcGlf YXBhY2hlMi5jCTMwIE1heSAyMDAzIDIzOjIyOjE4IC0wMDAwDQpAQCAtMTgs NyArMTgsNyBAQA0KICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0K ICAqLw0KIA0KLS8qICRJZDogc2FwaV9hcGFjaGUyLmMsdiAxLjkxLjIuMTUg MjAwMy8wNS8yMyAwMjo0MjoyMiBpbGlhYSBFeHAgJCAqLw0KKy8qICRJZDog c2FwaV9hcGFjaGUyLmMsdiAxLjkxLjIuMTMgMjAwMy8wNS8yMCAwNzozNDow OCBtb3JpeW9zaGkgRXhwICQgKi8NCiANCiAjaW5jbHVkZSA8ZmNudGwuaD4N CiANCkBAIC00NTIsNyArNDUyLDcgQEANCiAJfQ0KIA0KIAlmb3IgKGIgPSBB UFJfQlJJR0FERV9GSVJTVChiYik7IGIgIT0gQVBSX0JSSUdBREVfU0VOVElO RUwoYmIpOyBiID0gQVBSX0JVQ0tFVF9ORVhUKGIpKSB7DQotCQl6ZW5kX2Zp bGVfaGFuZGxlIHpmZDsNCisJCXplbmRfZmlsZV9oYW5kbGUgemZkID0gezB9 Ow0KIA0KIAkJaWYgKCFjdHgtPnJlcXVlc3RfcHJvY2Vzc2VkICYmIEFQUl9C VUNLRVRfSVNfRklMRShiKSkgew0KIAkJCWNvbnN0IGNoYXIgKnBhdGg7DQpJ bmRleDogc2FwaS9hcGFjaGUyaGFuZGxlci9zYXBpX2FwYWNoZTIuYw0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L3Bo cDQvc2FwaS9hcGFjaGUyaGFuZGxlci9zYXBpX2FwYWNoZTIuYyx2DQpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMS4yLjE1DQpkaWZmIC11IC1yMS4xLjIuMTUg c2FwaV9hcGFjaGUyLmMNCi0tLSBzYXBpL2FwYWNoZTJoYW5kbGVyL3NhcGlf YXBhY2hlMi5jCTIzIE1heSAyMDAzIDAyOjQyOjIyIC0wMDAwCTEuMS4yLjE1 DQorKysgc2FwaS9hcGFjaGUyaGFuZGxlci9zYXBpX2FwYWNoZTIuYwkzMCBN YXkgMjAwMyAyMzoyMjoxOCAtMDAwMA0KQEAgLTE4LDcgKzE4LDcgQEANCiAg ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCiAgKi8NCiANCi0vKiAk SWQ6IHNhcGlfYXBhY2hlMi5jLHYgMS4xLjIuMTUgMjAwMy8wNS8yMyAwMjo0 MjoyMiBpbGlhYSBFeHAgJCAqLw0KKy8qICRJZDogc2FwaV9hcGFjaGUyLmMs diAxLjEuMi4xMyAyMDAzLzA1LzIwIDA3OjM0OjA4IG1vcml5b3NoaSBFeHAg JCAqLw0KIA0KICNpbmNsdWRlIDxmY250bC5oPg0KIA0KQEAgLTUxNCw3ICs1 MTQsNyBAQA0KIAkJcGhwX2dldF9oaWdobGlnaHRfc3RydWN0KCZzeW50YXhf aGlnaGxpZ2h0ZXJfaW5pKTsNCiAJCWhpZ2hsaWdodF9maWxlKChjaGFyICop ci0+ZmlsZW5hbWUsICZzeW50YXhfaGlnaGxpZ2h0ZXJfaW5pIFRTUk1MU19D Qyk7DQogCX0gZWxzZSB7DQotCQl6ZW5kX2ZpbGVfaGFuZGxlIHpmZDsNCisJ CXplbmRfZmlsZV9oYW5kbGUgemZkID0gezB9Ow0KIA0KIAkJemZkLnR5cGUg PSBaRU5EX0hBTkRMRV9GSUxFTkFNRTsNCiAJCXpmZC5maWxlbmFtZSA9IChj aGFyICopIHItPmZpbGVuYW1lOw0KSW5kZXg6IHNhcGkvY2F1ZGl1bS9jYXVk aXVtLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvcmVw b3NpdG9yeS9waHA0L3NhcGkvY2F1ZGl1bS9jYXVkaXVtLmMsdg0KcmV0cmll dmluZyByZXZpc2lvbiAxLjI4LjIuMw0KZGlmZiAtdSAtcjEuMjguMi4zIGNh dWRpdW0uYw0KLS0tIHNhcGkvY2F1ZGl1bS9jYXVkaXVtLmMJMjEgTWF5IDIw MDMgMDk6MzQ6MTQgLTAwMDAJMS4yOC4yLjMNCisrKyBzYXBpL2NhdWRpdW0v Y2F1ZGl1bS5jCTMwIE1heSAyMDAzIDIzOjIyOjE5IC0wMDAwDQpAQCAtMTcs NyArMTcsNyBAQA0KICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0K ICAqLw0KIA0KLS8qICRJZDogY2F1ZGl1bS5jLHYgMS4yOC4yLjMgMjAwMy8w NS8yMSAwOTozNDoxNCB6ZWV2IEV4cCAkICovDQorLyogJElkOiBjYXVkaXVt LmMsdiAxLjI4LjIuMiAyMDAzLzA1LzE3IDA4OjA2OjUyIHNhcyBFeHAgJCAq Lw0KIA0KICNpbmNsdWRlICJwaHAuaCINCiAjaWZkZWYgSEFWRV9DQVVESVVN DQpAQCAtNDQ0LDcgKzQ0NCw3IEBADQogew0KICAgLyogIGNoYXIgYnVmWzUx Ml07ICovDQogICBwaHBfaW5mb19wcmludF90YWJsZV9zdGFydCgpOw0KLSAg cGhwX2luZm9fcHJpbnRfdGFibGVfcm93KDIsICJTQVBJIG1vZHVsZSB2ZXJz aW9uIiwgIiRJZDogY2F1ZGl1bS5jLHYgMS4yOC4yLjMgMjAwMy8wNS8yMSAw OTozNDoxNCB6ZWV2IEV4cCAkIik7DQorICBwaHBfaW5mb19wcmludF90YWJs ZV9yb3coMiwgIlNBUEkgbW9kdWxlIHZlcnNpb24iLCAiJElkOiBjYXVkaXVt LmMsdiAxLjI4LjIuMiAyMDAzLzA1LzE3IDA4OjA2OjUyIHNhcyBFeHAgJCIp Ow0KICAgLyogIHBocF9pbmZvX3ByaW50X3RhYmxlX3JvdygyLCAiQnVpbGQg ZGF0ZSIsIE5zX0luZm9CdWlsZERhdGUoKSk7DQogICAgICAgcGhwX2luZm9f cHJpbnRfdGFibGVfcm93KDIsICJDb25maWcgZmlsZSBwYXRoIiwgTnNfSW5m b0NvbmZpZ0ZpbGUoKSk7DQogICAgICAgcGhwX2luZm9fcHJpbnRfdGFibGVf cm93KDIsICJFcnJvciBMb2cgcGF0aCIsIE5zX0luZm9FcnJvckxvZygpKTsN CkBAIC01NjQsNyArNTY0LDcgQEANCiBzdGF0aWMgdm9pZCBwaHBfY2F1ZGl1 bV9tb2R1bGVfbWFpbihwaHBfY2F1ZGl1bV9yZXF1ZXN0ICp1cmVxKQ0KIHsN CiAgIGludCByZXM7DQotICB6ZW5kX2ZpbGVfaGFuZGxlIGZpbGVfaGFuZGxl Ow0KKyAgemVuZF9maWxlX2hhbmRsZSBmaWxlX2hhbmRsZSA9IHswfTsNCiAj aWZuZGVmIFVTRV9QSUtFX0xFVkVMX1RIUkVBRFMNCiAgIHN0cnVjdCB0aHJl YWRfc3RhdGUgKnN0YXRlOw0KICAgZXh0ZXJuIHN0cnVjdCBwcm9ncmFtICp0 aHJlYWRfaWRfcHJvZzsNCkluZGV4OiBzYXBpL2NnaS9jZ2lfbWFpbi5jDQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkv cGhwNC9zYXBpL2NnaS9jZ2lfbWFpbi5jLHYNCnJldHJpZXZpbmcgcmV2aXNp b24gMS4xOTAuMi4zNA0KZGlmZiAtdSAtcjEuMTkwLjIuMzQgY2dpX21haW4u Yw0KLS0tIHNhcGkvY2dpL2NnaV9tYWluLmMJMzAgTWF5IDIwMDMgMTc6MDM6 MTAgLTAwMDAJMS4xOTAuMi4zNA0KKysrIHNhcGkvY2dpL2NnaV9tYWluLmMJ MzAgTWF5IDIwMDMgMjM6MjI6MjAgLTAwMDANCkBAIC05MTIsNyArOTEyLDcg QEANCiB7DQogCWludCBleGl0X3N0YXR1cyA9IFNVQ0NFU1M7DQogCWludCBj Z2kgPSAwLCBjLCBpLCBsZW47DQotCXplbmRfZmlsZV9oYW5kbGUgZmlsZV9o YW5kbGU7DQorCXplbmRfZmlsZV9oYW5kbGUgZmlsZV9oYW5kbGUgPSB7MH07 DQogCWludCByZXR2YWwgPSBGQUlMVVJFOw0KIAljaGFyICpzOw0KIC8qIHRl bXBvcmFyeSBsb2NhbHMgKi8NCkluZGV4OiBzYXBpL2NsaS9waHBfY2xpLmMN Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvcmVwb3NpdG9y eS9waHA0L3NhcGkvY2xpL3BocF9jbGkuYyx2DQpyZXRyaWV2aW5nIHJldmlz aW9uIDEuNTEuMi4yMg0KZGlmZiAtdSAtcjEuNTEuMi4yMiBwaHBfY2xpLmMN Ci0tLSBzYXBpL2NsaS9waHBfY2xpLmMJMzAgTWF5IDIwMDMgMTc6MDM6MTAg LTAwMDAJMS41MS4yLjIyDQorKysgc2FwaS9jbGkvcGhwX2NsaS5jCTMwIE1h eSAyMDAzIDIzOjIyOjIwIC0wMDAwDQpAQCAtODksMzkgKzg5LDExIEBADQog I2RlZmluZSBQSFBfTU9ERV9MSU5UICAgICAgICA0DQogI2RlZmluZSBQSFBf TU9ERV9TVFJJUCAgICAgICA1DQogI2RlZmluZSBQSFBfTU9ERV9DTElfRElS RUNUICA2DQotI2RlZmluZSBQSFBfTU9ERV9QUk9DRVNTX1NURElOIDcNCiAN Ci1zdGF0aWMgY2hhciAqb3B0YXJnID0gTlVMTDsNCi1zdGF0aWMgaW50IG9w dGluZCA9IDE7DQorZXh0ZXJuIGNoYXIgKmFwX3BocF9vcHRhcmc7DQorZXh0 ZXJuIGludCBhcF9waHBfb3B0aW5kOw0KIA0KLXN0YXRpYyBjb25zdCBvcHRf c3RydWN0IE9QVElPTlNbXSA9IHsNCi0JeydhJywgMCwgImludGVyYWN0aXZl In0sDQotCXsnQicsIDEsICJwcm9jZXNzLWJlZ2luIn0sDQotCXsnQycsIDAs ICJuby1jaGRpciJ9LCAvKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENHSSAo ZG8gbm90IGNoZGlyIHRvIHNjcmlwdCBkaXJlY3RvcnkpICovDQotCXsnYycs IDEsICJwaHAtaW5pIn0sDQotCXsnZCcsIDEsICJkZWZpbmUifSwNCi0JeydF JywgMSwgInByb2Nlc3MtZW5kIn0sDQotCXsnZScsIDAsICJwcm9maWxlLWlu Zm8ifSwNCi0JeydGJywgMSwgInByb2Nlc3MtZmlsZSJ9LA0KLQl7J2YnLCAx LCAiZmlsZSJ9LA0KLQl7J2cnLCAxLCAiZ2xvYmFsIn0sDQotCXsnaCcsIDAs ICJoZWxwIn0sDQotCXsnaScsIDAsICJpbmZvIn0sDQotCXsnbCcsIDAsICJz eW50YXgtY2hlY2sifSwNCi0JeydtJywgMCwgIm1vZHVsZXMifSwNCi0Jeydu JywgMCwgIm5vLXBocC1pbmkifSwNCi0JeydxJywgMCwgIm5vLWhlYWRlciJ9 LCAvKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIENHSSAoZG8gbm90IGdlbmVy YXRlIEhUVFAgaGVhZGVycykgKi8NCi0JeydSJywgMSwgInByb2Nlc3MtY29k ZSJ9LA0KLQl7J0gnLCAwLCAiaGlkZS1hcmdzIn0sDQotCXsncicsIDEsICJy dW4ifSwNCi0JeydzJywgMCwgInN5bnRheC1oaWdobGlnaHQifSwNCi0Jeydz JywgMCwgInN5bnRheC1oaWdobGlnaHRpbmcifSwNCi0Jeyd3JywgMCwgInN0 cmlwIn0sDQotCXsnPycsIDAsICJ1c2FnZSJ9LC8qIGhlbHAgYWxpYXMgKGJv dGggJz8nIGFuZCAndXNhZ2UnKSAqLw0KLQl7J3YnLCAwLCAidmVyc2lvbiJ9 LA0KLQl7J3onLCAxLCAiemVuZC1leHRlbnNpb24ifSwNCi0JeyctJywgMCwg TlVMTH0gLyogZW5kIG9mIGFyZ3MgKi8NCi19Ow0KKyNkZWZpbmUgT1BUU1RS SU5HICJhQ2M6ZDplZjpnOmhpbG1ucXI6c3c/dno6Ig0KIA0KIHN0YXRpYyBp bnQgcHJpbnRfbW9kdWxlX2luZm8oemVuZF9tb2R1bGVfZW50cnkgKm1vZHVs ZSwgdm9pZCAqYXJnIFRTUk1MU19EQykNCiB7DQpAQCAtMzU4LDEyICszMzAs OSBAQA0KIAkJcHJvZyA9ICJwaHAiOw0KIAl9DQogCQ0KLQlwaHBfcHJpbnRm KCAiVXNhZ2U6ICVzIFtvcHRpb25zXSBbLWZdIDxmaWxlPiBbLS1dIFthcmdz Li4uXVxuIg0KLQkgICAgICAgICAgICAiICAgICAgICVzIFtvcHRpb25zXSAt ciA8Y29kZT4gWy0tXSBbYXJncy4uLl1cbiINCi0JICAgICAgICAgICAgIiAg ICAgICAlcyBbb3B0aW9uc10gWy1CIDxiZWdpbl9jb2RlPl0gLVIgPGNvZGU+ IFstRSA8ZW5kX2NvZGU+XSBbLS1dIFthcmdzLi4uXVxuIg0KLQkgICAgICAg ICAgICAiICAgICAgICVzIFtvcHRpb25zXSBbLUIgPGJlZ2luX2NvZGU+XSAt RiA8ZmlsZT4gWy1FIDxlbmRfY29kZT5dIFstLV0gW2FyZ3MuLi5dXG4iDQot CSAgICAgICAgICAgICIgICAgICAgJXMgW29wdGlvbnNdIC0tIFthcmdzLi4u XVxuIg0KLQkgICAgICAgICAgICAiXG4iDQorCXBocF9wcmludGYoICJVc2Fn ZTogJXMgW29wdGlvbnNdIFstZl0gPGZpbGU+IFthcmdzLi4uXVxuIg0KKwkg ICAgICAgICAgICAiICAgICAgICVzIFtvcHRpb25zXSAtciA8Y29kZT4gW2Fy Z3MuLi5dXG4iDQorCSAgICAgICAgICAgICIgICAgICAgJXMgW29wdGlvbnNd IFstLSBhcmdzLi4uXVxuIg0KIAkJCQkiICAtYSAgICAgICAgICAgICAgIFJ1 biBpbnRlcmFjdGl2ZWx5XG4iDQogCQkJCSIgIC1jIDxwYXRoPnw8ZmlsZT4g TG9vayBmb3IgcGhwLmluaSBmaWxlIGluIHRoaXMgZGlyZWN0b3J5XG4iDQog CQkJCSIgIC1uICAgICAgICAgICAgICAgTm8gcGhwLmluaSBmaWxlIHdpbGwg YmUgdXNlZFxuIg0KQEAgLTM3NSwxMSArMzQ0LDYgQEANCiAJCQkJIiAgLWwg ICAgICAgICAgICAgICBTeW50YXggY2hlY2sgb25seSAobGludClcbiINCiAJ CQkJIiAgLW0gICAgICAgICAgICAgICBTaG93IGNvbXBpbGVkIGluIG1vZHVs ZXNcbiINCiAJCQkJIiAgLXIgPGNvZGU+ICAgICAgICBSdW4gUEhQIDxjb2Rl PiB3aXRob3V0IHVzaW5nIHNjcmlwdCB0YWdzIDw/Li4/PlxuIg0KLQkJCQki ICAtQiA8YmVnaW5fY29kZT4gIFJ1biBQSFAgPGJlZ2luX2NvZGU+IGJlZm9y ZSBwcm9jZXNzaW5nIGlucHV0IGxpbmVzXG4iDQotCQkJCSIgIC1SIDxjb2Rl PiAgICAgICAgUnVuIFBIUCA8Y29kZT4gZm9yIGV2ZXJ5IGlucHV0IGxpbmVc biINCi0JCQkJIiAgLUYgPGZpbGU+ICAgICAgICBQYXJzZSBhbmQgZXhlY3V0 ZSA8ZmlsZT4gZm9yIGV2ZXJ5IGlucHV0IGxpbmVcbiINCi0JCQkJIiAgLUUg PGVuZF9jb2RlPiAgICBSdW4gUEhQIDxlbmRfY29kZT4gYWZ0ZXIgcHJvY2Vz c2luZyBhbGwgaW5wdXQgbGluZXNcbiINCi0JCQkJIiAgLUggICAgICAgICAg ICAgICBIaWRlIGFueSBwYXNzZWQgYXJndW1lbnRzIGZyb20gZXh0ZXJuYWwg dG9vbHMuXG4iDQogCQkJCSIgIC1zICAgICAgICAgICAgICAgRGlzcGxheSBj b2xvdXIgc3ludGF4IGhpZ2hsaWdodGVkIHNvdXJjZS5cbiINCiAJCQkJIiAg LXYgICAgICAgICAgICAgICBWZXJzaW9uIG51bWJlclxuIg0KIAkJCQkiICAt dyAgICAgICAgICAgICAgIERpc3BsYXkgc291cmNlIHdpdGggc3RyaXBwZWQg Y29tbWVudHMgYW5kIHdoaXRlc3BhY2UuXG4iDQpAQCAtMzg3LDggKzM1MSw3 IEBADQogCQkJCSJcbiINCiAJCQkJIiAgYXJncy4uLiAgICAgICAgICBBcmd1 bWVudHMgcGFzc2VkIHRvIHNjcmlwdC4gVXNlIC0tIGFyZ3Mgd2hlbiBmaXJz dCBhcmd1bWVudCBcbiINCiAJCQkJIiAgICAgICAgICAgICAgICAgICBzdGFy dHMgd2l0aCAtIG9yIHNjcmlwdCBpcyByZWFkIGZyb20gc3RkaW5cbiINCi0J CQkJIlxuIg0KLQkJCQksIHByb2csIHByb2csIHByb2csIHByb2csIHByb2cp Ow0KKwkJCQksIHByb2csIHByb2csIHByb2cpOw0KIH0NCiAvKiB9fX0gKi8N CiANCkBAIC00MjMsOSArMzg2LDYgQEANCiAJZWZyZWUoKmFyZyk7DQogfQ0K IA0KLXN0YXRpYyBwaHBfc3RyZWFtX2NvbnRleHQgKnNjX2luX3Byb2Nlc3Mg PSBOVUxMOw0KLXN0YXRpYyBwaHBfc3RyZWFtICpzX2luX3Byb2Nlc3MgPSBO VUxMOw0KLQ0KIHN0YXRpYyB2b2lkIGNsaV9yZWdpc3Rlcl9maWxlX2hhbmRs ZXMoVFNSTUxTX0QpDQogew0KIAl6dmFsICp6aW4sICp6b3V0LCAqemVycjsN CkBAIC00NDUsOSArNDA1LDYgQEANCiAJCXJldHVybjsNCiAJfQ0KIA0KLQlz Y19pbl9wcm9jZXNzID0gc2NfaW47DQotCXNfaW5fcHJvY2VzcyA9IHNfaW47 DQotDQogCXBocF9zdHJlYW1fdG9fenZhbChzX2luLCAgemluKTsNCiAJcGhw X3N0cmVhbV90b196dmFsKHNfb3V0LCB6b3V0KTsNCiAJcGhwX3N0cmVhbV90 b196dmFsKHNfZXJyLCB6ZXJyKTsNCkBAIC00NzUsNDIgKzQzMiw2IEBADQog CUZSRUVfWlZBTCh6ZXJyKTsNCiB9DQogDQotc3RhdGljIGNvbnN0IGNoYXIg KnBhcmFtX21vZGVfY29uZmxpY3QgPSAiRWl0aGVyIGV4ZWN1dGUgZGlyZWN0 IGNvZGUsIHByb2Nlc3Mgc3RkaW4gb3IgdXNlIGEgZmlsZS5cbiI7DQotDQot Lyoge3t7IGNsaV9zZWVrX2ZpbGVfYmVnaW4NCi0gKi8NCi1zdGF0aWMgaW50 IGNsaV9zZWVrX2ZpbGVfYmVnaW4oemVuZF9maWxlX2hhbmRsZSAqZmlsZV9o YW5kbGUsIGNoYXIgKnNjcmlwdF9maWxlLCBpbnQgKmxpbmVubyBUU1JNTFNf REMpDQotew0KLQlpbnQgYzsNCi0NCi0JKmxpbmVubyA9IDE7DQotDQotCWlm ICghKGZpbGVfaGFuZGxlLT5oYW5kbGUuZnAgPSBWQ1dEX0ZPUEVOKHNjcmlw dF9maWxlLCAicmIiKSkpIHsNCi0JCXBocF9wcmludGYoIkNvdWxkIG5vdCBv cGVuIGlucHV0IGZpbGU6ICVzLlxuIiwgc2NyaXB0X2ZpbGUpOw0KLQkJcmV0 dXJuIEZBSUxVUkU7DQotCX0NCi0JZmlsZV9oYW5kbGUtPmZpbGVuYW1lID0g c2NyaXB0X2ZpbGU7DQotCS8qICMhcGhwIHN1cHBvcnQgKi8NCi0JYyA9IGZn ZXRjKGZpbGVfaGFuZGxlLT5oYW5kbGUuZnApOw0KLQlpZiAoYyA9PSAnIycp IHsNCi0JCXdoaWxlIChjICE9IDEwICYmIGMgIT0gMTMpIHsNCi0JCQljID0g ZmdldGMoZmlsZV9oYW5kbGUtPmhhbmRsZS5mcCk7CS8qIHNraXAgdG8gZW5k IG9mIGxpbmUgKi8NCi0JCX0NCi0JCS8qIGhhbmRsZSBzaXR1YXRpb25zIHdo ZXJlIGxpbmUgaXMgdGVybWluYXRlZCBieSBcclxuICovDQotCQlpZiAoYyA9 PSAxMykgew0KLQkJCWlmIChmZ2V0YyhmaWxlX2hhbmRsZS0+aGFuZGxlLmZw KSAhPSAxMCkgew0KLQkJCQlsb25nIHBvcyA9IGZ0ZWxsKGZpbGVfaGFuZGxl LT5oYW5kbGUuZnApOw0KLQkJCQlmc2VlayhmaWxlX2hhbmRsZS0+aGFuZGxl LmZwLCBwb3MgLSAxLCBTRUVLX1NFVCk7DQotCQkJfQ0KLQkJfQ0KLQkJKmxp bmVubyA9IC0yOw0KLQl9IGVsc2Ugew0KLQkJcmV3aW5kKGZpbGVfaGFuZGxl LT5oYW5kbGUuZnApOw0KLQl9DQotCXJldHVybiBTVUNDRVNTOw0KLX0NCi0v KiB9fX0gKi8NCi0NCiAvKiB7e3sgbWFpbg0KICAqLw0KIGludCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pDQpAQCAtNTIwLDE4ICs0NDEsMTYgQEAN CiAJemVuZF9maWxlX2hhbmRsZSBmaWxlX2hhbmRsZTsNCiAvKiB0ZW1wb3Jh cnkgbG9jYWxzICovDQogCWludCBiZWhhdmlvcj1QSFBfTU9ERV9TVEFOREFS RDsNCi0JaW50IG9yaWdfb3B0aW5kPW9wdGluZDsNCi0JY2hhciAqb3JpZ19v cHRhcmc9b3B0YXJnOw0KKwlpbnQgbm9faGVhZGVycz0xOw0KKwlpbnQgb3Jp Z19vcHRpbmQ9YXBfcGhwX29wdGluZDsNCisJY2hhciAqb3JpZ19vcHRhcmc9 YXBfcGhwX29wdGFyZzsNCiAJY2hhciAqYXJnX2ZyZWU9TlVMTCwgKiphcmdf ZXhjcD0mYXJnX2ZyZWU7DQogCWNoYXIgKnNjcmlwdF9maWxlPU5VTEw7DQog CXplbmRfbGxpc3QgZ2xvYmFsX3ZhcnM7DQotCWludCBpbnRlcmFjdGl2ZT0w Ow0KKwlpbnQgaW50ZXJhY3RpdmU9MCwgaXNfaGFzaGJhbmc9MDsNCiAJaW50 IG1vZHVsZV9zdGFydGVkID0gMDsNCi0JaW50IGxpbmVubyA9IDA7DQotCWNo YXIgKmV4ZWNfZGlyZWN0PU5VTEwsICpleGVjX3J1bj1OVUxMLCAqZXhlY19i ZWdpbj1OVUxMLCAqZXhlY19lbmQ9TlVMTDsNCi0JY29uc3QgY2hhciAqcGFy YW1fZXJyb3I9TlVMTDsNCi0JaW50IHNjYW5faW5wdXQgPSAwOw0KLQlpbnQg aGlkZV9hcmd2ID0gMDsNCisJY2hhciAqZXhlY19kaXJlY3Q9TlVMTDsNCisJ Y2hhciAqcGFyYW1fZXJyb3I9TlVMTDsNCiAvKiBlbmQgb2YgdGVtcG9yYXJ5 IGxvY2FscyAqLw0KICNpZmRlZiBaVFMNCiAJemVuZF9jb21waWxlcl9nbG9i YWxzICpjb21waWxlcl9nbG9iYWxzOw0KQEAgLTU3MCwxOCArNDg5LDE4IEBA DQogI2VuZGlmDQogDQogDQotCXdoaWxlICgoYyA9IHBocF9nZXRvcHQoYXJn YywgYXJndiwgT1BUSU9OUywgJm9wdGFyZywgJm9wdGluZCwgMCkpIT0tMSkg ew0KKwl3aGlsZSAoKGM9YXBfcGhwX2dldG9wdChhcmdjLCBhcmd2LCBPUFRT VFJJTkcpKSE9LTEpIHsNCiAJCXN3aXRjaCAoYykgew0KIAkJY2FzZSAnYyc6 DQotCQkJY2xpX3NhcGlfbW9kdWxlLnBocF9pbmlfcGF0aF9vdmVycmlkZSA9 IHN0cmR1cChvcHRhcmcpOw0KKwkJCWNsaV9zYXBpX21vZHVsZS5waHBfaW5p X3BhdGhfb3ZlcnJpZGUgPSBzdHJkdXAoYXBfcGhwX29wdGFyZyk7DQogCQkJ YnJlYWs7DQogCQljYXNlICduJzoNCiAJCQljbGlfc2FwaV9tb2R1bGUucGhw X2luaV9pZ25vcmUgPSAxOw0KIAkJCWJyZWFrOw0KIAkJfQ0KIAl9DQotCW9w dGluZCA9IG9yaWdfb3B0aW5kOw0KLQlvcHRhcmcgPSBvcmlnX29wdGFyZzsN CisJYXBfcGhwX29wdGluZCA9IG9yaWdfb3B0aW5kOw0KKwlhcF9waHBfb3B0 YXJnID0gb3JpZ19vcHRhcmc7DQogDQogCWNsaV9zYXBpX21vZHVsZS5leGVj dXRhYmxlX2xvY2F0aW9uID0gYXJndlswXTsNCiANCkBAIC02MDYsNjkgKzUy NSwyMyBAQA0KIAltb2R1bGVfc3RhcnRlZCA9IDE7DQogDQogCXplbmRfZmly c3RfdHJ5IHsNCi0JCXplbmRfbGxpc3RfaW5pdCgmZ2xvYmFsX3ZhcnMsIHNp emVvZihjaGFyICopLCBOVUxMLCAwKTsNCi0NCi0JCXplbmRfdXYuaHRtbF9l cnJvcnMgPSAwOyAvKiB0ZWxsIHRoZSBlbmdpbmUgd2UncmUgaW4gbm9uLWh0 bWwgbW9kZSAqLw0KLQkJQ0coaW5fY29tcGlsYXRpb24pID0gMDsgLyogbm90 IGluaXRpYWxpemVkIGJ1dCBuZWVkZWQgZm9yIHNldmVyYWwgb3B0aW9ucyAq Lw0KLQkJRUcodW5pbml0aWFsaXplZF96dmFsX3B0cikgPSBOVUxMOw0KLQ0K LQkJaWYgKGNsaV9zYXBpX21vZHVsZS5waHBfaW5pX3BhdGhfb3ZlcnJpZGUg JiYgY2xpX3NhcGlfbW9kdWxlLnBocF9pbmlfaWdub3JlKSB7DQotCQkJUFVU UygiWW91IGNhbm5vdCB1c2UgYm90aCAtbiBhbmQgLWMgc3dpdGNoLiBVc2Ug LWggZm9yIGhlbHAuXG4iKTsNCi0JCQlleGl0X3N0YXR1cz0xOw0KLQkJCWdv dG8gb3V0X2VycjsNCi0JCX0NCi0JDQotCQl3aGlsZSAoKGMgPSBwaHBfZ2V0 b3B0KGFyZ2MsIGFyZ3YsIE9QVElPTlMsICZvcHRhcmcsICZvcHRpbmQsIDAp KSAhPSAtMSkgew0KKwkJd2hpbGUgKChjPWFwX3BocF9nZXRvcHQoYXJnYywg YXJndiwgT1BUU1RSSU5HKSkhPS0xKSB7DQogCQkJc3dpdGNoIChjKSB7DQot DQotCQkJY2FzZSAnaCc6IC8qIGhlbHAgJiBxdWl0ICovDQogCQkJY2FzZSAn Pyc6DQorCQkJCW5vX2hlYWRlcnMgPSAxOw0KIAkJCQlwaHBfb3V0cHV0X3N0 YXJ0dXAoKTsNCiAJCQkJcGhwX291dHB1dF9hY3RpdmF0ZShUU1JNTFNfQyk7 DQorCQkJCVNHKGhlYWRlcnNfc2VudCkgPSAxOw0KIAkJCQlwaHBfY2xpX3Vz YWdlKGFyZ3ZbMF0pOw0KIAkJCQlwaHBfZW5kX29iX2J1ZmZlcnMoMSBUU1JN TFNfQ0MpOw0KLQkJCQlleGl0X3N0YXR1cz0xOw0KLQkJCQlnb3RvIG91dF9l cnI7DQotDQotDQotCQkJY2FzZSAnaSc6IC8qIHBocCBpbmZvICYgcXVpdCAq Lw0KLQkJCQlpZiAocGhwX3JlcXVlc3Rfc3RhcnR1cChUU1JNTFNfQyk9PUZB SUxVUkUpIHsNCi0JCQkJCWdvdG8gZXJyOw0KLQkJCX0NCi0JCQkJcGhwX3By aW50X2luZm8oMHhGRkZGRkZGRiBUU1JNTFNfQ0MpOw0KLQkJCQlwaHBfZW5k X29iX2J1ZmZlcnMoMSBUU1JNTFNfQ0MpOw0KLQkJCQlleGl0X3N0YXR1cz0x Ow0KLQkJCQlnb3RvIG91dDsNCi0NCi0JCQljYXNlICdtJzogLyogbGlzdCBj b21waWxlZCBpbiBtb2R1bGVzICovDQotCQkJCXBocF9vdXRwdXRfc3RhcnR1 cCgpOw0KLQkJCQlwaHBfb3V0cHV0X2FjdGl2YXRlKFRTUk1MU19DKTsNCi0J CQkJcGhwX3ByaW50ZigiW1BIUCBNb2R1bGVzXVxuIik7DQotCQkJCXByaW50 X21vZHVsZXMoVFNSTUxTX0MpOw0KLQkJCQlwaHBfcHJpbnRmKCJcbltaZW5k IE1vZHVsZXNdXG4iKTsNCi0JCQkJcHJpbnRfZXh0ZW5zaW9ucyhUU1JNTFNf Qyk7DQotCQkJCXBocF9wcmludGYoIlxuIik7DQotCQkJCXBocF9lbmRfb2Jf YnVmZmVycygxIFRTUk1MU19DQyk7DQotCQkJCWV4aXRfc3RhdHVzPTE7DQot CQkJCWdvdG8gb3V0X2VycjsNCi0NCi0JCQljYXNlICd2JzogLyogc2hvdyBw aHAgdmVyc2lvbiAmIHF1aXQgKi8NCi0JCQkJaWYgKHBocF9yZXF1ZXN0X3N0 YXJ0dXAoVFNSTUxTX0MpPT1GQUlMVVJFKSB7DQotCQkJCQlnb3RvIGVycjsN Ci0JCQkJfQ0KLSNpZiBaRU5EX0RFQlVHDQotCQkJCXBocF9wcmludGYoIlBI UCAlcyAoJXMpIChidWlsdDogJXMgJXMpIChERUJVRylcbkNvcHlyaWdodCAo YykgMTk5Ny0yMDAzIFRoZSBQSFAgR3JvdXBcbiVzIiwgUEhQX1ZFUlNJT04s IHNhcGlfbW9kdWxlLm5hbWUsIF9fREFURV9fLCBfX1RJTUVfXywgZ2V0X3pl bmRfdmVyc2lvbigpKTsNCi0jZWxzZQ0KLQkJCQlwaHBfcHJpbnRmKCJQSFAg JXMgKCVzKSAoYnVpbHQ6ICVzICVzKVxuQ29weXJpZ2h0IChjKSAxOTk3LTIw MDMgVGhlIFBIUCBHcm91cFxuJXMiLCBQSFBfVkVSU0lPTiwgc2FwaV9tb2R1 bGUubmFtZSwgX19EQVRFX18sIF9fVElNRV9fLCBnZXRfemVuZF92ZXJzaW9u KCkpOw0KLSNlbmRpZg0KLQkJCQlwaHBfZW5kX29iX2J1ZmZlcnMoMSBUU1JN TFNfQ0MpOw0KLQkJCQlleGl0X3N0YXR1cz0xOw0KLQkJCQlnb3RvIG91dDsN Ci0NCi0JCQlkZWZhdWx0Og0KKwkJCQlleGl0KDEpOw0KIAkJCQlicmVhazsN CiAJCQl9DQogCQl9DQorCQlhcF9waHBfb3B0aW5kID0gb3JpZ19vcHRpbmQ7 DQorCQlhcF9waHBfb3B0YXJnID0gb3JpZ19vcHRhcmc7DQorDQorCQl6ZW5k X2xsaXN0X2luaXQoJmdsb2JhbF92YXJzLCBzaXplb2YoY2hhciAqKSwgTlVM TCwgMCk7DQogDQogICAgICAgICAvKiBTZXQgc29tZSBDTEkgZGVmYXVsdHMg Ki8NCiAJCVNHKG9wdGlvbnMpIHw9IFNBUElfT1BUSU9OX05PX0NIRElSOw0K QEAgLTY3OCw5ICs1NTEsMTkgQEANCiAJCUlOSV9IQVJEQ09ERUQoImltcGxp Y2l0X2ZsdXNoIiwgIjEiKTsNCiAJCUlOSV9IQVJEQ09ERUQoIm1heF9leGVj dXRpb25fdGltZSIsICIwIik7DQogDQotCQlvcHRpbmQgPSBvcmlnX29wdGlu ZDsNCi0JCW9wdGFyZyA9IG9yaWdfb3B0YXJnOw0KLQkJd2hpbGUgKChjID0g cGhwX2dldG9wdChhcmdjLCBhcmd2LCBPUFRJT05TLCAmb3B0YXJnLCAmb3B0 aW5kLCAwKSkgIT0gLTEpIHsNCisJCXplbmRfdXYuaHRtbF9lcnJvcnMgPSAw OyAvKiB0ZWxsIHRoZSBlbmdpbmUgd2UncmUgaW4gbm9uLWh0bWwgbW9kZSAq Lw0KKwkJQ0coaW5fY29tcGlsYXRpb24pID0gMDsgLyogbm90IGluaXRpYWxp emVkIGJ1dCBuZWVkZWQgZm9yIHNldmVyYWwgb3B0aW9ucyAqLw0KKwkJRUco dW5pbml0aWFsaXplZF96dmFsX3B0cikgPSBOVUxMOw0KKw0KKwkJaWYgKGNs aV9zYXBpX21vZHVsZS5waHBfaW5pX3BhdGhfb3ZlcnJpZGUgJiYgY2xpX3Nh cGlfbW9kdWxlLnBocF9pbmlfaWdub3JlKSB7DQorCQkJU0coaGVhZGVyc19z ZW50KSA9IDE7DQorCQkJU0cocmVxdWVzdF9pbmZvKS5ub19oZWFkZXJzID0g MTsNCisJCQlQVVRTKCJZb3UgY2Fubm90IHVzZSBib3RoIC1uIGFuZCAtYyBz d2l0Y2guIFVzZSAtaCBmb3IgaGVscC5cbiIpOw0KKwkJCWV4aXRfc3RhdHVz PTE7DQorCQkJZ290byBvdXRfZXJyOw0KKwkJfQ0KKwkNCisJCXdoaWxlICgo YyA9IGFwX3BocF9nZXRvcHQoYXJnYywgYXJndiwgT1BUU1RSSU5HKSkgIT0g LTEpIHsNCiAJCQlzd2l0Y2ggKGMpIHsNCiANCiAJCQljYXNlICdhJzoJLyog aW50ZXJhY3RpdmUgbW9kZSAqLw0KQEAgLTY5Miw1NiArNTc1LDgwIEBADQog CQkJCS8qIFRoaXMgaXMgZGVmYXVsdCBzbyBOT1AgKi8NCiAJCQkJYnJlYWs7 DQogCQkJY2FzZSAnZCc6IC8qIGRlZmluZSBpbmkgZW50cmllcyBvbiBjb21t YW5kIGxpbmUgKi8NCi0JCQkJZGVmaW5lX2NvbW1hbmRfbGluZV9pbmlfZW50 cnkob3B0YXJnKTsNCisJCQkJZGVmaW5lX2NvbW1hbmRfbGluZV9pbmlfZW50 cnkoYXBfcGhwX29wdGFyZyk7DQogCQkJCWJyZWFrOw0KIA0KIAkJCWNhc2Ug J2UnOiAvKiBlbmFibGUgZXh0ZW5kZWQgaW5mbyBvdXRwdXQgKi8NCiAJCQkJ Q0coZXh0ZW5kZWRfaW5mbykgPSAxOw0KIAkJCQlicmVhazsNCiANCi0JCQlj YXNlICdGJzoNCi0JCQkJaWYgKGJlaGF2aW9yID09IFBIUF9NT0RFX1BST0NF U1NfU1RESU4pIHsNCi0JCQkJCWlmIChleGVjX3J1biB8fCBzY3JpcHRfZmls ZSkgew0KLQkJCQkJCXBhcmFtX2Vycm9yID0gIllvdSBjYW4gdXNlIC1SIG9y IC1GIG9ubHkgb25jZS5cbiI7DQotCQkJCQkJYnJlYWs7DQotCQkJCQl9DQot CQkJCX0gZWxzZSBpZiAoYmVoYXZpb3IgIT0gUEhQX01PREVfU1RBTkRBUkQp IHsNCi0JCQkJCXBhcmFtX2Vycm9yID0gcGFyYW1fbW9kZV9jb25mbGljdDsN Ci0JCQkJCWJyZWFrOw0KLQkJCQl9DQotCQkJCWJlaGF2aW9yPVBIUF9NT0RF X1BST0NFU1NfU1RESU47DQotCQkJCXNjcmlwdF9maWxlID0gb3B0YXJnOw0K LQkJCQlicmVhazsNCi0NCiAJCQljYXNlICdmJzogLyogcGFyc2UgZmlsZSAq Lw0KLQkJCQlpZiAoYmVoYXZpb3IgPT0gUEhQX01PREVfQ0xJX0RJUkVDVCB8 fCBiZWhhdmlvciA9PSBQSFBfTU9ERV9QUk9DRVNTX1NURElOKSB7DQotCQkJ CQlwYXJhbV9lcnJvciA9IHBhcmFtX21vZGVfY29uZmxpY3Q7DQotCQkJCQli cmVhazsNCi0JCQkJfSBlbHNlIGlmIChzY3JpcHRfZmlsZSkgew0KLQkJCQkJ cGFyYW1fZXJyb3IgPSAiWW91IGNhbiB1c2UgLWYgb25seSBvbmNlLlxuIjsN CisJCQkJaWYgKGJlaGF2aW9yID09IFBIUF9NT0RFX0NMSV9ESVJFQ1QpIHsN CisJCQkJCXBhcmFtX2Vycm9yID0gIkVpdGhlciBleGVjdXRlIGRpcmVjdCBj b2RlIG9yIHVzZSBhIGZpbGUuXG4iOw0KIAkJCQkJYnJlYWs7DQogCQkJCX0N Ci0JCQkJc2NyaXB0X2ZpbGUgPSBvcHRhcmc7DQorCQkJCXNjcmlwdF9maWxl ID0gYXBfcGhwX29wdGFyZzsNCisJCQkJbm9faGVhZGVycyA9IDE7DQogCQkJ CWJyZWFrOw0KIA0KIAkJCWNhc2UgJ2cnOiAvKiBkZWZpbmUgZ2xvYmFsIHZh cmlhYmxlcyBvbiBjb21tYW5kIGxpbmUgKi8NCiAJCQkJew0KLQkJCQkJY2hh ciAqYXJnID0gZXN0cmR1cChvcHRhcmcpOw0KKwkJCQkJY2hhciAqYXJnID0g ZXN0cmR1cChhcF9waHBfb3B0YXJnKTsNCiANCiAJCQkJCXplbmRfbGxpc3Rf YWRkX2VsZW1lbnQoJmdsb2JhbF92YXJzLCAmYXJnKTsNCiAJCQkJfQ0KIAkJ CQlicmVhazsNCiANCisJCQljYXNlICdoJzogLyogaGVscCAmIHF1aXQgKi8N CisJCQljYXNlICc/JzoNCisJCQkJbm9faGVhZGVycyA9IDE7DQorCQkJCXBo cF9vdXRwdXRfc3RhcnR1cCgpOw0KKwkJCQlwaHBfb3V0cHV0X2FjdGl2YXRl KFRTUk1MU19DKTsNCisJCQkJU0coaGVhZGVyc19zZW50KSA9IDE7DQorCQkJ CXBocF9jbGlfdXNhZ2UoYXJndlswXSk7DQorCQkJCXBocF9lbmRfb2JfYnVm ZmVycygxIFRTUk1MU19DQyk7DQorCQkJCWV4aXRfc3RhdHVzPTE7DQorCQkJ CXplbmRfaW5pX2RlYWN0aXZhdGUoVFNSTUxTX0MpOw0KKwkJCQlnb3RvIG91 dF9lcnI7DQorDQorCQkJY2FzZSAnaSc6IC8qIHBocCBpbmZvICYgcXVpdCAq Lw0KKwkJCQlpZiAocGhwX3JlcXVlc3Rfc3RhcnR1cChUU1JNTFNfQyk9PUZB SUxVUkUpIHsNCisJCQkJCWdvdG8gZXJyOw0KKwkJCQl9DQorCQkJCWlmIChu b19oZWFkZXJzKSB7DQorCQkJCQlTRyhoZWFkZXJzX3NlbnQpID0gMTsNCisJ CQkJCVNHKHJlcXVlc3RfaW5mbykubm9faGVhZGVycyA9IDE7DQorCQkJCX0N CisJCQkJcGhwX3ByaW50X2luZm8oMHhGRkZGRkZGRiBUU1JNTFNfQ0MpOw0K KwkJCQlwaHBfZW5kX29iX2J1ZmZlcnMoMSBUU1JNTFNfQ0MpOw0KKwkJCQll eGl0X3N0YXR1cz0xOw0KKwkJCQlnb3RvIG91dDsNCisNCiAJCQljYXNlICds JzogLyogc3ludGF4IGNoZWNrIG1vZGUgKi8NCiAJCQkJaWYgKGJlaGF2aW9y ICE9IFBIUF9NT0RFX1NUQU5EQVJEKSB7DQogCQkJCQlicmVhazsNCiAJCQkJ fQ0KKwkJCQlub19oZWFkZXJzID0gMTsNCiAJCQkJYmVoYXZpb3I9UEhQX01P REVfTElOVDsNCiAJCQkJYnJlYWs7DQogDQorCQkJY2FzZSAnbSc6IC8qIGxp c3QgY29tcGlsZWQgaW4gbW9kdWxlcyAqLw0KKwkJCQlwaHBfb3V0cHV0X3N0 YXJ0dXAoKTsNCisJCQkJcGhwX291dHB1dF9hY3RpdmF0ZShUU1JNTFNfQyk7 DQorCQkJCVNHKGhlYWRlcnNfc2VudCkgPSAxOw0KKwkJCQlwaHBfcHJpbnRm KCJbUEhQIE1vZHVsZXNdXG4iKTsNCisJCQkJcHJpbnRfbW9kdWxlcyhUU1JN TFNfQyk7DQorCQkJCXBocF9wcmludGYoIlxuW1plbmQgTW9kdWxlc11cbiIp Ow0KKwkJCQlwcmludF9leHRlbnNpb25zKFRTUk1MU19DKTsNCisJCQkJcGhw X3ByaW50ZigiXG4iKTsNCisJCQkJcGhwX2VuZF9vYl9idWZmZXJzKDEgVFNS TUxTX0NDKTsNCisJCQkJZXhpdF9zdGF0dXM9MTsNCisJCQkJemVuZF9pbmlf ZGVhY3RpdmF0ZShUU1JNTFNfQyk7DQorCQkJCWdvdG8gb3V0X2VycjsNCisN CiAjaWYgMCAvKiBub3QgeWV0IG9wZXJhdGlvbmFsLCBzZWUgYWxzbyBiZWxv dyAuLi4gKi8NCiAJCQljYXNlICcnOiAvKiBnZW5lcmF0ZSBpbmRlbnRlZCBz b3VyY2UgbW9kZSovDQotCQkJCWlmIChiZWhhdmlvciA9PSBQSFBfTU9ERV9D TElfRElSRUNUIHx8IGJlaGF2aW9yID09IFBIUF9NT0RFX1BST0NFU1NfU1RE SU4pIHsNCisJCQkJaWYgKGJlaGF2aW9yID09IFBIUF9NT0RFX0NMSV9ESVJF Q1QpIHsNCiAJCQkJCXBhcmFtX2Vycm9yID0gIlNvdXJjZSBpbmRlbnRpbmcg b25seSB3b3JrcyBmb3IgZmlsZXMuXG4iOw0KIAkJCQkJYnJlYWs7DQogCQkJ CX0NCkBAIC03NTQsNzIgKzY2MSwzOCBAQA0KIAkJCQlicmVhazsNCiANCiAJ CQljYXNlICdyJzogLyogcnVuIGNvZGUgZnJvbSBjb21tYW5kIGxpbmUgKi8N Ci0JCQkJaWYgKGJlaGF2aW9yID09IFBIUF9NT0RFX0NMSV9ESVJFQ1QpIHsN Ci0JCQkJCWlmIChleGVjX2RpcmVjdCB8fCBzY3JpcHRfZmlsZSkgew0KLQkJ CQkJCXBhcmFtX2Vycm9yID0gIllvdSBjYW4gdXNlIC1yIG9ubHkgb25jZS5c biI7DQotCQkJCQkJYnJlYWs7DQotCQkJCQl9DQotCQkJCX0gZWxzZSBpZiAo YmVoYXZpb3IgIT0gUEhQX01PREVfU1RBTkRBUkQpIHsNCi0JCQkJCXBhcmFt X2Vycm9yID0gcGFyYW1fbW9kZV9jb25mbGljdDsNCisJCQkJaWYgKGJlaGF2 aW9yICE9IFBIUF9NT0RFX1NUQU5EQVJEKSB7DQorCQkJCQlwYXJhbV9lcnJv ciA9ICJFaXRoZXIgZXhlY3V0ZSBkaXJlY3QgY29kZSBvciB1c2UgYSBmaWxl LlxuIjsNCiAJCQkJCWJyZWFrOw0KIAkJCQl9DQogCQkJCWJlaGF2aW9yPVBI UF9NT0RFX0NMSV9ESVJFQ1Q7DQotCQkJCWV4ZWNfZGlyZWN0PW9wdGFyZzsN Ci0JCQkJYnJlYWs7DQotDQotCQkJY2FzZSAnUic6DQotCQkJCWlmIChiZWhh dmlvciA9PSBQSFBfTU9ERV9QUk9DRVNTX1NURElOKSB7DQotCQkJCQlpZiAo ZXhlY19ydW4gfHwgc2NyaXB0X2ZpbGUpIHsNCi0JCQkJCQlwYXJhbV9lcnJv ciA9ICJZb3UgY2FuIHVzZSAtUiBvciAtRiBvbmx5IG9uY2UuXG4iOw0KLQkJ CQkJYnJlYWs7DQotCQkJCX0NCi0JCQkJfSBlbHNlIGlmIChiZWhhdmlvciAh PSBQSFBfTU9ERV9TVEFOREFSRCkgew0KLQkJCQkJcGFyYW1fZXJyb3IgPSBw YXJhbV9tb2RlX2NvbmZsaWN0Ow0KLQkJCQkJYnJlYWs7DQotCQkJCX0NCi0J CQkJYmVoYXZpb3I9UEhQX01PREVfUFJPQ0VTU19TVERJTjsNCi0JCQkJZXhl Y19ydW49b3B0YXJnOw0KLQkJCQlicmVhazsNCi0NCi0JCQljYXNlICdCJzoN Ci0JCQkJaWYgKGJlaGF2aW9yID09IFBIUF9NT0RFX1BST0NFU1NfU1RESU4p IHsNCi0JCQkJCWlmIChleGVjX2JlZ2luKSB7DQotCQkJCQkJcGFyYW1fZXJy b3IgPSAiWW91IGNhbiB1c2UgLUIgb25seSBvbmNlLlxuIjsNCi0JCQkJCQli cmVhazsNCi0JCQkJfQ0KLQkJCQl9IGVsc2UgaWYgKGJlaGF2aW9yICE9IFBI UF9NT0RFX1NUQU5EQVJEKSB7DQotCQkJCQlwYXJhbV9lcnJvciA9IHBhcmFt X21vZGVfY29uZmxpY3Q7DQotCQkJCQlicmVhazsNCi0JCQkJfQ0KLQkJCQli ZWhhdmlvcj1QSFBfTU9ERV9QUk9DRVNTX1NURElOOw0KLQkJCQlleGVjX2Jl Z2luPW9wdGFyZzsNCi0JCQkJYnJlYWs7DQotDQotCQkJY2FzZSAnRSc6DQot CQkJCWlmIChiZWhhdmlvciA9PSBQSFBfTU9ERV9QUk9DRVNTX1NURElOKSB7 DQotCQkJCQlpZiAoZXhlY19lbmQpIHsNCi0JCQkJCQlwYXJhbV9lcnJvciA9 ICJZb3UgY2FuIHVzZSAtRSBvbmx5IG9uY2UuXG4iOw0KLQkJCQkJCWJyZWFr Ow0KLQkJCQkJfQ0KLQkJCQl9IGVsc2UgaWYgKGJlaGF2aW9yICE9IFBIUF9N T0RFX1NUQU5EQVJEKSB7DQotCQkJCQlwYXJhbV9lcnJvciA9IHBhcmFtX21v ZGVfY29uZmxpY3Q7DQotCQkJCQlicmVhazsNCi0JCQkJfQ0KLQkJCQlzY2Fu X2lucHV0ID0gMTsNCi0JCQkJYmVoYXZpb3I9UEhQX01PREVfUFJPQ0VTU19T VERJTjsNCi0JCQkJZXhlY19lbmQ9b3B0YXJnOw0KKwkJCQlleGVjX2RpcmVj dD1hcF9waHBfb3B0YXJnOw0KIAkJCQlicmVhazsNCiANCiAJCQljYXNlICdz JzogLyogZ2VuZXJhdGUgaGlnaGxpZ2h0ZWQgSFRNTCBmcm9tIHNvdXJjZSAq Lw0KLQkJCQlpZiAoYmVoYXZpb3IgPT0gUEhQX01PREVfQ0xJX0RJUkVDVCB8 fCBiZWhhdmlvciA9PSBQSFBfTU9ERV9QUk9DRVNTX1NURElOKSB7DQorCQkJ CWlmIChiZWhhdmlvciA9PSBQSFBfTU9ERV9DTElfRElSRUNUKSB7DQogCQkJ CQlwYXJhbV9lcnJvciA9ICJTb3VyY2UgaGlnaGxpZ2h0aW5nIG9ubHkgd29y a3MgZm9yIGZpbGVzLlxuIjsNCiAJCQkJCWJyZWFrOw0KIAkJCQl9DQogCQkJ CWJlaGF2aW9yPVBIUF9NT0RFX0hJR0hMSUdIVDsNCiAJCQkJYnJlYWs7DQog DQorCQkJY2FzZSAndic6IC8qIHNob3cgcGhwIHZlcnNpb24gJiBxdWl0ICov DQorCQkJCW5vX2hlYWRlcnMgPSAxOw0KKwkJCQlpZiAocGhwX3JlcXVlc3Rf c3RhcnR1cChUU1JNTFNfQyk9PUZBSUxVUkUpIHsNCisJCQkJCWdvdG8gZXJy Ow0KKwkJCQl9DQorCQkJCWlmIChub19oZWFkZXJzKSB7DQorCQkJCQlTRyho ZWFkZXJzX3NlbnQpID0gMTsNCisJCQkJCVNHKHJlcXVlc3RfaW5mbykubm9f aGVhZGVycyA9IDE7DQorCQkJCX0NCisJCQkJcGhwX3ByaW50ZigiUEhQICVz ICglcykgKGJ1aWx0OiAlcyAlcylcbkNvcHlyaWdodCAoYykgMTk5Ny0yMDAz IFRoZSBQSFAgR3JvdXBcbiVzIiwgUEhQX1ZFUlNJT04sIHNhcGlfbW9kdWxl Lm5hbWUsIF9fREFURV9fLCBfX1RJTUVfXywgZ2V0X3plbmRfdmVyc2lvbigp KTsNCisJCQkJcGhwX2VuZF9vYl9idWZmZXJzKDEgVFNSTUxTX0NDKTsNCisJ CQkJZXhpdF9zdGF0dXM9MTsNCisJCQkJZ290byBvdXQ7DQorDQogCQkJY2Fz ZSAndyc6DQotCQkJCWlmIChiZWhhdmlvciA9PSBQSFBfTU9ERV9DTElfRElS RUNUIHx8IGJlaGF2aW9yID09IFBIUF9NT0RFX1BST0NFU1NfU1RESU4pIHsN CisJCQkJaWYgKGJlaGF2aW9yID09IFBIUF9NT0RFX0NMSV9ESVJFQ1QpIHsN CiAJCQkJCXBhcmFtX2Vycm9yID0gIlNvdXJjZSBzdHJpcHBpbmcgb25seSB3 b3JrcyBmb3IgZmlsZXMuXG4iOw0KIAkJCQkJYnJlYWs7DQogCQkJCX0NCkBA IC04MjcsMTAgKzcwMCw3IEBADQogCQkJCWJyZWFrOw0KIA0KIAkJCWNhc2Ug J3onOiAvKiBsb2FkIGV4dGVuc2lvbiBmaWxlICovDQotCQkJCXplbmRfbG9h ZF9leHRlbnNpb24ob3B0YXJnKTsNCi0JCQkJYnJlYWs7DQotCQkJY2FzZSAn SCc6DQotCQkJCWhpZGVfYXJndiA9IDE7DQorCQkJCXplbmRfbG9hZF9leHRl bnNpb24oYXBfcGhwX29wdGFyZyk7DQogCQkJCWJyZWFrOw0KIA0KIAkJCWRl ZmF1bHQ6DQpAQCAtODM5LDYgKzcwOSw4IEBADQogCQl9DQogDQogCQlpZiAo cGFyYW1fZXJyb3IpIHsNCisJCQlTRyhoZWFkZXJzX3NlbnQpID0gMTsNCisJ CQlTRyhyZXF1ZXN0X2luZm8pLm5vX2hlYWRlcnMgPSAxOw0KIAkJCVBVVFMo cGFyYW1fZXJyb3IpOw0KIAkJCWV4aXRfc3RhdHVzPTE7DQogCQkJZ290byBv dXRfZXJyOw0KQEAgLTg0NywyNSArNzE5LDM4IEBADQogCQlDRyhpbnRlcmFj dGl2ZSkgPSBpbnRlcmFjdGl2ZTsNCiANCiAJCS8qIG9ubHkgc2V0IHNjcmlw dF9maWxlIGlmIG5vdCBzZXQgYWxyZWFkeSBhbmQgbm90IGluIGRpcmVjdCBt b2RlIGFuZCBub3QgYXQgZW5kIG9mIHBhcmFtZXRlciBsaXN0ICovDQotCQlp ZiAoYXJnYyA+IG9wdGluZCANCi0JCSAgJiYgIXNjcmlwdF9maWxlIA0KLQkJ ICAmJiBiZWhhdmlvciE9UEhQX01PREVfQ0xJX0RJUkVDVCANCi0JCSAgJiYg YmVoYXZpb3IhPVBIUF9NT0RFX1BST0NFU1NfU1RESU4gDQotCQkgICYmIHN0 cmNtcChhcmd2W29wdGluZC0xXSwiLS0iKSkgDQotCQl7DQotCQkJc2NyaXB0 X2ZpbGU9YXJndltvcHRpbmRdOw0KLQkJCW9wdGluZCsrOw0KKwkJaWYgKGFy Z2MgPiBhcF9waHBfb3B0aW5kICYmICFzY3JpcHRfZmlsZSAmJiBiZWhhdmlv ciE9UEhQX01PREVfQ0xJX0RJUkVDVCAmJiBzdHJjbXAoYXJndlthcF9waHBf b3B0aW5kLTFdLCItLSIpKSB7DQorCQkJbm9faGVhZGVycyA9IDE7DQorCQkJ c2NyaXB0X2ZpbGU9YXJndlthcF9waHBfb3B0aW5kXTsNCisJCQlhcF9waHBf b3B0aW5kKys7DQogCQl9DQogCQlpZiAoc2NyaXB0X2ZpbGUpIHsNCi0JCQlp ZiAoY2xpX3NlZWtfZmlsZV9iZWdpbigmZmlsZV9oYW5kbGUsIHNjcmlwdF9m aWxlLCAmbGluZW5vIFRTUk1MU19DQykgIT0gU1VDQ0VTUykgew0KKwkJCWlm ICghKGZpbGVfaGFuZGxlLmhhbmRsZS5mcCA9IFZDV0RfRk9QRU4oc2NyaXB0 X2ZpbGUsICJyYiIpKSkgew0KKwkJCQlTRyhoZWFkZXJzX3NlbnQpID0gMTsN CisJCQkJU0cocmVxdWVzdF9pbmZvKS5ub19oZWFkZXJzID0gMTsNCisJCQkJ cGhwX3ByaW50ZigiQ291bGQgbm90IG9wZW4gaW5wdXQgZmlsZTogJXMuXG4i LCBzY3JpcHRfZmlsZSk7DQogCQkJCWdvdG8gZXJyOw0KIAkJCX0NCisJCQlm aWxlX2hhbmRsZS5maWxlbmFtZSA9IHNjcmlwdF9maWxlOw0KIAkJCXNjcmlw dF9maWxlbmFtZSA9IHNjcmlwdF9maWxlOw0KKwkJCS8qICMhcGhwIHN1cHBv cnQgKi8NCisJCQljID0gZmdldGMoZmlsZV9oYW5kbGUuaGFuZGxlLmZwKTsN CisJCQlpZiAoYyA9PSAnIycpIHsNCisJCQkJd2hpbGUgKGMgIT0gMTAgJiYg YyAhPSAxMykgew0KKwkJCQkJYyA9IGZnZXRjKGZpbGVfaGFuZGxlLmhhbmRs ZS5mcCk7ICAgICAgIC8qIHNraXAgdG8gZW5kIG9mIGxpbmUgKi8NCisJCQkJ fQ0KKwkJCQkvKiBoYW5kbGUgc2l0dWF0aW9ucyB3aGVyZSBsaW5lIGlzIHRl cm1pbmF0ZWQgYnkgXHJcbiAqLw0KKwkJCQlpZiAoYyA9PSAxMykgew0KKwkJ CQkJaWYgKGZnZXRjKGZpbGVfaGFuZGxlLmhhbmRsZS5mcCkgIT0gMTApIHsN CisJCQkJCQlsb25nIHBvcyA9IGZ0ZWxsKGZpbGVfaGFuZGxlLmhhbmRsZS5m cCk7DQorCQkJCQkJZnNlZWsoZmlsZV9oYW5kbGUuaGFuZGxlLmZwLCBwb3Mg LSAxLCBTRUVLX1NFVCk7DQorCQkJCQl9DQorCQkJCX0NCisJCQkJaXNfaGFz aGJhbmcgPSAxOw0KKwkJCX0gZWxzZSB7DQorCQkJCXJld2luZChmaWxlX2hh bmRsZS5oYW5kbGUuZnApOw0KKwkJCX0NCiAJCX0gZWxzZSB7DQotCQkJLyog V2UgY291bGQgaGFuZGxlIFBIUF9NT0RFX1BST0NFU1NfU1RESU4gaW4gYSBk aWZmZXJlbnQgbWFubmVyICAqLw0KLQkJCS8qIGhlcmUgYnV0IHRoaXMgd291 bGQgbWFrZSB0aGluZ3Mgb25seSBtb3JlIGNvbXBsaWNhdGVkLiBBbmQgaXQg Ki8NCi0JCQkvKiBpcyBjb25zaXRlbnQgd2l0aCB0aGUgd2F5IC1SIHdvcmtz IHdoZXJlIHRoZSBzdGRpbiBmaWxlIGhhbmRsZSovDQotCQkJLyogaXMgYWxz byBhY2Nlc3NpYmxlLiAqLw0KIAkJCWZpbGVfaGFuZGxlLmZpbGVuYW1lID0g Ii0iOw0KIAkJCWZpbGVfaGFuZGxlLmhhbmRsZS5mcCA9IHN0ZGluOw0KIAkJ fQ0KQEAgLTg3NCwzMCArNzU5LDM0IEBADQogCQlmaWxlX2hhbmRsZS5mcmVl X2ZpbGVuYW1lID0gMDsNCiAJCXBocF9zZWxmID0gZmlsZV9oYW5kbGUuZmls ZW5hbWU7DQogDQotCQkvKiBiZWZvcmUgcmVnaXN0ZXJpbmcgYXJndiB0byBt b2R1bGUgZXhjaGFuZ2UgdGhlICpuZXcqIGFyZ3ZbMF0gKi8NCisJCS8qIGJl Zm9yZSByZWdpc3RlcmluZyBhcmd2IHRvIG1vZHVsdWxlIGV4Y2hhbmdlIHRo ZSAqbmV3KiBhcmd2WzBdICovDQogCQkvKiB3ZSBjYW4gYWNoaWV2ZSB0aGlz IHdpdGhvdXQgYWxsb2NhdGluZyBtb3JlIG1lbW9yeSAqLw0KLQkJU0cocmVx dWVzdF9pbmZvKS5hcmdjPWFyZ2Mtb3B0aW5kKzE7DQotCQlhcmdfZXhjcCA9 IGFyZ3Yrb3B0aW5kLTE7DQotCQlhcmdfZnJlZSA9IGFyZ3Zbb3B0aW5kLTFd Ow0KKwkJU0cocmVxdWVzdF9pbmZvKS5hcmdjPWFyZ2MtYXBfcGhwX29wdGlu ZCsxOw0KKwkJYXJnX2V4Y3AgPSBhcmd2K2FwX3BocF9vcHRpbmQtMTsNCisJ CWFyZ19mcmVlID0gYXJndlthcF9waHBfb3B0aW5kLTFdOw0KIAkJU0cocmVx dWVzdF9pbmZvKS5wYXRoX3RyYW5zbGF0ZWQgPSBmaWxlX2hhbmRsZS5maWxl bmFtZTsNCi0JCWFyZ3Zbb3B0aW5kLTFdID0gZmlsZV9oYW5kbGUuZmlsZW5h bWU7DQotCQlTRyhyZXF1ZXN0X2luZm8pLmFyZ3Y9YXJnditvcHRpbmQtMTsN CisJCWFyZ3ZbYXBfcGhwX29wdGluZC0xXSA9IGZpbGVfaGFuZGxlLmZpbGVu YW1lOw0KKwkJU0cocmVxdWVzdF9pbmZvKS5hcmd2PWFyZ3YrYXBfcGhwX29w dGluZC0xOw0KIA0KIAkJaWYgKHBocF9yZXF1ZXN0X3N0YXJ0dXAoVFNSTUxT X0MpPT1GQUlMVVJFKSB7DQogCQkJKmFyZ19leGNwID0gYXJnX2ZyZWU7DQog CQkJZmNsb3NlKGZpbGVfaGFuZGxlLmhhbmRsZS5mcCk7DQorCQkJU0coaGVh ZGVyc19zZW50KSA9IDE7DQorCQkJU0cocmVxdWVzdF9pbmZvKS5ub19oZWFk ZXJzID0gMTsNCiAJCQlwaHBfcmVxdWVzdF9zaHV0ZG93bigodm9pZCAqKSAw KTsNCiAJCQlQVVRTKCJDb3VsZCBub3Qgc3RhcnR1cC5cbiIpOw0KIAkJCWdv dG8gZXJyOw0KIAkJfQ0KLQkJQ0coemVuZF9saW5lbm8pID0gbGluZW5vOw0K LQkJKmFyZ19leGNwID0gYXJnX2ZyZWU7IC8qIHJlY29uc3R1Y3QgYXJndiAq Lw0KIA0KLQkJaWYgKGhpZGVfYXJndikgew0KLQkJCWludCBpOw0KLQkJCWZv ciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsNCi0JCQkJbWVtc2V0KGFyZ3Zb aV0sIDAsIHN0cmxlbihhcmd2W2ldKSk7DQotCQkJfQ0KKwkJLyogQ29ycmVj dCBsaW5lIG51bWJlcnMgd2hlbiAjIXBocCBpcyB1c2VkLiBUaGlzIGlzIHJl c2V0IGluIHBocF9yZXF1ZXN0X3N0YXJ0dXAoKS4gKi8NCisJCWlmIChpc19o YXNoYmFuZykgew0KKwkJCUNHKHplbmRfbGluZW5vKSA9IC0yOw0KKwkJfQ0K Kw0KKwkJKmFyZ19leGNwID0gYXJnX2ZyZWU7IC8qIHJlY29uc3R1Y3QgYXJn diAqLw0KKwkJaWYgKG5vX2hlYWRlcnMpIHsNCisJCQlTRyhoZWFkZXJzX3Nl bnQpID0gMTsNCisJCQlTRyhyZXF1ZXN0X2luZm8pLm5vX2hlYWRlcnMgPSAx Ow0KIAkJfQ0KIA0KIAkJLyogVGhpcyBhY3R1YWxseSBkZXN0cnVjdHMgdGhl IGVsZW1lbnRzIG9mIHRoZSBsaXN0IC0gdWdseSBoYWNrICovDQpAQCAtOTU1 LDU4ICs4NDQsNiBAQA0KIAkJCQlleGl0X3N0YXR1cz0yNTQ7DQogCQkJfQ0K IAkJCWJyZWFrOw0KLQkJCQ0KLQkJY2FzZSBQSFBfTU9ERV9QUk9DRVNTX1NU RElOOg0KLQkJCXsNCi0JCQkJY2hhciAqaW5wdXQ7DQotCQkJCXNpemVfdCBs ZW4sIGluZGV4ID0gMDsNCi0JCQkJcHZhbCAqYXJnbiwgKmFyZ2k7DQotDQot CQkJCWNsaV9yZWdpc3Rlcl9maWxlX2hhbmRsZXMoVFNSTUxTX0MpOw0KLQkN Ci0JCQkJaWYgKGV4ZWNfYmVnaW4gJiYgemVuZF9ldmFsX3N0cmluZyhleGVj X2JlZ2luLCBOVUxMLCAiQ29tbWFuZCBsaW5lIGJlZ2luIGNvZGUiIFRTUk1M U19DQykgPT0gRkFJTFVSRSkgew0KLQkJCQkJZXhpdF9zdGF0dXM9MjU0Ow0K LQkJCQl9DQotCQkJCUFMTE9DX1pWQUwoYXJnaSk7DQotCQkJCVpfVFlQRV9Q KGFyZ2kpID0gSVNfTE9ORzsNCi0JCQkJWl9MVkFMX1AoYXJnaSkgPSBpbmRl eDsNCi0JCQkJSU5JVF9QWlZBTChhcmdpKTsNCi0JCQkJemVuZF9oYXNoX3Vw ZGF0ZSgmRUcoc3ltYm9sX3RhYmxlKSwgImFyZ2kiLCBzaXplb2YoImFyZ2ki KSwgJmFyZ2ksIHNpemVvZihwdmFsICopLCBOVUxMKTsNCi0JCQkJd2hpbGUg KGV4aXRfc3RhdHVzID09IFNVQ0NFU1MgJiYgKGlucHV0PXBocF9zdHJlYW1f Z2V0cyhzX2luX3Byb2Nlc3MsIE5VTEwsIDApKSAhPSBOVUxMKSB7DQotCQkJ CQlsZW4gPSBzdHJsZW4oaW5wdXQpOw0KLQkJCQkJd2hpbGUgKGxlbi0tICYm IChpbnB1dFtsZW5dPT0nXG4nIHx8IGlucHV0W2xlbl09PSdccicpKSB7DQot CQkJCQkJaW5wdXRbbGVuXSA9ICdcMCc7DQotCQkJCQl9DQotCQkJCQlBTExP Q19aVkFMKGFyZ24pOw0KLQkJCQkJWl9UWVBFX1AoYXJnbikgPSBJU19TVFJJ Tkc7DQotCQkJCQlaX1NUUkxFTl9QKGFyZ24pID0gKytsZW47DQotCQkJCQla X1NUUlZBTF9QKGFyZ24pID0gZXN0cm5kdXAoaW5wdXQsIGxlbik7DQotCQkJ CQlJTklUX1BaVkFMKGFyZ24pOw0KLQkJCQkJemVuZF9oYXNoX3VwZGF0ZSgm RUcoc3ltYm9sX3RhYmxlKSwgImFyZ24iLCBzaXplb2YoImFyZ24iKSwgJmFy Z24sIHNpemVvZihwdmFsICopLCBOVUxMKTsNCi0JCQkJCVpfTFZBTF9QKGFy Z2kpID0gKytpbmRleDsNCi0JCQkJCWlmIChleGVjX3J1bikgew0KLQkJCQkJ CWlmICh6ZW5kX2V2YWxfc3RyaW5nKGV4ZWNfcnVuLCBOVUxMLCAiQ29tbWFu ZCBsaW5lIHJ1biBjb2RlIiBUU1JNTFNfQ0MpID09IEZBSUxVUkUpIHsNCi0J CQkJCQkJZXhpdF9zdGF0dXM9MjU0Ow0KLQkJCQkJCX0NCi0JCQkJCX0gZWxz ZSB7DQotCQkJCQkJaWYgKHNjcmlwdF9maWxlKSB7DQotCQkJCQkJCWlmIChj bGlfc2Vla19maWxlX2JlZ2luKCZmaWxlX2hhbmRsZSwgc2NyaXB0X2ZpbGUs ICZsaW5lbm8gVFNSTUxTX0NDKSAhPSBTVUNDRVNTKSB7DQotCQkJCQkJCQll eGl0X3N0YXR1cyA9IDE7DQotCQkJCQkJCX0gZWxzZSB7DQotCQkJCQkJCQlD Ryh6ZW5kX2xpbmVubykgPSBsaW5lbm87DQotCQkJCQkJCQlwaHBfZXhlY3V0 ZV9zY3JpcHQoJmZpbGVfaGFuZGxlIFRTUk1MU19DQyk7DQotCQkJCQkJCQll eGl0X3N0YXR1cyA9IEVHKGV4aXRfc3RhdHVzKTsNCi0JCQkJCQkJfQ0KLQkJ CQkJCX0NCi0JCQkJCX0NCi0JCQkJCWVmcmVlKGlucHV0KTsNCi0JCQkJfQ0K LQkJCQlpZiAoZXhlY19lbmQgJiYgemVuZF9ldmFsX3N0cmluZyhleGVjX2Vu ZCwgTlVMTCwgIkNvbW1hbmQgbGluZSBlbmQgY29kZSIgVFNSTUxTX0NDKSA9 PSBGQUlMVVJFKSB7DQotCQkJCQlleGl0X3N0YXR1cz0yNTQ7DQotCQkJCX0N Ci0JDQotCQkJCWJyZWFrOw0KLQkJCX0NCiAJCX0NCiANCiAJCWlmIChjbGlf c2FwaV9tb2R1bGUucGhwX2luaV9wYXRoX292ZXJyaWRlKSB7DQpJbmRleDog c2FwaS9pc2FwaS9waHA0aXNhcGkuYw0KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQ0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L3BocDQvc2FwaS9pc2FwaS9waHA0 aXNhcGkuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOTIuMi42DQpkaWZm IC11IC1yMS45Mi4yLjYgcGhwNGlzYXBpLmMNCi0tLSBzYXBpL2lzYXBpL3Bo cDRpc2FwaS5jCTIxIE1heSAyMDAzIDA5OjM0OjE1IC0wMDAwCTEuOTIuMi42 DQorKysgc2FwaS9pc2FwaS9waHA0aXNhcGkuYwkzMCBNYXkgMjAwMyAyMzoy MjoyMSAtMDAwMA0KQEAgLTcxNyw3ICs3MTcsNyBAQA0KIA0KIERXT1JEIFdJ TkFQSSBIdHRwRXh0ZW5zaW9uUHJvYyhMUEVYVEVOU0lPTl9DT05UUk9MX0JM T0NLIGxwRUNCKQ0KIHsNCi0JemVuZF9maWxlX2hhbmRsZSBmaWxlX2hhbmRs ZTsNCisJemVuZF9maWxlX2hhbmRsZSBmaWxlX2hhbmRsZSA9IHswfTsNCiAJ emVuZF9ib29sIHN0YWNrX292ZXJmbG93bj0wOw0KICNpZmRlZiBQSFBfRU5B QkxFX1NFSA0KIAlMUEVYQ0VQVElPTl9QT0lOVEVSUyBlOw0KSW5kZXg6IHNh cGkvcGh0dHBkL3BodHRwZC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL3JlcG9zaXRvcnkvcGhwNC9zYXBpL3BodHRwZC9waHR0cGQu Yyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzUuMi4zDQpkaWZmIC11IC1y MS4zNS4yLjMgcGh0dHBkLmMNCi0tLSBzYXBpL3BodHRwZC9waHR0cGQuYwky MSBNYXkgMjAwMyAwOTozNDoxNiAtMDAwMAkxLjM1LjIuMw0KKysrIHNhcGkv cGh0dHBkL3BodHRwZC5jCTMwIE1heSAyMDAzIDIzOjIyOjIxIC0wMDAwDQpA QCAtMjQ3LDcgKzI0Nyw3IEBADQogaW50IHBocF9kb2l0KFRTUk1MU19EIFRT Uk1MU19EQykNCiB7DQogCXN0cnVjdCBzdGF0IHNiOw0KLQl6ZW5kX2ZpbGVf aGFuZGxlIGZpbGVfaGFuZGxlOw0KKwl6ZW5kX2ZpbGVfaGFuZGxlIGZpbGVf aGFuZGxlID0gezB9Ow0KIAlzdHJ1Y3QgaHR0cGluZm8gKmhpcCA9IFBIRyhj aXApLT5oaXA7DQogCVRTUk1MU19GRVRDSCgpOw0KIA0KSW5kZXg6IHNhcGkv cGkzd2ViL3BpM3dlYl9zYXBpLmMNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9waHA0L3NhcGkvcGkzd2ViL3BpM3dl Yl9zYXBpLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjQ2LjIuNA0KZGlm ZiAtdSAtcjEuNDYuMi40IHBpM3dlYl9zYXBpLmMNCi0tLSBzYXBpL3BpM3dl Yi9waTN3ZWJfc2FwaS5jCTIxIE1heSAyMDAzIDA5OjM0OjE2IC0wMDAwCTEu NDYuMi40DQorKysgc2FwaS9waTN3ZWIvcGkzd2ViX3NhcGkuYwkzMCBNYXkg MjAwMyAyMzoyMjoyMSAtMDAwMA0KQEAgLTIxLDcgKzIxLDcgQEANCiAgICAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCiAgKi8NCiANCi0vKiAkSWQ6 IHBpM3dlYl9zYXBpLmMsdiAxLjQ2LjIuNCAyMDAzLzA1LzIxIDA5OjM0OjE2 IHplZXYgRXhwICQgKi8NCisvKiAkSWQ6IHBpM3dlYl9zYXBpLmMsdiAxLjQ2 LjIuMyAyMDAzLzA1LzE3IDA4OjA2OjUzIHNhcyBFeHAgJCAqLw0KIA0KICNp bmNsdWRlICJwaTN3ZWJfc2FwaS5oIg0KICNpbmNsdWRlICJwaHAuaCINCkBA IC03OCw3ICs3OCw3IEBADQogCVBVVFMoIjx0YWJsZSBib3JkZXI9MCBjZWxs cGFkZGluZz0zIGNlbGxzcGFjaW5nPTEgd2lkdGg9NjAwIGFsaWduPWNlbnRl cj5cbiIpOw0KIAlQVVRTKCI8dHI+PHRoIGNvbHNwYW49MiBiZ2NvbG9yPVwi IiBQSFBfSEVBREVSX0NPTE9SICJcIj5QaTNXZWIgU2VydmVyIEluZm9ybWF0 aW9uPC90aD48L3RyPlxuIik7DQogCXBocF9pbmZvX3ByaW50X3RhYmxlX2hl YWRlcigyLCAiSW5mb3JtYXRpb24gRmllbGQiLCAiVmFsdWUiKTsNCi0JcGhw X2luZm9fcHJpbnRfdGFibGVfcm93KDIsICJQaTNXZWIgU0FQSSBtb2R1bGUg dmVyc2lvbiIsICIkSWQ6IHBpM3dlYl9zYXBpLmMsdiAxLjQ2LjIuNCAyMDAz LzA1LzIxIDA5OjM0OjE2IHplZXYgRXhwICQiKTsNCisJcGhwX2luZm9fcHJp bnRfdGFibGVfcm93KDIsICJQaTNXZWIgU0FQSSBtb2R1bGUgdmVyc2lvbiIs ICIkSWQ6IHBpM3dlYl9zYXBpLmMsdiAxLjQ2LjIuMyAyMDAzLzA1LzE3IDA4 OjA2OjUzIHNhcyBFeHAgJCIpOw0KIAlwaHBfaW5mb19wcmludF90YWJsZV9y b3coMiwgIlNlcnZlciBOYW1lIFN0YW1wIiwgSFRUUENvcmVfZ2V0U2VydmVy U3RhbXAoKSk7DQogCXNucHJpbnRmKHZhcmlhYmxlX2J1ZiwgNTExLCAiJWQi LCBIVFRQQ29yZV9kZWJ1Z0VuYWJsZWQoKSk7DQogCXBocF9pbmZvX3ByaW50 X3RhYmxlX3JvdygyLCAiRGVidWcgRW5hYmxlZCIsIHZhcmlhYmxlX2J1Zik7 DQpAQCAtMzg3LDcgKzM4Nyw3IEBADQogDQogRFdPUkQgUEhQNF93cmFwcGVy KExQQ09OVFJPTF9CTE9DSyBscENCKQ0KIHsNCi0JemVuZF9maWxlX2hhbmRs ZSBmaWxlX2hhbmRsZTsNCisJemVuZF9maWxlX2hhbmRsZSBmaWxlX2hhbmRs ZSA9IHswfTsNCiAJaW50IGlSZXQgPSBQSUFQSV9DT01QTEVURUQ7DQogCVRT Uk1MU19GRVRDSCgpOw0KIA0KSW5kZXg6IHNhcGkvcm94ZW4vcm94ZW4uYw0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5 L3BocDQvc2FwaS9yb3hlbi9yb3hlbi5jLHYNCnJldHJpZXZpbmcgcmV2aXNp b24gMS41My4yLjQNCmRpZmYgLXUgLXIxLjUzLjIuNCByb3hlbi5jDQotLS0g c2FwaS9yb3hlbi9yb3hlbi5jCTIxIE1heSAyMDAzIDA5OjM0OjE2IC0wMDAw CTEuNTMuMi40DQorKysgc2FwaS9yb3hlbi9yb3hlbi5jCTMwIE1heSAyMDAz IDIzOjIyOjIyIC0wMDAwDQpAQCAtMTcsNyArMTcsNyBAQA0KICAgICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KICAqLw0KIA0KLS8qICRJZDogcm94 ZW4uYyx2IDEuNTMuMi40IDIwMDMvMDUvMjEgMDk6MzQ6MTYgemVldiBFeHAg JCAqLw0KKy8qICRJZDogcm94ZW4uYyx2IDEuNTMuMi4zIDIwMDMvMDUvMTcg MDg6MDY6NTMgc2FzIEV4cCAkICovDQogDQogI2luY2x1ZGUgInBocC5oIg0K ICNpZmRlZiBIQVZFX1JPWEVODQpAQCAtNDM4LDcgKzQzOCw3IEBADQogew0K ICAgLyogIGNoYXIgYnVmWzUxMl07ICovDQogICBwaHBfaW5mb19wcmludF90 YWJsZV9zdGFydCgpOw0KLSAgcGhwX2luZm9fcHJpbnRfdGFibGVfcm93KDIs ICJTQVBJIG1vZHVsZSB2ZXJzaW9uIiwgIiRJZDogcm94ZW4uYyx2IDEuNTMu Mi40IDIwMDMvMDUvMjEgMDk6MzQ6MTYgemVldiBFeHAgJCIpOw0KKyAgcGhw X2luZm9fcHJpbnRfdGFibGVfcm93KDIsICJTQVBJIG1vZHVsZSB2ZXJzaW9u IiwgIiRJZDogcm94ZW4uYyx2IDEuNTMuMi4zIDIwMDMvMDUvMTcgMDg6MDY6 NTMgc2FzIEV4cCAkIik7DQogICAvKiAgcGhwX2luZm9fcHJpbnRfdGFibGVf cm93KDIsICJCdWlsZCBkYXRlIiwgTnNfSW5mb0J1aWxkRGF0ZSgpKTsNCiAg ICAgICBwaHBfaW5mb19wcmludF90YWJsZV9yb3coMiwgIkNvbmZpZyBmaWxl IHBhdGgiLCBOc19JbmZvQ29uZmlnRmlsZSgpKTsNCiAgICAgICBwaHBfaW5m b19wcmludF90YWJsZV9yb3coMiwgIkVycm9yIExvZyBwYXRoIiwgTnNfSW5m b0Vycm9yTG9nKCkpOw0KQEAgLTU3NSw3ICs1NzUsNyBAQA0KIHsNCiAgIGlu dCByZXMsIGxlbjsNCiAgIGNoYXIgKmRpcjsNCi0gIHplbmRfZmlsZV9oYW5k bGUgZmlsZV9oYW5kbGU7DQorICB6ZW5kX2ZpbGVfaGFuZGxlIGZpbGVfaGFu ZGxlID0gezB9Ow0KICNpZmRlZiBST1hFTl9VU0VfWlRTDQogICBHRVRfVEhJ UygpOw0KICNlbmRpZg0KSW5kZXg6IHNhcGkvc2VydmxldC9zZXJ2bGV0LmMN Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvcmVwb3NpdG9y eS9waHA0L3NhcGkvc2VydmxldC9zZXJ2bGV0LmMsdg0KcmV0cmlldmluZyBy ZXZpc2lvbiAxLjY1LjIuNQ0KZGlmZiAtdSAtcjEuNjUuMi41IHNlcnZsZXQu Yw0KLS0tIHNhcGkvc2VydmxldC9zZXJ2bGV0LmMJMjEgTWF5IDIwMDMgMDk6 MzQ6MTYgLTAwMDAJMS42NS4yLjUNCisrKyBzYXBpL3NlcnZsZXQvc2Vydmxl dC5jCTMwIE1heSAyMDAzIDIzOjIyOjIyIC0wMDAwDQpAQCAtMzEwLDcgKzMx MCw3IEBADQogCSBqc3RyaW5nIGNvbnRlbnRUeXBlLCBqaW50IGNvbnRlbnRM ZW5ndGgsIA0KIAkganN0cmluZyBhdXRoVXNlciwgamJvb2xlYW4gZGlzcGxh eV9zb3VyY2VfbW9kZSkNCiB7DQotCXplbmRfZmlsZV9oYW5kbGUgZmlsZV9o YW5kbGU7DQorCXplbmRfZmlsZV9oYW5kbGUgZmlsZV9oYW5kbGUgPSB7MH07 DQogCWludCByZXR2YWw7DQogI2lmbmRlZiBWSVJUVUFMX0RJUg0KIAljaGFy IGN3ZFtNQVhQQVRITEVOXTsNCkluZGV4OiBzYXBpL3RodHRwZC90aHR0cGQu Yw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9yZXBvc2l0 b3J5L3BocDQvc2FwaS90aHR0cGQvdGh0dHBkLmMsdg0KcmV0cmlldmluZyBy ZXZpc2lvbiAxLjc3LjIuMTENCmRpZmYgLXUgLXIxLjc3LjIuMTEgdGh0dHBk LmMNCi0tLSBzYXBpL3RodHRwZC90aHR0cGQuYwkyMSBNYXkgMjAwMyAwOToz NDoxNiAtMDAwMAkxLjc3LjIuMTENCisrKyBzYXBpL3RodHRwZC90aHR0cGQu YwkzMCBNYXkgMjAwMyAyMzoyMjoyMiAtMDAwMA0KQEAgLTE2LDcgKzE2LDcg QEANCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCiAqLw0KIA0K LS8qICRJZDogdGh0dHBkLmMsdiAxLjc3LjIuMTEgMjAwMy8wNS8yMSAwOToz NDoxNiB6ZWV2IEV4cCAkICovDQorLyogJElkOiB0aHR0cGQuYyx2IDEuNzcu Mi4xMCAyMDAzLzA1LzE3IDA4OjA2OjUzIHNhcyBFeHAgJCAqLw0KIA0KICNp bmNsdWRlICJwaHAuaCINCiAjaW5jbHVkZSAiU0FQSS5oIg0KQEAgLTM4OCw3 ICszODgsNyBAQA0KIA0KIHN0YXRpYyB2b2lkIHRodHRwZF9tb2R1bGVfbWFp bihpbnQgc2hvd19zb3VyY2UgVFNSTUxTX0RDKQ0KIHsNCi0JemVuZF9maWxl X2hhbmRsZSBmaWxlX2hhbmRsZTsNCisJemVuZF9maWxlX2hhbmRsZSBmaWxl X2hhbmRsZSA9IHswfTsNCiANCiAJaWYgKHBocF9yZXF1ZXN0X3N0YXJ0dXAo VFNSTUxTX0MpID09IEZBSUxVUkUpIHsNCiAJCXJldHVybjsNCkluZGV4OiBz YXBpL3R1eC9waHBfdHV4LmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD UyBmaWxlOiAvcmVwb3NpdG9yeS9waHA0L3NhcGkvdHV4L3BocF90dXguYyx2 DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTguMi40DQpkaWZmIC11IC1yMS4x OC4yLjQgcGhwX3R1eC5jDQotLS0gc2FwaS90dXgvcGhwX3R1eC5jCTIxIE1h eSAyMDAzIDA5OjM0OjE3IC0wMDAwCTEuMTguMi40DQorKysgc2FwaS90dXgv cGhwX3R1eC5jCTMwIE1heSAyMDAzIDIzOjIyOjIzIC0wMDAwDQpAQCAtMjk2 LDcgKzI5Niw3IEBADQogDQogc3RhdGljIHZvaWQgdHV4X21vZHVsZV9tYWlu KFRTUk1MU19EKQ0KIHsNCi0JemVuZF9maWxlX2hhbmRsZSBmaWxlX2hhbmRs ZTsNCisJemVuZF9maWxlX2hhbmRsZSBmaWxlX2hhbmRsZSA9IHswfTsNCiAN CiAJZmlsZV9oYW5kbGUudHlwZSA9IFpFTkRfSEFORExFX0ZJTEVOQU1FOw0K IAlmaWxlX2hhbmRsZS5maWxlbmFtZSA9IFNHKHJlcXVlc3RfaW5mbykucGF0 aF90cmFuc2xhdGVkOw0KSW5kZXg6IHNhcGkvd2ViamFtZXMvd2ViamFtZXMu Yw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9yZXBvc2l0 b3J5L3BocDQvc2FwaS93ZWJqYW1lcy93ZWJqYW1lcy5jLHYNCnJldHJpZXZp bmcgcmV2aXNpb24gMS41LjIuMw0KZGlmZiAtdSAtcjEuNS4yLjMgd2ViamFt ZXMuYw0KLS0tIHNhcGkvd2ViamFtZXMvd2ViamFtZXMuYwkyMSBNYXkgMjAw MyAwOTozNDoxNyAtMDAwMAkxLjUuMi4zDQorKysgc2FwaS93ZWJqYW1lcy93 ZWJqYW1lcy5jCTMwIE1heSAyMDAzIDIzOjIyOjIzIC0wMDAwDQpAQCAtMTQy LDcgKzE0Miw3IEBADQogDQogc3RhdGljIHZvaWQgd2ViamFtZXNfbW9kdWxl X21haW4oVFNSTUxTX0QpDQogew0KLQl6ZW5kX2ZpbGVfaGFuZGxlIGZpbGVf aGFuZGxlOw0KKwl6ZW5kX2ZpbGVfaGFuZGxlIGZpbGVfaGFuZGxlID0gezB9 Ow0KIAlGSUxFICpmcD1OVUxMOw0KIAljaGFyICpwYXRoOw0KIA0K ---204106827-2121859922-1054337128=:30017--