ZGlmZiAtLWdpdCBhL0FOTk9VTkNFIGIvQU5OT1VOQ0UKaW5kZXggYWI3ZTM2Zi4uNjNlZTg5MyAxMDA2NDQKLS0tIGEvQU5OT1VOQ0UKKysrIGIvQU5OT1VOQ0UKQEAgLTEsNSArMSw1IEBACiAKLUxpYnBuZyAxLjAuOWJldGExMCAtIEphbnVhcnkgMTYsIDIwMDEKK0xpYnBuZyAxLjAuOWJldGEyIC0gTm92ZW1iZXIgMTksIDIwMDAKIAogVGhpcyBpcyBhIHB1YmxpYyByZWxlYXNlIG9mIGxpYnBuZywgaW50ZW5kZWQgZm9yIHVzZSBpbiBwcm9kdWN0aW9uIGNvZGVzLgogCkBAIC0yOCwyOSArMjgsNiBAQAogICAgIHN1YmRpcmVjdG9yeSBhbmQgYWRkZWQgcHJvamVjdHMvYm9ybGFuZCBwcm9qZWN0IHN1YmRpcmVjdG9yeS4KICAgU2V0IFZTX0ZGX1BSRVJFTEVBU0UgYW5kIFZTX0ZGX1BBVENIRUQgZmxhZ3MgaW4gbXN2Yy9wbmcucmMgd2hlbiBhcHByb3ByaWF0ZS4KICAgQWRkIGVycm9yIG1lc3NhZ2UgaW4gcG5nX3NldF9jb21wcmVzc2lvbl9idWZmZXJfc2l6ZSgpIHdoZW4gbWFsbG9jIGZhaWxzLgotICBSZXZpc2VkIFBOR19MSUJQTkdfQlVJTERfVFlQRSBtYWNybyBpbiBwbmcuaCwgdXNlZCBpbiB0aGUgbXN2YyBwcm9qZWN0LgotICBSZW1vdmVkIHRoZSBwbmdfZmx1c2goKSBpbiBwbmd3cml0ZS5jIHRoYXQgY3Jhc2hlcyBzb21lIGFwcGxpY2F0aW9ucwotICAgIHRoYXQgZG9uJ3Qgc2V0IHBuZ19vdXRwdXRfZmx1c2hfZm4uCi0gIEFkZGVkIG1ha2VmaWxlLm1hY29zeCBhbmQgbWFrZWZpbGUuYWl4IHRvIHNjcmlwdHMgZGlyZWN0b3J5LgotICBDaGFuZ2UgcG5nX2NodW5rX3dhcm5pbmcgdG8gcG5nX3dhcm5pbmcgaW4gcG5nX2NoZWNrX2tleXdvcmQoKS4KLSAgSW5jcmVhc2VkIHRoZSBmaXJzdCBwYXJ0IG9mIG1zZyBidWZmZXIgZnJvbSAxNiB0byAxOCBpbiBwbmdfY2h1bmtfZXJyb3IoKS4KLSAgQWRkZWQgc3VwcG9ydCBmb3IgZmlsdGVyIG1ldGhvZCA2NCAoZm9yIFBORyBkYXRhc3RyZWFtcyBlbWJlZGRlZCBpbiBNTkcpCi0gIFJldmlzZWQgcG5nX3NldF9maWx0ZXIoKSB0byBhY2NlcHQgZmlsdGVyIG1ldGhvZCA2NCB3aGVuIGFwcHJvcHJpYXRlLgotICBBZGRlZCBuZXcgUE5HX0hBVkVfUE5HX1NJR05BVFVSRSBiaXQgdG8gcG5nX3B0ci0+bW9kZSBhbmQgdXNlIGl0IHRvCi0gICAgaGVscCBwcmV2ZW50IGFwcGxpY2F0aW9ucyBmcm9tIHVzaW5nIE1ORyBmZWF0dXJlcyBpbiBQTkcgZGF0YXN0cmVhbXMuCi0gIFJldmlzZWQgbGlicG5nLjMvbGlicG5nLnR4dC4gIENoYW5nZWQgImZpbHRlciB0eXBlIiB0byAiZmlsdGVyIG1ldGhvZCIuCi0gIEZpeGVkIGVycm9yIGhhbmRsaW5nIG9mIHVua25vd24gY29tcHJlc3Npb24gdHlwZSBpbiBwbmdfZGVjb21wcmVzc19jaHVuaygpLgotICBJbiBwbmdjb25mLmgsIGRlZmluZSBfX2NkZWNsIHdoZW4gX01TQ19WRVIgaXMgZGVmaW5lZC4KLSAgQ2hhbmdlZCBQTkdfVEVYVF9DT01QUkVTU0lPTl96VFh0IHRvIFBOR19DT01QUkVTU0lPTl9UWVBFX0JBU0Ugc2V2ZXJhbCBwbGFjZXMuCi0gIFJldmlzZWQgbWVtb3J5IG1hbmFnZW1lbnQgaW4gcG5nX3NldF9oSVNUIGFuZCBwbmdfaGFuZGxlX2hJU1QgaW4gYSBiYWNrd2FyZAotICAgIGNvbXBhdGlibGUgbWFubmVyLiAgUExURSBhbmQgdFJOUyB3ZXJlIHJldmlzZWQgc2ltaWxhcmx5LgotICBSZXZpc2VkIHRoZSBpQ0NQIGNodW5rIHJlYWRlciB0byBpZ25vcmUgdHJhaWxpbmcgZ2FyYmFnZS4KLSAgTW92ZWQgcG5nYXNtcmQuaCBpbnRvIHBuZ2NvbmYuaC4KLSAgSW1wcm92ZWQgaGFuZGxpbmcgb2Ygb3V0LW9mLXNwZWMgZ2FyYmFnZSBpQ0NQIGNodW5rcyBnZW5lcmF0ZWQgYnkgUGhvdG9TaG9wLgotICBBZGRlZCBwbmdfc2V0X2ludmFsaWQsIHBuZ19wZXJtaXRfbW5nX2ZlYXR1cmVzLCBhbmQgcG5nX21teF9zdXBwb3J0ZWQgdG8KLSAgICB3aW5jZSBhbmQgbXN2YyBwcm9qZWN0IG1vZHVsZSBkZWZpbml0aW9uIGZpbGVzLgotICBGaXhlZCBidWcgd2l0aCBwcm9ncmVzc2l2ZSByZWFkaW5nIG9mIG5hcnJvdyBpbnRlcmxhY2VkIGltYWdlcyBpbiBwbmdwcmVhZC5jCi0gIERvIG5vdCB0eXBlZGVmIHBuZ19GSUxFX2lvIGluIHBuZ2NvbmYuaCB3aGVuIFBOR19OT19TVERJTyBpcyBkZWZpbmVkLgogCiBTZW5kIGNvbW1lbnRzL2NvcnJlY3Rpb25zL2NvbW1lbmRhdGlvbnMgdG8KIHBuZy1pbXBsZW1lbnRAY2NyYy53dXN0bC5lZHUgb3IgdG8gcmFuZGVnQGFsdW0ucnBpLmVkdQpkaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKaW5kZXggMjNiZDYwYS4uMzNmNzA0NSAxMDA2NDQKLS0tIGEvQ0hBTkdFUworKysgYi9DSEFOR0VTCkBAIC0zNzksNyArMzc5LDcgQEAKICAgQ2hhbmdlZCAibG4gLXNmIiB0byAibG4gLXMgLWYiIGluIG1ha2VmaWxlLnMyeCwgbWFrZWZpbGUubG54LCBhbmQgbWFrZWZpbGUuc2NvLgogICBSZW1vdmVkIGxpbmVzIGFmdGVyIER5bmFtaWMgRGVwZW5kZW5jaWVzIiBpbiBtYWtlZmlsZS5hY28gLgogICBSZXZpc2VkIG1ha2VmaWxlLmRlYyB0byBtYWtlIGEgc2hhcmVkIGxpYnJhcnkgKEplcmVtaWUgUGV0aXQpLgotICBSZW1vdmVkIHRyYWlsaW5nIGJsYW5rcyBmcm9tIGFsbCBmaWxlcy4KKyAgUmVtb3ZlZCB0cmFpbGluZyBibGFua3MgZnJvbSBhbGwgZmlsZXMuIAogdmVyc2lvbiAxLjAuMmEgW0phbnVhcnkgNiwgMTk5OV0KICAgUmVtb3ZlZCBtaXNwbGFjZWQgI2VuZGlmIGFuZCAjaWZkZWYgUE5HX05PX0VYVEVSTiBuZWFyIHRoZSBlbmQgb2YgcG5nLmgKICAgQWRkZWQgImlmIiB0ZXN0cyB0byBzaWxlbmNlIGNvbXBsYWludHMgYWJvdXQgdW51c2VkIHBuZ19wdHIgaW4gcG5nLmggYW5kIHBuZy5jCkBAIC03MTgsNyArNzE4LDcgQEAKICAgICB0aGUgaGlnaC1sZXZlbCBpbnRlcmZhY2UsIGFuZCB1bmtub3duIGNodW5rcyBzdXBwb3J0IChhbGwgbmV3IGluIDEuMC42KS4KICAgICBUaGlzIHdhcyBuZWNlc3NhcnkgYmVjYXVzZSBvZiBvbGQgYXBwbGljYXRpb25zIHRoYXQgYWxsb2NhdGUgdGhlIHN0cnVjdHMKICAgICBkaXJlY3RseSBhcyBhdXRob3JzIHdlcmUgaW5zdHJ1Y3RlZCB0byBkbyBpbiBsaWJwbmctMC44OCBhbmQgZWFybGllciwKLSAgICBpbnN0ZWFkIG9mIHVzaW5nIHBuZ19jcmVhdGVfKigpLgorICAgIGluc3RlYWQgb2YgdXNpbmcgcG5nX2NyZWF0ZV8qKCkuIAogICBBZGRlZCBtb2RlcyBQTkdfQ1JFQVRFRF9SRUFEX1NUUlVDVCBhbmQgUE5HX0NSRUFURURfV1JJVEVfU1RSVUNUIHdoaWNoCiAgICAgY2FuIGJlIHVzZWQgdG8gZGV0ZWN0IGNvZGVzIHRoYXQgZGlyZWN0bHkgYWxsb2NhdGUgdGhlIHN0cnVjdHMsIGFuZAogICAgIGNvZGUgdG8gY2hlY2sgdGhlc2UgbW9kZXMgaW4gcG5nX3JlYWRfaW5pdCgpIGFuZCBwbmdfd3JpdGVfaW5pdCgpIGFuZApAQCAtNzk4LDYgKzc5OCw3IEBACiAgIEZpeGVkICJESkJQUCIgdHlwbyBpbiBwbmdnY2NyZC5jIGludHJvZHVjZWQgaW4gYmV0YTE4LgogdmVyc2lvbiAxLjAuNyBbSnVseSAxLCAyMDAwXQogICBSZXZpc2VkIHRoZSBkZWZpbml0aW9uIG9mICJ0cmFuc192YWx1ZXMiIGluIGxpYnBuZy4zL2xpYnBuZy50eHQKK3ZlcnNpb24gMS4wLjliZXRhMiBbTm92ZW1iZXIgMTksIDIwMDBdCiB2ZXJzaW9uIDEuMC44YmV0YTEgW0p1bHkgOCwgMjAwMF0KICAgQWRkZWQgcG5nX2ZyZWUocG5nX3B0ciwga2V5KSB0d28gcGxhY2VzIGluIHBuZ3ByZWFkLmMgdG8gc3RvcCBtZW1vcnkgbGVha3MuCiAgIENoYW5nZWQgUE5HX05PX1NURElPIHRvIFBOR19OT19DT05TT0xFX0lPLCBzZXZlcmFsIHBsYWNlcyBpbiBwbmdydXRpbC5jIGFuZApAQCAtODQ3LDQxICs4NDgsNiBAQAogICBBZGRlZCBib3JsYW5kIHByb2plY3QgZmlsZXMgdG8gInByb2plY3RzIiBzdWJkaXJlY3RvcnkuCiAgIFNldCBWU19GRl9QUkVSRUxFQVNFIGFuZCBWU19GRl9QQVRDSEVEIGZsYWdzIGluIG1zdmMvcG5nLnJjIHdoZW4gYXBwcm9wcmlhdGUuCiAgIEFkZCBlcnJvciBtZXNzYWdlIGluIHBuZ19zZXRfY29tcHJlc3Npb25fYnVmZmVyX3NpemUoKSB3aGVuIG1hbGxvYyBmYWlscy4KLXZlcnNpb24gMS4wLjliZXRhMyBbTm92ZW1iZXIgMjMsIDIwMDBdCi0gIFJldmlzZWQgUE5HX0xJQlBOR19CVUlMRF9UWVBFIG1hY3JvIGluIHBuZy5oLCB1c2VkIGluIHRoZSBtc3ZjIHByb2plY3QuCi0gIFJlbW92ZWQgdGhlIHBuZ19mbHVzaCgpIGluIHBuZ3dyaXRlLmMgdGhhdCBjcmFzaGVzIHNvbWUgYXBwbGljYXRpb25zCi0gICAgdGhhdCBkb24ndCBzZXQgcG5nX291dHB1dF9mbHVzaF9mbi4KLSAgQWRkZWQgbWFrZWZpbGUubWFjb3N4IGFuZCBtYWtlZmlsZS5haXggdG8gc2NyaXB0cyBkaXJlY3RvcnkuCi12ZXJzaW9uIDEuMC45YmV0YTQgW0RlY2VtYmVyIDEsIDIwMDBdCi0gIENoYW5nZSBwbmdfY2h1bmtfd2FybmluZyB0byBwbmdfd2FybmluZyBpbiBwbmdfY2hlY2tfa2V5d29yZCgpLgotICBJbmNyZWFzZWQgdGhlIGZpcnN0IHBhcnQgb2YgbXNnIGJ1ZmZlciBmcm9tIDE2IHRvIDE4IGluIHBuZ19jaHVua19lcnJvcigpLgotdmVyc2lvbiAxLjAuOWJldGE1IFtEZWNlbWJlciAxNSwgMjAwMF0KLSAgQWRkZWQgc3VwcG9ydCBmb3IgZmlsdGVyIG1ldGhvZCA2NCAoZm9yIFBORyBkYXRhc3RyZWFtcyBlbWJlZGRlZCBpbiBNTkcpCi12ZXJzaW9uIDEuMC45YmV0YTYgW0RlY2VtYmVyIDE4LCAyMDAwXQotICBSZXZpc2VkIHBuZ19zZXRfZmlsdGVyKCkgdG8gYWNjZXB0IGZpbHRlciBtZXRob2QgNjQgd2hlbiBhcHByb3ByaWF0ZS4KLSAgQWRkZWQgbmV3IFBOR19IQVZFX1BOR19TSUdOQVRVUkUgYml0IHRvIHBuZ19wdHItPm1vZGUgYW5kIHVzZSBpdCB0bwotICAgIGhlbHAgcHJldmVudCBhcHBsaWNhdGlvbnMgZnJvbSB1c2luZyBNTkcgZmVhdHVyZXMgaW4gUE5HIGRhdGFzdHJlYW1zLgotICBSZXZpc2VkIGxpYnBuZy4zL2xpYnBuZy50eHQuICBDaGFuZ2VkICJmaWx0ZXIgdHlwZSIgdG8gImZpbHRlciBtZXRob2QiLgotdmVyc2lvbiAxLjAuOXJjMSBbRGVjZW1iZXIgMjMsIDIwMDBdCi0gIFJldmlzZWQgdGVzdCBmb3IgUE5HX0hBVkVfUE5HX1NJR05BVFVSRSBpbiBwbmdydXRpbC5jCi0gIEZpeGVkIGVycm9yIGhhbmRsaW5nIG9mIHVua25vd24gY29tcHJlc3Npb24gdHlwZSBpbiBwbmdfZGVjb21wcmVzc19jaHVuaygpLgotICBJbiBwbmdjb25mLmgsIGRlZmluZSBfX2NkZWNsIHdoZW4gX01TQ19WRVIgaXMgZGVmaW5lZC4KLXZlcnNpb24gMS4wLjliZXRhNyBbRGVjZW1iZXIgMjgsIDIwMDBdCi0gIENoYW5nZWQgUE5HX1RFWFRfQ09NUFJFU1NJT05felRYdCB0byBQTkdfQ09NUFJFU1NJT05fVFlQRV9CQVNFIHNldmVyYWwgcGxhY2VzLgotICBSZXZpc2VkIG1lbW9yeSBtYW5hZ2VtZW50IGluIHBuZ19zZXRfaElTVCBhbmQgcG5nX2hhbmRsZV9oSVNUIGluIGEgYmFja3dhcmQKLSAgICBjb21wYXRpYmxlIG1hbm5lci4gIFBMVEUgYW5kIHRSTlMgd2VyZSByZXZpc2VkIHNpbWlsYXJseS4KLSAgUmV2aXNlZCB0aGUgaUNDUCBjaHVuayByZWFkZXIgdG8gaWdub3JlIHRyYWlsaW5nIGdhcmJhZ2UuCi12ZXJzaW9uIDEuMC45YmV0YTggW0phbnVhcnkgMTIsIDIwMDFdCi0gIE1vdmVkIHBuZ2FzbXJkLmggaW50byBwbmdjb25mLmguCi0gIEltcHJvdmVkIGhhbmRsaW5nIG9mIG91dC1vZi1zcGVjIGdhcmJhZ2UgaUNDUCBjaHVua3MgZ2VuZXJhdGVkIGJ5IFBob3RvU2hvcC4KLXZlcnNpb24gMS4wLjliZXRhOSBbSmFudWFyeSAxNSwgMjAwMV0KLSAgQWRkZWQgcG5nX3NldF9pbnZhbGlkLCBwbmdfcGVybWl0X21uZ19mZWF0dXJlcywgYW5kIHBuZ19tbXhfc3VwcG9ydGVkIHRvCi0gICAgd2luY2UgYW5kIG1zdmMgcHJvamVjdCBtb2R1bGUgZGVmaW5pdGlvbiBmaWxlcy4KLSAgTWlub3IgcmV2aXNpb24gb2YgbWFrZWZpbGUuY3lnd2luLgotICBGaXhlZCBidWcgd2l0aCBwcm9ncmVzc2l2ZSByZWFkaW5nIG9mIG5hcnJvdyBpbnRlcmxhY2VkIGltYWdlcyBpbiBwbmdwcmVhZC5jCi12ZXJzaW9uIDEuMC45YmV0YTEwIFtKYW51YXJ5IDE2LCAyMDAxXQotICBEbyBub3QgdHlwZWRlZiBwbmdfRklMRV9pbyBpbiBwbmdjb25mLmggd2hlbiBQTkdfTk9fU1RESU8gaXMgZGVmaW5lZC4KLSAgRml4ZSAicG5nX21teF9zdXBwb3J0ZWQiIHR5cG8gaW4gcHJvamVjdCBkZWZpbml0aW9uIGZpbGVzIAogCiBTZW5kIGNvbW1lbnRzL2NvcnJlY3Rpb25zL2NvbW1lbmRhdGlvbnMgdG8KIHBuZy1pbXBsZW1lbnRAY2NyYy53dXN0bC5lZHUgb3IgdG8gcmFuZGVnQGFsdW0ucnBpLmVkdQpkaWZmIC0tZ2l0IGEvSU5TVEFMTCBiL0lOU1RBTEwKaW5kZXggZjhmNDAwYS4uZmE3NGIxMiAxMDA2NDQKLS0tIGEvSU5TVEFMTAorKysgYi9JTlNUQUxMCkBAIC0xLDUgKzEsNSBAQAogCi1JbnN0YWxsaW5nIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQorSW5zdGFsbGluZyBsaWJwbmcgdmVyc2lvbiAxLjAuOWJldGEyIC0gTm92ZW1iZXIgMTksIDIwMDAKIAogQmVmb3JlIGluc3RhbGxpbmcgbGlicG5nLCB5b3UgbXVzdCBmaXJzdCBpbnN0YWxsIHpsaWIuICB6bGliCiBjYW4gdXN1YWxseSBiZSBmb3VuZCB3aGVyZXZlciB5b3UgZ290IGxpYnBuZy4gIHpsaWIgY2FuIGJlCkBAIC0xMCw3ICsxMCw3IEBACiB2ZXJzaW9uIG9mIHpsaWIgdGhhdCdzIGluc3RhbGxlZC4KIAogWW91IGNhbiByZW5hbWUgdGhlIGRpcmVjdG9yaWVzIHRoYXQgeW91IGRvd25sb2FkZWQgKHRoZXkKLW1pZ2h0IGJlIGNhbGxlZCAibGlicG5nLTEuMC45YmV0YTEwIiBvciAibHBuZzEwOSIgYW5kICJ6bGliLTEuMS4zIgorbWlnaHQgYmUgY2FsbGVkICJsaWJwbmctMS4wLjliZXRhMiIgb3IgImxwbmcxMDkiIGFuZCAiemxpYi0xLjEuMyIKIG9yICJ6bGliMTEzIikgc28gdGhhdCB5b3UgaGF2ZSBkaXJlY3RvcmllcyBjYWxsZWQgInpsaWIiIGFuZCAibGlicG5nIi4KIAogWW91ciBkaXJlY3Rvcnkgc3RydWN0dXJlIHNob3VsZCBsb29rIGxpa2UgdGhpczoKQEAgLTUzLDMxICs1MywyOSBAQAogCiBFbHNlIGVudGVyIHRoZSB6bGliIGRpcmVjdG9yeSBhbmQgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gemxpYi9SRUFETUUsCiB0aGVuIGNvbWUgYmFjayBoZXJlIGFuZCBjaG9vc2UgdGhlIGFwcHJvcHJpYXRlIG1ha2VmaWxlLnN5cyBpbiB0aGUgc2NyaXB0cwotZGlyZWN0b3J5LgorZGlyZWN0b3J5LiAgCiAKIFRoZSBmaWxlcyB0aGF0IGFyZSBwcmVzZW50bHkgYXZhaWxhYmxlIGluIHRoZSBzY3JpcHRzIGRpcmVjdG9yeQogaW5jbHVkZQogCiAgbWFrZWZpbGUuc3RkICAgICAgPT4gIEdlbmVyaWMgVU5JWCBtYWtlZmlsZSAoY2MsIGNyZWF0ZXMgc3RhdGljIGxpYnBuZy5hKQotIG1ha2VmaWxlLmxpbnV4ICAgID0+ICBMaW51eC9FTEYgbWFrZWZpbGUgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuOWJldGExMCkKLSBtYWtlZmlsZS5nY21teCAgICA9PiAgTGludXgvRUxGIG1ha2VmaWxlIChnY2MsIGNyZWF0ZXMgbGlicG5nLnNvLjIuMS4wLjliZXRhMTAsCisgbWFrZWZpbGUubGludXggICAgPT4gIExpbnV4L0VMRiBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTIpCisgbWFrZWZpbGUuZ2NtbXggICAgPT4gIExpbnV4L0VMRiBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTIsCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXMgYXNzZW1ibGVyIGNvZGUgdHVuZWQgZm9yIEludGVsIE1NWCBwbGF0Zm9ybSkKICBtYWtlZmlsZS5nY2MgICAgICA9PiAgR2VuZXJpYyBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIHN0YXRpYyBsaWJwbmcuYSkKICBtYWtlZmlsZS5rbnIgICAgICA9PiAgQXJjaGFpYyBVTklYIE1ha2VmaWxlIHRoYXQgY29udmVydHMgZmlsZXMgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICBhbnNpMmtuciAoUmVxdWlyZXMgYW5zaTJrbnIuYyBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgIGZ0cDovL2Z0cC5jcy53aXNjLmVkdS9naG9zdCkKLSBtYWtlZmlsZS5haXggICAgICA9PiAgQUlYIG1ha2VmaWxlCiAgbWFrZWZpbGUuY3lnd2luICAgPT4gIEN5Z3dpbi9nY2MgbWFrZWZpbGUKICBtYWtlZmlsZS5kZWMgICAgICA9PiAgREVDIEFscGhhIFVOSVggbWFrZWZpbGUKICBtYWtlZmlsZS5ocHV4ICAgICA9PiAgSFBVWCAoMTAuMjAgYW5kIDExLjAwKSBtYWtlZmlsZQogIG1ha2VmaWxlLmlibWMgICAgID0+ICBJQk0gQy9DKysgdmVyc2lvbiAzLnggZm9yIFdpbjMyIGFuZCBPUy8yIChzdGF0aWMpCiAgbWFrZWZpbGUuaW50ZWwgICAgPT4gIEludGVsIEMvQysrIHZlcnNpb24gNC4wIGFuZCBsYXRlcgogIGxpYnBuZy5pY2MgICAgICAgID0+ICBQcm9qZWN0IGZpbGUgZm9yIElCTSBWaXN1YWxBZ2UvQysrIHZlcnNpb24gNC4wIG9yIGxhdGVyCi0gbWFrZWZpbGUubWFjb3N4ICAgPT4gIE1BQ09TIFggTWFrZWZpbGUKICBtYWtlZmlsZS5zZ2kgICAgICA9PiAgU2lsaWNvbiBHcmFwaGljcyBJUklYIG1ha2VmaWxlIChjYywgY3JlYXRlcyBzdGF0aWMgbGliKQotIG1ha2VmaWxlLnNnZ2NjICAgID0+ICBTaWxpY29uIEdyYXBoaWNzIChnY2MsIGNyZWF0ZXMgbGlicG5nLnNvLjIuMS4wLjliZXRhMTApCisgbWFrZWZpbGUuc2dnY2MgICAgPT4gIFNpbGljb24gR3JhcGhpY3MgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuOWJldGEyKQogIG1ha2VmaWxlLnN1bm9zICAgID0+ICBTdW4gbWFrZWZpbGUKLSBtYWtlZmlsZS5zb2xhcmlzICA9PiAgU29sYXJpcyAyLlggbWFrZWZpbGUgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuOWJldGExMCkKKyBtYWtlZmlsZS5zb2xhcmlzICA9PiAgU29sYXJpcyAyLlggbWFrZWZpbGUgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuOWJldGEyKQogIG1ha2VmaWxlLnNjbyAgICAgID0+ICBGb3IgU0NPIE9TcjUgIEVMRiBhbmQgVW5peHdhcmUgNyB3aXRoIE5hdGl2ZSBjYwogIG1ha2VmaWxlLm1pcHMgICAgID0+ICBNSVBTIG1ha2VmaWxlCiAgbWFrZWZpbGUuYWNvcm4gICAgPT4gIEFjb3JuIG1ha2VmaWxlCmRpZmYgLS1naXQgYS9LTk9XTkJVRyBiL0tOT1dOQlVHCmluZGV4IDcxNjI0MmMuLmQ4NzljZTAgMTAwNjQ0Ci0tLSBhL0tOT1dOQlVHCisrKyBiL0tOT1dOQlVHCkBAIC0xLDkgKzEsNjUgQEAKIAotS25vd24gYnVncyBpbiBsaWJwbmctMS4wLjkKK0tub3duIGJ1Z3MgYW5kIHN1Z2dlc3RlZCBlbmhhbmNlbWVudHMgaW4gbGlicG5nLTEuMC44CiAKLTE6IEphbnVhcnkgMTYsIDIwMDEgLS0gQlVHIC0tIHByb2dyZXNzaXZlIHJlYWRpbmcgbmFycm93IGludGVybGFjZWQgUE5HcworMDogTm92ZW1iZXIgMywgMjAwMCAtLSBCVUcgLS0gaW5jb3JyZWN0IGlDQ1AgY2h1bmsgaXMgd3JpdHRlbgogCi0gICBBIGNyYXNoIG9jY3VycyBpbiBNb3ppbGxhIHdoZW4gcmVhZGluZyBhIDJ4NTMzIGludGVybGFjZWQgUkdCIGltYWdlLgorICAgVGhlIGNvbXByZXNzaW9uX3R5cGUgYnl0ZSBpbiB0aGUgaUNDUCBjaHVuayB3cml0dGVuIGJ5IGxpYnBuZyBpcworICAgdXN1YWxseSBpbmNvcnJlY3QuCiAKLSAgIFN0YXR1czogVW5kZXIgaW52ZXN0aWdhdGlvbi4gIEl0IGFwcGVhcnMgdGhhdCBwbmdwcmVhZC5jIGlzIG5vdAotICAgdGFraW5nIGNhcmUgdG8gc2tpcCBlbXB0eSBwYXNzZXMuCisgICBTdGF0dXM6IEZpeGVkIGluIGxpYnBuZy0xLjAuOWJldGExCisKKzEuIE9jdG9iZXIgMTIsIDIwMDAgLS0gQlVHIC0tIHBuZ3Rlc3QgZmFpbHMKKworICAgVGhlIHRocmVlIFdSSVRFRklMRSBjYWxscyBpbiBwbmd0ZXN0LmMgYXJlIGluY29ycmVjdC4gIFRoZXkgbXVzdCBiZQorICAgY2hhbmdlZCB0byByZWFkCisKKyAgIFdSSVRFRklMRSgocG5nX0ZJTEVfcClwbmdfcHRyLT5pb19wdHIsICBkYXRhLCBsZW5ndGgsIGNoZWNrKTsKKyAgIFdSSVRFRklMRShpb19wdHIsIG5lYXJfZGF0YSwgbGVuZ3RoLCBjaGVjayk7CisgICBXUklURUZJTEUoaW9fcHRyLCBidWYsIHdyaXR0ZW4sIGVycik7CisKKzIuIEF1Z3VzdCAyOCwgMjAwMCAtLSBCVUcgLS0gcG5nZ2NjcmQuYworCisgICBUaGUgaW50ZXJsYWNpbmcoKSBmdW5jdGlvbiBoYXMgc3RpbGwgbm90IGJlZW4gZnVsbHkgY29udmVydGVkIGFuZAorICAgd2lsbCBub3QgY29tcGlsZSB1bmRlciBnY2MtMi45NS4yOyBpdCBpcyBjdXJyZW50bHkgaWZkZWYnZWQgb3V0LgorCisgICBTVEFUVVM6IEZpeGVkIGluIGxpYnBuZy0xLjAuOS4gIFRoZXJlIHdlcmUgYWxzbyBidWdzIGluIHBuZ3ZjcmQuYworICAgd2hpY2ggaGF2ZSBiZWVuIGZpeGVkLiAgVGhlIHJlcGxhY2VtZW50IGZpbGVzIGFyZSBhdmFpbGFibGUgYXQgdGhlCisgICBQTkcgd2ViIHNpdGUgKGh0dHA6Ly93d3cubGlicG5nLm9yZy9wdWIvcG5nKS4KKworMy4gTWFyY2ggMTUsIDE5OTggLS0gT1BUSU1JWkFUSU9OIC0tIEtldmluIEJyYWNleQorCisgICBMb29wcyBuZWVkIHRvIGJlIG9wdGltaXplZCBldmVyeXdoZXJlCisKKyAgIE1ha2UgdGhlbSBjb3VudCBkb3duIGluc3RlYWQgb2YgdXAgLS0gS2V2aW4gQnJhY2V5CisKKyAgIE9wdGltaXppbmcgY29tcGlsZXJzIGRvbid0IG5lZWQgdGhpcywgYW5kIG1ha2luZworICAgdGhlIGNoYW5nZSB3b3VsZCBiZSBlcnJvciBwcm9uZSAtLSBUb20gTGFuZSwgR2xlbm4gUi1QCisKKyAgIFF1ZXN0aW9uIHdoZXRoZXIgaS0tIG9yIC0taSBpcyBiZXR0ZXIuCisKKyAgIFNUQVRVUzogVW5kZXIgaW52ZXN0aWdhdGlvbiwgcG9zdHBvbmVkIHVudGlsIGFmdGVyCisgICBsaWJwbmctMi4wLjAuICBBYm91dCAxNjAgbG9vcHMgd2lsbCBiZSB0dXJuZWQgYXJvdW5kCisgICBpbiBsaWJwbmctMi4wLnggYmV0YXh4LCBmb3IgdGVzdGluZy4KKworNC4gSnVseSA0LCAxOTk4IC0tIEVOSEFOQ0VNRU5UIC0tIEdsZW5uIFItUAorCisgICBsaWJwbmctMS4wLjUgYW5kIGVhcmxpZXIgdHJhbnNmb3JtIGNvbG9ycyB0byBnYW1tYT0xLjAgc3BhY2UgZm9yCisgICBtZXJnaW5nIHdpdGggYmFja2dyb3VuZCwgYW5kIHRoZW4gYmFjayB0byB0aGUgaW1hZ2UncyBnYW1tYS4gIFRoZQorICAgYml0X2RlcHRoIG9mIHRoZSBpbnRlcm1lZGlhdGUgKGdhbW1hPTEuMCkgcmVwcmVzZW50YXRpb24gaXMgcHJvYmFibHkKKyAgIG5vdCBzdWZmaWNpZW50LiAgSW4gdGhlIHR5cGljYWwgZ2FtbWE9MS8yLjIgc2l0dWF0aW9uLCB0aGUgbGluZWFyCisgICBwaXhlbHMgbmVlZCBhYm91dCA0IG1vcmUgYml0cyB0aGFuIHRoZSBnYW1tYS1lbmNvZGVkIG9uZXMsIHRvIGF2b2lkCisgICBsb3NzIG9mIHByZWNpc2lvbi4gIEEgc2ltaWxhciBzaXR1YXRpb24gZXhpc3RzIHdpdGggdGhlIHJnYl90b19ncmF5CisgICBvcGVyYXRpb24uCisKKyAgIFNUQVRVUzogdW5kZXIgZGV2ZWxvcG1lbnQuCisKKzUuIFNlcHRlbWJlciAxOTk5IC0tIEVOSEFOQ0VNRU5UIC0tCisKKyAgIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB1c2UgbGlicG5nIHdpdGhvdXQgZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYy4KKworICAgU1RBVFVTOiBVbmRlciBpbnZlc3RpZ2F0aW9uLCBpbXBsZW1lbnRhdGlvbiBwb3N0cG9uZWQgdW50aWwgYWZ0ZXIKKyAgIGxpYnBuZy0yLjAuMC4KKworICAgTXVjaCBvZiB0aGlzIHdhcyBjb21wbGV0ZWQgaW4gbGlicG5nLTEuMC42LCBidXQgZ2FtbWEgY29tcGVuc2F0aW9uCisgICBpcyBub3QgeWV0IGRvbmUgaW4gZml4ZWQtcG9pbnQgYXJpdGhtZXRpYy4KKwpkaWZmIC0tZ2l0IGEvTElDRU5TRSBiL0xJQ0VOU0UKaW5kZXggMWUwNjM0ZC4uN2I4ODk0MyAxMDA2NDQKLS0tIGEvTElDRU5TRQorKysgYi9MSUNFTlNFCkBAIC04LDcgKzgsNyBAQAogSWYgeW91IG1vZGlmeSBsaWJwbmcgeW91IG1heSBpbnNlcnQgYWRkaXRpb25hbCBub3RpY2VzIGltbWVkaWF0ZWx5IGZvbGxvd2luZwogdGhpcyBzZW50ZW5jZS4KIAotbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggMS4wLjliZXRhMTAsIEphbnVhcnkgMTYsIDIwMDEsIGFyZQorbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggMS4wLjliZXRhMiwgTm92ZW1iZXIgMTksIDIwMDAsIGFyZQogQ29weXJpZ2h0IChjKSAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogYW5kIGFyZSBkaXN0cmlidXRlZCBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgZGlzY2xhaW1lciBhbmQgbGljZW5zZSBhcyBsaWJwbmctMS4wLjYKIHdpdGggdGhlIGZvbGxvd2luZyBpbmRpdmlkdWFscyBhZGRlZCB0byB0aGUgbGlzdCBvZiBDb250cmlidXRpbmcgQXV0aG9ycwpAQCAtOTksNCArOTksNCBAQAogCiBHbGVubiBSYW5kZXJzLVBlaHJzb24KIHJhbmRlZ0BhbHVtLnJwaS5lZHUKLUphbnVhcnkgMTYsIDIwMDEKK05vdmVtYmVyIDE5LCAyMDAwCmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggNzQ5ZDQzNS4uM2FjOWNiZSAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw0ICsxLDQgQEAKLVJFQURNRSBmb3IgbGlicG5nIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMSAoc2hhcmVkIGxpYnJhcnkgMi4xKQorUkVBRE1FIGZvciBsaWJwbmcgMS4wLjliZXRhMiAtIE5vdmVtYmVyIDE5LCAyMDAwIChzaGFyZWQgbGlicmFyeSAyLjEpCiBTZWUgdGhlIG5vdGUgYWJvdXQgdmVyc2lvbiBudW1iZXJzIG5lYXIgdGhlIHRvcCBvZiBwbmcuaAogCiBTZWUgSU5TVEFMTCBmb3IgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBpbnN0YWxsIGxpYnBuZy4KQEAgLTE4MiwyNyArMTgyLDI1IEBACiAgICAgICAgZGVzY3JpcC5tbXMgICAgICA9PiAgVk1TIG1ha2VmaWxlIGZvciBNTVMgb3IgTU1LCiAgICAgICAgbWFrZWZpbGUuc3RkICAgICA9PiAgR2VuZXJpYyBVTklYIG1ha2VmaWxlIChjYywgY3JlYXRlcyBzdGF0aWMgbGlicG5nLmEpCiAgICAgICAgbWFrZWZpbGUubGludXggICA9PiAgTGludXgvRUxGIG1ha2VmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuOWJldGExMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTIpCiAgICAgICAgbWFrZWZpbGUuZ2NtbXggICA9PiAgTGludXgvRUxGIG1ha2VmaWxlIChnY2MsIGNyZWF0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJwbmcuc28uMi4xLjAuOWJldGExMCwgdXNlcyBhc3NlbWJsZXIgY29kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnBuZy5zby4yLjEuMC45YmV0YTIsIHVzZXMgYXNzZW1ibGVyIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dW5lZCBmb3IgSW50ZWwgTU1YIHBsYXRmb3JtKQogICAgICAgIG1ha2VmaWxlLmdjYyAgICAgPT4gIEdlbmVyaWMgbWFrZWZpbGUgKGdjYywgY3JlYXRlcyBzdGF0aWMgbGlicG5nLmEpCiAgICAgICAgbWFrZWZpbGUua25yICAgICA9PiAgQXJjaGFpYyBVTklYIE1ha2VmaWxlIHRoYXQgY29udmVydHMgZmlsZXMgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuc2kya25yIChSZXF1aXJlcyBhbnNpMmtuci5jIGZyb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdHA6Ly9mdHAuY3Mud2lzYy5lZHUvZ2hvc3QpCi0gICAgICAgbWFrZWZpbGUuYWl4ICAgICA9PiAgQUlYIG1ha2VmaWxlCiAgICAgICAgbWFrZWZpbGUuY3lnd2luICA9PiAgQ3lnd2luL2djYyBtYWtlZmlsZQogICAgICAgIG1ha2VmaWxlLmRlYyAgICAgPT4gIERFQyBBbHBoYSBVTklYIG1ha2VmaWxlCiAgICAgICAgbWFrZWZpbGUuaHB1eCAgICA9PiAgSFBVWCAoMTAuMjAgYW5kIDExLjAwKSBtYWtlZmlsZQogICAgICAgIG1ha2VmaWxlLmlibWMgICAgPT4gIElCTSBDL0MrKyB2ZXJzaW9uIDMueCBmb3IgV2luMzIgYW5kIE9TLzIgKHN0YXRpYykKICAgICAgICBtYWtlZmlsZS5pbnRlbCAgID0+ICBJbnRlbCBDL0MrKyB2ZXJzaW9uIDQuMCBhbmQgbGF0ZXIKICAgICAgICBsaWJwbmcuaWNjICAgICAgID0+ICBQcm9qZWN0IGZpbGUsIElCTSBWaXN1YWxBZ2UvQysrIDQuMCBvciBsYXRlcgotICAgICAgIG1ha2VmaWxlLm1hY29zeCAgPT4gIE1BQ09TIFggTWFrZWZpbGUKICAgICAgICBtYWtlZmlsZS5zZ2kgICAgID0+ICBTaWxpY29uIEdyYXBoaWNzIElSSVggKGNjLCBjcmVhdGVzIHN0YXRpYyBsaWIpCi0gICAgICAgbWFrZWZpbGUuc2dnY2MgICA9PiAgU2lsaWNvbiBHcmFwaGljcyAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTEwKQorICAgICAgIG1ha2VmaWxlLnNnZ2NjICAgPT4gIFNpbGljb24gR3JhcGhpY3MgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuOWJldGEyKQogICAgICAgIG1ha2VmaWxlLnN1bm9zICAgPT4gIFN1biBtYWtlZmlsZQogICAgICAgIG1ha2VmaWxlLnNvbGFyaXMgPT4gIFNvbGFyaXMgMi5YIG1ha2VmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuOWJldGExMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTIpCiAgICAgICAgbWFrZWZpbGUuc2NvICAgICA9PiAgRm9yIFNDTyBPU3I1ICBFTEYgYW5kIFVuaXh3YXJlIDcgd2l0aCBOYXRpdmUgY2MKICAgICAgICBtYWtlZmlsZS5taXBzICAgID0+ICBNSVBTIG1ha2VmaWxlCiAgICAgICAgbWFrZWZpbGUuYWNvcm4gICA9PiAgQWNvcm4gbWFrZWZpbGUKZGlmZiAtLWdpdCBhL1RPRE8gYi9UT0RPCmluZGV4IGE1ZjYzOTUuLmUxZGU4NmMgMTAwNjQ0Ci0tLSBhL1RPRE8KKysrIGIvVE9ETwpAQCAtMTcsOCArMTcsMyBAQAogICAgKGNvdW50aW5nIGh1ZmZtYW4gYml0cy9wcmVjb21wcmVzc2lvbj8gIGZpbHRlciBpbmVydGlhPyAgZmlsdGVyIGNvc3RzPykuCiBIaXN0b2dyYW0gY3JlYXRpb24uCiBUZXh0IGNvbnZlcnNpb24gYmV0d2VlbiBkaWZmZXJlbnQgY29kZSBwYWdlcyAoTGF0aW4tMSAtPiBNYWMgYW5kIERPUykuCi1TaG91bGQgd2UgYWx3YXlzIG1hbGxvYyAyXmJpdF9kZXB0aCBQTFRFL3RSTlMvaElTVCBlbnRyaWVzIGZvciBzYWZldHk/Ci1CdWlsZCBnYW1tYSB0YWJsZXMgdXNpbmcgZml4ZWQgcG9pbnQgKGFuZCBkbyBhd2F5IHdpdGggZmxvYXRpbmcgcG9pbnQgZW50aXJlbHkpLgotVXNlIGdyZWF0ZXIgcHJlY2lzaW9uIHdoZW4gY2hhbmdpbmcgdG8gbGluZWFyIGdhbW1hIGZvciBjb21wb3NpdGluZyBhZ2FpbnN0Ci0gIGJhY2tncm91bmQgYW5kIGRvaW5nIHJnYi10by1ncmF5IHRyYW5zZm9ybWF0aW9uLgotSW52ZXN0aWdhdGUgcHJlLWluY3JlbWVudGVkIGxvb3AgY291bnRlcnMgYW5kIG90aGVyIGxvb3AgY29uc3RydWN0aW9ucy4KZGlmZiAtLWdpdCBhL1kyS0lORk8gYi9ZMktJTkZPCmluZGV4IGZhMzA1MDcuLmMzNTQyYTQgMTAwNjQ0Ci0tLSBhL1kyS0lORk8KKysrIGIvWTJLSU5GTwpAQCAtMSwxMyArMSwxMyBAQAogICAgWTJLIGNvbXBsaWFuY2UgaW4gbGlicG5nOgogICAgPT09PT09PT09PT09PT09PT09PT09PT09PQogCi0gICAgICBKYW51YXJ5IDE2LCAyMDAxCisgICAgICBOb3ZlbWJlciAxOSwgMjAwMAogCiAgICAgICBTaW5jZSB0aGUgUE5HIERldmVsb3BtZW50IGdyb3VwIGlzIGFuIGFkLWhvYyBib2R5LCB3ZSBjYW4ndCBtYWtlCiAgICAgICBhbiBvZmZpY2lhbCBkZWNsYXJhdGlvbi4KIAogICAgICAgVGhpcyBpcyB5b3VyIHVub2ZmaWNpYWwgYXNzdXJhbmNlIHRoYXQgbGlicG5nIGZyb20gdmVyc2lvbiAwLjcxIGFuZAotICAgICAgdXB3YXJkIHRocm91Z2ggMS4wLjliZXRhMTAgYXJlIFkySyBjb21wbGlhbnQuICBJdCBpcyBteSBiZWxpZWYgdGhhdCBlYXJsaWVyCisgICAgICB1cHdhcmQgdGhyb3VnaCAxLjAuOWJldGEyIGFyZSBZMksgY29tcGxpYW50LiAgSXQgaXMgbXkgYmVsaWVmIHRoYXQgZWFybGllcgogICAgICAgdmVyc2lvbnMgd2VyZSBhbHNvIFkySyBjb21wbGlhbnQuCiAKICAgICAgIExpYnBuZyBvbmx5IGhhcyB0aHJlZSB5ZWFyIGZpZWxkcy4gIE9uZSBpcyBhIDItYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggMTMzNDBjNS4uNTNhOTIxZSAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMSw1ICsxLDUgQEAKIGVjaG8gIgotICBUaGVyZSBpcyBubyBcImNvbmZpZ3VyZVwiIHNjcmlwdCBmb3IgTGlicG5nLTEuMC45YmV0YTEwLiAgSW5zdGVhZCwgcGxlYXNlCisgIFRoZXJlIGlzIG5vIFwiY29uZmlndXJlXCIgc2NyaXB0IGZvciBMaWJwbmctMS4wLjliZXRhMi4gIEluc3RlYWQsIHBsZWFzZQogICBjb3B5IHRoZSBhcHByb3ByaWF0ZSBtYWtlZmlsZSBmb3IgeW91ciBzeXN0ZW0gZnJvbSB0aGUgXCJzY3JpcHRzXCIKICAgZGlyZWN0b3J5LiAgUmVhZCB0aGUgSU5TVEFMTCBmaWxlIGZvciBtb3JlIGRldGFpbHMuCiAiCmRpZmYgLS1naXQgYS9jb250cmliL2dyZWdib29rL01ha2VmaWxlLnNnaSBiL2NvbnRyaWIvZ3JlZ2Jvb2svTWFrZWZpbGUuc2dpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmE2MWZiLi4wMDAwMDAwCi0tLSBhL2NvbnRyaWIvZ3JlZ2Jvb2svTWFrZWZpbGUuc2dpCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLSMgU2FtcGxlIG1ha2VmaWxlIGZvciBycG5nLXggLyBycG5nMi14IC8gd3BuZyBmb3IgU0dJIHVzaW5nIGNjIGFuZCBtYWtlLgotIyBHcmVnIFJvZWxvZnMKLSMgTGFzdCBtb2RpZmllZDogIDE2IEphbnVhcnkgMTAwMAotIwotIwlUaGUgcHJvZ3JhbXMgYnVpbHQgYnkgdGhpcyBtYWtlZmlsZSBhcmUgZGVzY3JpYmVkIGluIHRoZSBib29rLAotIwkiUE5HOiAgVGhlIERlZmluaXRpdmUgR3VpZGUsIiBieSBHcmVnIFJvZWxvZnMgKE8nUmVpbGx5IGFuZAotIwlBc3NvY2lhdGVzLCAxOTk5KS4gIEdvIGJ1eSBhIGNvcHksIGVoPyAgQnV5IHNvbWUgZm9yIGZyaWVuZHMKLSMJYW5kIGZhbWlseSwgdG9vLiAgKE5vdCB0aGF0IHRoaXMgaXMgYSBibGF0YW50IHBsdWcgb3IgYW55dGhpbmcuKQotIwotIyBJbnZva2UgdGhpcyBtYWtlZmlsZSBmcm9tIGEgc2hlbGwgcHJvbXB0IGluIHRoZSB1c3VhbCB3YXk7IGZvciBleGFtcGxlOgotIwotIwltYWtlIC1mIE1ha2VmaWxlLnNnaQotIwotIyBUaGlzIG1ha2VmaWxlIGFzc3VtZXMgbGlicG5nIGFuZCB6bGliIGhhdmUgYWxyZWFkeSBiZWVuIGJ1aWx0IG9yIGRvd25sb2FkZWQKLSMgYW5kIGFyZSBib3RoIGluc3RhbGxlZCBpbiAvdXNyL2xvY2FsL3tpbmNsdWRlLGxpYn0gKGFzIGluZGljYXRlZCBieSB0aGUKLSMgUE5HKiBhbmQgWiogbWFjcm9zIGJlbG93KS4gIEVkaXQgYXMgYXBwcm9wcmlhdGUtLWNob29zZSBvbmx5IE9ORSBlYWNoIG9mCi0jIHRoZSBQTkdJTkMsIFBOR0xJQiwgWklOQyBhbmQgWkxJQiBsaW5lcy4KLSMKLSMgVGhpcyBtYWtlZmlsZSBidWlsZHMgZHluYW1pY2FsbHkgbGlua2VkIGV4ZWN1dGFibGVzIChhZ2FpbnN0IGxpYnBuZyBhbmQgemxpYiwKLSMgdGhhdCBpcyksIGJ1dCB0aGF0IGNhbiBiZSBjaGFuZ2VkIGJ5IHVuY29tbWVudGluZyB0aGUgYXBwcm9wcmlhdGUgUE5HTElCIGFuZAotIyBaTElCIGxpbmVzLgotCi0KLSMgbWFjcm9zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVBOR0lOQyA9IC1JL3Vzci9sb2NhbC9pbmNsdWRlCi1QTkdMSUIgPSAtTC91c3IvbG9jYWwvbGliIC1scG5nCSMgZHluYW1pY2FsbHkgbGlua2VkIGFnYWluc3QgbGlicG5nCi0jUE5HTElCID0gL3Vzci9sb2NhbC9saWIvbGlicG5nLmEJIyBzdGF0aWNhbGx5IGxpbmtlZCBhZ2FpbnN0IGxpYnBuZwotIyBvcjoKLSNQTkdJTkMgPSAtSS4uLy4uCi0jUE5HTElCID0gLUwuLi8uLiAtbHBuZwotI1BOR0xJQiA9IC4uLy4uL2xpYnBuZy5hCi0KLVpJTkMgPSAtSS91c3IvbG9jYWwvaW5jbHVkZQotWkxJQiA9IC1ML3Vzci9sb2NhbC9saWIgLWx6CQkjIGR5bmFtaWNhbGx5IGxpbmtlZCBhZ2FpbnN0IHpsaWIKLSNaTElCID0gL3Vzci9sb2NhbC9saWIvbGliei5hCQkjIHN0YXRpY2FsbHkgbGlua2VkIGFnYWluc3QgemxpYgotI1pJTkMgPSAtSS4uL3psaWIKLSNaTElCID0gLUwuLi96bGliIC1segotI1pMSUIgPSAuLi8uLi8uLi96bGliL2xpYnouYQotCi1YSU5DID0gLUkvdXNyL2luY2x1ZGUvWDExCQkjIG9sZC1zdHlsZSwgc3RvY2sgWCBkaXN0cmlidXRpb25zCi1YTElCID0gLUwvdXNyL2xpYi9YMTEgLWxYMTEKLSNYSU5DID0gLUkvdXNyL29wZW53aW4vaW5jbHVkZSAgICAJIyBTdW4gd29ya3N0YXRpb25zIChPcGVuV2luZG93cykKLSNYTElCID0gLUwvdXNyL29wZW53aW4vbGliIC1sWDExCi0jWElOQyA9IC1JL3Vzci9YMTFSNi9pbmNsdWRlCQkjIG5ldyBYIGRpc3RyaWJ1dGlvbnMgKFhGcmVlODYsIGV0Yy4pCi0jWExJQiA9IC1ML3Vzci9YMTFSNi9saWIgLWxYMTEKLQotSU5DUyA9ICQoUE5HSU5DKSAkKFpJTkMpICQoWElOQykKLVJMSUJTID0gJChQTkdMSUIpICQoWkxJQikgJChYTElCKSAtbG0KLVdMSUJTID0gJChQTkdMSUIpICQoWkxJQikKLQotQ0MgPSBjYwotTEQgPSBjYwotUk0gPSBybSAtZgotQ0ZMQUdTID0gLU8gLWZ1bGx3YXJuICQoSU5DUykKLUxERkxBR1MgPQotTyA9IC5vCi1FID0KLQotUlBORyAgPSBycG5nLXgKLVJQTkcyID0gcnBuZzIteAotV1BORyAgPSB3cG5nCi0KLVJPQkpTICA9ICQoUlBORykkKE8pIHJlYWRwbmckKE8pCi1ST0JKUzIgPSAkKFJQTkcyKSQoTykgcmVhZHBuZzIkKE8pCi1XT0JKUyAgPSAkKFdQTkcpJChPKSB3cml0ZXBuZyQoTykKLQotRVhFUyA9ICQoUlBORykkKEUpICQoUlBORzIpJChFKSAkKFdQTkcpJChFKQotCi0KLSMgaW1wbGljaXQgbWFrZSBydWxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS5jJChPKToKLQkkKENDKSAtYyAkKENGTEFHUykgJDwKLQotCi0jIGRlcGVuZGVuY2llcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1hbGw6ICAkKEVYRVMpCi0KLSQoUlBORykkKEUpOiAkKFJPQkpTKQotCSQoTEQpICQoTERGTEFHUykgLW8gJEAgJChST0JKUykgJChSTElCUykKLQotJChSUE5HMikkKEUpOiAkKFJPQkpTMikKLQkkKExEKSAkKExERkxBR1MpIC1vICRAICQoUk9CSlMyKSAkKFJMSUJTKQotCi0kKFdQTkcpJChFKTogJChXT0JKUykKLQkkKExEKSAkKExERkxBR1MpIC1vICRAICQoV09CSlMpICQoV0xJQlMpCi0KLSQoUlBORykkKE8pOgkkKFJQTkcpLmMgcmVhZHBuZy5oCi0kKFJQTkcyKSQoTyk6CSQoUlBORzIpLmMgcmVhZHBuZzIuaAotJChXUE5HKSQoTyk6CSQoV1BORykuYyB3cml0ZXBuZy5oCi0KLXJlYWRwbmckKE8pOglyZWFkcG5nLmMgcmVhZHBuZy5oCi1yZWFkcG5nMiQoTyk6CXJlYWRwbmcyLmMgcmVhZHBuZzIuaAotd3JpdGVwbmckKE8pOgl3cml0ZXBuZy5jIHdyaXRlcG5nLmgKLQotCi0jIG1haW50ZW5hbmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGVhbjoKLQkkKFJNKSAkKEVYRVMpICQoUk9CSlMpICQoUk9CSlMyKSAkKFdPQkpTKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9ncmVnYm9vay9yZWFkcG5nMi5jIGIvY29udHJpYi9ncmVnYm9vay9yZWFkcG5nMi5jCmluZGV4IDQ5OGQ5NjcuLjhmNzBjODMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZ3JlZ2Jvb2svcmVhZHBuZzIuYworKysgYi9jb250cmliL2dyZWdib29rL3JlYWRwbmcyLmMKQEAgLTQsNyArNCw3IEBACiAKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICAgIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdyZWcgUm9lbG9mcy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCBHcmVnIFJvZWxvZnMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgICBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcywiIHdpdGhvdXQgd2FycmFudHkgb2YgYW55IGtpbmQsCiAgICAgICBleHByZXNzIG9yIGltcGxpZWQuICBJbiBubyBldmVudCBzaGFsbCB0aGUgYXV0aG9yIG9yIGNvbnRyaWJ1dG9ycwpAQCAtNTEsNyArNTEsNiBAQAogewogICAgIGZwcmludGYoc3RkZXJyLCAiICAgQ29tcGlsZWQgd2l0aCBsaWJwbmcgJXM7IHVzaW5nIGxpYnBuZyAlcy5cbiIsCiAgICAgICBQTkdfTElCUE5HX1ZFUl9TVFJJTkcsIHBuZ19saWJwbmdfdmVyKTsKLQogICAgIGZwcmludGYoc3RkZXJyLCAiICAgQ29tcGlsZWQgd2l0aCB6bGliICVzOyB1c2luZyB6bGliICVzLlxuIiwKICAgICAgIFpMSUJfVkVSU0lPTiwgemxpYl92ZXJzaW9uKTsKIH0KQEAgLTExMSw2ICsxMTAsNyBAQAogICAgIHBuZ19zZXRfcHJvZ3Jlc3NpdmVfcmVhZF9mbihwbmdfcHRyLCBtYWlucHJvZ19wdHIsCiAgICAgICByZWFkcG5nMl9pbmZvX2NhbGxiYWNrLCByZWFkcG5nMl9yb3dfY2FsbGJhY2ssIHJlYWRwbmcyX2VuZF9jYWxsYmFjayk7CiAKKwogICAgIC8qIG1ha2Ugc3VyZSB3ZSBzYXZlIG91ciBwb2ludGVycyBmb3IgdXNlIGluIHJlYWRwbmcyX2RlY29kZV9kYXRhKCkgKi8KIAogICAgIG1haW5wcm9nX3B0ci0+cG5nX3B0ciA9IHBuZ19wdHI7CmRpZmYgLS1naXQgYS9jb250cmliL2dyZWdib29rL3JlYWRwbmcyLmggYi9jb250cmliL2dyZWdib29rL3JlYWRwbmcyLmgKaW5kZXggN2NhYTlkOS4uY2JjMWZkOCAxMDA2NDQKLS0tIGEvY29udHJpYi9ncmVnYm9vay9yZWFkcG5nMi5oCisrKyBiL2NvbnRyaWIvZ3JlZ2Jvb2svcmVhZHBuZzIuaApAQCAtNCw3ICs0LDcgQEAKIAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgICAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR3JlZyBSb2Vsb2ZzLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICAgIENvcHlyaWdodCAoYykgMTk5OC0yMDAwIEdyZWcgUm9lbG9mcy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICAgIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzLCIgd2l0aG91dCB3YXJyYW50eSBvZiBhbnkga2luZCwKICAgICAgIGV4cHJlc3Mgb3IgaW1wbGllZC4gIEluIG5vIGV2ZW50IHNoYWxsIHRoZSBhdXRob3Igb3IgY29udHJpYnV0b3JzCkBAIC02NiwxMSArNjYsNiBAQAogICAgIGludCByb3dieXRlczsKICAgICBpbnQgY2hhbm5lbHM7CiAgICAgaW50IG5lZWRfYmdjb2xvcjsKLSNpZiAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfTV9JWDg2KSkKLSAgICBpbnQgbm9tbXhmaWx0ZXJzOwotICAgIGludCBub21teGNvbWJpbmU7Ci0gICAgaW50IG5vbW14aW50ZXJsYWNlOwotI2VuZGlmCiAgICAgaW50IGRvbmU7CiAgICAgdWNoIGJnX3JlZDsKICAgICB1Y2ggYmdfZ3JlZW47CmRpZmYgLS1naXQgYS9jb250cmliL2dyZWdib29rL3JwbmcyLXdpbi5jIGIvY29udHJpYi9ncmVnYm9vay9ycG5nMi13aW4uYwppbmRleCA4YThkM2U3Li45YmM2NmM3IDEwMDY0NAotLS0gYS9jb250cmliL2dyZWdib29rL3JwbmcyLXdpbi5jCisrKyBiL2NvbnRyaWIvZ3JlZ2Jvb2svcnBuZzItd2luLmMKQEAgLTExLDYgKzExLDcgQEAKICAgIE1ldWxlbiBmb3IgdGhlICJkaWFtb25kIiBhbmQgInJhZGlhbCB3YXZlcyIgcGF0dGVybnMsIHJlc3BlY3RpdmVseS4KIAogICAgdG8gZG86CisgICAgLSBzdGRvdXQvc3RkZXJyIGRvbid0IHdvcmshICBuZWVkIG1lc3NhZ2Ugd2luZG93IChtYXliZSBzY3JvbGxhYmxlPykKICAgICAtIGhhbmRsZSBxdW90ZWQgY29tbWFuZC1saW5lIGFyZ3MgKGVzcGVjaWFsbHkgZmlsZW5hbWVzIHdpdGggc3BhY2VzKQogICAgIC0gZmluaXNoIHJlc2l6YWJsZSBjaGVja2VyYm9hcmQtZ3JhZGllbnQgKHNpemVzIDQtMTI4PykKICAgICAtIHVzZSAlLjEwMjNzIHRvIHNpbXBsaWZ5IHRydW5jYXRpb24gb2YgdGl0bGUtYmFyIHN0cmluZz8KQEAgLTI0LDEyICsyNSwxMCBAQAogICAgIC0gMS4wMzogIG1vZGlmaWVkIHRvIGFsbG93IGFiYnJldmlhdGVkIG9wdGlvbnMKICAgICAtIDEuMDQ6ICByZW1vdmVkIGJvZ3VzIGV4dHJhIGFyZ3VtZW50IGZyb20gdXNhZ2UgZnByaW50ZigpIFtHbGVubiBSLVA/XTsKICAgICAgICAgICAgICAgZml4ZWQgY29tbWFuZC1saW5lIHBhcnNpbmcgYnVnCi0gICAgLSAxLjEwOiAgZW5hYmxlZCAibWVzc2FnZSB3aW5kb3ciIChjb25zb2xlKSwgdGhhbmtzIHRvIERhdmlkIEdlbGRyZWljaAotICAgIC0gMS4yMDogIGFkZGVkIHJ1bnRpbWUgTU1YLWVuYWJsaW5nL2Rpc2FibGluZyBhbmQgbmV3IC1tbXgqIG9wdGlvbnMKIAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgICAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR3JlZyBSb2Vsb2ZzLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICAgIENvcHlyaWdodCAoYykgMTk5OC0yMDAwIEdyZWcgUm9lbG9mcy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICAgIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzLCIgd2l0aG91dCB3YXJyYW50eSBvZiBhbnkga2luZCwKICAgICAgIGV4cHJlc3Mgb3IgaW1wbGllZC4gIEluIG5vIGV2ZW50IHNoYWxsIHRoZSBhdXRob3Igb3IgY29udHJpYnV0b3JzCkBAIC01Niw3ICs1NSw3IEBACiAKICNkZWZpbmUgUFJPR05BTUUgICJycG5nMi13aW4iCiAjZGVmaW5lIExPTkdOQU1FICAiUHJvZ3Jlc3NpdmUgUE5HIFZpZXdlciBmb3IgV2luZG93cyIKLSNkZWZpbmUgVkVSU0lPTiAgICIxLjIwIG9mIDQgSmFudWFyeSAyMDAxIgorI2RlZmluZSBWRVJTSU9OICAgIjEuMDQgb2YgMTkgTWFyY2ggMjAwMCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC02NSw3ICs2NCw2IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPG1hdGguaD4gICAgICAvKiBvbmx5IGZvciBQdmRNIGJhY2tncm91bmQgY29kZSAqLwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxjb25pby5oPiAgICAgLyogb25seSBmb3IgX2dldGNoKCkgKi8KIAogLyogYWxsIGZvciBQdmRNIGJhY2tncm91bmQgY29kZTogKi8KICNpZm5kZWYgUEkKQEAgLTI0MSwxNiArMjM5LDYgQEAKICAgICBtZW1zZXQoJnJwbmcyX2luZm8sIDAsIHNpemVvZihtYWlucHJvZ19pbmZvKSk7CiAKIAotICAgIC8qIE5leHQgcmVlbmFibGUgY29uc29sZSBvdXRwdXQsIHdoaWNoIG5vcm1hbGx5IGdvZXMgdG8gdGhlIGJpdCBidWNrZXQKLSAgICAgKiBmb3Igd2luZG93ZWQgYXBwcy4gIENsb3NpbmcgdGhlIGNvbnNvbGUgd2luZG93IHdpbGwgdGVybWluYXRlIHRoZQotICAgICAqIGFwcC4gIFRoYW5rcyB0byBEYXZpZC5HZWxkcmVpY2hAcmVhbHZpei5jb20gZm9yIHN1cHBseWluZyB0aGUgbWFnaWNhbAotICAgICAqIGluY2FudGF0aW9uLiAqLwotCi0gICAgQWxsb2NDb25zb2xlKCk7Ci0gICAgZnJlb3BlbigiQ09OT1VUJCIsICJhIiwgc3RkZXJyKTsKLSAgICBmcmVvcGVuKCJDT05PVVQkIiwgImEiLCBzdGRvdXQpOwotCi0KICAgICAvKiBTZXQgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIG91ciBkaXNwbGF5LXN5c3RlbSBleHBvbmVudCwgaS5lLiwgdGhlCiAgICAgICogcHJvZHVjdCBvZiB0aGUgQ1JUIGV4cG9uZW50IGFuZCB0aGUgZXhwb25lbnQgY29ycmVzcG9uZGluZyB0bwogICAgICAqIHRoZSBmcmFtZS1idWZmZXIncyBsb29rdXAgdGFibGUgKExVVCksIGlmIGFueS4gIFRoaXMgaXMgbm90IGFuCkBAIC0zNjYsMTQgKzM1NCw2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAoKmFyZ3YsICItdGltaW5nIiwgMikpIHsKICAgICAgICAgICAgIHRpbWluZyA9IFRSVUU7Ci0jaWYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX01fSVg4NikpCi0gICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAoKmFyZ3YsICItbm9tbXhmaWx0ZXJzIiwgNykpIHsKLSAgICAgICAgICAgIHJwbmcyX2luZm8ubm9tbXhmaWx0ZXJzID0gVFJVRTsKLSAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcCgqYXJndiwgIi1ub21teGNvbWJpbmUiLCA3KSkgewotICAgICAgICAgICAgcnBuZzJfaW5mby5ub21teGNvbWJpbmUgPSBUUlVFOwotICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21wKCphcmd2LCAiLW5vbW14aW50ZXJsYWNlIiwgNykpIHsKLSAgICAgICAgICAgIHJwbmcyX2luZm8ubm9tbXhpbnRlcmxhY2UgPSBUUlVFOwotI2VuZGlmCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoKiphcmd2ICE9ICctJykgewogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gKmFyZ3Y7CkBAIC00MjEsNDcgKzQwMSwyNSBAQAogICAgIC8qIHVzYWdlIHNjcmVlbiAqLwogCiAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGludCBjaDsKLQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuJXMgJXM6ICAlc1xuXG4iLCBQUk9HTkFNRSwgVkVSU0lPTiwgYXBwbmFtZSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4lcyAlczogICVzXG4iLCBQUk9HTkFNRSwgVkVSU0lPTiwgYXBwbmFtZSk7CiAgICAgICAgIHJlYWRwbmcyX3ZlcnNpb25faW5mbygpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIgotICAgICAgICAgICJVc2FnZTogICVzIFstZ2FtbWEgZXhwXSBbLWJnY29sb3IgYmcgfCAtYmdwYXQgcGF0XSBbLXRpbWluZ11cbiIKLSNpZiAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfTV9JWDg2KSkKLSAgICAgICAgICAiICAgICAgICAlKnMgWy1ub21teGZpbHRlcnNdIFstbm9tbXhjb21iaW5lXSBbLW5vbW14aW50ZXJsYWNlXVxuIgotI2VuZGlmCi0gICAgICAgICAgIiAgICAgICAgJSpzIGZpbGUucG5nXG5cbiIKKyAgICAgICAgICAiVXNhZ2U6ICAlcyBbLWdhbW1hIGV4cF0gWy1iZ2NvbG9yIGJnIHwgLWJncGF0IHBhdF0gWy10aW1pbmddIgorICAgICAgICAgICIgZmlsZS5wbmdcblxuIgogICAgICAgICAgICIgICAgZXhwIFx0dHJhbnNmZXItZnVuY3Rpb24gZXhwb25lbnQgKGBgZ2FtbWEnJykgb2YgdGhlIGRpc3BsYXlcbiIKICAgICAgICAgICAiXHRcdCAgc3lzdGVtIGluIGZsb2F0aW5nLXBvaW50IGZvcm1hdCAoZS5nLiwgYGAlLjFmJycpOyBlcXVhbFxuIgogICAgICAgICAgICJcdFx0ICB0byB0aGUgcHJvZHVjdCBvZiB0aGUgbG9va3VwLXRhYmxlIGV4cG9uZW50ICh2YXJpZXMpXG4iCiAgICAgICAgICAgIlx0XHQgIGFuZCB0aGUgQ1JUIGV4cG9uZW50ICh1c3VhbGx5IDIuMik7IG11c3QgYmUgcG9zaXRpdmVcbiIKICAgICAgICAgICAiICAgIGJnICBcdGRlc2lyZWQgYmFja2dyb3VuZCBjb2xvciBpbiA3LWNoYXJhY3RlciBoZXggUkdCIGZvcm1hdFxuIgogICAgICAgICAgICJcdFx0ICAoZS5nLiwgYGAjZmY3NzAwJycgZm9yIG9yYW5nZTogIHNhbWUgYXMgSFRNTCBjb2xvcnMpO1xuIgotICAgICAgICAgICJcdFx0ICB1c2VkIHdpdGggdHJhbnNwYXJlbnQgaW1hZ2VzOyBvdmVycmlkZXMgLWJncGF0IG9wdGlvblxuIgorICAgICAgICAgICJcdFx0ICB1c2VkIHdpdGggdHJhbnNwYXJlbnQgaW1hZ2VzOyBvdmVycmlkZXMgLWJncGF0XG4iCiAgICAgICAgICAgIiAgICBwYXQgXHRkZXNpcmVkIGJhY2tncm91bmQgcGF0dGVybiBudW1iZXIgKDEtJWQpOyB1c2VkIHdpdGhcbiIKLSAgICAgICAgICAiXHRcdCAgdHJhbnNwYXJlbnQgaW1hZ2VzOyBvdmVycmlkZXMgLWJnY29sb3Igb3B0aW9uXG4iCisgICAgICAgICAgIlx0XHQgIHRyYW5zcGFyZW50IGltYWdlczsgb3ZlcnJpZGVzIC1iZ2NvbG9yXG4iCiAgICAgICAgICAgIiAgICAtdGltaW5nXHRlbmFibGVzIGRlbGF5IGZvciBldmVyeSBibG9jayByZWFkLCB0byBzaW11bGF0ZSBtb2RlbVxuIgogICAgICAgICAgICJcdFx0ICBkb3dubG9hZCBvZiBpbWFnZSAofjM2IEticHMpXG4iCi0jaWYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX01fSVg4NikpCi0gICAgICAgICAgIiAgICAtbm9tbXgqXHRkaXNhYmxlIG9wdGltaXplZCBNTVggcm91dGluZXMgZm9yIGRlY29kaW5nIHJvdyBmaWx0ZXJzLFxuIgotICAgICAgICAgICJcdFx0ICBjb21iaW5pbmcgcm93cywgYW5kIGV4cGFuZGluZyBpbnRlcmxhY2luZywgcmVzcGVjdGl2ZWx5XG4iCi0jZW5kaWYKICAgICAgICAgICAiXG5QcmVzcyBRLCBFc2Mgb3IgbW91c2UgYnV0dG9uIDEgYWZ0ZXIgaW1hZ2UgaXMgZGlzcGxheWVkIHRvIHF1aXQuXG4iCi0gICAgICAgICAgIlByZXNzIFEgb3IgRXNjIHRvIHF1aXQgdGhpcyB1c2FnZSBzY3JlZW4uXG4iCi0gICAgICAgICAgIlxuIiwgUFJPR05BTUUsCi0jaWYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX01fSVg4NikpCi0gICAgICAgICAgc3RybGVuKFBST0dOQU1FKSwgIiAiLAotI2VuZGlmCi0gICAgICAgICAgc3RybGVuKFBST0dOQU1FKSwgIiAiLCBkZWZhdWx0X2Rpc3BsYXlfZXhwb25lbnQsIG51bV9iZ3BhdCk7Ci0gICAgICAgIGRvCi0gICAgICAgICAgICBjaCA9IF9nZXRjaCgpOwotICAgICAgICB3aGlsZSAoY2ggIT0gJ3EnICYmIGNoICE9ICdRJyAmJiBjaCAhPSAweDFCKTsKKyAgICAgICAgICAiXG4iLCBQUk9HTkFNRSwgZGVmYXVsdF9kaXNwbGF5X2V4cG9uZW50LCBudW1fYmdwYXQpOwogICAgICAgICBleGl0KDEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4lcyAlczogICVzXG4iLCBQUk9HTkFNRSwgVkVSU0lPTiwgYXBwbmFtZSk7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICJcbiAgIFtjb25zb2xlIHdpbmRvdzogIGNsb3NpbmcgdGhpcyB3aW5kb3cgd2lsbCB0ZXJtaW5hdGUgJXNdXG5cbiIsCi0gICAgICAgICAgUFJPR05BTUUpOwogICAgIH0KIAogCmRpZmYgLS1naXQgYS9jb250cmliL2dyZWdib29rL3JwbmcyLXguYyBiL2NvbnRyaWIvZ3JlZ2Jvb2svcnBuZzIteC5jCmluZGV4IGRkMjZmZWMuLjQ3YWI1YjkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZ3JlZ2Jvb2svcnBuZzIteC5jCisrKyBiL2NvbnRyaWIvZ3JlZ2Jvb2svcnBuZzIteC5jCkBAIC0yNSwxMSArMjUsMTAgQEAKICAgICAtIDEuMTA6ICBhZGRlZCBzdXBwb3J0IGZvciBub24tZGVmYXVsdCB2aXN1YWxzOyBmaXhlZCBYIHBpeGVsLWNvbnZlcnNpb24KICAgICAtIDEuMTE6ICBhZGRlZCAtdXNsZWVwIG9wdGlvbiBmb3IgZGVtb3M7IGZpeGVkIGNvbW1hbmQtbGluZSBwYXJzaW5nIGJ1ZwogICAgIC0gMS4xMjogIGFkZGVkIC1wYXVzZSBvcHRpb24gZm9yIGRlbW9zIGFuZCB0ZXN0aW5nCi0gICAgLSAxLjIwOiAgYWRkZWQgcnVudGltZSBNTVgtZW5hYmxpbmcvZGlzYWJsaW5nIGFuZCBuZXcgLW1teCogb3B0aW9ucwogCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHcmVnIFJvZWxvZnMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgICAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDAgR3JlZyBSb2Vsb2ZzLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgICAgVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMsIiB3aXRob3V0IHdhcnJhbnR5IG9mIGFueSBraW5kLAogICAgICAgZXhwcmVzcyBvciBpbXBsaWVkLiAgSW4gbm8gZXZlbnQgc2hhbGwgdGhlIGF1dGhvciBvciBjb250cmlidXRvcnMKQEAgLTU2LDcgKzU1LDcgQEAKIAogI2RlZmluZSBQUk9HTkFNRSAgInJwbmcyLXgiCiAjZGVmaW5lIExPTkdOQU1FICAiUHJvZ3Jlc3NpdmUgUE5HIFZpZXdlciBmb3IgWCIKLSNkZWZpbmUgVkVSU0lPTiAgICIxLjIwIG9mIDQgSmFudWFyeSAyMDAxIgorI2RlZmluZSBWRVJTSU9OICAgIjEuMTIgb2YgMTkgTWFyY2ggMjAwMCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0zNjAsMTQgKzM1OSw2IEBACiAgICAgICAgICAgICBwYXVzZV9hZnRlcl9wYXNzID0gVFJVRTsKICAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcCgqYXJndiwgIi10aW1pbmciLCAyKSkgewogICAgICAgICAgICAgdGltaW5nID0gVFJVRTsKLSNpZiAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfTV9JWDg2KSkKLSAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcCgqYXJndiwgIi1ub21teGZpbHRlcnMiLCA3KSkgewotICAgICAgICAgICAgcnBuZzJfaW5mby5ub21teGZpbHRlcnMgPSBUUlVFOwotICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21wKCphcmd2LCAiLW5vbW14Y29tYmluZSIsIDcpKSB7Ci0gICAgICAgICAgICBycG5nMl9pbmZvLm5vbW14Y29tYmluZSA9IFRSVUU7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAoKmFyZ3YsICItbm9tbXhpbnRlcmxhY2UiLCA3KSkgewotICAgICAgICAgICAgcnBuZzJfaW5mby5ub21teGludGVybGFjZSA9IFRSVUU7Ci0jZW5kaWYKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICgqKmFyZ3YgIT0gJy0nKSB7CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAqYXJndjsKQEAgLTQyMywxMyArNDE0LDEwIEBACiAgICAgLyogdXNhZ2Ugc2NyZWVuICovCiAKICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbiVzICVzOiAgJXNcblxuIiwgUFJPR05BTUUsIFZFUlNJT04sIGFwcG5hbWUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuJXMgJXM6ICAlc1xuIiwgUFJPR05BTUUsIFZFUlNJT04sIGFwcG5hbWUpOwogICAgICAgICByZWFkcG5nMl92ZXJzaW9uX2luZm8oKTsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbiIKICAgICAgICAgICAiVXNhZ2U6ICAlcyBbLWRpc3BsYXkgeGRweV0gWy1nYW1tYSBleHBdIFstYmdjb2xvciBiZyB8IC1iZ3BhdCBwYXRdXG4iCi0jaWYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX01fSVg4NikpCi0gICAgICAgICAgIiAgICAgICAgJSpzIFstbm9tbXhmaWx0ZXJzXSBbLW5vbW14Y29tYmluZV0gWy1ub21teGludGVybGFjZV1cbiIKLSNlbmRpZgogICAgICAgICAgICIgICAgICAgICUqcyBbLXVzbGVlcCBkdXIgfCAtdGltaW5nXSBbLXBhdXNlXSBmaWxlLnBuZ1xuXG4iCiAgICAgICAgICAgIiAgICB4ZHB5XHRuYW1lIG9mIHRoZSB0YXJnZXQgWCBkaXNwbGF5IChlLmcuLCBgYGhvc3RuYW1lOjAnJylcbiIKICAgICAgICAgICAiICAgIGV4cCBcdHRyYW5zZmVyLWZ1bmN0aW9uIGV4cG9uZW50IChgYGdhbW1hJycpIG9mIHRoZSBkaXNwbGF5XG4iCkBAIC00NDEsMTAgKzQyOSw2IEBACiAgICAgICAgICAgIlx0XHQgIHVzZWQgd2l0aCB0cmFuc3BhcmVudCBpbWFnZXM7IG92ZXJyaWRlcyAtYmdwYXRcbiIKICAgICAgICAgICAiICAgIHBhdCBcdGRlc2lyZWQgYmFja2dyb3VuZCBwYXR0ZXJuIG51bWJlciAoMS0lZCk7IHVzZWQgd2l0aFxuIgogICAgICAgICAgICJcdFx0ICB0cmFuc3BhcmVudCBpbWFnZXM7IG92ZXJyaWRlcyAtYmdjb2xvclxuIgotI2lmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9NX0lYODYpKQotICAgICAgICAgICIgICAgLW5vbW14Klx0ZGlzYWJsZSBvcHRpbWl6ZWQgTU1YIHJvdXRpbmVzIGZvciBkZWNvZGluZyByb3cgZmlsdGVycyxcbiIKLSAgICAgICAgICAiXHRcdCAgY29tYmluaW5nIHJvd3MsIGFuZCBleHBhbmRpbmcgaW50ZXJsYWNpbmcsIHJlc3BlY3RpdmVseVxuIgotI2VuZGlmCiAgICAgICAgICAgIiAgICBkdXIgXHRkdXJhdGlvbiBpbiBtaWNyb3NlY29uZHMgdG8gd2FpdCBhZnRlciBkaXNwbGF5aW5nIGVhY2hcbiIKICAgICAgICAgICAiXHRcdCAgcm93IChmb3IgZGVtbyBwdXJwb3NlcylcbiIKICAgICAgICAgICAiICAgIC10aW1pbmdcdGVuYWJsZXMgZGVsYXkgZm9yIGV2ZXJ5IGJsb2NrIHJlYWQsIHRvIHNpbXVsYXRlIG1vZGVtXG4iCkBAIC00NTIsMTEgKzQzNiw4IEBACiAgICAgICAgICAgIiAgICAtcGF1c2VcdHBhdXNlcyBhZnRlciBkaXNwbGF5aW5nIGVhY2ggcGFzcyB1bnRpbCBrZXkgcHJlc3NlZFxuIgogICAgICAgICAgICJcblByZXNzIFEsIEVzYyBvciBtb3VzZSBidXR0b24gMSAod2l0aGluIGltYWdlIHdpbmRvdywgYWZ0ZXIgaW1hZ2VcbiIKICAgICAgICAgICAiaXMgZGlzcGxheWVkKSB0byBxdWl0LlxuIgotICAgICAgICAgICJcbiIsIFBST0dOQU1FLAotI2lmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9NX0lYODYpKQotICAgICAgICAgIHN0cmxlbihQUk9HTkFNRSksICIgIiwKLSNlbmRpZgotICAgICAgICAgIHN0cmxlbihQUk9HTkFNRSksICIgIiwgZGVmYXVsdF9kaXNwbGF5X2V4cG9uZW50LCBudW1fYmdwYXQpOworICAgICAgICAgICJcbiIsIFBST0dOQU1FLCBzdHJsZW4oUFJPR05BTUUpLCAiICIsIGRlZmF1bHRfZGlzcGxheV9leHBvbmVudCwKKyAgICAgICAgICBudW1fYmdwYXQpOwogICAgICAgICBleGl0KDEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZXhhbXBsZS5jIGIvZXhhbXBsZS5jCmluZGV4IDFlOTUzYzguLmFhOTIwZmUgMTAwNjQ0Ci0tLSBhL2V4YW1wbGUuYworKysgYi9leGFtcGxlLmMKQEAgLTI2Nyw3ICsyNjcsNyBAQAogICAgICovCiAgICBpZiAoY29sb3JfdHlwZSAmIFBOR19DT0xPUl9NQVNLX0NPTE9SKQogICAgewotICAgICAgaW50IG51bV9wYWxldHRlOworICAgICAgcG5nX3VpbnRfMzIgbnVtX3BhbGV0dGU7CiAgICAgICBwbmdfY29sb3JwIHBhbGV0dGU7CiAKICAgICAgIC8qIFRoaXMgcmVkdWNlcyB0aGUgaW1hZ2UgdG8gdGhlIGFwcGxpY2F0aW9uIHN1cHBsaWVkIHBhbGV0dGUgKi8KQEAgLTYwMyw5ICs2MDMsOSBAQAogICAgICAgUE5HX0lOVEVSTEFDRV8/Pz8/LCBQTkdfQ09NUFJFU1NJT05fVFlQRV9CQVNFLCBQTkdfRklMVEVSX1RZUEVfQkFTRSk7CiAKICAgIC8qIHNldCB0aGUgcGFsZXR0ZSBpZiB0aGVyZSBpcyBvbmUuICBSRVFVSVJFRCBmb3IgaW5kZXhlZC1jb2xvciBpbWFnZXMgKi8KLSAgIHBhbGV0dGUgPSAocG5nX2NvbG9ycClwbmdfbWFsbG9jKHBuZ19wdHIsIFBOR19NQVhfUEFMRVRURV9MRU5HVEggKiBzaXplb2YgKHBuZ19jb2xvcikpOworICAgcGFsZXR0ZSA9IChwbmdfY29sb3JwKXBuZ19tYWxsb2MocG5nX3B0ciwgMjU2ICogc2l6ZW9mIChwbmdfY29sb3IpKTsKICAgIC8qIC4uLiBzZXQgcGFsZXR0ZSBjb2xvcnMgLi4uICovCi0gICBwbmdfc2V0X1BMVEUocG5nX3B0ciwgaW5mb19wdHIsIHBhbGV0dGUsIFBOR19NQVhfUEFMRVRURV9MRU5HVEgpOworICAgcG5nX3NldF9QTFRFKHBuZ19wdHIsIGluZm9fcHRyLCBwYWxldHRlLCAyNTYpOwogICAgLyogWW91IG11c3Qgbm90IGZyZWUgcGFsZXR0ZSBoZXJlLCBiZWNhdXNlIHBuZ19zZXRfUExURSBvbmx5IG1ha2VzIGEgbGluayB0bwogICAgICAgdGhlIHBhbGV0dGUgdGhhdCB5b3UgbWFsbG9jZWQuICBXYWl0IHVudGlsIHlvdSBhcmUgYWJvdXQgdG8gZGVzdHJveQogICAgICAgdGhlIHBuZyBzdHJ1Y3R1cmUuICovCmRpZmYgLS1naXQgYS9saWJwbmcuMyBiL2xpYnBuZy4zCmluZGV4IDIyMDM1NDAuLjJhNTRhYzIgMTAwNjQ0Ci0tLSBhL2xpYnBuZy4zCisrKyBiL2xpYnBuZy4zCkBAIC0xLDYgKzEsNiBAQAotLlRIIExJQlBORyAzICJKYW51YXJ5IDE2LCAyMDAxIgorLlRIIExJQlBORyAzICJOb3ZlbWJlciAxOSwgMjAwMCIKIC5TSCBOQU1FCi1saWJwbmcgXC0gUG9ydGFibGUgTmV0d29yayBHcmFwaGljcyAoUE5HKSBSZWZlcmVuY2UgTGlicmFyeSAxLjAuOWJldGExMAorbGlicG5nIFwtIFBvcnRhYmxlIE5ldHdvcmsgR3JhcGhpY3MgKFBORykgUmVmZXJlbmNlIExpYnJhcnkgMS4wLjliZXRhMgogLlNIIFNZTk9QU0lTCiBcZklcZkIKIApAQCAtMTAwLDEwICsxMDAsNiBAQAogCiBcZklcZkIKIAotXGZCcG5nX3VpbnRfMzIgcG5nX2dldF9hc21fZmxhZ3MgKHBuZ19zdHJ1Y3RwIFxmSXBuZ19wdHJcZlBcZkIpO1xmUAotCi1cZklcZkIKLQogXGZCcG5nX2J5dGUgcG5nX2dldF9iaXRfZGVwdGggKHBuZ19zdHJ1Y3RwIFxmUFxmSXBuZ19wdHJcZlBcZkIsIHBuZ19pbmZvcCBcZklpbmZvX3B0clxmUFxmQik7XGZQCiAKIFxmSVxmQgpAQCAtMzM4LDEwICszMzQsNiBAQAogCiBcZklcZkIKIAotXGZCaW50IHBuZ19tbXhfc3VwcG9ydCBcZkkodm9pZFxmUFxmQik7XGZQCi0KLVxmSVxmQgotCiBcZkJ2b2lkIHBuZ19wZXJtaXRfZW1wdHlfcGx0ZSAocG5nX3N0cnVjdHAgXGZQXGZJcG5nX3B0clxmUFxmQiwgaW50IFxmSWVtcHR5X3BsdGVfcGVybWl0dGVkXGZQXGZCKTtcZlAKIAogXGZJXGZCCkBAIC0zOTIsMTAgKzM4NCw2IEBACiAKIFxmSVxmQgogCi1cZkJwbmdfc2V0X2FzbV9mbGFncyAocG5nX3N0cnVjdHAgXGZQXGZJcG5nX3B0clxmUFxmQiwgcG5nX3VpbnRfMzIgXGZJYXNtX2ZsYWdzXGZQXGZCKTtcZlAKLQotXGZJXGZCCi0KIFxmQnZvaWQgcG5nX3NldF9iYWNrZ3JvdW5kIChwbmdfc3RydWN0cCBcZlBcZklwbmdfcHRyXGZQXGZCLCBwbmdfY29sb3JfMTZwIFxmUFxmSWJhY2tncm91bmRfY29sb3JcZlBcZkIsIGludCBcZlBcZkliYWNrZ3JvdW5kX2dhbW1hX2NvZGVcZlBcZkIsIGludCBcZlBcZkluZWVkX2V4cGFuZFxmUFxmQiwgZG91YmxlIFxmSWJhY2tncm91bmRfZ2FtbWFcZlBcZkIpO1xmUAogCiBcZklcZkIKQEAgLTc1OSw3ICs3NDcsNyBAQAogLlNIIExJQlBORy5UWFQKIGxpYnBuZy50eHQgLSBBIGRlc2NyaXB0aW9uIG9uIGhvdyB0byB1c2UgYW5kIG1vZGlmeSBsaWJwbmcKIAotIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQorIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMAogIFVwZGF0ZWQgYW5kIGRpc3RyaWJ1dGVkIGJ5IEdsZW5uIFJhbmRlcnMtUGVocnNvbgogIDxyYW5kZWdAYWx1bS5ycGkuZWR1PgogIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KQEAgLTgyNiw3ICs4MTQsNyBAQAogCiBMaWJwbmcgdXNlcyB6bGliIGZvciBpdHMgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gb2YgUE5HIGZpbGVzLgogRnVydGhlciBpbmZvcm1hdGlvbiBhYm91dCB6bGliLCBhbmQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHpsaWIsIGNhbgotYmUgZm91bmQgYXQgdGhlIHpsaWIgaG9tZSBwYWdlLCA8aHR0cDovL3d3dy5pbmZvLXppcC5vcmcvcHViL2luZm96aXAvemxpYi8+LgorYmUgZm91bmQgYXQgdGhlIHpsaWIgaG9tZSBwYWdlLCA8ZnRwOi8vZnRwLmZyZWVzb2Z0d2FyZS5jb20vcHViL2luZm96aXAvemxpYi8+LgogVGhlIHpsaWIgY29tcHJlc3Npb24gdXRpbGl0eSBpcyBhIGdlbmVyYWwgcHVycG9zZSB1dGlsaXR5IHRoYXQgaXMKIHVzZWZ1bCBmb3IgbW9yZSB0aGFuIFBORyBmaWxlcywgYW5kIGNhbiBiZSB1c2VkIHdpdGhvdXQgbGlicG5nLgogU2VlIHRoZSBkb2N1bWVudGF0aW9uIGRlbGl2ZXJlZCB3aXRoIHpsaWIgZm9yIG1vcmUgZGV0YWlscy4KQEAgLTExMzAsNyArMTExOCw3IEBACiAgICByb3dfcG9pbnRlcnMgPSBwbmdfbWFsbG9jKHBuZ19wdHIsIGhlaWdodCpzaXplb2YocG5nX2J5dGVwKSk7CiAgICBmb3IgKGludCBpPTA7IGk8aGVpZ2h0LCBpKyspCiAgICAgICByb3dfcG9pbnRlcnNbaV09cG5nX21hbGxvYyhwbmdfcHRyLCB3aWR0aCpwaXhlbF9zaXplKTsKLSAgIHBuZ19zZXRfcm93cyhwbmdfcHRyLCBpbmZvX3B0ciwgJnJvd19wb2ludGVycyk7CisgICBwbmdfc2V0X3Jvd3MocG5nX3B0ciwgaW5mb19wdHIsICZyb3dfcG9pbnRlcnMpOyAKIAogQWx0ZXJuYXRpdmVseSB5b3UgY291bGQgYWxsb2NhdGUgeW91ciBpbWFnZSBpbiBvbmUgYmlnIGJsb2NrIGFuZCBkZWZpbmUKIHJvd19wb2ludGVyc1tpXSB0byBwb2ludCBpbnRvIHRoZSBwcm9wZXIgcGxhY2VzIGluIHlvdXIgYmxvY2suCkBAIC0xMTU5LDcgKzExNDcsNyBAQAogCiAgICAgcG5nX2dldF9JSERSKHBuZ19wdHIsIGluZm9fcHRyLCAmd2lkdGgsICZoZWlnaHQsCiAgICAgICAgJmJpdF9kZXB0aCwgJmNvbG9yX3R5cGUsICZpbnRlcmxhY2VfdHlwZSwKLSAgICAgICAmY29tcHJlc3Npb25fdHlwZSwgJmZpbHRlcl9tZXRob2QpOworICAgICAgICZjb21wcmVzc2lvbl90eXBlLCAmZmlsdGVyX3R5cGUpOwogCiAgICAgd2lkdGggICAgICAgICAgLSBob2xkcyB0aGUgd2lkdGggb2YgdGhlIGltYWdlCiAgICAgICAgICAgICAgICAgICAgICBpbiBwaXhlbHMgKHVwIHRvIDJeMzEpLgpAQCAtMTE4NywxOCArMTE3NSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgUE5HX0NPTE9SX01BU0tfQ09MT1IKICAgICAgICAgICAgICAgICAgICAgIFBOR19DT0xPUl9NQVNLX0FMUEhBCiAKLSAgICBmaWx0ZXJfbWV0aG9kICAtIChtdXN0IGJlIFBOR19GSUxURVJfVFlQRV9CQVNFCi0gICAgICAgICAgICAgICAgICAgICBmb3IgUE5HIDEuMCwgYW5kIGNhbiBhbHNvIGJlCi0gICAgICAgICAgICAgICAgICAgICBQTkdfSU5UUkFQSVhFTF9ESUZGRVJFTkNJTkcgaWYKLSAgICAgICAgICAgICAgICAgICAgIHRoZSBQTkcgZGF0YXN0cmVhbSBpcyBlbWJlZGRlZCBpbgotICAgICAgICAgICAgICAgICAgICAgYSBNTkctMS4wIGRhdGFzdHJlYW0pCisgICAgZmlsdGVyX3R5cGUgICAgLSAobXVzdCBiZSBQTkdfRklMVEVSX1RZUEVfQkFTRQorICAgICAgICAgICAgICAgICAgICAgZm9yIFBORyAxLjApCiAgICAgY29tcHJlc3Npb25fdHlwZSAtIChtdXN0IGJlIFBOR19DT01QUkVTU0lPTl9UWVBFX0JBU0UKICAgICAgICAgICAgICAgICAgICAgIGZvciBQTkcgMS4wKQogICAgIGludGVybGFjZV90eXBlIC0gKFBOR19JTlRFUkxBQ0VfTk9ORSBvcgogICAgICAgICAgICAgICAgICAgICAgUE5HX0lOVEVSTEFDRV9BREFNNykKICAgICBBbnkgb3IgYWxsIG9mIGludGVybGFjZV90eXBlLCBjb21wcmVzc2lvbl90eXBlLCBvZgotICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX21ldGhvZCBjYW4gYmUgTlVMTCBpZiB5b3UgYXJlCi0gICAgICAgICAgICAgICAgICAgICBub3QgaW50ZXJlc3RlZCBpbiB0aGVpciB2YWx1ZXMuCisgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfdHlwZSBjYW4gYmUgTlVMTCBpZiB5b3UgYXJlIG5vdAorICAgICAgICAgICAgICAgICAgICAgaW50ZXJlc3RlZCBpbiB0aGVpciB2YWx1ZXMuCiAKICAgICBjaGFubmVscyA9IHBuZ19nZXRfY2hhbm5lbHMocG5nX3B0ciwgaW5mb19wdHIpOwogICAgIGNoYW5uZWxzICAgICAgIC0gbnVtYmVyIG9mIGNoYW5uZWxzIG9mIGluZm8gZm9yIHRoZQpAQCAtMTIyOCw3ICsxMjEzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvX3B0cik7CiAgICAgY29sb3JfdHlwZSAgICAgICA9IHBuZ19nZXRfY29sb3JfdHlwZShwbmdfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fcHRyKTsKLSAgICBmaWx0ZXJfbWV0aG9kICAgID0gcG5nX2dldF9maWx0ZXJfdHlwZShwbmdfcHRyLAorICAgIGZpbHRlcl90eXBlICAgICAgPSBwbmdfZ2V0X2ZpbHRlcl90eXBlKHBuZ19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19wdHIpOwogICAgIGNvbXByZXNzaW9uX3R5cGUgPSBwbmdfZ2V0X2NvbXByZXNzaW9uX3R5cGUocG5nX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvX3B0cik7CkBAIC0xMzI2LDcgKzEzMTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIChlbXB0eSBzdHJpbmcgZm9yIHVua25vd24pLgogICAgIG51bV90ZXh0ICAgICAgIC0gbnVtYmVyIG9mIGNvbW1lbnRzIChzYW1lIGFzIG51bV9jb21tZW50czsKICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gcHV0IE5VTEwgaGVyZSB0byBhdm9pZCB0aGUgZHVwbGljYXRpb24pCi0gICAgTm90ZSB3aGlsZSBwbmdfc2V0X3RleHQoKSB3aWxsIGFjY2VwdCB0ZXh0LCBsYW5ndWFnZSwgYW5kCisgICAgTm90ZSB3aGlsZSBwbmdfc2V0X3RleHQoKSB3aWxsIGFjY2VwdCB0ZXh0LCBsYW5ndWFnZSwgYW5kIAogICAgIHRyYW5zbGF0ZWQga2V5d29yZHMgdGhhdCBjYW4gYmUgTlVMTCBwb2ludGVycywgdGhlIHN0cnVjdHVyZQogICAgIHJldHVybmVkIGJ5IHBuZ19nZXRfdGV4dCB3aWxsIGFsd2F5cyBjb250YWluIHJlZ3VsYXIKICAgICB6ZXJvLXRlcm1pbmF0ZWQgQyBzdHJpbmdzLiAgVGhleSBtaWdodCBiZSBlbXB0eSBzdHJpbmdzIGJ1dApAQCAtMTcyMSw3ICsxNzA2LDcgQEAKICAgICAgIGlmIChwbmdfZ2V0X3ZhbGlkKHBuZ19wdHIsIGluZm9fcHRyLAogICAgICAgICAgUE5HX0lORk9fUExURSkpCiAgICAgICB7Ci0gICAgICAgICBwbmdfdWludF8xNnAgaGlzdG9ncmFtOworICAgICAgICAgcG5nX2NvbG9yXzE2cCBoaXN0b2dyYW07CiAKICAgICAgICAgIHBuZ19nZXRfaElTVChwbmdfcHRyLCBpbmZvX3B0ciwKICAgICAgICAgICAgICZoaXN0b2dyYW0pOwpAQCAtMjAwOSw3ICsxOTk0LDcgQEAKICAgICBwbmdfc2V0X2ludmFsaWQocG5nX3B0ciwgaW5mb19wdHIsIG1hc2spOwogICAgIG1hc2sgLSBpZGVudGlmaWVzIHRoZSBjaHVua3MgdG8gYmUgbWFkZSBpbnZhbGlkLAogICAgICAgICAgICBjb250YWluaW5nIHRoZSBsb2dpY2FsIE9SIG9mIG9uZSBvcgotICAgICAgICAgICBtb3JlIG9mCisgICAgICAgICAgIG1vcmUgb2YgCiAgICAgICAgICAgICAgUE5HX0lORk9fZ0FNQSwgUE5HX0lORk9fc0JJVCwKICAgICAgICAgICAgICBQTkdfSU5GT19jSFJNLCBQTkdfSU5GT19QTFRFLAogICAgICAgICAgICAgIFBOR19JTkZPX3RSTlMsIFBOR19JTkZPX2JLR0QsCkBAIC0yMzAxLDExICsyMjg2LDEwIEBACiBoYXZlIG5vIHNwZWNpYWwgbmVlZHMgaW4gdGhpcyBhcmVhLCBsZXQgdGhlIGxpYnJhcnkgZG8gd2hhdCBpdCB3YW50cyBieQogbm90IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhdCBhbGwsIGFzIGl0IGhhcyBiZWVuIHR1bmVkIHRvIGRlbGl2ZXIgYSBnb29kCiBzcGVlZC9jb21wcmVzc2lvbiByYXRpby4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gcG5nX3NldF9maWx0ZXIoKSBpcwotdGhlIGZpbHRlciBtZXRob2QsIGZvciB3aGljaCB0aGUgb25seSB2YWxpZCB2YWx1ZXMgYXJlIDAgKGFzIG9mIHRoZQotSnVseSAxOTk5IFBORyBzcGVjaWZpY2F0aW9uLCB2ZXJzaW9uIDEuMikgb3IgNjQgKGlmIHlvdSBhcmUgd3JpdGluZwotYSBQTkcgZGF0YXN0cmVhbSB0aGF0IGlzIHRvIGJlIGVtYmVkZGVkIGluIGEgTU5HIGRhdGFzdHJlYW0pLiAgVGhlIHRoaXJkCi1wYXJhbWV0ZXIgaXMgYSBmbGFnIHRoYXQgaW5kaWNhdGVzIHdoaWNoIGZpbHRlciB0eXBlKHMpIGFyZSB0byBiZSB0ZXN0ZWQKLWZvciBlYWNoIHNjYW5saW5lLiAgU2VlIHRoZSBQTkcgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscyBvbiB0aGUgc3BlY2lmaWMgZmlsdGVyCit0aGUgZmlsdGVyIG1ldGhvZCwgZm9yIHdoaWNoIHRoZSBvbmx5IHZhbGlkIHZhbHVlIGlzICcwJyAoYXMgb2YgdGhlCitKdWx5IDE5OTkgUE5HIHNwZWNpZmljYXRpb24sIHZlcnNpb24gMS4yKS4gIFRoZSB0aGlyZCBwYXJhbWV0ZXIgaXMgYQorZmxhZyB0aGF0IGluZGljYXRlcyB3aGljaCBmaWx0ZXIgdHlwZShzKSBhcmUgdG8gYmUgdGVzdGVkIGZvciBlYWNoCitzY2FubGluZS4gIFNlZSB0aGUgUE5HIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gdGhlIHNwZWNpZmljIGZpbHRlcgogdHlwZXMuCiAKIApAQCAtMjMyNiw5ICsyMzEwLDYgQEAKIHJvdyBvZiBwaXhlbHMgd2lsbCBiZSBzdG9yZWQgaW4gY2FzZSBpdCdzIG5lZWRlZCBsYXRlciksIGFuZCB0aGVuIGFkZAogYW5kIHJlbW92ZSB0aGVtIGFmdGVyIHRoZSBzdGFydCBvZiBjb21wcmVzc2lvbi4KIAotSWYgeW91IGFyZSB3cml0aW5nIGEgUE5HIGRhdGFzdHJlYW0gdGhhdCBpcyB0byBiZSBlbWJlZGRlZCBpbiBhIE1ORwotZGF0YXN0cmVhbSwgdGhlIHNlY29uZCBwYXJhbWV0ZXIgY2FuIGJlIGVpdGhlciAwIG9yIDY0LgotCiBUaGUgcG5nX3NldF9jb21wcmVzc2lvbl8qKCkgZnVuY3Rpb25zIGludGVyZmFjZSB0byB0aGUgemxpYiBjb21wcmVzc2lvbgogbGlicmFyeSwgYW5kIHNob3VsZCBtb3N0bHkgYmUgaWdub3JlZCB1bmxlc3MgeW91IHJlYWxseSBrbm93IHdoYXQgeW91IGFyZQogZG9pbmcuICBUaGUgb25seSBnZW5lcmFsbHkgdXNlZnVsIGNhbGwgaXMgcG5nX3NldF9jb21wcmVzc2lvbl9sZXZlbCgpCkBAIC0yMzY3LDcgKzIzNDgsNyBAQAogCiAgICAgcG5nX3NldF9JSERSKHBuZ19wdHIsIGluZm9fcHRyLCB3aWR0aCwgaGVpZ2h0LAogICAgICAgIGJpdF9kZXB0aCwgY29sb3JfdHlwZSwgaW50ZXJsYWNlX3R5cGUsCi0gICAgICAgY29tcHJlc3Npb25fdHlwZSwgZmlsdGVyX21ldGhvZCkKKyAgICAgICBjb21wcmVzc2lvbl90eXBlLCBmaWx0ZXJfdHlwZSkKICAgICB3aWR0aCAgICAgICAgICAtIGhvbGRzIHRoZSB3aWR0aCBvZiB0aGUgaW1hZ2UKICAgICAgICAgICAgICAgICAgICAgIGluIHBpeGVscyAodXAgdG8gMl4zMSkuCiAgICAgaGVpZ2h0ICAgICAgICAgLSBob2xkcyB0aGUgaGVpZ2h0IG9mIHRoZSBpbWFnZQpAQCAtMjM5OSwxMSArMjM4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICBQTkdfSU5URVJMQUNFX0FEQU03CiAgICAgY29tcHJlc3Npb25fdHlwZSAtIChtdXN0IGJlCiAgICAgICAgICAgICAgICAgICAgICBQTkdfQ09NUFJFU1NJT05fVFlQRV9ERUZBVUxUKQotICAgIGZpbHRlcl9tZXRob2QgIC0gKG11c3QgYmUgUE5HX0ZJTFRFUl9UWVBFX0RFRkFVTFQKLSAgICAgICAgICAgICAgICAgICAgIG9yLCBpZiB5b3UgYXJlIHdyaXRpbmcgYSBQTkcgdG8KLSAgICAgICAgICAgICAgICAgICAgIGJlIGVtYmVkZGVkIGluIGEgTU5HIGRhdGFzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICBjYW4gYWxzbyBiZQotICAgICAgICAgICAgICAgICAgICAgUE5HX0lOVFJBUElYRUxfRElGRkVSRU5DSU5HKQorICAgIGZpbHRlcl90eXBlICAgIC0gKG11c3QgYmUgUE5HX0ZJTFRFUl9UWVBFX0RFRkFVTFQpCiAKICAgICBwbmdfc2V0X1BMVEUocG5nX3B0ciwgaW5mb19wdHIsIHBhbGV0dGUsCiAgICAgICAgbnVtX3BhbGV0dGUpOwpAQCAtMzAwMSwyMiArMjk3OCwxMyBAQAogCiAuU0ggVi4gTW9kaWZ5aW5nL0N1c3RvbWl6aW5nIGxpYnBuZzoKIAotVGhlcmUgYXJlIHRocmVlIGlzc3VlcyBoZXJlLiAgVGhlIGZpcnN0IGlzIGNoYW5naW5nIGhvdyBsaWJwbmcgZG9lcworVGhlcmUgYXJlIHR3byBpc3N1ZXMgaGVyZS4gIFRoZSBmaXJzdCBpcyBjaGFuZ2luZyBob3cgbGlicG5nIGRvZXMKIHN0YW5kYXJkIHRoaW5ncyBsaWtlIG1lbW9yeSBhbGxvY2F0aW9uLCBpbnB1dC9vdXRwdXQsIGFuZCBlcnJvciBoYW5kbGluZy4KIFRoZSBzZWNvbmQgZGVhbHMgd2l0aCBtb3JlIGNvbXBsaWNhdGVkIHRoaW5ncyBsaWtlIGFkZGluZyBuZXcgY2h1bmtzLAogYWRkaW5nIG5ldyB0cmFuc2Zvcm1hdGlvbnMsIGFuZCBnZW5lcmFsbHkgY2hhbmdpbmcgaG93IGxpYnBuZyB3b3Jrcy4KLUJvdGggb2YgdGhvc2UgYXJlIGNvbXBpbGUtdGltZSBpc3N1ZXM7IHRoYXQgaXMsIHRoZXkgYXJlIGdlbmVyYWxseQotZGV0ZXJtaW5lZCBhdCB0aGUgdGltZSB0aGUgY29kZSBpcyB3cml0dGVuLCBhbmQgdGhlcmUgaXMgcmFyZWx5IGEgbmVlZAotdG8gcHJvdmlkZSB0aGUgdXNlciB3aXRoIGEgbWVhbnMgb2YgY2hhbmdpbmcgdGhlbS4gIFRoZSB0aGlyZCBpcyBhCi1ydW4tdGltZSBpc3N1ZTogIGNob29zaW5nIGJldHdlZW4gYW5kL29yIHR1bmluZyBvbmUgb3IgbW9yZSBhbHRlcm5hdGUKLXZlcnNpb25zIG9mIGNvbXB1dGF0aW9uYWxseSBpbnRlbnNpdmUgcm91dGluZXM7IHNwZWNpZmljYWxseSwgb3B0aW1pemVkCi1hc3NlbWJseS1sYW5ndWFnZSAoYW5kIHRoZXJlZm9yZSBjb21waWxlci0gYW5kIHBsYXRmb3JtLWRlcGVuZGVudCkKLXZlcnNpb25zLgotCi1NZW1vcnkgYWxsb2NhdGlvbiwgaW5wdXQvb3V0cHV0LCBhbmQgZXJyb3IgaGFuZGxpbmcKIAogQWxsIG9mIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiwgaW5wdXQvb3V0cHV0LCBhbmQgZXJyb3IgaGFuZGxpbmcgaW4gbGlicG5nCi1nb2VzIHRocm91Z2ggY2FsbGJhY2tzIHRoYXQgYXJlIHVzZXItc2V0dGFibGUuICBUaGUgZGVmYXVsdCByb3V0aW5lcyBhcmUKK2dvZXMgdGhyb3VnaCBjYWxsYmFja3MgdGhhdCBhcmUgdXNlciBzZXR0YWJsZS4gIFRoZSBkZWZhdWx0IHJvdXRpbmVzIGFyZQogaW4gcG5nbWVtLmMsIHBuZ3Jpby5jLCBwbmd3aW8uYywgYW5kIHBuZ2Vycm9yLmMsIHJlc3BlY3RpdmVseS4gIFRvIGNoYW5nZQogdGhlc2UgZnVuY3Rpb25zLCBjYWxsIHRoZSBhcHByb3ByaWF0ZSBwbmdfc2V0XypfZm4oKSBmdW5jdGlvbi4KIApAQCAtMzI0OSwxMCArMzIxNyw2IEBACiAKICAgICBwbmdfc2V0X2ZpbHRlcihwbmdfcHRyLCBQTkdfRklMVEVSX1RZUEVfQkFTRSwKICAgICAgICBmaWx0ZXJzKTsKLSAgICAgICAgICAgICAgVGhlIHNlY29uZCBwYXJhbWV0ZXIgY2FuIGFsc28gYmUgUE5HX0lOVFJBUElYRUxfRElGRkVSRU5DSU5HCi0gICAgICAgICAgICAgIGlmIHlvdSBhcmUgd3JpdGluZyBhIFBORyB0byBiZSBlbWJlZGRlZCBpbiBhIE1ORwotICAgICAgICAgICAgICBkYXRhc3RyZWFtLiAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUKLSAgICAgICAgICAgICAgdmFsdWUgb2YgZmlsdGVyX21ldGhvZCB1c2VkIGluIHBuZ19zZXRfSUhEUigpLgogCiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGluZmx1ZW5jZSBob3cgbGlicG5nIGNob29zZXMgZnJvbSBhbW9uZyB0aGUKIGF2YWlsYWJsZSBmaWx0ZXJzLiAgVGhpcyBpcyBkb25lIGluIHR3byB3YXlzIC0gYnkgdGVsbGluZyBpdCBob3cKQEAgLTMzNjQsMzMgKzMzMjgsNyBAQAogaGF2aW5nIGxldmVsID0gMCB3aWxsIGJlIHByaW50ZWQuICBUaGVyZSBhcmVuJ3QgYW55IHN1Y2ggc3RhdGVtZW50cyBpbgogdGhpcyB2ZXJzaW9uIG9mIGxpYnBuZywgYnV0IGlmIHlvdSBpbnNlcnQgc29tZSB0aGV5IHdpbGwgYmUgcHJpbnRlZC4KIAotCi0uU0ggVkkuICBNTkcgc3VwcG9ydAotCi1UaGUgTU5HIHNwZWNpZmljYXRpb24gKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmxpYnBuZy5vcmcvcHViL21uZykgYWxsb3dzCi1jZXJ0YWluIGV4dGVuc2lvbnMgdG8gUE5HIGZvciBQTkcgaW1hZ2VzIHRoYXQgYXJlIGVtYmVkZGVkIGluIE1ORyBkYXRhc3RyZWFtcy4KLUxpYnBuZyBjYW4gc3VwcG9ydCBzb21lIG9mIHRoZXNlIGV4dGVuc2lvbnMuICBUbyBlbmFibGUgdGhlbSwgdXNlIHRoZQotcG5nX3Blcm1pdF9tbmdfZmVhdHVyZXMoKSBmdW5jdGlvbjoKLQotICAgZmVhdHVyZV9zZXQgPSBwbmdfcGVybWl0X21uZ19mZWF0dXJlcyhwbmdfcHRyLCBtYXNrKQotICAgbWFzayBpcyBhIHBuZ191aW50XzMyIGNvbnRhaW5pbmcgdGhlIGxvZ2ljYWwgT1Igb2YgdGhlCi0gICAgICAgIGZlYXR1cmVzIHlvdSB3YW50IHRvIGVuYWJsZS4gIFRoZXNlIGluY2x1ZGUKLSAgICAgICAgUE5HX0ZMQUdfTU5HX0VNUFRZX1BMVEUKLSAgICAgICAgUE5HX0ZMQUdfTU5HX0ZJTFRFUl82NAotICAgICAgICBQTkdfQUxMX01OR19GRUFUVVJFUwotICAgZmVhdHVyZV9zZXQgaXMgYSBwbmdfMzJfdWludCB0aGF0IGlzIHRoZSBsb2dpY2FsIEFORCBvZgotICAgICAgeW91ciBtYXNrIHdpdGggdGhlIHNldCBvZiBNTkcgZmVhdHVyZXMgdGhhdCBpcwotICAgICAgc3VwcG9ydGVkIGJ5IHRoZSB2ZXJzaW9uIG9mIGxpYnBuZyB0aGF0IHlvdSBhcmUgdXNpbmcuCi0KLUl0IGlzIGFuIGVycm9yIHRvIHVzZSB0aGlzIGZ1bmN0aW9uIHdoZW4gcmVhZGluZyBvciB3cml0aW5nIGEgc3RhbmRhbG9uZQotUE5HIGZpbGUgd2l0aCB0aGUgUE5HIDgtYnl0ZSBzaWduYXR1cmUuICBUaGUgUE5HIGRhdGFzdHJlYW0gbXVzdCBiZSB3cmFwcGVkCi1pbiBhIE1ORyBkYXRhc3RyZWFtLiAgQXMgYSBtaW5pbXVtLCBpdCBtdXN0IGhhdmUgdGhlIE1ORyA4LWJ5dGUgc2lnbmF0dXJlCi1hbmQgdGhlIE1IRFIgYW5kIE1FTkQgY2h1bmtzLiAgTGlicG5nIGRvZXMgbm90IHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlc2UKLW9yIGFueSBvdGhlciBNTkcgY2h1bmtzOyB5b3VyIGFwcGxpY2F0aW9uIG11c3QgcHJvdmlkZSBpdHMgb3duIHN1cHBvcnQgZm9yCi10aGVtLiAgWW91IG1heSB3aXNoIHRvIGNvbnNpZGVyIHVzaW5nIGxpYm1uZyAoYXZhaWxhYmxlIGF0Ci1odHRwOi8vd3d3LmxpYm1uZy5jb20pIGluc3RlYWQuCi0KLS5TSCBWSUkuICBDaGFuZ2VzIHRvIExpYnBuZyBmcm9tIHZlcnNpb24gMC44OAorLlNIIFZJLiAgQ2hhbmdlcyB0byBMaWJwbmcgZnJvbSB2ZXJzaW9uIDAuODgKIAogSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgdmVyc2lvbnMgb2YgbGlicG5nIGxhdGVyIHRoYW4gMC45NiBhcmUgbm90CiBkaXN0cmlidXRlZCBieSB0aGUgb3JpZ2luYWwgbGlicG5nIGF1dGhvciwgR3V5IFNjaGFsbmF0LCBub3IgYnkKQEAgLTM0MzksMTUgKzMzNzcsMTUgQEAKIAogICAgcG5nX3VpbnRfMzIgYXBwbGljYXRpb25fdm4gPSBQTkdfTElCUE5HX1ZFUjsKIAotLlNIIFZJSUkuIFkySyBDb21wbGlhbmNlIGluIGxpYnBuZworLlNIIFZJSS4gWTJLIENvbXBsaWFuY2UgaW4gbGlicG5nCiAKLUphbnVhcnkgMTYsIDIwMDEKK05vdmVtYmVyIDE5LCAyMDAwCiAKIFNpbmNlIHRoZSBQTkcgRGV2ZWxvcG1lbnQgZ3JvdXAgaXMgYW4gYWQtaG9jIGJvZHksIHdlIGNhbid0IG1ha2UKIGFuIG9mZmljaWFsIGRlY2xhcmF0aW9uLgogCiBUaGlzIGlzIHlvdXIgdW5vZmZpY2lhbCBhc3N1cmFuY2UgdGhhdCBsaWJwbmcgZnJvbSB2ZXJzaW9uIDAuNzEgYW5kCi11cHdhcmQgdGhyb3VnaCAxLjAuOWJldGExMCBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKK3Vwd2FyZCB0aHJvdWdoIDEuMC45YmV0YTIgYXJlIFkySyBjb21wbGlhbnQuICBJdCBpcyBteSBiZWxpZWYgdGhhdCBlYXJsaWVyCiB2ZXJzaW9ucyB3ZXJlIGFsc28gWTJLIGNvbXBsaWFudC4KIAogTGlicG5nIG9ubHkgaGFzIHRocmVlIHllYXIgZmllbGRzLiAgT25lIGlzIGEgMi1ieXRlIHVuc2lnbmVkIGludGVnZXIgdGhhdApAQCAtMzU4OCw3ICszNTI2LDcgQEAKIAogVGhhbmtzIHRvIEZyYW5rIEouIFQuIFdvamNpayBmb3IgaGVscGluZyB3aXRoIHRoZSBkb2N1bWVudGF0aW9uLgogCi1MaWJwbmcgdmVyc2lvbiAxLjAuOWJldGExMCAtIEphbnVhcnkgMTYsIDIwMDE6CitMaWJwbmcgdmVyc2lvbiAxLjAuOWJldGEyIC0gTm92ZW1iZXIgMTksIDIwMDA6CiBJbml0aWFsbHkgY3JlYXRlZCBpbiAxOTk1IGJ5IEd1eSBFcmljIFNjaGFsbmF0LCB0aGVuIG9mIEdyb3VwIDQyLCBJbmMuCiBDdXJyZW50bHkgbWFpbnRhaW5lZCBieSBHbGVubiBSYW5kZXJzLVBlaHJzb24gKHJhbmRlZ0BhbHVtLnJwaS5lZHUpLgogCkBAIC0zNjA1LDcgKzM1NDMsNyBAQAogSWYgeW91IG1vZGlmeSBsaWJwbmcgeW91IG1heSBpbnNlcnQgYWRkaXRpb25hbCBub3RpY2VzIGltbWVkaWF0ZWx5IGZvbGxvd2luZwogdGhpcyBzZW50ZW5jZS4KIAotbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggIDEuMC45YmV0YTEwLCBKYW51YXJ5IDE2LCAyMDAxLCBhcmUKK2xpYnBuZyB2ZXJzaW9ucyAxLjAuNywgSnVseSAxLCAyMDAwLCB0aHJvdWdoICAxLjAuOWJldGEyLCBOb3ZlbWJlciAxOSwgMjAwMCwgYXJlCiBDb3B5cmlnaHQgKGMpIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uLCBhbmQgYXJlCiBkaXN0cmlidXRlZCBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgZGlzY2xhaW1lciBhbmQgbGljZW5zZSBhcyBsaWJwbmctMS4wLjYKIHdpdGggdGhlIGZvbGxvd2luZyBpbmRpdmlkdWFscyBhZGRlZCB0byB0aGUgbGlzdCBvZiBDb250cmlidXRpbmcgQXV0aG9ycwpAQCAtMzY5Niw3ICszNjM0LDcgQEAKIAogR2xlbm4gUmFuZGVycy1QZWhyc29uCiByYW5kZWdAYWx1bS5ycGkuZWR1Ci1KYW51YXJ5IDE2LCAyMDAxCitOb3ZlbWJlciAxOSwgMjAwMAogCiAuXCIgZW5kIG9mIG1hbiBwYWdlCiAKZGlmZiAtLWdpdCBhL2xpYnBuZy50eHQgYi9saWJwbmcudHh0CmluZGV4IDljMDFmODYuLmU5NWFkMDAgMTAwNjQ0Ci0tLSBhL2xpYnBuZy50eHQKKysrIGIvbGlicG5nLnR4dApAQCAtMSw2ICsxLDYgQEAKIGxpYnBuZy50eHQgLSBBIGRlc2NyaXB0aW9uIG9uIGhvdyB0byB1c2UgYW5kIG1vZGlmeSBsaWJwbmcKIAotIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQorIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMAogIFVwZGF0ZWQgYW5kIGRpc3RyaWJ1dGVkIGJ5IEdsZW5uIFJhbmRlcnMtUGVocnNvbgogIDxyYW5kZWdAYWx1bS5ycGkuZWR1PgogIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KQEAgLTY3LDcgKzY3LDcgQEAKIAogTGlicG5nIHVzZXMgemxpYiBmb3IgaXRzIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIG9mIFBORyBmaWxlcy4KIEZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQgemxpYiwgYW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB6bGliLCBjYW4KLWJlIGZvdW5kIGF0IHRoZSB6bGliIGhvbWUgcGFnZSwgPGh0dHA6Ly93d3cuaW5mby16aXAub3JnL3B1Yi9pbmZvemlwL3psaWIvPi4KK2JlIGZvdW5kIGF0IHRoZSB6bGliIGhvbWUgcGFnZSwgPGZ0cDovL2Z0cC5mcmVlc29mdHdhcmUuY29tL3B1Yi9pbmZvemlwL3psaWIvPi4KIFRoZSB6bGliIGNvbXByZXNzaW9uIHV0aWxpdHkgaXMgYSBnZW5lcmFsIHB1cnBvc2UgdXRpbGl0eSB0aGF0IGlzCiB1c2VmdWwgZm9yIG1vcmUgdGhhbiBQTkcgZmlsZXMsIGFuZCBjYW4gYmUgdXNlZCB3aXRob3V0IGxpYnBuZy4KIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBkZWxpdmVyZWQgd2l0aCB6bGliIGZvciBtb3JlIGRldGFpbHMuCkBAIC0zNzEsNyArMzcxLDcgQEAKICAgIHJvd19wb2ludGVycyA9IHBuZ19tYWxsb2MocG5nX3B0ciwgaGVpZ2h0KnNpemVvZihwbmdfYnl0ZXApKTsKICAgIGZvciAoaW50IGk9MDsgaTxoZWlnaHQsIGkrKykKICAgICAgIHJvd19wb2ludGVyc1tpXT1wbmdfbWFsbG9jKHBuZ19wdHIsIHdpZHRoKnBpeGVsX3NpemUpOwotICAgcG5nX3NldF9yb3dzKHBuZ19wdHIsIGluZm9fcHRyLCAmcm93X3BvaW50ZXJzKTsKKyAgIHBuZ19zZXRfcm93cyhwbmdfcHRyLCBpbmZvX3B0ciwgJnJvd19wb2ludGVycyk7IAogCiBBbHRlcm5hdGl2ZWx5IHlvdSBjb3VsZCBhbGxvY2F0ZSB5b3VyIGltYWdlIGluIG9uZSBiaWcgYmxvY2sgYW5kIGRlZmluZQogcm93X3BvaW50ZXJzW2ldIHRvIHBvaW50IGludG8gdGhlIHByb3BlciBwbGFjZXMgaW4geW91ciBibG9jay4KQEAgLTQwMCw3ICs0MDAsNyBAQAogCiAgICAgcG5nX2dldF9JSERSKHBuZ19wdHIsIGluZm9fcHRyLCAmd2lkdGgsICZoZWlnaHQsCiAgICAgICAgJmJpdF9kZXB0aCwgJmNvbG9yX3R5cGUsICZpbnRlcmxhY2VfdHlwZSwKLSAgICAgICAmY29tcHJlc3Npb25fdHlwZSwgJmZpbHRlcl9tZXRob2QpOworICAgICAgICZjb21wcmVzc2lvbl90eXBlLCAmZmlsdGVyX3R5cGUpOwogCiAgICAgd2lkdGggICAgICAgICAgLSBob2xkcyB0aGUgd2lkdGggb2YgdGhlIGltYWdlCiAgICAgICAgICAgICAgICAgICAgICBpbiBwaXhlbHMgKHVwIHRvIDJeMzEpLgpAQCAtNDI4LDE4ICs0MjgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgIFBOR19DT0xPUl9NQVNLX0NPTE9SCiAgICAgICAgICAgICAgICAgICAgICBQTkdfQ09MT1JfTUFTS19BTFBIQQogCi0gICAgZmlsdGVyX21ldGhvZCAgLSAobXVzdCBiZSBQTkdfRklMVEVSX1RZUEVfQkFTRQotICAgICAgICAgICAgICAgICAgICAgZm9yIFBORyAxLjAsIGFuZCBjYW4gYWxzbyBiZQotICAgICAgICAgICAgICAgICAgICAgUE5HX0lOVFJBUElYRUxfRElGRkVSRU5DSU5HIGlmCi0gICAgICAgICAgICAgICAgICAgICB0aGUgUE5HIGRhdGFzdHJlYW0gaXMgZW1iZWRkZWQgaW4KLSAgICAgICAgICAgICAgICAgICAgIGEgTU5HLTEuMCBkYXRhc3RyZWFtKQorICAgIGZpbHRlcl90eXBlICAgIC0gKG11c3QgYmUgUE5HX0ZJTFRFUl9UWVBFX0JBU0UKKyAgICAgICAgICAgICAgICAgICAgIGZvciBQTkcgMS4wKQogICAgIGNvbXByZXNzaW9uX3R5cGUgLSAobXVzdCBiZSBQTkdfQ09NUFJFU1NJT05fVFlQRV9CQVNFCiAgICAgICAgICAgICAgICAgICAgICBmb3IgUE5HIDEuMCkKICAgICBpbnRlcmxhY2VfdHlwZSAtIChQTkdfSU5URVJMQUNFX05PTkUgb3IKICAgICAgICAgICAgICAgICAgICAgIFBOR19JTlRFUkxBQ0VfQURBTTcpCiAgICAgQW55IG9yIGFsbCBvZiBpbnRlcmxhY2VfdHlwZSwgY29tcHJlc3Npb25fdHlwZSwgb2YKLSAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9tZXRob2QgY2FuIGJlIE5VTEwgaWYgeW91IGFyZQotICAgICAgICAgICAgICAgICAgICAgbm90IGludGVyZXN0ZWQgaW4gdGhlaXIgdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX3R5cGUgY2FuIGJlIE5VTEwgaWYgeW91IGFyZSBub3QKKyAgICAgICAgICAgICAgICAgICAgIGludGVyZXN0ZWQgaW4gdGhlaXIgdmFsdWVzLgogCiAgICAgY2hhbm5lbHMgPSBwbmdfZ2V0X2NoYW5uZWxzKHBuZ19wdHIsIGluZm9fcHRyKTsKICAgICBjaGFubmVscyAgICAgICAtIG51bWJlciBvZiBjaGFubmVscyBvZiBpbmZvIGZvciB0aGUKQEAgLTQ2OSw3ICs0NjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fcHRyKTsKICAgICBjb2xvcl90eXBlICAgICAgID0gcG5nX2dldF9jb2xvcl90eXBlKHBuZ19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19wdHIpOwotICAgIGZpbHRlcl9tZXRob2QgICAgPSBwbmdfZ2V0X2ZpbHRlcl90eXBlKHBuZ19wdHIsCisgICAgZmlsdGVyX3R5cGUgICAgICA9IHBuZ19nZXRfZmlsdGVyX3R5cGUocG5nX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvX3B0cik7CiAgICAgY29tcHJlc3Npb25fdHlwZSA9IHBuZ19nZXRfY29tcHJlc3Npb25fdHlwZShwbmdfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fcHRyKTsKQEAgLTU2Nyw3ICs1NjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIChlbXB0eSBzdHJpbmcgZm9yIHVua25vd24pLgogICAgIG51bV90ZXh0ICAgICAgIC0gbnVtYmVyIG9mIGNvbW1lbnRzIChzYW1lIGFzIG51bV9jb21tZW50czsKICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gcHV0IE5VTEwgaGVyZSB0byBhdm9pZCB0aGUgZHVwbGljYXRpb24pCi0gICAgTm90ZSB3aGlsZSBwbmdfc2V0X3RleHQoKSB3aWxsIGFjY2VwdCB0ZXh0LCBsYW5ndWFnZSwgYW5kCisgICAgTm90ZSB3aGlsZSBwbmdfc2V0X3RleHQoKSB3aWxsIGFjY2VwdCB0ZXh0LCBsYW5ndWFnZSwgYW5kIAogICAgIHRyYW5zbGF0ZWQga2V5d29yZHMgdGhhdCBjYW4gYmUgTlVMTCBwb2ludGVycywgdGhlIHN0cnVjdHVyZQogICAgIHJldHVybmVkIGJ5IHBuZ19nZXRfdGV4dCB3aWxsIGFsd2F5cyBjb250YWluIHJlZ3VsYXIKICAgICB6ZXJvLXRlcm1pbmF0ZWQgQyBzdHJpbmdzLiAgVGhleSBtaWdodCBiZSBlbXB0eSBzdHJpbmdzIGJ1dApAQCAtOTYyLDcgKzk1OSw3IEBACiAgICAgICBpZiAocG5nX2dldF92YWxpZChwbmdfcHRyLCBpbmZvX3B0ciwKICAgICAgICAgIFBOR19JTkZPX1BMVEUpKQogICAgICAgewotICAgICAgICAgcG5nX3VpbnRfMTZwIGhpc3RvZ3JhbTsKKyAgICAgICAgIHBuZ19jb2xvcl8xNnAgaGlzdG9ncmFtOwogCiAgICAgICAgICBwbmdfZ2V0X2hJU1QocG5nX3B0ciwgaW5mb19wdHIsCiAgICAgICAgICAgICAmaGlzdG9ncmFtKTsKQEAgLTEyNTAsNyArMTI0Nyw3IEBACiAgICAgcG5nX3NldF9pbnZhbGlkKHBuZ19wdHIsIGluZm9fcHRyLCBtYXNrKTsKICAgICBtYXNrIC0gaWRlbnRpZmllcyB0aGUgY2h1bmtzIHRvIGJlIG1hZGUgaW52YWxpZCwKICAgICAgICAgICAgY29udGFpbmluZyB0aGUgbG9naWNhbCBPUiBvZiBvbmUgb3IKLSAgICAgICAgICAgbW9yZSBvZgorICAgICAgICAgICBtb3JlIG9mIAogICAgICAgICAgICAgIFBOR19JTkZPX2dBTUEsIFBOR19JTkZPX3NCSVQsCiAgICAgICAgICAgICAgUE5HX0lORk9fY0hSTSwgUE5HX0lORk9fUExURSwKICAgICAgICAgICAgICBQTkdfSU5GT190Uk5TLCBQTkdfSU5GT19iS0dELApAQCAtMTU0MiwxMSArMTUzOSwxMCBAQAogaGF2ZSBubyBzcGVjaWFsIG5lZWRzIGluIHRoaXMgYXJlYSwgbGV0IHRoZSBsaWJyYXJ5IGRvIHdoYXQgaXQgd2FudHMgYnkKIG5vdCBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gYXQgYWxsLCBhcyBpdCBoYXMgYmVlbiB0dW5lZCB0byBkZWxpdmVyIGEgZ29vZAogc3BlZWQvY29tcHJlc3Npb24gcmF0aW8uIFRoZSBzZWNvbmQgcGFyYW1ldGVyIHRvIHBuZ19zZXRfZmlsdGVyKCkgaXMKLXRoZSBmaWx0ZXIgbWV0aG9kLCBmb3Igd2hpY2ggdGhlIG9ubHkgdmFsaWQgdmFsdWVzIGFyZSAwIChhcyBvZiB0aGUKLUp1bHkgMTk5OSBQTkcgc3BlY2lmaWNhdGlvbiwgdmVyc2lvbiAxLjIpIG9yIDY0IChpZiB5b3UgYXJlIHdyaXRpbmcKLWEgUE5HIGRhdGFzdHJlYW0gdGhhdCBpcyB0byBiZSBlbWJlZGRlZCBpbiBhIE1ORyBkYXRhc3RyZWFtKS4gIFRoZSB0aGlyZAotcGFyYW1ldGVyIGlzIGEgZmxhZyB0aGF0IGluZGljYXRlcyB3aGljaCBmaWx0ZXIgdHlwZShzKSBhcmUgdG8gYmUgdGVzdGVkCi1mb3IgZWFjaCBzY2FubGluZS4gIFNlZSB0aGUgUE5HIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gdGhlIHNwZWNpZmljIGZpbHRlcgordGhlIGZpbHRlciBtZXRob2QsIGZvciB3aGljaCB0aGUgb25seSB2YWxpZCB2YWx1ZSBpcyAnMCcgKGFzIG9mIHRoZQorSnVseSAxOTk5IFBORyBzcGVjaWZpY2F0aW9uLCB2ZXJzaW9uIDEuMikuICBUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIGEKK2ZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hpY2ggZmlsdGVyIHR5cGUocykgYXJlIHRvIGJlIHRlc3RlZCBmb3IgZWFjaAorc2NhbmxpbmUuICBTZWUgdGhlIFBORyBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZSBzcGVjaWZpYyBmaWx0ZXIKIHR5cGVzLgogCiAKQEAgLTE1NjcsOSArMTU2Myw2IEBACiByb3cgb2YgcGl4ZWxzIHdpbGwgYmUgc3RvcmVkIGluIGNhc2UgaXQncyBuZWVkZWQgbGF0ZXIpLCBhbmQgdGhlbiBhZGQKIGFuZCByZW1vdmUgdGhlbSBhZnRlciB0aGUgc3RhcnQgb2YgY29tcHJlc3Npb24uCiAKLUlmIHlvdSBhcmUgd3JpdGluZyBhIFBORyBkYXRhc3RyZWFtIHRoYXQgaXMgdG8gYmUgZW1iZWRkZWQgaW4gYSBNTkcKLWRhdGFzdHJlYW0sIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGNhbiBiZSBlaXRoZXIgMCBvciA2NC4KLQogVGhlIHBuZ19zZXRfY29tcHJlc3Npb25fKigpIGZ1bmN0aW9ucyBpbnRlcmZhY2UgdG8gdGhlIHpsaWIgY29tcHJlc3Npb24KIGxpYnJhcnksIGFuZCBzaG91bGQgbW9zdGx5IGJlIGlnbm9yZWQgdW5sZXNzIHlvdSByZWFsbHkga25vdyB3aGF0IHlvdSBhcmUKIGRvaW5nLiAgVGhlIG9ubHkgZ2VuZXJhbGx5IHVzZWZ1bCBjYWxsIGlzIHBuZ19zZXRfY29tcHJlc3Npb25fbGV2ZWwoKQpAQCAtMTYwOCw3ICsxNjAxLDcgQEAKIAogICAgIHBuZ19zZXRfSUhEUihwbmdfcHRyLCBpbmZvX3B0ciwgd2lkdGgsIGhlaWdodCwKICAgICAgICBiaXRfZGVwdGgsIGNvbG9yX3R5cGUsIGludGVybGFjZV90eXBlLAotICAgICAgIGNvbXByZXNzaW9uX3R5cGUsIGZpbHRlcl9tZXRob2QpCisgICAgICAgY29tcHJlc3Npb25fdHlwZSwgZmlsdGVyX3R5cGUpCiAgICAgd2lkdGggICAgICAgICAgLSBob2xkcyB0aGUgd2lkdGggb2YgdGhlIGltYWdlCiAgICAgICAgICAgICAgICAgICAgICBpbiBwaXhlbHMgKHVwIHRvIDJeMzEpLgogICAgIGhlaWdodCAgICAgICAgIC0gaG9sZHMgdGhlIGhlaWdodCBvZiB0aGUgaW1hZ2UKQEAgLTE2NDAsMTEgKzE2MzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgUE5HX0lOVEVSTEFDRV9BREFNNwogICAgIGNvbXByZXNzaW9uX3R5cGUgLSAobXVzdCBiZQogICAgICAgICAgICAgICAgICAgICAgUE5HX0NPTVBSRVNTSU9OX1RZUEVfREVGQVVMVCkKLSAgICBmaWx0ZXJfbWV0aG9kICAtIChtdXN0IGJlIFBOR19GSUxURVJfVFlQRV9ERUZBVUxUCi0gICAgICAgICAgICAgICAgICAgICBvciwgaWYgeW91IGFyZSB3cml0aW5nIGEgUE5HIHRvCi0gICAgICAgICAgICAgICAgICAgICBiZSBlbWJlZGRlZCBpbiBhIE1ORyBkYXRhc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgY2FuIGFsc28gYmUKLSAgICAgICAgICAgICAgICAgICAgIFBOR19JTlRSQVBJWEVMX0RJRkZFUkVOQ0lORykKKyAgICBmaWx0ZXJfdHlwZSAgICAtIChtdXN0IGJlIFBOR19GSUxURVJfVFlQRV9ERUZBVUxUKQogCiAgICAgcG5nX3NldF9QTFRFKHBuZ19wdHIsIGluZm9fcHRyLCBwYWxldHRlLAogICAgICAgIG51bV9wYWxldHRlKTsKQEAgLTIyNDIsMjIgKzIyMzEsMTMgQEAKIAogVi4gTW9kaWZ5aW5nL0N1c3RvbWl6aW5nIGxpYnBuZzoKIAotVGhlcmUgYXJlIHRocmVlIGlzc3VlcyBoZXJlLiAgVGhlIGZpcnN0IGlzIGNoYW5naW5nIGhvdyBsaWJwbmcgZG9lcworVGhlcmUgYXJlIHR3byBpc3N1ZXMgaGVyZS4gIFRoZSBmaXJzdCBpcyBjaGFuZ2luZyBob3cgbGlicG5nIGRvZXMKIHN0YW5kYXJkIHRoaW5ncyBsaWtlIG1lbW9yeSBhbGxvY2F0aW9uLCBpbnB1dC9vdXRwdXQsIGFuZCBlcnJvciBoYW5kbGluZy4KIFRoZSBzZWNvbmQgZGVhbHMgd2l0aCBtb3JlIGNvbXBsaWNhdGVkIHRoaW5ncyBsaWtlIGFkZGluZyBuZXcgY2h1bmtzLAogYWRkaW5nIG5ldyB0cmFuc2Zvcm1hdGlvbnMsIGFuZCBnZW5lcmFsbHkgY2hhbmdpbmcgaG93IGxpYnBuZyB3b3Jrcy4KLUJvdGggb2YgdGhvc2UgYXJlIGNvbXBpbGUtdGltZSBpc3N1ZXM7IHRoYXQgaXMsIHRoZXkgYXJlIGdlbmVyYWxseQotZGV0ZXJtaW5lZCBhdCB0aGUgdGltZSB0aGUgY29kZSBpcyB3cml0dGVuLCBhbmQgdGhlcmUgaXMgcmFyZWx5IGEgbmVlZAotdG8gcHJvdmlkZSB0aGUgdXNlciB3aXRoIGEgbWVhbnMgb2YgY2hhbmdpbmcgdGhlbS4gIFRoZSB0aGlyZCBpcyBhCi1ydW4tdGltZSBpc3N1ZTogIGNob29zaW5nIGJldHdlZW4gYW5kL29yIHR1bmluZyBvbmUgb3IgbW9yZSBhbHRlcm5hdGUKLXZlcnNpb25zIG9mIGNvbXB1dGF0aW9uYWxseSBpbnRlbnNpdmUgcm91dGluZXM7IHNwZWNpZmljYWxseSwgb3B0aW1pemVkCi1hc3NlbWJseS1sYW5ndWFnZSAoYW5kIHRoZXJlZm9yZSBjb21waWxlci0gYW5kIHBsYXRmb3JtLWRlcGVuZGVudCkKLXZlcnNpb25zLgotCi1NZW1vcnkgYWxsb2NhdGlvbiwgaW5wdXQvb3V0cHV0LCBhbmQgZXJyb3IgaGFuZGxpbmcKIAogQWxsIG9mIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiwgaW5wdXQvb3V0cHV0LCBhbmQgZXJyb3IgaGFuZGxpbmcgaW4gbGlicG5nCi1nb2VzIHRocm91Z2ggY2FsbGJhY2tzIHRoYXQgYXJlIHVzZXItc2V0dGFibGUuICBUaGUgZGVmYXVsdCByb3V0aW5lcyBhcmUKK2dvZXMgdGhyb3VnaCBjYWxsYmFja3MgdGhhdCBhcmUgdXNlciBzZXR0YWJsZS4gIFRoZSBkZWZhdWx0IHJvdXRpbmVzIGFyZQogaW4gcG5nbWVtLmMsIHBuZ3Jpby5jLCBwbmd3aW8uYywgYW5kIHBuZ2Vycm9yLmMsIHJlc3BlY3RpdmVseS4gIFRvIGNoYW5nZQogdGhlc2UgZnVuY3Rpb25zLCBjYWxsIHRoZSBhcHByb3ByaWF0ZSBwbmdfc2V0XypfZm4oKSBmdW5jdGlvbi4KIApAQCAtMjQ5MCwxMCArMjQ3MCw2IEBACiAKICAgICBwbmdfc2V0X2ZpbHRlcihwbmdfcHRyLCBQTkdfRklMVEVSX1RZUEVfQkFTRSwKICAgICAgICBmaWx0ZXJzKTsKLSAgICAgICAgICAgICAgVGhlIHNlY29uZCBwYXJhbWV0ZXIgY2FuIGFsc28gYmUgUE5HX0lOVFJBUElYRUxfRElGRkVSRU5DSU5HCi0gICAgICAgICAgICAgIGlmIHlvdSBhcmUgd3JpdGluZyBhIFBORyB0byBiZSBlbWJlZGRlZCBpbiBhIE1ORwotICAgICAgICAgICAgICBkYXRhc3RyZWFtLiAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUKLSAgICAgICAgICAgICAgdmFsdWUgb2YgZmlsdGVyX21ldGhvZCB1c2VkIGluIHBuZ19zZXRfSUhEUigpLgogCiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGluZmx1ZW5jZSBob3cgbGlicG5nIGNob29zZXMgZnJvbSBhbW9uZyB0aGUKIGF2YWlsYWJsZSBmaWx0ZXJzLiAgVGhpcyBpcyBkb25lIGluIHR3byB3YXlzIC0gYnkgdGVsbGluZyBpdCBob3cKQEAgLTI2MDUsMzMgKzI1ODEsNyBAQAogaGF2aW5nIGxldmVsID0gMCB3aWxsIGJlIHByaW50ZWQuICBUaGVyZSBhcmVuJ3QgYW55IHN1Y2ggc3RhdGVtZW50cyBpbgogdGhpcyB2ZXJzaW9uIG9mIGxpYnBuZywgYnV0IGlmIHlvdSBpbnNlcnQgc29tZSB0aGV5IHdpbGwgYmUgcHJpbnRlZC4KIAotCi1WSS4gIE1ORyBzdXBwb3J0Ci0KLVRoZSBNTkcgc3BlY2lmaWNhdGlvbiAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubGlicG5nLm9yZy9wdWIvbW5nKSBhbGxvd3MKLWNlcnRhaW4gZXh0ZW5zaW9ucyB0byBQTkcgZm9yIFBORyBpbWFnZXMgdGhhdCBhcmUgZW1iZWRkZWQgaW4gTU5HIGRhdGFzdHJlYW1zLgotTGlicG5nIGNhbiBzdXBwb3J0IHNvbWUgb2YgdGhlc2UgZXh0ZW5zaW9ucy4gIFRvIGVuYWJsZSB0aGVtLCB1c2UgdGhlCi1wbmdfcGVybWl0X21uZ19mZWF0dXJlcygpIGZ1bmN0aW9uOgotCi0gICBmZWF0dXJlX3NldCA9IHBuZ19wZXJtaXRfbW5nX2ZlYXR1cmVzKHBuZ19wdHIsIG1hc2spCi0gICBtYXNrIGlzIGEgcG5nX3VpbnRfMzIgY29udGFpbmluZyB0aGUgbG9naWNhbCBPUiBvZiB0aGUKLSAgICAgICAgZmVhdHVyZXMgeW91IHdhbnQgdG8gZW5hYmxlLiAgVGhlc2UgaW5jbHVkZQotICAgICAgICBQTkdfRkxBR19NTkdfRU1QVFlfUExURQotICAgICAgICBQTkdfRkxBR19NTkdfRklMVEVSXzY0Ci0gICAgICAgIFBOR19BTExfTU5HX0ZFQVRVUkVTCi0gICBmZWF0dXJlX3NldCBpcyBhIHBuZ18zMl91aW50IHRoYXQgaXMgdGhlIGxvZ2ljYWwgQU5EIG9mCi0gICAgICB5b3VyIG1hc2sgd2l0aCB0aGUgc2V0IG9mIE1ORyBmZWF0dXJlcyB0aGF0IGlzCi0gICAgICBzdXBwb3J0ZWQgYnkgdGhlIHZlcnNpb24gb2YgbGlicG5nIHRoYXQgeW91IGFyZSB1c2luZy4KLQotSXQgaXMgYW4gZXJyb3IgdG8gdXNlIHRoaXMgZnVuY3Rpb24gd2hlbiByZWFkaW5nIG9yIHdyaXRpbmcgYSBzdGFuZGFsb25lCi1QTkcgZmlsZSB3aXRoIHRoZSBQTkcgOC1ieXRlIHNpZ25hdHVyZS4gIFRoZSBQTkcgZGF0YXN0cmVhbSBtdXN0IGJlIHdyYXBwZWQKLWluIGEgTU5HIGRhdGFzdHJlYW0uICBBcyBhIG1pbmltdW0sIGl0IG11c3QgaGF2ZSB0aGUgTU5HIDgtYnl0ZSBzaWduYXR1cmUKLWFuZCB0aGUgTUhEUiBhbmQgTUVORCBjaHVua3MuICBMaWJwbmcgZG9lcyBub3QgcHJvdmlkZSBzdXBwb3J0IGZvciB0aGVzZQotb3IgYW55IG90aGVyIE1ORyBjaHVua3M7IHlvdXIgYXBwbGljYXRpb24gbXVzdCBwcm92aWRlIGl0cyBvd24gc3VwcG9ydCBmb3IKLXRoZW0uICBZb3UgbWF5IHdpc2ggdG8gY29uc2lkZXIgdXNpbmcgbGlibW5nIChhdmFpbGFibGUgYXQKLWh0dHA6Ly93d3cubGlibW5nLmNvbSkgaW5zdGVhZC4KLQotVklJLiAgQ2hhbmdlcyB0byBMaWJwbmcgZnJvbSB2ZXJzaW9uIDAuODgKK1ZJLiAgQ2hhbmdlcyB0byBMaWJwbmcgZnJvbSB2ZXJzaW9uIDAuODgKIAogSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgdmVyc2lvbnMgb2YgbGlicG5nIGxhdGVyIHRoYW4gMC45NiBhcmUgbm90CiBkaXN0cmlidXRlZCBieSB0aGUgb3JpZ2luYWwgbGlicG5nIGF1dGhvciwgR3V5IFNjaGFsbmF0LCBub3IgYnkKQEAgLTI2ODAsMTUgKzI2MzAsMTUgQEAKIAogICAgcG5nX3VpbnRfMzIgYXBwbGljYXRpb25fdm4gPSBQTkdfTElCUE5HX1ZFUjsKIAotVklJSS4gWTJLIENvbXBsaWFuY2UgaW4gbGlicG5nCitWSUkuIFkySyBDb21wbGlhbmNlIGluIGxpYnBuZwogCi1KYW51YXJ5IDE2LCAyMDAxCitOb3ZlbWJlciAxOSwgMjAwMAogCiBTaW5jZSB0aGUgUE5HIERldmVsb3BtZW50IGdyb3VwIGlzIGFuIGFkLWhvYyBib2R5LCB3ZSBjYW4ndCBtYWtlCiBhbiBvZmZpY2lhbCBkZWNsYXJhdGlvbi4KIAogVGhpcyBpcyB5b3VyIHVub2ZmaWNpYWwgYXNzdXJhbmNlIHRoYXQgbGlicG5nIGZyb20gdmVyc2lvbiAwLjcxIGFuZAotdXB3YXJkIHRocm91Z2ggMS4wLjliZXRhMTAgYXJlIFkySyBjb21wbGlhbnQuICBJdCBpcyBteSBiZWxpZWYgdGhhdCBlYXJsaWVyCit1cHdhcmQgdGhyb3VnaCAxLjAuOWJldGEyIGFyZSBZMksgY29tcGxpYW50LiAgSXQgaXMgbXkgYmVsaWVmIHRoYXQgZWFybGllcgogdmVyc2lvbnMgd2VyZSBhbHNvIFkySyBjb21wbGlhbnQuCiAKIExpYnBuZyBvbmx5IGhhcyB0aHJlZSB5ZWFyIGZpZWxkcy4gIE9uZSBpcyBhIDItYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQKZGlmZiAtLWdpdCBhL2xpYnBuZ3BmLjMgYi9saWJwbmdwZi4zCmluZGV4IDE5ZTBkNDQuLjQ0MDQwNTkgMTAwNjQ0Ci0tLSBhL2xpYnBuZ3BmLjMKKysrIGIvbGlicG5ncGYuMwpAQCAtMSw2ICsxLDYgQEAKLS5USCBMSUJQTkdQRiAzICJKYW51YXJ5IDE2LCAyMDAxIgorLlRIIExJQlBOR1BGIDMgIk5vdmVtYmVyIDE5LCAyMDAwIgogLlNIIE5BTUUKLWxpYnBuZyBcLSBQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzIChQTkcpIFJlZmVyZW5jZSBMaWJyYXJ5IDEuMC45YmV0YTEwCitsaWJwbmcgXC0gUG9ydGFibGUgTmV0d29yayBHcmFwaGljcyAoUE5HKSBSZWZlcmVuY2UgTGlicmFyeSAxLjAuOWJldGEyCiAocHJpdmF0ZSBmdW5jdGlvbnMpCiAuU0ggU1lOT1BTSVMKIFxmQiNpbmNsdWRlIDxwbmcuaD5cZlAKZGlmZiAtLWdpdCBhL3BuZy41IGIvcG5nLjUKaW5kZXggODgyMzc4MS4uYTFjY2U1ZCAxMDA2NDQKLS0tIGEvcG5nLjUKKysrIGIvcG5nLjUKQEAgLTEsNCArMSw0IEBACi0uVEggUE5HIDUgIkphbnVhcnkgMTYsIDIwMDEiCisuVEggUE5HIDUgIk5vdmVtYmVyIDE5LCAyMDAwIgogLlNIIE5BTUUKIHBuZyBcLSBQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzIChQTkcpIGZvcm1hdAogLlNIIERFU0NSSVBUSU9OCmRpZmYgLS1naXQgYS9wbmcuYyBiL3BuZy5jCmluZGV4IGE4NTM4ZTMuLjE2NGViZjMgMTAwNjQ0Ci0tLSBhL3BuZy5jCisrKyBiL3BuZy5jCkBAIC0xLDggKzEsOCBAQAogCiAvKiBwbmcuYyAtIGxvY2F0aW9uIGZvciBnZW5lcmFsIHB1cnBvc2UgbGlicG5nIGZ1bmN0aW9ucwogICoKLSAqIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBsaWJwbmcgdmVyc2lvbiAxLjAuOWJldGEyIC0gTm92ZW1iZXIgMTksIDIwMDAKKyAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICoKQEAgLTEzLDE0ICsxMywxNCBAQAogI2luY2x1ZGUgInBuZy5oIgogCiAvKiBHZW5lcmF0ZSBhIGNvbXBpbGVyIGVycm9yIGlmIHRoZXJlIGlzIGFuIG9sZCBwbmcuaCBpbiB0aGUgc2VhcmNoIHBhdGguICovCi10eXBlZGVmIHZlcnNpb25fMV8wXzliZXRhMTAgWW91cl9wbmdfaF9pc19ub3RfdmVyc2lvbl8xXzBfOWJldGExMDsKK3R5cGVkZWYgdmVyc2lvbl8xXzBfOWJldGEyIFlvdXJfcG5nX2hfaXNfbm90X3ZlcnNpb25fMV8wXzliZXRhMjsKIAogLyogVmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgQyBmaWxlcy4gIFRoaXMgaGFkIGJldHRlciBtYXRjaCB0aGUgdmVyc2lvbgogICogc3RyaW5nIGRlZmluZWQgaW4gcG5nLmguICAqLwogCiAjaWZkZWYgUE5HX1VTRV9HTE9CQUxfQVJSQVlTCiAvKiBwbmdfbGlicG5nX3ZlciB3YXMgY2hhbmdlZCB0byBhIGZ1bmN0aW9uIGluIHZlcnNpb24gMS4wLjVjICovCi1jb25zdCBjaGFyIHBuZ19saWJwbmdfdmVyWzE4XSA9ICIxLjAuOWJldGExMCI7Citjb25zdCBjaGFyIHBuZ19saWJwbmdfdmVyWzE4XSA9ICIxLjAuOWJldGEyIjsKIAogLyogcG5nX3NpZyB3YXMgY2hhbmdlZCB0byBhIGZ1bmN0aW9uIGluIHZlcnNpb24gMS4wLjVjICovCiAvKiBQbGFjZSB0byBob2xkIHRoZSBzaWduYXR1cmUgc3RyaW5nIGZvciBhIFBORyBmaWxlLiAqLwpAQCAtNTI2LDcgKzUyNiw3IEBACiAgICBwbmdfZGVidWcoMSwgImluIHBuZ19pbmZvX2Rlc3Ryb3lcbiIpOwogCiAgICBwbmdfZnJlZV9kYXRhKHBuZ19wdHIsIGluZm9fcHRyLCBQTkdfRlJFRV9BTEwsIC0xKTsKLQorICAgIAogI2lmIGRlZmluZWQoUE5HX1VOS05PV05fQ0hVTktTX1NVUFBPUlRFRCkKICAgIGlmIChwbmdfcHRyLT5udW1fY2h1bmtfbGlzdCkKICAgIHsKQEAgLTYyNiw4ICs2MjYsOCBAQAogcG5nX2dldF9jb3B5cmlnaHQocG5nX3N0cnVjdHAgcG5nX3B0cikKIHsKICAgIGlmIChwbmdfcHRyICE9IE5VTEwgfHwgcG5nX3B0ciA9PSBOVUxMKSAgLyogc2lsZW5jZSBjb21waWxlciB3YXJuaW5nICovCi0gICByZXR1cm4gKChwbmdfY2hhcnApICJcbiBsaWJwbmcgdmVyc2lvbiAxLjAuOWJldGExMCAtIEphbnVhcnkgMTYsIDIwMDFcblwKLSAgIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvblxuXAorICAgcmV0dXJuICgocG5nX2NoYXJwKSAiXG4gbGlicG5nIHZlcnNpb24gMS4wLjliZXRhMiAtIE5vdmVtYmVyIDE5LCAyMDAwXG5cCisgICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb25cblwKICAgIENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlclxuXAogICAgQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLlxuIik7CiAgICByZXR1cm4gKChwbmdfY2hhcnApICIiKTsKQEAgLTY0NCw4ICs2NDQsOCBAQAogewogICAgLyogVmVyc2lvbiBvZiAqLmMgZmlsZXMgdXNlZCB3aGVuIGJ1aWxkaW5nIGxpYnBuZyAqLwogICAgaWYocG5nX3B0ciAhPSBOVUxMKSAvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgdW51c2VkIHBuZ19wdHIgKi8KLSAgICAgIHJldHVybigocG5nX2NoYXJwKSAiMS4wLjliZXRhMTAiKTsKLSAgIHJldHVybigocG5nX2NoYXJwKSAiMS4wLjliZXRhMTAiKTsKKyAgICAgIHJldHVybigocG5nX2NoYXJwKSAiMS4wLjliZXRhMiIpOworICAgcmV0dXJuKChwbmdfY2hhcnApICIxLjAuOWJldGEyIik7CiB9CiAKIHBuZ19jaGFycCBQTkdBUEkKQEAgLTY5NywxMyArNjk3LDMgQEAKICAgIC8qIFZlcnNpb24gb2YgKi5jIGZpbGVzIHVzZWQgd2hlbiBidWlsZGluZyBsaWJwbmcgKi8KICAgIHJldHVybigocG5nX3VpbnRfMzIpIDEwMDA5TCk7CiB9Ci0KLQotLyogdGhpcyBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gbGlicG5nIDEuMC45IChwb3J0aW5nIGFpZCB0byBsaWJwbmctMS4yLjApICovCi0jaWZuZGVmIFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQKLWludCBQTkdBUEkKLXBuZ19tbXhfc3VwcG9ydCh2b2lkKQotewotICAgIHJldHVybiAtMTsKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvcG5nLmggYi9wbmcuaAppbmRleCAyNDdhZTNkLi5jYTRjOGE5IDEwMDY0NAotLS0gYS9wbmcuaAorKysgYi9wbmcuaApAQCAtMSwxNSArMSwxNSBAQAogCiAvKiBwbmcuaCAtIGhlYWRlciBmaWxlIGZvciBQTkcgcmVmZXJlbmNlIGxpYnJhcnkKICAqCi0gKiBsaWJwbmcgdmVyc2lvbiAxLjAuOWJldGExMCAtIEphbnVhcnkgMTYsIDIwMDEKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogbGlicG5nIHZlcnNpb24gMS4wLjliZXRhMiAtIE5vdmVtYmVyIDE5LCAyMDAwCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKICAqCiAgKiBBdXRob3JzIGFuZCBtYWludGFpbmVyczoKICAqICBsaWJwbmcgdmVyc2lvbnMgMC43MSwgTWF5IDE5OTUsIHRocm91Z2ggMC44OCwgSmFudWFyeSAxOTk2OiBHdXkgU2NoYWxuYXQKICAqICBsaWJwbmcgdmVyc2lvbnMgMC44OWMsIEp1bmUgMTk5NiwgdGhyb3VnaCAwLjk2LCBNYXkgMTk5NzogQW5kcmVhcyBEaWxnZXIKLSAqICBsaWJwbmcgdmVyc2lvbnMgMC45NywgSmFudWFyeSAxOTk4LCB0aHJvdWdoIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMTogR2xlbm4KKyAqICBsaWJwbmcgdmVyc2lvbnMgMC45NywgSmFudWFyeSAxOTk4LCB0aHJvdWdoIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMDogR2xlbm4KICAqICBTZWUgYWxzbyAiQ29udHJpYnV0aW5nIEF1dGhvcnMiLCBiZWxvdy4KICAqCiAgKiBOb3RlIGFib3V0IGxpYnBuZyB2ZXJzaW9uIG51bWJlcnM6CkBAIC01OCwxNCArNTgsMTIgQEAKICAqICAgIDEuMC44YmV0YTEtNCAgICAgICAgICAgICAgICAgIDEwMDA4ICAyLjEuMC44YmV0YTEtNAogICogICAgMS4wLjhyYzEgICAgICAgICAgICAgICAgICAgICAgMTAwMDggIDIuMS4wLjhyYzEKICAqICAgIDEuMC44ICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDA4ICAyLjEuMC44Ci0gKiAgICAxLjAuOWJldGExLTYgICAgICAgICAgICAgICAgICAxMDAwOSAgMi4xLjAuOWJldGExLTYKLSAqICAgIDEuMC45cmMxICAgICAgICAgICAgICAgICAgICAgIDEwMDA5ICAyLjEuMC45cmMxCi0gKiAgICAxLjAuOWJldGE3LTEwICAgICAgICAgICAgICAgICAxMDAwOSAgMi4xLjAuOWJldGE3LTEwCisgKiAgICAxLjAuOWJldGExLTIgICAgICAgICAgICAgICAgICAxMDAwOSAgMi4xLjAuOQogICoKICAqICAgIEhlbmNlZm9ydGggdGhlIHNvdXJjZSB2ZXJzaW9uIHdpbGwgbWF0Y2ggdGhlIHNoYXJlZC1saWJyYXJ5IG1ham9yCiAgKiAgICBhbmQgbWlub3IgbnVtYmVyczsgdGhlIHNoYXJlZC1saWJyYXJ5IG1ham9yIHZlcnNpb24gbnVtYmVyIHdpbGwgYmUKICAqICAgIHVzZWQgZm9yIGNoYW5nZXMgaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgYXMgaXQgaXMgaW50ZW5kZWQuICBUaGUKLSAqICAgIFBOR19MSUJQTkdfVkVSIG1hY3JvLCB3aGljaCBpcyBub3QgdXNlZCB3aXRoaW4gbGlicG5nIGJ1dCBpcyBhdmFpbGFibGUKKyAqICAgIFBOR19QTkdMSUJfVkVSIG1hY3JvLCB3aGljaCBpcyBub3QgdXNlZCB3aXRoaW4gbGlicG5nIGJ1dCBpcyBhdmFpbGFibGUKICAqICAgIGZvciBhcHBsaWNhdGlvbnMsIGlzIGFuIHVuc2lnbmVkIGludGVnZXIgb2YgdGhlIGZvcm0geHl5enogY29ycmVzcG9uZGluZwogICogICAgdG8gdGhlIHNvdXJjZSB2ZXJzaW9uIHgueS56IChsZWFkaW5nIHplcm9zIGluIHkgYW5kIHopLiAgQmV0YSB2ZXJzaW9ucwogICogICAgd2VyZSBnaXZlbiB0aGUgcHJldmlvdXMgcHVibGljIHJlbGVhc2UgbnVtYmVyIHBsdXMgYSBsZXR0ZXIsIHVudGlsCkBAIC04Nyw4ICs4NSw4IEBACiAgKiBJZiB5b3UgbW9kaWZ5IGxpYnBuZyB5b3UgbWF5IGluc2VydCBhZGRpdGlvbmFsIG5vdGljZXMgaW1tZWRpYXRlbHkgZm9sbG93aW5nCiAgKiB0aGlzIHNlbnRlbmNlLgogICoKLSAqIGxpYnBuZyB2ZXJzaW9ucyAxLjAuNywgSnVseSAxLCAyMDAwLCB0aHJvdWdoICAxLjAuOWJldGExMCwgSmFudWFyeSAxNiwgMjAwMSwgYXJlCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uLCBhbmQgYXJlCisgKiBsaWJwbmcgdmVyc2lvbnMgMS4wLjcsIEp1bHkgMSwgMjAwMCwgdGhyb3VnaCAgMS4wLjliZXRhMiwgTm92ZW1iZXIgMTksIDIwMDAsIGFyZQorICogQ29weXJpZ2h0IChjKSAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbiwgYW5kIGFyZQogICogZGlzdHJpYnV0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzYW1lIGRpc2NsYWltZXIgYW5kIGxpY2Vuc2UgYXMgbGlicG5nLTEuMC42CiAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgaW5kaXZpZHVhbHMgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgQ29udHJpYnV0aW5nIEF1dGhvcnMKICAqCkBAIC0xOTIsMTMgKzE5MCwxMyBAQAogICogWTJLIGNvbXBsaWFuY2UgaW4gbGlicG5nOgogICogPT09PT09PT09PT09PT09PT09PT09PT09PQogICoKLSAqICAgIEphbnVhcnkgMTYsIDIwMDEKKyAqICAgIE5vdmVtYmVyIDE5LCAyMDAwCiAgKgogICogICAgU2luY2UgdGhlIFBORyBEZXZlbG9wbWVudCBncm91cCBpcyBhbiBhZC1ob2MgYm9keSwgd2UgY2FuJ3QgbWFrZQogICogICAgYW4gb2ZmaWNpYWwgZGVjbGFyYXRpb24uCiAgKgogICogICAgVGhpcyBpcyB5b3VyIHVub2ZmaWNpYWwgYXNzdXJhbmNlIHRoYXQgbGlicG5nIGZyb20gdmVyc2lvbiAwLjcxIGFuZAotICogICAgdXB3YXJkIHRocm91Z2ggMS4wLjliZXRhMTAgYXJlIFkySyBjb21wbGlhbnQuICBJdCBpcyBteSBiZWxpZWYgdGhhdCBlYXJsaWVyCisgKiAgICB1cHdhcmQgdGhyb3VnaCAxLjAuOWJldGEyIGFyZSBZMksgY29tcGxpYW50LiAgSXQgaXMgbXkgYmVsaWVmIHRoYXQgZWFybGllcgogICogICAgdmVyc2lvbnMgd2VyZSBhbHNvIFkySyBjb21wbGlhbnQuCiAgKgogICogICAgTGlicG5nIG9ubHkgaGFzIHRocmVlIHllYXIgZmllbGRzLiAgT25lIGlzIGEgMi1ieXRlIHVuc2lnbmVkIGludGVnZXIKQEAgLTI1NCw3ICsyNTIsNyBAQAogICovCiAKIC8qIFZlcnNpb24gaW5mb3JtYXRpb24gZm9yIHBuZy5oIC0gdGhpcyBzaG91bGQgbWF0Y2ggdGhlIHZlcnNpb24gaW4gcG5nLmMgKi8KLSNkZWZpbmUgUE5HX0xJQlBOR19WRVJfU1RSSU5HICIxLjAuOWJldGExMCIKKyNkZWZpbmUgUE5HX0xJQlBOR19WRVJfU1RSSU5HICIxLjAuOWJldGEyIgogCiAjZGVmaW5lIFBOR19MSUJQTkdfVkVSX1NPTlVNICAgMgogCkBAIC0yNjQsMTYgKzI2Miw4IEBACiAjZGVmaW5lIFBOR19MSUJQTkdfVkVSX1JFTEVBU0UgOQogLyogVGhpcyBzaG91bGQgbWF0Y2ggdGhlIG51bWVyaWMgcGFydCBvZiB0aGUgZmluYWwgY29tcG9uZW50IG9mCiAgKiBQTkdfTElCUE5HX1ZFUl9TVFJJTkcsIG9taXR0aW5nIGFueSBsZWFkaW5nIHplcm86ICovCi0KLSNkZWZpbmUgUE5HX0xJQlBOR19WRVJfQlVJTEQgIDEwCi0KLSNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9BTFBIQSAgICAxCi0jZGVmaW5lIFBOR19MSUJQTkdfQlVJTERfQkVUQSAgICAgMgotI2RlZmluZSBQTkdfTElCUE5HX0JVSUxEX1JDICAgICAgIDMKLSNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9TVEFCTEUgICA0Ci0jZGVmaW5lIFBOR19MSUJQTkdfQlVJTERfVFlQRU1BU0sgNwotI2RlZmluZSBQTkdfTElCUE5HX0JVSUxEX1BBVENIICAgIDggLyogQ2FuIGJlIE9SJ2VkIHdpdGggU1RBQkxFIG9ubHkgKi8KLSNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9UWVBFIDIKKyNkZWZpbmUgUE5HX0xJQlBOR19WRVJfQlVJTEQgIDIKKyNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9UWVBFIGJldGEgLyogYWxwaGEsIGJldGEsIHJjLCBzdGFibGUsIHBhdGNoZWQgKi8KIAogLyogQ2FyZWZ1bCBoZXJlLiAgQXQgb25lIHRpbWUsIEd1eSB3YW50ZWQgdG8gdXNlIDA4MiwgYnV0IHRoYXQgd291bGQgYmUgb2N0YWwuCiAgKiBXZSBtdXN0IG5vdCBpbmNsdWRlIGxlYWRpbmcgemVyb3MuCkBAIC0yODcsOSArMjc3LDE0IEBACiAvKiBpbmNsdWRlIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5J3MgaGVhZGVyICovCiAjaW5jbHVkZSAiemxpYi5oIgogCi0vKiBpbmNsdWRlIGFsbCB1c2VyIGNvbmZpZ3VyYWJsZSBpbmZvLCBpbmNsdWRpbmcgb3B0aW9uYWwgYXNzZW1ibGVyIHJvdXRpbmVzICovCisvKiBpbmNsdWRlIGFsbCB1c2VyIGNvbmZpZ3VyYWJsZSBpbmZvICovCiAjaW5jbHVkZSAicG5nY29uZi5oIgogCisvKiBtYWNyb3MgZm9yIG9wdGlvbmFsIGFzc2VtYmxlciByb3V0aW5lcyAqLworI2lmIGRlZmluZWQoUE5HX0lOVEVSTkFMKSAmJiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCisjICBpbmNsdWRlICJwbmdhc21yZC5oIgorI2VuZGlmCisKIC8qIEluaGliaXQgQysrIG5hbWUtbWFuZ2xpbmcgZm9yIGxpYnBuZyBmdW5jdGlvbnMgYnV0IG5vdCBmb3Igc3lzdGVtIGNhbGxzLiAqLwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTQ0Myw3ICs0MzgsNyBAQAogICogVHdvIGNvbnZlcnNpb25zIGFyZSBwcm92aWRlZCwgYm90aCBmcm9tIHRpbWVfdCBhbmQgc3RydWN0IHRtLiAgVGhlcmUKICAqIGlzIG5vIHBvcnRhYmxlIHdheSB0byBjb252ZXJ0IHRvIGVpdGhlciBvZiB0aGVzZSBzdHJ1Y3R1cmVzLCBhcyBmYXIKICAqIGFzIEkga25vdy4gIElmIHlvdSBrbm93IG9mIGEgcG9ydGFibGUgd2F5LCBzZW5kIGl0IHRvIG1lLiAgQXMgYSBzaWRlCi0gKiBub3RlIC0gUE5HIGhhcyBhbHdheXMgYmVlbiBZZWFyIDIwMDAgY29tcGxpYW50IQorICogbm90ZSAtIFBORyBpcyBZZWFyIDIwMDAgY29tcGxpYW50IQogICovCiB0eXBlZGVmIHN0cnVjdCBwbmdfdGltZV9zdHJ1Y3QKIHsKQEAgLTUwMSwyMCArNDk2LDIwIEBACiAgKiBUaGUgZm9sbG93aW5nIG1lbWJlcnMgbWF5IGhhdmUgYWxsb2NhdGVkIHN0b3JhZ2UgYXR0YWNoZWQgdGhhdCBzaG91bGQgYmUKICAqIGNsZWFuZWQgdXAgYmVmb3JlIHRoZSBzdHJ1Y3R1cmUgaXMgZGlzY2FyZGVkOiBwYWxldHRlLCB0cmFucywgdGV4dCwKICAqIHBjYWxfcHVycG9zZSwgcGNhbF91bml0cywgcGNhbF9wYXJhbXMsIGhpc3QsIGljY3BfbmFtZSwgaWNjcF9wcm9maWxlLAotICogc3BsdF9wYWxldHRlcywgc2NhbF91bml0LCByb3dfcG9pbnRlcnMsIGFuZCB1bmtub3ducy4gICBCeSBkZWZhdWx0LCB0aGVzZQotICogYXJlIGF1dG9tYXRpY2FsbHkgZnJlZWQgd2hlbiB0aGUgaW5mbyBzdHJ1Y3R1cmUgaXMgZGVhbGxvY2F0ZWQsIGlmIHRoZXkgd2VyZQorICogc3BsdF9wYWxldHRlcywgc2NhbF91bml0LCByb3dfcG9pbnRlcnMsIGFuZCB1bmtub3ducy4gICBCeSBkZWZhdWx0LCB0aGVzZSBhcmUKKyAqIGF1dG9tYXRpY2FsbHkgZnJlZWQgd2hlbiB0aGUgaW5mbyBzdHJ1Y3R1cmUgaXMgZGVhbGxvY2F0ZWQsIGlmIHRoZXkgd2VyZQogICogYWxsb2NhdGVkIGludGVybmFsbHkgYnkgbGlicG5nLiAgVGhpcyBiZWhhdmlvciBjYW4gYmUgY2hhbmdlZCBieSBtZWFucwogICogb2YgdGhlIHBuZ19kYXRhX2ZyZWVyKCkgZnVuY3Rpb24uCiAgKgotICogTW9yZSBhbGxvY2F0aW9uIGRldGFpbHM6IGFsbCB0aGUgY2h1bmstcmVhZGluZyBmdW5jdGlvbnMgdGhhdAotICogY2hhbmdlIHRoZXNlIG1lbWJlcnMgZ28gdGhyb3VnaCB0aGUgY29ycmVzcG9uZGluZyBwbmdfc2V0XyoKLSAqIGZ1bmN0aW9ucy4gIEEgZnVuY3Rpb24gdG8gY2xlYXIgdGhlc2UgbWVtYmVycyBpcyBhdmFpbGFibGU6IHNlZQotICogcG5nX2ZyZWVfZGF0YSgpLiAgVGhlIHBuZ19zZXRfKiBmdW5jdGlvbnMgZG8gbm90IGRlcGVuZCBvbiBiZWluZwotICogYWJsZSB0byBwb2ludCBpbmZvIHN0cnVjdHVyZSBtZW1iZXJzIHRvIGFueSBvZiB0aGUgc3RvcmFnZSB0aGV5IGFyZQotICogcGFzc2VkICh0aGV5IG1ha2UgdGhlaXIgb3duIGNvcGllcyksIEVYQ0VQVCB0aGF0IHRoZSBwbmdfc2V0X3RleHQKLSAqIGZ1bmN0aW9ucyB1c2UgdGhlIHNhbWUgc3RvcmFnZSBwYXNzZWQgdG8gdGhlbSBpbiB0aGUgdGV4dF9wdHIgb3IKLSAqIGl0eHRfcHRyIHN0cnVjdHVyZSBhcmd1bWVudCwgYW5kIHRoZSBwbmdfc2V0X3Jvd3MgYW5kIHBuZ19zZXRfdW5rbm93bnMKLSAqIGZ1bmN0aW9ucyBkbyBub3QgbWFrZSB0aGVpciBvd24gY29waWVzLgorICogTW9yZSBhbGxvY2F0aW9uIGRldGFpbHM6IGFsbCB0aGUgY2h1bmstcmVhZGluZyBmdW5jdGlvbnMgdGhhdCBjaGFuZ2UgdGhlc2UKKyAqIG1lbWJlcnMgZ28gdGhyb3VnaCB0aGUgY29ycmVzcG9uZGluZyBwbmdfc2V0XyogZnVuY3Rpb25zLiAgQSBmdW5jdGlvbiB0bworICogY2xlYXIgdGhlc2UgbWVtYmVycyBpcyBhdmFpbGFibGU6IHNlZSBwbmdfZnJlZV9kYXRhKCkuICAgU29tZSBvZiB0aGUKKyAqIHBuZ19zZXRfKiBmdW5jdGlvbnMgZG8gbm90IGRlcGVuZCBvbiBiZWluZyBhYmxlIHRvIHBvaW50IGluZm8gc3RydWN0dXJlCisgKiBtZW1iZXJzIHRvIGFueSBvZiB0aGUgc3RvcmFnZSB0aGV5IGFyZSBwYXNzZWQgKHRoZXkgbWFrZSB0aGVpciBvd24gY29waWVzKSwKKyAqIEVYQ0VQVCB0aGF0IHRoZSBwbmdfc2V0X3RleHQgZnVuY3Rpb25zIHVzZSB0aGUgc2FtZSBzdG9yYWdlIHBhc3NlZCB0byB0aGVtCisgKiBpbiB0aGUgdGV4dF9wdHIgb3IgaXR4dF9wdHIgc3RydWN0dXJlIGFyZ3VtZW50LCBhbmQgdGhlIHBuZ19zZXRfdFJOUywKKyAqIHBuZ19zZXRfUExURSwgcG5nX3NldF9oSVNULCBwbmdfc2V0X2lDQ1AsIHBuZ19zZXRfcm93cywgcG5nX3NldF9zUExULAorICogYW5kIHBuZ19zZXRfdW5rbm93bnMgZG8gbm90IG1ha2UgdGhlaXIgb3duIGNvcGllcy4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgcG5nX2luZm9fc3RydWN0CiB7CkBAIC03MDAsNyArNjk1LDYgQEAKICAgIC8qIGlDQ1AgY2h1bmsgZGF0YS4gKi8KICAgIHBuZ19jaGFycCBpY2NwX25hbWU7ICAgICAvKiBwcm9maWxlIG5hbWUgKi8KICAgIHBuZ19jaGFycCBpY2NwX3Byb2ZpbGU7ICAvKiBJbnRlcm5hdGlvbmFsIENvbG9yIENvbnNvcnRpdW0gcHJvZmlsZSBkYXRhICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm90ZSB0byBtYWludGFpbmVyOiBzaG91bGQgYmUgcG5nX2J5dGVwICovCiAgICBwbmdfdWludF8zMiBpY2NwX3Byb2ZsZW47ICAvKiBJQ0MgcHJvZmlsZSBkYXRhIGxlbmd0aCAqLwogICAgcG5nX2J5dGUgaWNjcF9jb21wcmVzc2lvbjsgLyogQWx3YXlzIHplcm8gKi8KICNlbmRpZgpAQCAtNzgxLDcgKzc3NSw2IEBACiAKIC8qIFRoaXMgaXMgZm9yIGZpbHRlciB0eXBlLiBQTkcgMS4wLTEuMiBvbmx5IGRlZmluZSB0aGUgc2luZ2xlIHR5cGUuICovCiAjZGVmaW5lIFBOR19GSUxURVJfVFlQRV9CQVNFICAgICAgMCAvKiBTaW5nbGUgcm93IHBlci1ieXRlIGZpbHRlcmluZyAqLwotI2RlZmluZSBQTkdfSU5UUkFQSVhFTF9ESUZGRVJFTkNJTkcgNjQgLyogVXNlZCBvbmx5IGluIE1ORyBkYXRhc3RyZWFtcyAqLwogI2RlZmluZSBQTkdfRklMVEVSX1RZUEVfREVGQVVMVCAgIFBOR19GSUxURVJfVFlQRV9CQVNFCiAKIC8qIFRoZXNlIGFyZSBmb3IgdGhlIGludGVybGFjaW5nIHR5cGUuICBUaGVzZSB2YWx1ZXMgc2hvdWxkIE5PVCBiZSBjaGFuZ2VkLiAqLwpAQCAtODIyLDggKzgxNSw2IEBACiAvKiBUaGlzIGlzIGZvciB0ZXh0IGNodW5rcyAqLwogI2RlZmluZSBQTkdfS0VZV09SRF9NQVhfTEVOR1RIICAgICA3OQogCi0vKiBNYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIGluIFBMVEUvc1BMVC90Uk5TIGFycmF5cyAqLwotI2RlZmluZSBQTkdfTUFYX1BBTEVUVEVfTEVOR1RICSAgIDI1NgogCiAvKiBUaGVzZSBkZXRlcm1pbmUgaWYgYW4gYW5jaWxsYXJ5IGNodW5rJ3MgZGF0YSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcmVhZAogICogZnJvbSB0aGUgUE5HIGhlYWRlciwgb3IgaWYgdGhlIGFwcGxpY2F0aW9uIGhhcyBmaWxsZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcKQEAgLTkxOCw5ICs5MDksOCBAQAogI2RlZmluZSBQTkdfVFJBTlNGT1JNX1NUUklQX0ZJTExFUiAgIDB4MDgwMCAgICAvKiBXUklURSBvbmx5ICovCiAKIC8qIEZsYWdzIGZvciBNTkcgc3VwcG9ydGVkIGZlYXR1cmVzICovCi0jZGVmaW5lIFBOR19GTEFHX01OR19FTVBUWV9QTFRFICAgICAweDAxCi0jZGVmaW5lIFBOR19GTEFHX01OR19GSUxURVJfNjQgICAgICAweDA0Ci0jZGVmaW5lIFBOR19BTExfTU5HX0ZFQVRVUkVTICAgICAgICAweDA1CisjZGVmaW5lIFBOR19GTEFHX01OR19FTVBUWV9QTFRFIDB4MDEKKyNkZWZpbmUgUE5HX0FMTF9NTkdfRkVBVFVSRVMgICAgMHgwMQogCiB0eXBlZGVmIHBuZ192b2lkcCAoKnBuZ19tYWxsb2NfcHRyKSBQTkdBUkcoKHBuZ19zdHJ1Y3RwLCBwbmdfc2l6ZV90KSk7CiB0eXBlZGVmIHZvaWQgKCpwbmdfZnJlZV9wdHIpIFBOR0FSRygocG5nX3N0cnVjdHAsIHBuZ192b2lkcCkpOwpAQCAtMTE2NiwxNSArMTE1NiwxMiBAQAogICAgcG5nX2ZpeGVkX3BvaW50IGludF9nYW1tYTsKICNlbmRpZgogCi0gICBwbmdfYnl0ZSBmaWx0ZXJfdHlwZTsKLQogfTsKIAotCiAvKiBUaGlzIHByZXZlbnRzIGEgY29tcGlsZXIgZXJyb3IgaW4gcG5nX2dldF9jb3B5cmlnaHQoKSBpbiBwbmcuYyBpZiBwbmcuYwotYW5kIHBuZy5oIGFyZSBib3RoIGF0ICogdmVyc2lvbiAxLjAuOWJldGExMAorYW5kIHBuZy5oIGFyZSBib3RoIGF0ICogdmVyc2lvbiAxLjAuOWJldGEyCiAgKi8KLXR5cGVkZWYgcG5nX3N0cnVjdHAgdmVyc2lvbl8xXzBfOWJldGExMDsKK3R5cGVkZWYgcG5nX3N0cnVjdHAgdmVyc2lvbl8xXzBfOWJldGEyOwogCiB0eXBlZGVmIHBuZ19zdHJ1Y3QgRkFSICogRkFSICogcG5nX3N0cnVjdHBwOwogCkBAIC0yMDI2LDE0ICsyMDEzLDEyIEBACiBleHRlcm4gUE5HX0VYUE9SVChwbmdfdWludF8zMixwbmdfZ2V0X2lDQ1ApIFBOR0FSRygocG5nX3N0cnVjdHAgcG5nX3B0ciwKICAgIHBuZ19pbmZvcCBpbmZvX3B0ciwgcG5nX2NoYXJwcCBuYW1lLCBpbnQgKmNvbXByZXNzaW9uX3R5cGUsCiAgICBwbmdfY2hhcnBwIHByb2ZpbGUsIHBuZ191aW50XzMyICpwcm9mbGVuKSk7Ci0gICAvKiBOb3RlIHRvIG1haW50YWluZXI6IHByb2ZpbGUgc2hvdWxkIGJlIHBuZ19ieXRlcHAgKi8KICNlbmRpZgogCiAjaWYgZGVmaW5lZChQTkdfaUNDUF9TVVBQT1JURUQpCiBleHRlcm4gUE5HX0VYUE9SVCh2b2lkLHBuZ19zZXRfaUNDUCkgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyLAogICAgcG5nX2luZm9wIGluZm9fcHRyLCBwbmdfY2hhcnAgbmFtZSwgaW50IGNvbXByZXNzaW9uX3R5cGUsCiAgICBwbmdfY2hhcnAgcHJvZmlsZSwgcG5nX3VpbnRfMzIgcHJvZmxlbikpOwotICAgLyogTm90ZSB0byBtYWludGFpbmVyOiBwcm9maWxlIHNob3VsZCBiZSBwbmdfYnl0ZXAgKi8KICNlbmRpZgogCiAjaWYgZGVmaW5lZChQTkdfUkVBRF9zUExUX1NVUFBPUlRFRCkKQEAgLTIyMTQsMTMgKzIxOTksOCBAQAogICAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgbW5nX2ZlYXR1cmVzX3Blcm1pdHRlZCkpOwogI2VuZGlmCiAKLS8qIHBuZy5jLCBwbmdnY2NyZC5jLCBvciBwbmd2Y3JkLmMgKi8KLWV4dGVybiBQTkdfRVhQT1JUKGludCxwbmdfbW14X3N1cHBvcnQpIFBOR0FSRygodm9pZCkpOwotCi0vKiBNYWludGFpbmVyOiBQdXQgbmV3IHB1YmxpYyBwcm90b3R5cGVzIGhlcmUgXiwgaW4gbGlicG5nLjMsIGFuZCBwcm9qZWN0IGRlZnMgKi8KLQogI2RlZmluZSBQTkdfSEVBREVSX1ZFUlNJT05fU1RSSU5HIFwKLSAgICIgbGlicG5nIHZlcnNpb24gMS4wLjliZXRhMTAgLSBKYW51YXJ5IDE2LCAyMDAxIChoZWFkZXIpXG4iCisgICAiIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMCAoaGVhZGVyKVxuIgogCiAjaWZkZWYgUE5HX1JFQURfQ09NUE9TSVRFX05PRElWX1NVUFBPUlRFRAogLyogV2l0aCB0aGVzZSByb3V0aW5lcyB3ZSBhdm9pZCBhbiBpbnRlZ2VyIGRpdmlkZSwgd2hpY2ggd2lsbCBiZSBzbG93ZXIgb24KQEAgLTIyODYsNyArMjI2Niw2IEBACiAjZGVmaW5lIFBOR19XUk9URV90SU1FICAgICAgICAgICAgIDB4MjAwCiAjZGVmaW5lIFBOR19XUk9URV9JTkZPX0JFRk9SRV9QTFRFIDB4NDAwCiAjZGVmaW5lIFBOR19CQUNLR1JPVU5EX0lTX0dSQVkgICAgIDB4ODAwCi0jZGVmaW5lIFBOR19IQVZFX1BOR19TSUdOQVRVUkUgICAgMHgxMDAwCiAKIC8qIGZsYWdzIGZvciB0aGUgdHJhbnNmb3JtYXRpb25zIHRoZSBQTkcgbGlicmFyeSBkb2VzIG9uIHRoZSBpbWFnZSBkYXRhICovCiAjZGVmaW5lIFBOR19CR1IgICAgICAgICAgICAgICAgMHgwMDAxCkBAIC0yNDQ4LDcgKzI0MjcsNyBAQAogI2VuZGlmIC8qICFQTkdfUkVBRF9CSUdfRU5ESUFOX1NVUFBPUlRFRCAqLwogCiAvKiBJbml0aWFsaXplIHBuZ19wdHIgc3RydWN0IGZvciByZWFkaW5nLCBhbmQgYWxsb2NhdGUgYW55IG90aGVyIG1lbW9yeS4KLSAqIChvbGQgaW50ZXJmYWNlIC0gREVQUkVDQVRFRCAtIHVzZSBwbmdfY3JlYXRlX3JlYWRfc3RydWN0IGluc3RlYWQpLgorICogKG9sZCBpbnRlcmZhY2UgLSBERVBSRUNBVEVEKS4KICAqLwogZXh0ZXJuIFBOR19FWFBPUlQodm9pZCxwbmdfcmVhZF9pbml0KSBQTkdBUkcoKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpKTsKICNkZWZpbmUgcG5nX3JlYWRfaW5pdChwbmdfcHRyKSBwbmdfcmVhZF9pbml0XzIocG5nX3B0ciwgXApAQCAtMjQ1OCw3ICsyNDM3LDcgQEAKICAgICBwbmdfaW5mb19zaXplKSk7CiAKIC8qIEluaXRpYWxpemUgcG5nX3B0ciBzdHJ1Y3QgZm9yIHdyaXRpbmcsIGFuZCBhbGxvY2F0ZSBhbnkgb3RoZXIgbWVtb3J5LgotICogKG9sZCBpbnRlcmZhY2UgLSBERVBSRUNBVEVEIC0gdXNlIHBuZ19jcmVhdGVfd3JpdGVfc3RydWN0IGluc3RlYWQpLgorICogKG9sZCBpbnRlcmZhY2UgLSBERVBSRUNBVEVEKS4KICAqLwogZXh0ZXJuIFBOR19FWFBPUlQodm9pZCxwbmdfd3JpdGVfaW5pdCkgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyKSk7CiAjZGVmaW5lIHBuZ193cml0ZV9pbml0KHBuZ19wdHIpIHBuZ193cml0ZV9pbml0XzIocG5nX3B0ciwgXApAQCAtMjYwNSw3ICsyNTg0LDYgQEAKIFBOR19FWFRFUk4gdm9pZCBwbmdfd3JpdGVfaUNDUCBQTkdBUkcoKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsCiAgICBwbmdfY2hhcnAgbmFtZSwgaW50IGNvbXByZXNzaW9uX3R5cGUsCiAgICBwbmdfY2hhcnAgcHJvZmlsZSwgaW50IHByb2ZsZW4pKTsKLSAgIC8qIE5vdGUgdG8gbWFpbnRhaW5lcjogcHJvZmlsZSBzaG91bGQgYmUgcG5nX2J5dGVwICovCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoUE5HX1dSSVRFX3NQTFRfU1VQUE9SVEVEKQpAQCAtMjcwMCwxNSArMjY3OCwxMCBAQAogCiAjaWYgZGVmaW5lZChQTkdfUkVBRF9JTlRFUkxBQ0lOR19TVVBQT1JURUQpCiAvKiBleHBhbmQgYW4gaW50ZXJsYWNlZCByb3cgKi8KLS8qIE9MRCBpbnRlcmZhY2U6CiBQTkdfRVhURVJOIHZvaWQgcG5nX2RvX3JlYWRfaW50ZXJsYWNlIFBOR0FSRygocG5nX3Jvd19pbmZvcCByb3dfaW5mbywKICAgIHBuZ19ieXRlcCByb3csIGludCBwYXNzLCBwbmdfdWludF8zMiB0cmFuc2Zvcm1hdGlvbnMpKTsKLSAqLwotUE5HX0VYVEVSTiB2b2lkIHBuZ19kb19yZWFkX2ludGVybGFjZSBQTkdBUkcoKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpKTsKICNlbmRpZgogCi0vKiBHUlIgVE8gRE8gKDIuMCBvciB3aGVuZXZlcik6ICBzaW1wbGlmeSBvdGhlciBpbnRlcm5hbCBjYWxsaW5nIGludGVyZmFjZXMgKi8KLQogI2lmIGRlZmluZWQoUE5HX1dSSVRFX0lOVEVSTEFDSU5HX1NVUFBPUlRFRCkKIC8qIGdyYWIgcGl4ZWxzIG91dCBvZiBhIHJvdyBmb3IgYW4gaW50ZXJsYWNlZCBwYXNzICovCiBQTkdfRVhURVJOIHZvaWQgcG5nX2RvX3dyaXRlX2ludGVybGFjZSBQTkdBUkcoKHBuZ19yb3dfaW5mb3Agcm93X2luZm8sCkBAIC0zMDEzLDE1ICsyOTg2LDYgQEAKIAogI2VuZGlmIC8qIFBOR19QUk9HUkVTU0lWRV9SRUFEX1NVUFBPUlRFRCAqLwogCi0jaWZkZWYgUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQKLVBOR19FWFRFUk4gdm9pZCBwbmdfZG9fcmVhZF9pbnRyYXBpeGVsIFBOR0FSRygocG5nX3Jvd19pbmZvcCByb3dfaW5mbywKLSAgIHBuZ19ieXRlcCByb3cpKTsKLVBOR19FWFRFUk4gdm9pZCBwbmdfZG9fd3JpdGVfaW50cmFwaXhlbCBQTkdBUkcoKHBuZ19yb3dfaW5mb3Agcm93X2luZm8sCi0gICBwbmdfYnl0ZXAgcm93KSk7Ci0jZW5kaWYKLQotLyogTWFpbnRhaW5lcjogUHV0IG5ldyBwcml2YXRlIHByb3RvdHlwZXMgaGVyZSBeIGFuZCBpbiBsaWJwbmdwZi4zICovCi0KICNlbmRpZiAvKiBQTkdfSU5URVJOQUwgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9wbmdhc21yZC5oIGIvcG5nYXNtcmQuaAppbmRleCBjYWIzZmI1Li4wMjkzOTIwIDEwMDY0NAotLS0gYS9wbmdhc21yZC5oCisrKyBiL3BuZ2FzbXJkLmgKQEAgLTEsMTEgKzEsMzkgQEAKIC8qIHBuZ2FzbXJkLmggLSBhc3NlbWJsZXIgdmVyc2lvbiBvZiB1dGlsaXRpZXMgdG8gcmVhZCBhIFBORyBmaWxlCiAgKgotICogbGlicG5nIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQorICogbGlicG5nIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKgogICovCiAKLS8qIFRoaXMgZmlsZSBpcyBvYnNvbGV0ZSBpbiBsaWJwbmctMS4wLjkgYW5kIGxhdGVyOyBpdHMgY29udGVudHMgbm93IGFwcGVhcgotICogYXQgdGhlIGVuZCBvZiBwbmdjb25mLmguCisjaWZuZGVmIFBOR0FTTVJEX0gKKyNkZWZpbmUgUE5HQVNNUkRfSAorCisjaWZkZWYgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRAorCisvKiBTZXQgdGhpcyBpbiB0aGUgbWFrZWZpbGUgZm9yIFZDKysgb24gUGVudGl1bSwgbm90IGluIHBuZ2NvbmYuaCAqLworLyogUGxhdGZvcm0gbXVzdCBiZSBQZW50aXVtLiAgTWFrZWZpbGUgbXVzdCBhc3NlbWJsZSBhbmQgbG9hZCBwbmd2Y3JkLmMgLgorICogTU1YIHdpbGwgYmUgZGV0ZWN0ZWQgYXQgcnVuIHRpbWUgYW5kIHVzZWQgaWYgcHJlc2VudC4KICAqLworI2lmZGVmIFBOR19VU0VfUE5HVkNSRAorIyAgZGVmaW5lIFBOR19IQVZFX0FTU0VNQkxFUl9DT01CSU5FX1JPVworIyAgZGVmaW5lIFBOR19IQVZFX0FTU0VNQkxFUl9SRUFEX0lOVEVSTEFDRQorIyAgZGVmaW5lIFBOR19IQVZFX0FTU0VNQkxFUl9SRUFEX0ZJTFRFUl9ST1cKKyNlbmRpZgorCisvKiBTZXQgdGhpcyBpbiB0aGUgbWFrZWZpbGUgZm9yIGdjYy9hcyBvbiBQZW50aXVtLCBub3QgaW4gcG5nY29uZi5oICovCisvKiBQbGF0Zm9ybSBtdXN0IGJlIFBlbnRpdW0uICBNYWtlZmlsZSBtdXN0IGFzc2VtYmxlIGFuZCBsb2FkIHBuZ2djY3JkLmMgLgorICogTU1YIHdpbGwgYmUgZGV0ZWN0ZWQgYXQgcnVuIHRpbWUgYW5kIHVzZWQgaWYgcHJlc2VudC4KKyAqLworI2lmZGVmIFBOR19VU0VfUE5HR0NDUkQKKyMgIGRlZmluZSBQTkdfSEFWRV9BU1NFTUJMRVJfQ09NQklORV9ST1cKKyMgIGRlZmluZSBQTkdfSEFWRV9BU1NFTUJMRVJfUkVBRF9JTlRFUkxBQ0UKKyMgIGRlZmluZSBQTkdfSEFWRV9BU1NFTUJMRVJfUkVBRF9GSUxURVJfUk9XCisjZW5kaWYKKy8qCisgICAgR1JSIG5vdGVzOgorICAgICAgLSBzZWUgcG5nZ2NjcmQuYyBmb3IgaW5mbyBhYm91dCB3aGF0IGlzIGN1cnJlbnRseSBlbmFibGVkCisgKi8KKworI2VuZGlmCisjZW5kaWYgLyogUE5HQVNNUkRfSCAqLwpkaWZmIC0tZ2l0IGEvcG5nY29uZi5oIGIvcG5nY29uZi5oCmluZGV4IDBmNGYyMzMuLjEyZDEyZGQgMTAwNjQ0Ci0tLSBhL3BuZ2NvbmYuaAorKysgYi9wbmdjb25mLmgKQEAgLTEsOCArMSw4IEBACiAvKiBwbmdjb25mLmggLSBtYWNoaW5lIGNvbmZpZ3VyYWJsZSBmaWxlIGZvciBsaWJwbmcKICAqCi0gKiBsaWJwbmcgMS4wLjliZXRhMTAgLSBKYW51YXJ5IDE2LCAyMDAxCisgKiBsaWJwbmcgMS4wLjliZXRhMiAtIE5vdmVtYmVyIDE5LCAyMDAwCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCiAgKiAoVmVyc2lvbiAwLjg4IENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy4pCiAgKi8KQEAgLTMwLDExICszMCwxMSBAQAogICovCiAKICNpZm5kZWYgUE5HX1pCVUZfU0laRQotIyAgZGVmaW5lIFBOR19aQlVGX1NJWkUgODE5MgorI2RlZmluZSBQTkdfWkJVRl9TSVpFIDgxOTIKICNlbmRpZgogCi0jaWZuZGVmIFBOR19OT19GTE9BVElOR19QT0lOVF9TVVBQT1JURUQKLSMgIGRlZmluZSBQTkdfRkxPQVRJTkdfUE9JTlRfU1VQUE9SVEVECisjaWZuZGVmIFBOR19OT19GTE9BVElOR19QT0lOVF9TVVBQT1JURUQgCisjZGVmaW5lIFBOR19GTE9BVElOR19QT0lOVF9TVVBQT1JURUQKICNlbmRpZgogCiAvKiBJZiB5b3UgYXJlIHJ1bm5pbmcgb24gYSBtYWNoaW5lIHdoZXJlIHlvdSBjYW5ub3QgYWxsb2NhdGUgbW9yZQpAQCAtNDYsMTQgKzQ2LDE0IEBACiAjZGVmaW5lIFBOR19NQVhfTUFMTE9DXzY0SwogICovCiAjaWYgZGVmaW5lZChNQVhTRUdfNjRLKSAmJiAhZGVmaW5lZChQTkdfTUFYX01BTExPQ182NEspCi0jICBkZWZpbmUgUE5HX01BWF9NQUxMT0NfNjRLCisjZGVmaW5lIFBOR19NQVhfTUFMTE9DXzY0SwogI2VuZGlmCiAKIC8qIFNwZWNpYWwgbXVuZ2luZyB0byBzdXBwb3J0IGRvaW5nIHRoaW5ncyB0aGUgJ2N5Z3dpbicgd2F5OgogICogJ05vcm1hbCcgcG5nLW9uLXdpbjMyIGRlZmluZXMvZGVmYXVsdHM6CiAgKiAgIFBOR19CVUlMRF9ETEwgLS0gYnVpbGRpbmcgZGxsCiAgKiAgIFBOR19VU0VfRExMICAgLS0gYnVpbGRpbmcgYW4gYXBwbGljYXRpb24sIGxpbmtpbmcgdG8gZGxsCi0gKiAgIChubyBkZWZpbmUpICAgLS0gYnVpbGRpbmcgc3RhdGljIGxpYnJhcnksIG9yIGJ1aWxkaW5nIGFuCisgKiAgIChubyBkZWZpbmUpICAgLS0gYnVpbGRpbmcgc3RhdGljIGxpYnJhcnksIG9yIGJ1aWxkaW5nIGFuIAogICogICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIGFuZCBsaW5raW5nIHRvIHRoZSBzdGF0aWMgbGliCiAgKiAnQ3lnd2luJyBkZWZpbmVzL2RlZmF1bHRzOgogICogICBQTkdfQlVJTERfRExMIC0tIGJ1aWxkaW5nIHRoZSBkbGwKQEAgLTExNywxMiArMTE3LDEyIEBACiAgKi8KIAogI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkKLSMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSAgIC8qIENvbnNvbGUgSS9PIGZ1bmN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzQ0UgKi8KLSMgIGRlZmluZSBQTkdfTk9fQ09OU09MRV9JTwotIyAgaWZkZWYgUE5HX0RFQlVHCi0jICAgIHVuZGVmIFBOR19ERUJVRwotIyAgZW5kaWYKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisvKiBDb25zb2xlIEkvTyBmdW5jdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93c0NFICovCisjZGVmaW5lIFBOR19OT19DT05TT0xFX0lPCisjaWZkZWYgUE5HX0RFQlVHCisjICB1bmRlZiBQTkdfREVCVUcKKyNlbmRpZgogI2VuZGlmCiAKICNpZmRlZiBQTkdfQlVJTERfRExMCkBAIC0xNTksMTMgKzE1OSwxMyBAQAogI2lmbmRlZiBQTkdBUkcKIAogI2lmZGVmIE9GIC8qIHpsaWIgcHJvdG90eXBlIG11bmdlciAqLwotIyAgZGVmaW5lIFBOR0FSRyhhcmdsaXN0KSBPRihhcmdsaXN0KQorI2RlZmluZSBQTkdBUkcoYXJnbGlzdCkgT0YoYXJnbGlzdCkKICNlbHNlCiAKICNpZmRlZiBfTk9fUFJPVE8KLSMgIGRlZmluZSBQTkdBUkcoYXJnbGlzdCkgKCkKKyNkZWZpbmUgUE5HQVJHKGFyZ2xpc3QpICgpCiAjZWxzZQotIyAgZGVmaW5lIFBOR0FSRyhhcmdsaXN0KSBhcmdsaXN0CisjZGVmaW5lIFBOR0FSRyhhcmdsaXN0KSBhcmdsaXN0CiAjZW5kaWYgLyogX05PX1BST1RPICovCiAKICNlbmRpZiAvKiBPRiAqLwpAQCAtMTc3LDE1ICsxNzcsMTUgQEAKICAqIG9uIG5vbi1NYWMgcGxhdGZvcm1zLgogICovCiAjaWZuZGVmIE1BQ09TCi0jICBpZiAoZGVmaW5lZChfX01XRVJLU19fKSAmJiBkZWZpbmVkKG1hY2ludG9zaCkpIHx8IGRlZmluZWQoYXBwbGVjKSB8fCBcCi0gICAgICBkZWZpbmVkKFRISU5LX0MpIHx8IGRlZmluZWQoX19TQ19fKSB8fCBkZWZpbmVkKFRBUkdFVF9PU19NQUMpCi0jICAgIGRlZmluZSBNQUNPUwotIyAgZW5kaWYKKyNpZiAoZGVmaW5lZChfX01XRVJLU19fKSAmJiBkZWZpbmVkKG1hY2ludG9zaCkpIHx8IGRlZmluZWQoYXBwbGVjKSB8fCBcCisgICAgZGVmaW5lZChUSElOS19DKSB8fCBkZWZpbmVkKF9fU0NfXykgfHwgZGVmaW5lZChUQVJHRVRfT1NfTUFDKQorI2RlZmluZSBNQUNPUworI2VuZGlmCiAjZW5kaWYKIAogLyogZW5vdWdoIHBlb3BsZSBuZWVkIHRoaXMgZm9yIHZhcmlvdXMgcmVhc29ucyB0byBpbmNsdWRlIGl0IGhlcmUgKi8KICNpZiAhZGVmaW5lZChNQUNPUykgJiYgIWRlZmluZWQoUklTQ09TKSAmJiAhZGVmaW5lZChfV0lOMzJfV0NFKQotIyAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYKIAogI2lmbmRlZiBQTkdfU0VUSk1QX05PVF9TVVBQT1JURUQKQEAgLTIwNiwxMCArMjA2LDEwIEBACiAgICAgICBfX3BuZy5oX18gYWxyZWFkeSBpbmNsdWRlcyBzZXRqbXAuaDsKICAgICAgIF9fZG9udF9fIGluY2x1ZGUgaXQgYWdhaW4uOwogIyAgICBlbmRpZgotIyAgZW5kaWYgLyogX19saW51eF9fICovCisjZW5kaWYgLyogX19saW51eF9fICovCiAKLSAgIC8qIGluY2x1ZGUgc2V0am1wLmggZm9yIGVycm9yIGhhbmRsaW5nICovCi0jICBpbmNsdWRlIDxzZXRqbXAuaD4KKy8qIGluY2x1ZGUgc2V0am1wLmggZm9yIGVycm9yIGhhbmRsaW5nICovCisjaW5jbHVkZSA8c2V0am1wLmg+CiAKICMgIGlmZGVmIF9fbGludXhfXwogIyAgICBpZmRlZiBQTkdfU0FWRV9CU0RfU09VUkNFCkBAIC0yMjIsMTggKzIyMiwxNyBAQAogI2lmIGRlZmluZWQoX0FJWCkgJiYgZGVmaW5lZChfX3hsQ19fKQogLyogVGhpcyBwcmV2ZW50cyAiQUlYL3hsQyIgZnJvbSBnZW5lcmF0aW5nIGFuICJpbmRleChzLGMpIiBtYWNybyBpbiBzdHJpbmdzLmgKICAqIHRoYXQgY29uZmxpY3RzIHdpdGggbGlicG5nJ3MgcG5nX2NvbG9yXzE2LmluZGV4ICovCi0jICB1bmRlZiBfX1NUUl9fCisjdW5kZWYgX19TVFJfXwogI2VuZGlmCiAKICNpZmRlZiBCU0QKLSMgIGluY2x1ZGUgPHN0cmluZ3MuaD4KKyNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZWxzZQotIyAgaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZW5kaWYKIAogLyogT3RoZXIgZGVmaW5lcyBmb3IgdGhpbmdzIGxpa2UgbWVtb3J5IGFuZCB0aGUgbGlrZSBjYW4gZ28gaGVyZS4gICovCiAjaWZkZWYgUE5HX0lOVEVSTkFMCi0KICNpbmNsdWRlIDxzdGRsaWIuaD4KIAogLyogVGhlIGZ1bmN0aW9ucyBleHBvcnRlZCBieSBQTkdfRVhURVJOIGFyZSBQTkdfSU5URVJOQUwgZnVuY3Rpb25zLCB3aGljaApAQCAtMjUwLDI4ICsyNDksMjggQEAKICAqLwogCiAjaWYgZGVmaW5lZChQTkdfRkxPQVRJTkdfUE9JTlRfU1VQUE9SVEVEKQotIyAgaWYgZGVmaW5lZChNQUNPUykKLSAgICAgLyogV2UgbmVlZCB0byBjaGVjayB0aGF0IDxtYXRoLmg+IGhhc24ndCBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgZWFybGllcgotICAgICAgKiBhcyBpdCBzZWVtcyBpdCBkb2Vzbid0IGFncmVlIHdpdGggPGZwLmg+LCB5ZXQgd2Ugc2hvdWxkIHJlYWxseSB1c2UKLSAgICAgICogPGZwLmg+IGlmIHBvc3NpYmxlLgotICAgICAgKi8KLSMgICAgaWYgIWRlZmluZWQoX19NQVRIX0hfXykgJiYgIWRlZmluZWQoX19NQVRIX0gpICYmICFkZWZpbmVkKF9fY21hdGhfXykKLSMgICAgICBpbmNsdWRlIDxmcC5oPgotIyAgICBlbmRpZgotIyAgZWxzZQotIyAgICBpbmNsdWRlIDxtYXRoLmg+Ci0jICBlbmRpZgotIyAgaWYgZGVmaW5lZChfQU1JR0EpICYmIGRlZmluZWQoX19TQVNDKSAmJiBkZWZpbmVkKF9NNjg4ODEpCi0gICAgIC8qIEFtaWdhIFNBUy9DOiBXZSBtdXN0IGluY2x1ZGUgYnVpbHRpbiBGUFUgZnVuY3Rpb25zIHdoZW4gY29tcGlsaW5nIHVzaW5nCi0gICAgICAqIE1BVEg9Njg4ODEKLSAgICAgICovCi0jICAgIGluY2x1ZGUgPG02ODg4MS5oPgotIyAgZW5kaWYKKyNpZiBkZWZpbmVkKE1BQ09TKQorLyogV2UgbmVlZCB0byBjaGVjayB0aGF0IDxtYXRoLmg+IGhhc24ndCBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgZWFybGllcgorICogYXMgaXQgc2VlbXMgaXQgZG9lc24ndCBhZ3JlZSB3aXRoIDxmcC5oPiwgeWV0IHdlIHNob3VsZCByZWFsbHkgdXNlCisgKiA8ZnAuaD4gaWYgcG9zc2libGUuCisgKi8KKyNpZiAhZGVmaW5lZChfX01BVEhfSF9fKSAmJiAhZGVmaW5lZChfX01BVEhfSCkgJiYgIWRlZmluZWQoX19jbWF0aF9fKQorI2luY2x1ZGUgPGZwLmg+CisjZW5kaWYKKyNlbHNlCisjaW5jbHVkZSA8bWF0aC5oPgorI2VuZGlmCisjaWYgZGVmaW5lZChfQU1JR0EpICYmIGRlZmluZWQoX19TQVNDKSAmJiBkZWZpbmVkKF9NNjg4ODEpCisvKiBBbWlnYSBTQVMvQzogV2UgbXVzdCBpbmNsdWRlIGJ1aWx0aW4gRlBVIGZ1bmN0aW9ucyB3aGVuIGNvbXBpbGluZyB1c2luZworICogTUFUSD02ODg4MQorICovCisjaW5jbHVkZSA8bTY4ODgxLmg+CisjZW5kaWYKICNlbmRpZgogCiAvKiBDb2Rld2FycmlvciBvbiBOVCBoYXMgbGlua2luZyBwcm9ibGVtcyB3aXRob3V0IHRoaXMuICovCiAjaWYgKGRlZmluZWQoX19NV0VSS1NfXykgJiYgZGVmaW5lZChXSU4zMikpIHx8IGRlZmluZWQoX19TVERDX18pCi0jICBkZWZpbmUgUE5HX0FMV0FZU19FWFRFUk4KKyNkZWZpbmUgUE5HX0FMV0FZU19FWFRFUk4KICNlbmRpZgogCiAvKiBGb3Igc29tZSByZWFzb24sIEJvcmxhbmQgQysrIGRlZmluZXMgbWVtY21wLCBldGMuIGluIG1lbS5oLCBub3QKQEAgLTI3OSwxMiArMjc4LDEyIEBACiAgKiAiZmVhdHVyZSI/CiAgKi8KICNpZmRlZiBfX1RVUkJPQ19fCi0jICBpbmNsdWRlIDxtZW0uaD4KLSMgIGluY2x1ZGUgImFsbG9jLmgiCisjaW5jbHVkZSA8bWVtLmg+CisjaW5jbHVkZSAiYWxsb2MuaCIKICNlbmRpZgogCiAjaWZkZWYgX01TQ19WRVIKLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgogI2VuZGlmCiAKIC8qIFRoaXMgY29udHJvbHMgaG93IGZpbmUgdGhlIGRpdGhlcmluZyBnZXRzLiAgQXMgdGhpcyBhbGxvY2F0ZXMKQEAgLTI5MiwxMyArMjkxLDEzIEBACiAgKiB3aXRoIGRpdGhlcmluZyBxdWFsaXR5IGNhbiBkZWNyZWFzZSBzb21lIG9yIGFsbCBvZiB0aGVzZS4KICAqLwogI2lmbmRlZiBQTkdfRElUSEVSX1JFRF9CSVRTCi0jICBkZWZpbmUgUE5HX0RJVEhFUl9SRURfQklUUyA1CisjZGVmaW5lIFBOR19ESVRIRVJfUkVEX0JJVFMgNQogI2VuZGlmCiAjaWZuZGVmIFBOR19ESVRIRVJfR1JFRU5fQklUUwotIyAgZGVmaW5lIFBOR19ESVRIRVJfR1JFRU5fQklUUyA1CisjZGVmaW5lIFBOR19ESVRIRVJfR1JFRU5fQklUUyA1CiAjZW5kaWYKICNpZm5kZWYgUE5HX0RJVEhFUl9CTFVFX0JJVFMKLSMgIGRlZmluZSBQTkdfRElUSEVSX0JMVUVfQklUUyA1CisjZGVmaW5lIFBOR19ESVRIRVJfQkxVRV9CSVRTIDUKICNlbmRpZgogCiAvKiBUaGlzIGNvbnRyb2xzIGhvdyBmaW5lIHRoZSBnYW1tYSBjb3JyZWN0aW9uIGJlY29tZXMgd2hlbiB5b3UKQEAgLTMwOSwxNCArMzA4LDE0IEBACiAgKi8KIAogI2lmbmRlZiBQTkdfTUFYX0dBTU1BXzgKLSMgIGRlZmluZSBQTkdfTUFYX0dBTU1BXzggMTEKKyNkZWZpbmUgUE5HX01BWF9HQU1NQV84IDExCiAjZW5kaWYKIAogLyogVGhpcyBjb250cm9scyBob3cgbXVjaCBhIGRpZmZlcmVuY2UgaW4gZ2FtbWEgd2UgY2FuIHRvbGVyYXRlIGJlZm9yZQogICogd2UgYWN0dWFsbHkgc3RhcnQgZG9pbmcgZ2FtbWEgY29udmVyc2lvbi4KICAqLwogI2lmbmRlZiBQTkdfR0FNTUFfVEhSRVNIT0xECi0jICBkZWZpbmUgUE5HX0dBTU1BX1RIUkVTSE9MRCAwLjA1CisjZGVmaW5lIFBOR19HQU1NQV9USFJFU0hPTEQgMC4wNQogI2VuZGlmCiAKICNlbmRpZiAvKiBQTkdfSU5URVJOQUwgKi8KQEAgLTM4MSwxNjcgKzM4MCwxNjMgQEAKICAqLwogCiAjaWZkZWYgUE5HX0xFR0FDWV9TVVBQT1JURUQKLSMgIGRlZmluZSBQTkdfTk9fRlJFRV9NRQotIyAgZGVmaW5lIFBOR19OT19SRUFEX1VOS05PV05fQ0hVTktTCi0jICBkZWZpbmUgUE5HX05PX1dSSVRFX1VOS05PV05fQ0hVTktTCi0jICBkZWZpbmUgUE5HX05PX1JFQURfVVNFUl9DSFVOS1MKLSMgIGRlZmluZSBQTkdfTk9fUkVBRF9pQ0NQCi0jICBkZWZpbmUgUE5HX05PX1dSSVRFX2lDQ1AKLSMgIGRlZmluZSBQTkdfTk9fUkVBRF9pVFh0Ci0jICBkZWZpbmUgUE5HX05PX1dSSVRFX2lUWHQKLSMgIGRlZmluZSBQTkdfTk9fUkVBRF9zQ0FMCi0jICBkZWZpbmUgUE5HX05PX1dSSVRFX3NDQUwKLSMgIGRlZmluZSBQTkdfTk9fUkVBRF9zUExUCi0jICBkZWZpbmUgUE5HX05PX1dSSVRFX3NQTFQKLSMgIGRlZmluZSBQTkdfTk9fSU5GT19JTUFHRQotIyAgZGVmaW5lIFBOR19OT19SRUFEX1JHQl9UT19HUkFZCi0jICBkZWZpbmUgUE5HX05PX1JFQURfVVNFUl9UUkFOU0ZPUk0KLSMgIGRlZmluZSBQTkdfTk9fV1JJVEVfVVNFUl9UUkFOU0ZPUk0KLSMgIGRlZmluZSBQTkdfTk9fVVNFUl9NRU0KLSMgIGRlZmluZSBQTkdfTk9fUkVBRF9FTVBUWV9QTFRFCi0jICBkZWZpbmUgUE5HX05PX01OR19GRUFUVVJFUwotIyAgZGVmaW5lIFBOR19OT19GSVhFRF9QT0lOVF9TVVBQT1JURUQKKyNkZWZpbmUgUE5HX05PX0ZSRUVfTUUKKyNkZWZpbmUgUE5HX05PX1JFQURfVU5LTk9XTl9DSFVOS1MKKyNkZWZpbmUgUE5HX05PX1dSSVRFX1VOS05PV05fQ0hVTktTCisjZGVmaW5lIFBOR19OT19SRUFEX1VTRVJfQ0hVTktTCisjZGVmaW5lIFBOR19OT19SRUFEX2lDQ1AKKyNkZWZpbmUgUE5HX05PX1dSSVRFX2lDQ1AKKyNkZWZpbmUgUE5HX05PX1JFQURfaVRYdAorI2RlZmluZSBQTkdfTk9fV1JJVEVfaVRYdAorI2RlZmluZSBQTkdfTk9fUkVBRF9zQ0FMCisjZGVmaW5lIFBOR19OT19XUklURV9zQ0FMCisjZGVmaW5lIFBOR19OT19SRUFEX3NQTFQKKyNkZWZpbmUgUE5HX05PX1dSSVRFX3NQTFQKKyNkZWZpbmUgUE5HX05PX0lORk9fSU1BR0UKKyNkZWZpbmUgUE5HX05PX1JFQURfUkdCX1RPX0dSQVkKKyNkZWZpbmUgUE5HX05PX1JFQURfVVNFUl9UUkFOU0ZPUk0KKyNkZWZpbmUgUE5HX05PX1dSSVRFX1VTRVJfVFJBTlNGT1JNCisjZGVmaW5lIFBOR19OT19VU0VSX01FTQorI2RlZmluZSBQTkdfTk9fUkVBRF9FTVBUWV9QTFRFCisjZGVmaW5lIFBOR19OT19NTkdfRkVBVFVSRVMKKyNkZWZpbmUgUE5HX05PX0ZJWEVEX1BPSU5UX1NVUFBPUlRFRAogI2VuZGlmCiAKIC8qIElnbm9yZSBhdHRlbXB0IHRvIHR1cm4gb2ZmIGJvdGggZmxvYXRpbmcgYW5kIGZpeGVkIHBvaW50IHN1cHBvcnQgKi8KICNpZiAhZGVmaW5lZChQTkdfRkxPQVRJTkdfUE9JTlRfU1VQUE9SVEVEKSB8fCBcCi0gICAgIWRlZmluZWQoUE5HX05PX0ZJWEVEX1BPSU5UX1NVUFBPUlRFRCkKLSMgIGRlZmluZSBQTkdfRklYRURfUE9JTlRfU1VQUE9SVEVECisgIWRlZmluZWQoUE5HX05PX0ZJWEVEX1BPSU5UX1NVUFBPUlRFRCkKKyNkZWZpbmUgUE5HX0ZJWEVEX1BPSU5UX1NVUFBPUlRFRAogI2VuZGlmCiAKICNpZm5kZWYgUE5HX05PX0ZSRUVfTUUKLSMgIGRlZmluZSBQTkdfRlJFRV9NRV9TVVBQT1JURUQKKyNkZWZpbmUgUE5HX0ZSRUVfTUVfU1VQUE9SVEVECiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKFBOR19SRUFEX1RSQU5TRk9STVNfTk9UX1NVUFBPUlRFRCkgJiYgXAogICAgICFkZWZpbmVkKFBOR19OT19SRUFEX1RSQU5TRk9STVMpCi0jICBkZWZpbmUgUE5HX1JFQURfVFJBTlNGT1JNU19TVVBQT1JURUQKKyNkZWZpbmUgUE5HX1JFQURfVFJBTlNGT1JNU19TVVBQT1JURUQKICNlbmRpZgogI2lmICFkZWZpbmVkKFBOR19XUklURV9UUkFOU0ZPUk1TX05PVF9TVVBQT1JURUQpICYmIFwKICAgICAhZGVmaW5lZChQTkdfTk9fV1JJVEVfVFJBTlNGT1JNUykKLSMgIGRlZmluZSBQTkdfV1JJVEVfVFJBTlNGT1JNU19TVVBQT1JURUQKKyNkZWZpbmUgUE5HX1dSSVRFX1RSQU5TRk9STVNfU1VQUE9SVEVECiAjZW5kaWYKIAogI2lmZGVmIFBOR19SRUFEX1RSQU5TRk9STVNfU1VQUE9SVEVECi0jICBpZm5kZWYgUE5HX05PX1JFQURfRVhQQU5ECi0jICAgIGRlZmluZSBQTkdfUkVBRF9FWFBBTkRfU1VQUE9SVEVECi0jICBlbmRpZgotIyAgaWZuZGVmIFBOR19OT19SRUFEX1NISUZUCi0jICAgIGRlZmluZSBQTkdfUkVBRF9TSElGVF9TVVBQT1JURUQKLSMgIGVuZGlmCi0jICBpZm5kZWYgUE5HX05PX1JFQURfUEFDSwotIyAgICBkZWZpbmUgUE5HX1JFQURfUEFDS19TVVBQT1JURUQKLSMgIGVuZGlmCi0jICBpZm5kZWYgUE5HX05PX1JFQURfQkdSCi0jICAgIGRlZmluZSBQTkdfUkVBRF9CR1JfU1VQUE9SVEVECi0jICBlbmRpZgotIyAgaWZuZGVmIFBOR19OT19SRUFEX1NXQVAKLSMgICAgZGVmaW5lIFBOR19SRUFEX1NXQVBfU1VQUE9SVEVECi0jICBlbmRpZgotIyAgaWZuZGVmIFBOR19OT19SRUFEX1BBQ0tTV0FQCi0jICAgIGRlZmluZSBQTkdfUkVBRF9QQUNLU1dBUF9TVVBQT1JURUQKLSMgIGVuZGlmCi0jICBpZm5kZWYgUE5HX05PX1JFQURfSU5WRVJUCi0jICAgIGRlZmluZSBQTkdfUkVBRF9JTlZFUlRfU1VQUE9SVEVECi0jICBlbmRpZgotIyAgaWZuZGVmIFBOR19OT19SRUFEX0RJVEhFUgotIyAgICBkZWZpbmUgUE5HX1JFQURfRElUSEVSX1NVUFBPUlRFRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBQTkdfTk9fUkVBRF9CQUNLR1JPVU5ECi0jICAgIGRlZmluZSBQTkdfUkVBRF9CQUNLR1JPVU5EX1NVUFBPUlRFRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBQTkdfTk9fUkVBRF8xNl9UT184Ci0jICAgIGRlZmluZSBQTkdfUkVBRF8xNl9UT184X1NVUFBPUlRFRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBQTkdfTk9fUkVBRF9GSUxMRVIKLSMgICAgZGVmaW5lIFBOR19SRUFEX0ZJTExFUl9TVVBQT1JURUQKLSMgIGVuZGlmCi0jICBpZm5kZWYgUE5HX05PX1JFQURfR0FNTUEKLSMgICAgZGVmaW5lIFBOR19SRUFEX0dBTU1BX1NVUFBPUlRFRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBQTkdfTk9fUkVBRF9HUkFZX1RPX1JHQgotIyAgICBkZWZpbmUgUE5HX1JFQURfR1JBWV9UT19SR0JfU1VQUE9SVEVECi0jICBlbmRpZgotIyAgaWZuZGVmIFBOR19OT19SRUFEX1NXQVBfQUxQSEEKLSMgICAgZGVmaW5lIFBOR19SRUFEX1NXQVBfQUxQSEFfU1VQUE9SVEVECi0jICBlbmRpZgotIyAgaWZuZGVmIFBOR19OT19SRUFEX0lOVkVSVF9BTFBIQQotIyAgICBkZWZpbmUgUE5HX1JFQURfSU5WRVJUX0FMUEhBX1NVUFBPUlRFRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBQTkdfTk9fUkVBRF9TVFJJUF9BTFBIQQotIyAgICBkZWZpbmUgUE5HX1JFQURfU1RSSVBfQUxQSEFfU1VQUE9SVEVECi0jICBlbmRpZgotIyAgaWZuZGVmIFBOR19OT19SRUFEX1VTRVJfVFJBTlNGT1JNCi0jICAgIGRlZmluZSBQTkdfUkVBRF9VU0VSX1RSQU5TRk9STV9TVVBQT1JURUQKLSMgIGVuZGlmCi0jICBpZm5kZWYgUE5HX05PX1JFQURfUkdCX1RPX0dSQVkKLSMgICAgZGVmaW5lIFBOR19SRUFEX1JHQl9UT19HUkFZX1NVUFBPUlRFRAotIyAgZW5kaWYKKyNpZm5kZWYgUE5HX05PX1JFQURfRVhQQU5ECisjZGVmaW5lIFBOR19SRUFEX0VYUEFORF9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF9TSElGVAorI2RlZmluZSBQTkdfUkVBRF9TSElGVF9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF9QQUNLCisjZGVmaW5lIFBOR19SRUFEX1BBQ0tfU1VQUE9SVEVECisjZW5kaWYKKyNpZm5kZWYgUE5HX05PX1JFQURfQkdSCisjZGVmaW5lIFBOR19SRUFEX0JHUl9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF9TV0FQCisjZGVmaW5lIFBOR19SRUFEX1NXQVBfU1VQUE9SVEVECisjZW5kaWYKKyNpZm5kZWYgUE5HX05PX1JFQURfUEFDS1NXQVAKKyNkZWZpbmUgUE5HX1JFQURfUEFDS1NXQVBfU1VQUE9SVEVECisjZW5kaWYKKyNpZm5kZWYgUE5HX05PX1JFQURfSU5WRVJUCisjZGVmaW5lIFBOR19SRUFEX0lOVkVSVF9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF9ESVRIRVIKKyNkZWZpbmUgUE5HX1JFQURfRElUSEVSX1NVUFBPUlRFRAorI2VuZGlmCisjaWZuZGVmIFBOR19OT19SRUFEX0JBQ0tHUk9VTkQKKyNkZWZpbmUgUE5HX1JFQURfQkFDS0dST1VORF9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF8xNl9UT184CisjZGVmaW5lIFBOR19SRUFEXzE2X1RPXzhfU1VQUE9SVEVECisjZW5kaWYKKyNpZm5kZWYgUE5HX05PX1JFQURfRklMTEVSCisjZGVmaW5lIFBOR19SRUFEX0ZJTExFUl9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF9HQU1NQQorI2RlZmluZSBQTkdfUkVBRF9HQU1NQV9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF9HUkFZX1RPX1JHQgorI2RlZmluZSBQTkdfUkVBRF9HUkFZX1RPX1JHQl9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF9TV0FQX0FMUEhBCisjZGVmaW5lIFBOR19SRUFEX1NXQVBfQUxQSEFfU1VQUE9SVEVECisjZW5kaWYKKyNpZm5kZWYgUE5HX05PX1JFQURfSU5WRVJUX0FMUEhBCisjZGVmaW5lIFBOR19SRUFEX0lOVkVSVF9BTFBIQV9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF9TVFJJUF9BTFBIQQorI2RlZmluZSBQTkdfUkVBRF9TVFJJUF9BTFBIQV9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF9VU0VSX1RSQU5TRk9STQorI2RlZmluZSBQTkdfUkVBRF9VU0VSX1RSQU5TRk9STV9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF9SR0JfVE9fR1JBWQorI2RlZmluZSBQTkdfUkVBRF9SR0JfVE9fR1JBWV9TVVBQT1JURUQKKyNlbmRpZgogI2VuZGlmIC8qIFBOR19SRUFEX1RSQU5TRk9STVNfU1VQUE9SVEVEICovCiAKICNpZiAhZGVmaW5lZChQTkdfTk9fUFJPR1JFU1NJVkVfUkVBRCkgJiYgXAotICFkZWZpbmVkKFBOR19QUk9HUkVTU0lWRV9SRUFEX05PVF9TVVBQT1JURUQpICAvKiBpZiB5b3UgZG9uJ3QgZG8gcHJvZ3Jlc3NpdmUgKi8KLSMgIGRlZmluZSBQTkdfUFJPR1JFU1NJVkVfUkVBRF9TVVBQT1JURUQgICAgIC8qIHJlYWRpbmcuICBUaGlzIGlzIG5vdCB0YWxraW5nICovCisgIWRlZmluZWQoUE5HX1BST0dSRVNTSVZFX1JFQURfTk9UX1NVUFBPUlRFRCkgLyogaWYgeW91IGRvbid0IGRvIHByb2dyZXNzaXZlICAgKi8KKyNkZWZpbmUgUE5HX1BST0dSRVNTSVZFX1JFQURfU1VQUE9SVEVEICAgICAgIC8qIHJlYWRpbmcuICBUaGlzIGlzIG5vdCB0YWxraW5nICovCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWJvdXQgaW50ZXJsYWNpbmcgY2FwYWJpbGl0eSEgIFlvdSdsbCAqLwogICAgICAgICAgICAgICAvKiBzdGlsbCBoYXZlIGludGVybGFjaW5nIHVubGVzcyB5b3UgY2hhbmdlIHRoZSBmb2xsb3dpbmcgbGluZTogKi8KLQogI2RlZmluZSBQTkdfUkVBRF9JTlRFUkxBQ0lOR19TVVBQT1JURUQgLyogcmVxdWlyZWQgZm9yIFBORy1jb21wbGlhbnQgZGVjb2RlcnMgKi8KIAogI2lmbmRlZiBQTkdfTk9fUkVBRF9DT01QT1NJVEVfTk9ESVYKLSMgIGlmbmRlZiBQTkdfTk9fUkVBRF9DT01QT1NJVEVEX05PRElWICAvKiBsaWJwbmctMS4wLnggbWlzc3BlbGxpbmcgKi8KLSMgICAgZGVmaW5lIFBOR19SRUFEX0NPTVBPU0lURV9OT0RJVl9TVVBQT1JURUQgICAvKiB3ZWxsIHRlc3RlZCBvbiBJbnRlbCwgU0dJICovCi0jICBlbmRpZgorI2lmbmRlZiBQTkdfTk9fUkVBRF9DT01QT1NJVEVEX05PRElWICAvKiBsaWJwbmctMS4wLnggbWlzc3BlbGxpbmcgKi8KKyNkZWZpbmUgUE5HX1JFQURfQ09NUE9TSVRFX05PRElWX1NVUFBPUlRFRCAgICAvKiB3ZWxsIHRlc3RlZCBvbiBJbnRlbCBhbmQgU0dJICovCisjZW5kaWYKICNlbmRpZgogCi0vKiBEaXNhYmxlIGlmIHlvdSBkb24ndCBuZWVkIHRvIHN1cHBvcnQgUE5HcyB0aGF0IGFyZSBlbWJlZGRlZCBpbiBNTkcKLSAgIGRhdGFzdHJlYW1zICovCiAjaWZuZGVmIFBOR19OT19NTkdfRkVBVFVSRVMKLSMgIGRlZmluZSBQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRAorI2RlZmluZSBQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCAgLyogVXNlZnVsIGZvciBNTkcgYXBwbGljYXRpb25zICovCiAjZW5kaWYKLQotLyogRGVwcmVjYXRlZCwgd2lsbCBiZSByZW1vdmVkIGZyb20gdmVyc2lvbiAyLjAuMCAqLworLyogRGVwcmVjYXRlZCwgd2lsbCBiZSByZW1vdmVkICovCiAjaWZuZGVmIFBOR19OT19SRUFEX0VNUFRZX1BMVEUKLSMgIGRlZmluZSBQTkdfUkVBRF9FTVBUWV9QTFRFX1NVUFBPUlRFRAorI2RlZmluZSBQTkdfUkVBRF9FTVBUWV9QTFRFX1NVUFBPUlRFRAogI2VuZGlmCiAKICNpZmRlZiBQTkdfV1JJVEVfVFJBTlNGT1JNU19TVVBQT1JURUQKLSMgIGlmbmRlZiBQTkdfTk9fV1JJVEVfU0hJRlQKLSMgICAgZGVmaW5lIFBOR19XUklURV9TSElGVF9TVVBQT1JURUQKLSMgIGVuZGlmCi0jICBpZm5kZWYgUE5HX05PX1dSSVRFX1BBQ0sKLSMgICAgZGVmaW5lIFBOR19XUklURV9QQUNLX1NVUFBPUlRFRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBQTkdfTk9fV1JJVEVfQkdSCi0jICAgIGRlZmluZSBQTkdfV1JJVEVfQkdSX1NVUFBPUlRFRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBQTkdfTk9fV1JJVEVfU1dBUAotIyAgICBkZWZpbmUgUE5HX1dSSVRFX1NXQVBfU1VQUE9SVEVECi0jICBlbmRpZgotIyAgaWZuZGVmIFBOR19OT19XUklURV9QQUNLU1dBUAotIyAgICBkZWZpbmUgUE5HX1dSSVRFX1BBQ0tTV0FQX1NVUFBPUlRFRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBQTkdfTk9fV1JJVEVfSU5WRVJUCi0jICAgIGRlZmluZSBQTkdfV1JJVEVfSU5WRVJUX1NVUFBPUlRFRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBQTkdfTk9fV1JJVEVfRklMTEVSCi0jICAgIGRlZmluZSBQTkdfV1JJVEVfRklMTEVSX1NVUFBPUlRFRCAgIC8qIHNhbWUgYXMgV1JJVEVfU1RSSVBfQUxQSEEgKi8KLSMgIGVuZGlmCi0jICBpZm5kZWYgUE5HX05PX1dSSVRFX1NXQVBfQUxQSEEKLSMgICAgZGVmaW5lIFBOR19XUklURV9TV0FQX0FMUEhBX1NVUFBPUlRFRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBQTkdfTk9fV1JJVEVfSU5WRVJUX0FMUEhBCi0jICAgIGRlZmluZSBQTkdfV1JJVEVfSU5WRVJUX0FMUEhBX1NVUFBPUlRFRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBQTkdfTk9fV1JJVEVfVVNFUl9UUkFOU0ZPUk0KLSMgICAgZGVmaW5lIFBOR19XUklURV9VU0VSX1RSQU5TRk9STV9TVVBQT1JURUQKLSMgIGVuZGlmCisjaWZuZGVmIFBOR19OT19XUklURV9TSElGVAorI2RlZmluZSBQTkdfV1JJVEVfU0hJRlRfU1VQUE9SVEVECisjZW5kaWYKKyNpZm5kZWYgUE5HX05PX1dSSVRFX1BBQ0sKKyNkZWZpbmUgUE5HX1dSSVRFX1BBQ0tfU1VQUE9SVEVECisjZW5kaWYKKyNpZm5kZWYgUE5HX05PX1dSSVRFX0JHUgorI2RlZmluZSBQTkdfV1JJVEVfQkdSX1NVUFBPUlRFRAorI2VuZGlmCisjaWZuZGVmIFBOR19OT19XUklURV9TV0FQCisjZGVmaW5lIFBOR19XUklURV9TV0FQX1NVUFBPUlRFRAorI2VuZGlmCisjaWZuZGVmIFBOR19OT19XUklURV9QQUNLU1dBUAorI2RlZmluZSBQTkdfV1JJVEVfUEFDS1NXQVBfU1VQUE9SVEVECisjZW5kaWYKKyNpZm5kZWYgUE5HX05PX1dSSVRFX0lOVkVSVAorI2RlZmluZSBQTkdfV1JJVEVfSU5WRVJUX1NVUFBPUlRFRAorI2VuZGlmCisjaWZuZGVmIFBOR19OT19XUklURV9GSUxMRVIKKyNkZWZpbmUgUE5HX1dSSVRFX0ZJTExFUl9TVVBQT1JURUQgIC8qIFRoaXMgaXMgdGhlIHNhbWUgYXMgV1JJVEVfU1RSSVBfQUxQSEEgKi8KKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fV1JJVEVfU1dBUF9BTFBIQQorI2RlZmluZSBQTkdfV1JJVEVfU1dBUF9BTFBIQV9TVVBQT1JURUQKKyNlbmRpZgorI2lmbmRlZiBQTkdfTk9fV1JJVEVfSU5WRVJUX0FMUEhBCisjZGVmaW5lIFBOR19XUklURV9JTlZFUlRfQUxQSEFfU1VQUE9SVEVECisjZW5kaWYKKyNpZm5kZWYgUE5HX05PX1dSSVRFX1VTRVJfVFJBTlNGT1JNCisjZGVmaW5lIFBOR19XUklURV9VU0VSX1RSQU5TRk9STV9TVVBQT1JURUQKKyNlbmRpZgogI2VuZGlmIC8qIFBOR19XUklURV9UUkFOU0ZPUk1TX1NVUFBPUlRFRCAqLwogCiAjaWYgZGVmaW5lZChQTkdfUkVBRF9VU0VSX1RSQU5TRk9STV9TVVBQT1JURUQpIHx8IFwKLSAgICBkZWZpbmVkKFBOR19XUklURV9VU0VSX1RSQU5TRk9STV9TVVBQT1JURUQpCi0jICBpZm5kZWYgUE5HX05PX1VTRVJfVFJBTlNGT1JNX1BUUgotIyAgICBkZWZpbmUgUE5HX1VTRVJfVFJBTlNGT1JNX1BUUl9TVVBQT1JURUQKLSMgIGVuZGlmCitkZWZpbmVkKFBOR19XUklURV9VU0VSX1RSQU5TRk9STV9TVVBQT1JURUQpCisjaWZuZGVmIFBOR19OT19VU0VSX1RSQU5TRk9STV9QVFIKKyNkZWZpbmUgUE5HX1VTRVJfVFJBTlNGT1JNX1BUUl9TVVBQT1JURUQKKyNlbmRpZgogI2VuZGlmCiAKICNkZWZpbmUgUE5HX1dSSVRFX0lOVEVSTEFDSU5HX1NVUFBPUlRFRCAgLyogbm90IHJlcXVpcmVkIGZvciBQTkctY29tcGxpYW50CkBAIC01NTAsMjAgKzU0NSwyMCBAQAogCiAjaWYgIWRlZmluZWQoUE5HX05PX1dSSVRFX1dFSUdIVEVEX0ZJTFRFUikgJiYgXAogICAgICBkZWZpbmVkKFBOR19GTE9BVElOR19QT0lOVF9TVVBQT1JURUQpCi0jICBkZWZpbmUgUE5HX1dSSVRFX1dFSUdIVEVEX0ZJTFRFUl9TVVBQT1JURUQKKyNkZWZpbmUgUE5HX1dSSVRFX1dFSUdIVEVEX0ZJTFRFUl9TVVBQT1JURUQKICNlbmRpZgogCiAjaWZuZGVmIFBOR19OT19XUklURV9GTFVTSAotIyAgZGVmaW5lIFBOR19XUklURV9GTFVTSF9TVVBQT1JURUQKKyNkZWZpbmUgUE5HX1dSSVRFX0ZMVVNIX1NVUFBPUlRFRAogI2VuZGlmCiAKIC8qIERlcHJlY2F0ZWQsIHNlZSBQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCwgYWJvdmUgKi8KICNpZm5kZWYgUE5HX05PX1dSSVRFX0VNUFRZX1BMVEUKLSMgIGRlZmluZSBQTkdfV1JJVEVfRU1QVFlfUExURV9TVVBQT1JURUQKKyNkZWZpbmUgUE5HX1dSSVRFX0VNUFRZX1BMVEVfU1VQUE9SVEVECiAjZW5kaWYKIAogI2lmbmRlZiBQTkdfTk9fU1RESU8KLSMgIGRlZmluZSBQTkdfVElNRV9SRkMxMTIzX1NVUFBPUlRFRAorI2RlZmluZSBQTkdfVElNRV9SRkMxMTIzX1NVUFBPUlRFRAogI2VuZGlmCiAKIC8qIFRoaXMgYWRkcyBleHRyYSBmdW5jdGlvbnMgaW4gcG5nZ2V0LmMgZm9yIGFjY2Vzc2luZyBkYXRhIGZyb20gdGhlCkBAIC01ODMsMTYgKzU3OCwxMiBAQAogICogcG5nX2dldF95X29mZnNldF9taWNyb25zKCkKICAqLwogI2lmbmRlZiBQTkdfTk9fRUFTWV9BQ0NFU1MKLSMgIGRlZmluZSBQTkdfRUFTWV9BQ0NFU1NfU1VQUE9SVEVECisjZGVmaW5lIFBOR19FQVNZX0FDQ0VTU19TVVBQT1JURUQKICNlbmRpZgogCi0vKiBQTkdfQVNTRU1CTEVSX0NPREUgd2lsbCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdmVyc2lvbiAxLjIuMCAKLSAgIGV2ZW4gd2hlbiBQTkdfVVNFX1BOR1ZDUkQgb3IgUE5HX1VTRV9QTkdHQ0NSRCBpcyBub3QgZGVmaW5lZCAqLwotI2lmbmRlZiBQTkdfTk9fQVNTRU1CTEVSX0NPREUKLSMgIGlmIGRlZmluZWQoUE5HX1VTRV9QTkdWQ1JEKSB8fCBkZWZpbmVkKFBOR19VU0VfUE5HR0NDUkQpCi0jICAgIGRlZmluZSBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVECi0jICAgIGRlZmluZSBQTkdfTU1YX0NPREVfU1VQUE9SVEVECi0jICBlbmRpZgorI2lmIGRlZmluZWQoUE5HX1VTRV9QTkdWQ1JEKSB8fCBkZWZpbmVkKFBOR19VU0VfUE5HR0NDUkQpICYmIFwKKyAgIWRlZmluZWQoUE5HX05PX0FTU0VNQkxFUl9DT0RFKQorI2RlZmluZSBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVECiAjZW5kaWYKIAogLyogVGhlc2UgYXJlIGN1cnJlbnRseSBleHBlcmltZW50YWwgZmVhdHVyZXMsIGRlZmluZSB0aGVtIGlmIHlvdSB3YW50ICovCkBAIC02MDEsMTAgKzU5MiwxMCBAQAogLyoKICNkZWZpbmUgUE5HX1JFQURfMTZfVE9fOF9BQ0NVUkFURV9TQ0FMRV9TVVBQT1JURUQKICNpZm5kZWYgUE5HX05PX1VTRVJfTUVNCi0jICBkZWZpbmUgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAorI2RlZmluZSBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECiAjZW5kaWYKICNpZm5kZWYgUE5HX05PX1pBTExPQ19aRVJPCi0jICBkZWZpbmUgUE5HX1pBTExPQ19aRVJPCisjZGVmaW5lIFBOR19aQUxMT0NfWkVSTwogI2VuZGlmCiAqLwogCkBAIC02MzMsMTEgKzYyNCwxMSBAQAogCiAjaWYgIWRlZmluZWQoUE5HX1JFQURfQU5DSUxMQVJZX0NIVU5LU19OT1RfU1VQUE9SVEVEKSAmJiBcCiAgICAgIWRlZmluZWQoUE5HX05PX1JFQURfQU5DSUxMQVJZX0NIVU5LUykKLSMgIGRlZmluZSBQTkdfUkVBRF9BTkNJTExBUllfQ0hVTktTX1NVUFBPUlRFRAorI2RlZmluZSBQTkdfUkVBRF9BTkNJTExBUllfQ0hVTktTX1NVUFBPUlRFRAogI2VuZGlmCiAjaWYgIWRlZmluZWQoUE5HX1dSSVRFX0FOQ0lMTEFSWV9DSFVOS1NfTk9UX1NVUFBPUlRFRCkgJiYgXAogICAgICFkZWZpbmVkKFBOR19OT19XUklURV9BTkNJTExBUllfQ0hVTktTKQotIyAgZGVmaW5lIFBOR19XUklURV9BTkNJTExBUllfQ0hVTktTX1NVUFBPUlRFRAorI2RlZmluZSBQTkdfV1JJVEVfQU5DSUxMQVJZX0NIVU5LU19TVVBQT1JURUQKICNlbmRpZgogCiAjaWZkZWYgUE5HX1JFQURfQU5DSUxMQVJZX0NIVU5LU19TVVBQT1JURUQKQEAgLTczOSwxNSArNzMwLDEzIEBACiAjICBkZWZpbmUgUE5HX1JFQURfT1BUX1BMVEVfU1VQUE9SVEVEIC8qIG9ubHkgYWZmZWN0cyBzdXBwb3J0IG9mIHRoZSAqLwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgIC8qIG9wdGlvbmFsIFBMVEUgY2h1bmsgaW4gUkdCIGFuZCBSR0JBIGltYWdlcyAqLwogI2lmIGRlZmluZWQoUE5HX1JFQURfaVRYdF9TVVBQT1JURUQpIHx8IGRlZmluZWQoUE5HX1JFQURfdEVYdF9TVVBQT1JURUQpIHx8IFwKLSAgICBkZWZpbmVkKFBOR19SRUFEX3pUWHRfU1VQUE9SVEVEKQorICBkZWZpbmVkKFBOR19SRUFEX3pUWHRfU1VQUE9SVEVEKQogIyAgZGVmaW5lIFBOR19SRUFEX1RFWFRfU1VQUE9SVEVECiAjICBkZWZpbmUgUE5HX1RFWFRfU1VQUE9SVEVECiAjZW5kaWYKLQogI2VuZGlmIC8qIFBOR19SRUFEX0FOQ0lMTEFSWV9DSFVOS1NfU1VQUE9SVEVEICovCiAKICNpZmRlZiBQTkdfV1JJVEVfQU5DSUxMQVJZX0NIVU5LU19TVVBQT1JURUQKLQogI2lmZGVmIFBOR19OT19XUklURV9URVhUCiAjICBkZWZpbmUgUE5HX05PX1dSSVRFX2lUWHQKICMgIGRlZmluZSBQTkdfTk9fV1JJVEVfdEVYdApAQCAtODY3LDEzICs4NTYsMTIgQEAKICMgIGVuZGlmCiAjZW5kaWYKICNpZiBkZWZpbmVkKFBOR19XUklURV9pVFh0X1NVUFBPUlRFRCkgfHwgZGVmaW5lZChQTkdfV1JJVEVfdEVYdF9TVVBQT1JURUQpIHx8IFwKLSAgICBkZWZpbmVkKFBOR19XUklURV96VFh0X1NVUFBPUlRFRCkKKyAgZGVmaW5lZChQTkdfV1JJVEVfelRYdF9TVVBQT1JURUQpCiAjICBkZWZpbmUgUE5HX1dSSVRFX1RFWFRfU1VQUE9SVEVECiAjICBpZm5kZWYgUE5HX1RFWFRfU1VQUE9SVEVECiAjICAgIGRlZmluZSBQTkdfVEVYVF9TVVBQT1JURUQKICMgIGVuZGlmCiAjZW5kaWYKLQogI2VuZGlmIC8qIFBOR19XUklURV9BTkNJTExBUllfQ0hVTktTX1NVUFBPUlRFRCAqLwogCiAvKiBUdXJuIHRoaXMgb2ZmIHRvIGRpc2FibGUgcG5nX3JlYWRfcG5nKCkgYW5kCkBAIC05MjMsMjYgKzkxMSwyOCBAQAogLyogU2VwYXJhdGUgY29tcGlsZXIgZGVwZW5kZW5jaWVzIChwcm9ibGVtIGhlcmUgaXMgdGhhdCB6bGliLmggYWx3YXlzCiAgICBkZWZpbmVzIEZBUi4gKFNKVCkgKi8KICNpZmRlZiBfX0JPUkxBTkRDX18KLSMgIGlmIGRlZmluZWQoX19MQVJHRV9fKSB8fCBkZWZpbmVkKF9fSFVHRV9fKSB8fCBkZWZpbmVkKF9fQ09NUEFDVF9fKQotIyAgICBkZWZpbmUgTERBVEEgMQotIyAgZWxzZQotIyAgICBkZWZpbmUgTERBVEEgMAotIyAgZW5kaWYKLSAgIC8qIEdSUjogIHdoeSBpcyBDeWd3aW4gaW4gaGVyZT8gIEN5Z3dpbiBpcyBub3QgQm9ybGFuZCBDLi4uICovCi0jICBpZiAhZGVmaW5lZChfX1dJTjMyX18pICYmICFkZWZpbmVkKF9fRkxBVF9fKSAmJiAhZGVmaW5lZChfX0NZR1dJTl9fKQotIyAgICBkZWZpbmUgUE5HX01BWF9NQUxMT0NfNjRLCi0jICAgIGlmIChMREFUQSAhPSAxKQotIyAgICAgIGlmbmRlZiBGQVIKLSMgICAgICAgIGRlZmluZSBGQVIgX19mYXIKLSMgICAgICBlbmRpZgotIyAgICAgIGRlZmluZSBVU0VfRkFSX0tFWVdPUkQKLSMgICAgZW5kaWYgICAvKiBMREFUQSAhPSAxICovCi0gICAgIC8qIFBvc3NpYmx5IHVzZWZ1bCBmb3IgbW92aW5nIGRhdGEgb3V0IG9mIGRlZmF1bHQgc2VnbWVudC4KLSAgICAgICogVW5jb21tZW50IGl0IGlmIHlvdSB3YW50LiBDb3VsZCBhbHNvIGRlZmluZSBGQVJEQVRBIGFzCi0gICAgICAqIGNvbnN0IGlmIHlvdXIgY29tcGlsZXIgc3VwcG9ydHMgaXQuIChTSlQpCi0jICAgIGRlZmluZSBGQVJEQVRBIEZBUgotICAgICAgKi8KLSMgIGVuZGlmICAvKiBfX1dJTjMyX18sIF9fRkxBVF9fLCBfX0NZR1dJTl9fICovCisjaWYgZGVmaW5lZChfX0xBUkdFX18pIHx8IGRlZmluZWQoX19IVUdFX18pIHx8IGRlZmluZWQoX19DT01QQUNUX18pCisjZGVmaW5lIExEQVRBIDEKKyNlbHNlCisjZGVmaW5lIExEQVRBIDAKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoX19XSU4zMl9fKSAmJiAhZGVmaW5lZChfX0ZMQVRfXykgJiYgIWRlZmluZWQoX19DWUdXSU5fXykKKyNkZWZpbmUgUE5HX01BWF9NQUxMT0NfNjRLCisjaWYgKExEQVRBICE9IDEpCisjaWZuZGVmIEZBUgorI2RlZmluZSBGQVIgX19mYXIKKyNlbmRpZgorI2RlZmluZSBVU0VfRkFSX0tFWVdPUkQKKyNlbmRpZiAgIC8qIExEQVRBICE9IDEgKi8KKworLyogUG9zc2libHkgdXNlZnVsIGZvciBtb3ZpbmcgZGF0YSBvdXQgb2YgZGVmYXVsdCBzZWdtZW50LgorICogVW5jb21tZW50IGl0IGlmIHlvdSB3YW50LiBDb3VsZCBhbHNvIGRlZmluZSBGQVJEQVRBIGFzCisgKiBjb25zdCBpZiB5b3VyIGNvbXBpbGVyIHN1cHBvcnRzIGl0LiAoU0pUKQorIyAgZGVmaW5lIEZBUkRBVEEgRkFSCisgKi8KKyNlbmRpZiAgLyogX19XSU4zMl9fLCBfX0ZMQVRfXywgX19DWUdXSU5fXyAqLworCiAjZW5kaWYgICAvKiBfX0JPUkxBTkRDX18gKi8KIAogCkBAIC05NTQsMjAgKzk0NCwyMCBAQAogLyogTVNDIE1lZGl1bSBtb2RlbCAqLwogI2lmIGRlZmluZWQoRkFSKQogIyAgaWYgZGVmaW5lZChNX0k4Nk1NKQotIyAgICBkZWZpbmUgVVNFX0ZBUl9LRVlXT1JECi0jICAgIGRlZmluZSBGQVJEQVRBIEZBUgotIyAgICBpbmNsdWRlIDxkb3MuaD4KKyMgICAgIGRlZmluZSBVU0VfRkFSX0tFWVdPUkQKKyMgICAgIGRlZmluZSBGQVJEQVRBIEZBUgorIyAgICAgaW5jbHVkZSA8ZG9zLmg+CiAjICBlbmRpZgogI2VuZGlmCiAKIC8qIFNKVDogZGVmYXVsdCBjYXNlICovCiAjaWZuZGVmIEZBUgotIyAgZGVmaW5lIEZBUgorIyAgIGRlZmluZSBGQVIKICNlbmRpZgogCiAvKiBBdCB0aGlzIHBvaW50IEZBUiBpcyBhbHdheXMgZGVmaW5lZCAqLwogI2lmbmRlZiBGQVJEQVRBCi0jICBkZWZpbmUgRkFSREFUQQorI2RlZmluZSBGQVJEQVRBCiAjZW5kaWYKIAogLyogVHlwZWRlZiBmb3IgZmxvYXRpbmctcG9pbnQgbnVtYmVycyB0aGF0IGFyZSBjb252ZXJ0ZWQKQEAgLTk4NCwxNSArOTc0LDExIEBACiB0eXBlZGVmIFBOR19DT05TVCBjaGFyICBGQVIgKiBwbmdfY29uc3RfY2hhcnA7CiB0eXBlZGVmIGNoYXIgICAgICAgICAgICBGQVIgKiBwbmdfY2hhcnA7CiB0eXBlZGVmIHBuZ19maXhlZF9wb2ludCBGQVIgKiBwbmdfZml4ZWRfcG9pbnRfcDsKLQotI2lmbmRlZiBQTkdfTk9fU1RESU8KICNpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpCiB0eXBlZGVmIEhBTkRMRSAgICAgICAgICAgICAgICBwbmdfRklMRV9wOwogI2Vsc2UKIHR5cGVkZWYgRklMRSAgICAgICAgICAgICAgICAqIHBuZ19GSUxFX3A7CiAjZW5kaWYKLSNlbmRpZgotCiAjaWZkZWYgUE5HX0ZMT0FUSU5HX1BPSU5UX1NVUFBPUlRFRAogdHlwZWRlZiBkb3VibGUgICAgICAgICAgRkFSICogcG5nX2RvdWJsZXA7CiAjZW5kaWYKQEAgLTEwMTAsNyArOTk2LDcgQEAKIHR5cGVkZWYgZG91YmxlICAgICAgICAgIEZBUiAqIEZBUiAqIHBuZ19kb3VibGVwcDsKICNlbmRpZgogCi0vKiBQb2ludGVycyB0byBwb2ludGVycyB0byBwb2ludGVyczsgaS5lLiwgcG9pbnRlciB0byBhcnJheSAqLworLyogUG9pbnRlcnMgdG8gcG9pbnRlcnMgdG8gcG9pbnRlcnM7IGkuZS4gcG9pbnRlciB0byBhcnJheSAqLwogdHlwZWRlZiBjaGFyICAgICAgICAgICAgRkFSICogRkFSICogRkFSICogcG5nX2NoYXJwcHA7CiAKIC8qIGxpYnBuZyB0eXBlZGVmcyBmb3IgdHlwZXMgaW4gemxpYi4gSWYgemxpYiBjaGFuZ2VzCkBAIC0xMDI5LDExICsxMDE1LDExIEBACiAgKiBJdCBpcyBlcXVpdmFsZW50IHRvIE1pY3Jvc29mdCBwcmVkZWZpbmVkIG1hY3JvIF9ETEwgd2hpY2ggaXMKICAqIGF1dG9tYXRpY2FsbHkgZGVmaW5lZCB3aGVuIHlvdSBjb21waWxlIHVzaW5nIHRoZSBzaGFyZQogICogdmVyc2lvbiBvZiB0aGUgQ1JUIChDIFJ1bi1UaW1lIGxpYnJhcnkpCi0gKgotICogVGhlIGN5Z3dpbiBtb2RzIG1ha2UgdGhpcyBiZWhhdmlvciBhIGxpdHRsZSBkaWZmZXJlbnQ6CisgKiAKKyAqIFRoZSBjeWd3aW4gbW9kcyBtYWtlIHRoaXMgYmVoYXZpb3IgYSBsaXR0bGUgZGlmZmVyZW50OiAKICAqIERlZmluZSBQTkdfQlVJTERfRExMIGlmIHlvdSBhcmUgYnVpbGRpbmcgYSBkbGwgZm9yIHVzZSB3aXRoIGN5Z3dpbgogICogRGVmaW5lIFBOR19TVEFUSUMgaWYgeW91IGFyZSBidWlsZGluZyBhIHN0YXRpYyBsaWJyYXJ5IGZvciB1c2Ugd2l0aCBjeWd3aW4sCi0gKiAgIC1vci0gaWYgeW91IGFyZSBidWlsZGluZyBhbiBhcHBsaWNhdGlvbiB0aGF0IHlvdSB3YW50IHRvIGxpbmsgdG8gdGhlCisgKiAgIC1vci0gaWYgeW91IGFyZSBidWlsZGluZyBhbiBhcHBsaWNhdGlvbiB0aGF0IHlvdSB3YW50IHRvIGxpbmsgdG8gdGhlIAogICogICBzdGF0aWMgbGlicmFyeS4KICAqIFBOR19VU0VfRExMIGlzIGRlZmluZWQgYnkgZGVmYXVsdCAobm8gdXNlciBhY3Rpb24gbmVlZGVkKSB1bmxlc3Mgb25lIG9mCiAgKiAgIHRoZSBvdGhlciBmbGFncyBpcyBkZWZpbmVkLgpAQCAtMTA2NSw3ICsxMDUxLDcgQEAKICMgICAgZGVmaW5lIFBOR19VU0VfTE9DQUxfQVJSQVlTCiAjICBlbmRpZgogI2VuZGlmCi0KKyAgICAKIC8qIERvIG5vdCB1c2UgZ2xvYmFsIGFycmF5cyAoaGVscHMgd2l0aCBidWlsZGluZyBETEwncykKICAqIFRoZXkgYXJlIG5vIGxvbmdlciB1c2VkIGluIGxpYnBuZyBpdHNlbGYsIHNpbmNlIHZlcnNpb24gMS4wLjVjLAogICogYnV0IG1pZ2h0IGJlIHJlcXVpcmVkIGZvciBzb21lIHByZS0xLjAuNWMgYXBwbGljYXRpb25zLgpAQCAtMTA3OCwxNSArMTA2NCwxNSBAQAogIyAgZW5kaWYKICNlbmRpZgogCi0KICNpZm5kZWYgUE5HQVBJCiAKKwogI2lmIGRlZmluZWQoX19NSU5HVzMyX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykgJiYgIWRlZmluZWQoUE5HX01PRFVMRURFRikKICMgIGlmbmRlZiBQTkdfTk9fTU9EVUxFREVGCiAjICAgIGRlZmluZSBQTkdfTk9fTU9EVUxFREVGCiAjICBlbmRpZgotI2VuZGlmCi0KKyNlbmRpZiAKKyAKICNpZiAhZGVmaW5lZChQTkdfSU1QRVhQKSAmJiBkZWZpbmVkKFBOR19CVUlMRF9ETEwpICYmICFkZWZpbmVkKFBOR19OT19NT0RVTEVERUYpCiAjICBkZWZpbmUgUE5HX0lNUEVYUAogI2VuZGlmCkBAIC0xMDk2LDcgKzEwODIsNyBAQAogICAgICAgIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgXAogCSAgKSAmJiAhZGVmaW5lZChfX0NZR1dJTl9fKSkKIAotIyAgaWYgZGVmaW5lZChfX0dOVUNfXykgfHwgKGRlZmluZWQgKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gODAwKSkKKyMgIGlmZGVmIF9fR05VQ19fCiAjICAgIGRlZmluZSBQTkdBUEkgX19jZGVjbAogIyAgZWxzZQogIyAgICBkZWZpbmUgUE5HQVBJIF9jZGVjbApAQCAtMTE2NCw5ICsxMTUwLDkgQEAKICNlbmRpZgogCiAjaWZkZWYgUE5HX1VTRV9HTE9CQUxfQVJSQVlTCi0jICBpZm5kZWYgUE5HX0VYUE9SVF9WQVIKLSMgICAgZGVmaW5lIFBOR19FWFBPUlRfVkFSKHR5cGUpIGV4dGVybiBQTkdfSU1QRVhQIHR5cGUKLSMgIGVuZGlmCisjaWZuZGVmIFBOR19FWFBPUlRfVkFSCisjICBkZWZpbmUgUE5HX0VYUE9SVF9WQVIodHlwZSkgZXh0ZXJuIFBOR19JTVBFWFAgdHlwZQorI2VuZGlmCiAjZW5kaWYKIAogLyogVXNlciBtYXkgd2FudCB0byB1c2UgdGhlc2Ugc28gdGhleSBhcmUgbm90IGluIFBOR19JTlRFUk5BTC4gQW55IGxpYnJhcnkKQEAgLTExNzQsMzUgKzExNjAsMzUgQEAKICAqLwogCiAjaWZuZGVmIFBOR19BQk9SVAotIyAgZGVmaW5lIFBOR19BQk9SVCgpIGFib3J0KCkKKyMgICBkZWZpbmUgUE5HX0FCT1JUKCkgYWJvcnQoKQogI2VuZGlmCiAKICNpZmRlZiBQTkdfU0VUSk1QX1NVUFBPUlRFRAotIyAgZGVmaW5lIHBuZ19qbXBidWYocG5nX3B0cikgKChwbmdfcHRyKS0+am1wYnVmKQorIyAgIGRlZmluZSBwbmdfam1wYnVmKHBuZ19wdHIpICgocG5nX3B0ciktPmptcGJ1ZikKICNlbHNlCi0jICBkZWZpbmUgcG5nX2ptcGJ1ZihwbmdfcHRyKSBcCi0gICAoTElCUE5HX1dBU19DT01QSUxFRF9XSVRIX19QTkdfU0VUSk1QX05PVF9TVVBQT1JURUQpCisjICAgZGVmaW5lIHBuZ19qbXBidWYocG5nX3B0cikgXAorICAgIChMSUJQTkdfV0FTX0NPTVBJTEVEX1dJVEhfX1BOR19TRVRKTVBfTk9UX1NVUFBPUlRFRCkKICNlbmRpZgogCiAjaWYgZGVmaW5lZChVU0VfRkFSX0tFWVdPUkQpICAvKiBtZW1vcnkgbW9kZWwgaW5kZXBlbmRlbnQgZm5zICovCiAvKiB1c2UgdGhpcyB0byBtYWtlIGZhci10by1uZWFyIGFzc2lnbm1lbnRzICovCi0jICBkZWZpbmUgQ0hFQ0sgICAxCi0jICBkZWZpbmUgTk9DSEVDSyAwCi0jICBkZWZpbmUgQ1ZUX1BUUihwdHIpIChwbmdfZmFyX3RvX25lYXIocG5nX3B0cixwdHIsQ0hFQ0spKQotIyAgZGVmaW5lIENWVF9QVFJfTk9DSEVDSyhwdHIpIChwbmdfZmFyX3RvX25lYXIocG5nX3B0cixwdHIsTk9DSEVDSykpCi0jICBkZWZpbmUgcG5nX3N0cmNweSBfZnN0cmNweQotIyAgZGVmaW5lIHBuZ19zdHJsZW4gX2ZzdHJsZW4KLSMgIGRlZmluZSBwbmdfbWVtY21wIF9mbWVtY21wICAgICAgLyogU0pUOiBhZGRlZCAqLwotIyAgZGVmaW5lIHBuZ19tZW1jcHkgX2ZtZW1jcHkKLSMgIGRlZmluZSBwbmdfbWVtc2V0IF9mbWVtc2V0CisjICAgZGVmaW5lIENIRUNLICAgMQorIyAgIGRlZmluZSBOT0NIRUNLIDAKKyMgICBkZWZpbmUgQ1ZUX1BUUihwdHIpIChwbmdfZmFyX3RvX25lYXIocG5nX3B0cixwdHIsQ0hFQ0spKQorIyAgIGRlZmluZSBDVlRfUFRSX05PQ0hFQ0socHRyKSAocG5nX2Zhcl90b19uZWFyKHBuZ19wdHIscHRyLE5PQ0hFQ0spKQorIyAgIGRlZmluZSBwbmdfc3RyY3B5IF9mc3RyY3B5CisjICAgZGVmaW5lIHBuZ19zdHJsZW4gX2ZzdHJsZW4KKyMgICBkZWZpbmUgcG5nX21lbWNtcCBfZm1lbWNtcCAgICAgIC8qIFNKVDogYWRkZWQgKi8KKyMgICBkZWZpbmUgcG5nX21lbWNweSBfZm1lbWNweQorIyAgIGRlZmluZSBwbmdfbWVtc2V0IF9mbWVtc2V0CiAjZWxzZSAvKiB1c2UgdGhlIHVzdWFsIGZ1bmN0aW9ucyAqLwotIyAgZGVmaW5lIENWVF9QVFIocHRyKSAgICAgICAgIChwdHIpCi0jICBkZWZpbmUgQ1ZUX1BUUl9OT0NIRUNLKHB0cikgKHB0cikKLSMgIGRlZmluZSBwbmdfc3RyY3B5IHN0cmNweQotIyAgZGVmaW5lIHBuZ19zdHJsZW4gc3RybGVuCi0jICBkZWZpbmUgcG5nX21lbWNtcCBtZW1jbXAgICAgIC8qIFNKVDogYWRkZWQgKi8KLSMgIGRlZmluZSBwbmdfbWVtY3B5IG1lbWNweQotIyAgZGVmaW5lIHBuZ19tZW1zZXQgbWVtc2V0CisjICAgZGVmaW5lIENWVF9QVFIocHRyKSAgICAgICAgIChwdHIpCisjICAgZGVmaW5lIENWVF9QVFJfTk9DSEVDSyhwdHIpIChwdHIpCisjICAgZGVmaW5lIHBuZ19zdHJjcHkgc3RyY3B5CisjICAgZGVmaW5lIHBuZ19zdHJsZW4gc3RybGVuCisjICAgZGVmaW5lIHBuZ19tZW1jbXAgbWVtY21wICAgICAvKiBTSlQ6IGFkZGVkICovCisjICAgZGVmaW5lIHBuZ19tZW1jcHkgbWVtY3B5CisjICAgZGVmaW5lIHBuZ19tZW1zZXQgbWVtc2V0CiAjZW5kaWYKIC8qIEVuZCBvZiBtZW1vcnkgbW9kZWwgaW5kZXBlbmRlbnQgc3VwcG9ydCAqLwogCkBAIC0xMjEwLDQ4ICsxMTk2LDkgQEAKICAqIGNvbnRyYWRpY3RvcnkuCiAgKi8KICNpZiAoUE5HX1pCVUZfU0laRSA+IDY1NTM2KSAmJiBkZWZpbmVkKFBOR19NQVhfTUFMTE9DXzY0SykKLSMgIHVuZGVmIFBOR19aQlVGX1NJWkUKLSMgIGRlZmluZSBQTkdfWkJVRl9TSVpFIDY1NTM2CisjdW5kZWYgUE5HX1pCVUZfU0laRQorI2RlZmluZSBQTkdfWkJVRl9TSVpFIDY1NTM2CiAjZW5kaWYKIAotLyogUHJpb3IgdG8gbGlicG5nLTEuMC45LCB0aGlzIGJsb2NrIHdhcyBpbiBwbmdhc21yZC5oICovCi0jaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKFBOR19JTlRFUk5BTCkKLQotLyogVGhlc2UgYXJlIHRoZSBkZWZhdWx0IHRocmVzaG9sZHMgYmVmb3JlIHRoZSBNTVggY29kZSBraWNrcyBpbjsgaWYgZWl0aGVyCi0gKiByb3dieXRlcyBvciBiaXRkZXB0aCBpcyBiZWxvdyB0aGUgdGhyZXNob2xkLCBwbGFpbiBDIGNvZGUgaXMgdXNlZC4gIFRoZXNlCi0gKiBjYW4gYmUgb3ZlcnJpZGRlbiBhdCBydW50aW1lIHZpYSB0aGUgcG5nX3NldF9tbXhfdGhyZXNob2xkcygpIGNhbGwgaW4KLSAqIGxpYnBuZyAxLjIuMCBhbmQgbGF0ZXIuICBUaGUgdmFsdWVzIGJlbG93IHdlcmUgY2hvc2VuIGJ5IEludGVsLgotICovCi0KLSNpZm5kZWYgUE5HX01NWF9ST1dCWVRFU19USFJFU0hPTERfREVGQVVMVAotIyAgZGVmaW5lIFBOR19NTVhfUk9XQllURVNfVEhSRVNIT0xEX0RFRkFVTFQgIDEyOCAgLyogID49ICAqLwotI2VuZGlmCi0jaWZuZGVmIFBOR19NTVhfQklUREVQVEhfVEhSRVNIT0xEX0RFRkFVTFQKLSMgIGRlZmluZSBQTkdfTU1YX0JJVERFUFRIX1RIUkVTSE9MRF9ERUZBVUxUICA5ICAgIC8qICA+PSAgKi8gICAKLSNlbmRpZgotCi0vKiBTZXQgdGhpcyBpbiB0aGUgbWFrZWZpbGUgZm9yIFZDKysgb24gUGVudGl1bSwgbm90IGhlcmUuICovCi0vKiBQbGF0Zm9ybSBtdXN0IGJlIFBlbnRpdW0uICBNYWtlZmlsZSBtdXN0IGFzc2VtYmxlIGFuZCBsb2FkIHBuZ3ZjcmQuYyAuCi0gKiBNTVggd2lsbCBiZSBkZXRlY3RlZCBhdCBydW4gdGltZSBhbmQgdXNlZCBpZiBwcmVzZW50LgotICovCi0jaWZkZWYgUE5HX1VTRV9QTkdWQ1JECi0jICBkZWZpbmUgUE5HX0hBVkVfQVNTRU1CTEVSX0NPTUJJTkVfUk9XCi0jICBkZWZpbmUgUE5HX0hBVkVfQVNTRU1CTEVSX1JFQURfSU5URVJMQUNFCi0jICBkZWZpbmUgUE5HX0hBVkVfQVNTRU1CTEVSX1JFQURfRklMVEVSX1JPVwotI2VuZGlmCi0KLS8qIFNldCB0aGlzIGluIHRoZSBtYWtlZmlsZSBmb3IgZ2NjL2FzIG9uIFBlbnRpdW0sIG5vdCBoZXJlLiAqLwotLyogUGxhdGZvcm0gbXVzdCBiZSBQZW50aXVtLiAgTWFrZWZpbGUgbXVzdCBhc3NlbWJsZSBhbmQgbG9hZCBwbmdnY2NyZC5jIC4KLSAqIE1NWCB3aWxsIGJlIGRldGVjdGVkIGF0IHJ1biB0aW1lIGFuZCB1c2VkIGlmIHByZXNlbnQuCi0gKi8KLSNpZmRlZiBQTkdfVVNFX1BOR0dDQ1JECi0jICBkZWZpbmUgUE5HX0hBVkVfQVNTRU1CTEVSX0NPTUJJTkVfUk9XCi0jICBkZWZpbmUgUE5HX0hBVkVfQVNTRU1CTEVSX1JFQURfSU5URVJMQUNFCi0jICBkZWZpbmUgUE5HX0hBVkVfQVNTRU1CTEVSX1JFQURfRklMVEVSX1JPVwotI2VuZGlmCi0vKiAtIHNlZSBwbmdnY2NyZC5jIGZvciBpbmZvIGFib3V0IHdoYXQgaXMgY3VycmVudGx5IGVuYWJsZWQgKi8KLQotI2VuZGlmIC8qIFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQgKi8KLQogI2VuZGlmIC8qIFBOR0NPTkZfSCAqLwogCmRpZmYgLS1naXQgYS9wbmdlcnJvci5jIGIvcG5nZXJyb3IuYwppbmRleCBkYmNjYzFmLi40M2JmNTk3IDEwMDY0NAotLS0gYS9wbmdlcnJvci5jCisrKyBiL3BuZ2Vycm9yLmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ2Vycm9yLmMgLSBzdHViIGZ1bmN0aW9ucyBmb3IgaS9vIGFuZCBtZW1vcnkgYWxsb2NhdGlvbgogICoKLSAqIGxpYnBuZyAxLjAuOWJldGExMCAtIEphbnVhcnkgMTYsIDIwMDEKKyAqIGxpYnBuZyAxLjAuOWJldGEyIC0gTm92ZW1iZXIgMTksIDIwMDAKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKICAqCkBAIC05OSw3ICs5OSw3IEBACiB2b2lkIFBOR0FQSQogcG5nX2NodW5rX2Vycm9yKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19jb25zdF9jaGFycCBtZXNzYWdlKQogewotICAgY2hhciBtc2dbMTgrNjRdOworICAgY2hhciBtc2dbMTYrNjRdOwogICAgcG5nX2Zvcm1hdF9idWZmZXIocG5nX3B0ciwgbXNnLCBtZXNzYWdlKTsKICAgIHBuZ19lcnJvcihwbmdfcHRyLCBtc2cpOwogfQpkaWZmIC0tZ2l0IGEvcG5nZ2NjcmQuYyBiL3BuZ2djY3JkLmMKaW5kZXggODg3N2Q1Yi4uZDZlNDliNCAxMDA2NDQKLS0tIGEvcG5nZ2NjcmQuYworKysgYi9wbmdnY2NyZC5jCkBAIC02LDE0ICs2LDE0IEBACiAgKiAgICAgYW5kIGh0dHA6Ly93d3cuaW50ZWwuY29tL2RyZy9wZW50aXVtSUkvYXBwbm90ZXMvOTIzLzkyMy5odG0KICAqICAgICBmb3IgSW50ZWwncyBwZXJmb3JtYW5jZSBhbmFseXNpcyBvZiB0aGUgTU1YIHZzLiBub24tTU1YIGNvZGUuCiAgKgotICogbGlicG5nIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQorICogbGlicG5nIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIENvcHlyaWdodCAoYykgMTk5OCwgSW50ZWwgQ29ycG9yYXRpb24KICAqCiAgKiBCYXNlZCBvbiBNU1ZDIGNvZGUgY29udHJpYnV0ZWQgYnkgTmlyYXYgQ2hoYXRyYXBhdGksIEludGVsIENvcnAuLCAxOTk4LgogICogSW50ZXJmYWNlIHRvIGxpYnBuZyBjb250cmlidXRlZCBieSBHaWxsZXMgVm9sbGFudCwgMTk5OS4KLSAqIEdOVSBDIHBvcnQgYnkgR3JlZyBSb2Vsb2ZzLCAxOTk5LTIwMDEuCisgKiBHTlUgQyBwb3J0IGJ5IEdyZWcgUm9lbG9mcywgMTk5OS0yMDAwLgogICoKICAqIExpbmVzIDIzNTAtNDMwMCBjb252ZXJ0ZWQgaW4gcGxhY2Ugd2l0aCBpbnRlbDJnYXMgMS4zLjE6CiAgKgpAQCAtMTk4LDIwICsxOTgsMTEgQEAKICAqICAgICBjb3JyZWN0bHkgKGJ1dCA0OC1iaXQgUkdCIGp1c3QgZmluZSkKICAqCiAgKiAyMDAwMDkxNjoKLSAqICAtIGZpeGVkIGJ1ZyBpbiBwbmdfcmVhZF9maWx0ZXJfcm93X21teF9hdmcoKSwgYnBwID09IDIgY2FzZTsgdGhyZWUgZXJyb3JzOgorICogIC0gZml4ZWQgYnVnIGluIHBuZ19yZWFkX2ZpbHRlcl9yb3dfbW14X2F2ZygpLCBicHAgPT0gMiBjYXNlOyB0aHJlZSBlcnJvcnM6ICAKICAqICAgICAtICJfU2hpZnRCcHAudXNlID0gMjQ7IiAgICAgIHNob3VsZCBoYXZlIGJlZW4gICAiX1NoaWZ0QnBwLnVzZSA9IDE2OyIKICAqICAgICAtICJfU2hpZnRSZW0udXNlID0gNDA7IiAgICAgIHNob3VsZCBoYXZlIGJlZW4gICAiX1NoaWZ0UmVtLnVzZSA9IDQ4OyIKICAqICAgICAtICJwc2xscSBfU2hpZnRSZW0sICUlbW0yIiAgIHNob3VsZCBoYXZlIGJlZW4gICAicHNybHEgX1NoaWZ0UmVtLCAlJW1tMiIKICAqCi0gKiAyMDAxMDEwMzoKLSAqICAtIHJlbmFtZWQgbW14c3VwcG9ydCgpIHRvIHBuZ19tbXhfc3VwcG9ydCgpLCB3aXRoIGF1dG8tc2V0IG9mIG1teF9zdXBwb3J0ZWQsCi0gKiAgICAgYW5kIG1hZGUgaXQgcHVibGljCi0gKgotICogMjAwMTAxMDQ6Ci0gKiAgLSByZW1vdmVkIGRlcGVuZGVuY3kgb24gcG5nX3JlYWRfZmlsdGVyX3Jvd19jKCkgKEMgY29kZSBhbHJlYWR5IGR1cGxpY2F0ZWQKLSAqICAgICB3aXRoaW4gTU1YIHZlcnNpb24gb2YgcG5nX3JlYWRfZmlsdGVyX3JvdygpKSBzbyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvCi0gKiAgICAgY29tcGlsZSBpdCBpbnRvIHBuZ3J1dGlsLm8KLSAqCiAgKiBTVElMTCBUTyBETzoKICAqICAgICAtIHRlc3QgcG5nX2RvX3JlYWRfaW50ZXJsYWNlKCkgNjQtYml0IGNhc2UgKHBpeGVsX2J5dGVzID09IDgpCiAgKiAgICAgLSB3cml0ZSBNTVggY29kZSBmb3IgNDgtYml0IGNhc2UgKHBpeGVsX2J5dGVzID09IDYpCkBAIC0yMjAsNyArMjExLDcgQEAKICAqICAgICAgICAob25seSB3aWR0aF9tbXggY2FzZSkgKG5lYXIgbGluZSAxNjA2KQogICogICAgIC0gcmV3cml0ZSBhbGwgTU1YIGludGVybGFjaW5nIGNvZGUgc28gaXQncyBhbGlnbmVkIHdpdGggYmVnaW5uaW5nCiAgKiAgICAgICAgb2YgdGhlIHJvdyBidWZmZXIsIG5vdCB0aGUgZW5kIChzZWUgMTk5OTEwMDcgZm9yIGRldGFpbHMpCi0gKiAgICAgeCBwaWNrIG9uZSB2ZXJzaW9uIG9mIG1teHN1cHBvcnQoKSBhbmQgZ2V0IHJpZCBvZiB0aGUgb3RoZXIKKyAqICAgICAtIHBpY2sgb25lIHZlcnNpb24gb2YgbW14c3VwcG9ydCgpIGFuZCBnZXQgcmlkIG9mIHRoZSBvdGhlcgogICogICAgIC0gYWRkIGVycm9yIG1lc3NhZ2VzIHRvIGFueSByZW1haW5pbmcgYm9ndXMgZGVmYXVsdCBjYXNlcwogICogICAgIC0gZW5hYmxlIHBpeGVsX2RlcHRoID09IDggY2FzZXMgaW4gcG5nX3JlYWRfZmlsdGVyX3JvdygpPyAodGVzdCBzcGVlZCkKICAqICAgICAtIGFkZCBzdXBwb3J0IGZvciBydW50aW1lIGVuYWJsZS9kaXNhYmxlL3F1ZXJ5IG9mIHZhcmlvdXMgTU1YIHJvdXRpbmVzCkBAIC0yMzMsNiArMjI0LDEwIEBACiAKICNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpICYmIGRlZmluZWQoUE5HX1VTRV9QTkdHQ0NSRCkKIAoraW50IG1teHN1cHBvcnQodm9pZCk7CisKK3N0YXRpYyBpbnQgbW14X3N1cHBvcnRlZCA9IDI7CisKICNpZmRlZiBQTkdfVVNFX0xPQ0FMX0FSUkFZUwogc3RhdGljIGNvbnN0IGludCBGQVJEQVRBIHBuZ19wYXNzX3N0YXJ0WzddID0gezAsIDQsIDAsIDIsIDAsIDEsIDB9Owogc3RhdGljIGNvbnN0IGludCBGQVJEQVRBIHBuZ19wYXNzX2luY1s3XSAgID0gezgsIDgsIDQsIDQsIDIsIDIsIDF9OwpAQCAtMjQyLDI2ICsyMzcsMjUgQEAKIC8vIGRqZ3BwLCBXaW4zMiwgYW5kIEN5Z3dpbiBhZGQgdGhlaXIgb3duIHVuZGVyc2NvcmVzIHRvIGdsb2JhbCB2YXJpYWJsZXMsCiAvLyBzbyBkZWZpbmUgdGhlbSB3aXRob3V0OgogI2lmIGRlZmluZWQoX19ESkdQUF9fKSB8fCBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCi0jICBkZWZpbmUgX21teF9zdXBwb3J0ZWQgIG1teF9zdXBwb3J0ZWQKICMgIGRlZmluZSBfdW5tYXNrICAgICAgICAgdW5tYXNrCiAjICBkZWZpbmUgX2NvbnN0NCAgICAgICAgIGNvbnN0NAogIyAgZGVmaW5lIF9jb25zdDYgICAgICAgICBjb25zdDYKLSMgIGRlZmluZSBfbWFzazhfMCAgICAgICAgbWFzazhfMAotIyAgZGVmaW5lIF9tYXNrMTZfMSAgICAgICBtYXNrMTZfMQotIyAgZGVmaW5lIF9tYXNrMTZfMCAgICAgICBtYXNrMTZfMAotIyAgZGVmaW5lIF9tYXNrMjRfMiAgICAgICBtYXNrMjRfMgotIyAgZGVmaW5lIF9tYXNrMjRfMSAgICAgICBtYXNrMjRfMQotIyAgZGVmaW5lIF9tYXNrMjRfMCAgICAgICBtYXNrMjRfMAotIyAgZGVmaW5lIF9tYXNrMzJfMyAgICAgICBtYXNrMzJfMwotIyAgZGVmaW5lIF9tYXNrMzJfMiAgICAgICBtYXNrMzJfMgotIyAgZGVmaW5lIF9tYXNrMzJfMSAgICAgICBtYXNrMzJfMQotIyAgZGVmaW5lIF9tYXNrMzJfMCAgICAgICBtYXNrMzJfMAotIyAgZGVmaW5lIF9tYXNrNDhfNSAgICAgICBtYXNrNDhfNQotIyAgZGVmaW5lIF9tYXNrNDhfNCAgICAgICBtYXNrNDhfNAotIyAgZGVmaW5lIF9tYXNrNDhfMyAgICAgICBtYXNrNDhfMwotIyAgZGVmaW5lIF9tYXNrNDhfMiAgICAgICBtYXNrNDhfMgotIyAgZGVmaW5lIF9tYXNrNDhfMSAgICAgICBtYXNrNDhfMQotIyAgZGVmaW5lIF9tYXNrNDhfMCAgICAgICBtYXNrNDhfMAorIyAgZGVmaW5lIF9tYXNrOF8wICAgICAgICBtYXNrOF8wICAKKyMgIGRlZmluZSBfbWFzazE2XzEgICAgICAgbWFzazE2XzEgCisjICBkZWZpbmUgX21hc2sxNl8wICAgICAgIG1hc2sxNl8wIAorIyAgZGVmaW5lIF9tYXNrMjRfMiAgICAgICBtYXNrMjRfMiAKKyMgIGRlZmluZSBfbWFzazI0XzEgICAgICAgbWFzazI0XzEgCisjICBkZWZpbmUgX21hc2syNF8wICAgICAgIG1hc2syNF8wIAorIyAgZGVmaW5lIF9tYXNrMzJfMyAgICAgICBtYXNrMzJfMyAKKyMgIGRlZmluZSBfbWFzazMyXzIgICAgICAgbWFzazMyXzIgCisjICBkZWZpbmUgX21hc2szMl8xICAgICAgIG1hc2szMl8xIAorIyAgZGVmaW5lIF9tYXNrMzJfMCAgICAgICBtYXNrMzJfMCAKKyMgIGRlZmluZSBfbWFzazQ4XzUgICAgICAgbWFzazQ4XzUgCisjICBkZWZpbmUgX21hc2s0OF80ICAgICAgIG1hc2s0OF80IAorIyAgZGVmaW5lIF9tYXNrNDhfMyAgICAgICBtYXNrNDhfMyAKKyMgIGRlZmluZSBfbWFzazQ4XzIgICAgICAgbWFzazQ4XzIgCisjICBkZWZpbmUgX21hc2s0OF8xICAgICAgIG1hc2s0OF8xIAorIyAgZGVmaW5lIF9tYXNrNDhfMCAgICAgICBtYXNrNDhfMCAKICMgIGRlZmluZSBfRnVsbExlbmd0aCAgICAgRnVsbExlbmd0aAogIyAgZGVmaW5lIF9NTVhMZW5ndGggICAgICBNTVhMZW5ndGgKICMgIGRlZmluZSBfZGlmICAgICAgICAgICAgZGlmCkBAIC0yNzcsOCArMjcxLDYgQEAKICMgIGRlZmluZSBfcGN0ZW1wICAgICAgICAgcGN0ZW1wCiAjZW5kaWYKIAotc3RhdGljIGludCBfbW14X3N1cHBvcnRlZCA9IDI7Ci0KIC8qIFRoZXNlIGNvbnN0YW50cyBhcmUgdXNlZCBpbiB0aGUgaW5saW5lZCBNTVggYXNzZW1ibHkgY29kZS4KICAgIElnbm9yZSBnY2MncyAiQXQgdG9wIGxldmVsOiBkZWZpbmVkIGJ1dCBub3QgdXNlZCIgd2FybmluZ3MuICovCiAKQEAgLTMyNiw2ICszMTgsMTEgQEAKIHN0YXRpYyBpbnQgICAgICAgICAgX3BjdGVtcDsKIAogCit2b2lkIC8qIFBSSVZBVEUgKi8KK3BuZ19yZWFkX2ZpbHRlcl9yb3dfYyhwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfcm93X2luZm9wIHJvd19pbmZvLAorICAgcG5nX2J5dGVwIHJvdywgcG5nX2J5dGVwIHByZXZfcm93LCBpbnQgZmlsdGVyKTsKKworCiAKIAogLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0vLwpAQCAtMzU1LDE2ICszNTIsMTYgQEAKIHsKICAgIHBuZ19kZWJ1ZygxLCJpbiBwbmdfY29tYmluZV9yb3dfYXNtXG4iKTsKIAotICAgaWYgKF9tbXhfc3VwcG9ydGVkID09IDIpIHsKLSAgICAgICBwbmdfbW14X3N1cHBvcnQoKTsKLSAgIH0KKyAgIGlmIChtbXhfc3VwcG9ydGVkID09IDIpCisgICAgICAgbW14X3N1cHBvcnRlZCA9IG1teHN1cHBvcnQoKTsKIAogICAgaWYgKG1hc2sgPT0gMHhmZikKICAgIHsKICAgICAgIHBuZ19tZW1jcHkocm93LCBwbmdfcHRyLT5yb3dfYnVmICsgMSwKICAgICAgICAocG5nX3NpemVfdCkoKHBuZ19wdHItPndpZHRoICogcG5nX3B0ci0+cm93X2luZm8ucGl4ZWxfZGVwdGggKyA3KSA+PiAzKSk7CiAgICB9Ci0gICAvKiBHUlI6ICBwbmdfY29tYmluZV9yb3coKSBuZXZlciBjYWxsZWQgd2l0aCBtYXNrID09IDAgKi8KKyAgIC8qIEdSUjogIGFkZCAiZWxzZSBpZiAobWFzayA9PSAwKSIgY2FzZT8KKyAgICAqICAgICAgIG9yIGRvZXMgcG5nX2NvbWJpbmVfcm93KCkgbm90IGV2ZW4gZ2V0IGNhbGxlZCBpbiB0aGF0IGNhc2U/ICovCiAgICBlbHNlCiAgICB7CiAgICAgICBzd2l0Y2ggKHBuZ19wdHItPnJvd19pbmZvLnBpeGVsX2RlcHRoKQpAQCAtNTQwLDcgKzUzNyw3IEBACiAgICAgICAgICAgICBwbmdfYnl0ZXAgc3JjcHRyOwogICAgICAgICAgICAgcG5nX2J5dGVwIGRzdHB0cjsKIAotICAgICAgICAgICAgaWYgKCBfbW14X3N1cHBvcnRlZCAgKQorICAgICAgICAgICAgaWYgKG1teF9zdXBwb3J0ZWQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwbmdfdWludF8zMiBsZW47CiAgICAgICAgICAgICAgICBpbnQgZGlmZjsKQEAgLTY0NSw3ICs2NDIsNyBAQAogICAgICAgICAgICAgICAgICAgcG5nX21lbWNweShkc3RwdHIsIHNyY3B0ciwgcmVwX2J5dGVzKTsKICAgICAgICAgICAgICAgICAgIHNyY3B0ciArPSBzdHJpZGU7CiAgICAgICAgICAgICAgICAgICBkc3RwdHIgKz0gc3RyaWRlOwotICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgIH0gLyogZW5kIG9mIGVsc2UgKi8KIAogICAgICAgICAgICAgYnJlYWs7CkBAIC02NTYsNyArNjUzLDcgQEAKICAgICAgICAgICAgIHBuZ19ieXRlcCBzcmNwdHI7CiAgICAgICAgICAgICBwbmdfYnl0ZXAgZHN0cHRyOwogCi0gICAgICAgICAgICBpZiAoIF9tbXhfc3VwcG9ydGVkICkKKyAgICAgICAgICAgIGlmIChtbXhfc3VwcG9ydGVkKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcG5nX3VpbnRfMzIgbGVuOwogICAgICAgICAgICAgICAgaW50IGRpZmY7CkBAIC03NzcsNyArNzc0LDcgQEAKICAgICAgICAgICAgICAgICAgIHBuZ19tZW1jcHkoZHN0cHRyLCBzcmNwdHIsIHJlcF9ieXRlcyk7CiAgICAgICAgICAgICAgICAgICBzcmNwdHIgKz0gc3RyaWRlOwogICAgICAgICAgICAgICAgICAgZHN0cHRyICs9IHN0cmlkZTsKLSAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICB9IC8qIGVuZCBvZiBlbHNlICovCiAKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzg4LDcgKzc4NSw3IEBACiAgICAgICAgICAgICBwbmdfYnl0ZXAgc3JjcHRyOwogICAgICAgICAgICAgcG5nX2J5dGVwIGRzdHB0cjsKIAotICAgICAgICAgICAgaWYgKCBfbW14X3N1cHBvcnRlZCApCisgICAgICAgICAgICBpZiAobW14X3N1cHBvcnRlZCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBuZ191aW50XzMyIGxlbjsKICAgICAgICAgICAgICAgIGludCBkaWZmOwpAQCAtOTI0LDcgKzkyMSw3IEBACiAgICAgICAgICAgICAgICAgICBwbmdfbWVtY3B5KGRzdHB0ciwgc3JjcHRyLCByZXBfYnl0ZXMpOwogICAgICAgICAgICAgICAgICAgc3JjcHRyICs9IHN0cmlkZTsKICAgICAgICAgICAgICAgICAgIGRzdHB0ciArPSBzdHJpZGU7Ci0gICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgfSAvKiBlbmQgb2YgZWxzZSAqLwogCiAgICAgICAgICAgICBicmVhazsKQEAgLTkzNSw3ICs5MzIsNyBAQAogICAgICAgICAgICAgcG5nX2J5dGVwIHNyY3B0cjsKICAgICAgICAgICAgIHBuZ19ieXRlcCBkc3RwdHI7CiAKLSAgICAgICAgICAgIGlmICggX21teF9zdXBwb3J0ZWQgKQorICAgICAgICAgICAgaWYgKG1teF9zdXBwb3J0ZWQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwbmdfdWludF8zMiBsZW47CiAgICAgICAgICAgICAgICBpbnQgZGlmZjsKQEAgLTEwODksNyArMTA4Niw3IEBACiAgICAgICAgICAgICBwbmdfYnl0ZXAgc3JjcHRyOwogICAgICAgICAgICAgcG5nX2J5dGVwIGRzdHB0cjsKIAotICAgICAgICAgICAgaWYgKCBfbW14X3N1cHBvcnRlZCApCisgICAgICAgICAgICBpZiAobW14X3N1cHBvcnRlZCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBuZ191aW50XzMyIGxlbjsKICAgICAgICAgICAgICAgIGludCBkaWZmOwpAQCAtMTI0OSw3ICsxMjQ2LDcgQEAKICAgICAgICAgICAgICAgICAgIHBuZ19tZW1jcHkoZHN0cHRyLCBzcmNwdHIsIHJlcF9ieXRlcyk7CiAgICAgICAgICAgICAgICAgICBzcmNwdHIgKz0gc3RyaWRlOwogICAgICAgICAgICAgICAgICAgZHN0cHRyICs9IHN0cmlkZTsKLSAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICB9IC8qIGVuZCBvZiBlbHNlICovCiAKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI3Niw3ICsxMjczLDcgQEAKICAgICAgICAgICAgICAgIHBuZ19tZW1jcHkoZHN0cHRyLCBzcmNwdHIsIHJlcF9ieXRlcyk7CiAgICAgICAgICAgICAgICBzcmNwdHIgKz0gc3RyaWRlOwogICAgICAgICAgICAgICAgZHN0cHRyICs9IHN0cmlkZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0gICAgICAgLy8gZW5kIDY0IGJwcAogCkBAIC0xMzE0LDE4ICsxMzExLDEzIEBACiAgKi8KIAogdm9pZCAvKiBQUklWQVRFICovCi1wbmdfZG9fcmVhZF9pbnRlcmxhY2UocG5nX3N0cnVjdHAgcG5nX3B0cikKK3BuZ19kb19yZWFkX2ludGVybGFjZShwbmdfcm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LCBpbnQgcGFzcywKKyAgIHBuZ191aW50XzMyIHRyYW5zZm9ybWF0aW9ucykKIHsKLSAgIHBuZ19yb3dfaW5mb3Agcm93X2luZm8gPSAmKHBuZ19wdHItPnJvd19pbmZvKTsKLSAgIHBuZ19ieXRlcCByb3cgPSBwbmdfcHRyLT5yb3dfYnVmICsgMTsKLSAgIGludCBwYXNzID0gcG5nX3B0ci0+cGFzczsKLSAgIHBuZ191aW50XzMyIHRyYW5zZm9ybWF0aW9ucyA9IHBuZ19wdHItPnRyYW5zZm9ybWF0aW9uczsKLQogICAgcG5nX2RlYnVnKDEsImluIHBuZ19kb19yZWFkX2ludGVybGFjZVxuIik7CiAKLSAgIGlmIChfbW14X3N1cHBvcnRlZCA9PSAyKSB7Ci0gICAgICAgcG5nX21teF9zdXBwb3J0KCk7Ci0gICB9CisgICBpZiAobW14X3N1cHBvcnRlZCA9PSAyKQorICAgICAgIG1teF9zdXBwb3J0ZWQgPSBtbXhzdXBwb3J0KCk7CiAKICAgIGlmIChyb3cgIT0gTlVMTCAmJiByb3dfaW5mbyAhPSBOVUxMKQogICAgewpAQCAtMTUyOCw3ICsxNTIwLDcgQEAKIAogICAgICAgICAgICAgLy8gTmV3IGNvZGUgYnkgTmlyYXYgQ2hoYXRyYXBhdGkgLSBJbnRlbCBDb3Jwb3JhdGlvbgogCi0gICAgICAgICAgICBpZiAoIF9tbXhfc3VwcG9ydGVkICkKKyAgICAgICAgICAgIGlmIChtbXhfc3VwcG9ydGVkKSAgLy8gdXNlIE1NWCBjb2RlIGlmIG1hY2hpbmUgc3VwcG9ydHMgaXQKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgIGlmIChwaXhlbF9ieXRlcyA9PSAzKQpAQCAtMjEwMyw3ICsyMDk1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1jIiAoZHVtbXlfdmFsdWVfYyksICAgICAgICAvLyBvdXRwdXQgcmVncyAoZHVtbXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9UyIgKGR1bW15X3ZhbHVlX1MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPUQiIChkdW1teV92YWx1ZV9EKQotCisgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIxIiAoc3B0ciksICAgICAgLy8gZXNpICAgICAgLy8gaW5wdXQgcmVncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMiIgKGRwKSwgICAgICAgIC8vIGVkaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCIgKHdpZHRoX21teCkgIC8vIGVjeApAQCAtMjE2MSw3ICsyMTUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1jIiAoZHVtbXlfdmFsdWVfYyksICAgICAgICAvLyBvdXRwdXQgcmVncyAoZHVtbXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9UyIgKGR1bW15X3ZhbHVlX1MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPUQiIChkdW1teV92YWx1ZV9EKQotCisgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIxIiAoc3B0ciksICAgICAgLy8gZXNpICAgICAgLy8gaW5wdXQgcmVncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMiIgKGRwKSwgICAgICAgIC8vIGVkaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCIgKHdpZHRoX21teCkgIC8vIGVjeApAQCAtMjQwNiw3ICsyMzk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIHNwdHItPSBwaXhlbF9ieXRlczsKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gLy8gZW5kIG9mIF9tbXhfc3VwcG9ydGVkID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgICAgIH0gLy8gZW5kIG9mIG1teF9zdXBwb3J0ZWQgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogICAgICAgICAgICAgZWxzZSAvKiBNTVggbm90IHN1cHBvcnRlZDogIHVzZSBtb2RpZmllZCBDIGNvZGUgLSB0YWtlcyBhZHZhbnRhZ2UKICAgICAgICAgICAgICAgICAgICogICBvZiBpbmxpbmluZyBvZiBtZW1jcHkgZm9yIGEgY29uc3RhbnQgKi8KQEAgLTQ3NTcsMzIgKzQ3NDksNDMgQEAKICAgIHJvdywgcG5nX2J5dGVwIHByZXZfcm93LCBpbnQgZmlsdGVyKQogewogI2lmZGVmIFBOR19ERUJVRwotICAgY2hhciBmaWxubVsxMF07CisgICBjaGFyIGZpbG5tWzZdOwogI2VuZGlmCiAKLS8qIEdSUjogIHRoZXNlIGFyZSBzdXBlcnNlZGVkIGJ5IHBuZ19wdHItPmFzbV9mbGFnczogKi8KKyNkZWZpbmUgVXNlTU1YIDEKKwogI2RlZmluZSBVc2VNTVhfc3ViICAgIDEgICAvLyBHUlI6ICBjb252ZXJ0ZWQgMjAwMDA3MzAKICNkZWZpbmUgVXNlTU1YX3VwICAgICAxICAgLy8gR1JSOiAgY29udmVydGVkIDIwMDAwNzI5CiAjZGVmaW5lIFVzZU1NWF9hdmcgICAgMSAgIC8vIEdSUjogIGNvbnZlcnRlZCAyMDAwMDgyOCAoKyAxNi1iaXQgYnVnZml4IDIwMDAwOTE2KQogI2RlZmluZSBVc2VNTVhfcGFldGggIDEgICAvLyBHUlI6ICBjb252ZXJ0ZWQgMjAwMDA4MjgKIAotICAgaWYgKF9tbXhfc3VwcG9ydGVkID09IDIpIHsKLSAgICAgICBwbmdfbW14X3N1cHBvcnQoKTsKKyAgIGlmIChtbXhfc3VwcG9ydGVkID09IDIpCisgICAgICAgbW14X3N1cHBvcnRlZCA9IG1teHN1cHBvcnQoKTsKKworICAgaWYgKCFtbXhfc3VwcG9ydGVkKQorICAgeworICAgICAgIHBuZ19yZWFkX2ZpbHRlcl9yb3dfYyhwbmdfcHRyLCByb3dfaW5mbywgcm93LCBwcmV2X3JvdywgZmlsdGVyKTsKKyAgICAgICByZXR1cm47CiAgICB9CiAKICNpZmRlZiBQTkdfREVCVUcKICAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX3JlYWRfZmlsdGVyX3Jvd1xuIik7CisjaWYgKFVzZU1NWCA9PSAxKQorICAgcG5nX2RlYnVnMSgwLCIlcywgIiwgIk1NWCIpOworI2Vsc2UKKyAgIHBuZ19kZWJ1ZzEoMCwiJXMsICIsICJ4ODYiKTsKKyNlbmRpZgogICAgc3dpdGNoIChmaWx0ZXIpCiAgICB7CiAgICAgICBjYXNlIDA6IHNwcmludGYoZmlsbm0sICJub25lIik7CiAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMTogc3ByaW50ZihmaWxubSwgInN1Yi0lcyIsICJNTVgiKTsKKyAgICAgIGNhc2UgMTogc3ByaW50ZihmaWxubSwgInN1YiIpOwogICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDI6IHNwcmludGYoZmlsbm0sICJ1cC0lcyIsICJNTVgiKTsKKyAgICAgIGNhc2UgMjogc3ByaW50ZihmaWxubSwgInVwIik7CiAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMzogc3ByaW50ZihmaWxubSwgImF2Zy0lcyIsICJNTVgiKTsKKyAgICAgIGNhc2UgMzogc3ByaW50ZihmaWxubSwgImF2ZyIpOwogICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDQ6IHNwcmludGYoZmlsbm0sICJQYWV0aC0lcyIsICJNTVgiKTsKKyAgICAgIGNhc2UgNDogc3ByaW50ZihmaWxubSwgIlBhZXRoIik7CiAgICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6IHNwcmludGYoZmlsbm0sICJ1bmtudyIpOwogICAgICAgICAgYnJlYWs7CkBAIC00NzkyLDcgKzQ3OTUsNyBAQAogICAgcG5nX2RlYnVnMigwLCAicGl4ZGVwdGg9JTJkLCBieXRlcz0lZCwgIiwgKGludClyb3dfaW5mby0+cGl4ZWxfZGVwdGgsCiAgICAgICAoaW50KSgocm93X2luZm8tPnBpeGVsX2RlcHRoICsgNykgPj4gMykpOwogICAgcG5nX2RlYnVnMSgwLCJyb3dieXRlcz0lOGxkXG4iLCByb3dfaW5mby0+cm93Ynl0ZXMpOwotI2VuZGlmIC8qIFBOR19ERUJVRyAqLworI2VuZGlmCiAKICAgIHN3aXRjaCAoZmlsdGVyKQogICAgewpAQCAtNDgwMCwxMyArNDgwMywxMyBAQAogICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgUE5HX0ZJTFRFUl9WQUxVRV9TVUI6Ci0gICAgICAgICBpZiAoCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+PSBQTkdfTU1YX0JJVERFUFRIX1RIUkVTSE9MRF9ERUZBVUxUKSAmJgotICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gUE5HX01NWF9ST1dCWVRFU19USFJFU0hPTERfREVGQVVMVCkpCisjaWYgKFVzZU1NWF9zdWIgPT0gMSkKKyAgICAgICAgIGlmICgocm93X2luZm8tPnBpeGVsX2RlcHRoID4gOCkgJiYgKHJvd19pbmZvLT5yb3dieXRlcyA+PSAxMjgpKQogICAgICAgICAgewogICAgICAgICAgICAgcG5nX3JlYWRfZmlsdGVyX3Jvd19tbXhfc3ViKHJvd19pbmZvLCByb3cpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfdWludF8zMiBpOwogICAgICAgICAgICAgcG5nX3VpbnRfMzIgaXN0b3AgPSByb3dfaW5mby0+cm93Ynl0ZXM7CkBAIC00ODIzLDM1ICs0ODI2LDMzIEBACiAgICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBQTkdfRklMVEVSX1ZBTFVFX1VQOgotICAgICAgICAgaWYgKAotICAgICAgICAgICAgIChyb3dfaW5mby0+cGl4ZWxfZGVwdGggPj0gUE5HX01NWF9CSVRERVBUSF9USFJFU0hPTERfREVGQVVMVCkgJiYKLSAgICAgICAgICAgICAocm93X2luZm8tPnJvd2J5dGVzID49IFBOR19NTVhfUk9XQllURVNfVEhSRVNIT0xEX0RFRkFVTFQpKQorI2lmIChVc2VNTVhfdXAgPT0gMSkKKyAgICAgICAgIGlmICgocm93X2luZm8tPnBpeGVsX2RlcHRoID4gOCkgJiYgKHJvd19pbmZvLT5yb3dieXRlcyA+PSAxMjgpKQogICAgICAgICAgewogICAgICAgICAgICAgcG5nX3JlYWRfZmlsdGVyX3Jvd19tbXhfdXAocm93X2luZm8sIHJvdywgcHJldl9yb3cpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICB7CisgICAgICAgICAgICBwbmdfYnl0ZXAgcnA7CisgICAgICAgICAgICBwbmdfYnl0ZXAgcHA7CiAgICAgICAgICAgICBwbmdfdWludF8zMiBpOwotICAgICAgICAgICAgcG5nX3VpbnRfMzIgaXN0b3AgPSByb3dfaW5mby0+cm93Ynl0ZXM7Ci0gICAgICAgICAgICBwbmdfYnl0ZXAgcnAgPSByb3c7Ci0gICAgICAgICAgICBwbmdfYnl0ZXAgcHAgPSBwcmV2X3JvdzsKLQotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wOyArK2kpCisgICAgICAgICAgICBmb3IgKGkgPSAwLCBycCA9IHJvdywgcHAgPSBwcmV2X3JvdzsKKyAgICAgICAgICAgICAgIGkgPCByb3dfaW5mby0+cm93Ynl0ZXM7IGkrKywgcnArKywgcHArKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqcHArKykpICYgMHhmZik7Ci0gICAgICAgICAgICAgICBycCsrOworICAgICAgICAgICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCpwcCkpICYgMHhmZik7CiAgICAgICAgICAgICB9CiAgICAgICAgICB9ICAvL2VuZCAhVXNlTU1YX3VwCiAgICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBQTkdfRklMVEVSX1ZBTFVFX0FWRzoKLSAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAocm93X2luZm8tPnBpeGVsX2RlcHRoID49IFBOR19NTVhfQklUREVQVEhfVEhSRVNIT0xEX0RFRkFVTFQpICYmCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5yb3dieXRlcyA+PSBQTkdfTU1YX1JPV0JZVEVTX1RIUkVTSE9MRF9ERUZBVUxUKSkKKyNpZiAoVXNlTU1YX2F2ZyA9PSAxKQorICAgICAgICAgaWYgKChyb3dfaW5mby0+cGl4ZWxfZGVwdGggPiA4KSAmJiAocm93X2luZm8tPnJvd2J5dGVzID49IDEyOCkpCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfcmVhZF9maWx0ZXJfcm93X21teF9hdmcocm93X2luZm8sIHJvdywgcHJldl9yb3cpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfdWludF8zMiBpOwogICAgICAgICAgICAgcG5nX2J5dGVwIHJwID0gcm93OwpAQCAtNDg3NywxMyArNDg3OCwxMyBAQAogICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgUE5HX0ZJTFRFUl9WQUxVRV9QQUVUSDoKLSAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAocm93X2luZm8tPnBpeGVsX2RlcHRoID49IFBOR19NTVhfQklUREVQVEhfVEhSRVNIT0xEX0RFRkFVTFQpICYmCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5yb3dieXRlcyA+PSBQTkdfTU1YX1JPV0JZVEVTX1RIUkVTSE9MRF9ERUZBVUxUKSkKKyNpZiAoVXNlTU1YX3BhZXRoID09IDEpCisgICAgICAgICBpZiAoKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+IDgpICYmIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gMTI4KSkKICAgICAgICAgIHsKICAgICAgICAgICAgIHBuZ19yZWFkX2ZpbHRlcl9yb3dfbW14X3BhZXRoKHJvd19pbmZvLCByb3csIHByZXZfcm93KTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICAgewogICAgICAgICAgICAgcG5nX3VpbnRfMzIgaTsKICAgICAgICAgICAgIHBuZ19ieXRlcCBycCA9IHJvdzsKQEAgLTQ4OTEsNyArNDg5Miw3IEBACiAgICAgICAgICAgICBwbmdfYnl0ZXAgbHAgPSByb3c7CiAgICAgICAgICAgICBwbmdfYnl0ZXAgY3AgPSBwcmV2X3JvdzsKICAgICAgICAgICAgIHBuZ191aW50XzMyIGJwcCA9IChyb3dfaW5mby0+cGl4ZWxfZGVwdGggKyA3KSA+PiAzOwotICAgICAgICAgICAgcG5nX3VpbnRfMzIgaXN0b3AgPSByb3dfaW5mby0+cm93Ynl0ZXMgLSBicHA7CisgICAgICAgICAgICBwbmdfdWludF8zMiBpc3RvcD1yb3dfaW5mby0+cm93Ynl0ZXMgLSBicHA7CiAKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBicHA7IGkrKykKICAgICAgICAgICAgIHsKQEAgLTQ4OTksNyArNDkwMCw3IEBACiAgICAgICAgICAgICAgICBycCsrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3A7IGkrKykgICAvKiB1c2UgbGVmdG92ZXIgcnAscHAgKi8KKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcDsgaSsrKSAgIC8vIHVzZSBsZWZ0b3ZlciBycCxwcAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IGEsIGIsIGMsIHBhLCBwYiwgcGMsIHA7CiAKQEAgLTQ5MjksNyArNDkzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICBwID0gYzsKICAgICAgICAgICAgICAgICAqLwogCi0gICAgICAgICAgICAgICBwID0gKHBhIDw9IHBiICYmIHBhIDw9IHBjKSA/IGEgOiAocGIgPD0gcGMpID8gYiA6IGM7CisgICAgICAgICAgICAgICBwID0gKHBhIDw9IHBiICYmIHBhIDw9cGMpID8gYSA6IChwYiA8PSBwYykgPyBiIDogYzsKIAogICAgICAgICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIHApICYgMHhmZik7CiAgICAgICAgICAgICAgICBycCsrOwpAQCAtNDkzOCw3ICs0OTM5LDcgQEAKICAgICAgICAgIGJyZWFrOwogCiAgICAgICBkZWZhdWx0OgotICAgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgIklnbm9yaW5nIGJhZCByb3ctZmlsdGVyIHR5cGUiKTsKKyAgICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJJZ25vcmluZyBiYWQgYWRhcHRpdmUgZmlsdGVyIHR5cGUiKTsKICAgICAgICAgICpyb3c9MDsKICAgICAgICAgIGJyZWFrOwogICAgfQpAQCAtNDk2MywyNCArNDk2NCw4NSBAQAogLy8gICAgICAgICAgICAgW2lzIHRoZXJlIGEgd2F5IHRvIHNpZ25hbCB0aGF0IGEgKnNpbmdsZSogZnVuY3Rpb24gc2hvdWxkCiAvLyAgICAgICAgICAgICAgbm90IGJlIGlubGluZWQ/ICBpcyB0aGVyZSBhIHdheSB0byBtb2RpZnkgdGhlIGxhYmVsIGZvcgogLy8gICAgICAgICAgICAgIGVhY2ggaW5saW5lZCBpbnN0YW5jZSwgZS5nLiwgYnkgYXBwZW5kaW5nIF8xLCBfMiwgZXRjLj8KLS8vICAgICAgICAgICAgICBtYXliZSBpZiBkb24ndCB1c2UgbGVhZGluZyAiLiIgaW4gbGFiZWwgbmFtZT8gKG5vcGUuLi5zaWdoKV0KKy8vICAgICAgICAgICAgICBtYXliZSBpZiBkb24ndCB1c2UgbGVhZGluZyAiLiIgaW4gbGFiZWwgbmFtZT8gKG5vdCB0ZXN0ZWQpXQogCi1pbnQgUE5HQVBJCi1wbmdfbW14X3N1cHBvcnQodm9pZCkKKyNpZmRlZiBPUklHX1RIQVRfVVNFRF9UT19DTE9CQkVSX0VCWAorCitpbnQgbW14c3VwcG9ydCh2b2lkKQogeworICAgIGludCBtbXhfc3VwcG9ydGVkX2xvY2FsID0gMDsKKwogICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKLSAgICAgICAgInB1c2hsICUlZWJ4ICAgICAgICAgIFxuXHQiICAvLyBlYnggZ2V0cyBjbG9iYmVyZWQgYnkgQ1BVSUQgaW5zdHJ1Y3Rpb24KLSAgICAgICAgInB1c2hsICUlZWN4ICAgICAgICAgIFxuXHQiICAvLyBzbyBkb2VzIGVjeC4uLgotICAgICAgICAicHVzaGwgJSVlZHggICAgICAgICAgXG5cdCIgIC8vIC4uLmFuZCBlZHggKGJ1dCBlY3ggJiBlZHggc2FmZSBvbiBMaW51eCkKIC8vICAgICAgIi5ieXRlICAweDY2ICAgICAgICAgIFxuXHQiICAvLyBjb252ZXJ0IDE2LWJpdCBwdXNoZiB0byAzMi1iaXQgcHVzaGZkCi0vLyAgICAgICJwdXNoZiAgICAgICAgICAgICAgICBcblx0IiAgLy8gMTYtYml0IHB1c2hmCisvLyAgICAgICJwdXNoZiAgICAgICAgICAgICAgICBcblx0IiAgLy8gc2F2ZSBFZmxhZyB0byBzdGFjawogICAgICAgICAicHVzaGZsICAgICAgICAgICAgICAgXG5cdCIgIC8vIHNhdmUgRWZsYWcgdG8gc3RhY2sKICAgICAgICAgInBvcGwgJSVlYXggICAgICAgICAgIFxuXHQiICAvLyBnZXQgRWZsYWcgZnJvbSBzdGFjayBpbnRvIGVheAogICAgICAgICAibW92bCAlJWVheCwgJSVlY3ggICAgXG5cdCIgIC8vIG1ha2UgYW5vdGhlciBjb3B5IG9mIEVmbGFnIGluIGVjeAogICAgICAgICAieG9ybCAkMHgyMDAwMDAsICUlZWF4IFxuXHQiIC8vIHRvZ2dsZSBJRCBiaXQgaW4gRWZsYWcgKGkuZS4sIGJpdCAyMSkKICAgICAgICAgInB1c2hsICUlZWF4ICAgICAgICAgIFxuXHQiICAvLyBzYXZlIG1vZGlmaWVkIEVmbGFnIGJhY2sgdG8gc3RhY2sKIC8vICAgICAgIi5ieXRlICAweDY2ICAgICAgICAgIFxuXHQiICAvLyBjb252ZXJ0IDE2LWJpdCBwb3BmIHRvIDMyLWJpdCBwb3BmZAotLy8gICAgICAicG9wZiAgICAgICAgICAgICAgICAgXG5cdCIgIC8vIDE2LWJpdCBwb3BmCisvLyAgICAgICJwb3BmICAgICAgICAgICAgICAgICBcblx0IiAgLy8gcmVzdG9yZSBtb2RpZmllZCB2YWx1ZSB0byBFZmxhZyByZWcKKyAgICAgICAgInBvcGZsICAgICAgICAgICAgICAgIFxuXHQiICAvLyByZXN0b3JlIG1vZGlmaWVkIHZhbHVlIHRvIEVmbGFnIHJlZworICAgICAgICAicHVzaGZsICAgICAgICAgICAgICAgXG5cdCIgIC8vIHNhdmUgRWZsYWcgdG8gc3RhY2sKKyAgICAgICAgInBvcGwgJSVlYXggICAgICAgICAgIFxuXHQiICAvLyBnZXQgRWZsYWcgZnJvbSBzdGFjaworICAgICAgICAieG9ybCAlJWVjeCwgJSVlYXggICAgXG5cdCIgIC8vIGNvbXBhcmUgbmV3IEVmbGFnIHdpdGggb3JpZ2luYWwgRWZsYWcKKyAgICAgICAgImp6IC5OT1RfU1VQUE9SVEVEICAgIFxuXHQiICAvLyBpZiBzYW1lLCBDUFVJRCBpbnN0ci4gaXMgbm90IHN1cHBvcnRlZAorCisgICAgICAgICJ4b3JsICUlZWF4LCAlJWVheCAgICBcblx0IiAgLy8gc2V0IGVheCB0byB6ZXJvCisvLyAgICAgICIuYnl0ZSAgMHgwZiwgMHhhMiAgICBcblx0IiAgLy8gQ1BVSUQgaW5zdHJ1Y3Rpb24gKHR3by1ieXRlIG9wY29kZSkKKyAgICAgICAgImNwdWlkICAgICAgICAgICAgICAgIFxuXHQiICAvLyBnZXQgdGhlIENQVSBpZGVudGlmaWNhdGlvbiBpbmZvCisgICAgICAgICJjbXBsICQxLCAlJWVheCAgICAgICBcblx0IiAgLy8gbWFrZSBzdXJlIGVheCByZXR1cm4gbm9uLXplcm8gdmFsdWUKKyAgICAgICAgImpsIC5OT1RfU1VQUE9SVEVEICAgIFxuXHQiICAvLyBpZiBlYXggaXMgemVybywgTU1YIGlzIG5vdCBzdXBwb3J0ZWQKKworICAgICAgICAieG9ybCAlJWVheCwgJSVlYXggICAgXG5cdCIgIC8vIHNldCBlYXggdG8gemVybyBhbmQuLi4KKyAgICAgICAgImluY2wgJSVlYXggICAgICAgICAgIFxuXHQiICAvLyAuLi5pbmNyZW1lbnQgZWF4IHRvIDEuICBUaGlzIHBhaXIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmYXN0ZXIgdGhhbiB0aGUgaW5zdHJ1Y3Rpb24gIm1vdiBlYXgsIDEiCisgICAgICAgICJjcHVpZCAgICAgICAgICAgICAgICBcblx0IiAgLy8gZ2V0IHRoZSBDUFUgaWRlbnRpZmljYXRpb24gaW5mbyBhZ2FpbgorICAgICAgICAiYW5kbCAkMHg4MDAwMDAsICUlZWR4IFxuXHQiIC8vIG1hc2sgb3V0IGFsbCBiaXRzIGJ1dCBNTVggYml0ICgyMykKKyAgICAgICAgImNtcGwgJDAsICUlZWR4ICAgICAgIFxuXHQiICAvLyAwID0gTU1YIG5vdCBzdXBwb3J0ZWQKKyAgICAgICAgImp6IC5OT1RfU1VQUE9SVEVEICAgIFxuXHQiICAvLyBub24temVybyA9IHllcywgTU1YIElTIHN1cHBvcnRlZAorCisgICAgICAgICJtb3ZsICQxLCAlMCAgICAgICAgICBcblx0IiAgLy8gc2V0IHJldHVybiB2YWx1ZSB0byAxIGFuZCBmYWxsIHRocm91Z2gKKworICAgICIuTk9UX1NVUFBPUlRFRDogICAgICAgICAgXG5cdCIgIC8vIHRhcmdldCBsYWJlbCBmb3IganVtcCBpbnN0cnVjdGlvbnMKKyAgICAgICAgIm1vdmwgJTAsICUlZWF4ICAgICAgIFxuXHQiICAvLyBtb3ZlIHJldHVybiB2YWx1ZSB0byBlYXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBET05FCisKKyAgICAgICAgOiAiPW0iIChtbXhfc3VwcG9ydGVkX2xvY2FsKSAvLyAlMCAob3V0cHV0IGxpc3Q6ICBtZW1vcnkgb25seSkKKworICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSB2YXJpYWJsZXMgdXNlZCBvbiBpbnB1dCAobm9uZSkKKworICAgICAgICA6ICIlZWF4IiwgIiVlYngiLCAgICAgICAgICAgIC8vIGNsb2JiZXIgbGlzdAorICAgICAgICAgICIlZWN4IiwgIiVlZHgiCisvLyAgICAgICwgIm1lbW9yeSIgICAvLyBpZiB3cml0ZSB0byBhIHZhcmlhYmxlIGdjYyB0aG91Z2h0IHdhcyBpbiBhIHJlZworLy8gICAgICAsICJjYyIgICAgICAgLy8gImNvbmRpdGlvbiBjb2RlcyIgKGZsYWcgYml0cykKKyAgICApOworCisgICAgLy9tbXhfc3VwcG9ydGVkX2xvY2FsPTA7IC8vIHRlc3QgY29kZSBmb3IgZm9yY2UgZG9uJ3Qgc3VwcG9ydCBNTVgKKyAgICAvL3ByaW50ZigiTU1YIDogJXUgKDE9TU1YIHN1cHBvcnRlZClcbiIsbW14X3N1cHBvcnRlZF9sb2NhbCk7CisKKyAgICByZXR1cm4gbW14X3N1cHBvcnRlZF9sb2NhbDsKK30KKworCisjZWxzZSAvKiAhT1JJR19USEFUX1VTRURfVE9fQ0xPQkJFUl9FQlggKi8KKworCitpbnQgbW14c3VwcG9ydCh2b2lkKQoreworICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgInB1c2hsICUlZWJ4ICAgICAgICAgIFxuXHQiICAvLyBlYnggZ2V0cyBjbG9iYmVyZWQgYnkgQ1BVSUQgaW5zdHJ1Y3Rpb24KKyAgICAgICAgInB1c2hsICUlZWN4ICAgICAgICAgIFxuXHQiICAvLyBzbyBkb2VzIGVjeC4uLgorICAgICAgICAicHVzaGwgJSVlZHggICAgICAgICAgXG5cdCIgIC8vIC4uLmFuZCBlZHggKGJ1dCBlY3ggJiBlZHggc2FmZSBvbiBMaW51eCkKKy8vICAgICAgIi5ieXRlICAweDY2ICAgICAgICAgIFxuXHQiICAvLyBjb252ZXJ0IDE2LWJpdCBwdXNoZiB0byAzMi1iaXQgcHVzaGZkCisvLyAgICAgICJwdXNoZiAgICAgICAgICAgICAgICBcblx0IiAgLy8gc2F2ZSBFZmxhZyB0byBzdGFjaworICAgICAgICAicHVzaGZsICAgICAgICAgICAgICAgXG5cdCIgIC8vIHNhdmUgRWZsYWcgdG8gc3RhY2sKKyAgICAgICAgInBvcGwgJSVlYXggICAgICAgICAgIFxuXHQiICAvLyBnZXQgRWZsYWcgZnJvbSBzdGFjayBpbnRvIGVheAorICAgICAgICAibW92bCAlJWVheCwgJSVlY3ggICAgXG5cdCIgIC8vIG1ha2UgYW5vdGhlciBjb3B5IG9mIEVmbGFnIGluIGVjeAorICAgICAgICAieG9ybCAkMHgyMDAwMDAsICUlZWF4IFxuXHQiIC8vIHRvZ2dsZSBJRCBiaXQgaW4gRWZsYWcgKGkuZS4sIGJpdCAyMSkKKyAgICAgICAgInB1c2hsICUlZWF4ICAgICAgICAgIFxuXHQiICAvLyBzYXZlIG1vZGlmaWVkIEVmbGFnIGJhY2sgdG8gc3RhY2sKKy8vICAgICAgIi5ieXRlICAweDY2ICAgICAgICAgIFxuXHQiICAvLyBjb252ZXJ0IDE2LWJpdCBwb3BmIHRvIDMyLWJpdCBwb3BmZAorLy8gICAgICAicG9wZiAgICAgICAgICAgICAgICAgXG5cdCIgIC8vIHJlc3RvcmUgbW9kaWZpZWQgdmFsdWUgdG8gRWZsYWcgcmVnCiAgICAgICAgICJwb3BmbCAgICAgICAgICAgICAgICBcblx0IiAgLy8gcmVzdG9yZSBtb2RpZmllZCB2YWx1ZSB0byBFZmxhZyByZWcKICAgICAgICAgInB1c2hmbCAgICAgICAgICAgICAgIFxuXHQiICAvLyBzYXZlIEVmbGFnIHRvIHN0YWNrCiAgICAgICAgICJwb3BsICUlZWF4ICAgICAgICAgICBcblx0IiAgLy8gZ2V0IEVmbGFnIGZyb20gc3RhY2sKQEAgLTUwMDIsNyArNTA2NCw2IEBACiAgICAgICAgICJqeiAuTk9UX1NVUFBPUlRFRCAgICBcblx0IiAgLy8gbm9uLXplcm8gPSB5ZXMsIE1NWCBJUyBzdXBwb3J0ZWQKIAogICAgICAgICAibW92bCAkMSwgJSVlYXggICAgICAgXG5cdCIgIC8vIHNldCByZXR1cm4gdmFsdWUgdG8gMQotICAgICAgICAibW92bCAlJWVheCwgX21teF9zdXBwb3J0ZWQgXG5cdCIgLy8gc2F2ZSBpbiBnbG9iYWwgc3RhdGljIHZhcmlhYmxlLCB0b28KICAgICAgICAgInBvcGwgJSVlZHggICAgICAgICAgIFxuXHQiICAvLyByZXN0b3JlIGVkeAogICAgICAgICAicG9wbCAlJWVjeCAgICAgICAgICAgXG5cdCIgIC8vIHJlc3RvcmUgZWN4CiAgICAgICAgICJwb3BsICUlZWJ4ICAgICAgICAgICBcblx0IiAgLy8gcmVzdG9yZSBlYnggKCJyb3ciIGluIHBuZ19kb19pbnRlcmxhY2UpCkBAIC01MDEwLDE0ICs1MDcxLDEzIEBACiAKICAgICAiLk5PVF9TVVBQT1JURUQ6ICAgICAgICAgIFxuXHQiICAvLyB0YXJnZXQgbGFiZWwgZm9yIGp1bXAgaW5zdHJ1Y3Rpb25zCiAgICAgICAgICJtb3ZsICQwLCAlJWVheCAgICAgICBcblx0IiAgLy8gc2V0IHJldHVybiB2YWx1ZSB0byAwCi0gICAgICAgICJtb3ZsICUlZWF4LCBfbW14X3N1cHBvcnRlZCBcblx0IiAvLyBzYXZlIGluIGdsb2JhbCBzdGF0aWMgdmFyaWFibGUsIHRvbwogICAgICAgICAicG9wbCAlJWVkeCAgICAgICAgICAgXG5cdCIgIC8vIHJlc3RvcmUgZWR4CiAgICAgICAgICJwb3BsICUlZWN4ICAgICAgICAgICBcblx0IiAgLy8gcmVzdG9yZSBlY3gKICAgICAgICAgInBvcGwgJSVlYnggICAgICAgICAgIFxuXHQiICAvLyByZXN0b3JlIGVieCAoInJvdyIgaW4gcG5nX2RvX2ludGVybGFjZSkKIC8vICAgICAgInJldCAgICAgICAgICAgICAgICAgIFxuXHQiICAvLyBET05FOiAgbm8gTU1YIHN1cHBvcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZmFsbCB0aHJvdWdoIHRvIHN0YW5kYXJkIEMgInJldCIpCiAKLSAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXQgbGlzdCAobm9uZSkKKyAgICAgICAgOiAvLyAiPW0iIChtbXhfc3VwcG9ydGVkX2xvY2FsKSAvLyAlMCAob3V0cHV0IGxpc3Q6ICBtZW1vcnkgb25seSkKIAogICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSB2YXJpYWJsZXMgdXNlZCBvbiBpbnB1dCAobm9uZSkKIApAQCAtNTAyNyw3ICs1MDg3LDEyIEBACiAvLyAgICAgICwgImNjIiAgICAgICAvLyAiY29uZGl0aW9uIGNvZGVzIiAoZmxhZyBiaXRzKQogICAgICk7CiAKLSAgICAvLyByZXR1cm4gJSVlYXg7CisgICAgLy9tbXhfc3VwcG9ydGVkX2xvY2FsPTA7IC8vIHRlc3QgY29kZSBmb3IgZm9yY2UgZG9uJ3Qgc3VwcG9ydCBNTVgKKyAgICAvL3ByaW50ZigiTU1YIDogJXUgKDE9TU1YIHN1cHBvcnRlZClcbiIsbW14X3N1cHBvcnRlZF9sb2NhbCk7CisKKyAgICAvL3JldHVybiBtbXhfc3VwcG9ydGVkX2xvY2FsOwogfQogCisjZW5kaWYgLyogP09SSUdfVEhBVF9VU0VEX1RPX0NMT0JCRVJfRUJYICovCisKICNlbmRpZiAvKiBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEICYmIFBOR19VU0VfUE5HR0NDUkQgKi8KZGlmZiAtLWdpdCBhL3BuZ2dldC5jIGIvcG5nZ2V0LmMKaW5kZXggY2JiMmVmNS4uNDJiYTUyOCAxMDA2NDQKLS0tIGEvcG5nZ2V0LmMKKysrIGIvcG5nZ2V0LmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ2dldC5jIC0gcmV0cmlldmFsIG9mIHZhbHVlcyBmcm9tIGluZm8gc3RydWN0CiAgKgotICogbGlicG5nIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQorICogbGlicG5nIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICovCkBAIC04MDcsNyArODA3LDcgQEAKIHBuZ19ieXRlIFBOR0FQSQogcG5nX2dldF9yZ2JfdG9fZ3JheV9zdGF0dXMgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpCiB7Ci0gICByZXR1cm4gKHBuZ19ieXRlKShwbmdfcHRyPyBwbmdfcHRyLT5yZ2JfdG9fZ3JheV9zdGF0dXMgOiAwKTsKKyAgIHJldHVybiBwbmdfcHRyLT5yZ2JfdG9fZ3JheV9zdGF0dXM7CiB9CiAjZW5kaWYKIApAQCAtODE1LDcgKzgxNSw3IEBACiBwbmdfdm9pZHAgUE5HQVBJCiBwbmdfZ2V0X3VzZXJfY2h1bmtfcHRyKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpCiB7Ci0gICByZXR1cm4gKHBuZ19wdHI/IHBuZ19wdHItPnVzZXJfY2h1bmtfcHRyIDogTlVMTCk7CisgICByZXR1cm4gKHBuZ19wdHItPnVzZXJfY2h1bmtfcHRyKTsKIH0KICNlbmRpZgogCkBAIC04MjMsNiArODIzLDUgQEAKIHBuZ191aW50XzMyIFBOR0FQSQogcG5nX2dldF9jb21wcmVzc2lvbl9idWZmZXJfc2l6ZShwbmdfc3RydWN0cCBwbmdfcHRyKQogewotICAgcmV0dXJuIChwbmdfdWludF8zMikocG5nX3B0cj8gcG5nX3B0ci0+emJ1Zl9zaXplIDogMEwpOworICAgcmV0dXJuKHBuZ19wdHItPnpidWZfc2l6ZSk7CiB9Ci0KZGlmZiAtLWdpdCBhL3BuZ21lbS5jIGIvcG5nbWVtLmMKaW5kZXggMzdlNGNhZi4uNmEwNDc0ZiAxMDA2NDQKLS0tIGEvcG5nbWVtLmMKKysrIGIvcG5nbWVtLmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ21lbS5jIC0gc3R1YiBmdW5jdGlvbnMgZm9yIG1lbW9yeSBhbGxvY2F0aW9uCiAgKgotICogbGlicG5nIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQorICogbGlicG5nIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICoKZGlmZiAtLWdpdCBhL3BuZ3ByZWFkLmMgYi9wbmdwcmVhZC5jCmluZGV4IGQwMTlhYzQuLjBlNTY0NjYgMTAwNjQ0Ci0tLSBhL3BuZ3ByZWFkLmMKKysrIGIvcG5ncHJlYWQuYwpAQCAtMSw5ICsxLDkgQEAKIAogLyogcG5ncHJlYWQuYyAtIHJlYWQgYSBwbmcgZmlsZSBpbiBwdXNoIG1vZGUKICAqCi0gKiBsaWJwbmcgMS4wLjliZXRhMTAgLSBKYW51YXJ5IDE2LCAyMDAxCisgKiBsaWJwbmcgMS4wLjliZXRhMiAtIE5vdmVtYmVyIDE5LCAyMDAwCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCiAgKiAoVmVyc2lvbiAwLjg4IENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy4pCiAgKi8KQEAgLTc3MiwyOSArNzcyLDE4IEBACiAgICBpZiAocG5nX3B0ci0+aW50ZXJsYWNlZCAmJiAocG5nX3B0ci0+dHJhbnNmb3JtYXRpb25zICYgUE5HX0lOVEVSTEFDRSkpCiAgICB7CiAgICAgICBpZiAocG5nX3B0ci0+cGFzcyA8IDYpCi0vKiAgICAgICBvbGQgaW50ZXJmYWNlIChwcmUtMS4wLjkpOgogICAgICAgICAgcG5nX2RvX3JlYWRfaW50ZXJsYWNlKCYocG5nX3B0ci0+cm93X2luZm8pLAogICAgICAgICAgICAgcG5nX3B0ci0+cm93X2J1ZiArIDEsIHBuZ19wdHItPnBhc3MsIHBuZ19wdHItPnRyYW5zZm9ybWF0aW9ucyk7Ci0gKi8KLSAgICAgICAgIHBuZ19kb19yZWFkX2ludGVybGFjZShwbmdfcHRyKTsKIAotICAgIHN3aXRjaCAocG5nX3B0ci0+cGFzcykKLSAgICB7CisgICAgICBzd2l0Y2ggKHBuZ19wdHItPnBhc3MpCisgICAgICB7CiAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICB7CiAgICAgICAgICAgICBpbnQgaTsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA4ICYmIHBuZ19wdHItPnBhc3MgPT0gMDsgaSsrKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcG5nX3B1c2hfaGF2ZV9yb3cocG5nX3B0ciwgcG5nX3B0ci0+cm93X2J1ZiArIDEpOwotICAgICAgICAgICAgICAgcG5nX3JlYWRfcHVzaF9maW5pc2hfcm93KHBuZ19wdHIpOyAvKiB1cGRhdGVzIHBuZ19wdHItPnBhc3MgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwbmdfcHRyLT5wYXNzID09IDIpIC8qIHBhc3MgMSBtaWdodCBiZSBlbXB0eSAqLwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQgJiYgcG5nX3B0ci0+cGFzcyA9PSAyOyBpKyspCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgIHBuZ19yZWFkX3B1c2hfZmluaXNoX3JvdyhwbmdfcHRyKTsKLSAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIHBuZ19yZWFkX3B1c2hfZmluaXNoX3JvdyhwbmdfcHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQpAQCAtODA2LDcgKzc5NSw3IEBACiAgICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBwbmdfcHRyLT5yb3dfYnVmICsgMSk7CiAgICAgICAgICAgICAgICBwbmdfcmVhZF9wdXNoX2ZpbmlzaF9yb3cocG5nX3B0cik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocG5nX3B0ci0+cGFzcyA9PSAyKSAvKiBza2lwIHRvcCA0IGdlbmVyYXRlZCByb3dzICovCisgICAgICAgICAgICBpZiAocG5nX3B0ci0+cGFzcyA9PSAyKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQgJiYgcG5nX3B0ci0+cGFzcyA9PSAyOyBpKyspCiAgICAgICAgICAgICAgICB7CkBAIC04MjksMTQgKzgxOCw2IEBACiAgICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBOVUxMKTsKICAgICAgICAgICAgICAgIHBuZ19yZWFkX3B1c2hfZmluaXNoX3JvdyhwbmdfcHRyKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwbmdfcHRyLT5wYXNzID09IDQpIC8qIHBhc3MgMyBtaWdodCBiZSBlbXB0eSAqLwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDIgJiYgcG5nX3B0ci0+cGFzcyA9PSA0OyBpKyspCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgIHBuZ19yZWFkX3B1c2hfZmluaXNoX3JvdyhwbmdfcHRyKTsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgY2FzZSAzOgpAQCAtODQ3LDcgKzgyOCw3IEBACiAgICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBwbmdfcHRyLT5yb3dfYnVmICsgMSk7CiAgICAgICAgICAgICAgICBwbmdfcmVhZF9wdXNoX2ZpbmlzaF9yb3cocG5nX3B0cik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocG5nX3B0ci0+cGFzcyA9PSA0KSAvKiBza2lwIHRvcCB0d28gZ2VuZXJhdGVkIHJvd3MgKi8KKyAgICAgICAgICAgIGlmIChwbmdfcHRyLT5wYXNzID09IDQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMiAmJiBwbmdfcHRyLT5wYXNzID09IDQ7IGkrKykKICAgICAgICAgICAgICAgIHsKQEAgLTg3MCwxMSArODUxLDYgQEAKICAgICAgICAgICAgICAgIHBuZ19wdXNoX2hhdmVfcm93KHBuZ19wdHIsIE5VTEwpOwogICAgICAgICAgICAgICAgcG5nX3JlYWRfcHVzaF9maW5pc2hfcm93KHBuZ19wdHIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHBuZ19wdHItPnBhc3MgPT0gNikgLyogcGFzcyA1IG1pZ2h0IGJlIGVtcHR5ICovCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBOVUxMKTsKLSAgICAgICAgICAgICAgIHBuZ19yZWFkX3B1c2hfZmluaXNoX3JvdyhwbmdfcHRyKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgY2FzZSA1OgpAQCAtODg1LDcgKzg2MSw3IEBACiAgICAgICAgICAgICAgICBwbmdfcHVzaF9oYXZlX3JvdyhwbmdfcHRyLCBwbmdfcHRyLT5yb3dfYnVmICsgMSk7CiAgICAgICAgICAgICAgICBwbmdfcmVhZF9wdXNoX2ZpbmlzaF9yb3cocG5nX3B0cik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocG5nX3B0ci0+cGFzcyA9PSA2KSAvKiBza2lwIHRvcCBnZW5lcmF0ZWQgcm93ICovCisgICAgICAgICAgICBpZiAocG5nX3B0ci0+cGFzcyA9PSA2KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcG5nX3B1c2hfaGF2ZV9yb3cocG5nX3B0ciwgTlVMTCk7CiAgICAgICAgICAgICAgICBwbmdfcmVhZF9wdXNoX2ZpbmlzaF9yb3cocG5nX3B0cik7CkBAIC05NTIsMTEgKzkyOCw2IEBACiAgICAgICBkbwogICAgICAgewogICAgICAgICAgcG5nX3B0ci0+cGFzcysrOwotICAgICAgICAgaWYgKChwbmdfcHRyLT5wYXNzID09IDEgJiYgcG5nX3B0ci0+d2lkdGggPCA1KSB8fAotICAgICAgICAgICAgIChwbmdfcHRyLT5wYXNzID09IDMgJiYgcG5nX3B0ci0+d2lkdGggPCAzKSB8fAotICAgICAgICAgICAgIChwbmdfcHRyLT5wYXNzID09IDUgJiYgcG5nX3B0ci0+d2lkdGggPCAyKSkKLSAgICAgICAgICAgcG5nX3B0ci0+cGFzcysrOwotCiAgICAgICAgICBpZiAocG5nX3B0ci0+cGFzcyA+PSA3KQogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL3BuZ3JlYWQuYyBiL3BuZ3JlYWQuYwppbmRleCA5ZjllYzIzLi5hZjg4ZGU1IDEwMDY0NAotLS0gYS9wbmdyZWFkLmMKKysrIGIvcG5ncmVhZC5jCkBAIC0xLDkgKzEsOSBAQAogCiAvKiBwbmdyZWFkLmMgLSByZWFkIGEgUE5HIGZpbGUKICAqCi0gKiBsaWJwbmcgMS4wLjliZXRhMTAgLSBKYW51YXJ5IDE2LCAyMDAxCisgKiBsaWJwbmcgMS4wLjliZXRhMiAtIE5vdmVtYmVyIDE5LCAyMDAwCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCiAgKiAoVmVyc2lvbiAwLjg4IENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy4pCiAgKgpAQCAtMTAzLDcgKzEwMyw3IEBACiAgICAgICAgIHJlbW92ZWQgZnJvbSB2ZXJzaW9uIDIuMC4wIGFuZCBiZXlvbmQgYmVjYXVzZSB0aGUgcHJldmlvdXMgdGVzdAogICAgICAgICB3b3VsZCBoYXZlIGFscmVhZHkgcmVqZWN0ZWQgaXQuICovCiAKLSAgICAgaWYgKHVzZXJfcG5nX3Zlcls0XSA9PSAnNicgJiYgdXNlcl9wbmdfdmVyWzJdID09ICcwJyAmJgorICAgICBpZiAodXNlcl9wbmdfdmVyWzRdID09ICc2JyAmJiB1c2VyX3BuZ192ZXJbMl0gPT0gJzAnICYmIAogICAgICAgICAgdXNlcl9wbmdfdmVyWzBdID09ICcxJyAmJiB1c2VyX3BuZ192ZXJbNV0gPT0gJ1wwJykKICAgICAgewogICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwKQEAgLTI0Niw4ICsyNDYsNiBAQAogICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsICJQTkcgZmlsZSBjb3JydXB0ZWQgYnkgQVNDSUkgY29udmVyc2lvbiIpOwogICAgICAgfQotICAgICAgaWYgKG51bV9jaGVja2VkIDwgMykKLSAgICAgICAgIHBuZ19wdHItPm1vZGUgfD0gUE5HX0hBVkVfUE5HX1NJR05BVFVSRTsKICAgIH0KIAogICAgZm9yKDs7KQpAQCAtNjQ4LDE1ICs2NDYsNiBAQAogCiAgICBwbmdfbWVtY3B5X2NoZWNrKHBuZ19wdHIsIHBuZ19wdHItPnByZXZfcm93LCBwbmdfcHRyLT5yb3dfYnVmLAogICAgICAgcG5nX3B0ci0+cm93Ynl0ZXMgKyAxKTsKLSAgIAotI2lmIGRlZmluZWQoUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQpCi0gICBpZigocG5nX3B0ci0+bW5nX2ZlYXR1cmVzX3Blcm1pdHRlZCAmIFBOR19GTEFHX01OR19GSUxURVJfNjQpICYmCi0gICAgICAocG5nX3B0ci0+ZmlsdGVyX3R5cGUgPT0gUE5HX0lOVFJBUElYRUxfRElGRkVSRU5DSU5HKSkKLSAgIHsKLSAgICAgIC8qIEludHJhcGl4ZWwgZGlmZmVyZW5jaW5nICovCi0gICAgICBwbmdfZG9fcmVhZF9pbnRyYXBpeGVsKCYocG5nX3B0ci0+cm93X2luZm8pLCBwbmdfcHRyLT5yb3dfYnVmICsgMSk7Ci0gICB9Ci0jZW5kaWYKIAogICAgaWYgKHBuZ19wdHItPnRyYW5zZm9ybWF0aW9ucykKICAgICAgIHBuZ19kb19yZWFkX3RyYW5zZm9ybWF0aW9ucyhwbmdfcHRyKTsKQEAgLTY2NywxMSArNjU2LDggQEAKICAgICAgIChwbmdfcHRyLT50cmFuc2Zvcm1hdGlvbnMgJiBQTkdfSU5URVJMQUNFKSkKICAgIHsKICAgICAgIGlmIChwbmdfcHRyLT5wYXNzIDwgNikKLS8qICAgICAgIG9sZCBpbnRlcmZhY2UgKHByZS0xLjAuOSk6CiAgICAgICAgICBwbmdfZG9fcmVhZF9pbnRlcmxhY2UoJihwbmdfcHRyLT5yb3dfaW5mbyksCiAgICAgICAgICAgICBwbmdfcHRyLT5yb3dfYnVmICsgMSwgcG5nX3B0ci0+cGFzcywgcG5nX3B0ci0+dHJhbnNmb3JtYXRpb25zKTsKLSAqLwotICAgICAgICAgcG5nX2RvX3JlYWRfaW50ZXJsYWNlKHBuZ19wdHIpOwogCiAgICAgICBpZiAoZHNwX3JvdyAhPSBOVUxMKQogICAgICAgICAgcG5nX2NvbWJpbmVfcm93KHBuZ19wdHIsIGRzcF9yb3csCkBAIC03MTUsNyArNzAxLDcgQEAKICAqIG5vdCBjYWxsZWQgcG5nX3NldF9pbnRlcmxhY2VfaGFuZGxpbmcoKSwgdGhlIGRpc3BsYXlfcm93IGJ1ZmZlciB3aWxsCiAgKiBiZSBpZ25vcmVkLCBzbyBwYXNzIE5VTEwgdG8gaXQuCiAgKgotICogWypdIHBuZ19oYW5kbGVfYWxwaGEoKSBkb2VzIG5vdCBleGlzdCB5ZXQsIGFzIG9mIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTEwCisgKiBbKl0gcG5nX2hhbmRsZV9hbHBoYSgpIGRvZXMgbm90IGV4aXN0IHlldCwgYXMgb2YgbGlicG5nIHZlcnNpb24gMS4wLjliZXRhMgogICovCiAKIHZvaWQgUE5HQVBJCkBAIC03NjQsNyArNzUwLDcgQEAKICAqIG9ubHkgY2FsbCB0aGlzIGZ1bmN0aW9uIG9uY2UuICBJZiB5b3UgZGVzaXJlIHRvIGhhdmUgYW4gaW1hZ2UgZm9yCiAgKiBlYWNoIHBhc3Mgb2YgYSBpbnRlcmxhY2VkIGltYWdlLCB1c2UgcG5nX3JlYWRfcm93cygpIGluc3RlYWQuCiAgKgotICogWypdIHBuZ19oYW5kbGVfYWxwaGEoKSBkb2VzIG5vdCBleGlzdCB5ZXQsIGFzIG9mIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTEwCisgKiBbKl0gcG5nX2hhbmRsZV9hbHBoYSgpIGRvZXMgbm90IGV4aXN0IHlldCwgYXMgb2YgbGlicG5nIHZlcnNpb24gMS4wLjliZXRhMgogICovCiB2b2lkIFBOR0FQSQogcG5nX3JlYWRfaW1hZ2UocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2J5dGVwcCBpbWFnZSkKZGlmZiAtLWdpdCBhL3BuZ3Jpby5jIGIvcG5ncmlvLmMKaW5kZXggNDJjNTA0Zi4uNWNkM2RkYyAxMDA2NDQKLS0tIGEvcG5ncmlvLmMKKysrIGIvcG5ncmlvLmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ3Jpby5jIC0gZnVuY3Rpb25zIGZvciBkYXRhIGlucHV0CiAgKgotICogbGlicG5nIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQorICogbGlicG5nIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICoKZGlmZiAtLWdpdCBhL3BuZ3J0cmFuLmMgYi9wbmdydHJhbi5jCmluZGV4IDgxMjUxYjQuLjU3MzkxYmEgMTAwNjQ0Ci0tLSBhL3BuZ3J0cmFuLmMKKysrIGIvcG5ncnRyYW4uYwpAQCAtMSw5ICsxLDkgQEAKIAogLyogcG5ncnRyYW4uYyAtIHRyYW5zZm9ybXMgdGhlIGRhdGEgaW4gYSByb3cgZm9yIFBORyByZWFkZXJzCiAgKgotICogbGlicG5nIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQorICogbGlicG5nIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICoKQEAgLTQwNTMsNjMgKzQwNTMsMyBAQAogLyogVG8gZG86IGluc3RhbGwgaW50ZWdlciB2ZXJzaW9uIG9mIHBuZ19idWlsZF9nYW1tYV90YWJsZSBoZXJlICovCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQpCi0vKiB1bmRvZXMgaW50cmFwaXhlbCBkaWZmZXJlbmNpbmcgICovCi12b2lkIC8qIFBSSVZBVEUgKi8KLXBuZ19kb19yZWFkX2ludHJhcGl4ZWwocG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdykKLXsKLSAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX2RvX3JlYWRfaW50cmFwaXhlbFxuIik7Ci0gICBpZiAoCi0jaWYgZGVmaW5lZChQTkdfVVNFTEVTU19URVNUU19TVVBQT1JURUQpCi0gICAgICAgcm93ICE9IE5VTEwgJiYgcm93X2luZm8gIT0gTlVMTCAmJgotI2VuZGlmCi0gICAgICAgKHJvd19pbmZvLT5jb2xvcl90eXBlICYgUE5HX0NPTE9SX01BU0tfQ09MT1IpKQotICAgewotICAgICAgaW50IGJ5dGVzX3Blcl9waXhlbDsKLSAgICAgIHBuZ191aW50XzMyIHJvd193aWR0aCA9IHJvd19pbmZvLT53aWR0aDsKLSAgICAgIGlmIChyb3dfaW5mby0+Yml0X2RlcHRoID09IDgpCi0gICAgICB7Ci0gICAgICAgICBwbmdfYnl0ZXAgcnA7Ci0gICAgICAgICBwbmdfdWludF8zMiBpOwotCi0gICAgICAgICBpZiAocm93X2luZm8tPmNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCKQotICAgICAgICAgICAgYnl0ZXNfcGVyX3BpeGVsID0gMzsKLSAgICAgICAgIGVsc2UgaWYgKHJvd19pbmZvLT5jb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1JHQl9BTFBIQSkKLSAgICAgICAgICAgIGJ5dGVzX3Blcl9waXhlbCA9IDQ7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgIGZvciAoaSA9IDAsIHJwID0gcm93OyBpIDwgcm93X3dpZHRoOyBpKyssIHJwICs9IGJ5dGVzX3Blcl9waXhlbCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICoocnApID0gKHBuZ19ieXRlKSgoMjU2ICsgKnJwICsgKihycCsxKSkmMHhmZik7Ci0gICAgICAgICAgICAqKHJwKzIpID0gKHBuZ19ieXRlKSgoMjU2ICsgKihycCsyKSArICoocnArMSkpJjB4ZmYpOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAocm93X2luZm8tPmJpdF9kZXB0aCA9PSAxNikKLSAgICAgIHsKLSAgICAgICAgIHBuZ19ieXRlcCBycDsKLSAgICAgICAgIHBuZ191aW50XzMyIGk7Ci0KLSAgICAgICAgIGlmIChyb3dfaW5mby0+Y29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9SR0IpCi0gICAgICAgICAgICBieXRlc19wZXJfcGl4ZWwgPSA2OwotICAgICAgICAgZWxzZSBpZiAocm93X2luZm8tPmNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBKQotICAgICAgICAgICAgYnl0ZXNfcGVyX3BpeGVsID0gODsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgZm9yIChpID0gMCwgcnAgPSByb3c7IGkgPCByb3dfd2lkdGg7IGkrKywgcnAgKz0gYnl0ZXNfcGVyX3BpeGVsKQotICAgICAgICAgewotICAgICAgICAgICAgcG5nX3VpbnRfMzIgczA9KihycCAgKTw8OCB8ICoocnArMSk7Ci0gICAgICAgICAgICBwbmdfdWludF8zMiBzMT0qKHJwKzIpPDw4IHwgKihycCszKTsKLSAgICAgICAgICAgIHBuZ191aW50XzMyIHMyPSoocnArNCk8PDggfCAqKHJwKzUpOwotICAgICAgICAgICAgcG5nX3VpbnRfMzIgcmVkPSg2NTUzNitzMCtzMSkmMHhmZmZmOwotICAgICAgICAgICAgcG5nX3VpbnRfMzIgYmx1ZT0oNjU1MzYrczIrczEpJjB4ZmZmZjsKLSAgICAgICAgICAgICoocnAgICkgPSAocG5nX2J5dGUpKChyZWQ+PjgpJjB4ZmYpOwotICAgICAgICAgICAgKihycCsxKSA9IChwbmdfYnl0ZSkocmVkJjB4ZmYpOwotICAgICAgICAgICAgKihycCs0KSA9IChwbmdfYnl0ZSkoKGJsdWU+PjgpJjB4ZmYpOwotICAgICAgICAgICAgKihycCs1KSA9IChwbmdfYnl0ZSkoYmx1ZSYweGZmKTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgIH0KLX0KLSNlbmRpZiAvKiBQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCAqLwpkaWZmIC0tZ2l0IGEvcG5ncnV0aWwuYyBiL3BuZ3J1dGlsLmMKaW5kZXggYzdmZGUwMi4uZTg3ZWU1MyAxMDA2NDQKLS0tIGEvcG5ncnV0aWwuYworKysgYi9wbmdydXRpbC5jCkBAIC0xLDkgKzEsOSBAQAogCiAvKiBwbmdydXRpbC5jIC0gdXRpbGl0aWVzIHRvIHJlYWQgYSBQTkcgZmlsZQogICoKLSAqIGxpYnBuZyAxLjAuOWJldGExMCAtIEphbnVhcnkgMTYsIDIwMDEKKyAqIGxpYnBuZyAxLjAuOWJldGEyIC0gTm92ZW1iZXIgMTksIDIwMDAKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKICAqCkBAIC0xNzQsNyArMTc0LDcgQEAKICAgIHBuZ19jaGFycCB0ZXh0ID0gTlVMTDsKICAgIHBuZ19zaXplX3QgdGV4dF9zaXplOwogCi0gICBpZiAoY29tcF90eXBlID09IFBOR19DT01QUkVTU0lPTl9UWVBFX0JBU0UpCisgICBpZiAoY29tcF90eXBlID09IFBOR19URVhUX0NPTVBSRVNTSU9OX3pUWHQpCiAgICB7CiAgICAgICBpbnQgcmV0ID0gWl9PSzsKICAgICAgIHBuZ19wdHItPnpzdHJlYW0ubmV4dF9pbiA9IChwbmdfYnl0ZXApKGNodW5rZGF0YSArIHByZWZpeF9zaXplKTsKQEAgLTI2NiwxMyArMjY2LDYgQEAKICAgICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsCiAgICAgICAgICAgICAiSW5jb21wbGV0ZSBjb21wcmVzc2VkIGRhdGFzdHJlYW0gaW4gY2h1bmsgb3RoZXIgdGhhbiBJREFUIik7CiAjZW5kaWYKLSAgICAgICAgIHRleHRfc2l6ZT1wcmVmaXhfc2l6ZTsKLSAgICAgICAgIGlmICh0ZXh0ID09ICBOVUxMKQotICAgICAgICAgewotICAgICAgICAgICAgdGV4dCA9IChwbmdfY2hhcnApcG5nX21hbGxvYyhwbmdfcHRyLCB0ZXh0X3NpemUrMSk7Ci0gICAgICAgICAgICBwbmdfbWVtY3B5KHRleHQsIGNodW5rZGF0YSwgcHJlZml4X3NpemUpOwotICAgICAgICAgfQotICAgICAgICAgKih0ZXh0ICsgdGV4dF9zaXplKSA9IDB4MDA7CiAgICAgICB9CiAKICAgICAgIGluZmxhdGVSZXNldCgmcG5nX3B0ci0+enN0cmVhbSk7CkBAIC0yODIsNyArMjc1LDcgQEAKICAgICAgIGNodW5rZGF0YSA9IHRleHQ7CiAgICAgICAqbmV3bGVuZ3RoPXRleHRfc2l6ZTsKICAgIH0KLSAgIGVsc2UgLyogaWYgKGNvbXBfdHlwZSAhPSBQTkdfQ09NUFJFU1NJT05fVFlQRV9CQVNFKSAqLworICAgZWxzZSAvKiBpZiAoY29tcF90eXBlICE9IFBOR19URVhUX0NPTVBSRVNTSU9OX3pUWHQpICovCiAgICB7CiAjaWYgIWRlZmluZWQoUE5HX05PX1NURElPKSAmJiAhZGVmaW5lZChfV0lOMzJfV0NFKQogICAgICAgY2hhciB1bXNnWzUwXTsKQEAgLTI5Myw4ICsyODYsMTAgQEAKICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJVbmtub3duIHpUWHQgY29tcHJlc3Npb24gdHlwZSIpOwogI2VuZGlmCiAKLSAgICAgICooY2h1bmtkYXRhICsgcHJlZml4X3NpemUpID0gMHgwMDsKLSAgICAgICpuZXdsZW5ndGg9cHJlZml4X3NpemU7CisgICAgICAvKiBDb3B5IHdoYXQgd2UgY2FuIG9mIHRoZSBlcnJvciBtZXNzYWdlIGludG8gdGhlIHRleHQgY2h1bmsgKi8KKyAgICAgIHRleHRfc2l6ZSA9IChwbmdfc2l6ZV90KShjaHVua2xlbmd0aCAtICh0ZXh0IC0gY2h1bmtkYXRhKSk7CisgICAgICB0ZXh0X3NpemUgPSBzaXplb2YobXNnKSA+IHRleHRfc2l6ZSA/IHRleHRfc2l6ZSA6IHNpemVvZihtc2cpOworICAgICAgcG5nX21lbWNweSh0ZXh0LCBtc2csIHRleHRfc2l6ZSk7CiAgICB9CiAKICAgIHJldHVybiBjaHVua2RhdGE7CkBAIC0zNTgsMzMgKzM1Myw4IEBACiAgICBpZiAoY29tcHJlc3Npb25fdHlwZSAhPSBQTkdfQ09NUFJFU1NJT05fVFlQRV9CQVNFKQogICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsICJVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCBpbiBJSERSIik7CiAKLSNpZiBkZWZpbmVkKFBOR19NTkdfRkVBVFVSRVNfU1VQUE9SVEVEKQotICAgLyogQWNjZXB0IGZpbHRlcl9tZXRob2QgNjQgKGludHJhcGl4ZWwgZGlmZmVyZW5jaW5nKSBvbmx5IGlmCi0gICAgKiAxLiBMaWJwbmcgd2FzIGNvbXBpbGVkIHdpdGggUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQgYW5kCi0gICAgKiAyLiBMaWJwbmcgZGlkIG5vdCByZWFkIGEgUE5HIHNpZ25hdHVyZSAodGhpcyBmaWx0ZXJfbWV0aG9kIGlzIG9ubHkKLSAgICAqICAgIHVzZWQgaW4gUE5HIGRhdGFzdHJlYW1zIHRoYXQgYXJlIGVtYmVkZGVkIGluIE1ORyBkYXRhc3RyZWFtcykgYW5kCi0gICAgKiAzLiBUaGUgYXBwbGljYXRpb24gY2FsbGVkIHBuZ19wZXJtaXRfbW5nX2ZlYXR1cmVzIHdpdGggYSBtYXNrIHRoYXQKLSAgICAqICAgIGluY2x1ZGVkIFBOR19GTEFHX01OR19GSUxURVJfNjQgYW5kCi0gICAgKiA0LiBUaGUgZmlsdGVyX21ldGhvZCBpcyA2NCBhbmQKLSAgICAqIDUuIFRoZSBjb2xvcl90eXBlIGlzIFJHQiBvciBSR0JBCi0gICAgKi8KLSAgIGlmKChwbmdfcHRyLT5tb2RlJlBOR19IQVZFX1BOR19TSUdOQVRVUkUpJiZwbmdfcHRyLT5tbmdfZmVhdHVyZXNfcGVybWl0dGVkKQotICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwiTU5HIGZlYXR1cmVzIGFyZSBub3QgYWxsb3dlZCBpbiBhIFBORyBkYXRhc3RyZWFtXG4iKTsKLSAgIGlmKGZpbHRlcl90eXBlICE9IFBOR19GSUxURVJfVFlQRV9CQVNFKQotICAgewotICAgICBpZighKChwbmdfcHRyLT5tbmdfZmVhdHVyZXNfcGVybWl0dGVkICYgUE5HX0ZMQUdfTU5HX0ZJTFRFUl82NCkgJiYKLSAgICAgICAgKGZpbHRlcl90eXBlID09IFBOR19JTlRSQVBJWEVMX0RJRkZFUkVOQ0lORykgJiYKLSAgICAgICAgKChwbmdfcHRyLT5tb2RlJlBOR19IQVZFX1BOR19TSUdOQVRVUkUpID09IDApICYmCi0gICAgICAgIChjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1JHQiB8fCAKLSAgICAgICAgIGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBKSkpCi0gICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiVW5rbm93biBmaWx0ZXIgbWV0aG9kIGluIElIRFIiKTsKLSAgICAgaWYocG5nX3B0ci0+bW9kZSZQTkdfSEFWRV9QTkdfU0lHTkFUVVJFKQotICAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiSW52YWxpZCBmaWx0ZXIgbWV0aG9kIGluIElIRFIiKTsKLSAgIH0KLSNlbHNlCi0gICBpZihmaWx0ZXJfdHlwZSAhPSBQTkdfRklMVEVSX1RZUEVfQkFTRSkKKyAgIGlmIChmaWx0ZXJfdHlwZSAhPSBQTkdfRklMVEVSX1RZUEVfQkFTRSkKICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiVW5rbm93biBmaWx0ZXIgbWV0aG9kIGluIElIRFIiKTsKLSNlbmRpZgogCiAgICAvKiBzZXQgaW50ZXJuYWwgdmFyaWFibGVzICovCiAgICBwbmdfcHRyLT53aWR0aCA9IHdpZHRoOwpAQCAtMzkyLDcgKzM2Miw2IEBACiAgICBwbmdfcHRyLT5iaXRfZGVwdGggPSAocG5nX2J5dGUpYml0X2RlcHRoOwogICAgcG5nX3B0ci0+aW50ZXJsYWNlZCA9IChwbmdfYnl0ZSlpbnRlcmxhY2VfdHlwZTsKICAgIHBuZ19wdHItPmNvbG9yX3R5cGUgPSAocG5nX2J5dGUpY29sb3JfdHlwZTsKLSAgIHBuZ19wdHItPmZpbHRlcl90eXBlID0gKHBuZ19ieXRlKWZpbHRlcl90eXBlOwogCiAgICAvKiBmaW5kIG51bWJlciBvZiBjaGFubmVscyAqLwogICAgc3dpdGNoIChwbmdfcHRyLT5jb2xvcl90eXBlKQpAQCAtNDI4LDcgKzM5Nyw3IEBACiB2b2lkIC8qIFBSSVZBVEUgKi8KIHBuZ19oYW5kbGVfUExURShwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ191aW50XzMyIGxlbmd0aCkKIHsKLSAgIHBuZ19jb2xvciBwYWxldHRlW1BOR19NQVhfUEFMRVRURV9MRU5HVEhdOworICAgcG5nX2NvbG9ycCBwYWxldHRlOwogICAgaW50IG51bSwgaTsKICNpZm5kZWYgUE5HX05PX1BPSU5URVJfSU5ERVhJTkcKICAgIHBuZ19jb2xvcnAgcGFsX3B0cjsKQEAgLTQ1Nyw3ICs0MjYsNyBAQAogICAgfQogI2VuZGlmCiAKLSAgIGlmIChsZW5ndGggPiAzKlBOR19NQVhfUEFMRVRURV9MRU5HVEggfHwgbGVuZ3RoICUgMykKKyAgIGlmIChsZW5ndGggPiA3NjggfHwgbGVuZ3RoICUgMykKICAgIHsKICAgICAgIGlmIChwbmdfcHRyLT5jb2xvcl90eXBlICE9IFBOR19DT0xPUl9UWVBFX1BBTEVUVEUpCiAgICAgICB7CkBAIC00NzMsNiArNDQyLDggQEAKIAogICAgbnVtID0gKGludClsZW5ndGggLyAzOwogCisgICBwYWxldHRlID0gKHBuZ19jb2xvcnApcG5nX3phbGxvYyhwbmdfcHRyLCAodUludCludW0sIHNpemVvZiAocG5nX2NvbG9yKSk7CisKICNpZm5kZWYgUE5HX05PX1BPSU5URVJfSU5ERVhJTkcKICAgIGZvciAoaSA9IDAsIHBhbF9wdHIgPSBwYWxldHRlOyBpIDwgbnVtOyBpKyssIHBhbF9wdHIrKykKICAgIHsKQEAgLTUyMiw2ICs0OTMsNyBAQAogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICAgcG5nX2NodW5rX3dhcm5pbmcocG5nX3B0ciwgIkNSQyBlcnJvciIpOworICAgICAgICAgICAgcG5nX3pmcmVlKHBuZ19wdHIsIHBhbGV0dGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgfQpAQCAtNTMyLDcgKzUwNCwxNSBAQAogICAgICAgfQogICAgfQogI2VuZGlmCisgICBwbmdfcHRyLT5wYWxldHRlID0gcGFsZXR0ZTsKKyAgIHBuZ19wdHItPm51bV9wYWxldHRlID0gKHBuZ191aW50XzE2KW51bTsKIAorI2lmZGVmIFBOR19GUkVFX01FX1NVUFBPUlRFRAorICAgcG5nX2ZyZWVfZGF0YShwbmdfcHRyLCBpbmZvX3B0ciwgUE5HX0ZSRUVfUExURSwgMCk7CisgICBwbmdfcHRyLT5mcmVlX21lIHw9IFBOR19GUkVFX1BMVEU7CisjZWxzZQorICAgcG5nX3B0ci0+ZmxhZ3MgfD0gUE5HX0ZMQUdfRlJFRV9QTFRFOworI2VuZGlmCiAgICBwbmdfc2V0X1BMVEUocG5nX3B0ciwgaW5mb19wdHIsIHBhbGV0dGUsIG51bSk7CiAKICNpZiBkZWZpbmVkKFBOR19SRUFEX3RSTlNfU1VQUE9SVEVEKQpAQCAtMTA3MCw4ICsxMDUwLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsZW5ndGgsIHByZWZpeF9sZW5ndGgsICZkYXRhX2xlbmd0aCk7CiAKICAgIHByb2ZpbGVfbGVuZ3RoID0gZGF0YV9sZW5ndGggLSBwcmVmaXhfbGVuZ3RoOwotCi0gICAvKiBDaGVjayB0aGUgcHJvZmlsZV9zaXplIHJlY29yZGVkIGluIHRoZSBmaXJzdCAzMiBiaXRzIG9mIHRoZSBJQ0MgcHJvZmlsZSAqLwogICAgcHJvZmlsZV9zaXplID0gKCgqKGNodW5rZGF0YStwcmVmaXhfbGVuZ3RoKSk8PDI0KSB8CiAgICAgICAgICAgICAgICAgICAoKCooY2h1bmtkYXRhK3ByZWZpeF9sZW5ndGgrMSkpPDwxNikgfAogICAgICAgICAgICAgICAgICAgKCgqKGNodW5rZGF0YStwcmVmaXhfbGVuZ3RoKzIpKTw8IDgpIHwKQEAgLTEwODcsNyArMTA2NSw3IEBACiAgICB9CiAKICAgIHBuZ19zZXRfaUNDUChwbmdfcHRyLCBpbmZvX3B0ciwgY2h1bmtkYXRhLCBjb21wcmVzc2lvbl90eXBlLAotICAgICAgICAgICAgICAgIGNodW5rZGF0YSArIHByZWZpeF9sZW5ndGgsIHByb2ZpbGVfbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBjaHVua2RhdGEgKyBwcmVmaXhfbGVuZ3RoLCBkYXRhX2xlbmd0aC1wcmVmaXhfbGVuZ3RoKTsKICAgIHBuZ19mcmVlKHBuZ19wdHIsIGNodW5rZGF0YSk7CiB9CiAjZW5kaWYgLyogUE5HX1JFQURfaUNDUF9TVVBQT1JURUQgKi8KQEAgLTEyMjQsOCArMTIwMiw2IEBACiB2b2lkIC8qIFBSSVZBVEUgKi8KIHBuZ19oYW5kbGVfdFJOUyhwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ191aW50XzMyIGxlbmd0aCkKIHsKLSAgIHBuZ19ieXRlCXJlYWRidWZbUE5HX01BWF9QQUxFVFRFX0xFTkdUSF07Ci0KICAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX2hhbmRsZV90Uk5TXG4iKTsKIAogICAgaWYgKCEocG5nX3B0ci0+bW9kZSAmIFBOR19IQVZFX0lIRFIpKQpAQCAtMTI2Myw3ICsxMjM5LDggQEAKICAgICAgICAgIHJldHVybjsKICAgICAgIH0KIAotICAgICAgcG5nX2NyY19yZWFkKHBuZ19wdHIsIHJlYWRidWYsIChwbmdfc2l6ZV90KWxlbmd0aCk7CisgICAgICBwbmdfcHRyLT50cmFucyA9IChwbmdfYnl0ZXApcG5nX21hbGxvYyhwbmdfcHRyLCBsZW5ndGgpOworICAgICAgcG5nX2NyY19yZWFkKHBuZ19wdHIsIHBuZ19wdHItPnRyYW5zLCAocG5nX3NpemVfdClsZW5ndGgpOwogICAgICAgcG5nX3B0ci0+bnVtX3RyYW5zID0gKHBuZ191aW50XzE2KWxlbmd0aDsKICAgIH0KICAgIGVsc2UgaWYgKHBuZ19wdHItPmNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCKQpAQCAtMTMwOCw3ICsxMjg1LDE1IEBACiAgICBpZiAocG5nX2NyY19maW5pc2gocG5nX3B0ciwgMCkpCiAgICAgICByZXR1cm47CiAKLSAgIHBuZ19zZXRfdFJOUyhwbmdfcHRyLCBpbmZvX3B0ciwgcmVhZGJ1ZiwgcG5nX3B0ci0+bnVtX3RyYW5zLAorI2lmZGVmIFBOR19GUkVFX01FX1NVUFBPUlRFRAorICAgcG5nX2ZyZWVfZGF0YShwbmdfcHRyLCBpbmZvX3B0ciwgUE5HX0ZSRUVfVFJOUywgMCk7CisgICBpZiAocG5nX3B0ci0+Y29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9QQUxFVFRFKQorICAgICAgcG5nX3B0ci0+ZnJlZV9tZSB8PSBQTkdfRlJFRV9UUk5TOworI2Vsc2UKKyAgIGlmIChwbmdfcHRyLT5jb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1BBTEVUVEUpCisgICAgICBwbmdfcHRyLT5mbGFncyB8PSBQTkdfRkxBR19GUkVFX1RSTlM7CisjZW5kaWYKKyAgIHBuZ19zZXRfdFJOUyhwbmdfcHRyLCBpbmZvX3B0ciwgcG5nX3B0ci0+dHJhbnMsIHBuZ19wdHItPm51bV90cmFucywKICAgICAgICYocG5nX3B0ci0+dHJhbnNfdmFsdWVzKSk7CiB9CiAjZW5kaWYKQEAgLTE0MDcsNyArMTM5Miw2IEBACiBwbmdfaGFuZGxlX2hJU1QocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLCBwbmdfdWludF8zMiBsZW5ndGgpCiB7CiAgICBpbnQgbnVtLCBpOwotICAgcG5nX3VpbnRfMTYJcmVhZGJ1ZltQTkdfTUFYX1BBTEVUVEVfTEVOR1RIXTsKIAogICAgcG5nX2RlYnVnKDEsICJpbiBwbmdfaGFuZGxlX2hJU1RcbiIpOwogCkBAIC0xNDMyLDI2ICsxNDE2LDM0IEBACiAgICAgICByZXR1cm47CiAgICB9CiAKLSAgIG51bSA9IChpbnQpbGVuZ3RoIC8gMiA7Ci0gICBpZiAobnVtICE9IHBuZ19wdHItPm51bV9wYWxldHRlKQorICAgaWYgKGxlbmd0aCAhPSAocG5nX3VpbnRfMzIpKDIgKiBwbmdfcHRyLT5udW1fcGFsZXR0ZSkpCiAgICB7CiAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiSW5jb3JyZWN0IGhJU1QgY2h1bmsgbGVuZ3RoIik7CiAgICAgICBwbmdfY3JjX2ZpbmlzaChwbmdfcHRyLCBsZW5ndGgpOwogICAgICAgcmV0dXJuOwogICAgfQogCisgICBudW0gPSAoaW50KWxlbmd0aCAvIDIgOworICAgcG5nX3B0ci0+aGlzdCA9IChwbmdfdWludF8xNnApcG5nX21hbGxvYyhwbmdfcHRyLAorICAgICAgKHBuZ191aW50XzMyKShudW0gKiBzaXplb2YgKHBuZ191aW50XzE2KSkpOwogICAgZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKQogICAgewogICAgICAgcG5nX2J5dGUgYnVmWzJdOwogCiAgICAgICBwbmdfY3JjX3JlYWQocG5nX3B0ciwgYnVmLCAyKTsKLSAgICAgIHJlYWRidWZbaV0gPSBwbmdfZ2V0X3VpbnRfMTYoYnVmKTsKKyAgICAgIHBuZ19wdHItPmhpc3RbaV0gPSBwbmdfZ2V0X3VpbnRfMTYoYnVmKTsKICAgIH0KIAogICAgaWYgKHBuZ19jcmNfZmluaXNoKHBuZ19wdHIsIDApKQogICAgICAgcmV0dXJuOwogCi0gICBwbmdfc2V0X2hJU1QocG5nX3B0ciwgaW5mb19wdHIsIHJlYWRidWYpOworI2lmZGVmIFBOR19GUkVFX01FX1NVUFBPUlRFRAorICAgcG5nX2ZyZWVfZGF0YShwbmdfcHRyLCBpbmZvX3B0ciwgUE5HX0ZSRUVfSElTVCwgMCk7CisgICBwbmdfcHRyLT5mcmVlX21lIHw9IFBOR19GUkVFX0hJU1Q7CisjZWxzZQorICAgcG5nX3B0ci0+ZmxhZ3MgfD0gUE5HX0ZMQUdfRlJFRV9ISVNUOworI2VuZGlmCisgICBwbmdfc2V0X2hJU1QocG5nX3B0ciwgaW5mb19wdHIsIHBuZ19wdHItPmhpc3QpOwogfQogI2VuZGlmCiAKQEAgLTE5MzAsMTEgKzE5MjIsNiBAQAogICAgZWxzZQogICAgewogICAgICAgIGNvbXBfdHlwZSA9ICooKyt0ZXh0KTsKLSAgICAgICBpZiAoY29tcF90eXBlICE9IFBOR19URVhUX0NPTVBSRVNTSU9OX3pUWHQpCi0gICAgICAgewotICAgICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJVbmtub3duIGNvbXByZXNzaW9uIHR5cGUgaW4gelRYdCBjaHVuayIpOwotICAgICAgICAgIGNvbXBfdHlwZSA9IFBOR19URVhUX0NPTVBSRVNTSU9OX3pUWHQ7Ci0gICAgICAgfQogICAgICAgIHRleHQrKzsgICAgICAgIC8qIHNraXAgdGhlIGNvbXByZXNzaW9uX21ldGhvZCBieXRlICovCiAgICB9CiAgICBwcmVmaXhfbGVuID0gdGV4dCAtIGNodW5rZGF0YTsKQEAgLTIxNjUsOSArMjE1MiwxMyBAQAogICAgYSB6ZXJvIGluZGljYXRlcyB0aGUgcGl4ZWwgaXMgdG8gYmUgc2tpcHBlZC4gIFRoaXMgaXMgaW4gYWRkaXRpb24KICAgIHRvIGFueSBhbHBoYSBvciB0cmFuc3BhcmVuY3kgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwaXhlbC4gIElmCiAgICB5b3Ugd2FudCBhbGwgcGl4ZWxzIHRvIGJlIGNvbWJpbmVkLCBwYXNzIDB4ZmYgKDI1NSkgaW4gbWFzay4gICovCi0jaWZuZGVmIFBOR19IQVZFX0FTU0VNQkxFUl9DT01CSU5FX1JPVwogdm9pZCAvKiBQUklWQVRFICovCi1wbmdfY29tYmluZV9yb3cocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2J5dGVwIHJvdywgaW50IG1hc2spCisjaWZkZWYgUE5HX0hBVkVfQVNTRU1CTEVSX0NPTUJJTkVfUk9XCitwbmdfY29tYmluZV9yb3dfYworI2Vsc2UKK3BuZ19jb21iaW5lX3JvdworI2VuZGlmIC8qIFBOR19IQVZFX0FTU0VNQkxFUl9DT01CSU5FX1JPVyAqLworICAgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19ieXRlcCByb3csIGludCBtYXNrKQogewogICAgcG5nX2RlYnVnKDEsImluIHBuZ19jb21iaW5lX3Jvd1xuIik7CiAgICBpZiAobWFzayA9PSAweGZmKQpAQCAtMjM2NywyNCArMjM1OCwyNSBAQAogICAgICAgfQogICAgfQogfQotI2VuZGlmIC8qICFQTkdfSEFWRV9BU1NFTUJMRVJfQ09NQklORV9ST1cgKi8KIAotI2lmZGVmIFBOR19SRUFEX0lOVEVSTEFDSU5HX1NVUFBPUlRFRAotI2lmbmRlZiBQTkdfSEFWRV9BU1NFTUJMRVJfUkVBRF9JTlRFUkxBQ0UgICAvKiBlbHNlIGluIHBuZ3ZjcmQuYywgcG5nZ2NjcmQuYyAqLworI2lmIGRlZmluZWQoUE5HX1JFQURfSU5URVJMQUNJTkdfU1VQUE9SVEVEKQogdm9pZCAvKiBQUklWQVRFICovCi1wbmdfZG9fcmVhZF9pbnRlcmxhY2UocG5nX3N0cnVjdHAgcG5nX3B0cikKKyNpZmRlZiBQTkdfSEFWRV9BU1NFTUJMRVJfUkVBRF9JTlRFUkxBQ0UKK3BuZ19kb19yZWFkX2ludGVybGFjZV9jCisjZWxzZQorcG5nX2RvX3JlYWRfaW50ZXJsYWNlCisjZW5kaWYgLyogUE5HX0hBVkVfQVNTRU1CTEVSX1JFQURfSU5URVJMQUNFICovCisgICAocG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywgaW50IHBhc3MsCisgICBwbmdfdWludF8zMiB0cmFuc2Zvcm1hdGlvbnMpCiB7Ci0gICBwbmdfcm93X2luZm9wIHJvd19pbmZvID0gJihwbmdfcHRyLT5yb3dfaW5mbyk7Ci0gICBwbmdfYnl0ZXAgcm93ID0gcG5nX3B0ci0+cm93X2J1ZiArIDE7Ci0gICBpbnQgcGFzcyA9IHBuZ19wdHItPnBhc3M7Ci0gICBwbmdfdWludF8zMiB0cmFuc2Zvcm1hdGlvbnMgPSBwbmdfcHRyLT50cmFuc2Zvcm1hdGlvbnM7CiAjaWZkZWYgUE5HX1VTRV9MT0NBTF9BUlJBWVMKICAgIC8qIGFycmF5cyB0byBmYWNpbGl0YXRlIGVhc3kgaW50ZXJsYWNpbmcgLSB1c2UgcGFzcyAoMCAtIDYpIGFzIGluZGV4ICovCisKICAgIC8qIG9mZnNldCB0byBuZXh0IGludGVybGFjZSBibG9jayAqLwogICAgY29uc3QgaW50IHBuZ19wYXNzX2luY1s3XSA9IHs4LCA4LCA0LCA0LCAyLCAyLCAxfTsKICNlbmRpZgogCi0gICBwbmdfZGVidWcoMSwiaW4gcG5nX2RvX3JlYWRfaW50ZXJsYWNlIChzdG9jayBDIHZlcnNpb24pXG4iKTsKKyAgIHBuZ19kZWJ1ZygxLCJpbiBwbmdfZG9fcmVhZF9pbnRlcmxhY2VcbiIpOwogICAgaWYgKHJvdyAhPSBOVUxMICYmIHJvd19pbmZvICE9IE5VTEwpCiAgICB7CiAgICAgICBwbmdfdWludF8zMiBmaW5hbF93aWR0aDsKQEAgLTI1OTQsMTIgKzI1ODYsMTUgQEAKICAgICAgIHJldHVybjsKICNlbmRpZgogfQotI2VuZGlmIC8qICFQTkdfSEFWRV9BU1NFTUJMRVJfUkVBRF9JTlRFUkxBQ0UgKi8KLSNlbmRpZiAvKiBQTkdfUkVBRF9JTlRFUkxBQ0lOR19TVVBQT1JURUQgKi8KKyNlbmRpZgogCi0jaWZuZGVmIFBOR19IQVZFX0FTU0VNQkxFUl9SRUFEX0ZJTFRFUl9ST1cKIHZvaWQgLyogUFJJVkFURSAqLwotcG5nX3JlYWRfZmlsdGVyX3Jvdyhwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfcm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAorI2lmZGVmIFBOR19IQVZFX0FTU0VNQkxFUl9SRUFEX0ZJTFRFUl9ST1cKK3BuZ19yZWFkX2ZpbHRlcl9yb3dfYworI2Vsc2UKK3BuZ19yZWFkX2ZpbHRlcl9yb3cKKyNlbmRpZiAvKiBQTkdfSEFWRV9BU1NFTUJMRVJfUkVBRF9GSUxURVJfUk9XICovCisgICAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKICAgIHBuZ19ieXRlcCBwcmV2X3JvdywgaW50IGZpbHRlcikKIHsKICAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX3JlYWRfZmlsdGVyX3Jvd1xuIik7CkBAIC0yNzIwLDcgKzI3MTUsNiBAQAogICAgICAgICAgYnJlYWs7CiAgICB9CiB9Ci0jZW5kaWYgLyogIVBOR19IQVZFX0FTU0VNQkxFUl9SRUFEX0ZJTFRFUl9ST1cgKi8KIAogdm9pZCAvKiBQUklWQVRFICovCiBwbmdfcmVhZF9maW5pc2hfcm93KHBuZ19zdHJ1Y3RwIHBuZ19wdHIpCmRpZmYgLS1naXQgYS9wbmdzZXQuYyBiL3BuZ3NldC5jCmluZGV4IDk1MDFkMzUuLjExNDAxMjYgMTAwNjQ0Ci0tLSBhL3BuZ3NldC5jCisrKyBiL3BuZ3NldC5jCkBAIC0xLDkgKzEsOSBAQAogCiAvKiBwbmdzZXQuYyAtIHN0b3JhZ2Ugb2YgaW1hZ2UgaW5mb3JtYXRpb24gaW50byBpbmZvIHN0cnVjdAogICoKLSAqIGxpYnBuZyAxLjAuOWJldGExMCAtIEphbnVhcnkgMTYsIDIwMDEKKyAqIGxpYnBuZyAxLjAuOWJldGEyIC0gTm92ZW1iZXIgMTksIDIwMDAKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKICAqCkBAIC0xMzMsMzEgKzEzMywxMiBAQAogdm9pZCBQTkdBUEkKIHBuZ19zZXRfaElTVChwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfaW5mb3AgaW5mb19wdHIsIHBuZ191aW50XzE2cCBoaXN0KQogewotICAgaW50CWk7Ci0KICAgIHBuZ19kZWJ1ZzEoMSwgImluICVzIHN0b3JhZ2UgZnVuY3Rpb25cbiIsICJoSVNUIik7CiAgICBpZiAocG5nX3B0ciA9PSBOVUxMIHx8IGluZm9fcHRyID09IE5VTEwpCiAgICAgICByZXR1cm47Ci0gICBpZiAoaW5mb19wdHItPm51bV9wYWxldHRlID09IDApCi0gICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwKLQkJICAgIlBhbGV0dGUgc2l6ZSAwLCBoSVNUIGFsbG9jYXRpb24gc2tpcHBlZC4iKTsKIAotI2lmZGVmIFBOR19GUkVFX01FX1NVUFBPUlRFRAotICAgcG5nX2ZyZWVfZGF0YShwbmdfcHRyLCBpbmZvX3B0ciwgUE5HX0ZSRUVfSElTVCwgMCk7Ci0jZW5kaWYKLSAgIHBuZ19wdHItPmhpc3QgPSAocG5nX3VpbnRfMTZwKXBuZ19tYWxsb2MocG5nX3B0ciwKLSAgICAgIChwbmdfdWludF8zMikoaW5mb19wdHItPm51bV9wYWxldHRlICogc2l6ZW9mIChwbmdfdWludF8xNikpKTsKLQotICAgZm9yIChpID0gMDsgaSA8IGluZm9fcHRyLT5udW1fcGFsZXR0ZTsgaSsrKQotICAgICAgIHBuZ19wdHItPmhpc3RbaV0gPSBoaXN0W2ldOwotICAgaW5mb19wdHItPmhpc3QgPSBwbmdfcHRyLT5oaXN0OworICAgaW5mb19wdHItPmhpc3QgPSBoaXN0OwogICAgaW5mb19wdHItPnZhbGlkIHw9IFBOR19JTkZPX2hJU1Q7Ci0KLSNpZmRlZiBQTkdfRlJFRV9NRV9TVVBQT1JURUQKLSAgIGluZm9fcHRyLT5mcmVlX21lIHw9IFBOR19GUkVFX0hJU1Q7Ci0jZWxzZQotICAgcG5nX3B0ci0+ZmxhZ3MgfD0gUE5HX0ZMQUdfRlJFRV9ISVNUOwotI2VuZGlmCiB9CiAjZW5kaWYKIApAQCAtMzM5LDI2ICszMjAsOSBAQAogICAgaWYgKHBuZ19wdHIgPT0gTlVMTCB8fCBpbmZvX3B0ciA9PSBOVUxMKQogICAgICAgcmV0dXJuOwogCi0gICAvKgotICAgICogSXQgbWF5IG5vdCBhY3R1YWxseSBiZSBuZWNlc3NhcnkgdG8gc2V0IHBuZ19wdHItPnBhbGV0dGUgaGVyZTsKLSAgICAqIHdlIGRvIGl0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHdheSB0aGUgcG5nX2hhbmRsZV90Uk5TCi0gICAgKiBmdW5jdGlvbiB1c2VkIHRvIGRvIHRoZSBhbGxvY2F0aW9uLgotICAgICovCi0jaWZkZWYgUE5HX0ZSRUVfTUVfU1VQUE9SVEVECi0gICBwbmdfZnJlZV9kYXRhKHBuZ19wdHIsIGluZm9fcHRyLCBQTkdfRlJFRV9QTFRFLCAwKTsKLSNlbmRpZgotICAgcG5nX3B0ci0+cGFsZXR0ZSA9IChwbmdfY29sb3JwKXBuZ196YWxsb2MocG5nX3B0ciwgKHVJbnQpbnVtX3BhbGV0dGUsCi0gICAgICBzaXplb2YgKHBuZ19jb2xvcikpOwotICAgbWVtY3B5KHBuZ19wdHItPnBhbGV0dGUsIHBhbGV0dGUsIG51bV9wYWxldHRlICogc2l6ZW9mIChwbmdfY29sb3IpKTsKLSAgIGluZm9fcHRyLT5wYWxldHRlID0gcG5nX3B0ci0+cGFsZXR0ZTsKLSAgIGluZm9fcHRyLT5udW1fcGFsZXR0ZSA9IHBuZ19wdHItPm51bV9wYWxldHRlID0gKHBuZ191aW50XzE2KW51bV9wYWxldHRlOworICAgaW5mb19wdHItPnBhbGV0dGUgPSBwYWxldHRlOwogCi0jaWZkZWYgUE5HX0ZSRUVfTUVfU1VQUE9SVEVECi0gICBpbmZvX3B0ci0+ZnJlZV9tZSB8PSBQTkdfRlJFRV9QTFRFOwotI2Vsc2UKLSAgIHBuZ19wdHItPmZsYWdzIHw9IFBOR19GTEFHX0ZSRUVfUExURTsKLSNlbmRpZgotCisgICBpbmZvX3B0ci0+bnVtX3BhbGV0dGUgPSAocG5nX3VpbnRfMTYpbnVtX3BhbGV0dGU7CiAgICBpbmZvX3B0ci0+dmFsaWQgfD0gUE5HX0lORk9fUExURTsKIH0KIApAQCAtNjY3LDIzICs2MzEsNyBAQAogICAgICAgcmV0dXJuOwogCiAgICBpZiAodHJhbnMgIT0gTlVMTCkKLSAgIHsKLSAgICAgICAvKgotCSogSXQgbWF5IG5vdCBhY3R1YWxseSBiZSBuZWNlc3NhcnkgdG8gc2V0IHBuZ19wdHItPnRyYW5zIGhlcmU7Ci0JKiB3ZSBkbyBpdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSB3YXkgdGhlIHBuZ19oYW5kbGVfdFJOUwotCSogZnVuY3Rpb24gdXNlZCB0byBkbyB0aGUgYWxsb2NhdGlvbi4KLQkqLwotI2lmZGVmIFBOR19GUkVFX01FX1NVUFBPUlRFRAotICAgICAgIHBuZ19mcmVlX2RhdGEocG5nX3B0ciwgaW5mb19wdHIsIFBOR19GUkVFX1RSTlMsIDApOwotI2VuZGlmCi0gICAgICAgcG5nX3B0ci0+dHJhbnMgPSBpbmZvX3B0ci0+dHJhbnMgPSBwbmdfbWFsbG9jKHBuZ19wdHIsIG51bV90cmFucyk7Ci0gICAgICAgbWVtY3B5KGluZm9fcHRyLT50cmFucywgdHJhbnMsIG51bV90cmFucyk7Ci0jaWZkZWYgUE5HX0ZSRUVfTUVfU1VQUE9SVEVECi0gICAgICAgaW5mb19wdHItPmZyZWVfbWUgfD0gUE5HX0ZSRUVfVFJOUzsKLSNlbHNlCi0gICAgICAgcG5nX3B0ci0+ZmxhZ3MgfD0gUE5HX0ZMQUdfRlJFRV9UUk5TOwotI2VuZGlmCi0gICB9CisgICAgICBpbmZvX3B0ci0+dHJhbnMgPSB0cmFuczsKIAogICAgaWYgKHRyYW5zX3ZhbHVlcyAhPSBOVUxMKQogICAgewpAQCAtNzgyLDcgKzczMCw3IEBACiBwbmdfc2V0X3Vua25vd25fY2h1bmtfbG9jYXRpb24ocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2luZm9wIGluZm9fcHRyLAogICAgaW50IGNodW5rLCBpbnQgbG9jYXRpb24pCiB7Ci0gICBpZihwbmdfcHRyICE9IE5VTEwgJiYgaW5mb19wdHIgIT0gTlVMTCAmJiBjaHVuayA+PSAwICYmIGNodW5rIDwKKyAgIGlmKHBuZ19wdHIgIT0gTlVMTCAmJiBpbmZvX3B0ciAhPSBOVUxMICYmIGNodW5rID49IDAgJiYgY2h1bmsgPCAKICAgICAgICAgIChpbnQpaW5mb19wdHItPnVua25vd25fY2h1bmtzX251bSkKICAgICAgIGluZm9fcHRyLT51bmtub3duX2NodW5rc1tjaHVua10ubG9jYXRpb24gPSAocG5nX2J5dGUpbG9jYXRpb247CiB9CkBAIC05MDYsNCArODU0LDMgQEAKICAgIGlmIChwbmdfcHRyICYmIGluZm9fcHRyKQogICAgICAgaW5mb19wdHItPnZhbGlkICY9IH4obWFzayk7CiB9Ci0KZGlmZiAtLWdpdCBhL3BuZ3Rlc3QuYyBiL3BuZ3Rlc3QuYwppbmRleCBmNzc0OGUyLi4yY2VkNDIwIDEwMDY0NAotLS0gYS9wbmd0ZXN0LmMKKysrIGIvcG5ndGVzdC5jCkBAIC0xLDkgKzEsOSBAQAogCiAvKiBwbmd0ZXN0LmMgLSBhIHNpbXBsZSB0ZXN0IHByb2dyYW0gdG8gdGVzdCBsaWJwbmcKICAqCi0gKiBsaWJwbmcgMS4wLjliZXRhMTAgLSBKYW51YXJ5IDE2LCAyMDAxCisgKiBsaWJwbmcgMS4wLjliZXRhMiAtIE5vdmVtYmVyIDE5LCAyMDAwCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCiAgKiAoVmVyc2lvbiAwLjg4IENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy4pCiAgKgpAQCAtNTAsMTQgKzUwLDYgQEAKICMgIGRlZmluZSBGQ0xPU0UoZmlsZSkgZmNsb3NlKGZpbGUpCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoUE5HX05PX1NURElPKQotI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkKLXR5cGVkZWYgSEFORExFICAgICAgICAgICAgICAgIHBuZ19GSUxFX3A7Ci0jZWxzZQotdHlwZWRlZiBGSUxFICAgICAgICAgICAgICAgICogcG5nX0ZJTEVfcDsKLSNlbmRpZgotI2VuZGlmCi0KIC8qIE1ha2VzIHBuZ3Rlc3QgdmVyYm9zZSBzbyB3ZSBjYW4gZmluZCBwcm9ibGVtcyAobmVlZHMgdG8gYmUgYmVmb3JlIHBuZy5oKSAqLwogI2lmbmRlZiBQTkdfREVCVUcKICNkZWZpbmUgUE5HX0RFQlVHIDAKQEAgLTI2NSw3ICsyNTcsNiBAQAogICAgbm90IHJlYWRpbmcgZnJvbSBhIHN0YW5kYXJkIEMgc3RyZWFtLCB5b3Ugc2hvdWxkIGNyZWF0ZSBhIHJlcGxhY2VtZW50CiAgICByZWFkX2RhdGEgZnVuY3Rpb24gYW5kIHVzZSBpdCBhdCBydW4gdGltZSB3aXRoIHBuZ19zZXRfcmVhZF9mbigpLCByYXRoZXIKICAgIHRoYW4gY2hhbmdpbmcgdGhlIGxpYnJhcnkuICovCi0KICNpZm5kZWYgVVNFX0ZBUl9LRVlXT1JECiBzdGF0aWMgdm9pZAogcG5ndGVzdF9yZWFkX2RhdGEocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2J5dGVwIGRhdGEsIHBuZ19zaXplX3QgbGVuZ3RoKQpAQCAtMTQ1OCw0ICsxNDQ5LDQgQEAKIH0KIAogLyogR2VuZXJhdGUgYSBjb21waWxlciBlcnJvciBpZiB0aGVyZSBpcyBhbiBvbGQgcG5nLmggaW4gdGhlIHNlYXJjaCBwYXRoLiAqLwotdHlwZWRlZiB2ZXJzaW9uXzFfMF85YmV0YTEwIHlvdXJfcG5nX2hfaXNfbm90X3ZlcnNpb25fMV8wXzliZXRhMTA7Cit0eXBlZGVmIHZlcnNpb25fMV8wXzliZXRhMiB5b3VyX3BuZ19oX2lzX25vdF92ZXJzaW9uXzFfMF85YmV0YTI7CmRpZmYgLS1naXQgYS9wbmd0cmFucy5jIGIvcG5ndHJhbnMuYwppbmRleCBkNjQyOWIwLi4xNDA5MDVjIDEwMDY0NAotLS0gYS9wbmd0cmFucy5jCisrKyBiL3BuZ3RyYW5zLmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ3RyYW5zLmMgLSB0cmFuc2Zvcm1zIHRoZSBkYXRhIGluIGEgcm93ICh1c2VkIGJ5IGJvdGggcmVhZGVycyBhbmQgd3JpdGVycykKICAqCi0gKiBsaWJwbmcgMS4wLjliZXRhMTAgLSBKYW51YXJ5IDE2LCAyMDAxCisgKiBsaWJwbmcgMS4wLjliZXRhMiAtIE5vdmVtYmVyIDE5LCAyMDAwCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCiAgKiAoVmVyc2lvbiAwLjg4IENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy4pCiAgKi8KQEAgLTYwNiw0ICs2MDYsMyBAQAogICAgcmV0dXJuIChOVUxMKTsKICNlbmRpZgogfQotCmRpZmYgLS1naXQgYS9wbmd2Y3JkLmMgYi9wbmd2Y3JkLmMKaW5kZXggNGJmMzAyNS4uNGI4NWExZiAxMDA2NDQKLS0tIGEvcG5ndmNyZC5jCisrKyBiL3BuZ3ZjcmQuYwpAQCAtMiwyMCArMiwxMyBAQAogICoKICAqIEZvciBJbnRlbCB4ODYgQ1BVIGFuZCBNaWNyb3NvZnQgVmlzdWFsIEMrKyBjb21waWxlcgogICoKLSAqIGxpYnBuZyAxLjAuOWJldGExMCAtIEphbnVhcnkgMTYsIDIwMDEKKyAqIGxpYnBuZyAxLjAuOWJldGEyIC0gTm92ZW1iZXIgMTksIDIwMDAKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIEludGVsIENvcnBvcmF0aW9uCiAgKgogICogQ29udHJpYnV0ZWQgYnkgTmlyYXYgQ2hoYXRyYXBhdGksIEludGVsIENvcnBvcmF0aW9uLCAxOTk4CiAgKiBJbnRlcmZhY2UgdG8gbGlicG5nIGNvbnRyaWJ1dGVkIGJ5IEdpbGxlcyBWb2xsYW50LCAxOTk5Ci0gKiBEZWJ1Z2dpbmcgYW5kIGNsZWFudXAgYnkgR3JlZyBSb2Vsb2ZzLCAyMDAwLCAyMDAxCi0gKgotICogSW4gcG5nX2RvX3JlYWRfaW50ZXJsYWNlKCkgaW4gbGlicG5nIHZlcnNpb25zIDEuMC4zYSB0aHJvdWdoIDEuMC40ZCwKLSAqIGEgc2lnbiBlcnJvciBpbiB0aGUgcG9zdC1NTVggY2xlYW51cCBjb2RlIGZvciBlYWNoIHBpeGVsX2RlcHRoIHJlc3VsdGVkCi0gKiBpbiBiYWQgcGl4ZWxzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc29tZSByb3dzIG9mIHNvbWUgaW1hZ2VzLCBhbmQgYWxzbwotICogKGR1ZSB0byBvdXQtb2YtcmFuZ2UgbWVtb3J5IHJlYWRzIGFuZCB3cml0ZXMpIGNhdXNlZCBoZWFwIGNvcnJ1cHRpb24KLSAqIHdoZW4gY29tcGlsZWQgd2l0aCBNU1ZDIDYuMC4gIFRoZSBlcnJvciB3YXMgZml4ZWQgaW4gdmVyc2lvbiAxLjAuNGUuCiAgKgogICogW3BuZ19yZWFkX2ZpbHRlcl9yb3dfbW14X2F2ZygpIGJwcCA9PSAyIGJ1Z2ZpeCwgR1JSIDIwMDAwOTE2XQogICoKQEAgLTI2LDExICsxOSwxOSBAQAogCiAjaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKFBOR19VU0VfUE5HVkNSRCkKIAorLyoKKyAgIE9uZSBvZiB0aGVzZSBtaWdodCBuZWVkIHRvIGJlIGRlZmluZWQuCisjZGVmaW5lIERJU0FCTEVfUE5HVkNSRF9DT01CSU5FCisjZGVmaW5lIERJU0FCTEVfUE5HVkNSRF9JTlRFUkxBQ0UKKyovCisKIHN0YXRpYyBpbnQgbW14X3N1cHBvcnRlZD0yOwogCit2b2lkIC8qIFBSSVZBVEUgKi8KK3BuZ19yZWFkX2ZpbHRlcl9yb3dfYyhwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfcm93X2luZm9wIHJvd19pbmZvLAorICAgcG5nX2J5dGVwIHJvdywgcG5nX2J5dGVwIHByZXZfcm93LCBpbnQgZmlsdGVyKTsKIAotaW50IFBOR0FQSQotcG5nX21teF9zdXBwb3J0KHZvaWQpCitzdGF0aWMgaW50IG1teHN1cHBvcnQoKQogewogICBpbnQgbW14X3N1cHBvcnRlZF9sb2NhbCA9IDA7CiAgIF9hc20gewpAQCAtODIsNyArODMsNiBAQAogICAvL21teF9zdXBwb3J0ZWRfbG9jYWw9MDsgLy8gdGVzdCBjb2RlIGZvciBmb3JjZSBkb24ndCBzdXBwb3J0IE1NWAogICAvL3ByaW50ZigiTU1YIDogJXUgKDE9TU1YIHN1cHBvcnRlZClcbiIsbW14X3N1cHBvcnRlZF9sb2NhbCk7CiAKLSAgbW14X3N1cHBvcnRlZCA9IG1teF9zdXBwb3J0ZWRfbG9jYWw7CiAgIHJldHVybiBtbXhfc3VwcG9ydGVkX2xvY2FsOwogfQogCkBAIC0xMDYsMTIgKzEwNiwxOSBAQAogI2lmZGVmIFBOR19VU0VfTE9DQUxfQVJSQVlTCiAgICBjb25zdCBpbnQgcG5nX3Bhc3NfaW5jWzddID0gezgsIDgsIDQsIDQsIDIsIDIsIDF9OwogI2VuZGlmCisjaWZkZWYgRElTQUJMRV9QTkdWQ1JEX0NPTUJJTkUKKyAgIGludCBzYXZlX21teF9zdXBwb3J0ZWQgPSBtbXhfc3VwcG9ydGVkOworI2VuZGlmCiAKICAgIHBuZ19kZWJ1ZygxLCJpbiBwbmdfY29tYmluZV9yb3dfYXNtXG4iKTsKIAotICAgaWYgKG1teF9zdXBwb3J0ZWQgPT0gMikgewotICAgICAgIHBuZ19tbXhfc3VwcG9ydCgpOwotICAgfQorI2lmZGVmIERJU0FCTEVfUE5HVkNSRF9DT01CSU5FCisgICBpZiAoKHBuZ19wdHItPnRyYW5zZm9ybWF0aW9ucyAmIFBOR19JTlRFUkxBQ0UpICYmIHBuZ19wdHItPnBhc3MgIT0gNikKKyAgICAgICBtbXhfc3VwcG9ydGVkID0gMDsKKyAgIGVsc2UKKyNlbmRpZgorICAgICAgIGlmIChtbXhfc3VwcG9ydGVkID09IDIpCisgICAgICAgICAgIG1teF9zdXBwb3J0ZWQgPSBtbXhzdXBwb3J0KCk7CiAKICAgIGlmIChtYXNrID09IDB4ZmYpCiAgICB7CkBAIC0zMDAsNyArMzA3LDcgQEAKIAogICAgICAgICAgICAgX19pbnQ2NCBtYXNrMD0weDAxMDIwNDA4MTAyMDQwODA7CiAKLSAgICAgICAgICAgIGlmICggbW14X3N1cHBvcnRlZCApCisgICAgICAgICAgICBpZiAobW14X3N1cHBvcnRlZCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHNyY3B0ciA9IHBuZ19wdHItPnJvd19idWYgKyAxOwogICAgICAgICAgICAgICAgZHN0cHRyID0gcm93OwpAQCAtNDAwLDcgKzQwNyw3IEBACiAgICAgICAgICAgICBfX2ludDY0IG1hc2sxPTB4MDEwMTAyMDIwNDA0MDgwOCwKICAgICAgICAgICAgICAgICAgICAgbWFzazA9MHgxMDEwMjAyMDQwNDA4MDgwOwogCi0gICAgICAgICAgICBpZiAoIG1teF9zdXBwb3J0ZWQgKQorICAgICAgICAgICAgaWYgKG1teF9zdXBwb3J0ZWQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzcmNwdHIgPSBwbmdfcHRyLT5yb3dfYnVmICsgMTsKICAgICAgICAgICAgICAgIGRzdHB0ciA9IHJvdzsKQEAgLTUyMCw3ICs1MjcsNyBAQAogICAgICAgICAgICAgbGVuICAgICA9IChwbmdfcHRyLT53aWR0aCkmfjc7CiAgICAgICAgICAgICBkaWZmID0gKHBuZ19wdHItPndpZHRoKSY3OwogCi0gICAgICAgICAgICBpZiAoIG1teF9zdXBwb3J0ZWQgKQorICAgICAgICAgICAgaWYgKG1teF9zdXBwb3J0ZWQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBfYXNtCiAgICAgICAgICAgICAgICB7CkBAIC02NTEsNyArNjU4LDcgQEAKICAgICAgICAgICAgIGxlbiAgICAgPSAocG5nX3B0ci0+d2lkdGgpJn43OwogICAgICAgICAgICAgZGlmZiA9IChwbmdfcHRyLT53aWR0aCkmNzsKIAotICAgICAgICAgICAgaWYgKCBtbXhfc3VwcG9ydGVkICkKKyAgICAgICAgICAgIGlmIChtbXhfc3VwcG9ydGVkKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgX2FzbQogICAgICAgICAgICAgICAgewpAQCAtNzg1LDcgKzc5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgIG1hc2sxPTB4MjAyMDIwMjA0MDQwNDA0MCwKICAgICAgICAgICAgICAgICAgICAgbWFzazA9MHg0MDQwODA4MDgwODA4MDgwOwogCi0gICAgICAgICAgICBpZiAoIG1teF9zdXBwb3J0ZWQgKQorICAgICAgICAgICAgaWYgKG1teF9zdXBwb3J0ZWQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzcmNwdHIgPSBwbmdfcHRyLT5yb3dfYnVmICsgMTsKICAgICAgICAgICAgICAgIGRzdHB0ciA9IHJvdzsKQEAgLTk1NiwyNyArOTYzLDQzIEBACiAgICAgICB9IC8qIGVuZCBzd2l0Y2ggKHBuZ19wdHItPnJvd19pbmZvLnBpeGVsX2RlcHRoKSAqLwogICAgfSAvKiBlbmQgaWYgKG5vbi10cml2aWFsIG1hc2spICovCiAKKyNpZmRlZiBESVNBQkxFX1BOR1ZDUkRfQ09NQklORQorICAgbW14X3N1cHBvcnRlZCA9IHNhdmVfbW14X3N1cHBvcnRlZDsKKyNlbmRpZgorCiB9IC8qIGVuZCBwbmdfY29tYmluZV9yb3coKSAqLwogCiAKICNpZiBkZWZpbmVkKFBOR19SRUFEX0lOVEVSTEFDSU5HX1NVUFBPUlRFRCkKIAogdm9pZCAvKiBQUklWQVRFICovCi1wbmdfZG9fcmVhZF9pbnRlcmxhY2UocG5nX3N0cnVjdHAgcG5nX3B0cikKK3BuZ19kb19yZWFkX2ludGVybGFjZShwbmdfcm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LCBpbnQgcGFzcywKKyAgIHBuZ191aW50XzMyIHRyYW5zZm9ybWF0aW9ucykKIHsKLSAgIHBuZ19yb3dfaW5mb3Agcm93X2luZm8gPSAmKHBuZ19wdHItPnJvd19pbmZvKTsKLSAgIHBuZ19ieXRlcCByb3cgPSBwbmdfcHRyLT5yb3dfYnVmICsgMTsKLSAgIGludCBwYXNzID0gcG5nX3B0ci0+cGFzczsKLSAgIHBuZ191aW50XzMyIHRyYW5zZm9ybWF0aW9ucyA9IHBuZ19wdHItPnRyYW5zZm9ybWF0aW9uczsKICNpZmRlZiBQTkdfVVNFX0xPQ0FMX0FSUkFZUwogICAgY29uc3QgaW50IHBuZ19wYXNzX2luY1s3XSA9IHs4LCA4LCA0LCA0LCAyLCAyLCAxfTsKICNlbmRpZgorI2lmZGVmIERJU0FCTEVfUE5HVkNSRF9JTlRFUkxBQ0UKKyAgIGludCBzYXZlX21teF9zdXBwb3J0ZWQgPSBtbXhfc3VwcG9ydGVkOworI2VuZGlmCiAKICAgIHBuZ19kZWJ1ZygxLCJpbiBwbmdfZG9fcmVhZF9pbnRlcmxhY2VcbiIpOwogCi0gICBpZiAobW14X3N1cHBvcnRlZCA9PSAyKSB7Ci0gICAgICAgcG5nX21teF9zdXBwb3J0KCk7Ci0gICB9CisjaWZkZWYgRElTQUJMRV9QTkdWQ1JEX0lOVEVSTEFDRQorICAgLyogSW4gbGlicG5nIHZlcnNpb25zIDEuMC4zYSB0aHJvdWdoIDEuMC40ZCwKKyAgICAqIGEgc2lnbiBlcnJvciBpbiB0aGUgcG9zdC1NTVggY2xlYW51cCBjb2RlIGZvciBlYWNoIHBpeGVsX2RlcHRoIHJlc3VsdGVkCisgICAgKiBpbiBiYWQgcGl4ZWxzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc29tZSByb3dzIG9mIHNvbWUgaW1hZ2VzLCBhbmQgYWxzbworICAgICogKGR1ZSB0byBvdXQtb2YtcmFuZ2UgbWVtb3J5IHJlYWRzIGFuZCB3cml0ZXMpIGNhdXNlZCBoZWFwIGNvcnJ1cHRpb24KKyAgICAqIHdoZW4gY29tcGlsZWQgd2l0aCBNU1ZDIDYuMC4gIFRoZSBlcnJvciB3YXMgZml4ZWQgaW4gdmVyc2lvbiAxLjAuNGUsCisgICAgKiBhbmQgdGhlIGNvZGUgYXBwZWFycyB0byB3b3JrIGNvbXBsZXRlbHkgY29ycmVjdGx5LCBzbyBpdCBpcyBlbmFibGVkCisgICAgKiBieSBkZWZhdWx0LgorICAgICovCisgICBpZiAoMSkgIC8qIGFsbCBwYXNzZXMgY2F1c2VkIGEgaGVhcCBwcm9ibGVtIGluIHRoZSBvbGQgY29kZSAqLworICAgICAgbW14X3N1cHBvcnRlZCA9IDA7CisgICBlbHNlCisjZW5kaWYKKyAgICAgICBpZiAobW14X3N1cHBvcnRlZCA9PSAyKQorICAgICAgICAgICBtbXhfc3VwcG9ydGVkID0gbW14c3VwcG9ydCgpOwogCiAgICBpZiAocm93ICE9IE5VTEwgJiYgcm93X2luZm8gIT0gTlVMTCkKICAgIHsKQEAgLTExNzQsOCArMTE5Nyw3IEBACiAgICAgICAgICAgICAvLyBzaWduIGZpeCBieSBHUlIKICAgICAgICAgICAgIC8vIE5PVEU6ICB0aGVyZSBpcyBOTyBNTVggY29kZSBmb3IgNDgtYml0IGFuZCA2NC1iaXQgaW1hZ2VzCiAKLSAgICAgICAgICAgIC8vIHVzZSBNTVggcm91dGluZSBpZiBtYWNoaW5lIHN1cHBvcnRzIGl0Ci0gICAgICAgICAgICBpZiAoIG1teF9zdXBwb3J0ZWQgKQorICAgICAgICAgICAgaWYgKG1teF9zdXBwb3J0ZWQpIC8vIHVzZSBNTVggcm91dGluZSBpZiBtYWNoaW5lIHN1cHBvcnRzIGl0CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAocGl4ZWxfYnl0ZXMgPT0gMykKICAgICAgICAgICAgICAgIHsKQEAgLTE4NjMsNiArMTg4NSw5IEBACiAgICAgICAgICAocG5nX3VpbnRfMzIpcm93X2luZm8tPnBpeGVsX2RlcHRoICsgNykgPj4gMyk7CiAgICB9CiAKKyNpZmRlZiBESVNBQkxFX1BOR1ZDUkRfSU5URVJMQUNFCisgICBtbXhfc3VwcG9ydGVkID0gc2F2ZV9tbXhfc3VwcG9ydGVkOworI2VuZGlmCiB9CiAKICNlbmRpZiAvKiBQTkdfUkVBRF9JTlRFUkxBQ0lOR19TVVBQT1JURUQgKi8KQEAgLTMyOTgsNyArMzMyMyw3IEBACiAgICAgICBjYXNlIDE6CiAgICAgICB7CiAgICAgICAgICAvLyBQbGFjZWQgaGVyZSBqdXN0IGluIGNhc2UgdGhpcyBpcyBhIGR1cGxpY2F0ZSBvZiB0aGUKLSAgICAgICAgIC8vIG5vbi1NTVggY29kZSBmb3IgdGhlIFNVQiBmaWx0ZXIgaW4gcG5nX3JlYWRfZmlsdGVyX3JvdyBiZWxvdworICAgICAgICAgLy8gbm9uLU1NWCBjb2RlIGZvciB0aGUgU1VCIGZpbHRlciBpbiBwbmdfcmVhZF9maWx0ZXJfcm93IGFib3ZlCiAgICAgICAgICAvLwogICAgICAgICAgLy8gICAgICAgICBwbmdfYnl0ZXAgcnA7CiAgICAgICAgICAvLyAgICAgICAgIHBuZ19ieXRlcCBscDsKQEAgLTM2MzMsNTAgKzM2NTgsNjEgQEAKICAgIHJvdywgcG5nX2J5dGVwIHByZXZfcm93LCBpbnQgZmlsdGVyKQogewogI2lmZGVmIFBOR19ERUJVRwotICAgY2hhciBmaWxubVsxMF07CisgICBjaGFyIGZpbG5tWzZdOwogI2VuZGlmCisjZGVmaW5lIFVzZU1NWCAxCiAKLSAgIGlmIChtbXhfc3VwcG9ydGVkID09IDIpIHsKLSAgICAgICBwbmdfbW14X3N1cHBvcnQoKTsKKyAgIGlmIChtbXhfc3VwcG9ydGVkID09IDIpCisgICAgICAgbW14X3N1cHBvcnRlZCA9IG1teHN1cHBvcnQoKTsKKworICAgaWYgKCFtbXhfc3VwcG9ydGVkKQorICAgeworICAgICAgIHBuZ19yZWFkX2ZpbHRlcl9yb3dfYyhwbmdfcHRyLCByb3dfaW5mbywgcm93LCBwcmV2X3JvdywgZmlsdGVyKTsKKyAgICAgICByZXR1cm4gOwogICAgfQogCiAjaWZkZWYgUE5HX0RFQlVHCiAgICBwbmdfZGVidWcoMSwgImluIHBuZ19yZWFkX2ZpbHRlcl9yb3dcbiIpOworIyAgaWYgKFVzZU1NWCA9PSAxKQorICAgcG5nX2RlYnVnMSgwLCIlcywgIiwgIk1NWCIpOworIyAgZWxzZQorICAgcG5nX2RlYnVnMSgwLCIlcywgIiwgIng4NiIpOworIyAgZW5kaWYKICAgIHN3aXRjaCAoZmlsdGVyKQogICAgewotICAgICAgY2FzZSAwOiBzcHJpbnRmKGZpbG5tLCAibm9uZSIpOworICAgICAgY2FzZSAwOiBzcHJpbnRmKGZpbG5tLCAiTm9uZSAiKTsKICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAxOiBzcHJpbnRmKGZpbG5tLCAic3ViLSVzIiwgIk1NWCIpOworICAgICAgY2FzZSAxOiBzcHJpbnRmKGZpbG5tLCAiU3ViICAiKTsKICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAyOiBzcHJpbnRmKGZpbG5tLCAidXAtJXMiLCAiTU1YIik7CisgICAgICBjYXNlIDI6IHNwcmludGYoZmlsbm0sICJVcCAgICIpOwogICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDM6IHNwcmludGYoZmlsbm0sICJhdmctJXMiLCAiTU1YIik7CisgICAgICBjYXNlIDM6IHNwcmludGYoZmlsbm0sICJBdmcgICIpOwogICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDQ6IHNwcmludGYoZmlsbm0sICJQYWV0aC0lcyIsICJNTVgiKTsKKyAgICAgIGNhc2UgNDogc3ByaW50ZihmaWxubSwgIlBhZXRoIik7CiAgICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6IHNwcmludGYoZmlsbm0sICJ1bmtudyIpOworICAgICAgZGVmYXVsdDogc3ByaW50ZihmaWxubSwgIlVua253Iik7CiAgICAgICAgICBicmVhazsKICAgIH0KICAgIHBuZ19kZWJ1ZzIoMCwicm93PSU1ZCwgJXMsICIsIHBuZ19wdHItPnJvd19udW1iZXIsIGZpbG5tKTsKICAgIHBuZ19kZWJ1ZzIoMCwgInBkPSUyZCwgYj0lZCwgIiwgKGludClyb3dfaW5mby0+cGl4ZWxfZGVwdGgsCiAgICAgICAoaW50KSgocm93X2luZm8tPnBpeGVsX2RlcHRoICsgNykgPj4gMykpOwogICAgcG5nX2RlYnVnMSgwLCJsZW49JThkLCAiLCByb3dfaW5mby0+cm93Ynl0ZXMpOwotI2VuZGlmIC8qIFBOR19ERUJVRyAqLworI2VuZGlmCiAKICAgIHN3aXRjaCAoZmlsdGVyKQogICAgewogICAgICAgY2FzZSBQTkdfRklMVEVSX1ZBTFVFX05PTkU6CiAgICAgICAgICBicmVhazsKLQogICAgICAgY2FzZSBQTkdfRklMVEVSX1ZBTFVFX1NVQjoKICAgICAgIHsKLSAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAocm93X2luZm8tPnBpeGVsX2RlcHRoID49IFBOR19NTVhfQklUREVQVEhfVEhSRVNIT0xEX0RFRkFVTFQpICYmCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5yb3dieXRlcyA+PSBQTkdfTU1YX1JPV0JZVEVTX1RIUkVTSE9MRF9ERUZBVUxUKSkKKyNpZiAoVXNlTU1YID09IDEpCisgICAgICAgICBpZiAoKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+IDgpICYmCisgICAgICAgICAgICAocm93X2luZm8tPnJvd2J5dGVzID49IDEyOCkgKQogICAgICAgICAgewogICAgICAgICAgICAgcG5nX3JlYWRfZmlsdGVyX3Jvd19tbXhfc3ViKHJvd19pbmZvLCByb3cpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfdWludF8zMiBpOwogICAgICAgICAgICAgcG5nX3VpbnRfMzIgaXN0b3AgPSByb3dfaW5mby0+cm93Ynl0ZXM7CkBAIC0zNjg5LDQzICszNzI1LDQxIEBACiAgICAgICAgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKmxwKyspKSAmIDB4ZmYpOwogICAgICAgICAgICAgICAgcnArKzsKICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KKyAgICAgICAgIH0gIC8vZW5kICFVc2VNTVgKICAgICAgICAgIGJyZWFrOwogICAgICAgfQotCiAgICAgICBjYXNlIFBOR19GSUxURVJfVkFMVUVfVVA6CiAgICAgICB7Ci0gICAgICAgICBpZiAoCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+PSBQTkdfTU1YX0JJVERFUFRIX1RIUkVTSE9MRF9ERUZBVUxUKSAmJgotICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gUE5HX01NWF9ST1dCWVRFU19USFJFU0hPTERfREVGQVVMVCkpCisjaWYgKFVzZU1NWCA9PSAxKQorICAgICAgICAgaWYgKChyb3dfaW5mby0+cGl4ZWxfZGVwdGggPiA4KSAmJgorICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gMTI4KSApCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfcmVhZF9maWx0ZXJfcm93X21teF91cChyb3dfaW5mbywgcm93LCBwcmV2X3Jvdyk7Ci0gICAgICAgICB9CisgICAgICAgICB9ICAvL2VuZCBpZiBVc2VNTVgKICAgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICAgeworICAgICAgICAgICAgcG5nX2J5dGVwIHJwOworICAgICAgICAgICAgcG5nX2J5dGVwIHBwOwogICAgICAgICAgICAgcG5nX3VpbnRfMzIgaTsKLSAgICAgICAgICAgIHBuZ191aW50XzMyIGlzdG9wID0gcm93X2luZm8tPnJvd2J5dGVzOwotICAgICAgICAgICAgcG5nX2J5dGVwIHJwID0gcm93OwotICAgICAgICAgICAgcG5nX2J5dGVwIHBwID0gcHJldl9yb3c7Ci0KLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcDsgKytpKQorICAgICAgICAgICAgZm9yIChpID0gMCwgcnAgPSByb3csIHBwID0gcHJldl9yb3c7CisgICAgICAgICAgICAgICBpIDwgcm93X2luZm8tPnJvd2J5dGVzOyBpKyssIHJwKyssIHBwKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKnBwKyspKSAmIDB4ZmYpOwotICAgICAgICAgICAgICAgcnArKzsKKyAgICAgICAgICAgICAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqcHApKSAmIDB4ZmYpOwogICAgICAgICAgICAgfQotICAgICAgICAgfQorICAgICAgICAgfSAgLy9lbmQgIVVzZU1NWAogICAgICAgICAgYnJlYWs7CiAgICAgICB9Ci0KICAgICAgIGNhc2UgUE5HX0ZJTFRFUl9WQUxVRV9BVkc6CiAgICAgICB7Ci0gICAgICAgICBpZiAoCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+PSBQTkdfTU1YX0JJVERFUFRIX1RIUkVTSE9MRF9ERUZBVUxUKSAmJgotICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gUE5HX01NWF9ST1dCWVRFU19USFJFU0hPTERfREVGQVVMVCkpCisjaWYgKFVzZU1NWCA9PSAxKQorICAgICAgICAgaWYgKChyb3dfaW5mby0+cGl4ZWxfZGVwdGggPiA4KSAmJgorICAgICAgICAgICAgIChyb3dfaW5mby0+cm93Ynl0ZXMgPj0gMTI4KSApCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfcmVhZF9maWx0ZXJfcm93X21teF9hdmcocm93X2luZm8sIHJvdywgcHJldl9yb3cpOwotICAgICAgICAgfQorICAgICAgICAgfSAgLy9lbmQgaWYgVXNlTU1YCiAgICAgICAgICBlbHNlCisjZW5kaWYKICAgICAgICAgIHsKICAgICAgICAgICAgIHBuZ191aW50XzMyIGk7CiAgICAgICAgICAgICBwbmdfYnl0ZXAgcnAgPSByb3c7CkBAIC0zNzQ3LDE5ICszNzgxLDE5IEBACiAgICAgICAgICAgICAgICAgICAoKGludCkoKnBwKysgKyAqbHArKykgPj4gMSkpICYgMHhmZik7CiAgICAgICAgICAgICAgICBycCsrOwogICAgICAgICAgICAgfQotICAgICAgICAgfQorICAgICAgICAgfSAgLy9lbmQgIVVzZU1NWAogICAgICAgICAgYnJlYWs7CiAgICAgICB9Ci0KICAgICAgIGNhc2UgUE5HX0ZJTFRFUl9WQUxVRV9QQUVUSDoKICAgICAgIHsKLSAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAocm93X2luZm8tPnBpeGVsX2RlcHRoID49IFBOR19NTVhfQklUREVQVEhfVEhSRVNIT0xEX0RFRkFVTFQpICYmCi0gICAgICAgICAgICAgKHJvd19pbmZvLT5yb3dieXRlcyA+PSBQTkdfTU1YX1JPV0JZVEVTX1RIUkVTSE9MRF9ERUZBVUxUKSkKKyNpZiAoVXNlTU1YID09IDEpCisgICAgICAgICBpZiAoKHJvd19pbmZvLT5waXhlbF9kZXB0aCA+IDgpICYmCisgICAgICAgICAgICAgKHJvd19pbmZvLT5yb3dieXRlcyA+PSAxMjgpICkKICAgICAgICAgIHsKICAgICAgICAgICAgIHBuZ19yZWFkX2ZpbHRlcl9yb3dfbW14X3BhZXRoKHJvd19pbmZvLCByb3csIHByZXZfcm93KTsKLSAgICAgICAgIH0KKyAgICAgICAgIH0gIC8vZW5kIGlmIFVzZU1NWAogICAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgICB7CiAgICAgICAgICAgICBwbmdfdWludF8zMiBpOwogICAgICAgICAgICAgcG5nX2J5dGVwIHJwID0gcm93OwpAQCAtMzgxMCwxNSArMzg0NCwxMyBAQAogICAgICAgICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIHApICYgMHhmZik7CiAgICAgICAgICAgICAgICBycCsrOwogICAgICAgICAgICAgfQotICAgICAgICAgfQorICAgICAgICAgfSAgLy9lbmQgIVVzZU1NWAogICAgICAgICAgYnJlYWs7CiAgICAgICB9Ci0KICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiSWdub3JpbmcgYmFkIHJvdyBmaWx0ZXIgdHlwZSIpOworICAgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgIklnbm9yaW5nIGJhZCBhZGFwdGl2ZSBmaWx0ZXIgdHlwZSIpOwogICAgICAgICAgKnJvdz0wOwogICAgICAgICAgYnJlYWs7CiAgICB9CiB9Ci0KLSNlbmRpZiAvKiBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEICYmIFBOR19VU0VfUE5HVkNSRCAqLworI2VuZGlmCmRpZmYgLS1naXQgYS9wbmd3aW8uYyBiL3BuZ3dpby5jCmluZGV4IDkzNDAxOTQuLmQ2MmZlODUgMTAwNjQ0Ci0tLSBhL3BuZ3dpby5jCisrKyBiL3BuZ3dpby5jCkBAIC0xLDkgKzEsOSBAQAogCiAvKiBwbmd3aW8uYyAtIGZ1bmN0aW9ucyBmb3IgZGF0YSBvdXRwdXQKICAqCi0gKiBsaWJwbmcgMS4wLjliZXRhMTAgLSBKYW51YXJ5IDE2LCAyMDAxCisgKiBsaWJwbmcgMS4wLjliZXRhMiAtIE5vdmVtYmVyIDE5LCAyMDAwCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCiAgKiAoVmVyc2lvbiAwLjg4IENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy4pCiAgKgpkaWZmIC0tZ2l0IGEvcG5nd3JpdGUuYyBiL3BuZ3dyaXRlLmMKaW5kZXggMWFlOTQ3Ni4uYmE3OWM3YiAxMDA2NDQKLS0tIGEvcG5nd3JpdGUuYworKysgYi9wbmd3cml0ZS5jCkBAIC0xLDkgKzEsOSBAQAogCiAvKiBwbmd3cml0ZS5jIC0gZ2VuZXJhbCByb3V0aW5lcyB0byB3cml0ZSBhIFBORyBmaWxlCiAgKgotICogbGlicG5nIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQorICogbGlicG5nIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICovCkBAIC0yOCwxMyArMjgsNiBAQAogICAgaWYgKCEocG5nX3B0ci0+bW9kZSAmIFBOR19XUk9URV9JTkZPX0JFRk9SRV9QTFRFKSkKICAgIHsKICAgIHBuZ193cml0ZV9zaWcocG5nX3B0cik7IC8qIHdyaXRlIFBORyBzaWduYXR1cmUgKi8KLSNpZiBkZWZpbmVkKFBOR19NTkdfRkVBVFVSRVNfU1VQUE9SVEVEKQotICAgaWYoKHBuZ19wdHItPm1vZGUmUE5HX0hBVkVfUE5HX1NJR05BVFVSRSkmJihwbmdfcHRyLT5tbmdfZmVhdHVyZXNfcGVybWl0dGVkKSkKLSAgIHsKLSAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsIk1ORyBmZWF0dXJlcyBhcmUgbm90IGFsbG93ZWQgaW4gYSBQTkcgZGF0YXN0cmVhbVxuIik7Ci0gICAgICBwbmdfcHRyLT5tbmdfZmVhdHVyZXNfcGVybWl0dGVkPTA7Ci0gICB9Ci0jZW5kaWYKICAgIC8qIHdyaXRlIElIRFIgaW5mb3JtYXRpb24uICovCiAgICBwbmdfd3JpdGVfSUhEUihwbmdfcHRyLCBpbmZvX3B0ci0+d2lkdGgsIGluZm9fcHRyLT5oZWlnaHQsCiAgICAgICBpbmZvX3B0ci0+Yml0X2RlcHRoLCBpbmZvX3B0ci0+Y29sb3JfdHlwZSwgaW5mb19wdHItPmNvbXByZXNzaW9uX3R5cGUsCkBAIC02NCw3ICs1Nyw3IEBACiAjZW5kaWYKICNpZiBkZWZpbmVkKFBOR19XUklURV9pQ0NQX1NVUFBPUlRFRCkKICAgIGlmIChpbmZvX3B0ci0+dmFsaWQgJiBQTkdfSU5GT19pQ0NQKQotICAgICAgcG5nX3dyaXRlX2lDQ1AocG5nX3B0ciwgaW5mb19wdHItPmljY3BfbmFtZSwgUE5HX0NPTVBSRVNTSU9OX1RZUEVfQkFTRSwKKyAgICAgIHBuZ193cml0ZV9pQ0NQKHBuZ19wdHIsIGluZm9fcHRyLT5pY2NwX25hbWUsIFBOR19URVhUX0NPTVBSRVNTSU9OX3pUWHQsCiAgICAgICAgICAgICAgICAgICAgICBpbmZvX3B0ci0+aWNjcF9wcm9maWxlLCAoaW50KWluZm9fcHRyLT5pY2NwX3Byb2ZsZW4pOwogI2VuZGlmCiAjaWYgZGVmaW5lZChQTkdfV1JJVEVfc0JJVF9TVVBQT1JURUQpCkBAIC0zODIsMTEgKzM3NSw3IEBACiAKICAgIC8qIHdyaXRlIGVuZCBvZiBQTkcgZmlsZSAqLwogICAgcG5nX3dyaXRlX0lFTkQocG5nX3B0cik7Ci0jaWYgMAotLyogVGhpcyBmbHVzaCwgYWRkZWQgaW4gbGlicG5nLTEuMC44LCAgY2F1c2VzIHNvbWUgYXBwbGljYXRpb25zIHRvIGNyYXNoCi0gICBiZWNhdXNlIHRoZXkgZG8gbm90IHNldCBwbmdfcHRyLT5vdXRwdXRfZmx1c2hfZm4gKi8KICAgIHBuZ19mbHVzaChwbmdfcHRyKTsKLSNlbmRpZgogfQogCiAjaWYgZGVmaW5lZChQTkdfV1JJVEVfdElNRV9TVVBQT1JURUQpCkBAIC00OTksNyArNDg4LDcgQEAKICAgICAgICAgcmVtb3ZlZCBmcm9tIHZlcnNpb24gMi4wLjAgYW5kIGJleW9uZCBiZWNhdXNlIHRoZSBwcmV2aW91cyB0ZXN0CiAgICAgICAgIHdvdWxkIGhhdmUgYWxyZWFkeSByZWplY3RlZCBpdC4gKi8KIAotICAgICBpZiAodXNlcl9wbmdfdmVyWzRdID09ICc2JyAmJiB1c2VyX3BuZ192ZXJbMl0gPT0gJzAnICYmCisgICAgIGlmICh1c2VyX3BuZ192ZXJbNF0gPT0gJzYnICYmIHVzZXJfcG5nX3ZlclsyXSA9PSAnMCcgJiYgCiAgICAgICAgICB1c2VyX3BuZ192ZXJbMF0gPT0gJzEnICYmIHVzZXJfcG5nX3Zlcls1XSA9PSAnXDAnKQogICAgICB7CiAgICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLApAQCAtNzgwLDI0ICs3NjksNiBAQAogICAgaWYgKHBuZ19wdHItPnRyYW5zZm9ybWF0aW9ucykKICAgICAgIHBuZ19kb193cml0ZV90cmFuc2Zvcm1hdGlvbnMocG5nX3B0cik7CiAKLSNpZiBkZWZpbmVkKFBOR19NTkdfRkVBVFVSRVNfU1VQUE9SVEVEKQotICAgLyogV3JpdGUgZmlsdGVyX21ldGhvZCA2NCAoaW50cmFwaXhlbCBkaWZmZXJlbmNpbmcpIG9ubHkgaWYKLSAgICAqIDEuIExpYnBuZyB3YXMgY29tcGlsZWQgd2l0aCBQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCBhbmQKLSAgICAqIDIuIExpYnBuZyBkaWQgbm90IHdyaXRlIGEgUE5HIHNpZ25hdHVyZSAodGhpcyBmaWx0ZXJfbWV0aG9kIGlzIG9ubHkKLSAgICAqICAgIHVzZWQgaW4gUE5HIGRhdGFzdHJlYW1zIHRoYXQgYXJlIGVtYmVkZGVkIGluIE1ORyBkYXRhc3RyZWFtcykgYW5kCi0gICAgKiAzLiBUaGUgYXBwbGljYXRpb24gY2FsbGVkIHBuZ19wZXJtaXRfbW5nX2ZlYXR1cmVzIHdpdGggYSBtYXNrIHRoYXQKLSAgICAqICAgIGluY2x1ZGVkIFBOR19GTEFHX01OR19GSUxURVJfNjQgYW5kCi0gICAgKiA0LiBUaGUgZmlsdGVyX21ldGhvZCBpcyA2NCBhbmQKLSAgICAqIDUuIFRoZSBjb2xvcl90eXBlIGlzIFJHQiBvciBSR0JBCi0gICAgKi8KLSAgIGlmKChwbmdfcHRyLT5tbmdfZmVhdHVyZXNfcGVybWl0dGVkICYgUE5HX0ZMQUdfTU5HX0ZJTFRFUl82NCkgJiYKLSAgICAgIChwbmdfcHRyLT5maWx0ZXJfdHlwZSA9PSBQTkdfSU5UUkFQSVhFTF9ESUZGRVJFTkNJTkcpKQotICAgewotICAgICAgLyogSW50cmFwaXhlbCBkaWZmZXJlbmNpbmcgKi8KLSAgICAgIHBuZ19kb193cml0ZV9pbnRyYXBpeGVsKCYocG5nX3B0ci0+cm93X2luZm8pLCBwbmdfcHRyLT5yb3dfYnVmICsgMSk7Ci0gICB9Ci0jZW5kaWYKLQogICAgLyogRmluZCBhIGZpbHRlciBpZiBuZWNlc3NhcnksIGZpbHRlciB0aGUgcm93IGFuZCB3cml0ZSBpdCBvdXQuICovCiAgICBwbmdfd3JpdGVfZmluZF9maWx0ZXIocG5nX3B0ciwgJihwbmdfcHRyLT5yb3dfaW5mbykpOwogCkBAIC05OTMsMTEgKzk2NCw2IEBACiBwbmdfc2V0X2ZpbHRlcihwbmdfc3RydWN0cCBwbmdfcHRyLCBpbnQgbWV0aG9kLCBpbnQgZmlsdGVycykKIHsKICAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX3NldF9maWx0ZXJcbiIpOwotI2lmIGRlZmluZWQoUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQpCi0gICBpZigocG5nX3B0ci0+bW5nX2ZlYXR1cmVzX3Blcm1pdHRlZCAmIFBOR19GTEFHX01OR19GSUxURVJfNjQpICYmCi0gICAgICAobWV0aG9kID09IFBOR19JTlRSQVBJWEVMX0RJRkZFUkVOQ0lORykpCi0gICAgICAgICBtZXRob2QgPSBQTkdfRklMVEVSX1RZUEVfQkFTRTsKLSNlbmRpZgogICAgaWYgKG1ldGhvZCA9PSBQTkdfRklMVEVSX1RZUEVfQkFTRSkKICAgIHsKICAgICAgIHN3aXRjaCAoZmlsdGVycyAmIChQTkdfQUxMX0ZJTFRFUlMgfCAweDA3KSkKZGlmZiAtLWdpdCBhL3BuZ3d0cmFuLmMgYi9wbmd3dHJhbi5jCmluZGV4IDZiNWZjMjcuLmQwZjVkZDcgMTAwNjQ0Ci0tLSBhL3BuZ3d0cmFuLmMKKysrIGIvcG5nd3RyYW4uYwpAQCAtMSw5ICsxLDkgQEAKIAogLyogcG5nd3RyYW4uYyAtIHRyYW5zZm9ybXMgdGhlIGRhdGEgaW4gYSByb3cgZm9yIFBORyB3cml0ZXJzCiAgKgotICogbGlicG5nIDEuMC45YmV0YTEwIC0gSmFudWFyeSAxNiwgMjAwMQorICogbGlicG5nIDEuMC45YmV0YTIgLSBOb3ZlbWJlciAxOSwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQogICovCkBAIC00OTgsNjQgKzQ5OCwzIEBACiAgICB9CiB9CiAjZW5kaWYKLQotI2lmIGRlZmluZWQoUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQpCi0vKiB1bmRvZXMgaW50cmFwaXhlbCBkaWZmZXJlbmNpbmcgICovCi12b2lkIC8qIFBSSVZBVEUgKi8KLXBuZ19kb193cml0ZV9pbnRyYXBpeGVsKHBuZ19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3cpCi17Ci0gICBwbmdfZGVidWcoMSwgImluIHBuZ19kb193cml0ZV9pbnRyYXBpeGVsXG4iKTsKLSAgIGlmICgKLSNpZiBkZWZpbmVkKFBOR19VU0VMRVNTX1RFU1RTX1NVUFBPUlRFRCkKLSAgICAgICByb3cgIT0gTlVMTCAmJiByb3dfaW5mbyAhPSBOVUxMICYmCi0jZW5kaWYKLSAgICAgICAocm93X2luZm8tPmNvbG9yX3R5cGUgJiBQTkdfQ09MT1JfTUFTS19DT0xPUikpCi0gICB7Ci0gICAgICBpbnQgYnl0ZXNfcGVyX3BpeGVsOwotICAgICAgcG5nX3VpbnRfMzIgcm93X3dpZHRoID0gcm93X2luZm8tPndpZHRoOwotICAgICAgaWYgKHJvd19pbmZvLT5iaXRfZGVwdGggPT0gOCkKLSAgICAgIHsKLSAgICAgICAgIHBuZ19ieXRlcCBycDsKLSAgICAgICAgIHBuZ191aW50XzMyIGk7Ci0KLSAgICAgICAgIGlmIChyb3dfaW5mby0+Y29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9SR0IpCi0gICAgICAgICAgICBieXRlc19wZXJfcGl4ZWwgPSAzOwotICAgICAgICAgZWxzZSBpZiAocm93X2luZm8tPmNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBKQotICAgICAgICAgICAgYnl0ZXNfcGVyX3BpeGVsID0gNDsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgZm9yIChpID0gMCwgcnAgPSByb3c7IGkgPCByb3dfd2lkdGg7IGkrKywgcnAgKz0gYnl0ZXNfcGVyX3BpeGVsKQotICAgICAgICAgewotICAgICAgICAgICAgKihycCkgICA9IChwbmdfYnl0ZSkoKCpycCAgICAgLSAqKHJwKzEpKSYweGZmKTsKLSAgICAgICAgICAgICoocnArMikgPSAocG5nX2J5dGUpKCgqKHJwKzIpIC0gKihycCsxKSkmMHhmZik7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChyb3dfaW5mby0+Yml0X2RlcHRoID09IDE2KQotICAgICAgewotICAgICAgICAgcG5nX2J5dGVwIHJwOwotICAgICAgICAgcG5nX3VpbnRfMzIgaTsKLQotICAgICAgICAgaWYgKHJvd19pbmZvLT5jb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1JHQikKLSAgICAgICAgICAgIGJ5dGVzX3Blcl9waXhlbCA9IDY7Ci0gICAgICAgICBlbHNlIGlmIChyb3dfaW5mby0+Y29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9SR0JfQUxQSEEpCi0gICAgICAgICAgICBieXRlc19wZXJfcGl4ZWwgPSA4OwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICBmb3IgKGkgPSAwLCBycCA9IHJvdzsgaSA8IHJvd193aWR0aDsgaSsrLCBycCArPSBieXRlc19wZXJfcGl4ZWwpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBwbmdfdWludF8zMiBzMD0qKHJwICApPDw4IHwgKihycCsxKTsKLSAgICAgICAgICAgIHBuZ191aW50XzMyIHMxPSoocnArMik8PDggfCAqKHJwKzMpOwotICAgICAgICAgICAgcG5nX3VpbnRfMzIgczI9KihycCs0KTw8OCB8ICoocnArNSk7Ci0gICAgICAgICAgICBwbmdfdWludF8zMiByZWQ9KHMwLXMxKSYweGZmZmY7Ci0gICAgICAgICAgICBwbmdfdWludF8zMiBibHVlPShzMi1zMSkmMHhmZmZmOwotICAgICAgICAgICAgKihycCAgKSA9IChwbmdfYnl0ZSkoKHJlZD4+OCkmMHhmZik7Ci0gICAgICAgICAgICAqKHJwKzEpID0gKHBuZ19ieXRlKShyZWQmMHhmZik7Ci0gICAgICAgICAgICAqKHJwKzQpID0gKHBuZ19ieXRlKSgoYmx1ZT4+OCkmMHhmZik7Ci0gICAgICAgICAgICAqKHJwKzUpID0gKHBuZ19ieXRlKShibHVlJjB4ZmYpOwotICAgICAgICAgfQotICAgICAgfQotICAgfQotfQotI2VuZGlmIC8qIFBOR19NTkdfRkVBVFVSRVNfU1VQUE9SVEVEICovCmRpZmYgLS1naXQgYS9wbmd3dXRpbC5jIGIvcG5nd3V0aWwuYwppbmRleCBhOGVmMWE0Li5lZjgxMDA4IDEwMDY0NAotLS0gYS9wbmd3dXRpbC5jCisrKyBiL3BuZ3d1dGlsLmMKQEAgLTEsOSArMSw5IEBACiAKIC8qIHBuZ3d1dGlsLmMgLSB1dGlsaXRpZXMgdG8gd3JpdGUgYSBQTkcgZmlsZQogICoKLSAqIGxpYnBuZyAxLjAuOWJldGExMCAtIEphbnVhcnkgMTYsIDIwMDEKKyAqIGxpYnBuZyAxLjAuOWJldGEyIC0gTm92ZW1iZXIgMTksIDIwMDAKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKICAqLwpAQCAtMTMxLDggKzEzMSw2IEBACiAgICAvKiB3cml0ZSB0aGUgcmVzdCBvZiB0aGUgOCBieXRlIHNpZ25hdHVyZSAqLwogICAgcG5nX3dyaXRlX2RhdGEocG5nX3B0ciwgJnBuZ19zaWduYXR1cmVbcG5nX3B0ci0+c2lnX2J5dGVzXSwKICAgICAgIChwbmdfc2l6ZV90KTggLSBwbmdfcHRyLT5zaWdfYnl0ZXMpOwotICAgaWYocG5nX3B0ci0+c2lnX2J5dGVzIDwgMykKLSAgICAgIHBuZ19wdHItPm1vZGUgfD0gUE5HX0hBVkVfUE5HX1NJR05BVFVSRTsKIH0KIAogI2lmIGRlZmluZWQoUE5HX1dSSVRFX1RFWFRfU1VQUE9SVEVEKSB8fCBkZWZpbmVkKFBOR19XUklURV9pQ0NQX1NVUFBPUlRFRCkKQEAgLTQyMSwyNCArNDE5LDcgQEAKICAgICAgIGNvbXByZXNzaW9uX3R5cGUgPSBQTkdfQ09NUFJFU1NJT05fVFlQRV9CQVNFOwogICAgfQogCi0gICAvKiBXcml0ZSBmaWx0ZXJfbWV0aG9kIDY0IChpbnRyYXBpeGVsIGRpZmZlcmVuY2luZykgb25seSBpZgotICAgICogMS4gTGlicG5nIHdhcyBjb21waWxlZCB3aXRoIFBOR19NTkdfRkVBVFVSRVNfU1VQUE9SVEVEIGFuZAotICAgICogMi4gTGlicG5nIGRpZCBub3Qgd3JpdGUgYSBQTkcgc2lnbmF0dXJlICh0aGlzIGZpbHRlcl9tZXRob2QgaXMgb25seQotICAgICogICAgdXNlZCBpbiBQTkcgZGF0YXN0cmVhbXMgdGhhdCBhcmUgZW1iZWRkZWQgaW4gTU5HIGRhdGFzdHJlYW1zKSBhbmQKLSAgICAqIDMuIFRoZSBhcHBsaWNhdGlvbiBjYWxsZWQgcG5nX3Blcm1pdF9tbmdfZmVhdHVyZXMgd2l0aCBhIG1hc2sgdGhhdAotICAgICogICAgaW5jbHVkZWQgUE5HX0ZMQUdfTU5HX0ZJTFRFUl82NCBhbmQKLSAgICAqIDQuIFRoZSBmaWx0ZXJfbWV0aG9kIGlzIDY0IGFuZAotICAgICogNS4gVGhlIGNvbG9yX3R5cGUgaXMgUkdCIG9yIFJHQkEKLSAgICAqLwotICAgaWYgKAotI2lmIGRlZmluZWQoUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQpCi0gICAgICAhKChwbmdfcHRyLT5tbmdfZmVhdHVyZXNfcGVybWl0dGVkICYgUE5HX0ZMQUdfTU5HX0ZJTFRFUl82NCkgJiYKLSAgICAgICgocG5nX3B0ci0+bW9kZSZQTkdfSEFWRV9QTkdfU0lHTkFUVVJFKSA9PSAwKSAmJgotICAgICAgKGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCIHx8IAotICAgICAgIGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBKSAmJgotICAgICAgKGZpbHRlcl90eXBlID09IFBOR19JTlRSQVBJWEVMX0RJRkZFUkVOQ0lORykpICYmCi0jZW5kaWYKLSAgICAgIGZpbHRlcl90eXBlICE9IFBOR19GSUxURVJfVFlQRV9CQVNFKQorICAgaWYgKGZpbHRlcl90eXBlICE9IFBOR19GSUxURVJfVFlQRV9CQVNFKQogICAgewogICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgIkludmFsaWQgZmlsdGVyIHR5cGUgc3BlY2lmaWVkIik7CiAgICAgICBmaWx0ZXJfdHlwZSA9IFBOR19GSUxURVJfVFlQRV9CQVNFOwpAQCAtNDU5LDcgKzQ0MCw2IEBACiAgICBwbmdfcHRyLT5iaXRfZGVwdGggPSAocG5nX2J5dGUpYml0X2RlcHRoOwogICAgcG5nX3B0ci0+Y29sb3JfdHlwZSA9IChwbmdfYnl0ZSljb2xvcl90eXBlOwogICAgcG5nX3B0ci0+aW50ZXJsYWNlZCA9IChwbmdfYnl0ZSlpbnRlcmxhY2VfdHlwZTsKLSAgIHBuZ19wdHItPmZpbHRlcl90eXBlID0gKHBuZ19ieXRlKWZpbHRlcl90eXBlOwogICAgcG5nX3B0ci0+d2lkdGggPSB3aWR0aDsKICAgIHBuZ19wdHItPmhlaWdodCA9IGhlaWdodDsKIApAQCAtNjc3LDcgKzY1Nyw3IEBACiAgICAgICByZXR1cm47CiAgICB9CiAKLSAgIGlmIChjb21wcmVzc2lvbl90eXBlICE9IFBOR19DT01QUkVTU0lPTl9UWVBFX0JBU0UpCisgICBpZiAoY29tcHJlc3Npb25fdHlwZSkKICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJVbmtub3duIGNvbXByZXNzaW9uIHR5cGUgaW4gaUNDUCBjaHVuayIpOwogCiAgICBpZiAocHJvZmlsZSA9PSBOVUxMKQpAQCAtNjg1LDcgKzY2NSw3IEBACiAKICAgIGlmIChwcm9maWxlX2xlbikKICAgICAgICBwcm9maWxlX2xlbiA9IHBuZ190ZXh0X2NvbXByZXNzKHBuZ19wdHIsIHByb2ZpbGUsIChwbmdfc2l6ZV90KXByb2ZpbGVfbGVuLAotICAgICAgICAgIFBOR19DT01QUkVTU0lPTl9UWVBFX0JBU0UsICZjb21wKTsKKyAgICAgICAgICBQTkdfVEVYVF9DT01QUkVTU0lPTl96VFh0LCAmY29tcCk7CiAKICAgIC8qIG1ha2Ugc3VyZSB3ZSBpbmNsdWRlIHRoZSBOVUxMIGFmdGVyIHRoZSBuYW1lIGFuZCB0aGUgY29tcHJlc3Npb24gdHlwZSAqLwogICAgcG5nX3dyaXRlX2NodW5rX3N0YXJ0KHBuZ19wdHIsIChwbmdfYnl0ZXApcG5nX2lDQ1AsCkBAIC0xMDkyLDE0ICsxMDcyLDEzIEBACiAgICBwbmdfc2l6ZV90IGtleV9sZW47CiAgICBwbmdfY2hhcnAga3AsIGRwOwogICAgaW50IGtmbGFnOwotICAgaW50IGt3YXJuPTA7CiAKICAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX2NoZWNrX2tleXdvcmRcbiIpOwogICAgKm5ld19rZXkgPSBOVUxMOwogCiAgICBpZiAoa2V5ID09IE5VTEwgfHwgKGtleV9sZW4gPSBwbmdfc3RybGVuKGtleSkpID09IDApCiAgICB7Ci0gICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiemVybyBsZW5ndGgga2V5d29yZCIpOworICAgICAgcG5nX2NodW5rX3dhcm5pbmcocG5nX3B0ciwgInplcm8gbGVuZ3RoIGtleXdvcmQiKTsKICAgICAgIHJldHVybiAoKHBuZ19zaXplX3QpMCk7CiAgICB9CiAKQEAgLTExMTYsOSArMTA5NSw5IEBACiAgICAgICAgICBjaGFyIG1zZ1s0MF07CiAKICAgICAgICAgIHNwcmludGYobXNnLCAiaW52YWxpZCBrZXl3b3JkIGNoYXJhY3RlciAweCUwMlgiLCAqa3ApOwotICAgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgbXNnKTsKKyAgICAgICAgIHBuZ19jaHVua193YXJuaW5nKHBuZ19wdHIsIG1zZyk7CiAjZWxzZQotICAgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgImludmFsaWQgY2hhcmFjdGVyIGluIGtleXdvcmQiKTsKKyAgICAgICAgIHBuZ19jaHVua193YXJuaW5nKHBuZ19wdHIsICJpbnZhbGlkIGNoYXJhY3RlciBpbiBrZXl3b3JkIik7CiAjZW5kaWYKICAgICAgICAgICpkcCA9ICcgJzsKICAgICAgIH0KQEAgLTExMzMsNyArMTExMiw3IEBACiAgICBrcCA9ICpuZXdfa2V5ICsga2V5X2xlbiAtIDE7CiAgICBpZiAoKmtwID09ICcgJykKICAgIHsKLSAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJ0cmFpbGluZyBzcGFjZXMgcmVtb3ZlZCBmcm9tIGtleXdvcmQiKTsKKyAgICAgIHBuZ19jaHVua193YXJuaW5nKHBuZ19wdHIsICJ0cmFpbGluZyBzcGFjZXMgcmVtb3ZlZCBmcm9tIGtleXdvcmQiKTsKIAogICAgICAgd2hpbGUgKCprcCA9PSAnICcpCiAgICAgICB7CkBAIC0xMTQ2LDcgKzExMjUsNyBAQAogICAga3AgPSAqbmV3X2tleTsKICAgIGlmICgqa3AgPT0gJyAnKQogICAgewotICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgImxlYWRpbmcgc3BhY2VzIHJlbW92ZWQgZnJvbSBrZXl3b3JkIik7CisgICAgICBwbmdfY2h1bmtfd2FybmluZyhwbmdfcHRyLCAibGVhZGluZyBzcGFjZXMgcmVtb3ZlZCBmcm9tIGtleXdvcmQiKTsKIAogICAgICAgd2hpbGUgKCprcCA9PSAnICcpCiAgICAgICB7CkBAIC0xMTY4LDcgKzExNDcsNiBAQAogICAgICAgZWxzZSBpZiAoKmtwID09ICcgJykKICAgICAgIHsKICAgICAgICAgIGtleV9sZW4tLTsKLSAgICAgICAgIGt3YXJuPTE7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CkBAIC0xMTc3LDE5ICsxMTU1LDE3IEBACiAgICAgICB9CiAgICB9CiAgICAqZHAgPSAnXDAnOwotICAgaWYoa3dhcm4pCi0gICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiZXh0cmEgaW50ZXJpb3Igc3BhY2VzIHJlbW92ZWQgZnJvbSBrZXl3b3JkIik7CiAKICAgIGlmIChrZXlfbGVuID09IDApCiAgICB7CiAgICAgICBwbmdfZnJlZShwbmdfcHRyLCAqbmV3X2tleSk7CiAgICAgICAqbmV3X2tleT1OVUxMOwotICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgIlplcm8gbGVuZ3RoIGtleXdvcmQiKTsKKyAgICAgIHBuZ19jaHVua193YXJuaW5nKHBuZ19wdHIsICJaZXJvIGxlbmd0aCBrZXl3b3JkIik7CiAgICB9CiAKICAgIGlmIChrZXlfbGVuID4gNzkpCiAgICB7Ci0gICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAia2V5d29yZCBsZW5ndGggbXVzdCBiZSAxIC0gNzkgY2hhcmFjdGVycyIpOworICAgICAgcG5nX2NodW5rX3dhcm5pbmcocG5nX3B0ciwgImtleXdvcmQgbGVuZ3RoIG11c3QgYmUgMSAtIDc5IGNoYXJhY3RlcnMiKTsKICAgICAgIG5ld19rZXlbNzldID0gJ1wwJzsKICAgICAgIGtleV9sZW4gPSA3OTsKICAgIH0KZGlmZiAtLWdpdCBhL3Byb2plY3RzL21zdmMvUkVBRE1FLnR4dCBiL3Byb2plY3RzL21zdmMvUkVBRE1FLnR4dAppbmRleCA1NmExY2E5Li44YzRjNTM0IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9tc3ZjL1JFQURNRS50eHQKKysrIGIvcHJvamVjdHMvbXN2Yy9SRUFETUUudHh0CkBAIC0xLDUgKzEsNSBAQAogTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMCBmb3IKLWxpYnBuZyAxLjAuOWJldGExMCAoSmFudWFyeSAxNiwgMjAwMSkgYW5kIHpsaWIKK2xpYnBuZyAxLjAuOWJldGEyIChOb3ZlbWJlciAxOSwgMjAwMCkgYW5kIHpsaWIKIAogQ29weXJpZ2h0IChDKSAyMDAwIFNpbW9uLVBpZXJyZSBDYWRpZXV4CiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKZGlmZiAtLWdpdCBhL3Byb2plY3RzL21zdmMvcG5nLnJjIGIvcHJvamVjdHMvbXN2Yy9wbmcucmMKaW5kZXggYjllZjJkNi4uNjkyMTk4MyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvbXN2Yy9wbmcucmMKKysrIGIvcHJvamVjdHMvbXN2Yy9wbmcucmMKQEAgLTUwLDE4ICs1MCwyMyBAQAogIyAgZGVmaW5lIFZTX1NQRUNJQUxCVUlMRCAwCiAjZW5kaWYgLyogU1BFQ0lBTEJVSUxEICovCiAKLSNpZiAoKFBOR19MSUJQTkdfQlVJTERfVFlQRSAmIFBOR19MSUJQTkdfQlVJTERfVFlQRU1BU0spICE9IFwKLSAgICAgIFBOR19MSUJQTkdfQlVJTERfU1RBQkxFKQotIyAgZGVmaW5lIFZTX1BSRVJFTEVBU0UgVlNfRkZfUFJFUkVMRUFTRQotIyAgZGVmaW5lIFZTX1BBVENIRUQgMAorI2lmIGRlZmluZWQoUE5HX0xJQlBOR19CVUlMRF9UWVBFKQorIyAgaWYgKFBOR19MSUJQTkdfQlVJTERfVFlQRSAhPSBzdGFibGUpCisjICAgIGlmKFBOR19MSUJQTkdfQlVJTERfVFlQRSA9PSBwYXRjaGVkKQorIyAgICAgIGRlZmluZSBWU19QQVRDSEVEIFZTX0ZGX1BBVENIRUQKKyMgICAgICBkZWZpbmUgVlNfUFJFUkVMRUFTRSAwCisjICAgIGVsc2UKKyMgICAgICBkZWZpbmUgVlNfUFJFUkVMRUFTRSBWU19GRl9QUkVSRUxFQVNFCisjICAgICAgZGVmaW5lIFZTX1BBVENIRUQgMAorIyAgICBlbmRpZgorIyAgZWxzZQorIyAgICBkZWZpbmUgVlNfUFJFUkVMRUFTRSAwCisjICAgIGRlZmluZSBWU19QQVRDSEVEIDAKKyMgIGVuZGlmIC8qIFBOR19MSUJQTkdfQlVJTERfVFlQRSAhPSBzdGFibGUgKi8KICNlbHNlCiAjICBkZWZpbmUgVlNfUFJFUkVMRUFTRSAwCi0jICBpZiAoUE5HX0xJQlBOR19CVUlMRF9UWVBFICYgUE5HX0xJQlBOR19CVUlMRF9QQVRDSEVEKQotIyAgICBkZWZpbmUgVlNfUEFUQ0hFRCBWU19GRl9QQVRDSEVECi0jICBlbHNlCi0jICAgIGRlZmluZSBWU19QQVRDSEVEIDAKLSMgIGVuZGlmCi0jZW5kaWYKKyMgIGRlZmluZSBWU19QQVRDSEVEIDAKKyNlbmRpZiAvKiBQTkdfTElCUE5HX0JVSUxEX1RZUEUgKi8KIAogVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPIAogRklMRVZFUlNJT04gUE5HX0xJQlBOR19WRVJfTUFKT1IsIFBOR19MSUJQTkdfVkVSX01JTk9SLCBQTkdfTElCUE5HX1ZFUl9SRUxFQVNFLCBQTkdfTElCUE5HX1ZFUl9CVUlMRApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvbXN2Yy9wbmczMm1zLmRlZiBiL3Byb2plY3RzL21zdmMvcG5nMzJtcy5kZWYKaW5kZXggYTVjNDFmOS4uNjk5Njg1MSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvbXN2Yy9wbmczMm1zLmRlZgorKysgYi9wcm9qZWN0cy9tc3ZjL3BuZzMybXMuZGVmCkBAIC02LDcgKzYsNyBAQAogREVTQ1JJUFRJT04gIlBORyBpbWFnZSBjb21wcmVzc2lvbiBsaWJyYXJ5IGZvciBXaW5kb3dzIgogCiBFWFBPUlRTCi07VmVyc2lvbiAxLjAuOWJldGExMAorO1ZlcnNpb24gMS4wLjliZXRhMgogICBwbmdfYnVpbGRfZ3JheXNjYWxlX3BhbGV0dGUgIEAxCiAgIHBuZ19jaGVja19zaWcgICAgICAgIEAyCiAgIHBuZ19jaHVua19lcnJvciAgICAgIEAzCkBAIC0xNzYsOCArMTc2LDMgQEAKICAgcG5nX3dyaXRlX2luaXRfMiAgICBAMTY3CiAgIHBuZ19hY2Nlc3NfdmVyc2lvbl9udW1iZXIgIEAxNjgKIDsgIHBuZ19zaWdfYnl0ZXMgICAgQDE2OQotOyAgcG5nX2xpYnBuZ192ZXIgICAgQDE3MAotICBwbmdfaW5pdF9pbyAgICBAMTcxCi0gIHBuZ19jb252ZXJ0X3RvX3JmYzExMjMgICAgIEAxNzIKLSAgcG5nX3NldF9pbnZhbGlkICBAMTczCi0gIHBuZ19tbXhfc3VwcG9ydCAgQDE3NApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvd2luY2UvUkVBRE1FRS5XQ0UgYi9wcm9qZWN0cy93aW5jZS9SRUFETUVFLldDRQppbmRleCAxMjljNTE3Li5lY2ZlZTU0IDEwMDY0NAotLS0gYS9wcm9qZWN0cy93aW5jZS9SRUFETUVFLldDRQorKysgYi9wcm9qZWN0cy93aW5jZS9SRUFETUVFLldDRQpAQCAtOCw5ICs4LDkgQEAKIAogSW50cm9kdWN0aW9uCiA9PT09PT09PT09PT0KLVRoaXMgaXMgbGlicG5nIDEuMC45YmV0YTEwIHBvcnRlZCB0byBXaW5kb3dzQ0UgMi4wIGFuZCAyLjExLgotbGlicG5nIDEuMC45YmV0YTEwIGlzIGEgUE5HIHJlZmVyZW5jZSBsaWJyYXJ5LgotU2VlIFJFQURNRSwgYSBkb2N1bWVudCBvZiBvcmlnaW5hbCBsaWJwbmcgMS4wLjliZXRhMTAuCitUaGlzIGlzIGxpYnBuZyAxLjAuOWJldGEyIHBvcnRlZCB0byBXaW5kb3dzQ0UgMi4wIGFuZCAyLjExLgorbGlicG5nIDEuMC45YmV0YTIgaXMgYSBQTkcgcmVmZXJlbmNlIGxpYnJhcnkuCitTZWUgUkVBRE1FLCBhIGRvY3VtZW50IG9mIG9yaWdpbmFsIGxpYnBuZyAxLjAuOWJldGEyLgogCiB6bGliIGZvciBXaW5kb3dzQ0UKID09PT09PT09PT09PT09PT09PQpAQCAtMjMsNyArMjMsNyBAQAogd2FycmFudHkuICBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwogYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KIAotU2VlIFJFQURNRSBhbmQgTElDRU5TRSwgZG9jdW1lbnRzIG9mIG9yaWdpbmFsIGxpYnBuZyAxLjAuOWJldGExMCwgZm9yIGNvbmRpdGlvbnMKK1NlZSBSRUFETUUgYW5kIExJQ0VOU0UsIGRvY3VtZW50cyBvZiBvcmlnaW5hbCBsaWJwbmcgMS4wLjliZXRhMiwgZm9yIGNvbmRpdGlvbnMKIG9mIHVzZSBhbmQgZGlzdHJpYnV0aW9uLgogCiBGaWxlcwpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvd2luY2UvUkVBRE1FSi5XQ0UgYi9wcm9qZWN0cy93aW5jZS9SRUFETUVKLldDRQppbmRleCA0MmM3NGEzLi5kOTRjOWQ3IDEwMDY0NAotLS0gYS9wcm9qZWN0cy93aW5jZS9SRUFETUVKLldDRQorKysgYi9wcm9qZWN0cy93aW5jZS9SRUFETUVKLldDRQpAQCAtMjQsNyArMjQsNyBAQAoggsmCyILBgr2CooKpgsiC6ZTtilGCyYLCgqKCxILggUGN7I7SgUGUepV6jtKBQYK7gsyRvJeYl3CO0ojIik+CzJBslaiBQQogkmORzILJkNOUQ4LwgsaC6YtglrGCzYLIgqKC4ILMgsaCtYLcgreBQgogCi2Cu4LMkbyBQYKxgsyDXIN0g2eDRYNGg0GCzJeYl3CP8IyPgsmCwoKigsSCzYFBjLSUxYLFgqCC6SBsaWJwbmcgMS4wLjliZXRhMTCCyQorgruCzJG8gUGCsYLMg1yDdINng0WDRoNBgsyXmJdwj/CMj4LJgsKCooLEgs2BQYy0lMWCxYKggukgbGlicG5nIDEuMC45YmV0YTKCyQogj4CLkoK3gumC4ILMgsaCtYLcgreBQo/agrWCrYLNgUGVdJGugswgUkVBRE1FLExJQ0VOU0UggvCCqJPHgt2CrYK+grOCooFCCiAKII77mF6T4JdlCmRpZmYgLS1naXQgYS9wcm9qZWN0cy93aW5jZS9ncmVwIGIvcHJvamVjdHMvd2luY2UvZ3JlcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5ZGUyOS4uMDAwMDAwMAotLS0gYS9wcm9qZWN0cy93aW5jZS9ncmVwCisrKyAvZGV2L251bGwKZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL2xwbmdjZS5kc3AgYi9wcm9qZWN0cy93aW5jZS9scG5nY2UuZHNwCmluZGV4IDdhMjRiY2YuLmIzYTBiM2QgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL3dpbmNlL2xwbmdjZS5kc3AKKysrIGIvcHJvamVjdHMvd2luY2UvbHBuZ2NlLmRzcApAQCAtNTY5LDYgKzU2OSw3IEBACiAKIERFUF9DUFBfUE5HX0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR19DPVwKQEAgLTU4Miw2ICs1ODMsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HX0M9XApAQCAtNTk0LDYgKzU5Niw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdfQz1cCkBAIC02MDQsNiArNjA3LDcgQEAKIAogREVQX0NQUF9QTkdfQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HX0M9XApAQCAtNjE1LDYgKzYxOSw3IEBACiAKIERFUF9DUFBfUE5HX0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR19DPVwKQEAgLTYyNiw2ICs2MzEsNyBAQAogCiBERVBfQ1BQX1BOR19DPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdfQz1cCkBAIC02MzcsNiArNjQzLDcgQEAKIAogREVQX0NQUF9QTkdfQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HX0M9XApAQCAtNjQ4LDYgKzY1NSw3IEBACiAKIERFUF9DUFBfUE5HX0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR19DPVwKQEAgLTY1OSw2ICs2NjcsNyBAQAogCiBERVBfQ1BQX1BOR19DPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdfQz1cCkBAIC02NzAsNiArNjc5LDcgQEAKIAogREVQX0NQUF9QTkdfQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HX0M9XApAQCAtNjgxLDYgKzY5MSw3IEBACiAKIERFUF9DUFBfUE5HX0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR19DPVwKQEAgLTY5Miw2ICs3MDMsNyBAQAogCiBERVBfQ1BQX1BOR19DPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdfQz1cCkBAIC03MDMsNiArNzE1LDcgQEAKIAogREVQX0NQUF9QTkdfQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HX0M9XApAQCAtNzE0LDYgKzcyNyw3IEBACiAKIERFUF9DUFBfUE5HX0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR19DPVwKQEAgLTcyNSw2ICs3MzksNyBAQAogCiBERVBfQ1BQX1BOR19DPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdfQz1cCkBAIC03MzYsNiArNzUxLDcgQEAKIAogREVQX0NQUF9QTkdfQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HX0M9XApAQCAtNzU4LDYgKzc3NCw3IEBACiAKIERFUF9DUFBfUE5HRVI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0VSPVwKQEAgLTc3MSw2ICs3ODgsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HRVI9XApAQCAtNzgzLDYgKzgwMSw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdFUj1cCkBAIC03OTMsNiArODEyLDcgQEAKIAogREVQX0NQUF9QTkdFUj1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HRVI9XApAQCAtODA0LDYgKzgyNCw3IEBACiAKIERFUF9DUFBfUE5HRVI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0VSPVwKQEAgLTgxNSw2ICs4MzYsNyBAQAogCiBERVBfQ1BQX1BOR0VSPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdFUj1cCkBAIC04MjYsNiArODQ4LDcgQEAKIAogREVQX0NQUF9QTkdFUj1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HRVI9XApAQCAtODM3LDYgKzg2MCw3IEBACiAKIERFUF9DUFBfUE5HRVI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0VSPVwKQEAgLTg0OCw2ICs4NzIsNyBAQAogCiBERVBfQ1BQX1BOR0VSPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdFUj1cCkBAIC04NTksNiArODg0LDcgQEAKIAogREVQX0NQUF9QTkdFUj1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HRVI9XApAQCAtODcwLDYgKzg5Niw3IEBACiAKIERFUF9DUFBfUE5HRVI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0VSPVwKQEAgLTg4MSw2ICs5MDgsNyBAQAogCiBERVBfQ1BQX1BOR0VSPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdFUj1cCkBAIC04OTIsNiArOTIwLDcgQEAKIAogREVQX0NQUF9QTkdFUj1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HRVI9XApAQCAtOTAzLDYgKzkzMiw3IEBACiAKIERFUF9DUFBfUE5HRVI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0VSPVwKQEAgLTkxNCw2ICs5NDQsNyBAQAogCiBERVBfQ1BQX1BOR0VSPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdFUj1cCkBAIC05MjUsNiArOTU2LDcgQEAKIAogREVQX0NQUF9QTkdFUj1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HRVI9XApAQCAtOTQzLDYgKzk3NSw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTk1Niw2ICs5ODksNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0M9XApAQCAtOTY4LDYgKzEwMDIsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0M9XApAQCAtOTc4LDYgKzEwMTMsNyBAQAogCiBERVBfQ1BQX1BOR0dDPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdHQz1cCkBAIC05ODksNiArMTAyNSw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTEwMDAsNiArMTAzNyw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTEwMTEsNiArMTA0OSw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTEwMjIsNiArMTA2MSw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTEwMzMsNiArMTA3Myw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTEwNDQsNiArMTA4NSw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTEwNTUsNiArMTA5Nyw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTEwNjYsNiArMTEwOSw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTEwNzcsNiArMTEyMSw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTEwODgsNiArMTEzMyw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTEwOTksNiArMTE0NSw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTExMTAsNiArMTE1Nyw3IEBACiAKIERFUF9DUFBfUE5HR0M9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dDPVwKQEAgLTExMjgsNiArMTE3Niw3IEBACiAKIERFUF9DUFBfUE5HR0U9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR0dFPVwKQEAgLTExNDEsNiArMTE5MCw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdHRT1cCkBAIC0xMTUzLDYgKzEyMDMsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTE2Myw2ICsxMjE0LDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTE3NCw2ICsxMjI2LDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTE4NSw2ICsxMjM4LDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTE5Niw2ICsxMjUwLDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTIwNyw2ICsxMjYyLDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTIxOCw2ICsxMjc0LDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTIyOSw2ICsxMjg2LDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTI0MCw2ICsxMjk4LDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTI1MSw2ICsxMzEwLDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTI2Miw2ICsxMzIyLDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTI3Myw2ICsxMzM0LDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTI4NCw2ICsxMzQ2LDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTI5NSw2ICsxMzU4LDcgQEAKIAogREVQX0NQUF9QTkdHRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HR0U9XApAQCAtMTMxMyw2ICsxMzc3LDcgQEAKIAogREVQX0NQUF9QTkdNRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HTUU9XApAQCAtMTMyNiw2ICsxMzkxLDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR01FPVwKQEAgLTEzMzgsNiArMTQwNCw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xMzQ4LDYgKzE0MTUsNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xMzU5LDYgKzE0MjcsNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xMzcwLDYgKzE0MzksNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xMzgxLDYgKzE0NTEsNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xMzkyLDYgKzE0NjMsNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xNDAzLDYgKzE0NzUsNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xNDE0LDYgKzE0ODcsNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xNDI1LDYgKzE0OTksNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xNDM2LDYgKzE1MTEsNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xNDQ3LDYgKzE1MjMsNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xNDU4LDYgKzE1MzUsNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xNDY5LDYgKzE1NDcsNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xNDgwLDYgKzE1NTksNyBAQAogCiBERVBfQ1BQX1BOR01FPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdNRT1cCkBAIC0xNDk4LDYgKzE1NzgsNyBAQAogCiBERVBfQ1BQX1BOR1BSPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdQUj1cCkBAIC0xNTExLDYgKzE1OTIsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUFI9XApAQCAtMTUyMyw2ICsxNjA1LDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE1MzMsNiArMTYxNiw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE1NDQsNiArMTYyOCw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE1NTUsNiArMTY0MCw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE1NjYsNiArMTY1Miw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE1NzcsNiArMTY2NCw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE1ODgsNiArMTY3Niw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE1OTksNiArMTY4OCw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE2MTAsNiArMTcwMCw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE2MjEsNiArMTcxMiw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE2MzIsNiArMTcyNCw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE2NDMsNiArMTczNiw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE2NTQsNiArMTc0OCw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE2NjUsNiArMTc2MCw3IEBACiAKIERFUF9DUFBfUE5HUFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1BSPVwKQEAgLTE2ODMsNiArMTc3OSw3IEBACiAKIERFUF9DUFBfUE5HUkU9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JFPVwKQEAgLTE2OTYsNiArMTc5Myw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSRT1cCkBAIC0xNzA4LDYgKzE4MDYsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTcxOCw2ICsxODE3LDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTcyOSw2ICsxODI5LDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTc0MCw2ICsxODQxLDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTc1MSw2ICsxODUzLDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTc2Miw2ICsxODY1LDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTc3Myw2ICsxODc3LDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTc4NCw2ICsxODg5LDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTc5NSw2ICsxOTAxLDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTgwNiw2ICsxOTEzLDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTgxNyw2ICsxOTI1LDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTgyOCw2ICsxOTM3LDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTgzOSw2ICsxOTQ5LDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTg1MCw2ICsxOTYxLDcgQEAKIAogREVQX0NQUF9QTkdSRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkU9XApAQCAtMTg2OCw2ICsxOTgwLDcgQEAKIAogREVQX0NQUF9QTkdSST1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUkk9XApAQCAtMTg4MSw2ICsxOTk0LDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JJPVwKQEAgLTE4OTMsNiArMjAwNyw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0xOTAzLDYgKzIwMTgsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0xOTE0LDYgKzIwMzAsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0xOTI1LDYgKzIwNDIsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0xOTM2LDYgKzIwNTQsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0xOTQ3LDYgKzIwNjYsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0xOTU4LDYgKzIwNzgsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0xOTY5LDYgKzIwOTAsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0xOTgwLDYgKzIxMDIsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0xOTkxLDYgKzIxMTQsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0yMDAyLDYgKzIxMjYsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0yMDEzLDYgKzIxMzgsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0yMDI0LDYgKzIxNTAsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0yMDM1LDYgKzIxNjIsNyBAQAogCiBERVBfQ1BQX1BOR1JJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSST1cCkBAIC0yMDUzLDYgKzIxODEsNyBAQAogCiBERVBfQ1BQX1BOR1JUPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSVD1cCkBAIC0yMDY2LDYgKzIxOTUsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlQ9XApAQCAtMjA3OCw2ICsyMjA4LDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIwODgsNiArMjIxOSw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIwOTksNiArMjIzMSw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIxMTAsNiArMjI0Myw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIxMjEsNiArMjI1NSw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIxMzIsNiArMjI2Nyw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIxNDMsNiArMjI3OSw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIxNTQsNiArMjI5MSw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIxNjUsNiArMjMwMyw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIxNzYsNiArMjMxNSw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIxODcsNiArMjMyNyw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIxOTgsNiArMjMzOSw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIyMDksNiArMjM1MSw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIyMjAsNiArMjM2Myw3IEBACiAKIERFUF9DUFBfUE5HUlQ9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JUPVwKQEAgLTIyMzgsNiArMjM4Miw3IEBACiAKIERFUF9DUFBfUE5HUlU9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1JVPVwKQEAgLTIyNTEsNiArMjM5Niw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdSVT1cCkBAIC0yMjYzLDYgKzI0MDksNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjI3Myw2ICsyNDIwLDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjI4NCw2ICsyNDMyLDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjI5NSw2ICsyNDQ0LDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjMwNiw2ICsyNDU2LDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjMxNyw2ICsyNDY4LDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjMyOCw2ICsyNDgwLDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjMzOSw2ICsyNDkyLDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjM1MCw2ICsyNTA0LDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjM2MSw2ICsyNTE2LDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjM3Miw2ICsyNTI4LDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjM4Myw2ICsyNTQwLDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjM5NCw2ICsyNTUyLDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjQwNSw2ICsyNTY0LDcgQEAKIAogREVQX0NQUF9QTkdSVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HUlU9XApAQCAtMjQyMyw2ICsyNTgzLDcgQEAKIAogREVQX0NQUF9QTkdTRT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HU0U9XApAQCAtMjQzNiw2ICsyNTk3LDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1NFPVwKQEAgLTI0NDgsNiArMjYxMCw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNDU4LDYgKzI2MjEsNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNDY5LDYgKzI2MzMsNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNDgwLDYgKzI2NDUsNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNDkxLDYgKzI2NTcsNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNTAyLDYgKzI2NjksNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNTEzLDYgKzI2ODEsNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNTI0LDYgKzI2OTMsNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNTM1LDYgKzI3MDUsNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNTQ2LDYgKzI3MTcsNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNTU3LDYgKzI3MjksNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNTY4LDYgKzI3NDEsNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNTc5LDYgKzI3NTMsNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNTkwLDYgKzI3NjUsNyBAQAogCiBERVBfQ1BQX1BOR1NFPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdTRT1cCkBAIC0yNjA4LDYgKzI3ODQsNyBAQAogCiBERVBfQ1BQX1BOR1RSPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdUUj1cCkBAIC0yNjIxLDYgKzI3OTgsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVFI9XApAQCAtMjYzMyw2ICsyODExLDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI2NDMsNiArMjgyMiw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI2NTQsNiArMjgzNCw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI2NjUsNiArMjg0Niw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI2NzYsNiArMjg1OCw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI2ODcsNiArMjg3MCw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI2OTgsNiArMjg4Miw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI3MDksNiArMjg5NCw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI3MjAsNiArMjkwNiw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI3MzEsNiArMjkxOCw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI3NDIsNiArMjkzMCw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI3NTMsNiArMjk0Miw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI3NjQsNiArMjk1NCw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI3NzUsNiArMjk2Niw3IEBACiAKIERFUF9DUFBfUE5HVFI9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RSPVwKQEAgLTI3OTMsNiArMjk4NSw3IEBACiAKIERFUF9DUFBfUE5HVkM9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1ZDPVwKQEAgLTI4MDYsNiArMjk5OSw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdWQz1cCkBAIC0yODE4LDYgKzMwMTIsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjgyOCw2ICszMDIzLDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjgzOSw2ICszMDM1LDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjg1MCw2ICszMDQ3LDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjg2MSw2ICszMDU5LDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjg3Miw2ICszMDcxLDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjg4Myw2ICszMDgzLDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjg5NCw2ICszMDk1LDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjkwNSw2ICszMTA3LDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjkxNiw2ICszMTE5LDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjkyNyw2ICszMTMxLDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjkzOCw2ICszMTQzLDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjk0OSw2ICszMTU1LDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjk2MCw2ICszMTY3LDcgQEAKIAogREVQX0NQUF9QTkdWQz1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVkM9XApAQCAtMjk3OCw2ICszMTg2LDcgQEAKIAogREVQX0NQUF9QTkdXST1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV0k9XApAQCAtMjk5MSw2ICszMjAwLDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dJPVwKQEAgLTMwMDMsNiArMzIxMyw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMDEzLDYgKzMyMjQsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMDI0LDYgKzMyMzYsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMDM1LDYgKzMyNDgsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMDQ2LDYgKzMyNjAsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMDU3LDYgKzMyNzIsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMDY4LDYgKzMyODQsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMDc5LDYgKzMyOTYsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMDkwLDYgKzMzMDgsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMTAxLDYgKzMzMjAsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMTEyLDYgKzMzMzIsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMTIzLDYgKzMzNDQsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMTM0LDYgKzMzNTYsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMTQ1LDYgKzMzNjgsNyBAQAogCiBERVBfQ1BQX1BOR1dJPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXST1cCkBAIC0zMTYzLDYgKzMzODcsNyBAQAogCiBERVBfQ1BQX1BOR1dSPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXUj1cCkBAIC0zMTc2LDYgKzM0MDEsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1I9XApAQCAtMzE4OCw2ICszNDE0LDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMxOTgsNiArMzQyNSw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMyMDksNiArMzQzNyw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMyMjAsNiArMzQ0OSw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMyMzEsNiArMzQ2MSw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMyNDIsNiArMzQ3Myw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMyNTMsNiArMzQ4NSw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMyNjQsNiArMzQ5Nyw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMyNzUsNiArMzUwOSw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMyODYsNiArMzUyMSw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMyOTcsNiArMzUzMyw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMzMDgsNiArMzU0NSw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMzMTksNiArMzU1Nyw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMzMzAsNiArMzU2OSw3IEBACiAKIERFUF9DUFBfUE5HV1I9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dSPVwKQEAgLTMzNDgsNiArMzU4OCw3IEBACiAKIERFUF9DUFBfUE5HV1Q9XAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dUPVwKQEAgLTMzNjEsNiArMzYwMiw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVD1cCkBAIC0zMzczLDYgKzM2MTUsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzM4Myw2ICszNjI2LDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzM5NCw2ICszNjM4LDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzQwNSw2ICszNjUwLDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzQxNiw2ICszNjYyLDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzQyNyw2ICszNjc0LDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzQzOCw2ICszNjg2LDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzQ0OSw2ICszNjk4LDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzQ2MCw2ICszNzEwLDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzQ3MSw2ICszNzIyLDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzQ4Miw2ICszNzM0LDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzQ5Myw2ICszNzQ2LDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzUwNCw2ICszNzU4LDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzUxNSw2ICszNzcwLDcgQEAKIAogREVQX0NQUF9QTkdXVD1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1Q9XApAQCAtMzUzMyw2ICszNzg5LDcgQEAKIAogREVQX0NQUF9QTkdXVT1cCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HV1U9XApAQCAtMzU0Niw2ICszODAzLDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1dVPVwKQEAgLTM1NTgsNiArMzgxNiw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNTY4LDYgKzM4MjcsNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNTc5LDYgKzM4MzksNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNTkwLDYgKzM4NTEsNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNjAxLDYgKzM4NjMsNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNjEyLDYgKzM4NzUsNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNjIzLDYgKzM4ODcsNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNjM0LDYgKzM4OTksNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNjQ1LDYgKzM5MTEsNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNjU2LDYgKzM5MjMsNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNjY3LDYgKzM5MzUsNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNjc4LDYgKzM5NDcsNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNjg5LDYgKzM5NTksNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNzAwLDYgKzM5NzEsNyBAQAogCiBERVBfQ1BQX1BOR1dVPVwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdXVT1cCkBAIC0zNzIwLDYgKzM5OTIsMTAgQEAKICMgRW5kIFNvdXJjZSBGaWxlCiAjIEJlZ2luIFNvdXJjZSBGaWxlCiAKK1NPVVJDRT0uLlwuLlxwbmdhc21yZC5oCisjIEVuZCBTb3VyY2UgRmlsZQorIyBCZWdpbiBTb3VyY2UgRmlsZQorCiBTT1VSQ0U9Li5cLi5ccG5nY29uZi5oCiAjIEVuZCBTb3VyY2UgRmlsZQogIyBFbmQgR3JvdXAKZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL3BuZzMyY2UuZGVmIGIvcHJvamVjdHMvd2luY2UvcG5nMzJjZS5kZWYKaW5kZXggYzBhZGYzZS4uYzllZGRjNSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvd2luY2UvcG5nMzJjZS5kZWYKKysrIGIvcHJvamVjdHMvd2luY2UvcG5nMzJjZS5kZWYKQEAgLTUsNyArNSw3IEBACiBMSUJSQVJZIGxwbmdjZQogCiBFWFBPUlRTCi07VmVyc2lvbiAxLjAuOWJldGExMAorO1ZlcnNpb24gMS4wLjliZXRhMgogICBwbmdfYnVpbGRfZ3JheXNjYWxlX3BhbGV0dGUgIEAxCiAgIHBuZ19jaGVja19zaWcgICAgICAgIEAyCiAgIHBuZ19jaHVua19lcnJvciAgICAgIEAzCkBAIC0xNzgsNSArMTc4LDMgQEAKICAgcG5nX2xpYnBuZ192ZXIgICAgQDE3MAogICBwbmdfaW5pdF9pbyAgICBAMTcxCiAgIHBuZ19jb252ZXJ0X3RvX3JmYzExMjMgICAgIEAxNzIKLSAgcG5nX3NldF9pbnZhbGlkICBAMTczCi0gIHBuZ19tbXhfc3VwcG9ydCAgQDE3NApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvd2luY2UvcG5ndGVzdC5kc3AgYi9wcm9qZWN0cy93aW5jZS9wbmd0ZXN0LmRzcAppbmRleCA1YWRlNTAwLi40ZDFkYTJkIDEwMDY0NAotLS0gYS9wcm9qZWN0cy93aW5jZS9wbmd0ZXN0LmRzcAorKysgYi9wcm9qZWN0cy93aW5jZS9wbmd0ZXN0LmRzcApAQCAtNTcxLDYgKzU3MSw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdURT1cCkBAIC01ODMsNiArNTg0LDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RFPVwKQEAgLTU5NSw2ICs1OTcsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVEU9XApAQCAtNjA3LDYgKzYxMCw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdURT1cCkBAIC02MTksNiArNjIzLDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RFPVwKQEAgLTYzMSw2ICs2MzYsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVEU9XApAQCAtNjQzLDYgKzY0OSw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdURT1cCkBAIC02NTUsNiArNjYyLDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RFPVwKQEAgLTY2Nyw2ICs2NzUsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVEU9XApAQCAtNjc5LDYgKzY4OCw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdURT1cCkBAIC02OTEsNiArNzAxLDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RFPVwKQEAgLTcwMyw2ICs3MTQsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVEU9XApAQCAtNzE1LDYgKzcyNyw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdURT1cCkBAIC03MjcsNiArNzQwLDcgQEAKIAkiLi5cLi5cLi5cemxpYlx6Y29uZi5oIlwKIAkiLi5cLi5cLi5cemxpYlx6bGliLmgiXAogCSIuLlwuLlxwbmcuaCJcCisJIi4uXC4uXHBuZ2FzbXJkLmgiXAogCSIuLlwuLlxwbmdjb25mLmgiXAogCQogTk9ERVBfQ1BQX1BOR1RFPVwKQEAgLTczOSw2ICs3NTMsNyBAQAogCSIuLlwuLlwuLlx6bGliXHpjb25mLmgiXAogCSIuLlwuLlwuLlx6bGliXHpsaWIuaCJcCiAJIi4uXC4uXHBuZy5oIlwKKwkiLi5cLi5ccG5nYXNtcmQuaCJcCiAJIi4uXC4uXHBuZ2NvbmYuaCJcCiAJCiBOT0RFUF9DUFBfUE5HVEU9XApAQCAtNzUxLDYgKzc2Niw3IEBACiAJIi4uXC4uXC4uXHpsaWJcemNvbmYuaCJcCiAJIi4uXC4uXC4uXHpsaWJcemxpYi5oIlwKIAkiLi5cLi5ccG5nLmgiXAorCSIuLlwuLlxwbmdhc21yZC5oIlwKIAkiLi5cLi5ccG5nY29uZi5oIlwKIAkKIE5PREVQX0NQUF9QTkdURT1cCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmFjb3JuIGIvc2NyaXB0cy9tYWtlZmlsZS5hY29ybgppbmRleCA0NzBjZjg5Li41MDRhMTdmIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmFjb3JuCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuYWNvcm4KQEAgLTIsNDAgKzIsNDAgQEAKIAogCiAjIFRvb2xmbGFnczoKLUNDZmxhZ3MgPSAtYyAtZGVwZW5kICFEZXBlbmQgLUlDOixabGliOiAtZyAtdGhyb3diYWNrICAtRFJJU0NPUyAgLWZuYWgKK0NDZmxhZ3MgPSAtYyAtZGVwZW5kICFEZXBlbmQgLUlDOixabGliOiAtZyAtdGhyb3diYWNrICAtRFJJU0NPUyAgLWZuYWggCiBDKytmbGFncyA9IC1jIC1kZXBlbmQgIURlcGVuZCAtSUM6IC10aHJvd2JhY2sKIExpbmtmbGFncyA9IC1haWYgLWMrKyAtbyAkQAogT2JqQXNtZmxhZ3MgPSAtdGhyb3diYWNrIC1Ob0NhY2hlIC1kZXBlbmQgIURlcGVuZAogQ01IR2ZsYWdzID0gCi1MaWJGaWxlZmxhZ3MgPSAtYyAtbCAtbyAkQAorTGliRmlsZWZsYWdzID0gLWMgLWwgLW8gJEAgCiBTcXVlZXplZmxhZ3MgPSAtbyAkQAogCiAKICMgRmluYWwgdGFyZ2V0czoKIEAubGlicG5nLWxpYjogICBALm8ucG5nIEAuby5wbmdlcnJvciBALm8ucG5ncmlvIEAuby5wbmd3aW8gQC5vLnBuZ21lbSBcCiAJQC5vLnBuZ3ByZWFkIEAuby5wbmdzZXQgQC5vLnBuZ2dldCBALm8ucG5ncmVhZCBALm8ucG5ncnRyYW4gXAotCUAuby5wbmdydXRpbCBALm8ucG5ndHJhbnMgQC5vLnBuZ3dyaXRlIEAuby5wbmd3dHJhbiBALm8ucG5nd3V0aWwKKwlALm8ucG5ncnV0aWwgQC5vLnBuZ3RyYW5zIEAuby5wbmd3cml0ZSBALm8ucG5nd3RyYW4gQC5vLnBuZ3d1dGlsIAogCUxpYkZpbGUgJChMaWJGaWxlZmxhZ3MpIEAuby5wbmcgQC5vLnBuZ2Vycm9yIEAuby5wbmdyaW8gQC5vLnBuZ3J0cmFuIFwKIAlALm8ucG5nbWVtIEAuby5wbmdwcmVhZCBALm8ucG5nc2V0IEAuby5wbmdnZXQgQC5vLnBuZ3JlYWQgQC5vLnBuZ3dpbyBcCi0JQC5vLnBuZ3J1dGlsIEAuby5wbmd0cmFucyAgQC5vLnBuZ3dyaXRlIEAuby5wbmd3dHJhbiBALm8ucG5nd3V0aWwKKwlALm8ucG5ncnV0aWwgQC5vLnBuZ3RyYW5zICBALm8ucG5nd3JpdGUgQC5vLnBuZ3d0cmFuIEAuby5wbmd3dXRpbCAKIEAubW0tbGlicG5nLWxpYjogICBALm1tLnBuZyBALm1tLnBuZ2Vycm9yIEAubW0ucG5ncmlvIEAubW0ucG5nd2lvIEAubW0ucG5nbWVtIFwKIAlALm1tLnBuZ3ByZWFkIEAubW0ucG5nc2V0IEAubW0ucG5nZ2V0IEAubW0ucG5ncmVhZCBALm1tLnBuZ3J0cmFuIFwKLQlALm1tLnBuZ3J1dGlsIEAubW0ucG5ndHJhbnMgQC5tbS5wbmd3cml0ZSBALm1tLnBuZ3d0cmFuIEAubW0ucG5nd3V0aWwKKwlALm1tLnBuZ3J1dGlsIEAubW0ucG5ndHJhbnMgQC5tbS5wbmd3cml0ZSBALm1tLnBuZ3d0cmFuIEAubW0ucG5nd3V0aWwgCiAJTGliRmlsZSAkKExpYkZpbGVmbGFncykgQC5tbS5wbmcgQC5tbS5wbmdlcnJvciBALm1tLnBuZ3JpbyBcCiAJQC5tbS5wbmd3aW8gQC5tbS5wbmdtZW0gQC5tbS5wbmdwcmVhZCBALm1tLnBuZ3NldCBALm1tLnBuZ2dldCBcCiAJQC5tbS5wbmdyZWFkIEAubW0ucG5ncnRyYW4gQC5tbS5wbmdydXRpbCBALm1tLnBuZ3RyYW5zIEAubW0ucG5nd3JpdGUgXAotCUAubW0ucG5nd3RyYW4gQC5tbS5wbmd3dXRpbAorCUAubW0ucG5nd3RyYW4gQC5tbS5wbmd3dXRpbCAKIAogCiAjIFVzZXItZWRpdGFibGUgZGVwZW5kZW5jaWVzOgogIyAoQykgQ29weXJpZ2h0IDE5OTcgVG9tIFRhbm5lcgotVGVzdDogQC5wbmd0ZXN0CitUZXN0OiBALnBuZ3Rlc3QgCiAJPFByZWZpeCREaXI+LnBuZ3Rlc3QKIAlAcmVtb3ZlIDxQcmVmaXgkRGlyPi5wbmd0ZXN0CiAKICNJdCB3b3VsZCBiZSBuaWNlIGlmIHlvdSBjb3VsZCBzdG9wICJtYWtlIiBsaXN0aW5nIGZyb20gaGVyZSBvbiEKLUAucG5ndGVzdDogICBALm8ucG5ndGVzdCBALmxpYnBuZy1saWIgQzpvLlN0dWJzIFpsaWI6emxpYl9saWIKLQlMaW5rICQoTGlua2ZsYWdzKSBALm8ucG5ndGVzdCBALmxpYnBuZy1saWIgQzpvLlN0dWJzIFpsaWI6emxpYl9saWIKK0AucG5ndGVzdDogICBALm8ucG5ndGVzdCBALmxpYnBuZy1saWIgQzpvLlN0dWJzIFpsaWI6emxpYl9saWIgCisJTGluayAkKExpbmtmbGFncykgQC5vLnBuZ3Rlc3QgQC5saWJwbmctbGliIEM6by5TdHVicyBabGliOnpsaWJfbGliIAogCiAuU1VGRklYRVM6IC5vIC5tbSAuYwogCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmFpeCBiL3NjcmlwdHMvbWFrZWZpbGUuYWl4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGFkODYyLi4wMDAwMDAwCi0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuYWl4CisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotIyBtYWtlZmlsZSBmb3IgbGlicG5nIHVzaW5nIGdjYyAoZ2VuZXJpYywgc3RhdGljIGxpYnJhcnkpCi0jIENvcHlyaWdodCAoQykgMTk5NSBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy4KLSMgQ29weXJpZ2h0IChDKSAyMDAwIENvc21pbiBUcnV0YQotIyBDb3B5cmlnaHQgKEMpIDIwMDAgTWFyYyBPLiBHbG9vciAoQUlYIHN1cHBvcnQgYWRkZWQsIGZyb20gbWFrZWZpbGUuZ2NjKQotIyBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLQotIyBMb2NhdGlvbiBvZiB0aGUgemxpYiBsaWJyYXJ5IGFuZCBpbmNsdWRlIGZpbGVzCi1aTElCSU5DID0gLi4vemxpYgotWkxJQkxJQiA9IC4uL3psaWIKLQotIyBDb21waWxlciwgbGlua2VyLCBsaWIgYW5kIG90aGVyIHRvb2xzCi1DQyA9IGdjYwotTEQgPSAkKENDKQotQVIgPSBhciByY3MKLVJBTkxJQiA9IHJhbmxpYgotUk0gPSBybSAtZgotCi0jIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKLSMgaGF2ZSB0byBjaGFuZ2UgaXQuCi1QTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuOWJldGExMAotUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQotCi1wcmVmaXg9L3Vzci9sb2NhbAotSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQotTElCUEFUSD0kKHByZWZpeCkvbGliCi0KLUNERUJVRyA9IC1nIC1EUE5HX0RFQlVHPTUKLUxEREVCVUcgPQotQ1JFTEVBU0UgPSAtTzIKLUxEUkVMRUFTRSA9IC1zCi1DRkxBR1MgPSAtSSQoWkxJQklOQykgLVdhbGwgJChDUkVMRUFTRSkKLUxERkxBR1MgPSAtTC4gLUwkKFpMSUJMSUIpIC1scG5nIC1seiAtbG0gJChMRFJFTEVBU0UpCi0KLSMgRmlsZSBleHRlbnNpb25zCi1PPS5vCi1BPS5hCi1FPQotCi0jIFZhcmlhYmxlcwotT0JKUyA9IHBuZyQoTykgcG5nZXJyb3IkKE8pIHBuZ2dldCQoTykgcG5nbWVtJChPKSBwbmdwcmVhZCQoTykgXAotCXBuZ3JlYWQkKE8pIHBuZ3JpbyQoTykgcG5ncnRyYW4kKE8pIHBuZ3J1dGlsJChPKSBwbmdzZXQkKE8pIFwKLQlwbmd0cmFucyQoTykgcG5nd2lvJChPKSBwbmd3cml0ZSQoTykgcG5nd3RyYW4kKE8pIHBuZ3d1dGlsJChPKQotCi0jIFRhcmdldHMKLWFsbDogbGlicG5nJChBKSBwbmd0ZXN0JChFKQotCi1saWJwbmckKEEpOiAkKE9CSlMpCi0JJChBUikgJEAgJChPQkpTKQotCSQoUkFOTElCKSAkQAotCi10ZXN0OiBwbmd0ZXN0JChFKQotCS4vcG5ndGVzdCQoRSkKLQotcG5ndGVzdCQoRSk6IHBuZ3Rlc3QkKE8pIGxpYnBuZyQoQSkKLQkkKExEKSAtbyAkQCBwbmd0ZXN0JChPKSAkKExERkxBR1MpCi0KLWluc3RhbGw6IGxpYnBuZy5hCi0JLUBpZiBbICEgLWQgJChJTkNQQVRIKSAgXTsgdGhlbiBta2RpciAkKElOQ1BBVEgpOyBmaQotCS1AaWYgWyAhIC1kICQoTElCUEFUSCkgXTsgdGhlbiBta2RpciAkKExJQlBBVEgpOyBmaQotCWNwIHBuZy5oIHBuZ2NvbmYuaCAkKElOQ1BBVEgpCi0JY2htb2QgNjQ0ICQoSU5DUEFUSCkvcG5nLmggJChJTkNQQVRIKS9wbmdjb25mLmgKLQljcCBsaWJwbmcuYSAkKExJQlBBVEgpCi0KLWNsZWFuOgotCS9iaW4vcm0gLWYgKi5vIGxpYnBuZy5hIGxpYnBuZy5zbyogcG5ndGVzdCBwbmdvdXQucG5nCi0KLXBuZyQoTyk6IHBuZy5oIHBuZ2NvbmYuaAotcG5nZXJyb3IkKE8pOiBwbmcuaCBwbmdjb25mLmgKLXBuZ2dldCQoTyk6IHBuZy5oIHBuZ2NvbmYuaAotcG5nbWVtJChPKTogcG5nLmggcG5nY29uZi5oCi1wbmdwcmVhZCQoTyk6IHBuZy5oIHBuZ2NvbmYuaAotcG5ncmVhZCQoTyk6IHBuZy5oIHBuZ2NvbmYuaAotcG5ncmlvJChPKTogcG5nLmggcG5nY29uZi5oCi1wbmdydHJhbiQoTyk6IHBuZy5oIHBuZ2NvbmYuaAotcG5ncnV0aWwkKE8pOiBwbmcuaCBwbmdjb25mLmgKLXBuZ3NldCQoTyk6IHBuZy5oIHBuZ2NvbmYuaAotcG5ndGVzdCQoTyk6IHBuZy5oIHBuZ2NvbmYuaAotcG5ndHJhbnMkKE8pOiBwbmcuaCBwbmdjb25mLmgKLXBuZ3dpbyQoTyk6IHBuZy5oIHBuZ2NvbmYuaAotcG5nd3JpdGUkKE8pOiBwbmcuaCBwbmdjb25mLmgKLXBuZ3d0cmFuJChPKTogcG5nLmggcG5nY29uZi5oCi1wbmd3dXRpbCQoTyk6IHBuZy5oIHBuZ2NvbmYuaAotCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmFtaWdhIGIvc2NyaXB0cy9tYWtlZmlsZS5hbWlnYQppbmRleCA3OWNiNDI0Li40NTg3MDg4IDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmFtaWdhCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuYW1pZ2EKQEAgLTE0LDcgKzE0LDcgQEAKICMgICAgICAgICAgU28gdXNlIFY2LjU1IG9yIHNldCBOT09QVEdPISEhISEhISEhCiBDRkxBR1M9IE5PU1RLQ0hLIFBBUk1TPVJFRyBPUFRJTUlaRSBPUFRHTyBPUFRQRUVQIE9QVElOTE9DQUwgT1BUSU5MXAogCU9QVExPT1AgT1BUUkRFUD00IE9QVERFUD00IE9QVENPTVA9NCBJTkNMVURFRElSPSQoWkxJQikgXAotCURFRklORT1QTkdfSU5URVJOQUwKKwlERUZJTkU9UE5HX0lOVEVSTkFMIAogI2xpbmtlciBmbGFncwogTERGTEFHUz0gU0QgTkQgQkFUQ0gKICNsaW5rIGxpYnMKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuYmQzMiBiL3NjcmlwdHMvbWFrZWZpbGUuYmQzMgppbmRleCA5MmE1N2FiLi5iYzdlMTkzIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmJkMzIKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5iZDMyCkBAIC0yMSw3ICsyMSw3IEBACiAKIENDPWJjYzMyCiBDRkxBR1M9IC1wcyAtTzIgLU4tIC1rLSAtZCAtci0gLXctcGFyIC13LWF1cyAtSSQoWkxJQkRJUikgXAotCS1EUE5HX05PX0dMT0JBTF9BUlJBWVMgIy1EUE5HX0RFQlVHPTUKKyAgLURQTkdfTk9fR0xPQkFMX0FSUkFZUyAjLURQTkdfREVCVUc9NQogI0xJTks9dGxpbmszMgogI0xJTks9aWxpbmszMgogTElOSz1iY2MzMgpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5iZW9zIGIvc2NyaXB0cy9tYWtlZmlsZS5iZW9zCmluZGV4IGNkOTZlNjUuLjI2MzM0ZTkgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuYmVvcworKysgYi9zY3JpcHRzL21ha2VmaWxlLmJlb3MKQEAgLTMxLDcgKzMxLDcgQEAKICMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDIuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KIFBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC45YmV0YTEwCitQTkdNSU4gPSAxLjAuOWJldGEyCiBQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCiAKICMgd2hlcmUgbWFrZSBpbnN0YWxsIHB1dHMgbGlicG5nLmEsIGxpYnBuZy5zbyosIGFuZCBwbmcuaApkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5jeWd3aW4gYi9zY3JpcHRzL21ha2VmaWxlLmN5Z3dpbgppbmRleCAzZmE1YWE1Li5mMzhkNzAxIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmN5Z3dpbgorKysgYi9zY3JpcHRzL21ha2VmaWxlLmN5Z3dpbgpAQCAtMiw3ICsyLDcgQEAKICMgICBidWlsZHMgYm90aCBkbGwgKHdpdGggaW1wb3J0IGxpYikgYW5kIHN0YXRpYyBsaWIgdmVyc2lvbnMKICMgICBvZiB0aGUgbGlicmFyeSwgYW5kIGJ1aWxkcyB0d28gY29waWVzIG9mIHBuZ3Rlc3Q6IG9uZQogIyAgIHN0YXRpY2FsbHkgbGlua2VkIGFuZCBvbmUgZHluYW1pY2FsbHkgbGlua2VkLgotIworIyAgIAogIyAgIGJhc2VkIG9uIG1ha2VmaWxlIGZvciBsaW51eC1lbGYgdy9tbXggYnk6CiAjIENvcHlyaWdodCAoQykgMTk5OC0yMDAwIEdyZWcgUm9lbG9mcwogIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIKQEAgLTEzLDcgKzEzLDcgQEAKIAogQ0M9Z2NjCiAKLSMgd2hlcmUgIm1ha2UgaW5zdGFsbCIgcHV0cyBsaWJwbmcuYSwgbGlicG5nLnNvKiwgcG5nLmgsIGFuZCBwbmdjb25mLmgKKyMgd2hlcmUgIm1ha2UgaW5zdGFsbCIgcHV0cyBsaWJwbmcuYSwgbGlicG5nLnNvKiwgcG5nLmggYW5kIHBuZ2NvbmYuaAogcHJlZml4PS91c3IKIAogIyBXaGVyZSB0aGUgemxpYiBsaWJyYXJ5IGFuZCBpbmNsdWRlIGZpbGVzIGFyZSBsb2NhdGVkCkBAIC0zMywxMyArMzMsMTIgQEAKICNDRkxBR1M9LURQTkdfVVNFX1BOR0dDQ1JEIC1JJChaTElCSU5DKSAtV2FsbCAtTzMgJChBTElHTikgLWZ1bnJvbGwtbG9vcHMgXAogIyAgICAgICAgLWZvbWl0LWZyYW1lLXBvaW50ZXIgICMgJChXQVJOTU9SRSkgLWcgLURQTkdfREVCVUc9NQogQ0ZMQUdTPS1JJChaTElCSU5DKSAtV2FsbCAtTzMgJChBTElHTikgLWZ1bnJvbGwtbG9vcHMgXAotCS1mb21pdC1mcmFtZS1wb2ludGVyCisgICAgICAgIC1mb21pdC1mcmFtZS1wb2ludGVyIAogCiAjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCiBQTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuOWJldGExMAotUE5HTUlOX0JBU0UgPSAxLjAuOQorUE5HTUlOID0gMS4wLjliZXRhMgogUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQogCiBTSEFSRURMSUI9Y3lncG5nJChQTkdNQUopLmRsbApAQCAtNjEsNyArNjAsNyBAQAogQklOUEFUSD0kKHByZWZpeCkvYmluCiBNQU5QQVRIPSQocHJlZml4KS9tYW4KIE1BTjNQQVRIPSQoTUFOUEFUSCkvbWFuMwotRE9DUEFUSD0kKHByZWZpeCkvZG9jL2xpYnBuZy0kKFBOR01JTl9CQVNFKQorRE9DUEFUSD0kKHByZWZpeCkvZG9jL2xpYnBuZy0kKFBOR01JTikKIAogT0JKUyA9IHBuZy5vIHBuZ3NldC5vIHBuZ2dldC5vIHBuZ3J1dGlsLm8gcG5ndHJhbnMubyBwbmd3dXRpbC5vIFwKIAlwbmdyZWFkLm8gcG5ncmlvLm8gcG5nd2lvLm8gcG5nd3JpdGUubyBwbmdydHJhbi5vIFwKQEAgLTg3LDE0ICs4NiwxNCBAQAogCiBhbGwtc2hhcmVkOiAkKFNIQVJFRExJQikgcG5ndGVzdCQoRVhFKQogCi1wbmdnY2NyZC5vOglwbmcuaCBwbmdjb25mLmgKK3BuZ2djY3JkLm86CXBuZy5oIHBuZ2NvbmYuaCBwbmdhc21yZC5oCiAJQGVjaG8gIiIKIAlAZWNobyAnICAgIFlvdSBjYW4gaWdub3JlIHRoZSBzaW5nbGUgImNvbnRyb2wgcmVhY2hlcyBlbmQgb2Ygbm9uLXZvaWQgZnVuY3Rpb24iJwogCUBlY2hvICcgICAgd2FybmluZyBhbmQgbXVsdGlwbGUgIjx2YXJpYWJsZT4gZGVmaW5lZCBidXQgbm90IHVzZWQiIHdhcm5pbmdzOicKIAlAZWNobyAiIgogCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtRFBOR19TVEFUSUMgLURaTElCX1NUQVRJQyAtbyAkQCAkKi5jCiAKLXBuZ2djY3JkLnBpYy5vOglwbmcuaCBwbmdjb25mLmgKK3BuZ2djY3JkLnBpYy5vOglwbmcuaCBwbmdjb25mLmggcG5nYXNtcmQuaAogCUBlY2hvICIiCiAJQGVjaG8gJyAgICBZb3UgY2FuIGlnbm9yZSB0aGUgc2luZ2xlICJjb250cm9sIHJlYWNoZXMgZW5kIG9mIG5vbi12b2lkIGZ1bmN0aW9uIicKIAlAZWNobyAnICAgIHdhcm5pbmcgYW5kIG11bHRpcGxlICI8dmFyaWFibGU+IGRlZmluZWQgYnV0IG5vdCB1c2VkIiB3YXJuaW5nczonCkBAIC0xMDksNyArMTA4LDcgQEAKIAljYXQgJDwgfCBzZWQgLWUgJzF7RztzL15cKC4qXClcKFxuXCkvRVhQT1JUUy87fTsyLC9eRVhQT1JUUy9kJyA+ICRACiAKICQoU0hBUkVETElCKTogJChPQkpTRExMKSAkKFNIQVJFRERFRikKLQkkKExEU0hBUkVEKSAtbyAkQCAkKExERVhUUkEpICQoT0JKU0RMTCkgLUwuIC1MJChaTElCTElCKSAtbHoKKwkkKExEU0hBUkVEKSAtbyAkQCAkKExERVhUUkEpICQoT0JKU0RMTCkgLUwuIC1MJChaTElCTElCKSAtbHogCiAKIHBuZ3Rlc3QkKEVYRSk6IHBuZ3Rlc3QucGljLm8gJChTSEFSRURMSUIpCiAJJChDQykgJChDRkxBR1MpICQ8ICQoTERGTEFHUykgLW8gJEAKQEAgLTEzMyw3ICsxMzIsNyBAQAogCiBpbnN0YWxsOiBpbnN0YWxsLXN0YXRpYyBpbnN0YWxsLXNoYXJlZAogCi1pbnN0YWxsLXN0YXRpYzogJChTVEFUTElCKSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1kb2NzIGluc3RhbGwtbWFuCitpbnN0YWxsLXN0YXRpYzogJChTVEFUTElCKSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1kb2NzIGluc3RhbGwtbWFuIAogCS1AaWYgWyAhIC1kICQoTElCUEFUSCkgXTsgdGhlbiBta2RpciAtcCAkKExJQlBBVEgpOyBmaQogCWluc3RhbGwgLW0gNzU1ICQoU1RBVExJQikgJChMSUJQQVRIKQogCkBAIC0xNjUsNyArMTY0LDcgQEAKIAogIyBETyBOT1QgREVMRVRFIFRISVMgTElORSAtLSBtYWtlIGRlcGVuZCBkZXBlbmRzIG9uIGl0LgogCi1wbmcubyBwbmcucGljLm86CQlwbmcuaCBwbmdjb25mLmggcG5nLmMKK3BuZy5vIHBuZy5waWMubzoJCXBuZy5oIHBuZ2NvbmYuaCBwbmcuYyBwbmdhc21yZC5oCiBwbmdlcnJvci5vIHBuZ2Vycm9yLnBpYy5vOglwbmcuaCBwbmdjb25mLmggcG5nZXJyb3IuYwogcG5ncmlvLm8gcG5ncmlvLnBpYy5vOgkJcG5nLmggcG5nY29uZi5oIHBuZ3Jpby5jCiBwbmd3aW8ubyBwbmd3aW8ucGljLm86CQlwbmcuaCBwbmdjb25mLmggcG5nd2lvLmMKQEAgLTE3NCw3ICsxNzMsNyBAQAogcG5nZ2V0Lm8gcG5nZ2V0LnBpYy5vOgkJcG5nLmggcG5nY29uZi5oIHBuZ2dldC5jCiBwbmdyZWFkLm8gcG5ncmVhZC5waWMubzoJcG5nLmggcG5nY29uZi5oIHBuZ3JlYWQuYwogcG5ncnRyYW4ubyBwbmdydHJhbi5waWMubzoJcG5nLmggcG5nY29uZi5oIHBuZ3J0cmFuLmMKLXBuZ3J1dGlsLm8gcG5ncnV0aWwucGljLm86CXBuZy5oIHBuZ2NvbmYuaCBwbmdydXRpbC5jCitwbmdydXRpbC5vIHBuZ3J1dGlsLnBpYy5vOglwbmcuaCBwbmdjb25mLmggcG5ncnV0aWwuYyBwbmdhc21yZC5oCiBwbmd0cmFucy5vIHBuZ3RyYW5zLnBpYy5vOglwbmcuaCBwbmdjb25mLmggcG5ndHJhbnMuYwogcG5nd3JpdGUubyBwbmd3cml0ZS5waWMubzoJcG5nLmggcG5nY29uZi5oIHBuZ3dyaXRlLmMKIHBuZ3d0cmFuLm8gcG5nd3RyYW4ucGljLm86CXBuZy5oIHBuZ2NvbmYuaCBwbmd3dHJhbi5jCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmRlYyBiL3NjcmlwdHMvbWFrZWZpbGUuZGVjCmluZGV4IDEzNmYwYjcuLmI1OTBjNDAgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuZGVjCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuZGVjCkBAIC0xNyw3ICsxNyw3IEBACiAjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCiBQTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuOWJldGExMAorUE5HTUlOID0gMS4wLjliZXRhMgogUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQogCiBDQz1jYwpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5nY21teCBiL3NjcmlwdHMvbWFrZWZpbGUuZ2NtbXgKaW5kZXggMDAwMWY1Ny4uNDU4YWYwMiAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5nY21teAorKysgYi9zY3JpcHRzL21ha2VmaWxlLmdjbW14CkBAIC0xLDE3ICsxLDEzIEBACiAjIG1ha2VmaWxlIGZvciBsaWJwbmcgb24gTGludXggRUxGIHdpdGggZ2NjIHVzaW5nIE1NWCBhc3NlbWJsZXIgY29kZQogIyBDb3B5cmlnaHQgMTk5Ni0xOTk3IEFuZHJlYXMgRGlsZ2VyCi0jIENvcHlyaWdodCAxOTk4LTIwMDEgR3JlZyBSb2Vsb2ZzCisjIENvcHlyaWdodCAxOTk4LTIwMDAgR3JlZyBSb2Vsb2ZzCiAjIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogCiAjIENBVVRJT046IERvIG5vdCB1c2UgdGhpcyBtYWtlZmlsZSB3aXRoIGdjYyB2ZXJzaW9ucyAyLjcuMi4yIGFuZCBlYXJsaWVyLgogCi0jIE5PVEU6ICBXaGVuIHRlc3RpbmcgTU1YIHBlcmZvcm1hbmNlIG9uIGEgbXVsdGl0YXNraW5nIHN5c3RlbSwgbWFrZSBzdXJlCi0jICAgICAgICB0aGVyZSBhcmUgbm8gZmxvYXRpbmctcG9pbnQgcHJvZ3JhbXMgKGUuZy4sIFNFVElASG9tZSkgcnVubmluZyBpbgotIyAgICAgICAgdGhlIGJhY2tncm91bmQhICBDb250ZXh0IHN3aXRjaGVzIGJldHdlZW4gTU1YIGFuZCBGUFUgYXJlIGV4cGVuc2l2ZS4KLQogQ0M9Z2NjCiAKLSMgd2hlcmUgIm1ha2UgaW5zdGFsbCIgcHV0cyBsaWJwbmcuYSwgbGlicG5nLnNvKiwgcG5nLmgsIGFuZCBwbmdjb25mLmgKKyMgd2hlcmUgIm1ha2UgaW5zdGFsbCIgcHV0cyBsaWJwbmcuYSwgbGlicG5nLnNvKiwgcG5nLmggYW5kIHBuZ2NvbmYuaAogcHJlZml4PS91c3IvbG9jYWwKIAogIyBXaGVyZSB0aGUgemxpYiBsaWJyYXJ5IGFuZCBpbmNsdWRlIGZpbGVzIGFyZSBsb2NhdGVkCkBAIC0zMCwxOCArMjYsOCBAQAogCiAjIGZvciBwZ2NjIHZlcnNpb24gMi45NS4xLCAtTzMgaXMgYnVnZ3k7IGRvbid0IHVzZSBpdC4KIAotIyMjIGZvciBnZW5lcmljIGdjYzoKIENGTEFHUz0tRFBOR19VU0VfUE5HR0NDUkQgLUkkKFpMSUJJTkMpIC1XYWxsIC1PMyAkKEFMSUdOKSAtZnVucm9sbC1sb29wcyBcCi0JLWZvbWl0LWZyYW1lLXBvaW50ZXIgICMgJChXQVJOTU9SRSkgLWcgLURQTkdfREVCVUc9NQotIyMjIGZvciBnY2MgMi45NS4yIG9uIDY4NjoKLSNDRkxBR1M9LURQTkdfVVNFX1BOR0dDQ1JEIC1JJChaTElCSU5DKSAtV2FsbCAtTzMgXAotIwktbWNwdT1pNjg2IC1tYWxpZ24tZG91YmxlIC1mZmFzdC1tYXRoIC1mc3RyaWN0LWFsaWFzaW5nIFwKLSMJJChBTElHTikgLWZ1bnJvbGwtbG9vcHMgLWZ1bnJvbGwtYWxsLWxvb3BzIC1mb21pdC1mcmFtZS1wb2ludGVyIAotIyMjIGZvciBnY2MgMi43LjIuMyBvbiA0ODYgYW5kIHVwOgotI0NGTEFHUz0tRFBOR19VU0VfUE5HR0NDUkQgLUkkKFpMSUJJTkMpIC1XYWxsIC1PMyBcCi0jCS1tNDg2IC1tYWxpZ24tZG91YmxlIC1mZmFzdC1tYXRoIFwKLSMJJChBTElHTikgLWZ1bnJvbGwtbG9vcHMgLWZ1bnJvbGwtYWxsLWxvb3BzIC1mb21pdC1mcmFtZS1wb2ludGVyIAotCisgICAgICAgIC1mb21pdC1mcmFtZS1wb2ludGVyICAjICQoV0FSTk1PUkUpIC1nIC1EUE5HX0RFQlVHPTUKIExERkxBR1M9LUwuIC1XbCwtcnBhdGgsLiAtTCQoWkxJQkxJQikgLVdsLC1ycGF0aCwkKFpMSUJMSUIpIC1scG5nIC1seiAtbG0KIExERkxBR1NfQT0tTCQoWkxJQkxJQikgLVdsLC1ycGF0aCwkKFpMSUJMSUIpIGxpYnBuZy5hIC1seiAtbG0KIApAQCAtNTEsNyArMzcsNyBAQAogIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMi4gIFlvdSBzaG91bGQgbm90CiAjIGhhdmUgdG8gY2hhbmdlIGl0LgogUE5HTUFKID0gMgotUE5HTUlOID0gMS4wLjliZXRhMTAKK1BOR01JTiA9IDEuMC45YmV0YTIKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKIAogSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQpAQCAtNzAsMjEgKzU2LDE5IEBACiAKIGFsbDogbGlicG5nLmEgbGlicG5nLnNvIHBuZ3Rlc3QgcG5ndGVzdC1zdGF0aWMKIAotcG5nZ2NjcmQubzoJcG5nZ2NjcmQuYyBwbmcuaCBwbmdjb25mLmgKK3BuZ2djY3JkLm86CXBuZ2djY3JkLmMgcG5nLmggcG5nY29uZi5oIHBuZ2FzbXJkLmgKIAlAZWNobyAiIgogCUBlY2hvICcgICAgWW91IGNhbiBpZ25vcmUgdGhlIHNpbmdsZSAiY29udHJvbCByZWFjaGVzIGVuZCBvZiBub24tdm9pZCBmdW5jdGlvbiInCiAJQGVjaG8gJyAgICB3YXJuaW5nIGFuZCBtdWx0aXBsZSAiPHZhcmlhYmxlPiBkZWZpbmVkIGJ1dCBub3QgdXNlZCIgd2FybmluZ3M6JwogCUBlY2hvICIiCiAJJChDQykgLWMgJChDRkxBR1MpIC1vICRAICQqLmMKLQlAZWNobyAiIgogCi1wbmdnY2NyZC5waWMubzoJcG5nZ2NjcmQuYyBwbmcuaCBwbmdjb25mLmgKK3BuZ2djY3JkLnBpYy5vOglwbmdnY2NyZC5jIHBuZy5oIHBuZ2NvbmYuaCBwbmdhc21yZC5oCiAJQGVjaG8gIiIKIAlAZWNobyAnICAgIFlvdSBjYW4gaWdub3JlIHRoZSBzaW5nbGUgImNvbnRyb2wgcmVhY2hlcyBlbmQgb2Ygbm9uLXZvaWQgZnVuY3Rpb24iJwogCUBlY2hvICcgICAgd2FybmluZyBhbmQgbXVsdGlwbGUgIjx2YXJpYWJsZT4gZGVmaW5lZCBidXQgbm90IHVzZWQiIHdhcm5pbmdzOicKIAlAZWNobyAiIgogCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtZlBJQyAtbyAkQCBwbmdnY2NyZC5jCi0JQGVjaG8gIiIKIAogbGlicG5nLmE6ICQoT0JKUykKIAlhciByYyAkQCAkKE9CSlMpCkBAIC0xMzQsNyArMTE4LDcgQEAKIHdyaXRlbG9jazoKIAljaG1vZCBhLXcgKi5bY2gzNV0gJChET0NTKSBzY3JpcHRzLyoKIAotcG5nLm8gcG5nLnBpYy5vOgkJcG5nLmggcG5nY29uZi5oIHBuZy5jCitwbmcubyBwbmcucGljLm86CQlwbmcuaCBwbmdjb25mLmggcG5nLmMgcG5nYXNtcmQuaAogcG5nZXJyb3IubyBwbmdlcnJvci5waWMubzoJcG5nLmggcG5nY29uZi5oIHBuZ2Vycm9yLmMKIHBuZ3Jpby5vIHBuZ3Jpby5waWMubzoJCXBuZy5oIHBuZ2NvbmYuaCBwbmdyaW8uYwogcG5nd2lvLm8gcG5nd2lvLnBpYy5vOgkJcG5nLmggcG5nY29uZi5oIHBuZ3dpby5jCkBAIC0xNDMsNyArMTI3LDcgQEAKIHBuZ2dldC5vIHBuZ2dldC5waWMubzoJCXBuZy5oIHBuZ2NvbmYuaCBwbmdnZXQuYwogcG5ncmVhZC5vIHBuZ3JlYWQucGljLm86CXBuZy5oIHBuZ2NvbmYuaCBwbmdyZWFkLmMKIHBuZ3J0cmFuLm8gcG5ncnRyYW4ucGljLm86CXBuZy5oIHBuZ2NvbmYuaCBwbmdydHJhbi5jCi1wbmdydXRpbC5vIHBuZ3J1dGlsLnBpYy5vOglwbmcuaCBwbmdjb25mLmggcG5ncnV0aWwuYworcG5ncnV0aWwubyBwbmdydXRpbC5waWMubzoJcG5nLmggcG5nY29uZi5oIHBuZ3J1dGlsLmMgcG5nYXNtcmQuaAogcG5ndHJhbnMubyBwbmd0cmFucy5waWMubzoJcG5nLmggcG5nY29uZi5oIHBuZ3RyYW5zLmMKIHBuZ3dyaXRlLm8gcG5nd3JpdGUucGljLm86CXBuZy5oIHBuZ2NvbmYuaCBwbmd3cml0ZS5jCiBwbmd3dHJhbi5vIHBuZ3d0cmFuLnBpYy5vOglwbmcuaCBwbmdjb25mLmggcG5nd3RyYW4uYwpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5ocHV4IGIvc2NyaXB0cy9tYWtlZmlsZS5ocHV4CmluZGV4IGQ2OTJhMjUuLjY1ZTBlYmEgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuaHB1eAorKysgYi9zY3JpcHRzL21ha2VmaWxlLmhwdXgKQEAgLTE4LDcgKzE4LDcgQEAKICMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDIuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KIFBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC45YmV0YTEwCitQTkdNSU4gPSAxLjAuOWJldGEyCiBQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCiAKICMgd2hlcmUgbWFrZSBpbnN0YWxsIHB1dHMgbGlicG5nLmEgYW5kIHBuZy5oCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmludGVsIGIvc2NyaXB0cy9tYWtlZmlsZS5pbnRlbAppbmRleCAxY2FiZTc3Li5iNTUyMjYzIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmludGVsCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuaW50ZWwKQEAgLTQyLDkgKzQyLDkgQEAKIAogTz0ub2JqCiAKLU9CSlM9cG5nJChPKSBwbmdzZXQkKE8pIHBuZ2dldCQoTykgcG5ncnV0aWwkKE8pIHBuZ3RyYW5zJChPKSBwbmd3dXRpbCQoTykgXAotcG5nbWVtJChPKSBwbmdwcmVhZCQoTykgcG5ncmVhZCQoTykgcG5nZXJyb3IkKE8pIHBuZ3dyaXRlJChPKSBcCi1wbmdydHJhbiQoTykgcG5nd3RyYW4kKE8pIHBuZ3JpbyQoTykgcG5nd2lvJChPKSBwbmd2Y3JkJChPKQorT0JKUz1wbmckKE8pIHBuZ3NldCQoTykgcG5nZ2V0JChPKSBwbmdydXRpbCQoTykgcG5ndHJhbnMkKE8pIHBuZ3d1dGlsJChPKVwKKyAgICAgcG5nbWVtJChPKSBwbmdwcmVhZCQoTykgcG5ncmVhZCQoTykgcG5nZXJyb3IkKE8pIHBuZ3dyaXRlJChPKVwKKyAgICAgcG5ncnRyYW4kKE8pIHBuZ3d0cmFuJChPKSBwbmdyaW8kKE8pIHBuZ3dpbyQoTykgcG5ndmNyZCQoTykKIAogCiBhbGw6IHRlc3QKQEAgLTcwLDcgKzcwLDcgQEAKIHBuZ3J1dGlsJChPKTogcG5nLmggcG5nY29uZi5oCiAJJChDQykgJChDRkxBR1MpICQqLmMgJChFUlJGSUxFKQogCi1wbmd2Y3JkJChPKTogcG5nLmggcG5nY29uZi5oCitwbmd2Y3JkJChPKTogcG5nLmggcG5nY29uZi5oIHBuZ2FzbXJkLmgKIAkkKENDKSAkKENGTEFHUykgJCouYyAkKEVSUkZJTEUpCiAKIHBuZ2Vycm9yJChPKTogcG5nLmggcG5nY29uZi5oCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmxpbnV4IGIvc2NyaXB0cy9tYWtlZmlsZS5saW51eAppbmRleCBmY2Y3OGRmLi4xYmI4ZWMzIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmxpbnV4CisrKyBiL3NjcmlwdHMvbWFrZWZpbGUubGludXgKQEAgLTM0LDcgKzM0LDcgQEAKICMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDIuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KIFBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC45YmV0YTEwCitQTkdNSU4gPSAxLjAuOWJldGEyCiBQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCiAKIElOQ1BBVEg9JChwcmVmaXgpL2luY2x1ZGUKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUubWFjb3N4IGIvc2NyaXB0cy9tYWtlZmlsZS5tYWNvc3gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5M2VhNzcuLjAwMDAwMDAKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5tYWNvc3gKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0jIG1ha2VmaWxlIGZvciBsaWJwbmcsIE1BQ09TIFgKLSMgQ29weXJpZ2h0IChDKSAxOTk1IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLgotIyBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKLQotIyB3aGVyZSBtYWtlIGluc3RhbGwgcHV0cyBsaWJwbmcuYSBhbmQgcG5nLmgKLXByZWZpeD0vdXNyL2xvY2FsCi0KLSMgV2hlcmUgdGhlIHpsaWIgbGlicmFyeSBhbmQgaW5jbHVkZSBmaWxlcyBhcmUgbG9jYXRlZAotI1pMSUJMSUI9L3Vzci9sb2NhbC9saWIKLSNaTElCSU5DPS91c3IvbG9jYWwvaW5jbHVkZQotWkxJQkxJQj0uLi96bGliCi1aTElCSU5DPS4uL3psaWIKLQotQ0M9Y2MKLUNGTEFHUz0tSSQoWkxJQklOQykgLU8gIyAtZyAtRFBOR19ERUJVRz01Ci1MREZMQUdTPS1MLiAtTCQoWkxJQkxJQikgLWxwbmcgLWx6Ci0KLSNSQU5MSUI9ZWNobwotUkFOTElCPXJhbmxpYgotCi1PQkpTID0gcG5nLm8gcG5nc2V0Lm8gcG5nZ2V0Lm8gcG5ncnV0aWwubyBwbmd0cmFucy5vIHBuZ3d1dGlsLm8gXAotCXBuZ3JlYWQubyBwbmdyaW8ubyBwbmd3aW8ubyBwbmd3cml0ZS5vIHBuZ3J0cmFuLm8gXAotCXBuZ3d0cmFuLm8gcG5nbWVtLm8gcG5nZXJyb3IubyBwbmdwcmVhZC5vCi0KLWFsbDogbGlicG5nLmEgcG5ndGVzdAotCi1saWJwbmcuYTogJChPQkpTKQotCWFyIHJjICRAICAkKE9CSlMpCi0JJChSQU5MSUIpICRACi0KLXBuZ3Rlc3Q6IHBuZ3Rlc3QubyBsaWJwbmcuYQotCSQoQ0MpIC1vIHBuZ3Rlc3QgJChDRkxBR1MpIHBuZ3Rlc3QubyAkKExERkxBR1MpCi0KLXRlc3Q6IHBuZ3Rlc3QKLQkuL3BuZ3Rlc3QKLQotaW5zdGFsbDogbGlicG5nLmEKLQktQG1rZGlyICQocHJlZml4KS9pbmNsdWRlCi0JLUBta2RpciAkKHByZWZpeCkvbGliCi0JY3AgcG5nLmggJChwcmVmaXgpL2luY2x1ZGUKLQljcCBwbmdjb25mLmggJChwcmVmaXgpL2luY2x1ZGUKLQljaG1vZCA2NDQgJChwcmVmaXgpL2luY2x1ZGUvcG5nLmgKLQljaG1vZCA2NDQgJChwcmVmaXgpL2luY2x1ZGUvcG5nY29uZi5oCi0JY3AgbGlicG5nLmEgJChwcmVmaXgpL2xpYgotCWNobW9kIDY0NCAkKHByZWZpeCkvbGliL2xpYnBuZy5hCi0KLWNsZWFuOgotCXJtIC1mICoubyBsaWJwbmcuYSBwbmd0ZXN0IHBuZ291dC5wbmcKLQotRE9DUyA9IEFOTk9VTkNFIENIQU5HRVMgSU5TVEFMTCBLTk9XTkJVRyBMSUNFTlNFIFJFQURNRSBUT0RPIFkyS0lORk8KLXdyaXRlbG9jazoKLQljaG1vZCBhLXcgKi5bY2gzNV0gJChET0NTKSBzY3JpcHRzLyoKLQotIyBETyBOT1QgREVMRVRFIFRISVMgTElORSAtLSBtYWtlIGRlcGVuZCBkZXBlbmRzIG9uIGl0LgotCi1wbmcubzogcG5nLmggcG5nY29uZi5oCi1wbmdlcnJvci5vOiBwbmcuaCBwbmdjb25mLmgKLXBuZ3Jpby5vOiBwbmcuaCBwbmdjb25mLmgKLXBuZ3dpby5vOiBwbmcuaCBwbmdjb25mLmgKLXBuZ21lbS5vOiBwbmcuaCBwbmdjb25mLmgKLXBuZ3NldC5vOiBwbmcuaCBwbmdjb25mLmgKLXBuZ2dldC5vOiBwbmcuaCBwbmdjb25mLmgKLXBuZ3JlYWQubzogcG5nLmggcG5nY29uZi5oCi1wbmdydHJhbi5vOiBwbmcuaCBwbmdjb25mLmgKLXBuZ3J1dGlsLm86IHBuZy5oIHBuZ2NvbmYuaAotcG5ndGVzdC5vOiBwbmcuaCBwbmdjb25mLmgKLXBuZ3RyYW5zLm86IHBuZy5oIHBuZ2NvbmYuaAotcG5nd3JpdGUubzogcG5nLmggcG5nY29uZi5oCi1wbmd3dHJhbi5vOiBwbmcuaCBwbmdjb25mLmgKLXBuZ3d1dGlsLm86IHBuZy5oIHBuZ2NvbmYuaAotcG5ncHJlYWQubzogcG5nLmggcG5nY29uZi5oCi0KZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUubXNjIGIvc2NyaXB0cy9tYWtlZmlsZS5tc2MKaW5kZXggMWNiZmQ5MS4uNjUxMjgxYyAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5tc2MKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5tc2MKQEAgLTksNyArOSw3IEBACiAjLU94IGdlbmVyYXRlcyBiYWQgY29kZSB3aXRoIE1TQyA1LjEKIENDPWNsCiBMRD1saW5rCi1MREZMQUdTPS9lL3N0OjB4MTUwMC9ub2UKK0xERkxBR1M9L2Uvc3Q6MHgxNTAwL25vZSAKIE89Lm9iagogCiAjdW5jb21tZW50IG5leHQgdG8gcHV0IGVycm9yIG1lc3NhZ2VzIGluIGEgZmlsZQpAQCAtNzYsNyArNzYsNyBAQAogCWxpYiBsaWJwbmcgJChPQkpTMik7CiAJbGliIGxpYnBuZyAkKE9CSlMzKTsKIAotcG5ndGVzdC5leGU6IHBuZ3Rlc3Qub2JqIGxpYnBuZy5saWIKK3BuZ3Rlc3QuZXhlOiBwbmd0ZXN0Lm9iaiBsaWJwbmcubGliIAogCSQoTEQpICQoTERGTEFHUykgcG5ndGVzdC5vYmosLCxsaWJwbmcubGliIC4uXHpsaWJcemxpYi5saWIgOwogCiB0ZXN0OiBwbmd0ZXN0LmV4ZQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5zY28gYi9zY3JpcHRzL21ha2VmaWxlLnNjbwppbmRleCA4M2Q1YTNjLi5mZjk3OWZhIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLnNjbworKysgYi9zY3JpcHRzL21ha2VmaWxlLnNjbwpAQCAtMTYsNyArMTYsNyBAQAogWkxJQkxJQj0uLi96bGliCiBaTElCSU5DPS4uL3psaWIKIAotQ0ZMQUdTPSAtZHkgLWJlbGYgLUkkKFpMSUJJTkMpIC1PMworQ0ZMQUdTPSAtZHkgLWJlbGYgLUkkKFpMSUJJTkMpIC1PMyAKIExERkxBR1M9LUwuIC1MJChaTElCTElCKSAtbHBuZyAtbHogLWxtCiAKICNSQU5MSUI9cmFubGliCkBAIC0yNSw3ICsyNSw3IEBACiAjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCiBQTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuOWJldGExMAorUE5HTUlOID0gMS4wLjliZXRhMgogUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQogCiBJTkNQQVRIPSQocHJlZml4KS9pbmNsdWRlCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLnNnZ2NjIGIvc2NyaXB0cy9tYWtlZmlsZS5zZ2djYwppbmRleCA3ZTU5MTQ3Li42NTBjNmE5IDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLnNnZ2NjCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuc2dnY2MKQEAgLTEzLDE0ICsxMywxNCBAQAogCiBDQz1nY2MKIAotV0FSTk1PUkU9ICMgLWcgLURQTkdfREVCVUc9NQotQ0ZMQUdTPS1JJChaTElCSU5DKSAtTzIgJChXQVJOTU9SRSkgLWZQSUMgLW1hYmk9bjMyCitXQVJOTU9SRT0KK0NGTEFHUz0tSSQoWkxJQklOQykgLU8yICQoV0FSTk1PUkUpIC1mUElDIC1tYWJpPW4zMiAjIC1nIC1EUE5HX0RFQlVHPTUKICMgemxpYiBtdXN0IGFsc28gYmUgY29tcGlsZWQgd2l0aCBuMzIKIExERkxBR1M9LUwuIC1MJChaTElCTElCKSAtbHBuZyAtbHogLWxtCiBMRFNIQVJFRD1nY2MgLXNoYXJlZAogCi1WRVI9MS4wLjliZXRhMTAKLUxJQlM9bGlicG5nLnNvLjEuMC45YmV0YTEwCitWRVI9MS4wLjliZXRhMgorTElCUz1saWJwbmcuc28uMS4wLjliZXRhMgogU0hBUkVETElCPWxpYnBuZy5zbwogbGliZGlyPSQocHJlZml4KS9saWIzMgogCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLnNvbGFyaXMgYi9zY3JpcHRzL21ha2VmaWxlLnNvbGFyaXMKaW5kZXggZmM3NzM1My4uZjhlNjQyNSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5zb2xhcmlzCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuc29sYXJpcwpAQCAtMzEsNyArMzEsNyBAQAogIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMi4gIFlvdSBzaG91bGQgbm90CiAjIGhhdmUgdG8gY2hhbmdlIGl0LgogUE5HTUFKID0gMgotUE5HTUlOID0gMS4wLjliZXRhMTAKK1BOR01JTiA9IDEuMC45YmV0YTIKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKIAogSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS52Y2F3aW4zMiBiL3NjcmlwdHMvbWFrZWZpbGUudmNhd2luMzIKaW5kZXggODEyZGQ4Zi4uNGMwNWZmNCAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS52Y2F3aW4zMgorKysgYi9zY3JpcHRzL21ha2VmaWxlLnZjYXdpbjMyCkBAIC00NiwxMCArNDYsMTAgQEAKIHBuZ3J0cmFuJChPKTogcG5nLmggcG5nY29uZi5oCiAJJChDQykgLWMgJChDRkxBR1MpICQqLmMgJChFUlJGSUxFKQogCi1wbmdydXRpbCQoTyk6IHBuZy5oIHBuZ2NvbmYuaAorcG5ncnV0aWwkKE8pOiBwbmcuaCBwbmdjb25mLmggcG5nYXNtcmQuaAogCSQoQ0MpIC1jICQoQ0ZMQUdTKSAkKi5jICQoRVJSRklMRSkKIAotcG5ndmNyZCQoTyk6IHBuZy5oIHBuZ2NvbmYuaAorcG5ndmNyZCQoTyk6IHBuZy5oIHBuZ2NvbmYuaCBwbmdhc21yZC5oCiAJJChDQykgLWMgJChDRkxBR1MpICQqLmMgJChFUlJGSUxFKQogCiBwbmdlcnJvciQoTyk6IHBuZy5oIHBuZ2NvbmYuaApAQCAtODQsNyArODQsNyBAQAogCWRlbCBsaWJwbmcubGliCiAJbGliIC9PVVQ6bGlicG5nLmxpYiAkKE9CSlMxKSAkKE9CSlMyKSAkKE9CSlMzKQogCi1wbmd0ZXN0LmV4ZTogcG5ndGVzdC5vYmogbGlicG5nLmxpYgorcG5ndGVzdC5leGU6IHBuZ3Rlc3Qub2JqIGxpYnBuZy5saWIgCiAJJChMRCkgJChMREZMQUdTKSBwbmd0ZXN0Lm9iaiBsaWJwbmcubGliIC4uXHpsaWJcemxpYi5saWIgL09VVDpwbmd0ZXN0LmV4ZSAvU1VCU1lTVEVNOkNPTlNPTEUKIAogdGVzdDogcG5ndGVzdC5leGUKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUudmN3aW4zMiBiL3NjcmlwdHMvbWFrZWZpbGUudmN3aW4zMgppbmRleCA2NGI3NjJlLi5hMmQ4ZTI3IDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLnZjd2luMzIKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS52Y3dpbjMyCkBAIC00Miw3ICs0Miw3IEBACiBwbmdydHJhbiQoTyk6IHBuZy5oIHBuZ2NvbmYuaAogCSQoQ0MpIC1jICQoQ0ZMQUdTKSAkKi5jICQoRVJSRklMRSkKIAotcG5ncnV0aWwkKE8pOiBwbmcuaCBwbmdjb25mLmgKK3BuZ3J1dGlsJChPKTogcG5nLmggcG5nY29uZi5oIHBuZ2FzbXJkLmgKIAkkKENDKSAtYyAkKENGTEFHUykgJCouYyAkKEVSUkZJTEUpCiAKIHBuZ2Vycm9yJChPKTogcG5nLmggcG5nY29uZi5oCkBAIC03Nyw3ICs3Nyw3IEBACiAJZGVsIGxpYnBuZy5saWIKIAlsaWIgL09VVDpsaWJwbmcubGliICQoT0JKUzEpICQoT0JKUzIpICQoT0JKUzMpCiAKLXBuZ3Rlc3QuZXhlOiBwbmd0ZXN0Lm9iaiBsaWJwbmcubGliCitwbmd0ZXN0LmV4ZTogcG5ndGVzdC5vYmogbGlicG5nLmxpYiAKIAkkKExEKSAkKExERkxBR1MpIHBuZ3Rlc3Qub2JqIGxpYnBuZy5saWIgLi5cemxpYlx6bGliLmxpYiAvT1VUOnBuZ3Rlc3QuZXhlIC9TVUJTWVNURU06Q09OU09MRQogCiB0ZXN0OiBwbmd0ZXN0LmV4ZQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtldm1zLmNvbSBiL3NjcmlwdHMvbWFrZXZtcy5jb20KaW5kZXggYjllMzg5NS4uMDAzNzMyNiAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtldm1zLmNvbQorKysgYi9zY3JpcHRzL21ha2V2bXMuY29tCkBAIC0xNCw3ICsxNCw3IEBACiAkICAgc2V0IGRlZiBbLS5wbmdtaW51c10KICQgICBAbWFrZXZtcwogJCAgIHNldCBkZWYgWy0tXQotJCAgIGV4aXQKKyQgICBleGl0IAogJCBlbmRpZgogJCBNYWtlID0gIiIKICQgSWYgRiRTZWFyY2ggKCJTeXMkU3lzdGVtOk1NUy5FWEUiKSAubmVzLiAiIiBUaGVuIE1ha2UgPSAiTU1TIgpAQCAtNTQsNyArNTQsNyBAQAogJCAgdGhlbgogJCAgIGRlbGUgcG5ndGVzdC5vYmo7KgogJCAgIENBTEwgTUFLRSBwbmcuT0JKICJjYyAnJ0NDT1BUJyBwbmciIC0KLQlwbmcuYyBwbmcuaCBwbmdjb25mLmgKKwlwbmcuYyBwbmcuaCBwbmdjb25mLmggICAKICQgICBDQUxMIE1BS0UgcG5ncHJlYWQuT0JKICJjYyAnJ0NDT1BUJyBwbmdwcmVhZCIgLQogCQkJCQkgcG5ncHJlYWQuYyBwbmcuaCBwbmdjb25mLmgKICQgICBDQUxMIE1BS0UgcG5nc2V0Lk9CSiAiY2MgJydDQ09QVCcgcG5nc2V0IiAtCkBAIC05MCw4ICs5MCw4IEBACiAkICAgd3JpdGUgc3lzJG91dHB1dCAiQnVpbGRpbmcgcG5ndGVzdC4uLiIKICQgICBDQUxMIE1BS0UgcG5ndGVzdC5PQkogImNjICcnQ0NPUFQnIHBuZ3Rlc3QiIC0KIAlwbmd0ZXN0LmMgcG5nLmggcG5nY29uZi5oCi0kICAgY2FsbCBtYWtlIHBuZ3Rlc3QuZXhlIC0KLQkiTElOSyBwbmd0ZXN0LGxpYnBuZy5vbGIvbGliLCcnemxpYnNyYydsaWJ6Lm9sYi9saWIiIC0KKyQgICBjYWxsIG1ha2UgcG5ndGVzdC5leGUgLSAKKwkiTElOSyBwbmd0ZXN0LGxpYnBuZy5vbGIvbGliLCcnemxpYnNyYydsaWJ6Lm9sYi9saWIiIC0gCiAJcG5ndGVzdC5vYmogbGlicG5nLm9sYgogJCAgIHdyaXRlIHN5cyRvdXRwdXQgIlRlc3RpbmcgTGlicG5nLi4uIgogJCAgIHJ1biBwbmd0ZXN0CmRpZmYgLS1naXQgYS9zY3JpcHRzL3BuZ2RlZi5wYXMgYi9zY3JpcHRzL3BuZ2RlZi5wYXMKaW5kZXggYjdiY2RhYi4uOTBlMzgxZiAxMDA2NDQKLS0tIGEvc2NyaXB0cy9wbmdkZWYucGFzCisrKyBiL3NjcmlwdHMvcG5nZGVmLnBhcwpAQCAtNSw3ICs1LDcgQEAKIGludGVyZmFjZQogCiBjb25zdAotICBQTkdfTElCUE5HX1ZFUl9TVFJJTkcgPSAnMS4wLjliZXRhMTAnOworICBQTkdfTElCUE5HX1ZFUl9TVFJJTkcgPSAnMS4wLjliZXRhMic7CiAgIFBOR19MSUJQTkdfVkVSICAgICAgICA9ICAxMDAwOTsKIAogdHlwZQpAQCAtMjA5LDcgKzIwOSw3IEBACiAgIFBOR19DUkNfV0FSTl9ESVNDQVJEID0gMjsgIC8vIChJTlZBTElEKSAgICAgICAgICAgd2Fybi9kaXNjYXJkIGRhdGEKICAgUE5HX0NSQ19XQVJOX1VTRSAgICAgPSAzOyAgLy8gd2Fybi91c2UgZGF0YSAgICAgICB3YXJuL3VzZSBkYXRhCiAgIFBOR19DUkNfUVVJRVRfVVNFICAgID0gNDsgIC8vIHF1aWV0L3VzZSBkYXRhICAgICAgcXVpZXQvdXNlIGRhdGEKLSAgUE5HX0NSQ19OT19DSEFOR0UgICAgPSA1OyAgLy8gdXNlIGN1cnJlbnQgdmFsdWUgICB1c2UgY3VycmVudCB2YWx1ZQorICBQTkdfQ1JDX05PX0NIQU5HRSAgICA9IDU7ICAvLyB1c2UgY3VycmVudCB2YWx1ZSAgIHVzZSBjdXJyZW50IHZhbHVlIAogCiAvLyBGbGFncyBmb3IgcG5nX3NldF9maWx0ZXIoKSB0byBzYXkgd2hpY2ggZmlsdGVycyB0byB1c2UuICBUaGUgZmxhZ3MKIC8vIGFyZSBjaG9zZW4gc28gdGhhdCB0aGV5IGRvbid0IGNvbmZsaWN0IHdpdGggcmVhbCBmaWx0ZXIgdHlwZXMKQEAgLTI0MSw3ICsyNDEsNyBAQAogICBQTkdfRklMVEVSX0hFVVJJU1RJQ19ERUZBVUxUICAgID0gMDsgIC8vIEN1cnJlbnRseSAiVU5XRUlHSFRFRCIKICAgUE5HX0ZJTFRFUl9IRVVSSVNUSUNfVU5XRUlHSFRFRCA9IDE7ICAvLyBVc2VkIGJ5IGxpYnBuZyA8IDAuOTUKICAgUE5HX0ZJTFRFUl9IRVVSSVNUSUNfV0VJR0hURUQgICA9IDI7ICAvLyBFeHBlcmltZW50YWwgZmVhdHVyZQotICBQTkdfRklMVEVSX0hFVVJJU1RJQ19MQVNUICAgICAgID0gMzsgIC8vIE5vdCBhIHZhbGlkIHZhbHVlCisgIFBOR19GSUxURVJfSEVVUklTVElDX0xBU1QgICAgICAgPSAzOyAgLy8gTm90IGEgdmFsaWQgdmFsdWUgCiAKIHByb2NlZHVyZSBwbmdfYnVpbGRfZ3JheXNjYWxlX3BhbGV0dGUoYml0X2RlcHRoOiBpbnQ7IHBhbGV0dGU6IHBuZ19jb2xvcnApOwogICAgICAgICAgICAgIHN0ZGNhbGw7CkBAIC0zNDAsNyArMzQwLDcgQEAKICAgICAgICAgICAgICB2YXIgdW5pdF90eXBlOiBpbnQpOiBwbmdfdWludF8zMjsKICAgICAgICAgICAgICBzdGRjYWxsOwogZnVuY3Rpb24gcG5nX2dldF9zQ0FMKHBuZ19wdHI6IHBuZ19zdHJ1Y3RwOyBpbmZvX3B0cjogcG5nX2luZm9wOwotICAgICAgICAgICAgIHZhciB1bml0OmludDsgdmFyIHdpZHRoOiBwbmdfdWludF8zMjsgaGVpZ2h0OiBwbmdfdWludF8zMik6CisgICAgICAgICAgICAgdmFyIHVuaXQ6aW50OyB2YXIgd2lkdGg6IHBuZ191aW50XzMyOyBoZWlnaHQ6IHBuZ191aW50XzMyKTogCiAgICAgICAgICAgICAgcG5nX3VpbnRfMzI7CiAgICAgICAgICAgICAgc3RkY2FsbAogZnVuY3Rpb24gcG5nX2dldF9wQ0FMKHBuZ19wdHI6IHBuZ19zdHJ1Y3RwOyBpbmZvX3B0cjogcG5nX2luZm9wOwpAQCAtMzczLDcgKzM3Myw3IEBACiAgICAgICAgICAgICAgc3RkY2FsbDsKIGZ1bmN0aW9uIHBuZ19nZXRfc1JHQihwbmdfcHRyOiBwbmdfc3RydWN0cDsgaW5mb19wdHI6IHBuZ19pbmZvcDsKICAgICAgICAgICAgICB2YXIgZmlsZV9zcmdiX2ludGVudDogaW50KTogcG5nX3VpbnRfMzI7Ci0gICAgICAgICAgICAgc3RkY2FsbDsKKyAgICAgICAgICAgICBzdGRjYWxsOyAKIGZ1bmN0aW9uIHBuZ19nZXRfc2lnbmF0dXJlKHBuZ19wdHI6IHBuZ19zdHJ1Y3RwOyBpbmZvX3B0cjogcG5nX2luZm9wKToKICAgICAgICAgICAgICBwbmdfYnl0ZXA7CiAgICAgICAgICAgICAgc3RkY2FsbDsKZGlmZiAtLWdpdCBhL3NjcmlwdHMvcG5nb3MyLmRlZiBiL3NjcmlwdHMvcG5nb3MyLmRlZgppbmRleCA3ZDg4NDFlLi5kY2I5YTMyIDEwMDY0NAotLS0gYS9zY3JpcHRzL3BuZ29zMi5kZWYKKysrIGIvc2NyaXB0cy9wbmdvczIuZGVmCkBAIC0yOTcsMTEgKzI5NywxMSBAQAogICBwbmdfcGFzc19kc3BfbWFzawogOyBwbmdfcGFzc193aWR0aAogOyBwbmdfcGFzc19oZWlnaHQKLSAgcG5nX2dldF9pQ0NQCisgIHBuZ19nZXRfaUNDUCAKICAgcG5nX2dldF9zQ0FMCi0gIHBuZ19nZXRfc1BMVAotICBwbmdfc2V0X2lDQ1AKLSAgcG5nX3NldF9zUExUCisgIHBuZ19nZXRfc1BMVCAKKyAgcG5nX3NldF9pQ0NQIAorICBwbmdfc2V0X3NQTFQgCiAgIHBuZ19mcmVlX2RhdGEKIAogICBwbmdfSUhEUgpAQCAtMzI1LDYgKzMyNSwzIEBACiAgIHBuZ190SU1FCiAgIHBuZ190Uk5TCiAgIHBuZ196VFh0Ci0KLSAgcG5nX21teF9zdXBwb3J0ZWQKLSAgcG5nX3Blcm1pdF9lbXB0eV9wbHRlCg==