From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Michal Kolar To: git-commits@fedoraproject.org Subject: [rpms/gdb] f43: Rebase to FSF GDB 17.2. Date: Sat, 04 Jul 2026 02:18:50 GMT Message-ID: <178313153013.1.7503277687742697654.rpms-gdb-9fd49f667f95@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: f43 X-Git-Rev: 9fd49f667f9500c652fcd0fee98ff78caa1ad13e ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGY0MwogICAgICAgICAgICBDb21t aXQgOiA5ZmQ0OWY2NjdmOTUwMGM2NTJmY2QwZmVlOThmZjc4Y2FhMWFkMTNlCiAgICAgICAgICAg IEF1dGhvciA6IE1pY2hhbCBLb2xhciA8bWtvbGFyQHJlZGhhdC5jb20+CiAgICAgICAgICAgIERh dGUgICA6IDIwMjYtMDctMDNUMjA6NDc6NDIrMDA6MDAKICAgICAgICAgICAgU3RhdHMgIDogKzI5 ODUvLTE2MCBpbiAxMCBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZl ZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvOWZkNDlmNjY3Zjk1MDBjNjUyZmNkMGZlZTk4ZmY3 OGNhYTFhZDEzZT9icmFuY2g9ZjQzCgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIFJlYmFz ZSB0byBGU0YgR0RCIDE3LjIuCgpEZWxldGVkOiBnZGItcmhiejI0MzU5NTAtc2tpcC1yZXZlcnQu cGF0Y2gKCkJhY2twb3J0IGU0OTJmYjIyYjcwLCBnZGI6IGJhY2twb3J0IERBUCBjb3JlIGZpbGUg c3VwcG9ydAoKUmVwbGFjZSBtYW51YWwsIG11bHRpLWZpbGUgcGF0Y2ggaW5jbHVzaW9uIHdpdGgg bW9kZXJuIGF1dG9zZXR1cAoKQWRkIHJwbWluc3BlY3QueWFtbCB0byBkZWZpbmUgcGFja2FnZS1z cGVjaWZpYyB0ZXN0aW5nIHBvbGljeQoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdp dGlnbm9yZQppbmRleCBjYTI1Y2NiLi5lNjlhNWZiIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisr KyBiLy5naXRpZ25vcmUKQEAgLTEsNCArMSw0IEBACiAvbmV3LWZlZG9yYS1yZWxlYXNlCiAvZ2Ri LWxpYnN0ZGMrKy12My1weXRob24tOC4xLjEtMjAxODA2MjYudGFyLnh6CiAvdjIuMC41LnRhci5n egotL2dkYi0xNy4xLnRhci54egorL2dkYi0xNy4yLnRhci54egoKZGlmZiAtLWdpdCBhL19nZGIu c3BlYy5QYXRjaC5pbmNsdWRlIGIvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKaW5kZXggNmU2ZDU1 Ny4uMDI0NjYwNyAxMDA2NDQKLS0tIGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKKysrIGIvX2dk Yi5zcGVjLlBhdGNoLmluY2x1ZGUKQEAgLTI4LDMwICsyOCwzMCBAQCBQYXRjaDAwNDogZ2RiLWJh Y2twb3J0LXRvbS0zMjY4OC10aHJlYWQtc3BlY2lmaWMtYnAtZml4LnBhdGNoCiAjIHdoZW4gYmFj a3BvcnRpbmcgdGhpcyBmaXguCiBQYXRjaDAwNTogZ2RiLXJoYnoyNDAzNTgwLW1pc3BsYWNlZC1z eW10YWJzLnBhdGNoCiAKLSMgQmFja3BvcnQgb2YgdXBzdHJlYW0gY29tbWl0IGYwOGZmYmJmMjY5 MWJhZDJkNWRmNjYwZWU2NDQ2NDc2ODc3NzVmMGMKLSMgQ2FuIGJlIGRyb3BwZWQgb24gYSByZWJh c2UgdG8gZ2RiIDE3LjIgb3IgMTguMQotUGF0Y2gwMDY6IGdkYi1yaGJ6MjQzNTk1MC1za2lwLXJl dmVydC5wYXRjaAotCiAjIEJhY2twb3J0IG9mIHVwc3RyZWFtIGNvbW1pdCBjMWRhMDEzOTE1ZSBm cm9tIEtldmluIEJ1ZXR0bmVyCiAjIChSSEJaIDI0MTM0MDUpLgotUGF0Y2gwMDc6IGdkYi1yaGJ6 MjQxMzQwNS1nY29yZS11bnJlYWRhYmxlLXBhZ2VzLnBhdGNoCitQYXRjaDAwNjogZ2RiLXJoYnoy NDEzNDA1LWdjb3JlLXVucmVhZGFibGUtcGFnZXMucGF0Y2gKIAogIyBCYWNrcG9ydCBvZiB1cHN0 cmVhbSBjb21taXQgZDJjYzE2Y2Q3ZmMgZnJvbSBKYW4gVnJhbnkgZml4aW5nCiAjIEZBSUxzIGlu IGdkYi5iYXNlL2ZpbGVpby5leHAgY2F1c2VkIGJ5IG1hY3JvIGV4cGFuc2lvbiBvZgogIyBwYXRo IGNvbXBvbmVudHMgaW4gT1VURElSLgotUGF0Y2gwMDg6IGdkYi1maWxlaW8tdGVzdC1maXhlcy5w YXRjaAorUGF0Y2gwMDc6IGdkYi1maWxlaW8tdGVzdC1maXhlcy5wYXRjaAogCiAjIEJhY2twb3J0 IHVwc3RyZWFtIGNvbW1pdCA4YmQwOGVlOTJjNCB0byBhZGRyZXNzIHJoYnoyMzY2NDYxLiAgVGhp cwogIyBjb21taXQgd2lsbCBkcm9wIG91dCB3aXRoIEdEQiAxOC4KLVBhdGNoMDA5OiBnZGItcmhi ejIzNjY0NjEtbWlzc2luZy10aHJlYWQucGF0Y2gKK1BhdGNoMDA4OiBnZGItcmhiejIzNjY0NjEt bWlzc2luZy10aHJlYWQucGF0Y2gKIAogIyBCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgY2QyODlk ZjA2OGUgdG8gYWRkcmVzcyByaGJ6MjM2NjQ2MS4gIFRoaXMKICMgY29tbWl0IHdpbGwgZHJvcCBv dXQgd2l0aCBHREIgMTguCi1QYXRjaDAxMDogZ2RiLXJoYnoyMzY2NDYxLWJhZC1zb2xpYi1lbnRy eS1hZGRyLnBhdGNoCitQYXRjaDAwOTogZ2RiLXJoYnoyMzY2NDYxLWJhZC1zb2xpYi1lbnRyeS1h ZGRyLnBhdGNoCiAKICMgQmFja3BvcnQgdGhlIGZvbGxvd2luZyB1cHN0cmVhbSBjb21taXRzIGlu IG9yZGVyIHRvIGFkZHJlc3MgUkhCWgogIyAyNDY3MjUxOiBkOTgwMzE3YzdmMSwgOTU4ZDA2MjYy YTcsIDdkMWQ3Mzg2NTYxLCA4OTE1ZGUwODgzYywKICMgOGY2NWFiN2I3MWYuICBUaGVzZSBjb21t aXRzIHdpbGwgYWxsIGRyb3Agb3V0IHdoZW4gd2UgcmViYXNlIHRvIEdEQgogIyAxOC4KLVBhdGNo MDExOiBnZGItcmhiejI0NjcyNTEtY29tcHV0ZWQtbG9jYXRpb24tc3ludGhldGljLXBvaW50ZXJz LnBhdGNoCitQYXRjaDAxMDogZ2RiLXJoYnoyNDY3MjUxLWNvbXB1dGVkLWxvY2F0aW9uLXN5bnRo ZXRpYy1wb2ludGVycy5wYXRjaAorCisjIEJhY2twb3J0IG9mIHVwc3RyZWFtIGNvbW1pdCBlNDky ZmIyMmI3MAorIyBnZGI6IGJhY2twb3J0IERBUCBjb3JlIGZpbGUgc3VwcG9ydAorUGF0Y2gwMTE6 IGdkYi1iYWNrcG9ydC1kYXAtY29yZS1maWxlLXN1cHBvcnQucGF0Y2gKIAoKZGlmZiAtLWdpdCBh L19naXRfdXBzdHJlYW1fY29tbWl0IGIvX2dpdF91cHN0cmVhbV9jb21taXQKaW5kZXggNDUyY2E1 My4uZGE0YzkyZSAxMDA2NDQKLS0tIGEvX2dpdF91cHN0cmVhbV9jb21taXQKKysrIGIvX2dpdF91 cHN0cmVhbV9jb21taXQKQEAgLTEgKzEgQEAKLTYzMWE0OWM0NTJhNGE0NTZkZDk4ODlkMTcyNTQx ZWE3ODlmOGJjYWUKKzdhZGY5ZmE2YjFjY2IzYzcwZjg2Y2I2MzAzNjhiOWQzZGZmY2YzYWEKCmRp ZmYgLS1naXQgYS9fcGF0Y2hfb3JkZXIgYi9fcGF0Y2hfb3JkZXIKaW5kZXggNTg4NDJjZi4uMzBi NDk3NSAxMDA2NDQKLS0tIGEvX3BhdGNoX29yZGVyCisrKyBiL19wYXRjaF9vcmRlcgpAQCAtMyw5 ICszLDkgQEAgZ2RiLWFkZC1pbmRleC5wYXRjaAogZ2RiLXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5w YXRjaAogZ2RiLWJhY2twb3J0LXRvbS0zMjY4OC10aHJlYWQtc3BlY2lmaWMtYnAtZml4LnBhdGNo CiBnZGItcmhiejI0MDM1ODAtbWlzcGxhY2VkLXN5bXRhYnMucGF0Y2gKLWdkYi1yaGJ6MjQzNTk1 MC1za2lwLXJldmVydC5wYXRjaAogZ2RiLXJoYnoyNDEzNDA1LWdjb3JlLXVucmVhZGFibGUtcGFn ZXMucGF0Y2gKIGdkYi1maWxlaW8tdGVzdC1maXhlcy5wYXRjaAogZ2RiLXJoYnoyMzY2NDYxLW1p c3NpbmctdGhyZWFkLnBhdGNoCiBnZGItcmhiejIzNjY0NjEtYmFkLXNvbGliLWVudHJ5LWFkZHIu cGF0Y2gKIGdkYi1yaGJ6MjQ2NzI1MS1jb21wdXRlZC1sb2NhdGlvbi1zeW50aGV0aWMtcG9pbnRl cnMucGF0Y2gKK2dkYi1iYWNrcG9ydC1kYXAtY29yZS1maWxlLXN1cHBvcnQucGF0Y2gKCmRpZmYg LS1naXQgYS9nZGItYmFja3BvcnQtZGFwLWNvcmUtZmlsZS1zdXBwb3J0LnBhdGNoIGIvZ2RiLWJh Y2twb3J0LWRhcC1jb3JlLWZpbGUtc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4yYmY1YjBiCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJhY2twb3J0LWRh cC1jb3JlLWZpbGUtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDI5NTYgQEAKK0Zyb20gRkVET1JB X1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWwgS29sYXIgPG1r b2xhckByZWRoYXQuY29tPgorRGF0ZTogRnJpLCAzIEp1bCAyMDI2IDIyOjE4OjMyICswMjAwCitT dWJqZWN0OiBnZGItYmFja3BvcnQtZGFwLWNvcmUtZmlsZS1zdXBwb3J0LnBhdGNoCisKKzs7IEJh Y2twb3J0IG9mIHVwc3RyZWFtIGNvbW1pdCBlNDkyZmIyMmI3MAorOzsgZ2RiOiBiYWNrcG9ydCBE QVAgY29yZSBmaWxlIHN1cHBvcnQKKworQmFjay1wb3J0IHRoZSBmb2xsb3dpbmcgdXBzdHJlYW0g Y29tbWl0cyB0byBlbmFibGUgY29yZSBmaWxlIHN1cHBvcnQKK3dpdGhpbiBHREIncyBEQVAgcHJv dG9jb2wgaW1wbGVtZW50YXRpb246CisKKyAgKiAwYTQ4MWJiOWE2ZCBnZGIvZGFwOiBhZGQgc3Vw cG9ydCBmb3Igb3BlbmluZyBjb3JlIGZpbGVzCisgICogNGVjYWFjMzljMjYgZ2RiL3B5dGhvbjog bmV3IGV2ZW50cy5jb3JlZmlsZV9jaGFuZ2VkIGV2ZW50CisgICogZWNhYzQyYWY3MzUgQWx3YXlz IHByb3BhZ2F0ZSBleGNlcHRpb25zIGluIERBUAorICAqIGZjOGU1YTU2NWIzIGdkYjogbWFrZSBz dHJ1Y3R1cmVkIGNvcmUgZmlsZSBtYXBwaW5ncyBwcm9jZXNzaW5nIGdsb2JhbAorICAqIGY2OWMx ZDAzYzRkIGdkYi9weXRob246IGFkZCBDb3JlZmlsZS5tYXBwZWRfZmlsZXMgbWV0aG9kCisgICog Nzg2MjU1NGJjZjQgZ2RiL3B5dGhvbjogaW50cm9kdWNlIGdkYi5Db3JlZmlsZSBBUEkKKworVGhl IGNvbW1pdCBtZXNzYWdlcyBmb3IgZWFjaCBpbmRpdmlkdWFsIGNvbW1pdCBmb2xsb3c6CisKKy0t LSAwYTQ4MWJiOWE2ZDoKKworZ2RiL2RhcDogYWRkIHN1cHBvcnQgZm9yIG9wZW5pbmcgY29yZSBm aWxlcworCitUaGlzIHBhdGNoIGFkZHMgY29yZSBmaWxlIHN1cHBvcnQgdG8gR0RCJ3MgREFQIGlu dGVyZmFjZS4KKworQ29yZSBmaWxlcyBhcmUgc3VwcG9ydGVkIGFzIGEgR0RCIHNwZWNpZmljIGFy Z3VtZW50IHRvICdhdHRhY2gnLCB0aGUKK25ldyBhcmd1bWVudCBpcyAnY29yZUZpbGUnLCB0aGUg bmFtZSBvZiB0aGUgY29yZSBmaWxlIHRvIGRlYnVnLgorCitJIHRoaW5rIGhhbmRsaW5nIGNvcmUg ZmlsZXMgdmlhIGF0dGFjaCBtYWtlcyB0aGUgbW9zdCBzZW5zZTsgYXR0YWNoIGlzCitmb3IgY29u bmVjdGluZyB0byBleGlzdGluZyBwcm9jZXNzZXMsIGJ1dCB0aGVzZSB0YXJnZXRzIGFyZSAodXN1 YWxseSkKK3N0b3BwZWQgYXMgc29vbiBhcyBHREIgYXR0YWNoZXMsIGFuZCB0aGF0J3Mgd2hhdCBh IGNvcmUgZmlsZSBsb29rcworbGlrZSwgYSB0YXJnZXQgdGhhdCB3YXMgcnVubmluZywgYnV0IGlz IG5vdyBzdG9wcGVkLiAgSXQganVzdCBoYXBwZW5zCit0aGF0IGNvcmUgZmlsZSB0YXJnZXRzIGFy ZSBzcGVjaWFsIGluIHRoYXQgdGhlIHRhcmdldCBjYW5ub3QgYmUKK3Jlc3VtZWQgYWdhaW4sIG5v ciBjYW4gdGhlIHVzZXIgbW9kaWZ5IHRoZSBwcm9ncmFtIHN0YXRlIChlLmcuIHdyaXRlCit0byBt ZW1vcnkgb3IgcmVnaXN0ZXJzKS4KKworUHJpb3IgdG8gc3RhcnRpbmcgdGhpcyB3b3JrIEkgdG9v ayBhIGxvb2sgYXQgd2hhdCBsbGRiIGRvZXMuICBUaGUKK2RvY3VtZW50YXRpb24gaXMgbm90IHN1 cGVyIGNsZWFyLCBidXQgdGhpcyBwYWdlIHNlZW1zIHRvIGluZGljYXRlIHRoYXQKK2xsZGIgbWln aHQgYWxzbyB1c2UgdGhlICdjb3JlRmlsZScgYXJndW1lbnQgdG8gJ2F0dGFjaCc6CisKKyAgaHR0 cHM6Ly9sbGRiLmxsdm0ub3JnL3VzZS9sbGRiZGFwLmh0bWwjY29uZmlndXJhdGlvbi1zZXR0aW5n cy1yZWZlcmVuY2UKKworTGlrZSBJIHNhaWQsIGl0J3Mgbm90IHZlcnkgY2xlYXIsIGJ1dCBzZWFy Y2ggZm9yICJjb3JlRmlsZSIgYW5kIHlvdSdsbAorc2VlIGl0IG1lbnRpb25lZCwganVzdCBvbmNl LCB1bmRlciB0aGUgImF0dGFjaCIgaGVhZGVyLiAgSW4gb3JkZXIgdG8KK2JlIGNvbXBhdGlibGUg d2l0aCBsbGRiIEkgdXNlZCB0aGUgc2FtZSBhcmd1bWVudCBuYW1lIHdpdGggdGhlIHNhbWUKK2Nh cGl0YWxpc2F0aW9uLgorCitUaGUgbmV3IGFyZ3VtZW50IGlzIGFkZGVkIHRvIHRoZSBkb2N1bWVu dGF0aW9uIGFuZCBtZW50aW9uZWQgaW4gTkVXUy4KKworSSBoYWQgdG8gbWFrZSBzb21lIGNoYW5n ZXMgdG8gdGVzdHN1aXRlL2xpYi9kYXAtc3VwcG9ydC5leHAgdG8gc3VwcG9ydAordGhpcyBuZXcg ZmVhdHVyZS4gIFRoZXJlJ3MgYSBuZXcgZGFwX2NvcmVmaWxlIHByb2MgdG8gaGFuZGxlIHNldHRp bmcKK3VwIHRoZSBpbml0aWFsIGNvbm5lY3Rpb24uICBUaGlzIHNlZW1lZCBjbGVhbmVyIHRoYXQg b3ZlcmxvYWRpbmcKK2RhcF9hdHRhY2gsIGV2ZW4gdGhvdWdoIHVuZGVyIHRoZSBob29kIGl0IGlz IHN0aWxsIGFuICdhdHRhY2gnIHJlcXVlc3QKK3RoYXQgZ2V0cyBzZW50LgorCitUaGUgbmV3IHRl c3QgdHJpZXMgdG8gd3JpdGUgdG8gbWVtb3J5IGFuZCByZWdpc3RlcnMgd2l0aCB0aGUgY29yZSBm aWxlCit0YXJnZXQgaW4gcGxhY2UsIG5laXRoZXIgb2YgdGhlc2UgcmVxdWVzdHMgc3VjY2VlZCwg d2hpY2ggaXMgd2hhdCB3ZQord2FudCwgYnV0IHRoZSBleGNlcHRpb25zIGFyZSBsb2dnZWQgaW50 byB0aGUgZGFwIGxvZyBmaWxlLiAgVGhlCitkYXBfc2h1dGRvd24gcHJvYyBjYWxscyBkYXBfY2hl Y2tfbG9nX2ZpbGUgdG8gY2hlY2sgdGhlIGxvZyBmb3IKK2V4Y2VwdGlvbnMsIGFuZCB0aGVzZSB0 d28gZXhjZXB0aW9ucyBhcmUgc3BvdHRlZCBhbmQgdHJpZ2dlciBhIEZBSUwuCitUbyBhdm9pZCB0 aGlzIEkndmUgYWRkZWQgYSBuZXcgImV4cGVjdGVkX2V4Y2VwdGlvbl9jb3VudCIgYXJndW1lbnQK K2ZvciBkYXBfc2h1dGRvd24uICBOb3cgd2UgY2hlY2sgdGhhdCB3ZSBzZWUgdGhlIGV4cGVjdGVk IG51bWJlciBvZgorZXhjZXB0aW9ucy4gIFdlIGRvbid0IGNoZWNrIGZvciB0aGUgc3BlY2lmaWMg ZXhjZXB0aW9uIHR5cGVzIHJpZ2h0Citub3csIGJ1dCBhcyB0aGUgdGVzdCBpcyBhbHJlYWR5IGNo ZWNraW5nIHRoYXQgdGhlIGV4cGVjdGVkIHJlcXVlc3RzCitmYWlsLCBJIHRoaW5rIHdlJ3JlIE9L LgorCitBcHByb3ZlZC1CeTogVG9tIFRyb21leSA8dG9tQHRyb21leS5jb20+CisKKy0tLSAgNGVj YWFjMzljMjY6CisKK2dkYi9weXRob246IG5ldyBldmVudHMuY29yZWZpbGVfY2hhbmdlZCBldmVu dAorCitBZGQgYSBuZXcgUHl0aG9uIGV2ZW50IHJlZ2lzdHJ5LCBldmVudHMuY29yZWZpbGVfY2hh bmdlZC4gIFRoaXMgZXZlbnQKK2lzIGVtaXR0ZWQgZWFjaCB0aW1lIHRoZSBjb3JlZmlsZSB3aXRo aW4gYW4gaW5mZXJpb3IgY2hhbmdlcy4KKworVGhlIGV2ZW50IG9iamVjdCBoYXMgYSBzaW5nbGUg J2luZmVyaW9yJyBhdHRyaWJ1dGUgd2hpY2ggaXMgdGhlCitnZGIuSW5mZXJpb3Igb2JqZWN0IGZv ciB3aGljaCB0aGUgY29yZSBmaWxlIGNoYW5nZWQuICBUaGUgdXNlciBjYW4KK3RoZW4gaW5zcGVj dCBJbmZlcmlvci5jb3JlZmlsZSB0byBzZWUgZGV0YWlscyBhYm91dCB0aGUgbmV3IGNvcmUgZmls ZSwKK29yIHRoaXMgd2lsbCBiZSBOb25lIGlmIHRoZSBjb3JlIGZpbGUgd2FzIHJlbW92ZWQgZnJv bSB0aGUgaW5mZXJpb3IuCisKK0kndmUgdXBkYXRlZCB0aGUgZXhpc3RpbmcgdGVzdCB0byBjb3Zl ciB0aGlzIG5ldyBldmVudC4KKworVGhlIG5ldyB0ZXN0IGNvdmVycyBib3RoIHRoZSBjb3JlZmls ZV9jaGFuZ2VkIGV2ZW50LCBidXQgYWxzbyBtb25pdG9ycwordGhlIGV4aXRlZCBldmVudC4gIFRo aXMgdGllcyBpbnRvIHRoZSB3b3JrIGRvbmUgaW4gdGhlIHByZXZpb3VzCitjb21taXQgd2hlcmUg d2UgdXNlIHdoZXRoZXIgdGhlIGluZmVyaW9yIGhhcyBleGl0ZWQgb3Igbm90IGFzIGEgZ3VhcmQK K2ZvciB3aGV0aGVyIGNvcmVfdGFyZ2V0OjpleGl0X2NvcmVfZmlsZV9pbmZlcmlvciBzaG91bGQg YmUgY2FsbGVkLgorVW5sb2FkaW5nIGEgY29yZSBmaWxlIHNob3VsZCByZXN1bHQgaW4gYSBzaW5n bGUgY29yZWZpbGVfY2hhbmdlZCBldmVudAorYW5kIGEgc2luZ2xlIGV4aXRlZCBldmVudC4KKwor UmV2aWV3ZWQtQnk6IEVsaSBaYXJldHNraWkgPGVsaXpAZ251Lm9yZz4KKworLS0tIGVjYWM0MmFm NzM1OgorCitBbHdheXMgcHJvcGFnYXRlIGV4Y2VwdGlvbnMgaW4gREFQCisKK1RoaXMgY2hhbmdl cyB0aGUgREFQIGV4ZWNfYW5kX2xvZyBmdW5jdGlvbiB0byBhbHdheXMgdHJhbnNmb3JtIGFuCitl eGNlcHRpb24gaW50byBhIERBUEV4Y2VwdGlvbiBhbmQgcHJvcGFnYXRlIGl0LgorCitBcyB0aGUg YnVnIHBvaW50cyBvdXQsIHdlIGhhdmVuJ3QgYWx3YXlzIHdyYXBwZWQgY2FsbHMgd2hlbgorYXBw cm9wcmlhdGUuICBJIHRoaW5rIGl0J3MgYmV0dGVyIHRvIGNhdXNlIHRoZSByZXF1ZXN0IHRvIGZh aWwgYnkKK2RlZmF1bHQ7IGlmIGFueSBzcG90IHRydWx5IG5lZWRzIHRvIGlnbm9yZSBlcnJvcnMs IHRoYXQgaXMgcmVhZGlseQorZG9uZSBhdCB0aGUgcG9pbnQgb2YgY2FsbC4KKworQnVnOiBodHRw czovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zMzM0NgorCistLS0g ZmM4ZTVhNTY1YjM6CisKK2dkYjogbWFrZSBzdHJ1Y3R1cmVkIGNvcmUgZmlsZSBtYXBwaW5ncyBw cm9jZXNzaW5nIGdsb2JhbAorCitJbiBjb3JlbG93LmMsIHdpdGhpbiBjb3JlX3RhcmdldDo6YnVp bGRfZmlsZV9tYXBwaW5ncywgd2UgaGF2ZSBjb2RlCit0aGF0IHdyYXBzIGFyb3VuZCBhIGNhbGwg dG8gZ2RiYXJjaF9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyBhbmQKK3Byb3ZpZGVzIG1vcmUgc3Ry dWN0dXJlIHRvIHRoZSByZXN1bHRzLgorCitTcGVjaWZpY2FsbHksIGdkYmFyY2hfcmVhZF9jb3Jl X2ZpbGVfbWFwcGluZ3MgY2FsbHMgYSBjYWxsYmFjayBvbmNlCitmb3IgZXZlcnkgcmVnaW9uIG9m IGV2ZXJ5IG1hcHBlZCBmaWxlLiAgVGhlIHdyYXBwZXIgY29kZSBncm91cHMgYWxsIG9mCit0aGUg bWFwcGluZ3MgZm9yIG9uZSBmaWxlIGludG8gYW4gaW5zdGFuY2Ugb2YgJ3N0cnVjdCBtYXBwZWRf ZmlsZScsCit0aGlzIGFsbG93cyBhbGwgb2YgdGhlIG1hcHBlZCByZWdpb25zIHRvIGJlIGFzc29j aWF0ZWQgd2l0aCB0aGUKK2J1aWxkLWlkIGFuZCBmaWxlbmFtZSBvZiBhIGZpbGUuCisKK0luIHRo ZSBuZXh0IGNvbW1pdCBJIHBsYW4gdG8gbWFrZSB0aGlzIGluZm9ybWF0aW9uIGF2YWlsYWJsZSB2 aWEgdGhlCitQeXRob24gQVBJLCBhbmQgc28gSSBuZWVkIHRvIGFsbG93IGFjY2VzcyB0byB0aGlz IHN0cnVjdHVyZWQgd3JhcHBpbmcKK291dHNpZGUgb2YgY29yZWxvdy5jLgorCitUaGlzIGNvbW1p dCByZW5hbWVzICdzdHJ1Y3QgbWFwcGVkX2ZpbGUnIHRvICdzdHJ1Y3QgY29yZV9tYXBwZWRfZmls ZScKK2FuZCBtb3ZlcyB0aGUgc3RydWN0IGludG8gZ2RiY29yZS5oLiAgVGhlbiBhIG5ldyBnbG9i YWwgZnVuY3Rpb24KK2dkYl9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyBpcyBjcmVhdGVkIGludG8g d2hpY2ggSSBtb3ZlIHRoZSBjb2RlIHRvCitidWlsZCB0aGUgc3RydWN0dXJlZCBkYXRhLgorCitU aGVuIGNvcmVsb3cuYyBpcyB1cGRhdGVkIHRvIGNhbGwgZ2RiX3JlYWRfY29yZV9maWxlX21hcHBp bmdzLgorCitUaGlzIGNvbW1pdCBkb2VzIG5vdCBleHRlbmQgdGhlIFB5dGhvbiBBUEksIHRoYXQg aXMgZm9yIHRoZSBuZXh0Citjb21taXQuCisKK1RoZXJlIHNob3VsZCBiZSBubyB1c2VyIHZpc2li bGUgY2hhbmdlcyBhZnRlciB0aGlzIGNvbW1pdC4KKworQnVnOiBodHRwczovL3NvdXJjZXdhcmUu b3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zMjg0NAorCitBcHByb3ZlZC1CeTogVG9tIFRy b21leSA8dG9tQHRyb21leS5jb20+CisKKy0tLSBmNjljMWQwM2M0ZDoKKworZ2RiL3B5dGhvbjog YWRkIENvcmVmaWxlLm1hcHBlZF9maWxlcyBtZXRob2QKKworQWRkIGEgbmV3IENvcmVmaWxlLm1h cHBlZF9maWxlcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGxpc3Qgb2YKK2dkYi5Db3JlZmlsZU1h cHBlZEZpbGUgb2JqZWN0cy4KKworRWFjaCBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlIG9iamVjdCBy ZXByZXNlbnRzIGEgZmlsZSB0aGF0IHdhcyBtYXBwZWQKK2ludG8gdGhlIHByb2Nlc3Mgd2hlbiB0 aGUgY29yZSBmaWxlIHdhcyBjcmVhdGVkLgorCitBIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGUgaGFz IGF0dHJpYnV0ZXM6CisKKyAgKyBmaWxlbmFtZSAgLS0gQSBzdHJpbmcsIHRoZSBuYW1lIG9mIHRo ZSBtYXBwZWQgZmlsZS4KKyAgKyBidWlsZF9pZCAtLSBBIHN0cmluZyBvciBOb25lLCB0aGUgYnVp bGQtaWQgb2YgdGhlIG1hcHBlZCBmaWxlIGlmCisgICAgICAgICAgICAgICAgR0RCIGNvdWxkIGZp bmQgaXQgKE5vbmUgaWYgbm90KS4KKyAgKyBpc19tYWluX2V4ZWN1dGFibGUgLS0gQSBib29sZWFu LCBUcnVlIGlmIHRoaXMgbWFwcGluZyBpcyB0aGUgbWFpbgorICAgICAgICAgICAgICAgICAgICAg ICAgICBleGVjdXRhYmxlLgorICArIHJlZ2lvbnMgLS0gQSBsaXN0IGNvbnRhaW5pbmcgdGhlIHJl Z2lvbnMgb2YgdGhpcyBmaWxlIHRoYXQgd2VyZQorICAgICAgICAgICAgICAgbWFwcGVkIGludG8g dGhlIHByb2Nlc3MuCisKK1RoZSAncmVnaW9ucycgbGlzdCBpcyBhIGxpc3Qgb2YgZ2RiLkNvcmVm aWxlTWFwcGVkRmlsZVJlZ2lvbiBvYmplY3RzLAorZWFjaCBvZiB0aGVzZSBvYmplY3RzIGhhcyB0 aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisKKyAgKyBzdGFydCAtLSB0aGUgc3RhcnQgYWRkcmVz cyB3aXRoaW4gdGhlIGluZmVyaW9yLgorICArIGVuZCAtLSB0aGUgZW5kIGFkZHJlc3Mgd2l0aGlu IHRoZSBpbmZlcmlvci4KKyAgKyBmaWxlX29mZnNldCAtLSB0aGUgb2Zmc2V0IHdpdGhpbiB0aGUg bWFwcGVkIGZpbGUgZm9yIHRoaXMgbWFwcGluZy4KKworVGhlcmUgYXJlIGRvY3MgYW5kIHRlc3Rz LgorCitCdWc6IGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lk PTMyODQ0CisKK0FwcHJvdmVkLUJ5OiBUb20gVHJvbWV5IDx0b21AdHJvbWV5LmNvbT4KKworLS0t IDc4NjI1NTRiY2Y0OgorCitnZGIvcHl0aG9uOiBpbnRyb2R1Y2UgZ2RiLkNvcmVmaWxlIEFQSQor CitUaGlzIGNvbW1pdCBzdGFydHMgYWRkaW5nIHNvbWUgY29yZSBmaWxlIHJlbGF0ZWQgZmVhdHVy ZXMgdG8gdGhlCitQeXRob24gQVBJLgorCitJbiB0aGlzIGluaXRpYWwgY29tbWl0IEkndmUgdHJp ZWQgdG8ga2VlcCB0aGUgY2hhbmdlcyBhcyBzbWFsbCBhcworcG9zc2libGUgZm9yIGVhc3kgcmV2 aWV3LgorCitUaGVyZSdzIGEgbmV3IFB5dGhvbiBjbGFzcyBnZGIuQ29yZWZpbGUsIHdoaWNoIHJl cHJlc2VudHMgYSBsb2FkZWQKK2NvcmUgZmlsZS4gIFRoaXMgQVBJIGRvZXNuJ3QgYWxsb3cgdGhl IHVzZXIgdG8gY3JlYXRlIHRoZWlyIG93bgorZ2RiLkNvcmVmaWxlIG9iamVjdHMsIGEgY29yZSBm aWxlIG11c3QgYmUgbG9hZGVkIHVzaW5nIHRoZSAnY29yZS1maWxlJworY29tbWFuZCwgdGhlbiBh IGdkYi5Db3JlZmlsZSBvYmplY3QgY2FuIGJlIG9idGFpbmVkIGJ5IHF1ZXJ5aW5nIHRoZQoraW5m ZXJpb3IgaW4gd2hpY2ggdGhlIGNvcmUgZmlsZSB3YXMgbG9hZGVkLgorCitUaGVyZSdzIGEgbmV3 IGF0dHJpYnV0ZSBnZGIuSW5mZXJpb3IuY29yZWZpbGUsIHRoaXMgaXMgTm9uZSB3aGVuIG5vCitj b3JlIGZpbGUgaXMgbG9hZGVkLCBvciBjb250YWlucyBhIGdkYi5Db3JlZmlsZSBvYmplY3QgaWYg YSBjb3JlIGZpbGUKK2hhcyBiZWVuIGxvYWRlZC4KKworQ3VycmVudGx5LCB0aGUgZ2RiLkNvcmVm aWxlIG9iamVjdCBoYXMgb25lIGF0dHJpYnV0ZSwgYW5kIG9uZSBtZXRob2QsCit0aGVzZSBhcmU6 CisKKyAgZ2RiLkNvcmVmaWxlLmZpbGVuYW1lIC0tIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGxvYWRl ZCBjb3JlIGZpbGUuCisKKyAgZ2RiLkNvcmVmaWxlLmlzX3ZhbGlkKCkgLS0gaW5kaWNhdGVzIGlm IGEgZ2RiLkNvcmVmaWxlIG9iamVjdCBpcworICB2YWxpZCBvciBub3QuICBTZWUgbm90ZXMgYmVs b3cuCisKK0EgZ2RiLkNvcmVmaWxlIG9iamVjdCBpcyBvbmx5IHZhbGlkIHdoaWxlIHRoZSBjb3Jy ZXNwb25kaW5nIGNvcmUgZmlsZQoraXMgbG9hZGVkIGludG8gYW4gaW5mZXJpb3IuICBVbmxvYWRp bmcgdGhlIGNvcmUgZmlsZSwgb3IgbG9hZGluZyBhCitkaWZmZXJlbnQgb25lIHdpbGwgY2F1c2Ug YSBnZGIuQ29yZWZpbGUgb2JqZWN0IHRvIGJlY29tZSBpbnZhbGlkLiAgRm9yCitleGFtcGxlOgor CisgIChnZGIpIGNvcmUtZmlsZSAvdG1wL2NvcmUuNTQzMTMKKyAgLi4uIHNuaXAgLi4uCisgIChn ZGIpIHB5dGhvbiBjb3JlPWdkYi5zZWxlY3RlZF9pbmZlcmlvcigpLmNvcmVmaWxlCisgIChnZGIp IHB5dGhvbiBwcmludChjb3JlKQorICA8Z2RiLkNvcmVmaWxlIGluZmVyaW9yPTEgZmlsZW5hbWU9 Jy90bXAvY29yZS41NDMxMyc+CisgIChnZGIpIHB5dGhvbiBwcmludChjb3JlLmlzX3ZhbGlkKCkp CisgIFRydWUKKyAgKGdkYikgY29yZS1maWxlCisgIE5vIGNvcmUgZmlsZSBub3cuCisgIChnZGIp IHB5dGhvbiBwcmludChjb3JlKQorICA8Z2RiLkNvcmVmaWxlIChpbnZhbGlkKT4KKyAgKGdkYikg cHl0aG9uIHByaW50KGNvcmUuaXNfdmFsaWQoKSkKKyAgRmFsc2UKKyAgKGdkYikKKworSW4gb3Jk ZXIgdG8gdHJhY2sgY2hhbmdlcyB0byB0aGUgY29yZSBmaWxlLCB0aGVyZSBpcyBhIG5ldyBvYnNl cnZhYmxlCisnY29yZV9maWxlX2NoYW5nZWQnLCB3aGljaCBhY2NvdW50cyBmb3IgdGhlIGNoYW5n ZXMgaW4gY29yZWxvdy5jLAorb2JzZXJ2YWJsZSxjLCBhbmQgb2JzZXJ2YWJsZS5oLiAgQ3VycmVu dGx5LCB0aGlzIG9ic2VydmFibGUgaXMgbm90Cit2aXNpYmxlIGFzIGEgUHl0aG9uIGV2ZW50Lgor CitJIGNob3NlIHRvIGFjY2VzcyB0aGUgY29yZSBmaWxlIHZpYSB0aGUgaW5mZXJpb3IgZXZlbiB0 aG91Z2ggdGhlIGNvcmUKK2ZpbGUgQkZEIG9iamVjdCBpcyBhY3R1YWxseSBzdG9yZWQgd2l0aGlu IHRoZSBwcm9ncmFtX3NwYWNlLiAgQXMgc3VjaCwKK2l0IG1pZ2h0IHNlZW0gdGhhdCB0aGUgbmF0 dXJhbCBjaG9pY2Ugd291bGQgYmUgdG8gYWRkIHRoZSBhdHRyaWJ1dGUgYXMKK2dkYi5Qcm9nc3Bh Y2UuY29yZWZpbGUuCisKK0ZvciBiYWNrZ3JvdW5kIHJlYWRpbmcgb24gbXkgY2hvaWNlLCBwbGVh c2Ugc2VlOgorCisgIGh0dHBzOi8vaW5ib3guc291cmNld2FyZS5vcmcvZ2RiLXBhdGNoZXMvNTc3 ZjJjNDc3OTNhY2I1MDFjMjYxMWMwZTZjN2VhMzc5Zjc3NDgzMC4xNjY4Nzg5NjU4LmdpdC5hYnVy Z2Vzc0ByZWRoYXQuY29tCisKK1RoaXMgcGF0Y2ggd2FzIG5ldmVyIG1lcmdlZCwgaXQgaXMgc3Rp bGwgb24gbXkgYmFja2xvZywgYnV0IHRoZQorb2JzZXJ2YXRpb24gaW4gdGhhdCB3b3JrIGlzIHRo YXQgc29tZSB0YXJnZXRzIGFyZSBub3QgcmVhbGx5CitzaGFyZWFibGUuICBGb3IgZXhhbXBsZSwg dGhlIGNvcmVfdGFyZ2V0IChjb3JlbG93LmMpIHN0b3JlcworaW5mb3JtYXRpb24gYWJvdXQgdGhl IGxvYWRlZCBjb3JlIGZpbGUgd2l0aGluIHRoZSB0YXJnZXQgaW5zdGFuY2UuICBBcworc3VjaCwg ZWFjaCB0YXJnZXQgaW5zdGFuY2UgcmVwcmVzZW50cyBhIHNpbmdsZSBsb2FkZWQgY29yZSBmaWxl LgorCitFeGNlcHQgdGhhdCB0aGUgQkZEIHBhcnQgb2YgdGhlIGNvcmUgZmlsZSBpcyBzdG9yZWQg aW4gdGhlCitwcm9ncmFtX3NwYWNlLCB3aGljaCBpcyBhIGxpdHRsZSB3ZWlyZC4KKworRHVyaW5n IHJldmlldywgVG9tIG1hZGUgdGhlIG9ic2VydmF0aW9uLCB0aGF0IG1heWJlIHdlIHNob3VsZAor aW52ZXN0aWdhdGUgbW92aW5nIHRoZSBjb3JlIGZpbGUgQkZEIGludG8gdGhlIGNvcmVfdGFyZ2V0 LiAgSSdtCitpbmNsaW5lZCB0byBhZ3JlZSB3aXRoIHRoaXMgYXMgYSBkaXJlY3Rpb24gb2YgdHJh dmVsLgorCitBbGwgdGhpcyBsZWF2ZXMgdXMgd2l0aCB0d28gb2JzZXJ2YXRpb25zOgorCisgIDEu IEN1cnJlbnRseSwgbG9hZGluZyBhIGNvcmUgZmlsZSBpbnRvIGFuIGluZmVyaW9yLCB0aGVuIHVz aW5nCisgICAgICdhZGQtaW5mZXJpb3InIHdpbGwgdHJ5IHRvIHNoYXJlIHRoZSBjb3JlX3Rhcmdl dCBiZXR3ZWVuCisgICAgIGluZmVyaW9ycy4gIFRoaXMgaXMgYnJva2VuLCBhbmQgY2FuIHRyaWdn ZXIgR0RCIGNyYXNoZXMuICBUaGUKKyAgICAgb2J2aW91cyBmaXgsIHdpdGhvdXQgcmV3b3JraW5n IGNvcmVfdGFyZ2V0LCBpcyBqdXN0IHRvIHByZXZlbnQKKyAgICAgdGhpcyBzaGFyaW5nLCBtYWtp bmcgY29yZV90YXJnZXQgcGVyLWluZmVyaW9yLgorCisgIDIuIEhhdmluZyB0aGUgY29yZSBmaWxl IGluZm9ybWF0aW9uIHNwbGl0IGJldHdlZW4gdGhlIGNvcmVfdGFyZ2V0CisgICAgIGluc3RhbmNl LCBhbmQgdGhlIEJGRCBzdG9yZWQgaW4gdGhlIHByb2dyYW1fc3BhY2UgaXMgYSBsaXR0bGUKKyAg ICAgd2VpcmQsIGFuZCBpcyByZWFsbHkganVzdCBoaXN0b3JpY2FsLiAgUGxhbm5pbmcgZm9yIGEg ZnV0dXJlCisgICAgIHdoZXJlIHRoZSBCRkQgaXMgYWxzbyBzdG9yZWQgaW4gdGhlIGNvcmVfdGFy Z2V0IG1pZ2h0IGJlIHdpc2UuCisKK1NvLCBpZiB3ZSBpbWFnaW5lIHRoYXQgdGhlIEJGRCBpcyAo b25lIGRheSkgbW92ZWQgaW50byB0aGUKK2NvcmVfdGFyZ2V0LCBhbmQgdGhhdCB0aGUgY29yZV90 YXJnZXQgcmVhbGx5IGJlY29tZXMgbm9uLXNoYXJlYWJsZSwKK3RoZW4gaXQgaXMsIEkgdGhpbmss IGNsZWFyZXIgdGhhdCB0aGUgY29yZWZpbGUgYXR0cmlidXRlIHNob3VsZCBsaXZlCitvbiB0aGUg Z2RiLkluZmVyaW9yIG9iamVjdCwgbm90IHRoZSBnZGIuUHJvZ3NwYWNlIG9iamVjdC4KKworVGhl cmUncyB0ZXN0aW5nIGZvciBhbGwgdGhlIGZ1bmN0aW9uYWxpdHkgYWRkZWQgaW4gdGhpcyBjb21t aXQuCisKK0J1ZzogaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/ aWQ9MzI4NDQKKworUmV2aWV3ZWQtQnk6IEVsaSBaYXJldHNraWkgPGVsaXpAZ251Lm9yZz4KK0Fw cHJvdmVkLUJ5OiBUb20gVHJvbWV5IDx0b21AdHJvbWV5LmNvbT4KKworZGlmZiAtLWdpdCBhL2dk Yi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgorLS0tIGEvZ2RiL01ha2VmaWxlLmluCisr KysgYi9nZGIvTWFrZWZpbGUuaW4KK0BAIC0zOTksNiArMzk5LDcgQEAgU1VCRElSX1BZVEhPTl9T UkNTID0gXAorIAlweXRob24vcHktY29sb3IuYyBcCisgCXB5dGhvbi9weS1jb25uZWN0aW9uLmMg XAorIAlweXRob24vcHktY29udGludWVldmVudC5jIFwKKysJcHl0aG9uL3B5LWNvcmVmaWxlLmMg XAorIAlweXRob24vcHktZGFwLmMgXAorIAlweXRob24vcHktZGlzYXNtLmMgXAorIAlweXRob24v cHktZXZlbnQuYyBcCitkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUworLS0tIGEvZ2Ri L05FV1MKKysrKyBiL2dkYi9ORVdTCitAQCAtMTMsNiArMTMsOCBAQAorIAorICAgKiogR0RCIG5v dyBzdXBwb3J0cyB0aGUgImNvbXBsZXRpb25zIiByZXF1ZXN0LgorIAorKyAgKiogVGhlIGF0dGFj aCByZXF1ZXN0IG5vdyBhY2NlcHRzIHRoZSBjb3JlRmlsZSBwYXJhbWV0ZXIuCisrCisgKiAic2V0 IHN0eWxlIiBjb21tYW5kcyBub3cgc3VwcG9ydHMgbnVtZXJpYyBmb3JtYXQgZm9yIGJhc2ljIGNv bG9ycworICAgZnJvbSAwIHRvIDI1NSBhbmQgI1JSR0dCQiBmb3JtYXQgZm9yIFRydWVDb2xvci4K KyAKK0BAIC0xNzYsNiArMTc4LDMyIEBAIGluZm8gdGhyZWFkcyBbLWdpZF0gWy1zdG9wcGVkXSBb LXJ1bm5pbmddIFtJRF0uLi4KKyAgICAgIHVuYXZhaWxhYmlsaXR5IGxpa2UgZ2RiLlZhbHVlLmlz X29wdGltaXplZF9vdXQgY2hlY2tzIGZvcgorICAgICAgb3B0aW1pemVkIG91dCB2YWx1ZXMuCisg CisrICAqKiBOZXcgZ2RiLkNvcmVmaWxlIGNsYXNzIHdoaWNoIHJlcHJlc2VudHMgYSBsb2FkZWQg Y29yZSBmaWxlLiAgVGhpcworKyAgICAgaGFzIGFuIGF0dHJpYnV0ZSBDb3JlZmlsZS5maWxlbmFt ZSwgdGhlIGZpbGUgbmFtZSBvZiB0aGUgbG9hZGVkCisrICAgICBjb3JlIGZpbGUsIGFuZCBhIG1l dGhvZCBDb3JlZmlsZS5pc192YWxpZCgpLCB3aGljaCByZXR1cm5zIEZhbHNlCisrICAgICB3aGVu IGEgQ29yZWZpbGUgb2JqZWN0IGJlY29tZXMgaW52YWxpZCAoZS5nLiB3aGVuIHRoZSBjb3JlIGZp bGUKKysgICAgIGlzIHVubG9hZGVkKS4gIFRoZXJlIGlzIGFsc28gQ29yZWZpbGUubWFwcGVkX2Zp bGVzKCkgd2hpY2gKKysgICAgIHJldHVybnMgYSBsaXN0IG9mIENvcmVmaWxlTWFwcGVkRmlsZSBv YmplY3RzLCByZXByZXNlbnRpbmcgZmlsZXMKKysgICAgIHRoYXQgd2VyZSBtYXBwZWQgaW50byB0 aGUgY29yZSBmaWxlIHdoZW4gaXQgd2FzIGNyZWF0ZWQuCisrCisrICAqKiBOZXcgZ2RiLkNvcmVm aWxlTWFwcGVkRmlsZSB0eXBlIHJlcHJlc2VudGluZyBhIGZpbGUgdGhhdCB3YXMKKysgICAgIG1h cHBlZCB3aGVuIHRoZSBjb3JlIGZpbGUgd2FzIGNyZWF0ZWQuICBIYXMgcmVhZC1vbmx5IGF0dHJp YnV0ZXMKKysgICAgIGZpbGVuYW1lIChzdHJpbmcpLCBidWlsZF9pZCAoc3RyaW5nKSwgaXNfbWFp bl9leGVjdXRhYmxlCisrICAgICAoYm9vbGVhbiksIGFuZCByZWdpb25zIChsaXN0IG9mIENvcmVm aWxlTWFwcGVkRmlsZVJlZ2lvbiBvYmplY3RzKS4KKysKKysgICoqIE5ldyBnZGIuQ29yZWZpbGVN YXBwZWRGaWxlUmVnaW9uIHR5cGUsIHdoaWNoIHJlcHJlc2VudHMgYSBtYXBwZWQKKysgICAgIHJl Z2lvbiBvZiBhIGZpbGUgKHNlZSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlIGFib3ZlKS4gIEhhcwor KyAgICAgcmVhZC1vbmx5IGF0dHJpYnV0ZXMgc3RhcnQsIGVuZCwgYW5kIGZpbGVfb2Zmc2V0Lgor KworKyAgKiogTmV3IEluZmVyaW9yLmNvcmVmaWxlIGF0dHJpYnV0ZS4gIFRoaXMgcmVhZCBvbmx5 IGF0dHJpYnV0ZQorKyAgICAgY29udGFpbnMgdGhlIGdkYi5Db3JlZmlsZSBvYmplY3QgaWYgYSBj b3JlIGZpbGUgaXMgbG9hZGVkIGludG8KKysgICAgIHRoZSBpbmZlcmlvciwgb3RoZXJ3aXNlLCB0 aGlzIGNvbnRhaW5zIE5vbmUuCisrCisrICAqKiBOZXcgZXZlbnQgcmVnaXN0cnkgZ2RiLmV2ZW50 cy5jb3JlZmlsZV9jaGFuZ2VkLCB3aGljaCBlbWl0cyBhCisrICAgICBDb3JlZmlsZUNoYW5nZWRF dmVudCB3aGVuZXZlciB0aGUgY29yZSBmaWxlIGFzc29jaWF0ZWQgd2l0aCBhbgorKyAgICAgaW5m ZXJpb3IgY2hhbmdlcy4gIFRoZSBldmVudCBoYXMgYW4gJ2luZmVyaW9yJyBhdHRyaWJ1dGUgd2hp Y2ggaXMKKysgICAgIHRoZSBnZGIuSW5mZXJpb3IgaW4gd2hpY2ggdGhlIGNvcmUgZmlsZSBoYXMg Y2hhbmdlZC4KKysKKyAqIEd1aWxlIEFQSQorIAorICAgKiogTmV3IHR5cGUgPGdkYjpjb2xvcj4g Zm9yIGRlYWxpbmcgd2l0aCBjb2xvcnMuCitkaWZmIC0tZ2l0IGEvZ2RiL2NvcmVsb3cuYyBiL2dk Yi9jb3JlbG93LmMKKy0tLSBhL2dkYi9jb3JlbG93LmMKKysrKyBiL2dkYi9jb3JlbG93LmMKK0BA IC01Myw2ICs1Myw3IEBACisgI2luY2x1ZGUgInhtbC10ZGVzYy5oIgorICNpbmNsdWRlICJtZW10 YWcuaCIKKyAjaW5jbHVkZSAiY2xpL2NsaS1zdHlsZS5oIgorKyNpbmNsdWRlICJvYnNlcnZhYmxl LmgiCisgCisgI2lmbmRlZiBPX0xBUkdFRklMRQorICNkZWZpbmUgT19MQVJHRUZJTEUgMAorQEAg LTM2NSwxMDggKzM2NiwyNyBAQCBjb3JlX3RhcmdldDo6Y29yZV90YXJnZXQgKCkKKyB2b2lkCisg Y29yZV90YXJnZXQ6OmJ1aWxkX2ZpbGVfbWFwcGluZ3MgKCkKKyB7CistICAvKiBUeXBlIGhvbGRp bmcgaW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgZmlsZSBtYXBwZWQgaW50byB0aGUgaW5mZXJp b3IKKy0gICAgIGF0IHRoZSBwb2ludCB3aGVuIHRoZSBjb3JlIGZpbGUgd2FzIGNyZWF0ZWQuICBB c3NvY2lhdGVzIGEgYnVpbGQtaWQKKy0gICAgIHdpdGggdGhlIGxpc3Qgb2YgcmVnaW9ucyB0aGUg ZmlsZSBpcyBtYXBwZWQgaW50by4gICovCistICBzdHJ1Y3QgbWFwcGVkX2ZpbGUKKy0gIHsKKy0g ICAgLyogVHlwZSBmb3IgYSByZWdpb24gb2YgYSBmaWxlIHRoYXQgd2FzIG1hcHBlZCBpbnRvIHRo ZSBpbmZlcmlvciB3aGVuCistICAgICAgIHRoZSBjb3JlIGZpbGUgd2FzIGdlbmVyYXRlZC4gICov CistICAgIHN0cnVjdCByZWdpb24KKy0gICAgeworLSAgICAgIC8qIENvbnN0cnVjdG9yLiAgIFNl ZSBtZW1iZXIgdmFyaWFibGVzIGZvciBhcmd1bWVudCBkZXNjcmlwdGlvbnMuICAqLworLSAgICAg IHJlZ2lvbiAoQ09SRV9BRERSIHN0YXJ0XywgQ09SRV9BRERSIGVuZF8sIENPUkVfQUREUiBmaWxl X29mc18pCistCTogc3RhcnQgKHN0YXJ0XyksCistCSAgZW5kIChlbmRfKSwKKy0JICBmaWxlX29m cyAoZmlsZV9vZnNfKQorLSAgICAgIHsgLyogTm90aGluZy4gICovIH0KKy0KKy0gICAgICAvKiBU aGUgaW5mZXJpb3IgYWRkcmVzcyBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBtYXBwZWQgcmVnaW9uLiAg Ki8KKy0gICAgICBDT1JFX0FERFIgc3RhcnQ7CistCistICAgICAgLyogVGhlIGluZmVyaW9yIGFk ZHJlc3MgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG1hcHBlZCByZWdpb24uICAqLworLSAgICAgIENP UkVfQUREUiBlbmQ7CistCistICAgICAgLyogVGhlIG9mZnNldCB3aXRoaW4gdGhlIG1hcHBlZCBm aWxlIGZvciB0aGlzIGNvbnRlbnQuICAqLworLSAgICAgIENPUkVfQUREUiBmaWxlX29mczsKKy0g ICAgfTsKKy0KKy0gICAgLyogSWYgbm90IG51bGxwdHIsIHRoZW4gdGhpcyBpcyB0aGUgYnVpbGQt aWQgYXNzb2NpYXRlZCB3aXRoIHRoaXMKKy0gICAgICAgZmlsZS4gICovCistICAgIGNvbnN0IGJm ZF9idWlsZF9pZCAqYnVpbGRfaWQgPSBudWxscHRyOworLQorLSAgICAvKiBJZiB0cnVlIHRoZW4g d2UgaGF2ZSBzZWVuIG11bHRpcGxlIGRpZmZlcmVudCBidWlsZC1pZHMgYXNzb2NpYXRlZAorLSAg ICAgICB3aXRoIHRoZSBzYW1lIGZpbGVuYW1lLiAgVGhlIGJ1aWxkX2lkIGZpZWxkIHdpbGwgaGF2 ZSBiZWVuIHNldCBiYWNrCistICAgICAgIHRvIG51bGxwdHIsIGFuZCB3ZSBzaG91bGQgbm90IHNl dCBidWlsZF9pZCBpbiBmdXR1cmUuICAqLworLSAgICBib29sIGlnbm9yZV9idWlsZF9pZF9wID0g ZmFsc2U7CistCistICAgIC8qIEFsbCB0aGUgbWFwcGVkIHJlZ2lvbnMgb2YgdGhpcyBmaWxlLiAg Ki8KKy0gICAgc3RkOjp2ZWN0b3I8cmVnaW9uPiByZWdpb25zOworLSAgfTsKKy0KKyAgIGdkYjo6 dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RydWN0IGJmZCAqPiBiZmRfbWFwOworICAgZ2Ri Ojp1bm9yZGVyZWRfc2V0PHN0ZDo6c3RyaW5nPiB1bmF2YWlsYWJsZV9wYXRoczsKKyAKKyAgIC8q IEFsbCBmaWxlcyBtYXBwZWQgaW50byB0aGUgY29yZSBmaWxlLiAgVGhlIGtleSBpcyB0aGUgZmls ZW5hbWUuICAqLworLSAgZ2RiOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBtYXBwZWRfZmls ZT4gbWFwcGVkX2ZpbGVzOworLQorLSAgLyogU2VlIGxpbnV4X3JlYWRfY29yZV9maWxlX21hcHBp bmdzKCkgaW4gbGludXgtdGRlcC5jIGZvciBhbiBleGFtcGxlCistICAgICByZWFkX2NvcmVfZmls ZV9tYXBwaW5ncyBtZXRob2QuICAqLworLSAgZ2RiYXJjaF9yZWFkX2NvcmVfZmlsZV9tYXBwaW5n cyAobV9jb3JlX2dkYmFyY2gsCistCQkJCSAgIGN1cnJlbnRfcHJvZ3JhbV9zcGFjZS0+Y29yZV9i ZmQgKCksCistCistICAgIC8qIEFmdGVyIGRldGVybWluaW5nIHRoZSBudW1iZXIgb2YgbWFwcGlu Z3MsIHJlYWRfY29yZV9maWxlX21hcHBpbmdzCistICAgICAgIHdpbGwgaW52b2tlIHRoaXMgbGFt YmRhLiAgKi8KKy0gICAgWyZdIChVTE9OR0VTVCkKKy0gICAgICB7CistICAgICAgfSwKKy0KKy0g ICAgLyogcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3Mgd2lsbCBpbnZva2UgdGhpcyBsYW1iZGEgZm9y IGVhY2ggbWFwcGluZworLSAgICAgICB0aGF0IGl0IGZpbmRzLiAgKi8KKy0gICAgWyZdIChpbnQg bnVtLCBVTE9OR0VTVCBzdGFydCwgVUxPTkdFU1QgZW5kLCBVTE9OR0VTVCBmaWxlX29mcywKKy0J IGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBiZmRfYnVpbGRfaWQgKmJ1aWxkX2lkKQorLSAg ICAgIHsKKy0JLyogQXJjaGl0ZWN0dXJlLXNwZWNpZmljIHJlYWRfY29yZV9tYXBwaW5nIG1ldGhv ZHMgYXJlIGV4cGVjdGVkIHRvCistCSAgIHdlZWQgb3V0IG5vbi1maWxlLWJhY2tlZCBtYXBwaW5n cy4gICovCistCWdkYl9hc3NlcnQgKGZpbGVuYW1lICE9IG51bGxwdHIpOworKyAgc3RkOjp2ZWN0 b3I8Y29yZV9tYXBwZWRfZmlsZT4gbWFwcGVkX2ZpbGVzCisrICAgID0gZ2RiX3JlYWRfY29yZV9m aWxlX21hcHBpbmdzIChtX2NvcmVfZ2RiYXJjaCwKKysJCQkJICAgY3VycmVudF9wcm9ncmFtX3Nw YWNlLT5jb3JlX2JmZCAoKSk7CisgCistCS8qIEFkZCB0aGlzIG1hcHBlZCByZWdpb24gdG8gdGhl IGRhdGEgZm9yIEZJTEVOQU1FLiAgKi8KKy0JbWFwcGVkX2ZpbGUgJmZpbGVfZGF0YSA9IG1hcHBl ZF9maWxlc1tmaWxlbmFtZV07CistCWZpbGVfZGF0YS5yZWdpb25zLmVtcGxhY2VfYmFjayAoc3Rh cnQsIGVuZCwgZmlsZV9vZnMpOworLQlpZiAoYnVpbGRfaWQgIT0gbnVsbHB0ciAmJiAhZmlsZV9k YXRhLmlnbm9yZV9idWlsZF9pZF9wKQorLQkgIHsKKy0JICAgIGlmIChmaWxlX2RhdGEuYnVpbGRf aWQgPT0gbnVsbHB0cikKKy0JICAgICAgZmlsZV9kYXRhLmJ1aWxkX2lkID0gYnVpbGRfaWQ7Cist CSAgICBlbHNlIGlmICghYnVpbGRfaWRfZXF1YWwgKGJ1aWxkX2lkLCBmaWxlX2RhdGEuYnVpbGRf aWQpKQorLQkgICAgICB7CistCQl3YXJuaW5nIChfKCJNdWx0aXBsZSBidWlsZC1pZHMgZm91bmQg Zm9yICVwcyIpLAorLQkJCSBzdHlsZWRfc3RyaW5nIChmaWxlX25hbWVfc3R5bGUuc3R5bGUgKCks IGZpbGVuYW1lKSk7CistCQlmaWxlX2RhdGEuYnVpbGRfaWQgPSBudWxscHRyOworLQkJZmlsZV9k YXRhLmlnbm9yZV9idWlsZF9pZF9wID0gdHJ1ZTsKKy0JICAgICAgfQorLQkgIH0KKy0gICAgICB9 KTsKKy0KKy0gIC8qIEdldCB0aGUgYnVpbGQtaWQgb2YgdGhlIGNvcmUgZmlsZS4gICovCistICBj b25zdCBiZmRfYnVpbGRfaWQgKmNvcmVfYnVpbGRfaWQKKy0gICAgPSBidWlsZF9pZF9iZmRfZ2V0 IChjdXJyZW50X3Byb2dyYW1fc3BhY2UtPmNvcmVfYmZkICgpKTsKKy0KKy0gIGZvciAoY29uc3Qg YXV0byAmW2ZpbGVuYW1lLCBmaWxlX2RhdGFdIDogbWFwcGVkX2ZpbGVzKQorKyAgZm9yIChjb25z dCBjb3JlX21hcHBlZF9maWxlICZmaWxlX2RhdGEgOiBtYXBwZWRfZmlsZXMpCisgICAgIHsKKy0g ICAgICAvKiBJZiB0aGlzIG1hcHBlZCBmaWxlIGhhcyB0aGUgc2FtZSBidWlsZC1pZCBhcyB3YXMg ZGlzY292ZXJlZCBmb3IKKy0JIHRoZSBjb3JlLWZpbGUgaXRzZWxmLCB0aGVuIHdlIGFzc3VtZSB0 aGlzIGlzIHRoZSBtYWluCistCSBleGVjdXRhYmxlLiAgUmVjb3JkIHRoZSBmaWxlbmFtZSBhcyB3 ZSBjYW4gdXNlIHRoaXMgbGF0ZXIuICAqLworLSAgICAgIGlmIChmaWxlX2RhdGEuYnVpbGRfaWQg IT0gbnVsbHB0cgorLQkgICYmIG1fZXhwZWN0ZWRfZXhlY19maWxlbmFtZS5lbXB0eSAoKQorLQkg ICYmIGJ1aWxkX2lkX2VxdWFsIChmaWxlX2RhdGEuYnVpbGRfaWQsIGNvcmVfYnVpbGRfaWQpKQor LQltX2V4cGVjdGVkX2V4ZWNfZmlsZW5hbWUgPSBmaWxlbmFtZTsKKysgICAgICAvKiBJZiB0aGlz IG1hcHBlZCBmaWxlIGlzIG1hcmtlZCBhcyB0aGUgbWFpbiBleGVjdXRhYmxlIHRoZW4gcmVjb3Jk CisrCSB0aGUgZmlsZW5hbWUgYXMgd2UgY2FuIHVzZSB0aGlzIGxhdGVyLiAgKi8KKysgICAgICBp ZiAoZmlsZV9kYXRhLmlzX21haW5fZXhlYyAmJiBtX2V4cGVjdGVkX2V4ZWNfZmlsZW5hbWUuZW1w dHkgKCkpCisrCW1fZXhwZWN0ZWRfZXhlY19maWxlbmFtZSA9IGZpbGVfZGF0YS5maWxlbmFtZTsK KyAKKyAgICAgICAvKiBVc2UgZXhlY19maWxlX2ZpbmQoKSB0byBkbyBzeXNyb290IGV4cGFuc2lv bi4gIEl0J2xsCisgCSBhbHNvIHN0cmlwIHRoZSBwb3RlbnRpYWwgc3lzcm9vdCAidGFyZ2V0OiIg cHJlZml4LiAgSWYKKyAJIHRoZXJlIGlzIG5vIHN5c3Jvb3QsIGFuIGVxdWl2YWxlbnQgKHBvc3Np Ymx5IG1vcmUKKyAJIGNhbm9uaWNhbCkgcGF0aG5hbWUgd2lsbCBiZSBwcm92aWRlZC4gICovCisg ICAgICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gZXhwYW5kZWRfZm5hbWUKKy0JPSBl eGVjX2ZpbGVfZmluZCAoZmlsZW5hbWUuY19zdHIgKCksIG51bGxwdHIpOworKwk9IGV4ZWNfZmls ZV9maW5kIChmaWxlX2RhdGEuZmlsZW5hbWUuY19zdHIgKCksIG51bGxwdHIpOworIAorICAgICAg IGJvb2wgYnVpbGRfaWRfbWlzbWF0Y2ggPSBmYWxzZTsKKyAgICAgICBpZiAoZXhwYW5kZWRfZm5h bWUgIT0gbnVsbHB0ciAmJiBmaWxlX2RhdGEuYnVpbGRfaWQgIT0gbnVsbHB0cikKK0BAIC01MDgs NyArNDI4LDcgQEAgY29yZV90YXJnZXQ6OmJ1aWxkX2ZpbGVfbWFwcGluZ3MgKCkKKyAJeworIAkg IGFiZmQgPSBmaW5kX29iamZpbGVfYnlfYnVpbGRfaWQgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSwK KyAJCQkJCSAgIGZpbGVfZGF0YS5idWlsZF9pZCwKKy0JCQkJCSAgIGZpbGVuYW1lLmNfc3RyICgp KTsKKysJCQkJCSAgIGZpbGVfZGF0YS5maWxlbmFtZS5jX3N0ciAoKSk7CisgCisgCSAgaWYgKGFi ZmQgIT0gbnVsbHB0cikKKyAJICAgIHsKK0BAIC01MjYsNyArNDQ2LDcgQEAgY29yZV90YXJnZXQ6 OmJ1aWxkX2ZpbGVfbWFwcGluZ3MgKCkKKyAJfQorIAorICAgICAgIHN0ZDo6dmVjdG9yPG1lbV9y YW5nZT4gcmFuZ2VzOworLSAgICAgIGZvciAoY29uc3QgbWFwcGVkX2ZpbGU6OnJlZ2lvbiAmcmVn aW9uIDogZmlsZV9kYXRhLnJlZ2lvbnMpCisrICAgICAgZm9yIChjb25zdCBjb3JlX21hcHBlZF9m aWxlOjpyZWdpb24gJnJlZ2lvbiA6IGZpbGVfZGF0YS5yZWdpb25zKQorIAlyYW5nZXMuZW1wbGFj ZV9iYWNrIChyZWdpb24uc3RhcnQsIHJlZ2lvbi5lbmQgLSByZWdpb24uc3RhcnQpOworIAorICAg ICAgIGlmIChleHBhbmRlZF9mbmFtZSA9PSBudWxscHRyCitAQCAtNTQ0LDcgKzQ2NCw3IEBAIGNv cmVfdGFyZ2V0OjpidWlsZF9maWxlX21hcHBpbmdzICgpCisgCSAgYm9vbCBjb250ZW50X2lzX2lu X2NvcmVfZmlsZV9wID0gdHJ1ZTsKKyAKKyAJICAvKiBSZWNvcmQgYWxsIHJlZ2lvbnMgZm9yIHRo aXMgZmlsZSBhcyB1bmF2YWlsYWJsZS4gICovCistCSAgZm9yIChjb25zdCBtYXBwZWRfZmlsZTo6 cmVnaW9uICZyZWdpb24gOiBmaWxlX2RhdGEucmVnaW9ucykKKysJICBmb3IgKGNvbnN0IGNvcmVf bWFwcGVkX2ZpbGU6OnJlZ2lvbiAmcmVnaW9uIDogZmlsZV9kYXRhLnJlZ2lvbnMpCisgCSAgICB7 CisgCSAgICAgIC8qIENoZWNrIHRvIHNlZSBpZiB0aGUgcmVnaW9uIGlzIGF2YWlsYWJsZSB3aXRo aW4gdGhlIGNvcmUKKyAJCSBmaWxlLiAgKi8KK0BAIC01NzYsMzMgKzQ5NiwzMyBAQCBjb3JlX3Rh cmdldDo6YnVpbGRfZmlsZV9tYXBwaW5ncyAoKQorIAkgIGlmIChidWlsZF9pZF9taXNtYXRjaCkK KyAJICAgIHsKKyAJICAgICAgaWYgKGV4cGFuZGVkX2ZuYW1lID09IG51bGxwdHIKKy0JCSAgfHwg ZmlsZW5hbWUgPT0gZXhwYW5kZWRfZm5hbWUuZ2V0ICgpKQorKwkJICB8fCBmaWxlX2RhdGEuZmls ZW5hbWUgPT0gZXhwYW5kZWRfZm5hbWUuZ2V0ICgpKQorIAkJd2FybmluZyAoXygiRmlsZSAlcHMg ZG9lc24ndCBtYXRjaCBidWlsZC1pZCBmcm9tIGNvcmUtZmlsZSAiCisgCQkJICAgImR1cmluZyBm aWxlLWJhY2tlZCBtYXBwaW5nIHByb2Nlc3NpbmciKSwKKyAJCQkgc3R5bGVkX3N0cmluZyAoZmls ZV9uYW1lX3N0eWxlLnN0eWxlICgpLAorLQkJCQkJZmlsZW5hbWUuY19zdHIgKCkpKTsKKysJCQkJ CWZpbGVfZGF0YS5maWxlbmFtZS5jX3N0ciAoKSkpOworIAkgICAgICBlbHNlCisgCQl3YXJuaW5n IChfKCJGaWxlICVwcyB3aGljaCB3YXMgZXhwYW5kZWQgdG8gJXBzLCBkb2Vzbid0IG1hdGNoICIK KyAJCQkgICAiYnVpbGQtaWQgZnJvbSBjb3JlLWZpbGUgZHVyaW5nIGZpbGUtYmFja2VkICIKKyAJ CQkgICAibWFwcGluZyBwcm9jZXNzaW5nIiksCisgCQkJIHN0eWxlZF9zdHJpbmcgKGZpbGVfbmFt ZV9zdHlsZS5zdHlsZSAoKSwKKy0JCQkJCWZpbGVuYW1lLmNfc3RyICgpKSwKKysJCQkJCWZpbGVf ZGF0YS5maWxlbmFtZS5jX3N0ciAoKSksCisgCQkJIHN0eWxlZF9zdHJpbmcgKGZpbGVfbmFtZV9z dHlsZS5zdHlsZSAoKSwKKyAJCQkJCWV4cGFuZGVkX2ZuYW1lLmdldCAoKSkpOworIAkgICAgfQor IAkgIGVsc2UgaWYgKCFjb250ZW50X2lzX2luX2NvcmVfZmlsZV9wKQorIAkgICAgeworIAkgICAg ICBpZiAoZXhwYW5kZWRfZm5hbWUgPT0gbnVsbHB0cgorLQkJICB8fCBmaWxlbmFtZSA9PSBleHBh bmRlZF9mbmFtZS5nZXQgKCkpCisrCQkgIHx8IGZpbGVfZGF0YS5maWxlbmFtZSA9PSBleHBhbmRl ZF9mbmFtZS5nZXQgKCkpCisgCQl3YXJuaW5nIChfKCJDYW4ndCBvcGVuIGZpbGUgJXBzIGR1cmlu ZyBmaWxlLWJhY2tlZCBtYXBwaW5nICIKKyAJCQkgICAibm90ZSBwcm9jZXNzaW5nIiksCisgCQkJ IHN0eWxlZF9zdHJpbmcgKGZpbGVfbmFtZV9zdHlsZS5zdHlsZSAoKSwKKy0JCQkJCWZpbGVuYW1l LmNfc3RyICgpKSk7CisrCQkJCQlmaWxlX2RhdGEuZmlsZW5hbWUuY19zdHIgKCkpKTsKKyAJICAg ICAgZWxzZQorIAkJd2FybmluZyAoXygiQ2FuJ3Qgb3BlbiBmaWxlICVwcyB3aGljaCB3YXMgZXhw YW5kZWQgdG8gJXBzICIKKyAJCQkgICAiZHVyaW5nIGZpbGUtYmFja2VkIG1hcHBpbmcgbm90ZSBw cm9jZXNzaW5nIiksCisgCQkJIHN0eWxlZF9zdHJpbmcgKGZpbGVfbmFtZV9zdHlsZS5zdHlsZSAo KSwKKy0JCQkJCWZpbGVuYW1lLmNfc3RyICgpKSwKKysJCQkJCWZpbGVfZGF0YS5maWxlbmFtZS5j X3N0ciAoKSksCisgCQkJIHN0eWxlZF9zdHJpbmcgKGZpbGVfbmFtZV9zdHlsZS5zdHlsZSAoKSwK KyAJCQkJCWV4cGFuZGVkX2ZuYW1lLmdldCAoKSkpOworIAkgICAgfQorQEAgLTYxNiw3ICs1MzYs NyBAQCBjb3JlX3RhcmdldDo6YnVpbGRfZmlsZV9tYXBwaW5ncyAoKQorIAkJCQkgICAgYWJmZC5n ZXQgKCkpOworIAorIAkgIC8qIENyZWF0ZSBzZWN0aW9ucyBmb3IgZWFjaCBtYXBwZWQgcmVnaW9u LiAgKi8KKy0JICBmb3IgKGNvbnN0IG1hcHBlZF9maWxlOjpyZWdpb24gJnJlZ2lvbiA6IGZpbGVf ZGF0YS5yZWdpb25zKQorKwkgIGZvciAoY29uc3QgY29yZV9tYXBwZWRfZmlsZTo6cmVnaW9uICZy ZWdpb24gOiBmaWxlX2RhdGEucmVnaW9ucykKKyAJICAgIHsKKyAJICAgICAgLyogTWFrZSBuZXcg QkZEIHNlY3Rpb24uICBBbGwgc2VjdGlvbnMgaGF2ZSB0aGUgc2FtZSBuYW1lLAorIAkJIHdoaWNo IGlzIHBlcm1pdHRlZCBieSBiZmRfbWFrZV9zZWN0aW9uX2FueXdheSgpLiAgKi8KK0BAIC02NTIs NyArNTcyLDcgQEAgY29yZV90YXJnZXQ6OmJ1aWxkX2ZpbGVfbWFwcGluZ3MgKCkKKyAJICAgICAg c29uYW1lID0gZ2RiX2JmZF9yZWFkX2VsZl9zb25hbWUgKGFjdHVhbF9maWxlbmFtZSk7CisgCSAg ICB9CisgCistCSAgbV9tYXBwZWRfZmlsZV9pbmZvLmFkZCAoc29uYW1lLmdldCAoKSwgZmlsZW5h bWUuY19zdHIgKCksCisrCSAgbV9tYXBwZWRfZmlsZV9pbmZvLmFkZCAoc29uYW1lLmdldCAoKSwg ZmlsZV9kYXRhLmZpbGVuYW1lLmNfc3RyICgpLAorIAkJCQkgIGFjdHVhbF9maWxlbmFtZSwgc3Rk Ojptb3ZlIChyYW5nZXMpLAorIAkJCQkgIGZpbGVfZGF0YS5idWlsZF9pZCk7CisgCX0KK0BAIC02 NzgsNiArNTk4LDkgQEAgY29yZV90YXJnZXQ6OmNsZWFyX2NvcmUgKCkKKyAgICAgICBjbGVhcl9z b2xpYiAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKyAKKyAgICAgICBjdXJyZW50X3Byb2dyYW1f c3BhY2UtPmNiZmQucmVzZXQgKG51bGxwdHIpOworKworKyAgICAgIC8qIE5vdGlmeSB0aGF0IHRo ZSBjb3JlIGZpbGUgaGFzIGNoYW5nZWQuICAqLworKyAgICAgIGdkYjo6b2JzZXJ2ZXJzOjpjb3Jl X2ZpbGVfY2hhbmdlZC5ub3RpZnkgKGN1cnJlbnRfaW5mZXJpb3IgKCkpOworICAgICB9CisgfQor IAorQEAgLTEyNzgsNiArMTIwMSw5IEBAIGNvcmVfdGFyZ2V0X29wZW4gKGNvbnN0IGNoYXIgKmFy ZywgaW50IGZyb21fdHR5KQorIAkgIGV4Y2VwdGlvbl9wcmludCAoZ2RiX3N0ZGVyciwgZXhjZXB0 KTsKKyAJfQorICAgICB9CisrCisrICAvKiBOb3RpZnkgdGhhdCB0aGUgY29yZSBmaWxlIGhhcyBj aGFuZ2VkLiAgKi8KKysgIGdkYjo6b2JzZXJ2ZXJzOjpjb3JlX2ZpbGVfY2hhbmdlZC5ub3RpZnkg KGN1cnJlbnRfaW5mZXJpb3IgKCkpOworIH0KKyAKKyB2b2lkCitAQCAtMjE1Niw2ICsyMDgyLDEw MyBAQCBtYXBwZWRfZmlsZV9pbmZvOjpsb29rdXAgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorIAor IC8qIFNlZSBnZGJjb3JlLmguICAqLworIAorK3N0ZDo6dmVjdG9yPGNvcmVfbWFwcGVkX2ZpbGU+ CisrZ2RiX3JlYWRfY29yZV9maWxlX21hcHBpbmdzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg c3RydWN0IGJmZCAqY2JmZCkKKyt7CisrICBzdGQ6OnZlY3Rvcjxjb3JlX21hcHBlZF9maWxlPiBy ZXN1bHRzOworKworKyAgLyogQSBtYXAgZW50cnkgdXNlZCB3aGlsZSBidWlsZGluZyBSRVNVTFRT LiAgKi8KKysgIHN0cnVjdCBtYXBfZW50cnkKKysgIHsKKysgICAgZXhwbGljaXQgbWFwX2VudHJ5 IChjb3JlX21hcHBlZF9maWxlICpwdHIpCisrICAgICAgOiBmaWxlX2RhdGEgKHB0cikKKysgICAg eyAvKiBOb3RoaW5nLiAgKi8gfQorKworKyAgICAvKiBQb2ludHMgdG8gYW4gZW50cnkgaW4gUkVT VUxUUywgdGhpcyBhbGxvd3MgZW50cmllcyB0byBiZSBxdWlja2x5CisrICAgICAgIGxvb2tlZCB1 cCBhbmQgdXBkYXRlZCBhcyBuZXcgbWFwcGluZ3MgYXJlIHJlYWQuICAqLworKyAgICBjb3JlX21h cHBlZF9maWxlICpmaWxlX2RhdGEgPSBudWxscHRyOworKworKyAgICAvKiBJZiB0cnVlIHRoZW4g d2UgaGF2ZSBzZWVuIG11bHRpcGxlIGRpZmZlcmVudCBidWlsZC1pZHMgYXNzb2NpYXRlZAorKyAg ICAgICB3aXRoIHRoZSBmaWxlbmFtZSBvZiBGSUxFX0RBVEEuICBUaGUgRklMRV9EQVRBLT5idWls ZF9pZCBmaWVsZCB3aWxsCisrICAgICAgIGhhdmUgYmVlbiBzZXQgdG8gbnVsbHB0ciwgYW5kIHdl IHNob3VsZCBub3Qgc2V0IEZJTEVfREFUQS0+YnVpbGRfaWQKKysgICAgICAgaW4gZnV0dXJlLiAg Ki8KKysgICAgYm9vbCBpZ25vcmVfYnVpbGRfaWRfcCA9IGZhbHNlOworKyAgfTsKKysKKysgIC8q IEFsbCBmaWxlcyBtYXBwZWQgaW50byB0aGUgY29yZSBmaWxlLiAgVGhlIGtleSBpcyB0aGUgZmls ZW5hbWUuICAqLworKyAgZ2RiOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBtYXBfZW50cnk+ IG1hcHBlZF9maWxlczsKKysKKysgIC8qIEdldCB0aGUgYnVpbGQtaWQgb2YgdGhlIGNvcmUgZmls ZS4gIEF0IGxlYXN0IG9uIExpbnV4LCB0aGlzIHdpbGwgYmUKKysgICAgIHRoZSBidWlsZC1pZCBm b3IgdGhlIG1haW4gZXhlY3V0YWJsZS4gIElmIG90aGVyIHRhcmdldHMgYWRkIHRoZQorKyAgICAg Z2RiYXJjaF9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyBtZXRob2QsIHRoZW4gaXQgbWlnaHQgdHVy biBvdXQgdGhhdAorKyAgICAgdGhpcyBsb2dpYyBpcyBubyBsb25nZXIgdHJ1ZSwgaW4gd2hpY2gg Y2FzZSB0aGlzIG1pZ2h0IG5lZWQgdG8gbW92ZQorKyAgICAgaW50byB0aGUgZ2RiYXJjaF9yZWFk X2NvcmVfZmlsZV9tYXBwaW5ncyBtZXRob2QuICAqLworKyAgY29uc3QgYmZkX2J1aWxkX2lkICpj b3JlX2J1aWxkX2lkID0gYnVpbGRfaWRfYmZkX2dldCAoY2JmZCk7CisrCisrICAvKiBTZWUgbGlu dXhfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MoKSBpbiBsaW51eC10ZGVwLmMgZm9yIGFuIGV4YW1w bGUKKysgICAgIHJlYWRfY29yZV9maWxlX21hcHBpbmdzIG1ldGhvZC4gICovCisrICBnZGJhcmNo X3JlYWRfY29yZV9maWxlX21hcHBpbmdzIChnZGJhcmNoLCBjYmZkLAorKyAgICAvKiBBZnRlciBk ZXRlcm1pbmluZyB0aGUgbnVtYmVyIG9mIG1hcHBpbmdzLCByZWFkX2NvcmVfZmlsZV9tYXBwaW5n cworKyAgICAgICB3aWxsIGludm9rZSB0aGlzIGxhbWJkYS4gICovCisrICAgIFsmXSAoVUxPTkdF U1QpCisrICAgICAgeworKyAgICAgIH0sCisrCisrICAgIC8qIHJlYWRfY29yZV9maWxlX21hcHBp bmdzIHdpbGwgaW52b2tlIHRoaXMgbGFtYmRhIGZvciBlYWNoIG1hcHBpbmcKKysgICAgICAgdGhh dCBpdCBmaW5kcy4gICovCisrICAgIFsmXSAoaW50IG51bSwgVUxPTkdFU1Qgc3RhcnQsIFVMT05H RVNUIGVuZCwgVUxPTkdFU1QgZmlsZV9vZnMsCisrCSBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29u c3QgYmZkX2J1aWxkX2lkICpidWlsZF9pZCkKKysgICAgICB7CisrCS8qIEFyY2hpdGVjdHVyZS1z cGVjaWZpYyByZWFkX2NvcmVfbWFwcGluZyBtZXRob2RzIGFyZSBleHBlY3RlZCB0bworKwkgICB3 ZWVkIG91dCBub24tZmlsZS1iYWNrZWQgbWFwcGluZ3MuICAqLworKwlnZGJfYXNzZXJ0IChmaWxl bmFtZSAhPSBudWxscHRyKTsKKysKKysJLyogQWRkIHRoaXMgbWFwcGVkIHJlZ2lvbiB0byB0aGUg ZGF0YSBmb3IgRklMRU5BTUUuICAqLworKwlhdXRvIGl0ZXIgPSBtYXBwZWRfZmlsZXMuZmluZCAo ZmlsZW5hbWUpOworKwlpZiAoaXRlciA9PSBtYXBwZWRfZmlsZXMuZW5kICgpKQorKwkgIHsKKysJ ICAgIC8qIENyZWF0ZSBlbnRyeSBpbiByZXN1bHRzIGxpc3QuICAqLworKwkgICAgcmVzdWx0cy5l bXBsYWNlX2JhY2sgKCk7CisrCisrCSAgICAvKiBUaGUgZW50cnkgdG8gYmUgYWRkZWQgdG8gdGhl IGxvb2t1cCBtYXAuICAqLworKwkgICAgbWFwX2VudHJ5IGVudHJ5ICgmcmVzdWx0cy5iYWNrICgp KTsKKysJICAgIGVudHJ5LmZpbGVfZGF0YS0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKKysKKysJICAg IC8qIEFkZCBlbnRyeSB0byB0aGUgcXVpY2sgbG9va3VwIG1hcCBhbmQgdXBkYXRlIElURVIuICAq LworKwkgICAgYXV0byBpbnNlcnRlZF9yZXN1bHQKKysJICAgICAgPSBtYXBwZWRfZmlsZXMuaW5z ZXJ0ICh7ZmlsZW5hbWUsIHN0ZDo6bW92ZSAoZW50cnkpfSk7CisrCSAgICBnZGJfYXNzZXJ0IChp bnNlcnRlZF9yZXN1bHQuc2Vjb25kKTsKKysJICAgIGl0ZXIgPSBpbnNlcnRlZF9yZXN1bHQuZmly c3Q7CisrCSAgfQorKworKwljb3JlX21hcHBlZF9maWxlICZmaWxlX2RhdGEgPSAqaXRlci0+c2Vj b25kLmZpbGVfZGF0YTsKKysJYm9vbCAmaWdub3JlX2J1aWxkX2lkX3AgPSBpdGVyLT5zZWNvbmQu aWdub3JlX2J1aWxkX2lkX3A7CisrCisrCWZpbGVfZGF0YS5yZWdpb25zLmVtcGxhY2VfYmFjayAo c3RhcnQsIGVuZCwgZmlsZV9vZnMpOworKwlpZiAoYnVpbGRfaWQgIT0gbnVsbHB0ciAmJiAhaWdu b3JlX2J1aWxkX2lkX3ApCisrCSAgeworKwkgICAgaWYgKGZpbGVfZGF0YS5idWlsZF9pZCA9PSBu dWxscHRyKQorKwkgICAgICBmaWxlX2RhdGEuYnVpbGRfaWQgPSBidWlsZF9pZDsKKysJICAgIGVs c2UgaWYgKCFidWlsZF9pZF9lcXVhbCAoYnVpbGRfaWQsIGZpbGVfZGF0YS5idWlsZF9pZCkpCisr CSAgICAgIHsKKysJCXdhcm5pbmcgKF8oIk11bHRpcGxlIGJ1aWxkLWlkcyBmb3VuZCBmb3IgJXBz IiksCisrCQkJIHN0eWxlZF9zdHJpbmcgKGZpbGVfbmFtZV9zdHlsZS5zdHlsZSAoKSwgZmlsZW5h bWUpKTsKKysJCWZpbGVfZGF0YS5idWlsZF9pZCA9IG51bGxwdHI7CisrCQlpZ25vcmVfYnVpbGRf aWRfcCA9IHRydWU7CisrCSAgICAgIH0KKysJICB9CisrCisrCWlmIChidWlsZF9pZCAhPSBudWxs cHRyCisrCSAgICAmJiBjb3JlX2J1aWxkX2lkICE9IG51bGxwdHIKKysJICAgICYmIGJ1aWxkX2lk X2VxdWFsIChidWlsZF9pZCwgY29yZV9idWlsZF9pZCkpCisrCSAgZmlsZV9kYXRhLmlzX21haW5f ZXhlYyA9IHRydWU7CisrICAgICAgfSk7CisrCisrICByZXR1cm4gcmVzdWx0czsKKyt9CisrCisr LyogU2VlIGdkYmNvcmUuaC4gICovCisrCisgc3RkOjpvcHRpb25hbCA8Y29yZV90YXJnZXRfbWFw cGVkX2ZpbGVfaW5mbz4KKyBjb3JlX3RhcmdldF9maW5kX21hcHBlZF9maWxlIChjb25zdCBjaGFy ICpmaWxlbmFtZSwKKyAJCQkgICAgICBzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4gYWRkcikKK2Rp ZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbworLS0t IGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbworQEAgLTQw MDI5LDEwICs0MDAyOSwxMCBAQCB3aWxsIHNldCBhIHRlbXBvcmFyeSBicmVha3BvaW50IGF0IHRo ZSBwcm9ncmFtJ3MgZmlyc3QgaW5zdHJ1Y3Rpb24sIHVzaW5nCisgdGhlIHNhbWUgYXBwcm9hY2gg YXMgdGhlIEBjb2Rle3N0YXJ0aX0gY29tbWFuZC4gIEB4cmVme1N0YXJ0aW5nfS4KKyBAZW5kIHRh YmxlCisgCistQHZhbHVle0dEQk59IGRlZmluZXMgc29tZSBwYXJhbWV0ZXJzIHRoYXQgY2FuIGJl IHBhc3NlZCB0byB0aGUKKy1AY29kZXthdHRhY2h9IHJlcXVlc3QuICBFaXRoZXIgQGNvZGV7cGlk fSBvciBAY29kZXt0YXJnZXR9IG11c3QgYmUKKy1zcGVjaWZpZWQsIGJ1dCBpZiBib3RoIGFyZSBz cGVjaWZpZWQgdGhlbiBAY29kZXt0YXJnZXR9IHdpbGwgYmUKKy1pZ25vcmVkLgorK0B2YWx1ZXtH REJOfSBkZWZpbmVzIHNvbWUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRoYXQgY2FuIGJlIHBhc3Nl ZCB0bworK3RoZSBAY29kZXthdHRhY2h9IHJlcXVlc3QuICBPbmUgb2YgQGNvZGV7cGlkfSwgQGNv ZGV7dGFyZ2V0fSwgb3IKKytAY29kZXtjb3JlRmlsZX0gbXVzdCBiZSBzcGVjaWZpZWQuICBJZiBt dWx0aXBsZSBhcmUgc3BlY2lmaWVkLCB0aGV5CisrYXJlIGNoZWNrZWQgZm9yIGluIHRoYXQgb3Jk ZXIsIGFuZCB0aGUgZmlyc3Qgb25lIGZvdW5kIGlzIHVzZWQuCisgCisgQHRhYmxlIEBjb2RlCisg QGl0ZW0gcGlkCitAQCAtNDAwNDgsNiArNDAwNDgsMTAgQEAgc2hvdWxkIGJlIHN1cHBsaWVkLgor IEBpdGVtIHRhcmdldAorIFRoZSB0YXJnZXQgdG8gd2hpY2ggQHZhbHVle0dEQk59IHNob3VsZCBj b25uZWN0LiAgVGhpcyBpcyBhIHN0cmluZyBhbmQKKyBpcyBwYXNzZWQgdG8gdGhlIEBjb2Rle3Rh cmdldCByZW1vdGV9IGNvbW1hbmQuICBAeHJlZntDb25uZWN0aW5nfS4KKysKKytAaXRlbSBjb3Jl RmlsZQorK0Egc3RyaW5nIHRoYXQgc3BlY2lmaWVzIGEgY29yZSBmaWxlIHRvIHVzZS4gIFRoaXMg Y29ycmVzcG9uZHMgdG8gdGhlCisrQGtiZHtjb3JlLWZpbGV9IGNvbW1hbmQuICBAeHJlZntjb3Jl LWZpbGUgY29tbWFuZH0uCisgQGVuZCB0YWJsZQorIAorIEluIHJlc3BvbnNlIHRvIHRoZSBAY29k ZXtkaXNhc3NlbWJsZX0gcmVxdWVzdCwgREFQIGFsbG93cyB0aGUgY2xpZW50CitkaWZmIC0tZ2l0 IGEvZ2RiL2RvYy9weXRob24udGV4aSBiL2dkYi9kb2MvcHl0aG9uLnRleGkKKy0tLSBhL2dkYi9k b2MvcHl0aG9uLnRleGkKKysrKyBiL2dkYi9kb2MvcHl0aG9uLnRleGkKK0BAIC0yMzMsNiArMjMz LDcgQEAgb3B0aW9uYWwgYXJndW1lbnRzIHdoaWxlIHNraXBwaW5nIG90aGVycy4gIEV4YW1wbGU6 CisgKiBEaXNhc3NlbWJseSBJbiBQeXRob246OiAgICAgICBJbnN0cnVjdGlvbiBEaXNhc3NlbWJs eSBJbiBQeXRob24KKyAqIE1pc3NpbmcgRGVidWcgSW5mbyBJbiBQeXRob246OiBIYW5kbGUgbWlz c2luZyBkZWJ1ZyBpbmZvIGZyb20gUHl0aG9uLgorICogTWlzc2luZyBPYmpmaWxlcyBJbiBQeXRo b246OiAgSGFuZGxlIG9iamZpbGVzIGZyb20gUHl0aG9uLgorKyogQ29yZSBGaWxlcyBJbiBQeXRo b246OiAgICAgICAgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIGNvcmUgZmlsZXMuCisgQGVuZCBt ZW51CisgCisgQG5vZGUgQmFzaWMgUHl0aG9uCitAQCAtMzYyNiw2ICszNjI3LDE1IEBAIG5lY2Vz c2FyeSBxdW90aW5nIGZvciB0aGUgc2hlbGw7IHdoZW4gYSBzZXF1ZW5jZSBpcyBhc3NpZ25lZCwg dGhlCisgcXVvdGluZyBpcyBhcHBsaWVkIGJ5IEB2YWx1ZXtHREJOfS4KKyBAZW5kIGRlZnZhcgor IAorK0BkZWZ2YXIgSW5mZXJpb3IuY29yZWZpbGUKKytJZiBhIGNvcmUgZmlsZSBoYXMgYmVlbiBs b2FkZWQgaW50byB0aGlzIGluZmVyaW9yIChAcHhyZWZ7Y29yZS1maWxlCisrY29tbWFuZH0pLCB0 aGVuIHRoaXMgY29udGFpbnMgYSBAY29kZXtnZGIuQ29yZWZpbGV9IG9iamVjdCB0aGF0CisrcmVw cmVzZW50cyB0aGUgbG9hZGVkIGNvcmUgZmlsZSAoQHB4cmVme0NvcmUgRmlsZXMgSW4gUHl0aG9u fSkuCisrCisrSWYgbm8gY29yZSBmaWxlIGhhcyBiZWVuIGxvYWRlZCBpbnRvIHRoaXMgaW5mZXJp b3IsIHRoZW4gdGhpcworK2F0dHJpYnV0ZSBjb250YWlucyBAY29kZXtOb25lfS4KKytAZW5kIGRl ZnZhcgorKworIEEgQGNvZGV7Z2RiLkluZmVyaW9yfSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcg bWV0aG9kczoKKyAKKyBAZGVmdW4gSW5mZXJpb3IuaXNfdmFsaWQgKCkKK0BAIC00MDk0LDYgKzQx MDQsMTcgQEAgZmlsZSBpcyB1cGRhdGVkIGZpcnN0LCBzbyB3aGVuIHRoaXMgZXZlbnQgaXMgZW1p dHRlZCwgdGhlIGV4ZWN1dGFibGUKKyBmaWxlbmFtZSB3aWxsIGhhdmUgY2hhbmdlZCwgYnV0IHRo ZSBzeW1ib2wgZmlsZW5hbWUgbWlnaHQgc3RpbGwgaG9sZAorIGl0cyBwcmV2aW91cyB2YWx1ZS4K KyAKKytAaXRlbSBldmVudHMuY29yZWZpbGVfY2hhbmdlZAorK0VtaXRzIEBjb2Rle2dkYi5Db3Jl ZmlsZUNoYW5nZWRFdmVudH0gd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGNvcmUKKytmaWxlIGFz c29jaWF0ZWQgd2l0aCBhIEBjb2Rle2dkYi5JbmZlcmlvcn0gaGFzIGNoYW5nZWQsIGVpdGhlciBh IG5ldworK2NvcmUgZmlsZSBoYXMgYmVlbiBsb2FkZWQsIG9yIHRoZSBleGlzdGluZyBjb3JlIGZp bGUgaGFzIGJlZW4KKyt1bmxvYWRlZCAoQHB4cmVme0NvcmUgRmlsZXMgSW4gUHl0aG9ufSkuCisr CisrQGRlZnZhciBDb3JlZmlsZUNoYW5nZWRFdmVudC5pbmZlcmlvcgorK1RoZSBAY29kZXtnZGIu SW5mZXJpb3J9IGluIHdoaWNoIHRoZSBjb3JlIGZpbGUgaGFzIGNoYW5nZWQKKysoQHB4cmVme0lu ZmVyaW9ycyBJbiBQeXRob259KS4KKytAZW5kIGRlZnZhcgorKworIEBpdGVtIGV2ZW50cy5uZXdf cHJvZ3NwYWNlCisgVGhpcyBpcyBlbWl0dGVkIHdoZW4gQHZhbHVle0dEQk59IGFkZHMgYSBuZXcg cHJvZ3JhbSBzcGFjZQorIChAcHhyZWZ7UHJvZ3NwYWNlcyBJbiBQeXRob24sLFByb2dyYW0gU3Bh Y2VzIEluIFB5dGhvbn0pLiAgVGhlIGV2ZW50CitAQCAtODYyNCw2ICs4NjQ1LDEwNiBAQCBoYW5k bGVycywgYWxsIG9mIHRoZSBtYXRjaGluZyBoYW5kbGVycyBhcmUgZW5hYmxlZC4gIFRoZQorIEBj b2Rle2VuYWJsZWR9IGZpZWxkIG9mIGVhY2ggbWF0Y2hpbmcgaGFuZGxlciBpcyBzZXQgdG8gQGNv ZGV7VHJ1ZX0uCisgQGVuZCB0YWJsZQorIAorK0Bub2RlIENvcmUgRmlsZXMgSW4gUHl0aG9uCisr QHN1YnN1YnNlY3Rpb24gQ29yZSBGaWxlcyBJbiBQeXRob24KKytAY2luZGV4IHB5dGhvbiwgY29y ZSBmaWxlcworKworK1doZW4gYSBjb3JlIGZpbGUgaXMgbG9hZGVkIGludG8gYW4gaW5mZXJpb3Ig KEBweHJlZntJbmZlcmlvcnMgSW4KKytQeXRob259KSBmb3IgZXhhbWluYXRpb24gKEBweHJlZntj b3JlLWZpbGUgY29tbWFuZH0pLCBpbmZvcm1hdGlvbgorK2Fib3V0IHRoZSBjb3JlIGZpbGUgaXMg Y29udGFpbmVkIGluIGEgQGNvZGV7Z2RiLkNvcmVmaWxlfSBvYmplY3QuCisrCisrVGhlIEBjb2Rl e2dkYi5Db3JlZmlsZX0gZm9yIGFuIGluZmVyaW9yIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyB0aGUK KytAY29kZXtJbmZlcmlvci5jb3JlZmlsZX0gYXR0cmlidXRlLiAgVGhpcyB3aWxsIGJlIEBjb2Rl e05vbmV9IGlmCisrbm8gY29yZSBmaWxlIGlzIGxvYWRlZC4KKysKKytBIEBjb2Rle2dkYi5Db3Jl ZmlsZX0gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisrCisrQGRlZnZhciBD b3JlZmlsZS5maWxlbmFtZQorK1RoaXMgcmVhZCBvbmx5IGF0dHJpYnV0ZSBjb250YWlucyBhIG5v bi1lbXB0eSBzdHJpbmcsIHRoZSBmaWxlIG5hbWUgb2YKKyt0aGUgY29yZSBmaWxlLiAgQXR0ZW1w dGluZyB0byBhY2Nlc3MgdGhpcyBhdHRyaWJ1dGUgb24gYW4gaW52YWxpZAorK0Bjb2Rle2dkYi5D b3JlZmlsZX0gb2JqZWN0IHdpbGwgcmFpc2UgYSBAY29kZXtSdW50aW1lRXJyb3J9IGV4Y2VwdGlv bi4KKytAZW5kIGRlZnZhcgorKworK0EgQGNvZGV7Z2RiLkNvcmVmaWxlfSBvYmplY3QgaGFzIHRo ZSBmb2xsb3dpbmcgbWV0aG9kczoKKysKKytAZGVmdW4gQ29yZWZpbGUuaXNfdmFsaWQgKCkKKytS ZXR1cm5zIEBjb2Rle1RydWV9IGlmIHRoZSBAY29kZXtnZGIuQ29yZWZpbGV9IG9iamVjdCBpcyB2 YWxpZCwKKytAY29kZXtGYWxzZX0gaWYgbm90LiAgQSBAY29kZXtnZGIuQ29yZWZpbGV9IG9iamVj dCB3aWxsIGJlY29tZSBpbnZhbGlkCisrd2hlbiB0aGUgY29yZSBmaWxlIGlzIHVubG9hZGVkIGZy b20gdGhlIGluZmVyaW9yIHVzaW5nIHRoZQorK0BrYmR7Y29yZS1maWxlfSBjb21tYW5kIChAcHhy ZWZ7Y29yZS1maWxlIGNvbW1hbmR9KSwgb3IgaWYgdGhlCisraW5mZXJpb3IgaW4gd2hpY2ggdGhl IGNvcmUgZmlsZSBpcyBsb2FkZWQgaXMgZGVsZXRlZC4gIEFsbCBvdGhlcgorK0Bjb2Rle2dkYi5D b3JlZmlsZX0gbWV0aG9kcyBhbmQgYXR0cmlidXRlcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBp ZgorK2l0IGlzIGludmFsaWQgYXQgdGhlIHRpbWUgdGhlIG1ldGhvZCBpcyBjYWxsZWQsIG9yIHRo ZSBhdHRyaWJ1dGUKKythY2Nlc3NlZC4KKytAZW5kIGRlZnVuCisrCisrQGRlZnVuIENvcmVmaWxl Lm1hcHBlZF9maWxlcyAoKQorK1JldHVybiBhIGxpc3Qgb2YgQGNvZGV7Z2RiLkNvcmVmaWxlTWFw cGVkRmlsZX0gKHNlZSBiZWxvdykgb2JqZWN0cworK3JlcHJlc2VudGluZyBmaWxlcyB0aGF0IHdl cmUgbWFwcGVkIGludG8gdGhlIHByb2Nlc3Mgd2hlbiB0aGUgY29yZQorK2ZpbGUgd2FzIGNyZWF0 ZWQuICBUaGlzIGluZm9ybWF0aW9uIGlzIHJlYWQgZnJvbSB0aGUgQHNhbXB7TlRfRklMRX0KKytj b3JlIGZpbGUgbm90ZSBvbiBMaW51eC4gIE5vdCBldmVyeSB0YXJnZXQgc3VwcG9ydHMgYWNjZXNz aW5nIHRoaXMKKytpbmZvcm1hdGlvbiwgZm9yIHRhcmdldHMgd2l0aG91dCBzdXBwb3J0LCBhbiBl bXB0eSBsaXN0IHdpbGwgYmUKKytyZXR1cm5lZC4KKytAZW5kIGRlZnVuCisrCisrT25lIG1heSBh ZGQgYXJiaXRyYXJ5IGF0dHJpYnV0ZXMgdG8gQGNvZGV7Z2RiLkNvcmVmaWxlfSBvYmplY3RzIGlu IHRoZQorK3VzdWFsIFB5dGhvbiB3YXkuICBUaGlzIGlzIHVzZWZ1bCBpZiwgZm9yIGV4YW1wbGUs IG9uZSBuZWVkcyB0byBkbworK3NvbWUgZXh0cmEgcmVjb3JkIGtlZXBpbmcgYXNzb2NpYXRlZCB3 aXRoIHRoZSBjb3JlZmlsZS4KKytAeHJlZntjaG9vc2luZyBhdHRyaWJ1dGUgbmFtZXN9LCBmb3Ig Z3VpZGFuY2Ugb24gc2VsZWN0aW5nIGEgc3VpdGFibGUKKytuYW1lIGZvciBuZXcgYXR0cmlidXRl cy4KKysKKytUaGUgQGNvZGV7Q29yZWZpbGUubWFwcGVkX2ZpbGVzICgpfSBtZXRob2QgcmV0dXJu cyBhIGxpc3Qgb2YKKytAY29kZXtnZGIuQ29yZWZpbGVNYXBwZWRGaWxlfSBvYmplY3RzLiAgRWFj aCBvZiB0aGVzZSBvYmplY3RzCisrcmVwcmVzZW50cyBhIGZpbGUgdGhhdCB3YXMgZnVsbHksIG9y IHBhcnRpYWxseSwgbWFwcGVkIGludG8gdGhlCisrcHJvY2Vzc2VzIGFkZHJlc3Mgc3BhY2Ugd2hl biB0aGUgY29yZSBmaWxlIHdhcyBjcmVhdGVkLgorKworK0EgQGNvZGV7Z2RiLkNvcmVmaWxlTWFw cGVkRmlsZX0gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisrCisrQGRlZnZh ciBDb3JlZmlsZU1hcHBlZEZpbGUuZmlsZW5hbWUKKytUaGlzIHJlYWQgb25seSBhdHRyaWJ1dGUg Y29udGFpbnMgYSBub24tZW1wdHkgc3RyaW5nLCB0aGUgZmlsZSBuYW1lIG9mCisrdGhlIG1hcHBl ZCBmaWxlLgorK0BlbmQgZGVmdmFyCisrCisrQGRlZnZhciBDb3JlZmlsZU1hcHBlZEZpbGUuYnVp bGRfaWQKKytUaGlzIHJlYWQgb25seSBhdHRyaWJ1dGUgY29udGFpbnMgYSBub24tZW1wdHkgc3Ry aW5nIG9yIEBjb2Rle05vbmV9LgorK1RoaXMgaXMgdGhlIGJ1aWxkLWlkIG9mIHRoZSBtYXBwZWQg ZmlsZSBleHRyYWN0ZWQgZnJvbSB0aGUgY29yZSBmaWxlLAorK29yIEBjb2Rle05vbmV9IGlmIHRo ZXJlIHdhcyBubyBidWlsZC1pZCwgb3IgQHZhbHVle0dEQk59IHdhcyB1bmFibGUgdG8KKytleHRy YWN0IHRoZSBidWlsZC1pZC4KKytAZW5kIGRlZnZhcgorKworK0BkZWZ2YXIgQ29yZWZpbGVNYXBw ZWRGaWxlLmlzX21haW5fZXhlY3V0YWJsZQorK1RoaXMgcmVhZCBvbmx5IGF0dHJpYnV0ZSBpcyBA Y29kZXtUcnVlfSBpZiBAdmFsdWV7R0RCTn0gYmVsaWV2ZXMgdGhpcworK21hcHBpbmcgcmVwcmVz ZW50cyB0aGUgbWFpbiBleGVjdXRhYmxlIGZvciB3aGljaCB0aGlzIGNvcmUgZmlsZSB3YXMKKytj cmVhdGVkLiAgVGhpcyB3aWxsIGJlIEBjb2Rle0ZhbHNlfSBmb3IgYWxsIG90aGVyIG1hcHBpbmdz LgorK0BlbmQgZGVmdmFyCisrCisrQGRlZnZhciBDb3JlZmlsZU1hcHBlZEZpbGUucmVnaW9ucwor K1RoaXMgcmVhZCBvbmx5IGF0dHJpYnV0ZSBjb250YWlucyBhIGxpc3Qgb2YKKytAY29kZXtnZGIu Q29yZWZpbGVNYXBwZWRGaWxlUmVnaW9ufSBvYmplY3RzLiAgRWFjaCBvZiB0aGVzZSBvYmplY3Rz CisrZGVzY3JpYmVzIGEgcmVnaW9uIG9mIHRoZSBmaWxlIHRoYXQgd2FzIG1hcHBlZCBpbnRvIHRo ZSBwcm9jZXNzIHdoZW4KKyt0aGUgY29yZSBmaWxlIHdhcyBjcmVhdGVkLCBmdXJ0aGVyIGRldGFp bHMgYXJlIGdpdmVuIGJlbG93LgorK0BlbmQgZGVmdmFyCisrCisrVGhlIEBjb2Rle2dkYi5Db3Jl ZmlsZU1hcHBlZEZpbGVSZWdpb259IG9iamVjdCBkZXNjcmliZXMgd2hpY2ggcGFydCBvZgorK2Eg ZmlsZSB0aGF0IHdhcyBtYXBwZWQgaW50byBhIHByb2Nlc3Mgd2hlbiB0aGUgY29yZSBmaWxlIHdh cyBjcmVhdGVkLgorKworK0EgQGNvZGV7Z2RiLkNvcmVmaWxlTWFwcGVkRmlsZX0gb2JqZWN0IGhh cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisrCisrQGRlZnZhciBDb3JlZmlsZU1hcHBlZEZp bGVSZWdpb24uc3RhcnQKKytUaGlzIHJlYWQgb25seSBhdHRyaWJ1dGUgY29udGFpbnMgdGhlIHN0 YXJ0IGFkZHJlc3Mgb2YgdGhpcyBtYXBwaW5nCisrd2l0aGluIHRoZSBpbmZlcmlvci4KKytAZW5k IGRlZnZhcgorKworK0BkZWZ2YXIgQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uLmVuZAorK1RoaXMg cmVhZCBvbmx5IGF0dHJpYnV0ZSBjb250YWlucyBlbmQgYWRkcmVzcyBvZiB0aGlzIG1hcHBpbmcg d2l0aGluCisrdGhlIGluZmVyaW9yLgorK0BlbmQgZGVmdmFyCisrCisrQGRlZnZhciBDb3JlZmls ZU1hcHBlZEZpbGVSZWdpb24uZmlsZV9vZmZzZXQKKytUaGlzIHJlYWQgb25seSBhdHRyaWJ1dGUg Y29udGFpbnMgdGhlIG9mZnNldCB3aXRoaW4gdGhlIG1hcHBlZCBmaWxlCisrZm9yIHRoaXMgbWFw cGluZy4KKytAZW5kIGRlZnZhcgorKworIEBub2RlIFB5dGhvbiBBdXRvLWxvYWRpbmcKKyBAc3Vi c2VjdGlvbiBQeXRob24gQXV0by1sb2FkaW5nCisgQGNpbmRleCBQeXRob24gYXV0by1sb2FkaW5n CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYmNvcmUuaCBiL2dkYi9nZGJjb3JlLmgKKy0tLSBhL2dkYi9n ZGJjb3JlLmgKKysrKyBiL2dkYi9nZGJjb3JlLmgKK0BAIC0yNTgsNCArMjU4LDQ3IEBAIHN0ZDo6 b3B0aW9uYWw8Y29yZV90YXJnZXRfbWFwcGVkX2ZpbGVfaW5mbz4KKyBjb3JlX3RhcmdldF9maW5k X21hcHBlZF9maWxlIChjb25zdCBjaGFyICpmaWxlbmFtZSwKKyAJCQkgICAgICBzdGQ6Om9wdGlv bmFsPENPUkVfQUREUj4gYWRkcik7CisgCisrLyogVHlwZSBob2xkaW5nIGluZm9ybWF0aW9uIGFi b3V0IGEgc2luZ2xlIGZpbGUgbWFwcGVkIGludG8gdGhlIGluZmVyaW9yCisrICAgYXQgdGhlIHBv aW50IHdoZW4gdGhlIGNvcmUgZmlsZSB3YXMgY3JlYXRlZC4gIEFzc29jaWF0ZXMgYSBidWlsZC1p ZAorKyAgIHdpdGggdGhlIGxpc3Qgb2YgcmVnaW9ucyB0aGUgZmlsZSBpcyBtYXBwZWQgaW50by4g ICovCisrc3RydWN0IGNvcmVfbWFwcGVkX2ZpbGUKKyt7CisrICAvKiBUeXBlIGZvciBhIHJlZ2lv biBvZiBhIGZpbGUgdGhhdCB3YXMgbWFwcGVkIGludG8gdGhlIGluZmVyaW9yIHdoZW4KKysgICAg IHRoZSBjb3JlIGZpbGUgd2FzIGdlbmVyYXRlZC4gICovCisrICBzdHJ1Y3QgcmVnaW9uCisrICB7 CisrICAgIC8qIENvbnN0cnVjdG9yLiAgIFNlZSBtZW1iZXIgdmFyaWFibGVzIGZvciBhcmd1bWVu dCBkZXNjcmlwdGlvbnMuICAqLworKyAgICByZWdpb24gKENPUkVfQUREUiBzdGFydF8sIENPUkVf QUREUiBlbmRfLCBDT1JFX0FERFIgZmlsZV9vZnNfKQorKyAgICAgIDogc3RhcnQgKHN0YXJ0Xyks CisrCWVuZCAoZW5kXyksCisrCWZpbGVfb2ZzIChmaWxlX29mc18pCisrICAgIHsgLyogTm90aGlu Zy4gICovIH0KKysKKysgICAgLyogVGhlIGluZmVyaW9yIGFkZHJlc3MgZm9yIHRoZSBzdGFydCBv ZiB0aGUgbWFwcGVkIHJlZ2lvbi4gICovCisrICAgIENPUkVfQUREUiBzdGFydDsKKysKKysgICAg LyogVGhlIGluZmVyaW9yIGFkZHJlc3MgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG1hcHBlZCByZWdp b24uICAqLworKyAgICBDT1JFX0FERFIgZW5kOworKworKyAgICAvKiBUaGUgb2Zmc2V0IHdpdGhp biB0aGUgbWFwcGVkIGZpbGUgZm9yIHRoaXMgY29udGVudC4gICovCisrICAgIENPUkVfQUREUiBm aWxlX29mczsKKysgIH07CisrCisrICAvKiBUaGUgZmlsZW5hbWUgYXMgcmVjb3JkZWQgaW4gdGhl IGNvcmUgZmlsZS4gICovCisrICBzdGQ6OnN0cmluZyBmaWxlbmFtZTsKKysKKysgIC8qIElmIG5v dCBudWxscHRyLCB0aGVuIHRoaXMgaXMgdGhlIGJ1aWxkLWlkIGFzc29jaWF0ZWQgd2l0aCB0aGlz CisrICAgICBmaWxlLiAgKi8KKysgIGNvbnN0IGJmZF9idWlsZF9pZCAqYnVpbGRfaWQgPSBudWxs cHRyOworKworKyAgLyogQWxsIHRoZSBtYXBwZWQgcmVnaW9ucyBvZiB0aGlzIGZpbGUuICAqLwor KyAgc3RkOjp2ZWN0b3I8cmVnaW9uPiByZWdpb25zOworKworKyAgLyogVHJ1ZSBpZiB0aGlzIGlz IHRoZSBtYWluIGV4ZWN1dGFibGUuICAqLworKyAgYm9vbCBpc19tYWluX2V4ZWMgPSBmYWxzZTsK Kyt9OworKworK2V4dGVybiBzdGQ6OnZlY3Rvcjxjb3JlX21hcHBlZF9maWxlPiBnZGJfcmVhZF9j b3JlX2ZpbGVfbWFwcGluZ3MKKysgIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGJm ZCAqY2JmZCk7CisrCisgI2VuZGlmIC8qIEdEQl9HREJDT1JFX0ggKi8KK2RpZmYgLS1naXQgYS9n ZGIvb2JzZXJ2YWJsZS5jIGIvZ2RiL29ic2VydmFibGUuYworLS0tIGEvZ2RiL29ic2VydmFibGUu YworKysrIGIvZ2RiL29ic2VydmFibGUuYworQEAgLTc2LDYgKzc2LDcgQEAgREVGSU5FX09CU0VS VkFCTEUgKHRhcmdldF9wb3N0X3dhaXQpOworIERFRklORV9PQlNFUlZBQkxFIChuZXdfcHJvZ3Jh bV9zcGFjZSk7CisgREVGSU5FX09CU0VSVkFCTEUgKGZyZWVfcHJvZ3JhbV9zcGFjZSk7CisgREVG SU5FX09CU0VSVkFCTEUgKHR1aV9lbmFibGVkKTsKKytERUZJTkVfT0JTRVJWQUJMRSAoY29yZV9m aWxlX2NoYW5nZWQpOworIAorIH0gLyogbmFtZXNwYWNlIG9ic2VydmVycyAqLworIH0gLyogbmFt ZXNwYWNlIGdkYiAqLworZGlmZiAtLWdpdCBhL2dkYi9vYnNlcnZhYmxlLmggYi9nZGIvb2JzZXJ2 YWJsZS5oCistLS0gYS9nZGIvb2JzZXJ2YWJsZS5oCisrKysgYi9nZGIvb2JzZXJ2YWJsZS5oCitA QCAtMjYwLDYgKzI2MCwxMiBAQCBleHRlcm4gb2JzZXJ2YWJsZSA8cHJvZ3JhbV9zcGFjZSAqLyog cHNwYWNlICovPiBmcmVlX3Byb2dyYW1fc3BhY2U7CisgCisgZXh0ZXJuIG9ic2VydmFibGU8Ym9v bCAvKiBlbmFibGVkICovPiB0dWlfZW5hYmxlZDsKKyAKKysvKiBUaGUgY29yZSBmaWxlIGxvYWRl ZCBpbnRvIHRoZSBwcm9ncmFtIHNwYWNlIGluZmVyaW9yIElORiBoYXMgY2hhbmdlZC4KKysgICBU aGUgcHJvY2VzcyBvZiBjaGFuZ2luZyBoYXMgY29tcGxldGVkLCBpLmUuIHdoZW4gdW5sb2FkaW5n LCB0aGUgdW5sb2FkCisrICAgaXMgbm93IGNvbXBsZXRlLiAgV2hlbiBsb2FkaW5nIGEgbmV3IGNv cmUgZmlsZSwgdGhlIGxvYWQgaXMgY29tcGxldGUsCisrICAgc2hhcmVkIGxpYnJhcmllcyBoYXZl IGJlZW4gbG9hZGVkLCByZWdpc3RlcnMgYW5kIHRocmVhZHMgcmVhZCBpbiwgZXRjLiAgKi8KKytl eHRlcm4gb2JzZXJ2YWJsZTxpbmZlcmlvciAqLyogaW5mICovPiBjb3JlX2ZpbGVfY2hhbmdlZDsK KysKKyB9IC8qIG5hbWVzcGFjZSBvYnNlcnZlcnMgKi8KKyAKKyB9IC8qIG5hbWVzcGFjZSBnZGIg Ki8KK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL2V2ZW50cy5weSBiL2dkYi9w eXRob24vbGliL2dkYi9kYXAvZXZlbnRzLnB5CistLS0gYS9nZGIvcHl0aG9uL2xpYi9nZGIvZGFw L2V2ZW50cy5weQorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9ldmVudHMucHkKK0BAIC0x NjEsNyArMTYxLDcgQEAgX2V4cGVjdGVkX3BhdXNlID0gRmFsc2UKKyAKKyAKKyBAaW5fZ2RiX3Ro cmVhZAorLWRlZiBleGVjX2FuZF9leHBlY3Rfc3RvcChjbWQsIGV4cGVjdGVkX3BhdXNlPUZhbHNl LCBwcm9wYWdhdGVfZXhjZXB0aW9uPUZhbHNlKToKKytkZWYgZXhlY19hbmRfZXhwZWN0X3N0b3Ao Y21kLCBleHBlY3RlZF9wYXVzZT1GYWxzZSk6CisgICAgICIiIkEgd3JhcHBlciBmb3IgZXhlY19h bmRfbG9nIHRoYXQgc2V0cyB0aGUgY29udGludWUtc3VwcHJlc3Npb24gZmxhZy4KKyAKKyAgICAg V2hlbiBFWFBFQ1RFRF9QQVVTRSBpcyBUcnVlLCBhIHN0b3AgdGhhdCBsb29rcyBsaWtlIGEgcGF1 c2UgKGUuZy4sCitAQCAtMTc0LDcgKzE3NCw3IEBAIGRlZiBleGVjX2FuZF9leHBlY3Rfc3RvcChj bWQsIGV4cGVjdGVkX3BhdXNlPUZhbHNlLCBwcm9wYWdhdGVfZXhjZXB0aW9uPUZhbHNlKToKKyAg ICAgIyBjb250aW51aW5nLgorICAgICBfc3VwcHJlc3NfY29udCA9IG5vdCBleHBlY3RlZF9wYXVz ZQorICAgICAjIEZJWE1FIGlmIHRoZSBjYWxsIGZhaWxzIHNob3VsZCB3ZSBjbGVhciBfc3VwcHJl c3NfY29udD8KKy0gICAgZXhlY19hbmRfbG9nKGNtZCwgcHJvcGFnYXRlX2V4Y2VwdGlvbikKKysg ICAgZXhlY19hbmRfbG9nKGNtZCkKKyAKKyAKKyAjIE1hcCBmcm9tIGdkYiBzdG9wIHJlYXNvbnMg dG8gREFQIHN0b3AgcmVhc29ucy4gIFNvbWUgb2YgdGhlc2UgY2FuJ3QKK0BAIC0yNzYsNiArMjc2 LDMxIEBAIGRlZiBfb25faW5mZXJpb3JfY2FsbChldmVudCk6CisgICAgICAgICAgICAgc2VuZF9l dmVudCgic3RvcHBlZCIsIG9iaikKKyAKKyAKKytAaW5fZ2RiX3RocmVhZAorK2RlZiBfb25fY29y ZWZpbGVfY2hhbmdlZChldmVudCk6CisrICAgICMgSWdub3JlIGV2ZW50cyByZWxhdGluZyB0byBj b3JlZmlsZSBiZWluZyB1bmxvYWRlZC4KKysgICAgaWYgZXZlbnQuaW5mZXJpb3IuY29yZWZpbGUg aXMgTm9uZToKKysgICAgICAgIHJldHVybgorKworKyAgICAjIENvcmVmaWxlcyBhcmUgdXN1YWxs eSBhdHRhY2hlZCB2aWEgdGhlICdhdHRhY2gnIHJlcXVlc3QsIHdoaWNoCisrICAgICMgc2V0cyB0 aGUgZ2xvYmFsIF9leHBlY3RlZF9zdG9wX3JlYXNvbiB0byAnYXR0YWNoJy4gIEl0IGlzCisrICAg ICMgYmVjYXVzZSBvZiB0aGlzIHRoYXQgaXQgaXMgc2FmZSB0byBmb3J3YXJkIHRvIF9vbl9zdG9w LCBhcyB3aGVuCisrICAgICMgX2V4cGVjdGVkX3N0b3BfcmVhc29uIGlzIHNldCBfb25fc3RvcCBk b2Vzbid0IHJlYWQgdGhlCisrICAgICMgZXZlbnQuZGV0YWlscywgd2hpY2ggRVZFTlQgZG9lc24n dCBoYXZlLgorKyAgICAjCisrICAgICMgSG93ZXZlciwgaWYgdGhlIHVzZXIgbG9hZHMgYSBjb3Jl IGZpbGUgdmlhIHNvbWUgbWVjaGFuaXNtIG90aGVyCisrICAgICMgdGhhbiB0aGUgJ2F0dGFjaCcg cmVxdWVzdCwgZS5nLiB0aGV5IHVzZSB0aGUgcmVwbCB0byBpc3N1ZSBhIEdEQgorKyAgICAjICdj b3JlLWZpbGUnIGNvbW1hbmQsIHRoZW4gd2hlbiB3ZSBnZXQgaGVyZSBfZXhwZWN0ZWRfc3RvcF9y ZWFzb24KKysgICAgIyB3aWxsIG5vdCBiZSBzZXQuCisrICAgICMKKysgICAgIyBTbywgaW4gZWl0 aGVyIGNhc2UsIHNldCBfZXhwZWN0ZWRfc3RvcF9yZWFzb24gbm93LgorKyAgICBnbG9iYWwgX2V4 cGVjdGVkX3N0b3BfcmVhc29uCisrICAgIF9leHBlY3RlZF9zdG9wX3JlYXNvbiA9ICJhdHRhY2gi CisrCisrICAgICMgQSBjb3JlZmlsZSB3YXMgbG9hZGVkLCBhbm5vdW5jZSB0aGF0IHRoZSBpbmZl cmlvciBoYXMgc3RvcHBlZC4KKysgICAgX29uX3N0b3AoZXZlbnQpCisrCisrCisgZ2RiLmV2ZW50 cy5zdG9wLmNvbm5lY3QoX29uX3N0b3ApCisgZ2RiLmV2ZW50cy5leGl0ZWQuY29ubmVjdChfb25f ZXhpdCkKKyBnZGIuZXZlbnRzLm5ld190aHJlYWQuY29ubmVjdChfbmV3X3RocmVhZCkKK0BAIC0y ODQsMyArMzA5LDQgQEAgZ2RiLmV2ZW50cy5jb250LmNvbm5lY3QoX2NvbnQpCisgZ2RiLmV2ZW50 cy5uZXdfb2JqZmlsZS5jb25uZWN0KF9uZXdfb2JqZmlsZSkKKyBnZGIuZXZlbnRzLmZyZWVfb2Jq ZmlsZS5jb25uZWN0KF9vYmpmaWxlX3JlbW92ZWQpCisgZ2RiLmV2ZW50cy5pbmZlcmlvcl9jYWxs LmNvbm5lY3QoX29uX2luZmVyaW9yX2NhbGwpCisrZ2RiLmV2ZW50cy5jb3JlZmlsZV9jaGFuZ2Vk LmNvbm5lY3QoX29uX2NvcmVmaWxlX2NoYW5nZWQpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9s aWIvZ2RiL2RhcC9sYXVuY2gucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL2xhdW5jaC5weQor LS0tIGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9sYXVuY2gucHkKKysrKyBiL2dkYi9weXRob24v bGliL2dkYi9kYXAvbGF1bmNoLnB5CitAQCAtNTksMTIgKzU5LDE2IEBAIGNsYXNzIF9MYXVuY2hP ckF0dGFjaERlZmVycmVkUmVxdWVzdChEZWZlcnJlZFJlcXVlc3QpOgorICAgICAgICAgc3VwZXIo KS5yZXNjaGVkdWxlKCkKKyAKKyAKKysjIEhhbmRsZSB3aGl0ZXNwYWNlLCBxdW90ZXMsIGFuZCBi YWNrc2xhc2hlcyBoZXJlLiAgRXhhY3RseSB3aGF0CisrIyB0byBxdW90ZSBkZXBlbmRzIG9uIGxp YmliZXJ0eSdzIGJ1aWxkYXJndiBhbmQgc2FmZS1jdHlwZS4KKytkZWYgZXNjYXBlX2ZpbGVuYW1l KGZpbGVuYW1lKToKKysgICAgcmV0dXJuIHJlLnN1YigiWyBcdFxuXHJcZlx2XFxcXCdcIl0iLCAi XFxcXFxcZzwwPiIsIGZpbGVuYW1lKQorKworKworICMgQSB3cmFwcGVyIGZvciB0aGUgJ2ZpbGUn IGNvbW1hbmQgdGhhdCBjb3JyZWN0bHkgcXVvdGVzIGl0cyBhcmd1bWVudC4KKyBAaW5fZ2RiX3Ro cmVhZAorIGRlZiBmaWxlX2NvbW1hbmQocHJvZ3JhbSk6CistICAgICMgSGFuZGxlIHdoaXRlc3Bh Y2UsIHF1b3RlcywgYW5kIGJhY2tzbGFzaGVzIGhlcmUuICBFeGFjdGx5IHdoYXQKKy0gICAgIyB0 byBxdW90ZSBkZXBlbmRzIG9uIGxpYmliZXJ0eSdzIGJ1aWxkYXJndiBhbmQgc2FmZS1jdHlwZS4K Ky0gICAgcHJvZ3JhbSA9IHJlLnN1YigiWyBcdFxuXHJcZlx2XFxcXCdcIl0iLCAiXFxcXFxcZzww PiIsIHByb2dyYW0pCisrICAgIHByb2dyYW0gPSBlc2NhcGVfZmlsZW5hbWUocHJvZ3JhbSkKKyAg ICAgZXhlY19hbmRfbG9nKCJmaWxlICIgKyBwcm9ncmFtKQorIAorIAorQEAgLTEzMiw2ICsxMzYs NyBAQCBkZWYgYXR0YWNoKAorICAgICBwcm9ncmFtOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAg ICAgcGlkOiBPcHRpb25hbFtpbnRdID0gTm9uZSwKKyAgICAgdGFyZ2V0OiBPcHRpb25hbFtzdHJd ID0gTm9uZSwKKysgICAgY29yZUZpbGU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAqKmFy Z3MsCisgKToKKyAgICAgIyBUaGUgYWN0dWFsIGF0dGFjaCBpcyBoYW5kbGVkIGJ5IHRoaXMgZnVu Y3Rpb24uCitAQCAtMTQzLDExICsxNDgsMTQgQEAgZGVmIGF0dGFjaCgKKyAgICAgICAgICAgICBj bWQgPSAiYXR0YWNoICIgKyBzdHIocGlkKQorICAgICAgICAgZWxpZiB0YXJnZXQgaXMgbm90IE5v bmU6CisgICAgICAgICAgICAgY21kID0gInRhcmdldCByZW1vdGUgIiArIHRhcmdldAorKyAgICAg ICAgZWxpZiBjb3JlRmlsZSBpcyBub3QgTm9uZToKKysgICAgICAgICAgICBjbWQgPSAiY29yZS1m aWxlICIgKyBlc2NhcGVfZmlsZW5hbWUoY29yZUZpbGUpCisgICAgICAgICBlbHNlOgorLSAgICAg ICAgICAgIHJhaXNlIERBUEV4Y2VwdGlvbigiYXR0YWNoIHJlcXVpcmVzIGVpdGhlciAncGlkJyBv ciAndGFyZ2V0JyIpCisrICAgICAgICAgICAgcmFpc2UgREFQRXhjZXB0aW9uKCJhdHRhY2ggcmVx dWlyZXMgZWl0aGVyICdwaWQnLCAndGFyZ2V0Jywgb3IgJ2NvcmVGaWxlJyIpCisgICAgICAgICBl eHBlY3RfcHJvY2VzcygiYXR0YWNoIikKKyAgICAgICAgIGV4cGVjdF9zdG9wKCJhdHRhY2giKQor ICAgICAgICAgZXhlY19hbmRfbG9nKGNtZCkKKysKKyAgICAgICAgICMgQXR0YWNoIHJlc3BvbnNl IGRvZXMgbm90IGhhdmUgYSBib2R5LgorICAgICAgICAgcmV0dXJuIE5vbmUKKyAKK2RpZmYgLS1n aXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL25leHQucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIv ZGFwL25leHQucHkKKy0tLSBhL2dkYi9weXRob24vbGliL2dkYi9kYXAvbmV4dC5weQorKysrIGIv Z2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9uZXh0LnB5CitAQCAtNzYsNyArNzYsNyBAQCBkZWYgc3Rl cF9pbigKKyBAcmVxdWVzdCgic3RlcE91dCIpCisgZGVmIHN0ZXBfb3V0KCosIHRocmVhZElkOiBp bnQsIHNpbmdsZVRocmVhZDogYm9vbCA9IEZhbHNlLCAqKmFyZ3MpOgorICAgICBfaGFuZGxlX3Ro cmVhZF9zdGVwKHRocmVhZElkLCBzaW5nbGVUaHJlYWQsIFRydWUpCistICAgIGV4ZWNfYW5kX2V4 cGVjdF9zdG9wKCJmaW5pc2ggJiIsIHByb3BhZ2F0ZV9leGNlcHRpb249VHJ1ZSkKKysgICAgZXhl Y19hbmRfZXhwZWN0X3N0b3AoImZpbmlzaCAmIikKKyAKKyAKKyBAcmVxdWVzdCgiY29udGludWUi KQorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9kYXAvc2VydmVyLnB5IGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2RhcC9zZXJ2ZXIucHkKKy0tLSBhL2dkYi9weXRob24vbGliL2dkYi9kYXAv c2VydmVyLnB5CisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL3NlcnZlci5weQorQEAgLTE5 LDYgKzE5LDcgQEAgaW1wb3J0IGluc3BlY3QKKyBpbXBvcnQganNvbgorIGltcG9ydCB0aHJlYWRp bmcKKyBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCisrZnJvbSB0eXBpbmcg aW1wb3J0IE9wdGlvbmFsCisgCisgaW1wb3J0IGdkYgorIAorQEAgLTYxMCwxMSArNjExLDI5IEBA IGRlZiB0ZXJtaW5hdGUoKiphcmdzKToKKyAgICAgZXhlY19hbmRfbG9nKCJraWxsIikKKyAKKyAK KytAaW5fZ2RiX3RocmVhZAorK2RlZiBfZGlzY29ubmVjdF9vcl9raWxsKHRlcm1pbmF0ZTogT3B0 aW9uYWxbYm9vbF0pOgorKyAgICBpbmYgPSBnZGIuc2VsZWN0ZWRfaW5mZXJpb3IoKQorKyAgICBp ZiBpbmYuY29ubmVjdGlvbiBpcyBOb25lOgorKyAgICAgICAgIyBOb3RoaW5nIHRvIGRvIGhlcmUu CisrICAgICAgICByZXR1cm4KKysgICAgaWYgdGVybWluYXRlIGlzIE5vbmU6CisrICAgICAgICAj IFRoZSBkZWZhdWx0IGRlcGVuZHMgb24gd2hldGhlciB0aGUgaW5mZXJpb3Igd2FzIGF0dGFjaGVk IG9yCisrICAgICAgICAjIGxhdW5jaGVkLgorKyAgICAgICAgdGVybWluYXRlID0gbm90IGluZi53 YXNfYXR0YWNoZWQKKysKKysgICAgaWYgaW5mLmNvcmVmaWxlIGlzIG5vdCBOb25lOgorKyAgICAg ICAgZXhlY19hbmRfbG9nKCJjb3JlLWZpbGUiKQorKyAgICBlbGlmIHRlcm1pbmF0ZToKKysgICAg ICAgIGV4ZWNfYW5kX2xvZygia2lsbCIpCisrICAgIGVsaWYgaW5mLndhc19hdHRhY2hlZDoKKysg ICAgICAgIGV4ZWNfYW5kX2xvZygiZGV0YWNoIikKKysKKysKKyBAcmVxdWVzdCgiZGlzY29ubmVj dCIsIG9uX2RhcF90aHJlYWQ9VHJ1ZSwgZXhwZWN0X3N0b3BwZWQ9RmFsc2UpCisgQGNhcGFiaWxp dHkoInN1cHBvcnRUZXJtaW5hdGVEZWJ1Z2dlZSIpCistZGVmIGRpc2Nvbm5lY3QoKiwgdGVybWlu YXRlRGVidWdnZWU6IGJvb2wgPSBGYWxzZSwgKiphcmdzKToKKy0gICAgaWYgdGVybWluYXRlRGVi dWdnZWU6CistICAgICAgICBzZW5kX2dkYl93aXRoX3Jlc3BvbnNlKCJraWxsIikKKytkZWYgZGlz Y29ubmVjdCgqLCB0ZXJtaW5hdGVEZWJ1Z2dlZTogT3B0aW9uYWxbYm9vbF0gPSBOb25lLCAqKmFy Z3MpOgorKyAgICBzZW5kX2dkYl93aXRoX3Jlc3BvbnNlKGxhbWJkYTogX2Rpc2Nvbm5lY3Rfb3Jf a2lsbCh0ZXJtaW5hdGVEZWJ1Z2dlZSkpCisgICAgIF9zZXJ2ZXIuc2h1dGRvd24oKQorIAorIAor ZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9kYXAvc3RhcnR1cC5weSBiL2dkYi9weXRo b24vbGliL2dkYi9kYXAvc3RhcnR1cC5weQorLS0tIGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9z dGFydHVwLnB5CisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL3N0YXJ0dXAucHkKK0BAIC0y MDQsNyArMjA0LDcgQEAgZGVmIGxvZ19zdGFjayhsZXZlbD1Mb2dMZXZlbC5ERUZBVUxUKToKKyAK KyAKKyBAaW5fZ2RiX3RocmVhZAorLWRlZiBleGVjX2FuZF9sb2coY21kLCBwcm9wYWdhdGVfZXhj ZXB0aW9uPUZhbHNlKToKKytkZWYgZXhlY19hbmRfbG9nKGNtZCk6CisgICAgICIiIkV4ZWN1dGUg dGhlIGdkYiBjb21tYW5kIENNRC4KKyAgICAgSWYgbG9nZ2luZyBpcyBlbmFibGVkLCBsb2cgdGhl IGNvbW1hbmQgYW5kIGl0cyBvdXRwdXQuIiIiCisgICAgIGxvZygiKysrICIgKyBjbWQpCitAQCAt MjEzLDEwICsyMTMsMTAgQEAgZGVmIGV4ZWNfYW5kX2xvZyhjbWQsIHByb3BhZ2F0ZV9leGNlcHRp b249RmFsc2UpOgorICAgICAgICAgaWYgb3V0cHV0ICE9ICIiOgorICAgICAgICAgICAgIGxvZygi Pj4+ICIgKyBvdXRwdXQpCisgICAgIGV4Y2VwdCBnZGIuZXJyb3IgYXMgZToKKy0gICAgICAgIGlm IHByb3BhZ2F0ZV9leGNlcHRpb246CistICAgICAgICAgICAgcmFpc2UgREFQRXhjZXB0aW9uKHN0 cihlKSkgZnJvbSBlCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIGxvZ19zdGFjaygpCisr ICAgICAgICAjIERvbid0IG5vcm1hbGx5IHdhbnQgdG8gc2VlIHRoaXMsIGFzIGl0IGludGVyZmVy ZXMgd2l0aCB0aGUKKysgICAgICAgICMgdGVzdCBzdWl0ZS4KKysgICAgICAgIGxvZ19zdGFjayhM b2dMZXZlbC5GVUxMKQorKyAgICAgICAgcmFpc2UgREFQRXhjZXB0aW9uKHN0cihlKSkgZnJvbSBl CisgCisgCisgQGluX2dkYl90aHJlYWQKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWFsbC1l dmVudHMuZGVmIGIvZ2RiL3B5dGhvbi9weS1hbGwtZXZlbnRzLmRlZgorLS0tIGEvZ2RiL3B5dGhv bi9weS1hbGwtZXZlbnRzLmRlZgorKysrIGIvZ2RiL3B5dGhvbi9weS1hbGwtZXZlbnRzLmRlZgor QEAgLTQ2LDMgKzQ2LDQgQEAgR0RCX1BZX0RFRklORV9FVkVOVChleGVjdXRhYmxlX2NoYW5nZWQp CisgR0RCX1BZX0RFRklORV9FVkVOVChuZXdfcHJvZ3NwYWNlKQorIEdEQl9QWV9ERUZJTkVfRVZF TlQoZnJlZV9wcm9nc3BhY2UpCisgR0RCX1BZX0RFRklORV9FVkVOVCh0dWlfZW5hYmxlZCkKKytH REJfUFlfREVGSU5FX0VWRU5UKGNvcmVmaWxlX2NoYW5nZWQpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5 dGhvbi9weS1jb3JlZmlsZS5jIGIvZ2RiL3B5dGhvbi9weS1jb3JlZmlsZS5jCituZXcgZmlsZSBt b2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9weS1jb3JlZmlsZS5j CitAQCAtMCwwICsxLDcyMyBAQAorKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gY29yZSBmaWxlcy4K KysKKysgICBDb3B5cmlnaHQgKEMpIDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgi CisrI2luY2x1ZGUgInByb2dzcGFjZS5oIgorKyNpbmNsdWRlICJvYnNlcnZhYmxlLmgiCisrI2lu Y2x1ZGUgImluZmVyaW9yLmgiCisrI2luY2x1ZGUgImdkYmNvcmUuaCIKKysjaW5jbHVkZSAiZ2Ri c3VwcG9ydC9yc3AtbG93LmgiCisrI2luY2x1ZGUgInB5LWV2ZW50LmgiCisrCisrLyogQSBnZGIu Q29yZWZpbGUgb2JqZWN0LiAgKi8KKysKKytzdHJ1Y3QgY29yZWZpbGVfb2JqZWN0CisreworKyAg UHlPYmplY3RfSEVBRAorKworKyAgLyogVGhlIGluZmVyaW9yIHRoaXMgY29yZSBmaWxlIGlzIGF0 dGFjaGVkIHRvLiAgVGhpcyB3aWxsIGJlIHNldCB0byBOVUxMCisrICAgICB3aGVuIHRoZSBpbmZl cmlvciBpcyBkZWxldGVkLCBvciBpZiBhIGRpZmZlcmVudCBjb3JlIGZpbGUgaXMgbG9hZGVkCisr ICAgICBmb3IgdGhlIGluZmVyaW9yLiAgV2hlbiB0aGlzIGlzIE5VTEwgdGhlIGdkYi5Db3JlZmls ZSBvYmplY3QgaXMKKysgICAgIGNvbnNpZGVyZWQgaW52YWxpZC4qLworKyAgc3RydWN0IGluZmVy aW9yICppbmZlcmlvcjsKKysKKysgIC8qIERpY3Rpb25hcnkgaG9sZGluZyB1c2VyLWFkZGVkIGF0 dHJpYnV0ZXMuICBUaGlzIGlzIHRoZSBfX2RpY3RfXworKyAgICAgYXR0cmlidXRlIG9mIHRoZSBv YmplY3QuICBUaGlzIGlzIGFuIG93bmluZyByZWZlcmVuY2UuICAqLworKyAgUHlPYmplY3QgKmRp Y3Q7CisrCisrICAvKiBBIFR1cGxlIG9mIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGUgb2JqZWN0cy4g IFRoaXMgdHVwbGUgaXMgb25seSBjcmVhdGVkCisrICAgICB0aGUgZmlyc3QgdGltZSB0aGUgdXNl ciBjYWxscyBnZGIuQ29yZWZpbGUubWFwcGVkX2ZpbGVzKCksIHRoZSByZXN1bHQKKysgICAgIGlz IGNhY2hlZCBoZXJlLiAgSWYgdGhpcyBwb2ludGVyIGlzIG5vdCBOVUxMIHRoZW4gdGhpcyBpcyBh biBvd25pbmcKKysgICAgIHBvaW50ZXIgKGkuZS4gdGhpcyBvd25zIGEgcmVmZXJlbmNlIHRvIHRo ZSBUdXBsZSkuICAqLworKyAgUHlPYmplY3QgKm1hcHBlZF9maWxlczsKKyt9OworKworK2V4dGVy biBQeVR5cGVPYmplY3QgY29yZWZpbGVfb2JqZWN0X3R5cGUKKysgICAgQ1BZQ0hFQ0tFUl9UWVBF X09CSkVDVF9GT1JfVFlQRURFRiAoImNvcmVmaWxlX29iamVjdCIpOworKworKy8qIEEgZ2RiLkNv cmVmaWxlTWFwcGVkIG9iamVjdC4gICovCisrCisrc3RydWN0IGNvcmVmaWxlX21hcHBlZF9maWxl X29iamVjdAorK3sKKysgIFB5T2JqZWN0X0hFQUQKKysKKysgIC8qIFRoZSBuYW1lIG9mIGEgZmls ZSB0aGF0IHdhcyBtYXBwZWQgd2hlbiB0aGUgY29yZSBmaWxlIHdhcyBjcmVhdGVkLgorKyAgICAg VGhpcyBpcyBhICdzdHInIG9iamVjdC4gICovCisrICBQeU9iamVjdCAqZmlsZW5hbWU7CisrCisr ICAvKiBUaGUgYnVpbGQtaWQgb2YgYSBmaWxlIHRoYXQgd2FzIG1hcHBlZCB3aGVuIHRoZSBjb3Jl IGZpbGUgd2FzCisrICAgICBjcmVhdGVkLiAgVGhpcyBpcyBlaXRoZXIgYSAnc3RyJyBpZiB0aGUg ZmlsZSBoYWQgYSBidWlsZC1pZCwgb3IKKysgICAgICdOb25lJyBpZiB0aGVyZSB3YXMgbm8gYnVp bGQtaWQgZm9yIHRoaXMgZmlsZS4gICovCisrICBQeU9iamVjdCAqYnVpbGRfaWQ7CisrCisrICAv KiBBIExpc3Qgb2YgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbiBvYmplY3RzLiAgKi8KKysg IFB5T2JqZWN0ICpyZWdpb25zOworKworKyAgLyogVHJ1ZSBpZiB0aGlzIHJlcHJlc2VudHMgdGhl IG1haW4gZXhlY3V0YWJsZSBmcm9tIHdoaWNoIHRoZSBjb3JlIGZpbGUKKysgICAgIHdhcyBjcmVh dGVkLiAgKi8KKysgIGJvb2wgaXNfbWFpbl9leGVjX3A7CisrfTsKKysKKytleHRlcm4gUHlUeXBl T2JqZWN0IGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdF90eXBlCisrICAgIENQWUNIRUNLRVJf VFlQRV9PQkpFQ1RfRk9SX1RZUEVERUYgKCJjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3QiKTsK KysKKysvKiBBIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGVSZWdpb24gb2JqZWN0LiAgKi8KKysKKytz dHJ1Y3QgY29yZWZpbGVfbWFwcGVkX2ZpbGVfcmVnaW9uX29iamVjdAorK3sKKysgIFB5T2JqZWN0 X0hFQUQKKysKKysgIC8qIFRoZSBzdGFydCBhbmQgZW5kIGFkZHJlc3NlcyBmb3IgdGhpcyBtYXBw aW5nLCB0aGVzZSBhcmUgYWRkcmVzc2VzCisrICAgICB3aXRoaW4gdGhlIGluZmVyaW9yJ3MgYWRk cmVzcyBzcGFjZS4gICovCisrICBDT1JFX0FERFIgc3RhcnQ7CisrICBDT1JFX0FERFIgZW5kOwor KworKyAgLyogVGhlIG9mZnNldCB3aXRoaW4gdGhlIG1hcHBlZCBmaWxlIGZvciB0aGlzIG1hcHBp bmcuICAqLworKyAgVUxPTkdFU1QgZmlsZV9vZmZzZXQ7CisrfTsKKysKKytleHRlcm4gUHlUeXBl T2JqZWN0IGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3RfdHlwZQorKyAgICBDUFlD SEVDS0VSX1RZUEVfT0JKRUNUX0ZPUl9UWVBFREVGICgiY29yZWZpbGVfbWFwcGVkX2ZpbGVfcmVn aW9uX29iamVjdCIpOworKworKy8qIENsZWFyIHRoZSBpbmZlcmlvciBwb2ludGVyIGluIGEgQ29y ZWZpbGUgb2JqZWN0IE9CSiB3aGVuIGFuIGluZmVyaW9yIGlzCisrICAgZGVsZXRlZC4gICovCisr Cisrc3RydWN0IGluZmVyaW9yX2NvcmVmaWxlX2RlbGV0ZXIKKyt7CisrICB2b2lkIG9wZXJhdG9y KCkgKGNvcmVmaWxlX29iamVjdCAqb2JqKQorKyAgeworKyAgICBpZiAoIWdkYl9weXRob25faW5p dGlhbGl6ZWQpCisrICAgICAgcmV0dXJuOworKworKyAgICBnZGJweV9lbnRlciBlbnRlcl9weTsK KysKKysgICAgLyogV2hlbiBPQkpFQ1QgZ29lcyBvdXQgb2Ygc2NvcGUgdGhpcyB3aWxsIFB5X0RF Q1JFRiBvbiBPQkouICAqLworKyAgICBnZGJweV9yZWY8Y29yZWZpbGVfb2JqZWN0PiBvYmplY3Qg KG9iaik7CisrCisrICAgIC8qIENsZWFyaW5nIHRoZSBpbmZlcmlvciBwb2ludGVyIG1hcmtzIHRo ZSBnZGIuQ29yZWZpbGUgYXMgaW52YWxpZC4gICovCisrICAgIG9iamVjdC0+aW5mZXJpb3IgPSBu dWxscHRyOworKyAgfQorK307CisrCisrLyogU3RvcmUgYSBnZGIuQ29yZWZpbGUgb2JqZWN0IGlu IGFuIGluZmVyaW9yJ3MgcmVnaXN0cnkuICAqLworKworK3N0YXRpYyBjb25zdCByZWdpc3RyeTxp bmZlcmlvcj46OmtleTxjb3JlZmlsZV9vYmplY3QsCisrCQkJCSAgICAgaW5mZXJpb3JfY29yZWZp bGVfZGVsZXRlcj4KKysgICAgIGNmcHlfaW5mZXJpb3JfY29yZWZpbGVfZGF0YV9rZXk7CisrCisr LyogU2VlIHB5dGhvbi1pbnRlcm5hbC5oLiAgKi8KKysKKytnZGJweV9yZWY8PgorK2dkYnB5X2Nv cmVfZmlsZV9mcm9tX2luZmVyaW9yIChpbmZlcmlvciAqaW5mKQorK3sKKysgIGdkYl9hc3NlcnQg KGluZiAhPSBudWxscHRyKTsKKysgIGdkYl9hc3NlcnQgKGluZi0+cHNwYWNlICE9IG51bGxwdHIp OworKworKyAgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlID0gaW5mLT5wc3BhY2U7CisrCisrICBpZiAo cHNwYWNlLT5jb3JlX2JmZCAoKSA9PSBudWxscHRyKQorKyAgICByZXR1cm4gZ2RicHlfcmVmPD46 Om5ld19yZWZlcmVuY2UgKFB5X05vbmUpOworKworKyAgUHlPYmplY3QgKnJlc3VsdCA9IChQeU9i amVjdCAqKSBjZnB5X2luZmVyaW9yX2NvcmVmaWxlX2RhdGFfa2V5LmdldCAoaW5mKTsKKysgIGlm IChyZXN1bHQgPT0gbnVsbHB0cikKKysgICAgeworKyAgICAgIGdkYnB5X3JlZjxjb3JlZmlsZV9v YmplY3Q+IG9iamVjdAorKwkoUHlPYmplY3RfTmV3IChjb3JlZmlsZV9vYmplY3QsICZjb3JlZmls ZV9vYmplY3RfdHlwZSkpOworKyAgICAgIGlmIChvYmplY3QgPT0gbnVsbHB0cikKKysJcmV0dXJu IG51bGxwdHI7CisrCisrICAgICAgLyogRW5zdXJlIHRoZSAnaW5mZXJpb3InIGZpZWxkIGlzIHNl dCB0byBOVUxMLiAgSWYgdGhlIFB5RGljdF9OZXcKKysJIGNhbGwgZmFpbHMgdGhlbiB0aGUgZ2Ri LkNvcmVmaWxlIHdpbGwgYmUgZGlzY2FyZGVkIGFuZAorKwkgY2ZweV9kZWFsbG9jIHdpbGwgYmUg Y2FsbGVkLCB3aGljaCByZXF1aXJlcyB0aGF0IHRoZSAnaW5mZXJpb3InIGJlCisrCSBzZXQgdG8g TlVMTC4gICovCisrICAgICAgb2JqZWN0LT5pbmZlcmlvciA9IG51bGxwdHI7CisrICAgICAgb2Jq ZWN0LT5tYXBwZWRfZmlsZXMgPSBudWxscHRyOworKyAgICAgIG9iamVjdC0+ZGljdCA9IFB5RGlj dF9OZXcgKCk7CisrICAgICAgaWYgKG9iamVjdC0+ZGljdCA9PSBudWxscHRyKQorKwlyZXR1cm4g bnVsbHB0cjsKKysKKysgICAgICAvKiBOb3cgdGhhdCB0aGUgZ2RiLkNvcmVmaWxlIGhhcyBiZWVu IHN1Y2Nlc3NmdWxseSBpbml0aWFsaXNlZCBhbmQgd2UKKysJIGtub3cgdGhhdCBpdCBpcyBnb2lu ZyB0byBiZSBwYXNzZWQgYmFjayB0byB0aGUgdXNlciwgbW92ZSBpdCBvdXQKKysJIG9mIHRoZSBp bnZhbGlkIHN0YXRlIGJ5IHNldHRpbmcgdGhlICdpbmZlcmlvcicgZmllbGQgdG8gYSBub24gTlVM TAorKwkgdmFsdWUuICAqLworKyAgICAgIG9iamVjdC0+aW5mZXJpb3IgPSBpbmY7CisrICAgICAg Y2ZweV9pbmZlcmlvcl9jb3JlZmlsZV9kYXRhX2tleS5zZXQgKGluZiwgb2JqZWN0LmdldCAoKSk7 CisrICAgICAgcmVzdWx0ID0gKFB5T2JqZWN0ICopIG9iamVjdC5yZWxlYXNlICgpOworKyAgICB9 CisrCisrICByZXR1cm4gZ2RicHlfcmVmPD46Om5ld19yZWZlcmVuY2UgKHJlc3VsdCk7CisrfQor KworKy8qIFJldHVybiB0cnVlIGlmIE9CSiBpcyB2YWxpZC4gICovCisrCisrc3RhdGljIGJvb2wK KytjZnB5X2NvcmVmaWxlX29iamVjdF9pc192YWxpZCAoY29uc3QgY29yZWZpbGVfb2JqZWN0ICpv YmopCisreworKyAgaWYgKG9iai0+aW5mZXJpb3IgPT0gbnVsbHB0cikKKysgICAgcmV0dXJuIGZh bHNlOworKworKyAgZ2RiX2Fzc2VydCAob2JqLT5pbmZlcmlvci0+cHNwYWNlICE9IG51bGxwdHIp OworKworKyAgcmV0dXJuIG9iai0+aW5mZXJpb3ItPnBzcGFjZS0+Y29yZV9iZmQgKCkgIT0gbnVs bHB0cjsKKyt9CisrCisrLyogUmVxdWlyZSB0aGF0IENPUkVGSUxFX09CSiBiZSBhIHZhbGlkIGNv cmUgZmlsZS4gIEEgdmFsaWQgY29yZSBmaWxlCisrICAgb2JqZWN0IGhhcyBhIHZhbGlkIHByb2dy YW0gc3BhY2UsIGFuZCB0aGUgcHJvZ3JhbSBzcGFjZSBoYXMgYSBjb3JlIGZpbGUKKysgICBsb2Fk ZWQgaW50byBpdC4gICovCisrI2RlZmluZSBDRlBZX1JFUVVJUkVfVkFMSUQoY29yZWZpbGVfb2Jq KQkJCQlcCisrICBkbyB7CQkJCQkJCQkJXAorKyAgICBpZiAoIWNmcHlfY29yZWZpbGVfb2JqZWN0 X2lzX3ZhbGlkIChjb3JlZmlsZV9vYmopKQkJCVwKKysgICAgICB7CQkJCQkJCQkJXAorKwlQeUVy cl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwJCQkJXAorKwkJCSBfKCJDb3JlZmlsZSBu byBsb25nZXIgZXhpc3RzLiIpKTsJCVwKKysJcmV0dXJuIG51bGxwdHI7CQkJCQkJCVwKKysgICAg ICB9CQkJCQkJCQkJXAorKyAgfSB3aGlsZSAoMCkKKysKKysvKiBSZWFkIHRoZSBnZGIuQ29yZWZp bGUuZmlsZW5hbWUgYXR0cmlidXRlLiAgKi8KKysKKytzdGF0aWMgUHlPYmplY3QgKgorK2NmcHlf Z2V0X2ZpbGVuYW1lIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKKyt7CisrICBjb3Jl ZmlsZV9vYmplY3QgKm9iaiA9IChjb3JlZmlsZV9vYmplY3QgKikgc2VsZjsKKysKKysgIENGUFlf UkVRVUlSRV9WQUxJRCAob2JqKTsKKysKKysgIC8qIElmIHRoZSBwcm9ncmFtIHNwYWNlJ3MgY29y ZSBmaWxlIGhhZCBiZWVuIGNsZWFyZWQsIHRoZW4gdGhpcyBDb3JlZmlsZQorKyAgICAgb2JqZWN0 IHdvdWxkIGhhdmUgYmVlbiBpbnZhbGlkYXRlZC4gICovCisrICBiZmQgKmFiZmQgPSBvYmotPmlu ZmVyaW9yLT5wc3BhY2UtPmNvcmVfYmZkICgpOworKyAgZ2RiX2Fzc2VydCAoYWJmZCAhPSBudWxs cHRyKTsKKysKKysgIHJldHVybiBob3N0X3N0cmluZ190b19weXRob25fc3RyaW5nIChiZmRfZ2V0 X2ZpbGVuYW1lIChhYmZkKSkucmVsZWFzZSAoKTsKKyt9CisrCisrLyogSW1wbGVtZW50YXRpb24g b2YgZ2RiLkNvcmVmaWxlLmlzX3ZhbGlkIChzZWxmKSAtPiBCb29sZWFuLgorKyAgIFJldHVybnMg VHJ1ZSBpZiB0aGlzIGNvcmUgZmlsZSBvYmplY3QgaXMgYXNzb2NpYXRlZCB3aXRoIGEgcHJvZ3Jh bSBzcGFjZQorKyAgIHRoYXQgc3RpbGwgZXhpc3RzLCBhbiB0aGUgcHJvZ3JhbSBzcGFjZSBzdGls bCBoYXMgYSBjb3JlIGZpbGUgbG9hZGVkLiAgKi8KKysKKytzdGF0aWMgUHlPYmplY3QgKgorK2Nm cHlfaXNfdmFsaWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyt7CisrICBjb3Jl ZmlsZV9vYmplY3QgKm9iaiA9IChjb3JlZmlsZV9vYmplY3QgKikgc2VsZjsKKysKKysgIGlmICgh Y2ZweV9jb3JlZmlsZV9vYmplY3RfaXNfdmFsaWQgKG9iaikpCisrICAgIFB5X1JFVFVSTl9GQUxT RTsKKysKKysgIFB5X1JFVFVSTl9UUlVFOworK30KKysKKysvKiBJbXBsZW1lbnQgZ2RiLkNvcmVm aWxlLm1hcHBlZF9maWxlcyAoKS4gIFJldHVybiBhIExpc3Qgb2YKKysgICBnZGIuQ29yZWZpbGVN YXBwZWRGaWxlIG9iamVjdHMuICBUaGUgbGlzdCBpcyBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lCisr ICAgdGhpcyBtZXRob2QgaXMgY2FsbGVkLCBhbmQgdGhlbiBjYWNoZWQgd2l0aGluIHRoZSBnZGIu Q29yZWZpbGUgb2JqZWN0LAorKyAgIGZ1dHVyZSBjYWxscyBqdXN0IHJldHVybiBhIHJlZmVyZW5j ZSB0byB0aGUgc2FtZSBsaXN0LiAgKi8KKysKKytzdGF0aWMgUHlPYmplY3QgKgorK2NmcHlfbWFw cGVkX2ZpbGVzIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisreworKyAgY29yZWZp bGVfb2JqZWN0ICpvYmogPSAoY29yZWZpbGVfb2JqZWN0ICopIHNlbGY7CisrCisrICBDRlBZX1JF UVVJUkVfVkFMSUQgKG9iaik7CisrCisrICAvKiBJZiB3ZSBoYXZlIGFscmVhZHkgY3JlYXRlZCB0 aGUgTGlzdCB0aGVuIGp1c3QgcmV0dXJuIGFub3RoZXIgcmVmZXJlbmNlCisrICAgICB0byB0aGUg ZXhpc3RpbmcgbGlzdC4gICovCisrICBpZiAob2JqLT5tYXBwZWRfZmlsZXMgIT0gbnVsbHB0cikK KysgICAgeworKyAgICAgIFB5X0lOQ1JFRiAob2JqLT5tYXBwZWRfZmlsZXMpOworKyAgICAgIHJl dHVybiBvYmotPm1hcHBlZF9maWxlczsKKysgICAgfQorKworKyAgLyogR2V0IGFsbCB0aGUgbWFw cGluZyBkYXRhIGZyb20gR0RCLiAgKi8KKysgIHN0ZDo6dmVjdG9yPGNvcmVfbWFwcGVkX2ZpbGU+ IG1hcHBlZF9maWxlczsKKysgIHRyeQorKyAgICB7CisrICAgICAgbWFwcGVkX2ZpbGVzCisrCT0g Z2RiX3JlYWRfY29yZV9maWxlX21hcHBpbmdzIChvYmotPmluZmVyaW9yLT5hcmNoICgpLAorKwkJ CQkgICAgICAgY3VycmVudF9wcm9ncmFtX3NwYWNlLT5jb3JlX2JmZCAoKSk7CisrICAgIH0KKysg IGNhdGNoIChjb25zdCBnZGJfZXhjZXB0aW9uICZleGNlcHQpCisrICAgIHsKKysgICAgICByZXR1 cm4gZ2RicHlfaGFuZGxlX2dkYl9leGNlcHRpb24gKG51bGxwdHIsIGV4Y2VwdCk7CisrICAgIH0K KysKKysgIC8qIENyZWF0ZSBhIG5ldyBsaXN0IHRvIGhvbGQgdGhlIHJlc3VsdHMuICAqLworKyAg Z2RicHlfcmVmPD4gdHVwbGUgKFB5VHVwbGVfTmV3IChtYXBwZWRfZmlsZXMuc2l6ZSAoKSkpOwor KyAgaWYgKHR1cGxlID09IG51bGxwdHIpCisrICAgIHJldHVybiBudWxscHRyOworKworKyAgLyog Q3JlYXRlIGVhY2ggZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZSBvYmplY3QuICAqLworKyAgUHlfc3Np emVfdCB0dXBsZV9pZHggPSAwOworKyAgZm9yIChjb25zdCBjb3JlX21hcHBlZF9maWxlICZmaWxl IDogbWFwcGVkX2ZpbGVzKQorKyAgICB7CisrICAgICAgLyogVGhlIGZpbGVuYW1lICdzdHInIG9i amVjdC4gICovCisrICAgICAgZ2RicHlfcmVmPD4gZmlsZW5hbWUKKysJPSBob3N0X3N0cmluZ190 b19weXRob25fc3RyaW5nIChmaWxlLmZpbGVuYW1lLmNfc3RyICgpKTsKKysgICAgICBpZiAoZmls ZW5hbWUgPT0gbnVsbHB0cikKKysJcmV0dXJuIG51bGxwdHI7CisrCisrICAgICAgLyogVGhlIGJ1 aWxkLWlkIG9iamVjdC4gIEVpdGhlciBhICdzdHInIG9yICdOb25lJy4gICovCisrICAgICAgZ2Ri cHlfcmVmPD4gYnVpbGRfaWQ7CisrICAgICAgaWYgKGZpbGUuYnVpbGRfaWQgIT0gbnVsbHB0cikK KysJeworKwkgIHN0ZDo6c3RyaW5nIGhleF9mb3JtID0gYmluMmhleCAoZmlsZS5idWlsZF9pZC0+ ZGF0YSwKKysJCQkJCSAgZmlsZS5idWlsZF9pZC0+c2l6ZSk7CisrCisrCSAgYnVpbGRfaWQKKysJ ICAgID0gaG9zdF9zdHJpbmdfdG9fcHl0aG9uX3N0cmluZyAoaGV4X2Zvcm0uY19zdHIgKCkpOwor KwkgIGlmIChidWlsZF9pZCA9PSBudWxscHRyKQorKwkgICAgcmV0dXJuIG51bGxwdHI7CisrCX0K KysgICAgICBlbHNlCisrCWJ1aWxkX2lkID0gZ2RicHlfcmVmPD46Om5ld19yZWZlcmVuY2UgKFB5 X05vbmUpOworKworKyAgICAgIC8qIExpc3QgdG8gaG9sZCBhbGwgdGhlIGdkYi5Db3JlZmlsZU1h cHBlZEZpbGVSZWdpb24gb2JqZWN0cy4gICovCisrICAgICAgZ2RicHlfcmVmPD4gcmVnaW9ucyAo UHlUdXBsZV9OZXcgKGZpbGUucmVnaW9ucy5zaXplICgpKSk7CisrICAgICAgaWYgKHJlZ2lvbnMg PT0gbnVsbHB0cikKKysJcmV0dXJuIG51bGxwdHI7CisrCisrICAgICAgLyogQ3JlYXRlIGFsbCB0 aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbiBvYmplY3RzLiAgKi8KKysgICAgICBQeV9z c2l6ZV90IHJlZ2lvbnNfaWR4ID0gMDsKKysgICAgICBmb3IgKGNvbnN0IGNvcmVfbWFwcGVkX2Zp bGU6OnJlZ2lvbiAmciA6IGZpbGUucmVnaW9ucykKKysJeworKwkgIC8qIEFjdHVhbGx5IGNyZWF0 ZSB0aGUgb2JqZWN0LiAgKi8KKysJICBnZGJweV9yZWY8Y29yZWZpbGVfbWFwcGVkX2ZpbGVfcmVn aW9uX29iamVjdD4gcmVnaW9uX29iagorKwkgICAgKFB5T2JqZWN0X05ldyAoY29yZWZpbGVfbWFw cGVkX2ZpbGVfcmVnaW9uX29iamVjdCwKKysJCQkgICAmY29yZWZpbGVfbWFwcGVkX2ZpbGVfcmVn aW9uX29iamVjdF90eXBlKSk7CisrCSAgaWYgKHJlZ2lvbl9vYmogPT0gbnVsbHB0cikKKysJICAg IHJldHVybiBudWxscHRyOworKworKwkgIC8qIEluaXRpYWxpc2UgdGhlIG9iamVjdC4gICovCisr CSAgcmVnaW9uX29iai0+c3RhcnQgPSByLnN0YXJ0OworKwkgIHJlZ2lvbl9vYmotPmVuZCA9IHIu ZW5kOworKwkgIHJlZ2lvbl9vYmotPmZpbGVfb2Zmc2V0ID0gci5maWxlX29mczsKKysKKysJICAv KiBBZGQgdG8gdGhlIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGVSZWdpb24gbGlzdC4gICovCisrCSAg aWYgKFB5VHVwbGVfU2V0SXRlbSAocmVnaW9ucy5nZXQgKCksIHJlZ2lvbnNfaWR4KyssCisrCQkJ ICAgICAgIChQeU9iamVjdCAqKSByZWdpb25fb2JqLnJlbGVhc2UgKCkpIDwgMCkKKysJICAgIHJl dHVybiBudWxscHRyOworKwl9CisrCisrICAgICAgLyogQWN0dWFsbHkgY3JlYXRlIHRoZSBnZGIu Q29yZWZpbGVNYXBwZWRGaWxlIG9iamVjdC4gICovCisrICAgICAgZ2RicHlfcmVmPGNvcmVmaWxl X21hcHBlZF9maWxlX29iamVjdD4gZW50cnkKKysJKFB5T2JqZWN0X05ldyAoY29yZWZpbGVfbWFw cGVkX2ZpbGVfb2JqZWN0LAorKwkJICAgICAgICZjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3Rf dHlwZSkpOworKyAgICAgIGlmIChlbnRyeSA9PSBudWxscHRyKQorKwlyZXR1cm4gbnVsbHB0cjsK KysKKysgICAgICAvKiBJbml0aWFsaXNlIHRoZSBvYmplY3QuICAqLworKyAgICAgIGVudHJ5LT5m aWxlbmFtZSA9IGZpbGVuYW1lLnJlbGVhc2UgKCk7CisrICAgICAgZW50cnktPmJ1aWxkX2lkID0g YnVpbGRfaWQucmVsZWFzZSAoKTsKKysgICAgICBlbnRyeS0+cmVnaW9ucyA9IHJlZ2lvbnMucmVs ZWFzZSAoKTsKKysgICAgICBlbnRyeS0+aXNfbWFpbl9leGVjX3AgPSBmaWxlLmlzX21haW5fZXhl YzsKKysKKysgICAgICAvKiBBZGQgdG8gdGhlIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGUgbGlzdC4g ICovCisrICAgICAgaWYgKFB5VHVwbGVfU2V0SXRlbSAodHVwbGUuZ2V0ICgpLCB0dXBsZV9pZHgr KywKKysJCQkgICAoUHlPYmplY3QgKikgZW50cnkucmVsZWFzZSAoKSkgPCAwKQorKwlyZXR1cm4g bnVsbHB0cjsKKysgICAgfQorKworKyAgLyogTm8gZXJyb3JzLiAgTW92ZSB0aGUgcmVmZXJlbmNl IGN1cnJlbnRseSBpbiBMSVNUIGludG8gdGhlIENvcmVmaWxlCisrICAgICBvYmplY3QgaXRzZWxm LiAgVGhlbiBjcmVhdGUgYSBuZXcgcmVmZXJlbmNlIGFuZCBoYW5kIHRoaXMgYmFjayB0byB0aGUK KysgICAgIHVzZXIuICAqLworKyAgb2JqLT5tYXBwZWRfZmlsZXMgPSB0dXBsZS5yZWxlYXNlICgp OworKyAgUHlfSU5DUkVGIChvYmotPm1hcHBlZF9maWxlcyk7CisrICByZXR1cm4gb2JqLT5tYXBw ZWRfZmlsZXM7CisrfQorKworKy8qIEVtaXQgYSBDb3JlZmlsZUNoYW5nZWRFdmVudCBldmVudCwg SU5GIGlzIHRoZSBpbmZlcmlvciBpbiB3aGljaCB0aGUgY29yZQorKyAgIGZpbGUgY2hhbmdlZC4g IFJldHVybiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgdmFsdWUgb24gZXJyb3IuICAqLwor KworK3N0YXRpYyBpbnQKKytlbWl0X2NvcmVmaWxlX2NoYW5nZWRfZXZlbnQgKGluZmVyaW9yICpp bmYpCisreworKyAgLyogSWYgdGhlcmUgYXJlIG5vIGxpc3RlbmVycyB0aGVuIHdlIGFyZSBkb25l LiAgKi8KKysgIGlmIChldnJlZ3B5X25vX2xpc3RlbmVyc19wIChnZGJfcHlfZXZlbnRzLmNvcmVm aWxlX2NoYW5nZWQpKQorKyAgICByZXR1cm4gMDsKKysKKysgIGdkYnB5X3JlZjw+IGV2ZW50X29i agorKyAgICA9IGNyZWF0ZV9ldmVudF9vYmplY3QgKCZjb3JlZmlsZV9jaGFuZ2VkX2V2ZW50X29i amVjdF90eXBlKTsKKysgIGlmIChldmVudF9vYmogPT0gbnVsbHB0cikKKysgICAgcmV0dXJuIC0x OworKworKyAgZ2RicHlfcmVmPGluZmVyaW9yX29iamVjdD4gaW5mX29iaiA9IGluZmVyaW9yX3Rv X2luZmVyaW9yX29iamVjdCAoaW5mKTsKKysgIGlmIChpbmZfb2JqID09IG51bGxwdHIKKysgICAg ICB8fCBldnB5X2FkZF9hdHRyaWJ1dGUgKGV2ZW50X29iai5nZXQgKCksICJpbmZlcmlvciIsCisr CQkJICAgICAoUHlPYmplY3QgKikgaW5mX29iai5nZXQgKCkpIDwgMCkKKysgICAgcmV0dXJuIC0x OworKworKyAgcmV0dXJuIGV2cHlfZW1pdF9ldmVudCAoZXZlbnRfb2JqLmdldCAoKSwgZ2RiX3B5 X2V2ZW50cy5jb3JlZmlsZV9jaGFuZ2VkKTsKKyt9CisrCisrLyogQ2FsbGJhY2sgZnJvbSBnZGI6 Om9ic2VydmVyczo6Y29yZV9maWxlX2NoYW5nZWQuICBUaGUgY29yZSBmaWxlIGZvcgorKyAgIElO RiBoYXMgYmVlbiBjaGFuZ2VkLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2NmcHlfY29yZWZpbGVf Y2hhbmdlZCAoaW5mZXJpb3IgKmluZikKKyt7CisrICAvKiBJdCdzIHNhZmUgdG8gZG8gdGhpcyBl dmVuIGlmIFB5dGhvbiBpcyBub3QgaW5pdGlhbGl6ZWQsIGJ1dCB0aGVyZQorKyAgICAgc2hvdWxk IGJlIG5vdGhpbmcgdG8gY2xlYXIgaW4gdGhhdCBjYXNlLiAgKi8KKysgIGNmcHlfaW5mZXJpb3Jf Y29yZWZpbGVfZGF0YV9rZXkuY2xlYXIgKGluZik7CisrCisrICBpZiAoIWdkYl9weXRob25faW5p dGlhbGl6ZWQpCisrICAgIHJldHVybjsKKysKKysgIGdkYnB5X2VudGVyIGVudGVyX3B5OworKwor KyAgaWYgKGVtaXRfY29yZWZpbGVfY2hhbmdlZF9ldmVudCAoaW5mKSA8IDApCisrICAgIGdkYnB5 X3ByaW50X3N0YWNrICgpOworK30KKysKKysvKiBDYWxsZWQgd2hlbiBhIGdkYi5Db3JlZmlsZSBp cyBkZXN0cm95ZWQuICAqLworKworK3N0YXRpYyB2b2lkCisrY2ZweV9kZWFsbG9jIChQeU9iamVj dCAqb2JqKQorK3sKKysgIGNvcmVmaWxlX29iamVjdCAqY29yZWZpbGUgPSAoY29yZWZpbGVfb2Jq ZWN0ICopIG9iajsKKysKKysgIC8qIEV2ZXJ5IGdkYi5Db3JlZmlsZSBpcyBjYWNoZWQgaW4gYW4g aW5mZXJpb3IncyByZWdpc3RyeS4gIFRoZSBvbmx5IHdheQorKyAgICAgZm9yIGEgZ2RiLkNvcmVm aWxlIHRvIGJlIGRlYWxsb2NhdGVkIGlzIHRvIHJlbW92ZSB0aGUgb2JqZWN0IHJlZmVyZW5jZQor KyAgICAgZnJvbSB0aGUgcmVnaXN0cnkgKGFuZCBkZWMgaXRzIHJlZiBjb3VudCksIGJ1dCBiZWZv cmUgd2UgZG8gdGhhdCwgd2UKKysgICAgIHNldCB0aGUgb2JqZWN0J3MgaW5mZXJpb3IgcG9pbnRl ciB0byBOVUxMLiAgKi8KKysgIGdkYl9hc3NlcnQgKGNvcmVmaWxlLT5pbmZlcmlvciA9PSBudWxs cHRyKTsKKysKKysgIFB5X1hERUNSRUYgKGNvcmVmaWxlLT5kaWN0KTsKKysgIFB5X1hERUNSRUYg KGNvcmVmaWxlLT5tYXBwZWRfZmlsZXMpOworKworKyAgUHlfVFlQRSAob2JqKS0+dHBfZnJlZSAo b2JqKTsKKyt9CisrCisrLyogX19yZXByX18gaW1wbGVtZW50YXRpb24gZm9yIGdkYi5Db3JlZmls ZS4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytjZnB5X3JlcHIgKFB5T2JqZWN0ICpzZWxm KQorK3sKKysgIGNvcmVmaWxlX29iamVjdCAqb2JqID0gKGNvcmVmaWxlX29iamVjdCAqKSBzZWxm OworKworKyAgaWYgKCFjZnB5X2NvcmVmaWxlX29iamVjdF9pc192YWxpZCAob2JqKSkKKysgICAg cmV0dXJuIGdkYl9weV9pbnZhbGlkX29iamVjdF9yZXByIChzZWxmKTsKKysKKysgIHByb2dyYW1f c3BhY2UgKnBzcGFjZSA9IG9iai0+aW5mZXJpb3ItPnBzcGFjZTsKKysgIGdkYl9hc3NlcnQgKHBz cGFjZSAhPSBudWxscHRyKTsKKysgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCAoIjwlcyBp bmZlcmlvcj0lZCBmaWxlbmFtZT0nJXMnPiIsCisrCQkJICAgICAgIFB5X1RZUEUgKHNlbGYpLT50 cF9uYW1lLAorKwkJCSAgICAgICBvYmotPmluZmVyaW9yLT5udW0sCisrCQkJICAgICAgIGJmZF9n ZXRfZmlsZW5hbWUgKHBzcGFjZS0+Y29yZV9iZmQgKCkpKTsKKyt9CisrCisrDAorKworKy8qIENh bGxlZCB3aGVuIGEgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZSBpcyBkZXN0cm95ZWQuICAqLworKwor K3N0YXRpYyB2b2lkCisrY2ZtZnB5X2RlYWxsb2MgKFB5T2JqZWN0ICpvYmopCisreworKyAgY29y ZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICptYXBwZWRfZmlsZQorKyAgICA9IChjb3JlZmlsZV9t YXBwZWRfZmlsZV9vYmplY3QgKikgb2JqOworKworKyAgUHlfWERFQ1JFRiAobWFwcGVkX2ZpbGUt PmZpbGVuYW1lKTsKKysgIFB5X1hERUNSRUYgKG1hcHBlZF9maWxlLT5idWlsZF9pZCk7CisrICBQ eV9YREVDUkVGIChtYXBwZWRfZmlsZS0+cmVnaW9ucyk7CisrCisrICBQeV9UWVBFIChvYmopLT50 cF9mcmVlIChvYmopOworK30KKysKKysvKiBSZWFkIHRoZSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxl LmZpbGVuYW1lIGF0dHJpYnV0ZS4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytjZm1mcHlf Z2V0X2ZpbGVuYW1lIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKKyt7CisrICBjb3Jl ZmlsZV9tYXBwZWRfZmlsZV9vYmplY3QgKm9iagorKyAgICA9IChjb3JlZmlsZV9tYXBwZWRfZmls ZV9vYmplY3QgKikgc2VsZjsKKysKKysgIGdkYl9hc3NlcnQgKG9iai0+ZmlsZW5hbWUgIT0gbnVs bHB0cik7CisrCisrICBQeV9JTkNSRUYgKG9iai0+ZmlsZW5hbWUpOworKyAgcmV0dXJuIG9iai0+ ZmlsZW5hbWU7CisrfQorKworKy8qIFJlYWQgdGhlIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGUuYnVp bGRfaWQgYXR0cmlidXRlLiAgKi8KKysKKytzdGF0aWMgUHlPYmplY3QgKgorK2NmbWZweV9nZXRf YnVpbGRfaWQgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQorK3sKKysgIGNvcmVmaWxl X21hcHBlZF9maWxlX29iamVjdCAqb2JqCisrICAgID0gKGNvcmVmaWxlX21hcHBlZF9maWxlX29i amVjdCAqKSBzZWxmOworKworKyAgZ2RiX2Fzc2VydCAob2JqLT5idWlsZF9pZCAhPSBudWxscHRy KTsKKysKKysgIFB5X0lOQ1JFRiAob2JqLT5idWlsZF9pZCk7CisrICByZXR1cm4gb2JqLT5idWls ZF9pZDsKKyt9CisrCisrLyogUmVhZCB0aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZS5yZWdpb25z IGF0dHJpYnV0ZS4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytjZm1mcHlfZ2V0X3JlZ2lv bnMgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQorK3sKKysgIGNvcmVmaWxlX21hcHBl ZF9maWxlX29iamVjdCAqb2JqCisrICAgID0gKGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdCAq KSBzZWxmOworKworKyAgZ2RiX2Fzc2VydCAob2JqLT5yZWdpb25zICE9IG51bGxwdHIpOworKwor KyAgUHlfSU5DUkVGIChvYmotPnJlZ2lvbnMpOworKyAgcmV0dXJuIG9iai0+cmVnaW9uczsKKyt9 CisrCisrLyogUmVhZCB0aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZS5pc19tYWluX2V4ZWN1dGFi bGUgYXR0cmlidXRlLiAgKi8KKysKKytzdGF0aWMgUHlPYmplY3QgKgorK2NmbWZfaXNfbWFpbl9l eGVjIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKKyt7CisrICBjb3JlZmlsZV9tYXBw ZWRfZmlsZV9vYmplY3QgKm9iagorKyAgICA9IChjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3Qg Kikgc2VsZjsKKysKKysgIGlmIChvYmotPmlzX21haW5fZXhlY19wKQorKyAgICBQeV9SRVRVUk5f VFJVRTsKKysgIGVsc2UKKysgICAgUHlfUkVUVVJOX0ZBTFNFOworK30KKysKKysMCisrCisrLyog UmVhZCB0aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbi5zdGFydCBhdHRyaWJ1dGUuICAq LworKworK3N0YXRpYyBQeU9iamVjdCAqCisrY2ZtZnJweV9nZXRfc3RhcnQgKFB5T2JqZWN0ICpz ZWxmLCB2b2lkICpjbG9zdXJlKQorK3sKKysgIGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9v YmplY3QgKm9iagorKyAgICA9IChjb3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0ICop IHNlbGY7CisrCisrICByZXR1cm4gZ2RiX3B5X29iamVjdF9mcm9tX3Vsb25nZXN0IChvYmotPnN0 YXJ0KS5yZWxlYXNlICgpOworK30KKysKKysvKiBSZWFkIHRoZSBnZGIuQ29yZWZpbGVNYXBwZWRG aWxlUmVnaW9uLmVuZCBhdHRyaWJ1dGUuICAqLworKworK3N0YXRpYyBQeU9iamVjdCAqCisrY2Zt ZnJweV9nZXRfZW5kIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKKyt7CisrICBjb3Jl ZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0ICpvYmoKKysgICAgPSAoY29yZWZpbGVfbWFw cGVkX2ZpbGVfcmVnaW9uX29iamVjdCAqKSBzZWxmOworKworKyAgcmV0dXJuIGdkYl9weV9vYmpl Y3RfZnJvbV91bG9uZ2VzdCAob2JqLT5lbmQpLnJlbGVhc2UgKCk7CisrfQorKworKy8qIFJlYWQg dGhlIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGVSZWdpb24uZmlsZV9vZmZzZXQgYXR0cmlidXRlLiAg Ki8KKysKKytzdGF0aWMgUHlPYmplY3QgKgorK2NmbWZycHlfZ2V0X2ZpbGVfb2Zmc2V0IChQeU9i amVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKKyt7CisrICBjb3JlZmlsZV9tYXBwZWRfZmlsZV9y ZWdpb25fb2JqZWN0ICpvYmoKKysgICAgPSAoY29yZWZpbGVfbWFwcGVkX2ZpbGVfcmVnaW9uX29i amVjdCAqKSBzZWxmOworKworKyAgcmV0dXJuIGdkYl9weV9vYmplY3RfZnJvbV91bG9uZ2VzdCAo b2JqLT5maWxlX29mZnNldCkucmVsZWFzZSAoKTsKKyt9CisrCisrDAorKworK3N0YXRpYyBpbnQK KytnZGJweV9pbml0aWFsaXplX2NvcmVmaWxlICgpCisreworKyAgZ2RiOjpvYnNlcnZlcnM6OmNv cmVfZmlsZV9jaGFuZ2VkLmF0dGFjaCAoY2ZweV9jb3JlZmlsZV9jaGFuZ2VkLAorKwkJCQkJICAg ICJweS1jb3JlZmlsZSIpOworKworKyAgaWYgKGdkYnB5X3R5cGVfcmVhZHkgKCZjb3JlZmlsZV9v YmplY3RfdHlwZSkgPCAwKQorKyAgICByZXR1cm4gLTE7CisrCisrICBpZiAoZ2RicHlfdHlwZV9y ZWFkeSAoJmNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdF90eXBlKSA8IDApCisrICAgIHJldHVy biAtMTsKKysKKysgIGlmIChnZGJweV90eXBlX3JlYWR5ICgmY29yZWZpbGVfbWFwcGVkX2ZpbGVf cmVnaW9uX29iamVjdF90eXBlKSA8IDApCisrICAgIHJldHVybiAtMTsKKysKKysgIHJldHVybiAw OworK30KKysKKytHREJQWV9JTklUSUFMSVpFX0ZJTEUgKGdkYnB5X2luaXRpYWxpemVfY29yZWZp bGUpOworKworKwwKKysKKytzdGF0aWMgZ2RiX1B5R2V0U2V0RGVmIGNvcmVmaWxlX2dldHNldFtd ID0KKyt7CisrICB7ICJfX2RpY3RfXyIsIGdkYl9weV9nZW5lcmljX2RpY3QsIG51bGxwdHIsCisr ICAgICJUaGUgX19kaWN0X18gZm9yIHRoZSBnZGIuQ29yZWZpbGUuIiwgJmNvcmVmaWxlX29iamVj dF90eXBlIH0sCisrICB7ICJmaWxlbmFtZSIsIGNmcHlfZ2V0X2ZpbGVuYW1lLCBudWxscHRyLAor KyAgICAiVGhlIGZpbGVuYW1lIG9mIGEgdmFsaWQgQ29yZWZpbGUgb2JqZWN0LiIsIG51bGxwdHIg fSwKKysgIHsgbnVsbHB0ciB9CisrfTsKKysKKytzdGF0aWMgUHlNZXRob2REZWYgY29yZWZpbGVf b2JqZWN0X21ldGhvZHNbXSA9CisreworKyAgeyAiaXNfdmFsaWQiLCBjZnB5X2lzX3ZhbGlkLCBN RVRIX05PQVJHUywKKysgICAgImlzX3ZhbGlkICgpIC0+IEJvb2xlYW4uXG5cCisrUmV0dXJuIHRy dWUgaWYgdGhpcyBDb3JlZmlsZSBpcyB2YWxpZCwgZmFsc2UgaWYgbm90LiIgfSwKKysgIHsgIm1h cHBlZF9maWxlcyIsIGNmcHlfbWFwcGVkX2ZpbGVzLCBNRVRIX05PQVJHUywKKysgICAgIm1hcHBl ZF9maWxlcyAoKSAtPiBMaXN0IG9mIG1hcHBpbmcgdHVwbGVzLlxuXAorK1JldHVybiBhIGxpc3Qg b2YgdHVwbGVzLiAgRWFjaCB0dXBsZSByZXByZXNlbnRzIGEgbWFwcGluZyBmcm9tIHRoZVwKKytj b3JlIGZpbGUuIiB9LAorKyAgeyBudWxscHRyIH0KKyt9OworKworK1B5VHlwZU9iamVjdCBjb3Jl ZmlsZV9vYmplY3RfdHlwZSA9CisreworKyAgUHlWYXJPYmplY3RfSEVBRF9JTklUIChudWxscHRy LCAwKQorKyAgImdkYi5Db3JlZmlsZSIsCQkgIC8qdHBfbmFtZSovCisrICBzaXplb2YgKGNvcmVm aWxlX29iamVjdCksCSAgLyp0cF9iYXNpY3NpemUqLworKyAgMCwJCQkJICAvKnRwX2l0ZW1zaXpl Ki8KKysgIGNmcHlfZGVhbGxvYywJCQkgIC8qdHBfZGVhbGxvYyovCisrICAwLAkJCQkgIC8qdHBf cHJpbnQqLworKyAgMCwJCQkJICAvKnRwX2dldGF0dHIqLworKyAgMCwJCQkJICAvKnRwX3NldGF0 dHIqLworKyAgMCwJCQkJICAvKnRwX2NvbXBhcmUqLworKyAgY2ZweV9yZXByLAkJCSAgLyp0cF9y ZXByKi8KKysgIDAsCQkJCSAgLyp0cF9hc19udW1iZXIqLworKyAgMCwJCQkJICAvKnRwX2FzX3Nl cXVlbmNlKi8KKysgIDAsCQkJCSAgLyp0cF9hc19tYXBwaW5nKi8KKysgIDAsCQkJCSAgLyp0cF9o YXNoICovCisrICAwLAkJCQkgIC8qdHBfY2FsbCovCisrICAwLAkJCQkgIC8qdHBfc3RyKi8KKysg IDAsCQkJCSAgLyp0cF9nZXRhdHRybyovCisrICAwLAkJCQkgIC8qdHBfc2V0YXR0cm8qLworKyAg MCwJCQkJICAvKnRwX2FzX2J1ZmZlciovCisrICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkgIC8qdHBf ZmxhZ3MqLworKyAgIkdEQiBjb3JlZmlsZSBvYmplY3QiLAkgIC8qIHRwX2RvYyAqLworKyAgMCwJ CQkJICAvKiB0cF90cmF2ZXJzZSAqLworKyAgMCwJCQkJICAvKiB0cF9jbGVhciAqLworKyAgMCwJ CQkJICAvKiB0cF9yaWNoY29tcGFyZSAqLworKyAgMCwJCQkJICAvKiB0cF93ZWFrbGlzdG9mZnNl dCAqLworKyAgMCwJCQkJICAvKiB0cF9pdGVyICovCisrICAwLAkJCQkgIC8qIHRwX2l0ZXJuZXh0 ICovCisrICBjb3JlZmlsZV9vYmplY3RfbWV0aG9kcywJICAvKiB0cF9tZXRob2RzICovCisrICAw LAkJCQkgIC8qIHRwX21lbWJlcnMgKi8KKysgIGNvcmVmaWxlX2dldHNldCwJCSAgLyogdHBfZ2V0 c2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2Jhc2UgKi8KKysgIDAsCQkJCSAgLyogdHBfZGljdCAq LworKyAgMCwJCQkJICAvKiB0cF9kZXNjcl9nZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfZGVzY3Jf c2V0ICovCisrICBvZmZzZXRvZiAoY29yZWZpbGVfb2JqZWN0LCBkaWN0KSwgLyogdHBfZGljdG9m ZnNldCAqLworKyAgMCwJCQkJICAvKiB0cF9pbml0ICovCisrICAwLAkJCQkgIC8qIHRwX2FsbG9j ICovCisrICAwLAkJCQkgIC8qIHRwX25ldyAqLworK307CisrCisrc3RhdGljIGdkYl9QeUdldFNl dERlZiBjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3RfZ2V0c2V0W10gPQorK3sKKysgIHsgImZp bGVuYW1lIiwgY2ZtZnB5X2dldF9maWxlbmFtZSwgbnVsbHB0ciwKKysgICAgIlRoZSBmaWxlbmFt ZSBvZiBhIENvcmVmaWxlTWFwcGVkRmlsZSBvYmplY3QuIiwgbnVsbHB0ciB9LAorKyAgeyAiYnVp bGRfaWQiLCBjZm1mcHlfZ2V0X2J1aWxkX2lkLCBudWxscHRyLAorKyAgICAiVGhlIGJ1aWxkLWlk IG9mIGEgQ29yZWZpbGVNYXBwZWRGaWxlIG9iamVjdCBvciBOb25lLiIsIG51bGxwdHIgfSwKKysg IHsgInJlZ2lvbnMiLCBjZm1mcHlfZ2V0X3JlZ2lvbnMsIG51bGxwdHIsCisrICAgICJUaGUgbGlz dCBvZiByZWdpb25zIGZyb20gYSBDb3JlZmlsZU1hcHBlZEZpbGUgb2JqZWN0LiIsIG51bGxwdHIg fSwKKysgIHsgImlzX21haW5fZXhlY3V0YWJsZSIsIGNmbWZfaXNfbWFpbl9leGVjLCBudWxscHRy LAorKyAgICAiVHJ1ZSBmb3IgdGhlIG1haW4gZXhlY3V0YWJsZSBtYXBwaW5nLCBvdGhlcndpc2Ug RmFsc2UuIiwgbnVsbHB0ciB9LAorKyAgeyBudWxscHRyIH0KKyt9OworKworK1B5VHlwZU9iamVj dCBjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3RfdHlwZSA9CisreworKyAgUHlWYXJPYmplY3Rf SEVBRF9JTklUIChOVUxMLCAwKQorKyAgImdkYi5Db3JlZmlsZU1hcHBlZEZpbGUiLAkgIC8qdHBf bmFtZSovCisrICBzaXplb2YgKGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdCksCS8qdHBfYmFz aWNzaXplKi8KKysgIDAsCQkJCSAgLyp0cF9pdGVtc2l6ZSovCisrICBjZm1mcHlfZGVhbGxvYywJ CSAgLyp0cF9kZWFsbG9jKi8KKysgIDAsCQkJCSAgLyp0cF9wcmludCovCisrICAwLAkJCQkgIC8q dHBfZ2V0YXR0ciovCisrICAwLAkJCQkgIC8qdHBfc2V0YXR0ciovCisrICAwLAkJCQkgIC8qdHBf Y29tcGFyZSovCisrICAwLAkJCQkgIC8qdHBfcmVwciovCisrICAwLAkJCQkgIC8qdHBfYXNfbnVt YmVyKi8KKysgIDAsCQkJCSAgLyp0cF9hc19zZXF1ZW5jZSovCisrICAwLAkJCQkgIC8qdHBfYXNf bWFwcGluZyovCisrICAwLAkJCQkgIC8qdHBfaGFzaCAqLworKyAgMCwJCQkJICAvKnRwX2NhbGwq LworKyAgMCwJCQkJICAvKnRwX3N0ciovCisrICAwLAkJCQkgIC8qdHBfZ2V0YXR0cm8qLworKyAg MCwJCQkJICAvKnRwX3NldGF0dHJvKi8KKysgIDAsCQkJCSAgLyp0cF9hc19idWZmZXIqLworKyAg UHlfVFBGTEFHU19ERUZBVUxULAkJICAvKnRwX2ZsYWdzKi8KKysgICJHREIgY29yZWZpbGUgbWFw cGVkIGZpbGUgb2JqZWN0IiwJLyogdHBfZG9jICovCisrICAwLAkJCQkgIC8qIHRwX3RyYXZlcnNl ICovCisrICAwLAkJCQkgIC8qIHRwX2NsZWFyICovCisrICAwLAkJCQkgIC8qIHRwX3JpY2hjb21w YXJlICovCisrICAwLAkJCQkgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisrICAwLAkJCQkgIC8q IHRwX2l0ZXIgKi8KKysgIDAsCQkJCSAgLyogdHBfaXRlcm5leHQgKi8KKysgIDAsCQkJCSAgLyog dHBfbWV0aG9kcyAqLworKyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICovCisrICBjb3JlZmlsZV9t YXBwZWRfZmlsZV9vYmplY3RfZ2V0c2V0LAkvKiB0cF9nZXRzZXQgKi8KKysgIDAsCQkJCSAgLyog dHBfYmFzZSAqLworKyAgMCwJCQkJICAvKiB0cF9kaWN0ICovCisrICAwLAkJCQkgIC8qIHRwX2Rl c2NyX2dldCAqLworKyAgMCwJCQkJICAvKiB0cF9kZXNjcl9zZXQgKi8KKysgIDAsCQkJCSAgLyog dHBfZGljdG9mZnNldCAqLworKyAgMCwJCQkJICAvKiB0cF9pbml0ICovCisrICAwLAkJCQkgIC8q IHRwX2FsbG9jICovCisrICAwLAkJCQkgIC8qIHRwX25ldyAqLworK307CisrCisrc3RhdGljIGdk Yl9QeUdldFNldERlZiBjb3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0X2dldHNldFtd ID0KKyt7CisrICB7ICJzdGFydCIsIGNmbWZycHlfZ2V0X3N0YXJ0LCBudWxscHRyLAorKyAgICAi VGhlIHN0YXJ0IGFkZHJlc3Mgb2YgYSBDb3JlZmlsZU1hcHBlZEZpbGVSZWdpb24gb2JqZWN0LiIs IG51bGxwdHIgfSwKKysgIHsgImVuZCIsIGNmbWZycHlfZ2V0X2VuZCwgbnVsbHB0ciwKKysgICAg IlRoZSBlbmQgYWRkcmVzcyBvZiBhIENvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbiBvYmplY3QuIiwg bnVsbHB0ciB9LAorKyAgeyAiZmlsZV9vZmZzZXQiLCBjZm1mcnB5X2dldF9maWxlX29mZnNldCwg bnVsbHB0ciwKKysgICAgIlRoZSBmaWxlIG9mZnNldCBvZiBhIENvcmVmaWxlTWFwcGVkRmlsZVJl Z2lvbiBvYmplY3QuIiwgbnVsbHB0ciB9LAorKyAgeyBudWxscHRyIH0KKyt9OworKworK1B5VHlw ZU9iamVjdCBjb3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0X3R5cGUgPQorK3sKKysg IFB5VmFyT2JqZWN0X0hFQURfSU5JVCAoTlVMTCwgMCkKKysgICJnZGIuQ29yZWZpbGVNYXBwZWRG aWxlUmVnaW9uIiwgIC8qdHBfbmFtZSovCisrICBzaXplb2YgKGNvcmVmaWxlX21hcHBlZF9maWxl X3JlZ2lvbl9vYmplY3QpLAkvKnRwX2Jhc2ljc2l6ZSovCisrICAwLAkJCQkgIC8qdHBfaXRlbXNp emUqLworKyAgMCwJCQkJICAvKnRwX2RlYWxsb2MqLworKyAgMCwJCQkJICAvKnRwX3ByaW50Ki8K KysgIDAsCQkJCSAgLyp0cF9nZXRhdHRyKi8KKysgIDAsCQkJCSAgLyp0cF9zZXRhdHRyKi8KKysg IDAsCQkJCSAgLyp0cF9jb21wYXJlKi8KKysgIDAsCQkJCSAgLyp0cF9yZXByKi8KKysgIDAsCQkJ CSAgLyp0cF9hc19udW1iZXIqLworKyAgMCwJCQkJICAvKnRwX2FzX3NlcXVlbmNlKi8KKysgIDAs CQkJCSAgLyp0cF9hc19tYXBwaW5nKi8KKysgIDAsCQkJCSAgLyp0cF9oYXNoICovCisrICAwLAkJ CQkgIC8qdHBfY2FsbCovCisrICAwLAkJCQkgIC8qdHBfc3RyKi8KKysgIDAsCQkJCSAgLyp0cF9n ZXRhdHRybyovCisrICAwLAkJCQkgIC8qdHBfc2V0YXR0cm8qLworKyAgMCwJCQkJICAvKnRwX2Fz X2J1ZmZlciovCisrICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkgIC8qdHBfZmxhZ3MqLworKyAgIkdE QiBjb3JlZmlsZSBtYXBwZWQgZmlsZSByZWdpb24gb2JqZWN0IiwJLyogdHBfZG9jICovCisrICAw LAkJCQkgIC8qIHRwX3RyYXZlcnNlICovCisrICAwLAkJCQkgIC8qIHRwX2NsZWFyICovCisrICAw LAkJCQkgIC8qIHRwX3JpY2hjb21wYXJlICovCisrICAwLAkJCQkgIC8qIHRwX3dlYWtsaXN0b2Zm c2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2l0ZXIgKi8KKysgIDAsCQkJCSAgLyogdHBfaXRlcm5l eHQgKi8KKysgIDAsCQkJCSAgLyogdHBfbWV0aG9kcyAqLworKyAgMCwJCQkJICAvKiB0cF9tZW1i ZXJzICovCisrICBjb3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0X2dldHNldCwJLyog dHBfZ2V0c2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2Jhc2UgKi8KKysgIDAsCQkJCSAgLyogdHBf ZGljdCAqLworKyAgMCwJCQkJICAvKiB0cF9kZXNjcl9nZXQgKi8KKysgIDAsCQkJCSAgLyogdHBf ZGVzY3Jfc2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKysgIDAsCQkJCSAg LyogdHBfaW5pdCAqLworKyAgMCwJCQkJICAvKiB0cF9hbGxvYyAqLworKyAgMCwJCQkJICAvKiB0 cF9uZXcgKi8KKyt9OworZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktZXZlbnQtdHlwZXMuZGVm IGIvZ2RiL3B5dGhvbi9weS1ldmVudC10eXBlcy5kZWYKKy0tLSBhL2dkYi9weXRob24vcHktZXZl bnQtdHlwZXMuZGVmCisrKysgYi9nZGIvcHl0aG9uL3B5LWV2ZW50LXR5cGVzLmRlZgorQEAgLTE0 NSwzICsxNDUsOCBAQCBHREJfUFlfREVGSU5FX0VWRU5UX1RZUEUgKHR1aV9lbmFibGVkLAorIAkJ CSAgIlR1aUVuYWJsZWRFdmVudCIsCisgCQkJICAiR0RCIFRVSSBlbmFibGVkIGV2ZW50IG9iamVj dCIsCisgCQkJICBldmVudF9vYmplY3RfdHlwZSk7CisrCisrR0RCX1BZX0RFRklORV9FVkVOVF9U WVBFIChjb3JlZmlsZV9jaGFuZ2VkLAorKwkJCSAgIkNvcmVmaWxlQ2hhbmdlZEV2ZW50IiwKKysJ CQkgICJHREIgY29yZWZpbGUgY2hhbmdlZCBldmVudCIsCisrCQkJICBldmVudF9vYmplY3RfdHlw ZSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1pbmZlcmlvci5jIGIvZ2RiL3B5dGhvbi9w eS1pbmZlcmlvci5jCistLS0gYS9nZGIvcHl0aG9uL3B5LWluZmVyaW9yLmMKKysrKyBiL2dkYi9w eXRob24vcHktaW5mZXJpb3IuYworQEAgLTk3Myw2ICs5NzMsMjIgQEAgaW5mcHlfZ2V0X21haW5f bmFtZSAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCisgICByZXR1cm4gaG9zdF9zdHJp bmdfdG9fcHl0aG9uX3N0cmluZyAobmFtZSkucmVsZWFzZSAoKTsKKyB9CisgCisrLyogSW1wbGVt ZW50IHRoZSBJbmZlcmlvci5jb3JlZmlsZSBnZXR0ZXIuICBSZXR1cm5zIGEgZ2RiLkNvcmVmaWxl CisrICAgb2JqZWN0LCBvciBOb25lLiAgKi8KKysKKytzdGF0aWMgUHlPYmplY3QgKgorK2luZnB5 X2dldF9jb3JlX2ZpbGUgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQorK3sKKysgIGlu ZmVyaW9yX29iamVjdCAqaW5mID0gKGluZmVyaW9yX29iamVjdCAqKSBzZWxmOworKworKyAgSU5G UFlfUkVRVUlSRV9WQUxJRCAoaW5mKTsKKysKKysgIGluZmVyaW9yICppbmZlcmlvciA9IGluZi0+ aW5mZXJpb3I7CisrICBnZGJfYXNzZXJ0IChpbmZlcmlvciAhPSBudWxscHRyKTsKKysKKysgIHJl dHVybiBnZGJweV9jb3JlX2ZpbGVfZnJvbV9pbmZlcmlvciAoaW5mZXJpb3IpLnJlbGVhc2UgKCk7 CisrfQorKworIHN0YXRpYyB2b2lkCisgaW5mcHlfZGVhbGxvYyAoUHlPYmplY3QgKm9iaikKKyB7 CitAQCAtMTA2Miw2ICsxMDc4LDggQEAgc3RhdGljIGdkYl9QeUdldFNldERlZiBpbmZlcmlvcl9v YmplY3RfZ2V0c2V0W10gPQorICAgeyAicHJvZ3NwYWNlIiwgaW5mcHlfZ2V0X3Byb2dzcGFjZSwg TlVMTCwgIlByb2dyYW0gc3BhY2Ugb2YgdGhpcyBpbmZlcmlvciIgfSwKKyAgIHsgIm1haW5fbmFt ZSIsIGluZnB5X2dldF9tYWluX25hbWUsIG51bGxwdHIsCisgICAgICJOYW1lIG9mICdtYWluJyBm dW5jdGlvbiwgaWYga25vd24uIiwgbnVsbHB0ciB9LAorKyAgeyAiY29yZWZpbGUiLCBpbmZweV9n ZXRfY29yZV9maWxlLCBudWxscHRyLAorKyAgICAiVGhlIGNvcmVmaWxlIGxvYWRlZCBpbiB0byB0 aGlzIGluZmVyaW9yLCBvciBOb25lLiIsIG51bGxwdHIgfSwKKyAgIHsgTlVMTCB9CisgfTsKKyAK K2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIGIvZ2RiL3B5dGhvbi9w eXRob24taW50ZXJuYWwuaAorLS0tIGEvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAorKysr IGIvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAorQEAgLTExMTMsNiArMTExMywxNCBAQCBl eHRlcm4gc3RkOjpvcHRpb25hbDxpbnQ+IGdkYnB5X3ByaW50X2luc24gKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAorIAkJCQkJICAgIENPUkVfQUREUiBhZGRyZXNzLAorIAkJCQkJICAgIGRpc2Fz c2VtYmxlX2luZm8gKmluZm8pOworIAorKy8qIFJldHVybiB0aGUgZ2RiLkNvcmVmaWxlIG9iamVj dCByZXByZXNlbnRpbmcgdGhlIGNvcmUgZmlsZSBsb2FkZWQgaW50bworKyAgIHRoZSBwcm9ncmFt IHNwYWNlIG9mIElORiwgb3IgTm9uZSBpZiB0aGVyZSBpcyBubyBjb3JlIGZpbGUgbG9hZGVkLiAg SU5GCisrICAgbXVzdCBub3QgYmUgTlVMTC4gIElmIGFuIGVycm9yIG9jY3VycyB0aGVuIE5VTEwg aXMgcmV0dXJuZWQsIGFuZCBhCisrICAgc3VpdGFibGUgUHl0aG9uIGVycm9yIHdpbGwgYmUgc2V0 LiAgKi8KKysKKytleHRlcm4gZ2RicHlfcmVmPD4gZ2RicHlfY29yZV9maWxlX2Zyb21faW5mZXJp b3IgKGluZmVyaW9yICppbmYpOworKworKworIC8qIEEgd3JhcHBlciBmb3IgUHlUeXBlX1JlYWR5 IHRoYXQgYWxzbyBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVycyB0aGUKKyAgICB0eXBlIGluIHRoZSBh cHByb3ByaWF0ZSBtb2R1bGUuICBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuCisg ICAgSWYgTU9EIGlzIHN1cHBsaWVkLCB0aGVuIHRoZSB0eXBlIGlzIGFkZGVkIHRvIHRoYXQgbW9k dWxlLiAgSWYgTU9ECitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGFwL2F0dGFjaC1m YWlsLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmRhcC9hdHRhY2gtZmFpbC5leHAKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kYXAv YXR0YWNoLWZhaWwuZXhwCitAQCAtMCwwICsxLDMyIEBACisrIyBDb3B5cmlnaHQgMjAyNSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrCisrIyBUZXN0ICJhdHRhY2giIGZhaWx1cmUgaW4gREFQLgorKworK3JlcXVpcmUgY2Fu X3NwYXduX2Zvcl9hdHRhY2ggYWxsb3dfZGFwX3Rlc3RzCisrCisrbG9hZF9saWIgZGFwLXN1cHBv cnQuZXhwCisrCisrIyBQYXNzaW5nIGFuIGVtcHR5IHJlbW90ZSBuYW1lIGhlcmUgd2lsbCBndWFy YW50ZWUgYSBmYWlsdXJlIHdpdGhvdXQKKysjIHRyeWluZyB0byBmaW5kIGEgcmVhbCByZW1vdGUu Cisrc2V0IGlkIFtkYXBfdGFyZ2V0X3JlbW90ZSB7IiJ9XQorKworK2RhcF9jaGVja19yZXF1ZXN0 X2FuZF9yZXNwb25zZSAiY29uZmlndXJhdGlvbkRvbmUiIGNvbmZpZ3VyYXRpb25Eb25lCisrCisr c2V0IHJlc3AgW2xpbmRleCBbZGFwX3JlYWRfcmVzcG9uc2UgYXR0YWNoICRpZF0gMF0KKytnZGJf YXNzZXJ0IHtbZGljdCBnZXQgJHJlc3Agc3VjY2Vzc10gPT0gImZhbHNlIn0gXAorKyAgICAiYXR0 YWNoIGZhaWxlZCIKKysKKytkYXBfc2h1dGRvd24KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5kYXAvY29yZWZpbGUuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmRhcC9jb3JlZmlsZS5jCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZGFwL2NvcmVmaWxlLmMKK0BAIC0wLDAgKzEsNDUgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlz IHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDI2IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8c3RkbGliLmg+CisrCisraW50IGdsb2Jh bF92YXIgPSAwOworKworK3ZvaWQKKytiYXogKHZvaWQpCisreworKyAgYWJvcnQgKCk7CisrfQor KworK3ZvaWQKKytiYXIgKHZvaWQpCisreworKyAgYmF6ICgpOworK30KKysKKyt2b2lkCisrZm9v ICh2b2lkKQorK3sKKysgIGJhciAoKTsKKyt9CisrCisraW50CisrbWFpbiAodm9pZCkKKyt7Cisr ICBmb28gKCk7CisrICByZXR1cm4gMDsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZGFwL2NvcmVmaWxlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmRhcC9jb3JlZmlsZS5leHAK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5kYXAvY29yZWZpbGUuZXhwCitAQCAtMCwwICsxLDE5NiBAQAorKyMgQ29weXJpZ2h0IDIw MjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorKworKyMgVGVzdCB1c2luZyAiYXR0YWNoIiBpbiBEQVAgZm9yIG9wZW5pbmcg YSBjb3JlIGZpbGUuCisrCisrcmVxdWlyZSBhbGxvd19kYXBfdGVzdHMKKysKKytsb2FkX2xpYiBk YXAtc3VwcG9ydC5leHAKKysKKytzdGFuZGFyZF90ZXN0ZmlsZQorKworK2lmIHtbYnVpbGRfZXhl Y3V0YWJsZSAke3Rlc3RmaWxlfS5leHAgJHRlc3RmaWxlXSA9PSAtMX0geworKyAgICByZXR1cm4K Kyt9CisrCisrc2V0IGNvcmVmaWxlIFtjb3JlX2ZpbmQgJGJpbmZpbGUge31dCisraWYgeyRjb3Jl ZmlsZSA9PSAiIn0geworKyAgICB1bnRlc3RlZCAidW5hYmxlIHRvIGNyZWF0ZSBvciBmaW5kIGNv cmVmaWxlIgorKyAgICByZXR1cm4KKyt9CisrCisrc2V0IG90aGVyX2NvcmVmaWxlIFtzdGFuZGFy ZF9vdXRwdXRfZmlsZSAiJHt0ZXN0ZmlsZX0gd2l0aCBzcGFjZXMuY29yZSJdCisrcmVtb3RlX2V4 ZWMgYnVpbGQgImNwIFwiJGNvcmVmaWxlXCIgXCIkb3RoZXJfY29yZWZpbGVcIiIKKysKKysjIFRl c3QgdGhhdCBhdHRhY2hpbmcgdG8gYSBjb3JlIGZpbGUgd29ya3MgYXQgYWxsLgorK3NldCBhdHRh Y2hfaWQgW2RhcF9jb3JlZmlsZSAkY29yZWZpbGUgJGJpbmZpbGVdCisrCisrZGFwX2NoZWNrX3Jl cXVlc3RfYW5kX3Jlc3BvbnNlICJjb25maWd1cmF0aW9uRG9uZSIgY29uZmlndXJhdGlvbkRvbmUK KysKKytkYXBfY2hlY2tfcmVzcG9uc2UgImF0dGFjaCByZXNwb25zZSIgYXR0YWNoICRhdHRhY2hf aWQKKysKKytkYXBfd2FpdF9mb3JfZXZlbnRfYW5kX2NoZWNrICJzdG9wcGVkIiBzdG9wcGVkIFwK KysgICAgImJvZHkgcmVhc29uIiBhdHRhY2gKKysKKysjIFRyeSAnY29udGludWUnLCB0aGlzIHNo b3VsZCBmYWlsLgorK3NldCBvYmogW2RhcF9yZXF1ZXN0X2FuZF9yZXNwb25zZSBjb250aW51ZSBc CisrCSAgICAge28gdGhyZWFkSWQgW2kgMV19XQorK3NldCByZXNwb25zZSBbbGluZGV4ICRvYmog MF0KKytnZGJfYXNzZXJ0IHsgW2RpY3QgZ2V0ICRyZXNwb25zZSBzdWNjZXNzXSA9PSAiZmFsc2Ui IH0gXAorKyAgICAiY29udGludWUgd2l0aCBjb3JlIGZpbGUgdGFyZ2V0IgorKworKyMgR2V0IGEg YmFja3RyYWNlIGZyb20gdGhlIGNvcmUgZmlsZS4KKytzZXQgYnQgW2xpbmRleCBbZGFwX2NoZWNr X3JlcXVlc3RfYW5kX3Jlc3BvbnNlICJiYWNrdHJhY2UiIHN0YWNrVHJhY2UgXAorKwkJICAgIHtv IHRocmVhZElkIFtpIDFdfV0gMF0KKytzZXQgZnJhbWVfaWQgW2RpY3QgZ2V0IFtsaW5kZXggW2Rp Y3QgZ2V0ICRidCBib2R5IHN0YWNrRnJhbWVzXSAwXSBpZF0KKysKKysjIEdldCBhbGwgc2NvcGVz IGZvciBmcmFtZSAwLiAgU2VhcmNoIHRocm91Z2ggc2NvcGVzIHRvIGZpbmQgdGhlCisrIyByZWdp c3RlciBzY29wZS4KKytzZXQgc2NvcGVzIFtkYXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2Ug ImdldCBzY29wZXMiIHNjb3BlcyBcCisrCQlbZm9ybWF0IHtvIGZyYW1lSWQgW2kgJWRdfSAkZnJh bWVfaWRdXQorK3NldCBzY29wZXMgW2RpY3QgZ2V0IFtsaW5kZXggJHNjb3BlcyAwXSBib2R5IHNj b3Blc10KKytzZXQgcmVnX3Njb3BlICIiCisrZm9yZWFjaCBzICRzY29wZXMgeworKyAgICBpZiB7 W2RpY3QgZ2V0ICRzIG5hbWVdID09ICJSZWdpc3RlcnMifSB7CisrCXNldCByZWdfc2NvcGUgJHMK KysgICAgfQorK30KKytnZGJfYXNzZXJ0IHsgJHJlZ19zY29wZSBuZSAiIiB9ICJmb3VuZCByZWdp c3RlciBzY29wZSIKKysKKysjIFJlYWQgYWxsIHRoZSByZWdpc3RlcnMgZnJvbSB0aGUgcmVnaXN0 ZXIgc2NvcGUuCisrc2V0IG51bSBbZGljdCBnZXQgJHJlZ19zY29wZSB2YXJpYWJsZXNSZWZlcmVu Y2VdCisrc2V0IHJlcGx5IFtsaW5kZXggW2RhcF9jaGVja19yZXF1ZXN0X2FuZF9yZXNwb25zZSAi ZmV0Y2ggYWxsIHJlZ2lzdGVycyIgXAorKwkJICAgICAgInZhcmlhYmxlcyIgXAorKwkJICAgICAg W2Zvcm1hdCB7byB2YXJpYWJsZXNSZWZlcmVuY2UgW2kgJWRdIGNvdW50IFtpICVkXX0gJG51bVwK KysJCQkgICBbZGljdCBnZXQgJHJlZ19zY29wZSBuYW1lZFZhcmlhYmxlc11dXSAwXQorKworKyMg RmluZCB0aGUgbmFtZSBhbmQgdmFsdWUgb2YgYSByZWdpc3Rlciwgd2UnbGwgdXNlIHRoaXMgdG8g dHJ5IHNldHRpbmcKKysjIGEgcmVnaXN0ZXIgYmVsb3cuCisrc2V0IHJlZ3MgW2RpY3QgZ2V0ICRy ZXBseSBib2R5IHZhcmlhYmxlc10KKytnZGJfYXNzZXJ0IHtbbGxlbmd0aCAkcmVnc10gPiAwfSAi Z290IGF0IGxlYXN0IG9uZSByZWdpc3RlciIKKytzZXQgcmVnX25hbWUgW2RpY3QgZ2V0IFtsaW5k ZXggJHJlZ3MgMF0gbmFtZV0KKytzZXQgcmVnX3ZhbHVlIFtkaWN0IGdldCBbbGluZGV4ICRyZWdz IDBdIHZhbHVlXQorKworK3NldCBvYmogW2RhcF9yZXF1ZXN0X2FuZF9yZXNwb25zZSBzZXRFeHBy ZXNzaW9uIFwKKysJICAgICB7byBleHByZXNzaW9uIFtzIGdsb2JhbF92YXJdIHZhbHVlIFtzIDIz XX1dCisrc2V0IHJlc3BvbnNlIFtsaW5kZXggJG9iaiAwXQorK2dkYl9hc3NlcnQgeyBbZGljdCBn ZXQgJHJlc3BvbnNlIHN1Y2Nlc3NdID09ICJmYWxzZSIgfSBcCisrICAgICJzZXQgZ2xvYmFsIHZh cmlhYmxlIGZhaWxzIgorK3NldCBleHBlY3RlZF9leGNlcHRpb25fY291bnQgMQorKworKyMgVHJ5 IHNldHRpbmcgYSByZWdpc3RlciwgdGhpcyBzaG91bGQgZmFpbCBhcyByZWdpc3RlcnMgYXJlIG5v dAorKyMgd3JpdGFibGUgZm9yIGEgY29yZSBmaWxlIHRhcmdldC4gIFdlIG5lZWQgdG8gd3JpdGUg YmFjayBhIGRpZmZlcmVudAorKyMgcmVnaXN0ZXIgdmFsdWUsIHNvIHdlIGFkZCBvbmUgdG8gdGhl IGN1cnJlbnQgdmFsdWUuICBUaGlzIG1lYW5zIHdlCisrIyBjYW4gb25seSBydW4gdGhlIHRlc3Qg aWYgdGhlIGN1cnJlbnQgcmVnaXN0ZXIgdmFsdWUgaXMgYW4gaW50ZWdlci4KKytpZiB7W3N0cmlu ZyBpcyBpbnRlZ2VyIC1zdHJpY3QgJHJlZ192YWx1ZV19IHsKKysgICAgc2V0IG5ld192YWx1ZSBb ZXhwciB7JHJlZ192YWx1ZSArIDF9XQorKyAgICBzZXQgb2JqIFtkYXBfcmVxdWVzdF9hbmRfcmVz cG9uc2Ugc2V0RXhwcmVzc2lvbiBcCisrCQkge28gZXhwcmVzc2lvbiBbcyBcJCRyZWdfbmFtZV0g dmFsdWUgW3MgJG5ld192YWx1ZV19XQorKyAgICBzZXQgcmVzcG9uc2UgW2xpbmRleCAkb2JqIDBd CisrICAgIGdkYl9hc3NlcnQgeyBbZGljdCBnZXQgJHJlc3BvbnNlIHN1Y2Nlc3NdID09ICJmYWxz ZSIgfSBcCisrCSJzZXQgcmVnaXN0ZXIgZmFpbHMiCisrICAgIGluY3IgZXhwZWN0ZWRfZXhjZXB0 aW9uX2NvdW50CisrfQorKworK2RhcF9zaHV0ZG93biBmYWxzZSAkZXhwZWN0ZWRfZXhjZXB0aW9u X2NvdW50CisrCisrIyBSZWNvbm5lY3QgdG8gdGhlIGNvcmUgZmlsZS4gIFRoaXMgdGltZSB3aGVu IHdlIHNodXRkb3duIHdlIHdpbGwKKysjIHJlcXVlc3QgdGhhdCB0aGUgdGFyZ2V0IGJlIHRlcm1p bmF0ZWQsIEdEQiBzaG91bGQgc3RpbGwganVzdAorKyMgZGlzY29ubmVjdCB0aG91Z2ggYXMgY29y ZSBmaWxlIHRhcmdldHMgY2Fubm90IGJlIGtpbGxlZC4KKyt3aXRoX3Rlc3RfcHJlZml4ICJyZWF0 dGFjaCIgeworKyAgICBzZXQgYXR0YWNoX2lkIFtkYXBfY29yZWZpbGUgJGNvcmVmaWxlICRiaW5m aWxlXQorKworKyAgICBkYXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2UgImNvbmZpZ3VyYXRp b25Eb25lIiBjb25maWd1cmF0aW9uRG9uZQorKworKyAgICBkYXBfY2hlY2tfcmVzcG9uc2UgImF0 dGFjaCByZXNwb25zZSIgYXR0YWNoICRhdHRhY2hfaWQKKysKKysgICAgZGFwX3dhaXRfZm9yX2V2 ZW50X2FuZF9jaGVjayAic3RvcHBlZCIgc3RvcHBlZCBcCisrCSJib2R5IHJlYXNvbiIgYXR0YWNo CisrCisrICAgICMgUmVxdWVzdCB0aGUgdGFyZ2V0IGJlIHRlcm1pbmF0ZWQuICBUaGlzIGRvZXNu J3QgbWFrZSBzZW5zZSBmb3IKKysgICAgIyBjb3JlIGZpbGUgdGFyZ2V0cyAod2hpY2ggY2Fubm90 IGJlIGtpbGxlZCksIGJ1dCBHREIgc2hvdWxkCisrICAgICMgaGFuZGxlIHRoaXMgZ3JhY2VmdWxs eSBhbmQganVzdCBkaXNjb25uZWN0LgorKyAgICBkYXBfc2h1dGRvd24gdHJ1ZQorK30KKysKKysj IFRlc3QgbG9hZGluZyBhIGNvcmUgZmlsZSB3aXRoIHNwYWNlcyBpbiBpdHMgbmFtZS4KKyt3aXRo X3Rlc3RfcHJlZml4ICJjb3JlIGZpbGUgd2l0aCBzcGFjZXMiIHsKKysgICAgZ2RiX2V4aXQKKysK KysgICAgIyBUZXN0IHRoYXQgYXR0YWNoaW5nIHRvIGEgY29yZSBmaWxlIHdvcmtzIGF0IGFsbC4K KysgICAgc2V0IGF0dGFjaF9pZCBbZGFwX2NvcmVmaWxlICRvdGhlcl9jb3JlZmlsZV0KKysKKysg ICAgZGFwX2NoZWNrX3JlcXVlc3RfYW5kX3Jlc3BvbnNlICJjb25maWd1cmF0aW9uRG9uZSIgY29u ZmlndXJhdGlvbkRvbmUKKysKKysgICAgZGFwX2NoZWNrX3Jlc3BvbnNlICJhdHRhY2ggcmVzcG9u c2UiIGF0dGFjaCAkYXR0YWNoX2lkCisrCisrICAgIGRhcF93YWl0X2Zvcl9ldmVudF9hbmRfY2hl Y2sgInN0b3BwZWQiIHN0b3BwZWQgXAorKwkiYm9keSByZWFzb24iIGF0dGFjaAorKworKyAgICAj IFVzZSB0aGUgcmVwbCB0byBpc3N1ZSBhbiAnaW5mbyBpbmZlcmlvcnMnIGNvbW1hbmQuCisrICAg IHNldCBvYmogW2RhcF9jaGVja19yZXF1ZXN0X2FuZF9yZXNwb25zZSAiY29tbWFuZCByZXBsIiBc CisrCQkgZXZhbHVhdGUge28gZXhwcmVzc2lvbiBbcyAiaW5mbyBpbmZlcmlvcnMiXSBjb250ZXh0 IFtzIHJlcGxdfV0KKysgICAgc2V0IHJlc3BvbnNlIFtsaW5kZXggJG9iaiAwXQorKyAgICBzZXQg cmVzdWx0IFtkaWN0IGdldCAkcmVzcG9uc2UgYm9keSByZXN1bHRdCisrICAgIHNldCByZXN1bHQg W3N0cmluZyBtYXAge1xcbiBcbiBcXHQgXHR9ICRyZXN1bHRdCisrICAgIHZlcmJvc2UgLWxvZyAi SW5mbyBJbmZlcmlvcnMgT3V0cHV0OlxuJHJlc3VsdFxuXG4iCisrCisrICAgICMgQ2hlY2sgdGhh dCB0aGUgb3V0cHV0IGNvbnRhaW5zIHRoZSBoZWFkZXIgbGluZSwgdGhlIGV4ZWN1dGFibGUKKysg ICAgIyBuYW1lLCBhbmQgdGhlIGNvcmUgZmlsZSBuYW1lLiAgV2UgZGlkbid0IHBhc3MgdGhlIGV4 ZWN1dGFibGUKKysgICAgIyBuYW1lIHdoZW4gbG9hZGluZyB0aGUgY29yZSBmaWxlLCBidXQgR0RC IHNob3VsZCBoYXZlIGJlZW4gYWJsZQorKyAgICAjIHRvIGZpbmQgdGhlIGV4ZWN1dGFibGUgZnJv bSB0aGUgY29yZSBmaWxlLgorKyAgICBnZGJfYXNzZXJ0IHsgW3JlZ2V4cCAiTnVtXFxzK0Rlc2Ny aXB0aW9uXFxzK0Nvbm5lY3Rpb25cXHMrRXhlY3V0YWJsZSIgJHJlc3VsdF0gfSBcCisrCSJpbmZv IGluZmVyaW9ycyBjb2x1bW4gaGVhZGVycyBmb3VuZCIKKysKKysgICAgZ2RiX2Fzc2VydCB7IFty ZWdleHAgIltzdHJpbmdfdG9fcmVnZXhwICRiaW5maWxlXVxccypcbiIgJHJlc3VsdF0gfSBcCisr CSJleGVjdXRhYmxlIG5hbWUgd2FzIHNldCBkdXJpbmcgY29yZSBmaWxlIGxvYWQiCisrCisrICAg IGRhcF9zaHV0ZG93bgorK30KKysKKysjIFRlc3QgbG9hZGluZyBhIGNvcmUgZmlsZSB2aWEgdGhl IHJlcGwuCisrd2l0aF90ZXN0X3ByZWZpeCAibG9hZCBjb3JlIGZpbGUgdmlhIHJlcGwiIHsKKysg ICAgZ2RiX2V4aXQKKysKKysgICAgaWYge1tkYXBfaW5pdGlhbGl6ZV0gPT0gIiJ9IHsKKysJcmV0 dXJuCisrICAgIH0KKysKKysgICAgIyBVc2UgdGhlIHJlcGwgdG8gaXNzdWUgYSAnY29yZS1maWxl JyBjb21tYW5kLgorKyAgICBzZXQgb2JqIFtkYXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2Ug ImNvbW1hbmQgcmVwbCIgXAorKwkJIGV2YWx1YXRlIFtmb3JtYXQge28gZXhwcmVzc2lvbiBbcyAi Y29yZS1maWxlICVzIl0gY29udGV4dCBbcyByZXBsXX0gJGNvcmVmaWxlXV0KKysgICAgc2V0IHJl c3BvbnNlIFtsaW5kZXggJG9iaiAwXQorKyAgICBzZXQgcmVzdWx0IFtkaWN0IGdldCAkcmVzcG9u c2UgYm9keSByZXN1bHRdCisrICAgIHNldCByZXN1bHQgW3N0cmluZyBtYXAge1xcbiBcbiBcXHQg XHR9ICRyZXN1bHRdCisrICAgIHZlcmJvc2UgLWxvZyAiQ29yZS1GaWxlIENvbW1hbmQgT3V0cHV0 OlxuJHJlc3VsdFxuXG4iCisrCisrICAgICMgQnkgdGhlIHRpbWUgd2UgZ290IHRoZSByZXNwb25z ZSBmcm9tIHRoZSAnY29yZS1maWxlJyBjb21tYW5kLAorKyAgICAjIHRoZSBzdG9wcGVkIGV2ZW50 LCBzZW50IHdoZW4gd2UgYXR0YWNoIHRvIGEgY29yZSBmaWxlLCBzaG91bGQKKysgICAgIyBhbHJl YWR5IGhhdmUgYmVlbiBzZWVuLCBjaGVjayBmb3IgaXQgbm93LgorKyAgICBzZXQgb2sgZmFsc2UK KysgICAgZm9yZWFjaCBkIFtsaW5kZXggJG9iaiAxXSB7CisrCWlmIHtbZGljdCBnZXQgJGQgdHlw ZV0gIT0gImV2ZW50IgorKwkgICAgfHwgW2RpY3QgZ2V0ICRkIGV2ZW50XSAhPSAic3RvcHBlZCJ9 IHsKKysJICAgIGNvbnRpbnVlCisrCX0KKysJaWYge1tkaWN0IGdldCAkZCBib2R5IHJlYXNvbl0g PT0gImF0dGFjaCJ9IHsKKysJICAgIHNldCBvayB0cnVlCisrCSAgICBicmVhaworKwl9CisrICAg IH0KKysgICAgZ2RiX2Fzc2VydCB7ICRvayB9ICJzYXcgc3RvcHBlZCBldmVudCIKKysKKysgICAg ZGFwX3NodXRkb3duCisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1jb3JlZmlsZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvcmVmaWxlLmMKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktY29yZWZpbGUuYworQEAgLTAsMCArMSwyNSBAQAorKy8qIENvcHlyaWdodCAy MDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAg LyogV2l0aCBjb3JyZWN0IHVsaW1pdCwgZXRjLiB0aGlzIHNob3VsZCBjYXVzZSBhIGNvcmUgZHVt cC4gICovCisrICBhYm9ydCAoKTsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LWNvcmVmaWxlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jb3Jl ZmlsZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktY29yZWZpbGUuZXhwCitAQCAtMCwwICsxLDM2NSBAQAor KyMgQ29weXJpZ2h0IChDKSAyMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKwor KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMK KysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBHREIgdGVzdHN1aXRlLiAgSXQgdGVzdHMgdGhlIGNvcmUgZmlsZQorKyMgc3VwcG9ydCBp biBQeXRob24uCisrCisrcmVxdWlyZSBpc25hdGl2ZQorK3JlcXVpcmUgeyFpc19yZW1vdGUgaG9z dH0KKysKKytsb2FkX2xpYiBnZGItcHl0aG9uLmV4cAorKworK3JlcXVpcmUgYWxsb3dfcHl0aG9u X3Rlc3RzCisrCisrc3RhbmRhcmRfdGVzdGZpbGUKKysKKytpZiB7W2J1aWxkX2V4ZWN1dGFibGUg ImJ1aWxkIGV4ZWN1dGFibGUiICR0ZXN0ZmlsZSAkc3JjZmlsZV0gPT0gLTF9IHsKKysgICAgcmV0 dXJuCisrfQorKworK3NldCByZW1vdGVfcHl0aG9uX2ZpbGUgXAorKyAgICBbZ2RiX3JlbW90ZV9k b3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ucHldCisrCisrc2V0 IGNvcmVmaWxlIFtjb3JlX2ZpbmQgJGJpbmZpbGVdCisraWYgeyRjb3JlZmlsZSA9PSAiIn0gewor KyAgICB1bnN1cHBvcnRlZCAiY291bGRuJ3QgY3JlYXRlIG9yIGZpbmQgY29yZWZpbGUiCisrICAg IHJldHVybgorK30KKysKKysjIEhlbHBlciBwcm9jIHRvIHJ1biB0aGUgJ2NvcmUtZmlsZScgY29t bWFuZC4gIFRha2VzIG9wdGlvbmFsIGFyZ3VtZW50czoKKysjCisrIyAgIC1jb3JlZmlsZSBGSUxF TkFNRSA6IExvYWQgRklMRU5BTUUgYXMgdGhlIG5ldyBjb3JlIGZpbGUuICBJZiB0aGlzCisrIyAg ICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IGlzIG5vdCBnaXZlbiB0aGVuIHRoZSBjdXJy ZW50IGNvcmUKKysjICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSB3aWxsIGJlIHVubG9hZGVk LgorKyMKKysjICAgLWluZmVyaW9yIE5VTSA6IFRoZSBpbmZlcmlvciBpbiB3aGljaCB0aGUgY29y ZWZpbGUgaXMgYmVpbmcgY2hhbmdlZC4KKysjICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdXNl ZCB0byBtYXRjaCB0aGUgY29yZWZpbGVfY2hhbmdlZCBldmVudHMKKysjICAgICAgICAgICAgICAg ICAgIHRoYXQgd2lsbCBiZSBlbWl0dGVkLgorKyMKKysjICAgLXByZWZpeCBTVFJJTkcgOiBBIHRl c3QgcHJlZml4LCB0byBtYWtlIHRlc3QgbmFtZXMgdW5pcXVlLgorKyMKKysjICAgLXJlcGxhY2Vt ZW50IDogVGhlcmUncyBhbHJlYWR5IGEgY29yZSBmaWxlIGxvYWRlZCB3aGVuIHRoaXMgY29tbWFu ZAorKyMgICAgICAgICAgICAgICAgICBpcyBiZWluZyBydW4uCisrcHJvYyBjb3JlX2ZpbGVfY21k IHsgYXJncyB9IHsKKysgICAgcGFyc2Vfc29tZV9hcmdzIHsKKysJe2NvcmVmaWxlICIifQorKwl7 aW5mZXJpb3IgMX0KKysJe3ByZWZpeCAiIn0KKysJe3JlcGxhY2VtZW50fQorKyAgICB9CisrCisr ICAgIGlmIHsgJHByZWZpeCBlcSAiIiB9IHsKKysJaWYgeyAkY29yZWZpbGUgZXEgIiIgfSB7Cisr CSAgICBzZXQgcHJlZml4ICJ1bmxvYWQgY29yZWZpbGUiCisrCX0gZWxzZSB7CisrCSAgICBzZXQg cHJlZml4ICJsb2FkIGNvcmVmaWxlIgorKwl9CisrICAgIH0KKysKKysgICAgd2l0aF90ZXN0X3By ZWZpeCAkcHJlZml4IHsKKysJZ2RiX3Rlc3QgImV2ZW50cyBjb3JlZmlsZV9jaGFuZ2VkIGNoZWNr IiBcCisrCSAgICAiXk5vIGNvcmVmaWxlX2NoYW5nZWQgZXZlbnQgaGFzIGJlZW4gc2VlblxcLiIg XAorKwkgICAgIm5vIGNvcmVmaWxlIGV2ZW50IGhhcyBiZWVuIHNlZW4iCisrCisrCWdkYl90ZXN0 ICJldmVudHMgZXhpdGVkIGNoZWNrIiBcCisrCSAgICAiXk5vIGV4aXRlZCBldmVudCBoYXMgYmVl biBzZWVuXFwuIiBcCisrCSAgICAibm8gZXhpdGVkIGV2ZW50IGhhcyBiZWVuIHNlZW4iCisrCisr CWlmIHsgJGNvcmVmaWxlIGVxICIiIH0geworKwkgICAgZ2RiX3Rlc3QgImNvcmUtZmlsZSIgIl5O byBjb3JlIGZpbGUgbm93XFwuIiAidW5sb2FkIGN1cnJlbnQgY29yZSBmaWxlIgorKworKwkgICAg Z2RiX3Rlc3QgImV2ZW50cyBjb3JlZmlsZV9jaGFuZ2VkIGNoZWNrIiBcCisrCQkiRXZlbnQgMS8x LCBJbmZlcmlvciAkaW5mZXJpb3IsIENvcmVmaWxlIE5vbmUiIFwKKysJCSJleHBlY3RlZCBjb3Jl ZmlsZSBldmVudCBoYXMgYmVlbiBzZWVuIgorKworKwkgICAgZ2RiX3Rlc3QgImV2ZW50cyBleGl0 ZWQgY2hlY2siIFwKKysJCSJFdmVudCAxLzEsIEluZmVyaW9yICRpbmZlcmlvciwgRXhpdCBDb2Rl IE5vbmUiIFwKKysJCSJleHBlY3RlZCBleGl0ZWQgZXZlbnQgaGFzIGJlZW4gc2VlbiIKKysJfSBl bHNlIHsKKysJICAgIGdkYl90ZXN0ICJjb3JlLWZpbGUgJGNvcmVmaWxlIiAiLioiICJsb2FkIGNv cmUgZmlsZSIKKysKKysJICAgIGlmIHsgJHJlcGxhY2VtZW50IH0geworKwkJZ2RiX3Rlc3QgImV2 ZW50cyBjb3JlZmlsZV9jaGFuZ2VkIGNoZWNrIiBcCisrCQkgICAgW211bHRpX2xpbmUgXAorKwkJ CSAiRXZlbnQgMS8yLCBJbmZlcmlvciAkaW5mZXJpb3IsIENvcmVmaWxlIE5vbmUiIFwKKysJCQkg IkV2ZW50IDIvMiwgSW5mZXJpb3IgJGluZmVyaW9yLCBDb3JlZmlsZSBbc3RyaW5nX3RvX3JlZ2V4 cCAkY29yZWZpbGVdIl0gXAorKwkJICAgICJleHBlY3RlZCBjb3JlZmlsZSBldmVudCBoYXMgYmVl biBzZWVuIgorKworKwkJZ2RiX3Rlc3QgImV2ZW50cyBleGl0ZWQgY2hlY2siIFwKKysJCSAgICAi RXZlbnQgMS8xLCBJbmZlcmlvciAkaW5mZXJpb3IsIEV4aXQgQ29kZSBOb25lIiBcCisrCQkgICAg ImV4cGVjdGVkIGV4aXRlZCBldmVudCBoYXMgYmVlbiBzZWVuIgorKwkgICAgfSBlbHNlIHsKKysJ CWdkYl90ZXN0ICJldmVudHMgY29yZWZpbGVfY2hhbmdlZCBjaGVjayIgXAorKwkJICAgICJFdmVu dCAxLzEsIEluZmVyaW9yICRpbmZlcmlvciwgQ29yZWZpbGUgW3N0cmluZ190b19yZWdleHAgJGNv cmVmaWxlXSIgXAorKwkJICAgICJleHBlY3RlZCBjb3JlZmlsZSBldmVudCBoYXMgYmVlbiBzZWVu IgorKworKwkJZ2RiX3Rlc3QgImV2ZW50cyBleGl0ZWQgY2hlY2siIFwKKysJCSAgICAiXk5vIGV4 aXRlZCBldmVudCBoYXMgYmVlbiBzZWVuXFwuIiBcCisrCQkgICAgIm5vIGV4aXRlZCBldmVudCB3 YXMgZW1pdHRlZCIKKysJICAgIH0KKysJfQorKyAgICB9CisrCisrICAgIGdkYl90ZXN0X25vX291 dHB1dCAtbm9wYXNzICJldmVudHMgY29yZWZpbGVfY2hhbmdlZCByZXNldCIKKysgICAgZ2RiX3Rl c3Rfbm9fb3V0cHV0IC1ub3Bhc3MgImV2ZW50cyBleGl0ZWQgcmVzZXQiCisrfQorKworKyMgQSBo ZWxwZXIgcHJvYyBydW5zIGNsZWFuX3Jlc3RhcnQgcGFzc2luZyB0aHJvdWdoIEFSR1MsIGFuZCB0 aGVuIGxvYWRzIHRoZQorKyMgdGVzdCdzIFB5dGhvbiBzY3JpcHQuCisrcHJvYyBjbGVhbl9yZXN0 YXJ0X2FuZF9sb2FkX3B5X3NjcmlwdCB7IGFyZ3MgfSB7CisrICAgIGNsZWFuX3Jlc3RhcnQgeyp9 JGFyZ3MKKysKKysgICAgIyBMb2FkIHRoZSBQeXRob24gc2NyaXB0IGludG8gR0RCLgorKyAgICBn ZGJfdGVzdCAic291cmNlICQ6OnJlbW90ZV9weXRob25fZmlsZSIgIl5TdWNjZXNzIiBcCisrCSJz b3VyY2UgcHl0aG9uIHNjcmlwdCIKKyt9CisrCisrIyBDcmVhdGUgYSBjb3B5IG9mIHRoZSBjb3Jl ZmlsZS4KKytzZXQgb3RoZXJfY29yZWZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZp bGV9LW90aGVyLmNvcmVdCisrcmVtb3RlX2V4ZWMgYnVpbGQgImNwICRjb3JlZmlsZSAkb3RoZXJf Y29yZWZpbGUiCisrCisrY2xlYW5fcmVzdGFydF9hbmRfbG9hZF9weV9zY3JpcHQKKysKKytnZGJf dGVzdF9ub19vdXRwdXQgInB5dGhvbiBpbmYgPSBnZGIuc2VsZWN0ZWRfaW5mZXJpb3IoKSIgXAor KyAgICAiY2FwdHVyZSBjdXJyZW50IGluZmVyaW9yIgorKworK2dkYl90ZXN0ICJweXRob24gcHJp bnQoaW5mLmNvcmVmaWxlKSIgIl5Ob25lIiBcCisrICAgICJJbmZlcmlvci5jb3JlZmlsZSBpcyBO b25lIGJlZm9yZSBsb2FkaW5nIGEgY29yZSBmaWxlIgorKworK2NvcmVfZmlsZV9jbWQgLWNvcmVm aWxlICRjb3JlZmlsZQorKworK3NldCBmaWxlX3JlIFtzdHJpbmdfdG9fcmVnZXhwICRjb3JlZmls ZV0KKytnZGJfdGVzdCAicHl0aG9uIHByaW50KGluZi5jb3JlZmlsZSkiICJePGdkYlxcLkNvcmVm aWxlIGluZmVyaW9yPTEgZmlsZW5hbWU9JyRmaWxlX3JlJz4iIFwKKysgICAgIkluZmVyaW9yLmNv cmVmaWxlIGlzIGEgdmFsaWQgb2JqZWN0IGFmdGVyIGxvYWRpbmcgYSBjb3JlIGZpbGUiCisrCisr Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gY29yZTE9aW5mLmNvcmVmaWxlIiAiY2FwdHVyZSBn ZGIuQ29yZWZpbGUgb2JqZWN0IgorKworK2dkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTEuX19k aWN0X18pIiAiXlxce1xcfSIgXAorKyAgICAicHJpbnQgQ29yZWZpbGUuX19kaWN0X18gd2hlbiBl bXB0eSIKKysKKytnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBjb3JlMS5fbXlfYXR0cmlidXRl ID0gXCJIZWxsb1wiIiBcCisrICAgICJ3cml0ZSBuZXcgYXR0cmlidXRlIGludG8gQ29yZWZpbGUg b2JqZWN0IgorKworK2dkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTEuX215X2F0dHJpYnV0ZSki ICJeSGVsbG8iIFwKKysgICAgImltbWVkaWF0ZWx5IHJlYWQgbmV3IGF0dHJpYnV0ZSIKKysKKytn ZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUxLl9fZGljdF9fKSIgIl5cXHsnX215X2F0dHJpYnV0 ZSc6ICdIZWxsbydcXH0iIFwKKysgICAgInByaW50IENvcmVmaWxlLl9fZGljdF9fIGFmdGVyIGFk ZGluZyBhbiBhdHRyaWJ1dGUiCisrCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMS5maWxl bmFtZSkiICJeJGZpbGVfcmUiIFwKKysgICAgIkNvcmVmaWxlLmZpbGVuYW1lIGF0dHJpYnV0ZSB3 b3JrcyBhcyBleHBlY3RlZCIKKysKKytnZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUxLmlzX3Zh bGlkKCkpIiAiXlRydWUiIFwKKysgICAgIkNvcmVmaWxlLmlzX3ZhbGlkKCkgaXMgVHJ1ZSB3aGls ZSBjb3JlZmlsZSBpcyBsb2FkZWQiCisrCisrY29yZV9maWxlX2NtZAorKworK2dkYl90ZXN0ICJw eXRob24gcHJpbnQoY29yZTEuaXNfdmFsaWQoKSkiICJeRmFsc2UiIFwKKysgICAgIkNvcmVmaWxl LmlzX3ZhbGlkKCkgaXMgRmFsc2UgYWZ0ZXIgY29yZWZpbGUgaXMgdW5sb2FkZWQiCisrCisrZ2Ri X3Rlc3QgInB5dGhvbiBwcmludChjb3JlMS5fX2RpY3RfXykiICJeXFx7J19teV9hdHRyaWJ1dGUn OiAnSGVsbG8nXFx9IiBcCisrICAgICJwcmludCBDb3JlZmlsZS5fX2RpY3RfXyB3aXRoIGF0dHJp YnV0ZSB3aGVuIGludmFsaWQiCisrCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMSkiICJe PGdkYlxcLkNvcmVmaWxlIFxcKGludmFsaWRcXCk+IiBcCisrICAgICJwcmludCBhbiBpbnZhbGlk IGdkYi5Db3JlZmlsZSBvYmplY3QiCisrCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMS5m aWxlbmFtZSkiIFwKKysgICAgW211bHRpX2xpbmUgXAorKwkgIlB5dGhvbiBFeGNlcHRpb24gPGNs YXNzICdSdW50aW1lRXJyb3InPjogQ29yZWZpbGUgbm8gbG9uZ2VyIGV4aXN0c1xcLiIgXAorKwkg IkVycm9yIG9jY3VycmVkIGluIFB5dGhvbjogQ29yZWZpbGUgbm8gbG9uZ2VyIGV4aXN0c1xcLiJd IFwKKysgICAgImVycm9yIHdoZW4gcmVhZGluZyBmaWxlbmFtZSBmcm9tIGludmFsaWQgQ29yZWZp bGUiCisrCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChpbmYuY29yZWZpbGUpIiAiXk5vbmUiIFwK KysgICAgIkluZmVyaW9yLmNvcmVmaWxlIGlzIE5vbmUgYWdhaW4gYWZ0ZXIgY29yZWZpbGUgdW5s b2FkIgorKworK2dkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTEuX215X2F0dHJpYnV0ZSkiICJe SGVsbG8iIFwKKysgICAgInJlYWQgbmV3IGF0dHJpYnV0ZSBmcm9tIGludmFsaWQgY29yZSBmaWxl IgorKworKyMgQ3JlYXRlIGEgc2Vjb25kIGluZmVyaW9yLgorK2dkYl90ZXN0ICJhZGQtaW5mZXJp b3IiCisrZ2RiX3Rlc3QgImluZmVyaW9yIDIiCisrCisrd2l0aF90ZXN0X3ByZWZpeCAiaW4gc2Vj b25kIGluZmVyaW9yIiB7CisrICAgIGNvcmVfZmlsZV9jbWQgLWNvcmVmaWxlICRjb3JlZmlsZSAt aW5mZXJpb3IgMgorKworKyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50KGluZi5jb3JlZmlsZSki ICJeTm9uZSIgXAorKwkiZmlyc3QgaW5mZXJpb3Igc3RpbGwgaGFzIG5vIGNvcmUgZmlsZSIKKysK KysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gY29yZTI9Z2RiLnNlbGVjdGVkX2luZmVy aW9yKCkuY29yZWZpbGUiIFwKKysJImNhcHR1cmUgZ2RiLkNvcmVmaWxlIG9iamVjdCIKKysKKysg ICAgIyBUaGUgX215X2F0dHJpYnV0ZSB3YXMgYWRkZWQgdG8gQ09SRTEsIG5vdCBDT1JFMi4gIENo ZWNrIGl0CisrICAgICMgZG9lc24ndCBzb21laG93IGFwcGVhciBvbiBDT1JFMi4KKysgICAgZ2Ri X3Rlc3QgInB5dGhvbiBwcmludChjb3JlMi5fbXlfYXR0cmlidXRlKSIgXAorKwkiQXR0cmlidXRl RXJyb3IuKjogJ2dkYlxcLkNvcmVmaWxlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnX215X2F0 dHJpYnV0ZSciIFwKKysJInRyeSB0byByZWFkIGF0dHJpYnV0ZSB0aGF0IGRvZXNuJ3QgZXhpc3Qi CisrCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTIuZmlsZW5hbWUpIiAiXiRmaWxl X3JlIiBcCisrCSJDb3JlZmlsZS5maWxlbmFtZSBhdHRyaWJ1dGUgd29ya3MgYXMgZXhwZWN0ZWQi CisrCisrICAgIGdkYl90ZXN0ICJpbmZlcmlvciAxIgorK30KKysKKysjIFJlYWQgdGhlIG5hbWUg b2YgdGhlIGNvcmUgZmlsZSBmcm9tIHRoZSBzZWNvbmQgcHJvZ3JhbSBzcGFjZSB3aGlsZQorKyMg dGhlIGN1cnJlbnQgcHJvZ3JhbSBzcGFjZSBpcyB0aGUgZmlyc3Qgb25lLgorK2dkYl90ZXN0ICJw eXRob24gcHJpbnQoY29yZTIuZmlsZW5hbWUpIiAiXiRmaWxlX3JlIiBcCisrICAgICJDb3JlZmls ZS5maWxlbmFtZSBhdHRyaWJ1dGUgd29ya3MgZnJvbSBkaWZmZXJlbnQgcHJvZ3NwYWNlIgorKwor KyMgTG9hZCB0aGUgb3RoZXIgY29yZWZpbGUgaW50byB0aGUgZmlyc3QgaW5mZXJpb3IuCisrY29y ZV9maWxlX2NtZCAtY29yZWZpbGUgJG90aGVyX2NvcmVmaWxlIFwKKysgICAgLXByZWZpeCAibG9h ZCBvdGhlciBjb3JlZmlsZSBpbnRvIGluZmVyaW9yIDEiCisrCisrIyBEZWxldGUgdGhlIHNlY29u ZCBpbmZlcmlvci4gIFdlIG5lZWQgdG8gc3dpdGNoIHRvIHRoZSBzZWNvbmQKKysjIGluZmVyaW9y IGFuZCB1bmxvYWQgaXRzIGNvcmVmaWxlIGJlZm9yZSB3ZSBjYW4gZG8gdGhhdC4gIFRoZW4sCisr IyBzd2l0Y2ggYmFjayB0byB0aGUgZmlyc3QgaW5mZXJpb3IsIGRlbGV0ZSB0aGUgc2Vjb25kLCBh bmQgdHJ5IHRvCisrIyByZWFkIHRoZSBmaWxlbmFtZSBvZiB0aGUgY29yZSBmaWxlIGZyb20gdGhl IChub3cgZGVsZXRlZCkgc2Vjb25kCisrIyBpbmZlcmlvci4gIFdlIHNob3VsZCBnZXQgYW4gZXJy b3IgYWJvdXQgdGhlIGdkYi5Db3JlZmlsZSBiZWluZworKyMgaW52YWxpZC4KKyt3aXRoX3Rlc3Rf cHJlZml4ICJyZW1vdmUgc2Vjb25kIGluZmVyaW9yIiB7CisrICAgIGdkYl90ZXN0ICJpbmZlcmlv ciAyIgorKworKyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50KGluZi5jb3JlZmlsZS5maWxlbmFt ZSkiIFwKKysJIl5bc3RyaW5nX3RvX3JlZ2V4cCAkb3RoZXJfY29yZWZpbGVdIiBcCisrCSJyZWFk IGluZmVyaW9yIDEgY29yZWZpbGUgd2hlbiBpbiBpbmZlcmlvciAyIgorKworKyAgICBnZGJfdGVz dF9ub19vdXRwdXQgInB5dGhvbiBjb3JlMT1pbmYuY29yZWZpbGUiIFwKKysJImNhcHR1cmUgaW5m ZXJpb3IgMSBnZGIuQ29yZWZpbGUgd2hpbGUgaW4gaW5mZXJpb3IgMiIKKysKKysgICAgIyBUaGlz IGlzIGEgbmV3IENPUkUxIG9iamVjdCwgY2hlY2sgdGhhdCBfbXlfYXR0cmlidXRlIGlzIGdvbmUu CisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTEuX215X2F0dHJpYnV0ZSkiIFwKKysJ IkF0dHJpYnV0ZUVycm9yLio6ICdnZGJcXC5Db3JlZmlsZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1 dGUgJ19teV9hdHRyaWJ1dGUnIiBcCisrCSJ0cnkgdG8gcmVhZCBhdHRyaWJ1dGUgdGhhdCBkb2Vz bid0IGV4aXN0IgorKworKyAgICBjb3JlX2ZpbGVfY21kIC1pbmZlcmlvciAyCisrCisrICAgIGdk Yl90ZXN0ICJweXRob24gcHJpbnQoY29yZTIuZmlsZW5hbWUpIiBcCisrCVttdWx0aV9saW5lIFwK KysJICAgICAiUHl0aG9uIEV4Y2VwdGlvbiA8Y2xhc3MgJ1J1bnRpbWVFcnJvcic+OiBDb3JlZmls ZSBubyBsb25nZXIgZXhpc3RzXFwuIiBcCisrCSAgICAgIkVycm9yIG9jY3VycmVkIGluIFB5dGhv bjogQ29yZWZpbGUgbm8gbG9uZ2VyIGV4aXN0c1xcLiJdIFwKKysJImVycm9yIHdoZW4gcmVhZGlu ZyBmaWxlbmFtZSBmcm9tIGludmFsaWQgQ29yZWZpbGUiCisrCisrICAgIGdkYl90ZXN0ICJpbmZl cmlvciAxIgorKworKyAgICBnZGJfdGVzdCAicmVtb3ZlLWluZmVyaW9ycyAyIgorKworKyAgICBn ZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUyLmlzX3ZhbGlkKCkpIiAiXkZhbHNlIiBcCisrCSJD b3JlZmlsZS5pc192YWxpZCgpIGlzIEZhbHNlIGFmdGVyIGNvcmVmaWxlIGlzIHVubG9hZGVkLCBh bmQgUHJvZ3NwYWNlIGlzIGRlbGV0ZWQiCisrCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQo Y29yZTIuZmlsZW5hbWUpIiBcCisrCVttdWx0aV9saW5lIFwKKysJICAgICAiUHl0aG9uIEV4Y2Vw dGlvbiA8Y2xhc3MgJ1J1bnRpbWVFcnJvcic+OiBDb3JlZmlsZSBubyBsb25nZXIgZXhpc3RzXFwu IiBcCisrCSAgICAgIkVycm9yIG9jY3VycmVkIGluIFB5dGhvbjogQ29yZWZpbGUgbm8gbG9uZ2Vy IGV4aXN0c1xcLiJdIFwKKysJImVycm9yIHdoZW4gcmVhZGluZyBmaWxlbmFtZSBvZiBhbiBpbnZh bGlkIENvcmVmaWxlLCBmcm9tIGRlbGV0ZWQgcHJvZ3JhbSBzcGFjZSIKKysKKysgICAgZ2RiX3Rl c3QgInB5dGhvbiBwcmludChjb3JlMS5pc192YWxpZCgpKSIgIl5UcnVlIiBcCisrCSJjaGVjayBp bmZlcmlvciAxIGNvcmUgZmlsZSBpcyBzdGlsbCB2YWxpZCIKKyt9CisrCisrIyBUZXN0IHRoZSBD b3JlZmlsZS5tYXBwZWRfZmlsZXMoKSBBUEkuICBUaGUgUHl0aG9uIHNjcmlwdCB0aGF0IGlzCisr IyBzb3VyY2VkIGhlcmUgaW1wbGVtZW50cyAnaW5mbyBwcm9jIG1hcHBpbmdzJyBpbiBQeXRob24g dXNpbmcgdGhlCisrIyBtYXBwZWRfZmlsZXMgQVBJLiAgVGhlIG91dHB1dCBmcm9tIHRoZSBidWls dC1pbiBjb21tYW5kLCBhbmQgdGhlCisrIyBQeXRob24gY29tbWFuZCBzaG91bGQgYmUgaWRlbnRp Y2FsLgorK3dpdGhfdGVzdF9wcmVmaXggInRlc3QgbWFwcGVkIGZpbGVzIGRhdGEiIHsKKysgICAg Y2xlYW5fcmVzdGFydF9hbmRfbG9hZF9weV9zY3JpcHQKKysKKysgICAgIyBMb2FkIHRoZSBjb3Jl IGZpbGUuCisrICAgIGNvcmVfZmlsZV9jbWQgLWNvcmVmaWxlICRjb3JlZmlsZQorKworKyAgICAj IFR3byBmaWxlcyB0byB3cml0ZSB0aGUgb3V0cHV0IHRvLgorKyAgICBzZXQgb3V0XzEgW3N0YW5k YXJkX291dHB1dF9maWxlICR7Z2RiX3Rlc3RfZmlsZV9uYW1lfS1vdXQtMS50eHRdCisrICAgIHNl dCBvdXRfMiBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHtnZGJfdGVzdF9maWxlX25hbWV9LW91dC0y LnR4dF0KKysKKysgICAgIyBSdW4gdGhlIGJ1aWx0LWluIGNvbW1hbmQsIHRoZW4gdGhlIG5ldyBQ eXRob24gY29tbWFuZCwgY2FwdHVyZQorKyAgICAjIHRoZSBvdXRwdXQuCisrICAgIGdkYl90ZXN0 ICJwaXBlIGluZm8gcHJvYyBtYXBwaW5ncyB8IHRlZSAkb3V0XzEiICIuKiIgXAorKwkiY2FwdHVy ZSBidWlsdC1pbiBtYXBwaW5ncyBvdXRwdXQiCisrICAgIGdkYl90ZXN0ICJwaXBlIGluZm8gcHJv YyBweS1tYXBwaW5ncyB8IHRlZSAkb3V0XzIiICIuKiIgXAorKwkiY2FwdHVyZSBQeXRob24gYmFz ZWQgbWFwcGluZ3MgZGF0YSIKKysKKysgICAgIyBDaGVjayB0aGUgb3V0cHV0IGlzIGlkZW50aWNh bC4KKysgICAgZ2RiX3Rlc3QgInNoZWxsIGRpZmYgLXMgJG91dF8xICRvdXRfMiIgXAorKwkiRmls ZXMgXFteXHJcblxdKy1vdXQtMS50eHQgYW5kIFxbXlxyXG5cXSstb3V0LTIudHh0IGFyZSBpZGVu dGljYWwiIFwKKysJImRpZmYgaW5wdXQgYW5kIG91dHB1dCBvbmUiCisrCisrICAgICMgQ2hlY2sg YnVpbGQtaWRzIHdpdGhpbiB0aGUgY29yZSBmaWxlIG1hcHBpbmcgZGF0YS4KKysgICAgZ2RiX3Rl c3QgImNoZWNrLWJ1aWxkLWlkcyIgIl5QQVNTIgorKworKyAgICAjIENoZWNrIHRoZSBpc19tYWlu X2V4ZWN1dGFibGUgZmxhZyBpbiB0aGUgbWFwcGluZyBkYXRhLgorKyAgICBnZGJfdGVzdCAiY2hl Y2stbWFpbi1leGVjdXRhYmxlIiAiXlBBU1MiCisrCisrICAgICMgQ2hlY2sgdGhhdCB0aGUgbWFw cGVkIGZpbGVzICJsaXN0IiBpcyBhY3R1YWxseSBhbiBpbW11dGFibGUKKysgICAgIyB0dXBsZS4K KysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gY29yZSA9IGdkYi5zZWxlY3RlZF9pbmZl cmlvcigpLmNvcmVmaWxlIgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBtYXBwZWRf ZmlsZXMgPSBjb3JlLm1hcHBlZF9maWxlcygpIgorKyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50 KHR5cGUobWFwcGVkX2ZpbGVzKSkiIFwKKysJIl48Y2xhc3MgJ3R1cGxlJz4iCisrICAgIGdkYl90 ZXN0ICJweXRob24gbWFwcGVkX2ZpbGVzXFswXF0gPSBOb25lIiBcCisrCSIndHVwbGUnIG9iamVj dCBkb2VzIG5vdCBzdXBwb3J0IGl0ZW0gYXNzaWdubWVudCIKKysgICAgZ2RiX3Rlc3QgInB5dGhv biBwcmludChtYXBwZWRfZmlsZXNcWzBcXSBpcyBOb25lKSIgIl5GYWxzZSIKKysKKysgICAgIyBB bmQgc2FtZSBmb3IgdGhlIGxpc3Qgb2YgcmVnaW9ucyBmb3IgYSBtYXBwZWQgZmlsZS4KKysgICAg Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gcmVnaW9ucyA9IG1hcHBlZF9maWxlc1xbMFxdLnJl Z2lvbnMiCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQodHlwZShyZWdpb25zKSkiIFwKKysJ Il48Y2xhc3MgJ3R1cGxlJz4iCisrICAgIGdkYl90ZXN0ICJweXRob24gcmVnaW9uc1xbMFxdID0g Tm9uZSIgXAorKwkiJ3R1cGxlJyBvYmplY3QgZG9lcyBub3Qgc3VwcG9ydCBpdGVtIGFzc2lnbm1l bnQiCisrfQorKworKyMgTG9hZCBhIGNvcmUgZmlsZS4gIEdEQiBzaG91bGQgZmlndXJlIG91dCB3 aGljaCBmaWxlIGlzIGJlaW5nIGRlYnVnZ2VkLgorKyMgVGhlbiB1c2UgJ3N0YXJ0JyB0byBydW4g dGhpcyBleGVjdXRhYmxlLCB0aGlzIHdpbGwgcmVwbGFjZSB0aGUgY29yZSBmaWxlCisrIyB0YXJn ZXQuICBBdCBsZWFzdCBvbiBMaW51eCwgdGhpcyByZXBsYWNlbWVudCBpcyBkb25lIHdpdGhvdXQg Y2FsbGluZworKyMgdGFyZ2V0X2RldGFjaC4gIFRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgZXhw ZWN0ZWQgY29yZSBmaWxlIGNoYW5nZWQgYW5kCisrIyBpbmZlcmlvciBleGl0ZWQgZXZlbnRzIGFy ZSBzdGlsbCBzZWVuLgorK3dpdGhfdGVzdF9wcmVmaXggInN0YXJ0IGZyb20gY29yZWZpbGUiIHsK KysgICAgaWYgeyBbZ2RiX3Byb3RvY29sX2lzX25hdGl2ZV0gfSB7CisrCWNsZWFuX3Jlc3RhcnRf YW5kX2xvYWRfcHlfc2NyaXB0CisrCisrCSMgTG9hZCB0aGUgY29yZSBmaWxlLgorKwljb3JlX2Zp bGVfY21kIC1jb3JlZmlsZSAkY29yZWZpbGUKKysKKysJIyBDaGVjayBHREIgZmlndXJlZCBvdXQg dGhlIGV4ZWN1dGFibGUuCisrCWdkYl90ZXN0ICJpbmZvIGluZmVyaW9ycyAxIiBcCisrCSAgICAi XFteXHJcblxdK1tzdHJpbmdfdG9fcmVnZXhwICRiaW5maWxlXVxccyoiIFwKKysJICAgICJjaGVj ayBleGVjdXRhYmxlIHdhcyBkZXRlY3RlZCBjb3JyZWN0bHkiCisrCisrCWdkYl90ZXN0ICJzdGFy dCIgXAorKwkgICAgIlRlbXBvcmFyeSBicmVha3BvaW50ICQ6OmRlY2ltYWwsIG1haW4gXFwoXFwp LioiIFwKKysKKysJZ2RiX3Rlc3QgImV2ZW50cyBjb3JlZmlsZV9jaGFuZ2VkIGNoZWNrIiBcCisr CSAgICAiRXZlbnQgMS8xLCBJbmZlcmlvciAxLCBDb3JlZmlsZSBOb25lIiBcCisrCSAgICAiZXhw ZWN0ZWQgY29yZWZpbGUgZXZlbnQgaGFzIGJlZW4gc2VlbiIKKysKKysJZ2RiX3Rlc3QgImV2ZW50 cyBleGl0ZWQgY2hlY2siIFwKKysJICAgICJFdmVudCAxLzEsIEluZmVyaW9yIDEsIEV4aXQgQ29k ZSBOb25lIiBcCisrCSAgICAiZXhwZWN0ZWQgZXhpdGVkIGV2ZW50IGhhcyBiZWVuIHNlZW4iCisr CisrCWdkYl90ZXN0X25vX291dHB1dCAtbm9wYXNzICJldmVudHMgY29yZWZpbGVfY2hhbmdlZCBy ZXNldCIKKysJZ2RiX3Rlc3Rfbm9fb3V0cHV0IC1ub3Bhc3MgImV2ZW50cyBleGl0ZWQgcmVzZXQi CisrICAgIH0KKyt9CisrCisrIyBMb2FkIGEgY29yZSBmaWxlLCB0aGVuIGxvYWQgYSBkaWZmZXJl bnQgY29yZSBmaWxlIHRvIHJlcGxhY2UgaXQuCisrIyBDaGVjayB0aGF0IHRoZSBldmVudHMgdGhh dCBhcmUgZW1pdHRlZCBhcmUgYXMgZXhwZWN0ZWQuCisrd2l0aF90ZXN0X3ByZWZpeCAibG9hZCBv bmUgY29yZSBmaWxlIG92ZXIgYW5vdGhlciIgeworKyAgICBjbGVhbl9yZXN0YXJ0X2FuZF9sb2Fk X3B5X3NjcmlwdAorKworKyAgICAjIExvYWQgdGhlIGNvcmUgZmlsZS4KKysgICAgY29yZV9maWxl X2NtZCAtY29yZWZpbGUgJGNvcmVmaWxlIFwKKysJLXByZWZpeCAibG9hZCBmaXJzdCBjb3JlZmls ZSIKKysKKysgICAgY29yZV9maWxlX2NtZCAtY29yZWZpbGUgJG90aGVyX2NvcmVmaWxlIFwKKysJ LXByZWZpeCAibG9hZCBzZWNvbmQgY29yZWZpbGUiIFwKKysJLXJlcGxhY2VtZW50CisrfQorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jb3JlZmlsZS5weSBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jb3JlZmlsZS5weQorbmV3IGZpbGUgbW9kZSAxMDA2NDQK Ky0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jb3JlZmls ZS5weQorQEAgLTAsMCArMSwyNjEgQEAKKysjIENvcHlyaWdodCAoQykgMjAyNSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIwor KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisr CisraW1wb3J0IHBhdGhsaWIKKysKKysKKytjbGFzcyBNYXBwaW5nOgorKyAgICBkZWYgX19pbml0 X18oc2VsZiwgbWFwcGluZywgcmVnaW9uKToKKysgICAgICAgIHNlbGYuX21hcHBpbmcgPSBtYXBw aW5nCisrICAgICAgICBzZWxmLl9yZWdpb24gPSByZWdpb24KKysKKysgICAgQHByb3BlcnR5Cisr ICAgIGRlZiBzdGFydChzZWxmKToKKysgICAgICAgIHJldHVybiBzZWxmLl9yZWdpb24uc3RhcnQK KysKKysgICAgQHByb3BlcnR5CisrICAgIGRlZiBlbmQoc2VsZik6CisrICAgICAgICByZXR1cm4g c2VsZi5fcmVnaW9uLmVuZAorKworKyAgICBAcHJvcGVydHkKKysgICAgZGVmIG9mZnNldChzZWxm KToKKysgICAgICAgIHJldHVybiBzZWxmLl9yZWdpb24uZmlsZV9vZmZzZXQKKysKKysgICAgQHBy b3BlcnR5CisrICAgIGRlZiBmaWxlbmFtZShzZWxmKToKKysgICAgICAgIHJldHVybiBzZWxmLl9t YXBwaW5nLmZpbGVuYW1lCisrCisrCisrZGVmIGluZm9fcHJvY19tYXBwaW5ncygpOgorKyAgICBw cmludCgiTWFwcGVkIGFkZHJlc3Mgc3BhY2VzOiIpCisrICAgIHByaW50KCIiKQorKyAgICBmb3Jt YXRfc3RyID0gIiUtMThzICUtMThzICUtMThzICUtMThzICVzICIKKysgICAgcHJpbnQoZm9ybWF0 X3N0ciAlICgiU3RhcnQgQWRkciIsICJFbmQgQWRkciIsICJTaXplIiwgIk9mZnNldCIsICJGaWxl IikpCisrCisrICAgIGNvcmUgPSBnZGIuc2VsZWN0ZWRfaW5mZXJpb3IoKS5jb3JlZmlsZQorKyAg ICBtYXBwaW5ncyA9IGNvcmUubWFwcGVkX2ZpbGVzKCkKKysKKysgICAgcmVzdWx0ID0gW10KKysg ICAgZm9yIG0gaW4gbWFwcGluZ3M6CisrICAgICAgICBmb3IgciBpbiBtLnJlZ2lvbnM6CisrICAg ICAgICAgICAgcmVzdWx0LmFwcGVuZChNYXBwaW5nKG0sIHIpKQorKworKyAgICByZXN1bHQuc29y dChrZXk9bGFtYmRhIHg6IHguc3RhcnQpCisrICAgIGZvciByIGluIHJlc3VsdDoKKysgICAgICAg IHN6ID0gci5lbmQgLSByLnN0YXJ0CisrICAgICAgICBwcmludCgKKysgICAgICAgICAgICBmb3Jt YXRfc3RyCisrICAgICAgICAgICAgJSAoCisrICAgICAgICAgICAgICAgICIweCUwMTZ4IiAlIHIu c3RhcnQsCisrICAgICAgICAgICAgICAgICIweCUwMTZ4IiAlIHIuZW5kLAorKyAgICAgICAgICAg ICAgICAiMHglLTE2eCIgJSBzeiwKKysgICAgICAgICAgICAgICAgIjB4JS0xNngiICUgci5vZmZz ZXQsCisrICAgICAgICAgICAgICAgICIlcyIgJSByLmZpbGVuYW1lLAorKyAgICAgICAgICAgICkK KysgICAgICAgICkKKysKKysKKytjbGFzcyBJbmZvUHJvY1B5TWFwcGluZ3MoZ2RiLkNvbW1hbmQp OgorKyAgICBkZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICBnZGIuQ29tbWFuZC5fX2luaXRf XyhzZWxmLCAiaW5mbyBwcm9jIHB5LW1hcHBpbmdzIiwgZ2RiLkNPTU1BTkRfREFUQSkKKysKKysg ICAgZGVmIGludm9rZShzZWxmLCBhcmdzLCBmcm9tX3R0eSk6CisrICAgICAgICBpbmZvX3Byb2Nf bWFwcGluZ3MoKQorKworKworK0luZm9Qcm9jUHlNYXBwaW5ncygpCisrCisrCisrY2xhc3MgQ2hl Y2tCdWlsZElkcyhnZGIuQ29tbWFuZCk6CisrICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKysgICAg ICAgIGdkYi5Db21tYW5kLl9faW5pdF9fKHNlbGYsICJjaGVjay1idWlsZC1pZHMiLCBnZGIuQ09N TUFORF9EQVRBKQorKworKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ3MsIGZyb21fdHR5KToKKysg ICAgICAgIGluZiA9IGdkYi5zZWxlY3RlZF9pbmZlcmlvcigpCisrICAgICAgICBvYmpmaWxlcyA9 IGluZi5wcm9nc3BhY2Uub2JqZmlsZXMoKQorKworKyAgICAgICAgcGF0aF90b19idWlsZF9pZCA9 IHt9CisrCisrICAgICAgICBmb3IgbyBpbiBvYmpmaWxlczoKKysgICAgICAgICAgICBpZiBub3Qg by5pc19maWxlIG9yIG8uYnVpbGRfaWQgaXMgTm9uZToKKysgICAgICAgICAgICAgICAgY29udGlu dWUKKysgICAgICAgICAgICBwID0gcGF0aGxpYi5QYXRoKG8uZmlsZW5hbWUpLnJlc29sdmUoKQor KyAgICAgICAgICAgIGIgPSBvLmJ1aWxkX2lkCisrICAgICAgICAgICAgcGF0aF90b19idWlsZF9p ZFtwXSA9IGIKKysKKysgICAgICAgIGNvdW50ID0gMAorKyAgICAgICAgY29yZV9tYXBwZWRfZmls ZXMgPSBpbmYuY29yZWZpbGUubWFwcGVkX2ZpbGVzKCkKKysgICAgICAgIGZvciBtIGluIGNvcmVf bWFwcGVkX2ZpbGVzOgorKyAgICAgICAgICAgIHAgPSBwYXRobGliLlBhdGgobS5maWxlbmFtZSku cmVzb2x2ZSgpCisrICAgICAgICAgICAgYiA9IG0uYnVpbGRfaWQKKysKKysgICAgICAgICAgICBp ZiBwIGluIHBhdGhfdG9fYnVpbGRfaWQ6CisrICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKysg ICAgICAgICAgICAgICAgYXNzZXJ0IHBhdGhfdG9fYnVpbGRfaWRbcF0gPT0gYiwgImJ1aWxkLWlk IG1pc21hdGNoIGZvciAlcyIgJSBwCisrCisrICAgICAgICBhc3NlcnQgY291bnQgPiAwLCAibm8g bWFwcGVkIGZpbGVzIGNoZWNrZWQiCisrCisrICAgICAgICBwcmludCgiUEFTUyIpCisrCisrCisr Q2hlY2tCdWlsZElkcygpCisrCisrCisrY2xhc3MgQ2hlY2tNYWluRXhlYyhnZGIuQ29tbWFuZCk6 CisrICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKysgICAgICAgIGdkYi5Db21tYW5kLl9faW5pdF9f KHNlbGYsICJjaGVjay1tYWluLWV4ZWN1dGFibGUiLCBnZGIuQ09NTUFORF9EQVRBKQorKworKyAg ICBkZWYgaW52b2tlKHNlbGYsIGFyZ3MsIGZyb21fdHR5KToKKysgICAgICAgIGluZiA9IGdkYi5z ZWxlY3RlZF9pbmZlcmlvcigpCisrICAgICAgICBwc3BhY2UgPSBpbmYucHJvZ3NwYWNlCisrICAg ICAgICBleGVjX2ZpbGVuYW1lID0gcGF0aGxpYi5QYXRoKHBzcGFjZS5leGVjdXRhYmxlX2ZpbGVu YW1lKS5yZXNvbHZlKCkKKysKKysgICAgICAgIGNvdW50ID0gMAorKyAgICAgICAgY29yZV9tYXBw ZWRfZmlsZXMgPSBpbmYuY29yZWZpbGUubWFwcGVkX2ZpbGVzKCkKKysgICAgICAgIGZvciBtIGlu IGNvcmVfbWFwcGVkX2ZpbGVzOgorKyAgICAgICAgICAgIGlmIG5vdCBtLmlzX21haW5fZXhlY3V0 YWJsZToKKysgICAgICAgICAgICAgICAgY29udGludWUKKysKKysgICAgICAgICAgICBwID0gcGF0 aGxpYi5QYXRoKG0uZmlsZW5hbWUpLnJlc29sdmUoKQorKworKyAgICAgICAgICAgIGNvdW50ICs9 IDEKKysgICAgICAgICAgICBhc3NlcnQgZXhlY19maWxlbmFtZSA9PSBwLCAibWFpbiBleGVjIGZp bGVuYW1lIG1pc21hdGNoIgorKworKyAgICAgICAgYXNzZXJ0IGNvdW50ID09IDEsICJpbnZhbGlk IG1haW4gZXhlY3V0YWJsZSBjb3VudCIKKysKKysgICAgICAgIHByaW50KCJQQVNTIikKKysKKysK KytDaGVja01haW5FeGVjKCkKKysKKysKKysjIEFuICdldmVudHMnIHByZWZpeCBjb21tYW5kLgor K2NsYXNzIGV2ZW50c19jbWQoZ2RiLkNvbW1hbmQpOgorKyAgICAiIiJJbmZvcm1hdGlvbiBhYm91 dCByZWNlbnQgUHl0aG9uIGV2ZW50cy4iIiIKKysKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgor KyAgICAgICAgZ2RiLkNvbW1hbmQuX19pbml0X18oc2VsZiwgImV2ZW50cyIsIGdkYi5DT01NQU5E X1VTRVIsIHByZWZpeD1UcnVlKQorKworKworKyMgQW4gJ2V2ZW50cyBjb3JlZmlsZV9jaGFuZ2Vk JyBzdWItY29tbWFuZC4KKytjbGFzcyBldmVudHNfY29yZWZpbGVfY2hhbmdlZF9jbWQoZ2RiLkNv bW1hbmQpOgorKyAgICAiIiJDaGVjayByZWNlbnQgY29yZWZpbGVfY2hhbmdlZCBldmVudHMuCisr CisrICAgIFJlcXVpcmVzIGEgc2luZ2xlIGFyZ3VtZW50IGVpdGhlciAnY2hlY2snIG9yICdyZXNl dCcuICBXaXRoCisrICAgICdjaGVjaycsIHByaW50IGRldGFpbHMgb2YgZXZlcnkgcmVjZW50IGNv cmVmaWxlX2NoYW5nZWQgZXZlbnQuCisrICAgIFdpdGggJ3Jlc2V0JyBjbGVhciB0aGUgbGlzdCBv ZiByZWNlbnQgY29yZWZpbGVfY2hhbmdlZCBldmVudHMuIiIiCisrCisrICAgIGRlZiBfX2luaXRf XyhzZWxmKToKKysgICAgICAgIGdkYi5Db21tYW5kLl9faW5pdF9fKHNlbGYsICJldmVudHMgY29y ZWZpbGVfY2hhbmdlZCIsIGdkYi5DT01NQU5EX1VTRVIpCisrICAgICAgICBzZWxmLl9ldmVudHMg PSBbXQorKyAgICAgICAgZ2RiLmV2ZW50cy5jb3JlZmlsZV9jaGFuZ2VkLmNvbm5lY3QobGFtYmRh IGU6IHNlbGYuX2NvcmVmaWxlX2NoYW5nZWRfaGFuZGxlcihlKSkKKysKKysgICAgZGVmIF9jb3Jl ZmlsZV9jaGFuZ2VkX2hhbmRsZXIoc2VsZiwgZXZlbnQpOgorKyAgICAgICAgYXNzZXJ0IGlzaW5z dGFuY2UoZXZlbnQsIGdkYi5Db3JlZmlsZUNoYW5nZWRFdmVudCkKKysgICAgICAgIGluZiA9IGV2 ZW50LmluZmVyaW9yCisrICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpbmYsIGdkYi5JbmZlcmlv cikKKysKKysgICAgICAgIGNvcmVmaWxlID0gaW5mLmNvcmVmaWxlCisrICAgICAgICBpZiBjb3Jl ZmlsZSBpcyBub3QgTm9uZToKKysgICAgICAgICAgICBhc3NlcnQgY29yZWZpbGUuaXNfdmFsaWQo KQorKyAgICAgICAgICAgIGNvcmVmaWxlID0gY29yZWZpbGUuZmlsZW5hbWUKKysKKysgICAgICAg IG9iaiA9IHsiaW5mZXJpb3IiOiBpbmYubnVtLCAiY29yZWZpbGUiOiBjb3JlZmlsZX0KKysgICAg ICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQob2JqKQorKworKyAgICBkZWYgaW52b2tlKHNlbGYsIGFy Z3MsIGZyb21fdHR5KToKKysgICAgICAgIGlmIGFyZ3MgPT0gImNoZWNrIjoKKysgICAgICAgICAg ICBpZiBsZW4oc2VsZi5fZXZlbnRzKSA9PSAwOgorKyAgICAgICAgICAgICAgICBwcmludCgiTm8g Y29yZWZpbGVfY2hhbmdlZCBldmVudCBoYXMgYmVlbiBzZWVuLiIpCisrICAgICAgICAgICAgZWxz ZToKKysgICAgICAgICAgICAgICAgdG90YWwgPSBsZW4oc2VsZi5fZXZlbnRzKQorKyAgICAgICAg ICAgICAgICBmb3IgaWR4LCBvYmogaW4gZW51bWVyYXRlKHNlbGYuX2V2ZW50cywgc3RhcnQ9MSk6 CisrICAgICAgICAgICAgICAgICAgICBpbmZfbnVtID0gb2JqWyJpbmZlcmlvciJdCisrICAgICAg ICAgICAgICAgICAgICBjb3JlZmlsZSA9IG9ialsiY29yZWZpbGUiXQorKworKyAgICAgICAgICAg ICAgICAgICAgaWYgY29yZWZpbGUgaXMgTm9uZToKKysgICAgICAgICAgICAgICAgICAgICAgICBt c2cgPSAiTm9uZSIKKysgICAgICAgICAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAg ICAgICAgICAgbXNnID0gY29yZWZpbGUKKysKKysgICAgICAgICAgICAgICAgICAgIHByaW50KAor KyAgICAgICAgICAgICAgICAgICAgICAgICJFdmVudCB7fS97fSwgSW5mZXJpb3Ige30sIENvcmVm aWxlIHt9Ii5mb3JtYXQoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeCwgdG90YWws IGluZl9udW0sIG1zZworKyAgICAgICAgICAgICAgICAgICAgICAgICkKKysgICAgICAgICAgICAg ICAgICAgICkKKysgICAgICAgIGVsaWYgYXJncyA9PSAicmVzZXQiOgorKyAgICAgICAgICAgIHNl bGYuX2V2ZW50cyA9IFtdCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIHJhaXNlIGdkYi5H ZGJFcnJvcigiVW5rbm93biBjb21tYW5kIGFyZ3M6IHt9Ii5mb3JtYXQoYXJncykpCisrCisrCisr IyBBbiAnZXZlbnRzIGV4aXRlZCcgc3ViLWNvbW1hbmQuCisrY2xhc3MgZXZlbnRzX2V4aXRlZF9j bWQoZ2RiLkNvbW1hbmQpOgorKyAgICAiIiJDaGVjayByZWNlbnQgZXhpdGVkIGV2ZW50cy4KKysK KysgICAgUmVxdWlyZXMgYSBzaW5nbGUgYXJndW1lbnQgZWl0aGVyICdjaGVjaycgb3IgJ3Jlc2V0 Jy4gIFdpdGgKKysgICAgJ2NoZWNrJywgcHJpbnQgZGV0YWlscyBvZiBldmVyeSByZWNlbnQgZXhp dGVkIGV2ZW50LiAgV2l0aCAncmVzZXQnCisrICAgIGNsZWFyIHRoZSBsaXN0IG9mIHJlY2VudCBl eGl0ZWQgZXZlbnRzLiIiIgorKworKyAgICBkZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICBn ZGIuQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiZXZlbnRzIGV4aXRlZCIsIGdkYi5DT01NQU5EX1VT RVIpCisrICAgICAgICBzZWxmLl9ldmVudHMgPSBbXQorKyAgICAgICAgZ2RiLmV2ZW50cy5leGl0 ZWQuY29ubmVjdChsYW1iZGEgZTogc2VsZi5fZXhpdGVkX2hhbmRsZXIoZSkpCisrCisrICAgIGRl ZiBfZXhpdGVkX2hhbmRsZXIoc2VsZiwgZXZlbnQpOgorKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFu Y2UoZXZlbnQsIGdkYi5FeGl0ZWRFdmVudCkKKysgICAgICAgIGluZiA9IGV2ZW50LmluZmVyaW9y CisrICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpbmYsIGdkYi5JbmZlcmlvcikKKysKKysgICAg ICAgIGlmIGhhc2F0dHIoZXZlbnQsICJleGl0X2NvZGUiKToKKysgICAgICAgICAgICBhc3NlcnQg aXNpbnN0YW5jZShldmVudC5leGl0X2NvZGUsIGludCkKKysgICAgICAgICAgICBleGl0X2NvZGUg PSBldmVudC5leGl0X2NvZGUKKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgZXhpdF9jb2Rl ID0gTm9uZQorKworKyAgICAgICAgb2JqID0geyJpbmZlcmlvciI6IGluZi5udW0sICJleGl0X2Nv ZGUiOiBleGl0X2NvZGV9CisrICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKG9iaikKKysKKysg ICAgZGVmIGludm9rZShzZWxmLCBhcmdzLCBmcm9tX3R0eSk6CisrICAgICAgICBpZiBhcmdzID09 ICJjaGVjayI6CisrICAgICAgICAgICAgaWYgbGVuKHNlbGYuX2V2ZW50cykgPT0gMDoKKysgICAg ICAgICAgICAgICAgcHJpbnQoIk5vIGV4aXRlZCBldmVudCBoYXMgYmVlbiBzZWVuLiIpCisrICAg ICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgdG90YWwgPSBsZW4oc2VsZi5fZXZlbnRz KQorKyAgICAgICAgICAgICAgICBmb3IgaWR4LCBvYmogaW4gZW51bWVyYXRlKHNlbGYuX2V2ZW50 cywgc3RhcnQ9MSk6CisrICAgICAgICAgICAgICAgICAgICBpbmZfbnVtID0gb2JqWyJpbmZlcmlv ciJdCisrICAgICAgICAgICAgICAgICAgICBleGl0X2NvZGUgPSBvYmpbImV4aXRfY29kZSJdCisr CisrICAgICAgICAgICAgICAgICAgICBpZiBleGl0X2NvZGUgaXMgTm9uZToKKysgICAgICAgICAg ICAgICAgICAgICAgICBtc2cgPSAiTm9uZSIKKysgICAgICAgICAgICAgICAgICAgIGVsc2U6Cisr ICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gZXhpdF9jb2RlCisrCisrICAgICAgICAgICAg ICAgICAgICBwcmludCgKKysgICAgICAgICAgICAgICAgICAgICAgICAiRXZlbnQge30ve30sIElu ZmVyaW9yIHt9LCBFeGl0IENvZGUge30iLmZvcm1hdCgKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWR4LCB0b3RhbCwgaW5mX251bSwgbXNnCisrICAgICAgICAgICAgICAgICAgICAgICAg KQorKyAgICAgICAgICAgICAgICAgICAgKQorKyAgICAgICAgZWxpZiBhcmdzID09ICJyZXNldCI6 CisrICAgICAgICAgICAgc2VsZi5fZXZlbnRzID0gW10KKysgICAgICAgIGVsc2U6CisrICAgICAg ICAgICAgcmFpc2UgZ2RiLkdkYkVycm9yKCJVbmtub3duIGNvbW1hbmQgYXJnczoge30iLmZvcm1h dChhcmdzKSkKKysKKysKKytldmVudHNfY21kKCkKKytldmVudHNfY29yZWZpbGVfY2hhbmdlZF9j bWQoKQorK2V2ZW50c19leGl0ZWRfY21kKCkKKysKKytwcmludCgiU3VjY2VzcyIpCitkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZGFwLXN1cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9s aWIvZGFwLXN1cHBvcnQuZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9kYXAtc3VwcG9ydC5l eHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2RhcC1zdXBwb3J0LmV4cAorQEAgLTM2Miw2ICsz NjIsMjIgQEAgcHJvYyBkYXBfYXR0YWNoIHtwaWQge3Byb2cgIiJ9fSB7CisgICAgIHJldHVybiBb ZGFwX3NlbmRfcmVxdWVzdCBhdHRhY2ggJGFyZ3NdCisgfQorIAorKyMgU3RhcnQgZ2RiLCBzZW5k IGEgREFQIGluaXRpYWxpemUgcmVxdWVzdCwgYW5kIHRoZW4gYW4gYXR0YWNoIHJlcXVlc3QKKysj IHNwZWNpZnlpbmcgQ09SRUZJTEUgYXMgdGhlIGNvcmUgZmlsZSB0byBhdHRhY2ggdG8uICBSZXR1 cm5zIHRoZQorKyMgZW1wdHkgc3RyaW5nIG9uIGZhaWx1cmUsIG9yIHRoZSBhdHRhY2ggcmVxdWVz dCBzZXF1ZW5jZSBJRC4KKytwcm9jIGRhcF9jb3JlZmlsZSB7Y29yZWZpbGUge3Byb2cgIiJ9fSB7 CisrICAgIGlmIHtbZGFwX2luaXRpYWxpemUgInN0YXJ0dXAgLSBpbml0aWFsaXplIl0gPT0gIiJ9 IHsKKysJcmV0dXJuICIiCisrICAgIH0KKysKKysgICAgc2V0IGFyZ3MgW2Zvcm1hdCB7byBjb3Jl RmlsZSBbcyAiJXMiXX0gJGNvcmVmaWxlXQorKyAgICBpZiB7JHByb2cgIT0gIiJ9IHsKKysJYXBw ZW5kIGFyZ3MgW2Zvcm1hdCB7IHByb2dyYW0gW3MgIiVzIl19ICRwcm9nXQorKyAgICB9CisrCisr ICAgIHJldHVybiBbZGFwX3NlbmRfcmVxdWVzdCBhdHRhY2ggJGFyZ3NdCisrfQorKworICMgU3Rh cnQgZ2RiLCBzZW5kIGEgREFQIGluaXRpYWxpemUgcmVxdWVzdCwgYW5kIHRoZW4gYW4gYXR0YWNo IHJlcXVlc3QKKyAjIHNwZWNpZnlpbmcgVEFSR0VUIGFzIHRoZSByZW1vdGUgdGFyZ2V0LiAgUmV0 dXJucyB0aGUgZW1wdHkgc3RyaW5nIG9uCisgIyBmYWlsdXJlLCBvciB0aGUgYXR0YWNoIHJlcXVl c3Qgc2VxdWVuY2UgSUQuCitAQCAtMzcyLDI2ICszODgsMzMgQEAgcHJvYyBkYXBfdGFyZ2V0X3Jl bW90ZSB7dGFyZ2V0fSB7CisgICAgIHJldHVybiBbZGFwX3NlbmRfcmVxdWVzdCBhdHRhY2ggW2Zv cm1hdCB7byB0YXJnZXQgW3MgJXNdfSAkdGFyZ2V0XV0KKyB9CisgCistIyBSZWFkIHRoZSBtb3N0 IHJlY2VudCBEQVAgbG9nIGZpbGUgYW5kIGNoZWNrIGl0IGZvciBleGNlcHRpb25zLgorLXByb2Mg ZGFwX2NoZWNrX2xvZ19maWxlIHt9IHsKKysjIFJlYWQgdGhlIG1vc3QgcmVjZW50IERBUCBsb2cg ZmlsZSBhbmQgY2hlY2sgaXQgZm9yIGV4Y2VwdGlvbnMuICBXZQorKyMgZXhwZWN0IHRvIHNlZSBl eGFjdGx5IEVYUEVDVEVEX0VYQ0VQVElPTl9DT1VOVCBleGNlcHRpb25zIGluIHRoZSBsb2cuCisr cHJvYyBkYXBfY2hlY2tfbG9nX2ZpbGUgeyB7ZXhwZWN0ZWRfZXhjZXB0aW9uX2NvdW50IDB9IH0g eworICAgICBzZXQgZmQgW29wZW4gW2N1cnJlbnRfZGFwX2xvZ19maWxlXV0KKyAgICAgc2V0IGNv bnRlbnRzIFtyZWFkICRmZF0KKyAgICAgY2xvc2UgJGZkCisgCistICAgIHNldCBvayAxCisrICAg IHNldCBleGNlcHRpb25fY291bnQgMAorICAgICBmb3JlYWNoIGxpbmUgW3NwbGl0ICRjb250ZW50 cyAiXG4iXSB7CisgCWlmIHtbcmVnZXhwICJeVHJhY2ViYWNrIiAkbGluZV19IHsKKy0JICAgIHNl dCBvayAwCistCSAgICBicmVhaworKwkgICAgaW5jciBleGNlcHRpb25fY291bnQKKysJICAgIGlm IHsgJGV4Y2VwdGlvbl9jb3VudCA+ICRleHBlY3RlZF9leGNlcHRpb25fY291bnR9IHsKKysJCWJy ZWFrCisrCSAgICB9CisgCX0KKyAgICAgfQorIAorLSAgICBpZiB7JG9rfSB7CisrICAgIGlmIHsk ZXhjZXB0aW9uX2NvdW50ID09ICRleHBlY3RlZF9leGNlcHRpb25fY291bnR9IHsKKyAJcGFzcyAi ZXhjZXB0aW9ucyBpbiBsb2cgZmlsZSIKKyAgICAgfSBlbHNlIHsKKyAJdmVyYm9zZSAtbG9nIC0t ICAiLS0tIERBUCBMT0cgU1RBUlQgLS0tIgorIAl2ZXJib3NlIC1sb2cgLS0gJGNvbnRlbnRzCisg CXZlcmJvc2UgLWxvZyAtLSAgIi0tLSBEQVAgTE9HIEVORCAtLS0iCisrCWlmIHsgJGV4cGVjdGVk X2V4Y2VwdGlvbl9jb3VudCA+IDAgfSB7CisrCSAgICB2ZXJib3NlIC1sb2cgLS0gW2pvaW4gW2xp c3QgIkV4cGVjdGVkICRleHBlY3RlZF9leGNlcHRpb25fY291bnQiIFwKKysJCQkJCSJleGNlcHRp b24ocyksIHNhdyAkZXhjZXB0aW9uX2NvdW50Il1dCisrCX0KKyAJZmFpbCAiZXhjZXB0aW9ucyBp biBsb2cgZmlsZSIKKyAgICAgfQorIH0KK0BAIC00MDcsOCArNDMwLDkgQEAgcHJvYyBkYXBfY2hl Y2tfbG9nX2ZpbGVfcmUgeyByZSB9IHsKKyB9CisgCisgIyBDbGVhbmx5IHNodXQgZG93biBnZGIu ICBURVJNSU5BVEUgaXMgcGFzc2VkIGFzIHRoZSB0ZXJtaW5hdGVEZWJ1Z2dlZQorLSMgcGFyYW1l dGVyIHRvIHRoZSByZXF1ZXN0LgorLXByb2MgZGFwX3NodXRkb3duIHt7dGVybWluYXRlIGZhbHNl fX0geworKyMgcGFyYW1ldGVyIHRvIHRoZSByZXF1ZXN0LiAgVGhlIEVYUEVDVEVEX0VYQ0VQVElP Tl9DT1VOVCBpcyB0aGUKKysjIG51bWJlciBvZiBleGNlcHRpb25zIHRoYXQgd2UgZXhwZWN0IHRv IHNlZSBpbiB0aGUgbGF0ZXN0IERBUCBsb2cuCisrcHJvYyBkYXBfc2h1dGRvd24ge3t0ZXJtaW5h dGUgZmFsc2V9IHtleHBlY3RlZF9leGNlcHRpb25fY291bnQgMH19IHsKKyAgICAgZGFwX2NoZWNr X3JlcXVlc3RfYW5kX3Jlc3BvbnNlICJzaHV0ZG93biIgZGlzY29ubmVjdCBcCisgCVtmb3JtYXQg e28gdGVybWluYXRlRGVidWdnZWUgW2wgJXNdfSAkdGVybWluYXRlXQorIAorQEAgLTQyMCw3ICs0 NDQsNyBAQCBwcm9jIGRhcF9zaHV0ZG93biB7e3Rlcm1pbmF0ZSBmYWxzZX19IHsKKyAKKyAgICAg Y2xlYXJfZ2RiX3NwYXduX2lkCisgCistICAgIGRhcF9jaGVja19sb2dfZmlsZQorKyAgICBkYXBf Y2hlY2tfbG9nX2ZpbGUgJGV4cGVjdGVkX2V4Y2VwdGlvbl9jb3VudAorIH0KKyAKKyAjIFNlYXJj aCB0aGUgZXZlbnQgbGlzdCBFVkVOVFMgZm9yIGFuIG91dHB1dCBldmVudCBtYXRjaGluZyB0aGUg cmVnZXhwCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyNDAzNTgwLW1pc3BsYWNlZC1zeW10YWJzLnBh dGNoIGIvZ2RiLXJoYnoyNDAzNTgwLW1pc3BsYWNlZC1zeW10YWJzLnBhdGNoCmluZGV4IDc5OTZk ODIuLjM1ZmRhYWQgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6MjQwMzU4MC1taXNwbGFjZWQtc3ltdGFi cy5wYXRjaAorKysgYi9nZGItcmhiejI0MDM1ODAtbWlzcGxhY2VkLXN5bXRhYnMucGF0Y2gKQEAg LTkyLDcgKzkyLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvbGluZS1oZWFkZXIuaCBiL2dk Yi9kd2FyZjIvbGluZS1oZWFkZXIuaAogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIv Z2RiL2R3YXJmMi9yZWFkLmMKIC0tLSBhL2dkYi9kd2FyZjIvcmVhZC5jCiArKysgYi9nZGIvZHdh cmYyL3JlYWQuYwotQEAgLTYyMjIsOCArNjIyMiw4IEBAIGR3YXJmMl9jdTo6c2V0dXBfdHlwZV91 bml0X2dyb3VwcyAoc3RydWN0IGRpZV9pbmZvICpkaWUpCitAQCAtNjIyNyw4ICs2MjI3LDggQEAg ZHdhcmYyX2N1OjpzZXR1cF90eXBlX3VuaXRfZ3JvdXBzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSkK ICAJICAgICAgc2YtPnN5bXRhYiA9IGFsbG9jYXRlX3N5bXRhYiAoY3VzdCwgbmFtZSwgbmFtZV9m b3JfaWQpOwogIAkgICAgfQogIApAQCAtMTAzLDcgKzEwMyw3IEBAIGRpZmYgLS1naXQgYS9nZGIv ZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCiAgCX0KICAgICAgfQogICAgZWxzZQot QEAgLTYyNDEsNyArNjI0MSw3IEBAIGR3YXJmMl9jdTo6c2V0dXBfdHlwZV91bml0X2dyb3VwcyAo c3RydWN0IGRpZV9pbmZvICpkaWUpCitAQCAtNjI0Niw3ICs2MjQ2LDcgQEAgZHdhcmYyX2N1Ojpz ZXR1cF90eXBlX3VuaXRfZ3JvdXBzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSkKICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgZmlsZV9uYW1lcy5zaXplICgpOyArK2kpCiAgCXsKICAJICBmaWxlX2VudHJ5 ICZmZSA9IGZpbGVfbmFtZXNbaV07CkBAIC0xMTIsNyArMTEyLDcgQEAgZGlmZiAtLWdpdCBhL2dk Yi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKICAJfQogICAgICB9CiAgCi1AQCAt MTE1ODQsNyArMTE1ODQsNyBAQCBwcm9jZXNzX3N0cnVjdHVyZV9zY29wZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTExNTg5LDcgKzExNTg5LDcgQEAg cHJvY2Vzc19zdHJ1Y3R1cmVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKICAJICAgIHsKICAJICAgICAgLyogQW55IHJlbGF0ZWQgc3ltdGFiIHdpbGwg ZG8uICAqLwogIAkgICAgICBzeW10YWIKQEAgLTEyMSw3ICsxMjEsNyBAQCBkaWZmIC0tZ2l0IGEv Z2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQuYwogIAkgICAgfQogIAkgIGVsc2UK ICAJICAgIHsKLUBAIC0xNjU4Nyw2ICsxNjU4Nyw5IEBAIGR3YXJmX2RlY29kZV9saW5lcyAoc3Ry dWN0IGxpbmVfaGVhZGVyICpsaCwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCitAQCAtMTY1OTIsNiAr MTY1OTIsOSBAQCBkd2FyZl9kZWNvZGVfbGluZXMgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgaWYgKGRlY29kZV9tYXBwaW5nKQogICAgICBkd2FyZl9k ZWNvZGVfbGluZXNfMSAobGgsIGN1LCBsb3dwYyk7CiAgCkBAIC0xMzEsNyArMTMxLDcgQEAgZGlm ZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKICAgIC8qIE1h a2Ugc3VyZSBhIHN5bXRhYiBpcyBjcmVhdGVkIGZvciBldmVyeSBmaWxlLCBldmVuIGZpbGVzCiAg ICAgICB3aGljaCBjb250YWluIG9ubHkgdmFyaWFibGVzIChpLmUuIG5vIGNvZGUgd2l0aCBhc3Nv Y2lhdGVkCiAgICAgICBsaW5lIG51bWJlcnMpLiAgKi8KLUBAIC0xNjYwMiw3ICsxNjYwNSw3IEBA IGR3YXJmX2RlY29kZV9saW5lcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgc3RydWN0IGR3YXJm Ml9jdSAqY3UsCitAQCAtMTY2MDcsNyArMTY2MTAsNyBAQCBkd2FyZl9kZWNvZGVfbGluZXMgKHN0 cnVjdCBsaW5lX2hlYWRlciAqbGgsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogIAlzZi0+c3ltdGFi ID0gYWxsb2NhdGVfc3ltdGFiIChjdXN0LCBzZi0+bmFtZS5jX3N0ciAoKSwKICAJCQkJICAgICAg c2YtPm5hbWVfZm9yX2lkLmNfc3RyICgpKTsKICAKQEAgLTE0MCw3ICsxNDAsNyBAQCBkaWZmIC0t Z2l0IGEvZ2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQuYwogICAgICB9CiAgfQog IAotQEAgLTE2ODc5LDcgKzE2ODgyLDcgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKK0BAIC0xNjg4NCw3 ICsxNjg4Nyw3IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlw ZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgCSAgICAgIGlmIChmZSA9PSBOVUxMKQog IAkJY29tcGxhaW50IChfKCJmaWxlIGluZGV4IG91dCBvZiByYW5nZSIpKTsKICAJICAgICAgZWxz ZQoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MjQzNTk1MC1za2lwLXJldmVydC5wYXRjaCBiL2dkYi1y aGJ6MjQzNTk1MC1za2lwLXJldmVydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggOTMxZDA2My4uMDAwMDAwMAotLS0gYS9nZGItcmhiejI0MzU5NTAtc2tpcC1yZXZlcnQucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJldyBCdXJnZXNzIDxhYnVyZ2Vzc0By ZWRoYXQuY29tPgotRGF0ZTogTW9uLCA5IEZlYiAyMDI2IDE2OjMxOjIzICswMDAwCi1TdWJqZWN0 OiBnZGItcmhiejI0MzU5NTAtc2tpcC1yZXZlcnQucGF0Y2gKLQotOzsgQmFja3BvcnQgb2YgdXBz dHJlYW0gY29tbWl0IGYwOGZmYmJmMjY5MWJhZDJkNWRmNjYwZWU2NDQ2NDc2ODc3NzVmMGMKLTs7 IENhbiBiZSBkcm9wcGVkIG9uIGEgcmViYXNlIHRvIGdkYiAxNy4yIG9yIDE4LjEKLQotUmV2ZXJ0 ICJza2lwIC1nZmlsZTogY2FsbCBmbm1hdGNoIHdpdGhvdXQgRk5NX0ZJTEVfTkFNRSIKLQotVGhp cyByZXZlcnRzIGNvbW1pdCAwMjY0NmE0YzU2MWVjODg0OTExMTRiODc5NTBjYmI4MjdjN2Q2MTRj LiAgU2VlOgotCi0gIGh0dHBzOi8vaW5ib3guc291cmNld2FyZS5vcmcvZ2RiLXBhdGNoZXMvMjAy NjAyMDMxODU1MjguOTQ2OTE4LTEtZ3VpbmV2ZXJlQHJlZGhhdC5jb20KLQotVGhpcyBjb21taXQg aW50cm9kdWNlZCBhIG5vbiBiYWNrd2FyZCBjb21wYXRpYmxlIGNoYW5nZSB0byBob3cgR0RCCi1o YW5kbGVkIHNraXAgZmlsZXMuICBTb21ldGhpbmcgbGlrZToKLQotICBza2lwIC1nZmlsZSBkaXIv Ki5jCi0KLW5vIGxvbmdlciBtYXRjaGVzIGV2ZXJ5IGZpbGUgd2l0aGluICdkaXIvJywgYnV0IG5v dyBtYXRjaGVzIGV2ZXJ5IGZpbGUKLWluICdkaXIvJyBhbmQgd2l0aGluIGV2ZXJ5IHN1Yi1kaXJl Y3Rvcnkgb2YgJ2Rpci8nLCB3aGljaCBtaWdodCBub3QgYmUKLXdoYXQgdGhlIHVzZXIgd2FudGVk LgotCi1UaGUgb3JpZ2luYWwgaW50ZW50aW9uIGJlaGluZCB0aGUgY29tbWl0IGlzIHNvbGlkLCB3 ZSBqdXN0IG5lZWQgdG8KLWZpbmQgYSBiZXR0ZXIgaW1wbGVtZW50YXRpb24uCi0KLUJ1ZzogaHR0 cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MzM4NzIKLQotZGlm ZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi0tLS0g YS9nZGIvZG9jL2dkYi50ZXhpbmZvCi0rKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1AQCAtNjgy NSw5ICs2ODI1LDcgQEAgRnVuY3Rpb25zIGluIEB2YXJ7ZmlsZX0gd2lsbCBiZSBza2lwcGVkIG92 ZXIgd2hlbiBzdGVwcGluZy4KLSBAaXRlbXggLWdmaSBAdmFye2ZpbGUtZ2xvYi1wYXR0ZXJufQot IEBjaW5kZXggc2tpcHBpbmcgb3ZlciBmaWxlcyB2aWEgZ2xvYi1zdHlsZSBwYXR0ZXJucwotIEZ1 bmN0aW9ucyBpbiBmaWxlcyBtYXRjaGluZyBAdmFye2ZpbGUtZ2xvYi1wYXR0ZXJufSB3aWxsIGJl IHNraXBwZWQKLS1vdmVyIHdoZW4gc3RlcHBpbmcuICBUaGUgZGlyZWN0b3J5IHNlcGFyYXRvciBj aGFyYWN0ZXIgQGZpbGV7L30gaXMgdHJlYXRlZCBhcyBhCi0tcmVndWxhciBjaGFyYWN0ZXIsIHNv IGl0IGNhbiBiZSBtYXRjaGVkIGJ5IHdpbGRjYXJkIGNoYXJhY3RlcnMgQGZpbGV7Kn0gYW5kCi0t QGZpbGV7P30uCi0rb3ZlciB3aGVuIHN0ZXBwaW5nLgotIAotIEBzbWFsbGV4YW1wbGUKLSAoQHZh bHVle0dEQlB9KSBza2lwIC1nZmkgdXRpbHMvKi5jCi1kaWZmIC0tZ2l0IGEvZ2RiL3NraXAuYyBi L2dkYi9za2lwLmMKLS0tLSBhL2dkYi9za2lwLmMKLSsrKyBiL2dkYi9za2lwLmMKLUBAIC01MzEs NyArNTMxLDcgQEAgc2tpcGxpc3RfZW50cnk6OmRvX3NraXBfZ2ZpbGVfcCAoY29uc3Qgc3ltdGFi X2FuZF9saW5lICZmdW5jdGlvbl9zYWwpIGNvbnN0Ci0gICAvKiBDaGVjayBmaXJzdCBzb2xlIFNZ TVRBQi0+RklMRU5BTUUuICBJdCBtYXkgbm90IGJlIGEgc3Vic3RyaW5nIG9mCi0gICAgICBzeW10 YWJfdG9fZnVsbG5hbWUgYXMgaXQgbWF5IGNvbnRhaW4gIi4vIiBldGMuICAqLwotICAgaWYgKGdk Yl9maWxlbmFtZV9mbm1hdGNoIChtX2ZpbGUuY19zdHIgKCksIGZ1bmN0aW9uX3NhbC5zeW10YWIt PmZpbGVuYW1lLAotLQkJCSAgICBGTk1fTk9FU0NBUEUpID09IDApCi0rCQkJICAgIEZOTV9GSUxF X05BTUUgfCBGTk1fTk9FU0NBUEUpID09IDApCi0gICAgIHJlc3VsdCA9IHRydWU7Ci0gCi0gICAv KiBCZWZvcmUgd2UgaW52b2tlIHN5bXRhYl90b19mdWxsbmFtZSwgd2hpY2ggaXMgZXhwZW5zaXZl LCBkbyBhIHF1aWNrCi1AQCAtNTQyLDE0ICs1NDIsMTQgQEAgc2tpcGxpc3RfZW50cnk6OmRvX3Nr aXBfZ2ZpbGVfcCAoY29uc3Qgc3ltdGFiX2FuZF9saW5lICZmdW5jdGlvbl9zYWwpIGNvbnN0Ci0g ICBlbHNlIGlmICghYmFzZW5hbWVzX21heV9kaWZmZXIKLSAgICAgICAmJiBnZGJfZmlsZW5hbWVf Zm5tYXRjaCAobGJhc2VuYW1lIChtX2ZpbGUuY19zdHIgKCkpLAotIAkJCSAgICAgICBsYmFzZW5h bWUgKGZ1bmN0aW9uX3NhbC5zeW10YWItPmZpbGVuYW1lKSwKLS0JCQkgICAgICAgRk5NX05PRVND QVBFKSAhPSAwKQotKwkJCSAgICAgICBGTk1fRklMRV9OQU1FIHwgRk5NX05PRVNDQVBFKSAhPSAw KQotICAgICByZXN1bHQgPSBmYWxzZTsKLSAgIGVsc2UKLSAgICAgewotICAgICAgIC8qIE5vdGU6 IHN5bXRhYl90b19mdWxsbmFtZSBjYWNoZXMgaXRzIHJlc3VsdCwgdGh1cyB3ZSBkb24ndCBoYXZl IHRvLiAgKi8KLSAgICAgICBjb25zdCBjaGFyICpmdWxsbmFtZSA9IHN5bXRhYl90b19mdWxsbmFt ZSAoZnVuY3Rpb25fc2FsLnN5bXRhYik7Ci0gCi0tICAgICAgcmVzdWx0ID0gZ2RiX2ZpbGVuYW1l X2ZubWF0Y2ggKG1fZmlsZS5jX3N0ciAoKSwgZnVsbG5hbWUsIEZOTV9OT0VTQ0FQRSk7Ci0rICAg ICAgcmVzdWx0ID0gY29tcGFyZV9nbG9iX2ZpbGVuYW1lc19mb3Jfc2VhcmNoIChmdWxsbmFtZSwg bV9maWxlLmNfc3RyICgpKTsKLSAgICAgfQotIAotICAgaWYgKGRlYnVnX3NraXApCi1kaWZmIC0t Z2l0IGEvZ2RiL3N5bXRhYi5jIGIvZ2RiL3N5bXRhYi5jCi0tLS0gYS9nZGIvc3ltdGFiLmMKLSsr KyBiL2dkYi9zeW10YWIuYwotQEAgLTY5OCw2ICs2OTgsNDAgQEAgaXRlcmF0ZV9vdmVyX3NvbWVf c3ltdGFicyAoY29uc3QgY2hhciAqbmFtZSwKLSAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0rLyog U2FtZSBhcyBjb21wYXJlX2ZpbGVuYW1lc19mb3Jfc2VhcmNoLCBidXQgZm9yIGdsb2Itc3R5bGUg cGF0dGVybnMuCi0rICAgSGVhZHMgdXAgb24gdGhlIG9yZGVyIG9mIHRoZSBhcmd1bWVudHMuICBU aGV5IG1hdGNoIHRoZSBvcmRlciBvZgotKyAgIGNvbXBhcmVfZmlsZW5hbWVzX2Zvcl9zZWFyY2gs IGJ1dCBpdCdzIHRoZSBvcHBvc2l0ZSBvZiB0aGUgb3JkZXIgb2YKLSsgICBhcmd1bWVudHMgdG8g Z2RiX2ZpbGVuYW1lX2ZubWF0Y2guICAqLwotKwotK2Jvb2wKLStjb21wYXJlX2dsb2JfZmlsZW5h bWVzX2Zvcl9zZWFyY2ggKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAotKwkJCQkgICBjb25zdCBjaGFy ICpzZWFyY2hfbmFtZSkKLSt7Ci0rICAvKiBXZSByZWx5IG9uIHRoZSBwcm9wZXJ0eSBvZiBnbG9i LXN0eWxlIHBhdHRlcm5zIHdpdGggRk5NX0ZJTEVfTkFNRSB0aGF0Ci0rICAgICBhbGwgL3MgaGF2 ZSB0byBiZSBleHBsaWNpdGx5IHNwZWNpZmllZC4gICovCi0rICBpbnQgZmlsZV9wYXRoX2VsZW1l bnRzID0gY291bnRfcGF0aF9lbGVtZW50cyAoZmlsZW5hbWUpOwotKyAgaW50IHNlYXJjaF9wYXRo X2VsZW1lbnRzID0gY291bnRfcGF0aF9lbGVtZW50cyAoc2VhcmNoX25hbWUpOwotKwotKyAgaWYg KHNlYXJjaF9wYXRoX2VsZW1lbnRzID4gZmlsZV9wYXRoX2VsZW1lbnRzKQotKyAgICByZXR1cm4g ZmFsc2U7Ci0rCi0rICBpZiAoSVNfQUJTT0xVVEVfUEFUSCAoc2VhcmNoX25hbWUpKQotKyAgICB7 Ci0rICAgICAgcmV0dXJuIChzZWFyY2hfcGF0aF9lbGVtZW50cyA9PSBmaWxlX3BhdGhfZWxlbWVu dHMKLSsJICAgICAgJiYgZ2RiX2ZpbGVuYW1lX2ZubWF0Y2ggKHNlYXJjaF9uYW1lLCBmaWxlbmFt ZSwKLSsJCQkJICAgICAgIEZOTV9GSUxFX05BTUUgfCBGTk1fTk9FU0NBUEUpID09IDApOwotKyAg ICB9Ci0rCi0rICB7Ci0rICAgIGNvbnN0IGNoYXIgKmZpbGVfdG9fY29tcGFyZQotKyAgICAgID0g c3RyaXBfbGVhZGluZ19wYXRoX2VsZW1lbnRzIChmaWxlbmFtZSwKLSsJCQkJICAgICBmaWxlX3Bh dGhfZWxlbWVudHMgLSBzZWFyY2hfcGF0aF9lbGVtZW50cyk7Ci0rCi0rICAgIHJldHVybiBnZGJf ZmlsZW5hbWVfZm5tYXRjaCAoc2VhcmNoX25hbWUsIGZpbGVfdG9fY29tcGFyZSwKLSsJCQkJIEZO TV9GSUxFX05BTUUgfCBGTk1fTk9FU0NBUEUpID09IDA7Ci0rICB9Ci0rfQotKwotIC8qIFNlZSBz eW10YWIuaC4gICovCi0gCi0gdm9pZAotZGlmZiAtLWdpdCBhL2dkYi91dGlscy5jIGIvZ2RiL3V0 aWxzLmMKLS0tLSBhL2dkYi91dGlscy5jCi0rKysgYi9nZGIvdXRpbHMuYwotQEAgLTM0NjYsOCAr MzQ2Niw4IEBAIHdhaXRfdG9fZGllX3dpdGhfdGltZW91dCAocGlkX3QgcGlkLCBpbnQgKnN0YXR1 cywgaW50IHRpbWVvdXQpCi0gCi0gI2VuZGlmIC8qIEhBVkVfV0FJVFBJRCAqLwotIAotLS8qIFBy b3ZpZGUgZm5tYXRjaCBjb21wYXRpYmxlIGZ1bmN0aW9uIGZvciBtYXRjaGluZyBvZiBob3N0IGZp bGVzLgotLSAgIEZOTV9OT0VTQ0FQRSBtdXN0IGJlIHNldCBpbiBGTEFHUy4KLSsvKiBQcm92aWRl IGZubWF0Y2ggY29tcGF0aWJsZSBmdW5jdGlvbiBmb3IgRk5NX0ZJTEVfTkFNRSBtYXRjaGluZyBv ZiBob3N0IGZpbGVzLgotKyAgIEJvdGggRk5NX0ZJTEVfTkFNRSBhbmQgRk5NX05PRVNDQVBFIG11 c3QgYmUgc2V0IGluIEZMQUdTLgotIAotICAgIEl0IGhhbmRsZXMgY29ycmVjdGx5IEhBVkVfRE9T X0JBU0VEX0ZJTEVfU1lTVEVNIGFuZAotICAgIEhBVkVfQ0FTRV9JTlNFTlNJVElWRV9GSUxFX1NZ U1RFTS4gICovCi1AQCAtMzQ3NSw2ICszNDc1LDggQEAgd2FpdF90b19kaWVfd2l0aF90aW1lb3V0 IChwaWRfdCBwaWQsIGludCAqc3RhdHVzLCBpbnQgdGltZW91dCkKLSBpbnQKLSBnZGJfZmlsZW5h bWVfZm5tYXRjaCAoY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqc3RyaW5nLCBpbnQg ZmxhZ3MpCi0gewotKyAgZ2RiX2Fzc2VydCAoKGZsYWdzICYgRk5NX0ZJTEVfTkFNRSkgIT0gMCk7 Ci0rCi0gICAvKiBJdCBpcyB1bmNsZWFyIGhvdyAnXCcgZXNjYXBpbmcgdnMuIGRpcmVjdG9yeSBz ZXBhcmF0b3Igc2hvdWxkIGNvZXhpc3QuICAqLwotICAgZ2RiX2Fzc2VydCAoKGZsYWdzICYgRk5N X05PRVNDQVBFKSAhPSAwKTsKLSAKCmRpZmYgLS1naXQgYS9nZGItcnBtLXN1Z2dlc3Rpb24tc2Ny aXB0LnBhdGNoIGIvZ2RiLXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaAppbmRleCAwN2E2OGQ1 Li4yOGRmMTRiIDEwMDY0NAotLS0gYS9nZGItcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBhdGNoCisr KyBiL2dkYi1ycG0tc3VnZ2VzdGlvbi1zY3JpcHQucGF0Y2gKQEAgLTMzLDcgKzMzLDcgQEAgZGlm ZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgKiBN YW4gUGFnZXM6OiAgICAgICAgICAgICAgICAgICBNYW51YWwgcGFnZXMKICAqIENvcHlpbmc6OiAg ICAgICAgICAgICAgICAgICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHNheXMKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdyB5b3UgY2FuIGNvcHkgYW5kIHNoYXJlIEB2 YWx1ZXtHREJOfQotQEAgLTUwOTg4LDYgKzUwOTg5LDExMSBAQCBTaG93IHRoZSBjdXJyZW50IHZl cmJvc2l0eSBzZXR0aW5nLgorQEAgLTUwOTg2LDYgKzUwOTg3LDExMSBAQCBTaG93IHRoZSBjdXJy ZW50IHZlcmJvc2l0eSBzZXR0aW5nLgogIAogIEBlbmQgdGFibGUKICAKCmRpZmYgLS1naXQgYS9n ZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IGVjZDIxZDQuLmQ5MzRhYTkgMTAwNjQ0Ci0tLSBhL2dk Yi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC00MSwxMSArNDEsMTEgQEAgTmFtZTogJXs/c2NsX3By ZWZpeH1nZGIKICMgU2VlIHRpbWVzdGFtcCBvZiBzb3VyY2UgZ251bGliIGluc3RhbGxlZCBpbnRv IGdudWxpYi8gLgogJWdsb2JhbCBzbmFwZ251bGliIDIwMjIwNTAxCiAlZ2xvYmFsIHRhcm5hbWUg Z2RiLSV7dmVyc2lvbn0KLVZlcnNpb246IDE3LjEKK1ZlcnNpb246IDE3LjIKIAogIyBUaGUgcmVs ZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQg YXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5 IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiA2 JXs/ZGlzdH0KK1JlbGVhc2U6IDElez9kaXN0fQogCiBMaWNlbnNlOiBHUEwtMy4wLW9yLWxhdGVy IEFORCBCU0QtMy1DbGF1c2UgQU5EIEZTRkFQIEFORCBMR1BMLTIuMS1vci1sYXRlciBBTkQgR1BM LTIuMC1vci1sYXRlciBBTkQgTEdQTC0yLjAtb3ItbGF0ZXIgQU5EIExpY2Vuc2VSZWYtRmVkb3Jh LVB1YmxpYy1Eb21haW4gQU5EIEdGREwtMS4zLW9yLWxhdGVyIEFORCBMR1BMLTIuMC1vci1sYXRl ciBXSVRIIEdDQy1leGNlcHRpb24tMi4wIEFORCBHUEwtMy4wLW9yLWxhdGVyIFdJVEggR0NDLWV4 Y2VwdGlvbi0zLjEgQU5EIEdQTC0yLjAtb3ItbGF0ZXIgV0lUSCBHTlUtY29tcGlsZXItZXhjZXB0 aW9uIEFORCBNSVQKICMgRG8gbm90IHByb3ZpZGUgVVJMIGZvciBzbmFwc2hvdHMgYXMgdGhlIGZp bGUgbGFzdHMgdGhlcmUgb25seSBmb3IgMiBkYXlzLgpAQCAtOTMzLDYgKzkzMywxMyBAQCBmaQog IyBlbmRpZiBzY2wKIAogJWNoYW5nZWxvZworKiBGcmkgSnVsIDAzIDIwMjYgTWljaGFsIEtvbGFy IDxta29sYXJAcmVkaGF0LmNvbT4gLSAxNy4yLTEKKy0gUmViYXNlIHRvIEZTRiBHREIgMTcuMi4K KyAgRGVsZXRlZDogZ2RiLXJoYnoyNDM1OTUwLXNraXAtcmV2ZXJ0LnBhdGNoCisgIEJhY2twb3J0 IGU0OTJmYjIyYjcwLCBnZGI6IGJhY2twb3J0IERBUCBjb3JlIGZpbGUgc3VwcG9ydAorICBSZXBs YWNlIG1hbnVhbCwgbXVsdGktZmlsZSBwYXRjaCBpbmNsdXNpb24gd2l0aCBtb2Rlcm4gYXV0b3Nl dHVwCisgIEFkZCBycG1pbnNwZWN0LnlhbWwgdG8gZGVmaW5lIHBhY2thZ2Utc3BlY2lmaWMgdGVz dGluZyBwb2xpY3kKKwogKiBTYXQgTWF5IDE2IDIwMjYgQW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNz QHJlZGhhdC5jb20+CiAtIEJhY2twb3J0IHRoZSBmb2xsb3dpbmcgdXBzdHJlYW0gY29tbWl0cyBp biBvcmRlciB0byBhZGRyZXNzIFJIQloKICAgMjQ2NzI1MTogZDk4MDMxN2M3ZjEsIDk1OGQwNjI2 MmE3LCA3ZDFkNzM4NjU2MSwgODkxNWRlMDg4M2MsCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3Nv dXJjZXMKaW5kZXggZmQzYzIwNC4uZjc2ZTc3YyAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9z b3VyY2VzCkBAIC0xICsxIEBACi1TSEE1MTIgKGdkYi0xNy4xLnRhci54eikgPSBmMWE2NzUxZTQz OWEyMTI4ZmVjZjNlYWU4YjU3YzE2MDhhMGRjN2NmZTc5YjQzNTZhOTM3ODc0ZTVhNDJiYjJkZjBh YmEzNmViNmE5NDUyYzQxOTY2OTA4YjlhNTkwNzZjN2NhZDk3MjBmNjg0Njg4YWI5NTZiNjUwODBm MWQ3YworU0hBNTEyIChnZGItMTcuMi50YXIueHopID0gNzc5NGM1YTE4NWJlN2VkNWU3YWQxMDAw YzRmZjdkODQ5N2M4MDQyNWExYmMxMDhhYWI4ZmQzZGQ4ZWNkZGUwMzRlMjk0ZGZkNjViMjVjNmIw ZGNkOGVkMmEyNDBjYWYwNzI5M2YzZTczNzkxYjZjZmM4OTBkNTgwZDBhZjQ1ODEK