ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggYjEyOWVmMi4uN2VlZmE0OSAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAgLTY2LDE3ICs2NiwxOSBAQAogZW5kaWYoKQogCiBpZihOT1QgQ01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSIFNUUkVRVUFMIENNQUtFX0NVUlJFTlRfQklOQVJZX0RJUikKLSAgIyBJZiB3ZSdyZSBkb2luZyBhbiBvdXQgb2Ygc291cmNlIGJ1aWxkIGFuZCB0aGUgdXNlciBoYXMgYSB6Y29uZi5oCi0gICMgaW4gdGhlaXIgc291cmNlIHRyZWUuLi4KLSAgaWYoRVhJU1RTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS96Y29uZi5oKQotICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJZb3UgbXVzdCByZW1vdmUgemNvbmYuaCBmcm9tIHRoZSBzb3VyY2UgdHJlZS4gIFRoaXMgZgotaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgLi9jb25maWd1cmUgc2NyaXB0IHNoaXBwZWQgd2l0aCB6bGliLiAgQ01ha2UgZ2VuZXJhdGVzIHQKLWhpcyBmaWxlIGZvciB5b3UgYXV0b21hdGljYWxseSBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5IikKKyAgICAjIElmIHdlJ3JlIGRvaW5nIGFuIG91dCBvZiBzb3VyY2UgYnVpbGQgYW5kIHRoZSB1c2VyIGhhcyBhIHpjb25mLmgKKyAgICAjIGluIHRoZWlyIHNvdXJjZSB0cmVlLi4uCisgICAgaWYoRVhJU1RTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS96Y29uZi5oKQorICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SCisgICAgICAgICAgICAiWW91IG11c3QgcmVtb3ZlICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS96Y29uZi5oICIKKyAgICAgICAgICAgICJmcm9tIHRoZSBzb3VyY2UgdHJlZS4gIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCB3aXRoIHpsaWIgIgorICAgICAgICAgICAgImJ1dCBDTWFrZSBnZW5lcmF0ZXMgdGhpcyBmaWxlIGZvciB5b3UgYXV0b21hdGljYWxseSAiCisgICAgICAgICAgICAiaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4iKQogICBlbmRpZigpCiBlbmRpZigpCiAKLWNvbmZpZ3VyZV9maWxlKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS96Y29uZi5oLmluCi0gICAgICAgICAgICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vemNvbmYuaCBAT05MWSkKK2NvbmZpZ3VyZV9maWxlKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS96Y29uZi5oLmNtYWtlaW4KKyAgICAgICAgICAgICAgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS96Y29uZi5oIEBPTkxZKQogaW5jbHVkZV9kaXJlY3Rvcmllcygke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0pCiAKIApAQCAtODUsNyArODcsNyBAQAogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogc2V0KFpMSUJfUFVCTElDX0hEUlMKLSAgICB6Y29uZi5oCisgICAgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3pjb25mLmgKICAgICB6bGliLmgKICkKIHNldChaTElCX1BSSVZBVEVfSERSUwpAQCAtMTI5LDYgKzEzMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIENPTU1BTkQgd2luZHJlcy5leGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRCBHQ0NfV0lORFJFUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1JICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1JICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1vICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS96bGliMXJjLm9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1pICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS93aW4zMi96bGliMS5yYykKICAgICBzZXQoWkxJQl9TUkNTICR7WkxJQl9TUkNTfSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vemxpYjFyYy5vYmopCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNzM2YjU5ZS4uOGI3YWZkMSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSw2ICsxLDMxIEBACiAKICAgICAgICAgICAgICAgICBDaGFuZ2VMb2cgZmlsZSBmb3IgemxpYgogCitDaGFuZ2VzIGluIDEuMi40ICgxMSBNYXIgMjAxMCkKKy0gRml4IFZFUjMgZXh0cmFjdGlvbiBpbiBjb25maWd1cmUgZm9yIG5vIGZvdXJ0aCBzdWJ2ZXJzaW9uCistIFVwZGF0ZSB6bGliLjMsIGFkZCBkb2NzIHRvIE1ha2VmaWxlLmluIHRvIG1ha2UgLnBkZiBvdXQgb2YgaXQKKy0gQWRkIHpsaWIuMy5wZGYgdG8gZGlzdHJpYnV0aW9uCistIERvbid0IHNldCBlcnJvciBjb2RlIGluIGd6ZXJyb3IoKSBpZiBwYXNzZWQgcG9pbnRlciBpcyBOVUxMCistIEFwcGx5IGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBmaXhlcyB0byBDTWFrZUxpc3RzLnR4dCBbTG93bWFuXQorLSBNb3ZlICNjbWFrZWRlZmluZSdzIHRvIGEgbmV3IHpjb25mLmluLmNtYWtlaW4KKy0gUmVzdG9yZSB6Y29uZi5oIGZvciBidWlsZHMgdGhhdCBkb24ndCB1c2UgY29uZmlndXJlIG9yIGNtYWtlCistIEFkZCBkaXN0Y2xlYW4gdG8gZHVtbXkgTWFrZWZpbGUgZm9yIGNvbnZlbmllbmNlCistIFVwZGF0ZSBhbmQgaW1wcm92ZSBJTkRFWCwgUkVBRE1FLCBhbmQgRkFRCistIFVwZGF0ZSBDTWFrZUxpc3RzLnR4dCBmb3IgdGhlIHJldHVybiBvZiB6Y29uZi5oIFtMb3dtYW5dCistIFVwZGF0ZSBjb250cmliL3ZzdHVkaW8vdmM5IGFuZCB2YzEwIFtWb2xsYW50XQorLSBDaGFuZ2UgbGliei5kbGwuYSBiYWNrIHRvIGxpYnpkbGwuYSBpbiB3aW4zMi9NYWtlZmlsZS5nY2MKKy0gQXBwbHkgbGljZW5zZSBhbmQgcmVhZG1lIGNoYW5nZXMgdG8gY29udHJpYi9hc202ODYgW1JhaXRlcl0KKy0gQ2hlY2sgZmlsZSBuYW1lIGxlbmd0aHMgYW5kIGFkZCAtYyBvcHRpb24gaW4gbWluaWd6aXAuYyBbTGldCistIFVwZGF0ZSBjb250cmliL2FtZDY0IGFuZCBjb250cmliL21hc214ODYvIFtWb2xsYW50XQorLSBBdm9pZCB1c2Ugb2YgImVvZiIgcGFyYW1ldGVyIGluIHRyZWVzLmMgdG8gbm90IHNoYWRvdyBsaWJyYXJ5IHZhcmlhYmxlCistIFVwZGF0ZSBtYWtlX3Ztcy5jb20gZm9yIHJlbW92YWwgb2YgemxpYmRlZnMuaCBbWmluc2VyXQorLSBVcGRhdGUgYXNzZW1ibGVyIGNvZGUgYW5kIHZzdHVkaW8gcHJvamVjdHMgaW4gY29udHJpYiBbVm9sbGFudF0KKy0gUmVtb3ZlIG91dGRhdGVkIGFzc2VtYmxlciBjb2RlIGNvbnRyaWIvbWFzbTY4NiBhbmQgY29udHJpYi9hc201ODYKKy0gUmVtb3ZlIG9sZCB2YzcgYW5kIHZjOCBmcm9tIGNvbnRyaWIvdnN0dWRpbworLSBVcGRhdGUgd2luMzIvTWFrZWZpbGUubXNjLCBhZGQgWkxJQl9WRVJfU1VCUkVWSVNJT04gW1Jvd2VdCistIEZpeCBtZW1vcnkgbGVha3MgaW4gZ3pjbG9zZV9yKCkgYW5kIGd6Y2xvc2VfdygpLCBmaWxlIGxlYWsgaW4gZ3pfb3BlbigpCistIEFkZCBjb250cmliL2djY19ndm1hdDY0IGZvciBsb25nZXN0X21hdGNoIGFuZCBpbmZsYXRlX2Zhc3QgW1ZvbGxhbnRdCisKIENoYW5nZXMgaW4gMS4yLjMuOSAoMjEgRmViIDIwMTApCiAtIEV4cHVuZ2UgZ3ppby5jCiAtIE1vdmUgYXM0MDAgYnVpbGQgaW5mb3JtYXRpb24gdG8gb2xkCkBAIC0yNTYsNyArMjgxLDcgQEAKICAgY29tcGlsZQogLSBGaXggc29tZSBzcGVsbGluZyBlcnJvcnMgaW4gY29tbWVudHMgW0JldHRzXQogLSBDb3JyZWN0IGluZmxhdGVJbml0MigpIGVycm9yIHJldHVybiBkb2N1bWVudGF0aW9uIGluIHpsaWIuaAotLSBBZGRlZCB6cmFuLmMgZXhhbXBsZSBvZiBjb21wcmVzc2VkIGRhdGEgcmFuZG9tIGFjY2VzcyB0byBleGFtcGxlcworLSBBZGQgenJhbi5jIGV4YW1wbGUgb2YgY29tcHJlc3NlZCBkYXRhIHJhbmRvbSBhY2Nlc3MgdG8gZXhhbXBsZXMKICAgZGlyZWN0b3J5LCBzaG93cyB1c2Ugb2YgaW5mbGF0ZVByaW1lKCkKIC0gRml4IGNhc3QgZm9yIGFzc2lnbm1lbnRzIHRvIHN0cm0tPnN0YXRlIGluIGluZmxhdGUuYyBhbmQgaW5mYmFjay5jCiAtIEZpeCB6bGliQ29tcGlsZUZsYWdzKCkgaW4genV0aWwuYyB0byB1c2UgMUwgZm9yIGxvbmcgc2hpZnRzIFtPYmVyaHVtZXJdCmRpZmYgLS1naXQgYS9GQVEgYi9GQVEKaW5kZXggNjFlOGU4YS4uNTYwMzIwNyAxMDA2NDQKLS0tIGEvRkFRCisrKyBiL0ZBUQpAQCAtMyw4ICszLDggQEAKIAogCiBJZiB5b3VyIHF1ZXN0aW9uIGlzIG5vdCB0aGVyZSwgcGxlYXNlIGNoZWNrIHRoZSB6bGliIGhvbWUgcGFnZQotaHR0cDovL3d3dy56bGliLm9yZyB3aGljaCBtYXkgaGF2ZSBtb3JlIHJlY2VudCBpbmZvcm1hdGlvbi4KLVRoZSBsYXN0ZXN0IHpsaWIgRkFRIGlzIGF0IGh0dHA6Ly93d3cuZ3ppcC5vcmcvemxpYi96bGliX2ZhcS5odG1sCitodHRwOi8vemxpYi5uZXQvIHdoaWNoIG1heSBoYXZlIG1vcmUgcmVjZW50IGluZm9ybWF0aW9uLgorVGhlIGxhc3Rlc3QgemxpYiBGQVEgaXMgYXQgaHR0cDovL3psaWIubmV0L3psaWJfZmFxLmh0bWwKIAogCiAgMS4gSXMgemxpYiBZMkstY29tcGxpYW50PwpAQCAtMTMsNTQgKzEzLDUxIEBACiAKICAyLiBXaGVyZSBjYW4gSSBnZXQgYSBXaW5kb3dzIERMTCB2ZXJzaW9uPwogCi0gICAgVGhlIHpsaWIgc291cmNlcyBjYW4gYmUgY29tcGlsZWQgd2l0aG91dCBjaGFuZ2UgdG8gcHJvZHVjZSBhIERMTC4KLSAgICBTZWUgdGhlIGZpbGUgd2luMzIvRExMX0ZBUS50eHQgaW4gdGhlIHpsaWIgZGlzdHJpYnV0aW9uLgotICAgIFBvaW50ZXJzIHRvIHRoZSBwcmVjb21waWxlZCBETEwgYXJlIGZvdW5kIGluIHRoZSB6bGliIHdlYiBzaXRlIGF0Ci0gICAgaHR0cDovL3d3dy56bGliLm9yZy4KKyAgICBUaGUgemxpYiBzb3VyY2VzIGNhbiBiZSBjb21waWxlZCB3aXRob3V0IGNoYW5nZSB0byBwcm9kdWNlIGEgRExMLiAgU2VlIHRoZQorICAgIGZpbGUgd2luMzIvRExMX0ZBUS50eHQgaW4gdGhlIHpsaWIgZGlzdHJpYnV0aW9uLiAgUG9pbnRlcnMgdG8gdGhlCisgICAgcHJlY29tcGlsZWQgRExMIGFyZSBmb3VuZCBpbiB0aGUgemxpYiB3ZWIgc2l0ZSBhdCBodHRwOi8vemxpYi5uZXQvIC4KIAogIDMuIFdoZXJlIGNhbiBJIGdldCBhIFZpc3VhbCBCYXNpYyBpbnRlcmZhY2UgdG8gemxpYj8KIAogICAgIFNlZQotICAgICAgICAqIGh0dHA6Ly93d3cuZG9nbWEubmV0L21hcmtuL2FydGljbGVzL3psaWJ0b29sL3psaWJ0b29sLmh0bQotICAgICAgICAqIGNvbnRyaWIvdmlzdWFsLWJhc2ljLnR4dCBpbiB0aGUgemxpYiBkaXN0cmlidXRpb24KKyAgICAgICAgKiBodHRwOi8vbWFya25lbHNvbi51cy8xOTk3LzAxLzAxL3psaWItZW5naW5lLwogICAgICAgICAqIHdpbjMyL0RMTF9GQVEudHh0IGluIHRoZSB6bGliIGRpc3RyaWJ1dGlvbgogCiAgNC4gY29tcHJlc3MoKSByZXR1cm5zIFpfQlVGX0VSUk9SLgogCiAgICAgTWFrZSBzdXJlIHRoYXQgYmVmb3JlIHRoZSBjYWxsIG9mIGNvbXByZXNzLCB0aGUgbGVuZ3RoIG9mIHRoZSBjb21wcmVzc2VkCi0gICAgYnVmZmVyIGlzIGVxdWFsIHRvIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBjb21wcmVzc2VkIGJ1ZmZlciBhbmQgbm90Ci0gICAgemVyby4gRm9yIFZpc3VhbCBCYXNpYywgY2hlY2sgdGhhdCB0aGlzIHBhcmFtZXRlciBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlCisgICAgYnVmZmVyIGlzIGVxdWFsIHRvIHRoZSBhdmFpbGFibGUgc2l6ZSBvZiB0aGUgY29tcHJlc3NlZCBidWZmZXIgYW5kIG5vdAorICAgIHplcm8uICBGb3IgVmlzdWFsIEJhc2ljLCBjaGVjayB0aGF0IHRoaXMgcGFyYW1ldGVyIGlzIHBhc3NlZCBieSByZWZlcmVuY2UKICAgICAoImFzIGFueSIpLCBub3QgYnkgdmFsdWUgKCJhcyBsb25nIikuCiAKICA1LiBkZWZsYXRlKCkgb3IgaW5mbGF0ZSgpIHJldHVybnMgWl9CVUZfRVJST1IuCiAKLSAgICBCZWZvcmUgbWFraW5nIHRoZSBjYWxsLCBtYWtlIHN1cmUgdGhhdCBhdmFpbF9pbiBhbmQgYXZhaWxfb3V0IGFyZSBub3QKLSAgICB6ZXJvLiBXaGVuIHNldHRpbmcgdGhlIHBhcmFtZXRlciBmbHVzaCBlcXVhbCB0byBaX0ZJTklTSCwgYWxzbyBtYWtlIHN1cmUKLSAgICB0aGF0IGF2YWlsX291dCBpcyBiaWcgZW5vdWdoIHRvIGFsbG93IHByb2Nlc3NpbmcgYWxsIHBlbmRpbmcgaW5wdXQuCi0gICAgTm90ZSB0aGF0IGEgWl9CVUZfRVJST1IgaXMgbm90IGZhdGFsLS1hbm90aGVyIGNhbGwgdG8gZGVmbGF0ZSgpIG9yCi0gICAgaW5mbGF0ZSgpIGNhbiBiZSBtYWRlIHdpdGggbW9yZSBpbnB1dCBvciBvdXRwdXQgc3BhY2UuIEEgWl9CVUZfRVJST1IKLSAgICBtYXkgaW4gZmFjdCBiZSB1bmF2b2lkYWJsZSBkZXBlbmRpbmcgb24gaG93IHRoZSBmdW5jdGlvbnMgYXJlIHVzZWQsIHNpbmNlCi0gICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHRlbGwgd2hldGhlciBvciBub3QgdGhlcmUgaXMgbW9yZSBvdXRwdXQgcGVuZGluZwotICAgIHdoZW4gc3RybS5hdmFpbF9vdXQgcmV0dXJucyB3aXRoIHplcm8uCisgICAgQmVmb3JlIG1ha2luZyB0aGUgY2FsbCwgbWFrZSBzdXJlIHRoYXQgYXZhaWxfaW4gYW5kIGF2YWlsX291dCBhcmUgbm90IHplcm8uCisgICAgV2hlbiBzZXR0aW5nIHRoZSBwYXJhbWV0ZXIgZmx1c2ggZXF1YWwgdG8gWl9GSU5JU0gsIGFsc28gbWFrZSBzdXJlIHRoYXQKKyAgICBhdmFpbF9vdXQgaXMgYmlnIGVub3VnaCB0byBhbGxvdyBwcm9jZXNzaW5nIGFsbCBwZW5kaW5nIGlucHV0LiAgTm90ZSB0aGF0IGEKKyAgICBaX0JVRl9FUlJPUiBpcyBub3QgZmF0YWwtLWFub3RoZXIgY2FsbCB0byBkZWZsYXRlKCkgb3IgaW5mbGF0ZSgpIGNhbiBiZQorICAgIG1hZGUgd2l0aCBtb3JlIGlucHV0IG9yIG91dHB1dCBzcGFjZS4gIEEgWl9CVUZfRVJST1IgbWF5IGluIGZhY3QgYmUKKyAgICB1bmF2b2lkYWJsZSBkZXBlbmRpbmcgb24gaG93IHRoZSBmdW5jdGlvbnMgYXJlIHVzZWQsIHNpbmNlIGl0IGlzIG5vdAorICAgIHBvc3NpYmxlIHRvIHRlbGwgd2hldGhlciBvciBub3QgdGhlcmUgaXMgbW9yZSBvdXRwdXQgcGVuZGluZyB3aGVuCisgICAgc3RybS5hdmFpbF9vdXQgcmV0dXJucyB3aXRoIHplcm8uICBTZWUgaHR0cDovL3psaWIubmV0L3psaWJfaG93Lmh0bWwgZm9yIGEKKyAgICBoZWF2aWx5IGFubm90YXRlZCBleGFtcGxlLgogCiAgNi4gV2hlcmUncyB0aGUgemxpYiBkb2N1bWVudGF0aW9uIChtYW4gcGFnZXMsIGV0Yy4pPwogCi0gICAgSXQncyBpbiB6bGliLmggZm9yIHRoZSBtb21lbnQsIGFuZCBGcmFuY2lzIFMuIExpbiBoYXMgY29udmVydGVkIGl0IHRvIGEKLSAgICB3ZWIgcGFnZSB6bGliLmh0bWwuIFZvbHVudGVlcnMgdG8gdHJhbnNmb3JtIHRoaXMgdG8gVW5peC1zdHlsZSBtYW4gcGFnZXMsCi0gICAgcGxlYXNlIGNvbnRhY3QgdXMgKHpsaWJAZ3ppcC5vcmcpLiBFeGFtcGxlcyBvZiB6bGliIHVzYWdlIGFyZSBpbiB0aGUgZmlsZXMKLSAgICBleGFtcGxlLmMgYW5kIG1pbmlnemlwLmMuCisgICAgSXQncyBpbiB6bGliLmggLiAgRXhhbXBsZXMgb2YgemxpYiB1c2FnZSBhcmUgaW4gdGhlIGZpbGVzIGV4YW1wbGUuYyBhbmQKKyAgICBtaW5pZ3ppcC5jLCB3aXRoIG1vcmUgaW4gZXhhbXBsZXMvIC4KIAogIDcuIFdoeSBkb24ndCB5b3UgdXNlIEdOVSBhdXRvY29uZiBvciBsaWJ0b29sIG9yIC4uLj8KIAotICAgIEJlY2F1c2Ugd2Ugd291bGQgbGlrZSB0byBrZWVwIHpsaWIgYXMgYSB2ZXJ5IHNtYWxsIGFuZCBzaW1wbGUKLSAgICBwYWNrYWdlLiB6bGliIGlzIHJhdGhlciBwb3J0YWJsZSBhbmQgZG9lc24ndCBuZWVkIG11Y2ggY29uZmlndXJhdGlvbi4KKyAgICBCZWNhdXNlIHdlIHdvdWxkIGxpa2UgdG8ga2VlcCB6bGliIGFzIGEgdmVyeSBzbWFsbCBhbmQgc2ltcGxlIHBhY2thZ2UuCisgICAgemxpYiBpcyByYXRoZXIgcG9ydGFibGUgYW5kIGRvZXNuJ3QgbmVlZCBtdWNoIGNvbmZpZ3VyYXRpb24uCiAKICA4LiBJIGZvdW5kIGEgYnVnIGluIHpsaWIuCiAKLSAgICBNb3N0IG9mIHRoZSB0aW1lLCBzdWNoIHByb2JsZW1zIGFyZSBkdWUgdG8gYW4gaW5jb3JyZWN0IHVzYWdlIG9mCi0gICAgemxpYi4gUGxlYXNlIHRyeSB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0gd2l0aCBhIHNtYWxsIHByb2dyYW0gYW5kIHNlbmQKLSAgICB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgdG8gdXMgYXQgemxpYkBnemlwLm9yZyAuIERvIG5vdCBzZW5kCi0gICAgbXVsdGktbWVnYWJ5dGUgZGF0YSBmaWxlcyB3aXRob3V0IHByaW9yIGFncmVlbWVudC4KKyAgICBNb3N0IG9mIHRoZSB0aW1lLCBzdWNoIHByb2JsZW1zIGFyZSBkdWUgdG8gYW4gaW5jb3JyZWN0IHVzYWdlIG9mIHpsaWIuCisgICAgUGxlYXNlIHRyeSB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0gd2l0aCBhIHNtYWxsIHByb2dyYW0gYW5kIHNlbmQgdGhlCisgICAgY29ycmVzcG9uZGluZyBzb3VyY2UgdG8gdXMgYXQgemxpYkBnemlwLm9yZyAuICBEbyBub3Qgc2VuZCBtdWx0aS1tZWdhYnl0ZQorICAgIGRhdGEgZmlsZXMgd2l0aG91dCBwcmlvciBhZ3JlZW1lbnQuCiAKICA5LiBXaHkgZG8gSSBnZXQgInVuZGVmaW5lZCByZWZlcmVuY2UgdG8gZ3pwdXRjIj8KIApAQCAtNzcsMTIgKzc0LDEyIEBACiAKIDExLiBDYW4gemxpYiBoYW5kbGUgLnppcCBhcmNoaXZlcz8KIAotICAgIE5vdCBieSBpdHNlbGYsIG5vLiBTZWUgdGhlIGRpcmVjdG9yeSBjb250cmliL21pbml6aXAgaW4gdGhlIHpsaWIKKyAgICBOb3QgYnkgaXRzZWxmLCBuby4gIFNlZSB0aGUgZGlyZWN0b3J5IGNvbnRyaWIvbWluaXppcCBpbiB0aGUgemxpYgogICAgIGRpc3RyaWJ1dGlvbi4KIAogMTIuIENhbiB6bGliIGhhbmRsZSAuWiBmaWxlcz8KIAotICAgIE5vLCBzb3JyeS4gWW91IGhhdmUgdG8gc3Bhd24gYW4gdW5jb21wcmVzcyBvciBndW56aXAgc3VicHJvY2Vzcywgb3IgYWRhcHQKKyAgICBObywgc29ycnkuICBZb3UgaGF2ZSB0byBzcGF3biBhbiB1bmNvbXByZXNzIG9yIGd1bnppcCBzdWJwcm9jZXNzLCBvciBhZGFwdAogICAgIHRoZSBjb2RlIG9mIHVuY29tcHJlc3Mgb24geW91ciBvd24uCiAKIDEzLiBIb3cgY2FuIEkgbWFrZSBhIFVuaXggc2hhcmVkIGxpYnJhcnk/CkBAIC05OSw4ICs5NiwxMCBAQAogCiAgICAgSG93ZXZlciwgbWFueSBmbGF2b3JzIG9mIFVuaXggY29tZSB3aXRoIGEgc2hhcmVkIHpsaWIgYWxyZWFkeSBpbnN0YWxsZWQuCiAgICAgQmVmb3JlIGdvaW5nIHRvIHRoZSB0cm91YmxlIG9mIGNvbXBpbGluZyBhIHNoYXJlZCB2ZXJzaW9uIG9mIHpsaWIgYW5kCi0gICAgdHJ5aW5nIHRvIGluc3RhbGwgaXQsIHlvdSBtYXkgd2FudCB0byBjaGVjayBpZiBpdCdzIGFscmVhZHkgdGhlcmUhIElmIHlvdQotICAgIGNhbiAjaW5jbHVkZSA8emxpYi5oPiwgaXQncyB0aGVyZS4gVGhlIC1seiBvcHRpb24gd2lsbCBwcm9iYWJseSBsaW5rIHRvIGl0LgorICAgIHRyeWluZyB0byBpbnN0YWxsIGl0LCB5b3UgbWF5IHdhbnQgdG8gY2hlY2sgaWYgaXQncyBhbHJlYWR5IHRoZXJlISAgSWYgeW91CisgICAgY2FuICNpbmNsdWRlIDx6bGliLmg+LCBpdCdzIHRoZXJlLiAgVGhlIC1seiBvcHRpb24gd2lsbCBwcm9iYWJseSBsaW5rIHRvCisgICAgaXQuICBZb3UgY2FuIGNoZWNrIHRoZSB2ZXJzaW9uIGF0IHRoZSB0b3Agb2YgemxpYi5oIG9yIHdpdGggdGhlCisgICAgWkxJQl9WRVJTSU9OIHN5bWJvbCBkZWZpbmVkIGluIHpsaWIuaCAuCiAKIDE1LiBJIGhhdmUgYSBxdWVzdGlvbiBhYm91dCBPdHRvUERGLgogCkBAIC0xMjEsMzkgKzEyMCwzOSBAQAogICAgICAgICBzeW1ib2wgX19yZWdpc3Rlcl9mcmFtZV9pbmZvOiByZWZlcmVuY2VkIHN5bWJvbCBub3QgZm91bmQKIAogICAgIFRoZSBzeW1ib2wgX19yZWdpc3Rlcl9mcmFtZV9pbmZvIGlzIG5vdCBwYXJ0IG9mIHpsaWIsIGl0IGlzIGdlbmVyYXRlZCBieQotICAgIHRoZSBDIGNvbXBpbGVyIChjYyBvciBnY2MpLiBZb3UgbXVzdCByZWNvbXBpbGUgYXBwbGljYXRpb25zIHVzaW5nIHpsaWIKLSAgICB3aGljaCBoYXZlIHRoaXMgcHJvYmxlbS4gVGhpcyBwcm9ibGVtIGlzIHNwZWNpZmljIHRvIFNvbGFyaXMuIFNlZQorICAgIHRoZSBDIGNvbXBpbGVyIChjYyBvciBnY2MpLiAgWW91IG11c3QgcmVjb21waWxlIGFwcGxpY2F0aW9ucyB1c2luZyB6bGliCisgICAgd2hpY2ggaGF2ZSB0aGlzIHByb2JsZW0uICBUaGlzIHByb2JsZW0gaXMgc3BlY2lmaWMgdG8gU29sYXJpcy4gIFNlZQogICAgIGh0dHA6Ly93d3cuc3VuZnJlZXdhcmUuY29tIGZvciBTb2xhcmlzIHZlcnNpb25zIG9mIHpsaWIgYW5kIGFwcGxpY2F0aW9ucwogICAgIHVzaW5nIHpsaWIuCiAKIDE4LiBXaHkgZG9lcyBnemlwIGdpdmUgYW4gZXJyb3Igb24gYSBmaWxlIEkgbWFrZSB3aXRoIGNvbXByZXNzL2RlZmxhdGU/CiAKICAgICBUaGUgY29tcHJlc3MgYW5kIGRlZmxhdGUgZnVuY3Rpb25zIHByb2R1Y2UgZGF0YSBpbiB0aGUgemxpYiBmb3JtYXQsIHdoaWNoCi0gICAgaXMgZGlmZmVyZW50IGFuZCBpbmNvbXBhdGlibGUgd2l0aCB0aGUgZ3ppcCBmb3JtYXQuIFRoZSBneiogZnVuY3Rpb25zIGluCi0gICAgemxpYiBvbiB0aGUgb3RoZXIgaGFuZCB1c2UgdGhlIGd6aXAgZm9ybWF0LiBCb3RoIHRoZSB6bGliIGFuZCBnemlwCi0gICAgZm9ybWF0cyB1c2UgdGhlIHNhbWUgY29tcHJlc3NlZCBkYXRhIGZvcm1hdCBpbnRlcm5hbGx5LCBidXQgaGF2ZSBkaWZmZXJlbnQKLSAgICBoZWFkZXJzIGFuZCB0cmFpbGVycyBhcm91bmQgdGhlIGNvbXByZXNzZWQgZGF0YS4KKyAgICBpcyBkaWZmZXJlbnQgYW5kIGluY29tcGF0aWJsZSB3aXRoIHRoZSBnemlwIGZvcm1hdC4gIFRoZSBneiogZnVuY3Rpb25zIGluCisgICAgemxpYiBvbiB0aGUgb3RoZXIgaGFuZCB1c2UgdGhlIGd6aXAgZm9ybWF0LiAgQm90aCB0aGUgemxpYiBhbmQgZ3ppcCBmb3JtYXRzCisgICAgdXNlIHRoZSBzYW1lIGNvbXByZXNzZWQgZGF0YSBmb3JtYXQgaW50ZXJuYWxseSwgYnV0IGhhdmUgZGlmZmVyZW50IGhlYWRlcnMKKyAgICBhbmQgdHJhaWxlcnMgYXJvdW5kIHRoZSBjb21wcmVzc2VkIGRhdGEuCiAKIDE5LiBPaywgc28gd2h5IGFyZSB0aGVyZSB0d28gZGlmZmVyZW50IGZvcm1hdHM/CiAKLSAgICBUaGUgZ3ppcCBmb3JtYXQgd2FzIGRlc2lnbmVkIHRvIHJldGFpbiB0aGUgZGlyZWN0b3J5IGluZm9ybWF0aW9uIGFib3V0Ci0gICAgYSBzaW5nbGUgZmlsZSwgc3VjaCBhcyB0aGUgbmFtZSBhbmQgbGFzdCBtb2RpZmljYXRpb24gZGF0ZS4gVGhlIHpsaWIKLSAgICBmb3JtYXQgb24gdGhlIG90aGVyIGhhbmQgd2FzIGRlc2lnbmVkIGZvciBpbi1tZW1vcnkgYW5kIGNvbW11bmljYXRpb24KLSAgICBjaGFubmVsIGFwcGxpY2F0aW9ucywgYW5kIGhhcyBhIG11Y2ggbW9yZSBjb21wYWN0IGhlYWRlciBhbmQgdHJhaWxlciBhbmQKLSAgICB1c2VzIGEgZmFzdGVyIGludGVncml0eSBjaGVjayB0aGFuIGd6aXAuCisgICAgVGhlIGd6aXAgZm9ybWF0IHdhcyBkZXNpZ25lZCB0byByZXRhaW4gdGhlIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiBhYm91dCBhCisgICAgc2luZ2xlIGZpbGUsIHN1Y2ggYXMgdGhlIG5hbWUgYW5kIGxhc3QgbW9kaWZpY2F0aW9uIGRhdGUuICBUaGUgemxpYiBmb3JtYXQKKyAgICBvbiB0aGUgb3RoZXIgaGFuZCB3YXMgZGVzaWduZWQgZm9yIGluLW1lbW9yeSBhbmQgY29tbXVuaWNhdGlvbiBjaGFubmVsCisgICAgYXBwbGljYXRpb25zLCBhbmQgaGFzIGEgbXVjaCBtb3JlIGNvbXBhY3QgaGVhZGVyIGFuZCB0cmFpbGVyIGFuZCB1c2VzIGEKKyAgICBmYXN0ZXIgaW50ZWdyaXR5IGNoZWNrIHRoYW4gZ3ppcC4KIAogMjAuIFdlbGwgdGhhdCdzIG5pY2UsIGJ1dCBob3cgZG8gSSBtYWtlIGEgZ3ppcCBmaWxlIGluIG1lbW9yeT8KIAogICAgIFlvdSBjYW4gcmVxdWVzdCB0aGF0IGRlZmxhdGUgd3JpdGUgdGhlIGd6aXAgZm9ybWF0IGluc3RlYWQgb2YgdGhlIHpsaWIKLSAgICBmb3JtYXQgdXNpbmcgZGVmbGF0ZUluaXQyKCkuIFlvdSBjYW4gYWxzbyByZXF1ZXN0IHRoYXQgaW5mbGF0ZSBkZWNvZGUKLSAgICB0aGUgZ3ppcCBmb3JtYXQgdXNpbmcgaW5mbGF0ZUluaXQyKCkuIFJlYWQgemxpYi5oIGZvciBtb3JlIGRldGFpbHMuCisgICAgZm9ybWF0IHVzaW5nIGRlZmxhdGVJbml0MigpLiAgWW91IGNhbiBhbHNvIHJlcXVlc3QgdGhhdCBpbmZsYXRlIGRlY29kZSB0aGUKKyAgICBnemlwIGZvcm1hdCB1c2luZyBpbmZsYXRlSW5pdDIoKS4gIFJlYWQgemxpYi5oIGZvciBtb3JlIGRldGFpbHMuCiAKIDIxLiBJcyB6bGliIHRocmVhZC1zYWZlPwogCi0gICAgWWVzLiBIb3dldmVyIGFueSBsaWJyYXJ5IHJvdXRpbmVzIHRoYXQgemxpYiB1c2VzIGFuZCBhbnkgYXBwbGljYXRpb24tCi0gICAgcHJvdmlkZWQgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZXMgbXVzdCBhbHNvIGJlIHRocmVhZC1zYWZlLiB6bGliJ3MgZ3oqCisgICAgWWVzLiAgSG93ZXZlciBhbnkgbGlicmFyeSByb3V0aW5lcyB0aGF0IHpsaWIgdXNlcyBhbmQgYW55IGFwcGxpY2F0aW9uLQorICAgIHByb3ZpZGVkIG1lbW9yeSBhbGxvY2F0aW9uIHJvdXRpbmVzIG11c3QgYWxzbyBiZSB0aHJlYWQtc2FmZS4gIHpsaWIncyBneioKICAgICBmdW5jdGlvbnMgdXNlIHN0ZGlvIGxpYnJhcnkgcm91dGluZXMsIGFuZCBtb3N0IG9mIHpsaWIncyBmdW5jdGlvbnMgdXNlIHRoZQotICAgIGxpYnJhcnkgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZXMgYnkgZGVmYXVsdC4gemxpYidzIEluaXQgZnVuY3Rpb25zIGFsbG93CisgICAgbGlicmFyeSBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcyBieSBkZWZhdWx0LiAgemxpYidzIEluaXQgZnVuY3Rpb25zIGFsbG93CiAgICAgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBwcm92aWRlIGN1c3RvbSBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcy4KIAogICAgIE9mIGNvdXJzZSwgeW91IHNob3VsZCBvbmx5IG9wZXJhdGUgb24gYW55IGdpdmVuIHpsaWIgb3IgZ3ppcCBzdHJlYW0gZnJvbSBhCkBAIC0xNjEsMjcgKzE2MCwyNyBAQAogCiAyMi4gQ2FuIEkgdXNlIHpsaWIgaW4gbXkgY29tbWVyY2lhbCBhcHBsaWNhdGlvbj8KIAotICAgIFllcy4gUGxlYXNlIHJlYWQgdGhlIGxpY2Vuc2UgaW4gemxpYi5oLgorICAgIFllcy4gIFBsZWFzZSByZWFkIHRoZSBsaWNlbnNlIGluIHpsaWIuaC4KIAogMjMuIElzIHpsaWIgdW5kZXIgdGhlIEdOVSBsaWNlbnNlPwogCi0gICAgTm8uIFBsZWFzZSByZWFkIHRoZSBsaWNlbnNlIGluIHpsaWIuaC4KKyAgICBOby4gIFBsZWFzZSByZWFkIHRoZSBsaWNlbnNlIGluIHpsaWIuaC4KIAogMjQuIFRoZSBsaWNlbnNlIHNheXMgdGhhdCBhbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlICJwbGFpbmx5IG1hcmtlZCIuIFNvCiAgICAgd2hhdCBleGFjdGx5IGRvIEkgbmVlZCB0byBkbyB0byBtZWV0IHRoYXQgcmVxdWlyZW1lbnQ/CiAKLSAgICBZb3UgbmVlZCB0byBjaGFuZ2UgdGhlIFpMSUJfVkVSU0lPTiBhbmQgWkxJQl9WRVJOVU0gI2RlZmluZXMgaW4gemxpYi5oLiBJbgorICAgIFlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgWkxJQl9WRVJTSU9OIGFuZCBaTElCX1ZFUk5VTSAjZGVmaW5lcyBpbiB6bGliLmguICBJbgogICAgIHBhcnRpY3VsYXIsIHRoZSBmaW5hbCB2ZXJzaW9uIG51bWJlciBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvICJmIiwgYW5kIGFuCi0gICAgaWRlbnRpZmljYXRpb24gc3RyaW5nIHNob3VsZCBiZSBhcHBlbmRlZCB0byBaTElCX1ZFUlNJT04uIFZlcnNpb24gbnVtYmVycworICAgIGlkZW50aWZpY2F0aW9uIHN0cmluZyBzaG91bGQgYmUgYXBwZW5kZWQgdG8gWkxJQl9WRVJTSU9OLiAgVmVyc2lvbiBudW1iZXJzCiAgICAgeC54LnguZiBhcmUgcmVzZXJ2ZWQgZm9yIG1vZGlmaWNhdGlvbnMgdG8gemxpYiBieSBvdGhlcnMgdGhhbiB0aGUgemxpYgotICAgIG1haW50YWluZXJzLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHZlcnNpb24gb2YgdGhlIGJhc2UgemxpYiB5b3UgYXJlIGFsdGVyaW5nCisgICAgbWFpbnRhaW5lcnMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIHZlcnNpb24gb2YgdGhlIGJhc2UgemxpYiB5b3UgYXJlIGFsdGVyaW5nCiAgICAgaXMgIjEuMi4zLjQiLCB0aGVuIGluIHpsaWIuaCB5b3Ugc2hvdWxkIGNoYW5nZSBaTElCX1ZFUk5VTSB0byAweDEyM2YsIGFuZAotICAgIFpMSUJfVkVSU0lPTiB0byBzb21ldGhpbmcgbGlrZSAiMS4yLjMuZi16YWNoYXJ5LW1vZHMtdjMiLiBZb3UgY2FuIGFsc28KKyAgICBaTElCX1ZFUlNJT04gdG8gc29tZXRoaW5nIGxpa2UgIjEuMi4zLmYtemFjaGFyeS1tb2RzLXYzIi4gIFlvdSBjYW4gYWxzbwogICAgIHVwZGF0ZSB0aGUgdmVyc2lvbiBzdHJpbmdzIGluIGRlZmxhdGUuYyBhbmQgaW5mdHJlZXMuYy4KIAogICAgIEZvciBhbHRlcmVkIHNvdXJjZSBkaXN0cmlidXRpb25zLCB5b3Ugc2hvdWxkIGFsc28gbm90ZSB0aGUgb3JpZ2luIGFuZAogICAgIG5hdHVyZSBvZiB0aGUgY2hhbmdlcyBpbiB6bGliLmgsIGFzIHdlbGwgYXMgaW4gQ2hhbmdlTG9nIGFuZCBSRUFETUUsIGFsb25nCi0gICAgd2l0aCB0aGUgZGF0ZXMgb2YgdGhlIGFsdGVyYXRpb25zLiBUaGUgb3JpZ2luIHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHlvdXIKKyAgICB3aXRoIHRoZSBkYXRlcyBvZiB0aGUgYWx0ZXJhdGlvbnMuICBUaGUgb3JpZ2luIHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHlvdXIKICAgICBuYW1lIChvciB5b3VyIGNvbXBhbnkncyBuYW1lKSwgYW5kIGFuIGVtYWlsIGFkZHJlc3MgdG8gY29udGFjdCBmb3IgaGVscCBvcgogICAgIGlzc3VlcyB3aXRoIHRoZSBsaWJyYXJ5LgogCkBAIC0xOTcsMTExICsxOTYsMTEyIEBACiAKIDI2LiBXaWxsIHpsaWIgd29yayBvbiBhIDY0LWJpdCBtYWNoaW5lPwogCi0gICAgSXQgc2hvdWxkLiBJdCBoYXMgYmVlbiB0ZXN0ZWQgb24gNjQtYml0IG1hY2hpbmVzLCBhbmQgaGFzIG5vIGRlcGVuZGVuY2UKLSAgICBvbiBhbnkgZGF0YSB0eXBlcyBiZWluZyBsaW1pdGVkIHRvIDMyLWJpdHMgaW4gbGVuZ3RoLiBJZiB5b3UgaGF2ZSBhbnkKKyAgICBZZXMuICBJdCBoYXMgYmVlbiB0ZXN0ZWQgb24gNjQtYml0IG1hY2hpbmVzLCBhbmQgaGFzIG5vIGRlcGVuZGVuY2Ugb24gYW55CisgICAgZGF0YSB0eXBlcyBiZWluZyBsaW1pdGVkIHRvIDMyLWJpdHMgaW4gbGVuZ3RoLiAgSWYgeW91IGhhdmUgYW55CiAgICAgZGlmZmljdWx0aWVzLCBwbGVhc2UgcHJvdmlkZSBhIGNvbXBsZXRlIHByb2JsZW0gcmVwb3J0IHRvIHpsaWJAZ3ppcC5vcmcKIAogMjcuIFdpbGwgemxpYiBkZWNvbXByZXNzIGRhdGEgZnJvbSB0aGUgUEtXYXJlIERhdGEgQ29tcHJlc3Npb24gTGlicmFyeT8KIAotICAgIE5vLiBUaGUgUEtXYXJlIERDTCB1c2VzIGEgY29tcGxldGVseSBkaWZmZXJlbnQgY29tcHJlc3NlZCBkYXRhIGZvcm1hdAotICAgIHRoYW4gZG9lcyBQS1pJUCBhbmQgemxpYi4gSG93ZXZlciwgeW91IGNhbiBsb29rIGluIHpsaWIncyBjb250cmliL2JsYXN0CisgICAgTm8uICBUaGUgUEtXYXJlIERDTCB1c2VzIGEgY29tcGxldGVseSBkaWZmZXJlbnQgY29tcHJlc3NlZCBkYXRhIGZvcm1hdCB0aGFuCisgICAgZG9lcyBQS1pJUCBhbmQgemxpYi4gIEhvd2V2ZXIsIHlvdSBjYW4gbG9vayBpbiB6bGliJ3MgY29udHJpYi9ibGFzdAogICAgIGRpcmVjdG9yeSBmb3IgYSBwb3NzaWJsZSBzb2x1dGlvbiB0byB5b3VyIHByb2JsZW0uCiAKIDI4LiBDYW4gSSBhY2Nlc3MgZGF0YSByYW5kb21seSBpbiBhIGNvbXByZXNzZWQgc3RyZWFtPwogCi0gICAgTm8sIG5vdCB3aXRob3V0IHNvbWUgcHJlcGFyYXRpb24uIElmIHdoZW4gY29tcHJlc3NpbmcgeW91IHBlcmlvZGljYWxseQotICAgIHVzZSBaX0ZVTExfRkxVU0gsIGNhcmVmdWxseSB3cml0ZSBhbGwgdGhlIHBlbmRpbmcgZGF0YSBhdCB0aG9zZSBwb2ludHMsCi0gICAgYW5kIGtlZXAgYW4gaW5kZXggb2YgdGhvc2UgbG9jYXRpb25zLCB0aGVuIHlvdSBjYW4gc3RhcnQgZGVjb21wcmVzc2lvbgotICAgIGF0IHRob3NlIHBvaW50cy4gWW91IGhhdmUgdG8gYmUgY2FyZWZ1bCB0byBub3QgdXNlIFpfRlVMTF9GTFVTSCB0b28KLSAgICBvZnRlbiwgc2luY2UgaXQgY2FuIHNpZ25pZmljYW50bHkgZGVncmFkZSBjb21wcmVzc2lvbi4KKyAgICBObywgbm90IHdpdGhvdXQgc29tZSBwcmVwYXJhdGlvbi4gIElmIHdoZW4gY29tcHJlc3NpbmcgeW91IHBlcmlvZGljYWxseSB1c2UKKyAgICBaX0ZVTExfRkxVU0gsIGNhcmVmdWxseSB3cml0ZSBhbGwgdGhlIHBlbmRpbmcgZGF0YSBhdCB0aG9zZSBwb2ludHMsIGFuZAorICAgIGtlZXAgYW4gaW5kZXggb2YgdGhvc2UgbG9jYXRpb25zLCB0aGVuIHlvdSBjYW4gc3RhcnQgZGVjb21wcmVzc2lvbiBhdCB0aG9zZQorICAgIHBvaW50cy4gIFlvdSBoYXZlIHRvIGJlIGNhcmVmdWwgdG8gbm90IHVzZSBaX0ZVTExfRkxVU0ggdG9vIG9mdGVuLCBzaW5jZSBpdAorICAgIGNhbiBzaWduaWZpY2FudGx5IGRlZ3JhZGUgY29tcHJlc3Npb24uICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHNjYW4gYQorICAgIGRlZmxhdGUgc3RyZWFtIG9uY2UgdG8gZ2VuZXJhdGUgYW4gaW5kZXgsIGFuZCB0aGVuIHVzZSB0aGF0IGluZGV4IGZvcgorICAgIHJhbmRvbSBhY2Nlc3MuICBTZWUgZXhhbXBsZXMvenJhbi5jIC4KIAogMjkuIERvZXMgemxpYiB3b3JrIG9uIE1WUywgT1MvMzkwLCBDSUNTLCBldGMuPwogCi0gICAgWWVzLCB0aGVyZSBhcmUgd29ya2luZyBwb3J0cyBvZiB6bGliIDEuMS40IHRvIE1WUyB3aGljaCB5b3UgY2FuIGZpbmQKLSAgICBoZXJlOgorICAgIEl0IGhhcyBpbiB0aGUgcGFzdCwgYnV0IHdlIGhhdmUgbm90IGhlYXJkIG9mIGFueSByZWNlbnQgZXZpZGVuY2UuICBUaGVyZQorICAgIHdlcmUgd29ya2luZyBwb3J0cyBvZiB6bGliIDEuMS40IHRvIE1WUywgYnV0IHRob3NlIGxpbmtzIG5vIGxvbmdlciB3b3JrLgorICAgIElmIHlvdSBrbm93IG9mIHJlY2VudCwgc3VjY2Vzc2Z1bCBhcHBsaWNhdGlvbnMgb2YgemxpYiBvbiB0aGVzZSBvcGVyYXRpbmcKKyAgICBzeXN0ZW1zLCBwbGVhc2UgbGV0IHVzIGtub3cuICBUaGFua3MuCiAKLSAgICBodHRwOi8vd3d3LmhvbWVyb3cubmV0L2FzbS96bGliMzkwLmh0bQotICAgIGh0dHA6Ly93d3cuaG9tZXJvdy5uZXQvYXNtL3psaWJMRS5odG0KKzMwLiBJcyB0aGVyZSBzb21lIHNpbXBsZXIsIGVhc2llciB0byByZWFkIHZlcnNpb24gb2YgaW5mbGF0ZSBJIGNhbiBsb29rIGF0IHRvCisgICAgdW5kZXJzdGFuZCB0aGUgZGVmbGF0ZSBmb3JtYXQ/CiAKLSAgICBJZiB0aGVzZSBhcmUgdXBkYXRlZCB0byBtb3JlIHJlY2VudCB2ZXJzaW9ucyBvZiB6bGliLCBwbGVhc2UgbGV0IHVzCi0gICAga25vdy4gVGhhbmtzLgotCi0zMC4gSXMgdGhlcmUgc29tZSBzaW1wbGVyLCBlYXNpZXIgdG8gcmVhZCB2ZXJzaW9uIG9mIGluZmxhdGUgSSBjYW4gbG9vayBhdAotICAgIHRvIHVuZGVyc3RhbmQgdGhlIGRlZmxhdGUgZm9ybWF0PwotCi0gICAgRmlyc3Qgb2ZmLCB5b3Ugc2hvdWxkIHJlYWQgUkZDIDE5NTEuIFNlY29uZCwgeWVzLiBMb29rIGluIHpsaWIncworICAgIEZpcnN0IG9mZiwgeW91IHNob3VsZCByZWFkIFJGQyAxOTUxLiAgU2Vjb25kLCB5ZXMuICBMb29rIGluIHpsaWIncwogICAgIGNvbnRyaWIvcHVmZiBkaXJlY3RvcnkuCiAKIDMxLiBEb2VzIHpsaWIgaW5mcmluZ2Ugb24gYW55IHBhdGVudHM/CiAKLSAgICBBcyBmYXIgYXMgd2Uga25vdywgbm8uIEluIGZhY3QsIHRoYXQgd2FzIG9yaWdpbmFsbHkgdGhlIHdob2xlIHBvaW50IGJlaGluZAotICAgIHpsaWIuIExvb2sgaGVyZSBmb3Igc29tZSBtb3JlIGluZm9ybWF0aW9uOgorICAgIEFzIGZhciBhcyB3ZSBrbm93LCBuby4gIEluIGZhY3QsIHRoYXQgd2FzIG9yaWdpbmFsbHkgdGhlIHdob2xlIHBvaW50IGJlaGluZAorICAgIHpsaWIuICBMb29rIGhlcmUgZm9yIHNvbWUgbW9yZSBpbmZvcm1hdGlvbjoKIAogICAgIGh0dHA6Ly93d3cuZ3ppcC5vcmcvI2ZhcTExCiAKIDMyLiBDYW4gemxpYiB3b3JrIHdpdGggZ3JlYXRlciB0aGFuIDQgR0Igb2YgZGF0YT8KIAotICAgIFllcy4gaW5mbGF0ZSgpIGFuZCBkZWZsYXRlKCkgd2lsbCBwcm9jZXNzIGFueSBhbW91bnQgb2YgZGF0YSBjb3JyZWN0bHkuCisgICAgWWVzLiAgaW5mbGF0ZSgpIGFuZCBkZWZsYXRlKCkgd2lsbCBwcm9jZXNzIGFueSBhbW91bnQgb2YgZGF0YSBjb3JyZWN0bHkuCiAgICAgRWFjaCBjYWxsIG9mIGluZmxhdGUoKSBvciBkZWZsYXRlKCkgaXMgbGltaXRlZCB0byBpbnB1dCBhbmQgb3V0cHV0IGNodW5rcwogICAgIG9mIHRoZSBtYXhpbXVtIHZhbHVlIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiB0aGUgY29tcGlsZXIncyAidW5zaWduZWQgaW50IgotICAgIHR5cGUsIGJ1dCB0aGVyZSBpcyBubyBsaW1pdCB0byB0aGUgbnVtYmVyIG9mIGNodW5rcy4gTm90ZSBob3dldmVyIHRoYXQgdGhlCi0gICAgc3RybS50b3RhbF9pbiBhbmQgc3RybV90b3RhbF9vdXQgY291bnRlcnMgbWF5IGJlIGxpbWl0ZWQgdG8gNCBHQi4gVGhlc2UKKyAgICB0eXBlLCBidXQgdGhlcmUgaXMgbm8gbGltaXQgdG8gdGhlIG51bWJlciBvZiBjaHVua3MuICBOb3RlIGhvd2V2ZXIgdGhhdCB0aGUKKyAgICBzdHJtLnRvdGFsX2luIGFuZCBzdHJtX3RvdGFsX291dCBjb3VudGVycyBtYXkgYmUgbGltaXRlZCB0byA0IEdCLiAgVGhlc2UKICAgICBjb3VudGVycyBhcmUgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgYXJlIG5vdCB1c2VkIGludGVybmFsbHkgYnkKLSAgICBpbmZsYXRlKCkgb3IgZGVmbGF0ZSgpLiBUaGUgYXBwbGljYXRpb24gY2FuIGVhc2lseSBzZXQgdXAgaXRzIG93biBjb3VudGVycworICAgIGluZmxhdGUoKSBvciBkZWZsYXRlKCkuICBUaGUgYXBwbGljYXRpb24gY2FuIGVhc2lseSBzZXQgdXAgaXRzIG93biBjb3VudGVycwogICAgIHVwZGF0ZWQgYWZ0ZXIgZWFjaCBjYWxsIG9mIGluZmxhdGUoKSBvciBkZWZsYXRlKCkgdG8gY291bnQgYmV5b25kIDQgR0IuCiAgICAgY29tcHJlc3MoKSBhbmQgdW5jb21wcmVzcygpIG1heSBiZSBsaW1pdGVkIHRvIDQgR0IsIHNpbmNlIHRoZXkgb3BlcmF0ZSBpbiBhCi0gICAgc2luZ2xlIGNhbGwuIGd6c2VlaygpIGFuZCBnenRlbGwoKSBtYXkgYmUgbGltaXRlZCB0byA0IEdCIGRlcGVuZGluZyBvbiBob3cKLSAgICB6bGliIGlzIGNvbXBpbGVkLiBTZWUgdGhlIHpsaWJDb21waWxlRmxhZ3MoKSBmdW5jdGlvbiBpbiB6bGliLmguCisgICAgc2luZ2xlIGNhbGwuICBnenNlZWsoKSBhbmQgZ3p0ZWxsKCkgbWF5IGJlIGxpbWl0ZWQgdG8gNCBHQiBkZXBlbmRpbmcgb24gaG93CisgICAgemxpYiBpcyBjb21waWxlZC4gIFNlZSB0aGUgemxpYkNvbXBpbGVGbGFncygpIGZ1bmN0aW9uIGluIHpsaWIuaC4KIAotICAgIFRoZSB3b3JkICJtYXkiIGFwcGVhcnMgc2V2ZXJhbCB0aW1lcyBhYm92ZSBzaW5jZSB0aGVyZSBpcyBhIDQgR0IgbGltaXQKLSAgICBvbmx5IGlmIHRoZSBjb21waWxlcidzICJsb25nIiB0eXBlIGlzIDMyIGJpdHMuIElmIHRoZSBjb21waWxlcidzICJsb25nIgotICAgIHR5cGUgaXMgNjQgYml0cywgdGhlbiB0aGUgbGltaXQgaXMgMTYgZXhhYnl0ZXMuCisgICAgVGhlIHdvcmQgIm1heSIgYXBwZWFycyBzZXZlcmFsIHRpbWVzIGFib3ZlIHNpbmNlIHRoZXJlIGlzIGEgNCBHQiBsaW1pdCBvbmx5CisgICAgaWYgdGhlIGNvbXBpbGVyJ3MgImxvbmciIHR5cGUgaXMgMzIgYml0cy4gIElmIHRoZSBjb21waWxlcidzICJsb25nIiB0eXBlIGlzCisgICAgNjQgYml0cywgdGhlbiB0aGUgbGltaXQgaXMgMTYgZXhhYnl0ZXMuCiAKIDMzLiBEb2VzIHpsaWIgaGF2ZSBhbnkgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzPwogCi0gICAgVGhlIG9ubHkgb25lIHRoYXQgd2UgYXJlIGF3YXJlIG9mIGlzIHBvdGVudGlhbGx5IGluIGd6cHJpbnRmKCkuIElmIHpsaWIKLSAgICBpcyBjb21waWxlZCB0byB1c2Ugc3ByaW50ZigpIG9yIHZzcHJpbnRmKCksIHRoZW4gdGhlcmUgaXMgbm8gcHJvdGVjdGlvbgotICAgIGFnYWluc3QgYSBidWZmZXIgb3ZlcmZsb3cgb2YgYSA0SyBzdHJpbmcgc3BhY2UsIG90aGVyIHRoYW4gdGhlIGNhbGxlciBvZgotICAgIGd6cHJpbnRmKCkgYXNzdXJpbmcgdGhhdCB0aGUgb3V0cHV0IHdpbGwgbm90IGV4Y2VlZCA0Sy4gT24gdGhlIG90aGVyCi0gICAgaGFuZCwgaWYgemxpYiBpcyBjb21waWxlZCB0byB1c2Ugc25wcmludGYoKSBvciB2c25wcmludGYoKSwgd2hpY2ggc2hvdWxkCi0gICAgbm9ybWFsbHkgYmUgdGhlIGNhc2UsIHRoZW4gdGhlcmUgaXMgbm8gdnVsbmVyYWJpbGl0eS4gVGhlIC4vY29uZmlndXJlCi0gICAgc2NyaXB0IHdpbGwgZGlzcGxheSB3YXJuaW5ncyBpZiBhbiBpbnNlY3VyZSB2YXJpYXRpb24gb2Ygc3ByaW50ZigpIHdpbGwKLSAgICBiZSB1c2VkIGJ5IGd6cHJpbnRmKCkuIEFsc28gdGhlIHpsaWJDb21waWxlRmxhZ3MoKSBmdW5jdGlvbiB3aWxsIHJldHVybgotICAgIGluZm9ybWF0aW9uIG9uIHdoYXQgdmFyaWFudCBvZiBzcHJpbnRmKCkgaXMgdXNlZCBieSBnenByaW50ZigpLgorICAgIFRoZSBvbmx5IG9uZSB0aGF0IHdlIGFyZSBhd2FyZSBvZiBpcyBwb3RlbnRpYWxseSBpbiBnenByaW50ZigpLiAgSWYgemxpYiBpcworICAgIGNvbXBpbGVkIHRvIHVzZSBzcHJpbnRmKCkgb3IgdnNwcmludGYoKSwgdGhlbiB0aGVyZSBpcyBubyBwcm90ZWN0aW9uCisgICAgYWdhaW5zdCBhIGJ1ZmZlciBvdmVyZmxvdyBvZiBhbiA4SyBzdHJpbmcgc3BhY2UgKG9yIG90aGVyIHZhbHVlIGFzIHNldCBieQorICAgIGd6YnVmZmVyKCkpLCBvdGhlciB0aGFuIHRoZSBjYWxsZXIgb2YgZ3pwcmludGYoKSBhc3N1cmluZyB0aGF0IHRoZSBvdXRwdXQKKyAgICB3aWxsIG5vdCBleGNlZWQgOEsuICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgemxpYiBpcyBjb21waWxlZCB0byB1c2UKKyAgICBzbnByaW50ZigpIG9yIHZzbnByaW50ZigpLCB3aGljaCBzaG91bGQgbm9ybWFsbHkgYmUgdGhlIGNhc2UsIHRoZW4gdGhlcmUgaXMKKyAgICBubyB2dWxuZXJhYmlsaXR5LiAgVGhlIC4vY29uZmlndXJlIHNjcmlwdCB3aWxsIGRpc3BsYXkgd2FybmluZ3MgaWYgYW4KKyAgICBpbnNlY3VyZSB2YXJpYXRpb24gb2Ygc3ByaW50ZigpIHdpbGwgYmUgdXNlZCBieSBnenByaW50ZigpLiAgQWxzbyB0aGUKKyAgICB6bGliQ29tcGlsZUZsYWdzKCkgZnVuY3Rpb24gd2lsbCByZXR1cm4gaW5mb3JtYXRpb24gb24gd2hhdCB2YXJpYW50IG9mCisgICAgc3ByaW50ZigpIGlzIHVzZWQgYnkgZ3pwcmludGYoKS4KIAogICAgIElmIHlvdSBkb24ndCBoYXZlIHNucHJpbnRmKCkgb3IgdnNucHJpbnRmKCkgYW5kIHdvdWxkIGxpa2Ugb25lLCB5b3UgY2FuCiAgICAgZmluZCBhIHBvcnRhYmxlIGltcGxlbWVudGF0aW9uIGhlcmU6CiAKICAgICAgICAgaHR0cDovL3d3dy5panMuc2kvc29mdHdhcmUvc25wcmludGYvCiAKLSAgICBOb3RlIHRoYXQgeW91IHNob3VsZCBiZSB1c2luZyB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiB6bGliLiBWZXJzaW9ucwotICAgIDEuMS4zIGFuZCBiZWZvcmUgd2VyZSBzdWJqZWN0IHRvIGEgZG91YmxlLWZyZWUgdnVsbmVyYWJpbGl0eSwgYW5kIHZlcnNpb24KLSAgICAxLjIuMSB3YXMgc3ViamVjdCB0byBhbiBhY2Nlc3MgZXhjZXB0aW9uIHdoZW4gZGVjb21wcmVzc2luZyBpbnZhbGlkCi0gICAgY29tcHJlc3NlZCBkYXRhLgorICAgIE5vdGUgdGhhdCB5b3Ugc2hvdWxkIGJlIHVzaW5nIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mIHpsaWIuICBWZXJzaW9ucworICAgIDEuMS4zIGFuZCBiZWZvcmUgd2VyZSBzdWJqZWN0IHRvIGEgZG91YmxlLWZyZWUgdnVsbmVyYWJpbGl0eSwgYW5kIHZlcnNpb25zCisgICAgMS4yLjEgYW5kIDEuMi4yIHdlcmUgc3ViamVjdCB0byBhbiBhY2Nlc3MgZXhjZXB0aW9uIHdoZW4gZGVjb21wcmVzc2luZworICAgIGludmFsaWQgY29tcHJlc3NlZCBkYXRhLgogCiAzNC4gSXMgdGhlcmUgYSBKYXZhIHZlcnNpb24gb2YgemxpYj8KIAogICAgIFByb2JhYmx5IHdoYXQgeW91IHdhbnQgaXMgdG8gdXNlIHpsaWIgaW4gSmF2YS4gemxpYiBpcyBhbHJlYWR5IGluY2x1ZGVkCiAgICAgYXMgcGFydCBvZiB0aGUgSmF2YSBTREsgaW4gdGhlIGphdmEudXRpbC56aXAgcGFja2FnZS4gSWYgeW91IHJlYWxseSB3YW50CiAgICAgYSB2ZXJzaW9uIG9mIHpsaWIgd3JpdHRlbiBpbiB0aGUgSmF2YSBsYW5ndWFnZSwgbG9vayBvbiB0aGUgemxpYiBob21lCi0gICAgcGFnZSBmb3IgbGlua3M6IGh0dHA6Ly93d3cuemxpYi5vcmcvCisgICAgcGFnZSBmb3IgbGlua3M6IGh0dHA6Ly96bGliLm5ldC8gLgogCiAzNS4gSSBnZXQgdGhpcyBvciB0aGF0IGNvbXBpbGVyIG9yIHNvdXJjZS1jb2RlIHNjYW5uZXIgd2FybmluZyB3aGVuIEkgY3JhbmsgaXQKICAgICB1cCB0byBtYXhpbWFsbHktcGVkYW50aWMuIENhbid0IHlvdSBndXlzIHdyaXRlIHByb3BlciBjb2RlPwogCiAgICAgTWFueSB5ZWFycyBhZ28sIHdlIGdhdmUgdXAgYXR0ZW1wdGluZyB0byBhdm9pZCB3YXJuaW5ncyBvbiBldmVyeSBjb21waWxlcgotICAgIGluIHRoZSB1bml2ZXJzZS4gSXQganVzdCBnb3QgdG8gYmUgYSB3YXN0ZSBvZiB0aW1lLCBhbmQgc29tZSBjb21waWxlcnMKLSAgICB3ZXJlIGRvd25yaWdodCBzaWxseS4gU28gbm93LCB3ZSBzaW1wbHkgbWFrZSBzdXJlIHRoYXQgdGhlIGNvZGUgYWx3YXlzCi0gICAgd29ya3MuCisgICAgaW4gdGhlIHVuaXZlcnNlLiAgSXQganVzdCBnb3QgdG8gYmUgYSB3YXN0ZSBvZiB0aW1lLCBhbmQgc29tZSBjb21waWxlcnMKKyAgICB3ZXJlIGRvd25yaWdodCBzaWxseSBhcyB3ZWxsIGFzIGNvbnRyYWRpY3RlZCBlYWNoIG90aGVyLiAgU28gbm93LCB3ZSBzaW1wbHkKKyAgICBtYWtlIHN1cmUgdGhhdCB0aGUgY29kZSBhbHdheXMgd29ya3MuCiAKIDM2LiBWYWxncmluZCAob3Igc29tZSBzaW1pbGFyIG1lbW9yeSBhY2Nlc3MgY2hlY2tlcikgc2F5cyB0aGF0IGRlZmxhdGUgaXMKICAgICBwZXJmb3JtaW5nIGEgY29uZGl0aW9uYWwganVtcCB0aGF0IGRlcGVuZHMgb24gYW4gdW5pbml0aWFsaXplZCB2YWx1ZS4KICAgICBJc24ndCB0aGF0IGEgYnVnPwogCi0gICAgTm8uIFRoYXQgaXMgaW50ZW50aW9uYWwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGFuZCB0aGUgb3V0cHV0IG9mCi0gICAgZGVmbGF0ZSBpcyBub3QgYWZmZWN0ZWQuIFRoaXMgb25seSBzdGFydGVkIHNob3dpbmcgdXAgcmVjZW50bHkgc2luY2UKLSAgICB6bGliIDEuMi54IHVzZXMgbWFsbG9jKCkgYnkgZGVmYXVsdCBmb3IgYWxsb2NhdGlvbnMsIHdoZXJlYXMgZWFybGllcgotICAgIHZlcnNpb25zIHVzZWQgY2FsbG9jKCksIHdoaWNoIHplcm9zIG91dCB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KKyAgICBOby4gIFRoYXQgaXMgaW50ZW50aW9uYWwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGFuZCB0aGUgb3V0cHV0IG9mIGRlZmxhdGUKKyAgICBpcyBub3QgYWZmZWN0ZWQuICBUaGlzIG9ubHkgc3RhcnRlZCBzaG93aW5nIHVwIHJlY2VudGx5IHNpbmNlIHpsaWIgMS4yLngKKyAgICB1c2VzIG1hbGxvYygpIGJ5IGRlZmF1bHQgZm9yIGFsbG9jYXRpb25zLCB3aGVyZWFzIGVhcmxpZXIgdmVyc2lvbnMgdXNlZAorICAgIGNhbGxvYygpLCB3aGljaCB6ZXJvcyBvdXQgdGhlIGFsbG9jYXRlZCBtZW1vcnkuICBFdmVuIHRob3VnaCB0aGUgY29kZSB3YXMKKyAgICBjb3JyZWN0LCB2ZXJzaW9ucyAxLjIuNCBhbmQgbGF0ZXIgd2FzIGNoYW5nZWQgdG8gbm90IHN0aW11bGF0ZSB0aGVzZQorICAgIGNoZWNrZXJzLgogCiAzNy4gV2lsbCB6bGliIHJlYWQgdGhlIChpbnNlcnQgYW55IGFuY2llbnQgb3IgYXJjYW5lIGZvcm1hdCBoZXJlKSBjb21wcmVzc2VkCiAgICAgZGF0YSBmb3JtYXQ/CkBAIC0zMTEsMjAgKzMxMSwyMSBAQAogCiAzOC4gSG93IGNhbiBJIGVuY3J5cHQvZGVjcnlwdCB6aXAgZmlsZXMgd2l0aCB6bGliPwogCi0gICAgemxpYiBkb2Vzbid0IHN1cHBvcnQgZW5jcnlwdGlvbi4gVGhlIG9yaWdpbmFsIFBLWklQIGVuY3J5cHRpb24gaXMgdmVyeSB3ZWFrCi0gICAgYW5kIGNhbiBiZSBicm9rZW4gd2l0aCBmcmVlbHkgYXZhaWxhYmxlIHByb2dyYW1zLiBUbyBnZXQgc3Ryb25nIGVuY3J5cHRpb24sCi0gICAgdXNlIEdudVBHLCBodHRwOi8vd3d3LmdudXBnLm9yZy8gLCB3aGljaCBhbHJlYWR5IGluY2x1ZGVzIHpsaWIgY29tcHJlc3Npb24uCi0gICAgRm9yIFBLWklQIGNvbXBhdGlibGUgImVuY3J5cHRpb24iLCBsb29rIGF0IGh0dHA6Ly93d3cuaW5mby16aXAub3JnLworICAgIHpsaWIgZG9lc24ndCBzdXBwb3J0IGVuY3J5cHRpb24uICBUaGUgb3JpZ2luYWwgUEtaSVAgZW5jcnlwdGlvbiBpcyB2ZXJ5CisgICAgd2VhayBhbmQgY2FuIGJlIGJyb2tlbiB3aXRoIGZyZWVseSBhdmFpbGFibGUgcHJvZ3JhbXMuICBUbyBnZXQgc3Ryb25nCisgICAgZW5jcnlwdGlvbiwgdXNlIEdudVBHLCBodHRwOi8vd3d3LmdudXBnLm9yZy8gLCB3aGljaCBhbHJlYWR5IGluY2x1ZGVzIHpsaWIKKyAgICBjb21wcmVzc2lvbi4gIEZvciBQS1pJUCBjb21wYXRpYmxlICJlbmNyeXB0aW9uIiwgbG9vayBhdAorICAgIGh0dHA6Ly93d3cuaW5mby16aXAub3JnLwogCiAzOS4gV2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlICJnemlwIiBhbmQgImRlZmxhdGUiIEhUVFAgMS4xIGVuY29kaW5ncz8KIAotICAgICJnemlwIiBpcyB0aGUgZ3ppcCBmb3JtYXQsIGFuZCAiZGVmbGF0ZSIgaXMgdGhlIHpsaWIgZm9ybWF0LiBUaGV5IHNob3VsZAotICAgIHByb2JhYmx5IGhhdmUgY2FsbGVkIHRoZSBzZWNvbmQgb25lICJ6bGliIiBpbnN0ZWFkIHRvIGF2b2lkIGNvbmZ1c2lvbgotICAgIHdpdGggdGhlIHJhdyBkZWZsYXRlIGNvbXByZXNzZWQgZGF0YSBmb3JtYXQuIFdoaWxlIHRoZSBIVFRQIDEuMSBSRkMgMjYxNgorICAgICJnemlwIiBpcyB0aGUgZ3ppcCBmb3JtYXQsIGFuZCAiZGVmbGF0ZSIgaXMgdGhlIHpsaWIgZm9ybWF0LiAgVGhleSBzaG91bGQKKyAgICBwcm9iYWJseSBoYXZlIGNhbGxlZCB0aGUgc2Vjb25kIG9uZSAiemxpYiIgaW5zdGVhZCB0byBhdm9pZCBjb25mdXNpb24gd2l0aAorICAgIHRoZSByYXcgZGVmbGF0ZSBjb21wcmVzc2VkIGRhdGEgZm9ybWF0LiAgV2hpbGUgdGhlIEhUVFAgMS4xIFJGQyAyNjE2CiAgICAgY29ycmVjdGx5IHBvaW50cyB0byB0aGUgemxpYiBzcGVjaWZpY2F0aW9uIGluIFJGQyAxOTUwIGZvciB0aGUgImRlZmxhdGUiCiAgICAgdHJhbnNmZXIgZW5jb2RpbmcsIHRoZXJlIGhhdmUgYmVlbiByZXBvcnRzIG9mIHNlcnZlcnMgYW5kIGJyb3dzZXJzIHRoYXQKICAgICBpbmNvcnJlY3RseSBwcm9kdWNlIG9yIGV4cGVjdCByYXcgZGVmbGF0ZSBkYXRhIHBlciB0aGUgZGVmbGF0ZQotICAgIHNwZWNmaWNpYXRpb24gaW4gUkZDIDE5NTEsIG1vc3Qgbm90YWJseSBNaWNyb3NvZnQuIFNvIGV2ZW4gdGhvdWdoIHRoZQorICAgIHNwZWNmaWNpYXRpb24gaW4gUkZDIDE5NTEsIG1vc3Qgbm90YWJseSBNaWNyb3NvZnQuICBTbyBldmVuIHRob3VnaCB0aGUKICAgICAiZGVmbGF0ZSIgdHJhbnNmZXIgZW5jb2RpbmcgdXNpbmcgdGhlIHpsaWIgZm9ybWF0IHdvdWxkIGJlIHRoZSBtb3JlCiAgICAgZWZmaWNpZW50IGFwcHJvYWNoIChhbmQgaW4gZmFjdCBleGFjdGx5IHdoYXQgdGhlIHpsaWIgZm9ybWF0IHdhcyBkZXNpZ25lZAogICAgIGZvciksIHVzaW5nIHRoZSAiZ3ppcCIgdHJhbnNmZXIgZW5jb2RpbmcgaXMgcHJvYmFibHkgbW9yZSByZWxpYWJsZSBkdWUgdG8KQEAgLTMzNCwyOCArMzM1LDMyIEBACiAKIDQwLiBEb2VzIHpsaWIgc3VwcG9ydCB0aGUgbmV3ICJEZWZsYXRlNjQiIGZvcm1hdCBpbnRyb2R1Y2VkIGJ5IFBLV2FyZT8KIAotICAgIE5vLiBQS1dhcmUgaGFzIGFwcGFyZW50bHkgZGVjaWRlZCB0byBrZWVwIHRoYXQgZm9ybWF0IHByb3ByaWV0YXJ5LCBzaW5jZQotICAgIHRoZXkgaGF2ZSBub3QgZG9jdW1lbnRlZCBpdCBhcyB0aGV5IGhhdmUgcHJldmlvdXMgY29tcHJlc3Npb24gZm9ybWF0cy4KLSAgICBJbiBhbnkgY2FzZSwgdGhlIGNvbXByZXNzaW9uIGltcHJvdmVtZW50cyBhcmUgc28gbW9kZXN0IGNvbXBhcmVkIHRvIG90aGVyCi0gICAgbW9yZSBtb2Rlcm4gYXBwcm9hY2hlcywgdGhhdCBpdCdzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IHRvIGltcGxlbWVudC4KKyAgICBOby4gIFBLV2FyZSBoYXMgYXBwYXJlbnRseSBkZWNpZGVkIHRvIGtlZXAgdGhhdCBmb3JtYXQgcHJvcHJpZXRhcnksIHNpbmNlCisgICAgdGhleSBoYXZlIG5vdCBkb2N1bWVudGVkIGl0IGFzIHRoZXkgaGF2ZSBwcmV2aW91cyBjb21wcmVzc2lvbiBmb3JtYXRzLiAgSW4KKyAgICBhbnkgY2FzZSwgdGhlIGNvbXByZXNzaW9uIGltcHJvdmVtZW50cyBhcmUgc28gbW9kZXN0IGNvbXBhcmVkIHRvIG90aGVyIG1vcmUKKyAgICBtb2Rlcm4gYXBwcm9hY2hlcywgdGhhdCBpdCdzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IHRvIGltcGxlbWVudC4KIAogNDEuIEknbSBoYXZpbmcgYSBwcm9ibGVtIHdpdGggdGhlIHppcCBmdW5jdGlvbnMgaW4gemxpYiwgY2FuIHlvdSBoZWxwPwogCi0gICAgVGhlcmUgYXJlIG5vIHppcCBmdW5jdGlvbnMgaW4gemxpYi4gWW91IGFyZSBwcm9iYWJseSB1c2luZyBtaW5pemlwIGJ5Ci0gICAgR2lsZXMgVm9sbGFudCwgd2hpY2ggaXMgZm91bmQgaW4gdGhlIGNvbnRyaWIgZGlyZWN0b3J5IG9mIHpsaWIuIEl0IGlzIG5vdAotICAgIHBhcnQgb2YgemxpYi4gSW4gZmFjdCBub25lIG9mIHRoZSBzdHVmZiBpbiBjb250cmliIGlzIHBhcnQgb2YgemxpYi4gVGhlCi0gICAgZmlsZXMgaW4gdGhlcmUgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHpsaWIgYXV0aG9ycy4gWW91IG5lZWQgdG8gY29udGFjdAotICAgIHRoZSBhdXRob3JzIG9mIHRoZSBjb250cmlidXRpb24gZm9yIGhlbHAuCisgICAgVGhlcmUgYXJlIG5vIHppcCBmdW5jdGlvbnMgaW4gemxpYi4gIFlvdSBhcmUgcHJvYmFibHkgdXNpbmcgbWluaXppcCBieQorICAgIEdpbGVzIFZvbGxhbnQsIHdoaWNoIGlzIGZvdW5kIGluIHRoZSBjb250cmliIGRpcmVjdG9yeSBvZiB6bGliLiAgSXQgaXMgbm90CisgICAgcGFydCBvZiB6bGliLiAgSW4gZmFjdCBub25lIG9mIHRoZSBzdHVmZiBpbiBjb250cmliIGlzIHBhcnQgb2YgemxpYi4gIFRoZQorICAgIGZpbGVzIGluIHRoZXJlIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSB6bGliIGF1dGhvcnMuICBZb3UgbmVlZCB0byBjb250YWN0CisgICAgdGhlIGF1dGhvcnMgb2YgdGhlIHJlc3BlY3RpdmUgY29udHJpYnV0aW9uIGZvciBoZWxwLgogCiA0Mi4gVGhlIG1hdGNoLmFzbSBjb2RlIGluIGNvbnRyaWIgaXMgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgogICAgIFNpbmNlIGl0J3MgcGFydCBvZiB6bGliLCBkb2Vzbid0IHRoYXQgbWVhbiB0aGF0IGFsbCBvZiB6bGliIGZhbGxzIHVuZGVyIHRoZQogICAgIEdOVSBHUEw/CiAKLSAgICBOby4gVGhlIGZpbGVzIGluIGNvbnRyaWIgYXJlIG5vdCBwYXJ0IG9mIHpsaWIuIFRoZXkgd2VyZSBjb250cmlidXRlZCBieQorICAgIE5vLiAgVGhlIGZpbGVzIGluIGNvbnRyaWIgYXJlIG5vdCBwYXJ0IG9mIHpsaWIuICBUaGV5IHdlcmUgY29udHJpYnV0ZWQgYnkKICAgICBvdGhlciBhdXRob3JzIGFuZCBhcmUgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSB0byB0aGUgdXNlciB3aXRoaW4gdGhlIHpsaWIKLSAgICBkaXN0cmlidXRpb24uIEVhY2ggb2YgdGhlIGl0ZW1zIGluIGNvbnRyaWIgaGF2ZSB0aGVpciBvd24gbGljZW5zZS4KKyAgICBkaXN0cmlidXRpb24uICBFYWNoIG9mIHRoZSBpdGVtcyBpbiBjb250cmliIGhhdmUgdGhlaXIgb3duIGxpY2Vuc2UuCiAKLTQzLiBDYW4geW91IHBsZWFzZSBzaWduIHRoZXNlIGxlbmd0aHkgbGVnYWwgZG9jdW1lbnRzIGFuZCBmYXggdGhlbSBiYWNrIHRvIHVzCis0My4gSXMgemxpYiBzdWJqZWN0IHRvIGV4cG9ydCBjb250cm9scz8gIFdoYXQgaXMgaXRzIEVDQ04/CisKKyAgICB6bGliIGlzIG5vdCBzdWJqZWN0IHRvIGV4cG9ydCBjb250cm9scywgYW5kIHNvIGlzIGNsYXNzaWZpZWQgYXMgRUFSOTkuCisKKzQ0LiBDYW4geW91IHBsZWFzZSBzaWduIHRoZXNlIGxlbmd0aHkgbGVnYWwgZG9jdW1lbnRzIGFuZCBmYXggdGhlbSBiYWNrIHRvIHVzCiAgICAgc28gdGhhdCB3ZSBjYW4gdXNlIHlvdXIgc29mdHdhcmUgaW4gb3VyIHByb2R1Y3Q/CiAKICAgICBOby4gR28gYXdheS4gU2hvby4KZGlmZiAtLWdpdCBhL0lOREVYIGIvSU5ERVgKaW5kZXggMDFiMDA3MC4uZjY2YmY5YiAxMDA2NDQKLS0tIGEvSU5ERVgKKysrIGIvSU5ERVgKQEAgLTIsMzMgKzIsMzMgQEAKIENoYW5nZUxvZyAgICAgICBoaXN0b3J5IG9mIGNoYW5nZXMKIEZBUSAgICAgICAgICAgICBGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucyBhYm91dCB6bGliCiBJTkRFWCAgICAgICAgICAgdGhpcyBmaWxlCitNYWtlZmlsZSAgICAgICAgZHVtbXkgTWFrZWZpbGUgdGhhdCB0ZWxscyB5b3UgdG8gLi9jb25maWd1cmUKIE1ha2VmaWxlLmluICAgICB0ZW1wbGF0ZSBmb3IgVW5peCBNYWtlZmlsZQogUkVBRE1FICAgICAgICAgIGd1ZXNzIHdoYXQKIGNvbmZpZ3VyZSAgICAgICBjb25maWd1cmUgc2NyaXB0IGZvciBVbml4CiBtYWtlX3Ztcy5jb20gICAgbWFrZWZpbGUgZm9yIFZNUwogdHJlZWJ1aWxkLnhtbCAgIFhNTCBkZXNjcmlwdGlvbiBvZiBzb3VyY2UgZmlsZSBkZXBlbmRlbmNpZXMKK3pjb25mLmguY21ha2VpbiB6Y29uZi5oIHRlbXBsYXRlIGZvciBjbWFrZQogemNvbmYuaC5pbiAgICAgIHpjb25mLmggdGVtcGxhdGUgZm9yIGNvbmZpZ3VyZQogemxpYi4zICAgICAgICAgIE1hbiBwYWdlIGZvciB6bGliCit6bGliLjMucGRmICAgICAgTWFuIHBhZ2UgaW4gUERGIGZvcm1hdAogemxpYi5tYXAgICAgICAgIExpbnV4IHN5bWJvbCBpbmZvcm1hdGlvbgogemxpYi5wYy5pbiAgICAgIFRlbXBsYXRlIGZvciBwa2ctY29uZmlnIGRlc2NyaXB0b3IKIHpsaWIyYW5zaSAgICAgICBwZXJsIHNjcmlwdCB0byBjb252ZXJ0IHNvdXJjZSBmaWxlcyBmb3IgQysrIGNvbXBpbGF0aW9uCiAKIGFtaWdhLyAgICAgICAgICBtYWtlZmlsZXMgZm9yIEFtaWdhIFNBUyBDCi1hczQwMC8gICAgICAgICAgbWFrZWZpbGVzIGZvciBJQk0gQVMvNDAwCiBkb2MvICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBmb3IgZm9ybWF0cyBhbmQgYWxnb3JpdGhtcwogbXNkb3MvICAgICAgICAgIG1ha2VmaWxlcyBmb3IgTVNET1MKIG5pbnRlbmRvZHMvICAgICBtYWtlZmlsZSBmb3IgTmludGVuZG8gRFMKLW9ianMvICAgICAgICAgICBkZXN0aW5hdGlvbiBmb3Igb2JqZWN0IGZpbGVzCiBvbGQvICAgICAgICAgICAgbWFrZWZpbGVzIGZvciB2YXJpb3VzIGFyY2hpdGVjdHVyZXMgYW5kIHpsaWIgZG9jdW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGZpbGVzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gdXBkYXRlZCBmb3IgemxpYiAxLjIueAotcGljcy8gICAgICAgICAgIGRlc3RpbmF0aW9uIGZvciBwb3NpdGlvbi1pbmRlcGVuZGVudC1jb2RlIG9iamVjdCBmaWxlcwogcHJvamVjdHMvICAgICAgIHByb2plY3RzIGZvciB2YXJpb3VzIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnRzCiBxbngvICAgICAgICAgICAgbWFrZWZpbGVzIGZvciBRTlgKIHdhdGNvbS8gICAgICAgICBtYWtlZmlsZXMgZm9yIE9wZW5XYXRjb20KIHdpbjMyLyAgICAgICAgICBtYWtlZmlsZXMgZm9yIFdpbmRvd3MKIAogICAgICAgICAgICAgICAgIHpsaWIgcHVibGljIGhlYWRlciBmaWxlcyAocmVxdWlyZWQgZm9yIGxpYnJhcnkgdXNlKToKLXpjb25mLmggICAgICAgICAobWFkZSBieSBjb25maWd1cmUpCit6Y29uZi5oCiB6bGliLmgKIAogICAgICAgICAgICAgICAgIHByaXZhdGUgc291cmNlIGZpbGVzIHVzZWQgdG8gYnVpbGQgdGhlIHpsaWIgbGlicmFyeToKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggNzQ0YzQ5NC4uMzgzOWI0MiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTEsMiArMSw1IEBACiBhbGw6CiAJLUBlY2hvICJVc2UgLi9jb25maWd1cmUgZmlyc3QuICBUaGFuayB5b3UuIgorCitkaXN0Y2xlYW46CisJbWFrZSAtZiBNYWtlZmlsZS5pbiBkaXN0Y2xlYW4KZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KaW5kZXggYzFjYmViNS4uZWZhZWM2ZiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUuaW4KKysrIGIvTWFrZWZpbGUuaW4KQEAgLTMyLDcgKzMyLDcgQEAKIAogU1RBVElDTElCPWxpYnouYQogU0hBUkVETElCPWxpYnouc28KLVNIQVJFRExJQlY9bGliei5zby4xLjIuMy45CitTSEFSRURMSUJWPWxpYnouc28uMS4yLjQKIFNIQVJFRExJQk09bGliei5zby4xCiBMSUJTPSQoU1RBVElDTElCKSAkKFNIQVJFRExJQikgJChTSEFSRURMSUJWKQogCkBAIC0xOTMsNiArMTkzLDE4IEBACiAJY2QgJChERVNURElSKSQobWFuM2Rpcik7IHJtIC1mIHpsaWIuMwogCWNkICQoREVTVERJUikkKHBrZ2NvbmZpZ2Rpcik7IHJtIC1mIHpsaWIucGMKIAorZG9jczogemxpYi4zLnBkZgorCit6bGliLjMucGRmOiB6bGliLjMKKwlncm9mZiAtbWFuZG9jIC1mIEggLVQgcHMgemxpYi4zIHwgcHMycGRmIC0gemxpYi4zLnBkZgorCit6Y29uZi5oLmluOiB6Y29uZi5oLmNtYWtlaW4KKwlzZWQgIi9eI2NtYWtlZGVmaW5lL0QiIDwgemNvbmYuaC5jbWFrZWluID4gemNvbmYuaC5pbgorCXRvdWNoIC1yIHpjb25mLmguY21ha2VpbiB6Y29uZi5oLmluCisKK3pjb25mOiB6Y29uZi5oLmluCisJY3AgLXAgemNvbmYuaC5pbiB6Y29uZi5oCisKIG1vc3RseWNsZWFuOiBjbGVhbgogY2xlYW46CiAJcm0gLWYgKi5vICoubG8gKn4gXApAQCAtMjAzLDEwICsyMTUsMTEgQEAKIAlybSAtcmYgb2JqcwogCiBtYWludGFpbmVyLWNsZWFuOiBkaXN0Y2xlYW4KLWRpc3RjbGVhbjogY2xlYW4KLQlybSAtZiBNYWtlZmlsZSB6Y29uZi5oIHpsaWIucGMKK2Rpc3RjbGVhbjogY2xlYW4gemNvbmYgZG9jcworCXJtIC1mIE1ha2VmaWxlIHpsaWIucGMKIAktQHJtIC1mIC5EU19TdG9yZQogCS1AcHJpbnRmICdhbGw6XG5cdC1AZWNobyAiVXNlIC4vY29uZmlndXJlIGZpcnN0LiAgVGhhbmsgeW91LiJcbicgPiBNYWtlZmlsZQorCS1AcHJpbnRmICdcbmRpc3RjbGVhbjpcblx0bWFrZSAtZiBNYWtlZmlsZS5pbiBkaXN0Y2xlYW5cbicgPj4gTWFrZWZpbGUKIAktQHRvdWNoIC1yIE1ha2VmaWxlLmluIE1ha2VmaWxlCiAKIHRhZ3M6CmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggZTZiZWEwOS4uZjI0YWVlZSAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw1NiArMSw1MSBAQAogWkxJQiBEQVRBIENPTVBSRVNTSU9OIExJQlJBUlkKIAotemxpYiAxLjIuMy45IGlzIGEgZ2VuZXJhbCBwdXJwb3NlIGRhdGEgY29tcHJlc3Npb24gbGlicmFyeS4gIEFsbCB0aGUgY29kZSBpcworemxpYiAxLjIuNCBpcyBhIGdlbmVyYWwgcHVycG9zZSBkYXRhIGNvbXByZXNzaW9uIGxpYnJhcnkuICBBbGwgdGhlIGNvZGUgaXMKIHRocmVhZCBzYWZlLiAgVGhlIGRhdGEgZm9ybWF0IHVzZWQgYnkgdGhlIHpsaWIgbGlicmFyeSBpcyBkZXNjcmliZWQgYnkgUkZDcwogKFJlcXVlc3QgZm9yIENvbW1lbnRzKSAxOTUwIHRvIDE5NTIgaW4gdGhlIGZpbGVzCiBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMxOTUwLnR4dCAoemxpYiBmb3JtYXQpLCByZmMxOTUxLnR4dCAoZGVmbGF0ZSBmb3JtYXQpCi1hbmQgcmZjMTk1Mi50eHQgKGd6aXAgZm9ybWF0KS4gVGhlc2UgZG9jdW1lbnRzIGFyZSBhbHNvIGF2YWlsYWJsZSBpbiBvdGhlcgotZm9ybWF0cyBmcm9tIGZ0cDovL2Z0cC51dS5uZXQvZ3JhcGhpY3MvcG5nL2RvY3VtZW50cy96bGliL3pkb2MtaW5kZXguaHRtbAorYW5kIHJmYzE5NTIudHh0IChnemlwIGZvcm1hdCkuCiAKIEFsbCBmdW5jdGlvbnMgb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgYXJlIGRvY3VtZW50ZWQgaW4gdGhlIGZpbGUgemxpYi5oCi0odm9sdW50ZWVyIHRvIHdyaXRlIG1hbiBwYWdlcyB3ZWxjb21lLCBjb250YWN0IHpsaWJAZ3ppcC5vcmcpLiBBIHVzYWdlIGV4YW1wbGUKKyh2b2x1bnRlZXIgdG8gd3JpdGUgbWFuIHBhZ2VzIHdlbGNvbWUsIGNvbnRhY3QgemxpYkBnemlwLm9yZykuICBBIHVzYWdlIGV4YW1wbGUKIG9mIHRoZSBsaWJyYXJ5IGlzIGdpdmVuIGluIHRoZSBmaWxlIGV4YW1wbGUuYyB3aGljaCBhbHNvIHRlc3RzIHRoYXQgdGhlIGxpYnJhcnkKLWlzIHdvcmtpbmcgY29ycmVjdGx5LiBBbm90aGVyIGV4YW1wbGUgaXMgZ2l2ZW4gaW4gdGhlIGZpbGUgbWluaWd6aXAuYy4gVGhlCitpcyB3b3JraW5nIGNvcnJlY3RseS4gIEFub3RoZXIgZXhhbXBsZSBpcyBnaXZlbiBpbiB0aGUgZmlsZSBtaW5pZ3ppcC5jLiAgVGhlCiBjb21wcmVzc2lvbiBsaWJyYXJ5IGl0c2VsZiBpcyBjb21wb3NlZCBvZiBhbGwgc291cmNlIGZpbGVzIGV4Y2VwdCBleGFtcGxlLmMgYW5kCiBtaW5pZ3ppcC5jLgogCiBUbyBjb21waWxlIGFsbCBmaWxlcyBhbmQgcnVuIHRoZSB0ZXN0IHByb2dyYW0sIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGdpdmVuIGF0Ci10aGUgdG9wIG9mIE1ha2VmaWxlLiBJbiBzaG9ydCAibWFrZSB0ZXN0OyBtYWtlIGluc3RhbGwiIHNob3VsZCB3b3JrIGZvciBtb3N0Ci1tYWNoaW5lcy4gRm9yIFVuaXg6ICIuL2NvbmZpZ3VyZTsgbWFrZSB0ZXN0OyBtYWtlIGluc3RhbGwiLiBGb3IgTVNET1MsIHVzZSBvbmUKLW9mIHRoZSBzcGVjaWFsIG1ha2VmaWxlcyBzdWNoIGFzIE1ha2VmaWxlLm1zYy4gRm9yIFZNUywgdXNlIG1ha2Vfdm1zLmNvbS4KK3RoZSB0b3Agb2YgTWFrZWZpbGUuaW4uICBJbiBzaG9ydCAiLi9jb25maWd1cmU7IG1ha2UgdGVzdCIsIGFuZCBpZiB0aGF0IGdvZXMKK3dlbGwsICJtYWtlIGluc3RhbGwiIHNob3VsZCB3b3JrIGZvciBtb3N0IGZsYXZvcnMgb2YgVW5peC4gIEZvciBXaW5kb3dzLCB1c2Ugb25lCitvZiB0aGUgc3BlY2lhbCBtYWtlZmlsZXMgaW4gd2luMzIvIG9yIHByb2plY3RzLyAuICBGb3IgVk1TLCB1c2UgbWFrZV92bXMuY29tLgogCiBRdWVzdGlvbnMgYWJvdXQgemxpYiBzaG91bGQgYmUgc2VudCB0byA8emxpYkBnemlwLm9yZz4sIG9yIHRvIEdpbGxlcyBWb2xsYW50Ci08aW5mb0B3aW5pbWFnZS5jb20+IGZvciB0aGUgV2luZG93cyBETEwgdmVyc2lvbi4gVGhlIHpsaWIgaG9tZSBwYWdlIGlzCi1odHRwOi8vd3d3LnpsaWIub3JnIG9yIGh0dHA6Ly93d3cuZ3ppcC5vcmcvemxpYi8gQmVmb3JlIHJlcG9ydGluZyBhIHByb2JsZW0sCi1wbGVhc2UgY2hlY2sgdGhpcyBzaXRlIHRvIHZlcmlmeSB0aGF0IHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB6bGliOwotb3RoZXJ3aXNlIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gYW5kIGNoZWNrIHdoZXRoZXIgdGhlIHByb2JsZW0gc3RpbGwgZXhpc3RzIG9yCi1ub3QuCis8aW5mb0B3aW5pbWFnZS5jb20+IGZvciB0aGUgV2luZG93cyBETEwgdmVyc2lvbi4gIFRoZSB6bGliIGhvbWUgcGFnZSBpcworaHR0cDovL3psaWIubmV0LyAuICBCZWZvcmUgcmVwb3J0aW5nIGEgcHJvYmxlbSwgcGxlYXNlIGNoZWNrIHRoaXMgc2l0ZSB0bwordmVyaWZ5IHRoYXQgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHpsaWI7IG90aGVyd2lzZSBnZXQgdGhlIGxhdGVzdAordmVyc2lvbiBhbmQgY2hlY2sgd2hldGhlciB0aGUgcHJvYmxlbSBzdGlsbCBleGlzdHMgb3Igbm90LgogCi1QTEVBU0UgcmVhZCB0aGUgemxpYiBGQVEgaHR0cDovL3d3dy5nemlwLm9yZy96bGliL3psaWJfZmFxLmh0bWwgYmVmb3JlIGFza2luZwotZm9yIGhlbHAuCitQTEVBU0UgcmVhZCB0aGUgemxpYiBGQVEgaHR0cDovL3psaWIubmV0L3psaWJfZmFxLmh0bWwgYmVmb3JlIGFza2luZyBmb3IgaGVscC4KIAotTWFyayBOZWxzb24gPG1hcmtuQGllZWUub3JnPiB3cm90ZSBhbiBhcnRpY2xlIGFib3V0IHpsaWIgZm9yIHRoZSBKYW4uIDE5OTcKLWlzc3VlIG9mICBEci4gRG9iYidzIEpvdXJuYWw7IGEgY29weSBvZiB0aGUgYXJ0aWNsZSBpcyBhdmFpbGFibGUgaW4KLWh0dHA6Ly9kb2dtYS5uZXQvbWFya24vYXJ0aWNsZXMvemxpYnRvb2wvemxpYnRvb2wuaHRtCitNYXJrIE5lbHNvbiA8bWFya25AaWVlZS5vcmc+IHdyb3RlIGFuIGFydGljbGUgYWJvdXQgemxpYiBmb3IgdGhlIEphbi4gIDE5OTcKK2lzc3VlIG9mIERyLiAgRG9iYidzIEpvdXJuYWw7IGEgY29weSBvZiB0aGUgYXJ0aWNsZSBpcyBhdmFpbGFibGUgYXQKK2h0dHA6Ly9tYXJrbmVsc29uLnVzLzE5OTcvMDEvMDEvemxpYi1lbmdpbmUvIC4KIAotVGhlIGNoYW5nZXMgbWFkZSBpbiB2ZXJzaW9uIDEuMi4zLjkgYXJlIGRvY3VtZW50ZWQgaW4gdGhlIGZpbGUgQ2hhbmdlTG9nLgorVGhlIGNoYW5nZXMgbWFkZSBpbiB2ZXJzaW9uIDEuMi40IGFyZSBkb2N1bWVudGVkIGluIHRoZSBmaWxlIENoYW5nZUxvZy4KIAotVW5zdXBwb3J0ZWQgdGhpcmQgcGFydHkgY29udHJpYnV0aW9ucyBhcmUgcHJvdmlkZWQgaW4gZGlyZWN0b3J5ICJjb250cmliIi4KK1Vuc3VwcG9ydGVkIHRoaXJkIHBhcnR5IGNvbnRyaWJ1dGlvbnMgYXJlIHByb3ZpZGVkIGluIGRpcmVjdG9yeSBjb250cmliLyAuCiAKLUEgSmF2YSBpbXBsZW1lbnRhdGlvbiBvZiB6bGliIGlzIGF2YWlsYWJsZSBpbiB0aGUgSmF2YSBEZXZlbG9wbWVudCBLaXQKLWh0dHA6Ly9qYXZhLnN1bi5jb20vajJzZS8xLjQuMi9kb2NzL2FwaS9qYXZhL3V0aWwvemlwL3BhY2thZ2Utc3VtbWFyeS5odG1sCi1TZWUgdGhlIHpsaWIgaG9tZSBwYWdlIGh0dHA6Ly93d3cuemxpYi5vcmcgZm9yIGRldGFpbHMuCit6bGliIGlzIGF2YWlsYWJsZSBpbiBKYXZhIHVzaW5nIHRoZSBqYXZhLnV0aWwuemlwIHBhY2thZ2UsIGRvY3VtZW50ZWQgYXQKK2h0dHA6Ly9qYXZhLnN1bi5jb20vZGV2ZWxvcGVyL3RlY2huaWNhbEFydGljbGVzL1Byb2dyYW1taW5nL2NvbXByZXNzaW9uLyAuCiAKLUEgUGVybCBpbnRlcmZhY2UgdG8gemxpYiB3cml0dGVuIGJ5IFBhdWwgTWFycXVlc3MgPHBtcXNAY3Bhbi5vcmc+IGlzIGluIHRoZQotQ1BBTiAoQ29tcHJlaGVuc2l2ZSBQZXJsIEFyY2hpdmUgTmV0d29yaykgc2l0ZXMKLWh0dHA6Ly93d3cuY3Bhbi5vcmcvbW9kdWxlcy9ieS1tb2R1bGUvQ29tcHJlc3MvCitBIFBlcmwgaW50ZXJmYWNlIHRvIHpsaWIgd3JpdHRlbiBieSBQYXVsIE1hcnF1ZXNzIDxwbXFzQGNwYW4ub3JnPiBpcyBhdmFpbGFibGUKK2F0IENQQU4gKENvbXByZWhlbnNpdmUgUGVybCBBcmNoaXZlIE5ldHdvcmspIHNpdGVzLCBpbmNsdWRpbmcKK2h0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfnBtcXMvSU8tQ29tcHJlc3MtWmxpYi8gLgogCiBBIFB5dGhvbiBpbnRlcmZhY2UgdG8gemxpYiB3cml0dGVuIGJ5IEEuTS4gS3VjaGxpbmcgPGFta0BhbWsuY2E+IGlzCiBhdmFpbGFibGUgaW4gUHl0aG9uIDEuNSBhbmQgbGF0ZXIgdmVyc2lvbnMsIHNlZQotaHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9saWIvbW9kdWxlLXpsaWIuaHRtbAoraHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9saWIvbW9kdWxlLXpsaWIuaHRtbCAuCiAKLUEgemxpYiBiaW5kaW5nIGZvciBUQ0wgd3JpdHRlbiBieSBBbmRyZWFzIEt1cHJpZXMgPGEua3Vwcmllc0B3ZXN0ZW5kLmNvbT4gaXMKLWF2YWlsbGFibGUgYXQgaHR0cDovL3d3dy5vY2hlLmRlL35ha3Vwcmllcy9zb2Z0L3RyZi90cmZfemlwLmh0bWwKK3psaWIgaXMgYnVpbHQgaW50byB0Y2w6IGh0dHA6Ly93aWtpLnRjbC50ay80NjEwIC4KIAogQW4gZXhwZXJpbWVudGFsIHBhY2thZ2UgdG8gcmVhZCBhbmQgd3JpdGUgZmlsZXMgaW4gLnppcCBmb3JtYXQsIHdyaXR0ZW4gb24gdG9wCiBvZiB6bGliIGJ5IEdpbGxlcyBWb2xsYW50IDxpbmZvQHdpbmltYWdlLmNvbT4sIGlzIGF2YWlsYWJsZSBpbiB0aGUKQEAgLTc0LDI1ICs2OSwyMSBAQAogLSB6bGliIGRvZXNuJ3Qgd29yayBvbiBIUC1VWCA5LjA1IHdpdGggc29tZSB2ZXJzaW9ucyBvZiAvYmluL2NjLiBJdCB3b3JrcyB3aXRoCiAgIG90aGVyIGNvbXBpbGVycy4gVXNlICJtYWtlIHRlc3QiIHRvIGNoZWNrIHlvdXIgY29tcGlsZXIuCiAKLS0gZ3pkb3BlbiBpcyBub3Qgc3VwcG9ydGVkIG9uIFJJU0NPUywgQkVPUyBhbmQgYnkgc29tZSBNYWMgY29tcGlsZXJzLgorLSBnemRvcGVuIGlzIG5vdCBzdXBwb3J0ZWQgb24gUklTQ09TIG9yIEJFT1MuCiAKIC0gRm9yIFBhbG1Pcywgc2VlIGh0dHA6Ly9wYWxtemxpYi5zb3VyY2Vmb3JnZS5uZXQvCiAKLS0gV2hlbiBidWlsZGluZyBhIHNoYXJlZCwgaS5lLiBkeW5hbWljIGxpYnJhcnkgb24gTWFjIE9TIFgsIHRoZSBsaWJyYXJ5IG11c3QgYmUKLSAgaW5zdGFsbGVkIGJlZm9yZSB0ZXN0aW5nIChkbyAibWFrZSBpbnN0YWxsIiBiZWZvcmUgIm1ha2UgdGVzdCIpLCBzaW5jZSB0aGUKLSAgbGlicmFyeSBsb2NhdGlvbiBpcyBzcGVjaWZpZWQgaW4gdGhlIGxpYnJhcnkuCi0KIAogQWNrbm93bGVkZ21lbnRzOgogCi0gIFRoZSBkZWZsYXRlIGZvcm1hdCB1c2VkIGJ5IHpsaWIgd2FzIGRlZmluZWQgYnkgUGhpbCBLYXR6LiBUaGUgZGVmbGF0ZQotICBhbmQgemxpYiBzcGVjaWZpY2F0aW9ucyB3ZXJlIHdyaXR0ZW4gYnkgTC4gUGV0ZXIgRGV1dHNjaC4gVGhhbmtzIHRvIGFsbCB0aGUKLSAgcGVvcGxlIHdobyByZXBvcnRlZCBwcm9ibGVtcyBhbmQgc3VnZ2VzdGVkIHZhcmlvdXMgaW1wcm92ZW1lbnRzIGluIHpsaWI7Ci0gIHRoZXkgYXJlIHRvbyBudW1lcm91cyB0byBjaXRlIGhlcmUuCisgIFRoZSBkZWZsYXRlIGZvcm1hdCB1c2VkIGJ5IHpsaWIgd2FzIGRlZmluZWQgYnkgUGhpbCBLYXR6LiAgVGhlIGRlZmxhdGUgYW5kCisgIHpsaWIgc3BlY2lmaWNhdGlvbnMgd2VyZSB3cml0dGVuIGJ5IEwuICBQZXRlciBEZXV0c2NoLiAgVGhhbmtzIHRvIGFsbCB0aGUKKyAgcGVvcGxlIHdobyByZXBvcnRlZCBwcm9ibGVtcyBhbmQgc3VnZ2VzdGVkIHZhcmlvdXMgaW1wcm92ZW1lbnRzIGluIHpsaWI7IHRoZXkKKyAgYXJlIHRvbyBudW1lcm91cyB0byBjaXRlIGhlcmUuCiAKIENvcHlyaWdodCBub3RpY2U6CiAKLSAoQykgMTk5NS0yMDA0IEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKKyAoQykgMTk5NS0yMDEwIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKIAogICBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAogICB3YXJyYW50eS4gIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCkBAIC0xMTMsMTMgKzEwNCwxMSBAQAogICBKZWFuLWxvdXAgR2FpbGx5ICAgICAgICBNYXJrIEFkbGVyCiAgIGpsb3VwQGd6aXAub3JnICAgICAgICAgIG1hZGxlckBhbHVtbmkuY2FsdGVjaC5lZHUKIAotSWYgeW91IHVzZSB0aGUgemxpYiBsaWJyYXJ5IGluIGEgcHJvZHVjdCwgd2Ugd291bGQgYXBwcmVjaWF0ZSAqbm90KgotcmVjZWl2aW5nIGxlbmd0aHkgbGVnYWwgZG9jdW1lbnRzIHRvIHNpZ24uIFRoZSBzb3VyY2VzIGFyZSBwcm92aWRlZAotZm9yIGZyZWUgYnV0IHdpdGhvdXQgd2FycmFudHkgb2YgYW55IGtpbmQuICBUaGUgbGlicmFyeSBoYXMgYmVlbgotZW50aXJlbHkgd3JpdHRlbiBieSBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyOyBpdCBkb2VzIG5vdAotaW5jbHVkZSB0aGlyZC1wYXJ0eSBjb2RlLgorSWYgeW91IHVzZSB0aGUgemxpYiBsaWJyYXJ5IGluIGEgcHJvZHVjdCwgd2Ugd291bGQgYXBwcmVjaWF0ZSAqbm90KiByZWNlaXZpbmcKK2xlbmd0aHkgbGVnYWwgZG9jdW1lbnRzIHRvIHNpZ24uICBUaGUgc291cmNlcyBhcmUgcHJvdmlkZWQgZm9yIGZyZWUgYnV0IHdpdGhvdXQKK3dhcnJhbnR5IG9mIGFueSBraW5kLiAgVGhlIGxpYnJhcnkgaGFzIGJlZW4gZW50aXJlbHkgd3JpdHRlbiBieSBKZWFuLWxvdXAKK0dhaWxseSBhbmQgTWFyayBBZGxlcjsgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGlyZC1wYXJ0eSBjb2RlLgogCi1JZiB5b3UgcmVkaXN0cmlidXRlIG1vZGlmaWVkIHNvdXJjZXMsIHdlIHdvdWxkIGFwcHJlY2lhdGUgdGhhdCB5b3UgaW5jbHVkZQotaW4gdGhlIGZpbGUgQ2hhbmdlTG9nIGhpc3RvcnkgaW5mb3JtYXRpb24gZG9jdW1lbnRpbmcgeW91ciBjaGFuZ2VzLiBQbGVhc2UKLXJlYWQgdGhlIEZBUSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgZGlzdHJpYnV0aW9uIG9mIG1vZGlmaWVkIHNvdXJjZQotdmVyc2lvbnMuCitJZiB5b3UgcmVkaXN0cmlidXRlIG1vZGlmaWVkIHNvdXJjZXMsIHdlIHdvdWxkIGFwcHJlY2lhdGUgdGhhdCB5b3UgaW5jbHVkZSBpbgordGhlIGZpbGUgQ2hhbmdlTG9nIGhpc3RvcnkgaW5mb3JtYXRpb24gZG9jdW1lbnRpbmcgeW91ciBjaGFuZ2VzLiAgUGxlYXNlIHJlYWQKK3RoZSBGQVEgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGRpc3RyaWJ1dGlvbiBvZiBtb2RpZmllZCBzb3VyY2UgdmVyc2lvbnMuCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggMmVjMWQ1Yy4uZDNlZTM1NSAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMTYsNyArMTYsNyBAQAogU1RBVElDTElCPWxpYnouYQogTERGTEFHUz0iJHtMREZMQUdTfSAtTC4gJHtTVEFUSUNMSUJ9IgogVkVSPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKC4qXCkiLiovXDEvcCcgPCB6bGliLmhgCi1WRVIzPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKFswLTldKlxcLlswLTldKlxcLlswLTldKlwpXFwuLiovXDEvcCcgPCB6bGliLmhgCitWRVIzPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKFswLTldKlxcLlswLTldKlxcLlswLTldKlwpLiovXDEvcCcgPCB6bGliLmhgCiBWRVIyPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKFswLTldKlxcLlswLTldKlwpXFwuLiovXDEvcCcgPCB6bGliLmhgCiBWRVIxPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKFswLTldKlwpXFwuLiovXDEvcCcgPCB6bGliLmhgCiBBUj0ke0FSLSJhciJ9CkBAIC0yNTAsNyArMjUwLDcgQEAKICAgZmkKIGZpCiAKLXNlZCAiL14jY21ha2VkZWZpbmUvRCIgPCB6Y29uZi5oLmluID4gemNvbmYuaAorY3AgLXAgemNvbmYuaC5pbiB6Y29uZi5oCiAKIGNhdCA+ICR0ZXN0LmMgPDxFT0YKICNpbmNsdWRlIDx1bmlzdGQuaD4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvUkVBRE1FLmNvbnRyaWIgYi9jb250cmliL1JFQURNRS5jb250cmliCmluZGV4IDE3ZmM4ZjYuLmRkMjI4NWQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvUkVBRE1FLmNvbnRyaWIKKysrIGIvY29udHJpYi9SRUFETUUuY29udHJpYgpAQCAtMTIsNyArMTIsNiBAQAogICAgICAgICBhc20gY29kZSBmb3IgQU1ENjQKICAgICAgICAgU2VlIHBhdGNoIGF0IGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL3F1ZXJ5LXByLmNnaT9wcj1iaW4vOTYzOTMKIAotYXNtNTg2LwogYXNtNjg2LyAgICAgYnkgQnJpYW4gUmFpdGVyIDxicmVhZGJveEBtdXBwZXRsYWJzLmNvbT4KICAgICAgICAgYXNtIGNvZGUgZm9yIFBlbnRpdW0gYW5kIFBQcm8vUElJLCB1c2luZyB0aGUgQVQmVCAoR05VIGFzKSBzeW50YXgKICAgICAgICAgU2VlIGh0dHA6Ly93d3cubXVwcGV0bGFicy5jb20vfmJyZWFkYm94L3NvZnR3YXJlL2Fzc2VtYmx5Lmh0bWwKQEAgLTI2LDYgKzI1LDEwIEBACiBkb3R6bGliLyAgICBieSBIZW5yaWsgUmF2biA8aGVucmlrQHJhdm4uY29tPgogICAgICAgICBTdXBwb3J0IGZvciBNaWNyb3NvZnQgLk5ldCBhbmQgVmlzdWFsIEMrKyAuTmV0CiAKK2djY19ndm1hdDY0L2J5IEdpbGxlcyBWb2xsYW50IDxpbmZvQHdpbmltYWdlLmNvbT4KKyAgICAgICAgR0NDIFZlcnNpb24gb2YgeDg2IDY0LWJpdCAoQU1ENjQgYW5kIEludGVsIEVNNjR0KSBjb2RlIGZvciB4NjQKKyAgICAgICAgYXNzZW1ibGVyIHRvIHJlcGxhY2UgbG9uZ2VzdF9tYXRjaCgpIGFuZCBpbmZsYXRlX2Zhc3QoKQorCiBpbmZiYWNrOS8gICBieSBNYXJrIEFkbGVyIDxtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1PgogICAgICAgICBVbnN1cHBvcnRlZCBkaWZmcyB0byBpbmZiYWNrIHRvIGRlY29kZSB0aGUgZGVmbGF0ZTY0IGZvcm1hdAogCkBAIC00MiwyMSArNDUsMTkgQEAKICAgICAgICAgICAgIGFuZCBLZXZpbiBSdWxhbmQgPGtldmluQHJvZGluLnd1c3RsLmVkdT4KICAgICAgICAgWWV0IGFub3RoZXIgQysrIEkvTyBzdHJlYW1zIGludGVyZmFjZQogCi1tYXNtNjg2LyAgICBieSBEYW4gSGlnZG9uIDxoZGFuQGtpbmVzb2Z0LmNvbT4KLSAgICAgICAgICAgIGFuZCBDaHVjayBXYWxib3VybiA8Y2h1Y2t3QGtpbmVzb2Z0LmNvbT4KLSAgICAgICAgYXNtIGNvZGUgZm9yIFBlbnRpdW0gUHJvL1BJSSwgdXNpbmcgdGhlIE1BU00gc3ludGF4Ci0KIG1hc214NjQvICAgIGJ5IEdpbGxlcyBWb2xsYW50IDxpbmZvQHdpbmltYWdlLmNvbT4KLQl4ODYgNjQtYml0IChBTUQ2NCBhbmQgSW50ZWwgRU02NHQpIGNvZGUgZm9yIHg2NCBhc3NlbWJsZXIgdG8KLQlyZXBsYWNlIGxvbmdlc3RfbWF0Y2goKSBhbmQgaW5mbGF0ZV9mYXN0KCkKKyAgICAgICAgeDg2IDY0LWJpdCAoQU1ENjQgYW5kIEludGVsIEVNNjR0KSBjb2RlIGZvciB4NjQgYXNzZW1ibGVyIHRvCisgICAgICAgIHJlcGxhY2UgbG9uZ2VzdF9tYXRjaCgpIGFuZCBpbmZsYXRlX2Zhc3QoKSwgIGFsc28gbWFzbSB4ODYKKyAgICAgICAgNjQtYml0cyB0cmFuc2xhdGlvbiBvZiBDaHJpcyBBbmRlcnNvbiBpbmZsYXRlX2Zhc3QoKQogCiBtYXNteDg2LyAgICBieSBHaWxsZXMgVm9sbGFudCA8aW5mb0B3aW5pbWFnZS5jb20+CiAgICAgICAgIHg4NiBhc20gY29kZSB0byByZXBsYWNlIGxvbmdlc3RfbWF0Y2goKSBhbmQgaW5mbGF0ZV9mYXN0KCksCi0gICAgICAgIGZvciBWaXN1YWwgQysrIGFuZCBNQVNNCisgICAgICAgIGZvciBWaXN1YWwgQysrIGFuZCBNQVNNICgzMiBiaXRzKS4KKyAgICAgICAgQmFzZWQgb24gQnJpYW4gUmFpdGVyIChhc202ODYpIGFuZCBDaHJpcyBBbmRlcnNvbiAoaW5mbGF0ZTg2KQogCiBtaW5pemlwLyAgICBieSBHaWxsZXMgVm9sbGFudCA8aW5mb0B3aW5pbWFnZS5jb20+CiAgICAgICAgIE1pbmkgemlwIGFuZCB1bnppcCBiYXNlZCBvbiB6bGliCi0JSW5jbHVkZXMgWmlwNjQgc3VwcG9ydCBieSBNYXRoaWFzIFN2ZW5zc29uIDxtYXRoaWFzQHJlc3VsdDQyLmNvbT4KKyAgICAgICAgSW5jbHVkZXMgWmlwNjQgc3VwcG9ydCBieSBNYXRoaWFzIFN2ZW5zc29uIDxtYXRoaWFzQHJlc3VsdDQyLmNvbT4KICAgICAgICAgU2VlIGh0dHA6Ly93d3cud2luaW1hZ2UuY29tL3pMaWJEbGwvdW56aXAuaHRtbAogCiBwYXNjYWwvICAgICBieSBCb2IgRGVsbGFjYSA8Ym9iZGxAeHRyYS5jby5uej4gZXQgYWwuCmRpZmYgLS1naXQgYS9jb250cmliL2FtZDY0L2FtZDY0LW1hdGNoLlMgYi9jb250cmliL2FtZDY0L2FtZDY0LW1hdGNoLlMKaW5kZXggYjNiZjFhYy4uODFkNGExYyAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWQ2NC9hbWQ2NC1tYXRjaC5TCisrKyBiL2NvbnRyaWIvYW1kNjQvYW1kNjQtbWF0Y2guUwpAQCAtNTIsMTQgKzUyLDczIEBACiAjZGVmaW5lIHNhdmVfcjEzICAgICAgICAoNjQtTG9jYWxWYXJzU2l6ZSkoJXJzcCkKICNkZWZpbmUgc2F2ZV9yMTUgICAgICAgICg4MC1Mb2NhbFZhcnNTaXplKSglcnNwKQogCisKKy5nbG9ibAltYXRjaF9pbml0LCBsb25nZXN0X21hdGNoCisKIC8qCiAgKiBPbiBBTUQ2NCB0aGUgZmlyc3QgYXJndW1lbnQgb2YgYSBmdW5jdGlvbiAoaW4gb3VyIGNhc2UgLS0gdGhlIHBvaW50ZXIgdG8KICAqIGRlZmxhdGVfc3RhdGUgc3RydWN0dXJlKSBpcyBwYXNzZWQgaW4gJXJkaSwgaGVuY2Ugb3VyIG9mZnNldHMgYmVsb3cgYXJlCiAgKiBhbGwgb2ZmIG9mIHRoYXQuCiAgKi8KKworLyogeW91IGNhbiBjaGVjayB0aGUgc3RydWN0dXJlIG9mZnNldCBieSBydW5uaW5nCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgImRlZmxhdGUuaCIKKwordm9pZCBwcmludF9kZXBsKCkKK3sKK2RlZmxhdGVfc3RhdGUgZHM7CitkZWZsYXRlX3N0YXRlICpzPSZkczsKK3ByaW50Zigic2l6ZSBwb2ludGVyPSV1XG4iLChpbnQpc2l6ZW9mKHZvaWQqKSk7CisKK3ByaW50ZigiI2RlZmluZSBkc1dTaXplICAgICAgICAgKCUzdSkoJSVyZGkpXG4iLChpbnQpKCgoY2hhciopJihzLT53X3NpemUpKS0oKGNoYXIqKXMpKSk7CitwcmludGYoIiNkZWZpbmUgZHNXTWFzayAgICAgICAgICglM3UpKCUlcmRpKVxuIiwoaW50KSgoKGNoYXIqKSYocy0+d19tYXNrKSktKChjaGFyKilzKSkpOworcHJpbnRmKCIjZGVmaW5lIGRzV2luZG93ICAgICAgICAoJTN1KSglJXJkaSlcbiIsKGludCkoKChjaGFyKikmKHMtPndpbmRvdykpLSgoY2hhciopcykpKTsKK3ByaW50ZigiI2RlZmluZSBkc1ByZXYgICAgICAgICAgKCUzdSkoJSVyZGkpXG4iLChpbnQpKCgoY2hhciopJihzLT5wcmV2KSktKChjaGFyKilzKSkpOworcHJpbnRmKCIjZGVmaW5lIGRzTWF0Y2hMZW4gICAgICAoJTN1KSglJXJkaSlcbiIsKGludCkoKChjaGFyKikmKHMtPm1hdGNoX2xlbmd0aCkpLSgoY2hhciopcykpKTsKK3ByaW50ZigiI2RlZmluZSBkc1ByZXZNYXRjaCAgICAgKCUzdSkoJSVyZGkpXG4iLChpbnQpKCgoY2hhciopJihzLT5wcmV2X21hdGNoKSktKChjaGFyKilzKSkpOworcHJpbnRmKCIjZGVmaW5lIGRzU3RyU3RhcnQgICAgICAoJTN1KSglJXJkaSlcbiIsKGludCkoKChjaGFyKikmKHMtPnN0cnN0YXJ0KSktKChjaGFyKilzKSkpOworcHJpbnRmKCIjZGVmaW5lIGRzTWF0Y2hTdGFydCAgICAoJTN1KSglJXJkaSlcbiIsKGludCkoKChjaGFyKikmKHMtPm1hdGNoX3N0YXJ0KSktKChjaGFyKilzKSkpOworcHJpbnRmKCIjZGVmaW5lIGRzTG9va2FoZWFkICAgICAoJTN1KSglJXJkaSlcbiIsKGludCkoKChjaGFyKikmKHMtPmxvb2thaGVhZCkpLSgoY2hhciopcykpKTsKK3ByaW50ZigiI2RlZmluZSBkc1ByZXZMZW4gICAgICAgKCUzdSkoJSVyZGkpXG4iLChpbnQpKCgoY2hhciopJihzLT5wcmV2X2xlbmd0aCkpLSgoY2hhciopcykpKTsKK3ByaW50ZigiI2RlZmluZSBkc01heENoYWluTGVuICAgKCUzdSkoJSVyZGkpXG4iLChpbnQpKCgoY2hhciopJihzLT5tYXhfY2hhaW5fbGVuZ3RoKSktKChjaGFyKilzKSkpOworcHJpbnRmKCIjZGVmaW5lIGRzR29vZE1hdGNoICAgICAoJTN1KSglJXJkaSlcbiIsKGludCkoKChjaGFyKikmKHMtPmdvb2RfbWF0Y2gpKS0oKGNoYXIqKXMpKSk7CitwcmludGYoIiNkZWZpbmUgZHNOaWNlTWF0Y2ggICAgICglM3UpKCUlcmRpKVxuIiwoaW50KSgoKGNoYXIqKSYocy0+bmljZV9tYXRjaCkpLSgoY2hhciopcykpKTsKK30KKworKi8KKworCisvKgorICB0byBjb21waWxlIGZvciBYQ29kZSAzLjIgb24gTWFjT1NYIHg4Nl82NAorICAtIHJ1biAiZ2NjIC1nIC1jIC1EWENPREVfTUFDX1g2NF9TVFJVQ1RVUkUgYW1kNjQtbWF0Y2guUyIKKyAqLworCisKKyNpZm5kZWYgQ1VSUkVOVF9MSU5YX1hDT0RFX01BQ19YNjRfU1RSVUNUVVJFCisjZGVmaW5lIGRzV1NpemUJCSggNjgpKCVyZGkpCisjZGVmaW5lIGRzV01hc2sJCSggNzYpKCVyZGkpCisjZGVmaW5lIGRzV2luZG93CSggODApKCVyZGkpCisjZGVmaW5lIGRzUHJldgkJKCA5NikoJXJkaSkKKyNkZWZpbmUgZHNNYXRjaExlbgkoMTQ0KSglcmRpKQorI2RlZmluZSBkc1ByZXZNYXRjaAkoMTQ4KSglcmRpKQorI2RlZmluZSBkc1N0clN0YXJ0CSgxNTYpKCVyZGkpCisjZGVmaW5lIGRzTWF0Y2hTdGFydAkoMTYwKSglcmRpKQorI2RlZmluZSBkc0xvb2thaGVhZAkoMTY0KSglcmRpKQorI2RlZmluZSBkc1ByZXZMZW4JKDE2OCkoJXJkaSkKKyNkZWZpbmUgZHNNYXhDaGFpbkxlbgkoMTcyKSglcmRpKQorI2RlZmluZSBkc0dvb2RNYXRjaAkoMTg4KSglcmRpKQorI2RlZmluZSBkc05pY2VNYXRjaAkoMTkyKSglcmRpKQorCisjZWxzZSAKKwogI2lmbmRlZiBTVFJVQ1RfT0ZGU0VUCiAjCWRlZmluZSBTVFJVQ1RfT0ZGU0VUCSgwKQogI2VuZGlmCisKKwogI2RlZmluZSBkc1dTaXplCQkoIDU2ICsgU1RSVUNUX09GRlNFVCkoJXJkaSkKICNkZWZpbmUgZHNXTWFzawkJKCA2NCArIFNUUlVDVF9PRkZTRVQpKCVyZGkpCiAjZGVmaW5lIGRzV2luZG93CSggNzIgKyBTVFJVQ1RfT0ZGU0VUKSglcmRpKQpAQCAtNzQsNyArMTMzLDEwIEBACiAjZGVmaW5lIGRzR29vZE1hdGNoCSgxODAgKyBTVFJVQ1RfT0ZGU0VUKSglcmRpKQogI2RlZmluZSBkc05pY2VNYXRjaAkoMTg0ICsgU1RSVUNUX09GRlNFVCkoJXJkaSkKIAotLmdsb2JsCW1hdGNoX2luaXQsIGxvbmdlc3RfbWF0Y2gKKyNlbmRpZgorCisKKwogCiAudGV4dAogCkBAIC0yMjIsNyArMjg0LDkgQEAKICAqIHN0cmFpZ2h0Zm9yd2FyZCAicmVwIGNtcHNiIiB3b3VsZCBub3QgZHJhc3RpY2FsbHkgZGVncmFkZQogICogcGVyZm9ybWFuY2UgLS0gdW5yb2xsaW5nIGl0LCBmb3IgZXhhbXBsZSwgbWFrZXMgbm8gZGlmZmVyZW5jZS4KICAqLworCiAjdW5kZWYgVVNFX1NTRQkvKiB3b3JrcywgYnV0IGlzIDYtNyUgc2xvd2VyLCB0aGFuIG5vbi1TU0UuLi4gKi8KKwogTG9vcENtcHM6CiAjaWZkZWYgVVNFX1NTRQogCQkvKiBQcmVsb2FkIHRoZSBTU0UgcmVnaXN0ZXJzICovCkBAIC0yNDQsMjkgKzMwOCw1NSBAQAogCQlub3R3CSVheAogCQlic2Z3CSVheCwgJWF4CiAJCWpueglMZWF2ZUxvb3BDbXBzCi0JCWFkZAkkMTYsICVyZHgKKwkJCisJCS8qIHRoaXMgaXMgdGhlIG9ubHkgaXRlcmF0aW9uIG9mIHRoZSBsb29wIHdpdGggYSBwb3NzaWJpbGl0eSBvZiBoYXZpbmcKKwkJICAgaW5jcmVtZW50ZWQgcmR4IGJ5IDB4MTA4IChlYWNoIGxvb3AgaXRlcmF0aW9uIGFkZCAxNio0ID0gMHg0MCAKKwkJICAgYW5kICgweDQwKjQpKzg9MHgxMDggKi8KKwkJYWRkCSQ4LCAlcmR4CisJCWp6IExlbk1heGltdW0KKwkJYWRkCSQ4LCAlcmR4CisKKwkJCiAJCXBtb3Ztc2tiICV4bW0zLCAlcmF4CiAJCW5vdHcJJWF4CiAJCWJzZncJJWF4LCAlYXgKIAkJam56CUxlYXZlTG9vcENtcHMKKwkJCisJCQogCQlhZGQJJDE2LCAlcmR4CisKKwogCQlwbW92bXNrYiAleG1tNSwgJXJheAogCQlub3R3CSVheAogCQlic2Z3CSVheCwgJWF4CiAJCWpueglMZWF2ZUxvb3BDbXBzCisJCQogCQlhZGQJJDE2LCAlcmR4CisKKwogCQlwbW92bXNrYiAleG1tNywgJXJheAogCQlub3R3CSVheAogCQlic2Z3CSVheCwgJWF4CiAJCWpueglMZWF2ZUxvb3BDbXBzCisJCQogCQlhZGQJJDE2LCAlcmR4CisJCQogCQlqbXAJTG9vcENtcHMKIExlYXZlTG9vcENtcHM6CWFkZAklcmF4LCAlcmR4CiAjZWxzZQogCQltb3YJKCV3aW5kb3diZXN0bGVuLCAlcmR4KSwgJXJheAogCQl4b3IJKCVwcmV2LCAlcmR4KSwgJXJheAogCQlqbnoJTGVhdmVMb29wQ21wcwotCQlhZGQJJDgsICVyZHgKKwkJCisJCW1vdgk4KCV3aW5kb3diZXN0bGVuLCAlcmR4KSwgJXJheAorCQl4b3IJOCglcHJldiwgJXJkeCksICVyYXgKKwkJam56CUxlYXZlTG9vcENtcHM4CisKKwkJbW92CTE2KCV3aW5kb3diZXN0bGVuLCAlcmR4KSwgJXJheAorCQl4b3IJMTYoJXByZXYsICVyZHgpLCAlcmF4CisJCWpueglMZWF2ZUxvb3BDbXBzMTYKKwkJCQkKKwkJYWRkCSQyNCwgJXJkeAogCQlqbnoJTG9vcENtcHMKIAkJam1wCUxlbk1heGltdW0KICMJaWYgMApAQCAtMjc0LDEwICszNjQsMTUgQEAKICAqIFRoaXMgdGhyZWUtbGluZXIgaXMgdGFudGFsaXppbmdseSBzaW1wbGUsIGJ1dCBic2YgaXMgYSBzbG93IGluc3RydWN0aW9uLAogICogYW5kIHRoZSBjb21wbGljYXRlZCBhbHRlcm5hdGl2ZSBkb3duIGJlbG93IGlzIHF1aXRlIGEgYml0IGZhc3Rlci4gU2FkLi4uCiAgKi8KKwogTGVhdmVMb29wQ21wczoJYnNmCSVyYXgsICVyYXggLyogZmluZCB0aGUgZmlyc3Qgbm9uLXplcm8gYml0ICovCiAJCXNocmwJJDMsICVlYXggLyogZGl2aWRlIGJ5IDggdG8gZ2V0IHRoZSBieXRlICovCiAJCWFkZAklcmF4LCAlcmR4CiAjCWVsc2UKK0xlYXZlTG9vcENtcHMxNjoKKwkJYWRkCSQ4LCAlcmR4CitMZWF2ZUxvb3BDbXBzODoKKwkJYWRkCSQ4LCAlcmR4CiBMZWF2ZUxvb3BDbXBzOgl0ZXN0bCAgICQweEZGRkZGRkZGLCAlZWF4IC8qIENoZWNrIHRoZSBmaXJzdCA0IGJ5dGVzICovCiAJCWpueiAgICAgQ2hlY2sxNgogCQlhZGQgICAgICQ0LCAlcmR4CmRpZmYgLS1naXQgYS9jb250cmliL2FzbTU4Ni9SRUFETUUuNTg2IGIvY29udHJpYi9hc201ODYvUkVBRE1FLjU4NgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJiNzhmMy4uMDAwMDAwMAotLS0gYS9jb250cmliL2FzbTU4Ni9SRUFETUUuNTg2CisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotVGhpcyBpcyBhIHBhdGNoZWQgdmVyc2lvbiBvZiB6bGliIG1vZGlmaWVkIHRvIHVzZQotUGVudGl1bS1vcHRpbWl6ZWQgYXNzZW1ibHkgY29kZSBpbiB0aGUgZGVmbGF0aW9uIGFsZ29yaXRobS4gVGhlIGZpbGVzCi1jaGFuZ2VkL2FkZGVkIGJ5IHRoaXMgcGF0Y2ggYXJlOgotCi1SRUFETUUuNTg2Ci1tYXRjaC5TCi0KLVRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMgaXMgYSBiaXQgbWFyZ2luYWwsIGFzIHRoZSB0aGUKLXByb2dyYW0ncyBib3R0bGVuZWNrIHNlZW1zIHRvIGJlIG1vc3RseSBMMS1jYWNoZSBjb250ZW50aW9uLCBmb3Igd2hpY2gKLXRoZXJlIGlzIG5vIHJlYWwgd2F5IHRvIHdvcmsgYXJvdW5kIHdpdGhvdXQgcmV3cml0aW5nIHRoZSBiYXNpYwotYWxnb3JpdGhtLiBUaGUgc3BlZWR1cCBvbiBhdmVyYWdlIGlzIGFyb3VuZCA1LTEwJSAod2hpY2ggaXMgZ2VuZXJhbGx5Ci1sZXNzIHRoYW4gdGhlIGFtb3VudCBvZiB2YXJpYW5jZSBiZXR3ZWVuIHN1YnNlcXVlbnQgZXhlY3V0aW9ucykuCi1Ib3dldmVyLCB3aGVuIHVzZWQgYXQgbGV2ZWwgOSBjb21wcmVzc2lvbiwgdGhlIGNhY2hlIGNvbnRlbnRpb24gY2FuCi1kcm9wIGVub3VnaCBmb3IgdGhlIGFzc2VtYmx5IHZlcnNpb24gdG8gYWNoaWV2ZSAxMC0yMCUgc3BlZWR1cCAoYW5kCi1zb21ldGltZXMgbW9yZSwgZGVwZW5kaW5nIG9uIHRoZSBhbW91bnQgb2Ygb3ZlcmFsbCByZWR1bmRhbmN5IGluIHRoZQotZmlsZXMpLiBFdmVuIGhlcmUsIHRob3VnaCwgY2FjaGUgY29udGVudGlvbiBjYW4gc3RpbGwgYmUgdGhlIGxpbWl0aW5nCi1mYWN0b3IsIGRlcGVuZGluZyBvbiB0aGUgbmF0dXJlIG9mIHRoZSBwcm9ncmFtIHVzaW5nIHRoZSB6bGliIGxpYnJhcnkuCi1UaGlzIG1heSBhbHNvIG1lYW4gdGhhdCBiZXR0ZXIgaW1wcm92ZW1lbnRzIHdpbGwgYmUgc2VlbiBvbiBhIFBlbnRpdW0KLXdpdGggTU1YLCB3aGljaCBzdWZmZXJzIG11Y2ggbGVzcyBmcm9tIEwxLWNhY2hlIGNvbnRlbnRpb24sIGJ1dCBJIGhhdmUKLW5vdCB5ZXQgdmVyaWZpZWQgdGhpcy4KLQotTm90ZSB0aGF0IHRoaXMgY29kZSBoYXMgYmVlbiB0YWlsb3JlZCBmb3IgdGhlIFBlbnRpdW0gaW4gcGFydGljdWxhciwKLWFuZCB3aWxsIG5vdCBwZXJmb3JtIHdlbGwgb24gdGhlIFBlbnRpdW0gUHJvIChkdWUgdG8gdGhlIHVzZSBvZiBhCi1wYXJ0aWFsIHJlZ2lzdGVyIGluIHRoZSBpbm5lciBsb29wKS4KLQotSWYgeW91IGFyZSB1c2luZyBhbiBhc3NlbWJsZXIgb3RoZXIgdGhhbiBHTlUgYXMsIHlvdSB3aWxsIGhhdmUgdG8KLXRyYW5zbGF0ZSBtYXRjaC5TIHRvIHVzZSB5b3VyIGFzc2VtYmxlcidzIHN5bnRheC4gKEhhdmUgZnVuLikKLQotQnJpYW4gUmFpdGVyCi1icmVhZGJveEBtdXBwZXRsYWJzLmNvbQotQXByaWwsIDE5OTgKLQotCi1BZGRlZCBmb3IgemxpYiAxLjEuMzoKLQotVGhlIHBhdGNoZXMgY29tZSBmcm9tCi1odHRwOi8vd3d3Lm11cHBldGxhYnMuY29tL35icmVhZGJveC9zb2Z0d2FyZS9hc3NlbWJseS5odG1sCi0KLVRvIGNvbXBpbGUgemxpYiB3aXRoIHRoaXMgYXNtIGZpbGUsIGNvcHkgbWF0Y2guUyB0byB0aGUgemxpYiBkaXJlY3RvcnkKLXRoZW4gZG86Ci0KLUNGTEFHUz0iLU8zIC1EQVNNViIgLi9jb25maWd1cmUKLW1ha2UgT0JKQT1tYXRjaC5vCmRpZmYgLS1naXQgYS9jb250cmliL2FzbTU4Ni9tYXRjaC5TIGIvY29udHJpYi9hc201ODYvbWF0Y2guUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM2OGIzNS4uMDAwMDAwMAotLS0gYS9jb250cmliL2FzbTU4Ni9tYXRjaC5TCisrKyAvZGV2L251bGwKQEAgLTEsMzY0ICswLDAgQEAKLS8qIG1hdGNoLnMgLS0gUGVudGl1bS1vcHRpbWl6ZWQgdmVyc2lvbiBvZiBsb25nZXN0X21hdGNoKCkKLSAqIFdyaXR0ZW4gZm9yIHpsaWIgMS4xLjIKLSAqIENvcHlyaWdodCAoQykgMTk5OCBCcmlhbiBSYWl0ZXIgPGJyZWFkYm94QG11cHBldGxhYnMuY29tPgotICoKLSAqIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSAqLwotCi0jaWZuZGVmIE5PX1VOREVSTElORQotI2RlZmluZQltYXRjaF9pbml0CV9tYXRjaF9pbml0Ci0jZGVmaW5lCWxvbmdlc3RfbWF0Y2gJX2xvbmdlc3RfbWF0Y2gKLSNlbmRpZgotCi0jZGVmaW5lCU1BWF9NQVRDSAkoMjU4KQotI2RlZmluZQlNSU5fTUFUQ0gJKDMpCi0jZGVmaW5lCU1JTl9MT09LQUhFQUQJKE1BWF9NQVRDSCArIE1JTl9NQVRDSCArIDEpCi0jZGVmaW5lCU1BWF9NQVRDSF84CSgoTUFYX01BVENIICsgNykgJiB+NykKLQotLyogc3RhY2sgZnJhbWUgb2Zmc2V0cyAqLwotCi0jZGVmaW5lCXdtYXNrCQkJMAkvKiBsb2NhbCBjb3B5IG9mIHMtPndtYXNrCSovCi0jZGVmaW5lCXdpbmRvdwkJCTQJLyogbG9jYWwgY29weSBvZiBzLT53aW5kb3cJKi8KLSNkZWZpbmUJd2luZG93YmVzdGxlbgkJOAkvKiBzLT53aW5kb3cgKyBiZXN0bGVuCQkqLwotI2RlZmluZQljaGFpbmxlbnNjYW5lbmQJCTEyCS8qIGhpZ2ggd29yZDogY3VycmVudCBjaGFpbiBsZW4JKi8KLQkJCQkJLyogbG93IHdvcmQ6IGxhc3QgYnl0ZXMgc291Z2h0CSovCi0jZGVmaW5lCXNjYW5zdGFydAkJMTYJLyogZmlyc3QgdHdvIGJ5dGVzIG9mIHN0cmluZwkqLwotI2RlZmluZQlzY2FuYWxpZ24JCTIwCS8qIGR3b3JkLW1pc2FsaWdubWVudCBvZiBzdHJpbmcJKi8KLSNkZWZpbmUJbmljZW1hdGNoCQkyNAkvKiBhIGdvb2QgZW5vdWdoIG1hdGNoIHNpemUJKi8KLSNkZWZpbmUJYmVzdGxlbgkJCTI4CS8qIHNpemUgb2YgYmVzdCBtYXRjaCBzbyBmYXIJKi8KLSNkZWZpbmUJc2NhbgkJCTMyCS8qIHB0ciB0byBzdHJpbmcgd2FudGluZyBtYXRjaAkqLwotCi0jZGVmaW5lCUxvY2FsVmFyc1NpemUJCSgzNikKLS8qCXNhdmVkIGVieAkJMzYgKi8KLS8qCXNhdmVkIGVkaQkJNDAgKi8KLS8qCXNhdmVkIGVzaQkJNDQgKi8KLS8qCXNhdmVkIGVicAkJNDggKi8KLS8qCXJldHVybiBhZGRyZXNzCQk1MiAqLwotI2RlZmluZQlkZWZsYXRlc3RhdGUJCTU2CS8qIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMJKi8KLSNkZWZpbmUJY3VybWF0Y2gJCTYwCi0KLS8qIE9mZnNldHMgZm9yIGZpZWxkcyBpbiB0aGUgZGVmbGF0ZV9zdGF0ZSBzdHJ1Y3R1cmUuIFRoZXNlIG51bWJlcnMKLSAqIGFyZSBjYWxjdWxhdGVkIGZyb20gdGhlIGRlZmluaXRpb24gb2YgZGVmbGF0ZV9zdGF0ZSwgd2l0aCB0aGUKLSAqIGFzc3VtcHRpb24gdGhhdCB0aGUgY29tcGlsZXIgd2lsbCBkd29yZC1hbGlnbiB0aGUgZmllbGRzLiAoVGh1cywKLSAqIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uIG9mIGRlZmxhdGVfc3RhdGUgY291bGQgZWFzaWx5IGNhdXNlIHRoaXMKLSAqIHByb2dyYW0gdG8gY3Jhc2ggaG9ycmlibHksIHdpdGhvdXQgc28gbXVjaCBhcyBhIHdhcm5pbmcgYXQKLSAqIGNvbXBpbGUgdGltZS4gU2lnaC4pCi0gKi8KLQotLyogQWxsIHRoZSAremxpYjEyMjJhZGQgb2Zmc2V0cyBhcmUgZHVlIHRvIHRoZSBhZGRpdGlvbiBvZiBmaWVsZHMKLSAqICBpbiB6bGliIGluIHRoZSBkZWZsYXRlX3N0YXRlIHN0cnVjdHVyZSBzaW5jZSB0aGUgYXNtIGNvZGUgd2FzIGZpcnN0IHdyaXR0ZW4KLSAqIChpZiB5b3UgY29tcGlsZSB3aXRoIHpsaWIgMS4wLjQgb3Igb2xkZXIsIHVzZSAiemxpYjEyMjJhZGQgZXF1ICgtNCkiKS4KLSAqIChpZiB5b3UgY29tcGlsZSB3aXRoIHpsaWIgYmV0d2VlbiAxLjAuNSBhbmQgMS4yLjIuMSwgdXNlICJ6bGliMTIyMmFkZCBlcXUgMCIpLgotICogaWYgeW91IGNvbXBpbGUgd2l0aCB6bGliIDEuMi4yLjIgb3IgbGF0ZXIgLCB1c2UgInpsaWIxMjIyYWRkIGVxdSA4IikuCi0gKi8KLQotI2RlZmluZSB6bGliMTIyMmFkZAkJKDgpCi0KLSNkZWZpbmUJZHNXU2l6ZQkJCSgzNit6bGliMTIyMmFkZCkKLSNkZWZpbmUJZHNXTWFzawkJCSg0NCt6bGliMTIyMmFkZCkKLSNkZWZpbmUJZHNXaW5kb3cJCSg0OCt6bGliMTIyMmFkZCkKLSNkZWZpbmUJZHNQcmV2CQkJKDU2K3psaWIxMjIyYWRkKQotI2RlZmluZQlkc01hdGNoTGVuCQkoODgremxpYjEyMjJhZGQpCi0jZGVmaW5lCWRzUHJldk1hdGNoCQkoOTIremxpYjEyMjJhZGQpCi0jZGVmaW5lCWRzU3RyU3RhcnQJCSgxMDAremxpYjEyMjJhZGQpCi0jZGVmaW5lCWRzTWF0Y2hTdGFydAkJKDEwNCt6bGliMTIyMmFkZCkKLSNkZWZpbmUJZHNMb29rYWhlYWQJCSgxMDgremxpYjEyMjJhZGQpCi0jZGVmaW5lCWRzUHJldkxlbgkJKDExMit6bGliMTIyMmFkZCkKLSNkZWZpbmUJZHNNYXhDaGFpbkxlbgkJKDExNit6bGliMTIyMmFkZCkKLSNkZWZpbmUJZHNHb29kTWF0Y2gJCSgxMzIremxpYjEyMjJhZGQpCi0jZGVmaW5lCWRzTmljZU1hdGNoCQkoMTM2K3psaWIxMjIyYWRkKQotCi0KLS5maWxlICJtYXRjaC5TIgotCi0uZ2xvYmwJbWF0Y2hfaW5pdCwgbG9uZ2VzdF9tYXRjaAotCi0udGV4dAotCi0vKiB1SW50IGxvbmdlc3RfbWF0Y2goZGVmbGF0ZV9zdGF0ZSAqZGVmbGF0ZXN0YXRlLCBJUG9zIGN1cm1hdGNoKSAqLwotCi1sb25nZXN0X21hdGNoOgotCi0vKiBTYXZlIHJlZ2lzdGVycyB0aGF0IHRoZSBjb21waWxlciBtYXkgYmUgdXNpbmcsIGFuZCBhZGp1c3QgJWVzcCB0bwkqLwotLyogbWFrZSByb29tIGZvciBvdXIgc3RhY2sgZnJhbWUuCQkJCQkqLwotCi0JCXB1c2hsCSVlYnAKLQkJcHVzaGwJJWVkaQotCQlwdXNobAklZXNpCi0JCXB1c2hsCSVlYngKLQkJc3VibAkkTG9jYWxWYXJzU2l6ZSwgJWVzcAotCi0vKiBSZXRyaWV2ZSB0aGUgZnVuY3Rpb24gYXJndW1lbnRzLiAlZWN4IHdpbGwgaG9sZCBjdXJfbWF0Y2gJCSovCi0vKiB0aHJvdWdob3V0IHRoZSBlbnRpcmUgZnVuY3Rpb24uICVlZHggd2lsbCBob2xkIHRoZSBwb2ludGVyIHRvIHRoZQkqLwotLyogZGVmbGF0ZV9zdGF0ZSBzdHJ1Y3R1cmUgZHVyaW5nIHRoZSBmdW5jdGlvbidzIHNldHVwIChiZWZvcmUJCSovCi0vKiBlbnRlcmluZyB0aGUgbWFpbiBsb29wKS4JCQkJCQkqLwotCi0JCW1vdmwJZGVmbGF0ZXN0YXRlKCVlc3ApLCAlZWR4Ci0JCW1vdmwJY3VybWF0Y2goJWVzcCksICVlY3gKLQotLyogaWYgKCh1SW50KW5pY2VfbWF0Y2ggPiBzLT5sb29rYWhlYWQpIG5pY2VfbWF0Y2ggPSBzLT5sb29rYWhlYWQ7CSovCi0KLQkJbW92bAlkc05pY2VNYXRjaCglZWR4KSwgJWVheAotCQltb3ZsCWRzTG9va2FoZWFkKCVlZHgpLCAlZWJ4Ci0JCWNtcGwJJWVheCwgJWVieAotCQlqbAlMb29rYWhlYWRMZXNzCi0JCW1vdmwJJWVheCwgJWVieAotTG9va2FoZWFkTGVzczoJbW92bAklZWJ4LCBuaWNlbWF0Y2goJWVzcCkKLQotLyogcmVnaXN0ZXIgQnl0ZWYgKnNjYW4gPSBzLT53aW5kb3cgKyBzLT5zdHJzdGFydDsJCQkqLwotCi0JCW1vdmwJZHNXaW5kb3coJWVkeCksICVlc2kKLQkJbW92bAklZXNpLCB3aW5kb3coJWVzcCkKLQkJbW92bAlkc1N0clN0YXJ0KCVlZHgpLCAlZWJwCi0JCWxlYQkoJWVzaSwlZWJwKSwgJWVkaQotCQltb3ZsCSVlZGksIHNjYW4oJWVzcCkKLQotLyogRGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIHRoZSBzY2FuIHB0ciBpcyBvZmYgZnJvbSBiZWluZwkJKi8KLS8qIGR3b3JkLWFsaWduZWQuCQkJCQkJCSovCi0KLQkJbW92bAklZWRpLCAlZWF4Ci0JCW5lZ2wJJWVheAotCQlhbmRsCSQzLCAlZWF4Ci0JCW1vdmwJJWVheCwgc2NhbmFsaWduKCVlc3ApCi0KLS8qIElQb3MgbGltaXQgPSBzLT5zdHJzdGFydCA+IChJUG9zKU1BWF9ESVNUKHMpID8JCQkqLwotLyogICAgIHMtPnN0cnN0YXJ0IC0gKElQb3MpTUFYX0RJU1QocykgOiBOSUw7CQkJCSovCi0KLQkJbW92bAlkc1dTaXplKCVlZHgpLCAlZWF4Ci0JCXN1YmwJJE1JTl9MT09LQUhFQUQsICVlYXgKLQkJc3VibAklZWF4LCAlZWJwCi0JCWpnCUxpbWl0UG9zaXRpdmUKLQkJeG9ybAklZWJwLCAlZWJwCi1MaW1pdFBvc2l0aXZlOgotCi0vKiB1bnNpZ25lZCBjaGFpbl9sZW5ndGggPSBzLT5tYXhfY2hhaW5fbGVuZ3RoOwkJCQkqLwotLyogaWYgKHMtPnByZXZfbGVuZ3RoID49IHMtPmdvb2RfbWF0Y2gpIHsJCQkJKi8KLS8qICAgICBjaGFpbl9sZW5ndGggPj49IDI7CQkJCQkJKi8KLS8qIH0JCQkJCQkJCQkqLwotCi0JCW1vdmwJZHNQcmV2TGVuKCVlZHgpLCAlZWF4Ci0JCW1vdmwJZHNHb29kTWF0Y2goJWVkeCksICVlYngKLQkJY21wbAklZWJ4LCAlZWF4Ci0JCW1vdmwJZHNNYXhDaGFpbkxlbiglZWR4KSwgJWVieAotCQlqbAlMYXN0TWF0Y2hHb29kCi0JCXNocmwJJDIsICVlYngKLUxhc3RNYXRjaEdvb2Q6Ci0KLS8qIGNoYWlubGVuIGlzIGRlY3JlbWVudGVkIG9uY2UgYmVmb3JlaGFuZCBzbyB0aGF0IHRoZSBmdW5jdGlvbiBjYW4JKi8KLS8qIHVzZSB0aGUgc2lnbiBmbGFnIGluc3RlYWQgb2YgdGhlIHplcm8gZmxhZyBmb3IgdGhlIGV4aXQgdGVzdC4JKi8KLS8qIEl0IGlzIHRoZW4gc2hpZnRlZCBpbnRvIHRoZSBoaWdoIHdvcmQsIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHNjYW5lbmQJKi8KLS8qIHNjYW5lbmQgdmFsdWUsIHdoaWNoIGl0IHdpbGwgYWx3YXlzIGFjY29tcGFueS4JCQkqLwotCi0JCWRlY2wJJWVieAotCQlzaGxsCSQxNiwgJWVieAotCi0vKiBpbnQgYmVzdF9sZW4gPSBzLT5wcmV2X2xlbmd0aDsJCQkJCSovCi0KLQkJbW92bAlkc1ByZXZMZW4oJWVkeCksICVlYXgKLQkJbW92bAklZWF4LCBiZXN0bGVuKCVlc3ApCi0KLS8qIFN0b3JlIHRoZSBzdW0gb2Ygcy0+d2luZG93ICsgYmVzdF9sZW4gaW4gJWVzaSBsb2NhbGx5LCBhbmQgaW4gJWVzaS4JKi8KLQotCQlhZGRsCSVlYXgsICVlc2kKLQkJbW92bAklZXNpLCB3aW5kb3diZXN0bGVuKCVlc3ApCi0KLS8qIHJlZ2lzdGVyIHVzaCBzY2FuX3N0YXJ0ID0gKih1c2hmKilzY2FuOwkJCQkqLwotLyogcmVnaXN0ZXIgdXNoIHNjYW5fZW5kICAgPSAqKHVzaGYqKShzY2FuK2Jlc3RfbGVuLTEpOwkJCSovCi0KLQkJbW92dwkoJWVkaSksICVieAotCQltb3Z3CSVieCwgc2NhbnN0YXJ0KCVlc3ApCi0JCW1vdncJLTEoJWVkaSwlZWF4KSwgJWJ4Ci0JCW1vdmwJJWVieCwgY2hhaW5sZW5zY2FuZW5kKCVlc3ApCi0KLS8qIFBvc2YgKnByZXYgPSBzLT5wcmV2OwkJCQkJCSovCi0vKiB1SW50IHdtYXNrID0gcy0+d19tYXNrOwkJCQkJCSovCi0KLQkJbW92bAlkc1ByZXYoJWVkeCksICVlZGkKLQkJbW92bAlkc1dNYXNrKCVlZHgpLCAlZWR4Ci0JCW1vdgklZWR4LCB3bWFzayglZXNwKQotCi0vKiBKdW1wIGludG8gdGhlIG1haW4gbG9vcC4JCQkJCQkqLwotCi0JCWptcAlMb29wRW50cnkKLQotLmJhbGlnbiAxNgotCi0vKiBkbyB7Ci0gKiAgICAgbWF0Y2ggPSBzLT53aW5kb3cgKyBjdXJfbWF0Y2g7Ci0gKiAgICAgaWYgKCoodXNoZiopKG1hdGNoK2Jlc3RfbGVuLTEpICE9IHNjYW5fZW5kIHx8Ci0gKiAgICAgICAgICoodXNoZiopbWF0Y2ggIT0gc2Nhbl9zdGFydCkgY29udGludWU7Ci0gKiAgICAgWy4uLl0KLSAqIH0gd2hpbGUgKChjdXJfbWF0Y2ggPSBwcmV2W2N1cl9tYXRjaCAmIHdtYXNrXSkgPiBsaW1pdAotICogICAgICAgICAgJiYgLS1jaGFpbl9sZW5ndGggIT0gMCk7Ci0gKgotICogSGVyZSBpcyB0aGUgaW5uZXIgbG9vcCBvZiB0aGUgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiB3aWxsIHNwZW5kIHRoZQotICogbWFqb3JpdHkgb2YgaXRzIHRpbWUgaW4gdGhpcyBsb29wLCBhbmQgbWFqb3JpdHkgb2YgdGhhdCB0aW1lIHdpbGwKLSAqIGJlIHNwZW50IGluIHRoZSBmaXJzdCB0ZW4gaW5zdHJ1Y3Rpb25zLgotICoKLSAqIFdpdGhpbiB0aGlzIGxvb3A6Ci0gKiAlZWJ4ID0gY2hhaW5sZW5zY2FuZW5kIC0gaS5lLiwgKChjaGFpbmxlbiA8PCAxNikgfCBzY2FuZW5kKQotICogJWVjeCA9IGN1cm1hdGNoCi0gKiAlZWR4ID0gY3VybWF0Y2ggJiB3bWFzawotICogJWVzaSA9IHdpbmRvd2Jlc3RsZW4gLSBpLmUuLCAod2luZG93ICsgYmVzdGxlbikKLSAqICVlZGkgPSBwcmV2Ci0gKiAlZWJwID0gbGltaXQKLSAqCi0gKiBUd28gb3B0aW1pemF0aW9uIG5vdGVzIG9uIHRoZSBjaG9pY2Ugb2YgaW5zdHJ1Y3Rpb25zOgotICoKLSAqIFRoZSBmaXJzdCBpbnN0cnVjdGlvbiB1c2VzIGEgMTYtYml0IGFkZHJlc3MsIHdoaWNoIGNvc3RzIGFuIGV4dHJhLAotICogdW5wYWlyYWJsZSBjeWNsZS4gVGhpcyBpcyBjaGVhcGVyIHRoYW4gZG9pbmcgYSAzMi1iaXQgYWNjZXNzIGFuZAotICogemVyb2luZyB0aGUgaGlnaCB3b3JkLCBkdWUgdG8gdGhlIDMtY3ljbGUgbWlzYWxpZ25tZW50IHBlbmFsdHkgd2hpY2gKLSAqIHdvdWxkIG9jY3VyIGhhbGYgdGhlIHRpbWUuIFRoaXMgYWxzbyB0dXJucyBvdXQgdG8gYmUgY2hlYXBlciB0aGFuCi0gKiBkb2luZyB0d28gc2VwYXJhdGUgOC1iaXQgYWNjZXNzZXMsIGFzIHRoZSBtZW1vcnkgaXMgc28gcmFyZWx5IGluIHRoZQotICogTDEgY2FjaGUuCi0gKgotICogVGhlIHdpbmRvdyBidWZmZXIsIGhvd2V2ZXIsIGFwcGFyZW50bHkgc3BlbmRzIGEgbG90IG9mIHRpbWUgaW4gdGhlCi0gKiBjYWNoZSwgYW5kIHNvIGl0IGlzIGZhc3RlciB0byByZXRyaWV2ZSB0aGUgd29yZCBhdCB0aGUgZW5kIG9mIHRoZQotICogbWF0Y2ggc3RyaW5nIHdpdGggdHdvIDgtYml0IGxvYWRzLiBUaGUgaW5zdHJ1Y3Rpb25zIHRoYXQgdGVzdCB0aGUKLSAqIHdvcmQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbWF0Y2ggc3RyaW5nLCBob3dldmVyLCBhcmUgZXhlY3V0ZWQKLSAqIG11Y2ggbGVzcyBmcmVxdWVudGx5LCBhbmQgdGhlcmUgaXQgd2FzIGNoZWFwZXIgdG8gdXNlIDE2LWJpdAotICogaW5zdHJ1Y3Rpb25zLCB3aGljaCBhdm9pZGVkIHRoZSBuZWNlc3NpdHkgb2Ygc2F2aW5nIG9mZiBhbmQKLSAqIHN1YnNlcXVlbnRseSByZWxvYWRpbmcgb25lIG9mIHRoZSBvdGhlciByZWdpc3RlcnMuCi0gKi8KLUxvb2t1cExvb3A6Ci0JCQkJCQkJLyogMSBVICYgViAgKi8KLQkJbW92dwkoJWVkaSwlZWR4LDIpLCAlY3gJCS8qIDIgVSBwaXBlICovCi0JCW1vdmwJd21hc2soJWVzcCksICVlZHgJCS8qIDIgViBwaXBlICovCi0JCWNtcGwJJWVicCwgJWVjeAkJCS8qIDMgVSBwaXBlICovCi0JCWpiZQlMZWF2ZU5vdwkJCS8qIDMgViBwaXBlICovCi0JCXN1YmwJJDB4MDAwMTAwMDAsICVlYngJCS8qIDQgVSBwaXBlICovCi0JCWpzCUxlYXZlTm93CQkJLyogNCBWIHBpcGUgKi8KLUxvb3BFbnRyeToJbW92YgktMSglZXNpLCVlY3gpLCAlYWwJCS8qIDUgVSBwaXBlICovCi0JCWFuZGwJJWVjeCwgJWVkeAkJCS8qIDUgViBwaXBlICovCi0JCWNtcGIJJWJsLCAlYWwJCQkvKiA2IFUgcGlwZSAqLwotCQlqbnoJTG9va3VwTG9vcAkJCS8qIDYgViBwaXBlICovCi0JCW1vdmIJKCVlc2ksJWVjeCksICVhaAotCQljbXBiCSViaCwgJWFoCi0JCWpueglMb29rdXBMb29wCi0JCW1vdmwJd2luZG93KCVlc3ApLCAlZWF4Ci0JCW1vdncJKCVlYXgsJWVjeCksICVheAotCQljbXB3CXNjYW5zdGFydCglZXNwKSwgJWF4Ci0JCWpueglMb29rdXBMb29wCi0KLS8qIFN0b3JlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGNoYWlubGVuLgkJCQkJKi8KLQotCQltb3ZsCSVlYngsIGNoYWlubGVuc2NhbmVuZCglZXNwKQotCi0vKiBQb2ludCAlZWRpIHRvIHRoZSBzdHJpbmcgdW5kZXIgc2NydXRpbnksIGFuZCAlZXNpIHRvIHRoZSBzdHJpbmcgd2UJKi8KLS8qIGFyZSBob3BpbmcgdG8gbWF0Y2ggaXQgdXAgd2l0aC4gSW4gYWN0dWFsaXR5LCAlZXNpIGFuZCAlZWRpIGFyZQkqLwotLyogYm90aCBwb2ludGVkIChNQVhfTUFUQ0hfOCAtIHNjYW5hbGlnbikgYnl0ZXMgYWhlYWQsIGFuZCAlZWR4IGlzCSovCi0vKiBpbml0aWFsaXplZCB0byAtKE1BWF9NQVRDSF84IC0gc2NhbmFsaWduKS4JCQkJKi8KLQotCQltb3ZsCXdpbmRvdyglZXNwKSwgJWVzaQotCQltb3ZsCXNjYW4oJWVzcCksICVlZGkKLQkJYWRkbAklZWN4LCAlZXNpCi0JCW1vdmwJc2NhbmFsaWduKCVlc3ApLCAlZWF4Ci0JCW1vdmwJJCgtTUFYX01BVENIXzgpLCAlZWR4Ci0JCWxlYQlNQVhfTUFUQ0hfOCglZWRpLCVlYXgpLCAlZWRpCi0JCWxlYQlNQVhfTUFUQ0hfOCglZXNpLCVlYXgpLCAlZXNpCi0KLS8qIFRlc3QgdGhlIHN0cmluZ3MgZm9yIGVxdWFsaXR5LCA4IGJ5dGVzIGF0IGEgdGltZS4gQXQgdGhlIGVuZCwKLSAqIGFkanVzdCAlZWR4IHNvIHRoYXQgaXQgaXMgb2Zmc2V0IHRvIHRoZSBleGFjdCBieXRlIHRoYXQgbWlzbWF0Y2hlZC4KLSAqCi0gKiBXZSBhbHJlYWR5IGtub3cgYXQgdGhpcyBwb2ludCB0aGF0IHRoZSBmaXJzdCB0aHJlZSBieXRlcyBvZiB0aGUKLSAqIHN0cmluZ3MgbWF0Y2ggZWFjaCBvdGhlciwgYW5kIHRoZXkgY2FuIGJlIHNhZmVseSBwYXNzZWQgb3ZlciBiZWZvcmUKLSAqIHN0YXJ0aW5nIHRoZSBjb21wYXJlIGxvb3AuIFNvIHdoYXQgdGhpcyBjb2RlIGRvZXMgaXMgc2tpcCBvdmVyIDAtMwotICogYnl0ZXMsIGFzIG11Y2ggYXMgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIGR3b3JkLWFsaWduIHRoZSAlZWRpCi0gKiBwb2ludGVyLiAoJWVzaSB3aWxsIHN0aWxsIGJlIG1pc2FsaWduZWQgdGhyZWUgdGltZXMgb3V0IG9mIGZvdXIuKQotICoKLSAqIEl0IHNob3VsZCBiZSBjb25mZXNzZWQgdGhhdCB0aGlzIGxvb3AgdXN1YWxseSBkb2VzIG5vdCByZXByZXNlbnQKLSAqIG11Y2ggb2YgdGhlIHRvdGFsIHJ1bm5pbmcgdGltZS4gUmVwbGFjaW5nIGl0IHdpdGggYSBtb3JlCi0gKiBzdHJhaWdodGZvcndhcmQgInJlcCBjbXBzYiIgd291bGQgbm90IGRyYXN0aWNhbGx5IGRlZ3JhZGUKLSAqIHBlcmZvcm1hbmNlLgotICovCi1Mb29wQ21wczoKLQkJbW92bAkoJWVzaSwlZWR4KSwgJWVheAotCQltb3ZsCSglZWRpLCVlZHgpLCAlZWJ4Ci0JCXhvcmwJJWVieCwgJWVheAotCQlqbnoJTGVhdmVMb29wQ21wcwotCQltb3ZsCTQoJWVzaSwlZWR4KSwgJWVheAotCQltb3ZsCTQoJWVkaSwlZWR4KSwgJWVieAotCQl4b3JsCSVlYngsICVlYXgKLQkJam56CUxlYXZlTG9vcENtcHM0Ci0JCWFkZGwJJDgsICVlZHgKLQkJam56CUxvb3BDbXBzCi0JCWptcAlMZW5NYXhpbXVtCi1MZWF2ZUxvb3BDbXBzNDoJYWRkbAkkNCwgJWVkeAotTGVhdmVMb29wQ21wczoJdGVzdGwJJDB4MDAwMEZGRkYsICVlYXgKLQkJam56CUxlbkxvd2VyCi0JCWFkZGwJJDIsICVlZHgKLQkJc2hybAkkMTYsICVlYXgKLUxlbkxvd2VyOglzdWJiCSQxLCAlYWwKLQkJYWRjbAkkMCwgJWVkeAotCi0vKiBDYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2guIElmIGl0IGlzIGxvbmdlciB0aGFuIE1BWF9NQVRDSCwJKi8KLS8qIHRoZW4gYXV0b21hdGljYWxseSBhY2NlcHQgaXQgYXMgdGhlIGJlc3QgcG9zc2libGUgbWF0Y2ggYW5kIGxlYXZlLgkqLwotCi0JCWxlYQkoJWVkaSwlZWR4KSwgJWVheAotCQltb3ZsCXNjYW4oJWVzcCksICVlZGkKLQkJc3VibAklZWRpLCAlZWF4Ci0JCWNtcGwJJE1BWF9NQVRDSCwgJWVheAotCQlqZ2UJTGVuTWF4aW11bQotCi0vKiBJZiB0aGUgbGVuZ3RoIG9mIHRoZSBtYXRjaCBpcyBub3QgbG9uZ2VyIHRoYW4gdGhlIGJlc3QgbWF0Y2ggd2UJKi8KLS8qIGhhdmUgc28gZmFyLCB0aGVuIGZvcmdldCBpdCBhbmQgcmV0dXJuIHRvIHRoZSBsb29rdXAgbG9vcC4JCSovCi0KLQkJbW92bAlkZWZsYXRlc3RhdGUoJWVzcCksICVlZHgKLQkJbW92bAliZXN0bGVuKCVlc3ApLCAlZWJ4Ci0JCWNtcGwJJWVieCwgJWVheAotCQlqZwlMb25nZXJNYXRjaAotCQltb3ZsCWNoYWlubGVuc2NhbmVuZCglZXNwKSwgJWVieAotCQltb3ZsCXdpbmRvd2Jlc3RsZW4oJWVzcCksICVlc2kKLQkJbW92bAlkc1ByZXYoJWVkeCksICVlZGkKLQkJbW92bAl3bWFzayglZXNwKSwgJWVkeAotCQlhbmRsCSVlY3gsICVlZHgKLQkJam1wCUxvb2t1cExvb3AKLQotLyogICAgICAgICBzLT5tYXRjaF9zdGFydCA9IGN1cl9tYXRjaDsJCQkJCSovCi0vKiAgICAgICAgIGJlc3RfbGVuID0gbGVuOwkJCQkJCSovCi0vKiAgICAgICAgIGlmIChsZW4gPj0gbmljZV9tYXRjaCkgYnJlYWs7CQkJCSovCi0vKiAgICAgICAgIHNjYW5fZW5kID0gKih1c2hmKikoc2NhbitiZXN0X2xlbi0xKTsJCQkqLwotCi1Mb25nZXJNYXRjaDoJbW92bAluaWNlbWF0Y2goJWVzcCksICVlYngKLQkJbW92bAklZWF4LCBiZXN0bGVuKCVlc3ApCi0JCW1vdmwJJWVjeCwgZHNNYXRjaFN0YXJ0KCVlZHgpCi0JCWNtcGwJJWVieCwgJWVheAotCQlqZ2UJTGVhdmVOb3cKLQkJbW92bAl3aW5kb3coJWVzcCksICVlc2kKLQkJYWRkbAklZWF4LCAlZXNpCi0JCW1vdmwJJWVzaSwgd2luZG93YmVzdGxlbiglZXNwKQotCQltb3ZsCWNoYWlubGVuc2NhbmVuZCglZXNwKSwgJWVieAotCQltb3Z3CS0xKCVlZGksJWVheCksICVieAotCQltb3ZsCWRzUHJldiglZWR4KSwgJWVkaQotCQltb3ZsCSVlYngsIGNoYWlubGVuc2NhbmVuZCglZXNwKQotCQltb3ZsCXdtYXNrKCVlc3ApLCAlZWR4Ci0JCWFuZGwJJWVjeCwgJWVkeAotCQlqbXAJTG9va3VwTG9vcAotCi0vKiBBY2NlcHQgdGhlIGN1cnJlbnQgc3RyaW5nLCB3aXRoIHRoZSBtYXhpbXVtIHBvc3NpYmxlIGxlbmd0aC4JCSovCi0KLUxlbk1heGltdW06CW1vdmwJZGVmbGF0ZXN0YXRlKCVlc3ApLCAlZWR4Ci0JCW1vdmwJJE1BWF9NQVRDSCwgYmVzdGxlbiglZXNwKQotCQltb3ZsCSVlY3gsIGRzTWF0Y2hTdGFydCglZWR4KQotCi0vKiBpZiAoKHVJbnQpYmVzdF9sZW4gPD0gcy0+bG9va2FoZWFkKSByZXR1cm4gKHVJbnQpYmVzdF9sZW47CQkqLwotLyogcmV0dXJuIHMtPmxvb2thaGVhZDsJCQkJCQkJKi8KLQotTGVhdmVOb3c6Ci0JCW1vdmwJZGVmbGF0ZXN0YXRlKCVlc3ApLCAlZWR4Ci0JCW1vdmwJYmVzdGxlbiglZXNwKSwgJWVieAotCQltb3ZsCWRzTG9va2FoZWFkKCVlZHgpLCAlZWF4Ci0JCWNtcGwJJWVheCwgJWVieAotCQlqZwlMb29rYWhlYWRSZXQKLQkJbW92bAklZWJ4LCAlZWF4Ci1Mb29rYWhlYWRSZXQ6Ci0KLS8qIFJlc3RvcmUgdGhlIHN0YWNrIGFuZCByZXR1cm4gZnJvbSB3aGVuY2Ugd2UgY2FtZS4JCQkqLwotCi0JCWFkZGwJJExvY2FsVmFyc1NpemUsICVlc3AKLQkJcG9wbAklZWJ4Ci0JCXBvcGwJJWVzaQotCQlwb3BsCSVlZGkKLQkJcG9wbAklZWJwCi1tYXRjaF9pbml0OglyZXQKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYXNtNjg2L1JFQURNRS42ODYgYi9jb250cmliL2FzbTY4Ni9SRUFETUUuNjg2CmluZGV4IGE1OTNmMjMuLmEwYmYzYmUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYXNtNjg2L1JFQURNRS42ODYKKysrIGIvY29udHJpYi9hc202ODYvUkVBRE1FLjY4NgpAQCAtMzIsMyArMzIsMjAgQEAKIAogQ0ZMQUdTPSItTzMgLURBU01WIiAuL2NvbmZpZ3VyZQogbWFrZSBPQkpBPW1hdGNoLm8KKworCitVcGRhdGU6CisKK0kndmUgYmVlbiBpZ25vcmluZyB0aGVzZSBhc3NlbWJseSByb3V0aW5lcyBmb3IgeWVhcnMsIGJlbGlldmluZyB0aGF0CitnY2MncyBnZW5lcmF0ZWQgY29kZSBoYWQgY2F1Z2h0IHVwIHdpdGggaXQgc29tZXRpbWUgYXJvdW5kIGdjYyAyLjk1CithbmQgdGhlIG1ham9yIHJlYXJjaGl0ZWN0aW5nIG9mIHRoZSBQZW50aXVtIDQuIEhvd2V2ZXIsIEkgcmVjZW50bHkKK2xlYXJuZWQgdGhhdCwgZGVzcGl0ZSB3aGF0IEkgYmVsaWV2ZWQsIHRoaXMgY29kZSBzdGlsbCBoYXMgc29tZSBsaWZlCitpbiBpdC4gT24gdGhlIFBlbnRpdW0gNCBhbmQgQU1ENjQgY2hpcHMsIGl0IGNvbnRpbnVlcyB0byBydW4gYWJvdXQgOCUKK2Zhc3RlciB0aGFuIHRoZSBjb2RlIHByb2R1Y2VkIGJ5IGdjYyA0LjEuCisKK0luIGFja25vd2xlZGdlbWVudCBvZiBpdHMgY29udGludWluZyB1c2VmdWxuZXNzLCBJJ3ZlIGFsdGVyZWQgdGhlCitsaWNlbnNlIHRvIG1hdGNoIHRoYXQgb2YgdGhlIHJlc3Qgb2YgemxpYi4gU2hhcmUgYW5kIEVuam95IQorCitCcmlhbiBSYWl0ZXIKK2JyZWFkYm94QG11cHBldGxhYnMuY29tCitBcHJpbCwgMjAwNwpkaWZmIC0tZ2l0IGEvY29udHJpYi9hc202ODYvbWF0Y2guUyBiL2NvbnRyaWIvYXNtNjg2L21hdGNoLlMKaW5kZXggNWMzZTllZS4uMDY4MTdlMSAxMDA2NDQKLS0tIGEvY29udHJpYi9hc202ODYvbWF0Y2guUworKysgYi9jb250cmliL2FzbTY4Ni9tYXRjaC5TCkBAIC0xLDkgKzEsMjMgQEAKLS8qIG1hdGNoLnMgLS0gUGVudGl1bS1Qcm8tb3B0aW1pemVkIHZlcnNpb24gb2YgbG9uZ2VzdF9tYXRjaCgpCi0gKiBXcml0dGVuIGZvciB6bGliIDEuMS4yCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggQnJpYW4gUmFpdGVyIDxicmVhZGJveEBtdXBwZXRsYWJzLmNvbT4KKy8qIG1hdGNoLlMgLS0geDg2IGFzc2VtYmx5IHZlcnNpb24gb2YgdGhlIHpsaWIgbG9uZ2VzdF9tYXRjaCgpIGZ1bmN0aW9uLgorICogT3B0aW1pemVkIGZvciB0aGUgSW50ZWwgNjg2IGNoaXBzIChQUHJvIGFuZCBsYXRlcikuCiAgKgotICogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICogQ29weXJpZ2h0IChDKSAxOTk4LCAyMDA3IEJyaWFuIFJhaXRlciA8YnJlYWRib3hAbXVwcGV0bGFicy5jb20+CisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKKyAqIHdhcnJhbnR5LiAgSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9yIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcworICogYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwKKyAqIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQKKyAqIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKKyAqCisgKiAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdAorICogICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUKKyAqICAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQorICogICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KKyAqIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCisgKiAgICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCisgKiAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgogICovCiAKICNpZm5kZWYgTk9fVU5ERVJMSU5FCmRpZmYgLS1naXQgYS9jb250cmliL2RlbHBoaS9aTGliLnBhcyBiL2NvbnRyaWIvZGVscGhpL1pMaWIucGFzCmluZGV4IDNmMmI4YjQuLjE3OWY5YTkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZGVscGhpL1pMaWIucGFzCisrKyBiL2NvbnRyaWIvZGVscGhpL1pMaWIucGFzCkBAIC0xNTIsNyArMTUyLDcgQEAKICAgY29uc3QgT3V0QnVmOiBQb2ludGVyOyBCdWZTaXplOiBJbnRlZ2VyKTsKIAogY29uc3QKLSAgemxpYl92ZXJzaW9uID0gJzEuMi4zJzsKKyAgemxpYl92ZXJzaW9uID0gJzEuMi40JzsKIAogdHlwZQogICBFWmxpYkVycm9yID0gY2xhc3MoRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZG90emxpYi9Eb3RaTGliL1VuaXRUZXN0cy5jcyBiL2NvbnRyaWIvZG90emxpYi9Eb3RaTGliL1VuaXRUZXN0cy5jcwppbmRleCBlYjc1MWJiLi40MmM0NTg4IDEwMDY0NAotLS0gYS9jb250cmliL2RvdHpsaWIvRG90WkxpYi9Vbml0VGVzdHMuY3MKKysrIGIvY29udHJpYi9kb3R6bGliL0RvdFpMaWIvVW5pdFRlc3RzLmNzCkBAIC0xNTYsNyArMTU2LDcgQEAKICAgICAgICAgcHVibGljIHZvaWQgSW5mb19WZXJzaW9uKCkNCiAgICAgICAgIHsNCiAgICAgICAgICAgICBJbmZvIGluZm8gPSBuZXcgSW5mbygpOw0KLSAgICAgICAgICAgIEFzc2VydC5BcmVFcXVhbCgiMS4yLjMiLCBJbmZvLlZlcnNpb24pOw0KKyAgICAgICAgICAgIEFzc2VydC5BcmVFcXVhbCgiMS4yLjQiLCBJbmZvLlZlcnNpb24pOw0KICAgICAgICAgICAgIEFzc2VydC5BcmVFcXVhbCgzMiwgaW5mby5TaXplT2ZVSW50KTsNCiAgICAgICAgICAgICBBc3NlcnQuQXJlRXF1YWwoMzIsIGluZm8uU2l6ZU9mVUxvbmcpOw0KICAgICAgICAgICAgIEFzc2VydC5BcmVFcXVhbCgzMiwgaW5mby5TaXplT2ZQb2ludGVyKTsNCmRpZmYgLS1naXQgYS9jb250cmliL2djY19ndm1hdDY0L2d2bWF0NjQuUyBiL2NvbnRyaWIvZ2NjX2d2bWF0NjQvZ3ZtYXQ2NC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkODU4ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2djY19ndm1hdDY0L2d2bWF0NjQuUwpAQCAtMCwwICsxLDU3NCBAQAorLyoNCis7dUludCBsb25nZXN0X21hdGNoX3g2NCgNCis7ICAgIGRlZmxhdGVfc3RhdGUgKnMsDQorOyAgICBJUG9zIGN1cl9tYXRjaCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjdXJyZW50IG1hdGNoIA0KKw0KKzsgZ3ZtYXQ2NC5TIC0tIEFzbSBwb3J0aW9uIG9mIHRoZSBvcHRpbWl6ZWQgbG9uZ2VzdF9tYXRjaCBmb3IgMzIgYml0cyB4ODZfNjQNCis7ICAoQU1ENjQgb24gQXRobG9uIDY0LCBPcHRlcm9uLCBQaGVub20NCis7ICAgICBhbmQgSW50ZWwgRU02NFQgb24gUGVudGl1bSA0IHdpdGggRU02NFQsIFBlbnRpdW0gRCwgQ29yZSAyIER1bywgQ29yZSBJNS9JNykNCis7IHRoaXMgZmlsZSBpcyB0cmFuc2xhdGlvbiBmcm9tIGd2bWF0NjQuYXNtIHRvIEdDQyA0LnggKGZvciBMaW51eCwgTWFjIFhDb2RlKQ0KKzsgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTAgSmVhbi1sb3VwIEdhaWxseSwgQnJpYW4gUmFpdGVyIGFuZCBHaWxsZXMgVm9sbGFudC4NCis7DQorOyBGaWxlIHdyaXR0ZW4gYnkgR2lsbGVzIFZvbGxhbnQsIGJ5IGNvbnZlcnRpbmcgdG8gYXNzZW1ibHkgdGhlIGxvbmdlc3RfbWF0Y2gNCis7ICBmcm9tIEplYW4tbG91cCBHYWlsbHkgaW4gZGVmbGF0ZS5jIG9mIHpMaWIgYW5kIGluZm9aaXAgemlwLg0KKzsgIGFuZCBieSB0YWtpbmcgaW5zcGlyYXRpb24gb24gYXNtNjg2IHdpdGggbWFzbSwgb3B0aW1pc2VkIGFzc2VtYmx5IGNvZGUNCis7ICAgICAgICBmcm9tIEJyaWFuIFJhaXRlciwgd3JpdHRlbiAxOTk4DQorOw0KKzsgIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkDQorOyAgd2FycmFudHkuICBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcw0KKzsgIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuDQorOw0KKzsgIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLA0KKzsgIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQNCis7ICBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6DQorOw0KKzsgIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90DQorOyAgICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUNCis7ICAgICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUNCis7ICAgICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLg0KKzsgIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlDQorOyAgICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlDQorOyAgMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi4NCis7DQorOyAgICAgICAgIGh0dHA6Ly93d3cuemxpYi5uZXQNCis7ICAgICAgICAgaHR0cDovL3d3dy53aW5pbWFnZS5jb20vekxpYkRsbA0KKzsgICAgICAgICBodHRwOi8vd3d3Lm11cHBldGxhYnMuY29tL35icmVhZGJveC9zb2Z0d2FyZS9hc3NlbWJseS5odG1sDQorOw0KKzsgdG8gY29tcGlsZSB0aGlzIGZpbGUgZm9yIHpMaWIsIEkgdXNlIG9wdGlvbjoNCis7ICAgZ2NjIC1jIC1hcmNoIHg4Nl82NCBndm1hdDY0LlMNCisNCisNCis7dUludCBsb25nZXN0X21hdGNoKHMsIGN1cl9tYXRjaCkNCis7ICAgIGRlZmxhdGVfc3RhdGUgKnM7DQorOyAgICBJUG9zIGN1cl9tYXRjaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgbWF0Y2ggLw0KKzsNCis7IHdpdGggWENvZGUgZm9yIE1hYywgSSBoYWQgc3RyYW5nZSBlcnJvciB3aXRoIHNvbWUganVtcCBvbiBpbnRlbCBzeW50YXgNCis7IHRoaXMgaXMgd2h5IEJFRk9SRV9KTVAgYW5kIEFGVEVSX0pNUCBhcmUgdXNlZA0KKyAqLw0KKw0KKw0KKyNkZWZpbmUgQkVGT1JFX0pNUCAuYXR0X3N5bnRheA0KKyNkZWZpbmUgQUZURVJfSk1QIC5pbnRlbF9zeW50YXggbm9wcmVmaXgNCisNCisjaWZuZGVmIE5PX1VOREVSTElORQ0KKyMJZGVmaW5lCW1hdGNoX2luaXQJX21hdGNoX2luaXQNCisjCWRlZmluZQlsb25nZXN0X21hdGNoCV9sb25nZXN0X21hdGNoDQorI2VuZGlmDQorDQorLmludGVsX3N5bnRheCBub3ByZWZpeA0KKw0KKy5nbG9ibAltYXRjaF9pbml0LCBsb25nZXN0X21hdGNoDQorLnRleHQNCitsb25nZXN0X21hdGNoOg0KKw0KKw0KKw0KKyNkZWZpbmUgTG9jYWxWYXJzU2l6ZSA5Ng0KKy8qDQorOyByZWdpc3RlciB1c2VkIDogcmF4LHJieCxyY3gscmR4LHJzaSxyZGkscjgscjkscjEwLHIxMSxyMTINCis7IGZyZWUgcmVnaXN0ZXIgOiAgcjE0LHIxNQ0KKzsgcmVnaXN0ZXIgY2FuIGJlIHNhdmVkIDogcnNwDQorKi8NCisNCisjZGVmaW5lIGNoYWlubGVud21hc2sgICAgIChyc3AgKyA4IC0gTG9jYWxWYXJzU2l6ZSkNCisjZGVmaW5lIG5pY2VtYXRjaCAgICAgICAgIChyc3AgKyAxNiAtIExvY2FsVmFyc1NpemUpDQorDQorI2RlZmluZSBzYXZlX3JkaSAgICAgICAgKHJzcCArIDI0IC0gTG9jYWxWYXJzU2l6ZSkNCisjZGVmaW5lIHNhdmVfcnNpICAgICAgICAocnNwICsgMzIgLSBMb2NhbFZhcnNTaXplKQ0KKyNkZWZpbmUgc2F2ZV9yYnggICAgICAgIChyc3AgKyA0MCAtIExvY2FsVmFyc1NpemUpDQorI2RlZmluZSBzYXZlX3JicCAgICAgICAgKHJzcCArIDQ4IC0gTG9jYWxWYXJzU2l6ZSkNCisjZGVmaW5lIHNhdmVfcjEyICAgICAgICAocnNwICsgNTYgLSBMb2NhbFZhcnNTaXplKQ0KKyNkZWZpbmUgc2F2ZV9yMTMgICAgICAgIChyc3AgKyA2NCAtIExvY2FsVmFyc1NpemUpDQorI2RlZmluZSBzYXZlX3IxNCAgICAgICAgKHJzcCArIDcyIC0gTG9jYWxWYXJzU2l6ZSkNCisjZGVmaW5lIHNhdmVfcjE1ICAgICAgICAocnNwICsgODAgLSBMb2NhbFZhcnNTaXplKQ0KKw0KKw0KKy8qDQorOyAgYWxsIHRoZSArNCBvZmZzZXRzIGFyZSBkdWUgdG8gdGhlIGFkZGl0aW9uIG9mIHBlbmRpbmdfYnVmX3NpemUgKGluIHpsaWINCis7ICBpbiB0aGUgZGVmbGF0ZV9zdGF0ZSBzdHJ1Y3R1cmUgc2luY2UgdGhlIGFzbSBjb2RlIHdhcyBmaXJzdCB3cml0dGVuDQorOyAgKGlmIHlvdSBjb21waWxlIHdpdGggemxpYiAxLjAuNCBvciBvbGRlciwgcmVtb3ZlIHRoZSArNCkuDQorOyAgTm90ZSA6IHRoZXNlIHZhbHVlIGFyZSBnb29kIHdpdGggYSA4IGJ5dGVzIGJvdW5kYXJ5IHBhY2sgc3RydWN0dXJlDQorKi8NCisNCisjZGVmaW5lICAgIE1BWF9NQVRDSCAgICAgICAgICAgICAgMjU4DQorI2RlZmluZSAgICBNSU5fTUFUQ0ggICAgICAgICAgICAgIDMNCisjZGVmaW5lICAgIE1JTl9MT09LQUhFQUQgICAgICAgICAgKE1BWF9NQVRDSCtNSU5fTUFUQ0grMSkNCisNCisvKg0KKzs7OyBPZmZzZXRzIGZvciBmaWVsZHMgaW4gdGhlIGRlZmxhdGVfc3RhdGUgc3RydWN0dXJlLiBUaGVzZSBudW1iZXJzDQorOzs7IGFyZSBjYWxjdWxhdGVkIGZyb20gdGhlIGRlZmluaXRpb24gb2YgZGVmbGF0ZV9zdGF0ZSwgd2l0aCB0aGUNCis7OzsgYXNzdW1wdGlvbiB0aGF0IHRoZSBjb21waWxlciB3aWxsIGR3b3JkLWFsaWduIHRoZSBmaWVsZHMuIChUaHVzLA0KKzs7OyBjaGFuZ2luZyB0aGUgZGVmaW5pdGlvbiBvZiBkZWZsYXRlX3N0YXRlIGNvdWxkIGVhc2lseSBjYXVzZSB0aGlzDQorOzs7IHByb2dyYW0gdG8gY3Jhc2ggaG9ycmlibHksIHdpdGhvdXQgc28gbXVjaCBhcyBhIHdhcm5pbmcgYXQNCis7OzsgY29tcGlsZSB0aW1lLiBTaWdoLikNCisNCis7ICBhbGwgdGhlICt6bGliMTIyMmFkZCBvZmZzZXRzIGFyZSBkdWUgdG8gdGhlIGFkZGl0aW9uIG9mIGZpZWxkcw0KKzsgIGluIHpsaWIgaW4gdGhlIGRlZmxhdGVfc3RhdGUgc3RydWN0dXJlIHNpbmNlIHRoZSBhc20gY29kZSB3YXMgZmlyc3Qgd3JpdHRlbg0KKzsgIChpZiB5b3UgY29tcGlsZSB3aXRoIHpsaWIgMS4wLjQgb3Igb2xkZXIsIHVzZSAiemxpYjEyMjJhZGQgZXF1ICgtNCkiKS4NCis7ICAoaWYgeW91IGNvbXBpbGUgd2l0aCB6bGliIGJldHdlZW4gMS4wLjUgYW5kIDEuMi4yLjEsIHVzZSAiemxpYjEyMjJhZGQgZXF1IDAiKS4NCis7ICBpZiB5b3UgY29tcGlsZSB3aXRoIHpsaWIgMS4yLjIuMiBvciBsYXRlciAsIHVzZSAiemxpYjEyMjJhZGQgZXF1IDgiKS4NCisqLw0KKw0KKw0KKw0KKy8qIHlvdSBjYW4gY2hlY2sgdGhlIHN0cnVjdHVyZSBvZmZzZXQgYnkgcnVubmluZw0KKw0KKyNpbmNsdWRlIDxzdGRsaWIuaD4NCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSAiZGVmbGF0ZS5oIg0KKw0KK3ZvaWQgcHJpbnRfZGVwbCgpDQorew0KK2RlZmxhdGVfc3RhdGUgZHM7DQorZGVmbGF0ZV9zdGF0ZSAqcz0mZHM7DQorcHJpbnRmKCJzaXplIHBvaW50ZXI9JXVcbiIsKGludClzaXplb2Yodm9pZCopKTsNCisNCitwcmludGYoIiNkZWZpbmUgZHNXU2l6ZSAgICAgICAgICV1XG4iLChpbnQpKCgoY2hhciopJihzLT53X3NpemUpKS0oKGNoYXIqKXMpKSk7DQorcHJpbnRmKCIjZGVmaW5lIGRzV01hc2sgICAgICAgICAldVxuIiwoaW50KSgoKGNoYXIqKSYocy0+d19tYXNrKSktKChjaGFyKilzKSkpOw0KK3ByaW50ZigiI2RlZmluZSBkc1dpbmRvdyAgICAgICAgJXVcbiIsKGludCkoKChjaGFyKikmKHMtPndpbmRvdykpLSgoY2hhciopcykpKTsNCitwcmludGYoIiNkZWZpbmUgZHNQcmV2ICAgICAgICAgICV1XG4iLChpbnQpKCgoY2hhciopJihzLT5wcmV2KSktKChjaGFyKilzKSkpOw0KK3ByaW50ZigiI2RlZmluZSBkc01hdGNoTGVuICAgICAgJXVcbiIsKGludCkoKChjaGFyKikmKHMtPm1hdGNoX2xlbmd0aCkpLSgoY2hhciopcykpKTsNCitwcmludGYoIiNkZWZpbmUgZHNQcmV2TWF0Y2ggICAgICV1XG4iLChpbnQpKCgoY2hhciopJihzLT5wcmV2X21hdGNoKSktKChjaGFyKilzKSkpOw0KK3ByaW50ZigiI2RlZmluZSBkc1N0clN0YXJ0ICAgICAgJXVcbiIsKGludCkoKChjaGFyKikmKHMtPnN0cnN0YXJ0KSktKChjaGFyKilzKSkpOw0KK3ByaW50ZigiI2RlZmluZSBkc01hdGNoU3RhcnQgICAgJXVcbiIsKGludCkoKChjaGFyKikmKHMtPm1hdGNoX3N0YXJ0KSktKChjaGFyKilzKSkpOw0KK3ByaW50ZigiI2RlZmluZSBkc0xvb2thaGVhZCAgICAgJXVcbiIsKGludCkoKChjaGFyKikmKHMtPmxvb2thaGVhZCkpLSgoY2hhciopcykpKTsNCitwcmludGYoIiNkZWZpbmUgZHNQcmV2TGVuICAgICAgICV1XG4iLChpbnQpKCgoY2hhciopJihzLT5wcmV2X2xlbmd0aCkpLSgoY2hhciopcykpKTsNCitwcmludGYoIiNkZWZpbmUgZHNNYXhDaGFpbkxlbiAgICV1XG4iLChpbnQpKCgoY2hhciopJihzLT5tYXhfY2hhaW5fbGVuZ3RoKSktKChjaGFyKilzKSkpOw0KK3ByaW50ZigiI2RlZmluZSBkc0dvb2RNYXRjaCAgICAgJXVcbiIsKGludCkoKChjaGFyKikmKHMtPmdvb2RfbWF0Y2gpKS0oKGNoYXIqKXMpKSk7DQorcHJpbnRmKCIjZGVmaW5lIGRzTmljZU1hdGNoICAgICAldVxuIiwoaW50KSgoKGNoYXIqKSYocy0+bmljZV9tYXRjaCkpLSgoY2hhciopcykpKTsNCit9DQorKi8NCisNCisjZGVmaW5lIGRzV1NpemUgICAgICAgICAgNjgNCisjZGVmaW5lIGRzV01hc2sgICAgICAgICAgNzYNCisjZGVmaW5lIGRzV2luZG93ICAgICAgICAgODANCisjZGVmaW5lIGRzUHJldiAgICAgICAgICAgOTYNCisjZGVmaW5lIGRzTWF0Y2hMZW4gICAgICAgMTQ0DQorI2RlZmluZSBkc1ByZXZNYXRjaCAgICAgIDE0OA0KKyNkZWZpbmUgZHNTdHJTdGFydCAgICAgICAxNTYNCisjZGVmaW5lIGRzTWF0Y2hTdGFydCAgICAgMTYwDQorI2RlZmluZSBkc0xvb2thaGVhZCAgICAgIDE2NA0KKyNkZWZpbmUgZHNQcmV2TGVuICAgICAgICAxNjgNCisjZGVmaW5lIGRzTWF4Q2hhaW5MZW4gICAgMTcyDQorI2RlZmluZSBkc0dvb2RNYXRjaCAgICAgIDE4OA0KKyNkZWZpbmUgZHNOaWNlTWF0Y2ggICAgICAxOTINCisNCisjZGVmaW5lIHdpbmRvd19zaXplICAgICAgWyByY3ggKyBkc1dTaXplXQ0KKyNkZWZpbmUgV01hc2sgICAgICAgICAgICBbIHJjeCArIGRzV01hc2tdDQorI2RlZmluZSB3aW5kb3dfYWQgICAgICAgIFsgcmN4ICsgZHNXaW5kb3ddDQorI2RlZmluZSBwcmV2X2FkICAgICAgICAgIFsgcmN4ICsgZHNQcmV2XQ0KKyNkZWZpbmUgc3Ryc3RhcnQgICAgICAgICBbIHJjeCArIGRzU3RyU3RhcnRdDQorI2RlZmluZSBtYXRjaF9zdGFydCAgICAgIFsgcmN4ICsgZHNNYXRjaFN0YXJ0XQ0KKyNkZWZpbmUgTG9va2FoZWFkICAgICAgICBbIHJjeCArIGRzTG9va2FoZWFkXSAvLzsgMGZmZmZmZmZmaCBvbiBpbmZvemlwDQorI2RlZmluZSBwcmV2X2xlbmd0aCAgICAgIFsgcmN4ICsgZHNQcmV2TGVuXQ0KKyNkZWZpbmUgbWF4X2NoYWluX2xlbmd0aCBbIHJjeCArIGRzTWF4Q2hhaW5MZW5dDQorI2RlZmluZSBnb29kX21hdGNoICAgICAgIFsgcmN4ICsgZHNHb29kTWF0Y2hdDQorI2RlZmluZSBuaWNlX21hdGNoICAgICAgIFsgcmN4ICsgZHNOaWNlTWF0Y2hdDQorDQorLyoNCis7IHdpbmRvd3M6DQorOyBwYXJhbWV0ZXIgMSBpbiByY3goZGVmbGF0ZSBzdGF0ZSBzKSwgcGFyYW0gMiBpbiByZHggKGN1ciBtYXRjaCkNCisNCis7IHNlZSBodHRwOi8vd2VibG9ncy5hc3AubmV0L29sZG5ld3RoaW5nL2FyY2hpdmUvMjAwNC8wMS8xNC81ODU3OS5hc3B4IGFuZA0KKzsgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9saWJyYXJ5L2VuLXVzL2ttYXJjaC9oaC9rbWFyY2gvNjRiaXRBTURfOGU5NTFkZDItZWU3Ny00NzI4LTg3MDItNTVjZTRiNWRkMjRhLnhtbC5hc3ANCis7DQorOyBBbGwgcmVnaXN0ZXJzIG11c3QgYmUgcHJlc2VydmVkIGFjcm9zcyB0aGUgY2FsbCwgZXhjZXB0IGZvcg0KKzsgICByYXgsIHJjeCwgcmR4LCByOCwgcjksIHIxMCwgYW5kIHIxMSwgd2hpY2ggYXJlIHNjcmF0Y2guDQorDQorOw0KKzsgZ2NjIG9uIG1hY29zeC1saW51eDoNCis7IHNlZSBodHRwOi8vd3d3Lng4Ni02NC5vcmcvZG9jdW1lbnRhdGlvbi9hYmktMC45OS5wZGYNCis7IHBhcmFtIDEgaW4gcmRpLCBwYXJhbSAyIGluIHJzaQ0KKzsgcmJ4LCByc3AsIHJicCwgcjEyIHRvIHIxNSBtdXN0IGJlIHByZXNlcnZlZA0KKw0KKzs7OyBTYXZlIHJlZ2lzdGVycyB0aGF0IHRoZSBjb21waWxlciBtYXkgYmUgdXNpbmcsIGFuZCBhZGp1c3QgZXNwIHRvDQorOzs7IG1ha2Ugcm9vbSBmb3Igb3VyIHN0YWNrIGZyYW1lLg0KKw0KKw0KKzs7OyBSZXRyaWV2ZSB0aGUgZnVuY3Rpb24gYXJndW1lbnRzLiByOGQgd2lsbCBob2xkIGN1cl9tYXRjaA0KKzs7OyB0aHJvdWdob3V0IHRoZSBlbnRpcmUgZnVuY3Rpb24uIGVkeCB3aWxsIGhvbGQgdGhlIHBvaW50ZXIgdG8gdGhlDQorOzs7IGRlZmxhdGVfc3RhdGUgc3RydWN0dXJlIGR1cmluZyB0aGUgZnVuY3Rpb24ncyBzZXR1cCAoYmVmb3JlDQorOzs7IGVudGVyaW5nIHRoZSBtYWluIGxvb3AuDQorDQorOyBtczogcGFyYW1ldGVyIDEgaW4gcmN4IChkZWZsYXRlX3N0YXRlKiBzKSwgcGFyYW0gMiBpbiBlZHggLT4gcjggKGN1ciBtYXRjaCkNCis7IG1hYzogcGFyYW0gMSBpbiByZGksIHBhcmFtIDIgcnNpDQorOyB0aGlzIGNsZWFyIGhpZ2ggMzIgYml0cyBvZiByOCwgd2hpY2ggY2FuIGJlIGdhcmJhZ2UgaW4gYm90aCByOCBhbmQgcmR4DQorKi8NCisgICAgICAgIG1vdiBbc2F2ZV9yYnhdLHJieA0KKyAgICAgICAgbW92IFtzYXZlX3JicF0scmJwDQorDQorDQorICAgICAgICBtb3YgcmN4LHJkaQ0KKw0KKyAgICAgICAgbW92IHI4ZCxlc2kNCisNCisNCisgICAgICAgIG1vdiBbc2F2ZV9yMTJdLHIxMg0KKyAgICAgICAgbW92IFtzYXZlX3IxM10scjEzDQorICAgICAgICBtb3YgW3NhdmVfcjE0XSxyMTQNCisgICAgICAgIG1vdiBbc2F2ZV9yMTVdLHIxNQ0KKw0KKw0KKy8vOzs7IHVJbnQgd21hc2sgPSBzLT53X21hc2s7DQorLy87OzsgdW5zaWduZWQgY2hhaW5fbGVuZ3RoID0gcy0+bWF4X2NoYWluX2xlbmd0aDsNCisvLzs7OyBpZiAocy0+cHJldl9sZW5ndGggPj0gcy0+Z29vZF9tYXRjaCkgew0KKy8vOzs7ICAgICBjaGFpbl9sZW5ndGggPj49IDI7DQorLy87OzsgfQ0KKw0KKw0KKyAgICAgICAgbW92IGVkaSwgcHJldl9sZW5ndGgNCisgICAgICAgIG1vdiBlc2ksIGdvb2RfbWF0Y2gNCisgICAgICAgIG1vdiBlYXgsIFdNYXNrDQorICAgICAgICBtb3YgZWJ4LCBtYXhfY2hhaW5fbGVuZ3RoDQorICAgICAgICBjbXAgZWRpLCBlc2kNCisgICAgICAgIGpsICBMYXN0TWF0Y2hHb29kDQorICAgICAgICBzaHIgZWJ4LCAyDQorTGFzdE1hdGNoR29vZDoNCisNCisvLzs7OyBjaGFpbmxlbiBpcyBkZWNyZW1lbnRlZCBvbmNlIGJlZm9yZWhhbmQgc28gdGhhdCB0aGUgZnVuY3Rpb24gY2FuDQorLy87OzsgdXNlIHRoZSBzaWduIGZsYWcgaW5zdGVhZCBvZiB0aGUgemVybyBmbGFnIGZvciB0aGUgZXhpdCB0ZXN0Lg0KKy8vOzs7IEl0IGlzIHRoZW4gc2hpZnRlZCBpbnRvIHRoZSBoaWdoIHdvcmQsIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHdtYXNrDQorLy87OzsgdmFsdWUsIHdoaWNoIGl0IHdpbGwgYWx3YXlzIGFjY29tcGFueS4NCisNCisgICAgICAgIGRlYyBlYngNCisgICAgICAgIHNobCBlYngsIDE2DQorICAgICAgICBvciAgZWJ4LCBlYXgNCisNCisvLzs7OyBvbiB6bGliIG9ubHkNCisvLzs7OyBpZiAoKHVJbnQpbmljZV9tYXRjaCA+IHMtPmxvb2thaGVhZCkgbmljZV9tYXRjaCA9IHMtPmxvb2thaGVhZDsNCisNCisNCisNCisgICAgICAgIG1vdiBlYXgsIG5pY2VfbWF0Y2gNCisgICAgICAgIG1vdiBbY2hhaW5sZW53bWFza10sIGVieA0KKyAgICAgICAgbW92IHIxMGQsIExvb2thaGVhZA0KKyAgICAgICAgY21wIHIxMGQsIGVheA0KKyAgICAgICAgY21vdm5sIHIxMGQsIGVheA0KKyAgICAgICAgbW92IFtuaWNlbWF0Y2hdLHIxMGQNCisNCisNCisNCisvLzs7OyByZWdpc3RlciBCeXRlZiAqc2NhbiA9IHMtPndpbmRvdyArIHMtPnN0cnN0YXJ0Ow0KKyAgICAgICAgbW92IHIxMCwgd2luZG93X2FkDQorICAgICAgICBtb3YgZWJwLCBzdHJzdGFydA0KKyAgICAgICAgbGVhIHIxMywgW3IxMCArIHJicF0NCisNCisvLzs7OyBEZXRlcm1pbmUgaG93IG1hbnkgYnl0ZXMgdGhlIHNjYW4gcHRyIGlzIG9mZiBmcm9tIGJlaW5nDQorLy87OzsgZHdvcmQtYWxpZ25lZC4NCisNCisgICAgICAgICBtb3YgcjkscjEzDQorICAgICAgICAgbmVnIHIxMw0KKyAgICAgICAgIGFuZCByMTMsMw0KKw0KKy8vOzs7IElQb3MgbGltaXQgPSBzLT5zdHJzdGFydCA+IChJUG9zKU1BWF9ESVNUKHMpID8NCisvLzs7OyAgICAgcy0+c3Ryc3RhcnQgLSAoSVBvcylNQVhfRElTVChzKSA6IE5JTDsNCisNCisNCisgICAgICAgIG1vdiBlYXgsIHdpbmRvd19zaXplDQorICAgICAgICBzdWIgZWF4LCBNSU5fTE9PS0FIRUFEDQorDQorDQorICAgICAgICB4b3IgZWRpLGVkaQ0KKyAgICAgICAgc3ViIGVicCwgZWF4DQorDQorICAgICAgICBtb3YgcjExZCwgcHJldl9sZW5ndGgNCisNCisgICAgICAgIGNtb3ZuZyBlYnAsZWRpDQorDQorLy87OzsgaW50IGJlc3RfbGVuID0gcy0+cHJldl9sZW5ndGg7DQorDQorDQorLy87OzsgU3RvcmUgdGhlIHN1bSBvZiBzLT53aW5kb3cgKyBiZXN0X2xlbiBpbiBlc2kgbG9jYWxseSwgYW5kIGluIGVzaS4NCisNCisgICAgICAgbGVhICByc2ksW3IxMCtyMTFdDQorDQorLy87OzsgcmVnaXN0ZXIgdXNoIHNjYW5fc3RhcnQgPSAqKHVzaGYqKXNjYW47DQorLy87OzsgcmVnaXN0ZXIgdXNoIHNjYW5fZW5kICAgPSAqKHVzaGYqKShzY2FuK2Jlc3RfbGVuLTEpOw0KKy8vOzs7IFBvc2YgKnByZXYgPSBzLT5wcmV2Ow0KKw0KKyAgICAgICAgbW92enggcjEyZCx3b3JkIHB0ciBbcjldDQorICAgICAgICBtb3Z6eCBlYngsIHdvcmQgcHRyIFtyOSArIHIxMSAtIDFdDQorDQorICAgICAgICBtb3YgcmRpLCBwcmV2X2FkDQorDQorLy87OzsgSnVtcCBpbnRvIHRoZSBtYWluIGxvb3AuDQorDQorICAgICAgICBtb3YgZWR4LCBbY2hhaW5sZW53bWFza10NCisNCisgICAgICAgIGNtcCBieCx3b3JkIHB0ciBbcnNpICsgcjggLSAxXQ0KKyAgICAgICAganogIExvb2t1cExvb3BJc1plcm8NCisJCQkJDQorCQkJCQkJDQorCQkJCQkJDQorTG9va3VwTG9vcDE6DQorICAgICAgICBhbmQgcjhkLCBlZHgNCisNCisgICAgICAgIG1vdnp4ICAgcjhkLCB3b3JkIHB0ciBbcmRpICsgcjgqMl0NCisgICAgICAgIGNtcCByOGQsIGVicA0KKyAgICAgICAgamJlIExlYXZlTm93DQorCQkNCisJCQ0KKwkJDQorICAgICAgICBzdWIgZWR4LCAweDAwMDEwMDAwDQorCQlCRUZPUkVfSk1QDQorICAgICAgICBqcyAgTGVhdmVOb3cNCisJCUFGVEVSX0pNUA0KKw0KK0xvb3BFbnRyeTE6DQorICAgICAgICBjbXAgYngsd29yZCBwdHIgW3JzaSArIHI4IC0gMV0NCisJCUJFRk9SRV9KTVANCisgICAgICAgIGp6ICBMb29rdXBMb29wSXNaZXJvDQorCQlBRlRFUl9KTVANCisNCitMb29rdXBMb29wMjoNCisgICAgICAgIGFuZCByOGQsIGVkeA0KKw0KKyAgICAgICAgbW92enggICByOGQsIHdvcmQgcHRyIFtyZGkgKyByOCoyXQ0KKyAgICAgICAgY21wIHI4ZCwgZWJwDQorCQlCRUZPUkVfSk1QDQorICAgICAgICBqYmUgTGVhdmVOb3cNCisJCUFGVEVSX0pNUA0KKyAgICAgICAgc3ViIGVkeCwgMHgwMDAxMDAwMA0KKwkJQkVGT1JFX0pNUA0KKyAgICAgICAganMgIExlYXZlTm93DQorCQlBRlRFUl9KTVANCisNCitMb29wRW50cnkyOg0KKyAgICAgICAgY21wIGJ4LHdvcmQgcHRyIFtyc2kgKyByOCAtIDFdDQorCQlCRUZPUkVfSk1QDQorICAgICAgICBqeiAgTG9va3VwTG9vcElzWmVybw0KKwkJQUZURVJfSk1QDQorDQorTG9va3VwTG9vcDQ6DQorICAgICAgICBhbmQgcjhkLCBlZHgNCisNCisgICAgICAgIG1vdnp4ICAgcjhkLCB3b3JkIHB0ciBbcmRpICsgcjgqMl0NCisgICAgICAgIGNtcCByOGQsIGVicA0KKwkJQkVGT1JFX0pNUA0KKyAgICAgICAgamJlIExlYXZlTm93DQorCQlBRlRFUl9KTVANCisgICAgICAgIHN1YiBlZHgsIDB4MDAwMTAwMDANCisJCUJFRk9SRV9KTVANCisgICAgICAgIGpzICBMZWF2ZU5vdw0KKwkJQUZURVJfSk1QDQorDQorTG9vcEVudHJ5NDoNCisNCisgICAgICAgIGNtcCBieCx3b3JkIHB0ciBbcnNpICsgcjggLSAxXQ0KKwkJQkVGT1JFX0pNUA0KKyAgICAgICAgam56IExvb2t1cExvb3AxDQorICAgICAgICBqbXAgTG9va3VwTG9vcElzWmVybw0KKwkJQUZURVJfSk1QDQorLyoNCis7OzsgZG8gew0KKzs7OyAgICAgbWF0Y2ggPSBzLT53aW5kb3cgKyBjdXJfbWF0Y2g7DQorOzs7ICAgICBpZiAoKih1c2hmKikobWF0Y2grYmVzdF9sZW4tMSkgIT0gc2Nhbl9lbmQgfHwNCis7OzsgICAgICAgICAqKHVzaGYqKW1hdGNoICE9IHNjYW5fc3RhcnQpIGNvbnRpbnVlOw0KKzs7OyAgICAgWy4uLl0NCis7OzsgfSB3aGlsZSAoKGN1cl9tYXRjaCA9IHByZXZbY3VyX21hdGNoICYgd21hc2tdKSA+IGxpbWl0DQorOzs7ICAgICAgICAgICYmIC0tY2hhaW5fbGVuZ3RoICE9IDApOw0KKzs7Ow0KKzs7OyBIZXJlIGlzIHRoZSBpbm5lciBsb29wIG9mIHRoZSBmdW5jdGlvbi4gVGhlIGZ1bmN0aW9uIHdpbGwgc3BlbmQgdGhlDQorOzs7IG1ham9yaXR5IG9mIGl0cyB0aW1lIGluIHRoaXMgbG9vcCwgYW5kIG1ham9yaXR5IG9mIHRoYXQgdGltZSB3aWxsDQorOzs7IGJlIHNwZW50IGluIHRoZSBmaXJzdCB0ZW4gaW5zdHJ1Y3Rpb25zLg0KKzs7Ow0KKzs7OyBXaXRoaW4gdGhpcyBsb29wOg0KKzs7OyBlYnggPSBzY2FuZW5kDQorOzs7IHI4ZCA9IGN1cm1hdGNoDQorOzs7IGVkeCA9IGNoYWlubGVud21hc2sgLSBpLmUuLCAoKGNoYWlubGVuIDw8IDE2KSB8IHdtYXNrKQ0KKzs7OyBlc2kgPSB3aW5kb3diZXN0bGVuIC0gaS5lLiwgKHdpbmRvdyArIGJlc3RsZW4pDQorOzs7IGVkaSA9IHByZXYNCis7OzsgZWJwID0gbGltaXQNCisqLw0KKy5iYWxpZ24gMTYNCitMb29rdXBMb29wOg0KKyAgICAgICAgYW5kIHI4ZCwgZWR4DQorDQorICAgICAgICBtb3Z6eCAgIHI4ZCwgd29yZCBwdHIgW3JkaSArIHI4KjJdDQorICAgICAgICBjbXAgcjhkLCBlYnANCisJCUJFRk9SRV9KTVANCisgICAgICAgIGpiZSBMZWF2ZU5vdw0KKwkJQUZURVJfSk1QDQorICAgICAgICBzdWIgZWR4LCAweDAwMDEwMDAwDQorCQlCRUZPUkVfSk1QDQorICAgICAgICBqcyAgTGVhdmVOb3cNCisJCUFGVEVSX0pNUA0KKw0KK0xvb3BFbnRyeToNCisNCisgICAgICAgIGNtcCBieCx3b3JkIHB0ciBbcnNpICsgcjggLSAxXQ0KKwkJQkVGT1JFX0pNUA0KKyAgICAgICAgam56IExvb2t1cExvb3AxDQorCQlBRlRFUl9KTVANCitMb29rdXBMb29wSXNaZXJvOg0KKyAgICAgICAgY21wICAgICByMTJ3LCB3b3JkIHB0ciBbcjEwICsgcjhdDQorCQlCRUZPUkVfSk1QDQorICAgICAgICBqbnogTG9va3VwTG9vcDENCisJCUFGVEVSX0pNUA0KKw0KKw0KKy8vOzs7IFN0b3JlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGNoYWlubGVuLg0KKyAgICAgICAgbW92IFtjaGFpbmxlbndtYXNrXSwgZWR4DQorLyoNCis7OzsgUG9pbnQgZWRpIHRvIHRoZSBzdHJpbmcgdW5kZXIgc2NydXRpbnksIGFuZCBlc2kgdG8gdGhlIHN0cmluZyB3ZQ0KKzs7OyBhcmUgaG9waW5nIHRvIG1hdGNoIGl0IHVwIHdpdGguIEluIGFjdHVhbGl0eSwgZXNpIGFuZCBlZGkgYXJlDQorOzs7IGJvdGggcG9pbnRlZCAoTUFYX01BVENIXzggLSBzY2FuYWxpZ24pIGJ5dGVzIGFoZWFkLCBhbmQgZWR4IGlzDQorOzs7IGluaXRpYWxpemVkIHRvIC0oTUFYX01BVENIXzggLSBzY2FuYWxpZ24pLg0KKyovDQorICAgICAgICBsZWEgcnNpLFtyOCtyMTBdDQorICAgICAgICBtb3YgcmR4LCAweGZmZmZmZmZmZmZmZmZlZjggLy87IC0oTUFYX01BVENIXzgpDQorICAgICAgICBsZWEgcnNpLCBbcnNpICsgcjEzICsgMHgwMTA4XSAvLztNQVhfTUFUQ0hfOF0NCisgICAgICAgIGxlYSByZGksIFtyOSArIHIxMyArIDB4MDEwOF0gLy87TUFYX01BVENIXzhdDQorDQorICAgICAgICBwcmVmZXRjaHQxIFtyc2krcmR4XQ0KKyAgICAgICAgcHJlZmV0Y2h0MSBbcmRpK3JkeF0NCisNCisvKg0KKzs7OyBUZXN0IHRoZSBzdHJpbmdzIGZvciBlcXVhbGl0eSwgOCBieXRlcyBhdCBhIHRpbWUuIEF0IHRoZSBlbmQsDQorOzs7IGFkanVzdCByZHggc28gdGhhdCBpdCBpcyBvZmZzZXQgdG8gdGhlIGV4YWN0IGJ5dGUgdGhhdCBtaXNtYXRjaGVkLg0KKzs7Ow0KKzs7OyBXZSBhbHJlYWR5IGtub3cgYXQgdGhpcyBwb2ludCB0aGF0IHRoZSBmaXJzdCB0aHJlZSBieXRlcyBvZiB0aGUNCis7Ozsgc3RyaW5ncyBtYXRjaCBlYWNoIG90aGVyLCBhbmQgdGhleSBjYW4gYmUgc2FmZWx5IHBhc3NlZCBvdmVyIGJlZm9yZQ0KKzs7OyBzdGFydGluZyB0aGUgY29tcGFyZSBsb29wLiBTbyB3aGF0IHRoaXMgY29kZSBkb2VzIGlzIHNraXAgb3ZlciAwLTMNCis7OzsgYnl0ZXMsIGFzIG11Y2ggYXMgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIGR3b3JkLWFsaWduIHRoZSBlZGkNCis7OzsgcG9pbnRlci4gKHJzaSB3aWxsIHN0aWxsIGJlIG1pc2FsaWduZWQgdGhyZWUgdGltZXMgb3V0IG9mIGZvdXIuKQ0KKzs7Ow0KKzs7OyBJdCBzaG91bGQgYmUgY29uZmVzc2VkIHRoYXQgdGhpcyBsb29wIHVzdWFsbHkgZG9lcyBub3QgcmVwcmVzZW50DQorOzs7IG11Y2ggb2YgdGhlIHRvdGFsIHJ1bm5pbmcgdGltZS4gUmVwbGFjaW5nIGl0IHdpdGggYSBtb3JlDQorOzs7IHN0cmFpZ2h0Zm9yd2FyZCAicmVwIGNtcHNiIiB3b3VsZCBub3QgZHJhc3RpY2FsbHkgZGVncmFkZQ0KKzs7OyBwZXJmb3JtYW5jZS4NCisqLw0KKw0KK0xvb3BDbXBzOg0KKyAgICAgICAgbW92IHJheCwgW3JzaSArIHJkeF0NCisgICAgICAgIHhvciByYXgsIFtyZGkgKyByZHhdDQorICAgICAgICBqbnogTGVhdmVMb29wQ21wcw0KKw0KKyAgICAgICAgbW92IHJheCwgW3JzaSArIHJkeCArIDhdDQorICAgICAgICB4b3IgcmF4LCBbcmRpICsgcmR4ICsgOF0NCisgICAgICAgIGpueiBMZWF2ZUxvb3BDbXBzOA0KKw0KKw0KKyAgICAgICAgbW92IHJheCwgW3JzaSArIHJkeCArIDgrOF0NCisgICAgICAgIHhvciByYXgsIFtyZGkgKyByZHggKyA4KzhdDQorICAgICAgICBqbnogTGVhdmVMb29wQ21wczE2DQorDQorICAgICAgICBhZGQgcmR4LDgrOCs4DQorDQorCQlCRUZPUkVfSk1QDQorICAgICAgICBqbnogIExvb3BDbXBzDQorICAgICAgICBqbXAgIExlbk1heGltdW0NCisJCUFGVEVSX0pNUA0KKwkJDQorTGVhdmVMb29wQ21wczE2OiBhZGQgcmR4LDgNCitMZWF2ZUxvb3BDbXBzODogYWRkIHJkeCw4DQorTGVhdmVMb29wQ21wczoNCisNCisgICAgICAgIHRlc3QgICAgZWF4LCAweDAwMDBGRkZGDQorICAgICAgICBqbnogTGVuTG93ZXINCisNCisgICAgICAgIHRlc3QgZWF4LDB4ZmZmZmZmZmYNCisNCisgICAgICAgIGpueiBMZW5Mb3dlcjMyDQorDQorICAgICAgICBhZGQgcmR4LDQNCisgICAgICAgIHNociByYXgsMzINCisgICAgICAgIG9yIGF4LGF4DQorCQlCRUZPUkVfSk1QDQorICAgICAgICBqbnogTGVuTG93ZXINCisJCUFGVEVSX0pNUA0KKw0KK0xlbkxvd2VyMzI6DQorICAgICAgICBzaHIgZWF4LDE2DQorICAgICAgICBhZGQgcmR4LDINCisJCQ0KK0xlbkxvd2VyOgkJDQorICAgICAgICBzdWIgYWwsIDENCisgICAgICAgIGFkYyByZHgsIDANCisvLzs7OyBDYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2guIElmIGl0IGlzIGxvbmdlciB0aGFuIE1BWF9NQVRDSCwNCisvLzs7OyB0aGVuIGF1dG9tYXRpY2FsbHkgYWNjZXB0IGl0IGFzIHRoZSBiZXN0IHBvc3NpYmxlIG1hdGNoIGFuZCBsZWF2ZS4NCisNCisgICAgICAgIGxlYSByYXgsIFtyZGkgKyByZHhdDQorICAgICAgICBzdWIgcmF4LCByOQ0KKyAgICAgICAgY21wIGVheCwgTUFYX01BVENIDQorCQlCRUZPUkVfSk1QDQorICAgICAgICBqZ2UgTGVuTWF4aW11bQ0KKwkJQUZURVJfSk1QDQorLyoNCis7OzsgSWYgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2ggaXMgbm90IGxvbmdlciB0aGFuIHRoZSBiZXN0IG1hdGNoIHdlDQorOzs7IGhhdmUgc28gZmFyLCB0aGVuIGZvcmdldCBpdCBhbmQgcmV0dXJuIHRvIHRoZSBsb29rdXAgbG9vcC4NCis7Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCisqLw0KKyAgICAgICAgY21wIGVheCwgcjExZA0KKyAgICAgICAgamcgIExvbmdlck1hdGNoDQorDQorICAgICAgICBsZWEgcnNpLFtyMTArcjExXQ0KKw0KKyAgICAgICAgbW92IHJkaSwgcHJldl9hZA0KKyAgICAgICAgbW92IGVkeCwgW2NoYWlubGVud21hc2tdDQorCQlCRUZPUkVfSk1QDQorICAgICAgICBqbXAgTG9va3VwTG9vcA0KKwkJQUZURVJfSk1QDQorLyoNCis7OzsgICAgICAgICBzLT5tYXRjaF9zdGFydCA9IGN1cl9tYXRjaDsNCis7OzsgICAgICAgICBiZXN0X2xlbiA9IGxlbjsNCis7OzsgICAgICAgICBpZiAobGVuID49IG5pY2VfbWF0Y2gpIGJyZWFrOw0KKzs7OyAgICAgICAgIHNjYW5fZW5kID0gKih1c2hmKikoc2NhbitiZXN0X2xlbi0xKTsNCisqLw0KK0xvbmdlck1hdGNoOg0KKyAgICAgICAgbW92IHIxMWQsIGVheA0KKyAgICAgICAgbW92IG1hdGNoX3N0YXJ0LCByOGQNCisgICAgICAgIGNtcCBlYXgsIFtuaWNlbWF0Y2hdDQorCQlCRUZPUkVfSk1QDQorICAgICAgICBqZ2UgTGVhdmVOb3cNCisJCUFGVEVSX0pNUA0KKw0KKyAgICAgICAgbGVhIHJzaSxbcjEwK3JheF0NCisNCisgICAgICAgIG1vdnp4ICAgZWJ4LCB3b3JkIHB0ciBbcjkgKyByYXggLSAxXQ0KKyAgICAgICAgbW92IHJkaSwgcHJldl9hZA0KKyAgICAgICAgbW92IGVkeCwgW2NoYWlubGVud21hc2tdDQorCQlCRUZPUkVfSk1QDQorICAgICAgICBqbXAgTG9va3VwTG9vcA0KKwkJQUZURVJfSk1QDQorDQorLy87OzsgQWNjZXB0IHRoZSBjdXJyZW50IHN0cmluZywgd2l0aCB0aGUgbWF4aW11bSBwb3NzaWJsZSBsZW5ndGguDQorDQorTGVuTWF4aW11bToNCisgICAgICAgIG1vdiByMTFkLE1BWF9NQVRDSA0KKyAgICAgICAgbW92IG1hdGNoX3N0YXJ0LCByOGQNCisNCisvLzs7OyBpZiAoKHVJbnQpYmVzdF9sZW4gPD0gcy0+bG9va2FoZWFkKSByZXR1cm4gKHVJbnQpYmVzdF9sZW47DQorLy87OzsgcmV0dXJuIHMtPmxvb2thaGVhZDsNCisNCitMZWF2ZU5vdzoNCisgICAgICAgIG1vdiBlYXgsIExvb2thaGVhZA0KKyAgICAgICAgY21wIHIxMWQsIGVheA0KKyAgICAgICAgY21vdm5nIGVheCwgcjExZA0KKw0KKw0KKw0KKy8vOzs7IFJlc3RvcmUgdGhlIHN0YWNrIGFuZCByZXR1cm4gZnJvbSB3aGVuY2Ugd2UgY2FtZS4NCisNCisNCisvLyAgICAgICAgbW92IHJzaSxbc2F2ZV9yc2ldDQorLy8gICAgICAgIG1vdiByZGksW3NhdmVfcmRpXQ0KKyAgICAgICAgbW92IHJieCxbc2F2ZV9yYnhdDQorICAgICAgICBtb3YgcmJwLFtzYXZlX3JicF0NCisgICAgICAgIG1vdiByMTIsW3NhdmVfcjEyXQ0KKyAgICAgICAgbW92IHIxMyxbc2F2ZV9yMTNdDQorICAgICAgICBtb3YgcjE0LFtzYXZlX3IxNF0NCisgICAgICAgIG1vdiByMTUsW3NhdmVfcjE1XQ0KKw0KKw0KKyAgICAgICAgcmV0IDANCisvLzsgcGxlYXNlIGRvbid0IHJlbW92ZSB0aGlzIHN0cmluZyAhDQorLy87IFlvdXIgY2FuIGZyZWVseSB1c2UgZ3ZtYXQ2NCBpbiBhbnkgZnJlZSBvciBjb21tZXJjaWFsIGFwcA0KKy8vOyBidXQgaXQgaXMgZmFyIGJldHRlciBkb24ndCByZW1vdmUgdGhlIHN0cmluZyBpbiB0aGUgYmluYXJ5IQ0KKyAvLyAgIGRiICAgICAwZGgsMGFoLCJhc202ODYgd2l0aCBtYXNtLCBvcHRpbWlzZWQgYXNzZW1ibHkgY29kZSBmcm9tIEJyaWFuIFJhaXRlciwgd3JpdHRlbiAxOTk4LCBjb252ZXJ0ZWQgdG8gYW1kIDY0IGJ5IEdpbGxlcyBWb2xsYW50IDIwMDUiLDBkaCwwYWgsMA0KKw0KKw0KK21hdGNoX2luaXQ6DQorICByZXQgMA0KKw0KKw0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvaW5mYmFjazkvaW5mdHJlZTkuYyBiL2NvbnRyaWIvaW5mYmFjazkvaW5mdHJlZTkuYwppbmRleCBjMmM4YWY5Li44ZDE1ZmRjIDEwMDY0NAotLS0gYS9jb250cmliL2luZmJhY2s5L2luZnRyZWU5LmMKKysrIGIvY29udHJpYi9pbmZiYWNrOS9pbmZ0cmVlOS5jCkBAIC05LDcgKzksNyBAQAogI2RlZmluZSBNQVhCSVRTIDE1CiAKIGNvbnN0IGNoYXIgaW5mbGF0ZTlfY29weXJpZ2h0W10gPQotICAgIiBpbmZsYXRlOSAxLjIuMy45IENvcHlyaWdodCAxOTk1LTIwMTAgTWFyayBBZGxlciAiOworICAgIiBpbmZsYXRlOSAxLjIuNCBDb3B5cmlnaHQgMTk5NS0yMDEwIE1hcmsgQWRsZXIgIjsKIC8qCiAgIElmIHlvdSB1c2UgdGhlIHpsaWIgbGlicmFyeSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGlzIHdlbGNvbWUKICAgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgeW91ciBwcm9kdWN0LiBJZiBmb3Igc29tZSByZWFzb24geW91IGNhbm5vdApAQCAtNjQsNyArNjQsNyBAQAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsZXh0WzMxXSA9IHsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGV4dHJhICovCiAgICAgICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjksIDEyOSwgMTI5LCAxMjksCiAgICAgICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzIsIDEzMiwgMTMyLCAxMzIsCi0gICAgICAgIDEzMywgMTMzLCAxMzMsIDEzMywgMTQ0LCAxOTMsIDIwMX07CisgICAgICAgIDEzMywgMTMzLCAxMzMsIDEzMywgMTQ0LCA2NiwgMTk5fTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGJhc2VbMzJdID0geyAvKiBEaXN0YW5jZSBjb2RlcyAwLi4zMSBiYXNlICovCiAgICAgICAgIDEsIDIsIDMsIDQsIDUsIDcsIDksIDEzLCAxNywgMjUsIDMzLCA0OSwKICAgICAgICAgNjUsIDk3LCAxMjksIDE5MywgMjU3LCAzODUsIDUxMywgNzY5LCAxMDI1LCAxNTM3LCAyMDQ5LCAzMDczLApkaWZmIC0tZ2l0IGEvY29udHJpYi9tYXNtNjg2L21hdGNoLmFzbSBiL2NvbnRyaWIvbWFzbTY4Ni9tYXRjaC5hc20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMDNhNzEuLjAwMDAwMDAKLS0tIGEvY29udHJpYi9tYXNtNjg2L21hdGNoLmFzbQorKysgL2Rldi9udWxsCkBAIC0xLDQxMyArMCwwIEBACi0NCi07IG1hdGNoLmFzbSAtLSBQZW50aXVtLVBybyBvcHRpbWl6ZWQgdmVyc2lvbiBvZiBsb25nZXN0X21hdGNoKCkNCi07DQotOyBVcGRhdGVkIGZvciB6bGliIDEuMS4zIGFuZCBjb252ZXJ0ZWQgdG8gTUFTTSA2LjF4DQotOyBDb3B5cmlnaHQgKEMpIDIwMDAgRGFuIEhpZ2RvbiA8aGRhbkBraW5lc29mdC5jb20+DQotOyAgICAgICAgICAgICAgICAgICAgYW5kIENodWNrIFdhbGJvdXJuIDxjaHVja3dAa2luZXNvZnQuY29tPg0KLTsgQ29ycmVjdGlvbnMgYnkgQ29zbWluIFRydXRhIDxjb3NtaW50QGNzLnViYmNsdWoucm8+DQotOw0KLTsgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0DQotOyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLg0KLQ0KLTsgQmFzZWQgb24gbWF0Y2guUw0KLTsgV3JpdHRlbiBmb3IgemxpYiAxLjEuMg0KLTsgQ29weXJpZ2h0IChDKSAxOTk4IEJyaWFuIFJhaXRlciA8YnJlYWRib3hAbXVwcGV0bGFicy5jb20+DQotOw0KLTsgTW9kaWZpZWQgYnkgR2lsbGVzIFZvbGxhbnQgKDIwMDUpIGZvciBhZGQgZ3poZWFkIGFuZCBnemluZGV4DQotDQotCS42ODZQDQotCS5NT0RFTAlGTEFUDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgRVFVQVRFUw0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0NCi1NQVhfTUFUQ0gJRVFVIDI1OA0KLU1JTl9NQVRDSAlFUVUgMw0KLU1JTl9MT09LQUhFQUQJRVFVIChNQVhfTUFUQ0ggKyBNSU5fTUFUQ0ggKyAxKQ0KLU1BWF9NQVRDSF84CUVRVSAoKE1BWF9NQVRDSCArIDcpIEFORCAoTk9UIDcpKQ0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IFNUUlVDVFVSRVMNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotDQotOyBUaGlzIFNUUlVDVCBhc3N1bWVzIGEgNC1ieXRlIGFsaWdubWVudA0KLQ0KLURFRkxBVEVfU1RBVEUJU1RSVUNUDQotZHNfc3RybQkJCWRkID8NCi1kc19zdGF0dXMJCWRkID8NCi1kc19wZW5kaW5nX2J1ZgkJZGQgPw0KLWRzX3BlbmRpbmdfYnVmX3NpemUJZGQgPw0KLWRzX3BlbmRpbmdfb3V0CQlkZCA/DQotZHNfcGVuZGluZwkJZGQgPw0KLWRzX3dyYXAJCQlkZCA/DQotOyBnemhlYWQgYW5kIGd6aW5kZXggYXJlIGFkZGVkIGluIHpsaWIgMS4yLjIuMiAoc2VlIGRlZmxhdGUuaCkNCi1kc19nemhlYWQgICAgICAgICAgICAgICBkZCA/DQotZHNfZ3ppbmRleCAgICAgICAgICAgICAgZGQgPw0KLWRzX2RhdGFfdHlwZQkJZGIgPw0KLWRzX21ldGhvZAkJZGIgPw0KLQkJCWRiID8JOyBwYWRkaW5nDQotCQkJZGIgPwk7IHBhZGRpbmcNCi1kc19sYXN0X2ZsdXNoCQlkZCA/DQotZHNfd19zaXplCQlkZCA/CTsgdXNlZA0KLWRzX3dfYml0cwkJZGQgPw0KLWRzX3dfbWFzawkJZGQgPwk7IHVzZWQNCi1kc193aW5kb3cJCWRkID8JOyB1c2VkDQotZHNfd2luZG93X3NpemUJCWRkID8NCi1kc19wcmV2CQkJZGQgPwk7IHVzZWQNCi1kc19oZWFkCQkJZGQgPw0KLWRzX2luc19oCQlkZCA/DQotZHNfaGFzaF9zaXplCQlkZCA/DQotZHNfaGFzaF9iaXRzCQlkZCA/DQotZHNfaGFzaF9tYXNrCQlkZCA/DQotZHNfaGFzaF9zaGlmdAkJZGQgPw0KLWRzX2Jsb2NrX3N0YXJ0CQlkZCA/DQotZHNfbWF0Y2hfbGVuZ3RoCQlkZCA/CTsgdXNlZA0KLWRzX3ByZXZfbWF0Y2gJCWRkID8JOyB1c2VkDQotZHNfbWF0Y2hfYXZhaWxhYmxlCWRkID8NCi1kc19zdHJzdGFydAkJZGQgPwk7IHVzZWQNCi1kc19tYXRjaF9zdGFydAkJZGQgPwk7IHVzZWQNCi1kc19sb29rYWhlYWQJCWRkID8JOyB1c2VkDQotZHNfcHJldl9sZW5ndGgJCWRkID8JOyB1c2VkDQotZHNfbWF4X2NoYWluX2xlbmd0aAlkZCA/CTsgdXNlZA0KLWRzX21heF9sYXh5X21hdGNoCWRkID8NCi1kc19sZXZlbAkJZGQgPw0KLWRzX3N0cmF0ZWd5CQlkZCA/DQotZHNfZ29vZF9tYXRjaAkJZGQgPwk7IHVzZWQNCi1kc19uaWNlX21hdGNoCQlkZCA/CTsgdXNlZA0KLQ0KLTsgRG9uJ3QgbmVlZCBhbnltb3JlIG9mIHRoZSBzdHJ1Y3QgZm9yIG1hdGNoDQotREVGTEFURV9TVEFURQlFTkRTDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgQ09ERQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi1fVEVYVAlTRUdNRU5UDQotDQotOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLTsgbWF0Y2hfaW5pdA0KLTstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0JQUxJR04JNA0KLVBVQkxJQwlfbWF0Y2hfaW5pdA0KLV9tYXRjaF9pbml0CVBST0MNCi0JOyBubyBpbml0aWFsaXphdGlvbiBuZWVkZWQNCi0JcmV0DQotX21hdGNoX2luaXQJRU5EUA0KLQ0KLTstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi07IHVJbnQgbG9uZ2VzdF9tYXRjaChkZWZsYXRlX3N0YXRlICpkZWZsYXRlc3RhdGUsIElQb3MgY3VybWF0Y2gpDQotOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLQlBTElHTgk0DQotDQotUFVCTElDCV9sb25nZXN0X21hdGNoDQotX2xvbmdlc3RfbWF0Y2gJUFJPQw0KLQ0KLTsgU2luY2UgdGhpcyBjb2RlIHVzZXMgRUJQIGZvciBhIHNjcmF0Y2ggcmVnaXN0ZXIsIHRoZSBzdGFjayBmcmFtZSBtdXN0DQotOyBiZSBtYW51YWxseSBjb25zdHJ1Y3RlZCBhbmQgcmVmZXJlbmNlZCByZWxhdGl2ZSB0byB0aGUgRVNQIHJlZ2lzdGVyLg0KLQ0KLTsgU3RhY2sgaW1hZ2UNCi07IFZhcmlhYmxlcw0KLWNoYWlubGVud21hc2sJPSAgMAk7IGhpZ2ggd29yZDogY3VycmVudCBjaGFpbiBsZW4NCi0JCQk7IGxvdyB3b3JkOiBzLT53bWFzaw0KLXdpbmRvdwkJPSAgNAk7IGxvY2FsIGNvcHkgb2Ygcy0+d2luZG93DQotd2luZG93YmVzdGxlbgk9ICA4CTsgcy0+d2luZG93ICsgYmVzdGxlbg0KLXNjYW5lbmQJCT0gMTIJOyBsYXN0IHR3byBieXRlcyBvZiBzdHJpbmcNCi1zY2Fuc3RhcnQJPSAxNgk7IGZpcnN0IHR3byBieXRlcyBvZiBzdHJpbmcNCi1zY2FuYWxpZ24JPSAyMAk7IGR3b3JkLW1pc2FsaWdubWVudCBvZiBzdHJpbmcNCi1uaWNlbWF0Y2gJPSAyNAk7IGEgZ29vZCBlbm91Z2ggbWF0Y2ggc2l6ZQ0KLWJlc3RsZW4JCT0gMjgJOyBzaXplIG9mIGJlc3QgbWF0Y2ggc28gZmFyDQotc2NhbgkJPSAzMgk7IHB0ciB0byBzdHJpbmcgd2FudGluZyBtYXRjaA0KLXZhcnNpemUJCT0gMzYJOyBudW1iZXIgb2YgYnl0ZXMgKGFsc28gb2Zmc2V0IHRvIGxhc3Qgc2F2ZWQgcmVnaXN0ZXIpDQotDQotOyBTYXZlZCBSZWdpc3RlcnMgKGFjdHVhbGx5IHB1c2hlZCBpbnRvIHBsYWNlKQ0KLWVieF9zYXZlCT0gMzYNCi1lZGlfc2F2ZQk9IDQwDQotZXNpX3NhdmUJPSA0NA0KLWVicF9zYXZlCT0gNDgNCi0NCi07IFBhcmFtZXRlcnMNCi1yZXRhZGRyCQk9IDUyDQotZGVmbGF0ZXN0YXRlCT0gNTYNCi1jdXJtYXRjaAk9IDYwDQotDQotOyBTYXZlIHJlZ2lzdGVycyB0aGF0IHRoZSBjb21waWxlciBtYXkgYmUgdXNpbmcNCi0JcHVzaAllYnANCi0JcHVzaAllZGkNCi0JcHVzaAllc2kNCi0JcHVzaAllYngNCi0NCi07IEFsbG9jYXRlIGxvY2FsIHZhcmlhYmxlIHNwYWNlDQotCXN1Ygllc3AsdmFyc2l6ZQ0KLQ0KLTsgUmV0cmlldmUgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cy4gZWN4IHdpbGwgaG9sZCBjdXJfbWF0Y2gNCi07IHRocm91Z2hvdXQgdGhlIGVudGlyZSBmdW5jdGlvbi4gZWR4IHdpbGwgaG9sZCB0aGUgcG9pbnRlciB0byB0aGUNCi07IGRlZmxhdGVfc3RhdGUgc3RydWN0dXJlIGR1cmluZyB0aGUgZnVuY3Rpb24ncyBzZXR1cCAoYmVmb3JlDQotOyBlbnRlcmluZyB0aGUgbWFpbiBsb29wKS4NCi0NCi0JbW92CWVkeCwgW2VzcCtkZWZsYXRlc3RhdGVdDQotQVNTVU1FCWVkeDpQVFIgREVGTEFURV9TVEFURQ0KLQ0KLQltb3YJZWN4LCBbZXNwK2N1cm1hdGNoXQ0KLQ0KLTsgdUludCB3bWFzayA9IHMtPndfbWFzazsNCi07IHVuc2lnbmVkIGNoYWluX2xlbmd0aCA9IHMtPm1heF9jaGFpbl9sZW5ndGg7DQotOyBpZiAocy0+cHJldl9sZW5ndGggPj0gcy0+Z29vZF9tYXRjaCkgew0KLTsgICAgIGNoYWluX2xlbmd0aCA+Pj0gMjsNCi07IH0NCi0NCi0JbW92CWVheCwgW2VkeF0uZHNfcHJldl9sZW5ndGgNCi0JbW92CWVieCwgW2VkeF0uZHNfZ29vZF9tYXRjaA0KLQljbXAJZWF4LCBlYngNCi0JbW92CWVheCwgW2VkeF0uZHNfd19tYXNrDQotCW1vdgllYngsIFtlZHhdLmRzX21heF9jaGFpbl9sZW5ndGgNCi0JamwJU0hPUlQgTGFzdE1hdGNoR29vZA0KLQlzaHIJZWJ4LCAyDQotTGFzdE1hdGNoR29vZDoNCi0NCi07IGNoYWlubGVuIGlzIGRlY3JlbWVudGVkIG9uY2UgYmVmb3JlaGFuZCBzbyB0aGF0IHRoZSBmdW5jdGlvbiBjYW4NCi07IHVzZSB0aGUgc2lnbiBmbGFnIGluc3RlYWQgb2YgdGhlIHplcm8gZmxhZyBmb3IgdGhlIGV4aXQgdGVzdC4NCi07IEl0IGlzIHRoZW4gc2hpZnRlZCBpbnRvIHRoZSBoaWdoIHdvcmQsIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHdtYXNrDQotOyB2YWx1ZSwgd2hpY2ggaXQgd2lsbCBhbHdheXMgYWNjb21wYW55Lg0KLQ0KLQlkZWMJZWJ4DQotCXNobAllYngsIDE2DQotCW9yCWVieCwgZWF4DQotCW1vdglbZXNwK2NoYWlubGVud21hc2tdLCBlYngNCi0NCi07IGlmICgodUludCluaWNlX21hdGNoID4gcy0+bG9va2FoZWFkKSBuaWNlX21hdGNoID0gcy0+bG9va2FoZWFkOw0KLQ0KLQltb3YJZWF4LCBbZWR4XS5kc19uaWNlX21hdGNoDQotCW1vdgllYngsIFtlZHhdLmRzX2xvb2thaGVhZA0KLQljbXAJZWJ4LCBlYXgNCi0JamwJU0hPUlQgTG9va2FoZWFkTGVzcw0KLQltb3YJZWJ4LCBlYXgNCi1Mb29rYWhlYWRMZXNzOg0KLQltb3YJW2VzcCtuaWNlbWF0Y2hdLCBlYngNCi0NCi07LyogcmVnaXN0ZXIgQnl0ZWYgKnNjYW4gPSBzLT53aW5kb3cgKyBzLT5zdHJzdGFydDsgICAgICAgICAgICAgICAgICAgICAqLw0KLQ0KLQltb3YJZXNpLCBbZWR4XS5kc193aW5kb3cNCi0JbW92CVtlc3Ard2luZG93XSwgZXNpDQotCW1vdgllYnAsIFtlZHhdLmRzX3N0cnN0YXJ0DQotCWxlYQllZGksIFtlc2krZWJwXQ0KLQltb3YJW2VzcCtzY2FuXSxlZGkNCi0NCi07LyogRGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIHRoZSBzY2FuIHB0ciBpcyBvZmYgZnJvbSBiZWluZyAgICAgICAgICAgICAqLw0KLTsvKiBkd29yZC1hbGlnbmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotDQotCW1vdgllYXgsIGVkaQ0KLQluZWcJZWF4DQotCWFuZAllYXgsIDMNCi0JbW92CVtlc3Arc2NhbmFsaWduXSwgZWF4DQotDQotOy8qIElQb3MgbGltaXQgPSBzLT5zdHJzdGFydCA+IChJUG9zKU1BWF9ESVNUKHMpID8gICAgICAgICAgICAgICAgICAgICAgKi8NCi07LyogICAgIHMtPnN0cnN0YXJ0IC0gKElQb3MpTUFYX0RJU1QocykgOiBOSUw7ICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLQ0KLQltb3YJZWF4LCBbZWR4XS5kc193X3NpemUNCi0Jc3ViCWVheCwgTUlOX0xPT0tBSEVBRA0KLQlzdWIJZWJwLCBlYXgNCi0JamcJU0hPUlQgTGltaXRQb3NpdGl2ZQ0KLQl4b3IJZWJwLCBlYnANCi1MaW1pdFBvc2l0aXZlOg0KLQ0KLTsvKiBpbnQgYmVzdF9sZW4gPSBzLT5wcmV2X2xlbmd0aDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotDQotCW1vdgllYXgsIFtlZHhdLmRzX3ByZXZfbGVuZ3RoDQotCW1vdglbZXNwK2Jlc3RsZW5dLCBlYXgNCi0NCi07LyogU3RvcmUgdGhlIHN1bSBvZiBzLT53aW5kb3cgKyBiZXN0X2xlbiBpbiAlZXNpIGxvY2FsbHksIGFuZCBpbiAlZXNpLiAqLw0KLQ0KLQlhZGQJZXNpLCBlYXgNCi0JbW92CVtlc3Ard2luZG93YmVzdGxlbl0sIGVzaQ0KLQ0KLTsvKiByZWdpc3RlciB1c2ggc2Nhbl9zdGFydCA9ICoodXNoZiopc2NhbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotOy8qIHJlZ2lzdGVyIHVzaCBzY2FuX2VuZCAgID0gKih1c2hmKikoc2NhbitiZXN0X2xlbi0xKTsgICAgICAgICAgICAgICAgKi8NCi07LyogUG9zZiAqcHJldiA9IHMtPnByZXY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLQ0KLQltb3Z6eAllYngsIFdPUkQgUFRSW2VkaV0NCi0JbW92CVtlc3Arc2NhbnN0YXJ0XSwgZWJ4DQotCW1vdnp4CWVieCwgV09SRCBQVFJbZWF4K2VkaS0xXQ0KLQltb3YJW2VzcCtzY2FuZW5kXSwgZWJ4DQotCW1vdgllZGksIFtlZHhdLmRzX3ByZXYNCi0NCi07LyogSnVtcCBpbnRvIHRoZSBtYWluIGxvb3AuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLQ0KLQltb3YJZWR4LCBbZXNwK2NoYWlubGVud21hc2tdDQotCWptcAlTSE9SVCBMb29wRW50cnkNCi0NCi07LyogZG8gew0KLTsgKiAgICAgbWF0Y2ggPSBzLT53aW5kb3cgKyBjdXJfbWF0Y2g7DQotOyAqICAgICBpZiAoKih1c2hmKikobWF0Y2grYmVzdF9sZW4tMSkgIT0gc2Nhbl9lbmQgfHwNCi07ICogICAgICAgICAqKHVzaGYqKW1hdGNoICE9IHNjYW5fc3RhcnQpIGNvbnRpbnVlOw0KLTsgKiAgICAgWy4uLl0NCi07ICogfSB3aGlsZSAoKGN1cl9tYXRjaCA9IHByZXZbY3VyX21hdGNoICYgd21hc2tdKSA+IGxpbWl0DQotOyAqICAgICAgICAgICYmIC0tY2hhaW5fbGVuZ3RoICE9IDApOw0KLTsgKg0KLTsgKiBIZXJlIGlzIHRoZSBpbm5lciBsb29wIG9mIHRoZSBmdW5jdGlvbi4gVGhlIGZ1bmN0aW9uIHdpbGwgc3BlbmQgdGhlDQotOyAqIG1ham9yaXR5IG9mIGl0cyB0aW1lIGluIHRoaXMgbG9vcCwgYW5kIG1ham9yaXR5IG9mIHRoYXQgdGltZSB3aWxsDQotOyAqIGJlIHNwZW50IGluIHRoZSBmaXJzdCB0ZW4gaW5zdHJ1Y3Rpb25zLg0KLTsgKg0KLTsgKiBXaXRoaW4gdGhpcyBsb29wOg0KLTsgKiAlZWJ4ID0gc2NhbmVuZA0KLTsgKiAlZWN4ID0gY3VybWF0Y2gNCi07ICogJWVkeCA9IGNoYWlubGVud21hc2sgLSBpLmUuLCAoKGNoYWlubGVuIDw8IDE2KSB8IHdtYXNrKQ0KLTsgKiAlZXNpID0gd2luZG93YmVzdGxlbiAtIGkuZS4sICh3aW5kb3cgKyBiZXN0bGVuKQ0KLTsgKiAlZWRpID0gcHJldg0KLTsgKiAlZWJwID0gbGltaXQNCi07ICovDQotDQotCUFMSUdOCTQNCi1Mb29rdXBMb29wOg0KLQlhbmQJZWN4LCBlZHgNCi0JbW92engJZWN4LCBXT1JEIFBUUltlZGkrZWN4KjJdDQotCWNtcAllY3gsIGVicA0KLQlqYmUJTGVhdmVOb3cNCi0Jc3ViCWVkeCwgMDAwMDEwMDAwSA0KLQlqcwlMZWF2ZU5vdw0KLQ0KLUxvb3BFbnRyeToNCi0JbW92engJZWF4LCBXT1JEIFBUUltlc2krZWN4LTFdDQotCWNtcAllYXgsIGVieA0KLQlqbnoJU0hPUlQgTG9va3VwTG9vcA0KLQ0KLQltb3YJZWF4LCBbZXNwK3dpbmRvd10NCi0JbW92engJZWF4LCBXT1JEIFBUUltlYXgrZWN4XQ0KLQljbXAJZWF4LCBbZXNwK3NjYW5zdGFydF0NCi0Jam56CVNIT1JUIExvb2t1cExvb3ANCi0NCi07LyogU3RvcmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgY2hhaW5sZW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLQ0KLQltb3YJW2VzcCtjaGFpbmxlbndtYXNrXSwgZWR4DQotDQotOy8qIFBvaW50ICVlZGkgdG8gdGhlIHN0cmluZyB1bmRlciBzY3J1dGlueSwgYW5kICVlc2kgdG8gdGhlIHN0cmluZyB3ZSAgKi8NCi07LyogYXJlIGhvcGluZyB0byBtYXRjaCBpdCB1cCB3aXRoLiBJbiBhY3R1YWxpdHksICVlc2kgYW5kICVlZGkgYXJlICAgICAqLw0KLTsvKiBib3RoIHBvaW50ZWQgKE1BWF9NQVRDSF84IC0gc2NhbmFsaWduKSBieXRlcyBhaGVhZCwgYW5kICVlZHggaXMgICAgICovDQotOy8qIGluaXRpYWxpemVkIHRvIC0oTUFYX01BVENIXzggLSBzY2FuYWxpZ24pLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0NCi0JbW92CWVzaSwgW2VzcCt3aW5kb3ddDQotCW1vdgllZGksIFtlc3Arc2Nhbl0NCi0JYWRkCWVzaSwgZWN4DQotCW1vdgllYXgsIFtlc3Arc2NhbmFsaWduXQ0KLQltb3YJZWR4LCAtTUFYX01BVENIXzgNCi0JbGVhCWVkaSwgW2VkaStlYXgrTUFYX01BVENIXzhdDQotCWxlYQllc2ksIFtlc2krZWF4K01BWF9NQVRDSF84XQ0KLQ0KLTsvKiBUZXN0IHRoZSBzdHJpbmdzIGZvciBlcXVhbGl0eSwgOCBieXRlcyBhdCBhIHRpbWUuIEF0IHRoZSBlbmQsDQotOyAqIGFkanVzdCAlZWR4IHNvIHRoYXQgaXQgaXMgb2Zmc2V0IHRvIHRoZSBleGFjdCBieXRlIHRoYXQgbWlzbWF0Y2hlZC4NCi07ICoNCi07ICogV2UgYWxyZWFkeSBrbm93IGF0IHRoaXMgcG9pbnQgdGhhdCB0aGUgZmlyc3QgdGhyZWUgYnl0ZXMgb2YgdGhlDQotOyAqIHN0cmluZ3MgbWF0Y2ggZWFjaCBvdGhlciwgYW5kIHRoZXkgY2FuIGJlIHNhZmVseSBwYXNzZWQgb3ZlciBiZWZvcmUNCi07ICogc3RhcnRpbmcgdGhlIGNvbXBhcmUgbG9vcC4gU28gd2hhdCB0aGlzIGNvZGUgZG9lcyBpcyBza2lwIG92ZXIgMC0zDQotOyAqIGJ5dGVzLCBhcyBtdWNoIGFzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBkd29yZC1hbGlnbiB0aGUgJWVkaQ0KLTsgKiBwb2ludGVyLiAoJWVzaSB3aWxsIHN0aWxsIGJlIG1pc2FsaWduZWQgdGhyZWUgdGltZXMgb3V0IG9mIGZvdXIuKQ0KLTsgKg0KLTsgKiBJdCBzaG91bGQgYmUgY29uZmVzc2VkIHRoYXQgdGhpcyBsb29wIHVzdWFsbHkgZG9lcyBub3QgcmVwcmVzZW50DQotOyAqIG11Y2ggb2YgdGhlIHRvdGFsIHJ1bm5pbmcgdGltZS4gUmVwbGFjaW5nIGl0IHdpdGggYSBtb3JlDQotOyAqIHN0cmFpZ2h0Zm9yd2FyZCAicmVwIGNtcHNiIiB3b3VsZCBub3QgZHJhc3RpY2FsbHkgZGVncmFkZQ0KLTsgKiBwZXJmb3JtYW5jZS4NCi07ICovDQotDQotTG9vcENtcHM6DQotCW1vdgllYXgsIERXT1JEIFBUUltlc2krZWR4XQ0KLQl4b3IJZWF4LCBEV09SRCBQVFJbZWRpK2VkeF0NCi0Jam56CVNIT1JUIExlYXZlTG9vcENtcHMNCi0NCi0JbW92CWVheCwgRFdPUkQgUFRSW2VzaStlZHgrNF0NCi0JeG9yCWVheCwgRFdPUkQgUFRSW2VkaStlZHgrNF0NCi0Jam56CVNIT1JUIExlYXZlTG9vcENtcHM0DQotDQotCWFkZAllZHgsIDgNCi0Jam56CVNIT1JUIExvb3BDbXBzDQotCWptcAlMZW5NYXhpbXVtDQotCUFMSUdOCTQNCi0NCi1MZWF2ZUxvb3BDbXBzNDoNCi0JYWRkCWVkeCwgNA0KLQ0KLUxlYXZlTG9vcENtcHM6DQotCXRlc3QJZWF4LCAwMDAwMEZGRkZIDQotCWpueglTSE9SVCBMZW5Mb3dlcg0KLQ0KLQlhZGQJZWR4LCAyDQotCXNocgllYXgsIDE2DQotDQotTGVuTG93ZXI6DQotCXN1YglhbCwgMQ0KLQlhZGMJZWR4LCAwDQotDQotOy8qIENhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBtYXRjaC4gSWYgaXQgaXMgbG9uZ2VyIHRoYW4gTUFYX01BVENILCAgKi8NCi07LyogdGhlbiBhdXRvbWF0aWNhbGx5IGFjY2VwdCBpdCBhcyB0aGUgYmVzdCBwb3NzaWJsZSBtYXRjaCBhbmQgbGVhdmUuICAqLw0KLQ0KLQlsZWEJZWF4LCBbZWRpK2VkeF0NCi0JbW92CWVkaSwgW2VzcCtzY2FuXQ0KLQlzdWIJZWF4LCBlZGkNCi0JY21wCWVheCwgTUFYX01BVENIDQotCWpnZQlTSE9SVCBMZW5NYXhpbXVtDQotDQotOy8qIElmIHRoZSBsZW5ndGggb2YgdGhlIG1hdGNoIGlzIG5vdCBsb25nZXIgdGhhbiB0aGUgYmVzdCBtYXRjaCB3ZSAgICAgKi8NCi07LyogaGF2ZSBzbyBmYXIsIHRoZW4gZm9yZ2V0IGl0IGFuZCByZXR1cm4gdG8gdGhlIGxvb2t1cCBsb29wLiAgICAgICAgICAqLw0KLQ0KLQltb3YJZWR4LCBbZXNwK2RlZmxhdGVzdGF0ZV0NCi0JbW92CWVieCwgW2VzcCtiZXN0bGVuXQ0KLQljbXAJZWF4LCBlYngNCi0JamcJU0hPUlQgTG9uZ2VyTWF0Y2gNCi0JbW92CWVzaSwgW2VzcCt3aW5kb3diZXN0bGVuXQ0KLQltb3YJZWRpLCBbZWR4XS5kc19wcmV2DQotCW1vdgllYngsIFtlc3Arc2NhbmVuZF0NCi0JbW92CWVkeCwgW2VzcCtjaGFpbmxlbndtYXNrXQ0KLQlqbXAJTG9va3VwTG9vcA0KLQlBTElHTgk0DQotDQotOy8qICAgICAgICAgcy0+bWF0Y2hfc3RhcnQgPSBjdXJfbWF0Y2g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi07LyogICAgICAgICBiZXN0X2xlbiA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLTsvKiAgICAgICAgIGlmIChsZW4gPj0gbmljZV9tYXRjaCkgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotOy8qICAgICAgICAgc2Nhbl9lbmQgPSAqKHVzaGYqKShzY2FuK2Jlc3RfbGVuLTEpOyAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0NCi1Mb25nZXJNYXRjaDoNCi0JbW92CWVieCwgW2VzcCtuaWNlbWF0Y2hdDQotCW1vdglbZXNwK2Jlc3RsZW5dLCBlYXgNCi0JbW92CVtlZHhdLmRzX21hdGNoX3N0YXJ0LCBlY3gNCi0JY21wCWVheCwgZWJ4DQotCWpnZQlTSE9SVCBMZWF2ZU5vdw0KLQltb3YJZXNpLCBbZXNwK3dpbmRvd10NCi0JYWRkCWVzaSwgZWF4DQotCW1vdglbZXNwK3dpbmRvd2Jlc3RsZW5dLCBlc2kNCi0JbW92engJZWJ4LCBXT1JEIFBUUltlZGkrZWF4LTFdDQotCW1vdgllZGksIFtlZHhdLmRzX3ByZXYNCi0JbW92CVtlc3Arc2NhbmVuZF0sIGVieA0KLQltb3YJZWR4LCBbZXNwK2NoYWlubGVud21hc2tdDQotCWptcAlMb29rdXBMb29wDQotCUFMSUdOCTQNCi0NCi07LyogQWNjZXB0IHRoZSBjdXJyZW50IHN0cmluZywgd2l0aCB0aGUgbWF4aW11bSBwb3NzaWJsZSBsZW5ndGguICAgICAgICAqLw0KLQ0KLUxlbk1heGltdW06DQotCW1vdgllZHgsIFtlc3ArZGVmbGF0ZXN0YXRlXQ0KLQltb3YJRFdPUkQgUFRSW2VzcCtiZXN0bGVuXSwgTUFYX01BVENIDQotCW1vdglbZWR4XS5kc19tYXRjaF9zdGFydCwgZWN4DQotDQotOy8qIGlmICgodUludCliZXN0X2xlbiA8PSBzLT5sb29rYWhlYWQpIHJldHVybiAodUludCliZXN0X2xlbjsgICAgICAgICAgKi8NCi07LyogcmV0dXJuIHMtPmxvb2thaGVhZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLQ0KLUxlYXZlTm93Og0KLQltb3YJZWR4LCBbZXNwK2RlZmxhdGVzdGF0ZV0NCi0JbW92CWVieCwgW2VzcCtiZXN0bGVuXQ0KLQltb3YJZWF4LCBbZWR4XS5kc19sb29rYWhlYWQNCi0JY21wCWVieCwgZWF4DQotCWpnCVNIT1JUIExvb2thaGVhZFJldA0KLQltb3YJZWF4LCBlYngNCi1Mb29rYWhlYWRSZXQ6DQotDQotOyBSZXN0b3JlIHRoZSBzdGFjayBhbmQgcmV0dXJuIGZyb20gd2hlbmNlIHdlIGNhbWUuDQotDQotCWFkZAllc3AsIHZhcnNpemUNCi0JcG9wCWVieA0KLQlwb3AJZXNpDQotCXBvcAllZGkNCi0JcG9wCWVicA0KLQlyZXQNCi0NCi1fbG9uZ2VzdF9tYXRjaAlFTkRQDQotDQotX1RFWFQJRU5EUw0KLUVORA0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvbWFzbXg2NC9ndm1hdDY0LmFzbSBiL2NvbnRyaWIvbWFzbXg2NC9ndm1hdDY0LmFzbQppbmRleCBkMjc5MGNjLi45ODc5YzI4IDEwMDY0NAotLS0gYS9jb250cmliL21hc214NjQvZ3ZtYXQ2NC5hc20KKysrIGIvY29udHJpYi9tYXNteDY0L2d2bWF0NjQuYXNtCkBAIC0yLDggKzIsMTAgQEAKIDsgICAgZGVmbGF0ZV9zdGF0ZSAqcywNCiA7ICAgIElQb3MgY3VyX21hdGNoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgbWF0Y2ggKi8NCiANCi07IGd2bWF0NjQuYXNtIC0tIEFzbSBwb3J0aW9uIG9mIHRoZSBvcHRpbWl6ZWQgbG9uZ2VzdF9tYXRjaCBmb3IgMzIgYml0cyB4ODYNCi07IENvcHlyaWdodCAoQykgMTk5NS0yMDA1IEplYW4tbG91cCBHYWlsbHksIEJyaWFuIFJhaXRlciBhbmQgR2lsbGVzIFZvbGxhbnQuDQorOyBndm1hdDY0LmFzbSAtLSBBc20gcG9ydGlvbiBvZiB0aGUgb3B0aW1pemVkIGxvbmdlc3RfbWF0Y2ggZm9yIDMyIGJpdHMgeDg2XzY0DQorOyAgKEFNRDY0IG9uIEF0aGxvbiA2NCwgT3B0ZXJvbiwgUGhlbm9tDQorOyAgICAgYW5kIEludGVsIEVNNjRUIG9uIFBlbnRpdW0gNCB3aXRoIEVNNjRULCBQZW50aXVtIEQsIENvcmUgMiBEdW8sIENvcmUgSTUvSTcpDQorOyBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMCBKZWFuLWxvdXAgR2FpbGx5LCBCcmlhbiBSYWl0ZXIgYW5kIEdpbGxlcyBWb2xsYW50Lg0KIDsNCiA7IEZpbGUgd3JpdHRlbiBieSBHaWxsZXMgVm9sbGFudCwgYnkgY29udmVydGluZyB0byBhc3NlbWJseSB0aGUgbG9uZ2VzdF9tYXRjaA0KIDsgIGZyb20gSmVhbi1sb3VwIEdhaWxseSBpbiBkZWZsYXRlLmMgb2YgekxpYiBhbmQgaW5mb1ppcCB6aXAuDQpAQCAtMTEsNiArMTMsMjQgQEAKIDsgIGFuZCBieSB0YWtpbmcgaW5zcGlyYXRpb24gb24gYXNtNjg2IHdpdGggbWFzbSwgb3B0aW1pc2VkIGFzc2VtYmx5IGNvZGUNCiA7ICAgICAgICBmcm9tIEJyaWFuIFJhaXRlciwgd3JpdHRlbiAxOTk4DQogOw0KKzsgIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkDQorOyAgd2FycmFudHkuICBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcw0KKzsgIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuDQorOw0KKzsgIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLA0KKzsgIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQNCis7ICBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6DQorOw0KKzsgIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90DQorOyAgICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUNCis7ICAgICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUNCis7ICAgICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLg0KKzsgIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlDQorOyAgICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlDQorOyAgMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi4NCis7DQorOw0KKzsNCiA7ICAgICAgICAgaHR0cDovL3d3dy56bGliLm5ldA0KIDsgICAgICAgICBodHRwOi8vd3d3LndpbmltYWdlLmNvbS96TGliRGxsDQogOyAgICAgICAgIGh0dHA6Ly93d3cubXVwcGV0bGFicy5jb20vfmJyZWFkYm94L3NvZnR3YXJlL2Fzc2VtYmx5Lmh0bWwNCkBAIC0yNiwxMCArNDYsMTAgQEAKIDsNCiA7IFRoaXMgZmlsZSBjb21waWxlIHdpdGggTWljcm9zb2Z0IE1hY3JvIEFzc2VtYmxlciAoeDY0KSBmb3IgQU1ENjQNCiA7DQotOyAgIG1sNjQuZXhlIGlzIGdpdmVuIHdpdGggVmlzdWFsIFN0dWRpbyAyMDA1IGFuZCBXaW5kb3dzIDIwMDMgc2VydmVyIERESw0KKzsgICBtbDY0LmV4ZSBpcyBnaXZlbiB3aXRoIFZpc3VhbCBTdHVkaW8gMjAwNS8yMDA4LzIwMTAgYW5kIFdpbmRvd3MgV0RLDQogOw0KLTsgICAoeW91IGNhbiBnZXQgV2luZG93cyAyMDAzIHNlcnZlciBEREsgd2l0aCBtbDY0IGFuZCBjbCBmb3IgQU1ENjQgZnJvbQ0KLTsgICAgICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vd2hkYy9kZXZ0b29scy9kZGsvZGVmYXVsdC5tc3B4IGZvciBsb3cgcHJpY2UpDQorOyAgICh5b3UgY2FuIGdldCBXaW5kb3dzIFdESyB3aXRoIG1sNjQgZm9yIEFNRDY0IGZyb20NCis7ICAgICAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3doZGMvRGV2dG9vbHMvd2RrL2RlZmF1bHQubXNweCBmb3IgbG93IHByaWNlKQ0KIDsNCiANCiANCkBAIC03MSw2ICs5MSwyNSBAQAogO3NhdmVfcjE1ICAgICAgICBlcXUgIHJzcCArIDgwIC0gTG9jYWxWYXJzU2l6ZQ0KIA0KIA0KKzsgc3VtbWFyeSBvZiByZWdpc3RlciB1c2FnZQ0KKzsgc2NhbmVuZCAgICAgZWJ4DQorOyBzY2FuZW5kdyAgICBieA0KKzsgY2hhaW5sZW53bWFzayAgIGVkeA0KKzsgY3VybWF0Y2ggICAgcnNpDQorOyBjdXJtYXRjaGQgICBlc2kNCis7IHdpbmRvd2Jlc3RsZW4gICByOA0KKzsgc2NhbmFsaWduICAgcjkNCis7IHNjYW5hbGlnbmQgIHI5ZA0KKzsgd2luZG93ICAgICAgcjEwDQorOyBiZXN0bGVuICAgICByMTENCis7IGJlc3RsZW5kICAgIHIxMWQNCis7IHNjYW5zdGFydCAgIHIxMmQNCis7IHNjYW5zdGFydHcgIHIxMncNCis7IHNjYW4gICAgICAgIHIxMw0KKzsgbmljZW1hdGNoICAgcjE0ZA0KKzsgbGltaXQgICAgICAgcjE1DQorOyBsaW1pdGQgICAgICByMTVkDQorOyBwcmV2ICAgICAgICByY3gNCiANCiA7ICBhbGwgdGhlICs0IG9mZnNldHMgYXJlIGR1ZSB0byB0aGUgYWRkaXRpb24gb2YgcGVuZGluZ19idWZfc2l6ZSAoaW4gemxpYg0KIDsgIGluIHRoZSBkZWZsYXRlX3N0YXRlIHN0cnVjdHVyZSBzaW5jZSB0aGUgYXNtIGNvZGUgd2FzIGZpcnN0IHdyaXR0ZW4NCmRpZmYgLS1naXQgYS9jb250cmliL21hc214NjQvaW5mZmFzODY2NC5jIGIvY29udHJpYi9tYXNteDY0L2luZmZhczg2NjQuYwppbmRleCAyMjYzZDc3Li5lOGFmMDZmIDEwMDY0NAotLS0gYS9jb250cmliL21hc214NjQvaW5mZmFzODY2NC5jCisrKyBiL2NvbnRyaWIvbWFzbXg2NC9pbmZmYXM4NjY0LmMKQEAgLTEzMCw3ICsxMzAsNyBAQAogICAgIGFyLmJlZyA9IGFyLm91dCAtIChzdGFydCAtIHN0cm0tPmF2YWlsX291dCk7DQogICAgIGFyLmVuZCA9IGFyLm91dCArIChzdHJtLT5hdmFpbF9vdXQgLSBQQURfQVZBSUxfT1VUKTsNCiAgICAgYXIud3NpemUgPSBzdGF0ZS0+d3NpemU7DQotICAgIGFyLndyaXRlID0gc3RhdGUtPndyaXRlOw0KKyAgICBhci53cml0ZSA9IHN0YXRlLT53bmV4dDsNCiAgICAgYXIud2luZG93ID0gc3RhdGUtPndpbmRvdzsNCiAgICAgYXIuaG9sZCA9IHN0YXRlLT5ob2xkOw0KICAgICBhci5iaXRzID0gc3RhdGUtPmJpdHM7DQpkaWZmIC0tZ2l0IGEvY29udHJpYi9tYXNteDY0L2luZmZhc3g2NC5hc20gYi9jb250cmliL21hc214NjQvaW5mZmFzeDY0LmFzbQppbmRleCBjMmJhMDNmLi42MGE4ZDg5IDEwMDY0NAotLS0gYS9jb250cmliL21hc214NjQvaW5mZmFzeDY0LmFzbQorKysgYi9jb250cmliL21hc214NjQvaW5mZmFzeDY0LmFzbQpAQCAtOSwxMSArOSwxNSBAQAogOyAgIG1sNjQuZXhlIC9GbGluZmZhc3g2NCAvYyAvWmkgaW5mZmFzeDY0LmFzbQ0KIDsgICB3aXRoIE1pY3Jvc29mdCBNYWNybyBBc3NlbWJsZXIgKHg2NCkgZm9yIEFNRDY0DQogOw0KLTsgICBtbDY0LmV4ZSBpcyBnaXZlbiB3aXRoIFZpc3VhbCBTdHVkaW8gMjAwNSwgV2luZG93cyAyMDAzIHNlcnZlciBEREsNCisNCis7IFRoaXMgZmlsZSBjb21waWxlIHdpdGggTWljcm9zb2Z0IE1hY3JvIEFzc2VtYmxlciAoeDY0KSBmb3IgQU1ENjQNCiA7DQotOyAgICh5b3UgY2FuIGdldCBXaW5kb3dzIDIwMDMgc2VydmVyIERESyB3aXRoIG1sNjQgYW5kIGNsLmV4ZSBmb3IgQU1ENjQgZnJvbQ0KLTsgICAgICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vd2hkYy9kZXZ0b29scy9kZGsvZGVmYXVsdC5tc3B4IGZvciBsb3cgcHJpY2UpDQorOyAgIG1sNjQuZXhlIGlzIGdpdmVuIHdpdGggVmlzdWFsIFN0dWRpbyAyMDA1LzIwMDgvMjAxMCBhbmQgV2luZG93cyBXREsNCiA7DQorOyAgICh5b3UgY2FuIGdldCBXaW5kb3dzIFdESyB3aXRoIG1sNjQgZm9yIEFNRDY0IGZyb20NCis7ICAgICAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3doZGMvRGV2dG9vbHMvd2RrL2RlZmF1bHQubXNweCBmb3IgbG93IHByaWNlKQ0KKzsNCisNCiANCiAuY29kZQ0KIGluZmZhczg2NjRmbmMgUFJPQw0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvbWFzbXg4Ni9ibGRfbWwzMi5iYXQgYi9jb250cmliL21hc214ODYvYmxkX21sMzIuYmF0CmluZGV4IDM2OTYyZTEuLmUxYjg2YmYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbWFzbXg4Ni9ibGRfbWwzMi5iYXQKKysrIGIvY29udHJpYi9tYXNteDg2L2JsZF9tbDMyLmJhdApAQCAtMSwyICsxLDIgQEAKLW1sIC9jb2ZmIC9aaSAvYyAvRmxndm1hdDMyLmxzdCAgZ3ZtYXQzMi5hc20NCittbCAvY29mZiAvWmkgL2MgL0ZsbWF0Y2g2ODYubHN0IG1hdGNoNjg2LmFzbQ0KIG1sIC9jb2ZmIC9aaSAvYyAvRmxpbmZmYXMzMi5sc3QgaW5mZmFzMzIuYXNtDQpkaWZmIC0tZ2l0IGEvY29udHJpYi9tYXNteDg2L2d2bWF0MzIuYXNtIGIvY29udHJpYi9tYXNteDg2L2d2bWF0MzIuYXNtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTExNjE2Li4wMDAwMDAwCi0tLSBhL2NvbnRyaWIvbWFzbXg4Ni9ndm1hdDMyLmFzbQorKysgL2Rldi9udWxsCkBAIC0xLDk3MiArMCwwIEBACi07IGd2bWF0MzIuYXNtIC0tIEFzbSBwb3J0aW9uIG9mIHRoZSBvcHRpbWl6ZWQgbG9uZ2VzdF9tYXRjaCBmb3IgMzIgYml0cyB4ODYNCi07IENvcHlyaWdodCAoQykgMTk5NS0xOTk2IEplYW4tbG91cCBHYWlsbHkgYW5kIEdpbGxlcyBWb2xsYW50Lg0KLTsgRmlsZSB3cml0dGVuIGJ5IEdpbGxlcyBWb2xsYW50LCBieSBtb2RpZml5aW5nIHRoZSBsb25nZXN0X21hdGNoDQotOyAgZnJvbSBKZWFuLWxvdXAgR2FpbGx5IGluIGRlZmxhdGUuYw0KLTsNCi07ICAgICAgICAgaHR0cDovL3d3dy56bGliLm5ldA0KLTsgICAgICAgICBodHRwOi8vd3d3LndpbmltYWdlLmNvbS96TGliRGxsDQotOyAgICAgICAgIGh0dHA6Ly93d3cubXVwcGV0bGFicy5jb20vfmJyZWFkYm94L3NvZnR3YXJlL2Fzc2VtYmx5Lmh0bWwNCi07DQotOyBGb3IgVmlzdWFsIEMrKyA0LnggYW5kIGhpZ2hlciBhbmQgTUwgNi54IGFuZCBoaWdoZXINCi07ICAgbWwuZXhlIGlzIGluIGRpcmVjdG9yeSBcTUFTTTYxMUMgb2YgV2luOTUgRERLDQotOyAgIG1sLmV4ZSBpcyBhbHNvIGRpc3RyaWJ1dGVkIGluIGh0dHA6Ly93d3cubWFzbTMyLmNvbS9tYXNtZGwuaHRtDQotOyAgICBhbmQgaW4gVkMrKzIwMDMgdG9vbGtpdCBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL3Zpc3VhbGMvdmN0b29sa2l0MjAwMy8NCi07DQotOyB0aGlzIGZpbGUgY29udGFpbiB0d28gaW1wbGVtZW50YXRpb24gb2YgbG9uZ2VzdF9tYXRjaA0KLTsNCi07ICBsb25nZXN0X21hdGNoXzdmZmYgOiB3cml0dGVuIDE5OTYgYnkgR2lsbGVzIFZvbGxhbnQgb3B0aW1pemVkIGZvcg0KLTsgICAgICAgICAgICBmaXJzdCBQZW50aXVtLiBBc3N1bWUgcy0+d19tYXNrID09IDB4N2ZmZg0KLTsgIGxvbmdlc3RfbWF0Y2hfNjg2IDogd3JpdHRlbiBieSBCcmlhbiByYWl0ZXIgKDE5OTgpLCBvcHRpbWl6ZWQgZm9yIFBlbnRpdW0gUHJvDQotOw0KLTsgIGZvciB1c2luZyBhbiBzZWVtYmx5IHZlcnNpb24gb2YgbG9uZ2VzdF9tYXRjaCwgeW91IG5lZWQgZGVmaW5lIEFTTVYgaW4gcHJvamVjdA0KLTsgIFRoZXJlIGlzIHR3byB3YXkgaW4gdXNpbmcgZ3ZtYXQzMi5hc20NCi07DQotOyAgQSkgU3VnZ2VzdGVkIG1ldGhvZA0KLTsgICAgaWYgeW91IHdhbnQgaW5jbHVkZSBib3RoIGxvbmdlc3RfbWF0Y2hfN2ZmZiBhbmQgbG9uZ2VzdF9tYXRjaF82ODYNCi07ICAgIGNvbXBpbGUgdGhlIGFzbSBmaWxlIHJ1bm5pbmcNCi07ICAgICAgICAgICBtbCAvY29mZiAvWmkgL0ZsZ3ZtYXQzMi5sc3QgL2MgZ3ZtYXQzMi5hc20NCi07ICAgIGFuZCBpbmNsdWRlIGd2bWF0MzJjLmMgaW4geW91ciBwcm9qZWN0DQotOyAgICBpZiB5b3UgaGF2ZSBhbiBvbGQgY3B1ICgzODYsNDg2IG9yIGZpcnN0IFBlbnRpdW0pIGFuZCBzLT53X21hc2s9PTB4N2ZmZiwNCi07ICAgICAgICBsb25nZXN0X21hdGNoXzdmZmYgd2lsbCBiZSB1c2VkDQotOyAgICBpZiB5b3UgaGF2ZSBhIG1vcmUgbW9kZXJuIENQVSAoUGVudGl1bSBQcm8sIElJIGFuZCBoaWdoZXIpDQotOyAgICAgICAgbG9uZ2VzdF9tYXRjaF82ODYgd2lsbCBiZSB1c2VkDQotOyAgICBvbiBvbGQgY3B1IHdpdGggcy0+d19tYXNrIT0weDdmZmYsIGxvbmdlc3RfbWF0Y2hfNjg2IHdpbGwgYmUgdXNlZCwNCi07ICAgICAgICBidXQgdGhpcyBpcyBub3QgYSBzaXRhdGlvbiB5b3UnbGwgZmluZCBvZnRlbg0KLTsNCi07ICBCKSBBbHRlcm5hdGl2ZQ0KLTsgICAgaWYgeW91IGFyZSBub3QgaW50ZXJyZXNlZCBpbiBvbGQgY3B1IHBlcmZvcm1hbmNlIGFuZCB3YW50IHRoZSBzbWFsbGVyDQotOyAgICAgICBiaW5hcmllcyBwb3NzaWJsZQ0KLTsNCi07ICAgIGNvbXBpbGUgdGhlIGFzbSBmaWxlIHJ1bm5pbmcNCi07ICAgICAgICAgICBtbCAvY29mZiAvWmkgL2MgL0ZsZ3ZtYXQzMi5sc3QgL0ROT09MRFBFTlRJVU1DT0RFIGd2bWF0MzIuYXNtDQotOyAgICBhbmQgZG8gbm90IGluY2x1ZGUgZ3ZtYXQzMmMuYyBpbiB5b3VyIHByb2plY3QgKG91IGRlZmluZSBhbHNvDQotOyAgICAgICAgICAgICAgTk9PTERQRU5USVVNQ09ERSkNCi07DQotOyBub3RlIDogYXMgSSBrbm93biwgbG9uZ2VzdF9tYXRjaF82ODYgaXMgdmVyeSBmYXN0ZXIgdGhhbiBsb25nZXN0X21hdGNoXzdmZmYNCi07ICAgICAgICBvbiBwZW50aXVtIFByby9JSS9JSUksIGZhc3RlciAoYnV0IGxlc3MpIGluIFA0LCBidXQgaXQgc2VlbQ0KLTsgICAgICAgIGxvbmdlc3RfbWF0Y2hfN2ZmZiBjYW4gYmUgZmFzdGVyICh2ZXJ5IHZlcnkgbGl0dGUpIG9uIEFNRCBBdGhsb242NC9LOA0KLTsNCi07IHNlZSBiZWxvdyA6IHpsaWIxMjIyYWRkIG11c3QgYmUgYWRqdXN0ZXIgaWYgeW91IHVzZSBhIHpsaWIgdmVyc2lvbiA8IDEuMi4yLjINCi0NCi07dUludCBsb25nZXN0X21hdGNoXzdmZmYocywgY3VyX21hdGNoKQ0KLTsgICAgZGVmbGF0ZV9zdGF0ZSAqczsNCi07ICAgIElQb3MgY3VyX21hdGNoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBtYXRjaCAqLw0KLQ0KLSAgICBOYlN0YWNrICAgICAgICAgZXF1ICAgICA3Ng0KLSAgICBjdXJfbWF0Y2ggICAgICAgZXF1ICAgICBkd29yZCBwdHJbZXNwK05iU3RhY2stMF0NCi0gICAgc3RyX3MgICAgICAgICAgIGVxdSAgICAgZHdvcmQgcHRyW2VzcCtOYlN0YWNrLTRdDQotOyA1IGR3b3JkIG9uIHRvcCAocmV0LGVicCxlc2ksZWRpLGVieCkNCi0gICAgYWRycmV0ICAgICAgICAgIGVxdSAgICAgZHdvcmQgcHRyW2VzcCtOYlN0YWNrLThdDQotICAgIHB1c2hlYnAgICAgICAgICBlcXUgICAgIGR3b3JkIHB0cltlc3ArTmJTdGFjay0xMl0NCi0gICAgcHVzaGVkaSAgICAgICAgIGVxdSAgICAgZHdvcmQgcHRyW2VzcCtOYlN0YWNrLTE2XQ0KLSAgICBwdXNoZXNpICAgICAgICAgZXF1ICAgICBkd29yZCBwdHJbZXNwK05iU3RhY2stMjBdDQotICAgIHB1c2hlYnggICAgICAgICBlcXUgICAgIGR3b3JkIHB0cltlc3ArTmJTdGFjay0yNF0NCi0NCi0gICAgY2hhaW5fbGVuZ3RoICAgIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay0yOF0NCi0gICAgbGltaXQgICAgICAgICAgIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay0zMl0NCi0gICAgYmVzdF9sZW4gICAgICAgIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay0zNl0NCi0gICAgd2luZG93ICAgICAgICAgIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay00MF0NCi0gICAgcHJldiAgICAgICAgICAgIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay00NF0NCi0gICAgc2Nhbl9zdGFydCAgICAgIGVxdSAgICAgIHdvcmQgcHRyIFtlc3ArTmJTdGFjay00OF0NCi0gICAgd21hc2sgICAgICAgICAgIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay01Ml0NCi0gICAgbWF0Y2hfc3RhcnRfcHRyIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay01Nl0NCi0gICAgbmljZV9tYXRjaCAgICAgIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay02MF0NCi0gICAgc2NhbiAgICAgICAgICAgIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay02NF0NCi0NCi0gICAgd2luZG93bGVuICAgICAgIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay02OF0NCi0gICAgbWF0Y2hfc3RhcnQgICAgIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay03Ml0NCi0gICAgc3RyZW5kICAgICAgICAgIGVxdSAgICAgZHdvcmQgcHRyIFtlc3ArTmJTdGFjay03Nl0NCi0gICAgTmJTdGFja0FkZCAgICAgIGVxdSAgICAgKE5iU3RhY2stMjQpDQotDQotICAgIC4zODZwDQotDQotICAgIG5hbWUgICAgZ3ZtYXRjaA0KLSAgICAuTU9ERUwgIEZMQVQNCi0NCi0NCi0NCi07ICBhbGwgdGhlICt6bGliMTIyMmFkZCBvZmZzZXRzIGFyZSBkdWUgdG8gdGhlIGFkZGl0aW9uIG9mIGZpZWxkcw0KLTsgIGluIHpsaWIgaW4gdGhlIGRlZmxhdGVfc3RhdGUgc3RydWN0dXJlIHNpbmNlIHRoZSBhc20gY29kZSB3YXMgZmlyc3Qgd3JpdHRlbg0KLTsgIChpZiB5b3UgY29tcGlsZSB3aXRoIHpsaWIgMS4wLjQgb3Igb2xkZXIsIHVzZSAiemxpYjEyMjJhZGQgZXF1ICgtNCkiKS4NCi07ICAoaWYgeW91IGNvbXBpbGUgd2l0aCB6bGliIGJldHdlZW4gMS4wLjUgYW5kIDEuMi4yLjEsIHVzZSAiemxpYjEyMjJhZGQgZXF1IDAiKS4NCi07ICBpZiB5b3UgY29tcGlsZSB3aXRoIHpsaWIgMS4yLjIuMiBvciBsYXRlciAsIHVzZSAiemxpYjEyMjJhZGQgZXF1IDgiKS4NCi0NCi0gICAgemxpYjEyMjJhZGQgICAgICAgICBlcXUgICAgIDgNCi0NCi07ICBOb3RlIDogdGhlc2UgdmFsdWUgYXJlIGdvb2Qgd2l0aCBhIDggYnl0ZXMgYm91bmRhcnkgcGFjayBzdHJ1Y3R1cmUNCi0gICAgZGVwX2NoYWluX2xlbmd0aCAgICBlcXUgICAgIDc0aCt6bGliMTIyMmFkZA0KLSAgICBkZXBfd2luZG93ICAgICAgICAgIGVxdSAgICAgMzBoK3psaWIxMjIyYWRkDQotICAgIGRlcF9zdHJzdGFydCAgICAgICAgZXF1ICAgICA2NGgremxpYjEyMjJhZGQNCi0gICAgZGVwX3ByZXZfbGVuZ3RoICAgICBlcXUgICAgIDcwaCt6bGliMTIyMmFkZA0KLSAgICBkZXBfbmljZV9tYXRjaCAgICAgIGVxdSAgICAgODhoK3psaWIxMjIyYWRkDQotICAgIGRlcF93X3NpemUgICAgICAgICAgZXF1ICAgICAyNGgremxpYjEyMjJhZGQNCi0gICAgZGVwX3ByZXYgICAgICAgICAgICBlcXUgICAgIDM4aCt6bGliMTIyMmFkZA0KLSAgICBkZXBfd19tYXNrICAgICAgICAgIGVxdSAgICAgMmNoK3psaWIxMjIyYWRkDQotICAgIGRlcF9nb29kX21hdGNoICAgICAgZXF1ICAgICA4NGgremxpYjEyMjJhZGQNCi0gICAgZGVwX21hdGNoX3N0YXJ0ICAgICBlcXUgICAgIDY4aCt6bGliMTIyMmFkZA0KLSAgICBkZXBfbG9va2FoZWFkICAgICAgIGVxdSAgICAgNmNoK3psaWIxMjIyYWRkDQotDQotDQotX1RFWFQgICAgICAgICAgICAgICAgICAgc2VnbWVudA0KLQ0KLUlGREVGIE5PVU5ERVJMSU5FDQotICAgSUZERUYgTk9PTERQRU5USVVNQ09ERQ0KLSAgICAgICAgICAgIHB1YmxpYyAgbG9uZ2VzdF9tYXRjaA0KLSAgICAgICAgICAgIHB1YmxpYyAgbWF0Y2hfaW5pdA0KLSAgIEVMU0UNCi0gICAgICAgICAgICBwdWJsaWMgIGxvbmdlc3RfbWF0Y2hfN2ZmZg0KLSAgICAgICAgICAgIHB1YmxpYyAgY3B1ZGV0ZWN0MzINCi0gICAgICAgICAgICBwdWJsaWMgIGxvbmdlc3RfbWF0Y2hfNjg2DQotICAgRU5ESUYNCi1FTFNFDQotICAgSUZERUYgTk9PTERQRU5USVVNQ09ERQ0KLSAgICAgICAgICAgIHB1YmxpYyAgX2xvbmdlc3RfbWF0Y2gNCi0gICAgICAgICAgICBwdWJsaWMgIF9tYXRjaF9pbml0DQotICAgRUxTRQ0KLSAgICAgICAgICAgIHB1YmxpYyAgX2xvbmdlc3RfbWF0Y2hfN2ZmZg0KLSAgICAgICAgICAgIHB1YmxpYyAgX2NwdWRldGVjdDMyDQotICAgICAgICAgICAgcHVibGljICBfbG9uZ2VzdF9tYXRjaF82ODYNCi0gICBFTkRJRg0KLUVORElGDQotDQotICAgIE1BWF9NQVRDSCAgICAgICAgICAgZXF1ICAgICAyNTgNCi0gICAgTUlOX01BVENIICAgICAgICAgICBlcXUgICAgIDMNCi0gICAgTUlOX0xPT0tBSEVBRCAgICAgICBlcXUgICAgIChNQVhfTUFUQ0grTUlOX01BVENIKzEpDQotDQotDQotDQotSUZOREVGIE5PT0xEUEVOVElVTUNPREUNCi1JRkRFRiBOT1VOREVSTElORQ0KLWxvbmdlc3RfbWF0Y2hfN2ZmZiAgIHByb2MgbmVhcg0KLUVMU0UNCi1fbG9uZ2VzdF9tYXRjaF83ZmZmICBwcm9jIG5lYXINCi1FTkRJRg0KLQ0KLSAgICBtb3YgICAgIGVkeCxbZXNwKzRdDQotDQotDQotDQotICAgIHB1c2ggICAgZWJwDQotICAgIHB1c2ggICAgZWRpDQotICAgIHB1c2ggICAgZXNpDQotICAgIHB1c2ggICAgZWJ4DQotDQotICAgIHN1YiAgICAgZXNwLE5iU3RhY2tBZGQNCi0NCi07IGluaXRpYWxpemUgb3IgY2hlY2sgdGhlIHZhcmlhYmxlcyB1c2VkIGluIG1hdGNoLmFzbS4NCi0gICAgbW92ICAgICBlYnAsZWR4DQotDQotOyBjaGFpbl9sZW5ndGggPSBzLT5tYXhfY2hhaW5fbGVuZ3RoDQotOyBpZiAocHJldl9sZW5ndGg+PWdvb2RfbWF0Y2gpIGNoYWluX2xlbmd0aCA+Pj0gMg0KLSAgICBtb3YgICAgIGVkeCxbZWJwK2RlcF9jaGFpbl9sZW5ndGhdDQotICAgIG1vdiAgICAgZWJ4LFtlYnArZGVwX3ByZXZfbGVuZ3RoXQ0KLSAgICBjbXAgICAgIFtlYnArZGVwX2dvb2RfbWF0Y2hdLGVieA0KLSAgICBqYSAgICAgIG5vc2hyDQotICAgIHNociAgICAgZWR4LDINCi1ub3NocjoNCi07IHdlIGluY3JlbWVudCBjaGFpbl9sZW5ndGggYmVjYXVzZSBpbiB0aGUgYXNtLCB0aGUgLS1jaGFpbl9sZW5naHQgaXMgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgbG9vcA0KLSAgICBpbmMgICAgIGVkeA0KLSAgICBtb3YgICAgIGVkaSxbZWJwK2RlcF9uaWNlX21hdGNoXQ0KLSAgICBtb3YgICAgIGNoYWluX2xlbmd0aCxlZHgNCi0gICAgbW92ICAgICBlYXgsW2VicCtkZXBfbG9va2FoZWFkXQ0KLSAgICBjbXAgICAgIGVheCxlZGkNCi07IGlmICgodUludCluaWNlX21hdGNoID4gcy0+bG9va2FoZWFkKSBuaWNlX21hdGNoID0gcy0+bG9va2FoZWFkOw0KLSAgICBqYWUgICAgIG5vbG9va2FoZWFkbmljZW1hdGNoDQotICAgIG1vdiAgICAgZWRpLGVheA0KLW5vbG9va2FoZWFkbmljZW1hdGNoOg0KLTsgYmVzdF9sZW4gPSBzLT5wcmV2X2xlbmd0aA0KLSAgICBtb3YgICAgIGJlc3RfbGVuLGVieA0KLQ0KLTsgd2luZG93ID0gcy0+d2luZG93DQotICAgIG1vdiAgICAgZXNpLFtlYnArZGVwX3dpbmRvd10NCi0gICAgbW92ICAgICBlY3gsW2VicCtkZXBfc3Ryc3RhcnRdDQotICAgIG1vdiAgICAgd2luZG93LGVzaQ0KLQ0KLSAgICBtb3YgICAgIG5pY2VfbWF0Y2gsZWRpDQotOyBzY2FuID0gd2luZG93ICsgc3Ryc3RhcnQNCi0gICAgYWRkICAgICBlc2ksZWN4DQotICAgIG1vdiAgICAgc2Nhbixlc2kNCi07IGR4ID0gKndpbmRvdw0KLSAgICBtb3YgICAgIGR4LHdvcmQgcHRyIFtlc2ldDQotOyBieCA9ICood2luZG93K2Jlc3RfbGVuLTEpDQotICAgIG1vdiAgICAgYngsd29yZCBwdHIgW2VzaStlYngtMV0NCi0gICAgYWRkICAgICBlc2ksTUFYX01BVENILTENCi07IHNjYW5fc3RhcnQgPSAqc2Nhbg0KLSAgICBtb3YgICAgIHNjYW5fc3RhcnQsZHgNCi07IHN0cmVuZCA9IHNjYW4gKyBNQVhfTUFUQ0gtMQ0KLSAgICBtb3YgICAgIHN0cmVuZCxlc2kNCi07IGJ4ID0gc2Nhbl9lbmQgPSAqKHdpbmRvdytiZXN0X2xlbi0xKQ0KLQ0KLTsgICAgSVBvcyBsaW1pdCA9IHMtPnN0cnN0YXJ0ID4gKElQb3MpTUFYX0RJU1QocykgPw0KLTsgICAgICAgIHMtPnN0cnN0YXJ0IC0gKElQb3MpTUFYX0RJU1QocykgOiBOSUw7DQotDQotICAgIG1vdiAgICAgZXNpLFtlYnArZGVwX3dfc2l6ZV0NCi0gICAgc3ViICAgICBlc2ksTUlOX0xPT0tBSEVBRA0KLTsgaGVyZSBlc2kgPSBNQVhfRElTVChzKQ0KLSAgICBzdWIgICAgIGVjeCxlc2kNCi0gICAgamEgICAgICBub2Rpc3QNCi0gICAgeG9yICAgICBlY3gsZWN4DQotbm9kaXN0Og0KLSAgICBtb3YgICAgIGxpbWl0LGVjeA0KLQ0KLTsgcHJldiA9IHMtPnByZXYNCi0gICAgbW92ICAgICBlZHgsW2VicCtkZXBfcHJldl0NCi0gICAgbW92ICAgICBwcmV2LGVkeA0KLQ0KLTsNCi0gICAgbW92ICAgICBlZHgsZHdvcmQgcHRyIFtlYnArZGVwX21hdGNoX3N0YXJ0XQ0KLSAgICBtb3YgICAgIGJwLHNjYW5fc3RhcnQNCi0gICAgbW92ICAgICBlYXgsY3VyX21hdGNoDQotICAgIG1vdiAgICAgbWF0Y2hfc3RhcnQsZWR4DQotDQotICAgIG1vdiAgICAgZWR4LHdpbmRvdw0KLSAgICBtb3YgICAgIGVkaSxlZHgNCi0gICAgYWRkICAgICBlZGksYmVzdF9sZW4NCi0gICAgbW92ICAgICBlc2kscHJldg0KLSAgICBkZWMgICAgIGVkaQ0KLTsgd2luZG93bGVuID0gd2luZG93ICsgYmVzdF9sZW4gLTENCi0gICAgbW92ICAgICB3aW5kb3dsZW4sZWRpDQotDQotICAgIGptcCAgICAgYmVnaW5sb29wMg0KLSAgICBhbGlnbiAgIDQNCi0NCi07IGhlcmUsIGluIHRoZSBsb29wDQotOyAgICAgICBlYXggPSBheCA9IGN1cl9tYXRjaA0KLTsgICAgICAgZWN4ID0gbGltaXQNCi07ICAgICAgICBieCA9IHNjYW5fZW5kDQotOyAgICAgICAgYnAgPSBzY2FuX3N0YXJ0DQotOyAgICAgICBlZGkgPSB3aW5kb3dsZW4gKHdpbmRvdyArIGJlc3RfbGVuIC0xKQ0KLTsgICAgICAgZXNpID0gcHJldg0KLQ0KLQ0KLTsvLyBoZXJlOyBjaGFpbl9sZW5ndGggPD0xNg0KLW5vcm1hbGJlZzBhZGQxNjoNCi0gICAgYWRkICAgICBjaGFpbl9sZW5ndGgsMTYNCi0gICAganogICAgICBleGl0bG9vcA0KLW5vcm1hbGJlZzA6DQotICAgIGNtcCAgICAgd29yZCBwdHJbZWRpK2VheF0sYngNCi0gICAgamUgICAgICBub3JtYWxiZWcybm9yb2xsDQotcmNvbnRsYWJub3JvbGw6DQotOyBjdXJfbWF0Y2ggPSBwcmV2W2N1cl9tYXRjaCAmIHdtYXNrXQ0KLSAgICBhbmQgICAgIGVheCw3ZmZmaA0KLSAgICBtb3YgICAgIGF4LHdvcmQgcHRyW2VzaStlYXgqMl0NCi07IGlmIGN1cl9tYXRjaCA+IGxpbWl0LCBnbyB0byBleGl0bG9vcA0KLSAgICBjbXAgICAgIGVjeCxlYXgNCi0gICAgam5iICAgICBleGl0bG9vcA0KLTsgaWYgLS1jaGFpbl9sZW5ndGggIT0gMCwgZ28gdG8gZXhpdGxvb3ANCi0gICAgZGVjICAgICBjaGFpbl9sZW5ndGgNCi0gICAgam56ICAgICBub3JtYWxiZWcwDQotICAgIGptcCAgICAgZXhpdGxvb3ANCi0NCi1ub3JtYWxiZWcybm9yb2xsOg0KLTsgaWYgKHNjYW5fc3RhcnQ9PSooY3VyX21hdGNoK3dpbmRvdykpIGdvdG8gbm9ybWFsYmVnMg0KLSAgICBjbXAgICAgIGJwLHdvcmQgcHRyW2VkeCtlYXhdDQotICAgIGpuZSAgICAgcmNvbnRsYWJub3JvbGwNCi0gICAgam1wICAgICBub3JtYWxiZWcyDQotDQotY29udGxvb3AzOg0KLSAgICBtb3YgICAgIGVkaSx3aW5kb3dsZW4NCi0NCi07IGN1cl9tYXRjaCA9IHByZXZbY3VyX21hdGNoICYgd21hc2tdDQotICAgIGFuZCAgICAgZWF4LDdmZmZoDQotICAgIG1vdiAgICAgYXgsd29yZCBwdHJbZXNpK2VheCoyXQ0KLTsgaWYgY3VyX21hdGNoID4gbGltaXQsIGdvIHRvIGV4aXRsb29wDQotICAgIGNtcCAgICAgZWN4LGVheA0KLWpuYmV4aXRsb29wc2hvcnQxOg0KLSAgICBqbmIgICAgIGV4aXRsb29wDQotOyBpZiAtLWNoYWluX2xlbmd0aCAhPSAwLCBnbyB0byBleGl0bG9vcA0KLQ0KLQ0KLTsgYmVnaW4gdGhlIG1haW4gbG9vcA0KLWJlZ2lubG9vcDI6DQotICAgIHN1YiAgICAgY2hhaW5fbGVuZ3RoLDE2KzENCi07IGlmIGNoYWluX2xlbmd0aCA8PTE2LCBkb24ndCB1c2UgdGhlIHVucm9sbGVkIGxvb3ANCi0gICAgam5hICAgICBub3JtYWxiZWcwYWRkMTYNCi0NCi1kbzE2Og0KLSAgICBjbXAgICAgIHdvcmQgcHRyW2VkaStlYXhdLGJ4DQotICAgIGplICAgICAgbm9ybWFsYmVnMmRjMA0KLQ0KLW1hY2NuICAgTUFDUk8gICBsYWINCi0gICAgYW5kICAgICBlYXgsN2ZmZmgNCi0gICAgbW92ICAgICBheCx3b3JkIHB0cltlc2krZWF4KjJdDQotICAgIGNtcCAgICAgZWN4LGVheA0KLSAgICBqbmIgICAgIGV4aXRsb29wDQotICAgIGNtcCAgICAgd29yZCBwdHJbZWRpK2VheF0sYngNCi0gICAgamUgICAgICBsYWINCi0gICAgRU5ETQ0KLQ0KLXJjb250bG9vcDA6DQotICAgIG1hY2NuICAgbm9ybWFsYmVnMmRjMQ0KLQ0KLXJjb250bG9vcDE6DQotICAgIG1hY2NuICAgbm9ybWFsYmVnMmRjMg0KLQ0KLXJjb250bG9vcDI6DQotICAgIG1hY2NuICAgbm9ybWFsYmVnMmRjMw0KLQ0KLXJjb250bG9vcDM6DQotICAgIG1hY2NuICAgbm9ybWFsYmVnMmRjNA0KLQ0KLXJjb250bG9vcDQ6DQotICAgIG1hY2NuICAgbm9ybWFsYmVnMmRjNQ0KLQ0KLXJjb250bG9vcDU6DQotICAgIG1hY2NuICAgbm9ybWFsYmVnMmRjNg0KLQ0KLXJjb250bG9vcDY6DQotICAgIG1hY2NuICAgbm9ybWFsYmVnMmRjNw0KLQ0KLXJjb250bG9vcDc6DQotICAgIG1hY2NuICAgbm9ybWFsYmVnMmRjOA0KLQ0KLXJjb250bG9vcDg6DQotICAgIG1hY2NuICAgbm9ybWFsYmVnMmRjOQ0KLQ0KLXJjb250bG9vcDk6DQotICAgIG1hY2NuICAgbm9ybWFsYmVnMmRjMTANCi0NCi1yY29udGxvb3AxMDoNCi0gICAgbWFjY24gICBzaG9ydCBub3JtYWxiZWcyZGMxMQ0KLQ0KLXJjb250bG9vcDExOg0KLSAgICBtYWNjbiAgIHNob3J0IG5vcm1hbGJlZzJkYzEyDQotDQotcmNvbnRsb29wMTI6DQotICAgIG1hY2NuICAgc2hvcnQgbm9ybWFsYmVnMmRjMTMNCi0NCi1yY29udGxvb3AxMzoNCi0gICAgbWFjY24gICBzaG9ydCBub3JtYWxiZWcyZGMxNA0KLQ0KLXJjb250bG9vcDE0Og0KLSAgICBtYWNjbiAgIHNob3J0IG5vcm1hbGJlZzJkYzE1DQotDQotcmNvbnRsb29wMTU6DQotICAgIGFuZCAgICAgZWF4LDdmZmZoDQotICAgIG1vdiAgICAgYXgsd29yZCBwdHJbZXNpK2VheCoyXQ0KLSAgICBjbXAgICAgIGVjeCxlYXgNCi0gICAgam5iICAgICBleGl0bG9vcA0KLQ0KLSAgICBzdWIgICAgIGNoYWluX2xlbmd0aCwxNg0KLSAgICBqYSAgICAgIGRvMTYNCi0gICAgam1wICAgICBub3JtYWxiZWcwYWRkMTYNCi0NCi07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KLQ0KLW5vcm1iZWcgTUFDUk8gICByY29udGxhYix2YWxzdWINCi07IGlmIHdlIGFyZSBoZXJlLCB3ZSBrbm93IHRoYXQgKihtYXRjaCtiZXN0X2xlbi0xKSA9PSBzY2FuX2VuZA0KLSAgICBjbXAgICAgIGJwLHdvcmQgcHRyW2VkeCtlYXhdDQotOyBpZiAobWF0Y2ggIT0gc2Nhbl9zdGFydCkgZ290byByY29udGxhYg0KLSAgICBqbmUgICAgIHJjb250bGFiDQotOyBjYWxjdWxhdGUgdGhlIGdvb2QgY2hhaW5fbGVuZ3RoLCBhbmQgd2UnbGwgY29tcGFyZSBzY2FuIGFuZCBtYXRjaCBzdHJpbmcNCi0gICAgYWRkICAgICBjaGFpbl9sZW5ndGgsMTYtdmFsc3ViDQotICAgIGptcCAgICAgaXNlcQ0KLSAgICBFTkRNDQotDQotDQotbm9ybWFsYmVnMmRjMTE6DQotICAgIG5vcm1iZWcgcmNvbnRsb29wMTEsMTENCi0NCi1ub3JtYWxiZWcyZGMxMjoNCi0gICAgbm9ybWJlZyBzaG9ydCByY29udGxvb3AxMiwxMg0KLQ0KLW5vcm1hbGJlZzJkYzEzOg0KLSAgICBub3JtYmVnIHNob3J0IHJjb250bG9vcDEzLDEzDQotDQotbm9ybWFsYmVnMmRjMTQ6DQotICAgIG5vcm1iZWcgc2hvcnQgcmNvbnRsb29wMTQsMTQNCi0NCi1ub3JtYWxiZWcyZGMxNToNCi0gICAgbm9ybWJlZyBzaG9ydCByY29udGxvb3AxNSwxNQ0KLQ0KLW5vcm1hbGJlZzJkYzEwOg0KLSAgICBub3JtYmVnIHJjb250bG9vcDEwLDEwDQotDQotbm9ybWFsYmVnMmRjOToNCi0gICAgbm9ybWJlZyByY29udGxvb3A5LDkNCi0NCi1ub3JtYWxiZWcyZGM4Og0KLSAgICBub3JtYmVnIHJjb250bG9vcDgsOA0KLQ0KLW5vcm1hbGJlZzJkYzc6DQotICAgIG5vcm1iZWcgcmNvbnRsb29wNyw3DQotDQotbm9ybWFsYmVnMmRjNjoNCi0gICAgbm9ybWJlZyByY29udGxvb3A2LDYNCi0NCi1ub3JtYWxiZWcyZGM1Og0KLSAgICBub3JtYmVnIHJjb250bG9vcDUsNQ0KLQ0KLW5vcm1hbGJlZzJkYzQ6DQotICAgIG5vcm1iZWcgcmNvbnRsb29wNCw0DQotDQotbm9ybWFsYmVnMmRjMzoNCi0gICAgbm9ybWJlZyByY29udGxvb3AzLDMNCi0NCi1ub3JtYWxiZWcyZGMyOg0KLSAgICBub3JtYmVnIHJjb250bG9vcDIsMg0KLQ0KLW5vcm1hbGJlZzJkYzE6DQotICAgIG5vcm1iZWcgcmNvbnRsb29wMSwxDQotDQotbm9ybWFsYmVnMmRjMDoNCi0gICAgbm9ybWJlZyByY29udGxvb3AwLDANCi0NCi0NCi07IHdlIGdvIGluIG5vcm1hbGJlZzIgYmVjYXVzZSAqKHVzaGYqKShtYXRjaCtiZXN0X2xlbi0xKSA9PSBzY2FuX2VuZA0KLQ0KLW5vcm1hbGJlZzI6DQotICAgIG1vdiAgICAgZWRpLHdpbmRvdw0KLQ0KLSAgICBjbXAgICAgIGJwLHdvcmQgcHRyW2VkaStlYXhdDQotICAgIGpuZSAgICAgY29udGxvb3AzICAgICAgICAgICAgICAgICAgIDsgaWYgKih1c2hmKiltYXRjaCAhPSBzY2FuX3N0YXJ0LCBjb250aW51ZQ0KLQ0KLWlzZXE6DQotOyBpZiB3ZSBhcmUgaGVyZSwgd2Uga25vdyB0aGF0ICoobWF0Y2grYmVzdF9sZW4tMSkgPT0gc2Nhbl9lbmQNCi07IGFuZCAobWF0Y2ggPT0gc2Nhbl9zdGFydCkNCi0NCi0gICAgbW92ICAgICBlZGksZWR4DQotICAgIG1vdiAgICAgZXNpLHNjYW4gICAgICAgICAgICAgICAgICAgIDsgZXNpID0gc2Nhbg0KLSAgICBhZGQgICAgIGVkaSxlYXggICAgICAgICAgICAgICAgICAgICA7IGVkaSA9IHdpbmRvdyArIGN1cl9tYXRjaCA9IG1hdGNoDQotDQotICAgIG1vdiAgICAgZWR4LFtlc2krM10gICAgICAgICAgICAgICAgIDsgY29tcGFyZSBtYW51YWxseSBkd29yZCBhdCBtYXRjaCszDQotICAgIHhvciAgICAgZWR4LFtlZGkrM10gICAgICAgICAgICAgICAgIDsgYW5kIHNjYW4gKzMNCi0NCi0gICAganogICAgICBiZWdpbmNvbXBhcmUgICAgICAgICAgICAgICAgOyBpZiBlcXVhbCwgZ28gdG8gbG9uZyBjb21wYXJlDQotDQotOyB3ZSB3aWxsIGRldGVybWluZSB0aGUgdW5tYXRjaCBieXRlIGFuZCBjYWxjdWxhdGUgbGVuIChpbiBlc2kpDQotICAgIG9yICAgICAgZGwsZGwNCi0gICAgamUgICAgICBlcTFycg0KLSAgICBtb3YgICAgIGVzaSwzDQotICAgIGptcCAgICAgdHJmaW52YWwNCi1lcTFycjoNCi0gICAgb3IgICAgICBkeCxkeA0KLSAgICBqZSAgICAgIGVxMQ0KLQ0KLSAgICBtb3YgICAgIGVzaSw0DQotICAgIGptcCAgICAgdHJmaW52YWwNCi1lcTE6DQotICAgIGFuZCAgICAgZWR4LDBmZmZmZmZoDQotICAgIGp6ICAgICAgZXExMQ0KLSAgICBtb3YgICAgIGVzaSw1DQotICAgIGptcCAgICAgdHJmaW52YWwNCi1lcTExOg0KLSAgICBtb3YgICAgIGVzaSw2DQotICAgIGptcCAgICAgdHJmaW52YWwNCi0NCi1iZWdpbmNvbXBhcmU6DQotICAgIDsgaGVyZSB3ZSBub3cgc2NhbiBhbmQgbWF0Y2ggYmVnaW4gc2FtZQ0KLSAgICBhZGQgICAgIGVkaSw2DQotICAgIGFkZCAgICAgZXNpLDYNCi0gICAgbW92ICAgICBlY3gsKE1BWF9NQVRDSC0oMis0KSkvNCAgICAgOyBzY2FuIGZvciBhdCBtb3N0IE1BWF9NQVRDSCBieXRlcw0KLSAgICByZXBlICAgIGNtcHNkICAgICAgICAgICAgICAgICAgICAgICA7IGxvb3AgdW50aWwgbWlzbWF0Y2gNCi0NCi0gICAgamUgICAgICB0cmZpbiAgICAgICAgICAgICAgICAgICAgICAgOyBnbyB0byB0cmZpbiBpZiBub3QgdW5tYXRjaA0KLTsgd2UgZGV0ZXJtaW5lIHRoZSB1bm1hdGNoIGJ5dGUNCi0gICAgc3ViICAgICBlc2ksNA0KLSAgICBtb3YgICAgIGVkeCxbZWRpLTRdDQotICAgIHhvciAgICAgZWR4LFtlc2ldDQotDQotICAgIG9yICAgICAgZGwsZGwNCi0gICAgam56ICAgICB0cmZpbg0KLSAgICBpbmMgICAgIGVzaQ0KLQ0KLSAgICBvciAgICAgIGR4LGR4DQotICAgIGpueiAgICAgdHJmaW4NCi0gICAgaW5jICAgICBlc2kNCi0NCi0gICAgYW5kICAgICBlZHgsMGZmZmZmZmgNCi0gICAgam56ICAgICB0cmZpbg0KLSAgICBpbmMgICAgIGVzaQ0KLQ0KLXRyZmluOg0KLSAgICBzdWIgICAgIGVzaSxzY2FuICAgICAgICAgIDsgZXNpID0gbGVuDQotdHJmaW52YWw6DQotOyBoZXJlIHdlIGhhdmUgZmluaXNlZCBjb21wYXJlLCBhbmQgZXNpIGNvbnRhaW4gbGVuIG9mIGVxdWFsIHN0cmluZw0KLSAgICBjbXAgICAgIGVzaSxiZXN0X2xlbiAgICAgICAgOyBpZiBsZW4gPiBiZXN0X2xlbiwgZ28gbmV3YmVzdGxlbg0KLSAgICBqYSAgICAgIHNob3J0IG5ld2Jlc3RsZW4NCi07IG5vdyB3ZSByZXN0b3JlIGVkeCwgZWN4IGFuZCBlc2ksIGZvciB0aGUgYmlnIGxvb3ANCi0gICAgbW92ICAgICBlc2kscHJldg0KLSAgICBtb3YgICAgIGVjeCxsaW1pdA0KLSAgICBtb3YgICAgIGVkeCx3aW5kb3cNCi0gICAgam1wICAgICBjb250bG9vcDMNCi0NCi1uZXdiZXN0bGVuOg0KLSAgICBtb3YgICAgIGJlc3RfbGVuLGVzaSAgICAgICAgOyBsZW4gYmVjb21lIGJlc3RfbGVuDQotDQotICAgIG1vdiAgICAgbWF0Y2hfc3RhcnQsZWF4ICAgICA7IHNhdmUgbmV3IHBvc2l0aW9uIGFzIG1hdGNoX3N0YXJ0DQotICAgIGNtcCAgICAgZXNpLG5pY2VfbWF0Y2ggICAgICA7IGlmIGJlc3RfbGVuID49IG5pY2VfbWF0Y2gsIGV4aXQNCi0gICAgamFlICAgICBleGl0bG9vcA0KLSAgICBtb3YgICAgIGVjeCxzY2FuDQotICAgIG1vdiAgICAgZWR4LHdpbmRvdyAgICAgICAgICA7IHJlc3RvcmUgZWR4PXdpbmRvdw0KLSAgICBhZGQgICAgIGVjeCxlc2kNCi0gICAgYWRkICAgICBlc2ksZWR4DQotDQotICAgIGRlYyAgICAgZXNpDQotICAgIG1vdiAgICAgd2luZG93bGVuLGVzaSAgICAgICA7IHdpbmRvd2xlbiA9IHdpbmRvdyArIGJlc3RfbGVuLTENCi0gICAgbW92ICAgICBieCxbZWN4LTFdICAgICAgICAgIDsgYnggPSAqKHNjYW4rYmVzdF9sZW4tMSkgPSBzY2FuX2VuZA0KLQ0KLTsgbm93IHdlIHJlc3RvcmUgZWN4IGFuZCBlc2ksIGZvciB0aGUgYmlnIGxvb3AgOg0KLSAgICBtb3YgICAgIGVzaSxwcmV2DQotICAgIG1vdiAgICAgZWN4LGxpbWl0DQotICAgIGptcCAgICAgY29udGxvb3AzDQotDQotZXhpdGxvb3A6DQotOyBleGl0IDogcy0+bWF0Y2hfc3RhcnQ9bWF0Y2hfc3RhcnQNCi0gICAgbW92ICAgICBlYngsbWF0Y2hfc3RhcnQNCi0gICAgbW92ICAgICBlYnAsc3RyX3MNCi0gICAgbW92ICAgICBlY3gsYmVzdF9sZW4NCi0gICAgbW92ICAgICBkd29yZCBwdHIgW2VicCtkZXBfbWF0Y2hfc3RhcnRdLGVieA0KLSAgICBtb3YgICAgIGVheCxkd29yZCBwdHIgW2VicCtkZXBfbG9va2FoZWFkXQ0KLSAgICBjbXAgICAgIGVjeCxlYXgNCi0gICAgamEgICAgICBtaW5leGxvDQotICAgIG1vdiAgICAgZWF4LGVjeA0KLW1pbmV4bG86DQotOyByZXR1cm4gbWluKGJlc3RfbGVuLHMtPmxvb2thaGVhZCkNCi0NCi07IHJlc3RvcmUgc3RhY2sgYW5kIHJlZ2lzdGVyIGVieCxlc2ksZWRpLGVicA0KLSAgICBhZGQgICAgIGVzcCxOYlN0YWNrQWRkDQotDQotICAgIHBvcCAgICAgZWJ4DQotICAgIHBvcCAgICAgZXNpDQotICAgIHBvcCAgICAgZWRpDQotICAgIHBvcCAgICAgZWJwDQotICAgIHJldA0KLUluZm9BdXRob3I6DQotOyBwbGVhc2UgZG9uJ3QgcmVtb3ZlIHRoaXMgc3RyaW5nICENCi07IFlvdXIgYXJlIGZyZWUgdXNlIGd2bWF0MzIgaW4gYW55IGZyZSBvciBjb21tZXJjaWFsIGFwcHMgaWYgeW91IGRvbid0IHJlbW92ZSB0aGUgc3RyaW5nIGluIHRoZSBiaW5hcnkhDQotICAgIGRiICAgICAwZGgsMGFoLCJHVk1hdDMyIG9wdGltaXNlZCBhc3NlbWJseSBjb2RlIHdyaXR0ZW4gMTk5Ni05OCBieSBHaWxsZXMgVm9sbGFudCIsMGRoLDBhaA0KLQ0KLQ0KLQ0KLUlGREVGIE5PVU5ERVJMSU5FDQotbG9uZ2VzdF9tYXRjaF83ZmZmICAgZW5kcA0KLUVMU0UNCi1fbG9uZ2VzdF9tYXRjaF83ZmZmICBlbmRwDQotRU5ESUYNCi0NCi0NCi1JRkRFRiBOT1VOREVSTElORQ0KLWNwdWRldGVjdDMyICAgICBwcm9jIG5lYXINCi1FTFNFDQotX2NwdWRldGVjdDMyICAgIHByb2MgbmVhcg0KLUVORElGDQotDQotICAgIHB1c2ggICAgZWJ4DQotDQotICAgIHB1c2hmZCAgICAgICAgICAgICAgICAgIDsgcHVzaCBvcmlnaW5hbCBFRkxBR1MNCi0gICAgcG9wICAgICBlYXggICAgICAgICAgICAgOyBnZXQgb3JpZ2luYWwgRUZMQUdTDQotICAgIG1vdiAgICAgZWN4LCBlYXggICAgICAgIDsgc2F2ZSBvcmlnaW5hbCBFRkxBR1MNCi0gICAgeG9yICAgICBlYXgsIDQwMDAwaCAgICAgOyBmbGlwIEFDIGJpdCBpbiBFRkxBR1MNCi0gICAgcHVzaCAgICBlYXggICAgICAgICAgICAgOyBzYXZlIG5ldyBFRkxBR1MgdmFsdWUgb24gc3RhY2sNCi0gICAgcG9wZmQgICAgICAgICAgICAgICAgICAgOyByZXBsYWNlIGN1cnJlbnQgRUZMQUdTIHZhbHVlDQotICAgIHB1c2hmZCAgICAgICAgICAgICAgICAgIDsgZ2V0IG5ldyBFRkxBR1MNCi0gICAgcG9wICAgICBlYXggICAgICAgICAgICAgOyBzdG9yZSBuZXcgRUZMQUdTIGluIEVBWA0KLSAgICB4b3IgICAgIGVheCwgZWN4ICAgICAgICA7IGNhbpJ0IHRvZ2dsZSBBQyBiaXQsIHByb2Nlc3Nvcj04MDM4Ng0KLSAgICBqeiAgICAgIGVuZF9jcHVfaXNfMzg2ICA7IGp1bXAgaWYgODAzODYgcHJvY2Vzc29yDQotICAgIHB1c2ggICAgZWN4DQotICAgIHBvcGZkICAgICAgICAgICAgICAgICAgIDsgcmVzdG9yZSBBQyBiaXQgaW4gRUZMQUdTIGZpcnN0DQotDQotICAgIHB1c2hmZA0KLSAgICBwdXNoZmQNCi0gICAgcG9wICAgICBlY3gNCi0NCi0gICAgbW92ICAgICBlYXgsIGVjeCAgICAgICAgOyBnZXQgb3JpZ2luYWwgRUZMQUdTDQotICAgIHhvciAgICAgZWF4LCAyMDAwMDBoICAgIDsgZmxpcCBJRCBiaXQgaW4gRUZMQUdTDQotICAgIHB1c2ggICAgZWF4ICAgICAgICAgICAgIDsgc2F2ZSBuZXcgRUZMQUdTIHZhbHVlIG9uIHN0YWNrDQotICAgIHBvcGZkICAgICAgICAgICAgICAgICAgIDsgcmVwbGFjZSBjdXJyZW50IEVGTEFHUyB2YWx1ZQ0KLSAgICBwdXNoZmQgICAgICAgICAgICAgICAgICA7IGdldCBuZXcgRUZMQUdTDQotICAgIHBvcCAgICAgZWF4ICAgICAgICAgICAgIDsgc3RvcmUgbmV3IEVGTEFHUyBpbiBFQVgNCi0gICAgcG9wZmQgICAgICAgICAgICAgICAgICAgOyByZXN0b3JlIG9yaWdpbmFsIEVGTEFHUw0KLSAgICB4b3IgICAgIGVheCwgZWN4ICAgICAgICA7IGNhbpJ0IHRvZ2dsZSBJRCBiaXQsDQotICAgIGplICAgICAgaXNfb2xkXzQ4NiAgICAgIDsgcHJvY2Vzc29yPW9sZA0KLQ0KLSAgICBtb3YgICAgIGVheCwxDQotICAgIGRiICAgICAgMGZoLDBhMmggICAgICAgIDtDUFVJRA0KLQ0KLWV4aXRjcHVkZXRlY3Q6DQotICAgIHBvcCBlYngNCi0gICAgcmV0DQotDQotZW5kX2NwdV9pc18zODY6DQotICAgIG1vdiAgICAgZWF4LDAzMDBoDQotICAgIGptcCAgICAgZXhpdGNwdWRldGVjdA0KLQ0KLWlzX29sZF80ODY6DQotICAgIG1vdiAgICAgZWF4LDA0MDBoDQotICAgIGptcCAgICAgZXhpdGNwdWRldGVjdA0KLQ0KLUlGREVGIE5PVU5ERVJMSU5FDQotY3B1ZGV0ZWN0MzIgICAgIGVuZHANCi1FTFNFDQotX2NwdWRldGVjdDMyICAgIGVuZHANCi1FTkRJRg0KLUVORElGDQotDQotTUFYX01BVENIICAgICAgIGVxdSAgICAgMjU4DQotTUlOX01BVENIICAgICAgIGVxdSAgICAgMw0KLU1JTl9MT09LQUhFQUQgICBlcXUgICAgIChNQVhfTUFUQ0ggKyBNSU5fTUFUQ0ggKyAxKQ0KLU1BWF9NQVRDSF84XyAgICAgZXF1ICAgICAoKE1BWF9NQVRDSCArIDcpIEFORCAwRkZGMGgpDQotDQotDQotOzs7IHN0YWNrIGZyYW1lIG9mZnNldHMNCi0NCi1jaGFpbmxlbndtYXNrICAgZXF1ICBlc3AgKyAwICAgIDsgaGlnaCB3b3JkOiBjdXJyZW50IGNoYWluIGxlbg0KLSAgICAgICAgICAgICAgICAgICAgOyBsb3cgd29yZDogcy0+d21hc2sNCi13aW5kb3cgICAgICBlcXUgIGVzcCArIDQgICAgOyBsb2NhbCBjb3B5IG9mIHMtPndpbmRvdw0KLXdpbmRvd2Jlc3RsZW4gICBlcXUgIGVzcCArIDggICAgOyBzLT53aW5kb3cgKyBiZXN0bGVuDQotc2NhbnN0YXJ0ICAgZXF1ICBlc3AgKyAxNiAgIDsgZmlyc3QgdHdvIGJ5dGVzIG9mIHN0cmluZw0KLXNjYW5lbmQgICAgIGVxdSAgZXNwICsgMTIgICA7IGxhc3QgdHdvIGJ5dGVzIG9mIHN0cmluZw0KLXNjYW5hbGlnbiAgIGVxdSAgZXNwICsgMjAgICA7IGR3b3JkLW1pc2FsaWdubWVudCBvZiBzdHJpbmcNCi1uaWNlbWF0Y2ggICBlcXUgIGVzcCArIDI0ICAgOyBhIGdvb2QgZW5vdWdoIG1hdGNoIHNpemUNCi1iZXN0bGVuICAgICBlcXUgIGVzcCArIDI4ICAgOyBzaXplIG9mIGJlc3QgbWF0Y2ggc28gZmFyDQotc2NhbiAgICAgICAgZXF1ICBlc3AgKyAzMiAgIDsgcHRyIHRvIHN0cmluZyB3YW50aW5nIG1hdGNoDQotDQotTG9jYWxWYXJzU2l6ZSAgIGVxdSAzNg0KLTsgICBzYXZlZCBlYnggICBieXRlIGVzcCArIDM2DQotOyAgIHNhdmVkIGVkaSAgIGJ5dGUgZXNwICsgNDANCi07ICAgc2F2ZWQgZXNpICAgYnl0ZSBlc3AgKyA0NA0KLTsgICBzYXZlZCBlYnAgICBieXRlIGVzcCArIDQ4DQotOyAgIHJldHVybiBhZGRyZXNzICBieXRlIGVzcCArIDUyDQotZGVmbGF0ZXN0YXRlICAgIGVxdSAgZXNwICsgNTYgICA7IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMNCi1jdXJtYXRjaCAgICBlcXUgIGVzcCArIDYwDQotDQotOzs7IE9mZnNldHMgZm9yIGZpZWxkcyBpbiB0aGUgZGVmbGF0ZV9zdGF0ZSBzdHJ1Y3R1cmUuIFRoZXNlIG51bWJlcnMNCi07OzsgYXJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUgZGVmaW5pdGlvbiBvZiBkZWZsYXRlX3N0YXRlLCB3aXRoIHRoZQ0KLTs7OyBhc3N1bXB0aW9uIHRoYXQgdGhlIGNvbXBpbGVyIHdpbGwgZHdvcmQtYWxpZ24gdGhlIGZpZWxkcy4gKFRodXMsDQotOzs7IGNoYW5naW5nIHRoZSBkZWZpbml0aW9uIG9mIGRlZmxhdGVfc3RhdGUgY291bGQgZWFzaWx5IGNhdXNlIHRoaXMNCi07OzsgcHJvZ3JhbSB0byBjcmFzaCBob3JyaWJseSwgd2l0aG91dCBzbyBtdWNoIGFzIGEgd2FybmluZyBhdA0KLTs7OyBjb21waWxlIHRpbWUuIFNpZ2guKQ0KLQ0KLWRzV1NpemUgICAgIGVxdSAzNit6bGliMTIyMmFkZA0KLWRzV01hc2sgICAgIGVxdSA0NCt6bGliMTIyMmFkZA0KLWRzV2luZG93ICAgIGVxdSA0OCt6bGliMTIyMmFkZA0KLWRzUHJldiAgICAgIGVxdSA1Nit6bGliMTIyMmFkZA0KLWRzTWF0Y2hMZW4gIGVxdSA4OCt6bGliMTIyMmFkZA0KLWRzUHJldk1hdGNoIGVxdSA5Mit6bGliMTIyMmFkZA0KLWRzU3RyU3RhcnQgIGVxdSAxMDAremxpYjEyMjJhZGQNCi1kc01hdGNoU3RhcnQgICAgZXF1IDEwNCt6bGliMTIyMmFkZA0KLWRzTG9va2FoZWFkIGVxdSAxMDgremxpYjEyMjJhZGQNCi1kc1ByZXZMZW4gICBlcXUgMTEyK3psaWIxMjIyYWRkDQotZHNNYXhDaGFpbkxlbiAgIGVxdSAxMTYremxpYjEyMjJhZGQNCi1kc0dvb2RNYXRjaCBlcXUgMTMyK3psaWIxMjIyYWRkDQotZHNOaWNlTWF0Y2ggZXF1IDEzNit6bGliMTIyMmFkZA0KLQ0KLQ0KLTs7OyBtYXRjaC5hc20gLS0gUGVudGl1bS1Qcm8tb3B0aW1pemVkIHZlcnNpb24gb2YgbG9uZ2VzdF9tYXRjaCgpDQotOzs7IFdyaXR0ZW4gZm9yIHpsaWIgMS4xLjINCi07OzsgQ29weXJpZ2h0IChDKSAxOTk4IEJyaWFuIFJhaXRlciA8YnJlYWRib3hAbXVwcGV0bGFicy5jb20+DQotOzs7IFlvdSBjYW4gbG9vayBhdCBodHRwOi8vd3d3Lm11cHBldGxhYnMuY29tL35icmVhZGJveC9zb2Z0d2FyZS9hc3NlbWJseS5odG1sDQotOzs7DQotOzs7IFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdA0KLTs7OyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLg0KLQ0KLTtHTE9CQUwgX2xvbmdlc3RfbWF0Y2gsIF9tYXRjaF9pbml0DQotDQotDQotO1NFQ1RJT04gICAgLnRleHQNCi0NCi07OzsgdUludCBsb25nZXN0X21hdGNoKGRlZmxhdGVfc3RhdGUgKmRlZmxhdGVzdGF0ZSwgSVBvcyBjdXJtYXRjaCkNCi0NCi07X2xvbmdlc3RfbWF0Y2g6DQotSUZERUYgTk9PTERQRU5USVVNQ09ERQ0KLSAgICBJRkRFRiBOT1VOREVSTElORQ0KLSAgICBsb25nZXN0X21hdGNoICAgICAgIHByb2MgbmVhcg0KLSAgICBFTFNFDQotICAgIF9sb25nZXN0X21hdGNoICAgICAgcHJvYyBuZWFyDQotICAgIEVORElGDQotRUxTRQ0KLSAgICBJRkRFRiBOT1VOREVSTElORQ0KLSAgICBsb25nZXN0X21hdGNoXzY4NiAgIHByb2MgbmVhcg0KLSAgICBFTFNFDQotICAgIF9sb25nZXN0X21hdGNoXzY4NiAgcHJvYyBuZWFyDQotICAgIEVORElGDQotRU5ESUYNCi0NCi07OzsgU2F2ZSByZWdpc3RlcnMgdGhhdCB0aGUgY29tcGlsZXIgbWF5IGJlIHVzaW5nLCBhbmQgYWRqdXN0IGVzcCB0bw0KLTs7OyBtYWtlIHJvb20gZm9yIG91ciBzdGFjayBmcmFtZS4NCi0NCi0gICAgICAgIHB1c2ggICAgZWJwDQotICAgICAgICBwdXNoICAgIGVkaQ0KLSAgICAgICAgcHVzaCAgICBlc2kNCi0gICAgICAgIHB1c2ggICAgZWJ4DQotICAgICAgICBzdWIgZXNwLCBMb2NhbFZhcnNTaXplDQotDQotOzs7IFJldHJpZXZlIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMuIGVjeCB3aWxsIGhvbGQgY3VyX21hdGNoDQotOzs7IHRocm91Z2hvdXQgdGhlIGVudGlyZSBmdW5jdGlvbi4gZWR4IHdpbGwgaG9sZCB0aGUgcG9pbnRlciB0byB0aGUNCi07OzsgZGVmbGF0ZV9zdGF0ZSBzdHJ1Y3R1cmUgZHVyaW5nIHRoZSBmdW5jdGlvbidzIHNldHVwIChiZWZvcmUNCi07OzsgZW50ZXJpbmcgdGhlIG1haW4gbG9vcC4NCi0NCi0gICAgICAgIG1vdiBlZHgsIFtkZWZsYXRlc3RhdGVdDQotICAgICAgICBtb3YgZWN4LCBbY3VybWF0Y2hdDQotDQotOzs7IHVJbnQgd21hc2sgPSBzLT53X21hc2s7DQotOzs7IHVuc2lnbmVkIGNoYWluX2xlbmd0aCA9IHMtPm1heF9jaGFpbl9sZW5ndGg7DQotOzs7IGlmIChzLT5wcmV2X2xlbmd0aCA+PSBzLT5nb29kX21hdGNoKSB7DQotOzs7ICAgICBjaGFpbl9sZW5ndGggPj49IDI7DQotOzs7IH0NCi0NCi0gICAgICAgIG1vdiBlYXgsIFtlZHggKyBkc1ByZXZMZW5dDQotICAgICAgICBtb3YgZWJ4LCBbZWR4ICsgZHNHb29kTWF0Y2hdDQotICAgICAgICBjbXAgZWF4LCBlYngNCi0gICAgICAgIG1vdiBlYXgsIFtlZHggKyBkc1dNYXNrXQ0KLSAgICAgICAgbW92IGVieCwgW2VkeCArIGRzTWF4Q2hhaW5MZW5dDQotICAgICAgICBqbCAgTGFzdE1hdGNoR29vZA0KLSAgICAgICAgc2hyIGVieCwgMg0KLUxhc3RNYXRjaEdvb2Q6DQotDQotOzs7IGNoYWlubGVuIGlzIGRlY3JlbWVudGVkIG9uY2UgYmVmb3JlaGFuZCBzbyB0aGF0IHRoZSBmdW5jdGlvbiBjYW4NCi07OzsgdXNlIHRoZSBzaWduIGZsYWcgaW5zdGVhZCBvZiB0aGUgemVybyBmbGFnIGZvciB0aGUgZXhpdCB0ZXN0Lg0KLTs7OyBJdCBpcyB0aGVuIHNoaWZ0ZWQgaW50byB0aGUgaGlnaCB3b3JkLCB0byBtYWtlIHJvb20gZm9yIHRoZSB3bWFzaw0KLTs7OyB2YWx1ZSwgd2hpY2ggaXQgd2lsbCBhbHdheXMgYWNjb21wYW55Lg0KLQ0KLSAgICAgICAgZGVjIGVieA0KLSAgICAgICAgc2hsIGVieCwgMTYNCi0gICAgICAgIG9yICBlYngsIGVheA0KLSAgICAgICAgbW92IFtjaGFpbmxlbndtYXNrXSwgZWJ4DQotDQotOzs7IGlmICgodUludCluaWNlX21hdGNoID4gcy0+bG9va2FoZWFkKSBuaWNlX21hdGNoID0gcy0+bG9va2FoZWFkOw0KLQ0KLSAgICAgICAgbW92IGVheCwgW2VkeCArIGRzTmljZU1hdGNoXQ0KLSAgICAgICAgbW92IGVieCwgW2VkeCArIGRzTG9va2FoZWFkXQ0KLSAgICAgICAgY21wIGVieCwgZWF4DQotICAgICAgICBqbCAgTG9va2FoZWFkTGVzcw0KLSAgICAgICAgbW92IGVieCwgZWF4DQotTG9va2FoZWFkTGVzczogIG1vdiBbbmljZW1hdGNoXSwgZWJ4DQotDQotOzs7IHJlZ2lzdGVyIEJ5dGVmICpzY2FuID0gcy0+d2luZG93ICsgcy0+c3Ryc3RhcnQ7DQotDQotICAgICAgICBtb3YgZXNpLCBbZWR4ICsgZHNXaW5kb3ddDQotICAgICAgICBtb3YgW3dpbmRvd10sIGVzaQ0KLSAgICAgICAgbW92IGVicCwgW2VkeCArIGRzU3RyU3RhcnRdDQotICAgICAgICBsZWEgZWRpLCBbZXNpICsgZWJwXQ0KLSAgICAgICAgbW92IFtzY2FuXSwgZWRpDQotDQotOzs7IERldGVybWluZSBob3cgbWFueSBieXRlcyB0aGUgc2NhbiBwdHIgaXMgb2ZmIGZyb20gYmVpbmcNCi07OzsgZHdvcmQtYWxpZ25lZC4NCi0NCi0gICAgICAgIG1vdiBlYXgsIGVkaQ0KLSAgICAgICAgbmVnIGVheA0KLSAgICAgICAgYW5kIGVheCwgMw0KLSAgICAgICAgbW92IFtzY2FuYWxpZ25dLCBlYXgNCi0NCi07OzsgSVBvcyBsaW1pdCA9IHMtPnN0cnN0YXJ0ID4gKElQb3MpTUFYX0RJU1QocykgPw0KLTs7OyAgICAgcy0+c3Ryc3RhcnQgLSAoSVBvcylNQVhfRElTVChzKSA6IE5JTDsNCi0NCi0gICAgICAgIG1vdiBlYXgsIFtlZHggKyBkc1dTaXplXQ0KLSAgICAgICAgc3ViIGVheCwgTUlOX0xPT0tBSEVBRA0KLSAgICAgICAgc3ViIGVicCwgZWF4DQotICAgICAgICBqZyAgTGltaXRQb3NpdGl2ZQ0KLSAgICAgICAgeG9yIGVicCwgZWJwDQotTGltaXRQb3NpdGl2ZToNCi0NCi07OzsgaW50IGJlc3RfbGVuID0gcy0+cHJldl9sZW5ndGg7DQotDQotICAgICAgICBtb3YgZWF4LCBbZWR4ICsgZHNQcmV2TGVuXQ0KLSAgICAgICAgbW92IFtiZXN0bGVuXSwgZWF4DQotDQotOzs7IFN0b3JlIHRoZSBzdW0gb2Ygcy0+d2luZG93ICsgYmVzdF9sZW4gaW4gZXNpIGxvY2FsbHksIGFuZCBpbiBlc2kuDQotDQotICAgICAgICBhZGQgZXNpLCBlYXgNCi0gICAgICAgIG1vdiBbd2luZG93YmVzdGxlbl0sIGVzaQ0KLQ0KLTs7OyByZWdpc3RlciB1c2ggc2Nhbl9zdGFydCA9ICoodXNoZiopc2NhbjsNCi07OzsgcmVnaXN0ZXIgdXNoIHNjYW5fZW5kICAgPSAqKHVzaGYqKShzY2FuK2Jlc3RfbGVuLTEpOw0KLTs7OyBQb3NmICpwcmV2ID0gcy0+cHJldjsNCi0NCi0gICAgICAgIG1vdnp4ICAgZWJ4LCB3b3JkIHB0ciBbZWRpXQ0KLSAgICAgICAgbW92IFtzY2Fuc3RhcnRdLCBlYngNCi0gICAgICAgIG1vdnp4ICAgZWJ4LCB3b3JkIHB0ciBbZWRpICsgZWF4IC0gMV0NCi0gICAgICAgIG1vdiBbc2NhbmVuZF0sIGVieA0KLSAgICAgICAgbW92IGVkaSwgW2VkeCArIGRzUHJldl0NCi0NCi07OzsgSnVtcCBpbnRvIHRoZSBtYWluIGxvb3AuDQotDQotICAgICAgICBtb3YgZWR4LCBbY2hhaW5sZW53bWFza10NCi0gICAgICAgIGptcCBzaG9ydCBMb29wRW50cnkNCi0NCi1hbGlnbiA0DQotDQotOzs7IGRvIHsNCi07OzsgICAgIG1hdGNoID0gcy0+d2luZG93ICsgY3VyX21hdGNoOw0KLTs7OyAgICAgaWYgKCoodXNoZiopKG1hdGNoK2Jlc3RfbGVuLTEpICE9IHNjYW5fZW5kIHx8DQotOzs7ICAgICAgICAgKih1c2hmKiltYXRjaCAhPSBzY2FuX3N0YXJ0KSBjb250aW51ZTsNCi07OzsgICAgIFsuLi5dDQotOzs7IH0gd2hpbGUgKChjdXJfbWF0Y2ggPSBwcmV2W2N1cl9tYXRjaCAmIHdtYXNrXSkgPiBsaW1pdA0KLTs7OyAgICAgICAgICAmJiAtLWNoYWluX2xlbmd0aCAhPSAwKTsNCi07OzsNCi07OzsgSGVyZSBpcyB0aGUgaW5uZXIgbG9vcCBvZiB0aGUgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiB3aWxsIHNwZW5kIHRoZQ0KLTs7OyBtYWpvcml0eSBvZiBpdHMgdGltZSBpbiB0aGlzIGxvb3AsIGFuZCBtYWpvcml0eSBvZiB0aGF0IHRpbWUgd2lsbA0KLTs7OyBiZSBzcGVudCBpbiB0aGUgZmlyc3QgdGVuIGluc3RydWN0aW9ucy4NCi07OzsNCi07OzsgV2l0aGluIHRoaXMgbG9vcDoNCi07OzsgZWJ4ID0gc2NhbmVuZA0KLTs7OyBlY3ggPSBjdXJtYXRjaA0KLTs7OyBlZHggPSBjaGFpbmxlbndtYXNrIC0gaS5lLiwgKChjaGFpbmxlbiA8PCAxNikgfCB3bWFzaykNCi07OzsgZXNpID0gd2luZG93YmVzdGxlbiAtIGkuZS4sICh3aW5kb3cgKyBiZXN0bGVuKQ0KLTs7OyBlZGkgPSBwcmV2DQotOzs7IGVicCA9IGxpbWl0DQotDQotTG9va3VwTG9vcDoNCi0gICAgICAgIGFuZCBlY3gsIGVkeA0KLSAgICAgICAgbW92enggICBlY3gsIHdvcmQgcHRyIFtlZGkgKyBlY3gqMl0NCi0gICAgICAgIGNtcCBlY3gsIGVicA0KLSAgICAgICAgamJlIExlYXZlTm93DQotICAgICAgICBzdWIgZWR4LCAwMDAxMDAwMGgNCi0gICAgICAgIGpzICBMZWF2ZU5vdw0KLUxvb3BFbnRyeTogIG1vdnp4ICAgZWF4LCB3b3JkIHB0ciBbZXNpICsgZWN4IC0gMV0NCi0gICAgICAgIGNtcCBlYXgsIGVieA0KLSAgICAgICAgam56IExvb2t1cExvb3ANCi0gICAgICAgIG1vdiBlYXgsIFt3aW5kb3ddDQotICAgICAgICBtb3Z6eCAgIGVheCwgd29yZCBwdHIgW2VheCArIGVjeF0NCi0gICAgICAgIGNtcCBlYXgsIFtzY2Fuc3RhcnRdDQotICAgICAgICBqbnogTG9va3VwTG9vcA0KLQ0KLTs7OyBTdG9yZSB0aGUgY3VycmVudCB2YWx1ZSBvZiBjaGFpbmxlbi4NCi0NCi0gICAgICAgIG1vdiBbY2hhaW5sZW53bWFza10sIGVkeA0KLQ0KLTs7OyBQb2ludCBlZGkgdG8gdGhlIHN0cmluZyB1bmRlciBzY3J1dGlueSwgYW5kIGVzaSB0byB0aGUgc3RyaW5nIHdlDQotOzs7IGFyZSBob3BpbmcgdG8gbWF0Y2ggaXQgdXAgd2l0aC4gSW4gYWN0dWFsaXR5LCBlc2kgYW5kIGVkaSBhcmUNCi07OzsgYm90aCBwb2ludGVkIChNQVhfTUFUQ0hfOCAtIHNjYW5hbGlnbikgYnl0ZXMgYWhlYWQsIGFuZCBlZHggaXMNCi07OzsgaW5pdGlhbGl6ZWQgdG8gLShNQVhfTUFUQ0hfOCAtIHNjYW5hbGlnbikuDQotDQotICAgICAgICBtb3YgZXNpLCBbd2luZG93XQ0KLSAgICAgICAgbW92IGVkaSwgW3NjYW5dDQotICAgICAgICBhZGQgZXNpLCBlY3gNCi0gICAgICAgIG1vdiBlYXgsIFtzY2FuYWxpZ25dDQotICAgICAgICBtb3YgZWR4LCAwZmZmZmZlZjhoOyAtKE1BWF9NQVRDSF84KQ0KLSAgICAgICAgbGVhIGVkaSwgW2VkaSArIGVheCArIDAxMDhoXSA7TUFYX01BVENIXzhdDQotICAgICAgICBsZWEgZXNpLCBbZXNpICsgZWF4ICsgMDEwOGhdIDtNQVhfTUFUQ0hfOF0NCi0NCi07OzsgVGVzdCB0aGUgc3RyaW5ncyBmb3IgZXF1YWxpdHksIDggYnl0ZXMgYXQgYSB0aW1lLiBBdCB0aGUgZW5kLA0KLTs7OyBhZGp1c3QgZWR4IHNvIHRoYXQgaXQgaXMgb2Zmc2V0IHRvIHRoZSBleGFjdCBieXRlIHRoYXQgbWlzbWF0Y2hlZC4NCi07OzsNCi07OzsgV2UgYWxyZWFkeSBrbm93IGF0IHRoaXMgcG9pbnQgdGhhdCB0aGUgZmlyc3QgdGhyZWUgYnl0ZXMgb2YgdGhlDQotOzs7IHN0cmluZ3MgbWF0Y2ggZWFjaCBvdGhlciwgYW5kIHRoZXkgY2FuIGJlIHNhZmVseSBwYXNzZWQgb3ZlciBiZWZvcmUNCi07Ozsgc3RhcnRpbmcgdGhlIGNvbXBhcmUgbG9vcC4gU28gd2hhdCB0aGlzIGNvZGUgZG9lcyBpcyBza2lwIG92ZXIgMC0zDQotOzs7IGJ5dGVzLCBhcyBtdWNoIGFzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBkd29yZC1hbGlnbiB0aGUgZWRpDQotOzs7IHBvaW50ZXIuIChlc2kgd2lsbCBzdGlsbCBiZSBtaXNhbGlnbmVkIHRocmVlIHRpbWVzIG91dCBvZiBmb3VyLikNCi07OzsNCi07OzsgSXQgc2hvdWxkIGJlIGNvbmZlc3NlZCB0aGF0IHRoaXMgbG9vcCB1c3VhbGx5IGRvZXMgbm90IHJlcHJlc2VudA0KLTs7OyBtdWNoIG9mIHRoZSB0b3RhbCBydW5uaW5nIHRpbWUuIFJlcGxhY2luZyBpdCB3aXRoIGEgbW9yZQ0KLTs7OyBzdHJhaWdodGZvcndhcmQgInJlcCBjbXBzYiIgd291bGQgbm90IGRyYXN0aWNhbGx5IGRlZ3JhZGUNCi07OzsgcGVyZm9ybWFuY2UuDQotDQotTG9vcENtcHM6DQotICAgICAgICBtb3YgZWF4LCBbZXNpICsgZWR4XQ0KLSAgICAgICAgeG9yIGVheCwgW2VkaSArIGVkeF0NCi0gICAgICAgIGpueiBMZWF2ZUxvb3BDbXBzDQotICAgICAgICBtb3YgZWF4LCBbZXNpICsgZWR4ICsgNF0NCi0gICAgICAgIHhvciBlYXgsIFtlZGkgKyBlZHggKyA0XQ0KLSAgICAgICAgam56IExlYXZlTG9vcENtcHM0DQotICAgICAgICBhZGQgZWR4LCA4DQotICAgICAgICBqbnogTG9vcENtcHMNCi0gICAgICAgIGptcCBzaG9ydCBMZW5NYXhpbXVtDQotTGVhdmVMb29wQ21wczQ6IGFkZCBlZHgsIDQNCi1MZWF2ZUxvb3BDbXBzOiAgdGVzdCAgICBlYXgsIDAwMDBGRkZGaA0KLSAgICAgICAgam56IExlbkxvd2VyDQotICAgICAgICBhZGQgZWR4LCAgMg0KLSAgICAgICAgc2hyIGVheCwgMTYNCi1MZW5Mb3dlcjogICBzdWIgYWwsIDENCi0gICAgICAgIGFkYyBlZHgsIDANCi0NCi07OzsgQ2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgdGhlIG1hdGNoLiBJZiBpdCBpcyBsb25nZXIgdGhhbiBNQVhfTUFUQ0gsDQotOzs7IHRoZW4gYXV0b21hdGljYWxseSBhY2NlcHQgaXQgYXMgdGhlIGJlc3QgcG9zc2libGUgbWF0Y2ggYW5kIGxlYXZlLg0KLQ0KLSAgICAgICAgbGVhIGVheCwgW2VkaSArIGVkeF0NCi0gICAgICAgIG1vdiBlZGksIFtzY2FuXQ0KLSAgICAgICAgc3ViIGVheCwgZWRpDQotICAgICAgICBjbXAgZWF4LCBNQVhfTUFUQ0gNCi0gICAgICAgIGpnZSBMZW5NYXhpbXVtDQotDQotOzs7IElmIHRoZSBsZW5ndGggb2YgdGhlIG1hdGNoIGlzIG5vdCBsb25nZXIgdGhhbiB0aGUgYmVzdCBtYXRjaCB3ZQ0KLTs7OyBoYXZlIHNvIGZhciwgdGhlbiBmb3JnZXQgaXQgYW5kIHJldHVybiB0byB0aGUgbG9va3VwIGxvb3AuDQotDQotICAgICAgICBtb3YgZWR4LCBbZGVmbGF0ZXN0YXRlXQ0KLSAgICAgICAgbW92IGVieCwgW2Jlc3RsZW5dDQotICAgICAgICBjbXAgZWF4LCBlYngNCi0gICAgICAgIGpnICBMb25nZXJNYXRjaA0KLSAgICAgICAgbW92IGVzaSwgW3dpbmRvd2Jlc3RsZW5dDQotICAgICAgICBtb3YgZWRpLCBbZWR4ICsgZHNQcmV2XQ0KLSAgICAgICAgbW92IGVieCwgW3NjYW5lbmRdDQotICAgICAgICBtb3YgZWR4LCBbY2hhaW5sZW53bWFza10NCi0gICAgICAgIGptcCBMb29rdXBMb29wDQotDQotOzs7ICAgICAgICAgcy0+bWF0Y2hfc3RhcnQgPSBjdXJfbWF0Y2g7DQotOzs7ICAgICAgICAgYmVzdF9sZW4gPSBsZW47DQotOzs7ICAgICAgICAgaWYgKGxlbiA+PSBuaWNlX21hdGNoKSBicmVhazsNCi07OzsgICAgICAgICBzY2FuX2VuZCA9ICoodXNoZiopKHNjYW4rYmVzdF9sZW4tMSk7DQotDQotTG9uZ2VyTWF0Y2g6ICAgIG1vdiBlYngsIFtuaWNlbWF0Y2hdDQotICAgICAgICBtb3YgW2Jlc3RsZW5dLCBlYXgNCi0gICAgICAgIG1vdiBbZWR4ICsgZHNNYXRjaFN0YXJ0XSwgZWN4DQotICAgICAgICBjbXAgZWF4LCBlYngNCi0gICAgICAgIGpnZSBMZWF2ZU5vdw0KLSAgICAgICAgbW92IGVzaSwgW3dpbmRvd10NCi0gICAgICAgIGFkZCBlc2ksIGVheA0KLSAgICAgICAgbW92IFt3aW5kb3diZXN0bGVuXSwgZXNpDQotICAgICAgICBtb3Z6eCAgIGVieCwgd29yZCBwdHIgW2VkaSArIGVheCAtIDFdDQotICAgICAgICBtb3YgZWRpLCBbZWR4ICsgZHNQcmV2XQ0KLSAgICAgICAgbW92IFtzY2FuZW5kXSwgZWJ4DQotICAgICAgICBtb3YgZWR4LCBbY2hhaW5sZW53bWFza10NCi0gICAgICAgIGptcCBMb29rdXBMb29wDQotDQotOzs7IEFjY2VwdCB0aGUgY3VycmVudCBzdHJpbmcsIHdpdGggdGhlIG1heGltdW0gcG9zc2libGUgbGVuZ3RoLg0KLQ0KLUxlbk1heGltdW06IG1vdiBlZHgsIFtkZWZsYXRlc3RhdGVdDQotICAgICAgICBtb3YgZHdvcmQgcHRyIFtiZXN0bGVuXSwgTUFYX01BVENIDQotICAgICAgICBtb3YgW2VkeCArIGRzTWF0Y2hTdGFydF0sIGVjeA0KLQ0KLTs7OyBpZiAoKHVJbnQpYmVzdF9sZW4gPD0gcy0+bG9va2FoZWFkKSByZXR1cm4gKHVJbnQpYmVzdF9sZW47DQotOzs7IHJldHVybiBzLT5sb29rYWhlYWQ7DQotDQotTGVhdmVOb3c6DQotICAgICAgICBtb3YgZWR4LCBbZGVmbGF0ZXN0YXRlXQ0KLSAgICAgICAgbW92IGVieCwgW2Jlc3RsZW5dDQotICAgICAgICBtb3YgZWF4LCBbZWR4ICsgZHNMb29rYWhlYWRdDQotICAgICAgICBjbXAgZWJ4LCBlYXgNCi0gICAgICAgIGpnICBMb29rYWhlYWRSZXQNCi0gICAgICAgIG1vdiBlYXgsIGVieA0KLUxvb2thaGVhZFJldDoNCi0NCi07OzsgUmVzdG9yZSB0aGUgc3RhY2sgYW5kIHJldHVybiBmcm9tIHdoZW5jZSB3ZSBjYW1lLg0KLQ0KLSAgICAgICAgYWRkIGVzcCwgTG9jYWxWYXJzU2l6ZQ0KLSAgICAgICAgcG9wIGVieA0KLSAgICAgICAgcG9wIGVzaQ0KLSAgICAgICAgcG9wIGVkaQ0KLSAgICAgICAgcG9wIGVicA0KLQ0KLSAgICAgICAgcmV0DQotOyBwbGVhc2UgZG9uJ3QgcmVtb3ZlIHRoaXMgc3RyaW5nICENCi07IFlvdXIgY2FuIGZyZWVseSB1c2UgZ3ZtYXQzMiBpbiBhbnkgZnJlZSBvciBjb21tZXJjaWFsIGFwcCBpZiB5b3UgZG9uJ3QgcmVtb3ZlIHRoZSBzdHJpbmcgaW4gdGhlIGJpbmFyeSENCi0gICAgZGIgICAgIDBkaCwwYWgsImFzbTY4NiB3aXRoIG1hc20sIG9wdGltaXNlZCBhc3NlbWJseSBjb2RlIGZyb20gQnJpYW4gUmFpdGVyLCB3cml0dGVuIDE5OTgiLDBkaCwwYWgNCi0NCi0NCi1JRkRFRiBOT09MRFBFTlRJVU1DT0RFDQotICAgIElGREVGIE5PVU5ERVJMSU5FDQotICAgIGxvbmdlc3RfbWF0Y2ggICAgICAgZW5kcA0KLSAgICBFTFNFDQotICAgIF9sb25nZXN0X21hdGNoICAgICAgZW5kcA0KLSAgICBFTkRJRg0KLQ0KLSAgICBJRkRFRiBOT1VOREVSTElORQ0KLSAgICBtYXRjaF9pbml0ICAgICAgcHJvYyBuZWFyDQotICAgICAgICAgICAgICAgICAgICByZXQNCi0gICAgbWF0Y2hfaW5pdCAgICAgIGVuZHANCi0gICAgRUxTRQ0KLSAgICBfbWF0Y2hfaW5pdCAgICAgcHJvYyBuZWFyDQotICAgICAgICAgICAgICAgICAgICByZXQNCi0gICAgX21hdGNoX2luaXQgICAgIGVuZHANCi0gICAgRU5ESUYNCi1FTFNFDQotICAgIElGREVGIE5PVU5ERVJMSU5FDQotICAgIGxvbmdlc3RfbWF0Y2hfNjg2ICAgZW5kcA0KLSAgICBFTFNFDQotICAgIF9sb25nZXN0X21hdGNoXzY4NiAgZW5kcA0KLSAgICBFTkRJRg0KLUVORElGDQotDQotX1RFWFQgICBlbmRzDQotZW5kDQpkaWZmIC0tZ2l0IGEvY29udHJpYi9tYXNteDg2L2d2bWF0MzJjLmMgYi9jb250cmliL21hc214ODYvZ3ZtYXQzMmMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FkMmIyNy4uMDAwMDAwMAotLS0gYS9jb250cmliL21hc214ODYvZ3ZtYXQzMmMuYworKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qIGd2bWF0MzIuYyAtLSBDIHBvcnRpb24gb2YgdGhlIG9wdGltaXplZCBsb25nZXN0X21hdGNoIGZvciAzMiBiaXRzIHg4Ng0KLSAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk2IEplYW4tbG91cCBHYWlsbHkgYW5kIEdpbGxlcyBWb2xsYW50Lg0KLSAqIEZpbGUgd3JpdHRlbiBieSBHaWxsZXMgVm9sbGFudCwgYnkgbW9kaWZpeWluZyB0aGUgbG9uZ2VzdF9tYXRjaA0KLSAqICBmcm9tIEplYW4tbG91cCBHYWlsbHkgaW4gZGVmbGF0ZS5jDQotICogIGl0IHByZXBhcmUgYWxsIHBhcmFtZXRlcnMgYW5kIGNhbGwgdGhlIGFzc2VtYmx5IGxvbmdlc3RfbWF0Y2hfZ3Zhc20NCi0gKiAgbG9uZ2VzdF9tYXRjaCBleGVjdXRlIHN0YW5kYXJkIEMgY29kZSBpcyB3bWFzayAhPSAweDdmZmYNCi0gKiAgICAgKGFzc2VtYmx5IGNvZGUgaXMgZmFzdGVyIHdpdGggYSBmaXhlZCB3bWFzaykNCi0gKg0KLSAqIFJlYWQgY29tbWVudCBhdCBiZWdpbm5pbmcgb2YgZ3ZtYXQzMi5hc20gZm9yIG1vcmUgaW5mb3JtYXRpb24NCi0gKi8NCi0NCi0jaWYgZGVmaW5lZChBU01WKSAmJiAoIWRlZmluZWQoTk9PTERQRU5USVVNQ09ERSkpDQotI2luY2x1ZGUgImRlZmxhdGUuaCINCi0NCi0vKiBpZiB5b3VyIEMgY29tcGlsZXIgZG9uJ3QgYWRkIHVuZGVybGluZSBiZWZvcmUgZnVuY3Rpb24gbmFtZSwNCi0gICAgICAgIGRlZmluZSBBRERfVU5ERVJMSU5FX0FTTUZVTkMgKi8NCi0jaWZkZWYgQUREX1VOREVSTElORV9BU01GVU5DDQotI2RlZmluZSBsb25nZXN0X21hdGNoXzdmZmYgX2xvbmdlc3RfbWF0Y2hfN2ZmZg0KLSNkZWZpbmUgbG9uZ2VzdF9tYXRjaF82ODYgIF9sb25nZXN0X21hdGNoXzY4Ng0KLSNkZWZpbmUgY3B1ZGV0ZWN0MzIgICAgICAgIF9jcHVkZXRlY3QzMg0KLSNlbmRpZg0KLQ0KLQ0KLXVuc2lnbmVkIGxvbmcgY3B1ZGV0ZWN0MzIoKTsNCi0NCi11SW50IGxvbmdlc3RfbWF0Y2hfYygNCi0gICAgZGVmbGF0ZV9zdGF0ZSAqcywNCi0gICAgSVBvcyBjdXJfbWF0Y2gpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBtYXRjaCAqLw0KLQ0KLQ0KLXVJbnQgbG9uZ2VzdF9tYXRjaF83ZmZmKA0KLSAgICBkZWZsYXRlX3N0YXRlICpzLA0KLSAgICBJUG9zIGN1cl9tYXRjaCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjdXJyZW50IG1hdGNoICovDQotDQotdUludCBsb25nZXN0X21hdGNoXzY4NigNCi0gICAgZGVmbGF0ZV9zdGF0ZSAqcywNCi0gICAgSVBvcyBjdXJfbWF0Y2gpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBtYXRjaCAqLw0KLQ0KLQ0KLXN0YXRpYyB1SW50IGlJc1BQcm89MjsNCi0NCi12b2lkIG1hdGNoX2luaXQgKCkNCi17DQotICAgIGlJc1BQcm8gPSAoKChjcHVkZXRlY3QzMigpLzB4MTAwKSYweGYpPj02KSA/IDEgOiAwOw0KLX0NCi0NCi11SW50IGxvbmdlc3RfbWF0Y2goDQotICAgIGRlZmxhdGVfc3RhdGUgKnMsDQotICAgIElQb3MgY3VyX21hdGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBtYXRjaCAqLw0KLXsNCi0gICAgaWYgKGlJc1BQcm8hPTApDQotICAgICAgICByZXR1cm4gbG9uZ2VzdF9tYXRjaF82ODYocyxjdXJfbWF0Y2gpOw0KLQ0KLSAgICBpZiAocy0+d19tYXNrICE9IDB4N2ZmZikNCi0gICAgICAgIHJldHVybiBsb25nZXN0X21hdGNoXzY4NihzLGN1cl9tYXRjaCk7DQotDQotICAgIC8qIG5vdyAoKHMtPndfbWFzayA9PSAweDdmZmYpICYmIChpSXNQUHJvPT0wKSkgKi8NCi0gICAgICAgIHJldHVybiBsb25nZXN0X21hdGNoXzdmZmYocyxjdXJfbWF0Y2gpOw0KLX0NCi0NCi0NCi0jZW5kaWYgLyogZGVmaW5lZChBU01WKSAmJiAoIWRlZmluZWQoTk9PTERQRU5USVVNQ09ERSkpICovDQpkaWZmIC0tZ2l0IGEvY29udHJpYi9tYXNteDg2L21hdGNoNjg2LmFzbSBiL2NvbnRyaWIvbWFzbXg4Ni9tYXRjaDY4Ni5hc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVhZjU1NQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvbWFzbXg4Ni9tYXRjaDY4Ni5hc20KQEAgLTAsMCArMSw0NzggQEAKKzsgbWF0Y2g2ODYuYXNtIC0tIEFzbSBwb3J0aW9uIG9mIHRoZSBvcHRpbWl6ZWQgbG9uZ2VzdF9tYXRjaCBmb3IgMzIgYml0cyB4ODYNCis7IENvcHlyaWdodCAoQykgMTk5NS0xOTk2IEplYW4tbG91cCBHYWlsbHksIEJyaWFuIFJhaXRlciBhbmQgR2lsbGVzIFZvbGxhbnQuDQorOyBGaWxlIHdyaXR0ZW4gYnkgR2lsbGVzIFZvbGxhbnQsIGJ5IGNvbnZlcnRpbmcgbWF0Y2g2ODYuUyBmcm9tIEJyaWFuIFJhaXRlcg0KKzsgZm9yIE1BU00uIFRoaXMgaXMgYXMgYXNzZW1ibHkgdmVyc2lvbiBvZiBsb25nZXN0X21hdGNoDQorOyAgZnJvbSBKZWFuLWxvdXAgR2FpbGx5IGluIGRlZmxhdGUuYw0KKzsNCis7ICAgICAgICAgaHR0cDovL3d3dy56bGliLm5ldA0KKzsgICAgICAgICBodHRwOi8vd3d3LndpbmltYWdlLmNvbS96TGliRGxsDQorOyAgICAgICAgIGh0dHA6Ly93d3cubXVwcGV0bGFicy5jb20vfmJyZWFkYm94L3NvZnR3YXJlL2Fzc2VtYmx5Lmh0bWwNCis7DQorOyBGb3IgVmlzdWFsIEMrKyA0LnggYW5kIGhpZ2hlciBhbmQgTUwgNi54IGFuZCBoaWdoZXINCis7ICAgbWwuZXhlIGlzIGRpc3RyaWJ1dGVkIGluDQorOyAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2Rvd25sb2Fkcy9kZXRhaWxzLmFzcHg/RmFtaWx5SUQ9N2ExYzlkYTAtMDUxMC00NGEyLWIwNDItN2VmMzcwNTMwYzY0DQorOw0KKzsgdGhpcyBmaWxlIGNvbnRhaW4gdHdvIGltcGxlbWVudGF0aW9uIG9mIGxvbmdlc3RfbWF0Y2gNCis7DQorOyAgdGhpcyBsb25nZXN0X21hdGNoIHdhcyB3cml0dGVuIGJ5IEJyaWFuIHJhaXRlciAoMTk5OCksIG9wdGltaXplZCBmb3IgUGVudGl1bSBQcm8NCis7ICAgKGFuZCB0aGUgZmFzdGVyIGtub3duIHZlcnNpb24gb2YgbWF0Y2hfaW5pdCBvbiBtb2Rlcm4gQ29yZSAyIER1byBhbmQgQU1EIFBoZW5vbSkNCis7DQorOyAgZm9yIHVzaW5nIGFuIGFzc2VtYmx5IHZlcnNpb24gb2YgbG9uZ2VzdF9tYXRjaCwgeW91IG5lZWQgZGVmaW5lIEFTTVYgaW4gcHJvamVjdA0KKzsNCis7ICAgIGNvbXBpbGUgdGhlIGFzbSBmaWxlIHJ1bm5pbmcNCis7ICAgICAgICAgICBtbCAvY29mZiAvWmkgL2MgL0ZsbWF0Y2g2ODYubHN0IG1hdGNoNjg2LmFzbQ0KKzsgICAgYW5kIGRvIG5vdCBpbmNsdWRlIG1hdGNoNjg2Lm9iaiBpbiB5b3VyIHByb2plY3QNCis7DQorOyBub3RlOiBjb250cmliIG9mIHpMaWIgMS4yLjMgYW5kIGVhcmxpZXIgY29udGFpbmVkIGJvdGggYSBkZXByZWNhdGVkIHZlcnNpb24gZm9yDQorOyAgUGVudGl1bSAocHJpb3IgUGVudGl1bSBQcm8pIGFuZCB0aGlzIHZlcnNpb24gZm9yIFBlbnRpdW0gUHJvIGFuZCBtb2Rlcm4gcHJvY2Vzc29yDQorOyAgd2l0aCBhdXRvc2VsZWN0ICh3aXRoIGNwdSBkZXRlY3Rpb24gY29kZSkNCis7ICBpZiB5b3Ugd2FudCBzdXBwb3J0IHRoZSBvbGQgcGVudGl1bSBvcHRpbWl6YXRpb24sIHlvdSBjYW4gc3RpbGwgdXNlIHRoZXNlIHZlcnNpb24NCis7DQorOyB0aGlzIGZpbGUgaXMgbm90IG9wdGltaXplZCBmb3Igb2xkIHBlbnRpdW0sIGJ1dCBpdCBjb21wYXRpYmxlIHdpdGggYWxsIHg4NiAzMiBiaXRzDQorOyBwcm9jZXNzb3IgKHN0YXJ0aW5nIDgwMzg2KQ0KKzsNCis7DQorOyBzZWUgYmVsb3cgOiB6bGliMTIyMmFkZCBtdXN0IGJlIGFkanVzdGVyIGlmIHlvdSB1c2UgYSB6bGliIHZlcnNpb24gPCAxLjIuMi4yDQorDQorO3VJbnQgbG9uZ2VzdF9tYXRjaChzLCBjdXJfbWF0Y2gpDQorOyAgICBkZWZsYXRlX3N0YXRlICpzOw0KKzsgICAgSVBvcyBjdXJfbWF0Y2g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjdXJyZW50IG1hdGNoICovDQorDQorICAgIE5iU3RhY2sgICAgICAgICBlcXUgICAgIDc2DQorICAgIGN1cl9tYXRjaCAgICAgICBlcXUgICAgIGR3b3JkIHB0cltlc3ArTmJTdGFjay0wXQ0KKyAgICBzdHJfcyAgICAgICAgICAgZXF1ICAgICBkd29yZCBwdHJbZXNwK05iU3RhY2stNF0NCis7IDUgZHdvcmQgb24gdG9wIChyZXQsZWJwLGVzaSxlZGksZWJ4KQ0KKyAgICBhZHJyZXQgICAgICAgICAgZXF1ICAgICBkd29yZCBwdHJbZXNwK05iU3RhY2stOF0NCisgICAgcHVzaGVicCAgICAgICAgIGVxdSAgICAgZHdvcmQgcHRyW2VzcCtOYlN0YWNrLTEyXQ0KKyAgICBwdXNoZWRpICAgICAgICAgZXF1ICAgICBkd29yZCBwdHJbZXNwK05iU3RhY2stMTZdDQorICAgIHB1c2hlc2kgICAgICAgICBlcXUgICAgIGR3b3JkIHB0cltlc3ArTmJTdGFjay0yMF0NCisgICAgcHVzaGVieCAgICAgICAgIGVxdSAgICAgZHdvcmQgcHRyW2VzcCtOYlN0YWNrLTI0XQ0KKw0KKyAgICBjaGFpbl9sZW5ndGggICAgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTI4XQ0KKyAgICBsaW1pdCAgICAgICAgICAgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTMyXQ0KKyAgICBiZXN0X2xlbiAgICAgICAgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTM2XQ0KKyAgICB3aW5kb3cgICAgICAgICAgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTQwXQ0KKyAgICBwcmV2ICAgICAgICAgICAgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTQ0XQ0KKyAgICBzY2FuX3N0YXJ0ICAgICAgZXF1ICAgICAgd29yZCBwdHIgW2VzcCtOYlN0YWNrLTQ4XQ0KKyAgICB3bWFzayAgICAgICAgICAgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTUyXQ0KKyAgICBtYXRjaF9zdGFydF9wdHIgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTU2XQ0KKyAgICBuaWNlX21hdGNoICAgICAgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTYwXQ0KKyAgICBzY2FuICAgICAgICAgICAgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTY0XQ0KKw0KKyAgICB3aW5kb3dsZW4gICAgICAgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTY4XQ0KKyAgICBtYXRjaF9zdGFydCAgICAgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTcyXQ0KKyAgICBzdHJlbmQgICAgICAgICAgZXF1ICAgICBkd29yZCBwdHIgW2VzcCtOYlN0YWNrLTc2XQ0KKyAgICBOYlN0YWNrQWRkICAgICAgZXF1ICAgICAoTmJTdGFjay0yNCkNCisNCisgICAgLjM4NnANCisNCisgICAgbmFtZSAgICBndm1hdGNoDQorICAgIC5NT0RFTCAgRkxBVA0KKw0KKw0KKw0KKzsgIGFsbCB0aGUgK3psaWIxMjIyYWRkIG9mZnNldHMgYXJlIGR1ZSB0byB0aGUgYWRkaXRpb24gb2YgZmllbGRzDQorOyAgaW4gemxpYiBpbiB0aGUgZGVmbGF0ZV9zdGF0ZSBzdHJ1Y3R1cmUgc2luY2UgdGhlIGFzbSBjb2RlIHdhcyBmaXJzdCB3cml0dGVuDQorOyAgKGlmIHlvdSBjb21waWxlIHdpdGggemxpYiAxLjAuNCBvciBvbGRlciwgdXNlICJ6bGliMTIyMmFkZCBlcXUgKC00KSIpLg0KKzsgIChpZiB5b3UgY29tcGlsZSB3aXRoIHpsaWIgYmV0d2VlbiAxLjAuNSBhbmQgMS4yLjIuMSwgdXNlICJ6bGliMTIyMmFkZCBlcXUgMCIpLg0KKzsgIGlmIHlvdSBjb21waWxlIHdpdGggemxpYiAxLjIuMi4yIG9yIGxhdGVyICwgdXNlICJ6bGliMTIyMmFkZCBlcXUgOCIpLg0KKw0KKyAgICB6bGliMTIyMmFkZCAgICAgICAgIGVxdSAgICAgOA0KKw0KKzsgIE5vdGUgOiB0aGVzZSB2YWx1ZSBhcmUgZ29vZCB3aXRoIGEgOCBieXRlcyBib3VuZGFyeSBwYWNrIHN0cnVjdHVyZQ0KKyAgICBkZXBfY2hhaW5fbGVuZ3RoICAgIGVxdSAgICAgNzRoK3psaWIxMjIyYWRkDQorICAgIGRlcF93aW5kb3cgICAgICAgICAgZXF1ICAgICAzMGgremxpYjEyMjJhZGQNCisgICAgZGVwX3N0cnN0YXJ0ICAgICAgICBlcXUgICAgIDY0aCt6bGliMTIyMmFkZA0KKyAgICBkZXBfcHJldl9sZW5ndGggICAgIGVxdSAgICAgNzBoK3psaWIxMjIyYWRkDQorICAgIGRlcF9uaWNlX21hdGNoICAgICAgZXF1ICAgICA4OGgremxpYjEyMjJhZGQNCisgICAgZGVwX3dfc2l6ZSAgICAgICAgICBlcXUgICAgIDI0aCt6bGliMTIyMmFkZA0KKyAgICBkZXBfcHJldiAgICAgICAgICAgIGVxdSAgICAgMzhoK3psaWIxMjIyYWRkDQorICAgIGRlcF93X21hc2sgICAgICAgICAgZXF1ICAgICAyY2gremxpYjEyMjJhZGQNCisgICAgZGVwX2dvb2RfbWF0Y2ggICAgICBlcXUgICAgIDg0aCt6bGliMTIyMmFkZA0KKyAgICBkZXBfbWF0Y2hfc3RhcnQgICAgIGVxdSAgICAgNjhoK3psaWIxMjIyYWRkDQorICAgIGRlcF9sb29rYWhlYWQgICAgICAgZXF1ICAgICA2Y2gremxpYjEyMjJhZGQNCisNCisNCitfVEVYVCAgICAgICAgICAgICAgICAgICBzZWdtZW50DQorDQorSUZERUYgTk9VTkRFUkxJTkUNCisgICAgICAgICAgICBwdWJsaWMgIGxvbmdlc3RfbWF0Y2gNCisgICAgICAgICAgICBwdWJsaWMgIG1hdGNoX2luaXQNCitFTFNFDQorICAgICAgICAgICAgcHVibGljICBfbG9uZ2VzdF9tYXRjaA0KKyAgICAgICAgICAgIHB1YmxpYyAgX21hdGNoX2luaXQNCitFTkRJRg0KKw0KKyAgICBNQVhfTUFUQ0ggICAgICAgICAgIGVxdSAgICAgMjU4DQorICAgIE1JTl9NQVRDSCAgICAgICAgICAgZXF1ICAgICAzDQorICAgIE1JTl9MT09LQUhFQUQgICAgICAgZXF1ICAgICAoTUFYX01BVENIK01JTl9NQVRDSCsxKQ0KKw0KKw0KKw0KK01BWF9NQVRDSCAgICAgICBlcXUgICAgIDI1OA0KK01JTl9NQVRDSCAgICAgICBlcXUgICAgIDMNCitNSU5fTE9PS0FIRUFEICAgZXF1ICAgICAoTUFYX01BVENIICsgTUlOX01BVENIICsgMSkNCitNQVhfTUFUQ0hfOF8gICAgIGVxdSAgICAgKChNQVhfTUFUQ0ggKyA3KSBBTkQgMEZGRjBoKQ0KKw0KKw0KKzs7OyBzdGFjayBmcmFtZSBvZmZzZXRzDQorDQorY2hhaW5sZW53bWFzayAgIGVxdSAgZXNwICsgMCAgICA7IGhpZ2ggd29yZDogY3VycmVudCBjaGFpbiBsZW4NCisgICAgICAgICAgICAgICAgICAgIDsgbG93IHdvcmQ6IHMtPndtYXNrDQord2luZG93ICAgICAgZXF1ICBlc3AgKyA0ICAgIDsgbG9jYWwgY29weSBvZiBzLT53aW5kb3cNCit3aW5kb3diZXN0bGVuICAgZXF1ICBlc3AgKyA4ICAgIDsgcy0+d2luZG93ICsgYmVzdGxlbg0KK3NjYW5zdGFydCAgIGVxdSAgZXNwICsgMTYgICA7IGZpcnN0IHR3byBieXRlcyBvZiBzdHJpbmcNCitzY2FuZW5kICAgICBlcXUgIGVzcCArIDEyICAgOyBsYXN0IHR3byBieXRlcyBvZiBzdHJpbmcNCitzY2FuYWxpZ24gICBlcXUgIGVzcCArIDIwICAgOyBkd29yZC1taXNhbGlnbm1lbnQgb2Ygc3RyaW5nDQorbmljZW1hdGNoICAgZXF1ICBlc3AgKyAyNCAgIDsgYSBnb29kIGVub3VnaCBtYXRjaCBzaXplDQorYmVzdGxlbiAgICAgZXF1ICBlc3AgKyAyOCAgIDsgc2l6ZSBvZiBiZXN0IG1hdGNoIHNvIGZhcg0KK3NjYW4gICAgICAgIGVxdSAgZXNwICsgMzIgICA7IHB0ciB0byBzdHJpbmcgd2FudGluZyBtYXRjaA0KKw0KK0xvY2FsVmFyc1NpemUgICBlcXUgMzYNCis7ICAgc2F2ZWQgZWJ4ICAgYnl0ZSBlc3AgKyAzNg0KKzsgICBzYXZlZCBlZGkgICBieXRlIGVzcCArIDQwDQorOyAgIHNhdmVkIGVzaSAgIGJ5dGUgZXNwICsgNDQNCis7ICAgc2F2ZWQgZWJwICAgYnl0ZSBlc3AgKyA0OA0KKzsgICByZXR1cm4gYWRkcmVzcyAgYnl0ZSBlc3AgKyA1Mg0KK2RlZmxhdGVzdGF0ZSAgICBlcXUgIGVzcCArIDU2ICAgOyB0aGUgZnVuY3Rpb24gYXJndW1lbnRzDQorY3VybWF0Y2ggICAgZXF1ICBlc3AgKyA2MA0KKw0KKzs7OyBPZmZzZXRzIGZvciBmaWVsZHMgaW4gdGhlIGRlZmxhdGVfc3RhdGUgc3RydWN0dXJlLiBUaGVzZSBudW1iZXJzDQorOzs7IGFyZSBjYWxjdWxhdGVkIGZyb20gdGhlIGRlZmluaXRpb24gb2YgZGVmbGF0ZV9zdGF0ZSwgd2l0aCB0aGUNCis7OzsgYXNzdW1wdGlvbiB0aGF0IHRoZSBjb21waWxlciB3aWxsIGR3b3JkLWFsaWduIHRoZSBmaWVsZHMuIChUaHVzLA0KKzs7OyBjaGFuZ2luZyB0aGUgZGVmaW5pdGlvbiBvZiBkZWZsYXRlX3N0YXRlIGNvdWxkIGVhc2lseSBjYXVzZSB0aGlzDQorOzs7IHByb2dyYW0gdG8gY3Jhc2ggaG9ycmlibHksIHdpdGhvdXQgc28gbXVjaCBhcyBhIHdhcm5pbmcgYXQNCis7OzsgY29tcGlsZSB0aW1lLiBTaWdoLikNCisNCitkc1dTaXplICAgICBlcXUgMzYremxpYjEyMjJhZGQNCitkc1dNYXNrICAgICBlcXUgNDQremxpYjEyMjJhZGQNCitkc1dpbmRvdyAgICBlcXUgNDgremxpYjEyMjJhZGQNCitkc1ByZXYgICAgICBlcXUgNTYremxpYjEyMjJhZGQNCitkc01hdGNoTGVuICBlcXUgODgremxpYjEyMjJhZGQNCitkc1ByZXZNYXRjaCBlcXUgOTIremxpYjEyMjJhZGQNCitkc1N0clN0YXJ0ICBlcXUgMTAwK3psaWIxMjIyYWRkDQorZHNNYXRjaFN0YXJ0ICAgIGVxdSAxMDQremxpYjEyMjJhZGQNCitkc0xvb2thaGVhZCBlcXUgMTA4K3psaWIxMjIyYWRkDQorZHNQcmV2TGVuICAgZXF1IDExMit6bGliMTIyMmFkZA0KK2RzTWF4Q2hhaW5MZW4gICBlcXUgMTE2K3psaWIxMjIyYWRkDQorZHNHb29kTWF0Y2ggZXF1IDEzMit6bGliMTIyMmFkZA0KK2RzTmljZU1hdGNoIGVxdSAxMzYremxpYjEyMjJhZGQNCisNCisNCis7OzsgbWF0Y2g2ODYuYXNtIC0tIFBlbnRpdW0tUHJvLW9wdGltaXplZCB2ZXJzaW9uIG9mIGxvbmdlc3RfbWF0Y2goKQ0KKzs7OyBXcml0dGVuIGZvciB6bGliIDEuMS4yDQorOzs7IENvcHlyaWdodCAoQykgMTk5OCBCcmlhbiBSYWl0ZXIgPGJyZWFkYm94QG11cHBldGxhYnMuY29tPg0KKzs7OyBZb3UgY2FuIGxvb2sgYXQgaHR0cDovL3d3dy5tdXBwZXRsYWJzLmNvbS9+YnJlYWRib3gvc29mdHdhcmUvYXNzZW1ibHkuaHRtbA0KKzs7Ow0KKzs7DQorOzsgIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkDQorOzsgIHdhcnJhbnR5LiAgSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMNCis7OyAgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4NCis7Ow0KKzs7ICBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwNCis7OyAgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdA0KKzs7ICBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6DQorOzsNCis7OyAgMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QNCis7OyAgICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUNCis7OyAgICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlDQorOzsgICAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuDQorOzsgIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlDQorOzsgICAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZQ0KKzs7ICAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLg0KKzs7DQorDQorO0dMT0JBTCBfbG9uZ2VzdF9tYXRjaCwgX21hdGNoX2luaXQNCisNCisNCis7U0VDVElPTiAgICAudGV4dA0KKw0KKzs7OyB1SW50IGxvbmdlc3RfbWF0Y2goZGVmbGF0ZV9zdGF0ZSAqZGVmbGF0ZXN0YXRlLCBJUG9zIGN1cm1hdGNoKQ0KKw0KKztfbG9uZ2VzdF9tYXRjaDoNCisgICAgSUZERUYgTk9VTkRFUkxJTkUNCisgICAgbG9uZ2VzdF9tYXRjaCAgICAgICBwcm9jIG5lYXINCisgICAgRUxTRQ0KKyAgICBfbG9uZ2VzdF9tYXRjaCAgICAgIHByb2MgbmVhcg0KKyAgICBFTkRJRg0KKw0KKzs7OyBTYXZlIHJlZ2lzdGVycyB0aGF0IHRoZSBjb21waWxlciBtYXkgYmUgdXNpbmcsIGFuZCBhZGp1c3QgZXNwIHRvDQorOzs7IG1ha2Ugcm9vbSBmb3Igb3VyIHN0YWNrIGZyYW1lLg0KKw0KKyAgICAgICAgcHVzaCAgICBlYnANCisgICAgICAgIHB1c2ggICAgZWRpDQorICAgICAgICBwdXNoICAgIGVzaQ0KKyAgICAgICAgcHVzaCAgICBlYngNCisgICAgICAgIHN1YiBlc3AsIExvY2FsVmFyc1NpemUNCisNCis7OzsgUmV0cmlldmUgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cy4gZWN4IHdpbGwgaG9sZCBjdXJfbWF0Y2gNCis7OzsgdGhyb3VnaG91dCB0aGUgZW50aXJlIGZ1bmN0aW9uLiBlZHggd2lsbCBob2xkIHRoZSBwb2ludGVyIHRvIHRoZQ0KKzs7OyBkZWZsYXRlX3N0YXRlIHN0cnVjdHVyZSBkdXJpbmcgdGhlIGZ1bmN0aW9uJ3Mgc2V0dXAgKGJlZm9yZQ0KKzs7OyBlbnRlcmluZyB0aGUgbWFpbiBsb29wLg0KKw0KKyAgICAgICAgbW92IGVkeCwgW2RlZmxhdGVzdGF0ZV0NCisgICAgICAgIG1vdiBlY3gsIFtjdXJtYXRjaF0NCisNCis7OzsgdUludCB3bWFzayA9IHMtPndfbWFzazsNCis7OzsgdW5zaWduZWQgY2hhaW5fbGVuZ3RoID0gcy0+bWF4X2NoYWluX2xlbmd0aDsNCis7OzsgaWYgKHMtPnByZXZfbGVuZ3RoID49IHMtPmdvb2RfbWF0Y2gpIHsNCis7OzsgICAgIGNoYWluX2xlbmd0aCA+Pj0gMjsNCis7OzsgfQ0KKw0KKyAgICAgICAgbW92IGVheCwgW2VkeCArIGRzUHJldkxlbl0NCisgICAgICAgIG1vdiBlYngsIFtlZHggKyBkc0dvb2RNYXRjaF0NCisgICAgICAgIGNtcCBlYXgsIGVieA0KKyAgICAgICAgbW92IGVheCwgW2VkeCArIGRzV01hc2tdDQorICAgICAgICBtb3YgZWJ4LCBbZWR4ICsgZHNNYXhDaGFpbkxlbl0NCisgICAgICAgIGpsICBMYXN0TWF0Y2hHb29kDQorICAgICAgICBzaHIgZWJ4LCAyDQorTGFzdE1hdGNoR29vZDoNCisNCis7OzsgY2hhaW5sZW4gaXMgZGVjcmVtZW50ZWQgb25jZSBiZWZvcmVoYW5kIHNvIHRoYXQgdGhlIGZ1bmN0aW9uIGNhbg0KKzs7OyB1c2UgdGhlIHNpZ24gZmxhZyBpbnN0ZWFkIG9mIHRoZSB6ZXJvIGZsYWcgZm9yIHRoZSBleGl0IHRlc3QuDQorOzs7IEl0IGlzIHRoZW4gc2hpZnRlZCBpbnRvIHRoZSBoaWdoIHdvcmQsIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHdtYXNrDQorOzs7IHZhbHVlLCB3aGljaCBpdCB3aWxsIGFsd2F5cyBhY2NvbXBhbnkuDQorDQorICAgICAgICBkZWMgZWJ4DQorICAgICAgICBzaGwgZWJ4LCAxNg0KKyAgICAgICAgb3IgIGVieCwgZWF4DQorICAgICAgICBtb3YgW2NoYWlubGVud21hc2tdLCBlYngNCisNCis7OzsgaWYgKCh1SW50KW5pY2VfbWF0Y2ggPiBzLT5sb29rYWhlYWQpIG5pY2VfbWF0Y2ggPSBzLT5sb29rYWhlYWQ7DQorDQorICAgICAgICBtb3YgZWF4LCBbZWR4ICsgZHNOaWNlTWF0Y2hdDQorICAgICAgICBtb3YgZWJ4LCBbZWR4ICsgZHNMb29rYWhlYWRdDQorICAgICAgICBjbXAgZWJ4LCBlYXgNCisgICAgICAgIGpsICBMb29rYWhlYWRMZXNzDQorICAgICAgICBtb3YgZWJ4LCBlYXgNCitMb29rYWhlYWRMZXNzOiAgbW92IFtuaWNlbWF0Y2hdLCBlYngNCisNCis7OzsgcmVnaXN0ZXIgQnl0ZWYgKnNjYW4gPSBzLT53aW5kb3cgKyBzLT5zdHJzdGFydDsNCisNCisgICAgICAgIG1vdiBlc2ksIFtlZHggKyBkc1dpbmRvd10NCisgICAgICAgIG1vdiBbd2luZG93XSwgZXNpDQorICAgICAgICBtb3YgZWJwLCBbZWR4ICsgZHNTdHJTdGFydF0NCisgICAgICAgIGxlYSBlZGksIFtlc2kgKyBlYnBdDQorICAgICAgICBtb3YgW3NjYW5dLCBlZGkNCisNCis7OzsgRGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIHRoZSBzY2FuIHB0ciBpcyBvZmYgZnJvbSBiZWluZw0KKzs7OyBkd29yZC1hbGlnbmVkLg0KKw0KKyAgICAgICAgbW92IGVheCwgZWRpDQorICAgICAgICBuZWcgZWF4DQorICAgICAgICBhbmQgZWF4LCAzDQorICAgICAgICBtb3YgW3NjYW5hbGlnbl0sIGVheA0KKw0KKzs7OyBJUG9zIGxpbWl0ID0gcy0+c3Ryc3RhcnQgPiAoSVBvcylNQVhfRElTVChzKSA/DQorOzs7ICAgICBzLT5zdHJzdGFydCAtIChJUG9zKU1BWF9ESVNUKHMpIDogTklMOw0KKw0KKyAgICAgICAgbW92IGVheCwgW2VkeCArIGRzV1NpemVdDQorICAgICAgICBzdWIgZWF4LCBNSU5fTE9PS0FIRUFEDQorICAgICAgICBzdWIgZWJwLCBlYXgNCisgICAgICAgIGpnICBMaW1pdFBvc2l0aXZlDQorICAgICAgICB4b3IgZWJwLCBlYnANCitMaW1pdFBvc2l0aXZlOg0KKw0KKzs7OyBpbnQgYmVzdF9sZW4gPSBzLT5wcmV2X2xlbmd0aDsNCisNCisgICAgICAgIG1vdiBlYXgsIFtlZHggKyBkc1ByZXZMZW5dDQorICAgICAgICBtb3YgW2Jlc3RsZW5dLCBlYXgNCisNCis7OzsgU3RvcmUgdGhlIHN1bSBvZiBzLT53aW5kb3cgKyBiZXN0X2xlbiBpbiBlc2kgbG9jYWxseSwgYW5kIGluIGVzaS4NCisNCisgICAgICAgIGFkZCBlc2ksIGVheA0KKyAgICAgICAgbW92IFt3aW5kb3diZXN0bGVuXSwgZXNpDQorDQorOzs7IHJlZ2lzdGVyIHVzaCBzY2FuX3N0YXJ0ID0gKih1c2hmKilzY2FuOw0KKzs7OyByZWdpc3RlciB1c2ggc2Nhbl9lbmQgICA9ICoodXNoZiopKHNjYW4rYmVzdF9sZW4tMSk7DQorOzs7IFBvc2YgKnByZXYgPSBzLT5wcmV2Ow0KKw0KKyAgICAgICAgbW92enggICBlYngsIHdvcmQgcHRyIFtlZGldDQorICAgICAgICBtb3YgW3NjYW5zdGFydF0sIGVieA0KKyAgICAgICAgbW92enggICBlYngsIHdvcmQgcHRyIFtlZGkgKyBlYXggLSAxXQ0KKyAgICAgICAgbW92IFtzY2FuZW5kXSwgZWJ4DQorICAgICAgICBtb3YgZWRpLCBbZWR4ICsgZHNQcmV2XQ0KKw0KKzs7OyBKdW1wIGludG8gdGhlIG1haW4gbG9vcC4NCisNCisgICAgICAgIG1vdiBlZHgsIFtjaGFpbmxlbndtYXNrXQ0KKyAgICAgICAgam1wIHNob3J0IExvb3BFbnRyeQ0KKw0KK2FsaWduIDQNCisNCis7OzsgZG8gew0KKzs7OyAgICAgbWF0Y2ggPSBzLT53aW5kb3cgKyBjdXJfbWF0Y2g7DQorOzs7ICAgICBpZiAoKih1c2hmKikobWF0Y2grYmVzdF9sZW4tMSkgIT0gc2Nhbl9lbmQgfHwNCis7OzsgICAgICAgICAqKHVzaGYqKW1hdGNoICE9IHNjYW5fc3RhcnQpIGNvbnRpbnVlOw0KKzs7OyAgICAgWy4uLl0NCis7OzsgfSB3aGlsZSAoKGN1cl9tYXRjaCA9IHByZXZbY3VyX21hdGNoICYgd21hc2tdKSA+IGxpbWl0DQorOzs7ICAgICAgICAgICYmIC0tY2hhaW5fbGVuZ3RoICE9IDApOw0KKzs7Ow0KKzs7OyBIZXJlIGlzIHRoZSBpbm5lciBsb29wIG9mIHRoZSBmdW5jdGlvbi4gVGhlIGZ1bmN0aW9uIHdpbGwgc3BlbmQgdGhlDQorOzs7IG1ham9yaXR5IG9mIGl0cyB0aW1lIGluIHRoaXMgbG9vcCwgYW5kIG1ham9yaXR5IG9mIHRoYXQgdGltZSB3aWxsDQorOzs7IGJlIHNwZW50IGluIHRoZSBmaXJzdCB0ZW4gaW5zdHJ1Y3Rpb25zLg0KKzs7Ow0KKzs7OyBXaXRoaW4gdGhpcyBsb29wOg0KKzs7OyBlYnggPSBzY2FuZW5kDQorOzs7IGVjeCA9IGN1cm1hdGNoDQorOzs7IGVkeCA9IGNoYWlubGVud21hc2sgLSBpLmUuLCAoKGNoYWlubGVuIDw8IDE2KSB8IHdtYXNrKQ0KKzs7OyBlc2kgPSB3aW5kb3diZXN0bGVuIC0gaS5lLiwgKHdpbmRvdyArIGJlc3RsZW4pDQorOzs7IGVkaSA9IHByZXYNCis7OzsgZWJwID0gbGltaXQNCisNCitMb29rdXBMb29wOg0KKyAgICAgICAgYW5kIGVjeCwgZWR4DQorICAgICAgICBtb3Z6eCAgIGVjeCwgd29yZCBwdHIgW2VkaSArIGVjeCoyXQ0KKyAgICAgICAgY21wIGVjeCwgZWJwDQorICAgICAgICBqYmUgTGVhdmVOb3cNCisgICAgICAgIHN1YiBlZHgsIDAwMDEwMDAwaA0KKyAgICAgICAganMgIExlYXZlTm93DQorTG9vcEVudHJ5OiAgbW92enggICBlYXgsIHdvcmQgcHRyIFtlc2kgKyBlY3ggLSAxXQ0KKyAgICAgICAgY21wIGVheCwgZWJ4DQorICAgICAgICBqbnogTG9va3VwTG9vcA0KKyAgICAgICAgbW92IGVheCwgW3dpbmRvd10NCisgICAgICAgIG1vdnp4ICAgZWF4LCB3b3JkIHB0ciBbZWF4ICsgZWN4XQ0KKyAgICAgICAgY21wIGVheCwgW3NjYW5zdGFydF0NCisgICAgICAgIGpueiBMb29rdXBMb29wDQorDQorOzs7IFN0b3JlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGNoYWlubGVuLg0KKw0KKyAgICAgICAgbW92IFtjaGFpbmxlbndtYXNrXSwgZWR4DQorDQorOzs7IFBvaW50IGVkaSB0byB0aGUgc3RyaW5nIHVuZGVyIHNjcnV0aW55LCBhbmQgZXNpIHRvIHRoZSBzdHJpbmcgd2UNCis7OzsgYXJlIGhvcGluZyB0byBtYXRjaCBpdCB1cCB3aXRoLiBJbiBhY3R1YWxpdHksIGVzaSBhbmQgZWRpIGFyZQ0KKzs7OyBib3RoIHBvaW50ZWQgKE1BWF9NQVRDSF84IC0gc2NhbmFsaWduKSBieXRlcyBhaGVhZCwgYW5kIGVkeCBpcw0KKzs7OyBpbml0aWFsaXplZCB0byAtKE1BWF9NQVRDSF84IC0gc2NhbmFsaWduKS4NCisNCisgICAgICAgIG1vdiBlc2ksIFt3aW5kb3ddDQorICAgICAgICBtb3YgZWRpLCBbc2Nhbl0NCisgICAgICAgIGFkZCBlc2ksIGVjeA0KKyAgICAgICAgbW92IGVheCwgW3NjYW5hbGlnbl0NCisgICAgICAgIG1vdiBlZHgsIDBmZmZmZmVmOGg7IC0oTUFYX01BVENIXzgpDQorICAgICAgICBsZWEgZWRpLCBbZWRpICsgZWF4ICsgMDEwOGhdIDtNQVhfTUFUQ0hfOF0NCisgICAgICAgIGxlYSBlc2ksIFtlc2kgKyBlYXggKyAwMTA4aF0gO01BWF9NQVRDSF84XQ0KKw0KKzs7OyBUZXN0IHRoZSBzdHJpbmdzIGZvciBlcXVhbGl0eSwgOCBieXRlcyBhdCBhIHRpbWUuIEF0IHRoZSBlbmQsDQorOzs7IGFkanVzdCBlZHggc28gdGhhdCBpdCBpcyBvZmZzZXQgdG8gdGhlIGV4YWN0IGJ5dGUgdGhhdCBtaXNtYXRjaGVkLg0KKzs7Ow0KKzs7OyBXZSBhbHJlYWR5IGtub3cgYXQgdGhpcyBwb2ludCB0aGF0IHRoZSBmaXJzdCB0aHJlZSBieXRlcyBvZiB0aGUNCis7Ozsgc3RyaW5ncyBtYXRjaCBlYWNoIG90aGVyLCBhbmQgdGhleSBjYW4gYmUgc2FmZWx5IHBhc3NlZCBvdmVyIGJlZm9yZQ0KKzs7OyBzdGFydGluZyB0aGUgY29tcGFyZSBsb29wLiBTbyB3aGF0IHRoaXMgY29kZSBkb2VzIGlzIHNraXAgb3ZlciAwLTMNCis7OzsgYnl0ZXMsIGFzIG11Y2ggYXMgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIGR3b3JkLWFsaWduIHRoZSBlZGkNCis7OzsgcG9pbnRlci4gKGVzaSB3aWxsIHN0aWxsIGJlIG1pc2FsaWduZWQgdGhyZWUgdGltZXMgb3V0IG9mIGZvdXIuKQ0KKzs7Ow0KKzs7OyBJdCBzaG91bGQgYmUgY29uZmVzc2VkIHRoYXQgdGhpcyBsb29wIHVzdWFsbHkgZG9lcyBub3QgcmVwcmVzZW50DQorOzs7IG11Y2ggb2YgdGhlIHRvdGFsIHJ1bm5pbmcgdGltZS4gUmVwbGFjaW5nIGl0IHdpdGggYSBtb3JlDQorOzs7IHN0cmFpZ2h0Zm9yd2FyZCAicmVwIGNtcHNiIiB3b3VsZCBub3QgZHJhc3RpY2FsbHkgZGVncmFkZQ0KKzs7OyBwZXJmb3JtYW5jZS4NCisNCitMb29wQ21wczoNCisgICAgICAgIG1vdiBlYXgsIFtlc2kgKyBlZHhdDQorICAgICAgICB4b3IgZWF4LCBbZWRpICsgZWR4XQ0KKyAgICAgICAgam56IExlYXZlTG9vcENtcHMNCisgICAgICAgIG1vdiBlYXgsIFtlc2kgKyBlZHggKyA0XQ0KKyAgICAgICAgeG9yIGVheCwgW2VkaSArIGVkeCArIDRdDQorICAgICAgICBqbnogTGVhdmVMb29wQ21wczQNCisgICAgICAgIGFkZCBlZHgsIDgNCisgICAgICAgIGpueiBMb29wQ21wcw0KKyAgICAgICAgam1wIHNob3J0IExlbk1heGltdW0NCitMZWF2ZUxvb3BDbXBzNDogYWRkIGVkeCwgNA0KK0xlYXZlTG9vcENtcHM6ICB0ZXN0ICAgIGVheCwgMDAwMEZGRkZoDQorICAgICAgICBqbnogTGVuTG93ZXINCisgICAgICAgIGFkZCBlZHgsICAyDQorICAgICAgICBzaHIgZWF4LCAxNg0KK0xlbkxvd2VyOiAgIHN1YiBhbCwgMQ0KKyAgICAgICAgYWRjIGVkeCwgMA0KKw0KKzs7OyBDYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2guIElmIGl0IGlzIGxvbmdlciB0aGFuIE1BWF9NQVRDSCwNCis7OzsgdGhlbiBhdXRvbWF0aWNhbGx5IGFjY2VwdCBpdCBhcyB0aGUgYmVzdCBwb3NzaWJsZSBtYXRjaCBhbmQgbGVhdmUuDQorDQorICAgICAgICBsZWEgZWF4LCBbZWRpICsgZWR4XQ0KKyAgICAgICAgbW92IGVkaSwgW3NjYW5dDQorICAgICAgICBzdWIgZWF4LCBlZGkNCisgICAgICAgIGNtcCBlYXgsIE1BWF9NQVRDSA0KKyAgICAgICAgamdlIExlbk1heGltdW0NCisNCis7OzsgSWYgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2ggaXMgbm90IGxvbmdlciB0aGFuIHRoZSBiZXN0IG1hdGNoIHdlDQorOzs7IGhhdmUgc28gZmFyLCB0aGVuIGZvcmdldCBpdCBhbmQgcmV0dXJuIHRvIHRoZSBsb29rdXAgbG9vcC4NCisNCisgICAgICAgIG1vdiBlZHgsIFtkZWZsYXRlc3RhdGVdDQorICAgICAgICBtb3YgZWJ4LCBbYmVzdGxlbl0NCisgICAgICAgIGNtcCBlYXgsIGVieA0KKyAgICAgICAgamcgIExvbmdlck1hdGNoDQorICAgICAgICBtb3YgZXNpLCBbd2luZG93YmVzdGxlbl0NCisgICAgICAgIG1vdiBlZGksIFtlZHggKyBkc1ByZXZdDQorICAgICAgICBtb3YgZWJ4LCBbc2NhbmVuZF0NCisgICAgICAgIG1vdiBlZHgsIFtjaGFpbmxlbndtYXNrXQ0KKyAgICAgICAgam1wIExvb2t1cExvb3ANCisNCis7OzsgICAgICAgICBzLT5tYXRjaF9zdGFydCA9IGN1cl9tYXRjaDsNCis7OzsgICAgICAgICBiZXN0X2xlbiA9IGxlbjsNCis7OzsgICAgICAgICBpZiAobGVuID49IG5pY2VfbWF0Y2gpIGJyZWFrOw0KKzs7OyAgICAgICAgIHNjYW5fZW5kID0gKih1c2hmKikoc2NhbitiZXN0X2xlbi0xKTsNCisNCitMb25nZXJNYXRjaDogICAgbW92IGVieCwgW25pY2VtYXRjaF0NCisgICAgICAgIG1vdiBbYmVzdGxlbl0sIGVheA0KKyAgICAgICAgbW92IFtlZHggKyBkc01hdGNoU3RhcnRdLCBlY3gNCisgICAgICAgIGNtcCBlYXgsIGVieA0KKyAgICAgICAgamdlIExlYXZlTm93DQorICAgICAgICBtb3YgZXNpLCBbd2luZG93XQ0KKyAgICAgICAgYWRkIGVzaSwgZWF4DQorICAgICAgICBtb3YgW3dpbmRvd2Jlc3RsZW5dLCBlc2kNCisgICAgICAgIG1vdnp4ICAgZWJ4LCB3b3JkIHB0ciBbZWRpICsgZWF4IC0gMV0NCisgICAgICAgIG1vdiBlZGksIFtlZHggKyBkc1ByZXZdDQorICAgICAgICBtb3YgW3NjYW5lbmRdLCBlYngNCisgICAgICAgIG1vdiBlZHgsIFtjaGFpbmxlbndtYXNrXQ0KKyAgICAgICAgam1wIExvb2t1cExvb3ANCisNCis7OzsgQWNjZXB0IHRoZSBjdXJyZW50IHN0cmluZywgd2l0aCB0aGUgbWF4aW11bSBwb3NzaWJsZSBsZW5ndGguDQorDQorTGVuTWF4aW11bTogbW92IGVkeCwgW2RlZmxhdGVzdGF0ZV0NCisgICAgICAgIG1vdiBkd29yZCBwdHIgW2Jlc3RsZW5dLCBNQVhfTUFUQ0gNCisgICAgICAgIG1vdiBbZWR4ICsgZHNNYXRjaFN0YXJ0XSwgZWN4DQorDQorOzs7IGlmICgodUludCliZXN0X2xlbiA8PSBzLT5sb29rYWhlYWQpIHJldHVybiAodUludCliZXN0X2xlbjsNCis7OzsgcmV0dXJuIHMtPmxvb2thaGVhZDsNCisNCitMZWF2ZU5vdzoNCisgICAgICAgIG1vdiBlZHgsIFtkZWZsYXRlc3RhdGVdDQorICAgICAgICBtb3YgZWJ4LCBbYmVzdGxlbl0NCisgICAgICAgIG1vdiBlYXgsIFtlZHggKyBkc0xvb2thaGVhZF0NCisgICAgICAgIGNtcCBlYngsIGVheA0KKyAgICAgICAgamcgIExvb2thaGVhZFJldA0KKyAgICAgICAgbW92IGVheCwgZWJ4DQorTG9va2FoZWFkUmV0Og0KKw0KKzs7OyBSZXN0b3JlIHRoZSBzdGFjayBhbmQgcmV0dXJuIGZyb20gd2hlbmNlIHdlIGNhbWUuDQorDQorICAgICAgICBhZGQgZXNwLCBMb2NhbFZhcnNTaXplDQorICAgICAgICBwb3AgZWJ4DQorICAgICAgICBwb3AgZXNpDQorICAgICAgICBwb3AgZWRpDQorICAgICAgICBwb3AgZWJwDQorDQorICAgICAgICByZXQNCis7IHBsZWFzZSBkb24ndCByZW1vdmUgdGhpcyBzdHJpbmcgIQ0KKzsgWW91ciBjYW4gZnJlZWx5IHVzZSBtYXRjaDY4NiBpbiBhbnkgZnJlZSBvciBjb21tZXJjaWFsIGFwcCBpZiB5b3UgZG9uJ3QgcmVtb3ZlIHRoZSBzdHJpbmcgaW4gdGhlIGJpbmFyeSENCisgICAgZGIgICAgIDBkaCwwYWgsImFzbTY4NiB3aXRoIG1hc20sIG9wdGltaXNlZCBhc3NlbWJseSBjb2RlIGZyb20gQnJpYW4gUmFpdGVyLCB3cml0dGVuIDE5OTgiLDBkaCwwYWgNCisNCisNCisgICAgSUZERUYgTk9VTkRFUkxJTkUNCisgICAgbG9uZ2VzdF9tYXRjaCAgICAgICBlbmRwDQorICAgIEVMU0UNCisgICAgX2xvbmdlc3RfbWF0Y2ggICAgICBlbmRwDQorICAgIEVORElGDQorDQorICAgIElGREVGIE5PVU5ERVJMSU5FDQorICAgIG1hdGNoX2luaXQgICAgICBwcm9jIG5lYXINCisgICAgICAgICAgICAgICAgICAgIHJldA0KKyAgICBtYXRjaF9pbml0ICAgICAgZW5kcA0KKyAgICBFTFNFDQorICAgIF9tYXRjaF9pbml0ICAgICBwcm9jIG5lYXINCisgICAgICAgICAgICAgICAgICAgIHJldA0KKyAgICBfbWF0Y2hfaW5pdCAgICAgZW5kcA0KKyAgICBFTkRJRg0KKw0KKw0KK19URVhUICAgZW5kcw0KK2VuZA0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvbWFzbXg4Ni9tYXRjaDY4Ni5vYmogYi9jb250cmliL21hc214ODYvbWF0Y2g2ODYub2JqCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlNDYzMWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL21hc214ODYvbWF0Y2g2ODYub2JqCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbWFzbXg4Ni9ta2FzbS5iYXQgYi9jb250cmliL21hc214ODYvbWthc20uYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3MGE1MWY4Li4wMDAwMDAwCi0tLSBhL2NvbnRyaWIvbWFzbXg4Ni9ta2FzbS5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLWNsIC9EQVNNViAvSS4uXC4uIC9PMiAvYyBndm1hdDMyYy5jDQotbWwgL2NvZmYgL1ppIC9jIC9GbGd2bWF0MzIubHN0IGd2bWF0MzIuYXNtDQotbWwgL2NvZmYgL1ppIC9jIC9GbGluZmZhczMyLmxzdCBpbmZmYXMzMi5hc20NCmRpZmYgLS1naXQgYS9jb250cmliL21hc214ODYvcmVhZG1lLnR4dCBiL2NvbnRyaWIvbWFzbXg4Ni9yZWFkbWUudHh0CmluZGV4IDdiNTcxNjcuLjQxMzU4MGUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbWFzbXg4Ni9yZWFkbWUudHh0CisrKyBiL2NvbnRyaWIvbWFzbXg4Ni9yZWFkbWUudHh0CkBAIC0xNCw4ICsxNCw4IEBACiBCdWlsZCBpbnN0cnVjdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLQogKiBXaXRoIE1pY3Jvc29mdCBDIGFuZCBNQVNNOgotbm1ha2UgLWYgd2luMzIvTWFrZWZpbGUubXNjIExPQz0iLURBU01WIC1EQVNNSU5GIiBPQkpBPSJndm1hdDMyYy5vYmogZ3ZtYXQzMi5vYmogaW5mZmFzMzIub2JqIgorbm1ha2UgLWYgd2luMzIvTWFrZWZpbGUubXNjIExPQz0iLURBU01WIC1EQVNNSU5GIiBPQkpBPSJtYXRjaDY4Ni5vYmogaW5mZmFzMzIub2JqIgogCiAqIFdpdGggQm9ybGFuZCBDIGFuZCBUQVNNOgotbWFrZSAtZiB3aW4zMi9NYWtlZmlsZS5ib3IgTE9DQUxfWkxJQj0iLURBU01WIC1EQVNNSU5GIiBPQkpBPSJndm1hdDMyYy5vYmogZ3ZtYXQzMi5vYmogaW5mZmFzMzIub2JqIiBPQkpQQT0iK2d2bWF0MzJjLm9iaitndm1hdDMyLm9iaitpbmZmYXMzMi5vYmoiCittYWtlIC1mIHdpbjMyL01ha2VmaWxlLmJvciBMT0NBTF9aTElCPSItREFTTVYgLURBU01JTkYiIE9CSkE9Im1hdGNoNjg2Lm9iaiBpbmZmYXMzMi5vYmoiIE9CSlBBPSIrbWF0Y2g2ODZjLm9iaittYXRjaDY4Ni5vYmoraW5mZmFzMzIub2JqIgogCmRpZmYgLS1naXQgYS9jb250cmliL3Bhc2NhbC96bGlicGFzLnBhcyBiL2NvbnRyaWIvcGFzY2FsL3psaWJwYXMucGFzCmluZGV4IDgzNjg0OGMuLmRjN2QzN2QgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFzY2FsL3psaWJwYXMucGFzCisrKyBiL2NvbnRyaWIvcGFzY2FsL3psaWJwYXMucGFzCkBAIC0xMCw3ICsxMCw3IEBACiBpbnRlcmZhY2UKIAogY29uc3QKLSAgWkxJQl9WRVJTSU9OID0gJzEuMi4zJzsKKyAgWkxJQl9WRVJTSU9OID0gJzEuMi40JzsKIAogdHlwZQogICBhbGxvY19mdW5jID0gZnVuY3Rpb24ob3BhcXVlOiBQb2ludGVyOyBpdGVtcywgc2l6ZTogSW50ZWdlcik6IFBvaW50ZXI7CmRpZmYgLS1naXQgYS9jb250cmliL3ZzdHVkaW8vcmVhZG1lLnR4dCBiL2NvbnRyaWIvdnN0dWRpby9yZWFkbWUudHh0CmluZGV4IGE3YjcyNDcuLjkwNDg4OGIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdnN0dWRpby9yZWFkbWUudHh0CisrKyBiL2NvbnRyaWIvdnN0dWRpby9yZWFkbWUudHh0CkBAIC0xLDggKzEsOCBAQAotQnVpbGRpbmcgaW5zdHJ1Y3Rpb25zIGZvciB0aGUgRExMIHZlcnNpb25zIG9mIFpsaWIgMS4yLjMNCitCdWlsZGluZyBpbnN0cnVjdGlvbnMgZm9yIHRoZSBETEwgdmVyc2lvbnMgb2YgWmxpYiAxLjIuNA0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogDQogVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgcHJvamVjdHMgdGhhdCBidWlsZCB6bGliIGFuZCBtaW5pemlwIHVzaW5nDQotTWljcm9zb2Z0IFZpc3VhbCBDKysgNy4wLzcuMS84LjAvOS4wLzEwLjAsIGFuZCBWaXN1YWwgQysrIC4NCitNaWNyb3NvZnQgVmlzdWFsIEMrKyA5LjAvMTAuMCwgYW5kIFZpc3VhbCBDKysgLg0KIA0KIFlvdSBkb24ndCBuZWVkIHRvIGJ1aWxkIHRoZXNlIHByb2plY3RzIHlvdXJzZWxmLiBZb3UgY2FuIGRvd25sb2FkIHRoZQ0KIGJpbmFyaWVzIGZyb206DQpAQCAtMTUsNTEgKzE1LDE3IEBACiBibGRfbWwzMi5iYXQgaW4gY29udHJpYlxtYXNteDg2DQogDQogDQotQnVpbGQgaW5zdHJ1Y3Rpb25zIGZvciBWaXN1YWwgU3R1ZGlvIDcueCAoMzIgYml0cykNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0gVW5jb21wcmVzcyBjdXJyZW50IHpsaWIsIGluY2x1ZGluZyBhbGwgY29udHJpYi8qIGZpbGVzDQotLSBEb3dubG9hZCB0aGUgY3J0ZGxsIGxpYnJhcnkgZnJvbQ0KLSAgICBodHRwOi8vd3d3LndpbmltYWdlLmNvbS96TGliRGxsL2NydGRsbC56aXANCi0gIFVuemlwIGNydGRsbC56aXAgdG8gZXh0cmFjdCBjcnRkbGwubGliIG9uIGNvbnRyaWJcdnN0dWRpb1x2YzcuDQotLSBPcGVuIGNvbnRyaWJcdnN0dWRpb1x2YzdcemxpYnZjLnNsbiB3aXRoIE1pY3Jvc29mdCBWaXN1YWwgQysrIDcueA0KLSAgKFZpc3VhbCBTdHVkaW8gLk5ldCAyMDAyIG9yIDIwMDMpLg0KLQ0KLUJ1aWxkIGluc3RydWN0aW9ucyBmb3IgVmlzdWFsIFN0dWRpbyAyMDA1ICgzMiBiaXRzIG9yIDY0IGJpdHMpDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0tIFVuY29tcHJlc3MgY3VycmVudCB6bGliLCBpbmNsdWRpbmcgYWxsIGNvbnRyaWIvKiBmaWxlcw0KLS0gRm9yIDMyIGJpdHMgb25seTogZG93bmxvYWQgdGhlIGNydGRsbCBsaWJyYXJ5IGZyb20NCi0gICAgaHR0cDovL3d3dy53aW5pbWFnZS5jb20vekxpYkRsbC9jcnRkbGwuemlwDQotICBVbnppcCBjcnRkbGwuemlwIHRvIGV4dHJhY3QgY3J0ZGxsLmxpYiBvbiBjb250cmliXHZzdHVkaW9cdmM4Lg0KLS0gT3BlbiBjb250cmliXHZzdHVkaW9cdmM4XHpsaWJ2Yy5zbG4gd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKyAyMDA1DQotDQotQnVpbGQgaW5zdHJ1Y3Rpb25zIGZvciBWaXN1YWwgU3R1ZGlvIDIwMDUgNjQgYml0cywgUFNESyBjb21waWxlcg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi1hdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMgdGV4dCBmaWxlLCBWaXN1YWwgU3R1ZGlvIDIwMDUgKGFuZA0KLSAgTWljcm9zb2Z0IFZpc3VhbCBDKysgOC4wKSBpcyBvbiB0aGUgYmV0YSAyIHN0YWdlLg0KLVVzaW5nIHlvdSBjYW4gZ2V0IHRoZSBmcmVlIDY0IGJpdHMgY29tcGlsZXIgZnJvbSBQbGF0Zm9ybSBTREssDQotICB3aGljaCBpcyBOT1QgYSBiZXRhLCBhbmQgY29tcGlsZSB1c2luZyB0aGUgVmlzdWFsIHN0dWRpbyAyMDA1IElERQ0KLXNlZSBodHRwOi8vd3d3LndpbmltYWdlLmNvbS9taXNjL3NkazY0b252czIwMDUvIGZvciBpbnN0cnVjdGlvbg0KLQ0KLS0gVW5jb21wcmVzcyBjdXJyZW50IHpsaWIsIGluY2x1ZGluZyBhbGwgY29udHJpYi8qIGZpbGVzDQotLSBzdGFydCBWaXN1YWwgU3R1ZGlvIDIwMDUgZnJvbSBhIHBsYXRmb3JtIFNESyBjb21tYW5kIHByb21wdCwgdXNpbmcNCi0gIHRoZSAvdXNlZW52IHN3aXRjaA0KLS0gT3BlbiBjb250cmliXHZzdHVkaW9cdmM4XHpsaWJ2Yy5zbG4gd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKyAyMDA1DQogDQogDQogQnVpbGQgaW5zdHJ1Y3Rpb25zIGZvciBWaXN1YWwgU3R1ZGlvIDIwMDggKDMyIGJpdHMgb3IgNjQgYml0cykNCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC0gVW5jb21wcmVzcyBjdXJyZW50IHpsaWIsIGluY2x1ZGluZyBhbGwgY29udHJpYi8qIGZpbGVzDQotLSBGb3IgMzIgYml0cyBvbmx5OiBkb3dubG9hZCB0aGUgY3J0ZGxsIGxpYnJhcnkgZnJvbQ0KLSAgICBodHRwOi8vd3d3LndpbmltYWdlLmNvbS96TGliRGxsL2NydGRsbC56aXANCi0gIFVuemlwIGNydGRsbC56aXAgdG8gZXh0cmFjdCBjcnRkbGwubGliIG9uIGNvbnRyaWJcdnN0dWRpb1x2YzkuDQogLSBPcGVuIGNvbnRyaWJcdnN0dWRpb1x2YzlcemxpYnZjLnNsbiB3aXRoIE1pY3Jvc29mdCBWaXN1YWwgQysrIDIwMDguMA0KKy0gT3IgcnVuOiB2Y2J1aWxkIC9yZWJ1aWxkIGNvbnRyaWJcdnN0dWRpb1x2YzlcemxpYnZjLnNsbiAiUmVsZWFzZXxXaW4zMiINCiANCiBCdWlsZCBpbnN0cnVjdGlvbnMgZm9yIFZpc3VhbCBTdHVkaW8gMjAxMCAoMzIgYml0cyBvciA2NCBiaXRzKQ0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLSBVbmNvbXByZXNzIGN1cnJlbnQgemxpYiwgaW5jbHVkaW5nIGFsbCBjb250cmliLyogZmlsZXMNCi0tIEZvciAzMiBiaXRzIG9ubHk6IGRvd25sb2FkIHRoZSBjcnRkbGwgbGlicmFyeSBmcm9tDQotICAgIGh0dHA6Ly93d3cud2luaW1hZ2UuY29tL3pMaWJEbGwvY3J0ZGxsLnppcA0KLSAgVW56aXAgY3J0ZGxsLnppcCB0byBleHRyYWN0IGNydGRsbC5saWIgb24gY29udHJpYlx2c3R1ZGlvXHZjMTAuDQogLSBPcGVuIGNvbnRyaWJcdnN0dWRpb1x2YzEwXHpsaWJ2Yy5zbG4gd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKyAyMDEwLjANCiANCiANCmRpZmYgLS1naXQgYS9jb250cmliL3ZzdHVkaW8vdmMxMC90ZXN0emxpYi52Y3hwcm9qIGIvY29udHJpYi92c3R1ZGlvL3ZjMTAvdGVzdHpsaWIudmN4cHJvagppbmRleCA5ODEwNDEyLi45MDg4ZDE3IDEwMDY0NAotLS0gYS9jb250cmliL3ZzdHVkaW8vdmMxMC90ZXN0emxpYi52Y3hwcm9qCisrKyBiL2NvbnRyaWIvdnN0dWRpby92YzEwL3Rlc3R6bGliLnZjeHByb2oKQEAgLTE5NCw3ICsxOTQsNyBAQAogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KICAgICA8L0NsQ29tcGlsZT4NCiAgICAgPExpbms+DQotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Li5cLi5cbWFzbXg4Nlxndm1hdDMyLm9iajsuLlwuLlxtYXNteDg2XGluZmZhczMyLm9iajslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPi4uXC4uXG1hc214ODZcbWF0Y2g2ODYub2JqOy4uXC4uXG1hc214ODZcaW5mZmFzMzIub2JqOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpdGVzdHpsaWIuZXhlPC9PdXRwdXRGaWxlPg0KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKXRlc3R6bGliLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4NCkBAIC0yNTQsNyArMjU0LDcgQEAKICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCiAgICAgPC9DbENvbXBpbGU+DQogICAgIDxMaW5rPg0KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPi4uXC4uXG1hc214ODZcZ3ZtYXQzMi5vYmo7Li5cLi5cbWFzbXg4NlxpbmZmYXMzMi5vYmo7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4uLlwuLlxtYXNteDg2XG1hdGNoNjg2Lm9iajsuLlwuLlxtYXNteDg2XGluZmZhczMyLm9iajslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXRlc3R6bGliLmV4ZTwvT3V0cHV0RmlsZT4NCiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4NCiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCkBAIC0zOTcsMTQgKzM5Nyw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxjb21wcmVzcy5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGNyYzMyLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cZGVmbGF0ZS5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXG1hc214ODZcZ3ZtYXQzMmMuYyI+DQotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8SXRhbml1bSciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPg0KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPg0KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VXaXRob3V0QXNtfEl0YW5pdW0nIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCi0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlV2l0aG91dEFzbXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCi0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfEl0YW5pdW0nIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCi0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPg0KLSAgICA8L0NsQ29tcGlsZT4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxpbmZiYWNrLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cbWFzbXg2NFxpbmZmYXM4NjY0LmMiPg0KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfEl0YW5pdW0nIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCmRpZmYgLS1naXQgYS9jb250cmliL3ZzdHVkaW8vdmMxMC90ZXN0emxpYi52Y3hwcm9qLmZpbHRlcnMgYi9jb250cmliL3ZzdHVkaW8vdmMxMC90ZXN0emxpYi52Y3hwcm9qLmZpbHRlcnMKaW5kZXggYTBkOWIyMy4uMjQ5ZGFhOCAxMDA2NDQKLS0tIGEvY29udHJpYi92c3R1ZGlvL3ZjMTAvdGVzdHpsaWIudmN4cHJvai5maWx0ZXJzCisrKyBiL2NvbnRyaWIvdnN0dWRpby92YzEwL3Rlc3R6bGliLnZjeHByb2ouZmlsdGVycwpAQCAtMjcsOSArMjcsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cZGVmbGF0ZS5jIj4NCiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxtYXNteDg2XGd2bWF0MzJjLmMiPg0KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGluZmJhY2suYyI+DQogICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQpkaWZmIC0tZ2l0IGEvY29udHJpYi92c3R1ZGlvL3ZjMTAvemxpYi5yYyBiL2NvbnRyaWIvdnN0dWRpby92YzEwL3psaWIucmMKaW5kZXggNzJjYjhiNC4uMjM4MDJkOCAxMDA2NDQKLS0tIGEvY29udHJpYi92c3R1ZGlvL3ZjMTAvemxpYi5yYworKysgYi9jb250cmliL3ZzdHVkaW8vdmMxMC96bGliLnJjCkBAIC0yLDggKzIsOCBAQAogDQogI2RlZmluZSBJRFJfVkVSU0lPTjEgIDENCiBJRFJfVkVSU0lPTjEJVkVSU0lPTklORk8JTU9WRUFCTEUgSU1QVVJFIExPQURPTkNBTEwgRElTQ0FSREFCTEUNCi0gIEZJTEVWRVJTSU9OCSAxLDIsMywwDQotICBQUk9EVUNUVkVSU0lPTiAxLDIsMywwDQorICBGSUxFVkVSU0lPTgkgMSwyLDQsMA0KKyAgUFJPRFVDVFZFUlNJT04gMSwyLDQsMA0KICAgRklMRUZMQUdTTUFTSwlWU19GRklfRklMRUZMQUdTTUFTSw0KICAgRklMRUZMQUdTCTANCiAgIEZJTEVPUwlWT1NfRE9TX1dJTkRPV1MzMg0KQEAgLTE2LDEzICsxNiwxMyBAQAogICAgIC8vbGFuZ3VhZ2UgSUQgPSBVLlMuIEVuZ2xpc2gsIGNoYXIgc2V0ID0gV2luZG93cywgTXVsdGlsaW5ndWFsDQogDQogICAgIEJFR0lODQotICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJ6bGliIGRhdGEgY29tcHJlc3Npb24gbGlicmFyeVwwIg0KLSAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsCSIxLjIuMy4wXDAiDQorICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJ6bGliIGRhdGEgY29tcHJlc3Npb24gYW5kIFpJUCBmaWxlIEkvTyBsaWJyYXJ5XDAiDQorICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwJIjEuMi40LjBcMCINCiAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwJInpsaWJcMCINCiAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsCSJ6bGliLmRsbFwwIg0KICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsCSJaTGliLkRMTFwwIg0KICAgICAgIFZBTFVFICJDb21tZW50cyIsIkRMTCBzdXBwb3J0IGJ5IEFsZXNzYW5kcm8gSWFjb3BldHRpICYgR2lsbGVzIFZvbGxhbnRcMCINCi0gICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiKEMpIDE5OTUtMjAwMyBKZWFuLWxvdXAgR2FpbGx5ICYgTWFyayBBZGxlclwwIg0KKyAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICIoQykgMTk5NS0yMDEwIEplYW4tbG91cCBHYWlsbHkgJiBNYXJrIEFkbGVyXDAiDQogICAgIEVORA0KICAgRU5EDQogICBCTE9DSyAiVmFyRmlsZUluZm8iDQpkaWZmIC0tZ2l0IGEvY29udHJpYi92c3R1ZGlvL3ZjMTAvemxpYnN0YXQudmN4cHJvaiBiL2NvbnRyaWIvdnN0dWRpby92YzEwL3psaWJzdGF0LnZjeHByb2oKaW5kZXggZmJmNmMxYi4uMjY4MmZjYSAxMDA2NDQKLS0tIGEvY29udHJpYi92c3R1ZGlvL3ZjMTAvemxpYnN0YXQudmN4cHJvagorKysgYi9jb250cmliL3ZzdHVkaW8vdmMxMC96bGlic3RhdC52Y3hwcm9qCkBAIC0yMDYsNyArMjA2LDcgQEAKICAgICA8L1Jlc291cmNlQ29tcGlsZT4NCiAgICAgPExpYj4NCiAgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L01BQ0hJTkU6WDg2IC9OT0RFRkFVTFRMSUIgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPg0KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPi4uXC4uXG1hc214ODZcZ3ZtYXQzMi5vYmo7Li5cLi5cbWFzbXg4NlxpbmZmYXMzMi5vYmo7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4uLlwuLlxtYXNteDg2XG1hdGNoNjg2Lm9iajsuLlwuLlxtYXNteDg2XGluZmZhczMyLm9iajslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXpsaWJzdGF0LmxpYjwvT3V0cHV0RmlsZT4NCiAgICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4NCiAgICAgPC9MaWI+DQpAQCAtNDIyLDE2ICs0MjIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cY29tcHJlc3MuYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxjcmMzMi5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGRlZmxhdGUuYyIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxtYXNteDg2XGd2bWF0MzJjLmMiPg0KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfEl0YW5pdW0nIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCi0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCi0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZVdpdGhvdXRBc218eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxJdGFuaXVtJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCi0gICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cZ3pjbG9zZS5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGd6aW8uYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxnemxpYi5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGd6cmVhZC5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGd6d3JpdGUuYyIgLz4NCmRpZmYgLS1naXQgYS9jb250cmliL3ZzdHVkaW8vdmMxMC96bGlic3RhdC52Y3hwcm9qLmZpbHRlcnMgYi9jb250cmliL3ZzdHVkaW8vdmMxMC96bGlic3RhdC52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZjY3NmMyZC4uYzhjN2Y3ZSAxMDA2NDQKLS0tIGEvY29udHJpYi92c3R1ZGlvL3ZjMTAvemxpYnN0YXQudmN4cHJvai5maWx0ZXJzCisrKyBiL2NvbnRyaWIvdnN0dWRpby92YzEwL3psaWJzdGF0LnZjeHByb2ouZmlsdGVycwpAQCAtMTgsMTUgKzE4LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGRlZmxhdGUuYyI+DQogICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cbWFzbXg4Nlxndm1hdDMyYy5jIj4NCi0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxnemNsb3NlLmMiPg0KICAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGd6aW8uYyI+DQotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cZ3psaWIuYyI+DQogICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQpkaWZmIC0tZ2l0IGEvY29udHJpYi92c3R1ZGlvL3ZjMTAvemxpYnZjLmRlZiBiL2NvbnRyaWIvdnN0dWRpby92YzEwL3psaWJ2Yy5kZWYKaW5kZXggMGI2YTllOS4uYjNiN2NhYiAxMDA2NDQKLS0tIGEvY29udHJpYi92c3R1ZGlvL3ZjMTAvemxpYnZjLmRlZgorKysgYi9jb250cmliL3ZzdHVkaW8vdmMxMC96bGlidmMuZGVmCkBAIC0xLDcgKzEsNyBAQAorTElCUkFSWQ0KKzsgemxpYiBkYXRhIGNvbXByZXNzaW9uIGFuZCBaSVAgZmlsZSBJL08gbGlicmFyeQ0KIA0KLVZFUlNJT04JCTEuMjMNCi0NCi1IRUFQU0laRQkxMDQ4NTc2LDgxOTINCitWRVJTSU9OCQkxLjI0DQogDQogRVhQT1JUUw0KICAgICAgICAgYWRsZXIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMQ0KQEAgLTkwLDI1ICs5MCw0NyBAQAogICAgICAgICB1bnpHb1RvRmlsZVBvcyAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxMDENCiANCiAgICAgICAgIGZpbGxfd2luMzJfZmlsZWZ1bmMgICAgICAgICAgICAgICAgICAgICAgQDExMA0KLSAgICAgICAgZmlsbF93aW4zMl9maWxlZnVuYzY0ICAgICAgICAgICAgICAgICAgICBAMTExDQotICAgICAgICBmaWxsX3dpbjMyX2ZpbGVmdW5jNjRBICAgICAgICAgICAgICAgICAgIEAxMTINCi0gICAgICAgIGZpbGxfd2luMzJfZmlsZWZ1bmM2NFcgICAgICAgICAgICAgICAgICAgQDExMw0KIA0KLTsgcXVpY2sgaGFjayBieSBoa3Vub0BtaWNyb2hvdXNlLmNvLmpwDQotICAgICAgICB1bnpPcGVuNjQgICAgICAgICAgICAgICAgICAgICAgICAgQDEyMA0KLSAgICAgICAgdW56T3BlbjJfNjQgICAgICAgICAgICAgICAgICAgICAgIEAxMjENCi0gICAgICAgIHVuekdldEdsb2JhbEluZm82NCAgICAgICAgICAgICAgICBAMTIyDQotICAgICAgICB1bnpHZXRDdXJyZW50RmlsZUluZm82NCAgICAgICAgICAgQDEyNA0KLSAgICAgICAgdW56R2V0Q3VycmVudEZpbGVaU3RyZWFtUG9zNjQgICAgIEAxMjUNCi0gICAgICAgIHVuenRlbGw2NCAgICAgICAgICAgICAgICAgICAgICAgICBAMTI2DQotICAgICAgICB1bnpHZXRGaWxlUG9zNjQgICAgICAgICAgICAgICAgICAgQDEyNw0KLSAgICAgICAgdW56R29Ub0ZpbGVQb3M2NCAgICAgICAgICAgICAgICAgIEAxMjgNCis7IHpsaWJ3YXBpIHYxLjIuNCBhZGRlZDoNCisgICAgICAgIGZpbGxfd2luMzJfZmlsZWZ1bmM2NCAgICAgICAgICAgICAgICAgICBAMTExDQorICAgICAgICBmaWxsX3dpbjMyX2ZpbGVmdW5jNjRBICAgICAgICAgICAgICAgICAgQDExMg0KKyAgICAgICAgZmlsbF93aW4zMl9maWxlZnVuYzY0VyAgICAgICAgICAgICAgICAgIEAxMTMNCiANCi0gICAgICAgIHppcE9wZW42NCAgICAgICAgICAgICAgICAgICAgICAgICBAMTMwDQotICAgICAgICB6aXBPcGVuMl82NCAgICAgICAgICAgICAgICAgICAgICAgQDEzMQ0KLSAgICAgICAgemlwT3Blbk5ld0ZpbGVJblppcDY0ICAgICAgICAgICAgIEAxMzINCi0gICAgICAgIHppcE9wZW5OZXdGaWxlSW5aaXAyXzY0ICAgICAgICAgICBAMTMzDQotICAgICAgICB6aXBPcGVuTmV3RmlsZUluWmlwM182NCAgICAgICAgICAgQDEzNA0KLSAgICAgICAgemlwT3Blbk5ld0ZpbGVJblppcDRfNjQgICAgICAgICAgIEAxMzUNCi0gICAgICAgIHppcENsb3NlRmlsZUluWmlwUmF3NjQgICAgICAgICAgICBAMTM2DQotOyBlbmQgaGFjaw0KKyAgICAgICAgdW56T3BlbjY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxMjANCisgICAgICAgIHVuek9wZW4yXzY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTIxDQorICAgICAgICB1bnpHZXRHbG9iYWxJbmZvNjQgICAgICAgICAgICAgICAgICAgICAgQDEyMg0KKyAgICAgICAgdW56R2V0Q3VycmVudEZpbGVJbmZvNjQgICAgICAgICAgICAgICAgIEAxMjQNCisgICAgICAgIHVuekdldEN1cnJlbnRGaWxlWlN0cmVhbVBvczY0ICAgICAgICAgICBAMTI1DQorICAgICAgICB1bnp0ZWxsNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEyNg0KKyAgICAgICAgdW56R2V0RmlsZVBvczY0ICAgICAgICAgICAgICAgICAgICAgICAgIEAxMjcNCisgICAgICAgIHVuekdvVG9GaWxlUG9zNjQgICAgICAgICAgICAgICAgICAgICAgICBAMTI4DQorDQorICAgICAgICB6aXBPcGVuNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEzMA0KKyAgICAgICAgemlwT3BlbjJfNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxMzENCisgICAgICAgIHppcE9wZW5OZXdGaWxlSW5aaXA2NCAgICAgICAgICAgICAgICAgICBAMTMyDQorICAgICAgICB6aXBPcGVuTmV3RmlsZUluWmlwMl82NCAgICAgICAgICAgICAgICAgQDEzMw0KKyAgICAgICAgemlwT3Blbk5ld0ZpbGVJblppcDNfNjQgICAgICAgICAgICAgICAgIEAxMzQNCisgICAgICAgIHppcE9wZW5OZXdGaWxlSW5aaXA0XzY0ICAgICAgICAgICAgICAgICBAMTM1DQorICAgICAgICB6aXBDbG9zZUZpbGVJblppcFJhdzY0ICAgICAgICAgICAgICAgICAgQDEzNg0KKw0KKzsgemxpYjEgdjEuMi40IGFkZGVkOg0KKyAgICAgICAgYWRsZXIzMl9jb21iaW5lICAgICAgICAgICAgICAgICAgICAgICAgIEAxNDANCisgICAgICAgIGFkbGVyMzJfY29tYmluZTY0ICAgICAgICAgICAgICAgICAgICAgICBAMTQxDQorICAgICAgICBjcmMzMl9jb21iaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE0Mg0KKyAgICAgICAgY3JjMzJfY29tYmluZTY0ICAgICAgICAgICAgICAgICAgICAgICAgIEAxNDMNCisgICAgICAgIGRlZmxhdGVTZXRIZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICBAMTQ0DQorICAgICAgICBkZWZsYXRlVHVuZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE0NQ0KKyAgICAgICAgZ3pidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNDYNCisgICAgICAgIGd6Y2xvc2VfciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTQ3DQorICAgICAgICBnemNsb3NlX3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE0OA0KKyAgICAgICAgZ3pkaXJlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNDkNCisgICAgICAgIGd6b2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTUwDQorICAgICAgICBnem9mZnNldDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE1MQ0KKyAgICAgICAgZ3pvcGVuNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNTINCisgICAgICAgIGd6c2VlazY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTUzDQorICAgICAgICBnenRlbGw2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE1NA0KKyAgICAgICAgaW5mbGF0ZUdldEhlYWRlciAgICAgICAgICAgICAgICAgICAgICAgIEAxNTYNCisgICAgICAgIGluZmxhdGVNYXJrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTU3DQorICAgICAgICBpbmZsYXRlUHJpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE1OA0KKyAgICAgICAgaW5mbGF0ZVJlc2V0MiAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNTkNCisgICAgICAgIGluZmxhdGVVbmRlcm1pbmUgICAgICAgICAgICAgICAgICAgICAgICBAMTYwDQpkaWZmIC0tZ2l0IGEvY29udHJpYi92c3R1ZGlvL3ZjMTAvemxpYnZjLnNsbiBiL2NvbnRyaWIvdnN0dWRpby92YzEwL3psaWJ2Yy5zbG4KaW5kZXggNmQyZWY2NC4uNmY2ZmZkNSAxMDA2NDQKLS0tIGEvY29udHJpYi92c3R1ZGlvL3ZjMTAvemxpYnZjLnNsbgorKysgYi9jb250cmliL3ZzdHVkaW8vdmMxMC96bGlidmMuc2xuCkBAIC0zNiw4ICszNiw4IEBACiAJCXs4RkQ4MjZGOC0zNzM5LTQ0RTYtOENDOC05OTcxMjJFNTNCOER9LlJlbGVhc2V8SXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZXxJdGFuaXVtDQogCQl7OEZEODI2RjgtMzczOS00NEU2LThDQzgtOTk3MTIyRTUzQjhEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJCXs4RkQ4MjZGOC0zNzM5LTQ0RTYtOENDOC05OTcxMjJFNTNCOER9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs4RkQ4MjZGOC0zNzM5LTQ0RTYtOENDOC05OTcxMjJFNTNCOER9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2VXaXRob3V0QXNtfHg2NA0KLQkJezhGRDgyNkY4LTM3MzktNDRFNi04Q0M4LTk5NzEyMkU1M0I4RH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2VXaXRob3V0QXNtfHg2NA0KKwkJezhGRDgyNkY4LTM3MzktNDRFNi04Q0M4LTk5NzEyMkU1M0I4RH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs4RkQ4MjZGOC0zNzM5LTQ0RTYtOENDOC05OTcxMjJFNTNCOER9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJezhGRDgyNkY4LTM3MzktNDRFNi04Q0M4LTk5NzEyMkU1M0I4RH0uUmVsZWFzZVdpdGhvdXRBc218SXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtDQogCQl7OEZEODI2RjgtMzczOS00NEU2LThDQzgtOTk3MTIyRTUzQjhEfS5SZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtDQogCQl7OEZEODI2RjgtMzczOS00NEU2LThDQzgtOTk3MTIyRTUzQjhEfS5SZWxlYXNlV2l0aG91dEFzbXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlV2l0aG91dEFzbXxXaW4zMg0KQEAgLTk0LDggKzk0LDggQEAKIAkJe0M1MkY5RTdCLTQ5OEEtNDJCRS04REI0LTg1QTE1Njk0MzY2QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7QzUyRjlFN0ItNDk4QS00MkJFLThEQjQtODVBMTU2OTQzNjZBfS5SZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtLkFjdGl2ZUNmZyA9IFJlbGVhc2V8SXRhbml1bQ0KIAkJe0M1MkY5RTdCLTQ5OEEtNDJCRS04REI0LTg1QTE1Njk0MzY2QX0uUmVsZWFzZVdpdGhvdXRBc218SXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZXxJdGFuaXVtDQotCQl7QzUyRjlFN0ItNDk4QS00MkJFLThEQjQtODVBMTU2OTQzNjZBfS5SZWxlYXNlV2l0aG91dEFzbXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfEl0YW5pdW0NCi0JCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM2NkF9LlJlbGVhc2VXaXRob3V0QXNtfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfEl0YW5pdW0NCisJCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM2NkF9LlJlbGVhc2VXaXRob3V0QXNtfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM2NkF9LlJlbGVhc2VXaXRob3V0QXNtfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJezQ4Q0REOURDLUUwOUYtNDEzNS05QzBDLTRGRTUwQzNDNjU0Qn0uRGVidWd8SXRhbml1bS5BY3RpdmVDZmcgPSBEZWJ1Z3xJdGFuaXVtDQogCQl7NDhDREQ5REMtRTA5Ri00MTM1LTlDMEMtNEZFNTBDM0M2NTRCfS5EZWJ1Z3xJdGFuaXVtLkJ1aWxkLjAgPSBEZWJ1Z3xJdGFuaXVtDQogCQl7NDhDREQ5REMtRTA5Ri00MTM1LTlDMEMtNEZFNTBDM0M2NTRCfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KQEAgLTExMCw4ICsxMTAsOCBAQAogCQl7NDhDREQ5REMtRTA5Ri00MTM1LTlDMEMtNEZFNTBDM0M2NTRCfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXs0OENERDlEQy1FMDlGLTQxMzUtOUMwQy00RkU1MEMzQzY1NEJ9LlJlbGVhc2VXaXRob3V0QXNtfEl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZXxJdGFuaXVtDQogCQl7NDhDREQ5REMtRTA5Ri00MTM1LTlDMEMtNEZFNTBDM0M2NTRCfS5SZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlfEl0YW5pdW0NCi0JCXs0OENERDlEQy1FMDlGLTQxMzUtOUMwQy00RkU1MEMzQzY1NEJ9LlJlbGVhc2VXaXRob3V0QXNtfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8SXRhbml1bQ0KLQkJezQ4Q0REOURDLUUwOUYtNDEzNS05QzBDLTRGRTUwQzNDNjU0Qn0uUmVsZWFzZVdpdGhvdXRBc218eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8SXRhbml1bQ0KKwkJezQ4Q0REOURDLUUwOUYtNDEzNS05QzBDLTRGRTUwQzNDNjU0Qn0uUmVsZWFzZVdpdGhvdXRBc218V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezQ4Q0REOURDLUUwOUYtNDEzNS05QzBDLTRGRTUwQzNDNjU0Qn0uUmVsZWFzZVdpdGhvdXRBc218eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7QzUyRjlFN0ItNDk4QS00MkJFLThEQjQtODVBMTU2OTQzODJBfS5EZWJ1Z3xJdGFuaXVtLkFjdGl2ZUNmZyA9IERlYnVnfEl0YW5pdW0NCiAJCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM4MkF9LkRlYnVnfEl0YW5pdW0uQnVpbGQuMCA9IERlYnVnfEl0YW5pdW0NCiAJCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM4MkF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQpAQCAtMTI2LDggKzEyNiw4IEBACiAJCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM4MkF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJe0M1MkY5RTdCLTQ5OEEtNDJCRS04REI0LTg1QTE1Njk0MzgyQX0uUmVsZWFzZVdpdGhvdXRBc218SXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlfEl0YW5pdW0NCiAJCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM4MkF9LlJlbGVhc2VXaXRob3V0QXNtfEl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2V8SXRhbml1bQ0KLQkJe0M1MkY5RTdCLTQ5OEEtNDJCRS04REI0LTg1QTE1Njk0MzgyQX0uUmVsZWFzZVdpdGhvdXRBc218V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxJdGFuaXVtDQotCQl7QzUyRjlFN0ItNDk4QS00MkJFLThEQjQtODVBMTU2OTQzODJBfS5SZWxlYXNlV2l0aG91dEFzbXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxJdGFuaXVtDQorCQl7QzUyRjlFN0ItNDk4QS00MkJFLThEQjQtODVBMTU2OTQzODJBfS5SZWxlYXNlV2l0aG91dEFzbXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzUyRjlFN0ItNDk4QS00MkJFLThEQjQtODVBMTU2OTQzODJBfS5SZWxlYXNlV2l0aG91dEFzbXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJRW5kR2xvYmFsU2VjdGlvbg0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KIAkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQpkaWZmIC0tZ2l0IGEvY29udHJpYi92c3R1ZGlvL3ZjMTAvemxpYnZjLnZjeHByb2ogYi9jb250cmliL3ZzdHVkaW8vdmMxMC96bGlidmMudmN4cHJvagppbmRleCBlMTA2N2ZhLi45ODYyMzk4IDEwMDY0NAotLS0gYS9jb250cmliL3ZzdHVkaW8vdmMxMC96bGlidmMudmN4cHJvagorKysgYi9jb250cmliL3ZzdHVkaW8vdmMxMC96bGlidmMudmN4cHJvagpAQCAtMjEzLDcgKzIxMyw3IEBACiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+DQogICAgIDxMaW5rPg0KICAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vTUFDSElORTpJMzg2ICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4NCi0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4uLlwuLlxtYXNteDg2XGd2bWF0MzIub2JqOy4uXC4uXG1hc214ODZcaW5mZmFzMzIub2JqOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Li5cLi5cbWFzbXg4NlxtYXRjaDY4Ni5vYmo7Li5cLi5cbWFzbXg4NlxpbmZmYXMzMi5vYmo7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4NCiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcil6bGlid2FwaS5kbGw8L091dHB1dEZpbGU+DQogICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+DQogICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlPi5cemxpYnZjLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+DQpAQCAtMjkxLDcgKzI5MSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPg0KICAgICAgIDxFeGNlcHRpb25IYW5kbGluZz4NCiAgICAgICA8L0V4Y2VwdGlvbkhhbmRsaW5nPg0KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4NCisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+DQogICAgICAgPEJ1ZmZlclNlY3VyaXR5Q2hlY2s+ZmFsc2U8L0J1ZmZlclNlY3VyaXR5Q2hlY2s+DQogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPg0KICAgICAgIDxQcmVjb21waWxlZEhlYWRlck91dHB1dEZpbGU+JChJbnREaXIpemxpYnZjLnBjaDwvUHJlY29tcGlsZWRIZWFkZXJPdXRwdXRGaWxlPg0KQEAgLTMxMCw3ICszMTAsNyBAQAogICAgIDwvUmVzb3VyY2VDb21waWxlPg0KICAgICA8TGluaz4NCiAgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L01BQ0hJTkU6STM4NiAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+DQotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Li5cLi5cbWFzbXg4Nlxndm1hdDMyLm9iajsuLlwuLlxtYXNteDg2XGluZmZhczMyLm9iajslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPi4uXC4uXG1hc214ODZcbWF0Y2g2ODYub2JqOy4uXC4uXG1hc214ODZcaW5mZmFzMzIub2JqOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpemxpYndhcGkuZGxsPC9PdXRwdXRGaWxlPg0KICAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPg0KICAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPg0KQEAgLTU5OCwxNyArNTk4LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGNvbXByZXNzLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cY3JjMzIuYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxkZWZsYXRlLmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cbWFzbXg4Nlxndm1hdDMyYy5jIj4NCi0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xJdGFuaXVtJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZVdpdGhvdXRBc218SXRhbml1bSciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPg0KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VXaXRob3V0QXNtfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZVdpdGhvdXRBc218eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxJdGFuaXVtJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCi0gICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cZ3pjbG9zZS5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGd6aW8uYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxnemxpYi5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGd6cmVhZC5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGd6d3JpdGUuYyIgLz4NCmRpZmYgLS1naXQgYS9jb250cmliL3ZzdHVkaW8vdmMxMC96bGlidmMudmN4cHJvai5maWx0ZXJzIGIvY29udHJpYi92c3R1ZGlvL3ZjMTAvemxpYnZjLnZjeHByb2ouZmlsdGVycwppbmRleCA3YjU5NWM0Li4xODBiNzFjIDEwMDY0NAotLS0gYS9jb250cmliL3ZzdHVkaW8vdmMxMC96bGlidmMudmN4cHJvai5maWx0ZXJzCisrKyBiL2NvbnRyaWIvdnN0dWRpby92YzEwL3psaWJ2Yy52Y3hwcm9qLmZpbHRlcnMKQEAgLTI3LDE1ICsyNyw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxkZWZsYXRlLmMiPg0KICAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXG1hc214ODZcZ3ZtYXQzMmMuYyI+DQotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cZ3pjbG9zZS5jIj4NCiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxnemlvLmMiPg0KLSAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXGd6bGliLmMiPg0KICAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21waWxlPg0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvdnN0dWRpby92YzcvemxpYnZjLmRlZiBiL2NvbnRyaWIvdnN0dWRpby92YzcvemxpYnZjLmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI2YTllOS4uMDAwMDAwMAotLS0gYS9jb250cmliL3ZzdHVkaW8vdmM3L3psaWJ2Yy5kZWYKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotDQotVkVSU0lPTgkJMS4yMw0KLQ0KLUhFQVBTSVpFCTEwNDg1NzYsODE5Mg0KLQ0KLUVYUE9SVFMNCi0gICAgICAgIGFkbGVyMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDENCi0gICAgICAgIGNvbXByZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDINCi0gICAgICAgIGNyYzMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDMNCi0gICAgICAgIGRlZmxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDQNCi0gICAgICAgIGRlZmxhdGVDb3B5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDUNCi0gICAgICAgIGRlZmxhdGVFbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDYNCi0gICAgICAgIGRlZmxhdGVJbml0Ml8gICAgICAgICAgICAgICAgICAgICAgICAgICAgQDcNCi0gICAgICAgIGRlZmxhdGVJbml0XyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDgNCi0gICAgICAgIGRlZmxhdGVQYXJhbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDkNCi0gICAgICAgIGRlZmxhdGVSZXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEwDQotICAgICAgICBkZWZsYXRlU2V0RGljdGlvbmFyeSAgICAgICAgICAgICAgICAgICAgIEAxMQ0KLSAgICAgICAgZ3pjbG9zZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTINCi0gICAgICAgIGd6ZG9wZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEzDQotICAgICAgICBnemVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNA0KLSAgICAgICAgZ3pmbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTUNCi0gICAgICAgIGd6b3BlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE2DQotICAgICAgICBnenJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNw0KLSAgICAgICAgZ3p3cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTgNCi0gICAgICAgIGluZmxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE5DQotICAgICAgICBpbmZsYXRlRW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAyMA0KLSAgICAgICAgaW5mbGF0ZUluaXQyXyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMjENCi0gICAgICAgIGluZmxhdGVJbml0XyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDIyDQotICAgICAgICBpbmZsYXRlUmVzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAyMw0KLSAgICAgICAgaW5mbGF0ZVNldERpY3Rpb25hcnkgICAgICAgICAgICAgICAgICAgICBAMjQNCi0gICAgICAgIGluZmxhdGVTeW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDI1DQotICAgICAgICB1bmNvbXByZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAyNg0KLSAgICAgICAgemxpYlZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMjcNCi0gICAgICAgIGd6cHJpbnRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDI4DQotICAgICAgICBnenB1dGMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAyOQ0KLSAgICAgICAgZ3pnZXRjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMzANCi0gICAgICAgIGd6c2VlayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDMxDQotICAgICAgICBnenJld2luZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzMg0KLSAgICAgICAgZ3p0ZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMzMNCi0gICAgICAgIGd6ZW9mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDM0DQotICAgICAgICBnenNldHBhcmFtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzNQ0KLSAgICAgICAgekVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMzYNCi0gICAgICAgIGluZmxhdGVTeW5jUG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgQDM3DQotICAgICAgICBnZXRfY3JjX3RhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzOA0KLSAgICAgICAgY29tcHJlc3MyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMzkNCi0gICAgICAgIGd6cHV0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDQwDQotICAgICAgICBnemdldHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA0MQ0KLSAgICAgICAgaW5mbGF0ZUNvcHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBANDINCi0gICAgICAgIGluZmxhdGVCYWNrSW5pdF8gICAgICAgICAgICAgICAgICAgICAgICAgQDQzDQotICAgICAgICBpbmZsYXRlQmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA0NA0KLSAgICAgICAgaW5mbGF0ZUJhY2tFbmQgICAgICAgICAgICAgICAgICAgICAgICAgICBANDUNCi0gICAgICAgIGNvbXByZXNzQm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDQ2DQotICAgICAgICBkZWZsYXRlQm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA0Nw0KLSAgICAgICAgZ3pjbGVhcmVyciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBANDgNCi0gICAgICAgIGd6dW5nZXRjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDQ5DQotICAgICAgICB6bGliQ29tcGlsZUZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgIEA1MA0KLSAgICAgICAgZGVmbGF0ZVByaW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICBANTENCi0NCi0gICAgICAgIHVuek9wZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDYxDQotICAgICAgICB1bnpDbG9zZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA2Mg0KLSAgICAgICAgdW56R2V0R2xvYmFsSW5mbyAgICAgICAgICAgICAgICAgICAgICAgICBANjMNCi0gICAgICAgIHVuekdldEN1cnJlbnRGaWxlSW5mbyAgICAgICAgICAgICAgICAgICAgQDY0DQotICAgICAgICB1bnpHb1RvRmlyc3RGaWxlICAgICAgICAgICAgICAgICAgICAgICAgIEA2NQ0KLSAgICAgICAgdW56R29Ub05leHRGaWxlICAgICAgICAgICAgICAgICAgICAgICAgICBANjYNCi0gICAgICAgIHVuek9wZW5DdXJyZW50RmlsZSAgICAgICAgICAgICAgICAgICAgICAgQDY3DQotICAgICAgICB1bnpSZWFkQ3VycmVudEZpbGUgICAgICAgICAgICAgICAgICAgICAgIEA2OA0KLSAgICAgICAgdW56T3BlbkN1cnJlbnRGaWxlMyAgICAgICAgICAgICAgICAgICAgICBANjkNCi0gICAgICAgIHVuenRlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDcwDQotICAgICAgICB1bnplb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA3MQ0KLSAgICAgICAgdW56Q2xvc2VDdXJyZW50RmlsZSAgICAgICAgICAgICAgICAgICAgICBANzINCi0gICAgICAgIHVuekdldEdsb2JhbENvbW1lbnQgICAgICAgICAgICAgICAgICAgICAgQDczDQotICAgICAgICB1bnpTdHJpbmdGaWxlTmFtZUNvbXBhcmUgICAgICAgICAgICAgICAgIEA3NA0KLSAgICAgICAgdW56TG9jYXRlRmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBANzUNCi0gICAgICAgIHVuekdldExvY2FsRXh0cmFmaWVsZCAgICAgICAgICAgICAgICAgICAgQDc2DQotICAgICAgICB1bnpPcGVuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA3Nw0KLSAgICAgICAgdW56T3BlbkN1cnJlbnRGaWxlMiAgICAgICAgICAgICAgICAgICAgICBANzgNCi0gICAgICAgIHVuek9wZW5DdXJyZW50RmlsZVBhc3N3b3JkICAgICAgICAgICAgICAgQDc5DQotDQotICAgICAgICB6aXBPcGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA4MA0KLSAgICAgICAgemlwT3Blbk5ld0ZpbGVJblppcCAgICAgICAgICAgICAgICAgICAgICBAODENCi0gICAgICAgIHppcFdyaXRlSW5GaWxlSW5aaXAgICAgICAgICAgICAgICAgICAgICAgQDgyDQotICAgICAgICB6aXBDbG9zZUZpbGVJblppcCAgICAgICAgICAgICAgICAgICAgICAgIEA4Mw0KLSAgICAgICAgemlwQ2xvc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAODQNCi0gICAgICAgIHppcE9wZW5OZXdGaWxlSW5aaXAyICAgICAgICAgICAgICAgICAgICAgQDg2DQotICAgICAgICB6aXBDbG9zZUZpbGVJblppcFJhdyAgICAgICAgICAgICAgICAgICAgIEA4Nw0KLSAgICAgICAgemlwT3BlbjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAODgNCi0gICAgICAgIHppcE9wZW5OZXdGaWxlSW5aaXAzICAgICAgICAgICAgICAgICAgICAgQDg5DQotDQotICAgICAgICB1bnpHZXRGaWxlUG9zICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxMDANCi0gICAgICAgIHVuekdvVG9GaWxlUG9zICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEwMQ0KLQ0KLSAgICAgICAgZmlsbF93aW4zMl9maWxlZnVuYyAgICAgICAgICAgICAgICAgICAgICBAMTEwDQotICAgICAgICBmaWxsX3dpbjMyX2ZpbGVmdW5jNjQgICAgICAgICAgICAgICAgICAgIEAxMTENCi0gICAgICAgIGZpbGxfd2luMzJfZmlsZWZ1bmM2NEEgICAgICAgICAgICAgICAgICAgQDExMg0KLSAgICAgICAgZmlsbF93aW4zMl9maWxlZnVuYzY0VyAgICAgICAgICAgICAgICAgICBAMTEzDQotDQotOyBxdWljayBoYWNrIGJ5IGhrdW5vQG1pY3JvaG91c2UuY28uanANCi0gICAgICAgIHVuek9wZW42NCAgICAgICAgICAgICAgICAgICAgICAgICBAMTIwDQotICAgICAgICB1bnpPcGVuMl82NCAgICAgICAgICAgICAgICAgICAgICAgQDEyMQ0KLSAgICAgICAgdW56R2V0R2xvYmFsSW5mbzY0ICAgICAgICAgICAgICAgIEAxMjINCi0gICAgICAgIHVuekdldEN1cnJlbnRGaWxlSW5mbzY0ICAgICAgICAgICBAMTI0DQotICAgICAgICB1bnpHZXRDdXJyZW50RmlsZVpTdHJlYW1Qb3M2NCAgICAgQDEyNQ0KLSAgICAgICAgdW56dGVsbDY0ICAgICAgICAgICAgICAgICAgICAgICAgIEAxMjYNCi0gICAgICAgIHVuekdldEZpbGVQb3M2NCAgICAgICAgICAgICAgICAgICBAMTI3DQotICAgICAgICB1bnpHb1RvRmlsZVBvczY0ICAgICAgICAgICAgICAgICAgQDEyOA0KLQ0KLSAgICAgICAgemlwT3BlbjY0ICAgICAgICAgICAgICAgICAgICAgICAgIEAxMzANCi0gICAgICAgIHppcE9wZW4yXzY0ICAgICAgICAgICAgICAgICAgICAgICBAMTMxDQotICAgICAgICB6aXBPcGVuTmV3RmlsZUluWmlwNjQgICAgICAgICAgICAgQDEzMg0KLSAgICAgICAgemlwT3Blbk5ld0ZpbGVJblppcDJfNjQgICAgICAgICAgIEAxMzMNCi0gICAgICAgIHppcE9wZW5OZXdGaWxlSW5aaXAzXzY0ICAgICAgICAgICBAMTM0DQotICAgICAgICB6aXBPcGVuTmV3RmlsZUluWmlwNF82NCAgICAgICAgICAgQDEzNQ0KLSAgICAgICAgemlwQ2xvc2VGaWxlSW5aaXBSYXc2NCAgICAgICAgICAgIEAxMzYNCi07IGVuZCBoYWNrDQpkaWZmIC0tZ2l0IGEvY29udHJpYi92c3R1ZGlvL3ZjOC96bGlidmMuZGVmIGIvY29udHJpYi92c3R1ZGlvL3ZjOC96bGlidmMuZGVmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjZhOWU5Li4wMDAwMDAwCi0tLSBhL2NvbnRyaWIvdnN0dWRpby92YzgvemxpYnZjLmRlZgorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0NCi1WRVJTSU9OCQkxLjIzDQotDQotSEVBUFNJWkUJMTA0ODU3Niw4MTkyDQotDQotRVhQT1JUUw0KLSAgICAgICAgYWRsZXIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMQ0KLSAgICAgICAgY29tcHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMg0KLSAgICAgICAgY3JjMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMw0KLSAgICAgICAgZGVmbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBANA0KLSAgICAgICAgZGVmbGF0ZUNvcHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBANQ0KLSAgICAgICAgZGVmbGF0ZUVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBANg0KLSAgICAgICAgZGVmbGF0ZUluaXQyXyAgICAgICAgICAgICAgICAgICAgICAgICAgICBANw0KLSAgICAgICAgZGVmbGF0ZUluaXRfICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAOA0KLSAgICAgICAgZGVmbGF0ZVBhcmFtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAOQ0KLSAgICAgICAgZGVmbGF0ZVJlc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTANCi0gICAgICAgIGRlZmxhdGVTZXREaWN0aW9uYXJ5ICAgICAgICAgICAgICAgICAgICAgQDExDQotICAgICAgICBnemNsb3NlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxMg0KLSAgICAgICAgZ3pkb3BlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTMNCi0gICAgICAgIGd6ZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE0DQotICAgICAgICBnemZsdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNQ0KLSAgICAgICAgZ3pvcGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTYNCi0gICAgICAgIGd6cmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE3DQotICAgICAgICBnendyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxOA0KLSAgICAgICAgaW5mbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTkNCi0gICAgICAgIGluZmxhdGVFbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDIwDQotICAgICAgICBpbmZsYXRlSW5pdDJfICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAyMQ0KLSAgICAgICAgaW5mbGF0ZUluaXRfICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMjINCi0gICAgICAgIGluZmxhdGVSZXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDIzDQotICAgICAgICBpbmZsYXRlU2V0RGljdGlvbmFyeSAgICAgICAgICAgICAgICAgICAgIEAyNA0KLSAgICAgICAgaW5mbGF0ZVN5bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMjUNCi0gICAgICAgIHVuY29tcHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDI2DQotICAgICAgICB6bGliVmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAyNw0KLSAgICAgICAgZ3pwcmludGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMjgNCi0gICAgICAgIGd6cHV0YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDI5DQotICAgICAgICBnemdldGMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzMA0KLSAgICAgICAgZ3pzZWVrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMzENCi0gICAgICAgIGd6cmV3aW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDMyDQotICAgICAgICBnenRlbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzMw0KLSAgICAgICAgZ3plb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMzQNCi0gICAgICAgIGd6c2V0cGFyYW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDM1DQotICAgICAgICB6RXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzNg0KLSAgICAgICAgaW5mbGF0ZVN5bmNQb2ludCAgICAgICAgICAgICAgICAgICAgICAgICBAMzcNCi0gICAgICAgIGdldF9jcmNfdGFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDM4DQotICAgICAgICBjb21wcmVzczIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzOQ0KLSAgICAgICAgZ3pwdXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBANDANCi0gICAgICAgIGd6Z2V0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDQxDQotICAgICAgICBpbmZsYXRlQ29weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA0Mg0KLSAgICAgICAgaW5mbGF0ZUJhY2tJbml0XyAgICAgICAgICAgICAgICAgICAgICAgICBANDMNCi0gICAgICAgIGluZmxhdGVCYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDQ0DQotICAgICAgICBpbmZsYXRlQmFja0VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgIEA0NQ0KLSAgICAgICAgY29tcHJlc3NCb3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBANDYNCi0gICAgICAgIGRlZmxhdGVCb3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDQ3DQotICAgICAgICBnemNsZWFyZXJyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA0OA0KLSAgICAgICAgZ3p1bmdldGMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBANDkNCi0gICAgICAgIHpsaWJDb21waWxlRmxhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgQDUwDQotICAgICAgICBkZWZsYXRlUHJpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA1MQ0KLQ0KLSAgICAgICAgdW56T3BlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBANjENCi0gICAgICAgIHVuekNsb3NlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDYyDQotICAgICAgICB1bnpHZXRHbG9iYWxJbmZvICAgICAgICAgICAgICAgICAgICAgICAgIEA2Mw0KLSAgICAgICAgdW56R2V0Q3VycmVudEZpbGVJbmZvICAgICAgICAgICAgICAgICAgICBANjQNCi0gICAgICAgIHVuekdvVG9GaXJzdEZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgQDY1DQotICAgICAgICB1bnpHb1RvTmV4dEZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgIEA2Ng0KLSAgICAgICAgdW56T3BlbkN1cnJlbnRGaWxlICAgICAgICAgICAgICAgICAgICAgICBANjcNCi0gICAgICAgIHVuelJlYWRDdXJyZW50RmlsZSAgICAgICAgICAgICAgICAgICAgICAgQDY4DQotICAgICAgICB1bnpPcGVuQ3VycmVudEZpbGUzICAgICAgICAgICAgICAgICAgICAgIEA2OQ0KLSAgICAgICAgdW56dGVsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBANzANCi0gICAgICAgIHVuemVvZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDcxDQotICAgICAgICB1bnpDbG9zZUN1cnJlbnRGaWxlICAgICAgICAgICAgICAgICAgICAgIEA3Mg0KLSAgICAgICAgdW56R2V0R2xvYmFsQ29tbWVudCAgICAgICAgICAgICAgICAgICAgICBANzMNCi0gICAgICAgIHVuelN0cmluZ0ZpbGVOYW1lQ29tcGFyZSAgICAgICAgICAgICAgICAgQDc0DQotICAgICAgICB1bnpMb2NhdGVGaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA3NQ0KLSAgICAgICAgdW56R2V0TG9jYWxFeHRyYWZpZWxkICAgICAgICAgICAgICAgICAgICBANzYNCi0gICAgICAgIHVuek9wZW4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDc3DQotICAgICAgICB1bnpPcGVuQ3VycmVudEZpbGUyICAgICAgICAgICAgICAgICAgICAgIEA3OA0KLSAgICAgICAgdW56T3BlbkN1cnJlbnRGaWxlUGFzc3dvcmQgICAgICAgICAgICAgICBANzkNCi0NCi0gICAgICAgIHppcE9wZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDgwDQotICAgICAgICB6aXBPcGVuTmV3RmlsZUluWmlwICAgICAgICAgICAgICAgICAgICAgIEA4MQ0KLSAgICAgICAgemlwV3JpdGVJbkZpbGVJblppcCAgICAgICAgICAgICAgICAgICAgICBAODINCi0gICAgICAgIHppcENsb3NlRmlsZUluWmlwICAgICAgICAgICAgICAgICAgICAgICAgQDgzDQotICAgICAgICB6aXBDbG9zZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA4NA0KLSAgICAgICAgemlwT3Blbk5ld0ZpbGVJblppcDIgICAgICAgICAgICAgICAgICAgICBAODYNCi0gICAgICAgIHppcENsb3NlRmlsZUluWmlwUmF3ICAgICAgICAgICAgICAgICAgICAgQDg3DQotICAgICAgICB6aXBPcGVuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA4OA0KLSAgICAgICAgemlwT3Blbk5ld0ZpbGVJblppcDMgICAgICAgICAgICAgICAgICAgICBAODkNCi0NCi0gICAgICAgIHVuekdldEZpbGVQb3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEwMA0KLSAgICAgICAgdW56R29Ub0ZpbGVQb3MgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTAxDQotDQotICAgICAgICBmaWxsX3dpbjMyX2ZpbGVmdW5jICAgICAgICAgICAgICAgICAgICAgIEAxMTANCi0gICAgICAgIGZpbGxfd2luMzJfZmlsZWZ1bmM2NCAgICAgICAgICAgICAgICAgICAgQDExMQ0KLSAgICAgICAgZmlsbF93aW4zMl9maWxlZnVuYzY0QSAgICAgICAgICAgICAgICAgICBAMTEyDQotICAgICAgICBmaWxsX3dpbjMyX2ZpbGVmdW5jNjRXICAgICAgICAgICAgICAgICAgIEAxMTMNCi0NCi07IHF1aWNrIGhhY2sgYnkgaGt1bm9AbWljcm9ob3VzZS5jby5qcA0KLSAgICAgICAgdW56T3BlbjY0ICAgICAgICAgICAgICAgICAgICAgICAgIEAxMjANCi0gICAgICAgIHVuek9wZW4yXzY0ICAgICAgICAgICAgICAgICAgICAgICBAMTIxDQotICAgICAgICB1bnpHZXRHbG9iYWxJbmZvNjQgICAgICAgICAgICAgICAgQDEyMg0KLSAgICAgICAgdW56R2V0Q3VycmVudEZpbGVJbmZvNjQgICAgICAgICAgIEAxMjQNCi0gICAgICAgIHVuekdldEN1cnJlbnRGaWxlWlN0cmVhbVBvczY0ICAgICBAMTI1DQotICAgICAgICB1bnp0ZWxsNjQgICAgICAgICAgICAgICAgICAgICAgICAgQDEyNg0KLSAgICAgICAgdW56R2V0RmlsZVBvczY0ICAgICAgICAgICAgICAgICAgIEAxMjcNCi0gICAgICAgIHVuekdvVG9GaWxlUG9zNjQgICAgICAgICAgICAgICAgICBAMTI4DQotDQotICAgICAgICB6aXBPcGVuNjQgICAgICAgICAgICAgICAgICAgICAgICAgQDEzMA0KLSAgICAgICAgemlwT3BlbjJfNjQgICAgICAgICAgICAgICAgICAgICAgIEAxMzENCi0gICAgICAgIHppcE9wZW5OZXdGaWxlSW5aaXA2NCAgICAgICAgICAgICBAMTMyDQotICAgICAgICB6aXBPcGVuTmV3RmlsZUluWmlwMl82NCAgICAgICAgICAgQDEzMw0KLSAgICAgICAgemlwT3Blbk5ld0ZpbGVJblppcDNfNjQgICAgICAgICAgIEAxMzQNCi0gICAgICAgIHppcE9wZW5OZXdGaWxlSW5aaXA0XzY0ICAgICAgICAgICBAMTM1DQotICAgICAgICB6aXBDbG9zZUZpbGVJblppcFJhdzY0ICAgICAgICAgICAgQDEzNg0KLTsgZW5kIGhhY2sNCmRpZmYgLS1naXQgYS9jb250cmliL3ZzdHVkaW8vdmM5L3Rlc3R6bGliLnZjcHJvaiBiL2NvbnRyaWIvdnN0dWRpby92YzkvdGVzdHpsaWIudmNwcm9qCmluZGV4IDlhZDA3YWUuLjljYjBiZjggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdnN0dWRpby92YzkvdGVzdHpsaWIudmNwcm9qCisrKyBiL2NvbnRyaWIvdnN0dWRpby92YzkvdGVzdHpsaWIudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQorCVZlcnNpb249IjksMDAiDQogCU5hbWU9InRlc3R6bGliIg0KIAlQcm9qZWN0R1VJRD0ie0FBNjY2NkFBLUUwOUYtNDEzNS05QzBDLTRGRTUwQzNDNjU0Qn0iDQogCVJvb3ROYW1lc3BhY2U9InRlc3R6bGliIg0KQEAgLTcxLDcgKzcxLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlxtYXNteDg2XGd2bWF0MzIub2JqIC4uXC4uXG1hc214ODZcaW5mZmFzMzIub2JqIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlxtYXNteDg2XG1hdGNoNjg2Lm9iaiAuLlwuLlxtYXNteDg2XGluZmZhczMyLm9iaiINCiAJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3Rlc3R6bGliLmV4ZSINCiAJCQkJTGlua0luY3JlbWVudGFsPSIyIg0KIAkJCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSINCkBAIC0xMDUsNiArMTA1LDE1MiBAQAogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8eDY0Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0ieDY0XFRlc3RabGliJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJ4NjRcVGVzdFpsaWIkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi4iDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJBU01WO0FTTUlORjtXSU4zMjtaTElCX1dJTkFQSTtfREVCVUc7X0NPTlNPTEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX1dBUk5JTkdTIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSINCisJCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIkKEludERpcilcIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlxtYXNteDY0XGd2bWF0NjQub2JqIC4uXC4uXG1hc214NjRcaW5mZmFzeDY0Lm9iaiINCisJCQkJR2VuZXJhdGVNYW5pZmVzdD0iZmFsc2UiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iRGVidWd8SXRhbml1bSINCisJCQlPdXRwdXREaXJlY3Rvcnk9ImlhNjRcVGVzdFpsaWIkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImlhNjRcVGVzdFpsaWIkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjAiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWkxJQl9XSU5BUEk7X0RFQlVHO19DT05TT0xFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19XQVJOSU5HUztXSU42NCINCisJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9ImZhbHNlIg0KKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCisJCQkJQXNzZW1ibGVyT3V0cHV0PSI0Ig0KKwkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249IiQoSW50RGlyKVwiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGVzdHpsaWIuZXhlIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQorCQkJCUdlbmVyYXRlTWFuaWZlc3Q9ImZhbHNlIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90ZXN0emxpYi5wZGIiDQorCQkJCVN1YlN5c3RlbT0iMSINCisJCQkJVGFyZ2V0TWFjaGluZT0iNSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCiAJCQlOYW1lPSJSZWxlYXNlV2l0aG91dEFzbXxXaW4zMiINCiAJCQlPdXRwdXREaXJlY3Rvcnk9Ing4NlxUZXN0WmxpYiQoQ29uZmlndXJhdGlvbk5hbWUpIg0KIAkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0ieDg2XFRlc3RabGliJChDb25maWd1cmF0aW9uTmFtZSlcVG1wIg0KQEAgLTE5MSwyNDUgKzMzNyw2IEBACiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0ieDg2XFRlc3RabGliJChDb25maWd1cmF0aW9uTmFtZSkiDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJ4ODZcVGVzdFpsaWIkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi4iDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJBU01WO0FTTUlORjtXSU4zMjtaTElCX1dJTkFQSTtOREVCVUc7X0NPTlNPTEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX1dBUk5JTkdTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KLQkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249IiQoSW50RGlyKVwiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlxtYXNteDg2XGd2bWF0MzIub2JqIC4uXC4uXG1hc214ODZcaW5mZmFzMzIub2JqIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGVzdHpsaWIuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCUdlbmVyYXRlTWFuaWZlc3Q9ImZhbHNlIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KLQkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KLQkJCQlPcHRpbWl6ZUZvcldpbmRvd3M5OD0iMSINCi0JCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KLQkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSJ4NjRcVGVzdFpsaWIkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ing2NFxUZXN0WmxpYiQoQ29uZmlndXJhdGlvbk5hbWUpXFRtcCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IkFTTVY7QVNNSU5GO1dJTjMyO1pMSUJfV0lOQVBJO19ERUJVRztfQ09OU09MRTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9ImZhbHNlIg0KLQkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249IiQoSW50RGlyKVwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXG1hc214NjRcZ3ZtYXQ2NC5vYmogLi5cLi5cbWFzbXg2NFxpbmZmYXN4NjQub2JqIg0KLQkJCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8SXRhbml1bSINCi0JCQlPdXRwdXREaXJlY3Rvcnk9ImlhNjRcVGVzdFpsaWIkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImlhNjRcVGVzdFpsaWIkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWkxJQl9XSU5BUEk7X0RFQlVHO19DT05TT0xFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19XQVJOSU5HUztXSU42NCINCi0JCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9ImZhbHNlIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCi0JCQkJQXNzZW1ibGVyT3V0cHV0PSI0Ig0KLQkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249IiQoSW50RGlyKVwiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvdGVzdHpsaWIuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQotCQkJCUdlbmVyYXRlTWFuaWZlc3Q9ImZhbHNlIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS90ZXN0emxpYi5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJVGFyZ2V0TWFjaGluZT0iNSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQogCQkJTmFtZT0iUmVsZWFzZVdpdGhvdXRBc218eDY0Ig0KIAkJCU91dHB1dERpcmVjdG9yeT0ieDY0XFRlc3RabGliJChDb25maWd1cmF0aW9uTmFtZSkiDQogCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJ4NjRcVGVzdFpsaWIkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQpAQCAtNDkzLDkgKzQwMCw2IEBACiAJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQogCQkJLz4NCiAJCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCkBAIC01ODEsNyArNDg1LDkxIEBACiAJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQogCQkJLz4NCiAJCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0ieDg2XFRlc3RabGliJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJ4ODZcVGVzdFpsaWIkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlPcHRpbWl6YXRpb249IjIiDQorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KKwkJCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi4iDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJBU01WO0FTTUlORjtXSU4zMjtaTElCX1dJTkFQSTtOREVCVUc7X0NPTlNPTEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX1dBUk5JTkdTIg0KKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KKwkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249IiQoSW50RGlyKVwiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlxtYXNteDg2XG1hdGNoNjg2Lm9iaiAuLlwuLlxtYXNteDg2XGluZmZhczMyLm9iaiINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL3Rlc3R6bGliLmV4ZSINCisJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KKwkJCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlTdWJTeXN0ZW09IjEiDQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCisJCQkJT3B0aW1pemVGb3JXaW5kb3dzOTg9IjEiDQorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQorCQkJCVRhcmdldE1hY2hpbmU9IjEiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQpAQCAtNjE0LDcgKzYwMiw3IEBACiAJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi4iDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJBU01WO0FTTUlORjtXSU4zMjtaTElCX1dJTkFQSTtOREVCVUc7X0NPTlNPTEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX1dBUk5JTkdTIg0KIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMCINCiAJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iZmFsc2UiDQogCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iJChJbnREaXIpXCINCiAJCQkvPg0KQEAgLTY1MSw5ICs2MzksNiBAQAogCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KIAkJCS8+DQogCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQogCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQpAQCAtNzM5LDkgKzcyNCw2IEBACiAJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQogCQkJLz4NCiAJCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCkBAIC03NzAsODIgKzc1Miw2IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXG1hc214ODZcZ3ZtYXQzMmMuYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xJdGFuaXVtIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2VXaXRob3V0QXNtfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8SXRhbml1bSINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW42NCAoQU1ENjQpIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9IlRSVUUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luNjQgKEFNRDY0KSINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJUUlVFIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlQXNtfFdpbjY0IChBTUQ2NCkiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0iVFJVRSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5caW5mYmFjay5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTg2MSwyMiArNzY3LDYgQEAKIAkJCQkJLz4NCiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlV2l0aG91dEFzbXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IkRlYnVnfEl0YW5pdW0iDQogCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCiAJCQkJCT4NCkBAIC04ODUsNiArNzc1LDE0IEBACiAJCQkJCS8+DQogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZVdpdGhvdXRBc218V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFtZT0iUmVsZWFzZVdpdGhvdXRBc218SXRhbml1bSINCiAJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KIAkJCQkJPg0KQEAgLTg5Myw2ICs3OTEsMTQgQEAKIAkJCQkJLz4NCiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IlJlbGVhc2V8SXRhbml1bSINCiAJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KIAkJCQkJPg0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvdnN0dWRpby92YzkvemxpYi5yYyBiL2NvbnRyaWIvdnN0dWRpby92YzkvemxpYi5yYwppbmRleCA3MmNiOGI0Li4yMzgwMmQ4IDEwMDY0NAotLS0gYS9jb250cmliL3ZzdHVkaW8vdmM5L3psaWIucmMKKysrIGIvY29udHJpYi92c3R1ZGlvL3ZjOS96bGliLnJjCkBAIC0yLDggKzIsOCBAQAogDQogI2RlZmluZSBJRFJfVkVSU0lPTjEgIDENCiBJRFJfVkVSU0lPTjEJVkVSU0lPTklORk8JTU9WRUFCTEUgSU1QVVJFIExPQURPTkNBTEwgRElTQ0FSREFCTEUNCi0gIEZJTEVWRVJTSU9OCSAxLDIsMywwDQotICBQUk9EVUNUVkVSU0lPTiAxLDIsMywwDQorICBGSUxFVkVSU0lPTgkgMSwyLDQsMA0KKyAgUFJPRFVDVFZFUlNJT04gMSwyLDQsMA0KICAgRklMRUZMQUdTTUFTSwlWU19GRklfRklMRUZMQUdTTUFTSw0KICAgRklMRUZMQUdTCTANCiAgIEZJTEVPUwlWT1NfRE9TX1dJTkRPV1MzMg0KQEAgLTE2LDEzICsxNiwxMyBAQAogICAgIC8vbGFuZ3VhZ2UgSUQgPSBVLlMuIEVuZ2xpc2gsIGNoYXIgc2V0ID0gV2luZG93cywgTXVsdGlsaW5ndWFsDQogDQogICAgIEJFR0lODQotICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJ6bGliIGRhdGEgY29tcHJlc3Npb24gbGlicmFyeVwwIg0KLSAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsCSIxLjIuMy4wXDAiDQorICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJ6bGliIGRhdGEgY29tcHJlc3Npb24gYW5kIFpJUCBmaWxlIEkvTyBsaWJyYXJ5XDAiDQorICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwJIjEuMi40LjBcMCINCiAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwJInpsaWJcMCINCiAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsCSJ6bGliLmRsbFwwIg0KICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsCSJaTGliLkRMTFwwIg0KICAgICAgIFZBTFVFICJDb21tZW50cyIsIkRMTCBzdXBwb3J0IGJ5IEFsZXNzYW5kcm8gSWFjb3BldHRpICYgR2lsbGVzIFZvbGxhbnRcMCINCi0gICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiKEMpIDE5OTUtMjAwMyBKZWFuLWxvdXAgR2FpbGx5ICYgTWFyayBBZGxlclwwIg0KKyAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICIoQykgMTk5NS0yMDEwIEplYW4tbG91cCBHYWlsbHkgJiBNYXJrIEFkbGVyXDAiDQogICAgIEVORA0KICAgRU5EDQogICBCTE9DSyAiVmFyRmlsZUluZm8iDQpkaWZmIC0tZ2l0IGEvY29udHJpYi92c3R1ZGlvL3ZjOS96bGlic3RhdC52Y3Byb2ogYi9jb250cmliL3ZzdHVkaW8vdmM5L3psaWJzdGF0LnZjcHJvagppbmRleCBmZjk4MTNhLi42MWM3NmM3IDEwMDY0NAotLS0gYS9jb250cmliL3ZzdHVkaW8vdmM5L3psaWJzdGF0LnZjcHJvagorKysgYi9jb250cmliL3ZzdHVkaW8vdmM5L3psaWJzdGF0LnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KKwlWZXJzaW9uPSI5LDAwIg0KIAlOYW1lPSJ6bGlic3RhdCINCiAJUHJvamVjdEdVSUQ9Ins3NDVERUM1OC1FQkIzLTQ3QTktQTlCOC00QzY2MjdDMDFCRjh9Ig0KIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQpAQCAtOTQsMTUzICs5NCw2IEBACiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0ieDg2XFpsaWJTdGF0JChDb25maWd1cmF0aW9uTmFtZSkiDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJ4ODZcWmxpYlN0YXQkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IlVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi47Li5cLi5cbWFzbXg4NiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO1pMSUJfV0lOQVBJO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19XQVJOSU5HUztBU01WO0FTTUlORiINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iJChJbnREaXIpL3psaWJzdGF0LnBjaCINCi0JCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIkKEludERpcilcIg0KLQkJCQlPYmplY3RGaWxlPSIkKEludERpcilcIg0KLQkJCQlQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT0iJChPdXREaXIpXCINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCUN1bHR1cmU9IjEwMzYiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpYODYgL05PREVGQVVMVExJQiINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cbWFzbXg4Nlxndm1hdDMyLm9iaiAuLlwuLlxtYXNteDg2XGluZmZhczMyLm9iaiAiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVx6bGlic3RhdC5saWIiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VXaXRob3V0QXNtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0ieDg2XFpsaWJTdGF0JChDb25maWd1cmF0aW9uTmFtZSkiDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJ4ODZcWmxpYlN0YXQkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IlVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi47Li5cLi5cbWFzbXg4NiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO1pMSUJfV0lOQVBJO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19XQVJOSU5HUyINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iJChJbnREaXIpL3psaWJzdGF0LnBjaCINCi0JCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIkKEludERpcilcIg0KLQkJCQlPYmplY3RGaWxlPSIkKEludERpcilcIg0KLQkJCQlQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT0iJChPdXREaXIpXCINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCUN1bHR1cmU9IjEwMzYiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpYODYgL05PREVGQVVMVExJQiINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHpsaWJzdGF0LmxpYiINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQogCQkJTmFtZT0iRGVidWd8eDY0Ig0KIAkJCU91dHB1dERpcmVjdG9yeT0ieDY0XFpsaWJTdGF0JChDb25maWd1cmF0aW9uTmFtZSkiDQogCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJ4NjRcWmxpYlN0YXQkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQpAQCAtMzg5LDYgKzI0Miw4MCBAQAogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJCTxDb25maWd1cmF0aW9uDQorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ing4NlxabGliU3RhdCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0ieDg2XFpsaWJTdGF0JChDb25maWd1cmF0aW9uTmFtZSlcVG1wIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSJVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uOy4uXC4uXG1hc214ODYiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtaTElCX1dJTkFQSTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fV0FSTklOR1M7QVNNVjtBU01JTkYiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMCINCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iZmFsc2UiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiQoSW50RGlyKS96bGlic3RhdC5wY2giDQorCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iJChJbnREaXIpXCINCisJCQkJT2JqZWN0RmlsZT0iJChJbnREaXIpXCINCisJCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9IiQoT3V0RGlyKVwiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCQlDdWx0dXJlPSIxMDM2Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6WDg2IC9OT0RFRkFVTFRMSUIiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXG1hc214ODZcbWF0Y2g2ODYub2JqIC4uXC4uXG1hc214ODZcaW5mZmFzMzIub2JqICINCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHpsaWJzdGF0LmxpYiINCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQogCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQogCQkJT3V0cHV0RGlyZWN0b3J5PSJ4NjRcWmxpYlN0YXQkKENvbmZpZ3VyYXRpb25OYW1lKSINCiAJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ing2NFxabGliU3RhdCQoQ29uZmlndXJhdGlvbk5hbWUpXFRtcCINCkBAIC01MzgsNiArNDY1LDc5IEBACiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlV2l0aG91dEFzbXxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ing4NlxabGliU3RhdCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0ieDg2XFpsaWJTdGF0JChDb25maWd1cmF0aW9uTmFtZSlcVG1wIg0KKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSJVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCisJCQlVc2VPZk1GQz0iMCINCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uOy4uXC4uXG1hc214ODYiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtaTElCX1dJTkFQSTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiDQorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQorCQkJCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMCINCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iZmFsc2UiDQorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiQoSW50RGlyKS96bGlic3RhdC5wY2giDQorCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iJChJbnREaXIpXCINCisJCQkJT2JqZWN0RmlsZT0iJChJbnREaXIpXCINCisJCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9IiQoT3V0RGlyKVwiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCQlDdWx0dXJlPSIxMDM2Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6WDg2IC9OT0RFRkFVTFRMSUIiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVx6bGlic3RhdC5saWIiDQorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KIAkJCU5hbWU9IlJlbGVhc2VXaXRob3V0QXNtfHg2NCINCiAJCQlPdXRwdXREaXJlY3Rvcnk9Ing2NFxabGliU3RhdCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KIAkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0ieDY0XFpsaWJTdGF0JChDb25maWd1cmF0aW9uTmFtZSlcVG1wIg0KQEAgLTcwOSw2MyArNzA5LDExIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXG1hc214ODZcZ3ZtYXQzMmMuYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xJdGFuaXVtIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8SXRhbml1bSINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlV2l0aG91dEFzbXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZVdpdGhvdXRBc218SXRhbml1bSINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxnemNsb3NlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxnemlvLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZ3pndXRzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCkBAIC03OTYsMjIgKzc0NCw2IEBACiAJCQkJCS8+DQogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlV2l0aG91dEFzbXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQlOYW1lPSJEZWJ1Z3xJdGFuaXVtIg0KIAkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQogCQkJCQk+DQpAQCAtODIwLDYgKzc1MiwxNCBAQAogCQkJCQkvPg0KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFtZT0iUmVsZWFzZXxJdGFuaXVtIg0KIAkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQogCQkJCQk+DQpAQCAtODI4LDYgKzc2OCwxNCBAQAogCQkJCQkvPg0KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VXaXRob3V0QXNtfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IlJlbGVhc2VXaXRob3V0QXNtfEl0YW5pdW0iDQogCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCiAJCQkJCT4NCmRpZmYgLS1naXQgYS9jb250cmliL3ZzdHVkaW8vdmM5L3psaWJ2Yy5kZWYgYi9jb250cmliL3ZzdHVkaW8vdmM5L3psaWJ2Yy5kZWYKaW5kZXggMGI2YTllOS4uYjNiN2NhYiAxMDA2NDQKLS0tIGEvY29udHJpYi92c3R1ZGlvL3ZjOS96bGlidmMuZGVmCisrKyBiL2NvbnRyaWIvdnN0dWRpby92YzkvemxpYnZjLmRlZgpAQCAtMSw3ICsxLDcgQEAKK0xJQlJBUlkNCis7IHpsaWIgZGF0YSBjb21wcmVzc2lvbiBhbmQgWklQIGZpbGUgSS9PIGxpYnJhcnkNCiANCi1WRVJTSU9OCQkxLjIzDQotDQotSEVBUFNJWkUJMTA0ODU3Niw4MTkyDQorVkVSU0lPTgkJMS4yNA0KIA0KIEVYUE9SVFMNCiAgICAgICAgIGFkbGVyMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDENCkBAIC05MCwyNSArOTAsNDcgQEAKICAgICAgICAgdW56R29Ub0ZpbGVQb3MgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTAxDQogDQogICAgICAgICBmaWxsX3dpbjMyX2ZpbGVmdW5jICAgICAgICAgICAgICAgICAgICAgIEAxMTANCi0gICAgICAgIGZpbGxfd2luMzJfZmlsZWZ1bmM2NCAgICAgICAgICAgICAgICAgICAgQDExMQ0KLSAgICAgICAgZmlsbF93aW4zMl9maWxlZnVuYzY0QSAgICAgICAgICAgICAgICAgICBAMTEyDQotICAgICAgICBmaWxsX3dpbjMyX2ZpbGVmdW5jNjRXICAgICAgICAgICAgICAgICAgIEAxMTMNCiANCi07IHF1aWNrIGhhY2sgYnkgaGt1bm9AbWljcm9ob3VzZS5jby5qcA0KLSAgICAgICAgdW56T3BlbjY0ICAgICAgICAgICAgICAgICAgICAgICAgIEAxMjANCi0gICAgICAgIHVuek9wZW4yXzY0ICAgICAgICAgICAgICAgICAgICAgICBAMTIxDQotICAgICAgICB1bnpHZXRHbG9iYWxJbmZvNjQgICAgICAgICAgICAgICAgQDEyMg0KLSAgICAgICAgdW56R2V0Q3VycmVudEZpbGVJbmZvNjQgICAgICAgICAgIEAxMjQNCi0gICAgICAgIHVuekdldEN1cnJlbnRGaWxlWlN0cmVhbVBvczY0ICAgICBAMTI1DQotICAgICAgICB1bnp0ZWxsNjQgICAgICAgICAgICAgICAgICAgICAgICAgQDEyNg0KLSAgICAgICAgdW56R2V0RmlsZVBvczY0ICAgICAgICAgICAgICAgICAgIEAxMjcNCi0gICAgICAgIHVuekdvVG9GaWxlUG9zNjQgICAgICAgICAgICAgICAgICBAMTI4DQorOyB6bGlid2FwaSB2MS4yLjQgYWRkZWQ6DQorICAgICAgICBmaWxsX3dpbjMyX2ZpbGVmdW5jNjQgICAgICAgICAgICAgICAgICAgQDExMQ0KKyAgICAgICAgZmlsbF93aW4zMl9maWxlZnVuYzY0QSAgICAgICAgICAgICAgICAgIEAxMTINCisgICAgICAgIGZpbGxfd2luMzJfZmlsZWZ1bmM2NFcgICAgICAgICAgICAgICAgICBAMTEzDQogDQotICAgICAgICB6aXBPcGVuNjQgICAgICAgICAgICAgICAgICAgICAgICAgQDEzMA0KLSAgICAgICAgemlwT3BlbjJfNjQgICAgICAgICAgICAgICAgICAgICAgIEAxMzENCi0gICAgICAgIHppcE9wZW5OZXdGaWxlSW5aaXA2NCAgICAgICAgICAgICBAMTMyDQotICAgICAgICB6aXBPcGVuTmV3RmlsZUluWmlwMl82NCAgICAgICAgICAgQDEzMw0KLSAgICAgICAgemlwT3Blbk5ld0ZpbGVJblppcDNfNjQgICAgICAgICAgIEAxMzQNCi0gICAgICAgIHppcE9wZW5OZXdGaWxlSW5aaXA0XzY0ICAgICAgICAgICBAMTM1DQotICAgICAgICB6aXBDbG9zZUZpbGVJblppcFJhdzY0ICAgICAgICAgICAgQDEzNg0KLTsgZW5kIGhhY2sNCisgICAgICAgIHVuek9wZW42NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTIwDQorICAgICAgICB1bnpPcGVuMl82NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEyMQ0KKyAgICAgICAgdW56R2V0R2xvYmFsSW5mbzY0ICAgICAgICAgICAgICAgICAgICAgIEAxMjINCisgICAgICAgIHVuekdldEN1cnJlbnRGaWxlSW5mbzY0ICAgICAgICAgICAgICAgICBAMTI0DQorICAgICAgICB1bnpHZXRDdXJyZW50RmlsZVpTdHJlYW1Qb3M2NCAgICAgICAgICAgQDEyNQ0KKyAgICAgICAgdW56dGVsbDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxMjYNCisgICAgICAgIHVuekdldEZpbGVQb3M2NCAgICAgICAgICAgICAgICAgICAgICAgICBAMTI3DQorICAgICAgICB1bnpHb1RvRmlsZVBvczY0ICAgICAgICAgICAgICAgICAgICAgICAgQDEyOA0KKw0KKyAgICAgICAgemlwT3BlbjY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxMzANCisgICAgICAgIHppcE9wZW4yXzY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTMxDQorICAgICAgICB6aXBPcGVuTmV3RmlsZUluWmlwNjQgICAgICAgICAgICAgICAgICAgQDEzMg0KKyAgICAgICAgemlwT3Blbk5ld0ZpbGVJblppcDJfNjQgICAgICAgICAgICAgICAgIEAxMzMNCisgICAgICAgIHppcE9wZW5OZXdGaWxlSW5aaXAzXzY0ICAgICAgICAgICAgICAgICBAMTM0DQorICAgICAgICB6aXBPcGVuTmV3RmlsZUluWmlwNF82NCAgICAgICAgICAgICAgICAgQDEzNQ0KKyAgICAgICAgemlwQ2xvc2VGaWxlSW5aaXBSYXc2NCAgICAgICAgICAgICAgICAgIEAxMzYNCisNCis7IHpsaWIxIHYxLjIuNCBhZGRlZDoNCisgICAgICAgIGFkbGVyMzJfY29tYmluZSAgICAgICAgICAgICAgICAgICAgICAgICBAMTQwDQorICAgICAgICBhZGxlcjMyX2NvbWJpbmU2NCAgICAgICAgICAgICAgICAgICAgICAgQDE0MQ0KKyAgICAgICAgY3JjMzJfY29tYmluZSAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNDINCisgICAgICAgIGNyYzMyX2NvbWJpbmU2NCAgICAgICAgICAgICAgICAgICAgICAgICBAMTQzDQorICAgICAgICBkZWZsYXRlU2V0SGVhZGVyICAgICAgICAgICAgICAgICAgICAgICAgQDE0NA0KKyAgICAgICAgZGVmbGF0ZVR1bmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNDUNCisgICAgICAgIGd6YnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTQ2DQorICAgICAgICBnemNsb3NlX3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE0Nw0KKyAgICAgICAgZ3pjbG9zZV93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNDgNCisgICAgICAgIGd6ZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTQ5DQorICAgICAgICBnem9mZnNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE1MA0KKyAgICAgICAgZ3pvZmZzZXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNTENCisgICAgICAgIGd6b3BlbjY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTUyDQorICAgICAgICBnenNlZWs2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE1Mw0KKyAgICAgICAgZ3p0ZWxsNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNTQNCisgICAgICAgIGluZmxhdGVHZXRIZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICBAMTU2DQorICAgICAgICBpbmZsYXRlTWFyayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE1Nw0KKyAgICAgICAgaW5mbGF0ZVByaW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxNTgNCisgICAgICAgIGluZmxhdGVSZXNldDIgICAgICAgICAgICAgICAgICAgICAgICAgICBAMTU5DQorICAgICAgICBpbmZsYXRlVW5kZXJtaW5lICAgICAgICAgICAgICAgICAgICAgICAgQDE2MA0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvdnN0dWRpby92YzkvemxpYnZjLnNsbiBiL2NvbnRyaWIvdnN0dWRpby92YzkvemxpYnZjLnNsbgppbmRleCBjN2YxYjBiLi5iNDgyOTY3IDEwMDY0NAotLS0gYS9jb250cmliL3ZzdHVkaW8vdmM5L3psaWJ2Yy5zbG4KKysrIGIvY29udHJpYi92c3R1ZGlvL3ZjOS96bGlidmMuc2xuCkBAIC00NSw4ICs0NSw4IEBACiAJCXs4RkQ4MjZGOC0zNzM5LTQ0RTYtOENDOC05OTcxMjJFNTNCOER9LlJlbGVhc2V8SXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZXxJdGFuaXVtDQogCQl7OEZEODI2RjgtMzczOS00NEU2LThDQzgtOTk3MTIyRTUzQjhEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJCXs4RkQ4MjZGOC0zNzM5LTQ0RTYtOENDOC05OTcxMjJFNTNCOER9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs4RkQ4MjZGOC0zNzM5LTQ0RTYtOENDOC05OTcxMjJFNTNCOER9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2VXaXRob3V0QXNtfHg2NA0KLQkJezhGRDgyNkY4LTM3MzktNDRFNi04Q0M4LTk5NzEyMkU1M0I4RH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2VXaXRob3V0QXNtfHg2NA0KKwkJezhGRDgyNkY4LTM3MzktNDRFNi04Q0M4LTk5NzEyMkU1M0I4RH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs4RkQ4MjZGOC0zNzM5LTQ0RTYtOENDOC05OTcxMjJFNTNCOER9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJezhGRDgyNkY4LTM3MzktNDRFNi04Q0M4LTk5NzEyMkU1M0I4RH0uUmVsZWFzZVdpdGhvdXRBc218SXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtDQogCQl7OEZEODI2RjgtMzczOS00NEU2LThDQzgtOTk3MTIyRTUzQjhEfS5SZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtDQogCQl7OEZEODI2RjgtMzczOS00NEU2LThDQzgtOTk3MTIyRTUzQjhEfS5SZWxlYXNlV2l0aG91dEFzbXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlV2l0aG91dEFzbXxXaW4zMg0KQEAgLTEwMyw4ICsxMDMsOCBAQAogCQl7QzUyRjlFN0ItNDk4QS00MkJFLThEQjQtODVBMTU2OTQzNjZBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM2NkF9LlJlbGVhc2VXaXRob3V0QXNtfEl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZXxJdGFuaXVtDQogCQl7QzUyRjlFN0ItNDk4QS00MkJFLThEQjQtODVBMTU2OTQzNjZBfS5SZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlfEl0YW5pdW0NCi0JCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM2NkF9LlJlbGVhc2VXaXRob3V0QXNtfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8SXRhbml1bQ0KLQkJe0M1MkY5RTdCLTQ5OEEtNDJCRS04REI0LTg1QTE1Njk0MzY2QX0uUmVsZWFzZVdpdGhvdXRBc218eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8SXRhbml1bQ0KKwkJe0M1MkY5RTdCLTQ5OEEtNDJCRS04REI0LTg1QTE1Njk0MzY2QX0uUmVsZWFzZVdpdGhvdXRBc218V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M1MkY5RTdCLTQ5OEEtNDJCRS04REI0LTg1QTE1Njk0MzY2QX0uUmVsZWFzZVdpdGhvdXRBc218eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7NDhDREQ5REMtRTA5Ri00MTM1LTlDMEMtNEZFNTBDM0M2NTRCfS5EZWJ1Z3xJdGFuaXVtLkFjdGl2ZUNmZyA9IERlYnVnfEl0YW5pdW0NCiAJCXs0OENERDlEQy1FMDlGLTQxMzUtOUMwQy00RkU1MEMzQzY1NEJ9LkRlYnVnfEl0YW5pdW0uQnVpbGQuMCA9IERlYnVnfEl0YW5pdW0NCiAJCXs0OENERDlEQy1FMDlGLTQxMzUtOUMwQy00RkU1MEMzQzY1NEJ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQpAQCAtMTE5LDggKzExOSw4IEBACiAJCXs0OENERDlEQy1FMDlGLTQxMzUtOUMwQy00RkU1MEMzQzY1NEJ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJezQ4Q0REOURDLUUwOUYtNDEzNS05QzBDLTRGRTUwQzNDNjU0Qn0uUmVsZWFzZVdpdGhvdXRBc218SXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlfEl0YW5pdW0NCiAJCXs0OENERDlEQy1FMDlGLTQxMzUtOUMwQy00RkU1MEMzQzY1NEJ9LlJlbGVhc2VXaXRob3V0QXNtfEl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2V8SXRhbml1bQ0KLQkJezQ4Q0REOURDLUUwOUYtNDEzNS05QzBDLTRGRTUwQzNDNjU0Qn0uUmVsZWFzZVdpdGhvdXRBc218V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxJdGFuaXVtDQotCQl7NDhDREQ5REMtRTA5Ri00MTM1LTlDMEMtNEZFNTBDM0M2NTRCfS5SZWxlYXNlV2l0aG91dEFzbXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxJdGFuaXVtDQorCQl7NDhDREQ5REMtRTA5Ri00MTM1LTlDMEMtNEZFNTBDM0M2NTRCfS5SZWxlYXNlV2l0aG91dEFzbXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NDhDREQ5REMtRTA5Ri00MTM1LTlDMEMtNEZFNTBDM0M2NTRCfS5SZWxlYXNlV2l0aG91dEFzbXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM4MkF9LkRlYnVnfEl0YW5pdW0uQWN0aXZlQ2ZnID0gRGVidWd8SXRhbml1bQ0KIAkJe0M1MkY5RTdCLTQ5OEEtNDJCRS04REI0LTg1QTE1Njk0MzgyQX0uRGVidWd8SXRhbml1bS5CdWlsZC4wID0gRGVidWd8SXRhbml1bQ0KIAkJe0M1MkY5RTdCLTQ5OEEtNDJCRS04REI0LTg1QTE1Njk0MzgyQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCkBAIC0xMzUsOCArMTM1LDggQEAKIAkJe0M1MkY5RTdCLTQ5OEEtNDJCRS04REI0LTg1QTE1Njk0MzgyQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7QzUyRjlFN0ItNDk4QS00MkJFLThEQjQtODVBMTU2OTQzODJBfS5SZWxlYXNlV2l0aG91dEFzbXxJdGFuaXVtLkFjdGl2ZUNmZyA9IFJlbGVhc2V8SXRhbml1bQ0KIAkJe0M1MkY5RTdCLTQ5OEEtNDJCRS04REI0LTg1QTE1Njk0MzgyQX0uUmVsZWFzZVdpdGhvdXRBc218SXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZXxJdGFuaXVtDQotCQl7QzUyRjlFN0ItNDk4QS00MkJFLThEQjQtODVBMTU2OTQzODJBfS5SZWxlYXNlV2l0aG91dEFzbXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfEl0YW5pdW0NCi0JCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM4MkF9LlJlbGVhc2VXaXRob3V0QXNtfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfEl0YW5pdW0NCisJCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM4MkF9LlJlbGVhc2VXaXRob3V0QXNtfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNTJGOUU3Qi00OThBLTQyQkUtOERCNC04NUExNTY5NDM4MkF9LlJlbGVhc2VXaXRob3V0QXNtfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAlFbmRHbG9iYWxTZWN0aW9uDQogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQogCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCmRpZmYgLS1naXQgYS9jb250cmliL3ZzdHVkaW8vdmM5L3psaWJ2Yy52Y3Byb2ogYi9jb250cmliL3ZzdHVkaW8vdmM5L3psaWJ2Yy52Y3Byb2oKaW5kZXggZWU4Njc4Ni4uYzlhODk0NyAxMDA2NDQKLS0tIGEvY29udHJpYi92c3R1ZGlvL3ZjOS96bGlidmMudmNwcm9qCisrKyBiL2NvbnRyaWIvdnN0dWRpby92YzkvemxpYnZjLnZjcHJvagpAQCAtMSw5ICsxLDEwIEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCisJVmVyc2lvbj0iOSwwMCINCiAJTmFtZT0iemxpYnZjIg0KIAlQcm9qZWN0R1VJRD0iezhGRDgyNkY4LTM3MzktNDRFNi04Q0M4LTk5NzEyMkU1M0I4RH0iDQorCVJvb3ROYW1lc3BhY2U9InpsaWJ2YyINCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KIAk+DQogCTxQbGF0Zm9ybXM+DQpAQCAtODAsNyArODEsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cbWFzbXg4Nlxndm1hdDMyLm9iaiAuLlwuLlxtYXNteDg2XGluZmZhczMyLm9iaiINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cbWFzbXg4NlxtYXRjaDY4Ni5vYmogLi5cLi5cbWFzbXg4NlxpbmZmYXMzMi5vYmoiDQogCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVx6bGlid2FwaS5kbGwiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KQEAgLTExOCw2ICsxMTksMTk1IEBACiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJEZWJ1Z3x4NjQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSJ4NjRcWmxpYkRsbCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0ieDY0XFpsaWJEbGwkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IlVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQk+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQorCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSINCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCisJCQkJVHlwZUxpYnJhcnlOYW1lPSIkKE91dERpcikvemxpYnZjLnRsYiINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi47Li5cLi5cbWFzbXg4NiINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19XQVJOSU5HUztaTElCX1dJTkFQSTtBU01WO0FTTUlORjtXSU42NCINCisJCQkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSINCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIkKEludERpcikvemxpYnZjLnBjaCINCisJCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIkKEludERpcilcIg0KKwkJCQlPYmplY3RGaWxlPSIkKEludERpcilcIg0KKwkJCQlQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT0iJChPdXREaXIpXCINCisJCQkJQnJvd3NlSW5mb3JtYXRpb249IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KKwkJCQlDdWx0dXJlPSIxMDM2Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlxtYXNteDY0XGd2bWF0NjQub2JqIC4uXC4uXG1hc214NjRcaW5mZmFzeDY0Lm9iaiAiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVx6bGlid2FwaS5kbGwiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KKwkJCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSINCisJCQkJTW9kdWxlRGVmaW5pdGlvbkZpbGU9Ii5cemxpYnZjLmRlZiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvemxpYndhcGkucGRiIg0KKwkJCQlHZW5lcmF0ZU1hcEZpbGU9InRydWUiDQorCQkJCU1hcEZpbGVOYW1lPSIkKE91dERpcikvemxpYndhcGkubWFwIg0KKwkJCQlTdWJTeXN0ZW09IjIiDQorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS96bGlid2FwaS5saWIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfEl0YW5pdW0iDQorCQkJT3V0cHV0RGlyZWN0b3J5PSJpYTY0XFpsaWJEbGwkKENvbmZpZ3VyYXRpb25OYW1lKSINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImlhNjRcWmxpYkRsbCQoQ29uZmlndXJhdGlvbk5hbWUpXFRtcCINCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iVXBncmFkZUZyb21WQzcwLnZzcHJvcHMiDQorCQkJVXNlT2ZNRkM9IjAiDQorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCisJCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQorCQkJCVRhcmdldEVudmlyb25tZW50PSIyIg0KKwkJCQlUeXBlTGlicmFyeU5hbWU9IiQoT3V0RGlyKS96bGlidmMudGxiIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJT3B0aW1pemF0aW9uPSIwIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLjsuLlwuLlxtYXNteDg2Ig0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX1dBUk5JTkdTO1pMSUJfV0lOQVBJO1dJTjY0Ig0KKwkJCQlFeGNlcHRpb25IYW5kbGluZz0iMCINCisJCQkJUnVudGltZUxpYnJhcnk9IjMiDQorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9ImZhbHNlIg0KKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9IiQoSW50RGlyKS96bGlidmMucGNoIg0KKwkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249IiQoSW50RGlyKVwiDQorCQkJCU9iamVjdEZpbGU9IiQoSW50RGlyKVwiDQorCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIkKE91dERpcilcIg0KKwkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMCINCisJCQkJV2FybmluZ0xldmVsPSIzIg0KKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQorCQkJCUN1bHR1cmU9IjEwMzYiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVx6bGlid2FwaS5kbGwiDQorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KKwkJCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSINCisJCQkJTW9kdWxlRGVmaW5pdGlvbkZpbGU9Ii5cemxpYnZjLmRlZiINCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvemxpYndhcGkucGRiIg0KKwkJCQlHZW5lcmF0ZU1hcEZpbGU9InRydWUiDQorCQkJCU1hcEZpbGVOYW1lPSIkKE91dERpcikvemxpYndhcGkubWFwIg0KKwkJCQlTdWJTeXN0ZW09IjIiDQorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS96bGlid2FwaS5saWIiDQorCQkJCVRhcmdldE1hY2hpbmU9IjUiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQogCQkJTmFtZT0iUmVsZWFzZVdpdGhvdXRBc218V2luMzIiDQogCQkJT3V0cHV0RGlyZWN0b3J5PSJ4ODZcWmxpYkRsbCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KIAkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0ieDg2XFpsaWJEbGwkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQpAQCAtMjE4LDMwMiArNDA4LDYgQEAKIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQogCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSJ4ODZcWmxpYkRsbCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0ieDg2XFpsaWJEbGwkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IlVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iJChPdXREaXIpL3psaWJ2Yy50bGIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi47Li5cLi5cbWFzbXg4NiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19XQVJOSU5HUztaTElCX1dJTkFQSTtBU01WO0FTTUlORiINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iJChJbnREaXIpL3psaWJ2Yy5wY2giDQotCQkJCUFzc2VtYmxlck91dHB1dD0iMiINCi0JCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIkKEludERpcilcIg0KLQkJCQlPYmplY3RGaWxlPSIkKEludERpcilcIg0KLQkJCQlQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT0iJChPdXREaXIpXCINCi0JCQkJQnJvd3NlSW5mb3JtYXRpb249IjAiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDM2Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cbWFzbXg4Nlxndm1hdDMyLm9iaiAuLlwuLlxtYXNteDg2XGluZmZhczMyLm9iaiAiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVx6bGlid2FwaS5kbGwiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSINCi0JCQkJSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz0iZmFsc2UiDQotCQkJCU1vZHVsZURlZmluaXRpb25GaWxlPSIuXHpsaWJ2Yy5kZWYiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS96bGlid2FwaS5wZGIiDQotCQkJCUdlbmVyYXRlTWFwRmlsZT0idHJ1ZSINCi0JCQkJTWFwRmlsZU5hbWU9IiQoT3V0RGlyKS96bGlid2FwaS5tYXAiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJT3B0aW1pemVGb3JXaW5kb3dzOTg9IjEiDQotCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCi0JCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS96bGlid2FwaS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCU91dHB1dERpcmVjdG9yeT0ieDY0XFpsaWJEbGwkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ing2NFxabGliRGxsJChDb25maWd1cmF0aW9uTmFtZSlcVG1wIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSJVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iJChPdXREaXIpL3psaWJ2Yy50bGIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uOy4uXC4uXG1hc214ODYiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fV0FSTklOR1M7WkxJQl9XSU5BUEk7QVNNVjtBU01JTkY7V0lONjQiDQotCQkJCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iZmFsc2UiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iJChJbnREaXIpL3psaWJ2Yy5wY2giDQotCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iJChJbnREaXIpXCINCi0JCQkJT2JqZWN0RmlsZT0iJChJbnREaXIpXCINCi0JCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9IiQoT3V0RGlyKVwiDQotCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIwIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzNiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cbWFzbXg2NFxndm1hdDY0Lm9iaiAuLlwuLlxtYXNteDY0XGluZmZhc3g2NC5vYmogIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcemxpYndhcGkuZGxsIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJR2VuZXJhdGVNYW5pZmVzdD0iZmFsc2UiDQotCQkJCU1vZHVsZURlZmluaXRpb25GaWxlPSIuXHpsaWJ2Yy5kZWYiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL3psaWJ3YXBpLnBkYiINCi0JCQkJR2VuZXJhdGVNYXBGaWxlPSJ0cnVlIg0KLQkJCQlNYXBGaWxlTmFtZT0iJChPdXREaXIpL3psaWJ3YXBpLm1hcCINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikvemxpYndhcGkubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8SXRhbml1bSINCi0JCQlPdXRwdXREaXJlY3Rvcnk9ImlhNjRcWmxpYkRsbCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iaWE2NFxabGliRGxsJChDb25maWd1cmF0aW9uTmFtZSlcVG1wIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSJVcGdyYWRlRnJvbVZDNzAudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjIiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iJChPdXREaXIpL3psaWJ2Yy50bGIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uOy4uXC4uXG1hc214ODYiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fV0FSTklOR1M7WkxJQl9XSU5BUEk7V0lONjQiDQotCQkJCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iZmFsc2UiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iJChJbnREaXIpL3psaWJ2Yy5wY2giDQotCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iJChJbnREaXIpXCINCi0JCQkJT2JqZWN0RmlsZT0iJChJbnREaXIpXCINCi0JCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9IiQoT3V0RGlyKVwiDQotCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIwIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzNiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHpsaWJ3YXBpLmRsbCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCUdlbmVyYXRlTWFuaWZlc3Q9ImZhbHNlIg0KLQkJCQlNb2R1bGVEZWZpbml0aW9uRmlsZT0iLlx6bGlidmMuZGVmIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS96bGlid2FwaS5wZGIiDQotCQkJCUdlbmVyYXRlTWFwRmlsZT0idHJ1ZSINCi0JCQkJTWFwRmlsZU5hbWU9IiQoT3V0RGlyKS96bGlid2FwaS5tYXAiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpL3psaWJ3YXBpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iNSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQogCQkJTmFtZT0iUmVsZWFzZVdpdGhvdXRBc218eDY0Ig0KIAkJCU91dHB1dERpcmVjdG9yeT0ieDY0XFpsaWJEbGwkKENvbmZpZ3VyYXRpb25OYW1lKSINCiAJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ing2NFxabGliRGxsJChDb25maWd1cmF0aW9uTmFtZSlcVG1wIg0KQEAgLTYwOCw5ICs1MDIsNiBAQAogCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KIAkJCS8+DQogCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQogCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQpAQCAtNzA5LDcgKzYwMCwxMDUgQEAKIAkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCiAJCQkvPg0KIAkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQk8L0NvbmZpZ3VyYXRpb24+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSJ4ODZcWmxpYkRsbCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0ieDg2XFpsaWJEbGwkKENvbmZpZ3VyYXRpb25OYW1lKVxUbXAiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IlVwZ3JhZGVGcm9tVkM3MC52c3Byb3BzIg0KKwkJCVVzZU9mTUZDPSIwIg0KKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KKwkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQorCQkJCVR5cGVMaWJyYXJ5TmFtZT0iJChPdXREaXIpL3psaWJ2Yy50bGIiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi47Li5cLi5cbWFzbXg4NiINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19XQVJOSU5HUztaTElCX1dJTkFQSTtBU01WO0FTTUlORiINCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCisJCQkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSINCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iJChJbnREaXIpL3psaWJ2Yy5wY2giDQorCQkJCUFzc2VtYmxlck91dHB1dD0iMiINCisJCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIkKEludERpcilcIg0KKwkJCQlPYmplY3RGaWxlPSIkKEludERpcilcIg0KKwkJCQlQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT0iJChPdXREaXIpXCINCisJCQkJQnJvd3NlSW5mb3JtYXRpb249IjAiDQorCQkJCVdhcm5pbmdMZXZlbD0iMyINCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KKwkJCQlDdWx0dXJlPSIxMDM2Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cbWFzbXg4NlxtYXRjaDY4Ni5vYmogLi5cLi5cbWFzbXg4NlxpbmZmYXMzMi5vYmogIg0KKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcemxpYndhcGkuZGxsIg0KKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCisJCQkJR2VuZXJhdGVNYW5pZmVzdD0iZmFsc2UiDQorCQkJCUlnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM9ImZhbHNlIg0KKwkJCQlNb2R1bGVEZWZpbml0aW9uRmlsZT0iLlx6bGlidmMuZGVmIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvemxpYndhcGkucGRiIg0KKwkJCQlHZW5lcmF0ZU1hcEZpbGU9InRydWUiDQorCQkJCU1hcEZpbGVOYW1lPSIkKE91dERpcikvemxpYndhcGkubWFwIg0KKwkJCQlTdWJTeXN0ZW09IjIiDQorCQkJCU9wdGltaXplRm9yV2luZG93czk4PSIxIg0KKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikvemxpYndhcGkubGliIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KQEAgLTgxMSw5ICs4MDAsNiBAQAogCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KIAkJCS8+DQogCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQogCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQpAQCAtOTEyLDkgKzg5OCw2IEBACiAJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQogCQkJLz4NCiAJCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCkBAIC05NDMsNzEgKzkyNiwxMSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxtYXNteDg2XGd2bWF0MzJjLmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlV2l0aG91dEFzbXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8SXRhbml1bSINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlV2l0aG91dEFzbXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZVdpdGhvdXRBc218SXRhbml1bSINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfEl0YW5pdW0iDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZ3pjbG9zZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZ3ppby5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGd6Z3V0cy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQpAQCAtMTAzOCwyMiArOTYxLDYgQEAKIAkJCQkJLz4NCiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlV2l0aG91dEFzbXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IkRlYnVnfEl0YW5pdW0iDQogCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCiAJCQkJCT4NCkBAIC0xMDYyLDYgKzk2OSwxNCBAQAogCQkJCQkvPg0KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VXaXRob3V0QXNtfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IlJlbGVhc2VXaXRob3V0QXNtfEl0YW5pdW0iDQogCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCiAJCQkJCT4NCkBAIC0xMDcwLDYgKzk4NSwxNCBAQAogCQkJCQkvPg0KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFtZT0iUmVsZWFzZXxJdGFuaXVtIg0KIAkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQogCQkJCQk+DQpkaWZmIC0tZ2l0IGEvZGVmbGF0ZS5jIGIvZGVmbGF0ZS5jCmluZGV4IDQxNGE2N2EuLmZjZDY5OGMgMTAwNjQ0Ci0tLSBhL2RlZmxhdGUuYworKysgYi9kZWZsYXRlLmMKQEAgLTUyLDcgKzUyLDcgQEAKICNpbmNsdWRlICJkZWZsYXRlLmgiCiAKIGNvbnN0IGNoYXIgZGVmbGF0ZV9jb3B5cmlnaHRbXSA9Ci0gICAiIGRlZmxhdGUgMS4yLjMuOSBDb3B5cmlnaHQgMTk5NS0yMDEwIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIgIjsKKyAgICIgZGVmbGF0ZSAxLjIuNCBDb3B5cmlnaHQgMTk5NS0yMDEwIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIgIjsKIC8qCiAgIElmIHlvdSB1c2UgdGhlIHpsaWIgbGlicmFyeSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGlzIHdlbGNvbWUKICAgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgeW91ciBwcm9kdWN0LiBJZiBmb3Igc29tZSByZWFzb24geW91IGNhbm5vdApAQCAtMTQzMywyMSArMTQzMywyMSBAQAogICogRmx1c2ggdGhlIGN1cnJlbnQgYmxvY2ssIHdpdGggZ2l2ZW4gZW5kLW9mLWZpbGUgZmxhZy4KICAqIElOIGFzc2VydGlvbjogc3Ryc3RhcnQgaXMgc2V0IHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbWF0Y2guCiAgKi8KLSNkZWZpbmUgRkxVU0hfQkxPQ0tfT05MWShzLCBlb2YpIHsgXAorI2RlZmluZSBGTFVTSF9CTE9DS19PTkxZKHMsIGxhc3QpIHsgXAogICAgX3RyX2ZsdXNoX2Jsb2NrKHMsIChzLT5ibG9ja19zdGFydCA+PSAwTCA/IFwKICAgICAgICAgICAgICAgICAgICAoY2hhcmYgKikmcy0+d2luZG93Wyh1bnNpZ25lZClzLT5ibG9ja19zdGFydF0gOiBcCiAgICAgICAgICAgICAgICAgICAgKGNoYXJmICopWl9OVUxMKSwgXAogICAgICAgICAgICAgICAgICh1bGcpKChsb25nKXMtPnN0cnN0YXJ0IC0gcy0+YmxvY2tfc3RhcnQpLCBcCi0gICAgICAgICAgICAgICAgKGVvZikpOyBcCisgICAgICAgICAgICAgICAgKGxhc3QpKTsgXAogICAgcy0+YmxvY2tfc3RhcnQgPSBzLT5zdHJzdGFydDsgXAogICAgZmx1c2hfcGVuZGluZyhzLT5zdHJtKTsgXAogICAgVHJhY2V2KChzdGRlcnIsIltGTFVTSF0iKSk7IFwKIH0KIAogLyogU2FtZSBidXQgZm9yY2UgcHJlbWF0dXJlIGV4aXQgaWYgbmVjZXNzYXJ5LiAqLwotI2RlZmluZSBGTFVTSF9CTE9DSyhzLCBlb2YpIHsgXAotICAgRkxVU0hfQkxPQ0tfT05MWShzLCBlb2YpOyBcCi0gICBpZiAocy0+c3RybS0+YXZhaWxfb3V0ID09IDApIHJldHVybiAoZW9mKSA/IGZpbmlzaF9zdGFydGVkIDogbmVlZF9tb3JlOyBcCisjZGVmaW5lIEZMVVNIX0JMT0NLKHMsIGxhc3QpIHsgXAorICAgRkxVU0hfQkxPQ0tfT05MWShzLCBsYXN0KTsgXAorICAgaWYgKHMtPnN0cm0tPmF2YWlsX291dCA9PSAwKSByZXR1cm4gKGxhc3QpID8gZmluaXNoX3N0YXJ0ZWQgOiBuZWVkX21vcmU7IFwKIH0KIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9kZWZsYXRlLmggYi9kZWZsYXRlLmgKaW5kZXggZjFkZjA0Yy4uZjUzZGViYSAxMDA2NDQKLS0tIGEvZGVmbGF0ZS5oCisrKyBiL2RlZmxhdGUuaApAQCAtMjkzLDEwICsyOTMsMTAgQEAKIHZvaWQgX3RyX2luaXQgICAgICAgICBPRigoZGVmbGF0ZV9zdGF0ZSAqcykpOwogaW50ICBfdHJfdGFsbHkgICAgICAgIE9GKChkZWZsYXRlX3N0YXRlICpzLCB1bnNpZ25lZCBkaXN0LCB1bnNpZ25lZCBsYykpOwogdm9pZCBfdHJfZmx1c2hfYmxvY2sgIE9GKChkZWZsYXRlX3N0YXRlICpzLCBjaGFyZiAqYnVmLCB1bGcgc3RvcmVkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVvZikpOworICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGFzdCkpOwogdm9pZCBfdHJfYWxpZ24gICAgICAgIE9GKChkZWZsYXRlX3N0YXRlICpzKSk7CiB2b2lkIF90cl9zdG9yZWRfYmxvY2sgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIGNoYXJmICpidWYsIHVsZyBzdG9yZWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW9mKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsYXN0KSk7CiAKICNkZWZpbmUgZF9jb2RlKGRpc3QpIFwKICAgICgoZGlzdCkgPCAyNTYgPyBfZGlzdF9jb2RlW2Rpc3RdIDogX2Rpc3RfY29kZVsyNTYrKChkaXN0KT4+NyldKQpkaWZmIC0tZ2l0IGEvZ3psaWIuYyBiL2d6bGliLmMKaW5kZXggMDMyNDBiMS4uNmZkYjA4YSAxMDA2NDQKLS0tIGEvZ3psaWIuYworKysgYi9nemxpYi5jCkBAIC0xNDcsNiArMTQ3LDE0IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIC8qIHNhdmUgdGhlIHBhdGggbmFtZSBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KKyAgICBzdGF0ZS0+cGF0aCA9IG1hbGxvYyhzdHJsZW4ocGF0aCkgKyAxKTsKKyAgICBpZiAoc3RhdGUtPnBhdGggPT0gTlVMTCkgeworICAgICAgICBmcmVlKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHN0cmNweShzdGF0ZS0+cGF0aCwgcGF0aCk7CisKICAgICAvKiBvcGVuIHRoZSBmaWxlIHdpdGggdGhlIGFwcHJvcHJpYXRlIG1vZGUgKG9yIGp1c3QgdXNlIGZkKSAqLwogICAgIHN0YXRlLT5mZCA9IGZkICE9IC0xID8gZmQgOgogICAgICAgICBvcGVuKHBhdGgsCkBAIC0xNzAsMTQgKzE3OCw2IEBACiAgICAgaWYgKHN0YXRlLT5tb2RlID09IEdaX0FQUEVORCkKICAgICAgICAgc3RhdGUtPm1vZGUgPSBHWl9XUklURTsgICAgICAgICAvKiBzaW1wbGlmeSBsYXRlciBjaGVja3MgKi8KIAotICAgIC8qIHNhdmUgdGhlIHBhdGggbmFtZSBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KLSAgICBzdGF0ZS0+cGF0aCA9IG1hbGxvYyhzdHJsZW4ocGF0aCkgKyAxKTsKLSAgICBpZiAoc3RhdGUtPnBhdGggPT0gTlVMTCkgewotICAgICAgICBmcmVlKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cmNweShzdGF0ZS0+cGF0aCwgcGF0aCk7Ci0KICAgICAvKiBzYXZlIHRoZSBjdXJyZW50IHBvc2l0aW9uIGZvciByZXdpbmRpbmcgKG9ubHkgaWYgcmVhZGluZykgKi8KICAgICBpZiAoc3RhdGUtPm1vZGUgPT0gR1pfUkVBRCkgewogICAgICAgICBzdGF0ZS0+c3RhcnQgPSBMU0VFSyhzdGF0ZS0+ZmQsIDAsIFNFRUtfQ1VSKTsKQEAgLTQ1MCw3ICs0NTAsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIHJldHVybiBlcnJvciBpbmZvcm1hdGlvbiAqLwotICAgICplcnJudW0gPSBzdGF0ZS0+ZXJyOworICAgIGlmIChlcnJudW0gIT0gTlVMTCkKKyAgICAgICAgKmVycm51bSA9IHN0YXRlLT5lcnI7CiAgICAgcmV0dXJuIHN0YXRlLT5tc2cgPT0gTlVMTCA/ICIiIDogc3RhdGUtPm1zZzsKIH0KIApkaWZmIC0tZ2l0IGEvZ3pyZWFkLmMgYi9nenJlYWQuYwppbmRleCA3ZjY4MDU1Li40MzRlZjAyIDEwMDY0NAotLS0gYS9nenJlYWQuYworKysgYi9nenJlYWQuYwpAQCAtNjQ1LDYgKzY0NSw3IEBACiAgICAgICAgIGZyZWUoc3RhdGUtPmluKTsKICAgICB9CiAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfT0ssIE5VTEwpOworICAgIGZyZWUoc3RhdGUtPnBhdGgpOwogICAgIHJldCA9IGNsb3NlKHN0YXRlLT5mZCk7CiAgICAgZnJlZShzdGF0ZSk7CiAgICAgcmV0dXJuIHJldCA/IFpfRVJSTk8gOiBaX09LOwpkaWZmIC0tZ2l0IGEvZ3p3cml0ZS5jIGIvZ3p3cml0ZS5jCmluZGV4IDg0NDMxMmEuLjQyNzg0MGQgMTAwNjQ0Ci0tLSBhL2d6d3JpdGUuYworKysgYi9nendyaXRlLmMKQEAgLTUyMyw4ICs1MjMsOSBAQAogICAgICh2b2lkKWRlZmxhdGVFbmQoJihzdGF0ZS0+c3RybSkpOwogICAgIGZyZWUoc3RhdGUtPm91dCk7CiAgICAgZnJlZShzdGF0ZS0+aW4pOwotICAgIHJldCArPSBjbG9zZShzdGF0ZS0+ZmQpOwogICAgIGd6X2Vycm9yKHN0YXRlLCBaX09LLCBOVUxMKTsKKyAgICBmcmVlKHN0YXRlLT5wYXRoKTsKKyAgICByZXQgKz0gY2xvc2Uoc3RhdGUtPmZkKTsKICAgICBmcmVlKHN0YXRlKTsKICAgICByZXR1cm4gcmV0ID8gWl9FUlJOTyA6IFpfT0s7CiB9CmRpZmYgLS1naXQgYS9pbmZ0cmVlcy5jIGIvaW5mdHJlZXMuYwppbmRleCBiNzY2Nzk5Li4zZWU3ZDA2IDEwMDY0NAotLS0gYS9pbmZ0cmVlcy5jCisrKyBiL2luZnRyZWVzLmMKQEAgLTksNyArOSw3IEBACiAjZGVmaW5lIE1BWEJJVFMgMTUKIAogY29uc3QgY2hhciBpbmZsYXRlX2NvcHlyaWdodFtdID0KLSAgICIgaW5mbGF0ZSAxLjIuMy45IENvcHlyaWdodCAxOTk1LTIwMTAgTWFyayBBZGxlciAiOworICAgIiBpbmZsYXRlIDEuMi40IENvcHlyaWdodCAxOTk1LTIwMTAgTWFyayBBZGxlciAiOwogLyoKICAgSWYgeW91IHVzZSB0aGUgemxpYiBsaWJyYXJ5IGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaXMgd2VsY29tZQogICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB5b3VyIHByb2R1Y3QuIElmIGZvciBzb21lIHJlYXNvbiB5b3UgY2Fubm90CkBAIC02Miw3ICs2Miw3IEBACiAgICAgICAgIDM1LCA0MywgNTEsIDU5LCA2NywgODMsIDk5LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4LCAwLCAwfTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbGV4dFszMV0gPSB7IC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBleHRyYSAqLwogICAgICAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE3LCAxNywgMTcsIDE3LCAxOCwgMTgsIDE4LCAxOCwKLSAgICAgICAgMTksIDE5LCAxOSwgMTksIDIwLCAyMCwgMjAsIDIwLCAyMSwgMjEsIDIxLCAyMSwgMTYsIDE5MywgMjAxfTsKKyAgICAgICAgMTksIDE5LCAxOSwgMTksIDIwLCAyMCwgMjAsIDIwLCAyMSwgMjEsIDIxLCAyMSwgMTYsIDY2LCAxOTl9OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkYmFzZVszMl0gPSB7IC8qIERpc3RhbmNlIGNvZGVzIDAuLjI5IGJhc2UgKi8KICAgICAgICAgMSwgMiwgMywgNCwgNSwgNywgOSwgMTMsIDE3LCAyNSwgMzMsIDQ5LCA2NSwgOTcsIDEyOSwgMTkzLAogICAgICAgICAyNTcsIDM4NSwgNTEzLCA3NjksIDEwMjUsIDE1MzcsIDIwNDksIDMwNzMsIDQwOTcsIDYxNDUsCmRpZmYgLS1naXQgYS9tYWtlX3Ztcy5jb20gYi9tYWtlX3Ztcy5jb20KaW5kZXggZjM1YTQ4Zi4uZGVlZTg3ZiAxMDA2NDQKLS0tIGEvbWFrZV92bXMuY29tCisrKyBiL21ha2Vfdm1zLmNvbQpAQCAtMTMsOCArMTMsMTAgQEAKICQhIDAuMDIgMjAwNjEwMDggQWRhcHQgdG8gbmV3IE1ha2VmaWxlLmluCiAkISAwLjAzIDIwMDkxMjI0IEFkZCBzdXBwb3J0IGZvciBsYXJnZSBmaWxlIGNoZWNrCiAkISAwLjA0IDIwMTAwMTEwIEFkZCBuZXcgZ3pjbG9zZSwgZ3psaWIsIGd6cmVhZCwgZ3p3cml0ZQorJCEgMC4wNSAyMDEwMDIyMSBFeGNoYW5nZSB6bGliZGVmcy5oIGJ5IHpjb25mLmguaW4KICQhCiAkIG9uIGVycm9yIHRoZW4gZ290byBlcnJfZXhpdAorJCBzZXQgcHJvYy9wYXJzZT1leHQKICQhCiAkIHRydWUgID0gMQogJCBmYWxzZSA9IDAKQEAgLTM4LDcgKzQwLDcgQEAKICQgY2NvcHQgICA9ICIiCiAkIGxvcHRzICAgPSAiIgogJCBkbnNybCAgID0gIiIKLSQgYWNvbmZfaW5fZmlsZSA9ICJjb25maWcuaGluIgorJCBhY29uZl9pbl9maWxlID0gInpjb25mLmguaW4jemNvbmYuaF9pbiIKICQgY29uZl9jaGVja19zdHJpbmcgPSAiIgogJCBsaW5rb25seSA9IGZhbHNlCiAkIG9wdGZpbGUgID0gbmFtZSArICIub3B0IgpAQCAtMTA0LDEzICsxMDYsMTYgQEAKICQgICBnb3RvIGZpbmRfYWNvbmYKICQgZW5kaWYKICQgb3Blbi9yZWFkL2Vycj1hY29uZl9lcnIgYWNvbmZfaW4gJ2ZuYW1lJwotJCBvcGVuL3dyaXRlIGFjb25mIHpsaWJkZWZzLmgKKyQgb3Blbi93cml0ZSBhY29uZiB6Y29uZi5oCiAkQUNPTkZfTE9PUDoKICQgcmVhZC9lbmRfb2ZfZmlsZT1hY29uZl9leGl0IGFjb25mX2luIGxpbmUKICQgd29yayA9IGYkZWRpdChsaW5lLCAiY29tcHJlc3MsdHJpbSIpCiAkIGlmIGYkZXh0cmFjdCgwLDYsd29yaykgLm5lcy4gIiN1bmRlZiIKICQgdGhlbgotJCAgIHdyaXRlIGFjb25mIGxpbmUKKyQgICBpZiBmJGV4dHJhY3QoMCwxMix3b3JrKSAubmVzLiAiI2NtYWtlZGVmaW5lIgorJCAgIHRoZW4KKyQgICAgICAgd3JpdGUgYWNvbmYgbGluZQorJCAgIGVuZGlmCiAkIGVsc2UKICQgICBjZGVmID0gZiRlbGVtZW50KDEsIiAiLHdvcmspCiAkICAgZ29zdWIgY2hlY2tfY29uZmlnCmRpZmYgLS1naXQgYS9taW5pZ3ppcC5jIGIvbWluaWd6aXAuYwppbmRleCA5ZDE4MjY2Li44NGQ4MjNiIDEwMDY0NAotLS0gYS9taW5pZ3ppcC5jCisrKyBiL21pbmlnemlwLmMKQEAgLTI2Miw2ICsyNjIsMTEgQEAKICAgICBGSUxFICAqaW47CiAgICAgZ3pGaWxlIG91dDsKIAorICAgIGlmIChzdHJsZW4oZmlsZSkgKyBzdHJsZW4oR1pfU1VGRklYKSA+PSBzaXplb2Yob3V0ZmlsZSkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogZmlsZW5hbWUgdG9vIGxvbmdcbiIsIHByb2cpOworICAgICAgICBleGl0KDEpOworICAgIH0KKwogICAgIHN0cmNweShvdXRmaWxlLCBmaWxlKTsKICAgICBzdHJjYXQob3V0ZmlsZSwgR1pfU1VGRklYKTsKIApAQCAtMjkxLDcgKzI5NiwxMiBAQAogICAgIGNoYXIgKmluZmlsZSwgKm91dGZpbGU7CiAgICAgRklMRSAgKm91dDsKICAgICBnekZpbGUgaW47Ci0gICAgdUludCBsZW4gPSAodUludClzdHJsZW4oZmlsZSk7CisgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihmaWxlKTsKKworICAgIGlmIChsZW4gKyBzdHJsZW4oR1pfU1VGRklYKSA+PSBzaXplb2YoYnVmKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBmaWxlbmFtZSB0b28gbG9uZ1xuIiwgcHJvZyk7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQogCiAgICAgc3RyY3B5KGJ1ZiwgZmlsZSk7CiAKQEAgLTMyMiw3ICszMzIsOCBAQAogCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICogVXNhZ2U6ICBtaW5pZ3ppcCBbLWRdIFstZl0gWy1oXSBbLXJdIFstMSB0byAtOV0gW2ZpbGVzLi4uXQorICogVXNhZ2U6ICBtaW5pZ3ppcCBbLWNdIFstZF0gWy1mXSBbLWhdIFstcl0gWy0xIHRvIC05XSBbZmlsZXMuLi5dCisgKiAgIC1jIDogd3JpdGUgdG8gc3RhbmRhcmQgb3V0cHV0CiAgKiAgIC1kIDogZGVjb21wcmVzcwogICogICAtZiA6IGNvbXByZXNzIHdpdGggWl9GSUxURVJFRAogICogICAtaCA6IGNvbXByZXNzIHdpdGggWl9IVUZGTUFOX09OTFkKQEAgLTMzNCwxNyArMzQ1LDMwIEBACiAgICAgaW50IGFyZ2M7CiAgICAgY2hhciAqYXJndltdOwogeworICAgIGludCBjb3B5b3V0ID0gMDsKICAgICBpbnQgdW5jb21wciA9IDA7CiAgICAgZ3pGaWxlIGZpbGU7Ci0gICAgY2hhciBvdXRtb2RlWzIwXTsKKyAgICBjaGFyICpibmFtZSwgb3V0bW9kZVsyMF07CiAKICAgICBzdHJjcHkob3V0bW9kZSwgIndiNiAiKTsKIAogICAgIHByb2cgPSBhcmd2WzBdOworICAgIGJuYW1lID0gc3RycmNocihhcmd2WzBdLCAnLycpOworICAgIGlmIChibmFtZSkKKyAgICAgIGJuYW1lKys7CisgICAgZWxzZQorICAgICAgYm5hbWUgPSBhcmd2WzBdOwogICAgIGFyZ2MtLSwgYXJndisrOwogCisgICAgaWYgKCFzdHJjbXAoYm5hbWUsICJndW56aXAiKSkKKyAgICAgIHVuY29tcHIgPSAxOworICAgIGVsc2UgaWYgKCFzdHJjbXAoYm5hbWUsICJ6Y2F0IikpCisgICAgICBjb3B5b3V0ID0gdW5jb21wciA9IDE7CisKICAgICB3aGlsZSAoYXJnYyA+IDApIHsKLSAgICAgIGlmIChzdHJjbXAoKmFyZ3YsICItZCIpID09IDApCisgICAgICBpZiAoc3RyY21wKCphcmd2LCAiLWMiKSA9PSAwKQorICAgICAgICBjb3B5b3V0ID0gMTsKKyAgICAgIGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgIi1kIikgPT0gMCkKICAgICAgICAgdW5jb21wciA9IDE7CiAgICAgICBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICItZiIpID09IDApCiAgICAgICAgIG91dG1vZGVbM10gPSAnZic7CkBAIC0zNzQsMTEgKzM5OCwzNiBAQAogICAgICAgICAgICAgZ3pfY29tcHJlc3Moc3RkaW4sIGZpbGUpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGNvcHlvdXQpIHsKKyAgICAgICAgICAgIFNFVF9CSU5BUllfTU9ERShzdGRvdXQpOworICAgICAgICB9CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGlmICh1bmNvbXByKSB7Ci0gICAgICAgICAgICAgICAgZmlsZV91bmNvbXByZXNzKCphcmd2KTsKKyAgICAgICAgICAgICAgICBpZiAoY29weW91dCkgeworICAgICAgICAgICAgICAgICAgICBmaWxlID0gZ3pvcGVuKCphcmd2LCAicmIiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGNhbid0IGd6b3BlbiAlc1xuIiwgcHJvZywgKmFyZ3YpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBnel91bmNvbXByZXNzKGZpbGUsIHN0ZG91dCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZmlsZV91bmNvbXByZXNzKCphcmd2KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZpbGVfY29tcHJlc3MoKmFyZ3YsIG91dG1vZGUpOworICAgICAgICAgICAgICAgIGlmIChjb3B5b3V0KSB7CisgICAgICAgICAgICAgICAgICAgIEZJTEUgKiBpbiA9IGZvcGVuKCphcmd2LCAicmIiKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaW4gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGVycm9yKCphcmd2KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBnemRvcGVuKGZpbGVubyhzdGRvdXQpLCBvdXRtb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlID09IE5VTEwpIGVycm9yKCJjYW4ndCBnemRvcGVuIHN0ZG91dCIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBnel9jb21wcmVzcyhpbiwgZmlsZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZpbGVfY29tcHJlc3MoKmFyZ3YsIG91dG1vZGUpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSB3aGlsZSAoYXJndisrLCAtLWFyZ2MpOwogICAgIH0KZGlmZiAtLWdpdCBhL3FueC9wYWNrYWdlLnFwZyBiL3FueC9wYWNrYWdlLnFwZwppbmRleCBmZWE3M2NjLi40NzBkMmQ1IDEwMDY0NAotLS0gYS9xbngvcGFja2FnZS5xcGcKKysrIGIvcW54L3BhY2thZ2UucXBnCkBAIC0yNSwxMCArMjUsMTAgQEAKICAgICAgIDxRUEc6RmlsZXM+CiAgICAgICAgICA8UVBHOkFkZCBmaWxlPSIuLi96Y29uZi5oIiBpbnN0YWxsPSIvb3B0L2luY2x1ZGUvIiB1c2VyPSJyb290OnN5cyIgcGVybWlzc2lvbj0iNjQ0Ii8+CiAgICAgICAgICA8UVBHOkFkZCBmaWxlPSIuLi96bGliLmgiIGluc3RhbGw9Ii9vcHQvaW5jbHVkZS8iIHVzZXI9InJvb3Q6c3lzIiBwZXJtaXNzaW9uPSI2NDQiLz4KLSAgICAgICAgIDxRUEc6QWRkIGZpbGU9Ii4uL2xpYnouc28uMS4yLjMuOSIgaW5zdGFsbD0iL29wdC9saWIvIiB1c2VyPSJyb290OmJpbiIgcGVybWlzc2lvbj0iNjQ0Ii8+Ci0gICAgICAgICA8UVBHOkFkZCBmaWxlPSJsaWJ6LnNvIiBpbnN0YWxsPSIvb3B0L2xpYi8iIGNvbXBvbmVudD0iZGV2IiBmaWxldHlwZT0ic3ltbGluayIgbGlua3RvPSJsaWJ6LnNvLjEuMi4zLjkiLz4KLSAgICAgICAgIDxRUEc6QWRkIGZpbGU9ImxpYnouc28uMSIgaW5zdGFsbD0iL29wdC9saWIvIiBmaWxldHlwZT0ic3ltbGluayIgbGlua3RvPSJsaWJ6LnNvLjEuMi4zLjkiLz4KLSAgICAgICAgIDxRUEc6QWRkIGZpbGU9Ii4uL2xpYnouc28uMS4yLjMuOSIgaW5zdGFsbD0iL29wdC9saWIvIiBjb21wb25lbnQ9InNsaWIiLz4KKyAgICAgICAgIDxRUEc6QWRkIGZpbGU9Ii4uL2xpYnouc28uMS4yLjQiIGluc3RhbGw9Ii9vcHQvbGliLyIgdXNlcj0icm9vdDpiaW4iIHBlcm1pc3Npb249IjY0NCIvPgorICAgICAgICAgPFFQRzpBZGQgZmlsZT0ibGliei5zbyIgaW5zdGFsbD0iL29wdC9saWIvIiBjb21wb25lbnQ9ImRldiIgZmlsZXR5cGU9InN5bWxpbmsiIGxpbmt0bz0ibGliei5zby4xLjIuNCIvPgorICAgICAgICAgPFFQRzpBZGQgZmlsZT0ibGliei5zby4xIiBpbnN0YWxsPSIvb3B0L2xpYi8iIGZpbGV0eXBlPSJzeW1saW5rIiBsaW5rdG89ImxpYnouc28uMS4yLjQiLz4KKyAgICAgICAgIDxRUEc6QWRkIGZpbGU9Ii4uL2xpYnouc28uMS4yLjQiIGluc3RhbGw9Ii9vcHQvbGliLyIgY29tcG9uZW50PSJzbGliIi8+CiAgICAgICA8L1FQRzpGaWxlcz4KIAogICAgICAgPFFQRzpQYWNrYWdlRmlsdGVyPgpAQCAtNjMsNyArNjMsNyBAQAogICAgICAgICAgICAgPC9RUE06UHJvZHVjdERlc2NyaXB0aW9uPgogCiAgICAgICAgICAgICA8UVBNOlJlbGVhc2VEZXNjcmlwdGlvbj4KLSAgICAgICAgICAgICAgIDxRUE06UmVsZWFzZVZlcnNpb24+MS4yLjMuOTwvUVBNOlJlbGVhc2VWZXJzaW9uPgorICAgICAgICAgICAgICAgPFFQTTpSZWxlYXNlVmVyc2lvbj4xLjIuNDwvUVBNOlJlbGVhc2VWZXJzaW9uPgogICAgICAgICAgICAgICAgPFFQTTpSZWxlYXNlVXJnZW5jeT5NZWRpdW08L1FQTTpSZWxlYXNlVXJnZW5jeT4KICAgICAgICAgICAgICAgIDxRUE06UmVsZWFzZVN0YWJpbGl0eT5TdGFibGU8L1FQTTpSZWxlYXNlU3RhYmlsaXR5PgogICAgICAgICAgICAgICAgPFFQTTpSZWxlYXNlTm90ZU1pbm9yPjwvUVBNOlJlbGVhc2VOb3RlTWlub3I+CmRpZmYgLS1naXQgYS90cmVlYnVpbGQueG1sIGIvdHJlZWJ1aWxkLnhtbAppbmRleCBmODFiNDQ5Li45MWVlODkxIDEwMDY0NAotLS0gYS90cmVlYnVpbGQueG1sCisrKyBiL3RyZWVidWlsZC54bWwKQEAgLTEsNiArMSw2IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiID8+Ci08cGFja2FnZSBuYW1lPSJ6bGliIiB2ZXJzaW9uPSIxLjIuMyI+Ci0gICAgPGxpYnJhcnkgbmFtZT0iemxpYiIgZGx2ZXJzaW9uPSIxLjIuMyIgZGxuYW1lPSJ6Ij4KKzxwYWNrYWdlIG5hbWU9InpsaWIiIHZlcnNpb249IjEuMi40Ij4KKyAgICA8bGlicmFyeSBuYW1lPSJ6bGliIiBkbHZlcnNpb249IjEuMi40IiBkbG5hbWU9InoiPgogCTxwcm9wZXJ0eSBuYW1lPSJkZXNjcmlwdGlvbiI+IHppcCBjb21wcmVzc2lvbiBsaWJyYXJ5IDwvcHJvcGVydHk+CiAJPHByb3BlcnR5IG5hbWU9ImluY2x1ZGUtdGFyZ2V0LWRpciIgdmFsdWU9IiQoQFBBQ0tBR0UvaW5zdGFsbC1pbmNsdWRlZGlyKSIgLz4KIApkaWZmIC0tZ2l0IGEvdHJlZXMuYyBiL3RyZWVzLmMKaW5kZXggYWE1OTlhNS4uMWE2ZTk5NyAxMDA2NDQKLS0tIGEvdHJlZXMuYworKysgYi90cmVlcy5jCkBAIC04NjcsMTMgKzg2NywxMyBAQAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKiBTZW5kIGEgc3RvcmVkIGJsb2NrCiAgKi8KLXZvaWQgX3RyX3N0b3JlZF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGVvZikKK3ZvaWQgX3RyX3N0b3JlZF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpCiAgICAgZGVmbGF0ZV9zdGF0ZSAqczsKICAgICBjaGFyZiAqYnVmOyAgICAgICAvKiBpbnB1dCBibG9jayAqLwogICAgIHVsZyBzdG9yZWRfbGVuOyAgIC8qIGxlbmd0aCBvZiBpbnB1dCBibG9jayAqLwotICAgIGludCBlb2Y7ICAgICAgICAgIC8qIHRydWUgaWYgdGhpcyBpcyB0aGUgbGFzdCBibG9jayBmb3IgYSBmaWxlICovCisgICAgaW50IGxhc3Q7ICAgICAgICAgLyogb25lIGlmIHRoaXMgaXMgdGhlIGxhc3QgYmxvY2sgZm9yIGEgZmlsZSAqLwogewotICAgIHNlbmRfYml0cyhzLCAoU1RPUkVEX0JMT0NLPDwxKStlb2YsIDMpOyAgLyogc2VuZCBibG9jayB0eXBlICovCisgICAgc2VuZF9iaXRzKHMsIChTVE9SRURfQkxPQ0s8PDEpK2xhc3QsIDMpOyAgICAvKiBzZW5kIGJsb2NrIHR5cGUgKi8KICNpZmRlZiBERUJVRwogICAgIHMtPmNvbXByZXNzZWRfbGVuID0gKHMtPmNvbXByZXNzZWRfbGVuICsgMyArIDcpICYgKHVsZyl+N0w7CiAgICAgcy0+Y29tcHJlc3NlZF9sZW4gKz0gKHN0b3JlZF9sZW4gKyA0KSA8PCAzOwpAQCAtOTIxLDExICs5MjEsMTEgQEAKICAqIERldGVybWluZSB0aGUgYmVzdCBlbmNvZGluZyBmb3IgdGhlIGN1cnJlbnQgYmxvY2s6IGR5bmFtaWMgdHJlZXMsIHN0YXRpYwogICogdHJlZXMgb3Igc3RvcmUsIGFuZCBvdXRwdXQgdGhlIGVuY29kZWQgYmxvY2sgdG8gdGhlIHppcCBmaWxlLgogICovCi12b2lkIF90cl9mbHVzaF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGVvZikKK3ZvaWQgX3RyX2ZsdXNoX2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgbGFzdCkKICAgICBkZWZsYXRlX3N0YXRlICpzOwogICAgIGNoYXJmICpidWY7ICAgICAgIC8qIGlucHV0IGJsb2NrLCBvciBOVUxMIGlmIHRvbyBvbGQgKi8KICAgICB1bGcgc3RvcmVkX2xlbjsgICAvKiBsZW5ndGggb2YgaW5wdXQgYmxvY2sgKi8KLSAgICBpbnQgZW9mOyAgICAgICAgICAvKiB0cnVlIGlmIHRoaXMgaXMgdGhlIGxhc3QgYmxvY2sgZm9yIGEgZmlsZSAqLworICAgIGludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi8KIHsKICAgICB1bGcgb3B0X2xlbmIsIHN0YXRpY19sZW5iOyAvKiBvcHRfbGVuIGFuZCBzdGF0aWNfbGVuIGluIGJ5dGVzICovCiAgICAgaW50IG1heF9ibGluZGV4ID0gMDsgIC8qIGluZGV4IG9mIGxhc3QgYml0IGxlbmd0aCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXEgKi8KQEAgLTk4MSwyMCArOTgxLDIwIEBACiAgICAgICAgICAqIHN1Y2Nlc3NmdWwuIElmIExJVF9CVUZTSVpFIDw9IFdTSVpFLCBpdCBpcyBuZXZlciB0b28gbGF0ZSB0bwogICAgICAgICAgKiB0cmFuc2Zvcm0gYSBibG9jayBpbnRvIGEgc3RvcmVkIGJsb2NrLgogICAgICAgICAgKi8KLSAgICAgICAgX3RyX3N0b3JlZF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGVvZik7CisgICAgICAgIF90cl9zdG9yZWRfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KTsKIAogI2lmZGVmIEZPUkNFX1NUQVRJQwogICAgIH0gZWxzZSBpZiAoc3RhdGljX2xlbmIgPj0gMCkgeyAvKiBmb3JjZSBzdGF0aWMgdHJlZXMgKi8KICNlbHNlCiAgICAgfSBlbHNlIGlmIChzLT5zdHJhdGVneSA9PSBaX0ZJWEVEIHx8IHN0YXRpY19sZW5iID09IG9wdF9sZW5iKSB7CiAjZW5kaWYKLSAgICAgICAgc2VuZF9iaXRzKHMsIChTVEFUSUNfVFJFRVM8PDEpK2VvZiwgMyk7CisgICAgICAgIHNlbmRfYml0cyhzLCAoU1RBVElDX1RSRUVTPDwxKStsYXN0LCAzKTsKICAgICAgICAgY29tcHJlc3NfYmxvY2socywgKGN0X2RhdGEgKilzdGF0aWNfbHRyZWUsIChjdF9kYXRhICopc3RhdGljX2R0cmVlKTsKICNpZmRlZiBERUJVRwogICAgICAgICBzLT5jb21wcmVzc2VkX2xlbiArPSAzICsgcy0+c3RhdGljX2xlbjsKICNlbmRpZgogICAgIH0gZWxzZSB7Ci0gICAgICAgIHNlbmRfYml0cyhzLCAoRFlOX1RSRUVTPDwxKStlb2YsIDMpOworICAgICAgICBzZW5kX2JpdHMocywgKERZTl9UUkVFUzw8MSkrbGFzdCwgMyk7CiAgICAgICAgIHNlbmRfYWxsX3RyZWVzKHMsIHMtPmxfZGVzYy5tYXhfY29kZSsxLCBzLT5kX2Rlc2MubWF4X2NvZGUrMSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2JsaW5kZXgrMSk7CiAgICAgICAgIGNvbXByZXNzX2Jsb2NrKHMsIChjdF9kYXRhICopcy0+ZHluX2x0cmVlLCAoY3RfZGF0YSAqKXMtPmR5bl9kdHJlZSk7CkBAIC0xMDA4LDE0ICsxMDA4LDE0IEBACiAgICAgICovCiAgICAgaW5pdF9ibG9jayhzKTsKIAotICAgIGlmIChlb2YpIHsKKyAgICBpZiAobGFzdCkgewogICAgICAgICBiaV93aW5kdXAocyk7CiAjaWZkZWYgREVCVUcKICAgICAgICAgcy0+Y29tcHJlc3NlZF9sZW4gKz0gNzsgIC8qIGFsaWduIG9uIGJ5dGUgYm91bmRhcnkgKi8KICNlbmRpZgogICAgIH0KICAgICBUcmFjZXYoKHN0ZGVyciwiXG5jb21wcmxlbiAlbHUoJWx1KSAiLCBzLT5jb21wcmVzc2VkX2xlbj4+MywKLSAgICAgICAgICAgcy0+Y29tcHJlc3NlZF9sZW4tNyplb2YpKTsKKyAgICAgICAgICAgcy0+Y29tcHJlc3NlZF9sZW4tNypsYXN0KSk7CiB9CiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvd2luMzIvTWFrZWZpbGUuZ2NjIGIvd2luMzIvTWFrZWZpbGUuZ2NjCmluZGV4IDk3NTcxYzIuLmFiZTNkNWEgMTAwNjQ0Ci0tLSBhL3dpbjMyL01ha2VmaWxlLmdjYworKysgYi93aW4zMi9NYWtlZmlsZS5nY2MKQEAgLTI1LDcgKzI1LDcgQEAKIAogU1RBVElDTElCID0gbGliei5hCiBTSEFSRURMSUIgPSB6bGliMS5kbGwKLUlNUExJQiAgICA9IGxpYnouZGxsLmEKK0lNUExJQiAgICA9IGxpYnpkbGwuYQogCiAjTE9DID0gLURBU01WCiAjTE9DID0gLURERUJVRyAtZwpkaWZmIC0tZ2l0IGEvd2luMzIvTWFrZWZpbGUubXNjIGIvd2luMzIvTWFrZWZpbGUubXNjCmluZGV4IDM3MjJiMjMuLmE3MzFjMGMgMTAwNjQ0Ci0tLSBhL3dpbjMyL01ha2VmaWxlLm1zYworKysgYi93aW4zMi9NYWtlZmlsZS5tc2MKQEAgLTIxLDEwICsyMSwxMCBAQAogTEQgPSBsaW5rCiBBUiA9IGxpYgogUkMgPSByYwotQ0ZMQUdTICA9IC1ub2xvZ28gLU1EIC1PMiAtT3ktICQoTE9DKQorQ0ZMQUdTICA9IC1ub2xvZ28gLU1EIC1XMyAtTzIgLU95LSAtWmkgLUZkInpsaWIiICQoTE9DKQogV0ZMQUdTICA9IC1EX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIC1EX0NSVF9OT05TVERDX05PX0RFUFJFQ0FURQotQVNGTEFHUyA9IC1jb2ZmCi1MREZMQUdTID0gLW5vbG9nbyAtZGVidWcgLXJlbGVhc2UKK0FTRkxBR1MgPSAtY29mZiAtWmkKK0xERkxBR1MgPSAtbm9sb2dvIC1kZWJ1ZyAtaW5jcmVtZW50YWw6bm8gLW9wdDpyZWYKIEFSRkxBR1MgPSAtbm9sb2dvCiBSQ0ZMQUdTID0gL2RXSU4zMiAvcgogCkBAIC00NCw3ICs0NCw3IEBACiAKICQoU0hBUkVETElCKTogd2luMzIvemxpYi5kZWYgJChPQkpTKSAkKE9CSkEpIHpsaWIxLnJlcwogCSQoTEQpICQoTERGTEFHUykgLWRlZjp3aW4zMi96bGliLmRlZiAtZGxsIC1pbXBsaWI6JChJTVBMSUIpIFwKLQkgIC1vdXQ6JEAgJChPQkpTKSAkKE9CSkEpIHpsaWIxLnJlcworCSAgLW91dDokQCAtYmFzZToweDVBNEMwMDAwICQoT0JKUykgJChPQkpBKSB6bGliMS5yZXMKIAlpZiBleGlzdCAkQC5tYW5pZmVzdCBcCiAJICBtdCAtbm9sb2dvIC1tYW5pZmVzdCAkQC5tYW5pZmVzdCAtb3V0cHV0cmVzb3VyY2U6JEA7MgogCmRpZmYgLS1naXQgYS96Y29uZi5oIGIvemNvbmYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODg4MDI0Ci0tLSAvZGV2L251bGwKKysrIGIvemNvbmYuaApAQCAtMCwwICsxLDQxNiBAQAorLyogemNvbmYuaCAtLSBjb25maWd1cmF0aW9uIG9mIHRoZSB6bGliIGNvbXByZXNzaW9uIGxpYnJhcnkKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDEwIEplYW4tbG91cCBHYWlsbHkuCisgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCisgKi8KKworLyogQCgjKSAkSWQkICovCisKKyNpZm5kZWYgWkNPTkZfSAorI2RlZmluZSBaQ09ORl9ICisKKy8qCisgKiBJZiB5b3UgKnJlYWxseSogbmVlZCBhIHVuaXF1ZSBwcmVmaXggZm9yIGFsbCB0eXBlcyBhbmQgbGlicmFyeSBmdW5jdGlvbnMsCisgKiBjb21waWxlIHdpdGggLURaX1BSRUZJWC4gVGhlICJzdGFuZGFyZCIgemxpYiBzaG91bGQgYmUgY29tcGlsZWQgd2l0aG91dCBpdC4KKyAqIEV2ZW4gYmV0dGVyIHRoYW4gY29tcGlsaW5nIHdpdGggLURaX1BSRUZJWCB3b3VsZCBiZSB0byB1c2UgY29uZmlndXJlIHRvIHNldAorICogdGhpcyBwZXJtYW5lbnRseSBpbiB6Y29uZi5oIHVzaW5nICIuL2NvbmZpZ3VyZSAtLXpwcmVmaXgiLgorICovCisjaWZkZWYgWl9QUkVGSVggICAgIC8qIG1heSBiZSBzZXQgdG8gI2lmIDEgYnkgLi9jb25maWd1cmUgKi8KKworLyogYWxsIGxpbmtlZCBzeW1ib2xzICovCisjICBkZWZpbmUgX2Rpc3RfY29kZSAgICAgICAgICAgIHpfX2Rpc3RfY29kZQorIyAgZGVmaW5lIF9sZW5ndGhfY29kZSAgICAgICAgICB6X19sZW5ndGhfY29kZQorIyAgZGVmaW5lIF90cl9hbGlnbiAgICAgICAgICAgICB6X190cl9hbGlnbgorIyAgZGVmaW5lIF90cl9mbHVzaF9ibG9jayAgICAgICB6X190cl9mbHVzaF9ibG9jaworIyAgZGVmaW5lIF90cl9pbml0ICAgICAgICAgICAgICB6X190cl9pbml0CisjICBkZWZpbmUgX3RyX3N0b3JlZF9ibG9jayAgICAgIHpfX3RyX3N0b3JlZF9ibG9jaworIyAgZGVmaW5lIF90cl90YWxseSAgICAgICAgICAgICB6X190cl90YWxseQorIyAgZGVmaW5lIGFkbGVyMzIgICAgICAgICAgICAgICB6X2FkbGVyMzIKKyMgIGRlZmluZSBhZGxlcjMyX2NvbWJpbmUgICAgICAgel9hZGxlcjMyX2NvbWJpbmUKKyMgIGRlZmluZSBhZGxlcjMyX2NvbWJpbmU2NCAgICAgel9hZGxlcjMyX2NvbWJpbmU2NAorIyAgZGVmaW5lIGNvbXByZXNzICAgICAgICAgICAgICB6X2NvbXByZXNzCisjICBkZWZpbmUgY29tcHJlc3MyICAgICAgICAgICAgIHpfY29tcHJlc3MyCisjICBkZWZpbmUgY29tcHJlc3NCb3VuZCAgICAgICAgIHpfY29tcHJlc3NCb3VuZAorIyAgZGVmaW5lIGNyYzMyICAgICAgICAgICAgICAgICB6X2NyYzMyCisjICBkZWZpbmUgY3JjMzJfY29tYmluZSAgICAgICAgIHpfY3JjMzJfY29tYmluZQorIyAgZGVmaW5lIGNyYzMyX2NvbWJpbmU2NCAgICAgICB6X2NyYzMyX2NvbWJpbmU2NAorIyAgZGVmaW5lIGRlZmxhdGUgICAgICAgICAgICAgICB6X2RlZmxhdGUKKyMgIGRlZmluZSBkZWZsYXRlQm91bmQgICAgICAgICAgel9kZWZsYXRlQm91bmQKKyMgIGRlZmluZSBkZWZsYXRlQ29weSAgICAgICAgICAgel9kZWZsYXRlQ29weQorIyAgZGVmaW5lIGRlZmxhdGVFbmQgICAgICAgICAgICB6X2RlZmxhdGVFbmQKKyMgIGRlZmluZSBkZWZsYXRlSW5pdDJfICAgICAgICAgel9kZWZsYXRlSW5pdDJfCisjICBkZWZpbmUgZGVmbGF0ZUluaXRfICAgICAgICAgIHpfZGVmbGF0ZUluaXRfCisjICBkZWZpbmUgZGVmbGF0ZVBhcmFtcyAgICAgICAgIHpfZGVmbGF0ZVBhcmFtcworIyAgZGVmaW5lIGRlZmxhdGVQcmltZSAgICAgICAgICB6X2RlZmxhdGVQcmltZQorIyAgZGVmaW5lIGRlZmxhdGVSZXNldCAgICAgICAgICB6X2RlZmxhdGVSZXNldAorIyAgZGVmaW5lIGRlZmxhdGVTZXREaWN0aW9uYXJ5ICB6X2RlZmxhdGVTZXREaWN0aW9uYXJ5CisjICBkZWZpbmUgZGVmbGF0ZVNldEhlYWRlciAgICAgIHpfZGVmbGF0ZVNldEhlYWRlcgorIyAgZGVmaW5lIGRlZmxhdGVUdW5lICAgICAgICAgICB6X2RlZmxhdGVUdW5lCisjICBkZWZpbmUgZGVmbGF0ZV9jb3B5cmlnaHQgICAgIHpfZGVmbGF0ZV9jb3B5cmlnaHQKKyMgIGRlZmluZSBnZXRfY3JjX3RhYmxlICAgICAgICAgel9nZXRfY3JjX3RhYmxlCisjICBkZWZpbmUgZ3pfZXJyb3IgICAgICAgICAgICAgIHpfZ3pfZXJyb3IKKyMgIGRlZmluZSBnel9pbnRtYXggICAgICAgICAgICAgel9nel9pbnRtYXgKKyMgIGRlZmluZSBnel9zdHJ3aW5lcnJvciAgICAgICAgel9nel9zdHJ3aW5lcnJvcgorIyAgZGVmaW5lIGd6YnVmZmVyICAgICAgICAgICAgICB6X2d6YnVmZmVyCisjICBkZWZpbmUgZ3pjbGVhcmVyciAgICAgICAgICAgIHpfZ3pjbGVhcmVycgorIyAgZGVmaW5lIGd6Y2xvc2UgICAgICAgICAgICAgICB6X2d6Y2xvc2UKKyMgIGRlZmluZSBnemNsb3NlX3IgICAgICAgICAgICAgel9nemNsb3NlX3IKKyMgIGRlZmluZSBnemNsb3NlX3cgICAgICAgICAgICAgel9nemNsb3NlX3cKKyMgIGRlZmluZSBnemRpcmVjdCAgICAgICAgICAgICAgel9nemRpcmVjdAorIyAgZGVmaW5lIGd6ZG9wZW4gICAgICAgICAgICAgICB6X2d6ZG9wZW4KKyMgIGRlZmluZSBnemVvZiAgICAgICAgICAgICAgICAgel9nemVvZgorIyAgZGVmaW5lIGd6ZXJyb3IgICAgICAgICAgICAgICB6X2d6ZXJyb3IKKyMgIGRlZmluZSBnemZsdXNoICAgICAgICAgICAgICAgel9nemZsdXNoCisjICBkZWZpbmUgZ3pnZXRjICAgICAgICAgICAgICAgIHpfZ3pnZXRjCisjICBkZWZpbmUgZ3pnZXRzICAgICAgICAgICAgICAgIHpfZ3pnZXRzCisjICBkZWZpbmUgZ3pvZmZzZXQgICAgICAgICAgICAgIHpfZ3pvZmZzZXQKKyMgIGRlZmluZSBnem9mZnNldDY0ICAgICAgICAgICAgel9nem9mZnNldDY0CisjICBkZWZpbmUgZ3pvcGVuICAgICAgICAgICAgICAgIHpfZ3pvcGVuCisjICBkZWZpbmUgZ3pvcGVuNjQgICAgICAgICAgICAgIHpfZ3pvcGVuNjQKKyMgIGRlZmluZSBnenByaW50ZiAgICAgICAgICAgICAgel9nenByaW50ZgorIyAgZGVmaW5lIGd6cHV0YyAgICAgICAgICAgICAgICB6X2d6cHV0YworIyAgZGVmaW5lIGd6cHV0cyAgICAgICAgICAgICAgICB6X2d6cHV0cworIyAgZGVmaW5lIGd6cmVhZCAgICAgICAgICAgICAgICB6X2d6cmVhZAorIyAgZGVmaW5lIGd6cmV3aW5kICAgICAgICAgICAgICB6X2d6cmV3aW5kCisjICBkZWZpbmUgZ3pzZWVrICAgICAgICAgICAgICAgIHpfZ3pzZWVrCisjICBkZWZpbmUgZ3pzZWVrNjQgICAgICAgICAgICAgIHpfZ3pzZWVrNjQKKyMgIGRlZmluZSBnenNldHBhcmFtcyAgICAgICAgICAgel9nenNldHBhcmFtcworIyAgZGVmaW5lIGd6dGVsbCAgICAgICAgICAgICAgICB6X2d6dGVsbAorIyAgZGVmaW5lIGd6dGVsbDY0ICAgICAgICAgICAgICB6X2d6dGVsbDY0CisjICBkZWZpbmUgZ3p1bmdldGMgICAgICAgICAgICAgIHpfZ3p1bmdldGMKKyMgIGRlZmluZSBnendyaXRlICAgICAgICAgICAgICAgel9nendyaXRlCisjICBkZWZpbmUgaW5mbGF0ZSAgICAgICAgICAgICAgIHpfaW5mbGF0ZQorIyAgZGVmaW5lIGluZmxhdGVCYWNrICAgICAgICAgICB6X2luZmxhdGVCYWNrCisjICBkZWZpbmUgaW5mbGF0ZUJhY2tFbmQgICAgICAgIHpfaW5mbGF0ZUJhY2tFbmQKKyMgIGRlZmluZSBpbmZsYXRlQmFja0luaXRfICAgICAgel9pbmZsYXRlQmFja0luaXRfCisjICBkZWZpbmUgaW5mbGF0ZUNvcHkgICAgICAgICAgIHpfaW5mbGF0ZUNvcHkKKyMgIGRlZmluZSBpbmZsYXRlRW5kICAgICAgICAgICAgel9pbmZsYXRlRW5kCisjICBkZWZpbmUgaW5mbGF0ZUdldEhlYWRlciAgICAgIHpfaW5mbGF0ZUdldEhlYWRlcgorIyAgZGVmaW5lIGluZmxhdGVJbml0Ml8gICAgICAgICB6X2luZmxhdGVJbml0Ml8KKyMgIGRlZmluZSBpbmZsYXRlSW5pdF8gICAgICAgICAgel9pbmZsYXRlSW5pdF8KKyMgIGRlZmluZSBpbmZsYXRlTWFyayAgICAgICAgICAgel9pbmZsYXRlTWFyaworIyAgZGVmaW5lIGluZmxhdGVQcmltZSAgICAgICAgICB6X2luZmxhdGVQcmltZQorIyAgZGVmaW5lIGluZmxhdGVSZXNldCAgICAgICAgICB6X2luZmxhdGVSZXNldAorIyAgZGVmaW5lIGluZmxhdGVSZXNldDIgICAgICAgICB6X2luZmxhdGVSZXNldDIKKyMgIGRlZmluZSBpbmZsYXRlU2V0RGljdGlvbmFyeSAgel9pbmZsYXRlU2V0RGljdGlvbmFyeQorIyAgZGVmaW5lIGluZmxhdGVTeW5jICAgICAgICAgICB6X2luZmxhdGVTeW5jCisjICBkZWZpbmUgaW5mbGF0ZVN5bmNQb2ludCAgICAgIHpfaW5mbGF0ZVN5bmNQb2ludAorIyAgZGVmaW5lIGluZmxhdGVVbmRlcm1pbmUgICAgICB6X2luZmxhdGVVbmRlcm1pbmUKKyMgIGRlZmluZSBpbmZsYXRlX2NvcHlyaWdodCAgICAgel9pbmZsYXRlX2NvcHlyaWdodAorIyAgZGVmaW5lIGluZmxhdGVfZmFzdCAgICAgICAgICB6X2luZmxhdGVfZmFzdAorIyAgZGVmaW5lIGluZmxhdGVfdGFibGUgICAgICAgICB6X2luZmxhdGVfdGFibGUKKyMgIGRlZmluZSB1bmNvbXByZXNzICAgICAgICAgICAgel91bmNvbXByZXNzCisjICBkZWZpbmUgekVycm9yICAgICAgICAgICAgICAgIHpfekVycm9yCisjICBkZWZpbmUgemNhbGxvYyAgICAgICAgICAgICAgIHpfemNhbGxvYworIyAgZGVmaW5lIHpjZnJlZSAgICAgICAgICAgICAgICB6X3pjZnJlZQorIyAgZGVmaW5lIHpsaWJDb21waWxlRmxhZ3MgICAgICB6X3psaWJDb21waWxlRmxhZ3MKKyMgIGRlZmluZSB6bGliVmVyc2lvbiAgICAgICAgICAgel96bGliVmVyc2lvbgorCisvKiBhbGwgemxpYiB0eXBlZGVmcyBpbiB6bGliLmggYW5kIHpjb25mLmggKi8KKyMgIGRlZmluZSBCeXRlICAgICAgICAgICAgICAgICAgel9CeXRlCisjICBkZWZpbmUgQnl0ZWYgICAgICAgICAgICAgICAgIHpfQnl0ZWYKKyMgIGRlZmluZSBhbGxvY19mdW5jICAgICAgICAgICAgel9hbGxvY19mdW5jCisjICBkZWZpbmUgY2hhcmYgICAgICAgICAgICAgICAgIHpfY2hhcmYKKyMgIGRlZmluZSBmcmVlX2Z1bmMgICAgICAgICAgICAgel9mcmVlX2Z1bmMKKyMgIGRlZmluZSBnekZpbGUgICAgICAgICAgICAgICAgel9nekZpbGUKKyMgIGRlZmluZSBnel9oZWFkZXIgICAgICAgICAgICAgel9nel9oZWFkZXIKKyMgIGRlZmluZSBnel9oZWFkZXJwICAgICAgICAgICAgel9nel9oZWFkZXJwCisjICBkZWZpbmUgaW5fZnVuYyAgICAgICAgICAgICAgIHpfaW5fZnVuYworIyAgZGVmaW5lIGludGYgICAgICAgICAgICAgICAgICB6X2ludGYKKyMgIGRlZmluZSBvdXRfZnVuYyAgICAgICAgICAgICAgel9vdXRfZnVuYworIyAgZGVmaW5lIHVJbnQgICAgICAgICAgICAgICAgICB6X3VJbnQKKyMgIGRlZmluZSB1SW50ZiAgICAgICAgICAgICAgICAgel91SW50ZgorIyAgZGVmaW5lIHVMb25nICAgICAgICAgICAgICAgICB6X3VMb25nCisjICBkZWZpbmUgdUxvbmdmICAgICAgICAgICAgICAgIHpfdUxvbmdmCisjICBkZWZpbmUgdm9pZHAgICAgICAgICAgICAgICAgIHpfdm9pZHAKKyMgIGRlZmluZSB2b2lkcGMgICAgICAgICAgICAgICAgel92b2lkcGMKKyMgIGRlZmluZSB2b2lkcGYgICAgICAgICAgICAgICAgel92b2lkcGYKKworLyogYWxsIHpsaWIgc3RydWN0cyBpbiB6bGliLmggYW5kIHpjb25mLmggKi8KKyMgIGRlZmluZSBnel9oZWFkZXJfcyAgICAgICAgICAgel9nel9oZWFkZXJfcworIyAgZGVmaW5lIGludGVybmFsX3N0YXRlICAgICAgICB6X2ludGVybmFsX3N0YXRlCisKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX01TRE9TX18pICYmICFkZWZpbmVkKE1TRE9TKQorIyAgZGVmaW5lIE1TRE9TCisjZW5kaWYKKyNpZiAoZGVmaW5lZChPU18yKSB8fCBkZWZpbmVkKF9fT1MyX18pKSAmJiAhZGVmaW5lZChPUzIpCisjICBkZWZpbmUgT1MyCisjZW5kaWYKKyNpZiBkZWZpbmVkKF9XSU5ET1dTKSAmJiAhZGVmaW5lZChXSU5ET1dTKQorIyAgZGVmaW5lIFdJTkRPV1MKKyNlbmRpZgorI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpIHx8IGRlZmluZWQoX19XSU4zMl9fKQorIyAgaWZuZGVmIFdJTjMyCisjICAgIGRlZmluZSBXSU4zMgorIyAgZW5kaWYKKyNlbmRpZgorI2lmIChkZWZpbmVkKE1TRE9TKSB8fCBkZWZpbmVkKE9TMikgfHwgZGVmaW5lZChXSU5ET1dTKSkgJiYgIWRlZmluZWQoV0lOMzIpCisjICBpZiAhZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19GTEFUX18pICYmICFkZWZpbmVkKF9fMzg2X18pCisjICAgIGlmbmRlZiBTWVMxNkJJVAorIyAgICAgIGRlZmluZSBTWVMxNkJJVAorIyAgICBlbmRpZgorIyAgZW5kaWYKKyNlbmRpZgorCisvKgorICogQ29tcGlsZSB3aXRoIC1ETUFYU0VHXzY0SyBpZiB0aGUgYWxsb2MgZnVuY3Rpb24gY2Fubm90IGFsbG9jYXRlIG1vcmUKKyAqIHRoYW4gNjRrIGJ5dGVzIGF0IGEgdGltZSAobmVlZGVkIG9uIHN5c3RlbXMgd2l0aCAxNi1iaXQgaW50KS4KKyAqLworI2lmZGVmIFNZUzE2QklUCisjICBkZWZpbmUgTUFYU0VHXzY0SworI2VuZGlmCisjaWZkZWYgTVNET1MKKyMgIGRlZmluZSBVTkFMSUdORURfT0sKKyNlbmRpZgorCisjaWZkZWYgX19TVERDX1ZFUlNJT05fXworIyAgaWZuZGVmIFNUREMKKyMgICAgZGVmaW5lIFNUREMKKyMgIGVuZGlmCisjICBpZiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwKKyMgICAgaWZuZGVmIFNUREM5OQorIyAgICAgIGRlZmluZSBTVERDOTkKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKKyNpZiAhZGVmaW5lZChTVERDKSAmJiAoZGVmaW5lZChfX1NURENfXykgfHwgZGVmaW5lZChfX2NwbHVzcGx1cykpCisjICBkZWZpbmUgU1REQworI2VuZGlmCisjaWYgIWRlZmluZWQoU1REQykgJiYgKGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSkKKyMgIGRlZmluZSBTVERDCisjZW5kaWYKKyNpZiAhZGVmaW5lZChTVERDKSAmJiAoZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChXSU5ET1dTKSB8fCBkZWZpbmVkKFdJTjMyKSkKKyMgIGRlZmluZSBTVERDCisjZW5kaWYKKyNpZiAhZGVmaW5lZChTVERDKSAmJiAoZGVmaW5lZChPUzIpIHx8IGRlZmluZWQoX19IT1NfQUlYX18pKQorIyAgZGVmaW5lIFNUREMKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX09TNDAwX18pICYmICFkZWZpbmVkKFNUREMpICAgIC8qIGlTZXJpZXMgKGZvcm1lcmx5IEFTLzQwMCkuICovCisjICBkZWZpbmUgU1REQworI2VuZGlmCisKKyNpZm5kZWYgU1REQworIyAgaWZuZGVmIGNvbnN0IC8qIGNhbm5vdCB1c2UgIWRlZmluZWQoU1REQykgJiYgIWRlZmluZWQoY29uc3QpIG9uIE1hYyAqLworIyAgICBkZWZpbmUgY29uc3QgICAgICAgLyogbm90ZTogbmVlZCBhIG1vcmUgZ2VudGxlIHNvbHV0aW9uIGhlcmUgKi8KKyMgIGVuZGlmCisjZW5kaWYKKworLyogU29tZSBNYWMgY29tcGlsZXJzIG1lcmdlIGFsbCAuaCBmaWxlcyBpbmNvcnJlY3RseTogKi8KKyNpZiBkZWZpbmVkKF9fTVdFUktTX18pfHxkZWZpbmVkKGFwcGxlYyl8fGRlZmluZWQoVEhJTktfQyl8fGRlZmluZWQoX19TQ19fKQorIyAgZGVmaW5lIE5PX0RVTU1ZX0RFQ0wKKyNlbmRpZgorCisvKiBNYXhpbXVtIHZhbHVlIGZvciBtZW1MZXZlbCBpbiBkZWZsYXRlSW5pdDIgKi8KKyNpZm5kZWYgTUFYX01FTV9MRVZFTAorIyAgaWZkZWYgTUFYU0VHXzY0SworIyAgICBkZWZpbmUgTUFYX01FTV9MRVZFTCA4CisjICBlbHNlCisjICAgIGRlZmluZSBNQVhfTUVNX0xFVkVMIDkKKyMgIGVuZGlmCisjZW5kaWYKKworLyogTWF4aW11bSB2YWx1ZSBmb3Igd2luZG93Qml0cyBpbiBkZWZsYXRlSW5pdDIgYW5kIGluZmxhdGVJbml0Mi4KKyAqIFdBUk5JTkc6IHJlZHVjaW5nIE1BWF9XQklUUyBtYWtlcyBtaW5pZ3ppcCB1bmFibGUgdG8gZXh0cmFjdCAuZ3ogZmlsZXMKKyAqIGNyZWF0ZWQgYnkgZ3ppcC4gKEZpbGVzIGNyZWF0ZWQgYnkgbWluaWd6aXAgY2FuIHN0aWxsIGJlIGV4dHJhY3RlZCBieQorICogZ3ppcC4pCisgKi8KKyNpZm5kZWYgTUFYX1dCSVRTCisjICBkZWZpbmUgTUFYX1dCSVRTICAgMTUgLyogMzJLIExaNzcgd2luZG93ICovCisjZW5kaWYKKworLyogVGhlIG1lbW9yeSByZXF1aXJlbWVudHMgZm9yIGRlZmxhdGUgYXJlIChpbiBieXRlcyk6CisgICAgICAgICAgICAoMSA8PCAod2luZG93Qml0cysyKSkgKyAgKDEgPDwgKG1lbUxldmVsKzkpKQorIHRoYXQgaXM6IDEyOEsgZm9yIHdpbmRvd0JpdHM9MTUgICsgIDEyOEsgZm9yIG1lbUxldmVsID0gOCAgKGRlZmF1bHQgdmFsdWVzKQorIHBsdXMgYSBmZXcga2lsb2J5dGVzIGZvciBzbWFsbCBvYmplY3RzLiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gcmVkdWNlCisgdGhlIGRlZmF1bHQgbWVtb3J5IHJlcXVpcmVtZW50cyBmcm9tIDI1NksgdG8gMTI4SywgY29tcGlsZSB3aXRoCisgICAgIG1ha2UgQ0ZMQUdTPSItTyAtRE1BWF9XQklUUz0xNCAtRE1BWF9NRU1fTEVWRUw9NyIKKyBPZiBjb3Vyc2UgdGhpcyB3aWxsIGdlbmVyYWxseSBkZWdyYWRlIGNvbXByZXNzaW9uICh0aGVyZSdzIG5vIGZyZWUgbHVuY2gpLgorCisgICBUaGUgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgaW5mbGF0ZSBhcmUgKGluIGJ5dGVzKSAxIDw8IHdpbmRvd0JpdHMKKyB0aGF0IGlzLCAzMksgZm9yIHdpbmRvd0JpdHM9MTUgKGRlZmF1bHQgdmFsdWUpIHBsdXMgYSBmZXcga2lsb2J5dGVzCisgZm9yIHNtYWxsIG9iamVjdHMuCisqLworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUeXBlIGRlY2xhcmF0aW9ucyAqLworCisjaWZuZGVmIE9GIC8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KKyMgIGlmZGVmIFNUREMKKyMgICAgZGVmaW5lIE9GKGFyZ3MpICBhcmdzCisjICBlbHNlCisjICAgIGRlZmluZSBPRihhcmdzKSAgKCkKKyMgIGVuZGlmCisjZW5kaWYKKworLyogVGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBmb3IgRkFSIGFyZSBuZWVkZWQgb25seSBmb3IgTVNET1MgbWl4ZWQKKyAqIG1vZGVsIHByb2dyYW1taW5nIChzbWFsbCBvciBtZWRpdW0gbW9kZWwgd2l0aCBzb21lIGZhciBhbGxvY2F0aW9ucykuCisgKiBUaGlzIHdhcyB0ZXN0ZWQgb25seSB3aXRoIE1TQzsgZm9yIG90aGVyIE1TRE9TIGNvbXBpbGVycyB5b3UgbWF5IGhhdmUKKyAqIHRvIGRlZmluZSBOT19NRU1DUFkgaW4genV0aWwuaC4gIElmIHlvdSBkb24ndCBuZWVkIHRoZSBtaXhlZCBtb2RlbCwKKyAqIGp1c3QgZGVmaW5lIEZBUiB0byBiZSBlbXB0eS4KKyAqLworI2lmZGVmIFNZUzE2QklUCisjICBpZiBkZWZpbmVkKE1fSTg2U00pIHx8IGRlZmluZWQoTV9JODZNTSkKKyAgICAgLyogTVNDIHNtYWxsIG9yIG1lZGl1bSBtb2RlbCAqLworIyAgICBkZWZpbmUgU01BTExfTUVESVVNCisjICAgIGlmZGVmIF9NU0NfVkVSCisjICAgICAgZGVmaW5lIEZBUiBfZmFyCisjICAgIGVsc2UKKyMgICAgICBkZWZpbmUgRkFSIGZhcgorIyAgICBlbmRpZgorIyAgZW5kaWYKKyMgIGlmIChkZWZpbmVkKF9fU01BTExfXykgfHwgZGVmaW5lZChfX01FRElVTV9fKSkKKyAgICAgLyogVHVyYm8gQyBzbWFsbCBvciBtZWRpdW0gbW9kZWwgKi8KKyMgICAgZGVmaW5lIFNNQUxMX01FRElVTQorIyAgICBpZmRlZiBfX0JPUkxBTkRDX18KKyMgICAgICBkZWZpbmUgRkFSIF9mYXIKKyMgICAgZWxzZQorIyAgICAgIGRlZmluZSBGQVIgZmFyCisjICAgIGVuZGlmCisjICBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFdJTkRPV1MpIHx8IGRlZmluZWQoV0lOMzIpCisgICAvKiBJZiBidWlsZGluZyBvciB1c2luZyB6bGliIGFzIGEgRExMLCBkZWZpbmUgWkxJQl9ETEwuCisgICAgKiBUaGlzIGlzIG5vdCBtYW5kYXRvcnksIGJ1dCBpdCBvZmZlcnMgYSBsaXR0bGUgcGVyZm9ybWFuY2UgaW5jcmVhc2UuCisgICAgKi8KKyMgIGlmZGVmIFpMSUJfRExMCisjICAgIGlmIGRlZmluZWQoV0lOMzIpICYmICghZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IChfX0JPUkxBTkRDX18gPj0gMHg1MDApKQorIyAgICAgIGlmZGVmIFpMSUJfSU5URVJOQUwKKyMgICAgICAgIGRlZmluZSBaRVhURVJOIGV4dGVybiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyMgICAgICBlbHNlCisjICAgICAgICBkZWZpbmUgWkVYVEVSTiBleHRlcm4gX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjICAgICAgZW5kaWYKKyMgICAgZW5kaWYKKyMgIGVuZGlmICAvKiBaTElCX0RMTCAqLworICAgLyogSWYgYnVpbGRpbmcgb3IgdXNpbmcgemxpYiB3aXRoIHRoZSBXSU5BUEkvV0lOQVBJViBjYWxsaW5nIGNvbnZlbnRpb24sCisgICAgKiBkZWZpbmUgWkxJQl9XSU5BUEkuCisgICAgKiBDYXV0aW9uOiB0aGUgc3RhbmRhcmQgWkxJQjEuRExMIGlzIE5PVCBjb21waWxlZCB1c2luZyBaTElCX1dJTkFQSS4KKyAgICAqLworIyAgaWZkZWYgWkxJQl9XSU5BUEkKKyMgICAgaWZkZWYgRkFSCisjICAgICAgdW5kZWYgRkFSCisjICAgIGVuZGlmCisjICAgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyAgICAgLyogTm8gbmVlZCBmb3IgX2V4cG9ydCwgdXNlIFpMSUIuREVGIGluc3RlYWQuICovCisgICAgIC8qIEZvciBjb21wbGV0ZSBXaW5kb3dzIGNvbXBhdGliaWxpdHksIHVzZSBXSU5BUEksIG5vdCBfX3N0ZGNhbGwuICovCisjICAgIGRlZmluZSBaRVhQT1JUIFdJTkFQSQorIyAgICBpZmRlZiBXSU4zMgorIyAgICAgIGRlZmluZSBaRVhQT1JUVkEgV0lOQVBJVgorIyAgICBlbHNlCisjICAgICAgZGVmaW5lIFpFWFBPUlRWQSBGQVIgQ0RFQ0wKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9fQkVPU19fKQorIyAgaWZkZWYgWkxJQl9ETEwKKyMgICAgaWZkZWYgWkxJQl9JTlRFUk5BTAorIyAgICAgIGRlZmluZSBaRVhQT1JUICAgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjICAgICAgZGVmaW5lIFpFWFBPUlRWQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyMgICAgZWxzZQorIyAgICAgIGRlZmluZSBaRVhQT1JUICAgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjICAgICAgZGVmaW5lIFpFWFBPUlRWQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKKworI2lmZGVmIEhBVkVfVklTSUJJTElUWV9QUkFHTUEKKyMgIGRlZmluZSBaRVhURVJOIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKSBleHRlcm4KKyNlbmRpZgorCisjaWZuZGVmIFpFWFRFUk4KKyMgIGRlZmluZSBaRVhURVJOIGV4dGVybgorI2VuZGlmCisjaWZuZGVmIFpFWFBPUlQKKyMgIGRlZmluZSBaRVhQT1JUCisjZW5kaWYKKyNpZm5kZWYgWkVYUE9SVFZBCisjICBkZWZpbmUgWkVYUE9SVFZBCisjZW5kaWYKKworI2lmbmRlZiBGQVIKKyMgIGRlZmluZSBGQVIKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoX19NQUNUWVBFU19fKQordHlwZWRlZiB1bnNpZ25lZCBjaGFyICBCeXRlOyAgLyogOCBiaXRzICovCisjZW5kaWYKK3R5cGVkZWYgdW5zaWduZWQgaW50ICAgdUludDsgIC8qIDE2IGJpdHMgb3IgbW9yZSAqLwordHlwZWRlZiB1bnNpZ25lZCBsb25nICB1TG9uZzsgLyogMzIgYml0cyBvciBtb3JlICovCisKKyNpZmRlZiBTTUFMTF9NRURJVU0KKyAgIC8qIEJvcmxhbmQgQy9DKysgYW5kIHNvbWUgb2xkIE1TQyB2ZXJzaW9ucyBpZ25vcmUgRkFSIGluc2lkZSB0eXBlZGVmICovCisjICBkZWZpbmUgQnl0ZWYgQnl0ZSBGQVIKKyNlbHNlCisgICB0eXBlZGVmIEJ5dGUgIEZBUiBCeXRlZjsKKyNlbmRpZgordHlwZWRlZiBjaGFyICBGQVIgY2hhcmY7Cit0eXBlZGVmIGludCAgIEZBUiBpbnRmOwordHlwZWRlZiB1SW50ICBGQVIgdUludGY7Cit0eXBlZGVmIHVMb25nIEZBUiB1TG9uZ2Y7CisKKyNpZmRlZiBTVERDCisgICB0eXBlZGVmIHZvaWQgY29uc3QgKnZvaWRwYzsKKyAgIHR5cGVkZWYgdm9pZCBGQVIgICAqdm9pZHBmOworICAgdHlwZWRlZiB2b2lkICAgICAgICp2b2lkcDsKKyNlbHNlCisgICB0eXBlZGVmIEJ5dGUgY29uc3QgKnZvaWRwYzsKKyAgIHR5cGVkZWYgQnl0ZSBGQVIgICAqdm9pZHBmOworICAgdHlwZWRlZiBCeXRlICAgICAgICp2b2lkcDsKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9VTklTVERfSCAgICAvKiBtYXkgYmUgc2V0IHRvICNpZiAxIGJ5IC4vY29uZmlndXJlICovCisjICBkZWZpbmUgWl9IQVZFX1VOSVNURF9ICisjZW5kaWYKKworI2lmZGVmIFpfSEFWRV9VTklTVERfSAorIyAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAgIC8qIGZvciBvZmZfdCAqLworIyAgaW5jbHVkZSA8dW5pc3RkLmg+ICAgICAgIC8qIGZvciBTRUVLXyogYW5kIG9mZl90ICovCisjICBpZmRlZiBWTVMKKyMgICAgaW5jbHVkZSA8dW5peGlvLmg+ICAgICAvKiBmb3Igb2ZmX3QgKi8KKyMgIGVuZGlmCisjICBpZm5kZWYgel9vZmZfdAorIyAgICBkZWZpbmUgel9vZmZfdCBvZmZfdAorIyAgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorIyAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2lmbmRlZiBTRUVLX1NFVAorIyAgZGVmaW5lIFNFRUtfU0VUICAgICAgICAwICAgICAgIC8qIFNlZWsgZnJvbSBiZWdpbm5pbmcgb2YgZmlsZS4gICovCisjICBkZWZpbmUgU0VFS19DVVIgICAgICAgIDEgICAgICAgLyogU2VlayBmcm9tIGN1cnJlbnQgcG9zaXRpb24uICAqLworIyAgZGVmaW5lIFNFRUtfRU5EICAgICAgICAyICAgICAgIC8qIFNldCBmaWxlIHBvaW50ZXIgdG8gRU9GIHBsdXMgIm9mZnNldCIgKi8KKyNlbmRpZgorI2lmbmRlZiB6X29mZl90CisjICBkZWZpbmUgel9vZmZfdCBsb25nCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19PUzQwMF9fKQorIyAgZGVmaW5lIE5PX3ZzbnByaW50ZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fTVZTX18pCisjICBkZWZpbmUgTk9fdnNucHJpbnRmCisjZW5kaWYKKworLyogTVZTIGxpbmtlciBkb2VzIG5vdCBzdXBwb3J0IGV4dGVybmFsIG5hbWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgKi8KKyNpZiBkZWZpbmVkKF9fTVZTX18pCisgICNwcmFnbWEgbWFwKGRlZmxhdGVJbml0XywiREVJTiIpCisgICNwcmFnbWEgbWFwKGRlZmxhdGVJbml0Ml8sIkRFSU4yIikKKyAgI3ByYWdtYSBtYXAoZGVmbGF0ZUVuZCwiREVFTkQiKQorICAjcHJhZ21hIG1hcChkZWZsYXRlQm91bmQsIkRFQk5EIikKKyAgI3ByYWdtYSBtYXAoaW5mbGF0ZUluaXRfLCJJTklOIikKKyAgI3ByYWdtYSBtYXAoaW5mbGF0ZUluaXQyXywiSU5JTjIiKQorICAjcHJhZ21hIG1hcChpbmZsYXRlRW5kLCJJTkVORCIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVTeW5jLCJJTlNZIikKKyAgI3ByYWdtYSBtYXAoaW5mbGF0ZVNldERpY3Rpb25hcnksIklOU0VESSIpCisgICNwcmFnbWEgbWFwKGNvbXByZXNzQm91bmQsIkNNQk5EIikKKyAgI3ByYWdtYSBtYXAoaW5mbGF0ZV90YWJsZSwiSU5UQUJMIikKKyAgI3ByYWdtYSBtYXAoaW5mbGF0ZV9mYXN0LCJJTkZBIikKKyAgI3ByYWdtYSBtYXAoaW5mbGF0ZV9jb3B5cmlnaHQsIklOQ09QWSIpCisjZW5kaWYKKworI2VuZGlmIC8qIFpDT05GX0ggKi8KZGlmZiAtLWdpdCBhL3pjb25mLmguY21ha2VpbiBiL3pjb25mLmguY21ha2VpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWM4YWIwCi0tLSAvZGV2L251bGwKKysrIGIvemNvbmYuaC5jbWFrZWluCkBAIC0wLDAgKzEsNDE4IEBACisvKiB6Y29uZi5oIC0tIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHpsaWIgY29tcHJlc3Npb24gbGlicmFyeQorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTAgSmVhbi1sb3VwIEdhaWxseS4KKyAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKKyAqLworCisvKiBAKCMpICRJZCQgKi8KKworI2lmbmRlZiBaQ09ORl9ICisjZGVmaW5lIFpDT05GX0gKKyNjbWFrZWRlZmluZSBaX1BSRUZJWAorI2NtYWtlZGVmaW5lIFpfSEFWRV9VTklTVERfSAorCisvKgorICogSWYgeW91ICpyZWFsbHkqIG5lZWQgYSB1bmlxdWUgcHJlZml4IGZvciBhbGwgdHlwZXMgYW5kIGxpYnJhcnkgZnVuY3Rpb25zLAorICogY29tcGlsZSB3aXRoIC1EWl9QUkVGSVguIFRoZSAic3RhbmRhcmQiIHpsaWIgc2hvdWxkIGJlIGNvbXBpbGVkIHdpdGhvdXQgaXQuCisgKiBFdmVuIGJldHRlciB0aGFuIGNvbXBpbGluZyB3aXRoIC1EWl9QUkVGSVggd291bGQgYmUgdG8gdXNlIGNvbmZpZ3VyZSB0byBzZXQKKyAqIHRoaXMgcGVybWFuZW50bHkgaW4gemNvbmYuaCB1c2luZyAiLi9jb25maWd1cmUgLS16cHJlZml4Ii4KKyAqLworI2lmZGVmIFpfUFJFRklYICAgICAvKiBtYXkgYmUgc2V0IHRvICNpZiAxIGJ5IC4vY29uZmlndXJlICovCisKKy8qIGFsbCBsaW5rZWQgc3ltYm9scyAqLworIyAgZGVmaW5lIF9kaXN0X2NvZGUgICAgICAgICAgICB6X19kaXN0X2NvZGUKKyMgIGRlZmluZSBfbGVuZ3RoX2NvZGUgICAgICAgICAgel9fbGVuZ3RoX2NvZGUKKyMgIGRlZmluZSBfdHJfYWxpZ24gICAgICAgICAgICAgel9fdHJfYWxpZ24KKyMgIGRlZmluZSBfdHJfZmx1c2hfYmxvY2sgICAgICAgel9fdHJfZmx1c2hfYmxvY2sKKyMgIGRlZmluZSBfdHJfaW5pdCAgICAgICAgICAgICAgel9fdHJfaW5pdAorIyAgZGVmaW5lIF90cl9zdG9yZWRfYmxvY2sgICAgICB6X190cl9zdG9yZWRfYmxvY2sKKyMgIGRlZmluZSBfdHJfdGFsbHkgICAgICAgICAgICAgel9fdHJfdGFsbHkKKyMgIGRlZmluZSBhZGxlcjMyICAgICAgICAgICAgICAgel9hZGxlcjMyCisjICBkZWZpbmUgYWRsZXIzMl9jb21iaW5lICAgICAgIHpfYWRsZXIzMl9jb21iaW5lCisjICBkZWZpbmUgYWRsZXIzMl9jb21iaW5lNjQgICAgIHpfYWRsZXIzMl9jb21iaW5lNjQKKyMgIGRlZmluZSBjb21wcmVzcyAgICAgICAgICAgICAgel9jb21wcmVzcworIyAgZGVmaW5lIGNvbXByZXNzMiAgICAgICAgICAgICB6X2NvbXByZXNzMgorIyAgZGVmaW5lIGNvbXByZXNzQm91bmQgICAgICAgICB6X2NvbXByZXNzQm91bmQKKyMgIGRlZmluZSBjcmMzMiAgICAgICAgICAgICAgICAgel9jcmMzMgorIyAgZGVmaW5lIGNyYzMyX2NvbWJpbmUgICAgICAgICB6X2NyYzMyX2NvbWJpbmUKKyMgIGRlZmluZSBjcmMzMl9jb21iaW5lNjQgICAgICAgel9jcmMzMl9jb21iaW5lNjQKKyMgIGRlZmluZSBkZWZsYXRlICAgICAgICAgICAgICAgel9kZWZsYXRlCisjICBkZWZpbmUgZGVmbGF0ZUJvdW5kICAgICAgICAgIHpfZGVmbGF0ZUJvdW5kCisjICBkZWZpbmUgZGVmbGF0ZUNvcHkgICAgICAgICAgIHpfZGVmbGF0ZUNvcHkKKyMgIGRlZmluZSBkZWZsYXRlRW5kICAgICAgICAgICAgel9kZWZsYXRlRW5kCisjICBkZWZpbmUgZGVmbGF0ZUluaXQyXyAgICAgICAgIHpfZGVmbGF0ZUluaXQyXworIyAgZGVmaW5lIGRlZmxhdGVJbml0XyAgICAgICAgICB6X2RlZmxhdGVJbml0XworIyAgZGVmaW5lIGRlZmxhdGVQYXJhbXMgICAgICAgICB6X2RlZmxhdGVQYXJhbXMKKyMgIGRlZmluZSBkZWZsYXRlUHJpbWUgICAgICAgICAgel9kZWZsYXRlUHJpbWUKKyMgIGRlZmluZSBkZWZsYXRlUmVzZXQgICAgICAgICAgel9kZWZsYXRlUmVzZXQKKyMgIGRlZmluZSBkZWZsYXRlU2V0RGljdGlvbmFyeSAgel9kZWZsYXRlU2V0RGljdGlvbmFyeQorIyAgZGVmaW5lIGRlZmxhdGVTZXRIZWFkZXIgICAgICB6X2RlZmxhdGVTZXRIZWFkZXIKKyMgIGRlZmluZSBkZWZsYXRlVHVuZSAgICAgICAgICAgel9kZWZsYXRlVHVuZQorIyAgZGVmaW5lIGRlZmxhdGVfY29weXJpZ2h0ICAgICB6X2RlZmxhdGVfY29weXJpZ2h0CisjICBkZWZpbmUgZ2V0X2NyY190YWJsZSAgICAgICAgIHpfZ2V0X2NyY190YWJsZQorIyAgZGVmaW5lIGd6X2Vycm9yICAgICAgICAgICAgICB6X2d6X2Vycm9yCisjICBkZWZpbmUgZ3pfaW50bWF4ICAgICAgICAgICAgIHpfZ3pfaW50bWF4CisjICBkZWZpbmUgZ3pfc3Ryd2luZXJyb3IgICAgICAgIHpfZ3pfc3Ryd2luZXJyb3IKKyMgIGRlZmluZSBnemJ1ZmZlciAgICAgICAgICAgICAgel9nemJ1ZmZlcgorIyAgZGVmaW5lIGd6Y2xlYXJlcnIgICAgICAgICAgICB6X2d6Y2xlYXJlcnIKKyMgIGRlZmluZSBnemNsb3NlICAgICAgICAgICAgICAgel9nemNsb3NlCisjICBkZWZpbmUgZ3pjbG9zZV9yICAgICAgICAgICAgIHpfZ3pjbG9zZV9yCisjICBkZWZpbmUgZ3pjbG9zZV93ICAgICAgICAgICAgIHpfZ3pjbG9zZV93CisjICBkZWZpbmUgZ3pkaXJlY3QgICAgICAgICAgICAgIHpfZ3pkaXJlY3QKKyMgIGRlZmluZSBnemRvcGVuICAgICAgICAgICAgICAgel9nemRvcGVuCisjICBkZWZpbmUgZ3plb2YgICAgICAgICAgICAgICAgIHpfZ3plb2YKKyMgIGRlZmluZSBnemVycm9yICAgICAgICAgICAgICAgel9nemVycm9yCisjICBkZWZpbmUgZ3pmbHVzaCAgICAgICAgICAgICAgIHpfZ3pmbHVzaAorIyAgZGVmaW5lIGd6Z2V0YyAgICAgICAgICAgICAgICB6X2d6Z2V0YworIyAgZGVmaW5lIGd6Z2V0cyAgICAgICAgICAgICAgICB6X2d6Z2V0cworIyAgZGVmaW5lIGd6b2Zmc2V0ICAgICAgICAgICAgICB6X2d6b2Zmc2V0CisjICBkZWZpbmUgZ3pvZmZzZXQ2NCAgICAgICAgICAgIHpfZ3pvZmZzZXQ2NAorIyAgZGVmaW5lIGd6b3BlbiAgICAgICAgICAgICAgICB6X2d6b3BlbgorIyAgZGVmaW5lIGd6b3BlbjY0ICAgICAgICAgICAgICB6X2d6b3BlbjY0CisjICBkZWZpbmUgZ3pwcmludGYgICAgICAgICAgICAgIHpfZ3pwcmludGYKKyMgIGRlZmluZSBnenB1dGMgICAgICAgICAgICAgICAgel9nenB1dGMKKyMgIGRlZmluZSBnenB1dHMgICAgICAgICAgICAgICAgel9nenB1dHMKKyMgIGRlZmluZSBnenJlYWQgICAgICAgICAgICAgICAgel9nenJlYWQKKyMgIGRlZmluZSBnenJld2luZCAgICAgICAgICAgICAgel9nenJld2luZAorIyAgZGVmaW5lIGd6c2VlayAgICAgICAgICAgICAgICB6X2d6c2VlaworIyAgZGVmaW5lIGd6c2VlazY0ICAgICAgICAgICAgICB6X2d6c2VlazY0CisjICBkZWZpbmUgZ3pzZXRwYXJhbXMgICAgICAgICAgIHpfZ3pzZXRwYXJhbXMKKyMgIGRlZmluZSBnenRlbGwgICAgICAgICAgICAgICAgel9nenRlbGwKKyMgIGRlZmluZSBnenRlbGw2NCAgICAgICAgICAgICAgel9nenRlbGw2NAorIyAgZGVmaW5lIGd6dW5nZXRjICAgICAgICAgICAgICB6X2d6dW5nZXRjCisjICBkZWZpbmUgZ3p3cml0ZSAgICAgICAgICAgICAgIHpfZ3p3cml0ZQorIyAgZGVmaW5lIGluZmxhdGUgICAgICAgICAgICAgICB6X2luZmxhdGUKKyMgIGRlZmluZSBpbmZsYXRlQmFjayAgICAgICAgICAgel9pbmZsYXRlQmFjaworIyAgZGVmaW5lIGluZmxhdGVCYWNrRW5kICAgICAgICB6X2luZmxhdGVCYWNrRW5kCisjICBkZWZpbmUgaW5mbGF0ZUJhY2tJbml0XyAgICAgIHpfaW5mbGF0ZUJhY2tJbml0XworIyAgZGVmaW5lIGluZmxhdGVDb3B5ICAgICAgICAgICB6X2luZmxhdGVDb3B5CisjICBkZWZpbmUgaW5mbGF0ZUVuZCAgICAgICAgICAgIHpfaW5mbGF0ZUVuZAorIyAgZGVmaW5lIGluZmxhdGVHZXRIZWFkZXIgICAgICB6X2luZmxhdGVHZXRIZWFkZXIKKyMgIGRlZmluZSBpbmZsYXRlSW5pdDJfICAgICAgICAgel9pbmZsYXRlSW5pdDJfCisjICBkZWZpbmUgaW5mbGF0ZUluaXRfICAgICAgICAgIHpfaW5mbGF0ZUluaXRfCisjICBkZWZpbmUgaW5mbGF0ZU1hcmsgICAgICAgICAgIHpfaW5mbGF0ZU1hcmsKKyMgIGRlZmluZSBpbmZsYXRlUHJpbWUgICAgICAgICAgel9pbmZsYXRlUHJpbWUKKyMgIGRlZmluZSBpbmZsYXRlUmVzZXQgICAgICAgICAgel9pbmZsYXRlUmVzZXQKKyMgIGRlZmluZSBpbmZsYXRlUmVzZXQyICAgICAgICAgel9pbmZsYXRlUmVzZXQyCisjICBkZWZpbmUgaW5mbGF0ZVNldERpY3Rpb25hcnkgIHpfaW5mbGF0ZVNldERpY3Rpb25hcnkKKyMgIGRlZmluZSBpbmZsYXRlU3luYyAgICAgICAgICAgel9pbmZsYXRlU3luYworIyAgZGVmaW5lIGluZmxhdGVTeW5jUG9pbnQgICAgICB6X2luZmxhdGVTeW5jUG9pbnQKKyMgIGRlZmluZSBpbmZsYXRlVW5kZXJtaW5lICAgICAgel9pbmZsYXRlVW5kZXJtaW5lCisjICBkZWZpbmUgaW5mbGF0ZV9jb3B5cmlnaHQgICAgIHpfaW5mbGF0ZV9jb3B5cmlnaHQKKyMgIGRlZmluZSBpbmZsYXRlX2Zhc3QgICAgICAgICAgel9pbmZsYXRlX2Zhc3QKKyMgIGRlZmluZSBpbmZsYXRlX3RhYmxlICAgICAgICAgel9pbmZsYXRlX3RhYmxlCisjICBkZWZpbmUgdW5jb21wcmVzcyAgICAgICAgICAgIHpfdW5jb21wcmVzcworIyAgZGVmaW5lIHpFcnJvciAgICAgICAgICAgICAgICB6X3pFcnJvcgorIyAgZGVmaW5lIHpjYWxsb2MgICAgICAgICAgICAgICB6X3pjYWxsb2MKKyMgIGRlZmluZSB6Y2ZyZWUgICAgICAgICAgICAgICAgel96Y2ZyZWUKKyMgIGRlZmluZSB6bGliQ29tcGlsZUZsYWdzICAgICAgel96bGliQ29tcGlsZUZsYWdzCisjICBkZWZpbmUgemxpYlZlcnNpb24gICAgICAgICAgIHpfemxpYlZlcnNpb24KKworLyogYWxsIHpsaWIgdHlwZWRlZnMgaW4gemxpYi5oIGFuZCB6Y29uZi5oICovCisjICBkZWZpbmUgQnl0ZSAgICAgICAgICAgICAgICAgIHpfQnl0ZQorIyAgZGVmaW5lIEJ5dGVmICAgICAgICAgICAgICAgICB6X0J5dGVmCisjICBkZWZpbmUgYWxsb2NfZnVuYyAgICAgICAgICAgIHpfYWxsb2NfZnVuYworIyAgZGVmaW5lIGNoYXJmICAgICAgICAgICAgICAgICB6X2NoYXJmCisjICBkZWZpbmUgZnJlZV9mdW5jICAgICAgICAgICAgIHpfZnJlZV9mdW5jCisjICBkZWZpbmUgZ3pGaWxlICAgICAgICAgICAgICAgIHpfZ3pGaWxlCisjICBkZWZpbmUgZ3pfaGVhZGVyICAgICAgICAgICAgIHpfZ3pfaGVhZGVyCisjICBkZWZpbmUgZ3pfaGVhZGVycCAgICAgICAgICAgIHpfZ3pfaGVhZGVycAorIyAgZGVmaW5lIGluX2Z1bmMgICAgICAgICAgICAgICB6X2luX2Z1bmMKKyMgIGRlZmluZSBpbnRmICAgICAgICAgICAgICAgICAgel9pbnRmCisjICBkZWZpbmUgb3V0X2Z1bmMgICAgICAgICAgICAgIHpfb3V0X2Z1bmMKKyMgIGRlZmluZSB1SW50ICAgICAgICAgICAgICAgICAgel91SW50CisjICBkZWZpbmUgdUludGYgICAgICAgICAgICAgICAgIHpfdUludGYKKyMgIGRlZmluZSB1TG9uZyAgICAgICAgICAgICAgICAgel91TG9uZworIyAgZGVmaW5lIHVMb25nZiAgICAgICAgICAgICAgICB6X3VMb25nZgorIyAgZGVmaW5lIHZvaWRwICAgICAgICAgICAgICAgICB6X3ZvaWRwCisjICBkZWZpbmUgdm9pZHBjICAgICAgICAgICAgICAgIHpfdm9pZHBjCisjICBkZWZpbmUgdm9pZHBmICAgICAgICAgICAgICAgIHpfdm9pZHBmCisKKy8qIGFsbCB6bGliIHN0cnVjdHMgaW4gemxpYi5oIGFuZCB6Y29uZi5oICovCisjICBkZWZpbmUgZ3pfaGVhZGVyX3MgICAgICAgICAgIHpfZ3pfaGVhZGVyX3MKKyMgIGRlZmluZSBpbnRlcm5hbF9zdGF0ZSAgICAgICAgel9pbnRlcm5hbF9zdGF0ZQorCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19NU0RPU19fKSAmJiAhZGVmaW5lZChNU0RPUykKKyMgIGRlZmluZSBNU0RPUworI2VuZGlmCisjaWYgKGRlZmluZWQoT1NfMikgfHwgZGVmaW5lZChfX09TMl9fKSkgJiYgIWRlZmluZWQoT1MyKQorIyAgZGVmaW5lIE9TMgorI2VuZGlmCisjaWYgZGVmaW5lZChfV0lORE9XUykgJiYgIWRlZmluZWQoV0lORE9XUykKKyMgIGRlZmluZSBXSU5ET1dTCisjZW5kaWYKKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lOMzJfV0NFKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykKKyMgIGlmbmRlZiBXSU4zMgorIyAgICBkZWZpbmUgV0lOMzIKKyMgIGVuZGlmCisjZW5kaWYKKyNpZiAoZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChPUzIpIHx8IGRlZmluZWQoV0lORE9XUykpICYmICFkZWZpbmVkKFdJTjMyKQorIyAgaWYgIWRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fRkxBVF9fKSAmJiAhZGVmaW5lZChfXzM4Nl9fKQorIyAgICBpZm5kZWYgU1lTMTZCSVQKKyMgICAgICBkZWZpbmUgU1lTMTZCSVQKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKKworLyoKKyAqIENvbXBpbGUgd2l0aCAtRE1BWFNFR182NEsgaWYgdGhlIGFsbG9jIGZ1bmN0aW9uIGNhbm5vdCBhbGxvY2F0ZSBtb3JlCisgKiB0aGFuIDY0ayBieXRlcyBhdCBhIHRpbWUgKG5lZWRlZCBvbiBzeXN0ZW1zIHdpdGggMTYtYml0IGludCkuCisgKi8KKyNpZmRlZiBTWVMxNkJJVAorIyAgZGVmaW5lIE1BWFNFR182NEsKKyNlbmRpZgorI2lmZGVmIE1TRE9TCisjICBkZWZpbmUgVU5BTElHTkVEX09LCisjZW5kaWYKKworI2lmZGVmIF9fU1REQ19WRVJTSU9OX18KKyMgIGlmbmRlZiBTVERDCisjICAgIGRlZmluZSBTVERDCisjICBlbmRpZgorIyAgaWYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMCisjICAgIGlmbmRlZiBTVERDOTkKKyMgICAgICBkZWZpbmUgU1REQzk5CisjICAgIGVuZGlmCisjICBlbmRpZgorI2VuZGlmCisjaWYgIWRlZmluZWQoU1REQykgJiYgKGRlZmluZWQoX19TVERDX18pIHx8IGRlZmluZWQoX19jcGx1c3BsdXMpKQorIyAgZGVmaW5lIFNUREMKKyNlbmRpZgorI2lmICFkZWZpbmVkKFNUREMpICYmIChkZWZpbmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykpCisjICBkZWZpbmUgU1REQworI2VuZGlmCisjaWYgIWRlZmluZWQoU1REQykgJiYgKGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoV0lORE9XUykgfHwgZGVmaW5lZChXSU4zMikpCisjICBkZWZpbmUgU1REQworI2VuZGlmCisjaWYgIWRlZmluZWQoU1REQykgJiYgKGRlZmluZWQoT1MyKSB8fCBkZWZpbmVkKF9fSE9TX0FJWF9fKSkKKyMgIGRlZmluZSBTVERDCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19PUzQwMF9fKSAmJiAhZGVmaW5lZChTVERDKSAgICAvKiBpU2VyaWVzIChmb3JtZXJseSBBUy80MDApLiAqLworIyAgZGVmaW5lIFNUREMKKyNlbmRpZgorCisjaWZuZGVmIFNUREMKKyMgIGlmbmRlZiBjb25zdCAvKiBjYW5ub3QgdXNlICFkZWZpbmVkKFNUREMpICYmICFkZWZpbmVkKGNvbnN0KSBvbiBNYWMgKi8KKyMgICAgZGVmaW5lIGNvbnN0ICAgICAgIC8qIG5vdGU6IG5lZWQgYSBtb3JlIGdlbnRsZSBzb2x1dGlvbiBoZXJlICovCisjICBlbmRpZgorI2VuZGlmCisKKy8qIFNvbWUgTWFjIGNvbXBpbGVycyBtZXJnZSBhbGwgLmggZmlsZXMgaW5jb3JyZWN0bHk6ICovCisjaWYgZGVmaW5lZChfX01XRVJLU19fKXx8ZGVmaW5lZChhcHBsZWMpfHxkZWZpbmVkKFRISU5LX0MpfHxkZWZpbmVkKF9fU0NfXykKKyMgIGRlZmluZSBOT19EVU1NWV9ERUNMCisjZW5kaWYKKworLyogTWF4aW11bSB2YWx1ZSBmb3IgbWVtTGV2ZWwgaW4gZGVmbGF0ZUluaXQyICovCisjaWZuZGVmIE1BWF9NRU1fTEVWRUwKKyMgIGlmZGVmIE1BWFNFR182NEsKKyMgICAgZGVmaW5lIE1BWF9NRU1fTEVWRUwgOAorIyAgZWxzZQorIyAgICBkZWZpbmUgTUFYX01FTV9MRVZFTCA5CisjICBlbmRpZgorI2VuZGlmCisKKy8qIE1heGltdW0gdmFsdWUgZm9yIHdpbmRvd0JpdHMgaW4gZGVmbGF0ZUluaXQyIGFuZCBpbmZsYXRlSW5pdDIuCisgKiBXQVJOSU5HOiByZWR1Y2luZyBNQVhfV0JJVFMgbWFrZXMgbWluaWd6aXAgdW5hYmxlIHRvIGV4dHJhY3QgLmd6IGZpbGVzCisgKiBjcmVhdGVkIGJ5IGd6aXAuIChGaWxlcyBjcmVhdGVkIGJ5IG1pbmlnemlwIGNhbiBzdGlsbCBiZSBleHRyYWN0ZWQgYnkKKyAqIGd6aXAuKQorICovCisjaWZuZGVmIE1BWF9XQklUUworIyAgZGVmaW5lIE1BWF9XQklUUyAgIDE1IC8qIDMySyBMWjc3IHdpbmRvdyAqLworI2VuZGlmCisKKy8qIFRoZSBtZW1vcnkgcmVxdWlyZW1lbnRzIGZvciBkZWZsYXRlIGFyZSAoaW4gYnl0ZXMpOgorICAgICAgICAgICAgKDEgPDwgKHdpbmRvd0JpdHMrMikpICsgICgxIDw8IChtZW1MZXZlbCs5KSkKKyB0aGF0IGlzOiAxMjhLIGZvciB3aW5kb3dCaXRzPTE1ICArICAxMjhLIGZvciBtZW1MZXZlbCA9IDggIChkZWZhdWx0IHZhbHVlcykKKyBwbHVzIGEgZmV3IGtpbG9ieXRlcyBmb3Igc21hbGwgb2JqZWN0cy4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIHJlZHVjZQorIHRoZSBkZWZhdWx0IG1lbW9yeSByZXF1aXJlbWVudHMgZnJvbSAyNTZLIHRvIDEyOEssIGNvbXBpbGUgd2l0aAorICAgICBtYWtlIENGTEFHUz0iLU8gLURNQVhfV0JJVFM9MTQgLURNQVhfTUVNX0xFVkVMPTciCisgT2YgY291cnNlIHRoaXMgd2lsbCBnZW5lcmFsbHkgZGVncmFkZSBjb21wcmVzc2lvbiAodGhlcmUncyBubyBmcmVlIGx1bmNoKS4KKworICAgVGhlIG1lbW9yeSByZXF1aXJlbWVudHMgZm9yIGluZmxhdGUgYXJlIChpbiBieXRlcykgMSA8PCB3aW5kb3dCaXRzCisgdGhhdCBpcywgMzJLIGZvciB3aW5kb3dCaXRzPTE1IChkZWZhdWx0IHZhbHVlKSBwbHVzIGEgZmV3IGtpbG9ieXRlcworIGZvciBzbWFsbCBvYmplY3RzLgorKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgLyogVHlwZSBkZWNsYXJhdGlvbnMgKi8KKworI2lmbmRlZiBPRiAvKiBmdW5jdGlvbiBwcm90b3R5cGVzICovCisjICBpZmRlZiBTVERDCisjICAgIGRlZmluZSBPRihhcmdzKSAgYXJncworIyAgZWxzZQorIyAgICBkZWZpbmUgT0YoYXJncykgICgpCisjICBlbmRpZgorI2VuZGlmCisKKy8qIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgZm9yIEZBUiBhcmUgbmVlZGVkIG9ubHkgZm9yIE1TRE9TIG1peGVkCisgKiBtb2RlbCBwcm9ncmFtbWluZyAoc21hbGwgb3IgbWVkaXVtIG1vZGVsIHdpdGggc29tZSBmYXIgYWxsb2NhdGlvbnMpLgorICogVGhpcyB3YXMgdGVzdGVkIG9ubHkgd2l0aCBNU0M7IGZvciBvdGhlciBNU0RPUyBjb21waWxlcnMgeW91IG1heSBoYXZlCisgKiB0byBkZWZpbmUgTk9fTUVNQ1BZIGluIHp1dGlsLmguICBJZiB5b3UgZG9uJ3QgbmVlZCB0aGUgbWl4ZWQgbW9kZWwsCisgKiBqdXN0IGRlZmluZSBGQVIgdG8gYmUgZW1wdHkuCisgKi8KKyNpZmRlZiBTWVMxNkJJVAorIyAgaWYgZGVmaW5lZChNX0k4NlNNKSB8fCBkZWZpbmVkKE1fSTg2TU0pCisgICAgIC8qIE1TQyBzbWFsbCBvciBtZWRpdW0gbW9kZWwgKi8KKyMgICAgZGVmaW5lIFNNQUxMX01FRElVTQorIyAgICBpZmRlZiBfTVNDX1ZFUgorIyAgICAgIGRlZmluZSBGQVIgX2ZhcgorIyAgICBlbHNlCisjICAgICAgZGVmaW5lIEZBUiBmYXIKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjICBpZiAoZGVmaW5lZChfX1NNQUxMX18pIHx8IGRlZmluZWQoX19NRURJVU1fXykpCisgICAgIC8qIFR1cmJvIEMgc21hbGwgb3IgbWVkaXVtIG1vZGVsICovCisjICAgIGRlZmluZSBTTUFMTF9NRURJVU0KKyMgICAgaWZkZWYgX19CT1JMQU5EQ19fCisjICAgICAgZGVmaW5lIEZBUiBfZmFyCisjICAgIGVsc2UKKyMgICAgICBkZWZpbmUgRkFSIGZhcgorIyAgICBlbmRpZgorIyAgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChXSU5ET1dTKSB8fCBkZWZpbmVkKFdJTjMyKQorICAgLyogSWYgYnVpbGRpbmcgb3IgdXNpbmcgemxpYiBhcyBhIERMTCwgZGVmaW5lIFpMSUJfRExMLgorICAgICogVGhpcyBpcyBub3QgbWFuZGF0b3J5LCBidXQgaXQgb2ZmZXJzIGEgbGl0dGxlIHBlcmZvcm1hbmNlIGluY3JlYXNlLgorICAgICovCisjICBpZmRlZiBaTElCX0RMTAorIyAgICBpZiBkZWZpbmVkKFdJTjMyKSAmJiAoIWRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCAoX19CT1JMQU5EQ19fID49IDB4NTAwKSkKKyMgICAgICBpZmRlZiBaTElCX0lOVEVSTkFMCisjICAgICAgICBkZWZpbmUgWkVYVEVSTiBleHRlcm4gX19kZWNsc3BlYyhkbGxleHBvcnQpCisjICAgICAgZWxzZQorIyAgICAgICAgZGVmaW5lIFpFWFRFUk4gZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyAgICAgIGVuZGlmCisjICAgIGVuZGlmCisjICBlbmRpZiAgLyogWkxJQl9ETEwgKi8KKyAgIC8qIElmIGJ1aWxkaW5nIG9yIHVzaW5nIHpsaWIgd2l0aCB0aGUgV0lOQVBJL1dJTkFQSVYgY2FsbGluZyBjb252ZW50aW9uLAorICAgICogZGVmaW5lIFpMSUJfV0lOQVBJLgorICAgICogQ2F1dGlvbjogdGhlIHN0YW5kYXJkIFpMSUIxLkRMTCBpcyBOT1QgY29tcGlsZWQgdXNpbmcgWkxJQl9XSU5BUEkuCisgICAgKi8KKyMgIGlmZGVmIFpMSUJfV0lOQVBJCisjICAgIGlmZGVmIEZBUgorIyAgICAgIHVuZGVmIEZBUgorIyAgICBlbmRpZgorIyAgICBpbmNsdWRlIDx3aW5kb3dzLmg+CisgICAgIC8qIE5vIG5lZWQgZm9yIF9leHBvcnQsIHVzZSBaTElCLkRFRiBpbnN0ZWFkLiAqLworICAgICAvKiBGb3IgY29tcGxldGUgV2luZG93cyBjb21wYXRpYmlsaXR5LCB1c2UgV0lOQVBJLCBub3QgX19zdGRjYWxsLiAqLworIyAgICBkZWZpbmUgWkVYUE9SVCBXSU5BUEkKKyMgICAgaWZkZWYgV0lOMzIKKyMgICAgICBkZWZpbmUgWkVYUE9SVFZBIFdJTkFQSVYKKyMgICAgZWxzZQorIyAgICAgIGRlZmluZSBaRVhQT1JUVkEgRkFSIENERUNMCisjICAgIGVuZGlmCisjICBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfX0JFT1NfXykKKyMgIGlmZGVmIFpMSUJfRExMCisjICAgIGlmZGVmIFpMSUJfSU5URVJOQUwKKyMgICAgICBkZWZpbmUgWkVYUE9SVCAgIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorIyAgICAgIGRlZmluZSBaRVhQT1JUVkEgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjICAgIGVsc2UKKyMgICAgICBkZWZpbmUgWkVYUE9SVCAgIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyAgICAgIGRlZmluZSBaRVhQT1JUVkEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjICAgIGVuZGlmCisjICBlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1ZJU0lCSUxJVFlfUFJBR01BCisjICBkZWZpbmUgWkVYVEVSTiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkgZXh0ZXJuCisjZW5kaWYKKworI2lmbmRlZiBaRVhURVJOCisjICBkZWZpbmUgWkVYVEVSTiBleHRlcm4KKyNlbmRpZgorI2lmbmRlZiBaRVhQT1JUCisjICBkZWZpbmUgWkVYUE9SVAorI2VuZGlmCisjaWZuZGVmIFpFWFBPUlRWQQorIyAgZGVmaW5lIFpFWFBPUlRWQQorI2VuZGlmCisKKyNpZm5kZWYgRkFSCisjICBkZWZpbmUgRkFSCisjZW5kaWYKKworI2lmICFkZWZpbmVkKF9fTUFDVFlQRVNfXykKK3R5cGVkZWYgdW5zaWduZWQgY2hhciAgQnl0ZTsgIC8qIDggYml0cyAqLworI2VuZGlmCit0eXBlZGVmIHVuc2lnbmVkIGludCAgIHVJbnQ7ICAvKiAxNiBiaXRzIG9yIG1vcmUgKi8KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyAgdUxvbmc7IC8qIDMyIGJpdHMgb3IgbW9yZSAqLworCisjaWZkZWYgU01BTExfTUVESVVNCisgICAvKiBCb3JsYW5kIEMvQysrIGFuZCBzb21lIG9sZCBNU0MgdmVyc2lvbnMgaWdub3JlIEZBUiBpbnNpZGUgdHlwZWRlZiAqLworIyAgZGVmaW5lIEJ5dGVmIEJ5dGUgRkFSCisjZWxzZQorICAgdHlwZWRlZiBCeXRlICBGQVIgQnl0ZWY7CisjZW5kaWYKK3R5cGVkZWYgY2hhciAgRkFSIGNoYXJmOwordHlwZWRlZiBpbnQgICBGQVIgaW50ZjsKK3R5cGVkZWYgdUludCAgRkFSIHVJbnRmOwordHlwZWRlZiB1TG9uZyBGQVIgdUxvbmdmOworCisjaWZkZWYgU1REQworICAgdHlwZWRlZiB2b2lkIGNvbnN0ICp2b2lkcGM7CisgICB0eXBlZGVmIHZvaWQgRkFSICAgKnZvaWRwZjsKKyAgIHR5cGVkZWYgdm9pZCAgICAgICAqdm9pZHA7CisjZWxzZQorICAgdHlwZWRlZiBCeXRlIGNvbnN0ICp2b2lkcGM7CisgICB0eXBlZGVmIEJ5dGUgRkFSICAgKnZvaWRwZjsKKyAgIHR5cGVkZWYgQnl0ZSAgICAgICAqdm9pZHA7CisjZW5kaWYKKworI2lmZGVmIEhBVkVfVU5JU1REX0ggICAgLyogbWF5IGJlIHNldCB0byAjaWYgMSBieSAuL2NvbmZpZ3VyZSAqLworIyAgZGVmaW5lIFpfSEFWRV9VTklTVERfSAorI2VuZGlmCisKKyNpZmRlZiBaX0hBVkVfVU5JU1REX0gKKyMgIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgICAvKiBmb3Igb2ZmX3QgKi8KKyMgIGluY2x1ZGUgPHVuaXN0ZC5oPiAgICAgICAvKiBmb3IgU0VFS18qIGFuZCBvZmZfdCAqLworIyAgaWZkZWYgVk1TCisjICAgIGluY2x1ZGUgPHVuaXhpby5oPiAgICAgLyogZm9yIG9mZl90ICovCisjICBlbmRpZgorIyAgaWZuZGVmIHpfb2ZmX3QKKyMgICAgZGVmaW5lIHpfb2ZmX3Qgb2ZmX3QKKyMgIGVuZGlmCisjZW5kaWYKKworI2lmZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyMgIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpZm5kZWYgU0VFS19TRVQKKyMgIGRlZmluZSBTRUVLX1NFVCAgICAgICAgMCAgICAgICAvKiBTZWVrIGZyb20gYmVnaW5uaW5nIG9mIGZpbGUuICAqLworIyAgZGVmaW5lIFNFRUtfQ1VSICAgICAgICAxICAgICAgIC8qIFNlZWsgZnJvbSBjdXJyZW50IHBvc2l0aW9uLiAgKi8KKyMgIGRlZmluZSBTRUVLX0VORCAgICAgICAgMiAgICAgICAvKiBTZXQgZmlsZSBwb2ludGVyIHRvIEVPRiBwbHVzICJvZmZzZXQiICovCisjZW5kaWYKKyNpZm5kZWYgel9vZmZfdAorIyAgZGVmaW5lIHpfb2ZmX3QgbG9uZworI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fT1M0MDBfXykKKyMgIGRlZmluZSBOT192c25wcmludGYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX01WU19fKQorIyAgZGVmaW5lIE5PX3ZzbnByaW50ZgorI2VuZGlmCisKKy8qIE1WUyBsaW5rZXIgZG9lcyBub3Qgc3VwcG9ydCBleHRlcm5hbCBuYW1lcyBsYXJnZXIgdGhhbiA4IGJ5dGVzICovCisjaWYgZGVmaW5lZChfX01WU19fKQorICAjcHJhZ21hIG1hcChkZWZsYXRlSW5pdF8sIkRFSU4iKQorICAjcHJhZ21hIG1hcChkZWZsYXRlSW5pdDJfLCJERUlOMiIpCisgICNwcmFnbWEgbWFwKGRlZmxhdGVFbmQsIkRFRU5EIikKKyAgI3ByYWdtYSBtYXAoZGVmbGF0ZUJvdW5kLCJERUJORCIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVJbml0XywiSU5JTiIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVJbml0Ml8sIklOSU4yIikKKyAgI3ByYWdtYSBtYXAoaW5mbGF0ZUVuZCwiSU5FTkQiKQorICAjcHJhZ21hIG1hcChpbmZsYXRlU3luYywiSU5TWSIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVTZXREaWN0aW9uYXJ5LCJJTlNFREkiKQorICAjcHJhZ21hIG1hcChjb21wcmVzc0JvdW5kLCJDTUJORCIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVfdGFibGUsIklOVEFCTCIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVfZmFzdCwiSU5GQSIpCisgICNwcmFnbWEgbWFwKGluZmxhdGVfY29weXJpZ2h0LCJJTkNPUFkiKQorI2VuZGlmCisKKyNlbmRpZiAvKiBaQ09ORl9IICovCmRpZmYgLS1naXQgYS96Y29uZi5oLmluIGIvemNvbmYuaC5pbgppbmRleCBlZWM4YWIwLi41ODg4MDI0IDEwMDY0NAotLS0gYS96Y29uZi5oLmluCisrKyBiL3pjb25mLmguaW4KQEAgLTcsOCArNyw2IEBACiAKICNpZm5kZWYgWkNPTkZfSAogI2RlZmluZSBaQ09ORl9ICi0jY21ha2VkZWZpbmUgWl9QUkVGSVgKLSNjbWFrZWRlZmluZSBaX0hBVkVfVU5JU1REX0gKIAogLyoKICAqIElmIHlvdSAqcmVhbGx5KiBuZWVkIGEgdW5pcXVlIHByZWZpeCBmb3IgYWxsIHR5cGVzIGFuZCBsaWJyYXJ5IGZ1bmN0aW9ucywKZGlmZiAtLWdpdCBhL3psaWIuMyBiL3psaWIuMwppbmRleCA4MmI5ZWNhLi41N2YwMzA3IDEwMDY0NAotLS0gYS96bGliLjMKKysrIGIvemxpYi4zCkBAIC0xLDQgKzEsNCBAQAotLlRIIFpMSUIgMyAiMjEgRmVicnVhcnkgMjAxMCIKKy5USCBaTElCIDMgIjExIE1hcmNoIDIwMTAiCiAuU0ggTkFNRQogemxpYiBcLSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnkKIC5TSCBTWU5PUFNJUwpAQCAtOSwxMiArOSwxMyBAQAogVGhlCiAuSSB6bGliCiBsaWJyYXJ5IGlzIGEgZ2VuZXJhbCBwdXJwb3NlIGRhdGEgY29tcHJlc3Npb24gbGlicmFyeS4KLVRoZSBjb2RlIGlzIHRocmVhZCBzYWZlLgorVGhlIGNvZGUgaXMgdGhyZWFkIHNhZmUsIGFzc3VtaW5nIHRoYXQgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zCit1c2VkIGFyZSB0aHJlYWQgc2FmZSwgc3VjaCBhcyBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcy4KIEl0IHByb3ZpZGVzIGluLW1lbW9yeSBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMsCiBpbmNsdWRpbmcgaW50ZWdyaXR5IGNoZWNrcyBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEuCiBUaGlzIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkgc3VwcG9ydHMgb25seSBvbmUgY29tcHJlc3Npb24gbWV0aG9kIChkZWZsYXRpb24pCi1idXQgb3RoZXIgYWxnb3JpdGhtcyB3aWxsIGJlIGFkZGVkIGxhdGVyCi1hbmQgd2lsbCBoYXZlIHRoZSBzYW1lIHN0cmVhbSBpbnRlcmZhY2UuCitidXQgb3RoZXIgYWxnb3JpdGhtcyBtYXkgYmUgYWRkZWQgbGF0ZXIKK3dpdGggdGhlIHNhbWUgc3RyZWFtIGludGVyZmFjZS4KIC5MUAogQ29tcHJlc3Npb24gY2FuIGJlIGRvbmUgaW4gYSBzaW5nbGUgc3RlcCBpZiB0aGUgYnVmZmVycyBhcmUgbGFyZ2UgZW5vdWdoCiBvciBjYW4gYmUgZG9uZSBieSByZXBlYXRlZCBjYWxscyBvZiB0aGUgY29tcHJlc3Npb24gZnVuY3Rpb24uCkBAIC0yOSw3ICszMCw3IEBACiAuTFAKIFRoZSBsaWJyYXJ5IGRvZXMgbm90IGluc3RhbGwgYW55IHNpZ25hbCBoYW5kbGVyLgogVGhlIGRlY29kZXIgY2hlY2tzIHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgY29tcHJlc3NlZCBkYXRhLAotc28gdGhlIGxpYnJhcnkgc2hvdWxkIG5ldmVyIGNyYXNoIGV2ZW4gaW4gY2FzZSBvZiBjb3JydXB0ZWQgaW5wdXQuCitzbyB0aGUgbGlicmFyeSBzaG91bGQgbmV2ZXIgY3Jhc2ggZXZlbiBpbiB0aGUgY2FzZSBvZiBjb3JydXB0ZWQgaW5wdXQuCiAuTFAKIEFsbCBmdW5jdGlvbnMgb2YgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkgYXJlIGRvY3VtZW50ZWQgaW4gdGhlIGZpbGUKIC5JUiB6bGliLmggLgpAQCAtMzcsMTggKzM4LDE5IEBACiBpbiB0aGUgZmlsZXMKIC5JIGV4YW1wbGUuYwogYW5kCi0uSVIgbWluaWd6aXAuYyAuCisuSVIgbWluaWd6aXAuYywKK2FzIHdlbGwgYXMgb3RoZXIgZXhhbXBsZXMgaW4gdGhlCisuSVIgZXhhbXBsZXMvCitkaXJlY3RvcnkuCiAuTFAKIENoYW5nZXMgdG8gdGhpcyB2ZXJzaW9uIGFyZSBkb2N1bWVudGVkIGluIHRoZSBmaWxlCiAuSSBDaGFuZ2VMb2cKLXRoYXQgYWNjb21wYW5pZXMgdGhlIHNvdXJjZSwKLWFuZCBhcmUgY29uY2VybmVkIHByaW1hcmlseSB3aXRoIGJ1ZyBmaXhlcyBhbmQgcG9ydGFiaWxpdHkgZW5oYW5jZW1lbnRzLgordGhhdCBhY2NvbXBhbmllcyB0aGUgc291cmNlLgogLkxQCi1BIEphdmEgaW1wbGVtZW50YXRpb24gb2YKIC5JIHpsaWIKLWlzIGF2YWlsYWJsZSBpbiB0aGUgSmF2YSBEZXZlbG9wbWVudCBLaXQgMS4xOgoraXMgYXZhaWxhYmxlIGluIEphdmEgdXNpbmcgdGhlIGphdmEudXRpbC56aXAgcGFja2FnZToKIC5JUAotaHR0cDovL3d3dy5qYXZhc29mdC5jb20vcHJvZHVjdHMvSkRLLzEuMS9kb2NzL2FwaS9QYWNrYWdlLWphdmEudXRpbC56aXAuaHRtbAoraHR0cDovL2phdmEuc3VuLmNvbS9kZXZlbG9wZXIvdGVjaG5pY2FsQXJ0aWNsZXMvUHJvZ3JhbW1pbmcvY29tcHJlc3Npb24vCiAuTFAKIEEgUGVybCBpbnRlcmZhY2UgdG8KIC5JUiB6bGliICwKQEAgLTU2LDcgKzU4LDcgQEAKIGlzIGF2YWlsYWJsZSBhdCBDUEFOIChDb21wcmVoZW5zaXZlIFBlcmwgQXJjaGl2ZSBOZXR3b3JrKSBzaXRlcywKIGluY2x1ZGluZzoKIC5JUAotaHR0cDovL3d3dy5jcGFuLm9yZy9tb2R1bGVzL2J5LW1vZHVsZS9Db21wcmVzcy8KK2h0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfnBtcXMvSU8tQ29tcHJlc3MtWmxpYi8KIC5MUAogQSBQeXRob24gaW50ZXJmYWNlIHRvCiAuSVIgemxpYiAsCkBAIC02NSwxNCArNjcsMTEgQEAKIC5JUAogaHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9saWIvbW9kdWxlLXpsaWIuaHRtbAogLkxQCi1BCiAuSSB6bGliCi1iaW5kaW5nIGZvcgotLklSIHRjbCAoMSksCi13cml0dGVuIGJ5IEFuZHJlYXMgS3VwcmllcyAoYS5rdXByaWVzQHdlc3RlbmQuY29tKSwKLWlzIGF2YWlsbGFibGUgYXQ6CitpcyBidWlsdCBpbnRvCisuSVIgdGNsOgogLklQCi1odHRwOi8vd3d3Lndlc3RlbmQuY29tL35rdXByaWVzL2RvYy90cmYvbWFuL21hbi5odG1sCitodHRwOi8vd2lraS50Y2wudGsvNDYxMAogLkxQCiBBbiBleHBlcmltZW50YWwgcGFja2FnZSB0byByZWFkIGFuZCB3cml0ZSBmaWxlcyBpbiAuemlwIGZvcm1hdCwKIHdyaXR0ZW4gb24gdG9wIG9mCkBAIC04MCw0MCArNzksMzQgQEAKIGJ5IEdpbGxlcyBWb2xsYW50IChpbmZvQHdpbmltYWdlLmNvbSksCiBpcyBhdmFpbGFibGUgYXQ6CiAuSVAKLWh0dHA6Ly93d3cud2luaW1hZ2UuY29tL3pMaWJEbGwvdW56aXAuaHRtbAoraHR0cDovL3d3dy53aW5pbWFnZS5jb20vekxpYkRsbC9taW5pemlwLmh0bWwKIGFuZCBhbHNvIGluIHRoZQogLkkgY29udHJpYi9taW5pemlwCiBkaXJlY3Rvcnkgb2YgdGhlIG1haW4KIC5JIHpsaWIKLXdlYiBzaXRlLgorc291cmNlIGRpc3RyaWJ1dGlvbi4KIC5TSCAiU0VFIEFMU08iCiBUaGUKIC5JIHpsaWIKLXdlYiBzaXRlIGNhbiBiZSBmb3VuZCBhdCBlaXRoZXIgb2YgdGhlc2UgbG9jYXRpb25zOgord2ViIHNpdGUgY2FuIGJlIGZvdW5kIGF0OgogLklQCi1odHRwOi8vd3d3LnpsaWIub3JnCi0uYnIKLWh0dHA6Ly93d3cuZ3ppcC5vcmcvemxpYi8KK2h0dHA6Ly96bGliLm5ldC8KIC5MUAogVGhlIGRhdGEgZm9ybWF0IHVzZWQgYnkgdGhlIHpsaWIgbGlicmFyeSBpcyBkZXNjcmliZWQgYnkgUkZDCiAoUmVxdWVzdCBmb3IgQ29tbWVudHMpIDE5NTAgdG8gMTk1MiBpbiB0aGUgZmlsZXM6CiAuSVAKLWh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzE5NTAudHh0IChjb25jZXJuaW5nIHpsaWIgZm9ybWF0KQoraHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMTk1MC50eHQgKGZvciB0aGUgemxpYiBoZWFkZXIgYW5kIHRyYWlsZXIgZm9ybWF0KQogLmJyCi1odHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMxOTUxLnR4dCAoY29uY2VybmluZyBkZWZsYXRlIGZvcm1hdCkKK2h0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzE5NTEudHh0IChmb3IgdGhlIGRlZmxhdGUgY29tcHJlc3NlZCBkYXRhIGZvcm1hdCkKIC5icgotaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMTk1Mi50eHQgKGNvbmNlcm5pbmcgZ3ppcCBmb3JtYXQpCitodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMxOTUyLnR4dCAoZm9yIHRoZSBnemlwIGhlYWRlciBhbmQgdHJhaWxlciBmb3JtYXQpCiAuTFAKLVRoZXNlIGRvY3VtZW50cyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gb3RoZXIgZm9ybWF0cyBmcm9tOgotLklQCi1mdHA6Ly9mdHAudXUubmV0L2dyYXBoaWNzL3BuZy9kb2N1bWVudHMvemxpYi96ZG9jLWluZGV4Lmh0bWwKLS5MUAotTWFyayBOZWxzb24gKG1hcmtuQGllZWUub3JnKSB3cm90ZSBhbiBhcnRpY2xlIGFib3V0CitNYXJrIE5lbHNvbiB3cm90ZSBhbiBhcnRpY2xlIGFib3V0CiAuSSB6bGliCiBmb3IgdGhlIEphbi4gMTk5NyBpc3N1ZSBvZiAgRHIuIERvYmIncyBKb3VybmFsOwogYSBjb3B5IG9mIHRoZSBhcnRpY2xlIGlzIGF2YWlsYWJsZSBhdDoKIC5JUAotaHR0cDovL2RvZ21hLm5ldC9tYXJrbi9hcnRpY2xlcy96bGlidG9vbC96bGlidG9vbC5odG0KK2h0dHA6Ly9tYXJrbmVsc29uLnVzLzE5OTcvMDEvMDEvemxpYi1lbmdpbmUvCiAuU0ggIlJFUE9SVElORyBQUk9CTEVNUyIKIEJlZm9yZSByZXBvcnRpbmcgYSBwcm9ibGVtLAogcGxlYXNlIGNoZWNrIHRoZQpAQCAtMTI2LDEzICsxMTksMTMgQEAKIC5JIHpsaWIKIEZBUSBhdDoKIC5JUAotaHR0cDovL3d3dy5nemlwLm9yZy96bGliL3psaWJfZmFxLmh0bWwKK2h0dHA6Ly96bGliLm5ldC96bGliX2ZhcS5odG1sCiAuTFAKIGJlZm9yZSBhc2tpbmcgZm9yIGhlbHAuCiBTZW5kIHF1ZXN0aW9ucyBhbmQvb3IgY29tbWVudHMgdG8gemxpYkBnemlwLm9yZywKIG9yIChmb3IgdGhlIFdpbmRvd3MgRExMIHZlcnNpb24pIHRvIEdpbGxlcyBWb2xsYW50IChpbmZvQHdpbmltYWdlLmNvbSkuCiAuU0ggQVVUSE9SUwotVmVyc2lvbiAxLjIuMy45CitWZXJzaW9uIDEuMi40CiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMCBKZWFuLWxvdXAgR2FpbGx5IChqbG91cEBnemlwLm9yZykKIGFuZCBNYXJrIEFkbGVyIChtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1KS4KIC5MUApkaWZmIC0tZ2l0IGEvemxpYi4zLnBkZiBiL3psaWIuMy5wZGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ0MmQ1YgotLS0gL2Rldi9udWxsCisrKyBiL3psaWIuMy5wZGYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvemxpYi5oIGIvemxpYi5oCmluZGV4IGUxY2ZkMGUuLmRmYzBiYmEgMTAwNjQ0Ci0tLSBhL3psaWIuaAorKysgYi96bGliLmgKQEAgLTEsNSArMSw1IEBACiAvKiB6bGliLmggLS0gaW50ZXJmYWNlIG9mIHRoZSAnemxpYicgZ2VuZXJhbCBwdXJwb3NlIGNvbXByZXNzaW9uIGxpYnJhcnkKLSAgdmVyc2lvbiAxLjIuMy45LCBGZWIgMjFzdCwgMjAxMAorICB2ZXJzaW9uIDEuMi4zLjksIE1hciAxMXRoLCAyMDEwCiAKICAgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTAgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgogCkBAIC0zNywxMSArMzcsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNkZWZpbmUgWkxJQl9WRVJTSU9OICIxLjIuMy45IgotI2RlZmluZSBaTElCX1ZFUk5VTSAweDEyMzkKKyNkZWZpbmUgWkxJQl9WRVJTSU9OICIxLjIuNCIKKyNkZWZpbmUgWkxJQl9WRVJOVU0gMHgxMjQwCiAjZGVmaW5lIFpMSUJfVkVSX01BSk9SIDEKICNkZWZpbmUgWkxJQl9WRVJfTUlOT1IgMgotI2RlZmluZSBaTElCX1ZFUl9SRVZJU0lPTiAzCisjZGVmaW5lIFpMSUJfVkVSX1JFVklTSU9OIDQKKyNkZWZpbmUgWkxJQl9WRVJfU1VCUkVWSVNJT04gMAogCiAvKgogICAgIFRoZSAnemxpYicgY29tcHJlc3Npb24gbGlicmFyeSBwcm92aWRlcyBpbi1tZW1vcnkgY29tcHJlc3Npb24gYW5kCg==