From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v3 15/15] tools & docs: add L2 CAT support in tools and docs. Date: Tue, 25 Oct 2016 11:41:03 +0800 Message-ID: <1477366863-5246-16-git-send-email-yi.y.sun@linux.intel.com> References: <1477366863-5246-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1byrZO-0004rd-9y for xen-devel@lists.xenproject.org; Tue, 25 Oct 2016 02:34:30 +0000 In-Reply-To: <1477366863-5246-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: wei.liu2@citrix.com, he.chen@linux.intel.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpcyB0aGUgeGwveGMgY2hhbmdlcyB0byBzdXBwb3J0IEludGVsIEwyIENBVAoo Q2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5KS4KClRoZSBuZXcgbGV2ZWwgb3B0aW9uIGlzIGlu dHJvZHVjZWQgdG8gb3JpZ2luYWwgQ0FUIHNldHRpbmcKY29tbWFuZCBpbiBvcmRlciB0byBzZXQg Q0JNIGZvciBzcGVjaWZpZWQgbGV2ZWwgQ0FULgotICd4bCBwc3ItaHdpbmZvJyBpcyB1cGRhdGVk IHRvIHNob3cgYm90aCBMMyBDQVQgYW5kIEwyIENBVAogIGluZm8uCi0gJ3hsIHBzci1jYXQtY2Jt LXNldCcgaXMgdXBkYXRlZCB0byBzZXQgY2FjaGUgY2FwYWNpdHkKICBiaXRtYXNrcyhDQk0pIGZv ciBhIGRvbWFpbiBhY2NvcmRpbmcgdG8gaW5wdXQgY2FjaGUgbGV2ZWwuCi0gJ3hsIHBzci1jYXQt c2hvdycgaXMgdXBkYXRlZCB0byBzaG93IENCTSBvZiBhIGRvbWFpbgogIGFjY29yZGluZyB0byBp bnB1dCBjYWNoZSBsZXZlbC4KCkV4YW1wbGVzOgpyb290QDp+JCB4bCBwc3ItaHdpbmZvIC0tY2F0 CkNhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSAoQ0FUKTogTDIKU29ja2V0IElEICAgICAgIDog MApNYXhpbXVtIENPUyAgICAgOiAzCkNCTSBsZW5ndGggICAgICA6IDgKRGVmYXVsdCBDQk0gICAg IDogMHhmZgoKcm9vdEA6fiQgeGwgcHNyLWNhdC1jYm0tc2V0IC1sMiAxIDB4N2YKCnJvb3RAOn4k IHhsIHBzci1jYXQtc2hvdyAtbDIgMQpTb2NrZXQgSUQgICAgICAgOiAwCkRlZmF1bHQgQ0JNICAg ICA6IDB4ZmYKICAgSUQgICAgICAgICAgICAgICAgICAgICBOQU1FICAgICAgICAgICAgIENCTQog ICAgMSAgICAgICAgICAgICAgICAgdWJ1bnR1MTQgICAgICAgICAgICAweDdmCgpTaWduZWQtb2Zm LWJ5OiBIZSBDaGVuIDxoZS5jaGVuQGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogWWkg U3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5jb20+Ci0tLQogZG9jcy9tYW4veGwucG9kLjEuaW4g ICAgICAgICAgfCAgMjUgKysrKy0KIGRvY3MvbWlzYy94bC1wc3IubWFya2Rvd24gICAgIHwgIDEw ICstCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCB8ICAgNyArLQogdG9vbHMvbGlieGMv eGNfcHNyLmMgICAgICAgICAgfCAgNDYgKysrKysrLS0tCiB0b29scy9saWJ4bC9saWJ4bC5oICAg ICAgICAgICB8ICAxMSArKy0KIHRvb2xzL2xpYnhsL2xpYnhsX3Bzci5jICAgICAgIHwgIDEwICst CiB0b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgICB8ICAgMSArCiB0b29scy9saWJ4bC94bF9j bWRpbXBsLmMgICAgICB8IDIyMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0KIHRvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMgICAgIHwgICA0ICstCiA5IGZpbGVzIGNo YW5nZWQsIDI2MCBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2NzL21hbi94bC5wb2QuMS5pbiBiL2RvY3MvbWFuL3hsLnBvZC4xLmluCmluZGV4IDhlMmFhNWIu LjJjNDFlYTcgMTAwNjQ0Ci0tLSBhL2RvY3MvbWFuL3hsLnBvZC4xLmluCisrKyBiL2RvY3MvbWFu L3hsLnBvZC4xLmluCkBAIC0xNzAxLDYgKzE3MDEsOSBAQCBvY2N1cGFuY3kgbW9uaXRvcmluZyBz aGFyZSB0aGUgc2FtZSBzZXQgb2YgdW5kZXJseWluZyBtb25pdG9yaW5nIHNlcnZpY2UuIE9uY2UK IGEgZG9tYWluIGlzIGF0dGFjaGVkIHRvIHRoZSBtb25pdG9yaW5nIHNlcnZpY2UsIG1vbml0b3Jp bmcgZGF0YSBjYW4gYmUgc2hvd24KIGZvciBhbnkgb2YgdGhlc2UgbW9uaXRvcmluZyB0eXBlcy4K IAorVGhlcmUgaXMgbm8gY2FjaGUgbW9uaXRvcmluZyBhbmQgbWVtb3J5IGJhbmR3aWR0aCBtb25p dG9yaW5nIG9uIEwyIGNhY2hlIHNvCitmYXIuCisKID1vdmVyIDQKIAogPWl0ZW0gQjxwc3ItY210 LWF0dGFjaD4gW0k8ZG9tYWluLWlkPl0KQEAgLTE3MjUsNyArMTcyOCw3IEBAIG1vbml0b3IgdHlw ZXMgYXJlOgogCiBJbnRlbCBCcm9hZHdlbGwgYW5kIGxhdGVyIHNlcnZlciBwbGF0Zm9ybXMgb2Zm ZXIgY2FwYWJpbGl0aWVzIHRvIGNvbmZpZ3VyZSBhbmQKIG1ha2UgdXNlIG9mIHRoZSBDYWNoZSBB bGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCkgbWVjaGFuaXNtcywgd2hpY2ggZW5hYmxlIG1vcmUK LWNhY2hlIHJlc291cmNlcyAoaS5lLiBMMyBjYWNoZSkgdG8gYmUgbWFkZSBhdmFpbGFibGUgZm9y IGhpZ2ggcHJpb3JpdHkKK2NhY2hlIHJlc291cmNlcyAoaS5lLiBMMy9MMiBjYWNoZSkgdG8gYmUg bWFkZSBhdmFpbGFibGUgZm9yIGhpZ2ggcHJpb3JpdHkKIGFwcGxpY2F0aW9ucy4gSW4gdGhlIFhl biBpbXBsZW1lbnRhdGlvbiwgQ0FUIGlzIHVzZWQgdG8gY29udHJvbCBjYWNoZSBhbGxvY2F0aW9u CiBvbiBWTSBiYXNpcy4gVG8gZW5mb3JjZSBjYWNoZSBvbiBhIHNwZWNpZmljIGRvbWFpbiwganVz dCBzZXQgY2FwYWNpdHkgYml0bWFza3MKIChDQk0pIGZvciB0aGUgZG9tYWluLgpAQCAtMTczNSw3 ICsxNzM4LDcgQEAgSW50ZWwgQnJvYWR3ZWxsIGFuZCBsYXRlciBzZXJ2ZXIgcGxhdGZvcm1zIGFs c28gb2ZmZXIgQ29kZS9EYXRhIFByaW9yaXRpemF0aW9uCiBhcHBsaWNhdGlvbnMuIENEUCBpcyB1 c2VkIG9uIGEgcGVyIFZNIGJhc2lzIGluIHRoZSBYZW4gaW1wbGVtZW50YXRpb24uIFRvCiBzcGVj aWZ5IGNvZGUgb3IgZGF0YSBDQk0gZm9yIHRoZSBkb21haW4sIENEUCBmZWF0dXJlIG11c3QgYmUg ZW5hYmxlZCBhbmQgQ0JNCiB0eXBlIG9wdGlvbnMgbmVlZCB0byBiZSBzcGVjaWZpZWQgd2hlbiBz ZXR0aW5nIENCTSwgYW5kIHRoZSB0eXBlIG9wdGlvbnMgKGNvZGUKLWFuZCBkYXRhKSBhcmUgbXV0 dWFsbHkgZXhjbHVzaXZlLgorYW5kIGRhdGEpIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIFRoZXJl IGlzIG5vIENEUCBzdXBwb3J0IG9uIEwyIHNvIGZhci4KIAogPW92ZXIgNAogCkBAIC0xNzUyLDYg KzE3NTUsMTEgQEAgQjxPUFRJT05TPgogCiBTcGVjaWZ5IHRoZSBzb2NrZXQgdG8gcHJvY2Vzcywg b3RoZXJ3aXNlIGFsbCBzb2NrZXRzIGFyZSBwcm9jZXNzZWQuCiAKKz1pdGVtIEI8LWwgTEVWRUw+ LCBCPC0tbGV2ZWw9TEVWRUw+CisKK1NwZWNpZnkgdGhlIGNhY2hlIGxldmVsIHRvIHByb2Nlc3Ms IG90aGVyd2lzZSB0aGUgbGFzdCBsZXZlbCBjYWNoZSAoTDMpIGlzCitwcm9jZXNzZWQuCisKID1p dGVtIEI8LWM+LCBCPC0tY29kZT4KIAogU2V0IGNvZGUgQ0JNIHdoZW4gQ0RQIGlzIGVuYWJsZWQu CkBAIC0xNzYyLDEwICsxNzcwLDIxIEBAIFNldCBkYXRhIENCTSB3aGVuIENEUCBpcyBlbmFibGVk LgogCiA9YmFjawogCi09aXRlbSBCPHBzci1jYXQtc2hvdz4gW0k8ZG9tYWluLWlkPl0KKz1pdGVt IEI8cHNyLWNhdC1zaG93PiBbSTxPUFRJT05TPl0gW0k8ZG9tYWluLWlkPl0KIAogU2hvdyBDQVQg c2V0dGluZ3MgZm9yIGEgY2VydGFpbiBkb21haW4gb3IgYWxsIGRvbWFpbnMuCiAKK0I8T1BUSU9O Uz4KKworPW92ZXIgNAorCis9aXRlbSBCPC1sIExFVkVMPiwgQjwtLWxldmVsPUxFVkVMPgorCitT cGVjaWZ5IHRoZSBjYWNoZSBsZXZlbCB0byBwcm9jZXNzLCBvdGhlcndpc2UgdGhlIGxhc3QgbGV2 ZWwgY2FjaGUgKEwzKSBpcworcHJvY2Vzc2VkLgorCis9YmFjaworCiA9YmFjawogCiA9aGVhZDEg SUdOT1JFRCBGT1IgQ09NUEFUSUJJTElUWSBXSVRIIFhNCmRpZmYgLS1naXQgYS9kb2NzL21pc2Mv eGwtcHNyLm1hcmtkb3duIGIvZG9jcy9taXNjL3hsLXBzci5tYXJrZG93bgppbmRleCBjM2MxZThl Li5iZDJiNmJkIDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGwtcHNyLm1hcmtkb3duCisrKyBiL2Rv Y3MvbWlzYy94bC1wc3IubWFya2Rvd24KQEAgLTcwLDcgKzcwLDcgQEAgdG90YWwtbWVtLWJhbmR3 aWR0aCBpbnN0ZWFkIG9mIGNhY2hlLW9jY3VwYW5jeSkuIEUuZy4gYWZ0ZXIgYSBgeGwgcHNyLWNt dC1hdHRhY2gKIAogQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChDQVQpIGlzIGEgbmV3IGZl YXR1cmUgYXZhaWxhYmxlIG9uIEludGVsCiBCcm9hZHdlbGwgYW5kIGxhdGVyIHNlcnZlciBwbGF0 Zm9ybXMgdGhhdCBhbGxvd3MgYW4gT1Mgb3IgSHlwZXJ2aXNvci9WTU0gdG8KLXBhcnRpdGlvbiBj YWNoZSBhbGxvY2F0aW9uIChpLmUuIEwzIGNhY2hlKSBiYXNlZCBvbiBhcHBsaWNhdGlvbiBwcmlv cml0eSBvcgorcGFydGl0aW9uIGNhY2hlIGFsbG9jYXRpb24gKGkuZS4gTDMvTDIgY2FjaGUpIGJh c2VkIG9uIGFwcGxpY2F0aW9uIHByaW9yaXR5IG9yCiBDbGFzcyBvZiBTZXJ2aWNlIChDT1MpLiBF YWNoIENPUyBpcyBjb25maWd1cmVkIHVzaW5nIGNhcGFjaXR5IGJpdG1hc2tzIChDQk0pCiB3aGlj aCByZXByZXNlbnQgY2FjaGUgY2FwYWNpdHkgYW5kIGluZGljYXRlIHRoZSBkZWdyZWUgb2Ygb3Zl cmxhcCBhbmQKIGlzb2xhdGlvbiBiZXR3ZWVuIGNsYXNzZXMuIFN5c3RlbSBjYWNoZSByZXNvdXJj ZSBpcyBkaXZpZGVkIGludG8gbnVtYmVycyBvZgpAQCAtMTE5LDEzICsxMTksMTkgQEAgQSBjYm0g aXMgdmFsaWQgb25seSB3aGVuOgogSW4gYSBtdWx0aS1zb2NrZXQgc3lzdGVtLCB0aGUgc2FtZSBj Ym0gd2lsbCBiZSBzZXQgb24gZWFjaCBzb2NrZXQgYnkgZGVmYXVsdC4KIFBlciBzb2NrZXQgY2Jt IGNhbiBiZSBzcGVjaWZpZWQgd2l0aCB0aGUgYC0tc29ja2V0IFNPQ0tFVGAgb3B0aW9uLgogCitJ biBkaWZmZXJlbnQgc3lzdGVtcywgdGhlIGRpZmZlcmVudCBjYWNoZSBsZXZlbCBpcyBzdXBwb3J0 ZWQsIGUuZy4gTDMgY2FjaGUgb3IKK0wyIGNhY2hlLiBQZXIgY2FjaGUgbGV2ZWwgY2JtIGNhbiBi ZSBzcGVjaWZpZWQgd2l0aCB0aGUgYC0tbGV2ZWwgTEVWRUxgIG9wdGlvbi4KKwogU2V0dGluZyB0 aGUgQ0JNIG1heSBub3QgYmUgc3VjY2Vzc2Z1bCBpZiBpbnN1ZmZpY2llbnQgQ09TIGlzIGF2YWls YWJsZS4gSW4KIHN1Y2ggY2FzZSB1bnVzZWQgQ09TKGVzKSBtYXkgYmUgZnJlZWQgYnkgc2V0dGlu ZyBDQk0gb2YgYWxsIHJlbGF0ZWQgZG9tYWlucyB0bwogaXRzIGRlZmF1bHQgdmFsdWUoYWxsLW9u ZXMpLgogCiBQZXIgZG9tYWluIENCTSBzZXR0aW5ncyBjYW4gYmUgc2hvd24gYnk6CiAKLWB4bCBw c3ItY2F0LXNob3dgCitgeGwgcHNyLWNhdC1zaG93IFtPUFRJT05TXSA8ZG9taWQ+YAorCitJbiBk aWZmZXJlbnQgc3lzdGVtcywgdGhlIGRpZmZlcmVudCBjYWNoZSBsZXZlbCBpcyBzdXBwb3J0ZWQs IGUuZy4gTDMgY2FjaGUgb3IKK0wyIGNhY2hlLiBQZXIgY2FjaGUgbGV2ZWwgY2JtIGNhbiBiZSBz cGVjaWZpZWQgd2l0aCB0aGUgYC0tbGV2ZWwgTEVWRUxgIG9wdGlvbi4KIAogIyMgQ29kZSBhbmQg RGF0YSBQcmlvcml0aXphdGlvbiAoQ0RQKQogCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNs dWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCmluZGV4IDJjODM1 NDQuLjhlZTA2OGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCisr KyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCkBAIC0yNjAyLDYgKzI2MDIsNyBAQCBl bnVtIHhjX3Bzcl9jYXRfdHlwZSB7CiAgICAgWENfUFNSX0NBVF9MM19DQk0gICAgICA9IDEsCiAg ICAgWENfUFNSX0NBVF9MM19DQk1fQ09ERSA9IDIsCiAgICAgWENfUFNSX0NBVF9MM19DQk1fREFU QSA9IDMsCisgICAgWENfUFNSX0NBVF9MMl9DQk0gICAgICA9IDQsCiB9OwogdHlwZWRlZiBlbnVt IHhjX3Bzcl9jYXRfdHlwZSB4Y19wc3JfY2F0X3R5cGU7CiAKQEAgLTI2MjYsOSArMjYyNyw5IEBA IGludCB4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMy X3QgZG9taWQsCiBpbnQgeGNfcHNyX2NhdF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4 Y2gsIHVpbnQzMl90IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bz cl9jYXRfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDY0X3QgKmRhdGEpOwotaW50IHhjX3Bzcl9jYXRfZ2V0X2wzX2luZm8oeGNf aW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQzMl90ICpjb3NfbWF4LCB1aW50MzJfdCAqY2JtX2xlbiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgKmNkcF9lbmFibGVkKTsKK2ludCB4Y19wc3JfY2F0X2dldF9pbmZv KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsIGludCBsdmwsCisgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCAqY29zX21heCwgdWludDMyX3QgKmNibV9sZW4sCisgICAg ICAgICAgICAgICAgICAgICAgICBib29sICpjZHBfZW5hYmxlZCk7CiAKIGludCB4Y19nZXRfY3B1 X2xldmVsbGluZ19jYXBzKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCAqY2Fwcyk7CiBpbnQg eGNfZ2V0X2NwdV9mZWF0dXJlc2V0KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBpbmRleCwK ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3Bzci5jIGIvdG9vbHMvbGlieGMveGNfcHNyLmMK aW5kZXggNDNiMzI4Ni4uZDUwNTVkYiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfcHNyLmMK KysrIGIvdG9vbHMvbGlieGMveGNfcHNyLmMKQEAgLTI2Niw2ICsyNjYsOSBAQCBpbnQgeGNfcHNy X2NhdF9zZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAog ICAgIGNhc2UgWENfUFNSX0NBVF9MM19DQk1fREFUQToKICAgICAgICAgY21kID0gWEVOX0RPTUNU TF9QU1JfQ0FUX09QX1NFVF9MM19EQVRBOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFhDX1BT Ul9DQVRfTDJfQ0JNOgorICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wy X0NCTTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgZXJybm8gPSBFSU5W QUw7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTI5OSw2ICszMDIsOSBAQCBpbnQgeGNfcHNyX2Nh dF9nZXRfZG9tYWluX2RhdGEoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogICAg IGNhc2UgWENfUFNSX0NBVF9MM19DQk1fREFUQToKICAgICAgICAgY21kID0gWEVOX0RPTUNUTF9Q U1JfQ0FUX09QX0dFVF9MM19EQVRBOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFhDX1BTUl9D QVRfTDJfQ0JNOgorICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NC TTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgZXJybm8gPSBFSU5WQUw7 CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTMxNywyNCArMzIzLDQwIEBAIGludCB4Y19wc3JfY2F0 X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9taWQsCiAgICAg cmV0dXJuIHJjOwogfQogCi1pbnQgeGNfcHNyX2NhdF9nZXRfbDNfaW5mbyh4Y19pbnRlcmZhY2Ug KnhjaCwgdWludDMyX3Qgc29ja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgKmNvc19tYXgsIHVpbnQzMl90ICpjYm1fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbCAqY2RwX2VuYWJsZWQpCitpbnQgeGNfcHNyX2NhdF9nZXRfaW5mbyh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3Qgc29ja2V0LCBpbnQgbHZsLAorICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgKmNvc19tYXgsIHVpbnQzMl90ICpjYm1fbGVuLAorICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCAqY2RwX2VuYWJsZWQpCiB7Ci0gICAgaW50IHJjOworICAgIGludCByYyA9 IC0xOwogICAgIERFQ0xBUkVfU1lTQ1RMOwogCiAgICAgc3lzY3RsLmNtZCA9IFhFTl9TWVNDVExf cHNyX2NhdF9vcDsKLSAgICBzeXNjdGwudS5wc3JfY2F0X29wLmNtZCA9IFhFTl9TWVNDVExfUFNS X0NBVF9nZXRfbDNfaW5mbzsKICAgICBzeXNjdGwudS5wc3JfY2F0X29wLnRhcmdldCA9IHNvY2tl dDsKIAotICAgIHJjID0geGNfc3lzY3RsKHhjaCwgJnN5c2N0bCk7Ci0gICAgaWYgKCAhcmMgKQot ICAgIHsKLSAgICAgICAgKmNvc19tYXggPSBzeXNjdGwudS5wc3JfY2F0X29wLnUubDNfaW5mby5j b3NfbWF4OwotICAgICAgICAqY2JtX2xlbiA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5sM19pbmZv LmNibV9sZW47Ci0gICAgICAgICpjZHBfZW5hYmxlZCA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5s M19pbmZvLmZsYWdzICYKLSAgICAgICAgICAgICAgICAgICAgICAgWEVOX1NZU0NUTF9QU1JfQ0FU X0wzX0NEUDsKKyAgICBzd2l0Y2ggKCBsdmwgKSB7CisgICAgY2FzZSAyOgorICAgICAgICBzeXNj dGwudS5wc3JfY2F0X29wLmNtZCA9IFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5mbzsKKyAg ICAgICAgcmMgPSB4Y19zeXNjdGwoeGNoLCAmc3lzY3RsKTsKKyAgICAgICAgaWYgKCAhcmMgKQor ICAgICAgICB7CisgICAgICAgICAgICAqY29zX21heCA9IHN5c2N0bC51LnBzcl9jYXRfb3AudS5s Ml9pbmZvLmNvc19tYXg7CisgICAgICAgICAgICAqY2JtX2xlbiA9IHN5c2N0bC51LnBzcl9jYXRf b3AudS5sMl9pbmZvLmNibV9sZW47CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2Fz ZSAzOgorICAgICAgICBzeXNjdGwudS5wc3JfY2F0X29wLmNtZCA9IFhFTl9TWVNDVExfUFNSX0NB VF9nZXRfbDNfaW5mbzsKKyAgICAgICAgcmMgPSB4Y19zeXNjdGwoeGNoLCAmc3lzY3RsKTsKKyAg ICAgICAgaWYgKCAhcmMgKQorICAgICAgICB7CisgICAgICAgICAgICAqY29zX21heCA9IHN5c2N0 bC51LnBzcl9jYXRfb3AudS5sM19pbmZvLmNvc19tYXg7CisgICAgICAgICAgICAqY2JtX2xlbiA9 IHN5c2N0bC51LnBzcl9jYXRfb3AudS5sM19pbmZvLmNibV9sZW47CisgICAgICAgICAgICAqY2Rw X2VuYWJsZWQgPSBzeXNjdGwudS5wc3JfY2F0X29wLnUubDNfaW5mby5mbGFncyAmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBYRU5fU1lTQ1RMX1BTUl9DQVRfTDNfQ0RQOworICAgICAgICB9 CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGVycm5vID0gRU9QTk9UU1VQ UDsKKyAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KIAogICAgIHJldHVybiByYzsKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhsL2xpYnhsLmggYi90b29scy9saWJ4bC9saWJ4bC5oCmluZGV4IGFjYmY0 NzYuLjAyNjAxNGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsLmgKKysrIGIvdG9vbHMv bGlieGwvbGlieGwuaApAQCAtOTA3LDYgKzkwNywxMyBAQCB2b2lkIGxpYnhsX21hY19jb3B5KGxp YnhsX2N0eCAqY3R4LCBsaWJ4bF9tYWMgKmRzdCwgY29uc3QgbGlieGxfbWFjICpzcmMpOwogI2Vu ZGlmCiAKIC8qCisgKiBMSUJYTF9IQVZFX1BTUl9HRU4KKyAqCisgKiBJZiB0aGlzIGlzIGRlZmlu ZWQsIHRoZSBHZW5lcmFsIEludGVyZmFjZXMgZm9yIFBTUiBmZWF0dXJlcyBhcmUgc3VwcG9ydGVk LgorICovCisjZGVmaW5lIExJQlhMX0hBVkVfUFNSX0dFTiAxCisKKy8qCiAgKiBMSUJYTF9IQVZF X1BDSVRPUE9MT0dZCiAgKgogICogSWYgdGhpcyBpcyBkZWZpbmVkLCB0aGVuIGludGVyZmFjZSB0 byBxdWVyeSBoeXBlcnZpc29yIGFib3V0IFBDSSBkZXZpY2UKQEAgLTIxNTksOCArMjE2Niw4IEBA IGludCBsaWJ4bF9wc3JfY2F0X2dldF9jYm0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlk LAogICogT24gc3VjY2VzcywgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgZWxlbWVu dHMgaW4gJ2luZm8nLAogICogYW5kIHRoZSBsZW5ndGggaW4gJ25yJy4KICAqLwotaW50IGxpYnhs X3Bzcl9jYXRfZ2V0X2wzX2luZm8obGlieGxfY3R4ICpjdHgsIGxpYnhsX3Bzcl9jYXRfaW5mbyAq KmluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm5yKTsKK2ludCBsaWJ4 bF9wc3JfY2F0X2dldF9pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8gKipp bmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuciwgdW5zaWduZWQgaW50IGx2 bCk7CiB2b2lkIGxpYnhsX3Bzcl9jYXRfaW5mb19saXN0X2ZyZWUobGlieGxfcHNyX2NhdF9pbmZv ICpsaXN0LCBpbnQgbnIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhs X3Bzci5jIGIvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKaW5kZXggNzg2MTgzYy4uZWMyMDQyYiAx MDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfcHNyLmMKKysrIGIvdG9vbHMvbGlieGwvbGli eGxfcHNyLmMKQEAgLTM1Miw4ICszNTIsOCBAQCBpbnQgbGlieGxfcHNyX2NhdF9nZXRfY2JtKGxp YnhsX2N0eCAqY3R4LCB1aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gcmM7CiB9CiAKLWludCBs aWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2lu Zm8gKippbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpucikKK2ludCBs aWJ4bF9wc3JfY2F0X2dldF9pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9wc3JfY2F0X2luZm8g KippbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpuciwgdW5zaWduZWQgaW50 IGx2bCkKIHsKICAgICBHQ19JTklUKGN0eCk7CiAgICAgaW50IHJjOwpAQCAtMzgwLDggKzM4MCw4 IEBAIGludCBsaWJ4bF9wc3JfY2F0X2dldF9sM19pbmZvKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9w c3JfY2F0X2luZm8gKippbmZvLAogCiAgICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdChzb2NrZXRp ZCwgc29ja2V0bWFwKSB7CiAgICAgICAgIHB0cltpXS5pZCA9IHNvY2tldGlkOwotICAgICAgICBp ZiAoeGNfcHNyX2NhdF9nZXRfbDNfaW5mbyhjdHgtPnhjaCwgc29ja2V0aWQsICZwdHJbaV0uY29z X21heCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0cltpXS5jYm1fbGVu LCAmcHRyW2ldLmNkcF9lbmFibGVkKSkgeworICAgICAgICBpZiAoeGNfcHNyX2NhdF9nZXRfaW5m byhjdHgtPnhjaCwgc29ja2V0aWQsIGx2bCwgJnB0cltpXS5jb3NfbWF4LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmcHRyW2ldLmNibV9sZW4sICZwdHJbaV0uY2RwX2VuYWJsZWQp KSB7CiAgICAgICAgICAgICBsaWJ4bF9fcHNyX2NhdF9sb2dfZXJyX21zZyhnYywgZXJybm8pOwog ICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICAgICAgZnJlZShwdHIpOwpAQCAt NDAwLDcgKzQwMCw3IEBAIG91dDoKIAogdm9pZCBsaWJ4bF9wc3JfY2F0X2luZm9fbGlzdF9mcmVl KGxpYnhsX3Bzcl9jYXRfaW5mbyAqbGlzdCwgaW50IG5yKQogewotICAgIGludCBpOworICAgIHVu c2lnbmVkIGludCBpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG5yOyBpKyspCiAgICAgICAgIGxp YnhsX3Bzcl9jYXRfaW5mb19kaXNwb3NlKCZsaXN0W2ldKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhsL2xpYnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAppbmRleCBh MzJjNzUxLi45NDRiN2Q0IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwK KysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCkBAIC04OTgsNiArODk4LDcgQEAgbGli eGxfcHNyX2NibV90eXBlID0gRW51bWVyYXRpb24oInBzcl9jYm1fdHlwZSIsIFsKICAgICAoMSwg IkwzX0NCTSIpLAogICAgICgyLCAiTDNfQ0JNX0NPREUiKSwKICAgICAoMywgIkwzX0NCTV9EQVRB IiksCisgICAgKDQsICJMMl9DQk0iKSwKICAgICBdKQogCiBsaWJ4bF9wc3JfY2F0X2luZm8gPSBT dHJ1Y3QoInBzcl9jYXRfaW5mbyIsIFsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL3hsX2NtZGlt cGwuYyBiL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwppbmRleCBiYjVhZmI4Li5jYTMxMjJkIDEw MDY0NAotLS0gYS90b29scy9saWJ4bC94bF9jbWRpbXBsLmMKKysrIGIvdG9vbHMvbGlieGwveGxf Y21kaW1wbC5jCkBAIC05MzMyLDE4ICs5MzMyLDEyOCBAQCBpbnQgbWFpbl9wc3JfY210X3Nob3co aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogI2VuZGlmCiAKICNpZmRlZiBMSUJYTF9IQVZFX1BTUl9D QVQKLXN0YXRpYyBpbnQgcHNyX2NhdF9od2luZm8odm9pZCkKK3N0YXRpYyB2b2lkIHBzcl9jYXRf cHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZSh1aW50MzJfdCBkb21pZCwgdWludDMyX3Qgc29ja2V0 aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf cHNyX2NibV90eXBlIHR5cGUpCit7CisgICAgdWludDY0X3QgY2JtOworCisgICAgaWYgKCFsaWJ4 bF9wc3JfY2F0X2dldF9jYm0oY3R4LCBkb21pZCwgdHlwZSwgc29ja2V0aWQsICZjYm0pKQorICAg ICAgICBwcmludGYoIiUjMTYiUFJJeDY0LCBjYm0pOworICAgIGVsc2UKKyAgICAgICAgcHJpbnRm KCIlMTZzIiwgImVycm9yIik7Cit9CisKK3N0YXRpYyBpbnQgcHNyX2wyX2NhdF9od2luZm8odm9p ZCkKIHsKICAgICBpbnQgcmM7Ci0gICAgaW50IGksIG5yOworICAgIHVuc2lnbmVkIGludCBpOwor ICAgIGludCBucjsKKyAgICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87CisKKyAgICBwcmludGYo IkNhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neSAoQ0FUKTogTDJcbiIpOworCisgICAgcmMgPSBs aWJ4bF9wc3JfY2F0X2dldF9pbmZvKGN0eCwgJmluZm8sICZuciwgMik7CisgICAgaWYgKHJjKSB7 CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBsMiBjYXQgaW5mb1xuIik7 CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkr KykgeworICAgICAgICAvKiBUaGVyZSBpcyBubyBDTVQgb24gTDIgY2FjaGUgc28gZmFyLiAqLwor ICAgICAgICBwcmludGYoIiUtMTZzOiAldVxuIiwgIlNvY2tldCBJRCIsIGluZm9baV0uaWQpOwor ICAgICAgICBwcmludGYoIiUtMTZzOiAldVxuIiwgIk1heGltdW0gQ09TIiwgaW5mb1tpXS5jb3Nf bWF4KTsKKyAgICAgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJDQk0gbGVuZ3RoIiwgaW5mb1tp XS5jYm1fbGVuKTsKKyAgICAgICAgcHJpbnRmKCIlLTE2czogJSNsbHhcbiIsICJEZWZhdWx0IENC TSIsCisgICAgICAgICAgICAgICAoMXVsbCA8PCBpbmZvW2ldLmNibV9sZW4pIC0gMSk7CisgICAg fQorCisgICAgbGlieGxfcHNyX2NhdF9pbmZvX2xpc3RfZnJlZShpbmZvLCBucik7CisgICAgcmV0 dXJuIHJjOworfQorCitzdGF0aWMgdm9pZCBwc3JfbDJfY2F0X3ByaW50X29uZV9kb21haW5fY2Jt KHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCkKK3sKKyAgICBjaGFyICpkb21haW5f bmFtZTsKKworICAgIGRvbWFpbl9uYW1lID0gbGlieGxfZG9taWRfdG9fbmFtZShjdHgsIGRvbWlk KTsKKyAgICBwcmludGYoIiU1ZCUyNXMiLCBkb21pZCwgZG9tYWluX25hbWUpOworICAgIGZyZWUo ZG9tYWluX25hbWUpOworCisgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibV90eXBlKGRv bWlkLCBzb2NrZXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElC WExfUFNSX0NCTV9UWVBFX0wyX0NCTSk7CisKKyAgICBwcmludGYoIlxuIik7Cit9CisKK3N0YXRp YyBpbnQgcHNyX2wyX2NhdF9wcmludF9kb21haW5fY2JtKHVpbnQzMl90IGRvbWlkLCB1aW50MzJf dCBzb2NrZXRpZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgbnJfZG9tYWluczsK KyAgICBsaWJ4bF9kb21pbmZvICpsaXN0OworCisgICAgaWYgKGRvbWlkICE9IElOVkFMSURfRE9N SUQpIHsKKyAgICAgICAgcHNyX2wyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibShkb21pZCwgc29j a2V0aWQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIShsaXN0ID0gbGli eGxfbGlzdF9kb21haW4oY3R4LCAmbnJfZG9tYWlucykpKSB7CisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiRmFpbGVkIHRvIGdldCBkb21haW4gbGlzdCBmb3IgY2JtIGRpc3BsYXlcbiIpOworICAg ICAgICByZXR1cm4gRVJST1JfRkFJTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnJf ZG9tYWluczsgaSsrKQorICAgICAgICBwc3JfbDJfY2F0X3ByaW50X29uZV9kb21haW5fY2JtKGxp c3RbaV0uZG9taWQsIHNvY2tldGlkKTsKKyAgICBsaWJ4bF9kb21pbmZvX2xpc3RfZnJlZShsaXN0 LCBucl9kb21haW5zKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHBzcl9sMl9j YXRfcHJpbnRfc29ja2V0KHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm8p Cit7CisgICAgcHJpbnRmKCIlLTE2czogJXVcbiIsICJTb2NrZXQgSUQiLCBpbmZvLT5pZCk7Cisg ICAgcHJpbnRmKCIlLTE2czogJSNsbHhcbiIsICJEZWZhdWx0IENCTSIsICgxdWxsIDw8IGluZm8t PmNibV9sZW4pIC0gMSk7CisgICAgcHJpbnRmKCIlNXMlMjVzJTE2c1xuIiwgIklEIiwgIk5BTUUi LCAiQ0JNIik7CisKKyAgICByZXR1cm4gcHNyX2wyX2NhdF9wcmludF9kb21haW5fY2JtKGRvbWlk LCBpbmZvLT5pZCk7Cit9CisKK3N0YXRpYyBpbnQgcHNyX2wyX2NhdF9zaG93KHVpbnQzMl90IGRv bWlkKQoreworICAgIHVuc2lnbmVkIGludCBpOworICAgIGludCBucjsKKyAgICBpbnQgcmM7Cisg ICAgbGlieGxfcHNyX2NhdF9pbmZvICppbmZvOworCisgICAgcmMgPSBsaWJ4bF9wc3JfY2F0X2dl dF9pbmZvKGN0eCwgJmluZm8sICZuciwgMik7CisgICAgaWYgKHJjKSB7CisgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBsMiBjYXQgaW5mb1xuIik7CisgICAgICAgIHJldHVy biByYzsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykgeworICAgICAgICBy YyA9IHBzcl9sMl9jYXRfcHJpbnRfc29ja2V0KGRvbWlkLCBpbmZvICsgaSk7CisgICAgICAgIGlm IChyYykKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworb3V0OgorICAgIGxpYnhsX3Bz cl9jYXRfaW5mb19saXN0X2ZyZWUoaW5mbywgbnIpOworICAgIHJldHVybiByYzsKK30KKworc3Rh dGljIGludCBwc3JfbDNfY2F0X2h3aW5mbyh2b2lkKQoreworICAgIGludCByYzsKKyAgICB1bnNp Z25lZCBpbnQgaTsKKyAgICBpbnQgbnI7CiAgICAgdWludDMyX3QgbDNfY2FjaGVfc2l6ZTsKICAg ICBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm87CiAKLSAgICBwcmludGYoIkNhY2hlIEFsbG9jYXRp b24gVGVjaG5vbG9neSAoQ0FUKTpcbiIpOworICAgIHByaW50ZigiQ2FjaGUgQWxsb2NhdGlvbiBU ZWNobm9sb2d5IChDQVQpOiBMM1xuIik7CiAKLSAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2wz X2luZm8oY3R4LCAmaW5mbywgJm5yKTsKKyAgICByYyA9IGxpYnhsX3Bzcl9jYXRfZ2V0X2luZm8o Y3R4LCAmaW5mbywgJm5yLCAzKTsKICAgICBpZiAocmMpIHsKLSAgICAgICAgZnByaW50ZihzdGRl cnIsICJGYWlsZWQgdG8gZ2V0IGNhdCBpbmZvXG4iKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIs ICJGYWlsZWQgdG8gZ2V0IGwzIGNhdCBpbmZvXG4iKTsKICAgICAgICAgcmV0dXJuIHJjOwogICAg IH0KIApAQCAtOTM2OSwxOSArOTQ3OSw4IEBAIG91dDoKICAgICByZXR1cm4gcmM7CiB9CiAKLXN0 YXRpYyB2b2lkIHBzcl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm1fdHlwZSh1aW50MzJfdCBkb21p ZCwgdWludDMyX3Qgc29ja2V0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfcHNyX2NibV90eXBlIHR5cGUpCi17Ci0gICAgdWludDY0X3QgY2Jt OwotCi0gICAgaWYgKCFsaWJ4bF9wc3JfY2F0X2dldF9jYm0oY3R4LCBkb21pZCwgdHlwZSwgc29j a2V0aWQsICZjYm0pKQotICAgICAgICBwcmludGYoIiUjMTYiUFJJeDY0LCBjYm0pOwotICAgIGVs c2UKLSAgICAgICAgcHJpbnRmKCIlMTZzIiwgImVycm9yIik7Ci19Ci0KLXN0YXRpYyB2b2lkIHBz cl9jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0odWludDMyX3QgZG9taWQsIHVpbnQzMl90IHNvY2tl dGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNkcF9l bmFibGVkKQorc3RhdGljIHZvaWQgcHNyX2wzX2NhdF9wcmludF9vbmVfZG9tYWluX2NibSh1aW50 MzJfdCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgY2RwX2VuYWJsZWQpCiB7CiAgICAgY2hhciAqZG9tYWlu X25hbWU7CiAKQEAgLTk0MDIsMTQgKzk1MDEsMTUgQEAgc3RhdGljIHZvaWQgcHNyX2NhdF9wcmlu dF9vbmVfZG9tYWluX2NibSh1aW50MzJfdCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQsCiAgICAg cHJpbnRmKCJcbiIpOwogfQogCi1zdGF0aWMgaW50IHBzcl9jYXRfcHJpbnRfZG9tYWluX2NibSh1 aW50MzJfdCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sIGNkcF9lbmFibGVkKQorc3RhdGljIGludCBwc3JfbDNfY2F0X3By aW50X2RvbWFpbl9jYm0odWludDMyX3QgZG9taWQsIHVpbnQzMl90IHNvY2tldGlkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjZHBfZW5hYmxlZCkKIHsKLSAg ICBpbnQgaSwgbnJfZG9tYWluczsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgbnJfZG9t YWluczsKICAgICBsaWJ4bF9kb21pbmZvICpsaXN0OwogCiAgICAgaWYgKGRvbWlkICE9IElOVkFM SURfRE9NSUQpIHsKLSAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibShkb21pZCwg c29ja2V0aWQsIGNkcF9lbmFibGVkKTsKKyAgICAgICAgcHNyX2wzX2NhdF9wcmludF9vbmVfZG9t YWluX2NibShkb21pZCwgc29ja2V0aWQsIGNkcF9lbmFibGVkKTsKICAgICAgICAgcmV0dXJuIDA7 CiAgICAgfQogCkBAIC05NDE5LDEzICs5NTE5LDEzIEBAIHN0YXRpYyBpbnQgcHNyX2NhdF9wcmlu dF9kb21haW5fY2JtKHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwKICAgICB9CiAK ICAgICBmb3IgKGkgPSAwOyBpIDwgbnJfZG9tYWluczsgaSsrKQotICAgICAgICBwc3JfY2F0X3By aW50X29uZV9kb21haW5fY2JtKGxpc3RbaV0uZG9taWQsIHNvY2tldGlkLCBjZHBfZW5hYmxlZCk7 CisgICAgICAgIHBzcl9sM19jYXRfcHJpbnRfb25lX2RvbWFpbl9jYm0obGlzdFtpXS5kb21pZCwg c29ja2V0aWQsIGNkcF9lbmFibGVkKTsKICAgICBsaWJ4bF9kb21pbmZvX2xpc3RfZnJlZShsaXN0 LCBucl9kb21haW5zKTsKIAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHBzcl9jYXRf cHJpbnRfc29ja2V0KHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm8pCitz dGF0aWMgaW50IHBzcl9sM19jYXRfcHJpbnRfc29ja2V0KHVpbnQzMl90IGRvbWlkLCBsaWJ4bF9w c3JfY2F0X2luZm8gKmluZm8pCiB7CiAgICAgaW50IHJjOwogICAgIHVpbnQzMl90IGwzX2NhY2hl X3NpemU7CkBAIC05NDQ1LDIzICs5NTQ1LDI0IEBAIHN0YXRpYyBpbnQgcHNyX2NhdF9wcmludF9z b2NrZXQodWludDMyX3QgZG9taWQsIGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbykKICAgICBlbHNl CiAgICAgICAgIHByaW50ZigiJTVzJTI1cyUxNnNcbiIsICJJRCIsICJOQU1FIiwgIkNCTSIpOwog Ci0gICAgcmV0dXJuIHBzcl9jYXRfcHJpbnRfZG9tYWluX2NibShkb21pZCwgaW5mby0+aWQsIGlu Zm8tPmNkcF9lbmFibGVkKTsKKyAgICByZXR1cm4gcHNyX2wzX2NhdF9wcmludF9kb21haW5fY2Jt KGRvbWlkLCBpbmZvLT5pZCwgaW5mby0+Y2RwX2VuYWJsZWQpOwogfQogCi1zdGF0aWMgaW50IHBz cl9jYXRfc2hvdyh1aW50MzJfdCBkb21pZCkKK3N0YXRpYyBpbnQgcHNyX2wzX2NhdF9zaG93KHVp bnQzMl90IGRvbWlkKQogewotICAgIGludCBpLCBucjsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAg ICBpbnQgbnI7CiAgICAgaW50IHJjOwogICAgIGxpYnhsX3Bzcl9jYXRfaW5mbyAqaW5mbzsKIAot ICAgIHJjID0gbGlieGxfcHNyX2NhdF9nZXRfbDNfaW5mbyhjdHgsICZpbmZvLCAmbnIpOworICAg IHJjID0gbGlieGxfcHNyX2NhdF9nZXRfaW5mbyhjdHgsICZpbmZvLCAmbnIsIDMpOwogICAgIGlm IChyYykgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgY2F0IGluZm9c biIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgbDMgY2F0IGluZm9c biIpOwogICAgICAgICByZXR1cm4gcmM7CiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IG5y OyBpKyspIHsKLSAgICAgICAgcmMgPSBwc3JfY2F0X3ByaW50X3NvY2tldChkb21pZCwgaW5mbyAr IGkpOworICAgICAgICByYyA9IHBzcl9sM19jYXRfcHJpbnRfc29ja2V0KGRvbWlkLCBpbmZvICsg aSk7CiAgICAgICAgIGlmIChyYykKICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KQEAgLTk0 ODIsMTkgKzk1ODMsMjEgQEAgaW50IG1haW5fcHNyX2NhdF9jYm1fc2V0KGludCBhcmdjLCBjaGFy ICoqYXJndikKICAgICBjaGFyICp2YWx1ZTsKICAgICBsaWJ4bF9zdHJpbmdfbGlzdCBzb2NrZXRf bGlzdDsKICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7Ci0gICAgaW50IGksIGosIGxlbjsK KyAgICB1bnNpZ25lZCBpbnQgaSwgaiwgbGVuOworICAgIHVuc2lnbmVkIGludCBsdmwgPSAzOwog CiAgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0c1tdID0gewogICAgICAgICB7InNvY2tldCIs IDEsIDAsICdzJ30sCiAgICAgICAgIHsiZGF0YSIsIDAsIDAsICdkJ30sCiAgICAgICAgIHsiY29k ZSIsIDAsIDAsICdjJ30sCisgICAgICAgIHsibGV2ZWwiLCAxLCAwLCAnbCd9LAogICAgICAgICBD T01NT05fTE9OR19PUFRTCiAgICAgfTsKIAogICAgIGxpYnhsX3NvY2tldF9iaXRtYXBfYWxsb2Mo Y3R4LCAmdGFyZ2V0X21hcCwgMCk7CiAgICAgbGlieGxfYml0bWFwX3NldF9ub25lKCZ0YXJnZXRf bWFwKTsKIAotICAgIFNXSVRDSF9GT1JFQUNIX09QVChvcHQsICJzOmNkIiwgb3B0cywgInBzci1j YXQtY2JtLXNldCIsIDIpIHsKKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiczpsOmNkIiwg b3B0cywgInBzci1jYXQtY2JtLXNldCIsIDIpIHsKICAgICBjYXNlICdzJzoKICAgICAgICAgdHJp bShpc3NwYWNlLCBvcHRhcmcsICZ2YWx1ZSk7CiAgICAgICAgIHNwbGl0X3N0cmluZ19pbnRvX3N0 cmluZ19saXN0KHZhbHVlLCAiLCIsICZzb2NrZXRfbGlzdCk7CkBAIC05NTE0LDE3ICs5NjE3LDI0 IEBAIGludCBtYWluX3Bzcl9jYXRfY2JtX3NldChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAg Y2FzZSAnYyc6CiAgICAgICAgIG9wdF9jb2RlID0gMTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz ZSAnbCc6CisgICAgICAgIGx2bCA9IGF0b2kob3B0YXJnKTsKKyAgICAgICAgYnJlYWs7CiAgICAg fQogCi0gICAgaWYgKG9wdF9kYXRhICYmIG9wdF9jb2RlKSB7Ci0gICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiQ2Fubm90IGhhbmRsZSAtYyBhbmQgLWQgYXQgdGhlIHNhbWUgdGltZVxuIik7Ci0gICAg ICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2UgaWYgKG9wdF9kYXRhKSB7Ci0gICAgICAgIHR5cGUg PSBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNX0RBVEE7Ci0gICAgfSBlbHNlIGlmIChvcHRfY29k ZSkgewotICAgICAgICB0eXBlID0gTElCWExfUFNSX0NCTV9UWVBFX0wzX0NCTV9DT0RFOwotICAg IH0gZWxzZSB7Ci0gICAgICAgIHR5cGUgPSBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNOworICAg IGlmIChsdmwgPT0gMikKKyAgICAgICAgdHlwZSA9IExJQlhMX1BTUl9DQk1fVFlQRV9MMl9DQk07 CisgICAgZWxzZSBpZiAobHZsID09IDMpIHsKKyAgICAgICAgaWYgKG9wdF9kYXRhICYmIG9wdF9j b2RlKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBoYW5kbGUgLWMgYW5k IC1kIGF0IHRoZSBzYW1lIHRpbWVcbiIpOworICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7 CisgICAgICAgIH0gZWxzZSBpZiAob3B0X2RhdGEpIHsKKyAgICAgICAgICAgIHR5cGUgPSBMSUJY TF9QU1JfQ0JNX1RZUEVfTDNfQ0JNX0RBVEE7CisgICAgICAgIH0gZWxzZSBpZiAob3B0X2NvZGUp IHsKKyAgICAgICAgICAgIHR5cGUgPSBMSUJYTF9QU1JfQ0JNX1RZUEVfTDNfQ0JNX0NPREU7Cisg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0eXBlID0gTElCWExfUFNSX0NCTV9UWVBFX0wz X0NCTTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChsaWJ4bF9iaXRtYXBfaXNfZW1wdHko JnRhcmdldF9tYXApKQpAQCAtOTU0NiwxMSArOTY1NiwyMCBAQCBpbnQgbWFpbl9wc3JfY2F0X2Ni bV9zZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiBpbnQgbWFpbl9wc3JfY2F0X3Nob3coaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogewotICAgIGludCBvcHQ7CisgICAgaW50IG9wdCA9IDA7CiAg ICAgdWludDMyX3QgZG9taWQ7CisgICAgdW5zaWduZWQgaW50IGx2bCA9IDM7CisgICAgaW50IHJj OwogCi0gICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJwc3ItY2F0LXNob3ci LCAwKSB7Ci0gICAgICAgIC8qIE5vIG9wdGlvbnMgKi8KKyAgICBzdGF0aWMgc3RydWN0IG9wdGlv biBvcHRzW10gPSB7CisgICAgICAgIHsibGV2ZWwiLCAxLCAwLCAnbCd9LAorICAgICAgICBDT01N T05fTE9OR19PUFRTCisgICAgfTsKKworICAgIFNXSVRDSF9GT1JFQUNIX09QVChvcHQsICJsOiIs IG9wdHMsICJwc3ItY2F0LXNob3ciLCAwKSB7CisgICAgY2FzZSAnbCc6CisgICAgICAgIGx2bCA9 IGF0b2kob3B0YXJnKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKG9wdGluZCA+ PSBhcmdjKQpAQCAtOTU2Miw3ICs5NjgxLDEyIEBAIGludCBtYWluX3Bzcl9jYXRfc2hvdyhpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgIHJldHVybiAyOwogICAgIH0KIAotICAgIHJldHVy biBwc3JfY2F0X3Nob3coZG9taWQpOworICAgIGlmIChsdmwgPT0gMykKKyAgICAgICAgcmMgPSBw c3JfbDNfY2F0X3Nob3coZG9taWQpOworICAgIGVsc2UgaWYgKGx2bCA9PSAyKQorICAgICAgICBy YyA9IHBzcl9sMl9jYXRfc2hvdyhkb21pZCk7CisKKyAgICByZXR1cm4gcmM7CiB9CiAKIGludCBt YWluX3Bzcl9od2luZm8oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQpAQCAtOTU4OCw3ICs5NzEyLDEx IEBAIGludCBtYWluX3Bzcl9od2luZm8oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICBy ZXQgPSBwc3JfY210X2h3aW5mbygpOwogCiAgICAgaWYgKCFyZXQgJiYgKGFsbCB8fCBjYXQpKQot ICAgICAgICByZXQgPSBwc3JfY2F0X2h3aW5mbygpOworICAgICAgICByZXQgPSBwc3JfbDNfY2F0 X2h3aW5mbygpOworCisgICAgLyogTDIgQ0FUIGlzIGluZGVwZW5kZW50IG9mIENNVCBhbmQgTDMg Q0FUICovCisgICAgaWYgKGFsbCB8fCBjYXQpCisgICAgICAgIHJldCA9IHBzcl9sMl9jYXRfaHdp bmZvKCk7CiAKICAgICByZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwveGxf Y21kdGFibGUuYyBiL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMKaW5kZXggNTg4ZDVkOS4uMzJj M2VlNSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwveGxfY21kdGFibGUuYworKysgYi90b29scy9s aWJ4bC94bF9jbWR0YWJsZS5jCkBAIC01NTAsMTMgKzU1MCwxNSBAQCBzdHJ1Y3QgY21kX3NwZWMg Y21kX3RhYmxlW10gPSB7CiAgICAgICAiU2V0IGNhY2hlIGNhcGFjaXR5IGJpdG1hc2tzKENCTSkg Zm9yIGEgZG9tYWluIiwKICAgICAgICJbb3B0aW9uc10gPERvbWFpbj4gPENCTT4iLAogICAgICAg Ii1zIDxzb2NrZXQ+ICAgICAgIFNwZWNpZnkgdGhlIHNvY2tldCB0byBwcm9jZXNzLCBvdGhlcndp c2UgYWxsIHNvY2tldHMgYXJlIHByb2Nlc3NlZFxuIgorICAgICAgIi1sIDxsZXZlbD4gICAgICAg IFNwZWNpZnkgdGhlIGNhY2hlIGxldmVsIHRvIHByb2Nlc3MsIG90aGVyd2lzZSBMMyBjYWNoZSBp cyBwcm9jZXNzZWRcbiIKICAgICAgICItYyAgICAgICAgICAgICAgICBTZXQgY29kZSBDQk0gaWYg Q0RQIGlzIHN1cHBvcnRlZFxuIgogICAgICAgIi1kICAgICAgICAgICAgICAgIFNldCBkYXRhIENC TSBpZiBDRFAgaXMgc3VwcG9ydGVkXG4iCiAgICAgfSwKICAgICB7ICJwc3ItY2F0LXNob3ciLAog ICAgICAgJm1haW5fcHNyX2NhdF9zaG93LCAwLCAxLAogICAgICAgIlNob3cgQ2FjaGUgQWxsb2Nh dGlvbiBUZWNobm9sb2d5IGluZm9ybWF0aW9uIiwKLSAgICAgICI8RG9tYWluPiIsCisgICAgICAi W29wdGlvbnNdIDxEb21haW4+IiwKKyAgICAgICItbCA8bGV2ZWw+ICAgICAgICBTcGVjaWZ5IHRo ZSBjYWNoZSBsZXZlbCB0byBwcm9jZXNzLCBvdGhlcndpc2UgTDMgY2FjaGUgaXMgcHJvY2Vzc2Vk XG4iCiAgICAgfSwKIAogI2VuZGlmCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=