ZGlmZiAtLWdpdCBhL2FwL2FwcC9jY2FwcC9jY19tYWluLmggYi9hcC9hcHAvY2NhcHAvY2NfbWFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMTk1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9hcC9hcHAvY2NhcHAvY2NfbWFpbi5oCkBAIC0wLDAgKzEsMjQ4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMyBaVEUgQ29ycG9yYXRpb24uDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogxKMgv+kgw/sgOiBDQw0KKyogzsQgvP4gw/sgOiBDY19tYWluLmgNCisqIM/gudjOxLz+IDogDQorKiDKtc/WuabE3CA6IEFUw/zB7rSmwO3Eo7/puuqhosDg0M22qNLlDQorKiDX9yAgICDV3yA6IA0KKyogsOYgICAgsb4gOg0KKyogzeqzycjVxtogOg0KKyogxuTL/Mu1w/cgOiANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqINDeuMS8x8K8IDogDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyog0N64xLHgusUgOiANCisqINDeILjEIMjLIDogDQorKiDQ3rjEyNXG2iA6IA0KKyog0N64xMTayN0gOiANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaWZuZGVmIF9DQ19NQUlOX0gNCisjZGVmaW5lIF9DQ19NQUlOX0gNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICNpbmNsdWRlx/gNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaW5jbHVkZSAibWVzc2FnZS5oIg0KKyNpbmNsdWRlICJzb2Z0YXBfYXBpLmgiDQorI2luY2x1ZGUgImNjX3Byb2MuaCIgDQorI2luY2x1ZGUgInNsaWNfdHlwZS5oIg0KKyNpbmNsdWRlICJzbGljX2luZi5oIiANCisjaW5jbHVkZSA8dGltZS5oPg0KKyNpbmNsdWRlICJsaWJ6dGVfbG9nLmgiDQorI2lmbmRlZiBURVNUX0NDQVBQDQorI2luY2x1ZGUgInN5cy9pcGMuaCINCisjaW5jbHVkZSAic2lnbmFsLmgiDQorI2VuZGlmDQorI2lmZGVmIF9PU19UT1MNCisjaW5jbHVkZSAib3NhX2FwaS5oIg0KKyNpbmNsdWRlICJvc3NfYXBpLmgiDQorI2VuZGlmDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiCzo8G/tqjS5cf4DQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQordHlwZWRlZiBlbnVtIA0KK3sNCisgICAgWkNDQVBQX1RJTUVSX0hPT0tPRkZfREVURUNULCAgICAgLyrVqrv6uvO1yLT9sqa6xbaoyrHG9yovDQorICAgIFpDQ0FQUF9USU1FUl9EVE1GX0RFVEVDVCwgICAgICAvKrKmusW85Lj0tqjKscb3Ki8NCisgICAgWkNDQVBQX1RJTUVSX0JVU1lUT05FX0RFVEVDVCwgLyrDptL0tqjKscb3Ki8NCisgICAgWkNDQVBQX1RJTUVSX1RLWVRPTkVfREVURUNULCAvKsOm0vS687XE0KW90NL0tqjKscb3Ki8NCisgICAgWkNDQVBQX1RJTUVSX1NTRElBTFRPTkVfREVURUNULCAvKrK5s+TStc7xstnX98qxytW1vWZsYXNouvPG9LKmusXS9LaoyrHG9yovDQorICAgIFpDQ0FQUF9USU1FUl9IT09LT0ZGX0lETEUsDQorfVRfekNjX1RpbWVyRXY7DQorDQordHlwZWRlZiBlbnVtIA0KK3sNCisgICAgWkNDQVBQX0FUSU5EX0RTQ0ksICAgIA0KKyAgICBaQ0NBUFBfQVRJTkRfWkNQSSwgICAgIA0KKyAgICBaQ0NBUFBfQVRJTkRfSU1TUExVUywNCisgICAgWkNDQVBQX0FUSU5EX01PREUNCit9VF96Q2NfQXRJbmRFdjsNCisNCisNCisjZGVmaW5lIFpDQ0FQUF9USU1FUl9IT09LT0ZGX0lOVEVSVkFMICAxMDAwMA0KKyNkZWZpbmUgWkNDQVBQX1RJTUVSX0RUTUZfSU5URVJWQUwgNTAwMA0KKyNkZWZpbmUgWkNDQVBQX1RJTUVSX0JVU1lUT05FX0lOVEVSVkFMICA3MDAwDQorI2RlZmluZSBaQ0NBUFBfVElNRVJfVEtZVE9ORV9JTlRFUlZBTCAgNjAwMDANCisNCisjZGVmaW5lIFpDQ0FQUF9USU1FUl9IT09LT0ZGX0lETEVfSU5URVJWQUwgIDUwMA0KKw0KKy8qDQorICogTnVtYmVyIG9mIHNsYXZlcyBwZXIgbWFzdGVyLg0KKyAqIFR3byBzbGF2ZXMgYXJlIHJlcXVpcmVkIGZvciAzLXBhcnR5IGNhbGxzLg0KKyAqLw0KKyNkZWZpbmUgWkNDX1NMQVZFUyAgICAgIDgNCisjZGVmaW5lIFpDQ19NQVhDSUQgICAgICA3DQorI2RlZmluZSBaQ0NfTUlOQ0lEICAgICAgMQ0KKw0KKyNkZWZpbmUgWkRJQUxfTlVNX01BWCAgICAgICAgICAgICAgICA0OA0KKyNkZWZpbmUgWkNDX0FUX0NITkxfSUQgICAgICAgICAgICAgICAgNzANCisjZGVmaW5lIFpDQ19GTEFTSF9TSUdOICAgICAgICAgICAgICAgICgnRicpDQorI2RlZmluZSBaQ0NfVElNRU9VVF9TSUdOICAgICAgICAgICAgICAgICgnVCcpDQorLyoNCisgKiBEZWZpbmUgaG93IGZvY3VzIGZsYWcgaW4gbWFzdGVyIHN0YXRlIG1hY2hpbmUgaXMgaW50ZXJwcmV0ZWQuDQorICogWFhYOiBFeHRlbmQgdGhpcyBmb3IgbW9yZSB0aGFuIDMtcGFydHkgY2FsbHMuDQorICovDQorI2RlZmluZSBaQ0NfRk9DVVNfMCAgICAgKDEgPDwgMCkNCisjZGVmaW5lIFpDQ19GT0NVU18xICAgICAoMSA8PCAxKQ0KKyNkZWZpbmUgWkNDX0ZPQ1VTXzIgICAgICgxIDw8IDIpDQorI2RlZmluZSBaQ0NfRk9DVVNfUFNUTiAgKDEgPDwgMykNCisjZGVmaW5lIFpDQ19GT0NVU19CT1RIICAoWkNDX0ZTTV9GT0NVU18wICsgWkNDX0ZTTV9GT0NVU18xKQ0KKw0KKy8qDQorICogVmFyaW91cyB0aW1lb3V0cy4NCisgKiBUaGVzZSB0aW1lb3V0cyBhcmUgaW4gdW5pdHMgb2YgWkNDX1RJTUVSX0UuDQorICovDQorI2RlZmluZSBaQ0NfQlNZVE1PICAgICAgKDcwMDApIC8qIFRpbWVvdXQgaW4gYnVzeSB0b25lIHN0YXRlICovDQorI2RlZmluZSBaQ0NfVEtZVE1PICAgICAgKDYwMDAwKSAvKiBUaW1lb3V0IGluIHR1cmtleSB0b25lIHN0YXRlICovDQorLy8jZGVmaW5lIFpDQ19GQlNZVE1PICAgICAoNDAwMDApIC8qIFRpbWVvdXQgaW4gZmFzdCBidXN5IHRvbmUgc3RhdGUgKi8NCisjZGVmaW5lIFpDQ19EQUNDTVRNTyAoNTAwMCkgIC8qIFRpbWVvdXQgKGludGVyZGlnaXQpIGluIGRhY2NtIHN0YXRlICovDQorI2RlZmluZSBaQ0NfRFRUTU8gICAgICAgKDEwMDAwKSAvKiBUaW1lb3V0IGluIGRpYWx0b25lIHN0YXRlICovDQorI2RlZmluZSBaQ0NfUlNUVE1PICAgICAgKDEwKSAvKiBUaW1lb3V0IGluIG1hc3RlciByZXNldCBzdGF0ZSAqLw0KKyNkZWZpbmUgWkNDX1JFTFRNTyAgICAgICgxMCkgLyogVGltZW91dCBpbiBtYXN0ZXIgcmVsZWFzZSBzdGF0ZSAqLw0KKyNkZWZpbmUgWkNDX1JJTkdUTU8gICAgICgxMCkgLyogVGltZW91dCBpbiBtYXN0ZXIgcmluZ2luZyBzdGF0ZSAqLw0KKyNkZWZpbmUgWkNDX1NFSVpFVE1PICAgICgxMCkgLyogVGltZW91dCBpbiBtYXN0ZXIgc2VpemUgc3RhdGUgKi8NCisjZGVmaW5lIFpDQ19SQlRNTyAgICAgICAoNDApIC8qIFRpbWVvdXQgaW4gcmluZ2JhY2sgc3RhdGUgKi8NCisjZGVmaW5lIFpDQ19ESUFMVE1PICAgICAoMzApIC8qIFRpbWVvdXQgaW4gZGlhbCBzdGF0ZSAqLw0KKyNkZWZpbmUgWkNDX1BTVE5TV1RNTyAgICg1KSAgLyogVGltZW91dCBpbiBwc3RuIHN3aXRjaGluZyBzdGF0ZSAqLw0KKyNkZWZpbmUgWkNDX0lOVEVSRElHSVRTSE9SVCAgICAoNSkgIC8qIFRpbWVvdXQgKGludGVyZGlnaXQgc2hvcnQpIGluIGRhY2NtIHN0YXRlKi8NCisjZGVmaW5lIFpDQ19XQUlUX1JFU09VUkNFVE1PICAgKDgpICAvKiBUaW1lb3V0IGluIHdhaXRpbmcgZm9yIHJlc291cmNlIHN0YXRlICovDQorDQorLyogRGVmaW5lIGRpZ2l0cyBtYXRjaCByZXN1bHRzLiAqLw0KKyNkZWZpbmUgWkNDX05PX1JFU1VMVCAgICAgICAoMHgwMCkgIC8qIG5lZWQgbW9yZSBkaWdpdHMgKi8NCisjZGVmaW5lIFpDQ19DQUxMICAgICAgICAgICAgICAgICgweDAxKSAgLyogYWxsIGRpZ2l0cyBjb2xsZWN0ZWQgKi8NCisjZGVmaW5lIFpDQ19CQU9DX1JFRyAgICAgICAoMHgxMCkgDQorI2RlZmluZSBaQ0NfQkFPQ19ERVJFRyAgICgweDExKSANCisjZGVmaW5lIFpDQ19CT0lDX1JFRyAgICAgICAoMHgxMikgDQorI2RlZmluZSBaQ0NfQk9JQ19ERVJFRyAgICgweDEzKSANCisjZGVmaW5lIFpDQ19DRlVfUkVHICAgICAgICAgICAoMHgyMCkgDQorI2RlZmluZSBaQ0NfQ0ZVX0RFUkVHICAgICAgICgweDIxKSANCisjZGVmaW5lIFpDQ19DRk5SWV9SRUcgICAgICAgKDB4MjIpIA0KKyNkZWZpbmUgWkNDX0NGTlJZX0RFUkVHICAgKDB4MjMpIA0KKyNkZWZpbmUgWkNDX0NGQl9SRUcgICAgICAgICAgICgweDI0KSANCisjZGVmaW5lIFpDQ19DRkJfREVSRUcgICAgICAgKDB4MjUpIA0KKyNkZWZpbmUgWkNDX0ZMQVNIXzEgICAgICAgICgweDMwKSAgLyogUmVsZWFzZSBhbGwgYWN0aXZlIGNhbGwgYW5kIGFjY2VwdCB0aGUgb3RoZXIoaGVsZCBvciB3YWl0aW5nKSBjYWxsICAqLw0KKyNkZWZpbmUgWkNDX0ZMQVNIXzIgICAgICAgICgweDMxKSAgLyogUGxhY2UgYWxsIGFjdGl2ZSBjYWxsIG9uIGhvbGQgYW5kIGFjY2VwdCB0aGUgb3RoZXIoaGVsZCBvciB3YWl0aW5nKSBjYWxsICovDQorI2RlZmluZSBaQ0NfRkxBU0hfMyAgICAgICAgKDB4MzIpICAvKiBBZGRzIGEgaGVsZCBjYWxsIHRvIHRoZSBjb252ZXJzYXRpb24gKi8gDQorI2RlZmluZSBaQ0NfRkxBU0hfNCAgICAgICAgKDB4MzMpICAvKiBjYWxsIHRyYW5zZmVyICovIA0KKyNkZWZpbmUgWkNDX0ZMQVNIXzAgICAgICAgICgweDM0KSAgLyogcmVsZWFzZSB3YWl0aW5nIGNhbGwgKi8gDQorI2RlZmluZSBaQ0NfTE9DQUxfVEVTVF9DQUxMCQkoMHhGRi0xKQ0KKyNkZWZpbmUgWkNDX01BVENIRVJSICAgICAgICAgKDB4RkYpICAvKiB3cm9uZyBpbnB1dCAqLw0KKw0KKw0KKy8qIERlZmluZSBtYXN0ZXIgc3RhdGUgbWFjaGluZSBzdGF0ZXMuICovDQordHlwZWRlZiBlbnVtIHsNCisgICAgWkNDX01fUkVMRUFTRV9TICAgID0gMCwNCisgICAgWkNDX01fUklOR0lOR19TICAgID0gMSwNCisgICAgWkNDX01fU0VJWkVfUyAgICAgID0gMg0KK30gVF96Q2NfTWFzdGVyU3RhdGU7DQorDQorLyogRGVmaW5lIHNsYXZlIHN0YXRlIG1hY2hpbmUgc3RhdGVzLsuz0PKyu7/JtffV+yAqLw0KK3R5cGVkZWYgZW51bSB7DQorICAgIFpDQ19TX0lETEVfUyAgICAgICAgPSAwLA0KKyAgICBaQ0NfU19EVF9TICAgICAgICAgICAsDQorICAgIFpDQ19TX0RBQ0NNX1MgICAgLA0KKyAgICBaQ0NfU19ESUFMSU5HX1MgICwNCisgICAgWkNDX1NfUklOR0JBQ0tfUyAgICwvLyDW973Quf2zzNbQtcTV8cHlzKwNCisgICAgWkNDX1NfQlNZVF9TICAgICAgICwNCisgICAgWkNDX1NfVEtZVF9TICAgICAgICwNCisgICAgWkNDX1NfU0lMX1MgICAgICAgICwNCisgICAgWkNDX1NfVEFMS0lOR19TICAgICwNCisgICAgWkNDX1NfVFJZSU5HX1MgICAgICwNCisgICAgWkNDX1NfV0FJVF9SRVNPVVJDRV9TICwNCit9ICBUX3pDY19TbGF2ZVN0YXRlLCBUX3pDY19DYWxsU3RhdGU7DQorDQorLyogRGVmaW5lIGtub3duIHRvbmUgdHlwZXMuICovDQordHlwZWRlZiBlbnVtIHsNCisgICAgWkNDX1RPTkVfT0ZGX0EgICA9IDAsDQorICAgIFpDQ19UT05FX1NJTF9BICAgPSAxLA0KKyAgICBaQ0NfVE9ORV9SQl9BICAgID0gMiwNCisgICAgWkNDX1RPTkVfQlNZX0EgICA9IDMsDQorICAgIC8vWkNDX1RPTkVfRkJTWV9BICA9IDQsDQorICAgIFpDQ19UT05FX1RLWV9BICAgPSA1LA0KKyAgICBaQ0NfVE9ORV9ESUFMX0EgID0gNiwNCisgICAgWkNDX1RPTkVfQ0lEQ1dfQSA9IDcsDQorfVRfekNjX1RvbmU7DQorDQorDQorLyogRGVmaW5lIGtub3duIG1lc3NhZ2VzIHRvIFNJUC4gKi8NCit0eXBlZGVmIGVudW0gew0KKyAgICBaQ0NfU05PX00gICAgICAgICAgPSAwLA0KKyAgICBaQ0NfU0JVU1lfTSAgICAgICAgPSAxLCAgLyogV2hlbiB0aGlzIG5vZGUgaXMgYnVzeSAqLw0KKyAgICBaQ0NfU0FOU19NICAgICAgICAgPSAyLCAgLyogV2hlbiB0aGlzIG5vZGUgYW5zd2VyZWQgKi8NCisgICAgWkNDX1NJTlZfTSAgICAgICAgID0gMywgIC8qIFdoZW4gdG8gaW52aXRlIHRoZSBvdGhlciBub2RlICovDQorICAgIFpDQ19TUkVHX00gICAgICAgICA9IDQsICAvKiBXaGVuIHRvIHJlZ2lzdGVyICovDQorICAgIFpDQ19TRElTQ05fTSAgICAgICA9IDUsICAvKiBXaGVuIHRoaXMgbm9kZSBkaXNjb25uZWN0ZWQgKi8NCisgICAgWkNDX1NSSU5HX00gICAgICAgID0gNiwgIC8qIFdoZW4gdGhpcyBub2RlIHN0YXJ0cyByaW5naW5nICovDQorICAgIFpDQ19TUkJBTlNfTSAgICAgICA9IDcsICAvKiBXaGVuIHRoZSBvdGhlciBub2RlIGFuc3dlcmVkICovDQorICAgIFpDQ19TSE9MRF9NICAgICAgICA9IDgsICAvKiBXaGVuIHRoZSBvdGhlciBub2RlIGlzIHB1dCBvbiBob2xkICovDQorICAgIFpDQ19TUkVJTlZfTSAgICAgICA9IDksICAvKiBXaGVuIHRoZSBvdGhlciBub2RlIGlzIHB1dCBvZmYgaG9sZCAqLw0KKyAgICBaQ0NfU01FRElBX00gICAgICAgPSAxMCwgLyogV2hlbiBhIG1lZGlhIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgKi8NCisgICAgWkNDX1NESUdJVFNfTSAgICAgID0gMTgsIC8qIFdoZW4gYSBkaWdpdHMgdGltZW91dCBvY2N1cnMgKi8NCisgICAgWkNDX1NEVE1GX00gICAgICAgID0gMTksIC8qIFdoZW4gYSBEVE1GIHJlbGF5IG9jY3VycyAqLw0KKyAgICBaQ0NfU1JJTkdfUlNSQ19SRUFEWV9NID0gMTE5LCAvKiBXaGVuIHRoaXMgbW9kZSBzdGFydCByaW5naW5nIGZvciByZXNvdXJjZSByZWFkeSAqLw0KK30gVF96Q2NfU1Jlc3A7DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiDK/b7dveG5ubao0uXH+A0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgICBVSU5UOCBjdXJDbWQ7DQorICAgIFVJTlQ4IGN1ckF0Q21kU3JjOw0KK31UX3pDY19DdXJBdENtZEluZm87DQorDQorDQorLyogU2xhdmUgc3RhdGUgbWFjaGluZSBvYmplY3QuICovDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgICBUX3pDY19TbGF2ZVN0YXRlICAgIHN0YXRlOyAgLyogVGhpcyBzbGF2ZSdzIHN0YXRlICovDQorICAgIFRfekNjX1NsYXZlU3RhdGUgICAgb2xkX3N0YXRlOw0KKyAgICBUX3pDY19Ub25lICAgICAgICAgICAgdG9uZTsgICAvKiBXaGF0IHRvbmUgdG8gcGxheSAqLw0KKyAgICBUX3pDY19TUmVzcCAgICAgICAgICBzTXNnOyAgIC8qIEFjdGlvbiBmb3IgU0lQICovDQorICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBoZWxkY2FsbDsgICAvKiBXaGVuIDEsIHRoZSBjYWxsIGlzIGluIGhlbGQgc3RhdGUgKi8NCisgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBjb25mY2FsbDsgICAvKiBXaGVuIDEsIHRoZSBjYWxsIGlzIGluIGNvbmZlcmVuY2UgKi8NCisgICAgVUlOVDggICAgICAgICAgICAgICAgICAgIHdhaXREU0NJNjsgICAvKiBob29rb24sd2FpdCBEU0NJNiAqLw0KKyAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgY2lkOyAgICAgIC8qIGNhbGwgaWQgKi8gICAgDQorICAgIFVJTlQxNgkJCQlpZGxlX3NlY29uZDsgLyppZiBob29rb2ZmIGJ1dCBubyBrZXkgaXMgZG93biwgdGhpcyB2YXIgc2hvdyB0aGUgdGltZSBmb3Igd2FpdGluZyBrZXkgdG8gaW5wdXQgKi8NCisJQ0hBUiAgICAgICAgICAgICAgICAgbnVtYmVyW1pESUFMX05VTV9NQVhdOw0KKwlVSU5UOAkJCQlpc19jYWxsb3V0Ow0KKwlVSU5UOCAgICAgICAgICAgICAgIGlzX2NpZGN3Ow0KK30gVF96Q2NfU2xhdmVPYmo7DQorDQorLyogTWFzdGVyIHN0YXRlIG1hY2hpbmUgb2JqZWN0LiAqLw0KK3R5cGVkZWYgc3RydWN0IHsNCisgICAgVF96Q2NfTWFzdGVyU3RhdGUgc3RhdGU7ICAgICAgICAgICAgICAgLyogVGhpcyBtYXN0ZXIncyBzdGF0ZSAqLw0KKyAgICBUX3pDY19TbGF2ZU9iaiAgICBzbGF2ZU9ialtaQ0NfU0xBVkVTXTsNCisgICAgVVNIT1JUICAgICAgICBldnRbWkNDX1NMQVZFU107DQorICAgLy8gVUlOVDggICAgICAgICAgICAgICAgZm9jdXM7ICAgICAgICAgICAgICAgLyogV2hpY2ggc2xhdmUgaW4gZm9jdXMgKi8NCisgICAgVUlOVDggICAgICAgICAgICAgICAgbW9kZTsgICAgICAgICAgICAgICAvKiBDdXJyZW50IG1vZGUgKi8NCisgICAgVUlOVDggICAgICAgICAgICAgICAgY2h1cFNlbnQ7ICAgICAgICAgICAgICAgDQorICAgIFVJTlQ4ICAgICAgICAgICAgICAgIHJpbmdDaWQ7ICAgICAgICAgICAgICAgIC8qIFJpbmcgdGhlIHBob25lICovDQorICAgIFVJTlQ4ICAgICAgICAgICAgICAgIHJlc291cmNlUmVhZHk7ICAgICAgICAgICAgICAgIC8qIFpDUEk6IHgsNSByZWNlaXZlZCAqLw0KKyAgICBVSU5UOCAgICAgICAgICAgICAgICBkQ291bnQ7ICAgICAgICAgICAgICAvKiBDb2xsZWN0ZWQgRFRNRiBkaWdpdHMgc3RyaW5nICovDQorICAgIENIQVIgICAgICAgICAgICAgICAgZGlnaXRzW1pESUFMX05VTV9NQVhdOy8vIGRpYWxsZWQgIG51bWJlcg0KKyAgICBDSEFSICAgICAgICAgICAgICAgICBudW1iZXJbWkRJQUxfTlVNX01BWF07Ly8gY2FsbGluZyBudW1iZXINCisgICAgVUlOVDggICAgICAgICAgICAgICAgY29uZk51bTsgICAgICAgICAgICAgLyogdG90YWwgY29uZmVyZW5jZSBudW1iZXIgKi8NCisgICAgRV9DQ19BUFBfQXRSZXFDbWRJZCAgICAgICAgICAgICAgICBjdXJBdENtZElkOw0KKyAgICBVSU5UOCAgICAgICAgICAgICAgICBob29rb2ZmZmc7DQorICAgIFVJTlQ4ICAgICAgICAgICAgICAgIGFjdENhbGxOdW07ICAgICAgICAgICAgIC8qIHRvdGFsIGFjdGl2ZSBjYWxsIG51bWJlciAqLw0KKyAgICBVSU5UOCAgICAgICAgICAgICAgICBsYXN0VG9uZTsgICAgICANCisgICAgVUlOVDggICAgICAgICAgICAgICAgd2FpdGNobGRyZXN1bHQ7DQorICAgIFRfekNjX01hc3RlclN0YXRlIG9sZF9zdGF0ZTsgDQorfSBUX3pDY19NYXN0ZXJPYmosIFRfekNjX0NhbGxEZXRhaWw7DQorDQorZXh0ZXJuIFRfekNjX0NhbGxEZXRhaWwgZ19DY19DYWxsRGV0YWlsOw0KKw0KK2V4dGVybiBUX3pDY19DdXJBdENtZEluZm8gKmdfQ2NfQXRJbmRSc3BNc2c7DQorLy90eXBlZGVmICAgIFZPSUQgKCp6Q2NfU2xpY0V2RnVuYykoVUlOVDggUGFyYSk7DQorVk9JRCB6Q2NfU2VuZE1zZ1RvU3ViKE1TR19CVUYgKnBNc2cpOw0KK2ludCB6Q2Nfc2xlZXAobG9uZyBtcyk7IA0KK1ZPSUQgekNjX1NlbmRNc2dUb1JzcFN1YihNU0dfQlVGICpwTXNnKTsNCisNCisjZW5kaWYNCisNCg==