From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ross Lagerwall Subject: [XTF PATCH v2] Add a Live Patch privilege check test Date: Fri, 18 Nov 2016 09:36:06 +0000 Message-ID: <1479461766-11484-1-git-send-email-ross.lagerwall@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Andrew Cooper , Ross Lagerwall List-Id: xen-devel@lists.xenproject.org QWRkIGEgdGVzdCB0byBjaGVjayB0aGF0IExpdmUgUGF0Y2ggb3BlcmF0aW9ucyBjYW5ub3QgYmUg Y2FsbGVkIGZyb20gYW4KdW5wcml2aWxlZ2VkIGRvbWFpbi4KClNpZ25lZC1vZmYtYnk6IFJvc3Mg TGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgotLS0KCkluIHYyOgoqIEZpeGVk IHJldmlldyBpc3N1ZXMuCiogUmViYXNlZCBhbmQgYWRkZWQgYSB0ZXN0X3RpdGxlIHN0cmluZy4K CiBjb21tb24vbGliLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNSArKysKIGRvY3MvYWxs LXRlc3RzLmRveCAgICAgICAgICAgICAgICAgIHwgICAyICsKIGluY2x1ZGUveGVuL3N5c2N0bC5o ICAgICAgICAgICAgICAgIHwgMjE4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogaW5jbHVkZS94dGYvaHlwZXJjYWxsLmggICAgICAgICAgICAgfCAgIDYgKwogaW5jbHVkZS94 dGYvbGliLmggICAgICAgICAgICAgICAgICAgfCAgIDIgKwogdGVzdHMvbGl2ZXBhdGNoLXByaXYt Y2hlY2svTWFrZWZpbGUgfCAgIDkgKysKIHRlc3RzL2xpdmVwYXRjaC1wcml2LWNoZWNrL21haW4u YyAgIHwgMTUzICsrKysrKysrKysrKysrKysrKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgNDA1 IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDc1NSBpbmNsdWRlL3hlbi9zeXNjdGwuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2xpdmVwYXRjaC1wcml2LWNoZWNrL01ha2VmaWxlCiBj cmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvbGl2ZXBhdGNoLXByaXYtY2hlY2svbWFpbi5jCgpkaWZm IC0tZ2l0IGEvY29tbW9uL2xpYi5jIGIvY29tbW9uL2xpYi5jCmluZGV4IDlkY2EzZTMuLmNjODQ3 YWIgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9saWIuYworKysgYi9jb21tb24vbGliLmMKQEAgLTE5LDYg KzE5LDIxIEBAIHZvaWQgX19ub3JldHVybiBwYW5pYyhjb25zdCBjaGFyICpmbXQsIC4uLikKICAg ICBhcmNoX2NyYXNoX2hhcmQoKTsKIH0KIAoraW50IHByb2JlX3N5c2N0bF9pbnRlcmZhY2VfdmVy c2lvbih2b2lkKQoreworICAgIGludCBpOworICAgIHhlbl9zeXNjdGxfdCBvcCA9IHswfTsKKwor ICAgIGZvciAoIGkgPSAwOyBpIDwgMTI4OyBpKysgKQorICAgIHsKKyAgICAgICAgb3AuaW50ZXJm YWNlX3ZlcnNpb24gPSBpOworICAgICAgICBpZiAoIGh5cGVyY2FsbF9zeXNjdGwoJm9wKSAhPSAt RUFDQ0VTICkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKworICAgIHJldHVybiAtMTsK K30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL2Rv Y3MvYWxsLXRlc3RzLmRveCBiL2RvY3MvYWxsLXRlc3RzLmRveAppbmRleCA0Zjg2MTgyLi4yOTA5 Yjg1IDEwMDY0NAotLS0gYS9kb2NzL2FsbC10ZXN0cy5kb3gKKysrIGIvZG9jcy9hbGwtdGVzdHMu ZG94CkBAIC0yMiw2ICsyMiw4IEBAIGFuZCBmdW5jdGlvbmFsaXR5LgogCiBAc3VicGFnZSB0ZXN0 LWludmxwZyAtIGBpbnZscGdgIGluc3RydWN0aW9uIGJlaGF2aW91ci4KIAorQHN1YnBhZ2UgdGVz dC1saXZlcGF0Y2gtcHJpdi1jaGVjayAtIExpdmUgUGF0Y2ggUHJpdmlsZWdlIENoZWNrCisKIEBz dWJwYWdlIHRlc3QtcHYtaW9wbCAtIElPUEwgZW11bGF0aW9uIGZvciBQViBndWVzdHMuCiAKIEBz dWJwYWdlIHRlc3Qtc3dpbnQtZW11bGF0aW9uIC0gU29mdHdhcmUgaW50ZXJydXB0IGVtdWxhdGlv biBmb3IgSFZNIGd1ZXN0cy4KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3N5c2N0bC5oIGIvaW5j bHVkZS94ZW4vc3lzY3RsLmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjQw MDZmYgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUveGVuL3N5c2N0bC5oCkBAIC0wLDAgKzEs MjE4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBzeXNjdGwuaAorICoKKyAqIFN5c3Rl bSBtYW5hZ2VtZW50IG9wZXJhdGlvbnMuIEZvciB1c2UgYnkgbm9kZSBjb250cm9sIHN0YWNrLgor ICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworICogZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMK KyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF UgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNiwgSyBGcmFzZXIKKyAqLwor CisjaWZuZGVmIF9fWEVOX1BVQkxJQ19TWVNDVExfSF9fCisjZGVmaW5lIF9fWEVOX1BVQkxJQ19T WVNDVExfSF9fCisKKyNpbmNsdWRlICJ4ZW4uaCIKKyNpbmNsdWRlICJwaHlzZGV2LmgiCisKK3R5 cGVkZWYgc3RydWN0IHsKKyAgICB1bmlvbiB7CisgICAgICAgIHZvaWQgKnA7CisgICAgICAgIHVp bnQ2NF90IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBxOworICAgIH07Cit9IGd1ZXN0X2hh bmRsZV82NDsKKworLyoKKyAqIFhFTl9TWVNDVExfTElWRVBBVENIX29wCisgKgorICogUmVmZXIg dG8gdGhlIGRvY3MvdW5zdGFibGUvbWlzYy9saXZlcGF0Y2gubWFya2Rvd24KKyAqIGZvciB0aGUg ZGVzaWduIGRldGFpbHMgb2YgdGhpcyBoeXBlcmNhbGwuCisgKgorICogVGhlcmUgYXJlIGZvdXIg c3ViLW9wczoKKyAqICBYRU5fU1lTQ1RMX0xJVkVQQVRDSF9VUExPQUQgKDApCisgKiAgWEVOX1NZ U0NUTF9MSVZFUEFUQ0hfR0VUICgxKQorICogIFhFTl9TWVNDVExfTElWRVBBVENIX0xJU1QgKDIp CisgKiAgWEVOX1NZU0NUTF9MSVZFUEFUQ0hfQUNUSU9OICgzKQorICoKKyAqIFRoZSBub3JtYWwg c2VxdWVuY2Ugb2Ygc3ViLW9wcyBpcyB0bzoKKyAqICAxKSBYRU5fU1lTQ1RMX0xJVkVQQVRDSF9V UExPQUQgdG8gdXBsb2FkIHRoZSBwYXlsb2FkLiBJZiBlcnJvcnMgU1RPUC4KKyAqICAyKSBYRU5f U1lTQ1RMX0xJVkVQQVRDSF9HRVQgdG8gY2hlY2sgdGhlIGAtPnJjYC4gSWYgLVhFTl9FQUdBSU4g c3Bpbi4KKyAqICAgICBJZiB6ZXJvIGdvIHRvIG5leHQgc3RlcC4KKyAqICAzKSBYRU5fU1lTQ1RM X0xJVkVQQVRDSF9BQ1RJT04gd2l0aCBMSVZFUEFUQ0hfQUNUSU9OX0FQUExZIHRvIGFwcGx5IHRo ZSBwYXRjaC4KKyAqICA0KSBYRU5fU1lTQ1RMX0xJVkVQQVRDSF9HRVQgdG8gY2hlY2sgdGhlIGAt PnJjYC4gSWYgaW4gLVhFTl9FQUdBSU4gc3Bpbi4KKyAqICAgICBJZiB6ZXJvIGV4aXQgd2l0aCBz dWNjZXNzLgorICovCisKKyNkZWZpbmUgTElWRVBBVENIX1BBWUxPQURfVkVSU0lPTiAxCisvKgor ICogU3RydWN0dXJlIGRlc2NyaWJpbmcgYW4gRUxGIHBheWxvYWQuIFVuaXF1ZWx5IGlkZW50aWZp ZXMgdGhlCisgKiBwYXlsb2FkLiBTaG91bGQgYmUgaHVtYW4gcmVhZGFibGUuCisgKiBSZWNvbW1l bmRlZCBsZW5ndGggaXMgdXB0byBYRU5fTElWRVBBVENIX05BTUVfU0laRS4KKyAqIEluY2x1ZGVz IHRoZSBOVUwgdGVybWluYXRvci4KKyAqLworI2RlZmluZSBYRU5fTElWRVBBVENIX05BTUVfU0la RSAxMjgKK3N0cnVjdCB4ZW5fbGl2ZXBhdGNoX25hbWUgeworICAgIGd1ZXN0X2hhbmRsZV82NCBu YW1lOyAgICAgICAgICAgICAgICAgICAvKiBJTjogcG9pbnRlciB0byBuYW1lLiAqLworICAgIHVp bnQxNl90IHNpemU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogc2l6ZSBvZiBuYW1l LiBNYXkgYmUgdXB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBYRU5fTElWRVBBVENIX05BTUVfU0laRS4gKi8KKyAgICB1aW50MTZfdCBwYWRbM107ICAg ICAgICAgICAgICAgICAgICAgICAgLyogSU46IE1VU1QgYmUgemVyby4gKi8KK307Cit0eXBlZGVm IHN0cnVjdCB4ZW5fbGl2ZXBhdGNoX25hbWUgeGVuX2xpdmVwYXRjaF9uYW1lX3Q7CisKKy8qCisg KiBVcGxvYWQgYSBwYXlsb2FkIHRvIHRoZSBoeXBlcnZpc29yLiBUaGUgcGF5bG9hZCBpcyB2ZXJp ZmllZAorICogYWdhaW5zdCBiYXNpYyBjaGVja3MgYW5kIGlmIHRoZXJlIGFyZSBhbnkgaXNzdWVz IHRoZSBwcm9wZXIgcmV0dXJuIGNvZGUKKyAqIHdpbGwgYmUgcmV0dXJuZWQuIFRoZSBwYXlsb2Fk IGlzIG5vdCBhcHBsaWVkIGF0IHRoaXMgdGltZSAtIHRoYXQgaXMKKyAqIGNvbnRyb2xsZWQgYnkg WEVOX1NZU0NUTF9MSVZFUEFUQ0hfQUNUSU9OLgorICoKKyAqIFRoZSByZXR1cm4gdmFsdWUgaXMg emVybyBpZiB0aGUgcGF5bG9hZCB3YXMgc3VjY2VzZnVsbHkgdXBsb2FkZWQuCisgKiBPdGhlcndp c2UgYW4gRVhYIHJldHVybiB2YWx1ZSBpcyBwcm92aWRlZC4gRHVwbGljYXRlIGBuYW1lYCBhcmUg bm90CisgKiBzdXBwb3J0ZWQuCisgKgorICogVGhlIHBheWxvYWQgYXQgdGhpcyBwb2ludCBpcyB2 ZXJpZmllZCBhZ2FpbnN0IGJhc2ljIGNoZWNrcy4KKyAqCisgKiBUaGUgYHBheWxvYWRgIGlzIHRo ZSBFTEYgcGF5bG9hZCBhcyBtZW50aW9uZWQgaW4gdGhlIGBQYXlsb2FkIGZvcm1hdGAKKyAqIHNl Y3Rpb24gaW4gdGhlIExpdmUgUGF0Y2ggZGVzaWduIGRvY3VtZW50LgorICovCisjZGVmaW5lIFhF Tl9TWVNDVExfTElWRVBBVENIX1VQTE9BRCAwCitzdHJ1Y3QgeGVuX3N5c2N0bF9saXZlcGF0Y2hf dXBsb2FkIHsKKyAgICB4ZW5fbGl2ZXBhdGNoX25hbWVfdCBuYW1lOyAgICAgICAgICAgICAgLyog SU4sIG5hbWUgb2YgdGhlIHBhdGNoLiAqLworICAgIHVpbnQ2NF90IHNpemU7ICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBJTiwgc2l6ZSBvZiB0aGUgRUxGIGZpbGUuICovCisgICAgZ3Vlc3Rf aGFuZGxlXzY0IHBheWxvYWQ7ICAgICAgICAgICAgICAgIC8qIElOLCB0aGUgRUxGIGZpbGUuICov Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9saXZlcGF0Y2hfdXBsb2FkIHhlbl9zeXNj dGxfbGl2ZXBhdGNoX3VwbG9hZF90OworCisvKgorICogUmV0cmlldmUgYW4gc3RhdHVzIG9mIGFu IHNwZWNpZmljIHBheWxvYWQuCisgKgorICogVXBvbiBjb21wbGV0aW9uIHRoZSBgc3RydWN0IHhl bl9saXZlcGF0Y2hfc3RhdHVzYCBpcyB1cGRhdGVkLgorICoKKyAqIFRoZSByZXR1cm4gdmFsdWUg aXMgemVybyBvbiBzdWNjZXNzIGFuZCBYRU5fRVhYIG9uIGZhaWx1cmUuIFRoaXMgb3BlcmF0aW9u CisgKiBpcyBzeW5jaHJvbm91cyBhbmQgZG9lcyBub3QgcmVxdWlyZSBwcmVlbXB0aW9uLgorICov CisjZGVmaW5lIFhFTl9TWVNDVExfTElWRVBBVENIX0dFVCAxCisKK3N0cnVjdCB4ZW5fbGl2ZXBh dGNoX3N0YXR1cyB7CisjZGVmaW5lIExJVkVQQVRDSF9TVEFURV9DSEVDS0VEICAgICAgMQorI2Rl ZmluZSBMSVZFUEFUQ0hfU1RBVEVfQVBQTElFRCAgICAgIDIKKyAgICB1aW50MzJfdCBzdGF0ZTsg ICAgICAgICAgICAgICAgLyogT1VUOiBMSVZFUEFUQ0hfU1RBVEVfKi4gKi8KKyAgICBpbnQzMl90 IHJjOyAgICAgICAgICAgICAgICAgICAgLyogT1VUOiAwIGlmIG5vIGVycm9yLCBvdGhlcndpc2Ug LVhFTl9FWFguICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX2xpdmVwYXRjaF9zdGF0dXMgeGVu X2xpdmVwYXRjaF9zdGF0dXNfdDsKKworc3RydWN0IHhlbl9zeXNjdGxfbGl2ZXBhdGNoX2dldCB7 CisgICAgeGVuX2xpdmVwYXRjaF9uYW1lX3QgbmFtZTsgICAgICAgICAgICAgIC8qIElOLCBuYW1l IG9mIHRoZSBwYXlsb2FkLiAqLworICAgIHhlbl9saXZlcGF0Y2hfc3RhdHVzX3Qgc3RhdHVzOyAg ICAgICAgICAvKiBJTi9PVVQsIHN0YXRlIG9mIGl0LiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhl bl9zeXNjdGxfbGl2ZXBhdGNoX2dldCB4ZW5fc3lzY3RsX2xpdmVwYXRjaF9nZXRfdDsKKworLyoK KyAqIFJldHJpZXZlIGFuIGFycmF5IG9mIGFiYnJldmlhdGVkIHN0YXR1cyBhbmQgbmFtZXMgb2Yg cGF5bG9hZHMgdGhhdCBhcmUKKyAqIGxvYWRlZCBpbiB0aGUgaHlwZXJ2aXNvci4KKyAqCisgKiBJ ZiB0aGUgaHlwZXJjYWxsIHJldHVybnMgYW4gcG9zaXRpdmUgbnVtYmVyLCBpdCBpcyB0aGUgbnVt YmVyICh1cCB0byBgbnJgKQorICogb2YgdGhlIHBheWxvYWRzIHJldHVybmVkLCBhbG9uZyB3aXRo IGBucmAgdXBkYXRlZCB3aXRoIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nCisgKiBwYXlsb2Fkcywg YHZlcnNpb25gIHVwZGF0ZWQgKGl0IG1heSBiZSB0aGUgc2FtZSBhY3Jvc3MgaHlwZXJjYWxscy4g SWYgaXQKKyAqIHZhcmllcyB0aGUgZGF0YSBpcyBzdGFsZSBhbmQgZnVydGhlciBjYWxscyBjb3Vs ZCBmYWlsKS4gVGhlIGBzdGF0dXNgLAorICogYG5hbWVgLCBhbmQgYGxlbmAnIGFyZSB1cGRhdGVk IGF0IHRoZWlyIGRlc2lnbmVkIGluZGV4IHZhbHVlIChgaWR4YCkgd2l0aAorICogdGhlIHJldHVy bmVkIHZhbHVlIG9mIGRhdGEuCisgKgorICogSWYgdGhlIGh5cGVyY2FsbCByZXR1cm5zIEUyQklH IHRoZSBgbnJgIGlzIHRvbyBiaWcgYW5kIHNob3VsZCBiZQorICogbG93ZXJlZC4gVGhlIHVwcGVy IGxpbWl0IG9mIGBucmAgaXMgbGVmdCB0byB0aGUgaW1wbGVtZW50aW9uLgorICoKKyAqIE5vdGUg dGhhdCBkdWUgdG8gdGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgaHlwZXJjYWxscyB0aGUgZG9t YWluIG1pZ2h0IGhhdmUKKyAqIGFkZGVkIG9yIHJlbW92ZWQgdGhlIG51bWJlciBvZiBwYXlsb2Fk cyBtYWtpbmcgdGhpcyBpbmZvcm1hdGlvbiBzdGFsZS4gSXQgaXMKKyAqIHRoZSByZXNwb25zaWJp bGl0eSBvZiB0aGUgdG9vbHN0YWNrIHRvIHVzZSB0aGUgYHZlcnNpb25gIGZpZWxkIHRvIGNoZWNr CisgKiBiZXR3ZWVuIGVhY2ggaW52b2NhdGlvbi4gaWYgdGhlIHZlcnNpb24gZGlmZmVycyBpdCBz aG91bGQgZGlzY2FyZCB0aGUgc3RhbGUKKyAqIGRhdGEgYW5kIHN0YXJ0IGZyb20gc2NyYXRjaC4g SXQgaXMgT0sgZm9yIHRoZSB0b29sc3RhY2sgdG8gdXNlIHRoZSBuZXcKKyAqIGB2ZXJzaW9uYCBm aWVsZC4KKyAqLworI2RlZmluZSBYRU5fU1lTQ1RMX0xJVkVQQVRDSF9MSVNUIDIKK3N0cnVjdCB4 ZW5fc3lzY3RsX2xpdmVwYXRjaF9saXN0IHsKKyAgICB1aW50MzJfdCB2ZXJzaW9uOyAgICAgICAg ICAgICAgICAgICAgICAgLyogT1VUOiBIeXBlcnZpc29yIHN0YW1wcyB2YWx1ZS4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdmFyaWVzIGJldHdlZW4g Y2FsbHMsIHdlIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKiBnZXR0aW5nIHN0YWxlIGRhdGEuICovCisgICAgdWludDMyX3QgaWR4OyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIElOOiBJbmRleCBpbnRvIGh5cGVydmlzb3IgbGlzdC4gKi8KKyAg ICB1aW50MzJfdCBucjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IEhvdyBtYW55 IHN0YXR1cywgbmFtZSwgYW5kIGxlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaG91bGQgZmlsbCBvdXQuIENhbiBiZSB6ZXJvIHRvIGdldAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQgb2YgcGF5bG9h ZHMgYW5kIHZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE9VVDogSG93IG1hbnkgcGF5bG9hZHMgbGVmdC4gKi8KKyAgICB1aW50MzJfdCBwYWQ7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IE11c3QgYmUgemVyby4gKi8KKyAgICBn dWVzdF9oYW5kbGVfNjQgICAgICAgICAgICAgICAgc3RhdHVzOyAgLyogT1VULiBNdXN0IGhhdmUg ZW5vdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNw YWNlIGFsbG9jYXRlIGZvciBuciBvZiB0aGVtLiAqLworICAgIGd1ZXN0X2hhbmRsZV82NCBuYW1l OyAgICAgICAgICAgICAgICAgICAvKiBPVVQ6IEFycmF5IG9mIG5hbWVzLiBFYWNoIG1lbWJlcgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVVNUIFhFTl9M SVZFUEFUQ0hfTkFNRV9TSVpFIGluIHNpemUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE11c3QgaGF2ZSBuciBvZiB0aGVtLiAqLworICAgIGd1ZXN0X2hh bmRsZV82NCBsZW47ICAgICAgICAgICAgICAgICAgICAvKiBPVVQ6IEFycmF5IG9mIGxlbmd0aHMg b2YgbmFtZSdzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNdXN0IGhhdmUgbnIgb2YgdGhlbS4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3Rs X2xpdmVwYXRjaF9saXN0IHhlbl9zeXNjdGxfbGl2ZXBhdGNoX2xpc3RfdDsKKworLyoKKyAqIFBl cmZvcm0gYW4gb3BlcmF0aW9uIG9uIHRoZSBwYXlsb2FkIHN0cnVjdHVyZSByZWZlcmVuY2VkIGJ5 IHRoZSBgbmFtZWAgZmllbGQuCisgKiBUaGUgb3BlcmF0aW9uIHJlcXVlc3QgaXMgYXN5bmNocm9u b3VzIGFuZCB0aGUgc3RhdHVzIHNob3VsZCBiZSByZXRyaWV2ZWQKKyAqIGJ5IHVzaW5nIGVpdGhl ciBYRU5fU1lTQ1RMX0xJVkVQQVRDSF9HRVQgb3IgWEVOX1NZU0NUTF9MSVZFUEFUQ0hfTElTVCBo eXBlcmNhbGwuCisgKi8KKyNkZWZpbmUgWEVOX1NZU0NUTF9MSVZFUEFUQ0hfQUNUSU9OIDMKK3N0 cnVjdCB4ZW5fc3lzY3RsX2xpdmVwYXRjaF9hY3Rpb24geworICAgIHhlbl9saXZlcGF0Y2hfbmFt ZV90IG5hbWU7ICAgICAgICAgICAgICAvKiBJTiwgbmFtZSBvZiB0aGUgcGF0Y2guICovCisjZGVm aW5lIExJVkVQQVRDSF9BQ1RJT05fVU5MT0FEICAgICAgIDEKKyNkZWZpbmUgTElWRVBBVENIX0FD VElPTl9SRVZFUlQgICAgICAgMgorI2RlZmluZSBMSVZFUEFUQ0hfQUNUSU9OX0FQUExZICAgICAg ICAzCisjZGVmaW5lIExJVkVQQVRDSF9BQ1RJT05fUkVQTEFDRSAgICAgIDQKKyAgICB1aW50MzJf dCBjbWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IExJVkVQQVRDSF9BQ1RJT05f Ki4gKi8KKyAgICB1aW50MzJfdCB0aW1lb3V0OyAgICAgICAgICAgICAgICAgICAgICAgLyogSU46 IFplcm8gaWYgbm8gdGltZW91dC4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogT3IgdXBwZXIgYm91bmQgb2YgdGltZSAobXMpICovCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciBvcGVyYXRpb24gdG8gdGFr ZS4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX2xpdmVwYXRjaF9hY3Rpb24geGVu X3N5c2N0bF9saXZlcGF0Y2hfYWN0aW9uX3Q7CisKK3N0cnVjdCB4ZW5fc3lzY3RsX2xpdmVwYXRj aF9vcCB7CisgICAgdWludDMyX3QgY21kOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElO OiBYRU5fU1lTQ1RMX0xJVkVQQVRDSF8qLiAqLworICAgIHVpbnQzMl90IHBhZDsgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiBJTjogQWx3YXlzIHplcm8uICovCisgICAgdW5pb24geworICAg ICAgICB4ZW5fc3lzY3RsX2xpdmVwYXRjaF91cGxvYWRfdCB1cGxvYWQ7CisgICAgICAgIHhlbl9z eXNjdGxfbGl2ZXBhdGNoX2xpc3RfdCBsaXN0OworICAgICAgICB4ZW5fc3lzY3RsX2xpdmVwYXRj aF9nZXRfdCBnZXQ7CisgICAgICAgIHhlbl9zeXNjdGxfbGl2ZXBhdGNoX2FjdGlvbl90IGFjdGlv bjsKKyAgICB9IHU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9saXZlcGF0Y2hfb3Ag eGVuX3N5c2N0bF9saXZlcGF0Y2hfb3BfdDsKKworc3RydWN0IHhlbl9zeXNjdGwgeworICAgIHVp bnQzMl90IGNtZDsKKyNkZWZpbmUgWEVOX1NZU0NUTF9saXZlcGF0Y2hfb3AgICAgICAgICAgICAg ICAgICAyNworICAgIHVpbnQzMl90IGludGVyZmFjZV92ZXJzaW9uOyAvKiBYRU5fU1lTQ1RMX0lO VEVSRkFDRV9WRVJTSU9OICovCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0 bF9saXZlcGF0Y2hfb3AgICAgICBsaXZlcGF0Y2g7CisgICAgICAgIHVpbnQ4X3QgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBhZFsxMjhdOworICAgIH0gdTsKK307Cit0eXBlZGVmIHN0cnVj dCB4ZW5fc3lzY3RsIHhlbl9zeXNjdGxfdDsKKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19TWVND VExfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZp bGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0Cisg KiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS94dGYvaHlwZXJjYWxsLmggYi9pbmNsdWRlL3h0Zi9oeXBlcmNhbGwuaAppbmRleCBhMzdlYmMy Li5hYjQ5ODZmIDEwMDY0NAotLS0gYS9pbmNsdWRlL3h0Zi9oeXBlcmNhbGwuaAorKysgYi9pbmNs dWRlL3h0Zi9oeXBlcmNhbGwuaApAQCAtMzQsNiArMzQsNyBAQCBleHRlcm4gdWludDhfdCBoeXBl cmNhbGxfcGFnZVtQQUdFX1NJWkVdOwogI2luY2x1ZGUgPHhlbi9waHlzZGV2Lmg+CiAjaW5jbHVk ZSA8eGVuL21lbW9yeS5oPgogI2luY2x1ZGUgPHhlbi92ZXJzaW9uLmg+CisjaW5jbHVkZSA8eGVu L3N5c2N0bC5oPgogI2luY2x1ZGUgPHhlbi9odm0vaHZtX29wLmg+CiAjaW5jbHVkZSA8eGVuL2h2 bS9wYXJhbXMuaD4KIApAQCAtMTE0LDYgKzExNSwxMSBAQCBzdGF0aWMgaW5saW5lIGxvbmcgaHlw ZXJjYWxsX2h2bV9vcCh1bnNpZ25lZCBpbnQgY21kLCB2b2lkICphcmcpCiAgICAgcmV0dXJuIEhZ UEVSQ0FMTDIobG9uZywgX19IWVBFUlZJU09SX2h2bV9vcCwgY21kLCBhcmcpOwogfQogCitzdGF0 aWMgaW5saW5lIGxvbmcgaHlwZXJjYWxsX3N5c2N0bCh4ZW5fc3lzY3RsX3QgKmFyZykKK3sKKyAg ICByZXR1cm4gSFlQRVJDQUxMMShsb25nLCBfX0hZUEVSVklTT1Jfc3lzY3RsLCBhcmcpOworfQor CiAvKgogICogSGlnaGVyIGxldmVsIGh5cGVyY2FsbCBoZWxwZXJzCiAgKi8KZGlmZiAtLWdpdCBh L2luY2x1ZGUveHRmL2xpYi5oIGIvaW5jbHVkZS94dGYvbGliLmgKaW5kZXggYjBhZTM5ZC4uOGZi NDkwYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS94dGYvbGliLmgKKysrIGIvaW5jbHVkZS94dGYvbGli LmgKQEAgLTY1LDYgKzY1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGV4ZWNfdXNlcl92b2lkKHZv aWQgKCpmbikodm9pZCkpCiAgICAgZXhlY191c2VyKCh2b2lkICopZm4pOwogfQogCitpbnQgcHJv YmVfc3lzY3RsX2ludGVyZmFjZV92ZXJzaW9uKHZvaWQpOworCiAjZW5kaWYgLyogWFRGX0xJQl9I ICovCiAKIC8qCmRpZmYgLS1naXQgYS90ZXN0cy9saXZlcGF0Y2gtcHJpdi1jaGVjay9NYWtlZmls ZSBiL3Rlc3RzL2xpdmVwYXRjaC1wcml2LWNoZWNrL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmUyN2I5ZGEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9saXZl cGF0Y2gtcHJpdi1jaGVjay9NYWtlZmlsZQpAQCAtMCwwICsxLDkgQEAKK2luY2x1ZGUgJChST09U KS9idWlsZC9jb21tb24ubWsKKworTkFNRSAgICAgIDo9IGxpdmVwYXRjaC1wcml2LWNoZWNrCitD QVRFR09SWSAgOj0gZnVuY3Rpb25hbAorVEVTVC1FTlZTIDo9ICQoQUxMX0VOVklST05NRU5UUykK Kworb2JqLXBlcmVudiArPSBtYWluLm8KKworaW5jbHVkZSAkKFJPT1QpL2J1aWxkL2dlbi5tawpk aWZmIC0tZ2l0IGEvdGVzdHMvbGl2ZXBhdGNoLXByaXYtY2hlY2svbWFpbi5jIGIvdGVzdHMvbGl2 ZXBhdGNoLXByaXYtY2hlY2svbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjRkNjRkNTgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9saXZlcGF0Y2gtcHJpdi1jaGVj ay9tYWluLmMKQEAgLTAsMCArMSwxNTMgQEAKKy8qKgorICogQGZpbGUgdGVzdHMvbGl2ZXBhdGNo LXByaXYtY2hlY2svbWFpbi5jCisgKiBAcmVmIHRlc3QtbGl2ZXBhdGNoLXByaXYtY2hlY2sKKyAq CisgKiBAcGFnZSB0ZXN0LWxpdmVwYXRjaC1wcml2LWNoZWNrIExpdmUgUGF0Y2ggUHJpdmlsZWdl IENoZWNrCisgKgorICogQ2hlY2tzIHRoYXQgWGVuIHByZXZlbnRzIHVzaW5nIGFsbCBsaXZlIHBh dGNoaW5nIG9wZXJhdGlvbnMgYW5kCisgKiBzdWItb3BlcmF0aW9ucyBmcm9tIGFuIHVucHJpdmls ZWdlZCBndWVzdC4KKyAqCisgKiBAc2VlIHRlc3RzL2xpdmVwYXRjaC1jaGVjay1wcml2L21haW4u YworICovCisjaW5jbHVkZSA8eHRmLmg+CisKK2NvbnN0IGNoYXIgdGVzdF90aXRsZVtdID0gIkxp dmUgUGF0Y2ggUHJpdmlsZWdlIENoZWNrIjsKKworc3RhdGljIGludCBpbnRlcmZhY2VfdmVyc2lv bjsKKworc3RhdGljIHZvaWQgY2hlY2tfcmV0KGludCByYykKK3sKKyAgICBzd2l0Y2ggKCByYyAp CisgICAgeworICAgIGNhc2UgLUVQRVJNOgorICAgICAgICBwcmludGsoIlhlbiBjb3JyZWN0bHkg ZGVuaWVkIExpdmUgUGF0Y2ggY2FsbHNcbiIpOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug LUVOT1NZUzoKKyAgICAgICAgeHRmX3NraXAoIkxpdmUgUGF0Y2ggc3VwcG9ydCBub3QgZGV0ZWN0 ZWRcbiIpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHh0Zl9mYWls dXJlKCJGYWlsOiBVbmV4cGVjdGVkIHJldHVybiBjb2RlICVkXG4iLCByYyk7CisgICAgICAgIGJy ZWFrOworICAgIH0KK30KKworI2RlZmluZSBURVNUX05BTUUgImZvbyIKKworc3RhdGljIHZvaWQg dGVzdF91cGxvYWQodm9pZCkKK3sKKyAgICB1aW50OF90IHBheWxvYWRbUEFHRV9TSVpFXTsKKyAg ICB4ZW5fc3lzY3RsX3Qgb3AgPQorICAgIHsKKyAgICAgICAgLmNtZCA9IFhFTl9TWVNDVExfbGl2 ZXBhdGNoX29wLAorICAgICAgICAuaW50ZXJmYWNlX3ZlcnNpb24gPSBpbnRlcmZhY2VfdmVyc2lv biwKKyAgICAgICAgLnUubGl2ZXBhdGNoID0geworICAgICAgICAgICAgLmNtZCA9IFhFTl9TWVND VExfTElWRVBBVENIX1VQTE9BRCwKKyAgICAgICAgICAgIC51LnVwbG9hZCA9IHsKKyAgICAgICAg ICAgICAgICAubmFtZSA9IHsKKyAgICAgICAgICAgICAgICAgICAgLm5hbWUucCA9IFRFU1RfTkFN RSwKKyAgICAgICAgICAgICAgICAgICAgLnNpemUgPSBzaXplb2YoVEVTVF9OQU1FKSwKKyAgICAg ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIC5zaXplID0gUEFHRV9TSVpFLAorICAgICAg ICAgICAgICAgIC5wYXlsb2FkLnAgPSBwYXlsb2FkLAorICAgICAgICAgICAgfSwKKyAgICAgICAg fSwKKyAgICB9OworCisgICAgY2hlY2tfcmV0KGh5cGVyY2FsbF9zeXNjdGwoJm9wKSk7Cit9CisK KyNkZWZpbmUgTlJfUEFZTE9BRFMgOAorCitzdGF0aWMgdm9pZCB0ZXN0X2xpc3Qodm9pZCkKK3sK KyAgICBjaGFyIG5hbWVzW05SX1BBWUxPQURTICogWEVOX0xJVkVQQVRDSF9OQU1FX1NJWkVdOwor ICAgIHVpbnQzMl90IGxlbmd0aHNbTlJfUEFZTE9BRFNdOworCisgICAgeGVuX3N5c2N0bF90IG9w ID0KKyAgICB7CisgICAgICAgIC5jbWQgPSBYRU5fU1lTQ1RMX2xpdmVwYXRjaF9vcCwKKyAgICAg ICAgLmludGVyZmFjZV92ZXJzaW9uID0gaW50ZXJmYWNlX3ZlcnNpb24sCisgICAgICAgIC51Lmxp dmVwYXRjaCA9IHsKKyAgICAgICAgICAgIC5jbWQgPSBYRU5fU1lTQ1RMX0xJVkVQQVRDSF9MSVNU LAorICAgICAgICAgICAgLnUubGlzdCA9IHsKKyAgICAgICAgICAgICAgICAuaWR4ID0gMCwKKyAg ICAgICAgICAgICAgICAubnIgPSBOUl9QQVlMT0FEUywKKyAgICAgICAgICAgICAgICAubmFtZS5w ID0gbmFtZXMsCisgICAgICAgICAgICAgICAgLmxlbi5wID0gbGVuZ3RocywKKyAgICAgICAgICAg IH0sCisgICAgICAgIH0sCisgICAgfTsKKworICAgIGNoZWNrX3JldChoeXBlcmNhbGxfc3lzY3Rs KCZvcCkpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X2dldCh2b2lkKQoreworICAgIHhlbl9zeXNj dGxfdCBvcCA9CisgICAgeworICAgICAgICAuY21kID0gWEVOX1NZU0NUTF9saXZlcGF0Y2hfb3As CisgICAgICAgIC5pbnRlcmZhY2VfdmVyc2lvbiA9IGludGVyZmFjZV92ZXJzaW9uLAorICAgICAg ICAudS5saXZlcGF0Y2ggPSB7CisgICAgICAgICAgICAuY21kID0gWEVOX1NZU0NUTF9MSVZFUEFU Q0hfR0VULAorICAgICAgICAgICAgLnUuZ2V0ID0geworICAgICAgICAgICAgICAgIC5uYW1lID0g eworICAgICAgICAgICAgICAgICAgICAubmFtZS5wID0gVEVTVF9OQU1FLAorICAgICAgICAgICAg ICAgICAgICAuc2l6ZSA9IHNpemVvZihURVNUX05BTUUpLAorICAgICAgICAgICAgICAgIH0sCisg ICAgICAgICAgICB9LAorICAgICAgICB9LAorICAgIH07CisKKyAgICBjaGVja19yZXQoaHlwZXJj YWxsX3N5c2N0bCgmb3ApKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9hY3Rpb24odWludDMyX3Qg YWN0aW9uKQoreworICAgIHhlbl9zeXNjdGxfdCBvcCA9CisgICAgeworICAgICAgICAuY21kID0g WEVOX1NZU0NUTF9saXZlcGF0Y2hfb3AsCisgICAgICAgIC5pbnRlcmZhY2VfdmVyc2lvbiA9IGlu dGVyZmFjZV92ZXJzaW9uLAorICAgICAgICAudS5saXZlcGF0Y2ggPSB7CisgICAgICAgICAgICAu Y21kID0gWEVOX1NZU0NUTF9MSVZFUEFUQ0hfQUNUSU9OLAorICAgICAgICAgICAgLnUuYWN0aW9u ID0geworICAgICAgICAgICAgICAgIC5uYW1lID0geworICAgICAgICAgICAgICAgICAgICAubmFt ZS5wID0gVEVTVF9OQU1FLAorICAgICAgICAgICAgICAgICAgICAuc2l6ZSA9IHNpemVvZihURVNU X05BTUUpLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgLmNtZCA9IGFjdGlv biwKKyAgICAgICAgICAgICAgICAudGltZW91dCA9IDAsCisgICAgICAgICAgICB9LAorICAgICAg ICB9LAorICAgIH07CisKKyAgICBjaGVja19yZXQoaHlwZXJjYWxsX3N5c2N0bCgmb3ApKTsKK30K Kwordm9pZCB0ZXN0X21haW4odm9pZCkKK3sKKyAgICBpbnRlcmZhY2VfdmVyc2lvbiA9IHByb2Jl X3N5c2N0bF9pbnRlcmZhY2VfdmVyc2lvbigpOworICAgIGlmICggaW50ZXJmYWNlX3ZlcnNpb24g PCAwICkKKyAgICAgICAgcmV0dXJuIHh0Zl9lcnJvcigiRmFpbGVkIHRvIGZpbmQgc3lzY3RsIGlu dGVyZmFjZSB2ZXJzaW9uXG4iKTsKKworICAgIHRlc3RfdXBsb2FkKCk7CisgICAgdGVzdF9saXN0 KCk7CisgICAgdGVzdF9nZXQoKTsKKyAgICB0ZXN0X2FjdGlvbihMSVZFUEFUQ0hfQUNUSU9OX1VO TE9BRCk7CisgICAgdGVzdF9hY3Rpb24oTElWRVBBVENIX0FDVElPTl9SRVZFUlQpOworICAgIHRl c3RfYWN0aW9uKExJVkVQQVRDSF9BQ1RJT05fQVBQTFkpOworICAgIHRlc3RfYWN0aW9uKExJVkVQ QVRDSF9BQ1RJT05fUkVQTEFDRSk7CisKKyAgICB4dGZfc3VjY2VzcyhOVUxMKTsKK30KKworLyoK KyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIK KyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1v ZGU6IG5pbAorICogRW5kOgorICovCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=