ZGlmZiAtLWdpdCBhL2JvYXJkL3hhZW5pYXgvTWFrZWZpbGUgYi9ib2FyZC94YWVuaWF4L01ha2VmaWxlCmluZGV4IDdkZDJlYTAuLjU1NDkxNWEgMTAwNjQ0Ci0tLSBhL2JvYXJkL3hhZW5pYXgvTWFrZWZpbGUKKysrIGIvYm9hcmQveGFlbmlheC9NYWtlZmlsZQpAQCAtMjYsMTcgKzI2LDE1IEBACiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKIENPQkpTCTo9IHhhZW5pYXgubyBmbGFzaC5vCi1TT0JKUwk6PSBsb3dsZXZlbF9pbml0Lm8KIAotU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQorU1JDUwk6PSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCi1TT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogCiBjbGVhbjoKLQlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisJcm0gLWYgJChPQkpTKQogCiBkaXN0Y2xlYW46CWNsZWFuCiAJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgJChvYmopLmRlcGVuZApkaWZmIC0tZ2l0IGEvYm9hcmQveGFlbmlheC9jb25maWcubWsgYi9ib2FyZC94YWVuaWF4L2NvbmZpZy5tawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYzOTc1Mi4uMDAwMDAwMAotLS0gYS9ib2FyZC94YWVuaWF4L2NvbmZpZy5taworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotQ09ORklHX1NZU19URVhUX0JBU0UgPSAweGEzRkIwMDAwCi0jQ09ORklHX1NZU19URVhUX0JBU0UgPSAwCmRpZmYgLS1naXQgYS9ib2FyZC94YWVuaWF4L2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL3hhZW5pYXgvbG93bGV2ZWxfaW5pdC5TCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2UxNjIwLi4wMDAwMDAwCi0tLSBhL2JvYXJkL3hhZW5pYXgvbG93bGV2ZWxfaW5pdC5TCisrKyAvZGV2L251bGwKQEAgLTEsNDI0ICswLDAgQEAKLSAvKgotICogTW9zdCBvZiB0aGlzIHRha2VuIGZyb20gUmVkYm9vdCBoYWxfcGxhdGZvcm1fc2V0dXAuaCB3aXRoIGNsZWFudXAKLSAqCi0gKiBOT1RFOiBJIGhhdmVuJ3QgY2xlYW4gdGhpcyB1cCBjb25zaWRlcmFibHksIGp1c3QgZW5vdWdoIHRvIGdldCBpdAotICogcnVubmluZy4gU2VlIGhhbF9wbGF0Zm9ybV9zZXR1cC5oIGZvciB0aGUgc291cmNlLiBTZWUKLSAqIGJvYXJkL2NyYWRsZS9sb3dsZXZlbF9pbml0LlMgZm9yIGFub3RoZXIgUFhBMjUwIHNldHVwIHRoYXQgaXMKLSAqIG11Y2ggY2xlYW5lci4KLSAqCi0gKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwotICogcHJvamVjdC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAotICogTUEgMDIxMTEtMTMwNyBVU0EKLSAqLwotCi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0jaW5jbHVkZSA8dmVyc2lvbi5oPgotI2luY2x1ZGUgPGFzbS9hcmNoL3B4YS1yZWdzLmg+Ci0KLURSQU1fU0laRTogIC5sb25nICAgQ09ORklHX1NZU19EUkFNX1NJWkUKLQotLyogd2FpdCBmb3IgY29wcm9jZXNzb3Igd3JpdGUgY29tcGxldGUgKi8KLQkubWFjcm8gQ1BXQUlUIHJlZwotCW1yYyAgcDE1LDAsXHJlZyxjMixjMCwwCi0JbW92ICBccmVnLFxyZWcKLQlzdWIgIHBjLHBjLCM0Ci0JLmVuZG0KLQotCi0uZ2xvYmwgbG93bGV2ZWxfaW5pdAotbG93bGV2ZWxfaW5pdDoKLQotCW1vdgkgcjEwLCBscgotCi0JLyogU2V0IHVwIEdQSU8gcGlucyBmaXJzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JbGRyCXIwLD1HUFNSMAotCWxkcglyMSw9Q09ORklHX1NZU19HUFNSMF9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HUFNSMQotCWxkcglyMSw9Q09ORklHX1NZU19HUFNSMV9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HUFNSMgotCWxkcglyMSw9Q09ORklHX1NZU19HUFNSMl9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HUENSMAotCWxkcglyMSw9Q09ORklHX1NZU19HUENSMF9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HUENSMQotCWxkcglyMSw9Q09ORklHX1NZU19HUENSMV9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HUENSMgotCWxkcglyMSw9Q09ORklHX1NZU19HUENSMl9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HUERSMAotCWxkcglyMSw9Q09ORklHX1NZU19HUERSMF9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HUERSMQotCWxkcglyMSw9Q09ORklHX1NZU19HUERSMV9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HUERSMgotCWxkcglyMSw9Q09ORklHX1NZU19HUERSMl9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HQUZSMF9MCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dBRlIwX0xfVkFMCi0Jc3RyCXIxLFtyMF0KLQotCWxkcglyMCw9R0FGUjBfVQotCWxkcglyMSw9Q09ORklHX1NZU19HQUZSMF9VX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdBRlIxX0wKLQlsZHIJcjEsPUNPTkZJR19TWVNfR0FGUjFfTF9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1HQUZSMV9VCi0JbGRyCXIxLD1DT05GSUdfU1lTX0dBRlIxX1VfVkFMCi0Jc3RyCXIxLFtyMF0KLQotCWxkcglyMCw9R0FGUjJfTAotCWxkcglyMSw9Q09ORklHX1NZU19HQUZSMl9MX1ZBTAotCXN0cglyMSxbcjBdCi0KLQlsZHIJcjAsPUdBRlIyX1UKLQlsZHIJcjEsPUNPTkZJR19TWVNfR0FGUjJfVV9WQUwKLQlzdHIJcjEsW3IwXQotCi0JbGRyCXIwLD1QU1NSCQkvKiBlbmFibGUgR1BJTyBwaW5zICovCi0JbGRyCXIxLD1DT05GSUdfU1lTX1BTU1JfVkFMCi0Jc3RyCXIxLFtyMF0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBFbmFibGUgbWVtb3J5IGludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIFRoZSBzZXF1ZW5jZSBiZWxvdyBpcyBiYXNlZCBvbiB0aGUgcmVjb21tZW5kZWQgaW5pdCBzdGVwcyAgICAgICAgKi8KLQkvKiBkZXRhaWxlZCBpbiB0aGUgSW50ZWwgUFhBMjUwIE9wZXJhdGluZyBTeXN0ZW1zIERldmVsb3BlcnMgR3VpZGUsICovCi0JLyogQ2hhcHRlciAxMC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDE6IFdhaXQgZm9yIGF0IGxlYXN0IDIwMCBtaWNyb3NlZG9uZHMgdG8gYWxsb3cgaW50ZXJuYWwgICAgICovCi0JLyogICAgICAgICBjbG9ja3MgdG8gc2V0dGxlLiBPbmx5IG5lY2Vzc2FyeSBhZnRlciBoYXJkIHJlc2V0Li4uICAgICAqLwotCS8qICAgICAgICAgRklYTUU6IGNhbiBiZSBvcHRpbWl6ZWQgbGF0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQlsZHIJcjMsID1PU0NSCQkvKiByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybyAqLwotCW1vdglyMiwgIzAKLQlzdHIJcjIsIFtyM10KLQlsZHIJcjQsID0weDMwMAkJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsICAgKi8KLQkJCQkJLyogc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eSAgICAgICAgKi8KLTE6Ci0JbGRyCXIyLCBbcjNdCi0JY21wCXI0LCByMgotCWJndAkxYgotCi1tZW1faW5pdDoKLQotCWxkcglyMSw9TUVNQ19CQVNFCQkvKiBnZXQgbWVtb3J5IGNvbnRyb2xsZXIgYmFzZSBhZGRyLiAqLwotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmE6IEluaXRpYWxpemUgQXN5bmNocm9ub3VzIHN0YXRpYyBtZW1vcnkgY29udHJvbGxlciAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBNU0MgcmVnaXN0ZXJzOiB0aW1pbmcsIGJ1cyB3aWR0aCwgbWVtIHR5cGUgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQkvKiBNU0MwOiBuQ1MoMCwxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiw9Q09ORklHX1NZU19NU0MwX1ZBTAotCXN0ciAgICAgcjIsW3IxLCAjTVNDMF9PRkZTRVRdCi0JbGRyICAgICByMixbcjEsICNNU0MwX09GRlNFVF0JLyogcmVhZCBiYWNrIHRvIGVuc3VyZSBkYXRhIGxhdGNoZXMgKi8KLQotCS8qIE1TQzE6IG5DUygyLDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLD1DT05GSUdfU1lTX01TQzFfVkFMCi0Jc3RyICAgICByMixbcjEsICNNU0MxX09GRlNFVF0KLQlsZHIgICAgIHIyLFtyMSwgI01TQzFfT0ZGU0VUXQotCi0JLyogTVNDMjogbkNTKDQsNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsPUNPTkZJR19TWVNfTVNDMl9WQUwKLQlzdHIgICAgIHIyLFtyMSwgI01TQzJfT0ZGU0VUXQotCWxkciAgICAgcjIsW3IxLCAjTVNDMl9PRkZTRVRdCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyYjogSW5pdGlhbGl6ZSBDYXJkIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIE1FQ1I6IE1lbW9yeSBFeHBhbnNpb24gQ2FyZCBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLD1DT05GSUdfU1lTX01FQ1JfVkFMCi0Jc3RyICAgICByMixbcjEsICNNRUNSX09GRlNFVF0KLQlsZHIJcjIsW3IxLCAjTUVDUl9PRkZTRVRdCi0KLQkvKiBNQ01FTTA6IENhcmQgSW50ZXJmYWNlIHNsb3QgMCB0aW1pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiw9Q09ORklHX1NZU19NQ01FTTBfVkFMCi0Jc3RyICAgICByMixbcjEsICNNQ01FTTBfT0ZGU0VUXQotCWxkcglyMixbcjEsICNNQ01FTTBfT0ZGU0VUXQotCi0JLyogTUNNRU0xOiBDYXJkIEludGVyZmFjZSBzbG90IDEgdGltaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsPUNPTkZJR19TWVNfTUNNRU0xX1ZBTAotCXN0ciAgICAgcjIsW3IxLCAjTUNNRU0xX09GRlNFVF0KLQlsZHIJcjIsW3IxLCAjTUNNRU0xX09GRlNFVF0KLQotCS8qIE1DQVRUMDogQ2FyZCBJbnRlcmZhY2UgQXR0cmlidXRlIFNwYWNlIFRpbWluZywgc2xvdCAwICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLD1DT05GSUdfU1lTX01DQVRUMF9WQUwKLQlzdHIgICAgIHIyLFtyMSwgI01DQVRUMF9PRkZTRVRdCi0JbGRyCXIyLFtyMSwgI01DQVRUMF9PRkZTRVRdCi0KLQkvKiBNQ0FUVDE6IENhcmQgSW50ZXJmYWNlIEF0dHJpYnV0ZSBTcGFjZSBUaW1pbmcsIHNsb3QgMSAgICAgICAgICAgICovCi0JbGRyICAgICByMiw9Q09ORklHX1NZU19NQ0FUVDFfVkFMCi0Jc3RyICAgICByMixbcjEsICNNQ0FUVDFfT0ZGU0VUXQotCWxkcglyMixbcjEsICNNQ0FUVDFfT0ZGU0VUXQotCi0JLyogTUNJTzA6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMCAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsPUNPTkZJR19TWVNfTUNJTzBfVkFMCi0Jc3RyICAgICByMixbcjEsICNNQ0lPMF9PRkZTRVRdCi0JbGRyCXIyLFtyMSwgI01DSU8wX09GRlNFVF0KLQotCS8qIE1DSU8xOiBDYXJkIEludGVyZmFjZSBJL08gU3BhY2UgVGltaW5nLCBzbG90IDEgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIyLD1DT05GSUdfU1lTX01DSU8xX1ZBTAotCXN0ciAgICAgcjIsW3IxLCAjTUNJTzFfT0ZGU0VUXQotCWxkcglyMixbcjEsICNNQ0lPMV9PRkZTRVRdCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyYzogV3JpdGUgRkxZQ05GRyAgRklYTUU6IHdoYXQncyB0aGF0Pz8/ICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJkOiBJbml0aWFsaXplIFRpbWluZyBmb3IgU3luYyBNZW1vcnkgKFNEQ0xLMCkgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JQCBnZXQgdGhlIG1kcmVmciBzZXR0aW5ncwotCWxkciAgICAgcjQsPUNPTkZJR19TWVNfTURSRUZSX1ZBTAotCi0JQCB3cml0ZSBiYWNrIG1kcmVmcgotCXN0ciAgICAgcjQsW3IxLCAjTURSRUZSX09GRlNFVF0KLQlsZHIgICAgIHI0LFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAzOiBJbml0aWFsaXplIFN5bmNocm9ub3VzIFN0YXRpYyBNZW1vcnkgKEZsYXNoL1BlcmlwaGVyYWxzKSAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIEluaXRpYWxpemUgU1hDTkZHIHJlZ2lzdGVyLiBBc3NlcnQgdGhlIGVuYWJsZSBiaXRzICAgICAgICAgICAgICAgKi8KLQotCS8qIFdyaXRlIFNYTVJTIHRvIGNhdXNlIGFuIE1SUyBjb21tYW5kIHRvIGFsbCBlbmFibGVkIGJhbmtzIG9mICAgICAgKi8KLQkvKiBzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5LiBOb3RlIHRoYXQgU1hMQ1IgbmVlZCBub3QgYmUgd3JpdHRlbiAgICovCi0JLyogYXQgdGhpcyB0aW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JLyogRklYTUU6IHdlIHVzZSBhc3luYyBtb2RlIGZvciBub3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgNDogSW5pdGlhbGl6ZSBTRFJBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQlAIHNldCBLMVJVTiBmb3IgYmFuayAwCi0JQAotCW9yciAgIHI0LCAgcjQsICAjTURSRUZSX0sxUlVOCi0KLQlAIHdyaXRlIGJhY2sgbWRyZWZyCi0JQAotCXN0ciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCWxkciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0JQCBkZWFzc2VydCBTTEZSU0gKLQlACi0JYmljICAgICByNCwgIHI0LCAgI01EUkVGUl9TTEZSU0gKLQotCUAgd3JpdGUgYmFjayBtZHJlZnIKLQlACi0Jc3RyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0JbGRyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCi0KLQlAIGFzc2VydCBFMVBJTgotCUAgaWYgRTBQSU4gaXMgYWxzbyB1c2VkOgkgIyhNRFJFRlJfRTFQSU58TURSRUZSX0UwUElOKQotCW9yciAgICAgcjQsICByNCwgIyhNRFJFRlJfRTFQSU4pCi0KLQlAIHdyaXRlIGJhY2sgbWRyZWZyCi0JQAotCXN0ciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCWxkciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCW5vcAotCW5vcAotCi0JLyogU3RlcCA0ZDoJCQkJCQkJKi8KLQkvKiBmZXRjaCBwbGF0Zm9ybSB2YWx1ZSBvZiBtZGNuZmcJCQkJKi8KLQlACi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01EQ05GR19WQUwKLQotCUAgZGlzYWJsZSBhbGwgc2RyYW0gYmFua3MKLQlACi0JYmljICAgICByMiwgIHIyLCAgIyhNRENORkdfREUwIHwgTURDTkZHX0RFMSkKLQliaWMgICAgIHIyLCAgcjIsICAjKE1EQ05GR19ERTIgfCBNRENORkdfREUzKQotCi0JQCBwcm9ncmFtIGJhbmtzIDAvMSBmb3IgYnVzIHdpZHRoCi0JQAotCWJpYyAgIHIyLCAgcjIsICAjTURDTkZHX0RXSUQwICAgICAgQDA9MzItYml0Ci0KLQlAIHdyaXRlIGluaXRpYWwgdmFsdWUgb2YgbWRjbmZnLCB3L28gZW5hYmxpbmcgc2RyYW0gYmFua3MKLQlACi0Jc3RyICAgICByMiwgIFtyMSwgI01EQ05GR19PRkZTRVRdCi0KLQkvKiBTdGVwIDRlOiBXYWl0IGZvciB0aGUgY2xvY2sgdG8gdGhlIFNEUkFNcyB0byBzdGFiaWxpemUsICAgICAgICAgICovCi0JLyogICAgICAgICAgMTAwLi4yMDAgtXNlYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JbGRyCXIzLCA9T1NDUgkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KLQltb3YJcjIsICMwCi0Jc3RyCXIyLCBbcjNdCi0JbGRyCXI0LCA9MHgzMDAJCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCAgICovCi0JCQkJCS8qIHNvIDB4MzAwIHNob3VsZCBiZSBwbGVudHkgICAgICAgICovCi0xOgotCWxkcglyMiwgW3IzXQotCWNtcAlyNCwgcjIKLQliZ3QJMWIKLQotCi0JLyogU3RlcCA0ZjogVHJpZ2dlciBhIG51bWJlciAodXN1YWxseSA4KSByZWZyZXNoIGN5Y2xlcyBieSAgICAgICAgICAqLwotCS8qICAgICAgICAgIGF0dGVtcHRpbmcgbm9uLWJ1cnN0IHJlYWQgb3Igd3JpdGUgYWNjZXNzZXMgdG8gZGlzYWJsZWQgKi8KLQkvKiAgICAgICAgICBTRFJBTSwgYXMgY29tbW9ubHkgc3BlY2lmaWVkIGluIHRoZSBwb3dlciB1cCBzZXF1ZW5jZSAgICovCi0JLyogICAgICAgICAgZG9jdW1lbnRlZCBpbiBTRFJBTSBkYXRhIHNoZWV0cy4gVGhlIGFkZHJlc3MoZXMpIHVzZWQgICAqLwotCS8qICAgICAgICAgIGZvciB0aGlzIHB1cnBvc2UgbXVzdCBub3QgYmUgY2FjaGVhYmxlLiAgICAgICAgICAgICAgICAgKi8KLQotCWxkcglyMywJPUNPTkZJR19TWVNfRFJBTV9CQVNFCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0Jc3RyCXIyLAlbcjNdCi0KLQotCS8qIFN0ZXAgNGc6IFdyaXRlIE1EQ05GRyB3aXRoIGVuYWJsZSBiaXRzIGFzc2VydGVkICAgICAgICAgICAgICAgICAgKi8KLQkvKiBnZXQgbWVtb3J5IGNvbnRyb2xsZXIgYmFzZSBhZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMSwgID1NRU1DX0JBU0UKLQotCUBmZXRjaCBjdXJyZW50IG1kY25mZyB2YWx1ZQotCUAKLQlsZHIgICAgIHIzLCAgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotCUBlbmFibGUgc2RyYW0gYmFuayAwIGlmIGluc3RhbGxlZCAobXVzdCBkbyBmb3IgYW55IHBvcHVsYXRlZCBiYW5rKQotCUAKLQlvcnIgICAgIHIzLCAgcjMsICAjTURDTkZHX0RFMAotCi0JQHdyaXRlIGJhY2sgbWRjbmZnLCBlbmFibGluZyB0aGUgc2RyYW0gYmFuayhzKQotCUAKLQlzdHIgICAgIHIzLCAgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotCS8qIFN0ZXAgNGg6IFdyaXRlIE1ETVJTLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCWxkciAgICAgcjIsCT1DT05GSUdfU1lTX01ETVJTX1ZBTAotCXN0ciAgICAgcjIsCVtyMSwgI01ETVJTX09GRlNFVF0KLQotCi0JLyogV2UgYXJlIGZpbmlzaGVkIHdpdGggSW50ZWwncyBtZW1vcnkgY29udHJvbGxlciBpbml0aWFsaXNhdGlvbiAgICAqLwotCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRGlzYWJsZSAobWFzaykgYWxsIGludGVycnVwdHMgYXQgaW50ZXJydXB0IGNvbnRyb2xsZXIgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotaW5pdGlycXM6Ci0JbW92ICAgICByMSwgIzAJCS8qIGNsZWFyIGludC4gbGV2ZWwgcmVnaXN0ZXIgKElSUSwgbm90IEZJUSkgKi8KLQlsZHIgICAgIHIyLCAgPUlDTFIKLQlzdHIgICAgIHIxLCAgW3IyXQotCi0JbGRyICAgICByMSwgID1DT05GSUdfU1lTX0lDTVJfVkFMIC8qIG1hc2sgYWxsIGludGVycnVwdHMgYXQgdGhlIGNvbnRyb2xsZXIgKi8KLQlsZHIgICAgIHIyLCAgPUlDTVIKLQlzdHIgICAgIHIxLCAgW3IyXQotCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogQ2xvY2sgaW5pdGlhbGlzYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotaW5pdGNsa3M6Ci0KLQkvKiBEaXNhYmxlIHRoZSBwZXJpcGhlcmFsIGNsb2NrcywgYW5kIHNldCB0aGUgY29yZSBjbG9jayBmcmVxdWVuY3kgICovCi0JLyogKGhhcmQtY29kaW5nIGF0IDM5OC4xMk1IeiBmb3Igbm93KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIFR1cm4gT2ZmIEFMTCBvbi1jaGlwIHBlcmlwaGVyYWwgY2xvY2tzIGZvciByZS1jb25maWd1cmF0aW9uICAgICAgKi8KLQkvKiBOb3RlOiBTZWUgbGFiZWwgJ0VOQUJMRUNMS1MnIGZvciB0aGUgcmUtZW5hYmxpbmcgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMSwgID1DS0VOCi0JbW92ICAgICByMiwgICMwCi0Jc3RyICAgICByMiwgIFtyMV0KLQotCi0JLyogZGVmYXVsdCB2YWx1ZQkJCQkJCSAgICAqLwotCWxkciAgICAgcjIsID0oQ0NDUl9MMjd8Q0NDUl9NMnxDQ0NSX04xMCkgIC8qIERFRkFVTFQ6IHsyMDAvMjAwLzEwMH0gKi8KLQotCS8qIC4uLiBhbmQgd3JpdGUgdGhlIGNvcmUgY2xvY2sgY29uZmlnIHJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgICAgIHIxLCAgPUNDQ1IKLQlzdHIgICAgIHIyLCAgW3IxXQotCi0jaWZkZWYgUlRDCi0JLyogZW5hYmxlIHRoZSAzMktoeiBvc2NpbGxhdG9yIGZvciBSVEMgYW5kIFBvd2VyTWFuYWdlciAgICAgICAgICAgICAqLwotCi0JbGRyICAgICByMSwgID1PU0NDCi0JbW92ICAgICByMiwgICNPU0NDX09PTgotCXN0ciAgICAgcjIsICBbcjFdCi0KLQkvKiBOT1RFOiAgc3BpbiBoZXJlIHVudGlsIE9TQ0MuT09LIGdldCBzZXQsIG1lYW5pbmcgdGhlIFBMTCAgICAgICAgICovCi0JLyogaGFzIHNldHRsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotNjA6Ci0JbGRyICAgICByMiwgW3IxXQotCWFuZHMgICAgcjIsIHIyLCAjMQotCWJlcSAgICAgNjBiCi0jZW5kaWYKLQotCUAgVHVybiBvbiBuZWVkZWQgY2xvY2tzCi0JQAotdGVzdDoKLQlsZHIgICAgIHIxLCAgPUNLRU4KLQlsZHIgICAgIHIyLCAgPUNPTkZJR19TWVNfQ0tFTl9WQUwKLQlzdHIgICAgIHIyLCAgW3IxXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiBTYXZlIFNEUkFNIHNpemUgPyovCi0JbGRyCXIxLCA9RFJBTV9TSVpFCi0Jc3RyCXI4LCBbcjFdCi0KLQkvKiBGSVhNRSAqLwotCi0jZGVmaW5lIE5PREVCVUcKLSNpZmRlZiBOT0RFQlVHCi0JLypEaXNhYmxlIHNvZnR3YXJlIGFuZCBkYXRhIGJyZWFrcG9pbnRzICovCi0JbW92CXIwLCMwCi0JbWNyCXAxNSwwLHIwLGMxNCxjOCwwICAvKiBpYmNyMCAqLwotCW1jcglwMTUsMCxyMCxjMTQsYzksMCAgLyogaWJjcjEgKi8KLQltY3IJcDE1LDAscjAsYzE0LGM0LDAgIC8qIGRiY29uICovCi0KLQkvKkVuYWJsZSBhbGwgZGVidWcgZnVuY3Rpb25hbGl0eSAqLwotCW1vdglyMCwjMHg4MDAwMDAwMAotCW1jcglwMTQsMCxyMCxjMTAsYzAsMCAgLyogZGNzciAqLwotCi0jZW5kaWYKLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBFbmQgbG93bGV2ZWxfaW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLWVuZGxvd2xldmVsX2luaXQ6Ci0KLQltb3YgICAgIHBjLCBscgpkaWZmIC0tZ2l0IGEvYm9hcmQveGFlbmlheC94YWVuaWF4LmMgYi9ib2FyZC94YWVuaWF4L3hhZW5pYXguYwppbmRleCA0YzE5YzRkLi40MGIwZjNiIDEwMDY0NAotLS0gYS9ib2FyZC94YWVuaWF4L3hhZW5pYXguYworKysgYi9ib2FyZC94YWVuaWF4L3hhZW5pYXguYwpAQCAtMzksOCArMzksOSBAQAogCiBpbnQgYm9hcmRfaW5pdCAodm9pZCkKIHsKLQkvKiBtZW1vcnkgYW5kIGNwdS1zcGVlZCBhcmUgc2V0dXAgYmVmb3JlIHJlbG9jYXRpb24gKi8KLQkvKiBzbyB3ZSBkbyBfbm90aGluZ18gaGVyZSAqLworCS8qIFdlIGhhdmUgUkFNLCBkaXNhYmxlIGNhY2hlICovCisJZGNhY2hlX2Rpc2FibGUoKTsKKwlpY2FjaGVfZGlzYWJsZSgpOwogCiAJLyogYXJjaCBudW1iZXIgb2YgeGFlbmlheCAqLwogCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSA1ODU7CkBAIC01OCwxOSArNTksMTggQEAKIAlyZXR1cm4gMDsKIH0KIAorZXh0ZXJuIHZvaWQgcHhhX2RyYW1faW5pdCh2b2lkKTsKK2ludCBkcmFtX2luaXQodm9pZCkKK3sKKwlweGFfZHJhbV9pbml0KCk7CisJZ2QtPnJhbV9zaXplID0gUEhZU19TRFJBTV8xX1NJWkU7CisJcmV0dXJuIDA7Cit9CiAKLWludCBkcmFtX2luaXQgKHZvaWQpCit2b2lkIGRyYW1faW5pdF9iYW5rc2l6ZSh2b2lkKQogewogCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKIAlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwotCS8qCWdkLT5iZC0+YmlfZHJhbVsxXS5zdGFydCA9IFBIWVNfU0RSQU1fMjsqLwotCS8qCWdkLT5iZC0+YmlfZHJhbVsxXS5zaXplID0gUEhZU19TRFJBTV8yX1NJWkU7Ki8KLQkvKglnZC0+YmQtPmJpX2RyYW1bMl0uc3RhcnQgPSBQSFlTX1NEUkFNXzM7ICovCi0JLyoJZ2QtPmJkLT5iaV9kcmFtWzJdLnNpemUgPSBQSFlTX1NEUkFNXzNfU0laRTsgKi8KLQkvKglnZC0+YmQtPmJpX2RyYW1bM10uc3RhcnQgPSBQSFlTX1NEUkFNXzQ7ICovCi0JLyoJZ2QtPmJkLT5iaV9kcmFtWzNdLnNpemUgPSBQSFlTX1NEUkFNXzRfU0laRTsgKi8KLQotCXJldHVybiAwOwogfQogCiAjaWZkZWYgQ09ORklHX0NNRF9ORVQK