ZGlmZiAtLWdpdCBhLy50cmF2aXMueW1sIGIvLnRyYXZpcy55bWwKaW5kZXggODY1Y2Q3ZC4uZTRjMzE5ZiAxMDA2NDQKLS0tIGEvLnRyYXZpcy55bWwKKysrIGIvLnRyYXZpcy55bWwKQEAgLTM3LDQgKzM3LDUgQEAKICAgLSBtYWtlIHJlbGVhc2UKICAgLSBzdWRvIG1ha2UgaW5zdGFsbAogICAtIG1ha2UgdGVzdF9pbnN0YWxsCisgIC0gbWFrZSB0ZXN0CiAKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggOTM0MWFiYi4uZjVlMjY0OSAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTYsNyArNiw3IEBACiAJbWtkaXIgLXAgZGlzdDsKIAljZCBidWlsZDsgY21ha2UgLi4vIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlCiAJJChNQUtFKSAtQyBidWlsZAotCWNkIGJ1aWxkOyAuLi90ZXN0cy9yZWdyZXNzaW9uLnRjbCBtdD0wIHNob3dfZGlmZgorCiBkZWJ1ZzoKIAlta2RpciAtcCBkYnVpbGQvdGVzdHM7CiAJbWtkaXIgLXAgZGJ1aWxkL2Rpc3Q7CkBAIC0xNCwxMCArMTQsOSBAQAogCWNkIGRidWlsZDsgY21ha2UgLi4vIC1EQ01BS0VfQlVJTERfVFlQRT1EZWJ1ZwogCSQoTUFLRSkgLUMgZGJ1aWxkCiAKLQogdGVzdDoKIAlta2RpciAtcCBidWlsZC90ZXN0czsKLQljZCBidWlsZDsgLi4vdGVzdHMvcmVncmVzc2lvbi50Y2wgbXQ9MAorCWNkIGJ1aWxkOyAuLi90ZXN0cy9yZWdyZXNzaW9uLnRjbCBtdD0wIHNob3dfZGlmZgogCiBjbGVhbjoKIAlybSAtcmYgZGlzdDsKZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAppbmRleCAwNDYyZWFjLi5hOTYxMjFiIDEwMDY0NAotLS0gYS9SRUFETUUubWQKKysrIGIvUkVBRE1FLm1kCkBAIC0xMjIsNiArMTIyLDggQEAKIAogICogQSBzaW1wbGUgZXhhbXBsZSBvZiBjcmVhdGluZyBhIG5ldyBlcnJvciBtZXNzYWdlIGFuZCBnZW5lcmF0aW5nIGVycm9ycyBjYW4gYmUgZm91bmQgaGVyZTogW2BweXRob25fbGlzdGVuZXIucHlgXShzcmMvQVBJL3B5dGhvbl9saXN0ZW5lci5weSkKIAorICogQSBzaW1wbGUgZXhhbXBsZSBmb3IgZGVzaWduLWxldmVsIGRhdGEgbW9kZWwgZXhwbG9yYXRpb24gY2FuIGJlIGZvdW5kIGhlcmU6IFtgbXlzY3JpcHRQZXJEZXNpZ24ucHlgXSh0ZXN0cy9Vbml0UHl0aG9uL215c2NyaXB0UGVyRGVzaWduLnB5KQorIAogICogVGhlIGNvbXBsZXRlIFB5dGhvbiBBUEkgaXMgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgZmlsZXM6IFtgU0xBUEkuaGBdKHNyYy9BUEkvU0xBUEkuaCkgW2B2b2JqZWN0dHlwZXNgXShzcmMvQVBJL3ZvYmplY3R0eXBlcy5weSkKIAogICogV2FpdmVycyBjYW4gYmUgaW5zdGFsbGVkIGluIHNsd2FpdmVycy5weSBmaWxlcyBpbiB0aGUgZXhlY3V0aW9uIGRpcmVjdG9yeSBvciBpbnN0YWxsIGRpcmVjdG9yeSAvdXNyL2xvY2FsL2xpYi9zdXJlbG9nL3B5dGhvbgpkaWZmIC0tZ2l0IGEvc3JjL0NhY2hlL0NhY2hlLmNwcCBiL3NyYy9DYWNoZS9DYWNoZS5jcHAKaW5kZXggMGIzZmI1Zi4uMzRkMGQ4OSAxMDA2NDQKLS0tIGEvc3JjL0NhY2hlL0NhY2hlLmNwcAorKysgYi9zcmMvQ2FjaGUvQ2FjaGUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNhY2hlRmlsZU5hbWUpIHsKICAgLyogU2NoZW1hIHZlcnNpb24gKi8KICAgaWYgKHNjaGVtYVZlcnNpb24gIT0gaGVhZGVyLT5tX2ZsYl92ZXJzaW9uKCktPmNfc3RyKCkpIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICByZXR1cm4gZmFsc2U7CiAgIH0KIAogICAvKiBUb29sIHZlcnNpb24gKi8KQEAgLTg3LDExICs4NywxNiBAQAogICAgIHRpbWVfdCBjdCA9IGdldF9tdGltZShjYWNoZUZpbGVOYW1lLmNfc3RyKCkpOwogICAgIHN0ZDo6c3RyaW5nIGZpbGVOYW1lID0gaGVhZGVyLT5tX2ZpbGUoKS0+Y19zdHIoKTsKICAgICB0aW1lX3QgZnQgPSBnZXRfbXRpbWUoZmlsZU5hbWUuY19zdHIoKSk7Ci0gICAgaWYgKGZ0ID09IC0xKSByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGN0ID09IC0xKSByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGN0IDwgZnQpIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZnQgPT0gLTEpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKGN0ID09IC0xKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChjdCA8IGZ0KSB7CisgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgIH0KLQogICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL0NhY2hlL1BhcnNlQ2FjaGUuY3BwIGIvc3JjL0NhY2hlL1BhcnNlQ2FjaGUuY3BwCmluZGV4IGU3NmY3MWUuLjI2Yjk3ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9DYWNoZS9QYXJzZUNhY2hlLmNwcAorKysgYi9zcmMvQ2FjaGUvUGFyc2VDYWNoZS5jcHAKQEAgLTE3Nyw3ICsxNzcsOSBAQAogCiBib29sIFBhcnNlQ2FjaGU6OmNoZWNrQ2FjaGVJc1ZhbGlkXyhzdGQ6OnN0cmluZyBjYWNoZUZpbGVOYW1lKSB7CiAgIHVpbnQ4X3QqIGJ1ZmZlcl9wb2ludGVyID0gb3BlbkZsYXRCdWZmZXJzKGNhY2hlRmlsZU5hbWUpOwotICBpZiAoYnVmZmVyX3BvaW50ZXIgPT0gTlVMTCkgcmV0dXJuIGZhbHNlOworICBpZiAoYnVmZmVyX3BvaW50ZXIgPT0gTlVMTCkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQogICBpZiAoIVBBUlNFQ0FDSEU6OlBhcnNlQ2FjaGVCdWZmZXJIYXNJZGVudGlmaWVyKGJ1ZmZlcl9wb2ludGVyKSkgewogICAgIGRlbGV0ZVtdIGJ1ZmZlcl9wb2ludGVyOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9Db21tYW5kTGluZS9Db21tYW5kTGluZVBhcnNlci5jcHAgYi9zcmMvQ29tbWFuZExpbmUvQ29tbWFuZExpbmVQYXJzZXIuY3BwCmluZGV4IGE1MDc5OTQuLmYyNDMxMmEgMTAwNjQ0Ci0tLSBhL3NyYy9Db21tYW5kTGluZS9Db21tYW5kTGluZVBhcnNlci5jcHAKKysrIGIvc3JjL0NvbW1hbmRMaW5lL0NvbW1hbmRMaW5lUGFyc2VyLmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgPHNzdHJlYW0+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlICJDb21tYW5kTGluZS9Db21tYW5kTGluZVBhcnNlci5oIgogI2luY2x1ZGUgIlV0aWxzL1N0cmluZ1V0aWxzLmgiCiAjaW5jbHVkZSAiVXRpbHMvRmlsZVV0aWxzLmgiCkBAIC0xMDgsNiArMTEwLDcgQEAKICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgaWYgXCJtYXhcIiBpcyBnaXZlbiwgdGhlIHByb2dyYW0gd2lsbCB1c2Ugb25lICIKICAgICAidGhyZWFkIiwKICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgcGVyIGNvcmUgb24gdGhlIGhvc3QiLAorICAgICIgIC1tcCA8bWJfbWF4X3Byb2Nlc3M+ICAwIHVwIHRvIDUxMiBtYXggcHJvY2Vzc2VzLCAwIG9yIDEgYmVpbmcgc2luZ2xlIHByb2Nlc3MiLAogICAgICIgIC1zcGxpdCA8bGluZSBudW1iZXI+ICBTcGxpdCBmaWxlcyBvciBtb2R1bGVzIGxhcmdlciB0aGFuIHNwZWNpZmllZCBsaW5lICIKICAgICAibnVtYmVyIGZvciBtdWx0aSB0aHJlYWQgY29tcGlsYXRpb24iLAogICAgICIgIC10aW1lc2NhbGU9PHRpbWVzY2FsZT4gU3BlY2lmaWVzIHRoZSBvdmVyYWxsIHRpbWVzY2FsZSIsCkBAIC0yMjQsMTIgKzIyNywxNCBAQAogICAgICAgbV9maWx0ZXJQcm90ZWN0ZWRSZWdpb25zKGZhbHNlKSwKICAgICAgIG1fZmlsdGVyQ29tbWVudHMoZmFsc2UpLAogICAgICAgbV9wYXJzZShmYWxzZSksCisgICAgICBtX3BhcnNlT25seShmYWxzZSksICAKICAgICAgIG1fY29tcGlsZShmYWxzZSksCiAgICAgICBtX2VsYWJvcmF0ZShmYWxzZSksCiAgICAgICBtX2RpZmZfY29tcF9tb2RlKGRpZmZfY29tcF9tb2RlKSwKICAgICAgIG1faGVscChmYWxzZSksCiAgICAgICBtX2NhY2hlQWxsb3dlZCh0cnVlKSwKICAgICAgIG1fbmJNYXhUcmVhZHMoMCksCisgICAgICBtX25iTWF4UHJvY2Vzc2VzKDApLAogICAgICAgbV9mdWxsQ29tcGlsZURpcigwKSwKICAgICAgIG1fY2FjaGVEaXJJZCgwKSwKICAgICAgIG1fbm90ZSh0cnVlKSwKQEAgLTM1OSw2ICszNjQsNyBAQAogCiBpbnQgQ29tbWFuZExpbmVQYXJzZXI6OnBhcnNlQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqKiBhcmd2KSB7CiAgIHN0ZDo6c3RyaW5nIGV4ZV9uYW1lID0gYXJndlswXTsKKyAgbV9leGVQYXRoID0gZXhlX25hbWU7CiAgIHN0ZDo6c3RyaW5nIGV4ZV9wYXRoID0gRmlsZVV0aWxzOjpnZXRQYXRoTmFtZShleGVfbmFtZSk7CiAgIG1fcHJlY29tcGlsZWREaXJJZCA9IG1fc3ltYm9sVGFibGUtPnJlZ2lzdGVyU3ltYm9sKGV4ZV9wYXRoICsgInBrZy8iKTsKICAgaWYgKCFGaWxlVXRpbHM6OmZpbGVFeGlzdHMoZXhlX3BhdGggKyAicGtnLyIpKSB7CkBAIC01MjIsNyArNTI4LDggQEAKICAgICAgIH0KICAgICAgIGkrKzsKICAgICAgIG1fbmJMaW5lc0ZvckZpbGVTcGxpdHRpbmcgPSBhdG9pKGFsbF9hcmd1bWVudHNbaV0uY19zdHIoKSk7Ci0gICAgfSBlbHNlIGlmIChhbGxfYXJndW1lbnRzW2ldID09ICItbXQiKSB7CisgICAgfSBlbHNlIGlmIChhbGxfYXJndW1lbnRzW2ldID09ICItbXQiIHx8IGFsbF9hcmd1bWVudHNbaV0gPT0gIi1tcCIpIHsKKyAgICAgIGJvb2wgbXQgPSAoYWxsX2FyZ3VtZW50c1tpXSA9PSAiLW10Iik7CiAgICAgICBpZiAoaSA9PSBhbGxfYXJndW1lbnRzLnNpemUoKSAtIDEpIHsKICAgICAgICAgTG9jYXRpb24gbG9jKGdldFN5bWJvbFRhYmxlKCktPnJlZ2lzdGVyU3ltYm9sKGFsbF9hcmd1bWVudHNbaV0pKTsKICAgICAgICAgRXJyb3IgZXJyKEVycm9yRGVmaW5pdGlvbjo6Q01EX01UX01JU1NJTkdfTEVWRUwsIGxvYyk7CkBAIC01NTEsMTMgKzU1OCwyNSBAQAogICAgICAgICAgICAgbWF4TVQgPSAoY29uY3VyZW50VGhyZWFkc1N1cHBvcnRlZCAvIDIpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1heE1UID09IDApCi0gICAgICAgICAgbV9uYk1heFRyZWFkcyA9IG1heE1UOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBtX25iTWF4VHJlYWRzID0gbWF4TVQ7Ci0gICAgICAgICAgaWYgKG1fbmJNYXhUcmVhZHMgPCAyKSBtX25iTWF4VHJlYWRzID0gMjsKKyAgICAgICAgaWYgKG1heE1UID09IDApIHsKKyAgICAgICAgICBpZiAobXQpCisgICAgICAgICAgICBtX25iTWF4VHJlYWRzID0gbWF4TVQ7CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX25iTWF4VHJlYWRzID0gbWF4TVQ7CisgICAgICAgICAgICBtX25iTWF4UHJvY2Vzc2VzID0gbWF4TVQ7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmIChtdCkgeworICAgICAgICAgICAgbV9uYk1heFRyZWFkcyA9IG1heE1UOworICAgICAgICAgICAgaWYgKG1fbmJNYXhUcmVhZHMgPCAyKSBtX25iTWF4VHJlYWRzID0gMjsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9uYk1heFRyZWFkcyA9IG1heE1UOworICAgICAgICAgICAgaWYgKG1fbmJNYXhUcmVhZHMgPCAyKSBtX25iTWF4VHJlYWRzID0gMjsKKyAgICAgICAgICAgIG1fbmJNYXhQcm9jZXNzZXMgPSBtYXhNVDsKKyAgICAgICAgICAgIGlmIChtX25iTWF4UHJvY2Vzc2VzIDwgMikgbV9uYk1heFByb2Nlc3NlcyA9IDI7CisgICAgICAgICAgfQogICAgICAgICAgIExvY2F0aW9uIGxvYygKLSAgICAgICAgICAgICAgZ2V0U3ltYm9sVGFibGUoKS0+cmVnaXN0ZXJTeW1ib2woc3RkOjp0b19zdHJpbmcobV9uYk1heFRyZWFkcykpKTsKKyAgICAgICAgICAgICAgZ2V0U3ltYm9sVGFibGUoKS0+cmVnaXN0ZXJTeW1ib2woc3RkOjp0b19zdHJpbmcobWF4TVQpKSk7CiAgICAgICAgICAgRXJyb3IgZXJyKEVycm9yRGVmaW5pdGlvbjo6Q01EX05VTUJFUl9USFJFQURTLCBsb2MpOwogICAgICAgICAgIG1fZXJyb3JzLT5hZGRFcnJvcihlcnIpOwogICAgICAgICB9CkBAIC02ODUsNiArNzA0LDEyIEBACiAgICAgICBtX3BhcnNlID0gdHJ1ZTsKICAgICAgIG1fY29tcGlsZSA9IHRydWU7CiAgICAgICBtX2VsYWJvcmF0ZSA9IHRydWU7CisgICAgfSBlbHNlIGlmIChhbGxfYXJndW1lbnRzW2ldID09ICItcGFyc2Vvbmx5IikgeworICAgICAgbV93cml0ZVBwT3V0cHV0ID0gdHJ1ZTsKKyAgICAgIG1fcGFyc2UgPSB0cnVlOworICAgICAgbV9jb21waWxlID0gZmFsc2U7CisgICAgICBtX2VsYWJvcmF0ZSA9IGZhbHNlOworICAgICAgbV9wYXJzZU9ubHkgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAoYWxsX2FyZ3VtZW50c1tpXSA9PSAiLW5vY29tcCIpIHsKICAgICAgIG1fY29tcGlsZSA9IGZhbHNlOwogICAgICAgbV9lbGFib3JhdGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9Db21tYW5kTGluZS9Db21tYW5kTGluZVBhcnNlci5oIGIvc3JjL0NvbW1hbmRMaW5lL0NvbW1hbmRMaW5lUGFyc2VyLmgKaW5kZXggNjI1Mzk3Ni4uZTE4NzI5ZiAxMDA2NDQKLS0tIGEvc3JjL0NvbW1hbmRMaW5lL0NvbW1hbmRMaW5lUGFyc2VyLmgKKysrIGIvc3JjL0NvbW1hbmRMaW5lL0NvbW1hbmRMaW5lUGFyc2VyLmgKQEAgLTU5LDcgKzU5LDcgQEAKICAgICByZXR1cm4gbV9kZWZpbmVMaXN0OwogICB9CiAgIGJvb2wgZmlsZXVuaXQoKSB7IHJldHVybiBtX2ZpbGV1bml0OyB9ICAvLyBGaWxlIG9yIGFsbCBjb21waWxhdGlvbiBzZW1hbnRpYwotCisgIHZvaWQgc2V0RmlsZVVuaXQoKSB7IG1fZmlsZXVuaXQgPSB0cnVlOyB9CiAgIC8qIFBQIE91dHB1dCBmaWxlL2RpciBvcHRpb25zICovCiAgIFN5bWJvbElkIHdyaXRlUHBPdXRwdXRGaWxlSWQoKSB7IHJldHVybiBtX3dyaXRlUHBPdXRwdXRGaWxlSWQ7IH0KICAgU3ltYm9sSWQgZ2V0T3V0cHV0RGlyKCkgeyByZXR1cm4gbV9vdXRwdXREaXI7IH0KQEAgLTcyLDIxICs3MiwyOCBAQAogICBTeW1ib2xJZCBnZXRMb2dGaWxlSWQoKSB7IHJldHVybiBtX2xvZ0ZpbGVJZDsgfQogICBTeW1ib2xJZCBnZXREZWZhdWx0TG9nRmlsZUlkKCkgeyByZXR1cm4gbV9kZWZhdWx0TG9nRmlsZUlkOyB9CiAgIGJvb2wgd3JpdGVQcE91dHB1dCgpIHsgcmV0dXJuIG1fd3JpdGVQcE91dHB1dDsgfQorICB2b2lkIHNldHdyaXRlUHBPdXRwdXQoYm9vbCB2YWx1ZSkgeyBtX3dyaXRlUHBPdXRwdXQgPSB2YWx1ZTsgfQogICBib29sIGNhY2hlQWxsb3dlZCgpIHsgcmV0dXJuIG1fY2FjaGVBbGxvd2VkOyB9CisgIHZvaWQgc2V0Q2FjaGVBbGxvd2VkKGJvb2wgdmFsKSB7IG1fY2FjaGVBbGxvd2VkID0gdmFsOyB9CiAgIGJvb2wgbGluZU9mZnNldHNBc0NvbW1lbnRzKCkgeyByZXR1cm4gbV9saW5lT2Zmc2V0c0FzQ29tbWVudHM7IH0KICAgU3ltYm9sSWQgZ2V0Q2FjaGVEaXIoKSB7IHJldHVybiBtX2NhY2hlRGlySWQ7IH0KICAgU3ltYm9sSWQgZ2V0UHJlY29tcGlsZWREaXIoKSB7IHJldHVybiBtX3ByZWNvbXBpbGVkRGlySWQ7IH0KICAgYm9vbCB1c2VQUE91dG91dEZpbGVMb2NhdGlvbigpIHsgcmV0dXJuIG1fcHBPdXRwdXRGaWxlTG9jYXRpb247IH0KICAgLyogUFAgT3V0cHV0IGNvbnRlbnQgZ2VuZXJhdGlvbiBvcHRpb25zICovCiAgIGJvb2wgZmlsdGVyRmlsZUxpbmUoKSB7IHJldHVybiBtX2ZpbHRlckZpbGVMaW5lOyB9CisgIHZvaWQgc2V0RmlsdGVyRmlsZUxpbmUoYm9vbCB2YWwpIHsgbV9maWx0ZXJGaWxlTGluZSA9IHZhbDsgfQogICBib29sIGZpbHRlclNpbXBsZURpcmVjdGl2ZXMoKSB7IHJldHVybiBtX2ZpbHRlclNpbXBsZURpcmVjdGl2ZXM7IH0KICAgYm9vbCBmaWx0ZXJQcm90ZWN0ZWRSZWdpb25zKCkgeyByZXR1cm4gbV9maWx0ZXJQcm90ZWN0ZWRSZWdpb25zOyB9CiAgIGJvb2wgZmlsdGVyQ29tbWVudHMoKSB7IHJldHVybiBtX2ZpbHRlckNvbW1lbnRzOyB9CiAgIGJvb2wgZmlsdGVySW5mbygpIHsgcmV0dXJuICFtX2luZm87IH0KICAgYm9vbCBmaWx0ZXJOb3RlKCkgeyByZXR1cm4gIW1fbm90ZTsgfQogICBib29sIGZpbHRlcldhcm5pbmcoKSB7IHJldHVybiAhbV93YXJuaW5nOyB9CisgIHZvaWQgc2V0RmlsdGVySW5mbygpIHsgbV9pbmZvID0gZmFsc2U7IH0KKyAgdm9pZCBzZXRGaWx0ZXJOb3RlKCkgeyBtX25vdGUgPSBmYWxzZTsgfQorICB2b2lkIHNldEZpbHRlcldhcm5pbmcoKSB7IG1fd2FybmluZyA9IGZhbHNlOyB9CiAgIC8qIERlYnVnL3RyYWNlcyBvcHRpb25zICovCiAgIGJvb2wgbXV0ZVN0ZG91dCgpIHsgcmV0dXJuIG1fbXV0ZVN0ZG91dDsgfQorICB2b2lkIHNldE11dGVTdGRvdXQoKSB7IG1fbXV0ZVN0ZG91dCA9IHRydWU7IH0KICAgYm9vbCB2ZXJib3NlKCkgeyByZXR1cm4gbV92ZXJib3NlOyB9CiAgIGJvb2wgcHJvZmlsZSgpIHsgcmV0dXJuIG1fcHJvZmlsZTsgfQogICBpbnQgIGdldERlYnVnTGV2ZWwoKSB7IHJldHVybiBtX2RlYnVnTGV2ZWw7IH0KQEAgLTEwMCw4ICsxMDcsMTMgQEAKICAgc3RhdGljIHN0ZDo6c3RyaW5nIGdldFZlcnNpb25OdW1iZXIoKSB7IHJldHVybiBtX3ZlcnNpb25OdW1iZXI7IH0KICAgLyogQ29yZSBmdW5jdGlvbnMgb3B0aW9ucyAqLwogICBib29sIHBhcnNlKCkgeyByZXR1cm4gbV9wYXJzZTsgfQorICBib29sIHBhcnNlT25seSgpIHsgcmV0dXJuIG1fcGFyc2VPbmx5OyB9CiAgIGJvb2wgY29tcGlsZSgpIHsgcmV0dXJuIG1fY29tcGlsZTsgfQogICBib29sIGVsYWJvcmF0ZSgpIHsgcmV0dXJuIG1fZWxhYm9yYXRlOyB9CisgIHZvaWQgc2V0UGFyc2UoYm9vbCB2YWwpIHsgbV9wYXJzZSA9IHZhbDsgfQorICB2b2lkIHNldFBhcnNlT25seShib29sIHZhbCkgeyBtX3BhcnNlT25seSA9IHZhbDsgfQorICB2b2lkIHNldENvbXBpbGUoYm9vbCB2YWwpIHsgbV9jb21waWxlID0gdmFsOyB9CisgIHZvaWQgc2V0RWxhYm9yYXRlKGJvb2wgdmFsKSB7IG1fZWxhYm9yYXRlID0gdmFsOyB9CiAgIGJvb2wgcHl0aG9uTGlzdGVuZXIoKSB7IHJldHVybiBtX3B5dGhvbkxpc3RlbmVyICYmIG1fcHl0aG9uQWxsb3dlZDsgfQogICBib29sIHB5dGhvbkFsbG93ZWQoKSB7IHJldHVybiBtX3B5dGhvbkFsbG93ZWQ7IH0KICAgdm9pZCBub1B5dGhvbigpIHsgbV9weXRob25BbGxvd2VkID0gZmFsc2U7IH0KQEAgLTExNiw2ICsxMjgsOSBAQAogICBFcnJvckNvbnRhaW5lciogZ2V0RXJyb3JDb250YWluZXIoKSB7IHJldHVybiBtX2Vycm9yczsgfQogICBTeW1ib2xUYWJsZSogZ2V0U3ltYm9sVGFibGUoKSB7IHJldHVybiBtX3N5bWJvbFRhYmxlOyB9CiAgIHVuc2lnbmVkIHNob3J0IGludCBnZXROYk1heFRyZWFkcygpIHsgcmV0dXJuIG1fbmJNYXhUcmVhZHM7IH0KKyAgdW5zaWduZWQgc2hvcnQgaW50IGdldE5iTWF4UHJvY2Vzc2VzKCkgeyByZXR1cm4gbV9uYk1heFByb2Nlc3NlczsgfQorICB2b2lkIHNldE5iTWF4VHJlYWRzKHVuc2lnbmVkIHNob3J0IGludCBtYXgpIHsgbV9uYk1heFRyZWFkcyA9IG1heDsgfQorICB2b2lkIHNldE5iTWF4UHJvY2Vzc2VzKHVuc2lnbmVkIHNob3J0IGludCBtYXgpIHsgbV9uYk1heFByb2Nlc3NlcyA9IG1heDsgfQogICB1bnNpZ25lZCBpbnQgZ2V0TmJMaW5lc0ZvckZpbGVTcGxpdGluZygpIHsgcmV0dXJuIG1fbmJMaW5lc0ZvckZpbGVTcGxpdHRpbmc7IH0KICAgYm9vbCB1c2VUYmIoKSB7IHJldHVybiBtX3VzZVRiYjsgfQogICBzdGQ6OnN0cmluZyBnZXRUaW1lU2NhbGUoKSB7IHJldHVybiBtX3RpbWVzY2FsZTsgfQpAQCAtMTIzLDYgKzEzOCw3IEBACiAgIGNvbnN0IHN0ZDo6c3RyaW5nIGN1cnJlbnREYXRlVGltZSgpOwogICBib29sIHBhcnNlQnVpbHRJbigpOwogICBzdGQ6OnN0cmluZyBnZXRCdWlsdEluUGF0aCgpIHsgcmV0dXJuIG1fYnVpbHRpblBhdGg7IH0KKyAgc3RkOjpzdHJpbmcgZ2V0RXhlUGF0aCgpIHsgcmV0dXJuIG1fZXhlUGF0aDsgfQogIHByaXZhdGU6CiAgIGJvb2wgcGx1c19hcmd1bWVudHNfKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKTsKICAgdm9pZCBwcm9jZXNzQXJnc18oc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBhcmdzLApAQCAtMTYyLDEyICsxNzgsMTQgQEAKICAgYm9vbCBtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnM7CiAgIGJvb2wgbV9maWx0ZXJDb21tZW50czsKICAgYm9vbCBtX3BhcnNlOworICBib29sIG1fcGFyc2VPbmx5OwogICBib29sIG1fY29tcGlsZTsKICAgYm9vbCBtX2VsYWJvcmF0ZTsKICAgYm9vbCBtX2RpZmZfY29tcF9tb2RlOwogICBib29sIG1faGVscDsKICAgYm9vbCBtX2NhY2hlQWxsb3dlZDsKICAgdW5zaWduZWQgc2hvcnQgaW50IG1fbmJNYXhUcmVhZHM7CisgIHVuc2lnbmVkIHNob3J0IGludCBtX25iTWF4UHJvY2Vzc2VzOwogICBTeW1ib2xJZCBtX2NvbXBpbGVVbml0RGlyZWN0b3J5OwogICBTeW1ib2xJZCBtX2NvbXBpbGVBbGxEaXJlY3Rvcnk7CiAgIFN5bWJvbElkIG1fb3V0cHV0RGlyOwpAQCAtMjAwLDYgKzIxOCw3IEBACiAgIGJvb2wgbV9wcE91dHB1dEZpbGVMb2NhdGlvbjsKICAgYm9vbCBtX2xvZ0ZpbGVTcGVjaWZpZWQ7CiAgIHN0ZDo6c3RyaW5nIG1fYnVpbHRpblBhdGg7CisgIHN0ZDo6c3RyaW5nIG1fZXhlUGF0aDsgCiB9OwogCiB9OyAgLy8gbmFtZXNwYWNlIFNVUkVMT0cKZGlmZiAtLWdpdCBhL3NyYy9FcnJvclJlcG9ydGluZy9FcnJvckNvbnRhaW5lci5jcHAgYi9zcmMvRXJyb3JSZXBvcnRpbmcvRXJyb3JDb250YWluZXIuY3BwCmluZGV4IDU2NDIzZjguLjE3MzNiMjIgMTAwNjQ0Ci0tLSBhL3NyYy9FcnJvclJlcG9ydGluZy9FcnJvckNvbnRhaW5lci5jcHAKKysrIGIvc3JjL0Vycm9yUmVwb3J0aW5nL0Vycm9yQ29udGFpbmVyLmNwcApAQCAtNDQsNiArNDQsOSBAQAogICAvKiBEbyBub3RoaW5nIGhlcmUgKi8KIH0KIAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKIHZvaWQgRXJyb3JDb250YWluZXI6OmluaXQoKSB7CiAgIGlmIChFcnJvckRlZmluaXRpb246OmluaXQoKSkgewogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2dGaWxlTmFtZSA9CmRpZmYgLS1naXQgYS9zcmMvU291cmNlQ29tcGlsZS9Db21waWxlU291cmNlRmlsZS5jcHAgYi9zcmMvU291cmNlQ29tcGlsZS9Db21waWxlU291cmNlRmlsZS5jcHAKaW5kZXggYzFlNDVhMC4uNWIxYWE1MiAxMDA2NDQKLS0tIGEvc3JjL1NvdXJjZUNvbXBpbGUvQ29tcGlsZVNvdXJjZUZpbGUuY3BwCisrKyBiL3NyYy9Tb3VyY2VDb21waWxlL0NvbXBpbGVTb3VyY2VGaWxlLmNwcApAQCAtMjUxLDEwICsyNTEsMTQgQEAKIH0KIAogYm9vbCBDb21waWxlU291cmNlRmlsZTo6cG9zdFByZXByb2Nlc3NfKCkgeworICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBnZXRDb21waWxlcigpLT5nZXRTeW1ib2xUYWJsZSgpOworICBpZiAobV9jb21tYW5kTGluZVBhcnNlci0+cGFyc2VPbmx5KCkpIHsKKyAgICBtX3BwUmVzdWx0RmlsZUlkID0gbV9zeW1ib2xUYWJsZS0+cmVnaXN0ZXJTeW1ib2woc3ltYm9sVGFibGUtPmdldFN5bWJvbChtX2ZpbGVJZCkpOworICAgIHJldHVybiB0cnVlOworICB9CiAgIHN0ZDo6c3RyaW5nIG1fcHBfcmVzdWx0ID0gbV9wcC0+Z2V0UHJlUHJvY2Vzc2VkRmlsZUNvbnRlbnQoKTsKICAgaWYgKG1fY29tbWFuZExpbmVQYXJzZXItPndyaXRlUHBPdXRwdXQoKSB8fAogICAgICAgKG1fY29tbWFuZExpbmVQYXJzZXItPndyaXRlUHBPdXRwdXRGaWxlSWQoKSAhPSAwKSkgewotICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGdldENvbXBpbGVyKCktPmdldFN5bWJvbFRhYmxlKCk7CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRpcmVjdG9yeSA9CiAgICAgICAgIHN5bWJvbFRhYmxlLT5nZXRTeW1ib2wobV9jb21tYW5kTGluZVBhcnNlci0+Z2V0RnVsbENvbXBpbGVEaXIoKSk7CiAgICAgc3RkOjpzdHJpbmcgZmlsZU5hbWUgPSBzeW1ib2xUYWJsZS0+Z2V0U3ltYm9sKG1fZmlsZUlkKTsKZGlmZiAtLWdpdCBhL3NyYy9Tb3VyY2VDb21waWxlL0NvbXBpbGVyLmNwcCBiL3NyYy9Tb3VyY2VDb21waWxlL0NvbXBpbGVyLmNwcAppbmRleCBiNDc3ODNlLi4yZTY5NDY1IDEwMDY0NAotLS0gYS9zcmMvU291cmNlQ29tcGlsZS9Db21waWxlci5jcHAKKysrIGIvc3JjL1NvdXJjZUNvbXBpbGUvQ29tcGlsZXIuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAgKiBDcmVhdGVkIG9uIE1hcmNoIDQsIDIwMTcsIDU6MTYgUE0KICAqLwogI2luY2x1ZGUgPHN0ZGludC5oPgotCisjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlICJDb21tYW5kTGluZS9Db21tYW5kTGluZVBhcnNlci5oIgogI2luY2x1ZGUgIkVycm9yUmVwb3J0aW5nL0Vycm9yQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU291cmNlQ29tcGlsZS9TeW1ib2xUYWJsZS5oIgpAQCAtMjU2LDcgKzI1NiwxMzIgQEAKICAgcmV0dXJuIHRydWU7CiB9CiAgCitib29sIENvbXBpbGVyOjpjcmVhdGVNdWx0aVByb2Nlc3NfKCkgeworICB1bnNpZ25lZCBpbnQgbmJQcm9jZXNzZXMgPSBtX2NvbW1hbmRMaW5lUGFyc2VyLT5nZXROYk1heFByb2Nlc3NlcygpOworICBpZiAobmJQcm9jZXNzZXMgPT0gMCkKKyAgICByZXR1cm4gdHJ1ZTsKKyAgLy8gQ3JlYXRlIENNYWtlTGlzdHMudHh0CisgIGlmIChtX2NvbW1hbmRMaW5lUGFyc2VyLT53cml0ZVBwT3V0cHV0KCkgfHwKKyAgICAgICAgICAobV9jb21tYW5kTGluZVBhcnNlci0+d3JpdGVQcE91dHB1dEZpbGVJZCgpICE9IDApKSB7CisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gZ2V0U3ltYm9sVGFibGUoKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGlyZWN0b3J5ID0KKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5nZXRTeW1ib2wobV9jb21tYW5kTGluZVBhcnNlci0+Z2V0RnVsbENvbXBpbGVEaXIoKSk7CisgICAgc3RkOjpvZnN0cmVhbSBvZnM7CisgICAgc3RkOjpzdHJpbmcgZmlsZUxpc3QgPSBkaXJlY3RvcnkgKyAiL0NNYWtlTGlzdHMudHh0IjsKKyAgICBvZnMub3BlbihmaWxlTGlzdCk7CisgICAgaWYgKG9mcy5nb29kKCkpIHsKKyAgICAgIG9mcyA8PCAiY21ha2VfbWluaW11bV9yZXF1aXJlZCAoVkVSU0lPTiAzLjApIiA8PCBzdGQ6OmVuZGw7CisgICAgICBvZnMgPDwgIiMgQXV0byBnZW5lcmF0ZWQgYnkgU3VyZWxvZyIgPDwgc3RkOjplbmRsOwogCisgICAgICAvLyBPcHRpbWl6ZSB0aGUgbG9hZCBiYWxhbmNlLCB0cnkgdG8gZXZlbiBvdXQgdGhlIHdvcmsgaW4gZWFjaCB0aHJlYWQgYnkgdGhlCisgICAgICAvLyBzaXplIG9mIHRoZSBmaWxlcworICAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3IgPCBDb21waWxlU291cmNlRmlsZSo+PiBqb2JBcnJheShuYlByb2Nlc3Nlcyk7CisgICAgICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBsb25nPiBqb2JTaXplKG5iUHJvY2Vzc2VzKTsKKyAgICAgIHVuc2lnbmVkIGludCBsYXJnZXN0Sm9iID0gMDsKKyAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbV9jb21waWxlcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgaW50IHNpemUgPSBtX2NvbXBpbGVyc1tpXS0+Z2V0Sm9iU2l6ZShDb21waWxlU291cmNlRmlsZTo6QWN0aW9uOjpQYXJzZSk7CisgICAgICAgIGlmIChzaXplID4gbGFyZ2VzdEpvYikgeworICAgICAgICAgIGxhcmdlc3RKb2IgPSBzaXplOworICAgICAgICB9CisgICAgICB9CisgICAgICBzdGQ6OmNvdXQgPDwgIkxBUkdFU1QgSk9CIFNJWkU6ICIgPDwgbGFyZ2VzdEpvYiA8PCBzdGQ6OmVuZGw7CisgICAgICB1bnNpZ25lZCBpbnQgYmlnSm9iVGhyZWFzaG9sZCA9IChsYXJnZXN0Sm9iIC8gbmJQcm9jZXNzZXMpICogMzsKKyAgICAgIHN0ZDo6Y291dCA8PCAiTEFSR0UgSk9CIFRIUkVBU0hPTEQ6ICIgPDwgYmlnSm9iVGhyZWFzaG9sZCA8PCBzdGQ6OmVuZGw7CisgICAgICBzdGQ6OnZlY3RvcjxDb21waWxlU291cmNlRmlsZSo+IGJpZ0pvYnM7CisgICAgICBmb3IgKHVuc2lnbmVkIHNob3J0IGkgPSAwOyBpIDwgbmJQcm9jZXNzZXM7IGkrKykgam9iU2l6ZVtpXSA9IDA7CisgICAgICBQcmVjb21waWxlZCogcHJlYyA9IFByZWNvbXBpbGVkOjpnZXRTaW5nbGV0b24oKTsKKyAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbV9jb21waWxlcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgc3RkOjpzdHJpbmcgcm9vdCA9IG1fY29tcGlsZXJzW2ldLT5nZXRTeW1ib2xUYWJsZSgpLT5nZXRTeW1ib2wobV9jb21waWxlcnNbaV0tPmdldEZpbGVJZCgpKTsKKyAgICAgICAgcm9vdCA9IFN0cmluZ1V0aWxzOjpnZXRSb290RmlsZU5hbWUocm9vdCk7CisgICAgICAgIGlmIChwcmVjLT5pc0ZpbGVQcmVjb21waWxlZChyb290KSkgeworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGludCBzaXplID0gbV9jb21waWxlcnNbaV0tPmdldEpvYlNpemUoQ29tcGlsZVNvdXJjZUZpbGU6OkFjdGlvbjo6UGFyc2UpOworICAgICAgICBpZiAoc2l6ZSA+IGJpZ0pvYlRocmVhc2hvbGQpIHsKKyAgICAgICAgICBiaWdKb2JzLnB1c2hfYmFjayhtX2NvbXBpbGVyc1tpXSk7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgaW50IG5ld0pvYkluZGV4ID0gMDsKKyAgICAgICAgdWludDY0X3QgbWluSm9iUXVldWUgPSBVTExPTkdfTUFYOworICAgICAgICBmb3IgKHVuc2lnbmVkIHNob3J0IGlpID0gMDsgaWkgPCBuYlByb2Nlc3NlczsgaWkrKykgeworICAgICAgICAgIGlmIChqb2JTaXplW2lpXSA8IG1pbkpvYlF1ZXVlKSB7CisgICAgICAgICAgICBuZXdKb2JJbmRleCA9IGlpOworICAgICAgICAgICAgbWluSm9iUXVldWUgPSBqb2JTaXplW2lpXTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgam9iU2l6ZVtuZXdKb2JJbmRleF0gKz0gc2l6ZTsKKyAgICAgICAgam9iQXJyYXlbbmV3Sm9iSW5kZXhdLnB1c2hfYmFjayhtX2NvbXBpbGVyc1tpXSk7CisgICAgICB9CisgICAgICAKKyAgICAgIHN0ZDo6c3RyaW5nIGZ1bGxfZXhlX3BhdGggPSBtX2NvbW1hbmRMaW5lUGFyc2VyLT5nZXRFeGVQYXRoKCk7CisgICAgICBmdWxsX2V4ZV9wYXRoID0gRmlsZVV0aWxzOjpnZXRGdWxsUGF0aChmdWxsX2V4ZV9wYXRoKTsKKyAgICAgIGZ1bGxfZXhlX3BhdGggPSBTdHJpbmdVdGlsczo6ZWxpbWluYXRlUmVsYXRpdmVQYXRoKGZ1bGxfZXhlX3BhdGgpOworICAgICAgaWYgKG1fY29tbWFuZExpbmVQYXJzZXItPnByb2ZpbGUoKSkgeworICAgICAgICBmdWxsX2V4ZV9wYXRoICs9ICIgLXByb2ZpbGUiOworICAgICAgfQorICAgICAgICAKKyAgICAgIHN0ZDo6c3RyaW5nIGZpbGVVbml0ID0gIiI7CisgICAgICBpZiAobV9jb21tYW5kTGluZVBhcnNlci0+ZmlsZXVuaXQoKSkKKyAgICAgICAgZmlsZVVuaXQgPSAiIC1maWxldW5pdCAiOworICAgICAKKyAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nID4gdGFyZ2V0czsKKyAgICAgIC8vIFNtYWxsIGpvYnMgYmF0Y2ggaW4gY2x1bXAgcHJvY2Vzc2VzCisgICAgICBpbnQgYWJzb2x1dGVJbmRleCA9IDA7CisgICAgICBmb3IgKHVuc2lnbmVkIHNob3J0IGkgPSAwOyBpIDwgbmJQcm9jZXNzZXM7IGkrKykgeyAgCisgICAgICAgIHN0ZDo6c3RyaW5nIGZpbGVMaXN0OyAKKyAgICAgICAgc3RkOjpzdHJpbmcgbGFzdEZpbGU7CisgICAgICAgIGFic29sdXRlSW5kZXgrKzsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBqb2JBcnJheVtpXS5zaXplKCk7IGorKykgeworICAgICAgICAgIENvbXBpbGVTb3VyY2VGaWxlKiBjb21waWxlciA9IGpvYkFycmF5W2ldW2pdOworICAgICAgICAgIHN0ZDo6c3RyaW5nIGZpbGVOYW1lID0gY29tcGlsZXItPmdldFN5bWJvbFRhYmxlKCktPmdldFN5bWJvbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlci0+Z2V0UHBPdXRwdXRGaWxlSWQoKSk7CisgICAgICAgICAgZmlsZUxpc3QgKz0gIiAiICsgZmlsZU5hbWU7CisgICAgICAgICAgbGFzdEZpbGUgPSBmaWxlTmFtZTsKKyAgICAgICAgfSAKKyAgICAgICAgaWYgKGZpbGVMaXN0ICE9ICIiKSB7CisgICAgICAgICAgc3RkOjpzdHJpbmcgdGFyZ2V0bmFtZSA9IHN0ZDo6dG9fc3RyaW5nKGFic29sdXRlSW5kZXgpICsgIl8iICsgRmlsZVV0aWxzOjpmaWxlTmFtZShsYXN0RmlsZSk7CisgICAgICAgICAgdGFyZ2V0cy5wdXNoX2JhY2sodGFyZ2V0bmFtZSk7CisgICAgICAgICAgb2ZzIDw8ICJhZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICIgPDwgdGFyZ2V0bmFtZSA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgb2ZzIDw8ICIgIENPTU1BTkQgIiA8PCBmdWxsX2V4ZV9wYXRoIDw8IGZpbGVVbml0IDw8CisgICAgICAgICAgICAgICAgICAiIC1wYXJzZW9ubHkgLW10IDAgLW1wIDAgLW5vc3Rkb3V0IC1ub2J1aWx0aW4gLWwgIgorICAgICAgICAgICAgICAgICAgPDwgZGlyZWN0b3J5ICsgRmlsZVV0aWxzOjpmaWxlTmFtZSh0YXJnZXRuYW1lKSArICIubG9nIiA8PCAiICIgPDwgZmlsZUxpc3QgPDwgc3RkOjplbmRsOworICAgICAgICAgIG9mcyA8PCAiKSIgPDwgc3RkOjplbmRsOyAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgLy8gQmlnIGpvYnMKKyAgICAgIGZvciAoQ29tcGlsZVNvdXJjZUZpbGUqIGNvbXBpbGVyIDogYmlnSm9icykgeworICAgICAgICBhYnNvbHV0ZUluZGV4Kys7CisgICAgICAgIHN0ZDo6c3RyaW5nIGZpbGVOYW1lID0gY29tcGlsZXItPmdldFN5bWJvbFRhYmxlKCktPmdldFN5bWJvbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlci0+Z2V0UHBPdXRwdXRGaWxlSWQoKSk7CisgICAgICAgIHN0ZDo6c3RyaW5nIHRhcmdldG5hbWUgPSBzdGQ6OnRvX3N0cmluZyhhYnNvbHV0ZUluZGV4KSArICJfIiAgKyBGaWxlVXRpbHM6OmZpbGVOYW1lKGZpbGVOYW1lKTsKKyAgICAgICAgdGFyZ2V0cy5wdXNoX2JhY2sodGFyZ2V0bmFtZSk7CisgICAgICAgIG9mcyA8PCJhZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICIgPDwgdGFyZ2V0bmFtZSA8PCBzdGQ6OmVuZGw7CisgICAgICAgIG9mcyA8PCIgIENPTU1BTkQgIiA8PCBmdWxsX2V4ZV9wYXRoIDw8IGZpbGVVbml0IDw8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAtcGFyc2Vvbmx5IC1tdCAwIC1tcCAwIC1ub3N0ZG91dCAtbm9idWlsdGluIC1sICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICBkaXJlY3RvcnkgKyBGaWxlVXRpbHM6OmZpbGVOYW1lKHRhcmdldG5hbWUpICsgIi5sb2ciIDw8ICIgIiA8PCBmaWxlTmFtZSA8PCBzdGQ6OmVuZGw7CisgICAgICAgIG9mcyA8PCAiKSIgPDwgc3RkOjplbmRsOyAgCisgICAgICB9CisgICAgICAgICAgICAKKyAgICAgIG9mcyA8PCAiYWRkX2N1c3RvbV90YXJnZXQoUGFyc2UgQUxMIERFUEVORFMiIDw8IHN0ZDo6ZW5kbDsgCisgICAgICBmb3IgKGF1dG8gdGFyZ2V0IDogdGFyZ2V0cykgeworICAgICAgICBvZnMgPDwgdGFyZ2V0IDw8IHN0ZDo6ZW5kbDsgIAorICAgICAgfQorICAgICAgb2ZzIDw8ICIpIiA8PCBzdGQ6OmVuZGw7IAorICAgICAgb2ZzIDw8IHN0ZDo6Zmx1c2g7ICAgICAgCisgICAgICBvZnMuY2xvc2UoKTsKKyAgICAgIHN0ZDo6c3RyaW5nIGNvbW1hbmQgPSAiY2QgIiArIGRpcmVjdG9yeSArICI7IiArICJjbWFrZSAuOyBtYWtlIC1qICIgKyBzdGQ6OnRvX3N0cmluZyhuYlByb2Nlc3Nlcyk7CisgICAgICBzdGQ6OmNvdXQgPDwgIlJ1bm5pbmc6ICIgPDwgY29tbWFuZCA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKKyAgICAgIGludCByZXN1bHQgPSBzeXN0ZW0oY29tbWFuZC5jX3N0cigpKTsKKyAgICAgIHN0ZDo6Y291dCA8PCAiY21ha2UgcmVzdWx0OiAiIDw8IHJlc3VsdCA8PCBzdGQ6OmVuZGw7CisgICAgfSBlbHNlIHsKKyAgICAgIHN0ZDo6Y291dCA8PCAiQ291bGQgbm90IGNyZWF0ZSBDTWFrZUxpc3RzLnR4dDogIiA8PCBmaWxlTGlzdCA8PCBzdGQ6OmVuZGw7CisgICAgfQorICB9CisgIAorICAKKyAgcmV0dXJuIHRydWU7Cit9CisgIAogYm9vbCBDb21waWxlcjo6cGFyc2Vpbml0XygpIHsKICAgUHJlY29tcGlsZWQqIHByZWMgPSBQcmVjb21waWxlZDo6Z2V0U2luZ2xldG9uKCk7CiAgIC8vIFNpbmdsZSBvdXQgdGhlIGxhcmdlIGZpbGVzLgpAQCAtMjkwLDExICs0MTUsMTIgQEAKICAgICAgIG5iVGhyZWFkcyA9IDA7CiAgICAgfQogICAgIGludCBlZmZlY3RpdmVOYlRocmVhZHMgPSAwOworCiAgICAgaWYgKG5iVGhyZWFkcyA+IDQpCi0gICAgICBlZmZlY3RpdmVOYlRocmVhZHMgPSAoaW50KShsb2coKChmbG9hdCluYlRocmVhZHMgKyAxLjApIC8gNC4wKSAqIDEwLjApOworICAgICAgZWZmZWN0aXZlTmJUaHJlYWRzID0gKGludCkgKGxvZygoKGZsb2F0KSBuYlRocmVhZHMgKyAxLjApIC8gNC4wKSAqIDEwLjApOwogICAgIGVsc2UKICAgICAgIGVmZmVjdGl2ZU5iVGhyZWFkcyA9IG5iVGhyZWFkczsKLQorICAgIAogICAgIEFuYWx5emVGaWxlKiBmaWxlQW5hbHl6ZXIgPSBuZXcgQW5hbHl6ZUZpbGUoCiAgICAgICAgIG1fY29tbWFuZExpbmVQYXJzZXIsIG1fZGVzaWduLCBmaWxlTmFtZSwgb3JpZ0ZpbGUsIGVmZmVjdGl2ZU5iVGhyZWFkcyk7CiAgICAgZmlsZUFuYWx5emVyLT5hbmFseXplKCk7CkBAIC01OTYsMTkgKzcyMiwyMyBAQAogICAgIHByb2ZpbGUgKz0gbXNnOwogICAgIHRtci5yZXNldCgpOwogICB9Ci0gIGNyZWF0ZUZpbGVMaXN0XygpOworCiAgIC8vIFBhcnNlCiAgIGJvb2wgcGFyc2VySW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgaWYgKG1fY29tbWFuZExpbmVQYXJzZXItPnBhcnNlKCkgfHwgbV9jb21tYW5kTGluZVBhcnNlci0+cHl0aG9uTGlzdGVuZXIoKSB8fAogICAgICAgbV9jb21tYW5kTGluZVBhcnNlci0+cHl0aG9uRXZhbFNjcmlwdFBlckZpbGUoKSB8fAogICAgICAgbV9jb21tYW5kTGluZVBhcnNlci0+cHl0aG9uRXZhbFNjcmlwdCgpKSB7CiAgICAgcGFyc2Vpbml0XygpOworICAgIGNyZWF0ZUZpbGVMaXN0XygpOworICAgIGNyZWF0ZU11bHRpUHJvY2Vzc18oKTsKICAgICBwYXJzZXJJbml0aWFsaXplZCA9IHRydWU7CiAgICAgaWYgKCFjb21waWxlRmlsZVNldF8oQ29tcGlsZVNvdXJjZUZpbGU6OlBhcnNlLCB0cnVlLCBtX2NvbXBpbGVycykpCiAgICAgICByZXR1cm4gZmFsc2U7ICAvLyBTbWFsbCBmaWxlcyBhbmQgbGFyZ2UgZmlsZSBjaHVua3MKICAgICBpZiAoIWNvbXBpbGVGaWxlU2V0XyhDb21waWxlU291cmNlRmlsZTo6UGFyc2UsIHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb21waWxlcnNQYXJlbnRGaWxlcykpCiAgICAgICByZXR1cm4gZmFsc2U7ICAvLyBSZWNvbWJpbmUgY2h1bmtzCisgIH0gZWxzZSB7CisgICAgY3JlYXRlRmlsZUxpc3RfKCk7CiAgIH0KIAogICBpZiAobV9jb21tYW5kTGluZVBhcnNlci0+cHJvZmlsZSgpKSB7CmRpZmYgLS1naXQgYS9zcmMvU291cmNlQ29tcGlsZS9Db21waWxlci5oIGIvc3JjL1NvdXJjZUNvbXBpbGUvQ29tcGlsZXIuaAppbmRleCAzZTNjYmQ4Li4xNzVmN2RkIDEwMDY0NAotLS0gYS9zcmMvU291cmNlQ29tcGlsZS9Db21waWxlci5oCisrKyBiL3NyYy9Tb3VyY2VDb21waWxlL0NvbXBpbGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAKIAogICBib29sIHBwaW5pdF8oKTsKICAgYm9vbCBjcmVhdGVGaWxlTGlzdF8oKTsKKyAgYm9vbCBjcmVhdGVNdWx0aVByb2Nlc3NfKCk7CiAgIGJvb2wgcGFyc2Vpbml0XygpOwogICBib29sIHB5dGhvbmluaXRfKCk7CiAgIGJvb2wgY29tcGlsZUZpbGVTZXRfKENvbXBpbGVTb3VyY2VGaWxlOjpBY3Rpb24gYWN0aW9uLCBib29sIGFsbG93TXVsdGl0aHJlYWQsCmRpZmYgLS1naXQgYS9zcmMvU291cmNlQ29tcGlsZS9QYXJzZUZpbGUuY3BwIGIvc3JjL1NvdXJjZUNvbXBpbGUvUGFyc2VGaWxlLmNwcAppbmRleCAxMTNjOTlhLi43NzU5NGQ5IDEwMDY0NAotLS0gYS9zcmMvU291cmNlQ29tcGlsZS9QYXJzZUZpbGUuY3BwCisrKyBiL3NyYy9Tb3VyY2VDb21waWxlL1BhcnNlRmlsZS5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQAogCiAgICAgaWYgKGdldENvbXBpbGVTb3VyY2VGaWxlKCktPmdldENvbW1hbmRMaW5lUGFyc2VyKCktPnByb2ZpbGUoKSkgewogICAgICAgbV9wcm9maWxlSW5mbyArPQotICAgICAgICAgICJTU0wgUGFyc2luZzogIiArIFN0cmluZ1V0aWxzOjp0b19zdHJpbmcodG1yLmVsYXBzZWRfcm91bmRlZCgpKSArCisgICAgICAgICAgIlNMTCBQYXJzaW5nOiAiICsgU3RyaW5nVXRpbHM6OnRvX3N0cmluZyh0bXIuZWxhcHNlZF9yb3VuZGVkKCkpICsKICAgICAgICAgICAiICIgKyBmaWxlTmFtZSArICJcbiI7CiAgICAgICB0bXIucmVzZXQoKTsKICAgICB9CkBAIC0zMjUsNyArMzI1LDcgQEAKICAgICAgICAgc3RkOjpjb3V0IDw8IG1fZmlsZUNvbnRlbnQtPnByaW50T2JqZWN0cygpOwogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICB9IGVsc2UgeworIH0gZWxzZSB7CiAgICAgYm9vbCBvayA9IHRydWU7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgaSsrKSB7CiAgICAgICBQYXJzZUNhY2hlIGNhY2hlKG1fY2hpbGRyZW5baV0pOwpAQCAtMzgyLDYgKzM4MiwxMiBAQAogICAgICAgaWYgKCFjYWNoZS5zYXZlKCkpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgfQorICAgICAgCisgICAgICBpZiAoZ2V0Q29tcGlsZVNvdXJjZUZpbGUoKS0+Z2V0Q29tbWFuZExpbmVQYXJzZXIoKS0+cHJvZmlsZSgpKSB7CisgICAgICAgIG1fcHJvZmlsZUluZm8gKz0gIkNhY2hlIHNhdmluZzogIiArIHN0ZDo6dG9fc3RyaW5nKHRtci5lbGFwc2VkX3JvdW5kZWQgKCkpICsgIlxuIjsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJDYWNoZSBzYXZpbmc6ICIgKyBzdGQ6OnRvX3N0cmluZyh0bXIuZWxhcHNlZF9yb3VuZGVkICgpKSArICJcbiIgPDwgc3RkOjpmbHVzaDsKKyAgICAgICAgdG1yLnJlc2V0KCk7CisgICAgICB9CiAgICAgfQogCiAgICAgaWYgKG1fY2hpbGRyZW4uc2l6ZSgpICE9IDApIHsKZGlmZiAtLWdpdCBhL3NyYy9Tb3VyY2VDb21waWxlL1ByZXByb2Nlc3NGaWxlLmNwcCBiL3NyYy9Tb3VyY2VDb21waWxlL1ByZXByb2Nlc3NGaWxlLmNwcAppbmRleCAyYjFhYjlkLi43NWE0ZjBkIDEwMDY0NAotLS0gYS9zcmMvU291cmNlQ29tcGlsZS9QcmVwcm9jZXNzRmlsZS5jcHAKKysrIGIvc3JjL1NvdXJjZUNvbXBpbGUvUHJlcHJvY2Vzc0ZpbGUuY3BwCkBAIC02OCw3ICs2OCw3IEBACiAgICAgICBtX2RlYnVnUFBSZXN1bHQgPSBmYWxzZTsKICAgICAgIG1fZGVidWdQUFRva2VucyA9IGZhbHNlOwogICAgICAgbV9kZWJ1Z1BQVHJlZSA9IGZhbHNlOwotICAgICAgbV9kZWJ1Z01hY3JvID0gZmFsc2U7CisgICAgICBtX2RlYnVnTWFjcm8gPSB0cnVlOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgogICAgICAgbV9kZWJ1Z1BQID0gdHJ1ZTsKQEAgLTI3OSw2ICsyNzksOCBAQAogfQogCiBib29sIFByZXByb2Nlc3NGaWxlOjpwcmVwcm9jZXNzKCkgeworICBpZiAoZ2V0Q29tcGlsZVNvdXJjZUZpbGUoKS0+Z2V0Q29tbWFuZExpbmVQYXJzZXIoKS0+cGFyc2VPbmx5KCkpCisgICAgcmV0dXJuIHRydWU7CiAgIFRpbWVyIHRtcjsKICAgUFBDYWNoZSBjYWNoZSh0aGlzKTsKICAgaWYgKGNhY2hlLnJlc3RvcmUoKSkgewpAQCAtOTYyLDEzICs5NjQsMjAgQEAKICAgLy8gVHJ5IGxvY2FsIGZpbGUgc2NvcGUKICAgaWYgKGZvdW5kID09IGZhbHNlKSB7CiAgICAgTWFjcm9JbmZvKiBpbmZvID0gbV9jb21waWxhdGlvblVuaXQtPmdldE1hY3JvSW5mbyhuYW1lKTsKLSAgICBpZiAoaW5mbykgewotICAgICAgc3RkOjpwYWlyPGJvb2wsIHN0ZDo6c3RyaW5nPiBldmFsUmVzdWx0ID0gZXZhbHVhdGVNYWNyb18oCi0gICAgICAgICAgbmFtZSwgYXJndW1lbnRzLCBjYWxsaW5nRmlsZSwgY2FsbGluZ0xpbmUsIGxvb3BDaGVja2VyLCBpbmZvLAotICAgICAgICAgIGluc3RydWN0aW9ucywgZW1iZWRkZWRNYWNyb0NhbGxMaW5lLCBlbWJlZGRlZE1hY3JvQ2FsbEZpbGUpOwotICAgICAgZm91bmQgPSBldmFsUmVzdWx0LmZpcnN0OwotICAgICAgcmVzdWx0ID0gZXZhbFJlc3VsdC5zZWNvbmQ7Ci0gICAgICByZXN1bHQgPSBzdGQ6OnJlZ2V4X3JlcGxhY2UocmVzdWx0LCBzdGQ6OnJlZ2V4KCJgYCIpLCAiIik7CisgICAgaWYgKGluc3RydWN0aW9ucy5tX2V2YWx1YXRlID09IFNwZWNpYWxJbnN0cnVjdGlvbnM6OkV2YWx1YXRlKSB7CisgICAgICBpZiAoaW5mbykgeworICAgICAgICBzdGQ6OnBhaXI8Ym9vbCwgc3RkOjpzdHJpbmc+IGV2YWxSZXN1bHQgPSBldmFsdWF0ZU1hY3JvXygKKyAgICAgICAgICAgICAgICBuYW1lLCBhcmd1bWVudHMsIGNhbGxpbmdGaWxlLCBjYWxsaW5nTGluZSwgbG9vcENoZWNrZXIsIGluZm8sCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zLCBlbWJlZGRlZE1hY3JvQ2FsbExpbmUsIGVtYmVkZGVkTWFjcm9DYWxsRmlsZSk7CisgICAgICAgIGZvdW5kID0gZXZhbFJlc3VsdC5maXJzdDsKKyAgICAgICAgcmVzdWx0ID0gZXZhbFJlc3VsdC5zZWNvbmQ7CisgICAgICAgIHJlc3VsdCA9IHN0ZDo6cmVnZXhfcmVwbGFjZShyZXN1bHQsIHN0ZDo6cmVnZXgoImBgIiksICIiKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgaWYgKGluZm8pIHsKKyAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICByZXN1bHQgPSAiIjsKKyAgICAgIH0KICAgICB9CiAgIH0KICAgaWYgKGZvdW5kID09IGZhbHNlKSB7CkBAIC0xMDY4LDYgKzEwNzcsOCBAQAogfQogCiB2b2lkIFByZXByb2Nlc3NGaWxlOjpzYXZlQ2FjaGUoKSB7CisgICBpZiAoZ2V0Q29tcGlsZVNvdXJjZUZpbGUoKS0+Z2V0Q29tbWFuZExpbmVQYXJzZXIoKS0+cGFyc2VPbmx5KCkpCisgICAgcmV0dXJuOwogICBpZiAobV9tYWNyb0JvZHkgPT0gIiIpIHsKICAgICBpZiAoIW1fdXNpbmdDYWNoZWRWZXJzaW9uKSB7CiAgICAgICBQUENhY2hlIGNhY2hlKHRoaXMpOwpkaWZmIC0tZ2l0IGEvc3JjL1NvdXJjZUNvbXBpbGUvUHJlcHJvY2Vzc0ZpbGUuaCBiL3NyYy9Tb3VyY2VDb21waWxlL1ByZXByb2Nlc3NGaWxlLmgKaW5kZXggNmU0YTljZS4uYjMyMTY4YyAxMDA2NDQKLS0tIGEvc3JjL1NvdXJjZUNvbXBpbGUvUHJlcHJvY2Vzc0ZpbGUuaAorKysgYi9zcmMvU291cmNlQ29tcGlsZS9QcmVwcm9jZXNzRmlsZS5oCkBAIC0xNTIsMjcgKzE1MiwzMiBAQAogICAgICAgQXNJc1VuZGVmaW5lZE1hY3JvID0gdHJ1ZSwKICAgICAgIENvbXBsYWluVW5kZWZpbmVkTWFjcm8gPSBmYWxzZQogICAgIH07CisgICAgZW51bSBFdmFsdWF0ZUluc3RyIDogYm9vbCB7IEV2YWx1YXRlID0gdHJ1ZSwgRG9udEV2YWx1YXRlID0gZmFsc2UgfTsKICAgICBTcGVjaWFsSW5zdHJ1Y3Rpb25zKCkKICAgICAgICAgOiBtX211dGUoRG9udE11dGUpLAogICAgICAgICAgIG1fbWFya19lbXB0eV9tYWNybyhEb250TWFyayksCiAgICAgICAgICAgbV9maWx0ZXJGaWxlTGluZShEb250RmlsdGVyKSwKICAgICAgICAgICBtX2NoZWNrX21hY3JvX2xvb3AoRG9udENoZWNrTG9vcCksCi0gICAgICAgICAgbV9hc19pc191bmRlZmluZWRfbWFjcm8oQ29tcGxhaW5VbmRlZmluZWRNYWNybykge30KKyAgICAgICAgICBtX2FzX2lzX3VuZGVmaW5lZF9tYWNybyhDb21wbGFpblVuZGVmaW5lZE1hY3JvKSwKKyAgICAgICAgICBtX2V2YWx1YXRlKEV2YWx1YXRlKXt9CiAgICAgU3BlY2lhbEluc3RydWN0aW9ucyhTcGVjaWFsSW5zdHJ1Y3Rpb25zJiByaHMpCiAgICAgICAgIDogbV9tdXRlKHJocy5tX211dGUpLAogICAgICAgICAgIG1fbWFya19lbXB0eV9tYWNybyhyaHMubV9tYXJrX2VtcHR5X21hY3JvKSwKICAgICAgICAgICBtX2ZpbHRlckZpbGVMaW5lKHJocy5tX2ZpbHRlckZpbGVMaW5lKSwKICAgICAgICAgICBtX2NoZWNrX21hY3JvX2xvb3AocmhzLm1fY2hlY2tfbWFjcm9fbG9vcCksCi0gICAgICAgICAgbV9hc19pc191bmRlZmluZWRfbWFjcm8ocmhzLm1fYXNfaXNfdW5kZWZpbmVkX21hY3JvKSB7fQorICAgICAgICAgIG1fYXNfaXNfdW5kZWZpbmVkX21hY3JvKHJocy5tX2FzX2lzX3VuZGVmaW5lZF9tYWNybyksCisgICAgICAgICAgbV9ldmFsdWF0ZShyaHMubV9ldmFsdWF0ZSkge30KICAgICBTcGVjaWFsSW5zdHJ1Y3Rpb25zKFRyYWNlSW5zdHIgbXV0ZSwgRW1wdHlNYWNyb0luc3RyIG1hcmtfZW1wdHlfbWFjcm8sCiAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlTGluZUluZm9JbnN0ciBmaWx0ZXJGaWxlTGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrTG9vcEluc3RyIGNoZWNrX21hY3JvX2xvb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICBBc0lzVW5kZWZpbmVkTWFjcm9JbnN0ciBhc19pc191bmRlZmluZWRfbWFjcm8pCisgICAgICAgICAgICAgICAgICAgICAgICBBc0lzVW5kZWZpbmVkTWFjcm9JbnN0ciBhc19pc191bmRlZmluZWRfbWFjcm8sCisgICAgICAgICAgICAgICAgICAgICAgICBFdmFsdWF0ZUluc3RyIGV2YWxhdXRlID0gRXZhbHVhdGUpCiAgICAgICAgIDogbV9tdXRlKG11dGUpLAogICAgICAgICAgIG1fbWFya19lbXB0eV9tYWNybyhtYXJrX2VtcHR5X21hY3JvKSwKICAgICAgICAgICBtX2ZpbHRlckZpbGVMaW5lKGZpbHRlckZpbGVMaW5lKSwKICAgICAgICAgICBtX2NoZWNrX21hY3JvX2xvb3AoY2hlY2tfbWFjcm9fbG9vcCksCi0gICAgICAgICAgbV9hc19pc191bmRlZmluZWRfbWFjcm8oYXNfaXNfdW5kZWZpbmVkX21hY3JvKSB7fQorICAgICAgICAgIG1fYXNfaXNfdW5kZWZpbmVkX21hY3JvKGFzX2lzX3VuZGVmaW5lZF9tYWNybyksCisgICAgICAgICAgbV9ldmFsdWF0ZShldmFsYXV0ZSkge30KICAgICB2b2lkIHByaW50KCkgewogICAgICAgc3RkOjpjb3V0IDw8ICJUcmFjZToiIDw8IChtX211dGUgPyAiTXV0ZSIgOiAiRG9udE11dGUiKQogICAgICAgICAgICAgICAgIDw8ICIsIEVtcHR5TWFjcm86IiA8PCAobV9tYXJrX2VtcHR5X21hY3JvID8gIk1hcmsiIDogIkRvbnRNYXJrIikKQEAgLTE4MywxMyArMTg4LDE2IEBACiAgICAgICAgICAgICAgICAgPDwgIiwgQXNJc1VuZGVmTWFjcm86IgogICAgICAgICAgICAgICAgIDw8IChtX2FzX2lzX3VuZGVmaW5lZF9tYWNybyA/ICJBc0lzVW5kZWZpbmVkTWFjcm8iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIkNvbXBsYWluVW5kZWZpbmVkTWFjcm8iKQorICAgICAgICAgICAgICAgIDw8ICIsIEV2YWx1YXRlOiIKKyAgICAgICAgICAgICAgICA8PCAobV9ldmFsdWF0ZSA/ICJFdmFsdWF0ZSIgOiAiRG9udEV2YWx1YXRlIikKICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CiAgICAgfTsKLSAgICBUcmFjZUluc3RyIG1fbXV0ZTsKLSAgICBFbXB0eU1hY3JvSW5zdHIgbV9tYXJrX2VtcHR5X21hY3JvOworICAgIFRyYWNlSW5zdHIgICAgICAgIG1fbXV0ZTsKKyAgICBFbXB0eU1hY3JvSW5zdHIgICBtX21hcmtfZW1wdHlfbWFjcm87CiAgICAgRmlsZUxpbmVJbmZvSW5zdHIgbV9maWx0ZXJGaWxlTGluZTsKLSAgICBDaGVja0xvb3BJbnN0ciBtX2NoZWNrX21hY3JvX2xvb3A7CisgICAgQ2hlY2tMb29wSW5zdHIgICAgbV9jaGVja19tYWNyb19sb29wOwogICAgIEFzSXNVbmRlZmluZWRNYWNyb0luc3RyIG1fYXNfaXNfdW5kZWZpbmVkX21hY3JvOworICAgIEV2YWx1YXRlSW5zdHIgICAgIG1fZXZhbHVhdGU7CiAgIH07CiAKICAgc3RkOjpzdHJpbmcgZXZhbHVhdGVNYWNyb0luc3RhbmNlKApkaWZmIC0tZ2l0IGEvc3JjL1NvdXJjZUNvbXBpbGUvU1YzXzFhUHBUcmVlU2hhcGVMaXN0ZW5lci5jcHAgYi9zcmMvU291cmNlQ29tcGlsZS9TVjNfMWFQcFRyZWVTaGFwZUxpc3RlbmVyLmNwcAppbmRleCA0ZTE5YzQxLi5hMjcwMmNiIDEwMDY0NAotLS0gYS9zcmMvU291cmNlQ29tcGlsZS9TVjNfMWFQcFRyZWVTaGFwZUxpc3RlbmVyLmNwcAorKysgYi9zcmMvU291cmNlQ29tcGlsZS9TVjNfMWFQcFRyZWVTaGFwZUxpc3RlbmVyLmNwcApAQCAtMzAyLDE0ICszMDIsMjYgQEAKICAgICBtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZyA9IHRydWU7CiAgICAgU1YzXzFhUHBQYXJzZXI6OlNpbXBsZV9tYWNyb19kZWZpbml0aW9uX2JvZHlDb250ZXh0KiBjQm9keSA9CiAgICAgICAgIGN0eC0+c2ltcGxlX21hY3JvX2RlZmluaXRpb25fYm9keSgpOworICAgIAorICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gbGluZUNvbCA9IFBhcnNlVXRpbHM6OmdldExpbmVDb2x1bW4oCisgICAgICAgIGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSA/IGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjdHgtPkVzY2FwZWRfaWRlbnRpZmllcigpKTsKKyAgICAKKyAgICAvLyBJbW1lZGlhdGUgZXZhbHVhdGUgc2luY2UgdGhlcmUgYXJlIG5vIGFyZ3MKKyAgICAvL3N0ZDo6c3RyaW5nIGV2YWxCb2R5ID0gbV9wcC0+ZXZhbHVhdGVNYWNyb0luc3RhbmNlKAorICAgIC8vICAgICAgY0JvZHktPmdldFRleHQoKSwgbV9wcCwgbGluZUNvbC5maXJzdCwKKyAgICAvLyAgICAgIFByZXByb2Nlc3NGaWxlOjpTcGVjaWFsSW5zdHJ1Y3Rpb25zOjpDaGVja0xvb3AsCisgICAgLy8gICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9uczo6QXNJc1VuZGVmaW5lZE1hY3JvKTsKKyAgICAvL3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBib2R5X3Rva2VuczsKKyAgICAvL2JvZHlfdG9rZW5zLnB1c2hfYmFjayhldmFsQm9keSk7CisgICAgCiAgICAgc3RkOjp2ZWN0b3I8VG9rZW4qPiB0b2tlbnMgPSBQYXJzZVV0aWxzOjpnZXRGbGF0VG9rZW5MaXN0KGNCb2R5KTsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYm9keV90b2tlbnM7CiAgICAgZm9yIChhdXRvIHRva2VuIDogdG9rZW5zKSB7CiAgICAgICBib2R5X3Rva2Vucy5wdXNoX2JhY2sodG9rZW4tPmdldFRleHQoKSk7CiAgICAgfQotICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gbGluZUNvbCA9IFBhcnNlVXRpbHM6OmdldExpbmVDb2x1bW4oCi0gICAgICAgIGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSA/IGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjdHgtPkVzY2FwZWRfaWRlbnRpZmllcigpKTsKKyAgICAKKyAgICAKICAgICBjaGVja011bHRpcGx5RGVmaW5lZE1hY3JvKG1hY3JvTmFtZSwgY3R4KTsKICAgICBtX3BwLT5yZWNvcmRNYWNybyhtYWNyb05hbWUsIG1fcHAtPmdldExpbmVOYihsaW5lQ29sLmZpcnN0KSwgbGluZUNvbC5zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgIiIsIGJvZHlfdG9rZW5zKTsKZGlmZiAtLWdpdCBhL3NyYy9Tb3VyY2VDb21waWxlL1NWM18xYVBwVHJlZVNoYXBlTGlzdGVuZXIuaCBiL3NyYy9Tb3VyY2VDb21waWxlL1NWM18xYVBwVHJlZVNoYXBlTGlzdGVuZXIuaAppbmRleCBhMzBhOWRjLi4zMmZhZTM2IDEwMDY0NAotLS0gYS9zcmMvU291cmNlQ29tcGlsZS9TVjNfMWFQcFRyZWVTaGFwZUxpc3RlbmVyLmgKKysrIGIvc3JjL1NvdXJjZUNvbXBpbGUvU1YzXzFhUHBUcmVlU2hhcGVMaXN0ZW5lci5oCkBAIC0zNCw2OTUgKzM0LDc5OCBAQAogCiBuYW1lc3BhY2UgU1VSRUxPRyB7CiAKLSAgICBzdGF0aWMgc3RkOjpzdHJpbmcgRXNjYXBlU2VxdWVuY2UgPSAiI35AIjsKLSAgICAKLSAgICBjbGFzcyBTVjNfMWFQcFRyZWVTaGFwZUxpc3RlbmVyIDogcHVibGljIFNWM18xYVBwUGFyc2VyQmFzZUxpc3RlbmVyIHsKLSAgICBwcml2YXRlOgotICAgICAgICBQcmVwcm9jZXNzRmlsZSogbV9wcDsKLSAgICAgICAgYm9vbCBtX2luQWN0aXZlQnJhbmNoOwotICAgICAgICBib29sIG1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nOwotICAgICAgICBib29sIG1faW5Qcm90ZWN0ZWRSZWdpb247Ci0gICAgICAgIGJvb2wgbV9maWx0ZXJQcm90ZWN0ZWRSZWdpb25zOwotICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbV9yZXNlcnZlZE1hY3JvTmFtZXM7Ci0gICAgICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiAgICBtX3Jlc2VydmVkTWFjcm9OYW1lc1NldDsKLSAgICAgICAgUGFyc2VyUnVsZUNvbnRleHQqICAgICAgIG1fYXBwZW5kX3BhdXNlZF9jb250ZXh0OwotICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9ucyAgbV9pbnN0cnVjdGlvbnM7Ci0gICAgcHVibGljOgorc3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZVNlcXVlbmNlID0gIiN+QCI7CiAKLSAgICAgICAgU1YzXzFhUHBUcmVlU2hhcGVMaXN0ZW5lcihQcmVwcm9jZXNzRmlsZSogcHAsIFByZXByb2Nlc3NGaWxlOjpTcGVjaWFsSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMpIDoKLSAgICAgICAgICAgICBtX3BwKHBwKSwgbV9pbkFjdGl2ZUJyYW5jaCh0cnVlKSwgbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcoZmFsc2UpLCAKLSAgICAgICAgICAgICBtX2luUHJvdGVjdGVkUmVnaW9uKGZhbHNlKSwgbV9maWx0ZXJQcm90ZWN0ZWRSZWdpb25zKGZhbHNlKSwgbV9hcHBlbmRfcGF1c2VkX2NvbnRleHQoTlVMTCksIG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykgewotICAgICAgICAgICAgICAgaW5pdCgpOworY2xhc3MgU1YzXzFhUHBUcmVlU2hhcGVMaXN0ZW5lciA6IHB1YmxpYyBTVjNfMWFQcFBhcnNlckJhc2VMaXN0ZW5lciB7Citwcml2YXRlOgorICAgIFByZXByb2Nlc3NGaWxlKiBtX3BwOworICAgIGJvb2wgbV9pbkFjdGl2ZUJyYW5jaDsKKyAgICBib29sIG1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nOworICAgIGJvb2wgbV9pblByb3RlY3RlZFJlZ2lvbjsKKyAgICBib29sIG1fZmlsdGVyUHJvdGVjdGVkUmVnaW9uczsKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbV9yZXNlcnZlZE1hY3JvTmFtZXM7CisgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1fcmVzZXJ2ZWRNYWNyb05hbWVzU2V0OworICAgIFBhcnNlclJ1bGVDb250ZXh0KiBtX2FwcGVuZF9wYXVzZWRfY29udGV4dDsKKyAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9ucyBtX2luc3RydWN0aW9uczsKK3B1YmxpYzoKKworICAgIFNWM18xYVBwVHJlZVNoYXBlTGlzdGVuZXIoUHJlcHJvY2Vzc0ZpbGUqIHBwLCBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKSA6CisgICAgbV9wcChwcCksIG1faW5BY3RpdmVCcmFuY2godHJ1ZSksIG1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nKGZhbHNlKSwKKyAgICBtX2luUHJvdGVjdGVkUmVnaW9uKGZhbHNlKSwgbV9maWx0ZXJQcm90ZWN0ZWRSZWdpb25zKGZhbHNlKSwgbV9hcHBlbmRfcGF1c2VkX2NvbnRleHQoTlVMTCksIG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykKKyAgICB7CisgICAgICAgIGluaXQoKTsKKyAgICB9CisKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gaWYtZWxzZQorICAgIHZvaWQgc2V0Q3VycmVudEJyYW5jaEFjdGl2aXR5KCk7CisgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGlmLWVsc2UKKyAgICBib29sIGlzUHJldmlvdXNCcmFuY2hBY3RpdmUoKTsKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gbG9nIGVycm9ycworICAgIHZvaWQgbG9nRXJyb3IoRXJyb3JEZWZpbml0aW9uOjpFcnJvclR5cGUgZXJyb3IsIFBhcnNlclJ1bGVDb250ZXh0KiBjdHgsIHN0ZDo6c3RyaW5nIG9iamVjdCwgYm9vbCBwcmludENvbHVtbiA9IGZhbHNlKTsKKyAgICB2b2lkIGxvZ0Vycm9yKEVycm9yRGVmaW5pdGlvbjo6RXJyb3JUeXBlLCBMb2NhdGlvbiYgbG9jLCBib29sIHNob3dEdXBsaWNhdGVzID0gZmFsc2UpOworICAgIHZvaWQgbG9nRXJyb3IoRXJyb3JEZWZpbml0aW9uOjpFcnJvclR5cGUsIExvY2F0aW9uJiBsb2MsIExvY2F0aW9uJiBleHRyYUxvYywgYm9vbCBzaG93RHVwbGljYXRlcyA9IGZhbHNlKTsKKyAgICB2b2lkIGNoZWNrTXVsdGlwbHlEZWZpbmVkTWFjcm8oc3RkOjpzdHJpbmcmIG1hY3JvTmFtZSwgUGFyc2VyUnVsZUNvbnRleHQqIGN0eCk7CisgICAgdm9pZCBmb3J3YXJkVG9QYXJzZXIoUGFyc2VyUnVsZUNvbnRleHQqIGN0eCk7CisgICAgdm9pZCBpbml0KCk7CisKKyAgICBTeW1ib2xUYWJsZSogZ2V0U3ltYm9sVGFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHAtPmdldENvbXBpbGVTb3VyY2VGaWxlKCktPmdldFN5bWJvbFRhYmxlKCk7CisgICAgfQorCisgICAgdm9pZCBlbnRlclNvdXJjZV90ZXh0KFNWM18xYVBwUGFyc2VyOjpTb3VyY2VfdGV4dENvbnRleHQgKiAvKmN0eCovKQorICAgIHsKKyAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnNldEN1cnJlbnRUaW1lSW5mbyhtX3BwLT5nZXRGaWxlSWQoMCkpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdFNvdXJjZV90ZXh0KFNWM18xYVBwUGFyc2VyOjpTb3VyY2VfdGV4dENvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICAvL3ZvaWQgZW50ZXJEZXNjcmlwdGlvbihTVjNfMWFQcFBhcnNlcjo6RGVzY3JpcHRpb25Db250ZXh0ICogLypjdHgqLykgIHsgfQorICAgIC8vdm9pZCBleGl0RGVzY3JpcHRpb24oU1YzXzFhUHBQYXJzZXI6OkRlc2NyaXB0aW9uQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKworICAgIHZvaWQgZW50ZXJDb21tZW50cyhTVjNfMWFQcFBhcnNlcjo6Q29tbWVudHNDb250ZXh0ICogY3R4KTsKKyAgICAvL3ZvaWQgZXhpdENvbW1lbnRzKFNWM18xYVBwUGFyc2VyOjpDb21tZW50c0NvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyTnVtYmVyKFNWM18xYVBwUGFyc2VyOjpOdW1iZXJDb250ZXh0KiBjdHgpOworCisgICAgLy92b2lkIGVudGVyTWFjcm9fZGVmaW5pdGlvbihTVjNfMWFQcFBhcnNlcjo6TWFjcm9fZGVmaW5pdGlvbkNvbnRleHQgKiAvKmN0eCovKSB7fQorICAgIC8vdm9pZCBleGl0TWFjcm9fZGVmaW5pdGlvbihTVjNfMWFQcFBhcnNlcjo6TWFjcm9fZGVmaW5pdGlvbkNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyTGluZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkxpbmVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KTsKKworICAgIHZvaWQgZXhpdExpbmVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpMaW5lX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKQorICAgIHsKKyAgICAgICAgbV9wcC0+cmVzdW1lQXBwZW5kKCk7CisgICAgfQorCisgICAgdm9pZCBlbnRlckRlZmF1bHRfbmV0dHlwZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkRlZmF1bHRfbmV0dHlwZV9kaXJlY3RpdmVDb250ZXh0ICogY3R4KQorICAgIHsKKyAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0RGVmYXVsdF9uZXR0eXBlX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVmYXVsdF9uZXR0eXBlX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyU3ZfZmlsZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlN2X2ZpbGVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KTsKKworICAgIHZvaWQgZXhpdFN2X2ZpbGVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpTdl9maWxlX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKQorICAgIHsKKyAgICAgICAgbV9wcC0+cmVzdW1lQXBwZW5kKCk7CisgICAgfQorCisgICAgdm9pZCBlbnRlclN2X2xpbmVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpTdl9saW5lX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCk7CisKKyAgICB2b2lkIGV4aXRTdl9saW5lX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6U3ZfbGluZV9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykKKyAgICB7CisgICAgICAgIG1fcHAtPnJlc3VtZUFwcGVuZCgpOworICAgIH0KKworICAgIHZvaWQgZW50ZXJUaW1lc2NhbGVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpUaW1lc2NhbGVfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCkKKyAgICB7CisgICAgICAgIGlmIChtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+aXNJbkRlc2lnbkVsZW1lbnQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgZGlyZWN0aXZlID0gImB0aW1lc2NhbGUiOworICAgICAgICAgICAgZ2V0U3ltYm9sVGFibGUoKS0+cmVnaXN0ZXJTeW1ib2woZGlyZWN0aXZlKTsKKyAgICAgICAgICAgIGxvZ0Vycm9yKEVycm9yRGVmaW5pdGlvbjo6UFBfSUxMRUdBTF9ESVJFQ1RJVkVfSU5fREVTSUdOX0VMRU1FTlQsIGN0eCwgZGlyZWN0aXZlKTsKICAgICAgICAgfQorICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKIAotICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gaWYtZWxzZQotICAgICAgICB2b2lkIHNldEN1cnJlbnRCcmFuY2hBY3Rpdml0eSgpOwotICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gaWYtZWxzZQotICAgICAgICBib29sIGlzUHJldmlvdXNCcmFuY2hBY3RpdmUoKTsKLSAgICAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGxvZyBlcnJvcnMKLSAgICAgICAgdm9pZCBsb2dFcnJvcihFcnJvckRlZmluaXRpb246OkVycm9yVHlwZSBlcnJvciwgUGFyc2VyUnVsZUNvbnRleHQqIGN0eCwgc3RkOjpzdHJpbmcgb2JqZWN0LCBib29sIHByaW50Q29sdW1uID0gZmFsc2UpOwotICAgICAgICB2b2lkIGxvZ0Vycm9yKEVycm9yRGVmaW5pdGlvbjo6RXJyb3JUeXBlLCBMb2NhdGlvbiYgbG9jLCBib29sIHNob3dEdXBsaWNhdGVzID0gZmFsc2UpOwotICAgICAgICB2b2lkIGxvZ0Vycm9yKEVycm9yRGVmaW5pdGlvbjo6RXJyb3JUeXBlLCBMb2NhdGlvbiYgbG9jLCBMb2NhdGlvbiYgZXh0cmFMb2MsIGJvb2wgc2hvd0R1cGxpY2F0ZXMgPSBmYWxzZSk7ICAgICAgICAKLSAgICAgICAgdm9pZCBjaGVja011bHRpcGx5RGVmaW5lZE1hY3JvKHN0ZDo6c3RyaW5nJiBtYWNyb05hbWUsIFBhcnNlclJ1bGVDb250ZXh0KiBjdHgpOwotICAgICAgICB2b2lkIGZvcndhcmRUb1BhcnNlcihQYXJzZXJSdWxlQ29udGV4dCogY3R4KTsKLSAgICAgICAgdm9pZCBpbml0KCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlKiBnZXRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fcHAtPmdldENvbXBpbGVTb3VyY2VGaWxlKCktPmdldFN5bWJvbFRhYmxlICgpOyB9IAotICAgICAgICAKLSAgICAgICAgdm9pZCBlbnRlclNvdXJjZV90ZXh0KFNWM18xYVBwUGFyc2VyOjpTb3VyY2VfdGV4dENvbnRleHQgKiAvKmN0eCovKSAgeyAKLSAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnNldEN1cnJlbnRUaW1lSW5mbyhtX3BwLT5nZXRGaWxlSWQoMCkpOworICAgICAgICBUaW1lSW5mbyBjb21wVW5pdFRpbWVJbmZvOworICAgICAgICBjb21wVW5pdFRpbWVJbmZvLm1fdHlwZSA9IFRpbWVJbmZvOjpUaW1lc2NhbGU7CisgICAgICAgIGNvbXBVbml0VGltZUluZm8ubV9maWxlSWQgPSBtX3BwLT5nZXRGaWxlSWQoMCk7CisgICAgICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gbGluZUNvbCA9IFBhcnNlVXRpbHM6OmdldExpbmVDb2x1bW4oY3R4LT5USU1FU0NBTEUoKSk7CisgICAgICAgIGNvbXBVbml0VGltZUluZm8ubV9saW5lID0gbGluZUNvbC5maXJzdDsKKyAgICAgICAgc3RkOjpyZWdleCBiYXNlX3JlZ2V4KCIoWzAtOV0rKShbbW5zdXBmXSspWyBdKi9bIF0qKFswLTldKykoW21uc3VwZl0rKSIpOworICAgICAgICBzdGQ6OnNtYXRjaCBiYXNlX21hdGNoOworICAgICAgICBzdGQ6OnN0cmluZyB2YWx1ZSA9IGN0eC0+VElNRVNDQUxFKCktPmdldFRleHQoKS5jX3N0cigpOworICAgICAgICBpZiAoc3RkOjpyZWdleF9tYXRjaCh2YWx1ZSwgYmFzZV9tYXRjaCwgYmFzZV9yZWdleCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3N1Yl9tYXRjaCBiYXNlMV9zdWJfbWF0Y2ggPSBiYXNlX21hdGNoWzFdOworICAgICAgICAgICAgc3RkOjpzdHJpbmcgYmFzZTEgPSBiYXNlMV9zdWJfbWF0Y2guc3RyKCk7CisgICAgICAgICAgICBjb21wVW5pdFRpbWVJbmZvLm1fdGltZVVuaXRWYWx1ZSA9IGF0b2koYmFzZTEuY19zdHIoKSk7CisgICAgICAgICAgICBjb21wVW5pdFRpbWVJbmZvLm1fdGltZVVuaXQgPSBUaW1lSW5mbzo6dW5pdEZyb21TdHJpbmcoYmFzZV9tYXRjaFsyXS5zdHIoKSk7CisgICAgICAgICAgICBzdGQ6OnNzdWJfbWF0Y2ggYmFzZTJfc3ViX21hdGNoID0gYmFzZV9tYXRjaFszXTsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGJhc2UyID0gYmFzZTJfc3ViX21hdGNoLnN0cigpOworICAgICAgICAgICAgY29tcFVuaXRUaW1lSW5mby5tX3RpbWVQcmVjaXNpb25WYWx1ZSA9IGF0b2koYmFzZTIuY19zdHIoKSk7CisgICAgICAgICAgICBjb21wVW5pdFRpbWVJbmZvLm1fdGltZVByZWNpc2lvbiA9IFRpbWVJbmZvOjp1bml0RnJvbVN0cmluZyhiYXNlX21hdGNoWzRdLnN0cigpKTsKICAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdFNvdXJjZV90ZXh0KFNWM18xYVBwUGFyc2VyOjpTb3VyY2VfdGV4dENvbnRleHQgKiAvKmN0eCovKSAgeyB9CisgICAgICAgIG1fcHAtPmdldENvbXBpbGF0aW9uVW5pdCgpLT5yZWNvcmRUaW1lSW5mbyhjb21wVW5pdFRpbWVJbmZvKTsKIAotICAgICAgICAvL3ZvaWQgZW50ZXJEZXNjcmlwdGlvbihTVjNfMWFQcFBhcnNlcjo6RGVzY3JpcHRpb25Db250ZXh0ICogLypjdHgqLykgIHsgfQotICAgICAgICAvL3ZvaWQgZXhpdERlc2NyaXB0aW9uKFNWM18xYVBwUGFyc2VyOjpEZXNjcmlwdGlvbkNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisgICAgfQorICAgIC8vdm9pZCBleGl0VGltZXNjYWxlX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6VGltZXNjYWxlX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CiAKLSAgICAgICAgdm9pZCBlbnRlckNvbW1lbnRzKFNWM18xYVBwUGFyc2VyOjpDb21tZW50c0NvbnRleHQgKiBjdHgpOwotICAgICAgICAvL3ZvaWQgZXhpdENvbW1lbnRzKFNWM18xYVBwUGFyc2VyOjpDb21tZW50c0NvbnRleHQgKiAvKmN0eCovKSAgeyB9Ci0KLSAgICAgICAgdm9pZCBlbnRlck51bWJlcihTVjNfMWFQcFBhcnNlcjo6TnVtYmVyQ29udGV4dCogY3R4KTsKLSAgICAgICAgCi0gICAgICAgIC8vdm9pZCBlbnRlck1hY3JvX2RlZmluaXRpb24oU1YzXzFhUHBQYXJzZXI6Ok1hY3JvX2RlZmluaXRpb25Db250ZXh0ICogLypjdHgqLykge30KLSAgICAgICAgLy92b2lkIGV4aXRNYWNyb19kZWZpbml0aW9uKFNWM18xYVBwUGFyc2VyOjpNYWNyb19kZWZpbml0aW9uQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KLQotICAgICAgICB2b2lkIGVudGVyTGluZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkxpbmVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KTsgICAgICAgIAotICAgICAgICB2b2lkIGV4aXRMaW5lX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6TGluZV9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgbV9wcC0+cmVzdW1lQXBwZW5kKCk7IH0KLQotICAgICAgICB2b2lkIGVudGVyRGVmYXVsdF9uZXR0eXBlX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVmYXVsdF9uZXR0eXBlX2RpcmVjdGl2ZUNvbnRleHQgKiBjdHgpIHsKLSAgICAgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIHZvaWQgZW50ZXJVbmRlZl9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlVuZGVmX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIG1hY3JvTmFtZTsKKyAgICAgICAgc3RkOjpwYWlyPGludCwgaW50PiBsaW5lQ29sID0gUGFyc2VVdGlsczo6Z2V0TGluZUNvbHVtbihtX3BwLT5nZXRUb2tlblN0cmVhbSgpLCBjdHgpOworICAgICAgICBpZiAoY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpKQorICAgICAgICAgICAgbWFjcm9OYW1lID0gY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpLT5nZXRUZXh0KCk7CisgICAgICAgIGVsc2UgaWYgKGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgIG1hY3JvTmFtZSA9IGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCktPmdldFRleHQoKTsKKyAgICAgICAgICAgIG1hY3JvTmFtZS5lcmFzZSgwLCAxKTsKKyAgICAgICAgICAgIFN0cmluZ1V0aWxzOjpydHJpbShtYWNyb05hbWUpOworICAgICAgICB9IGVsc2UgaWYgKGN0eC0+bWFjcm9faW5zdGFuY2UoKSkgeworICAgICAgICAgICAgbWFjcm9OYW1lID0gbV9wcC0+ZXZhbHVhdGVNYWNyb0luc3RhbmNlKGN0eC0+bWFjcm9faW5zdGFuY2UoKS0+Z2V0VGV4dCgpLCBtX3BwLCBsaW5lQ29sLmZpcnN0LAorICAgICAgICAgICAgICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9uczo6Q2hlY2tMb29wLAorICAgICAgICAgICAgICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9uczo6Q29tcGxhaW5VbmRlZmluZWRNYWNybyk7CiAgICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXREZWZhdWx0X25ldHR5cGVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpEZWZhdWx0X25ldHR5cGVfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KLQotICAgICAgICB2b2lkIGVudGVyU3ZfZmlsZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlN2X2ZpbGVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KTsKLSAgICAgICAgdm9pZCBleGl0U3ZfZmlsZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlN2X2ZpbGVfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IG1fcHAtPnJlc3VtZUFwcGVuZCgpO30KLQotICAgICAgICB2b2lkIGVudGVyU3ZfbGluZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlN2X2xpbmVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KTsKLSAgICAgICAgdm9pZCBleGl0U3ZfbGluZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlN2X2xpbmVfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IG1fcHAtPnJlc3VtZUFwcGVuZCgpO30KLQotICAgICAgICB2b2lkIGVudGVyVGltZXNjYWxlX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6VGltZXNjYWxlX2RpcmVjdGl2ZUNvbnRleHQgKiBjdHgpIHsKLSAgICAgICAgICAgIGlmIChtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+aXNJbkRlc2lnbkVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGRpcmVjdGl2ZSA9ICJgdGltZXNjYWxlIjsKLSAgICAgICAgICAgICAgICBnZXRTeW1ib2xUYWJsZSgpLT5yZWdpc3RlclN5bWJvbChkaXJlY3RpdmUpOwotICAgICAgICAgICAgICAgIGxvZ0Vycm9yKEVycm9yRGVmaW5pdGlvbjo6UFBfSUxMRUdBTF9ESVJFQ1RJVkVfSU5fREVTSUdOX0VMRU1FTlQsIGN0eCwgZGlyZWN0aXZlKTsKKyAgICAgICAgaWYgKG1fcHAtPm1fZGVidWdNYWNybykgc3RkOjpjb3V0IDw8ICJVbmRlZmluaW5nIG1hY3JvOiAiIDw8IG1hY3JvTmFtZSA8PCBzdGQ6OmVuZGw7CisgICAgICAgIHN0ZDo6c2V0PFByZXByb2Nlc3NGaWxlKj4gdmlzaXRlZDsKKyAgICAgICAgaWYgKG1faW5BY3RpdmVCcmFuY2ggJiYgKCFtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZykpIHsKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBtX3BwLT5kZWxldGVNYWNybyhtYWNyb05hbWUsIHZpc2l0ZWQpOworICAgICAgICAgICAgaWYgKCFmb3VuZCkgeworICAgICAgICAgICAgICAgIGxvZ0Vycm9yKEVycm9yRGVmaW5pdGlvbjo6UFBfVU5ERUZfVU5LT1dOX01BQ1JPLCBjdHgsIG1hY3JvTmFtZSk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgLy92b2lkIGV4aXRVbmRlZl9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlVuZGVmX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVySWZkZWZfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpJZmRlZl9kaXJlY3RpdmVDb250ZXh0ICogY3R4KQorICAgIHsKKyAgICAgICAgUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZUl0ZW0gaXRlbTsKKyAgICAgICAgc3RkOjpzdHJpbmcgbWFjcm9OYW1lOworICAgICAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+IGxpbmVDb2wgPSBQYXJzZVV0aWxzOjpnZXRMaW5lQ29sdW1uKG1fcHAtPmdldFRva2VuU3RyZWFtKCksIGN0eCk7CisgICAgICAgIGlmIChjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCkpCisgICAgICAgICAgICBtYWNyb05hbWUgPSBjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCktPmdldFRleHQoKTsKKyAgICAgICAgZWxzZSBpZiAoY3R4LT5Fc2NhcGVkX2lkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgbWFjcm9OYW1lID0gY3R4LT5Fc2NhcGVkX2lkZW50aWZpZXIoKS0+Z2V0VGV4dCgpOworICAgICAgICAgICAgbWFjcm9OYW1lLmVyYXNlKDAsIDEpOworICAgICAgICAgICAgU3RyaW5nVXRpbHM6OnJ0cmltKG1hY3JvTmFtZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY3R4LT5tYWNyb19pbnN0YW5jZSgpKSB7CisgICAgICAgICAgICBtYWNyb05hbWUgPSBtX3BwLT5ldmFsdWF0ZU1hY3JvSW5zdGFuY2UoY3R4LT5tYWNyb19pbnN0YW5jZSgpLT5nZXRUZXh0KCksIG1fcHAsIGxpbmVDb2wuZmlyc3QsCisgICAgICAgICAgICAgICAgICAgIFByZXByb2Nlc3NGaWxlOjpTcGVjaWFsSW5zdHJ1Y3Rpb25zOjpDaGVja0xvb3AsCisgICAgICAgICAgICAgICAgICAgIFByZXByb2Nlc3NGaWxlOjpTcGVjaWFsSW5zdHJ1Y3Rpb25zOjpDb21wbGFpblVuZGVmaW5lZE1hY3JvKTsKKyAgICAgICAgfQorICAgICAgICBpdGVtLm1fbWFjcm9OYW1lID0gbWFjcm9OYW1lOworICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYXJnczsKKyAgICAgICAgaWYgKCFtX3BwLT5pc01hY3JvQm9keSgpKSB7CisgICAgICAgICAgICBtX3BwLT5nZXRTb3VyY2VGaWxlKCktPm1fbG9vcENoZWNrZXIuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9ucyBpbnN0ciA9IG1fcHAtPm1faW5zdHJ1Y3Rpb25zOworICAgICAgICBpbnN0ci5tX2V2YWx1YXRlID0gUHJlcHJvY2Vzc0ZpbGU6OlNwZWNpYWxJbnN0cnVjdGlvbnM6OkRvbnRFdmFsdWF0ZTsKKyAgICAgICAgc3RkOjpzdHJpbmcgbWFjcm9Cb2R5ID0gbV9wcC0+Z2V0TWFjcm8oaXRlbS5tX21hY3JvTmFtZSwgYXJncywgbV9wcCwgMCwgbV9wcC0+Z2V0U291cmNlRmlsZSgpLT5tX2xvb3BDaGVja2VyLCBpbnN0cik7CisgICAgICAgIGl0ZW0ubV9kZWZpbmVkID0gKG1hY3JvQm9keSAhPSBQcmVwcm9jZXNzRmlsZTo6TWFjcm9Ob3REZWZpbmVkKTsKKyAgICAgICAgaXRlbS5tX3R5cGUgPSBQcmVwcm9jZXNzRmlsZTo6SWZFbHNlSXRlbTo6SUZERUY7CisgICAgICAgIGl0ZW0ubV9wcmV2aW91c0FjdGl2ZVN0YXRlID0gbV9pbkFjdGl2ZUJyYW5jaDsKKyAgICAgICAgbV9wcC0+Z2V0U3RhY2soKS5wdXNoX2JhY2soaXRlbSk7CisgICAgICAgIHNldEN1cnJlbnRCcmFuY2hBY3Rpdml0eSgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdElmZGVmX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6SWZkZWZfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKworICAgIHZvaWQgZW50ZXJJZm5kZWZfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpJZm5kZWZfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCkKKyAgICB7CisgICAgICAgIFByZXByb2Nlc3NGaWxlOjpJZkVsc2VJdGVtIGl0ZW07CisgICAgICAgIHN0ZDo6c3RyaW5nIG1hY3JvTmFtZTsKKyAgICAgICAgc3RkOjpwYWlyPGludCwgaW50PiBsaW5lQ29sID0gUGFyc2VVdGlsczo6Z2V0TGluZUNvbHVtbihtX3BwLT5nZXRUb2tlblN0cmVhbSgpLCBjdHgpOworICAgICAgICBpZiAoY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpKQorICAgICAgICAgICAgbWFjcm9OYW1lID0gY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpLT5nZXRUZXh0KCk7CisgICAgICAgIGVsc2UgaWYgKGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgIG1hY3JvTmFtZSA9IGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCktPmdldFRleHQoKTsKKyAgICAgICAgICAgIG1hY3JvTmFtZS5lcmFzZSgwLCAxKTsKKyAgICAgICAgICAgIFN0cmluZ1V0aWxzOjpydHJpbShtYWNyb05hbWUpOworICAgICAgICB9IGVsc2UgaWYgKGN0eC0+bWFjcm9faW5zdGFuY2UoKSkgeworICAgICAgICAgICAgbWFjcm9OYW1lID0gbV9wcC0+ZXZhbHVhdGVNYWNyb0luc3RhbmNlKGN0eC0+bWFjcm9faW5zdGFuY2UoKS0+Z2V0VGV4dCgpLCBtX3BwLCBsaW5lQ29sLmZpcnN0LAorICAgICAgICAgICAgICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9uczo6Q2hlY2tMb29wLAorICAgICAgICAgICAgICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9uczo6Q29tcGxhaW5VbmRlZmluZWRNYWNybyk7CisgICAgICAgIH0KKyAgICAgICAgaXRlbS5tX21hY3JvTmFtZSA9IG1hY3JvTmFtZTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGFyZ3M7CisgICAgICAgIGlmICghbV9wcC0+aXNNYWNyb0JvZHkoKSkgeworICAgICAgICAgICAgbV9wcC0+Z2V0U291cmNlRmlsZSgpLT5tX2xvb3BDaGVja2VyLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgUHJlcHJvY2Vzc0ZpbGU6OlNwZWNpYWxJbnN0cnVjdGlvbnMgaW5zdHIgPSBtX3BwLT5tX2luc3RydWN0aW9uczsKKyAgICAgICAgaW5zdHIubV9ldmFsdWF0ZSA9IFByZXByb2Nlc3NGaWxlOjpTcGVjaWFsSW5zdHJ1Y3Rpb25zOjpEb250RXZhbHVhdGU7CisgICAgICAgIHN0ZDo6c3RyaW5nIG1hY3JvQm9keSA9IG1fcHAtPmdldE1hY3JvKGl0ZW0ubV9tYWNyb05hbWUsIGFyZ3MsIG1fcHAsIDAsIG1fcHAtPmdldFNvdXJjZUZpbGUoKS0+bV9sb29wQ2hlY2tlciwgaW5zdHIpOworICAgICAgICBpdGVtLm1fZGVmaW5lZCA9IChtYWNyb0JvZHkgIT0gUHJlcHJvY2Vzc0ZpbGU6Ok1hY3JvTm90RGVmaW5lZCk7CisgICAgICAgIGl0ZW0ubV90eXBlID0gUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZUl0ZW06OklGTkRFRjsKKyAgICAgICAgaXRlbS5tX3ByZXZpb3VzQWN0aXZlU3RhdGUgPSBtX2luQWN0aXZlQnJhbmNoOworICAgICAgICBtX3BwLT5nZXRTdGFjaygpLnB1c2hfYmFjayhpdGVtKTsKKyAgICAgICAgc2V0Q3VycmVudEJyYW5jaEFjdGl2aXR5KCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0SWZuZGVmX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6SWZuZGVmX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyRWxzaWZfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbHNpZl9kaXJlY3RpdmVDb250ZXh0ICogY3R4KQorICAgIHsKKyAgICAgICAgUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZUl0ZW0gaXRlbTsKKyAgICAgICAgc3RkOjpzdHJpbmcgbWFjcm9OYW1lOworICAgICAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+IGxpbmVDb2wgPSBQYXJzZVV0aWxzOjpnZXRMaW5lQ29sdW1uKG1fcHAtPmdldFRva2VuU3RyZWFtKCksIGN0eCk7CisgICAgICAgIGlmIChjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCkpCisgICAgICAgICAgICBtYWNyb05hbWUgPSBjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCktPmdldFRleHQoKTsKKyAgICAgICAgZWxzZSBpZiAoY3R4LT5Fc2NhcGVkX2lkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgbWFjcm9OYW1lID0gY3R4LT5Fc2NhcGVkX2lkZW50aWZpZXIoKS0+Z2V0VGV4dCgpOworICAgICAgICAgICAgbWFjcm9OYW1lLmVyYXNlKDAsIDEpOworICAgICAgICAgICAgU3RyaW5nVXRpbHM6OnJ0cmltKG1hY3JvTmFtZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY3R4LT5tYWNyb19pbnN0YW5jZSgpKSB7CisgICAgICAgICAgICBtYWNyb05hbWUgPSBtX3BwLT5ldmFsdWF0ZU1hY3JvSW5zdGFuY2UoY3R4LT5tYWNyb19pbnN0YW5jZSgpLT5nZXRUZXh0KCksIG1fcHAsIGxpbmVDb2wuZmlyc3QsCisgICAgICAgICAgICAgICAgICAgIFByZXByb2Nlc3NGaWxlOjpTcGVjaWFsSW5zdHJ1Y3Rpb25zOjpDaGVja0xvb3AsCisgICAgICAgICAgICAgICAgICAgIFByZXByb2Nlc3NGaWxlOjpTcGVjaWFsSW5zdHJ1Y3Rpb25zOjpDb21wbGFpblVuZGVmaW5lZE1hY3JvKTsKKyAgICAgICAgfQorICAgICAgICBpdGVtLm1fbWFjcm9OYW1lID0gbWFjcm9OYW1lOworICAgICAgICBib29sIHByZXZpb3VzQnJhbmNoQWN0aXZlID0gaXNQcmV2aW91c0JyYW5jaEFjdGl2ZSgpOworICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYXJnczsKKyAgICAgICAgaWYgKCFtX3BwLT5pc01hY3JvQm9keSgpKSB7CisgICAgICAgICAgICBtX3BwLT5nZXRTb3VyY2VGaWxlKCktPm1fbG9vcENoZWNrZXIuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9ucyBpbnN0ciA9IG1fcHAtPm1faW5zdHJ1Y3Rpb25zOworICAgICAgICBpbnN0ci5tX2V2YWx1YXRlID0gUHJlcHJvY2Vzc0ZpbGU6OlNwZWNpYWxJbnN0cnVjdGlvbnM6OkRvbnRFdmFsdWF0ZTsKKyAgICAgICAgc3RkOjpzdHJpbmcgbWFjcm9Cb2R5ID0gbV9wcC0+Z2V0TWFjcm8oaXRlbS5tX21hY3JvTmFtZSwgYXJncywgbV9wcCwgMCwgbV9wcC0+Z2V0U291cmNlRmlsZSgpLT5tX2xvb3BDaGVja2VyLCBpbnN0cik7CisgICAgICAgIGl0ZW0ubV9kZWZpbmVkID0gKG1hY3JvQm9keSAhPSBQcmVwcm9jZXNzRmlsZTo6TWFjcm9Ob3REZWZpbmVkKSAmJiAoIXByZXZpb3VzQnJhbmNoQWN0aXZlKTsKKyAgICAgICAgaXRlbS5tX3R5cGUgPSBQcmVwcm9jZXNzRmlsZTo6SWZFbHNlSXRlbTo6RUxTSUY7CisgICAgICAgIG1fcHAtPmdldFN0YWNrKCkucHVzaF9iYWNrKGl0ZW0pOworICAgICAgICBzZXRDdXJyZW50QnJhbmNoQWN0aXZpdHkoKTsKKyAgICB9CisgICAgLy92b2lkIGV4aXRFbHNpZl9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVsc2lmX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyRWxzZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVsc2VfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCkKKyAgICB7CisgICAgICAgIFByZXByb2Nlc3NGaWxlOjpJZkVsc2VJdGVtIGl0ZW07CisgICAgICAgIGJvb2wgcHJldmlvdXNCcmFuY2hBY3RpdmUgPSBpc1ByZXZpb3VzQnJhbmNoQWN0aXZlKCk7CisgICAgICAgIGl0ZW0ubV9kZWZpbmVkID0gIXByZXZpb3VzQnJhbmNoQWN0aXZlOworICAgICAgICBpdGVtLm1fdHlwZSA9IFByZXByb2Nlc3NGaWxlOjpJZkVsc2VJdGVtOjpFTFNFOworICAgICAgICBtX3BwLT5nZXRTdGFjaygpLnB1c2hfYmFjayhpdGVtKTsKKyAgICAgICAgc2V0Q3VycmVudEJyYW5jaEFjdGl2aXR5KCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0RWxzZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVsc2VfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKworICAgIHZvaWQgZW50ZXJFbmRpZl9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVuZGlmX2RpcmVjdGl2ZUNvbnRleHQgKiBjdHgpCisgICAgeworICAgICAgICBQcmVwcm9jZXNzRmlsZTo6SWZFbHNlU3RhY2smIHN0YWNrID0gbV9wcC0+Z2V0U3RhY2soKTsKKyAgICAgICAgaWYgKHN0YWNrLnNpemUoKSkgeworICAgICAgICAgICAgYm9vbCB1bnJvbGwgPSB0cnVlOworICAgICAgICAgICAgd2hpbGUgKHVucm9sbCkgeworICAgICAgICAgICAgICAgIFByZXByb2Nlc3NGaWxlOjpJZkVsc2VJdGVtJiBpdGVtID0gc3RhY2suYmFjaygpOworICAgICAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5tX3R5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFByZXByb2Nlc3NGaWxlOjpJZkVsc2VJdGVtOjpJRkRFRjoKKyAgICAgICAgICAgICAgICBjYXNlIFByZXByb2Nlc3NGaWxlOjpJZkVsc2VJdGVtOjpJRk5ERUY6CisgICAgICAgICAgICAgICAgICAgIC8vc3RkOjpjb3V0IDw8ICJTVEFDSyBTSVpFOiAiIDw8IG1fcHAtPmdldFN0YWNrICgpLnNpemUgKCkgPDwgc3RkOjplbmRsOworICAgICAgICAgICAgICAgICAgICBtX2luQWN0aXZlQnJhbmNoID0gaXRlbS5tX3ByZXZpb3VzQWN0aXZlU3RhdGU7CisgICAgICAgICAgICAgICAgICAgIHN0YWNrLnBvcF9iYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIHVucm9sbCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFByZXByb2Nlc3NGaWxlOjpJZkVsc2VJdGVtOjpFTFNJRjoKKyAgICAgICAgICAgICAgICBjYXNlIFByZXByb2Nlc3NGaWxlOjpJZkVsc2VJdGVtOjpFTFNFOgorICAgICAgICAgICAgICAgICAgICBzdGFjay5wb3BfYmFjaygpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Q3VycmVudEJyYW5jaEFjdGl2aXR5KCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0RW5kaWZfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmRpZl9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlclJlc2V0YWxsX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6UmVzZXRhbGxfZGlyZWN0aXZlQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgaWYgKG1fcHAtPmdldENvbXBpbGF0aW9uVW5pdCgpLT5pc0luRGVzaWduRWxlbWVudCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBkaXJlY3RpdmUgPSAiYHJlc2V0YWxsIjsKKyAgICAgICAgICAgIGdldFN5bWJvbFRhYmxlKCktPnJlZ2lzdGVyU3ltYm9sKGRpcmVjdGl2ZSk7CisgICAgICAgICAgICBsb2dFcnJvcihFcnJvckRlZmluaXRpb246OlBQX0lMTEVHQUxfRElSRUNUSVZFX0lOX0RFU0lHTl9FTEVNRU5ULCBjdHgsIGRpcmVjdGl2ZSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0UmVzZXRhbGxfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpSZXNldGFsbF9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlckJlZ2luX2tleXdvcmRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6QmVnaW5fa2V5d29yZHNfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCkKKyAgICB7CisgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdEJlZ2luX2tleXdvcmRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6QmVnaW5fa2V5d29yZHNfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pOworCisgICAgdm9pZCBlbnRlckVuZF9rZXl3b3Jkc19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVuZF9rZXl3b3Jkc19kaXJlY3RpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB9CisgICAgLy92b2lkIGV4aXRFbmRfa2V5d29yZHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmRfa2V5d29yZHNfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pOworCisgICAgdm9pZCBlbnRlclByYWdtYV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlByYWdtYV9kaXJlY3RpdmVDb250ZXh0ICogY3R4KTsKKyAgICB2b2lkIGV4aXRQcmFnbWFfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpQcmFnbWFfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pOworCisgICAgdm9pZCBlbnRlckNlbGxkZWZpbmVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpDZWxsZGVmaW5lX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdENlbGxkZWZpbmVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpDZWxsZGVmaW5lX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyRW5kY2VsbGRlZmluZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVuZGNlbGxkZWZpbmVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0RW5kY2VsbGRlZmluZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVuZGNlbGxkZWZpbmVfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKworICAgIHZvaWQgZW50ZXJQcm90ZWN0X2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6UHJvdGVjdF9kaXJlY3RpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB9CisgICAgLy92b2lkIGV4aXRQcm90ZWN0X2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6UHJvdGVjdF9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlckVuZHByb3RlY3RfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmRwcm90ZWN0X2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdEVuZHByb3RlY3RfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmRwcm90ZWN0X2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyUHJvdGVjdGVkX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6UHJvdGVjdGVkX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIG1faW5Qcm90ZWN0ZWRSZWdpb24gPSB0cnVlOworICAgICAgICBpZiAobV9wcC0+Z2V0Q29tcGlsZVNvdXJjZUZpbGUoKS0+Z2V0Q29tbWFuZExpbmVQYXJzZXIoKS0+ZmlsdGVyUHJvdGVjdGVkUmVnaW9ucygpKSB7CisgICAgICAgICAgICBtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgPSB0cnVlOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgICAgIH0KKyAgICB9CisgICAgLy92b2lkIGV4aXRQcm90ZWN0ZWRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpQcm90ZWN0ZWRfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKworICAgIHZvaWQgZW50ZXJFbmRwcm90ZWN0ZWRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmRwcm90ZWN0ZWRfZGlyZWN0aXZlQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgbV9pblByb3RlY3RlZFJlZ2lvbiA9IGZhbHNlOworICAgICAgICBpZiAoIW1fcHAtPmdldENvbXBpbGVTb3VyY2VGaWxlKCktPmdldENvbW1hbmRMaW5lUGFyc2VyKCktPmZpbHRlclByb3RlY3RlZFJlZ2lvbnMoKSkKKyAgICAgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdEVuZHByb3RlY3RlZF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVuZHByb3RlY3RlZF9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlckV4cGFuZF92ZWN0b3JuZXRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RXhwYW5kX3ZlY3Rvcm5ldHNfZGlyZWN0aXZlQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0RXhwYW5kX3ZlY3Rvcm5ldHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFeHBhbmRfdmVjdG9ybmV0c19kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlck5vZXhwYW5kX3ZlY3Rvcm5ldHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpOb2V4cGFuZF92ZWN0b3JuZXRzX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdE5vZXhwYW5kX3ZlY3Rvcm5ldHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpOb2V4cGFuZF92ZWN0b3JuZXRzX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyQXV0b2V4cGFuZF92ZWN0b3JuZXRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6QXV0b2V4cGFuZF92ZWN0b3JuZXRzX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdEF1dG9leHBhbmRfdmVjdG9ybmV0c19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkF1dG9leHBhbmRfdmVjdG9ybmV0c19kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlclVzZWxpYl9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlVzZWxpYl9kaXJlY3RpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB9CisgICAgLy92b2lkIGV4aXRVc2VsaWJfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpVc2VsaWJfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKworICAgIHZvaWQgZW50ZXJEaXNhYmxlX3BvcnRmYXVsdHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpEaXNhYmxlX3BvcnRmYXVsdHNfZGlyZWN0aXZlQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0RGlzYWJsZV9wb3J0ZmF1bHRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGlzYWJsZV9wb3J0ZmF1bHRzX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyRW5hYmxlX3BvcnRmYXVsdHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmFibGVfcG9ydGZhdWx0c19kaXJlY3RpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB9CisgICAgLy92b2lkIGV4aXRFbmFibGVfcG9ydGZhdWx0c19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVuYWJsZV9wb3J0ZmF1bHRzX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyTm9zdXBwcmVzc19mYXVsdHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpOb3N1cHByZXNzX2ZhdWx0c19kaXJlY3RpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB9CisgICAgLy92b2lkIGV4aXROb3N1cHByZXNzX2ZhdWx0c19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6Ok5vc3VwcHJlc3NfZmF1bHRzX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyU3VwcHJlc3NfZmF1bHRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6U3VwcHJlc3NfZmF1bHRzX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdFN1cHByZXNzX2ZhdWx0c19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlN1cHByZXNzX2ZhdWx0c19kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlclNpZ25lZF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlNpZ25lZF9kaXJlY3RpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB9CisgICAgLy92b2lkIGV4aXRTaWduZWRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpTaWduZWRfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKworICAgIHZvaWQgZW50ZXJVbnNpZ25lZF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlVuc2lnbmVkX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdFVuc2lnbmVkX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6VW5zaWduZWRfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKworICAgIHZvaWQgZW50ZXJSZW1vdmVfZ2F0ZW5hbWVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpSZW1vdmVfZ2F0ZW5hbWVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0UmVtb3ZlX2dhdGVuYW1lX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6UmVtb3ZlX2dhdGVuYW1lX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyTm9yZW1vdmVfZ2F0ZW5hbWVzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6Tm9yZW1vdmVfZ2F0ZW5hbWVzX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdE5vcmVtb3ZlX2dhdGVuYW1lc19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6Ok5vcmVtb3ZlX2dhdGVuYW1lc19kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlclJlbW92ZV9uZXRuYW1lX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6UmVtb3ZlX25ldG5hbWVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0UmVtb3ZlX25ldG5hbWVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpSZW1vdmVfbmV0bmFtZV9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlck5vcmVtb3ZlX25ldG5hbWVzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6Tm9yZW1vdmVfbmV0bmFtZXNfZGlyZWN0aXZlQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0Tm9yZW1vdmVfbmV0bmFtZXNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpOb3JlbW92ZV9uZXRuYW1lc19kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlckFjY2VsZXJhdGVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpBY2NlbGVyYXRlX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdEFjY2VsZXJhdGVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpBY2NlbGVyYXRlX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyTm9hY2NlbGVyYXRlX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6Tm9hY2NlbGVyYXRlX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdE5vYWNjZWxlcmF0ZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6Ok5vYWNjZWxlcmF0ZV9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlckRlZmF1bHRfdHJpcmVnX3N0cmVuZ2h0X2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVmYXVsdF90cmlyZWdfc3RyZW5naHRfZGlyZWN0aXZlQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0RGVmYXVsdF90cmlyZWdfc3RyZW5naHRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpEZWZhdWx0X3RyaXJlZ19zdHJlbmdodF9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlckRlZmF1bHRfZGVjYXlfdGltZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkRlZmF1bHRfZGVjYXlfdGltZV9kaXJlY3RpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICAgICAgbV9wcC0+cGF1c2VBcHBlbmQoKTsKKyAgICB9CisKKyAgICB2b2lkIGV4aXREZWZhdWx0X2RlY2F5X3RpbWVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpEZWZhdWx0X2RlY2F5X3RpbWVfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pCisgICAgeworICAgICAgICBtX3BwLT5yZXN1bWVBcHBlbmQoKTsKKyAgICB9CisKKyAgICB2b2lkIGVudGVySW5jbHVkZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkluY2x1ZGVfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCk7CisgICAgdm9pZCBleGl0SW5jbHVkZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkluY2x1ZGVfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCk7CisKKyAgICB2b2lkIGVudGVyVW5jb25uZWN0ZWRfZHJpdmVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpVbmNvbm5lY3RlZF9kcml2ZV9kaXJlY3RpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB9CisgICAgLy92b2lkIGV4aXRVbmNvbm5lY3RlZF9kcml2ZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlVuY29ubmVjdGVkX2RyaXZlX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyTm91bmNvbm5lY3RlZF9kcml2ZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6Ok5vdW5jb25uZWN0ZWRfZHJpdmVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0Tm91bmNvbm5lY3RlZF9kcml2ZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6Ok5vdW5jb25uZWN0ZWRfZHJpdmVfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKworICAgIHZvaWQgZW50ZXJEZWxheV9tb2RlX2Rpc3RyaWJ1dGVkX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVsYXlfbW9kZV9kaXN0cmlidXRlZF9kaXJlY3RpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB9CisgICAgLy92b2lkIGV4aXREZWxheV9tb2RlX2Rpc3RyaWJ1dGVkX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVsYXlfbW9kZV9kaXN0cmlidXRlZF9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlckRlbGF5X21vZGVfcGF0aF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkRlbGF5X21vZGVfcGF0aF9kaXJlY3RpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB9CisKKyAgICB2b2lkIGVudGVyRGVsYXlfbW9kZV91bml0X2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVsYXlfbW9kZV91bml0X2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdERlbGF5X21vZGVfdW5pdF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkRlbGF5X21vZGVfdW5pdF9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorCisgICAgdm9pZCBlbnRlckRlbGF5X21vZGVfemVyb19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkRlbGF5X21vZGVfemVyb19kaXJlY3RpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB9CisgICAgLy92b2lkIGV4aXREZWxheV9tb2RlX3plcm9fZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpEZWxheV9tb2RlX3plcm9fZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKworICAgIHZvaWQgZW50ZXJVbmRlZmluZWFsbF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlVuZGVmaW5lYWxsX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKQorICAgIHsKKyAgICAgICAgc3RkOjpzZXQ8UHJlcHJvY2Vzc0ZpbGUqPiB2aXNpdGVkOworICAgICAgICBpZiAobV9wcC0+bV9kZWJ1Z01hY3JvKSBzdGQ6OmNvdXQgPDwgIlVuZGVmaW5pbmcgYWxsIG1hY3JvcyIgPDwgc3RkOjplbmRsOworICAgICAgICBtX3BwLT51bmRlZmluZUFsbE1hY3Jvcyh2aXNpdGVkKTsKKyAgICB9CisgICAgLy92b2lkIGV4aXRVbmRlZmluZWFsbF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlVuZGVmaW5lYWxsX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyRGVmaW5lX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVmaW5lX2RpcmVjdGl2ZUNvbnRleHQgKiBjdHgpOworICAgIHZvaWQgZXhpdERlZmluZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkRlZmluZV9kaXJlY3RpdmVDb250ZXh0ICpjdHgpOworCisgICAgdm9pZCBlbnRlck11bHRpbGluZV9ub19hcmdzX21hY3JvX2RlZmluaXRpb24oU1YzXzFhUHBQYXJzZXI6Ok11bHRpbGluZV9ub19hcmdzX21hY3JvX2RlZmluaXRpb25Db250ZXh0ICogY3R4KQorICAgIHsKKyAgICAgICAgaWYgKG1faW5BY3RpdmVCcmFuY2gpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1hY3JvTmFtZTsKKyAgICAgICAgICAgIGlmIChjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCkpCisgICAgICAgICAgICAgICAgbWFjcm9OYW1lID0gY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpLT5nZXRUZXh0KCk7CisgICAgICAgICAgICBlbHNlIGlmIChjdHgtPkVzY2FwZWRfaWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICAgICAgbWFjcm9OYW1lID0gY3R4LT5Fc2NhcGVkX2lkZW50aWZpZXIoKS0+Z2V0VGV4dCgpOworICAgICAgICAgICAgICAgIG1hY3JvTmFtZS5lcmFzZSgwLCAxKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdVdGlsczo6cnRyaW0obWFjcm9OYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gbGluZUNvbCA9IFBhcnNlVXRpbHM6OmdldExpbmVDb2x1bW4oY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpID8gY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpIDogY3R4LT5Fc2NhcGVkX2lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgICAgIGlmIChtX3BwLT5tX2RlYnVnTWFjcm8pIHN0ZDo6Y291dCA8PCAiRGVmaW5pbmcgbWFjcm86IiA8PCBtYWNyb05hbWUgPDwgc3RkOjplbmRsOworICAgICAgICAgICAgbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcgPSB0cnVlOworICAgICAgICAgICAgU1YzXzFhUHBQYXJzZXI6OkVzY2FwZWRfbWFjcm9fZGVmaW5pdGlvbl9ib2R5Q29udGV4dCogY0JvZHkgPSBjdHgtPmVzY2FwZWRfbWFjcm9fZGVmaW5pdGlvbl9ib2R5KCk7CisgICAgICAgICAgICAvLyBJbW1lZGlhdGUgZXZhbHVhdGUgc2luY2UgdGhlcmUgYXJlIG5vIGFyZ3MKKyAgICAgICAgICAgIC8vc3RkOjpzdHJpbmcgZXZhbEJvZHkgPSBtX3BwLT5ldmFsdWF0ZU1hY3JvSW5zdGFuY2UoCisgICAgICAgICAgICAvLyAgICAgICAgY0JvZHktPmdldFRleHQoKSwgbV9wcCwgbGluZUNvbC5maXJzdCwKKyAgICAgICAgICAgIC8vICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9uczo6Q2hlY2tMb29wLAorICAgICAgICAgICAgLy8gICAgICAgIFByZXByb2Nlc3NGaWxlOjpTcGVjaWFsSW5zdHJ1Y3Rpb25zOjpBc0lzVW5kZWZpbmVkTWFjcm8pOworICAgICAgICAgICAgLy9zdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYm9keV90b2tlbnM7CisgICAgICAgICAgICAvL2JvZHlfdG9rZW5zLnB1c2hfYmFjayhldmFsQm9keSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFRpbWVJbmZvIGNvbXBVbml0VGltZUluZm87Ci0gICAgICAgICAgICBjb21wVW5pdFRpbWVJbmZvLm1fdHlwZSA9IFRpbWVJbmZvOjpUaW1lc2NhbGU7IAotICAgICAgICAgICAgY29tcFVuaXRUaW1lSW5mby5tX2ZpbGVJZCA9IG1fcHAtPmdldEZpbGVJZCgwKTsKLSAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gbGluZUNvbCA9IFBhcnNlVXRpbHM6OmdldExpbmVDb2x1bW4oY3R4LT5USU1FU0NBTEUoKSk7Ci0gICAgICAgICAgICBjb21wVW5pdFRpbWVJbmZvLm1fbGluZSA9IGxpbmVDb2wuZmlyc3Q7Ci0gICAgICAgICAgICBzdGQ6OnJlZ2V4IGJhc2VfcmVnZXgoIihbMC05XSspKFttbnN1cGZdKylbIF0qL1sgXSooWzAtOV0rKShbbW5zdXBmXSspIik7Ci0gICAgICAgICAgICBzdGQ6OnNtYXRjaCBiYXNlX21hdGNoOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgdmFsdWUgPSBjdHgtPlRJTUVTQ0FMRSgpLT5nZXRUZXh0KCkuY19zdHIoKTsKLSAgICAgICAgICAgIGlmIChzdGQ6OnJlZ2V4X21hdGNoKHZhbHVlLCBiYXNlX21hdGNoLCBiYXNlX3JlZ2V4KSkgCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNzdWJfbWF0Y2ggYmFzZTFfc3ViX21hdGNoID0gYmFzZV9tYXRjaFsxXTsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBiYXNlMSA9IGJhc2UxX3N1Yl9tYXRjaC5zdHIoKTsKLSAgICAgICAgICAgICAgICBjb21wVW5pdFRpbWVJbmZvLm1fdGltZVVuaXRWYWx1ZSA9IGF0b2koYmFzZTEuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgY29tcFVuaXRUaW1lSW5mby5tX3RpbWVVbml0ID0gVGltZUluZm86OnVuaXRGcm9tU3RyaW5nKGJhc2VfbWF0Y2hbMl0uc3RyKCkpOwotICAgICAgICAgICAgICAgIHN0ZDo6c3N1Yl9tYXRjaCBiYXNlMl9zdWJfbWF0Y2ggPSBiYXNlX21hdGNoWzNdOwotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGJhc2UyID0gYmFzZTJfc3ViX21hdGNoLnN0cigpOwotICAgICAgICAgICAgICAgIGNvbXBVbml0VGltZUluZm8ubV90aW1lUHJlY2lzaW9uVmFsdWUgPSBhdG9pKGJhc2UyLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgIGNvbXBVbml0VGltZUluZm8ubV90aW1lUHJlY2lzaW9uID0gVGltZUluZm86OnVuaXRGcm9tU3RyaW5nKGJhc2VfbWF0Y2hbNF0uc3RyKCkpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+cmVjb3JkVGltZUluZm8oY29tcFVuaXRUaW1lSW5mbyk7Ci0gICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRUaW1lc2NhbGVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpUaW1lc2NhbGVfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFRva2VuKj4gdG9rZW5zID0gUGFyc2VVdGlsczo6Z2V0RmxhdFRva2VuTGlzdChjQm9keSk7CisgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYm9keV90b2tlbnM7CisgICAgICAgICAgICBmb3IgKGF1dG8gdG9rZW4gOiB0b2tlbnMpIHsKKyAgICAgICAgICAgICAgICBib2R5X3Rva2Vucy5wdXNoX2JhY2sodG9rZW4tPmdldFRleHQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNoZWNrTXVsdGlwbHlEZWZpbmVkTWFjcm8obWFjcm9OYW1lLCBjdHgpOwogCi0gICAgICAgIHZvaWQgZW50ZXJVbmRlZl9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlVuZGVmX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkgeworICAgICAgICAgICAgbV9wcC0+cmVjb3JkTWFjcm8obWFjcm9OYW1lLCBtX3BwLT5nZXRMaW5lTmIobGluZUNvbC5maXJzdCksIGxpbmVDb2wuc2Vjb25kLCAiIiwgYm9keV90b2tlbnMpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBleGl0TXVsdGlsaW5lX25vX2FyZ3NfbWFjcm9fZGVmaW5pdGlvbihTVjNfMWFQcFBhcnNlcjo6TXVsdGlsaW5lX25vX2FyZ3NfbWFjcm9fZGVmaW5pdGlvbkNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIG1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nID0gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCBlbnRlck11bHRpbGluZV9hcmdzX21hY3JvX2RlZmluaXRpb24oU1YzXzFhUHBQYXJzZXI6Ok11bHRpbGluZV9hcmdzX21hY3JvX2RlZmluaXRpb25Db250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCkgewogICAgICAgICAgICAgc3RkOjpzdHJpbmcgbWFjcm9OYW1lOwotICAgICAgICAgICAgc3RkOjpwYWlyPGludCwgaW50PiBsaW5lQ29sID0gUGFyc2VVdGlsczo6Z2V0TGluZUNvbHVtbiAobV9wcC0+Z2V0VG9rZW5TdHJlYW0gKCksIGN0eCk7CiAgICAgICAgICAgICBpZiAoY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpKQogICAgICAgICAgICAgICAgIG1hY3JvTmFtZSA9IGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKS0+Z2V0VGV4dCgpOwogICAgICAgICAgICAgZWxzZSBpZiAoY3R4LT5Fc2NhcGVkX2lkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgIG1hY3JvTmFtZSA9IGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCktPmdldFRleHQoKTsKICAgICAgICAgICAgICAgICBtYWNyb05hbWUuZXJhc2UoMCwgMSk7CiAgICAgICAgICAgICAgICAgU3RyaW5nVXRpbHM6OnJ0cmltKG1hY3JvTmFtZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGN0eC0+bWFjcm9faW5zdGFuY2UoKSkgewotICAgICAgICAgICAgICAgIG1hY3JvTmFtZSA9IG1fcHAtPmV2YWx1YXRlTWFjcm9JbnN0YW5jZShjdHgtPm1hY3JvX2luc3RhbmNlKCktPmdldFRleHQoKSwgbV9wcCwgbGluZUNvbC5maXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFByZXByb2Nlc3NGaWxlOjpTcGVjaWFsSW5zdHJ1Y3Rpb25zOjpDaGVja0xvb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9uczo6Q29tcGxhaW5VbmRlZmluZWRNYWNybyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGQ6OnNldDxQcmVwcm9jZXNzRmlsZSo+IHZpc2l0ZWQ7Ci0gICAgICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIW1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nKSkgewotICAgICAgICAgICAgICBib29sIGZvdW5kID0gbV9wcC0+ZGVsZXRlTWFjcm8obWFjcm9OYW1lLCB2aXNpdGVkKTsKLSAgICAgICAgICAgICAgaWYgKCFmb3VuZCkgewotICAgICAgICAgICAgICAgICBsb2dFcnJvcihFcnJvckRlZmluaXRpb246OlBQX1VOREVGX1VOS09XTl9NQUNSTywgY3R4LCBtYWNyb05hbWUpOwotICAgICAgICAgICAgICB9Ci0JICAgIH0KLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdFVuZGVmX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6VW5kZWZfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKyAgICAgICAgICAgIGlmIChtX3BwLT5tX2RlYnVnTWFjcm8pIHN0ZDo6Y291dCA8PCAiRGVmaW5pbmcgbWFjcm86IiA8PCBtYWNyb05hbWUgPDwgc3RkOjplbmRsOworICAgICAgICAgICAgbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcgPSB0cnVlOworICAgICAgICAgICAgU1YzXzFhUHBQYXJzZXI6OkVzY2FwZWRfbWFjcm9fZGVmaW5pdGlvbl9ib2R5Q29udGV4dCogY0JvZHkgPSBjdHgtPmVzY2FwZWRfbWFjcm9fZGVmaW5pdGlvbl9ib2R5KCk7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBhcmd1bWVudHMgPSBjdHgtPm1hY3JvX2FyZ3VtZW50cygpLT5nZXRUZXh0KCk7CisgICAgICAgICAgICBzdGQ6OnZlY3RvcjxUb2tlbio+IHRva2VucyA9IFBhcnNlVXRpbHM6OmdldEZsYXRUb2tlbkxpc3QoY0JvZHkpOworICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGJvZHlfdG9rZW5zOworICAgICAgICAgICAgZm9yIChhdXRvIHRva2VuIDogdG9rZW5zKSB7CisgICAgICAgICAgICAgICAgYm9keV90b2tlbnMucHVzaF9iYWNrKHRva2VuLT5nZXRUZXh0KCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RkOjpwYWlyPGludCwgaW50PiBsaW5lQ29sID0gUGFyc2VVdGlsczo6Z2V0TGluZUNvbHVtbihjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCkgPyBjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCkgOiBjdHgtPkVzY2FwZWRfaWRlbnRpZmllcigpKTsKIAotICAgICAgICB2b2lkIGVudGVySWZkZWZfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpJZmRlZl9kaXJlY3RpdmVDb250ZXh0ICogY3R4KSB7Ci0gICAgICAgICAgICBQcmVwcm9jZXNzRmlsZTo6SWZFbHNlSXRlbSBpdGVtOworICAgICAgICAgICAgY2hlY2tNdWx0aXBseURlZmluZWRNYWNybyhtYWNyb05hbWUsIGN0eCk7CisgICAgICAgICAgICBtX3BwLT5yZWNvcmRNYWNybyhtYWNyb05hbWUsIG1fcHAtPmdldExpbmVOYihsaW5lQ29sLmZpcnN0KSwgbGluZUNvbC5zZWNvbmQsIGFyZ3VtZW50cywgYm9keV90b2tlbnMpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBleGl0TXVsdGlsaW5lX2FyZ3NfbWFjcm9fZGVmaW5pdGlvbihTVjNfMWFQcFBhcnNlcjo6TXVsdGlsaW5lX2FyZ3NfbWFjcm9fZGVmaW5pdGlvbkNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIG1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nID0gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCBlbnRlclNpbXBsZV9ub19hcmdzX21hY3JvX2RlZmluaXRpb24oU1YzXzFhUHBQYXJzZXI6OlNpbXBsZV9ub19hcmdzX21hY3JvX2RlZmluaXRpb25Db250ZXh0ICogY3R4KTsKKyAgICB2b2lkIGV4aXRTaW1wbGVfbm9fYXJnc19tYWNyb19kZWZpbml0aW9uKFNWM18xYVBwUGFyc2VyOjpTaW1wbGVfbm9fYXJnc19tYWNyb19kZWZpbml0aW9uQ29udGV4dCAqY3R4KTsKKworICAgIHZvaWQgZW50ZXJTaW1wbGVfYXJnc19tYWNyb19kZWZpbml0aW9uKFNWM18xYVBwUGFyc2VyOjpTaW1wbGVfYXJnc19tYWNyb19kZWZpbml0aW9uQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgaWYgKG1faW5BY3RpdmVCcmFuY2gpIHsKICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1hY3JvTmFtZTsKLSAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gbGluZUNvbCA9IFBhcnNlVXRpbHM6OmdldExpbmVDb2x1bW4gKG1fcHAtPmdldFRva2VuU3RyZWFtICgpLCBjdHgpOwogICAgICAgICAgICAgaWYgKGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICBtYWNyb05hbWUgPSBjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCktPmdldFRleHQoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICBtYWNyb05hbWUgPSBjdHgtPkVzY2FwZWRfaWRlbnRpZmllcigpLT5nZXRUZXh0KCk7CiAgICAgICAgICAgICAgICAgbWFjcm9OYW1lLmVyYXNlKDAsIDEpOwogICAgICAgICAgICAgICAgIFN0cmluZ1V0aWxzOjpydHJpbShtYWNyb05hbWUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjdHgtPm1hY3JvX2luc3RhbmNlKCkpIHsKLSAgICAgICAgICAgICAgICBtYWNyb05hbWUgPSBtX3BwLT5ldmFsdWF0ZU1hY3JvSW5zdGFuY2UoY3R4LT5tYWNyb19pbnN0YW5jZSgpLT5nZXRUZXh0KCksIG1fcHAsIGxpbmVDb2wuZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9uczo6Q2hlY2tMb29wLAotICAgICAgICAgICAgICAgICAgICAgICAgUHJlcHJvY2Vzc0ZpbGU6OlNwZWNpYWxJbnN0cnVjdGlvbnM6OkNvbXBsYWluVW5kZWZpbmVkTWFjcm8pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaXRlbS5tX21hY3JvTmFtZSA9IG1hY3JvTmFtZTsKLSAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBhcmdzOwotICAgICAgICAgICAgaWYgKCFtX3BwLT5pc01hY3JvQm9keSgpKSB7Ci0gICAgICAgICAgICAgICAgbV9wcC0+Z2V0U291cmNlRmlsZSgpLT5tX2xvb3BDaGVja2VyLmNsZWFyKCk7CisgICAgICAgICAgICBpZiAobV9wcC0+bV9kZWJ1Z01hY3JvKSBzdGQ6OmNvdXQgPDwgIkRlZmluaW5nIG1hY3JvOiIgPDwgbWFjcm9OYW1lIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIG1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vc3RkOjpzdHJpbmcgd2hvbGVNYWNybyA9IGN0eC0+Z2V0VGV4dCgpOworICAgICAgICAgICAgU1YzXzFhUHBQYXJzZXI6OlNpbXBsZV9tYWNyb19kZWZpbml0aW9uX2JvZHlDb250ZXh0KiBjQm9keSA9IGN0eC0+c2ltcGxlX21hY3JvX2RlZmluaXRpb25fYm9keSgpOworICAgICAgICAgICAgc3RkOjpzdHJpbmcgYXJndW1lbnRzID0gY3R4LT5tYWNyb19hcmd1bWVudHMoKS0+Z2V0VGV4dCgpOworICAgICAgICAgICAgc3RkOjp2ZWN0b3I8VG9rZW4qPiB0b2tlbnMgPSBQYXJzZVV0aWxzOjpnZXRGbGF0VG9rZW5MaXN0KGNCb2R5KTsKKyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBib2R5X3Rva2VuczsKKyAgICAgICAgICAgIGZvciAoYXV0byB0b2tlbiA6IHRva2VucykgeworICAgICAgICAgICAgICAgIGJvZHlfdG9rZW5zLnB1c2hfYmFjayh0b2tlbi0+Z2V0VGV4dCgpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1hY3JvQm9keSA9IG1fcHAtPmdldE1hY3JvKGl0ZW0ubV9tYWNyb05hbWUsIGFyZ3MsIG1fcHAsIDAsIG1fcHAtPmdldFNvdXJjZUZpbGUoKS0+bV9sb29wQ2hlY2tlciwgbV9wcC0+bV9pbnN0cnVjdGlvbnMpOwotICAgICAgICAgICAgaXRlbS5tX2RlZmluZWQgPSAobWFjcm9Cb2R5ICE9IFByZXByb2Nlc3NGaWxlOjpNYWNyb05vdERlZmluZWQpOwotICAgICAgICAgICAgaXRlbS5tX3R5cGUgPSBQcmVwcm9jZXNzRmlsZTo6SWZFbHNlSXRlbTo6SUZERUY7Ci0gICAgICAgICAgICBpdGVtLm1fcHJldmlvdXNBY3RpdmVTdGF0ZSA9IG1faW5BY3RpdmVCcmFuY2g7IAotICAgICAgICAgICAgbV9wcC0+Z2V0U3RhY2soKS5wdXNoX2JhY2soaXRlbSk7Ci0gICAgICAgICAgICBzZXRDdXJyZW50QnJhbmNoQWN0aXZpdHkoKTsKKyAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gbGluZUNvbCA9IFBhcnNlVXRpbHM6OmdldExpbmVDb2x1bW4oY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpID8gY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpIDogY3R4LT5Fc2NhcGVkX2lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBjaGVja011bHRpcGx5RGVmaW5lZE1hY3JvKG1hY3JvTmFtZSwgY3R4KTsKKyAgICAgICAgICAgIG1fcHAtPnJlY29yZE1hY3JvKG1hY3JvTmFtZSwgbV9wcC0+Z2V0TGluZU5iKGxpbmVDb2wuZmlyc3QpLCBsaW5lQ29sLnNlY29uZCwgYXJndW1lbnRzLCBib2R5X3Rva2Vucyk7CiAgICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRJZmRlZl9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OklmZGVmX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisgICAgfQogCi0gICAgICAgIHZvaWQgZW50ZXJJZm5kZWZfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpJZm5kZWZfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCkgewotICAgICAgICAgICAgUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZUl0ZW0gaXRlbTsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1hY3JvTmFtZTsKLSAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gbGluZUNvbCA9IFBhcnNlVXRpbHM6OmdldExpbmVDb2x1bW4gKG1fcHAtPmdldFRva2VuU3RyZWFtICgpLCBjdHgpOwotICAgICAgICAgICAgaWYgKGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBtYWNyb05hbWUgPSBjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCktPmdldFRleHQoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICBtYWNyb05hbWUgPSBjdHgtPkVzY2FwZWRfaWRlbnRpZmllcigpLT5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbWFjcm9OYW1lLmVyYXNlKDAsIDEpOwotICAgICAgICAgICAgICAgIFN0cmluZ1V0aWxzOjpydHJpbShtYWNyb05hbWUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjdHgtPm1hY3JvX2luc3RhbmNlKCkpIHsKLSAgICAgICAgICAgICAgICBtYWNyb05hbWUgPSBtX3BwLT5ldmFsdWF0ZU1hY3JvSW5zdGFuY2UoY3R4LT5tYWNyb19pbnN0YW5jZSgpLT5nZXRUZXh0KCksIG1fcHAsIGxpbmVDb2wuZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9uczo6Q2hlY2tMb29wLAotICAgICAgICAgICAgICAgICAgICAgICAgUHJlcHJvY2Vzc0ZpbGU6OlNwZWNpYWxJbnN0cnVjdGlvbnM6OkNvbXBsYWluVW5kZWZpbmVkTWFjcm8pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaXRlbS5tX21hY3JvTmFtZSA9IG1hY3JvTmFtZTsKLSAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBhcmdzOwotICAgICAgICAgICAgaWYgKCFtX3BwLT5pc01hY3JvQm9keSgpKSB7Ci0gICAgICAgICAgICAgICAgbV9wcC0+Z2V0U291cmNlRmlsZSgpLT5tX2xvb3BDaGVja2VyLmNsZWFyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZyBtYWNyb0JvZHkgPSBtX3BwLT5nZXRNYWNybyhpdGVtLm1fbWFjcm9OYW1lLCBhcmdzLCBtX3BwLCAwLCBtX3BwLT5nZXRTb3VyY2VGaWxlKCktPm1fbG9vcENoZWNrZXIsIG1fcHAtPm1faW5zdHJ1Y3Rpb25zKTsKLSAgICAgICAgICAgIGl0ZW0ubV9kZWZpbmVkID0gKG1hY3JvQm9keSAhPSBQcmVwcm9jZXNzRmlsZTo6TWFjcm9Ob3REZWZpbmVkKTsKLSAgICAgICAgICAgIGl0ZW0ubV90eXBlID0gUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZUl0ZW06OklGTkRFRjsKLSAgICAgICAgICAgIGl0ZW0ubV9wcmV2aW91c0FjdGl2ZVN0YXRlID0gbV9pbkFjdGl2ZUJyYW5jaDsgCi0gICAgICAgICAgICBtX3BwLT5nZXRTdGFjaygpLnB1c2hfYmFjayhpdGVtKTsKLSAgICAgICAgICAgIHNldEN1cnJlbnRCcmFuY2hBY3Rpdml0eSgpOworICAgIHZvaWQgZXhpdFNpbXBsZV9hcmdzX21hY3JvX2RlZmluaXRpb24oU1YzXzFhUHBQYXJzZXI6OlNpbXBsZV9hcmdzX21hY3JvX2RlZmluaXRpb25Db250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZyA9IGZhbHNlOworICAgIH0KKworICAgIC8vdm9pZCBlbnRlckVzY2FwZWRfbWFjcm9fZGVmaW5pdGlvbl9ib2R5KFNWM18xYVBwUGFyc2VyOjpFc2NhcGVkX21hY3JvX2RlZmluaXRpb25fYm9keUNvbnRleHQgKiAvKmN0eCovKSB7IH0KKyAgICAvL3ZvaWQgZXhpdEVzY2FwZWRfbWFjcm9fZGVmaW5pdGlvbl9ib2R5KFNWM18xYVBwUGFyc2VyOjpFc2NhcGVkX21hY3JvX2RlZmluaXRpb25fYm9keUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICAvL3ZvaWQgZW50ZXJTaW1wbGVfbWFjcm9fZGVmaW5pdGlvbl9ib2R5KFNWM18xYVBwUGFyc2VyOjpTaW1wbGVfbWFjcm9fZGVmaW5pdGlvbl9ib2R5Q29udGV4dCAqIC8qY3R4Ki8pIHsgfQorICAgIC8vdm9pZCBleGl0U2ltcGxlX21hY3JvX2RlZmluaXRpb25fYm9keShTVjNfMWFQcFBhcnNlcjo6U2ltcGxlX21hY3JvX2RlZmluaXRpb25fYm9keUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisKKyAgICB2b2lkIGVudGVyTWFjcm9JbnN0YW5jZVdpdGhBcmdzKFNWM18xYVBwUGFyc2VyOjpNYWNyb0luc3RhbmNlV2l0aEFyZ3NDb250ZXh0ICogY3R4KTsKKyAgICB2b2lkIGV4aXRNYWNyb0luc3RhbmNlV2l0aEFyZ3MoU1YzXzFhUHBQYXJzZXI6Ok1hY3JvSW5zdGFuY2VXaXRoQXJnc0NvbnRleHQgKiBjdHgpOworCisgICAgdm9pZCBlbnRlck1hY3JvSW5zdGFuY2VOb0FyZ3MoU1YzXzFhUHBQYXJzZXI6Ok1hY3JvSW5zdGFuY2VOb0FyZ3NDb250ZXh0ICogY3R4KTsKKyAgICAvL3ZvaWQgZXhpdE1hY3JvSW5zdGFuY2VOb0FyZ3MoU1YzXzFhUHBQYXJzZXI6Ok1hY3JvSW5zdGFuY2VOb0FyZ3NDb250ZXh0ICogLypjdHgqLykgeyB9CisKKyAgICB2b2lkIGVudGVyVW50ZXJtaW5hdGVkX3N0cmluZyhTVjNfMWFQcFBhcnNlcjo6VW50ZXJtaW5hdGVkX3N0cmluZ0NvbnRleHQgKmN0eCk7CisgICAgLy92b2lkIGV4aXRVbnRlcm1pbmF0ZWRfc3RyaW5nKFNWM18xYVBwUGFyc2VyOjpVbnRlcm1pbmF0ZWRfc3RyaW5nQ29udGV4dCAqIC8qY3R4Ki8pIHsgfQorCisgICAgdm9pZCBlbnRlclRleHRfYmxvYihTVjNfMWFQcFBhcnNlcjo6VGV4dF9ibG9iQ29udGV4dCAqIGN0eCkKKyAgICB7CisgICAgICAgIGlmIChtX2luQWN0aXZlQnJhbmNoICYmICghKG1fZmlsdGVyUHJvdGVjdGVkUmVnaW9ucyAmJiBtX2luUHJvdGVjdGVkUmVnaW9uKSkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHRfYmxvYiA9IGN0eC0+Z2V0VGV4dCgpOworICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7CiAgICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRJZm5kZWZfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpJZm5kZWZfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKyAgICB9CisgICAgLy92b2lkIGV4aXRUZXh0X2Jsb2IoU1YzXzFhUHBQYXJzZXI6OlRleHRfYmxvYkNvbnRleHQgKiAvKmN0eCovKSAgeyB9CiAKLSAgICAgICAgdm9pZCBlbnRlckVsc2lmX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RWxzaWZfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCkgewotICAgICAgICAgICAgUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZUl0ZW0gaXRlbTsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1hY3JvTmFtZTsKLSAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsIGludD4gbGluZUNvbCA9IFBhcnNlVXRpbHM6OmdldExpbmVDb2x1bW4gKG1fcHAtPmdldFRva2VuU3RyZWFtICgpLCBjdHgpOwotICAgICAgICAgICAgaWYgKGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBtYWNyb05hbWUgPSBjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCktPmdldFRleHQoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICBtYWNyb05hbWUgPSBjdHgtPkVzY2FwZWRfaWRlbnRpZmllcigpLT5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbWFjcm9OYW1lLmVyYXNlKDAsIDEpOwotICAgICAgICAgICAgICAgIFN0cmluZ1V0aWxzOjpydHJpbShtYWNyb05hbWUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjdHgtPm1hY3JvX2luc3RhbmNlKCkpIHsKLSAgICAgICAgICAgICAgICBtYWNyb05hbWUgPSBtX3BwLT5ldmFsdWF0ZU1hY3JvSW5zdGFuY2UoY3R4LT5tYWNyb19pbnN0YW5jZSgpLT5nZXRUZXh0KCksIG1fcHAsIGxpbmVDb2wuZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBQcmVwcm9jZXNzRmlsZTo6U3BlY2lhbEluc3RydWN0aW9uczo6Q2hlY2tMb29wLAotICAgICAgICAgICAgICAgICAgICAgICAgUHJlcHJvY2Vzc0ZpbGU6OlNwZWNpYWxJbnN0cnVjdGlvbnM6OkNvbXBsYWluVW5kZWZpbmVkTWFjcm8pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaXRlbS5tX21hY3JvTmFtZSA9IG1hY3JvTmFtZTsKLSAgICAgICAgICAgIGJvb2wgcHJldmlvdXNCcmFuY2hBY3RpdmUgPSBpc1ByZXZpb3VzQnJhbmNoQWN0aXZlKCk7Ci0gICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYXJnczsKLSAgICAgICAgICAgIGlmICghbV9wcC0+aXNNYWNyb0JvZHkoKSkgewotICAgICAgICAgICAgICAgIG1fcHAtPmdldFNvdXJjZUZpbGUoKS0+bV9sb29wQ2hlY2tlci5jbGVhcigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RkOjpzdHJpbmcgbWFjcm9Cb2R5ID0gbV9wcC0+Z2V0TWFjcm8oaXRlbS5tX21hY3JvTmFtZSwgYXJncywgbV9wcCwgMCwgbV9wcC0+Z2V0U291cmNlRmlsZSgpLT5tX2xvb3BDaGVja2VyLCBtX3BwLT5tX2luc3RydWN0aW9ucyk7Ci0gICAgICAgICAgICBpdGVtLm1fZGVmaW5lZCA9IChtYWNyb0JvZHkgIT0gUHJlcHJvY2Vzc0ZpbGU6Ok1hY3JvTm90RGVmaW5lZCkgJiYgKCFwcmV2aW91c0JyYW5jaEFjdGl2ZSk7Ci0gICAgICAgICAgICBpdGVtLm1fdHlwZSA9IFByZXByb2Nlc3NGaWxlOjpJZkVsc2VJdGVtOjpFTFNJRjsKLSAgICAgICAgICAgIG1fcHAtPmdldFN0YWNrKCkucHVzaF9iYWNrKGl0ZW0pOwotICAgICAgICAgICAgc2V0Q3VycmVudEJyYW5jaEFjdGl2aXR5KCk7CisgICAgdm9pZCBlbnRlckVzY2FwZWRfaWRlbnRpZmllcihTVjNfMWFQcFBhcnNlcjo6RXNjYXBlZF9pZGVudGlmaWVyQ29udGV4dCAqIGN0eCk7CisgICAgLy8gdm9pZCBleGl0RXNjYXBlZF9pZGVudGlmaWVyKFNWM18xYVBwUGFyc2VyOjpFc2NhcGVkX2lkZW50aWZpZXJDb250ZXh0ICogLypjdHgqLykgeyB9CisKKworICAgIHZvaWQgZW50ZXJTdHJpbmcoU1YzXzFhUHBQYXJzZXI6OlN0cmluZ0NvbnRleHQgKmN0eCk7CisgICAgLy92b2lkIGV4aXRTdHJpbmcoU1YzXzFhUHBQYXJzZXI6OlN0cmluZ0NvbnRleHQgKiAvKmN0eCovKSB7IH0KKworICAgIHZvaWQgZW50ZXJNb2R1bGUoU1YzXzFhUHBQYXJzZXI6Ok1vZHVsZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGlmIChtX2luQWN0aXZlQnJhbmNoICYmICghKG1fZmlsdGVyUHJvdGVjdGVkUmVnaW9ucyAmJiBtX2luUHJvdGVjdGVkUmVnaW9uKSkgJiYgKCFtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZykpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHRfYmxvYiA9IGN0eC0+Z2V0VGV4dCgpOworICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7CisgICAgICAgICAgICBtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+c2V0SW5EZXNpZ25FbGVtZW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRFbHNpZl9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVsc2lmX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisgICAgfQorICAgIC8vdm9pZCBleGl0TW9kdWxlKFNWM18xYVBwUGFyc2VyOjpNb2R1bGVDb250ZXh0ICogLypjdHgqLykKIAotICAgICAgICB2b2lkIGVudGVyRWxzZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVsc2VfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCkgewotICAgICAgICAgICAgUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZUl0ZW0gaXRlbTsKLSAgICAgICAgICAgIGJvb2wgcHJldmlvdXNCcmFuY2hBY3RpdmUgPSBpc1ByZXZpb3VzQnJhbmNoQWN0aXZlKCk7Ci0gICAgICAgICAgICBpdGVtLm1fZGVmaW5lZCA9ICFwcmV2aW91c0JyYW5jaEFjdGl2ZTsKLSAgICAgICAgICAgIGl0ZW0ubV90eXBlID0gUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZUl0ZW06OkVMU0U7Ci0gICAgICAgICAgICBtX3BwLT5nZXRTdGFjaygpLnB1c2hfYmFjayhpdGVtKTsKLSAgICAgICAgICAgIHNldEN1cnJlbnRCcmFuY2hBY3Rpdml0eSgpOworICAgIHZvaWQgZW50ZXJFbmRtb2R1bGUoU1YzXzFhUHBQYXJzZXI6OkVuZG1vZHVsZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGlmIChtX2luQWN0aXZlQnJhbmNoICYmICghKG1fZmlsdGVyUHJvdGVjdGVkUmVnaW9ucyAmJiBtX2luUHJvdGVjdGVkUmVnaW9uKSkgJiYgKCFtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZykpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHRfYmxvYiA9IGN0eC0+Z2V0VGV4dCgpOworICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7CisgICAgICAgICAgICBtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+dW5zZXRJbkRlc2lnbkVsZW1lbnQoKTsKICAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdEVsc2VfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbHNlX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisgICAgfQorICAgIC8vdm9pZCBleGl0RW5kbW9kdWxlKFNWM18xYVBwUGFyc2VyOjpFbmRtb2R1bGVDb250ZXh0ICogLypjdHgqLyk7CiAKLSAgICAgICAgdm9pZCBlbnRlckVuZGlmX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RW5kaWZfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCkgewotICAgICAgICAgICAgUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZVN0YWNrJiBzdGFjayA9IG1fcHAtPmdldFN0YWNrKCk7Ci0gICAgICAgICAgICBpZiAoc3RhY2suc2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCB1bnJvbGwgPSB0cnVlOwotICAgICAgICAgICAgICAgIHdoaWxlICh1bnJvbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZUl0ZW0mIGl0ZW0gPSBzdGFjay5iYWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5tX3R5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZUl0ZW06OklGREVGOgotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQcmVwcm9jZXNzRmlsZTo6SWZFbHNlSXRlbTo6SUZOREVGOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc3RkOjpjb3V0IDw8ICJTVEFDSyBTSVpFOiAiIDw8IG1fcHAtPmdldFN0YWNrICgpLnNpemUgKCkgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5BY3RpdmVCcmFuY2ggPSBpdGVtLm1fcHJldmlvdXNBY3RpdmVTdGF0ZTsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sucG9wX2JhY2soKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJvbGwgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHJlcHJvY2Vzc0ZpbGU6OklmRWxzZUl0ZW06OkVMU0lGOgotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQcmVwcm9jZXNzRmlsZTo6SWZFbHNlSXRlbTo6RUxTRToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wb3BfYmFjaygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNldEN1cnJlbnRCcmFuY2hBY3Rpdml0eSgpOworICAgIHZvaWQgZW50ZXJTdl9pbnRlcmZhY2UoU1YzXzFhUHBQYXJzZXI6OlN2X2ludGVyZmFjZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGlmIChtX2luQWN0aXZlQnJhbmNoICYmICghKG1fZmlsdGVyUHJvdGVjdGVkUmVnaW9ucyAmJiBtX2luUHJvdGVjdGVkUmVnaW9uKSkgJiYgKCFtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZykpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHRfYmxvYiA9IGN0eC0+Z2V0VGV4dCgpOworICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7CisgICAgICAgICAgICBtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+c2V0SW5EZXNpZ25FbGVtZW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRFbmRpZl9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVuZGlmX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9Ci0gICAgICAKLSAgICAgICAgdm9pZCBlbnRlclJlc2V0YWxsX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6UmVzZXRhbGxfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBpZiAobV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPmlzSW5EZXNpZ25FbGVtZW50KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZGlyZWN0aXZlID0gImByZXNldGFsbCI7Ci0gICAgICAgICAgICAgICAgZ2V0U3ltYm9sVGFibGUgKCktPnJlZ2lzdGVyU3ltYm9sKGRpcmVjdGl2ZSk7Ci0gICAgICAgICAgICAgICAgbG9nRXJyb3IoRXJyb3JEZWZpbml0aW9uOjpQUF9JTExFR0FMX0RJUkVDVElWRV9JTl9ERVNJR05fRUxFTUVOVCwgY3R4LCBkaXJlY3RpdmUpOyAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgfQorICAgIC8vdm9pZCBleGl0U3ZfaW50ZXJmYWNlKFNWM18xYVBwUGFyc2VyOjpTdl9pbnRlcmZhY2VDb250ZXh0ICogLypjdHgqLyk7CisKKyAgICB2b2lkIGVudGVyRW5kaW50ZXJmYWNlKFNWM18xYVBwUGFyc2VyOjpFbmRpbnRlcmZhY2VDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKKyAgICAgICAgICAgIG1fcHAtPmFwcGVuZCh0ZXh0X2Jsb2IpOworICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnVuc2V0SW5EZXNpZ25FbGVtZW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRSZXNldGFsbF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlJlc2V0YWxsX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisgICAgfQorICAgIC8vdm9pZCBleGl0RW5kaW50ZXJmYWNlKFNWM18xYVBwUGFyc2VyOjpFbmRpbnRlcmZhY2VDb250ZXh0ICogLypjdHgqLyk7CiAKLSAgICAgICAgdm9pZCBlbnRlckJlZ2luX2tleXdvcmRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6QmVnaW5fa2V5d29yZHNfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCkgewotICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgdm9pZCBlbnRlclByb2dyYW0oU1YzXzFhUHBQYXJzZXI6OlByb2dyYW1Db250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKKyAgICAgICAgICAgIG1fcHAtPmFwcGVuZCh0ZXh0X2Jsb2IpOworICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnNldEluRGVzaWduRWxlbWVudCgpOwogICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0QmVnaW5fa2V5d29yZHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpCZWdpbl9rZXl3b3Jkc19kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLyk7CisgICAgfQorICAgIC8vdm9pZCBleGl0UHJvZ3JhbShTVjNfMWFQcFBhcnNlcjo6UHJvZ3JhbUNvbnRleHQgKiAvKmN0eCovKTsKIAotICAgICAgICB2b2lkIGVudGVyRW5kX2tleXdvcmRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RW5kX2tleXdvcmRzX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgdm9pZCBlbnRlckVuZHByb2dyYW0oU1YzXzFhUHBQYXJzZXI6OkVuZHByb2dyYW1Db250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKKyAgICAgICAgICAgIG1fcHAtPmFwcGVuZCh0ZXh0X2Jsb2IpOworICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnVuc2V0SW5EZXNpZ25FbGVtZW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRFbmRfa2V5d29yZHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmRfa2V5d29yZHNfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pOworICAgIH0KKyAgICAvL3ZvaWQgZXhpdEVuZHByb2dyYW0oU1YzXzFhUHBQYXJzZXI6OkVuZHByb2dyYW1Db250ZXh0ICogLypjdHgqLyk7CiAKLSAgICAgICAgdm9pZCBlbnRlclByYWdtYV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlByYWdtYV9kaXJlY3RpdmVDb250ZXh0ICogY3R4KTsKLSAgICAgICAgdm9pZCBleGl0UHJhZ21hX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6UHJhZ21hX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKTsKLSAgICAgICAgICAgICAgIAotICAgICAgICB2b2lkIGVudGVyQ2VsbGRlZmluZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkNlbGxkZWZpbmVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB2b2lkIGVudGVyUHJpbWl0aXZlKFNWM18xYVBwUGFyc2VyOjpQcmltaXRpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKKyAgICAgICAgICAgIG1fcHAtPmFwcGVuZCh0ZXh0X2Jsb2IpOworICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnNldEluRGVzaWduRWxlbWVudCgpOwogICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0Q2VsbGRlZmluZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkNlbGxkZWZpbmVfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKyAgICB9CisgICAgLy92b2lkIGV4aXRQcmltaXRpdmUoU1YzXzFhUHBQYXJzZXI6OlByaW1pdGl2ZUNvbnRleHQgKiAvKmN0eCovKTsKIAotICAgICAgICB2b2lkIGVudGVyRW5kY2VsbGRlZmluZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVuZGNlbGxkZWZpbmVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB2b2lkIGVudGVyRW5kcHJpbWl0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmRwcmltaXRpdmVDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpJiYgKCFtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZykpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHRfYmxvYiA9IGN0eC0+Z2V0VGV4dCgpOworICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7CisgICAgICAgICAgICBtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+dW5zZXRJbkRlc2lnbkVsZW1lbnQoKTsKICAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdEVuZGNlbGxkZWZpbmVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmRjZWxsZGVmaW5lX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9CisgICAgfQorICAgIC8vdm9pZCBleGl0RW5kcHJpbWl0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmRwcmltaXRpdmVDb250ZXh0ICogLypjdHgqLyk7CiAKLSAgICAgICAgdm9pZCBlbnRlclByb3RlY3RfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpQcm90ZWN0X2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgdm9pZCBlbnRlclN2X3BhY2thZ2UoU1YzXzFhUHBQYXJzZXI6OlN2X3BhY2thZ2VDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKKyAgICAgICAgICAgIG1fcHAtPmFwcGVuZCh0ZXh0X2Jsb2IpOworICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnNldEluRGVzaWduRWxlbWVudCgpOwogICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0UHJvdGVjdF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlByb3RlY3RfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKyAgICB9CisgICAgLy92b2lkIGV4aXRTdl9wYWNrYWdlKFNWM18xYVBwUGFyc2VyOjpTdl9wYWNrYWdlQ29udGV4dCAqIC8qY3R4Ki8pOwogCi0gICAgICAgIHZvaWQgZW50ZXJFbmRwcm90ZWN0X2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RW5kcHJvdGVjdF9kaXJlY3RpdmVDb250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOworICAgIHZvaWQgZW50ZXJFbmRwYWNrYWdlKFNWM18xYVBwUGFyc2VyOjpFbmRwYWNrYWdlQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgaWYgKG1faW5BY3RpdmVCcmFuY2ggJiYgKCEobV9maWx0ZXJQcm90ZWN0ZWRSZWdpb25zICYmIG1faW5Qcm90ZWN0ZWRSZWdpb24pKSAmJiAoIW1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dF9ibG9iID0gY3R4LT5nZXRUZXh0KCk7CisgICAgICAgICAgICBtX3BwLT5hcHBlbmQodGV4dF9ibG9iKTsKKyAgICAgICAgICAgIG1fcHAtPmdldENvbXBpbGF0aW9uVW5pdCgpLT51bnNldEluRGVzaWduRWxlbWVudCgpOwogICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0RW5kcHJvdGVjdF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVuZHByb3RlY3RfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKyAgICB9CisgICAgLy92b2lkIGV4aXRFbmRwYWNrYWdlKFNWM18xYVBwUGFyc2VyOjpFbmRwYWNrYWdlQ29udGV4dCAqIC8qY3R4Ki8pOwogCi0gICAgICAgIHZvaWQgZW50ZXJQcm90ZWN0ZWRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpQcm90ZWN0ZWRfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBtX2luUHJvdGVjdGVkUmVnaW9uID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChtX3BwLT5nZXRDb21waWxlU291cmNlRmlsZSgpLT5nZXRDb21tYW5kTGluZVBhcnNlcigpLT5maWx0ZXJQcm90ZWN0ZWRSZWdpb25zKCkpIHsKLSAgICAgICAgICAgICAgICBtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKLSAgICAgICAgICAgIH0KKyAgICB2b2lkIGVudGVyQ2hlY2tlcihTVjNfMWFQcFBhcnNlcjo6Q2hlY2tlckNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGlmIChtX2luQWN0aXZlQnJhbmNoICYmICghKG1fZmlsdGVyUHJvdGVjdGVkUmVnaW9ucyAmJiBtX2luUHJvdGVjdGVkUmVnaW9uKSkgJiYgKCFtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZykpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHRfYmxvYiA9IGN0eC0+Z2V0VGV4dCgpOworICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7CisgICAgICAgICAgICBtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+c2V0SW5EZXNpZ25FbGVtZW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRQcm90ZWN0ZWRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpQcm90ZWN0ZWRfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKyAgICB9CisgICAgLy92b2lkIGV4aXRDaGVja2VyKFNWM18xYVBwUGFyc2VyOjpDaGVja2VyQ29udGV4dCAqIC8qY3R4Ki8pOwogCi0gICAgICAgIHZvaWQgZW50ZXJFbmRwcm90ZWN0ZWRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmRwcm90ZWN0ZWRfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBtX2luUHJvdGVjdGVkUmVnaW9uID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIW1fcHAtPmdldENvbXBpbGVTb3VyY2VGaWxlKCktPmdldENvbW1hbmRMaW5lUGFyc2VyKCktPmZpbHRlclByb3RlY3RlZFJlZ2lvbnMoKSkKLSAgICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgdm9pZCBlbnRlckVuZGNoZWNrZXIoU1YzXzFhUHBQYXJzZXI6OkVuZGNoZWNrZXJDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKKyAgICAgICAgICAgIG1fcHAtPmFwcGVuZCh0ZXh0X2Jsb2IpOworICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnVuc2V0SW5EZXNpZ25FbGVtZW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRFbmRwcm90ZWN0ZWRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbmRwcm90ZWN0ZWRfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKyAgICB9CisgICAgLy92b2lkIGV4aXRFbmRjaGVja2VyKFNWM18xYVBwUGFyc2VyOjpFbmRjaGVja2VyQ29udGV4dCAqIC8qY3R4Ki8pOwogCi0gICAgICAgIHZvaWQgZW50ZXJFeHBhbmRfdmVjdG9ybmV0c19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkV4cGFuZF92ZWN0b3JuZXRzX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7CisgICAgdm9pZCBlbnRlckNvbmZpZyhTVjNfMWFQcFBhcnNlcjo6Q29uZmlnQ29udGV4dCAqY3R4KQorICAgIHsKKyAgICAgICAgaWYgKG1faW5BY3RpdmVCcmFuY2ggJiYgKCEobV9maWx0ZXJQcm90ZWN0ZWRSZWdpb25zICYmIG1faW5Qcm90ZWN0ZWRSZWdpb24pKSAmJiAoIW1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dF9ibG9iID0gY3R4LT5nZXRUZXh0KCk7CisgICAgICAgICAgICBtX3BwLT5hcHBlbmQodGV4dF9ibG9iKTsKKyAgICAgICAgICAgIG1fcHAtPmdldENvbXBpbGF0aW9uVW5pdCgpLT5zZXRJbkRlc2lnbkVsZW1lbnQoKTsKICAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdEV4cGFuZF92ZWN0b3JuZXRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RXhwYW5kX3ZlY3Rvcm5ldHNfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KKyAgICB9CisgICAgLy92b2lkIGV4aXRDb25maWcoU1YzXzFhUHBQYXJzZXI6OkNvbmZpZ0NvbnRleHQgKiAvKmN0eCovKTsKIAotICAgICAgICB2b2lkIGVudGVyTm9leHBhbmRfdmVjdG9ybmV0c19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6Ok5vZXhwYW5kX3ZlY3Rvcm5ldHNfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKKyAgICB2b2lkIGVudGVyRW5kY29uZmlnKFNWM18xYVBwUGFyc2VyOjpFbmRjb25maWdDb250ZXh0ICpjdHgpCisgICAgeworICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKKyAgICAgICAgICAgIG1fcHAtPmFwcGVuZCh0ZXh0X2Jsb2IpOworICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnVuc2V0SW5EZXNpZ25FbGVtZW50KCk7CiAgICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXROb2V4cGFuZF92ZWN0b3JuZXRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6Tm9leHBhbmRfdmVjdG9ybmV0c19kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQorICAgIH0KKyAgICAvL3ZvaWQgZXhpdEVuZGNvbmZpZyhTVjNfMWFQcFBhcnNlcjo6RW5kY29uZmlnQ29udGV4dCAqIC8qY3R4Ki8pOwogCi0gICAgICAgIHZvaWQgZW50ZXJBdXRvZXhwYW5kX3ZlY3Rvcm5ldHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpBdXRvZXhwYW5kX3ZlY3Rvcm5ldHNfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdEF1dG9leHBhbmRfdmVjdG9ybmV0c19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkF1dG9leHBhbmRfdmVjdG9ybmV0c19kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQotCi0gICAgICAgIHZvaWQgZW50ZXJVc2VsaWJfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpVc2VsaWJfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdFVzZWxpYl9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlVzZWxpYl9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQotCi0gICAgICAgIHZvaWQgZW50ZXJEaXNhYmxlX3BvcnRmYXVsdHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpEaXNhYmxlX3BvcnRmYXVsdHNfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdERpc2FibGVfcG9ydGZhdWx0c19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkRpc2FibGVfcG9ydGZhdWx0c19kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQotCi0gICAgICAgIHZvaWQgZW50ZXJFbmFibGVfcG9ydGZhdWx0c19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVuYWJsZV9wb3J0ZmF1bHRzX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRFbmFibGVfcG9ydGZhdWx0c19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkVuYWJsZV9wb3J0ZmF1bHRzX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9Ci0KLSAgICAgICAgdm9pZCBlbnRlck5vc3VwcHJlc3NfZmF1bHRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6Tm9zdXBwcmVzc19mYXVsdHNfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdE5vc3VwcHJlc3NfZmF1bHRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6Tm9zdXBwcmVzc19mYXVsdHNfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KLQotICAgICAgICB2b2lkIGVudGVyU3VwcHJlc3NfZmF1bHRzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6U3VwcHJlc3NfZmF1bHRzX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRTdXBwcmVzc19mYXVsdHNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpTdXBwcmVzc19mYXVsdHNfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KLQotICAgICAgICB2b2lkIGVudGVyU2lnbmVkX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6U2lnbmVkX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRTaWduZWRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpTaWduZWRfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KLQotICAgICAgICB2b2lkIGVudGVyVW5zaWduZWRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpVbnNpZ25lZF9kaXJlY3RpdmVDb250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOwotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0VW5zaWduZWRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpVbnNpZ25lZF9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQotCi0gICAgICAgIHZvaWQgZW50ZXJSZW1vdmVfZ2F0ZW5hbWVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpSZW1vdmVfZ2F0ZW5hbWVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdFJlbW92ZV9nYXRlbmFtZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlJlbW92ZV9nYXRlbmFtZV9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQotCi0gICAgICAgIHZvaWQgZW50ZXJOb3JlbW92ZV9nYXRlbmFtZXNfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpOb3JlbW92ZV9nYXRlbmFtZXNfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdE5vcmVtb3ZlX2dhdGVuYW1lc19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6Ok5vcmVtb3ZlX2dhdGVuYW1lc19kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQotCi0gICAgICAgIHZvaWQgZW50ZXJSZW1vdmVfbmV0bmFtZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlJlbW92ZV9uZXRuYW1lX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRSZW1vdmVfbmV0bmFtZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OlJlbW92ZV9uZXRuYW1lX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9Ci0KLSAgICAgICAgdm9pZCBlbnRlck5vcmVtb3ZlX25ldG5hbWVzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6Tm9yZW1vdmVfbmV0bmFtZXNfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdE5vcmVtb3ZlX25ldG5hbWVzX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6Tm9yZW1vdmVfbmV0bmFtZXNfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KLQotICAgICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkFjY2VsZXJhdGVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdEFjY2VsZXJhdGVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpBY2NlbGVyYXRlX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9Ci0KLSAgICAgICAgdm9pZCBlbnRlck5vYWNjZWxlcmF0ZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6Ok5vYWNjZWxlcmF0ZV9kaXJlY3RpdmVDb250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOwotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0Tm9hY2NlbGVyYXRlX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6Tm9hY2NlbGVyYXRlX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9Ci0KLSAgICAgICAgdm9pZCBlbnRlckRlZmF1bHRfdHJpcmVnX3N0cmVuZ2h0X2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVmYXVsdF90cmlyZWdfc3RyZW5naHRfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdERlZmF1bHRfdHJpcmVnX3N0cmVuZ2h0X2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVmYXVsdF90cmlyZWdfc3RyZW5naHRfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KLQotICAgICAgICB2b2lkIGVudGVyRGVmYXVsdF9kZWNheV90aW1lX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVmYXVsdF9kZWNheV90aW1lX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgZm9yd2FyZFRvUGFyc2VyKGN0eCk7Ci0gICAgICAgICAgICAgbV9wcC0+cGF1c2VBcHBlbmQgKCk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBleGl0RGVmYXVsdF9kZWNheV90aW1lX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVmYXVsdF9kZWNheV90aW1lX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyAKLSAgICAgICAgICAgIG1fcHAtPnJlc3VtZUFwcGVuZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlbnRlckluY2x1ZGVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpJbmNsdWRlX2RpcmVjdGl2ZUNvbnRleHQgKiBjdHgpOwotICAgICAgICB2b2lkIGV4aXRJbmNsdWRlX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6SW5jbHVkZV9kaXJlY3RpdmVDb250ZXh0ICogY3R4KTsKLQotICAgICAgICB2b2lkIGVudGVyVW5jb25uZWN0ZWRfZHJpdmVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpVbmNvbm5lY3RlZF9kcml2ZV9kaXJlY3RpdmVDb250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOwotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0VW5jb25uZWN0ZWRfZHJpdmVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpVbmNvbm5lY3RlZF9kcml2ZV9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQotCi0gICAgICAgIHZvaWQgZW50ZXJOb3VuY29ubmVjdGVkX2RyaXZlX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6Tm91bmNvbm5lY3RlZF9kcml2ZV9kaXJlY3RpdmVDb250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOwotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0Tm91bmNvbm5lY3RlZF9kcml2ZV9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6Ok5vdW5jb25uZWN0ZWRfZHJpdmVfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KLQotICAgICAgICB2b2lkIGVudGVyRGVsYXlfbW9kZV9kaXN0cmlidXRlZF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkRlbGF5X21vZGVfZGlzdHJpYnV0ZWRfZGlyZWN0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBmb3J3YXJkVG9QYXJzZXIoY3R4KTsKLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdERlbGF5X21vZGVfZGlzdHJpYnV0ZWRfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpEZWxheV9tb2RlX2Rpc3RyaWJ1dGVkX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9Ci0KLSAgICAgICAgdm9pZCBlbnRlckRlbGF5X21vZGVfcGF0aF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkRlbGF5X21vZGVfcGF0aF9kaXJlY3RpdmVDb250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlbnRlckRlbGF5X21vZGVfdW5pdF9kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkRlbGF5X21vZGVfdW5pdF9kaXJlY3RpdmVDb250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOwotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0RGVsYXlfbW9kZV91bml0X2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVsYXlfbW9kZV91bml0X2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9Ci0KLSAgICAgICAgdm9pZCBlbnRlckRlbGF5X21vZGVfemVyb19kaXJlY3RpdmUoU1YzXzFhUHBQYXJzZXI6OkRlbGF5X21vZGVfemVyb19kaXJlY3RpdmVDb250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIGZvcndhcmRUb1BhcnNlcihjdHgpOwotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0RGVsYXlfbW9kZV96ZXJvX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RGVsYXlfbW9kZV96ZXJvX2RpcmVjdGl2ZUNvbnRleHQgKiAvKmN0eCovKSAgeyB9Ci0KLSAgICAgICAgdm9pZCBlbnRlclVuZGVmaW5lYWxsX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6VW5kZWZpbmVhbGxfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pIHsKLSAgICAgICAgICAgIHN0ZDo6c2V0PFByZXByb2Nlc3NGaWxlKj4gdmlzaXRlZDsKLSAgICAgICAgICAgIG1fcHAtPnVuZGVmaW5lQWxsTWFjcm9zKHZpc2l0ZWQpOwotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0VW5kZWZpbmVhbGxfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpVbmRlZmluZWFsbF9kaXJlY3RpdmVDb250ZXh0ICogLypjdHgqLykgIHsgfQotCi0gICAgICAgIHZvaWQgZW50ZXJEZWZpbmVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpEZWZpbmVfZGlyZWN0aXZlQ29udGV4dCAqIGN0eCk7IAotICAgICAgICB2b2lkIGV4aXREZWZpbmVfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpEZWZpbmVfZGlyZWN0aXZlQ29udGV4dCAqY3R4KTsKLQotICAgICAgICB2b2lkIGVudGVyTXVsdGlsaW5lX25vX2FyZ3NfbWFjcm9fZGVmaW5pdGlvbihTVjNfMWFQcFBhcnNlcjo6TXVsdGlsaW5lX25vX2FyZ3NfbWFjcm9fZGVmaW5pdGlvbkNvbnRleHQgKiBjdHgpIHsKLSAgICAgICAgICAgIGlmIChtX2luQWN0aXZlQnJhbmNoKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbWFjcm9OYW1lOwotICAgICAgICAgICAgICAgIGlmIChjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIG1hY3JvTmFtZSA9IGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKS0+Z2V0VGV4dCgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbWFjcm9OYW1lID0gY3R4LT5Fc2NhcGVkX2lkZW50aWZpZXIoKS0+Z2V0VGV4dCgpOwotICAgICAgICAgICAgICAgICAgICBtYWNyb05hbWUuZXJhc2UoMCwxKTsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nVXRpbHM6OnJ0cmltKG1hY3JvTmFtZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBTVjNfMWFQcFBhcnNlcjo6RXNjYXBlZF9tYWNyb19kZWZpbml0aW9uX2JvZHlDb250ZXh0KiBjQm9keSA9IGN0eC0+ZXNjYXBlZF9tYWNyb19kZWZpbml0aW9uX2JvZHkoKTsKLSAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxUb2tlbio+IHRva2VucyA9IFBhcnNlVXRpbHM6OmdldEZsYXRUb2tlbkxpc3QoY0JvZHkpOwotICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBib2R5X3Rva2VuczsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8gdG9rZW4gOiB0b2tlbnMpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9keV90b2tlbnMucHVzaF9iYWNrKHRva2VuLT5nZXRUZXh0KCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+IGxpbmVDb2wgPSBQYXJzZVV0aWxzOjpnZXRMaW5lQ29sdW1uKGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSA/IGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSA6IGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgICAgIGNoZWNrTXVsdGlwbHlEZWZpbmVkTWFjcm8obWFjcm9OYW1lLCBjdHgpOwotIAotICAgICAgICAgICAgICAgIG1fcHAtPnJlY29yZE1hY3JvKG1hY3JvTmFtZSwgbV9wcC0+Z2V0TGluZU5iKGxpbmVDb2wuZmlyc3QpLCBsaW5lQ29sLnNlY29uZCwgIiIsIGJvZHlfdG9rZW5zKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZXhpdE11bHRpbGluZV9ub19hcmdzX21hY3JvX2RlZmluaXRpb24oU1YzXzFhUHBQYXJzZXI6Ok11bHRpbGluZV9ub19hcmdzX21hY3JvX2RlZmluaXRpb25Db250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIG1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGVudGVyTXVsdGlsaW5lX2FyZ3NfbWFjcm9fZGVmaW5pdGlvbihTVjNfMWFQcFBhcnNlcjo6TXVsdGlsaW5lX2FyZ3NfbWFjcm9fZGVmaW5pdGlvbkNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgaWYgKG1faW5BY3RpdmVCcmFuY2gpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBtYWNyb05hbWU7Ci0gICAgICAgICAgICAgICAgaWYgKGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgbWFjcm9OYW1lID0gY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpLT5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY3R4LT5Fc2NhcGVkX2lkZW50aWZpZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBtYWNyb05hbWUgPSBjdHgtPkVzY2FwZWRfaWRlbnRpZmllcigpLT5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1hY3JvTmFtZS5lcmFzZSgwLDEpOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmdVdGlsczo6cnRyaW0obWFjcm9OYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcgPSB0cnVlOwotICAgICAgICAgICAgICAgIFNWM18xYVBwUGFyc2VyOjpFc2NhcGVkX21hY3JvX2RlZmluaXRpb25fYm9keUNvbnRleHQqIGNCb2R5ID0gY3R4LT5lc2NhcGVkX21hY3JvX2RlZmluaXRpb25fYm9keSgpOwotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGFyZ3VtZW50cyA9IGN0eC0+bWFjcm9fYXJndW1lbnRzKCktPmdldFRleHQoKTsKLSAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxUb2tlbio+IHRva2VucyA9IFBhcnNlVXRpbHM6OmdldEZsYXRUb2tlbkxpc3QoY0JvZHkpOwotICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBib2R5X3Rva2VuczsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8gdG9rZW4gOiB0b2tlbnMpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9keV90b2tlbnMucHVzaF9iYWNrKHRva2VuLT5nZXRUZXh0KCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+IGxpbmVDb2wgPSBQYXJzZVV0aWxzOjpnZXRMaW5lQ29sdW1uKGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSA/IGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSA6IGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCkpOwotICAKLSAgICAgICAgICAgICAgICBjaGVja011bHRpcGx5RGVmaW5lZE1hY3JvKG1hY3JvTmFtZSwgY3R4KTsKLSAgICAgICAgICAgICAgICBtX3BwLT5yZWNvcmRNYWNybyhtYWNyb05hbWUsIG1fcHAtPmdldExpbmVOYihsaW5lQ29sLmZpcnN0KSwgbGluZUNvbC5zZWNvbmQsIGFyZ3VtZW50cywgYm9keV90b2tlbnMpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBleGl0TXVsdGlsaW5lX2FyZ3NfbWFjcm9fZGVmaW5pdGlvbihTVjNfMWFQcFBhcnNlcjo6TXVsdGlsaW5lX2FyZ3NfbWFjcm9fZGVmaW5pdGlvbkNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZW50ZXJTaW1wbGVfbm9fYXJnc19tYWNyb19kZWZpbml0aW9uKFNWM18xYVBwUGFyc2VyOjpTaW1wbGVfbm9fYXJnc19tYWNyb19kZWZpbml0aW9uQ29udGV4dCAqIGN0eCk7Ci0gICAgICAgIHZvaWQgZXhpdFNpbXBsZV9ub19hcmdzX21hY3JvX2RlZmluaXRpb24oU1YzXzFhUHBQYXJzZXI6OlNpbXBsZV9ub19hcmdzX21hY3JvX2RlZmluaXRpb25Db250ZXh0ICpjdHgpOwotCi0gICAgICAgIHZvaWQgZW50ZXJTaW1wbGVfYXJnc19tYWNyb19kZWZpbml0aW9uKFNWM18xYVBwUGFyc2VyOjpTaW1wbGVfYXJnc19tYWNyb19kZWZpbml0aW9uQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1hY3JvTmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoY3R4LT5TaW1wbGVfaWRlbnRpZmllcigpKQotICAgICAgICAgICAgICAgICAgICBtYWNyb05hbWUgPSBjdHgtPlNpbXBsZV9pZGVudGlmaWVyKCktPmdldFRleHQoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjdHgtPkVzY2FwZWRfaWRlbnRpZmllcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hY3JvTmFtZSA9IGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCktPmdldFRleHQoKTsKLSAgICAgICAgICAgICAgICAgICAgbWFjcm9OYW1lLmVyYXNlKDAsMSk7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZ1V0aWxzOjpydHJpbShtYWNyb05hbWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgLy9zdGQ6OnN0cmluZyB3aG9sZU1hY3JvID0gY3R4LT5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgU1YzXzFhUHBQYXJzZXI6OlNpbXBsZV9tYWNyb19kZWZpbml0aW9uX2JvZHlDb250ZXh0KiBjQm9keSA9IGN0eC0+c2ltcGxlX21hY3JvX2RlZmluaXRpb25fYm9keSgpOwotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGFyZ3VtZW50cyA9IGN0eC0+bWFjcm9fYXJndW1lbnRzKCktPmdldFRleHQoKTsKLSAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxUb2tlbio+IHRva2VucyA9IFBhcnNlVXRpbHM6OmdldEZsYXRUb2tlbkxpc3QoY0JvZHkpOwotICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBib2R5X3Rva2VuczsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8gdG9rZW4gOiB0b2tlbnMpIHsKLSAgICAgICAgICAgICAgICAgICAgYm9keV90b2tlbnMucHVzaF9iYWNrKHRva2VuLT5nZXRUZXh0KCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+IGxpbmVDb2wgPSBQYXJzZVV0aWxzOjpnZXRMaW5lQ29sdW1uKGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSA/IGN0eC0+U2ltcGxlX2lkZW50aWZpZXIoKSA6IGN0eC0+RXNjYXBlZF9pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgICAgIGNoZWNrTXVsdGlwbHlEZWZpbmVkTWFjcm8obWFjcm9OYW1lLCBjdHgpOwotICAgICAgICAgICAgICAgIG1fcHAtPnJlY29yZE1hY3JvKG1hY3JvTmFtZSwgbV9wcC0+Z2V0TGluZU5iKGxpbmVDb2wuZmlyc3QpLCBsaW5lQ29sLnNlY29uZCwgYXJndW1lbnRzLCBib2R5X3Rva2Vucyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGV4aXRTaW1wbGVfYXJnc19tYWNyb19kZWZpbml0aW9uKFNWM18xYVBwUGFyc2VyOjpTaW1wbGVfYXJnc19tYWNyb19kZWZpbml0aW9uQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZyA9IGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy92b2lkIGVudGVyRXNjYXBlZF9tYWNyb19kZWZpbml0aW9uX2JvZHkoU1YzXzFhUHBQYXJzZXI6OkVzY2FwZWRfbWFjcm9fZGVmaW5pdGlvbl9ib2R5Q29udGV4dCAqIC8qY3R4Ki8pIHsgfQotICAgICAgICAvL3ZvaWQgZXhpdEVzY2FwZWRfbWFjcm9fZGVmaW5pdGlvbl9ib2R5KFNWM18xYVBwUGFyc2VyOjpFc2NhcGVkX21hY3JvX2RlZmluaXRpb25fYm9keUNvbnRleHQgKiAvKmN0eCovKSAgeyB9Ci0KLSAgICAgICAgLy92b2lkIGVudGVyU2ltcGxlX21hY3JvX2RlZmluaXRpb25fYm9keShTVjNfMWFQcFBhcnNlcjo6U2ltcGxlX21hY3JvX2RlZmluaXRpb25fYm9keUNvbnRleHQgKiAvKmN0eCovKSB7IH0KLSAgICAgICAgLy92b2lkIGV4aXRTaW1wbGVfbWFjcm9fZGVmaW5pdGlvbl9ib2R5KFNWM18xYVBwUGFyc2VyOjpTaW1wbGVfbWFjcm9fZGVmaW5pdGlvbl9ib2R5Q29udGV4dCAqIC8qY3R4Ki8pICB7IH0KLQotICAgICAgICB2b2lkIGVudGVyTWFjcm9JbnN0YW5jZVdpdGhBcmdzKFNWM18xYVBwUGFyc2VyOjpNYWNyb0luc3RhbmNlV2l0aEFyZ3NDb250ZXh0ICogY3R4KTsKLSAgICAgICAgdm9pZCBleGl0TWFjcm9JbnN0YW5jZVdpdGhBcmdzKFNWM18xYVBwUGFyc2VyOjpNYWNyb0luc3RhbmNlV2l0aEFyZ3NDb250ZXh0ICogIGN0eCk7Ci0KLSAgICAgICAgdm9pZCBlbnRlck1hY3JvSW5zdGFuY2VOb0FyZ3MoU1YzXzFhUHBQYXJzZXI6Ok1hY3JvSW5zdGFuY2VOb0FyZ3NDb250ZXh0ICogY3R4KTsKLSAgICAgICAgLy92b2lkIGV4aXRNYWNyb0luc3RhbmNlTm9BcmdzKFNWM18xYVBwUGFyc2VyOjpNYWNyb0luc3RhbmNlTm9BcmdzQ29udGV4dCAqIC8qY3R4Ki8pIHsgfQotCi0gICAgICAgIHZvaWQgZW50ZXJVbnRlcm1pbmF0ZWRfc3RyaW5nKFNWM18xYVBwUGFyc2VyOjpVbnRlcm1pbmF0ZWRfc3RyaW5nQ29udGV4dCAqY3R4KTsKLSAgICAgICAgLy92b2lkIGV4aXRVbnRlcm1pbmF0ZWRfc3RyaW5nKFNWM18xYVBwUGFyc2VyOjpVbnRlcm1pbmF0ZWRfc3RyaW5nQ29udGV4dCAqIC8qY3R4Ki8pIHsgfQotCi0gICAgICAgIHZvaWQgZW50ZXJUZXh0X2Jsb2IoU1YzXzFhUHBQYXJzZXI6OlRleHRfYmxvYkNvbnRleHQgKiBjdHgpIHsKLSAgICAgICAgICAgIGlmIChtX2luQWN0aXZlQnJhbmNoICYmICghKG1fZmlsdGVyUHJvdGVjdGVkUmVnaW9ucyAmJiBtX2luUHJvdGVjdGVkUmVnaW9uKSkpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKLSAgICAgICAgICAgICAgICBtX3BwLT5hcHBlbmQodGV4dF9ibG9iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdFRleHRfYmxvYihTVjNfMWFQcFBhcnNlcjo6VGV4dF9ibG9iQ29udGV4dCAqIC8qY3R4Ki8pICB7IH0KLQotICAgICAgICB2b2lkIGVudGVyRXNjYXBlZF9pZGVudGlmaWVyKFNWM18xYVBwUGFyc2VyOjpFc2NhcGVkX2lkZW50aWZpZXJDb250ZXh0ICogY3R4KTsKLSAgICAgICAgLy8gdm9pZCBleGl0RXNjYXBlZF9pZGVudGlmaWVyKFNWM18xYVBwUGFyc2VyOjpFc2NhcGVkX2lkZW50aWZpZXJDb250ZXh0ICogLypjdHgqLykgeyB9Ci0gICAgICAgIAotICAgICAgICAKLSAgICAgICAgdm9pZCBlbnRlclN0cmluZyhTVjNfMWFQcFBhcnNlcjo6U3RyaW5nQ29udGV4dCAqY3R4KTsKLSAgICAgICAgLy92b2lkIGV4aXRTdHJpbmcoU1YzXzFhUHBQYXJzZXI6OlN0cmluZ0NvbnRleHQgKiAvKmN0eCovKSB7IH0KLQotICAgICAgICB2b2lkIGVudGVyTW9kdWxlKFNWM18xYVBwUGFyc2VyOjpNb2R1bGVDb250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIGlmIChtX2luQWN0aXZlQnJhbmNoICYmICghKG1fZmlsdGVyUHJvdGVjdGVkUmVnaW9ucyAmJiBtX2luUHJvdGVjdGVkUmVnaW9uKSkgJiYgKCFtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZykpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKLSAgICAgICAgICAgICAgICBtX3BwLT5hcHBlbmQodGV4dF9ibG9iKTsKLSAgICAgICAgICAgICAgICBtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+c2V0SW5EZXNpZ25FbGVtZW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRNb2R1bGUoU1YzXzFhUHBQYXJzZXI6Ok1vZHVsZUNvbnRleHQgKiAvKmN0eCovKQotCi0gICAgICAgIHZvaWQgZW50ZXJFbmRtb2R1bGUoU1YzXzFhUHBQYXJzZXI6OkVuZG1vZHVsZUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgaWYgKG1faW5BY3RpdmVCcmFuY2ggJiYgKCEobV9maWx0ZXJQcm90ZWN0ZWRSZWdpb25zICYmIG1faW5Qcm90ZWN0ZWRSZWdpb24pKSAmJiAoIW1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nKSkgewotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHRfYmxvYiA9IGN0eC0+Z2V0VGV4dCgpOwotICAgICAgICAgICAgICAgIG1fcHAtPmFwcGVuZCh0ZXh0X2Jsb2IpOwotICAgICAgICAgICAgICAgIG1fcHAtPmdldENvbXBpbGF0aW9uVW5pdCgpLT51bnNldEluRGVzaWduRWxlbWVudCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0RW5kbW9kdWxlKFNWM18xYVBwUGFyc2VyOjpFbmRtb2R1bGVDb250ZXh0ICogLypjdHgqLyk7Ci0KLSAgICAgICAgdm9pZCBlbnRlclN2X2ludGVyZmFjZShTVjNfMWFQcFBhcnNlcjo6U3ZfaW50ZXJmYWNlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dF9ibG9iID0gY3R4LT5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7Ci0gICAgICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnNldEluRGVzaWduRWxlbWVudCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0U3ZfaW50ZXJmYWNlKFNWM18xYVBwUGFyc2VyOjpTdl9pbnRlcmZhY2VDb250ZXh0ICogLypjdHgqLyk7Ci0KLSAgICAgICAgdm9pZCBlbnRlckVuZGludGVyZmFjZShTVjNfMWFQcFBhcnNlcjo6RW5kaW50ZXJmYWNlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dF9ibG9iID0gY3R4LT5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7Ci0gICAgICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnVuc2V0SW5EZXNpZ25FbGVtZW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRFbmRpbnRlcmZhY2UoU1YzXzFhUHBQYXJzZXI6OkVuZGludGVyZmFjZUNvbnRleHQgKiAvKmN0eCovKTsKLQotICAgICAgICB2b2lkIGVudGVyUHJvZ3JhbShTVjNfMWFQcFBhcnNlcjo6UHJvZ3JhbUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgaWYgKG1faW5BY3RpdmVCcmFuY2ggJiYgKCEobV9maWx0ZXJQcm90ZWN0ZWRSZWdpb25zICYmIG1faW5Qcm90ZWN0ZWRSZWdpb24pKSAmJiAoIW1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nKSkgewotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHRfYmxvYiA9IGN0eC0+Z2V0VGV4dCgpOwotICAgICAgICAgICAgICAgIG1fcHAtPmFwcGVuZCh0ZXh0X2Jsb2IpOwotICAgICAgICAgICAgICAgIG1fcHAtPmdldENvbXBpbGF0aW9uVW5pdCgpLT5zZXRJbkRlc2lnbkVsZW1lbnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdFByb2dyYW0oU1YzXzFhUHBQYXJzZXI6OlByb2dyYW1Db250ZXh0ICogLypjdHgqLyk7Ci0KLSAgICAgICAgdm9pZCBlbnRlckVuZHByb2dyYW0oU1YzXzFhUHBQYXJzZXI6OkVuZHByb2dyYW1Db250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIGlmIChtX2luQWN0aXZlQnJhbmNoICYmICghKG1fZmlsdGVyUHJvdGVjdGVkUmVnaW9ucyAmJiBtX2luUHJvdGVjdGVkUmVnaW9uKSkgJiYgKCFtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZykpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKLSAgICAgICAgICAgICAgICBtX3BwLT5hcHBlbmQodGV4dF9ibG9iKTsKLSAgICAgICAgICAgICAgICBtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+dW5zZXRJbkRlc2lnbkVsZW1lbnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdEVuZHByb2dyYW0oU1YzXzFhUHBQYXJzZXI6OkVuZHByb2dyYW1Db250ZXh0ICogLypjdHgqLyk7Ci0KLSAgICAgICAgdm9pZCBlbnRlclByaW1pdGl2ZShTVjNfMWFQcFBhcnNlcjo6UHJpbWl0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dF9ibG9iID0gY3R4LT5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7Ci0gICAgICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnNldEluRGVzaWduRWxlbWVudCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0UHJpbWl0aXZlKFNWM18xYVBwUGFyc2VyOjpQcmltaXRpdmVDb250ZXh0ICogLypjdHgqLyk7Ci0KLSAgICAgICAgdm9pZCBlbnRlckVuZHByaW1pdGl2ZShTVjNfMWFQcFBhcnNlcjo6RW5kcHJpbWl0aXZlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpJiYgKCFtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZykpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKLSAgICAgICAgICAgICAgICBtX3BwLT5hcHBlbmQodGV4dF9ibG9iKTsKLSAgICAgICAgICAgICAgICBtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+dW5zZXRJbkRlc2lnbkVsZW1lbnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdEVuZHByaW1pdGl2ZShTVjNfMWFQcFBhcnNlcjo6RW5kcHJpbWl0aXZlQ29udGV4dCAqIC8qY3R4Ki8pOwotCi0gICAgICAgIHZvaWQgZW50ZXJTdl9wYWNrYWdlKFNWM18xYVBwUGFyc2VyOjpTdl9wYWNrYWdlQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dF9ibG9iID0gY3R4LT5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7Ci0gICAgICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnNldEluRGVzaWduRWxlbWVudCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0U3ZfcGFja2FnZShTVjNfMWFQcFBhcnNlcjo6U3ZfcGFja2FnZUNvbnRleHQgKiAvKmN0eCovKTsKLQotICAgICAgICB2b2lkIGVudGVyRW5kcGFja2FnZShTVjNfMWFQcFBhcnNlcjo6RW5kcGFja2FnZUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgaWYgKG1faW5BY3RpdmVCcmFuY2ggJiYgKCEobV9maWx0ZXJQcm90ZWN0ZWRSZWdpb25zICYmIG1faW5Qcm90ZWN0ZWRSZWdpb24pKSAmJiAoIW1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nKSkgewotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHRfYmxvYiA9IGN0eC0+Z2V0VGV4dCgpOwotICAgICAgICAgICAgICAgIG1fcHAtPmFwcGVuZCh0ZXh0X2Jsb2IpOwotICAgICAgICAgICAgICAgIG1fcHAtPmdldENvbXBpbGF0aW9uVW5pdCgpLT51bnNldEluRGVzaWduRWxlbWVudCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0RW5kcGFja2FnZShTVjNfMWFQcFBhcnNlcjo6RW5kcGFja2FnZUNvbnRleHQgKiAvKmN0eCovKTsKLQotICAgICAgICB2b2lkIGVudGVyQ2hlY2tlcihTVjNfMWFQcFBhcnNlcjo6Q2hlY2tlckNvbnRleHQgKmN0eCkgewotICAgICAgICAgICAgaWYgKG1faW5BY3RpdmVCcmFuY2ggJiYgKCEobV9maWx0ZXJQcm90ZWN0ZWRSZWdpb25zICYmIG1faW5Qcm90ZWN0ZWRSZWdpb24pKSAmJiAoIW1faW5NYWNyb0RlZmluaXRpb25QYXJzaW5nKSkgewotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHRfYmxvYiA9IGN0eC0+Z2V0VGV4dCgpOwotICAgICAgICAgICAgICAgIG1fcHAtPmFwcGVuZCh0ZXh0X2Jsb2IpOwotICAgICAgICAgICAgICAgIG1fcHAtPmdldENvbXBpbGF0aW9uVW5pdCgpLT5zZXRJbkRlc2lnbkVsZW1lbnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdENoZWNrZXIoU1YzXzFhUHBQYXJzZXI6OkNoZWNrZXJDb250ZXh0ICogLypjdHgqLyk7Ci0KLSAgICAgICAgdm9pZCBlbnRlckVuZGNoZWNrZXIoU1YzXzFhUHBQYXJzZXI6OkVuZGNoZWNrZXJDb250ZXh0ICpjdHgpIHsKLSAgICAgICAgICAgIGlmIChtX2luQWN0aXZlQnJhbmNoICYmICghKG1fZmlsdGVyUHJvdGVjdGVkUmVnaW9ucyAmJiBtX2luUHJvdGVjdGVkUmVnaW9uKSkgJiYgKCFtX2luTWFjcm9EZWZpbml0aW9uUGFyc2luZykpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZXh0X2Jsb2IgPSBjdHgtPmdldFRleHQoKTsKLSAgICAgICAgICAgICAgICBtX3BwLT5hcHBlbmQodGV4dF9ibG9iKTsKLSAgICAgICAgICAgICAgICBtX3BwLT5nZXRDb21waWxhdGlvblVuaXQoKS0+dW5zZXRJbkRlc2lnbkVsZW1lbnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvL3ZvaWQgZXhpdEVuZGNoZWNrZXIoU1YzXzFhUHBQYXJzZXI6OkVuZGNoZWNrZXJDb250ZXh0ICogLypjdHgqLyk7Ci0KLSAgICAgICAgdm9pZCBlbnRlckNvbmZpZyhTVjNfMWFQcFBhcnNlcjo6Q29uZmlnQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dF9ibG9iID0gY3R4LT5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7Ci0gICAgICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnNldEluRGVzaWduRWxlbWVudCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vdm9pZCBleGl0Q29uZmlnKFNWM18xYVBwUGFyc2VyOjpDb25maWdDb250ZXh0ICogLypjdHgqLyk7Ci0KLSAgICAgICAgdm9pZCBlbnRlckVuZGNvbmZpZyhTVjNfMWFQcFBhcnNlcjo6RW5kY29uZmlnQ29udGV4dCAqY3R4KSB7Ci0gICAgICAgICAgICBpZiAobV9pbkFjdGl2ZUJyYW5jaCAmJiAoIShtX2ZpbHRlclByb3RlY3RlZFJlZ2lvbnMgJiYgbV9pblByb3RlY3RlZFJlZ2lvbikpICYmICghbV9pbk1hY3JvRGVmaW5pdGlvblBhcnNpbmcpKSB7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dF9ibG9iID0gY3R4LT5nZXRUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbV9wcC0+YXBwZW5kKHRleHRfYmxvYik7Ci0gICAgICAgICAgICAgICAgbV9wcC0+Z2V0Q29tcGlsYXRpb25Vbml0KCktPnVuc2V0SW5EZXNpZ25FbGVtZW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRFbmRjb25maWcoU1YzXzFhUHBQYXJzZXI6OkVuZGNvbmZpZ0NvbnRleHQgKiAvKmN0eCovKTsKLQotICAgICAgICB2b2lkIGVudGVyRWxzZWlmX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RWxzZWlmX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkgewotICAgICAgICAgICBsb2dFcnJvcihFcnJvckRlZmluaXRpb246OlBQX0lMTEVHQUxfRElSRUNUSVZFX0VMU0VJRiwgY3R4LCAiIik7Ci0gICAgICAgIH0KLSAgICAgICAgLy92b2lkIGV4aXRFbHNlaWZfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbHNlaWZfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pIHt9Ci0gICAgfTsKKyAgICB2b2lkIGVudGVyRWxzZWlmX2RpcmVjdGl2ZShTVjNfMWFQcFBhcnNlcjo6RWxzZWlmX2RpcmVjdGl2ZUNvbnRleHQgKmN0eCkKKyAgICB7CisgICAgICAgIGxvZ0Vycm9yKEVycm9yRGVmaW5pdGlvbjo6UFBfSUxMRUdBTF9ESVJFQ1RJVkVfRUxTRUlGLCBjdHgsICIiKTsKKyAgICB9CisgICAgLy92b2lkIGV4aXRFbHNlaWZfZGlyZWN0aXZlKFNWM18xYVBwUGFyc2VyOjpFbHNlaWZfZGlyZWN0aXZlQ29udGV4dCAqIC8qY3R4Ki8pIHt9Cit9OwogCiB9OwogCmRpZmYgLS1naXQgYS9zcmMvVXRpbHMvRmlsZVV0aWxzLmNwcCBiL3NyYy9VdGlscy9GaWxlVXRpbHMuY3BwCmluZGV4IGRjNDMxMGYuLjUzMGUwNDQgMTAwNjQ0Ci0tLSBhL3NyYy9VdGlscy9GaWxlVXRpbHMuY3BwCisrKyBiL3NyYy9VdGlscy9GaWxlVXRpbHMuY3BwCkBAIC0zMTMsMyArMzEzLDEyIEBACiAgIH0KICAgcmV0dXJuICJGQUlMRURfVE9fTE9BRF9DT05URU5UIjsKIH0KKworc3RkOjpzdHJpbmcgRmlsZVV0aWxzOjpmaWxlTmFtZShzdGQ6OnN0cmluZyBzdHIpIHsKKyAgY2hhciBjID0gJy8nOworICBhdXRvIGl0MSA9IHN0ZDo6ZmluZF9pZihzdHIucmJlZ2luKCksIHN0ci5yZW5kKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtjXShjaGFyIGNoKSB7IHJldHVybiAoY2ggPT0gYyk7IH0pOworICBpZiAoaXQxICE9IHN0ci5yZW5kKCkpIAorICAgIHN0ci5lcmFzZShzdHIuYmVnaW4oKSwgaXQxLmJhc2UoKSk7CisgIHJldHVybiBzdHI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL1V0aWxzL0ZpbGVVdGlscy5oIGIvc3JjL1V0aWxzL0ZpbGVVdGlscy5oCmluZGV4IGNlNjU3NzYuLmMzNGY2NDMgMTAwNjQ0Ci0tLSBhL3NyYy9VdGlscy9GaWxlVXRpbHMuaAorKysgYi9zcmMvVXRpbHMvRmlsZVV0aWxzLmgKQEAgLTM3LDYgKzM3LDcgQEAKICAgc3RhdGljIGludCBta0Rpcihjb25zdCBjaGFyKiBwYXRoKTsKICAgc3RhdGljIHN0ZDo6c3RyaW5nIGdldEZ1bGxQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGgpOwogICBzdGF0aWMgc3RkOjpzdHJpbmcgZ2V0UGF0aE5hbWUoY29uc3Qgc3RkOjpzdHJpbmcgcGF0aCk7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBmaWxlTmFtZShzdGQ6OnN0cmluZyBzdHIpOwogICBzdGF0aWMgdW5zaWduZWQgbG9uZyBmaWxlU2l6ZShjb25zdCBzdGQ6OnN0cmluZyBuYW1lKTsKICAgc3RhdGljIHN0ZDo6dmVjdG9yPFN5bWJvbElkPiBjb2xsZWN0RmlsZXMoY29uc3Qgc3RkOjpzdHJpbmcgZGlyUGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZXh0ZW5zaW9uLApkaWZmIC0tZ2l0IGEvc3JjL1V0aWxzL1N0cmluZ1V0aWxzLmNwcCBiL3NyYy9VdGlscy9TdHJpbmdVdGlscy5jcHAKaW5kZXggNjlmOWVkZS4uZDBjZmJlNiAxMDA2NDQKLS0tIGEvc3JjL1V0aWxzL1N0cmluZ1V0aWxzLmNwcAorKysgYi9zcmMvVXRpbHMvU3RyaW5nVXRpbHMuY3BwCkBAIC0yNjcsMTMgKzI2NywxMiBAQAogfQogCiBzdGQ6OnN0cmluZyBTdHJpbmdVdGlsczo6bGVhZihzdGQ6OnN0cmluZyBzdHIpIHsKLSAgc3RkOjpzdHJpbmcgcmVzdWx0OwogICBjaGFyIGMgPSAnLic7CiAgIGF1dG8gaXQxID0gc3RkOjpmaW5kX2lmKHN0ci5yYmVnaW4oKSwgc3RyLnJlbmQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NdKGNoYXIgY2gpIHsgcmV0dXJuIChjaCA9PSBjKTsgfSk7Ci0gIGlmIChpdDEgIT0gc3RyLnJlbmQoKSkgc3RyLmVyYXNlKHN0ci5iZWdpbigpLCBpdDEuYmFzZSgpKTsKKyAgaWYgKGl0MSAhPSBzdHIucmVuZCgpKSAKKyAgICBzdHIuZXJhc2Uoc3RyLmJlZ2luKCksIGl0MS5iYXNlKCkpOwogICByZXR1cm4gc3RyOwotICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGQ6OnN0cmluZyYgU3RyaW5nVXRpbHM6OmdldFJvb3RGaWxlTmFtZShzdGQ6OnN0cmluZyYgc3RyKSB7CmRpZmYgLS1naXQgYS9zcmMvbWFpbi5jcHAgYi9zcmMvbWFpbi5jcHAKaW5kZXggMWY4Zjc5NC4uMTg4NTY4MiAxMDA2NDQKLS0tIGEvc3JjL21haW4uY3BwCisrKyBiL3NyYy9tYWluLmNwcApAQCAtMjMsNiArMjMsOSBAQAogCiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJzdXJlbG9nLmgiCiAjaW5jbHVkZSAiRXJyb3JSZXBvcnRpbmcvUmVwb3J0LmgiCkBAIC0zNyw2ICs0MCw3IEBACiAgIFNVUkVMT0c6OkVycm9yQ29udGFpbmVyKiBlcnJvcnMgPSBuZXcgU1VSRUxPRzo6RXJyb3JDb250YWluZXIgKHN5bWJvbFRhYmxlKTsKICAgU1VSRUxPRzo6Q29tbWFuZExpbmVQYXJzZXIqIGNscCA9IG5ldyBTVVJFTE9HOjpDb21tYW5kTGluZVBhcnNlciAoZXJyb3JzLCBzeW1ib2xUYWJsZSwgZGlmZl9jb21wX21vZGUsIGZpbGV1bml0KTsKICAgc3VjY2VzcyA9IGNscC0+cGFyc2VDb21tYW5kTGluZSAoYXJnYywgYXJndik7CisgIGJvb2wgcGFyc2VPbmx5ID0gY2xwLT5wYXJzZU9ubHkoKTsKICAgZXJyb3JzLT5wcmludE1lc3NhZ2VzIChjbHAtPm11dGVTdGRvdXQgKCkpOwogICBpZiAoc3VjY2VzcyAmJiAoIWNscC0+aGVscCgpKSkKICAgICB7CkBAIC03NSw3ICs3OSwxMCBAQAogICBkZWxldGUgZXJyb3JzOwogICBpZiAoKCFub0ZhdGFsRXJyb3JzKSB8fCAoIXN1Y2Nlc3MpKQogICAgIGNvZGVkUmV0dXJuIHw9IDE7Ci0gIHJldHVybiBjb2RlZFJldHVybjsgIAorICBpZiAocGFyc2VPbmx5KQorICAgIHJldHVybiAwOworICBlbHNlIAorICAgIHJldHVybiBjb2RlZFJldHVybjsgIAogfQogCiBpbnQKQEAgLTg4LDE5ICs5NSwyMCBAQAogICBib29sIGRpZmZfY29tcF9tb2RlID0gZmFsc2U7CiAgIGJvb2wgcHl0aG9uX21vZGUgPSB0cnVlOwogICBzdGQ6OnN0cmluZyBkaWZmX3VuaXRfb3B0ID0gIi1kaWZmY29tcHVuaXQiOwotICBzdGQ6OnN0cmluZyBub3B5dGhvbl9vcHQgPSAiLW5vcHl0aG9uIjsKLSAKLSAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdjOyBpKyspCi0gICAgewotICAgICAgaWYgKGRpZmZfdW5pdF9vcHQgPT0gYXJndltpXSkKLSAgICAgICAgewotICAgICAgICAgIGRpZmZfY29tcF9tb2RlID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgaWYgKG5vcHl0aG9uX29wdCA9PSBhcmd2W2ldKQotICAgICAgICB7Ci0gICAgICAgICAgcHl0aG9uX21vZGUgPSBmYWxzZTsKLSAgICAgICAgfSAgIAorICBzdGQ6OnN0cmluZyBub3B5dGhvbl9vcHQgID0gIi1ub3B5dGhvbiI7CisgIHN0ZDo6c3RyaW5nIHBhcnNlb25seV9vcHQgPSAiLXBhcnNlb25seSI7CisgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CisgICAgaWYgKHBhcnNlb25seV9vcHQgPT0gYXJndltpXSkgeworICAgICAgaW50IHJldCA9IGNoZGlyKCIuLiIpOworICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJDb3VsZCBub3QgY2hhbmdlIGRpcmVjdG9yeSB0byAuLi9cbiIgPDwgc3RkOjplbmRsOworICAgICAgfQorICAgIH0gZWxzZSBpZiAoZGlmZl91bml0X29wdCA9PSBhcmd2W2ldKSB7CisgICAgICBkaWZmX2NvbXBfbW9kZSA9IHRydWU7CisgICAgfSBlbHNlIGlmIChub3B5dGhvbl9vcHQgPT0gYXJndltpXSkgeworICAgICAgcHl0aG9uX21vZGUgPSBmYWxzZTsKICAgICB9CisgIH0KICAgCiAgIGlmIChweXRob25fbW9kZSkKICAgICBTVVJFTE9HOjpQeXRob25BUEk6OmluaXQoYXJnYywgYXJndik7CmRpZmYgLS1naXQgYS90ZXN0cy9TaW1wbGVDbGFzczEvU2ltcGxlQ2xhc3MxLmxvZyBiL3Rlc3RzL1NpbXBsZUNsYXNzMS9TaW1wbGVDbGFzczEubG9nCmluZGV4IDE1Y2YxZDEuLjdiYWE0ZjUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL1NpbXBsZUNsYXNzMS9TaW1wbGVDbGFzczEubG9nCisrKyBiL3Rlc3RzL1NpbXBsZUNsYXNzMS9TaW1wbGVDbGFzczEubG9nCkBAIC01NCw3ICs1NCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbmZpZ19kYi5zdmg6MzggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6bV91dm1fd2FpdGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjMyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnNldl9pZF9zdHJ1Y3QiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjMzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnNldl9pZF9zdHJ1Y3QiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fYWdlbnQuc3ZoOjM5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9hZ2VudCIuCiAKQEAgLTEzNiw3ICsxMzYsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NDcwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6ODcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrc19iYXNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9saW5rcy5zdmg6MjIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYXVzZV9lZmZlY3RfbGluayIuCiAKQEAgLTE1MCw5ICsxNTAsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fcGFpci5zdmg6MzcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NsYXNzX3BhaXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjI2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRfbGluZV92ZXJiIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRsaW5lX3Byb2Nlc3NvciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcGFyZXIuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wYXJlciIuCiAKQEAgLTE2NCwxMyArMTY0LDEzIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3RyYXZlcnNhbC5zdmg6MjE0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wb25lbnRfcHJveHkiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZWdpc3RyeS5zdmg6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9yZWdpc3RyeSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZWdpc3RyeS5zdmg6NTAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbmZpZ19kYi5zdmg6NjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYiIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbmZpZ19kYi5zdmg6MzYwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfZGJfb3B0aW9ucyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbXBvbmVudC5zdmg6Mjk3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX29iamVjdF93cmFwcGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbXBvbmVudC5zdmg6Mjk3OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX29iamVjdF93cmFwcGVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcnVudGltZV9waGFzZXMuc3ZoOjI0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlndXJlX3BoYXNlIi4KIApAQCAtMTgyLDcgKzE4Miw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2ZhY3Rvcnkuc3ZoOjMzMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9mYWN0b3J5Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6MjQ0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X3JlcG9ydF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6MjQ2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X3JlcG9ydF9zZXJ2ZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6OTY2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZXJpdmVkX2NhbGxiYWNrcyIuCiAKQEAgLTE5Miw3ICsxOTIsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21tb25fcGhhc2VzLnN2aDoxNTEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VuZF9vZl9lbGFib3JhdGlvbl9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2dsb2JhbHMuc3ZoOjQ5OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW51bV93cmFwcGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2dsb2JhbHMuc3ZoOjUwMSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW51bV93cmFwcGVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX2Vudi5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VudiIuCiAKQEAgLTIzMCw5ICsyMzAsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX3JlZ19tb2RlbC5zdmg6MzQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZGxfcGF0aF9jb25jYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjUzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1faGVhcnRiZWF0LnN2aDo1NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1faGVhcnRiZWF0LnN2aDoyOTAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdF9jYWxsYmFjayIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX2luX29yZGVyX2NvbXBhcmF0b3Iuc3ZoOjIxMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faW5fb3JkZXJfYnVpbHRfaW5fY29tcGFyYXRvciIuCiAKQEAgLTI1OCwxMyArMjU4LDEzIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy9zZXF1ZW5jZXMvdXZtX21lbV9hY2Nlc3Nfc2VxLnN2aDoxOTUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9hY2Nlc3Nfc2VxIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo2NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjY1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fY2ZnIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTYzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX2NmZyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTIwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX3BvbGljeSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjUyMSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9wb2xpY3kiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjI3NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX3JlZ2lvbiIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjI3NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX3JlZ2lvbiIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy9zZXF1ZW5jZXMvdXZtX3JlZ19tZW1fc2hhcmVkX2FjY2Vzc19zZXEuc3ZoOjIwNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX3NoYXJlZF9hY2Nlc3Nfc2VxIi4KIApAQCAtMzIyLDcgKzMyMiw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdC5zdmg6NDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZWdpc3RyeS5zdmg6MTg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3RfcmVnaXN0cnkiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wb29sLnN2aDoyNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9zdHJpbmdfcG9vbCIuCiAKQEAgLTMzMCwxMSArMzMwLDExIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL21hY3Jvcy91dm1fY2FsbGJhY2tfZGVmaW5lcy5zdmg6NTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbiIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MTQxOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MTQxOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2NhbGxiYWNrIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxMzY4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY29udGV4dF9vYmplY3QiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxMzY5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY29udGV4dF9vYmplY3QiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjMyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fZXZlbnRzIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wYWNrZXIuc3ZoOjQwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9wYWNrZXIiLgogCkBAIC0zOTIsOSArMzkyLDkgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvdGxtMS91dm1fcG9ydHMuc3ZoOjk0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9wdXRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3F1ZXVlLnN2aDozNCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcXVldWUiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcXVldWUuc3ZoOjM1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9xdWV1ZSIuCiAKLVtJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zZXF1ZW5jZSIuCitbSU5GTyA6Q1AwMzAyXSBidWlsdGluLnN2OjQ5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc2VxdWVuY2UiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fcmFuZG9tX3N0aW11bHVzLnN2aDo0NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3N0aW11bHVzIi4KIApAQCAtNDYyLDMxICs0NjIsMzEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbGlua3Muc3ZoOjMwMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVsYXRlZF9saW5rIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjEwNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2NhdGNoZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjEwOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2NhdGNoZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfaGFuZGxlci5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9oYW5kbGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2hhbmRsZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6NDc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9iYXNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDozOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9iYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjI4NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9jb250YWluZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjI4NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9jb250YWluZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTA4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9pbnRfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTA5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9pbnRfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyMjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX29iamVjdF9lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyMjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX29iamVjdF9lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjE3NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfc3RyaW5nX2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjE3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfc3RyaW5nX2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfb2JqZWN0LnN2aDo3OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfb2JqZWN0LnN2aDo4MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X29iamVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjM5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6NDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6NDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9zZXJ2ZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MTIyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNldF9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxMzY5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTM3MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2UiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZV9iYXNlIi4KIApAQCAtNTA4LDcgKzUwOCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9zY29yZWJvYXJkLnN2aDozNiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2NvcmVib2FyZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjMxOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VlZF9tYXAiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3RsbTEvdXZtX3Nxcl9jb25uZWN0aW9ucy5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlcV9pdGVtX3B1bGxfZXhwb3J0Ii4KIApAQCAtNjc0LDEzICs2NzQsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcHJpbnRlci5zdmg6MzU4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90cmVlX3ByaW50ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6MTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlZF9jYWxsYmFja3MiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjE3NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWRfY2FsbGJhY2tzIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjYxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjYyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZF9iYXNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkX2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDo2MzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3V0aWxzIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjYzNiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdXRpbHMiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV90cmF2ZXJzYWwuc3ZoOjMwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV92aXNpdG9yIi4KIApkaWZmIC0tZ2l0IGEvdGVzdHMvU2ltcGxlQ29uc3RyYWludC9TaW1wbGVDb25zdHJhaW50LmxvZyBiL3Rlc3RzL1NpbXBsZUNvbnN0cmFpbnQvU2ltcGxlQ29uc3RyYWludC5sb2cKaW5kZXggODQ1MDc1MC4uYWIwODI3ZiAxMDA2NDQKLS0tIGEvdGVzdHMvU2ltcGxlQ29uc3RyYWludC9TaW1wbGVDb25zdHJhaW50LmxvZworKysgYi90ZXN0cy9TaW1wbGVDb25zdHJhaW50L1NpbXBsZUNvbnN0cmFpbnQubG9nCkBAIC02LDE0ICs2LDE1IEBACiAKIFtJTkZPIDpQUDAxMjJdIFByZXByb2Nlc3Npbmcgc291cmNlIGZpbGUgInRvcC5zdiIuCiAKLVByZXByb2Nlc3NpbmcgdG9vayAwLjAxMnMKK1ByZXByb2Nlc3NpbmcgdG9vayAwLjAwOHMKIAotUHJlcHJvY2Vzc2luZyB0b29rIDAuMDEycwotUFAgU1NMIFBhcnNpbmc6IDAuMDAyIC9ob21lL2FsYWluL1N1cmVsb2cvYnVpbGQvZGlzdC9SZWxlYXNlLy9zdi9idWlsdGluLnN2Ci1QUCBTU0wgUGFyc2luZzogMC4wMDIgdG9wLnN2CitQcmVwcm9jZXNzaW5nIHRvb2sgMC4wMDhzCitQUCBTU0wgUGFyc2luZzogMC4wMDAgL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKK1BQIFNTTCBQYXJzaW5nOiAwLjAwMCB0b3Auc3YKIAogW0lORk8gOlBBMDIwMV0gUGFyc2luZyBzb3VyY2UgZmlsZSAiYnVpbHRpbi5zdiIuCiAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKIFtJTkZPIDpQQTAyMDFdIFBhcnNpbmcgc291cmNlIGZpbGUgInRvcC5zdiIuCiAKIExJQjogIHdvcmsKQEAgLTc0MSw5ICs3NDIsMTIgQEAKIG48PiB1PDcyMD4gdDxEZXNjcmlwdGlvbj4gcDw3MjE+IGM8NzE5PiBsPDQ+CiBuPD4gdTw3MjE+IHQ8U291cmNlX3RleHQ+IHA8NzIyPiBjPDE3PiBsPDI+CiBuPD4gdTw3MjI+IHQ8VG9wX2xldmVsX3J1bGU+IGw8Mj4KLVBhcnNpbmcgdG9vayAxLjA2MnMKLVNTTCBQYXJzaW5nOiAwLjAzOCAuLi8uLi9idWlsZC90ZXN0cy9TaW1wbGVDb25zdHJhaW50L3NscHBfYWxsL3dvcmsvL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKLVNTTCBQYXJzaW5nOiAxLjAxOCAuLi8uLi9idWlsZC90ZXN0cy9TaW1wbGVDb25zdHJhaW50L3NscHBfYWxsL3dvcmsvdG9wLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitQYXJzaW5nIHRvb2sgMC45NTJzCitTTEwgUGFyc2luZzogMC4wMzIgLi4vLi4vYnVpbGQvdGVzdHMvU2ltcGxlQ29uc3RyYWludC9zbHBwX2FsbC93b3JrLy9ob21lL2FsYWluL1N1cmVsb2cvYnVpbGQvZGlzdC9SZWxlYXNlLy9zdi9idWlsdGluLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitTTEwgUGFyc2luZzogMC45MTQgLi4vLi4vYnVpbGQvdGVzdHMvU2ltcGxlQ29uc3RyYWludC9zbHBwX2FsbC93b3JrL3RvcC5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAogCiBbV0FSTkk6UEEwMjA1XSB0b3Auc3Y6NCBObyB0aW1lc2NhbGUgc2V0IGZvciAiY29uc3RhaW50X21vZGVfZXgiLgogCkBAIC03NzksMTUgKzc4MywxNyBAQAogUFJPRklMRQogPT09PT09PT09PT09PT0KIFNjYW4gbGlicmFyaWVzIHRvb2sgMC4wMDBzCi1QcmVwcm9jZXNzaW5nIHRvb2sgMC4wMTJzCi1QUCBTU0wgUGFyc2luZzogMC4wMDIgL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKLVBQIFNTTCBQYXJzaW5nOiAwLjAwMiB0b3Auc3YKLVBhcnNpbmcgdG9vayAxLjA2MnMKLVNTTCBQYXJzaW5nOiAwLjAzOCAuLi8uLi9idWlsZC90ZXN0cy9TaW1wbGVDb25zdHJhaW50L3NscHBfYWxsL3dvcmsvL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKLVNTTCBQYXJzaW5nOiAxLjAxOCAuLi8uLi9idWlsZC90ZXN0cy9TaW1wbGVDb25zdHJhaW50L3NscHBfYWxsL3dvcmsvdG9wLnN2CitQcmVwcm9jZXNzaW5nIHRvb2sgMC4wMDhzCitQUCBTU0wgUGFyc2luZzogMC4wMDAgL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKK1BQIFNTTCBQYXJzaW5nOiAwLjAwMCB0b3Auc3YKK1BhcnNpbmcgdG9vayAwLjk1MnMKK1NMTCBQYXJzaW5nOiAwLjAzMiAuLi8uLi9idWlsZC90ZXN0cy9TaW1wbGVDb25zdHJhaW50L3NscHBfYWxsL3dvcmsvL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjkxNCAuLi8uLi9idWlsZC90ZXN0cy9TaW1wbGVDb25zdHJhaW50L3NscHBfYWxsL3dvcmsvdG9wLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCiBDb21waWxhdGlvbiB0b29rIDAuMDAwcwogRWxhYm9yYXRpb24gdG9vayAwLjAwMHMKLVRvdGFsIHRpbWUgMS4wNzZzCitUb3RhbCB0aW1lIDAuOTYwcwogPT09PT09PT09PT09PT0KIAogWyAgRkFUQUxdIDogMApkaWZmIC0tZ2l0IGEvdGVzdHMvU2ltcGxlSW50ZXJmYWNlL1NpbXBsZUludGVyZmFjZS5sb2cgYi90ZXN0cy9TaW1wbGVJbnRlcmZhY2UvU2ltcGxlSW50ZXJmYWNlLmxvZwppbmRleCBiM2FmMGMyLi5mNzI0N2Y0IDEwMDY0NAotLS0gYS90ZXN0cy9TaW1wbGVJbnRlcmZhY2UvU2ltcGxlSW50ZXJmYWNlLmxvZworKysgYi90ZXN0cy9TaW1wbGVJbnRlcmZhY2UvU2ltcGxlSW50ZXJmYWNlLmxvZwpAQCAtMTExNCw3ICsxMTE0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjptX3V2bV93YWl0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2FnZW50Ii4KIApAQCAtMTE5Niw3ICsxMTk2LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ3MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6ODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrc19iYXNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbGlua3Muc3ZoOjIyMSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2F1c2VfZWZmZWN0X2xpbmsiLgogCkBAIC0xMjEwLDkgKzEyMTAsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fcGFpci5zdmg6MzcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NsYXNzX3BhaXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjI2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRfbGluZV92ZXJiIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRsaW5lX3Byb2Nlc3NvciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcGFyZXIuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wYXJlciIuCiAKQEAgLTEyMjIsMTMgKzEyMjIsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDoyMTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9wcm94eSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo1MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozNjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYl9vcHRpb25zIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWd1cmVfcGhhc2UiLgogCkBAIC0xMjQwLDcgKzEyNDAsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9mYWN0b3J5LnN2aDozMzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfZmFjdG9yeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjI0NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjI0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjk2NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVyaXZlZF9jYWxsYmFja3MiLgogCkBAIC0xMjUwLDcgKzEyNTAsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21tb25fcGhhc2VzLnN2aDoxNTEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VuZF9vZl9lbGFib3JhdGlvbl9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2dsb2JhbHMuc3ZoOjQ5OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW51bV93cmFwcGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2dsb2JhbHMuc3ZoOjUwMSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW51bV93cmFwcGVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX2Vudi5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VudiIuCiAKQEAgLTEyODgsOSArMTI4OCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fcmVnX21vZGVsLnN2aDozNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hkbF9wYXRoX2NvbmNhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6MjEyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9pbl9vcmRlcl9idWlsdF9pbl9jb21wYXJhdG9yIi4KIApAQCAtMTMxNiwxMyArMTMxNiwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvc2VxdWVuY2VzL3V2bV9tZW1fYWNjZXNzX3NlcS5zdmg6MTk1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fYWNjZXNzX3NlcSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTYyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX2NmZyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjUyMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9wb2xpY3kiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDoyNzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9yZWdpb24iLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDoyNzcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9yZWdpb24iLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvc2VxdWVuY2VzL3V2bV9yZWdfbWVtX3NoYXJlZF9hY2Nlc3Nfc2VxLnN2aDoyMDUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9zaGFyZWRfYWNjZXNzX3NlcSIuCiAKQEAgLTEzODAsNyArMTM4MCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdC5zdmg6NDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZWdpc3RyeS5zdmg6MTg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3RfcmVnaXN0cnkiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wb29sLnN2aDoyNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9zdHJpbmdfcG9vbCIuCiAKQEAgLTEzODgsMTEgKzEzODgsMTEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvbWFjcm9zL3V2bV9jYWxsYmFja19kZWZpbmVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3BhY2tlci5zdmg6NDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3BhY2tlciIuCiAKQEAgLTE0NTAsOSArMTQ1MCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3RsbTEvdXZtX3BvcnRzLnN2aDo5NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcHV0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3F1ZXVlLnN2aDozNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcXVldWUiLgogCi1bSU5GTyA6Q1AwMzAyXSBidWlsdGluLnN2OjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc2VxdWVuY2UiLgorW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3JhbmRvbV9zdGltdWx1cy5zdmg6NDUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zdGltdWx1cyIuCiAKQEAgLTE1MjAsMzEgKzE1MjAsMzEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbGlua3Muc3ZoOjMwMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVsYXRlZF9saW5rIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjEwNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2NhdGNoZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjEwOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2NhdGNoZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfaGFuZGxlci5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9oYW5kbGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2hhbmRsZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6NDc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9iYXNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDozOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9iYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjI4NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9jb250YWluZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjI4NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9jb250YWluZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTA4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9pbnRfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTA5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9pbnRfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyMjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX29iamVjdF9lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyMjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX29iamVjdF9lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjE3NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfc3RyaW5nX2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjE3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfc3RyaW5nX2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfb2JqZWN0LnN2aDo3OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfb2JqZWN0LnN2aDo4MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X29iamVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjM5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6NDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6NDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9zZXJ2ZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MTIyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNldF9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxMzY5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTM3MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2UiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZV9iYXNlIi4KIApAQCAtMTU2Niw3ICsxNTY2LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3Njb3JlYm9hcmQuc3ZoOjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zY29yZWJvYXJkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvdGxtMS91dm1fc3FyX2Nvbm5lY3Rpb25zLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VxX2l0ZW1fcHVsbF9leHBvcnQiLgogCkBAIC0xNzMyLDEzICsxNzMyLDEzIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3ByaW50ZXIuc3ZoOjM1OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHJlZV9wcmludGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjE3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWRfY2FsbGJhY2tzIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo2MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZF9iYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDo2MzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3V0aWxzIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDozMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdmlzaXRvciIuCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL1NwbGl0RmlsZS9jdXN0b21fZG1hLnYgYi90ZXN0cy9TcGxpdEZpbGUvY3VzdG9tX2RtYS52CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDcxNDRkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL1NwbGl0RmlsZS9jdXN0b21fZG1hLnYKKysrIC9kZXYvbnVsbApAQCAtMSwyOTg1MCArMCwwIEBACi0vL21lZ2FmdW5jdGlvbiB3aXphcmQ6ICVBbHRlcmEgU09QQyBCdWlsZGVyJQotLy9HRU5FUkFUSU9OOiBTVEFOREFSRAotLy9WRVJTSU9OOiBXTTEuMAotCi0KLS8vTGVnYWwgTm90aWNlOiAoQykyMDEwIEFsdGVyYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFlvdXIKLS8vdXNlIG9mIEFsdGVyYSBDb3Jwb3JhdGlvbidzIGRlc2lnbiB0b29scywgbG9naWMgZnVuY3Rpb25zIGFuZCBvdGhlcgotLy9zb2Z0d2FyZSBhbmQgdG9vbHMsIGFuZCBpdHMgQU1QUCBwYXJ0bmVyIGxvZ2ljIGZ1bmN0aW9ucywgYW5kIGFueQotLy9vdXRwdXQgZmlsZXMgYW55IG9mIHRoZSBmb3JlZ29pbmcgKGluY2x1ZGluZyBkZXZpY2UgcHJvZ3JhbW1pbmcgb3IKLS8vc2ltdWxhdGlvbiBmaWxlcyksIGFuZCBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIGFyZQotLy9leHByZXNzbHkgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEFsdGVyYSBQcm9ncmFtCi0vL0xpY2Vuc2UgU3Vic2NyaXB0aW9uIEFncmVlbWVudCBvciBvdGhlciBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50LAotLy9pbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgdGhhdCB5b3VyIHVzZSBpcyBmb3IgdGhlIHNvbGUgcHVycG9zZQotLy9vZiBwcm9ncmFtbWluZyBsb2dpYyBkZXZpY2VzIG1hbnVmYWN0dXJlZCBieSBBbHRlcmEgYW5kIHNvbGQgYnkgQWx0ZXJhCi0vL29yIGl0cyBhdXRob3JpemVkIGRpc3RyaWJ1dG9ycy4gIFBsZWFzZSByZWZlciB0byB0aGUgYXBwbGljYWJsZQotLy9hZ3JlZW1lbnQgZm9yIGZ1cnRoZXIgZGV0YWlscy4KLQotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLWB0aW1lc2NhbGUgMW5zIC8gMXBzCi0vLyBzeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3Jlc2V0cmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9iZWdpbnRyYW5zZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9jaGlwc2VsZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVhZGRhdGFfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRyZXF1ZXN0X2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfY3B1X2p0YWdfZGVidWdfbW9kdWxlX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2NwdV9qdGFnX2RlYnVnX21vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3B1X2p0YWdfZGVidWdfbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfY3B1X2p0YWdfZGVidWdfbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19jcHVfanRhZ19kZWJ1Z19tb2R1bGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbICA4OiAwXSBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYWRkcmVzczsKLSAgb3V0cHV0ICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYmVnaW50cmFuc2ZlcjsKLSAgb3V0cHV0ICBbICAzOiAwXSBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYnl0ZWVuYWJsZTsKLSAgb3V0cHV0ICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfY2hpcHNlbGVjdDsKLSAgb3V0cHV0ICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfZGVidWdhY2Nlc3M7Ci0gIG91dHB1dCAgWyAzMTogMF0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIG91dHB1dCAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3Jlc2V0X247Ci0gIG91dHB1dCAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3Jlc2V0cmVxdWVzdF9mcm9tX3NhOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV93cml0ZTsKLSAgb3V0cHV0ICBbIDMxOiAwXSBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfd3JpdGVkYXRhOwotICBvdXRwdXQgICAgICAgICAgIGQxX2NwdV9qdGFnX2RlYnVnX21vZHVsZV9lbmRfeGZlcjsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jcHVfanRhZ19kZWJ1Z19tb2R1bGU7Ci0gIG91dHB1dCAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2NwdV9qdGFnX2RlYnVnX21vZHVsZTsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2NwdV9qdGFnX2RlYnVnX21vZHVsZTsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3B1X2p0YWdfZGVidWdfbW9kdWxlOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbIDMxOiAwXSBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3Jlc2V0cmVxdWVzdDsKLSAgaW5wdXQgICBbIDExOiAwXSBwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZTsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSBwaXBlbGluZV9icmlkZ2VfbTFfYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdDsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZGVidWdhY2Nlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlcjsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotCi0gIHdpcmUgICAgWyAgODogMF0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FsbGdyYW50czsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYWxsb3dfbmV3X2FyYl9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudDsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYW55X2NvbnRpbnVlcmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYXJiX2NvdW50ZXJfZW5hYmxlOwotICByZWcgICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9hcmJfc2hhcmVfY291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYXJiX3NoYXJlX3NldF92YWx1ZXM7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbDsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYmVnaW5zX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX2JlZ2ludHJhbnNmZXI7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX2NoaXBzZWxlY3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9lbmRfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfZ3JhbnRfdmVjdG9yOwotICB3aXJlICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9pbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX2luX2Ffd3JpdGVfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX21hc3Rlcl9xcmVxX3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0czsKLSAgd2lyZSAgICBbIDMxOiAwXSBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVhZGRhdGFfZnJvbV9zYTsKLSAgcmVnICAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3Jlc2V0X247Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3Jlc2V0cmVxdWVzdF9mcm9tX3NhOwotICByZWcgICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfd2FpdHNfZm9yX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3dhaXRzX2Zvcl93cml0ZTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX3dyaXRlZGF0YTsKLSAgcmVnICAgICAgICAgICAgICBkMV9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfZW5kX3hmZXI7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfcmVhc29uc190b193YWl0OwotICByZWcgICAgICAgICAgICAgIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnM7Ci0gIHdpcmUgICAgICAgICAgICAgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jcHVfanRhZ19kZWJ1Z19tb2R1bGU7Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGluX2Ffd3JpdGVfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2NvbnRpbnVlcmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jcHVfanRhZ19kZWJ1Z19tb2R1bGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2NwdV9qdGFnX2RlYnVnX21vZHVsZTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2NwdV9qdGFnX2RlYnVnX21vZHVsZTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3B1X2p0YWdfZGVidWdfbW9kdWxlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9zYXZlZF9ncmFudF9jcHVfanRhZ19kZWJ1Z19tb2R1bGU7Ci0gIHdpcmUgICAgWyAxMTogMF0gc2hpZnRlZF9hZGRyZXNzX3RvX2NwdV9qdGFnX2RlYnVnX21vZHVsZV9mcm9tX3BpcGVsaW5lX2JyaWRnZV9tMTsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0X2Zvcl9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfY291bnRlcjsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZDFfcmVhc29uc190b193YWl0IDw9IH5jcHVfanRhZ19kZWJ1Z19tb2R1bGVfZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2JlZ2luc194ZmVyID0gfmQxX3JlYXNvbnNfdG9fd2FpdCAmICgocGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2NwdV9qdGFnX2RlYnVnX21vZHVsZSkpOwotICAvL2Fzc2lnbiBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVhZGRhdGFfZnJvbV9zYSA9IGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZWFkZGF0YSBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZWFkZGF0YV9mcm9tX3NhID0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX3JlYWRkYXRhOwotCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3B1X2p0YWdfZGVidWdfbW9kdWxlID0gKHtwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZVsxMV0gLCAxMSdiMH0gPT0gMTInaDApICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3Q7Ci0gIC8vY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FyYl9zaGFyZV9jb3VudGVyIHNldCB2YWx1ZXMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYXJiX3NoYXJlX3NldF92YWx1ZXMgPSAxOwotCi0gIC8vY3B1X2p0YWdfZGVidWdfbW9kdWxlX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2p0YWdfZGVidWdfbW9kdWxlX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgPSBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3B1X2p0YWdfZGVidWdfbW9kdWxlOwotCi0gIC8vY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgPSAwOwotCi0gIC8vY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlID0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2ZpcnN0dHJhbnNmZXIgPyAoY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FyYl9zaGFyZV9zZXRfdmFsdWVzIC0gMSkgOiB8Y3B1X2p0YWdfZGVidWdfbW9kdWxlX2FyYl9zaGFyZV9jb3VudGVyID8gKGNwdV9qdGFnX2RlYnVnX21vZHVsZV9hcmJfc2hhcmVfY291bnRlciAtIDEpIDogMDsKLQotICAvL2NwdV9qdGFnX2RlYnVnX21vZHVsZV9hbGxncmFudHMgYWxsIHNsYXZlIGdyYW50cywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9hbGxncmFudHMgPSB8Y3B1X2p0YWdfZGVidWdfbW9kdWxlX2dyYW50X3ZlY3RvcjsKLQotICAvL2NwdV9qdGFnX2RlYnVnX21vZHVsZV9lbmRfeGZlciBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2VuZF94ZmVyID0gfihjcHVfanRhZ19kZWJ1Z19tb2R1bGVfd2FpdHNfZm9yX3JlYWQgfCBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfd2FpdHNfZm9yX3dyaXRlKTsKLQotICAvL2VuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3B1X2p0YWdfZGVidWdfbW9kdWxlIGFyYiBzaGFyZSBjb3VudGVyIGVuYWJsZSB0ZXJtLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jcHVfanRhZ19kZWJ1Z19tb2R1bGUgPSBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfZW5kX3hmZXIgJiAofmNwdV9qdGFnX2RlYnVnX21vZHVsZV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50IHwgaW5fYV9yZWFkX2N5Y2xlIHwgaW5fYV93cml0ZV9jeWNsZSk7Ci0KLSAgLy9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfYXJiX3NoYXJlX2NvdW50ZXIgYXJiaXRyYXRpb24gY291bnRlciBlbmFibGUsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYXJiX2NvdW50ZXJfZW5hYmxlID0gKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3B1X2p0YWdfZGVidWdfbW9kdWxlICYgY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FsbGdyYW50cykgfCAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jcHVfanRhZ19kZWJ1Z19tb2R1bGUgJiB+Y3B1X2p0YWdfZGVidWdfbW9kdWxlX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMpOwotCi0gIC8vY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FyYl9zaGFyZV9jb3VudGVyIGNvdW50ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9hcmJfc2hhcmVfY291bnRlciA8PSAwOwotICAgICAgZWxzZSBpZiAoY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FyYl9jb3VudGVyX2VuYWJsZSkKLSAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYXJiX3NoYXJlX2NvdW50ZXIgPD0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gICAgZW5kCi0KLQotICAvL2NwdV9qdGFnX2RlYnVnX21vZHVsZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIHNsYXZlIGVuYWJsZXMgYXJiaXRlcmxvY2ssIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIDw9IDA7Ci0gICAgICBlbHNlIGlmICgofGNwdV9qdGFnX2RlYnVnX21vZHVsZV9tYXN0ZXJfcXJlcV92ZWN0b3IgJiBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2NwdV9qdGFnX2RlYnVnX21vZHVsZSkgfCAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jcHVfanRhZ19kZWJ1Z19tb2R1bGUgJiB+Y3B1X2p0YWdfZGVidWdfbW9kdWxlX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMpKQotICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIDw9IHxjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlL20xIGNwdS9qdGFnX2RlYnVnX21vZHVsZSBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9hcmJpdGVybG9jayA9IGNwdV9qdGFnX2RlYnVnX21vZHVsZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlICYgcGlwZWxpbmVfYnJpZGdlX20xX2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL2NwdV9qdGFnX2RlYnVnX21vZHVsZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrMiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiA9IHxjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZS9tMSBjcHUvanRhZ19kZWJ1Z19tb2R1bGUgYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX2FyYml0ZXJsb2NrMiA9IGNwdV9qdGFnX2RlYnVnX21vZHVsZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfYW55X2NvbnRpbnVlcmVxdWVzdCBhdCBsZWFzdCBvbmUgbWFzdGVyIGNvbnRpbnVlcyByZXF1ZXN0aW5nLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FueV9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX20xX2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3B1X2p0YWdfZGVidWdfbW9kdWxlID0gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2NwdV9qdGFnX2RlYnVnX21vZHVsZSAmIH4oKChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSAmICgocGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlciAhPSAwKSkpKTsKLSAgLy9sb2NhbCByZWFkZGF0YXZhbGlkIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfY3B1X2p0YWdfZGVidWdfbW9kdWxlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9jcHVfanRhZ19kZWJ1Z19tb2R1bGUgPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jcHVfanRhZ19kZWJ1Z19tb2R1bGUgJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkgJiB+Y3B1X2p0YWdfZGVidWdfbW9kdWxlX3dhaXRzX2Zvcl9yZWFkOwotCi0gIC8vY3B1X2p0YWdfZGVidWdfbW9kdWxlX3dyaXRlZGF0YSBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfd3JpdGVkYXRhID0gcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YTsKLQotICAvL21hc3RlciBpcyBhbHdheXMgZ3JhbnRlZCB3aGVuIHJlcXVlc3RlZAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfY3B1X2p0YWdfZGVidWdfbW9kdWxlID0gcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2NwdV9qdGFnX2RlYnVnX21vZHVsZTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZS9tMSBzYXZlZC1ncmFudCBjcHUvanRhZ19kZWJ1Z19tb2R1bGUsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfc2F2ZWRfZ3JhbnRfY3B1X2p0YWdfZGVidWdfbW9kdWxlID0gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2NwdV9qdGFnX2RlYnVnX21vZHVsZTsKLQotICAvL2FsbG93IG5ldyBhcmIgY3ljbGUgZm9yIGNwdS9qdGFnX2RlYnVnX21vZHVsZSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9hbGxvd19uZXdfYXJiX2N5Y2xlID0gMTsKLQotICAvL3BsYWNlaG9sZGVyIGNob3NlbiBtYXN0ZXIKLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9ncmFudF92ZWN0b3IgPSAxOwotCi0gIC8vcGxhY2Vob2xkZXIgdmVjdG9yIG9mIG1hc3RlciBxdWFsaWZpZWQtcmVxdWVzdHMKLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9tYXN0ZXJfcXJlcV92ZWN0b3IgPSAxOwotCi0gIGFzc2lnbiBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYmVnaW50cmFuc2ZlciA9IGNwdV9qdGFnX2RlYnVnX21vZHVsZV9iZWdpbnNfeGZlcjsKLSAgLy9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRfbiBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3B1X2p0YWdfZGVidWdfbW9kdWxlX3Jlc2V0X24gPSByZXNldF9uOwotCi0gIC8vYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZXNldHJlcXVlc3RfZnJvbV9zYSA9IGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZXNldHJlcXVlc3Qgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRyZXF1ZXN0X2Zyb21fc2EgPSBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRyZXF1ZXN0OwotCi0gIGFzc2lnbiBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfY2hpcHNlbGVjdCA9IHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2NwdV9qdGFnX2RlYnVnX21vZHVsZTsKLSAgLy9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9maXJzdHRyYW5zZmVyID0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2JlZ2luc194ZmVyID8gY3B1X2p0YWdfZGVidWdfbW9kdWxlX3VucmVnX2ZpcnN0dHJhbnNmZXIgOiBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVnX2ZpcnN0dHJhbnNmZXI7Ci0KLSAgLy9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfdW5yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV91bnJlZ19maXJzdHRyYW5zZmVyID0gfihjcHVfanRhZ19kZWJ1Z19tb2R1bGVfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9hbnlfY29udGludWVyZXF1ZXN0KTsKLQotICAvL2NwdV9qdGFnX2RlYnVnX21vZHVsZV9yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3JlZ19maXJzdHRyYW5zZmVyIDw9IDEnYjE7Ci0gICAgICBlbHNlIGlmIChjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYmVnaW5zX3hmZXIpCi0gICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3JlZ19maXJzdHRyYW5zZmVyIDw9IGNwdV9qdGFnX2RlYnVnX21vZHVsZV91bnJlZ19maXJzdHRyYW5zZmVyOwotICAgIGVuZAotCi0KLSAgLy9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsIGJlZ2luIGJ1cnN0IHRyYW5zZmVyLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCA9IGNwdV9qdGFnX2RlYnVnX21vZHVsZV9iZWdpbnNfeGZlcjsKLQotICAvL2NwdV9qdGFnX2RlYnVnX21vZHVsZV93cml0ZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2p0YWdfZGVidWdfbW9kdWxlX3dyaXRlID0gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfY3B1X2p0YWdfZGVidWdfbW9kdWxlICYgKHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KTsKLQotICBhc3NpZ24gc2hpZnRlZF9hZGRyZXNzX3RvX2NwdV9qdGFnX2RlYnVnX21vZHVsZV9mcm9tX3BpcGVsaW5lX2JyaWRnZV9tMSA9IHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlOwotICAvL2NwdV9qdGFnX2RlYnVnX21vZHVsZV9hZGRyZXNzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9hZGRyZXNzID0gc2hpZnRlZF9hZGRyZXNzX3RvX2NwdV9qdGFnX2RlYnVnX21vZHVsZV9mcm9tX3BpcGVsaW5lX2JyaWRnZV9tMSA+PiAyOwotCi0gIC8vZDFfY3B1X2p0YWdfZGVidWdfbW9kdWxlX2VuZF94ZmVyIHJlZ2lzdGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfZW5kX3hmZXIgPD0gMTsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX2NwdV9qdGFnX2RlYnVnX21vZHVsZV9lbmRfeGZlciA8PSBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICAvL2NwdV9qdGFnX2RlYnVnX21vZHVsZV93YWl0c19mb3JfcmVhZCBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2p0YWdfZGVidWdfbW9kdWxlX3dhaXRzX2Zvcl9yZWFkID0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2luX2FfcmVhZF9jeWNsZSAmIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9iZWdpbnNfeGZlcjsKLQotICAvL2NwdV9qdGFnX2RlYnVnX21vZHVsZV9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9pbl9hX3JlYWRfY3ljbGUgPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jcHVfanRhZ19kZWJ1Z19tb2R1bGUgJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCk7Ci0KLSAgLy9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGluX2FfcmVhZF9jeWNsZSA9IGNwdV9qdGFnX2RlYnVnX21vZHVsZV9pbl9hX3JlYWRfY3ljbGU7Ci0KLSAgLy9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfd2FpdHNfZm9yX3dyaXRlIGluIGEgY3ljbGUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfd2FpdHNfZm9yX3dyaXRlID0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2luX2Ffd3JpdGVfY3ljbGUgJiAwOwotCi0gIC8vY3B1X2p0YWdfZGVidWdfbW9kdWxlX2luX2Ffd3JpdGVfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9pbl9hX3dyaXRlX2N5Y2xlID0gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfY3B1X2p0YWdfZGVidWdfbW9kdWxlICYgKHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KTsKLQotICAvL2luX2Ffd3JpdGVfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGluX2Ffd3JpdGVfY3ljbGUgPSBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfaW5fYV93cml0ZV9jeWNsZTsKLQotICBhc3NpZ24gd2FpdF9mb3JfY3B1X2p0YWdfZGVidWdfbW9kdWxlX2NvdW50ZXIgPSAwOwotICAvL2NwdV9qdGFnX2RlYnVnX21vZHVsZV9ieXRlZW5hYmxlIGJ5dGUgZW5hYmxlIHBvcnQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2J5dGVlbmFibGUgPSAocGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfY3B1X2p0YWdfZGVidWdfbW9kdWxlKT8gcGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUgOgotICAgIC0xOwotCi0gIC8vZGVidWdhY2Nlc3MgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2RlYnVnYWNjZXNzID0gKHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2NwdV9qdGFnX2RlYnVnX21vZHVsZSk/IHBpcGVsaW5lX2JyaWRnZV9tMV9kZWJ1Z2FjY2VzcyA6Ci0gICAgMDsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvL2NwdS9qdGFnX2RlYnVnX21vZHVsZSBlbmFibGUgbm9uLXplcm8gYXNzZXJ0aW9ucywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAxJ2IxOwotICAgIGVuZAotCi0KLSAgLy9waXBlbGluZV9icmlkZ2UvbTEgbm9uLXplcm8gYnVyc3Rjb3VudCBhc3NlcnRpb24sIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19jcHVfanRhZ19kZWJ1Z19tb2R1bGUgJiYgKHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50ID09IDApICYmIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IHBpcGVsaW5lX2JyaWRnZS9tMSBkcm92ZSAwIG9uIGl0cyAnYnVyc3Rjb3VudCcgcG9ydCB3aGlsZSBhY2Nlc3Npbmcgc2xhdmUgY3B1L2p0YWdfZGVidWdfbW9kdWxlIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGNwdV9kYXRhX21hc3Rlcl9hcmJpdHJhdG9yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9lbmRfeGZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZW5kX3hmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX2lycV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9pcnFfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9pcnFfZnJvbV9zYSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfaXJxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl93YWl0cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgMjY6IDBdIGNwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotICBvdXRwdXQgIFsgMzE6IDBdIGNwdV9kYXRhX21hc3Rlcl9pcnE7Ci0gIG91dHB1dCAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlcjsKLSAgb3V0cHV0ICBbIDMxOiAwXSBjcHVfZGF0YV9tYXN0ZXJfcmVhZGRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRkYXRhdmFsaWQ7Ci0gIG91dHB1dCAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbIDI2OiAwXSBjcHVfZGF0YV9tYXN0ZXJfYWRkcmVzczsKLSAgaW5wdXQgICBbICAzOiAwXSBjcHVfZGF0YV9tYXN0ZXJfYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSBjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW07Ci0gIGlucHV0ICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbTsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW07Ci0gIGlucHV0ICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbTsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbTsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcjsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbTsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcjsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbTsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcjsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW07Ci0gIGlucHV0ICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbTsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gY3B1X2RhdGFfbWFzdGVyX3dyaXRlZGF0YTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgaW5wdXQgICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gIGlucHV0ICAgICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2VuZF94ZmVyOwotICBpbnB1dCAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9lbmRfeGZlcjsKLSAgaW5wdXQgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfaXJxX2Zyb21fc2E7Ci0gIGlucHV0ICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2lycV9mcm9tX3NhOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX2lycV9mcm9tX3NhOwotCi0gIHJlZyAgICAgICAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZTsKLSAgcmVnICAgICBbIDI2OiAwXSBjcHVfZGF0YV9tYXN0ZXJfYWRkcmVzc19sYXN0X3RpbWU7Ci0gIHdpcmUgICAgWyAyNjogMF0gY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIHJlZyAgICAgWyAgMzogMF0gY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnRfbGFzdF90aW1lOwotICByZWcgICAgIFsgIDM6IDBdIGNwdV9kYXRhX21hc3Rlcl9ieXRlZW5hYmxlX2xhc3RfdGltZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjcHVfZGF0YV9tYXN0ZXJfaXJxOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9pc19ncmFudGVkX3NvbWVfc2xhdmU7Ci0gIHJlZyAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlcjsKLSAgcmVnICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQ7Ci0gIHJlZyAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfbGFzdF90aW1lOwotICB3aXJlICAgIFsgMzE6IDBdIGNwdV9kYXRhX21hc3Rlcl9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcnVuOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl93YWl0cmVxdWVzdDsKLSAgcmVnICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfd3JpdGVfbGFzdF90aW1lOwotICByZWcgICAgIFsgMzE6IDBdIGNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGFfbGFzdF90aW1lOwotICB3aXJlICAgICAgICAgICAgIGxhdGVuY3lfbG9hZF92YWx1ZTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9jcHVfZGF0YV9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyOwotICB3aXJlICAgICAgICAgICAgIHByZV9mbHVzaF9jcHVfZGF0YV9tYXN0ZXJfcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICByXzA7Ci0gIC8vcl8wIG1hc3Rlcl9ydW4gY2FzY2FkZWQgd2FpdCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcl8wID0gMSAmIChjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtIHwgfmNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0pICYgKCh+Y3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSB8IH4oY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpIHwgKDEgJiB+Y3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgJiAoY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpKSkpICYgKCh+Y3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSB8IH4oY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpIHwgKDEgJiB+Y3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgJiAoY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpKSkpICYgMSAmIChjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtIHwgfmNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0pICYgKCh+Y3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSB8IH4oY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpIHwgKDEgJiB+Y3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgJiAoY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpKSkpICYgKCh+Y3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSB8IH4oY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpIHwgKDEgJiB+Y3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgJiAoY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpKSkpICYgMSAmIChjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtIHwgfmNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0pICYgKCh+Y3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSB8IH4oY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpIHwgKDEgJiB+Y3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgJiAoY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpKSkpICYgKCh+Y3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSB8IH4oY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpIHwgKDEgJiB+Y3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgJiAoY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpKSkpOwotCi0gIC8vY2FzY2FkZWQgd2FpdCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3B1X2RhdGFfbWFzdGVyX3J1biA9IHJfMDsKLQotICAvL29wdGltaXplIHNlbGVjdC1sb2dpYyBieSBwYXNzaW5nIG9ubHkgdGhvc2UgYWRkcmVzcyBiaXRzIHdoaWNoIG1hdHRlci4KLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlID0gY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3NbMjYgOiAwXTsKLQotICAvL2NwdV9kYXRhX21hc3Rlcl9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCA8PSBjcHVfZGF0YV9tYXN0ZXJfcmVhZCAmIGNwdV9kYXRhX21hc3Rlcl9ydW4gJiB+Y3B1X2RhdGFfbWFzdGVyX2lzX2dyYW50ZWRfc29tZV9zbGF2ZTsKLSAgICBlbmQKLQotCi0gIC8vc29tZSBzbGF2ZSBpcyBnZXR0aW5nIHNlbGVjdGVkLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2RhdGFfbWFzdGVyX2lzX2dyYW50ZWRfc29tZV9zbGF2ZSA9IGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSB8Ci0gICAgY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtIHwKLSAgICBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW07Ci0KLSAgLy9sYXRlbnQgc2xhdmUgcmVhZCBkYXRhIHZhbGlkcyB3aGljaCBtYXkgYmUgZmx1c2hlZCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHByZV9mbHVzaF9jcHVfZGF0YV9tYXN0ZXJfcmVhZGRhdGF2YWxpZCA9IGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtIHwKLSAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSB8Ci0gICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW07Ci0KLSAgLy9sYXRlbnQgc2xhdmUgcmVhZCBkYXRhIHZhbGlkIHdoaWNoIGlzIG5vdCBmbHVzaGVkLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2RhdGFfbWFzdGVyX3JlYWRkYXRhdmFsaWQgPSBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgfAotICAgIHByZV9mbHVzaF9jcHVfZGF0YV9tYXN0ZXJfcmVhZGRhdGF2YWxpZCB8Ci0gICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkIHwKLSAgICBwcmVfZmx1c2hfY3B1X2RhdGFfbWFzdGVyX3JlYWRkYXRhdmFsaWQgfAotICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCB8Ci0gICAgcHJlX2ZsdXNoX2NwdV9kYXRhX21hc3Rlcl9yZWFkZGF0YXZhbGlkOwotCi0gIC8vY3B1L2RhdGFfbWFzdGVyIHJlYWRkYXRhIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9yZWFkZGF0YSA9ICh7MzIge35jcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbX19IHwgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EpICYKLSAgICAoezMyIHt+Y3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW19fSB8IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhKSAmCi0gICAgKHszMiB7fmNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtfX0gfCBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSk7Ci0KLSAgLy9hY3R1YWwgd2FpdHJlcXVlc3QgcG9ydCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl93YWl0cmVxdWVzdCA9IH5jcHVfZGF0YV9tYXN0ZXJfcnVuOwotCi0gIC8vbGF0ZW50IG1heCBjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyIDw9IHAxX2NwdV9kYXRhX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXI7Ci0gICAgZW5kCi0KLQotICAvL2xhdGVuY3kgY291bnRlciBsb2FkIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX2NwdV9kYXRhX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIgPSAoKGNwdV9kYXRhX21hc3Rlcl9ydW4gJiBjcHVfZGF0YV9tYXN0ZXJfcmVhZCkpPyBsYXRlbmN5X2xvYWRfdmFsdWUgOgotICAgIChjcHVfZGF0YV9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyKT8gY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlciAtIDEgOgotICAgIDA7Ci0KLSAgLy9yZWFkIGxhdGVuY3kgbG9hZCB2YWx1ZXMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBsYXRlbmN5X2xvYWRfdmFsdWUgPSAwOwotCi0gIC8vaXJxIGFzc2lnbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9pcnEgPSB7MSdiMCwKLSAgICAxJ2IwLAotICAgIDEnYjAsCi0gICAgMSdiMCwKLSAgICAxJ2IwLAotICAgIDEnYjAsCi0gICAgMSdiMCwKLSAgICAxJ2IwLAotICAgIDEnYjAsCi0gICAgMSdiMCwKLSAgICAxJ2IwLAotICAgIDEnYjAsCi0gICAgMSdiMCwKLSAgICAxJ2IwLAotICAgIDEnYjAsCi0gICAgMSdiMCwKLSAgICAxJ2IwLAotICAgIDEnYjAsCi0gICAgMSdiMCwKLSAgICAxJ2IwLAotICAgIDEnYjAsCi0gICAgMSdiMCwKLSAgICAxJ2IwLAotICAgIDEnYjAsCi0gICAgMSdiMCwKLSAgICAxJ2IwLAotICAgIDEnYjAsCi0gICAgMSdiMCwKLSAgICAxJ2IwLAotICAgIGZpcl9kbWFfY29udHJvbF9pcnFfZnJvbV9zYSwKLSAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfaXJxX2Zyb21fc2EsCi0gICAgdGltZXN0YW1wX3RpbWVyX3MxX2lycV9mcm9tX3NhfTsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvL2NwdV9kYXRhX21hc3Rlcl9hZGRyZXNzIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3NfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYWRkcmVzc19sYXN0X3RpbWUgPD0gY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3M7Ci0gICAgZW5kCi0KLQotICAvL2NwdS9kYXRhX21hc3RlciB3YWl0ZWQgbGFzdCB0aW1lLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lIDw9IGNwdV9kYXRhX21hc3Rlcl93YWl0cmVxdWVzdCAmIChjcHVfZGF0YV9tYXN0ZXJfcmVhZCB8IGNwdV9kYXRhX21hc3Rlcl93cml0ZSk7Ci0gICAgZW5kCi0KLQotICAvL2NwdV9kYXRhX21hc3Rlcl9hZGRyZXNzIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3MgIT0gY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3NfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3MgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jcHVfZGF0YV9tYXN0ZXJfYnVyc3Rjb3VudCBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50X2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnRfbGFzdF90aW1lIDw9IGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgLy9jcHVfZGF0YV9tYXN0ZXJfYnVyc3Rjb3VudCBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50ICE9IGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50X2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50IGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3B1X2RhdGFfbWFzdGVyX2J5dGVlbmFibGUgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGNwdV9kYXRhX21hc3Rlcl9ieXRlZW5hYmxlX2xhc3RfdGltZSA8PSBjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZTsKLSAgICBlbmQKLQotCi0gIC8vY3B1X2RhdGFfbWFzdGVyX2J5dGVlbmFibGUgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZSAhPSBjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZV9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZSBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2NwdV9kYXRhX21hc3Rlcl9yZWFkIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9sYXN0X3RpbWUgPD0gY3B1X2RhdGFfbWFzdGVyX3JlYWQ7Ci0gICAgZW5kCi0KLQotICAvL2NwdV9kYXRhX21hc3Rlcl9yZWFkIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3B1X2RhdGFfbWFzdGVyX3JlYWQgIT0gY3B1X2RhdGFfbWFzdGVyX3JlYWRfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3B1X2RhdGFfbWFzdGVyX3JlYWQgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jcHVfZGF0YV9tYXN0ZXJfd3JpdGUgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfd3JpdGVfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfd3JpdGVfbGFzdF90aW1lIDw9IGNwdV9kYXRhX21hc3Rlcl93cml0ZTsKLSAgICBlbmQKLQotCi0gIC8vY3B1X2RhdGFfbWFzdGVyX3dyaXRlIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3B1X2RhdGFfbWFzdGVyX3dyaXRlICE9IGNwdV9kYXRhX21hc3Rlcl93cml0ZV9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jcHVfZGF0YV9tYXN0ZXJfd3JpdGVkYXRhIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3dyaXRlZGF0YV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGFfbGFzdF90aW1lIDw9IGNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotICAvL2NwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGEgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjcHVfZGF0YV9tYXN0ZXJfd3JpdGVkYXRhICE9IGNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGFfbGFzdF90aW1lKSAmIGNwdV9kYXRhX21hc3Rlcl93cml0ZSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3B1X2RhdGFfbWFzdGVyX3dyaXRlZGF0YSBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9zaGlmdF9yZWdpc3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZW5kX3hmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfd2FpdHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAyNjogMF0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyOwotICBvdXRwdXQgIFsgMzE6IDBdIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZGRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkZGF0YXZhbGlkOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgMjY6IDBdIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYWRkcmVzczsKLSAgaW5wdXQgICBbICAzOiAwXSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbTsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW07Ci0gIGlucHV0ICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbTsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXI7Ci0gIGlucHV0ICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW07Ci0gIGlucHV0ICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW07Ci0gIGlucHV0ICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIGlucHV0ICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIGlucHV0ICAgICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2VuZF94ZmVyOwotICBpbnB1dCAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9lbmRfeGZlcjsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotCi0gIHJlZyAgICAgICAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZTsKLSAgcmVnICAgICBbIDI2OiAwXSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfbGFzdF90aW1lOwotICB3aXJlICAgIFsgMjY6IDBdIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZTsKLSAgcmVnICAgICBbICAzOiAwXSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2J1cnN0Y291bnRfbGFzdF90aW1lOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfaXNfZ3JhbnRlZF9zb21lX3NsYXZlOwotICByZWcgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyOwotICByZWcgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQ7Ci0gIHJlZyAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2xhc3RfdGltZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRkYXRhOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3J1bjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGxhdGVuY3lfbG9hZF92YWx1ZTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2xhdGVuY3lfY291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBwcmVfZmx1c2hfY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIHJfMDsKLSAgLy9yXzAgbWFzdGVyX3J1biBjYXNjYWRlZCB3YWl0IGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiByXzAgPSAxICYgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtIHwgfmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtKSAmICgofmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtIHwgfihjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQpIHwgKDEgJiB+Y3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgJiAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkKSkpKSAmIDEgJiAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0gfCB+Y3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0pICYgKCh+Y3B1X2luc3RydWN0aW9uX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0gfCB+KGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZCkgfCAoMSAmIH5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSAmIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQpKSkpOwotCi0gIC8vY2FzY2FkZWQgd2FpdCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ydW4gPSByXzA7Ci0KLSAgLy9vcHRpbWl6ZSBzZWxlY3QtbG9naWMgYnkgcGFzc2luZyBvbmx5IHRob3NlIGFkZHJlc3MgYml0cyB3aGljaCBtYXR0ZXIuCi0gIGFzc2lnbiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmUgPSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NbMjYgOiAwXTsKLQotICAvL2NwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCA8PSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQgJiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3J1biAmIH5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2lzX2dyYW50ZWRfc29tZV9zbGF2ZTsKLSAgICBlbmQKLQotCi0gIC8vc29tZSBzbGF2ZSBpcyBnZXR0aW5nIHNlbGVjdGVkLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9pc19ncmFudGVkX3NvbWVfc2xhdmUgPSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtIHwKLSAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtOwotCi0gIC8vbGF0ZW50IHNsYXZlIHJlYWQgZGF0YSB2YWxpZHMgd2hpY2ggbWF5IGJlIGZsdXNoZWQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwcmVfZmx1c2hfY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkZGF0YXZhbGlkID0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtIHwKLSAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW07Ci0KLSAgLy9sYXRlbnQgc2xhdmUgcmVhZCBkYXRhIHZhbGlkIHdoaWNoIGlzIG5vdCBmbHVzaGVkLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkZGF0YXZhbGlkID0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCB8Ci0gICAgcHJlX2ZsdXNoX2NwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZGRhdGF2YWxpZCB8Ci0gICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCB8Ci0gICAgcHJlX2ZsdXNoX2NwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZGRhdGF2YWxpZDsKLQotICAvL2NwdS9pbnN0cnVjdGlvbl9tYXN0ZXIgcmVhZGRhdGEgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkZGF0YSA9ICh7MzIge35jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW19fSB8IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhKSAmCi0gICAgKHszMiB7fmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbX19IHwgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EpOwotCi0gIC8vYWN0dWFsIHdhaXRyZXF1ZXN0IHBvcnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3dhaXRyZXF1ZXN0ID0gfmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcnVuOwotCi0gIC8vbGF0ZW50IG1heCBjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2xhdGVuY3lfY291bnRlciA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIgPD0gcDFfY3B1X2luc3RydWN0aW9uX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXI7Ci0gICAgZW5kCi0KLQotICAvL2xhdGVuY3kgY291bnRlciBsb2FkIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX2NwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyID0gKChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3J1biAmIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZCkpPyBsYXRlbmN5X2xvYWRfdmFsdWUgOgotICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2xhdGVuY3lfY291bnRlcik/IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyIC0gMSA6Ci0gICAgMDsKLQotICAvL3JlYWQgbGF0ZW5jeSBsb2FkIHZhbHVlcywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGxhdGVuY3lfbG9hZF92YWx1ZSA9IDA7Ci0KLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgLy9jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3MgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfbGFzdF90aW1lIDw9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIC8vY3B1L2luc3RydWN0aW9uX21hc3RlciB3YWl0ZWQgbGFzdCB0aW1lLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lIDw9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfd2FpdHJlcXVlc3QgJiAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkKTsKLSAgICBlbmQKLQotCi0gIC8vY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hZGRyZXNzIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hZGRyZXNzICE9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYWRkcmVzc19sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3MgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2J1cnN0Y291bnQgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2J1cnN0Y291bnRfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2J1cnN0Y291bnRfbGFzdF90aW1lIDw9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYnVyc3Rjb3VudDsKLSAgICBlbmQKLQotCi0gIC8vY3B1X2luc3RydWN0aW9uX21hc3Rlcl9idXJzdGNvdW50IG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9idXJzdGNvdW50ICE9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYnVyc3Rjb3VudF9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2J1cnN0Y291bnQgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfbGFzdF90aW1lIDw9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZDsKLSAgICBlbmQKLQotCi0gIC8vY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkICE9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgYnVyc3Rjb3VudF9maWZvX2Zvcl9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fbW9kdWxlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2ZpZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luY19yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgIDM6IDBdIGRhdGFfb3V0OwotICBvdXRwdXQgICAgICAgICAgIGVtcHR5OwotICBvdXRwdXQgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICBvdXRwdXQgICAgICAgICAgIGZ1bGw7Ci0gIGlucHV0ICAgICAgICAgICAgY2xlYXJfZmlmbzsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAgMzogMF0gZGF0YV9pbjsKLSAgaW5wdXQgICAgICAgICAgICByZWFkOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgc3luY19yZXNldDsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZTsKLQotICB3aXJlICAgIFsgIDM6IDBdIGRhdGFfb3V0OwotICB3aXJlICAgICAgICAgICAgIGVtcHR5OwotICByZWcgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICB3aXJlICAgICAgICAgICAgIGZ1bGw7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8wOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzI7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8zOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzU7Ci0gIHdpcmUgICAgICAgICAgICAgZnVsbF82OwotICByZWcgICAgIFsgIDM6IDBdIGhvd19tYW55X29uZXM7Ci0gIHdpcmUgICAgWyAgMzogMF0gb25lX2NvdW50X21pbnVzX29uZTsKLSAgd2lyZSAgICBbICAzOiAwXSBvbmVfY291bnRfcGx1c19vbmU7Ci0gIHdpcmUgICAgICAgICAgICAgcDBfZnVsbF8wOwotICB3aXJlICAgIFsgIDM6IDBdIHAwX3N0YWdlXzA7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfZnVsbF8xOwotICB3aXJlICAgIFsgIDM6IDBdIHAxX3N0YWdlXzE7Ci0gIHdpcmUgICAgICAgICAgICAgcDJfZnVsbF8yOwotICB3aXJlICAgIFsgIDM6IDBdIHAyX3N0YWdlXzI7Ci0gIHdpcmUgICAgICAgICAgICAgcDNfZnVsbF8zOwotICB3aXJlICAgIFsgIDM6IDBdIHAzX3N0YWdlXzM7Ci0gIHdpcmUgICAgICAgICAgICAgcDRfZnVsbF80OwotICB3aXJlICAgIFsgIDM6IDBdIHA0X3N0YWdlXzQ7Ci0gIHdpcmUgICAgICAgICAgICAgcDVfZnVsbF81OwotICB3aXJlICAgIFsgIDM6IDBdIHA1X3N0YWdlXzU7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMDsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV8xOwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzI7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMzsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV80OwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzU7Ci0gIHdpcmUgICAgWyAgMzogMF0gdXBkYXRlZF9vbmVfY291bnQ7Ci0gIGFzc2lnbiBkYXRhX291dCA9IHN0YWdlXzA7Ci0gIGFzc2lnbiBmdWxsID0gZnVsbF81OwotICBhc3NpZ24gZW1wdHkgPSAhZnVsbF8wOwotICBhc3NpZ24gZnVsbF82ID0gMDsKLSAgLy9kYXRhXzUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwNV9zdGFnZV81ID0gKChmdWxsXzYgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIGRhdGFfaW47Ci0KLSAgLy9kYXRhX3JlZ181LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF81KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfNSAmICEoKGZ1bGxfNiA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfNSA8PSBwNV9zdGFnZV81OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwNV9mdWxsXzUgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzQgOgotICAgIDA7Ci0KLSAgLy9jb250cm9sX3JlZ181LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF81IDw9IHA1X2Z1bGxfNTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfc3RhZ2VfNCA9ICgoZnVsbF81ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV81OwotCi0gIC8vZGF0YV9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzQgJiAhKChmdWxsXzUgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzQgPD0gcDRfc3RhZ2VfNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfZnVsbF80ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8zIDoKLSAgICBmdWxsXzU7Ci0KLSAgLy9jb250cm9sX3JlZ180LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF80IDw9IHA0X2Z1bGxfNDsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfc3RhZ2VfMyA9ICgoZnVsbF80ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV80OwotCi0gIC8vZGF0YV9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzMgJiAhKChmdWxsXzQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzMgPD0gcDNfc3RhZ2VfMzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfZnVsbF8zID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8yIDoKLSAgICBmdWxsXzQ7Ci0KLSAgLy9jb250cm9sX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8zIDw9IHAzX2Z1bGxfMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfc3RhZ2VfMiA9ICgoZnVsbF8zICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8zOwotCi0gIC8vZGF0YV9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzIgJiAhKChmdWxsXzMgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzIgPD0gcDJfc3RhZ2VfMjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfZnVsbF8yID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xIDoKLSAgICBmdWxsXzM7Ci0KLSAgLy9jb250cm9sX3JlZ18yLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8yIDw9IHAyX2Z1bGxfMjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfc3RhZ2VfMSA9ICgoZnVsbF8yICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8yOwotCi0gIC8vZGF0YV9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEgJiAhKChmdWxsXzIgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEgPD0gcDFfc3RhZ2VfMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfZnVsbF8xID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8wIDoKLSAgICBmdWxsXzI7Ci0KLSAgLy9jb250cm9sX3JlZ18xLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xIDw9IHAxX2Z1bGxfMTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfc3RhZ2VfMCA9ICgoZnVsbF8xICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xOwotCi0gIC8vZGF0YV9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzAgJiAhKChmdWxsXzEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzAgPD0gcDBfc3RhZ2VfMDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfZnVsbF8wID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gMSA6Ci0gICAgZnVsbF8xOwotCi0gIC8vY29udHJvbF9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbyAmIH53cml0ZSkKLSAgICAgICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMCA8PSBwMF9mdWxsXzA7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gb25lX2NvdW50X3BsdXNfb25lID0gaG93X21hbnlfb25lcyArIDE7Ci0gIGFzc2lnbiBvbmVfY291bnRfbWludXNfb25lID0gaG93X21hbnlfb25lcyAtIDE7Ci0gIC8vdXBkYXRlZF9vbmVfY291bnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB1cGRhdGVkX29uZV9jb3VudCA9ICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiAhd3JpdGUpKSk/IDAgOgotICAgICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiB3cml0ZSkpKT8gfGRhdGFfaW4gOgotICAgICgocmVhZCAmICh8ZGF0YV9pbikgJiB3cml0ZSAmICh8c3RhZ2VfMCkpKT8gaG93X21hbnlfb25lcyA6Ci0gICAgKCh3cml0ZSAmICh8ZGF0YV9pbikpKT8gb25lX2NvdW50X3BsdXNfb25lIDoKLSAgICAoKHJlYWQgJiAofHN0YWdlXzApKSk/IG9uZV9jb3VudF9taW51c19vbmUgOgotICAgIGhvd19tYW55X29uZXM7Ci0KLSAgLy9jb3VudHMgaG93IG1hbnkgb25lcyBpbiB0aGUgZGF0YSBwaXBlbGluZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSB1cGRhdGVkX29uZV9jb3VudDsKLSAgICBlbmQKLQotCi0gIC8vdGhpcyBmaWZvIGNvbnRhaW5zIG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uIDw9IDE7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCB3cml0ZSkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSB+KHx1cGRhdGVkX29uZV9jb3VudCk7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcmR2X2ZpZm9fZm9yX2NwdV9kYXRhX21hc3Rlcl90b19jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fbW9kdWxlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2ZpZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luY19yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGRhdGFfb3V0OwotICBvdXRwdXQgICAgICAgICAgIGVtcHR5OwotICBvdXRwdXQgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICBvdXRwdXQgICAgICAgICAgIGZ1bGw7Ci0gIGlucHV0ICAgICAgICAgICAgY2xlYXJfZmlmbzsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgICAgICAgICAgZGF0YV9pbjsKLSAgaW5wdXQgICAgICAgICAgICByZWFkOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgc3luY19yZXNldDsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZTsKLQotICB3aXJlICAgICAgICAgICAgIGRhdGFfb3V0OwotICB3aXJlICAgICAgICAgICAgIGVtcHR5OwotICByZWcgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICB3aXJlICAgICAgICAgICAgIGZ1bGw7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8wOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzI7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8zOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzU7Ci0gIHdpcmUgICAgICAgICAgICAgZnVsbF82OwotICByZWcgICAgIFsgIDM6IDBdIGhvd19tYW55X29uZXM7Ci0gIHdpcmUgICAgWyAgMzogMF0gb25lX2NvdW50X21pbnVzX29uZTsKLSAgd2lyZSAgICBbICAzOiAwXSBvbmVfY291bnRfcGx1c19vbmU7Ci0gIHdpcmUgICAgICAgICAgICAgcDBfZnVsbF8wOwotICB3aXJlICAgICAgICAgICAgIHAwX3N0YWdlXzA7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfZnVsbF8xOwotICB3aXJlICAgICAgICAgICAgIHAxX3N0YWdlXzE7Ci0gIHdpcmUgICAgICAgICAgICAgcDJfZnVsbF8yOwotICB3aXJlICAgICAgICAgICAgIHAyX3N0YWdlXzI7Ci0gIHdpcmUgICAgICAgICAgICAgcDNfZnVsbF8zOwotICB3aXJlICAgICAgICAgICAgIHAzX3N0YWdlXzM7Ci0gIHdpcmUgICAgICAgICAgICAgcDRfZnVsbF80OwotICB3aXJlICAgICAgICAgICAgIHA0X3N0YWdlXzQ7Ci0gIHdpcmUgICAgICAgICAgICAgcDVfZnVsbF81OwotICB3aXJlICAgICAgICAgICAgIHA1X3N0YWdlXzU7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMDsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8xOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzI7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMzsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV80OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzU7Ci0gIHdpcmUgICAgWyAgMzogMF0gdXBkYXRlZF9vbmVfY291bnQ7Ci0gIGFzc2lnbiBkYXRhX291dCA9IHN0YWdlXzA7Ci0gIGFzc2lnbiBmdWxsID0gZnVsbF81OwotICBhc3NpZ24gZW1wdHkgPSAhZnVsbF8wOwotICBhc3NpZ24gZnVsbF82ID0gMDsKLSAgLy9kYXRhXzUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwNV9zdGFnZV81ID0gKChmdWxsXzYgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIGRhdGFfaW47Ci0KLSAgLy9kYXRhX3JlZ181LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF81KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfNSAmICEoKGZ1bGxfNiA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfNSA8PSBwNV9zdGFnZV81OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwNV9mdWxsXzUgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzQgOgotICAgIDA7Ci0KLSAgLy9jb250cm9sX3JlZ181LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF81IDw9IHA1X2Z1bGxfNTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfc3RhZ2VfNCA9ICgoZnVsbF81ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV81OwotCi0gIC8vZGF0YV9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzQgJiAhKChmdWxsXzUgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzQgPD0gcDRfc3RhZ2VfNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfZnVsbF80ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8zIDoKLSAgICBmdWxsXzU7Ci0KLSAgLy9jb250cm9sX3JlZ180LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF80IDw9IHA0X2Z1bGxfNDsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfc3RhZ2VfMyA9ICgoZnVsbF80ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV80OwotCi0gIC8vZGF0YV9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzMgJiAhKChmdWxsXzQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzMgPD0gcDNfc3RhZ2VfMzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfZnVsbF8zID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8yIDoKLSAgICBmdWxsXzQ7Ci0KLSAgLy9jb250cm9sX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8zIDw9IHAzX2Z1bGxfMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfc3RhZ2VfMiA9ICgoZnVsbF8zICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8zOwotCi0gIC8vZGF0YV9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzIgJiAhKChmdWxsXzMgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzIgPD0gcDJfc3RhZ2VfMjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfZnVsbF8yID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xIDoKLSAgICBmdWxsXzM7Ci0KLSAgLy9jb250cm9sX3JlZ18yLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8yIDw9IHAyX2Z1bGxfMjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfc3RhZ2VfMSA9ICgoZnVsbF8yICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8yOwotCi0gIC8vZGF0YV9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEgJiAhKChmdWxsXzIgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEgPD0gcDFfc3RhZ2VfMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfZnVsbF8xID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8wIDoKLSAgICBmdWxsXzI7Ci0KLSAgLy9jb250cm9sX3JlZ18xLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xIDw9IHAxX2Z1bGxfMTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfc3RhZ2VfMCA9ICgoZnVsbF8xICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xOwotCi0gIC8vZGF0YV9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzAgJiAhKChmdWxsXzEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzAgPD0gcDBfc3RhZ2VfMDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfZnVsbF8wID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gMSA6Ci0gICAgZnVsbF8xOwotCi0gIC8vY29udHJvbF9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbyAmIH53cml0ZSkKLSAgICAgICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMCA8PSBwMF9mdWxsXzA7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gb25lX2NvdW50X3BsdXNfb25lID0gaG93X21hbnlfb25lcyArIDE7Ci0gIGFzc2lnbiBvbmVfY291bnRfbWludXNfb25lID0gaG93X21hbnlfb25lcyAtIDE7Ci0gIC8vdXBkYXRlZF9vbmVfY291bnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB1cGRhdGVkX29uZV9jb3VudCA9ICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiAhd3JpdGUpKSk/IDAgOgotICAgICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiB3cml0ZSkpKT8gfGRhdGFfaW4gOgotICAgICgocmVhZCAmICh8ZGF0YV9pbikgJiB3cml0ZSAmICh8c3RhZ2VfMCkpKT8gaG93X21hbnlfb25lcyA6Ci0gICAgKCh3cml0ZSAmICh8ZGF0YV9pbikpKT8gb25lX2NvdW50X3BsdXNfb25lIDoKLSAgICAoKHJlYWQgJiAofHN0YWdlXzApKSk/IG9uZV9jb3VudF9taW51c19vbmUgOgotICAgIGhvd19tYW55X29uZXM7Ci0KLSAgLy9jb3VudHMgaG93IG1hbnkgb25lcyBpbiB0aGUgZGF0YSBwaXBlbGluZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSB1cGRhdGVkX29uZV9jb3VudDsKLSAgICBlbmQKLQotCi0gIC8vdGhpcyBmaWZvIGNvbnRhaW5zIG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uIDw9IDE7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCB3cml0ZSkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSB+KHx1cGRhdGVkX29uZV9jb3VudCk7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYnl0ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9lbmRfeGZlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbTsKLSAgb3V0cHV0ICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW07Ci0gIG91dHB1dCAgWyAyMDogMF0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIG91dHB1dCAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIG91dHB1dCAgWyAyMjogMF0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2J5dGVhZGRyZXNzOwotICBvdXRwdXQgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ieXRlZW5hYmxlOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZDsKLSAgb3V0cHV0ICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dyaXRlZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgMjY6IDBdIGNwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotICBpbnB1dCAgIFsgIDM6IDBdIGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50OwotICBpbnB1dCAgIFsgIDM6IDBdIGNwdV9kYXRhX21hc3Rlcl9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9kZWJ1Z2FjY2VzczsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjcHVfZGF0YV9tYXN0ZXJfd3JpdGVkYXRhOwotICBpbnB1dCAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9jb250aW51ZXJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3Jkdl9maWZvX2VtcHR5X2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmR2X2ZpZm9fb3V0cHV0X2Zyb21fY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3NhdmVkX2dyYW50X2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbTsKLSAgd2lyZSAgICBbIDIwOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYWxsZ3JhbnRzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hbGxvd19uZXdfYXJiX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hbnlfY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hcmJfY291bnRlcl9lbmFibGU7Ci0gIHJlZyAgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hcmJfc2hhcmVfc2V0X3ZhbHVlczsKLSAgcmVnICAgICBbICAyOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9iZWdpbnNfeGZlcjsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYnVyc3Rjb3VudF9maWZvX2VtcHR5OwotICB3aXJlICAgIFsgMjI6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ieXRlYWRkcmVzczsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgcmVnICAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fY3VycmVudF9idXJzdDsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fY3VycmVudF9idXJzdF9taW51c19vbmU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9lbmRfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZ3JhbnRfdmVjdG9yOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9pbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGU7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2xvYWRfZmlmbzsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fbWFzdGVyX3FyZXFfdmVjdG9yOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9tb3ZlX29uX3RvX25leHRfdHJhbnNhY3Rpb247Ci0gIHdpcmUgICAgWyAgMjogMF0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX25leHRfYmJ0X2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX25leHRfYnVyc3RfY291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHM7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYTsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NlbGVjdGVkX2J1cnN0Y291bnQ7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0OwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV90cmFuc2FjdGlvbl9idXJzdF9jb3VudDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRzX2Zvcl93cml0ZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dyaXRlZGF0YTsKLSAgcmVnICAgICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfcmVhc29uc190b193YWl0OwotICByZWcgICAgICAgICAgICAgIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnM7Ci0gIHdpcmUgICAgICAgICAgICAgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGluX2Ffd3JpdGVfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgcDBfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2xvYWRfZmlmbzsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0X2Zvcl9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fY291bnRlcjsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZDFfcmVhc29uc190b193YWl0IDw9IH5jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2JlZ2luc194ZmVyID0gfmQxX3JlYXNvbnNfdG9fd2FpdCAmICgoY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSkpOwotICAvL2Fzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkZGF0YSBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWRkYXRhOwotCi0gIGFzc2lnbiBjcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtID0gKHtjcHVfZGF0YV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZVsyNiA6IDIxXSAsIDIxJ2IwfSA9PSAyNydoNjAwMDAwMCkgJiAoY3B1X2RhdGFfbWFzdGVyX3JlYWQgfCBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpOwotICAvL2Fzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93YWl0cmVxdWVzdCBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0OwotCi0gIC8vYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgPSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgPSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciBzZXQgdmFsdWVzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FyYl9zaGFyZV9zZXRfdmFsdWVzID0gKGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSk/ICgoKGNwdV9kYXRhX21hc3Rlcl93cml0ZSkgPyBjcHVfZGF0YV9tYXN0ZXJfYnVyc3Rjb3VudCA6IDEpKSA6Ci0gICAgMTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzID0gMDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50IG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50ID0gY3B1X2RhdGFfbWFzdGVyX3NhdmVkX2dyYW50X2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZSA9IGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9maXJzdHRyYW5zZmVyID8gKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hcmJfc2hhcmVfc2V0X3ZhbHVlcyAtIDEpIDogfGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciA/IChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgLSAxKSA6IDA7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYWxsZ3JhbnRzIGFsbCBzbGF2ZSBncmFudHMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYWxsZ3JhbnRzID0gfGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ncmFudF92ZWN0b3I7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZW5kX3hmZXIgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9lbmRfeGZlciA9IH4oY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRzX2Zvcl93cml0ZSk7Ci0KLSAgLy9lbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSBhcmIgc2hhcmUgY291bnRlciBlbmFibGUgdGVybSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtID0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2VuZF94ZmVyICYgKH5jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCB8IGluX2FfcmVhZF9jeWNsZSB8IGluX2Ffd3JpdGVfY3ljbGUpOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIGFyYml0cmF0aW9uIGNvdW50ZXIgZW5hYmxlLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FyYl9jb3VudGVyX2VuYWJsZSA9IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSAmIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hbGxncmFudHMpIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtICYgfmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciBjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hcmJfY291bnRlcl9lbmFibGUpCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIDw9IGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSAwOwotICAgICAgZWxzZSBpZiAoKHxjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fbWFzdGVyX3FyZXFfdmVjdG9yICYgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0pIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtICYgfmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKSkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSB8Y3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gICAgZW5kCi0KLQotICAvL2NwdS9kYXRhX21hc3RlciBjdXN0b21fZG1hX2J1cnN0XzAvdXBzdHJlYW0gYXJiaXRlcmxvY2ssIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjcHVfZGF0YV9tYXN0ZXJfYXJiaXRlcmxvY2sgPSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGNwdV9kYXRhX21hc3Rlcl9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgc2xhdmUgZW5hYmxlcyBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgPSB8Y3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0KLSAgLy9jcHUvZGF0YV9tYXN0ZXIgY3VzdG9tX2RtYV9idXJzdF8wL3Vwc3RyZWFtIGFyYml0ZXJsb2NrMiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9hcmJpdGVybG9jazIgPSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgJiBjcHVfZGF0YV9tYXN0ZXJfY29udGludWVyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FueV9jb250aW51ZXJlcXVlc3QgYXQgbGVhc3Qgb25lIG1hc3RlciBjb250aW51ZXMgcmVxdWVzdGluZywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hbnlfY29udGludWVyZXF1ZXN0ID0gMTsKLQotICAvL2NwdV9kYXRhX21hc3Rlcl9jb250aW51ZXJlcXVlc3QgY29udGludWVkIHJlcXVlc3QsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjcHVfZGF0YV9tYXN0ZXJfY29udGludWVyZXF1ZXN0ID0gMTsKLQotICBhc3NpZ24gY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSA9IGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0gJiB+KChjcHVfZGF0YV9tYXN0ZXJfcmVhZCAmICgoY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlciAhPSAwKSB8ICgxIDwgY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlcikgfCAofGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyKSB8ICh8Y3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIpKSkpOwotICAvL3VuaXF1ZSBuYW1lIGZvciBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbiA9IGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0ICYgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2xvYWRfZmlmbzsKLQotICAvL3RoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYnVyc3Rjb3VudCBmb3IgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NlbGVjdGVkX2J1cnN0Y291bnQgPSAoY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtKT8gY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQgOgotICAgIDE7Ci0KLSAgLy9idXJzdGNvdW50X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9maWZvX3dpdGhfcmVnaXN0ZXJlZF9vdXRwdXRzCi0gIGJ1cnN0Y291bnRfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX21vZHVsZSBidXJzdGNvdW50X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbQotICAgICgKLSAgICAgIC5jbGVhcl9maWZvICAgICAgICAgICAoMSdiMCksCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgKGNsayksCi0gICAgICAuZGF0YV9pbiAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9zZWxlY3RlZF9idXJzdGNvdW50KSwKLSAgICAgIC5kYXRhX291dCAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3RyYW5zYWN0aW9uX2J1cnN0X2NvdW50KSwKLSAgICAgIC5lbXB0eSAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eSksCi0gICAgICAuZmlmb19jb250YWluc19vbmVzX24gKCksCi0gICAgICAuZnVsbCAgICAgICAgICAgICAgICAgKCksCi0gICAgICAucmVhZCAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0KSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAocmVzZXRfbiksCi0gICAgICAuc3luY19yZXNldCAgICAgICAgICAgKDEnYjApLAotICAgICAgLndyaXRlICAgICAgICAgICAgICAgIChpbl9hX3JlYWRfY3ljbGUgJiB+Y3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkICYgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2xvYWRfZmlmbyAmIH4oY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QgJiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYnVyc3Rjb3VudF9maWZvX2VtcHR5KSkKLSAgICApOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtIGN1cnJlbnQgYnVyc3QgbWludXMgb25lLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3RfbWludXNfb25lID0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3QgLSAxOwotCi0gIC8vd2hhdCB0byBsb2FkIGluIGN1cnJlbnRfYnVyc3QsIGZvciBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fbmV4dF9idXJzdF9jb3VudCA9ICgoKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQpICYgfmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9sb2FkX2ZpZm8pKT8gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NlbGVjdGVkX2J1cnN0Y291bnQgOgotICAgICgoaW5fYV9yZWFkX2N5Y2xlICYgfmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93YWl0c19mb3JfcmVhZCAmIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0ICYgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eSkpPyBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2VsZWN0ZWRfYnVyc3Rjb3VudCA6Ci0gICAgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0KT8gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3RyYW5zYWN0aW9uX2J1cnN0X2NvdW50IDoKLSAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fY3VycmVudF9idXJzdF9taW51c19vbmU7Ci0KLSAgLy90aGUgY3VycmVudCBidXJzdCBjb3VudCBmb3IgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtLCB0byBiZSBkZWNyZW1lbnRlZCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3QgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgfCAofmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9sb2FkX2ZpZm8gJiAoaW5fYV9yZWFkX2N5Y2xlICYgfmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93YWl0c19mb3JfcmVhZCkpKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9jdXJyZW50X2J1cnN0IDw9IGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9uZXh0X2J1cnN0X2NvdW50OwotICAgIGVuZAotCi0KLSAgLy9hIDEgb3IgYnVyc3Rjb3VudCBmaWZvIGVtcHR5LCB0byBpbml0aWFsaXplIHRoZSBjb3VudGVyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2xvYWRfZmlmbyA9ICh+Y3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2xvYWRfZmlmbyk/IDEgOgotICAgICgoKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQpICYgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2xvYWRfZmlmbykpPyAxIDoKLSAgICB+Y3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eTsKLQotICAvL3doZXRoZXIgdG8gbG9hZCBkaXJlY3RseSB0byB0aGUgY291bnRlciBvciB0byB0aGUgZmlmbywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2xvYWRfZmlmbyA8PSAwOwotICAgICAgZWxzZSBpZiAoKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQpICYgfmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9sb2FkX2ZpZm8gfCBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fbG9hZF9maWZvIDw9IHAwX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9sb2FkX2ZpZm87Ci0gICAgZW5kCi0KLQotICAvL3RoZSBsYXN0IGN5Y2xlIGluIHRoZSBidXJzdCBmb3IgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QgPSB+KHxjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fY3VycmVudF9idXJzdF9taW51c19vbmUpICYgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYTsKLQotICAvL3Jkdl9maWZvX2Zvcl9jcHVfZGF0YV9tYXN0ZXJfdG9fY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2ZpZm9fd2l0aF9yZWdpc3RlcmVkX291dHB1dHMKLSAgcmR2X2ZpZm9fZm9yX2NwdV9kYXRhX21hc3Rlcl90b19jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fbW9kdWxlIHJkdl9maWZvX2Zvcl9jcHVfZGF0YV9tYXN0ZXJfdG9fY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtCi0gICAgKAotICAgICAgLmNsZWFyX2ZpZm8gICAgICAgICAgICgxJ2IwKSwKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAoY2xrKSwKLSAgICAgIC5kYXRhX2luICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtKSwKLSAgICAgIC5kYXRhX291dCAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3Jkdl9maWZvX291dHB1dF9mcm9tX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSksCi0gICAgICAuZW1wdHkgICAgICAgICAgICAgICAgKCksCi0gICAgICAuZmlmb19jb250YWluc19vbmVzX24gKGNwdV9kYXRhX21hc3Rlcl9yZHZfZmlmb19lbXB0eV9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0pLAotICAgICAgLmZ1bGwgICAgICAgICAgICAgICAgICgpLAotICAgICAgLnJlYWQgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAocmVzZXRfbiksCi0gICAgICAuc3luY19yZXNldCAgICAgICAgICAgKDEnYjApLAotICAgICAgLndyaXRlICAgICAgICAgICAgICAgIChpbl9hX3JlYWRfY3ljbGUgJiB+Y3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkKQotICAgICk7Ci0KLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyID0gfmNwdV9kYXRhX21hc3Rlcl9yZHZfZmlmb19lbXB0eV9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW07Ci0gIC8vbG9jYWwgcmVhZGRhdGF2YWxpZCBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtID0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93cml0ZWRhdGEgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dyaXRlZGF0YSA9IGNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGE7Ci0KLSAgLy9ieXRlYWRkcmVzcyBtdXggZm9yIGN1c3RvbV9kbWFfYnVyc3RfMC91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ieXRlYWRkcmVzcyA9IGNwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotCi0gIC8vbWFzdGVyIGlzIGFsd2F5cyBncmFudGVkIHdoZW4gcmVxdWVzdGVkCi0gIGFzc2lnbiBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0gPSBjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtOwotCi0gIC8vY3B1L2RhdGFfbWFzdGVyIHNhdmVkLWdyYW50IGN1c3RvbV9kbWFfYnVyc3RfMC91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9zYXZlZF9ncmFudF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0gPSBjcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtOwotCi0gIC8vYWxsb3cgbmV3IGFyYiBjeWNsZSBmb3IgY3VzdG9tX2RtYV9idXJzdF8wL3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FsbG93X25ld19hcmJfY3ljbGUgPSAxOwotCi0gIC8vcGxhY2Vob2xkZXIgY2hvc2VuIG1hc3RlcgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2dyYW50X3ZlY3RvciA9IDE7Ci0KLSAgLy9wbGFjZWhvbGRlciB2ZWN0b3Igb2YgbWFzdGVyIHF1YWxpZmllZC1yZXF1ZXN0cwotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX21hc3Rlcl9xcmVxX3ZlY3RvciA9IDE7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9maXJzdHRyYW5zZmVyID0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2JlZ2luc194ZmVyID8gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3VucmVnX2ZpcnN0dHJhbnNmZXIgOiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVnX2ZpcnN0dHJhbnNmZXI7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fdW5yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV91bnJlZ19maXJzdHRyYW5zZmVyID0gfihjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hbnlfY29udGludWVyZXF1ZXN0KTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlZ19maXJzdHRyYW5zZmVyIDw9IDEnYjE7Ci0gICAgICBlbHNlIGlmIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYmVnaW5zX3hmZXIpCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlZ19maXJzdHRyYW5zZmVyIDw9IGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV91bnJlZ19maXJzdHRyYW5zZmVyOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fbmV4dF9iYnRfYnVyc3Rjb3VudCBuZXh0X2JidF9idXJzdGNvdW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX25leHRfYmJ0X2J1cnN0Y291bnQgPSAoKCgoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dyaXRlKSAmJiAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXIgPT0gMCkpKSk/IChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYnVyc3Rjb3VudCAtIDEpIDoKLSAgICAoKCgoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWQpICYmIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciA9PSAwKSkpKT8gMCA6Ci0gICAgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9iYnRfYnVyc3Rjb3VudGVyIC0gMSk7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciBiYnRfYnVyc3Rjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciA8PSAwOwotICAgICAgZWxzZSBpZiAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2JlZ2luc194ZmVyKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9iYnRfYnVyc3Rjb3VudGVyIDw9IGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9uZXh0X2JidF9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsIGJlZ2luIGJ1cnN0IHRyYW5zZmVyLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCA9IGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9iZWdpbnNfeGZlciAmIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciA9PSAwKTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZCA9IGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSAmIGNwdV9kYXRhX21hc3Rlcl9yZWFkOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dyaXRlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd3JpdGUgPSBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0gJiBjcHVfZGF0YV9tYXN0ZXJfd3JpdGU7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYWRkcmVzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYWRkcmVzcyA9IGNwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotCi0gIC8vZDFfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2VuZF94ZmVyIHJlZ2lzdGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZW5kX3hmZXIgPD0gMTsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9lbmRfeGZlciA8PSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93YWl0c19mb3JfcmVhZCBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkID0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSAmIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSA9IGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSAmIGNwdV9kYXRhX21hc3Rlcl9yZWFkOwotCi0gIC8vaW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBpbl9hX3JlYWRfY3ljbGUgPSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1faW5fYV9yZWFkX2N5Y2xlOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRzX2Zvcl93cml0ZSBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRzX2Zvcl93cml0ZSA9IGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9pbl9hX3dyaXRlX2N5Y2xlICYgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1faW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGUgPSBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0gJiBjcHVfZGF0YV9tYXN0ZXJfd3JpdGU7Ci0KLSAgLy9pbl9hX3dyaXRlX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBpbl9hX3dyaXRlX2N5Y2xlID0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGU7Ci0KLSAgYXNzaWduIHdhaXRfZm9yX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9jb3VudGVyID0gMDsKLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYnl0ZWVuYWJsZSBieXRlIGVuYWJsZSBwb3J0IG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ieXRlZW5hYmxlID0gKGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSk/IGNwdV9kYXRhX21hc3Rlcl9ieXRlZW5hYmxlIDoKLSAgICAtMTsKLQotICAvL2J1cnN0Y291bnQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2J1cnN0Y291bnQgPSAoY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtKT8gY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQgOgotICAgIDE7Ci0KLSAgLy9kZWJ1Z2FjY2VzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZGVidWdhY2Nlc3MgPSAoY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtKT8gY3B1X2RhdGFfbWFzdGVyX2RlYnVnYWNjZXNzIDoKLSAgICAwOwotCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wL3Vwc3RyZWFtIGVuYWJsZSBub24temVybyBhc3NlcnRpb25zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDEnYjE7Ci0gICAgZW5kCi0KLQotICAvL2NwdS9kYXRhX21hc3RlciBub24temVybyBidXJzdGNvdW50IGFzc2VydGlvbiwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSAmJiAoY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQgPT0gMCkgJiYgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucykKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3B1L2RhdGFfbWFzdGVyIGRyb3ZlIDAgb24gaXRzICdidXJzdGNvdW50JyBwb3J0IHdoaWxlIGFjY2Vzc2luZyBzbGF2ZSBjdXN0b21fZG1hX2J1cnN0XzAvdXBzdHJlYW0iLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYXJiaXRyYXRvciAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2dyYW50ZWRfZXh0X3NzcmFtX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZXh0X3NzcmFtX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZXF1ZXN0c19leHRfc3NyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX2V4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jb21pbmdfZXh0X3NzcmFtX2J1c19kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3Jlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93YWl0cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAyMDogMF0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZTsKLSAgb3V0cHV0ICBbICAyOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIG91dHB1dCAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZGRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZXNldF9uOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbIDIwOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ncmFudGVkX2V4dF9zc3JhbV9zMTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlcXVlc3RzX2V4dF9zc3JhbV9zMTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgZDFfZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZW5kX3hmZXI7Ci0gIGlucHV0ICAgWyAzMTogMF0gaW5jb21pbmdfZXh0X3NzcmFtX2J1c19kYXRhOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0KLSAgcmVnICAgICAgICAgICAgICBhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lOwotICByZWcgICAgIFsgMjA6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3NfbGFzdF90aW1lOwotICB3aXJlICAgIFsgMjA6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnVyc3Rjb3VudF9sYXN0X3RpbWU7Ci0gIHJlZyAgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZV9sYXN0X3RpbWU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1faXNfZ3JhbnRlZF9zb21lX3NsYXZlOwotICByZWcgICAgIFsgIDI6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZDsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2xhc3RfdGltZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3Jlc2V0X247Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcnVuOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlX2xhc3RfdGltZTsKLSAgcmVnICAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZWRhdGFfbGFzdF90aW1lOwotICB3aXJlICAgIFsgIDI6IDBdIGxhdGVuY3lfbG9hZF92YWx1ZTsKLSAgd2lyZSAgICBbICAyOiAwXSBwMV9jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcHJlX2ZsdXNoX2N1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgcl8wOwotICAvL3JfMCBtYXN0ZXJfcnVuIGNhc2NhZGVkIHdhaXQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHJfMCA9IDEgJiAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZXh0X3NzcmFtX3MxIHwgfmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlcXVlc3RzX2V4dF9zc3JhbV9zMSkgJiAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZ3JhbnRlZF9leHRfc3NyYW1fczEgfCB+Y3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZXh0X3NzcmFtX3MxKSAmICgofmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2V4dF9zc3JhbV9zMSB8IH4oY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlKSB8ICgxICYgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWQgfCBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZSkpKSkgJiAoKH5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczEgfCB+KGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWQgfCBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZSkgfCAoMSAmIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd3JpdGUpKSkpOwotCi0gIC8vY2FzY2FkZWQgd2FpdCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcnVuID0gcl8wOwotCi0gIC8vb3B0aW1pemUgc2VsZWN0LWxvZ2ljIGJ5IHBhc3Npbmcgb25seSB0aG9zZSBhZGRyZXNzIGJpdHMgd2hpY2ggbWF0dGVyLgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSA9IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3M7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgPD0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZCAmIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3J1biAmIH5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9pc19ncmFudGVkX3NvbWVfc2xhdmU7Ci0gICAgZW5kCi0KLQotICAvL3NvbWUgc2xhdmUgaXMgZ2V0dGluZyBzZWxlY3RlZCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2lzX2dyYW50ZWRfc29tZV9zbGF2ZSA9IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2dyYW50ZWRfZXh0X3NzcmFtX3MxOwotCi0gIC8vbGF0ZW50IHNsYXZlIHJlYWQgZGF0YSB2YWxpZHMgd2hpY2ggbWF5IGJlIGZsdXNoZWQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwcmVfZmx1c2hfY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCA9IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczE7Ci0KLSAgLy9sYXRlbnQgc2xhdmUgcmVhZCBkYXRhIHZhbGlkIHdoaWNoIGlzIG5vdCBmbHVzaGVkLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCA9IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkIHwKLSAgICBwcmVfZmx1c2hfY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMC9kb3duc3RyZWFtIHJlYWRkYXRhIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRkYXRhID0gaW5jb21pbmdfZXh0X3NzcmFtX2J1c19kYXRhOwotCi0gIC8vYWN0dWFsIHdhaXRyZXF1ZXN0IHBvcnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93YWl0cmVxdWVzdCA9IH5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ydW47Ci0KLSAgLy9sYXRlbnQgbWF4IGNvdW50ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyIDw9IHAxX2N1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgICBlbmQKLQotCi0gIC8vbGF0ZW5jeSBjb3VudGVyIGxvYWQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyID0gKChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ydW4gJiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkKSk/IGxhdGVuY3lfbG9hZF92YWx1ZSA6Ci0gICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcik/IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciAtIDEgOgotICAgIDA7Ci0KLSAgLy9yZWFkIGxhdGVuY3kgbG9hZCB2YWx1ZXMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBsYXRlbmN5X2xvYWRfdmFsdWUgPSB7MyB7Y3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVxdWVzdHNfZXh0X3NzcmFtX3MxfX0gJiA0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVzZXRfbiBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVzZXRfbiA9IHJlc2V0X247Ci0KLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hZGRyZXNzIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYWRkcmVzc19sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3NfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3M7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMC9kb3duc3RyZWFtIHdhaXRlZCBsYXN0IHRpbWUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd2FpdHJlcXVlc3QgJiAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlKTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYWRkcmVzcyBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3MgIT0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYWRkcmVzc19sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hZGRyZXNzIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J1cnN0Y291bnRfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9idXJzdGNvdW50X2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9idXJzdGNvdW50IG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCAhPSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9idXJzdGNvdW50X2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J1cnN0Y291bnQgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ieXRlZW5hYmxlIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J5dGVlbmFibGVfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J5dGVlbmFibGUgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ieXRlZW5hYmxlICE9IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J5dGVlbmFibGVfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWQgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZDsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZCBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWQgIT0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd3JpdGUgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd3JpdGUgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZSAhPSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZV9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZSBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlZGF0YSBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlZGF0YV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlZGF0YV9sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZWRhdGEgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZWRhdGEgIT0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd3JpdGVkYXRhX2xhc3RfdGltZSkgJiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd3JpdGVkYXRhIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGJ1cnN0Y291bnRfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX21vZHVsZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcl9maWZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bmNfcmVzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9vdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbICAzOiAwXSBkYXRhX291dDsKLSAgb3V0cHV0ICAgICAgICAgICBlbXB0eTsKLSAgb3V0cHV0ICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbjsKLSAgb3V0cHV0ICAgICAgICAgICBmdWxsOwotICBpbnB1dCAgICAgICAgICAgIGNsZWFyX2ZpZm87Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgIDM6IDBdIGRhdGFfaW47Ci0gIGlucHV0ICAgICAgICAgICAgcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotICBpbnB1dCAgICAgICAgICAgIHN5bmNfcmVzZXQ7Ci0gIGlucHV0ICAgICAgICAgICAgd3JpdGU7Ci0KLSAgd2lyZSAgICBbICAzOiAwXSBkYXRhX291dDsKLSAgd2lyZSAgICAgICAgICAgICBlbXB0eTsKLSAgcmVnICAgICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbjsKLSAgd2lyZSAgICAgICAgICAgICBmdWxsOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8yOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzQ7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF81OwotICB3aXJlICAgICAgICAgICAgIGZ1bGxfNjsKLSAgcmVnICAgICBbICAzOiAwXSBob3dfbWFueV9vbmVzOwotICB3aXJlICAgIFsgIDM6IDBdIG9uZV9jb3VudF9taW51c19vbmU7Ci0gIHdpcmUgICAgWyAgMzogMF0gb25lX2NvdW50X3BsdXNfb25lOwotICB3aXJlICAgICAgICAgICAgIHAwX2Z1bGxfMDsKLSAgd2lyZSAgICBbICAzOiAwXSBwMF9zdGFnZV8wOwotICB3aXJlICAgICAgICAgICAgIHAxX2Z1bGxfMTsKLSAgd2lyZSAgICBbICAzOiAwXSBwMV9zdGFnZV8xOwotICB3aXJlICAgICAgICAgICAgIHAyX2Z1bGxfMjsKLSAgd2lyZSAgICBbICAzOiAwXSBwMl9zdGFnZV8yOwotICB3aXJlICAgICAgICAgICAgIHAzX2Z1bGxfMzsKLSAgd2lyZSAgICBbICAzOiAwXSBwM19zdGFnZV8zOwotICB3aXJlICAgICAgICAgICAgIHA0X2Z1bGxfNDsKLSAgd2lyZSAgICBbICAzOiAwXSBwNF9zdGFnZV80OwotICB3aXJlICAgICAgICAgICAgIHA1X2Z1bGxfNTsKLSAgd2lyZSAgICBbICAzOiAwXSBwNV9zdGFnZV81OwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzA7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV8yOwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzM7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfNDsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV81OwotICB3aXJlICAgIFsgIDM6IDBdIHVwZGF0ZWRfb25lX2NvdW50OwotICBhc3NpZ24gZGF0YV9vdXQgPSBzdGFnZV8wOwotICBhc3NpZ24gZnVsbCA9IGZ1bGxfNTsKLSAgYXNzaWduIGVtcHR5ID0gIWZ1bGxfMDsKLSAgYXNzaWduIGZ1bGxfNiA9IDA7Ci0gIC8vZGF0YV81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfc3RhZ2VfNSA9ICgoZnVsbF82ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBkYXRhX2luOwotCi0gIC8vZGF0YV9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzUgJiAhKChmdWxsXzYgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzUgPD0gcDVfc3RhZ2VfNTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfZnVsbF81ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF80IDoKLSAgICAwOwotCi0gIC8vY29udHJvbF9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF81IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNSA8PSBwNV9mdWxsXzU7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA0X3N0YWdlXzQgPSAoKGZ1bGxfNSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNTsKLQotICAvL2RhdGFfcmVnXzQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzQpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF80ICYgISgoZnVsbF81ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV80IDw9IHA0X3N0YWdlXzQ7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA0X2Z1bGxfNCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMyA6Ci0gICAgZnVsbF81OwotCi0gIC8vY29udHJvbF9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF80IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNCA8PSBwNF9mdWxsXzQ7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAzX3N0YWdlXzMgPSAoKGZ1bGxfNCAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNDsKLQotICAvL2RhdGFfcmVnXzMsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzMpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8zICYgISgoZnVsbF80ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8zIDw9IHAzX3N0YWdlXzM7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAzX2Z1bGxfMyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMiA6Ci0gICAgZnVsbF80OwotCi0gIC8vY29udHJvbF9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8zIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMyA8PSBwM19mdWxsXzM7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAyX3N0YWdlXzIgPSAoKGZ1bGxfMyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMzsKLQotICAvL2RhdGFfcmVnXzIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzIpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8yICYgISgoZnVsbF8zID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8yIDw9IHAyX3N0YWdlXzI7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAyX2Z1bGxfMiA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMSA6Ci0gICAgZnVsbF8zOwotCi0gIC8vY29udHJvbF9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8yIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMiA8PSBwMl9mdWxsXzI7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX3N0YWdlXzEgPSAoKGZ1bGxfMiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMjsKLQotICAvL2RhdGFfcmVnXzEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xICYgISgoZnVsbF8yID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xIDw9IHAxX3N0YWdlXzE7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX2Z1bGxfMSA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMCA6Ci0gICAgZnVsbF8yOwotCi0gIC8vY29udHJvbF9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMSA8PSBwMV9mdWxsXzE7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAwX3N0YWdlXzAgPSAoKGZ1bGxfMSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTsKLQotICAvL2RhdGFfcmVnXzAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzAgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8wICYgISgoZnVsbF8xID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8wIDw9IHAwX3N0YWdlXzA7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAwX2Z1bGxfMCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IDEgOgotICAgIGZ1bGxfMTsKLQotICAvL2NvbnRyb2xfcmVnXzAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8gJiB+d3JpdGUpCi0gICAgICAgICAgICAgIGZ1bGxfMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzAgPD0gcDBfZnVsbF8wOwotICAgIGVuZAotCi0KLSAgYXNzaWduIG9uZV9jb3VudF9wbHVzX29uZSA9IGhvd19tYW55X29uZXMgKyAxOwotICBhc3NpZ24gb25lX2NvdW50X21pbnVzX29uZSA9IGhvd19tYW55X29uZXMgLSAxOwotICAvL3VwZGF0ZWRfb25lX2NvdW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gdXBkYXRlZF9vbmVfY291bnQgPSAoKCgoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQpICYgIXdyaXRlKSkpPyAwIDoKLSAgICAoKCgoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQpICYgd3JpdGUpKSk/IHxkYXRhX2luIDoKLSAgICAoKHJlYWQgJiAofGRhdGFfaW4pICYgd3JpdGUgJiAofHN0YWdlXzApKSk/IGhvd19tYW55X29uZXMgOgotICAgICgod3JpdGUgJiAofGRhdGFfaW4pKSk/IG9uZV9jb3VudF9wbHVzX29uZSA6Ci0gICAgKChyZWFkICYgKHxzdGFnZV8wKSkpPyBvbmVfY291bnRfbWludXNfb25lIDoKLSAgICBob3dfbWFueV9vbmVzOwotCi0gIC8vY291bnRzIGhvdyBtYW55IG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGhvd19tYW55X29uZXMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8IHdyaXRlKQotICAgICAgICAgIGhvd19tYW55X29uZXMgPD0gdXBkYXRlZF9vbmVfY291bnQ7Ci0gICAgZW5kCi0KLQotICAvL3RoaXMgZmlmbyBjb250YWlucyBvbmVzIGluIHRoZSBkYXRhIHBpcGVsaW5lLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSAxOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgZmlmb19jb250YWluc19vbmVzX24gPD0gfih8dXBkYXRlZF9vbmVfY291bnQpOwotICAgIGVuZAotCi0KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIHJkdl9maWZvX2Zvcl9jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3RvX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9tb2R1bGUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcl9maWZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luY19yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmb19jb250YWluc19vbmVzX24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBkYXRhX291dDsKLSAgb3V0cHV0ICAgICAgICAgICBlbXB0eTsKLSAgb3V0cHV0ICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbjsKLSAgb3V0cHV0ICAgICAgICAgICBmdWxsOwotICBpbnB1dCAgICAgICAgICAgIGNsZWFyX2ZpZm87Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIGRhdGFfaW47Ci0gIGlucHV0ICAgICAgICAgICAgcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotICBpbnB1dCAgICAgICAgICAgIHN5bmNfcmVzZXQ7Ci0gIGlucHV0ICAgICAgICAgICAgd3JpdGU7Ci0KLSAgd2lyZSAgICAgICAgICAgICBkYXRhX291dDsKLSAgd2lyZSAgICAgICAgICAgICBlbXB0eTsKLSAgcmVnICAgICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbjsKLSAgd2lyZSAgICAgICAgICAgICBmdWxsOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8yOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzQ7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF81OwotICB3aXJlICAgICAgICAgICAgIGZ1bGxfNjsKLSAgcmVnICAgICBbICAzOiAwXSBob3dfbWFueV9vbmVzOwotICB3aXJlICAgIFsgIDM6IDBdIG9uZV9jb3VudF9taW51c19vbmU7Ci0gIHdpcmUgICAgWyAgMzogMF0gb25lX2NvdW50X3BsdXNfb25lOwotICB3aXJlICAgICAgICAgICAgIHAwX2Z1bGxfMDsKLSAgd2lyZSAgICAgICAgICAgICBwMF9zdGFnZV8wOwotICB3aXJlICAgICAgICAgICAgIHAxX2Z1bGxfMTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9zdGFnZV8xOwotICB3aXJlICAgICAgICAgICAgIHAyX2Z1bGxfMjsKLSAgd2lyZSAgICAgICAgICAgICBwMl9zdGFnZV8yOwotICB3aXJlICAgICAgICAgICAgIHAzX2Z1bGxfMzsKLSAgd2lyZSAgICAgICAgICAgICBwM19zdGFnZV8zOwotICB3aXJlICAgICAgICAgICAgIHA0X2Z1bGxfNDsKLSAgd2lyZSAgICAgICAgICAgICBwNF9zdGFnZV80OwotICB3aXJlICAgICAgICAgICAgIHA1X2Z1bGxfNTsKLSAgd2lyZSAgICAgICAgICAgICBwNV9zdGFnZV81OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzA7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8yOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzM7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfNDsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV81OwotICB3aXJlICAgIFsgIDM6IDBdIHVwZGF0ZWRfb25lX2NvdW50OwotICBhc3NpZ24gZGF0YV9vdXQgPSBzdGFnZV8wOwotICBhc3NpZ24gZnVsbCA9IGZ1bGxfNTsKLSAgYXNzaWduIGVtcHR5ID0gIWZ1bGxfMDsKLSAgYXNzaWduIGZ1bGxfNiA9IDA7Ci0gIC8vZGF0YV81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfc3RhZ2VfNSA9ICgoZnVsbF82ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBkYXRhX2luOwotCi0gIC8vZGF0YV9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzUgJiAhKChmdWxsXzYgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzUgPD0gcDVfc3RhZ2VfNTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfZnVsbF81ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF80IDoKLSAgICAwOwotCi0gIC8vY29udHJvbF9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF81IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNSA8PSBwNV9mdWxsXzU7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA0X3N0YWdlXzQgPSAoKGZ1bGxfNSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNTsKLQotICAvL2RhdGFfcmVnXzQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzQpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF80ICYgISgoZnVsbF81ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV80IDw9IHA0X3N0YWdlXzQ7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA0X2Z1bGxfNCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMyA6Ci0gICAgZnVsbF81OwotCi0gIC8vY29udHJvbF9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF80IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNCA8PSBwNF9mdWxsXzQ7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAzX3N0YWdlXzMgPSAoKGZ1bGxfNCAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNDsKLQotICAvL2RhdGFfcmVnXzMsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzMpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8zICYgISgoZnVsbF80ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8zIDw9IHAzX3N0YWdlXzM7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAzX2Z1bGxfMyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMiA6Ci0gICAgZnVsbF80OwotCi0gIC8vY29udHJvbF9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8zIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMyA8PSBwM19mdWxsXzM7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAyX3N0YWdlXzIgPSAoKGZ1bGxfMyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMzsKLQotICAvL2RhdGFfcmVnXzIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzIpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8yICYgISgoZnVsbF8zID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8yIDw9IHAyX3N0YWdlXzI7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAyX2Z1bGxfMiA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMSA6Ci0gICAgZnVsbF8zOwotCi0gIC8vY29udHJvbF9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8yIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMiA8PSBwMl9mdWxsXzI7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX3N0YWdlXzEgPSAoKGZ1bGxfMiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMjsKLQotICAvL2RhdGFfcmVnXzEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xICYgISgoZnVsbF8yID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xIDw9IHAxX3N0YWdlXzE7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX2Z1bGxfMSA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMCA6Ci0gICAgZnVsbF8yOwotCi0gIC8vY29udHJvbF9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMSA8PSBwMV9mdWxsXzE7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAwX3N0YWdlXzAgPSAoKGZ1bGxfMSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTsKLQotICAvL2RhdGFfcmVnXzAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzAgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8wICYgISgoZnVsbF8xID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8wIDw9IHAwX3N0YWdlXzA7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAwX2Z1bGxfMCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IDEgOgotICAgIGZ1bGxfMTsKLQotICAvL2NvbnRyb2xfcmVnXzAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8gJiB+d3JpdGUpCi0gICAgICAgICAgICAgIGZ1bGxfMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzAgPD0gcDBfZnVsbF8wOwotICAgIGVuZAotCi0KLSAgYXNzaWduIG9uZV9jb3VudF9wbHVzX29uZSA9IGhvd19tYW55X29uZXMgKyAxOwotICBhc3NpZ24gb25lX2NvdW50X21pbnVzX29uZSA9IGhvd19tYW55X29uZXMgLSAxOwotICAvL3VwZGF0ZWRfb25lX2NvdW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gdXBkYXRlZF9vbmVfY291bnQgPSAoKCgoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQpICYgIXdyaXRlKSkpPyAwIDoKLSAgICAoKCgoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQpICYgd3JpdGUpKSk/IHxkYXRhX2luIDoKLSAgICAoKHJlYWQgJiAofGRhdGFfaW4pICYgd3JpdGUgJiAofHN0YWdlXzApKSk/IGhvd19tYW55X29uZXMgOgotICAgICgod3JpdGUgJiAofGRhdGFfaW4pKSk/IG9uZV9jb3VudF9wbHVzX29uZSA6Ci0gICAgKChyZWFkICYgKHxzdGFnZV8wKSkpPyBvbmVfY291bnRfbWludXNfb25lIDoKLSAgICBob3dfbWFueV9vbmVzOwotCi0gIC8vY291bnRzIGhvdyBtYW55IG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGhvd19tYW55X29uZXMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8IHdyaXRlKQotICAgICAgICAgIGhvd19tYW55X29uZXMgPD0gdXBkYXRlZF9vbmVfY291bnQ7Ci0gICAgZW5kCi0KLQotICAvL3RoaXMgZmlmbyBjb250YWlucyBvbmVzIGluIHRoZSBkYXRhIHBpcGVsaW5lLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSAxOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgZmlmb19jb250YWluc19vbmVzX24gPD0gfih8dXBkYXRlZF9vbmVfY291bnQpOwotICAgIGVuZAotCi0KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hcmJpdHJhdG9yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2J5dGVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2VuZF94ZmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbTsKLSAgb3V0cHV0ICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbTsKLSAgb3V0cHV0ICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW07Ci0gIG91dHB1dCAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtOwotICBvdXRwdXQgIFsgMTE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hZGRyZXNzOwotICBvdXRwdXQgIFsgMTM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9ieXRlYWRkcmVzczsKLSAgb3V0cHV0ICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3JlYWQ7Ci0gIG91dHB1dCAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dyaXRlOwotICBvdXRwdXQgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9lbmRfeGZlcjsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAyNjogMF0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotICBpbnB1dCAgIFsgIDM6IDBdIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYnVyc3Rjb3VudDsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2xhdGVuY3lfY291bnRlcjsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICBpbnB1dCAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9jb250aW51ZXJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3Jkdl9maWZvX2VtcHR5X2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3Jkdl9maWZvX291dHB1dF9mcm9tX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfc2F2ZWRfZ3JhbnRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtOwotICB3aXJlICAgIFsgMTE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hbGxncmFudHM7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FsbG93X25ld19hcmJfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FueV9jb250aW51ZXJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FyYl9jb3VudGVyX2VuYWJsZTsKLSAgcmVnICAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXI7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FyYl9zaGFyZV9zZXRfdmFsdWVzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9iZWdpbmJ1cnN0dHJhbnNmZXJfaW50ZXJuYWw7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2JlZ2luc194ZmVyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9idXJzdGNvdW50X2ZpZm9fZW1wdHk7Ci0gIHdpcmUgICAgWyAxMzogMF0gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2J5dGVhZGRyZXNzOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9ieXRlZW5hYmxlOwotICByZWcgICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9jdXJyZW50X2J1cnN0OwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9jdXJyZW50X2J1cnN0X21pbnVzX29uZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2VuZF94ZmVyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9ncmFudF92ZWN0b3I7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1faW5fYV93cml0ZV9jeWNsZTsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fbG9hZF9maWZvOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9tYXN0ZXJfcXJlcV92ZWN0b3I7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbjsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fbmV4dF9idXJzdF9jb3VudDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0czsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZDsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhOwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2VsZWN0ZWRfYnVyc3Rjb3VudDsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZTI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3Q7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3RyYW5zYWN0aW9uX2J1cnN0X2NvdW50OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV91bnJlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93YWl0c19mb3JfcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHNfZm9yX3dyaXRlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93cml0ZTsKLSAgcmVnICAgICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfcmVhc29uc190b193YWl0OwotICByZWcgICAgICAgICAgICAgIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnM7Ci0gIHdpcmUgICAgICAgICAgICAgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGluX2Ffd3JpdGVfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgcDBfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2xvYWRfZmlmbzsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0X2Zvcl9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fY291bnRlcjsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZDFfcmVhc29uc190b193YWl0IDw9IH5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2JlZ2luc194ZmVyID0gfmQxX3JlYXNvbnNfdG9fd2FpdCAmICgoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0pKTsKLSAgLy9hc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EgPSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGEgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YTsKLQotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0gPSAoKHtjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmVbMjYgOiAxMl0gLCAxMidiMH0gPT0gMjcnaDUwMDAwMDApICYgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZCkpICYgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkOwotICAvL2Fzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93YWl0cmVxdWVzdCBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0OwotCi0gIC8vYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgPSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgPSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciBzZXQgdmFsdWVzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FyYl9zaGFyZV9zZXRfdmFsdWVzID0gMTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzID0gMDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50IG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50ID0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9zYXZlZF9ncmFudF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW07Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWUgPSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZmlyc3R0cmFuc2ZlciA/IChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYXJiX3NoYXJlX3NldF92YWx1ZXMgLSAxKSA6IHxjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgPyAoY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIC0gMSkgOiAwOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FsbGdyYW50cyBhbGwgc2xhdmUgZ3JhbnRzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FsbGdyYW50cyA9IHxjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZ3JhbnRfdmVjdG9yOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2VuZF94ZmVyIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZW5kX3hmZXIgPSB+KGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93YWl0c19mb3JfcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93YWl0c19mb3Jfd3JpdGUpOwotCi0gIC8vZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0gYXJiIHNoYXJlIGNvdW50ZXIgZW5hYmxlIHRlcm0sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSA9IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9lbmRfeGZlciAmICh+Y3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgfCBpbl9hX3JlYWRfY3ljbGUgfCBpbl9hX3dyaXRlX2N5Y2xlKTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciBhcmJpdHJhdGlvbiBjb3VudGVyIGVuYWJsZSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hcmJfY291bnRlcl9lbmFibGUgPSAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0gJiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYWxsZ3JhbnRzKSB8IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSAmIH5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyk7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgY291bnRlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYXJiX2NvdW50ZXJfZW5hYmxlKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciA8PSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgc2xhdmUgZW5hYmxlcyBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKCh8Y3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX21hc3Rlcl9xcmVxX3ZlY3RvciAmIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtKSB8IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSAmIH5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cykpCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgPD0gfGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICAgIGVuZAotCi0KLSAgLy9jcHUvaW5zdHJ1Y3Rpb25fbWFzdGVyIGN1c3RvbV9kbWFfYnVyc3RfMS91cHN0cmVhbSBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYXJiaXRlcmxvY2sgPSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfY29udGludWVyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyIHNsYXZlIGVuYWJsZXMgYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyID0gfGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotCi0gIC8vY3B1L2luc3RydWN0aW9uX21hc3RlciBjdXN0b21fZG1hX2J1cnN0XzEvdXBzdHJlYW0gYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hcmJpdGVybG9jazIgPSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgJiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hbnlfY29udGludWVyZXF1ZXN0IGF0IGxlYXN0IG9uZSBtYXN0ZXIgY29udGludWVzIHJlcXVlc3RpbmcsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYW55X2NvbnRpbnVlcmVxdWVzdCA9IDE7Ci0KLSAgLy9jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfY29udGludWVyZXF1ZXN0ID0gMTsKLQotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0gPSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSAmIH4oKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZCAmICgoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIgIT0gMCkgfCAoMSA8IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyKSB8ICh8Y3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyKSkpKTsKLSAgLy91bmlxdWUgbmFtZSBmb3IgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9tb3ZlX29uX3RvX25leHRfdHJhbnNhY3Rpb24gPSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdCAmIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9sb2FkX2ZpZm87Ci0KLSAgLy90aGUgY3VycmVudGx5IHNlbGVjdGVkIGJ1cnN0Y291bnQgZm9yIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9zZWxlY3RlZF9idXJzdGNvdW50ID0gKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0pPyBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2J1cnN0Y291bnQgOgotICAgIDE7Ci0KLSAgLy9idXJzdGNvdW50X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9maWZvX3dpdGhfcmVnaXN0ZXJlZF9vdXRwdXRzCi0gIGJ1cnN0Y291bnRfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX21vZHVsZSBidXJzdGNvdW50X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbQotICAgICgKLSAgICAgIC5jbGVhcl9maWZvICAgICAgICAgICAoMSdiMCksCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgKGNsayksCi0gICAgICAuZGF0YV9pbiAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9zZWxlY3RlZF9idXJzdGNvdW50KSwKLSAgICAgIC5kYXRhX291dCAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3RyYW5zYWN0aW9uX2J1cnN0X2NvdW50KSwKLSAgICAgIC5lbXB0eSAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eSksCi0gICAgICAuZmlmb19jb250YWluc19vbmVzX24gKCksCi0gICAgICAuZnVsbCAgICAgICAgICAgICAgICAgKCksCi0gICAgICAucmVhZCAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0KSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAocmVzZXRfbiksCi0gICAgICAuc3luY19yZXNldCAgICAgICAgICAgKDEnYjApLAotICAgICAgLndyaXRlICAgICAgICAgICAgICAgIChpbl9hX3JlYWRfY3ljbGUgJiB+Y3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkICYgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2xvYWRfZmlmbyAmIH4oY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QgJiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYnVyc3Rjb3VudF9maWZvX2VtcHR5KSkKLSAgICApOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtIGN1cnJlbnQgYnVyc3QgbWludXMgb25lLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3RfbWludXNfb25lID0gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3QgLSAxOwotCi0gIC8vd2hhdCB0byBsb2FkIGluIGN1cnJlbnRfYnVyc3QsIGZvciBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fbmV4dF9idXJzdF9jb3VudCA9ICgoKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQpICYgfmN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9sb2FkX2ZpZm8pKT8gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NlbGVjdGVkX2J1cnN0Y291bnQgOgotICAgICgoaW5fYV9yZWFkX2N5Y2xlICYgfmN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93YWl0c19mb3JfcmVhZCAmIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0ICYgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eSkpPyBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2VsZWN0ZWRfYnVyc3Rjb3VudCA6Ci0gICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0KT8gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3RyYW5zYWN0aW9uX2J1cnN0X2NvdW50IDoKLSAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fY3VycmVudF9idXJzdF9taW51c19vbmU7Ci0KLSAgLy90aGUgY3VycmVudCBidXJzdCBjb3VudCBmb3IgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtLCB0byBiZSBkZWNyZW1lbnRlZCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3QgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgfCAofmN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9sb2FkX2ZpZm8gJiAoaW5fYV9yZWFkX2N5Y2xlICYgfmN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93YWl0c19mb3JfcmVhZCkpKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9jdXJyZW50X2J1cnN0IDw9IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9uZXh0X2J1cnN0X2NvdW50OwotICAgIGVuZAotCi0KLSAgLy9hIDEgb3IgYnVyc3Rjb3VudCBmaWZvIGVtcHR5LCB0byBpbml0aWFsaXplIHRoZSBjb3VudGVyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2xvYWRfZmlmbyA9ICh+Y3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2xvYWRfZmlmbyk/IDEgOgotICAgICgoKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQpICYgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2xvYWRfZmlmbykpPyAxIDoKLSAgICB+Y3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eTsKLQotICAvL3doZXRoZXIgdG8gbG9hZCBkaXJlY3RseSB0byB0aGUgY291bnRlciBvciB0byB0aGUgZmlmbywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2xvYWRfZmlmbyA8PSAwOwotICAgICAgZWxzZSBpZiAoKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQpICYgfmN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9sb2FkX2ZpZm8gfCBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fbG9hZF9maWZvIDw9IHAwX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9sb2FkX2ZpZm87Ci0gICAgZW5kCi0KLQotICAvL3RoZSBsYXN0IGN5Y2xlIGluIHRoZSBidXJzdCBmb3IgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QgPSB+KHxjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fY3VycmVudF9idXJzdF9taW51c19vbmUpICYgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYTsKLQotICAvL3Jkdl9maWZvX2Zvcl9jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3RvX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9maWZvX3dpdGhfcmVnaXN0ZXJlZF9vdXRwdXRzCi0gIHJkdl9maWZvX2Zvcl9jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3RvX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9tb2R1bGUgcmR2X2ZpZm9fZm9yX2NwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfdG9fY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtCi0gICAgKAotICAgICAgLmNsZWFyX2ZpZm8gICAgICAgICAgICgxJ2IwKSwKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAoY2xrKSwKLSAgICAgIC5kYXRhX2luICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSksCi0gICAgICAuZGF0YV9vdXQgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmR2X2ZpZm9fb3V0cHV0X2Zyb21fY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtKSwKLSAgICAgIC5lbXB0eSAgICAgICAgICAgICAgICAoKSwKLSAgICAgIC5maWZvX2NvbnRhaW5zX29uZXNfbiAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZHZfZmlmb19lbXB0eV9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0pLAotICAgICAgLmZ1bGwgICAgICAgICAgICAgICAgICgpLAotICAgICAgLnJlYWQgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAocmVzZXRfbiksCi0gICAgICAuc3luY19yZXNldCAgICAgICAgICAgKDEnYjApLAotICAgICAgLndyaXRlICAgICAgICAgICAgICAgIChpbl9hX3JlYWRfY3ljbGUgJiB+Y3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkKQotICAgICk7Ci0KLSAgYXNzaWduIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciA9IH5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3Jkdl9maWZvX2VtcHR5X2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbTsKLSAgLy9sb2NhbCByZWFkZGF0YXZhbGlkIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSA9IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2E7Ci0KLSAgLy9ieXRlYWRkcmVzcyBtdXggZm9yIGN1c3RvbV9kbWFfYnVyc3RfMS91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9ieXRlYWRkcmVzcyA9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZTsKLQotICAvL21hc3RlciBpcyBhbHdheXMgZ3JhbnRlZCB3aGVuIHJlcXVlc3RlZAotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSA9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtOwotCi0gIC8vY3B1L2luc3RydWN0aW9uX21hc3RlciBzYXZlZC1ncmFudCBjdXN0b21fZG1hX2J1cnN0XzEvdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3NhdmVkX2dyYW50X2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSA9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtOwotCi0gIC8vYWxsb3cgbmV3IGFyYiBjeWNsZSBmb3IgY3VzdG9tX2RtYV9idXJzdF8xL3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2FsbG93X25ld19hcmJfY3ljbGUgPSAxOwotCi0gIC8vcGxhY2Vob2xkZXIgY2hvc2VuIG1hc3RlcgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2dyYW50X3ZlY3RvciA9IDE7Ci0KLSAgLy9wbGFjZWhvbGRlciB2ZWN0b3Igb2YgbWFzdGVyIHF1YWxpZmllZC1yZXF1ZXN0cwotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX21hc3Rlcl9xcmVxX3ZlY3RvciA9IDE7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9maXJzdHRyYW5zZmVyID0gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2JlZ2luc194ZmVyID8gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3VucmVnX2ZpcnN0dHJhbnNmZXIgOiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVnX2ZpcnN0dHJhbnNmZXI7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fdW5yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV91bnJlZ19maXJzdHRyYW5zZmVyID0gfihjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hbnlfY29udGludWVyZXF1ZXN0KTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3JlZ19maXJzdHRyYW5zZmVyIDw9IDEnYjE7Ci0gICAgICBlbHNlIGlmIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYmVnaW5zX3hmZXIpCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3JlZ19maXJzdHRyYW5zZmVyIDw9IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV91bnJlZ19maXJzdHRyYW5zZmVyOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsIGJlZ2luIGJ1cnN0IHRyYW5zZmVyLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCA9IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9iZWdpbnNfeGZlcjsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZCA9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0gJiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQ7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd3JpdGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93cml0ZSA9IDA7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYWRkcmVzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYWRkcmVzcyA9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZTsKLQotICAvL2QxX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9lbmRfeGZlciByZWdpc3Rlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2VuZF94ZmVyIDw9IDE7Ci0gICAgICBlbHNlIAotICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZW5kX3hmZXIgPD0gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2VuZF94ZmVyOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQgaW4gYSBjeWNsZSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93YWl0c19mb3JfcmVhZCA9IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9pbl9hX3JlYWRfY3ljbGUgJiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9pbl9hX3JlYWRfY3ljbGUgPSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtICYgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkOwotCi0gIC8vaW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBpbl9hX3JlYWRfY3ljbGUgPSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1faW5fYV9yZWFkX2N5Y2xlOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRzX2Zvcl93cml0ZSBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRzX2Zvcl93cml0ZSA9IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9pbl9hX3dyaXRlX2N5Y2xlICYgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1faW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGUgPSAwOwotCi0gIC8vaW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gaW5fYV93cml0ZV9jeWNsZSA9IGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9pbl9hX3dyaXRlX2N5Y2xlOwotCi0gIGFzc2lnbiB3YWl0X2Zvcl9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fY291bnRlciA9IDA7Ci0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2J5dGVlbmFibGUgYnl0ZSBlbmFibGUgcG9ydCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYnl0ZWVuYWJsZSA9IC0xOwotCi0gIC8vZGVidWdhY2Nlc3MgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2RlYnVnYWNjZXNzID0gMDsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvL2N1c3RvbV9kbWFfYnVyc3RfMS91cHN0cmVhbSBlbmFibGUgbm9uLXplcm8gYXNzZXJ0aW9ucywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAxJ2IxOwotICAgIGVuZAotCi0KLSAgLy9jcHUvaW5zdHJ1Y3Rpb25fbWFzdGVyIG5vbi16ZXJvIGJ1cnN0Y291bnQgYXNzZXJ0aW9uLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSAmJiAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9idXJzdGNvdW50ID09IDApICYmIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGNwdS9pbnN0cnVjdGlvbl9tYXN0ZXIgZHJvdmUgMCBvbiBpdHMgJ2J1cnN0Y291bnQnIHBvcnQgd2hpbGUgYWNjZXNzaW5nIHNsYXZlIGN1c3RvbV9kbWFfYnVyc3RfMS91cHN0cmVhbSIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hcmJpdHJhdG9yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9waXBlbGluZV9icmlkZ2VfczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczFfc2hpZnRfcmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX3BpcGVsaW5lX2JyaWRnZV9zMV9lbmRfeGZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX3dhaXRyZXF1ZXN0X2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbIDExOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgb3V0cHV0ICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3Jlc2V0X247Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgMTE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FkZHJlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotICBpbnB1dCAgICAgICAgICAgIGQxX3BpcGVsaW5lX2JyaWRnZV9zMV9lbmRfeGZlcjsKLSAgaW5wdXQgICBbIDMxOiAwXSBwaXBlbGluZV9icmlkZ2VfczFfcmVhZGRhdGFfZnJvbV9zYTsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotCi0gIHJlZyAgICAgICAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZTsKLSAgcmVnICAgICBbIDExOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hZGRyZXNzX2xhc3RfdGltZTsKLSAgd2lyZSAgICBbIDExOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J1cnN0Y291bnRfbGFzdF90aW1lOwotICByZWcgICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J5dGVlbmFibGVfbGFzdF90aW1lOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2lzX2dyYW50ZWRfc29tZV9zbGF2ZTsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQ7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9sYXN0X3RpbWU7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3J1bjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93YWl0cmVxdWVzdDsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZV9sYXN0X3RpbWU7Ci0gIHJlZyAgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGVkYXRhX2xhc3RfdGltZTsKLSAgd2lyZSAgICAgICAgICAgICBsYXRlbmN5X2xvYWRfdmFsdWU7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyOwotICB3aXJlICAgICAgICAgICAgIHByZV9mbHVzaF9jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIHJfMDsKLSAgLy9yXzAgbWFzdGVyX3J1biBjYXNjYWRlZCB3YWl0IGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiByXzAgPSAxICYgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMSB8IH5jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczEpICYgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxIHwgfmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMSkgJiAoKH5jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9waXBlbGluZV9icmlkZ2VfczEgfCB+KGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWQgfCBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZSkgfCAoMSAmIH5waXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3RfZnJvbV9zYSAmIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGUpKSkpICYgKCh+Y3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfcGlwZWxpbmVfYnJpZGdlX3MxIHwgfihjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGUpIHwgKDEgJiB+cGlwZWxpbmVfYnJpZGdlX3MxX3dhaXRyZXF1ZXN0X2Zyb21fc2EgJiAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlKSkpKTsKLQotICAvL2Nhc2NhZGVkIHdhaXQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3J1biA9IHJfMDsKLQotICAvL29wdGltaXplIHNlbGVjdC1sb2dpYyBieSBwYXNzaW5nIG9ubHkgdGhvc2UgYWRkcmVzcyBiaXRzIHdoaWNoIG1hdHRlci4KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUgPSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hZGRyZXNzOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkIDw9IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWQgJiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ydW4gJiB+Y3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1faXNfZ3JhbnRlZF9zb21lX3NsYXZlOwotICAgIGVuZAotCi0KLSAgLy9zb21lIHNsYXZlIGlzIGdldHRpbmcgc2VsZWN0ZWQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9pc19ncmFudGVkX3NvbWVfc2xhdmUgPSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMTsKLQotICAvL2xhdGVudCBzbGF2ZSByZWFkIGRhdGEgdmFsaWRzIHdoaWNoIG1heSBiZSBmbHVzaGVkLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcHJlX2ZsdXNoX2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQgPSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxOwotCi0gIC8vbGF0ZW50IHNsYXZlIHJlYWQgZGF0YSB2YWxpZCB3aGljaCBpcyBub3QgZmx1c2hlZCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQgPSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCB8Ci0gICAgcHJlX2ZsdXNoX2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzEvZG93bnN0cmVhbSByZWFkZGF0YSBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkZGF0YSA9IHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YV9mcm9tX3NhOwotCi0gIC8vYWN0dWFsIHdhaXRyZXF1ZXN0IHBvcnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93YWl0cmVxdWVzdCA9IH5jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ydW47Ci0KLSAgLy9sYXRlbnQgbWF4IGNvdW50ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyIDw9IHAxX2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgICBlbmQKLQotCi0gIC8vbGF0ZW5jeSBjb3VudGVyIGxvYWQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyID0gKChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ydW4gJiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkKSk/IGxhdGVuY3lfbG9hZF92YWx1ZSA6Ci0gICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcik/IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciAtIDEgOgotICAgIDA7Ci0KLSAgLy9yZWFkIGxhdGVuY3kgbG9hZCB2YWx1ZXMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBsYXRlbmN5X2xvYWRfdmFsdWUgPSAwOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVzZXRfbiBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVzZXRfbiA9IHJlc2V0X247Ci0KLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hZGRyZXNzIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYWRkcmVzc19sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FkZHJlc3NfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FkZHJlc3M7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMS9kb3duc3RyZWFtIHdhaXRlZCBsYXN0IHRpbWUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd2FpdHJlcXVlc3QgJiAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlKTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYWRkcmVzcyBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FkZHJlc3MgIT0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYWRkcmVzc19sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hZGRyZXNzIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J1cnN0Y291bnRfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9idXJzdGNvdW50X2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9idXJzdGNvdW50IG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCAhPSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9idXJzdGNvdW50X2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J1cnN0Y291bnQgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ieXRlZW5hYmxlIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J5dGVlbmFibGVfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J5dGVlbmFibGUgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ieXRlZW5hYmxlICE9IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J5dGVlbmFibGVfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWQgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZDsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZCBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWQgIT0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGUgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGUgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZSAhPSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZV9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZSBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlZGF0YSBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlZGF0YV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlZGF0YV9sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZWRhdGEgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZWRhdGEgIT0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGVkYXRhX2xhc3RfdGltZSkgJiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGVkYXRhIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGJ1cnN0Y291bnRfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX21vZHVsZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcl9maWZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bmNfcmVzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9vdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbICAzOiAwXSBkYXRhX291dDsKLSAgb3V0cHV0ICAgICAgICAgICBlbXB0eTsKLSAgb3V0cHV0ICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbjsKLSAgb3V0cHV0ICAgICAgICAgICBmdWxsOwotICBpbnB1dCAgICAgICAgICAgIGNsZWFyX2ZpZm87Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgIDM6IDBdIGRhdGFfaW47Ci0gIGlucHV0ICAgICAgICAgICAgcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotICBpbnB1dCAgICAgICAgICAgIHN5bmNfcmVzZXQ7Ci0gIGlucHV0ICAgICAgICAgICAgd3JpdGU7Ci0KLSAgd2lyZSAgICBbICAzOiAwXSBkYXRhX291dDsKLSAgd2lyZSAgICAgICAgICAgICBlbXB0eTsKLSAgcmVnICAgICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbjsKLSAgd2lyZSAgICAgICAgICAgICBmdWxsOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8yOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzQ7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF81OwotICB3aXJlICAgICAgICAgICAgIGZ1bGxfNjsKLSAgcmVnICAgICBbICAzOiAwXSBob3dfbWFueV9vbmVzOwotICB3aXJlICAgIFsgIDM6IDBdIG9uZV9jb3VudF9taW51c19vbmU7Ci0gIHdpcmUgICAgWyAgMzogMF0gb25lX2NvdW50X3BsdXNfb25lOwotICB3aXJlICAgICAgICAgICAgIHAwX2Z1bGxfMDsKLSAgd2lyZSAgICBbICAzOiAwXSBwMF9zdGFnZV8wOwotICB3aXJlICAgICAgICAgICAgIHAxX2Z1bGxfMTsKLSAgd2lyZSAgICBbICAzOiAwXSBwMV9zdGFnZV8xOwotICB3aXJlICAgICAgICAgICAgIHAyX2Z1bGxfMjsKLSAgd2lyZSAgICBbICAzOiAwXSBwMl9zdGFnZV8yOwotICB3aXJlICAgICAgICAgICAgIHAzX2Z1bGxfMzsKLSAgd2lyZSAgICBbICAzOiAwXSBwM19zdGFnZV8zOwotICB3aXJlICAgICAgICAgICAgIHA0X2Z1bGxfNDsKLSAgd2lyZSAgICBbICAzOiAwXSBwNF9zdGFnZV80OwotICB3aXJlICAgICAgICAgICAgIHA1X2Z1bGxfNTsKLSAgd2lyZSAgICBbICAzOiAwXSBwNV9zdGFnZV81OwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzA7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV8yOwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzM7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfNDsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV81OwotICB3aXJlICAgIFsgIDM6IDBdIHVwZGF0ZWRfb25lX2NvdW50OwotICBhc3NpZ24gZGF0YV9vdXQgPSBzdGFnZV8wOwotICBhc3NpZ24gZnVsbCA9IGZ1bGxfNTsKLSAgYXNzaWduIGVtcHR5ID0gIWZ1bGxfMDsKLSAgYXNzaWduIGZ1bGxfNiA9IDA7Ci0gIC8vZGF0YV81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfc3RhZ2VfNSA9ICgoZnVsbF82ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBkYXRhX2luOwotCi0gIC8vZGF0YV9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzUgJiAhKChmdWxsXzYgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzUgPD0gcDVfc3RhZ2VfNTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfZnVsbF81ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF80IDoKLSAgICAwOwotCi0gIC8vY29udHJvbF9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF81IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNSA8PSBwNV9mdWxsXzU7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA0X3N0YWdlXzQgPSAoKGZ1bGxfNSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNTsKLQotICAvL2RhdGFfcmVnXzQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzQpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF80ICYgISgoZnVsbF81ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV80IDw9IHA0X3N0YWdlXzQ7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA0X2Z1bGxfNCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMyA6Ci0gICAgZnVsbF81OwotCi0gIC8vY29udHJvbF9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF80IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNCA8PSBwNF9mdWxsXzQ7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAzX3N0YWdlXzMgPSAoKGZ1bGxfNCAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNDsKLQotICAvL2RhdGFfcmVnXzMsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzMpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8zICYgISgoZnVsbF80ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8zIDw9IHAzX3N0YWdlXzM7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAzX2Z1bGxfMyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMiA6Ci0gICAgZnVsbF80OwotCi0gIC8vY29udHJvbF9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8zIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMyA8PSBwM19mdWxsXzM7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAyX3N0YWdlXzIgPSAoKGZ1bGxfMyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMzsKLQotICAvL2RhdGFfcmVnXzIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzIpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8yICYgISgoZnVsbF8zID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8yIDw9IHAyX3N0YWdlXzI7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAyX2Z1bGxfMiA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMSA6Ci0gICAgZnVsbF8zOwotCi0gIC8vY29udHJvbF9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8yIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMiA8PSBwMl9mdWxsXzI7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX3N0YWdlXzEgPSAoKGZ1bGxfMiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMjsKLQotICAvL2RhdGFfcmVnXzEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xICYgISgoZnVsbF8yID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xIDw9IHAxX3N0YWdlXzE7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX2Z1bGxfMSA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMCA6Ci0gICAgZnVsbF8yOwotCi0gIC8vY29udHJvbF9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMSA8PSBwMV9mdWxsXzE7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAwX3N0YWdlXzAgPSAoKGZ1bGxfMSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTsKLQotICAvL2RhdGFfcmVnXzAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzAgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8wICYgISgoZnVsbF8xID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8wIDw9IHAwX3N0YWdlXzA7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAwX2Z1bGxfMCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IDEgOgotICAgIGZ1bGxfMTsKLQotICAvL2NvbnRyb2xfcmVnXzAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8gJiB+d3JpdGUpCi0gICAgICAgICAgICAgIGZ1bGxfMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzAgPD0gcDBfZnVsbF8wOwotICAgIGVuZAotCi0KLSAgYXNzaWduIG9uZV9jb3VudF9wbHVzX29uZSA9IGhvd19tYW55X29uZXMgKyAxOwotICBhc3NpZ24gb25lX2NvdW50X21pbnVzX29uZSA9IGhvd19tYW55X29uZXMgLSAxOwotICAvL3VwZGF0ZWRfb25lX2NvdW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gdXBkYXRlZF9vbmVfY291bnQgPSAoKCgoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQpICYgIXdyaXRlKSkpPyAwIDoKLSAgICAoKCgoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQpICYgd3JpdGUpKSk/IHxkYXRhX2luIDoKLSAgICAoKHJlYWQgJiAofGRhdGFfaW4pICYgd3JpdGUgJiAofHN0YWdlXzApKSk/IGhvd19tYW55X29uZXMgOgotICAgICgod3JpdGUgJiAofGRhdGFfaW4pKSk/IG9uZV9jb3VudF9wbHVzX29uZSA6Ci0gICAgKChyZWFkICYgKHxzdGFnZV8wKSkpPyBvbmVfY291bnRfbWludXNfb25lIDoKLSAgICBob3dfbWFueV9vbmVzOwotCi0gIC8vY291bnRzIGhvdyBtYW55IG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGhvd19tYW55X29uZXMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8IHdyaXRlKQotICAgICAgICAgIGhvd19tYW55X29uZXMgPD0gdXBkYXRlZF9vbmVfY291bnQ7Ci0gICAgZW5kCi0KLQotICAvL3RoaXMgZmlmbyBjb250YWlucyBvbmVzIGluIHRoZSBkYXRhIHBpcGVsaW5lLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSAxOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgZmlmb19jb250YWluc19vbmVzX24gPD0gfih8dXBkYXRlZF9vbmVfY291bnQpOwotICAgIGVuZAotCi0KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIHJkdl9maWZvX2Zvcl9jcHVfZGF0YV9tYXN0ZXJfdG9fY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX21vZHVsZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcl9maWZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bmNfcmVzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9vdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBkYXRhX291dDsKLSAgb3V0cHV0ICAgICAgICAgICBlbXB0eTsKLSAgb3V0cHV0ICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbjsKLSAgb3V0cHV0ICAgICAgICAgICBmdWxsOwotICBpbnB1dCAgICAgICAgICAgIGNsZWFyX2ZpZm87Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIGRhdGFfaW47Ci0gIGlucHV0ICAgICAgICAgICAgcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotICBpbnB1dCAgICAgICAgICAgIHN5bmNfcmVzZXQ7Ci0gIGlucHV0ICAgICAgICAgICAgd3JpdGU7Ci0KLSAgd2lyZSAgICAgICAgICAgICBkYXRhX291dDsKLSAgd2lyZSAgICAgICAgICAgICBlbXB0eTsKLSAgcmVnICAgICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbjsKLSAgd2lyZSAgICAgICAgICAgICBmdWxsOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8yOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzQ7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF81OwotICB3aXJlICAgICAgICAgICAgIGZ1bGxfNjsKLSAgcmVnICAgICBbICAzOiAwXSBob3dfbWFueV9vbmVzOwotICB3aXJlICAgIFsgIDM6IDBdIG9uZV9jb3VudF9taW51c19vbmU7Ci0gIHdpcmUgICAgWyAgMzogMF0gb25lX2NvdW50X3BsdXNfb25lOwotICB3aXJlICAgICAgICAgICAgIHAwX2Z1bGxfMDsKLSAgd2lyZSAgICAgICAgICAgICBwMF9zdGFnZV8wOwotICB3aXJlICAgICAgICAgICAgIHAxX2Z1bGxfMTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9zdGFnZV8xOwotICB3aXJlICAgICAgICAgICAgIHAyX2Z1bGxfMjsKLSAgd2lyZSAgICAgICAgICAgICBwMl9zdGFnZV8yOwotICB3aXJlICAgICAgICAgICAgIHAzX2Z1bGxfMzsKLSAgd2lyZSAgICAgICAgICAgICBwM19zdGFnZV8zOwotICB3aXJlICAgICAgICAgICAgIHA0X2Z1bGxfNDsKLSAgd2lyZSAgICAgICAgICAgICBwNF9zdGFnZV80OwotICB3aXJlICAgICAgICAgICAgIHA1X2Z1bGxfNTsKLSAgd2lyZSAgICAgICAgICAgICBwNV9zdGFnZV81OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzA7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8yOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzM7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfNDsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV81OwotICB3aXJlICAgIFsgIDM6IDBdIHVwZGF0ZWRfb25lX2NvdW50OwotICBhc3NpZ24gZGF0YV9vdXQgPSBzdGFnZV8wOwotICBhc3NpZ24gZnVsbCA9IGZ1bGxfNTsKLSAgYXNzaWduIGVtcHR5ID0gIWZ1bGxfMDsKLSAgYXNzaWduIGZ1bGxfNiA9IDA7Ci0gIC8vZGF0YV81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfc3RhZ2VfNSA9ICgoZnVsbF82ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBkYXRhX2luOwotCi0gIC8vZGF0YV9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzUgJiAhKChmdWxsXzYgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzUgPD0gcDVfc3RhZ2VfNTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfZnVsbF81ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF80IDoKLSAgICAwOwotCi0gIC8vY29udHJvbF9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF81IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNSA8PSBwNV9mdWxsXzU7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA0X3N0YWdlXzQgPSAoKGZ1bGxfNSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNTsKLQotICAvL2RhdGFfcmVnXzQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzQpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF80ICYgISgoZnVsbF81ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV80IDw9IHA0X3N0YWdlXzQ7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA0X2Z1bGxfNCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMyA6Ci0gICAgZnVsbF81OwotCi0gIC8vY29udHJvbF9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF80IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNCA8PSBwNF9mdWxsXzQ7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAzX3N0YWdlXzMgPSAoKGZ1bGxfNCAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNDsKLQotICAvL2RhdGFfcmVnXzMsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzMpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8zICYgISgoZnVsbF80ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8zIDw9IHAzX3N0YWdlXzM7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAzX2Z1bGxfMyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMiA6Ci0gICAgZnVsbF80OwotCi0gIC8vY29udHJvbF9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8zIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMyA8PSBwM19mdWxsXzM7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAyX3N0YWdlXzIgPSAoKGZ1bGxfMyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMzsKLQotICAvL2RhdGFfcmVnXzIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzIpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8yICYgISgoZnVsbF8zID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8yIDw9IHAyX3N0YWdlXzI7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAyX2Z1bGxfMiA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMSA6Ci0gICAgZnVsbF8zOwotCi0gIC8vY29udHJvbF9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8yIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMiA8PSBwMl9mdWxsXzI7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX3N0YWdlXzEgPSAoKGZ1bGxfMiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMjsKLQotICAvL2RhdGFfcmVnXzEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xICYgISgoZnVsbF8yID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xIDw9IHAxX3N0YWdlXzE7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX2Z1bGxfMSA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMCA6Ci0gICAgZnVsbF8yOwotCi0gIC8vY29udHJvbF9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMSA8PSBwMV9mdWxsXzE7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAwX3N0YWdlXzAgPSAoKGZ1bGxfMSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTsKLQotICAvL2RhdGFfcmVnXzAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzAgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8wICYgISgoZnVsbF8xID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8wIDw9IHAwX3N0YWdlXzA7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAwX2Z1bGxfMCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IDEgOgotICAgIGZ1bGxfMTsKLQotICAvL2NvbnRyb2xfcmVnXzAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8gJiB+d3JpdGUpCi0gICAgICAgICAgICAgIGZ1bGxfMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzAgPD0gcDBfZnVsbF8wOwotICAgIGVuZAotCi0KLSAgYXNzaWduIG9uZV9jb3VudF9wbHVzX29uZSA9IGhvd19tYW55X29uZXMgKyAxOwotICBhc3NpZ24gb25lX2NvdW50X21pbnVzX29uZSA9IGhvd19tYW55X29uZXMgLSAxOwotICAvL3VwZGF0ZWRfb25lX2NvdW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gdXBkYXRlZF9vbmVfY291bnQgPSAoKCgoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQpICYgIXdyaXRlKSkpPyAwIDoKLSAgICAoKCgoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQpICYgd3JpdGUpKSk/IHxkYXRhX2luIDoKLSAgICAoKHJlYWQgJiAofGRhdGFfaW4pICYgd3JpdGUgJiAofHN0YWdlXzApKSk/IGhvd19tYW55X29uZXMgOgotICAgICgod3JpdGUgJiAofGRhdGFfaW4pKSk/IG9uZV9jb3VudF9wbHVzX29uZSA6Ci0gICAgKChyZWFkICYgKHxzdGFnZV8wKSkpPyBvbmVfY291bnRfbWludXNfb25lIDoKLSAgICBob3dfbWFueV9vbmVzOwotCi0gIC8vY291bnRzIGhvdyBtYW55IG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGhvd19tYW55X29uZXMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8IHdyaXRlKQotICAgICAgICAgIGhvd19tYW55X29uZXMgPD0gdXBkYXRlZF9vbmVfY291bnQ7Ci0gICAgZW5kCi0KLQotICAvL3RoaXMgZmlmbyBjb250YWlucyBvbmVzIGluIHRoZSBkYXRhIHBpcGVsaW5lLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSAxOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgZmlmb19jb250YWluc19vbmVzX24gPD0gfih8dXBkYXRlZF9vbmVfY291bnQpOwotICAgIGVuZAotCi0KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hcmJpdHJhdG9yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0cmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J5dGVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fZW5kX3hmZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW07Ci0gIG91dHB1dCAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbTsKLSAgb3V0cHV0ICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbTsKLSAgb3V0cHV0ICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcjsKLSAgb3V0cHV0ICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtOwotICBvdXRwdXQgIFsgMTE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hZGRyZXNzOwotICBvdXRwdXQgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9idXJzdGNvdW50OwotICBvdXRwdXQgIFsgMTM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9ieXRlYWRkcmVzczsKLSAgb3V0cHV0ICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWQ7Ci0gIG91dHB1dCAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dyaXRlOwotICBvdXRwdXQgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93cml0ZWRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2VuZF94ZmVyOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbIDI2OiAwXSBjcHVfZGF0YV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZTsKLSAgaW5wdXQgICBbICAzOiAwXSBjcHVfZGF0YV9tYXN0ZXJfYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSBjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfZGVidWdhY2Nlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlcjsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcjsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcjsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gY3B1X2RhdGFfbWFzdGVyX3dyaXRlZGF0YTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0KLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZHZfZmlmb19lbXB0eV9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3Jkdl9maWZvX291dHB1dF9mcm9tX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9zYXZlZF9ncmFudF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW07Ci0gIHdpcmUgICAgWyAxMTogMF0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FsbGdyYW50czsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYWxsb3dfbmV3X2FyYl9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYW55X2NvbnRpbnVlcmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYXJiX2NvdW50ZXJfZW5hYmxlOwotICByZWcgICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcjsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYXJiX3NoYXJlX3NldF92YWx1ZXM7Ci0gIHJlZyAgICAgWyAgMjogMF0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYmVnaW5zX3hmZXI7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eTsKLSAgd2lyZSAgICBbIDEzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYnl0ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHJlZyAgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3Q7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3RfbWludXNfb25lOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2dyYW50X3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1faW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9pbl9hX3dyaXRlX2N5Y2xlOwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9sb2FkX2ZpZm87Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX21hc3Rlcl9xcmVxX3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uOwotICB3aXJlICAgIFsgIDI6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9uZXh0X2JidF9idXJzdGNvdW50OwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9uZXh0X2J1cnN0X2NvdW50OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2E7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zZWxlY3RlZF9idXJzdGNvdW50OwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdDsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fdHJhbnNhY3Rpb25fYnVyc3RfY291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3VucmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0c19mb3Jfd3JpdGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93cml0ZWRhdGE7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2VuZF94ZmVyOwotICByZWcgICAgICAgICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdDsKLSAgcmVnICAgICAgICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zOwotICB3aXJlICAgICAgICAgICAgIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGluX2FfcmVhZF9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBpbl9hX3dyaXRlX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIHAwX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9sb2FkX2ZpZm87Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdF9mb3JfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2NvdW50ZXI7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdCA8PSB+Y3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2VuZF94ZmVyOwotICAgIGVuZAotCi0KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9iZWdpbnNfeGZlciA9IH5kMV9yZWFzb25zX3RvX3dhaXQgJiAoKGNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0pKTsKLSAgLy9hc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YXZhbGlkIHNvIHRoYXQgc3ltYm9sIGtub3dzIHdoZXJlIHRvIGdyb3VwIHNpZ25hbHMgd2hpY2ggbWF5IGdvIHRvIG1hc3RlciBvbmx5LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YXZhbGlkOwotCi0gIC8vYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhIHNvIHRoYXQgc3ltYm9sIGtub3dzIHdoZXJlIHRvIGdyb3VwIHNpZ25hbHMgd2hpY2ggbWF5IGdvIHRvIG1hc3RlciBvbmx5LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EgPSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZGRhdGE7Ci0KLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0gPSAoe2NwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlWzI2IDogMTJdICwgMTInYjB9ID09IDI3J2g1MDAwMDAwKSAmIChjcHVfZGF0YV9tYXN0ZXJfcmVhZCB8IGNwdV9kYXRhX21hc3Rlcl93cml0ZSk7Ci0gIC8vYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0IHNvIHRoYXQgc3ltYm9sIGtub3dzIHdoZXJlIHRvIGdyb3VwIHNpZ25hbHMgd2hpY2ggbWF5IGdvIHRvIG1hc3RlciBvbmx5LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgPSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgc2V0IHZhbHVlcywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hcmJfc2hhcmVfc2V0X3ZhbHVlcyA9IChjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0pPyAoKChjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpID8gY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQgOiAxKSkgOgotICAgIDE7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyA9IDA7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCA9IGNwdV9kYXRhX21hc3Rlcl9zYXZlZF9ncmFudF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW07Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWUgPSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fZmlyc3R0cmFuc2ZlciA/IChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYXJiX3NoYXJlX3NldF92YWx1ZXMgLSAxKSA6IHxjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgPyAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIC0gMSkgOiAwOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FsbGdyYW50cyBhbGwgc2xhdmUgZ3JhbnRzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FsbGdyYW50cyA9IHxjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fZ3JhbnRfdmVjdG9yOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2VuZF94ZmVyIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fZW5kX3hmZXIgPSB+KGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0c19mb3JfcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0c19mb3Jfd3JpdGUpOwotCi0gIC8vZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0gYXJiIHNoYXJlIGNvdW50ZXIgZW5hYmxlIHRlcm0sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSA9IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9lbmRfeGZlciAmICh+Y3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgfCBpbl9hX3JlYWRfY3ljbGUgfCBpbl9hX3dyaXRlX2N5Y2xlKTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciBhcmJpdHJhdGlvbiBjb3VudGVyIGVuYWJsZSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hcmJfY291bnRlcl9lbmFibGUgPSAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0gJiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYWxsZ3JhbnRzKSB8IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSAmIH5jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyk7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgY291bnRlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYXJiX2NvdW50ZXJfZW5hYmxlKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciA8PSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgc2xhdmUgZW5hYmxlcyBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKCh8Y3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX21hc3Rlcl9xcmVxX3ZlY3RvciAmIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtKSB8IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSAmIH5jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cykpCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgPD0gfGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICAgIGVuZAotCi0KLSAgLy9jcHUvZGF0YV9tYXN0ZXIgY3VzdG9tX2RtYV9idXJzdF8yL3Vwc3RyZWFtIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3B1X2RhdGFfbWFzdGVyX2FyYml0ZXJsb2NrID0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiBjcHVfZGF0YV9tYXN0ZXJfY29udGludWVyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyIHNsYXZlIGVuYWJsZXMgYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyID0gfGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotCi0gIC8vY3B1L2RhdGFfbWFzdGVyIGN1c3RvbV9kbWFfYnVyc3RfMi91cHN0cmVhbSBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjcHVfZGF0YV9tYXN0ZXJfYXJiaXRlcmxvY2syID0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyICYgY3B1X2RhdGFfbWFzdGVyX2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hbnlfY29udGludWVyZXF1ZXN0IGF0IGxlYXN0IG9uZSBtYXN0ZXIgY29udGludWVzIHJlcXVlc3RpbmcsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYW55X2NvbnRpbnVlcmVxdWVzdCA9IDE7Ci0KLSAgLy9jcHVfZGF0YV9tYXN0ZXJfY29udGludWVyZXF1ZXN0IGNvbnRpbnVlZCByZXF1ZXN0LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3B1X2RhdGFfbWFzdGVyX2NvbnRpbnVlcmVxdWVzdCA9IDE7Ci0KLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0gPSBjcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtICYgfigoY3B1X2RhdGFfbWFzdGVyX3JlYWQgJiAoKGNwdV9kYXRhX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIgIT0gMCkgfCAoMSA8IGNwdV9kYXRhX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIpIHwgKHxjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcikgfCAofGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyKSkpKTsKLSAgLy91bmlxdWUgbmFtZSBmb3IgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9tb3ZlX29uX3RvX25leHRfdHJhbnNhY3Rpb24gPSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdCAmIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9sb2FkX2ZpZm87Ci0KLSAgLy90aGUgY3VycmVudGx5IHNlbGVjdGVkIGJ1cnN0Y291bnQgZm9yIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zZWxlY3RlZF9idXJzdGNvdW50ID0gKGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSk/IGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50IDoKLSAgICAxOwotCi0gIC8vYnVyc3Rjb3VudF9maWZvX2Zvcl9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfZmlmb193aXRoX3JlZ2lzdGVyZWRfb3V0cHV0cwotICBidXJzdGNvdW50X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9tb2R1bGUgYnVyc3Rjb3VudF9maWZvX2Zvcl9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0KLSAgICAoCi0gICAgICAuY2xlYXJfZmlmbyAgICAgICAgICAgKDEnYjApLAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgIChjbGspLAotICAgICAgLmRhdGFfaW4gICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fc2VsZWN0ZWRfYnVyc3Rjb3VudCksCi0gICAgICAuZGF0YV9vdXQgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV90cmFuc2FjdGlvbl9idXJzdF9jb3VudCksCi0gICAgICAuZW1wdHkgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9idXJzdGNvdW50X2ZpZm9fZW1wdHkpLAotICAgICAgLmZpZm9fY29udGFpbnNfb25lc19uICgpLAotICAgICAgLmZ1bGwgICAgICAgICAgICAgICAgICgpLAotICAgICAgLnJlYWQgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdCksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgKHJlc2V0X24pLAotICAgICAgLnN5bmNfcmVzZXQgICAgICAgICAgICgxJ2IwKSwKLSAgICAgIC53cml0ZSAgICAgICAgICAgICAgICAoaW5fYV9yZWFkX2N5Y2xlICYgfmN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0c19mb3JfcmVhZCAmIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9sb2FkX2ZpZm8gJiB+KGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0ICYgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eSkpCi0gICAgKTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSBjdXJyZW50IGJ1cnN0IG1pbnVzIG9uZSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9jdXJyZW50X2J1cnN0X21pbnVzX29uZSA9IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9jdXJyZW50X2J1cnN0IC0gMTsKLQotICAvL3doYXQgdG8gbG9hZCBpbiBjdXJyZW50X2J1cnN0LCBmb3IgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX25leHRfYnVyc3RfY291bnQgPSAoKChpbl9hX3JlYWRfY3ljbGUgJiB+Y3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkKSAmIH5jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fbG9hZF9maWZvKSk/IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zZWxlY3RlZF9idXJzdGNvdW50IDoKLSAgICAoKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQgJiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdCAmIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9idXJzdGNvdW50X2ZpZm9fZW1wdHkpKT8gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NlbGVjdGVkX2J1cnN0Y291bnQgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdCk/IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV90cmFuc2FjdGlvbl9idXJzdF9jb3VudCA6Ci0gICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3RfbWludXNfb25lOwotCi0gIC8vdGhlIGN1cnJlbnQgYnVyc3QgY291bnQgZm9yIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSwgdG8gYmUgZGVjcmVtZW50ZWQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9jdXJyZW50X2J1cnN0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhIHwgKH5jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fbG9hZF9maWZvICYgKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQpKSkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fY3VycmVudF9idXJzdCA8PSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fbmV4dF9idXJzdF9jb3VudDsKLSAgICBlbmQKLQotCi0gIC8vYSAxIG9yIGJ1cnN0Y291bnQgZmlmbyBlbXB0eSwgdG8gaW5pdGlhbGl6ZSB0aGUgY291bnRlciwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAwX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9sb2FkX2ZpZm8gPSAofmN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9sb2FkX2ZpZm8pPyAxIDoKLSAgICAoKChpbl9hX3JlYWRfY3ljbGUgJiB+Y3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkKSAmIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9sb2FkX2ZpZm8pKT8gMSA6Ci0gICAgfmN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9idXJzdGNvdW50X2ZpZm9fZW1wdHk7Ci0KLSAgLy93aGV0aGVyIHRvIGxvYWQgZGlyZWN0bHkgdG8gdGhlIGNvdW50ZXIgb3IgdG8gdGhlIGZpZm8sIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9sb2FkX2ZpZm8gPD0gMDsKLSAgICAgIGVsc2UgaWYgKChpbl9hX3JlYWRfY3ljbGUgJiB+Y3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkKSAmIH5jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fbG9hZF9maWZvIHwgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QpCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2xvYWRfZmlmbyA8PSBwMF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fbG9hZF9maWZvOwotICAgIGVuZAotCi0KLSAgLy90aGUgbGFzdCBjeWNsZSBpbiB0aGUgYnVyc3QgZm9yIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0ID0gfih8Y3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3RfbWludXNfb25lKSAmIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2E7Ci0KLSAgLy9yZHZfZmlmb19mb3JfY3B1X2RhdGFfbWFzdGVyX3RvX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9maWZvX3dpdGhfcmVnaXN0ZXJlZF9vdXRwdXRzCi0gIHJkdl9maWZvX2Zvcl9jcHVfZGF0YV9tYXN0ZXJfdG9fY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX21vZHVsZSByZHZfZmlmb19mb3JfY3B1X2RhdGFfbWFzdGVyX3RvX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbQotICAgICgKLSAgICAgIC5jbGVhcl9maWZvICAgICAgICAgICAoMSdiMCksCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgKGNsayksCi0gICAgICAuZGF0YV9pbiAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSksCi0gICAgICAuZGF0YV9vdXQgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9yZHZfZmlmb19vdXRwdXRfZnJvbV9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0pLAotICAgICAgLmVtcHR5ICAgICAgICAgICAgICAgICgpLAotICAgICAgLmZpZm9fY29udGFpbnNfb25lc19uIChjcHVfZGF0YV9tYXN0ZXJfcmR2X2ZpZm9fZW1wdHlfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtKSwKLSAgICAgIC5mdWxsICAgICAgICAgICAgICAgICAoKSwKLSAgICAgIC5yZWFkICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbiksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgKHJlc2V0X24pLAotICAgICAgLnN5bmNfcmVzZXQgICAgICAgICAgICgxJ2IwKSwKLSAgICAgIC53cml0ZSAgICAgICAgICAgICAgICAoaW5fYV9yZWFkX2N5Y2xlICYgfmN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0c19mb3JfcmVhZCkKLSAgICApOwotCi0gIGFzc2lnbiBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciA9IH5jcHVfZGF0YV9tYXN0ZXJfcmR2X2ZpZm9fZW1wdHlfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtOwotICAvL2xvY2FsIHJlYWRkYXRhdmFsaWQgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSA9IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2E7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd3JpdGVkYXRhIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93cml0ZWRhdGEgPSBjcHVfZGF0YV9tYXN0ZXJfd3JpdGVkYXRhOwotCi0gIC8vYnl0ZWFkZHJlc3MgbXV4IGZvciBjdXN0b21fZG1hX2J1cnN0XzIvdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYnl0ZWFkZHJlc3MgPSBjcHVfZGF0YV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZTsKLQotICAvL21hc3RlciBpcyBhbHdheXMgZ3JhbnRlZCB3aGVuIHJlcXVlc3RlZAotICBhc3NpZ24gY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtID0gY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbTsKLQotICAvL2NwdS9kYXRhX21hc3RlciBzYXZlZC1ncmFudCBjdXN0b21fZG1hX2J1cnN0XzIvdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjcHVfZGF0YV9tYXN0ZXJfc2F2ZWRfZ3JhbnRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtID0gY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbTsKLQotICAvL2FsbG93IG5ldyBhcmIgY3ljbGUgZm9yIGN1c3RvbV9kbWFfYnVyc3RfMi91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hbGxvd19uZXdfYXJiX2N5Y2xlID0gMTsKLQotICAvL3BsYWNlaG9sZGVyIGNob3NlbiBtYXN0ZXIKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9ncmFudF92ZWN0b3IgPSAxOwotCi0gIC8vcGxhY2Vob2xkZXIgdmVjdG9yIG9mIG1hc3RlciBxdWFsaWZpZWQtcmVxdWVzdHMKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9tYXN0ZXJfcXJlcV92ZWN0b3IgPSAxOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fZmlyc3R0cmFuc2ZlciA9IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9iZWdpbnNfeGZlciA/IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV91bnJlZ19maXJzdHRyYW5zZmVyIDogY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlZ19maXJzdHRyYW5zZmVyOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3VucmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fdW5yZWdfZmlyc3R0cmFuc2ZlciA9IH4oY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYW55X2NvbnRpbnVlcmVxdWVzdCk7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWdfZmlyc3R0cmFuc2ZlciA8PSAxJ2IxOwotICAgICAgZWxzZSBpZiAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2JlZ2luc194ZmVyKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWdfZmlyc3R0cmFuc2ZlciA8PSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX25leHRfYmJ0X2J1cnN0Y291bnQgbmV4dF9iYnRfYnVyc3Rjb3VudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9uZXh0X2JidF9idXJzdGNvdW50ID0gKCgoKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93cml0ZSkgJiYgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9iYnRfYnVyc3Rjb3VudGVyID09IDApKSkpPyAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J1cnN0Y291bnQgLSAxKSA6Ci0gICAgKCgoKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkKSAmJiAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXIgPT0gMCkpKSk/IDAgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciAtIDEpOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXIgYmJ0X2J1cnN0Y291bnRlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9iZWdpbnNfeGZlcikKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciA8PSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fbmV4dF9iYnRfYnVyc3Rjb3VudDsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCBiZWdpbiBidXJzdCB0cmFuc2Zlciwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9iZWdpbmJ1cnN0dHJhbnNmZXJfaW50ZXJuYWwgPSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYmVnaW5zX3hmZXIgJiAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXIgPT0gMCk7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWQgPSBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0gJiBjcHVfZGF0YV9tYXN0ZXJfcmVhZDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93cml0ZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dyaXRlID0gY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtICYgY3B1X2RhdGFfbWFzdGVyX3dyaXRlOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FkZHJlc3MgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FkZHJlc3MgPSBjcHVfZGF0YV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZTsKLQotICAvL2QxX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9lbmRfeGZlciByZWdpc3Rlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2VuZF94ZmVyIDw9IDE7Ci0gICAgICBlbHNlIAotICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fZW5kX3hmZXIgPD0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2VuZF94ZmVyOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQgaW4gYSBjeWNsZSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0c19mb3JfcmVhZCA9IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9pbl9hX3JlYWRfY3ljbGUgJiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9pbl9hX3JlYWRfY3ljbGUgPSBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0gJiBjcHVfZGF0YV9tYXN0ZXJfcmVhZDsKLQotICAvL2luX2FfcmVhZF9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gaW5fYV9yZWFkX2N5Y2xlID0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0c19mb3Jfd3JpdGUgaW4gYSBjeWNsZSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0c19mb3Jfd3JpdGUgPSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1faW5fYV93cml0ZV9jeWNsZSAmIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9pbl9hX3dyaXRlX2N5Y2xlID0gY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtICYgY3B1X2RhdGFfbWFzdGVyX3dyaXRlOwotCi0gIC8vaW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gaW5fYV93cml0ZV9jeWNsZSA9IGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9pbl9hX3dyaXRlX2N5Y2xlOwotCi0gIGFzc2lnbiB3YWl0X2Zvcl9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fY291bnRlciA9IDA7Ci0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J5dGVlbmFibGUgYnl0ZSBlbmFibGUgcG9ydCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYnl0ZWVuYWJsZSA9IChjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0pPyBjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZSA6Ci0gICAgLTE7Ci0KLSAgLy9idXJzdGNvdW50IG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9idXJzdGNvdW50ID0gKGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSk/IGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50IDoKLSAgICAxOwotCi0gIC8vZGVidWdhY2Nlc3MgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2RlYnVnYWNjZXNzID0gKGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSk/IGNwdV9kYXRhX21hc3Rlcl9kZWJ1Z2FjY2VzcyA6Ci0gICAgMDsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvL2N1c3RvbV9kbWFfYnVyc3RfMi91cHN0cmVhbSBlbmFibGUgbm9uLXplcm8gYXNzZXJ0aW9ucywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAxJ2IxOwotICAgIGVuZAotCi0KLSAgLy9jcHUvZGF0YV9tYXN0ZXIgbm9uLXplcm8gYnVyc3Rjb3VudCBhc3NlcnRpb24sIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0gJiYgKGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50ID09IDApICYmIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGNwdS9kYXRhX21hc3RlciBkcm92ZSAwIG9uIGl0cyAnYnVyc3Rjb3VudCcgcG9ydCB3aGlsZSBhY2Nlc3Npbmcgc2xhdmUgY3VzdG9tX2RtYV9idXJzdF8yL3Vwc3RyZWFtIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMV9zaGlmdF9yZWdpc3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlcXVlc3RzX3BpcGVsaW5lX2JyaWRnZV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfcGlwZWxpbmVfYnJpZGdlX3MxX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3RfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd2FpdHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgMTE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyOwotICBvdXRwdXQgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRkYXRhOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVzZXRfbjsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAxMTogMF0gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9idXJzdGNvdW50OwotICBpbnB1dCAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfcGlwZWxpbmVfYnJpZGdlX3MxOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxX3NoaWZ0X3JlZ2lzdGVyOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlcXVlc3RzX3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgZDFfcGlwZWxpbmVfYnJpZGdlX3MxX2VuZF94ZmVyOwotICBpbnB1dCAgIFsgMzE6IDBdIHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YV9mcm9tX3NhOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV93YWl0cmVxdWVzdF9mcm9tX3NhOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0KLSAgcmVnICAgICAgICAgICAgICBhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lOwotICByZWcgICAgIFsgMTE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FkZHJlc3NfbGFzdF90aW1lOwotICB3aXJlICAgIFsgMTE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYnVyc3Rjb3VudF9sYXN0X3RpbWU7Ci0gIHJlZyAgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZV9sYXN0X3RpbWU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1faXNfZ3JhbnRlZF9zb21lX3NsYXZlOwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZDsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2xhc3RfdGltZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3Jlc2V0X247Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcnVuOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlX2xhc3RfdGltZTsKLSAgcmVnICAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZWRhdGFfbGFzdF90aW1lOwotICB3aXJlICAgICAgICAgICAgIGxhdGVuY3lfbG9hZF92YWx1ZTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcHJlX2ZsdXNoX2N1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgcl8wOwotICAvL3JfMCBtYXN0ZXJfcnVuIGNhc2NhZGVkIHdhaXQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHJfMCA9IDEgJiAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfcGlwZWxpbmVfYnJpZGdlX3MxIHwgfmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlcXVlc3RzX3BpcGVsaW5lX2JyaWRnZV9zMSkgJiAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEgfCB+Y3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfcGlwZWxpbmVfYnJpZGdlX3MxKSAmICgofmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMSB8IH4oY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlKSB8ICgxICYgfnBpcGVsaW5lX2JyaWRnZV9zMV93YWl0cmVxdWVzdF9mcm9tX3NhICYgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWQgfCBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZSkpKSkgJiAoKH5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9waXBlbGluZV9icmlkZ2VfczEgfCB+KGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWQgfCBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZSkgfCAoMSAmIH5waXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3RfZnJvbV9zYSAmIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGUpKSkpOwotCi0gIC8vY2FzY2FkZWQgd2FpdCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcnVuID0gcl8wOwotCi0gIC8vb3B0aW1pemUgc2VsZWN0LWxvZ2ljIGJ5IHBhc3Npbmcgb25seSB0aG9zZSBhZGRyZXNzIGJpdHMgd2hpY2ggbWF0dGVyLgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSA9IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FkZHJlc3M7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgPD0gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZCAmIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3J1biAmIH5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9pc19ncmFudGVkX3NvbWVfc2xhdmU7Ci0gICAgZW5kCi0KLQotICAvL3NvbWUgc2xhdmUgaXMgZ2V0dGluZyBzZWxlY3RlZCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2lzX2dyYW50ZWRfc29tZV9zbGF2ZSA9IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxOwotCi0gIC8vbGF0ZW50IHNsYXZlIHJlYWQgZGF0YSB2YWxpZHMgd2hpY2ggbWF5IGJlIGZsdXNoZWQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwcmVfZmx1c2hfY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCA9IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczE7Ci0KLSAgLy9sYXRlbnQgc2xhdmUgcmVhZCBkYXRhIHZhbGlkIHdoaWNoIGlzIG5vdCBmbHVzaGVkLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCA9IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkIHwKLSAgICBwcmVfZmx1c2hfY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMi9kb3duc3RyZWFtIHJlYWRkYXRhIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRkYXRhID0gcGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhX2Zyb21fc2E7Ci0KLSAgLy9hY3R1YWwgd2FpdHJlcXVlc3QgcG9ydCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ID0gfmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3J1bjsKLQotICAvL2xhdGVudCBtYXggY291bnRlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIgPD0gcDFfY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyOwotICAgIGVuZAotCi0KLSAgLy9sYXRlbmN5IGNvdW50ZXIgbG9hZCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMV9jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIgPSAoKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3J1biAmIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWQpKT8gbGF0ZW5jeV9sb2FkX3ZhbHVlIDoKLSAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyKT8gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyIC0gMSA6Ci0gICAgMDsKLQotICAvL3JlYWQgbGF0ZW5jeSBsb2FkIHZhbHVlcywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGxhdGVuY3lfbG9hZF92YWx1ZSA9IDA7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZXNldF9uIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZXNldF9uID0gcmVzZXRfbjsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvL2N1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FkZHJlc3MgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYWRkcmVzc19sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yL2Rvd25zdHJlYW0gd2FpdGVkIGxhc3QgdGltZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93YWl0cmVxdWVzdCAmIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGUpOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYWRkcmVzcyAhPSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzX2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FkZHJlc3MgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9idXJzdGNvdW50IGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYnVyc3Rjb3VudF9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2J1cnN0Y291bnRfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2J1cnN0Y291bnQgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9idXJzdGNvdW50ICE9IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2J1cnN0Y291bnRfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2J5dGVlbmFibGUgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ieXRlZW5hYmxlX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZV9sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2J5dGVlbmFibGUgIT0gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZV9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ieXRlZW5hYmxlIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZCBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZCAhPSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWQgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZSBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGVfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZSBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlICE9IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlX2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGVkYXRhIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGVkYXRhX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGVkYXRhX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlZGF0YSBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlZGF0YSAhPSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZWRhdGFfbGFzdF90aW1lKSAmIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZWRhdGEgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgYnVyc3Rjb3VudF9maWZvX2Zvcl9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbW9kdWxlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2ZpZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luY19yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgIDM6IDBdIGRhdGFfb3V0OwotICBvdXRwdXQgICAgICAgICAgIGVtcHR5OwotICBvdXRwdXQgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICBvdXRwdXQgICAgICAgICAgIGZ1bGw7Ci0gIGlucHV0ICAgICAgICAgICAgY2xlYXJfZmlmbzsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAgMzogMF0gZGF0YV9pbjsKLSAgaW5wdXQgICAgICAgICAgICByZWFkOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgc3luY19yZXNldDsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZTsKLQotICB3aXJlICAgIFsgIDM6IDBdIGRhdGFfb3V0OwotICB3aXJlICAgICAgICAgICAgIGVtcHR5OwotICByZWcgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICB3aXJlICAgICAgICAgICAgIGZ1bGw7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8wOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEwOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTE7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xMjsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEzOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTQ7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xNTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE2OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTc7Ci0gIHdpcmUgICAgICAgICAgICAgZnVsbF8xODsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzI7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8zOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzU7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF82OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzg7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF85OwotICByZWcgICAgIFsgIDU6IDBdIGhvd19tYW55X29uZXM7Ci0gIHdpcmUgICAgWyAgNTogMF0gb25lX2NvdW50X21pbnVzX29uZTsKLSAgd2lyZSAgICBbICA1OiAwXSBvbmVfY291bnRfcGx1c19vbmU7Ci0gIHdpcmUgICAgICAgICAgICAgcDBfZnVsbF8wOwotICB3aXJlICAgIFsgIDM6IDBdIHAwX3N0YWdlXzA7Ci0gIHdpcmUgICAgICAgICAgICAgcDEwX2Z1bGxfMTA7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDEwX3N0YWdlXzEwOwotICB3aXJlICAgICAgICAgICAgIHAxMV9mdWxsXzExOwotICB3aXJlICAgIFsgIDM6IDBdIHAxMV9zdGFnZV8xMTsKLSAgd2lyZSAgICAgICAgICAgICBwMTJfZnVsbF8xMjsKLSAgd2lyZSAgICBbICAzOiAwXSBwMTJfc3RhZ2VfMTI7Ci0gIHdpcmUgICAgICAgICAgICAgcDEzX2Z1bGxfMTM7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDEzX3N0YWdlXzEzOwotICB3aXJlICAgICAgICAgICAgIHAxNF9mdWxsXzE0OwotICB3aXJlICAgIFsgIDM6IDBdIHAxNF9zdGFnZV8xNDsKLSAgd2lyZSAgICAgICAgICAgICBwMTVfZnVsbF8xNTsKLSAgd2lyZSAgICBbICAzOiAwXSBwMTVfc3RhZ2VfMTU7Ci0gIHdpcmUgICAgICAgICAgICAgcDE2X2Z1bGxfMTY7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDE2X3N0YWdlXzE2OwotICB3aXJlICAgICAgICAgICAgIHAxN19mdWxsXzE3OwotICB3aXJlICAgIFsgIDM6IDBdIHAxN19zdGFnZV8xNzsKLSAgd2lyZSAgICAgICAgICAgICBwMV9mdWxsXzE7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDFfc3RhZ2VfMTsKLSAgd2lyZSAgICAgICAgICAgICBwMl9mdWxsXzI7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDJfc3RhZ2VfMjsKLSAgd2lyZSAgICAgICAgICAgICBwM19mdWxsXzM7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDNfc3RhZ2VfMzsKLSAgd2lyZSAgICAgICAgICAgICBwNF9mdWxsXzQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDRfc3RhZ2VfNDsKLSAgd2lyZSAgICAgICAgICAgICBwNV9mdWxsXzU7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDVfc3RhZ2VfNTsKLSAgd2lyZSAgICAgICAgICAgICBwNl9mdWxsXzY7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDZfc3RhZ2VfNjsKLSAgd2lyZSAgICAgICAgICAgICBwN19mdWxsXzc7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDdfc3RhZ2VfNzsKLSAgd2lyZSAgICAgICAgICAgICBwOF9mdWxsXzg7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDhfc3RhZ2VfODsKLSAgd2lyZSAgICAgICAgICAgICBwOV9mdWxsXzk7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDlfc3RhZ2VfOTsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV8wOwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzE7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTA7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTE7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTI7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTM7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTQ7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTU7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTY7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTc7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMjsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV8zOwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzQ7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfNTsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV82OwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzc7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfODsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV85OwotICB3aXJlICAgIFsgIDU6IDBdIHVwZGF0ZWRfb25lX2NvdW50OwotICBhc3NpZ24gZGF0YV9vdXQgPSBzdGFnZV8wOwotICBhc3NpZ24gZnVsbCA9IGZ1bGxfMTc7Ci0gIGFzc2lnbiBlbXB0eSA9ICFmdWxsXzA7Ci0gIGFzc2lnbiBmdWxsXzE4ID0gMDsKLSAgLy9kYXRhXzE3LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE3X3N0YWdlXzE3ID0gKChmdWxsXzE4ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBkYXRhX2luOwotCi0gIC8vZGF0YV9yZWdfMTcsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzE3IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xNykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzE3ICYgISgoZnVsbF8xOCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzE3IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzE3IDw9IHAxN19zdGFnZV8xNzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xNywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxN19mdWxsXzE3ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xNiA6Ci0gICAgMDsKLQotICAvL2NvbnRyb2xfcmVnXzE3LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzE3IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xNyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzE3IDw9IHAxN19mdWxsXzE3OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzE2LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE2X3N0YWdlXzE2ID0gKChmdWxsXzE3ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xNzsKLQotICAvL2RhdGFfcmVnXzE2LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTYpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xNiAmICEoKGZ1bGxfMTcgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xNiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xNiA8PSBwMTZfc3RhZ2VfMTY7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTYsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTZfZnVsbF8xNiA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTUgOgotICAgIGZ1bGxfMTc7Ci0KLSAgLy9jb250cm9sX3JlZ18xNiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTYgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xNiA8PSBwMTZfZnVsbF8xNjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xNSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNV9zdGFnZV8xNSA9ICgoZnVsbF8xNiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTY7Ci0KLSAgLy9kYXRhX3JlZ18xNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzE1KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTUgJiAhKChmdWxsXzE2ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTUgPD0gcDE1X3N0YWdlXzE1OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzE1LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE1X2Z1bGxfMTUgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzE0IDoKLSAgICBmdWxsXzE2OwotCi0gIC8vY29udHJvbF9yZWdfMTUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzE1IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTUgPD0gcDE1X2Z1bGxfMTU7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTRfc3RhZ2VfMTQgPSAoKGZ1bGxfMTUgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzE1OwotCi0gIC8vZGF0YV9yZWdfMTQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzE0ICYgISgoZnVsbF8xNSA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzE0IDw9IHAxNF9zdGFnZV8xNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNF9mdWxsXzE0ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMyA6Ci0gICAgZnVsbF8xNTsKLQotICAvL2NvbnRyb2xfcmVnXzE0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzE0IDw9IHAxNF9mdWxsXzE0OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEzX3N0YWdlXzEzID0gKChmdWxsXzE0ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xNDsKLQotICAvL2RhdGFfcmVnXzEzLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTMpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMyAmICEoKGZ1bGxfMTQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMyA8PSBwMTNfc3RhZ2VfMTM7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTNfZnVsbF8xMyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTIgOgotICAgIGZ1bGxfMTQ7Ci0KLSAgLy9jb250cm9sX3JlZ18xMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xMyA8PSBwMTNfZnVsbF8xMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMl9zdGFnZV8xMiA9ICgoZnVsbF8xMyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTM7Ci0KLSAgLy9kYXRhX3JlZ18xMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEyKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTIgJiAhKChmdWxsXzEzID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTIgPD0gcDEyX3N0YWdlXzEyOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzEyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEyX2Z1bGxfMTIgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzExIDoKLSAgICBmdWxsXzEzOwotCi0gIC8vY29udHJvbF9yZWdfMTIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEyIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTIgPD0gcDEyX2Z1bGxfMTI7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTFfc3RhZ2VfMTEgPSAoKGZ1bGxfMTIgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzEyOwotCi0gIC8vZGF0YV9yZWdfMTEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzExICYgISgoZnVsbF8xMiA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzExIDw9IHAxMV9zdGFnZV8xMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMV9mdWxsXzExID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMCA6Ci0gICAgZnVsbF8xMjsKLQotICAvL2NvbnRyb2xfcmVnXzExLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzExIDw9IHAxMV9mdWxsXzExOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEwLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEwX3N0YWdlXzEwID0gKChmdWxsXzExICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMTsKLQotICAvL2RhdGFfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTApKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMCAmICEoKGZ1bGxfMTEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMCA8PSBwMTBfc3RhZ2VfMTA7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTAsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTBfZnVsbF8xMCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfOSA6Ci0gICAgZnVsbF8xMTsKLQotICAvL2NvbnRyb2xfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEwIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzEwIDw9IHAxMF9mdWxsXzEwOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9zdGFnZV85ID0gKChmdWxsXzEwICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMDsKLQotICAvL2RhdGFfcmVnXzksIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzkpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF85ICYgISgoZnVsbF8xMCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfOSA8PSBwOV9zdGFnZV85OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9mdWxsXzkgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzggOgotICAgIGZ1bGxfMTA7Ci0KLSAgLy9jb250cm9sX3JlZ185LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF85IDw9IHA5X2Z1bGxfOTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfc3RhZ2VfOCA9ICgoZnVsbF85ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV85OwotCi0gIC8vZGF0YV9yZWdfOCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfOCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfOCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzggJiAhKChmdWxsXzkgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV84IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzggPD0gcDhfc3RhZ2VfODsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfZnVsbF84ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF83IDoKLSAgICBmdWxsXzk7Ci0KLSAgLy9jb250cm9sX3JlZ184LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF84IDw9IHA4X2Z1bGxfODsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfc3RhZ2VfNyA9ICgoZnVsbF84ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV84OwotCi0gIC8vZGF0YV9yZWdfNywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzcgJiAhKChmdWxsXzggPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV83IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzcgPD0gcDdfc3RhZ2VfNzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfZnVsbF83ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF82IDoKLSAgICBmdWxsXzg7Ci0KLSAgLy9jb250cm9sX3JlZ183LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF83IDw9IHA3X2Z1bGxfNzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfc3RhZ2VfNiA9ICgoZnVsbF83ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV83OwotCi0gIC8vZGF0YV9yZWdfNiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzYgJiAhKChmdWxsXzcgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV82IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzYgPD0gcDZfc3RhZ2VfNjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfZnVsbF82ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF81IDoKLSAgICBmdWxsXzc7Ci0KLSAgLy9jb250cm9sX3JlZ182LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF82IDw9IHA2X2Z1bGxfNjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfc3RhZ2VfNSA9ICgoZnVsbF82ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV82OwotCi0gIC8vZGF0YV9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzUgJiAhKChmdWxsXzYgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzUgPD0gcDVfc3RhZ2VfNTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfZnVsbF81ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF80IDoKLSAgICBmdWxsXzY7Ci0KLSAgLy9jb250cm9sX3JlZ181LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF81IDw9IHA1X2Z1bGxfNTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfc3RhZ2VfNCA9ICgoZnVsbF81ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV81OwotCi0gIC8vZGF0YV9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzQgJiAhKChmdWxsXzUgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzQgPD0gcDRfc3RhZ2VfNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfZnVsbF80ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8zIDoKLSAgICBmdWxsXzU7Ci0KLSAgLy9jb250cm9sX3JlZ180LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF80IDw9IHA0X2Z1bGxfNDsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfc3RhZ2VfMyA9ICgoZnVsbF80ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV80OwotCi0gIC8vZGF0YV9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzMgJiAhKChmdWxsXzQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzMgPD0gcDNfc3RhZ2VfMzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfZnVsbF8zID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8yIDoKLSAgICBmdWxsXzQ7Ci0KLSAgLy9jb250cm9sX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8zIDw9IHAzX2Z1bGxfMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfc3RhZ2VfMiA9ICgoZnVsbF8zICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8zOwotCi0gIC8vZGF0YV9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzIgJiAhKChmdWxsXzMgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzIgPD0gcDJfc3RhZ2VfMjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfZnVsbF8yID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xIDoKLSAgICBmdWxsXzM7Ci0KLSAgLy9jb250cm9sX3JlZ18yLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8yIDw9IHAyX2Z1bGxfMjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfc3RhZ2VfMSA9ICgoZnVsbF8yICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8yOwotCi0gIC8vZGF0YV9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEgJiAhKChmdWxsXzIgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEgPD0gcDFfc3RhZ2VfMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfZnVsbF8xID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8wIDoKLSAgICBmdWxsXzI7Ci0KLSAgLy9jb250cm9sX3JlZ18xLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xIDw9IHAxX2Z1bGxfMTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfc3RhZ2VfMCA9ICgoZnVsbF8xICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xOwotCi0gIC8vZGF0YV9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzAgJiAhKChmdWxsXzEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzAgPD0gcDBfc3RhZ2VfMDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfZnVsbF8wID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gMSA6Ci0gICAgZnVsbF8xOwotCi0gIC8vY29udHJvbF9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbyAmIH53cml0ZSkKLSAgICAgICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMCA8PSBwMF9mdWxsXzA7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gb25lX2NvdW50X3BsdXNfb25lID0gaG93X21hbnlfb25lcyArIDE7Ci0gIGFzc2lnbiBvbmVfY291bnRfbWludXNfb25lID0gaG93X21hbnlfb25lcyAtIDE7Ci0gIC8vdXBkYXRlZF9vbmVfY291bnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB1cGRhdGVkX29uZV9jb3VudCA9ICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiAhd3JpdGUpKSk/IDAgOgotICAgICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiB3cml0ZSkpKT8gfGRhdGFfaW4gOgotICAgICgocmVhZCAmICh8ZGF0YV9pbikgJiB3cml0ZSAmICh8c3RhZ2VfMCkpKT8gaG93X21hbnlfb25lcyA6Ci0gICAgKCh3cml0ZSAmICh8ZGF0YV9pbikpKT8gb25lX2NvdW50X3BsdXNfb25lIDoKLSAgICAoKHJlYWQgJiAofHN0YWdlXzApKSk/IG9uZV9jb3VudF9taW51c19vbmUgOgotICAgIGhvd19tYW55X29uZXM7Ci0KLSAgLy9jb3VudHMgaG93IG1hbnkgb25lcyBpbiB0aGUgZGF0YSBwaXBlbGluZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSB1cGRhdGVkX29uZV9jb3VudDsKLSAgICBlbmQKLQotCi0gIC8vdGhpcyBmaWZvIGNvbnRhaW5zIG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uIDw9IDE7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCB3cml0ZSkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSB+KHx1cGRhdGVkX29uZV9jb3VudCk7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcmR2X2ZpZm9fZm9yX2NwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfdG9fY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX21vZHVsZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2ZpZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jX3Jlc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGRhdGFfb3V0OwotICBvdXRwdXQgICAgICAgICAgIGVtcHR5OwotICBvdXRwdXQgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICBvdXRwdXQgICAgICAgICAgIGZ1bGw7Ci0gIGlucHV0ICAgICAgICAgICAgY2xlYXJfZmlmbzsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgICAgICAgICAgZGF0YV9pbjsKLSAgaW5wdXQgICAgICAgICAgICByZWFkOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgc3luY19yZXNldDsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZTsKLQotICB3aXJlICAgICAgICAgICAgIGRhdGFfb3V0OwotICB3aXJlICAgICAgICAgICAgIGVtcHR5OwotICByZWcgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICB3aXJlICAgICAgICAgICAgIGZ1bGw7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8wOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEwOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTE7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xMjsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEzOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTQ7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xNTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE2OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTc7Ci0gIHdpcmUgICAgICAgICAgICAgZnVsbF8xODsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzI7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8zOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzU7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF82OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzg7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF85OwotICByZWcgICAgIFsgIDU6IDBdIGhvd19tYW55X29uZXM7Ci0gIHdpcmUgICAgWyAgNTogMF0gb25lX2NvdW50X21pbnVzX29uZTsKLSAgd2lyZSAgICBbICA1OiAwXSBvbmVfY291bnRfcGx1c19vbmU7Ci0gIHdpcmUgICAgICAgICAgICAgcDBfZnVsbF8wOwotICB3aXJlICAgICAgICAgICAgIHAwX3N0YWdlXzA7Ci0gIHdpcmUgICAgICAgICAgICAgcDEwX2Z1bGxfMTA7Ci0gIHdpcmUgICAgICAgICAgICAgcDEwX3N0YWdlXzEwOwotICB3aXJlICAgICAgICAgICAgIHAxMV9mdWxsXzExOwotICB3aXJlICAgICAgICAgICAgIHAxMV9zdGFnZV8xMTsKLSAgd2lyZSAgICAgICAgICAgICBwMTJfZnVsbF8xMjsKLSAgd2lyZSAgICAgICAgICAgICBwMTJfc3RhZ2VfMTI7Ci0gIHdpcmUgICAgICAgICAgICAgcDEzX2Z1bGxfMTM7Ci0gIHdpcmUgICAgICAgICAgICAgcDEzX3N0YWdlXzEzOwotICB3aXJlICAgICAgICAgICAgIHAxNF9mdWxsXzE0OwotICB3aXJlICAgICAgICAgICAgIHAxNF9zdGFnZV8xNDsKLSAgd2lyZSAgICAgICAgICAgICBwMTVfZnVsbF8xNTsKLSAgd2lyZSAgICAgICAgICAgICBwMTVfc3RhZ2VfMTU7Ci0gIHdpcmUgICAgICAgICAgICAgcDE2X2Z1bGxfMTY7Ci0gIHdpcmUgICAgICAgICAgICAgcDE2X3N0YWdlXzE2OwotICB3aXJlICAgICAgICAgICAgIHAxN19mdWxsXzE3OwotICB3aXJlICAgICAgICAgICAgIHAxN19zdGFnZV8xNzsKLSAgd2lyZSAgICAgICAgICAgICBwMV9mdWxsXzE7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfc3RhZ2VfMTsKLSAgd2lyZSAgICAgICAgICAgICBwMl9mdWxsXzI7Ci0gIHdpcmUgICAgICAgICAgICAgcDJfc3RhZ2VfMjsKLSAgd2lyZSAgICAgICAgICAgICBwM19mdWxsXzM7Ci0gIHdpcmUgICAgICAgICAgICAgcDNfc3RhZ2VfMzsKLSAgd2lyZSAgICAgICAgICAgICBwNF9mdWxsXzQ7Ci0gIHdpcmUgICAgICAgICAgICAgcDRfc3RhZ2VfNDsKLSAgd2lyZSAgICAgICAgICAgICBwNV9mdWxsXzU7Ci0gIHdpcmUgICAgICAgICAgICAgcDVfc3RhZ2VfNTsKLSAgd2lyZSAgICAgICAgICAgICBwNl9mdWxsXzY7Ci0gIHdpcmUgICAgICAgICAgICAgcDZfc3RhZ2VfNjsKLSAgd2lyZSAgICAgICAgICAgICBwN19mdWxsXzc7Ci0gIHdpcmUgICAgICAgICAgICAgcDdfc3RhZ2VfNzsKLSAgd2lyZSAgICAgICAgICAgICBwOF9mdWxsXzg7Ci0gIHdpcmUgICAgICAgICAgICAgcDhfc3RhZ2VfODsKLSAgd2lyZSAgICAgICAgICAgICBwOV9mdWxsXzk7Ci0gIHdpcmUgICAgICAgICAgICAgcDlfc3RhZ2VfOTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8wOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzE7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTA7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTE7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTI7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTM7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTQ7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTU7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTY7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTc7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMjsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8zOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzQ7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfNTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV82OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzc7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfODsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV85OwotICB3aXJlICAgIFsgIDU6IDBdIHVwZGF0ZWRfb25lX2NvdW50OwotICBhc3NpZ24gZGF0YV9vdXQgPSBzdGFnZV8wOwotICBhc3NpZ24gZnVsbCA9IGZ1bGxfMTc7Ci0gIGFzc2lnbiBlbXB0eSA9ICFmdWxsXzA7Ci0gIGFzc2lnbiBmdWxsXzE4ID0gMDsKLSAgLy9kYXRhXzE3LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE3X3N0YWdlXzE3ID0gKChmdWxsXzE4ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBkYXRhX2luOwotCi0gIC8vZGF0YV9yZWdfMTcsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzE3IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xNykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzE3ICYgISgoZnVsbF8xOCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzE3IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzE3IDw9IHAxN19zdGFnZV8xNzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xNywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxN19mdWxsXzE3ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xNiA6Ci0gICAgMDsKLQotICAvL2NvbnRyb2xfcmVnXzE3LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzE3IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xNyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzE3IDw9IHAxN19mdWxsXzE3OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzE2LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE2X3N0YWdlXzE2ID0gKChmdWxsXzE3ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xNzsKLQotICAvL2RhdGFfcmVnXzE2LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTYpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xNiAmICEoKGZ1bGxfMTcgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xNiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xNiA8PSBwMTZfc3RhZ2VfMTY7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTYsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTZfZnVsbF8xNiA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTUgOgotICAgIGZ1bGxfMTc7Ci0KLSAgLy9jb250cm9sX3JlZ18xNiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTYgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xNiA8PSBwMTZfZnVsbF8xNjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xNSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNV9zdGFnZV8xNSA9ICgoZnVsbF8xNiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTY7Ci0KLSAgLy9kYXRhX3JlZ18xNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzE1KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTUgJiAhKChmdWxsXzE2ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTUgPD0gcDE1X3N0YWdlXzE1OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzE1LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE1X2Z1bGxfMTUgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzE0IDoKLSAgICBmdWxsXzE2OwotCi0gIC8vY29udHJvbF9yZWdfMTUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzE1IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTUgPD0gcDE1X2Z1bGxfMTU7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTRfc3RhZ2VfMTQgPSAoKGZ1bGxfMTUgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzE1OwotCi0gIC8vZGF0YV9yZWdfMTQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzE0ICYgISgoZnVsbF8xNSA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzE0IDw9IHAxNF9zdGFnZV8xNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNF9mdWxsXzE0ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMyA6Ci0gICAgZnVsbF8xNTsKLQotICAvL2NvbnRyb2xfcmVnXzE0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzE0IDw9IHAxNF9mdWxsXzE0OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEzX3N0YWdlXzEzID0gKChmdWxsXzE0ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xNDsKLQotICAvL2RhdGFfcmVnXzEzLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTMpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMyAmICEoKGZ1bGxfMTQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMyA8PSBwMTNfc3RhZ2VfMTM7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTNfZnVsbF8xMyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTIgOgotICAgIGZ1bGxfMTQ7Ci0KLSAgLy9jb250cm9sX3JlZ18xMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xMyA8PSBwMTNfZnVsbF8xMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMl9zdGFnZV8xMiA9ICgoZnVsbF8xMyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTM7Ci0KLSAgLy9kYXRhX3JlZ18xMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEyKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTIgJiAhKChmdWxsXzEzID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTIgPD0gcDEyX3N0YWdlXzEyOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzEyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEyX2Z1bGxfMTIgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzExIDoKLSAgICBmdWxsXzEzOwotCi0gIC8vY29udHJvbF9yZWdfMTIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEyIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTIgPD0gcDEyX2Z1bGxfMTI7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTFfc3RhZ2VfMTEgPSAoKGZ1bGxfMTIgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzEyOwotCi0gIC8vZGF0YV9yZWdfMTEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzExICYgISgoZnVsbF8xMiA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzExIDw9IHAxMV9zdGFnZV8xMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMV9mdWxsXzExID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMCA6Ci0gICAgZnVsbF8xMjsKLQotICAvL2NvbnRyb2xfcmVnXzExLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzExIDw9IHAxMV9mdWxsXzExOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEwLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEwX3N0YWdlXzEwID0gKChmdWxsXzExICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMTsKLQotICAvL2RhdGFfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTApKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMCAmICEoKGZ1bGxfMTEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMCA8PSBwMTBfc3RhZ2VfMTA7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTAsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTBfZnVsbF8xMCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfOSA6Ci0gICAgZnVsbF8xMTsKLQotICAvL2NvbnRyb2xfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEwIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzEwIDw9IHAxMF9mdWxsXzEwOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9zdGFnZV85ID0gKChmdWxsXzEwICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMDsKLQotICAvL2RhdGFfcmVnXzksIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzkpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF85ICYgISgoZnVsbF8xMCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfOSA8PSBwOV9zdGFnZV85OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9mdWxsXzkgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzggOgotICAgIGZ1bGxfMTA7Ci0KLSAgLy9jb250cm9sX3JlZ185LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF85IDw9IHA5X2Z1bGxfOTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfc3RhZ2VfOCA9ICgoZnVsbF85ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV85OwotCi0gIC8vZGF0YV9yZWdfOCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfOCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfOCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzggJiAhKChmdWxsXzkgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV84IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzggPD0gcDhfc3RhZ2VfODsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfZnVsbF84ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF83IDoKLSAgICBmdWxsXzk7Ci0KLSAgLy9jb250cm9sX3JlZ184LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF84IDw9IHA4X2Z1bGxfODsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfc3RhZ2VfNyA9ICgoZnVsbF84ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV84OwotCi0gIC8vZGF0YV9yZWdfNywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzcgJiAhKChmdWxsXzggPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV83IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzcgPD0gcDdfc3RhZ2VfNzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfZnVsbF83ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF82IDoKLSAgICBmdWxsXzg7Ci0KLSAgLy9jb250cm9sX3JlZ183LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF83IDw9IHA3X2Z1bGxfNzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfc3RhZ2VfNiA9ICgoZnVsbF83ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV83OwotCi0gIC8vZGF0YV9yZWdfNiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzYgJiAhKChmdWxsXzcgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV82IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzYgPD0gcDZfc3RhZ2VfNjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfZnVsbF82ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF81IDoKLSAgICBmdWxsXzc7Ci0KLSAgLy9jb250cm9sX3JlZ182LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF82IDw9IHA2X2Z1bGxfNjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfc3RhZ2VfNSA9ICgoZnVsbF82ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV82OwotCi0gIC8vZGF0YV9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzUgJiAhKChmdWxsXzYgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzUgPD0gcDVfc3RhZ2VfNTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfZnVsbF81ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF80IDoKLSAgICBmdWxsXzY7Ci0KLSAgLy9jb250cm9sX3JlZ181LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF81IDw9IHA1X2Z1bGxfNTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfc3RhZ2VfNCA9ICgoZnVsbF81ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV81OwotCi0gIC8vZGF0YV9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzQgJiAhKChmdWxsXzUgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzQgPD0gcDRfc3RhZ2VfNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfZnVsbF80ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8zIDoKLSAgICBmdWxsXzU7Ci0KLSAgLy9jb250cm9sX3JlZ180LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF80IDw9IHA0X2Z1bGxfNDsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfc3RhZ2VfMyA9ICgoZnVsbF80ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV80OwotCi0gIC8vZGF0YV9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzMgJiAhKChmdWxsXzQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzMgPD0gcDNfc3RhZ2VfMzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfZnVsbF8zID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8yIDoKLSAgICBmdWxsXzQ7Ci0KLSAgLy9jb250cm9sX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8zIDw9IHAzX2Z1bGxfMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfc3RhZ2VfMiA9ICgoZnVsbF8zICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8zOwotCi0gIC8vZGF0YV9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzIgJiAhKChmdWxsXzMgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzIgPD0gcDJfc3RhZ2VfMjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfZnVsbF8yID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xIDoKLSAgICBmdWxsXzM7Ci0KLSAgLy9jb250cm9sX3JlZ18yLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8yIDw9IHAyX2Z1bGxfMjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfc3RhZ2VfMSA9ICgoZnVsbF8yICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8yOwotCi0gIC8vZGF0YV9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEgJiAhKChmdWxsXzIgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEgPD0gcDFfc3RhZ2VfMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfZnVsbF8xID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8wIDoKLSAgICBmdWxsXzI7Ci0KLSAgLy9jb250cm9sX3JlZ18xLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xIDw9IHAxX2Z1bGxfMTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfc3RhZ2VfMCA9ICgoZnVsbF8xICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xOwotCi0gIC8vZGF0YV9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzAgJiAhKChmdWxsXzEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzAgPD0gcDBfc3RhZ2VfMDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfZnVsbF8wID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gMSA6Ci0gICAgZnVsbF8xOwotCi0gIC8vY29udHJvbF9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbyAmIH53cml0ZSkKLSAgICAgICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMCA8PSBwMF9mdWxsXzA7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gb25lX2NvdW50X3BsdXNfb25lID0gaG93X21hbnlfb25lcyArIDE7Ci0gIGFzc2lnbiBvbmVfY291bnRfbWludXNfb25lID0gaG93X21hbnlfb25lcyAtIDE7Ci0gIC8vdXBkYXRlZF9vbmVfY291bnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB1cGRhdGVkX29uZV9jb3VudCA9ICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiAhd3JpdGUpKSk/IDAgOgotICAgICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiB3cml0ZSkpKT8gfGRhdGFfaW4gOgotICAgICgocmVhZCAmICh8ZGF0YV9pbikgJiB3cml0ZSAmICh8c3RhZ2VfMCkpKT8gaG93X21hbnlfb25lcyA6Ci0gICAgKCh3cml0ZSAmICh8ZGF0YV9pbikpKT8gb25lX2NvdW50X3BsdXNfb25lIDoKLSAgICAoKHJlYWQgJiAofHN0YWdlXzApKSk/IG9uZV9jb3VudF9taW51c19vbmUgOgotICAgIGhvd19tYW55X29uZXM7Ci0KLSAgLy9jb3VudHMgaG93IG1hbnkgb25lcyBpbiB0aGUgZGF0YSBwaXBlbGluZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSB1cGRhdGVkX29uZV9jb3VudDsKLSAgICBlbmQKLQotCi0gIC8vdGhpcyBmaWZvIGNvbnRhaW5zIG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uIDw9IDE7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCB3cml0ZSkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSB+KHx1cGRhdGVkX29uZV9jb3VudCk7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0cmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9zaGlmdF9yZWdpc3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYnl0ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZW5kX3hmZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbTsKLSAgb3V0cHV0ICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXI7Ci0gIG91dHB1dCAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW07Ci0gIG91dHB1dCAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIG91dHB1dCAgWyAyNjogMF0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2J5dGVhZGRyZXNzOwotICBvdXRwdXQgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9ieXRlZW5hYmxlOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZDsKLSAgb3V0cHV0ICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd3JpdGU7Ci0gIG91dHB1dCAgICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2VuZF94ZmVyOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbIDI2OiAwXSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIGlucHV0ICAgWyAgMzogMF0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9idXJzdGNvdW50OwotICBpbnB1dCAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXI7Ci0gIGlucHV0ICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotCi0gIHdpcmUgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2NvbnRpbnVlcmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmR2X2ZpZm9fZW1wdHlfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmR2X2ZpZm9fb3V0cHV0X2Zyb21fY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9zYXZlZF9ncmFudF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW07Ci0gIHdpcmUgICAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FsbGdyYW50czsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYWxsb3dfbmV3X2FyYl9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYW55X2NvbnRpbnVlcmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYXJiX2NvdW50ZXJfZW5hYmxlOwotICByZWcgICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcjsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYXJiX3NoYXJlX3NldF92YWx1ZXM7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYmVnaW5zX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eTsKLSAgd2lyZSAgICBbIDI2OiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYnl0ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHJlZyAgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3Q7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3RfbWludXNfb25lOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2dyYW50X3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1faW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9pbl9hX3dyaXRlX2N5Y2xlOwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9sb2FkX2ZpZm87Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX21hc3Rlcl9xcmVxX3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9uZXh0X2J1cnN0X2NvdW50OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2E7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9zZWxlY3RlZF9idXJzdGNvdW50OwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdDsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fdHJhbnNhY3Rpb25fYnVyc3RfY291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3VucmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0c19mb3Jfd3JpdGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dyaXRlOwotICByZWcgICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9lbmRfeGZlcjsKLSAgcmVnICAgICAgICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQ7Ci0gIHJlZyAgICAgICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9uczsKLSAgd2lyZSAgICAgICAgICAgICBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBpbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV93cml0ZV9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBwMF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbG9hZF9maWZvOwotICB3aXJlICAgICAgICAgICAgIHdhaXRfZm9yX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9jb3VudGVyOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfcmVhc29uc190b193YWl0IDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gfmN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9lbmRfeGZlcjsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYmVnaW5zX3hmZXIgPSB+ZDFfcmVhc29uc190b193YWl0ICYgKChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSkpOwotICAvL2Fzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0KLSAgLy9hc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EgPSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZGRhdGEgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YTsKLQotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0gPSAoKHtjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmVbMjYgOiAyNV0gLCAyNSdiMH0gPT0gMjcnaDIwMDAwMDApICYgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZCkpICYgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkOwotICAvL2Fzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0cmVxdWVzdCBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIHNldCB2YWx1ZXMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYXJiX3NoYXJlX3NldF92YWx1ZXMgPSAxOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgPSAwOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgPSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3NhdmVkX2dyYW50X2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZSA9IGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9maXJzdHRyYW5zZmVyID8gKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hcmJfc2hhcmVfc2V0X3ZhbHVlcyAtIDEpIDogfGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciA/IChjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgLSAxKSA6IDA7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYWxsZ3JhbnRzIGFsbCBzbGF2ZSBncmFudHMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYWxsZ3JhbnRzID0gfGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9ncmFudF92ZWN0b3I7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZW5kX3hmZXIgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9lbmRfeGZlciA9IH4oY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dhaXRzX2Zvcl93cml0ZSk7Ci0KLSAgLy9lbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSBhcmIgc2hhcmUgY291bnRlciBlbmFibGUgdGVybSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtID0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2VuZF94ZmVyICYgKH5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCB8IGluX2FfcmVhZF9jeWNsZSB8IGluX2Ffd3JpdGVfY3ljbGUpOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIGFyYml0cmF0aW9uIGNvdW50ZXIgZW5hYmxlLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FyYl9jb3VudGVyX2VuYWJsZSA9IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSAmIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hbGxncmFudHMpIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtICYgfmN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciBjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hcmJfY291bnRlcl9lbmFibGUpCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIDw9IGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSAwOwotICAgICAgZWxzZSBpZiAoKHxjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbWFzdGVyX3FyZXFfdmVjdG9yICYgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0pIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtICYgfmN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKSkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSB8Y3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gICAgZW5kCi0KLQotICAvL2NwdS9pbnN0cnVjdGlvbl9tYXN0ZXIgY3VzdG9tX2RtYV9idXJzdF8zL3Vwc3RyZWFtIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hcmJpdGVybG9jayA9IGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlICYgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgc2xhdmUgZW5hYmxlcyBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgPSB8Y3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0KLSAgLy9jcHUvaW5zdHJ1Y3Rpb25fbWFzdGVyIGN1c3RvbV9kbWFfYnVyc3RfMy91cHN0cmVhbSBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FyYml0ZXJsb2NrMiA9IGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiAmIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfY29udGludWVyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FueV9jb250aW51ZXJlcXVlc3QgYXQgbGVhc3Qgb25lIG1hc3RlciBjb250aW51ZXMgcmVxdWVzdGluZywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hbnlfY29udGludWVyZXF1ZXN0ID0gMTsKLQotICAvL2NwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfY29udGludWVyZXF1ZXN0IGNvbnRpbnVlZCByZXF1ZXN0LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIGFzc2lnbiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSA9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtICYgfigoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkICYgKChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2xhdGVuY3lfY291bnRlciAhPSAwKSB8ICgxIDwgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIpIHwgKHxjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIpKSkpOwotICAvL3VuaXF1ZSBuYW1lIGZvciBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbiA9IGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0ICYgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2xvYWRfZmlmbzsKLQotICAvL3RoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYnVyc3Rjb3VudCBmb3IgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3NlbGVjdGVkX2J1cnN0Y291bnQgPSAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSk/IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYnVyc3Rjb3VudCA6Ci0gICAgMTsKLQotICAvL2J1cnN0Y291bnRfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2ZpZm9fd2l0aF9yZWdpc3RlcmVkX291dHB1dHMKLSAgYnVyc3Rjb3VudF9maWZvX2Zvcl9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbW9kdWxlIGJ1cnN0Y291bnRfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtCi0gICAgKAotICAgICAgLmNsZWFyX2ZpZm8gICAgICAgICAgICgxJ2IwKSwKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAoY2xrKSwKLSAgICAgIC5kYXRhX2luICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3NlbGVjdGVkX2J1cnN0Y291bnQpLAotICAgICAgLmRhdGFfb3V0ICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fdHJhbnNhY3Rpb25fYnVyc3RfY291bnQpLAotICAgICAgLmVtcHR5ICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYnVyc3Rjb3VudF9maWZvX2VtcHR5KSwKLSAgICAgIC5maWZvX2NvbnRhaW5zX29uZXNfbiAoKSwKLSAgICAgIC5mdWxsICAgICAgICAgICAgICAgICAoKSwKLSAgICAgIC5yZWFkICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QpLAotICAgICAgLnJlc2V0X24gICAgICAgICAgICAgIChyZXNldF9uKSwKLSAgICAgIC5zeW5jX3Jlc2V0ICAgICAgICAgICAoMSdiMCksCi0gICAgICAud3JpdGUgICAgICAgICAgICAgICAgKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQgJiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbG9hZF9maWZvICYgfihjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdCAmIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9idXJzdGNvdW50X2ZpZm9fZW1wdHkpKQotICAgICk7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0gY3VycmVudCBidXJzdCBtaW51cyBvbmUsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fY3VycmVudF9idXJzdF9taW51c19vbmUgPSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fY3VycmVudF9idXJzdCAtIDE7Ci0KLSAgLy93aGF0IHRvIGxvYWQgaW4gY3VycmVudF9idXJzdCwgZm9yIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9uZXh0X2J1cnN0X2NvdW50ID0gKCgoaW5fYV9yZWFkX2N5Y2xlICYgfmN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0c19mb3JfcmVhZCkgJiB+Y3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2xvYWRfZmlmbykpPyBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fc2VsZWN0ZWRfYnVyc3Rjb3VudCA6Ci0gICAgKChpbl9hX3JlYWRfY3ljbGUgJiB+Y3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkICYgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QgJiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYnVyc3Rjb3VudF9maWZvX2VtcHR5KSk/IGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9zZWxlY3RlZF9idXJzdGNvdW50IDoKLSAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QpPyBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fdHJhbnNhY3Rpb25fYnVyc3RfY291bnQgOgotICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9jdXJyZW50X2J1cnN0X21pbnVzX29uZTsKLQotICAvL3RoZSBjdXJyZW50IGJ1cnN0IGNvdW50IGZvciBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0sIHRvIGJlIGRlY3JlbWVudGVkLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fY3VycmVudF9idXJzdCA8PSAwOwotICAgICAgZWxzZSBpZiAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYSB8ICh+Y3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2xvYWRfZmlmbyAmIChpbl9hX3JlYWRfY3ljbGUgJiB+Y3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkKSkpCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3QgPD0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX25leHRfYnVyc3RfY291bnQ7Ci0gICAgZW5kCi0KLQotICAvL2EgMSBvciBidXJzdGNvdW50IGZpZm8gZW1wdHksIHRvIGluaXRpYWxpemUgdGhlIGNvdW50ZXIsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbG9hZF9maWZvID0gKH5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbG9hZF9maWZvKT8gMSA6Ci0gICAgKCgoaW5fYV9yZWFkX2N5Y2xlICYgfmN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0c19mb3JfcmVhZCkgJiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbG9hZF9maWZvKSk/IDEgOgotICAgIH5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYnVyc3Rjb3VudF9maWZvX2VtcHR5OwotCi0gIC8vd2hldGhlciB0byBsb2FkIGRpcmVjdGx5IHRvIHRoZSBjb3VudGVyIG9yIHRvIHRoZSBmaWZvLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbG9hZF9maWZvIDw9IDA7Ci0gICAgICBlbHNlIGlmICgoaW5fYV9yZWFkX2N5Y2xlICYgfmN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0c19mb3JfcmVhZCkgJiB+Y3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2xvYWRfZmlmbyB8IGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0KQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9sb2FkX2ZpZm8gPD0gcDBfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2xvYWRfZmlmbzsKLSAgICBlbmQKLQotCi0gIC8vdGhlIGxhc3QgY3ljbGUgaW4gdGhlIGJ1cnN0IGZvciBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdCA9IH4ofGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9jdXJyZW50X2J1cnN0X21pbnVzX29uZSkgJiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhOwotCi0gIC8vcmR2X2ZpZm9fZm9yX2NwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfdG9fY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2ZpZm9fd2l0aF9yZWdpc3RlcmVkX291dHB1dHMKLSAgcmR2X2ZpZm9fZm9yX2NwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfdG9fY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX21vZHVsZSByZHZfZmlmb19mb3JfY3B1X2luc3RydWN0aW9uX21hc3Rlcl90b19jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0KLSAgICAoCi0gICAgICAuY2xlYXJfZmlmbyAgICAgICAgICAgKDEnYjApLAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgIChjbGspLAotICAgICAgLmRhdGFfaW4gICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtKSwKLSAgICAgIC5kYXRhX291dCAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZHZfZmlmb19vdXRwdXRfZnJvbV9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0pLAotICAgICAgLmVtcHR5ICAgICAgICAgICAgICAgICgpLAotICAgICAgLmZpZm9fY29udGFpbnNfb25lc19uIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3Jkdl9maWZvX2VtcHR5X2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSksCi0gICAgICAuZnVsbCAgICAgICAgICAgICAgICAgKCksCi0gICAgICAucmVhZCAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9tb3ZlX29uX3RvX25leHRfdHJhbnNhY3Rpb24pLAotICAgICAgLnJlc2V0X24gICAgICAgICAgICAgIChyZXNldF9uKSwKLSAgICAgIC5zeW5jX3Jlc2V0ICAgICAgICAgICAoMSdiMCksCi0gICAgICAud3JpdGUgICAgICAgICAgICAgICAgKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQpCi0gICAgKTsKLQotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyID0gfmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmR2X2ZpZm9fZW1wdHlfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtOwotICAvL2xvY2FsIHJlYWRkYXRhdmFsaWQgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtID0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYTsKLQotICAvL2J5dGVhZGRyZXNzIG11eCBmb3IgY3VzdG9tX2RtYV9idXJzdF8zL3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2J5dGVhZGRyZXNzID0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotCi0gIC8vbWFzdGVyIGlzIGFsd2F5cyBncmFudGVkIHdoZW4gcmVxdWVzdGVkCi0gIGFzc2lnbiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtID0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW07Ci0KLSAgLy9jcHUvaW5zdHJ1Y3Rpb25fbWFzdGVyIHNhdmVkLWdyYW50IGN1c3RvbV9kbWFfYnVyc3RfMy91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfc2F2ZWRfZ3JhbnRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtID0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW07Ci0KLSAgLy9hbGxvdyBuZXcgYXJiIGN5Y2xlIGZvciBjdXN0b21fZG1hX2J1cnN0XzMvdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYWxsb3dfbmV3X2FyYl9jeWNsZSA9IDE7Ci0KLSAgLy9wbGFjZWhvbGRlciBjaG9zZW4gbWFzdGVyCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZ3JhbnRfdmVjdG9yID0gMTsKLQotICAvL3BsYWNlaG9sZGVyIHZlY3RvciBvZiBtYXN0ZXIgcXVhbGlmaWVkLXJlcXVlc3RzCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fbWFzdGVyX3FyZXFfdmVjdG9yID0gMTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9maXJzdHRyYW5zZmVyIGZpcnN0IHRyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2ZpcnN0dHJhbnNmZXIgPSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYmVnaW5zX3hmZXIgPyBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fdW5yZWdfZmlyc3R0cmFuc2ZlciA6IGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWdfZmlyc3R0cmFuc2ZlcjsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV91bnJlZ19maXJzdHRyYW5zZmVyIGZpcnN0IHRyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3VucmVnX2ZpcnN0dHJhbnNmZXIgPSB+KGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlICYgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FueV9jb250aW51ZXJlcXVlc3QpOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlZ19maXJzdHRyYW5zZmVyIGZpcnN0IHRyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVnX2ZpcnN0dHJhbnNmZXIgPD0gMSdiMTsKLSAgICAgIGVsc2UgaWYgKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9iZWdpbnNfeGZlcikKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVnX2ZpcnN0dHJhbnNmZXIgPD0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3VucmVnX2ZpcnN0dHJhbnNmZXI7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9iZWdpbmJ1cnN0dHJhbnNmZXJfaW50ZXJuYWwgYmVnaW4gYnVyc3QgdHJhbnNmZXIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsID0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2JlZ2luc194ZmVyOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkID0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSAmIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93cml0ZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dyaXRlID0gMDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hZGRyZXNzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hZGRyZXNzID0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotCi0gIC8vZDFfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2VuZF94ZmVyIHJlZ2lzdGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZW5kX3hmZXIgPD0gMTsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9lbmRfeGZlciA8PSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0c19mb3JfcmVhZCBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkID0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSAmIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSA9IGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0gJiBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQ7Ci0KLSAgLy9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGluX2FfcmVhZF9jeWNsZSA9IGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9pbl9hX3JlYWRfY3ljbGU7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHNfZm9yX3dyaXRlIGluIGEgY3ljbGUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHNfZm9yX3dyaXRlID0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGUgJiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9pbl9hX3dyaXRlX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1faW5fYV93cml0ZV9jeWNsZSA9IDA7Ci0KLSAgLy9pbl9hX3dyaXRlX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBpbl9hX3dyaXRlX2N5Y2xlID0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGU7Ci0KLSAgYXNzaWduIHdhaXRfZm9yX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9jb3VudGVyID0gMDsKLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYnl0ZWVuYWJsZSBieXRlIGVuYWJsZSBwb3J0IG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9ieXRlZW5hYmxlID0gLTE7Ci0KLSAgLy9kZWJ1Z2FjY2VzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZGVidWdhY2Nlc3MgPSAwOwotCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zL3Vwc3RyZWFtIGVuYWJsZSBub24temVybyBhc3NlcnRpb25zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDEnYjE7Ci0gICAgZW5kCi0KLQotICAvL2NwdS9pbnN0cnVjdGlvbl9tYXN0ZXIgbm9uLXplcm8gYnVyc3Rjb3VudCBhc3NlcnRpb24sIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtICYmIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2J1cnN0Y291bnQgPT0gMCkgJiYgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucykKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3B1L2luc3RydWN0aW9uX21hc3RlciBkcm92ZSAwIG9uIGl0cyAnYnVyc3Rjb3VudCcgcG9ydCB3aGlsZSBhY2Nlc3Npbmcgc2xhdmUgY3VzdG9tX2RtYV9idXJzdF8zL3Vwc3RyZWFtIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMV9zaGlmdF9yZWdpc3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfZGRyX3NkcmFtX3MxX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX3JlYWRkYXRhX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfc2RyYW1fczFfd2FpdHJlcXVlc3Rfbl9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3Jlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93YWl0cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIG91dHB1dCAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZGRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXNldF9uOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hZGRyZXNzOwotICBpbnB1dCAgIFsgIDI6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczFfc2hpZnRfcmVnaXN0ZXI7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBkMV9kZHJfc2RyYW1fczFfZW5kX3hmZXI7Ci0gIGlucHV0ICAgWyAzMTogMF0gZGRyX3NkcmFtX3MxX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIGlucHV0ICAgICAgICAgICAgZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYTsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotCi0gIHJlZyAgICAgICAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZTsKLSAgcmVnICAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hZGRyZXNzX2xhc3RfdGltZTsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICByZWcgICAgIFsgIDI6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J1cnN0Y291bnRfbGFzdF90aW1lOwotICByZWcgICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J5dGVlbmFibGVfbGFzdF90aW1lOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2lzX2dyYW50ZWRfc29tZV9zbGF2ZTsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQ7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZF9sYXN0X3RpbWU7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3J1bjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93YWl0cmVxdWVzdDsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZV9sYXN0X3RpbWU7Ci0gIHJlZyAgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fd3JpdGVkYXRhX2xhc3RfdGltZTsKLSAgd2lyZSAgICAgICAgICAgICBsYXRlbmN5X2xvYWRfdmFsdWU7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyOwotICB3aXJlICAgICAgICAgICAgIHByZV9mbHVzaF9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIHJfMDsKLSAgLy9yXzAgbWFzdGVyX3J1biBjYXNjYWRlZCB3YWl0IGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiByXzAgPSAxICYgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMSB8IH5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEpICYgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxIHwgfmN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMSkgJiAoKH5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEgfCB+KGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWQgfCBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZSkgfCAoMSAmIGRkcl9zZHJhbV9zMV93YWl0cmVxdWVzdF9uX2Zyb21fc2EgJiAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlKSkpKSAmICgofmN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMSB8IH4oY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlKSB8ICgxICYgZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYSAmIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fd3JpdGUpKSkpOwotCi0gIC8vY2FzY2FkZWQgd2FpdCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcnVuID0gcl8wOwotCi0gIC8vb3B0aW1pemUgc2VsZWN0LWxvZ2ljIGJ5IHBhc3Npbmcgb25seSB0aG9zZSBhZGRyZXNzIGJpdHMgd2hpY2ggbWF0dGVyLgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSA9IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2FkZHJlc3M7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgPD0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZCAmIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3J1biAmIH5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9pc19ncmFudGVkX3NvbWVfc2xhdmU7Ci0gICAgZW5kCi0KLQotICAvL3NvbWUgc2xhdmUgaXMgZ2V0dGluZyBzZWxlY3RlZCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2lzX2dyYW50ZWRfc29tZV9zbGF2ZSA9IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxOwotCi0gIC8vbGF0ZW50IHNsYXZlIHJlYWQgZGF0YSB2YWxpZHMgd2hpY2ggbWF5IGJlIGZsdXNoZWQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwcmVfZmx1c2hfY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCA9IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczE7Ci0KLSAgLy9sYXRlbnQgc2xhdmUgcmVhZCBkYXRhIHZhbGlkIHdoaWNoIGlzIG5vdCBmbHVzaGVkLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCA9IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkIHwKLSAgICBwcmVfZmx1c2hfY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMy9kb3duc3RyZWFtIHJlYWRkYXRhIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRkYXRhID0gZGRyX3NkcmFtX3MxX3JlYWRkYXRhX2Zyb21fc2E7Ci0KLSAgLy9hY3R1YWwgd2FpdHJlcXVlc3QgcG9ydCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ID0gfmN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3J1bjsKLQotICAvL2xhdGVudCBtYXggY291bnRlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIgPD0gcDFfY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyOwotICAgIGVuZAotCi0KLSAgLy9sYXRlbmN5IGNvdW50ZXIgbG9hZCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMV9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIgPSAoKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3J1biAmIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWQpKT8gbGF0ZW5jeV9sb2FkX3ZhbHVlIDoKLSAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyKT8gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyIC0gMSA6Ci0gICAgMDsKLQotICAvL3JlYWQgbGF0ZW5jeSBsb2FkIHZhbHVlcywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGxhdGVuY3lfbG9hZF92YWx1ZSA9IDA7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXNldF9uIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXNldF9uID0gcmVzZXRfbjsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvL2N1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2FkZHJlc3MgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hZGRyZXNzX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzc19sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zL2Rvd25zdHJlYW0gd2FpdGVkIGxhc3QgdGltZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93YWl0cmVxdWVzdCAmIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fd3JpdGUpOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hZGRyZXNzIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzcyAhPSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hZGRyZXNzX2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2FkZHJlc3MgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9idXJzdGNvdW50IGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnVyc3Rjb3VudF9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J1cnN0Y291bnRfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J1cnN0Y291bnQgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9idXJzdGNvdW50ICE9IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J1cnN0Y291bnRfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J5dGVlbmFibGUgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ieXRlZW5hYmxlX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZV9sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J5dGVlbmFibGUgIT0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZV9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ieXRlZW5hYmxlIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZCBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZCAhPSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWQgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZSBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fd3JpdGVfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZSBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlICE9IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlX2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fd3JpdGVkYXRhIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fd3JpdGVkYXRhX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fd3JpdGVkYXRhX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlZGF0YSBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlZGF0YSAhPSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZWRhdGFfbGFzdF90aW1lKSAmIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZWRhdGEgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgYnVyc3Rjb3VudF9maWZvX2Zvcl9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fbW9kdWxlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2ZpZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luY19yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgIDM6IDBdIGRhdGFfb3V0OwotICBvdXRwdXQgICAgICAgICAgIGVtcHR5OwotICBvdXRwdXQgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICBvdXRwdXQgICAgICAgICAgIGZ1bGw7Ci0gIGlucHV0ICAgICAgICAgICAgY2xlYXJfZmlmbzsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAgMzogMF0gZGF0YV9pbjsKLSAgaW5wdXQgICAgICAgICAgICByZWFkOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgc3luY19yZXNldDsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZTsKLQotICB3aXJlICAgIFsgIDM6IDBdIGRhdGFfb3V0OwotICB3aXJlICAgICAgICAgICAgIGVtcHR5OwotICByZWcgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICB3aXJlICAgICAgICAgICAgIGZ1bGw7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8wOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEwOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTE7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xMjsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEzOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTQ7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xNTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE2OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTc7Ci0gIHdpcmUgICAgICAgICAgICAgZnVsbF8xODsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzI7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8zOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzU7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF82OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzg7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF85OwotICByZWcgICAgIFsgIDU6IDBdIGhvd19tYW55X29uZXM7Ci0gIHdpcmUgICAgWyAgNTogMF0gb25lX2NvdW50X21pbnVzX29uZTsKLSAgd2lyZSAgICBbICA1OiAwXSBvbmVfY291bnRfcGx1c19vbmU7Ci0gIHdpcmUgICAgICAgICAgICAgcDBfZnVsbF8wOwotICB3aXJlICAgIFsgIDM6IDBdIHAwX3N0YWdlXzA7Ci0gIHdpcmUgICAgICAgICAgICAgcDEwX2Z1bGxfMTA7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDEwX3N0YWdlXzEwOwotICB3aXJlICAgICAgICAgICAgIHAxMV9mdWxsXzExOwotICB3aXJlICAgIFsgIDM6IDBdIHAxMV9zdGFnZV8xMTsKLSAgd2lyZSAgICAgICAgICAgICBwMTJfZnVsbF8xMjsKLSAgd2lyZSAgICBbICAzOiAwXSBwMTJfc3RhZ2VfMTI7Ci0gIHdpcmUgICAgICAgICAgICAgcDEzX2Z1bGxfMTM7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDEzX3N0YWdlXzEzOwotICB3aXJlICAgICAgICAgICAgIHAxNF9mdWxsXzE0OwotICB3aXJlICAgIFsgIDM6IDBdIHAxNF9zdGFnZV8xNDsKLSAgd2lyZSAgICAgICAgICAgICBwMTVfZnVsbF8xNTsKLSAgd2lyZSAgICBbICAzOiAwXSBwMTVfc3RhZ2VfMTU7Ci0gIHdpcmUgICAgICAgICAgICAgcDE2X2Z1bGxfMTY7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDE2X3N0YWdlXzE2OwotICB3aXJlICAgICAgICAgICAgIHAxN19mdWxsXzE3OwotICB3aXJlICAgIFsgIDM6IDBdIHAxN19zdGFnZV8xNzsKLSAgd2lyZSAgICAgICAgICAgICBwMV9mdWxsXzE7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDFfc3RhZ2VfMTsKLSAgd2lyZSAgICAgICAgICAgICBwMl9mdWxsXzI7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDJfc3RhZ2VfMjsKLSAgd2lyZSAgICAgICAgICAgICBwM19mdWxsXzM7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDNfc3RhZ2VfMzsKLSAgd2lyZSAgICAgICAgICAgICBwNF9mdWxsXzQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDRfc3RhZ2VfNDsKLSAgd2lyZSAgICAgICAgICAgICBwNV9mdWxsXzU7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDVfc3RhZ2VfNTsKLSAgd2lyZSAgICAgICAgICAgICBwNl9mdWxsXzY7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDZfc3RhZ2VfNjsKLSAgd2lyZSAgICAgICAgICAgICBwN19mdWxsXzc7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDdfc3RhZ2VfNzsKLSAgd2lyZSAgICAgICAgICAgICBwOF9mdWxsXzg7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDhfc3RhZ2VfODsKLSAgd2lyZSAgICAgICAgICAgICBwOV9mdWxsXzk7Ci0gIHdpcmUgICAgWyAgMzogMF0gcDlfc3RhZ2VfOTsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV8wOwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzE7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTA7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTE7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTI7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTM7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTQ7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTU7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTY7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMTc7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfMjsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV8zOwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzQ7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfNTsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV82OwotICByZWcgICAgIFsgIDM6IDBdIHN0YWdlXzc7Ci0gIHJlZyAgICAgWyAgMzogMF0gc3RhZ2VfODsKLSAgcmVnICAgICBbICAzOiAwXSBzdGFnZV85OwotICB3aXJlICAgIFsgIDU6IDBdIHVwZGF0ZWRfb25lX2NvdW50OwotICBhc3NpZ24gZGF0YV9vdXQgPSBzdGFnZV8wOwotICBhc3NpZ24gZnVsbCA9IGZ1bGxfMTc7Ci0gIGFzc2lnbiBlbXB0eSA9ICFmdWxsXzA7Ci0gIGFzc2lnbiBmdWxsXzE4ID0gMDsKLSAgLy9kYXRhXzE3LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE3X3N0YWdlXzE3ID0gKChmdWxsXzE4ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBkYXRhX2luOwotCi0gIC8vZGF0YV9yZWdfMTcsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzE3IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xNykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzE3ICYgISgoZnVsbF8xOCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzE3IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzE3IDw9IHAxN19zdGFnZV8xNzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xNywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxN19mdWxsXzE3ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xNiA6Ci0gICAgMDsKLQotICAvL2NvbnRyb2xfcmVnXzE3LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzE3IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xNyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzE3IDw9IHAxN19mdWxsXzE3OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzE2LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE2X3N0YWdlXzE2ID0gKChmdWxsXzE3ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xNzsKLQotICAvL2RhdGFfcmVnXzE2LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTYpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xNiAmICEoKGZ1bGxfMTcgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xNiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xNiA8PSBwMTZfc3RhZ2VfMTY7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTYsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTZfZnVsbF8xNiA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTUgOgotICAgIGZ1bGxfMTc7Ci0KLSAgLy9jb250cm9sX3JlZ18xNiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTYgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xNiA8PSBwMTZfZnVsbF8xNjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xNSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNV9zdGFnZV8xNSA9ICgoZnVsbF8xNiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTY7Ci0KLSAgLy9kYXRhX3JlZ18xNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzE1KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTUgJiAhKChmdWxsXzE2ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTUgPD0gcDE1X3N0YWdlXzE1OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzE1LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE1X2Z1bGxfMTUgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzE0IDoKLSAgICBmdWxsXzE2OwotCi0gIC8vY29udHJvbF9yZWdfMTUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzE1IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTUgPD0gcDE1X2Z1bGxfMTU7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTRfc3RhZ2VfMTQgPSAoKGZ1bGxfMTUgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzE1OwotCi0gIC8vZGF0YV9yZWdfMTQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzE0ICYgISgoZnVsbF8xNSA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzE0IDw9IHAxNF9zdGFnZV8xNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNF9mdWxsXzE0ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMyA6Ci0gICAgZnVsbF8xNTsKLQotICAvL2NvbnRyb2xfcmVnXzE0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzE0IDw9IHAxNF9mdWxsXzE0OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEzX3N0YWdlXzEzID0gKChmdWxsXzE0ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xNDsKLQotICAvL2RhdGFfcmVnXzEzLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTMpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMyAmICEoKGZ1bGxfMTQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMyA8PSBwMTNfc3RhZ2VfMTM7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTNfZnVsbF8xMyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTIgOgotICAgIGZ1bGxfMTQ7Ci0KLSAgLy9jb250cm9sX3JlZ18xMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xMyA8PSBwMTNfZnVsbF8xMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMl9zdGFnZV8xMiA9ICgoZnVsbF8xMyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTM7Ci0KLSAgLy9kYXRhX3JlZ18xMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEyKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTIgJiAhKChmdWxsXzEzID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTIgPD0gcDEyX3N0YWdlXzEyOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzEyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEyX2Z1bGxfMTIgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzExIDoKLSAgICBmdWxsXzEzOwotCi0gIC8vY29udHJvbF9yZWdfMTIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEyIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTIgPD0gcDEyX2Z1bGxfMTI7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTFfc3RhZ2VfMTEgPSAoKGZ1bGxfMTIgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzEyOwotCi0gIC8vZGF0YV9yZWdfMTEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzExICYgISgoZnVsbF8xMiA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzExIDw9IHAxMV9zdGFnZV8xMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMV9mdWxsXzExID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMCA6Ci0gICAgZnVsbF8xMjsKLQotICAvL2NvbnRyb2xfcmVnXzExLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzExIDw9IHAxMV9mdWxsXzExOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEwLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEwX3N0YWdlXzEwID0gKChmdWxsXzExICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMTsKLQotICAvL2RhdGFfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTApKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMCAmICEoKGZ1bGxfMTEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMCA8PSBwMTBfc3RhZ2VfMTA7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTAsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTBfZnVsbF8xMCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfOSA6Ci0gICAgZnVsbF8xMTsKLQotICAvL2NvbnRyb2xfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEwIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzEwIDw9IHAxMF9mdWxsXzEwOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9zdGFnZV85ID0gKChmdWxsXzEwICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMDsKLQotICAvL2RhdGFfcmVnXzksIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzkpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF85ICYgISgoZnVsbF8xMCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfOSA8PSBwOV9zdGFnZV85OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9mdWxsXzkgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzggOgotICAgIGZ1bGxfMTA7Ci0KLSAgLy9jb250cm9sX3JlZ185LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF85IDw9IHA5X2Z1bGxfOTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfc3RhZ2VfOCA9ICgoZnVsbF85ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV85OwotCi0gIC8vZGF0YV9yZWdfOCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfOCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfOCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzggJiAhKChmdWxsXzkgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV84IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzggPD0gcDhfc3RhZ2VfODsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfZnVsbF84ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF83IDoKLSAgICBmdWxsXzk7Ci0KLSAgLy9jb250cm9sX3JlZ184LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF84IDw9IHA4X2Z1bGxfODsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfc3RhZ2VfNyA9ICgoZnVsbF84ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV84OwotCi0gIC8vZGF0YV9yZWdfNywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzcgJiAhKChmdWxsXzggPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV83IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzcgPD0gcDdfc3RhZ2VfNzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfZnVsbF83ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF82IDoKLSAgICBmdWxsXzg7Ci0KLSAgLy9jb250cm9sX3JlZ183LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF83IDw9IHA3X2Z1bGxfNzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfc3RhZ2VfNiA9ICgoZnVsbF83ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV83OwotCi0gIC8vZGF0YV9yZWdfNiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzYgJiAhKChmdWxsXzcgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV82IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzYgPD0gcDZfc3RhZ2VfNjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfZnVsbF82ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF81IDoKLSAgICBmdWxsXzc7Ci0KLSAgLy9jb250cm9sX3JlZ182LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF82IDw9IHA2X2Z1bGxfNjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfc3RhZ2VfNSA9ICgoZnVsbF82ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV82OwotCi0gIC8vZGF0YV9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzUgJiAhKChmdWxsXzYgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzUgPD0gcDVfc3RhZ2VfNTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfZnVsbF81ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF80IDoKLSAgICBmdWxsXzY7Ci0KLSAgLy9jb250cm9sX3JlZ181LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF81IDw9IHA1X2Z1bGxfNTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfc3RhZ2VfNCA9ICgoZnVsbF81ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV81OwotCi0gIC8vZGF0YV9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzQgJiAhKChmdWxsXzUgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzQgPD0gcDRfc3RhZ2VfNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfZnVsbF80ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8zIDoKLSAgICBmdWxsXzU7Ci0KLSAgLy9jb250cm9sX3JlZ180LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF80IDw9IHA0X2Z1bGxfNDsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfc3RhZ2VfMyA9ICgoZnVsbF80ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV80OwotCi0gIC8vZGF0YV9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzMgJiAhKChmdWxsXzQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzMgPD0gcDNfc3RhZ2VfMzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfZnVsbF8zID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8yIDoKLSAgICBmdWxsXzQ7Ci0KLSAgLy9jb250cm9sX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8zIDw9IHAzX2Z1bGxfMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfc3RhZ2VfMiA9ICgoZnVsbF8zICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8zOwotCi0gIC8vZGF0YV9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzIgJiAhKChmdWxsXzMgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzIgPD0gcDJfc3RhZ2VfMjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfZnVsbF8yID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xIDoKLSAgICBmdWxsXzM7Ci0KLSAgLy9jb250cm9sX3JlZ18yLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8yIDw9IHAyX2Z1bGxfMjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfc3RhZ2VfMSA9ICgoZnVsbF8yICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8yOwotCi0gIC8vZGF0YV9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEgJiAhKChmdWxsXzIgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEgPD0gcDFfc3RhZ2VfMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfZnVsbF8xID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8wIDoKLSAgICBmdWxsXzI7Ci0KLSAgLy9jb250cm9sX3JlZ18xLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xIDw9IHAxX2Z1bGxfMTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfc3RhZ2VfMCA9ICgoZnVsbF8xICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xOwotCi0gIC8vZGF0YV9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzAgJiAhKChmdWxsXzEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzAgPD0gcDBfc3RhZ2VfMDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfZnVsbF8wID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gMSA6Ci0gICAgZnVsbF8xOwotCi0gIC8vY29udHJvbF9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbyAmIH53cml0ZSkKLSAgICAgICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMCA8PSBwMF9mdWxsXzA7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gb25lX2NvdW50X3BsdXNfb25lID0gaG93X21hbnlfb25lcyArIDE7Ci0gIGFzc2lnbiBvbmVfY291bnRfbWludXNfb25lID0gaG93X21hbnlfb25lcyAtIDE7Ci0gIC8vdXBkYXRlZF9vbmVfY291bnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB1cGRhdGVkX29uZV9jb3VudCA9ICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiAhd3JpdGUpKSk/IDAgOgotICAgICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiB3cml0ZSkpKT8gfGRhdGFfaW4gOgotICAgICgocmVhZCAmICh8ZGF0YV9pbikgJiB3cml0ZSAmICh8c3RhZ2VfMCkpKT8gaG93X21hbnlfb25lcyA6Ci0gICAgKCh3cml0ZSAmICh8ZGF0YV9pbikpKT8gb25lX2NvdW50X3BsdXNfb25lIDoKLSAgICAoKHJlYWQgJiAofHN0YWdlXzApKSk/IG9uZV9jb3VudF9taW51c19vbmUgOgotICAgIGhvd19tYW55X29uZXM7Ci0KLSAgLy9jb3VudHMgaG93IG1hbnkgb25lcyBpbiB0aGUgZGF0YSBwaXBlbGluZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSB1cGRhdGVkX29uZV9jb3VudDsKLSAgICBlbmQKLQotCi0gIC8vdGhpcyBmaWZvIGNvbnRhaW5zIG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uIDw9IDE7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCB3cml0ZSkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSB+KHx1cGRhdGVkX29uZV9jb3VudCk7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcmR2X2ZpZm9fZm9yX2NwdV9kYXRhX21hc3Rlcl90b19jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fbW9kdWxlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2ZpZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luY19yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGRhdGFfb3V0OwotICBvdXRwdXQgICAgICAgICAgIGVtcHR5OwotICBvdXRwdXQgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICBvdXRwdXQgICAgICAgICAgIGZ1bGw7Ci0gIGlucHV0ICAgICAgICAgICAgY2xlYXJfZmlmbzsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgICAgICAgICAgZGF0YV9pbjsKLSAgaW5wdXQgICAgICAgICAgICByZWFkOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgc3luY19yZXNldDsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZTsKLQotICB3aXJlICAgICAgICAgICAgIGRhdGFfb3V0OwotICB3aXJlICAgICAgICAgICAgIGVtcHR5OwotICByZWcgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICB3aXJlICAgICAgICAgICAgIGZ1bGw7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8wOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEwOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTE7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xMjsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEzOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTQ7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xNTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE2OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTc7Ci0gIHdpcmUgICAgICAgICAgICAgZnVsbF8xODsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzI7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8zOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzU7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF82OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzg7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF85OwotICByZWcgICAgIFsgIDU6IDBdIGhvd19tYW55X29uZXM7Ci0gIHdpcmUgICAgWyAgNTogMF0gb25lX2NvdW50X21pbnVzX29uZTsKLSAgd2lyZSAgICBbICA1OiAwXSBvbmVfY291bnRfcGx1c19vbmU7Ci0gIHdpcmUgICAgICAgICAgICAgcDBfZnVsbF8wOwotICB3aXJlICAgICAgICAgICAgIHAwX3N0YWdlXzA7Ci0gIHdpcmUgICAgICAgICAgICAgcDEwX2Z1bGxfMTA7Ci0gIHdpcmUgICAgICAgICAgICAgcDEwX3N0YWdlXzEwOwotICB3aXJlICAgICAgICAgICAgIHAxMV9mdWxsXzExOwotICB3aXJlICAgICAgICAgICAgIHAxMV9zdGFnZV8xMTsKLSAgd2lyZSAgICAgICAgICAgICBwMTJfZnVsbF8xMjsKLSAgd2lyZSAgICAgICAgICAgICBwMTJfc3RhZ2VfMTI7Ci0gIHdpcmUgICAgICAgICAgICAgcDEzX2Z1bGxfMTM7Ci0gIHdpcmUgICAgICAgICAgICAgcDEzX3N0YWdlXzEzOwotICB3aXJlICAgICAgICAgICAgIHAxNF9mdWxsXzE0OwotICB3aXJlICAgICAgICAgICAgIHAxNF9zdGFnZV8xNDsKLSAgd2lyZSAgICAgICAgICAgICBwMTVfZnVsbF8xNTsKLSAgd2lyZSAgICAgICAgICAgICBwMTVfc3RhZ2VfMTU7Ci0gIHdpcmUgICAgICAgICAgICAgcDE2X2Z1bGxfMTY7Ci0gIHdpcmUgICAgICAgICAgICAgcDE2X3N0YWdlXzE2OwotICB3aXJlICAgICAgICAgICAgIHAxN19mdWxsXzE3OwotICB3aXJlICAgICAgICAgICAgIHAxN19zdGFnZV8xNzsKLSAgd2lyZSAgICAgICAgICAgICBwMV9mdWxsXzE7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfc3RhZ2VfMTsKLSAgd2lyZSAgICAgICAgICAgICBwMl9mdWxsXzI7Ci0gIHdpcmUgICAgICAgICAgICAgcDJfc3RhZ2VfMjsKLSAgd2lyZSAgICAgICAgICAgICBwM19mdWxsXzM7Ci0gIHdpcmUgICAgICAgICAgICAgcDNfc3RhZ2VfMzsKLSAgd2lyZSAgICAgICAgICAgICBwNF9mdWxsXzQ7Ci0gIHdpcmUgICAgICAgICAgICAgcDRfc3RhZ2VfNDsKLSAgd2lyZSAgICAgICAgICAgICBwNV9mdWxsXzU7Ci0gIHdpcmUgICAgICAgICAgICAgcDVfc3RhZ2VfNTsKLSAgd2lyZSAgICAgICAgICAgICBwNl9mdWxsXzY7Ci0gIHdpcmUgICAgICAgICAgICAgcDZfc3RhZ2VfNjsKLSAgd2lyZSAgICAgICAgICAgICBwN19mdWxsXzc7Ci0gIHdpcmUgICAgICAgICAgICAgcDdfc3RhZ2VfNzsKLSAgd2lyZSAgICAgICAgICAgICBwOF9mdWxsXzg7Ci0gIHdpcmUgICAgICAgICAgICAgcDhfc3RhZ2VfODsKLSAgd2lyZSAgICAgICAgICAgICBwOV9mdWxsXzk7Ci0gIHdpcmUgICAgICAgICAgICAgcDlfc3RhZ2VfOTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8wOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzE7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTA7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTE7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTI7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTM7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTQ7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTU7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTY7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTc7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMjsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8zOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzQ7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfNTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV82OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzc7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfODsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV85OwotICB3aXJlICAgIFsgIDU6IDBdIHVwZGF0ZWRfb25lX2NvdW50OwotICBhc3NpZ24gZGF0YV9vdXQgPSBzdGFnZV8wOwotICBhc3NpZ24gZnVsbCA9IGZ1bGxfMTc7Ci0gIGFzc2lnbiBlbXB0eSA9ICFmdWxsXzA7Ci0gIGFzc2lnbiBmdWxsXzE4ID0gMDsKLSAgLy9kYXRhXzE3LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE3X3N0YWdlXzE3ID0gKChmdWxsXzE4ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBkYXRhX2luOwotCi0gIC8vZGF0YV9yZWdfMTcsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzE3IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xNykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzE3ICYgISgoZnVsbF8xOCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzE3IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzE3IDw9IHAxN19zdGFnZV8xNzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xNywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxN19mdWxsXzE3ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xNiA6Ci0gICAgMDsKLQotICAvL2NvbnRyb2xfcmVnXzE3LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzE3IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xNyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzE3IDw9IHAxN19mdWxsXzE3OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzE2LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE2X3N0YWdlXzE2ID0gKChmdWxsXzE3ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xNzsKLQotICAvL2RhdGFfcmVnXzE2LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTYpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xNiAmICEoKGZ1bGxfMTcgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xNiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xNiA8PSBwMTZfc3RhZ2VfMTY7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTYsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTZfZnVsbF8xNiA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTUgOgotICAgIGZ1bGxfMTc7Ci0KLSAgLy9jb250cm9sX3JlZ18xNiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTYgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xNiA8PSBwMTZfZnVsbF8xNjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xNSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNV9zdGFnZV8xNSA9ICgoZnVsbF8xNiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTY7Ci0KLSAgLy9kYXRhX3JlZ18xNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzE1KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTUgJiAhKChmdWxsXzE2ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTUgPD0gcDE1X3N0YWdlXzE1OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzE1LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE1X2Z1bGxfMTUgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzE0IDoKLSAgICBmdWxsXzE2OwotCi0gIC8vY29udHJvbF9yZWdfMTUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzE1IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTUgPD0gcDE1X2Z1bGxfMTU7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTRfc3RhZ2VfMTQgPSAoKGZ1bGxfMTUgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzE1OwotCi0gIC8vZGF0YV9yZWdfMTQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzE0ICYgISgoZnVsbF8xNSA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzE0IDw9IHAxNF9zdGFnZV8xNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNF9mdWxsXzE0ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMyA6Ci0gICAgZnVsbF8xNTsKLQotICAvL2NvbnRyb2xfcmVnXzE0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzE0IDw9IHAxNF9mdWxsXzE0OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEzX3N0YWdlXzEzID0gKChmdWxsXzE0ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xNDsKLQotICAvL2RhdGFfcmVnXzEzLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTMpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMyAmICEoKGZ1bGxfMTQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMyA8PSBwMTNfc3RhZ2VfMTM7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTNfZnVsbF8xMyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTIgOgotICAgIGZ1bGxfMTQ7Ci0KLSAgLy9jb250cm9sX3JlZ18xMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xMyA8PSBwMTNfZnVsbF8xMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMl9zdGFnZV8xMiA9ICgoZnVsbF8xMyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTM7Ci0KLSAgLy9kYXRhX3JlZ18xMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEyKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTIgJiAhKChmdWxsXzEzID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTIgPD0gcDEyX3N0YWdlXzEyOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzEyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEyX2Z1bGxfMTIgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzExIDoKLSAgICBmdWxsXzEzOwotCi0gIC8vY29udHJvbF9yZWdfMTIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEyIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTIgPD0gcDEyX2Z1bGxfMTI7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTFfc3RhZ2VfMTEgPSAoKGZ1bGxfMTIgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzEyOwotCi0gIC8vZGF0YV9yZWdfMTEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzExICYgISgoZnVsbF8xMiA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzExIDw9IHAxMV9zdGFnZV8xMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMV9mdWxsXzExID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMCA6Ci0gICAgZnVsbF8xMjsKLQotICAvL2NvbnRyb2xfcmVnXzExLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzExIDw9IHAxMV9mdWxsXzExOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEwLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEwX3N0YWdlXzEwID0gKChmdWxsXzExICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMTsKLQotICAvL2RhdGFfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTApKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMCAmICEoKGZ1bGxfMTEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMCA8PSBwMTBfc3RhZ2VfMTA7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTAsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTBfZnVsbF8xMCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfOSA6Ci0gICAgZnVsbF8xMTsKLQotICAvL2NvbnRyb2xfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEwIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzEwIDw9IHAxMF9mdWxsXzEwOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9zdGFnZV85ID0gKChmdWxsXzEwICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMDsKLQotICAvL2RhdGFfcmVnXzksIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzkpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF85ICYgISgoZnVsbF8xMCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfOSA8PSBwOV9zdGFnZV85OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9mdWxsXzkgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzggOgotICAgIGZ1bGxfMTA7Ci0KLSAgLy9jb250cm9sX3JlZ185LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF85IDw9IHA5X2Z1bGxfOTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfc3RhZ2VfOCA9ICgoZnVsbF85ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV85OwotCi0gIC8vZGF0YV9yZWdfOCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfOCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfOCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzggJiAhKChmdWxsXzkgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV84IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzggPD0gcDhfc3RhZ2VfODsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfZnVsbF84ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF83IDoKLSAgICBmdWxsXzk7Ci0KLSAgLy9jb250cm9sX3JlZ184LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF84IDw9IHA4X2Z1bGxfODsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfc3RhZ2VfNyA9ICgoZnVsbF84ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV84OwotCi0gIC8vZGF0YV9yZWdfNywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzcgJiAhKChmdWxsXzggPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV83IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzcgPD0gcDdfc3RhZ2VfNzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfZnVsbF83ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF82IDoKLSAgICBmdWxsXzg7Ci0KLSAgLy9jb250cm9sX3JlZ183LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF83IDw9IHA3X2Z1bGxfNzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfc3RhZ2VfNiA9ICgoZnVsbF83ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV83OwotCi0gIC8vZGF0YV9yZWdfNiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzYgJiAhKChmdWxsXzcgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV82IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzYgPD0gcDZfc3RhZ2VfNjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfZnVsbF82ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF81IDoKLSAgICBmdWxsXzc7Ci0KLSAgLy9jb250cm9sX3JlZ182LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF82IDw9IHA2X2Z1bGxfNjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfc3RhZ2VfNSA9ICgoZnVsbF82ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV82OwotCi0gIC8vZGF0YV9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzUgJiAhKChmdWxsXzYgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzUgPD0gcDVfc3RhZ2VfNTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfZnVsbF81ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF80IDoKLSAgICBmdWxsXzY7Ci0KLSAgLy9jb250cm9sX3JlZ181LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF81IDw9IHA1X2Z1bGxfNTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfc3RhZ2VfNCA9ICgoZnVsbF81ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV81OwotCi0gIC8vZGF0YV9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzQgJiAhKChmdWxsXzUgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzQgPD0gcDRfc3RhZ2VfNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfZnVsbF80ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8zIDoKLSAgICBmdWxsXzU7Ci0KLSAgLy9jb250cm9sX3JlZ180LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF80IDw9IHA0X2Z1bGxfNDsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfc3RhZ2VfMyA9ICgoZnVsbF80ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV80OwotCi0gIC8vZGF0YV9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzMgJiAhKChmdWxsXzQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzMgPD0gcDNfc3RhZ2VfMzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfZnVsbF8zID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8yIDoKLSAgICBmdWxsXzQ7Ci0KLSAgLy9jb250cm9sX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8zIDw9IHAzX2Z1bGxfMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfc3RhZ2VfMiA9ICgoZnVsbF8zICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8zOwotCi0gIC8vZGF0YV9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzIgJiAhKChmdWxsXzMgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzIgPD0gcDJfc3RhZ2VfMjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfZnVsbF8yID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xIDoKLSAgICBmdWxsXzM7Ci0KLSAgLy9jb250cm9sX3JlZ18yLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8yIDw9IHAyX2Z1bGxfMjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfc3RhZ2VfMSA9ICgoZnVsbF8yICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8yOwotCi0gIC8vZGF0YV9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEgJiAhKChmdWxsXzIgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEgPD0gcDFfc3RhZ2VfMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfZnVsbF8xID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8wIDoKLSAgICBmdWxsXzI7Ci0KLSAgLy9jb250cm9sX3JlZ18xLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xIDw9IHAxX2Z1bGxfMTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfc3RhZ2VfMCA9ICgoZnVsbF8xICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xOwotCi0gIC8vZGF0YV9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzAgJiAhKChmdWxsXzEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzAgPD0gcDBfc3RhZ2VfMDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfZnVsbF8wID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gMSA6Ci0gICAgZnVsbF8xOwotCi0gIC8vY29udHJvbF9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbyAmIH53cml0ZSkKLSAgICAgICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMCA8PSBwMF9mdWxsXzA7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gb25lX2NvdW50X3BsdXNfb25lID0gaG93X21hbnlfb25lcyArIDE7Ci0gIGFzc2lnbiBvbmVfY291bnRfbWludXNfb25lID0gaG93X21hbnlfb25lcyAtIDE7Ci0gIC8vdXBkYXRlZF9vbmVfY291bnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB1cGRhdGVkX29uZV9jb3VudCA9ICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiAhd3JpdGUpKSk/IDAgOgotICAgICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiB3cml0ZSkpKT8gfGRhdGFfaW4gOgotICAgICgocmVhZCAmICh8ZGF0YV9pbikgJiB3cml0ZSAmICh8c3RhZ2VfMCkpKT8gaG93X21hbnlfb25lcyA6Ci0gICAgKCh3cml0ZSAmICh8ZGF0YV9pbikpKT8gb25lX2NvdW50X3BsdXNfb25lIDoKLSAgICAoKHJlYWQgJiAofHN0YWdlXzApKSk/IG9uZV9jb3VudF9taW51c19vbmUgOgotICAgIGhvd19tYW55X29uZXM7Ci0KLSAgLy9jb3VudHMgaG93IG1hbnkgb25lcyBpbiB0aGUgZGF0YSBwaXBlbGluZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSB1cGRhdGVkX29uZV9jb3VudDsKLSAgICBlbmQKLQotCi0gIC8vdGhpcyBmaWZvIGNvbnRhaW5zIG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uIDw9IDE7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCB3cml0ZSkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSB+KHx1cGRhdGVkX29uZV9jb3VudCk7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnl0ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9lbmRfeGZlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbTsKLSAgb3V0cHV0ICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICBvdXRwdXQgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW07Ci0gIG91dHB1dCAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIG91dHB1dCAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIG91dHB1dCAgWyAyNjogMF0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J5dGVhZGRyZXNzOwotICBvdXRwdXQgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9ieXRlZW5hYmxlOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZDsKLSAgb3V0cHV0ICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dyaXRlZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgMjY6IDBdIGNwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotICBpbnB1dCAgIFsgIDM6IDBdIGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50OwotICBpbnB1dCAgIFsgIDM6IDBdIGNwdV9kYXRhX21hc3Rlcl9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9kZWJ1Z2FjY2VzczsKLSAgaW5wdXQgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICBpbnB1dCAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjcHVfZGF0YV9tYXN0ZXJfd3JpdGVkYXRhOwotICBpbnB1dCAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9jb250aW51ZXJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3Jkdl9maWZvX2VtcHR5X2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmR2X2ZpZm9fb3V0cHV0X2Zyb21fY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3NhdmVkX2dyYW50X2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbTsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYWxsZ3JhbnRzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hbGxvd19uZXdfYXJiX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hbnlfY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hcmJfY291bnRlcl9lbmFibGU7Ci0gIHJlZyAgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hcmJfc2hhcmVfc2V0X3ZhbHVlczsKLSAgcmVnICAgICBbICAyOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9iZWdpbnNfeGZlcjsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnVyc3Rjb3VudF9maWZvX2VtcHR5OwotICB3aXJlICAgIFsgMjY6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9ieXRlYWRkcmVzczsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgcmVnICAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fY3VycmVudF9idXJzdDsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fY3VycmVudF9idXJzdF9taW51c19vbmU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9lbmRfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZ3JhbnRfdmVjdG9yOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9pbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGU7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2xvYWRfZmlmbzsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fbWFzdGVyX3FyZXFfdmVjdG9yOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9tb3ZlX29uX3RvX25leHRfdHJhbnNhY3Rpb247Ci0gIHdpcmUgICAgWyAgMjogMF0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX25leHRfYmJ0X2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX25leHRfYnVyc3RfY291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHM7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYTsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NlbGVjdGVkX2J1cnN0Y291bnQ7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0OwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV90cmFuc2FjdGlvbl9idXJzdF9jb3VudDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRzX2Zvcl93cml0ZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dyaXRlZGF0YTsKLSAgcmVnICAgICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfcmVhc29uc190b193YWl0OwotICByZWcgICAgICAgICAgICAgIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnM7Ci0gIHdpcmUgICAgICAgICAgICAgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGluX2Ffd3JpdGVfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgcDBfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2xvYWRfZmlmbzsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0X2Zvcl9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fY291bnRlcjsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZDFfcmVhc29uc190b193YWl0IDw9IH5jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2JlZ2luc194ZmVyID0gfmQxX3JlYXNvbnNfdG9fd2FpdCAmICgoY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSkpOwotICAvL2Fzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0KLSAgLy9hc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EgPSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGEgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkZGF0YTsKLQotICBhc3NpZ24gY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSA9ICh7Y3B1X2RhdGFfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmVbMjYgOiAyNV0gLCAyNSdiMH0gPT0gMjcnaDIwMDAwMDApICYgKGNwdV9kYXRhX21hc3Rlcl9yZWFkIHwgY3B1X2RhdGFfbWFzdGVyX3dyaXRlKTsKLSAgLy9hc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgPSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHJlcXVlc3Qgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93YWl0cmVxdWVzdDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciBzZXQgdmFsdWVzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FyYl9zaGFyZV9zZXRfdmFsdWVzID0gKGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSk/ICgoKGNwdV9kYXRhX21hc3Rlcl93cml0ZSkgPyBjcHVfZGF0YV9tYXN0ZXJfYnVyc3Rjb3VudCA6IDEpKSA6Ci0gICAgMTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzID0gMDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50IG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50ID0gY3B1X2RhdGFfbWFzdGVyX3NhdmVkX2dyYW50X2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZSA9IGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9maXJzdHRyYW5zZmVyID8gKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hcmJfc2hhcmVfc2V0X3ZhbHVlcyAtIDEpIDogfGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciA/IChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgLSAxKSA6IDA7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYWxsZ3JhbnRzIGFsbCBzbGF2ZSBncmFudHMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYWxsZ3JhbnRzID0gfGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9ncmFudF92ZWN0b3I7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZW5kX3hmZXIgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9lbmRfeGZlciA9IH4oY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRzX2Zvcl93cml0ZSk7Ci0KLSAgLy9lbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSBhcmIgc2hhcmUgY291bnRlciBlbmFibGUgdGVybSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtID0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2VuZF94ZmVyICYgKH5jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCB8IGluX2FfcmVhZF9jeWNsZSB8IGluX2Ffd3JpdGVfY3ljbGUpOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIGFyYml0cmF0aW9uIGNvdW50ZXIgZW5hYmxlLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FyYl9jb3VudGVyX2VuYWJsZSA9IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSAmIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hbGxncmFudHMpIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtICYgfmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciBjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hcmJfY291bnRlcl9lbmFibGUpCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIDw9IGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSAwOwotICAgICAgZWxzZSBpZiAoKHxjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fbWFzdGVyX3FyZXFfdmVjdG9yICYgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0pIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtICYgfmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKSkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSB8Y3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gICAgZW5kCi0KLQotICAvL2NwdS9kYXRhX21hc3RlciBjdXN0b21fZG1hX2J1cnN0XzQvdXBzdHJlYW0gYXJiaXRlcmxvY2ssIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjcHVfZGF0YV9tYXN0ZXJfYXJiaXRlcmxvY2sgPSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGNwdV9kYXRhX21hc3Rlcl9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgc2xhdmUgZW5hYmxlcyBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgPSB8Y3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0KLSAgLy9jcHUvZGF0YV9tYXN0ZXIgY3VzdG9tX2RtYV9idXJzdF80L3Vwc3RyZWFtIGFyYml0ZXJsb2NrMiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9hcmJpdGVybG9jazIgPSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgJiBjcHVfZGF0YV9tYXN0ZXJfY29udGludWVyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FueV9jb250aW51ZXJlcXVlc3QgYXQgbGVhc3Qgb25lIG1hc3RlciBjb250aW51ZXMgcmVxdWVzdGluZywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hbnlfY29udGludWVyZXF1ZXN0ID0gMTsKLQotICAvL2NwdV9kYXRhX21hc3Rlcl9jb250aW51ZXJlcXVlc3QgY29udGludWVkIHJlcXVlc3QsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjcHVfZGF0YV9tYXN0ZXJfY29udGludWVyZXF1ZXN0ID0gMTsKLQotICBhc3NpZ24gY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSA9IGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0gJiB+KChjcHVfZGF0YV9tYXN0ZXJfcmVhZCAmICgoY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlciAhPSAwKSB8ICgxIDwgY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlcikgfCAofGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyKSB8ICh8Y3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIpKSkpOwotICAvL3VuaXF1ZSBuYW1lIGZvciBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbiA9IGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0ICYgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2xvYWRfZmlmbzsKLQotICAvL3RoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYnVyc3Rjb3VudCBmb3IgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NlbGVjdGVkX2J1cnN0Y291bnQgPSAoY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtKT8gY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQgOgotICAgIDE7Ci0KLSAgLy9idXJzdGNvdW50X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9maWZvX3dpdGhfcmVnaXN0ZXJlZF9vdXRwdXRzCi0gIGJ1cnN0Y291bnRfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX21vZHVsZSBidXJzdGNvdW50X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbQotICAgICgKLSAgICAgIC5jbGVhcl9maWZvICAgICAgICAgICAoMSdiMCksCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgKGNsayksCi0gICAgICAuZGF0YV9pbiAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9zZWxlY3RlZF9idXJzdGNvdW50KSwKLSAgICAgIC5kYXRhX291dCAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3RyYW5zYWN0aW9uX2J1cnN0X2NvdW50KSwKLSAgICAgIC5lbXB0eSAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eSksCi0gICAgICAuZmlmb19jb250YWluc19vbmVzX24gKCksCi0gICAgICAuZnVsbCAgICAgICAgICAgICAgICAgKCksCi0gICAgICAucmVhZCAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0KSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAocmVzZXRfbiksCi0gICAgICAuc3luY19yZXNldCAgICAgICAgICAgKDEnYjApLAotICAgICAgLndyaXRlICAgICAgICAgICAgICAgIChpbl9hX3JlYWRfY3ljbGUgJiB+Y3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkICYgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2xvYWRfZmlmbyAmIH4oY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QgJiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnVyc3Rjb3VudF9maWZvX2VtcHR5KSkKLSAgICApOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtIGN1cnJlbnQgYnVyc3QgbWludXMgb25lLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3RfbWludXNfb25lID0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3QgLSAxOwotCi0gIC8vd2hhdCB0byBsb2FkIGluIGN1cnJlbnRfYnVyc3QsIGZvciBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fbmV4dF9idXJzdF9jb3VudCA9ICgoKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQpICYgfmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9sb2FkX2ZpZm8pKT8gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NlbGVjdGVkX2J1cnN0Y291bnQgOgotICAgICgoaW5fYV9yZWFkX2N5Y2xlICYgfmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93YWl0c19mb3JfcmVhZCAmIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0ICYgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eSkpPyBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2VsZWN0ZWRfYnVyc3Rjb3VudCA6Ci0gICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0KT8gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3RyYW5zYWN0aW9uX2J1cnN0X2NvdW50IDoKLSAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fY3VycmVudF9idXJzdF9taW51c19vbmU7Ci0KLSAgLy90aGUgY3VycmVudCBidXJzdCBjb3VudCBmb3IgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtLCB0byBiZSBkZWNyZW1lbnRlZCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2N1cnJlbnRfYnVyc3QgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgfCAofmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9sb2FkX2ZpZm8gJiAoaW5fYV9yZWFkX2N5Y2xlICYgfmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93YWl0c19mb3JfcmVhZCkpKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9jdXJyZW50X2J1cnN0IDw9IGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9uZXh0X2J1cnN0X2NvdW50OwotICAgIGVuZAotCi0KLSAgLy9hIDEgb3IgYnVyc3Rjb3VudCBmaWZvIGVtcHR5LCB0byBpbml0aWFsaXplIHRoZSBjb3VudGVyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2xvYWRfZmlmbyA9ICh+Y3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2xvYWRfZmlmbyk/IDEgOgotICAgICgoKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQpICYgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2xvYWRfZmlmbykpPyAxIDoKLSAgICB+Y3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J1cnN0Y291bnRfZmlmb19lbXB0eTsKLQotICAvL3doZXRoZXIgdG8gbG9hZCBkaXJlY3RseSB0byB0aGUgY291bnRlciBvciB0byB0aGUgZmlmbywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2xvYWRfZmlmbyA8PSAwOwotICAgICAgZWxzZSBpZiAoKGluX2FfcmVhZF9jeWNsZSAmIH5jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHNfZm9yX3JlYWQpICYgfmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9sb2FkX2ZpZm8gfCBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fbG9hZF9maWZvIDw9IHAwX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9sb2FkX2ZpZm87Ci0gICAgZW5kCi0KLQotICAvL3RoZSBsYXN0IGN5Y2xlIGluIHRoZSBidXJzdCBmb3IgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QgPSB+KHxjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fY3VycmVudF9idXJzdF9taW51c19vbmUpICYgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYTsKLQotICAvL3Jkdl9maWZvX2Zvcl9jcHVfZGF0YV9tYXN0ZXJfdG9fY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2ZpZm9fd2l0aF9yZWdpc3RlcmVkX291dHB1dHMKLSAgcmR2X2ZpZm9fZm9yX2NwdV9kYXRhX21hc3Rlcl90b19jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fbW9kdWxlIHJkdl9maWZvX2Zvcl9jcHVfZGF0YV9tYXN0ZXJfdG9fY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtCi0gICAgKAotICAgICAgLmNsZWFyX2ZpZm8gICAgICAgICAgICgxJ2IwKSwKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAoY2xrKSwKLSAgICAgIC5kYXRhX2luICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtKSwKLSAgICAgIC5kYXRhX291dCAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3Jkdl9maWZvX291dHB1dF9mcm9tX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSksCi0gICAgICAuZW1wdHkgICAgICAgICAgICAgICAgKCksCi0gICAgICAuZmlmb19jb250YWluc19vbmVzX24gKGNwdV9kYXRhX21hc3Rlcl9yZHZfZmlmb19lbXB0eV9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0pLAotICAgICAgLmZ1bGwgICAgICAgICAgICAgICAgICgpLAotICAgICAgLnJlYWQgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAocmVzZXRfbiksCi0gICAgICAuc3luY19yZXNldCAgICAgICAgICAgKDEnYjApLAotICAgICAgLndyaXRlICAgICAgICAgICAgICAgIChpbl9hX3JlYWRfY3ljbGUgJiB+Y3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkKQotICAgICk7Ci0KLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyID0gfmNwdV9kYXRhX21hc3Rlcl9yZHZfZmlmb19lbXB0eV9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW07Ci0gIC8vbG9jYWwgcmVhZGRhdGF2YWxpZCBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtID0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93cml0ZWRhdGEgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dyaXRlZGF0YSA9IGNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGE7Ci0KLSAgLy9ieXRlYWRkcmVzcyBtdXggZm9yIGN1c3RvbV9kbWFfYnVyc3RfNC91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9ieXRlYWRkcmVzcyA9IGNwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotCi0gIC8vbWFzdGVyIGlzIGFsd2F5cyBncmFudGVkIHdoZW4gcmVxdWVzdGVkCi0gIGFzc2lnbiBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0gPSBjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtOwotCi0gIC8vY3B1L2RhdGFfbWFzdGVyIHNhdmVkLWdyYW50IGN1c3RvbV9kbWFfYnVyc3RfNC91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGNwdV9kYXRhX21hc3Rlcl9zYXZlZF9ncmFudF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0gPSBjcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtOwotCi0gIC8vYWxsb3cgbmV3IGFyYiBjeWNsZSBmb3IgY3VzdG9tX2RtYV9idXJzdF80L3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FsbG93X25ld19hcmJfY3ljbGUgPSAxOwotCi0gIC8vcGxhY2Vob2xkZXIgY2hvc2VuIG1hc3RlcgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2dyYW50X3ZlY3RvciA9IDE7Ci0KLSAgLy9wbGFjZWhvbGRlciB2ZWN0b3Igb2YgbWFzdGVyIHF1YWxpZmllZC1yZXF1ZXN0cwotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX21hc3Rlcl9xcmVxX3ZlY3RvciA9IDE7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9maXJzdHRyYW5zZmVyID0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2JlZ2luc194ZmVyID8gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3VucmVnX2ZpcnN0dHJhbnNmZXIgOiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVnX2ZpcnN0dHJhbnNmZXI7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fdW5yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV91bnJlZ19maXJzdHRyYW5zZmVyID0gfihjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9hbnlfY29udGludWVyZXF1ZXN0KTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlZ19maXJzdHRyYW5zZmVyIDw9IDEnYjE7Ci0gICAgICBlbHNlIGlmIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYmVnaW5zX3hmZXIpCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlZ19maXJzdHRyYW5zZmVyIDw9IGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV91bnJlZ19maXJzdHRyYW5zZmVyOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fbmV4dF9iYnRfYnVyc3Rjb3VudCBuZXh0X2JidF9idXJzdGNvdW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX25leHRfYmJ0X2J1cnN0Y291bnQgPSAoKCgoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dyaXRlKSAmJiAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXIgPT0gMCkpKSk/IChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnVyc3Rjb3VudCAtIDEpIDoKLSAgICAoKCgoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWQpICYmIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciA9PSAwKSkpKT8gMCA6Ci0gICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9iYnRfYnVyc3Rjb3VudGVyIC0gMSk7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciBiYnRfYnVyc3Rjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciA8PSAwOwotICAgICAgZWxzZSBpZiAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2JlZ2luc194ZmVyKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9iYnRfYnVyc3Rjb3VudGVyIDw9IGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9uZXh0X2JidF9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsIGJlZ2luIGJ1cnN0IHRyYW5zZmVyLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCA9IGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9iZWdpbnNfeGZlciAmIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciA9PSAwKTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZCA9IGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSAmIGNwdV9kYXRhX21hc3Rlcl9yZWFkOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dyaXRlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd3JpdGUgPSBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0gJiBjcHVfZGF0YV9tYXN0ZXJfd3JpdGU7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYWRkcmVzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYWRkcmVzcyA9IGNwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotCi0gIC8vZDFfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2VuZF94ZmVyIHJlZ2lzdGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZW5kX3hmZXIgPD0gMTsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9lbmRfeGZlciA8PSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93YWl0c19mb3JfcmVhZCBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkID0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSAmIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSA9IGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSAmIGNwdV9kYXRhX21hc3Rlcl9yZWFkOwotCi0gIC8vaW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBpbl9hX3JlYWRfY3ljbGUgPSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1faW5fYV9yZWFkX2N5Y2xlOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRzX2Zvcl93cml0ZSBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRzX2Zvcl93cml0ZSA9IGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9pbl9hX3dyaXRlX2N5Y2xlICYgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1faW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGUgPSBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0gJiBjcHVfZGF0YV9tYXN0ZXJfd3JpdGU7Ci0KLSAgLy9pbl9hX3dyaXRlX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBpbl9hX3dyaXRlX2N5Y2xlID0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGU7Ci0KLSAgYXNzaWduIHdhaXRfZm9yX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9jb3VudGVyID0gMDsKLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnl0ZWVuYWJsZSBieXRlIGVuYWJsZSBwb3J0IG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9ieXRlZW5hYmxlID0gKGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSk/IGNwdV9kYXRhX21hc3Rlcl9ieXRlZW5hYmxlIDoKLSAgICAtMTsKLQotICAvL2J1cnN0Y291bnQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J1cnN0Y291bnQgPSAoY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtKT8gY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQgOgotICAgIDE7Ci0KLSAgLy9kZWJ1Z2FjY2VzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZGVidWdhY2Nlc3MgPSAoY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtKT8gY3B1X2RhdGFfbWFzdGVyX2RlYnVnYWNjZXNzIDoKLSAgICAwOwotCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80L3Vwc3RyZWFtIGVuYWJsZSBub24temVybyBhc3NlcnRpb25zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDEnYjE7Ci0gICAgZW5kCi0KLQotICAvL2NwdS9kYXRhX21hc3RlciBub24temVybyBidXJzdGNvdW50IGFzc2VydGlvbiwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSAmJiAoY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQgPT0gMCkgJiYgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucykKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3B1L2RhdGFfbWFzdGVyIGRyb3ZlIDAgb24gaXRzICdidXJzdGNvdW50JyBwb3J0IHdoaWxlIGFjY2Vzc2luZyBzbGF2ZSBjdXN0b21fZG1hX2J1cnN0XzQvdXBzdHJlYW0iLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYXJiaXRyYXRvciAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkMV9kZHJfc2RyYW1fczFfZW5kX3hmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfc2RyYW1fczFfcmVhZGRhdGFfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV93YWl0cmVxdWVzdF9uX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgb3V0cHV0ICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3Jlc2V0X247Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgMjQ6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FkZHJlc3M7Ci0gIGlucHV0ICAgWyAgMjogMF0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotICBpbnB1dCAgICAgICAgICAgIGQxX2Rkcl9zZHJhbV9zMV9lbmRfeGZlcjsKLSAgaW5wdXQgICBbIDMxOiAwXSBkZHJfc2RyYW1fczFfcmVhZGRhdGFfZnJvbV9zYTsKLSAgaW5wdXQgICAgICAgICAgICBkZHJfc2RyYW1fczFfd2FpdHJlcXVlc3Rfbl9mcm9tX3NhOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0KLSAgcmVnICAgICAgICAgICAgICBhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lOwotICByZWcgICAgIFsgMjQ6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FkZHJlc3NfbGFzdF90aW1lOwotICB3aXJlICAgIFsgMjQ6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIHJlZyAgICAgWyAgMjogMF0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnVyc3Rjb3VudF9sYXN0X3RpbWU7Ci0gIHJlZyAgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnl0ZWVuYWJsZV9sYXN0X3RpbWU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1faXNfZ3JhbnRlZF9zb21lX3NsYXZlOwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZDsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2xhc3RfdGltZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3Jlc2V0X247Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcnVuOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlX2xhc3RfdGltZTsKLSAgcmVnICAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZWRhdGFfbGFzdF90aW1lOwotICB3aXJlICAgICAgICAgICAgIGxhdGVuY3lfbG9hZF92YWx1ZTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcHJlX2ZsdXNoX2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgcl8wOwotICAvL3JfMCBtYXN0ZXJfcnVuIGNhc2NhZGVkIHdhaXQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHJfMCA9IDEgJiAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxIHwgfmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMSkgJiAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEgfCB+Y3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxKSAmICgofmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMSB8IH4oY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlKSB8ICgxICYgZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYSAmIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGUpKSkpICYgKCh+Y3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxIHwgfihjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGUpIHwgKDEgJiBkZHJfc2RyYW1fczFfd2FpdHJlcXVlc3Rfbl9mcm9tX3NhICYgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWQgfCBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZSkpKSk7Ci0KLSAgLy9jYXNjYWRlZCB3YWl0IGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ydW4gPSByXzA7Ci0KLSAgLy9vcHRpbWl6ZSBzZWxlY3QtbG9naWMgYnkgcGFzc2luZyBvbmx5IHRob3NlIGFkZHJlc3MgYml0cyB3aGljaCBtYXR0ZXIuCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlID0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYWRkcmVzczsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCA8PSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkICYgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcnVuICYgfmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2lzX2dyYW50ZWRfc29tZV9zbGF2ZTsKLSAgICBlbmQKLQotCi0gIC8vc29tZSBzbGF2ZSBpcyBnZXR0aW5nIHNlbGVjdGVkLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1faXNfZ3JhbnRlZF9zb21lX3NsYXZlID0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczE7Ci0KLSAgLy9sYXRlbnQgc2xhdmUgcmVhZCBkYXRhIHZhbGlkcyB3aGljaCBtYXkgYmUgZmx1c2hlZCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHByZV9mbHVzaF9jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkID0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMTsKLQotICAvL2xhdGVudCBzbGF2ZSByZWFkIGRhdGEgdmFsaWQgd2hpY2ggaXMgbm90IGZsdXNoZWQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkID0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgfAotICAgIHByZV9mbHVzaF9jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80L2Rvd25zdHJlYW0gcmVhZGRhdGEgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZGRhdGEgPSBkZHJfc2RyYW1fczFfcmVhZGRhdGFfZnJvbV9zYTsKLQotICAvL2FjdHVhbCB3YWl0cmVxdWVzdCBwb3J0LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd2FpdHJlcXVlc3QgPSB+Y3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcnVuOwotCi0gIC8vbGF0ZW50IG1heCBjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciA8PSBwMV9jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gICAgZW5kCi0KLQotICAvL2xhdGVuY3kgY291bnRlciBsb2FkIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciA9ICgoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcnVuICYgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZCkpPyBsYXRlbmN5X2xvYWRfdmFsdWUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIpPyBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIgLSAxIDoKLSAgICAwOwotCi0gIC8vcmVhZCBsYXRlbmN5IGxvYWQgdmFsdWVzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gbGF0ZW5jeV9sb2FkX3ZhbHVlID0gMDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3Jlc2V0X24gYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3Jlc2V0X24gPSByZXNldF9uOwotCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYWRkcmVzcyBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FkZHJlc3NfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hZGRyZXNzX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hZGRyZXNzOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzQvZG93bnN0cmVhbSB3YWl0ZWQgbGFzdCB0aW1lLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ICYgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWQgfCBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZSk7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FkZHJlc3MgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hZGRyZXNzICE9IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FkZHJlc3NfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYWRkcmVzcyBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2J1cnN0Y291bnQgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9idXJzdGNvdW50X2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnVyc3Rjb3VudF9sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnVyc3Rjb3VudCBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2J1cnN0Y291bnQgIT0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnVyc3Rjb3VudF9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9idXJzdGNvdW50IGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2J5dGVlbmFibGVfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ieXRlZW5hYmxlX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ieXRlZW5hYmxlIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSAhPSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ieXRlZW5hYmxlX2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2J5dGVlbmFibGUgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWRfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWQ7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWQgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkICE9IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWRfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZCBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGVfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZV9sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGU7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGUgIT0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGVfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGUgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZWRhdGEgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZWRhdGFfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZWRhdGFfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGVkYXRhIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGVkYXRhICE9IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlZGF0YV9sYXN0X3RpbWUpICYgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGUpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlZGF0YSBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYXJiaXRyYXRvciAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd2FpdHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J5dGVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9lbmRfeGZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIG91dHB1dCAgWyAgMjogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIG91dHB1dCAgWyAyNjogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J5dGVhZGRyZXNzOwotICBvdXRwdXQgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9ieXRlZW5hYmxlOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZDsKLSAgb3V0cHV0ICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93cml0ZTsKLSAgb3V0cHV0ICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd3JpdGVkYXRhOwotICBvdXRwdXQgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9lbmRfeGZlcjsKLSAgb3V0cHV0ICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbTsKLSAgb3V0cHV0ICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW07Ci0gIG91dHB1dCAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgIFsgMzE6IDBdIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIGlucHV0ICAgWyAgMjogMF0gZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotCi0gIHdpcmUgICAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FsbGdyYW50czsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYWxsb3dfbmV3X2FyYl9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYW55X2NvbnRpbnVlcmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYXJiX2NvdW50ZXJfZW5hYmxlOwotICByZWcgICAgIFsgIDI6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcjsKLSAgd2lyZSAgICBbICAyOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgd2lyZSAgICBbICAyOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYXJiX3NoYXJlX3NldF92YWx1ZXM7Ci0gIHJlZyAgICAgWyAgMTogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYmVnaW5zX3hmZXI7Ci0gIHdpcmUgICAgWyAgMjogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAyNjogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J5dGVhZGRyZXNzOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2dyYW50X3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1faW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9pbl9hX3dyaXRlX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9tYXN0ZXJfcXJlcV92ZWN0b3I7Ci0gIHdpcmUgICAgWyAgMTogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX25leHRfYmJ0X2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHM7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYTsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV91bnJlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0c19mb3JfcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd2FpdHNfZm9yX3dyaXRlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93cml0ZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd3JpdGVkYXRhOwotICByZWcgICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9lbmRfeGZlcjsKLSAgcmVnICAgICAgICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQ7Ci0gIHJlZyAgICAgICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9uczsKLSAgd2lyZSAgICAgICAgICAgICBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfc2F2ZWRfZ3JhbnRfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGluX2FfcmVhZF9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBpbl9hX3dyaXRlX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIHdhaXRfZm9yX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9jb3VudGVyOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfcmVhc29uc190b193YWl0IDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gfmN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9lbmRfeGZlcjsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYmVnaW5zX3hmZXIgPSB+ZDFfcmVhc29uc190b193YWl0ICYgKChmaXJfZG1hX3dyaXRlX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0pKTsKLSAgLy9hc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EgPSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGEgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkZGF0YTsKLQotICBhc3NpZ24gZmlyX2RtYV93cml0ZV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtID0gKCh7ZmlyX2RtYV93cml0ZV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZVszMSA6IDI1XSAsIDI1J2IwfSA9PSAzMidoMjAwMDAwMCkgJiAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGUpKSAmIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlOwotICAvL2Fzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSA9IGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0cmVxdWVzdCBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIHNldCB2YWx1ZXMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYXJiX3NoYXJlX3NldF92YWx1ZXMgPSAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0pPyBmaXJfZG1hX3dyaXRlX21hc3Rlcl9idXJzdGNvdW50IDoKLSAgICAxOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgPSAwOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgPSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9zYXZlZF9ncmFudF9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW07Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWUgPSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fZmlyc3R0cmFuc2ZlciA/IChjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYXJiX3NoYXJlX3NldF92YWx1ZXMgLSAxKSA6IHxjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgPyAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIC0gMSkgOiAwOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FsbGdyYW50cyBhbGwgc2xhdmUgZ3JhbnRzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FsbGdyYW50cyA9IHxjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fZ3JhbnRfdmVjdG9yOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2VuZF94ZmVyIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fZW5kX3hmZXIgPSB+KGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0c19mb3JfcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0c19mb3Jfd3JpdGUpOwotCi0gIC8vZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0gYXJiIHNoYXJlIGNvdW50ZXIgZW5hYmxlIHRlcm0sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSA9IGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9lbmRfeGZlciAmICh+Y3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgfCBpbl9hX3JlYWRfY3ljbGUgfCBpbl9hX3dyaXRlX2N5Y2xlKTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciBhcmJpdHJhdGlvbiBjb3VudGVyIGVuYWJsZSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9hcmJfY291bnRlcl9lbmFibGUgPSAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0gJiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYWxsZ3JhbnRzKSB8IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSAmIH5jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyk7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXIgY291bnRlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FyYl9zaGFyZV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYXJiX2NvdW50ZXJfZW5hYmxlKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlciA8PSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgc2xhdmUgZW5hYmxlcyBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKCh8Y3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX21hc3Rlcl9xcmVxX3ZlY3RvciAmIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtKSB8IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSAmIH5jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cykpCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgPD0gfGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICAgIGVuZAotCi0KLSAgLy9maXJfZG1hL3dyaXRlX21hc3RlciBjdXN0b21fZG1hX2J1cnN0XzUvdXBzdHJlYW0gYXJiaXRlcmxvY2ssIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBmaXJfZG1hX3dyaXRlX21hc3Rlcl9hcmJpdGVybG9jayA9IGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlICYgZmlyX2RtYV93cml0ZV9tYXN0ZXJfY29udGludWVyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyIHNsYXZlIGVuYWJsZXMgYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyID0gfGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotCi0gIC8vZmlyX2RtYS93cml0ZV9tYXN0ZXIgY3VzdG9tX2RtYV9idXJzdF81L3Vwc3RyZWFtIGFyYml0ZXJsb2NrMiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2FyYml0ZXJsb2NrMiA9IGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiAmIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9hbnlfY29udGludWVyZXF1ZXN0IGF0IGxlYXN0IG9uZSBtYXN0ZXIgY29udGludWVzIHJlcXVlc3RpbmcsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYW55X2NvbnRpbnVlcmVxdWVzdCA9IDE7Ci0KLSAgLy9maXJfZG1hX3dyaXRlX21hc3Rlcl9jb250aW51ZXJlcXVlc3QgY29udGludWVkIHJlcXVlc3QsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBmaXJfZG1hX3dyaXRlX21hc3Rlcl9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIGFzc2lnbiBmaXJfZG1hX3dyaXRlX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0gPSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW07Ci0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3dyaXRlZGF0YSBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd3JpdGVkYXRhID0gZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGVkYXRhOwotCi0gIC8vYnl0ZWFkZHJlc3MgbXV4IGZvciBjdXN0b21fZG1hX2J1cnN0XzUvdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYnl0ZWFkZHJlc3MgPSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotCi0gIC8vbWFzdGVyIGlzIGFsd2F5cyBncmFudGVkIHdoZW4gcmVxdWVzdGVkCi0gIGFzc2lnbiBmaXJfZG1hX3dyaXRlX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSA9IGZpcl9kbWFfd3JpdGVfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbTsKLQotICAvL2Zpcl9kbWEvd3JpdGVfbWFzdGVyIHNhdmVkLWdyYW50IGN1c3RvbV9kbWFfYnVyc3RfNS91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3NhdmVkX2dyYW50X2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSA9IGZpcl9kbWFfd3JpdGVfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbTsKLQotICAvL2FsbG93IG5ldyBhcmIgY3ljbGUgZm9yIGN1c3RvbV9kbWFfYnVyc3RfNS91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9hbGxvd19uZXdfYXJiX2N5Y2xlID0gMTsKLQotICAvL3BsYWNlaG9sZGVyIGNob3NlbiBtYXN0ZXIKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9ncmFudF92ZWN0b3IgPSAxOwotCi0gIC8vcGxhY2Vob2xkZXIgdmVjdG9yIG9mIG1hc3RlciBxdWFsaWZpZWQtcmVxdWVzdHMKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9tYXN0ZXJfcXJlcV92ZWN0b3IgPSAxOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fZmlyc3R0cmFuc2ZlciA9IGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9iZWdpbnNfeGZlciA/IGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV91bnJlZ19maXJzdHRyYW5zZmVyIDogY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlZ19maXJzdHRyYW5zZmVyOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3VucmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fdW5yZWdfZmlyc3R0cmFuc2ZlciA9IH4oY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYW55X2NvbnRpbnVlcmVxdWVzdCk7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWdfZmlyc3R0cmFuc2ZlciA8PSAxJ2IxOwotICAgICAgZWxzZSBpZiAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2JlZ2luc194ZmVyKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWdfZmlyc3R0cmFuc2ZlciA8PSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX25leHRfYmJ0X2J1cnN0Y291bnQgbmV4dF9iYnRfYnVyc3Rjb3VudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9uZXh0X2JidF9idXJzdGNvdW50ID0gKCgoKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93cml0ZSkgJiYgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9iYnRfYnVyc3Rjb3VudGVyID09IDApKSkpPyAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J1cnN0Y291bnQgLSAxKSA6Ci0gICAgKCgoKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkKSAmJiAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXIgPT0gMCkpKSk/IDAgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciAtIDEpOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXIgYmJ0X2J1cnN0Y291bnRlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9iZWdpbnNfeGZlcikKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYmJ0X2J1cnN0Y291bnRlciA8PSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fbmV4dF9iYnRfYnVyc3Rjb3VudDsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCBiZWdpbiBidXJzdCB0cmFuc2Zlciwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9iZWdpbmJ1cnN0dHJhbnNmZXJfaW50ZXJuYWwgPSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYmVnaW5zX3hmZXIgJiAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2JidF9idXJzdGNvdW50ZXIgPT0gMCk7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWQgPSAwOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3dyaXRlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd3JpdGUgPSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSAmIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FkZHJlc3MgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2FkZHJlc3MgPSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotCi0gIC8vZDFfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2VuZF94ZmVyIHJlZ2lzdGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fZW5kX3hmZXIgPD0gMTsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9lbmRfeGZlciA8PSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0c19mb3JfcmVhZCBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3dhaXRzX2Zvcl9yZWFkID0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSAmIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2luX2FfcmVhZF9jeWNsZSA9IDA7Ci0KLSAgLy9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGluX2FfcmVhZF9jeWNsZSA9IGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9pbl9hX3JlYWRfY3ljbGU7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd2FpdHNfZm9yX3dyaXRlIGluIGEgY3ljbGUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd2FpdHNfZm9yX3dyaXRlID0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGUgJiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLQotICAvL2Fzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhID0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1faW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2luX2Ffd3JpdGVfY3ljbGUgPSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSAmIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlOwotCi0gIC8vaW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gaW5fYV93cml0ZV9jeWNsZSA9IGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9pbl9hX3dyaXRlX2N5Y2xlOwotCi0gIGFzc2lnbiB3YWl0X2Zvcl9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fY291bnRlciA9IDA7Ci0gIC8vY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J5dGVlbmFibGUgYnl0ZSBlbmFibGUgcG9ydCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYnl0ZWVuYWJsZSA9IChmaXJfZG1hX3dyaXRlX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSk/IGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J5dGVlbmFibGUgOgotICAgIC0xOwotCi0gIC8vYnVyc3Rjb3VudCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYnVyc3Rjb3VudCA9IChmaXJfZG1hX3dyaXRlX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSk/IGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J1cnN0Y291bnQgOgotICAgIDE7Ci0KLSAgLy9kZWJ1Z2FjY2VzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fZGVidWdhY2Nlc3MgPSAwOwotCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81L3Vwc3RyZWFtIGVuYWJsZSBub24temVybyBhc3NlcnRpb25zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDEnYjE7Ci0gICAgZW5kCi0KLQotICAvL2Zpcl9kbWEvd3JpdGVfbWFzdGVyIG5vbi16ZXJvIGJ1cnN0Y291bnQgYXNzZXJ0aW9uLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChmaXJfZG1hX3dyaXRlX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0gJiYgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J1cnN0Y291bnQgPT0gMCkgJiYgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucykKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogZmlyX2RtYS93cml0ZV9tYXN0ZXIgZHJvdmUgMCBvbiBpdHMgJ2J1cnN0Y291bnQnIHBvcnQgd2hpbGUgYWNjZXNzaW5nIHNsYXZlIGN1c3RvbV9kbWFfYnVyc3RfNS91cHN0cmVhbSIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hcmJpdHJhdG9yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczFfc2hpZnRfcmVnaXN0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX2Rkcl9zZHJhbV9zMV9lbmRfeGZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9yZWFkZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd2FpdHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgMjQ6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyOwotICBvdXRwdXQgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRkYXRhOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVzZXRfbjsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgaW5wdXQgICBbICAyOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9idXJzdGNvdW50OwotICBpbnB1dCAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgZDFfZGRyX3NkcmFtX3MxX2VuZF94ZmVyOwotICBpbnB1dCAgIFsgMzE6IDBdIGRkcl9zZHJhbV9zMV9yZWFkZGF0YV9mcm9tX3NhOwotICBpbnB1dCAgICAgICAgICAgIGRkcl9zZHJhbV9zMV93YWl0cmVxdWVzdF9uX2Zyb21fc2E7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICByZWcgICAgICAgICAgICAgIGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWU7Ci0gIHJlZyAgICAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYWRkcmVzc19sYXN0X3RpbWU7Ci0gIHdpcmUgICAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZTsKLSAgcmVnICAgICBbICAyOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9idXJzdGNvdW50X2xhc3RfdGltZTsKLSAgcmVnICAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ieXRlZW5hYmxlX2xhc3RfdGltZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9pc19ncmFudGVkX3NvbWVfc2xhdmU7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyOwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkOwotICByZWcgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfbGFzdF90aW1lOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRkYXRhOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVzZXRfbjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ydW47Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGVfbGFzdF90aW1lOwotICByZWcgICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlZGF0YV9sYXN0X3RpbWU7Ci0gIHdpcmUgICAgICAgICAgICAgbGF0ZW5jeV9sb2FkX3ZhbHVlOwotICB3aXJlICAgICAgICAgICAgIHAxX2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBwcmVfZmx1c2hfY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICByXzA7Ci0gIC8vcl8wIG1hc3Rlcl9ydW4gY2FzY2FkZWQgd2FpdCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcl8wID0gMSAmIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEgfCB+Y3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxKSAmIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSB8IH5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEpICYgKCh+Y3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxIHwgfihjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGUpIHwgKDEgJiBkZHJfc2RyYW1fczFfd2FpdHJlcXVlc3Rfbl9mcm9tX3NhICYgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWQgfCBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZSkpKSkgJiAoKH5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEgfCB+KGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWQgfCBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZSkgfCAoMSAmIGRkcl9zZHJhbV9zMV93YWl0cmVxdWVzdF9uX2Zyb21fc2EgJiAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlKSkpKTsKLQotICAvL2Nhc2NhZGVkIHdhaXQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3J1biA9IHJfMDsKLQotICAvL29wdGltaXplIHNlbGVjdC1sb2dpYyBieSBwYXNzaW5nIG9ubHkgdGhvc2UgYWRkcmVzcyBiaXRzIHdoaWNoIG1hdHRlci4KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUgPSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkIDw9IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWQgJiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ydW4gJiB+Y3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1faXNfZ3JhbnRlZF9zb21lX3NsYXZlOwotICAgIGVuZAotCi0KLSAgLy9zb21lIHNsYXZlIGlzIGdldHRpbmcgc2VsZWN0ZWQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9pc19ncmFudGVkX3NvbWVfc2xhdmUgPSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMTsKLQotICAvL2xhdGVudCBzbGF2ZSByZWFkIGRhdGEgdmFsaWRzIHdoaWNoIG1heSBiZSBmbHVzaGVkLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcHJlX2ZsdXNoX2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQgPSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxOwotCi0gIC8vbGF0ZW50IHNsYXZlIHJlYWQgZGF0YSB2YWxpZCB3aGljaCBpcyBub3QgZmx1c2hlZCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQgPSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCB8Ci0gICAgcHJlX2ZsdXNoX2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzUvZG93bnN0cmVhbSByZWFkZGF0YSBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkZGF0YSA9IGRkcl9zZHJhbV9zMV9yZWFkZGF0YV9mcm9tX3NhOwotCi0gIC8vYWN0dWFsIHdhaXRyZXF1ZXN0IHBvcnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93YWl0cmVxdWVzdCA9IH5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ydW47Ci0KLSAgLy9sYXRlbnQgbWF4IGNvdW50ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyIDw9IHAxX2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgICBlbmQKLQotCi0gIC8vbGF0ZW5jeSBjb3VudGVyIGxvYWQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyID0gKChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ydW4gJiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkKSk/IGxhdGVuY3lfbG9hZF92YWx1ZSA6Ci0gICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcik/IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciAtIDEgOgotICAgIDA7Ci0KLSAgLy9yZWFkIGxhdGVuY3kgbG9hZCB2YWx1ZXMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBsYXRlbmN5X2xvYWRfdmFsdWUgPSAwOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVzZXRfbiBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVzZXRfbiA9IHJlc2V0X247Ci0KLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgLy9jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYWRkcmVzc19sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FkZHJlc3NfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FkZHJlc3M7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNS9kb3duc3RyZWFtIHdhaXRlZCBsYXN0IHRpbWUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd2FpdHJlcXVlc3QgJiAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlKTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYWRkcmVzcyBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FkZHJlc3MgIT0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYWRkcmVzc19sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYnVyc3Rjb3VudCBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J1cnN0Y291bnRfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9idXJzdGNvdW50X2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9idXJzdGNvdW50IG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYnVyc3Rjb3VudCAhPSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9idXJzdGNvdW50X2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J1cnN0Y291bnQgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ieXRlZW5hYmxlIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYnl0ZWVuYWJsZV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J5dGVlbmFibGVfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J5dGVlbmFibGUgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ieXRlZW5hYmxlICE9IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J5dGVlbmFibGVfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWQgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZF9sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZDsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZCBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWQgIT0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZF9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGUgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGUgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZSAhPSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZV9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZSBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlZGF0YSBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlZGF0YV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlZGF0YV9sYXN0X3RpbWUgPD0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZWRhdGEgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZWRhdGEgIT0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGVkYXRhX2xhc3RfdGltZSkgJiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGVkYXRhIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hcmJpdHJhdG9yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZG9mcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd2FpdHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRvZnBhY2tldF9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWFkZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl93YWl0cmVxdWVzdF9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRfeGZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfY2xvY2tfMF9pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfY2xvY2tfMF9pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3VzdG9tX2RtYV9jbG9ja18wX2luCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAgMzogMF0gY3VzdG9tX2RtYV9jbG9ja18wX2luX2FkZHJlc3M7Ci0gIG91dHB1dCAgWyAgMTogMF0gY3VzdG9tX2RtYV9jbG9ja18wX2luX2J5dGVlbmFibGU7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZG9mcGFja2V0X2Zyb21fc2E7Ci0gIG91dHB1dCAgWyAgMjogMF0gY3VzdG9tX2RtYV9jbG9ja18wX2luX25hdGl2ZWFkZHJlc3M7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlYWQ7Ci0gIG91dHB1dCAgWyAxNTogMF0gY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3Jlc2V0X247Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3dyaXRlOwotICBvdXRwdXQgIFsgMTU6IDBdIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl93cml0ZWRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgZDFfY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZF94ZmVyOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2N1c3RvbV9kbWFfY2xvY2tfMF9pbjsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9jbG9ja18wX2luOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9jbG9ja18wX2luOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19jdXN0b21fZG1hX2Nsb2NrXzBfaW47Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRvZnBhY2tldDsKLSAgaW5wdXQgICBbIDE1OiAwXSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgIFsgMTE6IDBdIHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50OwotICBpbnB1dCAgIFsgIDM6IDBdIHBpcGVsaW5lX2JyaWRnZV9tMV9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0OwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXI7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZWRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hbGxncmFudHM7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2FsbG93X25ld19hcmJfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2FueV9jb250aW51ZXJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2FyYl9jb3VudGVyX2VuYWJsZTsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYXJiX3NoYXJlX2NvdW50ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2FyYl9zaGFyZV9zZXRfdmFsdWVzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9iZWdpbmJ1cnN0dHJhbnNmZXJfaW50ZXJuYWw7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2JlZ2luc194ZmVyOwotICB3aXJlICAgIFsgIDE6IDBdIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kb2ZwYWNrZXRfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fZ3JhbnRfdmVjdG9yOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9pbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2luX2Ffd3JpdGVfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX21hc3Rlcl9xcmVxX3ZlY3RvcjsKLSAgd2lyZSAgICBbICAyOiAwXSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0czsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVhZDsKLSAgd2lyZSAgICBbIDE1OiAwXSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVhZGRhdGFfZnJvbV9zYTsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3Jlc2V0X247Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3NsYXZlYXJiaXRlcmxvY2tlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl91bnJlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl93YWl0cmVxdWVzdF9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl93YWl0c19mb3JfcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd2FpdHNfZm9yX3dyaXRlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl93cml0ZTsKLSAgd2lyZSAgICBbIDE1OiAwXSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd3JpdGVkYXRhOwotICByZWcgICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRfeGZlcjsKLSAgcmVnICAgICAgICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQ7Ci0gIHJlZyAgICAgICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9uczsKLSAgd2lyZSAgICAgICAgICAgICBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfY2xvY2tfMF9pbjsKLSAgd2lyZSAgICAgICAgICAgICBpbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV93cml0ZV9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2N1c3RvbV9kbWFfY2xvY2tfMF9pbjsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9jbG9ja18wX2luOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9jbG9ja18wX2luOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19jdXN0b21fZG1hX2Nsb2NrXzBfaW47Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3NhdmVkX2dyYW50X2N1c3RvbV9kbWFfY2xvY2tfMF9pbjsKLSAgd2lyZSAgICBbIDExOiAwXSBzaGlmdGVkX2FkZHJlc3NfdG9fY3VzdG9tX2RtYV9jbG9ja18wX2luX2Zyb21fcGlwZWxpbmVfYnJpZGdlX20xOwotICB3aXJlICAgICAgICAgICAgIHdhaXRfZm9yX2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9jb3VudGVyOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfcmVhc29uc190b193YWl0IDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gfmN1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRfeGZlcjsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYmVnaW5zX3hmZXIgPSB+ZDFfcmVhc29uc190b193YWl0ICYgKChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9jbG9ja18wX2luKSk7Ci0gIC8vYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWFkZGF0YV9mcm9tX3NhID0gY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlYWRkYXRhIHNvIHRoYXQgc3ltYm9sIGtub3dzIHdoZXJlIHRvIGdyb3VwIHNpZ25hbHMgd2hpY2ggbWF5IGdvIHRvIG1hc3RlciBvbmx5LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlYWRkYXRhX2Zyb21fc2EgPSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVhZGRhdGE7Ci0KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19jdXN0b21fZG1hX2Nsb2NrXzBfaW4gPSAoe3BpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlWzExIDogNV0gLCA1J2IwfSA9PSAxMidoODIwKSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0OwotICAvL2Fzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd2FpdHJlcXVlc3RfZnJvbV9zYSA9IGN1c3RvbV9kbWFfY2xvY2tfMF9pbl93YWl0cmVxdWVzdCBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl93YWl0cmVxdWVzdF9mcm9tX3NhID0gY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX2FyYl9zaGFyZV9jb3VudGVyIHNldCB2YWx1ZXMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYXJiX3NoYXJlX3NldF92YWx1ZXMgPSAxOwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgPSBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3VzdG9tX2RtYV9jbG9ja18wX2luOwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgPSAwOwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlID0gY3VzdG9tX2RtYV9jbG9ja18wX2luX2ZpcnN0dHJhbnNmZXIgPyAoY3VzdG9tX2RtYV9jbG9ja18wX2luX2FyYl9zaGFyZV9zZXRfdmFsdWVzIC0gMSkgOiB8Y3VzdG9tX2RtYV9jbG9ja18wX2luX2FyYl9zaGFyZV9jb3VudGVyID8gKGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hcmJfc2hhcmVfY291bnRlciAtIDEpIDogMDsKLQotICAvL2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9hbGxncmFudHMgYWxsIHNsYXZlIGdyYW50cywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hbGxncmFudHMgPSB8Y3VzdG9tX2RtYV9jbG9ja18wX2luX2dyYW50X3ZlY3RvcjsKLQotICAvL2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRfeGZlciBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZF94ZmVyID0gfihjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd2FpdHNfZm9yX3JlYWQgfCBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd2FpdHNfZm9yX3dyaXRlKTsKLQotICAvL2VuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9jbG9ja18wX2luIGFyYiBzaGFyZSBjb3VudGVyIGVuYWJsZSB0ZXJtLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gPSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kX3hmZXIgJiAofmN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50IHwgaW5fYV9yZWFkX2N5Y2xlIHwgaW5fYV93cml0ZV9jeWNsZSk7Ci0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fYXJiX3NoYXJlX2NvdW50ZXIgYXJiaXRyYXRpb24gY291bnRlciBlbmFibGUsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYXJiX2NvdW50ZXJfZW5hYmxlID0gKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fY3VzdG9tX2RtYV9jbG9ja18wX2luICYgY3VzdG9tX2RtYV9jbG9ja18wX2luX2FsbGdyYW50cykgfCAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gJiB+Y3VzdG9tX2RtYV9jbG9ja18wX2luX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMpOwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX2FyYl9zaGFyZV9jb3VudGVyIGNvdW50ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hcmJfc2hhcmVfY291bnRlciA8PSAwOwotICAgICAgZWxzZSBpZiAoY3VzdG9tX2RtYV9jbG9ja18wX2luX2FyYl9jb3VudGVyX2VuYWJsZSkKLSAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYXJiX3NoYXJlX2NvdW50ZXIgPD0gY3VzdG9tX2RtYV9jbG9ja18wX2luX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIHNsYXZlIGVuYWJsZXMgYXJiaXRlcmxvY2ssIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIDw9IDA7Ci0gICAgICBlbHNlIGlmICgofGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9tYXN0ZXJfcXJlcV92ZWN0b3IgJiBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2N1c3RvbV9kbWFfY2xvY2tfMF9pbikgfCAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gJiB+Y3VzdG9tX2RtYV9jbG9ja18wX2luX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMpKQotICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIDw9IHxjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlL20xIGN1c3RvbV9kbWFfY2xvY2tfMC9pbiBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9hcmJpdGVybG9jayA9IGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlICYgcGlwZWxpbmVfYnJpZGdlX20xX2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrMiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiA9IHxjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZS9tMSBjdXN0b21fZG1hX2Nsb2NrXzAvaW4gYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX2FyYml0ZXJsb2NrMiA9IGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fYW55X2NvbnRpbnVlcmVxdWVzdCBhdCBsZWFzdCBvbmUgbWFzdGVyIGNvbnRpbnVlcyByZXF1ZXN0aW5nLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX2FueV9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX20xX2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9jbG9ja18wX2luID0gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2N1c3RvbV9kbWFfY2xvY2tfMF9pbiAmIH4oKChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSAmICgocGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlciAhPSAwKSkpKTsKLSAgLy9sb2NhbCByZWFkZGF0YXZhbGlkIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9jbG9ja18wX2luLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkgJiB+Y3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRzX2Zvcl9yZWFkOwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX3dyaXRlZGF0YSBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd3JpdGVkYXRhID0gcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YTsKLQotICAvL2Fzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kb2ZwYWNrZXRfZnJvbV9zYSA9IGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRvZnBhY2tldCBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRvZnBhY2tldF9mcm9tX3NhID0gY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZG9mcGFja2V0OwotCi0gIC8vbWFzdGVyIGlzIGFsd2F5cyBncmFudGVkIHdoZW4gcmVxdWVzdGVkCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gPSBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9jbG9ja18wX2luOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlL20xIHNhdmVkLWdyYW50IGN1c3RvbV9kbWFfY2xvY2tfMC9pbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9zYXZlZF9ncmFudF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gPSBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3VzdG9tX2RtYV9jbG9ja18wX2luOwotCi0gIC8vYWxsb3cgbmV3IGFyYiBjeWNsZSBmb3IgY3VzdG9tX2RtYV9jbG9ja18wL2luLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX2FsbG93X25ld19hcmJfY3ljbGUgPSAxOwotCi0gIC8vcGxhY2Vob2xkZXIgY2hvc2VuIG1hc3RlcgotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX2dyYW50X3ZlY3RvciA9IDE7Ci0KLSAgLy9wbGFjZWhvbGRlciB2ZWN0b3Igb2YgbWFzdGVyIHF1YWxpZmllZC1yZXF1ZXN0cwotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX21hc3Rlcl9xcmVxX3ZlY3RvciA9IDE7Ci0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVzZXRfbiBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX3Jlc2V0X24gPSByZXNldF9uOwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fZmlyc3R0cmFuc2ZlciA9IGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9iZWdpbnNfeGZlciA/IGN1c3RvbV9kbWFfY2xvY2tfMF9pbl91bnJlZ19maXJzdHRyYW5zZmVyIDogY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlZ19maXJzdHRyYW5zZmVyOwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX3VucmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fdW5yZWdfZmlyc3R0cmFuc2ZlciA9IH4oY3VzdG9tX2RtYV9jbG9ja18wX2luX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYW55X2NvbnRpbnVlcmVxdWVzdCk7Ci0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWdfZmlyc3R0cmFuc2ZlciA8PSAxJ2IxOwotICAgICAgZWxzZSBpZiAoY3VzdG9tX2RtYV9jbG9ja18wX2luX2JlZ2luc194ZmVyKQotICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWdfZmlyc3R0cmFuc2ZlciA8PSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCBiZWdpbiBidXJzdCB0cmFuc2Zlciwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9iZWdpbmJ1cnN0dHJhbnNmZXJfaW50ZXJuYWwgPSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYmVnaW5zX3hmZXI7Ci0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVhZCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlYWQgPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCk7Ci0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fd3JpdGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl93cml0ZSA9IHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2N1c3RvbV9kbWFfY2xvY2tfMF9pbiAmIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCk7Ci0KLSAgYXNzaWduIHNoaWZ0ZWRfYWRkcmVzc190b19jdXN0b21fZG1hX2Nsb2NrXzBfaW5fZnJvbV9waXBlbGluZV9icmlkZ2VfbTEgPSBwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZTsKLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fYWRkcmVzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYWRkcmVzcyA9IHNoaWZ0ZWRfYWRkcmVzc190b19jdXN0b21fZG1hX2Nsb2NrXzBfaW5fZnJvbV9waXBlbGluZV9icmlkZ2VfbTEgPj4gMjsKLQotICAvL3NsYXZlaWQgY3VzdG9tX2RtYV9jbG9ja18wX2luX25hdGl2ZWFkZHJlc3MgbmF0aXZlYWRkcmVzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fbmF0aXZlYWRkcmVzcyA9IHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlID4+IDI7Ci0KLSAgLy9kMV9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kX3hmZXIgcmVnaXN0ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRfeGZlciA8PSAxOwotICAgICAgZWxzZSAKLSAgICAgICAgZDFfY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZF94ZmVyIDw9IGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRfeGZlcjsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRzX2Zvcl9yZWFkIGluIGEgY3ljbGUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd2FpdHNfZm9yX3JlYWQgPSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5faW5fYV9yZWFkX2N5Y2xlICYgY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfaW5faW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5faW5fYV9yZWFkX2N5Y2xlID0gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfY3VzdG9tX2RtYV9jbG9ja18wX2luICYgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpOwotCi0gIC8vaW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBpbl9hX3JlYWRfY3ljbGUgPSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5faW5fYV9yZWFkX2N5Y2xlOwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRzX2Zvcl93cml0ZSBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRzX2Zvcl93cml0ZSA9IGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9pbl9hX3dyaXRlX2N5Y2xlICYgY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfaW5faW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX2luX2luX2Ffd3JpdGVfY3ljbGUgPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gJiAocGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpOwotCi0gIC8vaW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gaW5fYV93cml0ZV9jeWNsZSA9IGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9pbl9hX3dyaXRlX2N5Y2xlOwotCi0gIGFzc2lnbiB3YWl0X2Zvcl9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fY291bnRlciA9IDA7Ci0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX2luX2J5dGVlbmFibGUgYnl0ZSBlbmFibGUgcG9ydCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYnl0ZWVuYWJsZSA9IChwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4pPyBwaXBlbGluZV9icmlkZ2VfbTFfYnl0ZWVuYWJsZSA6Ci0gICAgLTE7Ci0KLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzAvaW4gZW5hYmxlIG5vbi16ZXJvIGFzc2VydGlvbnMsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMgPD0gMSdiMTsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlL20xIG5vbi16ZXJvIGJ1cnN0Y291bnQgYXNzZXJ0aW9uLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3VzdG9tX2RtYV9jbG9ja18wX2luICYmIChwaXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCA9PSAwKSAmJiBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBwaXBlbGluZV9icmlkZ2UvbTEgZHJvdmUgMCBvbiBpdHMgJ2J1cnN0Y291bnQnIHBvcnQgd2hpbGUgYWNjZXNzaW5nIHNsYXZlIGN1c3RvbV9kbWFfY2xvY2tfMC9pbiIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9ncmFudGVkX3BsbF9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9xdWFsaWZpZWRfcmVxdWVzdF9wbGxfczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkX2RhdGFfdmFsaWRfcGxsX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlcXVlc3RzX3BsbF9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX3BsbF9zMV9lbmRfeGZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxsX3MxX3JlYWRkYXRhX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FkZHJlc3NfdG9fc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF93YWl0cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbICAzOiAwXSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FkZHJlc3NfdG9fc2xhdmU7Ci0gIG91dHB1dCAgWyAxNTogMF0gY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3Jlc2V0X247Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAgMzogMF0gY3VzdG9tX2RtYV9jbG9ja18wX291dF9hZGRyZXNzOwotICBpbnB1dCAgIFsgIDE6IDBdIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2dyYW50ZWRfcGxsX3MxOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcXVhbGlmaWVkX3JlcXVlc3RfcGxsX3MxOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlYWRfZGF0YV92YWxpZF9wbGxfczE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZXF1ZXN0c19wbGxfczE7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZTsKLSAgaW5wdXQgICBbIDE1OiAwXSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBkMV9wbGxfczFfZW5kX3hmZXI7Ci0gIGlucHV0ICAgWyAxNTogMF0gcGxsX3MxX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICByZWcgICAgICAgICAgICAgIGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWU7Ci0gIHJlZyAgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9jbG9ja18wX291dF9hZGRyZXNzX2xhc3RfdGltZTsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FkZHJlc3NfdG9fc2xhdmU7Ci0gIHJlZyAgICAgWyAgMTogMF0gY3VzdG9tX2RtYV9jbG9ja18wX291dF9ieXRlZW5hYmxlX2xhc3RfdGltZTsKLSAgcmVnICAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlYWRfbGFzdF90aW1lOwotICB3aXJlICAgIFsgMTU6IDBdIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcnVuOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd2FpdHJlcXVlc3Q7Ci0gIHJlZyAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZV9sYXN0X3RpbWU7Ci0gIHJlZyAgICAgWyAxNTogMF0gY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZWRhdGFfbGFzdF90aW1lOwotICB3aXJlICAgICAgICAgICAgIHJfMDsKLSAgLy9yXzAgbWFzdGVyX3J1biBjYXNjYWRlZCB3YWl0IGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiByXzAgPSAxICYgKCh+Y3VzdG9tX2RtYV9jbG9ja18wX291dF9xdWFsaWZpZWRfcmVxdWVzdF9wbGxfczEgfCB+Y3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkIHwgKDEgJiB+ZDFfcGxsX3MxX2VuZF94ZmVyICYgY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkKSkpICYgKCh+Y3VzdG9tX2RtYV9jbG9ja18wX291dF9xdWFsaWZpZWRfcmVxdWVzdF9wbGxfczEgfCB+Y3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZSB8ICgxICYgY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZSkpKTsKLQotICAvL2Nhc2NhZGVkIHdhaXQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcnVuID0gcl8wOwotCi0gIC8vb3B0aW1pemUgc2VsZWN0LWxvZ2ljIGJ5IHBhc3Npbmcgb25seSB0aG9zZSBhZGRyZXNzIGJpdHMgd2hpY2ggbWF0dGVyLgotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX291dF9hZGRyZXNzX3RvX3NsYXZlID0gY3VzdG9tX2RtYV9jbG9ja18wX291dF9hZGRyZXNzOwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wL291dCByZWFkZGF0YSBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlYWRkYXRhID0gcGxsX3MxX3JlYWRkYXRhX2Zyb21fc2E7Ci0KLSAgLy9hY3R1YWwgd2FpdHJlcXVlc3QgcG9ydCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd2FpdHJlcXVlc3QgPSB+Y3VzdG9tX2RtYV9jbG9ja18wX291dF9ydW47Ci0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3Jlc2V0X24gYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVzZXRfbiA9IHJlc2V0X247Ci0KLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FkZHJlc3MgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FkZHJlc3NfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FkZHJlc3NfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wL291dCB3YWl0ZWQgbGFzdCB0aW1lLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd2FpdHJlcXVlc3QgJiAoY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkIHwgY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZSk7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYWRkcmVzcyBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYWRkcmVzcyAhPSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FkZHJlc3NfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9jbG9ja18wX291dF9hZGRyZXNzIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX291dF9ieXRlZW5hYmxlIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9ieXRlZW5hYmxlX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9ieXRlZW5hYmxlX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2J5dGVlbmFibGU7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYnl0ZWVuYWJsZSBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYnl0ZWVuYWJsZSAhPSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2J5dGVlbmFibGVfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9jbG9ja18wX291dF9ieXRlZW5hYmxlIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlYWQ7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZCBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZCAhPSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlYWRfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZSBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGVfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlX2xhc3RfdGltZSA8PSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZSAhPSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlX2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGUgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlZGF0YSBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGVkYXRhX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZWRhdGFfbGFzdF90aW1lIDw9IGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGVkYXRhOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlZGF0YSBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGVkYXRhICE9IGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGVkYXRhX2xhc3RfdGltZSkgJiBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlZGF0YSBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBidXJzdGNvdW50X2ZpZm9fZm9yX2Rkcl9zZHJhbV9zMV9tb2R1bGUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfZmlmbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jX3Jlc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmb19jb250YWluc19vbmVzX24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAgMjogMF0gZGF0YV9vdXQ7Ci0gIG91dHB1dCAgICAgICAgICAgZW1wdHk7Ci0gIG91dHB1dCAgICAgICAgICAgZmlmb19jb250YWluc19vbmVzX247Ci0gIG91dHB1dCAgICAgICAgICAgZnVsbDsKLSAgaW5wdXQgICAgICAgICAgICBjbGVhcl9maWZvOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbICAyOiAwXSBkYXRhX2luOwotICBpbnB1dCAgICAgICAgICAgIHJlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICBzeW5jX3Jlc2V0OwotICBpbnB1dCAgICAgICAgICAgIHdyaXRlOwotCi0gIHdpcmUgICAgWyAgMjogMF0gZGF0YV9vdXQ7Ci0gIHdpcmUgICAgICAgICAgICAgZW1wdHk7Ci0gIHJlZyAgICAgICAgICAgICAgZmlmb19jb250YWluc19vbmVzX247Ci0gIHdpcmUgICAgICAgICAgICAgZnVsbDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzA7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTA7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xMTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEyOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTM7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xNDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE1OwotICB3aXJlICAgICAgICAgICAgIGZ1bGxfMTY7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8yOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzQ7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF81OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNjsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzc7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF84OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfOTsKLSAgcmVnICAgICBbICA1OiAwXSBob3dfbWFueV9vbmVzOwotICB3aXJlICAgIFsgIDU6IDBdIG9uZV9jb3VudF9taW51c19vbmU7Ci0gIHdpcmUgICAgWyAgNTogMF0gb25lX2NvdW50X3BsdXNfb25lOwotICB3aXJlICAgICAgICAgICAgIHAwX2Z1bGxfMDsKLSAgd2lyZSAgICBbICAyOiAwXSBwMF9zdGFnZV8wOwotICB3aXJlICAgICAgICAgICAgIHAxMF9mdWxsXzEwOwotICB3aXJlICAgIFsgIDI6IDBdIHAxMF9zdGFnZV8xMDsKLSAgd2lyZSAgICAgICAgICAgICBwMTFfZnVsbF8xMTsKLSAgd2lyZSAgICBbICAyOiAwXSBwMTFfc3RhZ2VfMTE7Ci0gIHdpcmUgICAgICAgICAgICAgcDEyX2Z1bGxfMTI7Ci0gIHdpcmUgICAgWyAgMjogMF0gcDEyX3N0YWdlXzEyOwotICB3aXJlICAgICAgICAgICAgIHAxM19mdWxsXzEzOwotICB3aXJlICAgIFsgIDI6IDBdIHAxM19zdGFnZV8xMzsKLSAgd2lyZSAgICAgICAgICAgICBwMTRfZnVsbF8xNDsKLSAgd2lyZSAgICBbICAyOiAwXSBwMTRfc3RhZ2VfMTQ7Ci0gIHdpcmUgICAgICAgICAgICAgcDE1X2Z1bGxfMTU7Ci0gIHdpcmUgICAgWyAgMjogMF0gcDE1X3N0YWdlXzE1OwotICB3aXJlICAgICAgICAgICAgIHAxX2Z1bGxfMTsKLSAgd2lyZSAgICBbICAyOiAwXSBwMV9zdGFnZV8xOwotICB3aXJlICAgICAgICAgICAgIHAyX2Z1bGxfMjsKLSAgd2lyZSAgICBbICAyOiAwXSBwMl9zdGFnZV8yOwotICB3aXJlICAgICAgICAgICAgIHAzX2Z1bGxfMzsKLSAgd2lyZSAgICBbICAyOiAwXSBwM19zdGFnZV8zOwotICB3aXJlICAgICAgICAgICAgIHA0X2Z1bGxfNDsKLSAgd2lyZSAgICBbICAyOiAwXSBwNF9zdGFnZV80OwotICB3aXJlICAgICAgICAgICAgIHA1X2Z1bGxfNTsKLSAgd2lyZSAgICBbICAyOiAwXSBwNV9zdGFnZV81OwotICB3aXJlICAgICAgICAgICAgIHA2X2Z1bGxfNjsKLSAgd2lyZSAgICBbICAyOiAwXSBwNl9zdGFnZV82OwotICB3aXJlICAgICAgICAgICAgIHA3X2Z1bGxfNzsKLSAgd2lyZSAgICBbICAyOiAwXSBwN19zdGFnZV83OwotICB3aXJlICAgICAgICAgICAgIHA4X2Z1bGxfODsKLSAgd2lyZSAgICBbICAyOiAwXSBwOF9zdGFnZV84OwotICB3aXJlICAgICAgICAgICAgIHA5X2Z1bGxfOTsKLSAgd2lyZSAgICBbICAyOiAwXSBwOV9zdGFnZV85OwotICByZWcgICAgIFsgIDI6IDBdIHN0YWdlXzA7Ci0gIHJlZyAgICAgWyAgMjogMF0gc3RhZ2VfMTsKLSAgcmVnICAgICBbICAyOiAwXSBzdGFnZV8xMDsKLSAgcmVnICAgICBbICAyOiAwXSBzdGFnZV8xMTsKLSAgcmVnICAgICBbICAyOiAwXSBzdGFnZV8xMjsKLSAgcmVnICAgICBbICAyOiAwXSBzdGFnZV8xMzsKLSAgcmVnICAgICBbICAyOiAwXSBzdGFnZV8xNDsKLSAgcmVnICAgICBbICAyOiAwXSBzdGFnZV8xNTsKLSAgcmVnICAgICBbICAyOiAwXSBzdGFnZV8yOwotICByZWcgICAgIFsgIDI6IDBdIHN0YWdlXzM7Ci0gIHJlZyAgICAgWyAgMjogMF0gc3RhZ2VfNDsKLSAgcmVnICAgICBbICAyOiAwXSBzdGFnZV81OwotICByZWcgICAgIFsgIDI6IDBdIHN0YWdlXzY7Ci0gIHJlZyAgICAgWyAgMjogMF0gc3RhZ2VfNzsKLSAgcmVnICAgICBbICAyOiAwXSBzdGFnZV84OwotICByZWcgICAgIFsgIDI6IDBdIHN0YWdlXzk7Ci0gIHdpcmUgICAgWyAgNTogMF0gdXBkYXRlZF9vbmVfY291bnQ7Ci0gIGFzc2lnbiBkYXRhX291dCA9IHN0YWdlXzA7Ci0gIGFzc2lnbiBmdWxsID0gZnVsbF8xNTsKLSAgYXNzaWduIGVtcHR5ID0gIWZ1bGxfMDsKLSAgYXNzaWduIGZ1bGxfMTYgPSAwOwotICAvL2RhdGFfMTUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTVfc3RhZ2VfMTUgPSAoKGZ1bGxfMTYgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIGRhdGFfaW47Ci0KLSAgLy9kYXRhX3JlZ18xNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzE1KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTUgJiAhKChmdWxsXzE2ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTUgPD0gcDE1X3N0YWdlXzE1OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzE1LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE1X2Z1bGxfMTUgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzE0IDoKLSAgICAwOwotCi0gIC8vY29udHJvbF9yZWdfMTUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzE1IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTUgPD0gcDE1X2Z1bGxfMTU7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTRfc3RhZ2VfMTQgPSAoKGZ1bGxfMTUgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzE1OwotCi0gIC8vZGF0YV9yZWdfMTQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzE0ICYgISgoZnVsbF8xNSA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzE0IDw9IHAxNF9zdGFnZV8xNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNF9mdWxsXzE0ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMyA6Ci0gICAgZnVsbF8xNTsKLQotICAvL2NvbnRyb2xfcmVnXzE0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzE0IDw9IHAxNF9mdWxsXzE0OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEzX3N0YWdlXzEzID0gKChmdWxsXzE0ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xNDsKLQotICAvL2RhdGFfcmVnXzEzLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTMpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMyAmICEoKGZ1bGxfMTQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMyA8PSBwMTNfc3RhZ2VfMTM7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTNfZnVsbF8xMyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTIgOgotICAgIGZ1bGxfMTQ7Ci0KLSAgLy9jb250cm9sX3JlZ18xMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xMyA8PSBwMTNfZnVsbF8xMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMl9zdGFnZV8xMiA9ICgoZnVsbF8xMyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTM7Ci0KLSAgLy9kYXRhX3JlZ18xMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEyKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTIgJiAhKChmdWxsXzEzID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTIgPD0gcDEyX3N0YWdlXzEyOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzEyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEyX2Z1bGxfMTIgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzExIDoKLSAgICBmdWxsXzEzOwotCi0gIC8vY29udHJvbF9yZWdfMTIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEyIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTIgPD0gcDEyX2Z1bGxfMTI7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTFfc3RhZ2VfMTEgPSAoKGZ1bGxfMTIgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzEyOwotCi0gIC8vZGF0YV9yZWdfMTEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzExICYgISgoZnVsbF8xMiA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzExIDw9IHAxMV9zdGFnZV8xMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMV9mdWxsXzExID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMCA6Ci0gICAgZnVsbF8xMjsKLQotICAvL2NvbnRyb2xfcmVnXzExLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzExIDw9IHAxMV9mdWxsXzExOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEwLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEwX3N0YWdlXzEwID0gKChmdWxsXzExICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMTsKLQotICAvL2RhdGFfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTApKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMCAmICEoKGZ1bGxfMTEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMCA8PSBwMTBfc3RhZ2VfMTA7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTAsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTBfZnVsbF8xMCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfOSA6Ci0gICAgZnVsbF8xMTsKLQotICAvL2NvbnRyb2xfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEwIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzEwIDw9IHAxMF9mdWxsXzEwOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9zdGFnZV85ID0gKChmdWxsXzEwICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMDsKLQotICAvL2RhdGFfcmVnXzksIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzkpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF85ICYgISgoZnVsbF8xMCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfOSA8PSBwOV9zdGFnZV85OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9mdWxsXzkgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzggOgotICAgIGZ1bGxfMTA7Ci0KLSAgLy9jb250cm9sX3JlZ185LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF85IDw9IHA5X2Z1bGxfOTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfc3RhZ2VfOCA9ICgoZnVsbF85ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV85OwotCi0gIC8vZGF0YV9yZWdfOCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfOCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfOCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzggJiAhKChmdWxsXzkgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV84IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzggPD0gcDhfc3RhZ2VfODsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfZnVsbF84ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF83IDoKLSAgICBmdWxsXzk7Ci0KLSAgLy9jb250cm9sX3JlZ184LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF84IDw9IHA4X2Z1bGxfODsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfc3RhZ2VfNyA9ICgoZnVsbF84ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV84OwotCi0gIC8vZGF0YV9yZWdfNywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzcgJiAhKChmdWxsXzggPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV83IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzcgPD0gcDdfc3RhZ2VfNzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfZnVsbF83ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF82IDoKLSAgICBmdWxsXzg7Ci0KLSAgLy9jb250cm9sX3JlZ183LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF83IDw9IHA3X2Z1bGxfNzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfc3RhZ2VfNiA9ICgoZnVsbF83ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV83OwotCi0gIC8vZGF0YV9yZWdfNiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzYgJiAhKChmdWxsXzcgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV82IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzYgPD0gcDZfc3RhZ2VfNjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfZnVsbF82ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF81IDoKLSAgICBmdWxsXzc7Ci0KLSAgLy9jb250cm9sX3JlZ182LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF82IDw9IHA2X2Z1bGxfNjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfc3RhZ2VfNSA9ICgoZnVsbF82ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV82OwotCi0gIC8vZGF0YV9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzUgJiAhKChmdWxsXzYgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzUgPD0gcDVfc3RhZ2VfNTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfZnVsbF81ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF80IDoKLSAgICBmdWxsXzY7Ci0KLSAgLy9jb250cm9sX3JlZ181LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF81IDw9IHA1X2Z1bGxfNTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfc3RhZ2VfNCA9ICgoZnVsbF81ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV81OwotCi0gIC8vZGF0YV9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzQgJiAhKChmdWxsXzUgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzQgPD0gcDRfc3RhZ2VfNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfZnVsbF80ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8zIDoKLSAgICBmdWxsXzU7Ci0KLSAgLy9jb250cm9sX3JlZ180LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF80IDw9IHA0X2Z1bGxfNDsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfc3RhZ2VfMyA9ICgoZnVsbF80ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV80OwotCi0gIC8vZGF0YV9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzMgJiAhKChmdWxsXzQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzMgPD0gcDNfc3RhZ2VfMzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfZnVsbF8zID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8yIDoKLSAgICBmdWxsXzQ7Ci0KLSAgLy9jb250cm9sX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8zIDw9IHAzX2Z1bGxfMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfc3RhZ2VfMiA9ICgoZnVsbF8zICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8zOwotCi0gIC8vZGF0YV9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzIgJiAhKChmdWxsXzMgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzIgPD0gcDJfc3RhZ2VfMjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfZnVsbF8yID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xIDoKLSAgICBmdWxsXzM7Ci0KLSAgLy9jb250cm9sX3JlZ18yLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8yIDw9IHAyX2Z1bGxfMjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfc3RhZ2VfMSA9ICgoZnVsbF8yICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8yOwotCi0gIC8vZGF0YV9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEgJiAhKChmdWxsXzIgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEgPD0gcDFfc3RhZ2VfMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfZnVsbF8xID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8wIDoKLSAgICBmdWxsXzI7Ci0KLSAgLy9jb250cm9sX3JlZ18xLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xIDw9IHAxX2Z1bGxfMTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfc3RhZ2VfMCA9ICgoZnVsbF8xICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xOwotCi0gIC8vZGF0YV9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzAgJiAhKChmdWxsXzEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzAgPD0gcDBfc3RhZ2VfMDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfZnVsbF8wID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gMSA6Ci0gICAgZnVsbF8xOwotCi0gIC8vY29udHJvbF9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbyAmIH53cml0ZSkKLSAgICAgICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMCA8PSBwMF9mdWxsXzA7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gb25lX2NvdW50X3BsdXNfb25lID0gaG93X21hbnlfb25lcyArIDE7Ci0gIGFzc2lnbiBvbmVfY291bnRfbWludXNfb25lID0gaG93X21hbnlfb25lcyAtIDE7Ci0gIC8vdXBkYXRlZF9vbmVfY291bnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB1cGRhdGVkX29uZV9jb3VudCA9ICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiAhd3JpdGUpKSk/IDAgOgotICAgICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiB3cml0ZSkpKT8gfGRhdGFfaW4gOgotICAgICgocmVhZCAmICh8ZGF0YV9pbikgJiB3cml0ZSAmICh8c3RhZ2VfMCkpKT8gaG93X21hbnlfb25lcyA6Ci0gICAgKCh3cml0ZSAmICh8ZGF0YV9pbikpKT8gb25lX2NvdW50X3BsdXNfb25lIDoKLSAgICAoKHJlYWQgJiAofHN0YWdlXzApKSk/IG9uZV9jb3VudF9taW51c19vbmUgOgotICAgIGhvd19tYW55X29uZXM7Ci0KLSAgLy9jb3VudHMgaG93IG1hbnkgb25lcyBpbiB0aGUgZGF0YSBwaXBlbGluZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSB1cGRhdGVkX29uZV9jb3VudDsKLSAgICBlbmQKLQotCi0gIC8vdGhpcyBmaWZvIGNvbnRhaW5zIG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uIDw9IDE7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCB3cml0ZSkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSB+KHx1cGRhdGVkX29uZV9jb3VudCk7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcmR2X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3RvX2Rkcl9zZHJhbV9zMV9tb2R1bGUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2ZpZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bmNfcmVzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9vdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmb19jb250YWluc19vbmVzX24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGRhdGFfb3V0OwotICBvdXRwdXQgICAgICAgICAgIGVtcHR5OwotICBvdXRwdXQgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICBvdXRwdXQgICAgICAgICAgIGZ1bGw7Ci0gIGlucHV0ICAgICAgICAgICAgY2xlYXJfZmlmbzsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgICAgICAgICAgZGF0YV9pbjsKLSAgaW5wdXQgICAgICAgICAgICByZWFkOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgc3luY19yZXNldDsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZTsKLQotICB3aXJlICAgICAgICAgICAgIGRhdGFfb3V0OwotICB3aXJlICAgICAgICAgICAgIGVtcHR5OwotICByZWcgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICB3aXJlICAgICAgICAgICAgIGZ1bGw7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8wOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEwOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTE7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xMjsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEzOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTQ7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xNTsKLSAgd2lyZSAgICAgICAgICAgICBmdWxsXzE2OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMjsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzM7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF80OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzY7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF83OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfODsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzk7Ci0gIHJlZyAgICAgWyAgNTogMF0gaG93X21hbnlfb25lczsKLSAgd2lyZSAgICBbICA1OiAwXSBvbmVfY291bnRfbWludXNfb25lOwotICB3aXJlICAgIFsgIDU6IDBdIG9uZV9jb3VudF9wbHVzX29uZTsKLSAgd2lyZSAgICAgICAgICAgICBwMF9mdWxsXzA7Ci0gIHdpcmUgICAgICAgICAgICAgcDBfc3RhZ2VfMDsKLSAgd2lyZSAgICAgICAgICAgICBwMTBfZnVsbF8xMDsKLSAgd2lyZSAgICAgICAgICAgICBwMTBfc3RhZ2VfMTA7Ci0gIHdpcmUgICAgICAgICAgICAgcDExX2Z1bGxfMTE7Ci0gIHdpcmUgICAgICAgICAgICAgcDExX3N0YWdlXzExOwotICB3aXJlICAgICAgICAgICAgIHAxMl9mdWxsXzEyOwotICB3aXJlICAgICAgICAgICAgIHAxMl9zdGFnZV8xMjsKLSAgd2lyZSAgICAgICAgICAgICBwMTNfZnVsbF8xMzsKLSAgd2lyZSAgICAgICAgICAgICBwMTNfc3RhZ2VfMTM7Ci0gIHdpcmUgICAgICAgICAgICAgcDE0X2Z1bGxfMTQ7Ci0gIHdpcmUgICAgICAgICAgICAgcDE0X3N0YWdlXzE0OwotICB3aXJlICAgICAgICAgICAgIHAxNV9mdWxsXzE1OwotICB3aXJlICAgICAgICAgICAgIHAxNV9zdGFnZV8xNTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9mdWxsXzE7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfc3RhZ2VfMTsKLSAgd2lyZSAgICAgICAgICAgICBwMl9mdWxsXzI7Ci0gIHdpcmUgICAgICAgICAgICAgcDJfc3RhZ2VfMjsKLSAgd2lyZSAgICAgICAgICAgICBwM19mdWxsXzM7Ci0gIHdpcmUgICAgICAgICAgICAgcDNfc3RhZ2VfMzsKLSAgd2lyZSAgICAgICAgICAgICBwNF9mdWxsXzQ7Ci0gIHdpcmUgICAgICAgICAgICAgcDRfc3RhZ2VfNDsKLSAgd2lyZSAgICAgICAgICAgICBwNV9mdWxsXzU7Ci0gIHdpcmUgICAgICAgICAgICAgcDVfc3RhZ2VfNTsKLSAgd2lyZSAgICAgICAgICAgICBwNl9mdWxsXzY7Ci0gIHdpcmUgICAgICAgICAgICAgcDZfc3RhZ2VfNjsKLSAgd2lyZSAgICAgICAgICAgICBwN19mdWxsXzc7Ci0gIHdpcmUgICAgICAgICAgICAgcDdfc3RhZ2VfNzsKLSAgd2lyZSAgICAgICAgICAgICBwOF9mdWxsXzg7Ci0gIHdpcmUgICAgICAgICAgICAgcDhfc3RhZ2VfODsKLSAgd2lyZSAgICAgICAgICAgICBwOV9mdWxsXzk7Ci0gIHdpcmUgICAgICAgICAgICAgcDlfc3RhZ2VfOTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8wOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzE7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTA7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTE7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTI7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTM7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTQ7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTU7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMjsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8zOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzQ7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfNTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV82OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzc7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfODsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV85OwotICB3aXJlICAgIFsgIDU6IDBdIHVwZGF0ZWRfb25lX2NvdW50OwotICBhc3NpZ24gZGF0YV9vdXQgPSBzdGFnZV8wOwotICBhc3NpZ24gZnVsbCA9IGZ1bGxfMTU7Ci0gIGFzc2lnbiBlbXB0eSA9ICFmdWxsXzA7Ci0gIGFzc2lnbiBmdWxsXzE2ID0gMDsKLSAgLy9kYXRhXzE1LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE1X3N0YWdlXzE1ID0gKChmdWxsXzE2ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBkYXRhX2luOwotCi0gIC8vZGF0YV9yZWdfMTUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzE1IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xNSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzE1ICYgISgoZnVsbF8xNiA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzE1IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzE1IDw9IHAxNV9zdGFnZV8xNTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xNSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNV9mdWxsXzE1ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xNCA6Ci0gICAgMDsKLQotICAvL2NvbnRyb2xfcmVnXzE1LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzE1IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xNSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzE1IDw9IHAxNV9mdWxsXzE1OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzE0LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE0X3N0YWdlXzE0ID0gKChmdWxsXzE1ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xNTsKLQotICAvL2RhdGFfcmVnXzE0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xNCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTQpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xNCAmICEoKGZ1bGxfMTUgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xNCA8PSBwMTRfc3RhZ2VfMTQ7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTRfZnVsbF8xNCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTMgOgotICAgIGZ1bGxfMTU7Ci0KLSAgLy9jb250cm9sX3JlZ18xNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xNCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTQgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xNCA8PSBwMTRfZnVsbF8xNDsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxM19zdGFnZV8xMyA9ICgoZnVsbF8xNCAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTQ7Ci0KLSAgLy9kYXRhX3JlZ18xMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEzKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTMgJiAhKChmdWxsXzE0ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTMgPD0gcDEzX3N0YWdlXzEzOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzEzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEzX2Z1bGxfMTMgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzEyIDoKLSAgICBmdWxsXzE0OwotCi0gIC8vY29udHJvbF9yZWdfMTMsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEzIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTMgPD0gcDEzX2Z1bGxfMTM7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTIsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTJfc3RhZ2VfMTIgPSAoKGZ1bGxfMTMgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzEzOwotCi0gIC8vZGF0YV9yZWdfMTIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzEyIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xMikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEyICYgISgoZnVsbF8xMyA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzEyIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEyIDw9IHAxMl9zdGFnZV8xMjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMl9mdWxsXzEyID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMSA6Ci0gICAgZnVsbF8xMzsKLQotICAvL2NvbnRyb2xfcmVnXzEyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEyIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzEyIDw9IHAxMl9mdWxsXzEyOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzExLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDExX3N0YWdlXzExID0gKChmdWxsXzEyICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMjsKLQotICAvL2RhdGFfcmVnXzExLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTEpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMSAmICEoKGZ1bGxfMTIgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMSA8PSBwMTFfc3RhZ2VfMTE7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTFfZnVsbF8xMSA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTAgOgotICAgIGZ1bGxfMTI7Ci0KLSAgLy9jb250cm9sX3JlZ18xMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xMSA8PSBwMTFfZnVsbF8xMTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMF9zdGFnZV8xMCA9ICgoZnVsbF8xMSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTE7Ci0KLSAgLy9kYXRhX3JlZ18xMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTAgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEwKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTAgJiAhKChmdWxsXzExID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTAgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTAgPD0gcDEwX3N0YWdlXzEwOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzEwLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEwX2Z1bGxfMTAgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzkgOgotICAgIGZ1bGxfMTE7Ci0KLSAgLy9jb250cm9sX3JlZ18xMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTAgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xMCA8PSBwMTBfZnVsbF8xMDsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV85LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDlfc3RhZ2VfOSA9ICgoZnVsbF8xMCAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTA7Ci0KLSAgLy9kYXRhX3JlZ185LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV85IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF85KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfOSAmICEoKGZ1bGxfMTAgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV85IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzkgPD0gcDlfc3RhZ2VfOTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF85LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDlfZnVsbF85ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF84IDoKLSAgICBmdWxsXzEwOwotCi0gIC8vY29udHJvbF9yZWdfOSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF85IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF85IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfOSA8PSBwOV9mdWxsXzk7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfOCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA4X3N0YWdlXzggPSAoKGZ1bGxfOSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfOTsKLQotICAvL2RhdGFfcmVnXzgsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzggPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzgpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF84ICYgISgoZnVsbF85ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfOCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV84IDw9IHA4X3N0YWdlXzg7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfOCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA4X2Z1bGxfOCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfNyA6Ci0gICAgZnVsbF85OwotCi0gIC8vY29udHJvbF9yZWdfOCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF84IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF84IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfOCA8PSBwOF9mdWxsXzg7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfNywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA3X3N0YWdlXzcgPSAoKGZ1bGxfOCAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfODsKLQotICAvL2RhdGFfcmVnXzcsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzcpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF83ICYgISgoZnVsbF84ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfNyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV83IDw9IHA3X3N0YWdlXzc7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfNywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA3X2Z1bGxfNyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfNiA6Ci0gICAgZnVsbF84OwotCi0gIC8vY29udHJvbF9yZWdfNywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF83IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF83IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNyA8PSBwN19mdWxsXzc7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfNiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA2X3N0YWdlXzYgPSAoKGZ1bGxfNyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNzsKLQotICAvL2RhdGFfcmVnXzYsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzYgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzYpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF82ICYgISgoZnVsbF83ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfNiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV82IDw9IHA2X3N0YWdlXzY7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfNiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA2X2Z1bGxfNiA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfNSA6Ci0gICAgZnVsbF83OwotCi0gIC8vY29udHJvbF9yZWdfNiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF82IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF82IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNiA8PSBwNl9mdWxsXzY7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfNSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA1X3N0YWdlXzUgPSAoKGZ1bGxfNiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNjsKLQotICAvL2RhdGFfcmVnXzUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzUpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF81ICYgISgoZnVsbF82ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfNSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV81IDw9IHA1X3N0YWdlXzU7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfNSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA1X2Z1bGxfNSA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfNCA6Ci0gICAgZnVsbF82OwotCi0gIC8vY29udHJvbF9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF81IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNSA8PSBwNV9mdWxsXzU7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA0X3N0YWdlXzQgPSAoKGZ1bGxfNSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNTsKLQotICAvL2RhdGFfcmVnXzQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzQpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF80ICYgISgoZnVsbF81ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV80IDw9IHA0X3N0YWdlXzQ7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA0X2Z1bGxfNCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMyA6Ci0gICAgZnVsbF81OwotCi0gIC8vY29udHJvbF9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF80IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfNCA8PSBwNF9mdWxsXzQ7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAzX3N0YWdlXzMgPSAoKGZ1bGxfNCAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfNDsKLQotICAvL2RhdGFfcmVnXzMsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzMpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8zICYgISgoZnVsbF80ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8zIDw9IHAzX3N0YWdlXzM7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAzX2Z1bGxfMyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMiA6Ci0gICAgZnVsbF80OwotCi0gIC8vY29udHJvbF9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8zIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMyA8PSBwM19mdWxsXzM7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAyX3N0YWdlXzIgPSAoKGZ1bGxfMyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMzsKLQotICAvL2RhdGFfcmVnXzIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzIpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8yICYgISgoZnVsbF8zID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8yIDw9IHAyX3N0YWdlXzI7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAyX2Z1bGxfMiA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMSA6Ci0gICAgZnVsbF8zOwotCi0gIC8vY29udHJvbF9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8yIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMiA8PSBwMl9mdWxsXzI7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX3N0YWdlXzEgPSAoKGZ1bGxfMiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMjsKLQotICAvL2RhdGFfcmVnXzEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xICYgISgoZnVsbF8yID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xIDw9IHAxX3N0YWdlXzE7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX2Z1bGxfMSA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMCA6Ci0gICAgZnVsbF8yOwotCi0gIC8vY29udHJvbF9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMSA8PSBwMV9mdWxsXzE7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAwX3N0YWdlXzAgPSAoKGZ1bGxfMSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTsKLQotICAvL2RhdGFfcmVnXzAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzAgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8wICYgISgoZnVsbF8xID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8wIDw9IHAwX3N0YWdlXzA7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAwX2Z1bGxfMCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IDEgOgotICAgIGZ1bGxfMTsKLQotICAvL2NvbnRyb2xfcmVnXzAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8gJiB+d3JpdGUpCi0gICAgICAgICAgICAgIGZ1bGxfMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzAgPD0gcDBfZnVsbF8wOwotICAgIGVuZAotCi0KLSAgYXNzaWduIG9uZV9jb3VudF9wbHVzX29uZSA9IGhvd19tYW55X29uZXMgKyAxOwotICBhc3NpZ24gb25lX2NvdW50X21pbnVzX29uZSA9IGhvd19tYW55X29uZXMgLSAxOwotICAvL3VwZGF0ZWRfb25lX2NvdW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gdXBkYXRlZF9vbmVfY291bnQgPSAoKCgoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQpICYgIXdyaXRlKSkpPyAwIDoKLSAgICAoKCgoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQpICYgd3JpdGUpKSk/IHxkYXRhX2luIDoKLSAgICAoKHJlYWQgJiAofGRhdGFfaW4pICYgd3JpdGUgJiAofHN0YWdlXzApKSk/IGhvd19tYW55X29uZXMgOgotICAgICgod3JpdGUgJiAofGRhdGFfaW4pKSk/IG9uZV9jb3VudF9wbHVzX29uZSA6Ci0gICAgKChyZWFkICYgKHxzdGFnZV8wKSkpPyBvbmVfY291bnRfbWludXNfb25lIDoKLSAgICBob3dfbWFueV9vbmVzOwotCi0gIC8vY291bnRzIGhvdyBtYW55IG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGhvd19tYW55X29uZXMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8IHdyaXRlKQotICAgICAgICAgIGhvd19tYW55X29uZXMgPD0gdXBkYXRlZF9vbmVfY291bnQ7Ci0gICAgZW5kCi0KLQotICAvL3RoaXMgZmlmbyBjb250YWlucyBvbmVzIGluIHRoZSBkYXRhIHBpcGVsaW5lLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSAxOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgZmlmb19jb250YWluc19vbmVzX24gPD0gfih8dXBkYXRlZF9vbmVfY291bnQpOwotICAgIGVuZAotCi0KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIHJkdl9maWZvX2Zvcl9jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV90b19kZHJfc2RyYW1fczFfbW9kdWxlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcl9maWZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jX3Jlc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBkYXRhX291dDsKLSAgb3V0cHV0ICAgICAgICAgICBlbXB0eTsKLSAgb3V0cHV0ICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbjsKLSAgb3V0cHV0ICAgICAgICAgICBmdWxsOwotICBpbnB1dCAgICAgICAgICAgIGNsZWFyX2ZpZm87Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIGRhdGFfaW47Ci0gIGlucHV0ICAgICAgICAgICAgcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotICBpbnB1dCAgICAgICAgICAgIHN5bmNfcmVzZXQ7Ci0gIGlucHV0ICAgICAgICAgICAgd3JpdGU7Ci0KLSAgd2lyZSAgICAgICAgICAgICBkYXRhX291dDsKLSAgd2lyZSAgICAgICAgICAgICBlbXB0eTsKLSAgcmVnICAgICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbjsKLSAgd2lyZSAgICAgICAgICAgICBmdWxsOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xMDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzExOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTI7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xMzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE0OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTU7Ci0gIHdpcmUgICAgICAgICAgICAgZnVsbF8xNjsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzI7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8zOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzU7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF82OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzg7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF85OwotICByZWcgICAgIFsgIDU6IDBdIGhvd19tYW55X29uZXM7Ci0gIHdpcmUgICAgWyAgNTogMF0gb25lX2NvdW50X21pbnVzX29uZTsKLSAgd2lyZSAgICBbICA1OiAwXSBvbmVfY291bnRfcGx1c19vbmU7Ci0gIHdpcmUgICAgICAgICAgICAgcDBfZnVsbF8wOwotICB3aXJlICAgICAgICAgICAgIHAwX3N0YWdlXzA7Ci0gIHdpcmUgICAgICAgICAgICAgcDEwX2Z1bGxfMTA7Ci0gIHdpcmUgICAgICAgICAgICAgcDEwX3N0YWdlXzEwOwotICB3aXJlICAgICAgICAgICAgIHAxMV9mdWxsXzExOwotICB3aXJlICAgICAgICAgICAgIHAxMV9zdGFnZV8xMTsKLSAgd2lyZSAgICAgICAgICAgICBwMTJfZnVsbF8xMjsKLSAgd2lyZSAgICAgICAgICAgICBwMTJfc3RhZ2VfMTI7Ci0gIHdpcmUgICAgICAgICAgICAgcDEzX2Z1bGxfMTM7Ci0gIHdpcmUgICAgICAgICAgICAgcDEzX3N0YWdlXzEzOwotICB3aXJlICAgICAgICAgICAgIHAxNF9mdWxsXzE0OwotICB3aXJlICAgICAgICAgICAgIHAxNF9zdGFnZV8xNDsKLSAgd2lyZSAgICAgICAgICAgICBwMTVfZnVsbF8xNTsKLSAgd2lyZSAgICAgICAgICAgICBwMTVfc3RhZ2VfMTU7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfZnVsbF8xOwotICB3aXJlICAgICAgICAgICAgIHAxX3N0YWdlXzE7Ci0gIHdpcmUgICAgICAgICAgICAgcDJfZnVsbF8yOwotICB3aXJlICAgICAgICAgICAgIHAyX3N0YWdlXzI7Ci0gIHdpcmUgICAgICAgICAgICAgcDNfZnVsbF8zOwotICB3aXJlICAgICAgICAgICAgIHAzX3N0YWdlXzM7Ci0gIHdpcmUgICAgICAgICAgICAgcDRfZnVsbF80OwotICB3aXJlICAgICAgICAgICAgIHA0X3N0YWdlXzQ7Ci0gIHdpcmUgICAgICAgICAgICAgcDVfZnVsbF81OwotICB3aXJlICAgICAgICAgICAgIHA1X3N0YWdlXzU7Ci0gIHdpcmUgICAgICAgICAgICAgcDZfZnVsbF82OwotICB3aXJlICAgICAgICAgICAgIHA2X3N0YWdlXzY7Ci0gIHdpcmUgICAgICAgICAgICAgcDdfZnVsbF83OwotICB3aXJlICAgICAgICAgICAgIHA3X3N0YWdlXzc7Ci0gIHdpcmUgICAgICAgICAgICAgcDhfZnVsbF84OwotICB3aXJlICAgICAgICAgICAgIHA4X3N0YWdlXzg7Ci0gIHdpcmUgICAgICAgICAgICAgcDlfZnVsbF85OwotICB3aXJlICAgICAgICAgICAgIHA5X3N0YWdlXzk7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMDsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8xOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzEwOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzExOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzEyOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzEzOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzE0OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzE1OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzI7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMzsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV80OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzU7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfNjsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV83OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzg7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfOTsKLSAgd2lyZSAgICBbICA1OiAwXSB1cGRhdGVkX29uZV9jb3VudDsKLSAgYXNzaWduIGRhdGFfb3V0ID0gc3RhZ2VfMDsKLSAgYXNzaWduIGZ1bGwgPSBmdWxsXzE1OwotICBhc3NpZ24gZW1wdHkgPSAhZnVsbF8wOwotICBhc3NpZ24gZnVsbF8xNiA9IDA7Ci0gIC8vZGF0YV8xNSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNV9zdGFnZV8xNSA9ICgoZnVsbF8xNiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgZGF0YV9pbjsKLQotICAvL2RhdGFfcmVnXzE1LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTUpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xNSAmICEoKGZ1bGxfMTYgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xNSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xNSA8PSBwMTVfc3RhZ2VfMTU7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTVfZnVsbF8xNSA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTQgOgotICAgIDA7Ci0KLSAgLy9jb250cm9sX3JlZ18xNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xNSA8PSBwMTVfZnVsbF8xNTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNF9zdGFnZV8xNCA9ICgoZnVsbF8xNSAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTU7Ci0KLSAgLy9kYXRhX3JlZ18xNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzE0KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTQgJiAhKChmdWxsXzE1ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTQgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTQgPD0gcDE0X3N0YWdlXzE0OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzE0LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE0X2Z1bGxfMTQgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzEzIDoKLSAgICBmdWxsXzE1OwotCi0gIC8vY29udHJvbF9yZWdfMTQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzE0IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTQgPD0gcDE0X2Z1bGxfMTQ7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTNfc3RhZ2VfMTMgPSAoKGZ1bGxfMTQgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzE0OwotCi0gIC8vZGF0YV9yZWdfMTMsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzEzIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xMykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEzICYgISgoZnVsbF8xNCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzEzIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEzIDw9IHAxM19zdGFnZV8xMzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xMywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxM19mdWxsXzEzID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMiA6Ci0gICAgZnVsbF8xNDsKLQotICAvL2NvbnRyb2xfcmVnXzEzLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEzIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzEzIDw9IHAxM19mdWxsXzEzOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEyX3N0YWdlXzEyID0gKChmdWxsXzEzICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMzsKLQotICAvL2RhdGFfcmVnXzEyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTIpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMiAmICEoKGZ1bGxfMTMgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMiA8PSBwMTJfc3RhZ2VfMTI7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTIsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTJfZnVsbF8xMiA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTEgOgotICAgIGZ1bGxfMTM7Ci0KLSAgLy9jb250cm9sX3JlZ18xMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xMiA8PSBwMTJfZnVsbF8xMjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMV9zdGFnZV8xMSA9ICgoZnVsbF8xMiAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTI7Ci0KLSAgLy9kYXRhX3JlZ18xMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzExKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTEgJiAhKChmdWxsXzEyID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTEgPD0gcDExX3N0YWdlXzExOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzExLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDExX2Z1bGxfMTEgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzEwIDoKLSAgICBmdWxsXzEyOwotCi0gIC8vY29udHJvbF9yZWdfMTEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzExIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTEgPD0gcDExX2Z1bGxfMTE7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTAsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTBfc3RhZ2VfMTAgPSAoKGZ1bGxfMTEgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzExOwotCi0gIC8vZGF0YV9yZWdfMTAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzEwIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xMCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEwICYgISgoZnVsbF8xMSA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzEwIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEwIDw9IHAxMF9zdGFnZV8xMDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xMCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMF9mdWxsXzEwID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF85IDoKLSAgICBmdWxsXzExOwotCi0gIC8vY29udHJvbF9yZWdfMTAsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTAgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEwIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTAgPD0gcDEwX2Z1bGxfMTA7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfOSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA5X3N0YWdlXzkgPSAoKGZ1bGxfMTAgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzEwOwotCi0gIC8vZGF0YV9yZWdfOSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfOSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfOSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzkgJiAhKChmdWxsXzEwID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfOSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV85IDw9IHA5X3N0YWdlXzk7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfOSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHA5X2Z1bGxfOSA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfOCA6Ci0gICAgZnVsbF8xMDsKLQotICAvL2NvbnRyb2xfcmVnXzksIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfOSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfOSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzkgPD0gcDlfZnVsbF85OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOF9zdGFnZV84ID0gKChmdWxsXzkgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzk7Ci0KLSAgLy9kYXRhX3JlZ184LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV84IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF84KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfOCAmICEoKGZ1bGxfOSA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzggPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfOCA8PSBwOF9zdGFnZV84OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOF9mdWxsXzggPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzcgOgotICAgIGZ1bGxfOTsKLQotICAvL2NvbnRyb2xfcmVnXzgsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfOCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfOCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzggPD0gcDhfZnVsbF84OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzcsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwN19zdGFnZV83ID0gKChmdWxsXzggJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzg7Ci0KLSAgLy9kYXRhX3JlZ183LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV83IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF83KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfNyAmICEoKGZ1bGxfOCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzcgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfNyA8PSBwN19zdGFnZV83OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzcsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwN19mdWxsXzcgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzYgOgotICAgIGZ1bGxfODsKLQotICAvL2NvbnRyb2xfcmVnXzcsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfNyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfNyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzcgPD0gcDdfZnVsbF83OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzYsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwNl9zdGFnZV82ID0gKChmdWxsXzcgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzc7Ci0KLSAgLy9kYXRhX3JlZ182LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV82IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF82KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfNiAmICEoKGZ1bGxfNyA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzYgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfNiA8PSBwNl9zdGFnZV82OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzYsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwNl9mdWxsXzYgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzUgOgotICAgIGZ1bGxfNzsKLQotICAvL2NvbnRyb2xfcmVnXzYsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfNiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzYgPD0gcDZfZnVsbF82OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwNV9zdGFnZV81ID0gKChmdWxsXzYgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzY7Ci0KLSAgLy9kYXRhX3JlZ181LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF81KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfNSAmICEoKGZ1bGxfNiA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfNSA8PSBwNV9zdGFnZV81OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwNV9mdWxsXzUgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzQgOgotICAgIGZ1bGxfNjsKLQotICAvL2NvbnRyb2xfcmVnXzUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfNSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzUgPD0gcDVfZnVsbF81OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwNF9zdGFnZV80ID0gKChmdWxsXzUgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzU7Ci0KLSAgLy9kYXRhX3JlZ180LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV80IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF80KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfNCAmICEoKGZ1bGxfNSA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzQgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfNCA8PSBwNF9zdGFnZV80OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwNF9mdWxsXzQgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzMgOgotICAgIGZ1bGxfNTsKLQotICAvL2NvbnRyb2xfcmVnXzQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfNCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzQgPD0gcDRfZnVsbF80OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwM19zdGFnZV8zID0gKChmdWxsXzQgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzQ7Ci0KLSAgLy9kYXRhX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8zIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8zKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMyAmICEoKGZ1bGxfNCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMyA8PSBwM19zdGFnZV8zOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwM19mdWxsXzMgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzIgOgotICAgIGZ1bGxfNDsKLQotICAvL2NvbnRyb2xfcmVnXzMsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzMgPD0gcDNfZnVsbF8zOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzIsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMl9zdGFnZV8yID0gKChmdWxsXzMgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzM7Ci0KLSAgLy9kYXRhX3JlZ18yLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8yIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8yKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMiAmICEoKGZ1bGxfMyA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMiA8PSBwMl9zdGFnZV8yOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzIsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMl9mdWxsXzIgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzEgOgotICAgIGZ1bGxfMzsKLQotICAvL2NvbnRyb2xfcmVnXzIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMiA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzIgPD0gcDJfZnVsbF8yOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMV9zdGFnZV8xID0gKChmdWxsXzIgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzI7Ci0KLSAgLy9kYXRhX3JlZ18xLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMSAmICEoKGZ1bGxfMiA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMSA8PSBwMV9zdGFnZV8xOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMV9mdWxsXzEgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzAgOgotICAgIGZ1bGxfMjsKLQotICAvL2NvbnRyb2xfcmVnXzEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzEgPD0gcDFfZnVsbF8xOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzAsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMF9zdGFnZV8wID0gKChmdWxsXzEgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzE7Ci0KLSAgLy9kYXRhX3JlZ18wLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMCAmICEoKGZ1bGxfMSA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzAgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMCA8PSBwMF9zdGFnZV8wOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzAsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMF9mdWxsXzAgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyAxIDoKLSAgICBmdWxsXzE7Ci0KLSAgLy9jb250cm9sX3JlZ18wLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzAgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvICYgfndyaXRlKQotICAgICAgICAgICAgICBmdWxsXzAgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8wIDw9IHAwX2Z1bGxfMDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBvbmVfY291bnRfcGx1c19vbmUgPSBob3dfbWFueV9vbmVzICsgMTsKLSAgYXNzaWduIG9uZV9jb3VudF9taW51c19vbmUgPSBob3dfbWFueV9vbmVzIC0gMTsKLSAgLy91cGRhdGVkX29uZV9jb3VudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHVwZGF0ZWRfb25lX2NvdW50ID0gKCgoKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0KSAmICF3cml0ZSkpKT8gMCA6Ci0gICAgKCgoKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0KSAmIHdyaXRlKSkpPyB8ZGF0YV9pbiA6Ci0gICAgKChyZWFkICYgKHxkYXRhX2luKSAmIHdyaXRlICYgKHxzdGFnZV8wKSkpPyBob3dfbWFueV9vbmVzIDoKLSAgICAoKHdyaXRlICYgKHxkYXRhX2luKSkpPyBvbmVfY291bnRfcGx1c19vbmUgOgotICAgICgocmVhZCAmICh8c3RhZ2VfMCkpKT8gb25lX2NvdW50X21pbnVzX29uZSA6Ci0gICAgaG93X21hbnlfb25lczsKLQotICAvL2NvdW50cyBob3cgbWFueSBvbmVzIGluIHRoZSBkYXRhIHBpcGVsaW5lLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBob3dfbWFueV9vbmVzIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCB3cml0ZSkKLSAgICAgICAgICBob3dfbWFueV9vbmVzIDw9IHVwZGF0ZWRfb25lX2NvdW50OwotICAgIGVuZAotCi0KLSAgLy90aGlzIGZpZm8gY29udGFpbnMgb25lcyBpbiB0aGUgZGF0YSBwaXBlbGluZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZmlmb19jb250YWluc19vbmVzX24gPD0gMTsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8IHdyaXRlKQotICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uIDw9IH4ofHVwZGF0ZWRfb25lX2NvdW50KTsKLSAgICBlbmQKLQotCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSByZHZfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fdG9fZGRyX3NkcmFtX3MxX21vZHVsZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfZmlmbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luY19yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgICAgICAgICAgZGF0YV9vdXQ7Ci0gIG91dHB1dCAgICAgICAgICAgZW1wdHk7Ci0gIG91dHB1dCAgICAgICAgICAgZmlmb19jb250YWluc19vbmVzX247Ci0gIG91dHB1dCAgICAgICAgICAgZnVsbDsKLSAgaW5wdXQgICAgICAgICAgICBjbGVhcl9maWZvOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICAgICAgICAgICBkYXRhX2luOwotICBpbnB1dCAgICAgICAgICAgIHJlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICBzeW5jX3Jlc2V0OwotICBpbnB1dCAgICAgICAgICAgIHdyaXRlOwotCi0gIHdpcmUgICAgICAgICAgICAgZGF0YV9vdXQ7Ci0gIHdpcmUgICAgICAgICAgICAgZW1wdHk7Ci0gIHJlZyAgICAgICAgICAgICAgZmlmb19jb250YWluc19vbmVzX247Ci0gIHdpcmUgICAgICAgICAgICAgZnVsbDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzA7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTA7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xMTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzEyOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTM7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8xNDsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzE1OwotICB3aXJlICAgICAgICAgICAgIGZ1bGxfMTY7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8yOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMzsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzQ7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF81OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfNjsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzc7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF84OwotICByZWcgICAgICAgICAgICAgIGZ1bGxfOTsKLSAgcmVnICAgICBbICA1OiAwXSBob3dfbWFueV9vbmVzOwotICB3aXJlICAgIFsgIDU6IDBdIG9uZV9jb3VudF9taW51c19vbmU7Ci0gIHdpcmUgICAgWyAgNTogMF0gb25lX2NvdW50X3BsdXNfb25lOwotICB3aXJlICAgICAgICAgICAgIHAwX2Z1bGxfMDsKLSAgd2lyZSAgICAgICAgICAgICBwMF9zdGFnZV8wOwotICB3aXJlICAgICAgICAgICAgIHAxMF9mdWxsXzEwOwotICB3aXJlICAgICAgICAgICAgIHAxMF9zdGFnZV8xMDsKLSAgd2lyZSAgICAgICAgICAgICBwMTFfZnVsbF8xMTsKLSAgd2lyZSAgICAgICAgICAgICBwMTFfc3RhZ2VfMTE7Ci0gIHdpcmUgICAgICAgICAgICAgcDEyX2Z1bGxfMTI7Ci0gIHdpcmUgICAgICAgICAgICAgcDEyX3N0YWdlXzEyOwotICB3aXJlICAgICAgICAgICAgIHAxM19mdWxsXzEzOwotICB3aXJlICAgICAgICAgICAgIHAxM19zdGFnZV8xMzsKLSAgd2lyZSAgICAgICAgICAgICBwMTRfZnVsbF8xNDsKLSAgd2lyZSAgICAgICAgICAgICBwMTRfc3RhZ2VfMTQ7Ci0gIHdpcmUgICAgICAgICAgICAgcDE1X2Z1bGxfMTU7Ci0gIHdpcmUgICAgICAgICAgICAgcDE1X3N0YWdlXzE1OwotICB3aXJlICAgICAgICAgICAgIHAxX2Z1bGxfMTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9zdGFnZV8xOwotICB3aXJlICAgICAgICAgICAgIHAyX2Z1bGxfMjsKLSAgd2lyZSAgICAgICAgICAgICBwMl9zdGFnZV8yOwotICB3aXJlICAgICAgICAgICAgIHAzX2Z1bGxfMzsKLSAgd2lyZSAgICAgICAgICAgICBwM19zdGFnZV8zOwotICB3aXJlICAgICAgICAgICAgIHA0X2Z1bGxfNDsKLSAgd2lyZSAgICAgICAgICAgICBwNF9zdGFnZV80OwotICB3aXJlICAgICAgICAgICAgIHA1X2Z1bGxfNTsKLSAgd2lyZSAgICAgICAgICAgICBwNV9zdGFnZV81OwotICB3aXJlICAgICAgICAgICAgIHA2X2Z1bGxfNjsKLSAgd2lyZSAgICAgICAgICAgICBwNl9zdGFnZV82OwotICB3aXJlICAgICAgICAgICAgIHA3X2Z1bGxfNzsKLSAgd2lyZSAgICAgICAgICAgICBwN19zdGFnZV83OwotICB3aXJlICAgICAgICAgICAgIHA4X2Z1bGxfODsKLSAgd2lyZSAgICAgICAgICAgICBwOF9zdGFnZV84OwotICB3aXJlICAgICAgICAgICAgIHA5X2Z1bGxfOTsKLSAgd2lyZSAgICAgICAgICAgICBwOV9zdGFnZV85OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzA7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8xMDsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8xMTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8xMjsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8xMzsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8xNDsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8xNTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8yOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzM7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfNDsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV81OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzY7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfNzsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV84OwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzk7Ci0gIHdpcmUgICAgWyAgNTogMF0gdXBkYXRlZF9vbmVfY291bnQ7Ci0gIGFzc2lnbiBkYXRhX291dCA9IHN0YWdlXzA7Ci0gIGFzc2lnbiBmdWxsID0gZnVsbF8xNTsKLSAgYXNzaWduIGVtcHR5ID0gIWZ1bGxfMDsKLSAgYXNzaWduIGZ1bGxfMTYgPSAwOwotICAvL2RhdGFfMTUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTVfc3RhZ2VfMTUgPSAoKGZ1bGxfMTYgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIGRhdGFfaW47Ci0KLSAgLy9kYXRhX3JlZ18xNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzE1KSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTUgJiAhKChmdWxsXzE2ID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTUgPD0gcDE1X3N0YWdlXzE1OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzE1LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDE1X2Z1bGxfMTUgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzE0IDoKLSAgICAwOwotCi0gIC8vY29udHJvbF9yZWdfMTUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzE1IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTUgPD0gcDE1X2Z1bGxfMTU7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTRfc3RhZ2VfMTQgPSAoKGZ1bGxfMTUgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzE1OwotCi0gIC8vZGF0YV9yZWdfMTQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzE0ICYgISgoZnVsbF8xNSA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzE0IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzE0IDw9IHAxNF9zdGFnZV8xNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xNCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxNF9mdWxsXzE0ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMyA6Ci0gICAgZnVsbF8xNTsKLQotICAvL2NvbnRyb2xfcmVnXzE0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzE0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xNCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzE0IDw9IHAxNF9mdWxsXzE0OwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEzX3N0YWdlXzEzID0gKChmdWxsXzE0ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xNDsKLQotICAvL2RhdGFfcmVnXzEzLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTMpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMyAmICEoKGZ1bGxfMTQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMyA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMyA8PSBwMTNfc3RhZ2VfMTM7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTNfZnVsbF8xMyA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfMTIgOgotICAgIGZ1bGxfMTQ7Ci0KLSAgLy9jb250cm9sX3JlZ18xMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8xMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IChyZWFkIF4gd3JpdGUpIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKGNsZWFyX2ZpZm8pCi0gICAgICAgICAgICAgIGZ1bGxfMTMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xMyA8PSBwMTNfZnVsbF8xMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xMiwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMl9zdGFnZV8xMiA9ICgoZnVsbF8xMyAmIH5jbGVhcl9maWZvKSA9PSAwKT8gZGF0YV9pbiA6Ci0gICAgc3RhZ2VfMTM7Ci0KLSAgLy9kYXRhX3JlZ18xMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzEyKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMTIgJiAhKChmdWxsXzEzID09IDApICYgcmVhZCAmIHdyaXRlKSkKLSAgICAgICAgICAgICAgc3RhZ2VfMTIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMTIgPD0gcDEyX3N0YWdlXzEyOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzEyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEyX2Z1bGxfMTIgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzExIDoKLSAgICBmdWxsXzEzOwotCi0gIC8vY29udHJvbF9yZWdfMTIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZ1bGxfMTIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEyIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMTIgPD0gcDEyX2Z1bGxfMTI7Ci0gICAgZW5kCi0KLQotICAvL2RhdGFfMTEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTFfc3RhZ2VfMTEgPSAoKGZ1bGxfMTIgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIHN0YWdlXzEyOwotCi0gIC8vZGF0YV9yZWdfMTEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8xMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzExICYgISgoZnVsbF8xMiA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzExIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzExIDw9IHAxMV9zdGFnZV8xMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxMV9mdWxsXzExID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xMCA6Ci0gICAgZnVsbF8xMjsKLQotICAvL2NvbnRyb2xfcmVnXzExLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzExIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMSA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzExIDw9IHAxMV9mdWxsXzExOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzEwLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDEwX3N0YWdlXzEwID0gKChmdWxsXzExICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMTsKLQotICAvL2RhdGFfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMTApKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF8xMCAmICEoKGZ1bGxfMTEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBzdGFnZV8xMCA8PSBwMTBfc3RhZ2VfMTA7Ci0gICAgZW5kCi0KLQotICAvL2NvbnRyb2xfMTAsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMTBfZnVsbF8xMCA9ICgocmVhZCAmICF3cml0ZSkgPT0gMCk/IGZ1bGxfOSA6Ci0gICAgZnVsbF8xMTsKLQotICAvL2NvbnRyb2xfcmVnXzEwLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEwIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbykKLSAgICAgICAgICAgICAgZnVsbF8xMCA8PSAwOwotICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBmdWxsXzEwIDw9IHAxMF9mdWxsXzEwOwotICAgIGVuZAotCi0KLSAgLy9kYXRhXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9zdGFnZV85ID0gKChmdWxsXzEwICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xMDsKLQotICAvL2RhdGFfcmVnXzksIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCBzeW5jX3Jlc2V0IHwgcmVhZCB8ICh3cml0ZSAmICFmdWxsXzkpKQotICAgICAgICAgIGlmIChzeW5jX3Jlc2V0ICYgZnVsbF85ICYgISgoZnVsbF8xMCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfOSA8PSBwOV9zdGFnZV85OwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzksIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwOV9mdWxsXzkgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzggOgotICAgIGZ1bGxfMTA7Ci0KLSAgLy9jb250cm9sX3JlZ185LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzkgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF85IDw9IHA5X2Z1bGxfOTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfc3RhZ2VfOCA9ICgoZnVsbF85ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV85OwotCi0gIC8vZGF0YV9yZWdfOCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfOCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfOCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzggJiAhKChmdWxsXzkgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV84IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzggPD0gcDhfc3RhZ2VfODsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF84LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDhfZnVsbF84ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF83IDoKLSAgICBmdWxsXzk7Ci0KLSAgLy9jb250cm9sX3JlZ184LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzggPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF84IDw9IHA4X2Z1bGxfODsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfc3RhZ2VfNyA9ICgoZnVsbF84ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV84OwotCi0gIC8vZGF0YV9yZWdfNywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzcgJiAhKChmdWxsXzggPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV83IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzcgPD0gcDdfc3RhZ2VfNzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF83LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDdfZnVsbF83ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF82IDoKLSAgICBmdWxsXzg7Ci0KLSAgLy9jb250cm9sX3JlZ183LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzcgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF83IDw9IHA3X2Z1bGxfNzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfc3RhZ2VfNiA9ICgoZnVsbF83ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV83OwotCi0gIC8vZGF0YV9yZWdfNiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzYgJiAhKChmdWxsXzcgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV82IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzYgPD0gcDZfc3RhZ2VfNjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF82LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDZfZnVsbF82ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF81IDoKLSAgICBmdWxsXzc7Ci0KLSAgLy9jb250cm9sX3JlZ182LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzYgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF82IDw9IHA2X2Z1bGxfNjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfc3RhZ2VfNSA9ICgoZnVsbF82ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV82OwotCi0gIC8vZGF0YV9yZWdfNSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzUgJiAhKChmdWxsXzYgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV81IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzUgPD0gcDVfc3RhZ2VfNTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF81LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDVfZnVsbF81ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF80IDoKLSAgICBmdWxsXzY7Ci0KLSAgLy9jb250cm9sX3JlZ181LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzUgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF81IDw9IHA1X2Z1bGxfNTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfc3RhZ2VfNCA9ICgoZnVsbF81ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV81OwotCi0gIC8vZGF0YV9yZWdfNCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfNCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfNCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzQgJiAhKChmdWxsXzUgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV80IDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzQgPD0gcDRfc3RhZ2VfNDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF80LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDRfZnVsbF80ID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8zIDoKLSAgICBmdWxsXzU7Ci0KLSAgLy9jb250cm9sX3JlZ180LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzQgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF80IDw9IHA0X2Z1bGxfNDsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfc3RhZ2VfMyA9ICgoZnVsbF80ICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV80OwotCi0gIC8vZGF0YV9yZWdfMywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMykpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzMgJiAhKChmdWxsXzQgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8zIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzMgPD0gcDNfc3RhZ2VfMzsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8zLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDNfZnVsbF8zID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8yIDoKLSAgICBmdWxsXzQ7Ci0KLSAgLy9jb250cm9sX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8zIDw9IHAzX2Z1bGxfMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfc3RhZ2VfMiA9ICgoZnVsbF8zICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8zOwotCi0gIC8vZGF0YV9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzIgJiAhKChmdWxsXzMgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzIgPD0gcDJfc3RhZ2VfMjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfZnVsbF8yID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xIDoKLSAgICBmdWxsXzM7Ci0KLSAgLy9jb250cm9sX3JlZ18yLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8yIDw9IHAyX2Z1bGxfMjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfc3RhZ2VfMSA9ICgoZnVsbF8yICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8yOwotCi0gIC8vZGF0YV9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEgJiAhKChmdWxsXzIgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEgPD0gcDFfc3RhZ2VfMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfZnVsbF8xID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8wIDoKLSAgICBmdWxsXzI7Ci0KLSAgLy9jb250cm9sX3JlZ18xLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xIDw9IHAxX2Z1bGxfMTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfc3RhZ2VfMCA9ICgoZnVsbF8xICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xOwotCi0gIC8vZGF0YV9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzAgJiAhKChmdWxsXzEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzAgPD0gcDBfc3RhZ2VfMDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfZnVsbF8wID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gMSA6Ci0gICAgZnVsbF8xOwotCi0gIC8vY29udHJvbF9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbyAmIH53cml0ZSkKLSAgICAgICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMCA8PSBwMF9mdWxsXzA7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gb25lX2NvdW50X3BsdXNfb25lID0gaG93X21hbnlfb25lcyArIDE7Ci0gIGFzc2lnbiBvbmVfY291bnRfbWludXNfb25lID0gaG93X21hbnlfb25lcyAtIDE7Ci0gIC8vdXBkYXRlZF9vbmVfY291bnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB1cGRhdGVkX29uZV9jb3VudCA9ICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiAhd3JpdGUpKSk/IDAgOgotICAgICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiB3cml0ZSkpKT8gfGRhdGFfaW4gOgotICAgICgocmVhZCAmICh8ZGF0YV9pbikgJiB3cml0ZSAmICh8c3RhZ2VfMCkpKT8gaG93X21hbnlfb25lcyA6Ci0gICAgKCh3cml0ZSAmICh8ZGF0YV9pbikpKT8gb25lX2NvdW50X3BsdXNfb25lIDoKLSAgICAoKHJlYWQgJiAofHN0YWdlXzApKSk/IG9uZV9jb3VudF9taW51c19vbmUgOgotICAgIGhvd19tYW55X29uZXM7Ci0KLSAgLy9jb3VudHMgaG93IG1hbnkgb25lcyBpbiB0aGUgZGF0YSBwaXBlbGluZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSB1cGRhdGVkX29uZV9jb3VudDsKLSAgICBlbmQKLQotCi0gIC8vdGhpcyBmaWZvIGNvbnRhaW5zIG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uIDw9IDE7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCB3cml0ZSkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSB+KHx1cGRhdGVkX29uZV9jb3VudCk7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgZGRyX3NkcmFtX3MxX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfc2RyYW1fczFfcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkMV9kZHJfc2RyYW1fczFfZW5kX3hmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX2JlZ2luYnVyc3R0cmFuc2ZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfc2RyYW1fczFfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfc2RyYW1fczFfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfc2RyYW1fczFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfc2RyYW1fczFfcmVhZGRhdGFfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfc2RyYW1fczFfcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfc2RyYW1fczFfd2FpdHJlcXVlc3Rfbl9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfc2RyYW1fczFfd3JpdGVkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczE7Ci0gIG91dHB1dCAgICAgICAgICAgZDFfZGRyX3NkcmFtX3MxX2VuZF94ZmVyOwotICBvdXRwdXQgIFsgMjI6IDBdIGRkcl9zZHJhbV9zMV9hZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIGRkcl9zZHJhbV9zMV9iZWdpbmJ1cnN0dHJhbnNmZXI7Ci0gIG91dHB1dCAgWyAgMjogMF0gZGRyX3NkcmFtX3MxX2J1cnN0Y291bnQ7Ci0gIG91dHB1dCAgWyAgMzogMF0gZGRyX3NkcmFtX3MxX2J5dGVlbmFibGU7Ci0gIG91dHB1dCAgICAgICAgICAgZGRyX3NkcmFtX3MxX3JlYWQ7Ci0gIG91dHB1dCAgWyAzMTogMF0gZGRyX3NkcmFtX3MxX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIG91dHB1dCAgICAgICAgICAgZGRyX3NkcmFtX3MxX3Jlc2V0X247Ci0gIG91dHB1dCAgICAgICAgICAgZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBkZHJfc2RyYW1fczFfd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gZGRyX3NkcmFtX3MxX3dyaXRlZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZTsKLSAgaW5wdXQgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICBpbnB1dCAgIFsgIDI6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIGlucHV0ICAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZTsKLSAgaW5wdXQgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICBpbnB1dCAgIFsgIDI6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIGlucHV0ICAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZTsKLSAgaW5wdXQgICBbICAyOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICBpbnB1dCAgIFsgIDI6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIGlucHV0ICAgWyAzMTogMF0gZGRyX3NkcmFtX3MxX3JlYWRkYXRhOwotICBpbnB1dCAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9yZWFkZGF0YXZhbGlkOwotICBpbnB1dCAgICAgICAgICAgIGRkcl9zZHJhbV9zMV93YWl0cmVxdWVzdF9uOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0KLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZHZfZmlmb19lbXB0eV9kZHJfc2RyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmR2X2ZpZm9fb3V0cHV0X2Zyb21fZGRyX3NkcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfZGRyX3NkcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9jb250aW51ZXJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3Jkdl9maWZvX2VtcHR5X2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZHZfZmlmb19vdXRwdXRfZnJvbV9kZHJfc2RyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9kZHJfc2RyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmR2X2ZpZm9fZW1wdHlfZGRyX3NkcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3Jkdl9maWZvX291dHB1dF9mcm9tX2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczFfc2hpZnRfcmVnaXN0ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3NhdmVkX2dyYW50X2Rkcl9zZHJhbV9zMTsKLSAgcmVnICAgICAgICAgICAgICBkMV9kZHJfc2RyYW1fczFfZW5kX3hmZXI7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfcmVhc29uc190b193YWl0OwotICB3aXJlICAgIFsgMjI6IDBdIGRkcl9zZHJhbV9zMV9hZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9hbGxncmFudHM7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX2FsbG93X25ld19hcmJfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQ7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX2FueV9jb250aW51ZXJlcXVlc3Q7Ci0gIHJlZyAgICAgWyAgMjogMF0gZGRyX3NkcmFtX3MxX2FyYl9hZGRlbmQ7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX2FyYl9jb3VudGVyX2VuYWJsZTsKLSAgcmVnICAgICBbICAzOiAwXSBkZHJfc2RyYW1fczFfYXJiX3NoYXJlX2NvdW50ZXI7Ci0gIHdpcmUgICAgWyAgMzogMF0gZGRyX3NkcmFtX3MxX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gIHdpcmUgICAgWyAgMzogMF0gZGRyX3NkcmFtX3MxX2FyYl9zaGFyZV9zZXRfdmFsdWVzOwotICB3aXJlICAgIFsgIDI6IDBdIGRkcl9zZHJhbV9zMV9hcmJfd2lubmVyOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9hcmJpdHJhdGlvbl9ob2xkb2ZmX2ludGVybmFsOwotICByZWcgICAgIFsgIDE6IDBdIGRkcl9zZHJhbV9zMV9iYnRfYnVyc3Rjb3VudGVyOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9iZWdpbmJ1cnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbDsKLSAgd2lyZSAgICAgICAgICAgICBkZHJfc2RyYW1fczFfYmVnaW5zX3hmZXI7Ci0gIHdpcmUgICAgWyAgMjogMF0gZGRyX3NkcmFtX3MxX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX2J1cnN0Y291bnRfZmlmb19lbXB0eTsKLSAgd2lyZSAgICBbICAzOiAwXSBkZHJfc2RyYW1fczFfYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICBbICA1OiAwXSBkZHJfc2RyYW1fczFfY2hvc2VuX21hc3Rlcl9kb3VibGVfdmVjdG9yOwotICB3aXJlICAgIFsgIDI6IDBdIGRkcl9zZHJhbV9zMV9jaG9zZW5fbWFzdGVyX3JvdF9sZWZ0OwotICByZWcgICAgIFsgIDI6IDBdIGRkcl9zZHJhbV9zMV9jdXJyZW50X2J1cnN0OwotICB3aXJlICAgIFsgIDI6IDBdIGRkcl9zZHJhbV9zMV9jdXJyZW50X2J1cnN0X21pbnVzX29uZTsKLSAgd2lyZSAgICAgICAgICAgICBkZHJfc2RyYW1fczFfZW5kX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgWyAgMjogMF0gZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBkZHJfc2RyYW1fczFfaW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9pbl9hX3dyaXRlX2N5Y2xlOwotICByZWcgICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9sb2FkX2ZpZm87Ci0gIHdpcmUgICAgWyAgMjogMF0gZGRyX3NkcmFtX3MxX21hc3Rlcl9xcmVxX3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBkZHJfc2RyYW1fczFfbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uOwotICB3aXJlICAgIFsgIDE6IDBdIGRkcl9zZHJhbV9zMV9uZXh0X2JidF9idXJzdGNvdW50OwotICB3aXJlICAgIFsgIDI6IDBdIGRkcl9zZHJhbV9zMV9uZXh0X2J1cnN0X2NvdW50OwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIGRkcl9zZHJhbV9zMV9yZWFkZGF0YV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9yZWFkZGF0YXZhbGlkX2Zyb21fc2E7Ci0gIHJlZyAgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX3JlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9yZXNldF9uOwotICByZWcgICAgIFsgIDI6IDBdIGRkcl9zZHJhbV9zMV9zYXZlZF9jaG9zZW5fbWFzdGVyX3ZlY3RvcjsKLSAgd2lyZSAgICBbICAyOiAwXSBkZHJfc2RyYW1fczFfc2VsZWN0ZWRfYnVyc3Rjb3VudDsKLSAgcmVnICAgICAgICAgICAgICBkZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBkZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTI7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3Q7Ci0gIHdpcmUgICAgWyAgMjogMF0gZGRyX3NkcmFtX3MxX3RyYW5zYWN0aW9uX2J1cnN0X2NvdW50OwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV91bnJlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV93YWl0cmVxdWVzdF9uX2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX3dhaXRzX2Zvcl9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV93YWl0c19mb3Jfd3JpdGU7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGRkcl9zZHJhbV9zMV93cml0ZWRhdGE7Ci0gIHJlZyAgICAgICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9uczsKLSAgd2lyZSAgICAgICAgICAgICBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBpbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV93cml0ZV9jeWNsZTsKLSAgcmVnICAgICAgICAgICAgICBsYXN0X2N5Y2xlX2N1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2dyYW50ZWRfc2xhdmVfZGRyX3NkcmFtX3MxOwotICByZWcgICAgICAgICAgICAgIGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9kZHJfc2RyYW1fczE7Ci0gIHJlZyAgICAgICAgICAgICAgbGFzdF9jeWNsZV9jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX3NsYXZlX2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBwMF9kZHJfc2RyYW1fczFfbG9hZF9maWZvOwotICB3aXJlICAgIFsgMjQ6IDBdIHNoaWZ0ZWRfYWRkcmVzc190b19kZHJfc2RyYW1fczFfZnJvbV9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbTsKLSAgd2lyZSAgICBbIDI0OiAwXSBzaGlmdGVkX2FkZHJlc3NfdG9fZGRyX3NkcmFtX3MxX2Zyb21fY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW07Ci0gIHdpcmUgICAgWyAyNDogMF0gc2hpZnRlZF9hZGRyZXNzX3RvX2Rkcl9zZHJhbV9zMV9mcm9tX2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIHdhaXRfZm9yX2Rkcl9zZHJhbV9zMV9jb3VudGVyOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfcmVhc29uc190b193YWl0IDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gfmRkcl9zZHJhbV9zMV9lbmRfeGZlcjsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfYmVnaW5zX3hmZXIgPSB+ZDFfcmVhc29uc190b193YWl0ICYgKChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEgfCBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEgfCBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEpKTsKLSAgLy9hc3NpZ24gZGRyX3NkcmFtX3MxX3JlYWRkYXRhX2Zyb21fc2EgPSBkZHJfc2RyYW1fczFfcmVhZGRhdGEgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfcmVhZGRhdGFfZnJvbV9zYSA9IGRkcl9zZHJhbV9zMV9yZWFkZGF0YTsKLQotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxID0gKDEpICYgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWQgfCBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZSk7Ci0gIC8vYXNzaWduIGRkcl9zZHJhbV9zMV93YWl0cmVxdWVzdF9uX2Zyb21fc2EgPSBkZHJfc2RyYW1fczFfd2FpdHJlcXVlc3RfbiBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGRkcl9zZHJhbV9zMV93YWl0cmVxdWVzdF9uX2Zyb21fc2EgPSBkZHJfc2RyYW1fczFfd2FpdHJlcXVlc3RfbjsKLQotICAvL2Fzc2lnbiBkZHJfc2RyYW1fczFfcmVhZGRhdGF2YWxpZF9mcm9tX3NhID0gZGRyX3NkcmFtX3MxX3JlYWRkYXRhdmFsaWQgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfcmVhZGRhdGF2YWxpZF9mcm9tX3NhID0gZGRyX3NkcmFtX3MxX3JlYWRkYXRhdmFsaWQ7Ci0KLSAgLy9kZHJfc2RyYW1fczFfYXJiX3NoYXJlX2NvdW50ZXIgc2V0IHZhbHVlcywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGRkcl9zZHJhbV9zMV9hcmJfc2hhcmVfc2V0X3ZhbHVlcyA9IChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIDE7Ci0KLSAgLy9kZHJfc2RyYW1fczFfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBkZHJfc2RyYW1fczFfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyA9IDA7Ci0KLSAgLy9kZHJfc2RyYW1fczFfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBkZHJfc2RyYW1fczFfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCA9IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3NhdmVkX2dyYW50X2Rkcl9zZHJhbV9zMSB8Ci0gICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfZGRyX3NkcmFtX3MxIHwKLSAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9kZHJfc2RyYW1fczEgfAotICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3NhdmVkX2dyYW50X2Rkcl9zZHJhbV9zMSB8Ci0gICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfZGRyX3NkcmFtX3MxIHwKLSAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9kZHJfc2RyYW1fczEgfAotICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3NhdmVkX2dyYW50X2Rkcl9zZHJhbV9zMSB8Ci0gICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfZGRyX3NkcmFtX3MxIHwKLSAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9kZHJfc2RyYW1fczE7Ci0KLSAgLy9kZHJfc2RyYW1fczFfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZGRyX3NkcmFtX3MxX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWUgPSBkZHJfc2RyYW1fczFfZmlyc3R0cmFuc2ZlciA/IChkZHJfc2RyYW1fczFfYXJiX3NoYXJlX3NldF92YWx1ZXMgLSAxKSA6IHxkZHJfc2RyYW1fczFfYXJiX3NoYXJlX2NvdW50ZXIgPyAoZGRyX3NkcmFtX3MxX2FyYl9zaGFyZV9jb3VudGVyIC0gMSkgOiAwOwotCi0gIC8vZGRyX3NkcmFtX3MxX2FsbGdyYW50cyBhbGwgc2xhdmUgZ3JhbnRzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZGRyX3NkcmFtX3MxX2FsbGdyYW50cyA9ICh8ZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8ZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8ZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8ZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8ZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8ZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8ZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8ZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8ZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3Rvcik7Ci0KLSAgLy9kZHJfc2RyYW1fczFfZW5kX3hmZXIgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGRkcl9zZHJhbV9zMV9lbmRfeGZlciA9IH4oZGRyX3NkcmFtX3MxX3dhaXRzX2Zvcl9yZWFkIHwgZGRyX3NkcmFtX3MxX3dhaXRzX2Zvcl93cml0ZSk7Ci0KLSAgLy9lbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2Rkcl9zZHJhbV9zMSBhcmIgc2hhcmUgY291bnRlciBlbmFibGUgdGVybSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fZGRyX3NkcmFtX3MxID0gZGRyX3NkcmFtX3MxX2VuZF94ZmVyICYgKH5kZHJfc2RyYW1fczFfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCB8IGluX2FfcmVhZF9jeWNsZSB8IGluX2Ffd3JpdGVfY3ljbGUpOwotCi0gIC8vZGRyX3NkcmFtX3MxX2FyYl9zaGFyZV9jb3VudGVyIGFyYml0cmF0aW9uIGNvdW50ZXIgZW5hYmxlLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZGRyX3NkcmFtX3MxX2FyYl9jb3VudGVyX2VuYWJsZSA9IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2Rkcl9zZHJhbV9zMSAmIGRkcl9zZHJhbV9zMV9hbGxncmFudHMpIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fZGRyX3NkcmFtX3MxICYgfmRkcl9zZHJhbV9zMV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKTsKLQotICAvL2Rkcl9zZHJhbV9zMV9hcmJfc2hhcmVfY291bnRlciBjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkZHJfc2RyYW1fczFfYXJiX3NoYXJlX2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGRkcl9zZHJhbV9zMV9hcmJfY291bnRlcl9lbmFibGUpCi0gICAgICAgICAgZGRyX3NkcmFtX3MxX2FyYl9zaGFyZV9jb3VudGVyIDw9IGRkcl9zZHJhbV9zMV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICAgIGVuZAotCi0KLSAgLy9kZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSAwOwotICAgICAgZWxzZSBpZiAoKHxkZHJfc2RyYW1fczFfbWFzdGVyX3FyZXFfdmVjdG9yICYgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9kZHJfc2RyYW1fczEpIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fZGRyX3NkcmFtX3MxICYgfmRkcl9zZHJhbV9zMV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKSkKLSAgICAgICAgICBkZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSB8ZGRyX3NkcmFtX3MxX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMy9kb3duc3RyZWFtIGRkcl9zZHJhbS9zMSBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2FyYml0ZXJsb2NrID0gZGRyX3NkcmFtX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9kZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgc2xhdmUgZW5hYmxlcyBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgPSB8ZGRyX3NkcmFtX3MxX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzMvZG93bnN0cmVhbSBkZHJfc2RyYW0vczEgYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYXJiaXRlcmxvY2syID0gZGRyX3NkcmFtX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyICYgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fY29udGludWVyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80L2Rvd25zdHJlYW0gZGRyX3NkcmFtL3MxIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYXJiaXRlcmxvY2sgPSBkZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNC9kb3duc3RyZWFtIGRkcl9zZHJhbS9zMSBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hcmJpdGVybG9jazIgPSBkZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgJiBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzQvZG93bnN0cmVhbSBncmFudGVkIGRkcl9zZHJhbS9zMSBsYXN0IHRpbWUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9kZHJfc2RyYW1fczEgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9kZHJfc2RyYW1fczEgPD0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfZGRyX3NkcmFtX3MxID8gMSA6IChkZHJfc2RyYW1fczFfYXJiaXRyYXRpb25faG9sZG9mZl9pbnRlcm5hbCB8IDApID8gMCA6IGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9kZHJfc2RyYW1fczE7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCA9IChsYXN0X2N5Y2xlX2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2dyYW50ZWRfc2xhdmVfZGRyX3NkcmFtX3MxICYgMSkgfAotICAgIChsYXN0X2N5Y2xlX2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2dyYW50ZWRfc2xhdmVfZGRyX3NkcmFtX3MxICYgMSk7Ci0KLSAgLy9kZHJfc2RyYW1fczFfYW55X2NvbnRpbnVlcmVxdWVzdCBhdCBsZWFzdCBvbmUgbWFzdGVyIGNvbnRpbnVlcyByZXF1ZXN0aW5nLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZGRyX3NkcmFtX3MxX2FueV9jb250aW51ZXJlcXVlc3QgPSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9jb250aW51ZXJlcXVlc3QgfAotICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCB8Ci0gICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fY29udGludWVyZXF1ZXN0IHwKLSAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9jb250aW51ZXJlcXVlc3QgfAotICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCB8Ci0gICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fY29udGludWVyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF81L2Rvd25zdHJlYW0gZGRyX3NkcmFtL3MxIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYXJiaXRlcmxvY2sgPSBkZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNS9kb3duc3RyZWFtIGRkcl9zZHJhbS9zMSBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hcmJpdGVybG9jazIgPSBkZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgJiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzUvZG93bnN0cmVhbSBncmFudGVkIGRkcl9zZHJhbS9zMSBsYXN0IHRpbWUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9kZHJfc2RyYW1fczEgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9kZHJfc2RyYW1fczEgPD0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfZGRyX3NkcmFtX3MxID8gMSA6IChkZHJfc2RyYW1fczFfYXJiaXRyYXRpb25faG9sZG9mZl9pbnRlcm5hbCB8IDApID8gMCA6IGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9kZHJfc2RyYW1fczE7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCA9IChsYXN0X2N5Y2xlX2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2dyYW50ZWRfc2xhdmVfZGRyX3NkcmFtX3MxICYgMSkgfAotICAgIChsYXN0X2N5Y2xlX2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2dyYW50ZWRfc2xhdmVfZGRyX3NkcmFtX3MxICYgMSk7Ci0KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMSA9IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMSAmIH4oKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWQgJiAoKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciAhPSAwKSB8ICgxIDwgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyKSkpIHwgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYXJiaXRlcmxvY2sgfCBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hcmJpdGVybG9jayk7Ci0gIC8vdW5pcXVlIG5hbWUgZm9yIGRkcl9zZHJhbV9zMV9tb3ZlX29uX3RvX25leHRfdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uID0gZGRyX3NkcmFtX3MxX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QgJiBkZHJfc2RyYW1fczFfbG9hZF9maWZvOwotCi0gIC8vdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBidXJzdGNvdW50IGZvciBkZHJfc2RyYW1fczEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBkZHJfc2RyYW1fczFfc2VsZWN0ZWRfYnVyc3Rjb3VudCA9IChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J1cnN0Y291bnQgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2J1cnN0Y291bnQgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J1cnN0Y291bnQgOgotICAgIDE7Ci0KLSAgLy9idXJzdGNvdW50X2ZpZm9fZm9yX2Rkcl9zZHJhbV9zMSwgd2hpY2ggaXMgYW4gZV9maWZvX3dpdGhfcmVnaXN0ZXJlZF9vdXRwdXRzCi0gIGJ1cnN0Y291bnRfZmlmb19mb3JfZGRyX3NkcmFtX3MxX21vZHVsZSBidXJzdGNvdW50X2ZpZm9fZm9yX2Rkcl9zZHJhbV9zMQotICAgICgKLSAgICAgIC5jbGVhcl9maWZvICAgICAgICAgICAoMSdiMCksCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgKGNsayksCi0gICAgICAuZGF0YV9pbiAgICAgICAgICAgICAgKGRkcl9zZHJhbV9zMV9zZWxlY3RlZF9idXJzdGNvdW50KSwKLSAgICAgIC5kYXRhX291dCAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX3RyYW5zYWN0aW9uX2J1cnN0X2NvdW50KSwKLSAgICAgIC5lbXB0eSAgICAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX2J1cnN0Y291bnRfZmlmb19lbXB0eSksCi0gICAgICAuZmlmb19jb250YWluc19vbmVzX24gKCksCi0gICAgICAuZnVsbCAgICAgICAgICAgICAgICAgKCksCi0gICAgICAucmVhZCAgICAgICAgICAgICAgICAgKGRkcl9zZHJhbV9zMV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0KSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAocmVzZXRfbiksCi0gICAgICAuc3luY19yZXNldCAgICAgICAgICAgKDEnYjApLAotICAgICAgLndyaXRlICAgICAgICAgICAgICAgIChpbl9hX3JlYWRfY3ljbGUgJiB+ZGRyX3NkcmFtX3MxX3dhaXRzX2Zvcl9yZWFkICYgZGRyX3NkcmFtX3MxX2xvYWRfZmlmbyAmIH4oZGRyX3NkcmFtX3MxX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QgJiBkZHJfc2RyYW1fczFfYnVyc3Rjb3VudF9maWZvX2VtcHR5KSkKLSAgICApOwotCi0gIC8vZGRyX3NkcmFtX3MxIGN1cnJlbnQgYnVyc3QgbWludXMgb25lLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZGRyX3NkcmFtX3MxX2N1cnJlbnRfYnVyc3RfbWludXNfb25lID0gZGRyX3NkcmFtX3MxX2N1cnJlbnRfYnVyc3QgLSAxOwotCi0gIC8vd2hhdCB0byBsb2FkIGluIGN1cnJlbnRfYnVyc3QsIGZvciBkZHJfc2RyYW1fczEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBkZHJfc2RyYW1fczFfbmV4dF9idXJzdF9jb3VudCA9ICgoKGluX2FfcmVhZF9jeWNsZSAmIH5kZHJfc2RyYW1fczFfd2FpdHNfZm9yX3JlYWQpICYgfmRkcl9zZHJhbV9zMV9sb2FkX2ZpZm8pKT8gZGRyX3NkcmFtX3MxX3NlbGVjdGVkX2J1cnN0Y291bnQgOgotICAgICgoaW5fYV9yZWFkX2N5Y2xlICYgfmRkcl9zZHJhbV9zMV93YWl0c19mb3JfcmVhZCAmIGRkcl9zZHJhbV9zMV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0ICYgZGRyX3NkcmFtX3MxX2J1cnN0Y291bnRfZmlmb19lbXB0eSkpPyBkZHJfc2RyYW1fczFfc2VsZWN0ZWRfYnVyc3Rjb3VudCA6Ci0gICAgKGRkcl9zZHJhbV9zMV90aGlzX2N5Y2xlX2lzX3RoZV9sYXN0X2J1cnN0KT8gZGRyX3NkcmFtX3MxX3RyYW5zYWN0aW9uX2J1cnN0X2NvdW50IDoKLSAgICBkZHJfc2RyYW1fczFfY3VycmVudF9idXJzdF9taW51c19vbmU7Ci0KLSAgLy90aGUgY3VycmVudCBidXJzdCBjb3VudCBmb3IgZGRyX3NkcmFtX3MxLCB0byBiZSBkZWNyZW1lbnRlZCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZGRyX3NkcmFtX3MxX2N1cnJlbnRfYnVyc3QgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGRkcl9zZHJhbV9zMV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgfCAofmRkcl9zZHJhbV9zMV9sb2FkX2ZpZm8gJiAoaW5fYV9yZWFkX2N5Y2xlICYgfmRkcl9zZHJhbV9zMV93YWl0c19mb3JfcmVhZCkpKQotICAgICAgICAgIGRkcl9zZHJhbV9zMV9jdXJyZW50X2J1cnN0IDw9IGRkcl9zZHJhbV9zMV9uZXh0X2J1cnN0X2NvdW50OwotICAgIGVuZAotCi0KLSAgLy9hIDEgb3IgYnVyc3Rjb3VudCBmaWZvIGVtcHR5LCB0byBpbml0aWFsaXplIHRoZSBjb3VudGVyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfZGRyX3NkcmFtX3MxX2xvYWRfZmlmbyA9ICh+ZGRyX3NkcmFtX3MxX2xvYWRfZmlmbyk/IDEgOgotICAgICgoKGluX2FfcmVhZF9jeWNsZSAmIH5kZHJfc2RyYW1fczFfd2FpdHNfZm9yX3JlYWQpICYgZGRyX3NkcmFtX3MxX2xvYWRfZmlmbykpPyAxIDoKLSAgICB+ZGRyX3NkcmFtX3MxX2J1cnN0Y291bnRfZmlmb19lbXB0eTsKLQotICAvL3doZXRoZXIgdG8gbG9hZCBkaXJlY3RseSB0byB0aGUgY291bnRlciBvciB0byB0aGUgZmlmbywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZGRyX3NkcmFtX3MxX2xvYWRfZmlmbyA8PSAwOwotICAgICAgZWxzZSBpZiAoKGluX2FfcmVhZF9jeWNsZSAmIH5kZHJfc2RyYW1fczFfd2FpdHNfZm9yX3JlYWQpICYgfmRkcl9zZHJhbV9zMV9sb2FkX2ZpZm8gfCBkZHJfc2RyYW1fczFfdGhpc19jeWNsZV9pc190aGVfbGFzdF9idXJzdCkKLSAgICAgICAgICBkZHJfc2RyYW1fczFfbG9hZF9maWZvIDw9IHAwX2Rkcl9zZHJhbV9zMV9sb2FkX2ZpZm87Ci0gICAgZW5kCi0KLQotICAvL3RoZSBsYXN0IGN5Y2xlIGluIHRoZSBidXJzdCBmb3IgZGRyX3NkcmFtX3MxLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZGRyX3NkcmFtX3MxX3RoaXNfY3ljbGVfaXNfdGhlX2xhc3RfYnVyc3QgPSB+KHxkZHJfc2RyYW1fczFfY3VycmVudF9idXJzdF9taW51c19vbmUpICYgZGRyX3NkcmFtX3MxX3JlYWRkYXRhdmFsaWRfZnJvbV9zYTsKLQotICAvL3Jkdl9maWZvX2Zvcl9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV90b19kZHJfc2RyYW1fczEsIHdoaWNoIGlzIGFuIGVfZmlmb193aXRoX3JlZ2lzdGVyZWRfb3V0cHV0cwotICByZHZfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fdG9fZGRyX3NkcmFtX3MxX21vZHVsZSByZHZfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fdG9fZGRyX3NkcmFtX3MxCi0gICAgKAotICAgICAgLmNsZWFyX2ZpZm8gICAgICAgICAgICgxJ2IwKSwKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAoY2xrKSwKLSAgICAgIC5kYXRhX2luICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEpLAotICAgICAgLmRhdGFfb3V0ICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZHZfZmlmb19vdXRwdXRfZnJvbV9kZHJfc2RyYW1fczEpLAotICAgICAgLmVtcHR5ICAgICAgICAgICAgICAgICgpLAotICAgICAgLmZpZm9fY29udGFpbnNfb25lc19uIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZHZfZmlmb19lbXB0eV9kZHJfc2RyYW1fczEpLAotICAgICAgLmZ1bGwgICAgICAgICAgICAgICAgICgpLAotICAgICAgLnJlYWQgICAgICAgICAgICAgICAgIChkZHJfc2RyYW1fczFfbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAocmVzZXRfbiksCi0gICAgICAuc3luY19yZXNldCAgICAgICAgICAgKDEnYjApLAotICAgICAgLndyaXRlICAgICAgICAgICAgICAgIChpbl9hX3JlYWRfY3ljbGUgJiB+ZGRyX3NkcmFtX3MxX3dhaXRzX2Zvcl9yZWFkKQotICAgICk7Ci0KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczFfc2hpZnRfcmVnaXN0ZXIgPSB+Y3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmR2X2ZpZm9fZW1wdHlfZGRyX3NkcmFtX3MxOwotICAvL2xvY2FsIHJlYWRkYXRhdmFsaWQgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczEgPSAoZGRyX3NkcmFtX3MxX3JlYWRkYXRhdmFsaWRfZnJvbV9zYSAmIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3Jkdl9maWZvX291dHB1dF9mcm9tX2Rkcl9zZHJhbV9zMSkgJiB+IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3Jkdl9maWZvX2VtcHR5X2Rkcl9zZHJhbV9zMTsKLQotICAvL2Rkcl9zZHJhbV9zMV93cml0ZWRhdGEgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZGRyX3NkcmFtX3MxX3dyaXRlZGF0YSA9IChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlZGF0YSA6Ci0gICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxKT8gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGVkYXRhIDoKLSAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMSA9ICgxKSAmIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGUpOwotICAvL2N1c3RvbV9kbWFfYnVyc3RfMy9kb3duc3RyZWFtIGdyYW50ZWQgZGRyX3NkcmFtL3MxIGxhc3QgdGltZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgbGFzdF9jeWNsZV9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX3NsYXZlX2Rkcl9zZHJhbV9zMSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgbGFzdF9jeWNsZV9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX3NsYXZlX2Rkcl9zZHJhbV9zMSA8PSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9kZHJfc2RyYW1fczEgPyAxIDogKGRkcl9zZHJhbV9zMV9hcmJpdHJhdGlvbl9ob2xkb2ZmX2ludGVybmFsIHwgMCkgPyAwIDogbGFzdF9jeWNsZV9jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX3NsYXZlX2Rkcl9zZHJhbV9zMTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fY29udGludWVyZXF1ZXN0IGNvbnRpbnVlZCByZXF1ZXN0LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fY29udGludWVyZXF1ZXN0ID0gKGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9kZHJfc2RyYW1fczEgJiAxKSB8Ci0gICAgKGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9kZHJfc2RyYW1fczEgJiAxKTsKLQotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxID0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxICYgfigoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZCAmICgoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyICE9IDApIHwgKDEgPCBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIpKSkgfCBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hcmJpdGVybG9jayB8IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FyYml0ZXJsb2NrKTsKLSAgLy9yZHZfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fdG9fZGRyX3NkcmFtX3MxLCB3aGljaCBpcyBhbiBlX2ZpZm9fd2l0aF9yZWdpc3RlcmVkX291dHB1dHMKLSAgcmR2X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3RvX2Rkcl9zZHJhbV9zMV9tb2R1bGUgcmR2X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3RvX2Rkcl9zZHJhbV9zMQotICAgICgKLSAgICAgIC5jbGVhcl9maWZvICAgICAgICAgICAoMSdiMCksCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgKGNsayksCi0gICAgICAuZGF0YV9pbiAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5kYXRhX291dCAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmR2X2ZpZm9fb3V0cHV0X2Zyb21fZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5lbXB0eSAgICAgICAgICAgICAgICAoKSwKLSAgICAgIC5maWZvX2NvbnRhaW5zX29uZXNfbiAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmR2X2ZpZm9fZW1wdHlfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5mdWxsICAgICAgICAgICAgICAgICAoKSwKLSAgICAgIC5yZWFkICAgICAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbiksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgKHJlc2V0X24pLAotICAgICAgLnN5bmNfcmVzZXQgICAgICAgICAgICgxJ2IwKSwKLSAgICAgIC53cml0ZSAgICAgICAgICAgICAgICAoaW5fYV9yZWFkX2N5Y2xlICYgfmRkcl9zZHJhbV9zMV93YWl0c19mb3JfcmVhZCkKLSAgICApOwotCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyID0gfmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3Jkdl9maWZvX2VtcHR5X2Rkcl9zZHJhbV9zMTsKLSAgLy9sb2NhbCByZWFkZGF0YXZhbGlkIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxID0gKGRkcl9zZHJhbV9zMV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgJiBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZHZfZmlmb19vdXRwdXRfZnJvbV9kZHJfc2RyYW1fczEpICYgfiBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZHZfZmlmb19lbXB0eV9kZHJfc2RyYW1fczE7Ci0KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMSA9ICgxKSAmIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGUpOwotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxID0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxICYgfigoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZCAmICgoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyICE9IDApIHwgKDEgPCBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIpKSkgfCBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hcmJpdGVybG9jayB8IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FyYml0ZXJsb2NrKTsKLSAgLy9yZHZfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fdG9fZGRyX3NkcmFtX3MxLCB3aGljaCBpcyBhbiBlX2ZpZm9fd2l0aF9yZWdpc3RlcmVkX291dHB1dHMKLSAgcmR2X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3RvX2Rkcl9zZHJhbV9zMV9tb2R1bGUgcmR2X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3RvX2Rkcl9zZHJhbV9zMQotICAgICgKLSAgICAgIC5jbGVhcl9maWZvICAgICAgICAgICAoMSdiMCksCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgKGNsayksCi0gICAgICAuZGF0YV9pbiAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5kYXRhX291dCAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmR2X2ZpZm9fb3V0cHV0X2Zyb21fZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5lbXB0eSAgICAgICAgICAgICAgICAoKSwKLSAgICAgIC5maWZvX2NvbnRhaW5zX29uZXNfbiAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmR2X2ZpZm9fZW1wdHlfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5mdWxsICAgICAgICAgICAgICAgICAoKSwKLSAgICAgIC5yZWFkICAgICAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbiksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgKHJlc2V0X24pLAotICAgICAgLnN5bmNfcmVzZXQgICAgICAgICAgICgxJ2IwKSwKLSAgICAgIC53cml0ZSAgICAgICAgICAgICAgICAoaW5fYV9yZWFkX2N5Y2xlICYgfmRkcl9zZHJhbV9zMV93YWl0c19mb3JfcmVhZCkKLSAgICApOwotCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyID0gfmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3Jkdl9maWZvX2VtcHR5X2Rkcl9zZHJhbV9zMTsKLSAgLy9sb2NhbCByZWFkZGF0YXZhbGlkIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxID0gKGRkcl9zZHJhbV9zMV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgJiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZHZfZmlmb19vdXRwdXRfZnJvbV9kZHJfc2RyYW1fczEpICYgfiBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZHZfZmlmb19lbXB0eV9kZHJfc2RyYW1fczE7Ci0KLSAgLy9hbGxvdyBuZXcgYXJiIGN5Y2xlIGZvciBkZHJfc2RyYW0vczEsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfYWxsb3dfbmV3X2FyYl9jeWNsZSA9IH5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hcmJpdGVybG9jayAmIH5jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hcmJpdGVybG9jayAmIH5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hcmJpdGVybG9jazsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNS9kb3duc3RyZWFtIGFzc2lnbm1lbnQgaW50byBtYXN0ZXIgcXVhbGlmaWVkLXJlcXVlc3RzIHZlY3RvciBmb3IgZGRyX3NkcmFtL3MxLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZGRyX3NkcmFtX3MxX21hc3Rlcl9xcmVxX3ZlY3RvclswXSA9IGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNS9kb3duc3RyZWFtIGdyYW50IGRkcl9zZHJhbS9zMSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxID0gZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvclswXTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNS9kb3duc3RyZWFtIHNhdmVkLWdyYW50IGRkcl9zZHJhbS9zMSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3NhdmVkX2dyYW50X2Rkcl9zZHJhbV9zMSA9IGRkcl9zZHJhbV9zMV9hcmJfd2lubmVyWzBdOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80L2Rvd25zdHJlYW0gYXNzaWdubWVudCBpbnRvIG1hc3RlciBxdWFsaWZpZWQtcmVxdWVzdHMgdmVjdG9yIGZvciBkZHJfc2RyYW0vczEsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfbWFzdGVyX3FyZXFfdmVjdG9yWzFdID0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80L2Rvd25zdHJlYW0gZ3JhbnQgZGRyX3NkcmFtL3MxLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEgPSBkZHJfc2RyYW1fczFfZ3JhbnRfdmVjdG9yWzFdOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF80L2Rvd25zdHJlYW0gc2F2ZWQtZ3JhbnQgZGRyX3NkcmFtL3MxLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfZGRyX3NkcmFtX3MxID0gZGRyX3NkcmFtX3MxX2FyYl93aW5uZXJbMV07Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzMvZG93bnN0cmVhbSBhc3NpZ25tZW50IGludG8gbWFzdGVyIHF1YWxpZmllZC1yZXF1ZXN0cyB2ZWN0b3IgZm9yIGRkcl9zZHJhbS9zMSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGRkcl9zZHJhbV9zMV9tYXN0ZXJfcXJlcV92ZWN0b3JbMl0gPSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczE7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzMvZG93bnN0cmVhbSBncmFudCBkZHJfc2RyYW0vczEsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSA9IGRkcl9zZHJhbV9zMV9ncmFudF92ZWN0b3JbMl07Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzMvZG93bnN0cmVhbSBzYXZlZC1ncmFudCBkZHJfc2RyYW0vczEsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9kZHJfc2RyYW1fczEgPSBkZHJfc2RyYW1fczFfYXJiX3dpbm5lclsyXTsKLQotICAvL2Rkcl9zZHJhbS9zMSBjaG9zZW4tbWFzdGVyIGRvdWJsZS12ZWN0b3IsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfY2hvc2VuX21hc3Rlcl9kb3VibGVfdmVjdG9yID0ge2Rkcl9zZHJhbV9zMV9tYXN0ZXJfcXJlcV92ZWN0b3IsIGRkcl9zZHJhbV9zMV9tYXN0ZXJfcXJlcV92ZWN0b3J9ICYgKHt+ZGRyX3NkcmFtX3MxX21hc3Rlcl9xcmVxX3ZlY3RvciwgfmRkcl9zZHJhbV9zMV9tYXN0ZXJfcXJlcV92ZWN0b3J9ICsgZGRyX3NkcmFtX3MxX2FyYl9hZGRlbmQpOwotCi0gIC8vc3RhYmxlIG9uZWhvdCBlbmNvZGluZyBvZiBhcmIgd2lubmVyCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfYXJiX3dpbm5lciA9IChkZHJfc2RyYW1fczFfYWxsb3dfbmV3X2FyYl9jeWNsZSAmIHwgZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvcikgPyBkZHJfc2RyYW1fczFfZ3JhbnRfdmVjdG9yIDogZGRyX3NkcmFtX3MxX3NhdmVkX2Nob3Nlbl9tYXN0ZXJfdmVjdG9yOwotCi0gIC8vc2F2ZWQgZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3Rvciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZGRyX3NkcmFtX3MxX3NhdmVkX2Nob3Nlbl9tYXN0ZXJfdmVjdG9yIDw9IDA7Ci0gICAgICBlbHNlIGlmIChkZHJfc2RyYW1fczFfYWxsb3dfbmV3X2FyYl9jeWNsZSkKLSAgICAgICAgICBkZHJfc2RyYW1fczFfc2F2ZWRfY2hvc2VuX21hc3Rlcl92ZWN0b3IgPD0gfGRkcl9zZHJhbV9zMV9ncmFudF92ZWN0b3IgPyBkZHJfc2RyYW1fczFfZ3JhbnRfdmVjdG9yIDogZGRyX3NkcmFtX3MxX3NhdmVkX2Nob3Nlbl9tYXN0ZXJfdmVjdG9yOwotICAgIGVuZAotCi0KLSAgLy9vbmVob3QgZW5jb2Rpbmcgb2YgY2hvc2VuIG1hc3RlcgotICBhc3NpZ24gZGRyX3NkcmFtX3MxX2dyYW50X3ZlY3RvciA9IHsoZGRyX3NkcmFtX3MxX2Nob3Nlbl9tYXN0ZXJfZG91YmxlX3ZlY3RvclsyXSB8IGRkcl9zZHJhbV9zMV9jaG9zZW5fbWFzdGVyX2RvdWJsZV92ZWN0b3JbNV0pLAotICAgIChkZHJfc2RyYW1fczFfY2hvc2VuX21hc3Rlcl9kb3VibGVfdmVjdG9yWzFdIHwgZGRyX3NkcmFtX3MxX2Nob3Nlbl9tYXN0ZXJfZG91YmxlX3ZlY3Rvcls0XSksCi0gICAgKGRkcl9zZHJhbV9zMV9jaG9zZW5fbWFzdGVyX2RvdWJsZV92ZWN0b3JbMF0gfCBkZHJfc2RyYW1fczFfY2hvc2VuX21hc3Rlcl9kb3VibGVfdmVjdG9yWzNdKX07Ci0KLSAgLy9kZHJfc2RyYW0vczEgY2hvc2VuIG1hc3RlciByb3RhdGVkIGxlZnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfY2hvc2VuX21hc3Rlcl9yb3RfbGVmdCA9IChkZHJfc2RyYW1fczFfYXJiX3dpbm5lciA8PCAxKSA/IChkZHJfc2RyYW1fczFfYXJiX3dpbm5lciA8PCAxKSA6IDE7Ci0KLSAgLy9kZHJfc2RyYW0vczEncyBhZGRlbmQgZm9yIG5leHQtbWFzdGVyLWdyYW50Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkZHJfc2RyYW1fczFfYXJiX2FkZGVuZCA8PSAxOwotICAgICAgZWxzZSBpZiAofGRkcl9zZHJhbV9zMV9ncmFudF92ZWN0b3IpCi0gICAgICAgICAgZGRyX3NkcmFtX3MxX2FyYl9hZGRlbmQgPD0gZGRyX3NkcmFtX3MxX2VuZF94ZmVyPyBkZHJfc2RyYW1fczFfY2hvc2VuX21hc3Rlcl9yb3RfbGVmdCA6IGRkcl9zZHJhbV9zMV9ncmFudF92ZWN0b3I7Ci0gICAgZW5kCi0KLQotICAvL2Rkcl9zZHJhbV9zMV9yZXNldF9uIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfcmVzZXRfbiA9IHJlc2V0X247Ci0KLSAgLy9kZHJfc2RyYW1fczFfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGRkcl9zZHJhbV9zMV9maXJzdHRyYW5zZmVyID0gZGRyX3NkcmFtX3MxX2JlZ2luc194ZmVyID8gZGRyX3NkcmFtX3MxX3VucmVnX2ZpcnN0dHJhbnNmZXIgOiBkZHJfc2RyYW1fczFfcmVnX2ZpcnN0dHJhbnNmZXI7Ci0KLSAgLy9kZHJfc2RyYW1fczFfdW5yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGRkcl9zZHJhbV9zMV91bnJlZ19maXJzdHRyYW5zZmVyID0gfihkZHJfc2RyYW1fczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGRkcl9zZHJhbV9zMV9hbnlfY29udGludWVyZXF1ZXN0KTsKLQotICAvL2Rkcl9zZHJhbV9zMV9yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZGRyX3NkcmFtX3MxX3JlZ19maXJzdHRyYW5zZmVyIDw9IDEnYjE7Ci0gICAgICBlbHNlIGlmIChkZHJfc2RyYW1fczFfYmVnaW5zX3hmZXIpCi0gICAgICAgICAgZGRyX3NkcmFtX3MxX3JlZ19maXJzdHRyYW5zZmVyIDw9IGRkcl9zZHJhbV9zMV91bnJlZ19maXJzdHRyYW5zZmVyOwotICAgIGVuZAotCi0KLSAgLy9kZHJfc2RyYW1fczFfbmV4dF9iYnRfYnVyc3Rjb3VudCBuZXh0X2JidF9idXJzdGNvdW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZGRyX3NkcmFtX3MxX25leHRfYmJ0X2J1cnN0Y291bnQgPSAoKCgoZGRyX3NkcmFtX3MxX3dyaXRlKSAmJiAoZGRyX3NkcmFtX3MxX2JidF9idXJzdGNvdW50ZXIgPT0gMCkpKSk/IChkZHJfc2RyYW1fczFfYnVyc3Rjb3VudCAtIDEpIDoKLSAgICAoKCgoZGRyX3NkcmFtX3MxX3JlYWQpICYmIChkZHJfc2RyYW1fczFfYmJ0X2J1cnN0Y291bnRlciA9PSAwKSkpKT8gMCA6Ci0gICAgKGRkcl9zZHJhbV9zMV9iYnRfYnVyc3Rjb3VudGVyIC0gMSk7Ci0KLSAgLy9kZHJfc2RyYW1fczFfYmJ0X2J1cnN0Y291bnRlciBiYnRfYnVyc3Rjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkZHJfc2RyYW1fczFfYmJ0X2J1cnN0Y291bnRlciA8PSAwOwotICAgICAgZWxzZSBpZiAoZGRyX3NkcmFtX3MxX2JlZ2luc194ZmVyKQotICAgICAgICAgIGRkcl9zZHJhbV9zMV9iYnRfYnVyc3Rjb3VudGVyIDw9IGRkcl9zZHJhbV9zMV9uZXh0X2JidF9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgLy9kZHJfc2RyYW1fczFfYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsIGJlZ2luIGJ1cnN0IHRyYW5zZmVyLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZGRyX3NkcmFtX3MxX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCA9IGRkcl9zZHJhbV9zMV9iZWdpbnNfeGZlciAmIChkZHJfc2RyYW1fczFfYmJ0X2J1cnN0Y291bnRlciA9PSAwKTsKLQotICAvL2Rkcl9zZHJhbS9zMSBiZWdpbiBidXJzdCB0cmFuc2ZlciB0byBzbGF2ZSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGRkcl9zZHJhbV9zMV9iZWdpbmJ1cnN0dHJhbnNmZXIgPSBkZHJfc2RyYW1fczFfYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsOwotCi0gIC8vZGRyX3NkcmFtX3MxX2FyYml0cmF0aW9uX2hvbGRvZmZfaW50ZXJuYWwgYXJiaXRyYXRpb25faG9sZG9mZiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGRkcl9zZHJhbV9zMV9hcmJpdHJhdGlvbl9ob2xkb2ZmX2ludGVybmFsID0gZGRyX3NkcmFtX3MxX2JlZ2luc194ZmVyICYgZGRyX3NkcmFtX3MxX2ZpcnN0dHJhbnNmZXI7Ci0KLSAgLy9kZHJfc2RyYW1fczFfcmVhZCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZGRyX3NkcmFtX3MxX3JlYWQgPSAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEgJiBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkKSB8IChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSAmIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWQpIHwgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxICYgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZCk7Ci0KLSAgLy9kZHJfc2RyYW1fczFfd3JpdGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGRkcl9zZHJhbV9zMV93cml0ZSA9IChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSAmIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlKSB8IChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSAmIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlKSB8IChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSAmIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlKTsKLQotICBhc3NpZ24gc2hpZnRlZF9hZGRyZXNzX3RvX2Rkcl9zZHJhbV9zMV9mcm9tX2N1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtID0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZTsKLSAgLy9kZHJfc2RyYW1fczFfYWRkcmVzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBkZHJfc2RyYW1fczFfYWRkcmVzcyA9IChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IChzaGlmdGVkX2FkZHJlc3NfdG9fZGRyX3NkcmFtX3MxX2Zyb21fY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW0gPj4gMikgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSk/IChzaGlmdGVkX2FkZHJlc3NfdG9fZGRyX3NkcmFtX3MxX2Zyb21fY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW0gPj4gMikgOgotICAgIChzaGlmdGVkX2FkZHJlc3NfdG9fZGRyX3NkcmFtX3MxX2Zyb21fY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW0gPj4gMik7Ci0KLSAgYXNzaWduIHNoaWZ0ZWRfYWRkcmVzc190b19kZHJfc2RyYW1fczFfZnJvbV9jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbSA9IGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIGFzc2lnbiBzaGlmdGVkX2FkZHJlc3NfdG9fZGRyX3NkcmFtX3MxX2Zyb21fY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW0gPSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICAvL2QxX2Rkcl9zZHJhbV9zMV9lbmRfeGZlciByZWdpc3Rlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfZGRyX3NkcmFtX3MxX2VuZF94ZmVyIDw9IDE7Ci0gICAgICBlbHNlIAotICAgICAgICBkMV9kZHJfc2RyYW1fczFfZW5kX3hmZXIgPD0gZGRyX3NkcmFtX3MxX2VuZF94ZmVyOwotICAgIGVuZAotCi0KLSAgLy9kZHJfc2RyYW1fczFfd2FpdHNfZm9yX3JlYWQgaW4gYSBjeWNsZSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGRkcl9zZHJhbV9zMV93YWl0c19mb3JfcmVhZCA9IGRkcl9zZHJhbV9zMV9pbl9hX3JlYWRfY3ljbGUgJiB+ZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYTsKLQotICAvL2Rkcl9zZHJhbV9zMV9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGRkcl9zZHJhbV9zMV9pbl9hX3JlYWRfY3ljbGUgPSAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEgJiBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkKSB8IChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSAmIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWQpIHwgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxICYgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZCk7Ci0KLSAgLy9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGluX2FfcmVhZF9jeWNsZSA9IGRkcl9zZHJhbV9zMV9pbl9hX3JlYWRfY3ljbGU7Ci0KLSAgLy9kZHJfc2RyYW1fczFfd2FpdHNfZm9yX3dyaXRlIGluIGEgY3ljbGUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBkZHJfc2RyYW1fczFfd2FpdHNfZm9yX3dyaXRlID0gZGRyX3NkcmFtX3MxX2luX2Ffd3JpdGVfY3ljbGUgJiB+ZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYTsKLQotICAvL2Rkcl9zZHJhbV9zMV9pbl9hX3dyaXRlX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBkZHJfc2RyYW1fczFfaW5fYV93cml0ZV9jeWNsZSA9IChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSAmIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlKSB8IChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSAmIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlKSB8IChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSAmIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlKTsKLQotICAvL2luX2Ffd3JpdGVfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGluX2Ffd3JpdGVfY3ljbGUgPSBkZHJfc2RyYW1fczFfaW5fYV93cml0ZV9jeWNsZTsKLQotICBhc3NpZ24gd2FpdF9mb3JfZGRyX3NkcmFtX3MxX2NvdW50ZXIgPSAwOwotICAvL2Rkcl9zZHJhbV9zMV9ieXRlZW5hYmxlIGJ5dGUgZW5hYmxlIHBvcnQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZGRyX3NkcmFtX3MxX2J5dGVlbmFibGUgPSAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEpPyBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ieXRlZW5hYmxlIDoKLSAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEpPyBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ieXRlZW5hYmxlIDoKLSAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEpPyBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ieXRlZW5hYmxlIDoKLSAgICAtMTsKLQotICAvL2J1cnN0Y291bnQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZGRyX3NkcmFtX3MxX2J1cnN0Y291bnQgPSAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEpPyBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9idXJzdGNvdW50IDoKLSAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEpPyBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9idXJzdGNvdW50IDoKLSAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEpPyBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9idXJzdGNvdW50IDoKLSAgICAxOwotCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vZGRyX3NkcmFtL3MxIGVuYWJsZSBub24temVybyBhc3NlcnRpb25zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDEnYjE7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMy9kb3duc3RyZWFtIG5vbi16ZXJvIGFyYml0cmF0aW9uc2hhcmUgYXNzZXJ0aW9uLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEgJiYgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgPT0gMCkgJiYgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucykKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF8zL2Rvd25zdHJlYW0gZHJvdmUgMCBvbiBpdHMgJ2FyYml0cmF0aW9uc2hhcmUnIHBvcnQgd2hpbGUgYWNjZXNzaW5nIHNsYXZlIGRkcl9zZHJhbS9zMSIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMy9kb3duc3RyZWFtIG5vbi16ZXJvIGJ1cnN0Y291bnQgYXNzZXJ0aW9uLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEgJiYgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2J1cnN0Y291bnQgPT0gMCkgJiYgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucykKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF8zL2Rvd25zdHJlYW0gZHJvdmUgMCBvbiBpdHMgJ2J1cnN0Y291bnQnIHBvcnQgd2hpbGUgYWNjZXNzaW5nIHNsYXZlIGRkcl9zZHJhbS9zMSIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNC9kb3duc3RyZWFtIG5vbi16ZXJvIGFyYml0cmF0aW9uc2hhcmUgYXNzZXJ0aW9uLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEgJiYgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgPT0gMCkgJiYgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucykKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF80L2Rvd25zdHJlYW0gZHJvdmUgMCBvbiBpdHMgJ2FyYml0cmF0aW9uc2hhcmUnIHBvcnQgd2hpbGUgYWNjZXNzaW5nIHNsYXZlIGRkcl9zZHJhbS9zMSIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNC9kb3duc3RyZWFtIG5vbi16ZXJvIGJ1cnN0Y291bnQgYXNzZXJ0aW9uLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEgJiYgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2J1cnN0Y291bnQgPT0gMCkgJiYgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucykKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF80L2Rvd25zdHJlYW0gZHJvdmUgMCBvbiBpdHMgJ2J1cnN0Y291bnQnIHBvcnQgd2hpbGUgYWNjZXNzaW5nIHNsYXZlIGRkcl9zZHJhbS9zMSIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNS9kb3duc3RyZWFtIG5vbi16ZXJvIGFyYml0cmF0aW9uc2hhcmUgYXNzZXJ0aW9uLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEgJiYgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgPT0gMCkgJiYgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucykKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF81L2Rvd25zdHJlYW0gZHJvdmUgMCBvbiBpdHMgJ2FyYml0cmF0aW9uc2hhcmUnIHBvcnQgd2hpbGUgYWNjZXNzaW5nIHNsYXZlIGRkcl9zZHJhbS9zMSIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfNS9kb3duc3RyZWFtIG5vbi16ZXJvIGJ1cnN0Y291bnQgYXNzZXJ0aW9uLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEgJiYgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J1cnN0Y291bnQgPT0gMCkgJiYgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucykKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogY3VzdG9tX2RtYV9idXJzdF81L2Rvd25zdHJlYW0gZHJvdmUgMCBvbiBpdHMgJ2J1cnN0Y291bnQnIHBvcnQgd2hpbGUgYWNjZXNzaW5nIHNsYXZlIGRkcl9zZHJhbS9zMSIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2dyYW50IHNpZ25hbHMgYXJlIGFjdGl2ZSBzaW11bHRhbmVvdXNseSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEgKyBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSArIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxID4gMSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogPiAxIG9mIGdyYW50IHNpZ25hbHMgYXJlIGFjdGl2ZSBzaW11bHRhbmVvdXNseSIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL3NhdmVkX2dyYW50IHNpZ25hbHMgYXJlIGFjdGl2ZSBzaW11bHRhbmVvdXNseSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfZGRyX3NkcmFtX3MxICsgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfZGRyX3NkcmFtX3MxICsgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfZGRyX3NkcmFtX3MxID4gMSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogPiAxIG9mIHNhdmVkX2dyYW50IHNpZ25hbHMgYXJlIGFjdGl2ZSBzaW11bHRhbmVvdXNseSIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJpdHJhdG9yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRzY19uX3RvX3RoZV9leHRfc3NyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBid19uX3RvX3RoZV9leHRfc3NyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBid2Vfbl90b190aGVfZXh0X3NzcmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpcGVuYWJsZTFfbl90b190aGVfZXh0X3NzcmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZ3JhbnRlZF9leHRfc3NyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVxdWVzdHNfZXh0X3NzcmFtX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZW5kX3hmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfc3NyYW1fYnVzX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfc3NyYW1fYnVzX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX2dyYW50ZWRfZXh0X3NzcmFtX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlcXVlc3RzX2V4dF9zc3JhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nX2V4dF9zc3JhbV9idXNfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dGVuYWJsZV9uX3RvX3RoZV9leHRfc3NyYW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGFkc2Nfbl90b190aGVfZXh0X3NzcmFtOwotICBvdXRwdXQgIFsgIDM6IDBdIGJ3X25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgb3V0cHV0ICAgICAgICAgICBid2Vfbl90b190aGVfZXh0X3NzcmFtOwotICBvdXRwdXQgICAgICAgICAgIGNoaXBlbmFibGUxX25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ncmFudGVkX2V4dF9zc3JhbV9zMTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZXF1ZXN0c19leHRfc3NyYW1fczE7Ci0gIG91dHB1dCAgICAgICAgICAgZDFfZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZW5kX3hmZXI7Ci0gIG91dHB1dCAgWyAyMDogMF0gZXh0X3NzcmFtX2J1c19hZGRyZXNzOwotICBpbm91dCAgIFsgMzE6IDBdIGV4dF9zc3JhbV9idXNfZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX2dyYW50ZWRfZXh0X3NzcmFtX3MxOwotICBvdXRwdXQgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfZXh0X3NzcmFtX3MxOwotICBvdXRwdXQgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMTsKLSAgb3V0cHV0ICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlcXVlc3RzX2V4dF9zc3JhbV9zMTsKLSAgb3V0cHV0ICBbIDMxOiAwXSBpbmNvbWluZ19leHRfc3NyYW1fYnVzX2RhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgb3V0cHV0ZW5hYmxlX25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAyMDogMF0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZTsKLSAgaW5wdXQgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICBbICAyOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIGlucHV0ICAgWyAzMTogMF0gZmlyX2RtYV9yZWFkX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotICBpbnB1dCAgIFsgIDI6IDBdIGZpcl9kbWFfcmVhZF9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyOwotICBpbnB1dCAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotCi0gIHJlZyAgICAgICAgICAgICAgYWRzY19uX3RvX3RoZV9leHRfc3NyYW0gLyogc3ludGhlc2lzIEFMVEVSQV9BVFRSSUJVVEUgPSAiRkFTVF9PVVRQVVRfUkVHSVNURVI9T04iICAqLzsKLSAgcmVnICAgICBbICAzOiAwXSBid19uX3RvX3RoZV9leHRfc3NyYW0gLyogc3ludGhlc2lzIEFMVEVSQV9BVFRSSUJVVEUgPSAiRkFTVF9PVVRQVVRfUkVHSVNURVI9T04iICAqLzsKLSAgcmVnICAgICAgICAgICAgICBid2Vfbl90b190aGVfZXh0X3NzcmFtIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIkZBU1RfT1VUUFVUX1JFR0lTVEVSPU9OIiAgKi87Ci0gIHJlZyAgICAgICAgICAgICAgY2hpcGVuYWJsZTFfbl90b190aGVfZXh0X3NzcmFtIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIkZBU1RfT1VUUFVUX1JFR0lTVEVSPU9OIiAgKi87Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ncmFudGVkX2V4dF9zc3JhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMTsKLSAgcmVnICAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXJfaW47Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVxdWVzdHNfZXh0X3NzcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3NhdmVkX2dyYW50X2V4dF9zc3JhbV9zMTsKLSAgcmVnICAgICAgICAgICAgICBkMV9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9lbmRfeGZlcjsKLSAgcmVnICAgICAgICAgICAgICBkMV9pbl9hX3dyaXRlX2N5Y2xlIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIkZBU1RfT1VUUFVUX0VOQUJMRV9SRUdJU1RFUj1PTiIgICovOwotICByZWcgICAgIFsgMzE6IDBdIGQxX291dGdvaW5nX2V4dF9zc3JhbV9idXNfZGF0YSAvKiBzeW50aGVzaXMgQUxURVJBX0FUVFJJQlVURSA9ICJGQVNUX09VVFBVVF9SRUdJU1RFUj1PTiIgICovOwotICByZWcgICAgICAgICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdDsKLSAgcmVnICAgICAgICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zOwotICB3aXJlICAgICAgICAgICAgIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmU7Ci0gIHJlZyAgICAgWyAyMDogMF0gZXh0X3NzcmFtX2J1c19hZGRyZXNzIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIkZBU1RfT1VUUFVUX1JFR0lTVEVSPU9OIiAgKi87Ci0gIHdpcmUgICAgICAgICAgICAgZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYWxsZ3JhbnRzOwotICB3aXJlICAgICAgICAgICAgIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FsbG93X25ld19hcmJfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudDsKLSAgd2lyZSAgICAgICAgICAgICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hbnlfY29udGludWVyZXF1ZXN0OwotICByZWcgICAgIFsgIDE6IDBdIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl9hZGRlbmQ7Ci0gIHdpcmUgICAgICAgICAgICAgZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYXJiX2NvdW50ZXJfZW5hYmxlOwotICByZWcgICAgIFsgIDM6IDBdIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyOwotICB3aXJlICAgIFsgIDM6IDBdIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gIHdpcmUgICAgWyAgMzogMF0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYXJiX3NoYXJlX3NldF92YWx1ZXM7Ci0gIHdpcmUgICAgWyAgMTogMF0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYXJiX3dpbm5lcjsKLSAgd2lyZSAgICAgICAgICAgICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJpdHJhdGlvbl9ob2xkb2ZmX2ludGVybmFsOwotICB3aXJlICAgICAgICAgICAgIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbDsKLSAgd2lyZSAgICAgICAgICAgICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9iZWdpbnNfeGZlcjsKLSAgd2lyZSAgICBbICAzOiAwXSBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9jaG9zZW5fbWFzdGVyX2RvdWJsZV92ZWN0b3I7Ci0gIHdpcmUgICAgWyAgMTogMF0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfY2hvc2VuX21hc3Rlcl9yb3RfbGVmdDsKLSAgd2lyZSAgICAgICAgICAgICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9lbmRfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9maXJzdHRyYW5zZmVyOwotICB3aXJlICAgIFsgIDE6IDBdIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2dyYW50X3ZlY3RvcjsKLSAgd2lyZSAgICBbICAxOiAwXSBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9tYXN0ZXJfcXJlcV92ZWN0b3I7Ci0gIHdpcmUgICAgICAgICAgICAgZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0czsKLSAgd2lyZSAgICAgICAgICAgICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9yZWFkX3BlbmRpbmc7Ci0gIHJlZyAgICAgICAgICAgICAgZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfcmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHJlZyAgICAgWyAgMTogMF0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfc2F2ZWRfY2hvc2VuX21hc3Rlcl92ZWN0b3I7Ci0gIHJlZyAgICAgICAgICAgICAgZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMjsKLSAgd2lyZSAgICAgICAgICAgICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV91bnJlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX3dyaXRlX3BlbmRpbmc7Ci0gIHdpcmUgICAgWyAzMTogMF0gZXh0X3NzcmFtX2J1c19kYXRhOwotICB3aXJlICAgICAgICAgICAgIGV4dF9zc3JhbV9zMV9pbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgZXh0X3NzcmFtX3MxX2luX2Ffd3JpdGVfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgZXh0X3NzcmFtX3MxX3dhaXRzX2Zvcl9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGV4dF9zc3JhbV9zMV93YWl0c19mb3Jfd3JpdGU7Ci0gIHdpcmUgICAgICAgICAgICAgZXh0X3NzcmFtX3MxX3dpdGhfd3JpdGVfbGF0ZW5jeTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfZ3JhbnRlZF9leHRfc3NyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxOwotICByZWcgICAgIFsgIDM6IDBdIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXJfaW47Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZXF1ZXN0c19leHRfc3NyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9zYXZlZF9ncmFudF9leHRfc3NyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGluX2Ffd3JpdGVfY3ljbGU7Ci0gIHJlZyAgICAgWyAzMTogMF0gaW5jb21pbmdfZXh0X3NzcmFtX2J1c19kYXRhIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIkZBU1RfSU5QVVRfUkVHSVNURVI9T04iICAqLzsKLSAgcmVnICAgICAgICAgICAgICBsYXN0X2N5Y2xlX2N1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2dyYW50ZWRfc2xhdmVfZXh0X3NzcmFtX3MxOwotICByZWcgICAgICAgICAgICAgIGxhc3RfY3ljbGVfZmlyX2RtYV9yZWFkX21hc3Rlcl9ncmFudGVkX3NsYXZlX2V4dF9zc3JhbV9zMTsKLSAgd2lyZSAgICBbIDMxOiAwXSBvdXRnb2luZ19leHRfc3NyYW1fYnVzX2RhdGE7Ci0gIHJlZyAgICAgICAgICAgICAgb3V0cHV0ZW5hYmxlX25fdG9fdGhlX2V4dF9zc3JhbSAvKiBzeW50aGVzaXMgQUxURVJBX0FUVFJJQlVURSA9ICJGQVNUX09VVFBVVF9SRUdJU1RFUj1PTiIgICovOwotICB3aXJlICAgICAgICAgICAgIHAxX2Fkc2Nfbl90b190aGVfZXh0X3NzcmFtOwotICB3aXJlICAgIFsgIDM6IDBdIHAxX2J3X25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9id2Vfbl90b190aGVfZXh0X3NzcmFtOwotICB3aXJlICAgICAgICAgICAgIHAxX2NoaXBlbmFibGUxX25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgd2lyZSAgICBbICAzOiAwXSBwMV9jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyOwotICB3aXJlICAgIFsgMjA6IDBdIHAxX2V4dF9zc3JhbV9idXNfYWRkcmVzczsKLSAgd2lyZSAgICBbICAzOiAwXSBwMV9maXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfb3V0cHV0ZW5hYmxlX25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lX3RvX3dyaXRlOwotICB3aXJlICAgICAgICAgICAgIHdhaXRfZm9yX2V4dF9zc3JhbV9zMV9jb3VudGVyOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfcmVhc29uc190b193YWl0IDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gfmV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2VuZF94ZmVyOwotICAgIGVuZAotCi0KLSAgYXNzaWduIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2JlZ2luc194ZmVyID0gfmQxX3JlYXNvbnNfdG9fd2FpdCAmICgoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZXh0X3NzcmFtX3MxIHwgZmlyX2RtYV9yZWFkX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczEpKTsKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlcXVlc3RzX2V4dF9zc3JhbV9zMSA9ICgxKSAmIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkIHwgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd3JpdGUpOwotICAvL35jaGlwZW5hYmxlMV9uX3RvX3RoZV9leHRfc3NyYW0gb2YgdHlwZSBjaGlwc2VsZWN0IHRvIH5wMV9jaGlwZW5hYmxlMV9uX3RvX3RoZV9leHRfc3NyYW0sIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGNoaXBlbmFibGUxX25fdG9fdGhlX2V4dF9zc3JhbSA8PSB+MDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGNoaXBlbmFibGUxX25fdG9fdGhlX2V4dF9zc3JhbSA8PSBwMV9jaGlwZW5hYmxlMV9uX3RvX3RoZV9leHRfc3NyYW07Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfd3JpdGVfcGVuZGluZyA9IDA7Ci0gIC8vZXh0X3NzcmFtX2J1cy9hdmFsb25fc2xhdmUgcmVhZCBwZW5kaW5nIGNhbGMsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9yZWFkX3BlbmRpbmcgPSAofGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXJbMSA6IDBdKSB8ICh8ZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyWzEgOiAwXSk7Ci0KLSAgLy9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJfc2hhcmVfY291bnRlciBzZXQgdmFsdWVzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYXJiX3NoYXJlX3NldF92YWx1ZXMgPSAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZ3JhbnRlZF9leHRfc3NyYW1fczEpPyBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlIDoKLSAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZ3JhbnRlZF9leHRfc3NyYW1fczEpPyBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlIDoKLSAgICAxOwotCi0gIC8vZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzID0gMCB8Ci0gICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZXF1ZXN0c19leHRfc3NyYW1fczEgfAotICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVxdWVzdHNfZXh0X3NzcmFtX3MxOwotCi0gIC8vZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50ID0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfZXh0X3NzcmFtX3MxIHwKLSAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9leHRfc3NyYW1fczE7Ci0KLSAgLy9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlID0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZmlyc3R0cmFuc2ZlciA/IChleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJfc2hhcmVfc2V0X3ZhbHVlcyAtIDEpIDogfGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyID8gKGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyIC0gMSkgOiAwOwotCi0gIC8vZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYWxsZ3JhbnRzIGFsbCBzbGF2ZSBncmFudHMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hbGxncmFudHMgPSAofGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2dyYW50X3ZlY3RvcikgfAotICAgICh8ZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZ3JhbnRfdmVjdG9yKSB8Ci0gICAgKHxleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9ncmFudF92ZWN0b3IpIHwKLSAgICAofGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2dyYW50X3ZlY3Rvcik7Ci0KLSAgLy9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9lbmRfeGZlciBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZW5kX3hmZXIgPSB+KGV4dF9zc3JhbV9zMV93YWl0c19mb3JfcmVhZCB8IGV4dF9zc3JhbV9zMV93YWl0c19mb3Jfd3JpdGUpOwotCi0gIC8vZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZSBhcmIgc2hhcmUgY291bnRlciBlbmFibGUgdGVybSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmUgPSBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9lbmRfeGZlciAmICh+ZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCB8IGluX2FfcmVhZF9jeWNsZSB8IGluX2Ffd3JpdGVfY3ljbGUpOwotCi0gIC8vZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXIgYXJiaXRyYXRpb24gY291bnRlciBlbmFibGUsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJfY291bnRlcl9lbmFibGUgPSAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZSAmIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FsbGdyYW50cykgfCAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZSAmIH5leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKTsKLQotICAvL2V4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyIGNvdW50ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIGlmIChleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJfY291bnRlcl9lbmFibGUpCi0gICAgICAgICAgZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXIgPD0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgICBlbmQKLQotCi0gIC8vZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIDw9IDA7Ci0gICAgICBlbHNlIGlmICgofGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX21hc3Rlcl9xcmVxX3ZlY3RvciAmIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmUpIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmUgJiB+ZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cykpCi0gICAgICAgICAgZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSB8ZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgICBlbmQKLQotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wL2Rvd25zdHJlYW0gZXh0X3NzcmFtX2J1cy9hdmFsb25fc2xhdmUgYXJiaXRlcmxvY2ssIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hcmJpdGVybG9jayA9IGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrMiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyID0gfGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzAvZG93bnN0cmVhbSBleHRfc3NyYW1fYnVzL2F2YWxvbl9zbGF2ZSBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hcmJpdGVybG9jazIgPSBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiAmIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL2Zpcl9kbWEvcmVhZF9tYXN0ZXIgZXh0X3NzcmFtX2J1cy9hdmFsb25fc2xhdmUgYXJiaXRlcmxvY2ssIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBmaXJfZG1hX3JlYWRfbWFzdGVyX2FyYml0ZXJsb2NrID0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGZpcl9kbWFfcmVhZF9tYXN0ZXJfY29udGludWVyZXF1ZXN0OwotCi0gIC8vZmlyX2RtYS9yZWFkX21hc3RlciBleHRfc3NyYW1fYnVzL2F2YWxvbl9zbGF2ZSBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBmaXJfZG1hX3JlYWRfbWFzdGVyX2FyYml0ZXJsb2NrMiA9IGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyICYgZmlyX2RtYV9yZWFkX21hc3Rlcl9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9maXJfZG1hL3JlYWRfbWFzdGVyIGdyYW50ZWQgZXh0X3NzcmFtL3MxIGxhc3QgdGltZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgbGFzdF9jeWNsZV9maXJfZG1hX3JlYWRfbWFzdGVyX2dyYW50ZWRfc2xhdmVfZXh0X3NzcmFtX3MxIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBsYXN0X2N5Y2xlX2Zpcl9kbWFfcmVhZF9tYXN0ZXJfZ3JhbnRlZF9zbGF2ZV9leHRfc3NyYW1fczEgPD0gZmlyX2RtYV9yZWFkX21hc3Rlcl9zYXZlZF9ncmFudF9leHRfc3NyYW1fczEgPyAxIDogKGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYml0cmF0aW9uX2hvbGRvZmZfaW50ZXJuYWwgfCAwKSA/IDAgOiBsYXN0X2N5Y2xlX2Zpcl9kbWFfcmVhZF9tYXN0ZXJfZ3JhbnRlZF9zbGF2ZV9leHRfc3NyYW1fczE7Ci0gICAgZW5kCi0KLQotICAvL2Zpcl9kbWFfcmVhZF9tYXN0ZXJfY29udGludWVyZXF1ZXN0IGNvbnRpbnVlZCByZXF1ZXN0LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZmlyX2RtYV9yZWFkX21hc3Rlcl9jb250aW51ZXJlcXVlc3QgPSBsYXN0X2N5Y2xlX2Zpcl9kbWFfcmVhZF9tYXN0ZXJfZ3JhbnRlZF9zbGF2ZV9leHRfc3NyYW1fczEgJiBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlcXVlc3RzX2V4dF9zc3JhbV9zMTsKLQotICAvL2V4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FueV9jb250aW51ZXJlcXVlc3QgYXQgbGVhc3Qgb25lIG1hc3RlciBjb250aW51ZXMgcmVxdWVzdGluZywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FueV9jb250aW51ZXJlcXVlc3QgPSBmaXJfZG1hX3JlYWRfbWFzdGVyX2NvbnRpbnVlcmVxdWVzdCB8Ci0gICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fY29udGludWVyZXF1ZXN0OwotCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczEgPSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZXF1ZXN0c19leHRfc3NyYW1fczEgJiB+KChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkICYgKGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX3dyaXRlX3BlbmRpbmcgfCAoZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfcmVhZF9wZW5kaW5nICYgISgoKCh8Y3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlclsxIDogMF0pIHwgKHxmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXJbMSA6IDBdKSkpKSkpKSB8ICgoZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfcmVhZF9wZW5kaW5nKSAmIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlKSB8IGZpcl9kbWFfcmVhZF9tYXN0ZXJfYXJiaXRlcmxvY2spOwotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXJfaW4gbXV4IGZvciByZWFkbGF0ZW5jeSBzaGlmdCByZWdpc3Rlciwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXJfaW4gPSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ncmFudGVkX2V4dF9zc3JhbV9zMSAmIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWQgJiB+ZXh0X3NzcmFtX3MxX3dhaXRzX2Zvcl9yZWFkOwotCi0gIC8vc2hpZnQgcmVnaXN0ZXIgcDEgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlciBpbiBpZiBmbHVzaCwgb3RoZXJ3aXNlIHNoaWZ0IGxlZnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMV9jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyID0ge2N1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXIsIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXJfaW59OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlciBmb3IgcmVtZW1iZXJpbmcgd2hpY2ggbWFzdGVyIGFza2VkIGZvciBhIGZpeGVkIGxhdGVuY3kgcmVhZCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlciA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlciA8PSBwMV9jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyOwotICAgIGVuZAotCi0KLSAgLy9sb2NhbCByZWFkZGF0YXZhbGlkIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxID0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlclszXTsKLQotICAvL2V4dF9zc3JhbV9idXNfZGF0YSByZWdpc3Rlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaW5jb21pbmdfZXh0X3NzcmFtX2J1c19kYXRhIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBpbmNvbWluZ19leHRfc3NyYW1fYnVzX2RhdGEgPD0gZXh0X3NzcmFtX2J1c19kYXRhOwotICAgIGVuZAotCi0KLSAgLy9leHRfc3NyYW1fczFfd2l0aF93cml0ZV9sYXRlbmN5IGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBleHRfc3NyYW1fczFfd2l0aF93cml0ZV9sYXRlbmN5ID0gaW5fYV93cml0ZV9jeWNsZSAmIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczEgfCBmaXJfZG1hX3JlYWRfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2V4dF9zc3JhbV9zMSk7Ci0KLSAgLy90aW1lIHRvIHdyaXRlIHRoZSBkYXRhLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gdGltZV90b193cml0ZSA9IChleHRfc3NyYW1fczFfd2l0aF93cml0ZV9sYXRlbmN5KT8gMSA6Ci0gICAgMDsKLQotICAvL2QxX291dGdvaW5nX2V4dF9zc3JhbV9idXNfZGF0YSByZWdpc3Rlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfb3V0Z29pbmdfZXh0X3NzcmFtX2J1c19kYXRhIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkMV9vdXRnb2luZ19leHRfc3NyYW1fYnVzX2RhdGEgPD0gb3V0Z29pbmdfZXh0X3NzcmFtX2J1c19kYXRhOwotICAgIGVuZAotCi0KLSAgLy93cml0ZSBjeWNsZSBkZWxheWVkIGJ5IDEsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX2luX2Ffd3JpdGVfY3ljbGUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX2luX2Ffd3JpdGVfY3ljbGUgPD0gdGltZV90b193cml0ZTsKLSAgICBlbmQKLQotCi0gIC8vZDFfb3V0Z29pbmdfZXh0X3NzcmFtX2J1c19kYXRhIHRyaXN0YXRlIGRyaXZlciwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGV4dF9zc3JhbV9idXNfZGF0YSA9IChkMV9pbl9hX3dyaXRlX2N5Y2xlKT8gZDFfb3V0Z29pbmdfZXh0X3NzcmFtX2J1c19kYXRhOnszMnsxJ2J6fX07Ci0KLSAgLy9vdXRnb2luZ19leHRfc3NyYW1fYnVzX2RhdGEgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gb3V0Z29pbmdfZXh0X3NzcmFtX2J1c19kYXRhID0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotCi0gIGFzc2lnbiBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlcXVlc3RzX2V4dF9zc3JhbV9zMSA9ICgoe2Zpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZVszMSA6IDIxXSAsIDIxJ2IwfSA9PSAzMidoNjAwMDAwMCkgJiAoZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkKSkgJiBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWQ7Ci0gIC8vY3VzdG9tX2RtYV9idXJzdF8wL2Rvd25zdHJlYW0gZ3JhbnRlZCBleHRfc3NyYW0vczEgbGFzdCB0aW1lLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBsYXN0X2N5Y2xlX2N1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2dyYW50ZWRfc2xhdmVfZXh0X3NzcmFtX3MxIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBsYXN0X2N5Y2xlX2N1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2dyYW50ZWRfc2xhdmVfZXh0X3NzcmFtX3MxIDw9IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3NhdmVkX2dyYW50X2V4dF9zc3JhbV9zMSA/IDEgOiAoZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYXJiaXRyYXRpb25faG9sZG9mZl9pbnRlcm5hbCB8IH5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZXF1ZXN0c19leHRfc3NyYW1fczEpID8gMCA6IGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9leHRfc3NyYW1fczE7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCA9IGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9leHRfc3NyYW1fczEgJiAxOwotCi0gIGFzc2lnbiBmaXJfZG1hX3JlYWRfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2V4dF9zc3JhbV9zMSA9IGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVxdWVzdHNfZXh0X3NzcmFtX3MxICYgfigoZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkICYgKGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX3dyaXRlX3BlbmRpbmcgfCAoZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfcmVhZF9wZW5kaW5nICYgISgoKCh8Y3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlclsxIDogMF0pIHwgKHxmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXJbMSA6IDBdKSkpKSkpKSB8IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FyYml0ZXJsb2NrKTsKLSAgLy9maXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXJfaW4gbXV4IGZvciByZWFkbGF0ZW5jeSBzaGlmdCByZWdpc3Rlciwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3Rlcl9pbiA9IGZpcl9kbWFfcmVhZF9tYXN0ZXJfZ3JhbnRlZF9leHRfc3NyYW1fczEgJiBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWQgJiB+ZXh0X3NzcmFtX3MxX3dhaXRzX2Zvcl9yZWFkOwotCi0gIC8vc2hpZnQgcmVnaXN0ZXIgcDEgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyIGluIGlmIGZsdXNoLCBvdGhlcndpc2Ugc2hpZnQgbGVmdCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX2Zpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlciA9IHtmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXIsIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3Rlcl9pbn07Ci0KLSAgLy9maXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXIgZm9yIHJlbWVtYmVyaW5nIHdoaWNoIG1hc3RlciBhc2tlZCBmb3IgYSBmaXhlZCBsYXRlbmN5IHJlYWQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlciA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyIDw9IHAxX2Zpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgICBlbmQKLQotCi0gIC8vbG9jYWwgcmVhZGRhdGF2YWxpZCBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczEgPSBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczFfc2hpZnRfcmVnaXN0ZXJbM107Ci0KLSAgLy9hbGxvdyBuZXcgYXJiIGN5Y2xlIGZvciBleHRfc3NyYW1fYnVzL2F2YWxvbl9zbGF2ZSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FsbG93X25ld19hcmJfY3ljbGUgPSB+Y3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYXJiaXRlcmxvY2sgJiB+ZmlyX2RtYV9yZWFkX21hc3Rlcl9hcmJpdGVybG9jazsKLQotICAvL2Zpcl9kbWEvcmVhZF9tYXN0ZXIgYXNzaWdubWVudCBpbnRvIG1hc3RlciBxdWFsaWZpZWQtcmVxdWVzdHMgdmVjdG9yIGZvciBleHRfc3NyYW0vczEsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9tYXN0ZXJfcXJlcV92ZWN0b3JbMF0gPSBmaXJfZG1hX3JlYWRfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2V4dF9zc3JhbV9zMTsKLQotICAvL2Zpcl9kbWEvcmVhZF9tYXN0ZXIgZ3JhbnQgZXh0X3NzcmFtL3MxLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZmlyX2RtYV9yZWFkX21hc3Rlcl9ncmFudGVkX2V4dF9zc3JhbV9zMSA9IGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2dyYW50X3ZlY3RvclswXTsKLQotICAvL2Zpcl9kbWEvcmVhZF9tYXN0ZXIgc2F2ZWQtZ3JhbnQgZXh0X3NzcmFtL3MxLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZmlyX2RtYV9yZWFkX21hc3Rlcl9zYXZlZF9ncmFudF9leHRfc3NyYW1fczEgPSBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJfd2lubmVyWzBdICYmIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVxdWVzdHNfZXh0X3NzcmFtX3MxOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8wL2Rvd25zdHJlYW0gYXNzaWdubWVudCBpbnRvIG1hc3RlciBxdWFsaWZpZWQtcmVxdWVzdHMgdmVjdG9yIGZvciBleHRfc3NyYW0vczEsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9tYXN0ZXJfcXJlcV92ZWN0b3JbMV0gPSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczE7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzAvZG93bnN0cmVhbSBncmFudCBleHRfc3NyYW0vczEsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ncmFudGVkX2V4dF9zc3JhbV9zMSA9IGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2dyYW50X3ZlY3RvclsxXTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMC9kb3duc3RyZWFtIHNhdmVkLWdyYW50IGV4dF9zc3JhbS9zMSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3NhdmVkX2dyYW50X2V4dF9zc3JhbV9zMSA9IGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl93aW5uZXJbMV07Ci0KLSAgLy9leHRfc3NyYW1fYnVzL2F2YWxvbl9zbGF2ZSBjaG9zZW4tbWFzdGVyIGRvdWJsZS12ZWN0b3IsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9jaG9zZW5fbWFzdGVyX2RvdWJsZV92ZWN0b3IgPSB7ZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfbWFzdGVyX3FyZXFfdmVjdG9yLCBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9tYXN0ZXJfcXJlcV92ZWN0b3J9ICYgKHt+ZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfbWFzdGVyX3FyZXFfdmVjdG9yLCB+ZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfbWFzdGVyX3FyZXFfdmVjdG9yfSArIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl9hZGRlbmQpOwotCi0gIC8vc3RhYmxlIG9uZWhvdCBlbmNvZGluZyBvZiBhcmIgd2lubmVyCi0gIGFzc2lnbiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJfd2lubmVyID0gKGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FsbG93X25ld19hcmJfY3ljbGUgJiB8IGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2dyYW50X3ZlY3RvcikgPyBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9ncmFudF92ZWN0b3IgOiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9zYXZlZF9jaG9zZW5fbWFzdGVyX3ZlY3RvcjsKLQotICAvL3NhdmVkIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2dyYW50X3ZlY3Rvciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfc2F2ZWRfY2hvc2VuX21hc3Rlcl92ZWN0b3IgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FsbG93X25ld19hcmJfY3ljbGUpCi0gICAgICAgICAgZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfc2F2ZWRfY2hvc2VuX21hc3Rlcl92ZWN0b3IgPD0gfGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2dyYW50X3ZlY3RvciA/IGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2dyYW50X3ZlY3RvciA6IGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX3NhdmVkX2Nob3Nlbl9tYXN0ZXJfdmVjdG9yOwotICAgIGVuZAotCi0KLSAgLy9vbmVob3QgZW5jb2Rpbmcgb2YgY2hvc2VuIG1hc3RlcgotICBhc3NpZ24gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZ3JhbnRfdmVjdG9yID0geyhleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9jaG9zZW5fbWFzdGVyX2RvdWJsZV92ZWN0b3JbMV0gfCBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9jaG9zZW5fbWFzdGVyX2RvdWJsZV92ZWN0b3JbM10pLAotICAgIChleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9jaG9zZW5fbWFzdGVyX2RvdWJsZV92ZWN0b3JbMF0gfCBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9jaG9zZW5fbWFzdGVyX2RvdWJsZV92ZWN0b3JbMl0pfTsKLQotICAvL2V4dF9zc3JhbV9idXMvYXZhbG9uX3NsYXZlIGNob3NlbiBtYXN0ZXIgcm90YXRlZCBsZWZ0LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfY2hvc2VuX21hc3Rlcl9yb3RfbGVmdCA9IChleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJfd2lubmVyIDw8IDEpID8gKGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl93aW5uZXIgPDwgMSkgOiAxOwotCi0gIC8vZXh0X3NzcmFtX2J1cy9hdmFsb25fc2xhdmUncyBhZGRlbmQgZm9yIG5leHQtbWFzdGVyLWdyYW50Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJfYWRkZW5kIDw9IDE7Ci0gICAgICBlbHNlIGlmICh8ZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZ3JhbnRfdmVjdG9yKQotICAgICAgICAgIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2FyYl9hZGRlbmQgPD0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZW5kX3hmZXI/IGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2Nob3Nlbl9tYXN0ZXJfcm90X2xlZnQgOiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9ncmFudF92ZWN0b3I7Ci0gICAgZW5kCi0KLQotICAvL35hZHNjX25fdG9fdGhlX2V4dF9zc3JhbSBvZiB0eXBlIGJlZ2ludHJhbnNmZXIgdG8gfnAxX2Fkc2Nfbl90b190aGVfZXh0X3NzcmFtLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBhZHNjX25fdG9fdGhlX2V4dF9zc3JhbSA8PSB+MDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGFkc2Nfbl90b190aGVfZXh0X3NzcmFtIDw9IHAxX2Fkc2Nfbl90b190aGVfZXh0X3NzcmFtOwotICAgIGVuZAotCi0KLSAgYXNzaWduIHAxX2Fkc2Nfbl90b190aGVfZXh0X3NzcmFtID0gfmV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2JlZ2luc194ZmVyOwotICAvL35vdXRwdXRlbmFibGVfbl90b190aGVfZXh0X3NzcmFtIG9mIHR5cGUgb3V0cHV0ZW5hYmxlIHRvIH5wMV9vdXRwdXRlbmFibGVfbl90b190aGVfZXh0X3NzcmFtLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBvdXRwdXRlbmFibGVfbl90b190aGVfZXh0X3NzcmFtIDw9IH4wOwotICAgICAgZWxzZSAKLSAgICAgICAgb3V0cHV0ZW5hYmxlX25fdG9fdGhlX2V4dF9zc3JhbSA8PSBwMV9vdXRwdXRlbmFibGVfbl90b190aGVfZXh0X3NzcmFtOwotICAgIGVuZAotCi0KLSAgLy9+cDFfb3V0cHV0ZW5hYmxlX25fdG9fdGhlX2V4dF9zc3JhbSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfb3V0cHV0ZW5hYmxlX25fdG9fdGhlX2V4dF9zc3JhbSA9IH4oKHxjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyWzEgOiAwXSkgfCAofGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlclsxIDogMF0pIHwgZXh0X3NzcmFtX3MxX2luX2FfcmVhZF9jeWNsZSk7Ci0KLSAgYXNzaWduIHAxX2NoaXBlbmFibGUxX25fdG9fdGhlX2V4dF9zc3JhbSA9IH4oY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZ3JhbnRlZF9leHRfc3NyYW1fczEgfCBmaXJfZG1hX3JlYWRfbWFzdGVyX2dyYW50ZWRfZXh0X3NzcmFtX3MxIHwgKHxjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyWzEgOiAwXSkgfCAofGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMV9zaGlmdF9yZWdpc3RlclsxIDogMF0pKTsKLSAgLy9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9maXJzdHRyYW5zZmVyIGZpcnN0IHRyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZmlyc3R0cmFuc2ZlciA9IGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2JlZ2luc194ZmVyID8gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfdW5yZWdfZmlyc3R0cmFuc2ZlciA6IGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX3JlZ19maXJzdHRyYW5zZmVyOwotCi0gIC8vZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfdW5yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX3VucmVnX2ZpcnN0dHJhbnNmZXIgPSB+KGV4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hbnlfY29udGludWVyZXF1ZXN0KTsKLQotICAvL2V4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX3JlZ19maXJzdHRyYW5zZmVyIGZpcnN0IHRyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9yZWdfZmlyc3R0cmFuc2ZlciA8PSAxJ2IxOwotICAgICAgZWxzZSBpZiAoZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYmVnaW5zX3hmZXIpCi0gICAgICAgICAgZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfcmVnX2ZpcnN0dHJhbnNmZXIgPD0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgICBlbmQKLQotCi0gIC8vZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsIGJlZ2luIGJ1cnN0IHRyYW5zZmVyLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsID0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYmVnaW5zX3hmZXI7Ci0KLSAgLy9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJpdHJhdGlvbl9ob2xkb2ZmX2ludGVybmFsIGFyYml0cmF0aW9uX2hvbGRvZmYsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJpdHJhdGlvbl9ob2xkb2ZmX2ludGVybmFsID0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfYmVnaW5zX3hmZXIgJiBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9maXJzdHRyYW5zZmVyOwotCi0gIC8vfmJ3ZV9uX3RvX3RoZV9leHRfc3NyYW0gb2YgdHlwZSB3cml0ZSB0byB+cDFfYndlX25fdG9fdGhlX2V4dF9zc3JhbSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgYndlX25fdG9fdGhlX2V4dF9zc3JhbSA8PSB+MDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGJ3ZV9uX3RvX3RoZV9leHRfc3NyYW0gPD0gcDFfYndlX25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgICBlbmQKLQotCi0gIC8vfmJ3X25fdG9fdGhlX2V4dF9zc3JhbSBvZiB0eXBlIGJ5dGVlbmFibGUgdG8gfnAxX2J3X25fdG9fdGhlX2V4dF9zc3JhbSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgYndfbl90b190aGVfZXh0X3NzcmFtIDw9IH4wOwotICAgICAgZWxzZSAKLSAgICAgICAgYndfbl90b190aGVfZXh0X3NzcmFtIDw9IHAxX2J3X25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgICBlbmQKLQotCi0gIC8vfnAxX2J3ZV9uX3RvX3RoZV9leHRfc3NyYW0gYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX2J3ZV9uX3RvX3RoZV9leHRfc3NyYW0gPSB+KGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2dyYW50ZWRfZXh0X3NzcmFtX3MxICYgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd3JpdGUpOwotCi0gIC8vZXh0X3NzcmFtX2J1c19hZGRyZXNzIG9mIHR5cGUgYWRkcmVzcyB0byBwMV9leHRfc3NyYW1fYnVzX2FkZHJlc3MsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGV4dF9zc3JhbV9idXNfYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZXh0X3NzcmFtX2J1c19hZGRyZXNzIDw9IHAxX2V4dF9zc3JhbV9idXNfYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIC8vcDFfZXh0X3NzcmFtX2J1c19hZGRyZXNzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX2V4dF9zc3JhbV9idXNfYWRkcmVzcyA9IChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ncmFudGVkX2V4dF9zc3JhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUgOgotICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZTsKLQotICAvL2QxX2V4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2VuZF94ZmVyIHJlZ2lzdGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9lbmRfeGZlciA8PSAxOwotICAgICAgZWxzZSAKLSAgICAgICAgZDFfZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZW5kX3hmZXIgPD0gZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICAvL2V4dF9zc3JhbV9zMV93YWl0c19mb3JfcmVhZCBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZXh0X3NzcmFtX3MxX3dhaXRzX2Zvcl9yZWFkID0gZXh0X3NzcmFtX3MxX2luX2FfcmVhZF9jeWNsZSAmIDA7Ci0KLSAgLy9leHRfc3NyYW1fczFfaW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBleHRfc3NyYW1fczFfaW5fYV9yZWFkX2N5Y2xlID0gKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2dyYW50ZWRfZXh0X3NzcmFtX3MxICYgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZCkgfCAoZmlyX2RtYV9yZWFkX21hc3Rlcl9ncmFudGVkX2V4dF9zc3JhbV9zMSAmIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZCk7Ci0KLSAgLy9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGluX2FfcmVhZF9jeWNsZSA9IGV4dF9zc3JhbV9zMV9pbl9hX3JlYWRfY3ljbGU7Ci0KLSAgLy9leHRfc3NyYW1fczFfd2FpdHNfZm9yX3dyaXRlIGluIGEgY3ljbGUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBleHRfc3NyYW1fczFfd2FpdHNfZm9yX3dyaXRlID0gZXh0X3NzcmFtX3MxX2luX2Ffd3JpdGVfY3ljbGUgJiAwOwotCi0gIC8vZXh0X3NzcmFtX3MxX2luX2Ffd3JpdGVfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGV4dF9zc3JhbV9zMV9pbl9hX3dyaXRlX2N5Y2xlID0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZ3JhbnRlZF9leHRfc3NyYW1fczEgJiBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZTsKLQotICAvL2luX2Ffd3JpdGVfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGluX2Ffd3JpdGVfY3ljbGUgPSBleHRfc3NyYW1fczFfaW5fYV93cml0ZV9jeWNsZTsKLQotICBhc3NpZ24gd2FpdF9mb3JfZXh0X3NzcmFtX3MxX2NvdW50ZXIgPSAwOwotICAvL35wMV9id19uX3RvX3RoZV9leHRfc3NyYW0gYnl0ZSBlbmFibGUgcG9ydCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwMV9id19uX3RvX3RoZV9leHRfc3NyYW0gPSB+KChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ncmFudGVkX2V4dF9zc3JhbV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J5dGVlbmFibGUgOgotICAgIC0xKTsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvL2V4dF9zc3JhbS9zMSBlbmFibGUgbm9uLXplcm8gYXNzZXJ0aW9ucywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAxJ2IxOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzAvZG93bnN0cmVhbSBub24temVybyBhcmJpdHJhdGlvbnNoYXJlIGFzc2VydGlvbiwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVxdWVzdHNfZXh0X3NzcmFtX3MxICYmIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlID09IDApICYmIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfMC9kb3duc3RyZWFtIGRyb3ZlIDAgb24gaXRzICdhcmJpdHJhdGlvbnNoYXJlJyBwb3J0IHdoaWxlIGFjY2Vzc2luZyBzbGF2ZSBleHRfc3NyYW0vczEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzAvZG93bnN0cmVhbSBub24temVybyBidXJzdGNvdW50IGFzc2VydGlvbiwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVxdWVzdHNfZXh0X3NzcmFtX3MxICYmIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9idXJzdGNvdW50ID09IDApICYmIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfMC9kb3duc3RyZWFtIGRyb3ZlIDAgb24gaXRzICdidXJzdGNvdW50JyBwb3J0IHdoaWxlIGFjY2Vzc2luZyBzbGF2ZSBleHRfc3NyYW0vczEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9ncmFudCBzaWduYWxzIGFyZSBhY3RpdmUgc2ltdWx0YW5lb3VzbHksIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2dyYW50ZWRfZXh0X3NzcmFtX3MxICsgZmlyX2RtYV9yZWFkX21hc3Rlcl9ncmFudGVkX2V4dF9zc3JhbV9zMSA+IDEpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6ID4gMSBvZiBncmFudCBzaWduYWxzIGFyZSBhY3RpdmUgc2ltdWx0YW5lb3VzbHkiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9zYXZlZF9ncmFudCBzaWduYWxzIGFyZSBhY3RpdmUgc2ltdWx0YW5lb3VzbHksIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3NhdmVkX2dyYW50X2V4dF9zc3JhbV9zMSArIGZpcl9kbWFfcmVhZF9tYXN0ZXJfc2F2ZWRfZ3JhbnRfZXh0X3NzcmFtX3MxID4gMSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogPiAxIG9mIHNhdmVkX2dyYW50IHNpZ25hbHMgYXJlIGFjdGl2ZSBzaW11bHRhbmVvdXNseSIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBleHRfc3NyYW1fYnVzX2JyaWRnZV9hcmJpdHJhdG9yIAotOwotCi0KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGZpcl9kbWFfY29udHJvbF9hcmJpdHJhdG9yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX2lycSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX2Zpcl9kbWFfY29udHJvbF9lbmRfeGZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfaXJxX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX3JlYWRkYXRhX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX3Jlc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcl9kbWFfY29udHJvbF93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2Zpcl9kbWFfY29udHJvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfZmlyX2RtYV9jb250cm9sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfZmlyX2RtYV9jb250cm9sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19maXJfZG1hX2NvbnRyb2wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBkMV9maXJfZG1hX2NvbnRyb2xfZW5kX3hmZXI7Ci0gIG91dHB1dCAgWyAgMjogMF0gZmlyX2RtYV9jb250cm9sX2FkZHJlc3M7Ci0gIG91dHB1dCAgWyAgMzogMF0gZmlyX2RtYV9jb250cm9sX2J5dGVlbmFibGU7Ci0gIG91dHB1dCAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX2lycV9mcm9tX3NhOwotICBvdXRwdXQgICAgICAgICAgIGZpcl9kbWFfY29udHJvbF9yZWFkOwotICBvdXRwdXQgIFsgMzE6IDBdIGZpcl9kbWFfY29udHJvbF9yZWFkZGF0YV9mcm9tX3NhOwotICBvdXRwdXQgICAgICAgICAgIGZpcl9kbWFfY29udHJvbF9yZXNldDsKLSAgb3V0cHV0ICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gZmlyX2RtYV9jb250cm9sX3dyaXRlZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9maXJfZG1hX2NvbnRyb2w7Ci0gIG91dHB1dCAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2Zpcl9kbWFfY29udHJvbDsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2Zpcl9kbWFfY29udHJvbDsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfZmlyX2RtYV9jb250cm9sOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfaXJxOwotICBpbnB1dCAgIFsgMzE6IDBdIGZpcl9kbWFfY29udHJvbF9yZWFkZGF0YTsKLSAgaW5wdXQgICBbIDExOiAwXSBwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZTsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSBwaXBlbGluZV9icmlkZ2VfbTFfYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdDsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0KLSAgcmVnICAgICAgICAgICAgICBkMV9maXJfZG1hX2NvbnRyb2xfZW5kX3hmZXI7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfcmVhc29uc190b193YWl0OwotICByZWcgICAgICAgICAgICAgIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnM7Ci0gIHdpcmUgICAgICAgICAgICAgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9maXJfZG1hX2NvbnRyb2w7Ci0gIHdpcmUgICAgWyAgMjogMF0gZmlyX2RtYV9jb250cm9sX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX2FsbGdyYW50czsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfYWxsb3dfbmV3X2FyYl9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudDsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfYW55X2NvbnRpbnVlcmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfYXJiX2NvdW50ZXJfZW5hYmxlOwotICByZWcgICAgICAgICAgICAgIGZpcl9kbWFfY29udHJvbF9hcmJfc2hhcmVfY291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfYXJiX3NoYXJlX3NldF92YWx1ZXM7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbDsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfYmVnaW5zX3hmZXI7Ci0gIHdpcmUgICAgWyAgMzogMF0gZmlyX2RtYV9jb250cm9sX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX2VuZF94ZmVyOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfY29udHJvbF9maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfY29udHJvbF9ncmFudF92ZWN0b3I7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX2luX2FfcmVhZF9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfaW5fYV93cml0ZV9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfaXJxX2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX21hc3Rlcl9xcmVxX3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0czsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfcmVhZDsKLSAgd2lyZSAgICBbIDMxOiAwXSBmaXJfZG1hX2NvbnRyb2xfcmVhZGRhdGFfZnJvbV9zYTsKLSAgcmVnICAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfcmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX3Jlc2V0OwotICByZWcgICAgICAgICAgICAgIGZpcl9kbWFfY29udHJvbF9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfY29udHJvbF9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMjsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfd2FpdHNfZm9yX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX3dhaXRzX2Zvcl93cml0ZTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gZmlyX2RtYV9jb250cm9sX3dyaXRlZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBpbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV93cml0ZV9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9waXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2Zpcl9kbWFfY29udHJvbF9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2Zpcl9kbWFfY29udHJvbDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfZmlyX2RtYV9jb250cm9sOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfZmlyX2RtYV9jb250cm9sOwotICByZWcgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfZmlyX2RtYV9jb250cm9sX3NoaWZ0X3JlZ2lzdGVyOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfZmlyX2RtYV9jb250cm9sX3NoaWZ0X3JlZ2lzdGVyX2luOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19maXJfZG1hX2NvbnRyb2w7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3NhdmVkX2dyYW50X2Zpcl9kbWFfY29udHJvbDsKLSAgd2lyZSAgICBbIDExOiAwXSBzaGlmdGVkX2FkZHJlc3NfdG9fZmlyX2RtYV9jb250cm9sX2Zyb21fcGlwZWxpbmVfYnJpZGdlX20xOwotICB3aXJlICAgICAgICAgICAgIHdhaXRfZm9yX2Zpcl9kbWFfY29udHJvbF9jb3VudGVyOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfcmVhc29uc190b193YWl0IDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gfmZpcl9kbWFfY29udHJvbF9lbmRfeGZlcjsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBmaXJfZG1hX2NvbnRyb2xfYmVnaW5zX3hmZXIgPSB+ZDFfcmVhc29uc190b193YWl0ICYgKChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfZmlyX2RtYV9jb250cm9sKSk7Ci0gIC8vYXNzaWduIGZpcl9kbWFfY29udHJvbF9yZWFkZGF0YV9mcm9tX3NhID0gZmlyX2RtYV9jb250cm9sX3JlYWRkYXRhIHNvIHRoYXQgc3ltYm9sIGtub3dzIHdoZXJlIHRvIGdyb3VwIHNpZ25hbHMgd2hpY2ggbWF5IGdvIHRvIG1hc3RlciBvbmx5LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZmlyX2RtYV9jb250cm9sX3JlYWRkYXRhX2Zyb21fc2EgPSBmaXJfZG1hX2NvbnRyb2xfcmVhZGRhdGE7Ci0KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19maXJfZG1hX2NvbnRyb2wgPSAoe3BpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlWzExIDogNV0gLCA1J2IwfSA9PSAxMidoODQwKSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0OwotICAvL2Zpcl9kbWFfY29udHJvbF9hcmJfc2hhcmVfY291bnRlciBzZXQgdmFsdWVzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZmlyX2RtYV9jb250cm9sX2FyYl9zaGFyZV9zZXRfdmFsdWVzID0gMTsKLQotICAvL2Zpcl9kbWFfY29udHJvbF9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGZpcl9kbWFfY29udHJvbF9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzID0gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2Zpcl9kbWFfY29udHJvbDsKLQotICAvL2Zpcl9kbWFfY29udHJvbF9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50IG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGZpcl9kbWFfY29udHJvbF9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50ID0gMDsKLQotICAvL2Zpcl9kbWFfY29udHJvbF9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBmaXJfZG1hX2NvbnRyb2xfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZSA9IGZpcl9kbWFfY29udHJvbF9maXJzdHRyYW5zZmVyID8gKGZpcl9kbWFfY29udHJvbF9hcmJfc2hhcmVfc2V0X3ZhbHVlcyAtIDEpIDogfGZpcl9kbWFfY29udHJvbF9hcmJfc2hhcmVfY291bnRlciA/IChmaXJfZG1hX2NvbnRyb2xfYXJiX3NoYXJlX2NvdW50ZXIgLSAxKSA6IDA7Ci0KLSAgLy9maXJfZG1hX2NvbnRyb2xfYWxsZ3JhbnRzIGFsbCBzbGF2ZSBncmFudHMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBmaXJfZG1hX2NvbnRyb2xfYWxsZ3JhbnRzID0gfGZpcl9kbWFfY29udHJvbF9ncmFudF92ZWN0b3I7Ci0KLSAgLy9maXJfZG1hX2NvbnRyb2xfZW5kX3hmZXIgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGZpcl9kbWFfY29udHJvbF9lbmRfeGZlciA9IH4oZmlyX2RtYV9jb250cm9sX3dhaXRzX2Zvcl9yZWFkIHwgZmlyX2RtYV9jb250cm9sX3dhaXRzX2Zvcl93cml0ZSk7Ci0KLSAgLy9lbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2Zpcl9kbWFfY29udHJvbCBhcmIgc2hhcmUgY291bnRlciBlbmFibGUgdGVybSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fZmlyX2RtYV9jb250cm9sID0gZmlyX2RtYV9jb250cm9sX2VuZF94ZmVyICYgKH5maXJfZG1hX2NvbnRyb2xfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCB8IGluX2FfcmVhZF9jeWNsZSB8IGluX2Ffd3JpdGVfY3ljbGUpOwotCi0gIC8vZmlyX2RtYV9jb250cm9sX2FyYl9zaGFyZV9jb3VudGVyIGFyYml0cmF0aW9uIGNvdW50ZXIgZW5hYmxlLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZmlyX2RtYV9jb250cm9sX2FyYl9jb3VudGVyX2VuYWJsZSA9IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2Zpcl9kbWFfY29udHJvbCAmIGZpcl9kbWFfY29udHJvbF9hbGxncmFudHMpIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fZmlyX2RtYV9jb250cm9sICYgfmZpcl9kbWFfY29udHJvbF9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKTsKLQotICAvL2Zpcl9kbWFfY29udHJvbF9hcmJfc2hhcmVfY291bnRlciBjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfYXJiX3NoYXJlX2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGZpcl9kbWFfY29udHJvbF9hcmJfY291bnRlcl9lbmFibGUpCi0gICAgICAgICAgZmlyX2RtYV9jb250cm9sX2FyYl9zaGFyZV9jb3VudGVyIDw9IGZpcl9kbWFfY29udHJvbF9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICAgIGVuZAotCi0KLSAgLy9maXJfZG1hX2NvbnRyb2xfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSAwOwotICAgICAgZWxzZSBpZiAoKHxmaXJfZG1hX2NvbnRyb2xfbWFzdGVyX3FyZXFfdmVjdG9yICYgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9maXJfZG1hX2NvbnRyb2wpIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fZmlyX2RtYV9jb250cm9sICYgfmZpcl9kbWFfY29udHJvbF9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKSkKLSAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSB8ZmlyX2RtYV9jb250cm9sX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gICAgZW5kCi0KLQotICAvL3BpcGVsaW5lX2JyaWRnZS9tMSBmaXJfZG1hL2NvbnRyb2wgYXJiaXRlcmxvY2ssIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfYXJiaXRlcmxvY2sgPSBmaXJfZG1hX2NvbnRyb2xfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9maXJfZG1hX2NvbnRyb2xfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgc2xhdmUgZW5hYmxlcyBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBmaXJfZG1hX2NvbnRyb2xfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgPSB8ZmlyX2RtYV9jb250cm9sX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2UvbTEgZmlyX2RtYS9jb250cm9sIGFyYml0ZXJsb2NrMiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9hcmJpdGVybG9jazIgPSBmaXJfZG1hX2NvbnRyb2xfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgJiBwaXBlbGluZV9icmlkZ2VfbTFfY29udGludWVyZXF1ZXN0OwotCi0gIC8vZmlyX2RtYV9jb250cm9sX2FueV9jb250aW51ZXJlcXVlc3QgYXQgbGVhc3Qgb25lIG1hc3RlciBjb250aW51ZXMgcmVxdWVzdGluZywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGZpcl9kbWFfY29udHJvbF9hbnlfY29udGludWVyZXF1ZXN0ID0gMTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3QgY29udGludWVkIHJlcXVlc3QsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfY29udGludWVyZXF1ZXN0ID0gMTsKLQotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2Zpcl9kbWFfY29udHJvbCA9IHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19maXJfZG1hX2NvbnRyb2wgJiB+KCgocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkgJiAoKDEgPCBwaXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyKSkpKTsKLSAgLy9waXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2Zpcl9kbWFfY29udHJvbF9zaGlmdF9yZWdpc3Rlcl9pbiBtdXggZm9yIHJlYWRsYXRlbmN5IHNoaWZ0IHJlZ2lzdGVyLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2xfc2hpZnRfcmVnaXN0ZXJfaW4gPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9maXJfZG1hX2NvbnRyb2wgJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkgJiB+ZmlyX2RtYV9jb250cm9sX3dhaXRzX2Zvcl9yZWFkOwotCi0gIC8vc2hpZnQgcmVnaXN0ZXIgcDEgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2xfc2hpZnRfcmVnaXN0ZXIgaW4gaWYgZmx1c2gsIG90aGVyd2lzZSBzaGlmdCBsZWZ0LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2xfc2hpZnRfcmVnaXN0ZXIgPSB7cGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2xfc2hpZnRfcmVnaXN0ZXIsIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfZmlyX2RtYV9jb250cm9sX3NoaWZ0X3JlZ2lzdGVyX2lufTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfZmlyX2RtYV9jb250cm9sX3NoaWZ0X3JlZ2lzdGVyIGZvciByZW1lbWJlcmluZyB3aGljaCBtYXN0ZXIgYXNrZWQgZm9yIGEgZml4ZWQgbGF0ZW5jeSByZWFkLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2Zpcl9kbWFfY29udHJvbF9zaGlmdF9yZWdpc3RlciA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2xfc2hpZnRfcmVnaXN0ZXIgPD0gcDFfcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2xfc2hpZnRfcmVnaXN0ZXI7Ci0gICAgZW5kCi0KLQotICAvL2xvY2FsIHJlYWRkYXRhdmFsaWQgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2wsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2Zpcl9kbWFfY29udHJvbCA9IHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfZmlyX2RtYV9jb250cm9sX3NoaWZ0X3JlZ2lzdGVyOwotCi0gIC8vZmlyX2RtYV9jb250cm9sX3dyaXRlZGF0YSBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBmaXJfZG1hX2NvbnRyb2xfd3JpdGVkYXRhID0gcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YTsKLQotICAvL21hc3RlciBpcyBhbHdheXMgZ3JhbnRlZCB3aGVuIHJlcXVlc3RlZAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfZmlyX2RtYV9jb250cm9sID0gcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2Zpcl9kbWFfY29udHJvbDsKLQotICAvL3BpcGVsaW5lX2JyaWRnZS9tMSBzYXZlZC1ncmFudCBmaXJfZG1hL2NvbnRyb2wsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfc2F2ZWRfZ3JhbnRfZmlyX2RtYV9jb250cm9sID0gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2Zpcl9kbWFfY29udHJvbDsKLQotICAvL2FsbG93IG5ldyBhcmIgY3ljbGUgZm9yIGZpcl9kbWEvY29udHJvbCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGZpcl9kbWFfY29udHJvbF9hbGxvd19uZXdfYXJiX2N5Y2xlID0gMTsKLQotICAvL3BsYWNlaG9sZGVyIGNob3NlbiBtYXN0ZXIKLSAgYXNzaWduIGZpcl9kbWFfY29udHJvbF9ncmFudF92ZWN0b3IgPSAxOwotCi0gIC8vcGxhY2Vob2xkZXIgdmVjdG9yIG9mIG1hc3RlciBxdWFsaWZpZWQtcmVxdWVzdHMKLSAgYXNzaWduIGZpcl9kbWFfY29udHJvbF9tYXN0ZXJfcXJlcV92ZWN0b3IgPSAxOwotCi0gIC8vfmZpcl9kbWFfY29udHJvbF9yZXNldCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZmlyX2RtYV9jb250cm9sX3Jlc2V0ID0gfnJlc2V0X247Ci0KLSAgLy9maXJfZG1hX2NvbnRyb2xfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGZpcl9kbWFfY29udHJvbF9maXJzdHRyYW5zZmVyID0gZmlyX2RtYV9jb250cm9sX2JlZ2luc194ZmVyID8gZmlyX2RtYV9jb250cm9sX3VucmVnX2ZpcnN0dHJhbnNmZXIgOiBmaXJfZG1hX2NvbnRyb2xfcmVnX2ZpcnN0dHJhbnNmZXI7Ci0KLSAgLy9maXJfZG1hX2NvbnRyb2xfdW5yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGZpcl9kbWFfY29udHJvbF91bnJlZ19maXJzdHRyYW5zZmVyID0gfihmaXJfZG1hX2NvbnRyb2xfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGZpcl9kbWFfY29udHJvbF9hbnlfY29udGludWVyZXF1ZXN0KTsKLQotICAvL2Zpcl9kbWFfY29udHJvbF9yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZmlyX2RtYV9jb250cm9sX3JlZ19maXJzdHRyYW5zZmVyIDw9IDEnYjE7Ci0gICAgICBlbHNlIGlmIChmaXJfZG1hX2NvbnRyb2xfYmVnaW5zX3hmZXIpCi0gICAgICAgICAgZmlyX2RtYV9jb250cm9sX3JlZ19maXJzdHRyYW5zZmVyIDw9IGZpcl9kbWFfY29udHJvbF91bnJlZ19maXJzdHRyYW5zZmVyOwotICAgIGVuZAotCi0KLSAgLy9maXJfZG1hX2NvbnRyb2xfYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsIGJlZ2luIGJ1cnN0IHRyYW5zZmVyLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZmlyX2RtYV9jb250cm9sX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCA9IGZpcl9kbWFfY29udHJvbF9iZWdpbnNfeGZlcjsKLQotICAvL2Zpcl9kbWFfY29udHJvbF9yZWFkIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBmaXJfZG1hX2NvbnRyb2xfcmVhZCA9IHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2Zpcl9kbWFfY29udHJvbCAmIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KTsKLQotICAvL2Zpcl9kbWFfY29udHJvbF93cml0ZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZmlyX2RtYV9jb250cm9sX3dyaXRlID0gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfZmlyX2RtYV9jb250cm9sICYgKHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KTsKLQotICBhc3NpZ24gc2hpZnRlZF9hZGRyZXNzX3RvX2Zpcl9kbWFfY29udHJvbF9mcm9tX3BpcGVsaW5lX2JyaWRnZV9tMSA9IHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlOwotICAvL2Zpcl9kbWFfY29udHJvbF9hZGRyZXNzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGZpcl9kbWFfY29udHJvbF9hZGRyZXNzID0gc2hpZnRlZF9hZGRyZXNzX3RvX2Zpcl9kbWFfY29udHJvbF9mcm9tX3BpcGVsaW5lX2JyaWRnZV9tMSA+PiAyOwotCi0gIC8vZDFfZmlyX2RtYV9jb250cm9sX2VuZF94ZmVyIHJlZ2lzdGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9maXJfZG1hX2NvbnRyb2xfZW5kX3hmZXIgPD0gMTsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX2Zpcl9kbWFfY29udHJvbF9lbmRfeGZlciA8PSBmaXJfZG1hX2NvbnRyb2xfZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICAvL2Zpcl9kbWFfY29udHJvbF93YWl0c19mb3JfcmVhZCBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZmlyX2RtYV9jb250cm9sX3dhaXRzX2Zvcl9yZWFkID0gZmlyX2RtYV9jb250cm9sX2luX2FfcmVhZF9jeWNsZSAmIDA7Ci0KLSAgLy9maXJfZG1hX2NvbnRyb2xfaW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBmaXJfZG1hX2NvbnRyb2xfaW5fYV9yZWFkX2N5Y2xlID0gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfZmlyX2RtYV9jb250cm9sICYgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpOwotCi0gIC8vaW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBpbl9hX3JlYWRfY3ljbGUgPSBmaXJfZG1hX2NvbnRyb2xfaW5fYV9yZWFkX2N5Y2xlOwotCi0gIC8vZmlyX2RtYV9jb250cm9sX3dhaXRzX2Zvcl93cml0ZSBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZmlyX2RtYV9jb250cm9sX3dhaXRzX2Zvcl93cml0ZSA9IGZpcl9kbWFfY29udHJvbF9pbl9hX3dyaXRlX2N5Y2xlICYgMDsKLQotICAvL2Zpcl9kbWFfY29udHJvbF9pbl9hX3dyaXRlX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBmaXJfZG1hX2NvbnRyb2xfaW5fYV93cml0ZV9jeWNsZSA9IHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2Zpcl9kbWFfY29udHJvbCAmIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCk7Ci0KLSAgLy9pbl9hX3dyaXRlX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBpbl9hX3dyaXRlX2N5Y2xlID0gZmlyX2RtYV9jb250cm9sX2luX2Ffd3JpdGVfY3ljbGU7Ci0KLSAgYXNzaWduIHdhaXRfZm9yX2Zpcl9kbWFfY29udHJvbF9jb3VudGVyID0gMDsKLSAgLy9maXJfZG1hX2NvbnRyb2xfYnl0ZWVuYWJsZSBieXRlIGVuYWJsZSBwb3J0IG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGZpcl9kbWFfY29udHJvbF9ieXRlZW5hYmxlID0gKHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2Zpcl9kbWFfY29udHJvbCk/IHBpcGVsaW5lX2JyaWRnZV9tMV9ieXRlZW5hYmxlIDoKLSAgICAtMTsKLQotICAvL2Fzc2lnbiBmaXJfZG1hX2NvbnRyb2xfaXJxX2Zyb21fc2EgPSBmaXJfZG1hX2NvbnRyb2xfaXJxIHNvIHRoYXQgc3ltYm9sIGtub3dzIHdoZXJlIHRvIGdyb3VwIHNpZ25hbHMgd2hpY2ggbWF5IGdvIHRvIG1hc3RlciBvbmx5LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZmlyX2RtYV9jb250cm9sX2lycV9mcm9tX3NhID0gZmlyX2RtYV9jb250cm9sX2lycTsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvL2Zpcl9kbWEvY29udHJvbCBlbmFibGUgbm9uLXplcm8gYXNzZXJ0aW9ucywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAxJ2IxOwotICAgIGVuZAotCi0KLSAgLy9waXBlbGluZV9icmlkZ2UvbTEgbm9uLXplcm8gYnVyc3Rjb3VudCBhc3NlcnRpb24sIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19maXJfZG1hX2NvbnRyb2wgJiYgKHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50ID09IDApICYmIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IHBpcGVsaW5lX2JyaWRnZS9tMSBkcm92ZSAwIG9uIGl0cyAnYnVyc3Rjb3VudCcgcG9ydCB3aGlsZSBhY2Nlc3Npbmcgc2xhdmUgZmlyX2RtYS9jb250cm9sIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGZpcl9kbWFfcmVhZF9tYXN0ZXJfYXJiaXRyYXRvciAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX2V4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9ncmFudGVkX2V4dF9zc3JhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlcXVlc3RzX2V4dF9zc3JhbV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jb21pbmdfZXh0X3NzcmFtX2J1c19kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3dhaXRyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgMzE6IDBdIGZpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZTsKLSAgb3V0cHV0ICBbICAyOiAwXSBmaXJfZG1hX3JlYWRfbWFzdGVyX2xhdGVuY3lfY291bnRlcjsKLSAgb3V0cHV0ICBbIDMxOiAwXSBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRkYXRhOwotICBvdXRwdXQgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZGRhdGF2YWxpZDsKLSAgb3V0cHV0ICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICAgICAgICAgICBkMV9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9lbmRfeGZlcjsKLSAgaW5wdXQgICBbIDMxOiAwXSBmaXJfZG1hX3JlYWRfbWFzdGVyX2FkZHJlc3M7Ci0gIGlucHV0ICAgWyAgMzogMF0gZmlyX2RtYV9yZWFkX21hc3Rlcl9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfZ3JhbnRlZF9leHRfc3NyYW1fczE7Ci0gIGlucHV0ICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczE7Ci0gIGlucHV0ICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMTsKLSAgaW5wdXQgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlcXVlc3RzX2V4dF9zc3JhbV9zMTsKLSAgaW5wdXQgICBbIDMxOiAwXSBpbmNvbWluZ19leHRfc3NyYW1fYnVzX2RhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICByZWcgICAgICAgICAgICAgIGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWU7Ci0gIHJlZyAgICAgWyAzMTogMF0gZmlyX2RtYV9yZWFkX21hc3Rlcl9hZGRyZXNzX2xhc3RfdGltZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBmaXJfZG1hX3JlYWRfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIHJlZyAgICAgWyAgMzogMF0gZmlyX2RtYV9yZWFkX21hc3Rlcl9ieXRlZW5hYmxlX2xhc3RfdGltZTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX2lzX2dyYW50ZWRfc29tZV9zbGF2ZTsKLSAgcmVnICAgICBbICAyOiAwXSBmaXJfZG1hX3JlYWRfbWFzdGVyX2xhdGVuY3lfY291bnRlcjsKLSAgcmVnICAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkOwotICByZWcgICAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9sYXN0X3RpbWU7Ci0gIHdpcmUgICAgWyAzMTogMF0gZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9ydW47Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICBbICAyOiAwXSBsYXRlbmN5X2xvYWRfdmFsdWU7Ci0gIHdpcmUgICAgWyAgMjogMF0gcDFfZmlyX2RtYV9yZWFkX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcHJlX2ZsdXNoX2Zpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICByXzA7Ci0gIC8vcl8wIG1hc3Rlcl9ydW4gY2FzY2FkZWQgd2FpdCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcl8wID0gMSAmIChmaXJfZG1hX3JlYWRfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2V4dF9zc3JhbV9zMSB8IH5maXJfZG1hX3JlYWRfbWFzdGVyX3JlcXVlc3RzX2V4dF9zc3JhbV9zMSkgJiAoZmlyX2RtYV9yZWFkX21hc3Rlcl9ncmFudGVkX2V4dF9zc3JhbV9zMSB8IH5maXJfZG1hX3JlYWRfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2V4dF9zc3JhbV9zMSkgJiAoKH5maXJfZG1hX3JlYWRfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2V4dF9zc3JhbV9zMSB8IH4oZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkKSB8ICgxICYgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZCkpKSk7Ci0KLSAgLy9jYXNjYWRlZCB3YWl0IGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBmaXJfZG1hX3JlYWRfbWFzdGVyX3J1biA9IHJfMDsKLQotICAvL29wdGltaXplIHNlbGVjdC1sb2dpYyBieSBwYXNzaW5nIG9ubHkgdGhvc2UgYWRkcmVzcyBiaXRzIHdoaWNoIG1hdHRlci4KLSAgYXNzaWduIGZpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSA9IHsxMSdiMTEwMDAwLAotICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzc1syMCA6IDBdfTsKLQotICAvL2Zpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCA8PSBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWQgJiBmaXJfZG1hX3JlYWRfbWFzdGVyX3J1biAmIH5maXJfZG1hX3JlYWRfbWFzdGVyX2lzX2dyYW50ZWRfc29tZV9zbGF2ZTsKLSAgICBlbmQKLQotCi0gIC8vc29tZSBzbGF2ZSBpcyBnZXR0aW5nIHNlbGVjdGVkLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gZmlyX2RtYV9yZWFkX21hc3Rlcl9pc19ncmFudGVkX3NvbWVfc2xhdmUgPSBmaXJfZG1hX3JlYWRfbWFzdGVyX2dyYW50ZWRfZXh0X3NzcmFtX3MxOwotCi0gIC8vbGF0ZW50IHNsYXZlIHJlYWQgZGF0YSB2YWxpZHMgd2hpY2ggbWF5IGJlIGZsdXNoZWQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwcmVfZmx1c2hfZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkZGF0YXZhbGlkID0gZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxOwotCi0gIC8vbGF0ZW50IHNsYXZlIHJlYWQgZGF0YSB2YWxpZCB3aGljaCBpcyBub3QgZmx1c2hlZCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZGRhdGF2YWxpZCA9IGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgfAotICAgIHByZV9mbHVzaF9maXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRkYXRhdmFsaWQ7Ci0KLSAgLy9maXJfZG1hL3JlYWRfbWFzdGVyIHJlYWRkYXRhIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZGRhdGEgPSBpbmNvbWluZ19leHRfc3NyYW1fYnVzX2RhdGE7Ci0KLSAgLy9hY3R1YWwgd2FpdHJlcXVlc3QgcG9ydCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGZpcl9kbWFfcmVhZF9tYXN0ZXJfd2FpdHJlcXVlc3QgPSB+ZmlyX2RtYV9yZWFkX21hc3Rlcl9ydW47Ci0KLSAgLy9sYXRlbnQgbWF4IGNvdW50ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX2xhdGVuY3lfY291bnRlciA8PSBwMV9maXJfZG1hX3JlYWRfbWFzdGVyX2xhdGVuY3lfY291bnRlcjsKLSAgICBlbmQKLQotCi0gIC8vbGF0ZW5jeSBjb3VudGVyIGxvYWQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfZmlyX2RtYV9yZWFkX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIgPSAoKGZpcl9kbWFfcmVhZF9tYXN0ZXJfcnVuICYgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkKSk/IGxhdGVuY3lfbG9hZF92YWx1ZSA6Ci0gICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyKT8gZmlyX2RtYV9yZWFkX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIgLSAxIDoKLSAgICAwOwotCi0gIC8vcmVhZCBsYXRlbmN5IGxvYWQgdmFsdWVzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gbGF0ZW5jeV9sb2FkX3ZhbHVlID0gezMge2Zpcl9kbWFfcmVhZF9tYXN0ZXJfcmVxdWVzdHNfZXh0X3NzcmFtX3MxfX0gJiA0OwotCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vZmlyX2RtYV9yZWFkX21hc3Rlcl9hZGRyZXNzIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9hZGRyZXNzX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9hZGRyZXNzX2xhc3RfdGltZSA8PSBmaXJfZG1hX3JlYWRfbWFzdGVyX2FkZHJlc3M7Ci0gICAgZW5kCi0KLQotICAvL2Zpcl9kbWEvcmVhZF9tYXN0ZXIgd2FpdGVkIGxhc3QgdGltZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSA8PSBmaXJfZG1hX3JlYWRfbWFzdGVyX3dhaXRyZXF1ZXN0ICYgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZCk7Ci0gICAgZW5kCi0KLQotICAvL2Zpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzcyBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzcyAhPSBmaXJfZG1hX3JlYWRfbWFzdGVyX2FkZHJlc3NfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogZmlyX2RtYV9yZWFkX21hc3Rlcl9hZGRyZXNzIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vZmlyX2RtYV9yZWFkX21hc3Rlcl9ieXRlZW5hYmxlIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9ieXRlZW5hYmxlX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9ieXRlZW5hYmxlX2xhc3RfdGltZSA8PSBmaXJfZG1hX3JlYWRfbWFzdGVyX2J5dGVlbmFibGU7Ci0gICAgZW5kCi0KLQotICAvL2Zpcl9kbWFfcmVhZF9tYXN0ZXJfYnl0ZWVuYWJsZSBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfYnl0ZWVuYWJsZSAhPSBmaXJfZG1hX3JlYWRfbWFzdGVyX2J5dGVlbmFibGVfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogZmlyX2RtYV9yZWFkX21hc3Rlcl9ieXRlZW5hYmxlIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2xhc3RfdGltZSA8PSBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWQ7Ci0gICAgZW5kCi0KLQotICAvL2Zpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZCBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZCAhPSBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9lbmRfeGZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfd2FpdHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgMzE6IDBdIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIG91dHB1dCAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhOwotICBpbnB1dCAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9lbmRfeGZlcjsKLSAgaW5wdXQgICBbIDMxOiAwXSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9hZGRyZXNzOwotICBpbnB1dCAgIFsgIDI6IDBdIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgWyAgMzogMF0gZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbTsKLSAgaW5wdXQgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW07Ci0gIGlucHV0ICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtOwotICBpbnB1dCAgICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotCi0gIHJlZyAgICAgICAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZTsKLSAgcmVnICAgICBbIDMxOiAwXSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9hZGRyZXNzX2xhc3RfdGltZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotICByZWcgICAgIFsgIDI6IDBdIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J1cnN0Y291bnRfbGFzdF90aW1lOwotICByZWcgICAgIFsgIDM6IDBdIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J5dGVlbmFibGVfbGFzdF90aW1lOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3J1bjsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl93YWl0cmVxdWVzdDsKLSAgcmVnICAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZV9sYXN0X3RpbWU7Ci0gIHJlZyAgICAgWyAzMTogMF0gZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGVkYXRhX2xhc3RfdGltZTsKLSAgd2lyZSAgICAgICAgICAgICByXzA7Ci0gIC8vcl8wIG1hc3Rlcl9ydW4gY2FzY2FkZWQgd2FpdCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcl8wID0gMSAmICgofmZpcl9kbWFfd3JpdGVfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSB8IH4oZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGUpIHwgKDEgJiB+Y3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgJiAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGUpKSkpOwotCi0gIC8vY2FzY2FkZWQgd2FpdCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZmlyX2RtYV93cml0ZV9tYXN0ZXJfcnVuID0gcl8wOwotCi0gIC8vb3B0aW1pemUgc2VsZWN0LWxvZ2ljIGJ5IHBhc3Npbmcgb25seSB0aG9zZSBhZGRyZXNzIGJpdHMgd2hpY2ggbWF0dGVyLgotICBhc3NpZ24gZmlyX2RtYV93cml0ZV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSA9IHs3J2IxLAotICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2FkZHJlc3NbMjQgOiAwXX07Ci0KLSAgLy9hY3R1YWwgd2FpdHJlcXVlc3QgcG9ydCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dhaXRyZXF1ZXN0ID0gfmZpcl9kbWFfd3JpdGVfbWFzdGVyX3J1bjsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvL2Zpcl9kbWFfd3JpdGVfbWFzdGVyX2FkZHJlc3MgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9hZGRyZXNzX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfYWRkcmVzc19sYXN0X3RpbWUgPD0gZmlyX2RtYV93cml0ZV9tYXN0ZXJfYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIC8vZmlyX2RtYS93cml0ZV9tYXN0ZXIgd2FpdGVkIGxhc3QgdGltZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSA8PSBmaXJfZG1hX3dyaXRlX21hc3Rlcl93YWl0cmVxdWVzdCAmIChmaXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZSk7Ci0gICAgZW5kCi0KLQotICAvL2Zpcl9kbWFfd3JpdGVfbWFzdGVyX2FkZHJlc3MgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChmaXJfZG1hX3dyaXRlX21hc3Rlcl9hZGRyZXNzICE9IGZpcl9kbWFfd3JpdGVfbWFzdGVyX2FkZHJlc3NfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogZmlyX2RtYV93cml0ZV9tYXN0ZXJfYWRkcmVzcyBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL2Zpcl9kbWFfd3JpdGVfbWFzdGVyX2J1cnN0Y291bnQgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9idXJzdGNvdW50X2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnVyc3Rjb3VudF9sYXN0X3RpbWUgPD0gZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnVyc3Rjb3VudDsKLSAgICBlbmQKLQotCi0gIC8vZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnVyc3Rjb3VudCBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J1cnN0Y291bnQgIT0gZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnVyc3Rjb3VudF9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBmaXJfZG1hX3dyaXRlX21hc3Rlcl9idXJzdGNvdW50IGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnl0ZWVuYWJsZSBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J5dGVlbmFibGVfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9ieXRlZW5hYmxlX2xhc3RfdGltZSA8PSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9ieXRlZW5hYmxlOwotICAgIGVuZAotCi0KLSAgLy9maXJfZG1hX3dyaXRlX21hc3Rlcl9ieXRlZW5hYmxlIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnl0ZWVuYWJsZSAhPSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9ieXRlZW5hYmxlX2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J5dGVlbmFibGUgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9maXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZSBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGVfbGFzdF90aW1lIDw9IGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlOwotICAgIGVuZAotCi0KLSAgLy9maXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZSBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlICE9IGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlX2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlIGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGVkYXRhIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGVkYXRhX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGVkYXRhX2xhc3RfdGltZSA8PSBmaXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotICAvL2Zpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlZGF0YSBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlZGF0YSAhPSBmaXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZWRhdGFfbGFzdF90aW1lKSAmIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBmaXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZWRhdGEgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZGF0YWF2YWlsYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfaXJxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZHlmb3JkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93YWl0cmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9jaGlwc2VsZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9kYXRhYXZhaWxhYmxlX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2lycV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkX24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWRkYXRhX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWR5Zm9yZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93YWl0cmVxdWVzdF9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93cml0ZV9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGQxX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9lbmRfeGZlcjsKLSAgb3V0cHV0ICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYWRkcmVzczsKLSAgb3V0cHV0ICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfY2hpcHNlbGVjdDsKLSAgb3V0cHV0ICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZGF0YWF2YWlsYWJsZV9mcm9tX3NhOwotICBvdXRwdXQgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9pcnFfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZF9uOwotICBvdXRwdXQgIFsgMzE6IDBdIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhOwotICBvdXRwdXQgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkeWZvcmRhdGFfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVzZXRfbjsKLSAgb3V0cHV0ICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd3JpdGVfbjsKLSAgb3V0cHV0ICBbIDMxOiAwXSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd3JpdGVkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZTsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmU7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9kYXRhYXZhaWxhYmxlOwotICBpbnB1dCAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9pcnE7Ci0gIGlucHV0ICAgWyAzMTogMF0ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWRkYXRhOwotICBpbnB1dCAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkeWZvcmRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgIFsgMTE6IDBdIHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50OwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0OwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXI7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZWRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICByZWcgICAgICAgICAgICAgIGQxX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9lbmRfeGZlcjsKLSAgcmVnICAgICAgICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQ7Ci0gIHJlZyAgICAgICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9uczsKLSAgd2lyZSAgICAgICAgICAgICBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZTsKLSAgd2lyZSAgICAgICAgICAgICBpbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV93cml0ZV9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYWxsZ3JhbnRzOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hbGxvd19uZXdfYXJiX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50OwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hbnlfY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hcmJfY291bnRlcl9lbmFibGU7Ci0gIHJlZyAgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hcmJfc2hhcmVfc2V0X3ZhbHVlczsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9iZWdpbnNfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfY2hpcHNlbGVjdDsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZGF0YWF2YWlsYWJsZV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9lbmRfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZ3JhbnRfdmVjdG9yOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9pbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2luX2Ffd3JpdGVfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2lycV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9tYXN0ZXJfcXJlcV92ZWN0b3I7Ci0gIHdpcmUgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHM7Ci0gIHdpcmUgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWRfbjsKLSAgd2lyZSAgICBbIDMxOiAwXSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZGRhdGFfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZHlmb3JkYXRhX2Zyb21fc2E7Ci0gIHJlZyAgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZXNldF9uOwotICByZWcgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMjsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHNfZm9yX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dhaXRzX2Zvcl93cml0ZTsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd3JpdGVfbjsKLSAgd2lyZSAgICBbIDMxOiAwXSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd3JpdGVkYXRhOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfc2F2ZWRfZ3JhbnRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlOwotICB3aXJlICAgIFsgMTE6IDBdIHNoaWZ0ZWRfYWRkcmVzc190b19qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZnJvbV9waXBlbGluZV9icmlkZ2VfbTE7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdF9mb3JfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2NvdW50ZXI7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdCA8PSB+anRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2VuZF94ZmVyOwotICAgIGVuZAotCi0KLSAgYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9iZWdpbnNfeGZlciA9IH5kMV9yZWFzb25zX3RvX3dhaXQgJiAoKHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUpKTsKLSAgLy9hc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWRkYXRhX2Zyb21fc2EgPSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZGRhdGEgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZGRhdGFfZnJvbV9zYSA9IGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YTsKLQotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZSA9ICh7cGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmVbMTEgOiAzXSAsIDMnYjB9ID09IDEyJ2g4NjgpICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3Q7Ci0gIC8vYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9kYXRhYXZhaWxhYmxlX2Zyb21fc2EgPSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZGF0YWF2YWlsYWJsZSBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9kYXRhYXZhaWxhYmxlX2Zyb21fc2EgPSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZGF0YWF2YWlsYWJsZTsKLQotICAvL2Fzc2lnbiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZHlmb3JkYXRhX2Zyb21fc2EgPSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZHlmb3JkYXRhIHNvIHRoYXQgc3ltYm9sIGtub3dzIHdoZXJlIHRvIGdyb3VwIHNpZ25hbHMgd2hpY2ggbWF5IGdvIHRvIG1hc3RlciBvbmx5LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWR5Zm9yZGF0YV9mcm9tX3NhID0ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWR5Zm9yZGF0YTsKLQotICAvL2Fzc2lnbiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHJlcXVlc3RfZnJvbV9zYSA9IGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93YWl0cmVxdWVzdCBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93YWl0cmVxdWVzdF9mcm9tX3NhID0ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dhaXRyZXF1ZXN0OwotCi0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyIHNldCB2YWx1ZXMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYXJiX3NoYXJlX3NldF92YWx1ZXMgPSAxOwotCi0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgPSBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlOwotCi0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgPSAwOwotCi0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlID0ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2ZpcnN0dHJhbnNmZXIgPyAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FyYl9zaGFyZV9zZXRfdmFsdWVzIC0gMSkgOiB8anRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyID8gKGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hcmJfc2hhcmVfY291bnRlciAtIDEpIDogMDsKLQotICAvL2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hbGxncmFudHMgYWxsIHNsYXZlIGdyYW50cywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hbGxncmFudHMgPSB8anRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2dyYW50X3ZlY3RvcjsKLQotICAvL2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9lbmRfeGZlciBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2VuZF94ZmVyID0gfihqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHNfZm9yX3JlYWQgfCBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHNfZm9yX3dyaXRlKTsKLQotICAvL2VuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlIGFyYiBzaGFyZSBjb3VudGVyIGVuYWJsZSB0ZXJtLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUgPSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZW5kX3hmZXIgJiAofmp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50IHwgaW5fYV9yZWFkX2N5Y2xlIHwgaW5fYV93cml0ZV9jeWNsZSk7Ci0KLSAgLy9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXIgYXJiaXRyYXRpb24gY291bnRlciBlbmFibGUsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYXJiX2NvdW50ZXJfZW5hYmxlID0gKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlICYganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FsbGdyYW50cykgfCAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUgJiB+anRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMpOwotCi0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyIGNvdW50ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hcmJfc2hhcmVfY291bnRlciA8PSAwOwotICAgICAgZWxzZSBpZiAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FyYl9jb3VudGVyX2VuYWJsZSkKLSAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXIgPD0ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gICAgZW5kCi0KLQotICAvL2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIHNsYXZlIGVuYWJsZXMgYXJiaXRlcmxvY2ssIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIDw9IDA7Ci0gICAgICBlbHNlIGlmICgofGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9tYXN0ZXJfcXJlcV92ZWN0b3IgJiBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZSkgfCAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUgJiB+anRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMpKQotICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIDw9IHxqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlL20xIGp0YWdfdWFydC9hdmFsb25fanRhZ19zbGF2ZSBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9hcmJpdGVybG9jayA9IGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlICYgcGlwZWxpbmVfYnJpZGdlX20xX2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrMiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiA9IHxqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZS9tMSBqdGFnX3VhcnQvYXZhbG9uX2p0YWdfc2xhdmUgYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX2FyYml0ZXJsb2NrMiA9IGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYW55X2NvbnRpbnVlcmVxdWVzdCBhdCBsZWFzdCBvbmUgbWFzdGVyIGNvbnRpbnVlcyByZXF1ZXN0aW5nLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FueV9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX20xX2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlID0gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZSAmIH4oKChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSAmICgocGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlciAhPSAwKSkpKTsKLSAgLy9sb2NhbCByZWFkZGF0YXZhbGlkIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUgPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUgJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkgJiB+anRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dhaXRzX2Zvcl9yZWFkOwotCi0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dyaXRlZGF0YSBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd3JpdGVkYXRhID0gcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YTsKLQotICAvL21hc3RlciBpcyBhbHdheXMgZ3JhbnRlZCB3aGVuIHJlcXVlc3RlZAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlID0gcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZS9tMSBzYXZlZC1ncmFudCBqdGFnX3VhcnQvYXZhbG9uX2p0YWdfc2xhdmUsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfc2F2ZWRfZ3JhbnRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlID0gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZTsKLQotICAvL2FsbG93IG5ldyBhcmIgY3ljbGUgZm9yIGp0YWdfdWFydC9hdmFsb25fanRhZ19zbGF2ZSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hbGxvd19uZXdfYXJiX2N5Y2xlID0gMTsKLQotICAvL3BsYWNlaG9sZGVyIGNob3NlbiBtYXN0ZXIKLSAgYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9ncmFudF92ZWN0b3IgPSAxOwotCi0gIC8vcGxhY2Vob2xkZXIgdmVjdG9yIG9mIG1hc3RlciBxdWFsaWZpZWQtcmVxdWVzdHMKLSAgYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9tYXN0ZXJfcXJlcV92ZWN0b3IgPSAxOwotCi0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3Jlc2V0X24gYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZXNldF9uID0gcmVzZXRfbjsKLQotICBhc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2NoaXBzZWxlY3QgPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmU7Ci0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZmlyc3R0cmFuc2ZlciA9IGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9iZWdpbnNfeGZlciA/IGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV91bnJlZ19maXJzdHRyYW5zZmVyIDoganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlZ19maXJzdHRyYW5zZmVyOwotCi0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3VucmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfdW5yZWdfZmlyc3R0cmFuc2ZlciA9IH4oanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYW55X2NvbnRpbnVlcmVxdWVzdCk7Ci0KLSAgLy9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWdfZmlyc3R0cmFuc2ZlciA8PSAxJ2IxOwotICAgICAgZWxzZSBpZiAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2JlZ2luc194ZmVyKQotICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWdfZmlyc3R0cmFuc2ZlciA8PSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgICBlbmQKLQotCi0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCBiZWdpbiBidXJzdCB0cmFuc2Zlciwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9iZWdpbmJ1cnN0dHJhbnNmZXJfaW50ZXJuYWwgPSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYmVnaW5zX3hmZXI7Ci0KLSAgLy9+anRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWRfbiBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWRfbiA9IH4ocGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlICYgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpKTsKLQotICAvL35qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd3JpdGVfbiBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dyaXRlX24gPSB+KHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZSAmIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkpOwotCi0gIGFzc2lnbiBzaGlmdGVkX2FkZHJlc3NfdG9fanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2Zyb21fcGlwZWxpbmVfYnJpZGdlX20xID0gcGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FkZHJlc3MgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FkZHJlc3MgPSBzaGlmdGVkX2FkZHJlc3NfdG9fanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2Zyb21fcGlwZWxpbmVfYnJpZGdlX20xID4+IDI7Ci0KLSAgLy9kMV9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZW5kX3hmZXIgcmVnaXN0ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9lbmRfeGZlciA8PSAxOwotICAgICAgZWxzZSAKLSAgICAgICAgZDFfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2VuZF94ZmVyIDw9IGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9lbmRfeGZlcjsKLSAgICBlbmQKLQotCi0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dhaXRzX2Zvcl9yZWFkIGluIGEgY3ljbGUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHNfZm9yX3JlYWQgPSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfaW5fYV9yZWFkX2N5Y2xlICYganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0KLSAgLy9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfaW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfaW5fYV9yZWFkX2N5Y2xlID0gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlICYgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpOwotCi0gIC8vaW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBpbl9hX3JlYWRfY3ljbGUgPSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfaW5fYV9yZWFkX2N5Y2xlOwotCi0gIC8vanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dhaXRzX2Zvcl93cml0ZSBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dhaXRzX2Zvcl93cml0ZSA9IGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9pbl9hX3dyaXRlX2N5Y2xlICYganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0KLSAgLy9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfaW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2luX2Ffd3JpdGVfY3ljbGUgPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUgJiAocGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpOwotCi0gIC8vaW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gaW5fYV93cml0ZV9jeWNsZSA9IGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9pbl9hX3dyaXRlX2N5Y2xlOwotCi0gIGFzc2lnbiB3YWl0X2Zvcl9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfY291bnRlciA9IDA7Ci0gIC8vYXNzaWduIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9pcnFfZnJvbV9zYSA9IGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9pcnEgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfaXJxX2Zyb21fc2EgPSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfaXJxOwotCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vanRhZ191YXJ0L2F2YWxvbl9qdGFnX3NsYXZlIGVuYWJsZSBub24temVybyBhc3NlcnRpb25zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDEnYjE7Ci0gICAgZW5kCi0KLQotICAvL3BpcGVsaW5lX2JyaWRnZS9tMSBub24temVybyBidXJzdGNvdW50IGFzc2VydGlvbiwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAocGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZSAmJiAocGlwZWxpbmVfYnJpZGdlX20xX2J1cnN0Y291bnQgPT0gMCkgJiYgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucykKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogcGlwZWxpbmVfYnJpZGdlL20xIGRyb3ZlIDAgb24gaXRzICdidXJzdGNvdW50JyBwb3J0IHdoaWxlIGFjY2Vzc2luZyBzbGF2ZSBqdGFnX3VhcnQvYXZhbG9uX2p0YWdfc2xhdmUiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcmR2X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3RvX3BpcGVsaW5lX2JyaWRnZV9zMV9tb2R1bGUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2ZpZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bmNfcmVzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9vdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmb19jb250YWluc19vbmVzX24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGRhdGFfb3V0OwotICBvdXRwdXQgICAgICAgICAgIGVtcHR5OwotICBvdXRwdXQgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICBvdXRwdXQgICAgICAgICAgIGZ1bGw7Ci0gIGlucHV0ICAgICAgICAgICAgY2xlYXJfZmlmbzsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgICAgICAgICAgZGF0YV9pbjsKLSAgaW5wdXQgICAgICAgICAgICByZWFkOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgc3luY19yZXNldDsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZTsKLQotICB3aXJlICAgICAgICAgICAgIGRhdGFfb3V0OwotICB3aXJlICAgICAgICAgICAgIGVtcHR5OwotICByZWcgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICB3aXJlICAgICAgICAgICAgIGZ1bGw7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8wOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzI7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8zOwotICB3aXJlICAgICAgICAgICAgIGZ1bGxfNDsKLSAgcmVnICAgICBbICAzOiAwXSBob3dfbWFueV9vbmVzOwotICB3aXJlICAgIFsgIDM6IDBdIG9uZV9jb3VudF9taW51c19vbmU7Ci0gIHdpcmUgICAgWyAgMzogMF0gb25lX2NvdW50X3BsdXNfb25lOwotICB3aXJlICAgICAgICAgICAgIHAwX2Z1bGxfMDsKLSAgd2lyZSAgICAgICAgICAgICBwMF9zdGFnZV8wOwotICB3aXJlICAgICAgICAgICAgIHAxX2Z1bGxfMTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9zdGFnZV8xOwotICB3aXJlICAgICAgICAgICAgIHAyX2Z1bGxfMjsKLSAgd2lyZSAgICAgICAgICAgICBwMl9zdGFnZV8yOwotICB3aXJlICAgICAgICAgICAgIHAzX2Z1bGxfMzsKLSAgd2lyZSAgICAgICAgICAgICBwM19zdGFnZV8zOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzA7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8yOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzM7Ci0gIHdpcmUgICAgWyAgMzogMF0gdXBkYXRlZF9vbmVfY291bnQ7Ci0gIGFzc2lnbiBkYXRhX291dCA9IHN0YWdlXzA7Ci0gIGFzc2lnbiBmdWxsID0gZnVsbF8zOwotICBhc3NpZ24gZW1wdHkgPSAhZnVsbF8wOwotICBhc3NpZ24gZnVsbF80ID0gMDsKLSAgLy9kYXRhXzMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwM19zdGFnZV8zID0gKChmdWxsXzQgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIGRhdGFfaW47Ci0KLSAgLy9kYXRhX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8zIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8zKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMyAmICEoKGZ1bGxfNCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMyA8PSBwM19zdGFnZV8zOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwM19mdWxsXzMgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzIgOgotICAgIDA7Ci0KLSAgLy9jb250cm9sX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8zIDw9IHAzX2Z1bGxfMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfc3RhZ2VfMiA9ICgoZnVsbF8zICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8zOwotCi0gIC8vZGF0YV9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzIgJiAhKChmdWxsXzMgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzIgPD0gcDJfc3RhZ2VfMjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfZnVsbF8yID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xIDoKLSAgICBmdWxsXzM7Ci0KLSAgLy9jb250cm9sX3JlZ18yLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8yIDw9IHAyX2Z1bGxfMjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfc3RhZ2VfMSA9ICgoZnVsbF8yICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8yOwotCi0gIC8vZGF0YV9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEgJiAhKChmdWxsXzIgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEgPD0gcDFfc3RhZ2VfMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfZnVsbF8xID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8wIDoKLSAgICBmdWxsXzI7Ci0KLSAgLy9jb250cm9sX3JlZ18xLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xIDw9IHAxX2Z1bGxfMTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfc3RhZ2VfMCA9ICgoZnVsbF8xICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xOwotCi0gIC8vZGF0YV9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzAgJiAhKChmdWxsXzEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzAgPD0gcDBfc3RhZ2VfMDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfZnVsbF8wID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gMSA6Ci0gICAgZnVsbF8xOwotCi0gIC8vY29udHJvbF9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbyAmIH53cml0ZSkKLSAgICAgICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMCA8PSBwMF9mdWxsXzA7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gb25lX2NvdW50X3BsdXNfb25lID0gaG93X21hbnlfb25lcyArIDE7Ci0gIGFzc2lnbiBvbmVfY291bnRfbWludXNfb25lID0gaG93X21hbnlfb25lcyAtIDE7Ci0gIC8vdXBkYXRlZF9vbmVfY291bnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB1cGRhdGVkX29uZV9jb3VudCA9ICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiAhd3JpdGUpKSk/IDAgOgotICAgICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiB3cml0ZSkpKT8gfGRhdGFfaW4gOgotICAgICgocmVhZCAmICh8ZGF0YV9pbikgJiB3cml0ZSAmICh8c3RhZ2VfMCkpKT8gaG93X21hbnlfb25lcyA6Ci0gICAgKCh3cml0ZSAmICh8ZGF0YV9pbikpKT8gb25lX2NvdW50X3BsdXNfb25lIDoKLSAgICAoKHJlYWQgJiAofHN0YWdlXzApKSk/IG9uZV9jb3VudF9taW51c19vbmUgOgotICAgIGhvd19tYW55X29uZXM7Ci0KLSAgLy9jb3VudHMgaG93IG1hbnkgb25lcyBpbiB0aGUgZGF0YSBwaXBlbGluZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSB1cGRhdGVkX29uZV9jb3VudDsKLSAgICBlbmQKLQotCi0gIC8vdGhpcyBmaWZvIGNvbnRhaW5zIG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uIDw9IDE7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCB3cml0ZSkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSB+KHx1cGRhdGVkX29uZV9jb3VudCk7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcmR2X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3RvX3BpcGVsaW5lX2JyaWRnZV9zMV9tb2R1bGUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX2ZpZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bmNfcmVzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9vdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmb19jb250YWluc19vbmVzX24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGRhdGFfb3V0OwotICBvdXRwdXQgICAgICAgICAgIGVtcHR5OwotICBvdXRwdXQgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICBvdXRwdXQgICAgICAgICAgIGZ1bGw7Ci0gIGlucHV0ICAgICAgICAgICAgY2xlYXJfZmlmbzsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgICAgICAgICAgZGF0YV9pbjsKLSAgaW5wdXQgICAgICAgICAgICByZWFkOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgc3luY19yZXNldDsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZTsKLQotICB3aXJlICAgICAgICAgICAgIGRhdGFfb3V0OwotICB3aXJlICAgICAgICAgICAgIGVtcHR5OwotICByZWcgICAgICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uOwotICB3aXJlICAgICAgICAgICAgIGZ1bGw7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8wOwotICByZWcgICAgICAgICAgICAgIGZ1bGxfMTsKLSAgcmVnICAgICAgICAgICAgICBmdWxsXzI7Ci0gIHJlZyAgICAgICAgICAgICAgZnVsbF8zOwotICB3aXJlICAgICAgICAgICAgIGZ1bGxfNDsKLSAgcmVnICAgICBbICAzOiAwXSBob3dfbWFueV9vbmVzOwotICB3aXJlICAgIFsgIDM6IDBdIG9uZV9jb3VudF9taW51c19vbmU7Ci0gIHdpcmUgICAgWyAgMzogMF0gb25lX2NvdW50X3BsdXNfb25lOwotICB3aXJlICAgICAgICAgICAgIHAwX2Z1bGxfMDsKLSAgd2lyZSAgICAgICAgICAgICBwMF9zdGFnZV8wOwotICB3aXJlICAgICAgICAgICAgIHAxX2Z1bGxfMTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9zdGFnZV8xOwotICB3aXJlICAgICAgICAgICAgIHAyX2Z1bGxfMjsKLSAgd2lyZSAgICAgICAgICAgICBwMl9zdGFnZV8yOwotICB3aXJlICAgICAgICAgICAgIHAzX2Z1bGxfMzsKLSAgd2lyZSAgICAgICAgICAgICBwM19zdGFnZV8zOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzA7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhZ2VfMTsKLSAgcmVnICAgICAgICAgICAgICBzdGFnZV8yOwotICByZWcgICAgICAgICAgICAgIHN0YWdlXzM7Ci0gIHdpcmUgICAgWyAgMzogMF0gdXBkYXRlZF9vbmVfY291bnQ7Ci0gIGFzc2lnbiBkYXRhX291dCA9IHN0YWdlXzA7Ci0gIGFzc2lnbiBmdWxsID0gZnVsbF8zOwotICBhc3NpZ24gZW1wdHkgPSAhZnVsbF8wOwotICBhc3NpZ24gZnVsbF80ID0gMDsKLSAgLy9kYXRhXzMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwM19zdGFnZV8zID0gKChmdWxsXzQgJiB+Y2xlYXJfZmlmbykgPT0gMCk/IGRhdGFfaW4gOgotICAgIGRhdGFfaW47Ci0KLSAgLy9kYXRhX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGFnZV8zIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCAod3JpdGUgJiAhZnVsbF8zKSkKLSAgICAgICAgICBpZiAoc3luY19yZXNldCAmIGZ1bGxfMyAmICEoKGZ1bGxfNCA9PSAwKSAmIHJlYWQgJiB3cml0ZSkpCi0gICAgICAgICAgICAgIHN0YWdlXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgc3RhZ2VfMyA8PSBwM19zdGFnZV8zOwotICAgIGVuZAotCi0KLSAgLy9jb250cm9sXzMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwM19mdWxsXzMgPSAoKHJlYWQgJiAhd3JpdGUpID09IDApPyBmdWxsXzIgOgotICAgIDA7Ci0KLSAgLy9jb250cm9sX3JlZ18zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzMgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8zIDw9IHAzX2Z1bGxfMzsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfc3RhZ2VfMiA9ICgoZnVsbF8zICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8zOwotCi0gIC8vZGF0YV9yZWdfMiwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMiA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMikpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzIgJiAhKChmdWxsXzMgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8yIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzIgPD0gcDJfc3RhZ2VfMjsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8yLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDJfZnVsbF8yID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8xIDoKLSAgICBmdWxsXzM7Ci0KLSAgLy9jb250cm9sX3JlZ18yLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzIgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8yIDw9IHAyX2Z1bGxfMjsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfc3RhZ2VfMSA9ICgoZnVsbF8yICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8yOwotCi0gIC8vZGF0YV9yZWdfMSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMSkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzEgJiAhKChmdWxsXzIgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8xIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzEgPD0gcDFfc3RhZ2VfMTsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8xLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDFfZnVsbF8xID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gZnVsbF8wIDoKLSAgICBmdWxsXzI7Ci0KLSAgLy9jb250cm9sX3JlZ18xLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsZWFyX2ZpZm8gfCAocmVhZCBeIHdyaXRlKSB8ICh3cml0ZSAmICFmdWxsXzApKQotICAgICAgICAgIGlmIChjbGVhcl9maWZvKQotICAgICAgICAgICAgICBmdWxsXzEgPD0gMDsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgZnVsbF8xIDw9IHAxX2Z1bGxfMTsKLSAgICBlbmQKLQotCi0gIC8vZGF0YV8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfc3RhZ2VfMCA9ICgoZnVsbF8xICYgfmNsZWFyX2ZpZm8pID09IDApPyBkYXRhX2luIDoKLSAgICBzdGFnZV8xOwotCi0gIC8vZGF0YV9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhZ2VfMCA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgKHdyaXRlICYgIWZ1bGxfMCkpCi0gICAgICAgICAgaWYgKHN5bmNfcmVzZXQgJiBmdWxsXzAgJiAhKChmdWxsXzEgPT0gMCkgJiByZWFkICYgd3JpdGUpKQotICAgICAgICAgICAgICBzdGFnZV8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHN0YWdlXzAgPD0gcDBfc3RhZ2VfMDsKLSAgICBlbmQKLQotCi0gIC8vY29udHJvbF8wLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcDBfZnVsbF8wID0gKChyZWFkICYgIXdyaXRlKSA9PSAwKT8gMSA6Ci0gICAgZnVsbF8xOwotCi0gIC8vY29udHJvbF9yZWdfMCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgKHJlYWQgXiB3cml0ZSkgfCAod3JpdGUgJiAhZnVsbF8wKSkKLSAgICAgICAgICBpZiAoY2xlYXJfZmlmbyAmIH53cml0ZSkKLSAgICAgICAgICAgICAgZnVsbF8wIDw9IDA7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGZ1bGxfMCA8PSBwMF9mdWxsXzA7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gb25lX2NvdW50X3BsdXNfb25lID0gaG93X21hbnlfb25lcyArIDE7Ci0gIGFzc2lnbiBvbmVfY291bnRfbWludXNfb25lID0gaG93X21hbnlfb25lcyAtIDE7Ci0gIC8vdXBkYXRlZF9vbmVfY291bnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB1cGRhdGVkX29uZV9jb3VudCA9ICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiAhd3JpdGUpKSk/IDAgOgotICAgICgoKChjbGVhcl9maWZvIHwgc3luY19yZXNldCkgJiB3cml0ZSkpKT8gfGRhdGFfaW4gOgotICAgICgocmVhZCAmICh8ZGF0YV9pbikgJiB3cml0ZSAmICh8c3RhZ2VfMCkpKT8gaG93X21hbnlfb25lcyA6Ci0gICAgKCh3cml0ZSAmICh8ZGF0YV9pbikpKT8gb25lX2NvdW50X3BsdXNfb25lIDoKLSAgICAoKHJlYWQgJiAofHN0YWdlXzApKSk/IG9uZV9jb3VudF9taW51c19vbmUgOgotICAgIGhvd19tYW55X29uZXM7Ci0KLSAgLy9jb3VudHMgaG93IG1hbnkgb25lcyBpbiB0aGUgZGF0YSBwaXBlbGluZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xlYXJfZmlmbyB8IHN5bmNfcmVzZXQgfCByZWFkIHwgd3JpdGUpCi0gICAgICAgICAgaG93X21hbnlfb25lcyA8PSB1cGRhdGVkX29uZV9jb3VudDsKLSAgICBlbmQKLQotCi0gIC8vdGhpcyBmaWZvIGNvbnRhaW5zIG9uZXMgaW4gdGhlIGRhdGEgcGlwZWxpbmUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGZpZm9fY29udGFpbnNfb25lc19uIDw9IDE7Ci0gICAgICBlbHNlIGlmIChjbGVhcl9maWZvIHwgc3luY19yZXNldCB8IHJlYWQgfCB3cml0ZSkKLSAgICAgICAgICBmaWZvX2NvbnRhaW5zX29uZXNfbiA8PSB+KHx1cGRhdGVkX29uZV9jb3VudCk7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcGlwZWxpbmVfYnJpZGdlX3MxX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2VuZG9mcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9waXBlbGluZV9icmlkZ2VfczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxX3NoaWZ0X3JlZ2lzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlcXVlc3RzX3BpcGVsaW5lX2JyaWRnZV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9waXBlbGluZV9icmlkZ2VfczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxX3NoaWZ0X3JlZ2lzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlcXVlc3RzX3BpcGVsaW5lX2JyaWRnZV9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkMV9waXBlbGluZV9icmlkZ2VfczFfZW5kX3hmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2FyYml0ZXJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJpdGVybG9jazIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2NoaXBzZWxlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9lbmRvZnBhY2tldF9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9yZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV93YWl0cmVxdWVzdF9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfd3JpdGVkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfcGlwZWxpbmVfYnJpZGdlX3MxOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfcGlwZWxpbmVfYnJpZGdlX3MxOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczE7Ci0gIG91dHB1dCAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczE7Ci0gIG91dHB1dCAgICAgICAgICAgZDFfcGlwZWxpbmVfYnJpZGdlX3MxX2VuZF94ZmVyOwotICBvdXRwdXQgIFsgIDk6IDBdIHBpcGVsaW5lX2JyaWRnZV9zMV9hZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJpdGVybG9jazsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfYXJiaXRlcmxvY2syOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9idXJzdGNvdW50OwotICBvdXRwdXQgIFsgIDM6IDBdIHBpcGVsaW5lX2JyaWRnZV9zMV9ieXRlZW5hYmxlOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9jaGlwc2VsZWN0OwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfZW5kb2ZwYWNrZXRfZnJvbV9zYTsKLSAgb3V0cHV0ICBbICA5OiAwXSBwaXBlbGluZV9icmlkZ2VfczFfbmF0aXZlYWRkcmVzczsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfcmVhZDsKLSAgb3V0cHV0ICBbIDMxOiAwXSBwaXBlbGluZV9icmlkZ2VfczFfcmVhZGRhdGFfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfcmVzZXRfbjsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gcGlwZWxpbmVfYnJpZGdlX3MxX3dyaXRlZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAxMTogMF0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZTsKLSAgaW5wdXQgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXI7Ci0gIGlucHV0ICAgWyAxMTogMF0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgaW5wdXQgICBbIDExOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICBpbnB1dCAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmU7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgaW5wdXQgICBbIDExOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9lbmRvZnBhY2tldDsKLSAgaW5wdXQgICBbIDMxOiAwXSBwaXBlbGluZV9icmlkZ2VfczFfcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhdmFsaWQ7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0KLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZHZfZmlmb19lbXB0eV9waXBlbGluZV9icmlkZ2VfczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmR2X2ZpZm9fb3V0cHV0X2Zyb21fcGlwZWxpbmVfYnJpZGdlX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfcGlwZWxpbmVfYnJpZGdlX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9jb250aW51ZXJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfcGlwZWxpbmVfYnJpZGdlX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3Jkdl9maWZvX2VtcHR5X3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZHZfZmlmb19vdXRwdXRfZnJvbV9waXBlbGluZV9icmlkZ2VfczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxX3NoaWZ0X3JlZ2lzdGVyOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlcXVlc3RzX3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9waXBlbGluZV9icmlkZ2VfczE7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfcGlwZWxpbmVfYnJpZGdlX3MxX2VuZF94ZmVyOwotICByZWcgICAgICAgICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdDsKLSAgcmVnICAgICAgICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zOwotICB3aXJlICAgICAgICAgICAgIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fcGlwZWxpbmVfYnJpZGdlX3MxOwotICB3aXJlICAgICAgICAgICAgIGluX2FfcmVhZF9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBpbl9hX3dyaXRlX2N5Y2xlOwotICByZWcgICAgICAgICAgICAgIGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9waXBlbGluZV9icmlkZ2VfczE7Ci0gIHJlZyAgICAgICAgICAgICAgbGFzdF9jeWNsZV9jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ncmFudGVkX3NsYXZlX3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgd2lyZSAgICBbICA5OiAwXSBwaXBlbGluZV9icmlkZ2VfczFfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfYWxsZ3JhbnRzOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9hbGxvd19uZXdfYXJiX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50OwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9hbnlfY29udGludWVyZXF1ZXN0OwotICByZWcgICAgIFsgIDE6IDBdIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfYWRkZW5kOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfY291bnRlcl9lbmFibGU7Ci0gIHJlZyAgICAgWyAgMzogMF0gcGlwZWxpbmVfYnJpZGdlX3MxX2FyYl9zaGFyZV9jb3VudGVyOwotICB3aXJlICAgIFsgIDM6IDBdIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICB3aXJlICAgIFsgIDM6IDBdIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfc2hhcmVfc2V0X3ZhbHVlczsKLSAgd2lyZSAgICBbICAxOiAwXSBwaXBlbGluZV9icmlkZ2VfczFfYXJiX3dpbm5lcjsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfYXJiaXRyYXRpb25faG9sZG9mZl9pbnRlcm5hbDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9iZWdpbnNfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBwaXBlbGluZV9icmlkZ2VfczFfYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfY2hpcHNlbGVjdDsKLSAgd2lyZSAgICBbICAzOiAwXSBwaXBlbGluZV9icmlkZ2VfczFfY2hvc2VuX21hc3Rlcl9kb3VibGVfdmVjdG9yOwotICB3aXJlICAgIFsgIDE6IDBdIHBpcGVsaW5lX2JyaWRnZV9zMV9jaG9zZW5fbWFzdGVyX3JvdF9sZWZ0OwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfZW5kX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2VuZG9mcGFja2V0X2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgWyAgMTogMF0gcGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfaW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9pbl9hX3dyaXRlX2N5Y2xlOwotICB3aXJlICAgIFsgIDE6IDBdIHBpcGVsaW5lX2JyaWRnZV9zMV9tYXN0ZXJfcXJlcV92ZWN0b3I7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbjsKLSAgd2lyZSAgICBbICA5OiAwXSBwaXBlbGluZV9icmlkZ2VfczFfbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0czsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfcmVhZDsKLSAgd2lyZSAgICBbIDMxOiAwXSBwaXBlbGluZV9icmlkZ2VfczFfcmVhZGRhdGFfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfcmVhZGRhdGF2YWxpZF9mcm9tX3NhOwotICByZWcgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfcmVzZXRfbjsKLSAgcmVnICAgICBbICAxOiAwXSBwaXBlbGluZV9icmlkZ2VfczFfc2F2ZWRfY2hvc2VuX21hc3Rlcl92ZWN0b3I7Ci0gIHJlZyAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV91bnJlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV93YWl0cmVxdWVzdF9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV93YWl0c19mb3JfcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfd2FpdHNfZm9yX3dyaXRlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV93cml0ZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBwaXBlbGluZV9icmlkZ2VfczFfd3JpdGVkYXRhOwotICB3aXJlICAgIFsgMTE6IDBdIHNoaWZ0ZWRfYWRkcmVzc190b19waXBlbGluZV9icmlkZ2VfczFfZnJvbV9jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbTsKLSAgd2lyZSAgICBbIDExOiAwXSBzaGlmdGVkX2FkZHJlc3NfdG9fcGlwZWxpbmVfYnJpZGdlX3MxX2Zyb21fY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdF9mb3JfcGlwZWxpbmVfYnJpZGdlX3MxX2NvdW50ZXI7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdCA8PSB+cGlwZWxpbmVfYnJpZGdlX3MxX2VuZF94ZmVyOwotICAgIGVuZAotCi0KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9iZWdpbnNfeGZlciA9IH5kMV9yZWFzb25zX3RvX3dhaXQgJiAoKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMSB8IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMSkpOwotICAvL2Fzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfcmVhZGRhdGFfZnJvbV9zYSA9IHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YSBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YV9mcm9tX3NhID0gcGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhOwotCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczEgPSAoMSkgJiAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlKTsKLSAgLy9hc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX3dhaXRyZXF1ZXN0X2Zyb21fc2EgPSBwaXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3Qgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3RfZnJvbV9zYSA9IHBpcGVsaW5lX2JyaWRnZV9zMV93YWl0cmVxdWVzdDsKLQotICAvL2Fzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfcmVhZGRhdGF2YWxpZF9mcm9tX3NhID0gcGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhdmFsaWQgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfcmVhZGRhdGF2YWxpZF9mcm9tX3NhID0gcGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhdmFsaWQ7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2VfczFfYXJiX3NoYXJlX2NvdW50ZXIgc2V0IHZhbHVlcywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfc2hhcmVfc2V0X3ZhbHVlcyA9IChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgOgotICAgIDE7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2VfczFfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyA9IDA7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2VfczFfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCA9IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3NhdmVkX2dyYW50X3BpcGVsaW5lX2JyaWRnZV9zMSB8Ci0gICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfcGlwZWxpbmVfYnJpZGdlX3MxIHwKLSAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9waXBlbGluZV9icmlkZ2VfczEgfAotICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3NhdmVkX2dyYW50X3BpcGVsaW5lX2JyaWRnZV9zMSB8Ci0gICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfcGlwZWxpbmVfYnJpZGdlX3MxIHwKLSAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9waXBlbGluZV9icmlkZ2VfczE7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2VfczFfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWUgPSBwaXBlbGluZV9icmlkZ2VfczFfZmlyc3R0cmFuc2ZlciA/IChwaXBlbGluZV9icmlkZ2VfczFfYXJiX3NoYXJlX3NldF92YWx1ZXMgLSAxKSA6IHxwaXBlbGluZV9icmlkZ2VfczFfYXJiX3NoYXJlX2NvdW50ZXIgPyAocGlwZWxpbmVfYnJpZGdlX3MxX2FyYl9zaGFyZV9jb3VudGVyIC0gMSkgOiAwOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX3MxX2FsbGdyYW50cyBhbGwgc2xhdmUgZ3JhbnRzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX2FsbGdyYW50cyA9ICh8cGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8cGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8cGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8cGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8cGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3RvcikgfAotICAgICh8cGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3Rvcik7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2VfczFfZW5kX3hmZXIgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9lbmRfeGZlciA9IH4ocGlwZWxpbmVfYnJpZGdlX3MxX3dhaXRzX2Zvcl9yZWFkIHwgcGlwZWxpbmVfYnJpZGdlX3MxX3dhaXRzX2Zvcl93cml0ZSk7Ci0KLSAgLy9lbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3BpcGVsaW5lX2JyaWRnZV9zMSBhcmIgc2hhcmUgY291bnRlciBlbmFibGUgdGVybSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fcGlwZWxpbmVfYnJpZGdlX3MxID0gcGlwZWxpbmVfYnJpZGdlX3MxX2VuZF94ZmVyICYgKH5waXBlbGluZV9icmlkZ2VfczFfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCB8IGluX2FfcmVhZF9jeWNsZSB8IGluX2Ffd3JpdGVfY3ljbGUpOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX3MxX2FyYl9zaGFyZV9jb3VudGVyIGFyYml0cmF0aW9uIGNvdW50ZXIgZW5hYmxlLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX2FyYl9jb3VudGVyX2VuYWJsZSA9IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3BpcGVsaW5lX2JyaWRnZV9zMSAmIHBpcGVsaW5lX2JyaWRnZV9zMV9hbGxncmFudHMpIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fcGlwZWxpbmVfYnJpZGdlX3MxICYgfnBpcGVsaW5lX2JyaWRnZV9zMV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZV9zMV9hcmJfc2hhcmVfY291bnRlciBjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfYXJiX3NoYXJlX2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfY291bnRlcl9lbmFibGUpCi0gICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2FyYl9zaGFyZV9jb3VudGVyIDw9IHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICAgIGVuZAotCi0KLSAgLy9waXBlbGluZV9icmlkZ2VfczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSAwOwotICAgICAgZWxzZSBpZiAoKHxwaXBlbGluZV9icmlkZ2VfczFfbWFzdGVyX3FyZXFfdmVjdG9yICYgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9waXBlbGluZV9icmlkZ2VfczEpIHwgKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fcGlwZWxpbmVfYnJpZGdlX3MxICYgfnBpcGVsaW5lX2JyaWRnZV9zMV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKSkKLSAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSA8PSB8cGlwZWxpbmVfYnJpZGdlX3MxX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMS9kb3duc3RyZWFtIHBpcGVsaW5lX2JyaWRnZS9zMSBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FyYml0ZXJsb2NrID0gcGlwZWxpbmVfYnJpZGdlX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2VfczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgc2xhdmUgZW5hYmxlcyBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgPSB8cGlwZWxpbmVfYnJpZGdlX3MxX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzEvZG93bnN0cmVhbSBwaXBlbGluZV9icmlkZ2UvczEgYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYXJiaXRlcmxvY2syID0gcGlwZWxpbmVfYnJpZGdlX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyICYgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fY29udGludWVyZXF1ZXN0OwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8yL2Rvd25zdHJlYW0gcGlwZWxpbmVfYnJpZGdlL3MxIGFyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYXJiaXRlcmxvY2sgPSBwaXBlbGluZV9icmlkZ2VfczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMi9kb3duc3RyZWFtIHBpcGVsaW5lX2JyaWRnZS9zMSBhcmJpdGVybG9jazIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hcmJpdGVybG9jazIgPSBwaXBlbGluZV9icmlkZ2VfczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgJiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzIvZG93bnN0cmVhbSBncmFudGVkIHBpcGVsaW5lX2JyaWRnZS9zMSBsYXN0IHRpbWUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9waXBlbGluZV9icmlkZ2VfczEgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9waXBlbGluZV9icmlkZ2VfczEgPD0gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfcGlwZWxpbmVfYnJpZGdlX3MxID8gMSA6IChwaXBlbGluZV9icmlkZ2VfczFfYXJiaXRyYXRpb25faG9sZG9mZl9pbnRlcm5hbCB8IDApID8gMCA6IGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9waXBlbGluZV9icmlkZ2VfczE7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCA9IGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9waXBlbGluZV9icmlkZ2VfczEgJiAxOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX3MxX2FueV9jb250aW51ZXJlcXVlc3QgYXQgbGVhc3Qgb25lIG1hc3RlciBjb250aW51ZXMgcmVxdWVzdGluZywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9hbnlfY29udGludWVyZXF1ZXN0ID0gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fY29udGludWVyZXF1ZXN0IHwKLSAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMSA9IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlcXVlc3RzX3BpcGVsaW5lX2JyaWRnZV9zMSAmIH4oKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWQgJiAoKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciAhPSAwKSB8ICgxIDwgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyKSkpIHwgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYXJiaXRlcmxvY2spOwotICAvL3VuaXF1ZSBuYW1lIGZvciBwaXBlbGluZV9icmlkZ2VfczFfbW92ZV9vbl90b19uZXh0X3RyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbiA9IHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YXZhbGlkX2Zyb21fc2E7Ci0KLSAgLy9yZHZfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fdG9fcGlwZWxpbmVfYnJpZGdlX3MxLCB3aGljaCBpcyBhbiBlX2ZpZm9fd2l0aF9yZWdpc3RlcmVkX291dHB1dHMKLSAgcmR2X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3RvX3BpcGVsaW5lX2JyaWRnZV9zMV9tb2R1bGUgcmR2X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3RvX3BpcGVsaW5lX2JyaWRnZV9zMQotICAgICgKLSAgICAgIC5jbGVhcl9maWZvICAgICAgICAgICAoMSdiMCksCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgKGNsayksCi0gICAgICAuZGF0YV9pbiAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxKSwKLSAgICAgIC5kYXRhX291dCAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmR2X2ZpZm9fb3V0cHV0X2Zyb21fcGlwZWxpbmVfYnJpZGdlX3MxKSwKLSAgICAgIC5lbXB0eSAgICAgICAgICAgICAgICAoKSwKLSAgICAgIC5maWZvX2NvbnRhaW5zX29uZXNfbiAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmR2X2ZpZm9fZW1wdHlfcGlwZWxpbmVfYnJpZGdlX3MxKSwKLSAgICAgIC5mdWxsICAgICAgICAgICAgICAgICAoKSwKLSAgICAgIC5yZWFkICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbiksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgKHJlc2V0X24pLAotICAgICAgLnN5bmNfcmVzZXQgICAgICAgICAgICgxJ2IwKSwKLSAgICAgIC53cml0ZSAgICAgICAgICAgICAgICAoaW5fYV9yZWFkX2N5Y2xlICYgfnBpcGVsaW5lX2JyaWRnZV9zMV93YWl0c19mb3JfcmVhZCkKLSAgICApOwotCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxX3NoaWZ0X3JlZ2lzdGVyID0gfmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3Jkdl9maWZvX2VtcHR5X3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgLy9sb2NhbCByZWFkZGF0YXZhbGlkIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxID0gKHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgJiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZHZfZmlmb19vdXRwdXRfZnJvbV9waXBlbGluZV9icmlkZ2VfczEpICYgfiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZHZfZmlmb19lbXB0eV9waXBlbGluZV9icmlkZ2VfczE7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2VfczFfd3JpdGVkYXRhIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV93cml0ZWRhdGEgPSAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEpPyBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZWRhdGEgOgotICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlZGF0YTsKLQotICAvL2Fzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfZW5kb2ZwYWNrZXRfZnJvbV9zYSA9IHBpcGVsaW5lX2JyaWRnZV9zMV9lbmRvZnBhY2tldCBzbyB0aGF0IHN5bWJvbCBrbm93cyB3aGVyZSB0byBncm91cCBzaWduYWxzIHdoaWNoIG1heSBnbyB0byBtYXN0ZXIgb25seSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9lbmRvZnBhY2tldF9mcm9tX3NhID0gcGlwZWxpbmVfYnJpZGdlX3MxX2VuZG9mcGFja2V0OwotCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczEgPSAoMSkgJiAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZCB8IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlKTsKLSAgLy9jdXN0b21fZG1hX2J1cnN0XzEvZG93bnN0cmVhbSBncmFudGVkIHBpcGVsaW5lX2JyaWRnZS9zMSBsYXN0IHRpbWUsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9waXBlbGluZV9icmlkZ2VfczEgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9waXBlbGluZV9icmlkZ2VfczEgPD0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfcGlwZWxpbmVfYnJpZGdlX3MxID8gMSA6IChwaXBlbGluZV9icmlkZ2VfczFfYXJiaXRyYXRpb25faG9sZG9mZl9pbnRlcm5hbCB8IDApID8gMCA6IGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9waXBlbGluZV9icmlkZ2VfczE7Ci0gICAgZW5kCi0KLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2NvbnRpbnVlcmVxdWVzdCA9IGxhc3RfY3ljbGVfY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9zbGF2ZV9waXBlbGluZV9icmlkZ2VfczEgJiAxOwotCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9waXBlbGluZV9icmlkZ2VfczEgPSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczEgJiB+KChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkICYgKChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIgIT0gMCkgfCAoMSA8IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcikpKSB8IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FyYml0ZXJsb2NrKTsKLSAgLy9yZHZfZmlmb19mb3JfY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fdG9fcGlwZWxpbmVfYnJpZGdlX3MxLCB3aGljaCBpcyBhbiBlX2ZpZm9fd2l0aF9yZWdpc3RlcmVkX291dHB1dHMKLSAgcmR2X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3RvX3BpcGVsaW5lX2JyaWRnZV9zMV9tb2R1bGUgcmR2X2ZpZm9fZm9yX2N1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3RvX3BpcGVsaW5lX2JyaWRnZV9zMQotICAgICgKLSAgICAgIC5jbGVhcl9maWZvICAgICAgICAgICAoMSdiMCksCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgKGNsayksCi0gICAgICAuZGF0YV9pbiAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxKSwKLSAgICAgIC5kYXRhX291dCAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmR2X2ZpZm9fb3V0cHV0X2Zyb21fcGlwZWxpbmVfYnJpZGdlX3MxKSwKLSAgICAgIC5lbXB0eSAgICAgICAgICAgICAgICAoKSwKLSAgICAgIC5maWZvX2NvbnRhaW5zX29uZXNfbiAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmR2X2ZpZm9fZW1wdHlfcGlwZWxpbmVfYnJpZGdlX3MxKSwKLSAgICAgIC5mdWxsICAgICAgICAgICAgICAgICAoKSwKLSAgICAgIC5yZWFkICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX21vdmVfb25fdG9fbmV4dF90cmFuc2FjdGlvbiksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgKHJlc2V0X24pLAotICAgICAgLnN5bmNfcmVzZXQgICAgICAgICAgICgxJ2IwKSwKLSAgICAgIC53cml0ZSAgICAgICAgICAgICAgICAoaW5fYV9yZWFkX2N5Y2xlICYgfnBpcGVsaW5lX2JyaWRnZV9zMV93YWl0c19mb3JfcmVhZCkKLSAgICApOwotCi0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxX3NoaWZ0X3JlZ2lzdGVyID0gfmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3Jkdl9maWZvX2VtcHR5X3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgLy9sb2NhbCByZWFkZGF0YXZhbGlkIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczEsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxID0gKHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EgJiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZHZfZmlmb19vdXRwdXRfZnJvbV9waXBlbGluZV9icmlkZ2VfczEpICYgfiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZHZfZmlmb19lbXB0eV9waXBlbGluZV9icmlkZ2VfczE7Ci0KLSAgLy9hbGxvdyBuZXcgYXJiIGN5Y2xlIGZvciBwaXBlbGluZV9icmlkZ2UvczEsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfYWxsb3dfbmV3X2FyYl9jeWNsZSA9IH5jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hcmJpdGVybG9jayAmIH5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hcmJpdGVybG9jazsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMi9kb3duc3RyZWFtIGFzc2lnbm1lbnQgaW50byBtYXN0ZXIgcXVhbGlmaWVkLXJlcXVlc3RzIHZlY3RvciBmb3IgcGlwZWxpbmVfYnJpZGdlL3MxLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX21hc3Rlcl9xcmVxX3ZlY3RvclswXSA9IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMi9kb3duc3RyZWFtIGdyYW50IHBpcGVsaW5lX2JyaWRnZS9zMSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxID0gcGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3RvclswXTsKLQotICAvL2N1c3RvbV9kbWFfYnVyc3RfMi9kb3duc3RyZWFtIHNhdmVkLWdyYW50IHBpcGVsaW5lX2JyaWRnZS9zMSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3NhdmVkX2dyYW50X3BpcGVsaW5lX2JyaWRnZV9zMSA9IHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfd2lubmVyWzBdOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xL2Rvd25zdHJlYW0gYXNzaWdubWVudCBpbnRvIG1hc3RlciBxdWFsaWZpZWQtcmVxdWVzdHMgdmVjdG9yIGZvciBwaXBlbGluZV9icmlkZ2UvczEsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfbWFzdGVyX3FyZXFfdmVjdG9yWzFdID0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfcGlwZWxpbmVfYnJpZGdlX3MxOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xL2Rvd25zdHJlYW0gZ3JhbnQgcGlwZWxpbmVfYnJpZGdlL3MxLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEgPSBwaXBlbGluZV9icmlkZ2VfczFfZ3JhbnRfdmVjdG9yWzFdOwotCi0gIC8vY3VzdG9tX2RtYV9idXJzdF8xL2Rvd25zdHJlYW0gc2F2ZWQtZ3JhbnQgcGlwZWxpbmVfYnJpZGdlL3MxLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fc2F2ZWRfZ3JhbnRfcGlwZWxpbmVfYnJpZGdlX3MxID0gcGlwZWxpbmVfYnJpZGdlX3MxX2FyYl93aW5uZXJbMV07Ci0KLSAgLy9waXBlbGluZV9icmlkZ2UvczEgY2hvc2VuLW1hc3RlciBkb3VibGUtdmVjdG9yLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX2Nob3Nlbl9tYXN0ZXJfZG91YmxlX3ZlY3RvciA9IHtwaXBlbGluZV9icmlkZ2VfczFfbWFzdGVyX3FyZXFfdmVjdG9yLCBwaXBlbGluZV9icmlkZ2VfczFfbWFzdGVyX3FyZXFfdmVjdG9yfSAmICh7fnBpcGVsaW5lX2JyaWRnZV9zMV9tYXN0ZXJfcXJlcV92ZWN0b3IsIH5waXBlbGluZV9icmlkZ2VfczFfbWFzdGVyX3FyZXFfdmVjdG9yfSArIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfYWRkZW5kKTsKLQotICAvL3N0YWJsZSBvbmVob3QgZW5jb2Rpbmcgb2YgYXJiIHdpbm5lcgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX2FyYl93aW5uZXIgPSAocGlwZWxpbmVfYnJpZGdlX3MxX2FsbG93X25ld19hcmJfY3ljbGUgJiB8IHBpcGVsaW5lX2JyaWRnZV9zMV9ncmFudF92ZWN0b3IpID8gcGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3RvciA6IHBpcGVsaW5lX2JyaWRnZV9zMV9zYXZlZF9jaG9zZW5fbWFzdGVyX3ZlY3RvcjsKLQotICAvL3NhdmVkIHBpcGVsaW5lX2JyaWRnZV9zMV9ncmFudF92ZWN0b3IsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9zYXZlZF9jaG9zZW5fbWFzdGVyX3ZlY3RvciA8PSAwOwotICAgICAgZWxzZSBpZiAocGlwZWxpbmVfYnJpZGdlX3MxX2FsbG93X25ld19hcmJfY3ljbGUpCi0gICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX3NhdmVkX2Nob3Nlbl9tYXN0ZXJfdmVjdG9yIDw9IHxwaXBlbGluZV9icmlkZ2VfczFfZ3JhbnRfdmVjdG9yID8gcGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3RvciA6IHBpcGVsaW5lX2JyaWRnZV9zMV9zYXZlZF9jaG9zZW5fbWFzdGVyX3ZlY3RvcjsKLSAgICBlbmQKLQotCi0gIC8vb25laG90IGVuY29kaW5nIG9mIGNob3NlbiBtYXN0ZXIKLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9ncmFudF92ZWN0b3IgPSB7KHBpcGVsaW5lX2JyaWRnZV9zMV9jaG9zZW5fbWFzdGVyX2RvdWJsZV92ZWN0b3JbMV0gfCBwaXBlbGluZV9icmlkZ2VfczFfY2hvc2VuX21hc3Rlcl9kb3VibGVfdmVjdG9yWzNdKSwKLSAgICAocGlwZWxpbmVfYnJpZGdlX3MxX2Nob3Nlbl9tYXN0ZXJfZG91YmxlX3ZlY3RvclswXSB8IHBpcGVsaW5lX2JyaWRnZV9zMV9jaG9zZW5fbWFzdGVyX2RvdWJsZV92ZWN0b3JbMl0pfTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZS9zMSBjaG9zZW4gbWFzdGVyIHJvdGF0ZWQgbGVmdCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9jaG9zZW5fbWFzdGVyX3JvdF9sZWZ0ID0gKHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfd2lubmVyIDw8IDEpID8gKHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfd2lubmVyIDw8IDEpIDogMTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZS9zMSdzIGFkZGVuZCBmb3IgbmV4dC1tYXN0ZXItZ3JhbnQKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJfYWRkZW5kIDw9IDE7Ci0gICAgICBlbHNlIGlmICh8cGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3RvcikKLSAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfYXJiX2FkZGVuZCA8PSBwaXBlbGluZV9icmlkZ2VfczFfZW5kX3hmZXI/IHBpcGVsaW5lX2JyaWRnZV9zMV9jaG9zZW5fbWFzdGVyX3JvdF9sZWZ0IDogcGlwZWxpbmVfYnJpZGdlX3MxX2dyYW50X3ZlY3RvcjsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX3MxX3Jlc2V0X24gYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9yZXNldF9uID0gcmVzZXRfbjsKLQotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX2NoaXBzZWxlY3QgPSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSB8IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxOwotICAvL3BpcGVsaW5lX2JyaWRnZV9zMV9maXJzdHRyYW5zZmVyIGZpcnN0IHRyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX2ZpcnN0dHJhbnNmZXIgPSBwaXBlbGluZV9icmlkZ2VfczFfYmVnaW5zX3hmZXIgPyBwaXBlbGluZV9icmlkZ2VfczFfdW5yZWdfZmlyc3R0cmFuc2ZlciA6IHBpcGVsaW5lX2JyaWRnZV9zMV9yZWdfZmlyc3R0cmFuc2ZlcjsKLQotICAvL3BpcGVsaW5lX2JyaWRnZV9zMV91bnJlZ19maXJzdHRyYW5zZmVyIGZpcnN0IHRyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX3VucmVnX2ZpcnN0dHJhbnNmZXIgPSB+KHBpcGVsaW5lX2JyaWRnZV9zMV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlICYgcGlwZWxpbmVfYnJpZGdlX3MxX2FueV9jb250aW51ZXJlcXVlc3QpOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX3MxX3JlZ19maXJzdHRyYW5zZmVyIGZpcnN0IHRyYW5zYWN0aW9uLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfcmVnX2ZpcnN0dHJhbnNmZXIgPD0gMSdiMTsKLSAgICAgIGVsc2UgaWYgKHBpcGVsaW5lX2JyaWRnZV9zMV9iZWdpbnNfeGZlcikKLSAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfcmVnX2ZpcnN0dHJhbnNmZXIgPD0gcGlwZWxpbmVfYnJpZGdlX3MxX3VucmVnX2ZpcnN0dHJhbnNmZXI7Ci0gICAgZW5kCi0KLQotICAvL3BpcGVsaW5lX2JyaWRnZV9zMV9iZWdpbmJ1cnN0dHJhbnNmZXJfaW50ZXJuYWwgYmVnaW4gYnVyc3QgdHJhbnNmZXIsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsID0gcGlwZWxpbmVfYnJpZGdlX3MxX2JlZ2luc194ZmVyOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX3MxX2FyYml0cmF0aW9uX2hvbGRvZmZfaW50ZXJuYWwgYXJiaXRyYXRpb25faG9sZG9mZiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJpdHJhdGlvbl9ob2xkb2ZmX2ludGVybmFsID0gcGlwZWxpbmVfYnJpZGdlX3MxX2JlZ2luc194ZmVyICYgcGlwZWxpbmVfYnJpZGdlX3MxX2ZpcnN0dHJhbnNmZXI7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2VfczFfcmVhZCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX3JlYWQgPSAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEgJiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkKSB8IChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSAmIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWQpOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX3MxX3dyaXRlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfd3JpdGUgPSAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEgJiBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZSkgfCAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEgJiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZSk7Ci0KLSAgYXNzaWduIHNoaWZ0ZWRfYWRkcmVzc190b19waXBlbGluZV9icmlkZ2VfczFfZnJvbV9jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbSA9IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIC8vcGlwZWxpbmVfYnJpZGdlX3MxX2FkZHJlc3MgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX2FkZHJlc3MgPSAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEpPyAoc2hpZnRlZF9hZGRyZXNzX3RvX3BpcGVsaW5lX2JyaWRnZV9zMV9mcm9tX2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtID4+IDIpIDoKLSAgICAoc2hpZnRlZF9hZGRyZXNzX3RvX3BpcGVsaW5lX2JyaWRnZV9zMV9mcm9tX2N1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtID4+IDIpOwotCi0gIGFzc2lnbiBzaGlmdGVkX2FkZHJlc3NfdG9fcGlwZWxpbmVfYnJpZGdlX3MxX2Zyb21fY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW0gPSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICAvL3NsYXZlaWQgcGlwZWxpbmVfYnJpZGdlX3MxX25hdGl2ZWFkZHJlc3MgbmF0aXZlYWRkcmVzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfbmF0aXZlYWRkcmVzcyA9IChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MgOgotICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0KLSAgLy9kMV9waXBlbGluZV9icmlkZ2VfczFfZW5kX3hmZXIgcmVnaXN0ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3BpcGVsaW5lX2JyaWRnZV9zMV9lbmRfeGZlciA8PSAxOwotICAgICAgZWxzZSAKLSAgICAgICAgZDFfcGlwZWxpbmVfYnJpZGdlX3MxX2VuZF94ZmVyIDw9IHBpcGVsaW5lX2JyaWRnZV9zMV9lbmRfeGZlcjsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX3MxX3dhaXRzX2Zvcl9yZWFkIGluIGEgY3ljbGUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfd2FpdHNfZm9yX3JlYWQgPSBwaXBlbGluZV9icmlkZ2VfczFfaW5fYV9yZWFkX2N5Y2xlICYgcGlwZWxpbmVfYnJpZGdlX3MxX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2VfczFfaW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfaW5fYV9yZWFkX2N5Y2xlID0gKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxICYgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZCkgfCAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEgJiBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkKTsKLQotICAvL2luX2FfcmVhZF9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gaW5fYV9yZWFkX2N5Y2xlID0gcGlwZWxpbmVfYnJpZGdlX3MxX2luX2FfcmVhZF9jeWNsZTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZV9zMV93YWl0c19mb3Jfd3JpdGUgaW4gYSBjeWNsZSwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV93YWl0c19mb3Jfd3JpdGUgPSBwaXBlbGluZV9icmlkZ2VfczFfaW5fYV93cml0ZV9jeWNsZSAmIHBpcGVsaW5lX2JyaWRnZV9zMV93YWl0cmVxdWVzdF9mcm9tX3NhOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX3MxX2luX2Ffd3JpdGVfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9pbl9hX3dyaXRlX2N5Y2xlID0gKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxICYgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGUpIHwgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxICYgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGUpOwotCi0gIC8vaW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gaW5fYV93cml0ZV9jeWNsZSA9IHBpcGVsaW5lX2JyaWRnZV9zMV9pbl9hX3dyaXRlX2N5Y2xlOwotCi0gIGFzc2lnbiB3YWl0X2Zvcl9waXBlbGluZV9icmlkZ2VfczFfY291bnRlciA9IDA7Ci0gIC8vcGlwZWxpbmVfYnJpZGdlX3MxX2J5dGVlbmFibGUgYnl0ZSBlbmFibGUgcG9ydCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfYnl0ZWVuYWJsZSA9IChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J5dGVlbmFibGUgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2J5dGVlbmFibGUgOgotICAgIC0xOwotCi0gIC8vYnVyc3Rjb3VudCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfczFfYnVyc3Rjb3VudCA9IChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J1cnN0Y291bnQgOgotICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2J1cnN0Y291bnQgOgotICAgIDE7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2UvczEgYXJiaXRlcmxvY2sgYXNzaWduZWQgZnJvbSBfaGFuZGxlX2FyYml0ZXJsb2NrLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX2FyYml0ZXJsb2NrID0gKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FyYml0ZXJsb2NrKT8gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYXJiaXRlcmxvY2sgOgotICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FyYml0ZXJsb2NrOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlL3MxIGFyYml0ZXJsb2NrMiBhc3NpZ25lZCBmcm9tIF9oYW5kbGVfYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX3MxX2FyYml0ZXJsb2NrMiA9IChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hcmJpdGVybG9jazIpPyBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hcmJpdGVybG9jazIgOgotICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FyYml0ZXJsb2NrMjsKLQotICAvL2RlYnVnYWNjZXNzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9zMV9kZWJ1Z2FjY2VzcyA9IChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSk/IGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2RlYnVnYWNjZXNzIDoKLSAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEpPyBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyA6Ci0gICAgMDsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvL3BpcGVsaW5lX2JyaWRnZS9zMSBlbmFibGUgbm9uLXplcm8gYXNzZXJ0aW9ucywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAxJ2IxOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzEvZG93bnN0cmVhbSBub24temVybyBhcmJpdHJhdGlvbnNoYXJlIGFzc2VydGlvbiwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVxdWVzdHNfcGlwZWxpbmVfYnJpZGdlX3MxICYmIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlID09IDApICYmIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfMS9kb3duc3RyZWFtIGRyb3ZlIDAgb24gaXRzICdhcmJpdHJhdGlvbnNoYXJlJyBwb3J0IHdoaWxlIGFjY2Vzc2luZyBzbGF2ZSBwaXBlbGluZV9icmlkZ2UvczEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzEvZG93bnN0cmVhbSBub24temVybyBidXJzdGNvdW50IGFzc2VydGlvbiwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVxdWVzdHNfcGlwZWxpbmVfYnJpZGdlX3MxICYmIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9idXJzdGNvdW50ID09IDApICYmIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfMS9kb3duc3RyZWFtIGRyb3ZlIDAgb24gaXRzICdidXJzdGNvdW50JyBwb3J0IHdoaWxlIGFjY2Vzc2luZyBzbGF2ZSBwaXBlbGluZV9icmlkZ2UvczEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzIvZG93bnN0cmVhbSBub24temVybyBhcmJpdHJhdGlvbnNoYXJlIGFzc2VydGlvbiwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVxdWVzdHNfcGlwZWxpbmVfYnJpZGdlX3MxICYmIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlID09IDApICYmIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfMi9kb3duc3RyZWFtIGRyb3ZlIDAgb24gaXRzICdhcmJpdHJhdGlvbnNoYXJlJyBwb3J0IHdoaWxlIGFjY2Vzc2luZyBzbGF2ZSBwaXBlbGluZV9icmlkZ2UvczEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzIvZG93bnN0cmVhbSBub24temVybyBidXJzdGNvdW50IGFzc2VydGlvbiwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVxdWVzdHNfcGlwZWxpbmVfYnJpZGdlX3MxICYmIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9idXJzdGNvdW50ID09IDApICYmIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IGN1c3RvbV9kbWFfYnVyc3RfMi9kb3duc3RyZWFtIGRyb3ZlIDAgb24gaXRzICdidXJzdGNvdW50JyBwb3J0IHdoaWxlIGFjY2Vzc2luZyBzbGF2ZSBwaXBlbGluZV9icmlkZ2UvczEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9ncmFudCBzaWduYWxzIGFyZSBhY3RpdmUgc2ltdWx0YW5lb3VzbHksIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxICsgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEgPiAxKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiA+IDEgb2YgZ3JhbnQgc2lnbmFscyBhcmUgYWN0aXZlIHNpbXVsdGFuZW91c2x5IiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vc2F2ZWRfZ3JhbnQgc2lnbmFscyBhcmUgYWN0aXZlIHNpbXVsdGFuZW91c2x5LCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9waXBlbGluZV9icmlkZ2VfczEgKyBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9zYXZlZF9ncmFudF9waXBlbGluZV9icmlkZ2VfczEgPiAxKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiA+IDEgb2Ygc2F2ZWRfZ3JhbnQgc2lnbmFscyBhcmUgYWN0aXZlIHNpbXVsdGFuZW91c2x5IiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIHBpcGVsaW5lX2JyaWRnZV9tMV9hcmJpdHJhdG9yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3JlYWRkYXRhX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZG9mcGFja2V0X2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlYWRkYXRhX2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRyZXF1ZXN0X2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfY3B1X2p0YWdfZGVidWdfbW9kdWxlX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRfeGZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkMV9maXJfZG1hX2NvbnRyb2xfZW5kX3hmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX3N5c2lkX2NvbnRyb2xfc2xhdmVfZW5kX3hmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfdGltZXN0YW1wX3RpbWVyX3MxX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcl9kbWFfY29udHJvbF9yZWFkZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93YWl0cmVxdWVzdF9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2NwdV9qdGFnX2RlYnVnX21vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfZmlyX2RtYV9jb250cm9sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9zeXNpZF9jb250cm9sX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX3RpbWVzdGFtcF90aW1lcl9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3B1X2p0YWdfZGVidWdfbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2Zpcl9kbWFfY29udHJvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9zeXNpZF9jb250cm9sX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF90aW1lc3RhbXBfdGltZXJfczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9jcHVfanRhZ19kZWJ1Z19tb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9zeXNpZF9jb250cm9sX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfdGltZXN0YW1wX3RpbWVyX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19jcHVfanRhZ19kZWJ1Z19tb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2N1c3RvbV9kbWFfY2xvY2tfMF9pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfZmlyX2RtYV9jb250cm9sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3N5c2lkX2NvbnRyb2xfc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3RpbWVzdGFtcF90aW1lcl9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfcmVhZGRhdGFfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGFfZnJvbV9zYSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZW5kb2ZwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3dhaXRyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAxMTogMF0gcGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIG91dHB1dCAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2VuZG9mcGFja2V0OwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXI7Ci0gIG91dHB1dCAgWyAzMTogMF0gcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkZGF0YXZhbGlkOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAzMTogMF0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZG9mcGFja2V0X2Zyb21fc2E7Ci0gIGlucHV0ICAgWyAxNTogMF0gY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIGlucHV0ICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIGlucHV0ICAgICAgICAgICAgZDFfY3B1X2p0YWdfZGVidWdfbW9kdWxlX2VuZF94ZmVyOwotICBpbnB1dCAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRfeGZlcjsKLSAgaW5wdXQgICAgICAgICAgICBkMV9maXJfZG1hX2NvbnRyb2xfZW5kX3hmZXI7Ci0gIGlucHV0ICAgICAgICAgICAgZDFfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2VuZF94ZmVyOwotICBpbnB1dCAgICAgICAgICAgIGQxX3N5c2lkX2NvbnRyb2xfc2xhdmVfZW5kX3hmZXI7Ci0gIGlucHV0ICAgICAgICAgICAgZDFfdGltZXN0YW1wX3RpbWVyX3MxX2VuZF94ZmVyOwotICBpbnB1dCAgIFsgMzE6IDBdIGZpcl9kbWFfY29udHJvbF9yZWFkZGF0YV9mcm9tX3NhOwotICBpbnB1dCAgIFsgMzE6IDBdIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhOwotICBpbnB1dCAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93YWl0cmVxdWVzdF9mcm9tX3NhOwotICBpbnB1dCAgIFsgMTE6IDBdIHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50OwotICBpbnB1dCAgIFsgIDM6IDBdIHBpcGVsaW5lX2JyaWRnZV9tMV9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0OwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2NwdV9qdGFnX2RlYnVnX21vZHVsZTsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW47Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfZmlyX2RtYV9jb250cm9sOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZTsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9zeXNpZF9jb250cm9sX3NsYXZlOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX3RpbWVzdGFtcF90aW1lcl9zMTsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3B1X2p0YWdfZGVidWdfbW9kdWxlOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2Nsb2NrXzBfaW47Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2Zpcl9kbWFfY29udHJvbDsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9zeXNpZF9jb250cm9sX3NsYXZlOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF90aW1lc3RhbXBfdGltZXJfczE7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9jcHVfanRhZ19kZWJ1Z19tb2R1bGU7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW47Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2w7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmU7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9zeXNpZF9jb250cm9sX3NsYXZlOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfdGltZXN0YW1wX3RpbWVyX3MxOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19jcHVfanRhZ19kZWJ1Z19tb2R1bGU7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2N1c3RvbV9kbWFfY2xvY2tfMF9pbjsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfZmlyX2RtYV9jb250cm9sOwotICBpbnB1dCAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmU7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3N5c2lkX2NvbnRyb2xfc2xhdmU7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3RpbWVzdGFtcF90aW1lcl9zMTsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotICBpbnB1dCAgIFsgMzE6IDBdIHN5c2lkX2NvbnRyb2xfc2xhdmVfcmVhZGRhdGFfZnJvbV9zYTsKLSAgaW5wdXQgICBbIDE1OiAwXSB0aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGFfZnJvbV9zYTsKLQotICByZWcgICAgICAgICAgICAgIGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWU7Ci0gIHdpcmUgICAgICAgICAgICAgbGF0ZW5jeV9sb2FkX3ZhbHVlOwotICB3aXJlICAgICAgICAgICAgIHAxX3BpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXI7Ci0gIHJlZyAgICAgWyAxMTogMF0gcGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfbGFzdF90aW1lOwotICB3aXJlICAgIFsgMTE6IDBdIHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlOwotICByZWcgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50X2xhc3RfdGltZTsKLSAgcmVnICAgICBbICAzOiAwXSBwaXBlbGluZV9icmlkZ2VfbTFfYnl0ZWVuYWJsZV9sYXN0X3RpbWU7Ci0gIHJlZyAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3RfbGFzdF90aW1lOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9lbmRvZnBhY2tldDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfaXNfZ3JhbnRlZF9zb21lX3NsYXZlOwotICByZWcgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXI7Ci0gIHJlZyAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkOwotICByZWcgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2xhc3RfdGltZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3J1bjsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd2FpdHJlcXVlc3Q7Ci0gIHJlZyAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlX2xhc3RfdGltZTsKLSAgcmVnICAgICBbIDMxOiAwXSBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhX2xhc3RfdGltZTsKLSAgd2lyZSAgICAgICAgICAgICBwcmVfZmx1c2hfcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgcl8wOwotICB3aXJlICAgICAgICAgICAgIHJfMTsKLSAgLy9yXzAgbWFzdGVyX3J1biBjYXNjYWRlZCB3YWl0IGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiByXzAgPSAxICYgKHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9jcHVfanRhZ19kZWJ1Z19tb2R1bGUgfCB+cGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2NwdV9qdGFnX2RlYnVnX21vZHVsZSkgJiAoKH5waXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3B1X2p0YWdfZGVidWdfbW9kdWxlIHwgfihwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSB8ICgxICYgfmQxX2NwdV9qdGFnX2RlYnVnX21vZHVsZV9lbmRfeGZlciAmIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSkpKSAmICgofnBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9jcHVfanRhZ19kZWJ1Z19tb2R1bGUgfCB+KHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSB8ICgxICYgKHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSkpKSAmIDEgJiAocGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfY2xvY2tfMF9pbiB8IH5waXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3VzdG9tX2RtYV9jbG9ja18wX2luKSAmICgofnBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gfCB+cGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QgfCAoMSAmIH5jdXN0b21fZG1hX2Nsb2NrXzBfaW5fd2FpdHJlcXVlc3RfZnJvbV9zYSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSkpICYgKCh+cGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfY2xvY2tfMF9pbiB8IH5waXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCB8ICgxICYgfmN1c3RvbV9kbWFfY2xvY2tfMF9pbl93YWl0cmVxdWVzdF9mcm9tX3NhICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpKSkgJiAxICYgKHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9maXJfZG1hX2NvbnRyb2wgfCB+cGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2Zpcl9kbWFfY29udHJvbCkgJiAoKH5waXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfZmlyX2RtYV9jb250cm9sIHwgfnBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0IHwgKDEgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkpKSAmICgofnBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9maXJfZG1hX2NvbnRyb2wgfCB+cGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QgfCAoMSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSkpICYgMSAmIChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlIHwgfnBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUpICYgKCh+cGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZSB8IH5waXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCB8ICgxICYgfmp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93YWl0cmVxdWVzdF9mcm9tX3NhICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpKSkgJiAoKH5waXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlIHwgfnBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0IHwgKDEgJiB+anRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dhaXRyZXF1ZXN0X2Zyb21fc2EgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkpKSAmIDEgJiAocGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X3N5c2lkX2NvbnRyb2xfc2xhdmUgfCB+cGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3N5c2lkX2NvbnRyb2xfc2xhdmUpICYgKCh+cGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X3N5c2lkX2NvbnRyb2xfc2xhdmUgfCB+KHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpIHwgKDEgJiB+ZDFfc3lzaWRfY29udHJvbF9zbGF2ZV9lbmRfeGZlciAmIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSkpKSAmICgofnBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9zeXNpZF9jb250cm9sX3NsYXZlIHwgfihwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkgfCAoMSAmIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkpKSk7Ci0KLSAgLy9jYXNjYWRlZCB3YWl0IGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfcnVuID0gcl8wICYgcl8xOwotCi0gIC8vcl8xIG1hc3Rlcl9ydW4gY2FzY2FkZWQgd2FpdCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcl8xID0gMSAmIChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfdGltZXN0YW1wX3RpbWVyX3MxIHwgfnBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c190aW1lc3RhbXBfdGltZXJfczEpICYgKCh+cGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X3RpbWVzdGFtcF90aW1lcl9zMSB8IH4ocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkgfCAoMSAmIH5kMV90aW1lc3RhbXBfdGltZXJfczFfZW5kX3hmZXIgJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkpKSkgJiAoKH5waXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfdGltZXN0YW1wX3RpbWVyX3MxIHwgfihwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkgfCAoMSAmIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkpKSk7Ci0KLSAgLy9vcHRpbWl6ZSBzZWxlY3QtbG9naWMgYnkgcGFzc2luZyBvbmx5IHRob3NlIGFkZHJlc3MgYml0cyB3aGljaCBtYXR0ZXIuCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZSA9IHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzWzExIDogMF07Ci0KLSAgLy9waXBlbGluZV9icmlkZ2VfbTFfcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgPD0gKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpICYgcGlwZWxpbmVfYnJpZGdlX20xX3J1biAmIH5waXBlbGluZV9icmlkZ2VfbTFfaXNfZ3JhbnRlZF9zb21lX3NsYXZlOwotICAgIGVuZAotCi0KLSAgLy9zb21lIHNsYXZlIGlzIGdldHRpbmcgc2VsZWN0ZWQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfaXNfZ3JhbnRlZF9zb21lX3NsYXZlID0gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfY3B1X2p0YWdfZGVidWdfbW9kdWxlIHwKLSAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gfAotICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2Zpcl9kbWFfY29udHJvbCB8Ci0gICAgcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlIHwKLSAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9zeXNpZF9jb250cm9sX3NsYXZlIHwKLSAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF90aW1lc3RhbXBfdGltZXJfczE7Ci0KLSAgLy9sYXRlbnQgc2xhdmUgcmVhZCBkYXRhIHZhbGlkcyB3aGljaCBtYXkgYmUgZmx1c2hlZCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHByZV9mbHVzaF9waXBlbGluZV9icmlkZ2VfbTFfcmVhZGRhdGF2YWxpZCA9IHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfZmlyX2RtYV9jb250cm9sOwotCi0gIC8vbGF0ZW50IHNsYXZlIHJlYWQgZGF0YSB2YWxpZCB3aGljaCBpcyBub3QgZmx1c2hlZCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkZGF0YXZhbGlkID0gcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfYnV0X25vX3NsYXZlX3NlbGVjdGVkIHwKLSAgICBwcmVfZmx1c2hfcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRkYXRhdmFsaWQgfAotICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfY3B1X2p0YWdfZGVidWdfbW9kdWxlIHwKLSAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgfAotICAgIHByZV9mbHVzaF9waXBlbGluZV9icmlkZ2VfbTFfcmVhZGRhdGF2YWxpZCB8Ci0gICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gfAotICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCB8Ci0gICAgcHJlX2ZsdXNoX3BpcGVsaW5lX2JyaWRnZV9tMV9yZWFkZGF0YXZhbGlkIHwKLSAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9idXRfbm9fc2xhdmVfc2VsZWN0ZWQgfAotICAgIHByZV9mbHVzaF9waXBlbGluZV9icmlkZ2VfbTFfcmVhZGRhdGF2YWxpZCB8Ci0gICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUgfAotICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCB8Ci0gICAgcHJlX2ZsdXNoX3BpcGVsaW5lX2JyaWRnZV9tMV9yZWFkZGF0YXZhbGlkIHwKLSAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX3N5c2lkX2NvbnRyb2xfc2xhdmUgfAotICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2J1dF9ub19zbGF2ZV9zZWxlY3RlZCB8Ci0gICAgcHJlX2ZsdXNoX3BpcGVsaW5lX2JyaWRnZV9tMV9yZWFkZGF0YXZhbGlkIHwKLSAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX3RpbWVzdGFtcF90aW1lcl9zMTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZS9tMSByZWFkZGF0YSBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZGRhdGEgPSAoezMyIHt+KChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3B1X2p0YWdfZGVidWdfbW9kdWxlICYgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpKSl9fSB8IGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZWFkZGF0YV9mcm9tX3NhKSAmCi0gICAgKHszMiB7figocGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfY2xvY2tfMF9pbiAmIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSkpfX0gfCBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVhZGRhdGFfZnJvbV9zYSkgJgotICAgICh7MzIge35waXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2Zpcl9kbWFfY29udHJvbH19IHwgZmlyX2RtYV9jb250cm9sX3JlYWRkYXRhX2Zyb21fc2EpICYKLSAgICAoezMyIHt+KChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlICYgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpKSl9fSB8IGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhKSAmCi0gICAgKHszMiB7figocGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X3N5c2lkX2NvbnRyb2xfc2xhdmUgJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkpKX19IHwgc3lzaWRfY29udHJvbF9zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhKSAmCi0gICAgKHszMiB7figocGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X3RpbWVzdGFtcF90aW1lcl9zMSAmIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSkpfX0gfCB0aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGFfZnJvbV9zYSk7Ci0KLSAgLy9hY3R1YWwgd2FpdHJlcXVlc3QgcG9ydCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV93YWl0cmVxdWVzdCA9IH5waXBlbGluZV9icmlkZ2VfbTFfcnVuOwotCi0gIC8vbGF0ZW50IG1heCBjb3VudGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyIDw9IHAxX3BpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXI7Ci0gICAgZW5kCi0KLQotICAvL2xhdGVuY3kgY291bnRlciBsb2FkIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHAxX3BpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXIgPSAoKHBpcGVsaW5lX2JyaWRnZV9tMV9ydW4gJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkpKT8gbGF0ZW5jeV9sb2FkX3ZhbHVlIDoKLSAgICAocGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlcik/IHBpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXIgLSAxIDoKLSAgICAwOwotCi0gIC8vcmVhZCBsYXRlbmN5IGxvYWQgdmFsdWVzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gbGF0ZW5jeV9sb2FkX3ZhbHVlID0gezEge3BpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19maXJfZG1hX2NvbnRyb2x9fSAmIDE7Ci0KLSAgLy9tdXggcGlwZWxpbmVfYnJpZGdlX20xX2VuZG9mcGFja2V0LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX2VuZG9mcGFja2V0ID0gY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZG9mcGFja2V0X2Zyb21fc2E7Ci0KLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgLy9waXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzcyBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfbGFzdF90aW1lIDw9IHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzOwotICAgIGVuZAotCi0KLSAgLy9waXBlbGluZV9icmlkZ2UvbTEgd2FpdGVkIGxhc3QgdGltZSwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSA8PSBwaXBlbGluZV9icmlkZ2VfbTFfd2FpdHJlcXVlc3QgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdDsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3MgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzcyAhPSBwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc19sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzcyBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL3BpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0IGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3RfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdF9sYXN0X3RpbWUgPD0gcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3Q7Ci0gICAgZW5kCi0KLQotICAvL3BpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0IG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAocGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QgIT0gcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3RfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9waXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCBjaGVjayBhZ2FpbnN0IHdhaXQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50X2xhc3RfdGltZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2J1cnN0Y291bnRfbGFzdF90aW1lIDw9IHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgLy9waXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCBtYXRjaGVzIGxhc3QgcG9ydF9uYW1lLCB3aGljaCBpcyBhbiBlX3Byb2Nlc3MKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChhY3RpdmVfYW5kX3dhaXRpbmdfbGFzdF90aW1lICYgKHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50ICE9IHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50X2xhc3RfdGltZSkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50IGRpZCBub3QgaGVlZCB3YWl0ISEhIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYnl0ZWVuYWJsZV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ieXRlZW5hYmxlX2xhc3RfdGltZSA8PSBwaXBlbGluZV9icmlkZ2VfbTFfYnl0ZWVuYWJsZTsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChwaXBlbGluZV9icmlkZ2VfbTFfYnl0ZWVuYWJsZSAhPSBwaXBlbGluZV9icmlkZ2VfbTFfYnl0ZWVuYWJsZV9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBwaXBlbGluZV9icmlkZ2VfbTFfYnl0ZWVuYWJsZSBkaWQgbm90IGhlZWQgd2FpdCEhISIsICR0aW1lKTsKLSAgICAgICAgICAkc3RvcDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvL3BpcGVsaW5lX2JyaWRnZV9tMV9yZWFkIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9sYXN0X3RpbWUgPD0gcGlwZWxpbmVfYnJpZGdlX20xX3JlYWQ7Ci0gICAgZW5kCi0KLQotICAvL3BpcGVsaW5lX2JyaWRnZV9tMV9yZWFkIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgIT0gcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfbGFzdF90aW1lKSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICAkd3JpdGUoIiUwZCBuczogcGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9waXBlbGluZV9icmlkZ2VfbTFfd3JpdGUgY2hlY2sgYWdhaW5zdCB3YWl0LCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVfbGFzdF90aW1lIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVfbGFzdF90aW1lIDw9IHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZTsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlIG1hdGNoZXMgbGFzdCBwb3J0X25hbWUsIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGFjdGl2ZV9hbmRfd2FpdGluZ19sYXN0X3RpbWUgJiAocGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlICE9IHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZV9sYXN0X3RpbWUpKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy9waXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhIGNoZWNrIGFnYWluc3Qgd2FpdCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YV9sYXN0X3RpbWUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZWRhdGFfbGFzdF90aW1lIDw9IHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotICAvL3BpcGVsaW5lX2JyaWRnZV9tMV93cml0ZWRhdGEgbWF0Y2hlcyBsYXN0IHBvcnRfbmFtZSwgd2hpY2ggaXMgYW4gZV9wcm9jZXNzCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAoYWN0aXZlX2FuZF93YWl0aW5nX2xhc3RfdGltZSAmIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhICE9IHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZWRhdGFfbGFzdF90aW1lKSAmIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZWRhdGEgZGlkIG5vdCBoZWVkIHdhaXQhISEiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcGlwZWxpbmVfYnJpZGdlX2JyaWRnZV9hcmJpdHJhdG9yIAotOwotCi0KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIHBsbF9zMV9hcmJpdHJhdG9yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9hZGRyZXNzX3RvX3NsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfbmF0aXZlYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGxfczFfcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxsX3MxX3Jlc2V0cmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfZ3JhbnRlZF9wbGxfczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9xdWFsaWZpZWRfcmVxdWVzdF9wbGxfczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkX2RhdGFfdmFsaWRfcGxsX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVxdWVzdHNfcGxsX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQxX3BsbF9zMV9lbmRfeGZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGxfczFfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGxfczFfY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGxfczFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGxfczFfcmVhZGRhdGFfZnJvbV9zYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGxfczFfcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGxfczFfcmVzZXRyZXF1ZXN0X2Zyb21fc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxsX3MxX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsbF9zMV93cml0ZWRhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2dyYW50ZWRfcGxsX3MxOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcXVhbGlmaWVkX3JlcXVlc3RfcGxsX3MxOwotICBvdXRwdXQgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZF9kYXRhX3ZhbGlkX3BsbF9zMTsKLSAgb3V0cHV0ICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlcXVlc3RzX3BsbF9zMTsKLSAgb3V0cHV0ICAgICAgICAgICBkMV9wbGxfczFfZW5kX3hmZXI7Ci0gIG91dHB1dCAgWyAgMjogMF0gcGxsX3MxX2FkZHJlc3M7Ci0gIG91dHB1dCAgICAgICAgICAgcGxsX3MxX2NoaXBzZWxlY3Q7Ci0gIG91dHB1dCAgICAgICAgICAgcGxsX3MxX3JlYWQ7Ci0gIG91dHB1dCAgWyAxNTogMF0gcGxsX3MxX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIG91dHB1dCAgICAgICAgICAgcGxsX3MxX3Jlc2V0X247Ci0gIG91dHB1dCAgICAgICAgICAgcGxsX3MxX3Jlc2V0cmVxdWVzdF9mcm9tX3NhOwotICBvdXRwdXQgICAgICAgICAgIHBsbF9zMV93cml0ZTsKLSAgb3V0cHV0ICBbIDE1OiAwXSBwbGxfczFfd3JpdGVkYXRhOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbICAzOiAwXSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FkZHJlc3NfdG9fc2xhdmU7Ci0gIGlucHV0ICAgWyAgMjogMF0gY3VzdG9tX2RtYV9jbG9ja18wX291dF9uYXRpdmVhZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlOwotICBpbnB1dCAgIFsgMTU6IDBdIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGVkYXRhOwotICBpbnB1dCAgIFsgMTU6IDBdIHBsbF9zMV9yZWFkZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBwbGxfczFfcmVzZXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0KLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfZ3JhbnRlZF9wbGxfczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9xdWFsaWZpZWRfcmVxdWVzdF9wbGxfczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkX2RhdGFfdmFsaWRfcGxsX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVxdWVzdHNfcGxsX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfc2F2ZWRfZ3JhbnRfcGxsX3MxOwotICByZWcgICAgICAgICAgICAgIGQxX3BsbF9zMV9lbmRfeGZlcjsKLSAgcmVnICAgICAgICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQ7Ci0gIHJlZyAgICAgICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9uczsKLSAgd2lyZSAgICAgICAgICAgICBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3BsbF9zMTsKLSAgd2lyZSAgICAgICAgICAgICBpbl9hX3JlYWRfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV93cml0ZV9jeWNsZTsKLSAgd2lyZSAgICBbICAyOiAwXSBwbGxfczFfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBwbGxfczFfYWxsZ3JhbnRzOwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV9hbGxvd19uZXdfYXJiX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50OwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV9hbnlfY29udGludWVyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV9hcmJfY291bnRlcl9lbmFibGU7Ci0gIHJlZyAgICAgICAgICAgICAgcGxsX3MxX2FyYl9zaGFyZV9jb3VudGVyOwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV9hcmJfc2hhcmVfc2V0X3ZhbHVlczsKLSAgd2lyZSAgICAgICAgICAgICBwbGxfczFfYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsOwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV9iZWdpbnNfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBwbGxfczFfY2hpcHNlbGVjdDsKLSAgd2lyZSAgICAgICAgICAgICBwbGxfczFfZW5kX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcGxsX3MxX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcGxsX3MxX2dyYW50X3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBwbGxfczFfaW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV9pbl9hX3dyaXRlX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV9tYXN0ZXJfcXJlcV92ZWN0b3I7Ci0gIHdpcmUgICAgICAgICAgICAgcGxsX3MxX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHM7Ci0gIHdpcmUgICAgICAgICAgICAgcGxsX3MxX3JlYWQ7Ci0gIHdpcmUgICAgWyAxNTogMF0gcGxsX3MxX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIHJlZyAgICAgICAgICAgICAgcGxsX3MxX3JlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV9yZXNldHJlcXVlc3RfZnJvbV9zYTsKLSAgcmVnICAgICAgICAgICAgICBwbGxfczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBwbGxfczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTI7Ci0gIHdpcmUgICAgICAgICAgICAgcGxsX3MxX3VucmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcGxsX3MxX3dhaXRzX2Zvcl9yZWFkOwotICB3aXJlICAgICAgICAgICAgIHBsbF9zMV93YWl0c19mb3Jfd3JpdGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGxsX3MxX3dyaXRlOwotICB3aXJlICAgIFsgMTU6IDBdIHBsbF9zMV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdF9mb3JfcGxsX3MxX2NvdW50ZXI7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdCA8PSB+cGxsX3MxX2VuZF94ZmVyOwotICAgIGVuZAotCi0KLSAgYXNzaWduIHBsbF9zMV9iZWdpbnNfeGZlciA9IH5kMV9yZWFzb25zX3RvX3dhaXQgJiAoKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcXVhbGlmaWVkX3JlcXVlc3RfcGxsX3MxKSk7Ci0gIC8vYXNzaWduIHBsbF9zMV9yZWFkZGF0YV9mcm9tX3NhID0gcGxsX3MxX3JlYWRkYXRhIHNvIHRoYXQgc3ltYm9sIGtub3dzIHdoZXJlIHRvIGdyb3VwIHNpZ25hbHMgd2hpY2ggbWF5IGdvIHRvIG1hc3RlciBvbmx5LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGxsX3MxX3JlYWRkYXRhX2Zyb21fc2EgPSBwbGxfczFfcmVhZGRhdGE7Ci0KLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVxdWVzdHNfcGxsX3MxID0gKDEpICYgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZCB8IGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGUpOwotICAvL3BsbF9zMV9hcmJfc2hhcmVfY291bnRlciBzZXQgdmFsdWVzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGxsX3MxX2FyYl9zaGFyZV9zZXRfdmFsdWVzID0gMTsKLQotICAvL3BsbF9zMV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHBsbF9zMV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzID0gY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZXF1ZXN0c19wbGxfczE7Ci0KLSAgLy9wbGxfczFfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwbGxfczFfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCA9IDA7Ci0KLSAgLy9wbGxfczFfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGxsX3MxX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWUgPSBwbGxfczFfZmlyc3R0cmFuc2ZlciA/IChwbGxfczFfYXJiX3NoYXJlX3NldF92YWx1ZXMgLSAxKSA6IHxwbGxfczFfYXJiX3NoYXJlX2NvdW50ZXIgPyAocGxsX3MxX2FyYl9zaGFyZV9jb3VudGVyIC0gMSkgOiAwOwotCi0gIC8vcGxsX3MxX2FsbGdyYW50cyBhbGwgc2xhdmUgZ3JhbnRzLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGxsX3MxX2FsbGdyYW50cyA9IHxwbGxfczFfZ3JhbnRfdmVjdG9yOwotCi0gIC8vcGxsX3MxX2VuZF94ZmVyIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwbGxfczFfZW5kX3hmZXIgPSB+KHBsbF9zMV93YWl0c19mb3JfcmVhZCB8IHBsbF9zMV93YWl0c19mb3Jfd3JpdGUpOwotCi0gIC8vZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9wbGxfczEgYXJiIHNoYXJlIGNvdW50ZXIgZW5hYmxlIHRlcm0sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3BsbF9zMSA9IHBsbF9zMV9lbmRfeGZlciAmICh+cGxsX3MxX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgfCBpbl9hX3JlYWRfY3ljbGUgfCBpbl9hX3dyaXRlX2N5Y2xlKTsKLQotICAvL3BsbF9zMV9hcmJfc2hhcmVfY291bnRlciBhcmJpdHJhdGlvbiBjb3VudGVyIGVuYWJsZSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBsbF9zMV9hcmJfY291bnRlcl9lbmFibGUgPSAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9wbGxfczEgJiBwbGxfczFfYWxsZ3JhbnRzKSB8IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3BsbF9zMSAmIH5wbGxfczFfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyk7Ci0KLSAgLy9wbGxfczFfYXJiX3NoYXJlX2NvdW50ZXIgY291bnRlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcGxsX3MxX2FyYl9zaGFyZV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIGlmIChwbGxfczFfYXJiX2NvdW50ZXJfZW5hYmxlKQotICAgICAgICAgIHBsbF9zMV9hcmJfc2hhcmVfY291bnRlciA8PSBwbGxfczFfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgICBlbmQKLQotCi0gIC8vcGxsX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgc2xhdmUgZW5hYmxlcyBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcGxsX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKCh8cGxsX3MxX21hc3Rlcl9xcmVxX3ZlY3RvciAmIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fcGxsX3MxKSB8IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3BsbF9zMSAmIH5wbGxfczFfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cykpCi0gICAgICAgICAgcGxsX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgPD0gfHBsbF9zMV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICAgIGVuZAotCi0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzAvb3V0IHBsbC9zMSBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYXJiaXRlcmxvY2sgPSBwbGxfczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZSAmIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfY29udGludWVyZXF1ZXN0OwotCi0gIC8vcGxsX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyIHNsYXZlIGVuYWJsZXMgYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGxsX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyID0gfHBsbF9zMV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wL291dCBwbGwvczEgYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX291dF9hcmJpdGVybG9jazIgPSBwbGxfczFfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgJiBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL3BsbF9zMV9hbnlfY29udGludWVyZXF1ZXN0IGF0IGxlYXN0IG9uZSBtYXN0ZXIgY29udGludWVzIHJlcXVlc3RpbmcsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwbGxfczFfYW55X2NvbnRpbnVlcmVxdWVzdCA9IDE7Ci0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfY29udGludWVyZXF1ZXN0ID0gMTsKLQotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX291dF9xdWFsaWZpZWRfcmVxdWVzdF9wbGxfczEgPSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlcXVlc3RzX3BsbF9zMTsKLSAgLy9wbGxfczFfd3JpdGVkYXRhIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHBsbF9zMV93cml0ZWRhdGEgPSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlZGF0YTsKLQotICAvL21hc3RlciBpcyBhbHdheXMgZ3JhbnRlZCB3aGVuIHJlcXVlc3RlZAotICBhc3NpZ24gY3VzdG9tX2RtYV9jbG9ja18wX291dF9ncmFudGVkX3BsbF9zMSA9IGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcXVhbGlmaWVkX3JlcXVlc3RfcGxsX3MxOwotCi0gIC8vY3VzdG9tX2RtYV9jbG9ja18wL291dCBzYXZlZC1ncmFudCBwbGwvczEsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3NhdmVkX2dyYW50X3BsbF9zMSA9IGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVxdWVzdHNfcGxsX3MxOwotCi0gIC8vYWxsb3cgbmV3IGFyYiBjeWNsZSBmb3IgcGxsL3MxLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGxsX3MxX2FsbG93X25ld19hcmJfY3ljbGUgPSAxOwotCi0gIC8vcGxhY2Vob2xkZXIgY2hvc2VuIG1hc3RlcgotICBhc3NpZ24gcGxsX3MxX2dyYW50X3ZlY3RvciA9IDE7Ci0KLSAgLy9wbGFjZWhvbGRlciB2ZWN0b3Igb2YgbWFzdGVyIHF1YWxpZmllZC1yZXF1ZXN0cwotICBhc3NpZ24gcGxsX3MxX21hc3Rlcl9xcmVxX3ZlY3RvciA9IDE7Ci0KLSAgLy9wbGxfczFfcmVzZXRfbiBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGxsX3MxX3Jlc2V0X24gPSByZXNldF9uOwotCi0gIC8vYXNzaWduIHBsbF9zMV9yZXNldHJlcXVlc3RfZnJvbV9zYSA9IHBsbF9zMV9yZXNldHJlcXVlc3Qgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwbGxfczFfcmVzZXRyZXF1ZXN0X2Zyb21fc2EgPSBwbGxfczFfcmVzZXRyZXF1ZXN0OwotCi0gIGFzc2lnbiBwbGxfczFfY2hpcHNlbGVjdCA9IGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfZ3JhbnRlZF9wbGxfczE7Ci0gIC8vcGxsX3MxX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwbGxfczFfZmlyc3R0cmFuc2ZlciA9IHBsbF9zMV9iZWdpbnNfeGZlciA/IHBsbF9zMV91bnJlZ19maXJzdHRyYW5zZmVyIDogcGxsX3MxX3JlZ19maXJzdHRyYW5zZmVyOwotCi0gIC8vcGxsX3MxX3VucmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwbGxfczFfdW5yZWdfZmlyc3R0cmFuc2ZlciA9IH4ocGxsX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiBwbGxfczFfYW55X2NvbnRpbnVlcmVxdWVzdCk7Ci0KLSAgLy9wbGxfczFfcmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHBsbF9zMV9yZWdfZmlyc3R0cmFuc2ZlciA8PSAxJ2IxOwotICAgICAgZWxzZSBpZiAocGxsX3MxX2JlZ2luc194ZmVyKQotICAgICAgICAgIHBsbF9zMV9yZWdfZmlyc3R0cmFuc2ZlciA8PSBwbGxfczFfdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgICBlbmQKLQotCi0gIC8vcGxsX3MxX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCBiZWdpbiBidXJzdCB0cmFuc2Zlciwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBsbF9zMV9iZWdpbmJ1cnN0dHJhbnNmZXJfaW50ZXJuYWwgPSBwbGxfczFfYmVnaW5zX3hmZXI7Ci0KLSAgLy9wbGxfczFfcmVhZCBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGxsX3MxX3JlYWQgPSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2dyYW50ZWRfcGxsX3MxICYgY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkOwotCi0gIC8vcGxsX3MxX3dyaXRlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBwbGxfczFfd3JpdGUgPSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2dyYW50ZWRfcGxsX3MxICYgY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZTsKLQotICAvL3BsbF9zMV9hZGRyZXNzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHBsbF9zMV9hZGRyZXNzID0gY3VzdG9tX2RtYV9jbG9ja18wX291dF9uYXRpdmVhZGRyZXNzOwotCi0gIC8vZDFfcGxsX3MxX2VuZF94ZmVyIHJlZ2lzdGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9wbGxfczFfZW5kX3hmZXIgPD0gMTsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX3BsbF9zMV9lbmRfeGZlciA8PSBwbGxfczFfZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICAvL3BsbF9zMV93YWl0c19mb3JfcmVhZCBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGxsX3MxX3dhaXRzX2Zvcl9yZWFkID0gcGxsX3MxX2luX2FfcmVhZF9jeWNsZSAmIHBsbF9zMV9iZWdpbnNfeGZlcjsKLQotICAvL3BsbF9zMV9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBsbF9zMV9pbl9hX3JlYWRfY3ljbGUgPSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2dyYW50ZWRfcGxsX3MxICYgY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkOwotCi0gIC8vaW5fYV9yZWFkX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBpbl9hX3JlYWRfY3ljbGUgPSBwbGxfczFfaW5fYV9yZWFkX2N5Y2xlOwotCi0gIC8vcGxsX3MxX3dhaXRzX2Zvcl93cml0ZSBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGxsX3MxX3dhaXRzX2Zvcl93cml0ZSA9IHBsbF9zMV9pbl9hX3dyaXRlX2N5Y2xlICYgMDsKLQotICAvL3BsbF9zMV9pbl9hX3dyaXRlX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwbGxfczFfaW5fYV93cml0ZV9jeWNsZSA9IGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfZ3JhbnRlZF9wbGxfczEgJiBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlOwotCi0gIC8vaW5fYV93cml0ZV9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gaW5fYV93cml0ZV9jeWNsZSA9IHBsbF9zMV9pbl9hX3dyaXRlX2N5Y2xlOwotCi0gIGFzc2lnbiB3YWl0X2Zvcl9wbGxfczFfY291bnRlciA9IDA7Ci0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vcGxsL3MxIGVuYWJsZSBub24temVybyBhc3NlcnRpb25zLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zIDw9IDEnYjE7Ci0gICAgZW5kCi0KLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBzeXNpZF9jb250cm9sX3NsYXZlX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNpZF9jb250cm9sX3NsYXZlX3JlYWRkYXRhLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfc3lzaWRfY29udHJvbF9zbGF2ZV9lbmRfeGZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfc3lzaWRfY29udHJvbF9zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X3N5c2lkX2NvbnRyb2xfc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfc3lzaWRfY29udHJvbF9zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3N5c2lkX2NvbnRyb2xfc2xhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGQxX3N5c2lkX2NvbnRyb2xfc2xhdmVfZW5kX3hmZXI7Ci0gIG91dHB1dCAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfc3lzaWRfY29udHJvbF9zbGF2ZTsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3Rfc3lzaWRfY29udHJvbF9zbGF2ZTsKLSAgb3V0cHV0ICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX3N5c2lkX2NvbnRyb2xfc2xhdmU7Ci0gIG91dHB1dCAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3N5c2lkX2NvbnRyb2xfc2xhdmU7Ci0gIG91dHB1dCAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9hZGRyZXNzOwotICBvdXRwdXQgIFsgMzE6IDBdIHN5c2lkX2NvbnRyb2xfc2xhdmVfcmVhZGRhdGFfZnJvbV9zYTsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAxMTogMF0gcGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3Q7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlcjsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGU7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICBbIDMxOiAwXSBzeXNpZF9jb250cm9sX3NsYXZlX3JlYWRkYXRhOwotCi0gIHJlZyAgICAgICAgICAgICAgZDFfcmVhc29uc190b193YWl0OwotICByZWcgICAgICAgICAgICAgIGQxX3N5c2lkX2NvbnRyb2xfc2xhdmVfZW5kX3hmZXI7Ci0gIHJlZyAgICAgICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9uczsKLSAgd2lyZSAgICAgICAgICAgICBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3N5c2lkX2NvbnRyb2xfc2xhdmU7Ci0gIHdpcmUgICAgICAgICAgICAgaW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIGluX2Ffd3JpdGVfY3ljbGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2NvbnRpbnVlcmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9zeXNpZF9jb250cm9sX3NsYXZlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9zeXNpZF9jb250cm9sX3NsYXZlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfc3lzaWRfY29udHJvbF9zbGF2ZTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfc3lzaWRfY29udHJvbF9zbGF2ZTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfc2F2ZWRfZ3JhbnRfc3lzaWRfY29udHJvbF9zbGF2ZTsKLSAgd2lyZSAgICBbIDExOiAwXSBzaGlmdGVkX2FkZHJlc3NfdG9fc3lzaWRfY29udHJvbF9zbGF2ZV9mcm9tX3BpcGVsaW5lX2JyaWRnZV9tMTsKLSAgd2lyZSAgICAgICAgICAgICBzeXNpZF9jb250cm9sX3NsYXZlX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9hbGxncmFudHM7Ci0gIHdpcmUgICAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9hbGxvd19uZXdfYXJiX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudDsKLSAgd2lyZSAgICAgICAgICAgICBzeXNpZF9jb250cm9sX3NsYXZlX2FueV9jb250aW51ZXJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9hcmJfY291bnRlcl9lbmFibGU7Ci0gIHJlZyAgICAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9hcmJfc2hhcmVfY291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBzeXNpZF9jb250cm9sX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gIHdpcmUgICAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9hcmJfc2hhcmVfc2V0X3ZhbHVlczsKLSAgd2lyZSAgICAgICAgICAgICBzeXNpZF9jb250cm9sX3NsYXZlX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbDsKLSAgd2lyZSAgICAgICAgICAgICBzeXNpZF9jb250cm9sX3NsYXZlX2JlZ2luc194ZmVyOwotICB3aXJlICAgICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfZW5kX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfZ3JhbnRfdmVjdG9yOwotICB3aXJlICAgICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfaW5fYV9yZWFkX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfaW5fYV93cml0ZV9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBzeXNpZF9jb250cm9sX3NsYXZlX21hc3Rlcl9xcmVxX3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICBzeXNpZF9jb250cm9sX3NsYXZlX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHM7Ci0gIHdpcmUgICAgWyAzMTogMF0gc3lzaWRfY29udHJvbF9zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhOwotICByZWcgICAgICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfcmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHJlZyAgICAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTI7Ci0gIHdpcmUgICAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV91bnJlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfd2FpdHNfZm9yX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV93YWl0c19mb3Jfd3JpdGU7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdF9mb3Jfc3lzaWRfY29udHJvbF9zbGF2ZV9jb3VudGVyOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfcmVhc29uc190b193YWl0IDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gfnN5c2lkX2NvbnRyb2xfc2xhdmVfZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gc3lzaWRfY29udHJvbF9zbGF2ZV9iZWdpbnNfeGZlciA9IH5kMV9yZWFzb25zX3RvX3dhaXQgJiAoKHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9zeXNpZF9jb250cm9sX3NsYXZlKSk7Ci0gIC8vYXNzaWduIHN5c2lkX2NvbnRyb2xfc2xhdmVfcmVhZGRhdGFfZnJvbV9zYSA9IHN5c2lkX2NvbnRyb2xfc2xhdmVfcmVhZGRhdGEgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX3JlYWRkYXRhX2Zyb21fc2EgPSBzeXNpZF9jb250cm9sX3NsYXZlX3JlYWRkYXRhOwotCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfc3lzaWRfY29udHJvbF9zbGF2ZSA9ICgoe3BpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlWzExIDogM10gLCAzJ2IwfSA9PSAxMidoODYwKSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSAmIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KTsKLSAgLy9zeXNpZF9jb250cm9sX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyIHNldCB2YWx1ZXMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX2FyYl9zaGFyZV9zZXRfdmFsdWVzID0gMTsKLQotICAvL3N5c2lkX2NvbnRyb2xfc2xhdmVfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgPSBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfc3lzaWRfY29udHJvbF9zbGF2ZTsKLQotICAvL3N5c2lkX2NvbnRyb2xfc2xhdmVfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudCBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgPSAwOwotCi0gIC8vc3lzaWRfY29udHJvbF9zbGF2ZV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWUgPSBzeXNpZF9jb250cm9sX3NsYXZlX2ZpcnN0dHJhbnNmZXIgPyAoc3lzaWRfY29udHJvbF9zbGF2ZV9hcmJfc2hhcmVfc2V0X3ZhbHVlcyAtIDEpIDogfHN5c2lkX2NvbnRyb2xfc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXIgPyAoc3lzaWRfY29udHJvbF9zbGF2ZV9hcmJfc2hhcmVfY291bnRlciAtIDEpIDogMDsKLQotICAvL3N5c2lkX2NvbnRyb2xfc2xhdmVfYWxsZ3JhbnRzIGFsbCBzbGF2ZSBncmFudHMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX2FsbGdyYW50cyA9IHxzeXNpZF9jb250cm9sX3NsYXZlX2dyYW50X3ZlY3RvcjsKLQotICAvL3N5c2lkX2NvbnRyb2xfc2xhdmVfZW5kX3hmZXIgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHN5c2lkX2NvbnRyb2xfc2xhdmVfZW5kX3hmZXIgPSB+KHN5c2lkX2NvbnRyb2xfc2xhdmVfd2FpdHNfZm9yX3JlYWQgfCBzeXNpZF9jb250cm9sX3NsYXZlX3dhaXRzX2Zvcl93cml0ZSk7Ci0KLSAgLy9lbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3N5c2lkX2NvbnRyb2xfc2xhdmUgYXJiIHNoYXJlIGNvdW50ZXIgZW5hYmxlIHRlcm0sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3N5c2lkX2NvbnRyb2xfc2xhdmUgPSBzeXNpZF9jb250cm9sX3NsYXZlX2VuZF94ZmVyICYgKH5zeXNpZF9jb250cm9sX3NsYXZlX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgfCBpbl9hX3JlYWRfY3ljbGUgfCBpbl9hX3dyaXRlX2N5Y2xlKTsKLQotICAvL3N5c2lkX2NvbnRyb2xfc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXIgYXJiaXRyYXRpb24gY291bnRlciBlbmFibGUsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX2FyYl9jb3VudGVyX2VuYWJsZSA9IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3N5c2lkX2NvbnRyb2xfc2xhdmUgJiBzeXNpZF9jb250cm9sX3NsYXZlX2FsbGdyYW50cykgfCAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9zeXNpZF9jb250cm9sX3NsYXZlICYgfnN5c2lkX2NvbnRyb2xfc2xhdmVfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0cyk7Ci0KLSAgLy9zeXNpZF9jb250cm9sX3NsYXZlX2FyYl9zaGFyZV9jb3VudGVyIGNvdW50ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHN5c2lkX2NvbnRyb2xfc2xhdmVfYXJiX2NvdW50ZXJfZW5hYmxlKQotICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXIgPD0gc3lzaWRfY29udHJvbF9zbGF2ZV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotICAgIGVuZAotCi0KLSAgLy9zeXNpZF9jb250cm9sX3NsYXZlX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgc2xhdmUgZW5hYmxlcyBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIDw9IDA7Ci0gICAgICBlbHNlIGlmICgofHN5c2lkX2NvbnRyb2xfc2xhdmVfbWFzdGVyX3FyZXFfdmVjdG9yICYgZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV9zeXNpZF9jb250cm9sX3NsYXZlKSB8IChlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3N5c2lkX2NvbnRyb2xfc2xhdmUgJiB+c3lzaWRfY29udHJvbF9zbGF2ZV9ub25fYnVyc3RpbmdfbWFzdGVyX3JlcXVlc3RzKSkKLSAgICAgICAgICBzeXNpZF9jb250cm9sX3NsYXZlX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgPD0gfHN5c2lkX2NvbnRyb2xfc2xhdmVfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlL20xIHN5c2lkL2NvbnRyb2xfc2xhdmUgYXJiaXRlcmxvY2ssIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfYXJiaXRlcmxvY2sgPSBzeXNpZF9jb250cm9sX3NsYXZlX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiBwaXBlbGluZV9icmlkZ2VfbTFfY29udGludWVyZXF1ZXN0OwotCi0gIC8vc3lzaWRfY29udHJvbF9zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrMiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHN5c2lkX2NvbnRyb2xfc2xhdmVfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgPSB8c3lzaWRfY29udHJvbF9zbGF2ZV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlL20xIHN5c2lkL2NvbnRyb2xfc2xhdmUgYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX2FyYml0ZXJsb2NrMiA9IHN5c2lkX2NvbnRyb2xfc2xhdmVfc2xhdmVhcmJpdGVybG9ja2VuYWJsZTIgJiBwaXBlbGluZV9icmlkZ2VfbTFfY29udGludWVyZXF1ZXN0OwotCi0gIC8vc3lzaWRfY29udHJvbF9zbGF2ZV9hbnlfY29udGludWVyZXF1ZXN0IGF0IGxlYXN0IG9uZSBtYXN0ZXIgY29udGludWVzIHJlcXVlc3RpbmcsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX2FueV9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX20xX2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3Rfc3lzaWRfY29udHJvbF9zbGF2ZSA9IHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19zeXNpZF9jb250cm9sX3NsYXZlICYgfigoKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpICYgKChwaXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyICE9IDApKSkpOwotICAvL2xvY2FsIHJlYWRkYXRhdmFsaWQgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9zeXNpZF9jb250cm9sX3NsYXZlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9zeXNpZF9jb250cm9sX3NsYXZlID0gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfc3lzaWRfY29udHJvbF9zbGF2ZSAmIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSAmIH5zeXNpZF9jb250cm9sX3NsYXZlX3dhaXRzX2Zvcl9yZWFkOwotCi0gIC8vbWFzdGVyIGlzIGFsd2F5cyBncmFudGVkIHdoZW4gcmVxdWVzdGVkCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9zeXNpZF9jb250cm9sX3NsYXZlID0gcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X3N5c2lkX2NvbnRyb2xfc2xhdmU7Ci0KLSAgLy9waXBlbGluZV9icmlkZ2UvbTEgc2F2ZWQtZ3JhbnQgc3lzaWQvY29udHJvbF9zbGF2ZSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9zYXZlZF9ncmFudF9zeXNpZF9jb250cm9sX3NsYXZlID0gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3N5c2lkX2NvbnRyb2xfc2xhdmU7Ci0KLSAgLy9hbGxvdyBuZXcgYXJiIGN5Y2xlIGZvciBzeXNpZC9jb250cm9sX3NsYXZlLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gc3lzaWRfY29udHJvbF9zbGF2ZV9hbGxvd19uZXdfYXJiX2N5Y2xlID0gMTsKLQotICAvL3BsYWNlaG9sZGVyIGNob3NlbiBtYXN0ZXIKLSAgYXNzaWduIHN5c2lkX2NvbnRyb2xfc2xhdmVfZ3JhbnRfdmVjdG9yID0gMTsKLQotICAvL3BsYWNlaG9sZGVyIHZlY3RvciBvZiBtYXN0ZXIgcXVhbGlmaWVkLXJlcXVlc3RzCi0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX21hc3Rlcl9xcmVxX3ZlY3RvciA9IDE7Ci0KLSAgLy9zeXNpZF9jb250cm9sX3NsYXZlX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX2ZpcnN0dHJhbnNmZXIgPSBzeXNpZF9jb250cm9sX3NsYXZlX2JlZ2luc194ZmVyID8gc3lzaWRfY29udHJvbF9zbGF2ZV91bnJlZ19maXJzdHRyYW5zZmVyIDogc3lzaWRfY29udHJvbF9zbGF2ZV9yZWdfZmlyc3R0cmFuc2ZlcjsKLQotICAvL3N5c2lkX2NvbnRyb2xfc2xhdmVfdW5yZWdfZmlyc3R0cmFuc2ZlciBmaXJzdCB0cmFuc2FjdGlvbiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHN5c2lkX2NvbnRyb2xfc2xhdmVfdW5yZWdfZmlyc3R0cmFuc2ZlciA9IH4oc3lzaWRfY29udHJvbF9zbGF2ZV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlICYgc3lzaWRfY29udHJvbF9zbGF2ZV9hbnlfY29udGludWVyZXF1ZXN0KTsKLQotICAvL3N5c2lkX2NvbnRyb2xfc2xhdmVfcmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN5c2lkX2NvbnRyb2xfc2xhdmVfcmVnX2ZpcnN0dHJhbnNmZXIgPD0gMSdiMTsKLSAgICAgIGVsc2UgaWYgKHN5c2lkX2NvbnRyb2xfc2xhdmVfYmVnaW5zX3hmZXIpCi0gICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9yZWdfZmlyc3R0cmFuc2ZlciA8PSBzeXNpZF9jb250cm9sX3NsYXZlX3VucmVnX2ZpcnN0dHJhbnNmZXI7Ci0gICAgZW5kCi0KLQotICAvL3N5c2lkX2NvbnRyb2xfc2xhdmVfYmVnaW5idXJzdHRyYW5zZmVyX2ludGVybmFsIGJlZ2luIGJ1cnN0IHRyYW5zZmVyLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gc3lzaWRfY29udHJvbF9zbGF2ZV9iZWdpbmJ1cnN0dHJhbnNmZXJfaW50ZXJuYWwgPSBzeXNpZF9jb250cm9sX3NsYXZlX2JlZ2luc194ZmVyOwotCi0gIGFzc2lnbiBzaGlmdGVkX2FkZHJlc3NfdG9fc3lzaWRfY29udHJvbF9zbGF2ZV9mcm9tX3BpcGVsaW5lX2JyaWRnZV9tMSA9IHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlOwotICAvL3N5c2lkX2NvbnRyb2xfc2xhdmVfYWRkcmVzcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX2FkZHJlc3MgPSBzaGlmdGVkX2FkZHJlc3NfdG9fc3lzaWRfY29udHJvbF9zbGF2ZV9mcm9tX3BpcGVsaW5lX2JyaWRnZV9tMSA+PiAyOwotCi0gIC8vZDFfc3lzaWRfY29udHJvbF9zbGF2ZV9lbmRfeGZlciByZWdpc3Rlciwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZDFfc3lzaWRfY29udHJvbF9zbGF2ZV9lbmRfeGZlciA8PSAxOwotICAgICAgZWxzZSAKLSAgICAgICAgZDFfc3lzaWRfY29udHJvbF9zbGF2ZV9lbmRfeGZlciA8PSBzeXNpZF9jb250cm9sX3NsYXZlX2VuZF94ZmVyOwotICAgIGVuZAotCi0KLSAgLy9zeXNpZF9jb250cm9sX3NsYXZlX3dhaXRzX2Zvcl9yZWFkIGluIGEgY3ljbGUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX3dhaXRzX2Zvcl9yZWFkID0gc3lzaWRfY29udHJvbF9zbGF2ZV9pbl9hX3JlYWRfY3ljbGUgJiBzeXNpZF9jb250cm9sX3NsYXZlX2JlZ2luc194ZmVyOwotCi0gIC8vc3lzaWRfY29udHJvbF9zbGF2ZV9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHN5c2lkX2NvbnRyb2xfc2xhdmVfaW5fYV9yZWFkX2N5Y2xlID0gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfc3lzaWRfY29udHJvbF9zbGF2ZSAmIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KTsKLQotICAvL2luX2FfcmVhZF9jeWNsZSBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gaW5fYV9yZWFkX2N5Y2xlID0gc3lzaWRfY29udHJvbF9zbGF2ZV9pbl9hX3JlYWRfY3ljbGU7Ci0KLSAgLy9zeXNpZF9jb250cm9sX3NsYXZlX3dhaXRzX2Zvcl93cml0ZSBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gc3lzaWRfY29udHJvbF9zbGF2ZV93YWl0c19mb3Jfd3JpdGUgPSBzeXNpZF9jb250cm9sX3NsYXZlX2luX2Ffd3JpdGVfY3ljbGUgJiAwOwotCi0gIC8vc3lzaWRfY29udHJvbF9zbGF2ZV9pbl9hX3dyaXRlX2N5Y2xlIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBzeXNpZF9jb250cm9sX3NsYXZlX2luX2Ffd3JpdGVfY3ljbGUgPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9zeXNpZF9jb250cm9sX3NsYXZlICYgKHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KTsKLQotICAvL2luX2Ffd3JpdGVfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGluX2Ffd3JpdGVfY3ljbGUgPSBzeXNpZF9jb250cm9sX3NsYXZlX2luX2Ffd3JpdGVfY3ljbGU7Ci0KLSAgYXNzaWduIHdhaXRfZm9yX3N5c2lkX2NvbnRyb2xfc2xhdmVfY291bnRlciA9IDA7Ci0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vc3lzaWQvY29udHJvbF9zbGF2ZSBlbmFibGUgbm9uLXplcm8gYXNzZXJ0aW9ucywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAxJ2IxOwotICAgIGVuZAotCi0KLSAgLy9waXBlbGluZV9icmlkZ2UvbTEgbm9uLXplcm8gYnVyc3Rjb3VudCBhc3NlcnRpb24sIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19zeXNpZF9jb250cm9sX3NsYXZlICYmIChwaXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCA9PSAwKSAmJiBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zKQotICAgICAgICBiZWdpbgotICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBwaXBlbGluZV9icmlkZ2UvbTEgZHJvdmUgMCBvbiBpdHMgJ2J1cnN0Y291bnQnIHBvcnQgd2hpbGUgYWNjZXNzaW5nIHNsYXZlIHN5c2lkL2NvbnRyb2xfc2xhdmUiLCAkdGltZSk7Ci0gICAgICAgICAgJHN0b3A7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgdGltZXN0YW1wX3RpbWVyX3MxX2FyYml0cmF0b3IgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX2lycSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGEsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDFfdGltZXN0YW1wX3RpbWVyX3MxX2VuZF94ZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX3RpbWVzdGFtcF90aW1lcl9zMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfdGltZXN0YW1wX3RpbWVyX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfdGltZXN0YW1wX3RpbWVyX3MxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c190aW1lc3RhbXBfdGltZXJfczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX2NoaXBzZWxlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX2lycV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9yZWFkZGF0YV9mcm9tX3NhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9yZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV93cml0ZV9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV93cml0ZWRhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBkMV90aW1lc3RhbXBfdGltZXJfczFfZW5kX3hmZXI7Ci0gIG91dHB1dCAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfdGltZXN0YW1wX3RpbWVyX3MxOwotICBvdXRwdXQgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF90aW1lc3RhbXBfdGltZXJfczE7Ci0gIG91dHB1dCAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF90aW1lc3RhbXBfdGltZXJfczE7Ci0gIG91dHB1dCAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3RpbWVzdGFtcF90aW1lcl9zMTsKLSAgb3V0cHV0ICBbICAyOiAwXSB0aW1lc3RhbXBfdGltZXJfczFfYWRkcmVzczsKLSAgb3V0cHV0ICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfY2hpcHNlbGVjdDsKLSAgb3V0cHV0ICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfaXJxX2Zyb21fc2E7Ci0gIG91dHB1dCAgWyAxNTogMF0gdGltZXN0YW1wX3RpbWVyX3MxX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIG91dHB1dCAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX3Jlc2V0X247Ci0gIG91dHB1dCAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX3dyaXRlX247Ci0gIG91dHB1dCAgWyAxNTogMF0gdGltZXN0YW1wX3RpbWVyX3MxX3dyaXRlZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAxMTogMF0gcGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3Q7Ci0gIGlucHV0ICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlcjsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotICBpbnB1dCAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9pcnE7Ci0gIGlucHV0ICAgWyAxNTogMF0gdGltZXN0YW1wX3RpbWVyX3MxX3JlYWRkYXRhOwotCi0gIHJlZyAgICAgICAgICAgICAgZDFfcmVhc29uc190b193YWl0OwotICByZWcgICAgICAgICAgICAgIGQxX3RpbWVzdGFtcF90aW1lcl9zMV9lbmRfeGZlcjsKLSAgcmVnICAgICAgICAgICAgICBlbmFibGVfbm9uemVyb19hc3NlcnRpb25zOwotICB3aXJlICAgICAgICAgICAgIGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fdGltZXN0YW1wX3RpbWVyX3MxOwotICB3aXJlICAgICAgICAgICAgIGluX2FfcmVhZF9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICBpbl9hX3dyaXRlX2N5Y2xlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfdGltZXN0YW1wX3RpbWVyX3MxOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF90aW1lc3RhbXBfdGltZXJfczE7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF90aW1lc3RhbXBfdGltZXJfczE7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3RpbWVzdGFtcF90aW1lcl9zMTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfc2F2ZWRfZ3JhbnRfdGltZXN0YW1wX3RpbWVyX3MxOwotICB3aXJlICAgIFsgMTE6IDBdIHNoaWZ0ZWRfYWRkcmVzc190b190aW1lc3RhbXBfdGltZXJfczFfZnJvbV9waXBlbGluZV9icmlkZ2VfbTE7Ci0gIHdpcmUgICAgWyAgMjogMF0gdGltZXN0YW1wX3RpbWVyX3MxX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX2FsbGdyYW50czsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfYWxsb3dfbmV3X2FyYl9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfYW55X2J1cnN0aW5nX21hc3Rlcl9zYXZlZF9ncmFudDsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfYW55X2NvbnRpbnVlcmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfYXJiX2NvdW50ZXJfZW5hYmxlOwotICByZWcgICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9hcmJfc2hhcmVfY291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfYXJiX3NoYXJlX3NldF92YWx1ZXM7Ci0gIHdpcmUgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbDsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfYmVnaW5zX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX2NoaXBzZWxlY3Q7Ci0gIHdpcmUgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX2VuZF94ZmVyOwotICB3aXJlICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9ncmFudF92ZWN0b3I7Ci0gIHdpcmUgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX2luX2FfcmVhZF9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfaW5fYV93cml0ZV9jeWNsZTsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfaXJxX2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX21hc3Rlcl9xcmVxX3ZlY3RvcjsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfbm9uX2J1cnN0aW5nX21hc3Rlcl9yZXF1ZXN0czsKLSAgd2lyZSAgICBbIDE1OiAwXSB0aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGFfZnJvbV9zYTsKLSAgcmVnICAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfcmVnX2ZpcnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX3Jlc2V0X247Ci0gIHJlZyAgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUyOwotICB3aXJlICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV91bnJlZ19maXJzdHRyYW5zZmVyOwotICB3aXJlICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV93YWl0c19mb3JfcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfd2FpdHNfZm9yX3dyaXRlOwotICB3aXJlICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV93cml0ZV9uOwotICB3aXJlICAgIFsgMTU6IDBdIHRpbWVzdGFtcF90aW1lcl9zMV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdF9mb3JfdGltZXN0YW1wX3RpbWVyX3MxX2NvdW50ZXI7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV9yZWFzb25zX3RvX3dhaXQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX3JlYXNvbnNfdG9fd2FpdCA8PSB+dGltZXN0YW1wX3RpbWVyX3MxX2VuZF94ZmVyOwotICAgIGVuZAotCi0KLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9iZWdpbnNfeGZlciA9IH5kMV9yZWFzb25zX3RvX3dhaXQgJiAoKHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF90aW1lc3RhbXBfdGltZXJfczEpKTsKLSAgLy9hc3NpZ24gdGltZXN0YW1wX3RpbWVyX3MxX3JlYWRkYXRhX2Zyb21fc2EgPSB0aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGEgc28gdGhhdCBzeW1ib2wga25vd3Mgd2hlcmUgdG8gZ3JvdXAgc2lnbmFscyB3aGljaCBtYXkgZ28gdG8gbWFzdGVyIG9ubHksIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiB0aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGFfZnJvbV9zYSA9IHRpbWVzdGFtcF90aW1lcl9zMV9yZWFkZGF0YTsKLQotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3RpbWVzdGFtcF90aW1lcl9zMSA9ICh7cGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmVbMTEgOiA1XSAsIDUnYjB9ID09IDEyJ2g4MDApICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3Q7Ci0gIC8vdGltZXN0YW1wX3RpbWVyX3MxX2FyYl9zaGFyZV9jb3VudGVyIHNldCB2YWx1ZXMsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB0aW1lc3RhbXBfdGltZXJfczFfYXJiX3NoYXJlX3NldF92YWx1ZXMgPSAxOwotCi0gIC8vdGltZXN0YW1wX3RpbWVyX3MxX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gdGltZXN0YW1wX3RpbWVyX3MxX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMgPSBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfdGltZXN0YW1wX3RpbWVyX3MxOwotCi0gIC8vdGltZXN0YW1wX3RpbWVyX3MxX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgbXV4LCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gdGltZXN0YW1wX3RpbWVyX3MxX2FueV9idXJzdGluZ19tYXN0ZXJfc2F2ZWRfZ3JhbnQgPSAwOwotCi0gIC8vdGltZXN0YW1wX3RpbWVyX3MxX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9hcmJfc2hhcmVfY291bnRlcl9uZXh0X3ZhbHVlID0gdGltZXN0YW1wX3RpbWVyX3MxX2ZpcnN0dHJhbnNmZXIgPyAodGltZXN0YW1wX3RpbWVyX3MxX2FyYl9zaGFyZV9zZXRfdmFsdWVzIC0gMSkgOiB8dGltZXN0YW1wX3RpbWVyX3MxX2FyYl9zaGFyZV9jb3VudGVyID8gKHRpbWVzdGFtcF90aW1lcl9zMV9hcmJfc2hhcmVfY291bnRlciAtIDEpIDogMDsKLQotICAvL3RpbWVzdGFtcF90aW1lcl9zMV9hbGxncmFudHMgYWxsIHNsYXZlIGdyYW50cywgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9hbGxncmFudHMgPSB8dGltZXN0YW1wX3RpbWVyX3MxX2dyYW50X3ZlY3RvcjsKLQotICAvL3RpbWVzdGFtcF90aW1lcl9zMV9lbmRfeGZlciBhc3NpZ25tZW50LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gdGltZXN0YW1wX3RpbWVyX3MxX2VuZF94ZmVyID0gfih0aW1lc3RhbXBfdGltZXJfczFfd2FpdHNfZm9yX3JlYWQgfCB0aW1lc3RhbXBfdGltZXJfczFfd2FpdHNfZm9yX3dyaXRlKTsKLQotICAvL2VuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fdGltZXN0YW1wX3RpbWVyX3MxIGFyYiBzaGFyZSBjb3VudGVyIGVuYWJsZSB0ZXJtLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV90aW1lc3RhbXBfdGltZXJfczEgPSB0aW1lc3RhbXBfdGltZXJfczFfZW5kX3hmZXIgJiAofnRpbWVzdGFtcF90aW1lcl9zMV9hbnlfYnVyc3RpbmdfbWFzdGVyX3NhdmVkX2dyYW50IHwgaW5fYV9yZWFkX2N5Y2xlIHwgaW5fYV93cml0ZV9jeWNsZSk7Ci0KLSAgLy90aW1lc3RhbXBfdGltZXJfczFfYXJiX3NoYXJlX2NvdW50ZXIgYXJiaXRyYXRpb24gY291bnRlciBlbmFibGUsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiB0aW1lc3RhbXBfdGltZXJfczFfYXJiX2NvdW50ZXJfZW5hYmxlID0gKGVuZF94ZmVyX2FyYl9zaGFyZV9jb3VudGVyX3Rlcm1fdGltZXN0YW1wX3RpbWVyX3MxICYgdGltZXN0YW1wX3RpbWVyX3MxX2FsbGdyYW50cykgfCAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV90aW1lc3RhbXBfdGltZXJfczEgJiB+dGltZXN0YW1wX3RpbWVyX3MxX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMpOwotCi0gIC8vdGltZXN0YW1wX3RpbWVyX3MxX2FyYl9zaGFyZV9jb3VudGVyIGNvdW50ZXIsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9hcmJfc2hhcmVfY291bnRlciA8PSAwOwotICAgICAgZWxzZSBpZiAodGltZXN0YW1wX3RpbWVyX3MxX2FyYl9jb3VudGVyX2VuYWJsZSkKLSAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfYXJiX3NoYXJlX2NvdW50ZXIgPD0gdGltZXN0YW1wX3RpbWVyX3MxX2FyYl9zaGFyZV9jb3VudGVyX25leHRfdmFsdWU7Ci0gICAgZW5kCi0KLQotICAvL3RpbWVzdGFtcF90aW1lcl9zMV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIHNsYXZlIGVuYWJsZXMgYXJiaXRlcmxvY2ssIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIDw9IDA7Ci0gICAgICBlbHNlIGlmICgofHRpbWVzdGFtcF90aW1lcl9zMV9tYXN0ZXJfcXJlcV92ZWN0b3IgJiBlbmRfeGZlcl9hcmJfc2hhcmVfY291bnRlcl90ZXJtX3RpbWVzdGFtcF90aW1lcl9zMSkgfCAoZW5kX3hmZXJfYXJiX3NoYXJlX2NvdW50ZXJfdGVybV90aW1lc3RhbXBfdGltZXJfczEgJiB+dGltZXN0YW1wX3RpbWVyX3MxX25vbl9idXJzdGluZ19tYXN0ZXJfcmVxdWVzdHMpKQotICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlIDw9IHx0aW1lc3RhbXBfdGltZXJfczFfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmVfYnJpZGdlL20xIHRpbWVzdGFtcF90aW1lci9zMSBhcmJpdGVybG9jaywgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9hcmJpdGVybG9jayA9IHRpbWVzdGFtcF90aW1lcl9zMV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlICYgcGlwZWxpbmVfYnJpZGdlX20xX2NvbnRpbnVlcmVxdWVzdDsKLQotICAvL3RpbWVzdGFtcF90aW1lcl9zMV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiBzbGF2ZSBlbmFibGVzIGFyYml0ZXJsb2NrMiwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiA9IHx0aW1lc3RhbXBfdGltZXJfczFfYXJiX3NoYXJlX2NvdW50ZXJfbmV4dF92YWx1ZTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZS9tMSB0aW1lc3RhbXBfdGltZXIvczEgYXJiaXRlcmxvY2syLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX2FyYml0ZXJsb2NrMiA9IHRpbWVzdGFtcF90aW1lcl9zMV9zbGF2ZWFyYml0ZXJsb2NrZW5hYmxlMiAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3Q7Ci0KLSAgLy90aW1lc3RhbXBfdGltZXJfczFfYW55X2NvbnRpbnVlcmVxdWVzdCBhdCBsZWFzdCBvbmUgbWFzdGVyIGNvbnRpbnVlcyByZXF1ZXN0aW5nLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gdGltZXN0YW1wX3RpbWVyX3MxX2FueV9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIC8vcGlwZWxpbmVfYnJpZGdlX20xX2NvbnRpbnVlcmVxdWVzdCBjb250aW51ZWQgcmVxdWVzdCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHBpcGVsaW5lX2JyaWRnZV9tMV9jb250aW51ZXJlcXVlc3QgPSAxOwotCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfdGltZXN0YW1wX3RpbWVyX3MxID0gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3RpbWVzdGFtcF90aW1lcl9zMSAmIH4oKChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSAmICgocGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlciAhPSAwKSkpKTsKLSAgLy9sb2NhbCByZWFkZGF0YXZhbGlkIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfdGltZXN0YW1wX3RpbWVyX3MxLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF90aW1lc3RhbXBfdGltZXJfczEgPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF90aW1lc3RhbXBfdGltZXJfczEgJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCkgJiB+dGltZXN0YW1wX3RpbWVyX3MxX3dhaXRzX2Zvcl9yZWFkOwotCi0gIC8vdGltZXN0YW1wX3RpbWVyX3MxX3dyaXRlZGF0YSBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB0aW1lc3RhbXBfdGltZXJfczFfd3JpdGVkYXRhID0gcGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YTsKLQotICAvL21hc3RlciBpcyBhbHdheXMgZ3JhbnRlZCB3aGVuIHJlcXVlc3RlZAotICBhc3NpZ24gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfdGltZXN0YW1wX3RpbWVyX3MxID0gcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X3RpbWVzdGFtcF90aW1lcl9zMTsKLQotICAvL3BpcGVsaW5lX2JyaWRnZS9tMSBzYXZlZC1ncmFudCB0aW1lc3RhbXBfdGltZXIvczEsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBwaXBlbGluZV9icmlkZ2VfbTFfc2F2ZWRfZ3JhbnRfdGltZXN0YW1wX3RpbWVyX3MxID0gcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3RpbWVzdGFtcF90aW1lcl9zMTsKLQotICAvL2FsbG93IG5ldyBhcmIgY3ljbGUgZm9yIHRpbWVzdGFtcF90aW1lci9zMSwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9hbGxvd19uZXdfYXJiX2N5Y2xlID0gMTsKLQotICAvL3BsYWNlaG9sZGVyIGNob3NlbiBtYXN0ZXIKLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9ncmFudF92ZWN0b3IgPSAxOwotCi0gIC8vcGxhY2Vob2xkZXIgdmVjdG9yIG9mIG1hc3RlciBxdWFsaWZpZWQtcmVxdWVzdHMKLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9tYXN0ZXJfcXJlcV92ZWN0b3IgPSAxOwotCi0gIC8vdGltZXN0YW1wX3RpbWVyX3MxX3Jlc2V0X24gYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9yZXNldF9uID0gcmVzZXRfbjsKLQotICBhc3NpZ24gdGltZXN0YW1wX3RpbWVyX3MxX2NoaXBzZWxlY3QgPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF90aW1lc3RhbXBfdGltZXJfczE7Ci0gIC8vdGltZXN0YW1wX3RpbWVyX3MxX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiB0aW1lc3RhbXBfdGltZXJfczFfZmlyc3R0cmFuc2ZlciA9IHRpbWVzdGFtcF90aW1lcl9zMV9iZWdpbnNfeGZlciA/IHRpbWVzdGFtcF90aW1lcl9zMV91bnJlZ19maXJzdHRyYW5zZmVyIDogdGltZXN0YW1wX3RpbWVyX3MxX3JlZ19maXJzdHRyYW5zZmVyOwotCi0gIC8vdGltZXN0YW1wX3RpbWVyX3MxX3VucmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiB0aW1lc3RhbXBfdGltZXJfczFfdW5yZWdfZmlyc3R0cmFuc2ZlciA9IH4odGltZXN0YW1wX3RpbWVyX3MxX3NsYXZlYXJiaXRlcmxvY2tlbmFibGUgJiB0aW1lc3RhbXBfdGltZXJfczFfYW55X2NvbnRpbnVlcmVxdWVzdCk7Ci0KLSAgLy90aW1lc3RhbXBfdGltZXJfczFfcmVnX2ZpcnN0dHJhbnNmZXIgZmlyc3QgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9yZWdfZmlyc3R0cmFuc2ZlciA8PSAxJ2IxOwotICAgICAgZWxzZSBpZiAodGltZXN0YW1wX3RpbWVyX3MxX2JlZ2luc194ZmVyKQotICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9yZWdfZmlyc3R0cmFuc2ZlciA8PSB0aW1lc3RhbXBfdGltZXJfczFfdW5yZWdfZmlyc3R0cmFuc2ZlcjsKLSAgICBlbmQKLQotCi0gIC8vdGltZXN0YW1wX3RpbWVyX3MxX2JlZ2luYnVyc3R0cmFuc2Zlcl9pbnRlcm5hbCBiZWdpbiBidXJzdCB0cmFuc2Zlciwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9iZWdpbmJ1cnN0dHJhbnNmZXJfaW50ZXJuYWwgPSB0aW1lc3RhbXBfdGltZXJfczFfYmVnaW5zX3hmZXI7Ci0KLSAgLy9+dGltZXN0YW1wX3RpbWVyX3MxX3dyaXRlX24gYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV93cml0ZV9uID0gfihwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF90aW1lc3RhbXBfdGltZXJfczEgJiAocGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlICYgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpKTsKLQotICBhc3NpZ24gc2hpZnRlZF9hZGRyZXNzX3RvX3RpbWVzdGFtcF90aW1lcl9zMV9mcm9tX3BpcGVsaW5lX2JyaWRnZV9tMSA9IHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlOwotICAvL3RpbWVzdGFtcF90aW1lcl9zMV9hZGRyZXNzIG11eCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9hZGRyZXNzID0gc2hpZnRlZF9hZGRyZXNzX3RvX3RpbWVzdGFtcF90aW1lcl9zMV9mcm9tX3BpcGVsaW5lX2JyaWRnZV9tMSA+PiAyOwotCi0gIC8vZDFfdGltZXN0YW1wX3RpbWVyX3MxX2VuZF94ZmVyIHJlZ2lzdGVyLCB3aGljaCBpcyBhbiBlX3JlZ2lzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkMV90aW1lc3RhbXBfdGltZXJfczFfZW5kX3hmZXIgPD0gMTsKLSAgICAgIGVsc2UgCi0gICAgICAgIGQxX3RpbWVzdGFtcF90aW1lcl9zMV9lbmRfeGZlciA8PSB0aW1lc3RhbXBfdGltZXJfczFfZW5kX3hmZXI7Ci0gICAgZW5kCi0KLQotICAvL3RpbWVzdGFtcF90aW1lcl9zMV93YWl0c19mb3JfcmVhZCBpbiBhIGN5Y2xlLCB3aGljaCBpcyBhbiBlX211eAotICBhc3NpZ24gdGltZXN0YW1wX3RpbWVyX3MxX3dhaXRzX2Zvcl9yZWFkID0gdGltZXN0YW1wX3RpbWVyX3MxX2luX2FfcmVhZF9jeWNsZSAmIHRpbWVzdGFtcF90aW1lcl9zMV9iZWdpbnNfeGZlcjsKLQotICAvL3RpbWVzdGFtcF90aW1lcl9zMV9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9pbl9hX3JlYWRfY3ljbGUgPSBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF90aW1lc3RhbXBfdGltZXJfczEgJiAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgJiBwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCk7Ci0KLSAgLy9pbl9hX3JlYWRfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGluX2FfcmVhZF9jeWNsZSA9IHRpbWVzdGFtcF90aW1lcl9zMV9pbl9hX3JlYWRfY3ljbGU7Ci0KLSAgLy90aW1lc3RhbXBfdGltZXJfczFfd2FpdHNfZm9yX3dyaXRlIGluIGEgY3ljbGUsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiB0aW1lc3RhbXBfdGltZXJfczFfd2FpdHNfZm9yX3dyaXRlID0gdGltZXN0YW1wX3RpbWVyX3MxX2luX2Ffd3JpdGVfY3ljbGUgJiAwOwotCi0gIC8vdGltZXN0YW1wX3RpbWVyX3MxX2luX2Ffd3JpdGVfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHRpbWVzdGFtcF90aW1lcl9zMV9pbl9hX3dyaXRlX2N5Y2xlID0gcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfdGltZXN0YW1wX3RpbWVyX3MxICYgKHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSAmIHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KTsKLQotICAvL2luX2Ffd3JpdGVfY3ljbGUgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9tdXgKLSAgYXNzaWduIGluX2Ffd3JpdGVfY3ljbGUgPSB0aW1lc3RhbXBfdGltZXJfczFfaW5fYV93cml0ZV9jeWNsZTsKLQotICBhc3NpZ24gd2FpdF9mb3JfdGltZXN0YW1wX3RpbWVyX3MxX2NvdW50ZXIgPSAwOwotICAvL2Fzc2lnbiB0aW1lc3RhbXBfdGltZXJfczFfaXJxX2Zyb21fc2EgPSB0aW1lc3RhbXBfdGltZXJfczFfaXJxIHNvIHRoYXQgc3ltYm9sIGtub3dzIHdoZXJlIHRvIGdyb3VwIHNpZ25hbHMgd2hpY2ggbWF5IGdvIHRvIG1hc3RlciBvbmx5LCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gdGltZXN0YW1wX3RpbWVyX3MxX2lycV9mcm9tX3NhID0gdGltZXN0YW1wX3RpbWVyX3MxX2lycTsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvL3RpbWVzdGFtcF90aW1lci9zMSBlbmFibGUgbm9uLXplcm8gYXNzZXJ0aW9ucywgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZW5hYmxlX25vbnplcm9fYXNzZXJ0aW9ucyA8PSAxJ2IxOwotICAgIGVuZAotCi0KLSAgLy9waXBlbGluZV9icmlkZ2UvbTEgbm9uLXplcm8gYnVyc3Rjb3VudCBhc3NlcnRpb24sIHdoaWNoIGlzIGFuIGVfcHJvY2VzcwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c190aW1lc3RhbXBfdGltZXJfczEgJiYgKHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50ID09IDApICYmIGVuYWJsZV9ub256ZXJvX2Fzc2VydGlvbnMpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IHBpcGVsaW5lX2JyaWRnZS9tMSBkcm92ZSAwIG9uIGl0cyAnYnVyc3Rjb3VudCcgcG9ydCB3aGlsZSBhY2Nlc3Npbmcgc2xhdmUgdGltZXN0YW1wX3RpbWVyL3MxIiwgJHRpbWUpOwotICAgICAgICAgICRzdG9wOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGN1c3RvbV9kbWFfcmVzZXRfc3lzdGVtX2Nsa19kb21haW5fc3luY2hfbW9kdWxlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfb3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgICAgICAgICAgZGF0YV9vdXQ7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIGRhdGFfaW47Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICByZWcgICAgICAgICAgICAgIGRhdGFfaW5fZDEgLyogc3ludGhlc2lzIEFMVEVSQV9BVFRSSUJVVEUgPSAiey1mcm9tIFwiKlwifSBDVVQ9T04gOyBQUkVTRVJWRV9SRUdJU1RFUj1PTiA7IFNVUFBSRVNTX0RBX1JVTEVfSU5URVJOQUw9UjEwMSIgICovOwotICByZWcgICAgICAgICAgICAgIGRhdGFfb3V0IC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIlBSRVNFUlZFX1JFR0lTVEVSPU9OIDsgU1VQUFJFU1NfREFfUlVMRV9JTlRFUk5BTD1SMTAxIiAgKi87Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkYXRhX2luX2QxIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkYXRhX2luX2QxIDw9IGRhdGFfaW47Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZGF0YV9vdXQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGRhdGFfb3V0IDw9IGRhdGFfaW5fZDE7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3VzdG9tX2RtYV9yZXNldF9leHRlcm5hbF9jbGtfZG9tYWluX3N5bmNoX21vZHVsZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX291dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgICAgICAgICAgZGF0YV9vdXQ7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIGRhdGFfaW47Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICByZWcgICAgICAgICAgICAgIGRhdGFfaW5fZDEgLyogc3ludGhlc2lzIEFMVEVSQV9BVFRSSUJVVEUgPSAiey1mcm9tIFwiKlwifSBDVVQ9T04gOyBQUkVTRVJWRV9SRUdJU1RFUj1PTiA7IFNVUFBSRVNTX0RBX1JVTEVfSU5URVJOQUw9UjEwMSIgICovOwotICByZWcgICAgICAgICAgICAgIGRhdGFfb3V0IC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIlBSRVNFUlZFX1JFR0lTVEVSPU9OIDsgU1VQUFJFU1NfREFfUlVMRV9JTlRFUk5BTD1SMTAxIiAgKi87Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkYXRhX2luX2QxIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkYXRhX2luX2QxIDw9IGRhdGFfaW47Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZGF0YV9vdXQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGRhdGFfb3V0IDw9IGRhdGFfaW5fZDE7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3VzdG9tX2RtYSAoCi0gICAgICAgICAgICAgICAgICAgIC8vIDEpIGdsb2JhbCBzaWduYWxzOgotICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfY2xrLAotICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgIHNkcmFtX3dyaXRlX2NsaywKLSAgICAgICAgICAgICAgICAgICAgIHNzcmFtX2NsaywKLSAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9jbGssCi0KLSAgICAgICAgICAgICAgICAgICAgLy8gdGhlX2Rkcl9zZHJhbQotICAgICAgICAgICAgICAgICAgICAgY2xrX3RvX3NkcmFtX2Zyb21fdGhlX2Rkcl9zZHJhbSwKLSAgICAgICAgICAgICAgICAgICAgIGNsa190b19zZHJhbV9uX2Zyb21fdGhlX2Rkcl9zZHJhbSwKLSAgICAgICAgICAgICAgICAgICAgIGRkcl9hX2Zyb21fdGhlX2Rkcl9zZHJhbSwKLSAgICAgICAgICAgICAgICAgICAgIGRkcl9iYV9mcm9tX3RoZV9kZHJfc2RyYW0sCi0gICAgICAgICAgICAgICAgICAgICBkZHJfY2FzX25fZnJvbV90aGVfZGRyX3NkcmFtLAotICAgICAgICAgICAgICAgICAgICAgZGRyX2NrZV9mcm9tX3RoZV9kZHJfc2RyYW0sCi0gICAgICAgICAgICAgICAgICAgICBkZHJfY3Nfbl9mcm9tX3RoZV9kZHJfc2RyYW0sCi0gICAgICAgICAgICAgICAgICAgICBkZHJfZG1fZnJvbV90aGVfZGRyX3NkcmFtLAotICAgICAgICAgICAgICAgICAgICAgZGRyX2RxX3RvX2FuZF9mcm9tX3RoZV9kZHJfc2RyYW0sCi0gICAgICAgICAgICAgICAgICAgICBkZHJfZHFzX3RvX2FuZF9mcm9tX3RoZV9kZHJfc2RyYW0sCi0gICAgICAgICAgICAgICAgICAgICBkZHJfcmFzX25fZnJvbV90aGVfZGRyX3NkcmFtLAotICAgICAgICAgICAgICAgICAgICAgZGRyX3dlX25fZnJvbV90aGVfZGRyX3NkcmFtLAotICAgICAgICAgICAgICAgICAgICAgZHFzX2RlbGF5X2N0cmxfdG9fdGhlX2Rkcl9zZHJhbSwKLSAgICAgICAgICAgICAgICAgICAgIGRxc3VwZGF0ZV90b190aGVfZGRyX3NkcmFtLAotICAgICAgICAgICAgICAgICAgICAgc3RyYXRpeF9kbGxfY29udHJvbF9mcm9tX3RoZV9kZHJfc2RyYW0sCi0gICAgICAgICAgICAgICAgICAgICB3cml0ZV9jbGtfdG9fdGhlX2Rkcl9zZHJhbSwKLQotICAgICAgICAgICAgICAgICAgICAvLyB0aGVfZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmUKLSAgICAgICAgICAgICAgICAgICAgIGFkc2Nfbl90b190aGVfZXh0X3NzcmFtLAotICAgICAgICAgICAgICAgICAgICAgYndfbl90b190aGVfZXh0X3NzcmFtLAotICAgICAgICAgICAgICAgICAgICAgYndlX25fdG9fdGhlX2V4dF9zc3JhbSwKLSAgICAgICAgICAgICAgICAgICAgIGNoaXBlbmFibGUxX25fdG9fdGhlX2V4dF9zc3JhbSwKLSAgICAgICAgICAgICAgICAgICAgIGV4dF9zc3JhbV9idXNfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgIGV4dF9zc3JhbV9idXNfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgIG91dHB1dGVuYWJsZV9uX3RvX3RoZV9leHRfc3NyYW0KLSAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGFkc2Nfbl90b190aGVfZXh0X3NzcmFtOwotICBvdXRwdXQgIFsgIDM6IDBdIGJ3X25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgb3V0cHV0ICAgICAgICAgICBid2Vfbl90b190aGVfZXh0X3NzcmFtOwotICBvdXRwdXQgICAgICAgICAgIGNoaXBlbmFibGUxX25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgb3V0cHV0ICAgICAgICAgICBjbGtfdG9fc2RyYW1fZnJvbV90aGVfZGRyX3NkcmFtOwotICBvdXRwdXQgICAgICAgICAgIGNsa190b19zZHJhbV9uX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgb3V0cHV0ICBbIDEyOiAwXSBkZHJfYV9mcm9tX3RoZV9kZHJfc2RyYW07Ci0gIG91dHB1dCAgWyAgMTogMF0gZGRyX2JhX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgb3V0cHV0ICAgICAgICAgICBkZHJfY2FzX25fZnJvbV90aGVfZGRyX3NkcmFtOwotICBvdXRwdXQgICAgICAgICAgIGRkcl9ja2VfZnJvbV90aGVfZGRyX3NkcmFtOwotICBvdXRwdXQgICAgICAgICAgIGRkcl9jc19uX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgb3V0cHV0ICBbICAxOiAwXSBkZHJfZG1fZnJvbV90aGVfZGRyX3NkcmFtOwotICBpbm91dCAgIFsgMTU6IDBdIGRkcl9kcV90b19hbmRfZnJvbV90aGVfZGRyX3NkcmFtOwotICBpbm91dCAgIFsgIDE6IDBdIGRkcl9kcXNfdG9fYW5kX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgb3V0cHV0ICAgICAgICAgICBkZHJfcmFzX25fZnJvbV90aGVfZGRyX3NkcmFtOwotICBvdXRwdXQgICAgICAgICAgIGRkcl93ZV9uX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgb3V0cHV0ICBbIDIwOiAwXSBleHRfc3NyYW1fYnVzX2FkZHJlc3M7Ci0gIGlub3V0ICAgWyAzMTogMF0gZXh0X3NzcmFtX2J1c19kYXRhOwotICBvdXRwdXQgICAgICAgICAgIG91dHB1dGVuYWJsZV9uX3RvX3RoZV9leHRfc3NyYW07Ci0gIG91dHB1dCAgICAgICAgICAgc2RyYW1fd3JpdGVfY2xrOwotICBvdXRwdXQgICAgICAgICAgIHNzcmFtX2NsazsKLSAgb3V0cHV0ICAgICAgICAgICBzdHJhdGl4X2RsbF9jb250cm9sX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgb3V0cHV0ICAgICAgICAgICBzeXN0ZW1fY2xrOwotICBpbnB1dCAgIFsgIDU6IDBdIGRxc19kZWxheV9jdHJsX3RvX3RoZV9kZHJfc2RyYW07Ci0gIGlucHV0ICAgICAgICAgICAgZHFzdXBkYXRlX3RvX3RoZV9kZHJfc2RyYW07Ci0gIGlucHV0ICAgICAgICAgICAgZXh0ZXJuYWxfY2xrOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgd3JpdGVfY2xrX3RvX3RoZV9kZHJfc2RyYW07Ci0KLSAgd2lyZSAgICAgICAgICAgICBhZHNjX25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgd2lyZSAgICBbICAzOiAwXSBid19uX3RvX3RoZV9leHRfc3NyYW07Ci0gIHdpcmUgICAgICAgICAgICAgYndlX25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgd2lyZSAgICAgICAgICAgICBjaGlwZW5hYmxlMV9uX3RvX3RoZV9leHRfc3NyYW07Ci0gIHdpcmUgICAgICAgICAgICAgY2xrX3RvX3NkcmFtX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgd2lyZSAgICAgICAgICAgICBjbGtfdG9fc2RyYW1fbl9mcm9tX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgWyAyNjogMF0gY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3M7Ci0gIHdpcmUgICAgWyAyNjogMF0gY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3B1X2RhdGFfbWFzdGVyX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtOwotICB3aXJlICAgIFsgMzE6IDBdIGNwdV9kYXRhX21hc3Rlcl9pcnE7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICBbIDMxOiAwXSBjcHVfZGF0YV9tYXN0ZXJfcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2RhdGFfbWFzdGVyX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGNwdV9kYXRhX21hc3Rlcl93cml0ZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjcHVfZGF0YV9tYXN0ZXJfd3JpdGVkYXRhOwotICB3aXJlICAgIFsgMjY6IDBdIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYWRkcmVzczsKLSAgd2lyZSAgICBbIDI2OiAwXSBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3B1X2luc3RydWN0aW9uX21hc3Rlcl9idXJzdGNvdW50OwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2xhdGVuY3lfY291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyOwotICB3aXJlICAgIFsgMzE6IDBdIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgWyAgODogMF0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX2JlZ2ludHJhbnNmZXI7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX2NoaXBzZWxlY3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX2RlYnVnYWNjZXNzOwotICB3aXJlICAgIFsgMzE6IDBdIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZWFkZGF0YTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVhZGRhdGFfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRfbjsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZXNldHJlcXVlc3RfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3B1X2p0YWdfZGVidWdfbW9kdWxlX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDIwOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hZGRyZXNzOwotICB3aXJlICAgIFsgMjA6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9idXJzdGNvdW50OwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZ3JhbnRlZF9leHRfc3NyYW1fczE7Ci0gIHdpcmUgICAgWyAgMjogMF0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyOwotICB3aXJlICAgIFsgMjA6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZXh0X3NzcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2V4dF9zc3JhbV9zMTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlcXVlc3RzX2V4dF9zc3JhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDIwOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbIDIyOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYnl0ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgWyAxMTogMF0gY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbIDExOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgd2lyZSAgICBbIDExOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlcXVlc3RzX3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDExOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbIDEzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYnl0ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgWyAxMTogMF0gY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbIDExOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgd2lyZSAgICBbIDExOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlcXVlc3RzX3BpcGVsaW5lX2JyaWRnZV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDExOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbIDEzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYnl0ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmU7Ci0gIHdpcmUgICAgWyAgMjogMF0gY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbIDI2OiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYnl0ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICB3aXJlICAgIFsgIDM6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmU7Ci0gIHdpcmUgICAgWyAgMjogMF0gY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbIDI2OiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnl0ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgWyAyNDogMF0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlOwotICB3aXJlICAgIFsgIDI6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmU7Ci0gIHdpcmUgICAgWyAgMjogMF0gY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlcjsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMV9zaGlmdF9yZWdpc3RlcjsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbICAyOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbIDI2OiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYnl0ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYWRkcmVzczsKLSAgd2lyZSAgICBbICAxOiAwXSBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kb2ZwYWNrZXQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZG9mcGFja2V0X2Zyb21fc2E7Ci0gIHdpcmUgICAgWyAgMjogMF0gY3VzdG9tX2RtYV9jbG9ja18wX2luX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlYWQ7Ci0gIHdpcmUgICAgWyAxNTogMF0gY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlYWRkYXRhOwotICB3aXJlICAgIFsgMTU6IDBdIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWFkZGF0YV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9pbl93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd3JpdGU7Ci0gIHdpcmUgICAgWyAxNTogMF0gY3VzdG9tX2RtYV9jbG9ja18wX2luX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VzdG9tX2RtYV9jbG9ja18wX291dF9hZGRyZXNzX3RvX3NsYXZlOwotICB3aXJlICAgIFsgIDE6IDBdIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2VuZG9mcGFja2V0OwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfZ3JhbnRlZF9wbGxfczE7Ci0gIHdpcmUgICAgWyAgMjogMF0gY3VzdG9tX2RtYV9jbG9ja18wX291dF9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcXVhbGlmaWVkX3JlcXVlc3RfcGxsX3MxOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlYWRfZGF0YV92YWxpZF9wbGxfczE7Ci0gIHdpcmUgICAgWyAxNTogMF0gY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlcXVlc3RzX3BsbF9zMTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3Jlc2V0X247Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9jbG9ja18wX291dF93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlOwotICB3aXJlICAgIFsgMTU6IDBdIGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGVkYXRhOwotICB3aXJlICAgICAgICAgICAgIGQxX2NwdV9qdGFnX2RlYnVnX21vZHVsZV9lbmRfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2VuZF94ZmVyOwotICB3aXJlICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9lbmRfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBkMV9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZW5kX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgZDFfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2VuZF94ZmVyOwotICB3aXJlICAgICAgICAgICAgIGQxX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9lbmRfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBkMV9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgZDFfZGRyX3NkcmFtX3MxX2VuZF94ZmVyOwotICB3aXJlICAgICAgICAgICAgIGQxX2V4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2VuZF94ZmVyOwotICB3aXJlICAgICAgICAgICAgIGQxX2Zpcl9kbWFfY29udHJvbF9lbmRfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBkMV9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZW5kX3hmZXI7Ci0gIHdpcmUgICAgICAgICAgICAgZDFfcGlwZWxpbmVfYnJpZGdlX3MxX2VuZF94ZmVyOwotICB3aXJlICAgICAgICAgICAgIGQxX3BsbF9zMV9lbmRfeGZlcjsKLSAgd2lyZSAgICAgICAgICAgICBkMV9zeXNpZF9jb250cm9sX3NsYXZlX2VuZF94ZmVyOwotICB3aXJlICAgICAgICAgICAgIGQxX3RpbWVzdGFtcF90aW1lcl9zMV9lbmRfeGZlcjsKLSAgd2lyZSAgICBbIDEyOiAwXSBkZHJfYV9mcm9tX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgWyAgMTogMF0gZGRyX2JhX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgd2lyZSAgICAgICAgICAgICBkZHJfY2FzX25fZnJvbV90aGVfZGRyX3NkcmFtOwotICB3aXJlICAgICAgICAgICAgIGRkcl9ja2VfZnJvbV90aGVfZGRyX3NkcmFtOwotICB3aXJlICAgICAgICAgICAgIGRkcl9jc19uX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgd2lyZSAgICBbICAxOiAwXSBkZHJfZG1fZnJvbV90aGVfZGRyX3NkcmFtOwotICB3aXJlICAgIFsgMTU6IDBdIGRkcl9kcV90b19hbmRfZnJvbV90aGVfZGRyX3NkcmFtOwotICB3aXJlICAgIFsgIDE6IDBdIGRkcl9kcXNfdG9fYW5kX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgd2lyZSAgICAgICAgICAgICBkZHJfcmFzX25fZnJvbV90aGVfZGRyX3NkcmFtOwotICB3aXJlICAgIFsgMjI6IDBdIGRkcl9zZHJhbV9zMV9hZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9iZWdpbmJ1cnN0dHJhbnNmZXI7Ci0gIHdpcmUgICAgWyAgMjogMF0gZGRyX3NkcmFtX3MxX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gZGRyX3NkcmFtX3MxX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX3JlYWQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gZGRyX3NkcmFtX3MxX3JlYWRkYXRhOwotICB3aXJlICAgIFsgMzE6IDBdIGRkcl9zZHJhbV9zMV9yZWFkZGF0YV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV93YWl0cmVxdWVzdF9uOwotICB3aXJlICAgICAgICAgICAgIGRkcl9zZHJhbV9zMV93YWl0cmVxdWVzdF9uX2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3NkcmFtX3MxX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGRkcl9zZHJhbV9zMV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3dlX25fZnJvbV90aGVfZGRyX3NkcmFtOwotICB3aXJlICAgIFsgMjA6IDBdIGV4dF9zc3JhbV9idXNfYWRkcmVzczsKLSAgd2lyZSAgICBbIDMxOiAwXSBleHRfc3NyYW1fYnVzX2RhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgZXh0ZXJuYWxfY2xrX3Jlc2V0X247Ci0gIHdpcmUgICAgWyAgMjogMF0gZmlyX2RtYV9jb250cm9sX2FkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gZmlyX2RtYV9jb250cm9sX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX2lycTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfaXJxX2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9jb250cm9sX3JlYWQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gZmlyX2RtYV9jb250cm9sX3JlYWRkYXRhOwotICB3aXJlICAgIFsgMzE6IDBdIGZpcl9kbWFfY29udHJvbF9yZWFkZGF0YV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfY29udHJvbF9yZXNldDsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX2NvbnRyb2xfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gZmlyX2RtYV9jb250cm9sX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDMxOiAwXSBmaXJfZG1hX3JlYWRfbWFzdGVyX2FkZHJlc3M7Ci0gIHdpcmUgICAgWyAzMTogMF0gZmlyX2RtYV9yZWFkX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlOwotICB3aXJlICAgIFsgIDM6IDBdIGZpcl9kbWFfcmVhZF9tYXN0ZXJfYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX2dyYW50ZWRfZXh0X3NzcmFtX3MxOwotICB3aXJlICAgIFsgIDI6IDBdIGZpcl9kbWFfcmVhZF9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfZXh0X3NzcmFtX3MxOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczE7Ci0gIHdpcmUgICAgWyAzMTogMF0gZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl9yZXF1ZXN0c19leHRfc3NyYW1fczE7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV9yZWFkX21hc3Rlcl93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICBbIDMxOiAwXSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9hZGRyZXNzOwotICB3aXJlICAgIFsgMzE6IDBdIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIHdpcmUgICAgWyAgMjogMF0gZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBmaXJfZG1hX3dyaXRlX21hc3Rlcl9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtOwotICB3aXJlICAgICAgICAgICAgIGZpcl9kbWFfd3JpdGVfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbTsKLSAgd2lyZSAgICAgICAgICAgICBmaXJfZG1hX3dyaXRlX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW07Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gZmlyX2RtYV93cml0ZV9tYXN0ZXJfd3JpdGVkYXRhOwotICB3aXJlICAgIFsgMzE6IDBdIGluY29taW5nX2V4dF9zc3JhbV9idXNfZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfY2hpcHNlbGVjdDsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZGF0YWF2YWlsYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZGF0YWF2YWlsYWJsZV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9pcnE7Ci0gIHdpcmUgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2lycV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkX247Ci0gIHdpcmUgICAgWyAzMTogMF0ganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWRkYXRhOwotICB3aXJlICAgIFsgMzE6IDBdIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkeWZvcmRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWR5Zm9yZGF0YV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd3JpdGVfbjsKLSAgd2lyZSAgICBbIDMxOiAwXSBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd3JpdGVkYXRhOwotICB3aXJlICAgICAgICAgICAgIG91dF9jbGtfcGxsX2MwOwotICB3aXJlICAgICAgICAgICAgIG91dF9jbGtfcGxsX2MxOwotICB3aXJlICAgICAgICAgICAgIG91dF9jbGtfcGxsX2MyOwotICB3aXJlICAgICAgICAgICAgIG91dHB1dGVuYWJsZV9uX3RvX3RoZV9leHRfc3NyYW07Ci0gIHdpcmUgICAgWyAxMTogMF0gcGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3M7Ci0gIHdpcmUgICAgWyAxMTogMF0gcGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gcGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3Q7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9lbmRvZnBhY2tldDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jcHVfanRhZ19kZWJ1Z19tb2R1bGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfY3VzdG9tX2RtYV9jbG9ja18wX2luOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2Zpcl9kbWFfY29udHJvbDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfc3lzaWRfY29udHJvbF9zbGF2ZTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF90aW1lc3RhbXBfdGltZXJfczE7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3B1X2p0YWdfZGVidWdfbW9kdWxlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2Nsb2NrXzBfaW47Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X2Zpcl9kbWFfY29udHJvbDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9zeXNpZF9jb250cm9sX3NsYXZlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF90aW1lc3RhbXBfdGltZXJfczE7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9jcHVfanRhZ19kZWJ1Z19tb2R1bGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW47Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2w7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmU7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9zeXNpZF9jb250cm9sX3NsYXZlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfdGltZXN0YW1wX3RpbWVyX3MxOwotICB3aXJlICAgIFsgMzE6IDBdIHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3B1X2p0YWdfZGVidWdfbW9kdWxlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19jdXN0b21fZG1hX2Nsb2NrXzBfaW47Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2Zpcl9kbWFfY29udHJvbDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19zeXNpZF9jb250cm9sX3NsYXZlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c190aW1lc3RhbXBfdGltZXJfczE7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX20xX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhOwotICB3aXJlICAgIFsgIDk6IDBdIHBpcGVsaW5lX2JyaWRnZV9zMV9hZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9idXJzdGNvdW50OwotICB3aXJlICAgIFsgIDM6IDBdIHBpcGVsaW5lX2JyaWRnZV9zMV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9jaGlwc2VsZWN0OwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfZW5kb2ZwYWNrZXQ7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX2VuZG9mcGFja2V0X2Zyb21fc2E7Ci0gIHdpcmUgICAgWyAgOTogMF0gcGlwZWxpbmVfYnJpZGdlX3MxX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgcGlwZWxpbmVfYnJpZGdlX3MxX3JlYWQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gcGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhOwotICB3aXJlICAgIFsgMzE6IDBdIHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV9yZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIHBpcGVsaW5lX2JyaWRnZV9zMV93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3RfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gcGlwZWxpbmVfYnJpZGdlX3MxX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbICAyOiAwXSBwbGxfczFfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBwbGxfczFfY2hpcHNlbGVjdDsKLSAgd2lyZSAgICAgICAgICAgICBwbGxfczFfcmVhZDsKLSAgd2lyZSAgICBbIDE1OiAwXSBwbGxfczFfcmVhZGRhdGE7Ci0gIHdpcmUgICAgWyAxNTogMF0gcGxsX3MxX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgcGxsX3MxX3Jlc2V0X247Ci0gIHdpcmUgICAgICAgICAgICAgcGxsX3MxX3Jlc2V0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBwbGxfczFfcmVzZXRyZXF1ZXN0X2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgcGxsX3MxX3dyaXRlOwotICB3aXJlICAgIFsgMTU6IDBdIHBsbF9zMV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgcmVzZXRfbl9zb3VyY2VzOwotICB3aXJlICAgICAgICAgICAgIHNkcmFtX3dyaXRlX2NsazsKLSAgd2lyZSAgICAgICAgICAgICBzc3JhbV9jbGs7Ci0gIHdpcmUgICAgICAgICAgICAgc3RyYXRpeF9kbGxfY29udHJvbF9mcm9tX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgICAgICAgICAgc3lzaWRfY29udHJvbF9zbGF2ZV9hZGRyZXNzOwotICB3aXJlICAgIFsgMzE6IDBdIHN5c2lkX2NvbnRyb2xfc2xhdmVfcmVhZGRhdGE7Ci0gIHdpcmUgICAgWyAzMTogMF0gc3lzaWRfY29udHJvbF9zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhOwotICB3aXJlICAgICAgICAgICAgIHN5c3RlbV9jbGs7Ci0gIHdpcmUgICAgICAgICAgICAgc3lzdGVtX2Nsa19yZXNldF9uOwotICB3aXJlICAgIFsgIDI6IDBdIHRpbWVzdGFtcF90aW1lcl9zMV9hZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9jaGlwc2VsZWN0OwotICB3aXJlICAgICAgICAgICAgIHRpbWVzdGFtcF90aW1lcl9zMV9pcnE7Ci0gIHdpcmUgICAgICAgICAgICAgdGltZXN0YW1wX3RpbWVyX3MxX2lycV9mcm9tX3NhOwotICB3aXJlICAgIFsgMTU6IDBdIHRpbWVzdGFtcF90aW1lcl9zMV9yZWFkZGF0YTsKLSAgd2lyZSAgICBbIDE1OiAwXSB0aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGFfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfcmVzZXRfbjsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lc3RhbXBfdGltZXJfczFfd3JpdGVfbjsKLSAgd2lyZSAgICBbIDE1OiAwXSB0aW1lc3RhbXBfdGltZXJfczFfd3JpdGVkYXRhOwotICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYXJiaXRyYXRvciB0aGVfY3B1X2p0YWdfZGVidWdfbW9kdWxlCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLmNwdV9qdGFnX2RlYnVnX21vZHVsZV9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV9hZGRyZXNzKSwKLSAgICAgIC5jcHVfanRhZ19kZWJ1Z19tb2R1bGVfYmVnaW50cmFuc2ZlciAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYmVnaW50cmFuc2ZlciksCi0gICAgICAuY3B1X2p0YWdfZGVidWdfbW9kdWxlX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2p0YWdfZGVidWdfbW9kdWxlX2J5dGVlbmFibGUpLAotICAgICAgLmNwdV9qdGFnX2RlYnVnX21vZHVsZV9jaGlwc2VsZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV9jaGlwc2VsZWN0KSwKLSAgICAgIC5jcHVfanRhZ19kZWJ1Z19tb2R1bGVfZGVidWdhY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfanRhZ19kZWJ1Z19tb2R1bGVfZGVidWdhY2Nlc3MpLAotICAgICAgLmNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZWFkZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZWFkZGF0YSksCi0gICAgICAuY3B1X2p0YWdfZGVidWdfbW9kdWxlX3JlYWRkYXRhX2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAoY3B1X2p0YWdfZGVidWdfbW9kdWxlX3JlYWRkYXRhX2Zyb21fc2EpLAotICAgICAgLmNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZXNldF9uKSwKLSAgICAgIC5jcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRyZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRyZXF1ZXN0KSwKLSAgICAgIC5jcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRyZXF1ZXN0X2Zyb21fc2EgICAgICAgICAgICAgICAgIChjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRyZXF1ZXN0X2Zyb21fc2EpLAotICAgICAgLmNwdV9qdGFnX2RlYnVnX21vZHVsZV93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV93cml0ZSksCi0gICAgICAuY3B1X2p0YWdfZGVidWdfbW9kdWxlX3dyaXRlZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2p0YWdfZGVidWdfbW9kdWxlX3dyaXRlZGF0YSksCi0gICAgICAuZDFfY3B1X2p0YWdfZGVidWdfbW9kdWxlX2VuZF94ZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAoZDFfY3B1X2p0YWdfZGVidWdfbW9kdWxlX2VuZF94ZmVyKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZSAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2J1cnN0Y291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2J1cnN0Y291bnQpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9ieXRlZW5hYmxlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2RlYnVnYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jcHVfanRhZ19kZWJ1Z19tb2R1bGUgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jcHVfanRhZ19kZWJ1Z19tb2R1bGUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXIpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9jcHVfanRhZ19kZWJ1Z19tb2R1bGUgKHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9jcHVfanRhZ19kZWJ1Z19tb2R1bGUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2NwdV9qdGFnX2RlYnVnX21vZHVsZSAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2NwdV9qdGFnX2RlYnVnX21vZHVsZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2NwdV9qdGFnX2RlYnVnX21vZHVsZSAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2NwdV9qdGFnX2RlYnVnX21vZHVsZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrX3Jlc2V0X24pCi0gICAgKTsKLQotICBjcHVfZGF0YV9tYXN0ZXJfYXJiaXRyYXRvciB0aGVfY3B1X2RhdGFfbWFzdGVyCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3MpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50KSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2J5dGVlbmFibGUpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0pLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0pLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0pLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9pcnEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfaXJxKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlciksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0pLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0gICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9yZWFkKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0pLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyIChjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0gICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciAoY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIgKGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcmVhZGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3JlYWRkYXRhKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcmVhZGRhdGF2YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0gICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0pLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl93YWl0cmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfd2FpdHJlcXVlc3QpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfd3JpdGVkYXRhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhKSwKLSAgICAgIC5kMV9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDFfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2VuZF94ZmVyKSwKLSAgICAgIC5kMV9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDFfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2VuZF94ZmVyKSwKLSAgICAgIC5kMV9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDFfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2VuZF94ZmVyKSwKLSAgICAgIC5maXJfZG1hX2NvbnRyb2xfaXJxX2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV9jb250cm9sX2lycV9mcm9tX3NhKSwKLSAgICAgIC5qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfaXJxX2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2lycV9mcm9tX3NhKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2Nsa19yZXNldF9uKSwKLSAgICAgIC50aW1lc3RhbXBfdGltZXJfczFfaXJxX2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZXN0YW1wX3RpbWVyX3MxX2lycV9mcm9tX3NhKQotICAgICk7Ci0KLSAgY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hcmJpdHJhdG9yIHRoZV9jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3MpLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2J1cnN0Y291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYnVyc3Rjb3VudCksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtKSwKLSAgICAgIC5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0pLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIpLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0pLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0pLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkKSwKLSAgICAgIC5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0gICAgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIpLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSAgICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtKSwKLSAgICAgIC5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9zaGlmdF9yZWdpc3RlciksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRkYXRhKSwKLSAgICAgIC5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRkYXRhdmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZGRhdGF2YWxpZCksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0gICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0gICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl93YWl0cmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhKSwKLSAgICAgIC5kMV9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGQxX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9lbmRfeGZlciksCi0gICAgICAuZDFfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2VuZF94ZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkMV9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZW5kX3hmZXIpLAotICAgICAgLnJlc2V0X24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2Nsa19yZXNldF9uKQotICAgICk7Ci0KLSAgY3B1IHRoZV9jcHUKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuZF9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3MpLAotICAgICAgLmRfYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50KSwKLSAgICAgIC5kX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZSksCi0gICAgICAuZF9pcnEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2lycSksCi0gICAgICAuZF9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3JlYWQpLAotICAgICAgLmRfcmVhZGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9yZWFkZGF0YSksCi0gICAgICAuZF9yZWFkZGF0YXZhbGlkICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLmRfd2FpdHJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl93YWl0cmVxdWVzdCksCi0gICAgICAuZF93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3dyaXRlKSwKLSAgICAgIC5kX3dyaXRlZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfd3JpdGVkYXRhKSwKLSAgICAgIC5pX2FkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3MpLAotICAgICAgLmlfYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYnVyc3Rjb3VudCksCi0gICAgICAuaV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkKSwKLSAgICAgIC5pX3JlYWRkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRkYXRhKSwKLSAgICAgIC5pX3JlYWRkYXRhdmFsaWQgICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLmlfd2FpdHJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfd2FpdHJlcXVlc3QpLAotICAgICAgLmp0YWdfZGVidWdfbW9kdWxlX2FkZHJlc3MgICAgICAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV9hZGRyZXNzKSwKLSAgICAgIC5qdGFnX2RlYnVnX21vZHVsZV9iZWdpbnRyYW5zZmVyICAgICAgIChjcHVfanRhZ19kZWJ1Z19tb2R1bGVfYmVnaW50cmFuc2ZlciksCi0gICAgICAuanRhZ19kZWJ1Z19tb2R1bGVfYnl0ZWVuYWJsZSAgICAgICAgICAoY3B1X2p0YWdfZGVidWdfbW9kdWxlX2J5dGVlbmFibGUpLAotICAgICAgLmp0YWdfZGVidWdfbW9kdWxlX2RlYnVnYWNjZXNzICAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV9kZWJ1Z2FjY2VzcyksCi0gICAgICAuanRhZ19kZWJ1Z19tb2R1bGVfZGVidWdhY2Nlc3NfdG9fcm9tcyAoY3B1X2RhdGFfbWFzdGVyX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5qdGFnX2RlYnVnX21vZHVsZV9yZWFkZGF0YSAgICAgICAgICAgIChjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVhZGRhdGEpLAotICAgICAgLmp0YWdfZGVidWdfbW9kdWxlX3Jlc2V0cmVxdWVzdCAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZXNldHJlcXVlc3QpLAotICAgICAgLmp0YWdfZGVidWdfbW9kdWxlX3NlbGVjdCAgICAgICAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV9jaGlwc2VsZWN0KSwKLSAgICAgIC5qdGFnX2RlYnVnX21vZHVsZV93cml0ZSAgICAgICAgICAgICAgIChjcHVfanRhZ19kZWJ1Z19tb2R1bGVfd3JpdGUpLAotICAgICAgLmp0YWdfZGVidWdfbW9kdWxlX3dyaXRlZGF0YSAgICAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV93cml0ZWRhdGEpLAotICAgICAgLnJlc2V0X24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZXNldF9uKQotICAgICk7Ci0KLSAgY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FyYml0cmF0b3IgdGhlX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbQotICAgICgKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZSksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX2RlYnVnYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9kZWJ1Z2FjY2VzcyksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0gICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3JlYWQpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIgKGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciAoY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyIChjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW0pLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfd3JpdGVkYXRhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2FkZHJlc3MpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fYnVyc3Rjb3VudCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2J5dGVhZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ieXRlYWRkcmVzcyksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZGVidWdhY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd3JpdGUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd3JpdGVkYXRhKSwKLSAgICAgIC5kMV9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDFfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2VuZF94ZmVyKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2Nsa19yZXNldF9uKQotICAgICk7Ci0KLSAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYXJiaXRyYXRvciB0aGVfY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW0KLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3MpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9idXJzdGNvdW50KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J5dGVlbmFibGUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2dyYW50ZWRfZXh0X3NzcmFtX3MxICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZ3JhbnRlZF9leHRfc3NyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczEgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2V4dF9zc3JhbV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRkYXRhICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZGRhdGEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVxdWVzdHNfZXh0X3NzcmFtX3MxICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZXF1ZXN0c19leHRfc3NyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3Jlc2V0X24gICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVzZXRfbiksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd2FpdHJlcXVlc3QgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93YWl0cmVxdWVzdCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZWRhdGEpLAotICAgICAgLmQxX2V4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2VuZF94ZmVyICAgICAgICAgICAgICAgICAgICAgICAoZDFfZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZW5kX3hmZXIpLAotICAgICAgLmluY29taW5nX2V4dF9zc3JhbV9idXNfZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5jb21pbmdfZXh0X3NzcmFtX2J1c19kYXRhKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGtfcmVzZXRfbikKLSAgICApOwotCi0gIGN1c3RvbV9kbWFfYnVyc3RfMCB0aGVfY3VzdG9tX2RtYV9idXJzdF8wCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLmRvd25zdHJlYW1fcmVhZGRhdGEgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRkYXRhKSwKLSAgICAgIC5kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93YWl0cmVxdWVzdCksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fYWRkcmVzcyAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYWRkcmVzcyksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3MgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3MpLAotICAgICAgLnJlZ19kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MpLAotICAgICAgLnJlZ19kb3duc3RyZWFtX3JlYWQgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWQpLAotICAgICAgLnJlZ19kb3duc3RyZWFtX3dyaXRlICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV93cml0ZWRhdGEgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZWRhdGEpLAotICAgICAgLnJlc2V0X24gICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3Jlc2V0X24pLAotICAgICAgLnVwc3RyZWFtX2FkZHJlc3MgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ieXRlYWRkcmVzcyksCi0gICAgICAudXBzdHJlYW1fYnVyc3Rjb3VudCAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX2J1cnN0Y291bnQpLAotICAgICAgLnVwc3RyZWFtX2J5dGVlbmFibGUgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC51cHN0cmVhbV9kZWJ1Z2FjY2VzcyAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fZGVidWdhY2Nlc3MpLAotICAgICAgLnVwc3RyZWFtX25hdGl2ZWFkZHJlc3MgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9hZGRyZXNzKSwKLSAgICAgIC51cHN0cmVhbV9yZWFkICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZCksCi0gICAgICAudXBzdHJlYW1fcmVhZGRhdGEgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3JlYWRkYXRhKSwKLSAgICAgIC51cHN0cmVhbV9yZWFkZGF0YXZhbGlkICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCksCi0gICAgICAudXBzdHJlYW1fd2FpdHJlcXVlc3QgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC51cHN0cmVhbV93cml0ZSAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fd3JpdGUpLAotICAgICAgLnVwc3RyZWFtX3dyaXRlZGF0YSAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV93cml0ZWRhdGEpCi0gICAgKTsKLQotICBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYXJiaXRyYXRvciB0aGVfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmUpLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9idXJzdGNvdW50KSwKLSAgICAgIC5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0pLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIpLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0pLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkKSwKLSAgICAgIC5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW0gICAgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIpLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9zaGlmdF9yZWdpc3RlciAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyKSwKLSAgICAgIC5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hZGRyZXNzKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYnl0ZWFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9ieXRlYWRkcmVzcyksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYnl0ZWVuYWJsZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2RlYnVnYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZGVidWdhY2Nlc3MpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3JlYWQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3JlYWRkYXRhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93YWl0cmVxdWVzdCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd3JpdGUpLAotICAgICAgLmQxX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9lbmRfeGZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDFfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX2VuZF94ZmVyKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGtfcmVzZXRfbikKLSAgICApOwotCi0gIGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FyYml0cmF0b3IgdGhlX2N1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FkZHJlc3MpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J1cnN0Y291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J1cnN0Y291bnQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J5dGVlbmFibGUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMSAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMSAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMV9zaGlmdF9yZWdpc3RlciAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMV9zaGlmdF9yZWdpc3RlciksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZGRhdGEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlcXVlc3RzX3BpcGVsaW5lX2JyaWRnZV9zMSAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3JlcXVlc3RzX3BpcGVsaW5lX2JyaWRnZV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVzZXRfbiksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd2FpdHJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd2FpdHJlcXVlc3QpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3dyaXRlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZWRhdGEpLAotICAgICAgLmQxX3BpcGVsaW5lX2JyaWRnZV9zMV9lbmRfeGZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGQxX3BpcGVsaW5lX2JyaWRnZV9zMV9lbmRfeGZlciksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhX2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhX2Zyb21fc2EpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9zMV93YWl0cmVxdWVzdF9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9zMV93YWl0cmVxdWVzdF9mcm9tX3NhKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrX3Jlc2V0X24pCi0gICAgKTsKLQotICBjdXN0b21fZG1hX2J1cnN0XzEgdGhlX2N1c3RvbV9kbWFfYnVyc3RfMQotICAgICgKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5kb3duc3RyZWFtX3JlYWRkYXRhICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkZGF0YSksCi0gICAgICAuZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCksCi0gICAgICAuZG93bnN0cmVhbV93YWl0cmVxdWVzdCAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd2FpdHJlcXVlc3QpLAotICAgICAgLnJlZ19kb3duc3RyZWFtX2FkZHJlc3MgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FkZHJlc3MpLAotICAgICAgLnJlZ19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUpLAotICAgICAgLnJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J1cnN0Y291bnQpLAotICAgICAgLnJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGUgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2J5dGVlbmFibGUpLAotICAgICAgLnJlZ19kb3duc3RyZWFtX2RlYnVnYWNjZXNzICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzICAgIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9yZWFkICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZWFkKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV93cml0ZSAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZSksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGVkYXRhKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9yZXNldF9uKSwKLSAgICAgIC51cHN0cmVhbV9hZGRyZXNzICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fYnl0ZWFkZHJlc3MpLAotICAgICAgLnVwc3RyZWFtX2J5dGVlbmFibGUgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC51cHN0cmVhbV9kZWJ1Z2FjY2VzcyAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fZGVidWdhY2Nlc3MpLAotICAgICAgLnVwc3RyZWFtX25hdGl2ZWFkZHJlc3MgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9hZGRyZXNzKSwKLSAgICAgIC51cHN0cmVhbV9yZWFkICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZCksCi0gICAgICAudXBzdHJlYW1fcmVhZGRhdGEgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3JlYWRkYXRhKSwKLSAgICAgIC51cHN0cmVhbV9yZWFkZGF0YXZhbGlkICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCksCi0gICAgICAudXBzdHJlYW1fd2FpdHJlcXVlc3QgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC51cHN0cmVhbV93cml0ZSAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd3JpdGUpLAotICAgICAgLnVwc3RyZWFtX3dyaXRlZGF0YSAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV93cml0ZWRhdGEpCi0gICAgKTsKLQotICBjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYXJiaXRyYXRvciB0aGVfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmUpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfYnVyc3Rjb3VudCksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9ieXRlZW5hYmxlKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfZGVidWdhY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlciksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0pLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfcmVhZCksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzBfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIgKGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW0pLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyIChjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIgKGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbSksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl93cml0ZSksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3dyaXRlZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYWRkcmVzcyksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J1cnN0Y291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9idXJzdGNvdW50KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYnl0ZWFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J5dGVhZGRyZXNzKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYnl0ZWVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J5dGVlbmFibGUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9kZWJ1Z2FjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fZGVidWdhY2Nlc3MpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0cmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHJlcXVlc3QpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93cml0ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dyaXRlZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93cml0ZWRhdGEpLAotICAgICAgLmQxX2N1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9lbmRfeGZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkMV9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fZW5kX3hmZXIpLAotICAgICAgLnJlc2V0X24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrX3Jlc2V0X24pCi0gICAgKTsKLQotICBjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hcmJpdHJhdG9yIHRoZV9jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbQotICAgICgKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9idXJzdGNvdW50KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ncmFudGVkX3BpcGVsaW5lX2JyaWRnZV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9waXBlbGluZV9icmlkZ2VfczEgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9waXBlbGluZV9icmlkZ2VfczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczEgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczFfc2hpZnRfcmVnaXN0ZXIgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9waXBlbGluZV9icmlkZ2VfczFfc2hpZnRfcmVnaXN0ZXIpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRkYXRhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczEgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3Jlc2V0X24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3Jlc2V0X24pLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGVkYXRhKSwKLSAgICAgIC5kMV9waXBlbGluZV9icmlkZ2VfczFfZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkMV9waXBlbGluZV9icmlkZ2VfczFfZW5kX3hmZXIpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3RfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3RfZnJvbV9zYSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2Nsa19yZXNldF9uKQotICAgICk7Ci0KLSAgY3VzdG9tX2RtYV9idXJzdF8yIHRoZV9jdXN0b21fZG1hX2J1cnN0XzIKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuZG93bnN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZGRhdGEpLAotICAgICAgLmRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLmRvd25zdHJlYW1fd2FpdHJlcXVlc3QgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9hZGRyZXNzICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9idXJzdGNvdW50ICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9idXJzdGNvdW50KSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9ieXRlZW5hYmxlICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fcmVhZCAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVhZCksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fd3JpdGUgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fd3JpdGUpLAotICAgICAgLnJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YSAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlZGF0YSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcmVzZXRfbiksCi0gICAgICAudXBzdHJlYW1fYWRkcmVzcyAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J5dGVhZGRyZXNzKSwKLSAgICAgIC51cHN0cmVhbV9idXJzdGNvdW50ICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fYnVyc3Rjb3VudCksCi0gICAgICAudXBzdHJlYW1fYnl0ZWVuYWJsZSAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2J5dGVlbmFibGUpLAotICAgICAgLnVwc3RyZWFtX2RlYnVnYWNjZXNzICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9kZWJ1Z2FjY2VzcyksCi0gICAgICAudXBzdHJlYW1fbmF0aXZlYWRkcmVzcyAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX2FkZHJlc3MpLAotICAgICAgLnVwc3RyZWFtX3JlYWQgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkKSwKLSAgICAgIC51cHN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fcmVhZGRhdGEpLAotICAgICAgLnVwc3RyZWFtX3JlYWRkYXRhdmFsaWQgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC51cHN0cmVhbV93YWl0cmVxdWVzdCAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fd2FpdHJlcXVlc3QpLAotICAgICAgLnVwc3RyZWFtX3dyaXRlICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl91cHN0cmVhbV93cml0ZSksCi0gICAgICAudXBzdHJlYW1fd3JpdGVkYXRhICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3dyaXRlZGF0YSkKLSAgICApOwotCi0gIGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hcmJpdHJhdG9yIHRoZV9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0KLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2J1cnN0Y291bnQpLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX2xhdGVuY3lfY291bnRlciksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0gICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWQpLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMV91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyKSwKLSAgICAgIC5jcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0gICAgICAgICAgICAgICAgKGNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbSksCi0gICAgICAuY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyIChjcHVfaW5zdHJ1Y3Rpb25fbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIpLAotICAgICAgLmNwdV9pbnN0cnVjdGlvbl9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2luc3RydWN0aW9uX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW0pLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2FkZHJlc3MpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9ieXRlYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2J5dGVhZGRyZXNzKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYnl0ZWVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZGVidWdhY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9kZWJ1Z2FjY2VzcyksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fcmVhZGRhdGEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2EpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YXZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0cmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93cml0ZSksCi0gICAgICAuZDFfY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2VuZF94ZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkMV9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fZW5kX3hmZXIpLAotICAgICAgLnJlc2V0X24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2Nsa19yZXNldF9uKQotICAgICk7Ci0KLSAgY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYXJiaXRyYXRvciB0aGVfY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW0KLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzcyksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkZGF0YSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXNldF9uKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93YWl0cmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93YWl0cmVxdWVzdCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fd3JpdGUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlZGF0YSksCi0gICAgICAuZDFfZGRyX3NkcmFtX3MxX2VuZF94ZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDFfZGRyX3NkcmFtX3MxX2VuZF94ZmVyKSwKLSAgICAgIC5kZHJfc2RyYW1fczFfcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZHJfc2RyYW1fczFfcmVhZGRhdGFfZnJvbV9zYSksCi0gICAgICAuZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2Nsa19yZXNldF9uKQotICAgICk7Ci0KLSAgY3VzdG9tX2RtYV9idXJzdF8zIHRoZV9jdXN0b21fZG1hX2J1cnN0XzMKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuZG93bnN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZGRhdGEpLAotICAgICAgLmRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLmRvd25zdHJlYW1fd2FpdHJlcXVlc3QgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9hZGRyZXNzICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hZGRyZXNzKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9idXJzdGNvdW50ICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9idXJzdGNvdW50KSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9ieXRlZW5hYmxlICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fcmVhZCAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVhZCksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fd3JpdGUgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fd3JpdGUpLAotICAgICAgLnJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YSAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlZGF0YSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcmVzZXRfbiksCi0gICAgICAudXBzdHJlYW1fYWRkcmVzcyAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2J5dGVhZGRyZXNzKSwKLSAgICAgIC51cHN0cmVhbV9ieXRlZW5hYmxlICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYnl0ZWVuYWJsZSksCi0gICAgICAudXBzdHJlYW1fZGVidWdhY2Nlc3MgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX2RlYnVnYWNjZXNzKSwKLSAgICAgIC51cHN0cmVhbV9uYXRpdmVhZGRyZXNzICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fYWRkcmVzcyksCi0gICAgICAudXBzdHJlYW1fcmVhZCAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWQpLAotICAgICAgLnVwc3RyZWFtX3JlYWRkYXRhICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV9yZWFkZGF0YSksCi0gICAgICAudXBzdHJlYW1fcmVhZGRhdGF2YWxpZCAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLnVwc3RyZWFtX3dhaXRyZXF1ZXN0ICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM191cHN0cmVhbV93YWl0cmVxdWVzdCksCi0gICAgICAudXBzdHJlYW1fd3JpdGUgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dyaXRlKSwKLSAgICAgIC51cHN0cmVhbV93cml0ZWRhdGEgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd3JpdGVkYXRhKQotICAgICk7Ci0KLSAgY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FyYml0cmF0b3IgdGhlX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbQotICAgICgKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX2J1cnN0Y291bnQpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfYnl0ZWVuYWJsZSksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX2RlYnVnYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9kZWJ1Z2FjY2VzcyksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX2dyYW50ZWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX2xhdGVuY3lfY291bnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9sYXRlbmN5X2NvdW50ZXIpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0gICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3JlYWQpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8wX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyIChjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfMF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzJfdXBzdHJlYW1fc2hpZnRfcmVnaXN0ZXIgKGNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF8yX3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyKSwKLSAgICAgIC5jcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSAgICAgICAgICAgICAgICAoY3B1X2RhdGFfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0pLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3NoaWZ0X3JlZ2lzdGVyIChjcHVfZGF0YV9tYXN0ZXJfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9zaGlmdF9yZWdpc3RlciksCi0gICAgICAuY3B1X2RhdGFfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9kYXRhX21hc3Rlcl9yZXF1ZXN0c19jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW0pLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfd3JpdGUpLAotICAgICAgLmNwdV9kYXRhX21hc3Rlcl93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcHVfZGF0YV9tYXN0ZXJfd3JpdGVkYXRhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FkZHJlc3MpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnVyc3Rjb3VudCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J5dGVhZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9ieXRlYWRkcmVzcyksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZGVidWdhY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd3JpdGUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd3JpdGVkYXRhKSwKLSAgICAgIC5kMV9jdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDFfY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2VuZF94ZmVyKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2Nsa19yZXNldF9uKQotICAgICk7Ci0KLSAgY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYXJiaXRyYXRvciB0aGVfY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW0KLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYWRkcmVzcyksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnVyc3Rjb3VudCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZWFkZGF0YSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9yZXNldF9uKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93YWl0cmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93YWl0cmVxdWVzdCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlZGF0YSksCi0gICAgICAuZDFfZGRyX3NkcmFtX3MxX2VuZF94ZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDFfZGRyX3NkcmFtX3MxX2VuZF94ZmVyKSwKLSAgICAgIC5kZHJfc2RyYW1fczFfcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZHJfc2RyYW1fczFfcmVhZGRhdGFfZnJvbV9zYSksCi0gICAgICAuZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2Nsa19yZXNldF9uKQotICAgICk7Ci0KLSAgY3VzdG9tX2RtYV9idXJzdF80IHRoZV9jdXN0b21fZG1hX2J1cnN0XzQKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuZG93bnN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZGRhdGEpLAotICAgICAgLmRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLmRvd25zdHJlYW1fd2FpdHJlcXVlc3QgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9hZGRyZXNzICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hZGRyZXNzKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9idXJzdGNvdW50ICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9idXJzdGNvdW50KSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9ieXRlZW5hYmxlICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC5yZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fcmVhZCAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZCksCi0gICAgICAucmVnX2Rvd25zdHJlYW1fd3JpdGUgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGUpLAotICAgICAgLnJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YSAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3dyaXRlZGF0YSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVzZXRfbiksCi0gICAgICAudXBzdHJlYW1fYWRkcmVzcyAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J5dGVhZGRyZXNzKSwKLSAgICAgIC51cHN0cmVhbV9idXJzdGNvdW50ICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fYnVyc3Rjb3VudCksCi0gICAgICAudXBzdHJlYW1fYnl0ZWVuYWJsZSAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2J5dGVlbmFibGUpLAotICAgICAgLnVwc3RyZWFtX2RlYnVnYWNjZXNzICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9kZWJ1Z2FjY2VzcyksCi0gICAgICAudXBzdHJlYW1fbmF0aXZlYWRkcmVzcyAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX2FkZHJlc3MpLAotICAgICAgLnVwc3RyZWFtX3JlYWQgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkKSwKLSAgICAgIC51cHN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fcmVhZGRhdGEpLAotICAgICAgLnVwc3RyZWFtX3JlYWRkYXRhdmFsaWQgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC51cHN0cmVhbV93YWl0cmVxdWVzdCAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfdXBzdHJlYW1fd2FpdHJlcXVlc3QpLAotICAgICAgLnVwc3RyZWFtX3dyaXRlICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF91cHN0cmVhbV93cml0ZSksCi0gICAgICAudXBzdHJlYW1fd3JpdGVkYXRhICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X3Vwc3RyZWFtX3dyaXRlZGF0YSkKLSAgICApOwotCi0gIGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9hcmJpdHJhdG9yIHRoZV9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0KLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9hZGRyZXNzKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9idXJzdGNvdW50KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYnl0ZWFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9ieXRlYWRkcmVzcyksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYnl0ZWVuYWJsZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2RlYnVnYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fZGVidWdhY2Nlc3MpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWRkYXRhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZF9mcm9tX3NhICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkZGF0YXZhbGlkX2Zyb21fc2EpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0cmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93YWl0cmVxdWVzdF9mcm9tX3NhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93cml0ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3dyaXRlZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd3JpdGVkYXRhKSwKLSAgICAgIC5kMV9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGQxX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9lbmRfeGZlciksCi0gICAgICAuZmlyX2RtYV93cml0ZV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaXJfZG1hX3dyaXRlX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5maXJfZG1hX3dyaXRlX21hc3Rlcl9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J1cnN0Y291bnQpLAotICAgICAgLmZpcl9kbWFfd3JpdGVfbWFzdGVyX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnl0ZWVuYWJsZSksCi0gICAgICAuZmlyX2RtYV93cml0ZV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0gICAgICAgICAgIChmaXJfZG1hX3dyaXRlX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSksCi0gICAgICAuZmlyX2RtYV93cml0ZV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtIChmaXJfZG1hX3dyaXRlX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0pLAotICAgICAgLmZpcl9kbWFfd3JpdGVfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSAgICAgICAgICAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtKSwKLSAgICAgIC5maXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlKSwKLSAgICAgIC5maXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlZGF0YSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrX3Jlc2V0X24pCi0gICAgKTsKLQotICBjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hcmJpdHJhdG9yIHRoZV9jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbQotICAgICgKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9idXJzdGNvdW50KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczEgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczFfc2hpZnRfcmVnaXN0ZXIgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczFfc2hpZnRfcmVnaXN0ZXIpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRkYXRhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3Jlc2V0X24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3Jlc2V0X24pLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGVkYXRhKSwKLSAgICAgIC5kMV9kZHJfc2RyYW1fczFfZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkMV9kZHJfc2RyYW1fczFfZW5kX3hmZXIpLAotICAgICAgLmRkcl9zZHJhbV9zMV9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRkcl9zZHJhbV9zMV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5kZHJfc2RyYW1fczFfd2FpdHJlcXVlc3Rfbl9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZHJfc2RyYW1fczFfd2FpdHJlcXVlc3Rfbl9mcm9tX3NhKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrX3Jlc2V0X24pCi0gICAgKTsKLQotICBjdXN0b21fZG1hX2J1cnN0XzUgdGhlX2N1c3RvbV9kbWFfYnVyc3RfNQotICAgICgKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLmRvd25zdHJlYW1fYWRkcmVzcyAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYWRkcmVzcyksCi0gICAgICAuZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlKSwKLSAgICAgIC5kb3duc3RyZWFtX2J1cnN0Y291bnQgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2J1cnN0Y291bnQpLAotICAgICAgLmRvd25zdHJlYW1fYnl0ZWVuYWJsZSAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSksCi0gICAgICAuZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyksCi0gICAgICAuZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzKSwKLSAgICAgIC5kb3duc3RyZWFtX3JlYWQgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWQpLAotICAgICAgLmRvd25zdHJlYW1fcmVhZGRhdGEgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZGRhdGEpLAotICAgICAgLmRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCksCi0gICAgICAuZG93bnN0cmVhbV93YWl0cmVxdWVzdCAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93YWl0cmVxdWVzdCksCi0gICAgICAuZG93bnN0cmVhbV93cml0ZSAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZSksCi0gICAgICAuZG93bnN0cmVhbV93cml0ZWRhdGEgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV93cml0ZWRhdGEpLAotICAgICAgLnJlc2V0X24gICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fcmVzZXRfbiksCi0gICAgICAudXBzdHJlYW1fYWRkcmVzcyAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fYnl0ZWFkZHJlc3MpLAotICAgICAgLnVwc3RyZWFtX2J1cnN0Y291bnQgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J1cnN0Y291bnQpLAotICAgICAgLnVwc3RyZWFtX2J5dGVlbmFibGUgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2J5dGVlbmFibGUpLAotICAgICAgLnVwc3RyZWFtX2RlYnVnYWNjZXNzICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2RlYnVnYWNjZXNzKSwKLSAgICAgIC51cHN0cmVhbV9uYXRpdmVhZGRyZXNzICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9hZGRyZXNzKSwKLSAgICAgIC51cHN0cmVhbV9yZWFkICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkKSwKLSAgICAgIC51cHN0cmVhbV9yZWFkZGF0YSAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV9yZWFkZGF0YSksCi0gICAgICAudXBzdHJlYW1fcmVhZGRhdGF2YWxpZCAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCksCi0gICAgICAudXBzdHJlYW1fd2FpdHJlcXVlc3QgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd2FpdHJlcXVlc3QpLAotICAgICAgLnVwc3RyZWFtX3dyaXRlICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3dyaXRlKSwKLSAgICAgIC51cHN0cmVhbV93cml0ZWRhdGEgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbV93cml0ZWRhdGEpCi0gICAgKTsKLQotICBjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYXJiaXRyYXRvciB0aGVfY3VzdG9tX2RtYV9jbG9ja18wX2luCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hZGRyZXNzKSwKLSAgICAgIC5jdXN0b21fZG1hX2Nsb2NrXzBfaW5fYnl0ZWVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfaW5fYnl0ZWVuYWJsZSksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZG9mcGFja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZG9mcGFja2V0KSwKLSAgICAgIC5jdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kb2ZwYWNrZXRfZnJvbV9zYSAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kb2ZwYWNrZXRfZnJvbV9zYSksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX2luX25hdGl2ZWFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9jbG9ja18wX2luX25hdGl2ZWFkZHJlc3MpLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWFkKSwKLSAgICAgIC5jdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVhZGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVhZGRhdGEpLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5jdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVzZXRfbiksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRyZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5jdXN0b21fZG1hX2Nsb2NrXzBfaW5fd2FpdHJlcXVlc3RfZnJvbV9zYSAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd2FpdHJlcXVlc3RfZnJvbV9zYSksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX2luX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9jbG9ja18wX2luX3dyaXRlKSwKLSAgICAgIC5jdXN0b21fZG1hX2Nsb2NrXzBfaW5fd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfaW5fd3JpdGVkYXRhKSwKLSAgICAgIC5kMV9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgIChkMV9jdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kX3hmZXIpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4pLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXIpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4gKHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2Nsb2NrXzBfaW4pLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfY2xvY2tfMF9pbiAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfY2xvY2tfMF9pbiksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2N1c3RvbV9kbWFfY2xvY2tfMF9pbiAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2N1c3RvbV9kbWFfY2xvY2tfMF9pbiksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrX3Jlc2V0X24pCi0gICAgKTsKLQotICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FyYml0cmF0b3IgdGhlX2N1c3RvbV9kbWFfY2xvY2tfMF9vdXQKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dGVybmFsX2NsayksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX291dF9hZGRyZXNzICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYWRkcmVzcyksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX291dF9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX291dF9ieXRlZW5hYmxlICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYnl0ZWVuYWJsZSksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX291dF9ncmFudGVkX3BsbF9zMSAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfZ3JhbnRlZF9wbGxfczEpLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcXVhbGlmaWVkX3JlcXVlc3RfcGxsX3MxIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3F1YWxpZmllZF9yZXF1ZXN0X3BsbF9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZCksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkX2RhdGFfdmFsaWRfcGxsX3MxICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZF9kYXRhX3ZhbGlkX3BsbF9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZWFkZGF0YSAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZGRhdGEpLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVxdWVzdHNfcGxsX3MxICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlcXVlc3RzX3BsbF9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZXNldF9uICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVzZXRfbiksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX291dF93YWl0cmVxdWVzdCAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd2FpdHJlcXVlc3QpLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGUgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlKSwKLSAgICAgIC5jdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlZGF0YSAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZWRhdGEpLAotICAgICAgLmQxX3BsbF9zMV9lbmRfeGZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkMV9wbGxfczFfZW5kX3hmZXIpLAotICAgICAgLnBsbF9zMV9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgIChwbGxfczFfcmVhZGRhdGFfZnJvbV9zYSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dGVybmFsX2Nsa19yZXNldF9uKQotICAgICk7Ci0KLSAgY3VzdG9tX2RtYV9jbG9ja18wIHRoZV9jdXN0b21fZG1hX2Nsb2NrXzAKLSAgICAoCi0gICAgICAubWFzdGVyX2FkZHJlc3MgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYWRkcmVzcyksCi0gICAgICAubWFzdGVyX2J5dGVlbmFibGUgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYnl0ZWVuYWJsZSksCi0gICAgICAubWFzdGVyX2NsayAgICAgICAgICAgKGV4dGVybmFsX2NsayksCi0gICAgICAubWFzdGVyX2VuZG9mcGFja2V0ICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfZW5kb2ZwYWNrZXQpLAotICAgICAgLm1hc3Rlcl9uYXRpdmVhZGRyZXNzIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X25hdGl2ZWFkZHJlc3MpLAotICAgICAgLm1hc3Rlcl9yZWFkICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlYWQpLAotICAgICAgLm1hc3Rlcl9yZWFkZGF0YSAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlYWRkYXRhKSwKLSAgICAgIC5tYXN0ZXJfcmVzZXRfbiAgICAgICAoY3VzdG9tX2RtYV9jbG9ja18wX291dF9yZXNldF9uKSwKLSAgICAgIC5tYXN0ZXJfd2FpdHJlcXVlc3QgICAoY3VzdG9tX2RtYV9jbG9ja18wX291dF93YWl0cmVxdWVzdCksCi0gICAgICAubWFzdGVyX3dyaXRlICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGUpLAotICAgICAgLm1hc3Rlcl93cml0ZWRhdGEgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlZGF0YSksCi0gICAgICAuc2xhdmVfYWRkcmVzcyAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9hZGRyZXNzKSwKLSAgICAgIC5zbGF2ZV9ieXRlZW5hYmxlICAgICAoY3VzdG9tX2RtYV9jbG9ja18wX2luX2J5dGVlbmFibGUpLAotICAgICAgLnNsYXZlX2NsayAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5zbGF2ZV9lbmRvZnBhY2tldCAgICAoY3VzdG9tX2RtYV9jbG9ja18wX2luX2VuZG9mcGFja2V0KSwKLSAgICAgIC5zbGF2ZV9uYXRpdmVhZGRyZXNzICAoY3VzdG9tX2RtYV9jbG9ja18wX2luX25hdGl2ZWFkZHJlc3MpLAotICAgICAgLnNsYXZlX3JlYWQgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfaW5fcmVhZCksCi0gICAgICAuc2xhdmVfcmVhZGRhdGEgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZWFkZGF0YSksCi0gICAgICAuc2xhdmVfcmVzZXRfbiAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9pbl9yZXNldF9uKSwKLSAgICAgIC5zbGF2ZV93YWl0cmVxdWVzdCAgICAoY3VzdG9tX2RtYV9jbG9ja18wX2luX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5zbGF2ZV93cml0ZSAgICAgICAgICAoY3VzdG9tX2RtYV9jbG9ja18wX2luX3dyaXRlKSwKLSAgICAgIC5zbGF2ZV93cml0ZWRhdGEgICAgICAoY3VzdG9tX2RtYV9jbG9ja18wX2luX3dyaXRlZGF0YSkKLSAgICApOwotCi0gIGRkcl9zZHJhbV9zMV9hcmJpdHJhdG9yIHRoZV9kZHJfc2RyYW1fczEKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fZ3JhbnRlZF9kZHJfc2RyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8zX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZGRyX3NkcmFtX3MxX3NoaWZ0X3JlZ2lzdGVyKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV9yZXF1ZXN0c19kZHJfc2RyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX3dyaXRlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzNfZG93bnN0cmVhbV93cml0ZWRhdGEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2J1cnN0Y291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2J1cnN0Y291bnQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2J5dGVlbmFibGUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX2dyYW50ZWRfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMSAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNF9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2Rkcl9zZHJhbV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMSAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMV9zaGlmdF9yZWdpc3RlciAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX2Rkcl9zZHJhbV9zMV9zaGlmdF9yZWdpc3RlciksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fcmVxdWVzdHNfZGRyX3NkcmFtX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV93cml0ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF80X2Rvd25zdHJlYW1fd3JpdGVkYXRhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9idXJzdGNvdW50KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9ncmFudGVkX2Rkcl9zZHJhbV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9kZHJfc2RyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWQpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczEgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczFfc2hpZnRfcmVnaXN0ZXIgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9kZHJfc2RyYW1fczFfc2hpZnRfcmVnaXN0ZXIpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMSAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3JlcXVlc3RzX2Rkcl9zZHJhbV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF81X2Rvd25zdHJlYW1fd3JpdGUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX3dyaXRlZGF0YSksCi0gICAgICAuZDFfZGRyX3NkcmFtX3MxX2VuZF94ZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDFfZGRyX3NkcmFtX3MxX2VuZF94ZmVyKSwKLSAgICAgIC5kZHJfc2RyYW1fczFfYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZHJfc2RyYW1fczFfYWRkcmVzcyksCi0gICAgICAuZGRyX3NkcmFtX3MxX2JlZ2luYnVyc3R0cmFuc2ZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX2JlZ2luYnVyc3R0cmFuc2ZlciksCi0gICAgICAuZGRyX3NkcmFtX3MxX2J1cnN0Y291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX2J1cnN0Y291bnQpLAotICAgICAgLmRkcl9zZHJhbV9zMV9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRkcl9zZHJhbV9zMV9ieXRlZW5hYmxlKSwKLSAgICAgIC5kZHJfc2RyYW1fczFfcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZHJfc2RyYW1fczFfcmVhZCksCi0gICAgICAuZGRyX3NkcmFtX3MxX3JlYWRkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX3JlYWRkYXRhKSwKLSAgICAgIC5kZHJfc2RyYW1fczFfcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZHJfc2RyYW1fczFfcmVhZGRhdGFfZnJvbV9zYSksCi0gICAgICAuZGRyX3NkcmFtX3MxX3JlYWRkYXRhdmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLmRkcl9zZHJhbV9zMV9yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRkcl9zZHJhbV9zMV9yZXNldF9uKSwKLSAgICAgIC5kZHJfc2RyYW1fczFfd2FpdHJlcXVlc3RfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZHJfc2RyYW1fczFfd2FpdHJlcXVlc3RfbiksCi0gICAgICAuZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X25fZnJvbV9zYSksCi0gICAgICAuZGRyX3NkcmFtX3MxX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGRyX3NkcmFtX3MxX3dyaXRlKSwKLSAgICAgIC5kZHJfc2RyYW1fczFfd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZHJfc2RyYW1fczFfd3JpdGVkYXRhKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrX3Jlc2V0X24pCi0gICAgKTsKLQotICBkZHJfc2RyYW0gdGhlX2Rkcl9zZHJhbQotICAgICgKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5jbGtfdG9fc2RyYW0gICAgICAgIChjbGtfdG9fc2RyYW1fZnJvbV90aGVfZGRyX3NkcmFtKSwKLSAgICAgIC5jbGtfdG9fc2RyYW1fbiAgICAgIChjbGtfdG9fc2RyYW1fbl9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRkcl9hICAgICAgICAgICAgICAgKGRkcl9hX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX2JhICAgICAgICAgICAgICAoZGRyX2JhX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX2Nhc19uICAgICAgICAgICAoZGRyX2Nhc19uX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX2NrZSAgICAgICAgICAgICAoZGRyX2NrZV9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRkcl9jc19uICAgICAgICAgICAgKGRkcl9jc19uX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX2RtICAgICAgICAgICAgICAoZGRyX2RtX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX2RxICAgICAgICAgICAgICAoZGRyX2RxX3RvX2FuZF9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRkcl9kcXMgICAgICAgICAgICAgKGRkcl9kcXNfdG9fYW5kX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX3Jhc19uICAgICAgICAgICAoZGRyX3Jhc19uX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX3dlX24gICAgICAgICAgICAoZGRyX3dlX25fZnJvbV90aGVfZGRyX3NkcmFtKSwKLSAgICAgIC5kcXNfZGVsYXlfY3RybCAgICAgIChkcXNfZGVsYXlfY3RybF90b190aGVfZGRyX3NkcmFtKSwKLSAgICAgIC5kcXN1cGRhdGUgICAgICAgICAgIChkcXN1cGRhdGVfdG9fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAubG9jYWxfYWRkciAgICAgICAgICAoZGRyX3NkcmFtX3MxX2FkZHJlc3MpLAotICAgICAgLmxvY2FsX2JlICAgICAgICAgICAgKGRkcl9zZHJhbV9zMV9ieXRlZW5hYmxlKSwKLSAgICAgIC5sb2NhbF9idXJzdGJlZ2luICAgIChkZHJfc2RyYW1fczFfYmVnaW5idXJzdHRyYW5zZmVyKSwKLSAgICAgIC5sb2NhbF9yZGF0YSAgICAgICAgIChkZHJfc2RyYW1fczFfcmVhZGRhdGEpLAotICAgICAgLmxvY2FsX3JkYXRhX3ZhbGlkICAgKGRkcl9zZHJhbV9zMV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5sb2NhbF9yZWFkX3JlcSAgICAgIChkZHJfc2RyYW1fczFfcmVhZCksCi0gICAgICAubG9jYWxfcmVhZHkgICAgICAgICAoZGRyX3NkcmFtX3MxX3dhaXRyZXF1ZXN0X24pLAotICAgICAgLmxvY2FsX3NpemUgICAgICAgICAgKGRkcl9zZHJhbV9zMV9idXJzdGNvdW50KSwKLSAgICAgIC5sb2NhbF93ZGF0YSAgICAgICAgIChkZHJfc2RyYW1fczFfd3JpdGVkYXRhKSwKLSAgICAgIC5sb2NhbF93cml0ZV9yZXEgICAgIChkZHJfc2RyYW1fczFfd3JpdGUpLAotICAgICAgLnJlc2V0X24gICAgICAgICAgICAgKGRkcl9zZHJhbV9zMV9yZXNldF9uKSwKLSAgICAgIC5zdHJhdGl4X2RsbF9jb250cm9sIChzdHJhdGl4X2RsbF9jb250cm9sX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAud3JpdGVfY2xrICAgICAgICAgICAod3JpdGVfY2xrX3RvX3RoZV9kZHJfc2RyYW0pCi0gICAgKTsKLQotICBleHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9hcmJpdHJhdG9yIHRoZV9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZQotICAgICgKLSAgICAgIC5hZHNjX25fdG9fdGhlX2V4dF9zc3JhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkc2Nfbl90b190aGVfZXh0X3NzcmFtKSwKLSAgICAgIC5id19uX3RvX3RoZV9leHRfc3NyYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ3X25fdG9fdGhlX2V4dF9zc3JhbSksCi0gICAgICAuYndlX25fdG9fdGhlX2V4dF9zc3JhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChid2Vfbl90b190aGVfZXh0X3NzcmFtKSwKLSAgICAgIC5jaGlwZW5hYmxlMV9uX3RvX3RoZV9leHRfc3NyYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoaXBlbmFibGUxX25fdG9fdGhlX2V4dF9zc3JhbSksCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FkZHJlc3NfdG9fc2xhdmUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9idXJzdGNvdW50KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2J5dGVlbmFibGUpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2dyYW50ZWRfZXh0X3NzcmFtX3MxICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZ3JhbnRlZF9leHRfc3NyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fbGF0ZW5jeV9jb3VudGVyKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczEgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X2V4dF9zc3JhbV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3JlcXVlc3RzX2V4dF9zc3JhbV9zMSAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fcmVxdWVzdHNfZXh0X3NzcmFtX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzBfZG93bnN0cmVhbV93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMF9kb3duc3RyZWFtX3dyaXRlZGF0YSksCi0gICAgICAuZDFfZXh0X3NzcmFtX2J1c19hdmFsb25fc2xhdmVfZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgIChkMV9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9lbmRfeGZlciksCi0gICAgICAuZXh0X3NzcmFtX2J1c19hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHRfc3NyYW1fYnVzX2FkZHJlc3MpLAotICAgICAgLmV4dF9zc3JhbV9idXNfZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXh0X3NzcmFtX2J1c19kYXRhKSwKLSAgICAgIC5maXJfZG1hX3JlYWRfbWFzdGVyX2FkZHJlc3NfdG9fc2xhdmUgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAuZmlyX2RtYV9yZWFkX21hc3Rlcl9ncmFudGVkX2V4dF9zc3JhbV9zMSAgICAgICAgICAgICAgICAgICAgIChmaXJfZG1hX3JlYWRfbWFzdGVyX2dyYW50ZWRfZXh0X3NzcmFtX3MxKSwKLSAgICAgIC5maXJfZG1hX3JlYWRfbWFzdGVyX2xhdGVuY3lfY291bnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyKSwKLSAgICAgIC5maXJfZG1hX3JlYWRfbWFzdGVyX3F1YWxpZmllZF9yZXF1ZXN0X2V4dF9zc3JhbV9zMSAgICAgICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfZXh0X3NzcmFtX3MxKSwKLSAgICAgIC5maXJfZG1hX3JlYWRfbWFzdGVyX3JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZCksCi0gICAgICAuZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxICAgICAgICAgICAgIChmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczEpLAotICAgICAgLmZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVxdWVzdHNfZXh0X3NzcmFtX3MxICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV9yZWFkX21hc3Rlcl9yZXF1ZXN0c19leHRfc3NyYW1fczEpLAotICAgICAgLmluY29taW5nX2V4dF9zc3JhbV9idXNfZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5jb21pbmdfZXh0X3NzcmFtX2J1c19kYXRhKSwKLSAgICAgIC5vdXRwdXRlbmFibGVfbl90b190aGVfZXh0X3NzcmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG91dHB1dGVuYWJsZV9uX3RvX3RoZV9leHRfc3NyYW0pLAotICAgICAgLnJlc2V0X24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2Nsa19yZXNldF9uKQotICAgICk7Ci0KLSAgZmlyX2RtYV9jb250cm9sX2FyYml0cmF0b3IgdGhlX2Zpcl9kbWFfY29udHJvbAotICAgICgKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5kMV9maXJfZG1hX2NvbnRyb2xfZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgIChkMV9maXJfZG1hX2NvbnRyb2xfZW5kX3hmZXIpLAotICAgICAgLmZpcl9kbWFfY29udHJvbF9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfY29udHJvbF9hZGRyZXNzKSwKLSAgICAgIC5maXJfZG1hX2NvbnRyb2xfYnl0ZWVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaXJfZG1hX2NvbnRyb2xfYnl0ZWVuYWJsZSksCi0gICAgICAuZmlyX2RtYV9jb250cm9sX2lycSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV9jb250cm9sX2lycSksCi0gICAgICAuZmlyX2RtYV9jb250cm9sX2lycV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV9jb250cm9sX2lycV9mcm9tX3NhKSwKLSAgICAgIC5maXJfZG1hX2NvbnRyb2xfcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaXJfZG1hX2NvbnRyb2xfcmVhZCksCi0gICAgICAuZmlyX2RtYV9jb250cm9sX3JlYWRkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV9jb250cm9sX3JlYWRkYXRhKSwKLSAgICAgIC5maXJfZG1hX2NvbnRyb2xfcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgIChmaXJfZG1hX2NvbnRyb2xfcmVhZGRhdGFfZnJvbV9zYSksCi0gICAgICAuZmlyX2RtYV9jb250cm9sX3Jlc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV9jb250cm9sX3Jlc2V0KSwKLSAgICAgIC5maXJfZG1hX2NvbnRyb2xfd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaXJfZG1hX2NvbnRyb2xfd3JpdGUpLAotICAgICAgLmZpcl9kbWFfY29udHJvbF93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfY29udHJvbF93cml0ZWRhdGEpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0ICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9maXJfZG1hX2NvbnRyb2wgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9maXJfZG1hX2NvbnRyb2wpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXIgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9sYXRlbmN5X2NvdW50ZXIpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9maXJfZG1hX2NvbnRyb2wgKHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9maXJfZG1hX2NvbnRyb2wpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2Zpcl9kbWFfY29udHJvbCAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2Zpcl9kbWFfY29udHJvbCksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2Zpcl9kbWFfY29udHJvbCAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX2Zpcl9kbWFfY29udHJvbCksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrX3Jlc2V0X24pCi0gICAgKTsKLQotICBmaXJfZG1hX3JlYWRfbWFzdGVyX2FyYml0cmF0b3IgdGhlX2Zpcl9kbWFfcmVhZF9tYXN0ZXIKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLmQxX2V4dF9zc3JhbV9idXNfYXZhbG9uX3NsYXZlX2VuZF94ZmVyICAgICAgICAgICAgIChkMV9leHRfc3NyYW1fYnVzX2F2YWxvbl9zbGF2ZV9lbmRfeGZlciksCi0gICAgICAuZmlyX2RtYV9yZWFkX21hc3Rlcl9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzcyksCi0gICAgICAuZmlyX2RtYV9yZWFkX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAuZmlyX2RtYV9yZWFkX21hc3Rlcl9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfYnl0ZWVuYWJsZSksCi0gICAgICAuZmlyX2RtYV9yZWFkX21hc3Rlcl9ncmFudGVkX2V4dF9zc3JhbV9zMSAgICAgICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfZ3JhbnRlZF9leHRfc3NyYW1fczEpLAotICAgICAgLmZpcl9kbWFfcmVhZF9tYXN0ZXJfbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgIChmaXJfZG1hX3JlYWRfbWFzdGVyX2xhdGVuY3lfY291bnRlciksCi0gICAgICAuZmlyX2RtYV9yZWFkX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9leHRfc3NyYW1fczEgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfZXh0X3NzcmFtX3MxKSwKLSAgICAgIC5maXJfZG1hX3JlYWRfbWFzdGVyX3JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkKSwKLSAgICAgIC5maXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRfZGF0YV92YWxpZF9leHRfc3NyYW1fczEgICAoZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkX2RhdGFfdmFsaWRfZXh0X3NzcmFtX3MxKSwKLSAgICAgIC5maXJfZG1hX3JlYWRfbWFzdGVyX3JlYWRkYXRhICAgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkZGF0YSksCi0gICAgICAuZmlyX2RtYV9yZWFkX21hc3Rlcl9yZWFkZGF0YXZhbGlkICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZGRhdGF2YWxpZCksCi0gICAgICAuZmlyX2RtYV9yZWFkX21hc3Rlcl9yZXF1ZXN0c19leHRfc3NyYW1fczEgICAgICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVxdWVzdHNfZXh0X3NzcmFtX3MxKSwKLSAgICAgIC5maXJfZG1hX3JlYWRfbWFzdGVyX3dhaXRyZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV9yZWFkX21hc3Rlcl93YWl0cmVxdWVzdCksCi0gICAgICAuaW5jb21pbmdfZXh0X3NzcmFtX2J1c19kYXRhICAgICAgICAgICAgICAgICAgICAgICAgKGluY29taW5nX2V4dF9zc3JhbV9idXNfZGF0YSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGtfcmVzZXRfbikKLSAgICApOwotCi0gIGZpcl9kbWFfd3JpdGVfbWFzdGVyX2FyYml0cmF0b3IgdGhlX2Zpcl9kbWFfd3JpdGVfbWFzdGVyCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3dhaXRyZXF1ZXN0X2Zyb21fc2EgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fd2FpdHJlcXVlc3RfZnJvbV9zYSksCi0gICAgICAuZDFfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX2VuZF94ZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkMV9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW1fZW5kX3hmZXIpLAotICAgICAgLmZpcl9kbWFfd3JpdGVfbWFzdGVyX2FkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfYWRkcmVzcyksCi0gICAgICAuZmlyX2RtYV93cml0ZV9tYXN0ZXJfYWRkcmVzc190b19zbGF2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaXJfZG1hX3dyaXRlX21hc3Rlcl9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5maXJfZG1hX3dyaXRlX21hc3Rlcl9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX2J1cnN0Y291bnQpLAotICAgICAgLmZpcl9kbWFfd3JpdGVfbWFzdGVyX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnl0ZWVuYWJsZSksCi0gICAgICAuZmlyX2RtYV93cml0ZV9tYXN0ZXJfZ3JhbnRlZF9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0gICAgICAgICAgIChmaXJfZG1hX3dyaXRlX21hc3Rlcl9ncmFudGVkX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSksCi0gICAgICAuZmlyX2RtYV93cml0ZV9tYXN0ZXJfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtIChmaXJfZG1hX3dyaXRlX21hc3Rlcl9xdWFsaWZpZWRfcmVxdWVzdF9jdXN0b21fZG1hX2J1cnN0XzVfdXBzdHJlYW0pLAotICAgICAgLmZpcl9kbWFfd3JpdGVfbWFzdGVyX3JlcXVlc3RzX2N1c3RvbV9kbWFfYnVyc3RfNV91cHN0cmVhbSAgICAgICAgICAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfcmVxdWVzdHNfY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtKSwKLSAgICAgIC5maXJfZG1hX3dyaXRlX21hc3Rlcl93YWl0cmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5maXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlKSwKLSAgICAgIC5maXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlZGF0YSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrX3Jlc2V0X24pCi0gICAgKTsKLQotICBmaXJfZG1hIHRoZV9maXJfZG1hCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLnJlYWRfbWFzdGVyX2FkZHJlc3MgICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfYWRkcmVzcyksCi0gICAgICAucmVhZF9tYXN0ZXJfYnl0ZWVuYWJsZSAgICAoZmlyX2RtYV9yZWFkX21hc3Rlcl9ieXRlZW5hYmxlKSwKLSAgICAgIC5yZWFkX21hc3Rlcl9yZWFkICAgICAgICAgIChmaXJfZG1hX3JlYWRfbWFzdGVyX3JlYWQpLAotICAgICAgLnJlYWRfbWFzdGVyX3JlYWRkYXRhICAgICAgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZGRhdGEpLAotICAgICAgLnJlYWRfbWFzdGVyX3JlYWRkYXRhdmFsaWQgKGZpcl9kbWFfcmVhZF9tYXN0ZXJfcmVhZGRhdGF2YWxpZCksCi0gICAgICAucmVhZF9tYXN0ZXJfd2FpdHJlcXVlc3QgICAoZmlyX2RtYV9yZWFkX21hc3Rlcl93YWl0cmVxdWVzdCksCi0gICAgICAucmVzZXQgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV9jb250cm9sX3Jlc2V0KSwKLSAgICAgIC5zbGF2ZV9hZGRyZXNzICAgICAgICAgICAgIChmaXJfZG1hX2NvbnRyb2xfYWRkcmVzcyksCi0gICAgICAuc2xhdmVfYnl0ZWVuYWJsZSAgICAgICAgICAoZmlyX2RtYV9jb250cm9sX2J5dGVlbmFibGUpLAotICAgICAgLnNsYXZlX2lycSAgICAgICAgICAgICAgICAgKGZpcl9kbWFfY29udHJvbF9pcnEpLAotICAgICAgLnNsYXZlX3JlYWQgICAgICAgICAgICAgICAgKGZpcl9kbWFfY29udHJvbF9yZWFkKSwKLSAgICAgIC5zbGF2ZV9yZWFkZGF0YSAgICAgICAgICAgIChmaXJfZG1hX2NvbnRyb2xfcmVhZGRhdGEpLAotICAgICAgLnNsYXZlX3dyaXRlICAgICAgICAgICAgICAgKGZpcl9kbWFfY29udHJvbF93cml0ZSksCi0gICAgICAuc2xhdmVfd3JpdGVkYXRhICAgICAgICAgICAoZmlyX2RtYV9jb250cm9sX3dyaXRlZGF0YSksCi0gICAgICAud3JpdGVfbWFzdGVyX2FkZHJlc3MgICAgICAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfYWRkcmVzcyksCi0gICAgICAud3JpdGVfbWFzdGVyX2J1cnN0Y291bnQgICAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnVyc3Rjb3VudCksCi0gICAgICAud3JpdGVfbWFzdGVyX2J5dGVlbmFibGUgICAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfYnl0ZWVuYWJsZSksCi0gICAgICAud3JpdGVfbWFzdGVyX3dhaXRyZXF1ZXN0ICAoZmlyX2RtYV93cml0ZV9tYXN0ZXJfd2FpdHJlcXVlc3QpLAotICAgICAgLndyaXRlX21hc3Rlcl93cml0ZSAgICAgICAgKGZpcl9kbWFfd3JpdGVfbWFzdGVyX3dyaXRlKSwKLSAgICAgIC53cml0ZV9tYXN0ZXJfd3JpdGVkYXRhICAgIChmaXJfZG1hX3dyaXRlX21hc3Rlcl93cml0ZWRhdGEpCi0gICAgKTsKLQotICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfYXJiaXRyYXRvciB0aGVfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLmQxX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9lbmRfeGZlciAgICAgICAgICAgICAgICAgICAgICAgICAgKGQxX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9lbmRfeGZlciksCi0gICAgICAuanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2FkZHJlc3MpLAotICAgICAgLmp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9jaGlwc2VsZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9jaGlwc2VsZWN0KSwKLSAgICAgIC5qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZGF0YWF2YWlsYWJsZSAgICAgICAgICAgICAgICAgICAgICAgIChqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZGF0YWF2YWlsYWJsZSksCi0gICAgICAuanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2RhdGFhdmFpbGFibGVfZnJvbV9zYSAgICAgICAgICAgICAgICAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2RhdGFhdmFpbGFibGVfZnJvbV9zYSksCi0gICAgICAuanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2lycSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2lycSksCi0gICAgICAuanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2lycV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2lycV9mcm9tX3NhKSwKLSAgICAgIC5qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZF9uKSwKLSAgICAgIC5qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZGRhdGEpLAotICAgICAgLmp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgKGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZHlmb3JkYXRhICAgICAgICAgICAgICAgICAgICAgICAgIChqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZHlmb3JkYXRhKSwKLSAgICAgIC5qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZHlmb3JkYXRhX2Zyb21fc2EgICAgICAgICAgICAgICAgIChqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZHlmb3JkYXRhX2Zyb21fc2EpLAotICAgICAgLmp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZXNldF9uKSwKLSAgICAgIC5qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgIChqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHJlcXVlc3QpLAotICAgICAgLmp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93YWl0cmVxdWVzdF9mcm9tX3NhICAgICAgICAgICAgICAgICAgKGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93YWl0cmVxdWVzdF9mcm9tX3NhKSwKLSAgICAgIC5qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd3JpdGVfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd3JpdGVfbiksCi0gICAgICAuanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dyaXRlZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dyaXRlZGF0YSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50KSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlIChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUgICAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2Nsa19yZXNldF9uKQotICAgICk7Ci0KLSAganRhZ191YXJ0IHRoZV9qdGFnX3VhcnQKLSAgICAoCi0gICAgICAuYXZfYWRkcmVzcyAgICAgKGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9hZGRyZXNzKSwKLSAgICAgIC5hdl9jaGlwc2VsZWN0ICAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2NoaXBzZWxlY3QpLAotICAgICAgLmF2X2lycSAgICAgICAgIChqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfaXJxKSwKLSAgICAgIC5hdl9yZWFkX24gICAgICAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3JlYWRfbiksCi0gICAgICAuYXZfcmVhZGRhdGEgICAgKGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YSksCi0gICAgICAuYXZfd2FpdHJlcXVlc3QgKGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93YWl0cmVxdWVzdCksCi0gICAgICAuYXZfd3JpdGVfbiAgICAgKGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV93cml0ZV9uKSwKLSAgICAgIC5hdl93cml0ZWRhdGEgICAoanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX3dyaXRlZGF0YSksCi0gICAgICAuY2xrICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLmRhdGFhdmFpbGFibGUgIChqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZGF0YWF2YWlsYWJsZSksCi0gICAgICAucmVhZHlmb3JkYXRhICAgKGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkeWZvcmRhdGEpLAotICAgICAgLnJzdF9uICAgICAgICAgIChqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVzZXRfbikKLSAgICApOwotCi0gIHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJpdHJhdG9yIHRoZV9waXBlbGluZV9icmlkZ2VfczEKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3MpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX2dyYW50ZWRfcGlwZWxpbmVfYnJpZGdlX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV9sYXRlbmN5X2NvdW50ZXIpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMSAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMV9kb3duc3RyZWFtX3F1YWxpZmllZF9yZXF1ZXN0X3BpcGVsaW5lX2JyaWRnZV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZCksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMSAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMV9zaGlmdF9yZWdpc3RlciAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVhZF9kYXRhX3ZhbGlkX3BpcGVsaW5lX2JyaWRnZV9zMV9zaGlmdF9yZWdpc3RlciksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVxdWVzdHNfcGlwZWxpbmVfYnJpZGdlX3MxICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fcmVxdWVzdHNfcGlwZWxpbmVfYnJpZGdlX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzFfZG93bnN0cmVhbV93cml0ZSksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8xX2Rvd25zdHJlYW1fd3JpdGVkYXRhKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9idXJzdGNvdW50KSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9ieXRlZW5hYmxlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fZ3JhbnRlZF9waXBlbGluZV9icmlkZ2VfczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX2xhdGVuY3lfY291bnRlciksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyksCi0gICAgICAuY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfcGlwZWxpbmVfYnJpZGdlX3MxICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9idXJzdF8yX2Rvd25zdHJlYW1fcXVhbGlmaWVkX3JlcXVlc3RfcGlwZWxpbmVfYnJpZGdlX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxX3NoaWZ0X3JlZ2lzdGVyIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZWFkX2RhdGFfdmFsaWRfcGlwZWxpbmVfYnJpZGdlX3MxX3NoaWZ0X3JlZ2lzdGVyKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczEgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV9yZXF1ZXN0c19waXBlbGluZV9icmlkZ2VfczEpLAotICAgICAgLmN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfYnVyc3RfMl9kb3duc3RyZWFtX3dyaXRlKSwKLSAgICAgIC5jdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2J1cnN0XzJfZG93bnN0cmVhbV93cml0ZWRhdGEpLAotICAgICAgLmQxX3BpcGVsaW5lX2JyaWRnZV9zMV9lbmRfeGZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGQxX3BpcGVsaW5lX2JyaWRnZV9zMV9lbmRfeGZlciksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX3MxX2FkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX2FkZHJlc3MpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9zMV9hcmJpdGVybG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJpdGVybG9jayksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX3MxX2FyYml0ZXJsb2NrMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX2FyYml0ZXJsb2NrMiksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX3MxX2J1cnN0Y291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX2J1cnN0Y291bnQpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9zMV9ieXRlZW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9zMV9ieXRlZW5hYmxlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfczFfY2hpcHNlbGVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfczFfY2hpcHNlbGVjdCksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX3MxX2RlYnVnYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfczFfZW5kb2ZwYWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfczFfZW5kb2ZwYWNrZXQpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9zMV9lbmRvZnBhY2tldF9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9zMV9lbmRvZnBhY2tldF9mcm9tX3NhKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfczFfbmF0aXZlYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfczFfbmF0aXZlYWRkcmVzcyksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX3MxX3JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX3JlYWQpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhX2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhX2Zyb21fc2EpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YXZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9zMV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfczFfcmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfczFfcmVzZXRfbiksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX3MxX3dhaXRyZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3RfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfczFfd2FpdHJlcXVlc3RfZnJvbV9zYSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX3MxX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX3dyaXRlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfczFfd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfczFfd3JpdGVkYXRhKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW1fY2xrX3Jlc2V0X24pCi0gICAgKTsKLQotICBwaXBlbGluZV9icmlkZ2VfbTFfYXJiaXRyYXRvciB0aGVfcGlwZWxpbmVfYnJpZGdlX20xCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLmNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5jdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kb2ZwYWNrZXRfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfaW5fZW5kb2ZwYWNrZXRfZnJvbV9zYSksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlYWRkYXRhX2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tX2RtYV9jbG9ja18wX2luX3JlYWRkYXRhX2Zyb21fc2EpLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9pbl93YWl0cmVxdWVzdF9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9pbl93YWl0cmVxdWVzdF9mcm9tX3NhKSwKLSAgICAgIC5kMV9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkMV9jcHVfanRhZ19kZWJ1Z19tb2R1bGVfZW5kX3hmZXIpLAotICAgICAgLmQxX2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRfeGZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGQxX2N1c3RvbV9kbWFfY2xvY2tfMF9pbl9lbmRfeGZlciksCi0gICAgICAuZDFfZmlyX2RtYV9jb250cm9sX2VuZF94ZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZDFfZmlyX2RtYV9jb250cm9sX2VuZF94ZmVyKSwKLSAgICAgIC5kMV9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgIChkMV9qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfZW5kX3hmZXIpLAotICAgICAgLmQxX3N5c2lkX2NvbnRyb2xfc2xhdmVfZW5kX3hmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGQxX3N5c2lkX2NvbnRyb2xfc2xhdmVfZW5kX3hmZXIpLAotICAgICAgLmQxX3RpbWVzdGFtcF90aW1lcl9zMV9lbmRfeGZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGQxX3RpbWVzdGFtcF90aW1lcl9zMV9lbmRfeGZlciksCi0gICAgICAuZmlyX2RtYV9jb250cm9sX3JlYWRkYXRhX2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlyX2RtYV9jb250cm9sX3JlYWRkYXRhX2Zyb21fc2EpLAotICAgICAgLmp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgKGp0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5qdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHJlcXVlc3RfZnJvbV9zYSAgICAgICAgICAgICAgICAgIChqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfd2FpdHJlcXVlc3RfZnJvbV9zYSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3MpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfZW5kb2ZwYWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfZW5kb2ZwYWNrZXQpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2NwdV9qdGFnX2RlYnVnX21vZHVsZSAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2NwdV9qdGFnX2RlYnVnX21vZHVsZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfY3VzdG9tX2RtYV9jbG9ja18wX2luICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfY3VzdG9tX2RtYV9jbG9ja18wX2luKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9maXJfZG1hX2NvbnRyb2wgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9maXJfZG1hX2NvbnRyb2wpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZSAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX2p0YWdfdWFydF9hdmFsb25fanRhZ19zbGF2ZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfc3lzaWRfY29udHJvbF9zbGF2ZSAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfc3lzaWRfY29udHJvbF9zbGF2ZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfdGltZXN0YW1wX3RpbWVyX3MxICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfdGltZXN0YW1wX3RpbWVyX3MxKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3B1X2p0YWdfZGVidWdfbW9kdWxlICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3B1X2p0YWdfZGVidWdfbW9kdWxlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9jbG9ja18wX2luICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfY3VzdG9tX2RtYV9jbG9ja18wX2luKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfZmlyX2RtYV9jb250cm9sICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfZmlyX2RtYV9jb250cm9sKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlIChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3Rfc3lzaWRfY29udHJvbF9zbGF2ZSAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3Rfc3lzaWRfY29udHJvbF9zbGF2ZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X3RpbWVzdGFtcF90aW1lcl9zMSAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X3RpbWVzdGFtcF90aW1lcl9zMSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3JlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfY3B1X2p0YWdfZGVidWdfbW9kdWxlICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfY3B1X2p0YWdfZGVidWdfbW9kdWxlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfY2xvY2tfMF9pbiAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX2N1c3RvbV9kbWFfY2xvY2tfMF9pbiksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2wgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF9maXJfZG1hX2NvbnRyb2wpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX3N5c2lkX2NvbnRyb2xfc2xhdmUgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX3N5c2lkX2NvbnRyb2xfc2xhdmUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfdGltZXN0YW1wX3RpbWVyX3MxICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfdGltZXN0YW1wX3RpbWVyX3MxKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVhZGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZGRhdGEpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkZGF0YXZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3B1X2p0YWdfZGVidWdfbW9kdWxlICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3B1X2p0YWdfZGVidWdfbW9kdWxlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3VzdG9tX2RtYV9jbG9ja18wX2luICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfY3VzdG9tX2RtYV9jbG9ja18wX2luKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfZmlyX2RtYV9jb250cm9sICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfZmlyX2RtYV9jb250cm9sKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfanRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfc3lzaWRfY29udHJvbF9zbGF2ZSAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfc3lzaWRfY29udHJvbF9zbGF2ZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3RpbWVzdGFtcF90aW1lcl9zMSAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3JlcXVlc3RzX3RpbWVzdGFtcF90aW1lcl9zMSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3dhaXRyZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZWRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZWRhdGEpLAotICAgICAgLnJlc2V0X24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGtfcmVzZXRfbiksCi0gICAgICAuc3lzaWRfY29udHJvbF9zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzaWRfY29udHJvbF9zbGF2ZV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC50aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGFfZnJvbV9zYSkKLSAgICApOwotCi0gIHBpcGVsaW5lX2JyaWRnZSB0aGVfcGlwZWxpbmVfYnJpZGdlCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLm0xX2FkZHJlc3MgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzKSwKLSAgICAgIC5tMV9idXJzdGNvdW50ICAgIChwaXBlbGluZV9icmlkZ2VfbTFfYnVyc3Rjb3VudCksCi0gICAgICAubTFfYnl0ZWVuYWJsZSAgICAocGlwZWxpbmVfYnJpZGdlX20xX2J5dGVlbmFibGUpLAotICAgICAgLm0xX2NoaXBzZWxlY3QgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9jaGlwc2VsZWN0KSwKLSAgICAgIC5tMV9kZWJ1Z2FjY2VzcyAgIChwaXBlbGluZV9icmlkZ2VfbTFfZGVidWdhY2Nlc3MpLAotICAgICAgLm0xX2VuZG9mcGFja2V0ICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9lbmRvZnBhY2tldCksCi0gICAgICAubTFfcmVhZCAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQpLAotICAgICAgLm0xX3JlYWRkYXRhICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkZGF0YSksCi0gICAgICAubTFfcmVhZGRhdGF2YWxpZCAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLm0xX3dhaXRyZXF1ZXN0ICAgKHBpcGVsaW5lX2JyaWRnZV9tMV93YWl0cmVxdWVzdCksCi0gICAgICAubTFfd3JpdGUgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlKSwKLSAgICAgIC5tMV93cml0ZWRhdGEgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfd3JpdGVkYXRhKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfczFfcmVzZXRfbiksCi0gICAgICAuczFfYWRkcmVzcyAgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX2FkZHJlc3MpLAotICAgICAgLnMxX2FyYml0ZXJsb2NrICAgKHBpcGVsaW5lX2JyaWRnZV9zMV9hcmJpdGVybG9jayksCi0gICAgICAuczFfYXJiaXRlcmxvY2syICAocGlwZWxpbmVfYnJpZGdlX3MxX2FyYml0ZXJsb2NrMiksCi0gICAgICAuczFfYnVyc3Rjb3VudCAgICAocGlwZWxpbmVfYnJpZGdlX3MxX2J1cnN0Y291bnQpLAotICAgICAgLnMxX2J5dGVlbmFibGUgICAgKHBpcGVsaW5lX2JyaWRnZV9zMV9ieXRlZW5hYmxlKSwKLSAgICAgIC5zMV9jaGlwc2VsZWN0ICAgIChwaXBlbGluZV9icmlkZ2VfczFfY2hpcHNlbGVjdCksCi0gICAgICAuczFfZGVidWdhY2Nlc3MgICAocGlwZWxpbmVfYnJpZGdlX3MxX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5zMV9lbmRvZnBhY2tldCAgIChwaXBlbGluZV9icmlkZ2VfczFfZW5kb2ZwYWNrZXQpLAotICAgICAgLnMxX25hdGl2ZWFkZHJlc3MgKHBpcGVsaW5lX2JyaWRnZV9zMV9uYXRpdmVhZGRyZXNzKSwKLSAgICAgIC5zMV9yZWFkICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfczFfcmVhZCksCi0gICAgICAuczFfcmVhZGRhdGEgICAgICAocGlwZWxpbmVfYnJpZGdlX3MxX3JlYWRkYXRhKSwKLSAgICAgIC5zMV9yZWFkZGF0YXZhbGlkIChwaXBlbGluZV9icmlkZ2VfczFfcmVhZGRhdGF2YWxpZCksCi0gICAgICAuczFfd2FpdHJlcXVlc3QgICAocGlwZWxpbmVfYnJpZGdlX3MxX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5zMV93cml0ZSAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfczFfd3JpdGUpLAotICAgICAgLnMxX3dyaXRlZGF0YSAgICAgKHBpcGVsaW5lX2JyaWRnZV9zMV93cml0ZWRhdGEpCi0gICAgKTsKLQotICBwbGxfczFfYXJiaXRyYXRvciB0aGVfcGxsX3MxCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHRlcm5hbF9jbGspLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfYWRkcmVzc190b19zbGF2ZSAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2FkZHJlc3NfdG9fc2xhdmUpLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfZ3JhbnRlZF9wbGxfczEgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2dyYW50ZWRfcGxsX3MxKSwKLSAgICAgIC5jdXN0b21fZG1hX2Nsb2NrXzBfb3V0X25hdGl2ZWFkZHJlc3MgICAgICAgICAgICAoY3VzdG9tX2RtYV9jbG9ja18wX291dF9uYXRpdmVhZGRyZXNzKSwKLSAgICAgIC5jdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3F1YWxpZmllZF9yZXF1ZXN0X3BsbF9zMSAoY3VzdG9tX2RtYV9jbG9ja18wX291dF9xdWFsaWZpZWRfcmVxdWVzdF9wbGxfczEpLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZCAgICAgICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlYWQpLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVhZF9kYXRhX3ZhbGlkX3BsbF9zMSAgIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlYWRfZGF0YV92YWxpZF9wbGxfczEpLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfcmVxdWVzdHNfcGxsX3MxICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3JlcXVlc3RzX3BsbF9zMSksCi0gICAgICAuY3VzdG9tX2RtYV9jbG9ja18wX291dF93cml0ZSAgICAgICAgICAgICAgICAgICAgKGN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGUpLAotICAgICAgLmN1c3RvbV9kbWFfY2xvY2tfMF9vdXRfd3JpdGVkYXRhICAgICAgICAgICAgICAgIChjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X3dyaXRlZGF0YSksCi0gICAgICAuZDFfcGxsX3MxX2VuZF94ZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGQxX3BsbF9zMV9lbmRfeGZlciksCi0gICAgICAucGxsX3MxX2FkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBsbF9zMV9hZGRyZXNzKSwKLSAgICAgIC5wbGxfczFfY2hpcHNlbGVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxsX3MxX2NoaXBzZWxlY3QpLAotICAgICAgLnBsbF9zMV9yZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGxfczFfcmVhZCksCi0gICAgICAucGxsX3MxX3JlYWRkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBsbF9zMV9yZWFkZGF0YSksCi0gICAgICAucGxsX3MxX3JlYWRkYXRhX2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAgICAgKHBsbF9zMV9yZWFkZGF0YV9mcm9tX3NhKSwKLSAgICAgIC5wbGxfczFfcmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxsX3MxX3Jlc2V0X24pLAotICAgICAgLnBsbF9zMV9yZXNldHJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGxfczFfcmVzZXRyZXF1ZXN0KSwKLSAgICAgIC5wbGxfczFfcmVzZXRyZXF1ZXN0X2Zyb21fc2EgICAgICAgICAgICAgICAgICAgICAocGxsX3MxX3Jlc2V0cmVxdWVzdF9mcm9tX3NhKSwKLSAgICAgIC5wbGxfczFfd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxsX3MxX3dyaXRlKSwKLSAgICAgIC5wbGxfczFfd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxsX3MxX3dyaXRlZGF0YSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dGVybmFsX2Nsa19yZXNldF9uKQotICAgICk7Ci0KLSAgLy9zeXN0ZW1fY2xrIG91dF9jbGsgYXNzaWdubWVudCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHN5c3RlbV9jbGsgPSBvdXRfY2xrX3BsbF9jMDsKLQotICAvL3NzcmFtX2NsayBvdXRfY2xrIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBzc3JhbV9jbGsgPSBvdXRfY2xrX3BsbF9jMTsKLQotICAvL3NkcmFtX3dyaXRlX2NsayBvdXRfY2xrIGFzc2lnbm1lbnQsIHdoaWNoIGlzIGFuIGVfYXNzaWduCi0gIGFzc2lnbiBzZHJhbV93cml0ZV9jbGsgPSBvdXRfY2xrX3BsbF9jMjsKLQotICBwbGwgdGhlX3BsbAotICAgICgKLSAgICAgIC5hZGRyZXNzICAgICAgKHBsbF9zMV9hZGRyZXNzKSwKLSAgICAgIC5jMCAgICAgICAgICAgKG91dF9jbGtfcGxsX2MwKSwKLSAgICAgIC5jMSAgICAgICAgICAgKG91dF9jbGtfcGxsX2MxKSwKLSAgICAgIC5jMiAgICAgICAgICAgKG91dF9jbGtfcGxsX2MyKSwKLSAgICAgIC5jaGlwc2VsZWN0ICAgKHBsbF9zMV9jaGlwc2VsZWN0KSwKLSAgICAgIC5jbGsgICAgICAgICAgKGV4dGVybmFsX2NsayksCi0gICAgICAucmVhZCAgICAgICAgIChwbGxfczFfcmVhZCksCi0gICAgICAucmVhZGRhdGEgICAgIChwbGxfczFfcmVhZGRhdGEpLAotICAgICAgLnJlc2V0X24gICAgICAocGxsX3MxX3Jlc2V0X24pLAotICAgICAgLnJlc2V0cmVxdWVzdCAocGxsX3MxX3Jlc2V0cmVxdWVzdCksCi0gICAgICAud3JpdGUgICAgICAgIChwbGxfczFfd3JpdGUpLAotICAgICAgLndyaXRlZGF0YSAgICAocGxsX3MxX3dyaXRlZGF0YSkKLSAgICApOwotCi0gIHN5c2lkX2NvbnRyb2xfc2xhdmVfYXJiaXRyYXRvciB0aGVfc3lzaWRfY29udHJvbF9zbGF2ZQotICAgICgKLSAgICAgIC5jbGsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuZDFfc3lzaWRfY29udHJvbF9zbGF2ZV9lbmRfeGZlciAgICAgICAgICAgICAgICAgICAgICAgICAgKGQxX3N5c2lkX2NvbnRyb2xfc2xhdmVfZW5kX3hmZXIpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9hZGRyZXNzX3RvX3NsYXZlICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfYWRkcmVzc190b19zbGF2ZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2J1cnN0Y291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50KSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2NoaXBzZWxlY3QpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9ncmFudGVkX3N5c2lkX2NvbnRyb2xfc2xhdmUgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfZ3JhbnRlZF9zeXNpZF9jb250cm9sX3NsYXZlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2xhdGVuY3lfY291bnRlciksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3F1YWxpZmllZF9yZXF1ZXN0X3N5c2lkX2NvbnRyb2xfc2xhdmUgKHBpcGVsaW5lX2JyaWRnZV9tMV9xdWFsaWZpZWRfcmVxdWVzdF9zeXNpZF9jb250cm9sX3NsYXZlKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWQpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9yZWFkX2RhdGFfdmFsaWRfc3lzaWRfY29udHJvbF9zbGF2ZSAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZF9kYXRhX3ZhbGlkX3N5c2lkX2NvbnRyb2xfc2xhdmUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c19zeXNpZF9jb250cm9sX3NsYXZlICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVxdWVzdHNfc3lzaWRfY29udHJvbF9zbGF2ZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGtfcmVzZXRfbiksCi0gICAgICAuc3lzaWRfY29udHJvbF9zbGF2ZV9hZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c2lkX2NvbnRyb2xfc2xhdmVfYWRkcmVzcyksCi0gICAgICAuc3lzaWRfY29udHJvbF9zbGF2ZV9yZWFkZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c2lkX2NvbnRyb2xfc2xhdmVfcmVhZGRhdGEpLAotICAgICAgLnN5c2lkX2NvbnRyb2xfc2xhdmVfcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgIChzeXNpZF9jb250cm9sX3NsYXZlX3JlYWRkYXRhX2Zyb21fc2EpCi0gICAgKTsKLQotICBzeXNpZCB0aGVfc3lzaWQKLSAgICAoCi0gICAgICAuYWRkcmVzcyAgKHN5c2lkX2NvbnRyb2xfc2xhdmVfYWRkcmVzcyksCi0gICAgICAucmVhZGRhdGEgKHN5c2lkX2NvbnRyb2xfc2xhdmVfcmVhZGRhdGEpCi0gICAgKTsKLQotICB0aW1lc3RhbXBfdGltZXJfczFfYXJiaXRyYXRvciB0aGVfdGltZXN0YW1wX3RpbWVyX3MxCi0gICAgKAotICAgICAgLmNsayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbV9jbGspLAotICAgICAgLmQxX3RpbWVzdGFtcF90aW1lcl9zMV9lbmRfeGZlciAgICAgICAgICAgICAgICAgICAgICAgICAgKGQxX3RpbWVzdGFtcF90aW1lcl9zMV9lbmRfeGZlciksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmUgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2FkZHJlc3NfdG9fc2xhdmUpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9idXJzdGNvdW50KSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfY2hpcHNlbGVjdCksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfdGltZXN0YW1wX3RpbWVyX3MxICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX2dyYW50ZWRfdGltZXN0YW1wX3RpbWVyX3MxKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfbGF0ZW5jeV9jb3VudGVyKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfdGltZXN0YW1wX3RpbWVyX3MxIChwaXBlbGluZV9icmlkZ2VfbTFfcXVhbGlmaWVkX3JlcXVlc3RfdGltZXN0YW1wX3RpbWVyX3MxKSwKLSAgICAgIC5waXBlbGluZV9icmlkZ2VfbTFfcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwaXBlbGluZV9icmlkZ2VfbTFfcmVhZCksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF90aW1lc3RhbXBfdGltZXJfczEgICAocGlwZWxpbmVfYnJpZGdlX20xX3JlYWRfZGF0YV92YWxpZF90aW1lc3RhbXBfdGltZXJfczEpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c190aW1lc3RhbXBfdGltZXJfczEgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV9yZXF1ZXN0c190aW1lc3RhbXBfdGltZXJfczEpLAotICAgICAgLnBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBpcGVsaW5lX2JyaWRnZV9tMV93cml0ZSksCi0gICAgICAucGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGlwZWxpbmVfYnJpZGdlX20xX3dyaXRlZGF0YSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2Nsa19yZXNldF9uKSwKLSAgICAgIC50aW1lc3RhbXBfdGltZXJfczFfYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lc3RhbXBfdGltZXJfczFfYWRkcmVzcyksCi0gICAgICAudGltZXN0YW1wX3RpbWVyX3MxX2NoaXBzZWxlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZXN0YW1wX3RpbWVyX3MxX2NoaXBzZWxlY3QpLAotICAgICAgLnRpbWVzdGFtcF90aW1lcl9zMV9pcnEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWVzdGFtcF90aW1lcl9zMV9pcnEpLAotICAgICAgLnRpbWVzdGFtcF90aW1lcl9zMV9pcnFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWVzdGFtcF90aW1lcl9zMV9pcnFfZnJvbV9zYSksCi0gICAgICAudGltZXN0YW1wX3RpbWVyX3MxX3JlYWRkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZXN0YW1wX3RpbWVyX3MxX3JlYWRkYXRhKSwKLSAgICAgIC50aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGFfZnJvbV9zYSAgICAgICAgICAgICAgICAgICAgICh0aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGFfZnJvbV9zYSksCi0gICAgICAudGltZXN0YW1wX3RpbWVyX3MxX3Jlc2V0X24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZXN0YW1wX3RpbWVyX3MxX3Jlc2V0X24pLAotICAgICAgLnRpbWVzdGFtcF90aW1lcl9zMV93cml0ZV9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWVzdGFtcF90aW1lcl9zMV93cml0ZV9uKSwKLSAgICAgIC50aW1lc3RhbXBfdGltZXJfczFfd3JpdGVkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lc3RhbXBfdGltZXJfczFfd3JpdGVkYXRhKQotICAgICk7Ci0KLSAgdGltZXN0YW1wX3RpbWVyIHRoZV90aW1lc3RhbXBfdGltZXIKLSAgICAoCi0gICAgICAuYWRkcmVzcyAgICAodGltZXN0YW1wX3RpbWVyX3MxX2FkZHJlc3MpLAotICAgICAgLmNoaXBzZWxlY3QgKHRpbWVzdGFtcF90aW1lcl9zMV9jaGlwc2VsZWN0KSwKLSAgICAgIC5jbGsgICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5pcnEgICAgICAgICh0aW1lc3RhbXBfdGltZXJfczFfaXJxKSwKLSAgICAgIC5yZWFkZGF0YSAgICh0aW1lc3RhbXBfdGltZXJfczFfcmVhZGRhdGEpLAotICAgICAgLnJlc2V0X24gICAgKHRpbWVzdGFtcF90aW1lcl9zMV9yZXNldF9uKSwKLSAgICAgIC53cml0ZV9uICAgICh0aW1lc3RhbXBfdGltZXJfczFfd3JpdGVfbiksCi0gICAgICAud3JpdGVkYXRhICAodGltZXN0YW1wX3RpbWVyX3MxX3dyaXRlZGF0YSkKLSAgICApOwotCi0gIC8vcmVzZXQgaXMgYXNzZXJ0ZWQgYXN5bmNocm9ub3VzbHkgYW5kIGRlYXNzZXJ0ZWQgc3luY2hyb25vdXNseQotICBjdXN0b21fZG1hX3Jlc2V0X3N5c3RlbV9jbGtfZG9tYWluX3N5bmNoX21vZHVsZSBjdXN0b21fZG1hX3Jlc2V0X3N5c3RlbV9jbGtfZG9tYWluX3N5bmNoCi0gICAgKAotICAgICAgLmNsayAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5kYXRhX2luICAoMSdiMSksCi0gICAgICAuZGF0YV9vdXQgKHN5c3RlbV9jbGtfcmVzZXRfbiksCi0gICAgICAucmVzZXRfbiAgKHJlc2V0X25fc291cmNlcykKLSAgICApOwotCi0gIC8vcmVzZXQgc291cmNlcyBtdXgsIHdoaWNoIGlzIGFuIGVfbXV4Ci0gIGFzc2lnbiByZXNldF9uX3NvdXJjZXMgPSB+KH5yZXNldF9uIHwKLSAgICAwIHwKLSAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcmVzZXRyZXF1ZXN0X2Zyb21fc2EgfAotICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9yZXNldHJlcXVlc3RfZnJvbV9zYSB8Ci0gICAgMCB8Ci0gICAgcGxsX3MxX3Jlc2V0cmVxdWVzdF9mcm9tX3NhIHwKLSAgICBwbGxfczFfcmVzZXRyZXF1ZXN0X2Zyb21fc2EpOwotCi0gIC8vcmVzZXQgaXMgYXNzZXJ0ZWQgYXN5bmNocm9ub3VzbHkgYW5kIGRlYXNzZXJ0ZWQgc3luY2hyb25vdXNseQotICBjdXN0b21fZG1hX3Jlc2V0X2V4dGVybmFsX2Nsa19kb21haW5fc3luY2hfbW9kdWxlIGN1c3RvbV9kbWFfcmVzZXRfZXh0ZXJuYWxfY2xrX2RvbWFpbl9zeW5jaAotICAgICgKLSAgICAgIC5jbGsgICAgICAoZXh0ZXJuYWxfY2xrKSwKLSAgICAgIC5kYXRhX2luICAoMSdiMSksCi0gICAgICAuZGF0YV9vdXQgKGV4dGVybmFsX2Nsa19yZXNldF9uKSwKLSAgICAgIC5yZXNldF9uICAocmVzZXRfbl9zb3VyY2VzKQotICAgICk7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd3JpdGVkYXRhIG9mIHR5cGUgd3JpdGVkYXRhIGRvZXMgbm90IGNvbm5lY3QgdG8gYW55dGhpbmcgc28gd2lyZSBpdCB0byBkZWZhdWx0ICgwKQotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8xX3Vwc3RyZWFtX3dyaXRlZGF0YSA9IDA7Ci0KLSAgLy9jdXN0b21fZG1hX2J1cnN0XzNfdXBzdHJlYW1fd3JpdGVkYXRhIG9mIHR5cGUgd3JpdGVkYXRhIGRvZXMgbm90IGNvbm5lY3QgdG8gYW55dGhpbmcgc28gd2lyZSBpdCB0byBkZWZhdWx0ICgwKQotICBhc3NpZ24gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dyaXRlZGF0YSA9IDA7Ci0KLSAgLy9jdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2VuZG9mcGFja2V0IG9mIHR5cGUgZW5kb2ZwYWNrZXQgZG9lcyBub3QgY29ubmVjdCB0byBhbnl0aGluZyBzbyB3aXJlIGl0IHRvIGRlZmF1bHQgKDApCi0gIGFzc2lnbiBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2VuZG9mcGFja2V0ID0gMDsKLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgZXh0X3NzcmFtX2xhbmUwX21vZHVsZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZGNsa2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyY2xvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmVuLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbICA3OiAwXSBxOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbICA3OiAwXSBkYXRhOwotICBpbnB1dCAgIFsgMTg6IDBdIHJkYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICByZGNsa2VuOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgWyAxODogMF0gd3JhZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIHdyY2xvY2s7Ci0gIGlucHV0ICAgICAgICAgICAgd3JlbjsKLQotICByZWcgICAgIFsgMTg6IDBdIGQxX3JkYWRkcmVzczsKLSAgcmVnICAgICBbICA3OiAwXSBtZW1fYXJyYXkgWzUyNDI4NzogMF07Ci0gIHdpcmUgICAgWyAgNzogMF0gcTsKLSAgcmVnICAgICBbIDE4OiAwXSByZWFkX2FkZHJlc3M7Ci0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICBkMV9yZGFkZHJlc3MgPD0gMDsKLSAgICAgICAgICByZWFkX2FkZHJlc3MgPD0gMDsKLSAgICAgICAgZW5kCi0gICAgICBlbHNlIGlmIChyZGNsa2VuKQotICAgICAgICBiZWdpbgotICAgICAgICAgIGQxX3JkYWRkcmVzcyA8PSByZGFkZHJlc3M7Ci0gICAgICAgICAgcmVhZF9hZGRyZXNzIDw9IGQxX3JkYWRkcmVzczsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvLyBEYXRhIHJlYWQgaXMgc3luY2hyb25pemVkIHRocm91Z2ggbGF0ZW50X3JkYWRkcmVzcy4KLSAgYXNzaWduIHEgPSBtZW1fYXJyYXlbcmVhZF9hZGRyZXNzXTsKLQotaW5pdGlhbAotICAgICRyZWFkbWVtaCgiZXh0X3NzcmFtX2xhbmUwLmRhdCIsIG1lbV9hcnJheSk7Ci0gIGFsd2F5cyBAKHBvc2VkZ2Ugd3JjbG9jaykKLSAgICBiZWdpbgotICAgICAgLy8gV3JpdGUgZGF0YQotICAgICAgaWYgKHdyZW4pCi0gICAgICAgICAgbWVtX2FycmF5W3dyYWRkcmVzc10gPD0gZGF0YTsKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLS8vc3ludGhlc2lzIHJlYWRfY29tbWVudHNfYXNfSERMIG9uCi0vLyAgYWx3YXlzIEAocmRhZGRyZXNzKQotLy8gICAgYmVnaW4KLS8vICAgICAgcmVhZF9hZGRyZXNzID0gcmRhZGRyZXNzOwotLy8gICAgZW5kCi0vLwotLy8KLS8vICBscG1fcmFtX2RwIGxwbV9yYW1fZHBfY29tcG9uZW50Ci0vLyAgICAoCi0vLyAgICAgIC5kYXRhIChkYXRhKSwKLS8vICAgICAgLnEgKHEpLAotLy8gICAgICAucmRhZGRyZXNzIChyZWFkX2FkZHJlc3MpLAotLy8gICAgICAucmRjbGtlbiAocmRjbGtlbiksCi0vLyAgICAgIC5yZGNsb2NrIChjbGspLAotLy8gICAgICAud3JhZGRyZXNzICh3cmFkZHJlc3MpLAotLy8gICAgICAud3JjbG9jayAod3JjbG9jayksCi0vLyAgICAgIC53cmVuICh3cmVuKQotLy8gICAgKTsKLS8vCi0vLyAgZGVmcGFyYW0gbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX2ZpbGUgPSAiZXh0X3NzcmFtX2xhbmUwLm1pZiIsCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX2hpbnQgPSAiVVNFX0VBQj1PTiIsCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX2luZGF0YSA9ICJSRUdJU1RFUkVEIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fb3V0ZGF0YSA9ICJSRUdJU1RFUkVEIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fcmRhZGRyZXNzX2NvbnRyb2wgPSAiUkVHSVNURVJFRCIsCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX3dpZHRoID0gOCwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fd2lkdGhhZCA9IDE5LAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV93cmFkZHJlc3NfY29udHJvbCA9ICJSRUdJU1RFUkVEIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5zdXBwcmVzc19tZW1vcnlfY29udmVyc2lvbl93YXJuaW5ncyA9ICJPTiI7Ci0vLwotLy9zeW50aGVzaXMgcmVhZF9jb21tZW50c19hc19IREwgb2ZmCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBleHRfc3NyYW1fbGFuZTFfbW9kdWxlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkY2xrZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JjbG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyZW4sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgIDc6IDBdIHE7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgIDc6IDBdIGRhdGE7Ci0gIGlucHV0ICAgWyAxODogMF0gcmRhZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIHJkY2xrZW47Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICBbIDE4OiAwXSB3cmFkZHJlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgd3JjbG9jazsKLSAgaW5wdXQgICAgICAgICAgICB3cmVuOwotCi0gIHJlZyAgICAgWyAxODogMF0gZDFfcmRhZGRyZXNzOwotICByZWcgICAgIFsgIDc6IDBdIG1lbV9hcnJheSBbNTI0Mjg3OiAwXTsKLSAgd2lyZSAgICBbICA3OiAwXSBxOwotICByZWcgICAgIFsgMTg6IDBdIHJlYWRfYWRkcmVzczsKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICBiZWdpbgotICAgICAgICAgIGQxX3JkYWRkcmVzcyA8PSAwOwotICAgICAgICAgIHJlYWRfYWRkcmVzcyA8PSAwOwotICAgICAgICBlbmQKLSAgICAgIGVsc2UgaWYgKHJkY2xrZW4pCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgZDFfcmRhZGRyZXNzIDw9IHJkYWRkcmVzczsKLSAgICAgICAgICByZWFkX2FkZHJlc3MgPD0gZDFfcmRhZGRyZXNzOwotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIC8vIERhdGEgcmVhZCBpcyBzeW5jaHJvbml6ZWQgdGhyb3VnaCBsYXRlbnRfcmRhZGRyZXNzLgotICBhc3NpZ24gcSA9IG1lbV9hcnJheVtyZWFkX2FkZHJlc3NdOwotCi1pbml0aWFsCi0gICAgJHJlYWRtZW1oKCJleHRfc3NyYW1fbGFuZTEuZGF0IiwgbWVtX2FycmF5KTsKLSAgYWx3YXlzIEAocG9zZWRnZSB3cmNsb2NrKQotICAgIGJlZ2luCi0gICAgICAvLyBXcml0ZSBkYXRhCi0gICAgICBpZiAod3JlbikKLSAgICAgICAgICBtZW1fYXJyYXlbd3JhZGRyZXNzXSA8PSBkYXRhOwotICAgIGVuZAotCi0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotLy9zeW50aGVzaXMgcmVhZF9jb21tZW50c19hc19IREwgb24KLS8vICBhbHdheXMgQChyZGFkZHJlc3MpCi0vLyAgICBiZWdpbgotLy8gICAgICByZWFkX2FkZHJlc3MgPSByZGFkZHJlc3M7Ci0vLyAgICBlbmQKLS8vCi0vLwotLy8gIGxwbV9yYW1fZHAgbHBtX3JhbV9kcF9jb21wb25lbnQKLS8vICAgICgKLS8vICAgICAgLmRhdGEgKGRhdGEpLAotLy8gICAgICAucSAocSksCi0vLyAgICAgIC5yZGFkZHJlc3MgKHJlYWRfYWRkcmVzcyksCi0vLyAgICAgIC5yZGNsa2VuIChyZGNsa2VuKSwKLS8vICAgICAgLnJkY2xvY2sgKGNsayksCi0vLyAgICAgIC53cmFkZHJlc3MgKHdyYWRkcmVzcyksCi0vLyAgICAgIC53cmNsb2NrICh3cmNsb2NrKSwKLS8vICAgICAgLndyZW4gKHdyZW4pCi0vLyAgICApOwotLy8KLS8vICBkZWZwYXJhbSBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fZmlsZSA9ICJleHRfc3NyYW1fbGFuZTEubWlmIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1faGludCA9ICJVU0VfRUFCPU9OIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1faW5kYXRhID0gIlJFR0lTVEVSRUQiLAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV9vdXRkYXRhID0gIlJFR0lTVEVSRUQiLAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV9yZGFkZHJlc3NfY29udHJvbCA9ICJSRUdJU1RFUkVEIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fd2lkdGggPSA4LAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV93aWR0aGFkID0gMTksCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX3dyYWRkcmVzc19jb250cm9sID0gIlJFR0lTVEVSRUQiLAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LnN1cHByZXNzX21lbW9yeV9jb252ZXJzaW9uX3dhcm5pbmdzID0gIk9OIjsKLS8vCi0vL3N5bnRoZXNpcyByZWFkX2NvbW1lbnRzX2FzX0hETCBvZmYKLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGV4dF9zc3JhbV9sYW5lMl9tb2R1bGUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmRhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmRjbGtlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmNsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JlbiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAgNzogMF0gcTsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAgNzogMF0gZGF0YTsKLSAgaW5wdXQgICBbIDE4OiAwXSByZGFkZHJlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgcmRjbGtlbjsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotICBpbnB1dCAgIFsgMTg6IDBdIHdyYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICB3cmNsb2NrOwotICBpbnB1dCAgICAgICAgICAgIHdyZW47Ci0KLSAgcmVnICAgICBbIDE4OiAwXSBkMV9yZGFkZHJlc3M7Ci0gIHJlZyAgICAgWyAgNzogMF0gbWVtX2FycmF5IFs1MjQyODc6IDBdOwotICB3aXJlICAgIFsgIDc6IDBdIHE7Ci0gIHJlZyAgICAgWyAxODogMF0gcmVhZF9hZGRyZXNzOwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgZDFfcmRhZGRyZXNzIDw9IDA7Ci0gICAgICAgICAgcmVhZF9hZGRyZXNzIDw9IDA7Ci0gICAgICAgIGVuZAotICAgICAgZWxzZSBpZiAocmRjbGtlbikKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICBkMV9yZGFkZHJlc3MgPD0gcmRhZGRyZXNzOwotICAgICAgICAgIHJlYWRfYWRkcmVzcyA8PSBkMV9yZGFkZHJlc3M7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgLy8gRGF0YSByZWFkIGlzIHN5bmNocm9uaXplZCB0aHJvdWdoIGxhdGVudF9yZGFkZHJlc3MuCi0gIGFzc2lnbiBxID0gbWVtX2FycmF5W3JlYWRfYWRkcmVzc107Ci0KLWluaXRpYWwKLSAgICAkcmVhZG1lbWgoImV4dF9zc3JhbV9sYW5lMi5kYXQiLCBtZW1fYXJyYXkpOwotICBhbHdheXMgQChwb3NlZGdlIHdyY2xvY2spCi0gICAgYmVnaW4KLSAgICAgIC8vIFdyaXRlIGRhdGEKLSAgICAgIGlmICh3cmVuKQotICAgICAgICAgIG1lbV9hcnJheVt3cmFkZHJlc3NdIDw9IGRhdGE7Ci0gICAgZW5kCi0KLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0vL3N5bnRoZXNpcyByZWFkX2NvbW1lbnRzX2FzX0hETCBvbgotLy8gIGFsd2F5cyBAKHJkYWRkcmVzcykKLS8vICAgIGJlZ2luCi0vLyAgICAgIHJlYWRfYWRkcmVzcyA9IHJkYWRkcmVzczsKLS8vICAgIGVuZAotLy8KLS8vCi0vLyAgbHBtX3JhbV9kcCBscG1fcmFtX2RwX2NvbXBvbmVudAotLy8gICAgKAotLy8gICAgICAuZGF0YSAoZGF0YSksCi0vLyAgICAgIC5xIChxKSwKLS8vICAgICAgLnJkYWRkcmVzcyAocmVhZF9hZGRyZXNzKSwKLS8vICAgICAgLnJkY2xrZW4gKHJkY2xrZW4pLAotLy8gICAgICAucmRjbG9jayAoY2xrKSwKLS8vICAgICAgLndyYWRkcmVzcyAod3JhZGRyZXNzKSwKLS8vICAgICAgLndyY2xvY2sgKHdyY2xvY2spLAotLy8gICAgICAud3JlbiAod3JlbikKLS8vICAgICk7Ci0vLwotLy8gIGRlZnBhcmFtIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV9maWxlID0gImV4dF9zc3JhbV9sYW5lMi5taWYiLAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV9oaW50ID0gIlVTRV9FQUI9T04iLAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV9pbmRhdGEgPSAiUkVHSVNURVJFRCIsCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX291dGRhdGEgPSAiUkVHSVNURVJFRCIsCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX3JkYWRkcmVzc19jb250cm9sID0gIlJFR0lTVEVSRUQiLAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV93aWR0aCA9IDgsCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX3dpZHRoYWQgPSAxOSwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fd3JhZGRyZXNzX2NvbnRyb2wgPSAiUkVHSVNURVJFRCIsCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQuc3VwcHJlc3NfbWVtb3J5X2NvbnZlcnNpb25fd2FybmluZ3MgPSAiT04iOwotLy8KLS8vc3ludGhlc2lzIHJlYWRfY29tbWVudHNfYXNfSERMIG9mZgotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgZXh0X3NzcmFtX2xhbmUzX21vZHVsZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZGNsa2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyY2xvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmVuLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbICA3OiAwXSBxOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbICA3OiAwXSBkYXRhOwotICBpbnB1dCAgIFsgMTg6IDBdIHJkYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICByZGNsa2VuOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgWyAxODogMF0gd3JhZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIHdyY2xvY2s7Ci0gIGlucHV0ICAgICAgICAgICAgd3JlbjsKLQotICByZWcgICAgIFsgMTg6IDBdIGQxX3JkYWRkcmVzczsKLSAgcmVnICAgICBbICA3OiAwXSBtZW1fYXJyYXkgWzUyNDI4NzogMF07Ci0gIHdpcmUgICAgWyAgNzogMF0gcTsKLSAgcmVnICAgICBbIDE4OiAwXSByZWFkX2FkZHJlc3M7Ci0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICBkMV9yZGFkZHJlc3MgPD0gMDsKLSAgICAgICAgICByZWFkX2FkZHJlc3MgPD0gMDsKLSAgICAgICAgZW5kCi0gICAgICBlbHNlIGlmIChyZGNsa2VuKQotICAgICAgICBiZWdpbgotICAgICAgICAgIGQxX3JkYWRkcmVzcyA8PSByZGFkZHJlc3M7Ci0gICAgICAgICAgcmVhZF9hZGRyZXNzIDw9IGQxX3JkYWRkcmVzczsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvLyBEYXRhIHJlYWQgaXMgc3luY2hyb25pemVkIHRocm91Z2ggbGF0ZW50X3JkYWRkcmVzcy4KLSAgYXNzaWduIHEgPSBtZW1fYXJyYXlbcmVhZF9hZGRyZXNzXTsKLQotaW5pdGlhbAotICAgICRyZWFkbWVtaCgiZXh0X3NzcmFtX2xhbmUzLmRhdCIsIG1lbV9hcnJheSk7Ci0gIGFsd2F5cyBAKHBvc2VkZ2Ugd3JjbG9jaykKLSAgICBiZWdpbgotICAgICAgLy8gV3JpdGUgZGF0YQotICAgICAgaWYgKHdyZW4pCi0gICAgICAgICAgbWVtX2FycmF5W3dyYWRkcmVzc10gPD0gZGF0YTsKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLS8vc3ludGhlc2lzIHJlYWRfY29tbWVudHNfYXNfSERMIG9uCi0vLyAgYWx3YXlzIEAocmRhZGRyZXNzKQotLy8gICAgYmVnaW4KLS8vICAgICAgcmVhZF9hZGRyZXNzID0gcmRhZGRyZXNzOwotLy8gICAgZW5kCi0vLwotLy8KLS8vICBscG1fcmFtX2RwIGxwbV9yYW1fZHBfY29tcG9uZW50Ci0vLyAgICAoCi0vLyAgICAgIC5kYXRhIChkYXRhKSwKLS8vICAgICAgLnEgKHEpLAotLy8gICAgICAucmRhZGRyZXNzIChyZWFkX2FkZHJlc3MpLAotLy8gICAgICAucmRjbGtlbiAocmRjbGtlbiksCi0vLyAgICAgIC5yZGNsb2NrIChjbGspLAotLy8gICAgICAud3JhZGRyZXNzICh3cmFkZHJlc3MpLAotLy8gICAgICAud3JjbG9jayAod3JjbG9jayksCi0vLyAgICAgIC53cmVuICh3cmVuKQotLy8gICAgKTsKLS8vCi0vLyAgZGVmcGFyYW0gbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX2ZpbGUgPSAiZXh0X3NzcmFtX2xhbmUzLm1pZiIsCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX2hpbnQgPSAiVVNFX0VBQj1PTiIsCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX2luZGF0YSA9ICJSRUdJU1RFUkVEIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fb3V0ZGF0YSA9ICJSRUdJU1RFUkVEIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fcmRhZGRyZXNzX2NvbnRyb2wgPSAiUkVHSVNURVJFRCIsCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX3dpZHRoID0gOCwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fd2lkdGhhZCA9IDE5LAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV93cmFkZHJlc3NfY29udHJvbCA9ICJSRUdJU1RFUkVEIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5zdXBwcmVzc19tZW1vcnlfY29udmVyc2lvbl93YXJuaW5ncyA9ICJPTiI7Ci0vLwotLy9zeW50aGVzaXMgcmVhZF9jb21tZW50c19hc19IREwgb2ZmCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBleHRfc3NyYW0gKAotICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgYWRzY19uLAotICAgICAgICAgICAgICAgICAgICBid19uLAotICAgICAgICAgICAgICAgICAgICBid2VfbiwKLSAgICAgICAgICAgICAgICAgICAgY2hpcGVuYWJsZTFfbiwKLSAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICBvdXRwdXRlbmFibGVfbiwKLSAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLQotICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEKLSAgICAgICAgICAgICAgICAgKQotOwotCi0gIGlub3V0ICAgWyAzMTogMF0gZGF0YTsKLSAgaW5wdXQgICBbIDE4OiAwXSBhZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIGFkc2NfbjsKLSAgaW5wdXQgICBbICAzOiAwXSBid19uOwotICBpbnB1dCAgICAgICAgICAgIGJ3ZV9uOwotICBpbnB1dCAgICAgICAgICAgIGNoaXBlbmFibGUxX247Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIG91dHB1dGVuYWJsZV9uOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0KLSAgd2lyZSAgICBbIDMxOiAwXSBkYXRhOwotICB3aXJlICAgIFsgIDc6IDBdIGRhdGFfMDsKLSAgd2lyZSAgICBbICA3OiAwXSBkYXRhXzE7Ci0gIHdpcmUgICAgWyAgNzogMF0gZGF0YV8yOwotICB3aXJlICAgIFsgIDc6IDBdIGRhdGFfMzsKLSAgd2lyZSAgICBbIDMxOiAwXSBsb2dpY192ZWN0b3JfZ2Fza2V0OwotICB3aXJlICAgIFsgIDc6IDBdIHFfMDsKLSAgd2lyZSAgICBbICA3OiAwXSBxXzE7Ci0gIHdpcmUgICAgWyAgNzogMF0gcV8yOwotICB3aXJlICAgIFsgIDc6IDBdIHFfMzsKLSAgLy9zMSwgd2hpY2ggaXMgYW4gZV9wdGZfc2xhdmUKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgYXNzaWduIGxvZ2ljX3ZlY3Rvcl9nYXNrZXQgPSBkYXRhOwotICBhc3NpZ24gZGF0YV8wID0gbG9naWNfdmVjdG9yX2dhc2tldFs3IDogMF07Ci0gIC8vZXh0X3NzcmFtX2xhbmUwLCB3aGljaCBpcyBhbiBlX3JhbQotICBleHRfc3NyYW1fbGFuZTBfbW9kdWxlIGV4dF9zc3JhbV9sYW5lMAotICAgICgKLSAgICAgIC5jbGsgICAgICAgKGNsayksCi0gICAgICAuZGF0YSAgICAgIChkYXRhXzApLAotICAgICAgLnEgICAgICAgICAocV8wKSwKLSAgICAgIC5yZGFkZHJlc3MgKGFkZHJlc3MpLAotICAgICAgLnJkY2xrZW4gICAoMSdiMSksCi0gICAgICAucmVzZXRfbiAgIChyZXNldF9uKSwKLSAgICAgIC53cmFkZHJlc3MgKGFkZHJlc3MpLAotICAgICAgLndyY2xvY2sgICAoY2xrKSwKLSAgICAgIC53cmVuICAgICAgKH5jaGlwZW5hYmxlMV9uICYgfmJ3ZV9uICYgfmJ3X25bMF0pCi0gICAgKTsKLQotICBhc3NpZ24gZGF0YV8xID0gbG9naWNfdmVjdG9yX2dhc2tldFsxNSA6IDhdOwotICAvL2V4dF9zc3JhbV9sYW5lMSwgd2hpY2ggaXMgYW4gZV9yYW0KLSAgZXh0X3NzcmFtX2xhbmUxX21vZHVsZSBleHRfc3NyYW1fbGFuZTEKLSAgICAoCi0gICAgICAuY2xrICAgICAgIChjbGspLAotICAgICAgLmRhdGEgICAgICAoZGF0YV8xKSwKLSAgICAgIC5xICAgICAgICAgKHFfMSksCi0gICAgICAucmRhZGRyZXNzIChhZGRyZXNzKSwKLSAgICAgIC5yZGNsa2VuICAgKDEnYjEpLAotICAgICAgLnJlc2V0X24gICAocmVzZXRfbiksCi0gICAgICAud3JhZGRyZXNzIChhZGRyZXNzKSwKLSAgICAgIC53cmNsb2NrICAgKGNsayksCi0gICAgICAud3JlbiAgICAgICh+Y2hpcGVuYWJsZTFfbiAmIH5id2VfbiAmIH5id19uWzFdKQotICAgICk7Ci0KLSAgYXNzaWduIGRhdGFfMiA9IGxvZ2ljX3ZlY3Rvcl9nYXNrZXRbMjMgOiAxNl07Ci0gIC8vZXh0X3NzcmFtX2xhbmUyLCB3aGljaCBpcyBhbiBlX3JhbQotICBleHRfc3NyYW1fbGFuZTJfbW9kdWxlIGV4dF9zc3JhbV9sYW5lMgotICAgICgKLSAgICAgIC5jbGsgICAgICAgKGNsayksCi0gICAgICAuZGF0YSAgICAgIChkYXRhXzIpLAotICAgICAgLnEgICAgICAgICAocV8yKSwKLSAgICAgIC5yZGFkZHJlc3MgKGFkZHJlc3MpLAotICAgICAgLnJkY2xrZW4gICAoMSdiMSksCi0gICAgICAucmVzZXRfbiAgIChyZXNldF9uKSwKLSAgICAgIC53cmFkZHJlc3MgKGFkZHJlc3MpLAotICAgICAgLndyY2xvY2sgICAoY2xrKSwKLSAgICAgIC53cmVuICAgICAgKH5jaGlwZW5hYmxlMV9uICYgfmJ3ZV9uICYgfmJ3X25bMl0pCi0gICAgKTsKLQotICBhc3NpZ24gZGF0YV8zID0gbG9naWNfdmVjdG9yX2dhc2tldFszMSA6IDI0XTsKLSAgLy9leHRfc3NyYW1fbGFuZTMsIHdoaWNoIGlzIGFuIGVfcmFtCi0gIGV4dF9zc3JhbV9sYW5lM19tb2R1bGUgZXh0X3NzcmFtX2xhbmUzCi0gICAgKAotICAgICAgLmNsayAgICAgICAoY2xrKSwKLSAgICAgIC5kYXRhICAgICAgKGRhdGFfMyksCi0gICAgICAucSAgICAgICAgIChxXzMpLAotICAgICAgLnJkYWRkcmVzcyAoYWRkcmVzcyksCi0gICAgICAucmRjbGtlbiAgICgxJ2IxKSwKLSAgICAgIC5yZXNldF9uICAgKHJlc2V0X24pLAotICAgICAgLndyYWRkcmVzcyAoYWRkcmVzcyksCi0gICAgICAud3JjbG9jayAgIChjbGspLAotICAgICAgLndyZW4gICAgICAofmNoaXBlbmFibGUxX24gJiB+YndlX24gJiB+YndfblszXSkKLSAgICApOwotCi0gIGFzc2lnbiBkYXRhID0gKH5jaGlwZW5hYmxlMV9uICYgfm91dHB1dGVuYWJsZV9uKT8ge3FfMywKLSAgICBxXzIsCi0gICAgcV8xLAotICAgIHFfMH06IHszMnsxJ2J6fX07Ci0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi1lbmRtb2R1bGUKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0KLQotCi0vLyA8QUxURVJBX05PVEU+IENPREUgSU5TRVJURUQgQkVUV0VFTiBIRVJFCi0KLS8vIEFORCBIRVJFIFdJTEwgQkUgUFJFU0VSVkVEIDwvQUxURVJBX05PVEU+Ci0KLQotLy8gSWYgdXNlciBsb2dpYyBjb21wb25lbnRzIHVzZSBBbHRzeW5jX1JhbSB3aXRoIGNvbnZlcnRfaGV4MnZlci5kbGwsCi0vLyBzZXQgVVNFX2NvbnZlcnRfaGV4MnZlciBpbiB0aGUgdXNlciBjb21tZW50cyBzZWN0aW9uIGFib3ZlCi0KLS8vIGBpZmRlZiBVU0VfY29udmVydF9oZXgydmVyCi0vLyBgZWxzZQotLy8gYGRlZmluZSBOT19QTEkgMQotLy8gYGVuZGlmCi0KLS8qIFNMbGluZSAxICJkZHJfc2RyYW1fYXVrX2Rkcl9kcXNfZ3JvdXAudiIgMSAqLwotLy9MZWdhbCBOb3RpY2U6IChDKTIwMTAgQWx0ZXJhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgWW91cgotLy91c2Ugb2YgQWx0ZXJhIENvcnBvcmF0aW9uJ3MgZGVzaWduIHRvb2xzLCBsb2dpYyBmdW5jdGlvbnMgYW5kIG90aGVyCi0vL3NvZnR3YXJlIGFuZCB0b29scywgYW5kIGl0cyBBTVBQIHBhcnRuZXIgbG9naWMgZnVuY3Rpb25zLCBhbmQgYW55Ci0vL291dHB1dCBmaWxlcyBhbnkgb2YgdGhlIGZvcmVnb2luZyAoaW5jbHVkaW5nIGRldmljZSBwcm9ncmFtbWluZyBvcgotLy9zaW11bGF0aW9uIGZpbGVzKSwgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gYXJlCi0vL2V4cHJlc3NseSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQWx0ZXJhIFByb2dyYW0KLS8vTGljZW5zZSBTdWJzY3JpcHRpb24gQWdyZWVtZW50IG9yIG90aGVyIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnQsCi0vL2luY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCB0aGF0IHlvdXIgdXNlIGlzIGZvciB0aGUgc29sZSBwdXJwb3NlCi0vL29mIHByb2dyYW1taW5nIGxvZ2ljIGRldmljZXMgbWFudWZhY3R1cmVkIGJ5IEFsdGVyYSBhbmQgc29sZCBieSBBbHRlcmEKLS8vb3IgaXRzIGF1dGhvcml6ZWQgZGlzdHJpYnV0b3JzLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBhcHBsaWNhYmxlCi0vL2FncmVlbWVudCBmb3IgZnVydGhlciBkZXRhaWxzLgotCi0vLyBzeW50aGVzaXMgdHJhbnNsYXRlX29mZgotYHRpbWVzY2FsZSAxcHMgLyAxcHMKLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vL1BhcmFtZXRlcnM6Ci0vL0RldmljZSBGYW1pbHkgICAgICAgICAgICAgICAgICAgICAgOiBTdHJhdGl4IElJCi0vL0RRX1BFUl9EUVMgICAgICAgICAgICAgICAgICAgICAgICAgOiA4Ci0vL05PTi1EUVMgTU9ERSAgICAgICAgICAgICAgICAgICAgICAgOiBmYWxzZQotLy91c2UgUmVzeW5jaCBjbG9jayAgICAgICAgICAgICAgICAgIDogdHJ1ZQotLy9SZXN5bmNoIGNsb2NrIGVkZ2UgICAgICAgICAgICAgICAgIDogcmlzaW5nCi0vL1Bvc3RhbWJsZSBDbG9jayBFZGdlICAgICAgICAgICAgICAgOiByaXNpbmcKLS8vUG9zdGFtYmxlIENsb2NrIEN5Y2xlICAgICAgICAgICAgICA6IDEKLS8vSW50ZXJtZWRpYXRlIFJlc3luY2ggICAgICAgICAgICAgICA6IGZhbHNlCi0vL0ludGVybWVkaWF0ZSBQb3N0YW1ibGUgICAgICAgICAgICAgOiBmYWxzZQotLy9QaXBlbGluZSByZWFkIERhdGEgICAgICAgICAgICAgICAgIDogZmFsc2UKLS8vRW5hYmxlIFBvc3RhbWJsZSBMb2dpYyAgICAgICAgICAgICA6IHRydWUKLS8vUG9zdGFtYmxlIFJlZ3MgUGVyIERRUyAgICAgICAgICAgICA6IDEKLS8vU3RyYXRpeCBJbnNlcnQgRFFTIGRlbGF5IGJ1ZmZlcnMgICA6IDAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1tb2R1bGUgZGRyX3NkcmFtX2F1a19kZHJfZHFzX2dyb3VwICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xfYmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xfZG9pbmdfcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xfZG9pbmdfd3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xfZHFzX2J1cnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sX3dkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sX3dkYXRhX3ZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcXNfZGVsYXlfY3RybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHFzdXBkYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0YW1ibGVfY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN5bmNoX2NsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfY2xrLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbF9yZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRyX2RtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfZHEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkcl9kcXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAvKiBzeW50aGVzaXMgQUxURVJBX0FUVFJJQlVURSA9ICJNRVNTQUdFX0RJU0FCTEU9MTQxMzA7U1VQUFJFU1NfREFfUlVMRV9JTlRFUk5BTD1DMTAxO1NVUFBSRVNTX0RBX1JVTEVfSU5URVJOQUw9QzEwMztTVVBQUkVTU19EQV9SVUxFX0lOVEVSTkFMPUMxMDU7U1VQUFJFU1NfREFfUlVMRV9JTlRFUk5BTD1DMTA2O1NVUFBSRVNTX0RBX1JVTEVfSU5URVJOQUw9UjEwNDtTVVBQUkVTU19EQV9SVUxFX0lOVEVSTkFMPUExMDI7U1VQUFJFU1NfREFfUlVMRV9JTlRFUk5BTD1BMTAzO1NVUFBSRVNTX0RBX1JVTEVfSU5URVJOQUw9QzEwNDtTVVBQUkVTU19EQV9SVUxFX0lOVEVSTkFMPUQxMDE7U1VQUFJFU1NfREFfUlVMRV9JTlRFUk5BTD1EMTAyO1NVUFBSRVNTX0RBX1JVTEVfSU5URVJOQUw9RDEwMztTVVBQUkVTU19EQV9SVUxFX0lOVEVSTkFMPVIxMDI7U1VQUFJFU1NfREFfUlVMRV9JTlRFUk5BTD1SMTA1IiAqLyA7Ci0KLSAgcGFyYW1ldGVyIGdETExfSU5QVVRfRlJFUVVFTkNZID0gIjEwMDAwcHMiOwotICBwYXJhbWV0ZXIgZ1NUUkFUSVhJSV9EUVNfT1VUX01PREUgPSAiZGVsYXlfY2hhaW4yIjsKLSAgcGFyYW1ldGVyIGdTVFJBVElYSUlfRFFTX1BIQVNFID0gNjAwMDsKLSAgcGFyYW1ldGVyIGdTVFJBVElYSUlfRExMX0RFTEFZX0JVRkZFUl9NT0RFID0gImxvdyI7Ci0KLQotICBvdXRwdXQgIFsgMTU6IDBdIGNvbnRyb2xfcmRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgZGRyX2RtOwotICBpbm91dCAgIFsgIDc6IDBdIGRkcl9kcTsKLSAgaW5vdXQgICAgICAgICAgICBkZHJfZHFzOwotICBpbnB1dCAgICAgICAgICAgIGNhcHR1cmVfY2xrOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbICAxOiAwXSBjb250cm9sX2JlOwotICBpbnB1dCAgICAgICAgICAgIGNvbnRyb2xfZG9pbmdfcmQ7Ci0gIGlucHV0ICAgICAgICAgICAgY29udHJvbF9kb2luZ193cjsKLSAgaW5wdXQgICAgICAgICAgICBjb250cm9sX2Rxc19idXJzdDsKLSAgaW5wdXQgICBbIDE1OiAwXSBjb250cm9sX3dkYXRhOwotICBpbnB1dCAgICAgICAgICAgIGNvbnRyb2xfd2RhdGFfdmFsaWQ7Ci0gIGlucHV0ICAgWyAgNTogMF0gZHFzX2RlbGF5X2N0cmw7Ci0gIGlucHV0ICAgICAgICAgICAgZHFzdXBkYXRlOwotICBpbnB1dCAgICAgICAgICAgIHBvc3RhbWJsZV9jbGs7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICByZXN5bmNoX2NsazsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZV9jbGs7Ci0KLSAgd2lyZSAgICAgICAgICAgICBaRVJPOwotICB3aXJlICAgIFsgIDc6IDBdIFpFUk9TOwotICB3aXJlICAgIFsgMTM6IDBdIFpFUk9TXzE0OwotICB3aXJlICAgIFsgIDE6IDBdIGJlOwotICB3aXJlICAgIFsgMTU6IDBdIGNvbnRyb2xfcmRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX2RtOwotICB3aXJlICAgIFsgIDc6IDBdIGRkcl9kcTsKLSAgd2lyZSAgICAgICAgICAgICBkZHJfZHFzOwotICB3aXJlICAgIFsgMTU6IDBdIGRlbGF5ZWRfZHFfY2FwdHVyZWQ7Ci0gIHJlZyAgICAgWyAgMTogMF0gZG1fb3V0OwotICB3aXJlICAgICAgICAgICAgIGRvaW5nX3JkOwotICByZWcgICAgICAgICAgICAgIGRvaW5nX3JkX2RlbGF5ZWQ7Ci0gIHJlZyAgICAgWyAgMjogMF0gZG9pbmdfcmRfcGlwZTsKLSAgd2lyZSAgICAgICAgICAgICBkb2luZ193cjsKLSAgcmVnICAgICAgICAgICAgICBkb2luZ193cl9yOwotICB3aXJlICAgICAgICAgICAgIGRxX2NhcHR1cmVfY2xrOwotICB3aXJlICAgIFsgMTU6IDBdIGRxX2NhcHR1cmVkXzA7Ci0gIHdpcmUgICAgWyAgNzogMF0gZHFfY2FwdHVyZWRfZmFsbGluZzsKLSAgd2lyZSAgICBbICA3OiAwXSBkcV9jYXB0dXJlZF9yaXNpbmc7Ci0gIHJlZyAgICAgWyAgMDogMF0gZHFfZW5hYmxlX3Jlc2V0OwotICByZWcgICAgICAgICAgICAgIGRxX29lOwotICB3aXJlICAgICAgICAgICAgIGRxc19idXJzdDsKLSAgd2lyZSAgICBbICAwOiAwXSBkcXNfY2xrOwotICB3aXJlICAgICAgICAgICAgIGRxc19vZTsKLSAgcmVnICAgICBbICAwOiAwXSBkcXNfb2VfcjsKLSAgd2lyZSAgICBbIDE1OiAwXSBpbnRlcl9yZGF0YTsKLSAgd2lyZSAgICBbICAwOiAwXSBub3RfZHFzX2NsazsKLSAgd2lyZSAgICBbIDE1OiAwXSByZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICByZXNldDsKLSAgcmVnICAgICBbIDE1OiAwXSByZXN5bmNoZWRfZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICB0bXBfZG1vdXQwOwotICB3aXJlICAgICAgICAgICAgIHRtcF9kbW91dDE7Ci0gIHdpcmUgICAgWyAgMDogMF0gdW5kZWxheWVkX2RxczsKLSAgd2lyZSAgICBbIDE1OiAwXSB3ZGF0YTsKLSAgcmVnICAgICBbIDE1OiAwXSB3ZGF0YV9yOwotICB3aXJlICAgICAgICAgICAgIHdkYXRhX3ZhbGlkOwotICAvLwotCi0KLSAgYXNzaWduIFpFUk8gPSAxJ2IwOwotICBhc3NpZ24gWkVST1MgPSAwOwotICBhc3NpZ24gWkVST1NfMTQgPSAwOwotICBhc3NpZ24gcmVzZXQgPSB+cmVzZXRfbjsKLSAgYXNzaWduIG5vdF9kcXNfY2xrID0gfmRxc19jbGs7Ci0gIC8vIHJlbmFtZSB1c2VyIGkvZiBzaWduYWxzLCBvdXRwdXRzCi0gIGFzc2lnbiBjb250cm9sX3JkYXRhID0gcmRhdGE7Ci0KLSAgLy8gcmVuYW1lIHVzZXIgaS9mIHNpZ25hbHMsIGlucHV0cwotICBhc3NpZ24gd2RhdGEgPSBjb250cm9sX3dkYXRhOwotCi0gIGFzc2lnbiB3ZGF0YV92YWxpZCA9IGNvbnRyb2xfd2RhdGFfdmFsaWQ7Ci0gIGFzc2lnbiBkb2luZ193ciA9IGNvbnRyb2xfZG9pbmdfd3I7Ci0gIGFzc2lnbiBkb2luZ19yZCA9IGNvbnRyb2xfZG9pbmdfcmQ7Ci0gIGFzc2lnbiBiZSA9IGNvbnRyb2xfYmU7Ci0gIGFzc2lnbiBkcXNfYnVyc3QgPSBjb250cm9sX2Rxc19idXJzdDsKLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAvL0RRUyBwaW4gYW5kIGl0cyBsb2dpYwotICAvL0dlbmVyYXRlIHRoZSBvdXRwdXQgZW5hYmxlIGZvciBEUVMgZnJvbSB0aGUgc2lnbmFsIHRoYXQgaW5kaWNhdGVzIHdlJ3JlCi0gIC8vZG9pbmcgYSB3cml0ZS4gVGhlIERRUyBidXJzdCBzaWduYWwgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBjb250cm9sbGVyIHRvIGtlZXAKLSAgLy90aGUgRFFTIHRvZ2dsaW5nIGZvciB0aGUgcmVxdWlyZWQgYnVyc3QgbGVuZ3RoLgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICBiZWdpbgotICAgICAgICAgIGRxc19vZV9yIDw9IDEnYjA7Ci0gICAgICAgICAgZG9pbmdfd3JfciA8PSAxJ2IwOwotICAgICAgICBlbmQKLSAgICAgIGVsc2UgCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgZHFzX29lX3IgPD0gZHFzX29lOwotICAgICAgICAgIGRvaW5nX3dyX3IgPD0gZG9pbmdfd3I7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgYXNzaWduIGRxc19vZSA9IGRvaW5nX3dyIHwgZHFzX2J1cnN0OwotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vRE0gcGlucyBhbmQgdGhlaXIgbG9naWMKLSAgLy9BbHRob3VnaCB0aGVzZSBkb24ndCBnZXQgdHJpc3RhdGVkIGxpa2UgRFEsIHRoZXkgZG8gc2hhcmUgdGhlIHNhbWUgSU8gdGltaW5nLgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIGFzc2lnbiB0bXBfZG1vdXQwID0gZG1fb3V0WzBdOwotICBhc3NpZ24gdG1wX2Rtb3V0MSA9IGRtX291dFsxXTsKLSAgYWx0ZGRpb19vdXQgZG1fcGluCi0gICAgKAotICAgICAgLmFjbHIgKHJlc2V0KSwKLSAgICAgIC5hc2V0ICgpLAotICAgICAgLmRhdGFpbl9oICh0bXBfZG1vdXQwKSwKLSAgICAgIC5kYXRhaW5fbCAodG1wX2Rtb3V0MSksCi0gICAgICAuZGF0YW91dCAoZGRyX2RtKSwKLSAgICAgIC5vZSAoMSdiMSksCi0gICAgICAub3V0Y2xvY2sgKHdyaXRlX2NsayksCi0gICAgICAub3V0Y2xvY2tlbiAoMSdiMSkKLSAgICApOwotCi0gIGRlZnBhcmFtIGRtX3Bpbi5leHRlbmRfb2VfZGlzYWJsZSA9ICJVTlVTRUQiLAotICAgICAgICAgICBkbV9waW4uaW50ZW5kZWRfZGV2aWNlX2ZhbWlseSA9ICJTdHJhdGl4IElJIiwKLSAgICAgICAgICAgZG1fcGluLmludmVydF9vdXRwdXQgPSAiT0ZGIiwKLSAgICAgICAgICAgZG1fcGluLmxwbV9oaW50ID0gIlVOVVNFRCIsCi0gICAgICAgICAgIGRtX3Bpbi5scG1fdHlwZSA9ICJhbHRkZGlvX291dCIsCi0gICAgICAgICAgIGRtX3Bpbi5vZV9yZWcgPSAiVU5VU0VEIiwKLSAgICAgICAgICAgZG1fcGluLnBvd2VyX3VwX2hpZ2ggPSAiT0ZGIiwKLSAgICAgICAgICAgZG1fcGluLndpZHRoID0gMTsKLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vRGF0YSBtYXNrIHJlZ2lzdGVycwotICAvL1RoZXNlIGFyZSB0aGUgbGFzdCByZWdpc3RlcnMgYmVmb3JlIHRoZSByZWdpc3RlcnMgaW4gdGhlIGFsdGRkaW9fb3V0LiBUaGV5Ci0gIC8vYXJlIGNsb2NrZWQgb2ZmIHRoZSBzeXN0ZW0gY2xvY2sgYnV0IGZlZWQgcmVnaXN0ZXJzIHdoaWNoIGFyZSBjbG9ja2VkIG9mZiB0aGUKLSAgLy93cml0ZSBjbG9jaywgc28gdGhlaXIgb3V0cHV0IGlzIHRoZSBiZWdpbm5pbmcgb2YgMy80IGN5Y2xlIHBhdGguCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGRtX291dCA8PSB7MnsxJ2IxfX07Ci0gICAgICBlbHNlIGlmIChkb2luZ193cikKLSAgICAgICAgICAvLyBkb24ndCBsYXRjaCBpbiBkYXRhIHVubGVzcyBpdCdzIHZhbGlkCi0gICAgICAgICAgZG1fb3V0IDw9IH5iZTsKLQotICAgICAgZWxzZSAKLSAgICAgICAgZG1fb3V0IDw9IHsyezEnYjF9fTsKLSAgICBlbmQKLQotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy9Mb2dpYyB0byBkaXNhYmxlIHRoZSBjYXB0dXJlIHJlZ2lzdGVycyAocGFydGljdWxhcmx5IGR1cmluZyBEUVMgcG9zdGFtYmxlKQotICAvL1RoZSBvdXRwdXQgb2YgdGhlIGRxX2VuYWJsZV9yZXNldCByZWdpc3RlciBob2xkcyB0aGUgZHFfZW5hYmxlIHJlZ2lzdGVyIGluCi0gIC8vcmVzZXQgKHdoaWNoICplbmFibGVzKiB0aGUgZHEgY2FwdHVyZSByZWdpc3RlcnMpLiBUaGUgY29udHJvbGxlciByZWxlYXNlcwotICAvL3RoZSBkcV9lbmFibGUgcmVnaXN0ZXIgc28gdGhhdCBpdCBpcyBjbG9ja2VkIGJ5IHRoZSBsYXN0IGZhbGxpbmcgZWRnZSBvZiB0aGUKLSAgLy9yZWFkIGRxcyBzaWduYWwuIFRoaXMgZGlzYWJsZXMgdGhlIGRxIGNhcHR1cmUgcmVnaXN0ZXJzIGR1cmluZyBhbmQgYWZ0ZXIgdGhlCi0gIC8vZHFzIHBvc3RhbWJsZSBzbyB0aGF0IHRoZSBvdXRwdXQgb2YgdGhlIGRxIGNhcHR1cmUgcmVnaXN0ZXJzIGNhbiBiZSBzYWZlbHkKLSAgLy9yZXN5bmNocm9uaXNlZC4KLSAgLy9Qb3N0YW1ibGUgQ2xvY2sgQ3ljbGUgIDogMQotICAvL1Bvc3RhbWJsZSBDbG9jayBFZGdlICAgOiByaXNpbmcKLSAgLy9Qb3N0YW1ibGUgUmVncyBQZXIgRFFTIDogMQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgLy9Vc2UgYSByaXNpbmcgZWRnZSBmb3IgcG9zdGFtYmxlCi0gIC8vVGhlIHJlZ2lzdGVycyB3aGljaCBnZW5lcmF0ZSB0aGUgcmVzZXQgc2lnbmFsIHRvIHRoZSBhYm92ZSByZWdpc3RlcnMKLSAgLy9DYW4gYmUgY2xvY2tlZCBvZmYgdGhlIHJlc3luY2ggb3Igc3lzdGVtIGNsb2NrCi0gIGFsd2F5cyBAKHBvc2VkZ2UgcG9zdGFtYmxlX2NsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZHFfZW5hYmxlX3Jlc2V0IDw9IDEnYjA7Ci0gICAgICBlbHNlIAotICAgICAgICBkcV9lbmFibGVfcmVzZXQgPD0gZG9pbmdfcmRfZGVsYXllZDsKLSAgICBlbmQKLQotCi0gIC8vcGlwZWxpbmUgdGhlIGRvaW5nX3JkIHNpZ25hbCB0byBlbmFibGUgYW5kIGRpc2FibGUgdGhlIERRIGNhcHR1cmUgcmVncyBhdCB0aGUgcmlnaHQgdGltZQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZG9pbmdfcmRfcGlwZSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgLy9zaGlmdCBiaXRzIHVwCi0gICAgICAgIGRvaW5nX3JkX3BpcGUgPD0ge2RvaW5nX3JkX3BpcGVbMSA6IDBdLCBkb2luZ19yZH07Ci0KLSAgICBlbmQKLQotCi0gIC8vSXQncyBzYWZlIHRvIGNsb2NrIGZyb20gZmFsbGluZyBlZGdlIG9mIGNsayB0byBwb3N0YW1ibGVfY2xrLCBzbyB1c2UgZmFsbGluZyBlZGdlIGNsb2NrCi0gIGFsd2F5cyBAKG5lZ2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkb2luZ19yZF9kZWxheWVkIDw9IDEnYjA7Ci0gICAgICBlbHNlIAotICAgICAgICBkb2luZ19yZF9kZWxheWVkIDw9IGRvaW5nX3JkX3BpcGVbMV07Ci0gICAgZW5kCi0KLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vRGVjaWRlIHdoaWNoIGNsb2NrIHRvIHVzZSBmb3IgY2FwdHVyaW5nIHRoZSBEUSBkYXRhCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy9Vc2UgRFFTIHRvIGNhcHR1cmUgRFEgcmVhZCBkYXRhCi0gIGFzc2lnbiBkcV9jYXB0dXJlX2NsayA9IH5kcXNfY2xrOwotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy9EUSBwaW5zIGFuZCB0aGVpciBsb2dpYwotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkcV9vZSA8PSAxJ2IwOwotICAgICAgZWxzZSAKLSAgICAgICAgZHFfb2UgPD0gZG9pbmdfd3I7Ci0gICAgZW5kCi0KLQotICBzdHJhdGl4aWlfaW8gXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXgotICAgICgKLSAgICAgIC5hcmVzZXQgKHJlc2V0KSwKLSAgICAgIC5jb21ib3V0ICgpLAotICAgICAgLmRhdGFpbiAod2RhdGFfclswXSksCi0gICAgICAuZGRpb2RhdGFpbiAod2RhdGFfcls4XSksCi0gICAgICAuZGRpb2luY2xrIChaRVJPU1swXSksCi0gICAgICAuZGRpb3JlZ291dCAoZHFfY2FwdHVyZWRfcmlzaW5nWzBdKSwKLSAgICAgIC5kZWxheWN0cmxpbiAoKSwKLSAgICAgIC5kZXZjbHJuICgpLAotICAgICAgLmRldm9lICgpLAotICAgICAgLmRldnBvciAoKSwKLSAgICAgIC5kcXNidXNvdXQgKCksCi0gICAgICAuZHFzdXBkYXRlZW4gKCksCi0gICAgICAuaW5jbGsgKGRxX2NhcHR1cmVfY2xrKSwKLSAgICAgIC5pbmNsa2VuYSAoMSdiMSksCi0gICAgICAubGlua2luICgpLAotICAgICAgLmxpbmtvdXQgKCksCi0gICAgICAub2UgKGRxX29lKSwKLSAgICAgIC5vZmZzZXRjdHJsaW4gKCksCi0gICAgICAub3V0Y2xrICh3cml0ZV9jbGspLAotICAgICAgLm91dGNsa2VuYSAoMSdiMSksCi0gICAgICAucGFkaW8gKGRkcl9kcVswXSksCi0gICAgICAucmVnb3V0IChkcV9jYXB0dXJlZF9mYWxsaW5nWzBdKSwKLSAgICAgIC5zcmVzZXQgKCksCi0gICAgICAudGVybWluYXRpb25jb250cm9sICgpCi0gICAgKTsKLQotICBkZWZwYXJhbSBeXl4kX2dfZHFfaW86MDpkcV9pb18kXl5eLmJ1c19ob2xkID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXi5kZGlvX21vZGUgPSAiYmlkaXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MDpkcV9pb18kXl5eLmRkaW9pbmNsa19pbnB1dCA9ICJuZWdhdGVkX2luY2xrIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXi5kcXNfY3RybF9sYXRjaGVzX2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4uZHFzX2RlbGF5X2J1ZmZlcl9tb2RlID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MDpkcV9pb18kXl5eLmRxc19lZGdlX2RldGVjdF9lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MDpkcV9pb18kXl5eLmRxc19pbnB1dF9mcmVxdWVuY3kgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4uZHFzX29mZnNldGN0cmxfZW5hYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXi5kcXNfb3V0X21vZGUgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4uZHFzX3BoYXNlX3NoaWZ0ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXi5leHRlbmRfb2VfZGlzYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4uZ2F0ZWRfZHFzID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXi5pbmNsa19pbnB1dCA9ICJkcXNfYnVzIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXi5pbnB1dF9hc3luY19yZXNldCA9ICJjbGVhciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4uaW5wdXRfcG93ZXJfdXAgPSAibG93IiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXi5pbnB1dF9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXi5pbnB1dF9zeW5jX3Jlc2V0ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MDpkcV9pb18kXl5eLmxwbV90eXBlID0gInN0cmF0aXhpaV9pbyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4ub2VfYXN5bmNfcmVzZXQgPSAiY2xlYXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MDpkcV9pb18kXl5eLm9lX3Bvd2VyX3VwID0gImxvdyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4ub2VfcmVnaXN0ZXJfbW9kZSA9ICJyZWdpc3RlciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4ub2Vfc3luY19yZXNldCA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXi5vcGVuX2RyYWluX291dHB1dCA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4ub3BlcmF0aW9uX21vZGUgPSAiYmlkaXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MDpkcV9pb18kXl5eLm91dHB1dF9hc3luY19yZXNldCA9ICJjbGVhciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4ub3V0cHV0X3Bvd2VyX3VwID0gImxvdyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4ub3V0cHV0X3JlZ2lzdGVyX21vZGUgPSAicmVnaXN0ZXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MDpkcV9pb18kXl5eLm91dHB1dF9zeW5jX3Jlc2V0ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MDpkcV9pb18kXl5eLnNpbV9kcXNfZGVsYXlfaW5jcmVtZW50ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXi5zaW1fZHFzX2ludHJpbnNpY19kZWxheSA9IDAsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4uc2ltX2Rxc19vZmZzZXRfaW5jcmVtZW50ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjA6ZHFfaW9fJF5eXi50aWVfb2ZmX29lX2Nsb2NrX2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzowOmRxX2lvXyReXl4udGllX29mZl9vdXRwdXRfY2xvY2tfZW5hYmxlID0gImZhbHNlIjsKLQotICBzdHJhdGl4aWlfaW8gXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXgotICAgICgKLSAgICAgIC5hcmVzZXQgKHJlc2V0KSwKLSAgICAgIC5jb21ib3V0ICgpLAotICAgICAgLmRhdGFpbiAod2RhdGFfclsxXSksCi0gICAgICAuZGRpb2RhdGFpbiAod2RhdGFfcls5XSksCi0gICAgICAuZGRpb2luY2xrIChaRVJPU1swXSksCi0gICAgICAuZGRpb3JlZ291dCAoZHFfY2FwdHVyZWRfcmlzaW5nWzFdKSwKLSAgICAgIC5kZWxheWN0cmxpbiAoKSwKLSAgICAgIC5kZXZjbHJuICgpLAotICAgICAgLmRldm9lICgpLAotICAgICAgLmRldnBvciAoKSwKLSAgICAgIC5kcXNidXNvdXQgKCksCi0gICAgICAuZHFzdXBkYXRlZW4gKCksCi0gICAgICAuaW5jbGsgKGRxX2NhcHR1cmVfY2xrKSwKLSAgICAgIC5pbmNsa2VuYSAoMSdiMSksCi0gICAgICAubGlua2luICgpLAotICAgICAgLmxpbmtvdXQgKCksCi0gICAgICAub2UgKGRxX29lKSwKLSAgICAgIC5vZmZzZXRjdHJsaW4gKCksCi0gICAgICAub3V0Y2xrICh3cml0ZV9jbGspLAotICAgICAgLm91dGNsa2VuYSAoMSdiMSksCi0gICAgICAucGFkaW8gKGRkcl9kcVsxXSksCi0gICAgICAucmVnb3V0IChkcV9jYXB0dXJlZF9mYWxsaW5nWzFdKSwKLSAgICAgIC5zcmVzZXQgKCksCi0gICAgICAudGVybWluYXRpb25jb250cm9sICgpCi0gICAgKTsKLQotICBkZWZwYXJhbSBeXl4kX2dfZHFfaW86MTpkcV9pb18kXl5eLmJ1c19ob2xkID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXi5kZGlvX21vZGUgPSAiYmlkaXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MTpkcV9pb18kXl5eLmRkaW9pbmNsa19pbnB1dCA9ICJuZWdhdGVkX2luY2xrIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXi5kcXNfY3RybF9sYXRjaGVzX2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4uZHFzX2RlbGF5X2J1ZmZlcl9tb2RlID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MTpkcV9pb18kXl5eLmRxc19lZGdlX2RldGVjdF9lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MTpkcV9pb18kXl5eLmRxc19pbnB1dF9mcmVxdWVuY3kgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4uZHFzX29mZnNldGN0cmxfZW5hYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXi5kcXNfb3V0X21vZGUgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4uZHFzX3BoYXNlX3NoaWZ0ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXi5leHRlbmRfb2VfZGlzYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4uZ2F0ZWRfZHFzID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXi5pbmNsa19pbnB1dCA9ICJkcXNfYnVzIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXi5pbnB1dF9hc3luY19yZXNldCA9ICJjbGVhciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4uaW5wdXRfcG93ZXJfdXAgPSAibG93IiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXi5pbnB1dF9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXi5pbnB1dF9zeW5jX3Jlc2V0ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MTpkcV9pb18kXl5eLmxwbV90eXBlID0gInN0cmF0aXhpaV9pbyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4ub2VfYXN5bmNfcmVzZXQgPSAiY2xlYXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MTpkcV9pb18kXl5eLm9lX3Bvd2VyX3VwID0gImxvdyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4ub2VfcmVnaXN0ZXJfbW9kZSA9ICJyZWdpc3RlciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4ub2Vfc3luY19yZXNldCA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXi5vcGVuX2RyYWluX291dHB1dCA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4ub3BlcmF0aW9uX21vZGUgPSAiYmlkaXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MTpkcV9pb18kXl5eLm91dHB1dF9hc3luY19yZXNldCA9ICJjbGVhciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4ub3V0cHV0X3Bvd2VyX3VwID0gImxvdyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4ub3V0cHV0X3JlZ2lzdGVyX21vZGUgPSAicmVnaXN0ZXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MTpkcV9pb18kXl5eLm91dHB1dF9zeW5jX3Jlc2V0ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MTpkcV9pb18kXl5eLnNpbV9kcXNfZGVsYXlfaW5jcmVtZW50ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXi5zaW1fZHFzX2ludHJpbnNpY19kZWxheSA9IDAsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4uc2ltX2Rxc19vZmZzZXRfaW5jcmVtZW50ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjE6ZHFfaW9fJF5eXi50aWVfb2ZmX29lX2Nsb2NrX2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoxOmRxX2lvXyReXl4udGllX29mZl9vdXRwdXRfY2xvY2tfZW5hYmxlID0gImZhbHNlIjsKLQotICBzdHJhdGl4aWlfaW8gXl5eJF9nX2RxX2lvOjI6ZHFfaW9fJF5eXgotICAgICgKLSAgICAgIC5hcmVzZXQgKHJlc2V0KSwKLSAgICAgIC5jb21ib3V0ICgpLAotICAgICAgLmRhdGFpbiAod2RhdGFfclsyXSksCi0gICAgICAuZGRpb2RhdGFpbiAod2RhdGFfclsxMF0pLAotICAgICAgLmRkaW9pbmNsayAoWkVST1NbMF0pLAotICAgICAgLmRkaW9yZWdvdXQgKGRxX2NhcHR1cmVkX3Jpc2luZ1syXSksCi0gICAgICAuZGVsYXljdHJsaW4gKCksCi0gICAgICAuZGV2Y2xybiAoKSwKLSAgICAgIC5kZXZvZSAoKSwKLSAgICAgIC5kZXZwb3IgKCksCi0gICAgICAuZHFzYnVzb3V0ICgpLAotICAgICAgLmRxc3VwZGF0ZWVuICgpLAotICAgICAgLmluY2xrIChkcV9jYXB0dXJlX2NsayksCi0gICAgICAuaW5jbGtlbmEgKDEnYjEpLAotICAgICAgLmxpbmtpbiAoKSwKLSAgICAgIC5saW5rb3V0ICgpLAotICAgICAgLm9lIChkcV9vZSksCi0gICAgICAub2Zmc2V0Y3RybGluICgpLAotICAgICAgLm91dGNsayAod3JpdGVfY2xrKSwKLSAgICAgIC5vdXRjbGtlbmEgKDEnYjEpLAotICAgICAgLnBhZGlvIChkZHJfZHFbMl0pLAotICAgICAgLnJlZ291dCAoZHFfY2FwdHVyZWRfZmFsbGluZ1syXSksCi0gICAgICAuc3Jlc2V0ICgpLAotICAgICAgLnRlcm1pbmF0aW9uY29udHJvbCAoKQotICAgICk7Ci0KLSAgZGVmcGFyYW0gXl5eJF9nX2RxX2lvOjI6ZHFfaW9fJF5eXi5idXNfaG9sZCA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoyOmRxX2lvXyReXl4uZGRpb19tb2RlID0gImJpZGlyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjI6ZHFfaW9fJF5eXi5kZGlvaW5jbGtfaW5wdXQgPSAibmVnYXRlZF9pbmNsayIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoyOmRxX2lvXyReXl4uZHFzX2N0cmxfbGF0Y2hlc19lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLmRxc19kZWxheV9idWZmZXJfbW9kZSA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjI6ZHFfaW9fJF5eXi5kcXNfZWRnZV9kZXRlY3RfZW5hYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjI6ZHFfaW9fJF5eXi5kcXNfaW5wdXRfZnJlcXVlbmN5ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLmRxc19vZmZzZXRjdHJsX2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoyOmRxX2lvXyReXl4uZHFzX291dF9tb2RlID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLmRxc19waGFzZV9zaGlmdCA9IDAsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoyOmRxX2lvXyReXl4uZXh0ZW5kX29lX2Rpc2FibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLmdhdGVkX2RxcyA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoyOmRxX2lvXyReXl4uaW5jbGtfaW5wdXQgPSAiZHFzX2J1cyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoyOmRxX2lvXyReXl4uaW5wdXRfYXN5bmNfcmVzZXQgPSAiY2xlYXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLmlucHV0X3Bvd2VyX3VwID0gImxvdyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoyOmRxX2lvXyReXl4uaW5wdXRfcmVnaXN0ZXJfbW9kZSA9ICJyZWdpc3RlciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoyOmRxX2lvXyReXl4uaW5wdXRfc3luY19yZXNldCA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjI6ZHFfaW9fJF5eXi5scG1fdHlwZSA9ICJzdHJhdGl4aWlfaW8iLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLm9lX2FzeW5jX3Jlc2V0ID0gImNsZWFyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjI6ZHFfaW9fJF5eXi5vZV9wb3dlcl91cCA9ICJsb3ciLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLm9lX3JlZ2lzdGVyX21vZGUgPSAicmVnaXN0ZXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLm9lX3N5bmNfcmVzZXQgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoyOmRxX2lvXyReXl4ub3Blbl9kcmFpbl9vdXRwdXQgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLm9wZXJhdGlvbl9tb2RlID0gImJpZGlyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjI6ZHFfaW9fJF5eXi5vdXRwdXRfYXN5bmNfcmVzZXQgPSAiY2xlYXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLm91dHB1dF9wb3dlcl91cCA9ICJsb3ciLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLm91dHB1dF9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjI6ZHFfaW9fJF5eXi5vdXRwdXRfc3luY19yZXNldCA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjI6ZHFfaW9fJF5eXi5zaW1fZHFzX2RlbGF5X2luY3JlbWVudCA9IDAsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoyOmRxX2lvXyReXl4uc2ltX2Rxc19pbnRyaW5zaWNfZGVsYXkgPSAwLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLnNpbV9kcXNfb2Zmc2V0X2luY3JlbWVudCA9IDAsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzoyOmRxX2lvXyReXl4udGllX29mZl9vZV9jbG9ja19lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MjpkcV9pb18kXl5eLnRpZV9vZmZfb3V0cHV0X2Nsb2NrX2VuYWJsZSA9ICJmYWxzZSI7Ci0KLSAgc3RyYXRpeGlpX2lvIF5eXiRfZ19kcV9pbzozOmRxX2lvXyReXl4KLSAgICAoCi0gICAgICAuYXJlc2V0IChyZXNldCksCi0gICAgICAuY29tYm91dCAoKSwKLSAgICAgIC5kYXRhaW4gKHdkYXRhX3JbM10pLAotICAgICAgLmRkaW9kYXRhaW4gKHdkYXRhX3JbMTFdKSwKLSAgICAgIC5kZGlvaW5jbGsgKFpFUk9TWzBdKSwKLSAgICAgIC5kZGlvcmVnb3V0IChkcV9jYXB0dXJlZF9yaXNpbmdbM10pLAotICAgICAgLmRlbGF5Y3RybGluICgpLAotICAgICAgLmRldmNscm4gKCksCi0gICAgICAuZGV2b2UgKCksCi0gICAgICAuZGV2cG9yICgpLAotICAgICAgLmRxc2J1c291dCAoKSwKLSAgICAgIC5kcXN1cGRhdGVlbiAoKSwKLSAgICAgIC5pbmNsayAoZHFfY2FwdHVyZV9jbGspLAotICAgICAgLmluY2xrZW5hICgxJ2IxKSwKLSAgICAgIC5saW5raW4gKCksCi0gICAgICAubGlua291dCAoKSwKLSAgICAgIC5vZSAoZHFfb2UpLAotICAgICAgLm9mZnNldGN0cmxpbiAoKSwKLSAgICAgIC5vdXRjbGsgKHdyaXRlX2NsayksCi0gICAgICAub3V0Y2xrZW5hICgxJ2IxKSwKLSAgICAgIC5wYWRpbyAoZGRyX2RxWzNdKSwKLSAgICAgIC5yZWdvdXQgKGRxX2NhcHR1cmVkX2ZhbGxpbmdbM10pLAotICAgICAgLnNyZXNldCAoKSwKLSAgICAgIC50ZXJtaW5hdGlvbmNvbnRyb2wgKCkKLSAgICApOwotCi0gIGRlZnBhcmFtIF5eXiRfZ19kcV9pbzozOmRxX2lvXyReXl4uYnVzX2hvbGQgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MzpkcV9pb18kXl5eLmRkaW9fbW9kZSA9ICJiaWRpciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzozOmRxX2lvXyReXl4uZGRpb2luY2xrX2lucHV0ID0gIm5lZ2F0ZWRfaW5jbGsiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MzpkcV9pb18kXl5eLmRxc19jdHJsX2xhdGNoZXNfZW5hYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5kcXNfZGVsYXlfYnVmZmVyX21vZGUgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzozOmRxX2lvXyReXl4uZHFzX2VkZ2VfZGV0ZWN0X2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzozOmRxX2lvXyReXl4uZHFzX2lucHV0X2ZyZXF1ZW5jeSA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5kcXNfb2Zmc2V0Y3RybF9lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MzpkcV9pb18kXl5eLmRxc19vdXRfbW9kZSA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5kcXNfcGhhc2Vfc2hpZnQgPSAwLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MzpkcV9pb18kXl5eLmV4dGVuZF9vZV9kaXNhYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5nYXRlZF9kcXMgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MzpkcV9pb18kXl5eLmluY2xrX2lucHV0ID0gImRxc19idXMiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MzpkcV9pb18kXl5eLmlucHV0X2FzeW5jX3Jlc2V0ID0gImNsZWFyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5pbnB1dF9wb3dlcl91cCA9ICJsb3ciLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MzpkcV9pb18kXl5eLmlucHV0X3JlZ2lzdGVyX21vZGUgPSAicmVnaXN0ZXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MzpkcV9pb18kXl5eLmlucHV0X3N5bmNfcmVzZXQgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzozOmRxX2lvXyReXl4ubHBtX3R5cGUgPSAic3RyYXRpeGlpX2lvIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5vZV9hc3luY19yZXNldCA9ICJjbGVhciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzozOmRxX2lvXyReXl4ub2VfcG93ZXJfdXAgPSAibG93IiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5vZV9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5vZV9zeW5jX3Jlc2V0ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MzpkcV9pb18kXl5eLm9wZW5fZHJhaW5fb3V0cHV0ID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5vcGVyYXRpb25fbW9kZSA9ICJiaWRpciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzozOmRxX2lvXyReXl4ub3V0cHV0X2FzeW5jX3Jlc2V0ID0gImNsZWFyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5vdXRwdXRfcG93ZXJfdXAgPSAibG93IiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5vdXRwdXRfcmVnaXN0ZXJfbW9kZSA9ICJyZWdpc3RlciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzozOmRxX2lvXyReXl4ub3V0cHV0X3N5bmNfcmVzZXQgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzozOmRxX2lvXyReXl4uc2ltX2Rxc19kZWxheV9pbmNyZW1lbnQgPSAwLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MzpkcV9pb18kXl5eLnNpbV9kcXNfaW50cmluc2ljX2RlbGF5ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi5zaW1fZHFzX29mZnNldF9pbmNyZW1lbnQgPSAwLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86MzpkcV9pb18kXl5eLnRpZV9vZmZfb2VfY2xvY2tfZW5hYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjM6ZHFfaW9fJF5eXi50aWVfb2ZmX291dHB1dF9jbG9ja19lbmFibGUgPSAiZmFsc2UiOwotCi0gIHN0cmF0aXhpaV9pbyBeXl4kX2dfZHFfaW86NDpkcV9pb18kXl5eCi0gICAgKAotICAgICAgLmFyZXNldCAocmVzZXQpLAotICAgICAgLmNvbWJvdXQgKCksCi0gICAgICAuZGF0YWluICh3ZGF0YV9yWzRdKSwKLSAgICAgIC5kZGlvZGF0YWluICh3ZGF0YV9yWzEyXSksCi0gICAgICAuZGRpb2luY2xrIChaRVJPU1swXSksCi0gICAgICAuZGRpb3JlZ291dCAoZHFfY2FwdHVyZWRfcmlzaW5nWzRdKSwKLSAgICAgIC5kZWxheWN0cmxpbiAoKSwKLSAgICAgIC5kZXZjbHJuICgpLAotICAgICAgLmRldm9lICgpLAotICAgICAgLmRldnBvciAoKSwKLSAgICAgIC5kcXNidXNvdXQgKCksCi0gICAgICAuZHFzdXBkYXRlZW4gKCksCi0gICAgICAuaW5jbGsgKGRxX2NhcHR1cmVfY2xrKSwKLSAgICAgIC5pbmNsa2VuYSAoMSdiMSksCi0gICAgICAubGlua2luICgpLAotICAgICAgLmxpbmtvdXQgKCksCi0gICAgICAub2UgKGRxX29lKSwKLSAgICAgIC5vZmZzZXRjdHJsaW4gKCksCi0gICAgICAub3V0Y2xrICh3cml0ZV9jbGspLAotICAgICAgLm91dGNsa2VuYSAoMSdiMSksCi0gICAgICAucGFkaW8gKGRkcl9kcVs0XSksCi0gICAgICAucmVnb3V0IChkcV9jYXB0dXJlZF9mYWxsaW5nWzRdKSwKLSAgICAgIC5zcmVzZXQgKCksCi0gICAgICAudGVybWluYXRpb25jb250cm9sICgpCi0gICAgKTsKLQotICBkZWZwYXJhbSBeXl4kX2dfZHFfaW86NDpkcV9pb18kXl5eLmJ1c19ob2xkID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjQ6ZHFfaW9fJF5eXi5kZGlvX21vZGUgPSAiYmlkaXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NDpkcV9pb18kXl5eLmRkaW9pbmNsa19pbnB1dCA9ICJuZWdhdGVkX2luY2xrIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjQ6ZHFfaW9fJF5eXi5kcXNfY3RybF9sYXRjaGVzX2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4uZHFzX2RlbGF5X2J1ZmZlcl9tb2RlID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NDpkcV9pb18kXl5eLmRxc19lZGdlX2RldGVjdF9lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NDpkcV9pb18kXl5eLmRxc19pbnB1dF9mcmVxdWVuY3kgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4uZHFzX29mZnNldGN0cmxfZW5hYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjQ6ZHFfaW9fJF5eXi5kcXNfb3V0X21vZGUgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4uZHFzX3BoYXNlX3NoaWZ0ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjQ6ZHFfaW9fJF5eXi5leHRlbmRfb2VfZGlzYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4uZ2F0ZWRfZHFzID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjQ6ZHFfaW9fJF5eXi5pbmNsa19pbnB1dCA9ICJkcXNfYnVzIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjQ6ZHFfaW9fJF5eXi5pbnB1dF9hc3luY19yZXNldCA9ICJjbGVhciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4uaW5wdXRfcG93ZXJfdXAgPSAibG93IiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjQ6ZHFfaW9fJF5eXi5pbnB1dF9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjQ6ZHFfaW9fJF5eXi5pbnB1dF9zeW5jX3Jlc2V0ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NDpkcV9pb18kXl5eLmxwbV90eXBlID0gInN0cmF0aXhpaV9pbyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4ub2VfYXN5bmNfcmVzZXQgPSAiY2xlYXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NDpkcV9pb18kXl5eLm9lX3Bvd2VyX3VwID0gImxvdyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4ub2VfcmVnaXN0ZXJfbW9kZSA9ICJyZWdpc3RlciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4ub2Vfc3luY19yZXNldCA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjQ6ZHFfaW9fJF5eXi5vcGVuX2RyYWluX291dHB1dCA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4ub3BlcmF0aW9uX21vZGUgPSAiYmlkaXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NDpkcV9pb18kXl5eLm91dHB1dF9hc3luY19yZXNldCA9ICJjbGVhciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4ub3V0cHV0X3Bvd2VyX3VwID0gImxvdyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4ub3V0cHV0X3JlZ2lzdGVyX21vZGUgPSAicmVnaXN0ZXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NDpkcV9pb18kXl5eLm91dHB1dF9zeW5jX3Jlc2V0ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NDpkcV9pb18kXl5eLnNpbV9kcXNfZGVsYXlfaW5jcmVtZW50ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjQ6ZHFfaW9fJF5eXi5zaW1fZHFzX2ludHJpbnNpY19kZWxheSA9IDAsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4uc2ltX2Rxc19vZmZzZXRfaW5jcmVtZW50ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjQ6ZHFfaW9fJF5eXi50aWVfb2ZmX29lX2Nsb2NrX2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo0OmRxX2lvXyReXl4udGllX29mZl9vdXRwdXRfY2xvY2tfZW5hYmxlID0gImZhbHNlIjsKLQotICBzdHJhdGl4aWlfaW8gXl5eJF9nX2RxX2lvOjU6ZHFfaW9fJF5eXgotICAgICgKLSAgICAgIC5hcmVzZXQgKHJlc2V0KSwKLSAgICAgIC5jb21ib3V0ICgpLAotICAgICAgLmRhdGFpbiAod2RhdGFfcls1XSksCi0gICAgICAuZGRpb2RhdGFpbiAod2RhdGFfclsxM10pLAotICAgICAgLmRkaW9pbmNsayAoWkVST1NbMF0pLAotICAgICAgLmRkaW9yZWdvdXQgKGRxX2NhcHR1cmVkX3Jpc2luZ1s1XSksCi0gICAgICAuZGVsYXljdHJsaW4gKCksCi0gICAgICAuZGV2Y2xybiAoKSwKLSAgICAgIC5kZXZvZSAoKSwKLSAgICAgIC5kZXZwb3IgKCksCi0gICAgICAuZHFzYnVzb3V0ICgpLAotICAgICAgLmRxc3VwZGF0ZWVuICgpLAotICAgICAgLmluY2xrIChkcV9jYXB0dXJlX2NsayksCi0gICAgICAuaW5jbGtlbmEgKDEnYjEpLAotICAgICAgLmxpbmtpbiAoKSwKLSAgICAgIC5saW5rb3V0ICgpLAotICAgICAgLm9lIChkcV9vZSksCi0gICAgICAub2Zmc2V0Y3RybGluICgpLAotICAgICAgLm91dGNsayAod3JpdGVfY2xrKSwKLSAgICAgIC5vdXRjbGtlbmEgKDEnYjEpLAotICAgICAgLnBhZGlvIChkZHJfZHFbNV0pLAotICAgICAgLnJlZ291dCAoZHFfY2FwdHVyZWRfZmFsbGluZ1s1XSksCi0gICAgICAuc3Jlc2V0ICgpLAotICAgICAgLnRlcm1pbmF0aW9uY29udHJvbCAoKQotICAgICk7Ci0KLSAgZGVmcGFyYW0gXl5eJF9nX2RxX2lvOjU6ZHFfaW9fJF5eXi5idXNfaG9sZCA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo1OmRxX2lvXyReXl4uZGRpb19tb2RlID0gImJpZGlyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjU6ZHFfaW9fJF5eXi5kZGlvaW5jbGtfaW5wdXQgPSAibmVnYXRlZF9pbmNsayIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo1OmRxX2lvXyReXl4uZHFzX2N0cmxfbGF0Y2hlc19lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLmRxc19kZWxheV9idWZmZXJfbW9kZSA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjU6ZHFfaW9fJF5eXi5kcXNfZWRnZV9kZXRlY3RfZW5hYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjU6ZHFfaW9fJF5eXi5kcXNfaW5wdXRfZnJlcXVlbmN5ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLmRxc19vZmZzZXRjdHJsX2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo1OmRxX2lvXyReXl4uZHFzX291dF9tb2RlID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLmRxc19waGFzZV9zaGlmdCA9IDAsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo1OmRxX2lvXyReXl4uZXh0ZW5kX29lX2Rpc2FibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLmdhdGVkX2RxcyA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo1OmRxX2lvXyReXl4uaW5jbGtfaW5wdXQgPSAiZHFzX2J1cyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo1OmRxX2lvXyReXl4uaW5wdXRfYXN5bmNfcmVzZXQgPSAiY2xlYXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLmlucHV0X3Bvd2VyX3VwID0gImxvdyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo1OmRxX2lvXyReXl4uaW5wdXRfcmVnaXN0ZXJfbW9kZSA9ICJyZWdpc3RlciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo1OmRxX2lvXyReXl4uaW5wdXRfc3luY19yZXNldCA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjU6ZHFfaW9fJF5eXi5scG1fdHlwZSA9ICJzdHJhdGl4aWlfaW8iLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLm9lX2FzeW5jX3Jlc2V0ID0gImNsZWFyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjU6ZHFfaW9fJF5eXi5vZV9wb3dlcl91cCA9ICJsb3ciLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLm9lX3JlZ2lzdGVyX21vZGUgPSAicmVnaXN0ZXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLm9lX3N5bmNfcmVzZXQgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo1OmRxX2lvXyReXl4ub3Blbl9kcmFpbl9vdXRwdXQgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLm9wZXJhdGlvbl9tb2RlID0gImJpZGlyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjU6ZHFfaW9fJF5eXi5vdXRwdXRfYXN5bmNfcmVzZXQgPSAiY2xlYXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLm91dHB1dF9wb3dlcl91cCA9ICJsb3ciLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLm91dHB1dF9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjU6ZHFfaW9fJF5eXi5vdXRwdXRfc3luY19yZXNldCA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjU6ZHFfaW9fJF5eXi5zaW1fZHFzX2RlbGF5X2luY3JlbWVudCA9IDAsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo1OmRxX2lvXyReXl4uc2ltX2Rxc19pbnRyaW5zaWNfZGVsYXkgPSAwLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLnNpbV9kcXNfb2Zmc2V0X2luY3JlbWVudCA9IDAsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo1OmRxX2lvXyReXl4udGllX29mZl9vZV9jbG9ja19lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NTpkcV9pb18kXl5eLnRpZV9vZmZfb3V0cHV0X2Nsb2NrX2VuYWJsZSA9ICJmYWxzZSI7Ci0KLSAgc3RyYXRpeGlpX2lvIF5eXiRfZ19kcV9pbzo2OmRxX2lvXyReXl4KLSAgICAoCi0gICAgICAuYXJlc2V0IChyZXNldCksCi0gICAgICAuY29tYm91dCAoKSwKLSAgICAgIC5kYXRhaW4gKHdkYXRhX3JbNl0pLAotICAgICAgLmRkaW9kYXRhaW4gKHdkYXRhX3JbMTRdKSwKLSAgICAgIC5kZGlvaW5jbGsgKFpFUk9TWzBdKSwKLSAgICAgIC5kZGlvcmVnb3V0IChkcV9jYXB0dXJlZF9yaXNpbmdbNl0pLAotICAgICAgLmRlbGF5Y3RybGluICgpLAotICAgICAgLmRldmNscm4gKCksCi0gICAgICAuZGV2b2UgKCksCi0gICAgICAuZGV2cG9yICgpLAotICAgICAgLmRxc2J1c291dCAoKSwKLSAgICAgIC5kcXN1cGRhdGVlbiAoKSwKLSAgICAgIC5pbmNsayAoZHFfY2FwdHVyZV9jbGspLAotICAgICAgLmluY2xrZW5hICgxJ2IxKSwKLSAgICAgIC5saW5raW4gKCksCi0gICAgICAubGlua291dCAoKSwKLSAgICAgIC5vZSAoZHFfb2UpLAotICAgICAgLm9mZnNldGN0cmxpbiAoKSwKLSAgICAgIC5vdXRjbGsgKHdyaXRlX2NsayksCi0gICAgICAub3V0Y2xrZW5hICgxJ2IxKSwKLSAgICAgIC5wYWRpbyAoZGRyX2RxWzZdKSwKLSAgICAgIC5yZWdvdXQgKGRxX2NhcHR1cmVkX2ZhbGxpbmdbNl0pLAotICAgICAgLnNyZXNldCAoKSwKLSAgICAgIC50ZXJtaW5hdGlvbmNvbnRyb2wgKCkKLSAgICApOwotCi0gIGRlZnBhcmFtIF5eXiRfZ19kcV9pbzo2OmRxX2lvXyReXl4uYnVzX2hvbGQgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NjpkcV9pb18kXl5eLmRkaW9fbW9kZSA9ICJiaWRpciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo2OmRxX2lvXyReXl4uZGRpb2luY2xrX2lucHV0ID0gIm5lZ2F0ZWRfaW5jbGsiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NjpkcV9pb18kXl5eLmRxc19jdHJsX2xhdGNoZXNfZW5hYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5kcXNfZGVsYXlfYnVmZmVyX21vZGUgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo2OmRxX2lvXyReXl4uZHFzX2VkZ2VfZGV0ZWN0X2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo2OmRxX2lvXyReXl4uZHFzX2lucHV0X2ZyZXF1ZW5jeSA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5kcXNfb2Zmc2V0Y3RybF9lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NjpkcV9pb18kXl5eLmRxc19vdXRfbW9kZSA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5kcXNfcGhhc2Vfc2hpZnQgPSAwLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NjpkcV9pb18kXl5eLmV4dGVuZF9vZV9kaXNhYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5nYXRlZF9kcXMgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NjpkcV9pb18kXl5eLmluY2xrX2lucHV0ID0gImRxc19idXMiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NjpkcV9pb18kXl5eLmlucHV0X2FzeW5jX3Jlc2V0ID0gImNsZWFyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5pbnB1dF9wb3dlcl91cCA9ICJsb3ciLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NjpkcV9pb18kXl5eLmlucHV0X3JlZ2lzdGVyX21vZGUgPSAicmVnaXN0ZXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NjpkcV9pb18kXl5eLmlucHV0X3N5bmNfcmVzZXQgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo2OmRxX2lvXyReXl4ubHBtX3R5cGUgPSAic3RyYXRpeGlpX2lvIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5vZV9hc3luY19yZXNldCA9ICJjbGVhciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo2OmRxX2lvXyReXl4ub2VfcG93ZXJfdXAgPSAibG93IiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5vZV9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5vZV9zeW5jX3Jlc2V0ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NjpkcV9pb18kXl5eLm9wZW5fZHJhaW5fb3V0cHV0ID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5vcGVyYXRpb25fbW9kZSA9ICJiaWRpciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo2OmRxX2lvXyReXl4ub3V0cHV0X2FzeW5jX3Jlc2V0ID0gImNsZWFyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5vdXRwdXRfcG93ZXJfdXAgPSAibG93IiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5vdXRwdXRfcmVnaXN0ZXJfbW9kZSA9ICJyZWdpc3RlciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo2OmRxX2lvXyReXl4ub3V0cHV0X3N5bmNfcmVzZXQgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo2OmRxX2lvXyReXl4uc2ltX2Rxc19kZWxheV9pbmNyZW1lbnQgPSAwLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NjpkcV9pb18kXl5eLnNpbV9kcXNfaW50cmluc2ljX2RlbGF5ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi5zaW1fZHFzX29mZnNldF9pbmNyZW1lbnQgPSAwLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NjpkcV9pb18kXl5eLnRpZV9vZmZfb2VfY2xvY2tfZW5hYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjY6ZHFfaW9fJF5eXi50aWVfb2ZmX291dHB1dF9jbG9ja19lbmFibGUgPSAiZmFsc2UiOwotCi0gIHN0cmF0aXhpaV9pbyBeXl4kX2dfZHFfaW86NzpkcV9pb18kXl5eCi0gICAgKAotICAgICAgLmFyZXNldCAocmVzZXQpLAotICAgICAgLmNvbWJvdXQgKCksCi0gICAgICAuZGF0YWluICh3ZGF0YV9yWzddKSwKLSAgICAgIC5kZGlvZGF0YWluICh3ZGF0YV9yWzE1XSksCi0gICAgICAuZGRpb2luY2xrIChaRVJPU1swXSksCi0gICAgICAuZGRpb3JlZ291dCAoZHFfY2FwdHVyZWRfcmlzaW5nWzddKSwKLSAgICAgIC5kZWxheWN0cmxpbiAoKSwKLSAgICAgIC5kZXZjbHJuICgpLAotICAgICAgLmRldm9lICgpLAotICAgICAgLmRldnBvciAoKSwKLSAgICAgIC5kcXNidXNvdXQgKCksCi0gICAgICAuZHFzdXBkYXRlZW4gKCksCi0gICAgICAuaW5jbGsgKGRxX2NhcHR1cmVfY2xrKSwKLSAgICAgIC5pbmNsa2VuYSAoMSdiMSksCi0gICAgICAubGlua2luICgpLAotICAgICAgLmxpbmtvdXQgKCksCi0gICAgICAub2UgKGRxX29lKSwKLSAgICAgIC5vZmZzZXRjdHJsaW4gKCksCi0gICAgICAub3V0Y2xrICh3cml0ZV9jbGspLAotICAgICAgLm91dGNsa2VuYSAoMSdiMSksCi0gICAgICAucGFkaW8gKGRkcl9kcVs3XSksCi0gICAgICAucmVnb3V0IChkcV9jYXB0dXJlZF9mYWxsaW5nWzddKSwKLSAgICAgIC5zcmVzZXQgKCksCi0gICAgICAudGVybWluYXRpb25jb250cm9sICgpCi0gICAgKTsKLQotICBkZWZwYXJhbSBeXl4kX2dfZHFfaW86NzpkcV9pb18kXl5eLmJ1c19ob2xkID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjc6ZHFfaW9fJF5eXi5kZGlvX21vZGUgPSAiYmlkaXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NzpkcV9pb18kXl5eLmRkaW9pbmNsa19pbnB1dCA9ICJuZWdhdGVkX2luY2xrIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjc6ZHFfaW9fJF5eXi5kcXNfY3RybF9sYXRjaGVzX2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4uZHFzX2RlbGF5X2J1ZmZlcl9tb2RlID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NzpkcV9pb18kXl5eLmRxc19lZGdlX2RldGVjdF9lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NzpkcV9pb18kXl5eLmRxc19pbnB1dF9mcmVxdWVuY3kgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4uZHFzX29mZnNldGN0cmxfZW5hYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjc6ZHFfaW9fJF5eXi5kcXNfb3V0X21vZGUgPSAibm9uZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4uZHFzX3BoYXNlX3NoaWZ0ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjc6ZHFfaW9fJF5eXi5leHRlbmRfb2VfZGlzYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4uZ2F0ZWRfZHFzID0gImZhbHNlIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjc6ZHFfaW9fJF5eXi5pbmNsa19pbnB1dCA9ICJkcXNfYnVzIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjc6ZHFfaW9fJF5eXi5pbnB1dF9hc3luY19yZXNldCA9ICJjbGVhciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4uaW5wdXRfcG93ZXJfdXAgPSAibG93IiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjc6ZHFfaW9fJF5eXi5pbnB1dF9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjc6ZHFfaW9fJF5eXi5pbnB1dF9zeW5jX3Jlc2V0ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NzpkcV9pb18kXl5eLmxwbV90eXBlID0gInN0cmF0aXhpaV9pbyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4ub2VfYXN5bmNfcmVzZXQgPSAiY2xlYXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NzpkcV9pb18kXl5eLm9lX3Bvd2VyX3VwID0gImxvdyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4ub2VfcmVnaXN0ZXJfbW9kZSA9ICJyZWdpc3RlciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4ub2Vfc3luY19yZXNldCA9ICJub25lIiwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjc6ZHFfaW9fJF5eXi5vcGVuX2RyYWluX291dHB1dCA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4ub3BlcmF0aW9uX21vZGUgPSAiYmlkaXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NzpkcV9pb18kXl5eLm91dHB1dF9hc3luY19yZXNldCA9ICJjbGVhciIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4ub3V0cHV0X3Bvd2VyX3VwID0gImxvdyIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4ub3V0cHV0X3JlZ2lzdGVyX21vZGUgPSAicmVnaXN0ZXIiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NzpkcV9pb18kXl5eLm91dHB1dF9zeW5jX3Jlc2V0ID0gIm5vbmUiLAotICAgICAgICAgICBeXl4kX2dfZHFfaW86NzpkcV9pb18kXl5eLnNpbV9kcXNfZGVsYXlfaW5jcmVtZW50ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjc6ZHFfaW9fJF5eXi5zaW1fZHFzX2ludHJpbnNpY19kZWxheSA9IDAsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4uc2ltX2Rxc19vZmZzZXRfaW5jcmVtZW50ID0gMCwKLSAgICAgICAgICAgXl5eJF9nX2RxX2lvOjc6ZHFfaW9fJF5eXi50aWVfb2ZmX29lX2Nsb2NrX2VuYWJsZSA9ICJmYWxzZSIsCi0gICAgICAgICAgIF5eXiRfZ19kcV9pbzo3OmRxX2lvXyReXl4udGllX29mZl9vdXRwdXRfY2xvY2tfZW5hYmxlID0gImZhbHNlIjsKLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vV3JpdGUgZGF0YSByZWdpc3RlcnMKLSAgLy9UaGVzZSBhcmUgdGhlIGxhc3QgcmVnaXN0ZXJzIGJlZm9yZSB0aGUgcmVnaXN0ZXJzIGluIHRoZSBhbHRkZGlvX2JpZGlyLiBUaGV5Ci0gIC8vYXJlIGNsb2NrZWQgb2ZmIHRoZSBzeXN0ZW0gY2xvY2sgYnV0IGZlZWQgcmVnaXN0ZXJzIHdoaWNoIGFyZSBjbG9ja2VkIG9mZiB0aGUKLSAgLy93cml0ZSBjbG9jaywgc28gdGhlaXIgb3V0cHV0IGlzIHRoZSBiZWdpbm5pbmcgb2YgMy80IGN5Y2xlIHBhdGguCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHdkYXRhX3IgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHdkYXRhX3ZhbGlkKQotICAgICAgICAgIC8vZG9uJ3QgbGF0Y2ggaW4gZGF0YSB1bmxlc3MgaXQncyB2YWxpZAotICAgICAgICAgIHdkYXRhX3IgPD0gd2RhdGE7Ci0KLSAgICBlbmQKLQotCi0gIC8vQ29uY2F0ZW5hdGUgdGhlIHJpc2luZyBhbmQgZmFsbGluZyBlZGdlIGRhdGEgdG8gbWFrZSBhIHNpbmdsZSBidXMKLSAgYXNzaWduIGRxX2NhcHR1cmVkXzAgPSB7ZHFfY2FwdHVyZWRfZmFsbGluZywgZHFfY2FwdHVyZWRfcmlzaW5nfTsKLQotICAvL0FwcGx5IGRlbGF5cyBpbiAxIGNodW5rcyB0byBhdm9pZCBoYXZpbmcgdG8gdXNlIHRyYW5zcG9ydCBkZWxheXMKLSAgYXNzaWduICMyNTAwIGRlbGF5ZWRfZHFfY2FwdHVyZWQgPSBkcV9jYXB0dXJlZF8wOwotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy9SZXN5bmNocm9uaXNhdGlvbiByZWdpc3RlcnMKLSAgLy9UaGVzZSByZWdpc3RlcnMgcmVzeWNocm9uaXNlIHRoZSBjYXB0dXJlZCByZWFkIGRhdGEgZnJvbSB0aGUgRFFTIGNsb2NrCi0gIC8vZG9tYWluIGJhY2sgaW50byBhbiBpbnRlcm5hbCBQTEwgY2xvY2sgZG9tYWluLiAKLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAvL1VzZSBhIHJpc2luZyBlZGdlIGZvciByZXN5bmNoCi0gIGFsd2F5cyBAKHBvc2VkZ2UgcmVzeW5jaF9jbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlc3luY2hlZF9kYXRhIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICByZXN5bmNoZWRfZGF0YSA8PSBkZWxheWVkX2RxX2NhcHR1cmVkOwotICAgIGVuZAotCi0KLSAgLy9kb24ndCBpbnNlcnQgcGlwZWxpbmUgcmVnaXN0ZXJzCi0gIGFzc2lnbiBpbnRlcl9yZGF0YSA9IHJlc3luY2hlZF9kYXRhOwotCi0gIC8vZG9uJ3QgaW5zZXJ0IHBpcGVsaW5lIHJlZ2lzdGVycwotICBhc3NpZ24gcmRhdGEgPSBpbnRlcl9yZGF0YTsKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICBzdHJhdGl4aWlfaW8gZHFzX2lvCi0gICAgKAotICAgICAgLmFyZXNldCAoMSdiMSksCi0gICAgICAuY29tYm91dCAodW5kZWxheWVkX2RxcyksCi0gICAgICAuZGF0YWluIChkcXNfb2VfciksCi0gICAgICAuZGRpb2RhdGFpbiAoWkVST1NbMF0pLAotICAgICAgLmRkaW9pbmNsayAoKSwKLSAgICAgIC5kZGlvcmVnb3V0ICgpLAotICAgICAgLmRlbGF5Y3RybGluIChkcXNfZGVsYXlfY3RybCksCi0gICAgICAuZGV2Y2xybiAoKSwKLSAgICAgIC5kZXZvZSAoKSwKLSAgICAgIC5kZXZwb3IgKCksCi0gICAgICAuZHFzYnVzb3V0IChkcXNfY2xrKSwKLSAgICAgIC5kcXN1cGRhdGVlbiAoZHFzdXBkYXRlKSwKLSAgICAgIC5pbmNsayAobm90X2Rxc19jbGspLAotICAgICAgLmluY2xrZW5hICgxJ2IxKSwKLSAgICAgIC5saW5raW4gKCksCi0gICAgICAubGlua291dCAoKSwKLSAgICAgIC5vZSAoZHFzX29lKSwKLSAgICAgIC5vZmZzZXRjdHJsaW4gKCksCi0gICAgICAub3V0Y2xrIChjbGspLAotICAgICAgLm91dGNsa2VuYSAoMSdiMSksCi0gICAgICAucGFkaW8gKGRkcl9kcXMpLAotICAgICAgLnJlZ291dCAoKSwKLSAgICAgIC5zcmVzZXQgKCksCi0gICAgICAudGVybWluYXRpb25jb250cm9sICgpCi0gICAgKTsKLQotICBkZWZwYXJhbSBkcXNfaW8uYnVzX2hvbGQgPSAiZmFsc2UiLAotICAgICAgICAgICBkcXNfaW8uZGRpb19tb2RlID0gIm91dHB1dCIsCi0gICAgICAgICAgIGRxc19pby5kZGlvaW5jbGtfaW5wdXQgPSAiaW5jbGsiLAotICAgICAgICAgICBkcXNfaW8uZHFzX2N0cmxfbGF0Y2hlc19lbmFibGUgPSAidHJ1ZSIsCi0gICAgICAgICAgIGRxc19pby5kcXNfZGVsYXlfYnVmZmVyX21vZGUgPSBnU1RSQVRJWElJX0RMTF9ERUxBWV9CVUZGRVJfTU9ERSwKLSAgICAgICAgICAgZHFzX2lvLmRxc19lZGdlX2RldGVjdF9lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBkcXNfaW8uZHFzX2lucHV0X2ZyZXF1ZW5jeSA9IGdETExfSU5QVVRfRlJFUVVFTkNZLAotICAgICAgICAgICBkcXNfaW8uZHFzX29mZnNldGN0cmxfZW5hYmxlID0gImZhbHNlIiwKLSAgICAgICAgICAgZHFzX2lvLmRxc19vdXRfbW9kZSA9IGdTVFJBVElYSUlfRFFTX09VVF9NT0RFLAotICAgICAgICAgICBkcXNfaW8uZHFzX3BoYXNlX3NoaWZ0ID0gNjAwMCwKLSAgICAgICAgICAgZHFzX2lvLmV4dGVuZF9vZV9kaXNhYmxlID0gInRydWUiLAotICAgICAgICAgICBkcXNfaW8uZ2F0ZWRfZHFzID0gInRydWUiLAotICAgICAgICAgICBkcXNfaW8uaW5jbGtfaW5wdXQgPSAiZHFzX2J1cyIsCi0gICAgICAgICAgIGRxc19pby5pbnB1dF9hc3luY19yZXNldCA9ICJwcmVzZXQiLAotICAgICAgICAgICBkcXNfaW8uaW5wdXRfcG93ZXJfdXAgPSAiaGlnaCIsCi0gICAgICAgICAgIGRxc19pby5pbnB1dF9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLSAgICAgICAgICAgZHFzX2lvLmlucHV0X3N5bmNfcmVzZXQgPSAiY2xlYXIiLAotICAgICAgICAgICBkcXNfaW8ubHBtX3R5cGUgPSAic3RyYXRpeGlpX2lvIiwKLSAgICAgICAgICAgZHFzX2lvLm9lX2FzeW5jX3Jlc2V0ID0gIm5vbmUiLAotICAgICAgICAgICBkcXNfaW8ub2VfcG93ZXJfdXAgPSAibG93IiwKLSAgICAgICAgICAgZHFzX2lvLm9lX3JlZ2lzdGVyX21vZGUgPSAicmVnaXN0ZXIiLAotICAgICAgICAgICBkcXNfaW8ub2Vfc3luY19yZXNldCA9ICJub25lIiwKLSAgICAgICAgICAgZHFzX2lvLm9wZW5fZHJhaW5fb3V0cHV0ID0gImZhbHNlIiwKLSAgICAgICAgICAgZHFzX2lvLm9wZXJhdGlvbl9tb2RlID0gImJpZGlyIiwKLSAgICAgICAgICAgZHFzX2lvLm91dHB1dF9hc3luY19yZXNldCA9ICJub25lIiwKLSAgICAgICAgICAgZHFzX2lvLm91dHB1dF9wb3dlcl91cCA9ICJsb3ciLAotICAgICAgICAgICBkcXNfaW8ub3V0cHV0X3JlZ2lzdGVyX21vZGUgPSAicmVnaXN0ZXIiLAotICAgICAgICAgICBkcXNfaW8ub3V0cHV0X3N5bmNfcmVzZXQgPSAibm9uZSIsCi0gICAgICAgICAgIGRxc19pby5zaW1fZHFzX2RlbGF5X2luY3JlbWVudCA9IDM2LAotICAgICAgICAgICBkcXNfaW8uc2ltX2Rxc19pbnRyaW5zaWNfZGVsYXkgPSA5MDAsCi0gICAgICAgICAgIGRxc19pby5zaW1fZHFzX29mZnNldF9pbmNyZW1lbnQgPSAwLAotICAgICAgICAgICBkcXNfaW8udGllX29mZl9vZV9jbG9ja19lbmFibGUgPSAiZmFsc2UiLAotICAgICAgICAgICBkcXNfaW8udGllX29mZl9vdXRwdXRfY2xvY2tfZW5hYmxlID0gImZhbHNlIjsKLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0vL3N5bnRoZXNpcyByZWFkX2NvbW1lbnRzX2FzX0hETCBvbgotLy8gIHN0cmF0aXhpaV9pbyBkcXNfaW8KLS8vICAgICgKLS8vICAgICAgLmFyZXNldCAoZHFfZW5hYmxlX3Jlc2V0KSwKLS8vICAgICAgLmNvbWJvdXQgKHVuZGVsYXllZF9kcXMpLAotLy8gICAgICAuZGF0YWluIChkcXNfb2VfciksCi0vLyAgICAgIC5kZGlvZGF0YWluIChaRVJPU1swXSksCi0vLyAgICAgIC5kZGlvaW5jbGsgKCksCi0vLyAgICAgIC5kZGlvcmVnb3V0ICgpLAotLy8gICAgICAuZGVsYXljdHJsaW4gKGRxc19kZWxheV9jdHJsKSwKLS8vICAgICAgLmRldmNscm4gKCksCi0vLyAgICAgIC5kZXZvZSAoKSwKLS8vICAgICAgLmRldnBvciAoKSwKLS8vICAgICAgLmRxc2J1c291dCAoZHFzX2NsayksCi0vLyAgICAgIC5kcXN1cGRhdGVlbiAoZHFzdXBkYXRlKSwKLS8vICAgICAgLmluY2xrIChub3RfZHFzX2NsayksCi0vLyAgICAgIC5pbmNsa2VuYSAoMSdiMSksCi0vLyAgICAgIC5saW5raW4gKCksCi0vLyAgICAgIC5saW5rb3V0ICgpLAotLy8gICAgICAub2UgKGRxc19vZSksCi0vLyAgICAgIC5vZmZzZXRjdHJsaW4gKCksCi0vLyAgICAgIC5vdXRjbGsgKGNsayksCi0vLyAgICAgIC5vdXRjbGtlbmEgKDEnYjEpLAotLy8gICAgICAucGFkaW8gKGRkcl9kcXMpLAotLy8gICAgICAucmVnb3V0ICgpLAotLy8gICAgICAuc3Jlc2V0ICgxJ2IxKSwKLS8vICAgICAgLnRlcm1pbmF0aW9uY29udHJvbCAoKQotLy8gICAgKTsKLS8vCi0vLyAgZGVmcGFyYW0gZHFzX2lvLmJ1c19ob2xkID0gImZhbHNlIiwKLS8vICAgICAgICAgICBkcXNfaW8uZGRpb19tb2RlID0gIm91dHB1dCIsCi0vLyAgICAgICAgICAgZHFzX2lvLmRkaW9pbmNsa19pbnB1dCA9ICJuZWdhdGVkX2luY2xrIiwKLS8vICAgICAgICAgICBkcXNfaW8uZHFzX2N0cmxfbGF0Y2hlc19lbmFibGUgPSAidHJ1ZSIsCi0vLyAgICAgICAgICAgZHFzX2lvLmRxc19kZWxheV9idWZmZXJfbW9kZSA9IGdTVFJBVElYSUlfRExMX0RFTEFZX0JVRkZFUl9NT0RFLAotLy8gICAgICAgICAgIGRxc19pby5kcXNfZWRnZV9kZXRlY3RfZW5hYmxlID0gImZhbHNlIiwKLS8vICAgICAgICAgICBkcXNfaW8uZHFzX2lucHV0X2ZyZXF1ZW5jeSA9IGdETExfSU5QVVRfRlJFUVVFTkNZLAotLy8gICAgICAgICAgIGRxc19pby5kcXNfb2Zmc2V0Y3RybF9lbmFibGUgPSAiZmFsc2UiLAotLy8gICAgICAgICAgIGRxc19pby5kcXNfb3V0X21vZGUgPSBnU1RSQVRJWElJX0RRU19PVVRfTU9ERSwKLS8vICAgICAgICAgICBkcXNfaW8uZHFzX3BoYXNlX3NoaWZ0ID0gNjAwMCwKLS8vICAgICAgICAgICBkcXNfaW8uZXh0ZW5kX29lX2Rpc2FibGUgPSAidHJ1ZSIsCi0vLyAgICAgICAgICAgZHFzX2lvLmdhdGVkX2RxcyA9ICJ0cnVlIiwKLS8vICAgICAgICAgICBkcXNfaW8uaW5jbGtfaW5wdXQgPSAiZHFzX2J1cyIsCi0vLyAgICAgICAgICAgZHFzX2lvLmlucHV0X2FzeW5jX3Jlc2V0ID0gInByZXNldCIsCi0vLyAgICAgICAgICAgZHFzX2lvLmlucHV0X3Bvd2VyX3VwID0gImhpZ2giLAotLy8gICAgICAgICAgIGRxc19pby5pbnB1dF9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLS8vICAgICAgICAgICBkcXNfaW8uaW5wdXRfc3luY19yZXNldCA9ICJjbGVhciIsCi0vLyAgICAgICAgICAgZHFzX2lvLmxwbV90eXBlID0gInN0cmF0aXhpaV9pbyIsCi0vLyAgICAgICAgICAgZHFzX2lvLm9lX2FzeW5jX3Jlc2V0ID0gIm5vbmUiLAotLy8gICAgICAgICAgIGRxc19pby5vZV9wb3dlcl91cCA9ICJsb3ciLAotLy8gICAgICAgICAgIGRxc19pby5vZV9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLS8vICAgICAgICAgICBkcXNfaW8ub2Vfc3luY19yZXNldCA9ICJub25lIiwKLS8vICAgICAgICAgICBkcXNfaW8ub3Blbl9kcmFpbl9vdXRwdXQgPSAiZmFsc2UiLAotLy8gICAgICAgICAgIGRxc19pby5vcGVyYXRpb25fbW9kZSA9ICJiaWRpciIsCi0vLyAgICAgICAgICAgZHFzX2lvLm91dHB1dF9hc3luY19yZXNldCA9ICJub25lIiwKLS8vICAgICAgICAgICBkcXNfaW8ub3V0cHV0X3Bvd2VyX3VwID0gImxvdyIsCi0vLyAgICAgICAgICAgZHFzX2lvLm91dHB1dF9yZWdpc3Rlcl9tb2RlID0gInJlZ2lzdGVyIiwKLS8vICAgICAgICAgICBkcXNfaW8ub3V0cHV0X3N5bmNfcmVzZXQgPSAibm9uZSIsCi0vLyAgICAgICAgICAgZHFzX2lvLnNpbV9kcXNfZGVsYXlfaW5jcmVtZW50ID0gMzYsCi0vLyAgICAgICAgICAgZHFzX2lvLnNpbV9kcXNfaW50cmluc2ljX2RlbGF5ID0gOTAwLAotLy8gICAgICAgICAgIGRxc19pby5zaW1fZHFzX29mZnNldF9pbmNyZW1lbnQgPSAwLAotLy8gICAgICAgICAgIGRxc19pby50aWVfb2ZmX29lX2Nsb2NrX2VuYWJsZSA9ICJmYWxzZSIsCi0vLyAgICAgICAgICAgZHFzX2lvLnRpZV9vZmZfb3V0cHV0X2Nsb2NrX2VuYWJsZSA9ICJmYWxzZSI7Ci0vLwotLy9zeW50aGVzaXMgcmVhZF9jb21tZW50c19hc19IREwgb2ZmCi0KLWVuZG1vZHVsZQotCi0KLS8qIFNMbGluZSAyMDQ3MSAiY3VzdG9tX2RtYS52IiAyICovCi0vKiBTTGxpbmUgMSAiZGRyX3NkcmFtX2F1a19kZHJfY2xrX2dlbi52IiAxICovCi0vL0xlZ2FsIE5vdGljZTogKEMpMjAxMCBBbHRlcmEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBZb3VyCi0vL3VzZSBvZiBBbHRlcmEgQ29ycG9yYXRpb24ncyBkZXNpZ24gdG9vbHMsIGxvZ2ljIGZ1bmN0aW9ucyBhbmQgb3RoZXIKLS8vc29mdHdhcmUgYW5kIHRvb2xzLCBhbmQgaXRzIEFNUFAgcGFydG5lciBsb2dpYyBmdW5jdGlvbnMsIGFuZCBhbnkKLS8vb3V0cHV0IGZpbGVzIGFueSBvZiB0aGUgZm9yZWdvaW5nIChpbmNsdWRpbmcgZGV2aWNlIHByb2dyYW1taW5nIG9yCi0vL3NpbXVsYXRpb24gZmlsZXMpLCBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiBhcmUKLS8vZXhwcmVzc2x5IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBBbHRlcmEgUHJvZ3JhbQotLy9MaWNlbnNlIFN1YnNjcmlwdGlvbiBBZ3JlZW1lbnQgb3Igb3RoZXIgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudCwKLS8vaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIHRoYXQgeW91ciB1c2UgaXMgZm9yIHRoZSBzb2xlIHB1cnBvc2UKLS8vb2YgcHJvZ3JhbW1pbmcgbG9naWMgZGV2aWNlcyBtYW51ZmFjdHVyZWQgYnkgQWx0ZXJhIGFuZCBzb2xkIGJ5IEFsdGVyYQotLy9vciBpdHMgYXV0aG9yaXplZCBkaXN0cmlidXRvcnMuICBQbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2FibGUKLS8vYWdyZWVtZW50IGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi1gdGltZXNjYWxlIDFwcyAvIDFwcwotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vL1BhcmFtZXRlcnM6Ci0vL051bWJlciBvZiBtZW1vcnkgY2xvY2sgb3V0cHV0IHBhaXJzICAgIDogMQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLW1vZHVsZSBkZHJfc2RyYW1fYXVrX2Rkcl9jbGtfZ2VuICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrX3RvX3NkcmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrX3RvX3NkcmFtX24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGNsa190b19zZHJhbTsKLSAgb3V0cHV0ICAgICAgICAgICBjbGtfdG9fc2RyYW1fbjsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICB3aXJlICAgICAgICAgICAgIGNsa19uOwotICB3aXJlICAgICAgICAgICAgIGNsa190b19zZHJhbTsKLSAgd2lyZSAgICAgICAgICAgICBjbGtfdG9fc2RyYW1fbjsKLSAgd2lyZSAgICAgICAgICAgICBnbmRfc2lnbmFsOwotICB3aXJlICAgICAgICAgICAgIHZjY19zaWduYWw7Ci0gIGFzc2lnbiBjbGtfbiA9IH5jbGs7Ci0gIGFzc2lnbiB2Y2Nfc2lnbmFsID0gezF7MSdiMX19OwotICBhc3NpZ24gZ25kX3NpZ25hbCA9IDA7Ci0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vU3RyYXRpeC9DeWNsb25lIGNhbiBkcml2ZSBjbG9ja3Mgb3V0IG9uIG5vcm1hbCBwaW5zIHVzaW5nCi0gIC8vQUxURERJT19PVVQgbWVnYWZ1bmN0aW9uCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vSW5zdGFudGlhdGUgRERSIElPcyBmb3IgZHJpdmluZyB0aGUgU0RSQU0gY2xvY2sgb2ZmLWNoaXAKLQotICBhbHRkZGlvX291dCBkZHJfY2xrX291dF9wCi0gICAgKAotICAgICAgLmFjbHIgKCksCi0gICAgICAuYXNldCAoKSwKLSAgICAgIC5kYXRhaW5faCAoZ25kX3NpZ25hbCksCi0gICAgICAuZGF0YWluX2wgKHZjY19zaWduYWwpLAotICAgICAgLmRhdGFvdXQgKGNsa190b19zZHJhbSksCi0gICAgICAub2UgKCksCi0gICAgICAub3V0Y2xvY2sgKGNsa19uKSwKLSAgICAgIC5vdXRjbG9ja2VuICgpCi0gICAgKTsKLQotICBkZWZwYXJhbSBkZHJfY2xrX291dF9wLmV4dGVuZF9vZV9kaXNhYmxlID0gIlVOVVNFRCIsCi0gICAgICAgICAgIGRkcl9jbGtfb3V0X3AuaW50ZW5kZWRfZGV2aWNlX2ZhbWlseSA9ICJTdHJhdGl4IElJIiwKLSAgICAgICAgICAgZGRyX2Nsa19vdXRfcC5pbnZlcnRfb3V0cHV0ID0gIk9GRiIsCi0gICAgICAgICAgIGRkcl9jbGtfb3V0X3AubHBtX2hpbnQgPSAiVU5VU0VEIiwKLSAgICAgICAgICAgZGRyX2Nsa19vdXRfcC5scG1fdHlwZSA9ICJhbHRkZGlvX291dCIsCi0gICAgICAgICAgIGRkcl9jbGtfb3V0X3Aub2VfcmVnID0gIlVOVVNFRCIsCi0gICAgICAgICAgIGRkcl9jbGtfb3V0X3AucG93ZXJfdXBfaGlnaCA9ICJPRkYiLAotICAgICAgICAgICBkZHJfY2xrX291dF9wLndpZHRoID0gMTsKLQotICBhbHRkZGlvX291dCBkZHJfY2xrX291dF9uCi0gICAgKAotICAgICAgLmFjbHIgKCksCi0gICAgICAuYXNldCAoKSwKLSAgICAgIC5kYXRhaW5faCAoZ25kX3NpZ25hbCksCi0gICAgICAuZGF0YWluX2wgKHZjY19zaWduYWwpLAotICAgICAgLmRhdGFvdXQgKGNsa190b19zZHJhbV9uKSwKLSAgICAgIC5vZSAoKSwKLSAgICAgIC5vdXRjbG9jayAoY2xrKSwKLSAgICAgIC5vdXRjbG9ja2VuICgpCi0gICAgKTsKLQotICBkZWZwYXJhbSBkZHJfY2xrX291dF9uLmV4dGVuZF9vZV9kaXNhYmxlID0gIlVOVVNFRCIsCi0gICAgICAgICAgIGRkcl9jbGtfb3V0X24uaW50ZW5kZWRfZGV2aWNlX2ZhbWlseSA9ICJTdHJhdGl4IElJIiwKLSAgICAgICAgICAgZGRyX2Nsa19vdXRfbi5pbnZlcnRfb3V0cHV0ID0gIk9GRiIsCi0gICAgICAgICAgIGRkcl9jbGtfb3V0X24ubHBtX2hpbnQgPSAiVU5VU0VEIiwKLSAgICAgICAgICAgZGRyX2Nsa19vdXRfbi5scG1fdHlwZSA9ICJhbHRkZGlvX291dCIsCi0gICAgICAgICAgIGRkcl9jbGtfb3V0X24ub2VfcmVnID0gIlVOVVNFRCIsCi0gICAgICAgICAgIGRkcl9jbGtfb3V0X24ucG93ZXJfdXBfaGlnaCA9ICJPRkYiLAotICAgICAgICAgICBkZHJfY2xrX291dF9uLndpZHRoID0gMTsKLQotCi1lbmRtb2R1bGUKLQotCi0vKiBTTGxpbmUgMjA0NzIgImN1c3RvbV9kbWEudiIgMiAqLwotLyogU0xsaW5lIDEgImRkcl9zZHJhbV9hdWtfZGRyX2RhdGFwYXRoLnYiIDEgKi8KLS8vTGVnYWwgTm90aWNlOiAoQykyMDEwIEFsdGVyYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFlvdXIKLS8vdXNlIG9mIEFsdGVyYSBDb3Jwb3JhdGlvbidzIGRlc2lnbiB0b29scywgbG9naWMgZnVuY3Rpb25zIGFuZCBvdGhlcgotLy9zb2Z0d2FyZSBhbmQgdG9vbHMsIGFuZCBpdHMgQU1QUCBwYXJ0bmVyIGxvZ2ljIGZ1bmN0aW9ucywgYW5kIGFueQotLy9vdXRwdXQgZmlsZXMgYW55IG9mIHRoZSBmb3JlZ29pbmcgKGluY2x1ZGluZyBkZXZpY2UgcHJvZ3JhbW1pbmcgb3IKLS8vc2ltdWxhdGlvbiBmaWxlcyksIGFuZCBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIGFyZQotLy9leHByZXNzbHkgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEFsdGVyYSBQcm9ncmFtCi0vL0xpY2Vuc2UgU3Vic2NyaXB0aW9uIEFncmVlbWVudCBvciBvdGhlciBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50LAotLy9pbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgdGhhdCB5b3VyIHVzZSBpcyBmb3IgdGhlIHNvbGUgcHVycG9zZQotLy9vZiBwcm9ncmFtbWluZyBsb2dpYyBkZXZpY2VzIG1hbnVmYWN0dXJlZCBieSBBbHRlcmEgYW5kIHNvbGQgYnkgQWx0ZXJhCi0vL29yIGl0cyBhdXRob3JpemVkIGRpc3RyaWJ1dG9ycy4gIFBsZWFzZSByZWZlciB0byB0aGUgYXBwbGljYWJsZQotLy9hZ3JlZW1lbnQgZm9yIGZ1cnRoZXIgZGV0YWlscy4KLQotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLWB0aW1lc2NhbGUgMXBzIC8gMXBzCi0vLyBzeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgZGRyX3NkcmFtX2F1a19kZHJfZGF0YXBhdGggKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVfY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sX2JlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xfZG9pbmdfcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbF9kb2luZ193ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sX2Rxc19idXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sX3dkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xfd2RhdGFfdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHFzX2RlbGF5X2N0cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHFzdXBkYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RhbWJsZV9jbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN5bmNoX2NsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9jbGssCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrX3RvX3NkcmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsa190b19zZHJhbV9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xfcmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRyX2RtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkcl9kcSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfZHFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIHBhcmFtZXRlciBnc3RyYXRpeGlpX2Rxc19waGFzZSA9IDYwMDA7Ci0gIHBhcmFtZXRlciBnc3RyYXRpeGlpX2Rxc19vdXRfbW9kZSA9ICJkZWxheV9jaGFpbjIiOwotICBwYXJhbWV0ZXIgZ3N0cmF0aXhpaV9kbGxfZGVsYXlfYnVmZmVyX21vZGUgPSAibG93IjsKLQotCi0gIG91dHB1dCAgICAgICAgICAgY2xrX3RvX3NkcmFtOwotICBvdXRwdXQgICAgICAgICAgIGNsa190b19zZHJhbV9uOwotICBvdXRwdXQgIFsgMzE6IDBdIGNvbnRyb2xfcmRhdGE7Ci0gIG91dHB1dCAgWyAgMTogMF0gZGRyX2RtOwotICBpbm91dCAgIFsgMTU6IDBdIGRkcl9kcTsKLSAgaW5vdXQgICBbICAxOiAwXSBkZHJfZHFzOwotICBpbnB1dCAgICAgICAgICAgIGNhcHR1cmVfY2xrOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbICAzOiAwXSBjb250cm9sX2JlOwotICBpbnB1dCAgICAgICAgICAgIGNvbnRyb2xfZG9pbmdfcmQ7Ci0gIGlucHV0ICAgICAgICAgICAgY29udHJvbF9kb2luZ193cjsKLSAgaW5wdXQgICAgICAgICAgICBjb250cm9sX2Rxc19idXJzdDsKLSAgaW5wdXQgICBbIDMxOiAwXSBjb250cm9sX3dkYXRhOwotICBpbnB1dCAgICAgICAgICAgIGNvbnRyb2xfd2RhdGFfdmFsaWQ7Ci0gIGlucHV0ICAgWyAgNTogMF0gZHFzX2RlbGF5X2N0cmw7Ci0gIGlucHV0ICAgICAgICAgICAgZHFzdXBkYXRlOwotICBpbnB1dCAgICAgICAgICAgIHBvc3RhbWJsZV9jbGs7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICByZXN5bmNoX2NsazsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZV9jbGs7Ci0KLSAgd2lyZSAgICBbICAzOiAwXSBiZV90ZW1wOwotICB3aXJlICAgICAgICAgICAgIGNhcHR1cmVfY2xrX2ludDsKLSAgd2lyZSAgICAgICAgICAgICBjbGtfdG9fc2RyYW07Ci0gIHdpcmUgICAgICAgICAgICAgY2xrX3RvX3NkcmFtX247Ci0gIHdpcmUgICAgWyAzMTogMF0gY29udHJvbF9yZGF0YTsKLSAgd2lyZSAgICBbICAxOiAwXSBkZHJfZG07Ci0gIHdpcmUgICAgWyAxNTogMF0gZGRyX2RxOwotICB3aXJlICAgIFsgIDE6IDBdIGRkcl9kcXM7Ci0gIHdpcmUgICAgICAgICAgICAgcG9zdGFtYmxlX2Nsa19pbnQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gcmRhdGFfdGVtcDsKLSAgd2lyZSAgICAgICAgICAgICByZXN5bmNoX2Nsa19pbnQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gd2RhdGFfdGVtcDsKLSAgd2lyZSAgICAgICAgICAgICB3cml0ZV9jbGtfaW50OwotICAvLwotICAvLyoqKioqKioqKioqKioqKioqKioqKioqKgotICAvLyBDbG9jayBnZW5lcmF0b3IgbW9kdWxlIAotICBkZHJfc2RyYW1fYXVrX2Rkcl9jbGtfZ2VuIGRkcl9jbGtfZ2VuCi0gICAgKAotICAgICAgLmNsayAoY2xrKSwKLSAgICAgIC5jbGtfdG9fc2RyYW0gKGNsa190b19zZHJhbSksCi0gICAgICAuY2xrX3RvX3NkcmFtX24gKGNsa190b19zZHJhbV9uKSwKLSAgICAgIC5yZXNldF9uIChyZXNldF9uKQotICAgICk7Ci0KLQotICAvLwotICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgLy8gRFFTIGdyb3VwIGluc3RhbnRpYXRpb24gZm9yIGRxc1swXSAKLSAgYXNzaWduIHdkYXRhX3RlbXBbMTUgOiAwXSA9IHtjb250cm9sX3dkYXRhWzIzIDogMTZdLGNvbnRyb2xfd2RhdGFbNyA6IDBdfTsKLSAgYXNzaWduIGNvbnRyb2xfcmRhdGFbMjMgOiAxNl0gPSByZGF0YV90ZW1wWzE1IDogOF07Ci0gIGFzc2lnbiBjb250cm9sX3JkYXRhWzcgOiAwXSA9IHJkYXRhX3RlbXBbNyA6IDBdOwotICBhc3NpZ24gYmVfdGVtcFsxIDogMF0gPSB7Y29udHJvbF9iZVsyXSwgY29udHJvbF9iZVswXX07Ci0gIGRkcl9zZHJhbV9hdWtfZGRyX2Rxc19ncm91cCBeXl4kX2dfZGF0YXBhdGg6MDpnX2Rkcl9pb18kXl5eCi0gICAgKAotICAgICAgLmNhcHR1cmVfY2xrIChjYXB0dXJlX2Nsa19pbnQpLAotICAgICAgLmNsayAoY2xrKSwKLSAgICAgIC5jb250cm9sX2JlIChiZV90ZW1wWzEgOiAwXSksCi0gICAgICAuY29udHJvbF9kb2luZ19yZCAoY29udHJvbF9kb2luZ19yZCksCi0gICAgICAuY29udHJvbF9kb2luZ193ciAoY29udHJvbF9kb2luZ193ciksCi0gICAgICAuY29udHJvbF9kcXNfYnVyc3QgKGNvbnRyb2xfZHFzX2J1cnN0KSwKLSAgICAgIC5jb250cm9sX3JkYXRhIChyZGF0YV90ZW1wWzE1IDogMF0pLAotICAgICAgLmNvbnRyb2xfd2RhdGEgKHdkYXRhX3RlbXBbMTUgOiAwXSksCi0gICAgICAuY29udHJvbF93ZGF0YV92YWxpZCAoY29udHJvbF93ZGF0YV92YWxpZCksCi0gICAgICAuZGRyX2RtIChkZHJfZG1bMF0pLAotICAgICAgLmRkcl9kcSAoZGRyX2RxWzcgOiAwXSksCi0gICAgICAuZGRyX2RxcyAoZGRyX2Rxc1swXSksCi0gICAgICAuZHFzX2RlbGF5X2N0cmwgKGRxc19kZWxheV9jdHJsKSwKLSAgICAgIC5kcXN1cGRhdGUgKGRxc3VwZGF0ZSksCi0gICAgICAucG9zdGFtYmxlX2NsayAocG9zdGFtYmxlX2Nsa19pbnQpLAotICAgICAgLnJlc2V0X24gKHJlc2V0X24pLAotICAgICAgLnJlc3luY2hfY2xrIChyZXN5bmNoX2Nsa19pbnQpLAotICAgICAgLndyaXRlX2NsayAod3JpdGVfY2xrX2ludCkKLSAgICApOwotCi0gIGRlZnBhcmFtIF5eXiRfZ19kYXRhcGF0aDowOmdfZGRyX2lvXyReXl4uZ0RMTF9JTlBVVF9GUkVRVUVOQ1kgPSAiMTAwMDBwcyIsCi0gICAgICAgICAgIF5eXiRfZ19kYXRhcGF0aDowOmdfZGRyX2lvXyReXl4uZ1NUUkFUSVhJSV9ETExfREVMQVlfQlVGRkVSX01PREUgPSAibG93IiwKLSAgICAgICAgICAgXl5eJF9nX2RhdGFwYXRoOjA6Z19kZHJfaW9fJF5eXi5nU1RSQVRJWElJX0RRU19PVVRfTU9ERSA9ICJkZWxheV9jaGFpbjIiOwotCi0gIC8vCi0gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAvLyBEUVMgZ3JvdXAgaW5zdGFudGlhdGlvbiBmb3IgZHFzWzFdIAotICBhc3NpZ24gd2RhdGFfdGVtcFszMSA6IDE2XSA9IHtjb250cm9sX3dkYXRhWzMxIDogMjRdLGNvbnRyb2xfd2RhdGFbMTUgOiA4XX07Ci0gIGFzc2lnbiBjb250cm9sX3JkYXRhWzMxIDogMjRdID0gcmRhdGFfdGVtcFszMSA6IDI0XTsKLSAgYXNzaWduIGNvbnRyb2xfcmRhdGFbMTUgOiA4XSA9IHJkYXRhX3RlbXBbMjMgOiAxNl07Ci0gIGFzc2lnbiBiZV90ZW1wWzMgOiAyXSA9IHtjb250cm9sX2JlWzNdLCBjb250cm9sX2JlWzFdfTsKLSAgZGRyX3NkcmFtX2F1a19kZHJfZHFzX2dyb3VwIF5eXiRfZ19kYXRhcGF0aDoxOmdfZGRyX2lvXyReXl4KLSAgICAoCi0gICAgICAuY2FwdHVyZV9jbGsgKGNhcHR1cmVfY2xrX2ludCksCi0gICAgICAuY2xrIChjbGspLAotICAgICAgLmNvbnRyb2xfYmUgKGJlX3RlbXBbMyA6IDJdKSwKLSAgICAgIC5jb250cm9sX2RvaW5nX3JkIChjb250cm9sX2RvaW5nX3JkKSwKLSAgICAgIC5jb250cm9sX2RvaW5nX3dyIChjb250cm9sX2RvaW5nX3dyKSwKLSAgICAgIC5jb250cm9sX2Rxc19idXJzdCAoY29udHJvbF9kcXNfYnVyc3QpLAotICAgICAgLmNvbnRyb2xfcmRhdGEgKHJkYXRhX3RlbXBbMzEgOiAxNl0pLAotICAgICAgLmNvbnRyb2xfd2RhdGEgKHdkYXRhX3RlbXBbMzEgOiAxNl0pLAotICAgICAgLmNvbnRyb2xfd2RhdGFfdmFsaWQgKGNvbnRyb2xfd2RhdGFfdmFsaWQpLAotICAgICAgLmRkcl9kbSAoZGRyX2RtWzFdKSwKLSAgICAgIC5kZHJfZHEgKGRkcl9kcVsxNSA6IDhdKSwKLSAgICAgIC5kZHJfZHFzIChkZHJfZHFzWzFdKSwKLSAgICAgIC5kcXNfZGVsYXlfY3RybCAoZHFzX2RlbGF5X2N0cmwpLAotICAgICAgLmRxc3VwZGF0ZSAoZHFzdXBkYXRlKSwKLSAgICAgIC5wb3N0YW1ibGVfY2xrIChwb3N0YW1ibGVfY2xrX2ludCksCi0gICAgICAucmVzZXRfbiAocmVzZXRfbiksCi0gICAgICAucmVzeW5jaF9jbGsgKHJlc3luY2hfY2xrX2ludCksCi0gICAgICAud3JpdGVfY2xrICh3cml0ZV9jbGtfaW50KQotICAgICk7Ci0KLSAgZGVmcGFyYW0gXl5eJF9nX2RhdGFwYXRoOjE6Z19kZHJfaW9fJF5eXi5nRExMX0lOUFVUX0ZSRVFVRU5DWSA9ICIxMDAwMHBzIiwKLSAgICAgICAgICAgXl5eJF9nX2RhdGFwYXRoOjE6Z19kZHJfaW9fJF5eXi5nU1RSQVRJWElJX0RMTF9ERUxBWV9CVUZGRVJfTU9ERSA9ICJsb3ciLAotICAgICAgICAgICBeXl4kX2dfZGF0YXBhdGg6MTpnX2Rkcl9pb18kXl5eLmdTVFJBVElYSUlfRFFTX09VVF9NT0RFID0gImRlbGF5X2NoYWluMiI7Ci0KLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgYXNzaWduICMyNTAwIHdyaXRlX2Nsa19pbnQgPSB+Y2xrOwotICBhc3NpZ24gcmVzeW5jaF9jbGtfaW50ID0gcmVzeW5jaF9jbGs7Ci0gIGFzc2lnbiBwb3N0YW1ibGVfY2xrX2ludCA9IHBvc3RhbWJsZV9jbGs7Ci0gIGFzc2lnbiBjYXB0dXJlX2Nsa19pbnQgPSBjYXB0dXJlX2NsazsKLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotLy9zeW50aGVzaXMgcmVhZF9jb21tZW50c19hc19IREwgb24KLS8vICBhc3NpZ24gd3JpdGVfY2xrX2ludCA9IHdyaXRlX2NsazsKLS8vICBhc3NpZ24gcmVzeW5jaF9jbGtfaW50ID0gcmVzeW5jaF9jbGs7Ci0vLyAgYXNzaWduIHBvc3RhbWJsZV9jbGtfaW50ID0gcG9zdGFtYmxlX2NsazsKLS8vICBhc3NpZ24gY2FwdHVyZV9jbGtfaW50ID0gY2FwdHVyZV9jbGs7Ci0vL3N5bnRoZXNpcyByZWFkX2NvbW1lbnRzX2FzX0hETCBvZmYKLQotZW5kbW9kdWxlCi0KLQotLyogU0xsaW5lIDIwNDczICJjdXN0b21fZG1hLnYiIDIgKi8KLS8qIFNMbGluZSAxICJwbGwudiIgMSAqLwotLy9MZWdhbCBOb3RpY2U6IChDKTIwMTAgQWx0ZXJhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgWW91cgotLy91c2Ugb2YgQWx0ZXJhIENvcnBvcmF0aW9uJ3MgZGVzaWduIHRvb2xzLCBsb2dpYyBmdW5jdGlvbnMgYW5kIG90aGVyCi0vL3NvZnR3YXJlIGFuZCB0b29scywgYW5kIGl0cyBBTVBQIHBhcnRuZXIgbG9naWMgZnVuY3Rpb25zLCBhbmQgYW55Ci0vL291dHB1dCBmaWxlcyBhbnkgb2YgdGhlIGZvcmVnb2luZyAoaW5jbHVkaW5nIGRldmljZSBwcm9ncmFtbWluZyBvcgotLy9zaW11bGF0aW9uIGZpbGVzKSwgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gYXJlCi0vL2V4cHJlc3NseSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQWx0ZXJhIFByb2dyYW0KLS8vTGljZW5zZSBTdWJzY3JpcHRpb24gQWdyZWVtZW50IG9yIG90aGVyIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnQsCi0vL2luY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCB0aGF0IHlvdXIgdXNlIGlzIGZvciB0aGUgc29sZSBwdXJwb3NlCi0vL29mIHByb2dyYW1taW5nIGxvZ2ljIGRldmljZXMgbWFudWZhY3R1cmVkIGJ5IEFsdGVyYSBhbmQgc29sZCBieSBBbHRlcmEKLS8vb3IgaXRzIGF1dGhvcml6ZWQgZGlzdHJpYnV0b3JzLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBhcHBsaWNhYmxlCi0vL2FncmVlbWVudCBmb3IgZnVydGhlciBkZXRhaWxzLgotCi0vLyBzeW50aGVzaXMgdHJhbnNsYXRlX29mZgotYHRpbWVzY2FsZSAxbnMgLyAxcHMKLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBwbGwgKAotICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgYWRkcmVzcywKLSAgICAgICAgICAgICAgY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICByZWFkLAotICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICB3cml0ZSwKLSAgICAgICAgICAgICAgd3JpdGVkYXRhLAotCi0gICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgYzAsCi0gICAgICAgICAgICAgIGMxLAotICAgICAgICAgICAgICBjMiwKLSAgICAgICAgICAgICAgcmVhZGRhdGEsCi0gICAgICAgICAgICAgIHJlc2V0cmVxdWVzdAotICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBjMDsKLSAgb3V0cHV0ICAgICAgICAgICBjMTsKLSAgb3V0cHV0ICAgICAgICAgICBjMjsKLSAgb3V0cHV0ICBbIDE1OiAwXSByZWFkZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICByZXNldHJlcXVlc3Q7Ci0gIGlucHV0ICAgWyAgMjogMF0gYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBjaGlwc2VsZWN0OwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICAgICAgICAgICByZWFkOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgd3JpdGU7Ci0gIGlucHV0ICAgWyAxNTogMF0gd3JpdGVkYXRhOwotCi0gIHdpcmUgICAgICAgICAgICAgYWx3YXlzX29uZTsKLSAgd2lyZSAgICAgICAgICAgICBhcmVzZXRfbjsKLSAgd2lyZSAgICAgICAgICAgICBjMDsKLSAgd2lyZSAgICAgICAgICAgICBjMTsKLSAgd2lyZSAgICAgICAgICAgICBjMjsKLSAgd2lyZSAgICAgICAgICAgICBjb250cm9sX3JlZ19lbjsKLSAgd2lyZSAgICBbIDE1OiAwXSBjb250cm9sX3JlZ19pbjsKLSAgcmVnICAgICBbIDE1OiAwXSBjb250cm9sX3JlZ19vdXQ7Ci0gIHJlZyAgICAgICAgICAgICAgY291bnRfZG9uZTsKLSAgcmVnICAgICBbICA1OiAwXSBjb3VudHVwOwotICB3aXJlICAgICAgICAgICAgIGluY2xrMDsKLSAgcmVnICAgICAgICAgICAgICBub3RfYXJlc2V0IC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIlBSRVNFUlZFX1JFR0lTVEVSPU9OIiAgKi87Ci0gIHdpcmUgICAgWyAxNTogMF0gcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgcmVzZXRyZXF1ZXN0OwotICB3aXJlICAgIFsgMTU6IDBdIHN0YXR1c19yZWdfaW47Ci0gIHJlZyAgICAgWyAxNTogMF0gc3RhdHVzX3JlZ19vdXQ7Ci1pbml0aWFsCi0gIGJlZ2luCi0gICAgY291bnR1cCA9IDEnYjA7Ci0gICAgY291bnRfZG9uZSA9IDEnYjA7Ci0gICAgbm90X2FyZXNldCA9IDEnYjA7Ci0gIGVuZAotICBhc3NpZ24gc3RhdHVzX3JlZ19pblsxNSA6IDFdID0gMTUnYjAwMDAwMDAwMDAwMDAwMDsKLSAgYXNzaWduIHJlc2V0cmVxdWVzdCA9IH5jb3VudF9kb25lOwotICAvL1VwIGNvdW50ZXIgdGhhdCBzdG9wcyBjb3VudGluZyB3aGVuIGl0IHJlYWNoZXMgbWF4IHZhbHVlCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgYXJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChhcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGNvdW50dXAgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNvdW50X2RvbmUgIT0gMSdiMSkKLSAgICAgICAgICBjb3VudHVwIDw9IGNvdW50dXAgKyAxOwotICAgIGVuZAotCi0KLSAgLy9Db3VudF9kb25lIHNpZ25hbCwgd2hpY2ggaXMgYWxzbyB0aGUgcmVzZXRyZXF1ZXN0X24KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSBhcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKGFyZXNldF9uID09IDApCi0gICAgICAgICAgY291bnRfZG9uZSA8PSAwOwotICAgICAgZWxzZSBpZiAoY291bnR1cCA9PSA2J2IxMTExMTEpCi0gICAgICAgICAgY291bnRfZG9uZSA8PSAxJ2IxOwotICAgIGVuZAotCi0KLSAgLy9DcmVhdGVzIGEgcmVzZXQgZ2VuZXJhdG9yIHRoYXQgd2lsbCByZXNldCBpbnRlcm5hbCBjb3VudGVycyB0aGF0IGFyZSBpbmRlcGVuZGVudCBvZiBnbG9iYWwgc3lzdGVtIHJlc2V0Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgMSdiMSkKLSAgICBiZWdpbgotICAgICAgaWYgKDEnYjEgPT0gMCkKLSAgICAgICAgICBub3RfYXJlc2V0IDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBub3RfYXJlc2V0IDw9IGFsd2F5c19vbmU7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gYWx3YXlzX29uZSA9IDEnYjE7Ci0gIGFzc2lnbiBzdGF0dXNfcmVnX2luWzBdID0gMSdiMDsKLSAgYXNzaWduIGFyZXNldF9uID0gbm90X2FyZXNldDsKLSAgYXNzaWduIGluY2xrMCA9IGNsazsKLSAgLy9NdXggc3RhdHVzIGFuZCBjb250cm9sIHJlZ2lzdGVycyB0byB0aGUgcmVhZGRhdGEgb3V0cHV0IHVzaW5nIGFkZHJlc3MgYXMgc2VsZWN0Ci0gIGFzc2lnbiByZWFkZGF0YSA9IChhZGRyZXNzWzBdID09IDApPyBzdGF0dXNfcmVnX291dCA6Ci0gICAgKHtjb250cm9sX3JlZ19vdXRbMTUgOiAyXSwgfmNvbnRyb2xfcmVnX291dFsxXSwgY29udHJvbF9yZWdfb3V0WzBdfSApOwotCi0gIC8vU3RhdHVzIHJlZ2lzdGVyIC0gUmVhZC1Pbmx5Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGF0dXNfcmVnX291dCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgc3RhdHVzX3JlZ19vdXQgPD0gc3RhdHVzX3JlZ19pbjsKLSAgICBlbmQKLQotCi0gIC8vQ29udHJvbCByZWdpc3RlciAtIFIvVwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY29udHJvbF9yZWdfb3V0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChjb250cm9sX3JlZ19lbikKLSAgICAgICAgICBjb250cm9sX3JlZ19vdXQgPD0ge2NvbnRyb2xfcmVnX2luWzE1IDogMl0sIH5jb250cm9sX3JlZ19pblsxXSwgY29udHJvbF9yZWdfaW5bMF19OwotICAgIGVuZAotCi0KLSAgYXNzaWduIGNvbnRyb2xfcmVnX2luID0gd3JpdGVkYXRhOwotICBhc3NpZ24gY29udHJvbF9yZWdfZW4gPSAoYWRkcmVzcyA9PSAzJ2IwMDEpICYmIHdyaXRlICYmIGNoaXBzZWxlY3Q7Ci0gIC8vczEsIHdoaWNoIGlzIGFuIGVfYXZhbG9uX3NsYXZlCi0gIGFsdHBsbHBsbCB0aGVfcGxsCi0gICAgKAotICAgICAgLmMwIChjMCksCi0gICAgICAuYzEgKGMxKSwKLSAgICAgIC5jMiAoYzIpLAotICAgICAgLmluY2xrMCAoaW5jbGswKQotICAgICk7Ci0KLQotCi1lbmRtb2R1bGUKLQotCi0vKiBTTGxpbmUgMjA0NzYgImN1c3RvbV9kbWEudiIgMiAqLwotLyogU0xsaW5lIDEgImFsdHBsbHBsbC52IiAxICovCi0vLyBtZWdhZnVuY3Rpb24gd2l6YXJkOiAlQUxUUExMJQotLy8gR0VORVJBVElPTjogU1RBTkRBUkQKLS8vIFZFUlNJT046IFdNMS4wCi0vLyBNT0RVTEU6IGFsdHBsbCAKLQotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyBGaWxlIE5hbWU6IGFsdHBsbHBsbC52Ci0vLyBNZWdhZnVuY3Rpb24gTmFtZShzKToKLS8vIAkJCWFsdHBsbAotLy8KLS8vIFNpbXVsYXRpb24gTGlicmFyeSBGaWxlcyhzKToKLS8vIAkJCWFsdGVyYV9tZgotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS8vIFRISVMgSVMgQSBXSVpBUkQtR0VORVJBVEVEIEZJTEUuIERPIE5PVCBFRElUIFRISVMgRklMRSEKLS8vCi0vLyA5LjEgQnVpbGQgMzQ1IDAyLzI0LzIwMTAgU1AgMiBTSiBGdWxsIFZlcnNpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0KLS8vQ29weXJpZ2h0IChDKSAxOTkxLTIwMTAgQWx0ZXJhIENvcnBvcmF0aW9uCi0vL1lvdXIgdXNlIG9mIEFsdGVyYSBDb3Jwb3JhdGlvbidzIGRlc2lnbiB0b29scywgbG9naWMgZnVuY3Rpb25zIAotLy9hbmQgb3RoZXIgc29mdHdhcmUgYW5kIHRvb2xzLCBhbmQgaXRzIEFNUFAgcGFydG5lciBsb2dpYyAKLS8vZnVuY3Rpb25zLCBhbmQgYW55IG91dHB1dCBmaWxlcyBmcm9tIGFueSBvZiB0aGUgZm9yZWdvaW5nIAotLy8oaW5jbHVkaW5nIGRldmljZSBwcm9ncmFtbWluZyBvciBzaW11bGF0aW9uIGZpbGVzKSwgYW5kIGFueSAKLS8vYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIGFyZSBleHByZXNzbHkgc3ViamVjdCAKLS8vdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBBbHRlcmEgUHJvZ3JhbSBMaWNlbnNlIAotLy9TdWJzY3JpcHRpb24gQWdyZWVtZW50LCBBbHRlcmEgTWVnYUNvcmUgRnVuY3Rpb24gTGljZW5zZSAKLS8vQWdyZWVtZW50LCBvciBvdGhlciBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50LCBpbmNsdWRpbmcsIAotLy93aXRob3V0IGxpbWl0YXRpb24sIHRoYXQgeW91ciB1c2UgaXMgZm9yIHRoZSBzb2xlIHB1cnBvc2Ugb2YgCi0vL3Byb2dyYW1taW5nIGxvZ2ljIGRldmljZXMgbWFudWZhY3R1cmVkIGJ5IEFsdGVyYSBhbmQgc29sZCBieSAKLS8vQWx0ZXJhIG9yIGl0cyBhdXRob3JpemVkIGRpc3RyaWJ1dG9ycy4gIFBsZWFzZSByZWZlciB0byB0aGUgCi0vL2FwcGxpY2FibGUgYWdyZWVtZW50IGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLQotLy8gc3lub3BzeXMgdHJhbnNsYXRlX29mZgotYHRpbWVzY2FsZSAxIHBzIC8gMSBwcwotLy8gc3lub3BzeXMgdHJhbnNsYXRlX29uCi1tb2R1bGUgYWx0cGxscGxsICgKLQlpbmNsazAsCi0JYzAsCi0JYzEsCi0JYzIpOwotCi0JaW5wdXQJICBpbmNsazA7Ci0Jb3V0cHV0CSAgYzA7Ci0Jb3V0cHV0CSAgYzE7Ci0Jb3V0cHV0CSAgYzI7Ci0KLQl3aXJlIFs1OjBdIHN1Yl93aXJlMDsKLQl3aXJlIFswOjBdIHN1Yl93aXJlNiA9IDEnaDA7Ci0Jd2lyZSBbMjoyXSBzdWJfd2lyZTMgPSBzdWJfd2lyZTBbMjoyXTsKLQl3aXJlIFsxOjFdIHN1Yl93aXJlMiA9IHN1Yl93aXJlMFsxOjFdOwotCXdpcmUgWzA6MF0gc3ViX3dpcmUxID0gc3ViX3dpcmUwWzA6MF07Ci0Jd2lyZSAgYzAgPSBzdWJfd2lyZTE7Ci0Jd2lyZSAgYzEgPSBzdWJfd2lyZTI7Ci0Jd2lyZSAgYzIgPSBzdWJfd2lyZTM7Ci0Jd2lyZSAgc3ViX3dpcmU0ID0gaW5jbGswOwotCXdpcmUgWzE6MF0gc3ViX3dpcmU1ID0ge3N1Yl93aXJlNiwgc3ViX3dpcmU0fTsKLQotCWFsdHBsbAlhbHRwbGxfY29tcG9uZW50ICgKLQkJCQkuaW5jbGsgKHN1Yl93aXJlNSksCi0JCQkJLmNsayAoc3ViX3dpcmUwKSwKLQkJCQkuYWN0aXZlY2xvY2sgKCksCi0JCQkJLmFyZXNldCAoMSdiMCksCi0JCQkJLmNsa2JhZCAoKSwKLQkJCQkuY2xrZW5hICh7NnsxJ2IxfX0pLAotCQkJCS5jbGtsb3NzICgpLAotCQkJCS5jbGtzd2l0Y2ggKDEnYjApLAotCQkJCS5jb25maWd1cGRhdGUgKDEnYjApLAotCQkJCS5lbmFibGUwICgpLAotCQkJCS5lbmFibGUxICgpLAotCQkJCS5leHRjbGsgKCksCi0JCQkJLmV4dGNsa2VuYSAoezR7MSdiMX19KSwKLQkJCQkuZmJpbiAoMSdiMSksCi0JCQkJLmZibWltaWNiaWRpciAoKSwKLQkJCQkuZmJvdXQgKCksCi0JCQkJLmZyZWYgKCksCi0JCQkJLmljZHJjbGsgKCksCi0JCQkJLmxvY2tlZCAoKSwKLQkJCQkucGZkZW5hICgxJ2IxKSwKLQkJCQkucGhhc2Vjb3VudGVyc2VsZWN0ICh7NHsxJ2IxfX0pLAotCQkJCS5waGFzZWRvbmUgKCksCi0JCQkJLnBoYXNlc3RlcCAoMSdiMSksCi0JCQkJLnBoYXNldXBkb3duICgxJ2IxKSwKLQkJCQkucGxsZW5hICgxJ2IxKSwKLQkJCQkuc2NhbmFjbHIgKDEnYjApLAotCQkJCS5zY2FuY2xrICgxJ2IwKSwKLQkJCQkuc2NhbmNsa2VuYSAoMSdiMSksCi0JCQkJLnNjYW5kYXRhICgxJ2IwKSwKLQkJCQkuc2NhbmRhdGFvdXQgKCksCi0JCQkJLnNjYW5kb25lICgpLAotCQkJCS5zY2FucmVhZCAoMSdiMCksCi0JCQkJLnNjYW53cml0ZSAoMSdiMCksCi0JCQkJLnNjbGtvdXQwICgpLAotCQkJCS5zY2xrb3V0MSAoKSwKLQkJCQkudmNvb3ZlcnJhbmdlICgpLAotCQkJCS52Y291bmRlcnJhbmdlICgpKTsKLQlkZWZwYXJhbQotCQlhbHRwbGxfY29tcG9uZW50LmJhbmR3aWR0aF90eXBlID0gIkFVVE8iLAotCQlhbHRwbGxfY29tcG9uZW50LmNsazBfZGl2aWRlX2J5ID0gMSwKLQkJYWx0cGxsX2NvbXBvbmVudC5jbGswX2R1dHlfY3ljbGUgPSA1MCwKLQkJYWx0cGxsX2NvbXBvbmVudC5jbGswX211bHRpcGx5X2J5ID0gMiwKLQkJYWx0cGxsX2NvbXBvbmVudC5jbGswX3BoYXNlX3NoaWZ0ID0gIjAiLAotCQlhbHRwbGxfY29tcG9uZW50LmNsazFfZGl2aWRlX2J5ID0gMSwKLQkJYWx0cGxsX2NvbXBvbmVudC5jbGsxX2R1dHlfY3ljbGUgPSA1MCwKLQkJYWx0cGxsX2NvbXBvbmVudC5jbGsxX211bHRpcGx5X2J5ID0gMiwKLQkJYWx0cGxsX2NvbXBvbmVudC5jbGsxX3BoYXNlX3NoaWZ0ID0gIi0zMzgwIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5jbGsyX2RpdmlkZV9ieSA9IDEsCi0JCWFsdHBsbF9jb21wb25lbnQuY2xrMl9kdXR5X2N5Y2xlID0gNTAsCi0JCWFsdHBsbF9jb21wb25lbnQuY2xrMl9tdWx0aXBseV9ieSA9IDIsCi0JCWFsdHBsbF9jb21wb25lbnQuY2xrMl9waGFzZV9zaGlmdCA9ICI3NTAwIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5jb21wZW5zYXRlX2Nsb2NrID0gIkNMSzAiLAotCQlhbHRwbGxfY29tcG9uZW50LmluY2xrMF9pbnB1dF9mcmVxdWVuY3kgPSAyMDAwMCwKLQkJYWx0cGxsX2NvbXBvbmVudC5pbnRlbmRlZF9kZXZpY2VfZmFtaWx5ID0gIlN0cmF0aXggSUkiLAotCQlhbHRwbGxfY29tcG9uZW50LmxwbV90eXBlID0gImFsdHBsbCIsCi0JCWFsdHBsbF9jb21wb25lbnQub3BlcmF0aW9uX21vZGUgPSAiTk9STUFMIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wbGxfdHlwZSA9ICJBVVRPIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X2FjdGl2ZWNsb2NrID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X2FyZXNldCA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9jbGtiYWQwID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X2Nsa2JhZDEgPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfY2xrbG9zcyA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9jbGtzd2l0Y2ggPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfY29uZmlndXBkYXRlID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X2ZiaW4gPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfaW5jbGswID0gIlBPUlRfVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9pbmNsazEgPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfbG9ja2VkID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X3BmZGVuYSA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9waGFzZWNvdW50ZXJzZWxlY3QgPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfcGhhc2Vkb25lID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X3BoYXNlc3RlcCA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9waGFzZXVwZG93biA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9wbGxlbmEgPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfc2NhbmFjbHIgPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfc2NhbmNsayA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9zY2FuY2xrZW5hID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X3NjYW5kYXRhID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X3NjYW5kYXRhb3V0ID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X3NjYW5kb25lID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X3NjYW5yZWFkID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X3NjYW53cml0ZSA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9jbGswID0gIlBPUlRfVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9jbGsxID0gIlBPUlRfVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9jbGsyID0gIlBPUlRfVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9jbGszID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X2NsazQgPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfY2xrNSA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9jbGtlbmEwID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X2Nsa2VuYTEgPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfY2xrZW5hMiA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9jbGtlbmEzID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X2Nsa2VuYTQgPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfY2xrZW5hNSA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9lbmFibGUwID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X2VuYWJsZTEgPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfZXh0Y2xrMCA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9leHRjbGsxID0gIlBPUlRfVU5VU0VEIiwKLQkJYWx0cGxsX2NvbXBvbmVudC5wb3J0X2V4dGNsazIgPSAiUE9SVF9VTlVTRUQiLAotCQlhbHRwbGxfY29tcG9uZW50LnBvcnRfZXh0Y2xrMyA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9zY2xrb3V0MCA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQucG9ydF9zY2xrb3V0MSA9ICJQT1JUX1VOVVNFRCIsCi0JCWFsdHBsbF9jb21wb25lbnQuc3ByZWFkX2ZyZXF1ZW5jeSA9IDA7Ci0KLQotZW5kbW9kdWxlCi0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gQ05YIGZpbGUgcmV0cmlldmFsIGluZm8KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IEFDVElWRUNMS19DSEVDSyBTVFJJTkcgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogQkFORFdJRFRIIFNUUklORyAiMS4wMDAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogQkFORFdJRFRIX0ZFQVRVUkVfRU5BQkxFRCBTVFJJTkcgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogQkFORFdJRFRIX0ZSRVFfVU5JVCBTVFJJTkcgIk1IeiIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBCQU5EV0lEVEhfUFJFU0VUIFNUUklORyAiTG93IgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IEJBTkRXSURUSF9VU0VfQVVUTyBTVFJJTkcgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogQkFORFdJRFRIX1VTRV9DVVNUT00gU1RSSU5HICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IEJBTkRXSURUSF9VU0VfUFJFU0VUIFNUUklORyAiMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBDTEtCQURfU1dJVENIT1ZFUl9DSEVDSyBTVFJJTkcgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogQ0xLTE9TU19DSEVDSyBTVFJJTkcgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogQ0xLU1dJVENIX0NIRUNLIFNUUklORyAiMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBDTlhfTk9fQ09NUEVOU0FURV9SQURJTyBTVFJJTkcgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogQ1JFQVRFX0NMS0JBRF9DSEVDSyBTVFJJTkcgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogQ1JFQVRFX0lOQ0xLMV9DSEVDSyBTVFJJTkcgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogQ1VSX0RFRElDQVRFRF9DTEsgU1RSSU5HICJjMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBDVVJfRkJJTl9DTEsgU1RSSU5HICJlMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBERVZJQ0VfU1BFRURfR1JBREUgU1RSSU5HICIzIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IERJVl9GQUNUT1IwIE5VTUVSSUMgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogRElWX0ZBQ1RPUjEgTlVNRVJJQyAiMSIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBESVZfRkFDVE9SMiBOVU1FUklDICIxIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IERVVFlfQ1lDTEUwIFNUUklORyAiNTAuMDAwMDAwMDAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogRFVUWV9DWUNMRTEgU1RSSU5HICI1MC4wMDAwMDAwMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBEVVRZX0NZQ0xFMiBTVFJJTkcgIjUwLjAwMDAwMDAwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IEVGRl9PVVRQVVRfRlJFUV9WQUxVRTAgU1RSSU5HICIxMDAuMDAwMDAwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IEVGRl9PVVRQVVRfRlJFUV9WQUxVRTEgU1RSSU5HICIxMDAuMDAwMDAwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IEVGRl9PVVRQVVRfRlJFUV9WQUxVRTIgU1RSSU5HICIxMDAuMDAwMDAwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IEVYUExJQ0lUX1NXSVRDSE9WRVJfQ09VTlRFUiBTVFJJTkcgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogRVhUX0ZFRURCQUNLX1JBRElPIFNUUklORyAiMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBHTE9DS0VEX0NPVU5URVJfRURJVF9DSEFOR0VEIFNUUklORyAiMSIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBHTE9DS0VEX0ZFQVRVUkVfRU5BQkxFRCBTVFJJTkcgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogR0xPQ0tFRF9NT0RFX0NIRUNLIFNUUklORyAiMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBHTE9DS19DT1VOVEVSX0VESVQgTlVNRVJJQyAiMTA0ODU3NSIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBIQVNfTUFOVUFMX1NXSVRDSE9WRVIgU1RSSU5HICIxIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IElOQ0xLMF9GUkVRX0VESVQgU1RSSU5HICI1MC4wMDAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogSU5DTEswX0ZSRVFfVU5JVF9DT01CTyBTVFJJTkcgIk1IeiIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBJTkNMSzFfRlJFUV9FRElUIFNUUklORyAiMTAwLjAwMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBJTkNMSzFfRlJFUV9FRElUX0NIQU5HRUQgU1RSSU5HICIxIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IElOQ0xLMV9GUkVRX1VOSVRfQ0hBTkdFRCBTVFJJTkcgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogSU5DTEsxX0ZSRVFfVU5JVF9DT01CTyBTVFJJTkcgIk1IeiIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBJTlRFTkRFRF9ERVZJQ0VfRkFNSUxZIFNUUklORyAiU3RyYXRpeCBJSSIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBJTlRfRkVFREJBQ0tfX01PREVfUkFESU8gU1RSSU5HICIxIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IExPQ0tFRF9PVVRQVVRfQ0hFQ0sgU1RSSU5HICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IExPTkdfU0NBTl9SQURJTyBTVFJJTkcgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogTFZEU19NT0RFX0RBVEFfUkFURSBTVFJJTkcgIjE1MC4wMDAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogTFZEU19NT0RFX0RBVEFfUkFURV9ESVJUWSBOVU1FUklDICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IExWRFNfUEhBU0VfU0hJRlRfVU5JVDAgU1RSSU5HICJwcyIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBMVkRTX1BIQVNFX1NISUZUX1VOSVQxIFNUUklORyAicHMiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogTFZEU19QSEFTRV9TSElGVF9VTklUMiBTVFJJTkcgInBzIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IE1JR19ERVZJQ0VfU1BFRURfR1JBREUgU1RSSU5HICJBbnkiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogTVVMVF9GQUNUT1IwIE5VTUVSSUMgIjIiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogTVVMVF9GQUNUT1IxIE5VTUVSSUMgIjIiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogTVVMVF9GQUNUT1IyIE5VTUVSSUMgIjIiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogTk9STUFMX01PREVfUkFESU8gU1RSSU5HICIxIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IE9VVFBVVF9GUkVRMCBTVFJJTkcgIjEwMC4wMDAwMDAwMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBPVVRQVVRfRlJFUTEgU1RSSU5HICIxMDAuMDAwMDAwMDAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogT1VUUFVUX0ZSRVEyIFNUUklORyAiMTAwLjAwMDAwMDAwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IE9VVFBVVF9GUkVRX01PREUwIFNUUklORyAiMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBPVVRQVVRfRlJFUV9NT0RFMSBTVFJJTkcgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogT1VUUFVUX0ZSRVFfTU9ERTIgU1RSSU5HICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IE9VVFBVVF9GUkVRX1VOSVQwIFNUUklORyAiTUh6IgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IE9VVFBVVF9GUkVRX1VOSVQxIFNUUklORyAiTUh6IgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IE9VVFBVVF9GUkVRX1VOSVQyIFNUUklORyAiTUh6IgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFBIQVNFX1JFQ09ORklHX0ZFQVRVUkVfRU5BQkxFRCBTVFJJTkcgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogUEhBU0VfUkVDT05GSUdfSU5QVVRTX0NIRUNLIFNUUklORyAiMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBQSEFTRV9TSElGVDAgU1RSSU5HICIwLjAwMDAwMDAwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFBIQVNFX1NISUZUMSBTVFJJTkcgIi0zLjM4MDAwMDAwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFBIQVNFX1NISUZUMiBTVFJJTkcgIjI3MC4wMDAwMDAwMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBQSEFTRV9TSElGVF9TVEVQX0VOQUJMRURfQ0hFQ0sgU1RSSU5HICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFBIQVNFX1NISUZUX1VOSVQwIFNUUklORyAicHMiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogUEhBU0VfU0hJRlRfVU5JVDEgU1RSSU5HICJucyIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBQSEFTRV9TSElGVF9VTklUMiBTVFJJTkcgImRlZyIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBQTExfQURWQU5DRURfUEFSQU1fQ0hFQ0sgU1RSSU5HICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFBMTF9BUkVTRVRfQ0hFQ0sgU1RSSU5HICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFBMTF9BVVRPUExMX0NIRUNLIE5VTUVSSUMgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogUExMX0VOQV9DSEVDSyBTVFJJTkcgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogUExMX0VOSFBMTF9DSEVDSyBOVU1FUklDICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFBMTF9GQVNUUExMX0NIRUNLIE5VTUVSSUMgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogUExMX0ZCTUlNSUNfQ0hFQ0sgU1RSSU5HICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFBMTF9MVkRTX1BMTF9DSEVDSyBOVU1FUklDICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFBMTF9QRkRFTkFfQ0hFQ0sgU1RSSU5HICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFBMTF9UQVJHRVRfSEFSQ09QWV9DSEVDSyBOVU1FUklDICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFBSSU1BUllfQ0xLX0NPTUJPIFNUUklORyAiaW5jbGswIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFJFQ09ORklHX0ZJTEUgU1RSSU5HICJhbHRwbGxwbGwubWlmIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFNBQ05fSU5QVVRTX0NIRUNLIFNUUklORyAiMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBTQ0FOX0ZFQVRVUkVfRU5BQkxFRCBTVFJJTkcgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogU0VMRl9SRVNFVF9MT0NLX0xPU1MgU1RSSU5HICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFNIT1JUX1NDQU5fUkFESU8gU1RSSU5HICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFNQUkVBRF9GRUFUVVJFX0VOQUJMRUQgU1RSSU5HICIxIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFNQUkVBRF9GUkVRIFNUUklORyAiNTAuMDAwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFNQUkVBRF9GUkVRX1VOSVQgU1RSSU5HICJLSHoiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogU1BSRUFEX1BFUkNFTlQgU1RSSU5HICIwLjUwMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBTUFJFQURfVVNFIFNUUklORyAiMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBTUkNfU1lOQ0hfQ09NUF9SQURJTyBTVFJJTkcgIjAiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogU1RJQ0tZX0NMSzAgU1RSSU5HICIxIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFNUSUNLWV9DTEsxIFNUUklORyAiMSIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBTVElDS1lfQ0xLMiBTVFJJTkcgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogU1dJVENIT1ZFUl9DT1VOVF9FRElUIE5VTUVSSUMgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogU1dJVENIT1ZFUl9GRUFUVVJFX0VOQUJMRUQgU1RSSU5HICIxIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFNZTlRIX1dSQVBQRVJfR0VOX1BPU1RGSVggU1RSSU5HICIwIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFVTRV9DTEswIFNUUklORyAiMSIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBVU0VfQ0xLMSBTVFJJTkcgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogUFJJVkFURTogVVNFX0NMSzIgU1RSSU5HICIxIgotLy8gUmV0cmlldmFsIGluZm86IFBSSVZBVEU6IFVTRV9NSUxfU1BFRURfR1JBREUgTlVNRVJJQyAiMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBQUklWQVRFOiBaRVJPX0RFTEFZX1JBRElPIFNUUklORyAiMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBMSUJSQVJZOiBhbHRlcmFfbWYgYWx0ZXJhX21mLmFsdGVyYV9tZl9jb21wb25lbnRzLmFsbAotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBCQU5EV0lEVEhfVFlQRSBTVFJJTkcgIkFVVE8iCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IENMSzBfRElWSURFX0JZIE5VTUVSSUMgIjEiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IENMSzBfRFVUWV9DWUNMRSBOVU1FUklDICI1MCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogQ0xLMF9NVUxUSVBMWV9CWSBOVU1FUklDICIyIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBDTEswX1BIQVNFX1NISUZUIFNUUklORyAiMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogQ0xLMV9ESVZJREVfQlkgTlVNRVJJQyAiMSIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogQ0xLMV9EVVRZX0NZQ0xFIE5VTUVSSUMgIjUwIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBDTEsxX01VTFRJUExZX0JZIE5VTUVSSUMgIjIiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IENMSzFfUEhBU0VfU0hJRlQgU1RSSU5HICItMzM4MCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogQ0xLMl9ESVZJREVfQlkgTlVNRVJJQyAiMSIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogQ0xLMl9EVVRZX0NZQ0xFIE5VTUVSSUMgIjUwIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBDTEsyX01VTFRJUExZX0JZIE5VTUVSSUMgIjIiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IENMSzJfUEhBU0VfU0hJRlQgU1RSSU5HICI3NTAwIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBDT01QRU5TQVRFX0NMT0NLIFNUUklORyAiQ0xLMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogSU5DTEswX0lOUFVUX0ZSRVFVRU5DWSBOVU1FUklDICIyMDAwMCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogSU5URU5ERURfREVWSUNFX0ZBTUlMWSBTVFJJTkcgIlN0cmF0aXggSUkiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IExQTV9UWVBFIFNUUklORyAiYWx0cGxsIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBPUEVSQVRJT05fTU9ERSBTVFJJTkcgIk5PUk1BTCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUExMX1RZUEUgU1RSSU5HICJBVVRPIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX0FDVElWRUNMT0NLIFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfQVJFU0VUIFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfQ0xLQkFEMCBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX0NMS0JBRDEgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9DTEtMT1NTIFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfQ0xLU1dJVENIIFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfQ09ORklHVVBEQVRFIFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfRkJJTiBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX0lOQ0xLMCBTVFJJTkcgIlBPUlRfVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9JTkNMSzEgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9MT0NLRUQgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9QRkRFTkEgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9QSEFTRUNPVU5URVJTRUxFQ1QgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9QSEFTRURPTkUgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9QSEFTRVNURVAgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9QSEFTRVVQRE9XTiBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX1BMTEVOQSBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX1NDQU5BQ0xSIFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfU0NBTkNMSyBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX1NDQU5DTEtFTkEgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9TQ0FOREFUQSBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX1NDQU5EQVRBT1VUIFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfU0NBTkRPTkUgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9TQ0FOUkVBRCBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX1NDQU5XUklURSBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX2NsazAgU1RSSU5HICJQT1JUX1VTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfY2xrMSBTVFJJTkcgIlBPUlRfVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9jbGsyIFNUUklORyAiUE9SVF9VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX2NsazMgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9jbGs0IFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfY2xrNSBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX2Nsa2VuYTAgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9jbGtlbmExIFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfY2xrZW5hMiBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX2Nsa2VuYTMgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9jbGtlbmE0IFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfY2xrZW5hNSBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX2VuYWJsZTAgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9lbmFibGUxIFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfZXh0Y2xrMCBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX2V4dGNsazEgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogUE9SVF9leHRjbGsyIFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfZXh0Y2xrMyBTVFJJTkcgIlBPUlRfVU5VU0VEIgotLy8gUmV0cmlldmFsIGluZm86IENPTlNUQU5UOiBQT1JUX3NjbGtvdXQwIFNUUklORyAiUE9SVF9VTlVTRUQiCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OU1RBTlQ6IFBPUlRfc2Nsa291dDEgU1RSSU5HICJQT1JUX1VOVVNFRCIKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05TVEFOVDogU1BSRUFEX0ZSRVFVRU5DWSBOVU1FUklDICIwIgotLy8gUmV0cmlldmFsIGluZm86IFVTRURfUE9SVDogQGNsayAwIDAgNiAwIE9VVFBVVF9DTEtfRVhUIFZDQyAiQGNsa1s1Li4wXSIKLS8vIFJldHJpZXZhbCBpbmZvOiBVU0VEX1BPUlQ6IEBleHRjbGsgMCAwIDQgMCBPVVRQVVRfQ0xLX0VYVCBWQ0MgIkBleHRjbGtbMy4uMF0iCi0vLyBSZXRyaWV2YWwgaW5mbzogVVNFRF9QT1JUOiBjMCAwIDAgMCAwIE9VVFBVVF9DTEtfRVhUIFZDQyAiYzAiCi0vLyBSZXRyaWV2YWwgaW5mbzogVVNFRF9QT1JUOiBjMSAwIDAgMCAwIE9VVFBVVF9DTEtfRVhUIFZDQyAiYzEiCi0vLyBSZXRyaWV2YWwgaW5mbzogVVNFRF9QT1JUOiBjMiAwIDAgMCAwIE9VVFBVVF9DTEtfRVhUIFZDQyAiYzIiCi0vLyBSZXRyaWV2YWwgaW5mbzogVVNFRF9QT1JUOiBpbmNsazAgMCAwIDAgMCBJTlBVVF9DTEtfRVhUIEdORCAiaW5jbGswIgotLy8gUmV0cmlldmFsIGluZm86IENPTk5FQ1Q6IEBpbmNsayAwIDAgMSAwIGluY2xrMCAwIDAgMCAwCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OTkVDVDogYzAgMCAwIDAgMCBAY2xrIDAgMCAxIDAKLS8vIFJldHJpZXZhbCBpbmZvOiBDT05ORUNUOiBjMSAwIDAgMCAwIEBjbGsgMCAwIDEgMQotLy8gUmV0cmlldmFsIGluZm86IENPTk5FQ1Q6IGMyIDAgMCAwIDAgQGNsayAwIDAgMSAyCi0vLyBSZXRyaWV2YWwgaW5mbzogQ09OTkVDVDogQGluY2xrIDAgMCAxIDEgR05EIDAgMCAwIDAKLS8vIFJldHJpZXZhbCBpbmZvOiBHRU5fRklMRTogVFlQRV9OT1JNQUwgYWx0cGxscGxsLnYgVFJVRQotLy8gUmV0cmlldmFsIGluZm86IEdFTl9GSUxFOiBUWVBFX05PUk1BTCBhbHRwbGxwbGwucHBmIFRSVUUKLS8vIFJldHJpZXZhbCBpbmZvOiBHRU5fRklMRTogVFlQRV9OT1JNQUwgYWx0cGxscGxsLmluYyBUUlVFCi0vLyBSZXRyaWV2YWwgaW5mbzogR0VOX0ZJTEU6IFRZUEVfTk9STUFMIGFsdHBsbHBsbC5jbXAgRkFMU0UKLS8vIFJldHJpZXZhbCBpbmZvOiBHRU5fRklMRTogVFlQRV9OT1JNQUwgYWx0cGxscGxsLmJzZiBGQUxTRQotLy8gUmV0cmlldmFsIGluZm86IEdFTl9GSUxFOiBUWVBFX05PUk1BTCBhbHRwbGxwbGxfaW5zdC52IEZBTFNFCi0vLyBSZXRyaWV2YWwgaW5mbzogR0VOX0ZJTEU6IFRZUEVfTk9STUFMIGFsdHBsbHBsbF9iYi52IFRSVUUKLS8vIFJldHJpZXZhbCBpbmZvOiBMSUJfRklMRTogYWx0ZXJhX21mCi0KLS8qIFNMbGluZSAyMDQ3NyAiY3VzdG9tX2RtYS52IiAyICovCi0vKiBTTGxpbmUgMSAiY3VzdG9tX2RtYV9idXJzdF8yLnYiIDEgKi8KLS8vTGVnYWwgTm90aWNlOiAoQykyMDEwIEFsdGVyYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFlvdXIKLS8vdXNlIG9mIEFsdGVyYSBDb3Jwb3JhdGlvbidzIGRlc2lnbiB0b29scywgbG9naWMgZnVuY3Rpb25zIGFuZCBvdGhlcgotLy9zb2Z0d2FyZSBhbmQgdG9vbHMsIGFuZCBpdHMgQU1QUCBwYXJ0bmVyIGxvZ2ljIGZ1bmN0aW9ucywgYW5kIGFueQotLy9vdXRwdXQgZmlsZXMgYW55IG9mIHRoZSBmb3JlZ29pbmcgKGluY2x1ZGluZyBkZXZpY2UgcHJvZ3JhbW1pbmcgb3IKLS8vc2ltdWxhdGlvbiBmaWxlcyksIGFuZCBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIGFyZQotLy9leHByZXNzbHkgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEFsdGVyYSBQcm9ncmFtCi0vL0xpY2Vuc2UgU3Vic2NyaXB0aW9uIEFncmVlbWVudCBvciBvdGhlciBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50LAotLy9pbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgdGhhdCB5b3VyIHVzZSBpcyBmb3IgdGhlIHNvbGUgcHVycG9zZQotLy9vZiBwcm9ncmFtbWluZyBsb2dpYyBkZXZpY2VzIG1hbnVmYWN0dXJlZCBieSBBbHRlcmEgYW5kIHNvbGQgYnkgQWx0ZXJhCi0vL29yIGl0cyBhdXRob3JpemVkIGRpc3RyaWJ1dG9ycy4gIFBsZWFzZSByZWZlciB0byB0aGUgYXBwbGljYWJsZQotLy9hZ3JlZW1lbnQgZm9yIGZ1cnRoZXIgZGV0YWlscy4KLQotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLWB0aW1lc2NhbGUgMW5zIC8gMXBzCi0vLyBzeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi0vLwotLy9CdXJzdCBhZGFwdGVyIHBhcmFtZXRlcnM6Ci0vL2FkYXB0ZXIgaXMgbWFzdGVyZWQgYnk6IGNwdS9kYXRhX21hc3RlcgotLy9hZGFwdGVyIG1hc3RlcnM6IHBpcGVsaW5lX2JyaWRnZS9zMQotLy9hc3BfZGVidWc6IDAKLS8vYnl0ZWFkZHJfd2lkdGg6IDE0Ci0vL2NlaWxfZGF0YV93aWR0aDogMzIKLS8vZGF0YV93aWR0aDogMzIKLS8vZGJzX3NoaWZ0OiAwCi0vL2Ric191cHN0cmVhbV9idXJzdGNvdW50X3dpZHRoOiA0Ci0vL2Rvd25zdHJlYW1fYWRkcl9zaGlmdDogMgotLy9kb3duc3RyZWFtX2J1cnN0Y291bnRfd2lkdGg6IDEKLS8vZG93bnN0cmVhbV9tYXhfYnVyc3Rjb3VudDogMQotLy9kb3duc3RyZWFtX3BpcGVsaW5lOiAxCi0vL2R5bmFtaWNfc2xhdmU6IDEKLS8vbWFzdGVyX2Fsd2F5c19idXJzdF9tYXhfYnVyc3Q6IDAKLS8vbWFzdGVyX2J1cnN0X29uX2J1cnN0X2JvdW5kYXJpZXNfb25seTogMQotLy9tYXN0ZXJfZGF0YV93aWR0aDogMzIKLS8vbWFzdGVyX2ludGVybGVhdmU6IDAKLS8vbWFzdGVyX2xpbmV3cmFwX2J1cnN0czogMAotLy9uYXRpdmVhZGRyX3dpZHRoOiAxMgotLy9zbGF2ZV9hbHdheXNfYnVyc3RfbWF4X2J1cnN0OiAwCi0vL3NsYXZlX2J1cnN0X29uX2J1cnN0X2JvdW5kYXJpZXNfb25seTogMAotLy9zbGF2ZV9pbnRlcmxlYXZlOiAwCi0vL3NsYXZlX2xpbmV3cmFwX2J1cnN0czogMAotLy91cHN0cmVhbV9idXJzdGNvdW50OiB1cHN0cmVhbV9idXJzdGNvdW50Ci0vL3Vwc3RyZWFtX2J1cnN0Y291bnRfd2lkdGg6IDQKLS8vdXBzdHJlYW1fbWF4X2J1cnN0Y291bnQ6IDgKLS8vemVyb19hZGRyZXNzX3dpZHRoOiAwCi0KLQotbW9kdWxlIGN1c3RvbV9kbWFfYnVyc3RfMiAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25zdHJlYW1fcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV93YWl0cmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX25hdGl2ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV93cml0ZWRhdGEsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3dhaXRyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgMTE6IDBdIHJlZ19kb3duc3RyZWFtX2FkZHJlc3M7Ci0gIG91dHB1dCAgWyAgMzogMF0gcmVnX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZTsKLSAgb3V0cHV0ICAgICAgICAgICByZWdfZG93bnN0cmVhbV9idXJzdGNvdW50OwotICBvdXRwdXQgIFsgIDM6IDBdIHJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gIG91dHB1dCAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIG91dHB1dCAgWyAxMTogMF0gcmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgb3V0cHV0ICAgICAgICAgICByZWdfZG93bnN0cmVhbV9yZWFkOwotICBvdXRwdXQgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlOwotICBvdXRwdXQgIFsgMzE6IDBdIHJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgb3V0cHV0ICBbIDMxOiAwXSB1cHN0cmVhbV9yZWFkZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICB1cHN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICBvdXRwdXQgICAgICAgICAgIHVwc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbIDMxOiAwXSBkb3duc3RyZWFtX3JlYWRkYXRhOwotICBpbnB1dCAgICAgICAgICAgIGRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgaW5wdXQgICAgICAgICAgICBkb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgWyAxMzogMF0gdXBzdHJlYW1fYWRkcmVzczsKLSAgaW5wdXQgICBbICAzOiAwXSB1cHN0cmVhbV9idXJzdGNvdW50OwotICBpbnB1dCAgIFsgIDM6IDBdIHVwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIGlucHV0ICAgICAgICAgICAgdXBzdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIGlucHV0ICAgWyAxMTogMF0gdXBzdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICB1cHN0cmVhbV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIHVwc3RyZWFtX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIHVwc3RyZWFtX3dyaXRlZGF0YTsKLQotICB3aXJlICAgIFsgIDI6IDBdIGFkZHJlc3Nfb2Zmc2V0OwotICByZWcgICAgICAgICAgICAgIGF0b21pY19jb3VudGVyOwotICB3aXJlICAgIFsgMTM6IDBdIGN1cnJlbnRfdXBzdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXJyZW50X3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VycmVudF91cHN0cmVhbV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGN1cnJlbnRfdXBzdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgWyAgMzogMF0gZGF0YV9jb3VudGVyOwotICB3aXJlICAgIFsgIDM6IDBdIGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICB3aXJlICAgIFsgMTE6IDBdIGRvd25zdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbIDEzOiAwXSBkb3duc3RyZWFtX2FkZHJlc3NfYmFzZTsKLSAgd2lyZSAgICBbICAzOiAwXSBkb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmU7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9idXJzdGNvdW50OwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fYnVyc3Rkb25lOwotICB3aXJlICAgIFsgIDM6IDBdIGRvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgIFsgMTE6IDBdIGRvd25zdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgcmVnICAgICAgICAgICAgICBkb3duc3RyZWFtX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV93cml0ZTsKLSAgcmVnICAgICAgICAgICAgICBkb3duc3RyZWFtX3dyaXRlX3JlZzsKLSAgd2lyZSAgICBbIDMxOiAwXSBkb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBlbmFibGVfc3RhdGVfY2hhbmdlOwotICB3aXJlICAgICAgICAgICAgIGZpZm9fZW1wdHk7Ci0gIHdpcmUgICAgICAgICAgICAgbWF4X2J1cnN0X3NpemU7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfYXRvbWljX2NvdW50ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfZmlmb19lbXB0eTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9zdGF0ZV9idXN5OwotICB3aXJlICAgICAgICAgICAgIHAxX3N0YXRlX2lkbGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGVuZGluZ19yZWdpc3Rlcl9lbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGVuZGluZ191cHN0cmVhbV9yZWFkOwotICByZWcgICAgICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fcmVhZF9yZWc7Ci0gIHdpcmUgICAgICAgICAgICAgcGVuZGluZ191cHN0cmVhbV93cml0ZTsKLSAgcmVnICAgICAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZzsKLSAgcmVnICAgICBbICAyOiAwXSByZWFkX2FkZHJlc3Nfb2Zmc2V0OwotICB3aXJlICAgICAgICAgICAgIHJlYWRfdXBkYXRlX2NvdW50OwotICB3aXJlICAgIFsgIDM6IDBdIHJlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHJlZyAgICAgWyAxMTogMF0gcmVnX2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgcmVnICAgICBbICAzOiAwXSByZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICByZWcgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHJlZyAgICAgWyAgMzogMF0gcmVnX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgcmVnICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgcmVnICAgICBbIDExOiAwXSByZWdfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICByZWcgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3JlYWQ7Ci0gIHJlZyAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgWyAzMTogMF0gcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotICByZWcgICAgIFsgIDM6IDBdIHJlZ2lzdGVyZWRfcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgcmVnICAgICBbIDEzOiAwXSByZWdpc3RlcmVkX3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIHJlZyAgICAgWyAgMzogMF0gcmVnaXN0ZXJlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICByZWcgICAgIFsgIDM6IDBdIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgcmVnICAgICBbIDExOiAwXSByZWdpc3RlcmVkX3Vwc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIHJlZyAgICAgICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9yZWFkOwotICByZWcgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhdGVfYnVzeTsKLSAgcmVnICAgICAgICAgICAgICBzdGF0ZV9pZGxlOwotICB3aXJlICAgICAgICAgICAgIHN5bmNfbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICBbICAzOiAwXSB0cmFuc2FjdGlvbnNfcmVtYWluaW5nOwotICByZWcgICAgIFsgIDM6IDBdIHRyYW5zYWN0aW9uc19yZW1haW5pbmdfcmVnOwotICB3aXJlICAgICAgICAgICAgIHVwZGF0ZV9jb3VudDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9idXJzdGRvbmU7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZF9ydW47Ci0gIHdpcmUgICAgWyAzMTogMF0gdXBzdHJlYW1fcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV93cml0ZV9ydW47Ci0gIHJlZyAgICAgWyAgMjogMF0gd3JpdGVfYWRkcmVzc19vZmZzZXQ7Ci0gIHdpcmUgICAgICAgICAgICAgd3JpdGVfdXBkYXRlX2NvdW50OwotICBhc3NpZ24gc3luY19uYXRpdmVhZGRyZXNzID0gfHVwc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIC8vZG93bnN0cmVhbSwgd2hpY2ggaXMgYW4gZV9hdmFsb25fbWFzdGVyCi0gIC8vdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfYXZhbG9uX3NsYXZlCi0gIGFzc2lnbiB1cHN0cmVhbV9idXJzdGRvbmUgPSBjdXJyZW50X3Vwc3RyZWFtX3JlYWQgPyAodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9PSBkb3duc3RyZWFtX2J1cnN0Y291bnQpICYgZG93bnN0cmVhbV9yZWFkICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QgOiAodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9PSAoYXRvbWljX2NvdW50ZXIgKyAxKSkgJiBkb3duc3RyZWFtX3dyaXRlICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGFzc2lnbiBwMV9hdG9taWNfY291bnRlciA9IGF0b21pY19jb3VudGVyICsgKGRvd25zdHJlYW1fcmVhZCA/IGRvd25zdHJlYW1fYnVyc3Rjb3VudCA6IDEpOwotICBhc3NpZ24gZG93bnN0cmVhbV9idXJzdGRvbmUgPSAoZG93bnN0cmVhbV9yZWFkIHwgZG93bnN0cmVhbV93cml0ZSkgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCAmIChwMV9hdG9taWNfY291bnRlciA9PSBkb3duc3RyZWFtX2J1cnN0Y291bnQpOwotICBhc3NpZ24gZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgPSBwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSA/IHJlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgOiByZWdpc3RlcmVkX3JlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGFzc2lnbiByZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50ID0gdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA8PSAwOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF9yZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDw9IHJlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gcDFfc3RhdGVfaWRsZSA9IHN0YXRlX2lkbGUgJiB+dXBzdHJlYW1fcmVhZCAmIH51cHN0cmVhbV93cml0ZSB8IHN0YXRlX2J1c3kgJiAoZGF0YV9jb3VudGVyID09IDApICYgcDFfZmlmb19lbXB0eSAmIH5wZW5kaW5nX3Vwc3RyZWFtX3JlYWQgJiB+cGVuZGluZ191cHN0cmVhbV93cml0ZTsKLSAgYXNzaWduIHAxX3N0YXRlX2J1c3kgPSBzdGF0ZV9pZGxlICYgKHVwc3RyZWFtX3JlYWQgfCB1cHN0cmVhbV93cml0ZSkgfCBzdGF0ZV9idXN5ICYgKH4oZGF0YV9jb3VudGVyID09IDApIHwgfnAxX2ZpZm9fZW1wdHkgfCBwZW5kaW5nX3Vwc3RyZWFtX3JlYWQgfCBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlKTsKLSAgYXNzaWduIGVuYWJsZV9zdGF0ZV9jaGFuZ2UgPSB+KGRvd25zdHJlYW1fcmVhZCB8IGRvd25zdHJlYW1fd3JpdGUpIHwgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnIDw9IDA7Ci0gICAgICBlbHNlIGlmICh1cHN0cmVhbV9yZWFkICYgc3RhdGVfaWRsZSkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnIDw9IC0xOwotICAgICAgZWxzZSBpZiAodXBzdHJlYW1fYnVyc3Rkb25lKQotICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fcmVhZF9yZWcgPD0gMDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZyA8PSAwOwotICAgICAgZWxzZSBpZiAodXBzdHJlYW1fYnVyc3Rkb25lKQotICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fd3JpdGVfcmVnIDw9IDA7Ci0gICAgICBlbHNlIGlmICh1cHN0cmVhbV93cml0ZSAmIChzdGF0ZV9pZGxlIHwgfnVwc3RyZWFtX3dhaXRyZXF1ZXN0KSkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZyA8PSAtMTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGF0ZV9pZGxlIDw9IDE7Ci0gICAgICBlbHNlIGlmIChlbmFibGVfc3RhdGVfY2hhbmdlKQotICAgICAgICAgIHN0YXRlX2lkbGUgPD0gcDFfc3RhdGVfaWRsZTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGF0ZV9idXN5IDw9IDA7Ci0gICAgICBlbHNlIGlmIChlbmFibGVfc3RhdGVfY2hhbmdlKQotICAgICAgICAgIHN0YXRlX2J1c3kgPD0gcDFfc3RhdGVfYnVzeTsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBwZW5kaW5nX3Vwc3RyZWFtX3JlYWQgPSBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnOwotICBhc3NpZ24gcGVuZGluZ191cHN0cmVhbV93cml0ZSA9IHBlbmRpbmdfdXBzdHJlYW1fd3JpdGVfcmVnICYgfnVwc3RyZWFtX2J1cnN0ZG9uZTsKLSAgYXNzaWduIHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlID0gc3RhdGVfaWRsZSB8ICgodXBzdHJlYW1fcmVhZCB8IHVwc3RyZWFtX3dyaXRlKSAmIH51cHN0cmVhbV93YWl0cmVxdWVzdCk7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3JlYWQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fcmVhZCA8PSB1cHN0cmVhbV9yZWFkOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fd3JpdGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fd3JpdGUgPD0gdXBzdHJlYW1fd3JpdGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9idXJzdGNvdW50IDw9IDA7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgPD0gdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2FkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYWRkcmVzcyA8PSB1cHN0cmVhbV9hZGRyZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fbmF0aXZlYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9uYXRpdmVhZGRyZXNzIDw9IHVwc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gY3VycmVudF91cHN0cmVhbV9yZWFkID0gcmVnaXN0ZXJlZF91cHN0cmVhbV9yZWFkICYgIWRvd25zdHJlYW1fd3JpdGU7Ci0gIGFzc2lnbiBjdXJyZW50X3Vwc3RyZWFtX3dyaXRlID0gcmVnaXN0ZXJlZF91cHN0cmVhbV93cml0ZTsKLSAgYXNzaWduIGN1cnJlbnRfdXBzdHJlYW1fYWRkcmVzcyA9IHJlZ2lzdGVyZWRfdXBzdHJlYW1fYWRkcmVzczsKLSAgYXNzaWduIGN1cnJlbnRfdXBzdHJlYW1fYnVyc3Rjb3VudCA9IHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlID8gdXBzdHJlYW1fYnVyc3Rjb3VudCA6IHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGF0b21pY19jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIGlmICgoZG93bnN0cmVhbV9yZWFkIHwgZG93bnN0cmVhbV93cml0ZSkgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBhdG9taWNfY291bnRlciA8PSBkb3duc3RyZWFtX2J1cnN0ZG9uZSA/IDAgOiBwMV9hdG9taWNfY291bnRlcjsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiByZWFkX3VwZGF0ZV9jb3VudCA9IGN1cnJlbnRfdXBzdHJlYW1fcmVhZCAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBhc3NpZ24gd3JpdGVfdXBkYXRlX2NvdW50ID0gY3VycmVudF91cHN0cmVhbV93cml0ZSAmIGRvd25zdHJlYW1fd3JpdGUgJiBkb3duc3RyZWFtX2J1cnN0ZG9uZTsKLSAgYXNzaWduIHVwZGF0ZV9jb3VudCA9IHJlYWRfdXBkYXRlX2NvdW50IHwgd3JpdGVfdXBkYXRlX2NvdW50OwotICBhc3NpZ24gdHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9IChzdGF0ZV9pZGxlICYgKHVwc3RyZWFtX3JlYWQgfCB1cHN0cmVhbV93cml0ZSkpID8gZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgOiB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZzsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHRyYW5zYWN0aW9uc19yZW1haW5pbmdfcmVnIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZyA8PSAoc3RhdGVfaWRsZSAmICh1cHN0cmVhbV9yZWFkIHwgdXBzdHJlYW1fd3JpdGUpKSA/IGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDogdXBkYXRlX2NvdW50ID8gdHJhbnNhY3Rpb25zX3JlbWFpbmluZ19yZWcgLSBkb3duc3RyZWFtX2J1cnN0Y291bnQgOiB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZzsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkYXRhX2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGRhdGFfY291bnRlciA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZCAmIH51cHN0cmVhbV93YWl0cmVxdWVzdCA/ICBkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA6IGRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCA/IGRhdGFfY291bnRlciAtIDEgOiBkYXRhX2NvdW50ZXI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbWF4X2J1cnN0X3NpemUgPSAxOwotICBhc3NpZ24gZG93bnN0cmVhbV9idXJzdGNvdW50ID0gKHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPiBtYXhfYnVyc3Rfc2l6ZSkgPyBtYXhfYnVyc3Rfc2l6ZSA6IHRyYW5zYWN0aW9uc19yZW1haW5pbmc7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgPSBjdXJyZW50X3Vwc3RyZWFtX3JlYWQgPyAoZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQpIDogZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICB3cml0ZV9hZGRyZXNzX29mZnNldCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgd3JpdGVfYWRkcmVzc19vZmZzZXQgPD0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3dyaXRlID8gMCA6ICgoZG93bnN0cmVhbV93cml0ZSAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ICYgZG93bnN0cmVhbV9idXJzdGRvbmUpKSA/IHdyaXRlX2FkZHJlc3Nfb2Zmc2V0ICsgZG93bnN0cmVhbV9idXJzdGNvdW50IDogd3JpdGVfYWRkcmVzc19vZmZzZXQ7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVhZF9hZGRyZXNzX29mZnNldCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgcmVhZF9hZGRyZXNzX29mZnNldCA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZCA/IDAgOiAoZG93bnN0cmVhbV9yZWFkICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpID8gcmVhZF9hZGRyZXNzX29mZnNldCArIGRvd25zdHJlYW1fYnVyc3Rjb3VudCA6IHJlYWRfYWRkcmVzc19vZmZzZXQ7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzID0gcmVnaXN0ZXJlZF91cHN0cmVhbV9uYXRpdmVhZGRyZXNzID4+IDI7Ci0gIGFzc2lnbiBhZGRyZXNzX29mZnNldCA9IGN1cnJlbnRfdXBzdHJlYW1fcmVhZCA/IHJlYWRfYWRkcmVzc19vZmZzZXQgOiB3cml0ZV9hZGRyZXNzX29mZnNldDsKLSAgYXNzaWduIGRvd25zdHJlYW1fYWRkcmVzc19iYXNlID0gY3VycmVudF91cHN0cmVhbV9hZGRyZXNzOwotICBhc3NpZ24gZG93bnN0cmVhbV9hZGRyZXNzID0gZG93bnN0cmVhbV9hZGRyZXNzX2Jhc2UgKyB7YWRkcmVzc19vZmZzZXQsIDInYjAwfTsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGRvd25zdHJlYW1fcmVhZCA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fcmVhZCB8IH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIGRvd25zdHJlYW1fcmVhZCA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZCA/IDEgOiAodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9PSBkb3duc3RyZWFtX2J1cnN0Y291bnQpID8gMCA6IGRvd25zdHJlYW1fcmVhZDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiB1cHN0cmVhbV9yZWFkZGF0YXZhbGlkID0gZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICBhc3NpZ24gdXBzdHJlYW1fcmVhZGRhdGEgPSBkb3duc3RyZWFtX3JlYWRkYXRhOwotICBhc3NpZ24gZmlmb19lbXB0eSA9IDE7Ci0gIGFzc2lnbiBwMV9maWZvX2VtcHR5ID0gMTsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGRvd25zdHJlYW1fd3JpdGVfcmVnIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93cml0ZV9yZWcgfCB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBkb3duc3RyZWFtX3dyaXRlX3JlZyA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fd3JpdGUgPyAxIDogKCh0cmFuc2FjdGlvbnNfcmVtYWluaW5nID09IGRvd25zdHJlYW1fYnVyc3Rjb3VudCkgJiBkb3duc3RyZWFtX2J1cnN0ZG9uZSkgPyAwIDogZG93bnN0cmVhbV93cml0ZV9yZWc7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9ieXRlZW5hYmxlIDw9IDQnYjExMTE7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2J5dGVlbmFibGUgPD0gdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBkb3duc3RyZWFtX3dyaXRlID0gZG93bnN0cmVhbV93cml0ZV9yZWcgJiB1cHN0cmVhbV93cml0ZSAmICFkb3duc3RyZWFtX3JlYWQ7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2J5dGVlbmFibGUgPSBkb3duc3RyZWFtX3dyaXRlX3JlZyA/IHVwc3RyZWFtX2J5dGVlbmFibGUgOiByZWdpc3RlcmVkX3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX3dyaXRlZGF0YSA9IHVwc3RyZWFtX3dyaXRlZGF0YTsKLSAgYXNzaWduIHVwc3RyZWFtX3JlYWRfcnVuID0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3JlYWQ7Ci0gIGFzc2lnbiB1cHN0cmVhbV93cml0ZV9ydW4gPSBzdGF0ZV9idXN5ICYgdXBzdHJlYW1fd3JpdGUgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCAmICFkb3duc3RyZWFtX3JlYWQ7Ci0gIGFzc2lnbiB1cHN0cmVhbV93YWl0cmVxdWVzdCA9ICh1cHN0cmVhbV9yZWFkIHwgY3VycmVudF91cHN0cmVhbV9yZWFkKSA/IH51cHN0cmVhbV9yZWFkX3J1biA6IGN1cnJlbnRfdXBzdHJlYW1fd3JpdGUgPyB+dXBzdHJlYW1fd3JpdGVfcnVuIDogMTsKLSAgYXNzaWduIGRvd25zdHJlYW1fZGVidWdhY2Nlc3MgPSB1cHN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FkZHJlc3MgPD0gZG93bnN0cmVhbV9hZGRyZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgPD0gZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQgPD0gZG93bnN0cmVhbV9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGUgPD0gZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2RlYnVnYWNjZXNzIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyA8PSBkb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MgPD0gZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3JlYWQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3JlYWQgPD0gZG93bnN0cmVhbV9yZWFkOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV93cml0ZSA8PSBkb3duc3RyZWFtX3dyaXRlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YSA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhIDw9IGRvd25zdHJlYW1fd3JpdGVkYXRhOwotICAgIGVuZAotCi0KLQotZW5kbW9kdWxlCi0KLQotLyogU0xsaW5lIDIwNDc4ICJjdXN0b21fZG1hLnYiIDIgKi8KLS8qIFNMbGluZSAxICJzeXNpZC52IiAxICovCi0vL0xlZ2FsIE5vdGljZTogKEMpMjAxMCBBbHRlcmEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBZb3VyCi0vL3VzZSBvZiBBbHRlcmEgQ29ycG9yYXRpb24ncyBkZXNpZ24gdG9vbHMsIGxvZ2ljIGZ1bmN0aW9ucyBhbmQgb3RoZXIKLS8vc29mdHdhcmUgYW5kIHRvb2xzLCBhbmQgaXRzIEFNUFAgcGFydG5lciBsb2dpYyBmdW5jdGlvbnMsIGFuZCBhbnkKLS8vb3V0cHV0IGZpbGVzIGFueSBvZiB0aGUgZm9yZWdvaW5nIChpbmNsdWRpbmcgZGV2aWNlIHByb2dyYW1taW5nIG9yCi0vL3NpbXVsYXRpb24gZmlsZXMpLCBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiBhcmUKLS8vZXhwcmVzc2x5IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBBbHRlcmEgUHJvZ3JhbQotLy9MaWNlbnNlIFN1YnNjcmlwdGlvbiBBZ3JlZW1lbnQgb3Igb3RoZXIgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudCwKLS8vaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIHRoYXQgeW91ciB1c2UgaXMgZm9yIHRoZSBzb2xlIHB1cnBvc2UKLS8vb2YgcHJvZ3JhbW1pbmcgbG9naWMgZGV2aWNlcyBtYW51ZmFjdHVyZWQgYnkgQWx0ZXJhIGFuZCBzb2xkIGJ5IEFsdGVyYQotLy9vciBpdHMgYXV0aG9yaXplZCBkaXN0cmlidXRvcnMuICBQbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2FibGUKLS8vYWdyZWVtZW50IGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi1gdGltZXNjYWxlIDFucyAvIDFwcwotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIHN5c2lkICgKLSAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICBhZGRyZXNzLAotCi0gICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgIHJlYWRkYXRhCi0gICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAzMTogMF0gcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgYWRkcmVzczsKLQotICB3aXJlICAgIFsgMzE6IDBdIHJlYWRkYXRhOwotICAvL2NvbnRyb2xfc2xhdmUsIHdoaWNoIGlzIGFuIGVfYXZhbG9uX3NsYXZlCi0gIGFzc2lnbiByZWFkZGF0YSA9IGFkZHJlc3MgPyAxMjcxODQ1NTQzIDogMjA1NzA2MjU3NDsKLQotZW5kbW9kdWxlCi0KLQotLyogU0xsaW5lIDIwNDc5ICJjdXN0b21fZG1hLnYiIDIgKi8KLS8qIFNMbGluZSAxICJjdXN0b21fZG1hX2J1cnN0XzUudiIgMSAqLwotLy9MZWdhbCBOb3RpY2U6IChDKTIwMTAgQWx0ZXJhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgWW91cgotLy91c2Ugb2YgQWx0ZXJhIENvcnBvcmF0aW9uJ3MgZGVzaWduIHRvb2xzLCBsb2dpYyBmdW5jdGlvbnMgYW5kIG90aGVyCi0vL3NvZnR3YXJlIGFuZCB0b29scywgYW5kIGl0cyBBTVBQIHBhcnRuZXIgbG9naWMgZnVuY3Rpb25zLCBhbmQgYW55Ci0vL291dHB1dCBmaWxlcyBhbnkgb2YgdGhlIGZvcmVnb2luZyAoaW5jbHVkaW5nIGRldmljZSBwcm9ncmFtbWluZyBvcgotLy9zaW11bGF0aW9uIGZpbGVzKSwgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gYXJlCi0vL2V4cHJlc3NseSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQWx0ZXJhIFByb2dyYW0KLS8vTGljZW5zZSBTdWJzY3JpcHRpb24gQWdyZWVtZW50IG9yIG90aGVyIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnQsCi0vL2luY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCB0aGF0IHlvdXIgdXNlIGlzIGZvciB0aGUgc29sZSBwdXJwb3NlCi0vL29mIHByb2dyYW1taW5nIGxvZ2ljIGRldmljZXMgbWFudWZhY3R1cmVkIGJ5IEFsdGVyYSBhbmQgc29sZCBieSBBbHRlcmEKLS8vb3IgaXRzIGF1dGhvcml6ZWQgZGlzdHJpYnV0b3JzLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBhcHBsaWNhYmxlCi0vL2FncmVlbWVudCBmb3IgZnVydGhlciBkZXRhaWxzLgotCi0vLyBzeW50aGVzaXMgdHJhbnNsYXRlX29mZgotYHRpbWVzY2FsZSAxbnMgLyAxcHMKLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLS8vCi0vL0J1cnN0IGFkYXB0ZXIgcGFyYW1ldGVyczoKLS8vYWRhcHRlciBpcyBtYXN0ZXJlZCBieTogZmlyX2RtYS93cml0ZV9tYXN0ZXIKLS8vYWRhcHRlciBtYXN0ZXJzOiBkZHJfc2RyYW0vczEKLS8vYXNwX2RlYnVnOiAwCi0vL2J5dGVhZGRyX3dpZHRoOiAyNwotLy9jZWlsX2RhdGFfd2lkdGg6IDMyCi0vL2RhdGFfd2lkdGg6IDMyCi0vL2Ric19zaGlmdDogMAotLy9kYnNfdXBzdHJlYW1fYnVyc3Rjb3VudF93aWR0aDogMwotLy9kb3duc3RyZWFtX2FkZHJfc2hpZnQ6IDIKLS8vZG93bnN0cmVhbV9idXJzdGNvdW50X3dpZHRoOiAzCi0vL2Rvd25zdHJlYW1fbWF4X2J1cnN0Y291bnQ6IDQKLS8vZG93bnN0cmVhbV9waXBlbGluZTogMAotLy9keW5hbWljX3NsYXZlOiAxCi0vL21hc3Rlcl9hbHdheXNfYnVyc3RfbWF4X2J1cnN0OiAwCi0vL21hc3Rlcl9idXJzdF9vbl9idXJzdF9ib3VuZGFyaWVzX29ubHk6IDAKLS8vbWFzdGVyX2RhdGFfd2lkdGg6IDMyCi0vL21hc3Rlcl9pbnRlcmxlYXZlOiAwCi0vL21hc3Rlcl9saW5ld3JhcF9idXJzdHM6IDAKLS8vbmF0aXZlYWRkcl93aWR0aDogMjUKLS8vc2xhdmVfYWx3YXlzX2J1cnN0X21heF9idXJzdDogMAotLy9zbGF2ZV9idXJzdF9vbl9idXJzdF9ib3VuZGFyaWVzX29ubHk6IDAKLS8vc2xhdmVfaW50ZXJsZWF2ZTogMAotLy9zbGF2ZV9saW5ld3JhcF9idXJzdHM6IDEKLS8vdXBzdHJlYW1fYnVyc3Rjb3VudDogdXBzdHJlYW1fYnVyc3Rjb3VudAotLy91cHN0cmVhbV9idXJzdGNvdW50X3dpZHRoOiAzCi0vL3Vwc3RyZWFtX21heF9idXJzdGNvdW50OiA0Ci0vL3plcm9fYWRkcmVzc193aWR0aDogMAotCi0KLW1vZHVsZSBjdXN0b21fZG1hX2J1cnN0XzUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duc3RyZWFtX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25zdHJlYW1fd2FpdHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fd3JpdGVkYXRhLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25zdHJlYW1fYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duc3RyZWFtX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25zdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV93YWl0cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbIDI0OiAwXSBkb3duc3RyZWFtX2FkZHJlc3M7Ci0gIG91dHB1dCAgWyAgMjogMF0gZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICBvdXRwdXQgIFsgIDI6IDBdIGRvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgb3V0cHV0ICBbICAzOiAwXSBkb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gIG91dHB1dCAgICAgICAgICAgZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICBbIDI0OiAwXSBkb3duc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIG91dHB1dCAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkOwotICBvdXRwdXQgICAgICAgICAgIGRvd25zdHJlYW1fd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIG91dHB1dCAgWyAzMTogMF0gdXBzdHJlYW1fcmVhZGRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgb3V0cHV0ICAgICAgICAgICB1cHN0cmVhbV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAzMTogMF0gZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBkb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIGlucHV0ICAgICAgICAgICAgZG93bnN0cmVhbV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotICBpbnB1dCAgIFsgMjY6IDBdIHVwc3RyZWFtX2FkZHJlc3M7Ci0gIGlucHV0ICAgWyAgMjogMF0gdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSB1cHN0cmVhbV9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIHVwc3RyZWFtX2RlYnVnYWNjZXNzOwotICBpbnB1dCAgIFsgMjQ6IDBdIHVwc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgdXBzdHJlYW1fcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICB1cHN0cmVhbV93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSB1cHN0cmVhbV93cml0ZWRhdGE7Ci0KLSAgd2lyZSAgICBbICAxOiAwXSBhZGRyZXNzX29mZnNldDsKLSAgcmVnICAgICBbICAyOiAwXSBhdG9taWNfY291bnRlcjsKLSAgd2lyZSAgICBbIDI2OiAwXSBjdXJyZW50X3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMjogMF0gY3VycmVudF91cHN0cmVhbV9idXJzdGNvdW50OwotICB3aXJlICAgICAgICAgICAgIGN1cnJlbnRfdXBzdHJlYW1fcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXJyZW50X3Vwc3RyZWFtX3dyaXRlOwotICByZWcgICAgIFsgIDI6IDBdIGRhdGFfY291bnRlcjsKLSAgd2lyZSAgICBbICAyOiAwXSBkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbIDI0OiAwXSBkb3duc3RyZWFtX2FkZHJlc3M7Ci0gIHdpcmUgICAgWyAyNjogMF0gZG93bnN0cmVhbV9hZGRyZXNzX2Jhc2U7Ci0gIHdpcmUgICAgWyAgMjogMF0gZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICB3aXJlICAgIFsgIDI6IDBdIGRvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX2J1cnN0ZG9uZTsKLSAgd2lyZSAgICBbICAzOiAwXSBkb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICBbIDI0OiAwXSBkb3duc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIHJlZyAgICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgICAgICAgICAgZG93bnN0cmVhbV93cml0ZV9yZWc7Ci0gIHdpcmUgICAgWyAzMTogMF0gZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgZW5hYmxlX3N0YXRlX2NoYW5nZTsKLSAgd2lyZSAgICAgICAgICAgICBmaWZvX2VtcHR5OwotICB3aXJlICAgIFsgIDI6IDBdIGludGVybGVhdmVfZW5kOwotICB3aXJlICAgIFsgIDI6IDBdIG1heF9idXJzdF9zaXplOwotICB3aXJlICAgIFsgIDI6IDBdIHAxX2F0b21pY19jb3VudGVyOwotICB3aXJlICAgICAgICAgICAgIHAxX2ZpZm9fZW1wdHk7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfc3RhdGVfYnVzeTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9zdGF0ZV9pZGxlOwotICB3aXJlICAgICAgICAgICAgIHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fcmVhZDsKLSAgcmVnICAgICAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnOwotICB3aXJlICAgICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgICAgICAgICAgcGVuZGluZ191cHN0cmVhbV93cml0ZV9yZWc7Ci0gIHJlZyAgICAgWyAgMTogMF0gcmVhZF9hZGRyZXNzX29mZnNldDsKLSAgd2lyZSAgICAgICAgICAgICByZWFkX3VwZGF0ZV9jb3VudDsKLSAgd2lyZSAgICBbICAyOiAwXSByZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICByZWcgICAgIFsgIDI6IDBdIHJlZ2lzdGVyZWRfcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgcmVnICAgICBbIDI2OiAwXSByZWdpc3RlcmVkX3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIHJlZyAgICAgWyAgMjogMF0gcmVnaXN0ZXJlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICByZWcgICAgIFsgIDM6IDBdIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgcmVnICAgICBbIDI0OiAwXSByZWdpc3RlcmVkX3Vwc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIHJlZyAgICAgICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9yZWFkOwotICByZWcgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhdGVfYnVzeTsKLSAgcmVnICAgICAgICAgICAgICBzdGF0ZV9pZGxlOwotICB3aXJlICAgICAgICAgICAgIHN5bmNfbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICBbICAyOiAwXSB0cmFuc2FjdGlvbnNfcmVtYWluaW5nOwotICByZWcgICAgIFsgIDI6IDBdIHRyYW5zYWN0aW9uc19yZW1haW5pbmdfcmVnOwotICB3aXJlICAgICAgICAgICAgIHVwZGF0ZV9jb3VudDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9idXJzdGRvbmU7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZF9ydW47Ci0gIHdpcmUgICAgWyAzMTogMF0gdXBzdHJlYW1fcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV93cml0ZV9ydW47Ci0gIHJlZyAgICAgWyAgMTogMF0gd3JpdGVfYWRkcmVzc19vZmZzZXQ7Ci0gIHdpcmUgICAgICAgICAgICAgd3JpdGVfdXBkYXRlX2NvdW50OwotICBhc3NpZ24gc3luY19uYXRpdmVhZGRyZXNzID0gfHVwc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIC8vZG93bnN0cmVhbSwgd2hpY2ggaXMgYW4gZV9hdmFsb25fbWFzdGVyCi0gIC8vdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfYXZhbG9uX3NsYXZlCi0gIGFzc2lnbiB1cHN0cmVhbV9idXJzdGRvbmUgPSBjdXJyZW50X3Vwc3RyZWFtX3JlYWQgPyAodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9PSBkb3duc3RyZWFtX2J1cnN0Y291bnQpICYgZG93bnN0cmVhbV9yZWFkICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QgOiAodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9PSAoYXRvbWljX2NvdW50ZXIgKyAxKSkgJiBkb3duc3RyZWFtX3dyaXRlICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGFzc2lnbiBwMV9hdG9taWNfY291bnRlciA9IGF0b21pY19jb3VudGVyICsgKGRvd25zdHJlYW1fcmVhZCA/IGRvd25zdHJlYW1fYnVyc3Rjb3VudCA6IDEpOwotICBhc3NpZ24gZG93bnN0cmVhbV9idXJzdGRvbmUgPSAoZG93bnN0cmVhbV9yZWFkIHwgZG93bnN0cmVhbV93cml0ZSkgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCAmIChwMV9hdG9taWNfY291bnRlciA9PSBkb3duc3RyZWFtX2J1cnN0Y291bnQpOwotICBhc3NpZ24gZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgPSBwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSA/IHJlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgOiByZWdpc3RlcmVkX3JlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGFzc2lnbiByZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50ID0gdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA8PSAwOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF9yZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDw9IHJlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gcDFfc3RhdGVfaWRsZSA9IHN0YXRlX2lkbGUgJiB+dXBzdHJlYW1fcmVhZCAmIH51cHN0cmVhbV93cml0ZSB8IHN0YXRlX2J1c3kgJiAoZGF0YV9jb3VudGVyID09IDApICYgcDFfZmlmb19lbXB0eSAmIH5wZW5kaW5nX3Vwc3RyZWFtX3JlYWQgJiB+cGVuZGluZ191cHN0cmVhbV93cml0ZTsKLSAgYXNzaWduIHAxX3N0YXRlX2J1c3kgPSBzdGF0ZV9pZGxlICYgKHVwc3RyZWFtX3JlYWQgfCB1cHN0cmVhbV93cml0ZSkgfCBzdGF0ZV9idXN5ICYgKH4oZGF0YV9jb3VudGVyID09IDApIHwgfnAxX2ZpZm9fZW1wdHkgfCBwZW5kaW5nX3Vwc3RyZWFtX3JlYWQgfCBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlKTsKLSAgYXNzaWduIGVuYWJsZV9zdGF0ZV9jaGFuZ2UgPSB+KGRvd25zdHJlYW1fcmVhZCB8IGRvd25zdHJlYW1fd3JpdGUpIHwgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnIDw9IDA7Ci0gICAgICBlbHNlIGlmICh1cHN0cmVhbV9yZWFkICYgc3RhdGVfaWRsZSkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnIDw9IC0xOwotICAgICAgZWxzZSBpZiAodXBzdHJlYW1fYnVyc3Rkb25lKQotICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fcmVhZF9yZWcgPD0gMDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZyA8PSAwOwotICAgICAgZWxzZSBpZiAodXBzdHJlYW1fYnVyc3Rkb25lKQotICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fd3JpdGVfcmVnIDw9IDA7Ci0gICAgICBlbHNlIGlmICh1cHN0cmVhbV93cml0ZSAmIChzdGF0ZV9pZGxlIHwgfnVwc3RyZWFtX3dhaXRyZXF1ZXN0KSkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZyA8PSAtMTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGF0ZV9pZGxlIDw9IDE7Ci0gICAgICBlbHNlIGlmIChlbmFibGVfc3RhdGVfY2hhbmdlKQotICAgICAgICAgIHN0YXRlX2lkbGUgPD0gcDFfc3RhdGVfaWRsZTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGF0ZV9idXN5IDw9IDA7Ci0gICAgICBlbHNlIGlmIChlbmFibGVfc3RhdGVfY2hhbmdlKQotICAgICAgICAgIHN0YXRlX2J1c3kgPD0gcDFfc3RhdGVfYnVzeTsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBwZW5kaW5nX3Vwc3RyZWFtX3JlYWQgPSBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnOwotICBhc3NpZ24gcGVuZGluZ191cHN0cmVhbV93cml0ZSA9IHBlbmRpbmdfdXBzdHJlYW1fd3JpdGVfcmVnICYgfnVwc3RyZWFtX2J1cnN0ZG9uZTsKLSAgYXNzaWduIHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlID0gc3RhdGVfaWRsZSB8ICgodXBzdHJlYW1fcmVhZCB8IHVwc3RyZWFtX3dyaXRlKSAmIH51cHN0cmVhbV93YWl0cmVxdWVzdCk7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3JlYWQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fcmVhZCA8PSB1cHN0cmVhbV9yZWFkOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fd3JpdGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fd3JpdGUgPD0gdXBzdHJlYW1fd3JpdGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9idXJzdGNvdW50IDw9IDA7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgPD0gdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2FkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYWRkcmVzcyA8PSB1cHN0cmVhbV9hZGRyZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fbmF0aXZlYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9uYXRpdmVhZGRyZXNzIDw9IHVwc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gY3VycmVudF91cHN0cmVhbV9yZWFkID0gcmVnaXN0ZXJlZF91cHN0cmVhbV9yZWFkICYgIWRvd25zdHJlYW1fd3JpdGU7Ci0gIGFzc2lnbiBjdXJyZW50X3Vwc3RyZWFtX3dyaXRlID0gcmVnaXN0ZXJlZF91cHN0cmVhbV93cml0ZTsKLSAgYXNzaWduIGN1cnJlbnRfdXBzdHJlYW1fYWRkcmVzcyA9IHJlZ2lzdGVyZWRfdXBzdHJlYW1fYWRkcmVzczsKLSAgYXNzaWduIGN1cnJlbnRfdXBzdHJlYW1fYnVyc3Rjb3VudCA9IHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlID8gdXBzdHJlYW1fYnVyc3Rjb3VudCA6IHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGF0b21pY19jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIGlmICgoZG93bnN0cmVhbV9yZWFkIHwgZG93bnN0cmVhbV93cml0ZSkgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBhdG9taWNfY291bnRlciA8PSBkb3duc3RyZWFtX2J1cnN0ZG9uZSA/IDAgOiBwMV9hdG9taWNfY291bnRlcjsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiByZWFkX3VwZGF0ZV9jb3VudCA9IGN1cnJlbnRfdXBzdHJlYW1fcmVhZCAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBhc3NpZ24gd3JpdGVfdXBkYXRlX2NvdW50ID0gY3VycmVudF91cHN0cmVhbV93cml0ZSAmIGRvd25zdHJlYW1fd3JpdGUgJiBkb3duc3RyZWFtX2J1cnN0ZG9uZTsKLSAgYXNzaWduIHVwZGF0ZV9jb3VudCA9IHJlYWRfdXBkYXRlX2NvdW50IHwgd3JpdGVfdXBkYXRlX2NvdW50OwotICBhc3NpZ24gdHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9IChzdGF0ZV9pZGxlICYgKHVwc3RyZWFtX3JlYWQgfCB1cHN0cmVhbV93cml0ZSkpID8gZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgOiB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZzsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHRyYW5zYWN0aW9uc19yZW1haW5pbmdfcmVnIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZyA8PSAoc3RhdGVfaWRsZSAmICh1cHN0cmVhbV9yZWFkIHwgdXBzdHJlYW1fd3JpdGUpKSA/IGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDogdXBkYXRlX2NvdW50ID8gdHJhbnNhY3Rpb25zX3JlbWFpbmluZ19yZWcgLSBkb3duc3RyZWFtX2J1cnN0Y291bnQgOiB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZzsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkYXRhX2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGRhdGFfY291bnRlciA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZCAmIH51cHN0cmVhbV93YWl0cmVxdWVzdCA/ICBkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA6IGRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCA/IGRhdGFfY291bnRlciAtIDEgOiBkYXRhX2NvdW50ZXI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbWF4X2J1cnN0X3NpemUgPSA0OwotICBhc3NpZ24gZG93bnN0cmVhbV9idXJzdGNvdW50ID0gKHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPiBtYXhfYnVyc3Rfc2l6ZSkgPyBtYXhfYnVyc3Rfc2l6ZSA6IHRyYW5zYWN0aW9uc19yZW1haW5pbmc7Ci0gIGFzc2lnbiBpbnRlcmxlYXZlX2VuZCA9IChkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA+IDApID8gKGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IC0gMCkgOiAwOwotICBhc3NpZ24gZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlID0gY3VycmVudF91cHN0cmVhbV9yZWFkID8gKDAgKyAoaW50ZXJsZWF2ZV9lbmQgPj4gMikgKyB8KGludGVybGVhdmVfZW5kWzEgOiAwXSkpIDogZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICB3cml0ZV9hZGRyZXNzX29mZnNldCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgd3JpdGVfYWRkcmVzc19vZmZzZXQgPD0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3dyaXRlID8gMCA6ICgoZG93bnN0cmVhbV93cml0ZSAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ICYgZG93bnN0cmVhbV9idXJzdGRvbmUpKSA/IHdyaXRlX2FkZHJlc3Nfb2Zmc2V0ICsgZG93bnN0cmVhbV9idXJzdGNvdW50IDogd3JpdGVfYWRkcmVzc19vZmZzZXQ7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVhZF9hZGRyZXNzX29mZnNldCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgcmVhZF9hZGRyZXNzX29mZnNldCA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZCA/IDAgOiAoZG93bnN0cmVhbV9yZWFkICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpID8gcmVhZF9hZGRyZXNzX29mZnNldCArIGRvd25zdHJlYW1fYnVyc3Rjb3VudCA6IHJlYWRfYWRkcmVzc19vZmZzZXQ7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzID0gcmVnaXN0ZXJlZF91cHN0cmVhbV9uYXRpdmVhZGRyZXNzID4+IDI7Ci0gIGFzc2lnbiBhZGRyZXNzX29mZnNldCA9IGN1cnJlbnRfdXBzdHJlYW1fcmVhZCA/IHJlYWRfYWRkcmVzc19vZmZzZXQgOiB3cml0ZV9hZGRyZXNzX29mZnNldDsKLSAgYXNzaWduIGRvd25zdHJlYW1fYWRkcmVzc19iYXNlID0gY3VycmVudF91cHN0cmVhbV9hZGRyZXNzOwotICBhc3NpZ24gZG93bnN0cmVhbV9hZGRyZXNzID0gZG93bnN0cmVhbV9hZGRyZXNzX2Jhc2UgKyB7YWRkcmVzc19vZmZzZXQsIDInYjAwfTsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGRvd25zdHJlYW1fcmVhZCA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fcmVhZCB8IH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIGRvd25zdHJlYW1fcmVhZCA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZCA/IDEgOiAodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9PSBkb3duc3RyZWFtX2J1cnN0Y291bnQpID8gMCA6IGRvd25zdHJlYW1fcmVhZDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiB1cHN0cmVhbV9yZWFkZGF0YXZhbGlkID0gZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICBhc3NpZ24gdXBzdHJlYW1fcmVhZGRhdGEgPSBkb3duc3RyZWFtX3JlYWRkYXRhOwotICBhc3NpZ24gZmlmb19lbXB0eSA9IDE7Ci0gIGFzc2lnbiBwMV9maWZvX2VtcHR5ID0gMTsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGRvd25zdHJlYW1fd3JpdGVfcmVnIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93cml0ZV9yZWcgfCB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBkb3duc3RyZWFtX3dyaXRlX3JlZyA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fd3JpdGUgPyAxIDogKCh0cmFuc2FjdGlvbnNfcmVtYWluaW5nID09IGRvd25zdHJlYW1fYnVyc3Rjb3VudCkgJiBkb3duc3RyZWFtX2J1cnN0ZG9uZSkgPyAwIDogZG93bnN0cmVhbV93cml0ZV9yZWc7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9ieXRlZW5hYmxlIDw9IDQnYjExMTE7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2J5dGVlbmFibGUgPD0gdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBkb3duc3RyZWFtX3dyaXRlID0gZG93bnN0cmVhbV93cml0ZV9yZWcgJiB1cHN0cmVhbV93cml0ZSAmICFkb3duc3RyZWFtX3JlYWQ7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2J5dGVlbmFibGUgPSBkb3duc3RyZWFtX3dyaXRlX3JlZyA/IHVwc3RyZWFtX2J5dGVlbmFibGUgOiByZWdpc3RlcmVkX3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX3dyaXRlZGF0YSA9IHVwc3RyZWFtX3dyaXRlZGF0YTsKLSAgYXNzaWduIHVwc3RyZWFtX3JlYWRfcnVuID0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3JlYWQ7Ci0gIGFzc2lnbiB1cHN0cmVhbV93cml0ZV9ydW4gPSBzdGF0ZV9idXN5ICYgdXBzdHJlYW1fd3JpdGUgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCAmICFkb3duc3RyZWFtX3JlYWQ7Ci0gIGFzc2lnbiB1cHN0cmVhbV93YWl0cmVxdWVzdCA9ICh1cHN0cmVhbV9yZWFkIHwgY3VycmVudF91cHN0cmVhbV9yZWFkKSA/IH51cHN0cmVhbV9yZWFkX3J1biA6IGN1cnJlbnRfdXBzdHJlYW1fd3JpdGUgPyB+dXBzdHJlYW1fd3JpdGVfcnVuIDogMTsKLSAgYXNzaWduIGRvd25zdHJlYW1fZGVidWdhY2Nlc3MgPSB1cHN0cmVhbV9kZWJ1Z2FjY2VzczsKLQotZW5kbW9kdWxlCi0KLQotLyogU0xsaW5lIDIwNDgwICJjdXN0b21fZG1hLnYiIDIgKi8KLS8qIFNMbGluZSAxICJqdGFnX3VhcnQudiIgMSAqLwotLy9MZWdhbCBOb3RpY2U6IChDKTIwMTAgQWx0ZXJhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgWW91cgotLy91c2Ugb2YgQWx0ZXJhIENvcnBvcmF0aW9uJ3MgZGVzaWduIHRvb2xzLCBsb2dpYyBmdW5jdGlvbnMgYW5kIG90aGVyCi0vL3NvZnR3YXJlIGFuZCB0b29scywgYW5kIGl0cyBBTVBQIHBhcnRuZXIgbG9naWMgZnVuY3Rpb25zLCBhbmQgYW55Ci0vL291dHB1dCBmaWxlcyBhbnkgb2YgdGhlIGZvcmVnb2luZyAoaW5jbHVkaW5nIGRldmljZSBwcm9ncmFtbWluZyBvcgotLy9zaW11bGF0aW9uIGZpbGVzKSwgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gYXJlCi0vL2V4cHJlc3NseSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQWx0ZXJhIFByb2dyYW0KLS8vTGljZW5zZSBTdWJzY3JpcHRpb24gQWdyZWVtZW50IG9yIG90aGVyIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnQsCi0vL2luY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCB0aGF0IHlvdXIgdXNlIGlzIGZvciB0aGUgc29sZSBwdXJwb3NlCi0vL29mIHByb2dyYW1taW5nIGxvZ2ljIGRldmljZXMgbWFudWZhY3R1cmVkIGJ5IEFsdGVyYSBhbmQgc29sZCBieSBBbHRlcmEKLS8vb3IgaXRzIGF1dGhvcml6ZWQgZGlzdHJpYnV0b3JzLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBhcHBsaWNhYmxlCi0vL2FncmVlbWVudCBmb3IgZnVydGhlciBkZXRhaWxzLgotCi0vLyBzeW50aGVzaXMgdHJhbnNsYXRlX29mZgotYHRpbWVzY2FsZSAxbnMgLyAxcHMKLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBqdGFnX3VhcnRfbG9nX21vZHVsZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2JlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgIDc6IDBdIGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgc3Ryb2JlOwotICBpbnB1dCAgICAgICAgICAgIHZhbGlkOwotCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gICByZWcgWzMxOjBdIHRleHRfaGFuZGxlOyAvLyBmb3IgJGZvcGVuCi0gICBpbml0aWFsIHRleHRfaGFuZGxlID0gJGZvcGVuICgiQzovUHJvamVjdHMvMTAvYWNjZWxlcmF0ZWRfZmlyX2RtYV9jbGVhbnVwL0N1c3RvbV9GSVJfRE1BL1N0cmF0aXhJSS9jdXN0b21fZG1hX3NpbS9qdGFnX3VhcnRfb3V0cHV0X3N0cmVhbS5kYXQiKTsKLQotICAgYWx3YXlzIEAocG9zZWRnZSBjbGspIGJlZ2luCi0gICAgICBpZiAodmFsaWQgJiYgc3Ryb2JlKSBiZWdpbgotCSAkZndyaXRlICh0ZXh0X2hhbmRsZSwgIiViXG4iLCBkYXRhKTsKLSAgICAgICAgICAvLyBlY2hvIHJhdyBiaW5hcnkgc3RyaW5ncyB0byBmaWxlIGFzIGFzY2lpIHRvIHNjcmVlbgotICAgICAgICAgJHdyaXRlKCIlcyIsICgoZGF0YSA9PSA4J2hkKSA/IDgnaGEgOiBkYXRhKSk7Ci0gICAgICAgICAgICAgICAgICAgICAKLQkgLy8gbm9uLXN0YW5kYXJkOyBwb29ybHkgZG9jdW1lbnRlZDsgcmVxdWlyZWQgdG8gZ2V0IHJlYWwgZGF0YSBzdHJlYW0uCi0JICRmZmx1c2ggKHRleHRfaGFuZGxlKTsKLSAgICAgIGVuZAotICAgZW5kIC8vIGNsawotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGp0YWdfdWFydF9zaW1fc2NmaWZvX3cgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX3dkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmb193ciwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmb19GRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJfZGF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ZpZm9fZW1wdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Zmlmb191c2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBmaWZvX0ZGOwotICBvdXRwdXQgIFsgIDc6IDBdIHJfZGF0OwotICBvdXRwdXQgICAgICAgICAgIHdmaWZvX2VtcHR5OwotICBvdXRwdXQgIFsgIDU6IDBdIHdmaWZvX3VzZWQ7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgIDc6IDBdIGZpZm9fd2RhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgZmlmb193cjsKLQotICB3aXJlICAgICAgICAgICAgIGZpZm9fRkY7Ci0gIHdpcmUgICAgWyAgNzogMF0gcl9kYXQ7Ci0gIHdpcmUgICAgICAgICAgICAgd2ZpZm9fZW1wdHk7Ci0gIHdpcmUgICAgWyAgNTogMF0gd2ZpZm9fdXNlZDsKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgLy9qdGFnX3VhcnRfbG9nLCB3aGljaCBpcyBhbiBlX2xvZwotICBqdGFnX3VhcnRfbG9nX21vZHVsZSBqdGFnX3VhcnRfbG9nCi0gICAgKAotICAgICAgLmNsayAgICAoY2xrKSwKLSAgICAgIC5kYXRhICAgKGZpZm9fd2RhdGEpLAotICAgICAgLnN0cm9iZSAoZmlmb193ciksCi0gICAgICAudmFsaWQgIChmaWZvX3dyKQotICAgICk7Ci0KLSAgYXNzaWduIHdmaWZvX3VzZWQgPSB7NnsxJ2IwfX07Ci0gIGFzc2lnbiByX2RhdCA9IHs4ezEnYjB9fTsKLSAgYXNzaWduIGZpZm9fRkYgPSAxJ2IwOwotICBhc3NpZ24gd2ZpZm9fZW1wdHkgPSAxJ2IxOwotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBqdGFnX3VhcnRfc2NmaWZvX3cgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX2NsZWFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX3dkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX3dyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZF93ZmlmbywKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZm9fRkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJfZGF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Zmlmb19lbXB0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ZpZm9fdXNlZAotICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBmaWZvX0ZGOwotICBvdXRwdXQgIFsgIDc6IDBdIHJfZGF0OwotICBvdXRwdXQgICAgICAgICAgIHdmaWZvX2VtcHR5OwotICBvdXRwdXQgIFsgIDU6IDBdIHdmaWZvX3VzZWQ7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIGZpZm9fY2xlYXI7Ci0gIGlucHV0ICAgWyAgNzogMF0gZmlmb193ZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBmaWZvX3dyOwotICBpbnB1dCAgICAgICAgICAgIHJkX3dmaWZvOwotCi0gIHdpcmUgICAgICAgICAgICAgZmlmb19GRjsKLSAgd2lyZSAgICBbICA3OiAwXSByX2RhdDsKLSAgd2lyZSAgICAgICAgICAgICB3Zmlmb19lbXB0eTsKLSAgd2lyZSAgICBbICA1OiAwXSB3Zmlmb191c2VkOwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICBqdGFnX3VhcnRfc2ltX3NjZmlmb193IHRoZV9qdGFnX3VhcnRfc2ltX3NjZmlmb193Ci0gICAgKAotICAgICAgLmNsayAgICAgICAgIChjbGspLAotICAgICAgLmZpZm9fRkYgICAgIChmaWZvX0ZGKSwKLSAgICAgIC5maWZvX3dkYXRhICAoZmlmb193ZGF0YSksCi0gICAgICAuZmlmb193ciAgICAgKGZpZm9fd3IpLAotICAgICAgLnJfZGF0ICAgICAgIChyX2RhdCksCi0gICAgICAud2ZpZm9fZW1wdHkgKHdmaWZvX2VtcHR5KSwKLSAgICAgIC53Zmlmb191c2VkICAod2ZpZm9fdXNlZCkKLSAgICApOwotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLS8vc3ludGhlc2lzIHJlYWRfY29tbWVudHNfYXNfSERMIG9uCi0vLyAgc2NmaWZvIHdmaWZvCi0vLyAgICAoCi0vLyAgICAgIC5hY2xyIChmaWZvX2NsZWFyKSwKLS8vICAgICAgLmNsb2NrIChjbGspLAotLy8gICAgICAuZGF0YSAoZmlmb193ZGF0YSksCi0vLyAgICAgIC5lbXB0eSAod2ZpZm9fZW1wdHkpLAotLy8gICAgICAuZnVsbCAoZmlmb19GRiksCi0vLyAgICAgIC5xIChyX2RhdCksCi0vLyAgICAgIC5yZHJlcSAocmRfd2ZpZm8pLAotLy8gICAgICAudXNlZHcgKHdmaWZvX3VzZWQpLAotLy8gICAgICAud3JyZXEgKGZpZm9fd3IpCi0vLyAgICApOwotLy8KLS8vICBkZWZwYXJhbSB3Zmlmby5scG1faGludCA9ICJSQU1fQkxPQ0tfVFlQRT1BVVRPIiwKLS8vICAgICAgICAgICB3Zmlmby5scG1fbnVtd29yZHMgPSA2NCwKLS8vICAgICAgICAgICB3Zmlmby5scG1fc2hvd2FoZWFkID0gIk9GRiIsCi0vLyAgICAgICAgICAgd2ZpZm8ubHBtX3R5cGUgPSAic2NmaWZvIiwKLS8vICAgICAgICAgICB3Zmlmby5scG1fd2lkdGggPSA4LAotLy8gICAgICAgICAgIHdmaWZvLmxwbV93aWR0aHUgPSA2LAotLy8gICAgICAgICAgIHdmaWZvLm92ZXJmbG93X2NoZWNraW5nID0gIk9GRiIsCi0vLyAgICAgICAgICAgd2ZpZm8udW5kZXJmbG93X2NoZWNraW5nID0gIk9GRiIsCi0vLyAgICAgICAgICAgd2ZpZm8udXNlX2VhYiA9ICJPTiI7Ci0vLwotLy9zeW50aGVzaXMgcmVhZF9jb21tZW50c19hc19IREwgb2ZmCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBqdGFnX3VhcnRfZHJvbV9tb2R1bGUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcm9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIHBhcmFtZXRlciBQT0xMX1JBVEUgPSAxMDA7Ci0KLQotICBvdXRwdXQgICAgICAgICAgIG5ld19yb207Ci0gIG91dHB1dCAgWyAzMTogMF0gbnVtX2J5dGVzOwotICBvdXRwdXQgIFsgIDc6IDBdIHE7Ci0gIG91dHB1dCAgICAgICAgICAgc2FmZTsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgICAgICAgICAgaW5jcl9hZGRyOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0KLSAgcmVnICAgICBbIDExOiAwXSBhZGRyZXNzOwotICByZWcgICAgICAgICAgICAgIGQxX3ByZTsKLSAgcmVnICAgICAgICAgICAgICBkMl9wcmU7Ci0gIHJlZyAgICAgICAgICAgICAgZDNfcHJlOwotICByZWcgICAgICAgICAgICAgIGQ0X3ByZTsKLSAgcmVnICAgICAgICAgICAgICBkNV9wcmU7Ci0gIHJlZyAgICAgICAgICAgICAgZDZfcHJlOwotICByZWcgICAgICAgICAgICAgIGQ3X3ByZTsKLSAgcmVnICAgICAgICAgICAgICBkOF9wcmU7Ci0gIHJlZyAgICAgICAgICAgICAgZDlfcHJlOwotICByZWcgICAgIFsgIDc6IDBdIG1lbV9hcnJheSBbMjA0NzogMF07Ci0gIHJlZyAgICAgWyAzMTogMF0gbXV0ZXggWyAgMTogMF07Ci0gIHJlZyAgICAgICAgICAgICAgbmV3X3JvbTsKLSAgd2lyZSAgICBbIDMxOiAwXSBudW1fYnl0ZXM7Ci0gIHJlZyAgICAgICAgICAgICAgcHJlOwotICB3aXJlICAgIFsgIDc6IDBdIHE7Ci0gIHdpcmUgICAgICAgICAgICAgc2FmZTsKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29mZgotLy8vLy8vLy8vLy8vLy8vLyBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLSAgYXNzaWduIHEgPSBtZW1fYXJyYXlbYWRkcmVzc107Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICBkMV9wcmUgPD0gMDsKLSAgICAgICAgICBkMl9wcmUgPD0gMDsKLSAgICAgICAgICBkM19wcmUgPD0gMDsKLSAgICAgICAgICBkNF9wcmUgPD0gMDsKLSAgICAgICAgICBkNV9wcmUgPD0gMDsKLSAgICAgICAgICBkNl9wcmUgPD0gMDsKLSAgICAgICAgICBkN19wcmUgPD0gMDsKLSAgICAgICAgICBkOF9wcmUgPD0gMDsKLSAgICAgICAgICBkOV9wcmUgPD0gMDsKLSAgICAgICAgICBuZXdfcm9tIDw9IDA7Ci0gICAgICAgIGVuZAotICAgICAgZWxzZSAKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICBkMV9wcmUgPD0gcHJlOwotICAgICAgICAgIGQyX3ByZSA8PSBkMV9wcmU7Ci0gICAgICAgICAgZDNfcHJlIDw9IGQyX3ByZTsKLSAgICAgICAgICBkNF9wcmUgPD0gZDNfcHJlOwotICAgICAgICAgIGQ1X3ByZSA8PSBkNF9wcmU7Ci0gICAgICAgICAgZDZfcHJlIDw9IGQ1X3ByZTsKLSAgICAgICAgICBkN19wcmUgPD0gZDZfcHJlOwotICAgICAgICAgIGQ4X3ByZSA8PSBkN19wcmU7Ci0gICAgICAgICAgZDlfcHJlIDw9IGQ4X3ByZTsKLSAgICAgICAgICBuZXdfcm9tIDw9IGQ5X3ByZTsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotCi0gICBhc3NpZ24gICAgIG51bV9ieXRlcyA9IG11dGV4WzFdOwotICAgICAgICAgICAgICAgICAgIHJlZyAgICAgICAgc2FmZV9kZWxheTsKLSAgIHJlZyBbMzE6MF0gcG9sbF9jb3VudDsKLSAgIHJlZyBbMzE6MF0gbXV0ZXhfaGFuZGxlOwotICAgd2lyZSAgICAgICBpbnRlcmFjdGl2ZSA9IDEnYjAgOyAvLyAnCi0gICBhc3NpZ24gICAgIHNhZmUgPSAoYWRkcmVzcyA8IG11dGV4WzFdKTsKLQotICAgaW5pdGlhbCBwb2xsX2NvdW50ID0gUE9MTF9SQVRFOwotCi0gICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiAhPT0gMSkgYmVnaW4KLSAgICAgICAgIHNhZmVfZGVsYXkgPD0gMDsKLSAgICAgIGVuZCBlbHNlIGJlZ2luCi0gICAgICAgICBzYWZlX2RlbGF5IDw9IHNhZmU7Ci0gICAgICBlbmQKLSAgIGVuZCAvLyBzYWZlX2RlbGF5Ci0KLSAgIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uICE9PSAxKSBiZWdpbiAgLy8gZG9udCB3b3JyeSBhYm91dCBudWxsIF9zdHJlYW0uZGF0IGZpbGUKLSAgICAgICAgIGFkZHJlc3MgPD0gMDsKLSAgICAgICAgIG1lbV9hcnJheVswXSA8PSAwOwotICAgICAgICAgbXV0ZXhbMF0gPD0gMDsKLSAgICAgICAgIG11dGV4WzFdIDw9IDA7Ci0gICAgICAgICBwcmUgPD0gMDsKLSAgICAgIGVuZCBlbHNlIGJlZ2luICAgICAgICAgICAgLy8gZGVhbCB3aXRoIHRoZSBub24tcmVzZXQgY2FzZQotICAgICAgICAgcHJlIDw9IDA7Ci0gICAgICAgICBpZiAoaW5jcl9hZGRyICYmIHNhZmUpIGFkZHJlc3MgPD0gYWRkcmVzcyArIDE7Ci0gICAgICAgICBpZiAobXV0ZXhbMF0gJiYgIXNhZmUgJiYgc2FmZV9kZWxheSkgYmVnaW4KLSAgICAgICAgICAgIC8vIGFuZCBibGFzdCB0aGUgbXV0ZXggYWZ0ZXIgZmFsbGluZyBlZGdlIG9mIHNhZmUgaWYgaW50ZXJhY3RpdmUKLSAgICAgICAgICAgIGlmIChpbnRlcmFjdGl2ZSkgYmVnaW4KLSAgICAgICAgICAgICAgIG11dGV4X2hhbmRsZSA9ICRmb3BlbiAoIkM6L1Byb2plY3RzLzEwL2FjY2VsZXJhdGVkX2Zpcl9kbWFfY2xlYW51cC9DdXN0b21fRklSX0RNQS9TdHJhdGl4SUkvY3VzdG9tX2RtYV9zaW0vanRhZ191YXJ0X2lucHV0X211dGV4LmRhdCIpOwotICAgICAgICAgICAgICAgJGZkaXNwbGF5IChtdXRleF9oYW5kbGUsICIwIik7Ci0gICAgICAgICAgICAgICAkZmNsb3NlIChtdXRleF9oYW5kbGUpOwotICAgICAgICAgICAgICAgLy8gJGRpc3BsYXkgKCRzdGltZSwgIlx0JW06XG5cdFx0TXV0ZXggY2xlYXJlZCEiKTsKLSAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luCi0gICAgICAgICAgICAgICAvLyBzbGVlcCB1bnRpbCBuZXh0IHJlc2V0LCBkbyBub3QgYmFzaCBtdXRleC4KLSAgICAgICAgICAgICAgIHdhaXQgKCFyZXNldF9uKTsKLSAgICAgICAgICAgIGVuZAotICAgICAgICAgZW5kIC8vIE9LIHRvIGJhc2ggbXV0ZXguCi0gICAgICAgICBpZiAocG9sbF9jb3VudCA8IFBPTExfUkFURSkgYmVnaW4gLy8gd2FpdAotICAgICAgICAgICAgcG9sbF9jb3VudCA9IHBvbGxfY291bnQgKyAxOwotICAgICAgICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAvLyBkbyB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYuCi0gICAgICAgICAgICBwb2xsX2NvdW50ID0gMDsKLSAgICAgICAgICAgICRyZWFkbWVtaCAoIkM6L1Byb2plY3RzLzEwL2FjY2VsZXJhdGVkX2Zpcl9kbWFfY2xlYW51cC9DdXN0b21fRklSX0RNQS9TdHJhdGl4SUkvY3VzdG9tX2RtYV9zaW0vanRhZ191YXJ0X2lucHV0X211dGV4LmRhdCIsIG11dGV4KTsKLSAgICAgICAgICAgIGlmIChtdXRleFswXSAmJiAhc2FmZSkgYmVnaW4KLSAgICAgICAgICAgIC8vIHJlYWQgc3RyZWFtIGludG8gbWVtX2FycmF5IGFmdGVyIGN1cnJlbnQgY2hhcmFjdGVycyBhcmUgZ29uZSEKLSAgICAgICAgICAgICAgIC8vIHNhdmUgbXV0ZXhbMF0gdmFsdWUgdG8gY29tcGFyZSB0byBhZGRyZXNzIChnZW5lcmF0ZXMgJ3NhZmUnKQotICAgICAgICAgICAgICAgbXV0ZXhbMV0gPD0gbXV0ZXhbMF07Ci0gICAgICAgICAgICAgICAvLyAkZGlzcGxheSAoJHN0aW1lLCAiXHQlbTpcblx0XHRNdXRleCBoaXQ6IFRyeWluZyB0byByZWFkICVkIGJ5dGVzLi4uIiwgbXV0ZXhbMF0pOwotICAgICAgICAgICAgICAgJHJlYWRtZW1iKCJDOi9Qcm9qZWN0cy8xMC9hY2NlbGVyYXRlZF9maXJfZG1hX2NsZWFudXAvQ3VzdG9tX0ZJUl9ETUEvU3RyYXRpeElJL2N1c3RvbV9kbWFfc2ltL2p0YWdfdWFydF9pbnB1dF9zdHJlYW0uZGF0IiwgbWVtX2FycmF5KTsKLSAgICAgICAgICAgICAgIC8vIGJhc2ggYWRkcmVzcyBhbmQgc2VuZCBwdWxzZSBvdXRzaWRlIHRvIHNlbmQgdGhlIGNoYXI6Ci0gICAgICAgICAgICAgICBhZGRyZXNzIDw9IDA7Ci0gICAgICAgICAgICAgICBwcmUgPD0gLTE7Ci0gICAgICAgICAgICBlbmQgLy8gZWxzZSBtdXRleCBtaXNzLi4uCi0gICAgICAgICBlbmQgLy8gcG9sbF9jb3VudAotICAgICAgZW5kIC8vIHJlc2V0Ci0gICBlbmQgLy8gcG9zZWRnZSBjbGsKLQotCi0vLy8vLy8vLy8vLy8vLy8vIEVORCBTSU1VTEFUSU9OLU9OTFkgQ09OVEVOVFMKLQotLy9zeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBqdGFnX3VhcnRfc2ltX3NjZmlmb19yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmb19yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX0VGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmb19yZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJmaWZvX2Z1bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZmlmb191c2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICAgICAgICAgICBmaWZvX0VGOwotICBvdXRwdXQgIFsgIDc6IDBdIGZpZm9fcmRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgcmZpZm9fZnVsbDsKLSAgb3V0cHV0ICBbICA1OiAwXSByZmlmb191c2VkOwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICAgICAgICAgICBmaWZvX3JkOwotICBpbnB1dCAgICAgICAgICAgIHJzdF9uOwotCi0gIHJlZyAgICAgWyAzMTogMF0gYnl0ZXNfbGVmdDsKLSAgd2lyZSAgICAgICAgICAgICBmaWZvX0VGOwotICByZWcgICAgICAgICAgICAgIGZpZm9fcmRfZDsKLSAgd2lyZSAgICBbICA3OiAwXSBmaWZvX3JkYXRhOwotICB3aXJlICAgICAgICAgICAgIG5ld19yb207Ci0gIHdpcmUgICAgWyAzMTogMF0gbnVtX2J5dGVzOwotICB3aXJlICAgIFsgIDY6IDBdIHJmaWZvX2VudHJpZXM7Ci0gIHdpcmUgICAgICAgICAgICAgcmZpZm9fZnVsbDsKLSAgd2lyZSAgICBbICA1OiAwXSByZmlmb191c2VkOwotICB3aXJlICAgICAgICAgICAgIHNhZmU7Ci0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vanRhZ191YXJ0X2Ryb20sIHdoaWNoIGlzIGFuIGVfZHJvbQotICBqdGFnX3VhcnRfZHJvbV9tb2R1bGUganRhZ191YXJ0X2Ryb20KLSAgICAoCi0gICAgICAuY2xrICAgICAgIChjbGspLAotICAgICAgLmluY3JfYWRkciAoZmlmb19yZF9kKSwKLSAgICAgIC5uZXdfcm9tICAgKG5ld19yb20pLAotICAgICAgLm51bV9ieXRlcyAobnVtX2J5dGVzKSwKLSAgICAgIC5xICAgICAgICAgKGZpZm9fcmRhdGEpLAotICAgICAgLnJlc2V0X24gICAocnN0X24pLAotICAgICAgLnNhZmUgICAgICAoc2FmZSkKLSAgICApOwotCi0gIC8vIEdlbmVyYXRlIHJmaWZvX2VudHJpZXMgZm9yIHNpbXVsYXRpb24KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByc3RfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJzdF9uID09IDApCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgYnl0ZXNfbGVmdCA8PSAzMidoMDsKLSAgICAgICAgICBmaWZvX3JkX2QgPD0gMSdiMDsKLSAgICAgICAgZW5kCi0gICAgICBlbHNlIAotICAgICAgICBiZWdpbgotICAgICAgICAgIGZpZm9fcmRfZCA8PSBmaWZvX3JkOwotICAgICAgICAgIC8vIGRlY3JlbWVudCBvbiByZWFkCi0gICAgICAgICAgaWYgKGZpZm9fcmRfZCkKLSAgICAgICAgICAgICAgYnl0ZXNfbGVmdCA8PSBieXRlc19sZWZ0IC0gMSdiMTsKLSAgICAgICAgICAvLyBjYXRjaCBuZXcgY29udGVudHMKLSAgICAgICAgICBpZiAobmV3X3JvbSkKLSAgICAgICAgICAgICAgYnl0ZXNfbGVmdCA8PSBudW1fYnl0ZXM7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgYXNzaWduIGZpZm9fRUYgPSBieXRlc19sZWZ0ID09IDMyJ2IwOwotICBhc3NpZ24gcmZpZm9fZnVsbCA9IGJ5dGVzX2xlZnQgPiA3J2g0MDsKLSAgYXNzaWduIHJmaWZvX2VudHJpZXMgPSAocmZpZm9fZnVsbCkgPyA3J2g0MCA6IGJ5dGVzX2xlZnQ7Ci0gIGFzc2lnbiByZmlmb191c2VkID0gcmZpZm9fZW50cmllc1s1IDogMF07Ci0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGp0YWdfdWFydF9zY2ZpZm9fciAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZm9fY2xlYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZm9fcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0X2RhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfcmZpZm8sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX0VGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWZvX3JkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZmlmb19mdWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZmlmb191c2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGZpZm9fRUY7Ci0gIG91dHB1dCAgWyAgNzogMF0gZmlmb19yZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICByZmlmb19mdWxsOwotICBvdXRwdXQgIFsgIDU6IDBdIHJmaWZvX3VzZWQ7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIGZpZm9fY2xlYXI7Ci0gIGlucHV0ICAgICAgICAgICAgZmlmb19yZDsKLSAgaW5wdXQgICAgICAgICAgICByc3RfbjsKLSAgaW5wdXQgICBbICA3OiAwXSB0X2RhdDsKLSAgaW5wdXQgICAgICAgICAgICB3cl9yZmlmbzsKLQotICB3aXJlICAgICAgICAgICAgIGZpZm9fRUY7Ci0gIHdpcmUgICAgWyAgNzogMF0gZmlmb19yZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICByZmlmb19mdWxsOwotICB3aXJlICAgIFsgIDU6IDBdIHJmaWZvX3VzZWQ7Ci0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIGp0YWdfdWFydF9zaW1fc2NmaWZvX3IgdGhlX2p0YWdfdWFydF9zaW1fc2NmaWZvX3IKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAoY2xrKSwKLSAgICAgIC5maWZvX0VGICAgIChmaWZvX0VGKSwKLSAgICAgIC5maWZvX3JkICAgIChmaWZvX3JkKSwKLSAgICAgIC5maWZvX3JkYXRhIChmaWZvX3JkYXRhKSwKLSAgICAgIC5yZmlmb19mdWxsIChyZmlmb19mdWxsKSwKLSAgICAgIC5yZmlmb191c2VkIChyZmlmb191c2VkKSwKLSAgICAgIC5yc3RfbiAgICAgIChyc3RfbikKLSAgICApOwotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLS8vc3ludGhlc2lzIHJlYWRfY29tbWVudHNfYXNfSERMIG9uCi0vLyAgc2NmaWZvIHJmaWZvCi0vLyAgICAoCi0vLyAgICAgIC5hY2xyIChmaWZvX2NsZWFyKSwKLS8vICAgICAgLmNsb2NrIChjbGspLAotLy8gICAgICAuZGF0YSAodF9kYXQpLAotLy8gICAgICAuZW1wdHkgKGZpZm9fRUYpLAotLy8gICAgICAuZnVsbCAocmZpZm9fZnVsbCksCi0vLyAgICAgIC5xIChmaWZvX3JkYXRhKSwKLS8vICAgICAgLnJkcmVxIChmaWZvX3JkKSwKLS8vICAgICAgLnVzZWR3IChyZmlmb191c2VkKSwKLS8vICAgICAgLndycmVxICh3cl9yZmlmbykKLS8vICAgICk7Ci0vLwotLy8gIGRlZnBhcmFtIHJmaWZvLmxwbV9oaW50ID0gIlJBTV9CTE9DS19UWVBFPUFVVE8iLAotLy8gICAgICAgICAgIHJmaWZvLmxwbV9udW13b3JkcyA9IDY0LAotLy8gICAgICAgICAgIHJmaWZvLmxwbV9zaG93YWhlYWQgPSAiT0ZGIiwKLS8vICAgICAgICAgICByZmlmby5scG1fdHlwZSA9ICJzY2ZpZm8iLAotLy8gICAgICAgICAgIHJmaWZvLmxwbV93aWR0aCA9IDgsCi0vLyAgICAgICAgICAgcmZpZm8ubHBtX3dpZHRodSA9IDYsCi0vLyAgICAgICAgICAgcmZpZm8ub3ZlcmZsb3dfY2hlY2tpbmcgPSAiT0ZGIiwKLS8vICAgICAgICAgICByZmlmby51bmRlcmZsb3dfY2hlY2tpbmcgPSAiT0ZGIiwKLS8vICAgICAgICAgICByZmlmby51c2VfZWFiID0gIk9OIjsKLS8vCi0vL3N5bnRoZXNpcyByZWFkX2NvbW1lbnRzX2FzX0hETCBvZmYKLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGp0YWdfdWFydCAoCi0gICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICBhdl9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICBhdl9jaGlwc2VsZWN0LAotICAgICAgICAgICAgICAgICAgICBhdl9yZWFkX24sCi0gICAgICAgICAgICAgICAgICAgIGF2X3dyaXRlX24sCi0gICAgICAgICAgICAgICAgICAgIGF2X3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICByc3RfbiwKLQotICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgIGF2X2lycSwKLSAgICAgICAgICAgICAgICAgICAgYXZfcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgIGF2X3dhaXRyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICBkYXRhYXZhaWxhYmxlLAotICAgICAgICAgICAgICAgICAgICByZWFkeWZvcmRhdGEKLSAgICAgICAgICAgICAgICAgKQotICAvKiBzeW50aGVzaXMgQUxURVJBX0FUVFJJQlVURSA9ICJTVVBQUkVTU19EQV9SVUxFX0lOVEVSTkFMPVwiUjEwMSxDMTA2LEQxMDEsRDEwM1wiIiAqLyA7Ci0KLSAgb3V0cHV0ICAgICAgICAgICBhdl9pcnE7Ci0gIG91dHB1dCAgWyAzMTogMF0gYXZfcmVhZGRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgYXZfd2FpdHJlcXVlc3Q7Ci0gIG91dHB1dCAgICAgICAgICAgZGF0YWF2YWlsYWJsZTsKLSAgb3V0cHV0ICAgICAgICAgICByZWFkeWZvcmRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgYXZfYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBhdl9jaGlwc2VsZWN0OwotICBpbnB1dCAgICAgICAgICAgIGF2X3JlYWRfbjsKLSAgaW5wdXQgICAgICAgICAgICBhdl93cml0ZV9uOwotICBpbnB1dCAgIFsgMzE6IDBdIGF2X3dyaXRlZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgICAgICAgICAgcnN0X247Ci0KLSAgcmVnICAgICAgICAgICAgICBhYzsKLSAgd2lyZSAgICAgICAgICAgICBhY3Rpdml0eTsKLSAgd2lyZSAgICAgICAgICAgICBhdl9pcnE7Ci0gIHdpcmUgICAgWyAzMTogMF0gYXZfcmVhZGRhdGE7Ci0gIHJlZyAgICAgICAgICAgICAgYXZfd2FpdHJlcXVlc3Q7Ci0gIHJlZyAgICAgICAgICAgICAgZGF0YWF2YWlsYWJsZTsKLSAgcmVnICAgICAgICAgICAgICBmaWZvX0FFOwotICByZWcgICAgICAgICAgICAgIGZpZm9fQUY7Ci0gIHdpcmUgICAgICAgICAgICAgZmlmb19FRjsKLSAgd2lyZSAgICAgICAgICAgICBmaWZvX0ZGOwotICB3aXJlICAgICAgICAgICAgIGZpZm9fY2xlYXI7Ci0gIHdpcmUgICAgICAgICAgICAgZmlmb19yZDsKLSAgd2lyZSAgICBbICA3OiAwXSBmaWZvX3JkYXRhOwotICB3aXJlICAgIFsgIDc6IDBdIGZpZm9fd2RhdGE7Ci0gIHJlZyAgICAgICAgICAgICAgZmlmb193cjsKLSAgcmVnICAgICAgICAgICAgICBpZW5fQUU7Ci0gIHJlZyAgICAgICAgICAgICAgaWVuX0FGOwotICB3aXJlICAgICAgICAgICAgIGlwZW5fQUU7Ci0gIHdpcmUgICAgICAgICAgICAgaXBlbl9BRjsKLSAgcmVnICAgICAgICAgICAgICBwYXVzZV9pcnE7Ci0gIHdpcmUgICAgWyAgNzogMF0gcl9kYXQ7Ci0gIHdpcmUgICAgICAgICAgICAgcl9lbmE7Ci0gIHJlZyAgICAgICAgICAgICAgcl92YWw7Ci0gIHdpcmUgICAgICAgICAgICAgcmRfd2ZpZm87Ci0gIHJlZyAgICAgICAgICAgICAgcmVhZF8wOwotICByZWcgICAgICAgICAgICAgIHJlYWR5Zm9yZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICByZmlmb19mdWxsOwotICB3aXJlICAgIFsgIDU6IDBdIHJmaWZvX3VzZWQ7Ci0gIHJlZyAgICAgICAgICAgICAgcnZhbGlkOwotICByZWcgICAgICAgICAgICAgIHNpbV9yX2VuYTsKLSAgcmVnICAgICAgICAgICAgICBzaW1fdF9kYXQ7Ci0gIHJlZyAgICAgICAgICAgICAgc2ltX3RfZW5hOwotICByZWcgICAgICAgICAgICAgIHNpbV90X3BhdXNlOwotICB3aXJlICAgIFsgIDc6IDBdIHRfZGF0OwotICByZWcgICAgICAgICAgICAgIHRfZGF2OwotICB3aXJlICAgICAgICAgICAgIHRfZW5hOwotICB3aXJlICAgICAgICAgICAgIHRfcGF1c2U7Ci0gIHdpcmUgICAgICAgICAgICAgd2ZpZm9fZW1wdHk7Ci0gIHdpcmUgICAgWyAgNTogMF0gd2ZpZm9fdXNlZDsKLSAgcmVnICAgICAgICAgICAgICB3b3ZlcmZsb3c7Ci0gIHdpcmUgICAgICAgICAgICAgd3JfcmZpZm87Ci0gIC8vYXZhbG9uX2p0YWdfc2xhdmUsIHdoaWNoIGlzIGFuIGVfYXZhbG9uX3NsYXZlCi0gIGFzc2lnbiByZF93ZmlmbyA9IHJfZW5hICYgfndmaWZvX2VtcHR5OwotICBhc3NpZ24gd3JfcmZpZm8gPSB0X2VuYSAmIH5yZmlmb19mdWxsOwotICBhc3NpZ24gZmlmb19jbGVhciA9IH5yc3RfbjsKLSAganRhZ191YXJ0X3NjZmlmb193IHRoZV9qdGFnX3VhcnRfc2NmaWZvX3cKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgKGNsayksCi0gICAgICAuZmlmb19GRiAgICAgKGZpZm9fRkYpLAotICAgICAgLmZpZm9fY2xlYXIgIChmaWZvX2NsZWFyKSwKLSAgICAgIC5maWZvX3dkYXRhICAoZmlmb193ZGF0YSksCi0gICAgICAuZmlmb193ciAgICAgKGZpZm9fd3IpLAotICAgICAgLnJfZGF0ICAgICAgIChyX2RhdCksCi0gICAgICAucmRfd2ZpZm8gICAgKHJkX3dmaWZvKSwKLSAgICAgIC53Zmlmb19lbXB0eSAod2ZpZm9fZW1wdHkpLAotICAgICAgLndmaWZvX3VzZWQgICh3Zmlmb191c2VkKQotICAgICk7Ci0KLSAganRhZ191YXJ0X3NjZmlmb19yIHRoZV9qdGFnX3VhcnRfc2NmaWZvX3IKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAoY2xrKSwKLSAgICAgIC5maWZvX0VGICAgIChmaWZvX0VGKSwKLSAgICAgIC5maWZvX2NsZWFyIChmaWZvX2NsZWFyKSwKLSAgICAgIC5maWZvX3JkICAgIChmaWZvX3JkKSwKLSAgICAgIC5maWZvX3JkYXRhIChmaWZvX3JkYXRhKSwKLSAgICAgIC5yZmlmb19mdWxsIChyZmlmb19mdWxsKSwKLSAgICAgIC5yZmlmb191c2VkIChyZmlmb191c2VkKSwKLSAgICAgIC5yc3RfbiAgICAgIChyc3RfbiksCi0gICAgICAudF9kYXQgICAgICAodF9kYXQpLAotICAgICAgLndyX3JmaWZvICAgKHdyX3JmaWZvKQotICAgICk7Ci0KLSAgYXNzaWduIGlwZW5fQUUgPSBpZW5fQUUgJiBmaWZvX0FFOwotICBhc3NpZ24gaXBlbl9BRiA9IGllbl9BRiAmIChwYXVzZV9pcnEgfCBmaWZvX0FGKTsKLSAgYXNzaWduIGF2X2lycSA9IGlwZW5fQUUgfCBpcGVuX0FGOwotICBhc3NpZ24gYWN0aXZpdHkgPSB0X3BhdXNlIHwgdF9lbmE7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcnN0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyc3RfbiA9PSAwKQotICAgICAgICAgIHBhdXNlX2lycSA8PSAxJ2IwOwotICAgICAgZWxzZSAvLyBvbmx5IGlmIGZpZm8gaXMgbm90IGVtcHR5Li4uCi0gICAgICBpZiAodF9wYXVzZSAmIH5maWZvX0VGKQotICAgICAgICAgIHBhdXNlX2lycSA8PSAxJ2IxOwotICAgICAgZWxzZSBpZiAocmVhZF8wKQotICAgICAgICAgIHBhdXNlX2lycSA8PSAxJ2IwOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByc3RfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJzdF9uID09IDApCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgcl92YWwgPD0gMSdiMDsKLSAgICAgICAgICB0X2RhdiA8PSAxJ2IxOwotICAgICAgICBlbmQKLSAgICAgIGVsc2UgCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgcl92YWwgPD0gcl9lbmEgJiB+d2ZpZm9fZW1wdHk7Ci0gICAgICAgICAgdF9kYXYgPD0gfnJmaWZvX2Z1bGw7Ci0gICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByc3RfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJzdF9uID09IDApCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgZmlmb19BRSA8PSAxJ2IwOwotICAgICAgICAgIGZpZm9fQUYgPD0gMSdiMDsKLSAgICAgICAgICBmaWZvX3dyIDw9IDEnYjA7Ci0gICAgICAgICAgcnZhbGlkIDw9IDEnYjA7Ci0gICAgICAgICAgcmVhZF8wIDw9IDEnYjA7Ci0gICAgICAgICAgaWVuX0FFIDw9IDEnYjA7Ci0gICAgICAgICAgaWVuX0FGIDw9IDEnYjA7Ci0gICAgICAgICAgYWMgPD0gMSdiMDsKLSAgICAgICAgICB3b3ZlcmZsb3cgPD0gMSdiMDsKLSAgICAgICAgICBhdl93YWl0cmVxdWVzdCA8PSAxJ2IxOwotICAgICAgICBlbmQKLSAgICAgIGVsc2UgCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgZmlmb19BRSA8PSB7Zmlmb19GRix3Zmlmb191c2VkfSA8PSA4OwotICAgICAgICAgIGZpZm9fQUYgPD0gKDcnaDQwIC0ge3JmaWZvX2Z1bGwscmZpZm9fdXNlZH0pIDw9IDg7Ci0gICAgICAgICAgZmlmb193ciA8PSAxJ2IwOwotICAgICAgICAgIHJlYWRfMCA8PSAxJ2IwOwotICAgICAgICAgIGF2X3dhaXRyZXF1ZXN0IDw9IH4oYXZfY2hpcHNlbGVjdCAmICh+YXZfd3JpdGVfbiB8IH5hdl9yZWFkX24pICYgYXZfd2FpdHJlcXVlc3QpOwotICAgICAgICAgIGlmIChhY3Rpdml0eSkKLSAgICAgICAgICAgICAgYWMgPD0gMSdiMTsKLSAgICAgICAgICAvLyB3cml0ZQotICAgICAgICAgIGlmIChhdl9jaGlwc2VsZWN0ICYgfmF2X3dyaXRlX24gJiBhdl93YWl0cmVxdWVzdCkKLSAgICAgICAgICAgICAgLy8gYWRkciAxIGlzIGNvbnRyb2w7IGFkZHIgMCBpcyBkYXRhCi0gICAgICAgICAgICAgIGlmIChhdl9hZGRyZXNzKQotICAgICAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICAgICBpZW5fQUYgPD0gYXZfd3JpdGVkYXRhWzBdOwotICAgICAgICAgICAgICAgICAgaWVuX0FFIDw9IGF2X3dyaXRlZGF0YVsxXTsKLSAgICAgICAgICAgICAgICAgIGlmIChhdl93cml0ZWRhdGFbMTBdICYgfmFjdGl2aXR5KQotICAgICAgICAgICAgICAgICAgICAgIGFjIDw9IDEnYjA7Ci0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgICAgIGZpZm9fd3IgPD0gfmZpZm9fRkY7Ci0gICAgICAgICAgICAgICAgICB3b3ZlcmZsb3cgPD0gZmlmb19GRjsKLSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAvLyByZWFkCi0gICAgICAgICAgaWYgKGF2X2NoaXBzZWxlY3QgJiB+YXZfcmVhZF9uICYgYXZfd2FpdHJlcXVlc3QpCi0gICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAvLyBhZGRyIDEgaXMgaW50ZXJydXB0OyBhZGRyIDAgaXMgZGF0YQotICAgICAgICAgICAgICBpZiAofmF2X2FkZHJlc3MpCi0gICAgICAgICAgICAgICAgICBydmFsaWQgPD0gfmZpZm9fRUY7Ci0gICAgICAgICAgICAgIHJlYWRfMCA8PSB+YXZfYWRkcmVzczsKLSAgICAgICAgICAgIGVuZAotICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBmaWZvX3dkYXRhID0gYXZfd3JpdGVkYXRhWzcgOiAwXTsKLSAgYXNzaWduIGZpZm9fcmQgPSAoYXZfY2hpcHNlbGVjdCAmIH5hdl9yZWFkX24gJiBhdl93YWl0cmVxdWVzdCAmIH5hdl9hZGRyZXNzKSA/IH5maWZvX0VGIDogMSdiMDsKLSAgYXNzaWduIGF2X3JlYWRkYXRhID0gcmVhZF8wID8geyB7OXsxJ2IwfX0scmZpZm9fZnVsbCxyZmlmb191c2VkLHJ2YWxpZCx3b3ZlcmZsb3csfmZpZm9fRkYsfmZpZm9fRUYsMSdiMCxhYyxpcGVuX0FFLGlwZW5fQUYsZmlmb19yZGF0YSB9IDogeyB7OXsxJ2IwfX0sKDcnaDQwIC0ge2ZpZm9fRkYsd2ZpZm9fdXNlZH0pLHJ2YWxpZCx3b3ZlcmZsb3csfmZpZm9fRkYsfmZpZm9fRUYsMSdiMCxhYyxpcGVuX0FFLGlwZW5fQUYsezZ7MSdiMH19LGllbl9BRSxpZW5fQUYgfTsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByc3RfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJzdF9uID09IDApCi0gICAgICAgICAgcmVhZHlmb3JkYXRhIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICByZWFkeWZvcmRhdGEgPD0gfmZpZm9fRkY7Ci0gICAgZW5kCi0KLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICAvLyBUaWUgb2ZmIEF0bGFudGljIEludGVyZmFjZSBzaWduYWxzIG5vdCB1c2VkIGZvciBzaW11bGF0aW9uCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBzaW1fdF9wYXVzZSA8PSAxJ2IwOwotICAgICAgc2ltX3RfZW5hIDw9IDEnYjA7Ci0gICAgICBzaW1fdF9kYXQgPD0gdF9kYXYgPyByX2RhdCA6IHs4e3JfdmFsfX07Ci0gICAgICBzaW1fcl9lbmEgPD0gMSdiMDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiByX2VuYSA9IHNpbV9yX2VuYTsKLSAgYXNzaWduIHRfZW5hID0gc2ltX3RfZW5hOwotICBhc3NpZ24gdF9kYXQgPSBzaW1fdF9kYXQ7Ci0gIGFzc2lnbiB0X3BhdXNlID0gc2ltX3RfcGF1c2U7Ci0gIGFsd2F5cyBAKGZpZm9fRUYpCi0gICAgYmVnaW4KLSAgICAgIGRhdGFhdmFpbGFibGUgPSB+Zmlmb19FRjsKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLS8vc3ludGhlc2lzIHJlYWRfY29tbWVudHNfYXNfSERMIG9uCi0vLyAgYWx0X2p0YWdfYXRsYW50aWMganRhZ191YXJ0X2FsdF9qdGFnX2F0bGFudGljCi0vLyAgICAoCi0vLyAgICAgIC5jbGsgKGNsayksCi0vLyAgICAgIC5yX2RhdCAocl9kYXQpLAotLy8gICAgICAucl9lbmEgKHJfZW5hKSwKLS8vICAgICAgLnJfdmFsIChyX3ZhbCksCi0vLyAgICAgIC5yc3RfbiAocnN0X24pLAotLy8gICAgICAudF9kYXQgKHRfZGF0KSwKLS8vICAgICAgLnRfZGF2ICh0X2RhdiksCi0vLyAgICAgIC50X2VuYSAodF9lbmEpLAotLy8gICAgICAudF9wYXVzZSAodF9wYXVzZSkKLS8vICAgICk7Ci0vLwotLy8gIGRlZnBhcmFtIGp0YWdfdWFydF9hbHRfanRhZ19hdGxhbnRpYy5JTlNUQU5DRV9JRCA9IDAsCi0vLyAgICAgICAgICAganRhZ191YXJ0X2FsdF9qdGFnX2F0bGFudGljLkxPRzJfUlhGSUZPX0RFUFRIID0gNiwKLS8vICAgICAgICAgICBqdGFnX3VhcnRfYWx0X2p0YWdfYXRsYW50aWMuTE9HMl9UWEZJRk9fREVQVEggPSA2LAotLy8gICAgICAgICAgIGp0YWdfdWFydF9hbHRfanRhZ19hdGxhbnRpYy5TTERfQVVUT19JTlNUQU5DRV9JTkRFWCA9ICJZRVMiOwotLy8KLS8vICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJzdF9uKQotLy8gICAgYmVnaW4KLS8vICAgICAgaWYgKHJzdF9uID09IDApCi0vLyAgICAgICAgICBkYXRhYXZhaWxhYmxlIDw9IDA7Ci0vLyAgICAgIGVsc2UgCi0vLyAgICAgICAgZGF0YWF2YWlsYWJsZSA8PSB+Zmlmb19FRjsKLS8vICAgIGVuZAotLy8KLS8vCi0vL3N5bnRoZXNpcyByZWFkX2NvbW1lbnRzX2FzX0hETCBvZmYKLQotZW5kbW9kdWxlCi0KLQotLyogU0xsaW5lIDIwNDgxICJjdXN0b21fZG1hLnYiIDIgKi8KLS8qIFNMbGluZSAxICJjdXN0b21fZG1hX2J1cnN0XzAudiIgMSAqLwotLy9MZWdhbCBOb3RpY2U6IChDKTIwMTAgQWx0ZXJhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgWW91cgotLy91c2Ugb2YgQWx0ZXJhIENvcnBvcmF0aW9uJ3MgZGVzaWduIHRvb2xzLCBsb2dpYyBmdW5jdGlvbnMgYW5kIG90aGVyCi0vL3NvZnR3YXJlIGFuZCB0b29scywgYW5kIGl0cyBBTVBQIHBhcnRuZXIgbG9naWMgZnVuY3Rpb25zLCBhbmQgYW55Ci0vL291dHB1dCBmaWxlcyBhbnkgb2YgdGhlIGZvcmVnb2luZyAoaW5jbHVkaW5nIGRldmljZSBwcm9ncmFtbWluZyBvcgotLy9zaW11bGF0aW9uIGZpbGVzKSwgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gYXJlCi0vL2V4cHJlc3NseSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQWx0ZXJhIFByb2dyYW0KLS8vTGljZW5zZSBTdWJzY3JpcHRpb24gQWdyZWVtZW50IG9yIG90aGVyIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnQsCi0vL2luY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCB0aGF0IHlvdXIgdXNlIGlzIGZvciB0aGUgc29sZSBwdXJwb3NlCi0vL29mIHByb2dyYW1taW5nIGxvZ2ljIGRldmljZXMgbWFudWZhY3R1cmVkIGJ5IEFsdGVyYSBhbmQgc29sZCBieSBBbHRlcmEKLS8vb3IgaXRzIGF1dGhvcml6ZWQgZGlzdHJpYnV0b3JzLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBhcHBsaWNhYmxlCi0vL2FncmVlbWVudCBmb3IgZnVydGhlciBkZXRhaWxzLgotCi0vLyBzeW50aGVzaXMgdHJhbnNsYXRlX29mZgotYHRpbWVzY2FsZSAxbnMgLyAxcHMKLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLS8vCi0vL0J1cnN0IGFkYXB0ZXIgcGFyYW1ldGVyczoKLS8vYWRhcHRlciBpcyBtYXN0ZXJlZCBieTogY3B1L2RhdGFfbWFzdGVyCi0vL2FkYXB0ZXIgbWFzdGVyczogZXh0X3NzcmFtL3MxCi0vL2FzcF9kZWJ1ZzogMAotLy9ieXRlYWRkcl93aWR0aDogMjMKLS8vY2VpbF9kYXRhX3dpZHRoOiAzMgotLy9kYXRhX3dpZHRoOiAzMgotLy9kYnNfc2hpZnQ6IDAKLS8vZGJzX3Vwc3RyZWFtX2J1cnN0Y291bnRfd2lkdGg6IDQKLS8vZG93bnN0cmVhbV9hZGRyX3NoaWZ0OiAyCi0vL2Rvd25zdHJlYW1fYnVyc3Rjb3VudF93aWR0aDogMQotLy9kb3duc3RyZWFtX21heF9idXJzdGNvdW50OiAxCi0vL2Rvd25zdHJlYW1fcGlwZWxpbmU6IDEKLS8vZHluYW1pY19zbGF2ZTogMQotLy9tYXN0ZXJfYWx3YXlzX2J1cnN0X21heF9idXJzdDogMAotLy9tYXN0ZXJfYnVyc3Rfb25fYnVyc3RfYm91bmRhcmllc19vbmx5OiAxCi0vL21hc3Rlcl9kYXRhX3dpZHRoOiAzMgotLy9tYXN0ZXJfaW50ZXJsZWF2ZTogMAotLy9tYXN0ZXJfbGluZXdyYXBfYnVyc3RzOiAwCi0vL25hdGl2ZWFkZHJfd2lkdGg6IDIxCi0vL3NsYXZlX2Fsd2F5c19idXJzdF9tYXhfYnVyc3Q6IDAKLS8vc2xhdmVfYnVyc3Rfb25fYnVyc3RfYm91bmRhcmllc19vbmx5OiAwCi0vL3NsYXZlX2ludGVybGVhdmU6IDAKLS8vc2xhdmVfbGluZXdyYXBfYnVyc3RzOiAwCi0vL3Vwc3RyZWFtX2J1cnN0Y291bnQ6IHVwc3RyZWFtX2J1cnN0Y291bnQKLS8vdXBzdHJlYW1fYnVyc3Rjb3VudF93aWR0aDogNAotLy91cHN0cmVhbV9tYXhfYnVyc3Rjb3VudDogOAotLy96ZXJvX2FkZHJlc3Nfd2lkdGg6IDAKLQotCi1tb2R1bGUgY3VzdG9tX2RtYV9idXJzdF8wICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duc3RyZWFtX3dhaXRyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fbmF0aXZlYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3dyaXRlZGF0YSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fd2FpdHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAyMDogMF0gcmVnX2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgb3V0cHV0ICBbICAzOiAwXSByZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICBvdXRwdXQgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIG91dHB1dCAgWyAgMzogMF0gcmVnX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgb3V0cHV0ICAgICAgICAgICByZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICBbIDIwOiAwXSByZWdfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3JlYWQ7Ci0gIG91dHB1dCAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotICBvdXRwdXQgIFsgMzE6IDBdIHVwc3RyZWFtX3JlYWRkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHVwc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIG91dHB1dCAgICAgICAgICAgdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgMzE6IDBdIGRvd25zdHJlYW1fcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICBpbnB1dCAgICAgICAgICAgIGRvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICBbIDIyOiAwXSB1cHN0cmVhbV9hZGRyZXNzOwotICBpbnB1dCAgIFsgIDM6IDBdIHVwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgWyAgMzogMF0gdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICB1cHN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgaW5wdXQgICBbIDIwOiAwXSB1cHN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIHVwc3RyZWFtX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgdXBzdHJlYW1fd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gdXBzdHJlYW1fd3JpdGVkYXRhOwotCi0gIHdpcmUgICAgWyAgMjogMF0gYWRkcmVzc19vZmZzZXQ7Ci0gIHJlZyAgICAgICAgICAgICAgYXRvbWljX2NvdW50ZXI7Ci0gIHdpcmUgICAgWyAyMjogMF0gY3VycmVudF91cHN0cmVhbV9hZGRyZXNzOwotICB3aXJlICAgIFsgIDM6IDBdIGN1cnJlbnRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICAgICAgICAgICBjdXJyZW50X3Vwc3RyZWFtX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VycmVudF91cHN0cmVhbV93cml0ZTsKLSAgcmVnICAgICBbICAzOiAwXSBkYXRhX2NvdW50ZXI7Ci0gIHdpcmUgICAgWyAgMzogMF0gZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAyMDogMF0gZG93bnN0cmVhbV9hZGRyZXNzOwotICB3aXJlICAgIFsgMjI6IDBdIGRvd25zdHJlYW1fYWRkcmVzc19iYXNlOwotICB3aXJlICAgIFsgIDM6IDBdIGRvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZTsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9idXJzdGRvbmU7Ci0gIHdpcmUgICAgWyAgMzogMF0gZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgWyAyMDogMF0gZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICByZWcgICAgICAgICAgICAgIGRvd25zdHJlYW1fcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX3dyaXRlOwotICByZWcgICAgICAgICAgICAgIGRvd25zdHJlYW1fd3JpdGVfcmVnOwotICB3aXJlICAgIFsgMzE6IDBdIGRvd25zdHJlYW1fd3JpdGVkYXRhOwotICB3aXJlICAgICAgICAgICAgIGVuYWJsZV9zdGF0ZV9jaGFuZ2U7Ci0gIHdpcmUgICAgICAgICAgICAgZmlmb19lbXB0eTsKLSAgd2lyZSAgICAgICAgICAgICBtYXhfYnVyc3Rfc2l6ZTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9hdG9taWNfY291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBwMV9maWZvX2VtcHR5OwotICB3aXJlICAgICAgICAgICAgIHAxX3N0YXRlX2J1c3k7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfc3RhdGVfaWRsZTsKLSAgd2lyZSAgICAgICAgICAgICBwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWQ7Ci0gIHJlZyAgICAgICAgICAgICAgcGVuZGluZ191cHN0cmVhbV9yZWFkX3JlZzsKLSAgd2lyZSAgICAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlOwotICByZWcgICAgICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fd3JpdGVfcmVnOwotICByZWcgICAgIFsgIDI6IDBdIHJlYWRfYWRkcmVzc19vZmZzZXQ7Ci0gIHdpcmUgICAgICAgICAgICAgcmVhZF91cGRhdGVfY291bnQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgcmVnICAgICBbIDIwOiAwXSByZWdfZG93bnN0cmVhbV9hZGRyZXNzOwotICByZWcgICAgIFsgIDM6IDBdIHJlZ19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmU7Ci0gIHJlZyAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgcmVnICAgICBbICAzOiAwXSByZWdfZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICByZWcgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICByZWcgICAgIFsgMjA6IDBdIHJlZ19kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIHJlZyAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fcmVhZDsKLSAgcmVnICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV93cml0ZTsKLSAgcmVnICAgICBbIDMxOiAwXSByZWdfZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIHJlZyAgICAgWyAgMzogMF0gcmVnaXN0ZXJlZF9yZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICByZWcgICAgIFsgMjI6IDBdIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYWRkcmVzczsKLSAgcmVnICAgICBbICAzOiAwXSByZWdpc3RlcmVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHJlZyAgICAgWyAgMzogMF0gcmVnaXN0ZXJlZF91cHN0cmVhbV9ieXRlZW5hYmxlOwotICByZWcgICAgIFsgMjA6IDBdIHJlZ2lzdGVyZWRfdXBzdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgcmVnICAgICAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3JlYWQ7Ci0gIHJlZyAgICAgICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV93cml0ZTsKLSAgcmVnICAgICAgICAgICAgICBzdGF0ZV9idXN5OwotICByZWcgICAgICAgICAgICAgIHN0YXRlX2lkbGU7Ci0gIHdpcmUgICAgICAgICAgICAgc3luY19uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgIFsgIDM6IDBdIHRyYW5zYWN0aW9uc19yZW1haW5pbmc7Ci0gIHJlZyAgICAgWyAgMzogMF0gdHJhbnNhY3Rpb25zX3JlbWFpbmluZ19yZWc7Ci0gIHdpcmUgICAgICAgICAgICAgdXBkYXRlX2NvdW50OwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX2J1cnN0ZG9uZTsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9yZWFkX3J1bjsKLSAgd2lyZSAgICBbIDMxOiAwXSB1cHN0cmVhbV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3dyaXRlX3J1bjsKLSAgcmVnICAgICBbICAyOiAwXSB3cml0ZV9hZGRyZXNzX29mZnNldDsKLSAgd2lyZSAgICAgICAgICAgICB3cml0ZV91cGRhdGVfY291bnQ7Ci0gIGFzc2lnbiBzeW5jX25hdGl2ZWFkZHJlc3MgPSB8dXBzdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgLy9kb3duc3RyZWFtLCB3aGljaCBpcyBhbiBlX2F2YWxvbl9tYXN0ZXIKLSAgLy91cHN0cmVhbSwgd2hpY2ggaXMgYW4gZV9hdmFsb25fc2xhdmUKLSAgYXNzaWduIHVwc3RyZWFtX2J1cnN0ZG9uZSA9IGN1cnJlbnRfdXBzdHJlYW1fcmVhZCA/ICh0cmFuc2FjdGlvbnNfcmVtYWluaW5nID09IGRvd25zdHJlYW1fYnVyc3Rjb3VudCkgJiBkb3duc3RyZWFtX3JlYWQgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCA6ICh0cmFuc2FjdGlvbnNfcmVtYWluaW5nID09IChhdG9taWNfY291bnRlciArIDEpKSAmIGRvd25zdHJlYW1fd3JpdGUgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdDsKLSAgYXNzaWduIHAxX2F0b21pY19jb3VudGVyID0gYXRvbWljX2NvdW50ZXIgKyAoZG93bnN0cmVhbV9yZWFkID8gZG93bnN0cmVhbV9idXJzdGNvdW50IDogMSk7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2J1cnN0ZG9uZSA9IChkb3duc3RyZWFtX3JlYWQgfCBkb3duc3RyZWFtX3dyaXRlKSAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ICYgKHAxX2F0b21pY19jb3VudGVyID09IGRvd25zdHJlYW1fYnVyc3Rjb3VudCk7Ci0gIGFzc2lnbiBkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA9IHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlID8gcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA6IHJlZ2lzdGVyZWRfcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgYXNzaWduIHJlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgPSB1cHN0cmVhbV9idXJzdGNvdW50OwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF9yZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDw9IDA7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3JlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgPD0gcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBwMV9zdGF0ZV9pZGxlID0gc3RhdGVfaWRsZSAmIH51cHN0cmVhbV9yZWFkICYgfnVwc3RyZWFtX3dyaXRlIHwgc3RhdGVfYnVzeSAmIChkYXRhX2NvdW50ZXIgPT0gMCkgJiBwMV9maWZvX2VtcHR5ICYgfnBlbmRpbmdfdXBzdHJlYW1fcmVhZCAmIH5wZW5kaW5nX3Vwc3RyZWFtX3dyaXRlOwotICBhc3NpZ24gcDFfc3RhdGVfYnVzeSA9IHN0YXRlX2lkbGUgJiAodXBzdHJlYW1fcmVhZCB8IHVwc3RyZWFtX3dyaXRlKSB8IHN0YXRlX2J1c3kgJiAofihkYXRhX2NvdW50ZXIgPT0gMCkgfCB+cDFfZmlmb19lbXB0eSB8IHBlbmRpbmdfdXBzdHJlYW1fcmVhZCB8IHBlbmRpbmdfdXBzdHJlYW1fd3JpdGUpOwotICBhc3NpZ24gZW5hYmxlX3N0YXRlX2NoYW5nZSA9IH4oZG93bnN0cmVhbV9yZWFkIHwgZG93bnN0cmVhbV93cml0ZSkgfCB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdDsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fcmVhZF9yZWcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHVwc3RyZWFtX3JlYWQgJiBzdGF0ZV9pZGxlKQotICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fcmVhZF9yZWcgPD0gLTE7Ci0gICAgICBlbHNlIGlmICh1cHN0cmVhbV9idXJzdGRvbmUpCi0gICAgICAgICAgcGVuZGluZ191cHN0cmVhbV9yZWFkX3JlZyA8PSAwOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fd3JpdGVfcmVnIDw9IDA7Ci0gICAgICBlbHNlIGlmICh1cHN0cmVhbV9idXJzdGRvbmUpCi0gICAgICAgICAgcGVuZGluZ191cHN0cmVhbV93cml0ZV9yZWcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHVwc3RyZWFtX3dyaXRlICYgKHN0YXRlX2lkbGUgfCB+dXBzdHJlYW1fd2FpdHJlcXVlc3QpKQotICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fd3JpdGVfcmVnIDw9IC0xOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YXRlX2lkbGUgPD0gMTsKLSAgICAgIGVsc2UgaWYgKGVuYWJsZV9zdGF0ZV9jaGFuZ2UpCi0gICAgICAgICAgc3RhdGVfaWRsZSA8PSBwMV9zdGF0ZV9pZGxlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHN0YXRlX2J1c3kgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGVuYWJsZV9zdGF0ZV9jaGFuZ2UpCi0gICAgICAgICAgc3RhdGVfYnVzeSA8PSBwMV9zdGF0ZV9idXN5OwotICAgIGVuZAotCi0KLSAgYXNzaWduIHBlbmRpbmdfdXBzdHJlYW1fcmVhZCA9IHBlbmRpbmdfdXBzdHJlYW1fcmVhZF9yZWc7Ci0gIGFzc2lnbiBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlID0gcGVuZGluZ191cHN0cmVhbV93cml0ZV9yZWcgJiB+dXBzdHJlYW1fYnVyc3Rkb25lOwotICBhc3NpZ24gcGVuZGluZ19yZWdpc3Rlcl9lbmFibGUgPSBzdGF0ZV9pZGxlIHwgKCh1cHN0cmVhbV9yZWFkIHwgdXBzdHJlYW1fd3JpdGUpICYgfnVwc3RyZWFtX3dhaXRyZXF1ZXN0KTsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fcmVhZCA8PSAwOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9yZWFkIDw9IHVwc3RyZWFtX3JlYWQ7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV93cml0ZSA8PSAwOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV93cml0ZSA8PSB1cHN0cmVhbV93cml0ZTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA8PSB1cHN0cmVhbV9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9hZGRyZXNzIDw9IHVwc3RyZWFtX2FkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9uYXRpdmVhZGRyZXNzIDw9IDA7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX25hdGl2ZWFkZHJlc3MgPD0gdXBzdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBjdXJyZW50X3Vwc3RyZWFtX3JlYWQgPSByZWdpc3RlcmVkX3Vwc3RyZWFtX3JlYWQgJiAhZG93bnN0cmVhbV93cml0ZTsKLSAgYXNzaWduIGN1cnJlbnRfdXBzdHJlYW1fd3JpdGUgPSByZWdpc3RlcmVkX3Vwc3RyZWFtX3dyaXRlOwotICBhc3NpZ24gY3VycmVudF91cHN0cmVhbV9hZGRyZXNzID0gcmVnaXN0ZXJlZF91cHN0cmVhbV9hZGRyZXNzOwotICBhc3NpZ24gY3VycmVudF91cHN0cmVhbV9idXJzdGNvdW50ID0gcGVuZGluZ19yZWdpc3Rlcl9lbmFibGUgPyB1cHN0cmVhbV9idXJzdGNvdW50IDogcmVnaXN0ZXJlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgYXRvbWljX2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKChkb3duc3RyZWFtX3JlYWQgfCBkb3duc3RyZWFtX3dyaXRlKSAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIGF0b21pY19jb3VudGVyIDw9IGRvd25zdHJlYW1fYnVyc3Rkb25lID8gMCA6IHAxX2F0b21pY19jb3VudGVyOwotICAgIGVuZAotCi0KLSAgYXNzaWduIHJlYWRfdXBkYXRlX2NvdW50ID0gY3VycmVudF91cHN0cmVhbV9yZWFkICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGFzc2lnbiB3cml0ZV91cGRhdGVfY291bnQgPSBjdXJyZW50X3Vwc3RyZWFtX3dyaXRlICYgZG93bnN0cmVhbV93cml0ZSAmIGRvd25zdHJlYW1fYnVyc3Rkb25lOwotICBhc3NpZ24gdXBkYXRlX2NvdW50ID0gcmVhZF91cGRhdGVfY291bnQgfCB3cml0ZV91cGRhdGVfY291bnQ7Ci0gIGFzc2lnbiB0cmFuc2FjdGlvbnNfcmVtYWluaW5nID0gKHN0YXRlX2lkbGUgJiAodXBzdHJlYW1fcmVhZCB8IHVwc3RyZWFtX3dyaXRlKSkgPyBkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA6IHRyYW5zYWN0aW9uc19yZW1haW5pbmdfcmVnOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgdHJhbnNhY3Rpb25zX3JlbWFpbmluZ19yZWcgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIHRyYW5zYWN0aW9uc19yZW1haW5pbmdfcmVnIDw9IChzdGF0ZV9pZGxlICYgKHVwc3RyZWFtX3JlYWQgfCB1cHN0cmVhbV93cml0ZSkpID8gZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgOiB1cGRhdGVfY291bnQgPyB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZyAtIGRvd25zdHJlYW1fYnVyc3Rjb3VudCA6IHRyYW5zYWN0aW9uc19yZW1haW5pbmdfcmVnOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGRhdGFfY291bnRlciA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZGF0YV9jb3VudGVyIDw9IHN0YXRlX2lkbGUgJiB1cHN0cmVhbV9yZWFkICYgfnVwc3RyZWFtX3dhaXRyZXF1ZXN0ID8gIGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDogZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkID8gZGF0YV9jb3VudGVyIC0gMSA6IGRhdGFfY291bnRlcjsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtYXhfYnVyc3Rfc2l6ZSA9IDE7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2J1cnN0Y291bnQgPSAodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA+IG1heF9idXJzdF9zaXplKSA/IG1heF9idXJzdF9zaXplIDogdHJhbnNhY3Rpb25zX3JlbWFpbmluZzsKLSAgYXNzaWduIGRvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSA9IGN1cnJlbnRfdXBzdHJlYW1fcmVhZCA/IChkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCkgOiBkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHdyaXRlX2FkZHJlc3Nfb2Zmc2V0IDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICB3cml0ZV9hZGRyZXNzX29mZnNldCA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fd3JpdGUgPyAwIDogKChkb3duc3RyZWFtX3dyaXRlICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QgJiBkb3duc3RyZWFtX2J1cnN0ZG9uZSkpID8gd3JpdGVfYWRkcmVzc19vZmZzZXQgKyBkb3duc3RyZWFtX2J1cnN0Y291bnQgOiB3cml0ZV9hZGRyZXNzX29mZnNldDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWFkX2FkZHJlc3Nfb2Zmc2V0IDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICByZWFkX2FkZHJlc3Nfb2Zmc2V0IDw9IHN0YXRlX2lkbGUgJiB1cHN0cmVhbV9yZWFkID8gMCA6IChkb3duc3RyZWFtX3JlYWQgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkgPyByZWFkX2FkZHJlc3Nfb2Zmc2V0ICsgZG93bnN0cmVhbV9idXJzdGNvdW50IDogcmVhZF9hZGRyZXNzX29mZnNldDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBkb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MgPSByZWdpc3RlcmVkX3Vwc3RyZWFtX25hdGl2ZWFkZHJlc3MgPj4gMjsKLSAgYXNzaWduIGFkZHJlc3Nfb2Zmc2V0ID0gY3VycmVudF91cHN0cmVhbV9yZWFkID8gcmVhZF9hZGRyZXNzX29mZnNldCA6IHdyaXRlX2FkZHJlc3Nfb2Zmc2V0OwotICBhc3NpZ24gZG93bnN0cmVhbV9hZGRyZXNzX2Jhc2UgPSBjdXJyZW50X3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2FkZHJlc3MgPSBkb3duc3RyZWFtX2FkZHJlc3NfYmFzZSArIHthZGRyZXNzX29mZnNldCwgMidiMDB9OwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZG93bnN0cmVhbV9yZWFkIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV9yZWFkIHwgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgZG93bnN0cmVhbV9yZWFkIDw9IHN0YXRlX2lkbGUgJiB1cHN0cmVhbV9yZWFkID8gMSA6ICh0cmFuc2FjdGlvbnNfcmVtYWluaW5nID09IGRvd25zdHJlYW1fYnVyc3Rjb3VudCkgPyAwIDogZG93bnN0cmVhbV9yZWFkOwotICAgIGVuZAotCi0KLSAgYXNzaWduIHVwc3RyZWFtX3JlYWRkYXRhdmFsaWQgPSBkb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIGFzc2lnbiB1cHN0cmVhbV9yZWFkZGF0YSA9IGRvd25zdHJlYW1fcmVhZGRhdGE7Ci0gIGFzc2lnbiBmaWZvX2VtcHR5ID0gMTsKLSAgYXNzaWduIHAxX2ZpZm9fZW1wdHkgPSAxOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZG93bnN0cmVhbV93cml0ZV9yZWcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dyaXRlX3JlZyB8IH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIGRvd25zdHJlYW1fd3JpdGVfcmVnIDw9IHN0YXRlX2lkbGUgJiB1cHN0cmVhbV93cml0ZSA/IDEgOiAoKHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPT0gZG93bnN0cmVhbV9idXJzdGNvdW50KSAmIGRvd25zdHJlYW1fYnVyc3Rkb25lKSA/IDAgOiBkb3duc3RyZWFtX3dyaXRlX3JlZzsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2J5dGVlbmFibGUgPD0gNCdiMTExMTsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnl0ZWVuYWJsZSA8PSB1cHN0cmVhbV9ieXRlZW5hYmxlOwotICAgIGVuZAotCi0KLSAgYXNzaWduIGRvd25zdHJlYW1fd3JpdGUgPSBkb3duc3RyZWFtX3dyaXRlX3JlZyAmIHVwc3RyZWFtX3dyaXRlICYgIWRvd25zdHJlYW1fcmVhZDsKLSAgYXNzaWduIGRvd25zdHJlYW1fYnl0ZWVuYWJsZSA9IGRvd25zdHJlYW1fd3JpdGVfcmVnID8gdXBzdHJlYW1fYnl0ZWVuYWJsZSA6IHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgYXNzaWduIGRvd25zdHJlYW1fd3JpdGVkYXRhID0gdXBzdHJlYW1fd3JpdGVkYXRhOwotICBhc3NpZ24gdXBzdHJlYW1fcmVhZF9ydW4gPSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZDsKLSAgYXNzaWduIHVwc3RyZWFtX3dyaXRlX3J1biA9IHN0YXRlX2J1c3kgJiB1cHN0cmVhbV93cml0ZSAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ICYgIWRvd25zdHJlYW1fcmVhZDsKLSAgYXNzaWduIHVwc3RyZWFtX3dhaXRyZXF1ZXN0ID0gKHVwc3RyZWFtX3JlYWQgfCBjdXJyZW50X3Vwc3RyZWFtX3JlYWQpID8gfnVwc3RyZWFtX3JlYWRfcnVuIDogY3VycmVudF91cHN0cmVhbV93cml0ZSA/IH51cHN0cmVhbV93cml0ZV9ydW4gOiAxOwotICBhc3NpZ24gZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyA9IHVwc3RyZWFtX2RlYnVnYWNjZXNzOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYWRkcmVzcyA8PSBkb3duc3RyZWFtX2FkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSA8PSBkb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCA8PSBkb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSA8PSBkb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2RlYnVnYWNjZXNzIDw9IGRvd25zdHJlYW1fZGVidWdhY2Nlc3M7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyA8PSBkb3duc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fcmVhZCA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fcmVhZCA8PSBkb3duc3RyZWFtX3JlYWQ7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlIDw9IGRvd25zdHJlYW1fd3JpdGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV93cml0ZWRhdGEgPD0gZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0vKiBTTGxpbmUgMjA0ODIgImN1c3RvbV9kbWEudiIgMiAqLwotLyogU0xsaW5lIDEgInBpcGVsaW5lX2JyaWRnZS52IiAxICovCi0vL0xlZ2FsIE5vdGljZTogKEMpMjAxMCBBbHRlcmEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBZb3VyCi0vL3VzZSBvZiBBbHRlcmEgQ29ycG9yYXRpb24ncyBkZXNpZ24gdG9vbHMsIGxvZ2ljIGZ1bmN0aW9ucyBhbmQgb3RoZXIKLS8vc29mdHdhcmUgYW5kIHRvb2xzLCBhbmQgaXRzIEFNUFAgcGFydG5lciBsb2dpYyBmdW5jdGlvbnMsIGFuZCBhbnkKLS8vb3V0cHV0IGZpbGVzIGFueSBvZiB0aGUgZm9yZWdvaW5nIChpbmNsdWRpbmcgZGV2aWNlIHByb2dyYW1taW5nIG9yCi0vL3NpbXVsYXRpb24gZmlsZXMpLCBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiBhcmUKLS8vZXhwcmVzc2x5IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBBbHRlcmEgUHJvZ3JhbQotLy9MaWNlbnNlIFN1YnNjcmlwdGlvbiBBZ3JlZW1lbnQgb3Igb3RoZXIgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudCwKLS8vaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIHRoYXQgeW91ciB1c2UgaXMgZm9yIHRoZSBzb2xlIHB1cnBvc2UKLS8vb2YgcHJvZ3JhbW1pbmcgbG9naWMgZGV2aWNlcyBtYW51ZmFjdHVyZWQgYnkgQWx0ZXJhIGFuZCBzb2xkIGJ5IEFsdGVyYQotLy9vciBpdHMgYXV0aG9yaXplZCBkaXN0cmlidXRvcnMuICBQbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2FibGUKLS8vYWdyZWVtZW50IGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi1gdGltZXNjYWxlIDFucyAvIDFwcwotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIHBpcGVsaW5lX2JyaWRnZV9kb3duc3RyZWFtX2FkYXB0ZXIgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9jbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9lbmRvZnBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3Jlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV93YWl0cmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9hcmJpdGVybG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfbmF0aXZlYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3dyaXRlZGF0YSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYXJiaXRlcmxvY2syLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9jaGlwc2VsZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfZW5kb2ZwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV93YWl0cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAxMTogMF0gbTFfYWRkcmVzczsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9hcmJpdGVybG9jazsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9hcmJpdGVybG9jazI7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfYnVyc3Rjb3VudDsKLSAgb3V0cHV0ICBbICAzOiAwXSBtMV9ieXRlZW5hYmxlOwotICBvdXRwdXQgICAgICAgICAgIG0xX2NoaXBzZWxlY3Q7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfZGVidWdhY2Nlc3M7Ci0gIG91dHB1dCAgWyAgOTogMF0gbTFfbmF0aXZlYWRkcmVzczsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9yZWFkOwotICBvdXRwdXQgICAgICAgICAgIG0xX3dyaXRlOwotICBvdXRwdXQgIFsgMzE6IDBdIG0xX3dyaXRlZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBzMV9lbmRvZnBhY2tldDsKLSAgb3V0cHV0ICBbIDMxOiAwXSBzMV9yZWFkZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBzMV9yZWFkZGF0YXZhbGlkOwotICBvdXRwdXQgICAgICAgICAgIHMxX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIG0xX2NsazsKLSAgaW5wdXQgICAgICAgICAgICBtMV9lbmRvZnBhY2tldDsKLSAgaW5wdXQgICBbIDMxOiAwXSBtMV9yZWFkZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBtMV9yZWFkZGF0YXZhbGlkOwotICBpbnB1dCAgICAgICAgICAgIG0xX3Jlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgbTFfd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgWyAxMTogMF0gczFfYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBzMV9hcmJpdGVybG9jazsKLSAgaW5wdXQgICAgICAgICAgICBzMV9hcmJpdGVybG9jazI7Ci0gIGlucHV0ICAgICAgICAgICAgczFfYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSBzMV9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIHMxX2NoaXBzZWxlY3Q7Ci0gIGlucHV0ICAgICAgICAgICAgczFfZGVidWdhY2Nlc3M7Ci0gIGlucHV0ICAgWyAgOTogMF0gczFfbmF0aXZlYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBzMV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIHMxX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIHMxX3dyaXRlZGF0YTsKLQotICByZWcgICAgIFsgMTE6IDBdIG0xX2FkZHJlc3M7Ci0gIHJlZyAgICAgICAgICAgICAgbTFfYXJiaXRlcmxvY2s7Ci0gIHJlZyAgICAgICAgICAgICAgbTFfYXJiaXRlcmxvY2syOwotICByZWcgICAgICAgICAgICAgIG0xX2J1cnN0Y291bnQ7Ci0gIHJlZyAgICAgWyAgMzogMF0gbTFfYnl0ZWVuYWJsZTsKLSAgcmVnICAgICAgICAgICAgICBtMV9jaGlwc2VsZWN0OwotICByZWcgICAgICAgICAgICAgIG0xX2RlYnVnYWNjZXNzOwotICByZWcgICAgIFsgIDk6IDBdIG0xX25hdGl2ZWFkZHJlc3M7Ci0gIHJlZyAgICAgICAgICAgICAgbTFfcmVhZDsKLSAgcmVnICAgICAgICAgICAgICBtMV93cml0ZTsKLSAgcmVnICAgICBbIDMxOiAwXSBtMV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgczFfZW5kb2ZwYWNrZXQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gczFfcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgczFfcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBzMV93YWl0cmVxdWVzdDsKLSAgLy9zMSwgd2hpY2ggaXMgYW4gZV9hdmFsb25fYWRhcHRlcl9zbGF2ZQotICAvL20xLCB3aGljaCBpcyBhbiBlX2F2YWxvbl9hZGFwdGVyX21hc3RlcgotICBhc3NpZ24gczFfZW5kb2ZwYWNrZXQgPSBtMV9lbmRvZnBhY2tldDsKLSAgYXNzaWduIHMxX3JlYWRkYXRhID0gbTFfcmVhZGRhdGE7Ci0gIGFzc2lnbiBzMV9yZWFkZGF0YXZhbGlkID0gbTFfcmVhZGRhdGF2YWxpZDsKLSAgYXNzaWduIHMxX3dhaXRyZXF1ZXN0ID0gbTFfd2FpdHJlcXVlc3Q7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgbTFfY2xrIG9yIG5lZ2VkZ2UgbTFfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKG0xX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBtMV9hZGRyZXNzIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+bTFfd2FpdHJlcXVlc3QpCi0gICAgICAgICAgbTFfYWRkcmVzcyA8PSBzMV9hZGRyZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIG0xX2FyYml0ZXJsb2NrIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+bTFfd2FpdHJlcXVlc3QpCi0gICAgICAgICAgbTFfYXJiaXRlcmxvY2sgPD0gczFfYXJiaXRlcmxvY2s7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgbTFfYXJiaXRlcmxvY2syIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+bTFfd2FpdHJlcXVlc3QpCi0gICAgICAgICAgbTFfYXJiaXRlcmxvY2syIDw9IHMxX2FyYml0ZXJsb2NrMjsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgbTFfY2xrIG9yIG5lZ2VkZ2UgbTFfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKG0xX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBtMV9idXJzdGNvdW50IDw9IDA7Ci0gICAgICBlbHNlIGlmICh+bTFfd2FpdHJlcXVlc3QpCi0gICAgICAgICAgbTFfYnVyc3Rjb3VudCA8PSBzMV9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIG0xX2J5dGVlbmFibGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5tMV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBtMV9ieXRlZW5hYmxlIDw9IHMxX2J5dGVlbmFibGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgbTFfY2hpcHNlbGVjdCA8PSAwOwotICAgICAgZWxzZSBpZiAofm0xX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIG0xX2NoaXBzZWxlY3QgPD0gczFfY2hpcHNlbGVjdDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgbTFfY2xrIG9yIG5lZ2VkZ2UgbTFfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKG0xX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBtMV9kZWJ1Z2FjY2VzcyA8PSAwOwotICAgICAgZWxzZSBpZiAofm0xX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIG0xX2RlYnVnYWNjZXNzIDw9IHMxX2RlYnVnYWNjZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIG0xX25hdGl2ZWFkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5tMV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBtMV9uYXRpdmVhZGRyZXNzIDw9IHMxX25hdGl2ZWFkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgbTFfcmVhZCA8PSAwOwotICAgICAgZWxzZSBpZiAofm0xX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIG0xX3JlYWQgPD0gczFfcmVhZDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgbTFfY2xrIG9yIG5lZ2VkZ2UgbTFfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKG0xX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBtMV93cml0ZSA8PSAwOwotICAgICAgZWxzZSBpZiAofm0xX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIG0xX3dyaXRlIDw9IHMxX3dyaXRlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIG0xX3dyaXRlZGF0YSA8PSAwOwotICAgICAgZWxzZSBpZiAofm0xX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIG0xX3dyaXRlZGF0YSA8PSBzMV93cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcGlwZWxpbmVfYnJpZGdlX3Vwc3RyZWFtX2FkYXB0ZXIgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2NsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9lbmRvZnBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3Jlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfd2FpdHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9hcmJpdGVybG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9hcmJpdGVybG9jazIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2NoaXBzZWxlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2ZsdXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX25hdGl2ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9yZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3dyaXRlZGF0YSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2VuZG9mcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfd2FpdHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbIDExOiAwXSBtMV9hZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrOwotICBvdXRwdXQgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrMjsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9idXJzdGNvdW50OwotICBvdXRwdXQgIFsgIDM6IDBdIG0xX2J5dGVlbmFibGU7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfY2hpcHNlbGVjdDsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICBbICA5OiAwXSBtMV9uYXRpdmVhZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIG0xX3JlYWQ7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gbTFfd3JpdGVkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHMxX2VuZG9mcGFja2V0OwotICBvdXRwdXQgIFsgMzE6IDBdIHMxX3JlYWRkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHMxX3JlYWRkYXRhdmFsaWQ7Ci0gIG91dHB1dCAgICAgICAgICAgczFfd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgbTFfY2xrOwotICBpbnB1dCAgICAgICAgICAgIG0xX2VuZG9mcGFja2V0OwotICBpbnB1dCAgIFsgMzE6IDBdIG0xX3JlYWRkYXRhOwotICBpbnB1dCAgICAgICAgICAgIG0xX3JlYWRkYXRhdmFsaWQ7Ci0gIGlucHV0ICAgICAgICAgICAgbTFfcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICBtMV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICBbIDExOiAwXSBzMV9hZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrOwotICBpbnB1dCAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrMjsKLSAgaW5wdXQgICAgICAgICAgICBzMV9idXJzdGNvdW50OwotICBpbnB1dCAgIFsgIDM6IDBdIHMxX2J5dGVlbmFibGU7Ci0gIGlucHV0ICAgICAgICAgICAgczFfY2hpcHNlbGVjdDsKLSAgaW5wdXQgICAgICAgICAgICBzMV9jbGs7Ci0gIGlucHV0ICAgICAgICAgICAgczFfZGVidWdhY2Nlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgczFfZmx1c2g7Ci0gIGlucHV0ICAgWyAgOTogMF0gczFfbmF0aXZlYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBzMV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIHMxX3Jlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgczFfd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gczFfd3JpdGVkYXRhOwotCi0gIHdpcmUgICAgWyAxMTogMF0gbTFfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBtMV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBtMV9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBtMV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIG0xX2NoaXBzZWxlY3Q7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgWyAgOTogMF0gbTFfbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBtMV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIG0xX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIG0xX3dyaXRlZGF0YTsKLSAgcmVnICAgICAgICAgICAgICBzMV9lbmRvZnBhY2tldDsKLSAgcmVnICAgICBbIDMxOiAwXSBzMV9yZWFkZGF0YTsKLSAgcmVnICAgICAgICAgICAgICBzMV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIHMxX3dhaXRyZXF1ZXN0OwotICAvL3MxLCB3aGljaCBpcyBhbiBlX2F2YWxvbl9hZGFwdGVyX3NsYXZlCi0gIC8vbTEsIHdoaWNoIGlzIGFuIGVfYXZhbG9uX2FkYXB0ZXJfbWFzdGVyCi0gIGFsd2F5cyBAKHBvc2VkZ2UgczFfY2xrIG9yIG5lZ2VkZ2UgczFfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHMxX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBzMV9yZWFkZGF0YXZhbGlkIDw9IDA7Ci0gICAgICBlbHNlIGlmIChzMV9mbHVzaCkKLSAgICAgICAgICBzMV9yZWFkZGF0YXZhbGlkIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBzMV9yZWFkZGF0YXZhbGlkIDw9IG0xX3JlYWRkYXRhdmFsaWQ7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gczFfd2FpdHJlcXVlc3QgPSBtMV93YWl0cmVxdWVzdDsKLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIHMxX2VuZG9mcGFja2V0IDw9IDA7Ci0gICAgICBlbHNlIGlmIChtMV9yZWFkZGF0YXZhbGlkKQotICAgICAgICAgIHMxX2VuZG9mcGFja2V0IDw9IG0xX2VuZG9mcGFja2V0OwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIHMxX3JlYWRkYXRhIDw9IDA7Ci0gICAgICBlbHNlIGlmIChtMV9yZWFkZGF0YXZhbGlkKQotICAgICAgICAgIHMxX3JlYWRkYXRhIDw9IG0xX3JlYWRkYXRhOwotICAgIGVuZAotCi0KLSAgYXNzaWduIG0xX2FkZHJlc3MgPSBzMV9hZGRyZXNzOwotICBhc3NpZ24gbTFfYXJiaXRlcmxvY2sgPSBzMV9hcmJpdGVybG9jazsKLSAgYXNzaWduIG0xX2FyYml0ZXJsb2NrMiA9IHMxX2FyYml0ZXJsb2NrMjsKLSAgYXNzaWduIG0xX2J1cnN0Y291bnQgPSBzMV9idXJzdGNvdW50OwotICBhc3NpZ24gbTFfYnl0ZWVuYWJsZSA9IHMxX2J5dGVlbmFibGU7Ci0gIGFzc2lnbiBtMV9jaGlwc2VsZWN0ID0gczFfY2hpcHNlbGVjdDsKLSAgYXNzaWduIG0xX2RlYnVnYWNjZXNzID0gczFfZGVidWdhY2Nlc3M7Ci0gIGFzc2lnbiBtMV9uYXRpdmVhZGRyZXNzID0gczFfbmF0aXZlYWRkcmVzczsKLSAgYXNzaWduIG0xX3JlYWQgPSBzMV9yZWFkOwotICBhc3NpZ24gbTFfd3JpdGUgPSBzMV93cml0ZTsKLSAgYXNzaWduIG0xX3dyaXRlZGF0YSA9IHMxX3dyaXRlZGF0YTsKLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIHBpcGVsaW5lX2JyaWRnZV93YWl0cmVxdWVzdF9hZGFwdGVyICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9jbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfZW5kb2ZwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9yZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3dhaXRyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9hcmJpdGVybG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9hcmJpdGVybG9jazIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2NoaXBzZWxlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfbmF0aXZlYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3dyaXRlZGF0YSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2VuZG9mcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfd2FpdHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbIDExOiAwXSBtMV9hZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrOwotICBvdXRwdXQgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrMjsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9idXJzdGNvdW50OwotICBvdXRwdXQgIFsgIDM6IDBdIG0xX2J5dGVlbmFibGU7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfY2hpcHNlbGVjdDsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICBbICA5OiAwXSBtMV9uYXRpdmVhZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIG0xX3JlYWQ7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gbTFfd3JpdGVkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHMxX2VuZG9mcGFja2V0OwotICBvdXRwdXQgIFsgMzE6IDBdIHMxX3JlYWRkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHMxX3JlYWRkYXRhdmFsaWQ7Ci0gIG91dHB1dCAgICAgICAgICAgczFfd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgbTFfY2xrOwotICBpbnB1dCAgICAgICAgICAgIG0xX2VuZG9mcGFja2V0OwotICBpbnB1dCAgIFsgMzE6IDBdIG0xX3JlYWRkYXRhOwotICBpbnB1dCAgICAgICAgICAgIG0xX3JlYWRkYXRhdmFsaWQ7Ci0gIGlucHV0ICAgICAgICAgICAgbTFfcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICBtMV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotICBpbnB1dCAgIFsgMTE6IDBdIHMxX2FkZHJlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgczFfYXJiaXRlcmxvY2s7Ci0gIGlucHV0ICAgICAgICAgICAgczFfYXJiaXRlcmxvY2syOwotICBpbnB1dCAgICAgICAgICAgIHMxX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgWyAgMzogMF0gczFfYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBzMV9jaGlwc2VsZWN0OwotICBpbnB1dCAgICAgICAgICAgIHMxX2RlYnVnYWNjZXNzOwotICBpbnB1dCAgIFsgIDk6IDBdIHMxX25hdGl2ZWFkZHJlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgczFfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBzMV93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBzMV93cml0ZWRhdGE7Ci0KLSAgcmVnICAgICBbIDExOiAwXSBkMV9zMV9hZGRyZXNzOwotICByZWcgICAgICAgICAgICAgIGQxX3MxX2FyYml0ZXJsb2NrOwotICByZWcgICAgICAgICAgICAgIGQxX3MxX2FyYml0ZXJsb2NrMjsKLSAgcmVnICAgICAgICAgICAgICBkMV9zMV9idXJzdGNvdW50OwotICByZWcgICAgIFsgIDM6IDBdIGQxX3MxX2J5dGVlbmFibGU7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfczFfY2hpcHNlbGVjdDsKLSAgcmVnICAgICAgICAgICAgICBkMV9zMV9kZWJ1Z2FjY2VzczsKLSAgcmVnICAgICBbICA5OiAwXSBkMV9zMV9uYXRpdmVhZGRyZXNzOwotICByZWcgICAgICAgICAgICAgIGQxX3MxX3JlYWQ7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfczFfd3JpdGU7Ci0gIHJlZyAgICAgWyAzMTogMF0gZDFfczFfd3JpdGVkYXRhOwotICB3aXJlICAgIFsgMTE6IDBdIG0xX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIG0xX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gbTFfYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBtMV9jaGlwc2VsZWN0OwotICB3aXJlICAgICAgICAgICAgIG0xX2RlYnVnYWNjZXNzOwotICB3aXJlICAgIFsgIDk6IDBdIG0xX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBtMV93cml0ZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBtMV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgczFfZW5kb2ZwYWNrZXQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gczFfcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgczFfcmVhZGRhdGF2YWxpZDsKLSAgcmVnICAgICAgICAgICAgICBzMV93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBzZXRfdXNlX3JlZ2lzdGVyZWQ7Ci0gIHJlZyAgICAgICAgICAgICAgdXNlX3JlZ2lzdGVyZWQ7Ci0gIC8vczEsIHdoaWNoIGlzIGFuIGVfYXZhbG9uX2FkYXB0ZXJfc2xhdmUKLSAgLy9tMSwgd2hpY2ggaXMgYW4gZV9hdmFsb25fYWRhcHRlcl9tYXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIHMxX3dhaXRyZXF1ZXN0IDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBzMV93YWl0cmVxdWVzdCA8PSBtMV93YWl0cmVxdWVzdDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBzMV9lbmRvZnBhY2tldCA9IG0xX2VuZG9mcGFja2V0OwotICBhc3NpZ24gczFfcmVhZGRhdGEgPSBtMV9yZWFkZGF0YTsKLSAgYXNzaWduIHMxX3JlYWRkYXRhdmFsaWQgPSBtMV9yZWFkZGF0YXZhbGlkOwotICAvL3NldCB1c2UgcmVnaXN0ZXJlZCwgd2hpY2ggaXMgYW4gZV9hc3NpZ24KLSAgYXNzaWduIHNldF91c2VfcmVnaXN0ZXJlZCA9IG0xX3dhaXRyZXF1ZXN0ICYgfnMxX3dhaXRyZXF1ZXN0OwotCi0gIC8vdXNlIHJlZ2lzdGVyZWQsIHdoaWNoIGlzIGFuIGVfcmVnaXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHVzZV9yZWdpc3RlcmVkIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+bTFfd2FpdHJlcXVlc3QgJiBzMV93YWl0cmVxdWVzdCkKLSAgICAgICAgICB1c2VfcmVnaXN0ZXJlZCA8PSAwOwotICAgICAgZWxzZSBpZiAoc2V0X3VzZV9yZWdpc3RlcmVkKQotICAgICAgICAgIHVzZV9yZWdpc3RlcmVkIDw9IC0xOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3MxX2FkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHNldF91c2VfcmVnaXN0ZXJlZCkKLSAgICAgICAgICBkMV9zMV9hZGRyZXNzIDw9IHMxX2FkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfYWRkcmVzcyA9ICh1c2VfcmVnaXN0ZXJlZCk/IGQxX3MxX2FkZHJlc3MgOgotICAgIHMxX2FkZHJlc3M7Ci0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3MxX2FyYml0ZXJsb2NrIDw9IDA7Ci0gICAgICBlbHNlIGlmIChzZXRfdXNlX3JlZ2lzdGVyZWQpCi0gICAgICAgICAgZDFfczFfYXJiaXRlcmxvY2sgPD0gczFfYXJiaXRlcmxvY2s7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfYXJiaXRlcmxvY2sgPSAodXNlX3JlZ2lzdGVyZWQpPyBkMV9zMV9hcmJpdGVybG9jayA6Ci0gICAgczFfYXJiaXRlcmxvY2s7Ci0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3MxX2FyYml0ZXJsb2NrMiA8PSAwOwotICAgICAgZWxzZSBpZiAoc2V0X3VzZV9yZWdpc3RlcmVkKQotICAgICAgICAgIGQxX3MxX2FyYml0ZXJsb2NrMiA8PSBzMV9hcmJpdGVybG9jazI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfYXJiaXRlcmxvY2syID0gKHVzZV9yZWdpc3RlcmVkKT8gZDFfczFfYXJiaXRlcmxvY2syIDoKLSAgICBzMV9hcmJpdGVybG9jazI7Ci0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3MxX2J1cnN0Y291bnQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHNldF91c2VfcmVnaXN0ZXJlZCkKLSAgICAgICAgICBkMV9zMV9idXJzdGNvdW50IDw9IHMxX2J1cnN0Y291bnQ7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfYnVyc3Rjb3VudCA9ICh1c2VfcmVnaXN0ZXJlZCk/IGQxX3MxX2J1cnN0Y291bnQgOgotICAgIHMxX2J1cnN0Y291bnQ7Ci0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3MxX2J5dGVlbmFibGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHNldF91c2VfcmVnaXN0ZXJlZCkKLSAgICAgICAgICBkMV9zMV9ieXRlZW5hYmxlIDw9IHMxX2J5dGVlbmFibGU7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfYnl0ZWVuYWJsZSA9ICh1c2VfcmVnaXN0ZXJlZCk/IGQxX3MxX2J5dGVlbmFibGUgOgotICAgIHMxX2J5dGVlbmFibGU7Ci0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3MxX2NoaXBzZWxlY3QgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHNldF91c2VfcmVnaXN0ZXJlZCkKLSAgICAgICAgICBkMV9zMV9jaGlwc2VsZWN0IDw9IHMxX2NoaXBzZWxlY3Q7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfY2hpcHNlbGVjdCA9ICh1c2VfcmVnaXN0ZXJlZCk/IGQxX3MxX2NoaXBzZWxlY3QgOgotICAgIHMxX2NoaXBzZWxlY3Q7Ci0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3MxX2RlYnVnYWNjZXNzIDw9IDA7Ci0gICAgICBlbHNlIGlmIChzZXRfdXNlX3JlZ2lzdGVyZWQpCi0gICAgICAgICAgZDFfczFfZGVidWdhY2Nlc3MgPD0gczFfZGVidWdhY2Nlc3M7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfZGVidWdhY2Nlc3MgPSAodXNlX3JlZ2lzdGVyZWQpPyBkMV9zMV9kZWJ1Z2FjY2VzcyA6Ci0gICAgczFfZGVidWdhY2Nlc3M7Ci0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3MxX25hdGl2ZWFkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHNldF91c2VfcmVnaXN0ZXJlZCkKLSAgICAgICAgICBkMV9zMV9uYXRpdmVhZGRyZXNzIDw9IHMxX25hdGl2ZWFkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfbmF0aXZlYWRkcmVzcyA9ICh1c2VfcmVnaXN0ZXJlZCk/IGQxX3MxX25hdGl2ZWFkZHJlc3MgOgotICAgIHMxX25hdGl2ZWFkZHJlc3M7Ci0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3MxX3JlYWQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHNldF91c2VfcmVnaXN0ZXJlZCkKLSAgICAgICAgICBkMV9zMV9yZWFkIDw9IHMxX3JlYWQ7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfcmVhZCA9ICh1c2VfcmVnaXN0ZXJlZCk/IGQxX3MxX3JlYWQgOgotICAgIHMxX3JlYWQ7Ci0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3MxX3dyaXRlIDw9IDA7Ci0gICAgICBlbHNlIGlmIChzZXRfdXNlX3JlZ2lzdGVyZWQpCi0gICAgICAgICAgZDFfczFfd3JpdGUgPD0gczFfd3JpdGU7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfd3JpdGUgPSAodXNlX3JlZ2lzdGVyZWQpPyBkMV9zMV93cml0ZSA6Ci0gICAgczFfd3JpdGU7Ci0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIGQxX3MxX3dyaXRlZGF0YSA8PSAwOwotICAgICAgZWxzZSBpZiAoc2V0X3VzZV9yZWdpc3RlcmVkKQotICAgICAgICAgIGQxX3MxX3dyaXRlZGF0YSA8PSBzMV93cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfd3JpdGVkYXRhID0gKHVzZV9yZWdpc3RlcmVkKT8gZDFfczFfd3JpdGVkYXRhIDoKLSAgICBzMV93cml0ZWRhdGE7Ci0KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIHBpcGVsaW5lX2JyaWRnZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2VuZG9mcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfd2FpdHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9hcmJpdGVybG9jazIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2NoaXBzZWxlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzMV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgczFfd3JpdGVkYXRhLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtMV93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2VuZG9mcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgczFfcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgczFfd2FpdHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAxMTogMF0gbTFfYWRkcmVzczsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9idXJzdGNvdW50OwotICBvdXRwdXQgIFsgIDM6IDBdIG0xX2J5dGVlbmFibGU7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfY2hpcHNlbGVjdDsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9yZWFkOwotICBvdXRwdXQgICAgICAgICAgIG0xX3dyaXRlOwotICBvdXRwdXQgIFsgMzE6IDBdIG0xX3dyaXRlZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBzMV9lbmRvZnBhY2tldDsKLSAgb3V0cHV0ICBbIDMxOiAwXSBzMV9yZWFkZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBzMV9yZWFkZGF0YXZhbGlkOwotICBvdXRwdXQgICAgICAgICAgIHMxX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICAgICAgICAgICBtMV9lbmRvZnBhY2tldDsKLSAgaW5wdXQgICBbIDMxOiAwXSBtMV9yZWFkZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICBtMV9yZWFkZGF0YXZhbGlkOwotICBpbnB1dCAgICAgICAgICAgIG0xX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgWyAgOTogMF0gczFfYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBzMV9hcmJpdGVybG9jazsKLSAgaW5wdXQgICAgICAgICAgICBzMV9hcmJpdGVybG9jazI7Ci0gIGlucHV0ICAgICAgICAgICAgczFfYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSBzMV9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIHMxX2NoaXBzZWxlY3Q7Ci0gIGlucHV0ICAgICAgICAgICAgczFfZGVidWdhY2Nlc3M7Ci0gIGlucHV0ICAgWyAgOTogMF0gczFfbmF0aXZlYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBzMV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIHMxX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIHMxX3dyaXRlZGF0YTsKLQotICB3aXJlICAgIFsgMTE6IDBdIGRvd25zdHJlYW1fbTFfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX20xX2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fbTFfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fbTFfYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBkb3duc3RyZWFtX20xX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9tMV9jaGlwc2VsZWN0OwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fbTFfZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9tMV9lbmRvZnBhY2tldDsKLSAgd2lyZSAgICBbICA5OiAwXSBkb3duc3RyZWFtX20xX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9tMV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIGRvd25zdHJlYW1fbTFfcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9tMV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fbTFfd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9tMV93cml0ZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBkb3duc3RyZWFtX20xX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDExOiAwXSBkb3duc3RyZWFtX3MxX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9zMV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX3MxX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX3MxX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gZG93bnN0cmVhbV9zMV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fczFfY2hpcHNlbGVjdDsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX3MxX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fczFfZW5kb2ZwYWNrZXQ7Ci0gIHdpcmUgICAgWyAgOTogMF0gZG93bnN0cmVhbV9zMV9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fczFfcmVhZDsKLSAgd2lyZSAgICBbIDMxOiAwXSBkb3duc3RyZWFtX3MxX3JlYWRkYXRhOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fczFfcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX3MxX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fczFfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gZG93bnN0cmVhbV9zMV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgWyAxMTogMF0gbTFfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBtMV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBtMV9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBtMV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIG0xX2NoaXBzZWxlY3Q7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgWyAgOTogMF0gbTFfbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBtMV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIG0xX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIG0xX3dyaXRlZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBzMV9lbmRvZnBhY2tldDsKLSAgd2lyZSAgICBbIDMxOiAwXSBzMV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBzMV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIHMxX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgIFsgMTE6IDBdIHVwc3RyZWFtX20xX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fbTFfYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fbTFfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX20xX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gdXBzdHJlYW1fbTFfYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9tMV9jaGlwc2VsZWN0OwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX20xX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX20xX2VuZG9mcGFja2V0OwotICB3aXJlICAgIFsgIDk6IDBdIHVwc3RyZWFtX20xX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fbTFfcmVhZDsKLSAgd2lyZSAgICBbIDMxOiAwXSB1cHN0cmVhbV9tMV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9tMV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX20xX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX20xX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIHVwc3RyZWFtX20xX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDExOiAwXSB1cHN0cmVhbV9zMV9hZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3MxX2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3MxX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9zMV9idXJzdGNvdW50OwotICB3aXJlICAgIFsgIDM6IDBdIHVwc3RyZWFtX3MxX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fczFfY2hpcHNlbGVjdDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9zMV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9zMV9lbmRvZnBhY2tldDsKLSAgd2lyZSAgICBbICA5OiAwXSB1cHN0cmVhbV9zMV9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3MxX3JlYWQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gdXBzdHJlYW1fczFfcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fczFfcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9zMV93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9zMV93cml0ZTsKLSAgd2lyZSAgICBbIDMxOiAwXSB1cHN0cmVhbV9zMV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgWyAxMTogMF0gd2FpdHJlcXVlc3RfbTFfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9tMV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9tMV9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfbTFfYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSB3YWl0cmVxdWVzdF9tMV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X20xX2NoaXBzZWxlY3Q7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfbTFfZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfbTFfZW5kb2ZwYWNrZXQ7Ci0gIHdpcmUgICAgWyAgOTogMF0gd2FpdHJlcXVlc3RfbTFfbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9tMV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIHdhaXRyZXF1ZXN0X20xX3JlYWRkYXRhOwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X20xX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfbTFfd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfbTFfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gd2FpdHJlcXVlc3RfbTFfd3JpdGVkYXRhOwotICB3aXJlICAgIFsgMTE6IDBdIHdhaXRyZXF1ZXN0X3MxX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfczFfYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfczFfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X3MxX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gd2FpdHJlcXVlc3RfczFfYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9zMV9jaGlwc2VsZWN0OwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X3MxX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X3MxX2VuZG9mcGFja2V0OwotICB3aXJlICAgIFsgIDk6IDBdIHdhaXRyZXF1ZXN0X3MxX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfczFfcmVhZDsKLSAgd2lyZSAgICBbIDMxOiAwXSB3YWl0cmVxdWVzdF9zMV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9zMV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X3MxX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X3MxX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIHdhaXRyZXF1ZXN0X3MxX3dyaXRlZGF0YTsKLSAgcGlwZWxpbmVfYnJpZGdlX2Rvd25zdHJlYW1fYWRhcHRlciB0aGVfcGlwZWxpbmVfYnJpZGdlX2Rvd25zdHJlYW1fYWRhcHRlcgotICAgICgKLSAgICAgIC5tMV9hZGRyZXNzICAgICAgIChkb3duc3RyZWFtX20xX2FkZHJlc3MpLAotICAgICAgLm0xX2FyYml0ZXJsb2NrICAgKGRvd25zdHJlYW1fbTFfYXJiaXRlcmxvY2spLAotICAgICAgLm0xX2FyYml0ZXJsb2NrMiAgKGRvd25zdHJlYW1fbTFfYXJiaXRlcmxvY2syKSwKLSAgICAgIC5tMV9idXJzdGNvdW50ICAgIChkb3duc3RyZWFtX20xX2J1cnN0Y291bnQpLAotICAgICAgLm0xX2J5dGVlbmFibGUgICAgKGRvd25zdHJlYW1fbTFfYnl0ZWVuYWJsZSksCi0gICAgICAubTFfY2hpcHNlbGVjdCAgICAoZG93bnN0cmVhbV9tMV9jaGlwc2VsZWN0KSwKLSAgICAgIC5tMV9jbGsgICAgICAgICAgIChjbGspLAotICAgICAgLm0xX2RlYnVnYWNjZXNzICAgKGRvd25zdHJlYW1fbTFfZGVidWdhY2Nlc3MpLAotICAgICAgLm0xX2VuZG9mcGFja2V0ICAgKGRvd25zdHJlYW1fbTFfZW5kb2ZwYWNrZXQpLAotICAgICAgLm0xX25hdGl2ZWFkZHJlc3MgKGRvd25zdHJlYW1fbTFfbmF0aXZlYWRkcmVzcyksCi0gICAgICAubTFfcmVhZCAgICAgICAgICAoZG93bnN0cmVhbV9tMV9yZWFkKSwKLSAgICAgIC5tMV9yZWFkZGF0YSAgICAgIChkb3duc3RyZWFtX20xX3JlYWRkYXRhKSwKLSAgICAgIC5tMV9yZWFkZGF0YXZhbGlkIChkb3duc3RyZWFtX20xX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLm0xX3Jlc2V0X24gICAgICAgKHJlc2V0X24pLAotICAgICAgLm0xX3dhaXRyZXF1ZXN0ICAgKGRvd25zdHJlYW1fbTFfd2FpdHJlcXVlc3QpLAotICAgICAgLm0xX3dyaXRlICAgICAgICAgKGRvd25zdHJlYW1fbTFfd3JpdGUpLAotICAgICAgLm0xX3dyaXRlZGF0YSAgICAgKGRvd25zdHJlYW1fbTFfd3JpdGVkYXRhKSwKLSAgICAgIC5zMV9hZGRyZXNzICAgICAgIChkb3duc3RyZWFtX3MxX2FkZHJlc3MpLAotICAgICAgLnMxX2FyYml0ZXJsb2NrICAgKGRvd25zdHJlYW1fczFfYXJiaXRlcmxvY2spLAotICAgICAgLnMxX2FyYml0ZXJsb2NrMiAgKGRvd25zdHJlYW1fczFfYXJiaXRlcmxvY2syKSwKLSAgICAgIC5zMV9idXJzdGNvdW50ICAgIChkb3duc3RyZWFtX3MxX2J1cnN0Y291bnQpLAotICAgICAgLnMxX2J5dGVlbmFibGUgICAgKGRvd25zdHJlYW1fczFfYnl0ZWVuYWJsZSksCi0gICAgICAuczFfY2hpcHNlbGVjdCAgICAoZG93bnN0cmVhbV9zMV9jaGlwc2VsZWN0KSwKLSAgICAgIC5zMV9kZWJ1Z2FjY2VzcyAgIChkb3duc3RyZWFtX3MxX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5zMV9lbmRvZnBhY2tldCAgIChkb3duc3RyZWFtX3MxX2VuZG9mcGFja2V0KSwKLSAgICAgIC5zMV9uYXRpdmVhZGRyZXNzIChkb3duc3RyZWFtX3MxX25hdGl2ZWFkZHJlc3MpLAotICAgICAgLnMxX3JlYWQgICAgICAgICAgKGRvd25zdHJlYW1fczFfcmVhZCksCi0gICAgICAuczFfcmVhZGRhdGEgICAgICAoZG93bnN0cmVhbV9zMV9yZWFkZGF0YSksCi0gICAgICAuczFfcmVhZGRhdGF2YWxpZCAoZG93bnN0cmVhbV9zMV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5zMV93YWl0cmVxdWVzdCAgIChkb3duc3RyZWFtX3MxX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5zMV93cml0ZSAgICAgICAgIChkb3duc3RyZWFtX3MxX3dyaXRlKSwKLSAgICAgIC5zMV93cml0ZWRhdGEgICAgIChkb3duc3RyZWFtX3MxX3dyaXRlZGF0YSkKLSAgICApOwotCi0gIHBpcGVsaW5lX2JyaWRnZV91cHN0cmVhbV9hZGFwdGVyIHRoZV9waXBlbGluZV9icmlkZ2VfdXBzdHJlYW1fYWRhcHRlcgotICAgICgKLSAgICAgIC5tMV9hZGRyZXNzICAgICAgICh1cHN0cmVhbV9tMV9hZGRyZXNzKSwKLSAgICAgIC5tMV9hcmJpdGVybG9jayAgICh1cHN0cmVhbV9tMV9hcmJpdGVybG9jayksCi0gICAgICAubTFfYXJiaXRlcmxvY2syICAodXBzdHJlYW1fbTFfYXJiaXRlcmxvY2syKSwKLSAgICAgIC5tMV9idXJzdGNvdW50ICAgICh1cHN0cmVhbV9tMV9idXJzdGNvdW50KSwKLSAgICAgIC5tMV9ieXRlZW5hYmxlICAgICh1cHN0cmVhbV9tMV9ieXRlZW5hYmxlKSwKLSAgICAgIC5tMV9jaGlwc2VsZWN0ICAgICh1cHN0cmVhbV9tMV9jaGlwc2VsZWN0KSwKLSAgICAgIC5tMV9jbGsgICAgICAgICAgIChjbGspLAotICAgICAgLm0xX2RlYnVnYWNjZXNzICAgKHVwc3RyZWFtX20xX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5tMV9lbmRvZnBhY2tldCAgICh1cHN0cmVhbV9tMV9lbmRvZnBhY2tldCksCi0gICAgICAubTFfbmF0aXZlYWRkcmVzcyAodXBzdHJlYW1fbTFfbmF0aXZlYWRkcmVzcyksCi0gICAgICAubTFfcmVhZCAgICAgICAgICAodXBzdHJlYW1fbTFfcmVhZCksCi0gICAgICAubTFfcmVhZGRhdGEgICAgICAodXBzdHJlYW1fbTFfcmVhZGRhdGEpLAotICAgICAgLm0xX3JlYWRkYXRhdmFsaWQgKHVwc3RyZWFtX20xX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLm0xX3Jlc2V0X24gICAgICAgKHJlc2V0X24pLAotICAgICAgLm0xX3dhaXRyZXF1ZXN0ICAgKHVwc3RyZWFtX20xX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5tMV93cml0ZSAgICAgICAgICh1cHN0cmVhbV9tMV93cml0ZSksCi0gICAgICAubTFfd3JpdGVkYXRhICAgICAodXBzdHJlYW1fbTFfd3JpdGVkYXRhKSwKLSAgICAgIC5zMV9hZGRyZXNzICAgICAgICh1cHN0cmVhbV9zMV9hZGRyZXNzKSwKLSAgICAgIC5zMV9hcmJpdGVybG9jayAgICh1cHN0cmVhbV9zMV9hcmJpdGVybG9jayksCi0gICAgICAuczFfYXJiaXRlcmxvY2syICAodXBzdHJlYW1fczFfYXJiaXRlcmxvY2syKSwKLSAgICAgIC5zMV9idXJzdGNvdW50ICAgICh1cHN0cmVhbV9zMV9idXJzdGNvdW50KSwKLSAgICAgIC5zMV9ieXRlZW5hYmxlICAgICh1cHN0cmVhbV9zMV9ieXRlZW5hYmxlKSwKLSAgICAgIC5zMV9jaGlwc2VsZWN0ICAgICh1cHN0cmVhbV9zMV9jaGlwc2VsZWN0KSwKLSAgICAgIC5zMV9jbGsgICAgICAgICAgIChjbGspLAotICAgICAgLnMxX2RlYnVnYWNjZXNzICAgKHVwc3RyZWFtX3MxX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5zMV9lbmRvZnBhY2tldCAgICh1cHN0cmVhbV9zMV9lbmRvZnBhY2tldCksCi0gICAgICAuczFfZmx1c2ggICAgICAgICAoMSdiMCksCi0gICAgICAuczFfbmF0aXZlYWRkcmVzcyAodXBzdHJlYW1fczFfbmF0aXZlYWRkcmVzcyksCi0gICAgICAuczFfcmVhZCAgICAgICAgICAodXBzdHJlYW1fczFfcmVhZCksCi0gICAgICAuczFfcmVhZGRhdGEgICAgICAodXBzdHJlYW1fczFfcmVhZGRhdGEpLAotICAgICAgLnMxX3JlYWRkYXRhdmFsaWQgKHVwc3RyZWFtX3MxX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLnMxX3Jlc2V0X24gICAgICAgKHJlc2V0X24pLAotICAgICAgLnMxX3dhaXRyZXF1ZXN0ICAgKHVwc3RyZWFtX3MxX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5zMV93cml0ZSAgICAgICAgICh1cHN0cmVhbV9zMV93cml0ZSksCi0gICAgICAuczFfd3JpdGVkYXRhICAgICAodXBzdHJlYW1fczFfd3JpdGVkYXRhKQotICAgICk7Ci0KLSAgcGlwZWxpbmVfYnJpZGdlX3dhaXRyZXF1ZXN0X2FkYXB0ZXIgdGhlX3BpcGVsaW5lX2JyaWRnZV93YWl0cmVxdWVzdF9hZGFwdGVyCi0gICAgKAotICAgICAgLm0xX2FkZHJlc3MgICAgICAgKHdhaXRyZXF1ZXN0X20xX2FkZHJlc3MpLAotICAgICAgLm0xX2FyYml0ZXJsb2NrICAgKHdhaXRyZXF1ZXN0X20xX2FyYml0ZXJsb2NrKSwKLSAgICAgIC5tMV9hcmJpdGVybG9jazIgICh3YWl0cmVxdWVzdF9tMV9hcmJpdGVybG9jazIpLAotICAgICAgLm0xX2J1cnN0Y291bnQgICAgKHdhaXRyZXF1ZXN0X20xX2J1cnN0Y291bnQpLAotICAgICAgLm0xX2J5dGVlbmFibGUgICAgKHdhaXRyZXF1ZXN0X20xX2J5dGVlbmFibGUpLAotICAgICAgLm0xX2NoaXBzZWxlY3QgICAgKHdhaXRyZXF1ZXN0X20xX2NoaXBzZWxlY3QpLAotICAgICAgLm0xX2NsayAgICAgICAgICAgKGNsayksCi0gICAgICAubTFfZGVidWdhY2Nlc3MgICAod2FpdHJlcXVlc3RfbTFfZGVidWdhY2Nlc3MpLAotICAgICAgLm0xX2VuZG9mcGFja2V0ICAgKHdhaXRyZXF1ZXN0X20xX2VuZG9mcGFja2V0KSwKLSAgICAgIC5tMV9uYXRpdmVhZGRyZXNzICh3YWl0cmVxdWVzdF9tMV9uYXRpdmVhZGRyZXNzKSwKLSAgICAgIC5tMV9yZWFkICAgICAgICAgICh3YWl0cmVxdWVzdF9tMV9yZWFkKSwKLSAgICAgIC5tMV9yZWFkZGF0YSAgICAgICh3YWl0cmVxdWVzdF9tMV9yZWFkZGF0YSksCi0gICAgICAubTFfcmVhZGRhdGF2YWxpZCAod2FpdHJlcXVlc3RfbTFfcmVhZGRhdGF2YWxpZCksCi0gICAgICAubTFfcmVzZXRfbiAgICAgICAocmVzZXRfbiksCi0gICAgICAubTFfd2FpdHJlcXVlc3QgICAod2FpdHJlcXVlc3RfbTFfd2FpdHJlcXVlc3QpLAotICAgICAgLm0xX3dyaXRlICAgICAgICAgKHdhaXRyZXF1ZXN0X20xX3dyaXRlKSwKLSAgICAgIC5tMV93cml0ZWRhdGEgICAgICh3YWl0cmVxdWVzdF9tMV93cml0ZWRhdGEpLAotICAgICAgLnJlc2V0X24gICAgICAgICAgKHJlc2V0X24pLAotICAgICAgLnMxX2FkZHJlc3MgICAgICAgKHdhaXRyZXF1ZXN0X3MxX2FkZHJlc3MpLAotICAgICAgLnMxX2FyYml0ZXJsb2NrICAgKHdhaXRyZXF1ZXN0X3MxX2FyYml0ZXJsb2NrKSwKLSAgICAgIC5zMV9hcmJpdGVybG9jazIgICh3YWl0cmVxdWVzdF9zMV9hcmJpdGVybG9jazIpLAotICAgICAgLnMxX2J1cnN0Y291bnQgICAgKHdhaXRyZXF1ZXN0X3MxX2J1cnN0Y291bnQpLAotICAgICAgLnMxX2J5dGVlbmFibGUgICAgKHdhaXRyZXF1ZXN0X3MxX2J5dGVlbmFibGUpLAotICAgICAgLnMxX2NoaXBzZWxlY3QgICAgKHdhaXRyZXF1ZXN0X3MxX2NoaXBzZWxlY3QpLAotICAgICAgLnMxX2RlYnVnYWNjZXNzICAgKHdhaXRyZXF1ZXN0X3MxX2RlYnVnYWNjZXNzKSwKLSAgICAgIC5zMV9lbmRvZnBhY2tldCAgICh3YWl0cmVxdWVzdF9zMV9lbmRvZnBhY2tldCksCi0gICAgICAuczFfbmF0aXZlYWRkcmVzcyAod2FpdHJlcXVlc3RfczFfbmF0aXZlYWRkcmVzcyksCi0gICAgICAuczFfcmVhZCAgICAgICAgICAod2FpdHJlcXVlc3RfczFfcmVhZCksCi0gICAgICAuczFfcmVhZGRhdGEgICAgICAod2FpdHJlcXVlc3RfczFfcmVhZGRhdGEpLAotICAgICAgLnMxX3JlYWRkYXRhdmFsaWQgKHdhaXRyZXF1ZXN0X3MxX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLnMxX3dhaXRyZXF1ZXN0ICAgKHdhaXRyZXF1ZXN0X3MxX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5zMV93cml0ZSAgICAgICAgICh3YWl0cmVxdWVzdF9zMV93cml0ZSksCi0gICAgICAuczFfd3JpdGVkYXRhICAgICAod2FpdHJlcXVlc3RfczFfd3JpdGVkYXRhKQotICAgICk7Ci0KLSAgYXNzaWduIG0xX25hdGl2ZWFkZHJlc3MgPSBkb3duc3RyZWFtX20xX25hdGl2ZWFkZHJlc3M7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX3MxX25hdGl2ZWFkZHJlc3MgPSB1cHN0cmVhbV9tMV9uYXRpdmVhZGRyZXNzOwotICBhc3NpZ24gdXBzdHJlYW1fczFfbmF0aXZlYWRkcmVzcyA9IHdhaXRyZXF1ZXN0X20xX25hdGl2ZWFkZHJlc3M7Ci0gIGFzc2lnbiB3YWl0cmVxdWVzdF9zMV9uYXRpdmVhZGRyZXNzID0gczFfbmF0aXZlYWRkcmVzczsKLSAgYXNzaWduIG0xX2RlYnVnYWNjZXNzID0gZG93bnN0cmVhbV9tMV9kZWJ1Z2FjY2VzczsKLSAgYXNzaWduIGRvd25zdHJlYW1fczFfZGVidWdhY2Nlc3MgPSB1cHN0cmVhbV9tMV9kZWJ1Z2FjY2VzczsKLSAgYXNzaWduIHVwc3RyZWFtX3MxX2RlYnVnYWNjZXNzID0gd2FpdHJlcXVlc3RfbTFfZGVidWdhY2Nlc3M7Ci0gIGFzc2lnbiB3YWl0cmVxdWVzdF9zMV9kZWJ1Z2FjY2VzcyA9IHMxX2RlYnVnYWNjZXNzOwotICBhc3NpZ24gbTFfYXJiaXRlcmxvY2sgPSBkb3duc3RyZWFtX20xX2FyYml0ZXJsb2NrOwotICBhc3NpZ24gZG93bnN0cmVhbV9zMV9hcmJpdGVybG9jayA9IHVwc3RyZWFtX20xX2FyYml0ZXJsb2NrOwotICBhc3NpZ24gdXBzdHJlYW1fczFfYXJiaXRlcmxvY2sgPSB3YWl0cmVxdWVzdF9tMV9hcmJpdGVybG9jazsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X3MxX2FyYml0ZXJsb2NrID0gczFfYXJiaXRlcmxvY2s7Ci0gIGFzc2lnbiBtMV93cml0ZWRhdGEgPSBkb3duc3RyZWFtX20xX3dyaXRlZGF0YTsKLSAgYXNzaWduIGRvd25zdHJlYW1fczFfd3JpdGVkYXRhID0gdXBzdHJlYW1fbTFfd3JpdGVkYXRhOwotICBhc3NpZ24gdXBzdHJlYW1fczFfd3JpdGVkYXRhID0gd2FpdHJlcXVlc3RfbTFfd3JpdGVkYXRhOwotICBhc3NpZ24gd2FpdHJlcXVlc3RfczFfd3JpdGVkYXRhID0gczFfd3JpdGVkYXRhOwotICBhc3NpZ24gbTFfY2hpcHNlbGVjdCA9IGRvd25zdHJlYW1fbTFfY2hpcHNlbGVjdDsKLSAgYXNzaWduIGRvd25zdHJlYW1fczFfY2hpcHNlbGVjdCA9IHVwc3RyZWFtX20xX2NoaXBzZWxlY3Q7Ci0gIGFzc2lnbiB1cHN0cmVhbV9zMV9jaGlwc2VsZWN0ID0gd2FpdHJlcXVlc3RfbTFfY2hpcHNlbGVjdDsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X3MxX2NoaXBzZWxlY3QgPSBzMV9jaGlwc2VsZWN0OwotICBhc3NpZ24gbTFfYnVyc3Rjb3VudCA9IGRvd25zdHJlYW1fbTFfYnVyc3Rjb3VudDsKLSAgYXNzaWduIGRvd25zdHJlYW1fczFfYnVyc3Rjb3VudCA9IHVwc3RyZWFtX20xX2J1cnN0Y291bnQ7Ci0gIGFzc2lnbiB1cHN0cmVhbV9zMV9idXJzdGNvdW50ID0gd2FpdHJlcXVlc3RfbTFfYnVyc3Rjb3VudDsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X3MxX2J1cnN0Y291bnQgPSBzMV9idXJzdGNvdW50OwotICBhc3NpZ24gbTFfYnl0ZWVuYWJsZSA9IGRvd25zdHJlYW1fbTFfYnl0ZWVuYWJsZTsKLSAgYXNzaWduIGRvd25zdHJlYW1fczFfYnl0ZWVuYWJsZSA9IHVwc3RyZWFtX20xX2J5dGVlbmFibGU7Ci0gIGFzc2lnbiB1cHN0cmVhbV9zMV9ieXRlZW5hYmxlID0gd2FpdHJlcXVlc3RfbTFfYnl0ZWVuYWJsZTsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X3MxX2J5dGVlbmFibGUgPSBzMV9ieXRlZW5hYmxlOwotICBhc3NpZ24gbTFfYXJiaXRlcmxvY2syID0gZG93bnN0cmVhbV9tMV9hcmJpdGVybG9jazI7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX3MxX2FyYml0ZXJsb2NrMiA9IHVwc3RyZWFtX20xX2FyYml0ZXJsb2NrMjsKLSAgYXNzaWduIHVwc3RyZWFtX3MxX2FyYml0ZXJsb2NrMiA9IHdhaXRyZXF1ZXN0X20xX2FyYml0ZXJsb2NrMjsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X3MxX2FyYml0ZXJsb2NrMiA9IHMxX2FyYml0ZXJsb2NrMjsKLSAgYXNzaWduIG0xX3JlYWQgPSBkb3duc3RyZWFtX20xX3JlYWQ7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX3MxX3JlYWQgPSB1cHN0cmVhbV9tMV9yZWFkOwotICBhc3NpZ24gdXBzdHJlYW1fczFfcmVhZCA9IHdhaXRyZXF1ZXN0X20xX3JlYWQ7Ci0gIGFzc2lnbiB3YWl0cmVxdWVzdF9zMV9yZWFkID0gczFfcmVhZDsKLSAgYXNzaWduIG0xX3dyaXRlID0gZG93bnN0cmVhbV9tMV93cml0ZTsKLSAgYXNzaWduIGRvd25zdHJlYW1fczFfd3JpdGUgPSB1cHN0cmVhbV9tMV93cml0ZTsKLSAgYXNzaWduIHVwc3RyZWFtX3MxX3dyaXRlID0gd2FpdHJlcXVlc3RfbTFfd3JpdGU7Ci0gIGFzc2lnbiB3YWl0cmVxdWVzdF9zMV93cml0ZSA9IHMxX3dyaXRlOwotICBhc3NpZ24gd2FpdHJlcXVlc3RfczFfYWRkcmVzcyA9IHtzMV9hZGRyZXNzLCAyJ2IwfTsKLSAgYXNzaWduIHVwc3RyZWFtX3MxX2FkZHJlc3MgPSB3YWl0cmVxdWVzdF9tMV9hZGRyZXNzOwotICBhc3NpZ24gZG93bnN0cmVhbV9zMV9hZGRyZXNzID0gdXBzdHJlYW1fbTFfYWRkcmVzczsKLSAgYXNzaWduIG0xX2FkZHJlc3MgPSBkb3duc3RyZWFtX20xX2FkZHJlc3M7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX20xX3JlYWRkYXRhdmFsaWQgPSBtMV9yZWFkZGF0YXZhbGlkOwotICBhc3NpZ24gdXBzdHJlYW1fbTFfcmVhZGRhdGF2YWxpZCA9IGRvd25zdHJlYW1fczFfcmVhZGRhdGF2YWxpZDsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X20xX3JlYWRkYXRhdmFsaWQgPSB1cHN0cmVhbV9zMV9yZWFkZGF0YXZhbGlkOwotICBhc3NpZ24gczFfcmVhZGRhdGF2YWxpZCA9IHdhaXRyZXF1ZXN0X3MxX3JlYWRkYXRhdmFsaWQ7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX20xX3dhaXRyZXF1ZXN0ID0gbTFfd2FpdHJlcXVlc3Q7Ci0gIGFzc2lnbiB1cHN0cmVhbV9tMV93YWl0cmVxdWVzdCA9IGRvd25zdHJlYW1fczFfd2FpdHJlcXVlc3Q7Ci0gIGFzc2lnbiB3YWl0cmVxdWVzdF9tMV93YWl0cmVxdWVzdCA9IHVwc3RyZWFtX3MxX3dhaXRyZXF1ZXN0OwotICBhc3NpZ24gczFfd2FpdHJlcXVlc3QgPSB3YWl0cmVxdWVzdF9zMV93YWl0cmVxdWVzdDsKLSAgYXNzaWduIGRvd25zdHJlYW1fbTFfZW5kb2ZwYWNrZXQgPSBtMV9lbmRvZnBhY2tldDsKLSAgYXNzaWduIHVwc3RyZWFtX20xX2VuZG9mcGFja2V0ID0gZG93bnN0cmVhbV9zMV9lbmRvZnBhY2tldDsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X20xX2VuZG9mcGFja2V0ID0gdXBzdHJlYW1fczFfZW5kb2ZwYWNrZXQ7Ci0gIGFzc2lnbiBzMV9lbmRvZnBhY2tldCA9IHdhaXRyZXF1ZXN0X3MxX2VuZG9mcGFja2V0OwotICBhc3NpZ24gZG93bnN0cmVhbV9tMV9yZWFkZGF0YSA9IG0xX3JlYWRkYXRhOwotICBhc3NpZ24gdXBzdHJlYW1fbTFfcmVhZGRhdGEgPSBkb3duc3RyZWFtX3MxX3JlYWRkYXRhOwotICBhc3NpZ24gd2FpdHJlcXVlc3RfbTFfcmVhZGRhdGEgPSB1cHN0cmVhbV9zMV9yZWFkZGF0YTsKLSAgYXNzaWduIHMxX3JlYWRkYXRhID0gd2FpdHJlcXVlc3RfczFfcmVhZGRhdGE7Ci0gIC8vczEsIHdoaWNoIGlzIGFuIGVfYXZhbG9uX3NsYXZlCi0gIC8vbTEsIHdoaWNoIGlzIGFuIGVfYXZhbG9uX21hc3RlcgotCi1lbmRtb2R1bGUKLQotCi0vKiBTTGxpbmUgMjA0ODMgImN1c3RvbV9kbWEudiIgMiAqLwotLyogU0xsaW5lIDEgImRkcl9zZHJhbV90ZXN0X2NvbXBvbmVudC52IiAxICovCi0vL0xlZ2FsIE5vdGljZTogKEMpMjAxMCBBbHRlcmEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBZb3VyCi0vL3VzZSBvZiBBbHRlcmEgQ29ycG9yYXRpb24ncyBkZXNpZ24gdG9vbHMsIGxvZ2ljIGZ1bmN0aW9ucyBhbmQgb3RoZXIKLS8vc29mdHdhcmUgYW5kIHRvb2xzLCBhbmQgaXRzIEFNUFAgcGFydG5lciBsb2dpYyBmdW5jdGlvbnMsIGFuZCBhbnkKLS8vb3V0cHV0IGZpbGVzIGFueSBvZiB0aGUgZm9yZWdvaW5nIChpbmNsdWRpbmcgZGV2aWNlIHByb2dyYW1taW5nIG9yCi0vL3NpbXVsYXRpb24gZmlsZXMpLCBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiBhcmUKLS8vZXhwcmVzc2x5IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBBbHRlcmEgUHJvZ3JhbQotLy9MaWNlbnNlIFN1YnNjcmlwdGlvbiBBZ3JlZW1lbnQgb3Igb3RoZXIgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudCwKLS8vaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIHRoYXQgeW91ciB1c2UgaXMgZm9yIHRoZSBzb2xlIHB1cnBvc2UKLS8vb2YgcHJvZ3JhbW1pbmcgbG9naWMgZGV2aWNlcyBtYW51ZmFjdHVyZWQgYnkgQWx0ZXJhIGFuZCBzb2xkIGJ5IEFsdGVyYQotLy9vciBpdHMgYXV0aG9yaXplZCBkaXN0cmlidXRvcnMuICBQbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2FibGUKLS8vYWdyZWVtZW50IGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi1gdGltZXNjYWxlIDFucyAvIDFwcwotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGRkcl9zZHJhbV90ZXN0X2NvbXBvbmVudF9yYW1fbW9kdWxlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZGNsa2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmNsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyZW4sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgMzE6IDBdIHE7Ci0gIGlucHV0ICAgWyAzMTogMF0gZGF0YTsKLSAgaW5wdXQgICBbIDIzOiAwXSByZGFkZHJlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgcmRjbGtlbjsKLSAgaW5wdXQgICBbIDIzOiAwXSB3cmFkZHJlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgd3JjbG9jazsKLSAgaW5wdXQgICAgICAgICAgICB3cmVuOwotCi0gIHJlZyAgICAgWyAzMTogMF0gbWVtX2FycmF5IFsxNjc3NzIxNTogMF07Ci0gIHdpcmUgICAgWyAzMTogMF0gcTsKLSAgcmVnICAgICBbIDIzOiAwXSByZWFkX2FkZHJlc3M7Ci0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIGFsd2F5cyBAKHJkYWRkcmVzcykKLSAgICBiZWdpbgotICAgICAgcmVhZF9hZGRyZXNzID0gcmRhZGRyZXNzOwotICAgIGVuZAotCi0KLSAgLy8gRGF0YSByZWFkIGlzIGFzeW5jaHJvbm91cy4KLSAgYXNzaWduIHEgPSBtZW1fYXJyYXlbcmVhZF9hZGRyZXNzXTsKLQotaW5pdGlhbAotICAgICRyZWFkbWVtaCgiZGRyX3NkcmFtLmRhdCIsIG1lbV9hcnJheSk7Ci0gIGFsd2F5cyBAKHBvc2VkZ2Ugd3JjbG9jaykKLSAgICBiZWdpbgotICAgICAgLy8gV3JpdGUgZGF0YQotICAgICAgaWYgKHdyZW4pCi0gICAgICAgICAgbWVtX2FycmF5W3dyYWRkcmVzc10gPD0gZGF0YTsKLSAgICBlbmQKLQotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLS8vc3ludGhlc2lzIHJlYWRfY29tbWVudHNfYXNfSERMIG9uCi0vLyAgYWx3YXlzIEAocmRhZGRyZXNzKQotLy8gICAgYmVnaW4KLS8vICAgICAgcmVhZF9hZGRyZXNzID0gcmRhZGRyZXNzOwotLy8gICAgZW5kCi0vLwotLy8KLS8vICBscG1fcmFtX2RwIGxwbV9yYW1fZHBfY29tcG9uZW50Ci0vLyAgICAoCi0vLyAgICAgIC5kYXRhIChkYXRhKSwKLS8vICAgICAgLnEgKHEpLAotLy8gICAgICAucmRhZGRyZXNzIChyZWFkX2FkZHJlc3MpLAotLy8gICAgICAucmRjbGtlbiAocmRjbGtlbiksCi0vLyAgICAgIC53cmFkZHJlc3MgKHdyYWRkcmVzcyksCi0vLyAgICAgIC53cmNsb2NrICh3cmNsb2NrKSwKLS8vICAgICAgLndyZW4gKHdyZW4pCi0vLyAgICApOwotLy8KLS8vICBkZWZwYXJhbSBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fZmlsZSA9ICJVTlVTRUQiLAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV9oaW50ID0gIlVTRV9FQUI9T04iLAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV9pbmRhdGEgPSAiUkVHSVNURVJFRCIsCi0vLyAgICAgICAgICAgbHBtX3JhbV9kcF9jb21wb25lbnQubHBtX291dGRhdGEgPSAiVU5SRUdJU1RFUkVEIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fcmRhZGRyZXNzX2NvbnRyb2wgPSAiVU5SRUdJU1RFUkVEIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fd2lkdGggPSAzMiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5scG1fd2lkdGhhZCA9IDI0LAotLy8gICAgICAgICAgIGxwbV9yYW1fZHBfY29tcG9uZW50LmxwbV93cmFkZHJlc3NfY29udHJvbCA9ICJSRUdJU1RFUkVEIiwKLS8vICAgICAgICAgICBscG1fcmFtX2RwX2NvbXBvbmVudC5zdXBwcmVzc19tZW1vcnlfY29udmVyc2lvbl93YXJuaW5ncyA9ICJPTiI7Ci0vLwotLy9zeW50aGVzaXMgcmVhZF9jb21tZW50c19hc19IREwgb2ZmCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBkZHJfc2RyYW1fdGVzdF9jb21wb25lbnQgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRyX2JhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfY2FzX24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkcl9ja2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkcl9jc19uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfZG0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkcl9yYXNfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRyX3dlX24sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZHJfZHEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkcl9kcXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIGlub3V0ICAgWyAxNTogMF0gZGRyX2RxOwotICBpbm91dCAgIFsgIDE6IDBdIGRkcl9kcXM7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgMTI6IDBdIGRkcl9hOwotICBpbnB1dCAgIFsgIDE6IDBdIGRkcl9iYTsKLSAgaW5wdXQgICAgICAgICAgICBkZHJfY2FzX247Ci0gIGlucHV0ICAgICAgICAgICAgZGRyX2NrZTsKLSAgaW5wdXQgICAgICAgICAgICBkZHJfY3NfbjsKLSAgaW5wdXQgICBbICAxOiAwXSBkZHJfZG07Ci0gIGlucHV0ICAgICAgICAgICAgZGRyX3Jhc19uOwotICBpbnB1dCAgICAgICAgICAgIGRkcl93ZV9uOwotCi0gIHdpcmUgICAgWyAyMzogMF0gQ09ERTsKLSAgd2lyZSAgICBbIDEyOiAwXSBhOwotICB3aXJlICAgIFsgIDc6IDBdIGFkZHJfY29sOwotICB3aXJlICAgIFsgIDE6IDBdIGJhOwotICByZWcgICAgIFsgIDI6IDBdIGJ1cnN0bGVuZ3RoOwotICByZWcgICAgICAgICAgICAgIGJ1cnN0bW9kZTsKLSAgcmVnICAgICAgICAgICAgICBjYXMyOwotICByZWcgICAgICAgICAgICAgIGNhczI1OwotICByZWcgICAgICAgICAgICAgIGNhczM7Ci0gIHdpcmUgICAgICAgICAgICAgY2FzX247Ci0gIHdpcmUgICAgICAgICAgICAgY2tlOwotICB3aXJlICAgIFsgIDI6IDBdIGNtZF9jb2RlOwotICB3aXJlICAgICAgICAgICAgIGNzX247Ci0gIHdpcmUgICAgWyAgMjogMF0gY3VycmVudF9yb3c7Ci0gIHdpcmUgICAgWyAxNTogMF0gZGRyX2RxOwotICB3aXJlICAgIFsgIDE6IDBdIGRkcl9kcXM7Ci0gIHdpcmUgICAgWyAgMTogMF0gZG07Ci0gIHJlZyAgICAgWyAgMzogMF0gZG1fY2FwdHVyZWQ7Ci0gIHJlZyAgICAgWyAzMTogMF0gZHFfY2FwdHVyZWQ7Ci0gIHdpcmUgICAgWyAxNTogMF0gZHFfb3V0XzA7Ci0gIHdpcmUgICAgWyAxNTogMF0gZHFfdGVtcDsKLSAgd2lyZSAgICAgICAgICAgICBkcV92YWxpZDsKLSAgd2lyZSAgICBbICAxOiAwXSBkcXNfb3V0XzA7Ci0gIHdpcmUgICAgWyAgMTogMF0gZHFzX3RlbXA7Ci0gIHdpcmUgICAgICAgICAgICAgZHFzX3ZhbGlkOwotICByZWcgICAgICAgICAgICAgIGRxc192YWxpZF90ZW1wOwotICByZWcgICAgIFsgMTU6IDBdIGZpcnN0X2hhbGZfZHE7Ci0gIHJlZyAgICAgWyAgMjogMF0gaW5kZXg7Ci0gIHdpcmUgICAgWyAzMTogMF0gbWVtX2J5dGVzOwotICByZWcgICAgIFsgMTI6IDBdIG9wZW5fcm93cyBbICA3OiAwXTsKLSAgd2lyZSAgICAgICAgICAgICByYXNfbjsKLSAgcmVnICAgICBbIDIzOiAwXSByZF9hZGRyX3BpcGVfMDsKLSAgcmVnICAgICBbIDIzOiAwXSByZF9hZGRyX3BpcGVfMTsKLSAgcmVnICAgICBbIDIzOiAwXSByZF9hZGRyX3BpcGVfMjsKLSAgcmVnICAgICBbIDIzOiAwXSByZF9hZGRyX3BpcGVfMzsKLSAgcmVnICAgICBbIDIzOiAwXSByZF9hZGRyX3BpcGVfNDsKLSAgcmVnICAgICBbIDIzOiAwXSByZF9hZGRyX3BpcGVfNTsKLSAgcmVnICAgICBbIDIzOiAwXSByZF9idXJzdF9jb3VudGVyOwotICByZWcgICAgIFsgIDU6IDBdIHJkX3ZhbGlkX3BpcGU7Ci0gIHdpcmUgICAgWyAyMzogMF0gcmVhZF9hZGRyX2RlbGF5ZWQ7Ci0gIHJlZyAgICAgICAgICAgICAgcmVhZF9jbWQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gcmVhZF9kYXRhOwotICB3aXJlICAgIFsgMTU6IDBdIHJlYWRfZHE7Ci0gIHdpcmUgICAgICAgICAgICAgcmVhZF92YWxpZDsKLSAgcmVnICAgICAgICAgICAgICByZWFkX3ZhbGlkX3I7Ci0gIHJlZyAgICAgICAgICAgICAgcmVhZF92YWxpZF9yMjsKLSAgcmVnICAgICAgICAgICAgICByZWFkX3ZhbGlkX3IzOwotICByZWcgICAgICAgICAgICAgIHJlYWRfdmFsaWRfcjQ7Ci0gIHdpcmUgICAgWyAyMzogMF0gcm13X2FkZHJlc3M7Ci0gIHJlZyAgICAgWyAzMTogMF0gcm13X3RlbXA7Ci0gIHJlZyAgICAgWyAxNTogMF0gc2Vjb25kX2hhbGZfZHE7Ci0gIHdpcmUgICAgWyAyMzogMF0gdHh0X2NvZGU7Ci0gIHdpcmUgICAgICAgICAgICAgd2VfbjsKLSAgd2lyZSAgICBbIDIzOiAwXSB3cl9hZGRyX2RlbGF5ZWQ7Ci0gIHJlZyAgICAgWyAyMzogMF0gd3JfYWRkcl9waXBlXzA7Ci0gIHJlZyAgICAgWyAyMzogMF0gd3JfYWRkcl9waXBlXzE7Ci0gIHJlZyAgICAgWyAyMzogMF0gd3JfYWRkcl9waXBlXzI7Ci0gIHJlZyAgICAgWyAyMzogMF0gd3JfYWRkcl9waXBlXzM7Ci0gIHJlZyAgICAgWyAyMzogMF0gd3JfYnVyc3RfY291bnRlcjsKLSAgcmVnICAgICAgICAgICAgICB3cml0ZV9jbWQ7Ci0gIHdpcmUgICAgICAgICAgICAgd3JpdGVfdG9fcmFtOwotICByZWcgICAgICAgICAgICAgIHdyaXRlX3RvX3JhbV9yOwotICByZWcgICAgICAgICAgICAgIHdyaXRlX3ZhbGlkOwotICByZWcgICAgICAgICAgICAgIHdyaXRlX3ZhbGlkX3I7Ci0gIHJlZyAgICAgICAgICAgICAgd3JpdGVfdmFsaWRfcjI7Ci0gIHJlZyAgICAgICAgICAgICAgd3JpdGVfdmFsaWRfcjM7Ci1pbml0aWFsCi0gIGJlZ2luCi0gICAgJHdyaXRlKCJcbiIpOwotICAgICR3cml0ZSgiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7Ci0gICAgJHdyaXRlKCJUaGlzIHRlc3RiZW5jaCBpbmNsdWRlcyBhbiBTT1BDIEJ1aWxkZXIgZ2VuZXJhdGVkIEFsdGVyYSBtZW1vcnkgbW9kZWw6XG4iKTsKLSAgICAkd3JpdGUoIidkZHJfc2RyYW1fdGVzdF9jb21wb25lbnQudicsIHRvIHNpbXVsYXRlIGFjY2Vzc2VzIHRvIHRoZSBERFIgU0RSQU0gbWVtb3J5LlxuIik7Ci0gICAgJHdyaXRlKCIgXG4iKTsKLSAgICAkd3JpdGUoIkluaXRpYWwgY29udGVudHMgYXJlIGxvYWRlZCBmcm9tIHRoZSBmaWxlOiAnZGRyX3NkcmFtLmRhdCcuXG4iKTsKLSAgICAkd3JpdGUoIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOwotICBlbmQKLSAgLy9TeW5jaHJvbm91cyB3cml0ZSB3aGVuIChDT0RFID09IDI0J2gyMDU3NTIgKHdyaXRlKSkKLSAgZGRyX3NkcmFtX3Rlc3RfY29tcG9uZW50X3JhbV9tb2R1bGUgZGRyX3NkcmFtX3Rlc3RfY29tcG9uZW50X3JhbQotICAgICgKLSAgICAgIC5kYXRhICAgICAgKHJtd190ZW1wKSwKLSAgICAgIC5xICAgICAgICAgKHJlYWRfZGF0YSksCi0gICAgICAucmRhZGRyZXNzIChybXdfYWRkcmVzcyksCi0gICAgICAucmRjbGtlbiAgICgxJ2IxKSwKLSAgICAgIC53cmFkZHJlc3MgKHdyX2FkZHJfZGVsYXllZCksCi0gICAgICAud3JjbG9jayAgIChjbGspLAotICAgICAgLndyZW4gICAgICAod3JpdGVfdG9fcmFtX3IpCi0gICAgKTsKLQotICBhc3NpZ24gY2tlID0gZGRyX2NrZTsKLSAgYXNzaWduIGNzX24gPSBkZHJfY3NfbjsKLSAgYXNzaWduIHJhc19uID0gZGRyX3Jhc19uOwotICBhc3NpZ24gY2FzX24gPSBkZHJfY2FzX247Ci0gIGFzc2lnbiB3ZV9uID0gZGRyX3dlX247Ci0gIGFzc2lnbiBkbSA9IGRkcl9kbTsKLSAgYXNzaWduIGJhID0gZGRyX2JhOwotICBhc3NpZ24gYSA9IGRkcl9hOwotICBhc3NpZ24gY21kX2NvZGUgPSB7cmFzX24sIGNhc19uLCB3ZV9ufTsKLSAgYXNzaWduIENPREUgPSAoJmNzX24pID8gMjQnaDQ5NGU0OCA6IHR4dF9jb2RlOwotICBhc3NpZ24gYWRkcl9jb2wgPSBhWzggOiAxXTsKLSAgYXNzaWduIGN1cnJlbnRfcm93ID0ge2NzX24sYmF9OwotICAvLyBEZWNvZGUgY29tbWFuZHMgaW50byB0aGVpciBhY3Rpb25zCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICAvLyBObyBBY3Rpdml0eSBpZiB0aGUgY2xvY2sgaXMKLSAgICAgIGlmIChja2UpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgLy8gVGhpcyBpcyBhIHJlYWQgY29tbWFuZAotICAgICAgICAgIGlmIChjbWRfY29kZSA9PSAzJ2IxMDEpCi0gICAgICAgICAgICAgIHJlYWRfY21kIDw9IDEnYjE7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHJlYWRfY21kIDw9IDEnYjA7Ci0gICAgICAgICAgLy8gVGhpcyBpcyBhIHdyaXRlIGNvbW1hbmQKLSAgICAgICAgICBpZiAoY21kX2NvZGUgPT0gMydiMTAwKQotICAgICAgICAgICAgICB3cml0ZV9jbWQgPD0gMSdiMTsKLSAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgd3JpdGVfY21kIDw9IDEnYjA7Ci0gICAgICAgICAgLy8gVGhpcyBpcyBhbiBhY3RpdmF0ZSAtIHN0b3JlIHRoZSBjaGlwL3Jvdy9iYW5rIGFkZHJlc3MgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIEREUiBjb250cm9sbGVyCi0gICAgICAgICAgaWYgKGNtZF9jb2RlID09IDMnYjAxMSkKLSAgICAgICAgICAgICAgb3Blbl9yb3dzW2N1cnJlbnRfcm93XSA8PSBhOwotICAgICAgICAgIC8vTG9hZCBtb2RlIHJlZ2lzdGVyIC0gc2V0IENBUyBsYXRlbmN5LCBidXJzdCBtb2RlIGFuZCBsZW5ndGgKLSAgICAgICAgICBpZiAoY21kX2NvZGUgPT0gMydiMDAwICYmIGJhID09IDInYjAwKQotICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgYnVyc3Rtb2RlIDw9IGFbM107Ci0gICAgICAgICAgICAgIGJ1cnN0bGVuZ3RoIDw9IGFbMiA6IDBdIDw8IDE7Ci0gICAgICAgICAgICAgIC8vRGVjb2RlIENBUyBMYXRlbmN5IGZyb20gYml0cyBhWzYuLjRdCi0gICAgICAgICAgICAgIGlmIChhWzYgOiA0XSA9PSAzJ2IwMTApCi0gICAgICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgICAgIGNhczIgPD0gMSdiMTsKLSAgICAgICAgICAgICAgICAgIGluZGV4IDw9IDMnYjAwMTsKLSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgZWxzZSAvL0NBUyBMYXRlbmN5ID0gMi41IAotICAgICAgICAgICAgICBpZiAoYVs2IDogNF0gPT0gMydiMTEwKQotICAgICAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICAgICBjYXMyNSA8PSAxJ2IxOwotICAgICAgICAgICAgICAgICAgaW5kZXggPD0gMydiMDAxOwotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICAgICBjYXMzIDw9IDEnYjE7Ci0gICAgICAgICAgICAgICAgICBpbmRleCA8PSAzJ2IwMTA7Ci0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgICByZF92YWxpZF9waXBlWzUgOiAxXSA8PSByZF92YWxpZF9waXBlWzQgOiAwXTsKLSAgICAgICAgICByZF9hZGRyX3BpcGVfNSA8PSByZF9hZGRyX3BpcGVfNDsKLSAgICAgICAgICByZF9hZGRyX3BpcGVfNCA8PSByZF9hZGRyX3BpcGVfMzsKLSAgICAgICAgICByZF9hZGRyX3BpcGVfMyA8PSByZF9hZGRyX3BpcGVfMjsKLSAgICAgICAgICByZF9hZGRyX3BpcGVfMiA8PSByZF9hZGRyX3BpcGVfMTsKLSAgICAgICAgICByZF9hZGRyX3BpcGVfMSA8PSByZF9hZGRyX3BpcGVfMDsKLSAgICAgICAgICByZF92YWxpZF9waXBlWzBdIDw9IGNtZF9jb2RlID09IDMnYjEwMTsKLSAgICAgICAgICB3cl9hZGRyX3BpcGVfMyA8PSB3cl9hZGRyX3BpcGVfMjsKLSAgICAgICAgICB3cl9hZGRyX3BpcGVfMiA8PSB3cl9hZGRyX3BpcGVfMTsKLSAgICAgICAgICB3cl9hZGRyX3BpcGVfMSA8PSB3cl9hZGRyX3BpcGVfMDsKLSAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICAvLyBCdXJzdCBzdXBwb3J0IC0gbWFrZSB0aGUgd3JfYWRkciAmIHJkX2FkZHIga2VlcCBjb3VudGluZwotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgLy8gUmVzZXQgd3JpdGUgYWRkcmVzcyBvdGhlcndpc2UgaWYgdGhlIGZpcnN0IHdyaXRlIGlzIHBhcnRpYWwgaXQgYnJlYWtzIQotICAgICAgaWYgKGNtZF9jb2RlID09IDMnYjAwMCAmJiBiYSA9PSAyJ2IwMCkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICB3cl9hZGRyX3BpcGVfMCA8PSAwOwotICAgICAgICAgIHdyX2J1cnN0X2NvdW50ZXIgPD0gMDsKLSAgICAgICAgZW5kCi0gICAgICBlbHNlIGlmIChjbWRfY29kZSA9PSAzJ2IxMDApCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgd3JfYWRkcl9waXBlXzAgPD0ge2JhLG9wZW5fcm93c1tjdXJyZW50X3Jvd10sYWRkcl9jb2x9OwotICAgICAgICAgIHdyX2J1cnN0X2NvdW50ZXJbMjMgOiAyXSA8PSB7YmEsb3Blbl9yb3dzW2N1cnJlbnRfcm93XSxhZGRyX2NvbFs3IDogMl19OwotICAgICAgICAgIHdyX2J1cnN0X2NvdW50ZXJbMSA6IDBdIDw9IGFkZHJfY29sWzEgOiAwXSArIDE7Ci0gICAgICAgIGVuZAotICAgICAgZWxzZSBpZiAod3JpdGVfY21kIHx8IHdyaXRlX3RvX3JhbSkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICB3cl9hZGRyX3BpcGVfMCA8PSB3cl9idXJzdF9jb3VudGVyOwotICAgICAgICAgIHdyX2J1cnN0X2NvdW50ZXJbMSA6IDBdIDw9IHdyX2J1cnN0X2NvdW50ZXJbMSA6IDBdICsgMTsKLSAgICAgICAgZW5kCi0gICAgICBlbHNlIAotICAgICAgICB3cl9hZGRyX3BpcGVfMCA8PSAwOwotICAgICAgLy8gUmVzZXQgcmVhZCBhZGRyZXNzIG90aGVyd2lzZSBpZiB0aGUgZmlyc3Qgd3JpdGUgaXMgcGFydGlhbCBpdCBicmVha3MhCi0gICAgICBpZiAoY21kX2NvZGUgPT0gMydiMDAwICYmIGJhID09IDInYjAwKQotICAgICAgICAgIHJkX2FkZHJfcGlwZV8wIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbWRfY29kZSA9PSAzJ2IxMDEpCi0gICAgICAgIGJlZ2luCi0gICAgICAgICAgcmRfYWRkcl9waXBlXzAgPD0ge2JhLG9wZW5fcm93c1tjdXJyZW50X3Jvd10sYWRkcl9jb2x9OwotICAgICAgICAgIHJkX2J1cnN0X2NvdW50ZXJbMjMgOiAyXSA8PSB7YmEsb3Blbl9yb3dzW2N1cnJlbnRfcm93XSxhZGRyX2NvbFs3IDogMl19OwotICAgICAgICAgIHJkX2J1cnN0X2NvdW50ZXJbMSA6IDBdIDw9IGFkZHJfY29sWzEgOiAwXSArIDE7Ci0gICAgICAgIGVuZAotICAgICAgZWxzZSBpZiAocmVhZF9jbWQgfHwgZHFfdmFsaWQgfHwgcmVhZF92YWxpZCkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgICByZF9hZGRyX3BpcGVfMCA8PSByZF9idXJzdF9jb3VudGVyOwotICAgICAgICAgIHJkX2J1cnN0X2NvdW50ZXJbMSA6IDBdIDw9IHJkX2J1cnN0X2NvdW50ZXJbMSA6IDBdICsgMTsKLSAgICAgICAgZW5kCi0gICAgICBlbHNlIAotICAgICAgICByZF9hZGRyX3BpcGVfMCA8PSAwOwotICAgIGVuZAotCi0KLSAgLy8gcmVhZCBkYXRhIHRyYW5zaXRpb24gZnJvbSBzaW5nbGUgdG8gZG91YmxlIGNsb2NrIHJhdGUKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGZpcnN0X2hhbGZfZHEgPD0gcmVhZF9kYXRhWzMxIDogMTZdOwotICAgICAgc2Vjb25kX2hhbGZfZHEgPD0gcmVhZF9kYXRhWzE1IDogMF07Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gcmVhZF9kcSA9IGNsayAgPyBzZWNvbmRfaGFsZl9kcSA6IGZpcnN0X2hhbGZfZHE7Ci0gIGFzc2lnbiBkcXNfdGVtcCA9IGRxc192YWxpZCA/IHsye2Nsa319IDogezJ7MSdien19OwotICBhc3NpZ24gZHFfdGVtcCA9IGRxX3ZhbGlkICA/IHJlYWRfZHEgOiB7MTZ7MSdien19OwotICBhc3NpZ24gIzIuNSBkcXNfb3V0XzAgPSBkcXNfdGVtcDsKLSAgYXNzaWduICMyLjUgZHFfb3V0XzAgPSBkcV90ZW1wOwotICBhc3NpZ24gIzIuNSBkZHJfZHFzID0gZHFzX291dF8wOwotICBhc3NpZ24gIzIuNSBkZHJfZHEgPSBkcV9vdXRfMDsKLSAgLy9QaXBlbGluaW5nIHJlZ2lzdGVycyBmb3IgYnVyc3QgY291bnRpbmcKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIHdyaXRlX3ZhbGlkIDw9IHdyaXRlX2NtZDsKLSAgICAgIHdyaXRlX3ZhbGlkX3IgPD0gd3JpdGVfdmFsaWQ7Ci0gICAgICByZWFkX3ZhbGlkX3IgPD0gcmVhZF92YWxpZDsKLSAgICAgIHdyaXRlX3ZhbGlkX3IyIDw9IHdyaXRlX3ZhbGlkX3I7Ci0gICAgICB3cml0ZV92YWxpZF9yMyA8PSB3cml0ZV92YWxpZF9yMjsKLSAgICAgIHdyaXRlX3RvX3JhbV9yIDw9IHdyaXRlX3RvX3JhbTsKLSAgICAgIHJlYWRfdmFsaWRfcjIgPD0gcmVhZF92YWxpZF9yOwotICAgICAgcmVhZF92YWxpZF9yMyA8PSByZWFkX3ZhbGlkX3IyOwotICAgICAgcmVhZF92YWxpZF9yNCA8PSByZWFkX3ZhbGlkX3IzOwotICAgIGVuZAotCi0KLSAgYXNzaWduIHdyaXRlX3RvX3JhbSA9IHdyaXRlX3ZhbGlkIHx8IHdyaXRlX3ZhbGlkX3IgfHwgd3JpdGVfdmFsaWRfcjIgfHwgd3JpdGVfdmFsaWRfcjM7Ci0gIGFzc2lnbiBkcV92YWxpZCA9IHJlYWRfdmFsaWRfciB8fCByZWFkX3ZhbGlkX3IyIHx8IHJlYWRfdmFsaWRfcjMgfHwgcmVhZF92YWxpZF9yNDsKLSAgYXNzaWduIGRxc192YWxpZCA9IGRxX3ZhbGlkIHx8IGRxc192YWxpZF90ZW1wOwotICAvLyAKLSAgYWx3YXlzIEAobmVnZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGRxc192YWxpZF90ZW1wIDw9IHJlYWRfdmFsaWQ7Ci0gICAgZW5kCi0KLQotICAvL2NhcHR1cmUgZmlyc3QgaGFsZiBvZiB3cml0ZSBkYXRhIHdpdGggcmlzaW5nIGVkZ2Ugb2YgRFFTLCBmb3Igc2ltdWxhdGlvbiB1c2Ugb25seSAxIERRUyBwaW4KLSAgYWx3YXlzIEAocG9zZWRnZSBkZHJfZHFzWzBdKQotICAgIGJlZ2luCi0gICAgICBkcV9jYXB0dXJlZFsxNSA6IDBdIDw9IGRkcl9kcVsxNSA6IDBdOwotICAgICAgZG1fY2FwdHVyZWRbMSA6IDBdIDw9IGRkcl9kbVsxIDogMF07Ci0gICAgZW5kCi0KLQotICAvL2NhcHR1cmUgc2Vjb25kIGhhbGYgb2Ygd3JpdGUgZGF0YSB3aXRoIGZhbGxpbmcgZWRnZSBvZiBEUVMsIGZvciBzaW11bGF0aW9uIHVzZSBvbmx5IDEgRFFTIHBpbgotICBhbHdheXMgQChuZWdlZGdlIGRkcl9kcXNbMF0pCi0gICAgYmVnaW4KLSAgICAgIGRxX2NhcHR1cmVkWzMxIDogMTZdIDw9IGRkcl9kcVsxNSA6IDBdOwotICAgICAgZG1fY2FwdHVyZWRbMyA6IDJdIDw9IGRkcl9kbVsxIDogMF07Ci0gICAgZW5kCi0KLQotICAvL1N1cHBvcnQgZm9yIGluY29tcGxldGUgd3JpdGVzLCBkbyBhIHJlYWQtbW9kaWZ5LXdyaXRlIHdpdGggbWVtX2J5dGVzIGFuZCB0aGUgd3JpdGUgZGF0YQotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKHdyaXRlX3RvX3JhbSkKLSAgICAgICAgICBybXdfdGVtcFs3IDogMF0gPD0gZG1fY2FwdHVyZWRbMF0gPyBtZW1fYnl0ZXNbNyA6IDBdIDogZHFfY2FwdHVyZWRbNyA6IDBdOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmICh3cml0ZV90b19yYW0pCi0gICAgICAgICAgcm13X3RlbXBbMTUgOiA4XSA8PSBkbV9jYXB0dXJlZFsxXSA/IG1lbV9ieXRlc1sxNSA6IDhdIDogZHFfY2FwdHVyZWRbMTUgOiA4XTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAod3JpdGVfdG9fcmFtKQotICAgICAgICAgIHJtd190ZW1wWzIzIDogMTZdIDw9IGRtX2NhcHR1cmVkWzJdID8gbWVtX2J5dGVzWzIzIDogMTZdIDogZHFfY2FwdHVyZWRbMjMgOiAxNl07Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKHdyaXRlX3RvX3JhbSkKLSAgICAgICAgICBybXdfdGVtcFszMSA6IDI0XSA8PSBkbV9jYXB0dXJlZFszXSA/IG1lbV9ieXRlc1szMSA6IDI0XSA6IGRxX2NhcHR1cmVkWzMxIDogMjRdOwotICAgIGVuZAotCi0KLSAgYXNzaWduIG1lbV9ieXRlcyA9IChybXdfYWRkcmVzcyA9PSB3cl9hZGRyX2RlbGF5ZWQgJiYgd3JpdGVfdG9fcmFtX3IpID8gcm13X3RlbXAgOiByZWFkX2RhdGE7Ci0gIGFzc2lnbiBybXdfYWRkcmVzcyA9ICh3cml0ZV90b19yYW0pID8gd3JfYWRkcl9waXBlXzEgOiByZWFkX2FkZHJfZGVsYXllZDsKLSAgYXNzaWduIHdyX2FkZHJfZGVsYXllZCA9IHdyX2FkZHJfcGlwZV8yOwotICAvL3VzZSBpbmRleCB0byBzZWxlY3Qgd2hpY2ggcGlwZWxpbmUgc3RhZ2UgZHJpdmVzIGFkZHIKLSAgYXNzaWduIHJlYWRfYWRkcl9kZWxheWVkID0gKGluZGV4ID09IDApPyByZF9hZGRyX3BpcGVfMCA6Ci0gICAgKGluZGV4ID09IDEpPyByZF9hZGRyX3BpcGVfMSA6Ci0gICAgKGluZGV4ID09IDIpPyByZF9hZGRyX3BpcGVfMiA6Ci0gICAgKGluZGV4ID09IDMpPyByZF9hZGRyX3BpcGVfMyA6Ci0gICAgKGluZGV4ID09IDQpPyByZF9hZGRyX3BpcGVfNCA6Ci0gICAgcmRfYWRkcl9waXBlXzU7Ci0KLSAgLy91c2UgaW5kZXggdG8gc2VsZWN0IHdoaWNoIHBpcGVsaW5lIHN0YWdlIGRyaXZlcyB2YWxpZAotICBhc3NpZ24gcmVhZF92YWxpZCA9IChpbmRleCA9PSAwKT8gcmRfdmFsaWRfcGlwZVswXSA6Ci0gICAgKGluZGV4ID09IDEpPyByZF92YWxpZF9waXBlWzFdIDoKLSAgICAoaW5kZXggPT0gMik/IHJkX3ZhbGlkX3BpcGVbMl0gOgotICAgIChpbmRleCA9PSAzKT8gcmRfdmFsaWRfcGlwZVszXSA6Ci0gICAgKGluZGV4ID09IDQpPyByZF92YWxpZF9waXBlWzRdIDoKLSAgICByZF92YWxpZF9waXBlWzVdOwotCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIGFzc2lnbiB0eHRfY29kZSA9IChjbWRfY29kZSA9PSAzJ2gwKT8gMjQnaDRjNGQ1MiA6Ci0gICAgKGNtZF9jb2RlID09IDMnaDEpPyAyNCdoNDE1MjQ2IDoKLSAgICAoY21kX2NvZGUgPT0gMydoMik/IDI0J2g1MDUyNDUgOgotICAgIChjbWRfY29kZSA9PSAzJ2gzKT8gMjQnaDQxNDM1NCA6Ci0gICAgKGNtZF9jb2RlID09IDMnaDQpPyAyNCdoMjA1NzUyIDoKLSAgICAoY21kX2NvZGUgPT0gMydoNSk/IDI0J2gyMDUyNDQgOgotICAgIChjbWRfY29kZSA9PSAzJ2g2KT8gMjQnaDQyNTM1NCA6Ci0gICAgKGNtZF9jb2RlID09IDMnaDcpPyAyNCdoNGU0ZjUwIDoKLSAgICAyNCdoNDI0MTQ0OwotCi0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLQotZW5kbW9kdWxlCi0KLQotLyogU0xsaW5lIDIwNDg0ICJjdXN0b21fZG1hLnYiIDIgKi8KLS8qIFNMbGluZSAxICJjcHVfdGVzdF9iZW5jaC52IiAxICovCi0vL0xlZ2FsIE5vdGljZTogKEMpMjAxMCBBbHRlcmEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBZb3VyCi0vL3VzZSBvZiBBbHRlcmEgQ29ycG9yYXRpb24ncyBkZXNpZ24gdG9vbHMsIGxvZ2ljIGZ1bmN0aW9ucyBhbmQgb3RoZXIKLS8vc29mdHdhcmUgYW5kIHRvb2xzLCBhbmQgaXRzIEFNUFAgcGFydG5lciBsb2dpYyBmdW5jdGlvbnMsIGFuZCBhbnkKLS8vb3V0cHV0IGZpbGVzIGFueSBvZiB0aGUgZm9yZWdvaW5nIChpbmNsdWRpbmcgZGV2aWNlIHByb2dyYW1taW5nIG9yCi0vL3NpbXVsYXRpb24gZmlsZXMpLCBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiBhcmUKLS8vZXhwcmVzc2x5IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBBbHRlcmEgUHJvZ3JhbQotLy9MaWNlbnNlIFN1YnNjcmlwdGlvbiBBZ3JlZW1lbnQgb3Igb3RoZXIgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudCwKLS8vaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIHRoYXQgeW91ciB1c2UgaXMgZm9yIHRoZSBzb2xlIHB1cnBvc2UKLS8vb2YgcHJvZ3JhbW1pbmcgbG9naWMgZGV2aWNlcyBtYW51ZmFjdHVyZWQgYnkgQWx0ZXJhIGFuZCBzb2xkIGJ5IEFsdGVyYQotLy9vciBpdHMgYXV0aG9yaXplZCBkaXN0cmlidXRvcnMuICBQbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2FibGUKLS8vYWdyZWVtZW50IGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBjcHVfdGVzdF9iZW5jaCAoCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgQV9ic3RhdHVzX3JlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICBBX2NtcF9yZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQV9jdHJsX2V4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBBX2N0cmxfbGRfbm9uX2J5cGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBBX2RzdF9yZWdudW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgQV9lbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBBX2VzdGF0dXNfcmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgIEFfaWVuYWJsZV9yZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQV9pcGVuZGluZ19yZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQV9pdywKLSAgICAgICAgICAgICAgICAgICAgICAgICBBX21lbV9ieXRlX2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgIEFfb3BfaGJyZWFrLAotICAgICAgICAgICAgICAgICAgICAgICAgIEFfb3BfaW50ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBBX3BjYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBBX3N0X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQV9zdGF0dXNfcmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgIEFfdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQV93cl9kc3RfcmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgIEVfYWRkX2JyX3RvX3Rha2VuX2hpc3RvcnlfdW5maWx0ZXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBFX2xvZ2ljX3Jlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBFX3ZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgIE1fYmh0X3B0cl91bmZpbHRlcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIE1fYmh0X3dyX2RhdGFfdW5maWx0ZXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBNX2JodF93cl9lbl91bmZpbHRlcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIE1fbWVtX2JhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgIE1fdGFyZ2V0X3BjYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBNX3ZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgIFdfZHN0X3JlZ251bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBXX2l3LAotICAgICAgICAgICAgICAgICAgICAgICAgIFdfaXdfb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgV19pd19vcHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgV19wY2IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgV192YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBXX3ZpbnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIFdfd3JfZHN0X3JlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgZF9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZF93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgIGlfcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgIEFfd3JfZGF0YV9maWx0ZXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBFX2FkZF9icl90b190YWtlbl9oaXN0b3J5X2ZpbHRlcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIEVfc3JjMV9lcV9zcmMyLAotICAgICAgICAgICAgICAgICAgICAgICAgIE1fYmh0X3B0cl9maWx0ZXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBNX2JodF93cl9kYXRhX2ZpbHRlcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIE1fYmh0X3dyX2VuX2ZpbHRlcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaGFzX2VuZGVkCi0gICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAzMTogMF0gQV93cl9kYXRhX2ZpbHRlcmVkOwotICBvdXRwdXQgICAgICAgICAgIEVfYWRkX2JyX3RvX3Rha2VuX2hpc3RvcnlfZmlsdGVyZWQ7Ci0gIG91dHB1dCAgICAgICAgICAgRV9zcmMxX2VxX3NyYzI7Ci0gIG91dHB1dCAgWyAgNzogMF0gTV9iaHRfcHRyX2ZpbHRlcmVkOwotICBvdXRwdXQgIFsgIDE6IDBdIE1fYmh0X3dyX2RhdGFfZmlsdGVyZWQ7Ci0gIG91dHB1dCAgICAgICAgICAgTV9iaHRfd3JfZW5fZmlsdGVyZWQ7Ci0gIG91dHB1dCAgICAgICAgICAgdGVzdF9oYXNfZW5kZWQ7Ci0gIGlucHV0ICAgWyAzMTogMF0gQV9ic3RhdHVzX3JlZzsKLSAgaW5wdXQgICAgICAgICAgICBBX2NtcF9yZXN1bHQ7Ci0gIGlucHV0ICAgICAgICAgICAgQV9jdHJsX2V4Y2VwdGlvbjsKLSAgaW5wdXQgICAgICAgICAgICBBX2N0cmxfbGRfbm9uX2J5cGFzczsKLSAgaW5wdXQgICBbICA0OiAwXSBBX2RzdF9yZWdudW07Ci0gIGlucHV0ICAgICAgICAgICAgQV9lbjsKLSAgaW5wdXQgICBbIDMxOiAwXSBBX2VzdGF0dXNfcmVnOwotICBpbnB1dCAgIFsgMzE6IDBdIEFfaWVuYWJsZV9yZWc7Ci0gIGlucHV0ICAgWyAzMTogMF0gQV9pcGVuZGluZ19yZWc7Ci0gIGlucHV0ICAgWyAzMTogMF0gQV9pdzsKLSAgaW5wdXQgICBbICAzOiAwXSBBX21lbV9ieXRlX2VuOwotICBpbnB1dCAgICAgICAgICAgIEFfb3BfaGJyZWFrOwotICBpbnB1dCAgICAgICAgICAgIEFfb3BfaW50cjsKLSAgaW5wdXQgICBbIDI2OiAwXSBBX3BjYjsKLSAgaW5wdXQgICBbIDMxOiAwXSBBX3N0X2RhdGE7Ci0gIGlucHV0ICAgWyAzMTogMF0gQV9zdGF0dXNfcmVnOwotICBpbnB1dCAgICAgICAgICAgIEFfdmFsaWQ7Ci0gIGlucHV0ICAgWyAzMTogMF0gQV93cl9kYXRhX3VuZmlsdGVyZWQ7Ci0gIGlucHV0ICAgICAgICAgICAgQV93cl9kc3RfcmVnOwotICBpbnB1dCAgICAgICAgICAgIEVfYWRkX2JyX3RvX3Rha2VuX2hpc3RvcnlfdW5maWx0ZXJlZDsKLSAgaW5wdXQgICBbIDMxOiAwXSBFX2xvZ2ljX3Jlc3VsdDsKLSAgaW5wdXQgICAgICAgICAgICBFX3ZhbGlkOwotICBpbnB1dCAgIFsgIDc6IDBdIE1fYmh0X3B0cl91bmZpbHRlcmVkOwotICBpbnB1dCAgIFsgIDE6IDBdIE1fYmh0X3dyX2RhdGFfdW5maWx0ZXJlZDsKLSAgaW5wdXQgICAgICAgICAgICBNX2JodF93cl9lbl91bmZpbHRlcmVkOwotICBpbnB1dCAgIFsgMjY6IDBdIE1fbWVtX2JhZGRyOwotICBpbnB1dCAgIFsgMjY6IDBdIE1fdGFyZ2V0X3BjYjsKLSAgaW5wdXQgICAgICAgICAgICBNX3ZhbGlkOwotICBpbnB1dCAgIFsgIDQ6IDBdIFdfZHN0X3JlZ251bTsKLSAgaW5wdXQgICBbIDMxOiAwXSBXX2l3OwotICBpbnB1dCAgIFsgIDU6IDBdIFdfaXdfb3A7Ci0gIGlucHV0ICAgWyAgNTogMF0gV19pd19vcHg7Ci0gIGlucHV0ICAgWyAyNjogMF0gV19wY2I7Ci0gIGlucHV0ICAgICAgICAgICAgV192YWxpZDsKLSAgaW5wdXQgICBbIDU1OiAwXSBXX3ZpbnN0OwotICBpbnB1dCAgICAgICAgICAgIFdfd3JfZHN0X3JlZzsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAyNjogMF0gZF9hZGRyZXNzOwotICBpbnB1dCAgIFsgIDM6IDBdIGRfYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBkX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgZF93cml0ZTsKLSAgaW5wdXQgICBbIDI2OiAwXSBpX2FkZHJlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgaV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIGlfcmVhZGRhdGF2YWxpZDsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9uOwotCi0gIHJlZyAgICAgWyAyNjogMF0gQV9tZW1fYmFkZHI7Ci0gIHJlZyAgICAgWyAyNjogMF0gQV90YXJnZXRfcGNiOwotICB3aXJlICAgIFsgMzE6IDBdIEFfd3JfZGF0YV9maWx0ZXJlZDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF8wX2lzX3g7Ci0gIHdpcmUgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWRfMTBfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF8xMV9pc194OwotICB3aXJlICAgICAgICAgICAgIEFfd3JfZGF0YV91bmZpbHRlcmVkXzEyX2lzX3g7Ci0gIHdpcmUgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWRfMTNfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF8xNF9pc194OwotICB3aXJlICAgICAgICAgICAgIEFfd3JfZGF0YV91bmZpbHRlcmVkXzE1X2lzX3g7Ci0gIHdpcmUgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWRfMTZfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF8xN19pc194OwotICB3aXJlICAgICAgICAgICAgIEFfd3JfZGF0YV91bmZpbHRlcmVkXzE4X2lzX3g7Ci0gIHdpcmUgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWRfMTlfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF8xX2lzX3g7Ci0gIHdpcmUgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWRfMjBfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF8yMV9pc194OwotICB3aXJlICAgICAgICAgICAgIEFfd3JfZGF0YV91bmZpbHRlcmVkXzIyX2lzX3g7Ci0gIHdpcmUgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWRfMjNfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF8yNF9pc194OwotICB3aXJlICAgICAgICAgICAgIEFfd3JfZGF0YV91bmZpbHRlcmVkXzI1X2lzX3g7Ci0gIHdpcmUgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWRfMjZfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF8yN19pc194OwotICB3aXJlICAgICAgICAgICAgIEFfd3JfZGF0YV91bmZpbHRlcmVkXzI4X2lzX3g7Ci0gIHdpcmUgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWRfMjlfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF8yX2lzX3g7Ci0gIHdpcmUgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWRfMzBfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF8zMV9pc194OwotICB3aXJlICAgICAgICAgICAgIEFfd3JfZGF0YV91bmZpbHRlcmVkXzNfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF80X2lzX3g7Ci0gIHdpcmUgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWRfNV9pc194OwotICB3aXJlICAgICAgICAgICAgIEFfd3JfZGF0YV91bmZpbHRlcmVkXzZfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBBX3dyX2RhdGFfdW5maWx0ZXJlZF83X2lzX3g7Ci0gIHdpcmUgICAgICAgICAgICAgQV93cl9kYXRhX3VuZmlsdGVyZWRfOF9pc194OwotICB3aXJlICAgICAgICAgICAgIEFfd3JfZGF0YV91bmZpbHRlcmVkXzlfaXNfeDsKLSAgd2lyZSAgICAgICAgICAgICBFX2FkZF9icl90b190YWtlbl9oaXN0b3J5X2ZpbHRlcmVkOwotICB3aXJlICAgICAgICAgICAgIEVfc3JjMV9lcV9zcmMyOwotICB3aXJlICAgIFsgIDc6IDBdIE1fYmh0X3B0cl9maWx0ZXJlZDsKLSAgd2lyZSAgICBbICAxOiAwXSBNX2JodF93cl9kYXRhX2ZpbHRlcmVkOwotICB3aXJlICAgICAgICAgICAgIE1fYmh0X3dyX2VuX2ZpbHRlcmVkOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfYWRkOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfYWRkaTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2FuZDsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2FuZGhpOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfYW5kaTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2JlcTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2JnZTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2JnZXU7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9ibHQ7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9ibHR1OwotICB3aXJlICAgICAgICAgICAgIFdfb3BfYm5lOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfYnI7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9icmVhazsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2JyZXQ7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9jYWxsOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfY2FsbHI7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9jbXBlcTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2NtcGVxaTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2NtcGdlOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfY21wZ2VpOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfY21wZ2V1OwotICB3aXJlICAgICAgICAgICAgIFdfb3BfY21wZ2V1aTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2NtcGx0OwotICB3aXJlICAgICAgICAgICAgIFdfb3BfY21wbHRpOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfY21wbHR1OwotICB3aXJlICAgICAgICAgICAgIFdfb3BfY21wbHR1aTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2NtcG5lOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfY21wbmVpOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfY3JzdDsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2N1c3RvbTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2RpdjsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2RpdnU7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9lcmV0OwotICB3aXJlICAgICAgICAgICAgIFdfb3BfZmx1c2hkOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfZmx1c2hkYTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2ZsdXNoaTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2ZsdXNocDsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2hicmVhazsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2luaXRkOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfaW5pdGRhOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfaW5pdGk7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9pbnRyOwotICB3aXJlICAgICAgICAgICAgIFdfb3Bfam1wOwotICB3aXJlICAgICAgICAgICAgIFdfb3Bfam1waTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2xkYjsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2xkYmlvOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfbGRidTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2xkYnVpbzsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2xkaDsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2xkaGlvOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfbGRodTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2xkaHVpbzsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2xkbDsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2xkdzsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX2xkd2lvOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfbXVsOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfbXVsaTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX211bHhzczsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX211bHhzdTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX211bHh1dTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX25leHRwYzsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX25vcjsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX29weDsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX29yOwotICB3aXJlICAgICAgICAgICAgIFdfb3Bfb3JoaTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX29yaTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3JkY3RsOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfcmRwcnM7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yZXQ7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yb2w7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yb2xpOwotICB3aXJlICAgICAgICAgICAgIFdfb3Bfcm9yOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfcnN2MDI7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3YwOTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3JzdjEwOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfcnN2MTc7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3YxODsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3JzdjI1OwotICB3aXJlICAgICAgICAgICAgIFdfb3BfcnN2MjY7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3YzMzsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3JzdjM0OwotICB3aXJlICAgICAgICAgICAgIFdfb3BfcnN2NDE7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Y0MjsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3JzdjQ5OwotICB3aXJlICAgICAgICAgICAgIFdfb3BfcnN2NTc7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Y2MTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3JzdjYyOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfcnN2NjM7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4MDA7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4MTA7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4MTU7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4MTc7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4MjE7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4MjU7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4MzM7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4MzQ7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4MzU7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4NDI7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4NDM7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4NDQ7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4NDc7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4NTA7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4NTE7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4NTU7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4NTY7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4NjA7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9yc3Z4NjM7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9zbGw7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9zbGxpOwotICB3aXJlICAgICAgICAgICAgIFdfb3Bfc3JhOwotICB3aXJlICAgICAgICAgICAgIFdfb3Bfc3JhaTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3NybDsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3NybGk7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9zdGI7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9zdGJpbzsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3N0YzsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3N0aDsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3N0aGlvOwotICB3aXJlICAgICAgICAgICAgIFdfb3Bfc3R3OwotICB3aXJlICAgICAgICAgICAgIFdfb3Bfc3R3aW87Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9zdWI7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF9zeW5jOwotICB3aXJlICAgICAgICAgICAgIFdfb3BfdHJhcDsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3dyY3RsOwotICB3aXJlICAgICAgICAgICAgIFdfb3Bfd3JwcnM7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF94b3I7Ci0gIHdpcmUgICAgICAgICAgICAgV19vcF94b3JoaTsKLSAgd2lyZSAgICAgICAgICAgICBXX29wX3hvcmk7Ci0gIHdpcmUgICAgICAgICAgICAgdGVzdF9oYXNfZW5kZWQ7Ci0gIGFzc2lnbiBXX29wX2NhbGwgPSBXX2l3X29wID09IDA7Ci0gIGFzc2lnbiBXX29wX2ptcGkgPSBXX2l3X29wID09IDE7Ci0gIGFzc2lnbiBXX29wX2xkYnUgPSBXX2l3X29wID09IDM7Ci0gIGFzc2lnbiBXX29wX2FkZGkgPSBXX2l3X29wID09IDQ7Ci0gIGFzc2lnbiBXX29wX3N0YiA9IFdfaXdfb3AgPT0gNTsKLSAgYXNzaWduIFdfb3BfYnIgPSBXX2l3X29wID09IDY7Ci0gIGFzc2lnbiBXX29wX2xkYiA9IFdfaXdfb3AgPT0gNzsKLSAgYXNzaWduIFdfb3BfY21wZ2VpID0gV19pd19vcCA9PSA4OwotICBhc3NpZ24gV19vcF9sZGh1ID0gV19pd19vcCA9PSAxMTsKLSAgYXNzaWduIFdfb3BfYW5kaSA9IFdfaXdfb3AgPT0gMTI7Ci0gIGFzc2lnbiBXX29wX3N0aCA9IFdfaXdfb3AgPT0gMTM7Ci0gIGFzc2lnbiBXX29wX2JnZSA9IFdfaXdfb3AgPT0gMTQ7Ci0gIGFzc2lnbiBXX29wX2xkaCA9IFdfaXdfb3AgPT0gMTU7Ci0gIGFzc2lnbiBXX29wX2NtcGx0aSA9IFdfaXdfb3AgPT0gMTY7Ci0gIGFzc2lnbiBXX29wX2luaXRkYSA9IFdfaXdfb3AgPT0gMTk7Ci0gIGFzc2lnbiBXX29wX29yaSA9IFdfaXdfb3AgPT0gMjA7Ci0gIGFzc2lnbiBXX29wX3N0dyA9IFdfaXdfb3AgPT0gMjE7Ci0gIGFzc2lnbiBXX29wX2JsdCA9IFdfaXdfb3AgPT0gMjI7Ci0gIGFzc2lnbiBXX29wX2xkdyA9IFdfaXdfb3AgPT0gMjM7Ci0gIGFzc2lnbiBXX29wX2NtcG5laSA9IFdfaXdfb3AgPT0gMjQ7Ci0gIGFzc2lnbiBXX29wX2ZsdXNoZGEgPSBXX2l3X29wID09IDI3OwotICBhc3NpZ24gV19vcF94b3JpID0gV19pd19vcCA9PSAyODsKLSAgYXNzaWduIFdfb3Bfc3RjID0gV19pd19vcCA9PSAyOTsKLSAgYXNzaWduIFdfb3BfYm5lID0gV19pd19vcCA9PSAzMDsKLSAgYXNzaWduIFdfb3BfbGRsID0gV19pd19vcCA9PSAzMTsKLSAgYXNzaWduIFdfb3BfY21wZXFpID0gV19pd19vcCA9PSAzMjsKLSAgYXNzaWduIFdfb3BfbGRidWlvID0gV19pd19vcCA9PSAzNTsKLSAgYXNzaWduIFdfb3BfbXVsaSA9IFdfaXdfb3AgPT0gMzY7Ci0gIGFzc2lnbiBXX29wX3N0YmlvID0gV19pd19vcCA9PSAzNzsKLSAgYXNzaWduIFdfb3BfYmVxID0gV19pd19vcCA9PSAzODsKLSAgYXNzaWduIFdfb3BfbGRiaW8gPSBXX2l3X29wID09IDM5OwotICBhc3NpZ24gV19vcF9jbXBnZXVpID0gV19pd19vcCA9PSA0MDsKLSAgYXNzaWduIFdfb3BfbGRodWlvID0gV19pd19vcCA9PSA0MzsKLSAgYXNzaWduIFdfb3BfYW5kaGkgPSBXX2l3X29wID09IDQ0OwotICBhc3NpZ24gV19vcF9zdGhpbyA9IFdfaXdfb3AgPT0gNDU7Ci0gIGFzc2lnbiBXX29wX2JnZXUgPSBXX2l3X29wID09IDQ2OwotICBhc3NpZ24gV19vcF9sZGhpbyA9IFdfaXdfb3AgPT0gNDc7Ci0gIGFzc2lnbiBXX29wX2NtcGx0dWkgPSBXX2l3X29wID09IDQ4OwotICBhc3NpZ24gV19vcF9pbml0ZCA9IFdfaXdfb3AgPT0gNTE7Ci0gIGFzc2lnbiBXX29wX29yaGkgPSBXX2l3X29wID09IDUyOwotICBhc3NpZ24gV19vcF9zdHdpbyA9IFdfaXdfb3AgPT0gNTM7Ci0gIGFzc2lnbiBXX29wX2JsdHUgPSBXX2l3X29wID09IDU0OwotICBhc3NpZ24gV19vcF9sZHdpbyA9IFdfaXdfb3AgPT0gNTU7Ci0gIGFzc2lnbiBXX29wX3JkcHJzID0gV19pd19vcCA9PSA1NjsKLSAgYXNzaWduIFdfb3BfZmx1c2hkID0gV19pd19vcCA9PSA1OTsKLSAgYXNzaWduIFdfb3BfeG9yaGkgPSBXX2l3X29wID09IDYwOwotICBhc3NpZ24gV19vcF9yc3YwMiA9IFdfaXdfb3AgPT0gMjsKLSAgYXNzaWduIFdfb3BfcnN2MDkgPSBXX2l3X29wID09IDk7Ci0gIGFzc2lnbiBXX29wX3JzdjEwID0gV19pd19vcCA9PSAxMDsKLSAgYXNzaWduIFdfb3BfcnN2MTcgPSBXX2l3X29wID09IDE3OwotICBhc3NpZ24gV19vcF9yc3YxOCA9IFdfaXdfb3AgPT0gMTg7Ci0gIGFzc2lnbiBXX29wX3JzdjI1ID0gV19pd19vcCA9PSAyNTsKLSAgYXNzaWduIFdfb3BfcnN2MjYgPSBXX2l3X29wID09IDI2OwotICBhc3NpZ24gV19vcF9yc3YzMyA9IFdfaXdfb3AgPT0gMzM7Ci0gIGFzc2lnbiBXX29wX3JzdjM0ID0gV19pd19vcCA9PSAzNDsKLSAgYXNzaWduIFdfb3BfcnN2NDEgPSBXX2l3X29wID09IDQxOwotICBhc3NpZ24gV19vcF9yc3Y0MiA9IFdfaXdfb3AgPT0gNDI7Ci0gIGFzc2lnbiBXX29wX3JzdjQ5ID0gV19pd19vcCA9PSA0OTsKLSAgYXNzaWduIFdfb3BfcnN2NTcgPSBXX2l3X29wID09IDU3OwotICBhc3NpZ24gV19vcF9yc3Y2MSA9IFdfaXdfb3AgPT0gNjE7Ci0gIGFzc2lnbiBXX29wX3JzdjYyID0gV19pd19vcCA9PSA2MjsKLSAgYXNzaWduIFdfb3BfcnN2NjMgPSBXX2l3X29wID09IDYzOwotICBhc3NpZ24gV19vcF9lcmV0ID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMSk7Ci0gIGFzc2lnbiBXX29wX3JvbGkgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAyKTsKLSAgYXNzaWduIFdfb3Bfcm9sID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMyk7Ci0gIGFzc2lnbiBXX29wX2ZsdXNocCA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDQpOwotICBhc3NpZ24gV19vcF9yZXQgPSBXX29wX29weCAmIChXX2l3X29weCA9PSA1KTsKLSAgYXNzaWduIFdfb3Bfbm9yID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gNik7Ci0gIGFzc2lnbiBXX29wX211bHh1dSA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDcpOwotICBhc3NpZ24gV19vcF9jbXBnZSA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDgpOwotICBhc3NpZ24gV19vcF9icmV0ID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gOSk7Ci0gIGFzc2lnbiBXX29wX3JvciA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDExKTsKLSAgYXNzaWduIFdfb3BfZmx1c2hpID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMTIpOwotICBhc3NpZ24gV19vcF9qbXAgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAxMyk7Ci0gIGFzc2lnbiBXX29wX2FuZCA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDE0KTsKLSAgYXNzaWduIFdfb3BfY21wbHQgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAxNik7Ci0gIGFzc2lnbiBXX29wX3NsbGkgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAxOCk7Ci0gIGFzc2lnbiBXX29wX3NsbCA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDE5KTsKLSAgYXNzaWduIFdfb3Bfd3JwcnMgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAyMCk7Ci0gIGFzc2lnbiBXX29wX29yID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMjIpOwotICBhc3NpZ24gV19vcF9tdWx4c3UgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAyMyk7Ci0gIGFzc2lnbiBXX29wX2NtcG5lID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMjQpOwotICBhc3NpZ24gV19vcF9zcmxpID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMjYpOwotICBhc3NpZ24gV19vcF9zcmwgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAyNyk7Ci0gIGFzc2lnbiBXX29wX25leHRwYyA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDI4KTsKLSAgYXNzaWduIFdfb3BfY2FsbHIgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAyOSk7Ci0gIGFzc2lnbiBXX29wX3hvciA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDMwKTsKLSAgYXNzaWduIFdfb3BfbXVseHNzID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMzEpOwotICBhc3NpZ24gV19vcF9jbXBlcSA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDMyKTsKLSAgYXNzaWduIFdfb3BfZGl2dSA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDM2KTsKLSAgYXNzaWduIFdfb3BfZGl2ID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMzcpOwotICBhc3NpZ24gV19vcF9yZGN0bCA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDM4KTsKLSAgYXNzaWduIFdfb3BfbXVsID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMzkpOwotICBhc3NpZ24gV19vcF9jbXBnZXUgPSBXX29wX29weCAmIChXX2l3X29weCA9PSA0MCk7Ci0gIGFzc2lnbiBXX29wX2luaXRpID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gNDEpOwotICBhc3NpZ24gV19vcF90cmFwID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gNDUpOwotICBhc3NpZ24gV19vcF93cmN0bCA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDQ2KTsKLSAgYXNzaWduIFdfb3BfY21wbHR1ID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gNDgpOwotICBhc3NpZ24gV19vcF9hZGQgPSBXX29wX29weCAmIChXX2l3X29weCA9PSA0OSk7Ci0gIGFzc2lnbiBXX29wX2JyZWFrID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gNTIpOwotICBhc3NpZ24gV19vcF9oYnJlYWsgPSBXX29wX29weCAmIChXX2l3X29weCA9PSA1Myk7Ci0gIGFzc2lnbiBXX29wX3N5bmMgPSBXX29wX29weCAmIChXX2l3X29weCA9PSA1NCk7Ci0gIGFzc2lnbiBXX29wX3N1YiA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDU3KTsKLSAgYXNzaWduIFdfb3Bfc3JhaSA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDU4KTsKLSAgYXNzaWduIFdfb3Bfc3JhID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gNTkpOwotICBhc3NpZ24gV19vcF9pbnRyID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gNjEpOwotICBhc3NpZ24gV19vcF9jcnN0ID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gNjIpOwotICBhc3NpZ24gV19vcF9yc3Z4MDAgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAwKTsKLSAgYXNzaWduIFdfb3BfcnN2eDEwID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMTApOwotICBhc3NpZ24gV19vcF9yc3Z4MTUgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAxNSk7Ci0gIGFzc2lnbiBXX29wX3JzdngxNyA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDE3KTsKLSAgYXNzaWduIFdfb3BfcnN2eDIxID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMjEpOwotICBhc3NpZ24gV19vcF9yc3Z4MjUgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAyNSk7Ci0gIGFzc2lnbiBXX29wX3JzdngzMyA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDMzKTsKLSAgYXNzaWduIFdfb3BfcnN2eDM0ID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gMzQpOwotICBhc3NpZ24gV19vcF9yc3Z4MzUgPSBXX29wX29weCAmIChXX2l3X29weCA9PSAzNSk7Ci0gIGFzc2lnbiBXX29wX3Jzdng0MiA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDQyKTsKLSAgYXNzaWduIFdfb3BfcnN2eDQzID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gNDMpOwotICBhc3NpZ24gV19vcF9yc3Z4NDQgPSBXX29wX29weCAmIChXX2l3X29weCA9PSA0NCk7Ci0gIGFzc2lnbiBXX29wX3Jzdng0NyA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDQ3KTsKLSAgYXNzaWduIFdfb3BfcnN2eDUwID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gNTApOwotICBhc3NpZ24gV19vcF9yc3Z4NTEgPSBXX29wX29weCAmIChXX2l3X29weCA9PSA1MSk7Ci0gIGFzc2lnbiBXX29wX3Jzdng1NSA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDU1KTsKLSAgYXNzaWduIFdfb3BfcnN2eDU2ID0gV19vcF9vcHggJiAoV19pd19vcHggPT0gNTYpOwotICBhc3NpZ24gV19vcF9yc3Z4NjAgPSBXX29wX29weCAmIChXX2l3X29weCA9PSA2MCk7Ci0gIGFzc2lnbiBXX29wX3Jzdng2MyA9IFdfb3Bfb3B4ICYgKFdfaXdfb3B4ID09IDYzKTsKLSAgYXNzaWduIFdfb3Bfb3B4ID0gV19pd19vcCA9PSA1ODsKLSAgYXNzaWduIFdfb3BfY3VzdG9tID0gV19pd19vcCA9PSA1MDsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIEFfdGFyZ2V0X3BjYiA8PSAwOwotICAgICAgZWxzZSBpZiAoQV9lbikKLSAgICAgICAgICBBX3RhcmdldF9wY2IgPD0gTV90YXJnZXRfcGNiOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIEFfbWVtX2JhZGRyIDw9IDA7Ci0gICAgICBlbHNlIGlmIChBX2VuKQotICAgICAgICAgIEFfbWVtX2JhZGRyIDw9IE1fbWVtX2JhZGRyOwotICAgIGVuZAotCi0KLSAgYXNzaWduIEVfc3JjMV9lcV9zcmMyID0gRV9sb2dpY19yZXN1bHQgPT0gMDsKLSAgLy9Qcm9wYWdhdGluZyAnWCcgZGF0YSBiaXRzCi0gIGFzc2lnbiBFX2FkZF9icl90b190YWtlbl9oaXN0b3J5X2ZpbHRlcmVkID0gRV9hZGRfYnJfdG9fdGFrZW5faGlzdG9yeV91bmZpbHRlcmVkOwotCi0gIC8vUHJvcGFnYXRpbmcgJ1gnIGRhdGEgYml0cwotICBhc3NpZ24gTV9iaHRfd3JfZW5fZmlsdGVyZWQgPSBNX2JodF93cl9lbl91bmZpbHRlcmVkOwotCi0gIC8vUHJvcGFnYXRpbmcgJ1gnIGRhdGEgYml0cwotICBhc3NpZ24gTV9iaHRfd3JfZGF0YV9maWx0ZXJlZCA9IE1fYmh0X3dyX2RhdGFfdW5maWx0ZXJlZDsKLQotICAvL1Byb3BhZ2F0aW5nICdYJyBkYXRhIGJpdHMKLSAgYXNzaWduIE1fYmh0X3B0cl9maWx0ZXJlZCA9IE1fYmh0X3B0cl91bmZpbHRlcmVkOwotCi0gIGFzc2lnbiB0ZXN0X2hhc19lbmRlZCA9IDEnYjA7Ci0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIC8vQ2xlYXJpbmcgJ1gnIGRhdGEgYml0cwotICBhc3NpZ24gQV93cl9kYXRhX3VuZmlsdGVyZWRfMF9pc194ID0gXihBX3dyX2RhdGFfdW5maWx0ZXJlZFswXSkgPT09IDEnYng7Ci0KLSAgYXNzaWduIEFfd3JfZGF0YV9maWx0ZXJlZFswXSA9IChBX3dyX2RhdGFfdW5maWx0ZXJlZF8wX2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFswXTsKLSAgYXNzaWduIEFfd3JfZGF0YV91bmZpbHRlcmVkXzFfaXNfeCA9IF4oQV93cl9kYXRhX3VuZmlsdGVyZWRbMV0pID09PSAxJ2J4OwotICBhc3NpZ24gQV93cl9kYXRhX2ZpbHRlcmVkWzFdID0gKEFfd3JfZGF0YV91bmZpbHRlcmVkXzFfaXNfeCAmIChBX2N0cmxfbGRfbm9uX2J5cGFzcykpID8gMSdiMCA6IEFfd3JfZGF0YV91bmZpbHRlcmVkWzFdOwotICBhc3NpZ24gQV93cl9kYXRhX3VuZmlsdGVyZWRfMl9pc194ID0gXihBX3dyX2RhdGFfdW5maWx0ZXJlZFsyXSkgPT09IDEnYng7Ci0gIGFzc2lnbiBBX3dyX2RhdGFfZmlsdGVyZWRbMl0gPSAoQV93cl9kYXRhX3VuZmlsdGVyZWRfMl9pc194ICYgKEFfY3RybF9sZF9ub25fYnlwYXNzKSkgPyAxJ2IwIDogQV93cl9kYXRhX3VuZmlsdGVyZWRbMl07Ci0gIGFzc2lnbiBBX3dyX2RhdGFfdW5maWx0ZXJlZF8zX2lzX3ggPSBeKEFfd3JfZGF0YV91bmZpbHRlcmVkWzNdKSA9PT0gMSdieDsKLSAgYXNzaWduIEFfd3JfZGF0YV9maWx0ZXJlZFszXSA9IChBX3dyX2RhdGFfdW5maWx0ZXJlZF8zX2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFszXTsKLSAgYXNzaWduIEFfd3JfZGF0YV91bmZpbHRlcmVkXzRfaXNfeCA9IF4oQV93cl9kYXRhX3VuZmlsdGVyZWRbNF0pID09PSAxJ2J4OwotICBhc3NpZ24gQV93cl9kYXRhX2ZpbHRlcmVkWzRdID0gKEFfd3JfZGF0YV91bmZpbHRlcmVkXzRfaXNfeCAmIChBX2N0cmxfbGRfbm9uX2J5cGFzcykpID8gMSdiMCA6IEFfd3JfZGF0YV91bmZpbHRlcmVkWzRdOwotICBhc3NpZ24gQV93cl9kYXRhX3VuZmlsdGVyZWRfNV9pc194ID0gXihBX3dyX2RhdGFfdW5maWx0ZXJlZFs1XSkgPT09IDEnYng7Ci0gIGFzc2lnbiBBX3dyX2RhdGFfZmlsdGVyZWRbNV0gPSAoQV93cl9kYXRhX3VuZmlsdGVyZWRfNV9pc194ICYgKEFfY3RybF9sZF9ub25fYnlwYXNzKSkgPyAxJ2IwIDogQV93cl9kYXRhX3VuZmlsdGVyZWRbNV07Ci0gIGFzc2lnbiBBX3dyX2RhdGFfdW5maWx0ZXJlZF82X2lzX3ggPSBeKEFfd3JfZGF0YV91bmZpbHRlcmVkWzZdKSA9PT0gMSdieDsKLSAgYXNzaWduIEFfd3JfZGF0YV9maWx0ZXJlZFs2XSA9IChBX3dyX2RhdGFfdW5maWx0ZXJlZF82X2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFs2XTsKLSAgYXNzaWduIEFfd3JfZGF0YV91bmZpbHRlcmVkXzdfaXNfeCA9IF4oQV93cl9kYXRhX3VuZmlsdGVyZWRbN10pID09PSAxJ2J4OwotICBhc3NpZ24gQV93cl9kYXRhX2ZpbHRlcmVkWzddID0gKEFfd3JfZGF0YV91bmZpbHRlcmVkXzdfaXNfeCAmIChBX2N0cmxfbGRfbm9uX2J5cGFzcykpID8gMSdiMCA6IEFfd3JfZGF0YV91bmZpbHRlcmVkWzddOwotICBhc3NpZ24gQV93cl9kYXRhX3VuZmlsdGVyZWRfOF9pc194ID0gXihBX3dyX2RhdGFfdW5maWx0ZXJlZFs4XSkgPT09IDEnYng7Ci0gIGFzc2lnbiBBX3dyX2RhdGFfZmlsdGVyZWRbOF0gPSAoQV93cl9kYXRhX3VuZmlsdGVyZWRfOF9pc194ICYgKEFfY3RybF9sZF9ub25fYnlwYXNzKSkgPyAxJ2IwIDogQV93cl9kYXRhX3VuZmlsdGVyZWRbOF07Ci0gIGFzc2lnbiBBX3dyX2RhdGFfdW5maWx0ZXJlZF85X2lzX3ggPSBeKEFfd3JfZGF0YV91bmZpbHRlcmVkWzldKSA9PT0gMSdieDsKLSAgYXNzaWduIEFfd3JfZGF0YV9maWx0ZXJlZFs5XSA9IChBX3dyX2RhdGFfdW5maWx0ZXJlZF85X2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFs5XTsKLSAgYXNzaWduIEFfd3JfZGF0YV91bmZpbHRlcmVkXzEwX2lzX3ggPSBeKEFfd3JfZGF0YV91bmZpbHRlcmVkWzEwXSkgPT09IDEnYng7Ci0gIGFzc2lnbiBBX3dyX2RhdGFfZmlsdGVyZWRbMTBdID0gKEFfd3JfZGF0YV91bmZpbHRlcmVkXzEwX2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFsxMF07Ci0gIGFzc2lnbiBBX3dyX2RhdGFfdW5maWx0ZXJlZF8xMV9pc194ID0gXihBX3dyX2RhdGFfdW5maWx0ZXJlZFsxMV0pID09PSAxJ2J4OwotICBhc3NpZ24gQV93cl9kYXRhX2ZpbHRlcmVkWzExXSA9IChBX3dyX2RhdGFfdW5maWx0ZXJlZF8xMV9pc194ICYgKEFfY3RybF9sZF9ub25fYnlwYXNzKSkgPyAxJ2IwIDogQV93cl9kYXRhX3VuZmlsdGVyZWRbMTFdOwotICBhc3NpZ24gQV93cl9kYXRhX3VuZmlsdGVyZWRfMTJfaXNfeCA9IF4oQV93cl9kYXRhX3VuZmlsdGVyZWRbMTJdKSA9PT0gMSdieDsKLSAgYXNzaWduIEFfd3JfZGF0YV9maWx0ZXJlZFsxMl0gPSAoQV93cl9kYXRhX3VuZmlsdGVyZWRfMTJfaXNfeCAmIChBX2N0cmxfbGRfbm9uX2J5cGFzcykpID8gMSdiMCA6IEFfd3JfZGF0YV91bmZpbHRlcmVkWzEyXTsKLSAgYXNzaWduIEFfd3JfZGF0YV91bmZpbHRlcmVkXzEzX2lzX3ggPSBeKEFfd3JfZGF0YV91bmZpbHRlcmVkWzEzXSkgPT09IDEnYng7Ci0gIGFzc2lnbiBBX3dyX2RhdGFfZmlsdGVyZWRbMTNdID0gKEFfd3JfZGF0YV91bmZpbHRlcmVkXzEzX2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFsxM107Ci0gIGFzc2lnbiBBX3dyX2RhdGFfdW5maWx0ZXJlZF8xNF9pc194ID0gXihBX3dyX2RhdGFfdW5maWx0ZXJlZFsxNF0pID09PSAxJ2J4OwotICBhc3NpZ24gQV93cl9kYXRhX2ZpbHRlcmVkWzE0XSA9IChBX3dyX2RhdGFfdW5maWx0ZXJlZF8xNF9pc194ICYgKEFfY3RybF9sZF9ub25fYnlwYXNzKSkgPyAxJ2IwIDogQV93cl9kYXRhX3VuZmlsdGVyZWRbMTRdOwotICBhc3NpZ24gQV93cl9kYXRhX3VuZmlsdGVyZWRfMTVfaXNfeCA9IF4oQV93cl9kYXRhX3VuZmlsdGVyZWRbMTVdKSA9PT0gMSdieDsKLSAgYXNzaWduIEFfd3JfZGF0YV9maWx0ZXJlZFsxNV0gPSAoQV93cl9kYXRhX3VuZmlsdGVyZWRfMTVfaXNfeCAmIChBX2N0cmxfbGRfbm9uX2J5cGFzcykpID8gMSdiMCA6IEFfd3JfZGF0YV91bmZpbHRlcmVkWzE1XTsKLSAgYXNzaWduIEFfd3JfZGF0YV91bmZpbHRlcmVkXzE2X2lzX3ggPSBeKEFfd3JfZGF0YV91bmZpbHRlcmVkWzE2XSkgPT09IDEnYng7Ci0gIGFzc2lnbiBBX3dyX2RhdGFfZmlsdGVyZWRbMTZdID0gKEFfd3JfZGF0YV91bmZpbHRlcmVkXzE2X2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFsxNl07Ci0gIGFzc2lnbiBBX3dyX2RhdGFfdW5maWx0ZXJlZF8xN19pc194ID0gXihBX3dyX2RhdGFfdW5maWx0ZXJlZFsxN10pID09PSAxJ2J4OwotICBhc3NpZ24gQV93cl9kYXRhX2ZpbHRlcmVkWzE3XSA9IChBX3dyX2RhdGFfdW5maWx0ZXJlZF8xN19pc194ICYgKEFfY3RybF9sZF9ub25fYnlwYXNzKSkgPyAxJ2IwIDogQV93cl9kYXRhX3VuZmlsdGVyZWRbMTddOwotICBhc3NpZ24gQV93cl9kYXRhX3VuZmlsdGVyZWRfMThfaXNfeCA9IF4oQV93cl9kYXRhX3VuZmlsdGVyZWRbMThdKSA9PT0gMSdieDsKLSAgYXNzaWduIEFfd3JfZGF0YV9maWx0ZXJlZFsxOF0gPSAoQV93cl9kYXRhX3VuZmlsdGVyZWRfMThfaXNfeCAmIChBX2N0cmxfbGRfbm9uX2J5cGFzcykpID8gMSdiMCA6IEFfd3JfZGF0YV91bmZpbHRlcmVkWzE4XTsKLSAgYXNzaWduIEFfd3JfZGF0YV91bmZpbHRlcmVkXzE5X2lzX3ggPSBeKEFfd3JfZGF0YV91bmZpbHRlcmVkWzE5XSkgPT09IDEnYng7Ci0gIGFzc2lnbiBBX3dyX2RhdGFfZmlsdGVyZWRbMTldID0gKEFfd3JfZGF0YV91bmZpbHRlcmVkXzE5X2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFsxOV07Ci0gIGFzc2lnbiBBX3dyX2RhdGFfdW5maWx0ZXJlZF8yMF9pc194ID0gXihBX3dyX2RhdGFfdW5maWx0ZXJlZFsyMF0pID09PSAxJ2J4OwotICBhc3NpZ24gQV93cl9kYXRhX2ZpbHRlcmVkWzIwXSA9IChBX3dyX2RhdGFfdW5maWx0ZXJlZF8yMF9pc194ICYgKEFfY3RybF9sZF9ub25fYnlwYXNzKSkgPyAxJ2IwIDogQV93cl9kYXRhX3VuZmlsdGVyZWRbMjBdOwotICBhc3NpZ24gQV93cl9kYXRhX3VuZmlsdGVyZWRfMjFfaXNfeCA9IF4oQV93cl9kYXRhX3VuZmlsdGVyZWRbMjFdKSA9PT0gMSdieDsKLSAgYXNzaWduIEFfd3JfZGF0YV9maWx0ZXJlZFsyMV0gPSAoQV93cl9kYXRhX3VuZmlsdGVyZWRfMjFfaXNfeCAmIChBX2N0cmxfbGRfbm9uX2J5cGFzcykpID8gMSdiMCA6IEFfd3JfZGF0YV91bmZpbHRlcmVkWzIxXTsKLSAgYXNzaWduIEFfd3JfZGF0YV91bmZpbHRlcmVkXzIyX2lzX3ggPSBeKEFfd3JfZGF0YV91bmZpbHRlcmVkWzIyXSkgPT09IDEnYng7Ci0gIGFzc2lnbiBBX3dyX2RhdGFfZmlsdGVyZWRbMjJdID0gKEFfd3JfZGF0YV91bmZpbHRlcmVkXzIyX2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFsyMl07Ci0gIGFzc2lnbiBBX3dyX2RhdGFfdW5maWx0ZXJlZF8yM19pc194ID0gXihBX3dyX2RhdGFfdW5maWx0ZXJlZFsyM10pID09PSAxJ2J4OwotICBhc3NpZ24gQV93cl9kYXRhX2ZpbHRlcmVkWzIzXSA9IChBX3dyX2RhdGFfdW5maWx0ZXJlZF8yM19pc194ICYgKEFfY3RybF9sZF9ub25fYnlwYXNzKSkgPyAxJ2IwIDogQV93cl9kYXRhX3VuZmlsdGVyZWRbMjNdOwotICBhc3NpZ24gQV93cl9kYXRhX3VuZmlsdGVyZWRfMjRfaXNfeCA9IF4oQV93cl9kYXRhX3VuZmlsdGVyZWRbMjRdKSA9PT0gMSdieDsKLSAgYXNzaWduIEFfd3JfZGF0YV9maWx0ZXJlZFsyNF0gPSAoQV93cl9kYXRhX3VuZmlsdGVyZWRfMjRfaXNfeCAmIChBX2N0cmxfbGRfbm9uX2J5cGFzcykpID8gMSdiMCA6IEFfd3JfZGF0YV91bmZpbHRlcmVkWzI0XTsKLSAgYXNzaWduIEFfd3JfZGF0YV91bmZpbHRlcmVkXzI1X2lzX3ggPSBeKEFfd3JfZGF0YV91bmZpbHRlcmVkWzI1XSkgPT09IDEnYng7Ci0gIGFzc2lnbiBBX3dyX2RhdGFfZmlsdGVyZWRbMjVdID0gKEFfd3JfZGF0YV91bmZpbHRlcmVkXzI1X2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFsyNV07Ci0gIGFzc2lnbiBBX3dyX2RhdGFfdW5maWx0ZXJlZF8yNl9pc194ID0gXihBX3dyX2RhdGFfdW5maWx0ZXJlZFsyNl0pID09PSAxJ2J4OwotICBhc3NpZ24gQV93cl9kYXRhX2ZpbHRlcmVkWzI2XSA9IChBX3dyX2RhdGFfdW5maWx0ZXJlZF8yNl9pc194ICYgKEFfY3RybF9sZF9ub25fYnlwYXNzKSkgPyAxJ2IwIDogQV93cl9kYXRhX3VuZmlsdGVyZWRbMjZdOwotICBhc3NpZ24gQV93cl9kYXRhX3VuZmlsdGVyZWRfMjdfaXNfeCA9IF4oQV93cl9kYXRhX3VuZmlsdGVyZWRbMjddKSA9PT0gMSdieDsKLSAgYXNzaWduIEFfd3JfZGF0YV9maWx0ZXJlZFsyN10gPSAoQV93cl9kYXRhX3VuZmlsdGVyZWRfMjdfaXNfeCAmIChBX2N0cmxfbGRfbm9uX2J5cGFzcykpID8gMSdiMCA6IEFfd3JfZGF0YV91bmZpbHRlcmVkWzI3XTsKLSAgYXNzaWduIEFfd3JfZGF0YV91bmZpbHRlcmVkXzI4X2lzX3ggPSBeKEFfd3JfZGF0YV91bmZpbHRlcmVkWzI4XSkgPT09IDEnYng7Ci0gIGFzc2lnbiBBX3dyX2RhdGFfZmlsdGVyZWRbMjhdID0gKEFfd3JfZGF0YV91bmZpbHRlcmVkXzI4X2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFsyOF07Ci0gIGFzc2lnbiBBX3dyX2RhdGFfdW5maWx0ZXJlZF8yOV9pc194ID0gXihBX3dyX2RhdGFfdW5maWx0ZXJlZFsyOV0pID09PSAxJ2J4OwotICBhc3NpZ24gQV93cl9kYXRhX2ZpbHRlcmVkWzI5XSA9IChBX3dyX2RhdGFfdW5maWx0ZXJlZF8yOV9pc194ICYgKEFfY3RybF9sZF9ub25fYnlwYXNzKSkgPyAxJ2IwIDogQV93cl9kYXRhX3VuZmlsdGVyZWRbMjldOwotICBhc3NpZ24gQV93cl9kYXRhX3VuZmlsdGVyZWRfMzBfaXNfeCA9IF4oQV93cl9kYXRhX3VuZmlsdGVyZWRbMzBdKSA9PT0gMSdieDsKLSAgYXNzaWduIEFfd3JfZGF0YV9maWx0ZXJlZFszMF0gPSAoQV93cl9kYXRhX3VuZmlsdGVyZWRfMzBfaXNfeCAmIChBX2N0cmxfbGRfbm9uX2J5cGFzcykpID8gMSdiMCA6IEFfd3JfZGF0YV91bmZpbHRlcmVkWzMwXTsKLSAgYXNzaWduIEFfd3JfZGF0YV91bmZpbHRlcmVkXzMxX2lzX3ggPSBeKEFfd3JfZGF0YV91bmZpbHRlcmVkWzMxXSkgPT09IDEnYng7Ci0gIGFzc2lnbiBBX3dyX2RhdGFfZmlsdGVyZWRbMzFdID0gKEFfd3JfZGF0YV91bmZpbHRlcmVkXzMxX2lzX3ggJiAoQV9jdHJsX2xkX25vbl9ieXBhc3MpKSA/IDEnYjAgOiBBX3dyX2RhdGFfdW5maWx0ZXJlZFszMV07Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbikKLSAgICAgICAgICBpZiAoXihXX3dyX2RzdF9yZWcpID09PSAxJ2J4KQotICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IEVSUk9SOiBjcHVfdGVzdF9iZW5jaC9XX3dyX2RzdF9yZWcgaXMgJ3gnXG4iLCAkdGltZSk7Ci0gICAgICAgICAgICAgICRzdG9wOwotICAgICAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgIGJlZ2luCi0gICAgICAgIGVuZAotICAgICAgZWxzZSBpZiAoV193cl9kc3RfcmVnKQotICAgICAgICAgIGlmICheKFdfZHN0X3JlZ251bSkgPT09IDEnYngpCi0gICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAkd3JpdGUoIiUwZCBuczogRVJST1I6IGNwdV90ZXN0X2JlbmNoL1dfZHN0X3JlZ251bSBpcyAneCdcbiIsICR0aW1lKTsKLSAgICAgICAgICAgICAgJHN0b3A7Ci0gICAgICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbikKLSAgICAgICAgICBpZiAoXihXX3ZhbGlkKSA9PT0gMSdieCkKLSAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBFUlJPUjogY3B1X3Rlc3RfYmVuY2gvV192YWxpZCBpcyAneCdcbiIsICR0aW1lKTsKLSAgICAgICAgICAgICAgJHN0b3A7Ci0gICAgICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgZW5kCi0gICAgICBlbHNlIGlmIChXX3ZhbGlkKQotICAgICAgICAgIGlmICheKFdfcGNiKSA9PT0gMSdieCkKLSAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBFUlJPUjogY3B1X3Rlc3RfYmVuY2gvV19wY2IgaXMgJ3gnXG4iLCAkdGltZSk7Ci0gICAgICAgICAgICAgICRzdG9wOwotICAgICAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgIGJlZ2luCi0gICAgICAgIGVuZAotICAgICAgZWxzZSBpZiAoV192YWxpZCkKLSAgICAgICAgICBpZiAoXihXX2l3KSA9PT0gMSdieCkKLSAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBFUlJPUjogY3B1X3Rlc3RfYmVuY2gvV19pdyBpcyAneCdcbiIsICR0aW1lKTsKLSAgICAgICAgICAgICAgJHN0b3A7Ci0gICAgICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbikKLSAgICAgICAgICBpZiAoXihBX2VuKSA9PT0gMSdieCkKLSAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBFUlJPUjogY3B1X3Rlc3RfYmVuY2gvQV9lbiBpcyAneCdcbiIsICR0aW1lKTsKLSAgICAgICAgICAgICAgJHN0b3A7Ci0gICAgICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbikKLSAgICAgICAgICBpZiAoXihFX3ZhbGlkKSA9PT0gMSdieCkKLSAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBFUlJPUjogY3B1X3Rlc3RfYmVuY2gvRV92YWxpZCBpcyAneCdcbiIsICR0aW1lKTsKLSAgICAgICAgICAgICAgJHN0b3A7Ci0gICAgICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbikKLSAgICAgICAgICBpZiAoXihNX3ZhbGlkKSA9PT0gMSdieCkKLSAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBFUlJPUjogY3B1X3Rlc3RfYmVuY2gvTV92YWxpZCBpcyAneCdcbiIsICR0aW1lKTsKLSAgICAgICAgICAgICAgJHN0b3A7Ci0gICAgICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbikKLSAgICAgICAgICBpZiAoXihBX3ZhbGlkKSA9PT0gMSdieCkKLSAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBFUlJPUjogY3B1X3Rlc3RfYmVuY2gvQV92YWxpZCBpcyAneCdcbiIsICR0aW1lKTsKLSAgICAgICAgICAgICAgJHN0b3A7Ci0gICAgICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgYmVnaW4KLSAgICAgICAgZW5kCi0gICAgICBlbHNlIGlmIChBX3ZhbGlkICYgQV9lbiAmIEFfd3JfZHN0X3JlZykKLSAgICAgICAgICBpZiAoXihBX3dyX2RhdGFfdW5maWx0ZXJlZCkgPT09IDEnYngpCi0gICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAkd3JpdGUoIiUwZCBuczogV0FSTklORzogY3B1X3Rlc3RfYmVuY2gvQV93cl9kYXRhX3VuZmlsdGVyZWQgaXMgJ3gnXG4iLCAkdGltZSk7Ci0gICAgICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbikKLSAgICAgICAgICBpZiAoXihBX3N0YXR1c19yZWcpID09PSAxJ2J4KQotICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IEVSUk9SOiBjcHVfdGVzdF9iZW5jaC9BX3N0YXR1c19yZWcgaXMgJ3gnXG4iLCAkdGltZSk7Ci0gICAgICAgICAgICAgICRzdG9wOwotICAgICAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24pCi0gICAgICAgICAgaWYgKF4oQV9lc3RhdHVzX3JlZykgPT09IDEnYngpCi0gICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAkd3JpdGUoIiUwZCBuczogRVJST1I6IGNwdV90ZXN0X2JlbmNoL0FfZXN0YXR1c19yZWcgaXMgJ3gnXG4iLCAkdGltZSk7Ci0gICAgICAgICAgICAgICRzdG9wOwotICAgICAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24pCi0gICAgICAgICAgaWYgKF4oQV9ic3RhdHVzX3JlZykgPT09IDEnYngpCi0gICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAkd3JpdGUoIiUwZCBuczogRVJST1I6IGNwdV90ZXN0X2JlbmNoL0FfYnN0YXR1c19yZWcgaXMgJ3gnXG4iLCAkdGltZSk7Ci0gICAgICAgICAgICAgICRzdG9wOwotICAgICAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24pCi0gICAgICAgICAgaWYgKF4oaV9yZWFkKSA9PT0gMSdieCkKLSAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBFUlJPUjogY3B1X3Rlc3RfYmVuY2gvaV9yZWFkIGlzICd4J1xuIiwgJHRpbWUpOwotICAgICAgICAgICAgICAkc3RvcDsKLSAgICAgICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICBiZWdpbgotICAgICAgICBlbmQKLSAgICAgIGVsc2UgaWYgKGlfcmVhZCkKLSAgICAgICAgICBpZiAoXihpX2FkZHJlc3MpID09PSAxJ2J4KQotICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IEVSUk9SOiBjcHVfdGVzdF9iZW5jaC9pX2FkZHJlc3MgaXMgJ3gnXG4iLCAkdGltZSk7Ci0gICAgICAgICAgICAgICRzdG9wOwotICAgICAgICAgICAgZW5kCi0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24pCi0gICAgICAgICAgaWYgKF4oaV9yZWFkZGF0YXZhbGlkKSA9PT0gMSdieCkKLSAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBFUlJPUjogY3B1X3Rlc3RfYmVuY2gvaV9yZWFkZGF0YXZhbGlkIGlzICd4J1xuIiwgJHRpbWUpOwotICAgICAgICAgICAgICAkc3RvcDsKLSAgICAgICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uKQotICAgICAgICAgIGlmICheKGRfd3JpdGUpID09PSAxJ2J4KQotICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgJHdyaXRlKCIlMGQgbnM6IEVSUk9SOiBjcHVfdGVzdF9iZW5jaC9kX3dyaXRlIGlzICd4J1xuIiwgJHRpbWUpOwotICAgICAgICAgICAgICAkc3RvcDsKLSAgICAgICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICBiZWdpbgotICAgICAgICBlbmQKLSAgICAgIGVsc2UgaWYgKGRfd3JpdGUpCi0gICAgICAgICAgaWYgKF4oZF9ieXRlZW5hYmxlKSA9PT0gMSdieCkKLSAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBFUlJPUjogY3B1X3Rlc3RfYmVuY2gvZF9ieXRlZW5hYmxlIGlzICd4J1xuIiwgJHRpbWUpOwotICAgICAgICAgICAgICAkc3RvcDsKLSAgICAgICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICBiZWdpbgotICAgICAgICBlbmQKLSAgICAgIGVsc2UgaWYgKGRfd3JpdGUgfCBkX3JlYWQpCi0gICAgICAgICAgaWYgKF4oZF9hZGRyZXNzKSA9PT0gMSdieCkKLSAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICR3cml0ZSgiJTBkIG5zOiBFUlJPUjogY3B1X3Rlc3RfYmVuY2gvZF9hZGRyZXNzIGlzICd4J1xuIiwgJHRpbWUpOwotICAgICAgICAgICAgICAkc3RvcDsKLSAgICAgICAgICAgIGVuZAotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uKQotICAgICAgICAgIGlmICheKGRfcmVhZCkgPT09IDEnYngpCi0gICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAkd3JpdGUoIiUwZCBuczogRVJST1I6IGNwdV90ZXN0X2JlbmNoL2RfcmVhZCBpcyAneCdcbiIsICR0aW1lKTsKLSAgICAgICAgICAgICAgJHN0b3A7Ci0gICAgICAgICAgICBlbmQKLSAgICBlbmQKLQotCi0gIAotICByZWcgWzMxOjBdIHRyYWNlX2hhbmRsZTsgLy8gZm9yICRmb3BlbgotICBpbml0aWFsICAKLSAgYmVnaW4KLSAgICB0cmFjZV9oYW5kbGUgPSAkZm9wZW4oImNwdS50ciIpOwotICAgICRmd3JpdGUodHJhY2VfaGFuZGxlLCAidmVyc2lvbiAzXG5udW1UaHJlYWRzIDFcbiIpOwotICBlbmQKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGspCi0gICAgYmVnaW4KLSAgICAgIGlmICgofnJlc2V0X24gfHwgKEFfdmFsaWQgJiBBX2VuKSkgJiYgfnRlc3RfaGFzX2VuZGVkKQotICAgICAgICAgICRmd3JpdGUodHJhY2VfaGFuZGxlLCAiJTBkIG5zOiAlMGgsJTBoLCUwaCwlMGgsJTBoLCUwaCwlMGgsJTBoLCUwaCwlMGgsJTBoLCUwaCwlMGgsJTBoLCUwaCwlMGgsJTBoLCUwaCwlMGgsJTBoLCUwaCwlMGgsJTBoLCUwaCwlMGgsJTBoLCUwaCwlMGgsJTBoLCUwaCwlMGgsJTBoLCUwaCwlMGgsJTBoLCUwaFxuIiwgJHRpbWUsIH5yZXNldF9uLCBBX3BjYiwgMCwgQV9vcF9pbnRyLCBBX29wX2hicmVhaywgQV9pdywgfihBX29wX2ludHIgfCBBX29wX2hicmVhayksIEFfd3JfZHN0X3JlZywgQV9kc3RfcmVnbnVtLCAwLCBBX3dyX2RhdGFfZmlsdGVyZWQsIEFfbWVtX2JhZGRyLCBBX3N0X2RhdGEsIEFfbWVtX2J5dGVfZW4sIEFfY21wX3Jlc3VsdCwgQV90YXJnZXRfcGNiLCBBX3N0YXR1c19yZWcsIEFfZXN0YXR1c19yZWcsIEFfYnN0YXR1c19yZWcsIEFfaWVuYWJsZV9yZWcsIEFfaXBlbmRpbmdfcmVnLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBBX2N0cmxfZXhjZXB0aW9uID8gMSA6IDAsIDAsIDAsIDAsIDApOwotICAgIGVuZAotCi0KLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotLy9zeW50aGVzaXMgcmVhZF9jb21tZW50c19hc19IREwgb24KLS8vICAKLS8vICBhc3NpZ24gQV93cl9kYXRhX2ZpbHRlcmVkID0gQV93cl9kYXRhX3VuZmlsdGVyZWQ7Ci0vLwotLy9zeW50aGVzaXMgcmVhZF9jb21tZW50c19hc19IREwgb2ZmCi0KLWVuZG1vZHVsZQotCi0KLS8qIFNMbGluZSAyMDQ4NSAiY3VzdG9tX2RtYS52IiAyICovCi0vKiBTTGxpbmUgMSAiY3B1X211bHRfY2VsbC52IiAxICovCi0vL0xlZ2FsIE5vdGljZTogKEMpMjAxMCBBbHRlcmEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBZb3VyCi0vL3VzZSBvZiBBbHRlcmEgQ29ycG9yYXRpb24ncyBkZXNpZ24gdG9vbHMsIGxvZ2ljIGZ1bmN0aW9ucyBhbmQgb3RoZXIKLS8vc29mdHdhcmUgYW5kIHRvb2xzLCBhbmQgaXRzIEFNUFAgcGFydG5lciBsb2dpYyBmdW5jdGlvbnMsIGFuZCBhbnkKLS8vb3V0cHV0IGZpbGVzIGFueSBvZiB0aGUgZm9yZWdvaW5nIChpbmNsdWRpbmcgZGV2aWNlIHByb2dyYW1taW5nIG9yCi0vL3NpbXVsYXRpb24gZmlsZXMpLCBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiBhcmUKLS8vZXhwcmVzc2x5IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBBbHRlcmEgUHJvZ3JhbQotLy9MaWNlbnNlIFN1YnNjcmlwdGlvbiBBZ3JlZW1lbnQgb3Igb3RoZXIgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudCwKLS8vaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIHRoYXQgeW91ciB1c2UgaXMgZm9yIHRoZSBzb2xlIHB1cnBvc2UKLS8vb2YgcHJvZ3JhbW1pbmcgbG9naWMgZGV2aWNlcyBtYW51ZmFjdHVyZWQgYnkgQWx0ZXJhIGFuZCBzb2xkIGJ5IEFsdGVyYQotLy9vciBpdHMgYXV0aG9yaXplZCBkaXN0cmlidXRvcnMuICBQbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2FibGUKLS8vYWdyZWVtZW50IGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBjcHVfbXVsdF9jZWxsICgKLSAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgQV9lbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIEVfY3RybF9tdWxfc2hpZnRfc3JjMV9zaWduZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBFX2N0cmxfbXVsX3NoaWZ0X3NyYzJfc2lnbmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgRV9zcmMxX211bF9jZWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgRV9zcmMyX211bF9jZWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgTV9lbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgIEFfbXVsX2NlbGxfcmVzdWx0Ci0gICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbIDYzOiAwXSBBX211bF9jZWxsX3Jlc3VsdDsKLSAgaW5wdXQgICAgICAgICAgICBBX2VuOwotICBpbnB1dCAgICAgICAgICAgIEVfY3RybF9tdWxfc2hpZnRfc3JjMV9zaWduZWQ7Ci0gIGlucHV0ICAgICAgICAgICAgRV9jdHJsX211bF9zaGlmdF9zcmMyX3NpZ25lZDsKLSAgaW5wdXQgICBbIDMxOiAwXSBFX3NyYzFfbXVsX2NlbGw7Ci0gIGlucHV0ICAgWyAzMTogMF0gRV9zcmMyX211bF9jZWxsOwotICBpbnB1dCAgICAgICAgICAgIE1fZW47Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0KLSAgd2lyZSAgICBbIDYzOiAwXSBBX211bF9jZWxsX3Jlc3VsdDsKLSAgd2lyZSAgICAgICAgICAgICBtdWxfY2xyOwotICBhc3NpZ24gbXVsX2NsciA9IH5yZXNldF9uOwotICBhbHRtdWx0X2FkZCB0aGVfYWx0bXVsdF9hZGQKLSAgICAoCi0gICAgICAuYWNscjAgKG11bF9jbHIpLAotICAgICAgLmFjbHIxIChtdWxfY2xyKSwKLSAgICAgIC5jbG9jazAgKGNsayksCi0gICAgICAuY2xvY2sxIChjbGspLAotICAgICAgLmRhdGFhIChFX3NyYzFfbXVsX2NlbGwpLAotICAgICAgLmRhdGFiIChFX3NyYzJfbXVsX2NlbGwpLAotICAgICAgLmVuYTAgKE1fZW4pLAotICAgICAgLmVuYTEgKEFfZW4pLAotICAgICAgLnJlc3VsdCAoQV9tdWxfY2VsbF9yZXN1bHQpLAotICAgICAgLnNpZ25hIChFX2N0cmxfbXVsX3NoaWZ0X3NyYzFfc2lnbmVkKSwKLSAgICAgIC5zaWduYiAoRV9jdHJsX211bF9zaGlmdF9zcmMyX3NpZ25lZCkKLSAgICApOwotCi0gIGRlZnBhcmFtIHRoZV9hbHRtdWx0X2FkZC5hZGRuc3ViX211bHRpcGxpZXJfYWNscjEgPSAiVU5VU0VEIiwKLSAgICAgICAgICAgdGhlX2FsdG11bHRfYWRkLmFkZG5zdWJfbXVsdGlwbGllcl9waXBlbGluZV9hY2xyMSA9ICJVTlVTRUQiLAotICAgICAgICAgICB0aGVfYWx0bXVsdF9hZGQuYWRkbnN1Yl9tdWx0aXBsaWVyX3JlZ2lzdGVyMSA9ICJDTE9DSzAiLAotICAgICAgICAgICB0aGVfYWx0bXVsdF9hZGQuZGVkaWNhdGVkX211bHRpcGxpZXJfY2lyY3VpdHJ5ID0gIllFUyIsCi0gICAgICAgICAgIHRoZV9hbHRtdWx0X2FkZC5pbnB1dF9hY2xyX2EwID0gIkFDTFIwIiwKLSAgICAgICAgICAgdGhlX2FsdG11bHRfYWRkLmlucHV0X2FjbHJfYjAgPSAiQUNMUjAiLAotICAgICAgICAgICB0aGVfYWx0bXVsdF9hZGQuaW5wdXRfcmVnaXN0ZXJfYTAgPSAiQ0xPQ0swIiwKLSAgICAgICAgICAgdGhlX2FsdG11bHRfYWRkLmlucHV0X3JlZ2lzdGVyX2IwID0gIkNMT0NLMCIsCi0gICAgICAgICAgIHRoZV9hbHRtdWx0X2FkZC5pbnB1dF9zb3VyY2VfYTAgPSAiREFUQUEiLAotICAgICAgICAgICB0aGVfYWx0bXVsdF9hZGQuaW5wdXRfc291cmNlX2IwID0gIkRBVEFCIiwKLSAgICAgICAgICAgdGhlX2FsdG11bHRfYWRkLmludGVuZGVkX2RldmljZV9mYW1pbHkgPSAiU1RSQVRJWElJIiwKLSAgICAgICAgICAgdGhlX2FsdG11bHRfYWRkLmxwbV90eXBlID0gImFsdG11bHRfYWRkIiwKLSAgICAgICAgICAgdGhlX2FsdG11bHRfYWRkLm11bHRpcGxpZXIxX2RpcmVjdGlvbiA9ICJBREQiLAotICAgICAgICAgICB0aGVfYWx0bXVsdF9hZGQubXVsdGlwbGllcl9yZWdpc3RlcjAgPSAiVU5SRUdJU1RFUkVEIiwKLSAgICAgICAgICAgdGhlX2FsdG11bHRfYWRkLm51bWJlcl9vZl9tdWx0aXBsaWVycyA9IDEsCi0gICAgICAgICAgIHRoZV9hbHRtdWx0X2FkZC5vdXRwdXRfYWNsciA9ICJBQ0xSMSIsCi0gICAgICAgICAgIHRoZV9hbHRtdWx0X2FkZC5vdXRwdXRfcmVnaXN0ZXIgPSAiQ0xPQ0sxIiwKLSAgICAgICAgICAgdGhlX2FsdG11bHRfYWRkLnNpZ25lZF9hY2xyX2EgPSAiQUNMUjAiLAotICAgICAgICAgICB0aGVfYWx0bXVsdF9hZGQuc2lnbmVkX2FjbHJfYiA9ICJBQ0xSMCIsCi0gICAgICAgICAgIHRoZV9hbHRtdWx0X2FkZC5zaWduZWRfcGlwZWxpbmVfcmVnaXN0ZXJfYSA9ICJVTlJFR0lTVEVSRUQiLAotICAgICAgICAgICB0aGVfYWx0bXVsdF9hZGQuc2lnbmVkX3BpcGVsaW5lX3JlZ2lzdGVyX2IgPSAiVU5SRUdJU1RFUkVEIiwKLSAgICAgICAgICAgdGhlX2FsdG11bHRfYWRkLnNpZ25lZF9yZWdpc3Rlcl9hID0gIkNMT0NLMCIsCi0gICAgICAgICAgIHRoZV9hbHRtdWx0X2FkZC5zaWduZWRfcmVnaXN0ZXJfYiA9ICJDTE9DSzAiLAotICAgICAgICAgICB0aGVfYWx0bXVsdF9hZGQud2lkdGhfYSA9IDMyLAotICAgICAgICAgICB0aGVfYWx0bXVsdF9hZGQud2lkdGhfYiA9IDMyLAotICAgICAgICAgICB0aGVfYWx0bXVsdF9hZGQud2lkdGhfcmVzdWx0ID0gNjQ7Ci0KLQotZW5kbW9kdWxlCi0KLQotLyogU0xsaW5lIDIwNDg2ICJjdXN0b21fZG1hLnYiIDIgKi8KLS8qIFNMbGluZSAxICJjcHVfb2NpX3Rlc3RfYmVuY2gudiIgMSAqLwotLy9MZWdhbCBOb3RpY2U6IChDKTIwMTAgQWx0ZXJhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgWW91cgotLy91c2Ugb2YgQWx0ZXJhIENvcnBvcmF0aW9uJ3MgZGVzaWduIHRvb2xzLCBsb2dpYyBmdW5jdGlvbnMgYW5kIG90aGVyCi0vL3NvZnR3YXJlIGFuZCB0b29scywgYW5kIGl0cyBBTVBQIHBhcnRuZXIgbG9naWMgZnVuY3Rpb25zLCBhbmQgYW55Ci0vL291dHB1dCBmaWxlcyBhbnkgb2YgdGhlIGZvcmVnb2luZyAoaW5jbHVkaW5nIGRldmljZSBwcm9ncmFtbWluZyBvcgotLy9zaW11bGF0aW9uIGZpbGVzKSwgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gYXJlCi0vL2V4cHJlc3NseSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQWx0ZXJhIFByb2dyYW0KLS8vTGljZW5zZSBTdWJzY3JpcHRpb24gQWdyZWVtZW50IG9yIG90aGVyIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnQsCi0vL2luY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCB0aGF0IHlvdXIgdXNlIGlzIGZvciB0aGUgc29sZSBwdXJwb3NlCi0vL29mIHByb2dyYW1taW5nIGxvZ2ljIGRldmljZXMgbWFudWZhY3R1cmVkIGJ5IEFsdGVyYSBhbmQgc29sZCBieSBBbHRlcmEKLS8vb3IgaXRzIGF1dGhvcml6ZWQgZGlzdHJpYnV0b3JzLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBhcHBsaWNhYmxlCi0vL2FncmVlbWVudCBmb3IgZnVydGhlciBkZXRhaWxzLgotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3B1X29jaV90ZXN0X2JlbmNoICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjdF9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjdF9jb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9lbmRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaGFzX2VuZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBpbnB1dCAgIFsgMjk6IDBdIGRjdF9idWZmZXI7Ci0gIGlucHV0ICAgWyAgMzogMF0gZGN0X2NvdW50OwotICBpbnB1dCAgICAgICAgICAgIHRlc3RfZW5kaW5nOwotICBpbnB1dCAgICAgICAgICAgIHRlc3RfaGFzX2VuZGVkOwotCi0KLWVuZG1vZHVsZQotCi0KLS8qIFNMbGluZSAyMDQ4NyAiY3VzdG9tX2RtYS52IiAyICovCi0vKiBTTGxpbmUgMSAiY3B1X2p0YWdfZGVidWdfbW9kdWxlX3Rjay52IiAxICovCi0vL0xlZ2FsIE5vdGljZTogKEMpMjAxMCBBbHRlcmEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBZb3VyCi0vL3VzZSBvZiBBbHRlcmEgQ29ycG9yYXRpb24ncyBkZXNpZ24gdG9vbHMsIGxvZ2ljIGZ1bmN0aW9ucyBhbmQgb3RoZXIKLS8vc29mdHdhcmUgYW5kIHRvb2xzLCBhbmQgaXRzIEFNUFAgcGFydG5lciBsb2dpYyBmdW5jdGlvbnMsIGFuZCBhbnkKLS8vb3V0cHV0IGZpbGVzIGFueSBvZiB0aGUgZm9yZWdvaW5nIChpbmNsdWRpbmcgZGV2aWNlIHByb2dyYW1taW5nIG9yCi0vL3NpbXVsYXRpb24gZmlsZXMpLCBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiBhcmUKLS8vZXhwcmVzc2x5IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBBbHRlcmEgUHJvZ3JhbQotLy9MaWNlbnNlIFN1YnNjcmlwdGlvbiBBZ3JlZW1lbnQgb3Igb3RoZXIgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudCwKLS8vaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIHRoYXQgeW91ciB1c2UgaXMgZm9yIHRoZSBzb2xlIHB1cnBvc2UKLS8vb2YgcHJvZ3JhbW1pbmcgbG9naWMgZGV2aWNlcyBtYW51ZmFjdHVyZWQgYnkgQWx0ZXJhIGFuZCBzb2xkIGJ5IEFsdGVyYQotLy9vciBpdHMgYXV0aG9yaXplZCBkaXN0cmlidXRvcnMuICBQbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2FibGUKLS8vYWdyZWVtZW50IGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfdGNrICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9uRFJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrX3JlYWRyZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnJrX2hpdDBfbGF0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnJrX2hpdDFfbGF0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnJrX2hpdDJfbGF0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnJrX2hpdDNfbGF0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2FjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlyX2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganRhZ19zdGF0ZV9ydGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25pdG9yX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uaXRvcl9yZWFkeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldGxhdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGRpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtZW1fb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZW1lbV90cmNkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtZW1fdHcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmNfaW1fYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyY19vbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyY193cmFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2Jya3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyX3N0YXRlXzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2c19jZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2c19zZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2c191aXIsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlyX291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpyc3RfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfcmVhZHlfdGVzdF9pZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbICAxOiAwXSBpcl9vdXQ7Ci0gIG91dHB1dCAgICAgICAgICAganJzdF9uOwotICBvdXRwdXQgIFsgMzc6IDBdIHNyOwotICBvdXRwdXQgICAgICAgICAgIHN0X3JlYWR5X3Rlc3RfaWRsZTsKLSAgb3V0cHV0ICAgICAgICAgICB0ZG87Ci0gIGlucHV0ICAgWyAzMTogMF0gTW9uRFJlZzsKLSAgaW5wdXQgICBbIDMxOiAwXSBicmVha19yZWFkcmVnOwotICBpbnB1dCAgICAgICAgICAgIGRicmtfaGl0MF9sYXRjaDsKLSAgaW5wdXQgICAgICAgICAgICBkYnJrX2hpdDFfbGF0Y2g7Ci0gIGlucHV0ICAgICAgICAgICAgZGJya19oaXQyX2xhdGNoOwotICBpbnB1dCAgICAgICAgICAgIGRicmtfaGl0M19sYXRjaDsKLSAgaW5wdXQgICAgICAgICAgICBkZWJ1Z2FjazsKLSAgaW5wdXQgICBbICAxOiAwXSBpcl9pbjsKLSAgaW5wdXQgICAgICAgICAgICBqdGFnX3N0YXRlX3J0aTsKLSAgaW5wdXQgICAgICAgICAgICBtb25pdG9yX2Vycm9yOwotICBpbnB1dCAgICAgICAgICAgIG1vbml0b3JfcmVhZHk7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICByZXNldGxhdGNoOwotICBpbnB1dCAgICAgICAgICAgIHRjazsKLSAgaW5wdXQgICAgICAgICAgICB0ZGk7Ci0gIGlucHV0ICAgICAgICAgICAgdHJhY2VtZW1fb247Ci0gIGlucHV0ICAgWyAzNTogMF0gdHJhY2VtZW1fdHJjZGF0YTsKLSAgaW5wdXQgICAgICAgICAgICB0cmFjZW1lbV90dzsKLSAgaW5wdXQgICBbICA2OiAwXSB0cmNfaW1fYWRkcjsKLSAgaW5wdXQgICAgICAgICAgICB0cmNfb247Ci0gIGlucHV0ICAgICAgICAgICAgdHJjX3dyYXA7Ci0gIGlucHV0ICAgICAgICAgICAgdHJpZ2Jya3R5cGU7Ci0gIGlucHV0ICAgICAgICAgICAgdHJpZ2dlcl9zdGF0ZV8xOwotICBpbnB1dCAgICAgICAgICAgIHZzX2NkcjsKLSAgaW5wdXQgICAgICAgICAgICB2c19zZHI7Ci0gIGlucHV0ICAgICAgICAgICAgdnNfdWlyOwotCi0gIHJlZyAgICAgWyAgMjogMF0gRFJzaXplIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIlNVUFBSRVNTX0RBX1JVTEVfSU5URVJOQUw9XCJEMTAxLEQxMDMsUjEwMVwiIiAgKi87Ci0gIHdpcmUgICAgICAgICAgICAgZGVidWdhY2tfc3luYzsKLSAgcmVnICAgICBbICAxOiAwXSBpcl9vdXQ7Ci0gIHdpcmUgICAgICAgICAgICAganJzdF9uOwotICB3aXJlICAgICAgICAgICAgIG1vbml0b3JfcmVhZHlfc3luYzsKLSAgcmVnICAgICBbIDM3OiAwXSBzciAvKiBzeW50aGVzaXMgQUxURVJBX0FUVFJJQlVURSA9ICJTVVBQUkVTU19EQV9SVUxFX0lOVEVSTkFMPVwiRDEwMSxEMTAzLFIxMDFcIiIgICovOwotICB3aXJlICAgICAgICAgICAgIHN0X3JlYWR5X3Rlc3RfaWRsZTsKLSAgd2lyZSAgICAgICAgICAgICB0ZG87Ci0gIHdpcmUgICAgICAgICAgICAgdW54Y29tcGxlbWVudGVkX3Jlc2V0eHgwOwotICB3aXJlICAgICAgICAgICAgIHVueGNvbXBsZW1lbnRlZF9yZXNldHh4MTsKLSAgYWx3YXlzIEAocG9zZWRnZSB0Y2spCi0gICAgYmVnaW4KLSAgICAgIGlmICh2c19jZHIpCi0gICAgICAgICAgY2FzZSAoaXJfaW4pCi0gICAgICAgICAgCi0gICAgICAgICAgICAgIDInYjAwOiBiZWdpbgotICAgICAgICAgICAgICAgICAgc3JbMzVdIDw9IGRlYnVnYWNrX3N5bmM7Ci0gICAgICAgICAgICAgICAgICBzclszNF0gPD0gbW9uaXRvcl9lcnJvcjsKLSAgICAgICAgICAgICAgICAgIHNyWzMzXSA8PSByZXNldGxhdGNoOwotICAgICAgICAgICAgICAgICAgc3JbMzIgOiAxXSA8PSBNb25EUmVnOwotICAgICAgICAgICAgICAgICAgc3JbMF0gPD0gbW9uaXRvcl9yZWFkeV9zeW5jOwotICAgICAgICAgICAgICBlbmQgLy8gMidiMDAgCi0gICAgICAgICAgCi0gICAgICAgICAgICAgIDInYjAxOiBiZWdpbgotICAgICAgICAgICAgICAgICAgc3JbMzUgOiAwXSA8PSB0cmFjZW1lbV90cmNkYXRhOwotICAgICAgICAgICAgICAgICAgc3JbMzddIDw9IHRyYWNlbWVtX3R3OwotICAgICAgICAgICAgICAgICAgc3JbMzZdIDw9IHRyYWNlbWVtX29uOwotICAgICAgICAgICAgICBlbmQgLy8gMidiMDEgCi0gICAgICAgICAgCi0gICAgICAgICAgICAgIDInYjEwOiBiZWdpbgotICAgICAgICAgICAgICAgICAgc3JbMzddIDw9IHRyaWdnZXJfc3RhdGVfMTsKLSAgICAgICAgICAgICAgICAgIHNyWzM2XSA8PSBkYnJrX2hpdDNfbGF0Y2g7Ci0gICAgICAgICAgICAgICAgICBzclszNV0gPD0gZGJya19oaXQyX2xhdGNoOwotICAgICAgICAgICAgICAgICAgc3JbMzRdIDw9IGRicmtfaGl0MV9sYXRjaDsKLSAgICAgICAgICAgICAgICAgIHNyWzMzXSA8PSBkYnJrX2hpdDBfbGF0Y2g7Ci0gICAgICAgICAgICAgICAgICBzclszMiA6IDFdIDw9IGJyZWFrX3JlYWRyZWc7Ci0gICAgICAgICAgICAgICAgICBzclswXSA8PSB0cmlnYnJrdHlwZTsKLSAgICAgICAgICAgICAgZW5kIC8vIDInYjEwIAotICAgICAgICAgIAotICAgICAgICAgICAgICAyJ2IxMTogYmVnaW4KLSAgICAgICAgICAgICAgICAgIHNyWzE1IDogMTJdIDw9IDEnYjA7Ci0gICAgICAgICAgICAgICAgICBzclsxMSA6IDJdIDw9IHRyY19pbV9hZGRyOwotICAgICAgICAgICAgICAgICAgc3JbMV0gPD0gdHJjX3dyYXA7Ci0gICAgICAgICAgICAgICAgICBzclswXSA8PSB0cmNfb247Ci0gICAgICAgICAgICAgIGVuZCAvLyAyJ2IxMSAKLSAgICAgICAgICAKLSAgICAgICAgICBlbmRjYXNlIC8vIGlyX2luCi0gICAgICBpZiAodnNfc2RyKQotICAgICAgICAgIGNhc2UgKERSc2l6ZSkKLSAgICAgICAgICAKLSAgICAgICAgICAgICAgMydiMDAwOiBiZWdpbgotICAgICAgICAgICAgICAgICAgc3IgPD0ge3RkaSwgc3JbMzcgOiAyXSwgdGRpfTsKLSAgICAgICAgICAgICAgZW5kIC8vIDMnYjAwMCAKLSAgICAgICAgICAKLSAgICAgICAgICAgICAgMydiMDAxOiBiZWdpbgotICAgICAgICAgICAgICAgICAgc3IgPD0ge3RkaSwgc3JbMzcgOiA5XSwgdGRpLCBzcls3IDogMV19OwotICAgICAgICAgICAgICBlbmQgLy8gMydiMDAxIAotICAgICAgICAgIAotICAgICAgICAgICAgICAzJ2IwMTA6IGJlZ2luCi0gICAgICAgICAgICAgICAgICBzciA8PSB7dGRpLCBzclszNyA6IDE3XSwgdGRpLCBzclsxNSA6IDFdfTsKLSAgICAgICAgICAgICAgZW5kIC8vIDMnYjAxMCAKLSAgICAgICAgICAKLSAgICAgICAgICAgICAgMydiMDExOiBiZWdpbgotICAgICAgICAgICAgICAgICAgc3IgPD0ge3RkaSwgc3JbMzcgOiAzM10sIHRkaSwgc3JbMzEgOiAxXX07Ci0gICAgICAgICAgICAgIGVuZCAvLyAzJ2IwMTEgCi0gICAgICAgICAgCi0gICAgICAgICAgICAgIDMnYjEwMDogYmVnaW4KLSAgICAgICAgICAgICAgICAgIHNyIDw9IHt0ZGksIHNyWzM3XSwgICAgICAgICB0ZGksIHNyWzM1IDogMV19OwotICAgICAgICAgICAgICBlbmQgLy8gMydiMTAwIAotICAgICAgICAgIAotICAgICAgICAgICAgICAzJ2IxMDE6IGJlZ2luCi0gICAgICAgICAgICAgICAgICBzciA8PSB7dGRpLCBzclszNyA6IDFdfTsKLSAgICAgICAgICAgICAgZW5kIC8vIDMnYjEwMSAKLSAgICAgICAgICAKLSAgICAgICAgICAgICAgZGVmYXVsdDogYmVnaW4KLSAgICAgICAgICAgICAgICAgIHNyIDw9IHt0ZGksIHNyWzM3IDogMl0sIHRkaX07Ci0gICAgICAgICAgICAgIGVuZCAvLyBkZWZhdWx0Ci0gICAgICAgICAgCi0gICAgICAgICAgZW5kY2FzZSAvLyBEUnNpemUKLSAgICAgIGlmICh2c191aXIpCi0gICAgICAgICAgY2FzZSAoaXJfaW4pCi0gICAgICAgICAgCi0gICAgICAgICAgICAgIDInYjAwOiBiZWdpbgotICAgICAgICAgICAgICAgICAgRFJzaXplIDw9IDMnYjEwMDsKLSAgICAgICAgICAgICAgZW5kIC8vIDInYjAwIAotICAgICAgICAgIAotICAgICAgICAgICAgICAyJ2IwMTogYmVnaW4KLSAgICAgICAgICAgICAgICAgIERSc2l6ZSA8PSAzJ2IxMDE7Ci0gICAgICAgICAgICAgIGVuZCAvLyAyJ2IwMSAKLSAgICAgICAgICAKLSAgICAgICAgICAgICAgMidiMTA6IGJlZ2luCi0gICAgICAgICAgICAgICAgICBEUnNpemUgPD0gMydiMTAxOwotICAgICAgICAgICAgICBlbmQgLy8gMidiMTAgCi0gICAgICAgICAgCi0gICAgICAgICAgICAgIDInYjExOiBiZWdpbgotICAgICAgICAgICAgICAgICAgRFJzaXplIDw9IDMnYjAxMDsKLSAgICAgICAgICAgICAgZW5kIC8vIDInYjExIAotICAgICAgICAgIAotICAgICAgICAgIGVuZGNhc2UgLy8gaXJfaW4KLSAgICBlbmQKLQotCi0gIGFzc2lnbiB0ZG8gPSBzclswXTsKLSAgYXNzaWduIHN0X3JlYWR5X3Rlc3RfaWRsZSA9IGp0YWdfc3RhdGVfcnRpOwotICBhc3NpZ24gdW54Y29tcGxlbWVudGVkX3Jlc2V0eHgwID0ganJzdF9uOwotICBhbHRlcmFfc3RkX3N5bmNocm9uaXplciB0aGVfYWx0ZXJhX3N0ZF9zeW5jaHJvbml6ZXIKLSAgICAoCi0gICAgICAuY2xrICh0Y2spLAotICAgICAgLmRpbiAoZGVidWdhY2spLAotICAgICAgLmRvdXQgKGRlYnVnYWNrX3N5bmMpLAotICAgICAgLnJlc2V0X24gKHVueGNvbXBsZW1lbnRlZF9yZXNldHh4MCkKLSAgICApOwotCi0gIGRlZnBhcmFtIHRoZV9hbHRlcmFfc3RkX3N5bmNocm9uaXplci5kZXB0aCA9IDI7Ci0KLSAgYXNzaWduIHVueGNvbXBsZW1lbnRlZF9yZXNldHh4MSA9IGpyc3RfbjsKLSAgYWx0ZXJhX3N0ZF9zeW5jaHJvbml6ZXIgdGhlX2FsdGVyYV9zdGRfc3luY2hyb25pemVyMQotICAgICgKLSAgICAgIC5jbGsgKHRjayksCi0gICAgICAuZGluIChtb25pdG9yX3JlYWR5KSwKLSAgICAgIC5kb3V0IChtb25pdG9yX3JlYWR5X3N5bmMpLAotICAgICAgLnJlc2V0X24gKHVueGNvbXBsZW1lbnRlZF9yZXNldHh4MSkKLSAgICApOwotCi0gIGRlZnBhcmFtIHRoZV9hbHRlcmFfc3RkX3N5bmNocm9uaXplcjEuZGVwdGggPSAyOwotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgdGNrIG9yIG5lZ2VkZ2UganJzdF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAoanJzdF9uID09IDApCi0gICAgICAgICAgaXJfb3V0IDw9IDInYjA7Ci0gICAgICBlbHNlIAotICAgICAgICBpcl9vdXQgPD0ge2RlYnVnYWNrX3N5bmMsIG1vbml0b3JfcmVhZHlfc3luY307Ci0gICAgZW5kCi0KLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi0vLy8vLy8vLy8vLy8vLy8vIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotICBhc3NpZ24ganJzdF9uID0gcmVzZXRfbjsKLQotLy8vLy8vLy8vLy8vLy8vLyBFTkQgU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotLy9zeW50aGVzaXMgcmVhZF9jb21tZW50c19hc19IREwgb24KLS8vICBhc3NpZ24ganJzdF9uID0gMTsKLS8vc3ludGhlc2lzIHJlYWRfY29tbWVudHNfYXNfSERMIG9mZgotCi1lbmRtb2R1bGUKLQotCi0vKiBTTGxpbmUgMjA0ODggImN1c3RvbV9kbWEudiIgMiAqLwotLyogU0xsaW5lIDEgImNwdV9qdGFnX2RlYnVnX21vZHVsZV9zeXNjbGsudiIgMSAqLwotLy9MZWdhbCBOb3RpY2U6IChDKTIwMTAgQWx0ZXJhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgWW91cgotLy91c2Ugb2YgQWx0ZXJhIENvcnBvcmF0aW9uJ3MgZGVzaWduIHRvb2xzLCBsb2dpYyBmdW5jdGlvbnMgYW5kIG90aGVyCi0vL3NvZnR3YXJlIGFuZCB0b29scywgYW5kIGl0cyBBTVBQIHBhcnRuZXIgbG9naWMgZnVuY3Rpb25zLCBhbmQgYW55Ci0vL291dHB1dCBmaWxlcyBhbnkgb2YgdGhlIGZvcmVnb2luZyAoaW5jbHVkaW5nIGRldmljZSBwcm9ncmFtbWluZyBvcgotLy9zaW11bGF0aW9uIGZpbGVzKSwgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gYXJlCi0vL2V4cHJlc3NseSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQWx0ZXJhIFByb2dyYW0KLS8vTGljZW5zZSBTdWJzY3JpcHRpb24gQWdyZWVtZW50IG9yIG90aGVyIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnQsCi0vL2luY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCB0aGF0IHlvdXIgdXNlIGlzIGZvciB0aGUgc29sZSBwdXJwb3NlCi0vL29mIHByb2dyYW1taW5nIGxvZ2ljIGRldmljZXMgbWFudWZhY3R1cmVkIGJ5IEFsdGVyYSBhbmQgc29sZCBieSBBbHRlcmEKLS8vb3IgaXRzIGF1dGhvcml6ZWQgZGlzdHJpYnV0b3JzLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBhcHBsaWNhYmxlCi0vL2FncmVlbWVudCBmb3IgZnVydGhlciBkZXRhaWxzLgotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3N5c2NsayAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlyX2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2c191ZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2c191aXIsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VfYWN0aW9uX2JyZWFrX2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX2FjdGlvbl9icmVha19iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9hY3Rpb25fYnJlYWtfYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VfYWN0aW9uX29jaW1lbV9hLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9hY3Rpb25fb2NpbWVtX2IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX2FjdGlvbl90cmFjZWN0cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX2FjdGlvbl90cmFjZW1lbV9hLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9hY3Rpb25fdHJhY2VtZW1fYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vfbm9fYWN0aW9uX2JyZWFrX2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX25vX2FjdGlvbl9icmVha19iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fYnJlYWtfYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vfbm9fYWN0aW9uX29jaW1lbV9hLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fdHJhY2VtZW1fYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAzNzogMF0gamRvOwotICBvdXRwdXQgICAgICAgICAgIHRha2VfYWN0aW9uX2JyZWFrX2E7Ci0gIG91dHB1dCAgICAgICAgICAgdGFrZV9hY3Rpb25fYnJlYWtfYjsKLSAgb3V0cHV0ICAgICAgICAgICB0YWtlX2FjdGlvbl9icmVha19jOwotICBvdXRwdXQgICAgICAgICAgIHRha2VfYWN0aW9uX29jaW1lbV9hOwotICBvdXRwdXQgICAgICAgICAgIHRha2VfYWN0aW9uX29jaW1lbV9iOwotICBvdXRwdXQgICAgICAgICAgIHRha2VfYWN0aW9uX3RyYWNlY3RybDsKLSAgb3V0cHV0ICAgICAgICAgICB0YWtlX2FjdGlvbl90cmFjZW1lbV9hOwotICBvdXRwdXQgICAgICAgICAgIHRha2VfYWN0aW9uX3RyYWNlbWVtX2I7Ci0gIG91dHB1dCAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fYnJlYWtfYTsKLSAgb3V0cHV0ICAgICAgICAgICB0YWtlX25vX2FjdGlvbl9icmVha19iOwotICBvdXRwdXQgICAgICAgICAgIHRha2Vfbm9fYWN0aW9uX2JyZWFrX2M7Ci0gIG91dHB1dCAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fb2NpbWVtX2E7Ci0gIG91dHB1dCAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fdHJhY2VtZW1fYTsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgWyAgMTogMF0gaXJfaW47Ci0gIGlucHV0ICAgWyAzNzogMF0gc3I7Ci0gIGlucHV0ICAgICAgICAgICAgdnNfdWRyOwotICBpbnB1dCAgICAgICAgICAgIHZzX3VpcjsKLQotICByZWcgICAgICAgICAgICAgIGVuYWJsZV9hY3Rpb25fc3Ryb2JlIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIlNVUFBSRVNTX0RBX1JVTEVfSU5URVJOQUw9XCJEMTAxLEQxMDNcIiIgICovOwotICByZWcgICAgIFsgIDE6IDBdIGlyIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIlNVUFBSRVNTX0RBX1JVTEVfSU5URVJOQUw9XCJEMTAxLFIxMDFcIiIgICovOwotICByZWcgICAgIFsgMzc6IDBdIGpkbyAvKiBzeW50aGVzaXMgQUxURVJBX0FUVFJJQlVURSA9ICJTVVBQUkVTU19EQV9SVUxFX0lOVEVSTkFMPVwiRDEwMSxSMTAxXCIiICAqLzsKLSAgcmVnICAgICAgICAgICAgICBqeHVpciAvKiBzeW50aGVzaXMgQUxURVJBX0FUVFJJQlVURSA9ICJTVVBQUkVTU19EQV9SVUxFX0lOVEVSTkFMPVwiRDEwMSxEMTAzXCIiICAqLzsKLSAgcmVnICAgICAgICAgICAgICBzeW5jMl91ZHIgLyogc3ludGhlc2lzIEFMVEVSQV9BVFRSSUJVVEUgPSAiU1VQUFJFU1NfREFfUlVMRV9JTlRFUk5BTD1cIkQxMDEsRDEwM1wiIiAgKi87Ci0gIHJlZyAgICAgICAgICAgICAgc3luYzJfdWlyIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIlNVUFBSRVNTX0RBX1JVTEVfSU5URVJOQUw9XCJEMTAxLEQxMDNcIiIgICovOwotICB3aXJlICAgICAgICAgICAgIHN5bmNfdWRyOwotICB3aXJlICAgICAgICAgICAgIHN5bmNfdWlyOwotICB3aXJlICAgICAgICAgICAgIHRha2VfYWN0aW9uX2JyZWFrX2E7Ci0gIHdpcmUgICAgICAgICAgICAgdGFrZV9hY3Rpb25fYnJlYWtfYjsKLSAgd2lyZSAgICAgICAgICAgICB0YWtlX2FjdGlvbl9icmVha19jOwotICB3aXJlICAgICAgICAgICAgIHRha2VfYWN0aW9uX29jaW1lbV9hOwotICB3aXJlICAgICAgICAgICAgIHRha2VfYWN0aW9uX29jaW1lbV9iOwotICB3aXJlICAgICAgICAgICAgIHRha2VfYWN0aW9uX3RyYWNlY3RybDsKLSAgd2lyZSAgICAgICAgICAgICB0YWtlX2FjdGlvbl90cmFjZW1lbV9hOwotICB3aXJlICAgICAgICAgICAgIHRha2VfYWN0aW9uX3RyYWNlbWVtX2I7Ci0gIHdpcmUgICAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fYnJlYWtfYTsKLSAgd2lyZSAgICAgICAgICAgICB0YWtlX25vX2FjdGlvbl9icmVha19iOwotICB3aXJlICAgICAgICAgICAgIHRha2Vfbm9fYWN0aW9uX2JyZWFrX2M7Ci0gIHdpcmUgICAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fb2NpbWVtX2E7Ci0gIHdpcmUgICAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fdHJhY2VtZW1fYTsKLSAgd2lyZSAgICAgICAgICAgICB1bnh1bnVzZWRfcmVzZXR4eDI7Ci0gIHdpcmUgICAgICAgICAgICAgdW54dW51c2VkX3Jlc2V0eHgzOwotICByZWcgICAgICAgICAgICAgIHVwZGF0ZV9qZG9fc3Ryb2JlIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIlNVUFBSRVNTX0RBX1JVTEVfSU5URVJOQUw9XCJEMTAxLEQxMDNcIiIgICovOwotICBhc3NpZ24gdW54dW51c2VkX3Jlc2V0eHgyID0gMSdiMTsKLSAgYWx0ZXJhX3N0ZF9zeW5jaHJvbml6ZXIgdGhlX2FsdGVyYV9zdGRfc3luY2hyb25pemVyMgotICAgICgKLSAgICAgIC5jbGsgKGNsayksCi0gICAgICAuZGluICh2c191ZHIpLAotICAgICAgLmRvdXQgKHN5bmNfdWRyKSwKLSAgICAgIC5yZXNldF9uICh1bnh1bnVzZWRfcmVzZXR4eDIpCi0gICAgKTsKLQotICBkZWZwYXJhbSB0aGVfYWx0ZXJhX3N0ZF9zeW5jaHJvbml6ZXIyLmRlcHRoID0gMjsKLQotICBhc3NpZ24gdW54dW51c2VkX3Jlc2V0eHgzID0gMSdiMTsKLSAgYWx0ZXJhX3N0ZF9zeW5jaHJvbml6ZXIgdGhlX2FsdGVyYV9zdGRfc3luY2hyb25pemVyMwotICAgICgKLSAgICAgIC5jbGsgKGNsayksCi0gICAgICAuZGluICh2c191aXIpLAotICAgICAgLmRvdXQgKHN5bmNfdWlyKSwKLSAgICAgIC5yZXNldF9uICh1bnh1bnVzZWRfcmVzZXR4eDMpCi0gICAgKTsKLQotICBkZWZwYXJhbSB0aGVfYWx0ZXJhX3N0ZF9zeW5jaHJvbml6ZXIzLmRlcHRoID0gMjsKLQotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgc3luYzJfdWRyIDw9IHN5bmNfdWRyOwotICAgICAgdXBkYXRlX2pkb19zdHJvYmUgPD0gc3luY191ZHIgJiB+c3luYzJfdWRyOwotICAgICAgZW5hYmxlX2FjdGlvbl9zdHJvYmUgPD0gdXBkYXRlX2pkb19zdHJvYmU7Ci0gICAgICBzeW5jMl91aXIgPD0gc3luY191aXI7Ci0gICAgICBqeHVpciA8PSBzeW5jX3VpciAmIH5zeW5jMl91aXI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gdGFrZV9hY3Rpb25fb2NpbWVtX2EgPSBlbmFibGVfYWN0aW9uX3N0cm9iZSAmJiAoaXIgPT0gMidiMDApICYmIAotICAgIH5qZG9bMzVdICYmIGpkb1szNF07Ci0KLSAgYXNzaWduIHRha2Vfbm9fYWN0aW9uX29jaW1lbV9hID0gZW5hYmxlX2FjdGlvbl9zdHJvYmUgJiYgKGlyID09IDInYjAwKSAmJiAKLSAgICB+amRvWzM1XSAmJiB+amRvWzM0XTsKLQotICBhc3NpZ24gdGFrZV9hY3Rpb25fb2NpbWVtX2IgPSBlbmFibGVfYWN0aW9uX3N0cm9iZSAmJiAoaXIgPT0gMidiMDApICYmIAotICAgIGpkb1szNV07Ci0KLSAgYXNzaWduIHRha2VfYWN0aW9uX3RyYWNlbWVtX2EgPSBlbmFibGVfYWN0aW9uX3N0cm9iZSAmJiAoaXIgPT0gMidiMDEpICYmCi0gICAgfmpkb1szN10gJiYgCi0gICAgamRvWzM2XTsKLQotICBhc3NpZ24gdGFrZV9ub19hY3Rpb25fdHJhY2VtZW1fYSA9IGVuYWJsZV9hY3Rpb25fc3Ryb2JlICYmIChpciA9PSAyJ2IwMSkgJiYKLSAgICB+amRvWzM3XSAmJiAKLSAgICB+amRvWzM2XTsKLQotICBhc3NpZ24gdGFrZV9hY3Rpb25fdHJhY2VtZW1fYiA9IGVuYWJsZV9hY3Rpb25fc3Ryb2JlICYmIChpciA9PSAyJ2IwMSkgJiYKLSAgICBqZG9bMzddOwotCi0gIGFzc2lnbiB0YWtlX2FjdGlvbl9icmVha19hID0gZW5hYmxlX2FjdGlvbl9zdHJvYmUgJiYgKGlyID09IDInYjEwKSAmJiAKLSAgICB+amRvWzM2XSAmJiAKLSAgICBqZG9bMzddOwotCi0gIGFzc2lnbiB0YWtlX25vX2FjdGlvbl9icmVha19hID0gZW5hYmxlX2FjdGlvbl9zdHJvYmUgJiYgKGlyID09IDInYjEwKSAmJiAKLSAgICB+amRvWzM2XSAmJiAKLSAgICB+amRvWzM3XTsKLQotICBhc3NpZ24gdGFrZV9hY3Rpb25fYnJlYWtfYiA9IGVuYWJsZV9hY3Rpb25fc3Ryb2JlICYmIChpciA9PSAyJ2IxMCkgJiYgCi0gICAgamRvWzM2XSAmJiB+amRvWzM1XSAmJgotICAgIGpkb1szN107Ci0KLSAgYXNzaWduIHRha2Vfbm9fYWN0aW9uX2JyZWFrX2IgPSBlbmFibGVfYWN0aW9uX3N0cm9iZSAmJiAoaXIgPT0gMidiMTApICYmIAotICAgIGpkb1szNl0gJiYgfmpkb1szNV0gJiYKLSAgICB+amRvWzM3XTsKLQotICBhc3NpZ24gdGFrZV9hY3Rpb25fYnJlYWtfYyA9IGVuYWJsZV9hY3Rpb25fc3Ryb2JlICYmIChpciA9PSAyJ2IxMCkgJiYgCi0gICAgamRvWzM2XSAmJiAgamRvWzM1XSAmJgotICAgIGpkb1szN107Ci0KLSAgYXNzaWduIHRha2Vfbm9fYWN0aW9uX2JyZWFrX2MgPSBlbmFibGVfYWN0aW9uX3N0cm9iZSAmJiAoaXIgPT0gMidiMTApICYmIAotICAgIGpkb1szNl0gJiYgIGpkb1szNV0gJiYKLSAgICB+amRvWzM3XTsKLQotICBhc3NpZ24gdGFrZV9hY3Rpb25fdHJhY2VjdHJsID0gZW5hYmxlX2FjdGlvbl9zdHJvYmUgJiYgKGlyID09IDInYjExKSAmJiAgCi0gICAgamRvWzE1XTsKLQotICBhbHdheXMgQChwb3NlZGdlIGNsaykKLSAgICBiZWdpbgotICAgICAgaWYgKGp4dWlyKQotICAgICAgICAgIGlyIDw9IGlyX2luOwotICAgICAgaWYgKHVwZGF0ZV9qZG9fc3Ryb2JlKQotICAgICAgICAgIGpkbyA8PSBzcjsKLSAgICBlbmQKLQotCi0KLWVuZG1vZHVsZQotCi0KLS8qIFNMbGluZSAyMDQ4OSAiY3VzdG9tX2RtYS52IiAyICovCi0vKiBTTGxpbmUgMSAiY3B1X2p0YWdfZGVidWdfbW9kdWxlX3dyYXBwZXIudiIgMSAqLwotLy9MZWdhbCBOb3RpY2U6IChDKTIwMTAgQWx0ZXJhIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgWW91cgotLy91c2Ugb2YgQWx0ZXJhIENvcnBvcmF0aW9uJ3MgZGVzaWduIHRvb2xzLCBsb2dpYyBmdW5jdGlvbnMgYW5kIG90aGVyCi0vL3NvZnR3YXJlIGFuZCB0b29scywgYW5kIGl0cyBBTVBQIHBhcnRuZXIgbG9naWMgZnVuY3Rpb25zLCBhbmQgYW55Ci0vL291dHB1dCBmaWxlcyBhbnkgb2YgdGhlIGZvcmVnb2luZyAoaW5jbHVkaW5nIGRldmljZSBwcm9ncmFtbWluZyBvcgotLy9zaW11bGF0aW9uIGZpbGVzKSwgYW5kIGFueSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gYXJlCi0vL2V4cHJlc3NseSBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQWx0ZXJhIFByb2dyYW0KLS8vTGljZW5zZSBTdWJzY3JpcHRpb24gQWdyZWVtZW50IG9yIG90aGVyIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnQsCi0vL2luY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCB0aGF0IHlvdXIgdXNlIGlzIGZvciB0aGUgc29sZSBwdXJwb3NlCi0vL29mIHByb2dyYW1taW5nIGxvZ2ljIGRldmljZXMgbWFudWZhY3R1cmVkIGJ5IEFsdGVyYSBhbmQgc29sZCBieSBBbHRlcmEKLS8vb3IgaXRzIGF1dGhvcml6ZWQgZGlzdHJpYnV0b3JzLiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBhcHBsaWNhYmxlCi0vL2FncmVlbWVudCBmb3IgZnVydGhlciBkZXRhaWxzLgotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3dyYXBwZXIgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vbkRSZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtfcmVhZHJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJya19oaXQwX2xhdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRicmtfaGl0MV9sYXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnJrX2hpdDJfbGF0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJya19oaXQzX2xhdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbml0b3JfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uaXRvcl9yZWFkeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0bGF0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtZW1fb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtZW1fdHJjZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZW1lbV90dywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmNfaW1fYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmNfb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJjX3dyYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2Jya3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcl9zdGF0ZV8xLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcnN0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfcmVhZHlfdGVzdF9pZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VfYWN0aW9uX2JyZWFrX2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9hY3Rpb25fYnJlYWtfYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX2FjdGlvbl9icmVha19jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VfYWN0aW9uX29jaW1lbV9hLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VfYWN0aW9uX29jaW1lbV9iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VfYWN0aW9uX3RyYWNlY3RybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX2FjdGlvbl90cmFjZW1lbV9hLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VfYWN0aW9uX3RyYWNlbWVtX2IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fYnJlYWtfYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlX25vX2FjdGlvbl9icmVha19iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vfbm9fYWN0aW9uX2JyZWFrX2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fb2NpbWVtX2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fdHJhY2VtZW1fYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgMzc6IDBdIGpkbzsKLSAgb3V0cHV0ICAgICAgICAgICBqcnN0X247Ci0gIG91dHB1dCAgICAgICAgICAgc3RfcmVhZHlfdGVzdF9pZGxlOwotICBvdXRwdXQgICAgICAgICAgIHRha2VfYWN0aW9uX2JyZWFrX2E7Ci0gIG91dHB1dCAgICAgICAgICAgdGFrZV9hY3Rpb25fYnJlYWtfYjsKLSAgb3V0cHV0ICAgICAgICAgICB0YWtlX2FjdGlvbl9icmVha19jOwotICBvdXRwdXQgICAgICAgICAgIHRha2VfYWN0aW9uX29jaW1lbV9hOwotICBvdXRwdXQgICAgICAgICAgIHRha2VfYWN0aW9uX29jaW1lbV9iOwotICBvdXRwdXQgICAgICAgICAgIHRha2VfYWN0aW9uX3RyYWNlY3RybDsKLSAgb3V0cHV0ICAgICAgICAgICB0YWtlX2FjdGlvbl90cmFjZW1lbV9hOwotICBvdXRwdXQgICAgICAgICAgIHRha2VfYWN0aW9uX3RyYWNlbWVtX2I7Ci0gIG91dHB1dCAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fYnJlYWtfYTsKLSAgb3V0cHV0ICAgICAgICAgICB0YWtlX25vX2FjdGlvbl9icmVha19iOwotICBvdXRwdXQgICAgICAgICAgIHRha2Vfbm9fYWN0aW9uX2JyZWFrX2M7Ci0gIG91dHB1dCAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fb2NpbWVtX2E7Ci0gIG91dHB1dCAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fdHJhY2VtZW1fYTsKLSAgaW5wdXQgICBbIDMxOiAwXSBNb25EUmVnOwotICBpbnB1dCAgIFsgMzE6IDBdIGJyZWFrX3JlYWRyZWc7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIGRicmtfaGl0MF9sYXRjaDsKLSAgaW5wdXQgICAgICAgICAgICBkYnJrX2hpdDFfbGF0Y2g7Ci0gIGlucHV0ICAgICAgICAgICAgZGJya19oaXQyX2xhdGNoOwotICBpbnB1dCAgICAgICAgICAgIGRicmtfaGl0M19sYXRjaDsKLSAgaW5wdXQgICAgICAgICAgICBkZWJ1Z2FjazsKLSAgaW5wdXQgICAgICAgICAgICBtb25pdG9yX2Vycm9yOwotICBpbnB1dCAgICAgICAgICAgIG1vbml0b3JfcmVhZHk7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICByZXNldGxhdGNoOwotICBpbnB1dCAgICAgICAgICAgIHRyYWNlbWVtX29uOwotICBpbnB1dCAgIFsgMzU6IDBdIHRyYWNlbWVtX3RyY2RhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgdHJhY2VtZW1fdHc7Ci0gIGlucHV0ICAgWyAgNjogMF0gdHJjX2ltX2FkZHI7Ci0gIGlucHV0ICAgICAgICAgICAgdHJjX29uOwotICBpbnB1dCAgICAgICAgICAgIHRyY193cmFwOwotICBpbnB1dCAgICAgICAgICAgIHRyaWdicmt0eXBlOwotICBpbnB1dCAgICAgICAgICAgIHRyaWdnZXJfc3RhdGVfMTsKLQotICB3aXJlICAgIFsgMzc6IDBdIGpkbzsKLSAgd2lyZSAgICAgICAgICAgICBqcnN0X247Ci0gIHdpcmUgICAgWyAzNzogMF0gc3I7Ci0gIHdpcmUgICAgICAgICAgICAgc3RfcmVhZHlfdGVzdF9pZGxlOwotICB3aXJlICAgICAgICAgICAgIHRha2VfYWN0aW9uX2JyZWFrX2E7Ci0gIHdpcmUgICAgICAgICAgICAgdGFrZV9hY3Rpb25fYnJlYWtfYjsKLSAgd2lyZSAgICAgICAgICAgICB0YWtlX2FjdGlvbl9icmVha19jOwotICB3aXJlICAgICAgICAgICAgIHRha2VfYWN0aW9uX29jaW1lbV9hOwotICB3aXJlICAgICAgICAgICAgIHRha2VfYWN0aW9uX29jaW1lbV9iOwotICB3aXJlICAgICAgICAgICAgIHRha2VfYWN0aW9uX3RyYWNlY3RybDsKLSAgd2lyZSAgICAgICAgICAgICB0YWtlX2FjdGlvbl90cmFjZW1lbV9hOwotICB3aXJlICAgICAgICAgICAgIHRha2VfYWN0aW9uX3RyYWNlbWVtX2I7Ci0gIHdpcmUgICAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fYnJlYWtfYTsKLSAgd2lyZSAgICAgICAgICAgICB0YWtlX25vX2FjdGlvbl9icmVha19iOwotICB3aXJlICAgICAgICAgICAgIHRha2Vfbm9fYWN0aW9uX2JyZWFrX2M7Ci0gIHdpcmUgICAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fb2NpbWVtX2E7Ci0gIHdpcmUgICAgICAgICAgICAgdGFrZV9ub19hY3Rpb25fdHJhY2VtZW1fYTsKLSAgd2lyZSAgICAgICAgICAgICB2amlfY2RyOwotICB3aXJlICAgIFsgIDE6IDBdIHZqaV9pcl9pbjsKLSAgd2lyZSAgICBbICAxOiAwXSB2amlfaXJfb3V0OwotICB3aXJlICAgICAgICAgICAgIHZqaV9ydGk7Ci0gIHdpcmUgICAgICAgICAgICAgdmppX3NkcjsKLSAgd2lyZSAgICAgICAgICAgICB2amlfdGNrOwotICB3aXJlICAgICAgICAgICAgIHZqaV90ZGk7Ci0gIHdpcmUgICAgICAgICAgICAgdmppX3RkbzsKLSAgd2lyZSAgICAgICAgICAgICB2amlfdWRyOwotICB3aXJlICAgICAgICAgICAgIHZqaV91aXI7Ci0gIGNwdV9qdGFnX2RlYnVnX21vZHVsZV90Y2sgdGhlX2NwdV9qdGFnX2RlYnVnX21vZHVsZV90Y2sKLSAgICAoCi0gICAgICAuTW9uRFJlZyAgICAgICAgICAgIChNb25EUmVnKSwKLSAgICAgIC5icmVha19yZWFkcmVnICAgICAgKGJyZWFrX3JlYWRyZWcpLAotICAgICAgLmRicmtfaGl0MF9sYXRjaCAgICAoZGJya19oaXQwX2xhdGNoKSwKLSAgICAgIC5kYnJrX2hpdDFfbGF0Y2ggICAgKGRicmtfaGl0MV9sYXRjaCksCi0gICAgICAuZGJya19oaXQyX2xhdGNoICAgIChkYnJrX2hpdDJfbGF0Y2gpLAotICAgICAgLmRicmtfaGl0M19sYXRjaCAgICAoZGJya19oaXQzX2xhdGNoKSwKLSAgICAgIC5kZWJ1Z2FjayAgICAgICAgICAgKGRlYnVnYWNrKSwKLSAgICAgIC5pcl9pbiAgICAgICAgICAgICAgKHZqaV9pcl9pbiksCi0gICAgICAuaXJfb3V0ICAgICAgICAgICAgICh2amlfaXJfb3V0KSwKLSAgICAgIC5qcnN0X24gICAgICAgICAgICAgKGpyc3RfbiksCi0gICAgICAuanRhZ19zdGF0ZV9ydGkgICAgICh2amlfcnRpKSwKLSAgICAgIC5tb25pdG9yX2Vycm9yICAgICAgKG1vbml0b3JfZXJyb3IpLAotICAgICAgLm1vbml0b3JfcmVhZHkgICAgICAobW9uaXRvcl9yZWFkeSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAgIChyZXNldF9uKSwKLSAgICAgIC5yZXNldGxhdGNoICAgICAgICAgKHJlc2V0bGF0Y2gpLAotICAgICAgLnNyICAgICAgICAgICAgICAgICAoc3IpLAotICAgICAgLnN0X3JlYWR5X3Rlc3RfaWRsZSAoc3RfcmVhZHlfdGVzdF9pZGxlKSwKLSAgICAgIC50Y2sgICAgICAgICAgICAgICAgKHZqaV90Y2spLAotICAgICAgLnRkaSAgICAgICAgICAgICAgICAodmppX3RkaSksCi0gICAgICAudGRvICAgICAgICAgICAgICAgICh2amlfdGRvKSwKLSAgICAgIC50cmFjZW1lbV9vbiAgICAgICAgKHRyYWNlbWVtX29uKSwKLSAgICAgIC50cmFjZW1lbV90cmNkYXRhICAgKHRyYWNlbWVtX3RyY2RhdGEpLAotICAgICAgLnRyYWNlbWVtX3R3ICAgICAgICAodHJhY2VtZW1fdHcpLAotICAgICAgLnRyY19pbV9hZGRyICAgICAgICAodHJjX2ltX2FkZHIpLAotICAgICAgLnRyY19vbiAgICAgICAgICAgICAodHJjX29uKSwKLSAgICAgIC50cmNfd3JhcCAgICAgICAgICAgKHRyY193cmFwKSwKLSAgICAgIC50cmlnYnJrdHlwZSAgICAgICAgKHRyaWdicmt0eXBlKSwKLSAgICAgIC50cmlnZ2VyX3N0YXRlXzEgICAgKHRyaWdnZXJfc3RhdGVfMSksCi0gICAgICAudnNfY2RyICAgICAgICAgICAgICh2amlfY2RyKSwKLSAgICAgIC52c19zZHIgICAgICAgICAgICAgKHZqaV9zZHIpLAotICAgICAgLnZzX3VpciAgICAgICAgICAgICAodmppX3VpcikKLSAgICApOwotCi0gIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9zeXNjbGsgdGhlX2NwdV9qdGFnX2RlYnVnX21vZHVsZV9zeXNjbGsKLSAgICAoCi0gICAgICAuY2xrICAgICAgICAgICAgICAgICAgICAgICAoY2xrKSwKLSAgICAgIC5pcl9pbiAgICAgICAgICAgICAgICAgICAgICh2amlfaXJfaW4pLAotICAgICAgLmpkbyAgICAgICAgICAgICAgICAgICAgICAgKGpkbyksCi0gICAgICAuc3IgICAgICAgICAgICAgICAgICAgICAgICAoc3IpLAotICAgICAgLnRha2VfYWN0aW9uX2JyZWFrX2EgICAgICAgKHRha2VfYWN0aW9uX2JyZWFrX2EpLAotICAgICAgLnRha2VfYWN0aW9uX2JyZWFrX2IgICAgICAgKHRha2VfYWN0aW9uX2JyZWFrX2IpLAotICAgICAgLnRha2VfYWN0aW9uX2JyZWFrX2MgICAgICAgKHRha2VfYWN0aW9uX2JyZWFrX2MpLAotICAgICAgLnRha2VfYWN0aW9uX29jaW1lbV9hICAgICAgKHRha2VfYWN0aW9uX29jaW1lbV9hKSwKLSAgICAgIC50YWtlX2FjdGlvbl9vY2ltZW1fYiAgICAgICh0YWtlX2FjdGlvbl9vY2ltZW1fYiksCi0gICAgICAudGFrZV9hY3Rpb25fdHJhY2VjdHJsICAgICAodGFrZV9hY3Rpb25fdHJhY2VjdHJsKSwKLSAgICAgIC50YWtlX2FjdGlvbl90cmFjZW1lbV9hICAgICh0YWtlX2FjdGlvbl90cmFjZW1lbV9hKSwKLSAgICAgIC50YWtlX2FjdGlvbl90cmFjZW1lbV9iICAgICh0YWtlX2FjdGlvbl90cmFjZW1lbV9iKSwKLSAgICAgIC50YWtlX25vX2FjdGlvbl9icmVha19hICAgICh0YWtlX25vX2FjdGlvbl9icmVha19hKSwKLSAgICAgIC50YWtlX25vX2FjdGlvbl9icmVha19iICAgICh0YWtlX25vX2FjdGlvbl9icmVha19iKSwKLSAgICAgIC50YWtlX25vX2FjdGlvbl9icmVha19jICAgICh0YWtlX25vX2FjdGlvbl9icmVha19jKSwKLSAgICAgIC50YWtlX25vX2FjdGlvbl9vY2ltZW1fYSAgICh0YWtlX25vX2FjdGlvbl9vY2ltZW1fYSksCi0gICAgICAudGFrZV9ub19hY3Rpb25fdHJhY2VtZW1fYSAodGFrZV9ub19hY3Rpb25fdHJhY2VtZW1fYSksCi0gICAgICAudnNfdWRyICAgICAgICAgICAgICAgICAgICAodmppX3VkciksCi0gICAgICAudnNfdWlyICAgICAgICAgICAgICAgICAgICAodmppX3VpcikKLSAgICApOwotCi0KLS8vc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLS8vLy8vLy8vLy8vLy8vLy8gU0lNVUxBVElPTi1PTkxZIENPTlRFTlRTCi0gIGFzc2lnbiB2amlfdGNrID0gMSdiMDsKLSAgYXNzaWduIHZqaV90ZGkgPSAxJ2IwOwotICBhc3NpZ24gdmppX3NkciA9IDEnYjA7Ci0gIGFzc2lnbiB2amlfY2RyID0gMSdiMDsKLSAgYXNzaWduIHZqaV9ydGkgPSAxJ2IwOwotICBhc3NpZ24gdmppX3VpciA9IDEnYjA7Ci0gIGFzc2lnbiB2amlfdWRyID0gMSdiMDsKLSAgYXNzaWduIHZqaV9pcl9pbiA9IDInYjA7Ci0KLS8vLy8vLy8vLy8vLy8vLy8gRU5EIFNJTVVMQVRJT04tT05MWSBDT05URU5UUwotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KLS8vc3ludGhlc2lzIHJlYWRfY29tbWVudHNfYXNfSERMIG9uCi0vLyAgc2xkX3ZpcnR1YWxfanRhZ19iYXNpYyBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcGh5Ci0vLyAgICAoCi0vLyAgICAgIC5pcl9pbiAodmppX2lyX2luKSwKLS8vICAgICAgLmlyX291dCAodmppX2lyX291dCksCi0vLyAgICAgIC5qdGFnX3N0YXRlX3J0aSAodmppX3J0aSksCi0vLyAgICAgIC50Y2sgKHZqaV90Y2spLAotLy8gICAgICAudGRpICh2amlfdGRpKSwKLS8vICAgICAgLnRkbyAodmppX3RkbyksCi0vLyAgICAgIC52aXJ0dWFsX3N0YXRlX2NkciAodmppX2NkciksCi0vLyAgICAgIC52aXJ0dWFsX3N0YXRlX3NkciAodmppX3NkciksCi0vLyAgICAgIC52aXJ0dWFsX3N0YXRlX3VkciAodmppX3VkciksCi0vLyAgICAgIC52aXJ0dWFsX3N0YXRlX3VpciAodmppX3VpcikKLS8vICAgICk7Ci0vLwotLy8gIGRlZnBhcmFtIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9waHkuc2xkX2F1dG9faW5zdGFuY2VfaW5kZXggPSAiWUVTIiwKLS8vICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcGh5LnNsZF9pbnN0YW5jZV9pbmRleCA9IDAsCi0vLyAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3BoeS5zbGRfaXJfd2lkdGggPSAyLAotLy8gICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9waHkuc2xkX21mZ19pZCA9IDcwLAotLy8gICAgICAgICAgIGNwdV9qdGFnX2RlYnVnX21vZHVsZV9waHkuc2xkX3NpbV9hY3Rpb24gPSAiIiwKLS8vICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcGh5LnNsZF9zaW1fbl9zY2FuID0gMCwKLS8vICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcGh5LnNsZF9zaW1fdG90YWxfbGVuZ3RoID0gMCwKLS8vICAgICAgICAgICBjcHVfanRhZ19kZWJ1Z19tb2R1bGVfcGh5LnNsZF90eXBlX2lkID0gMzQsCi0vLyAgICAgICAgICAgY3B1X2p0YWdfZGVidWdfbW9kdWxlX3BoeS5zbGRfdmVyc2lvbiA9IDM7Ci0vLwotLy9zeW50aGVzaXMgcmVhZF9jb21tZW50c19hc19IREwgb2ZmCi0KLWVuZG1vZHVsZQotCi0KLS8qIFNMbGluZSAyMDQ5MCAiY3VzdG9tX2RtYS52IiAyICovCi0vKiBTTGxpbmUgMSAiY3VzdG9tX2RtYV9jbG9ja18wLnYiIDEgKi8KLS8vTGVnYWwgTm90aWNlOiAoQykyMDEwIEFsdGVyYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFlvdXIKLS8vdXNlIG9mIEFsdGVyYSBDb3Jwb3JhdGlvbidzIGRlc2lnbiB0b29scywgbG9naWMgZnVuY3Rpb25zIGFuZCBvdGhlcgotLy9zb2Z0d2FyZSBhbmQgdG9vbHMsIGFuZCBpdHMgQU1QUCBwYXJ0bmVyIGxvZ2ljIGZ1bmN0aW9ucywgYW5kIGFueQotLy9vdXRwdXQgZmlsZXMgYW55IG9mIHRoZSBmb3JlZ29pbmcgKGluY2x1ZGluZyBkZXZpY2UgcHJvZ3JhbW1pbmcgb3IKLS8vc2ltdWxhdGlvbiBmaWxlcyksIGFuZCBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIGFyZQotLy9leHByZXNzbHkgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEFsdGVyYSBQcm9ncmFtCi0vL0xpY2Vuc2UgU3Vic2NyaXB0aW9uIEFncmVlbWVudCBvciBvdGhlciBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50LAotLy9pbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgdGhhdCB5b3VyIHVzZSBpcyBmb3IgdGhlIHNvbGUgcHVycG9zZQotLy9vZiBwcm9ncmFtbWluZyBsb2dpYyBkZXZpY2VzIG1hbnVmYWN0dXJlZCBieSBBbHRlcmEgYW5kIHNvbGQgYnkgQWx0ZXJhCi0vL29yIGl0cyBhdXRob3JpemVkIGRpc3RyaWJ1dG9ycy4gIFBsZWFzZSByZWZlciB0byB0aGUgYXBwbGljYWJsZQotLy9hZ3JlZW1lbnQgZm9yIGZ1cnRoZXIgZGV0YWlscy4KLQotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLWB0aW1lc2NhbGUgMW5zIC8gMXBzCi0vLyBzeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3VzdG9tX2RtYV9jbG9ja18wX2VkZ2VfdG9fcHVsc2UgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX291dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGRhdGFfb3V0OwotICBpbnB1dCAgICAgICAgICAgIGNsb2NrOwotICBpbnB1dCAgICAgICAgICAgIGRhdGFfaW47Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLQotICByZWcgICAgICAgICAgICAgIGRhdGFfaW5fZDE7Ci0gIHdpcmUgICAgICAgICAgICAgZGF0YV9vdXQ7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xvY2sgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGRhdGFfaW5fZDEgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGRhdGFfaW5fZDEgPD0gZGF0YV9pbjsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBkYXRhX291dCA9IGRhdGFfaW4gXiBkYXRhX2luX2QxOwotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3VzdG9tX2RtYV9jbG9ja18wX3NsYXZlX0ZTTSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9yZWFkX2RvbmVfdG9rZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXN0ZXJfd3JpdGVfZG9uZV90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXZlX2NsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXZlX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGF2ZV9yZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xhdmVfd3JpdGUsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXZlX3JlYWRfcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXZlX3dhaXRyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xhdmVfd3JpdGVfcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgICAgICAgICAgc2xhdmVfcmVhZF9yZXF1ZXN0OwotICBvdXRwdXQgICAgICAgICAgIHNsYXZlX3dhaXRyZXF1ZXN0OwotICBvdXRwdXQgICAgICAgICAgIHNsYXZlX3dyaXRlX3JlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgbWFzdGVyX3JlYWRfZG9uZV90b2tlbjsKLSAgaW5wdXQgICAgICAgICAgICBtYXN0ZXJfd3JpdGVfZG9uZV90b2tlbjsKLSAgaW5wdXQgICAgICAgICAgICBzbGF2ZV9jbGs7Ci0gIGlucHV0ICAgICAgICAgICAgc2xhdmVfcmVhZDsKLSAgaW5wdXQgICAgICAgICAgICBzbGF2ZV9yZXNldF9uOwotICBpbnB1dCAgICAgICAgICAgIHNsYXZlX3dyaXRlOwotCi0gIHJlZyAgICAgICAgICAgICAgbmV4dF9zbGF2ZV9yZWFkX3JlcXVlc3Q7Ci0gIHJlZyAgICAgWyAgMjogMF0gbmV4dF9zbGF2ZV9zdGF0ZTsKLSAgcmVnICAgICAgICAgICAgICBuZXh0X3NsYXZlX3dyaXRlX3JlcXVlc3Q7Ci0gIHJlZyAgICAgICAgICAgICAgc2xhdmVfcmVhZF9yZXF1ZXN0OwotICByZWcgICAgIFsgIDI6IDBdIHNsYXZlX3N0YXRlOwotICByZWcgICAgICAgICAgICAgIHNsYXZlX3dhaXRyZXF1ZXN0OwotICByZWcgICAgICAgICAgICAgIHNsYXZlX3dyaXRlX3JlcXVlc3Q7Ci0gIGFsd2F5cyBAKHBvc2VkZ2Ugc2xhdmVfY2xrIG9yIG5lZ2VkZ2Ugc2xhdmVfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHNsYXZlX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBzbGF2ZV9yZWFkX3JlcXVlc3QgPD0gMDsKLSAgICAgIGVsc2UgaWYgKDEpCi0gICAgICAgICAgc2xhdmVfcmVhZF9yZXF1ZXN0IDw9IG5leHRfc2xhdmVfcmVhZF9yZXF1ZXN0OwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBzbGF2ZV9jbGsgb3IgbmVnZWRnZSBzbGF2ZV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAoc2xhdmVfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIHNsYXZlX3dyaXRlX3JlcXVlc3QgPD0gMDsKLSAgICAgIGVsc2UgaWYgKDEpCi0gICAgICAgICAgc2xhdmVfd3JpdGVfcmVxdWVzdCA8PSBuZXh0X3NsYXZlX3dyaXRlX3JlcXVlc3Q7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIHNsYXZlX2NsayBvciBuZWdlZGdlIHNsYXZlX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChzbGF2ZV9yZXNldF9uID09IDApCi0gICAgICAgICAgc2xhdmVfc3RhdGUgPD0gMydiMDAxOwotICAgICAgZWxzZSBpZiAoMSkKLSAgICAgICAgICBzbGF2ZV9zdGF0ZSA8PSBuZXh0X3NsYXZlX3N0YXRlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAobWFzdGVyX3JlYWRfZG9uZV90b2tlbiBvciBtYXN0ZXJfd3JpdGVfZG9uZV90b2tlbiBvciBzbGF2ZV9yZWFkIG9yIHNsYXZlX3JlYWRfcmVxdWVzdCBvciBzbGF2ZV9zdGF0ZSBvciBzbGF2ZV93cml0ZSBvciBzbGF2ZV93cml0ZV9yZXF1ZXN0KQotICAgIGJlZ2luCi0gICAgICBjYXNlIChzbGF2ZV9zdGF0ZSkgLy8gc3ludGhlc2lzIHBhcmFsbGVsX2Nhc2UKLSAgICAgIAotICAgICAgICAgIDMnYjAwMTogYmVnaW4KLSAgICAgICAgICAgICAgLy9yZWFkIHJlcXVlc3Q6IGdvIGZyb20gSURMRSBzdGF0ZSB0byBSRUFEX1dBSVQgc3RhdGUKLSAgICAgICAgICAgICAgaWYgKHNsYXZlX3JlYWQpCi0gICAgICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgICAgIG5leHRfc2xhdmVfc3RhdGUgPSAzJ2IwMTA7Ci0gICAgICAgICAgICAgICAgICBzbGF2ZV93YWl0cmVxdWVzdCA9IDE7Ci0gICAgICAgICAgICAgICAgICBuZXh0X3NsYXZlX3JlYWRfcmVxdWVzdCA9ICFzbGF2ZV9yZWFkX3JlcXVlc3Q7Ci0gICAgICAgICAgICAgICAgICBuZXh0X3NsYXZlX3dyaXRlX3JlcXVlc3QgPSBzbGF2ZV93cml0ZV9yZXF1ZXN0OwotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICBlbHNlIGlmIChzbGF2ZV93cml0ZSkKLSAgICAgICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAgICAgbmV4dF9zbGF2ZV9zdGF0ZSA9IDMnYjEwMDsKLSAgICAgICAgICAgICAgICAgIHNsYXZlX3dhaXRyZXF1ZXN0ID0gMTsKLSAgICAgICAgICAgICAgICAgIG5leHRfc2xhdmVfcmVhZF9yZXF1ZXN0ID0gc2xhdmVfcmVhZF9yZXF1ZXN0OwotICAgICAgICAgICAgICAgICAgbmV4dF9zbGF2ZV93cml0ZV9yZXF1ZXN0ID0gIXNsYXZlX3dyaXRlX3JlcXVlc3Q7Ci0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgICAgIG5leHRfc2xhdmVfc3RhdGUgPSBzbGF2ZV9zdGF0ZTsKLSAgICAgICAgICAgICAgICAgIHNsYXZlX3dhaXRyZXF1ZXN0ID0gMDsKLSAgICAgICAgICAgICAgICAgIG5leHRfc2xhdmVfcmVhZF9yZXF1ZXN0ID0gc2xhdmVfcmVhZF9yZXF1ZXN0OwotICAgICAgICAgICAgICAgICAgbmV4dF9zbGF2ZV93cml0ZV9yZXF1ZXN0ID0gc2xhdmVfd3JpdGVfcmVxdWVzdDsKLSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICBlbmQgLy8gMydiMDAxIAotICAgICAgCi0gICAgICAgICAgMydiMDEwOiBiZWdpbgotICAgICAgICAgICAgICAvL3N0YXkgaW4gUkVBRF9XQUlUIHN0YXRlIHVudGlsIG1hc3RlciBwYXNzZXMgcmVhZCBkb25lIHRva2VuCi0gICAgICAgICAgICAgIGlmIChtYXN0ZXJfcmVhZF9kb25lX3Rva2VuKQotICAgICAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICAgICBuZXh0X3NsYXZlX3N0YXRlID0gMydiMDAxOwotICAgICAgICAgICAgICAgICAgc2xhdmVfd2FpdHJlcXVlc3QgPSAwOwotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICAgICBuZXh0X3NsYXZlX3N0YXRlID0gMydiMDEwOwotICAgICAgICAgICAgICAgICAgc2xhdmVfd2FpdHJlcXVlc3QgPSAxOwotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICBuZXh0X3NsYXZlX3JlYWRfcmVxdWVzdCA9IHNsYXZlX3JlYWRfcmVxdWVzdDsKLSAgICAgICAgICAgICAgbmV4dF9zbGF2ZV93cml0ZV9yZXF1ZXN0ID0gc2xhdmVfd3JpdGVfcmVxdWVzdDsKLSAgICAgICAgICBlbmQgLy8gMydiMDEwIAotICAgICAgCi0gICAgICAgICAgMydiMTAwOiBiZWdpbgotICAgICAgICAgICAgICAvL3N0YXkgaW4gV1JJVEVfV0FJVCBzdGF0ZSB1bnRpbCBtYXN0ZXIgcGFzc2VzIHdyaXRlIGRvbmUgdG9rZW4KLSAgICAgICAgICAgICAgaWYgKG1hc3Rlcl93cml0ZV9kb25lX3Rva2VuKQotICAgICAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICAgICBuZXh0X3NsYXZlX3N0YXRlID0gMydiMDAxOwotICAgICAgICAgICAgICAgICAgc2xhdmVfd2FpdHJlcXVlc3QgPSAwOwotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICAgICBuZXh0X3NsYXZlX3N0YXRlID0gMydiMTAwOwotICAgICAgICAgICAgICAgICAgc2xhdmVfd2FpdHJlcXVlc3QgPSAxOwotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICBuZXh0X3NsYXZlX3JlYWRfcmVxdWVzdCA9IHNsYXZlX3JlYWRfcmVxdWVzdDsKLSAgICAgICAgICAgICAgbmV4dF9zbGF2ZV93cml0ZV9yZXF1ZXN0ID0gc2xhdmVfd3JpdGVfcmVxdWVzdDsKLSAgICAgICAgICBlbmQgLy8gMydiMTAwIAotICAgICAgCi0gICAgICAgICAgZGVmYXVsdDogYmVnaW4KLSAgICAgICAgICAgICAgbmV4dF9zbGF2ZV9zdGF0ZSA9IDMnYjAwMTsKLSAgICAgICAgICAgICAgc2xhdmVfd2FpdHJlcXVlc3QgPSAwOwotICAgICAgICAgICAgICBuZXh0X3NsYXZlX3JlYWRfcmVxdWVzdCA9IHNsYXZlX3JlYWRfcmVxdWVzdDsKLSAgICAgICAgICAgICAgbmV4dF9zbGF2ZV93cml0ZV9yZXF1ZXN0ID0gc2xhdmVfd3JpdGVfcmVxdWVzdDsKLSAgICAgICAgICBlbmQgLy8gZGVmYXVsdAotICAgICAgCi0gICAgICBlbmRjYXNlIC8vIHNsYXZlX3N0YXRlCi0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgY3VzdG9tX2RtYV9jbG9ja18wX21hc3Rlcl9GU00gKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9jbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyX3Jlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyX3dhaXRyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXZlX3JlYWRfcmVxdWVzdF90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGF2ZV93cml0ZV9yZXF1ZXN0X3Rva2VuLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9yZWFkX2RvbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl93cml0ZV9kb25lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgICAgICAgICAgbWFzdGVyX3JlYWQ7Ci0gIG91dHB1dCAgICAgICAgICAgbWFzdGVyX3JlYWRfZG9uZTsKLSAgb3V0cHV0ICAgICAgICAgICBtYXN0ZXJfd3JpdGU7Ci0gIG91dHB1dCAgICAgICAgICAgbWFzdGVyX3dyaXRlX2RvbmU7Ci0gIGlucHV0ICAgICAgICAgICAgbWFzdGVyX2NsazsKLSAgaW5wdXQgICAgICAgICAgICBtYXN0ZXJfcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICBtYXN0ZXJfd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgc2xhdmVfcmVhZF9yZXF1ZXN0X3Rva2VuOwotICBpbnB1dCAgICAgICAgICAgIHNsYXZlX3dyaXRlX3JlcXVlc3RfdG9rZW47Ci0KLSAgcmVnICAgICAgICAgICAgICBtYXN0ZXJfcmVhZDsKLSAgcmVnICAgICAgICAgICAgICBtYXN0ZXJfcmVhZF9kb25lOwotICByZWcgICAgIFsgIDI6IDBdIG1hc3Rlcl9zdGF0ZTsKLSAgcmVnICAgICAgICAgICAgICBtYXN0ZXJfd3JpdGU7Ci0gIHJlZyAgICAgICAgICAgICAgbWFzdGVyX3dyaXRlX2RvbmU7Ci0gIHJlZyAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfcmVhZDsKLSAgcmVnICAgICAgICAgICAgICBuZXh0X21hc3Rlcl9yZWFkX2RvbmU7Ci0gIHJlZyAgICAgWyAgMjogMF0gbmV4dF9tYXN0ZXJfc3RhdGU7Ci0gIHJlZyAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfd3JpdGU7Ci0gIHJlZyAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfd3JpdGVfZG9uZTsKLSAgYWx3YXlzIEAocG9zZWRnZSBtYXN0ZXJfY2xrIG9yIG5lZ2VkZ2UgbWFzdGVyX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtYXN0ZXJfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIG1hc3Rlcl9yZWFkX2RvbmUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKDEpCi0gICAgICAgICAgbWFzdGVyX3JlYWRfZG9uZSA8PSBuZXh0X21hc3Rlcl9yZWFkX2RvbmU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG1hc3Rlcl9jbGsgb3IgbmVnZWRnZSBtYXN0ZXJfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKG1hc3Rlcl9yZXNldF9uID09IDApCi0gICAgICAgICAgbWFzdGVyX3dyaXRlX2RvbmUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKDEpCi0gICAgICAgICAgbWFzdGVyX3dyaXRlX2RvbmUgPD0gbmV4dF9tYXN0ZXJfd3JpdGVfZG9uZTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgbWFzdGVyX2NsayBvciBuZWdlZGdlIG1hc3Rlcl9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobWFzdGVyX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBtYXN0ZXJfcmVhZCA8PSAwOwotICAgICAgZWxzZSBpZiAoMSkKLSAgICAgICAgICBtYXN0ZXJfcmVhZCA8PSBuZXh0X21hc3Rlcl9yZWFkOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBtYXN0ZXJfY2xrIG9yIG5lZ2VkZ2UgbWFzdGVyX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtYXN0ZXJfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIG1hc3Rlcl93cml0ZSA8PSAwOwotICAgICAgZWxzZSBpZiAoMSkKLSAgICAgICAgICBtYXN0ZXJfd3JpdGUgPD0gbmV4dF9tYXN0ZXJfd3JpdGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG1hc3Rlcl9jbGsgb3IgbmVnZWRnZSBtYXN0ZXJfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKG1hc3Rlcl9yZXNldF9uID09IDApCi0gICAgICAgICAgbWFzdGVyX3N0YXRlIDw9IDMnYjAwMTsKLSAgICAgIGVsc2UgaWYgKDEpCi0gICAgICAgICAgbWFzdGVyX3N0YXRlIDw9IG5leHRfbWFzdGVyX3N0YXRlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAobWFzdGVyX3JlYWQgb3IgbWFzdGVyX3JlYWRfZG9uZSBvciBtYXN0ZXJfc3RhdGUgb3IgbWFzdGVyX3dhaXRyZXF1ZXN0IG9yIG1hc3Rlcl93cml0ZSBvciBtYXN0ZXJfd3JpdGVfZG9uZSBvciBzbGF2ZV9yZWFkX3JlcXVlc3RfdG9rZW4gb3Igc2xhdmVfd3JpdGVfcmVxdWVzdF90b2tlbikKLSAgICBiZWdpbgotICAgICAgY2FzZSAobWFzdGVyX3N0YXRlKSAvLyBzeW50aGVzaXMgcGFyYWxsZWxfY2FzZQotICAgICAgCi0gICAgICAgICAgMydiMDAxOiBiZWdpbgotICAgICAgICAgICAgICAvL2lmIHJlYWQgcmVxdWVzdCB0b2tlbiBmcm9tIHNsYXZlIHRoZW4gZ290byBSRUFEX1dBSVQgc3RhdGUKLSAgICAgICAgICAgICAgaWYgKHNsYXZlX3JlYWRfcmVxdWVzdF90b2tlbikKLSAgICAgICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfc3RhdGUgPSAzJ2IwMTA7Ci0gICAgICAgICAgICAgICAgICBuZXh0X21hc3Rlcl9yZWFkID0gMTsKLSAgICAgICAgICAgICAgICAgIG5leHRfbWFzdGVyX3dyaXRlID0gMDsKLSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgZWxzZSBpZiAoc2xhdmVfd3JpdGVfcmVxdWVzdF90b2tlbikKLSAgICAgICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfc3RhdGUgPSAzJ2IxMDA7Ci0gICAgICAgICAgICAgICAgICBuZXh0X21hc3Rlcl9yZWFkID0gMDsKLSAgICAgICAgICAgICAgICAgIG5leHRfbWFzdGVyX3dyaXRlID0gMTsKLSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfc3RhdGUgPSBtYXN0ZXJfc3RhdGU7Ci0gICAgICAgICAgICAgICAgICBuZXh0X21hc3Rlcl9yZWFkID0gMDsKLSAgICAgICAgICAgICAgICAgIG5leHRfbWFzdGVyX3dyaXRlID0gMDsKLSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfcmVhZF9kb25lID0gbWFzdGVyX3JlYWRfZG9uZTsKLSAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfd3JpdGVfZG9uZSA9IG1hc3Rlcl93cml0ZV9kb25lOwotICAgICAgICAgIGVuZCAvLyAzJ2IwMDEgCi0gICAgICAKLSAgICAgICAgICAzJ2IwMTA6IGJlZ2luCi0gICAgICAgICAgICAgIC8vc3RheSBpbiBSRUFEX1dBSVQgc3RhdGUgdW50aWwgbWFzdGVyIHdhaXQgaXMgZGVhc3NlcnRlZAotICAgICAgICAgICAgICBpZiAoIW1hc3Rlcl93YWl0cmVxdWVzdCkKLSAgICAgICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfc3RhdGUgPSAzJ2IwMDE7Ci0gICAgICAgICAgICAgICAgICBuZXh0X21hc3Rlcl9yZWFkX2RvbmUgPSAhbWFzdGVyX3JlYWRfZG9uZTsKLSAgICAgICAgICAgICAgICAgIG5leHRfbWFzdGVyX3JlYWQgPSAwOwotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICAgICBuZXh0X21hc3Rlcl9zdGF0ZSA9IDMnYjAxMDsKLSAgICAgICAgICAgICAgICAgIG5leHRfbWFzdGVyX3JlYWRfZG9uZSA9IG1hc3Rlcl9yZWFkX2RvbmU7Ci0gICAgICAgICAgICAgICAgICBuZXh0X21hc3Rlcl9yZWFkID0gbWFzdGVyX3JlYWQ7Ci0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgIG5leHRfbWFzdGVyX3dyaXRlX2RvbmUgPSBtYXN0ZXJfd3JpdGVfZG9uZTsKLSAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfd3JpdGUgPSAwOwotICAgICAgICAgIGVuZCAvLyAzJ2IwMTAgCi0gICAgICAKLSAgICAgICAgICAzJ2IxMDA6IGJlZ2luCi0gICAgICAgICAgICAgIC8vc3RheSBpbiBXUklURV9XQUlUIHN0YXRlIHVudGlsIHNsYXZlIHdhaXQgaXMgZGVhc3NlcnRlZAotICAgICAgICAgICAgICBpZiAoIW1hc3Rlcl93YWl0cmVxdWVzdCkKLSAgICAgICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfc3RhdGUgPSAzJ2IwMDE7Ci0gICAgICAgICAgICAgICAgICBuZXh0X21hc3Rlcl93cml0ZSA9IDA7Ci0gICAgICAgICAgICAgICAgICBuZXh0X21hc3Rlcl93cml0ZV9kb25lID0gIW1hc3Rlcl93cml0ZV9kb25lOwotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgICAgIGJlZ2luCi0gICAgICAgICAgICAgICAgICBuZXh0X21hc3Rlcl9zdGF0ZSA9IDMnYjEwMDsKLSAgICAgICAgICAgICAgICAgIG5leHRfbWFzdGVyX3dyaXRlID0gbWFzdGVyX3dyaXRlOwotICAgICAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfd3JpdGVfZG9uZSA9IG1hc3Rlcl93cml0ZV9kb25lOwotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICBuZXh0X21hc3Rlcl9yZWFkX2RvbmUgPSBtYXN0ZXJfcmVhZF9kb25lOwotICAgICAgICAgICAgICBuZXh0X21hc3Rlcl9yZWFkID0gMDsKLSAgICAgICAgICBlbmQgLy8gMydiMTAwIAotICAgICAgCi0gICAgICAgICAgZGVmYXVsdDogYmVnaW4KLSAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfc3RhdGUgPSAzJ2IwMDE7Ci0gICAgICAgICAgICAgIG5leHRfbWFzdGVyX3dyaXRlID0gMDsKLSAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfd3JpdGVfZG9uZSA9IG1hc3Rlcl93cml0ZV9kb25lOwotICAgICAgICAgICAgICBuZXh0X21hc3Rlcl9yZWFkID0gMDsKLSAgICAgICAgICAgICAgbmV4dF9tYXN0ZXJfcmVhZF9kb25lID0gbWFzdGVyX3JlYWRfZG9uZTsKLSAgICAgICAgICBlbmQgLy8gZGVmYXVsdAotICAgICAgCi0gICAgICBlbmRjYXNlIC8vIG1hc3Rlcl9zdGF0ZQotICAgIGVuZAotCi0KLQotZW5kbW9kdWxlCi0KLQotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIGN1c3RvbV9kbWFfY2xvY2tfMF9iaXRfcGlwZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGsxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGsyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9jbGsxX24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X2NsazJfbiwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfb3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgICAgICAgICAgIGRhdGFfb3V0OwotICBpbnB1dCAgICAgICAgICAgIGNsazE7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrMjsKLSAgaW5wdXQgICAgICAgICAgICBkYXRhX2luOwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X2NsazFfbjsKLSAgaW5wdXQgICAgICAgICAgICByZXNldF9jbGsyX247Ci0KLSAgcmVnICAgICAgICAgICAgICBkYXRhX2luX2QxIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gInstdG8gXCIqXCJ9IENVVD1PTiA7IFBSRVNFUlZFX1JFR0lTVEVSPU9OIiAgKi87Ci0gIHJlZyAgICAgICAgICAgICAgZGF0YV9vdXQgLyogc3ludGhlc2lzIEFMVEVSQV9BVFRSSUJVVEUgPSAiUFJFU0VSVkVfUkVHSVNURVI9T04iICAqLzsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsxIG9yIG5lZ2VkZ2UgcmVzZXRfY2xrMV9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfY2xrMV9uID09IDApCi0gICAgICAgICAgZGF0YV9pbl9kMSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgZGF0YV9pbl9kMSA8PSBkYXRhX2luOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsyIG9yIG5lZ2VkZ2UgcmVzZXRfY2xrMl9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfY2xrMl9uID09IDApCi0gICAgICAgICAgZGF0YV9vdXQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGRhdGFfb3V0IDw9IGRhdGFfaW5fZDE7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi0vL0Nsb2NrIERvbWFpbiBDcm9zc2luZyBBZGFwdGVyY3VzdG9tX2RtYV9jbG9ja18wCi0KLQotbW9kdWxlIGN1c3RvbV9kbWFfY2xvY2tfMCAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXN0ZXJfY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXN0ZXJfZW5kb2ZwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyX3Jlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl93YWl0cmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xhdmVfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xhdmVfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xhdmVfY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGF2ZV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGF2ZV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGF2ZV9yZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGF2ZV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xhdmVfd3JpdGVkYXRhLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0cHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXN0ZXJfbmF0aXZlYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xhdmVfZW5kb2ZwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXZlX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGF2ZV93YWl0cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbICAzOiAwXSBtYXN0ZXJfYWRkcmVzczsKLSAgb3V0cHV0ICBbICAxOiAwXSBtYXN0ZXJfYnl0ZWVuYWJsZTsKLSAgb3V0cHV0ICBbICAyOiAwXSBtYXN0ZXJfbmF0aXZlYWRkcmVzczsKLSAgb3V0cHV0ICAgICAgICAgICBtYXN0ZXJfcmVhZDsKLSAgb3V0cHV0ICAgICAgICAgICBtYXN0ZXJfd3JpdGU7Ci0gIG91dHB1dCAgWyAxNTogMF0gbWFzdGVyX3dyaXRlZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBzbGF2ZV9lbmRvZnBhY2tldDsKLSAgb3V0cHV0ICBbIDE1OiAwXSBzbGF2ZV9yZWFkZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICBzbGF2ZV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICAgICAgICAgICBtYXN0ZXJfY2xrOwotICBpbnB1dCAgICAgICAgICAgIG1hc3Rlcl9lbmRvZnBhY2tldDsKLSAgaW5wdXQgICBbIDE1OiAwXSBtYXN0ZXJfcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgbWFzdGVyX3Jlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgbWFzdGVyX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgIFsgIDM6IDBdIHNsYXZlX2FkZHJlc3M7Ci0gIGlucHV0ICAgWyAgMTogMF0gc2xhdmVfYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBzbGF2ZV9jbGs7Ci0gIGlucHV0ICAgWyAgMjogMF0gc2xhdmVfbmF0aXZlYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBzbGF2ZV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIHNsYXZlX3Jlc2V0X247Ci0gIGlucHV0ICAgICAgICAgICAgc2xhdmVfd3JpdGU7Ci0gIGlucHV0ICAgWyAxNTogMF0gc2xhdmVfd3JpdGVkYXRhOwotCi0gIHJlZyAgICAgWyAgMzogMF0gbWFzdGVyX2FkZHJlc3MgLyogc3ludGhlc2lzIEFMVEVSQV9BVFRSSUJVVEUgPSAiUFJFU0VSVkVfUkVHSVNURVI9T04iICAqLzsKLSAgcmVnICAgICBbICAxOiAwXSBtYXN0ZXJfYnl0ZWVuYWJsZSAvKiBzeW50aGVzaXMgQUxURVJBX0FUVFJJQlVURSA9ICJQUkVTRVJWRV9SRUdJU1RFUj1PTiIgICovOwotICByZWcgICAgIFsgIDI6IDBdIG1hc3Rlcl9uYXRpdmVhZGRyZXNzIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIlBSRVNFUlZFX1JFR0lTVEVSPU9OIiAgKi87Ci0gIHdpcmUgICAgICAgICAgICAgbWFzdGVyX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgbWFzdGVyX3JlYWRfZG9uZTsKLSAgd2lyZSAgICAgICAgICAgICBtYXN0ZXJfcmVhZF9kb25lX3N5bmM7Ci0gIHdpcmUgICAgICAgICAgICAgbWFzdGVyX3JlYWRfZG9uZV90b2tlbjsKLSAgd2lyZSAgICAgICAgICAgICBtYXN0ZXJfd3JpdGU7Ci0gIHdpcmUgICAgICAgICAgICAgbWFzdGVyX3dyaXRlX2RvbmU7Ci0gIHdpcmUgICAgICAgICAgICAgbWFzdGVyX3dyaXRlX2RvbmVfc3luYzsKLSAgd2lyZSAgICAgICAgICAgICBtYXN0ZXJfd3JpdGVfZG9uZV90b2tlbjsKLSAgcmVnICAgICBbIDE1OiAwXSBtYXN0ZXJfd3JpdGVkYXRhIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gIlBSRVNFUlZFX1JFR0lTVEVSPU9OIiAgKi87Ci0gIHJlZyAgICAgWyAgMzogMF0gc2xhdmVfYWRkcmVzc19kMSAvKiBzeW50aGVzaXMgQUxURVJBX0FUVFJJQlVURSA9ICJ7LXRvIFwiKlwifSBDVVQ9T04gOyBQUkVTRVJWRV9SRUdJU1RFUj1PTiIgICovOwotICByZWcgICAgIFsgIDE6IDBdIHNsYXZlX2J5dGVlbmFibGVfZDEgLyogc3ludGhlc2lzIEFMVEVSQV9BVFRSSUJVVEUgPSAiey10byBcIipcIn0gQ1VUPU9OIDsgUFJFU0VSVkVfUkVHSVNURVI9T04iICAqLzsKLSAgd2lyZSAgICAgICAgICAgICBzbGF2ZV9lbmRvZnBhY2tldDsKLSAgcmVnICAgICBbICAyOiAwXSBzbGF2ZV9uYXRpdmVhZGRyZXNzX2QxIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gInstdG8gXCIqXCJ9IENVVD1PTiA7IFBSRVNFUlZFX1JFR0lTVEVSPU9OIiAgKi87Ci0gIHdpcmUgICAgICAgICAgICAgc2xhdmVfcmVhZF9yZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIHNsYXZlX3JlYWRfcmVxdWVzdF9zeW5jOwotICB3aXJlICAgICAgICAgICAgIHNsYXZlX3JlYWRfcmVxdWVzdF90b2tlbjsKLSAgcmVnICAgICBbIDE1OiAwXSBzbGF2ZV9yZWFkZGF0YSAvKiBzeW50aGVzaXMgQUxURVJBX0FUVFJJQlVURSA9ICJ7LWZyb20gXCIqXCJ9IENVVD1PTiIgICovOwotICByZWcgICAgIFsgMTU6IDBdIHNsYXZlX3JlYWRkYXRhX3AxOwotICB3aXJlICAgICAgICAgICAgIHNsYXZlX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIHNsYXZlX3dyaXRlX3JlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgc2xhdmVfd3JpdGVfcmVxdWVzdF9zeW5jOwotICB3aXJlICAgICAgICAgICAgIHNsYXZlX3dyaXRlX3JlcXVlc3RfdG9rZW47Ci0gIHJlZyAgICAgWyAxNTogMF0gc2xhdmVfd3JpdGVkYXRhX2QxIC8qIHN5bnRoZXNpcyBBTFRFUkFfQVRUUklCVVRFID0gInstdG8gXCIqXCJ9IENVVD1PTiA7IFBSRVNFUlZFX1JFR0lTVEVSPU9OIiAgKi87Ci0gIC8vaW4sIHdoaWNoIGlzIGFuIGVfYXZhbG9uX3NsYXZlCi0gIC8vb3V0LCB3aGljaCBpcyBhbiBlX2F2YWxvbl9tYXN0ZXIKLSAgYWx0ZXJhX3N0ZF9zeW5jaHJvbml6ZXIgdGhlX2FsdGVyYV9zdGRfc3luY2hyb25pemVyCi0gICAgKAotICAgICAgLmNsayAoc2xhdmVfY2xrKSwKLSAgICAgIC5kaW4gKG1hc3Rlcl9yZWFkX2RvbmUpLAotICAgICAgLmRvdXQgKG1hc3Rlcl9yZWFkX2RvbmVfc3luYyksCi0gICAgICAucmVzZXRfbiAoc2xhdmVfcmVzZXRfbikKLSAgICApOwotCi0gIGRlZnBhcmFtIHRoZV9hbHRlcmFfc3RkX3N5bmNocm9uaXplci5kZXB0aCA9IDI7Ci0KLSAgYWx0ZXJhX3N0ZF9zeW5jaHJvbml6ZXIgdGhlX2FsdGVyYV9zdGRfc3luY2hyb25pemVyMQotICAgICgKLSAgICAgIC5jbGsgKHNsYXZlX2NsayksCi0gICAgICAuZGluIChtYXN0ZXJfd3JpdGVfZG9uZSksCi0gICAgICAuZG91dCAobWFzdGVyX3dyaXRlX2RvbmVfc3luYyksCi0gICAgICAucmVzZXRfbiAoc2xhdmVfcmVzZXRfbikKLSAgICApOwotCi0gIGRlZnBhcmFtIHRoZV9hbHRlcmFfc3RkX3N5bmNocm9uaXplcjEuZGVwdGggPSAyOwotCi0gIC8vcmVhZF9kb25lX2VkZ2VfdG9fcHVsc2UsIHdoaWNoIGlzIGFuIGVfaW5zdGFuY2UKLSAgY3VzdG9tX2RtYV9jbG9ja18wX2VkZ2VfdG9fcHVsc2UgcmVhZF9kb25lX2VkZ2VfdG9fcHVsc2UKLSAgICAoCi0gICAgICAuY2xvY2sgICAgKHNsYXZlX2NsayksCi0gICAgICAuZGF0YV9pbiAgKG1hc3Rlcl9yZWFkX2RvbmVfc3luYyksCi0gICAgICAuZGF0YV9vdXQgKG1hc3Rlcl9yZWFkX2RvbmVfdG9rZW4pLAotICAgICAgLnJlc2V0X24gIChzbGF2ZV9yZXNldF9uKQotICAgICk7Ci0KLSAgLy93cml0ZV9kb25lX2VkZ2VfdG9fcHVsc2UsIHdoaWNoIGlzIGFuIGVfaW5zdGFuY2UKLSAgY3VzdG9tX2RtYV9jbG9ja18wX2VkZ2VfdG9fcHVsc2Ugd3JpdGVfZG9uZV9lZGdlX3RvX3B1bHNlCi0gICAgKAotICAgICAgLmNsb2NrICAgIChzbGF2ZV9jbGspLAotICAgICAgLmRhdGFfaW4gIChtYXN0ZXJfd3JpdGVfZG9uZV9zeW5jKSwKLSAgICAgIC5kYXRhX291dCAobWFzdGVyX3dyaXRlX2RvbmVfdG9rZW4pLAotICAgICAgLnJlc2V0X24gIChzbGF2ZV9yZXNldF9uKQotICAgICk7Ci0KLSAgLy9zbGF2ZV9GU00sIHdoaWNoIGlzIGFuIGVfaW5zdGFuY2UKLSAgY3VzdG9tX2RtYV9jbG9ja18wX3NsYXZlX0ZTTSBzbGF2ZV9GU00KLSAgICAoCi0gICAgICAubWFzdGVyX3JlYWRfZG9uZV90b2tlbiAgKG1hc3Rlcl9yZWFkX2RvbmVfdG9rZW4pLAotICAgICAgLm1hc3Rlcl93cml0ZV9kb25lX3Rva2VuIChtYXN0ZXJfd3JpdGVfZG9uZV90b2tlbiksCi0gICAgICAuc2xhdmVfY2xrICAgICAgICAgICAgICAgKHNsYXZlX2NsayksCi0gICAgICAuc2xhdmVfcmVhZCAgICAgICAgICAgICAgKHNsYXZlX3JlYWQpLAotICAgICAgLnNsYXZlX3JlYWRfcmVxdWVzdCAgICAgIChzbGF2ZV9yZWFkX3JlcXVlc3QpLAotICAgICAgLnNsYXZlX3Jlc2V0X24gICAgICAgICAgIChzbGF2ZV9yZXNldF9uKSwKLSAgICAgIC5zbGF2ZV93YWl0cmVxdWVzdCAgICAgICAoc2xhdmVfd2FpdHJlcXVlc3QpLAotICAgICAgLnNsYXZlX3dyaXRlICAgICAgICAgICAgIChzbGF2ZV93cml0ZSksCi0gICAgICAuc2xhdmVfd3JpdGVfcmVxdWVzdCAgICAgKHNsYXZlX3dyaXRlX3JlcXVlc3QpCi0gICAgKTsKLQotICBhbHRlcmFfc3RkX3N5bmNocm9uaXplciB0aGVfYWx0ZXJhX3N0ZF9zeW5jaHJvbml6ZXIyCi0gICAgKAotICAgICAgLmNsayAobWFzdGVyX2NsayksCi0gICAgICAuZGluIChzbGF2ZV9yZWFkX3JlcXVlc3QpLAotICAgICAgLmRvdXQgKHNsYXZlX3JlYWRfcmVxdWVzdF9zeW5jKSwKLSAgICAgIC5yZXNldF9uIChtYXN0ZXJfcmVzZXRfbikKLSAgICApOwotCi0gIGRlZnBhcmFtIHRoZV9hbHRlcmFfc3RkX3N5bmNocm9uaXplcjIuZGVwdGggPSAyOwotCi0gIGFsdGVyYV9zdGRfc3luY2hyb25pemVyIHRoZV9hbHRlcmFfc3RkX3N5bmNocm9uaXplcjMKLSAgICAoCi0gICAgICAuY2xrIChtYXN0ZXJfY2xrKSwKLSAgICAgIC5kaW4gKHNsYXZlX3dyaXRlX3JlcXVlc3QpLAotICAgICAgLmRvdXQgKHNsYXZlX3dyaXRlX3JlcXVlc3Rfc3luYyksCi0gICAgICAucmVzZXRfbiAobWFzdGVyX3Jlc2V0X24pCi0gICAgKTsKLQotICBkZWZwYXJhbSB0aGVfYWx0ZXJhX3N0ZF9zeW5jaHJvbml6ZXIzLmRlcHRoID0gMjsKLQotICAvL3JlYWRfcmVxdWVzdF9lZGdlX3RvX3B1bHNlLCB3aGljaCBpcyBhbiBlX2luc3RhbmNlCi0gIGN1c3RvbV9kbWFfY2xvY2tfMF9lZGdlX3RvX3B1bHNlIHJlYWRfcmVxdWVzdF9lZGdlX3RvX3B1bHNlCi0gICAgKAotICAgICAgLmNsb2NrICAgIChtYXN0ZXJfY2xrKSwKLSAgICAgIC5kYXRhX2luICAoc2xhdmVfcmVhZF9yZXF1ZXN0X3N5bmMpLAotICAgICAgLmRhdGFfb3V0IChzbGF2ZV9yZWFkX3JlcXVlc3RfdG9rZW4pLAotICAgICAgLnJlc2V0X24gIChtYXN0ZXJfcmVzZXRfbikKLSAgICApOwotCi0gIC8vd3JpdGVfcmVxdWVzdF9lZGdlX3RvX3B1bHNlLCB3aGljaCBpcyBhbiBlX2luc3RhbmNlCi0gIGN1c3RvbV9kbWFfY2xvY2tfMF9lZGdlX3RvX3B1bHNlIHdyaXRlX3JlcXVlc3RfZWRnZV90b19wdWxzZQotICAgICgKLSAgICAgIC5jbG9jayAgICAobWFzdGVyX2NsayksCi0gICAgICAuZGF0YV9pbiAgKHNsYXZlX3dyaXRlX3JlcXVlc3Rfc3luYyksCi0gICAgICAuZGF0YV9vdXQgKHNsYXZlX3dyaXRlX3JlcXVlc3RfdG9rZW4pLAotICAgICAgLnJlc2V0X24gIChtYXN0ZXJfcmVzZXRfbikKLSAgICApOwotCi0gIC8vbWFzdGVyX0ZTTSwgd2hpY2ggaXMgYW4gZV9pbnN0YW5jZQotICBjdXN0b21fZG1hX2Nsb2NrXzBfbWFzdGVyX0ZTTSBtYXN0ZXJfRlNNCi0gICAgKAotICAgICAgLm1hc3Rlcl9jbGsgICAgICAgICAgICAgICAgKG1hc3Rlcl9jbGspLAotICAgICAgLm1hc3Rlcl9yZWFkICAgICAgICAgICAgICAgKG1hc3Rlcl9yZWFkKSwKLSAgICAgIC5tYXN0ZXJfcmVhZF9kb25lICAgICAgICAgIChtYXN0ZXJfcmVhZF9kb25lKSwKLSAgICAgIC5tYXN0ZXJfcmVzZXRfbiAgICAgICAgICAgIChtYXN0ZXJfcmVzZXRfbiksCi0gICAgICAubWFzdGVyX3dhaXRyZXF1ZXN0ICAgICAgICAobWFzdGVyX3dhaXRyZXF1ZXN0KSwKLSAgICAgIC5tYXN0ZXJfd3JpdGUgICAgICAgICAgICAgIChtYXN0ZXJfd3JpdGUpLAotICAgICAgLm1hc3Rlcl93cml0ZV9kb25lICAgICAgICAgKG1hc3Rlcl93cml0ZV9kb25lKSwKLSAgICAgIC5zbGF2ZV9yZWFkX3JlcXVlc3RfdG9rZW4gIChzbGF2ZV9yZWFkX3JlcXVlc3RfdG9rZW4pLAotICAgICAgLnNsYXZlX3dyaXRlX3JlcXVlc3RfdG9rZW4gKHNsYXZlX3dyaXRlX3JlcXVlc3RfdG9rZW4pCi0gICAgKTsKLQotICAvL2VuZG9mcGFja2V0X2JpdF9waXBlLCB3aGljaCBpcyBhbiBlX2luc3RhbmNlCi0gIGN1c3RvbV9kbWFfY2xvY2tfMF9iaXRfcGlwZSBlbmRvZnBhY2tldF9iaXRfcGlwZQotICAgICgKLSAgICAgIC5jbGsxICAgICAgICAgKHNsYXZlX2NsayksCi0gICAgICAuY2xrMiAgICAgICAgIChtYXN0ZXJfY2xrKSwKLSAgICAgIC5kYXRhX2luICAgICAgKG1hc3Rlcl9lbmRvZnBhY2tldCksCi0gICAgICAuZGF0YV9vdXQgICAgIChzbGF2ZV9lbmRvZnBhY2tldCksCi0gICAgICAucmVzZXRfY2xrMV9uIChzbGF2ZV9yZXNldF9uKSwKLSAgICAgIC5yZXNldF9jbGsyX24gKG1hc3Rlcl9yZXNldF9uKQotICAgICk7Ci0KLSAgYWx3YXlzIEAocG9zZWRnZSBtYXN0ZXJfY2xrIG9yIG5lZ2VkZ2UgbWFzdGVyX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtYXN0ZXJfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIHNsYXZlX3JlYWRkYXRhX3AxIDw9IDA7Ci0gICAgICBlbHNlIGlmIChtYXN0ZXJfcmVhZCAmIH5tYXN0ZXJfd2FpdHJlcXVlc3QpCi0gICAgICAgICAgc2xhdmVfcmVhZGRhdGFfcDEgPD0gbWFzdGVyX3JlYWRkYXRhOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBzbGF2ZV9jbGsgb3IgbmVnZWRnZSBzbGF2ZV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAoc2xhdmVfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIHNsYXZlX3JlYWRkYXRhIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBzbGF2ZV9yZWFkZGF0YSA8PSBzbGF2ZV9yZWFkZGF0YV9wMTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2Ugc2xhdmVfY2xrIG9yIG5lZ2VkZ2Ugc2xhdmVfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHNsYXZlX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBzbGF2ZV93cml0ZWRhdGFfZDEgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIHNsYXZlX3dyaXRlZGF0YV9kMSA8PSBzbGF2ZV93cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG1hc3Rlcl9jbGsgb3IgbmVnZWRnZSBtYXN0ZXJfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKG1hc3Rlcl9yZXNldF9uID09IDApCi0gICAgICAgICAgbWFzdGVyX3dyaXRlZGF0YSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgbWFzdGVyX3dyaXRlZGF0YSA8PSBzbGF2ZV93cml0ZWRhdGFfZDE7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIHNsYXZlX2NsayBvciBuZWdlZGdlIHNsYXZlX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChzbGF2ZV9yZXNldF9uID09IDApCi0gICAgICAgICAgc2xhdmVfYWRkcmVzc19kMSA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgc2xhdmVfYWRkcmVzc19kMSA8PSBzbGF2ZV9hZGRyZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBtYXN0ZXJfY2xrIG9yIG5lZ2VkZ2UgbWFzdGVyX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtYXN0ZXJfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIG1hc3Rlcl9hZGRyZXNzIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBtYXN0ZXJfYWRkcmVzcyA8PSBzbGF2ZV9hZGRyZXNzX2QxOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBzbGF2ZV9jbGsgb3IgbmVnZWRnZSBzbGF2ZV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAoc2xhdmVfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIHNsYXZlX25hdGl2ZWFkZHJlc3NfZDEgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIHNsYXZlX25hdGl2ZWFkZHJlc3NfZDEgPD0gc2xhdmVfbmF0aXZlYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgbWFzdGVyX2NsayBvciBuZWdlZGdlIG1hc3Rlcl9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobWFzdGVyX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBtYXN0ZXJfbmF0aXZlYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgbWFzdGVyX25hdGl2ZWFkZHJlc3MgPD0gc2xhdmVfbmF0aXZlYWRkcmVzc19kMTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2Ugc2xhdmVfY2xrIG9yIG5lZ2VkZ2Ugc2xhdmVfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHNsYXZlX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBzbGF2ZV9ieXRlZW5hYmxlX2QxIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBzbGF2ZV9ieXRlZW5hYmxlX2QxIDw9IHNsYXZlX2J5dGVlbmFibGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG1hc3Rlcl9jbGsgb3IgbmVnZWRnZSBtYXN0ZXJfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKG1hc3Rlcl9yZXNldF9uID09IDApCi0gICAgICAgICAgbWFzdGVyX2J5dGVlbmFibGUgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIG1hc3Rlcl9ieXRlZW5hYmxlIDw9IHNsYXZlX2J5dGVlbmFibGVfZDE7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0vKiBTTGxpbmUgMjA0OTIgImN1c3RvbV9kbWEudiIgMiAqLwotLyogU0xsaW5lIDEgImN1c3RvbV9kbWFfYnVyc3RfMS52IiAxICovCi0vL0xlZ2FsIE5vdGljZTogKEMpMjAxMCBBbHRlcmEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBZb3VyCi0vL3VzZSBvZiBBbHRlcmEgQ29ycG9yYXRpb24ncyBkZXNpZ24gdG9vbHMsIGxvZ2ljIGZ1bmN0aW9ucyBhbmQgb3RoZXIKLS8vc29mdHdhcmUgYW5kIHRvb2xzLCBhbmQgaXRzIEFNUFAgcGFydG5lciBsb2dpYyBmdW5jdGlvbnMsIGFuZCBhbnkKLS8vb3V0cHV0IGZpbGVzIGFueSBvZiB0aGUgZm9yZWdvaW5nIChpbmNsdWRpbmcgZGV2aWNlIHByb2dyYW1taW5nIG9yCi0vL3NpbXVsYXRpb24gZmlsZXMpLCBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiBhcmUKLS8vZXhwcmVzc2x5IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBBbHRlcmEgUHJvZ3JhbQotLy9MaWNlbnNlIFN1YnNjcmlwdGlvbiBBZ3JlZW1lbnQgb3Igb3RoZXIgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudCwKLS8vaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIHRoYXQgeW91ciB1c2UgaXMgZm9yIHRoZSBzb2xlIHB1cnBvc2UKLS8vb2YgcHJvZ3JhbW1pbmcgbG9naWMgZGV2aWNlcyBtYW51ZmFjdHVyZWQgYnkgQWx0ZXJhIGFuZCBzb2xkIGJ5IEFsdGVyYQotLy9vciBpdHMgYXV0aG9yaXplZCBkaXN0cmlidXRvcnMuICBQbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2FibGUKLS8vYWdyZWVtZW50IGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi1gdGltZXNjYWxlIDFucyAvIDFwcwotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotLy8KLS8vQnVyc3QgYWRhcHRlciBwYXJhbWV0ZXJzOgotLy9hZGFwdGVyIGlzIG1hc3RlcmVkIGJ5OiBjcHUvaW5zdHJ1Y3Rpb25fbWFzdGVyCi0vL2FkYXB0ZXIgbWFzdGVyczogcGlwZWxpbmVfYnJpZGdlL3MxCi0vL2FzcF9kZWJ1ZzogMAotLy9ieXRlYWRkcl93aWR0aDogMTQKLS8vY2VpbF9kYXRhX3dpZHRoOiAzMgotLy9kYXRhX3dpZHRoOiAzMgotLy9kYnNfc2hpZnQ6IDAKLS8vZGJzX3Vwc3RyZWFtX2J1cnN0Y291bnRfd2lkdGg6IDQKLS8vZG93bnN0cmVhbV9hZGRyX3NoaWZ0OiAyCi0vL2Rvd25zdHJlYW1fYnVyc3Rjb3VudF93aWR0aDogMQotLy9kb3duc3RyZWFtX21heF9idXJzdGNvdW50OiAxCi0vL2Rvd25zdHJlYW1fcGlwZWxpbmU6IDEKLS8vZHluYW1pY19zbGF2ZTogMQotLy9tYXN0ZXJfYWx3YXlzX2J1cnN0X21heF9idXJzdDogMQotLy9tYXN0ZXJfYnVyc3Rfb25fYnVyc3RfYm91bmRhcmllc19vbmx5OiAwCi0vL21hc3Rlcl9kYXRhX3dpZHRoOiAzMgotLy9tYXN0ZXJfaW50ZXJsZWF2ZTogMAotLy9tYXN0ZXJfbGluZXdyYXBfYnVyc3RzOiAxCi0vL25hdGl2ZWFkZHJfd2lkdGg6IDEyCi0vL3NsYXZlX2Fsd2F5c19idXJzdF9tYXhfYnVyc3Q6IDAKLS8vc2xhdmVfYnVyc3Rfb25fYnVyc3RfYm91bmRhcmllc19vbmx5OiAwCi0vL3NsYXZlX2ludGVybGVhdmU6IDAKLS8vc2xhdmVfbGluZXdyYXBfYnVyc3RzOiAwCi0vL3Vwc3RyZWFtX2J1cnN0Y291bnQ6IDQnaDgKLS8vdXBzdHJlYW1fYnVyc3Rjb3VudF93aWR0aDogNAotLy91cHN0cmVhbV9tYXhfYnVyc3Rjb3VudDogOAotLy96ZXJvX2FkZHJlc3Nfd2lkdGg6IDAKLQotCi1tb2R1bGUgY3VzdG9tX2RtYV9idXJzdF8xICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duc3RyZWFtX3dhaXRyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fbmF0aXZlYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3dyaXRlZGF0YSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fd2FpdHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAxMTogMF0gcmVnX2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgb3V0cHV0ICBbICAzOiAwXSByZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICBvdXRwdXQgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIG91dHB1dCAgWyAgMzogMF0gcmVnX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgb3V0cHV0ICAgICAgICAgICByZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICBbIDExOiAwXSByZWdfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3JlYWQ7Ci0gIG91dHB1dCAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotICBvdXRwdXQgIFsgMzE6IDBdIHVwc3RyZWFtX3JlYWRkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHVwc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIG91dHB1dCAgICAgICAgICAgdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgMzE6IDBdIGRvd25zdHJlYW1fcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICBpbnB1dCAgICAgICAgICAgIGRvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICBbIDEzOiAwXSB1cHN0cmVhbV9hZGRyZXNzOwotICBpbnB1dCAgIFsgIDM6IDBdIHVwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIGlucHV0ICAgICAgICAgICAgdXBzdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIGlucHV0ICAgWyAxMTogMF0gdXBzdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICB1cHN0cmVhbV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIHVwc3RyZWFtX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIHVwc3RyZWFtX3dyaXRlZGF0YTsKLQotICB3aXJlICAgIFsgIDI6IDBdIGFkZHJlc3Nfb2Zmc2V0OwotICByZWcgICAgICAgICAgICAgIGF0b21pY19jb3VudGVyOwotICB3aXJlICAgIFsgIDI6IDBdIGJ1cnN0X29mZnNldDsKLSAgd2lyZSAgICBbIDEzOiAwXSBjdXJyZW50X3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VycmVudF91cHN0cmVhbV9idXJzdGNvdW50OwotICB3aXJlICAgICAgICAgICAgIGN1cnJlbnRfdXBzdHJlYW1fcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXJyZW50X3Vwc3RyZWFtX3dyaXRlOwotICByZWcgICAgIFsgIDM6IDBdIGRhdGFfY291bnRlcjsKLSAgd2lyZSAgICBbICAzOiAwXSBkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbIDExOiAwXSBkb3duc3RyZWFtX2FkZHJlc3M7Ci0gIHdpcmUgICAgWyAxMzogMF0gZG93bnN0cmVhbV9hZGRyZXNzX2Jhc2U7Ci0gIHdpcmUgICAgWyAgMzogMF0gZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX2J1cnN0ZG9uZTsKLSAgd2lyZSAgICBbICAzOiAwXSBkb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICBbIDExOiAwXSBkb3duc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIHJlZyAgICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgICAgICAgICAgZG93bnN0cmVhbV93cml0ZV9yZWc7Ci0gIHdpcmUgICAgWyAzMTogMF0gZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgZW5hYmxlX3N0YXRlX2NoYW5nZTsKLSAgd2lyZSAgICAgICAgICAgICBmaWZvX2VtcHR5OwotICB3aXJlICAgICAgICAgICAgIG1heF9idXJzdF9zaXplOwotICB3aXJlICAgICAgICAgICAgIHAxX2F0b21pY19jb3VudGVyOwotICB3aXJlICAgICAgICAgICAgIHAxX2ZpZm9fZW1wdHk7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfc3RhdGVfYnVzeTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9zdGF0ZV9pZGxlOwotICB3aXJlICAgICAgICAgICAgIHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fcmVhZDsKLSAgcmVnICAgICAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnOwotICB3aXJlICAgICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgICAgICAgICAgcGVuZGluZ191cHN0cmVhbV93cml0ZV9yZWc7Ci0gIHJlZyAgICAgWyAgMjogMF0gcmVhZF9hZGRyZXNzX29mZnNldDsKLSAgd2lyZSAgICAgICAgICAgICByZWFkX3VwZGF0ZV9jb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSByZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICByZWcgICAgIFsgMTE6IDBdIHJlZ19kb3duc3RyZWFtX2FkZHJlc3M7Ci0gIHJlZyAgICAgWyAgMzogMF0gcmVnX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZTsKLSAgcmVnICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9idXJzdGNvdW50OwotICByZWcgICAgIFsgIDM6IDBdIHJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHJlZyAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIHJlZyAgICAgWyAxMTogMF0gcmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgcmVnICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9yZWFkOwotICByZWcgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlOwotICByZWcgICAgIFsgMzE6IDBdIHJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgcmVnICAgICBbICAzOiAwXSByZWdpc3RlcmVkX3JlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHJlZyAgICAgWyAxMzogMF0gcmVnaXN0ZXJlZF91cHN0cmVhbV9hZGRyZXNzOwotICByZWcgICAgIFsgIDM6IDBdIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgcmVnICAgICBbICAzOiAwXSByZWdpc3RlcmVkX3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHJlZyAgICAgWyAxMTogMF0gcmVnaXN0ZXJlZF91cHN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICByZWcgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fcmVhZDsKLSAgcmVnICAgICAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3dyaXRlOwotICByZWcgICAgICAgICAgICAgIHN0YXRlX2J1c3k7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhdGVfaWRsZTsKLSAgd2lyZSAgICAgICAgICAgICBzeW5jX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gdHJhbnNhY3Rpb25zX3JlbWFpbmluZzsKLSAgcmVnICAgICBbICAzOiAwXSB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZzsKLSAgd2lyZSAgICAgICAgICAgICB1cGRhdGVfY291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fYnVyc3Rkb25lOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3JlYWRfcnVuOwotICB3aXJlICAgIFsgMzE6IDBdIHVwc3RyZWFtX3JlYWRkYXRhOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fd3JpdGVfcnVuOwotICByZWcgICAgIFsgIDI6IDBdIHdyaXRlX2FkZHJlc3Nfb2Zmc2V0OwotICB3aXJlICAgICAgICAgICAgIHdyaXRlX3VwZGF0ZV9jb3VudDsKLSAgYXNzaWduIHN5bmNfbmF0aXZlYWRkcmVzcyA9IHx1cHN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICAvL2Rvd25zdHJlYW0sIHdoaWNoIGlzIGFuIGVfYXZhbG9uX21hc3RlcgotICAvL3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2F2YWxvbl9zbGF2ZQotICBhc3NpZ24gdXBzdHJlYW1fYnVyc3Rkb25lID0gY3VycmVudF91cHN0cmVhbV9yZWFkID8gKHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPT0gZG93bnN0cmVhbV9idXJzdGNvdW50KSAmIGRvd25zdHJlYW1fcmVhZCAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0IDogKHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPT0gKGF0b21pY19jb3VudGVyICsgMSkpICYgZG93bnN0cmVhbV93cml0ZSAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBhc3NpZ24gcDFfYXRvbWljX2NvdW50ZXIgPSBhdG9taWNfY291bnRlciArIChkb3duc3RyZWFtX3JlYWQgPyBkb3duc3RyZWFtX2J1cnN0Y291bnQgOiAxKTsKLSAgYXNzaWduIGRvd25zdHJlYW1fYnVyc3Rkb25lID0gKGRvd25zdHJlYW1fcmVhZCB8IGRvd25zdHJlYW1fd3JpdGUpICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QgJiAocDFfYXRvbWljX2NvdW50ZXIgPT0gZG93bnN0cmVhbV9idXJzdGNvdW50KTsKLSAgYXNzaWduIGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50ID0gcGVuZGluZ19yZWdpc3Rlcl9lbmFibGUgPyByZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDogcmVnaXN0ZXJlZF9yZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICBhc3NpZ24gcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA9IDQnaDg7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3JlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA8PSByZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgYXNzaWduIHAxX3N0YXRlX2lkbGUgPSBzdGF0ZV9pZGxlICYgfnVwc3RyZWFtX3JlYWQgJiB+dXBzdHJlYW1fd3JpdGUgfCBzdGF0ZV9idXN5ICYgKGRhdGFfY291bnRlciA9PSAwKSAmIHAxX2ZpZm9fZW1wdHkgJiB+cGVuZGluZ191cHN0cmVhbV9yZWFkICYgfnBlbmRpbmdfdXBzdHJlYW1fd3JpdGU7Ci0gIGFzc2lnbiBwMV9zdGF0ZV9idXN5ID0gc3RhdGVfaWRsZSAmICh1cHN0cmVhbV9yZWFkIHwgdXBzdHJlYW1fd3JpdGUpIHwgc3RhdGVfYnVzeSAmICh+KGRhdGFfY291bnRlciA9PSAwKSB8IH5wMV9maWZvX2VtcHR5IHwgcGVuZGluZ191cHN0cmVhbV9yZWFkIHwgcGVuZGluZ191cHN0cmVhbV93cml0ZSk7Ci0gIGFzc2lnbiBlbmFibGVfc3RhdGVfY2hhbmdlID0gfihkb3duc3RyZWFtX3JlYWQgfCBkb3duc3RyZWFtX3dyaXRlKSB8IH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcGVuZGluZ191cHN0cmVhbV9yZWFkX3JlZyA8PSAwOwotICAgICAgZWxzZSBpZiAodXBzdHJlYW1fcmVhZCAmIHN0YXRlX2lkbGUpCi0gICAgICAgICAgcGVuZGluZ191cHN0cmVhbV9yZWFkX3JlZyA8PSAtMTsKLSAgICAgIGVsc2UgaWYgKHVwc3RyZWFtX2J1cnN0ZG9uZSkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnIDw9IDA7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcGVuZGluZ191cHN0cmVhbV93cml0ZV9yZWcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHVwc3RyZWFtX2J1cnN0ZG9uZSkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZyA8PSAwOwotICAgICAgZWxzZSBpZiAodXBzdHJlYW1fd3JpdGUgJiAoc3RhdGVfaWRsZSB8IH51cHN0cmVhbV93YWl0cmVxdWVzdCkpCi0gICAgICAgICAgcGVuZGluZ191cHN0cmVhbV93cml0ZV9yZWcgPD0gLTE7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhdGVfaWRsZSA8PSAxOwotICAgICAgZWxzZSBpZiAoZW5hYmxlX3N0YXRlX2NoYW5nZSkKLSAgICAgICAgICBzdGF0ZV9pZGxlIDw9IHAxX3N0YXRlX2lkbGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhdGVfYnVzeSA8PSAwOwotICAgICAgZWxzZSBpZiAoZW5hYmxlX3N0YXRlX2NoYW5nZSkKLSAgICAgICAgICBzdGF0ZV9idXN5IDw9IHAxX3N0YXRlX2J1c3k7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gcGVuZGluZ191cHN0cmVhbV9yZWFkID0gcGVuZGluZ191cHN0cmVhbV9yZWFkX3JlZzsKLSAgYXNzaWduIHBlbmRpbmdfdXBzdHJlYW1fd3JpdGUgPSBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZyAmIH51cHN0cmVhbV9idXJzdGRvbmU7Ci0gIGFzc2lnbiBwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSA9IHN0YXRlX2lkbGUgfCAoKHVwc3RyZWFtX3JlYWQgfCB1cHN0cmVhbV93cml0ZSkgJiB+dXBzdHJlYW1fd2FpdHJlcXVlc3QpOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9yZWFkIDw9IDA7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3JlYWQgPD0gdXBzdHJlYW1fcmVhZDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3dyaXRlIDw9IDA7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3dyaXRlIDw9IHVwc3RyZWFtX3dyaXRlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA8PSAwOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9idXJzdGNvdW50IDw9IDQnaDg7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9hZGRyZXNzIDw9IDA7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2FkZHJlc3MgPD0gdXBzdHJlYW1fYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX25hdGl2ZWFkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fbmF0aXZlYWRkcmVzcyA8PSB1cHN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICAgIGVuZAotCi0KLSAgYXNzaWduIGN1cnJlbnRfdXBzdHJlYW1fcmVhZCA9IHJlZ2lzdGVyZWRfdXBzdHJlYW1fcmVhZCAmICFkb3duc3RyZWFtX3dyaXRlOwotICBhc3NpZ24gY3VycmVudF91cHN0cmVhbV93cml0ZSA9IHJlZ2lzdGVyZWRfdXBzdHJlYW1fd3JpdGU7Ci0gIGFzc2lnbiBjdXJyZW50X3Vwc3RyZWFtX2FkZHJlc3MgPSByZWdpc3RlcmVkX3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIGFzc2lnbiBjdXJyZW50X3Vwc3RyZWFtX2J1cnN0Y291bnQgPSBwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSA/IDQnaDggOiByZWdpc3RlcmVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBhdG9taWNfY291bnRlciA8PSAwOwotICAgICAgZWxzZSBpZiAoKGRvd25zdHJlYW1fcmVhZCB8IGRvd25zdHJlYW1fd3JpdGUpICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgYXRvbWljX2NvdW50ZXIgPD0gZG93bnN0cmVhbV9idXJzdGRvbmUgPyAwIDogcDFfYXRvbWljX2NvdW50ZXI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gcmVhZF91cGRhdGVfY291bnQgPSBjdXJyZW50X3Vwc3RyZWFtX3JlYWQgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdDsKLSAgYXNzaWduIHdyaXRlX3VwZGF0ZV9jb3VudCA9IGN1cnJlbnRfdXBzdHJlYW1fd3JpdGUgJiBkb3duc3RyZWFtX3dyaXRlICYgZG93bnN0cmVhbV9idXJzdGRvbmU7Ci0gIGFzc2lnbiB1cGRhdGVfY291bnQgPSByZWFkX3VwZGF0ZV9jb3VudCB8IHdyaXRlX3VwZGF0ZV9jb3VudDsKLSAgYXNzaWduIHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPSAoc3RhdGVfaWRsZSAmICh1cHN0cmVhbV9yZWFkIHwgdXBzdHJlYW1fd3JpdGUpKSA/IGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDogdHJhbnNhY3Rpb25zX3JlbWFpbmluZ19yZWc7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgdHJhbnNhY3Rpb25zX3JlbWFpbmluZ19yZWcgPD0gKHN0YXRlX2lkbGUgJiAodXBzdHJlYW1fcmVhZCB8IHVwc3RyZWFtX3dyaXRlKSkgPyBkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA6IHVwZGF0ZV9jb3VudCA/IHRyYW5zYWN0aW9uc19yZW1haW5pbmdfcmVnIC0gZG93bnN0cmVhbV9idXJzdGNvdW50IDogdHJhbnNhY3Rpb25zX3JlbWFpbmluZ19yZWc7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZGF0YV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkYXRhX2NvdW50ZXIgPD0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3JlYWQgJiB+dXBzdHJlYW1fd2FpdHJlcXVlc3QgPyAgZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgOiBkb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQgPyBkYXRhX2NvdW50ZXIgLSAxIDogZGF0YV9jb3VudGVyOwotICAgIGVuZAotCi0KLSAgYXNzaWduIG1heF9idXJzdF9zaXplID0gMTsKLSAgYXNzaWduIGRvd25zdHJlYW1fYnVyc3Rjb3VudCA9ICh0cmFuc2FjdGlvbnNfcmVtYWluaW5nID4gbWF4X2J1cnN0X3NpemUpID8gbWF4X2J1cnN0X3NpemUgOiB0cmFuc2FjdGlvbnNfcmVtYWluaW5nOwotICBhc3NpZ24gZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlID0gY3VycmVudF91cHN0cmVhbV9yZWFkID8gKGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50KSA6IGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgd3JpdGVfYWRkcmVzc19vZmZzZXQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIHdyaXRlX2FkZHJlc3Nfb2Zmc2V0IDw9IHN0YXRlX2lkbGUgJiB1cHN0cmVhbV93cml0ZSA/IDAgOiAoKGRvd25zdHJlYW1fd3JpdGUgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCAmIGRvd25zdHJlYW1fYnVyc3Rkb25lKSkgPyB3cml0ZV9hZGRyZXNzX29mZnNldCArIGRvd25zdHJlYW1fYnVyc3Rjb3VudCA6IHdyaXRlX2FkZHJlc3Nfb2Zmc2V0OwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlYWRfYWRkcmVzc19vZmZzZXQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIHJlYWRfYWRkcmVzc19vZmZzZXQgPD0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3JlYWQgPyAwIDogKGRvd25zdHJlYW1fcmVhZCAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KSA/IHJlYWRfYWRkcmVzc19vZmZzZXQgKyBkb3duc3RyZWFtX2J1cnN0Y291bnQgOiByZWFkX2FkZHJlc3Nfb2Zmc2V0OwotICAgIGVuZAotCi0KLSAgYXNzaWduIGRvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyA9IHJlZ2lzdGVyZWRfdXBzdHJlYW1fbmF0aXZlYWRkcmVzcyA+PiAyOwotICBhc3NpZ24gYWRkcmVzc19vZmZzZXQgPSBjdXJyZW50X3Vwc3RyZWFtX3JlYWQgPyByZWFkX2FkZHJlc3Nfb2Zmc2V0IDogd3JpdGVfYWRkcmVzc19vZmZzZXQ7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2FkZHJlc3NfYmFzZSA9IGN1cnJlbnRfdXBzdHJlYW1fYWRkcmVzczsKLSAgYXNzaWduIGJ1cnN0X29mZnNldCA9IGRvd25zdHJlYW1fYWRkcmVzc19iYXNlWzQgOiAyXSArIGFkZHJlc3Nfb2Zmc2V0OwotICBhc3NpZ24gZG93bnN0cmVhbV9hZGRyZXNzID0ge2Rvd25zdHJlYW1fYWRkcmVzc19iYXNlWzEzIDogNV0sCi0gICAgYnVyc3Rfb2Zmc2V0LAotICAgIDInYjAwfTsKLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZG93bnN0cmVhbV9yZWFkIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV9yZWFkIHwgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgZG93bnN0cmVhbV9yZWFkIDw9IHN0YXRlX2lkbGUgJiB1cHN0cmVhbV9yZWFkID8gMSA6ICh0cmFuc2FjdGlvbnNfcmVtYWluaW5nID09IGRvd25zdHJlYW1fYnVyc3Rjb3VudCkgPyAwIDogZG93bnN0cmVhbV9yZWFkOwotICAgIGVuZAotCi0KLSAgYXNzaWduIHVwc3RyZWFtX3JlYWRkYXRhdmFsaWQgPSBkb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIGFzc2lnbiB1cHN0cmVhbV9yZWFkZGF0YSA9IGRvd25zdHJlYW1fcmVhZGRhdGE7Ci0gIGFzc2lnbiBmaWZvX2VtcHR5ID0gMTsKLSAgYXNzaWduIHAxX2ZpZm9fZW1wdHkgPSAxOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZG93bnN0cmVhbV93cml0ZV9yZWcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dyaXRlX3JlZyB8IH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIGRvd25zdHJlYW1fd3JpdGVfcmVnIDw9IHN0YXRlX2lkbGUgJiB1cHN0cmVhbV93cml0ZSA/IDEgOiAoKHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPT0gZG93bnN0cmVhbV9idXJzdGNvdW50KSAmIGRvd25zdHJlYW1fYnVyc3Rkb25lKSA/IDAgOiBkb3duc3RyZWFtX3dyaXRlX3JlZzsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2J5dGVlbmFibGUgPD0gNCdiMTExMTsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnl0ZWVuYWJsZSA8PSB1cHN0cmVhbV9ieXRlZW5hYmxlOwotICAgIGVuZAotCi0KLSAgYXNzaWduIGRvd25zdHJlYW1fd3JpdGUgPSBkb3duc3RyZWFtX3dyaXRlX3JlZyAmIHVwc3RyZWFtX3dyaXRlICYgIWRvd25zdHJlYW1fcmVhZDsKLSAgYXNzaWduIGRvd25zdHJlYW1fYnl0ZWVuYWJsZSA9IGRvd25zdHJlYW1fd3JpdGVfcmVnID8gdXBzdHJlYW1fYnl0ZWVuYWJsZSA6IHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgYXNzaWduIGRvd25zdHJlYW1fd3JpdGVkYXRhID0gdXBzdHJlYW1fd3JpdGVkYXRhOwotICBhc3NpZ24gdXBzdHJlYW1fcmVhZF9ydW4gPSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZDsKLSAgYXNzaWduIHVwc3RyZWFtX3dyaXRlX3J1biA9IHN0YXRlX2J1c3kgJiB1cHN0cmVhbV93cml0ZSAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ICYgIWRvd25zdHJlYW1fcmVhZDsKLSAgYXNzaWduIHVwc3RyZWFtX3dhaXRyZXF1ZXN0ID0gKHVwc3RyZWFtX3JlYWQgfCBjdXJyZW50X3Vwc3RyZWFtX3JlYWQpID8gfnVwc3RyZWFtX3JlYWRfcnVuIDogY3VycmVudF91cHN0cmVhbV93cml0ZSA/IH51cHN0cmVhbV93cml0ZV9ydW4gOiAxOwotICBhc3NpZ24gZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyA9IHVwc3RyZWFtX2RlYnVnYWNjZXNzOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYWRkcmVzcyA8PSBkb3duc3RyZWFtX2FkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZSA8PSBkb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYnVyc3Rjb3VudCA8PSBkb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZSA8PSBkb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2RlYnVnYWNjZXNzIDw9IGRvd25zdHJlYW1fZGVidWdhY2Nlc3M7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcyA8PSBkb3duc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fcmVhZCA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fcmVhZCA8PSBkb3duc3RyZWFtX3JlYWQ7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlIDw9IGRvd25zdHJlYW1fd3JpdGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV93cml0ZWRhdGEgPD0gZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotCi1lbmRtb2R1bGUKLQotCi0vKiBTTGxpbmUgMjA0OTMgImN1c3RvbV9kbWEudiIgMiAqLwotLyogU0xsaW5lIDEgInRpbWVzdGFtcF90aW1lci52IiAxICovCi0vL0xlZ2FsIE5vdGljZTogKEMpMjAxMCBBbHRlcmEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBZb3VyCi0vL3VzZSBvZiBBbHRlcmEgQ29ycG9yYXRpb24ncyBkZXNpZ24gdG9vbHMsIGxvZ2ljIGZ1bmN0aW9ucyBhbmQgb3RoZXIKLS8vc29mdHdhcmUgYW5kIHRvb2xzLCBhbmQgaXRzIEFNUFAgcGFydG5lciBsb2dpYyBmdW5jdGlvbnMsIGFuZCBhbnkKLS8vb3V0cHV0IGZpbGVzIGFueSBvZiB0aGUgZm9yZWdvaW5nIChpbmNsdWRpbmcgZGV2aWNlIHByb2dyYW1taW5nIG9yCi0vL3NpbXVsYXRpb24gZmlsZXMpLCBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiBhcmUKLS8vZXhwcmVzc2x5IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBBbHRlcmEgUHJvZ3JhbQotLy9MaWNlbnNlIFN1YnNjcmlwdGlvbiBBZ3JlZW1lbnQgb3Igb3RoZXIgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudCwKLS8vaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIHRoYXQgeW91ciB1c2UgaXMgZm9yIHRoZSBzb2xlIHB1cnBvc2UKLS8vb2YgcHJvZ3JhbW1pbmcgbG9naWMgZGV2aWNlcyBtYW51ZmFjdHVyZWQgYnkgQWx0ZXJhIGFuZCBzb2xkIGJ5IEFsdGVyYQotLy9vciBpdHMgYXV0aG9yaXplZCBkaXN0cmlidXRvcnMuICBQbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2FibGUKLS8vYWdyZWVtZW50IGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi1gdGltZXNjYWxlIDFucyAvIDFwcwotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotbW9kdWxlIHRpbWVzdGFtcF90aW1lciAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlwc2VsZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlZGF0YSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGlycSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGRhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgICAgICAgICAgaXJxOwotICBvdXRwdXQgIFsgMTU6IDBdIHJlYWRkYXRhOwotICBpbnB1dCAgIFsgIDI6IDBdIGFkZHJlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgY2hpcHNlbGVjdDsKLSAgaW5wdXQgICAgICAgICAgICBjbGs7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICB3cml0ZV9uOwotICBpbnB1dCAgIFsgMTU6IDBdIHdyaXRlZGF0YTsKLQotICB3aXJlICAgICAgICAgICAgIGNsa19lbjsKLSAgd2lyZSAgICAgICAgICAgICBjb250cm9sX2NvbnRpbnVvdXM7Ci0gIHdpcmUgICAgICAgICAgICAgY29udHJvbF9pbnRlcnJ1cHRfZW5hYmxlOwotICByZWcgICAgIFsgIDM6IDBdIGNvbnRyb2xfcmVnaXN0ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgY29udHJvbF93cl9zdHJvYmU7Ci0gIHJlZyAgICAgICAgICAgICAgY291bnRlcl9pc19ydW5uaW5nOwotICB3aXJlICAgICAgICAgICAgIGNvdW50ZXJfaXNfemVybzsKLSAgd2lyZSAgICBbIDMxOiAwXSBjb3VudGVyX2xvYWRfdmFsdWU7Ci0gIHJlZyAgICAgWyAzMTogMF0gY291bnRlcl9zbmFwc2hvdDsKLSAgcmVnICAgICAgICAgICAgICBkZWxheWVkX3VueGNvdW50ZXJfaXNfemVyb3h4MDsKLSAgd2lyZSAgICAgICAgICAgICBkb19zdGFydF9jb3VudGVyOwotICB3aXJlICAgICAgICAgICAgIGRvX3N0b3BfY291bnRlcjsKLSAgcmVnICAgICAgICAgICAgICBmb3JjZV9yZWxvYWQ7Ci0gIHJlZyAgICAgWyAzMTogMF0gaW50ZXJuYWxfY291bnRlcjsKLSAgd2lyZSAgICAgICAgICAgICBpcnE7Ci0gIHJlZyAgICAgWyAxNTogMF0gcGVyaW9kX2hfcmVnaXN0ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcGVyaW9kX2hfd3Jfc3Ryb2JlOwotICByZWcgICAgIFsgMTU6IDBdIHBlcmlvZF9sX3JlZ2lzdGVyOwotICB3aXJlICAgICAgICAgICAgIHBlcmlvZF9sX3dyX3N0cm9iZTsKLSAgd2lyZSAgICBbIDE1OiAwXSByZWFkX211eF9vdXQ7Ci0gIHJlZyAgICAgWyAxNTogMF0gcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgc25hcF9oX3dyX3N0cm9iZTsKLSAgd2lyZSAgICAgICAgICAgICBzbmFwX2xfd3Jfc3Ryb2JlOwotICB3aXJlICAgIFsgMzE6IDBdIHNuYXBfcmVhZF92YWx1ZTsKLSAgd2lyZSAgICAgICAgICAgICBzbmFwX3N0cm9iZTsKLSAgd2lyZSAgICAgICAgICAgICBzdGFydF9zdHJvYmU7Ci0gIHdpcmUgICAgICAgICAgICAgc3RhdHVzX3dyX3N0cm9iZTsKLSAgd2lyZSAgICAgICAgICAgICBzdG9wX3N0cm9iZTsKLSAgd2lyZSAgICAgICAgICAgICB0aW1lb3V0X2V2ZW50OwotICByZWcgICAgICAgICAgICAgIHRpbWVvdXRfb2NjdXJyZWQ7Ci0gIGFzc2lnbiBjbGtfZW4gPSAxOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgaW50ZXJuYWxfY291bnRlciA8PSAzMidoM0U3OwotICAgICAgZWxzZSBpZiAoY291bnRlcl9pc19ydW5uaW5nIHx8IGZvcmNlX3JlbG9hZCkKLSAgICAgICAgICBpZiAoY291bnRlcl9pc196ZXJvICAgIHx8IGZvcmNlX3JlbG9hZCkKLSAgICAgICAgICAgICAgaW50ZXJuYWxfY291bnRlciA8PSBjb3VudGVyX2xvYWRfdmFsdWU7Ci0gICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIGludGVybmFsX2NvdW50ZXIgPD0gaW50ZXJuYWxfY291bnRlciAtIDE7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gY291bnRlcl9pc196ZXJvID0gaW50ZXJuYWxfY291bnRlciA9PSAwOwotICBhc3NpZ24gY291bnRlcl9sb2FkX3ZhbHVlID0ge3BlcmlvZF9oX3JlZ2lzdGVyLAotICAgIHBlcmlvZF9sX3JlZ2lzdGVyfTsKLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZm9yY2VfcmVsb2FkIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGtfZW4pCi0gICAgICAgICAgZm9yY2VfcmVsb2FkIDw9IHBlcmlvZF9oX3dyX3N0cm9iZSB8fCBwZXJpb2RfbF93cl9zdHJvYmU7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gZG9fc3RhcnRfY291bnRlciA9IHN0YXJ0X3N0cm9iZTsKLSAgYXNzaWduIGRvX3N0b3BfY291bnRlciA9IChzdG9wX3N0cm9iZSAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8Ci0gICAgKGZvcmNlX3JlbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwKLSAgICAoY291bnRlcl9pc196ZXJvICYmIH5jb250cm9sX2NvbnRpbnVvdXMgKTsKLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY291bnRlcl9pc19ydW5uaW5nIDw9IDEnYjA7Ci0gICAgICBlbHNlIGlmIChjbGtfZW4pCi0gICAgICAgICAgaWYgKGRvX3N0YXJ0X2NvdW50ZXIpCi0gICAgICAgICAgICAgIGNvdW50ZXJfaXNfcnVubmluZyA8PSAtMTsKLSAgICAgICAgICBlbHNlIGlmIChkb19zdG9wX2NvdW50ZXIpCi0gICAgICAgICAgICAgIGNvdW50ZXJfaXNfcnVubmluZyA8PSAwOwotICAgIGVuZAotCi0KLSAgLy9kZWxheWVkX3VueGNvdW50ZXJfaXNfemVyb3h4MCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZGVsYXllZF91bnhjb3VudGVyX2lzX3plcm94eDAgPD0gMDsKLSAgICAgIGVsc2UgaWYgKGNsa19lbikKLSAgICAgICAgICBkZWxheWVkX3VueGNvdW50ZXJfaXNfemVyb3h4MCA8PSBjb3VudGVyX2lzX3plcm87Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gdGltZW91dF9ldmVudCA9IChjb3VudGVyX2lzX3plcm8pICYgfihkZWxheWVkX3VueGNvdW50ZXJfaXNfemVyb3h4MCk7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICB0aW1lb3V0X29jY3VycmVkIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjbGtfZW4pCi0gICAgICAgICAgaWYgKHN0YXR1c193cl9zdHJvYmUpCi0gICAgICAgICAgICAgIHRpbWVvdXRfb2NjdXJyZWQgPD0gMDsKLSAgICAgICAgICBlbHNlIGlmICh0aW1lb3V0X2V2ZW50KQotICAgICAgICAgICAgICB0aW1lb3V0X29jY3VycmVkIDw9IC0xOwotICAgIGVuZAotCi0KLSAgYXNzaWduIGlycSA9IHRpbWVvdXRfb2NjdXJyZWQgJiYgY29udHJvbF9pbnRlcnJ1cHRfZW5hYmxlOwotICAvL3MxLCB3aGljaCBpcyBhbiBlX2F2YWxvbl9zbGF2ZQotICBhc3NpZ24gcmVhZF9tdXhfb3V0ID0gKHsxNiB7KGFkZHJlc3MgPT0gMil9fSAmIHBlcmlvZF9sX3JlZ2lzdGVyKSB8Ci0gICAgKHsxNiB7KGFkZHJlc3MgPT0gMyl9fSAmIHBlcmlvZF9oX3JlZ2lzdGVyKSB8Ci0gICAgKHsxNiB7KGFkZHJlc3MgPT0gNCl9fSAmIHNuYXBfcmVhZF92YWx1ZVsxNSA6IDBdKSB8Ci0gICAgKHsxNiB7KGFkZHJlc3MgPT0gNSl9fSAmIHNuYXBfcmVhZF92YWx1ZVszMSA6IDE2XSkgfAotICAgICh7MTYgeyhhZGRyZXNzID09IDEpfX0gJiBjb250cm9sX3JlZ2lzdGVyKSB8Ci0gICAgKHsxNiB7KGFkZHJlc3MgPT0gMCl9fSAmIHtjb3VudGVyX2lzX3J1bm5pbmcsCi0gICAgdGltZW91dF9vY2N1cnJlZH0pOwotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWFkZGF0YSA8PSAwOwotICAgICAgZWxzZSBpZiAoY2xrX2VuKQotICAgICAgICAgIHJlYWRkYXRhIDw9IHJlYWRfbXV4X291dDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBwZXJpb2RfbF93cl9zdHJvYmUgPSBjaGlwc2VsZWN0ICYmIH53cml0ZV9uICYmIChhZGRyZXNzID09IDIpOwotICBhc3NpZ24gcGVyaW9kX2hfd3Jfc3Ryb2JlID0gY2hpcHNlbGVjdCAmJiB+d3JpdGVfbiAmJiAoYWRkcmVzcyA9PSAzKTsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHBlcmlvZF9sX3JlZ2lzdGVyIDw9IDk5OTsKLSAgICAgIGVsc2UgaWYgKHBlcmlvZF9sX3dyX3N0cm9iZSkKLSAgICAgICAgICBwZXJpb2RfbF9yZWdpc3RlciA8PSB3cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcGVyaW9kX2hfcmVnaXN0ZXIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlcmlvZF9oX3dyX3N0cm9iZSkKLSAgICAgICAgICBwZXJpb2RfaF9yZWdpc3RlciA8PSB3cml0ZWRhdGE7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gc25hcF9sX3dyX3N0cm9iZSA9IGNoaXBzZWxlY3QgJiYgfndyaXRlX24gJiYgKGFkZHJlc3MgPT0gNCk7Ci0gIGFzc2lnbiBzbmFwX2hfd3Jfc3Ryb2JlID0gY2hpcHNlbGVjdCAmJiB+d3JpdGVfbiAmJiAoYWRkcmVzcyA9PSA1KTsKLSAgYXNzaWduIHNuYXBfc3Ryb2JlID0gc25hcF9sX3dyX3N0cm9iZSB8fCBzbmFwX2hfd3Jfc3Ryb2JlOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgY291bnRlcl9zbmFwc2hvdCA8PSAwOwotICAgICAgZWxzZSBpZiAoc25hcF9zdHJvYmUpCi0gICAgICAgICAgY291bnRlcl9zbmFwc2hvdCA8PSBpbnRlcm5hbF9jb3VudGVyOwotICAgIGVuZAotCi0KLSAgYXNzaWduIHNuYXBfcmVhZF92YWx1ZSA9IGNvdW50ZXJfc25hcHNob3Q7Ci0gIGFzc2lnbiBjb250cm9sX3dyX3N0cm9iZSA9IGNoaXBzZWxlY3QgJiYgfndyaXRlX24gJiYgKGFkZHJlc3MgPT0gMSk7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBjb250cm9sX3JlZ2lzdGVyIDw9IDA7Ci0gICAgICBlbHNlIGlmIChjb250cm9sX3dyX3N0cm9iZSkKLSAgICAgICAgICBjb250cm9sX3JlZ2lzdGVyIDw9IHdyaXRlZGF0YVszIDogMF07Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gc3RvcF9zdHJvYmUgPSB3cml0ZWRhdGFbM10gJiYgY29udHJvbF93cl9zdHJvYmU7Ci0gIGFzc2lnbiBzdGFydF9zdHJvYmUgPSB3cml0ZWRhdGFbMl0gJiYgY29udHJvbF93cl9zdHJvYmU7Ci0gIGFzc2lnbiBjb250cm9sX2NvbnRpbnVvdXMgPSBjb250cm9sX3JlZ2lzdGVyWzFdOwotICBhc3NpZ24gY29udHJvbF9pbnRlcnJ1cHRfZW5hYmxlID0gY29udHJvbF9yZWdpc3RlcjsKLSAgYXNzaWduIHN0YXR1c193cl9zdHJvYmUgPSBjaGlwc2VsZWN0ICYmIH53cml0ZV9uICYmIChhZGRyZXNzID09IDApOwotCi1lbmRtb2R1bGUKLQotCi0vKiBTTGxpbmUgMjA0OTQgImN1c3RvbV9kbWEudiIgMiAqLwotLyogU0xsaW5lIDEgImN1c3RvbV9kbWFfYnVyc3RfMy52IiAxICovCi0vL0xlZ2FsIE5vdGljZTogKEMpMjAxMCBBbHRlcmEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBZb3VyCi0vL3VzZSBvZiBBbHRlcmEgQ29ycG9yYXRpb24ncyBkZXNpZ24gdG9vbHMsIGxvZ2ljIGZ1bmN0aW9ucyBhbmQgb3RoZXIKLS8vc29mdHdhcmUgYW5kIHRvb2xzLCBhbmQgaXRzIEFNUFAgcGFydG5lciBsb2dpYyBmdW5jdGlvbnMsIGFuZCBhbnkKLS8vb3V0cHV0IGZpbGVzIGFueSBvZiB0aGUgZm9yZWdvaW5nIChpbmNsdWRpbmcgZGV2aWNlIHByb2dyYW1taW5nIG9yCi0vL3NpbXVsYXRpb24gZmlsZXMpLCBhbmQgYW55IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpbmZvcm1hdGlvbiBhcmUKLS8vZXhwcmVzc2x5IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBBbHRlcmEgUHJvZ3JhbQotLy9MaWNlbnNlIFN1YnNjcmlwdGlvbiBBZ3JlZW1lbnQgb3Igb3RoZXIgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudCwKLS8vaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIHRoYXQgeW91ciB1c2UgaXMgZm9yIHRoZSBzb2xlIHB1cnBvc2UKLS8vb2YgcHJvZ3JhbW1pbmcgbG9naWMgZGV2aWNlcyBtYW51ZmFjdHVyZWQgYnkgQWx0ZXJhIGFuZCBzb2xkIGJ5IEFsdGVyYQotLy9vciBpdHMgYXV0aG9yaXplZCBkaXN0cmlidXRvcnMuICBQbGVhc2UgcmVmZXIgdG8gdGhlIGFwcGxpY2FibGUKLS8vYWdyZWVtZW50IGZvciBmdXJ0aGVyIGRldGFpbHMuCi0KLS8vIHN5bnRoZXNpcyB0cmFuc2xhdGVfb2ZmCi1gdGltZXNjYWxlIDFucyAvIDFwcwotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vbgotCi0vLyB0dXJuIG9mZiBzdXBlcmZsdW91cyB2ZXJpbG9nIHByb2Nlc3NvciB3YXJuaW5ncyAKLS8vIGFsdGVyYSBtZXNzYWdlX2xldmVsIExldmVsMSAKLS8vIGFsdGVyYSBtZXNzYWdlX29mZiAxMDAzNCAxMDAzNSAxMDAzNiAxMDAzNyAxMDIzMCAxMDI0MCAxMDAzMCAKLQotLy8KLS8vQnVyc3QgYWRhcHRlciBwYXJhbWV0ZXJzOgotLy9hZGFwdGVyIGlzIG1hc3RlcmVkIGJ5OiBjcHUvaW5zdHJ1Y3Rpb25fbWFzdGVyCi0vL2FkYXB0ZXIgbWFzdGVyczogZGRyX3NkcmFtL3MxCi0vL2FzcF9kZWJ1ZzogMAotLy9ieXRlYWRkcl93aWR0aDogMjcKLS8vY2VpbF9kYXRhX3dpZHRoOiAzMgotLy9kYXRhX3dpZHRoOiAzMgotLy9kYnNfc2hpZnQ6IDAKLS8vZGJzX3Vwc3RyZWFtX2J1cnN0Y291bnRfd2lkdGg6IDQKLS8vZG93bnN0cmVhbV9hZGRyX3NoaWZ0OiAyCi0vL2Rvd25zdHJlYW1fYnVyc3Rjb3VudF93aWR0aDogMwotLy9kb3duc3RyZWFtX21heF9idXJzdGNvdW50OiA0Ci0vL2Rvd25zdHJlYW1fcGlwZWxpbmU6IDEKLS8vZHluYW1pY19zbGF2ZTogMQotLy9tYXN0ZXJfYWx3YXlzX2J1cnN0X21heF9idXJzdDogMQotLy9tYXN0ZXJfYnVyc3Rfb25fYnVyc3RfYm91bmRhcmllc19vbmx5OiAwCi0vL21hc3Rlcl9kYXRhX3dpZHRoOiAzMgotLy9tYXN0ZXJfaW50ZXJsZWF2ZTogMAotLy9tYXN0ZXJfbGluZXdyYXBfYnVyc3RzOiAxCi0vL25hdGl2ZWFkZHJfd2lkdGg6IDI1Ci0vL3NsYXZlX2Fsd2F5c19idXJzdF9tYXhfYnVyc3Q6IDAKLS8vc2xhdmVfYnVyc3Rfb25fYnVyc3RfYm91bmRhcmllc19vbmx5OiAwCi0vL3NsYXZlX2ludGVybGVhdmU6IDAKLS8vc2xhdmVfbGluZXdyYXBfYnVyc3RzOiAxCi0vL3Vwc3RyZWFtX2J1cnN0Y291bnQ6IDQnaDgKLS8vdXBzdHJlYW1fYnVyc3Rjb3VudF93aWR0aDogNAotLy91cHN0cmVhbV9tYXhfYnVyc3Rjb3VudDogOAotLy96ZXJvX2FkZHJlc3Nfd2lkdGg6IDAKLQotCi1tb2R1bGUgY3VzdG9tX2RtYV9idXJzdF8zICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duc3RyZWFtX3dhaXRyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fbmF0aXZlYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3dyaXRlZGF0YSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fd2FpdHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKQotOwotCi0gIG91dHB1dCAgWyAyNDogMF0gcmVnX2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgb3V0cHV0ICBbICAzOiAwXSByZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICBvdXRwdXQgIFsgIDI6IDBdIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIG91dHB1dCAgWyAgMzogMF0gcmVnX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgb3V0cHV0ICAgICAgICAgICByZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICBbIDI0OiAwXSByZWdfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3JlYWQ7Ci0gIG91dHB1dCAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotICBvdXRwdXQgIFsgMzE6IDBdIHVwc3RyZWFtX3JlYWRkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHVwc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIG91dHB1dCAgICAgICAgICAgdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgIFsgMzE6IDBdIGRvd25zdHJlYW1fcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICBpbnB1dCAgICAgICAgICAgIGRvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICBbIDI2OiAwXSB1cHN0cmVhbV9hZGRyZXNzOwotICBpbnB1dCAgIFsgIDM6IDBdIHVwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIGlucHV0ICAgICAgICAgICAgdXBzdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIGlucHV0ICAgWyAyNDogMF0gdXBzdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICB1cHN0cmVhbV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIHVwc3RyZWFtX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIHVwc3RyZWFtX3dyaXRlZGF0YTsKLQotICB3aXJlICAgIFsgIDI6IDBdIGFkZHJlc3Nfb2Zmc2V0OwotICByZWcgICAgIFsgIDI6IDBdIGF0b21pY19jb3VudGVyOwotICB3aXJlICAgIFsgIDI6IDBdIGJ1cnN0X29mZnNldDsKLSAgd2lyZSAgICBbIDI2OiAwXSBjdXJyZW50X3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gY3VycmVudF91cHN0cmVhbV9idXJzdGNvdW50OwotICB3aXJlICAgICAgICAgICAgIGN1cnJlbnRfdXBzdHJlYW1fcmVhZDsKLSAgd2lyZSAgICAgICAgICAgICBjdXJyZW50X3Vwc3RyZWFtX3dyaXRlOwotICByZWcgICAgIFsgIDM6IDBdIGRhdGFfY291bnRlcjsKLSAgd2lyZSAgICBbICAzOiAwXSBkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbIDI0OiAwXSBkb3duc3RyZWFtX2FkZHJlc3M7Ci0gIHdpcmUgICAgWyAyNjogMF0gZG93bnN0cmVhbV9hZGRyZXNzX2Jhc2U7Ci0gIHdpcmUgICAgWyAgMzogMF0gZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICB3aXJlICAgIFsgIDI6IDBdIGRvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX2J1cnN0ZG9uZTsKLSAgd2lyZSAgICBbICAzOiAwXSBkb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICBbIDI0OiAwXSBkb3duc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIHJlZyAgICAgICAgICAgICAgZG93bnN0cmVhbV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgICAgICAgICAgZG93bnN0cmVhbV93cml0ZV9yZWc7Ci0gIHdpcmUgICAgWyAzMTogMF0gZG93bnN0cmVhbV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgZW5hYmxlX3N0YXRlX2NoYW5nZTsKLSAgd2lyZSAgICAgICAgICAgICBmaWZvX2VtcHR5OwotICB3aXJlICAgIFsgIDM6IDBdIGludGVybGVhdmVfZW5kOwotICB3aXJlICAgIFsgIDI6IDBdIG1heF9idXJzdF9zaXplOwotICB3aXJlICAgIFsgIDI6IDBdIHAxX2F0b21pY19jb3VudGVyOwotICB3aXJlICAgICAgICAgICAgIHAxX2ZpZm9fZW1wdHk7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfc3RhdGVfYnVzeTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9zdGF0ZV9pZGxlOwotICB3aXJlICAgICAgICAgICAgIHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fcmVhZDsKLSAgcmVnICAgICAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnOwotICB3aXJlICAgICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgICAgICAgICAgcGVuZGluZ191cHN0cmVhbV93cml0ZV9yZWc7Ci0gIHJlZyAgICAgWyAgMjogMF0gcmVhZF9hZGRyZXNzX29mZnNldDsKLSAgd2lyZSAgICAgICAgICAgICByZWFkX3VwZGF0ZV9jb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSByZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICByZWcgICAgIFsgMjQ6IDBdIHJlZ19kb3duc3RyZWFtX2FkZHJlc3M7Ci0gIHJlZyAgICAgWyAgMzogMF0gcmVnX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZTsKLSAgcmVnICAgICBbICAyOiAwXSByZWdfZG93bnN0cmVhbV9idXJzdGNvdW50OwotICByZWcgICAgIFsgIDM6IDBdIHJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHJlZyAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIHJlZyAgICAgWyAyNDogMF0gcmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgcmVnICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9yZWFkOwotICByZWcgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlOwotICByZWcgICAgIFsgMzE6IDBdIHJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgcmVnICAgICBbICAzOiAwXSByZWdpc3RlcmVkX3JlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHJlZyAgICAgWyAyNjogMF0gcmVnaXN0ZXJlZF91cHN0cmVhbV9hZGRyZXNzOwotICByZWcgICAgIFsgIDM6IDBdIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgcmVnICAgICBbICAzOiAwXSByZWdpc3RlcmVkX3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIHJlZyAgICAgWyAyNDogMF0gcmVnaXN0ZXJlZF91cHN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICByZWcgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fcmVhZDsKLSAgcmVnICAgICAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3dyaXRlOwotICByZWcgICAgICAgICAgICAgIHN0YXRlX2J1c3k7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhdGVfaWRsZTsKLSAgd2lyZSAgICAgICAgICAgICBzeW5jX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAgMzogMF0gdHJhbnNhY3Rpb25zX3JlbWFpbmluZzsKLSAgcmVnICAgICBbICAzOiAwXSB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZzsKLSAgd2lyZSAgICAgICAgICAgICB1cGRhdGVfY291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fYnVyc3Rkb25lOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3JlYWRfcnVuOwotICB3aXJlICAgIFsgMzE6IDBdIHVwc3RyZWFtX3JlYWRkYXRhOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fd3JpdGVfcnVuOwotICByZWcgICAgIFsgIDI6IDBdIHdyaXRlX2FkZHJlc3Nfb2Zmc2V0OwotICB3aXJlICAgICAgICAgICAgIHdyaXRlX3VwZGF0ZV9jb3VudDsKLSAgYXNzaWduIHN5bmNfbmF0aXZlYWRkcmVzcyA9IHx1cHN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICAvL2Rvd25zdHJlYW0sIHdoaWNoIGlzIGFuIGVfYXZhbG9uX21hc3RlcgotICAvL3Vwc3RyZWFtLCB3aGljaCBpcyBhbiBlX2F2YWxvbl9zbGF2ZQotICBhc3NpZ24gdXBzdHJlYW1fYnVyc3Rkb25lID0gY3VycmVudF91cHN0cmVhbV9yZWFkID8gKHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPT0gZG93bnN0cmVhbV9idXJzdGNvdW50KSAmIGRvd25zdHJlYW1fcmVhZCAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0IDogKHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPT0gKGF0b21pY19jb3VudGVyICsgMSkpICYgZG93bnN0cmVhbV93cml0ZSAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBhc3NpZ24gcDFfYXRvbWljX2NvdW50ZXIgPSBhdG9taWNfY291bnRlciArIChkb3duc3RyZWFtX3JlYWQgPyBkb3duc3RyZWFtX2J1cnN0Y291bnQgOiAxKTsKLSAgYXNzaWduIGRvd25zdHJlYW1fYnVyc3Rkb25lID0gKGRvd25zdHJlYW1fcmVhZCB8IGRvd25zdHJlYW1fd3JpdGUpICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QgJiAocDFfYXRvbWljX2NvdW50ZXIgPT0gZG93bnN0cmVhbV9idXJzdGNvdW50KTsKLSAgYXNzaWduIGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50ID0gcGVuZGluZ19yZWdpc3Rlcl9lbmFibGUgPyByZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDogcmVnaXN0ZXJlZF9yZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICBhc3NpZ24gcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA9IDQnaDg7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3JlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA8PSByZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgYXNzaWduIHAxX3N0YXRlX2lkbGUgPSBzdGF0ZV9pZGxlICYgfnVwc3RyZWFtX3JlYWQgJiB+dXBzdHJlYW1fd3JpdGUgfCBzdGF0ZV9idXN5ICYgKGRhdGFfY291bnRlciA9PSAwKSAmIHAxX2ZpZm9fZW1wdHkgJiB+cGVuZGluZ191cHN0cmVhbV9yZWFkICYgfnBlbmRpbmdfdXBzdHJlYW1fd3JpdGU7Ci0gIGFzc2lnbiBwMV9zdGF0ZV9idXN5ID0gc3RhdGVfaWRsZSAmICh1cHN0cmVhbV9yZWFkIHwgdXBzdHJlYW1fd3JpdGUpIHwgc3RhdGVfYnVzeSAmICh+KGRhdGFfY291bnRlciA9PSAwKSB8IH5wMV9maWZvX2VtcHR5IHwgcGVuZGluZ191cHN0cmVhbV9yZWFkIHwgcGVuZGluZ191cHN0cmVhbV93cml0ZSk7Ci0gIGFzc2lnbiBlbmFibGVfc3RhdGVfY2hhbmdlID0gfihkb3duc3RyZWFtX3JlYWQgfCBkb3duc3RyZWFtX3dyaXRlKSB8IH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcGVuZGluZ191cHN0cmVhbV9yZWFkX3JlZyA8PSAwOwotICAgICAgZWxzZSBpZiAodXBzdHJlYW1fcmVhZCAmIHN0YXRlX2lkbGUpCi0gICAgICAgICAgcGVuZGluZ191cHN0cmVhbV9yZWFkX3JlZyA8PSAtMTsKLSAgICAgIGVsc2UgaWYgKHVwc3RyZWFtX2J1cnN0ZG9uZSkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnIDw9IDA7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcGVuZGluZ191cHN0cmVhbV93cml0ZV9yZWcgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHVwc3RyZWFtX2J1cnN0ZG9uZSkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZyA8PSAwOwotICAgICAgZWxzZSBpZiAodXBzdHJlYW1fd3JpdGUgJiAoc3RhdGVfaWRsZSB8IH51cHN0cmVhbV93YWl0cmVxdWVzdCkpCi0gICAgICAgICAgcGVuZGluZ191cHN0cmVhbV93cml0ZV9yZWcgPD0gLTE7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhdGVfaWRsZSA8PSAxOwotICAgICAgZWxzZSBpZiAoZW5hYmxlX3N0YXRlX2NoYW5nZSkKLSAgICAgICAgICBzdGF0ZV9pZGxlIDw9IHAxX3N0YXRlX2lkbGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgc3RhdGVfYnVzeSA8PSAwOwotICAgICAgZWxzZSBpZiAoZW5hYmxlX3N0YXRlX2NoYW5nZSkKLSAgICAgICAgICBzdGF0ZV9idXN5IDw9IHAxX3N0YXRlX2J1c3k7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gcGVuZGluZ191cHN0cmVhbV9yZWFkID0gcGVuZGluZ191cHN0cmVhbV9yZWFkX3JlZzsKLSAgYXNzaWduIHBlbmRpbmdfdXBzdHJlYW1fd3JpdGUgPSBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZyAmIH51cHN0cmVhbV9idXJzdGRvbmU7Ci0gIGFzc2lnbiBwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSA9IHN0YXRlX2lkbGUgfCAoKHVwc3RyZWFtX3JlYWQgfCB1cHN0cmVhbV93cml0ZSkgJiB+dXBzdHJlYW1fd2FpdHJlcXVlc3QpOwotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9yZWFkIDw9IDA7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3JlYWQgPD0gdXBzdHJlYW1fcmVhZDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3dyaXRlIDw9IDA7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3dyaXRlIDw9IHVwc3RyZWFtX3dyaXRlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA8PSAwOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9idXJzdGNvdW50IDw9IDQnaDg7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9hZGRyZXNzIDw9IDA7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2FkZHJlc3MgPD0gdXBzdHJlYW1fYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX25hdGl2ZWFkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fbmF0aXZlYWRkcmVzcyA8PSB1cHN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICAgIGVuZAotCi0KLSAgYXNzaWduIGN1cnJlbnRfdXBzdHJlYW1fcmVhZCA9IHJlZ2lzdGVyZWRfdXBzdHJlYW1fcmVhZCAmICFkb3duc3RyZWFtX3dyaXRlOwotICBhc3NpZ24gY3VycmVudF91cHN0cmVhbV93cml0ZSA9IHJlZ2lzdGVyZWRfdXBzdHJlYW1fd3JpdGU7Ci0gIGFzc2lnbiBjdXJyZW50X3Vwc3RyZWFtX2FkZHJlc3MgPSByZWdpc3RlcmVkX3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIGFzc2lnbiBjdXJyZW50X3Vwc3RyZWFtX2J1cnN0Y291bnQgPSBwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSA/IDQnaDggOiByZWdpc3RlcmVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBhdG9taWNfY291bnRlciA8PSAwOwotICAgICAgZWxzZSBpZiAoKGRvd25zdHJlYW1fcmVhZCB8IGRvd25zdHJlYW1fd3JpdGUpICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgYXRvbWljX2NvdW50ZXIgPD0gZG93bnN0cmVhbV9idXJzdGRvbmUgPyAwIDogcDFfYXRvbWljX2NvdW50ZXI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gcmVhZF91cGRhdGVfY291bnQgPSBjdXJyZW50X3Vwc3RyZWFtX3JlYWQgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdDsKLSAgYXNzaWduIHdyaXRlX3VwZGF0ZV9jb3VudCA9IGN1cnJlbnRfdXBzdHJlYW1fd3JpdGUgJiBkb3duc3RyZWFtX3dyaXRlICYgZG93bnN0cmVhbV9idXJzdGRvbmU7Ci0gIGFzc2lnbiB1cGRhdGVfY291bnQgPSByZWFkX3VwZGF0ZV9jb3VudCB8IHdyaXRlX3VwZGF0ZV9jb3VudDsKLSAgYXNzaWduIHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPSAoc3RhdGVfaWRsZSAmICh1cHN0cmVhbV9yZWFkIHwgdXBzdHJlYW1fd3JpdGUpKSA/IGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDogdHJhbnNhY3Rpb25zX3JlbWFpbmluZ19yZWc7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZyA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgdHJhbnNhY3Rpb25zX3JlbWFpbmluZ19yZWcgPD0gKHN0YXRlX2lkbGUgJiAodXBzdHJlYW1fcmVhZCB8IHVwc3RyZWFtX3dyaXRlKSkgPyBkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA6IHVwZGF0ZV9jb3VudCA/IHRyYW5zYWN0aW9uc19yZW1haW5pbmdfcmVnIC0gZG93bnN0cmVhbV9idXJzdGNvdW50IDogdHJhbnNhY3Rpb25zX3JlbWFpbmluZ19yZWc7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgZGF0YV9jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICBkYXRhX2NvdW50ZXIgPD0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3JlYWQgJiB+dXBzdHJlYW1fd2FpdHJlcXVlc3QgPyAgZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgOiBkb3duc3RyZWFtX3JlYWRkYXRhdmFsaWQgPyBkYXRhX2NvdW50ZXIgLSAxIDogZGF0YV9jb3VudGVyOwotICAgIGVuZAotCi0KLSAgYXNzaWduIG1heF9idXJzdF9zaXplID0gNCAtIGJ1cnN0X29mZnNldFsxIDogMF07Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2J1cnN0Y291bnQgPSAodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA+IG1heF9idXJzdF9zaXplKSA/IG1heF9idXJzdF9zaXplIDogdHJhbnNhY3Rpb25zX3JlbWFpbmluZzsKLSAgYXNzaWduIGludGVybGVhdmVfZW5kID0gKGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50ID4gMCkgPyAoZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgLSAwKSA6IDA7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgPSBjdXJyZW50X3Vwc3RyZWFtX3JlYWQgPyAofGJ1cnN0X29mZnNldFsxIDogMF0gKyAoaW50ZXJsZWF2ZV9lbmQgPj4gMikgKyB8KGludGVybGVhdmVfZW5kWzEgOiAwXSkpIDogZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICB3cml0ZV9hZGRyZXNzX29mZnNldCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgd3JpdGVfYWRkcmVzc19vZmZzZXQgPD0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3dyaXRlID8gMCA6ICgoZG93bnN0cmVhbV93cml0ZSAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ICYgZG93bnN0cmVhbV9idXJzdGRvbmUpKSA/IHdyaXRlX2FkZHJlc3Nfb2Zmc2V0ICsgZG93bnN0cmVhbV9idXJzdGNvdW50IDogd3JpdGVfYWRkcmVzc19vZmZzZXQ7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVhZF9hZGRyZXNzX29mZnNldCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgcmVhZF9hZGRyZXNzX29mZnNldCA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZCA/IDAgOiAoZG93bnN0cmVhbV9yZWFkICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpID8gcmVhZF9hZGRyZXNzX29mZnNldCArIGRvd25zdHJlYW1fYnVyc3Rjb3VudCA6IHJlYWRfYWRkcmVzc19vZmZzZXQ7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzID0gcmVnaXN0ZXJlZF91cHN0cmVhbV9uYXRpdmVhZGRyZXNzID4+IDI7Ci0gIGFzc2lnbiBhZGRyZXNzX29mZnNldCA9IGN1cnJlbnRfdXBzdHJlYW1fcmVhZCA/IHJlYWRfYWRkcmVzc19vZmZzZXQgOiB3cml0ZV9hZGRyZXNzX29mZnNldDsKLSAgYXNzaWduIGRvd25zdHJlYW1fYWRkcmVzc19iYXNlID0gY3VycmVudF91cHN0cmVhbV9hZGRyZXNzOwotICBhc3NpZ24gYnVyc3Rfb2Zmc2V0ID0gZG93bnN0cmVhbV9hZGRyZXNzX2Jhc2VbNCA6IDJdICsgYWRkcmVzc19vZmZzZXQ7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2FkZHJlc3MgPSB7ZG93bnN0cmVhbV9hZGRyZXNzX2Jhc2VbMjYgOiA1XSwKLSAgICBidXJzdF9vZmZzZXQsCi0gICAgMidiMDB9OwotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkb3duc3RyZWFtX3JlYWQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3JlYWQgfCB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBkb3duc3RyZWFtX3JlYWQgPD0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3JlYWQgPyAxIDogKHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPT0gZG93bnN0cmVhbV9idXJzdGNvdW50KSA/IDAgOiBkb3duc3RyZWFtX3JlYWQ7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gdXBzdHJlYW1fcmVhZGRhdGF2YWxpZCA9IGRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgYXNzaWduIHVwc3RyZWFtX3JlYWRkYXRhID0gZG93bnN0cmVhbV9yZWFkZGF0YTsKLSAgYXNzaWduIGZpZm9fZW1wdHkgPSAxOwotICBhc3NpZ24gcDFfZmlmb19lbXB0eSA9IDE7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkb3duc3RyZWFtX3dyaXRlX3JlZyA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd3JpdGVfcmVnIHwgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgZG93bnN0cmVhbV93cml0ZV9yZWcgPD0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3dyaXRlID8gMSA6ICgodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9PSBkb3duc3RyZWFtX2J1cnN0Y291bnQpICYgZG93bnN0cmVhbV9idXJzdGRvbmUpID8gMCA6IGRvd25zdHJlYW1fd3JpdGVfcmVnOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnl0ZWVuYWJsZSA8PSA0J2IxMTExOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9ieXRlZW5hYmxlIDw9IHVwc3RyZWFtX2J5dGVlbmFibGU7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gZG93bnN0cmVhbV93cml0ZSA9IGRvd25zdHJlYW1fd3JpdGVfcmVnICYgdXBzdHJlYW1fd3JpdGUgJiAhZG93bnN0cmVhbV9yZWFkOwotICBhc3NpZ24gZG93bnN0cmVhbV9ieXRlZW5hYmxlID0gZG93bnN0cmVhbV93cml0ZV9yZWcgPyB1cHN0cmVhbV9ieXRlZW5hYmxlIDogcmVnaXN0ZXJlZF91cHN0cmVhbV9ieXRlZW5hYmxlOwotICBhc3NpZ24gZG93bnN0cmVhbV93cml0ZWRhdGEgPSB1cHN0cmVhbV93cml0ZWRhdGE7Ci0gIGFzc2lnbiB1cHN0cmVhbV9yZWFkX3J1biA9IHN0YXRlX2lkbGUgJiB1cHN0cmVhbV9yZWFkOwotICBhc3NpZ24gdXBzdHJlYW1fd3JpdGVfcnVuID0gc3RhdGVfYnVzeSAmIHVwc3RyZWFtX3dyaXRlICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QgJiAhZG93bnN0cmVhbV9yZWFkOwotICBhc3NpZ24gdXBzdHJlYW1fd2FpdHJlcXVlc3QgPSAodXBzdHJlYW1fcmVhZCB8IGN1cnJlbnRfdXBzdHJlYW1fcmVhZCkgPyB+dXBzdHJlYW1fcmVhZF9ydW4gOiBjdXJyZW50X3Vwc3RyZWFtX3dyaXRlID8gfnVwc3RyZWFtX3dyaXRlX3J1biA6IDE7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2RlYnVnYWNjZXNzID0gdXBzdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9hZGRyZXNzIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9hZGRyZXNzIDw9IGRvd25zdHJlYW1fYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlIDw9IGRvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9idXJzdGNvdW50IDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9idXJzdGNvdW50IDw9IGRvd25zdHJlYW1fYnVyc3Rjb3VudDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9ieXRlZW5hYmxlIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9ieXRlZW5hYmxlIDw9IGRvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3MgPD0gZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzIDw9IGRvd25zdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9yZWFkIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9yZWFkIDw9IGRvd25zdHJlYW1fcmVhZDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV93cml0ZSA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGUgPD0gZG93bnN0cmVhbV93cml0ZTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV93cml0ZWRhdGEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YSA8PSBkb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgICBlbmQKLQotCi0KLWVuZG1vZHVsZQotCi0KLS8qIFNMbGluZSAyMDQ5NSAiY3VzdG9tX2RtYS52IiAyICovCi0vKiBTTGxpbmUgMSAiY3VzdG9tX2RtYV9idXJzdF80LnYiIDEgKi8KLS8vTGVnYWwgTm90aWNlOiAoQykyMDEwIEFsdGVyYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFlvdXIKLS8vdXNlIG9mIEFsdGVyYSBDb3Jwb3JhdGlvbidzIGRlc2lnbiB0b29scywgbG9naWMgZnVuY3Rpb25zIGFuZCBvdGhlcgotLy9zb2Z0d2FyZSBhbmQgdG9vbHMsIGFuZCBpdHMgQU1QUCBwYXJ0bmVyIGxvZ2ljIGZ1bmN0aW9ucywgYW5kIGFueQotLy9vdXRwdXQgZmlsZXMgYW55IG9mIHRoZSBmb3JlZ29pbmcgKGluY2x1ZGluZyBkZXZpY2UgcHJvZ3JhbW1pbmcgb3IKLS8vc2ltdWxhdGlvbiBmaWxlcyksIGFuZCBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIGFyZQotLy9leHByZXNzbHkgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEFsdGVyYSBQcm9ncmFtCi0vL0xpY2Vuc2UgU3Vic2NyaXB0aW9uIEFncmVlbWVudCBvciBvdGhlciBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50LAotLy9pbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgdGhhdCB5b3VyIHVzZSBpcyBmb3IgdGhlIHNvbGUgcHVycG9zZQotLy9vZiBwcm9ncmFtbWluZyBsb2dpYyBkZXZpY2VzIG1hbnVmYWN0dXJlZCBieSBBbHRlcmEgYW5kIHNvbGQgYnkgQWx0ZXJhCi0vL29yIGl0cyBhdXRob3JpemVkIGRpc3RyaWJ1dG9ycy4gIFBsZWFzZSByZWZlciB0byB0aGUgYXBwbGljYWJsZQotLy9hZ3JlZW1lbnQgZm9yIGZ1cnRoZXIgZGV0YWlscy4KLQotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLWB0aW1lc2NhbGUgMW5zIC8gMXBzCi0vLyBzeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi0vLwotLy9CdXJzdCBhZGFwdGVyIHBhcmFtZXRlcnM6Ci0vL2FkYXB0ZXIgaXMgbWFzdGVyZWQgYnk6IGNwdS9kYXRhX21hc3RlcgotLy9hZGFwdGVyIG1hc3RlcnM6IGRkcl9zZHJhbS9zMQotLy9hc3BfZGVidWc6IDAKLS8vYnl0ZWFkZHJfd2lkdGg6IDI3Ci0vL2NlaWxfZGF0YV93aWR0aDogMzIKLS8vZGF0YV93aWR0aDogMzIKLS8vZGJzX3NoaWZ0OiAwCi0vL2Ric191cHN0cmVhbV9idXJzdGNvdW50X3dpZHRoOiA0Ci0vL2Rvd25zdHJlYW1fYWRkcl9zaGlmdDogMgotLy9kb3duc3RyZWFtX2J1cnN0Y291bnRfd2lkdGg6IDMKLS8vZG93bnN0cmVhbV9tYXhfYnVyc3Rjb3VudDogNAotLy9kb3duc3RyZWFtX3BpcGVsaW5lOiAxCi0vL2R5bmFtaWNfc2xhdmU6IDEKLS8vbWFzdGVyX2Fsd2F5c19idXJzdF9tYXhfYnVyc3Q6IDAKLS8vbWFzdGVyX2J1cnN0X29uX2J1cnN0X2JvdW5kYXJpZXNfb25seTogMQotLy9tYXN0ZXJfZGF0YV93aWR0aDogMzIKLS8vbWFzdGVyX2ludGVybGVhdmU6IDAKLS8vbWFzdGVyX2xpbmV3cmFwX2J1cnN0czogMAotLy9uYXRpdmVhZGRyX3dpZHRoOiAyNQotLy9zbGF2ZV9hbHdheXNfYnVyc3RfbWF4X2J1cnN0OiAwCi0vL3NsYXZlX2J1cnN0X29uX2J1cnN0X2JvdW5kYXJpZXNfb25seTogMAotLy9zbGF2ZV9pbnRlcmxlYXZlOiAwCi0vL3NsYXZlX2xpbmV3cmFwX2J1cnN0czogMQotLy91cHN0cmVhbV9idXJzdGNvdW50OiB1cHN0cmVhbV9idXJzdGNvdW50Ci0vL3Vwc3RyZWFtX2J1cnN0Y291bnRfd2lkdGg6IDQKLS8vdXBzdHJlYW1fbWF4X2J1cnN0Y291bnQ6IDgKLS8vemVyb19hZGRyZXNzX3dpZHRoOiAwCi0KLQotbW9kdWxlIGN1c3RvbV9kbWFfYnVyc3RfNCAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25zdHJlYW1fcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbV93YWl0cmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX25hdGl2ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbV93cml0ZWRhdGEsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtX3dhaXRyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgMjQ6IDBdIHJlZ19kb3duc3RyZWFtX2FkZHJlc3M7Ci0gIG91dHB1dCAgWyAgMzogMF0gcmVnX2Rvd25zdHJlYW1fYXJiaXRyYXRpb25zaGFyZTsKLSAgb3V0cHV0ICBbICAyOiAwXSByZWdfZG93bnN0cmVhbV9idXJzdGNvdW50OwotICBvdXRwdXQgIFsgIDM6IDBdIHJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGU7Ci0gIG91dHB1dCAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIG91dHB1dCAgWyAyNDogMF0gcmVnX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgb3V0cHV0ICAgICAgICAgICByZWdfZG93bnN0cmVhbV9yZWFkOwotICBvdXRwdXQgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlOwotICBvdXRwdXQgIFsgMzE6IDBdIHJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgb3V0cHV0ICBbIDMxOiAwXSB1cHN0cmVhbV9yZWFkZGF0YTsKLSAgb3V0cHV0ICAgICAgICAgICB1cHN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICBvdXRwdXQgICAgICAgICAgIHVwc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIGNsazsKLSAgaW5wdXQgICBbIDMxOiAwXSBkb3duc3RyZWFtX3JlYWRkYXRhOwotICBpbnB1dCAgICAgICAgICAgIGRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgaW5wdXQgICAgICAgICAgICBkb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgWyAyNjogMF0gdXBzdHJlYW1fYWRkcmVzczsKLSAgaW5wdXQgICBbICAzOiAwXSB1cHN0cmVhbV9idXJzdGNvdW50OwotICBpbnB1dCAgIFsgIDM6IDBdIHVwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIGlucHV0ICAgICAgICAgICAgdXBzdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIGlucHV0ICAgWyAyNDogMF0gdXBzdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICB1cHN0cmVhbV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIHVwc3RyZWFtX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIHVwc3RyZWFtX3dyaXRlZGF0YTsKLQotICB3aXJlICAgIFsgIDI6IDBdIGFkZHJlc3Nfb2Zmc2V0OwotICByZWcgICAgIFsgIDI6IDBdIGF0b21pY19jb3VudGVyOwotICB3aXJlICAgIFsgMjY6IDBdIGN1cnJlbnRfdXBzdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbICAzOiAwXSBjdXJyZW50X3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgICAgICAgICAgY3VycmVudF91cHN0cmVhbV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIGN1cnJlbnRfdXBzdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgWyAgMzogMF0gZGF0YV9jb3VudGVyOwotICB3aXJlICAgIFsgIDM6IDBdIGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICB3aXJlICAgIFsgMjQ6IDBdIGRvd25zdHJlYW1fYWRkcmVzczsKLSAgd2lyZSAgICBbIDI2OiAwXSBkb3duc3RyZWFtX2FkZHJlc3NfYmFzZTsKLSAgd2lyZSAgICBbICAzOiAwXSBkb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmU7Ci0gIHdpcmUgICAgWyAgMjogMF0gZG93bnN0cmVhbV9idXJzdGNvdW50OwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fYnVyc3Rkb25lOwotICB3aXJlICAgIFsgIDM6IDBdIGRvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgIFsgMjQ6IDBdIGRvd25zdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgcmVnICAgICAgICAgICAgICBkb3duc3RyZWFtX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV93cml0ZTsKLSAgcmVnICAgICAgICAgICAgICBkb3duc3RyZWFtX3dyaXRlX3JlZzsKLSAgd2lyZSAgICBbIDMxOiAwXSBkb3duc3RyZWFtX3dyaXRlZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBlbmFibGVfc3RhdGVfY2hhbmdlOwotICB3aXJlICAgICAgICAgICAgIGZpZm9fZW1wdHk7Ci0gIHdpcmUgICAgWyAgMzogMF0gaW50ZXJsZWF2ZV9lbmQ7Ci0gIHdpcmUgICAgWyAgMjogMF0gbWF4X2J1cnN0X3NpemU7Ci0gIHdpcmUgICAgWyAgMjogMF0gcDFfYXRvbWljX2NvdW50ZXI7Ci0gIHdpcmUgICAgICAgICAgICAgcDFfZmlmb19lbXB0eTsKLSAgd2lyZSAgICAgICAgICAgICBwMV9zdGF0ZV9idXN5OwotICB3aXJlICAgICAgICAgICAgIHAxX3N0YXRlX2lkbGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGVuZGluZ19yZWdpc3Rlcl9lbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgcGVuZGluZ191cHN0cmVhbV9yZWFkOwotICByZWcgICAgICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fcmVhZF9yZWc7Ci0gIHdpcmUgICAgICAgICAgICAgcGVuZGluZ191cHN0cmVhbV93cml0ZTsKLSAgcmVnICAgICAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZzsKLSAgcmVnICAgICBbICAyOiAwXSByZWFkX2FkZHJlc3Nfb2Zmc2V0OwotICB3aXJlICAgICAgICAgICAgIHJlYWRfdXBkYXRlX2NvdW50OwotICB3aXJlICAgIFsgIDM6IDBdIHJlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHJlZyAgICAgWyAyNDogMF0gcmVnX2Rvd25zdHJlYW1fYWRkcmVzczsKLSAgcmVnICAgICBbICAzOiAwXSByZWdfZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICByZWcgICAgIFsgIDI6IDBdIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIHJlZyAgICAgWyAgMzogMF0gcmVnX2Rvd25zdHJlYW1fYnl0ZWVuYWJsZTsKLSAgcmVnICAgICAgICAgICAgICByZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgcmVnICAgICBbIDI0OiAwXSByZWdfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICByZWcgICAgICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3JlYWQ7Ci0gIHJlZyAgICAgICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgWyAzMTogMF0gcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhOwotICByZWcgICAgIFsgIDM6IDBdIHJlZ2lzdGVyZWRfcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgcmVnICAgICBbIDI2OiAwXSByZWdpc3RlcmVkX3Vwc3RyZWFtX2FkZHJlc3M7Ci0gIHJlZyAgICAgWyAgMzogMF0gcmVnaXN0ZXJlZF91cHN0cmVhbV9idXJzdGNvdW50OwotICByZWcgICAgIFsgIDM6IDBdIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgcmVnICAgICBbIDI0OiAwXSByZWdpc3RlcmVkX3Vwc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIHJlZyAgICAgICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9yZWFkOwotICByZWcgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fd3JpdGU7Ci0gIHJlZyAgICAgICAgICAgICAgc3RhdGVfYnVzeTsKLSAgcmVnICAgICAgICAgICAgICBzdGF0ZV9pZGxlOwotICB3aXJlICAgICAgICAgICAgIHN5bmNfbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICBbICAzOiAwXSB0cmFuc2FjdGlvbnNfcmVtYWluaW5nOwotICByZWcgICAgIFsgIDM6IDBdIHRyYW5zYWN0aW9uc19yZW1haW5pbmdfcmVnOwotICB3aXJlICAgICAgICAgICAgIHVwZGF0ZV9jb3VudDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9idXJzdGRvbmU7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZF9ydW47Ci0gIHdpcmUgICAgWyAzMTogMF0gdXBzdHJlYW1fcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV93cml0ZV9ydW47Ci0gIHJlZyAgICAgWyAgMjogMF0gd3JpdGVfYWRkcmVzc19vZmZzZXQ7Ci0gIHdpcmUgICAgICAgICAgICAgd3JpdGVfdXBkYXRlX2NvdW50OwotICBhc3NpZ24gc3luY19uYXRpdmVhZGRyZXNzID0gfHVwc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIC8vZG93bnN0cmVhbSwgd2hpY2ggaXMgYW4gZV9hdmFsb25fbWFzdGVyCi0gIC8vdXBzdHJlYW0sIHdoaWNoIGlzIGFuIGVfYXZhbG9uX3NsYXZlCi0gIGFzc2lnbiB1cHN0cmVhbV9idXJzdGRvbmUgPSBjdXJyZW50X3Vwc3RyZWFtX3JlYWQgPyAodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9PSBkb3duc3RyZWFtX2J1cnN0Y291bnQpICYgZG93bnN0cmVhbV9yZWFkICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QgOiAodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9PSAoYXRvbWljX2NvdW50ZXIgKyAxKSkgJiBkb3duc3RyZWFtX3dyaXRlICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGFzc2lnbiBwMV9hdG9taWNfY291bnRlciA9IGF0b21pY19jb3VudGVyICsgKGRvd25zdHJlYW1fcmVhZCA/IGRvd25zdHJlYW1fYnVyc3Rjb3VudCA6IDEpOwotICBhc3NpZ24gZG93bnN0cmVhbV9idXJzdGRvbmUgPSAoZG93bnN0cmVhbV9yZWFkIHwgZG93bnN0cmVhbV93cml0ZSkgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCAmIChwMV9hdG9taWNfY291bnRlciA9PSBkb3duc3RyZWFtX2J1cnN0Y291bnQpOwotICBhc3NpZ24gZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgPSBwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSA/IHJlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgOiByZWdpc3RlcmVkX3JlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGFzc2lnbiByZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50ID0gdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfcmVhZF93cml0ZV9kYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA8PSAwOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF9yZWFkX3dyaXRlX2Ric19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDw9IHJlYWRfd3JpdGVfZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gcDFfc3RhdGVfaWRsZSA9IHN0YXRlX2lkbGUgJiB+dXBzdHJlYW1fcmVhZCAmIH51cHN0cmVhbV93cml0ZSB8IHN0YXRlX2J1c3kgJiAoZGF0YV9jb3VudGVyID09IDApICYgcDFfZmlmb19lbXB0eSAmIH5wZW5kaW5nX3Vwc3RyZWFtX3JlYWQgJiB+cGVuZGluZ191cHN0cmVhbV93cml0ZTsKLSAgYXNzaWduIHAxX3N0YXRlX2J1c3kgPSBzdGF0ZV9pZGxlICYgKHVwc3RyZWFtX3JlYWQgfCB1cHN0cmVhbV93cml0ZSkgfCBzdGF0ZV9idXN5ICYgKH4oZGF0YV9jb3VudGVyID09IDApIHwgfnAxX2ZpZm9fZW1wdHkgfCBwZW5kaW5nX3Vwc3RyZWFtX3JlYWQgfCBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlKTsKLSAgYXNzaWduIGVuYWJsZV9zdGF0ZV9jaGFuZ2UgPSB+KGRvd25zdHJlYW1fcmVhZCB8IGRvd25zdHJlYW1fd3JpdGUpIHwgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3Q7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnIDw9IDA7Ci0gICAgICBlbHNlIGlmICh1cHN0cmVhbV9yZWFkICYgc3RhdGVfaWRsZSkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnIDw9IC0xOwotICAgICAgZWxzZSBpZiAodXBzdHJlYW1fYnVyc3Rkb25lKQotICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fcmVhZF9yZWcgPD0gMDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZyA8PSAwOwotICAgICAgZWxzZSBpZiAodXBzdHJlYW1fYnVyc3Rkb25lKQotICAgICAgICAgIHBlbmRpbmdfdXBzdHJlYW1fd3JpdGVfcmVnIDw9IDA7Ci0gICAgICBlbHNlIGlmICh1cHN0cmVhbV93cml0ZSAmIChzdGF0ZV9pZGxlIHwgfnVwc3RyZWFtX3dhaXRyZXF1ZXN0KSkKLSAgICAgICAgICBwZW5kaW5nX3Vwc3RyZWFtX3dyaXRlX3JlZyA8PSAtMTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGF0ZV9pZGxlIDw9IDE7Ci0gICAgICBlbHNlIGlmIChlbmFibGVfc3RhdGVfY2hhbmdlKQotICAgICAgICAgIHN0YXRlX2lkbGUgPD0gcDFfc3RhdGVfaWRsZTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBzdGF0ZV9idXN5IDw9IDA7Ci0gICAgICBlbHNlIGlmIChlbmFibGVfc3RhdGVfY2hhbmdlKQotICAgICAgICAgIHN0YXRlX2J1c3kgPD0gcDFfc3RhdGVfYnVzeTsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBwZW5kaW5nX3Vwc3RyZWFtX3JlYWQgPSBwZW5kaW5nX3Vwc3RyZWFtX3JlYWRfcmVnOwotICBhc3NpZ24gcGVuZGluZ191cHN0cmVhbV93cml0ZSA9IHBlbmRpbmdfdXBzdHJlYW1fd3JpdGVfcmVnICYgfnVwc3RyZWFtX2J1cnN0ZG9uZTsKLSAgYXNzaWduIHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlID0gc3RhdGVfaWRsZSB8ICgodXBzdHJlYW1fcmVhZCB8IHVwc3RyZWFtX3dyaXRlKSAmIH51cHN0cmVhbV93YWl0cmVxdWVzdCk7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX3JlYWQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fcmVhZCA8PSB1cHN0cmVhbV9yZWFkOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fd3JpdGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fd3JpdGUgPD0gdXBzdHJlYW1fd3JpdGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9idXJzdGNvdW50IDw9IDA7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgPD0gdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2FkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fYWRkcmVzcyA8PSB1cHN0cmVhbV9hZGRyZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ2lzdGVyZWRfdXBzdHJlYW1fbmF0aXZlYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSBpZiAocGVuZGluZ19yZWdpc3Rlcl9lbmFibGUpCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9uYXRpdmVhZGRyZXNzIDw9IHVwc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gY3VycmVudF91cHN0cmVhbV9yZWFkID0gcmVnaXN0ZXJlZF91cHN0cmVhbV9yZWFkICYgIWRvd25zdHJlYW1fd3JpdGU7Ci0gIGFzc2lnbiBjdXJyZW50X3Vwc3RyZWFtX3dyaXRlID0gcmVnaXN0ZXJlZF91cHN0cmVhbV93cml0ZTsKLSAgYXNzaWduIGN1cnJlbnRfdXBzdHJlYW1fYWRkcmVzcyA9IHJlZ2lzdGVyZWRfdXBzdHJlYW1fYWRkcmVzczsKLSAgYXNzaWduIGN1cnJlbnRfdXBzdHJlYW1fYnVyc3Rjb3VudCA9IHBlbmRpbmdfcmVnaXN0ZXJfZW5hYmxlID8gdXBzdHJlYW1fYnVyc3Rjb3VudCA6IHJlZ2lzdGVyZWRfdXBzdHJlYW1fYnVyc3Rjb3VudDsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGF0b21pY19jb3VudGVyIDw9IDA7Ci0gICAgICBlbHNlIGlmICgoZG93bnN0cmVhbV9yZWFkIHwgZG93bnN0cmVhbV93cml0ZSkgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBhdG9taWNfY291bnRlciA8PSBkb3duc3RyZWFtX2J1cnN0ZG9uZSA/IDAgOiBwMV9hdG9taWNfY291bnRlcjsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiByZWFkX3VwZGF0ZV9jb3VudCA9IGN1cnJlbnRfdXBzdHJlYW1fcmVhZCAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0OwotICBhc3NpZ24gd3JpdGVfdXBkYXRlX2NvdW50ID0gY3VycmVudF91cHN0cmVhbV93cml0ZSAmIGRvd25zdHJlYW1fd3JpdGUgJiBkb3duc3RyZWFtX2J1cnN0ZG9uZTsKLSAgYXNzaWduIHVwZGF0ZV9jb3VudCA9IHJlYWRfdXBkYXRlX2NvdW50IHwgd3JpdGVfdXBkYXRlX2NvdW50OwotICBhc3NpZ24gdHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9IChzdGF0ZV9pZGxlICYgKHVwc3RyZWFtX3JlYWQgfCB1cHN0cmVhbV93cml0ZSkpID8gZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQgOiB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZzsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHRyYW5zYWN0aW9uc19yZW1haW5pbmdfcmVnIDw9IDA7Ci0gICAgICBlbHNlIAotICAgICAgICB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZyA8PSAoc3RhdGVfaWRsZSAmICh1cHN0cmVhbV9yZWFkIHwgdXBzdHJlYW1fd3JpdGUpKSA/IGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IDogdXBkYXRlX2NvdW50ID8gdHJhbnNhY3Rpb25zX3JlbWFpbmluZ19yZWcgLSBkb3duc3RyZWFtX2J1cnN0Y291bnQgOiB0cmFuc2FjdGlvbnNfcmVtYWluaW5nX3JlZzsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICBkYXRhX2NvdW50ZXIgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIGRhdGFfY291bnRlciA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZCAmIH51cHN0cmVhbV93YWl0cmVxdWVzdCA/ICBkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA6IGRvd25zdHJlYW1fcmVhZGRhdGF2YWxpZCA/IGRhdGFfY291bnRlciAtIDEgOiBkYXRhX2NvdW50ZXI7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbWF4X2J1cnN0X3NpemUgPSA0OwotICBhc3NpZ24gZG93bnN0cmVhbV9idXJzdGNvdW50ID0gKHRyYW5zYWN0aW9uc19yZW1haW5pbmcgPiBtYXhfYnVyc3Rfc2l6ZSkgPyBtYXhfYnVyc3Rfc2l6ZSA6IHRyYW5zYWN0aW9uc19yZW1haW5pbmc7Ci0gIGFzc2lnbiBpbnRlcmxlYXZlX2VuZCA9IChkYnNfYWRqdXN0ZWRfdXBzdHJlYW1fYnVyc3Rjb3VudCA+IDApID8gKGRic19hZGp1c3RlZF91cHN0cmVhbV9idXJzdGNvdW50IC0gMCkgOiAwOwotICBhc3NpZ24gZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlID0gY3VycmVudF91cHN0cmVhbV9yZWFkID8gKDAgKyAoaW50ZXJsZWF2ZV9lbmQgPj4gMikgKyB8KGludGVybGVhdmVfZW5kWzEgOiAwXSkpIDogZGJzX2FkanVzdGVkX3Vwc3RyZWFtX2J1cnN0Y291bnQ7Ci0gIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKHJlc2V0X24gPT0gMCkKLSAgICAgICAgICB3cml0ZV9hZGRyZXNzX29mZnNldCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgd3JpdGVfYWRkcmVzc19vZmZzZXQgPD0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3dyaXRlID8gMCA6ICgoZG93bnN0cmVhbV93cml0ZSAmIH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0ICYgZG93bnN0cmVhbV9idXJzdGRvbmUpKSA/IHdyaXRlX2FkZHJlc3Nfb2Zmc2V0ICsgZG93bnN0cmVhbV9idXJzdGNvdW50IDogd3JpdGVfYWRkcmVzc19vZmZzZXQ7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVhZF9hZGRyZXNzX29mZnNldCA8PSAwOwotICAgICAgZWxzZSAKLSAgICAgICAgcmVhZF9hZGRyZXNzX29mZnNldCA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZCA/IDAgOiAoZG93bnN0cmVhbV9yZWFkICYgfmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpID8gcmVhZF9hZGRyZXNzX29mZnNldCArIGRvd25zdHJlYW1fYnVyc3Rjb3VudCA6IHJlYWRfYWRkcmVzc19vZmZzZXQ7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzID0gcmVnaXN0ZXJlZF91cHN0cmVhbV9uYXRpdmVhZGRyZXNzID4+IDI7Ci0gIGFzc2lnbiBhZGRyZXNzX29mZnNldCA9IGN1cnJlbnRfdXBzdHJlYW1fcmVhZCA/IHJlYWRfYWRkcmVzc19vZmZzZXQgOiB3cml0ZV9hZGRyZXNzX29mZnNldDsKLSAgYXNzaWduIGRvd25zdHJlYW1fYWRkcmVzc19iYXNlID0gY3VycmVudF91cHN0cmVhbV9hZGRyZXNzOwotICBhc3NpZ24gZG93bnN0cmVhbV9hZGRyZXNzID0gZG93bnN0cmVhbV9hZGRyZXNzX2Jhc2UgKyB7YWRkcmVzc19vZmZzZXQsIDInYjAwfTsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGRvd25zdHJlYW1fcmVhZCA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fcmVhZCB8IH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIGRvd25zdHJlYW1fcmVhZCA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fcmVhZCA/IDEgOiAodHJhbnNhY3Rpb25zX3JlbWFpbmluZyA9PSBkb3duc3RyZWFtX2J1cnN0Y291bnQpID8gMCA6IGRvd25zdHJlYW1fcmVhZDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiB1cHN0cmVhbV9yZWFkZGF0YXZhbGlkID0gZG93bnN0cmVhbV9yZWFkZGF0YXZhbGlkOwotICBhc3NpZ24gdXBzdHJlYW1fcmVhZGRhdGEgPSBkb3duc3RyZWFtX3JlYWRkYXRhOwotICBhc3NpZ24gZmlmb19lbXB0eSA9IDE7Ci0gIGFzc2lnbiBwMV9maWZvX2VtcHR5ID0gMTsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIGRvd25zdHJlYW1fd3JpdGVfcmVnIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93cml0ZV9yZWcgfCB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBkb3duc3RyZWFtX3dyaXRlX3JlZyA8PSBzdGF0ZV9pZGxlICYgdXBzdHJlYW1fd3JpdGUgPyAxIDogKCh0cmFuc2FjdGlvbnNfcmVtYWluaW5nID09IGRvd25zdHJlYW1fYnVyc3Rjb3VudCkgJiBkb3duc3RyZWFtX2J1cnN0ZG9uZSkgPyAwIDogZG93bnN0cmVhbV93cml0ZV9yZWc7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgcmVnaXN0ZXJlZF91cHN0cmVhbV9ieXRlZW5hYmxlIDw9IDQnYjExMTE7Ci0gICAgICBlbHNlIGlmIChwZW5kaW5nX3JlZ2lzdGVyX2VuYWJsZSkKLSAgICAgICAgICByZWdpc3RlcmVkX3Vwc3RyZWFtX2J5dGVlbmFibGUgPD0gdXBzdHJlYW1fYnl0ZWVuYWJsZTsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBkb3duc3RyZWFtX3dyaXRlID0gZG93bnN0cmVhbV93cml0ZV9yZWcgJiB1cHN0cmVhbV93cml0ZSAmICFkb3duc3RyZWFtX3JlYWQ7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX2J5dGVlbmFibGUgPSBkb3duc3RyZWFtX3dyaXRlX3JlZyA/IHVwc3RyZWFtX2J5dGVlbmFibGUgOiByZWdpc3RlcmVkX3Vwc3RyZWFtX2J5dGVlbmFibGU7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX3dyaXRlZGF0YSA9IHVwc3RyZWFtX3dyaXRlZGF0YTsKLSAgYXNzaWduIHVwc3RyZWFtX3JlYWRfcnVuID0gc3RhdGVfaWRsZSAmIHVwc3RyZWFtX3JlYWQ7Ci0gIGFzc2lnbiB1cHN0cmVhbV93cml0ZV9ydW4gPSBzdGF0ZV9idXN5ICYgdXBzdHJlYW1fd3JpdGUgJiB+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCAmICFkb3duc3RyZWFtX3JlYWQ7Ci0gIGFzc2lnbiB1cHN0cmVhbV93YWl0cmVxdWVzdCA9ICh1cHN0cmVhbV9yZWFkIHwgY3VycmVudF91cHN0cmVhbV9yZWFkKSA/IH51cHN0cmVhbV9yZWFkX3J1biA6IGN1cnJlbnRfdXBzdHJlYW1fd3JpdGUgPyB+dXBzdHJlYW1fd3JpdGVfcnVuIDogMTsKLSAgYXNzaWduIGRvd25zdHJlYW1fZGVidWdhY2Nlc3MgPSB1cHN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FkZHJlc3MgPD0gZG93bnN0cmVhbV9hZGRyZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2FyYml0cmF0aW9uc2hhcmUgPD0gZG93bnN0cmVhbV9hcmJpdHJhdGlvbnNoYXJlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J1cnN0Y291bnQgPD0gZG93bnN0cmVhbV9idXJzdGNvdW50OwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2J5dGVlbmFibGUgPD0gZG93bnN0cmVhbV9ieXRlZW5hYmxlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX2RlYnVnYWNjZXNzIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzcyA8PSBkb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3MgPD0gZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3JlYWQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5kb3duc3RyZWFtX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3JlYWQgPD0gZG93bnN0cmVhbV9yZWFkOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+ZG93bnN0cmVhbV93YWl0cmVxdWVzdCkKLSAgICAgICAgICByZWdfZG93bnN0cmVhbV93cml0ZSA8PSBkb3duc3RyZWFtX3dyaXRlOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAocmVzZXRfbiA9PSAwKQotICAgICAgICAgIHJlZ19kb3duc3RyZWFtX3dyaXRlZGF0YSA8PSAwOwotICAgICAgZWxzZSBpZiAofmRvd25zdHJlYW1fd2FpdHJlcXVlc3QpCi0gICAgICAgICAgcmVnX2Rvd25zdHJlYW1fd3JpdGVkYXRhIDw9IGRvd25zdHJlYW1fd3JpdGVkYXRhOwotICAgIGVuZAotCi0KLQotZW5kbW9kdWxlCi0KLQotLyogU0xsaW5lIDIwNDk2ICJjdXN0b21fZG1hLnYiIDIgKi8KLQotYHRpbWVzY2FsZSAxbnMgLyAxcHMKLQotbW9kdWxlIHRlc3RfYmVuY2ggCi07Ci0KLQotICB3aXJlICAgICAgICAgICAgIGFkc2Nfbl90b190aGVfZXh0X3NzcmFtOwotICB3aXJlICAgIFsgIDM6IDBdIGJ3X25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgd2lyZSAgICAgICAgICAgICBid2Vfbl90b190aGVfZXh0X3NzcmFtOwotICB3aXJlICAgICAgICAgICAgIGNoaXBlbmFibGUxX25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgd2lyZSAgICAgICAgICAgICBjbGs7Ci0gIHdpcmUgICAgICAgICAgICAgY2xrX3RvX3NkcmFtX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgd2lyZSAgICAgICAgICAgICBjbGtfdG9fc2RyYW1fbl9mcm9tX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgWyAyMDogMF0gY3VzdG9tX2RtYV9idXJzdF8wX2Rvd25zdHJlYW1fbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICBbIDMxOiAwXSBjdXN0b21fZG1hX2J1cnN0XzFfdXBzdHJlYW1fd3JpdGVkYXRhOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgIFsgMjQ6IDBdIGN1c3RvbV9kbWFfYnVyc3RfM19kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF8zX3Vwc3RyZWFtX3dyaXRlZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICBbIDI0OiAwXSBjdXN0b21fZG1hX2J1cnN0XzRfZG93bnN0cmVhbV9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX2RlYnVnYWNjZXNzOwotICB3aXJlICAgIFsgMjQ6IDBdIGN1c3RvbV9kbWFfYnVyc3RfNV9kb3duc3RyZWFtX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgWyAzMTogMF0gY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWRkYXRhX2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgY3VzdG9tX2RtYV9idXJzdF81X3Vwc3RyZWFtX3JlYWRkYXRhdmFsaWRfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBjdXN0b21fZG1hX2Nsb2NrXzBfb3V0X2VuZG9mcGFja2V0OwotICB3aXJlICAgIFsgMTI6IDBdIGRkcl9hX2Zyb21fdGhlX2Rkcl9zZHJhbTsKLSAgd2lyZSAgICBbICAxOiAwXSBkZHJfYmFfZnJvbV90aGVfZGRyX3NkcmFtOwotICB3aXJlICAgICAgICAgICAgIGRkcl9jYXNfbl9mcm9tX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX2NrZV9mcm9tX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX2NzX25fZnJvbV90aGVfZGRyX3NkcmFtOwotICB3aXJlICAgIFsgIDE6IDBdIGRkcl9kbV9mcm9tX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgWyAxNTogMF0gZGRyX2RxX3RvX2FuZF9mcm9tX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgWyAgMTogMF0gZGRyX2Rxc190b19hbmRfZnJvbV90aGVfZGRyX3NkcmFtOwotICB3aXJlICAgICAgICAgICAgIGRkcl9yYXNfbl9mcm9tX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgICAgICAgICAgZGRyX3dlX25fZnJvbV90aGVfZGRyX3NkcmFtOwotICB3aXJlICAgIFsgIDU6IDBdIGRxc19kZWxheV9jdHJsX3RvX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgICAgICAgICAgZHFzdXBkYXRlX3RvX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgWyAyMDogMF0gZXh0X3NzcmFtX2J1c19hZGRyZXNzOwotICB3aXJlICAgIFsgMzE6IDBdIGV4dF9zc3JhbV9idXNfZGF0YTsKLSAgcmVnICAgICAgICAgICAgICBleHRlcm5hbF9jbGs7Ci0gIHdpcmUgICAgICAgICAgICAganRhZ191YXJ0X2F2YWxvbl9qdGFnX3NsYXZlX2RhdGFhdmFpbGFibGVfZnJvbV9zYTsKLSAgd2lyZSAgICAgICAgICAgICBqdGFnX3VhcnRfYXZhbG9uX2p0YWdfc2xhdmVfcmVhZHlmb3JkYXRhX2Zyb21fc2E7Ci0gIHdpcmUgICAgICAgICAgICAgb3V0cHV0ZW5hYmxlX25fdG9fdGhlX2V4dF9zc3JhbTsKLSAgd2lyZSAgICAgICAgICAgICBwaXBlbGluZV9icmlkZ2VfczFfZW5kb2ZwYWNrZXRfZnJvbV9zYTsKLSAgcmVnICAgICAgICAgICAgICByZXNldF9uOwotICB3aXJlICAgICAgICAgICAgIHNkcmFtX3dyaXRlX2NsazsKLSAgd2lyZSAgICAgICAgICAgICBzc3JhbV9jbGs7Ci0gIHdpcmUgICAgICAgICAgICAgc3RyYXRpeF9kbGxfY29udHJvbF9mcm9tX3RoZV9kZHJfc2RyYW07Ci0gIHdpcmUgICAgICAgICAgICAgc3lzdGVtX2NsazsKLSAgd2lyZSAgICAgICAgICAgICB3cml0ZV9jbGtfdG9fdGhlX2Rkcl9zZHJhbTsKLQotCi0vLyA8QUxURVJBX05PVEU+IENPREUgSU5TRVJURUQgQkVUV0VFTiBIRVJFCi0vLyAgYWRkIHlvdXIgc2lnbmFscyBhbmQgYWRkaXRpb25hbCBhcmNoaXRlY3R1cmUgaGVyZQotLy8gQU5EIEhFUkUgV0lMTCBCRSBQUkVTRVJWRUQgPC9BTFRFUkFfTk9URT4KLQotICAvL1NldCB1cyB1cCB0aGUgRHV0Ci0gIGN1c3RvbV9kbWEgRFVUCi0gICAgKAotICAgICAgLmFkc2Nfbl90b190aGVfZXh0X3NzcmFtICAgICAgICAgICAgICAgIChhZHNjX25fdG9fdGhlX2V4dF9zc3JhbSksCi0gICAgICAuYndfbl90b190aGVfZXh0X3NzcmFtICAgICAgICAgICAgICAgICAgKGJ3X25fdG9fdGhlX2V4dF9zc3JhbSksCi0gICAgICAuYndlX25fdG9fdGhlX2V4dF9zc3JhbSAgICAgICAgICAgICAgICAgKGJ3ZV9uX3RvX3RoZV9leHRfc3NyYW0pLAotICAgICAgLmNoaXBlbmFibGUxX25fdG9fdGhlX2V4dF9zc3JhbSAgICAgICAgIChjaGlwZW5hYmxlMV9uX3RvX3RoZV9leHRfc3NyYW0pLAotICAgICAgLmNsa190b19zZHJhbV9mcm9tX3RoZV9kZHJfc2RyYW0gICAgICAgIChjbGtfdG9fc2RyYW1fZnJvbV90aGVfZGRyX3NkcmFtKSwKLSAgICAgIC5jbGtfdG9fc2RyYW1fbl9mcm9tX3RoZV9kZHJfc2RyYW0gICAgICAoY2xrX3RvX3NkcmFtX25fZnJvbV90aGVfZGRyX3NkcmFtKSwKLSAgICAgIC5kZHJfYV9mcm9tX3RoZV9kZHJfc2RyYW0gICAgICAgICAgICAgICAoZGRyX2FfZnJvbV90aGVfZGRyX3NkcmFtKSwKLSAgICAgIC5kZHJfYmFfZnJvbV90aGVfZGRyX3NkcmFtICAgICAgICAgICAgICAoZGRyX2JhX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX2Nhc19uX2Zyb21fdGhlX2Rkcl9zZHJhbSAgICAgICAgICAgKGRkcl9jYXNfbl9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRkcl9ja2VfZnJvbV90aGVfZGRyX3NkcmFtICAgICAgICAgICAgIChkZHJfY2tlX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX2NzX25fZnJvbV90aGVfZGRyX3NkcmFtICAgICAgICAgICAgKGRkcl9jc19uX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX2RtX2Zyb21fdGhlX2Rkcl9zZHJhbSAgICAgICAgICAgICAgKGRkcl9kbV9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRkcl9kcV90b19hbmRfZnJvbV90aGVfZGRyX3NkcmFtICAgICAgIChkZHJfZHFfdG9fYW5kX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX2Rxc190b19hbmRfZnJvbV90aGVfZGRyX3NkcmFtICAgICAgKGRkcl9kcXNfdG9fYW5kX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX3Jhc19uX2Zyb21fdGhlX2Rkcl9zZHJhbSAgICAgICAgICAgKGRkcl9yYXNfbl9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRkcl93ZV9uX2Zyb21fdGhlX2Rkcl9zZHJhbSAgICAgICAgICAgIChkZHJfd2Vfbl9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRxc19kZWxheV9jdHJsX3RvX3RoZV9kZHJfc2RyYW0gICAgICAgIChkcXNfZGVsYXlfY3RybF90b190aGVfZGRyX3NkcmFtKSwKLSAgICAgIC5kcXN1cGRhdGVfdG9fdGhlX2Rkcl9zZHJhbSAgICAgICAgICAgICAoZHFzdXBkYXRlX3RvX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmV4dF9zc3JhbV9idXNfYWRkcmVzcyAgICAgICAgICAgICAgICAgIChleHRfc3NyYW1fYnVzX2FkZHJlc3MpLAotICAgICAgLmV4dF9zc3JhbV9idXNfZGF0YSAgICAgICAgICAgICAgICAgICAgIChleHRfc3NyYW1fYnVzX2RhdGEpLAotICAgICAgLmV4dGVybmFsX2NsayAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHRlcm5hbF9jbGspLAotICAgICAgLm91dHB1dGVuYWJsZV9uX3RvX3RoZV9leHRfc3NyYW0gICAgICAgIChvdXRwdXRlbmFibGVfbl90b190aGVfZXh0X3NzcmFtKSwKLSAgICAgIC5yZXNldF9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzZXRfbiksCi0gICAgICAuc2RyYW1fd3JpdGVfY2xrICAgICAgICAgICAgICAgICAgICAgICAgKHNkcmFtX3dyaXRlX2NsayksCi0gICAgICAuc3NyYW1fY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNzcmFtX2NsayksCi0gICAgICAuc3RyYXRpeF9kbGxfY29udHJvbF9mcm9tX3RoZV9kZHJfc2RyYW0gKHN0cmF0aXhfZGxsX2NvbnRyb2xfZnJvbV90aGVfZGRyX3NkcmFtKSwKLSAgICAgIC5zeXN0ZW1fY2xrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAud3JpdGVfY2xrX3RvX3RoZV9kZHJfc2RyYW0gICAgICAgICAgICAgKHdyaXRlX2Nsa190b190aGVfZGRyX3NkcmFtKQotICAgICk7Ci0KLSAgZXh0X3NzcmFtIHRoZV9leHRfc3NyYW0KLSAgICAoCi0gICAgICAuYWRkcmVzcyAgICAgICAgKGV4dF9zc3JhbV9idXNfYWRkcmVzc1syMCA6IDJdKSwKLSAgICAgIC5hZHNjX24gICAgICAgICAoYWRzY19uX3RvX3RoZV9leHRfc3NyYW0pLAotICAgICAgLmJ3X24gICAgICAgICAgIChid19uX3RvX3RoZV9leHRfc3NyYW0pLAotICAgICAgLmJ3ZV9uICAgICAgICAgIChid2Vfbl90b190aGVfZXh0X3NzcmFtKSwKLSAgICAgIC5jaGlwZW5hYmxlMV9uICAoY2hpcGVuYWJsZTFfbl90b190aGVfZXh0X3NzcmFtKSwKLSAgICAgIC5jbGsgICAgICAgICAgICAoc3lzdGVtX2NsayksCi0gICAgICAuZGF0YSAgICAgICAgICAgKGV4dF9zc3JhbV9idXNfZGF0YSksCi0gICAgICAub3V0cHV0ZW5hYmxlX24gKG91dHB1dGVuYWJsZV9uX3RvX3RoZV9leHRfc3NyYW0pLAotICAgICAgLnJlc2V0X24gICAgICAgIChyZXNldF9uKQotICAgICk7Ci0KLSAgZGRyX3NkcmFtX3Rlc3RfY29tcG9uZW50IHRoZV9kZHJfc2RyYW1fdGVzdF9jb21wb25lbnQKLSAgICAoCi0gICAgICAuY2xrICAgICAgIChzeXN0ZW1fY2xrKSwKLSAgICAgIC5kZHJfYSAgICAgKGRkcl9hX2Zyb21fdGhlX2Rkcl9zZHJhbSksCi0gICAgICAuZGRyX2JhICAgIChkZHJfYmFfZnJvbV90aGVfZGRyX3NkcmFtKSwKLSAgICAgIC5kZHJfY2FzX24gKGRkcl9jYXNfbl9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRkcl9ja2UgICAoZGRyX2NrZV9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRkcl9jc19uICAoZGRyX2NzX25fZnJvbV90aGVfZGRyX3NkcmFtKSwKLSAgICAgIC5kZHJfZG0gICAgKGRkcl9kbV9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRkcl9kcSAgICAoZGRyX2RxX3RvX2FuZF9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRkcl9kcXMgICAoZGRyX2Rxc190b19hbmRfZnJvbV90aGVfZGRyX3NkcmFtKSwKLSAgICAgIC5kZHJfcmFzX24gKGRkcl9yYXNfbl9mcm9tX3RoZV9kZHJfc2RyYW0pLAotICAgICAgLmRkcl93ZV9uICAoZGRyX3dlX25fZnJvbV90aGVfZGRyX3NkcmFtKQotICAgICk7Ci0KLSAgaW5pdGlhbAotICAgIGV4dGVybmFsX2NsayA9IDEnYjA7Ci0gIGFsd2F5cwotICAgICMxMCBleHRlcm5hbF9jbGsgPD0gfmV4dGVybmFsX2NsazsKLSAgCi0gIGluaXRpYWwgCi0gICAgYmVnaW4KLSAgICAgIHJlc2V0X24gPD0gMDsKLSAgICAgICMyMDAgcmVzZXRfbiA8PSAxOwotICAgIGVuZAotCi1lbmRtb2R1bGUKLQotCi0vL3N5bnRoZXNpcyB0cmFuc2xhdGVfb24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9UZXN0RmlsZVNwbGl0L3BpcGVsaW5lX2JyaWRnZS52IGIvdGVzdHMvVGVzdEZpbGVTcGxpdC9waXBlbGluZV9icmlkZ2UudgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcxMTY4My4uMDAwMDAwMAotLS0gYS90ZXN0cy9UZXN0RmlsZVNwbGl0L3BpcGVsaW5lX2JyaWRnZS52CisrKyAvZGV2L251bGwKQEAgLTEsOTg2ICswLDAgQEAKLS8vTGVnYWwgTm90aWNlOiAoQykyMDEwIEFsdGVyYSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFlvdXIKLS8vdXNlIG9mIEFsdGVyYSBDb3Jwb3JhdGlvbidzIGRlc2lnbiB0b29scywgbG9naWMgZnVuY3Rpb25zIGFuZCBvdGhlcgotLy9zb2Z0d2FyZSBhbmQgdG9vbHMsIGFuZCBpdHMgQU1QUCBwYXJ0bmVyIGxvZ2ljIGZ1bmN0aW9ucywgYW5kIGFueQotLy9vdXRwdXQgZmlsZXMgYW55IG9mIHRoZSBmb3JlZ29pbmcgKGluY2x1ZGluZyBkZXZpY2UgcHJvZ3JhbW1pbmcgb3IKLS8vc2ltdWxhdGlvbiBmaWxlcyksIGFuZCBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIGFyZQotLy9leHByZXNzbHkgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEFsdGVyYSBQcm9ncmFtCi0vL0xpY2Vuc2UgU3Vic2NyaXB0aW9uIEFncmVlbWVudCBvciBvdGhlciBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50LAotLy9pbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgdGhhdCB5b3VyIHVzZSBpcyBmb3IgdGhlIHNvbGUgcHVycG9zZQotLy9vZiBwcm9ncmFtbWluZyBsb2dpYyBkZXZpY2VzIG1hbnVmYWN0dXJlZCBieSBBbHRlcmEgYW5kIHNvbGQgYnkgQWx0ZXJhCi0vL29yIGl0cyBhdXRob3JpemVkIGRpc3RyaWJ1dG9ycy4gIFBsZWFzZSByZWZlciB0byB0aGUgYXBwbGljYWJsZQotLy9hZ3JlZW1lbnQgZm9yIGZ1cnRoZXIgZGV0YWlscy4KLQotLy8gc3ludGhlc2lzIHRyYW5zbGF0ZV9vZmYKLWB0aW1lc2NhbGUgMW5zIC8gMXBzCi0vLyBzeW50aGVzaXMgdHJhbnNsYXRlX29uCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcGlwZWxpbmVfYnJpZGdlX2Rvd25zdHJlYW1fYWRhcHRlciAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlucHV0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2NsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2VuZG9mcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3dhaXRyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfYXJiaXRlcmxvY2syLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9jaGlwc2VsZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfd3JpdGVkYXRhLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYXJiaXRlcmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9hcmJpdGVybG9jazIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2NoaXBzZWxlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX25hdGl2ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9lbmRvZnBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3dhaXRyZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbIDExOiAwXSBtMV9hZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrOwotICBvdXRwdXQgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrMjsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9idXJzdGNvdW50OwotICBvdXRwdXQgIFsgIDM6IDBdIG0xX2J5dGVlbmFibGU7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfY2hpcHNlbGVjdDsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9kZWJ1Z2FjY2VzczsKLSAgb3V0cHV0ICBbICA5OiAwXSBtMV9uYXRpdmVhZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIG0xX3JlYWQ7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gbTFfd3JpdGVkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHMxX2VuZG9mcGFja2V0OwotICBvdXRwdXQgIFsgMzE6IDBdIHMxX3JlYWRkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHMxX3JlYWRkYXRhdmFsaWQ7Ci0gIG91dHB1dCAgICAgICAgICAgczFfd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgbTFfY2xrOwotICBpbnB1dCAgICAgICAgICAgIG0xX2VuZG9mcGFja2V0OwotICBpbnB1dCAgIFsgMzE6IDBdIG0xX3JlYWRkYXRhOwotICBpbnB1dCAgICAgICAgICAgIG0xX3JlYWRkYXRhdmFsaWQ7Ci0gIGlucHV0ICAgICAgICAgICAgbTFfcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICBtMV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICBbIDExOiAwXSBzMV9hZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrOwotICBpbnB1dCAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrMjsKLSAgaW5wdXQgICAgICAgICAgICBzMV9idXJzdGNvdW50OwotICBpbnB1dCAgIFsgIDM6IDBdIHMxX2J5dGVlbmFibGU7Ci0gIGlucHV0ICAgICAgICAgICAgczFfY2hpcHNlbGVjdDsKLSAgaW5wdXQgICAgICAgICAgICBzMV9kZWJ1Z2FjY2VzczsKLSAgaW5wdXQgICBbICA5OiAwXSBzMV9uYXRpdmVhZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIHMxX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgczFfd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gczFfd3JpdGVkYXRhOwotCi0gIHJlZyAgICAgWyAxMTogMF0gbTFfYWRkcmVzczsKLSAgcmVnICAgICAgICAgICAgICBtMV9hcmJpdGVybG9jazsKLSAgcmVnICAgICAgICAgICAgICBtMV9hcmJpdGVybG9jazI7Ci0gIHJlZyAgICAgICAgICAgICAgbTFfYnVyc3Rjb3VudDsKLSAgcmVnICAgICBbICAzOiAwXSBtMV9ieXRlZW5hYmxlOwotICByZWcgICAgICAgICAgICAgIG0xX2NoaXBzZWxlY3Q7Ci0gIHJlZyAgICAgICAgICAgICAgbTFfZGVidWdhY2Nlc3M7Ci0gIHJlZyAgICAgWyAgOTogMF0gbTFfbmF0aXZlYWRkcmVzczsKLSAgcmVnICAgICAgICAgICAgICBtMV9yZWFkOwotICByZWcgICAgICAgICAgICAgIG0xX3dyaXRlOwotICByZWcgICAgIFsgMzE6IDBdIG0xX3dyaXRlZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBzMV9lbmRvZnBhY2tldDsKLSAgd2lyZSAgICBbIDMxOiAwXSBzMV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBzMV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIHMxX3dhaXRyZXF1ZXN0OwotICAvL3MxLCB3aGljaCBpcyBhbiBlX2F2YWxvbl9hZGFwdGVyX3NsYXZlCi0gIC8vbTEsIHdoaWNoIGlzIGFuIGVfYXZhbG9uX2FkYXB0ZXJfbWFzdGVyCi0gIGFzc2lnbiBzMV9lbmRvZnBhY2tldCA9IG0xX2VuZG9mcGFja2V0OwotICBhc3NpZ24gczFfcmVhZGRhdGEgPSBtMV9yZWFkZGF0YTsKLSAgYXNzaWduIHMxX3JlYWRkYXRhdmFsaWQgPSBtMV9yZWFkZGF0YXZhbGlkOwotICBhc3NpZ24gczFfd2FpdHJlcXVlc3QgPSBtMV93YWl0cmVxdWVzdDsKLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIG0xX2FkZHJlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5tMV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBtMV9hZGRyZXNzIDw9IHMxX2FkZHJlc3M7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgbTFfYXJiaXRlcmxvY2sgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5tMV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBtMV9hcmJpdGVybG9jayA8PSBzMV9hcmJpdGVybG9jazsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgbTFfY2xrIG9yIG5lZ2VkZ2UgbTFfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKG0xX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBtMV9hcmJpdGVybG9jazIgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5tMV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBtMV9hcmJpdGVybG9jazIgPD0gczFfYXJiaXRlcmxvY2syOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIG0xX2J1cnN0Y291bnQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5tMV93YWl0cmVxdWVzdCkKLSAgICAgICAgICBtMV9idXJzdGNvdW50IDw9IHMxX2J1cnN0Y291bnQ7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgbTFfYnl0ZWVuYWJsZSA8PSAwOwotICAgICAgZWxzZSBpZiAofm0xX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIG0xX2J5dGVlbmFibGUgPD0gczFfYnl0ZWVuYWJsZTsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgbTFfY2xrIG9yIG5lZ2VkZ2UgbTFfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKG0xX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBtMV9jaGlwc2VsZWN0IDw9IDA7Ci0gICAgICBlbHNlIGlmICh+bTFfd2FpdHJlcXVlc3QpCi0gICAgICAgICAgbTFfY2hpcHNlbGVjdCA8PSBzMV9jaGlwc2VsZWN0OwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIG0xX2RlYnVnYWNjZXNzIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+bTFfd2FpdHJlcXVlc3QpCi0gICAgICAgICAgbTFfZGVidWdhY2Nlc3MgPD0gczFfZGVidWdhY2Nlc3M7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgbTFfbmF0aXZlYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSBpZiAofm0xX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIG0xX25hdGl2ZWFkZHJlc3MgPD0gczFfbmF0aXZlYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIGFsd2F5cyBAKHBvc2VkZ2UgbTFfY2xrIG9yIG5lZ2VkZ2UgbTFfcmVzZXRfbikKLSAgICBiZWdpbgotICAgICAgaWYgKG0xX3Jlc2V0X24gPT0gMCkKLSAgICAgICAgICBtMV9yZWFkIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+bTFfd2FpdHJlcXVlc3QpCi0gICAgICAgICAgbTFfcmVhZCA8PSBzMV9yZWFkOwotICAgIGVuZAotCi0KLSAgYWx3YXlzIEAocG9zZWRnZSBtMV9jbGsgb3IgbmVnZWRnZSBtMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAobTFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIG0xX3dyaXRlIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+bTFfd2FpdHJlcXVlc3QpCi0gICAgICAgICAgbTFfd3JpdGUgPD0gczFfd3JpdGU7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgbTFfd3JpdGVkYXRhIDw9IDA7Ci0gICAgICBlbHNlIGlmICh+bTFfd2FpdHJlcXVlc3QpCi0gICAgICAgICAgbTFfd3JpdGVkYXRhIDw9IHMxX3dyaXRlZGF0YTsKLSAgICBlbmQKLQotCi0KLWVuZG1vZHVsZQotCi0KLQotLy8gdHVybiBvZmYgc3VwZXJmbHVvdXMgdmVyaWxvZyBwcm9jZXNzb3Igd2FybmluZ3MgCi0vLyBhbHRlcmEgbWVzc2FnZV9sZXZlbCBMZXZlbDEgCi0vLyBhbHRlcmEgbWVzc2FnZV9vZmYgMTAwMzQgMTAwMzUgMTAwMzYgMTAwMzcgMTAyMzAgMTAyNDAgMTAwMzAgCi0KLW1vZHVsZSBwaXBlbGluZV9icmlkZ2VfdXBzdHJlYW1fYWRhcHRlciAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfY2xrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2VuZG9mcGFja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3JlYWRkYXRhdmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV93YWl0cmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9jbGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfZmx1c2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfbmF0aXZlYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9yZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3Jlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfd3JpdGVkYXRhLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYXJiaXRlcmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYXJiaXRlcmxvY2syLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9jaGlwc2VsZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX25hdGl2ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfZW5kb2ZwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV93YWl0cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgMTE6IDBdIG0xX2FkZHJlc3M7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfYXJiaXRlcmxvY2s7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfYXJiaXRlcmxvY2syOwotICBvdXRwdXQgICAgICAgICAgIG0xX2J1cnN0Y291bnQ7Ci0gIG91dHB1dCAgWyAgMzogMF0gbTFfYnl0ZWVuYWJsZTsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9jaGlwc2VsZWN0OwotICBvdXRwdXQgICAgICAgICAgIG0xX2RlYnVnYWNjZXNzOwotICBvdXRwdXQgIFsgIDk6IDBdIG0xX25hdGl2ZWFkZHJlc3M7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfcmVhZDsKLSAgb3V0cHV0ICAgICAgICAgICBtMV93cml0ZTsKLSAgb3V0cHV0ICBbIDMxOiAwXSBtMV93cml0ZWRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgczFfZW5kb2ZwYWNrZXQ7Ci0gIG91dHB1dCAgWyAzMTogMF0gczFfcmVhZGRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgczFfcmVhZGRhdGF2YWxpZDsKLSAgb3V0cHV0ICAgICAgICAgICBzMV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICAgICAgICAgICBtMV9jbGs7Ci0gIGlucHV0ICAgICAgICAgICAgbTFfZW5kb2ZwYWNrZXQ7Ci0gIGlucHV0ICAgWyAzMTogMF0gbTFfcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgbTFfcmVhZGRhdGF2YWxpZDsKLSAgaW5wdXQgICAgICAgICAgICBtMV9yZXNldF9uOwotICBpbnB1dCAgICAgICAgICAgIG0xX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgIFsgMTE6IDBdIHMxX2FkZHJlc3M7Ci0gIGlucHV0ICAgICAgICAgICAgczFfYXJiaXRlcmxvY2s7Ci0gIGlucHV0ICAgICAgICAgICAgczFfYXJiaXRlcmxvY2syOwotICBpbnB1dCAgICAgICAgICAgIHMxX2J1cnN0Y291bnQ7Ci0gIGlucHV0ICAgWyAgMzogMF0gczFfYnl0ZWVuYWJsZTsKLSAgaW5wdXQgICAgICAgICAgICBzMV9jaGlwc2VsZWN0OwotICBpbnB1dCAgICAgICAgICAgIHMxX2NsazsKLSAgaW5wdXQgICAgICAgICAgICBzMV9kZWJ1Z2FjY2VzczsKLSAgaW5wdXQgICAgICAgICAgICBzMV9mbHVzaDsKLSAgaW5wdXQgICBbICA5OiAwXSBzMV9uYXRpdmVhZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIHMxX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgczFfcmVzZXRfbjsKLSAgaW5wdXQgICAgICAgICAgICBzMV93cml0ZTsKLSAgaW5wdXQgICBbIDMxOiAwXSBzMV93cml0ZWRhdGE7Ci0KLSAgd2lyZSAgICBbIDExOiAwXSBtMV9hZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICBtMV9idXJzdGNvdW50OwotICB3aXJlICAgIFsgIDM6IDBdIG0xX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfY2hpcHNlbGVjdDsKLSAgd2lyZSAgICAgICAgICAgICBtMV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICBbICA5OiAwXSBtMV9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIG0xX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gbTFfd3JpdGVkYXRhOwotICByZWcgICAgICAgICAgICAgIHMxX2VuZG9mcGFja2V0OwotICByZWcgICAgIFsgMzE6IDBdIHMxX3JlYWRkYXRhOwotICByZWcgICAgICAgICAgICAgIHMxX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgczFfd2FpdHJlcXVlc3Q7Ci0gIC8vczEsIHdoaWNoIGlzIGFuIGVfYXZhbG9uX2FkYXB0ZXJfc2xhdmUKLSAgLy9tMSwgd2hpY2ggaXMgYW4gZV9hdmFsb25fYWRhcHRlcl9tYXN0ZXIKLSAgYWx3YXlzIEAocG9zZWRnZSBzMV9jbGsgb3IgbmVnZWRnZSBzMV9yZXNldF9uKQotICAgIGJlZ2luCi0gICAgICBpZiAoczFfcmVzZXRfbiA9PSAwKQotICAgICAgICAgIHMxX3JlYWRkYXRhdmFsaWQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHMxX2ZsdXNoKQotICAgICAgICAgIHMxX3JlYWRkYXRhdmFsaWQgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIHMxX3JlYWRkYXRhdmFsaWQgPD0gbTFfcmVhZGRhdGF2YWxpZDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBzMV93YWl0cmVxdWVzdCA9IG0xX3dhaXRyZXF1ZXN0OwotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgczFfZW5kb2ZwYWNrZXQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKG0xX3JlYWRkYXRhdmFsaWQpCi0gICAgICAgICAgczFfZW5kb2ZwYWNrZXQgPD0gbTFfZW5kb2ZwYWNrZXQ7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgczFfcmVhZGRhdGEgPD0gMDsKLSAgICAgIGVsc2UgaWYgKG0xX3JlYWRkYXRhdmFsaWQpCi0gICAgICAgICAgczFfcmVhZGRhdGEgPD0gbTFfcmVhZGRhdGE7Ci0gICAgZW5kCi0KLQotICBhc3NpZ24gbTFfYWRkcmVzcyA9IHMxX2FkZHJlc3M7Ci0gIGFzc2lnbiBtMV9hcmJpdGVybG9jayA9IHMxX2FyYml0ZXJsb2NrOwotICBhc3NpZ24gbTFfYXJiaXRlcmxvY2syID0gczFfYXJiaXRlcmxvY2syOwotICBhc3NpZ24gbTFfYnVyc3Rjb3VudCA9IHMxX2J1cnN0Y291bnQ7Ci0gIGFzc2lnbiBtMV9ieXRlZW5hYmxlID0gczFfYnl0ZWVuYWJsZTsKLSAgYXNzaWduIG0xX2NoaXBzZWxlY3QgPSBzMV9jaGlwc2VsZWN0OwotICBhc3NpZ24gbTFfZGVidWdhY2Nlc3MgPSBzMV9kZWJ1Z2FjY2VzczsKLSAgYXNzaWduIG0xX25hdGl2ZWFkZHJlc3MgPSBzMV9uYXRpdmVhZGRyZXNzOwotICBhc3NpZ24gbTFfcmVhZCA9IHMxX3JlYWQ7Ci0gIGFzc2lnbiBtMV93cml0ZSA9IHMxX3dyaXRlOwotICBhc3NpZ24gbTFfd3JpdGVkYXRhID0gczFfd3JpdGVkYXRhOwotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcGlwZWxpbmVfYnJpZGdlX3dhaXRyZXF1ZXN0X2FkYXB0ZXIgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2NsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9lbmRvZnBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9yZWFkZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3Jlc2V0X24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfd2FpdHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2J5dGVlbmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9uYXRpdmVhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfd3JpdGVkYXRhLAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYXJiaXRlcmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYXJiaXRlcmxvY2syLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2J1cnN0Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9jaGlwc2VsZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX2RlYnVnYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0xX25hdGl2ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMV93cml0ZWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfZW5kb2ZwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfcmVhZGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfcmVhZGRhdGF2YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMV93YWl0cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLTsKLQotICBvdXRwdXQgIFsgMTE6IDBdIG0xX2FkZHJlc3M7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfYXJiaXRlcmxvY2s7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfYXJiaXRlcmxvY2syOwotICBvdXRwdXQgICAgICAgICAgIG0xX2J1cnN0Y291bnQ7Ci0gIG91dHB1dCAgWyAgMzogMF0gbTFfYnl0ZWVuYWJsZTsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9jaGlwc2VsZWN0OwotICBvdXRwdXQgICAgICAgICAgIG0xX2RlYnVnYWNjZXNzOwotICBvdXRwdXQgIFsgIDk6IDBdIG0xX25hdGl2ZWFkZHJlc3M7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfcmVhZDsKLSAgb3V0cHV0ICAgICAgICAgICBtMV93cml0ZTsKLSAgb3V0cHV0ICBbIDMxOiAwXSBtMV93cml0ZWRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgczFfZW5kb2ZwYWNrZXQ7Ci0gIG91dHB1dCAgWyAzMTogMF0gczFfcmVhZGRhdGE7Ci0gIG91dHB1dCAgICAgICAgICAgczFfcmVhZGRhdGF2YWxpZDsKLSAgb3V0cHV0ICAgICAgICAgICBzMV93YWl0cmVxdWVzdDsKLSAgaW5wdXQgICAgICAgICAgICBtMV9jbGs7Ci0gIGlucHV0ICAgICAgICAgICAgbTFfZW5kb2ZwYWNrZXQ7Ci0gIGlucHV0ICAgWyAzMTogMF0gbTFfcmVhZGRhdGE7Ci0gIGlucHV0ICAgICAgICAgICAgbTFfcmVhZGRhdGF2YWxpZDsKLSAgaW5wdXQgICAgICAgICAgICBtMV9yZXNldF9uOwotICBpbnB1dCAgICAgICAgICAgIG0xX3dhaXRyZXF1ZXN0OwotICBpbnB1dCAgICAgICAgICAgIHJlc2V0X247Ci0gIGlucHV0ICAgWyAxMTogMF0gczFfYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBzMV9hcmJpdGVybG9jazsKLSAgaW5wdXQgICAgICAgICAgICBzMV9hcmJpdGVybG9jazI7Ci0gIGlucHV0ICAgICAgICAgICAgczFfYnVyc3Rjb3VudDsKLSAgaW5wdXQgICBbICAzOiAwXSBzMV9ieXRlZW5hYmxlOwotICBpbnB1dCAgICAgICAgICAgIHMxX2NoaXBzZWxlY3Q7Ci0gIGlucHV0ICAgICAgICAgICAgczFfZGVidWdhY2Nlc3M7Ci0gIGlucHV0ICAgWyAgOTogMF0gczFfbmF0aXZlYWRkcmVzczsKLSAgaW5wdXQgICAgICAgICAgICBzMV9yZWFkOwotICBpbnB1dCAgICAgICAgICAgIHMxX3dyaXRlOwotICBpbnB1dCAgIFsgMzE6IDBdIHMxX3dyaXRlZGF0YTsKLQotICByZWcgICAgIFsgMTE6IDBdIGQxX3MxX2FkZHJlc3M7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfczFfYXJiaXRlcmxvY2s7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfczFfYXJiaXRlcmxvY2syOwotICByZWcgICAgICAgICAgICAgIGQxX3MxX2J1cnN0Y291bnQ7Ci0gIHJlZyAgICAgWyAgMzogMF0gZDFfczFfYnl0ZWVuYWJsZTsKLSAgcmVnICAgICAgICAgICAgICBkMV9zMV9jaGlwc2VsZWN0OwotICByZWcgICAgICAgICAgICAgIGQxX3MxX2RlYnVnYWNjZXNzOwotICByZWcgICAgIFsgIDk6IDBdIGQxX3MxX25hdGl2ZWFkZHJlc3M7Ci0gIHJlZyAgICAgICAgICAgICAgZDFfczFfcmVhZDsKLSAgcmVnICAgICAgICAgICAgICBkMV9zMV93cml0ZTsKLSAgcmVnICAgICBbIDMxOiAwXSBkMV9zMV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgWyAxMTogMF0gbTFfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBtMV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICBtMV9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBtMV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIG0xX2NoaXBzZWxlY3Q7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgWyAgOTogMF0gbTFfbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBtMV9yZWFkOwotICB3aXJlICAgICAgICAgICAgIG0xX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIG0xX3dyaXRlZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBzMV9lbmRvZnBhY2tldDsKLSAgd2lyZSAgICBbIDMxOiAwXSBzMV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBzMV9yZWFkZGF0YXZhbGlkOwotICByZWcgICAgICAgICAgICAgIHMxX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIHNldF91c2VfcmVnaXN0ZXJlZDsKLSAgcmVnICAgICAgICAgICAgICB1c2VfcmVnaXN0ZXJlZDsKLSAgLy9zMSwgd2hpY2ggaXMgYW4gZV9hdmFsb25fYWRhcHRlcl9zbGF2ZQotICAvL20xLCB3aGljaCBpcyBhbiBlX2F2YWxvbl9hZGFwdGVyX21hc3RlcgotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgczFfd2FpdHJlcXVlc3QgPD0gMDsKLSAgICAgIGVsc2UgCi0gICAgICAgIHMxX3dhaXRyZXF1ZXN0IDw9IG0xX3dhaXRyZXF1ZXN0OwotICAgIGVuZAotCi0KLSAgYXNzaWduIHMxX2VuZG9mcGFja2V0ID0gbTFfZW5kb2ZwYWNrZXQ7Ci0gIGFzc2lnbiBzMV9yZWFkZGF0YSA9IG0xX3JlYWRkYXRhOwotICBhc3NpZ24gczFfcmVhZGRhdGF2YWxpZCA9IG0xX3JlYWRkYXRhdmFsaWQ7Ci0gIC8vc2V0IHVzZSByZWdpc3RlcmVkLCB3aGljaCBpcyBhbiBlX2Fzc2lnbgotICBhc3NpZ24gc2V0X3VzZV9yZWdpc3RlcmVkID0gbTFfd2FpdHJlcXVlc3QgJiB+czFfd2FpdHJlcXVlc3Q7Ci0KLSAgLy91c2UgcmVnaXN0ZXJlZCwgd2hpY2ggaXMgYW4gZV9yZWdpc3RlcgotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIHJlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChyZXNldF9uID09IDApCi0gICAgICAgICAgdXNlX3JlZ2lzdGVyZWQgPD0gMDsKLSAgICAgIGVsc2UgaWYgKH5tMV93YWl0cmVxdWVzdCAmIHMxX3dhaXRyZXF1ZXN0KQotICAgICAgICAgIHVzZV9yZWdpc3RlcmVkIDw9IDA7Ci0gICAgICBlbHNlIGlmIChzZXRfdXNlX3JlZ2lzdGVyZWQpCi0gICAgICAgICAgdXNlX3JlZ2lzdGVyZWQgPD0gLTE7Ci0gICAgZW5kCi0KLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgZDFfczFfYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSBpZiAoc2V0X3VzZV9yZWdpc3RlcmVkKQotICAgICAgICAgIGQxX3MxX2FkZHJlc3MgPD0gczFfYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtMV9hZGRyZXNzID0gKHVzZV9yZWdpc3RlcmVkKT8gZDFfczFfYWRkcmVzcyA6Ci0gICAgczFfYWRkcmVzczsKLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgZDFfczFfYXJiaXRlcmxvY2sgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHNldF91c2VfcmVnaXN0ZXJlZCkKLSAgICAgICAgICBkMV9zMV9hcmJpdGVybG9jayA8PSBzMV9hcmJpdGVybG9jazsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtMV9hcmJpdGVybG9jayA9ICh1c2VfcmVnaXN0ZXJlZCk/IGQxX3MxX2FyYml0ZXJsb2NrIDoKLSAgICBzMV9hcmJpdGVybG9jazsKLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgZDFfczFfYXJiaXRlcmxvY2syIDw9IDA7Ci0gICAgICBlbHNlIGlmIChzZXRfdXNlX3JlZ2lzdGVyZWQpCi0gICAgICAgICAgZDFfczFfYXJiaXRlcmxvY2syIDw9IHMxX2FyYml0ZXJsb2NrMjsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtMV9hcmJpdGVybG9jazIgPSAodXNlX3JlZ2lzdGVyZWQpPyBkMV9zMV9hcmJpdGVybG9jazIgOgotICAgIHMxX2FyYml0ZXJsb2NrMjsKLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgZDFfczFfYnVyc3Rjb3VudCA8PSAwOwotICAgICAgZWxzZSBpZiAoc2V0X3VzZV9yZWdpc3RlcmVkKQotICAgICAgICAgIGQxX3MxX2J1cnN0Y291bnQgPD0gczFfYnVyc3Rjb3VudDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtMV9idXJzdGNvdW50ID0gKHVzZV9yZWdpc3RlcmVkKT8gZDFfczFfYnVyc3Rjb3VudCA6Ci0gICAgczFfYnVyc3Rjb3VudDsKLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgZDFfczFfYnl0ZWVuYWJsZSA8PSAwOwotICAgICAgZWxzZSBpZiAoc2V0X3VzZV9yZWdpc3RlcmVkKQotICAgICAgICAgIGQxX3MxX2J5dGVlbmFibGUgPD0gczFfYnl0ZWVuYWJsZTsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtMV9ieXRlZW5hYmxlID0gKHVzZV9yZWdpc3RlcmVkKT8gZDFfczFfYnl0ZWVuYWJsZSA6Ci0gICAgczFfYnl0ZWVuYWJsZTsKLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgZDFfczFfY2hpcHNlbGVjdCA8PSAwOwotICAgICAgZWxzZSBpZiAoc2V0X3VzZV9yZWdpc3RlcmVkKQotICAgICAgICAgIGQxX3MxX2NoaXBzZWxlY3QgPD0gczFfY2hpcHNlbGVjdDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtMV9jaGlwc2VsZWN0ID0gKHVzZV9yZWdpc3RlcmVkKT8gZDFfczFfY2hpcHNlbGVjdCA6Ci0gICAgczFfY2hpcHNlbGVjdDsKLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgZDFfczFfZGVidWdhY2Nlc3MgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHNldF91c2VfcmVnaXN0ZXJlZCkKLSAgICAgICAgICBkMV9zMV9kZWJ1Z2FjY2VzcyA8PSBzMV9kZWJ1Z2FjY2VzczsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtMV9kZWJ1Z2FjY2VzcyA9ICh1c2VfcmVnaXN0ZXJlZCk/IGQxX3MxX2RlYnVnYWNjZXNzIDoKLSAgICBzMV9kZWJ1Z2FjY2VzczsKLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgZDFfczFfbmF0aXZlYWRkcmVzcyA8PSAwOwotICAgICAgZWxzZSBpZiAoc2V0X3VzZV9yZWdpc3RlcmVkKQotICAgICAgICAgIGQxX3MxX25hdGl2ZWFkZHJlc3MgPD0gczFfbmF0aXZlYWRkcmVzczsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtMV9uYXRpdmVhZGRyZXNzID0gKHVzZV9yZWdpc3RlcmVkKT8gZDFfczFfbmF0aXZlYWRkcmVzcyA6Ci0gICAgczFfbmF0aXZlYWRkcmVzczsKLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgZDFfczFfcmVhZCA8PSAwOwotICAgICAgZWxzZSBpZiAoc2V0X3VzZV9yZWdpc3RlcmVkKQotICAgICAgICAgIGQxX3MxX3JlYWQgPD0gczFfcmVhZDsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtMV9yZWFkID0gKHVzZV9yZWdpc3RlcmVkKT8gZDFfczFfcmVhZCA6Ci0gICAgczFfcmVhZDsKLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgZDFfczFfd3JpdGUgPD0gMDsKLSAgICAgIGVsc2UgaWYgKHNldF91c2VfcmVnaXN0ZXJlZCkKLSAgICAgICAgICBkMV9zMV93cml0ZSA8PSBzMV93cml0ZTsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtMV93cml0ZSA9ICh1c2VfcmVnaXN0ZXJlZCk/IGQxX3MxX3dyaXRlIDoKLSAgICBzMV93cml0ZTsKLQotICBhbHdheXMgQChwb3NlZGdlIG0xX2NsayBvciBuZWdlZGdlIG0xX3Jlc2V0X24pCi0gICAgYmVnaW4KLSAgICAgIGlmIChtMV9yZXNldF9uID09IDApCi0gICAgICAgICAgZDFfczFfd3JpdGVkYXRhIDw9IDA7Ci0gICAgICBlbHNlIGlmIChzZXRfdXNlX3JlZ2lzdGVyZWQpCi0gICAgICAgICAgZDFfczFfd3JpdGVkYXRhIDw9IHMxX3dyaXRlZGF0YTsKLSAgICBlbmQKLQotCi0gIGFzc2lnbiBtMV93cml0ZWRhdGEgPSAodXNlX3JlZ2lzdGVyZWQpPyBkMV9zMV93cml0ZWRhdGEgOgotICAgIHMxX3dyaXRlZGF0YTsKLQotCi1lbmRtb2R1bGUKLQotCi0KLS8vIHR1cm4gb2ZmIHN1cGVyZmx1b3VzIHZlcmlsb2cgcHJvY2Vzc29yIHdhcm5pbmdzIAotLy8gYWx0ZXJhIG1lc3NhZ2VfbGV2ZWwgTGV2ZWwxIAotLy8gYWx0ZXJhIG1lc3NhZ2Vfb2ZmIDEwMDM0IDEwMDM1IDEwMDM2IDEwMDM3IDEwMjMwIDEwMjQwIDEwMDMwIAotCi1tb2R1bGUgcGlwZWxpbmVfYnJpZGdlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNsaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfZW5kb2ZwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtMV93YWl0cmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRfbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgczFfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgczFfYXJiaXRlcmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgczFfYnVyc3Rjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgczFfYnl0ZWVuYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgczFfY2hpcHNlbGVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgczFfZGVidWdhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX25hdGl2ZWFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzMV93cml0ZWRhdGEsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9idXJzdGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9ieXRlZW5hYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9jaGlwc2VsZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBtMV9kZWJ1Z2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbTFfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG0xX3dyaXRlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgczFfZW5kb2ZwYWNrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHMxX3JlYWRkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzMV9yZWFkZGF0YXZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzMV93YWl0cmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICApCi07Ci0KLSAgb3V0cHV0ICBbIDExOiAwXSBtMV9hZGRyZXNzOwotICBvdXRwdXQgICAgICAgICAgIG0xX2J1cnN0Y291bnQ7Ci0gIG91dHB1dCAgWyAgMzogMF0gbTFfYnl0ZWVuYWJsZTsKLSAgb3V0cHV0ICAgICAgICAgICBtMV9jaGlwc2VsZWN0OwotICBvdXRwdXQgICAgICAgICAgIG0xX2RlYnVnYWNjZXNzOwotICBvdXRwdXQgICAgICAgICAgIG0xX3JlYWQ7Ci0gIG91dHB1dCAgICAgICAgICAgbTFfd3JpdGU7Ci0gIG91dHB1dCAgWyAzMTogMF0gbTFfd3JpdGVkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHMxX2VuZG9mcGFja2V0OwotICBvdXRwdXQgIFsgMzE6IDBdIHMxX3JlYWRkYXRhOwotICBvdXRwdXQgICAgICAgICAgIHMxX3JlYWRkYXRhdmFsaWQ7Ci0gIG91dHB1dCAgICAgICAgICAgczFfd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgY2xrOwotICBpbnB1dCAgICAgICAgICAgIG0xX2VuZG9mcGFja2V0OwotICBpbnB1dCAgIFsgMzE6IDBdIG0xX3JlYWRkYXRhOwotICBpbnB1dCAgICAgICAgICAgIG0xX3JlYWRkYXRhdmFsaWQ7Ci0gIGlucHV0ICAgICAgICAgICAgbTFfd2FpdHJlcXVlc3Q7Ci0gIGlucHV0ICAgICAgICAgICAgcmVzZXRfbjsKLSAgaW5wdXQgICBbICA5OiAwXSBzMV9hZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrOwotICBpbnB1dCAgICAgICAgICAgIHMxX2FyYml0ZXJsb2NrMjsKLSAgaW5wdXQgICAgICAgICAgICBzMV9idXJzdGNvdW50OwotICBpbnB1dCAgIFsgIDM6IDBdIHMxX2J5dGVlbmFibGU7Ci0gIGlucHV0ICAgICAgICAgICAgczFfY2hpcHNlbGVjdDsKLSAgaW5wdXQgICAgICAgICAgICBzMV9kZWJ1Z2FjY2VzczsKLSAgaW5wdXQgICBbICA5OiAwXSBzMV9uYXRpdmVhZGRyZXNzOwotICBpbnB1dCAgICAgICAgICAgIHMxX3JlYWQ7Ci0gIGlucHV0ICAgICAgICAgICAgczFfd3JpdGU7Ci0gIGlucHV0ICAgWyAzMTogMF0gczFfd3JpdGVkYXRhOwotCi0gIHdpcmUgICAgWyAxMTogMF0gZG93bnN0cmVhbV9tMV9hZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fbTFfYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9tMV9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9tMV9idXJzdGNvdW50OwotICB3aXJlICAgIFsgIDM6IDBdIGRvd25zdHJlYW1fbTFfYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX20xX2NoaXBzZWxlY3Q7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9tMV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX20xX2VuZG9mcGFja2V0OwotICB3aXJlICAgIFsgIDk6IDBdIGRvd25zdHJlYW1fbTFfbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX20xX3JlYWQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gZG93bnN0cmVhbV9tMV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX20xX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9tMV93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX20xX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIGRvd25zdHJlYW1fbTFfd3JpdGVkYXRhOwotICB3aXJlICAgIFsgMTE6IDBdIGRvd25zdHJlYW1fczFfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICBkb3duc3RyZWFtX3MxX2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fczFfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fczFfYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSBkb3duc3RyZWFtX3MxX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9zMV9jaGlwc2VsZWN0OwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fczFfZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9zMV9lbmRvZnBhY2tldDsKLSAgd2lyZSAgICBbICA5OiAwXSBkb3duc3RyZWFtX3MxX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9zMV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIGRvd25zdHJlYW1fczFfcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9zMV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIGRvd25zdHJlYW1fczFfd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgZG93bnN0cmVhbV9zMV93cml0ZTsKLSAgd2lyZSAgICBbIDMxOiAwXSBkb3duc3RyZWFtX3MxX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDExOiAwXSBtMV9hZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIG0xX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICBtMV9idXJzdGNvdW50OwotICB3aXJlICAgIFsgIDM6IDBdIG0xX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfY2hpcHNlbGVjdDsKLSAgd2lyZSAgICAgICAgICAgICBtMV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICBbICA5OiAwXSBtMV9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIG0xX3JlYWQ7Ci0gIHdpcmUgICAgICAgICAgICAgbTFfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gbTFfd3JpdGVkYXRhOwotICB3aXJlICAgICAgICAgICAgIHMxX2VuZG9mcGFja2V0OwotICB3aXJlICAgIFsgMzE6IDBdIHMxX3JlYWRkYXRhOwotICB3aXJlICAgICAgICAgICAgIHMxX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgczFfd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgWyAxMTogMF0gdXBzdHJlYW1fbTFfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9tMV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9tMV9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fbTFfYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSB1cHN0cmVhbV9tMV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX20xX2NoaXBzZWxlY3Q7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fbTFfZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fbTFfZW5kb2ZwYWNrZXQ7Ci0gIHdpcmUgICAgWyAgOTogMF0gdXBzdHJlYW1fbTFfbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9tMV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIHVwc3RyZWFtX20xX3JlYWRkYXRhOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX20xX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fbTFfd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fbTFfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gdXBzdHJlYW1fbTFfd3JpdGVkYXRhOwotICB3aXJlICAgIFsgMTE6IDBdIHVwc3RyZWFtX3MxX2FkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fczFfYXJiaXRlcmxvY2s7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fczFfYXJiaXRlcmxvY2syOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3MxX2J1cnN0Y291bnQ7Ci0gIHdpcmUgICAgWyAgMzogMF0gdXBzdHJlYW1fczFfYnl0ZWVuYWJsZTsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9zMV9jaGlwc2VsZWN0OwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3MxX2RlYnVnYWNjZXNzOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3MxX2VuZG9mcGFja2V0OwotICB3aXJlICAgIFsgIDk6IDBdIHVwc3RyZWFtX3MxX25hdGl2ZWFkZHJlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgdXBzdHJlYW1fczFfcmVhZDsKLSAgd2lyZSAgICBbIDMxOiAwXSB1cHN0cmVhbV9zMV9yZWFkZGF0YTsKLSAgd2lyZSAgICAgICAgICAgICB1cHN0cmVhbV9zMV9yZWFkZGF0YXZhbGlkOwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3MxX3dhaXRyZXF1ZXN0OwotICB3aXJlICAgICAgICAgICAgIHVwc3RyZWFtX3MxX3dyaXRlOwotICB3aXJlICAgIFsgMzE6IDBdIHVwc3RyZWFtX3MxX3dyaXRlZGF0YTsKLSAgd2lyZSAgICBbIDExOiAwXSB3YWl0cmVxdWVzdF9tMV9hZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X20xX2FyYml0ZXJsb2NrOwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X20xX2FyYml0ZXJsb2NrMjsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9tMV9idXJzdGNvdW50OwotICB3aXJlICAgIFsgIDM6IDBdIHdhaXRyZXF1ZXN0X20xX2J5dGVlbmFibGU7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfbTFfY2hpcHNlbGVjdDsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9tMV9kZWJ1Z2FjY2VzczsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9tMV9lbmRvZnBhY2tldDsKLSAgd2lyZSAgICBbICA5OiAwXSB3YWl0cmVxdWVzdF9tMV9uYXRpdmVhZGRyZXNzOwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X20xX3JlYWQ7Ci0gIHdpcmUgICAgWyAzMTogMF0gd2FpdHJlcXVlc3RfbTFfcmVhZGRhdGE7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfbTFfcmVhZGRhdGF2YWxpZDsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9tMV93YWl0cmVxdWVzdDsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9tMV93cml0ZTsKLSAgd2lyZSAgICBbIDMxOiAwXSB3YWl0cmVxdWVzdF9tMV93cml0ZWRhdGE7Ci0gIHdpcmUgICAgWyAxMTogMF0gd2FpdHJlcXVlc3RfczFfYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9zMV9hcmJpdGVybG9jazsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9zMV9hcmJpdGVybG9jazI7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfczFfYnVyc3Rjb3VudDsKLSAgd2lyZSAgICBbICAzOiAwXSB3YWl0cmVxdWVzdF9zMV9ieXRlZW5hYmxlOwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X3MxX2NoaXBzZWxlY3Q7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfczFfZGVidWdhY2Nlc3M7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfczFfZW5kb2ZwYWNrZXQ7Ci0gIHdpcmUgICAgWyAgOTogMF0gd2FpdHJlcXVlc3RfczFfbmF0aXZlYWRkcmVzczsKLSAgd2lyZSAgICAgICAgICAgICB3YWl0cmVxdWVzdF9zMV9yZWFkOwotICB3aXJlICAgIFsgMzE6IDBdIHdhaXRyZXF1ZXN0X3MxX3JlYWRkYXRhOwotICB3aXJlICAgICAgICAgICAgIHdhaXRyZXF1ZXN0X3MxX3JlYWRkYXRhdmFsaWQ7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfczFfd2FpdHJlcXVlc3Q7Ci0gIHdpcmUgICAgICAgICAgICAgd2FpdHJlcXVlc3RfczFfd3JpdGU7Ci0gIHdpcmUgICAgWyAzMTogMF0gd2FpdHJlcXVlc3RfczFfd3JpdGVkYXRhOwotICBwaXBlbGluZV9icmlkZ2VfZG93bnN0cmVhbV9hZGFwdGVyIHRoZV9waXBlbGluZV9icmlkZ2VfZG93bnN0cmVhbV9hZGFwdGVyCi0gICAgKAotICAgICAgLm0xX2FkZHJlc3MgICAgICAgKGRvd25zdHJlYW1fbTFfYWRkcmVzcyksCi0gICAgICAubTFfYXJiaXRlcmxvY2sgICAoZG93bnN0cmVhbV9tMV9hcmJpdGVybG9jayksCi0gICAgICAubTFfYXJiaXRlcmxvY2syICAoZG93bnN0cmVhbV9tMV9hcmJpdGVybG9jazIpLAotICAgICAgLm0xX2J1cnN0Y291bnQgICAgKGRvd25zdHJlYW1fbTFfYnVyc3Rjb3VudCksCi0gICAgICAubTFfYnl0ZWVuYWJsZSAgICAoZG93bnN0cmVhbV9tMV9ieXRlZW5hYmxlKSwKLSAgICAgIC5tMV9jaGlwc2VsZWN0ICAgIChkb3duc3RyZWFtX20xX2NoaXBzZWxlY3QpLAotICAgICAgLm0xX2NsayAgICAgICAgICAgKGNsayksCi0gICAgICAubTFfZGVidWdhY2Nlc3MgICAoZG93bnN0cmVhbV9tMV9kZWJ1Z2FjY2VzcyksCi0gICAgICAubTFfZW5kb2ZwYWNrZXQgICAoZG93bnN0cmVhbV9tMV9lbmRvZnBhY2tldCksCi0gICAgICAubTFfbmF0aXZlYWRkcmVzcyAoZG93bnN0cmVhbV9tMV9uYXRpdmVhZGRyZXNzKSwKLSAgICAgIC5tMV9yZWFkICAgICAgICAgIChkb3duc3RyZWFtX20xX3JlYWQpLAotICAgICAgLm0xX3JlYWRkYXRhICAgICAgKGRvd25zdHJlYW1fbTFfcmVhZGRhdGEpLAotICAgICAgLm0xX3JlYWRkYXRhdmFsaWQgKGRvd25zdHJlYW1fbTFfcmVhZGRhdGF2YWxpZCksCi0gICAgICAubTFfcmVzZXRfbiAgICAgICAocmVzZXRfbiksCi0gICAgICAubTFfd2FpdHJlcXVlc3QgICAoZG93bnN0cmVhbV9tMV93YWl0cmVxdWVzdCksCi0gICAgICAubTFfd3JpdGUgICAgICAgICAoZG93bnN0cmVhbV9tMV93cml0ZSksCi0gICAgICAubTFfd3JpdGVkYXRhICAgICAoZG93bnN0cmVhbV9tMV93cml0ZWRhdGEpLAotICAgICAgLnMxX2FkZHJlc3MgICAgICAgKGRvd25zdHJlYW1fczFfYWRkcmVzcyksCi0gICAgICAuczFfYXJiaXRlcmxvY2sgICAoZG93bnN0cmVhbV9zMV9hcmJpdGVybG9jayksCi0gICAgICAuczFfYXJiaXRlcmxvY2syICAoZG93bnN0cmVhbV9zMV9hcmJpdGVybG9jazIpLAotICAgICAgLnMxX2J1cnN0Y291bnQgICAgKGRvd25zdHJlYW1fczFfYnVyc3Rjb3VudCksCi0gICAgICAuczFfYnl0ZWVuYWJsZSAgICAoZG93bnN0cmVhbV9zMV9ieXRlZW5hYmxlKSwKLSAgICAgIC5zMV9jaGlwc2VsZWN0ICAgIChkb3duc3RyZWFtX3MxX2NoaXBzZWxlY3QpLAotICAgICAgLnMxX2RlYnVnYWNjZXNzICAgKGRvd25zdHJlYW1fczFfZGVidWdhY2Nlc3MpLAotICAgICAgLnMxX2VuZG9mcGFja2V0ICAgKGRvd25zdHJlYW1fczFfZW5kb2ZwYWNrZXQpLAotICAgICAgLnMxX25hdGl2ZWFkZHJlc3MgKGRvd25zdHJlYW1fczFfbmF0aXZlYWRkcmVzcyksCi0gICAgICAuczFfcmVhZCAgICAgICAgICAoZG93bnN0cmVhbV9zMV9yZWFkKSwKLSAgICAgIC5zMV9yZWFkZGF0YSAgICAgIChkb3duc3RyZWFtX3MxX3JlYWRkYXRhKSwKLSAgICAgIC5zMV9yZWFkZGF0YXZhbGlkIChkb3duc3RyZWFtX3MxX3JlYWRkYXRhdmFsaWQpLAotICAgICAgLnMxX3dhaXRyZXF1ZXN0ICAgKGRvd25zdHJlYW1fczFfd2FpdHJlcXVlc3QpLAotICAgICAgLnMxX3dyaXRlICAgICAgICAgKGRvd25zdHJlYW1fczFfd3JpdGUpLAotICAgICAgLnMxX3dyaXRlZGF0YSAgICAgKGRvd25zdHJlYW1fczFfd3JpdGVkYXRhKQotICAgICk7Ci0KLSAgcGlwZWxpbmVfYnJpZGdlX3Vwc3RyZWFtX2FkYXB0ZXIgdGhlX3BpcGVsaW5lX2JyaWRnZV91cHN0cmVhbV9hZGFwdGVyCi0gICAgKAotICAgICAgLm0xX2FkZHJlc3MgICAgICAgKHVwc3RyZWFtX20xX2FkZHJlc3MpLAotICAgICAgLm0xX2FyYml0ZXJsb2NrICAgKHVwc3RyZWFtX20xX2FyYml0ZXJsb2NrKSwKLSAgICAgIC5tMV9hcmJpdGVybG9jazIgICh1cHN0cmVhbV9tMV9hcmJpdGVybG9jazIpLAotICAgICAgLm0xX2J1cnN0Y291bnQgICAgKHVwc3RyZWFtX20xX2J1cnN0Y291bnQpLAotICAgICAgLm0xX2J5dGVlbmFibGUgICAgKHVwc3RyZWFtX20xX2J5dGVlbmFibGUpLAotICAgICAgLm0xX2NoaXBzZWxlY3QgICAgKHVwc3RyZWFtX20xX2NoaXBzZWxlY3QpLAotICAgICAgLm0xX2NsayAgICAgICAgICAgKGNsayksCi0gICAgICAubTFfZGVidWdhY2Nlc3MgICAodXBzdHJlYW1fbTFfZGVidWdhY2Nlc3MpLAotICAgICAgLm0xX2VuZG9mcGFja2V0ICAgKHVwc3RyZWFtX20xX2VuZG9mcGFja2V0KSwKLSAgICAgIC5tMV9uYXRpdmVhZGRyZXNzICh1cHN0cmVhbV9tMV9uYXRpdmVhZGRyZXNzKSwKLSAgICAgIC5tMV9yZWFkICAgICAgICAgICh1cHN0cmVhbV9tMV9yZWFkKSwKLSAgICAgIC5tMV9yZWFkZGF0YSAgICAgICh1cHN0cmVhbV9tMV9yZWFkZGF0YSksCi0gICAgICAubTFfcmVhZGRhdGF2YWxpZCAodXBzdHJlYW1fbTFfcmVhZGRhdGF2YWxpZCksCi0gICAgICAubTFfcmVzZXRfbiAgICAgICAocmVzZXRfbiksCi0gICAgICAubTFfd2FpdHJlcXVlc3QgICAodXBzdHJlYW1fbTFfd2FpdHJlcXVlc3QpLAotICAgICAgLm0xX3dyaXRlICAgICAgICAgKHVwc3RyZWFtX20xX3dyaXRlKSwKLSAgICAgIC5tMV93cml0ZWRhdGEgICAgICh1cHN0cmVhbV9tMV93cml0ZWRhdGEpLAotICAgICAgLnMxX2FkZHJlc3MgICAgICAgKHVwc3RyZWFtX3MxX2FkZHJlc3MpLAotICAgICAgLnMxX2FyYml0ZXJsb2NrICAgKHVwc3RyZWFtX3MxX2FyYml0ZXJsb2NrKSwKLSAgICAgIC5zMV9hcmJpdGVybG9jazIgICh1cHN0cmVhbV9zMV9hcmJpdGVybG9jazIpLAotICAgICAgLnMxX2J1cnN0Y291bnQgICAgKHVwc3RyZWFtX3MxX2J1cnN0Y291bnQpLAotICAgICAgLnMxX2J5dGVlbmFibGUgICAgKHVwc3RyZWFtX3MxX2J5dGVlbmFibGUpLAotICAgICAgLnMxX2NoaXBzZWxlY3QgICAgKHVwc3RyZWFtX3MxX2NoaXBzZWxlY3QpLAotICAgICAgLnMxX2NsayAgICAgICAgICAgKGNsayksCi0gICAgICAuczFfZGVidWdhY2Nlc3MgICAodXBzdHJlYW1fczFfZGVidWdhY2Nlc3MpLAotICAgICAgLnMxX2VuZG9mcGFja2V0ICAgKHVwc3RyZWFtX3MxX2VuZG9mcGFja2V0KSwKLSAgICAgIC5zMV9mbHVzaCAgICAgICAgICgxJ2IwKSwKLSAgICAgIC5zMV9uYXRpdmVhZGRyZXNzICh1cHN0cmVhbV9zMV9uYXRpdmVhZGRyZXNzKSwKLSAgICAgIC5zMV9yZWFkICAgICAgICAgICh1cHN0cmVhbV9zMV9yZWFkKSwKLSAgICAgIC5zMV9yZWFkZGF0YSAgICAgICh1cHN0cmVhbV9zMV9yZWFkZGF0YSksCi0gICAgICAuczFfcmVhZGRhdGF2YWxpZCAodXBzdHJlYW1fczFfcmVhZGRhdGF2YWxpZCksCi0gICAgICAuczFfcmVzZXRfbiAgICAgICAocmVzZXRfbiksCi0gICAgICAuczFfd2FpdHJlcXVlc3QgICAodXBzdHJlYW1fczFfd2FpdHJlcXVlc3QpLAotICAgICAgLnMxX3dyaXRlICAgICAgICAgKHVwc3RyZWFtX3MxX3dyaXRlKSwKLSAgICAgIC5zMV93cml0ZWRhdGEgICAgICh1cHN0cmVhbV9zMV93cml0ZWRhdGEpCi0gICAgKTsKLQotICBwaXBlbGluZV9icmlkZ2Vfd2FpdHJlcXVlc3RfYWRhcHRlciB0aGVfcGlwZWxpbmVfYnJpZGdlX3dhaXRyZXF1ZXN0X2FkYXB0ZXIKLSAgICAoCi0gICAgICAubTFfYWRkcmVzcyAgICAgICAod2FpdHJlcXVlc3RfbTFfYWRkcmVzcyksCi0gICAgICAubTFfYXJiaXRlcmxvY2sgICAod2FpdHJlcXVlc3RfbTFfYXJiaXRlcmxvY2spLAotICAgICAgLm0xX2FyYml0ZXJsb2NrMiAgKHdhaXRyZXF1ZXN0X20xX2FyYml0ZXJsb2NrMiksCi0gICAgICAubTFfYnVyc3Rjb3VudCAgICAod2FpdHJlcXVlc3RfbTFfYnVyc3Rjb3VudCksCi0gICAgICAubTFfYnl0ZWVuYWJsZSAgICAod2FpdHJlcXVlc3RfbTFfYnl0ZWVuYWJsZSksCi0gICAgICAubTFfY2hpcHNlbGVjdCAgICAod2FpdHJlcXVlc3RfbTFfY2hpcHNlbGVjdCksCi0gICAgICAubTFfY2xrICAgICAgICAgICAoY2xrKSwKLSAgICAgIC5tMV9kZWJ1Z2FjY2VzcyAgICh3YWl0cmVxdWVzdF9tMV9kZWJ1Z2FjY2VzcyksCi0gICAgICAubTFfZW5kb2ZwYWNrZXQgICAod2FpdHJlcXVlc3RfbTFfZW5kb2ZwYWNrZXQpLAotICAgICAgLm0xX25hdGl2ZWFkZHJlc3MgKHdhaXRyZXF1ZXN0X20xX25hdGl2ZWFkZHJlc3MpLAotICAgICAgLm0xX3JlYWQgICAgICAgICAgKHdhaXRyZXF1ZXN0X20xX3JlYWQpLAotICAgICAgLm0xX3JlYWRkYXRhICAgICAgKHdhaXRyZXF1ZXN0X20xX3JlYWRkYXRhKSwKLSAgICAgIC5tMV9yZWFkZGF0YXZhbGlkICh3YWl0cmVxdWVzdF9tMV9yZWFkZGF0YXZhbGlkKSwKLSAgICAgIC5tMV9yZXNldF9uICAgICAgIChyZXNldF9uKSwKLSAgICAgIC5tMV93YWl0cmVxdWVzdCAgICh3YWl0cmVxdWVzdF9tMV93YWl0cmVxdWVzdCksCi0gICAgICAubTFfd3JpdGUgICAgICAgICAod2FpdHJlcXVlc3RfbTFfd3JpdGUpLAotICAgICAgLm0xX3dyaXRlZGF0YSAgICAgKHdhaXRyZXF1ZXN0X20xX3dyaXRlZGF0YSksCi0gICAgICAucmVzZXRfbiAgICAgICAgICAocmVzZXRfbiksCi0gICAgICAuczFfYWRkcmVzcyAgICAgICAod2FpdHJlcXVlc3RfczFfYWRkcmVzcyksCi0gICAgICAuczFfYXJiaXRlcmxvY2sgICAod2FpdHJlcXVlc3RfczFfYXJiaXRlcmxvY2spLAotICAgICAgLnMxX2FyYml0ZXJsb2NrMiAgKHdhaXRyZXF1ZXN0X3MxX2FyYml0ZXJsb2NrMiksCi0gICAgICAuczFfYnVyc3Rjb3VudCAgICAod2FpdHJlcXVlc3RfczFfYnVyc3Rjb3VudCksCi0gICAgICAuczFfYnl0ZWVuYWJsZSAgICAod2FpdHJlcXVlc3RfczFfYnl0ZWVuYWJsZSksCi0gICAgICAuczFfY2hpcHNlbGVjdCAgICAod2FpdHJlcXVlc3RfczFfY2hpcHNlbGVjdCksCi0gICAgICAuczFfZGVidWdhY2Nlc3MgICAod2FpdHJlcXVlc3RfczFfZGVidWdhY2Nlc3MpLAotICAgICAgLnMxX2VuZG9mcGFja2V0ICAgKHdhaXRyZXF1ZXN0X3MxX2VuZG9mcGFja2V0KSwKLSAgICAgIC5zMV9uYXRpdmVhZGRyZXNzICh3YWl0cmVxdWVzdF9zMV9uYXRpdmVhZGRyZXNzKSwKLSAgICAgIC5zMV9yZWFkICAgICAgICAgICh3YWl0cmVxdWVzdF9zMV9yZWFkKSwKLSAgICAgIC5zMV9yZWFkZGF0YSAgICAgICh3YWl0cmVxdWVzdF9zMV9yZWFkZGF0YSksCi0gICAgICAuczFfcmVhZGRhdGF2YWxpZCAod2FpdHJlcXVlc3RfczFfcmVhZGRhdGF2YWxpZCksCi0gICAgICAuczFfd2FpdHJlcXVlc3QgICAod2FpdHJlcXVlc3RfczFfd2FpdHJlcXVlc3QpLAotICAgICAgLnMxX3dyaXRlICAgICAgICAgKHdhaXRyZXF1ZXN0X3MxX3dyaXRlKSwKLSAgICAgIC5zMV93cml0ZWRhdGEgICAgICh3YWl0cmVxdWVzdF9zMV93cml0ZWRhdGEpCi0gICAgKTsKLQotICBhc3NpZ24gbTFfbmF0aXZlYWRkcmVzcyA9IGRvd25zdHJlYW1fbTFfbmF0aXZlYWRkcmVzczsKLSAgYXNzaWduIGRvd25zdHJlYW1fczFfbmF0aXZlYWRkcmVzcyA9IHVwc3RyZWFtX20xX25hdGl2ZWFkZHJlc3M7Ci0gIGFzc2lnbiB1cHN0cmVhbV9zMV9uYXRpdmVhZGRyZXNzID0gd2FpdHJlcXVlc3RfbTFfbmF0aXZlYWRkcmVzczsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X3MxX25hdGl2ZWFkZHJlc3MgPSBzMV9uYXRpdmVhZGRyZXNzOwotICBhc3NpZ24gbTFfZGVidWdhY2Nlc3MgPSBkb3duc3RyZWFtX20xX2RlYnVnYWNjZXNzOwotICBhc3NpZ24gZG93bnN0cmVhbV9zMV9kZWJ1Z2FjY2VzcyA9IHVwc3RyZWFtX20xX2RlYnVnYWNjZXNzOwotICBhc3NpZ24gdXBzdHJlYW1fczFfZGVidWdhY2Nlc3MgPSB3YWl0cmVxdWVzdF9tMV9kZWJ1Z2FjY2VzczsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X3MxX2RlYnVnYWNjZXNzID0gczFfZGVidWdhY2Nlc3M7Ci0gIGFzc2lnbiBtMV9hcmJpdGVybG9jayA9IGRvd25zdHJlYW1fbTFfYXJiaXRlcmxvY2s7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX3MxX2FyYml0ZXJsb2NrID0gdXBzdHJlYW1fbTFfYXJiaXRlcmxvY2s7Ci0gIGFzc2lnbiB1cHN0cmVhbV9zMV9hcmJpdGVybG9jayA9IHdhaXRyZXF1ZXN0X20xX2FyYml0ZXJsb2NrOwotICBhc3NpZ24gd2FpdHJlcXVlc3RfczFfYXJiaXRlcmxvY2sgPSBzMV9hcmJpdGVybG9jazsKLSAgYXNzaWduIG0xX3dyaXRlZGF0YSA9IGRvd25zdHJlYW1fbTFfd3JpdGVkYXRhOwotICBhc3NpZ24gZG93bnN0cmVhbV9zMV93cml0ZWRhdGEgPSB1cHN0cmVhbV9tMV93cml0ZWRhdGE7Ci0gIGFzc2lnbiB1cHN0cmVhbV9zMV93cml0ZWRhdGEgPSB3YWl0cmVxdWVzdF9tMV93cml0ZWRhdGE7Ci0gIGFzc2lnbiB3YWl0cmVxdWVzdF9zMV93cml0ZWRhdGEgPSBzMV93cml0ZWRhdGE7Ci0gIGFzc2lnbiBtMV9jaGlwc2VsZWN0ID0gZG93bnN0cmVhbV9tMV9jaGlwc2VsZWN0OwotICBhc3NpZ24gZG93bnN0cmVhbV9zMV9jaGlwc2VsZWN0ID0gdXBzdHJlYW1fbTFfY2hpcHNlbGVjdDsKLSAgYXNzaWduIHVwc3RyZWFtX3MxX2NoaXBzZWxlY3QgPSB3YWl0cmVxdWVzdF9tMV9jaGlwc2VsZWN0OwotICBhc3NpZ24gd2FpdHJlcXVlc3RfczFfY2hpcHNlbGVjdCA9IHMxX2NoaXBzZWxlY3Q7Ci0gIGFzc2lnbiBtMV9idXJzdGNvdW50ID0gZG93bnN0cmVhbV9tMV9idXJzdGNvdW50OwotICBhc3NpZ24gZG93bnN0cmVhbV9zMV9idXJzdGNvdW50ID0gdXBzdHJlYW1fbTFfYnVyc3Rjb3VudDsKLSAgYXNzaWduIHVwc3RyZWFtX3MxX2J1cnN0Y291bnQgPSB3YWl0cmVxdWVzdF9tMV9idXJzdGNvdW50OwotICBhc3NpZ24gd2FpdHJlcXVlc3RfczFfYnVyc3Rjb3VudCA9IHMxX2J1cnN0Y291bnQ7Ci0gIGFzc2lnbiBtMV9ieXRlZW5hYmxlID0gZG93bnN0cmVhbV9tMV9ieXRlZW5hYmxlOwotICBhc3NpZ24gZG93bnN0cmVhbV9zMV9ieXRlZW5hYmxlID0gdXBzdHJlYW1fbTFfYnl0ZWVuYWJsZTsKLSAgYXNzaWduIHVwc3RyZWFtX3MxX2J5dGVlbmFibGUgPSB3YWl0cmVxdWVzdF9tMV9ieXRlZW5hYmxlOwotICBhc3NpZ24gd2FpdHJlcXVlc3RfczFfYnl0ZWVuYWJsZSA9IHMxX2J5dGVlbmFibGU7Ci0gIGFzc2lnbiBtMV9hcmJpdGVybG9jazIgPSBkb3duc3RyZWFtX20xX2FyYml0ZXJsb2NrMjsKLSAgYXNzaWduIGRvd25zdHJlYW1fczFfYXJiaXRlcmxvY2syID0gdXBzdHJlYW1fbTFfYXJiaXRlcmxvY2syOwotICBhc3NpZ24gdXBzdHJlYW1fczFfYXJiaXRlcmxvY2syID0gd2FpdHJlcXVlc3RfbTFfYXJiaXRlcmxvY2syOwotICBhc3NpZ24gd2FpdHJlcXVlc3RfczFfYXJiaXRlcmxvY2syID0gczFfYXJiaXRlcmxvY2syOwotICBhc3NpZ24gbTFfcmVhZCA9IGRvd25zdHJlYW1fbTFfcmVhZDsKLSAgYXNzaWduIGRvd25zdHJlYW1fczFfcmVhZCA9IHVwc3RyZWFtX20xX3JlYWQ7Ci0gIGFzc2lnbiB1cHN0cmVhbV9zMV9yZWFkID0gd2FpdHJlcXVlc3RfbTFfcmVhZDsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X3MxX3JlYWQgPSBzMV9yZWFkOwotICBhc3NpZ24gbTFfd3JpdGUgPSBkb3duc3RyZWFtX20xX3dyaXRlOwotICBhc3NpZ24gZG93bnN0cmVhbV9zMV93cml0ZSA9IHVwc3RyZWFtX20xX3dyaXRlOwotICBhc3NpZ24gdXBzdHJlYW1fczFfd3JpdGUgPSB3YWl0cmVxdWVzdF9tMV93cml0ZTsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X3MxX3dyaXRlID0gczFfd3JpdGU7Ci0gIGFzc2lnbiB3YWl0cmVxdWVzdF9zMV9hZGRyZXNzID0ge3MxX2FkZHJlc3MsIDInYjB9OwotICBhc3NpZ24gdXBzdHJlYW1fczFfYWRkcmVzcyA9IHdhaXRyZXF1ZXN0X20xX2FkZHJlc3M7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX3MxX2FkZHJlc3MgPSB1cHN0cmVhbV9tMV9hZGRyZXNzOwotICBhc3NpZ24gbTFfYWRkcmVzcyA9IGRvd25zdHJlYW1fbTFfYWRkcmVzczsKLSAgYXNzaWduIGRvd25zdHJlYW1fbTFfcmVhZGRhdGF2YWxpZCA9IG0xX3JlYWRkYXRhdmFsaWQ7Ci0gIGFzc2lnbiB1cHN0cmVhbV9tMV9yZWFkZGF0YXZhbGlkID0gZG93bnN0cmVhbV9zMV9yZWFkZGF0YXZhbGlkOwotICBhc3NpZ24gd2FpdHJlcXVlc3RfbTFfcmVhZGRhdGF2YWxpZCA9IHVwc3RyZWFtX3MxX3JlYWRkYXRhdmFsaWQ7Ci0gIGFzc2lnbiBzMV9yZWFkZGF0YXZhbGlkID0gd2FpdHJlcXVlc3RfczFfcmVhZGRhdGF2YWxpZDsKLSAgYXNzaWduIGRvd25zdHJlYW1fbTFfd2FpdHJlcXVlc3QgPSBtMV93YWl0cmVxdWVzdDsKLSAgYXNzaWduIHVwc3RyZWFtX20xX3dhaXRyZXF1ZXN0ID0gZG93bnN0cmVhbV9zMV93YWl0cmVxdWVzdDsKLSAgYXNzaWduIHdhaXRyZXF1ZXN0X20xX3dhaXRyZXF1ZXN0ID0gdXBzdHJlYW1fczFfd2FpdHJlcXVlc3Q7Ci0gIGFzc2lnbiBzMV93YWl0cmVxdWVzdCA9IHdhaXRyZXF1ZXN0X3MxX3dhaXRyZXF1ZXN0OwotICBhc3NpZ24gZG93bnN0cmVhbV9tMV9lbmRvZnBhY2tldCA9IG0xX2VuZG9mcGFja2V0OwotICBhc3NpZ24gdXBzdHJlYW1fbTFfZW5kb2ZwYWNrZXQgPSBkb3duc3RyZWFtX3MxX2VuZG9mcGFja2V0OwotICBhc3NpZ24gd2FpdHJlcXVlc3RfbTFfZW5kb2ZwYWNrZXQgPSB1cHN0cmVhbV9zMV9lbmRvZnBhY2tldDsKLSAgYXNzaWduIHMxX2VuZG9mcGFja2V0ID0gd2FpdHJlcXVlc3RfczFfZW5kb2ZwYWNrZXQ7Ci0gIGFzc2lnbiBkb3duc3RyZWFtX20xX3JlYWRkYXRhID0gbTFfcmVhZGRhdGE7Ci0gIGFzc2lnbiB1cHN0cmVhbV9tMV9yZWFkZGF0YSA9IGRvd25zdHJlYW1fczFfcmVhZGRhdGE7Ci0gIGFzc2lnbiB3YWl0cmVxdWVzdF9tMV9yZWFkZGF0YSA9IHVwc3RyZWFtX3MxX3JlYWRkYXRhOwotICBhc3NpZ24gczFfcmVhZGRhdGEgPSB3YWl0cmVxdWVzdF9zMV9yZWFkZGF0YTsKLSAgLy9zMSwgd2hpY2ggaXMgYW4gZV9hdmFsb25fc2xhdmUKLSAgLy9tMSwgd2hpY2ggaXMgYW4gZV9hdmFsb25fbWFzdGVyCi0KLWVuZG1vZHVsZQotCmRpZmYgLS1naXQgYS90ZXN0cy9Vbml0VGVzdC9Vbml0VGVzdC5sb2cgYi90ZXN0cy9Vbml0VGVzdC9Vbml0VGVzdC5sb2cKaW5kZXggOWRkZDU0My4uOGFmMTcyOCAxMDA2NDQKLS0tIGEvdGVzdHMvVW5pdFRlc3QvVW5pdFRlc3QubG9nCisrKyBiL3Rlc3RzL1VuaXRUZXN0L1VuaXRUZXN0LmxvZwpAQCAtMyw2ICszLDcgQEAKIFtJTkZPIDpDTTAwMjBdIFNlcGFyYXRlIGNvbXBpbGF0aW9uLXVuaXQgbW9kZSBpcyBvbi4KIAogUFAgUFJFUFJPQ0VTUyBGSUxFOiB0b3AudgorRGVmaW5pbmcgbWFjcm86ZGVjbGFyZV9icF9tZW1fd29ybWhvbGVfcGF5bG9hZF9zCiBQUCBSRUNPUkRJTkcgTUFDUk86IGRlY2xhcmVfYnBfbWVtX3dvcm1ob2xlX3BheWxvYWRfczogfCBcCiAgICAgdHlwZWRlZiBzdHJ1Y3QgcGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uLmxvZyBiL3Rlc3RzL3JlZ3Jlc3Npb24ubG9nCmluZGV4IDdiZTIzMTIuLjA1YWNhMWMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24ubG9nCisrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24ubG9nCkBAIC0yLDM1ICsyLDU4IEBACiAqKioqKioqKioqKioqKioqKioqKioqKioKIFNUQVJUIFNVUkVMT0cgUkVHUkVTU0lPTgogCi1TdGFydHMgb24gMTEvMTkvMjAxOSAyMzoxNDoyMworU3RhcnRzIG9uIDExLzI0LzIwMTkgMTY6NTk6MzMKIENPTU1BTkQ6IC91c3IvYmluL3RpbWUgIC9ob21lL2FsYWluL1N1cmVsb2cvdGVzdHMvZGlzdC9SZWxlYXNlL3N1cmVsb2cKLVJ1biB3aXRoIG10PTAKLVRIRVJFIEFSRSAxMDMgdGVzdHMKLVJVTk5JTkcgICAxIHRlc3RzCitSdW4gd2l0aCBtdD0wLCBtcD00CitUSEVSRSBBUkUgMTA0IHRlc3RzCitSVU5OSU5HICAgODQgdGVzdHMKIAotKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSsKLXwgVEVTVE5BTUUgICB8IFNUQVRVUyAgIHwgRkFUQUwgICAgfCBTWU5UQVggICB8IEVSUk9SICAgIHwgV0FSTklORyAgfCBOT1RFICAgICB8IEVMQVBTRUQgVElNRSB8IE1FTShNYikgICAgICB8Ci0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKwotCi1jZCBVbml0UHl0aG9uCi0vdXNyL2Jpbi90aW1lICAvaG9tZS9hbGFpbi9TdXJlbG9nL3Rlc3RzL2Rpc3QvUmVsZWFzZS9zdXJlbG9nICAgICAgLXdyaXRlcHAgLXBhcnNlIC12ZXJib3NlICAgIC1kIGFzdCAraW5jZGlyKy4uLy4uL3RoaXJkX3BhcnR5L1VWTS9vdm0tMi4xLjIvc3JjLyAraW5jZGlyKy4uLy4uL3RoaXJkX3BhcnR5L1VWTS92bW0tMS4xLjFhL3N2ICAgICAtbXQgbWF4IC1maWxldW5pdCAgdG9wLnYgICAtbm9jYWNoZSAtcHl0aG9uZXZhbHNjcmlwdHBlcmZpbGUgbXlzY3JpcHRQZXJGaWxlLnB5ICAtcHl0aG9uZXZhbHNjcmlwdCBteXNjcmlwdFBlckRlc2lnbi5weSAtcHl0aG9ubGlzdGVuZXJmaWxlIG15X2xpc3RlbmVyLnB5IAotCi18IFVuaXRQeXRob24gfCBESUZGICAgICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtNCkgIHwgLTEgKC0xKSAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAotKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSsKLQotIFJFU1VMVCA6IERJRkYKLQotIHRrZGlmZiBVbml0UHl0aG9uL1VuaXRQeXRob24ubG9nIHRlc3RzL1VuaXRQeXRob24vVW5pdFB5dGhvbi5sb2cKLQotKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgICAgICAgICAgICAgIHwgQ1VSUkVOVCAgfCBQUkVWSU9VUyB8Ci0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfFRPVEFMIEVMQVBTRUQgfCAwcyAgICAgICB8IDBzICAgICAgIHwKLXxUT1RBTCBVU0VSICAgIHwgMHMgICAgICAgfCAwcyAgICAgICB8Ci18TUFYIE1FTSBURVNUICB8IDFNYiAgICAgIHwgME1iICAgICAgfAotfE1BWCBUSU1FIFRFU1QgfCAwcyAgICAgICB8IDBzICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi0KLUVuZCBvbiAxMS8xOS8yMDE5IDIzOjE0OjI0Ci1FTkQgU1VSRUxPRyBSRUdSRVNTSU9OCi0qKioqKioqKioqKioqKioqKioqKioqKioKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKworfCBURVNUTkFNRSAgICAgICAgICAgICAgICAgICB8IFNUQVRVUyAgIHwgRkFUQUwgICAgfCBTWU5UQVggICB8IEVSUk9SICAgIHwgV0FSTklORyAgfCBOT1RFICAgICB8IEVMQVBTRUQgVElNRSB8IE1FTShNYikgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSsKK3wgWW9zeXNTbWFsbCAgICAgICAgICAgICAgICAgfCBESUZGICAgICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTIpICB8IC0xICgtNykgIHwgLTEgKC0xMCkgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBNb25pdG9yICAgICAgICAgICAgICAgICAgICB8IERJRkYgICAgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xMikgfCAtMSAoLTgpICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IFVuaXREZWZQYXJhbSAgICAgICAgICAgICAgIHwgRkFJTCAgICAgfCBTRUdGQVVMVCB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgVW5pdEZvckxvb3AgICAgICAgICAgICAgICAgfCBGQUlMICAgICB8IFNFR0ZBVUxUIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBTaW1wbGVWTU0gICAgICAgICAgICAgICAgICB8IERJRkYgICAgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xNykgfCAtMSAoLTYpICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IFNpbXBsZVVWTSAgICAgICAgICAgICAgICAgIHwgRElGRiAgICAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTEyKSB8IC0xICgtOCkgIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgWW9zeXNCaWdTaW1BZXMgICAgICAgICAgICAgfCBESUZGICAgICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC02KSAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBPbGRMaWJyYXJ5ICAgICAgICAgICAgICAgICB8IEZBSUwgICAgIHwgU0VHRkFVTFQgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IFVuaXRQYWNrYWdlICAgICAgICAgICAgICAgIHwgRkFJTCAgICAgfCBTRUdGQVVMVCB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgWW9zeXNCaWdTaW1Tb2Z0ICAgICAgICAgICAgfCBESUZGICAgICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMykgIHwgLTEgKC03KSAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBTaW1wbGVDbWRMaW5lVGVzdCAgICAgICAgICB8IEZBSUwgICAgIHwgU0VHRkFVTFQgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IFJpc2NWICAgICAgICAgICAgICAgICAgICAgIHwgRElGRiAgICAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTExKSB8IC0xICgtMjApIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgVGltZVVuaXQgICAgICAgICAgICAgICAgICAgfCBGQUlMICAgICB8IFNFR0ZBVUxUIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBTaW1wbGVDbGFzcyAgICAgICAgICAgICAgICB8IEZBSUwgICAgIHwgU0VHRkFVTFQgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IFVuaXRBbWlxRXRoICAgICAgICAgICAgICAgIHwgRElGRiAgICAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTgpICB8IC0xICgtNSkgIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgUGFja2FnZUhpZXJSZWYgICAgICAgICAgICAgfCBGQUlMICAgICB8IFNFR0ZBVUxUIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBBbWlxRXRoICAgICAgICAgICAgICAgICAgICB8IERJRkYgICAgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMTMpIHwgLTEgKC0yOCkgfCAtMSAoLTYpICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IFNpbXBsZUludGVyZmFjZSAgICAgICAgICAgIHwgRkFJTCAgICAgfCBTRUdGQVVMVCB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgVW5pdExpYnJhcnkgICAgICAgICAgICAgICAgfCBGQUlMICAgICB8IFNFR0ZBVUxUIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBZb3N5c0RzcCAgICAgICAgICAgICAgICAgICB8IERJRkYgICAgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtNikgIHwgLTEgKC0yMSkgfCAtMSAoLTIxKSB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IEljYXJ1cyAgICAgICAgICAgICAgICAgICAgIHwgRElGRiAgICAgfCAtMSAoLTEpICB8IC0xICgtNSkgIHwgLTEgKC03KSAgfCAtMSAoLTI2NSkgfCAtMSAoLTE2MSkgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBTaW1wbGVDb25zdHJhaW50ICAgICAgICAgICB8IEZBSUwgICAgIHwgU0VHRkFVTFQgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IFVuaXRGb3JlYWNoICAgICAgICAgICAgICAgIHwgRkFJTCAgICAgfCBTRUdGQVVMVCB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgRXNjYXBlICAgICAgICAgICAgICAgICAgICAgfCBGQUlMICAgICB8IFNFR0ZBVUxUIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBTY29yZWJvYXJkICAgICAgICAgICAgICAgICB8IERJRkYgICAgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xMikgfCAtMSAoLTgpICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IEJ1aWxkT1ZNUGtnICAgICAgICAgICAgICAgIHwgRElGRiAgICAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTE3KSB8IC0xICgtNikgIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgWW9zeXNPbGRTc1BjbSAgICAgICAgICAgICAgfCBESUZGICAgICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTIpICB8IC0xICgtMykgIHwgLTEgKC03KSAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBBVkxNTSAgICAgICAgICAgICAgICAgICAgICB8IERJRkYgICAgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtNSkgIHwgLTEgKC01KSAgfCAtMSAoLTYpICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IFRlc3RNYWNyb3MgICAgICAgICAgICAgICAgIHwgRkFJTCAgICAgfCBTRUdGQVVMVCB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgVW5pdFF1ZXVlICAgICAgICAgICAgICAgICAgfCBGQUlMICAgICB8IFNFR0ZBVUxUIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBVbml0RW51bSAgICAgICAgICAgICAgICAgICB8IEZBSUwgICAgIHwgU0VHRkFVTFQgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IEFwYlNsYXZlICAgICAgICAgICAgICAgICAgIHwgRElGRiAgICAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTIpICB8IC0xICgtOCkgIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgU2ltcGxlUGFyc2VyVGVzdCAgICAgICAgICAgfCBESUZGICAgICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBZb3N5c09sZE9yICAgICAgICAgICAgICAgICB8IERJRkYgICAgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTExOCkgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBZb3N5c0NhbSAgICAgICAgICAgICAgICAgICB8IERJRkYgICAgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTgpICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IENsYXNzQ29ucyAgICAgICAgICAgICAgICAgIHwgRkFJTCAgICAgfCBTRUdGQVVMVCB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgVGVzdEJhc2ljICAgICAgICAgICAgICAgICAgfCBGQUlMICAgICB8IFNFR0ZBVUxUIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgLTEgICAgICAgfCAgICAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBTaW1wbGVPVk0gICAgICAgICAgICAgICAgICB8IERJRkYgICAgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xNykgfCAtMSAoLTUpICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IEFtaXFTaW1wbGVUZXN0U3VpdGUgICAgICAgIHwgRElGRiAgICAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xMykgfCAtMSAoLTE2KSB8IC0xICgtMTApIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgWW9zeXNCaWdTaW1PcGVuTXNwICAgICAgICAgfCBESUZGICAgICB8IC0xICgtMSkgIHwgLTEgKC0yKSAgfCAtMSAoLTcpICB8IC0xICgtMzQpIHwgLTEgKC0zNCkgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBZb3N5c1ZlcnggICAgICAgICAgICAgICAgICB8IERJRkYgICAgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC00KSAgfCAtMSAoLTkpICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IFRlc3RGaWxlU3BsaXQgICAgICAgICAgICAgIHwgRkFJTCAgICAgfCBTRUdGQVVMVCB8IC0xICAgICAgIHwgLTEgICAgICAgfCAtMSAgICAgICB8IC0xICAgICAgIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgU2VxRHJpdmVyICAgICAgICAgICAgICAgICAgfCBESUZGICAgICB8IC0xICgtMSkgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMTIpIHwgLTEgKC04KSAgfCAwcyAgICAgICAgICAgfCAxICAgICgrMSkgICAgfAorfCBNaW5pQW1pcSAgICAgICAgICAgICAgICAgICB8IERJRkYgICAgIHwgLTEgKC0xKSAgfCAtMSAoLTEpICB8IC0xICgtMSkgIHwgLTEgKC0xMikgfCAtMSAoLTcpICB8IDBzICAgICAgICAgICB8IDEgICAgKCsxKSAgICB8Cit8IFlvc3lzQmlnU2ltQW1iZXIyMyAgICAgICAgIHwgRElGRiAgICAgfCAtMSAoLTEpICB8IC0xICgtMikgIHwgLTEgKC0zKSAgfCAtMSAoLTE4KSB8IC0xICgtMjMpIHwgMHMgICAgICAgICAgIHwgMSAgICAoKzEpICAgIHwKK3wgVW5pdFNpbXBsZUluY2x1ZGVBbmRNYWNyb3MgfApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24udGNsIGIvdGVzdHMvcmVncmVzc2lvbi50Y2wKaW5kZXggNWNmNzY4MS4uYzZjZDk4MyAxMDA3NTUKLS0tIGEvdGVzdHMvcmVncmVzc2lvbi50Y2wKKysrIGIvdGVzdHMvcmVncmVzc2lvbi50Y2wKQEAgLTIyLDYgKzIyLDcgQEAKICAgICBwdXRzICIgICAgICAgICAgICAgICBkZWJ1Zz08bm9uZSwgdmFsZ3JpbmQsIGRkZD4iCiAgICAgcHV0cyAiICAgICAgICAgICAgICAgYnVpbGQ9PERlYnVnLCBSZWxlYXNlPiIKICAgICBwdXRzICIgICAgICAgICAgICAgICBtdD08bmJUaHJlYWRzPiIKKyAgICBwdXRzICIgICAgICAgICAgICAgICBtcD08bmJQcm9jZXNzZXM+IgogICAgIHB1dHMgIiAgICAgICAgICAgICAgIGxhcmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFyZ2UgdGVzdHMgdG9vKSIKICAgICBwdXRzICIgICAgICAgICAgICAgICBzaG93X2RpZmYgICAgICAgICAgICAgICAgICAgICAgICAgKFNob3dzIHRleHQgZGlmZikiCiAgICAgcHV0cyAiICAgICAgICAgICAgICAgZGlmZl9tb2RlICAgICAgICAgICAgICAgICAgICAgICAgIChPbmx5IGRpZmYpIgpAQCAtNjQsNiArNjUsNyBAQAogc2V0IE1BWF9USU1FIDAKIHNldCBERUJVRyAibm9uZSIKIHNldCBNVF9NQVggMAorc2V0IE1QX01BWCAwCiBzZXQgTEFSR0VfVEVTVFMgMAogc2V0IFNIT1dfRElGRiAwCiBzZXQgRElGRl9NT0RFIDAKQEAgLTExNyw2ICsxMTksOSBAQAogaWYgW3JlZ2V4cCB7bXQ9KFswLTldKyl9ICRhcmd2IHRtcCBNVF9NQVhdIHsKIH0KIAoraWYgW3JlZ2V4cCB7bXA9KFswLTldKyl9ICRhcmd2IHRtcCBNUF9NQVhdIHsKK30KKwogaWYgW3JlZ2V4cCB7ZGVidWc9KFthLXpdKyl9ICRhcmd2IHRtcCBERUJVR10gewogICAgIGlmIHskREVCVUcgPT0gInZhbGdyaW5kIn0gewogCXNldCBERUJVR19UT09MICJ2YWxncmluZCAtLXRvb2w9bWVtY2hlY2sgLS1sb2ctZmlsZT12YWxncmluZC5sb2ciCkBAIC0xNDEsNiArMTQ2LDcgQEAKIAogc2V0IEJVSUxEICJSZWxlYXNlIgogaWYgW3JlZ2V4cCB7YnVpbGQ9KFtBLVphLXowLTlfXSspfSAkYXJndiB0bXAgQlVJTERdIHsKKyAgICBwdXRzICJCVUlMRD0kQlVJTEQiCiB9CiAKIHNldCBTSE9XX0RFVEFJTFMgMApAQCAtMTU2LDcgKzE2Miw3IEBACiBpZiBbcmVnZXhwIHtjb21taXQ9KFtBLVphLXowLTlfIFwuXSspfSAkYXJndiB0bXAgQ09NTUlUX1RFWFRdIHsKIH0KIAotc2V0IFNVUkVMT0dfVkVSU0lPTiAiW3B3ZF0vZGlzdC9SZWxlYXNlL3N1cmVsb2ciCitzZXQgU1VSRUxPR19WRVJTSU9OICJbcHdkXS9kaXN0LyRCVUlMRC9zdXJlbG9nIgogc2V0IFJFR1JFU1NJT05fUEFUSCBbcHdkXQogCiBzZXQgU1VSRUxPR19DT01NQU5EICIkVElNRSAkREVCVUdfVE9PTCAkU1VSRUxPR19WRVJTSU9OIgpAQCAtMTkwLDcgKzE5Niw3IEBACiB9CiAKIHByb2MgbG9hZF90ZXN0cyB7IH0gewotICAgIGdsb2JhbCBURVNUUyBURVNUU19ESVIgTE9OR0VTVFRFU1ROQU1FIFRFU1RUQVJHRVQgT05FVEVTVCBMQVJHRV9URVNUUyBMT05HX1RFU1RTIE1UX01BWAorICAgIGdsb2JhbCBURVNUUyBURVNUU19ESVIgTE9OR0VTVFRFU1ROQU1FIFRFU1RUQVJHRVQgT05FVEVTVCBMQVJHRV9URVNUUyBMT05HX1RFU1RTIE1UX01BWCBNUF9NQVgKICAgICBzZXQgZGlycyAiLi4vdGVzdHMvIC4uL3RoaXJkX3BhcnR5L3Rlc3RzLyIKICAgICBzZXQgZmlsZUxpc3RzICIiCiAgICAgZm9yZWFjaCBkaXIgJGRpcnMgewpAQCAtMjI3LDcgKzIzMyw3IEBACiAJc2V0IFRFU1RTX0RJUigkdGVzdG5hbWUpICR0ZXN0ZGlyCiAKICAgICB9Ci0gICAgbG9nICJSdW4gd2l0aCBtdD0kTVRfTUFYIgorICAgIGxvZyAiUnVuIHdpdGggbXQ9JE1UX01BWCwgbXA9JE1QX01BWCIKICAgICBsb2cgIlRIRVJFIEFSRSAkdG90YWx0ZXN0IHRlc3RzIgogICAgIGxvZyAiUlVOTklORyAgIFthcnJheSBzaXplIFRFU1RTXSB0ZXN0cyIKICAgICBsb2cgIiIKQEAgLTI5MCw5ICsyOTYsMTMgQEAKICAgICByZXR1cm4gW2xpc3QgJGZhdGFscyAkZXJyb3JzICR3YXJuaW5ncyAkbm90ZXMgJGRldGFpbHMgJHN5bnRheF0KIH0KIAorcHJvYyBjb3VudF9zcGxpdCB7IHN0cmluZyB9IHsKKyAgICByZXR1cm4gW2xsZW5ndGggW3NwbGl0ICRzdHJpbmcgL11dCit9CisKIHByb2MgcnVuX3JlZ3Jlc3Npb24geyB9IHsKICAgICBnbG9iYWwgVEVTVFMgVEVTVFNfRElSIFNVUkVMT0dfQ09NTUFORCBMT05HRVNUVEVTVE5BTUUgVEVTVFRBUkdFVCBPTkVURVNUIFVQREFURSBVU0VSIEVMQVBTRUQgUFJJT1JfVVNFUiBQUklPUl9FTEFQU0VECi0gICAgZ2xvYmFsIERJRkZfVEVTVFMgUFJJT1JfTUFYX01FTSBNQVhfTUVNIE1BWF9USU1FIFBSSU9SX01BWF9USU1FIFNIT1dfREVUQUlMUyBNVF9NQVggS0VFUF9NVF9PTiBSRUdSRVNTSU9OX1BBVEggTEFSR0VfVEVTVFMgTE9OR19URVNUUyAgRElGRl9NT0RFCisgICAgZ2xvYmFsIERJRkZfVEVTVFMgUFJJT1JfTUFYX01FTSBNQVhfTUVNIE1BWF9USU1FIFBSSU9SX01BWF9USU1FIFNIT1dfREVUQUlMUyBNVF9NQVggTVBfTUFYIEtFRVBfTVRfT04gUkVHUkVTU0lPTl9QQVRIIExBUkdFX1RFU1RTIExPTkdfVEVTVFMgIERJRkZfTU9ERQogICAgIHNldCBvdmVycmFsbHBhc3MgIlBBU1MiCiAKICAgICBzZXQgdzEgJExPTkdFU1RURVNUTkFNRQpAQCAtMzU2LDE5ICszNjYsMTkgQEAKICAgICAgICAJZXhlYyBzaCAtYyAiY2QgJFJFR1JFU1NJT05fUEFUSC90ZXN0cy8kdGVzdC87IHJtIC1yZiBzbHBwKiIKIAogCXNldCBwYXNzc3RhdHVzICJQQVNTIgotCWlmIHsoJE9ORVRFU1QgIT0gIiIpICYmIFtyZWdleHAge2RkZH0gJFNVUkVMT0dfQ09NTUFORF19IHsKLQkgICAgbG9nICJcbnJ1biAkY29tbWFuZFxuIgotCSAgICBjYXRjaCB7c2V0IHRpbWVfcmVzdWx0IFtleGVjIHNoIC1jICJ0aW1lICRTVVJFTE9HX0NPTU1BTkQgPiAkUkVHUkVTU0lPTl9QQVRIL3Rlc3RzLyR0ZXN0LyR7dGVzdG5hbWV9LmxvZyJdfSB0aW1lX3Jlc3VsdAotCSAgICBleGl0Ci0JfQogCWlmIHskRElGRl9NT0RFID09IDB9IHsKLQkgICAgc2V0IG91dHB1dF9wYXRoICItbyAuLi8uLi9idWlsZC90ZXN0cy8kdGVzdC8iCi0JICAgIGlmIFtyZWdleHAge3RoaXJkX3BhcnR5fSAkdGVzdGRpcl0gewotCQlzZXQgb3V0cHV0X3BhdGggIi1vIC4uLy4uLy4uL2J1aWxkL3Rlc3RzLyR0ZXN0LyIKKwkgICAgc2V0IHBhdGggW2ZpbGUgZGlybmFtZSAkUkVHUkVTU0lPTl9QQVRIXQorCSAgICByZWdzdWIgLWFsbCAkcGF0aCAkdGVzdGRpciAiIiBwYXRoCisJICAgIHNldCBjb3VudCBbY291bnRfc3BsaXQgJHBhdGhdCisJICAgIHNldCByb290ICIiCisJICAgIGZvciB7c2V0IGkgMH0geyRpIDwgJGNvdW50IC0xfSB7aW5jciBpfSB7CisJCWFwcGVuZCByb290ICIuLi8iCiAJICAgIH0KKwkgICAgc2V0IG91dHB1dF9wYXRoICItbyAke3Jvb3R9YnVpbGQvdGVzdHMvJHRlc3QvIgogCSAgICBpZiBbcmVnZXhwIHtcLnNofSAkY29tbWFuZF0gewogCQljYXRjaCB7c2V0IHRpbWVfcmVzdWx0IFtleGVjIHNoIC1jICJ0aW1lICRjb21tYW5kIFtsaW5kZXggJFNVUkVMT0dfQ09NTUFORCAxXSA+ICRSRUdSRVNTSU9OX1BBVEgvdGVzdHMvJHRlc3QvJHt0ZXN0bmFtZX0ubG9nIl19IHRpbWVfcmVzdWx0CiAJICAgIH0gZWxzZSB7CisJCiAJCWlmIFtyZWdleHAge1wqL1wqXC5bc3ZdfSAkY29tbWFuZF0gewogCQkgICAgcmVnc3ViIC1hbGwge1tcKi9dK1wqXC5bc3ZdK30gJGNvbW1hbmQgIiIgY29tbWFuZAogCQkgICAgc2V0IGNvbW1hbmQgIiRjb21tYW5kIFtmaW5kRmlsZXMgLiAqLnZdIFtmaW5kRmlsZXMgLiAqLnN2XSIKQEAgLTM3NiwxMiArMzg2LDE0IEBACiAJCX0KIAkJaWYgIVtpbmZvIGV4aXN0IEtFRVBfTVRfT04oJHRlc3RuYW1lKV0gewogCQkgICAgcmVnc3ViIC1hbGwge1wtbXRbIF0rbWF4fSAkY29tbWFuZCAiIiBjb21tYW5kCi0JCSAgICByZWdzdWIgLWFsbCB7XC1tdFsgXStbMC05XSt9ICRjb21tYW5kICIiIGNvbW1hbmQKLQkJICAgIHNldCBjb21tYW5kICIkY29tbWFuZCAtbXQgJE1UX01BWCAkb3V0cHV0X3BhdGgiCisJCSAgICByZWdzdWIgLWFsbCB7XC1tdFsgXStbMC05XSt9ICRjb21tYW5kICIiIGNvbW1hbmQJCSAgICAKKwkJICAgIHNldCBjb21tYW5kICIkY29tbWFuZCAtbXQgJE1UX01BWCAtbXAgJE1QX01BWCAkb3V0cHV0X3BhdGgiCiAJCX0gZWxzZSB7Ci0JCSAgICBzZXQgY29tbWFuZCAiJGNvbW1hbmQgLW8gJG91dHB1dF9wYXRoIgorCQkgICAgc2V0IGNvbW1hbmQgIiRjb21tYW5kICRvdXRwdXRfcGF0aCIKIAkJfQotCisgICAgICAgICAgICAgICAgaWYgeygkT05FVEVTVCAhPSAiIikgJiYgKCR0ZXN0bmFtZSAhPSAkT05FVEVTVCl9IHsKKwkJICAgIGNvbnRpbnVlCisJCX0KIAkJY2F0Y2gge3NldCB0aW1lX3Jlc3VsdCBbZXhlYyBzaCAtYyAiJFNVUkVMT0dfQ09NTUFORCAkY29tbWFuZCA+ICRSRUdSRVNTSU9OX1BBVEgvdGVzdHMvJHRlc3QvJHt0ZXN0bmFtZX0ubG9nIl19IHRpbWVfcmVzdWx0CiAJICAgIH0KIAl9CkBAIC00ODMsNyArNDk1LDcgQEAKIAkgICAgaWYgeyRQUklPUl9NQVhfVElNRSA8ICRwcmlvcl9lbGFwc2VkfSB7CiAJCXNldCBQUklPUl9NQVhfVElNRSAkcHJpb3JfZWxhcHNlZAogCSAgICB9Ci0JICAgIGlmIFtleHByICRlbGFwc2VkID4gJHByaW9yX2VsYXBzZWRdIHsKKwkgICAgaWYgW2V4cHIgKCRlbGFwc2VkID4gJHByaW9yX2VsYXBzZWQpICYmICgkbm9fcHJldmlvdXNfdGltZV9jb250ZW50ID09IDApXSB7CiAJCXNldCBTUEVFRCBbZm9ybWF0ICIlLSpzICUtKnMgIiA0ICIke2VsYXBzZWR9cyIgNSAiKCtbZXhwciAkZWxhcHNlZCAtICRwcmlvcl9lbGFwc2VkXXMpIl0KIAkJc2V0IEZBU1RFUl9PUl9TTE9XRVIgMQogCSAgICB9IGVsc2VpZiBbZXhwciAoJGVsYXBzZWQgPT0gJHByaW9yX2VsYXBzZWQpIHx8ICgkbm9fcHJldmlvdXNfdGltZV9jb250ZW50KV0gewpAQCAtNDk5LDcgKzUxMSw3IEBACiAJICAgIGlmIHskUFJJT1JfTUFYX01FTSA8ICRwcmlvcl9tZW19IHsKIAkJc2V0IFBSSU9SX01BWF9NRU0gJHByaW9yX21lbQogCSAgICB9Ci0JICAgIGlmIFtleHByICRtZW0gPiAkcHJpb3JfbWVtXSB7CisJICAgIGlmIFtleHByICgkbWVtID4gJHByaW9yX21lbSkgICYmICgkbm9fcHJldmlvdXNfdGltZV9jb250ZW50ID09IDApXSB7CiAJCXNldCBNRU0gIFtmb3JtYXQgIiUtKnMgJS0qcyAiIDQgIiR7bWVtfSIgNSAiKCtbZXhwciAkbWVtIC0gJHByaW9yX21lbV0pIl0KIAkJc2V0IERJRkZfTUVNIDEKIAkgICAgfSBlbHNlaWYgIFtleHByICgkbWVtID09ICRwcmlvcl9tZW0pIHx8ICgkbm9fcHJldmlvdXNfdGltZV9jb250ZW50KV0gewpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvdGVzdHMvQW1pcUV0aC9BbWlxRXRoLmxvZyBiL3RoaXJkX3BhcnR5L3Rlc3RzL0FtaXFFdGgvQW1pcUV0aC5sb2cKaW5kZXggNzE3NTZkZi4uZjZhMThjMSAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvQW1pcUV0aC9BbWlxRXRoLmxvZworKysgYi90aGlyZF9wYXJ0eS90ZXN0cy9BbWlxRXRoL0FtaXFFdGgubG9nCkBAIC0yMTIsMTMgKzIxMiwxMyBAQAogCiBbV0FSTkk6UEEwMjA1XSB1dm0tMS4yL3NyYy91dm1fcGtnLnN2OjI3IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJ1dm1fcGtnIi4KIAotW1dBUk5JOlBBMDIwNV0gb3ZtLTIuMS4yL3NyYy9vdm1fcGtnLnN2OjIyIE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvdm1fcGtnIi4KK1tXQVJOSTpQQTAyMDVdIG92bS0yLjEuMi9zcmMvb3ZtX3BrZy5zdjoyMyBObyB0aW1lc2NhbGUgc2V0IGZvciAib3ZtX3BrZyIuCiAKIFtJTkZPIDpDUDAzMDBdIENvbXBpbGF0aW9uLi4uCiAKIFtJTkZPIDpDUDAzMDFdIHV2bS0xLjIvc3JjL3V2bV9wa2cuc3Y6MjcgQ29tcGlsZSBwYWNrYWdlICJ1dm1fcGtnIi4KIAotW0lORk8gOkNQMDMwMV0gb3ZtLTIuMS4yL3NyYy9vdm1fcGtnLnN2OjIyIENvbXBpbGUgcGFja2FnZSAib3ZtX3BrZyIuCitbSU5GTyA6Q1AwMzAxXSBvdm0tMi4xLjIvc3JjL292bV9wa2cuc3Y6MjMgQ29tcGlsZSBwYWNrYWdlICJvdm1fcGtnIi4KIAogW0lORk8gOkNQMDMwMV0gdXZtYy0yLjIvc3JjL2Nvbm5lY3Qvc3Yvb3ZtY19wa2cuc3Y6NDEgQ29tcGlsZSBwYWNrYWdlICJvdm1jX3BrZyIuCiAKQEAgLTQ3Miw3ICs0NzIsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2NvbXBhdGliaWxpdHkvYXZtX2NvbXBhdGliaWxpdHkuc3ZoOjEzMiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjphdm1fdHJhbnNwb3J0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX21pc2Muc3ZoOjI0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OmF2bV92aXJ0dWFsX2NsYXNzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fbWlzYy5zdmg6MjUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6YXZtX3ZpcnR1YWxfY2xhc3MiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21hY3Jvcy9vdm1fcGhhc2VfZGVmaW5lcy5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6YnVpbGRfcGhhc2UiLgogCkBAIC00ODIsNyArNDgyLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tYWNyb3Mvb3ZtX3BoYXNlX2RlZmluZXMuc3ZoOjM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OmNvbm5lY3RfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1MDcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6ZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUyNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpkZWZhdWx0X3JlcG9ydF9zZXJ2ZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21hY3Jvcy9vdm1fcGhhc2VfZGVmaW5lcy5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6ZW5kX29mX2VsYWJvcmF0aW9uX3BoYXNlIi4KIApAQCAtNDkyLDcgKzQ5Miw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWFjcm9zL292bV9waGFzZV9kZWZpbmVzLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjppbXBvcnRfY29ubmVjdGlvbnNfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2FnZW50Ii4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX2FnZW50LnN2aDo0MCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYWdlbnQiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9hbGdvcml0aG1pY19jb21wYXJhdG9yLnN2aDo2NSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYWxnb3JpdGhtaWNfY29tcGFyYXRvciIuCiAKQEAgLTU0NiwzNSArNTQ2LDM1IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6MjY3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9ibG9ja2luZ190cmFuc3BvcnRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo3OCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fY2xvbmUiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjgxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9idWlsdF9pbl9jbG9uZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo0MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fY29tcCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6NDIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2J1aWx0X2luX2NvbXAiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6NTkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2J1aWx0X2luX2NvbnZlcnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6NjAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2J1aWx0X2luX2NvbnZlcnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BhaXIuc3ZoOjEwMyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fcGFpciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wYWlyLnN2aDoxMDQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2J1aWx0X2luX3BhaXIiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NhbGxiYWNrLnN2aDoyNjEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NhbGxiYWNrIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jYWxsYmFjay5zdmg6NTggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NhbGxiYWNrcyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NhbGxiYWNrLnN2aDo1OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2FsbGJhY2tzIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjEzNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfY2xvbmUiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjEzOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfY2xvbmUiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6OTcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NsYXNzX2NvbXAiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjEwMCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfY29tcCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDoxMTYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NsYXNzX2NvbnZlcnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6MTE5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19jb252ZXJ0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wYWlyLnN2aDozMCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfcGFpciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wYWlyLnN2aDozMSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfcGFpciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29tcGFyZXIuc3ZoOjM0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb21wYXJlciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29tcG9uZW50LnN2aDo2NSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29tcG9uZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZWdpc3RyeS5zdmg6MzYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NvbXBvbmVudF9yZWdpc3RyeSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlZ2lzdHJ5LnN2aDozNyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb25maWcuc3ZoOjI1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb25maWdfc2V0dGluZyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NvbmZpZy5zdmg6MjYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NvbmZpZ19zZXR0aW5nIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Quc3ZoOjg4MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29weV9tYXAiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Quc3ZoOjg4MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29weV9tYXAiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9kcml2ZXIuc3ZoOjQxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9kcml2ZXIiLgogCkBAIC01ODYsMTEgKzU4NiwxMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSBidWlsdGluLnN2OjE1NiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZXhoYXVzdGl2ZV9zZXF1ZW5jZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fZmFjdG9yeS5zdmg6NzMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2ZhY3RvcnkiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9mYWN0b3J5LnN2aDo3NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZmFjdG9yeSIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fZmFjdG9yeS5zdmg6NzI3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9mYWN0b3J5X292ZXJyaWRlIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9mYWN0b3J5LnN2aDoyOSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZmFjdG9yeV9xdWV1ZV9jbGFzcyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2ZhY3Rvcnkuc3ZoOjMwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9mYWN0b3J5X3F1ZXVlX2NsYXNzIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX2V4cG9ydHMuc3ZoOjEwNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZ2V0X2V4cG9ydCIuCiAKQEAgLTYwNCw3ICs2MDQsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fcG9ydHMuc3ZoOjEwNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZ2V0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjY5OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1faGllcl9wcmludGVyX2tub2JzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NzAwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9oaWVyX3ByaW50ZXJfa25vYnMiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9pbl9vcmRlcl9jb21wYXJhdG9yLnN2aDoyMDUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2luX29yZGVyX2J1aWx0X2luX2NvbXBhcmF0b3IiLgogCkBAIC02MTIsOSArNjEyLDkgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6NjcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2luX29yZGVyX2NvbXBhcmF0b3IiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NvbmZpZy5zdmg6NjggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2ludF9jb25maWdfc2V0dGluZyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NvbmZpZy5zdmg6NjkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2ludF9jb25maWdfc2V0dGluZyIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NDYyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9saW5lX3ByaW50ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo0NjMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2xpbmVfcHJpbnRlciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9leHBvcnRzLnN2aDoyMzcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX21hc3Rlcl9leHBvcnQiLgogCkBAIC02MjIsNyArNjIyLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX3BvcnRzLnN2aDoyMzkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX21hc3Rlcl9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fbW9uaXRvci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX21vbml0b3IiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fbW9uaXRvci5zdmg6MzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX21vbml0b3IiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fZXhwb3J0cy5zdmg6OTkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX25vbmJsb2NraW5nX2dldF9leHBvcnQiLgogCkBAIC02NjYsMTkgKzY2NiwxOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fcG9ydHMuc3ZoOjI3MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbm9uYmxvY2tpbmdfdHJhbnNwb3J0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6NTQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo5OCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0X2NvbmZpZ19zZXR0aW5nIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo5OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0X2NvbmZpZ19zZXR0aW5nIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZWdpc3RyeS5zdmg6MTY3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3RfcmVnaXN0cnkiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZWdpc3RyeS5zdmg6MTY4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3RfcmVnaXN0cnkiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3Bvb2wuc3ZoOjI0MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0X3N0cmluZ19wb29sIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9mYWN0b3J5LnN2aDo2ODQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdF93cmFwcGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Rpb24uc3ZoOjQyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3Rpb24iLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Rpb24uc3ZoOjQzIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3Rpb24iLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6OTA4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vcHRpb25zX2NvbnRhaW5lciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6OTA5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vcHRpb25zX2NvbnRhaW5lciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcGFja2VyLnN2aDo0NSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcGFja2VyIi4KIApAQCAtNjg4LDcgKzY4OCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6MTI0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wZWVrX3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3BoYXNlcy5zdjozNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcGhhc2UiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9waGFzZXMuc3Y6MzYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3BoYXNlIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wb29sLnN2aDozMSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcG9vbCIuCiAKQEAgLTY5OCw5ICs2OTgsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3BvcnRfYmFzZS5zdmg6NDQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3BvcnRfY29tcG9uZW50X2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjgwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wcmludGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6ODEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3ByaW50ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjQ5MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcHJpbnRlcl9rbm9icyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjQ5NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcHJpbnRlcl9rbm9icyIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3B1c2hfZHJpdmVyLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcHVzaF9kcml2ZXIiLgogCkBAIC03MTIsNyArNzEyLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX3BvcnRzLnN2aDo4OCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcHV0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3F1ZXVlLnN2aDozMiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcXVldWUiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9xdWV1ZS5zdmg6MzMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3F1ZXVlIi4KIAogW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmFuZG9tX3NlcXVlbmNlIi4KIApAQCAtNzIwLDI3ICs3MjAsMjcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZWNvcmRlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlY29yZGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfc2VydmVyLnN2aDozNzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9nbG9iYWxfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X3NlcnZlci5zdmg6Mzc1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRfZ2xvYmFsX3NlcnZlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRfaGFuZGxlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0X2hhbmRsZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9vYmplY3Quc3ZoOjc4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X29iamVjdC5zdmg6NzkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9vYmplY3QiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjM3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X3NlcnZlci5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9zZXJ2ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9vYmplY3Quc3ZoOjU1MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfb2JqZWN0LnN2aDo1NTMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yb290LnN2aDo2NSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcm9vdCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3Jvb3Quc3ZoOjY2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yb290Ii4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yb290LnN2aDoyNDcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Jvb3RfcmVwb3J0X2hhbmRsZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L2xheWVyZWRfc3RpbXVsdXMvb3ZtX3NjZW5hcmlvLnN2aDoyMSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NlbmFyaW8iLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L2xheWVyZWRfc3RpbXVsdXMvb3ZtX3NjZW5hcmlvX2NvbnRyb2xsZXIuc3ZoOjI3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zY2VuYXJpb19jb250cm9sbGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvbGF5ZXJlZF9zdGltdWx1cy9vdm1fc2NlbmFyaW9fY29udHJvbGxlci5zdmg6MjkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NjZW5hcmlvX2NvbnRyb2xsZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L2xheWVyZWRfc3RpbXVsdXMvb3ZtX3NjZW5hcmlvX2RyaXZlci5zdmg6MjYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NjZW5hcmlvX2RyaXZlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fbWlzYy5zdmg6NTEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Njb3BlX3N0YWNrIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fbWlzYy5zdmg6NTIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Njb3BlX3N0YWNrIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fc2NvcmVib2FyZC5zdmg6MzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Njb3JlYm9hcmQiLgogCkBAIC03NjAsNyArNzYwLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9zZXF1ZW5jZXMvb3ZtX3NlcXVlbmNlX2Jhc2Uuc3ZoOjMxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zZXF1ZW5jZV9iYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9zZXF1ZW5jZXMvb3ZtX3NlcXVlbmNlX2l0ZW0uc3ZoOjM3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zZXF1ZW5jZV9pdGVtIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvc2VxdWVuY2VzL292bV9zZXF1ZW5jZV9pdGVtLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2VxdWVuY2VfaXRlbSIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvc2VxdWVuY2VzL292bV9zZXF1ZW5jZXIuc3ZoOjM2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zZXF1ZW5jZXIiLgogCkBAIC03NzYsMjEgKzc3NiwyMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fcG9ydHMuc3ZoOjI2MCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2xhdmVfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0LnN2aDo4NTEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3N0YXR1c19jb250YWluZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Quc3ZoOjg1MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc3RhdHVzX2NvbnRhaW5lciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo4MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc3RyaW5nX2NvbmZpZ19zZXR0aW5nIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo4NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc3RyaW5nX2NvbmZpZ19zZXR0aW5nIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fc3Vic2NyaWJlci5zdmg6MzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3N1YnNjcmliZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjM1NiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdGFibGVfcHJpbnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjM1NyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdGFibGVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NzMxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90YWJsZV9wcmludGVyX2tub2JzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NzMyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90YWJsZV9wcmludGVyX2tub2JzIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fdGVzdC5zdmg6NjEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Rlc3QiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdGlvbi5zdmg6NjM0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90ZXN0X2RvbmVfb2JqZWN0aW9uIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0aW9uLnN2aDo2MzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Rlc3RfZG9uZV9vYmplY3Rpb24iLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3RyYW5zYWN0aW9uLnN2aDozNyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdHJhbnNhY3Rpb24iLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV90cmFuc2FjdGlvbi5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyYW5zYWN0aW9uIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX2V4cG9ydHMuc3ZoOjI3NyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdHJhbnNwb3J0X2V4cG9ydCIuCiAKQEAgLTc5OCwxMyArNzk4LDEzIEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6Mjc5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90cmFuc3BvcnRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NDEwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90cmVlX3ByaW50ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo0MTEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyZWVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NzcyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90cmVlX3ByaW50ZXJfa25vYnMiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo3NzMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyZWVfcHJpbnRlcl9rbm9icyIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvY29tcGF0aWJpbGl0eS91cm1fbWVzc2FnZS5zdmg6MTg2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV91cm1fbWVzc2FnZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvY29tcGF0aWJpbGl0eS91cm1fbWVzc2FnZS5zdmg6MTM0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV91cm1fbWVzc2FnZV9mb3JtYXQiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9jb21wYXRpYmlsaXR5L3VybV9tZXNzYWdlLnN2aDoxMzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3VybV9tZXNzYWdlX2Zvcm1hdCIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvY29tcGF0aWJpbGl0eS91cm1fbWVzc2FnZS5zdmg6MzA5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV91cm1fb3ZlcnJpZGVfb3BlcmF0b3IiLgogCkBAIC04MTIsNyArODEyLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9jb21wYXRpYmlsaXR5L3VybV9tZXNzYWdlLnN2aDo0NTQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3VybV9yZXBvcnRfc2VydmVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9taXNjLnN2aDozOSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdm9pZCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX21pc2Muc3ZoOjQwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV92b2lkIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tYWNyb3Mvb3ZtX3BoYXNlX2RlZmluZXMuc3ZoOjM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OnBvc3RfbmV3X3BoYXNlIi4KIApAQCAtODk4LDcgKzg5OCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbmZpZ19kYi5zdmg6MzggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6bV91dm1fd2FpdGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjMyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnNldl9pZF9zdHJ1Y3QiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjMzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnNldl9pZF9zdHJ1Y3QiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fYWdlbnQuc3ZoOjM5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9hZ2VudCIuCiAKQEAgLTk4MCw3ICs5ODAsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NDcwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6ODcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrc19iYXNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9saW5rcy5zdmg6MjIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYXVzZV9lZmZlY3RfbGluayIuCiAKQEAgLTk5NCw5ICs5OTQsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fcGFpci5zdmg6MzcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NsYXNzX3BhaXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjI2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRfbGluZV92ZXJiIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRsaW5lX3Byb2Nlc3NvciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcGFyZXIuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wYXJlciIuCiAKQEAgLTEwMDYsMTMgKzEwMDYsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDoyMTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9wcm94eSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo1MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozNjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYl9vcHRpb25zIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWd1cmVfcGhhc2UiLgogCkBAIC0xMDI0LDcgKzEwMjQsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9mYWN0b3J5LnN2aDozMzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfZmFjdG9yeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjI0NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjI0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjk2NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVyaXZlZF9jYWxsYmFja3MiLgogCkBAIC0xMDM0LDcgKzEwMzQsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21tb25fcGhhc2VzLnN2aDoxNTEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VuZF9vZl9lbGFib3JhdGlvbl9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2dsb2JhbHMuc3ZoOjQ5OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW51bV93cmFwcGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2dsb2JhbHMuc3ZoOjUwMSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW51bV93cmFwcGVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX2Vudi5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VudiIuCiAKQEAgLTEwNzIsOSArMTA3Miw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fcmVnX21vZGVsLnN2aDozNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hkbF9wYXRoX2NvbmNhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6MjEyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9pbl9vcmRlcl9idWlsdF9pbl9jb21wYXJhdG9yIi4KIApAQCAtMTEwMCwxMyArMTEwMCwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvc2VxdWVuY2VzL3V2bV9tZW1fYWNjZXNzX3NlcS5zdmg6MTk1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fYWNjZXNzX3NlcSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTYyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX2NmZyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjUyMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9wb2xpY3kiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDoyNzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9yZWdpb24iLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDoyNzcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9yZWdpb24iLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvc2VxdWVuY2VzL3V2bV9yZWdfbWVtX3NoYXJlZF9hY2Nlc3Nfc2VxLnN2aDoyMDUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9zaGFyZWRfYWNjZXNzX3NlcSIuCiAKQEAgLTExNjQsNyArMTE2NCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdC5zdmg6NDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZWdpc3RyeS5zdmg6MTg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3RfcmVnaXN0cnkiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wb29sLnN2aDoyNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9zdHJpbmdfcG9vbCIuCiAKQEAgLTExNzIsMTEgKzExNzIsMTEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvbWFjcm9zL3V2bV9jYWxsYmFja19kZWZpbmVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3BhY2tlci5zdmg6NDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3BhY2tlciIuCiAKQEAgLTEyMzQsOSArMTIzNCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3RsbTEvdXZtX3BvcnRzLnN2aDo5NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcHV0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3F1ZXVlLnN2aDozNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcXVldWUiLgogCi1bSU5GTyA6Q1AwMzAyXSBidWlsdGluLnN2OjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc2VxdWVuY2UiLgorW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3JhbmRvbV9zdGltdWx1cy5zdmg6NDUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zdGltdWx1cyIuCiAKQEAgLTEzMDQsMzEgKzEzMDQsMzEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbGlua3Muc3ZoOjMwMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVsYXRlZF9saW5rIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjEwNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2NhdGNoZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjEwOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2NhdGNoZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfaGFuZGxlci5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9oYW5kbGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2hhbmRsZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6NDc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9iYXNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDozOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9iYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjI4NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9jb250YWluZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjI4NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9jb250YWluZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTA4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9pbnRfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTA5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9pbnRfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyMjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX29iamVjdF9lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyMjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX29iamVjdF9lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjE3NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfc3RyaW5nX2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjE3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfc3RyaW5nX2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfb2JqZWN0LnN2aDo3OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfb2JqZWN0LnN2aDo4MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X29iamVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjM5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6NDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6NDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9zZXJ2ZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MTIyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNldF9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxMzY5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTM3MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2UiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZV9iYXNlIi4KIApAQCAtMTM1MCw3ICsxMzUwLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3Njb3JlYm9hcmQuc3ZoOjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zY29yZWJvYXJkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvdGxtMS91dm1fc3FyX2Nvbm5lY3Rpb25zLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VxX2l0ZW1fcHVsbF9leHBvcnQiLgogCkBAIC0xNTE2LDEzICsxNTE2LDEzIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3ByaW50ZXIuc3ZoOjM1OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHJlZV9wcmludGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjE3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWRfY2FsbGJhY2tzIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo2MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZF9iYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDo2MzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3V0aWxzIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDozMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdmlzaXRvciIuCiAKQEAgLTE1ODAsOSArMTU4MCw5IEBACiAKIFtFUlJPUjpFTDA1MTRdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29tcGFyZXIuc3ZoOjE4OCBVbmRlZmluZWQgdmFyaWFibGU6IE9WTV9VTlBBQ0suCiAKLVtFUlJPUjpFTDA1MTRdIG92bV9wa2c6OmF2bV9wdXRfcG9ydDoxODcgVW5kZWZpbmVkIHZhcmlhYmxlOiBPVk1fUEFDSy4KK1tFUlJPUjpFTDA1MTRdIG92bV9wa2c6OmF2bV9wdXRfaW1wOjE4NyBVbmRlZmluZWQgdmFyaWFibGU6IE9WTV9QQUNLLgogCi1bRVJST1I6RUwwNTE0XSBvdm1fcGtnOjphdm1fcHV0X3BvcnQ6MTg4IFVuZGVmaW5lZCB2YXJpYWJsZTogT1ZNX1VOUEFDSy4KK1tFUlJPUjpFTDA1MTRdIG92bV9wa2c6OmF2bV9wdXRfaW1wOjE4OCBVbmRlZmluZWQgdmFyaWFibGU6IE9WTV9VTlBBQ0suCiAKIFtJTkZPIDpFTDA1MjZdIERlc2lnbiBFbGFib3JhdGlvbi4uLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9BbWlxU2ltcGxlVGVzdFN1aXRlL0FtaXFTaW1wbGVUZXN0U3VpdGUubG9nIGIvdGhpcmRfcGFydHkvdGVzdHMvQW1pcVNpbXBsZVRlc3RTdWl0ZS9BbWlxU2ltcGxlVGVzdFN1aXRlLmxvZwppbmRleCA4MGQyYTVhLi43ODQxZDZkIDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9BbWlxU2ltcGxlVGVzdFN1aXRlL0FtaXFTaW1wbGVUZXN0U3VpdGUubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL0FtaXFTaW1wbGVUZXN0U3VpdGUvQW1pcVNpbXBsZVRlc3RTdWl0ZS5sb2cKQEAgLTIwMiw3ICsyMDIsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb25maWdfZGIuc3ZoOjM4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6Om1fdXZtX3dhaXRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDozMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjpzZXZfaWRfc3RydWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjpzZXZfaWRfc3RydWN0Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX2FnZW50LnN2aDozOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fYWdlbnQiLgogCkBAIC0yODQsNyArMjg0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ3MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6ODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrc19iYXNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbGlua3Muc3ZoOjIyMSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2F1c2VfZWZmZWN0X2xpbmsiLgogCkBAIC0yOTgsOSArMjk4LDkgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3BhaXIuc3ZoOjM3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbGFzc19wYWlyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjI1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRfbGluZV92ZXJiIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjQ5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRsaW5lX3Byb2Nlc3NvciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbXBhcmVyLnN2aDozNCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcGFyZXIiLgogCkBAIC0zMTAsMTMgKzMxMCwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV90cmF2ZXJzYWwuc3ZoOjIxNCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3Byb3h5Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjQ5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wb25lbnRfcmVnaXN0cnkiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjUwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wb25lbnRfcmVnaXN0cnkiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb25maWdfZGIuc3ZoOjY1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfZGIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb25maWdfZGIuc3ZoOjM2MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiX29wdGlvbnMiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wb25lbnQuc3ZoOjI5NzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19vYmplY3Rfd3JhcHBlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wb25lbnQuc3ZoOjI5NzggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19vYmplY3Rfd3JhcHBlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3J1bnRpbWVfcGhhc2VzLnN2aDoyNDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ3VyZV9waGFzZSIuCiAKQEAgLTMyOCw3ICszMjgsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9mYWN0b3J5LnN2aDozMzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfZmFjdG9yeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjI0NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjI0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjk2NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVyaXZlZF9jYWxsYmFja3MiLgogCkBAIC0zMzgsNyArMzM4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tbW9uX3BoYXNlcy5zdmg6MTUxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbmRfb2ZfZWxhYm9yYXRpb25fcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9nbG9iYWxzLnN2aDo0OTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VudW1fd3JhcHBlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9nbG9iYWxzLnN2aDo1MDEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VudW1fd3JhcHBlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9lbnYuc3ZoOjMzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnYiLgogCkBAIC0zNzYsOSArMzc2LDkgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9yZWdfbW9kZWwuc3ZoOjM0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGRsX3BhdGhfY29uY2F0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1faGVhcnRiZWF0LnN2aDo1MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1faGVhcnRiZWF0LnN2aDoyOTEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdF9jYWxsYmFjayIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9pbl9vcmRlcl9jb21wYXJhdG9yLnN2aDoyMTIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2luX29yZGVyX2J1aWx0X2luX2NvbXBhcmF0b3IiLgogCkBAIC00MDQsMTMgKzQwNCwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvc2VxdWVuY2VzL3V2bV9tZW1fYWNjZXNzX3NlcS5zdmg6MTk1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fYWNjZXNzX3NlcSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTYyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX2NmZyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjUyMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9wb2xpY3kiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDoyNzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9yZWdpb24iLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDoyNzcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9yZWdpb24iLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvc2VxdWVuY2VzL3V2bV9yZWdfbWVtX3NoYXJlZF9hY2Nlc3Nfc2VxLnN2aDoyMDUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9zaGFyZWRfYWNjZXNzX3NlcSIuCiAKQEAgLTQ2OCw3ICs0NjgsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Quc3ZoOjQ2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3QiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZWdpc3RyeS5zdmg6MTg3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3RfcmVnaXN0cnkiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcG9vbC5zdmg6MjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rfc3RyaW5nX3Bvb2wiLgogCkBAIC00NzYsMTEgKzQ3NiwxMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9tYWNyb3MvdXZtX2NhbGxiYWNrX2RlZmluZXMuc3ZoOjU5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb24iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjE0MTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jYWxsYmFjayIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjE0MTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jYWxsYmFjayIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MTM2OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2NvbnRleHRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MTM2OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2NvbnRleHRfb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjMzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fZXZlbnRzIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcGFja2VyLnN2aDo0MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcGFja2VyIi4KIApAQCAtNTM4LDkgKzUzOCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3RsbTEvdXZtX3BvcnRzLnN2aDo5NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcHV0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3F1ZXVlLnN2aDozNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcXVldWUiLgogCi1bSU5GTyA6Q1AwMzAyXSBidWlsdGluLnN2OjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc2VxdWVuY2UiLgorW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3JhbmRvbV9zdGltdWx1cy5zdmg6NDUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zdGltdWx1cyIuCiAKQEAgLTYwOCwzMSArNjA4LDMxIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDozMDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlbGF0ZWRfbGluayIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDoxMDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9jYXRjaGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9jYXRjaGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfaGFuZGxlci5zdmg6NTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9oYW5kbGVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjQ3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MzggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyODQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfY29udGFpbmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyODUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfY29udGFpbmVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjEwOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfaW50X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjEwOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfaW50X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MjI4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9vYmplY3RfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MjI5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9vYmplY3RfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxNzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX3N0cmluZ19lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX3N0cmluZ19lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X29iamVjdC5zdmg6NzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9vYmplY3QiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X29iamVjdC5zdmg6ODAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9vYmplY3QiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21tb25fcGhhc2VzLnN2aDozOTAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjQ2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfc2VydmVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcnVudGltZV9waGFzZXMuc3ZoOjEyMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzZXRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTM2OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjE5OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2VfYmFzZSIuCiAKQEAgLTY1NCw3ICs2NTQsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fc2NvcmVib2FyZC5zdmg6MzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Njb3JlYm9hcmQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjMxOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VlZF9tYXAiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9zcXJfY29ubmVjdGlvbnMuc3ZoOjYyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZXFfaXRlbV9wdWxsX2V4cG9ydCIuCiAKQEAgLTgyMCwxMyArODIwLDEzIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3ByaW50ZXIuc3ZoOjM1OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHJlZV9wcmludGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjE3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWRfY2FsbGJhY2tzIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo2MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZF9iYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDo2MzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3V0aWxzIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDozMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdmlzaXRvciIuCiAKQEAgLTg0Miw5ICs4NDIsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX3ZyZWdfZmllbGQuc3ZoOjM3OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdnJlZ19maWVsZF9jYnMiLgogCi1bSU5GTyA6Q1AwMzAyXSBhbWlxX3N2YXVuaXRfZXhfc2ltcGxlX3BrZy5zdjoyNSBDb21waWxlIGNsYXNzICJ3b3JrQGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfdGVzdF9oZWFkX3NlcXVlbmNlIi4KK1tJTkZPIDpDUDAzMDJdIGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfcGtnLnN2OjExNjk1MSBDb21waWxlIGNsYXNzICJ3b3JrQGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfdGVzdF9oZWFkX3NlcXVlbmNlIi4KIAotW0lORk8gOkNQMDMwMl0gYW1pcV9zdmF1bml0X2V4X3NpbXBsZV9wa2cuc3Y6MTI0MTM1IENvbXBpbGUgY2xhc3MgIndvcmtAYW1pcV9zdmF1bml0X2V4X3NpbXBsZV90ZXN0X3NlcXVlbmNlIi4KK1tJTkZPIDpDUDAzMDJdIGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfcGtnLnN2OjExNjc5MCBDb21waWxlIGNsYXNzICJ3b3JrQGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfdGVzdF9zZXF1ZW5jZSIuCiAKIFtJTkZPIDpDUDAzMDJdIGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfcGtnLnN2OjEzMTc1MyBDb21waWxlIGNsYXNzICJ3b3JrQGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfdGVzdF9zdWl0ZSIuCiAKQEAgLTg2MCwzMSArODYwLDMxIEBACiAgICAgICAgICAgICAgICBhcGJfdG9wLnN2OjE1NDIzNiBwcmV2aW91cyBkZWZpbml0aW9uLgogCiBbRVJST1I6Q1AwMzM0XSBhbl9pbnRlcmZhY2Uuc3Y6NTA4NjkgQ29sbGlkaW5nIGNvbXBpbGF0aW9uIHVuaXQgbmFtZTogImFub3RoZXJfaW50ZXJmYWNlIiwKLSAgICAgICAgICAgICAgIGFuX2ludGVyZmFjZS5zdjoyOTMyNiBwcmV2aW91cyB1c2FnZS4KKyAgICAgICAgICAgICAgIGFuX2ludGVyZmFjZS5zdjo3MTc5IHByZXZpb3VzIHVzYWdlLgogCiBbRVJST1I6Q1AwMzM0XSBhbl9pbnRlcmZhY2Uuc3Y6NTgwOTkgQ29sbGlkaW5nIGNvbXBpbGF0aW9uIHVuaXQgbmFtZTogImFtaXFfYXBiX2lmIiwKLSAgICAgICAgICAgICAgIGFuX2ludGVyZmFjZS5zdjo3MTk4IHByZXZpb3VzIHVzYWdlLgorICAgICAgICAgICAgICAgYW5faW50ZXJmYWNlLnN2OjM1ODc0IHByZXZpb3VzIHVzYWdlLgogCi1bRVJST1I6Q1AwMzM0XSBhbWlxX3N2YXVuaXRfZXhfc2ltcGxlX3BrZy5zdjoyOTUzNSBDb2xsaWRpbmcgY29tcGlsYXRpb24gdW5pdCBuYW1lOiAiYW1pcV9hcGJfaWYiLAotICAgICAgICAgICAgICAgYW1pcV9zdmF1bml0X2V4X3NpbXBsZV9wa2cuc3Y6NzM4OCBwcmV2aW91cyB1c2FnZS4KK1tFUlJPUjpDUDAzMzRdIGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfcGtnLnN2OjUwODY5IENvbGxpZGluZyBjb21waWxhdGlvbiB1bml0IG5hbWU6ICJhbm90aGVyX2ludGVyZmFjZSIsCisgICAgICAgICAgICAgICBhbWlxX3N2YXVuaXRfZXhfc2ltcGxlX3BrZy5zdjo3MTc5IHByZXZpb3VzIHVzYWdlLgogCi1bRVJST1I6Q1AwMzM0XSBhbWlxX3N2YXVuaXRfZXhfc2ltcGxlX3BrZy5zdjo3MzIwNiBDb2xsaWRpbmcgY29tcGlsYXRpb24gdW5pdCBuYW1lOiAiYW5vdGhlcl9pbnRlcmZhY2UiLAotICAgICAgICAgICAgICAgYW1pcV9zdmF1bml0X2V4X3NpbXBsZV9wa2cuc3Y6NTE2NjMgcHJldmlvdXMgdXNhZ2UuCitbRVJST1I6Q1AwMzM0XSBhbWlxX3N2YXVuaXRfZXhfc2ltcGxlX3BrZy5zdjo1ODA5OSBDb2xsaWRpbmcgY29tcGlsYXRpb24gdW5pdCBuYW1lOiAiYW1pcV9hcGJfaWYiLAorICAgICAgICAgICAgICAgYW1pcV9zdmF1bml0X2V4X3NpbXBsZV9wa2cuc3Y6MzU4NzQgcHJldmlvdXMgdXNhZ2UuCiAKLVtFUlJPUjpDUDAzMzRdIGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfcGtnLnN2OjgwNDM2IENvbGxpZGluZyBjb21waWxhdGlvbiB1bml0IG5hbWU6ICJhbWlxX2FwYl9pZiIsCi0gICAgICAgICAgICAgICBhbWlxX3N2YXVuaXRfZXhfc2ltcGxlX3BrZy5zdjo3Mzg4IHByZXZpb3VzIHVzYWdlLgorW0VSUk9SOkNQMDMzNF0gYW1pcV9zdmF1bml0X2V4X3NpbXBsZV9wa2cuc3Y6ODAyNzYgQ29sbGlkaW5nIGNvbXBpbGF0aW9uIHVuaXQgbmFtZTogImFub3RoZXJfaW50ZXJmYWNlIiwKKyAgICAgICAgICAgICAgIGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfcGtnLnN2OjcxNzkgcHJldmlvdXMgdXNhZ2UuCiAKLVtFUlJPUjpDUDAzMzRdIGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfcGtnLnN2OjEwMjYxMyBDb2xsaWRpbmcgY29tcGlsYXRpb24gdW5pdCBuYW1lOiAiYW5vdGhlcl9pbnRlcmZhY2UiLAotICAgICAgICAgICAgICAgYW1pcV9zdmF1bml0X2V4X3NpbXBsZV9wa2cuc3Y6NTE2NjMgcHJldmlvdXMgdXNhZ2UuCitbRVJST1I6Q1AwMzM0XSBhbWlxX3N2YXVuaXRfZXhfc2ltcGxlX3BrZy5zdjoxMDg5NzEgQ29sbGlkaW5nIGNvbXBpbGF0aW9uIHVuaXQgbmFtZTogImFtaXFfYXBiX2lmIiwKKyAgICAgICAgICAgICAgIGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfcGtnLnN2OjM1ODc0IHByZXZpb3VzIHVzYWdlLgogCiBbRVJST1I6Q1AwMzM0XSBhbWlxX3N2YXVuaXRfZXhfc2ltcGxlX3BrZy5zdjoxMzIwMDYgQ29sbGlkaW5nIGNvbXBpbGF0aW9uIHVuaXQgbmFtZTogImFub3RoZXJfaW50ZXJmYWNlIiwKLSAgICAgICAgICAgICAgIGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfcGtnLnN2OjUxNjYzIHByZXZpb3VzIHVzYWdlLgorICAgICAgICAgICAgICAgYW1pcV9zdmF1bml0X2V4X3NpbXBsZV9wa2cuc3Y6NzE3OSBwcmV2aW91cyB1c2FnZS4KIAogW0VSUk9SOkNQMDMzNF0gYW1pcV9zdmF1bml0X2V4X3NpbXBsZV9wa2cuc3Y6MTM5MjM2IENvbGxpZGluZyBjb21waWxhdGlvbiB1bml0IG5hbWU6ICJhbWlxX2FwYl9pZiIsCi0gICAgICAgICAgICAgICBhbWlxX3N2YXVuaXRfZXhfc2ltcGxlX3BrZy5zdjo3Mzg4IHByZXZpb3VzIHVzYWdlLgorICAgICAgICAgICAgICAgYW1pcV9zdmF1bml0X2V4X3NpbXBsZV9wa2cuc3Y6MzU4NzQgcHJldmlvdXMgdXNhZ2UuCiAKIFtFUlJPUjpDUDAzMzRdIGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfcGtnLnN2OjE0NzAzMyBDb2xsaWRpbmcgY29tcGlsYXRpb24gdW5pdCBuYW1lOiAiYW5faW50ZXJmYWNlIiwKLSAgICAgICAgICAgICAgIGFtaXFfc3ZhdW5pdF9leF9zaW1wbGVfcGtnLnN2Ojg4MjMzIHByZXZpb3VzIHVzYWdlLgorICAgICAgICAgICAgICAgYW1pcV9zdmF1bml0X2V4X3NpbXBsZV9wa2cuc3Y6NjU4OTYgcHJldmlvdXMgdXNhZ2UuCiAKIFtFUlJPUjpDUDAzMTZdIGFwYl90b3Auc3Y6MzYgVW5kZWZpbmVkIHBhY2thZ2UgImFtaXFfc3ZhdW5pdF9leF9hcGJfdGVzdF9wa2ciLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9CbGFja1BhcnJvdC9CbGFja1BhcnJvdC5sb2cgYi90aGlyZF9wYXJ0eS90ZXN0cy9CbGFja1BhcnJvdC9CbGFja1BhcnJvdC5sb2cKaW5kZXggOGE1N2RmNy4uNDdjZDVmMyAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvQmxhY2tQYXJyb3QvQmxhY2tQYXJyb3QubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL0JsYWNrUGFycm90L0JsYWNrUGFycm90LmxvZwpAQCAtMjgsOSArMjgsNiBAQAogCiBbSU5GTyA6UFAwMTIzXSBQcmVwcm9jZXNzaW5nIGluY2x1ZGUgZmlsZSAiLi9icF9jb21tb24vc3JjL2luY2x1ZGUvYnBfY29tbW9uX2ZlX2JlX2lmLnZoIi4KIAotW0VSUk9SOlBQMDEwOV0gLi9leHRlcm5hbC9iYXNlanVtcF9zdGwvYnNnX21pc2MvYnNnX2RlZmluZXMudiBNYWNybyBpbnN0YW50aWF0aW9uIG9taXRzIGFyZ3VtZW50IDEgKHgpIGZvciAicnBncm91cCIsCi0gICAgICAgICAgICAgICAuL2V4dGVybmFsL2Jhc2VqdW1wX3N0bC9ic2dfbWlzYy9ic2dfZGVmaW5lcy52OjQ4IE5vIGRlZmF1bHQgdmFsdWUgZm9yIGFyZ3VtZW50IDEgKHgpIGluIG1hY3JvIGRlZmluaXRpb24uCi0KIFtXQVJOSTpQUDAxMTNdIC4vYnBfY29tbW9uL3NyYy9pbmNsdWRlL2JwX2NvbW1vbl9mZV9iZV9pZi52aDoyNzYgVW51c2VkIG1hY3JvIGFyZ3VtZW50ICJ2YWRkcl93aWR0aF9tcCIuCiAKIFtXQVJOSTpQUDAxMTNdIC4vYnBfY29tbW9uL3NyYy9pbmNsdWRlL2JwX2NvbW1vbl9mZV9iZV9pZi52aDoyNzkgVW51c2VkIG1hY3JvIGFyZ3VtZW50ICJ2YWRkcl93aWR0aF9tcCIuCkBAIC0xODg0LDcgKzE4ODEsNyBAQAogCiBbICBGQVRBTF0gOiAwCiBbIFNZTlRBWF0gOiAwCi1bICBFUlJPUl0gOiAxNQorWyAgRVJST1JdIDogMTQKIFtXQVJOSU5HXSA6IDIxOQogWyAgIE5PVEVdIDogMTA4CiAKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL0J1aWxkT1ZNUGtnL0J1aWxkT1ZNUGtnLmxvZyBiL3RoaXJkX3BhcnR5L3Rlc3RzL0J1aWxkT1ZNUGtnL0J1aWxkT1ZNUGtnLmxvZwppbmRleCBiODhmZjRiLi4zNjlhNThkIDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9CdWlsZE9WTVBrZy9CdWlsZE9WTVBrZy5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvQnVpbGRPVk1Qa2cvQnVpbGRPVk1Qa2cubG9nCkBAIC0yMzUsMTkgKzIzNSwyMyBAQAogCiBbSU5GTyA6UFAwMTIzXSBQcmVwcm9jZXNzaW5nIGluY2x1ZGUgZmlsZSAiLi4vLi4vVVZNL292bS0yLjEuMi9zcmMvY29tcGF0aWJpbGl0eS91cm1fbWV0aF9jb21wYXRpYmlsaXR5LnN2aCIuCiAKLVByZXByb2Nlc3NpbmcgdG9vayAxLjE4MHMKK1ByZXByb2Nlc3NpbmcgdG9vayAxLjI4NnMKIAotUHJlcHJvY2Vzc2luZyB0b29rIDEuMTgwcworUHJlcHJvY2Vzc2luZyB0b29rIDEuMjg2cwogUFAgU1NMIFBhcnNpbmc6IDAuMDAyIC9ob21lL2FsYWluL1N1cmVsb2cvYnVpbGQvZGlzdC9SZWxlYXNlLy9zdi9idWlsdGluLnN2Ci1QUCBTU0wgUGFyc2luZzogMC4wMjIgLi4vLi4vVVZNL292bS0yLjEuMi9zcmMvb3ZtX3BrZy5zdgorUFAgU1NMIFBhcnNpbmc6IDAuMDA0IC4uLy4uL1VWTS9vdm0tMi4xLjIvc3JjL292bV9wa2cuc3YKIAogW0lORk8gOlBBMDIwMV0gUGFyc2luZyBzb3VyY2UgZmlsZSAiYnVpbHRpbi5zdiIuCiAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKIFtJTkZPIDpQQTAyMDFdIFBhcnNpbmcgc291cmNlIGZpbGUgIi4uLy4uL1VWTS9vdm0tMi4xLjIvc3JjL292bV9wa2cuc3YiLgogCi1QYXJzaW5nIHRvb2sgNDAuMzk0cwotU1NMIFBhcnNpbmc6IDAuMDM2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL0J1aWxkT1ZNUGtnL3NscHBfYWxsL3dvcmsvL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKLUxMICBQYXJzaW5nOiAzOS40NzYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvQnVpbGRPVk1Qa2cvc2xwcF9hbGwvd29yay9fXy9fXy9VVk0vb3ZtLTIuMS4yL3NyYy9vdm1fcGtnLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitQYXJzaW5nIHRvb2sgNDIuNTcycworU0xMIFBhcnNpbmc6IDAuMDU2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL0J1aWxkT1ZNUGtnL3NscHBfYWxsL3dvcmsvL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0xMICBQYXJzaW5nOiA0MS41NDQgLi4vLi4vLi4vYnVpbGQvdGVzdHMvQnVpbGRPVk1Qa2cvc2xwcF9hbGwvd29yay9fXy9fXy9VVk0vb3ZtLTIuMS4yL3NyYy9vdm1fcGtnLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCiAKIFtXQVJOSTpQQTAyMDVdIC4uLy4uL1VWTS9vdm0tMi4xLjIvc3JjL292bV9wa2cuc3Y6MjMgTm8gdGltZXNjYWxlIHNldCBmb3IgIm92bV9wa2ciLgogCkBAIC04MzEsMTUgKzgzNSwxNyBAQAogUFJPRklMRQogPT09PT09PT09PT09PT0KIFNjYW4gbGlicmFyaWVzIHRvb2sgMC4wMDBzCi1QcmVwcm9jZXNzaW5nIHRvb2sgMS4xODBzCitQcmVwcm9jZXNzaW5nIHRvb2sgMS4yODZzCiBQUCBTU0wgUGFyc2luZzogMC4wMDIgL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKLVBQIFNTTCBQYXJzaW5nOiAwLjAyMiAuLi8uLi9VVk0vb3ZtLTIuMS4yL3NyYy9vdm1fcGtnLnN2Ci1QYXJzaW5nIHRvb2sgNDAuMzk0cwotU1NMIFBhcnNpbmc6IDAuMDM2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL0J1aWxkT1ZNUGtnL3NscHBfYWxsL3dvcmsvL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKLUxMICBQYXJzaW5nOiAzOS40NzYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvQnVpbGRPVk1Qa2cvc2xwcF9hbGwvd29yay9fXy9fXy9VVk0vb3ZtLTIuMS4yL3NyYy9vdm1fcGtnLnN2CitQUCBTU0wgUGFyc2luZzogMC4wMDQgLi4vLi4vVVZNL292bS0yLjEuMi9zcmMvb3ZtX3BrZy5zdgorUGFyc2luZyB0b29rIDQyLjU3MnMKK1NMTCBQYXJzaW5nOiAwLjA1NiAuLi8uLi8uLi9idWlsZC90ZXN0cy9CdWlsZE9WTVBrZy9zbHBwX2FsbC93b3JrLy9ob21lL2FsYWluL1N1cmVsb2cvYnVpbGQvZGlzdC9SZWxlYXNlLy9zdi9idWlsdGluLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitMTCAgUGFyc2luZzogNDEuNTQ0IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL0J1aWxkT1ZNUGtnL3NscHBfYWxsL3dvcmsvX18vX18vVVZNL292bS0yLjEuMi9zcmMvb3ZtX3BrZy5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAogQ29tcGlsYXRpb24gdG9vayAwLjAyMnMKIEVsYWJvcmF0aW9uIHRvb2sgMC4wMThzCi1Ub3RhbCB0aW1lIDQxLjYxNnMKK1RvdGFsIHRpbWUgNDMuODk4cwogPT09PT09PT09PT09PT0KIAogWyAgRkFUQUxdIDogMApkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvdGVzdHMvQ29yZXNTd2VSVi9Db3Jlc1N3ZVJWLmxvZyBiL3RoaXJkX3BhcnR5L3Rlc3RzL0NvcmVzU3dlUlYvQ29yZXNTd2VSVi5sb2cKaW5kZXggNzZkZjc5OS4uMzQ1NjRiMiAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvQ29yZXNTd2VSVi9Db3Jlc1N3ZVJWLmxvZworKysgYi90aGlyZF9wYXJ0eS90ZXN0cy9Db3Jlc1N3ZVJWL0NvcmVzU3dlUlYubG9nCkBAIC02NTgsNyArNjU4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjptX3V2bV93YWl0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2FnZW50Ii4KIApAQCAtNzQwLDcgKzc0MCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDoyMjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhdXNlX2VmZmVjdF9saW5rIi4KIApAQCAtNzU0LDkgKzc1NCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9wYWlyLnN2aDozNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2xhc3NfcGFpciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wYXJlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBhcmVyIi4KIApAQCAtNzY2LDEzICs3NjYsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDoyMTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9wcm94eSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo1MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozNjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYl9vcHRpb25zIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWd1cmVfcGhhc2UiLgogCkBAIC03ODQsNyArNzg0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZmFjdG9yeS5zdmg6MzMwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X2ZhY3RvcnkiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo5NjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2Rlcml2ZWRfY2FsbGJhY2tzIi4KIApAQCAtNzk0LDcgKzc5NCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjE1MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW5kX29mX2VsYWJvcmF0aW9uX3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NDk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NTAxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fZW52LnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW52Ii4KIApAQCAtODMyLDkgKzgzMiw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fcmVnX21vZGVsLnN2aDozNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hkbF9wYXRoX2NvbmNhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6MjEyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9pbl9vcmRlcl9idWlsdF9pbl9jb21wYXJhdG9yIi4KIApAQCAtODYwLDEzICs4NjAsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fbWVtX2FjY2Vzc19zZXEuc3ZoOjE5NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX2FjY2Vzc19zZXEiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjY0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1NjMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fY2ZnIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX3BvbGljeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fcmVnX21lbV9zaGFyZWRfYWNjZXNzX3NlcS5zdmg6MjA1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fc2hhcmVkX2FjY2Vzc19zZXEiLgogCkBAIC05MjQsNyArOTI0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0LnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Bvb2wuc3ZoOjI0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3N0cmluZ19wb29sIi4KIApAQCAtOTMyLDExICs5MzIsMTEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvbWFjcm9zL3V2bV9jYWxsYmFja19kZWZpbmVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3BhY2tlci5zdmg6NDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3BhY2tlciIuCiAKQEAgLTk5NCw5ICs5OTQsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9wb3J0cy5zdmg6OTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3B1dF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcXVldWUuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9xdWV1ZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KIAotW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KK1tJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zZXF1ZW5jZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9yYW5kb21fc3RpbXVsdXMuc3ZoOjQ1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc3RpbXVsdXMiLgogCkBAIC0xMDY0LDMxICsxMDY0LDMxIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDozMDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlbGF0ZWRfbGluayIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDoxMDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9jYXRjaGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9jYXRjaGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfaGFuZGxlci5zdmg6NTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9oYW5kbGVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjQ3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MzggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyODQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfY29udGFpbmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyODUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfY29udGFpbmVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjEwOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfaW50X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjEwOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfaW50X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MjI4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9vYmplY3RfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MjI5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9vYmplY3RfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxNzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX3N0cmluZ19lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX3N0cmluZ19lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X29iamVjdC5zdmg6NzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9vYmplY3QiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X29iamVjdC5zdmg6ODAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9vYmplY3QiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21tb25fcGhhc2VzLnN2aDozOTAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjQ2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfc2VydmVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcnVudGltZV9waGFzZXMuc3ZoOjEyMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzZXRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTM2OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjE5OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2VfYmFzZSIuCiAKQEAgLTExMTAsNyArMTExMCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9zY29yZWJvYXJkLnN2aDozNiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2NvcmVib2FyZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjMxOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VlZF9tYXAiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3RsbTEvdXZtX3Nxcl9jb25uZWN0aW9ucy5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlcV9pdGVtX3B1bGxfZXhwb3J0Ii4KIApAQCAtMTI3NiwxMyArMTI3NiwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wcmludGVyLnN2aDozNTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3RyZWVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6MTc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlZF9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjYzNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdXRpbHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3RyYXZlcnNhbC5zdmg6MzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Zpc2l0b3IiLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9Ecml2ZXIvRHJpdmVyLmxvZyBiL3RoaXJkX3BhcnR5L3Rlc3RzL0RyaXZlci9Ecml2ZXIubG9nCmluZGV4IDdkODA3NmEuLmIxN2I4MjkgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL0RyaXZlci9Ecml2ZXIubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL0RyaXZlci9Ecml2ZXIubG9nCkBAIC0xMTIsNyArMTEyLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjptX3V2bV93YWl0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2FnZW50Ii4KIApAQCAtMTk0LDcgKzE5NCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDoyMjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhdXNlX2VmZmVjdF9saW5rIi4KIApAQCAtMjA4LDkgKzIwOCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9wYWlyLnN2aDozNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2xhc3NfcGFpciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wYXJlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBhcmVyIi4KIApAQCAtMjIwLDEzICsyMjAsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDoyMTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9wcm94eSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo1MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozNjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYl9vcHRpb25zIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWd1cmVfcGhhc2UiLgogCkBAIC0yMzgsNyArMjM4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZmFjdG9yeS5zdmg6MzMwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X2ZhY3RvcnkiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo5NjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2Rlcml2ZWRfY2FsbGJhY2tzIi4KIApAQCAtMjQ4LDcgKzI0OCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjE1MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW5kX29mX2VsYWJvcmF0aW9uX3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NDk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NTAxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fZW52LnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW52Ii4KIApAQCAtMjg2LDkgKzI4Niw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fcmVnX21vZGVsLnN2aDozNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hkbF9wYXRoX2NvbmNhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6MjEyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9pbl9vcmRlcl9idWlsdF9pbl9jb21wYXJhdG9yIi4KIApAQCAtMzE0LDEzICszMTQsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fbWVtX2FjY2Vzc19zZXEuc3ZoOjE5NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX2FjY2Vzc19zZXEiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjY0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1NjMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fY2ZnIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX3BvbGljeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fcmVnX21lbV9zaGFyZWRfYWNjZXNzX3NlcS5zdmg6MjA1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fc2hhcmVkX2FjY2Vzc19zZXEiLgogCkBAIC0zNzgsNyArMzc4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0LnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Bvb2wuc3ZoOjI0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3N0cmluZ19wb29sIi4KIApAQCAtMzg2LDExICszODYsMTEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvbWFjcm9zL3V2bV9jYWxsYmFja19kZWZpbmVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3BhY2tlci5zdmg6NDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3BhY2tlciIuCiAKQEAgLTQ0OCw5ICs0NDgsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9wb3J0cy5zdmg6OTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3B1dF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcXVldWUuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9xdWV1ZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KIAotW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KK1tJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zZXF1ZW5jZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9yYW5kb21fc3RpbXVsdXMuc3ZoOjQ1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc3RpbXVsdXMiLgogCkBAIC01MTgsMzEgKzUxOCwzMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9saW5rcy5zdmg6MzAwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZWxhdGVkX2xpbmsiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2hhbmRsZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDo0NzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjc5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjgwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tbW9uX3BoYXNlcy5zdmg6MzkwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3J1bnRpbWVfcGhhc2VzLnN2aDoxMjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc2V0X3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxMzcwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxOTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlX2Jhc2UiLgogCkBAIC01NjQsNyArNTY0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3Njb3JlYm9hcmQuc3ZoOjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zY29yZWJvYXJkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvdGxtMS91dm1fc3FyX2Nvbm5lY3Rpb25zLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VxX2l0ZW1fcHVsbF9leHBvcnQiLgogCkBAIC03MzAsMTMgKzczMCwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wcmludGVyLnN2aDozNTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3RyZWVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6MTc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlZF9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjYzNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdXRpbHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3RyYXZlcnNhbC5zdmg6MzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Zpc2l0b3IiLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9Hb29nbGUvR29vZ2xlLnNsIGIvdGhpcmRfcGFydHkvdGVzdHMvR29vZ2xlL0dvb2dsZS5zbAppbmRleCA0YWU2Y2FhLi5mY2YxNzQyIDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9Hb29nbGUvR29vZ2xlLnNsCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL0dvb2dsZS9Hb29nbGUuc2wKQEAgLTEgKzEgQEAKLSAraW5jZGlyKy4rLi4vLi4vLi4vVVZNL3V2bS0xLjIvc3JjLyAgICAgICAgLXdyaXRlcHAgLXBhcnNlICAtZCBpbnN0ICAtbXQgMCAgICAtbm9jYWNoZSAtbm9idWlsdGluICtkZWZpbmUrRElHSVRTPTEwICArZGVmaW5lK1dJRFRIPTIgICtkZWZpbmUrRVhQQU5EX1RPX1NUUklORz10b3RvLnN2aCArZGVmaW5lK0VYUEFORF9UT19QQVRIK3RvcC90b3RvMi8gLW5vcHl0aG9uIC1maWxldW5pdCAgLW5vY2FjaGUgIC1JY2hhcHRlci0yMi8gKi5zdiAqLyouc3YgKi8qLyouc3YgKi8qLyovKi5zdiAqLyovKi8qLyouc3YKKyAraW5jZGlyKy4rLi4vLi4vLi4vVVZNL3V2bS0xLjIvc3JjLyAtd3JpdGVwcCAtcGFyc2UgLW5vY2FjaGUgLW5vYnVpbHRpbiArZGVmaW5lK0RJR0lUUz0xMCAgK2RlZmluZStXSURUSD0yICArZGVmaW5lK0VYUEFORF9UT19TVFJJTkc9dG90by5zdmggK2RlZmluZStFWFBBTkRfVE9fUEFUSCt0b3AvdG90bzIvIC1ub3B5dGhvbiAtZmlsZXVuaXQgLUljaGFwdGVyLTIyLyAqLnN2ICovKi5zdiAqLyovKi5zdiAqLyovKi8qLnN2ICovKi8qLyovKi5zdgpkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvdGVzdHMvR29vZ2xlL0dvb2dsZU1ULnNsIGIvdGhpcmRfcGFydHkvdGVzdHMvR29vZ2xlL0dvb2dsZU1ULnNsCmluZGV4IGE3MDgzNDQuLjBjZGE3NWQgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL0dvb2dsZS9Hb29nbGVNVC5zbAorKysgYi90aGlyZF9wYXJ0eS90ZXN0cy9Hb29nbGUvR29vZ2xlTVQuc2wKQEAgLTEgKzEgQEAKLSAraW5jZGlyKy4rLi4vLi4vLi4vVVZNL3V2bS0xLjIvc3JjLyAgICAgICAgLXdyaXRlcHAgLXBhcnNlICAtZCBpbnN0ICAtbXQgbWF4ICAgLW5vY2FjaGUgLW5vYnVpbHRpbiArZGVmaW5lK0RJR0lUUz0xMCAgICtkZWZpbmUrV0lEVEg9MiArZGVmaW5lK0VYUEFORF9UT19TVFJJTkc9dG90by5zdmggK2RlZmluZStFWFBBTkRfVE9fUEFUSCt0b3AvdG90bzIvICAtbm9weXRob24gIC1maWxldW5pdCAtbm9jYWNoZSAgLUljaGFwdGVyLTIyLyAqLnN2ICovKi5zdiAqLyovKi5zdiAqLyovKi8qLnN2ICovKi8qLyovKi5zdgorICtpbmNkaXIrLisuLi8uLi8uLi9VVk0vdXZtLTEuMi9zcmMvIC13cml0ZXBwIC1wYXJzZSAtbXQgbWF4IC1ub2NhY2hlIC1ub2J1aWx0aW4gK2RlZmluZStESUdJVFM9MTAgICArZGVmaW5lK1dJRFRIPTIgK2RlZmluZStFWFBBTkRfVE9fU1RSSU5HPXRvdG8uc3ZoICtkZWZpbmUrRVhQQU5EX1RPX1BBVEgrdG9wL3RvdG8yLyAtbm9weXRob24gLWZpbGV1bml0IC1JY2hhcHRlci0yMi8gKi5zdiAqLyouc3YgKi8qLyouc3YgKi8qLyovKi5zdiAqLyovKi8qLyouc3YKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL0liZXgvSWJleC5sb2cgYi90aGlyZF9wYXJ0eS90ZXN0cy9JYmV4L0liZXgubG9nCmluZGV4IGNjMDYwZjQuLjUyMWI5YWMgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL0liZXgvSWJleC5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvSWJleC9JYmV4LmxvZwpAQCAtMTc2LDcgKzE3Niw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbmZpZ19kYi5zdmg6MzggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6bV91dm1fd2FpdGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjMyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnNldl9pZF9zdHJ1Y3QiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjMzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnNldl9pZF9zdHJ1Y3QiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fYWdlbnQuc3ZoOjM5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9hZ2VudCIuCiAKQEAgLTI1OCw3ICsyNTgsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NDcwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6ODcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrc19iYXNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9saW5rcy5zdmg6MjIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYXVzZV9lZmZlY3RfbGluayIuCiAKQEAgLTI3Miw5ICsyNzIsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fcGFpci5zdmg6MzcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NsYXNzX3BhaXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjI2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRfbGluZV92ZXJiIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRsaW5lX3Byb2Nlc3NvciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcGFyZXIuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wYXJlciIuCiAKQEAgLTI4NCwxMyArMjg0LDEzIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3RyYXZlcnNhbC5zdmg6MjE0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wb25lbnRfcHJveHkiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZWdpc3RyeS5zdmg6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9yZWdpc3RyeSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZWdpc3RyeS5zdmg6NTAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbmZpZ19kYi5zdmg6NjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYiIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbmZpZ19kYi5zdmg6MzYwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfZGJfb3B0aW9ucyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbXBvbmVudC5zdmg6Mjk3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX29iamVjdF93cmFwcGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbXBvbmVudC5zdmg6Mjk3OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX29iamVjdF93cmFwcGVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcnVudGltZV9waGFzZXMuc3ZoOjI0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlndXJlX3BoYXNlIi4KIApAQCAtMzAyLDcgKzMwMiw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2ZhY3Rvcnkuc3ZoOjMzMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9mYWN0b3J5Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6MjQ0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X3JlcG9ydF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6MjQ2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X3JlcG9ydF9zZXJ2ZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6OTY2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZXJpdmVkX2NhbGxiYWNrcyIuCiAKQEAgLTMxMiw3ICszMTIsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21tb25fcGhhc2VzLnN2aDoxNTEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VuZF9vZl9lbGFib3JhdGlvbl9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2dsb2JhbHMuc3ZoOjQ5OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW51bV93cmFwcGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2dsb2JhbHMuc3ZoOjUwMSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW51bV93cmFwcGVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX2Vudi5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VudiIuCiAKQEAgLTM1MCw5ICszNTAsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX3JlZ19tb2RlbC5zdmg6MzQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZGxfcGF0aF9jb25jYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjUzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1faGVhcnRiZWF0LnN2aDo1NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1faGVhcnRiZWF0LnN2aDoyOTAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdF9jYWxsYmFjayIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX2luX29yZGVyX2NvbXBhcmF0b3Iuc3ZoOjIxMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faW5fb3JkZXJfYnVpbHRfaW5fY29tcGFyYXRvciIuCiAKQEAgLTM3OCwxMyArMzc4LDEzIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy9zZXF1ZW5jZXMvdXZtX21lbV9hY2Nlc3Nfc2VxLnN2aDoxOTUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9hY2Nlc3Nfc2VxIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo2NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjY1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fY2ZnIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTYzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX2NmZyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTIwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX3BvbGljeSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjUyMSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9wb2xpY3kiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjI3NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX3JlZ2lvbiIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjI3NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX3JlZ2lvbiIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy9zZXF1ZW5jZXMvdXZtX3JlZ19tZW1fc2hhcmVkX2FjY2Vzc19zZXEuc3ZoOjIwNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX3NoYXJlZF9hY2Nlc3Nfc2VxIi4KIApAQCAtNDQyLDcgKzQ0Miw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdC5zdmg6NDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZWdpc3RyeS5zdmg6MTg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3RfcmVnaXN0cnkiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wb29sLnN2aDoyNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9zdHJpbmdfcG9vbCIuCiAKQEAgLTQ1MCwxMSArNDUwLDExIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL21hY3Jvcy91dm1fY2FsbGJhY2tfZGVmaW5lcy5zdmg6NTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbiIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MTQxOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MTQxOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2NhbGxiYWNrIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxMzY4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY29udGV4dF9vYmplY3QiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxMzY5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY29udGV4dF9vYmplY3QiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjMyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fZXZlbnRzIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wYWNrZXIuc3ZoOjQwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9wYWNrZXIiLgogCkBAIC01MTIsOSArNTEyLDkgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvdGxtMS91dm1fcG9ydHMuc3ZoOjk0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9wdXRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3F1ZXVlLnN2aDozNCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcXVldWUiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcXVldWUuc3ZoOjM1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9xdWV1ZSIuCiAKLVtJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zZXF1ZW5jZSIuCitbSU5GTyA6Q1AwMzAyXSBidWlsdGluLnN2OjQ5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc2VxdWVuY2UiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fcmFuZG9tX3N0aW11bHVzLnN2aDo0NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3N0aW11bHVzIi4KIApAQCAtNTgyLDMxICs1ODIsMzEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbGlua3Muc3ZoOjMwMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVsYXRlZF9saW5rIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjEwNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2NhdGNoZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2NhdGNoZXIuc3ZoOjEwOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2NhdGNoZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfaGFuZGxlci5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9oYW5kbGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2hhbmRsZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6NDc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9iYXNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDozOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9iYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjI4NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9jb250YWluZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjI4NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfZWxlbWVudF9jb250YWluZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTA4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9pbnRfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTA5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9pbnRfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyMjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX29iamVjdF9lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyMjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX29iamVjdF9lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjE3NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfc3RyaW5nX2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjE3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfc3RyaW5nX2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfb2JqZWN0LnN2aDo3OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfb2JqZWN0LnN2aDo4MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X29iamVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjM5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6NDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X3NlcnZlci5zdmg6NDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9zZXJ2ZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MTIyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNldF9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxMzY5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTM3MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2UiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZV9iYXNlIi4KIApAQCAtNjI4LDcgKzYyOCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9zY29yZWJvYXJkLnN2aDozNiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2NvcmVib2FyZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjMxOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VlZF9tYXAiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3RsbTEvdXZtX3Nxcl9jb25uZWN0aW9ucy5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlcV9pdGVtX3B1bGxfZXhwb3J0Ii4KIApAQCAtNzk0LDEzICs3OTQsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcHJpbnRlci5zdmg6MzU4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90cmVlX3ByaW50ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6MTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlZF9jYWxsYmFja3MiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjE3NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWRfY2FsbGJhY2tzIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjYxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjYyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZF9iYXNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkX2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDo2MzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3V0aWxzIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjYzNiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdXRpbHMiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV90cmF2ZXJzYWwuc3ZoOjMwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV92aXNpdG9yIi4KIApkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvdGVzdHMvSWJleEdvb2dsZS9JYmV4R29vZ2xlLmxvZyBiL3RoaXJkX3BhcnR5L3Rlc3RzL0liZXhHb29nbGUvSWJleEdvb2dsZS5sb2cKaW5kZXggMGM1N2I0ZS4uY2EwMmQyNyAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvSWJleEdvb2dsZS9JYmV4R29vZ2xlLmxvZworKysgYi90aGlyZF9wYXJ0eS90ZXN0cy9JYmV4R29vZ2xlL0liZXhHb29nbGUubG9nCkBAIC0yNTQsNyArMjU0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjptX3V2bV93YWl0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2FnZW50Ii4KIApAQCAtMzM2LDcgKzMzNiw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDoyMjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhdXNlX2VmZmVjdF9saW5rIi4KIApAQCAtMzUwLDkgKzM1MCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9wYWlyLnN2aDozNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2xhc3NfcGFpciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wYXJlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBhcmVyIi4KIApAQCAtMzYyLDEzICszNjIsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDoyMTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9wcm94eSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo1MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozNjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYl9vcHRpb25zIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWd1cmVfcGhhc2UiLgogCkBAIC0zODAsNyArMzgwLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZmFjdG9yeS5zdmg6MzMwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X2ZhY3RvcnkiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo5NjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2Rlcml2ZWRfY2FsbGJhY2tzIi4KIApAQCAtMzkwLDcgKzM5MCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjE1MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW5kX29mX2VsYWJvcmF0aW9uX3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NDk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NTAxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fZW52LnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW52Ii4KIApAQCAtNDI4LDkgKzQyOCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fcmVnX21vZGVsLnN2aDozNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hkbF9wYXRoX2NvbmNhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6MjEyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9pbl9vcmRlcl9idWlsdF9pbl9jb21wYXJhdG9yIi4KIApAQCAtNDU2LDEzICs0NTYsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fbWVtX2FjY2Vzc19zZXEuc3ZoOjE5NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX2FjY2Vzc19zZXEiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjY0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1NjMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fY2ZnIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX3BvbGljeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fcmVnX21lbV9zaGFyZWRfYWNjZXNzX3NlcS5zdmg6MjA1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fc2hhcmVkX2FjY2Vzc19zZXEiLgogCkBAIC01MjAsNyArNTIwLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0LnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Bvb2wuc3ZoOjI0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3N0cmluZ19wb29sIi4KIApAQCAtNTI4LDExICs1MjgsMTEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvbWFjcm9zL3V2bV9jYWxsYmFja19kZWZpbmVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3BhY2tlci5zdmg6NDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3BhY2tlciIuCiAKQEAgLTU5MCw5ICs1OTAsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9wb3J0cy5zdmg6OTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3B1dF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcXVldWUuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9xdWV1ZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KIAotW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KK1tJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zZXF1ZW5jZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9yYW5kb21fc3RpbXVsdXMuc3ZoOjQ1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc3RpbXVsdXMiLgogCkBAIC02NjAsMzEgKzY2MCwzMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9saW5rcy5zdmg6MzAwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZWxhdGVkX2xpbmsiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2hhbmRsZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDo0NzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjc5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjgwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tbW9uX3BoYXNlcy5zdmg6MzkwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3J1bnRpbWVfcGhhc2VzLnN2aDoxMjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc2V0X3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxMzcwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxOTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlX2Jhc2UiLgogCkBAIC03MDYsNyArNzA2LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3Njb3JlYm9hcmQuc3ZoOjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zY29yZWJvYXJkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvdGxtMS91dm1fc3FyX2Nvbm5lY3Rpb25zLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VxX2l0ZW1fcHVsbF9leHBvcnQiLgogCkBAIC04NzIsMTMgKzg3MiwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wcmludGVyLnN2aDozNTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3RyZWVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6MTc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlZF9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjYzNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdXRpbHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3RyYXZlcnNhbC5zdmg6MzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Zpc2l0b3IiLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9JY2FydXMvSWNhcnVzLnNsIGIvdGhpcmRfcGFydHkvdGVzdHMvSWNhcnVzL0ljYXJ1cy5zbAppbmRleCAwYmU5NzQyLi5iYzYwOGJlIDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9JY2FydXMvSWNhcnVzLnNsCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL0ljYXJ1cy9JY2FydXMuc2wKQEAgLTEgKzEgQEAKLSAraW5jZGlyKy4rLi4vLi4vLi4vVVZNL3V2bS0xLjIvc3JjLyAgICAgLWZpbGV1bml0ICAgIC13cml0ZXBwIC1wYXJzZSAgIC1tdCBtYXggICB2cGkvKi52IGNvbnRyaWIvKi52IGl2bHRlc3RzLyoudiAtbm9jYWNoZQorICtpbmNkaXIrLisuLi8uLi8uLi9VVk0vdXZtLTEuMi9zcmMvIC1maWxldW5pdCAtd3JpdGVwcCAtcGFyc2UgdnBpLyoudiBjb250cmliLyoudiBpdmx0ZXN0cy8qLnYgLW5vY2FjaGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL01pbmlBbWlxL01pbmlBbWlxLmxvZyBiL3RoaXJkX3BhcnR5L3Rlc3RzL01pbmlBbWlxL01pbmlBbWlxLmxvZwppbmRleCBhNTJjN2QxLi5kYTI0ZmFlIDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9NaW5pQW1pcS9NaW5pQW1pcS5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvTWluaUFtaXEvTWluaUFtaXEubG9nCkBAIC0xMzYsNyArMTM2LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjptX3V2bV93YWl0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2FnZW50Ii4KIApAQCAtMjE4LDcgKzIxOCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDoyMjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhdXNlX2VmZmVjdF9saW5rIi4KIApAQCAtMjMyLDkgKzIzMiw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9wYWlyLnN2aDozNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2xhc3NfcGFpciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wYXJlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBhcmVyIi4KIApAQCAtMjQ0LDEzICsyNDQsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDoyMTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9wcm94eSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo1MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozNjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYl9vcHRpb25zIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWd1cmVfcGhhc2UiLgogCkBAIC0yNjIsNyArMjYyLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZmFjdG9yeS5zdmg6MzMwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X2ZhY3RvcnkiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo5NjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2Rlcml2ZWRfY2FsbGJhY2tzIi4KIApAQCAtMjcyLDcgKzI3Miw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjE1MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW5kX29mX2VsYWJvcmF0aW9uX3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NDk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NTAxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fZW52LnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW52Ii4KIApAQCAtMzEwLDkgKzMxMCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fcmVnX21vZGVsLnN2aDozNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hkbF9wYXRoX2NvbmNhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6MjEyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9pbl9vcmRlcl9idWlsdF9pbl9jb21wYXJhdG9yIi4KIApAQCAtMzM4LDEzICszMzgsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fbWVtX2FjY2Vzc19zZXEuc3ZoOjE5NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX2FjY2Vzc19zZXEiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjY0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1NjMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fY2ZnIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX3BvbGljeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fcmVnX21lbV9zaGFyZWRfYWNjZXNzX3NlcS5zdmg6MjA1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fc2hhcmVkX2FjY2Vzc19zZXEiLgogCkBAIC00MDIsNyArNDAyLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0LnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Bvb2wuc3ZoOjI0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3N0cmluZ19wb29sIi4KIApAQCAtNDEwLDExICs0MTAsMTEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvbWFjcm9zL3V2bV9jYWxsYmFja19kZWZpbmVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3BhY2tlci5zdmg6NDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3BhY2tlciIuCiAKQEAgLTQ3Miw5ICs0NzIsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9wb3J0cy5zdmg6OTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3B1dF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcXVldWUuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9xdWV1ZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KIAotW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KK1tJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zZXF1ZW5jZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9yYW5kb21fc3RpbXVsdXMuc3ZoOjQ1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc3RpbXVsdXMiLgogCkBAIC01NDIsMzEgKzU0MiwzMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9saW5rcy5zdmg6MzAwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZWxhdGVkX2xpbmsiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2hhbmRsZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDo0NzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjc5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjgwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tbW9uX3BoYXNlcy5zdmg6MzkwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3J1bnRpbWVfcGhhc2VzLnN2aDoxMjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc2V0X3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxMzcwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxOTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlX2Jhc2UiLgogCkBAIC01ODgsNyArNTg4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3Njb3JlYm9hcmQuc3ZoOjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zY29yZWJvYXJkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvdGxtMS91dm1fc3FyX2Nvbm5lY3Rpb25zLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VxX2l0ZW1fcHVsbF9leHBvcnQiLgogCkBAIC03NTQsMTMgKzc1NCwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wcmludGVyLnN2aDozNTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3RyZWVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6MTc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlZF9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjYzNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdXRpbHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3RyYXZlcnNhbC5zdmg6MzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Zpc2l0b3IiLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9Nb25pdG9yL01vbml0b3IubG9nIGIvdGhpcmRfcGFydHkvdGVzdHMvTW9uaXRvci9Nb25pdG9yLmxvZwppbmRleCAyMDZkOTA5Li45ODM3MGZlIDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9Nb25pdG9yL01vbml0b3IubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL01vbml0b3IvTW9uaXRvci5sb2cKQEAgLTE1Miw3ICsxNTIsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb25maWdfZGIuc3ZoOjM4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6Om1fdXZtX3dhaXRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDozMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjpzZXZfaWRfc3RydWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjpzZXZfaWRfc3RydWN0Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX2FnZW50LnN2aDozOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fYWdlbnQiLgogCkBAIC0yMzQsNyArMjM0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ3MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6ODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrc19iYXNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbGlua3Muc3ZoOjIyMSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2F1c2VfZWZmZWN0X2xpbmsiLgogCkBAIC0yNDgsOSArMjQ4LDkgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3BhaXIuc3ZoOjM3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbGFzc19wYWlyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjI1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRfbGluZV92ZXJiIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjQ5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRsaW5lX3Byb2Nlc3NvciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbXBhcmVyLnN2aDozNCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcGFyZXIiLgogCkBAIC0yNjAsMTMgKzI2MCwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV90cmF2ZXJzYWwuc3ZoOjIxNCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3Byb3h5Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjQ5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wb25lbnRfcmVnaXN0cnkiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjUwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wb25lbnRfcmVnaXN0cnkiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb25maWdfZGIuc3ZoOjY1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfZGIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb25maWdfZGIuc3ZoOjM2MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiX29wdGlvbnMiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wb25lbnQuc3ZoOjI5NzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19vYmplY3Rfd3JhcHBlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wb25lbnQuc3ZoOjI5NzggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19vYmplY3Rfd3JhcHBlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3J1bnRpbWVfcGhhc2VzLnN2aDoyNDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ3VyZV9waGFzZSIuCiAKQEAgLTI3OCw3ICsyNzgsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9mYWN0b3J5LnN2aDozMzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfZmFjdG9yeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjI0NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjI0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjk2NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVyaXZlZF9jYWxsYmFja3MiLgogCkBAIC0yODgsNyArMjg4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tbW9uX3BoYXNlcy5zdmg6MTUxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbmRfb2ZfZWxhYm9yYXRpb25fcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9nbG9iYWxzLnN2aDo0OTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VudW1fd3JhcHBlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9nbG9iYWxzLnN2aDo1MDEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VudW1fd3JhcHBlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9lbnYuc3ZoOjMzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnYiLgogCkBAIC0zMjYsOSArMzI2LDkgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9yZWdfbW9kZWwuc3ZoOjM0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGRsX3BhdGhfY29uY2F0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1faGVhcnRiZWF0LnN2aDo1MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1faGVhcnRiZWF0LnN2aDoyOTEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdF9jYWxsYmFjayIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9pbl9vcmRlcl9jb21wYXJhdG9yLnN2aDoyMTIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2luX29yZGVyX2J1aWx0X2luX2NvbXBhcmF0b3IiLgogCkBAIC0zNTQsMTMgKzM1NCwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvc2VxdWVuY2VzL3V2bV9tZW1fYWNjZXNzX3NlcS5zdmg6MTk1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fYWNjZXNzX3NlcSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTYyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX2NmZyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjUyMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9wb2xpY3kiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDoyNzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9yZWdpb24iLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDoyNzcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9yZWdpb24iLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvc2VxdWVuY2VzL3V2bV9yZWdfbWVtX3NoYXJlZF9hY2Nlc3Nfc2VxLnN2aDoyMDUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9zaGFyZWRfYWNjZXNzX3NlcSIuCiAKQEAgLTQxOCw3ICs0MTgsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Quc3ZoOjQ2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3QiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZWdpc3RyeS5zdmg6MTg3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3RfcmVnaXN0cnkiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcG9vbC5zdmg6MjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rfc3RyaW5nX3Bvb2wiLgogCkBAIC00MjYsMTEgKzQyNiwxMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9tYWNyb3MvdXZtX2NhbGxiYWNrX2RlZmluZXMuc3ZoOjU5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb24iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjE0MTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jYWxsYmFjayIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjE0MTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jYWxsYmFjayIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MTM2OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2NvbnRleHRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MTM2OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2NvbnRleHRfb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjMzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fZXZlbnRzIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcGFja2VyLnN2aDo0MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcGFja2VyIi4KIApAQCAtNDg4LDkgKzQ4OCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3RsbTEvdXZtX3BvcnRzLnN2aDo5NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcHV0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3F1ZXVlLnN2aDozNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcXVldWUiLgogCi1bSU5GTyA6Q1AwMzAyXSBidWlsdGluLnN2OjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc2VxdWVuY2UiLgorW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3JhbmRvbV9zdGltdWx1cy5zdmg6NDUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zdGltdWx1cyIuCiAKQEAgLTU1OCwzMSArNTU4LDMxIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDozMDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlbGF0ZWRfbGluayIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDoxMDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9jYXRjaGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9jYXRjaGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfaGFuZGxlci5zdmg6NTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9oYW5kbGVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjQ3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MzggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyODQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfY29udGFpbmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyODUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfY29udGFpbmVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjEwOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfaW50X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjEwOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfaW50X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MjI4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9vYmplY3RfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MjI5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9vYmplY3RfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxNzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX3N0cmluZ19lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX3N0cmluZ19lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X29iamVjdC5zdmg6NzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9vYmplY3QiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X29iamVjdC5zdmg6ODAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9vYmplY3QiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21tb25fcGhhc2VzLnN2aDozOTAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjQ2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfc2VydmVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcnVudGltZV9waGFzZXMuc3ZoOjEyMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzZXRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTM2OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjE5OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2VfYmFzZSIuCiAKQEAgLTYwNCw3ICs2MDQsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fc2NvcmVib2FyZC5zdmg6MzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Njb3JlYm9hcmQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjMxOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VlZF9tYXAiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9zcXJfY29ubmVjdGlvbnMuc3ZoOjYyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZXFfaXRlbV9wdWxsX2V4cG9ydCIuCiAKQEAgLTc3MCwxMyArNzcwLDEzIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3ByaW50ZXIuc3ZoOjM1OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHJlZV9wcmludGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjE3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWRfY2FsbGJhY2tzIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo2MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZF9iYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDo2MzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3V0aWxzIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDozMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdmlzaXRvciIuCiAKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL09WTVN3aXRjaC9PVk1Td2l0Y2gubG9nIGIvdGhpcmRfcGFydHkvdGVzdHMvT1ZNU3dpdGNoL09WTVN3aXRjaC5sb2cKaW5kZXggMzI0MWNjNy4uOWJhYzE3NiAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvT1ZNU3dpdGNoL09WTVN3aXRjaC5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvT1ZNU3dpdGNoL09WTVN3aXRjaC5sb2cKQEAgLTExMCw3ICsxMTAsNyBAQAogCiBbSU5GTyA6Q1AwMzAwXSBDb21waWxhdGlvbi4uLgogCi1bSU5GTyA6Q1AwMzAxXSBvdm0tMi4xLjIvc3JjL292bV9wa2cuc3Y6MjIgQ29tcGlsZSBwYWNrYWdlICJvdm1fcGtnIi4KK1tJTkZPIDpDUDAzMDFdIG92bS0yLjEuMi9zcmMvb3ZtX3BrZy5zdjoyMyBDb21waWxlIHBhY2thZ2UgIm92bV9wa2ciLgogCiBbSU5GTyA6Q1AwMzA0XSBpbnRlcmZhY2Uuc3Y6NDQgQ29tcGlsZSBpbnRlcmZhY2UgIndvcmtAaW5wdXRfaW50ZXJmYWNlIi4KIApAQCAtMjc0LDcgKzI3NCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvY29tcGF0aWJpbGl0eS9hdm1fY29tcGF0aWJpbGl0eS5zdmg6MTMyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OmF2bV90cmFuc3BvcnRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fbWlzYy5zdmg6MjQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6YXZtX3ZpcnR1YWxfY2xhc3MiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9taXNjLnN2aDoyNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjphdm1fdmlydHVhbF9jbGFzcyIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWFjcm9zL292bV9waGFzZV9kZWZpbmVzLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpidWlsZF9waGFzZSIuCiAKQEAgLTI4NCw3ICsyODQsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21hY3Jvcy9vdm1fcGhhc2VfZGVmaW5lcy5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6Y29ubmVjdF9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUwNyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpkZWZhdWx0X3JlcG9ydF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfaGFuZGxlci5zdmg6NTI2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OmRlZmF1bHRfcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWFjcm9zL292bV9waGFzZV9kZWZpbmVzLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjplbmRfb2ZfZWxhYm9yYXRpb25fcGhhc2UiLgogCkBAIC0yOTQsNyArMjk0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tYWNyb3Mvb3ZtX3BoYXNlX2RlZmluZXMuc3ZoOjM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OmltcG9ydF9jb25uZWN0aW9uc19waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX2FnZW50LnN2aDozOSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYWdlbnQiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fYWdlbnQuc3ZoOjQwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9hZ2VudCIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX2FsZ29yaXRobWljX2NvbXBhcmF0b3Iuc3ZoOjY1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9hbGdvcml0aG1pY19jb21wYXJhdG9yIi4KIApAQCAtMzQ4LDM1ICszNDgsMzUgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX3BvcnRzLnN2aDoyNjcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2Jsb2NraW5nX3RyYW5zcG9ydF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjc4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9idWlsdF9pbl9jbG9uZSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6ODEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2J1aWx0X2luX2Nsb25lIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjQxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9idWlsdF9pbl9jb21wIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo0MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fY29tcCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fY29udmVydGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo2MCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fY29udmVydGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcGFpci5zdmg6MTAzIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9idWlsdF9pbl9wYWlyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BhaXIuc3ZoOjEwNCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fcGFpciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY2FsbGJhY2suc3ZoOjI2MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NhbGxiYWNrLnN2aDo1OCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2FsbGJhY2tzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY2FsbGJhY2suc3ZoOjU5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6MTM1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19jbG9uZSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6MTM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19jbG9uZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo5NyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfY29tcCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6MTAwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19jb21wIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjExNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfY29udmVydGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDoxMTkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NsYXNzX2NvbnZlcnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BhaXIuc3ZoOjMwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19wYWlyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BhaXIuc3ZoOjMxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19wYWlyIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb21wYXJlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NvbXBhcmVyIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb21wb25lbnQuc3ZoOjY1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb21wb25lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlZ2lzdHJ5LnN2aDozNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVnaXN0cnkuc3ZoOjM3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb21wb25lbnRfcmVnaXN0cnkiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NvbmZpZy5zdmg6MjUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NvbmZpZ19zZXR0aW5nIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDoyNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29uZmlnX3NldHRpbmciLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6ODgyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb3B5X21hcCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6ODgzIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb3B5X21hcCIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX2RyaXZlci5zdmg6NDEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2RyaXZlciIuCiAKQEAgLTM4OCwxMSArMzg4LDExIEBACiAKIFtJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6MTU2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9leGhhdXN0aXZlX3NlcXVlbmNlIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9mYWN0b3J5LnN2aDo3MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZmFjdG9yeSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2ZhY3Rvcnkuc3ZoOjc0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9mYWN0b3J5Ii4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9mYWN0b3J5LnN2aDo3MjcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2ZhY3Rvcnlfb3ZlcnJpZGUiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2ZhY3Rvcnkuc3ZoOjI5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9mYWN0b3J5X3F1ZXVlX2NsYXNzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fZmFjdG9yeS5zdmg6MzAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2ZhY3RvcnlfcXVldWVfY2xhc3MiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fZXhwb3J0cy5zdmg6MTA1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9nZXRfZXhwb3J0Ii4KIApAQCAtNDA2LDcgKzQwNiw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6MTA2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9nZXRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6Njk5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9oaWVyX3ByaW50ZXJfa25vYnMiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo3MDAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2hpZXJfcHJpbnRlcl9rbm9icyIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX2luX29yZGVyX2NvbXBhcmF0b3Iuc3ZoOjIwNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1faW5fb3JkZXJfYnVpbHRfaW5fY29tcGFyYXRvciIuCiAKQEAgLTQxNCw5ICs0MTQsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9pbl9vcmRlcl9jb21wYXJhdG9yLnN2aDo2NyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1faW5fb3JkZXJfY29tcGFyYXRvciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo2OCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1faW50X2NvbmZpZ19zZXR0aW5nIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo2OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1faW50X2NvbmZpZ19zZXR0aW5nIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo0NjIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2xpbmVfcHJpbnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjQ2MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbGluZV9wcmludGVyIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX2V4cG9ydHMuc3ZoOjIzNyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbWFzdGVyX2V4cG9ydCIuCiAKQEAgLTQyNCw3ICs0MjQsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fcG9ydHMuc3ZoOjIzOSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbWFzdGVyX3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9tb25pdG9yLnN2aDozNCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbW9uaXRvciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9tb25pdG9yLnN2aDozNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbW9uaXRvciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9leHBvcnRzLnN2aDo5OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbm9uYmxvY2tpbmdfZ2V0X2V4cG9ydCIuCiAKQEAgLTQ2OCwxOSArNDY4LDE5IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6MjczIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9ub25ibG9ja2luZ190cmFuc3BvcnRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0LnN2aDo1MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0LnN2aDo1NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb25maWcuc3ZoOjk4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3RfY29uZmlnX3NldHRpbmciLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb25maWcuc3ZoOjk5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3RfY29uZmlnX3NldHRpbmciLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlZ2lzdHJ5LnN2aDoxNjcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdF9yZWdpc3RyeSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlZ2lzdHJ5LnN2aDoxNjggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcG9vbC5zdmg6MjQxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3Rfc3RyaW5nX3Bvb2wiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2ZhY3Rvcnkuc3ZoOjY4NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0X3dyYXBwZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdGlvbi5zdmg6NDIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdGlvbiIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdGlvbi5zdmg6NDMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdGlvbiIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0LnN2aDo5MDggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29wdGlvbnNfY29udGFpbmVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0LnN2aDo5MDkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29wdGlvbnNfY29udGFpbmVyIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wYWNrZXIuc3ZoOjQ1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wYWNrZXIiLgogCkBAIC00OTAsNyArNDkwLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX3BvcnRzLnN2aDoxMjQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3BlZWtfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcGhhc2VzLnN2OjM1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9waGFzZSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3BoYXNlcy5zdjozNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcGhhc2UiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3Bvb2wuc3ZoOjMxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wb29sIi4KIApAQCAtNTAwLDkgKzUwMCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcG9ydF9iYXNlLnN2aDo0NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcG9ydF9jb21wb25lbnRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6ODAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3ByaW50ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo4MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NDkzIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wcmludGVyX2tub2JzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NDk0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wcmludGVyX2tub2JzIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcHVzaF9kcml2ZXIuc3ZoOjM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wdXNoX2RyaXZlciIuCiAKQEAgLTUxNCw3ICs1MTQsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fcG9ydHMuc3ZoOjg4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wdXRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcXVldWUuc3ZoOjMyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9xdWV1ZSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3F1ZXVlLnN2aDozMyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcXVldWUiLgogCiBbSU5GTyA6Q1AwMzAyXSBidWlsdGluLnN2OjQ0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yYW5kb21fc2VxdWVuY2UiLgogCkBAIC01MjIsMjcgKzUyMiwyNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlY29yZGVyLnN2aDozNCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVjb3JkZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjM3NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0X2dsb2JhbF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfc2VydmVyLnN2aDozNzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9nbG9iYWxfc2VydmVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfaGFuZGxlci5zdmg6NTAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9oYW5kbGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRfaGFuZGxlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X29iamVjdC5zdmg6NzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9vYmplY3QiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfb2JqZWN0LnN2aDo3OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X3NlcnZlci5zdmg6MzcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfc2VydmVyLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0X3NlcnZlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X29iamVjdC5zdmg6NTUyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9vYmplY3Quc3ZoOjU1MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3Jvb3Quc3ZoOjY1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yb290Ii4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcm9vdC5zdmg6NjYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Jvb3QiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3Jvb3Quc3ZoOjI0NyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcm9vdF9yZXBvcnRfaGFuZGxlciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvbGF5ZXJlZF9zdGltdWx1cy9vdm1fc2NlbmFyaW8uc3ZoOjIxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zY2VuYXJpbyIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvbGF5ZXJlZF9zdGltdWx1cy9vdm1fc2NlbmFyaW9fY29udHJvbGxlci5zdmg6MjcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NjZW5hcmlvX2NvbnRyb2xsZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9sYXllcmVkX3N0aW11bHVzL292bV9zY2VuYXJpb19jb250cm9sbGVyLnN2aDoyOSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NlbmFyaW9fY29udHJvbGxlciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvbGF5ZXJlZF9zdGltdWx1cy9vdm1fc2NlbmFyaW9fZHJpdmVyLnN2aDoyNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NlbmFyaW9fZHJpdmVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9taXNjLnN2aDo1MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NvcGVfc3RhY2siLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9taXNjLnN2aDo1MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NvcGVfc3RhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9zY29yZWJvYXJkLnN2aDozNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NvcmVib2FyZCIuCiAKQEAgLTU2Miw3ICs1NjIsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L3NlcXVlbmNlcy9vdm1fc2VxdWVuY2VfYmFzZS5zdmg6MzEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NlcXVlbmNlX2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L3NlcXVlbmNlcy9vdm1fc2VxdWVuY2VfaXRlbS5zdmg6MzcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NlcXVlbmNlX2l0ZW0iLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9zZXF1ZW5jZXMvb3ZtX3NlcXVlbmNlX2l0ZW0uc3ZoOjM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zZXF1ZW5jZV9pdGVtIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9zZXF1ZW5jZXMvb3ZtX3NlcXVlbmNlci5zdmg6MzYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NlcXVlbmNlciIuCiAKQEAgLTU3OCwyMSArNTc4LDIxIEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6MjYwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zbGF2ZV9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Quc3ZoOjg1MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc3RhdHVzX2NvbnRhaW5lciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6ODUyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zdGF0dXNfY29udGFpbmVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb25maWcuc3ZoOjgzIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zdHJpbmdfY29uZmlnX3NldHRpbmciLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb25maWcuc3ZoOjg0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zdHJpbmdfY29uZmlnX3NldHRpbmciLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9zdWJzY3JpYmVyLnN2aDozNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc3Vic2NyaWJlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6MzU2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90YWJsZV9wcmludGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6MzU3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90YWJsZV9wcmludGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo3MzEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RhYmxlX3ByaW50ZXJfa25vYnMiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo3MzIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RhYmxlX3ByaW50ZXJfa25vYnMiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV90ZXN0LnN2aDo2MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdGVzdCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0aW9uLnN2aDo2MzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Rlc3RfZG9uZV9vYmplY3Rpb24iLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Rpb24uc3ZoOjYzNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdGVzdF9kb25lX29iamVjdGlvbiIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fdHJhbnNhY3Rpb24uc3ZoOjM3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90cmFuc2FjdGlvbiIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3RyYW5zYWN0aW9uLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdHJhbnNhY3Rpb24iLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fZXhwb3J0cy5zdmg6Mjc3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90cmFuc3BvcnRfZXhwb3J0Ii4KIApAQCAtNjAwLDEzICs2MDAsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX3BvcnRzLnN2aDoyNzkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyYW5zcG9ydF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo0MTAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyZWVfcHJpbnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjQxMSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdHJlZV9wcmludGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo3NzIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyZWVfcHJpbnRlcl9rbm9icyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjc3MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdHJlZV9wcmludGVyX2tub2JzIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9jb21wYXRpYmlsaXR5L3VybV9tZXNzYWdlLnN2aDoxODYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3VybV9tZXNzYWdlIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9jb21wYXRpYmlsaXR5L3VybV9tZXNzYWdlLnN2aDoxMzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3VybV9tZXNzYWdlX2Zvcm1hdCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2NvbXBhdGliaWxpdHkvdXJtX21lc3NhZ2Uuc3ZoOjEzNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdXJtX21lc3NhZ2VfZm9ybWF0Ii4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9jb21wYXRpYmlsaXR5L3VybV9tZXNzYWdlLnN2aDozMDkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3VybV9vdmVycmlkZV9vcGVyYXRvciIuCiAKQEAgLTYxNCw3ICs2MTQsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2NvbXBhdGliaWxpdHkvdXJtX21lc3NhZ2Uuc3ZoOjQ1NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdXJtX3JlcG9ydF9zZXJ2ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX21pc2Muc3ZoOjM5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV92b2lkIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fbWlzYy5zdmg6NDAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3ZvaWQiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21hY3Jvcy9vdm1fcGhhc2VfZGVmaW5lcy5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6cG9zdF9uZXdfcGhhc2UiLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9TY29yZWJvYXJkL1Njb3JlYm9hcmQubG9nIGIvdGhpcmRfcGFydHkvdGVzdHMvU2NvcmVib2FyZC9TY29yZWJvYXJkLmxvZwppbmRleCA1MWIyYWU5Li5kMTVjNWNiIDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9TY29yZWJvYXJkL1Njb3JlYm9hcmQubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1Njb3JlYm9hcmQvU2NvcmVib2FyZC5sb2cKQEAgLTExMiw3ICsxMTIsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb25maWdfZGIuc3ZoOjM4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6Om1fdXZtX3dhaXRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDozMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjpzZXZfaWRfc3RydWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjpzZXZfaWRfc3RydWN0Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX2FnZW50LnN2aDozOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fYWdlbnQiLgogCkBAIC0xOTQsNyArMTk0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ3MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6ODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrc19iYXNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbGlua3Muc3ZoOjIyMSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2F1c2VfZWZmZWN0X2xpbmsiLgogCkBAIC0yMDgsOSArMjA4LDkgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3BhaXIuc3ZoOjM3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbGFzc19wYWlyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjI1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRfbGluZV92ZXJiIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY21kbGluZV9wcm9jZXNzb3Iuc3ZoOjQ5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jbWRsaW5lX3Byb2Nlc3NvciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbXBhcmVyLnN2aDozNCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcGFyZXIiLgogCkBAIC0yMjAsMTMgKzIyMCwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV90cmF2ZXJzYWwuc3ZoOjIxNCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3Byb3h5Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjQ5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wb25lbnRfcmVnaXN0cnkiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjUwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb21wb25lbnRfcmVnaXN0cnkiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb25maWdfZGIuc3ZoOjY1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfZGIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb25maWdfZGIuc3ZoOjM2MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiX29wdGlvbnMiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wb25lbnQuc3ZoOjI5NzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19vYmplY3Rfd3JhcHBlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wb25lbnQuc3ZoOjI5NzggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19vYmplY3Rfd3JhcHBlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3J1bnRpbWVfcGhhc2VzLnN2aDoyNDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ3VyZV9waGFzZSIuCiAKQEAgLTIzOCw3ICsyMzgsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9mYWN0b3J5LnN2aDozMzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfZmFjdG9yeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjI0NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjI0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjk2NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZGVyaXZlZF9jYWxsYmFja3MiLgogCkBAIC0yNDgsNyArMjQ4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tbW9uX3BoYXNlcy5zdmg6MTUxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbmRfb2ZfZWxhYm9yYXRpb25fcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9nbG9iYWxzLnN2aDo0OTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VudW1fd3JhcHBlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9nbG9iYWxzLnN2aDo1MDEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2VudW1fd3JhcHBlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9lbnYuc3ZoOjMzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnYiLgogCkBAIC0yODYsOSArMjg2LDkgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9yZWdfbW9kZWwuc3ZoOjM0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGRsX3BhdGhfY29uY2F0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1faGVhcnRiZWF0LnN2aDo1MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1faGVhcnRiZWF0LnN2aDoyOTEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdF9jYWxsYmFjayIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9pbl9vcmRlcl9jb21wYXJhdG9yLnN2aDoyMTIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2luX29yZGVyX2J1aWx0X2luX2NvbXBhcmF0b3IiLgogCkBAIC0zMTQsMTMgKzMxNCwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvc2VxdWVuY2VzL3V2bV9tZW1fYWNjZXNzX3NlcS5zdmg6MTk1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fYWNjZXNzX3NlcSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTYyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX2NmZyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjUyMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9wb2xpY3kiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDoyNzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9yZWdpb24iLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDoyNzcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9yZWdpb24iLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvc2VxdWVuY2VzL3V2bV9yZWdfbWVtX3NoYXJlZF9hY2Nlc3Nfc2VxLnN2aDoyMDUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9zaGFyZWRfYWNjZXNzX3NlcSIuCiAKQEAgLTM3OCw3ICszNzgsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Quc3ZoOjQ2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3QiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZWdpc3RyeS5zdmg6MTg3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3RfcmVnaXN0cnkiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcG9vbC5zdmg6MjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rfc3RyaW5nX3Bvb2wiLgogCkBAIC0zODYsMTEgKzM4NiwxMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9tYWNyb3MvdXZtX2NhbGxiYWNrX2RlZmluZXMuc3ZoOjU5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb24iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjE0MTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jYWxsYmFjayIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjE0MTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jYWxsYmFjayIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MTM2OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2NvbnRleHRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MTM2OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2NvbnRleHRfb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjMzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fZXZlbnRzIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcGFja2VyLnN2aDo0MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcGFja2VyIi4KIApAQCAtNDQ4LDkgKzQ0OCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3RsbTEvdXZtX3BvcnRzLnN2aDo5NCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcHV0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3F1ZXVlLnN2aDozNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcXVldWUiLgogCi1bSU5GTyA6Q1AwMzAyXSBidWlsdGluLnN2OjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc2VxdWVuY2UiLgorW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3JhbmRvbV9zdGltdWx1cy5zdmg6NDUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zdGltdWx1cyIuCiAKQEAgLTUxOCwzMSArNTE4LDMxIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDozMDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlbGF0ZWRfbGluayIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDoxMDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9jYXRjaGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9jYXRjaGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfaGFuZGxlci5zdmg6NTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9oYW5kbGVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjQ3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MzggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyODQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfY29udGFpbmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyODUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfY29udGFpbmVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjEwOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfaW50X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjEwOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfaW50X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MjI4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9vYmplY3RfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MjI5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9vYmplY3RfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxNzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX3N0cmluZ19lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX3N0cmluZ19lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X29iamVjdC5zdmg6NzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9vYmplY3QiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X29iamVjdC5zdmg6ODAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9vYmplY3QiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21tb25fcGhhc2VzLnN2aDozOTAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjQ2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfc2VydmVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcnVudGltZV9waGFzZXMuc3ZoOjEyMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzZXRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTM2OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjE5OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2VfYmFzZSIuCiAKQEAgLTU2NCw3ICs1NjQsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fc2NvcmVib2FyZC5zdmg6MzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Njb3JlYm9hcmQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjMxOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VlZF9tYXAiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9zcXJfY29ubmVjdGlvbnMuc3ZoOjYyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZXFfaXRlbV9wdWxsX2V4cG9ydCIuCiAKQEAgLTczMCwxMyArNzMwLDEzIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3ByaW50ZXIuc3ZoOjM1OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHJlZV9wcmludGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjE3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWRfY2FsbGJhY2tzIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo2MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZF9iYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDo2MzYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3V0aWxzIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDozMCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdmlzaXRvciIuCiAKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1NjcjEvU2NyMS5sb2cgYi90aGlyZF9wYXJ0eS90ZXN0cy9TY3IxL1NjcjEubG9nCmluZGV4IGQwNDNjN2MuLjhlZjhiNmQgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL1NjcjEvU2NyMS5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvU2NyMS9TY3IxLmxvZwpAQCAtNiwxNyArNiwxNyBAQAogCiBbV0FSTkk6UFAwMTAzXSBzcmMvaW5jbHVkZXMvc2NyMV9hcmNoX2Rlc2NyaXB0aW9uLnN2aDo2MyBVbmRlZmluaW5nIGFuIHVua25vd24gbWFjcm8gIlNDUjFfQ0xLQ1RSTF9FTiIuCiAKLVByZXByb2Nlc3NpbmcgdG9vayAwLjY2MHMKK1ByZXByb2Nlc3NpbmcgdG9vayAwLjQzOHMKIAotUHJlcHJvY2Vzc2luZyB0b29rIDAuNjYwcwotUFAgU1NMIFBhcnNpbmc6IDAuMDAyIC9ob21lL2FsYWluL1N1cmVsb2cvYnVpbGQvZGlzdC9SZWxlYXNlLy9zdi9idWlsdGluLnN2Ci1QUCBTU0wgUGFyc2luZzogMC4wMzggc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9oZHUuc3YKK1ByZXByb2Nlc3NpbmcgdG9vayAwLjQzOHMKK1BQIFNTTCBQYXJzaW5nOiAwLjAwMCAvaG9tZS9hbGFpbi9TdXJlbG9nL2J1aWxkL2Rpc3QvUmVsZWFzZS8vc3YvYnVpbHRpbi5zdgorUFAgU1NMIFBhcnNpbmc6IDAuMDA2IHNyYy9waXBlbGluZS9zY3IxX3BpcGVfaGR1LnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDIgc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV90ZHUuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwMiBzcmMvcGlwZWxpbmUvc2NyMV9pcGljLnN2Ci1QUCBTU0wgUGFyc2luZzogMC4wMDYgc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9jc3Iuc3YKLVBQIFNTTCBQYXJzaW5nOiAwLjAxMCBzcmMvcGlwZWxpbmUvc2NyMV9waXBlX2V4dS5zdgorUFAgU1NMIFBhcnNpbmc6IDAuMDA0IHNyYy9waXBlbGluZS9zY3IxX3BpcGVfY3NyLnN2CitQUCBTU0wgUGFyc2luZzogMC4wMDQgc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9leHUuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwNCBzcmMvcGlwZWxpbmUvc2NyMV9waXBlX2lhbHUuc3YKLVBQIFNTTCBQYXJzaW5nOiAwLjAwNiBzcmMvcGlwZWxpbmUvc2NyMV9waXBlX2lkdS5zdgorUFAgU1NMIFBhcnNpbmc6IDAuMDA0IHNyYy9waXBlbGluZS9zY3IxX3BpcGVfaWR1LnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDQgc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9pZnUuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwMiBzcmMvcGlwZWxpbmUvc2NyMV9waXBlX2xzdS5zdgogUFAgU1NMIFBhcnNpbmc6IDAuMDAwIHNyYy9waXBlbGluZS9zY3IxX3BpcGVfbXByZi5zdgpAQCAtMjgsNTMgKzI4LDExNyBAQAogUFAgU1NMIFBhcnNpbmc6IDAuMDAyIHNyYy9jb3JlL3NjcjFfdGFwYy5zdgogUFAgU1NMIFBhcnNpbmc6IDAuMDAwIHNyYy9jb3JlL3NjcjFfdGFwY19zeW5jaHJvbml6ZXIuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwMiBzcmMvY29yZS9zY3IxX2NvcmVfdG9wLnN2Ci1QUCBTU0wgUGFyc2luZzogMC4wMDggc3JjL2NvcmUvc2NyMV9kbS5zdgorUFAgU1NMIFBhcnNpbmc6IDAuMDA2IHNyYy9jb3JlL3NjcjFfZG0uc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwMCBzcmMvY29yZS9zY3IxX2RtaS5zdgogUFAgU1NMIFBhcnNpbmc6IDAuMDAyIHNyYy9jb3JlL3NjcjFfc2N1LnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDIgc3JjL3RvcC9zY3IxX2RtZW1fcm91dGVyLnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDAgc3JjL3RvcC9zY3IxX2ltZW1fcm91dGVyLnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDAgc3JjL3RvcC9zY3IxX2RwX21lbW9yeS5zdgotUFAgU1NMIFBhcnNpbmc6IDAuMDA0IHNyYy90b3Avc2NyMV90Y20uc3YKK1BQIFNTTCBQYXJzaW5nOiAwLjAwMiBzcmMvdG9wL3NjcjFfdGNtLnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDIgc3JjL3RvcC9zY3IxX3RpbWVyLnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDIgc3JjL3RvcC9zY3IxX21lbV9heGkuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwNCBzcmMvdG9wL3NjcjFfdG9wX2F4aS5zdgotUFAgU1NMIFBhcnNpbmc6IDAuMDA2IHNyYy9waXBlbGluZS9zY3IxX3RyYWNlbG9nLnN2CitQUCBTU0wgUGFyc2luZzogMC4wMDIgc3JjL3BpcGVsaW5lL3NjcjFfdHJhY2Vsb2cuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwMiBzcmMvdGIvc2NyMV9tZW1vcnlfdGJfYXhpLnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDQgc3JjL3RiL3NjcjFfdG9wX3RiX2F4aS5zdgogCi1QYXJzaW5nIHRvb2sgMTYuMzkycwotU1NMIFBhcnNpbmc6IDAuMDM4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay8vaG9tZS9hbGFpbi9TdXJlbG9nL2J1aWxkL2Rpc3QvUmVsZWFzZS8vc3YvYnVpbHRpbi5zdgotU1NMIFBhcnNpbmc6IDMuMjE2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX2hkdS5zdgotU1NMIFBhcnNpbmc6IDAuOTA2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX3RkdS5zdgotTEwgIFBhcnNpbmc6IDEuMDM4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9pcGljLnN2Ci1TU0wgUGFyc2luZzogMC4zMzYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfY3NyLnN2Ci1TU0wgUGFyc2luZzogMC40NjYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfZXh1LnN2Ci1MTCAgUGFyc2luZzogMS4yNzIgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfaWFsdS5zdgotU1NMIFBhcnNpbmc6IDAuNjE4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX2lkdS5zdgotU1NMIFBhcnNpbmc6IDAuMzk4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX2lmdS5zdgotU1NMIFBhcnNpbmc6IDAuMDU4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX2xzdS5zdgotU1NMIFBhcnNpbmc6IDAuMDUwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX21wcmYuc3YKLVNTTCBQYXJzaW5nOiAwLjIyNiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV90b3Auc3YKLVNTTCBQYXJzaW5nOiAwLjAyNCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvcHJpbWl0aXZlcy9zY3IxX3Jlc2V0X2NlbGxzLnN2Ci1TU0wgUGFyc2luZzogMC4wMDAgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3ByaW1pdGl2ZXMvc2NyMV9jZy5zdgotU1NMIFBhcnNpbmc6IDAuMDAwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9zY3IxX2Nsa19jdHJsLnN2Ci1TU0wgUGFyc2luZzogMC4wOTYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfdGFwY19zaGlmdF9yZWcuc3YKLVNTTCBQYXJzaW5nOiAwLjIyNiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvc2NyMV90YXBjLnN2Ci1TU0wgUGFyc2luZzogMC4xNjIgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfdGFwY19zeW5jaHJvbml6ZXIuc3YKLVNTTCBQYXJzaW5nOiAwLjE5MCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvc2NyMV9jb3JlX3RvcC5zdgotU1NMIFBhcnNpbmc6IDAuNjAwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9zY3IxX2RtLnN2Ci1TU0wgUGFyc2luZzogMC4xNTQgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfZG1pLnN2Ci1TU0wgUGFyc2luZzogMC4yNjIgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfc2N1LnN2Ci1TU0wgUGFyc2luZzogMC4wMjYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90b3Avc2NyMV9kbWVtX3JvdXRlci5zdgotU1NMIFBhcnNpbmc6IDAuMDA4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdG9wL3NjcjFfaW1lbV9yb3V0ZXIuc3YKLVNTTCBQYXJzaW5nOiAwLjAzOCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3RvcC9zY3IxX2RwX21lbW9yeS5zdgotU1NMIFBhcnNpbmc6IDAuMDMwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdG9wL3NjcjFfdGNtLnN2Ci1TU0wgUGFyc2luZzogMC4xMTYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90b3Avc2NyMV90aW1lci5zdgotTEwgIFBhcnNpbmc6IDAuOTM4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdG9wL3NjcjFfbWVtX2F4aS5zdgotU1NMIFBhcnNpbmc6IDAuMDc2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdG9wL3NjcjFfdG9wX2F4aS5zdgotU1NMIFBhcnNpbmc6IDAuNDEyIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV90cmFjZWxvZy5zdgotTEwgIFBhcnNpbmc6IDIuNTQ4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdGIvc2NyMV9tZW1vcnlfdGJfYXhpLnN2Ci1TU0wgUGFyc2luZzogMS4xNTYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90Yi9zY3IxX3RvcF90Yl9heGkuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDQwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0NhY2hlIHNhdmluZzogMC4wMDQwMDAKK0NhY2hlIHNhdmluZzogMC4wMDQwMDAKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1BhcnNpbmcgdG9vayAxNy4yMzBzCitTTEwgUGFyc2luZzogMC4wMzIgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrLy9ob21lL2FsYWluL1N1cmVsb2cvYnVpbGQvZGlzdC9SZWxlYXNlLy9zdi9idWlsdGluLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitTTEwgUGFyc2luZzogMy4yMTYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfaGR1LnN2CitDYWNoZSBzYXZpbmc6IDAuMDAyMDAwCitTTEwgUGFyc2luZzogMS4wMDAgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfdGR1LnN2CitDYWNoZSBzYXZpbmc6IDAuMDAyMDAwCitMTCAgUGFyc2luZzogMS4wMjQgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX2lwaWMuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjMyNiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9jc3Iuc3YKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK1NMTCBQYXJzaW5nOiAwLjQ3MCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9leHUuc3YKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0xMICBQYXJzaW5nOiAxLjM3NCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9pYWx1LnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitTTEwgUGFyc2luZzogMC42NjAgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfaWR1LnN2CitDYWNoZSBzYXZpbmc6IDAuMDAyMDAwCitTTEwgUGFyc2luZzogMC40ODYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfaWZ1LnN2CitDYWNoZSBzYXZpbmc6IDAuMDAyMDAwCitTTEwgUGFyc2luZzogMC4wNzQgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfbHN1LnN2CitDYWNoZSBzYXZpbmc6IDAuMDAyMDAwCitTTEwgUGFyc2luZzogMC4wNjAgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfbXByZi5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAorU0xMIFBhcnNpbmc6IDAuMjc4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX3RvcC5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwNDAwMAorU0xMIFBhcnNpbmc6IDAuMDMwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9wcmltaXRpdmVzL3NjcjFfcmVzZXRfY2VsbHMuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjAwMCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvcHJpbWl0aXZlcy9zY3IxX2NnLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitTTEwgUGFyc2luZzogMC4wMDAgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfY2xrX2N0cmwuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjExOCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvc2NyMV90YXBjX3NoaWZ0X3JlZy5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAorU0xMIFBhcnNpbmc6IDAuMjc2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9zY3IxX3RhcGMuc3YKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK1NMTCBQYXJzaW5nOiAwLjIwMiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvc2NyMV90YXBjX3N5bmNocm9uaXplci5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMjAwMAorU0xMIFBhcnNpbmc6IDAuMjQyIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9zY3IxX2NvcmVfdG9wLnN2CitDYWNoZSBzYXZpbmc6IDAuMDA0MDAwCitTTEwgUGFyc2luZzogMC42OTYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfZG0uc3YKK0NhY2hlIHNhdmluZzogMC4wMDQwMDAKK1NMTCBQYXJzaW5nOiAwLjE3MiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvc2NyMV9kbWkuc3YKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK1NMTCBQYXJzaW5nOiAwLjI4NiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvc2NyMV9zY3Uuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjAzMCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3RvcC9zY3IxX2RtZW1fcm91dGVyLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitTTEwgUGFyc2luZzogMC4wMDggLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90b3Avc2NyMV9pbWVtX3JvdXRlci5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAorU0xMIFBhcnNpbmc6IDAuMDQyIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdG9wL3NjcjFfZHBfbWVtb3J5LnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitTTEwgUGFyc2luZzogMC4wMzIgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90b3Avc2NyMV90Y20uc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjEyOCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3RvcC9zY3IxX3RpbWVyLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitMTCAgUGFyc2luZzogMC45NTQgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90b3Avc2NyMV9tZW1fYXhpLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitTTEwgUGFyc2luZzogMC4wNzQgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90b3Avc2NyMV90b3BfYXhpLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitTTEwgUGFyc2luZzogMC4zOTIgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3RyYWNlbG9nLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitMTCAgUGFyc2luZzogMi42MDQgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90Yi9zY3IxX21lbW9yeV90Yl9heGkuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAxLjE3OCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3RiL3NjcjFfdG9wX3RiX2F4aS5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAogCiBbV0FSTkk6UEEwMjA1XSBzcmMvcGlwZWxpbmUvc2NyMV9waXBlX2hkdS5zdjoxMyBObyB0aW1lc2NhbGUgc2V0IGZvciAic2NyMV9waXBlX2hkdSIuCiAKQEAgLTE0OCwxNSArMjEyLDE1IEBACiBQUk9GSUxFCiA9PT09PT09PT09PT09PQogU2NhbiBsaWJyYXJpZXMgdG9vayAwLjAwMHMKLVByZXByb2Nlc3NpbmcgdG9vayAwLjY2MHMKLVBQIFNTTCBQYXJzaW5nOiAwLjAwMiAvaG9tZS9hbGFpbi9TdXJlbG9nL2J1aWxkL2Rpc3QvUmVsZWFzZS8vc3YvYnVpbHRpbi5zdgotUFAgU1NMIFBhcnNpbmc6IDAuMDM4IHNyYy9waXBlbGluZS9zY3IxX3BpcGVfaGR1LnN2CitQcmVwcm9jZXNzaW5nIHRvb2sgMC40MzhzCitQUCBTU0wgUGFyc2luZzogMC4wMDAgL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKK1BQIFNTTCBQYXJzaW5nOiAwLjAwNiBzcmMvcGlwZWxpbmUvc2NyMV9waXBlX2hkdS5zdgogUFAgU1NMIFBhcnNpbmc6IDAuMDAyIHNyYy9waXBlbGluZS9zY3IxX3BpcGVfdGR1LnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDIgc3JjL3BpcGVsaW5lL3NjcjFfaXBpYy5zdgotUFAgU1NMIFBhcnNpbmc6IDAuMDA2IHNyYy9waXBlbGluZS9zY3IxX3BpcGVfY3NyLnN2Ci1QUCBTU0wgUGFyc2luZzogMC4wMTAgc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9leHUuc3YKK1BQIFNTTCBQYXJzaW5nOiAwLjAwNCBzcmMvcGlwZWxpbmUvc2NyMV9waXBlX2Nzci5zdgorUFAgU1NMIFBhcnNpbmc6IDAuMDA0IHNyYy9waXBlbGluZS9zY3IxX3BpcGVfZXh1LnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDQgc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9pYWx1LnN2Ci1QUCBTU0wgUGFyc2luZzogMC4wMDYgc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9pZHUuc3YKK1BQIFNTTCBQYXJzaW5nOiAwLjAwNCBzcmMvcGlwZWxpbmUvc2NyMV9waXBlX2lkdS5zdgogUFAgU1NMIFBhcnNpbmc6IDAuMDA0IHNyYy9waXBlbGluZS9zY3IxX3BpcGVfaWZ1LnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDIgc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9sc3Uuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwMCBzcmMvcGlwZWxpbmUvc2NyMV9waXBlX21wcmYuc3YKQEAgLTE2OCw1MyArMjMyLDg1IEBACiBQUCBTU0wgUGFyc2luZzogMC4wMDIgc3JjL2NvcmUvc2NyMV90YXBjLnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDAgc3JjL2NvcmUvc2NyMV90YXBjX3N5bmNocm9uaXplci5zdgogUFAgU1NMIFBhcnNpbmc6IDAuMDAyIHNyYy9jb3JlL3NjcjFfY29yZV90b3Auc3YKLVBQIFNTTCBQYXJzaW5nOiAwLjAwOCBzcmMvY29yZS9zY3IxX2RtLnN2CitQUCBTU0wgUGFyc2luZzogMC4wMDYgc3JjL2NvcmUvc2NyMV9kbS5zdgogUFAgU1NMIFBhcnNpbmc6IDAuMDAwIHNyYy9jb3JlL3NjcjFfZG1pLnN2CiBQUCBTU0wgUGFyc2luZzogMC4wMDIgc3JjL2NvcmUvc2NyMV9zY3Uuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwMiBzcmMvdG9wL3NjcjFfZG1lbV9yb3V0ZXIuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwMCBzcmMvdG9wL3NjcjFfaW1lbV9yb3V0ZXIuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwMCBzcmMvdG9wL3NjcjFfZHBfbWVtb3J5LnN2Ci1QUCBTU0wgUGFyc2luZzogMC4wMDQgc3JjL3RvcC9zY3IxX3RjbS5zdgorUFAgU1NMIFBhcnNpbmc6IDAuMDAyIHNyYy90b3Avc2NyMV90Y20uc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwMiBzcmMvdG9wL3NjcjFfdGltZXIuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwMiBzcmMvdG9wL3NjcjFfbWVtX2F4aS5zdgogUFAgU1NMIFBhcnNpbmc6IDAuMDA0IHNyYy90b3Avc2NyMV90b3BfYXhpLnN2Ci1QUCBTU0wgUGFyc2luZzogMC4wMDYgc3JjL3BpcGVsaW5lL3NjcjFfdHJhY2Vsb2cuc3YKK1BQIFNTTCBQYXJzaW5nOiAwLjAwMiBzcmMvcGlwZWxpbmUvc2NyMV90cmFjZWxvZy5zdgogUFAgU1NMIFBhcnNpbmc6IDAuMDAyIHNyYy90Yi9zY3IxX21lbW9yeV90Yl9heGkuc3YKIFBQIFNTTCBQYXJzaW5nOiAwLjAwNCBzcmMvdGIvc2NyMV90b3BfdGJfYXhpLnN2Ci1QYXJzaW5nIHRvb2sgMTYuMzkycwotU1NMIFBhcnNpbmc6IDAuMDM4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay8vaG9tZS9hbGFpbi9TdXJlbG9nL2J1aWxkL2Rpc3QvUmVsZWFzZS8vc3YvYnVpbHRpbi5zdgotU1NMIFBhcnNpbmc6IDMuMjE2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX2hkdS5zdgotU1NMIFBhcnNpbmc6IDAuOTA2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX3RkdS5zdgotTEwgIFBhcnNpbmc6IDEuMDM4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9pcGljLnN2Ci1TU0wgUGFyc2luZzogMC4zMzYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfY3NyLnN2Ci1TU0wgUGFyc2luZzogMC40NjYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfZXh1LnN2Ci1MTCAgUGFyc2luZzogMS4yNzIgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfaWFsdS5zdgotU1NMIFBhcnNpbmc6IDAuNjE4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX2lkdS5zdgotU1NMIFBhcnNpbmc6IDAuMzk4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX2lmdS5zdgotU1NMIFBhcnNpbmc6IDAuMDU4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX2xzdS5zdgotU1NMIFBhcnNpbmc6IDAuMDUwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX21wcmYuc3YKLVNTTCBQYXJzaW5nOiAwLjIyNiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV90b3Auc3YKLVNTTCBQYXJzaW5nOiAwLjAyNCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvcHJpbWl0aXZlcy9zY3IxX3Jlc2V0X2NlbGxzLnN2Ci1TU0wgUGFyc2luZzogMC4wMDAgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3ByaW1pdGl2ZXMvc2NyMV9jZy5zdgotU1NMIFBhcnNpbmc6IDAuMDAwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9zY3IxX2Nsa19jdHJsLnN2Ci1TU0wgUGFyc2luZzogMC4wOTYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfdGFwY19zaGlmdF9yZWcuc3YKLVNTTCBQYXJzaW5nOiAwLjIyNiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvc2NyMV90YXBjLnN2Ci1TU0wgUGFyc2luZzogMC4xNjIgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfdGFwY19zeW5jaHJvbml6ZXIuc3YKLVNTTCBQYXJzaW5nOiAwLjE5MCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvc2NyMV9jb3JlX3RvcC5zdgotU1NMIFBhcnNpbmc6IDAuNjAwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9zY3IxX2RtLnN2Ci1TU0wgUGFyc2luZzogMC4xNTQgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfZG1pLnN2Ci1TU0wgUGFyc2luZzogMC4yNjIgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfc2N1LnN2Ci1TU0wgUGFyc2luZzogMC4wMjYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90b3Avc2NyMV9kbWVtX3JvdXRlci5zdgotU1NMIFBhcnNpbmc6IDAuMDA4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdG9wL3NjcjFfaW1lbV9yb3V0ZXIuc3YKLVNTTCBQYXJzaW5nOiAwLjAzOCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3RvcC9zY3IxX2RwX21lbW9yeS5zdgotU1NMIFBhcnNpbmc6IDAuMDMwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdG9wL3NjcjFfdGNtLnN2Ci1TU0wgUGFyc2luZzogMC4xMTYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90b3Avc2NyMV90aW1lci5zdgotTEwgIFBhcnNpbmc6IDAuOTM4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdG9wL3NjcjFfbWVtX2F4aS5zdgotU1NMIFBhcnNpbmc6IDAuMDc2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdG9wL3NjcjFfdG9wX2F4aS5zdgotU1NMIFBhcnNpbmc6IDAuNDEyIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV90cmFjZWxvZy5zdgotTEwgIFBhcnNpbmc6IDIuNTQ4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdGIvc2NyMV9tZW1vcnlfdGJfYXhpLnN2Ci1TU0wgUGFyc2luZzogMS4xNTYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90Yi9zY3IxX3RvcF90Yl9heGkuc3YKLVRvdGFsIHRpbWUgMTcuMDUycworUGFyc2luZyB0b29rIDE3LjIzMHMKK1NMTCBQYXJzaW5nOiAwLjAzMiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvL2hvbWUvYWxhaW4vU3VyZWxvZy9idWlsZC9kaXN0L1JlbGVhc2UvL3N2L2J1aWx0aW4uc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAzLjIxNiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9oZHUuc3YKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK1NMTCBQYXJzaW5nOiAxLjAwMCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV90ZHUuc3YKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK0xMICBQYXJzaW5nOiAxLjAyNCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfaXBpYy5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAorU0xMIFBhcnNpbmc6IDAuMzI2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX2Nzci5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMjAwMAorU0xMIFBhcnNpbmc6IDAuNDcwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX2V4dS5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMjAwMAorTEwgIFBhcnNpbmc6IDEuMzc0IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvcGlwZWxpbmUvc2NyMV9waXBlX2lhbHUuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjY2MCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9pZHUuc3YKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK1NMTCBQYXJzaW5nOiAwLjQ4NiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9pZnUuc3YKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK1NMTCBQYXJzaW5nOiAwLjA3NCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9sc3Uuc3YKK0NhY2hlIHNhdmluZzogMC4wMDIwMDAKK1NMTCBQYXJzaW5nOiAwLjA2MCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfcGlwZV9tcHJmLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitTTEwgUGFyc2luZzogMC4yNzggLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9waXBlbGluZS9zY3IxX3BpcGVfdG9wLnN2CitDYWNoZSBzYXZpbmc6IDAuMDA0MDAwCitTTEwgUGFyc2luZzogMC4wMzAgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3ByaW1pdGl2ZXMvc2NyMV9yZXNldF9jZWxscy5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAorU0xMIFBhcnNpbmc6IDAuMDAwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9wcmltaXRpdmVzL3NjcjFfY2cuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjAwMCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvc2NyMV9jbGtfY3RybC5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAorU0xMIFBhcnNpbmc6IDAuMTE4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9zY3IxX3RhcGNfc2hpZnRfcmVnLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitTTEwgUGFyc2luZzogMC4yNzYgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfdGFwYy5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMjAwMAorU0xMIFBhcnNpbmc6IDAuMjAyIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9zY3IxX3RhcGNfc3luY2hyb25pemVyLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAyMDAwCitTTEwgUGFyc2luZzogMC4yNDIgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy9jb3JlL3NjcjFfY29yZV90b3Auc3YKK0NhY2hlIHNhdmluZzogMC4wMDQwMDAKK1NMTCBQYXJzaW5nOiAwLjY5NiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL2NvcmUvc2NyMV9kbS5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwNDAwMAorU0xMIFBhcnNpbmc6IDAuMTcyIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9zY3IxX2RtaS5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMjAwMAorU0xMIFBhcnNpbmc6IDAuMjg2IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvY29yZS9zY3IxX3NjdS5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAorU0xMIFBhcnNpbmc6IDAuMDMwIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdG9wL3NjcjFfZG1lbV9yb3V0ZXIuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjAwOCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3RvcC9zY3IxX2ltZW1fcm91dGVyLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitTTEwgUGFyc2luZzogMC4wNDIgLi4vLi4vLi4vYnVpbGQvdGVzdHMvU2NyMS9zbHBwX2FsbC93b3JrL3NyYy90b3Avc2NyMV9kcF9tZW1vcnkuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjAzMiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3RvcC9zY3IxX3RjbS5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAorU0xMIFBhcnNpbmc6IDAuMTI4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdG9wL3NjcjFfdGltZXIuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0xMICBQYXJzaW5nOiAwLjk1NCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3RvcC9zY3IxX21lbV9heGkuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjA3NCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3RvcC9zY3IxX3RvcF9heGkuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK1NMTCBQYXJzaW5nOiAwLjM5MiAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3BpcGVsaW5lL3NjcjFfdHJhY2Vsb2cuc3YKK0NhY2hlIHNhdmluZzogMC4wMDAwMDAKK0xMICBQYXJzaW5nOiAyLjYwNCAuLi8uLi8uLi9idWlsZC90ZXN0cy9TY3IxL3NscHBfYWxsL3dvcmsvc3JjL3RiL3NjcjFfbWVtb3J5X3RiX2F4aS5zdgorQ2FjaGUgc2F2aW5nOiAwLjAwMDAwMAorU0xMIFBhcnNpbmc6IDEuMTc4IC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1NjcjEvc2xwcF9hbGwvd29yay9zcmMvdGIvc2NyMV90b3BfdGJfYXhpLnN2CitDYWNoZSBzYXZpbmc6IDAuMDAwMDAwCitUb3RhbCB0aW1lIDE3LjY2OHMKID09PT09PT09PT09PT09CiAKIFsgIEZBVEFMXSA6IDAKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1NlcURyaXZlci9TZXFEcml2ZXIubG9nIGIvdGhpcmRfcGFydHkvdGVzdHMvU2VxRHJpdmVyL1NlcURyaXZlci5sb2cKaW5kZXggNjgzYTk1Yy4uODllY2Y0OCAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvU2VxRHJpdmVyL1NlcURyaXZlci5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvU2VxRHJpdmVyL1NlcURyaXZlci5sb2cKQEAgLTk4LDcgKzk4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjptX3V2bV93YWl0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2FnZW50Ii4KIApAQCAtMTgwLDcgKzE4MCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDoyMjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhdXNlX2VmZmVjdF9saW5rIi4KIApAQCAtMTk0LDkgKzE5NCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9wYWlyLnN2aDozNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2xhc3NfcGFpciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wYXJlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBhcmVyIi4KIApAQCAtMjA2LDEzICsyMDYsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDoyMTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9wcm94eSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo1MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozNjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYl9vcHRpb25zIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWd1cmVfcGhhc2UiLgogCkBAIC0yMjQsNyArMjI0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZmFjdG9yeS5zdmg6MzMwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X2ZhY3RvcnkiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo5NjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2Rlcml2ZWRfY2FsbGJhY2tzIi4KIApAQCAtMjM0LDcgKzIzNCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjE1MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW5kX29mX2VsYWJvcmF0aW9uX3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NDk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NTAxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fZW52LnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW52Ii4KIApAQCAtMjcyLDkgKzI3Miw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fcmVnX21vZGVsLnN2aDozNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hkbF9wYXRoX2NvbmNhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6MjEyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9pbl9vcmRlcl9idWlsdF9pbl9jb21wYXJhdG9yIi4KIApAQCAtMzAwLDEzICszMDAsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fbWVtX2FjY2Vzc19zZXEuc3ZoOjE5NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX2FjY2Vzc19zZXEiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjY0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1NjMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fY2ZnIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX3BvbGljeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fcmVnX21lbV9zaGFyZWRfYWNjZXNzX3NlcS5zdmg6MjA1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fc2hhcmVkX2FjY2Vzc19zZXEiLgogCkBAIC0zNjQsNyArMzY0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0LnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Bvb2wuc3ZoOjI0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3N0cmluZ19wb29sIi4KIApAQCAtMzcyLDExICszNzIsMTEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvbWFjcm9zL3V2bV9jYWxsYmFja19kZWZpbmVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3BhY2tlci5zdmg6NDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3BhY2tlciIuCiAKQEAgLTQzNCw5ICs0MzQsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9wb3J0cy5zdmg6OTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3B1dF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcXVldWUuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9xdWV1ZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KIAotW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KK1tJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zZXF1ZW5jZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9yYW5kb21fc3RpbXVsdXMuc3ZoOjQ1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc3RpbXVsdXMiLgogCkBAIC01MDQsMzEgKzUwNCwzMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9saW5rcy5zdmg6MzAwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZWxhdGVkX2xpbmsiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2hhbmRsZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDo0NzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjc5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjgwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tbW9uX3BoYXNlcy5zdmg6MzkwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3J1bnRpbWVfcGhhc2VzLnN2aDoxMjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc2V0X3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxMzcwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxOTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlX2Jhc2UiLgogCkBAIC01NTAsNyArNTUwLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3Njb3JlYm9hcmQuc3ZoOjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zY29yZWJvYXJkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvdGxtMS91dm1fc3FyX2Nvbm5lY3Rpb25zLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VxX2l0ZW1fcHVsbF9leHBvcnQiLgogCkBAIC03MTYsMTMgKzcxNiwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wcmludGVyLnN2aDozNTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3RyZWVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6MTc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlZF9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjYzNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdXRpbHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3RyYXZlcnNhbC5zdmg6MzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Zpc2l0b3IiLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9TaW1wbGVPVk0vU2ltcGxlT1ZNLmxvZyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1NpbXBsZU9WTS9TaW1wbGVPVk0ubG9nCmluZGV4IGZlZTA3ODkuLjlmOTMxMmQgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL1NpbXBsZU9WTS9TaW1wbGVPVk0ubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1NpbXBsZU9WTS9TaW1wbGVPVk0ubG9nCkBAIC03MCwxMSArNzAsMTEgQEAKIAogW0lORk8gOlBBMDIwMV0gUGFyc2luZyBzb3VyY2UgZmlsZSAidG9wLnYiLgogCi1bV0FSTkk6UEEwMjA1XSBvdm0tMi4xLjIvc3JjL292bV9wa2cuc3Y6MjIgTm8gdGltZXNjYWxlIHNldCBmb3IgIm92bV9wa2ciLgorW1dBUk5JOlBBMDIwNV0gb3ZtLTIuMS4yL3NyYy9vdm1fcGtnLnN2OjIzIE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvdm1fcGtnIi4KIAogW0lORk8gOkNQMDMwMF0gQ29tcGlsYXRpb24uLi4KIAotW0lORk8gOkNQMDMwMV0gb3ZtLTIuMS4yL3NyYy9vdm1fcGtnLnN2OjIyIENvbXBpbGUgcGFja2FnZSAib3ZtX3BrZyIuCitbSU5GTyA6Q1AwMzAxXSBvdm0tMi4xLjIvc3JjL292bV9wa2cuc3Y6MjMgQ29tcGlsZSBwYWNrYWdlICJvdm1fcGtnIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9jb21wYXRpYmlsaXR5L2F2bV9jb21wYXRpYmlsaXR5LnN2aDoyODcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6YW5hbHlzaXNfZmlmbyIuCiAKQEAgLTIyOCw3ICsyMjgsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2NvbXBhdGliaWxpdHkvYXZtX2NvbXBhdGliaWxpdHkuc3ZoOjEzMiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjphdm1fdHJhbnNwb3J0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX21pc2Muc3ZoOjI0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OmF2bV92aXJ0dWFsX2NsYXNzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fbWlzYy5zdmg6MjUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6YXZtX3ZpcnR1YWxfY2xhc3MiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21hY3Jvcy9vdm1fcGhhc2VfZGVmaW5lcy5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6YnVpbGRfcGhhc2UiLgogCkBAIC0yMzgsNyArMjM4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tYWNyb3Mvb3ZtX3BoYXNlX2RlZmluZXMuc3ZoOjM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OmNvbm5lY3RfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1MDcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6ZGVmYXVsdF9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUyNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpkZWZhdWx0X3JlcG9ydF9zZXJ2ZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21hY3Jvcy9vdm1fcGhhc2VfZGVmaW5lcy5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6ZW5kX29mX2VsYWJvcmF0aW9uX3BoYXNlIi4KIApAQCAtMjQ4LDcgKzI0OCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWFjcm9zL292bV9waGFzZV9kZWZpbmVzLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjppbXBvcnRfY29ubmVjdGlvbnNfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2FnZW50Ii4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX2FnZW50LnN2aDo0MCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYWdlbnQiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9hbGdvcml0aG1pY19jb21wYXJhdG9yLnN2aDo2NSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYWxnb3JpdGhtaWNfY29tcGFyYXRvciIuCiAKQEAgLTMwMiwzNSArMzAyLDM1IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6MjY3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9ibG9ja2luZ190cmFuc3BvcnRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo3OCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fY2xvbmUiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjgxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9idWlsdF9pbl9jbG9uZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo0MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fY29tcCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6NDIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2J1aWx0X2luX2NvbXAiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6NTkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2J1aWx0X2luX2NvbnZlcnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6NjAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2J1aWx0X2luX2NvbnZlcnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BhaXIuc3ZoOjEwMyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fcGFpciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wYWlyLnN2aDoxMDQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2J1aWx0X2luX3BhaXIiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NhbGxiYWNrLnN2aDoyNjEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NhbGxiYWNrIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jYWxsYmFjay5zdmg6NTggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NhbGxiYWNrcyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NhbGxiYWNrLnN2aDo1OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2FsbGJhY2tzIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjEzNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfY2xvbmUiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjEzOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfY2xvbmUiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6OTcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NsYXNzX2NvbXAiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjEwMCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfY29tcCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDoxMTYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NsYXNzX2NvbnZlcnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6MTE5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19jb252ZXJ0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wYWlyLnN2aDozMCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfcGFpciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wYWlyLnN2aDozMSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfcGFpciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29tcGFyZXIuc3ZoOjM0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb21wYXJlciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29tcG9uZW50LnN2aDo2NSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29tcG9uZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZWdpc3RyeS5zdmg6MzYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NvbXBvbmVudF9yZWdpc3RyeSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlZ2lzdHJ5LnN2aDozNyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb25maWcuc3ZoOjI1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb25maWdfc2V0dGluZyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NvbmZpZy5zdmg6MjYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NvbmZpZ19zZXR0aW5nIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Quc3ZoOjg4MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29weV9tYXAiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Quc3ZoOjg4MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29weV9tYXAiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9kcml2ZXIuc3ZoOjQxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9kcml2ZXIiLgogCkBAIC0zNDIsMTEgKzM0MiwxMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSBidWlsdGluLnN2OjE1NiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZXhoYXVzdGl2ZV9zZXF1ZW5jZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fZmFjdG9yeS5zdmg6NzMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2ZhY3RvcnkiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9mYWN0b3J5LnN2aDo3NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZmFjdG9yeSIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fZmFjdG9yeS5zdmg6NzI3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9mYWN0b3J5X292ZXJyaWRlIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9mYWN0b3J5LnN2aDoyOSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZmFjdG9yeV9xdWV1ZV9jbGFzcyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2ZhY3Rvcnkuc3ZoOjMwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9mYWN0b3J5X3F1ZXVlX2NsYXNzIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX2V4cG9ydHMuc3ZoOjEwNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZ2V0X2V4cG9ydCIuCiAKQEAgLTM2MCw3ICszNjAsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fcG9ydHMuc3ZoOjEwNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZ2V0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjY5OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1faGllcl9wcmludGVyX2tub2JzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NzAwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9oaWVyX3ByaW50ZXJfa25vYnMiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9pbl9vcmRlcl9jb21wYXJhdG9yLnN2aDoyMDUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2luX29yZGVyX2J1aWx0X2luX2NvbXBhcmF0b3IiLgogCkBAIC0zNjgsOSArMzY4LDkgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6NjcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2luX29yZGVyX2NvbXBhcmF0b3IiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NvbmZpZy5zdmg6NjggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2ludF9jb25maWdfc2V0dGluZyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NvbmZpZy5zdmg6NjkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2ludF9jb25maWdfc2V0dGluZyIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NDYyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9saW5lX3ByaW50ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo0NjMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2xpbmVfcHJpbnRlciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9leHBvcnRzLnN2aDoyMzcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX21hc3Rlcl9leHBvcnQiLgogCkBAIC0zNzgsNyArMzc4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX3BvcnRzLnN2aDoyMzkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX21hc3Rlcl9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fbW9uaXRvci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX21vbml0b3IiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fbW9uaXRvci5zdmg6MzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX21vbml0b3IiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fZXhwb3J0cy5zdmg6OTkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX25vbmJsb2NraW5nX2dldF9leHBvcnQiLgogCkBAIC00MjIsMTkgKzQyMiwxOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fcG9ydHMuc3ZoOjI3MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbm9uYmxvY2tpbmdfdHJhbnNwb3J0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6NTQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo5OCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0X2NvbmZpZ19zZXR0aW5nIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo5OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0X2NvbmZpZ19zZXR0aW5nIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZWdpc3RyeS5zdmg6MTY3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3RfcmVnaXN0cnkiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZWdpc3RyeS5zdmg6MTY4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3RfcmVnaXN0cnkiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3Bvb2wuc3ZoOjI0MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0X3N0cmluZ19wb29sIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9mYWN0b3J5LnN2aDo2ODQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdF93cmFwcGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Rpb24uc3ZoOjQyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3Rpb24iLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Rpb24uc3ZoOjQzIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3Rpb24iLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6OTA4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vcHRpb25zX2NvbnRhaW5lciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6OTA5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vcHRpb25zX2NvbnRhaW5lciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcGFja2VyLnN2aDo0NSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcGFja2VyIi4KIApAQCAtNDQ0LDcgKzQ0NCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6MTI0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wZWVrX3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3BoYXNlcy5zdjozNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcGhhc2UiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9waGFzZXMuc3Y6MzYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3BoYXNlIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wb29sLnN2aDozMSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcG9vbCIuCiAKQEAgLTQ1NCw5ICs0NTQsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3BvcnRfYmFzZS5zdmg6NDQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3BvcnRfY29tcG9uZW50X2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjgwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wcmludGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6ODEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3ByaW50ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjQ5MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcHJpbnRlcl9rbm9icyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjQ5NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcHJpbnRlcl9rbm9icyIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3B1c2hfZHJpdmVyLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcHVzaF9kcml2ZXIiLgogCkBAIC00NjgsNyArNDY4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX3BvcnRzLnN2aDo4OCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcHV0X3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3F1ZXVlLnN2aDozMiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcXVldWUiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9xdWV1ZS5zdmg6MzMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3F1ZXVlIi4KIAogW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmFuZG9tX3NlcXVlbmNlIi4KIApAQCAtNDc2LDI3ICs0NzYsMjcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZWNvcmRlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlY29yZGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfc2VydmVyLnN2aDozNzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9nbG9iYWxfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X3NlcnZlci5zdmg6Mzc1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRfZ2xvYmFsX3NlcnZlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRfaGFuZGxlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0X2hhbmRsZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9vYmplY3Quc3ZoOjc4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X29iamVjdC5zdmg6NzkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9vYmplY3QiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjM3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X3NlcnZlci5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9zZXJ2ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9vYmplY3Quc3ZoOjU1MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfb2JqZWN0LnN2aDo1NTMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yb290LnN2aDo2NSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcm9vdCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3Jvb3Quc3ZoOjY2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yb290Ii4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yb290LnN2aDoyNDcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Jvb3RfcmVwb3J0X2hhbmRsZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L2xheWVyZWRfc3RpbXVsdXMvb3ZtX3NjZW5hcmlvLnN2aDoyMSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NlbmFyaW8iLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L2xheWVyZWRfc3RpbXVsdXMvb3ZtX3NjZW5hcmlvX2NvbnRyb2xsZXIuc3ZoOjI3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zY2VuYXJpb19jb250cm9sbGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvbGF5ZXJlZF9zdGltdWx1cy9vdm1fc2NlbmFyaW9fY29udHJvbGxlci5zdmg6MjkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NjZW5hcmlvX2NvbnRyb2xsZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L2xheWVyZWRfc3RpbXVsdXMvb3ZtX3NjZW5hcmlvX2RyaXZlci5zdmg6MjYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NjZW5hcmlvX2RyaXZlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fbWlzYy5zdmg6NTEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Njb3BlX3N0YWNrIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fbWlzYy5zdmg6NTIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Njb3BlX3N0YWNrIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fc2NvcmVib2FyZC5zdmg6MzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Njb3JlYm9hcmQiLgogCkBAIC01MTYsNyArNTE2LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9zZXF1ZW5jZXMvb3ZtX3NlcXVlbmNlX2Jhc2Uuc3ZoOjMxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zZXF1ZW5jZV9iYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9zZXF1ZW5jZXMvb3ZtX3NlcXVlbmNlX2l0ZW0uc3ZoOjM3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zZXF1ZW5jZV9pdGVtIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvc2VxdWVuY2VzL292bV9zZXF1ZW5jZV9pdGVtLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2VxdWVuY2VfaXRlbSIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvc2VxdWVuY2VzL292bV9zZXF1ZW5jZXIuc3ZoOjM2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zZXF1ZW5jZXIiLgogCkBAIC01MzIsMjEgKzUzMiwyMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fcG9ydHMuc3ZoOjI2MCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2xhdmVfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0LnN2aDo4NTEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3N0YXR1c19jb250YWluZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Quc3ZoOjg1MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc3RhdHVzX2NvbnRhaW5lciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo4MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc3RyaW5nX2NvbmZpZ19zZXR0aW5nIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo4NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc3RyaW5nX2NvbmZpZ19zZXR0aW5nIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fc3Vic2NyaWJlci5zdmg6MzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3N1YnNjcmliZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjM1NiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdGFibGVfcHJpbnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjM1NyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdGFibGVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NzMxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90YWJsZV9wcmludGVyX2tub2JzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NzMyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90YWJsZV9wcmludGVyX2tub2JzIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fdGVzdC5zdmg6NjEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Rlc3QiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdGlvbi5zdmg6NjM0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90ZXN0X2RvbmVfb2JqZWN0aW9uIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0aW9uLnN2aDo2MzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Rlc3RfZG9uZV9vYmplY3Rpb24iLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3RyYW5zYWN0aW9uLnN2aDozNyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdHJhbnNhY3Rpb24iLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV90cmFuc2FjdGlvbi5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyYW5zYWN0aW9uIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX2V4cG9ydHMuc3ZoOjI3NyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdHJhbnNwb3J0X2V4cG9ydCIuCiAKQEAgLTU1NCwxMyArNTU0LDEzIEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6Mjc5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90cmFuc3BvcnRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NDEwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90cmVlX3ByaW50ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo0MTEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyZWVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NzcyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90cmVlX3ByaW50ZXJfa25vYnMiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo3NzMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyZWVfcHJpbnRlcl9rbm9icyIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvY29tcGF0aWJpbGl0eS91cm1fbWVzc2FnZS5zdmg6MTg2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV91cm1fbWVzc2FnZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvY29tcGF0aWJpbGl0eS91cm1fbWVzc2FnZS5zdmg6MTM0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV91cm1fbWVzc2FnZV9mb3JtYXQiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9jb21wYXRpYmlsaXR5L3VybV9tZXNzYWdlLnN2aDoxMzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3VybV9tZXNzYWdlX2Zvcm1hdCIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvY29tcGF0aWJpbGl0eS91cm1fbWVzc2FnZS5zdmg6MzA5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV91cm1fb3ZlcnJpZGVfb3BlcmF0b3IiLgogCkBAIC01NjgsNyArNTY4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9jb21wYXRpYmlsaXR5L3VybV9tZXNzYWdlLnN2aDo0NTQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3VybV9yZXBvcnRfc2VydmVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9taXNjLnN2aDozOSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdm9pZCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX21pc2Muc3ZoOjQwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV92b2lkIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tYWNyb3Mvb3ZtX3BoYXNlX2RlZmluZXMuc3ZoOjM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OnBvc3RfbmV3X3BoYXNlIi4KIApkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvdGVzdHMvU2ltcGxlUGFyc2VyVGVzdC9TaW1wbGVQYXJzZXJUZXN0LnNsIGIvdGhpcmRfcGFydHkvdGVzdHMvU2ltcGxlUGFyc2VyVGVzdC9TaW1wbGVQYXJzZXJUZXN0LnNsCmluZGV4IDFiNDlmZmEuLjkyYzFjNDEgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL1NpbXBsZVBhcnNlclRlc3QvU2ltcGxlUGFyc2VyVGVzdC5zbAorKysgYi90aGlyZF9wYXJ0eS90ZXN0cy9TaW1wbGVQYXJzZXJUZXN0L1NpbXBsZVBhcnNlclRlc3Quc2wKQEAgLTEgKzEgQEAKLSAgKi52ICAtZCAwICtpbmNkaXIrLisuLiAgK2xpYmV4dCsudiAtd3JpdGVwcCAgIC12ZXJib3NlIC12IGprZmZfdWRwLnYgLXYgbGlibW9kdWxlLnN2IC1tdCBtYXggLXBhcnNlIC1maWxldW5pdCAgLXB5dGhvbmxpc3RlbmVyIC1ub2NhY2hlIC10aW1lc2NhbGU9MXBzLzFwcworICAqLnYgIC1kIDAgK2luY2RpcisuKy4uICArbGliZXh0Ky52IC13cml0ZXBwIC12ZXJib3NlIC12IGprZmZfdWRwLnYgLXYgbGlibW9kdWxlLnN2IC1wYXJzZSAtZmlsZXVuaXQgIC1weXRob25saXN0ZW5lciAtbm9jYWNoZSAtdGltZXNjYWxlPTFwcy8xcHMKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1NpbXBsZVVWTS9TaW1wbGVVVk0ubG9nIGIvdGhpcmRfcGFydHkvdGVzdHMvU2ltcGxlVVZNL1NpbXBsZVVWTS5sb2cKaW5kZXggMTEyMWNkYS4uYWExNWIxZCAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvU2ltcGxlVVZNL1NpbXBsZVVWTS5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvU2ltcGxlVVZNL1NpbXBsZVVWTS5sb2cKQEAgLTg4LDcgKzg4LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjptX3V2bV93YWl0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2FnZW50Ii4KIApAQCAtMTcwLDcgKzE3MCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDoyMjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhdXNlX2VmZmVjdF9saW5rIi4KIApAQCAtMTg0LDkgKzE4NCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9wYWlyLnN2aDozNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2xhc3NfcGFpciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wYXJlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBhcmVyIi4KIApAQCAtMTk2LDEzICsxOTYsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDoyMTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9wcm94eSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo1MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozNjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYl9vcHRpb25zIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWd1cmVfcGhhc2UiLgogCkBAIC0yMTQsNyArMjE0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZmFjdG9yeS5zdmg6MzMwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X2ZhY3RvcnkiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo5NjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2Rlcml2ZWRfY2FsbGJhY2tzIi4KIApAQCAtMjI0LDcgKzIyNCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjE1MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW5kX29mX2VsYWJvcmF0aW9uX3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NDk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NTAxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fZW52LnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW52Ii4KIApAQCAtMjYyLDkgKzI2Miw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fcmVnX21vZGVsLnN2aDozNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hkbF9wYXRoX2NvbmNhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6MjEyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9pbl9vcmRlcl9idWlsdF9pbl9jb21wYXJhdG9yIi4KIApAQCAtMjkwLDEzICsyOTAsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fbWVtX2FjY2Vzc19zZXEuc3ZoOjE5NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX2FjY2Vzc19zZXEiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjY0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1NjMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fY2ZnIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX3BvbGljeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fcmVnX21lbV9zaGFyZWRfYWNjZXNzX3NlcS5zdmg6MjA1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fc2hhcmVkX2FjY2Vzc19zZXEiLgogCkBAIC0zNTQsNyArMzU0LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0LnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Bvb2wuc3ZoOjI0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3N0cmluZ19wb29sIi4KIApAQCAtMzYyLDExICszNjIsMTEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvbWFjcm9zL3V2bV9jYWxsYmFja19kZWZpbmVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3BhY2tlci5zdmg6NDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3BhY2tlciIuCiAKQEAgLTQyNCw5ICs0MjQsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9wb3J0cy5zdmg6OTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3B1dF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcXVldWUuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9xdWV1ZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KIAotW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KK1tJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zZXF1ZW5jZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9yYW5kb21fc3RpbXVsdXMuc3ZoOjQ1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc3RpbXVsdXMiLgogCkBAIC00OTQsMzEgKzQ5NCwzMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9saW5rcy5zdmg6MzAwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZWxhdGVkX2xpbmsiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2hhbmRsZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDo0NzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjc5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjgwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tbW9uX3BoYXNlcy5zdmg6MzkwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3J1bnRpbWVfcGhhc2VzLnN2aDoxMjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc2V0X3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxMzcwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxOTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlX2Jhc2UiLgogCkBAIC01NDAsNyArNTQwLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3Njb3JlYm9hcmQuc3ZoOjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zY29yZWJvYXJkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvdGxtMS91dm1fc3FyX2Nvbm5lY3Rpb25zLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VxX2l0ZW1fcHVsbF9leHBvcnQiLgogCkBAIC03MDYsMTMgKzcwNiwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wcmludGVyLnN2aDozNTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3RyZWVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6MTc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlZF9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjYzNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdXRpbHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3RyYXZlcnNhbC5zdmg6MzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Zpc2l0b3IiLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9VVk1OZXN0ZWRTZXEvVVZNTmVzdGVkU2VxLmxvZyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1VWTU5lc3RlZFNlcS9VVk1OZXN0ZWRTZXEubG9nCmluZGV4IGJmZTZlOTEuLmM3NmQyODMgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL1VWTU5lc3RlZFNlcS9VVk1OZXN0ZWRTZXEubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1VWTU5lc3RlZFNlcS9VVk1OZXN0ZWRTZXEubG9nCkBAIC0xODAsNyArMTgwLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjptX3V2bV93YWl0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2FnZW50Ii4KIApAQCAtMjYyLDcgKzI2Miw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDoyMjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhdXNlX2VmZmVjdF9saW5rIi4KIApAQCAtMjc2LDkgKzI3Niw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9wYWlyLnN2aDozNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2xhc3NfcGFpciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wYXJlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBhcmVyIi4KIApAQCAtMjg4LDEzICsyODgsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDoyMTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9wcm94eSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo1MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozNjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYl9vcHRpb25zIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWd1cmVfcGhhc2UiLgogCkBAIC0zMDYsNyArMzA2LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZmFjdG9yeS5zdmg6MzMwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X2ZhY3RvcnkiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo5NjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2Rlcml2ZWRfY2FsbGJhY2tzIi4KIApAQCAtMzE2LDcgKzMxNiw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjE1MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW5kX29mX2VsYWJvcmF0aW9uX3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NDk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NTAxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fZW52LnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW52Ii4KIApAQCAtMzU0LDkgKzM1NCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fcmVnX21vZGVsLnN2aDozNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hkbF9wYXRoX2NvbmNhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6MjEyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9pbl9vcmRlcl9idWlsdF9pbl9jb21wYXJhdG9yIi4KIApAQCAtMzgyLDEzICszODIsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fbWVtX2FjY2Vzc19zZXEuc3ZoOjE5NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX2FjY2Vzc19zZXEiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjY0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1NjMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fY2ZnIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX3BvbGljeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fcmVnX21lbV9zaGFyZWRfYWNjZXNzX3NlcS5zdmg6MjA1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fc2hhcmVkX2FjY2Vzc19zZXEiLgogCkBAIC00NDYsNyArNDQ2LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0LnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Bvb2wuc3ZoOjI0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3N0cmluZ19wb29sIi4KIApAQCAtNDU0LDExICs0NTQsMTEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvbWFjcm9zL3V2bV9jYWxsYmFja19kZWZpbmVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3BhY2tlci5zdmg6NDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3BhY2tlciIuCiAKQEAgLTUxNiw5ICs1MTYsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9wb3J0cy5zdmg6OTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3B1dF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcXVldWUuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9xdWV1ZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KIAotW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KK1tJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zZXF1ZW5jZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9yYW5kb21fc3RpbXVsdXMuc3ZoOjQ1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc3RpbXVsdXMiLgogCkBAIC01ODYsMzEgKzU4NiwzMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9saW5rcy5zdmg6MzAwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZWxhdGVkX2xpbmsiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2hhbmRsZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDo0NzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjc5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjgwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tbW9uX3BoYXNlcy5zdmg6MzkwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3J1bnRpbWVfcGhhc2VzLnN2aDoxMjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc2V0X3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxMzcwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxOTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlX2Jhc2UiLgogCkBAIC02MzIsNyArNjMyLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3Njb3JlYm9hcmQuc3ZoOjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zY29yZWJvYXJkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvdGxtMS91dm1fc3FyX2Nvbm5lY3Rpb25zLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VxX2l0ZW1fcHVsbF9leHBvcnQiLgogCkBAIC03OTgsMTMgKzc5OCwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wcmludGVyLnN2aDozNTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3RyZWVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6MTc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlZF9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjYzNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdXRpbHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3RyYXZlcnNhbC5zdmg6MzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Zpc2l0b3IiLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9VVk1Td2l0Y2gvVVZNU3dpdGNoLmxvZyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1VWTVN3aXRjaC9VVk1Td2l0Y2gubG9nCmluZGV4IDE0YjYyYzYuLmI4Y2UwMTkgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL1VWTVN3aXRjaC9VVk1Td2l0Y2gubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1VWTVN3aXRjaC9VVk1Td2l0Y2gubG9nCkBAIC0zNzcsNyArMzc3LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjptX3V2bV93YWl0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2FnZW50Ii4KIApAQCAtNDU5LDcgKzQ1OSw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDoyMjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhdXNlX2VmZmVjdF9saW5rIi4KIApAQCAtNDczLDkgKzQ3Myw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9wYWlyLnN2aDozNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2xhc3NfcGFpciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wYXJlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBhcmVyIi4KIApAQCAtNDg1LDEzICs0ODUsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDoyMTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9wcm94eSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo1MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozNjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYl9vcHRpb25zIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWd1cmVfcGhhc2UiLgogCkBAIC01MDMsNyArNTAzLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZmFjdG9yeS5zdmg6MzMwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X2ZhY3RvcnkiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo5NjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2Rlcml2ZWRfY2FsbGJhY2tzIi4KIApAQCAtNTEzLDcgKzUxMyw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjE1MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW5kX29mX2VsYWJvcmF0aW9uX3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NDk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NTAxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fZW52LnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW52Ii4KIApAQCAtNTUxLDkgKzU1MSw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fcmVnX21vZGVsLnN2aDozNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hkbF9wYXRoX2NvbmNhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6MjEyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9pbl9vcmRlcl9idWlsdF9pbl9jb21wYXJhdG9yIi4KIApAQCAtNTc5LDEzICs1NzksMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fbWVtX2FjY2Vzc19zZXEuc3ZoOjE5NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX2FjY2Vzc19zZXEiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjY0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1NjMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fY2ZnIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX3BvbGljeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fcmVnX21lbV9zaGFyZWRfYWNjZXNzX3NlcS5zdmg6MjA1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fc2hhcmVkX2FjY2Vzc19zZXEiLgogCkBAIC02NDMsNyArNjQzLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0LnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Bvb2wuc3ZoOjI0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3N0cmluZ19wb29sIi4KIApAQCAtNjUxLDExICs2NTEsMTEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvbWFjcm9zL3V2bV9jYWxsYmFja19kZWZpbmVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3BhY2tlci5zdmg6NDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3BhY2tlciIuCiAKQEAgLTcxMyw5ICs3MTMsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9wb3J0cy5zdmg6OTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3B1dF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcXVldWUuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9xdWV1ZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KIAotW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KK1tJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zZXF1ZW5jZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9yYW5kb21fc3RpbXVsdXMuc3ZoOjQ1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc3RpbXVsdXMiLgogCkBAIC03ODMsMzEgKzc4MywzMSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9saW5rcy5zdmg6MzAwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZWxhdGVkX2xpbmsiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MTA4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfY2F0Y2hlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9oYW5kbGVyLnN2aDo1MyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X2hhbmRsZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDo0NzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjM5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6Mjg1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9lbGVtZW50X2NvbnRhaW5lciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxMDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2ludF9lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjIyOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2Vfb2JqZWN0X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9zdHJpbmdfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjc5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9vYmplY3Quc3ZoOjgwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfb2JqZWN0Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tbW9uX3BoYXNlcy5zdmg6MzkwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3J1bnRpbWVfcGhhc2VzLnN2aDoxMjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc2V0X3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxMzcwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXNvdXJjZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Jlc291cmNlLnN2aDoxOTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlX2Jhc2UiLgogCkBAIC04MjksNyArODI5LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvY29tcHMvdXZtX3Njb3JlYm9hcmQuc3ZoOjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zY29yZWJvYXJkIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9taXNjLnN2aDozMTkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlZWRfbWFwIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvdGxtMS91dm1fc3FyX2Nvbm5lY3Rpb25zLnN2aDo2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VxX2l0ZW1fcHVsbF9leHBvcnQiLgogCkBAIC05OTUsMTMgKzk5NSwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wcmludGVyLnN2aDozNTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3RyZWVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6MTc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlZF9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjYzNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdXRpbHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3RyYXZlcnNhbC5zdmg6MzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Zpc2l0b3IiLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9Vbml0QW1pcUV0aC9Vbml0QW1pcUV0aC5sb2cgYi90aGlyZF9wYXJ0eS90ZXN0cy9Vbml0QW1pcUV0aC9Vbml0QW1pcUV0aC5sb2cKaW5kZXggMjcwMzZjYi4uZmVmNWVmNyAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvVW5pdEFtaXFFdGgvVW5pdEFtaXFFdGgubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1VuaXRBbWlxRXRoL1VuaXRBbWlxRXRoLmxvZwpAQCAtMjYsNyArMjYsNyBAQAogCiBbV0FSTkk6UEEwMjA1XSB1dm0tMS4yL3NyYy91dm1fcGtnLnN2OjI3IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJ1dm1fcGtnIi4KIAotW1dBUk5JOlBBMDIwNV0gb3ZtLTIuMS4yL3NyYy9vdm1fcGtnLnN2OjIyIE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvdm1fcGtnIi4KK1tXQVJOSTpQQTAyMDVdIG92bS0yLjEuMi9zcmMvb3ZtX3BrZy5zdjoyMyBObyB0aW1lc2NhbGUgc2V0IGZvciAib3ZtX3BrZyIuCiAKIFtXQVJOSTpQQTAyMDVdIGFtaXFfZXRoX3BrZy5zdi5jazA6MjQgTm8gdGltZXNjYWxlIHNldCBmb3IgImFtaXFfZXRoX3BrZyIuCiAKQEAgLTM0LDcgKzM0LDcgQEAKIAogW0lORk8gOkNQMDMwMV0gdXZtLTEuMi9zcmMvdXZtX3BrZy5zdjoyNyBDb21waWxlIHBhY2thZ2UgInV2bV9wa2ciLgogCi1bSU5GTyA6Q1AwMzAxXSBvdm0tMi4xLjIvc3JjL292bV9wa2cuc3Y6MjIgQ29tcGlsZSBwYWNrYWdlICJvdm1fcGtnIi4KK1tJTkZPIDpDUDAzMDFdIG92bS0yLjEuMi9zcmMvb3ZtX3BrZy5zdjoyMyBDb21waWxlIHBhY2thZ2UgIm92bV9wa2ciLgogCiBbSU5GTyA6Q1AwMzAxXSBhbWlxX2V0aF9wa2cuc3YuY2swOjI0IENvbXBpbGUgcGFja2FnZSAiYW1pcV9ldGhfcGtnIi4KIApAQCAtMjEwLDcgKzIxMCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvY29tcGF0aWJpbGl0eS9hdm1fY29tcGF0aWJpbGl0eS5zdmg6MTMyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OmF2bV90cmFuc3BvcnRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fbWlzYy5zdmg6MjQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6YXZtX3ZpcnR1YWxfY2xhc3MiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9taXNjLnN2aDoyNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjphdm1fdmlydHVhbF9jbGFzcyIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWFjcm9zL292bV9waGFzZV9kZWZpbmVzLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpidWlsZF9waGFzZSIuCiAKQEAgLTIyMCw3ICsyMjAsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21hY3Jvcy9vdm1fcGhhc2VfZGVmaW5lcy5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6Y29ubmVjdF9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUwNyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpkZWZhdWx0X3JlcG9ydF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfaGFuZGxlci5zdmg6NTI2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OmRlZmF1bHRfcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWFjcm9zL292bV9waGFzZV9kZWZpbmVzLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjplbmRfb2ZfZWxhYm9yYXRpb25fcGhhc2UiLgogCkBAIC0yMzAsNyArMjMwLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tYWNyb3Mvb3ZtX3BoYXNlX2RlZmluZXMuc3ZoOjM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6OmltcG9ydF9jb25uZWN0aW9uc19waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX2FnZW50LnN2aDozOSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYWdlbnQiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fYWdlbnQuc3ZoOjQwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9hZ2VudCIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX2FsZ29yaXRobWljX2NvbXBhcmF0b3Iuc3ZoOjY1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9hbGdvcml0aG1pY19jb21wYXJhdG9yIi4KIApAQCAtMjg0LDM1ICsyODQsMzUgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX3BvcnRzLnN2aDoyNjcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2Jsb2NraW5nX3RyYW5zcG9ydF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjc4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9idWlsdF9pbl9jbG9uZSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6ODEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2J1aWx0X2luX2Nsb25lIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjQxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9idWlsdF9pbl9jb21wIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo0MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fY29tcCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fY29udmVydGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo2MCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fY29udmVydGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcGFpci5zdmg6MTAzIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9idWlsdF9pbl9wYWlyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BhaXIuc3ZoOjEwNCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fYnVpbHRfaW5fcGFpciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY2FsbGJhY2suc3ZoOjI2MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NhbGxiYWNrLnN2aDo1OCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2FsbGJhY2tzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY2FsbGJhY2suc3ZoOjU5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6MTM1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19jbG9uZSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6MTM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19jbG9uZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDo5NyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfY29tcCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9wb2xpY2llcy5zdmg6MTAwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19jb21wIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcG9saWNpZXMuc3ZoOjExNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY2xhc3NfY29udmVydGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BvbGljaWVzLnN2aDoxMTkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NsYXNzX2NvbnZlcnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BhaXIuc3ZoOjMwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19wYWlyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX3BhaXIuc3ZoOjMxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jbGFzc19wYWlyIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb21wYXJlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NvbXBhcmVyIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb21wb25lbnQuc3ZoOjY1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb21wb25lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlZ2lzdHJ5LnN2aDozNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVnaXN0cnkuc3ZoOjM3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb21wb25lbnRfcmVnaXN0cnkiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2NvbmZpZy5zdmg6MjUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2NvbmZpZ19zZXR0aW5nIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDoyNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fY29uZmlnX3NldHRpbmciLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6ODgyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb3B5X21hcCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6ODgzIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9jb3B5X21hcCIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX2RyaXZlci5zdmg6NDEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2RyaXZlciIuCiAKQEAgLTMyNCwxMSArMzI0LDExIEBACiAKIFtJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6MTU2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9leGhhdXN0aXZlX3NlcXVlbmNlIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9mYWN0b3J5LnN2aDo3MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fZmFjdG9yeSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2ZhY3Rvcnkuc3ZoOjc0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9mYWN0b3J5Ii4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9mYWN0b3J5LnN2aDo3MjcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2ZhY3Rvcnlfb3ZlcnJpZGUiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2ZhY3Rvcnkuc3ZoOjI5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9mYWN0b3J5X3F1ZXVlX2NsYXNzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fZmFjdG9yeS5zdmg6MzAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2ZhY3RvcnlfcXVldWVfY2xhc3MiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fZXhwb3J0cy5zdmg6MTA1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9nZXRfZXhwb3J0Ii4KIApAQCAtMzQyLDcgKzM0Miw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6MTA2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9nZXRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6Njk5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9oaWVyX3ByaW50ZXJfa25vYnMiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo3MDAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2hpZXJfcHJpbnRlcl9rbm9icyIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvb3ZtX2luX29yZGVyX2NvbXBhcmF0b3Iuc3ZoOjIwNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1faW5fb3JkZXJfYnVpbHRfaW5fY29tcGFyYXRvciIuCiAKQEAgLTM1MCw5ICszNTAsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9pbl9vcmRlcl9jb21wYXJhdG9yLnN2aDo2NyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1faW5fb3JkZXJfY29tcGFyYXRvciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo2OCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1faW50X2NvbmZpZ19zZXR0aW5nIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fY29uZmlnLnN2aDo2OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1faW50X2NvbmZpZ19zZXR0aW5nIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo0NjIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX2xpbmVfcHJpbnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjQ2MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbGluZV9wcmludGVyIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX2V4cG9ydHMuc3ZoOjIzNyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbWFzdGVyX2V4cG9ydCIuCiAKQEAgLTM2MCw3ICszNjAsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fcG9ydHMuc3ZoOjIzOSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbWFzdGVyX3BvcnQiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9tb25pdG9yLnN2aDozNCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbW9uaXRvciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9tb25pdG9yLnN2aDozNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbW9uaXRvciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9leHBvcnRzLnN2aDo5OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fbm9uYmxvY2tpbmdfZ2V0X2V4cG9ydCIuCiAKQEAgLTQwNCwxOSArNDA0LDE5IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6MjczIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9ub25ibG9ja2luZ190cmFuc3BvcnRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0LnN2aDo1MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0Ii4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0LnN2aDo1NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb25maWcuc3ZoOjk4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3RfY29uZmlnX3NldHRpbmciLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb25maWcuc3ZoOjk5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3RfY29uZmlnX3NldHRpbmciLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlZ2lzdHJ5LnN2aDoxNjcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdF9yZWdpc3RyeSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlZ2lzdHJ5LnN2aDoxNjggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcG9vbC5zdmg6MjQxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9vYmplY3Rfc3RyaW5nX3Bvb2wiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX2ZhY3Rvcnkuc3ZoOjY4NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fb2JqZWN0X3dyYXBwZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdGlvbi5zdmg6NDIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdGlvbiIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdGlvbi5zdmg6NDMgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29iamVjdGlvbiIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0LnN2aDo5MDggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29wdGlvbnNfY29udGFpbmVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0LnN2aDo5MDkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX29wdGlvbnNfY29udGFpbmVyIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wYWNrZXIuc3ZoOjQ1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wYWNrZXIiLgogCkBAIC00MjYsNyArNDI2LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX3BvcnRzLnN2aDoxMjQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3BlZWtfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcGhhc2VzLnN2OjM1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9waGFzZSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3BoYXNlcy5zdjozNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcGhhc2UiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3Bvb2wuc3ZoOjMxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wb29sIi4KIApAQCAtNDM2LDkgKzQzNiw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcG9ydF9iYXNlLnN2aDo0NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcG9ydF9jb21wb25lbnRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6ODAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3ByaW50ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo4MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NDkzIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wcmludGVyX2tub2JzIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6NDk0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wcmludGVyX2tub2JzIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9vdm1fcHVzaF9kcml2ZXIuc3ZoOjM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wdXNoX2RyaXZlciIuCiAKQEAgLTQ1MCw3ICs0NTAsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fcG9ydHMuc3ZoOjg4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9wdXRfcG9ydCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcXVldWUuc3ZoOjMyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9xdWV1ZSIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3F1ZXVlLnN2aDozMyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcXVldWUiLgogCiBbSU5GTyA6Q1AwMzAyXSBidWlsdGluLnN2OjQ0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yYW5kb21fc2VxdWVuY2UiLgogCkBAIC00NTgsMjcgKzQ1OCwyNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlY29yZGVyLnN2aDozNCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVjb3JkZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjM3NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0X2dsb2JhbF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfc2VydmVyLnN2aDozNzUgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9nbG9iYWxfc2VydmVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfaGFuZGxlci5zdmg6NTAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9oYW5kbGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRfaGFuZGxlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X29iamVjdC5zdmg6NzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9vYmplY3QiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfb2JqZWN0LnN2aDo3OSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X3NlcnZlci5zdmg6MzcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3JlcG9ydF9zZXJ2ZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9yZXBvcnRfc2VydmVyLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0X3NlcnZlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcmVwb3J0X29iamVjdC5zdmg6NTUyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yZXBvcnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3JlcG9ydF9vYmplY3Quc3ZoOjU1MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcmVwb3J0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3Jvb3Quc3ZoOjY1IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9yb290Ii4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcm9vdC5zdmg6NjYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Jvb3QiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3Jvb3Quc3ZoOjI0NyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fcm9vdF9yZXBvcnRfaGFuZGxlciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvbGF5ZXJlZF9zdGltdWx1cy9vdm1fc2NlbmFyaW8uc3ZoOjIxIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zY2VuYXJpbyIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvbGF5ZXJlZF9zdGltdWx1cy9vdm1fc2NlbmFyaW9fY29udHJvbGxlci5zdmg6MjcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NjZW5hcmlvX2NvbnRyb2xsZXIiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9sYXllcmVkX3N0aW11bHVzL292bV9zY2VuYXJpb19jb250cm9sbGVyLnN2aDoyOSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NlbmFyaW9fY29udHJvbGxlciIuCiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvbWV0aG9kb2xvZ3kvbGF5ZXJlZF9zdGltdWx1cy9vdm1fc2NlbmFyaW9fZHJpdmVyLnN2aDoyNiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NlbmFyaW9fZHJpdmVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9taXNjLnN2aDo1MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NvcGVfc3RhY2siLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9taXNjLnN2aDo1MiBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NvcGVfc3RhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9zY29yZWJvYXJkLnN2aDozNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc2NvcmVib2FyZCIuCiAKQEAgLTQ5OCw3ICs0OTgsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L3NlcXVlbmNlcy9vdm1fc2VxdWVuY2VfYmFzZS5zdmg6MzEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NlcXVlbmNlX2Jhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L3NlcXVlbmNlcy9vdm1fc2VxdWVuY2VfaXRlbS5zdmg6MzcgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NlcXVlbmNlX2l0ZW0iLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9zZXF1ZW5jZXMvb3ZtX3NlcXVlbmNlX2l0ZW0uc3ZoOjM4IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zZXF1ZW5jZV9pdGVtIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9tZXRob2RvbG9neS9zZXF1ZW5jZXMvb3ZtX3NlcXVlbmNlci5zdmg6MzYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3NlcXVlbmNlciIuCiAKQEAgLTUxNCwyMSArNTE0LDIxIEBACiAKIFtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvdGxtL292bV9wb3J0cy5zdmg6MjYwIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zbGF2ZV9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Quc3ZoOjg1MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc3RhdHVzX2NvbnRhaW5lciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX29iamVjdC5zdmg6ODUyIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zdGF0dXNfY29udGFpbmVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb25maWcuc3ZoOjgzIENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zdHJpbmdfY29uZmlnX3NldHRpbmciLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9jb25maWcuc3ZoOjg0IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV9zdHJpbmdfY29uZmlnX3NldHRpbmciLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV9zdWJzY3JpYmVyLnN2aDozNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fc3Vic2NyaWJlciIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6MzU2IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90YWJsZV9wcmludGVyIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fcHJpbnRlci5zdmg6MzU3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90YWJsZV9wcmludGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo3MzEgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RhYmxlX3ByaW50ZXJfa25vYnMiLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo3MzIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RhYmxlX3ByaW50ZXJfa25vYnMiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21ldGhvZG9sb2d5L292bV90ZXN0LnN2aDo2MSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdGVzdCIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fb2JqZWN0aW9uLnN2aDo2MzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3Rlc3RfZG9uZV9vYmplY3Rpb24iLgorW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9vYmplY3Rpb24uc3ZoOjYzNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdGVzdF9kb25lX29iamVjdGlvbiIuCiAKLVtJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fdHJhbnNhY3Rpb24uc3ZoOjM3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90cmFuc2FjdGlvbiIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3RyYW5zYWN0aW9uLnN2aDozOCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdHJhbnNhY3Rpb24iLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL3RsbS9vdm1fZXhwb3J0cy5zdmg6Mjc3IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV90cmFuc3BvcnRfZXhwb3J0Ii4KIApAQCAtNTM2LDEzICs1MzYsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy90bG0vb3ZtX3BvcnRzLnN2aDoyNzkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyYW5zcG9ydF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo0MTAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyZWVfcHJpbnRlciIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjQxMSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdHJlZV9wcmludGVyIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9iYXNlL292bV9wcmludGVyLnN2aDo3NzIgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3RyZWVfcHJpbnRlcl9rbm9icyIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX3ByaW50ZXIuc3ZoOjc3MyBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdHJlZV9wcmludGVyX2tub2JzIi4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9jb21wYXRpYmlsaXR5L3VybV9tZXNzYWdlLnN2aDoxODYgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3VybV9tZXNzYWdlIi4KIAotW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9jb21wYXRpYmlsaXR5L3VybV9tZXNzYWdlLnN2aDoxMzQgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3VybV9tZXNzYWdlX2Zvcm1hdCIuCitbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2NvbXBhdGliaWxpdHkvdXJtX21lc3NhZ2Uuc3ZoOjEzNSBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdXJtX21lc3NhZ2VfZm9ybWF0Ii4KIAogW0lORk8gOkNQMDMwMl0gb3ZtLTIuMS4yL3NyYy9jb21wYXRpYmlsaXR5L3VybV9tZXNzYWdlLnN2aDozMDkgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3VybV9vdmVycmlkZV9vcGVyYXRvciIuCiAKQEAgLTU1MCw3ICs1NTAsNyBAQAogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2NvbXBhdGliaWxpdHkvdXJtX21lc3NhZ2Uuc3ZoOjQ1NCBDb21waWxlIGNsYXNzICJvdm1fcGtnOjpvdm1fdXJtX3JlcG9ydF9zZXJ2ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL2Jhc2Uvb3ZtX21pc2Muc3ZoOjM5IENvbXBpbGUgY2xhc3MgIm92bV9wa2c6Om92bV92b2lkIi4KK1tJTkZPIDpDUDAzMDJdIG92bS0yLjEuMi9zcmMvYmFzZS9vdm1fbWlzYy5zdmg6NDAgQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6b3ZtX3ZvaWQiLgogCiBbSU5GTyA6Q1AwMzAyXSBvdm0tMi4xLjIvc3JjL21hY3Jvcy9vdm1fcGhhc2VfZGVmaW5lcy5zdmg6MzggQ29tcGlsZSBjbGFzcyAib3ZtX3BrZzo6cG9zdF9uZXdfcGhhc2UiLgogCkBAIC02MTYsNyArNjE2LDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjptX3V2bV93YWl0ZXIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfY2F0Y2hlci5zdmg6MzMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6c2V2X2lkX3N0cnVjdCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9hZ2VudC5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2FnZW50Ii4KIApAQCAtNjk4LDcgKzY5OCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhbGxiYWNrcyIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2FsbGJhY2tzX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjg4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jYWxsYmFja3NfYmFzZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDoyMjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NhdXNlX2VmZmVjdF9saW5rIi4KIApAQCAtNzEyLDkgKzcxMiw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9wYWlyLnN2aDozNyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY2xhc3NfcGFpciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDoyNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kX2xpbmVfdmVyYiIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6MjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZF9saW5lX3ZlcmIiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jbWRsaW5lX3Byb2Nlc3Nvci5zdmg6NDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NtZGxpbmVfcHJvY2Vzc29yIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NtZGxpbmVfcHJvY2Vzc29yLnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY21kbGluZV9wcm9jZXNzb3IiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21wYXJlci5zdmg6MzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBhcmVyIi4KIApAQCAtNzI0LDEzICs3MjQsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fdHJhdmVyc2FsLnN2aDoyMTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbXBvbmVudF9wcm94eSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo0OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDo1MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29tcG9uZW50X3JlZ2lzdHJ5Ii4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDo2NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fY29uZmlnX2RiIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29uZmlnX2RiLnN2aDozNjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2NvbmZpZ19kYl9vcHRpb25zIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY29tcG9uZW50LnN2aDoyOTc4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWdfb2JqZWN0X3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9ydW50aW1lX3BoYXNlcy5zdmg6MjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9jb25maWd1cmVfcGhhc2UiLgogCkBAIC03NDIsNyArNzQyLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZmFjdG9yeS5zdmg6MzMwIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9kZWZhdWx0X2ZhY3RvcnkiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfc2VydmVyLnN2aDoyNDYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2RlZmF1bHRfcmVwb3J0X3NlcnZlciIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo5NjYgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2Rlcml2ZWRfY2FsbGJhY2tzIi4KIApAQCAtNzUyLDcgKzc1Miw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NvbW1vbl9waGFzZXMuc3ZoOjE1MSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW5kX29mX2VsYWJvcmF0aW9uX3BoYXNlIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NDk5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fZ2xvYmFscy5zdmg6NTAxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9lbnVtX3dyYXBwZXIiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1fZW52LnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fZW52Ii4KIApAQCAtNzkwLDkgKzc5MCw5IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fcmVnX21vZGVsLnN2aDozNDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hkbF9wYXRoX2NvbmNhdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6NTMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX2hlYXJ0YmVhdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjU0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9oZWFydGJlYXQuc3ZoOjI5MCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1faGVhcnRiZWF0X2NhbGxiYWNrIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2hlYXJ0YmVhdC5zdmg6MjkxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9oZWFydGJlYXRfY2FsbGJhY2siLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9jb21wcy91dm1faW5fb3JkZXJfY29tcGFyYXRvci5zdmg6MjEyIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9pbl9vcmRlcl9idWlsdF9pbl9jb21wYXJhdG9yIi4KIApAQCAtODE4LDEzICs4MTgsMTMgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fbWVtX2FjY2Vzc19zZXEuc3ZoOjE5NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX2FjY2Vzc19zZXEiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjY0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NjUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW0iLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9yZWcvdXZtX21lbV9tYW0uc3ZoOjU2MiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fbWVtX21hbV9jZmciLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1NjMgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fY2ZnIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3V2bV9tZW1fbWFtLnN2aDo1MjAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX21lbV9tYW1fcG9saWN5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6NTIxIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fbWFtX3BvbGljeSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3JlZy91dm1fbWVtX21hbS5zdmg6Mjc3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fcmVnaW9uIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvcmVnL3NlcXVlbmNlcy91dm1fcmVnX21lbV9zaGFyZWRfYWNjZXNzX3NlcS5zdmg6MjA1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9tZW1fc2hhcmVkX2FjY2Vzc19zZXEiLgogCkBAIC04ODIsNyArODgyLDcgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0LnN2aDo0NiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVnaXN0cnkuc3ZoOjE4NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3JlZ2lzdHJ5Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlZ2lzdHJ5LnN2aDoxODggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdF9yZWdpc3RyeSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3Bvb2wuc3ZoOjI0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0X3N0cmluZ19wb29sIi4KIApAQCAtODkwLDExICs4OTAsMTEgQEAKIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvbWFjcm9zL3V2bV9jYWxsYmFja19kZWZpbmVzLnN2aDo1OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDoxNDE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9vYmplY3Rpb25fY2FsbGJhY2siLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9vYmplY3Rpb24uc3ZoOjEzNjkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9jb250ZXh0X29iamVjdCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX29iamVjdGlvbi5zdmg6MzIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX29iamVjdGlvbl9ldmVudHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fb2JqZWN0aW9uLnN2aDozMyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fb2JqZWN0aW9uX2V2ZW50cyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3BhY2tlci5zdmg6NDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3BhY2tlciIuCiAKQEAgLTk1Miw5ICs5NTIsOSBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy90bG0xL3V2bV9wb3J0cy5zdmg6OTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3B1dF9wb3J0Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcXVldWUuc3ZoOjM0IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9xdWV1ZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9xdWV1ZS5zdmg6MzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3F1ZXVlIi4KIAotW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0OCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmFuZG9tX3NlcXVlbmNlIi4KK1tJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NDkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JhbmRvbV9zZXF1ZW5jZSIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9yYW5kb21fc3RpbXVsdXMuc3ZoOjQ1IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yYW5kb21fc3RpbXVsdXMiLgogCkBAIC0xMDIyLDMxICsxMDIyLDMxIEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2xpbmtzLnN2aDozMDAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlbGF0ZWRfbGluayIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDoxMDcgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9jYXRjaGVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9jYXRjaGVyLnN2aDoxMDggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9jYXRjaGVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X2hhbmRsZXIuc3ZoOjUzIENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfaGFuZGxlciIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfaGFuZGxlci5zdmg6NTQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9oYW5kbGVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjQ3NSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MzggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfYmFzZSIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyODQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfY29udGFpbmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoyODUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX2VsZW1lbnRfY29udGFpbmVyIi4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjEwOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfaW50X2VsZW1lbnQiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X21lc3NhZ2Uuc3ZoOjEwOSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVwb3J0X21lc3NhZ2VfaW50X2VsZW1lbnQiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MjI4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9vYmplY3RfZWxlbWVudCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXBvcnRfbWVzc2FnZS5zdmg6MjI5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfbWVzc2FnZV9vYmplY3RfZWxlbWVudCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxNzQgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX3N0cmluZ19lbGVtZW50Ii4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9tZXNzYWdlLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9tZXNzYWdlX3N0cmluZ19lbGVtZW50Ii4KIAotW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X29iamVjdC5zdmg6NzkgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9vYmplY3QiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVwb3J0X29iamVjdC5zdmg6ODAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9vYmplY3QiLgogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jb21tb25fcGhhc2VzLnN2aDozOTAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3JlcG9ydF9waGFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjQ2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfc2VydmVyIi4KK1tJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3JlcG9ydF9zZXJ2ZXIuc3ZoOjQ3IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9yZXBvcnRfc2VydmVyIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcnVudGltZV9waGFzZXMuc3ZoOjEyMiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzZXRfcGhhc2UiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9yZXNvdXJjZS5zdmg6MTM2OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjEzNzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Jlc291cmNlIi4KIAogW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fcmVzb3VyY2Uuc3ZoOjE5OSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fcmVzb3VyY2VfYmFzZSIuCiAKQEAgLTEwNjgsNyArMTA2OCw3IEBACiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2NvbXBzL3V2bV9zY29yZWJvYXJkLnN2aDozNiBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2NvcmVib2FyZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjMxOCBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fc2VlZF9tYXAiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6MzE5IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV9zZWVkX21hcCIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL3RsbTEvdXZtX3Nxcl9jb25uZWN0aW9ucy5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3NlcV9pdGVtX3B1bGxfZXhwb3J0Ii4KIApAQCAtMTIzNCwxMyArMTIzNCwxMyBAQAogCiBbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9wcmludGVyLnN2aDozNTggQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3RyZWVfcHJpbnRlciIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDoxNzUgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVkX2NhbGxiYWNrcyIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6MTc2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlZF9jYWxsYmFja3MiLgogCi1bSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjEgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCitbSU5GTyA6Q1AwMzAyXSB1dm0tMS4yL3NyYy9iYXNlL3V2bV9jYWxsYmFjay5zdmg6NjIgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3R5cGVpZCIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX2NhbGxiYWNrLnN2aDo0NyBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdHlwZWlkX2Jhc2UiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fY2FsbGJhY2suc3ZoOjQ4IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV90eXBlaWRfYmFzZSIuCiAKLVtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX21pc2Muc3ZoOjYzNSBDb21waWxlIGNsYXNzICJ1dm1fcGtnOjp1dm1fdXRpbHMiLgorW0lORk8gOkNQMDMwMl0gdXZtLTEuMi9zcmMvYmFzZS91dm1fbWlzYy5zdmg6NjM2IENvbXBpbGUgY2xhc3MgInV2bV9wa2c6OnV2bV91dGlscyIuCiAKIFtJTkZPIDpDUDAzMDJdIHV2bS0xLjIvc3JjL2Jhc2UvdXZtX3RyYXZlcnNhbC5zdmg6MzAgQ29tcGlsZSBjbGFzcyAidXZtX3BrZzo6dXZtX3Zpc2l0b3IiLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9VdGRTVi9VdGRTVi5zbCBiL3RoaXJkX3BhcnR5L3Rlc3RzL1V0ZFNWL1V0ZFNWLnNsCmluZGV4IGQyYTU5NTguLjNiNjA1ODYgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL1V0ZFNWL1V0ZFNWLnNsCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1V0ZFNWL1V0ZFNWLnNsCkBAIC0xICsxIEBACi0gK2luY2RpcisuKy4uLy4uLy4uL1VWTS91dm0tMS4yL3NyYy8gICAgIC1maWxldW5pdCAgICAtd3JpdGVwcCAtcGFyc2UgICAtbXQgbWF4ICAgLW5vY2FjaGUgKi52CisgK2luY2RpcisuKy4uLy4uLy4uL1VWTS91dm0tMS4yL3NyYy8gLWZpbGV1bml0IC13cml0ZXBwIC1wYXJzZSAtbm9jYWNoZSAqLnYKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1ZlcmlsYXRvci9WZXJpbGF0b3Iuc2wgYi90aGlyZF9wYXJ0eS90ZXN0cy9WZXJpbGF0b3IvVmVyaWxhdG9yLnNsCmluZGV4IDRmZDI2NmUuLjIxZmZjZGMgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL1ZlcmlsYXRvci9WZXJpbGF0b3Iuc2wKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvVmVyaWxhdG9yL1ZlcmlsYXRvci5zbApAQCAtMSArMSBAQAotICtpbmNkaXIrLisuLi8uLi8uLi9VVk0vdXZtLTEuMi9zcmMvICAgICAtd3JpdGVwcCAtcGFyc2UgICAgLW10IG1heCAtbm9weXRob24gLWZpbGV1bml0ICAgKi8qLnN2ICovKi52ICoudiAtbm9jb21wIC1ub2VsYWIgIC1ub2NhY2hlIC12ZXJib3NlCisgK2luY2RpcisuKy4uLy4uLy4uL1VWTS91dm0tMS4yL3NyYy8gLXdyaXRlcHAgLXBhcnNlIC1ub3B5dGhvbiAtZmlsZXVuaXQgICovKi5zdiAqLyoudiAqLnYgLW5vY29tcCAtbm9lbGFiIC1ub2NhY2hlIC12ZXJib3NlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9hZXNfNWN5Y2xlXzJzdGFnZS9Zb3N5c0JpZ1NpbUFlcy5sb2cgYi90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9hZXNfNWN5Y2xlXzJzdGFnZS9Zb3N5c0JpZ1NpbUFlcy5sb2cKaW5kZXggMzJhYjM2Ni4uM2Y3NGRkNSAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNCaWdTaW0vYWVzXzVjeWNsZV8yc3RhZ2UvWW9zeXNCaWdTaW1BZXMubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzQmlnU2ltL2Flc181Y3ljbGVfMnN0YWdlL1lvc3lzQmlnU2ltQWVzLmxvZwpAQCAtMSw0ICsxLDQgQEAKLVtJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzQmlnU2ltQWVzL3NscHBfdW5pdC9zdXJlbG9nLmxvZy4KK1tJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzQmlnU2ltQWVzL3NscHBfdW5pdC9zdXJlbG9nLmxvZy4KIAogW0lORk8gOkNNMDAyMF0gU2VwYXJhdGUgY29tcGlsYXRpb24tdW5pdCBtb2RlIGlzIG9uLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9hbWJlcjIzL1lvc3lzQmlnU2ltQW1iZXIyMy5sb2cgYi90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9hbWJlcjIzL1lvc3lzQmlnU2ltQW1iZXIyMy5sb2cKaW5kZXggZWNlNGQ4OS4uNjAzOTdkMSAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNCaWdTaW0vYW1iZXIyMy9Zb3N5c0JpZ1NpbUFtYmVyMjMubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzQmlnU2ltL2FtYmVyMjMvWW9zeXNCaWdTaW1BbWJlcjIzLmxvZwpAQCAtMSwxMCArMSwxMCBAQAotW0lORk8gOkNNMDAyM10gQ3JlYXRpbmcgbG9nIGZpbGUgLi4vLi4vLi4vYnVpbGQvdGVzdHMvWW9zeXNCaWdTaW1BbWJlcjIzL3NscHBfdW5pdC9zdXJlbG9nLmxvZy4KK1tJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzQmlnU2ltQW1iZXIyMy9zbHBwX3VuaXQvc3VyZWxvZy5sb2cuCiAKIFtJTkZPIDpDTTAwMjBdIFNlcGFyYXRlIGNvbXBpbGF0aW9uLXVuaXQgbW9kZSBpcyBvbi4KIAogW1NZTlRYOlBBMDIwN10gcnRsL2EyM19kZWNvZGUudjoxNzQgU3ludGF4IGVycm9yOiBtaXNtYXRjaGVkIGlucHV0ICd0eXBlJyBleHBlY3RpbmcgeyduZXcnLCAnYnl0ZScsICdiaXQnLCAnbG9naWMnLCAnc2lnbmVkJywgJ3Vuc2lnbmVkJywgJ3ZhcicsICdjb250ZXh0JywgJ2V4cGVjdCcsICdzb2Z0JywgJ2dsb2JhbCcsICdkbycsICd0aGlzJywgJ3JhbmRvbWl6ZScsICdmaW5hbCcsICdzYW1wbGUnLCBFc2NhcGVkX2lkZW50aWZpZXIsIFNpbXBsZV9pZGVudGlmaWVyfSwKIHJlZyAgICAgWzM6MF0gICAgICAgICAgdHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgXi0tIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzQmlnU2ltQW1iZXIyMy9zbHBwX3VuaXQvd29yay9ydGwvYTIzX2RlY29kZS52OjUyNiBjb2w6MjMuCisgICAgICAgICAgICAgICAgICAgICAgIF4tLSAuLi8uLi8uLi8uLi9idWlsZC90ZXN0cy9Zb3N5c0JpZ1NpbUFtYmVyMjMvc2xwcF91bml0L3dvcmsvcnRsL2EyM19kZWNvZGUudjo1MjYgY29sOjIzLgogCiBbV0FSTkk6UEEwMjA1XSBzaW0vYmVuY2gudjoyIE5vIHRpbWVzY2FsZSBzZXQgZm9yICJ0ZXN0YmVuY2giLgogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9sbTMyL1lvc3lzQmlnU2ltTG0zMi5sb2cgYi90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9sbTMyL1lvc3lzQmlnU2ltTG0zMi5sb2cKaW5kZXggYWM1NWRhNi4uYTQ1NjBkZCAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNCaWdTaW0vbG0zMi9Zb3N5c0JpZ1NpbUxtMzIubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzQmlnU2ltL2xtMzIvWW9zeXNCaWdTaW1MbTMyLmxvZwpAQCAtMSw0ICsxLDQgQEAKLVtJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzQmlnU2ltTG0zMi9zbHBwX3VuaXQvc3VyZWxvZy5sb2cuCitbSU5GTyA6Q00wMDIzXSBDcmVhdGluZyBsb2cgZmlsZSAuLi8uLi8uLi8uLi9idWlsZC90ZXN0cy9Zb3N5c0JpZ1NpbUxtMzIvc2xwcF91bml0L3N1cmVsb2cubG9nLgogCiBbSU5GTyA6Q00wMDIwXSBTZXBhcmF0ZSBjb21waWxhdGlvbi11bml0IG1vZGUgaXMgb24uCiAKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzQmlnU2ltL29wZW5tc3A0MzAvWW9zeXNCaWdTaW1PcGVuTXNwLmxvZyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzQmlnU2ltL29wZW5tc3A0MzAvWW9zeXNCaWdTaW1PcGVuTXNwLmxvZwppbmRleCBkMWZmYjJkLi4xMzcyOTRkIDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9vcGVubXNwNDMwL1lvc3lzQmlnU2ltT3Blbk1zcC5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNCaWdTaW0vb3Blbm1zcDQzMC9Zb3N5c0JpZ1NpbU9wZW5Nc3AubG9nCkBAIC0xLDMxICsxLDcgQEAKLVtJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzQmlnU2ltT3Blbk1zcC9zbHBwX3VuaXQvc3VyZWxvZy5sb2cuCitbSU5GTyA6Q00wMDIzXSBDcmVhdGluZyBsb2cgZmlsZSAuLi8uLi8uLi8uLi9idWlsZC90ZXN0cy9Zb3N5c0JpZ1NpbU9wZW5Nc3Avc2xwcF91bml0L3N1cmVsb2cubG9nLgogCiBbSU5GTyA6Q00wMDIwXSBTZXBhcmF0ZSBjb21waWxhdGlvbi11bml0IG1vZGUgaXMgb24uCiAKLVtXQVJOSTpQUDAxMDNdIC4vcnRsL29wZW5NU1A0MzBfdW5kZWZpbmVzLnY6MjQ5IFVuZGVmaW5pbmcgYW4gdW5rbm93biBtYWNybyAiUE1FTV9DVVNUT01fQVdJRFRIIi4KLQotW1dBUk5JOlBQMDEwM10gLi9ydGwvb3Blbk1TUDQzMF91bmRlZmluZXMudjoyNTAgVW5kZWZpbmluZyBhbiB1bmtub3duIG1hY3JvICJQTUVNX0NVU1RPTV9TSVpFIi4KLQotW1dBUk5JOlBQMDEwM10gLi9ydGwvb3Blbk1TUDQzMF91bmRlZmluZXMudjoyNTEgVW5kZWZpbmluZyBhbiB1bmtub3duIG1hY3JvICJETUVNX0NVU1RPTV9BV0lEVEgiLgotCi1bV0FSTkk6UFAwMTAzXSAuL3J0bC9vcGVuTVNQNDMwX3VuZGVmaW5lcy52OjI1MiBVbmRlZmluaW5nIGFuIHVua25vd24gbWFjcm8gIkRNRU1fQ1VTVE9NX1NJWkUiLgotCi1bV0FSTkk6UFAwMTAzXSAuL3J0bC9vcGVuTVNQNDMwX3VuZGVmaW5lcy52OjI1MyBVbmRlZmluaW5nIGFuIHVua25vd24gbWFjcm8gIlBFUl9DVVNUT01fQVdJRFRIIi4KLQotW1dBUk5JOlBQMDEwM10gLi9ydGwvb3Blbk1TUDQzMF91bmRlZmluZXMudjoyNTQgVW5kZWZpbmluZyBhbiB1bmtub3duIG1hY3JvICJQRVJfQ1VTVE9NX1NJWkUiLgotCi1bRVJST1I6UFAwMTAyXSAuL3J0bC9vcGVuTVNQNDMwX2RlZmluZXMudjo2MjYgVW5rbm93biBtYWNybyAiUEVSX1NJWkUiLgotCi1bRVJST1I6UFAwMTAyXSAuL3J0bC9vcGVuTVNQNDMwX2RlZmluZXMudjo2MjkgVW5rbm93biBtYWNybyAiUE1FTV9BV0lEVEgiLgotCi1bRVJST1I6UFAwMTAyXSAuL3J0bC9vcGVuTVNQNDMwX2RlZmluZXMudjo2MzAgVW5rbm93biBtYWNybyAiRE1FTV9BV0lEVEgiLgotCi1bRVJST1I6UFAwMTAyXSAuL3J0bC9vcGVuTVNQNDMwX2RlZmluZXMudjo2MzEgVW5rbm93biBtYWNybyAiUEVSX0FXSURUSCIuCi0KLVtFUlJPUjpQUDAxMDJdIC4vcnRsL29wZW5NU1A0MzBfZGVmaW5lcy52OjgxMyBVbmtub3duIG1hY3JvICJEQkdfRENPX0ZSRVEiLgotCi1bRVJST1I6UFAwMTAyXSAuL3J0bC9vcGVuTVNQNDMwX2RlZmluZXMudjo4MTMgVW5rbm93biBtYWNybyAiREJHX1VBUlRfQkFVRCIuCi0KIFtXQVJOSTpQUDAxMDNdIHJ0bC9vcGVuTVNQNDMwX3VuZGVmaW5lcy52OjI0OSBVbmRlZmluaW5nIGFuIHVua25vd24gbWFjcm8gIlBNRU1fQ1VTVE9NX0FXSURUSCIuCiAKIFtXQVJOSTpQUDAxMDNdIHJ0bC9vcGVuTVNQNDMwX3VuZGVmaW5lcy52OjI1MCBVbmRlZmluaW5nIGFuIHVua25vd24gbWFjcm8gIlBNRU1fQ1VTVE9NX1NJWkUiLgpAQCAtMzgsMzMgKzE0LDE1IEBACiAKIFtXQVJOSTpQUDAxMDNdIHJ0bC9vcGVuTVNQNDMwX3VuZGVmaW5lcy52OjI1NCBVbmRlZmluaW5nIGFuIHVua25vd24gbWFjcm8gIlBFUl9DVVNUT01fU0laRSIuCiAKLVtTWU5UWDpQQTAyMDddIHNpbS9zaWV2ZS52OjEgU3ludGF4IGVycm9yOiBtaXNzaW5nIHsnbmV3JywgJ2J5dGUnLCAnYml0JywgJ2xvZ2ljJywgJ3NpZ25lZCcsICd1bnNpZ25lZCcsICd2YXInLCAnY29udGV4dCcsICdleHBlY3QnLCAnc29mdCcsICdnbG9iYWwnLCAnZG8nLCAndGhpcycsICdyYW5kb21pemUnLCAnZmluYWwnLCAnc2FtcGxlJywgRXNjYXBlZF9pZGVudGlmaWVyLCBTaW1wbGVfaWRlbnRpZmllcn0gYXQgJ1snLAotcG1lbVsgNTEyXSA9IDE2J2g0MDMxOwotICAgIF4tLSAuLi8uLi8uLi9idWlsZC90ZXN0cy9Zb3N5c0JpZ1NpbU9wZW5Nc3Avc2xwcF91bml0L3dvcmsvc2ltL3NpZXZlLnY6MSBjb2w6NC4KK1tXQVJOSTpQQTAyMDVdIHJ0bC9vcGVuTVNQNDMwLnY6NDcgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9wZW5NU1A0MzAiLgogCi1bV0FSTkk6UEEwMjA1XSBydGwvb21zcF9jbG9ja19tdXgudjo0NCBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9jbG9ja19tdXgiLgotCi1bV0FSTkk6UEEwMjA1XSBydGwvb21zcF9kYmdfdWFydC52OjQ3IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvbXNwX2RiZ191YXJ0Ii4KLQotW1dBUk5JOlBBMDIwNV0gcnRsL29tc3Bfd2FrZXVwX2NlbGwudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF93YWtldXBfY2VsbCIuCi0KLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2Zyb250ZW5kLnY6NDcgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfZnJvbnRlbmQiLgotCi1bV0FSTkk6UEEwMjA1XSBydGwvb21zcF9zeW5jX2NlbGwudjo0NCBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9zeW5jX2NlbGwiLgorW1dBUk5JOlBBMDIwNV0gcnRsL29tc3BfY2xvY2tfbW9kdWxlLnY6NDcgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfY2xvY2tfbW9kdWxlIi4KIAogW1dBUk5JOlBBMDIwNV0gcnRsL29tc3BfZGJnLnY6NDcgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfZGJnIi4KIAotW1dBUk5JOlBBMDIwNV0gcnRsL29tc3Bfd2F0Y2hkb2cudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF93YXRjaGRvZyIuCi0KLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2FuZF9nYXRlLnY6NDQgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfYW5kX2dhdGUiLgotCi1bV0FSTkk6UEEwMjA1XSBydGwvb21zcF9jbG9ja19nYXRlLnY6NDQgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfY2xvY2tfZ2F0ZSIuCi0KIFtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2V4ZWN1dGlvbl91bml0LnY6NDcgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfZXhlY3V0aW9uX3VuaXQiLgogCi1bV0FSTkk6UEEwMjA1XSBydGwvb21zcF9zeW5jX3Jlc2V0LnY6NDQgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3Bfc3luY19yZXNldCIuCi0KLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX3NjYW5fbXV4LnY6NDQgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3Bfc2Nhbl9tdXgiLgorW1dBUk5JOlBBMDIwNV0gcnRsL29tc3BfZnJvbnRlbmQudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9mcm9udGVuZCIuCiAKIFtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX21lbV9iYWNrYm9uZS52OjQ3IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvbXNwX21lbV9iYWNrYm9uZSIuCiAKQEAgLTcyLDM2ICszMCwyNiBAQAogCiBbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9zZnIudjo0OCBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9zZnIiLgogCitbV0FSTkk6UEEwMjA1XSBydGwvb21zcF93YXRjaGRvZy52OjQ3IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvbXNwX3dhdGNoZG9nIi4KKwogW1dBUk5JOlBBMDIwNV0gcnRsL29tc3BfYWx1LnY6NDcgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfYWx1Ii4KIAotW1dBUk5JOlBBMDIwNV0gcnRsL29wZW5NU1A0MzAudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib3Blbk1TUDQzMCIuCi0KLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2RiZ19pMmMudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9kYmdfaTJjIi4KLQotW1dBUk5JOlBBMDIwNV0gcnRsL29tc3BfY2xvY2tfbW9kdWxlLnY6NDcgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfY2xvY2tfbW9kdWxlIi4KK1tXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2RiZ191YXJ0LnY6NDcgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfZGJnX3VhcnQiLgogCiBbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9yZWdpc3Rlcl9maWxlLnY6NDcgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfcmVnaXN0ZXJfZmlsZSIuCiAKLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2RiZ19od2Jyay52OjQ3IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvbXNwX2RiZ19od2JyayIuCitbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9zeW5jX2NlbGwudjo0NCBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9zeW5jX2NlbGwiLgorCitbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9zeW5jX3Jlc2V0LnY6NDQgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3Bfc3luY19yZXNldCIuCiAKIFtJTkZPIDpDUDAzMDBdIENvbXBpbGF0aW9uLi4uCiAKIFtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2FsdS52OjQ3IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfYWx1Ii4KIAotW0lORk8gOkNQMDMwM10gcnRsL29tc3BfYW5kX2dhdGUudjo0NCBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX2FuZF9nYXRlIi4KLQotW0lORk8gOkNQMDMwM10gcnRsL29tc3BfY2xvY2tfZ2F0ZS52OjQ0IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfY2xvY2tfZ2F0ZSIuCi0KIFtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2Nsb2NrX21vZHVsZS52OjQ3IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfY2xvY2tfbW9kdWxlIi4KIAotW0lORk8gOkNQMDMwM10gcnRsL29tc3BfY2xvY2tfbXV4LnY6NDQgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF9jbG9ja19tdXgiLgotCiBbSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9kYmcudjo0NyBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX2RiZyIuCiAKLVtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2RiZ19od2Jyay52OjQ3IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfZGJnX2h3YnJrIi4KLQotW0lORk8gOkNQMDMwM10gcnRsL29tc3BfZGJnX2kyYy52OjQ3IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfZGJnX2kyYyIuCi0KIFtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2RiZ191YXJ0LnY6NDcgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF9kYmdfdWFydCIuCiAKIFtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2V4ZWN1dGlvbl91bml0LnY6NDcgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF9leGVjdXRpb25fdW5pdCIuCkBAIC0xMTQsNDIgKzYyLDMzIEBACiAKIFtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX3JlZ2lzdGVyX2ZpbGUudjo0NyBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX3JlZ2lzdGVyX2ZpbGUiLgogCi1bSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9zY2FuX211eC52OjQ0IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3Bfc2Nhbl9tdXgiLgotCiBbSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9zZnIudjo0OCBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX3NmciIuCiAKIFtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX3N5bmNfY2VsbC52OjQ0IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3Bfc3luY19jZWxsIi4KIAogW0lORk8gOkNQMDMwM10gcnRsL29tc3Bfc3luY19yZXNldC52OjQ0IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3Bfc3luY19yZXNldCIuCiAKLVtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX3dha2V1cF9jZWxsLnY6NDcgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF93YWtldXBfY2VsbCIuCi0KIFtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX3dhdGNoZG9nLnY6NDcgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF93YXRjaGRvZyIuCiAKIFtJTkZPIDpDUDAzMDNdIHJ0bC9vcGVuTVNQNDMwLnY6NDcgQ29tcGlsZSBtb2R1bGUgIndvcmtAb3Blbk1TUDQzMCIuCiAKIFtJTkZPIDpDUDAzMDNdIHNpbS9iZW5jaC52OjYgQ29tcGlsZSBtb2R1bGUgIndvcmtAdGVzdGJlbmNoIi4KIAorW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0IENvbXBpbGUgY2xhc3MgIndvcmtAbWFpbGJveCIuCisKK1tJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6MzMgQ29tcGlsZSBjbGFzcyAid29ya0Bwcm9jZXNzIi4KKworW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo1OCBDb21waWxlIGNsYXNzICJ3b3JrQHNlbWFwaG9yZSIuCisKIFtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX2FsdS52OjUwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJhbHVfb3V0IiwKIHRoZXJlIGFyZSAzIG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfYW5kX2dhdGUudjo0NyBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAieSIuCi0KLVtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX2Nsb2NrX2dhdGUudjo0NyBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZ2NsayIuCi0KIFtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX2Nsb2NrX21vZHVsZS52OjUwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJhY2xrIiwKIHRoZXJlIGFyZSAxNCBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX2Nsb2NrX211eC52OjQ3IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJjbGtfb3V0Ii4KLQogW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfZGJnLnY6NTAgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRiZ19jcHVfcmVzZXQiLAogdGhlcmUgYXJlIDkgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCi1bTk9URSA6Q1AwMzA5XSBydGwvb21zcF9kYmdfaHdicmsudjo1MCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiYnJrX2hhbHQiLAotdGhlcmUgYXJlIDIgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgotCi1bTk9URSA6Q1AwMzA5XSBydGwvb21zcF9kYmdfaTJjLnY6NTEgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRiZ19kaW4iLgotCiBbTk9URSA6Q1AwMzA5XSBydGwvb21zcF9kYmdfdWFydC52OjUxIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkYmdfZGluIiwKIHRoZXJlIGFyZSAyIG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KIApAQCAtMTY3LDggKzEwNiw2IEBACiBbTk9URSA6Q1AwMzA5XSBydGwvb21zcF9yZWdpc3Rlcl9maWxlLnY6NTAgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImNwdW9mZiIsCiB0aGVyZSBhcmUgOSBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX3NjYW5fbXV4LnY6NDcgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRhdGFfb3V0Ii4KLQogW05PVEUgOkNQMDMwOV0gcnRsL29tc3Bfc2ZyLnY6NTEgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImNwdV9pZCIsCiB0aGVyZSBhcmUgNSBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKQEAgLTE4NiwzMyArMTIzLDE3IEBACiAKIFtOT1RFIDpFTDA1MDNdIHNpbS9iZW5jaC52OjYgVG9wIGxldmVsIG1vZHVsZSAid29ya0B0ZXN0YmVuY2giLgogCi1bTk9URSA6RUwwNTAzXSBydGwvb21zcF9jbG9ja19tdXgudjo0NCBUb3AgbGV2ZWwgbW9kdWxlICJ3b3JrQG9tc3BfY2xvY2tfbXV4Ii4KLQotW05PVEUgOkVMMDUwM10gcnRsL29tc3Bfd2FrZXVwX2NlbGwudjo0NyBUb3AgbGV2ZWwgbW9kdWxlICJ3b3JrQG9tc3Bfd2FrZXVwX2NlbGwiLgotCi1bTk9URSA6RUwwNTAzXSBydGwvb21zcF9hbmRfZ2F0ZS52OjQ0IFRvcCBsZXZlbCBtb2R1bGUgIndvcmtAb21zcF9hbmRfZ2F0ZSIuCi0KLVtOT1RFIDpFTDA1MDNdIHJ0bC9vbXNwX2Nsb2NrX2dhdGUudjo0NCBUb3AgbGV2ZWwgbW9kdWxlICJ3b3JrQG9tc3BfY2xvY2tfZ2F0ZSIuCi0KLVtOT1RFIDpFTDA1MDNdIHJ0bC9vbXNwX3NjYW5fbXV4LnY6NDQgVG9wIGxldmVsIG1vZHVsZSAid29ya0BvbXNwX3NjYW5fbXV4Ii4KLQotW05PVEUgOkVMMDUwM10gcnRsL29tc3BfZGJnX2kyYy52OjQ3IFRvcCBsZXZlbCBtb2R1bGUgIndvcmtAb21zcF9kYmdfaTJjIi4KLQotW05PVEUgOkVMMDUwM10gcnRsL29tc3BfZGJnX2h3YnJrLnY6NDcgVG9wIGxldmVsIG1vZHVsZSAid29ya0BvbXNwX2RiZ19od2JyayIuCi0KLVtOT1RFIDpFTDA1MDRdIE11bHRpcGxlIHRvcCBsZXZlbCBtb2R1bGVzIGluIGRlc2lnbi4KLQotW05PVEUgOkVMMDUwOF0gTmIgVG9wIGxldmVsIG1vZHVsZXM6IDguCitbTk9URSA6RUwwNTA4XSBOYiBUb3AgbGV2ZWwgbW9kdWxlczogMS4KIAogW05PVEUgOkVMMDUwOV0gTWF4IGluc3RhbmNlIGRlcHRoOiA1LgogCi1bTk9URSA6RUwwNTEwXSBOYiBpbnN0YW5jZXM6IDI3LgorW05PVEUgOkVMMDUxMF0gTmIgaW5zdGFuY2VzOiAxOC4KIAotW05PVEUgOkVMMDUxMV0gTmIgbGVhZiBpbnN0YW5jZXM6IDE3LgorW05PVEUgOkVMMDUxMV0gTmIgbGVhZiBpbnN0YW5jZXM6IDkuCiAKIFsgIEZBVEFMXSA6IDAKLVsgU1lOVEFYXSA6IDEKLVsgIEVSUk9SXSA6IDYKLVtXQVJOSU5HXSA6IDMzCi1bICAgTk9URV0gOiAzMworWyBTWU5UQVhdIDogMAorWyAgRVJST1JdIDogMAorW1dBUk5JTkddIDogMjAKK1sgICBOT1RFXSA6IDE5CiAKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzQmlnU2ltL29wZW5tc3A0MzAvWW9zeXNCaWdTaW1PcGVuTXNwLnNsIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNCaWdTaW0vb3Blbm1zcDQzMC9Zb3N5c0JpZ1NpbU9wZW5Nc3Auc2wKaW5kZXggZjYzMmRiYy4uZmQzNGE3NiAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNCaWdTaW0vb3Blbm1zcDQzMC9Zb3N5c0JpZ1NpbU9wZW5Nc3Auc2wKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNCaWdTaW0vb3Blbm1zcDQzMC9Zb3N5c0JpZ1NpbU9wZW5Nc3Auc2wKQEAgLTEgKzEgQEAKLSAgLXdyaXRlcHAgLXBhcnNlICAgLW10ICBtYXggIC1ub3B5dGhvbiAtZmlsZXVuaXQgICovKi52ICtpbmNkaXIrLi9ydGwvKy4vc2ltLyAtbm9idWlsdGluIC1ub2NhY2hlCistd3JpdGVwcCAtcGFyc2UgIHJ0bC9vcGVuTVNQNDMwLnYgcnRsL29tc3BfY2xvY2tfbW9kdWxlLnYgcnRsL29tc3BfZGJnLnYgcnRsL29tc3BfZXhlY3V0aW9uX3VuaXQudiBydGwvb21zcF9mcm9udGVuZC52IHJ0bC9vbXNwX21lbV9iYWNrYm9uZS52IHJ0bC9vbXNwX211bHRpcGxpZXIudiBydGwvb21zcF9zZnIudiBydGwvb21zcF93YXRjaGRvZy52IHJ0bC9vbXNwX2FsdS52IHJ0bC9vbXNwX2RiZ191YXJ0LnYgcnRsL29tc3BfcmVnaXN0ZXJfZmlsZS52IHJ0bC9vbXNwX3N5bmNfY2VsbC52IHJ0bC9vbXNwX3N5bmNfcmVzZXQudiBzaW0vYmVuY2gudiAraW5jZGlyK3J0bC8rc2ltLyAtbm9jYWNoZSAtZmlsZXVuaXQKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzQmlnU2ltL3JlZWRfc29sb21vbl9kZWNvZGVyL1lvc3lzQmlnU2ltUmVlZC5sb2cgYi90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9yZWVkX3NvbG9tb25fZGVjb2Rlci9Zb3N5c0JpZ1NpbVJlZWQubG9nCmluZGV4IDIzZWVhYmMuLjZmOGZjYTYgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzQmlnU2ltL3JlZWRfc29sb21vbl9kZWNvZGVyL1lvc3lzQmlnU2ltUmVlZC5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNCaWdTaW0vcmVlZF9zb2xvbW9uX2RlY29kZXIvWW9zeXNCaWdTaW1SZWVkLmxvZwpAQCAtMSwxMiArMSw5NyBAQAotW0lORk8gOkNNMDAyM10gQ3JlYXRpbmcgbG9nIGZpbGUgLi4vLi4vLi4vYnVpbGQvdGVzdHMvWW9zeXNCaWdTaW1SZWVkL3NscHBfdW5pdC9zdXJlbG9nLmxvZy4KK1tJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzQmlnU2ltUmVlZC9zbHBwX3VuaXQvc3VyZWxvZy5sb2cuCiAKIFtJTkZPIDpDTTAwMjBdIFNlcGFyYXRlIGNvbXBpbGF0aW9uLXVuaXQgbW9kZSBpcyBvbi4KIAotW0VSUk9SOlBQMDEyNV0gQ2Fubm90IHJlYWQgdGhlIGZpbGUncyBjb250ZW50ICJydGwvQk1fbGFtZGEudiIuIE9ubHkgVVRGLTggaXMgc3VwcG9ydGVkLgorW1dBUk5JOlBBMDIwNV0gc2ltL1JTX2RlY190Yi52OjMgTm8gdGltZXNjYWxlIHNldCBmb3IgInRlc3RiZW5jaCIuCisKK1tXQVJOSTpQQTAyMDVdIHJ0bC9SU19kZWMudjoyMSBObyB0aW1lc2NhbGUgc2V0IGZvciAiUlNfZGVjIi4KKworW1dBUk5JOlBBMDIwNV0gcnRsL291dF9zdGFnZS52OjIxIE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvdXRfc3RhZ2UiLgorCitbV0FSTkk6UEEwMjA1XSBydGwvR0ZfbWF0cml4X2RlYy52OjIxIE5vIHRpbWVzY2FsZSBzZXQgZm9yICJHRl9tYXRyaXhfZGVjIi4KKworW1dBUk5JOlBBMDIwNV0gcnRsL0dGX211bHRfYWRkX3N5bmRyb21lcy52OjI4IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJHRl9tdWx0X2FkZF9zeW5kcm9tZXMiLgorCitbV0FSTkk6UEEwMjA1XSBydGwvbGFtZGFfcm9vdHMudjoyMSBObyB0aW1lc2NhbGUgc2V0IGZvciAibGFtZGFfcm9vdHMiLgorCitbV0FSTkk6UEEwMjA1XSBydGwvT21lZ2FfUGh5LnY6MjEgTm8gdGltZXNjYWxlIHNldCBmb3IgIk9tZWdhX1BoeSIuCisKK1tXQVJOSTpQQTAyMDVdIHJ0bC90cmFuc3BvcnRfaW4yb3V0LnY6MjIgTm8gdGltZXNjYWxlIHNldCBmb3IgInRyYW5zcG9ydF9pbjJvdXQiLgorCitbV0FSTkk6UEEwMjA1XSBydGwvR0ZfbWF0cml4X2FzY2VuZGluZ19iaW5hcnkudjoyMCBObyB0aW1lc2NhbGUgc2V0IGZvciAiR0ZfbWF0cml4X2FzY2VuZGluZ19iaW5hcnkiLgorCitbV0FSTkk6UEEwMjA1XSBydGwvRFBfUkFNLnY6MTggTm8gdGltZXNjYWxlIHNldCBmb3IgIkRQX1JBTSIuCisKK1tXQVJOSTpQQTAyMDVdIHJ0bC9lcnJvcl9jb3JyZWN0aW9uLnY6MjAgTm8gdGltZXNjYWxlIHNldCBmb3IgImVycm9yX2NvcnJlY3Rpb24iLgorCitbV0FSTkk6UEEwMjA1XSBydGwvQk1fbGFtZGEudjoyMCBObyB0aW1lc2NhbGUgc2V0IGZvciAiQk1fbGFtZGEiLgorCitbV0FSTkk6UEEwMjA1XSBydGwvaW5wdXRfc3luZHJvbWVzLnY6MjQgTm8gdGltZXNjYWxlIHNldCBmb3IgImlucHV0X3N5bmRyb21lcyIuCisKK1tJTkZPIDpDUDAzMDBdIENvbXBpbGF0aW9uLi4uCisKK1tJTkZPIDpDUDAzMDNdIHJ0bC9CTV9sYW1kYS52OjIwIENvbXBpbGUgbW9kdWxlICJ3b3JrQEJNX2xhbWRhIi4KKworW0lORk8gOkNQMDMwM10gcnRsL0RQX1JBTS52OjE4IENvbXBpbGUgbW9kdWxlICJ3b3JrQERQX1JBTSIuCisKK1tJTkZPIDpDUDAzMDNdIHJ0bC9HRl9tYXRyaXhfYXNjZW5kaW5nX2JpbmFyeS52OjIwIENvbXBpbGUgbW9kdWxlICJ3b3JrQEdGX21hdHJpeF9hc2NlbmRpbmdfYmluYXJ5Ii4KKworW0lORk8gOkNQMDMwM10gcnRsL0dGX21hdHJpeF9kZWMudjoyMSBDb21waWxlIG1vZHVsZSAid29ya0BHRl9tYXRyaXhfZGVjIi4KKworW0lORk8gOkNQMDMwM10gcnRsL0dGX211bHRfYWRkX3N5bmRyb21lcy52OjI4IENvbXBpbGUgbW9kdWxlICJ3b3JrQEdGX211bHRfYWRkX3N5bmRyb21lcyIuCisKK1tJTkZPIDpDUDAzMDNdIHJ0bC9PbWVnYV9QaHkudjoyMSBDb21waWxlIG1vZHVsZSAid29ya0BPbWVnYV9QaHkiLgorCitbSU5GTyA6Q1AwMzAzXSBydGwvUlNfZGVjLnY6MjEgQ29tcGlsZSBtb2R1bGUgIndvcmtAUlNfZGVjIi4KKworW0lORk8gOkNQMDMwM10gcnRsL2Vycm9yX2NvcnJlY3Rpb24udjoyMCBDb21waWxlIG1vZHVsZSAid29ya0BlcnJvcl9jb3JyZWN0aW9uIi4KKworW0lORk8gOkNQMDMwM10gcnRsL2lucHV0X3N5bmRyb21lcy52OjI0IENvbXBpbGUgbW9kdWxlICJ3b3JrQGlucHV0X3N5bmRyb21lcyIuCisKK1tJTkZPIDpDUDAzMDNdIHJ0bC9sYW1kYV9yb290cy52OjIxIENvbXBpbGUgbW9kdWxlICJ3b3JrQGxhbWRhX3Jvb3RzIi4KKworW0lORk8gOkNQMDMwM10gcnRsL291dF9zdGFnZS52OjIxIENvbXBpbGUgbW9kdWxlICJ3b3JrQG91dF9zdGFnZSIuCisKK1tJTkZPIDpDUDAzMDNdIHNpbS9SU19kZWNfdGIudjozIENvbXBpbGUgbW9kdWxlICJ3b3JrQHRlc3RiZW5jaCIuCisKK1tJTkZPIDpDUDAzMDNdIHJ0bC90cmFuc3BvcnRfaW4yb3V0LnY6MjIgQ29tcGlsZSBtb2R1bGUgIndvcmtAdHJhbnNwb3J0X2luMm91dCIuCisKK1tOT1RFIDpDUDAzMDldIHJ0bC9CTV9sYW1kYS52OjQwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJhZGRfcG93MiIsCit0aGVyZSBhcmUgOSBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCisKK1tOT1RFIDpDUDAzMDldIHJ0bC9PbWVnYV9QaHkudjo0NCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiYWRkX3BvdzIiLAordGhlcmUgYXJlIDIwIG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KKworW05PVEUgOkNQMDMwOV0gcnRsL1JTX2RlYy52OjI5IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJPdXRfYnl0ZSIsCit0aGVyZSBhcmUgMiBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCisKK1tOT1RFIDpDUDAzMDldIHJ0bC9lcnJvcl9jb3JyZWN0aW9uLnY6NDQgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImFkZF9wb3cyIiwKK3RoZXJlIGFyZSA4IG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KKworW05PVEUgOkNQMDMwOV0gcnRsL2lucHV0X3N5bmRyb21lcy52OjM4IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJzMSIsCit0aGVyZSBhcmUgMTUgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgorCitbTk9URSA6Q1AwMzA5XSBydGwvbGFtZGFfcm9vdHMudjozMCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiYWRkX0dGX2RlYzEiLAordGhlcmUgYXJlIDggbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgorCitbTk9URSA6Q1AwMzA5XSBydGwvdHJhbnNwb3J0X2luMm91dC52OjMyIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJXRSIsCit0aGVyZSBhcmUgMSBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCisKK1tJTkZPIDpFTDA1MjZdIERlc2lnbiBFbGFib3JhdGlvbi4uLgorCitbTk9URSA6RUwwNTAzXSBzaW0vUlNfZGVjX3RiLnY6MyBUb3AgbGV2ZWwgbW9kdWxlICJ3b3JrQHRlc3RiZW5jaCIuCisKK1tOT1RFIDpFTDA1MDhdIE5iIFRvcCBsZXZlbCBtb2R1bGVzOiAxLgorCitbTk9URSA6RUwwNTA5XSBNYXggaW5zdGFuY2UgZGVwdGg6IDUuCisKK1tOT1RFIDpFTDA1MTBdIE5iIGluc3RhbmNlczogMjYuCisKK1tOT1RFIDpFTDA1MTFdIE5iIGxlYWYgaW5zdGFuY2VzOiAwLgogCiBbICBGQVRBTF0gOiAwCiBbIFNZTlRBWF0gOiAwCi1bICBFUlJPUl0gOiAxCi1bV0FSTklOR10gOiAwCi1bICAgTk9URV0gOiAwCitbICBFUlJPUl0gOiAwCitbV0FSTklOR10gOiAxMworWyAgIE5PVEVdIDogMTIKIApkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNCaWdTaW0vcmVlZF9zb2xvbW9uX2RlY29kZXIvcnRsL0JNX2xhbWRhLnYgYi90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9yZWVkX3NvbG9tb25fZGVjb2Rlci9ydGwvQk1fbGFtZGEudgppbmRleCA2M2UyODU5Li4zZjc0NTE1IDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9yZWVkX3NvbG9tb25fZGVjb2Rlci9ydGwvQk1fbGFtZGEudgorKysgYi90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9yZWVkX3NvbG9tb25fZGVjb2Rlci9ydGwvQk1fbGFtZGEudgpAQCAtMTgsNyArMTgsNyBAQAogDQogDQogbW9kdWxlIEJNX2xhbWRhDQotLy8vLyB1c2UgQmVybGVrYW1wIE1hc3NleZJzIEFsZ29yaXRobSB0byBjYWxjdWxhdGUgbGFtZGEgcG9seW5vbWlhbA0KKy8vLy8gdXNlIEJlcmxla2FtcCBNYXNzZXkgQWxnb3JpdGhtIHRvIGNhbGN1bGF0ZSBsYW1kYSBwb2x5bm9taWFsDQogKA0KIGlucHV0IGNsaywgLy8gaW5wdXQgY2xvY2sgcGxhbm5lZCB0byBiZSA1NiBNaHoNCiBpbnB1dCByZXNldCwgLy8gYWN0aXZlIGhpZ2ggYXN5bmNocm9ub3VzIHJlc2V0DQpAQCAtMzI0LDQgKzMyNCw0IEBACiBlbmQNCiANCiANCi1lbmRtb2R1bGUgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZW5kbW9kdWxlIA0KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzQmlnU2ltL3NvZnR1c2JfbmF2cmUvWW9zeXNCaWdTaW1Tb2Z0LmxvZyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzQmlnU2ltL3NvZnR1c2JfbmF2cmUvWW9zeXNCaWdTaW1Tb2Z0LmxvZwppbmRleCBiOGI0N2E5Li44YTRjNjliIDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS9zb2Z0dXNiX25hdnJlL1lvc3lzQmlnU2ltU29mdC5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNCaWdTaW0vc29mdHVzYl9uYXZyZS9Zb3N5c0JpZ1NpbVNvZnQubG9nCkBAIC0xLDQgKzEsNCBAQAotW0lORk8gOkNNMDAyM10gQ3JlYXRpbmcgbG9nIGZpbGUgLi4vLi4vLi4vYnVpbGQvdGVzdHMvWW9zeXNCaWdTaW1Tb2Z0L3NscHBfdW5pdC9zdXJlbG9nLmxvZy4KK1tJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzQmlnU2ltU29mdC9zbHBwX3VuaXQvc3VyZWxvZy5sb2cuCiAKIFtJTkZPIDpDTTAwMjBdIFNlcGFyYXRlIGNvbXBpbGF0aW9uLXVuaXQgbW9kZSBpcyBvbi4KIApkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNCaWdTaW0vdmVyaWxvZy1wb25nL1lvc3lzQmlnU2ltUG9uZy5sb2cgYi90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS92ZXJpbG9nLXBvbmcvWW9zeXNCaWdTaW1Qb25nLmxvZwppbmRleCA2MzFhMzk2Li41NjdiYmY4IDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS92ZXJpbG9nLXBvbmcvWW9zeXNCaWdTaW1Qb25nLmxvZworKysgYi90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c0JpZ1NpbS92ZXJpbG9nLXBvbmcvWW9zeXNCaWdTaW1Qb25nLmxvZwpAQCAtMSw0ICsxLDQgQEAKLVtJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzQmlnU2ltUG9uZy9zbHBwX3VuaXQvc3VyZWxvZy5sb2cuCitbSU5GTyA6Q00wMDIzXSBDcmVhdGluZyBsb2cgZmlsZSAuLi8uLi8uLi8uLi9idWlsZC90ZXN0cy9Zb3N5c0JpZ1NpbVBvbmcvc2xwcF91bml0L3N1cmVsb2cubG9nLgogCiBbSU5GTyA6Q00wMDIwXSBTZXBhcmF0ZSBjb21waWxhdGlvbi11bml0IG1vZGUgaXMgb24uCiAKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzT2xkVGVzdHMvb3Blbm1zcDQzMC9Zb3N5c09sZE9wZW4ubG9nIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9vcGVubXNwNDMwL1lvc3lzT2xkT3Blbi5sb2cKaW5kZXggNmFlYjQ2Yy4uMjEzNjY1NSAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9vcGVubXNwNDMwL1lvc3lzT2xkT3Blbi5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9vcGVubXNwNDMwL1lvc3lzT2xkT3Blbi5sb2cKQEAgLTEsMzQgKzEsMzQgQEAKLVtJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzT2xkT3Blbi9zbHBwX2FsbC9zdXJlbG9nLmxvZy4KK1tJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzT2xkT3Blbi9zbHBwX2FsbC9zdXJlbG9nLmxvZy4KIAotW1dBUk5JOlBBMDIwNV0gcnRsL29tc3BfYWx1LnY6NDYgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfYWx1Ii4KK1tXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2FsdS52OjQ3IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvbXNwX2FsdSIuCiAKIFtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2FuZF9nYXRlLnY6NDQgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfYW5kX2dhdGUiLgogCiBbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9jbG9ja19nYXRlLnY6NDQgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfY2xvY2tfZ2F0ZSIuCiAKLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2Nsb2NrX21vZHVsZS52OjQ2IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvbXNwX2Nsb2NrX21vZHVsZSIuCitbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9jbG9ja19tb2R1bGUudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9jbG9ja19tb2R1bGUiLgogCiBbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9jbG9ja19tdXgudjo0NCBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9jbG9ja19tdXgiLgogCi1bV0FSTkk6UEEwMjA1XSBydGwvb21zcF9kYmdfaHdicmsudjo0NiBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9kYmdfaHdicmsiLgorW1dBUk5JOlBBMDIwNV0gcnRsL29tc3BfZGJnX2h3YnJrLnY6NDcgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfZGJnX2h3YnJrIi4KIAotW1dBUk5JOlBBMDIwNV0gcnRsL29tc3BfZGJnX3VhcnQudjo0NiBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9kYmdfdWFydCIuCitbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9kYmdfdWFydC52OjQ3IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvbXNwX2RiZ191YXJ0Ii4KIAotW1dBUk5JOlBBMDIwNV0gcnRsL29tc3BfZGJnLnY6NDYgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfZGJnIi4KK1tXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2RiZy52OjQ3IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvbXNwX2RiZyIuCiAKLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2V4ZWN1dGlvbl91bml0LnY6NDYgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfZXhlY3V0aW9uX3VuaXQiLgorW1dBUk5JOlBBMDIwNV0gcnRsL29tc3BfZXhlY3V0aW9uX3VuaXQudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9leGVjdXRpb25fdW5pdCIuCiAKLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX2Zyb250ZW5kLnY6NDYgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfZnJvbnRlbmQiLgorW1dBUk5JOlBBMDIwNV0gcnRsL29tc3BfZnJvbnRlbmQudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9mcm9udGVuZCIuCiAKLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX21lbV9iYWNrYm9uZS52OjQ2IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvbXNwX21lbV9iYWNrYm9uZSIuCitbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9tZW1fYmFja2JvbmUudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9tZW1fYmFja2JvbmUiLgogCi1bV0FSTkk6UEEwMjA1XSBydGwvb21zcF9tdWx0aXBsaWVyLnY6NDYgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfbXVsdGlwbGllciIuCitbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9tdWx0aXBsaWVyLnY6NDcgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3BfbXVsdGlwbGllciIuCiAKLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX3JlZ2lzdGVyX2ZpbGUudjo0NiBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9yZWdpc3Rlcl9maWxlIi4KK1tXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX3JlZ2lzdGVyX2ZpbGUudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9yZWdpc3Rlcl9maWxlIi4KIAogW1dBUk5JOlBBMDIwNV0gcnRsL29tc3Bfc2Nhbl9tdXgudjo0NCBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9zY2FuX211eCIuCiAKLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX3Nmci52OjQ3IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJvbXNwX3NmciIuCitbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9zZnIudjo0OCBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9zZnIiLgogCiBbV0FSTkk6UEEwMjA1XSBydGwvb21zcF9zeW5jX2NlbGwudjo0NCBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF9zeW5jX2NlbGwiLgogCkBAIC0zNiw0MSArMzYsNDEgQEAKIAogW1dBUk5JOlBBMDIwNV0gcnRsL29tc3Bfd2FrZXVwX2NlbGwudjo0NCBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF93YWtldXBfY2VsbCIuCiAKLVtXQVJOSTpQQTAyMDVdIHJ0bC9vbXNwX3dhdGNoZG9nLnY6NDYgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9tc3Bfd2F0Y2hkb2ciLgorW1dBUk5JOlBBMDIwNV0gcnRsL29tc3Bfd2F0Y2hkb2cudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib21zcF93YXRjaGRvZyIuCiAKLVtXQVJOSTpQQTAyMDVdIHJ0bC9vcGVuTVNQNDMwLnY6NDYgTm8gdGltZXNjYWxlIHNldCBmb3IgIm9wZW5NU1A0MzAiLgorW1dBUk5JOlBBMDIwNV0gcnRsL29wZW5NU1A0MzAudjo0NyBObyB0aW1lc2NhbGUgc2V0IGZvciAib3Blbk1TUDQzMCIuCiAKIFtJTkZPIDpDUDAzMDBdIENvbXBpbGF0aW9uLi4uCiAKLVtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2FsdS52OjQ2IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfYWx1Ii4KK1tJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2FsdS52OjQ3IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfYWx1Ii4KIAogW0lORk8gOkNQMDMwM10gcnRsL29tc3BfYW5kX2dhdGUudjo0NCBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX2FuZF9nYXRlIi4KIAogW0lORk8gOkNQMDMwM10gcnRsL29tc3BfY2xvY2tfZ2F0ZS52OjQ0IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfY2xvY2tfZ2F0ZSIuCiAKLVtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2Nsb2NrX21vZHVsZS52OjQ2IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfY2xvY2tfbW9kdWxlIi4KK1tJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2Nsb2NrX21vZHVsZS52OjQ3IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfY2xvY2tfbW9kdWxlIi4KIAogW0lORk8gOkNQMDMwM10gcnRsL29tc3BfY2xvY2tfbXV4LnY6NDQgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF9jbG9ja19tdXgiLgogCi1bSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9kYmcudjo0NiBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX2RiZyIuCitbSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9kYmcudjo0NyBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX2RiZyIuCiAKLVtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2RiZ19od2Jyay52OjQ2IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfZGJnX2h3YnJrIi4KK1tJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2RiZ19od2Jyay52OjQ3IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfZGJnX2h3YnJrIi4KIAotW0lORk8gOkNQMDMwM10gcnRsL29tc3BfZGJnX3VhcnQudjo0NiBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX2RiZ191YXJ0Ii4KK1tJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2RiZ191YXJ0LnY6NDcgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF9kYmdfdWFydCIuCiAKLVtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX2V4ZWN1dGlvbl91bml0LnY6NDYgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF9leGVjdXRpb25fdW5pdCIuCitbSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9leGVjdXRpb25fdW5pdC52OjQ3IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfZXhlY3V0aW9uX3VuaXQiLgogCi1bSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9mcm9udGVuZC52OjQ2IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3BfZnJvbnRlbmQiLgorW0lORk8gOkNQMDMwM10gcnRsL29tc3BfZnJvbnRlbmQudjo0NyBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX2Zyb250ZW5kIi4KIAotW0lORk8gOkNQMDMwM10gcnRsL29tc3BfbWVtX2JhY2tib25lLnY6NDYgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF9tZW1fYmFja2JvbmUiLgorW0lORk8gOkNQMDMwM10gcnRsL29tc3BfbWVtX2JhY2tib25lLnY6NDcgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF9tZW1fYmFja2JvbmUiLgogCi1bSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9tdWx0aXBsaWVyLnY6NDYgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF9tdWx0aXBsaWVyIi4KK1tJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX211bHRpcGxpZXIudjo0NyBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX211bHRpcGxpZXIiLgogCi1bSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9yZWdpc3Rlcl9maWxlLnY6NDYgQ29tcGlsZSBtb2R1bGUgIndvcmtAb21zcF9yZWdpc3Rlcl9maWxlIi4KK1tJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX3JlZ2lzdGVyX2ZpbGUudjo0NyBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX3JlZ2lzdGVyX2ZpbGUiLgogCiBbSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9zY2FuX211eC52OjQ0IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3Bfc2Nhbl9tdXgiLgogCi1bSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9zZnIudjo0NyBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX3NmciIuCitbSU5GTyA6Q1AwMzAzXSBydGwvb21zcF9zZnIudjo0OCBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX3NmciIuCiAKIFtJTkZPIDpDUDAzMDNdIHJ0bC9vbXNwX3N5bmNfY2VsbC52OjQ0IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3Bfc3luY19jZWxsIi4KIApAQCAtNzgsOSArNzgsOSBAQAogCiBbSU5GTyA6Q1AwMzAzXSBydGwvb21zcF93YWtldXBfY2VsbC52OjQ0IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3Bfd2FrZXVwX2NlbGwiLgogCi1bSU5GTyA6Q1AwMzAzXSBydGwvb21zcF93YXRjaGRvZy52OjQ2IENvbXBpbGUgbW9kdWxlICJ3b3JrQG9tc3Bfd2F0Y2hkb2ciLgorW0lORk8gOkNQMDMwM10gcnRsL29tc3Bfd2F0Y2hkb2cudjo0NyBDb21waWxlIG1vZHVsZSAid29ya0BvbXNwX3dhdGNoZG9nIi4KIAotW0lORk8gOkNQMDMwM10gcnRsL29wZW5NU1A0MzAudjo0NiBDb21waWxlIG1vZHVsZSAid29ya0BvcGVuTVNQNDMwIi4KK1tJTkZPIDpDUDAzMDNdIHJ0bC9vcGVuTVNQNDMwLnY6NDcgQ29tcGlsZSBtb2R1bGUgIndvcmtAb3Blbk1TUDQzMCIuCiAKIFtJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6NCBDb21waWxlIGNsYXNzICJ3b3JrQG1haWxib3giLgogCkBAIC04OCw1NCArODgsNTQgQEAKIAogW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo1OCBDb21waWxlIGNsYXNzICJ3b3JrQHNlbWFwaG9yZSIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX2FsdS52OjQ5IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJhbHVfb3V0IiwKK1tOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX2FsdS52OjUwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJhbHVfb3V0IiwKIHRoZXJlIGFyZSAzIG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KIAogW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfYW5kX2dhdGUudjo0NyBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAieSIuCiAKIFtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX2Nsb2NrX2dhdGUudjo0NyBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZ2NsayIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX2Nsb2NrX21vZHVsZS52OjQ5IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJhY2xrIiwKK1tOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX2Nsb2NrX21vZHVsZS52OjUwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJhY2xrIiwKIHRoZXJlIGFyZSAxNCBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKIFtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX2Nsb2NrX211eC52OjQ3IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJjbGtfb3V0Ii4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfZGJnLnY6NDkgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRiZ19mcmVlemUiLAorW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfZGJnLnY6NTAgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRiZ19mcmVlemUiLAogdGhlcmUgYXJlIDggbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCi1bTk9URSA6Q1AwMzA5XSBydGwvb21zcF9kYmdfaHdicmsudjo0OSBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiYnJrX2hhbHQiLAorW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfZGJnX2h3YnJrLnY6NTAgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImJya19oYWx0IiwKIHRoZXJlIGFyZSAyIG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfZGJnX3VhcnQudjo1MCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZGJnX2RpbiIsCitbTk9URSA6Q1AwMzA5XSBydGwvb21zcF9kYmdfdWFydC52OjUxIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkYmdfZGluIiwKIHRoZXJlIGFyZSAyIG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfZXhlY3V0aW9uX3VuaXQudjo0OSBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiY3B1b2ZmIiwKK1tOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX2V4ZWN1dGlvbl91bml0LnY6NTAgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImNwdW9mZiIsCiB0aGVyZSBhcmUgMTEgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCi1bTk9URSA6Q1AwMzA5XSBydGwvb21zcF9mcm9udGVuZC52OjUwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkZWNvZGVfbm9pcnEiLAorW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfZnJvbnRlbmQudjo1MSBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZGVjb2RlX25vaXJxIiwKIHRoZXJlIGFyZSAxMSBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX21lbV9iYWNrYm9uZS52OjQ5IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkYmdfbWVtX2RpbiIsCitbTk9URSA6Q1AwMzA5XSBydGwvb21zcF9tZW1fYmFja2JvbmUudjo1MCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZGJnX21lbV9kaW4iLAogdGhlcmUgYXJlIDE1IG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfbXVsdGlwbGllci52OjQ5IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJwZXJfZG91dCIuCitbTk9URSA6Q1AwMzA5XSBydGwvb21zcF9tdWx0aXBsaWVyLnY6NTAgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgInBlcl9kb3V0Ii4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfcmVnaXN0ZXJfZmlsZS52OjQ5IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJjcHVvZmYiLAorW05PVEUgOkNQMDMwOV0gcnRsL29tc3BfcmVnaXN0ZXJfZmlsZS52OjUwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJjcHVvZmYiLAogdGhlcmUgYXJlIDkgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCiBbTk9URSA6Q1AwMzA5XSBydGwvb21zcF9zY2FuX211eC52OjQ3IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkYXRhX291dCIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX3Nmci52OjUwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJjcHVfaWQiLAorW05PVEUgOkNQMDMwOV0gcnRsL29tc3Bfc2ZyLnY6NTEgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImNwdV9pZCIsCiB0aGVyZSBhcmUgNSBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKIFtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX3N5bmNfY2VsbC52OjQ3IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkYXRhX291dCIuCiAKIFtOT1RFIDpDUDAzMDldIHJ0bC9vbXNwX3N5bmNfcmVzZXQudjo0NyBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAicnN0X3MiLgogCi1bTk9URSA6Q1AwMzA5XSBydGwvb21zcF93YXRjaGRvZy52OjQ5IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJwZXJfZG91dCIsCitbTk9URSA6Q1AwMzA5XSBydGwvb21zcF93YXRjaGRvZy52OjUwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJwZXJfZG91dCIsCiB0aGVyZSBhcmUgMyBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcGVuTVNQNDMwLnY6NDkgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImFjbGsiLAorW05PVEUgOkNQMDMwOV0gcnRsL29wZW5NU1A0MzAudjo1MCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiYWNsayIsCiB0aGVyZSBhcmUgMjQgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCiBbSU5GTyA6RUwwNTI2XSBEZXNpZ24gRWxhYm9yYXRpb24uLi4KQEAgLTE0NiwxMyArMTQ2LDEzIEBACiAKIFtOT1RFIDpFTDA1MDNdIHJ0bC9vbXNwX2Nsb2NrX211eC52OjQ0IFRvcCBsZXZlbCBtb2R1bGUgIndvcmtAb21zcF9jbG9ja19tdXgiLgogCi1bTk9URSA6RUwwNTAzXSBydGwvb21zcF9kYmdfaHdicmsudjo0NiBUb3AgbGV2ZWwgbW9kdWxlICJ3b3JrQG9tc3BfZGJnX2h3YnJrIi4KK1tOT1RFIDpFTDA1MDNdIHJ0bC9vbXNwX2RiZ19od2Jyay52OjQ3IFRvcCBsZXZlbCBtb2R1bGUgIndvcmtAb21zcF9kYmdfaHdicmsiLgogCiBbTk9URSA6RUwwNTAzXSBydGwvb21zcF9zY2FuX211eC52OjQ0IFRvcCBsZXZlbCBtb2R1bGUgIndvcmtAb21zcF9zY2FuX211eCIuCiAKIFtOT1RFIDpFTDA1MDNdIHJ0bC9vbXNwX3dha2V1cF9jZWxsLnY6NDQgVG9wIGxldmVsIG1vZHVsZSAid29ya0BvbXNwX3dha2V1cF9jZWxsIi4KIAotW05PVEUgOkVMMDUwM10gcnRsL29wZW5NU1A0MzAudjo0NiBUb3AgbGV2ZWwgbW9kdWxlICJ3b3JrQG9wZW5NU1A0MzAiLgorW05PVEUgOkVMMDUwM10gcnRsL29wZW5NU1A0MzAudjo0NyBUb3AgbGV2ZWwgbW9kdWxlICJ3b3JrQG9wZW5NU1A0MzAiLgogCiBbTk9URSA6RUwwNTA0XSBNdWx0aXBsZSB0b3AgbGV2ZWwgbW9kdWxlcyBpbiBkZXNpZ24uCiAKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzT2xkVGVzdHMvb3IxMjAwL1lvc3lzT2xkT3IubG9nIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9vcjEyMDAvWW9zeXNPbGRPci5sb2cKaW5kZXggZjU4YTczMS4uNTU3YmU5ZSAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9vcjEyMDAvWW9zeXNPbGRPci5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9vcjEyMDAvWW9zeXNPbGRPci5sb2cKQEAgLTEsNCArMSw0IEBACi1bSU5GTyA6Q00wMDIzXSBDcmVhdGluZyBsb2cgZmlsZSAuLi8uLi8uLi9idWlsZC90ZXN0cy9Zb3N5c09sZE9yL3NscHBfYWxsL3N1cmVsb2cubG9nLgorW0lORk8gOkNNMDAyM10gQ3JlYXRpbmcgbG9nIGZpbGUgLi4vLi4vLi4vLi4vYnVpbGQvdGVzdHMvWW9zeXNPbGRPci9zbHBwX2FsbC9zdXJlbG9nLmxvZy4KIAogW0lORk8gOkNQMDMwMF0gQ29tcGlsYXRpb24uLi4KIApAQCAtMTIsNyArMTIsNyBAQAogCiBbSU5GTyA6Q1AwMzAzXSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjoxNjk2IENvbXBpbGUgbW9kdWxlICJ3b3JrQEJMT0NLMkEiLgogCi1bSU5GTyA6Q1AwMzAzXSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjoxMTQgQ29tcGlsZSBtb2R1bGUgIndvcmtAQk9PVEhDT0RFUl8zM18zMiIuCitbSU5GTyA6Q1AwMzAzXSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjoxMTUgQ29tcGlsZSBtb2R1bGUgIndvcmtAQk9PVEhDT0RFUl8zM18zMiIuCiAKIFtJTkZPIDpDUDAzMDNdIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52OjIzMjYgQ29tcGlsZSBtb2R1bGUgIndvcmtAREJMQ0FEREVSXzY0XzY0Ii4KIApAQCAtMzAsMjcgKzMwLDI3IEBACiAKIFtJTkZPIDpDUDAzMDNdIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52OjIxNTEgQ29tcGlsZSBtb2R1bGUgIndvcmtAREJMQ181XzY0Ii4KIAotW0lORk8gOkNQMDMwM10gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6OTkgQ29tcGlsZSBtb2R1bGUgIndvcmtAREVDT0RFUiIuCitbSU5GTyA6Q1AwMzAzXSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjoxMDAgQ29tcGlsZSBtb2R1bGUgIndvcmtAREVDT0RFUiIuCiAKLVtJTkZPIDpDUDAzMDNdIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52Ojc3NCBDb21waWxlIG1vZHVsZSAid29ya0BGTElQRkxPUCIuCitbSU5GTyA6Q1AwMzAzXSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo3NzUgQ29tcGlsZSBtb2R1bGUgIndvcmtARkxJUEZMT1AiLgogCi1bSU5GTyA6Q1AwMzAzXSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo3NTEgQ29tcGlsZSBtb2R1bGUgIndvcmtARlVMTF9BRERFUiIuCitbSU5GTyA6Q1AwMzAzXSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo3NTIgQ29tcGlsZSBtb2R1bGUgIndvcmtARlVMTF9BRERFUiIuCiAKLVtJTkZPIDpDUDAzMDNdIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52Ojc2NCBDb21waWxlIG1vZHVsZSAid29ya0BIQUxGX0FEREVSIi4KK1tJTkZPIDpDUDAzMDNdIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52Ojc2NSBDb21waWxlIG1vZHVsZSAid29ya0BIQUxGX0FEREVSIi4KIAogW0lORk8gOkNQMDMwM10gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6MTYzMSBDb21waWxlIG1vZHVsZSAid29ya0BJTlZCTE9DSyIuCiAKIFtJTkZPIDpDUDAzMDNdIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52OjIzNDMgQ29tcGlsZSBtb2R1bGUgIndvcmtATVVMVElQTElFUl8zM18zMiIuCiAKLVtJTkZPIDpDUDAzMDNdIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52Ojc4IENvbXBpbGUgbW9kdWxlICJ3b3JrQFBQX0hJR0giLgorW0lORk8gOkNQMDMwM10gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6NzkgQ29tcGlsZSBtb2R1bGUgIndvcmtAUFBfSElHSCIuCiAKLVtJTkZPIDpDUDAzMDNdIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52OjUzIENvbXBpbGUgbW9kdWxlICJ3b3JrQFBQX0xPVyIuCitbSU5GTyA6Q1AwMzAzXSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo1NCBDb21waWxlIG1vZHVsZSAid29ya0BQUF9MT1ciLgogCi1bSU5GTyA6Q1AwMzAzXSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo2NCBDb21waWxlIG1vZHVsZSAid29ya0BQUF9NSURETEUiLgorW0lORk8gOkNQMDMwM10gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6NjUgQ29tcGlsZSBtb2R1bGUgIndvcmtAUFBfTUlERExFIi4KIAogW0lORk8gOkNQMDMwM10gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6MTcwNiBDb21waWxlIG1vZHVsZSAid29ya0BQUkVTVEFHRV82NCIuCiAKLVtJTkZPIDpDUDAzMDNdIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52OjkwIENvbXBpbGUgbW9kdWxlICJ3b3JrQFJfR0FURSIuCitbSU5GTyA6Q1AwMzAzXSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo5MSBDb21waWxlIG1vZHVsZSAid29ya0BSX0dBVEUiLgogCiBbSU5GTyA6Q1AwMzAzXSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo3OTMgQ29tcGlsZSBtb2R1bGUgIndvcmtAV0FMTEFDRV8zM18zMiIuCiAKQEAgLTIyNSw3ICsyMjUsNyBAQAogCiBbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjoxNjk2IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJHT1VUIi4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6MTE0IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJTVU1NQU5EIi4KK1tOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52OjExNSBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiU1VNTUFORCIuCiAKIFtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52OjIzMjYgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgIlNVTSIsCiB0aGVyZSBhcmUgMSBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCkBAIC0yNTEsMjkgKzI1MSwyOSBAQAogW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6MjE1MSBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiUE9VVCIsCiB0aGVyZSBhcmUgMSBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52Ojk5IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJUV09QT1MiLAorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6MTAwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJUV09QT1MiLAogdGhlcmUgYXJlIDMgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCi1bTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo3NzQgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgIkRPVVQiLgorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6Nzc1IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJET1VUIi4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6NzUxIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJTQVZFIiwKK1tOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52Ojc1MiBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiU0FWRSIsCiB0aGVyZSBhcmUgMSBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52Ojc2NCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiU0FWRSIsCitbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo3NjUgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgIlNBVkUiLAogdGhlcmUgYXJlIDEgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCiBbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjoxNjMxIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJHT1VUIi4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6NzggSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgIlBQQklUIi4KK1tOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52Ojc5IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJQUEJJVCIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52OjUzIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJQUEJJVCIuCitbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo1NCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiUFBCSVQiLgogCi1bTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo2NCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiUFBCSVQiLgorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6NjUgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgIlBQQklUIi4KIAogW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9hbXVsdHAyXzMyeDMyLnY6MTcwNiBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiUE9VVCIsCiB0aGVyZSBhcmUgMSBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfYW11bHRwMl8zMngzMi52OjkwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJQUEJJVCIuCitbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo5MSBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiUFBCSVQiLgogCiBbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX2FtdWx0cDJfMzJ4MzIudjo3OTMgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgIkNBUlJZIiwKIHRoZXJlIGFyZSAxIG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KQEAgLTI5NCw5ICsyOTQsOSBAQAogW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9kY19mc20udjo3MCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZGNyYW1fd2UiLAogdGhlcmUgYXJlIDEzIG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9kY19yYW0udjo2MSBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZGF0YW91dCIuCitbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX2RjX3JhbS52OjYyIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkYXRhb3V0Ii4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9kY190YWcudjo2MCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAidGFnX3YiLAorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9kY190YWcudjo2MSBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAidGFnX3YiLAogdGhlcmUgYXJlIDIgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCiBbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX2RjX3RvcC52OjY0IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkY3NiX2RhdF9vIiwKQEAgLTM1MCw5ICszNTAsOSBAQAogW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9pY19mc20udjo2NyBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAic2F2ZWRfYWRkciIsCiB0aGVyZSBhcmUgNyBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfaWNfcmFtLnY6NjIgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRhdGFvdXQiLgorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9pY19yYW0udjo2MyBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZGF0YW91dCIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfaWNfdGFnLnY6NjIgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgInRhZ192IiwKK1tOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfaWNfdGFnLnY6NjMgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgInRhZ192IiwKIHRoZXJlIGFyZSAxIG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KIAogW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9pY190b3Audjo2MCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiaWNiaXVfZGF0X28iLApAQCAtMzc5LDcgKzM3OSw3IEBACiBbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3BtLnY6NzYgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgInNwcl9kYXRfbyIsCiB0aGVyZSBhcmUgOSBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfcW1lbV90b3Audjo5MyBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAicW1lbWljcHVfZGF0X28iLAorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9xbWVtX3RvcC52Ojk0IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJxbWVtaWNwdV9kYXRfbyIsCiB0aGVyZSBhcmUgMjEgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCiBbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3JlZzJtZW0udjo4MCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAibWVtZGF0YSIuCkBAIC0zOTAsMzUgKzM5MCwzNSBAQAogW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zYi52OjYzIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkY3NiX2RhdF9vIiwKIHRoZXJlIGFyZSA5IG1vcmUgaW5zdGFuY2VzIG9mIHRoaXMgbWVzc2FnZS4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zcHJhbS52OjYyIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zcHJhbS52OjYzIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgogCi1bTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3NwcmFtXzEwMjR4MzIudjoxMjEgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCitbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3NwcmFtXzEwMjR4MzIudjoxMjIgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfc3ByYW1fMTAyNHgzMl9idy52OjkwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zcHJhbV8xMDI0eDMyX2J3LnY6OTEgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfc3ByYW1fMTAyNHg4LnY6MTE4IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zcHJhbV8xMDI0eDgudjoxMTkgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfc3ByYW1fMTI4eDMyLnY6ODUgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCitbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3NwcmFtXzEyOHgzMi52Ojg2IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgogCi1bTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3NwcmFtXzIwNDh4MzIudjoxMjEgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCitbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3NwcmFtXzIwNDh4MzIudjoxMjIgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfc3ByYW1fMjA0OHgzMl9idy52OjkzIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zcHJhbV8yMDQ4eDMyX2J3LnY6OTQgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfc3ByYW1fMjA0OHg4LnY6MTE4IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zcHJhbV8yMDQ4eDgudjoxMTkgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfc3ByYW1fMjU2eDIxLnY6MTI3IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zcHJhbV8yNTZ4MjEudjoxMjggSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfc3ByYW1fMzJfYncudjo2MyBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZG9xIi4KK1tOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfc3ByYW1fMzJfYncudjo2NCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZG9xIi4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zcHJhbV8zMngyNC52Ojg5IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zcHJhbV8zMngyNC52OjkwIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgogCi1bTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3NwcmFtXzUxMngyMC52OjEyNCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZG9xIi4KK1tOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfc3ByYW1fNTEyeDIwLnY6MTI1IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgogCi1bTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3NwcmFtXzY0eDE0LnY6MTE4IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgorW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zcHJhbV82NHgxNC52OjExOSBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZG9xIi4KIAotW05PVEUgOkNQMDMwOV0gcnRsL29yMTIwMF9zcHJhbV82NHgyMi52OjExOCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZG9xIi4KK1tOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfc3ByYW1fNjR4MjIudjoxMTkgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfc3ByYW1fNjR4MjQudjoxMjEgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImRvcSIuCitbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3NwcmFtXzY0eDI0LnY6MTIyIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3EiLgogCiBbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3NwcnMudjo1OCBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiZmxhZyIsCiB0aGVyZSBhcmUgMTMgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgpAQCAtNDMxLDcgKzQzMSw3IEBACiAKIFtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfdHQudjo1MyBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiaW50ciIuCiAKLVtOT1RFIDpDUDAzMDldIHJ0bC9vcjEyMDBfd2JfYml1LnY6NzEgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgImJpdV9kYXRfbyIsCitbTk9URSA6Q1AwMzA5XSBydGwvb3IxMjAwX3diX2JpdS52Ojc0IEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJiaXVfZGF0X28iLAogdGhlcmUgYXJlIDIgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCiBbSU5GTyA6RUwwNTI2XSBEZXNpZ24gRWxhYm9yYXRpb24uLi4KZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzT2xkVGVzdHMvc2FzYy9Zb3N5c09sZFNhc2MubG9nIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9zYXNjL1lvc3lzT2xkU2FzYy5sb2cKaW5kZXggZDkzMTM3Zi4uN2ZjMDEwNyAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9zYXNjL1lvc3lzT2xkU2FzYy5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9zYXNjL1lvc3lzT2xkU2FzYy5sb2cKQEAgLTEsMjIgKzEsMTYgQEAKLVtJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzT2xkU2FzYy9zbHBwX3VuaXQvc3VyZWxvZy5sb2cuCitbSU5GTyA6Q00wMDIzXSBDcmVhdGluZyBsb2cgZmlsZSAuLi8uLi8uLi8uLi9idWlsZC90ZXN0cy9Zb3N5c09sZFNhc2Mvc2xwcF91bml0L3N1cmVsb2cubG9nLgogCiBbSU5GTyA6Q00wMDIwXSBTZXBhcmF0ZSBjb21waWxhdGlvbi11bml0IG1vZGUgaXMgb24uCiAKLVtFUlJPUjpQUDAxMDFdIHJ0bC9zYXNjX2JyZy52OjY2IENhbm5vdCBvcGVuIGluY2x1ZGUgZmlsZSAidGltZXNjYWxlLnYiLgotCi1bRVJST1I6UFAwMTAxXSBydGwvc2FzY190b3Audjo2MiBDYW5ub3Qgb3BlbiBpbmNsdWRlIGZpbGUgInRpbWVzY2FsZS52Ii4KLQotW0VSUk9SOlBQMDEwMV0gcnRsL3Nhc2NfZmlmbzQudjo2MCBDYW5ub3Qgb3BlbiBpbmNsdWRlIGZpbGUgInRpbWVzY2FsZS52Ii4KLQogW1dBUk5JOlBBMDIwNV0gY2FjaGUvc3ludGgudjoxIE5vIHRpbWVzY2FsZSBzZXQgZm9yICJzYXNjX2ZpZm80Ii4KIAogW1dBUk5JOlBBMDIwNV0gY2FjaGUvc3ludGgudjoyODIgTm8gdGltZXNjYWxlIHNldCBmb3IgInNhc2NfdG9wIi4KIAotW1dBUk5JOlBBMDIwNV0gdGltZXNjYWxlLnY6MjIgTm8gdGltZXNjYWxlIHNldCBmb3IgInNhc2NfYnJnIi4KK1tXQVJOSTpQQTAyMDVdIHJ0bC9zYXNjX2JyZy52Ojg3IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJzYXNjX2JyZyIuCiAKIFtJTkZPIDpDUDAzMDBdIENvbXBpbGF0aW9uLi4uCiAKLVtJTkZPIDpDUDAzMDNdIHRpbWVzY2FsZS52OjIyIENvbXBpbGUgbW9kdWxlICJ3b3JrQHNhc2NfYnJnIi4KK1tJTkZPIDpDUDAzMDNdIHJ0bC9zYXNjX2JyZy52Ojg3IENvbXBpbGUgbW9kdWxlICJ3b3JrQHNhc2NfYnJnIi4KIAogW0lORk8gOkNQMDMwM10gY2FjaGUvc3ludGgudjoxIENvbXBpbGUgbW9kdWxlICJ3b3JrQHNhc2NfZmlmbzQiLgogCkBAIC0zMiwxMiArMjYsMTIgQEAKIAogW05PVEUgOkVMMDUwM10gY2FjaGUvc3ludGgudjoyODIgVG9wIGxldmVsIG1vZHVsZSAid29ya0BzYXNjX3RvcCIuCiAKLVtOT1RFIDpFTDA1MDNdIHRpbWVzY2FsZS52OjIyIFRvcCBsZXZlbCBtb2R1bGUgIndvcmtAc2FzY19icmciLgorW05PVEUgOkVMMDUwM10gcnRsL3Nhc2NfYnJnLnY6ODcgVG9wIGxldmVsIG1vZHVsZSAid29ya0BzYXNjX2JyZyIuCiAKLVtXQVJOSTpFTDA1MDVdIHRpbWVzY2FsZS52OjMgTXVsdGlwbHkgZGVmaW5lZCBtb2R1bGUgIndvcmtAc2FzY19maWZvNCIsCitbV0FSTkk6RUwwNTA1XSBydGwvc2FzY19maWZvNC52OjYyIE11bHRpcGx5IGRlZmluZWQgbW9kdWxlICJ3b3JrQHNhc2NfZmlmbzQiLAogICAgICAgICAgICAgICAgY2FjaGUvc3ludGgudjoxIHByZXZpb3VzIGRlZmluaXRpb24uCiAKLVtXQVJOSTpFTDA1MDVdIHRpbWVzY2FsZS52OjExIE11bHRpcGx5IGRlZmluZWQgbW9kdWxlICJ3b3JrQHNhc2NfdG9wIiwKK1tXQVJOSTpFTDA1MDVdIHJ0bC9zYXNjX3RvcC52OjcyIE11bHRpcGx5IGRlZmluZWQgbW9kdWxlICJ3b3JrQHNhc2NfdG9wIiwKICAgICAgICAgICAgICAgIGNhY2hlL3N5bnRoLnY6MjgyIHByZXZpb3VzIGRlZmluaXRpb24uCiAKIFtOT1RFIDpFTDA1MDRdIE11bHRpcGxlIHRvcCBsZXZlbCBtb2R1bGVzIGluIGRlc2lnbi4KQEAgLTUyLDcgKzQ2LDcgQEAKIAogWyAgRkFUQUxdIDogMAogWyBTWU5UQVhdIDogMAotWyAgRVJST1JdIDogMworWyAgRVJST1JdIDogMAogW1dBUk5JTkddIDogNQogWyAgIE5PVEVdIDogOQogCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c09sZFRlc3RzL3Nhc2MvWW9zeXNPbGRTYXNjLnNsIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9zYXNjL1lvc3lzT2xkU2FzYy5zbAppbmRleCAyM2JkNTY4Li5jY2U1NjdhIDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c09sZFRlc3RzL3Nhc2MvWW9zeXNPbGRTYXNjLnNsCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzT2xkVGVzdHMvc2FzYy9Zb3N5c09sZFNhc2Muc2wKQEAgLTEgKzEgQEAKLSAgLXdyaXRlcHAgLXBhcnNlICAgLW10ICBtYXggIC1ub3B5dGhvbiAtZmlsZXVuaXQgICovKi52ICtpbmNkaXIrLiAtbm9idWlsdGluIC1ub2NhY2hlCisgIC13cml0ZXBwIC1wYXJzZSAgIC1tdCAgbWF4ICAtbm9weXRob24gLWZpbGV1bml0ICAqLyoudiAraW5jZGlyKy4rcnRsIC1ub2J1aWx0aW4gLW5vY2FjaGUKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzT2xkVGVzdHMvc3NfcGNtL1lvc3lzT2xkU3NQY20ubG9nIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9zc19wY20vWW9zeXNPbGRTc1BjbS5sb2cKaW5kZXggMTM4NmE2My4uZmVmOGVjYyAxMDA2NDQKLS0tIGEvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9zc19wY20vWW9zeXNPbGRTc1BjbS5sb2cKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9zc19wY20vWW9zeXNPbGRTc1BjbS5sb2cKQEAgLTEsMjMgKzEsMTkgQEAKLVtJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzT2xkU3NQY20vc2xwcF91bml0L3N1cmVsb2cubG9nLgorW0lORk8gOkNNMDAyM10gQ3JlYXRpbmcgbG9nIGZpbGUgLi4vLi4vLi4vLi4vYnVpbGQvdGVzdHMvWW9zeXNPbGRTc1BjbS9zbHBwX3VuaXQvc3VyZWxvZy5sb2cuCiAKIFtJTkZPIDpDTTAwMjBdIFNlcGFyYXRlIGNvbXBpbGF0aW9uLXVuaXQgbW9kZSBpcyBvbi4KIAotW0VSUk9SOlBQMDEwMV0gcnRsL3BjbV9zbHZfdG9wLnY6NjUgQ2Fubm90IG9wZW4gaW5jbHVkZSBmaWxlICJ0aW1lc2NhbGUudiIuCi0KLVtXQVJOSTpQQTAyMDVdIGNhY2hlL3N5bnRoLnY6MSBObyB0aW1lc2NhbGUgc2V0IGZvciAicGNtX3Nsdl90b3AiLgorW1dBUk5JOlBBMDIwNV0gcnRsL3BjbV9zbHZfdG9wLnY6NzUgTm8gdGltZXNjYWxlIHNldCBmb3IgInBjbV9zbHZfdG9wIi4KIAogW0lORk8gOkNQMDMwMF0gQ29tcGlsYXRpb24uLi4KIAotW0lORk8gOkNQMDMwM10gY2FjaGUvc3ludGgudjoxIENvbXBpbGUgbW9kdWxlICJ3b3JrQHBjbV9zbHZfdG9wIi4KK1tJTkZPIDpDUDAzMDNdIHJ0bC9wY21fc2x2X3RvcC52Ojc1IENvbXBpbGUgbW9kdWxlICJ3b3JrQHBjbV9zbHZfdG9wIi4KIAotW05PVEUgOkNQMDMwOV0gY2FjaGUvc3ludGgudjoxIEltcGxpY2l0IHBvcnQgdHlwZSAod2lyZSkgZm9yICJkb3V0X28iLgorW05PVEUgOkNQMDMwOV0gcnRsL3BjbV9zbHZfdG9wLnY6ODAgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgInBjbV9kb3V0X28iLAordGhlcmUgYXJlIDEgbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCiBbSU5GTyA6RUwwNTI2XSBEZXNpZ24gRWxhYm9yYXRpb24uLi4KIAotW05PVEUgOkVMMDUwM10gY2FjaGUvc3ludGgudjoxIFRvcCBsZXZlbCBtb2R1bGUgIndvcmtAcGNtX3Nsdl90b3AiLgotCi1bV0FSTkk6RUwwNTA1XSB0aW1lc2NhbGUudjoxMSBNdWx0aXBseSBkZWZpbmVkIG1vZHVsZSAid29ya0BwY21fc2x2X3RvcCIsCi0gICAgICAgICAgICAgICBjYWNoZS9zeW50aC52OjEgcHJldmlvdXMgZGVmaW5pdGlvbi4KK1tOT1RFIDpFTDA1MDNdIHJ0bC9wY21fc2x2X3RvcC52Ojc1IFRvcCBsZXZlbCBtb2R1bGUgIndvcmtAcGNtX3Nsdl90b3AiLgogCiBbTk9URSA6RUwwNTA4XSBOYiBUb3AgbGV2ZWwgbW9kdWxlczogMS4KIApAQCAtMjksNyArMjUsNyBAQAogCiBbICBGQVRBTF0gOiAwCiBbIFNZTlRBWF0gOiAwCi1bICBFUlJPUl0gOiAxCi1bV0FSTklOR10gOiAyCitbICBFUlJPUl0gOiAwCitbV0FSTklOR10gOiAxCiBbICAgTk9URV0gOiA2CiAKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzT2xkVGVzdHMvc3NfcGNtL1lvc3lzT2xkU3NQY20uc2wgYi90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c09sZFRlc3RzL3NzX3BjbS9Zb3N5c09sZFNzUGNtLnNsCmluZGV4IDIzYmQ1NjguLjFkODM0YTEgMTAwNjQ0Ci0tLSBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzT2xkVGVzdHMvc3NfcGNtL1lvc3lzT2xkU3NQY20uc2wKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy9zc19wY20vWW9zeXNPbGRTc1BjbS5zbApAQCAtMSArMSBAQAotICAtd3JpdGVwcCAtcGFyc2UgICAtbXQgIG1heCAgLW5vcHl0aG9uIC1maWxldW5pdCAgKi8qLnYgK2luY2RpcisuIC1ub2J1aWx0aW4gLW5vY2FjaGUKKyAtd3JpdGVwcCAtcGFyc2UgLW5vcHl0aG9uIC1maWxldW5pdCBydGwvcGNtX3Nsdl90b3AudiAraW5jZGlyK3J0bC8rLiAtbm9idWlsdGluIC1ub2NhY2hlCmRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c09sZFRlc3RzL3VzYl9waHkvWW9zeXNPbGRVc2IubG9nIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy91c2JfcGh5L1lvc3lzT2xkVXNiLmxvZwppbmRleCAzYzIzNjU1Li41NTFhMTY4IDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c09sZFRlc3RzL3VzYl9waHkvWW9zeXNPbGRVc2IubG9nCisrKyBiL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzT2xkVGVzdHMvdXNiX3BoeS9Zb3N5c09sZFVzYi5sb2cKQEAgLTEsNDQgKzEsMzAgQEAKLVtJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzT2xkVXNiL3NscHBfdW5pdC9zdXJlbG9nLmxvZy4KK1tJTkZPIDpDTTAwMjNdIENyZWF0aW5nIGxvZyBmaWxlIC4uLy4uLy4uLy4uL2J1aWxkL3Rlc3RzL1lvc3lzT2xkVXNiL3NscHBfYWxsL3N1cmVsb2cubG9nLgogCi1bSU5GTyA6Q00wMDIwXSBTZXBhcmF0ZSBjb21waWxhdGlvbi11bml0IG1vZGUgaXMgb24uCi0KLVtFUlJPUjpQUDAxMDFdIHJ0bC91c2JfcnhfcGh5LnY6NzcgQ2Fubm90IG9wZW4gaW5jbHVkZSBmaWxlICJ0aW1lc2NhbGUudiIuCi0KLVtFUlJPUjpQUDAxMDFdIHJ0bC91c2JfdHhfcGh5LnY6NzUgQ2Fubm90IG9wZW4gaW5jbHVkZSBmaWxlICJ0aW1lc2NhbGUudiIuCi0KLVtFUlJPUjpQUDAxMDFdIHJ0bC91c2JfcGh5LnY6NzUgQ2Fubm90IG9wZW4gaW5jbHVkZSBmaWxlICJ0aW1lc2NhbGUudiIuCi0KLVtXQVJOSTpQQTAyMDVdIGNhY2hlL3N5bnRoLnY6MSBObyB0aW1lc2NhbGUgc2V0IGZvciAidXNiX3BoeSIuCi0KLVtXQVJOSTpQQTAyMDVdIGNhY2hlL3N5bnRoLnY6MTA5IE5vIHRpbWVzY2FsZSBzZXQgZm9yICJ1c2JfcnhfcGh5Ii4KLQotW1dBUk5JOlBBMDIwNV0gY2FjaGUvc3ludGgudjo2NDUgTm8gdGltZXNjYWxlIHNldCBmb3IgInVzYl90eF9waHkiLgorW1dBUk5JOlBBMDIwNV0gcnRsL3VzYl9waHkudjo3NiBObyB0aW1lc2NhbGUgc2V0IGZvciAidXNiX3BoeSIuCiAKIFtJTkZPIDpDUDAzMDBdIENvbXBpbGF0aW9uLi4uCiAKLVtJTkZPIDpDUDAzMDNdIGNhY2hlL3N5bnRoLnY6MSBDb21waWxlIG1vZHVsZSAid29ya0B1c2JfcGh5Ii4KK1tJTkZPIDpDUDAzMDNdIHJ0bC91c2JfcGh5LnY6NzYgQ29tcGlsZSBtb2R1bGUgIndvcmtAdXNiX3BoeSIuCiAKLVtJTkZPIDpDUDAzMDNdIGNhY2hlL3N5bnRoLnY6MTA5IENvbXBpbGUgbW9kdWxlICJ3b3JrQHVzYl9yeF9waHkiLgorW0lORk8gOkNQMDMwM10gcnRsL3VzYl9yeF9waHkudjo3OCBDb21waWxlIG1vZHVsZSAid29ya0B1c2JfcnhfcGh5Ii4KIAotW0lORk8gOkNQMDMwM10gY2FjaGUvc3ludGgudjo2NDUgQ29tcGlsZSBtb2R1bGUgIndvcmtAdXNiX3R4X3BoeSIuCitbSU5GTyA6Q1AwMzAzXSBydGwvdXNiX3R4X3BoeS52Ojc2IENvbXBpbGUgbW9kdWxlICJ3b3JrQHVzYl90eF9waHkiLgogCi1bTk9URSA6Q1AwMzA5XSBjYWNoZS9zeW50aC52OjEgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgInR4ZHAiLAorW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo0IENvbXBpbGUgY2xhc3MgIndvcmtAbWFpbGJveCIuCisKK1tJTkZPIDpDUDAzMDJdIGJ1aWx0aW4uc3Y6MzMgQ29tcGlsZSBjbGFzcyAid29ya0Bwcm9jZXNzIi4KKworW0lORk8gOkNQMDMwMl0gYnVpbHRpbi5zdjo1OCBDb21waWxlIGNsYXNzICJ3b3JrQHNlbWFwaG9yZSIuCisKK1tOT1RFIDpDUDAzMDldIHJ0bC91c2JfcGh5LnY6NzkgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgInR4ZHAiLAogdGhlcmUgYXJlIDggbW9yZSBpbnN0YW5jZXMgb2YgdGhpcyBtZXNzYWdlLgogCi1bTk9URSA6Q1AwMzA5XSBjYWNoZS9zeW50aC52OjEwOSBJbXBsaWNpdCBwb3J0IHR5cGUgKHdpcmUpIGZvciAiUnhFcnJvcl9vIi4KK1tOT1RFIDpDUDAzMDldIHJ0bC91c2JfcnhfcGh5LnY6ODQgSW1wbGljaXQgcG9ydCB0eXBlICh3aXJlKSBmb3IgIlJ4VmFsaWRfbyIsCit0aGVyZSBhcmUgNCBtb3JlIGluc3RhbmNlcyBvZiB0aGlzIG1lc3NhZ2UuCiAKIFtJTkZPIDpFTDA1MjZdIERlc2lnbiBFbGFib3JhdGlvbi4uLgogCi1bTk9URSA6RUwwNTAzXSBjYWNoZS9zeW50aC52OjEgVG9wIGxldmVsIG1vZHVsZSAid29ya0B1c2JfcGh5Ii4KLQotW1dBUk5JOkVMMDUwNV0gdGltZXNjYWxlLnY6MiBNdWx0aXBseSBkZWZpbmVkIG1vZHVsZSAid29ya0B1c2JfcGh5IiwKLSAgICAgICAgICAgICAgIGNhY2hlL3N5bnRoLnY6MSBwcmV2aW91cyBkZWZpbml0aW9uLgotCi1bV0FSTkk6RUwwNTA1XSB0aW1lc2NhbGUudjoyIE11bHRpcGx5IGRlZmluZWQgbW9kdWxlICJ3b3JrQHVzYl9yeF9waHkiLAotICAgICAgICAgICAgICAgY2FjaGUvc3ludGgudjoxMDkgcHJldmlvdXMgZGVmaW5pdGlvbi4KLQotW1dBUk5JOkVMMDUwNV0gdGltZXNjYWxlLnY6MiBNdWx0aXBseSBkZWZpbmVkIG1vZHVsZSAid29ya0B1c2JfdHhfcGh5IiwKLSAgICAgICAgICAgICAgIGNhY2hlL3N5bnRoLnY6NjQ1IHByZXZpb3VzIGRlZmluaXRpb24uCitbTk9URSA6RUwwNTAzXSBydGwvdXNiX3BoeS52Ojc2IFRvcCBsZXZlbCBtb2R1bGUgIndvcmtAdXNiX3BoeSIuCiAKIFtOT1RFIDpFTDA1MDhdIE5iIFRvcCBsZXZlbCBtb2R1bGVzOiAxLgogCkBAIC00NiwxMSArMzIsMTEgQEAKIAogW05PVEUgOkVMMDUxMF0gTmIgaW5zdGFuY2VzOiAzLgogCi1bTk9URSA6RUwwNTExXSBOYiBsZWFmIGluc3RhbmNlczogMi4KK1tOT1RFIDpFTDA1MTFdIE5iIGxlYWYgaW5zdGFuY2VzOiAwLgogCiBbICBGQVRBTF0gOiAwCiBbIFNZTlRBWF0gOiAwCi1bICBFUlJPUl0gOiAzCi1bV0FSTklOR10gOiA2CitbICBFUlJPUl0gOiAwCitbV0FSTklOR10gOiAxCiBbICAgTk9URV0gOiA3CiAKZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzT2xkVGVzdHMvdXNiX3BoeS9Zb3N5c09sZFVzYi5zbCBiL3RoaXJkX3BhcnR5L3Rlc3RzL1lvc3lzT2xkVGVzdHMvdXNiX3BoeS9Zb3N5c09sZFVzYi5zbAppbmRleCAyM2JkNTY4Li40MGMxYTY3IDEwMDY0NAotLS0gYS90aGlyZF9wYXJ0eS90ZXN0cy9Zb3N5c09sZFRlc3RzL3VzYl9waHkvWW9zeXNPbGRVc2Iuc2wKKysrIGIvdGhpcmRfcGFydHkvdGVzdHMvWW9zeXNPbGRUZXN0cy91c2JfcGh5L1lvc3lzT2xkVXNiLnNsCkBAIC0xICsxIEBACi0gIC13cml0ZXBwIC1wYXJzZSAgIC1tdCAgbWF4ICAtbm9weXRob24gLWZpbGV1bml0ICAqLyoudiAraW5jZGlyKy4gLW5vYnVpbHRpbiAtbm9jYWNoZQorIC13cml0ZXBwIC1wYXJzZSAtbXQgbWF4IHJ0bC91c2JfcGh5LnYgcnRsL3VzYl9yeF9waHkudiBydGwvdXNiX3R4X3BoeS52ICAraW5jZGlyKy4rLi9ydGwgCg==