From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jitka Plesnikova To: git-commits@fedoraproject.org Subject: [rpms/perl-Storable] rawhide: 3.41 bump (rhbz#2485665) Date: Mon, 08 Jun 2026 11:23:35 GMT Message-ID: <178091781527.1.13825990247068269277.rpms-perl-Storable-52be1d515dc5@fedoraproject.org> List-ID: X-Git-Repo: rpms/perl-Storable X-Git-Branch: rawhide X-Git-Rev: 52be1d515dc595ae3dda9152ffa2ae6cfeb875ed QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvcGVybC1TdG9yYWJs ZQpCcmFuY2ggOiByYXdoaWRlCkNvbW1pdCA6IDUyYmUxZDUxNWRjNTk1YWUzZGRhOTE1MmZmYTJh ZTZjZmViODc1ZWQKQXV0aG9yIDogSml0a2EgUGxlc25pa292YSA8anBsZXNuaWtAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAyNi0wNi0wOFQxMzoyMzoxMiswMjowMApTdGF0cyAgOiArOS8tMTQ1MDUg aW4gNSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMv cGVybC1TdG9yYWJsZS9jLzUyYmUxZDUxNWRjNTk1YWUzZGRhOTE1MmZmYTJhZTZjZmViODc1ZWQ/ YnJhbmNoPXJhd2hpZGUKCkxvZzoKMy40MSBidW1wIChyaGJ6IzI0ODU2NjUpCgotLS0KZGlmZiAt LWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGRkNzhmYTMuLmVhNTAxY2QgMTAw NjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtNywzICs3LDQgQEAKIC9T dG9yYWJsZS0zLjExX3JlcGFja2FnZWQudGFyLmd6CiAvU3RvcmFibGUtMy4xNS50YXIuZ3oKIC9T dG9yYWJsZS0zLjI1LnRhci5negorL1N0b3JhYmxlLTMuNDEudGFyLmd6CgpkaWZmIC0tZ2l0IGEv U3RvcmFibGUtMy4yNS1VcGdyYWRlLXRvLTMuMzIucGF0Y2ggYi9TdG9yYWJsZS0zLjI1LVVwZ3Jh ZGUtdG8tMy4zMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY3YmM0Ni4u MDAwMDAwMAotLS0gYS9TdG9yYWJsZS0zLjI1LVVwZ3JhZGUtdG8tMy4zMi5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDUzOCArMCwwIEBACi1Gcm9tIDkzYjRjZjIyMDU0YTBlM2Y5ZjVkNGFlOGVh ZWM4NWU4Y2EyODk0NGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKaXRrYSBQbGVz bmlrb3ZhIDxqcGxlc25pa0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxMiBKdW4gMjAyMyAxNjow MDoyMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBVcGdyYWRlIHRvIDMuMzIKLQotLS0tCi0gQ2hh bmdlTG9nICAgfCAgMjkgKysrKysrKysrKysrKysKLSBNYWtlZmlsZS5QTCB8ICAgMiArLQotIFN0 b3JhYmxlLnBtIHwgIDMwICsrKysrKysrLS0tLS0tCi0gU3RvcmFibGUueHMgfCAxMTEgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQotIHQvYmxlc3Nl ZC50IHwgIDUzICsrKysrKysrKysrKysrKysrKysrKysrKy0KLSB0L2Jvb2xlYW4udCB8ICA4NCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSB0L21hbGljZS50ICB8ICAg NiArLS0KLSA3IGZpbGVzIGNoYW5nZWQsIDI3OCBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMo LSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdC9ib29sZWFuLnQKLQotZGlmZiAtLWdpdCBhL0NoYW5n ZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggYjFmNDc5MC4uNjYxOTU0MyAxMDA2NDQKLS0tLSBhL0No YW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDMyIEBACi0rMjAyMy0wNS0yNiAy MTozNjowMCBkZW1lcnBocQotKyAgICB2ZXJzaW9uIDMuMzIKLSsgICAgICAgICogVXBkYXRlIHNl Y3VyaXR5IGFkdmlzb3J5IHRvIGJlIG1vcmUgY2xlYXIKLSsKLSsyMDIzLTAyLTI2IDAwOjMxOjMy IGRlbWVycGhxCi0rICAgIHZlcnNpb24gMy4zMQotKyAgICAgICAgKiBGaXh1cCBmb3IgcHBwb3J0 IGZpeCBpbiAzLjMwCi0rCi0rMjAyMy0wMi0yMiAwOTo1NjoyNyBsZW9udAotKyAgICB2ZXJzaW9u IDMuMzAKLSsgICAgICAgICogVXNlIHBwcG9ydCBmb3IgYWxsIG1vZHVsZXMgaW4gZGlzdC4KLSsK LSsyMDIzLTAxLTA0IDE3OjMzOjI0IGlhYnluCi0rICAgIHZlcnNpb24gMy4yOQotKyAgICAgICAg KiBTdG9yZSBjb2RlIGZpeGVzIGlkZW50aWZpZWQgZnJvbSByZWZjb3VudGVkIHN0YWNrIHBhdGNo Ci0rCi0rMjAyMi0xMS0wOCAxMDoxMjo0NiB0b255Ci0rICAgIHZlcnNpb24gMy4yOAotKyAgICAg ICAgKiBTdG9yZSBob29rIGVycm9yIHJlcG9ydGluZyBpbXByb3ZlbWVudHMKLSsJKiBTdG9yZSBo b29rIGhhbmRsZXMgcmVnZXggb2JqZWN0cyBwcm9wZXJseS4KLSsKLSsyMDIyLTA2LTIwIDIwOjMy OjI5IHRvZGRyCi0rICAgIHZlcnNpb24gMy4yNwotKyAgICAgICAgKiBVc2UgY0JPT0wgaW5zdGVh ZCBvZiAhISBpbiB4cyBjb2RlCi0rCi0rMjAyMi0wNC0xOCAxNzozNjowMCB0b2RkcgotKyAgICB2 ZXJzaW9uIDMuMjYKLSsgICAgICAgICogQ29uZm9ybSB0byBwcHBvcnQuaCAzLjY4IHJlY29tbWVu ZGF0aW9ucwotKwotIDIwMjEtMDgtMzAgMDc6NDY6NTIgbndjbGFyawotICAgICB2ZXJzaW9uIDMu MjUKLSAgICAgICAgICogTm8gY2hhbmdlcyBmcm9tIHByZXZpb3VzIHZlcnNpb24KLWRpZmYgLS1n aXQgYS9NYWtlZmlsZS5QTCBiL01ha2VmaWxlLlBMCi1pbmRleCBlMDNlMTQxLi5iNzA1NjU0IDEw MDY0NAotLS0tIGEvTWFrZWZpbGUuUEwKLSsrKyBiL01ha2VmaWxlLlBMCi1AQCAtMjksNyArMjks NyBAQCBXcml0ZU1ha2VmaWxlKAotICAgICAgICAgICAgICAgICAnRXh0VXRpbHM6Ok1ha2VNYWtl cicgPT4gJzYuMzEnLAotICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgVEVTVF9SRVFVSVJF UyA9PiB7Ci0tICAgICAgICAgICAgICAgICdUZXN0OjpNb3JlJyA9PiAnMC40MScsCi0rICAgICAg ICAgICAgICAgICdUZXN0OjpNb3JlJyA9PiAnMC44MicsCi0gICAgICAgICAgICAgfSwKLSAgICAg ICAgICAgICkKLSAgICAgICAgIDogKCkgKSwKLWRpZmYgLS1naXQgYS9TdG9yYWJsZS5wbSBiL1N0 b3JhYmxlLnBtCi1pbmRleCA4ZTZhYjI1Li5kNTMxZjJiIDEwMDY0NAotLS0tIGEvU3RvcmFibGUu cG0KLSsrKyBiL1N0b3JhYmxlLnBtCi1AQCAtMjgsNyArMjgsNyBAQCBvdXIgQEVYUE9SVF9PSyA9 IHF3KAotIG91ciAoJGNhbm9uaWNhbCwgJGZvcmdpdmVfbWUpOwotIAotIEJFR0lOIHsKLS0gIG91 ciAkVkVSU0lPTiA9ICczLjI1JzsKLSsgIG91ciAkVkVSU0lPTiA9ICczLjMyJzsKLSB9Ci0gCi0g b3VyICRyZWN1cnNpb25fbGltaXQ7Ci1AQCAtMTE5NywxMSArMTE5NywxNiBAQCBjb21wYXJ0bWVu dDoKLSAKLSA9aGVhZDEgU0VDVVJJVFkgV0FSTklORwotIAotLUI8RG8gbm90IGFjY2VwdCBTdG9y YWJsZSBkb2N1bWVudHMgZnJvbSB1bnRydXN0ZWQgc291cmNlcyE+Ci0rQjxEbyBub3QgYWNjZXB0 IFN0b3JhYmxlIGRvY3VtZW50cyBmcm9tIHVudHJ1c3RlZCBzb3VyY2VzIT4gVGhlcmUgaXMKLStC PG5vPiB3YXkgdG8gY29uZmlndXJlIFN0b3JhYmxlIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgc2Fm ZWx5IHRvIHByb2Nlc3MKLSt1bnRydXN0ZWQgZGF0YS4gIFdoaWxlIHRoZXJlIEk8YXJlPiB2YXJp b3VzIG9wdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0bwotK21pdGlnYXRlIHNwZWNpZmljIHNlY3Vy aXR5IGlzc3VlcyB0aGVzZSBvcHRpb25zIGRvIEk8bm90PiBjb21wcmlzZSBhCi0rY29tcGxldGUg c2FmZXR5IG5ldCBmb3IgdGhlIHVzZXIsIGFuZCBwcm9jZXNzaW5nIHVudHJ1c3RlZCBkYXRhIG1h eQotK3Jlc3VsdCBpbiBzZWdtZW50YXRpb24gZmF1bHRzLCByZW1vdGUgY29kZSBleGVjdXRpb24s IG9yIHByaXZpbGVnZQotK2VzY2FsYXRpb24uICBUaGUgZm9sbG93aW5nIGxpc3RzIHNvbWUga25v d24gZmVhdHVyZXMgd2hpY2ggcmVwcmVzZW50Ci0rc2VjdXJpdHkgaXNzdWVzIHRoYXQgc2hvdWxk IGJlIGNvbnNpZGVyZWQgYnkgdXNlcnMgb2YgdGhpcyBtb2R1bGUuCi0gCi0tU29tZSBmZWF0dXJl cyBvZiBTdG9yYWJsZSBjYW4gbGVhZCB0byBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgaWYgeW91 Ci0tYWNjZXB0IFN0b3JhYmxlIGRvY3VtZW50cyBmcm9tIHVudHJ1c3RlZCBzb3VyY2VzIHdpdGgg dGhlIGRlZmF1bHQKLS1mbGFncy4gTW9zdCBvYnZpb3VzbHksIHRoZSBvcHRpb25hbCAob2ZmIGJ5 IGRlZmF1bHQpIENPREUgcmVmZXJlbmNlCi0rTW9zdCBvYnZpb3VzbHksIHRoZSBvcHRpb25hbCAo b2ZmIGJ5IGRlZmF1bHQpIENPREUgcmVmZXJlbmNlCi0gc2VyaWFsaXphdGlvbiBmZWF0dXJlIGFs bG93cyB0cmFuc2ZlciBvZiBjb2RlIHRvIHRoZSBkZXNlcmlhbGl6aW5nCi0gcHJvY2Vzcy4gRnVy dGhlcm1vcmUsIGFueSBzZXJpYWxpemVkIG9iamVjdCB3aWxsIGNhdXNlIFN0b3JhYmxlIHRvCi0g aGVscGZ1bGx5IGxvYWQgdGhlIG1vZHVsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjbGFzcyBvZiB0 aGUgb2JqZWN0IGluCi1AQCAtMTIyNCwxMiArMTIyOSwxNSBAQCBXaXRoIHRoZSBkZWZhdWx0IHNl dHRpbmcgb2YgQzwkU3RvcmFibGU6OmZsYWdzPiA9IDYsIGNyZWF0aW5nIG9yIGRlc3Ryb3lpbmcK LSByYW5kb20gb2JqZWN0cywgZXZlbiByZW5hbWVkIG9iamVjdHMgY2FuIGJlIGNvbnRyb2xsZWQg YnkgYW4gYXR0YWNrZXIuCi0gU2VlIENWRS0yMDE1LTE1OTIgYW5kIGl0cyBtZXRhc3Bsb2l0IG1v ZHVsZS4KLSAKLS1JZiB5b3VyIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGFjY2VwdGluZyBkYXRhIGZy b20gdW50cnVzdGVkIHNvdXJjZXMsCi0teW91IGFyZSBiZXN0IG9mZiB3aXRoIGEgbGVzcyBwb3dl cmZ1bCBhbmQgbW9yZS1saWtlbHkgc2FmZQotLXNlcmlhbGl6YXRpb24gZm9ybWF0IGFuZCBpbXBs ZW1lbnRhdGlvbi4gSWYgeW91ciBkYXRhIGlzIHN1ZmZpY2llbnRseQotLXNpbXBsZSwgTDxDcGFu ZWw6OkpTT046OlhTPiwgTDxEYXRhOjpNZXNzYWdlUGFjaz4gb3IgTDxTZXJlYWw+IGFyZSB0aGUg YmVzdAotLWNob2ljZXMgYW5kIG9mZmVyIG1heGltdW0gaW50ZXJvcGVyYWJpbGl0eSwgYnV0IG5v dGUgdGhhdCBTZXJlYWwgaXMKLS1MPHVuc2FmZSBieSBkZWZhdWx0fFNlcmVhbDo6RGVjb2Rlci9S T0JVU1RORVNTPi4KLStJZiB5b3VyIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGFjY2VwdGluZyBkYXRh IGZyb20gdW50cnVzdGVkIHNvdXJjZXMsIHlvdQotK2FyZSBiZXN0IG9mZiB3aXRoIGEgbGVzcyBw b3dlcmZ1bCBhbmQgbW9yZS1saWtlbHkgc2FmZSBzZXJpYWxpemF0aW9uCi0rZm9ybWF0IGFuZCBp bXBsZW1lbnRhdGlvbi4gIElmIHlvdXIgZGF0YSBpcyBzdWZmaWNpZW50bHkgc2ltcGxlLAotK0w8 Q3BhbmVsOjpKU09OOjpYUz4gb3IgTDxEYXRhOjpNZXNzYWdlUGFjaz4gYXJlIGZpbmUgYWx0ZXJu YXRpdmVzLiAgRm9yCi0rbW9yZSBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIHZh cmlvdXMgUGVybCBzcGVjaWZpYyBkYXRhIHR5cGVzCi0rbGlrZSByZWd1bGFyIGV4cHJlc3Npb25z IG9yIGFsaWFzZWQgZGF0YSBMPFNlcmVhbD4gaXMgdGhlIGJlc3QKLSthbHRlcm5hdGl2ZSBhbmQg b2ZmZXJzIG1heGltdW0gaW50ZXJvcGVyYWJpbGl0eS4gIE5vdGUgdGhhdCBTZXJlYWwgaXMKLStM PHVuc2FmZSBieSBkZWZhdWx0fFNlcmVhbDo6RGVjb2Rlci9ST0JVU1RORVNTPiwgYnV0IHlvdSBj YW4gY29uZmlndXJlCi0rdGhlIGVuY29kZXIgYW5kIGRlY29kZXIgdG8gbWl0aWdhdGUgYW55IHNl Y3VyaXR5IGlzc3Vlcy4KLSAKLSA9aGVhZDEgV0FSTklORwotIAotZGlmZiAtLWdpdCBhL1N0b3Jh YmxlLnhzIGIvU3RvcmFibGUueHMKLWluZGV4IDY5NDRiNzYuLmE1NThkZDcgMTAwNjQ0Ci0tLS0g YS9TdG9yYWJsZS54cwotKysrIGIvU3RvcmFibGUueHMKLUBAIC0xNiwxOCArMTYsMTMgQEAKLSAj aW5jbHVkZSA8cGVybC5oPgotICNpbmNsdWRlIDxYU1VCLmg+Ci0gCi0tI2lmbmRlZiBQRVJMX1ZF UlNJT05fTFQKLS0jIGlmICFkZWZpbmVkKFBFUkxfVkVSU0lPTikgfHwgIWRlZmluZWQoUEVSTF9S RVZJU0lPTikgfHwgKCBQRVJMX1JFVklTSU9OID09IDUgJiYgKCBQRVJMX1ZFUlNJT04gPCAxMCB8 fCAoUEVSTF9WRVJTSU9OID09IDEwICYmIFBFUkxfU1VCVkVSU0lPTiA8IDEpICkgKQotLSMgICBk ZWZpbmUgTkVFRF9QTF9wYXJzZXIKLS0jICAgZGVmaW5lIE5FRURfc3ZfMnB2X2ZsYWdzCi0tIyAg IGRlZmluZSBORUVEX2xvYWRfbW9kdWxlCi0tIyAgIGRlZmluZSBORUVEX3Zsb2FkX21vZHVsZQot LSMgICBkZWZpbmUgTkVFRF9uZXdDT05TVFNVQgotLSMgICBkZWZpbmUgTkVFRF9uZXdTVnB2bl9m bGFncwotLSMgICBkZWZpbmUgTkVFRF9uZXdSVl9ub2luYwotLSMgZW5kaWYKLSsjZGVmaW5lIE5F RURfc3ZfMnB2X2ZsYWdzCi0rI2RlZmluZSBORUVEX2xvYWRfbW9kdWxlCi0rI2RlZmluZSBORUVE X3Zsb2FkX21vZHVsZQotKyNkZWZpbmUgTkVFRF9uZXdDT05TVFNVQgotKyNkZWZpbmUgTkVFRF9u ZXdTVnB2bl9mbGFncwotKyNkZWZpbmUgTkVFRF9uZXdSVl9ub2luYwotICNpbmNsdWRlICJwcHBv cnQuaCIgICAgICAgICAgICAgLyogaGFuZGxlIG9sZCBwZXJscyAqLwotLSNlbmRpZgotIAotICNp ZmRlZiBERUJVR0dJTkcKLSAjZGVmaW5lIERFQlVHTUUgLyogRGVidWcgbW9kZSwgdHVybnMgYXNz ZXJ0aW9ucyBvbiBhcyB3ZWxsICovCi1AQCAtMTc2LDcgKzE3MSw5IEBACi0gI2RlZmluZSBTWF9T VlVOREVGX0VMRU0JQygzMSkJLyogYXJyYXkgZWxlbWVudCBzZXQgdG8gJlBMX3N2X3VuZGVmICov Ci0gI2RlZmluZSBTWF9SRUdFWFAJQygzMikJLyogUmVnZXhwICovCi0gI2RlZmluZSBTWF9MT0JK RUNUCUMoMzMpCS8qIExhcmdlIG9iamVjdDogc3RyaW5nLCBhcnJheSBvciBoYXNoIChzaXplID4y RykgKi8KLS0jZGVmaW5lIFNYX0xBU1QJCUMoMzQpCS8qIGludmFsaWQuIG1hcmtlciBvbmx5ICov Ci0rI2RlZmluZSBTWF9CT09MRUFOX1RSVUUJQygzNCkJLyogQm9vbGVhbiB0cnVlICovCi0rI2Rl ZmluZSBTWF9CT09MRUFOX0ZBTFNFCUMoMzUpCS8qIEJvb2xlYW4gZmFsc2UgKi8KLSsjZGVmaW5l IFNYX0xBU1QJCUMoMzYpCS8qIGludmFsaWQuIG1hcmtlciBvbmx5ICovCi0gCi0gLyoKLSAgKiBU aG9zZSBhcmUgb25seSB1c2VkIHRvIHJldHJpZXZlICJvbGQiIHByZS0wLjYgYmluYXJ5IGltYWdl cy4KLUBAIC05NzUsNyArOTcyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgYnl0ZW9yZGVyc3RyXzU2 W10gPSB7QllURU9SREVSX0JZVEVTXzU2LCAwfTsKLSAjZW5kaWYKLSAKLSAjZGVmaW5lIFNUT1JB QkxFX0JJTl9NQUpPUgkyCQkvKiBCaW5hcnkgbWFqb3IgInZlcnNpb24iICovCi0tI2RlZmluZSBT VE9SQUJMRV9CSU5fTUlOT1IJMTEJCS8qIEJpbmFyeSBtaW5vciAidmVyc2lvbiIgKi8KLSsjZGVm aW5lIFNUT1JBQkxFX0JJTl9NSU5PUgkxMgkJLyogQmluYXJ5IG1pbm9yICJ2ZXJzaW9uIiAqLwot IAotICNpZiAhZGVmaW5lZCAoU3ZWT0spCi0gLyoKLUBAIC0xNDU0LDYgKzE0NTEsOCBAQCBzdGF0 aWMgY29uc3Qgc3ZfcmV0cmlldmVfdCBzdl9vbGRfcmV0cmlldmVbXSA9IHsKLSAgICAgKHN2X3Jl dHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsCS8qIFNYX1NWVU5ERUZfRUxFTSBub3Qgc3VwcG9ydGVk ICovCi0gICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLAkvKiBTWF9SRUdFWFAgKi8K LSAgICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsICAJLyogU1hfTE9CSkVDVCBub3Qg c3VwcG9ydGVkICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLAkvKiBTWF9C T09MRUFOX1RSVUUgbm90IHN1cHBvcnRlZCAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2 ZV9vdGhlciwJLyogU1hfQk9PTEVBTl9GQUxTRSBub3Qgc3VwcG9ydGVkICovCi0gICAgIChzdl9y ZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLCAgCS8qIFNYX0xBU1QgKi8KLSB9OwotIAotQEAgLTE0 NzcsNiArMTQ3Niw4IEBAIHN0YXRpYyBTViAqcmV0cmlldmVfd2Vha292ZXJsb2FkZWQocFRIWF8g c3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSk7Ci0gc3RhdGljIFNWICpyZXRyaWV2ZV92 c3RyaW5nKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUpOwotIHN0YXRpYyBT ViAqcmV0cmlldmVfbHZzdHJpbmcocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFt ZSk7Ci0gc3RhdGljIFNWICpyZXRyaWV2ZV9zdnVuZGVmX2VsZW0ocFRIWF8gc3RjeHRfdCAqY3h0 LCBjb25zdCBjaGFyICpjbmFtZSk7Ci0rc3RhdGljIFNWICpyZXRyaWV2ZV9ib29sZWFuX3RydWUo cFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSk7Ci0rc3RhdGljIFNWICpyZXRy aWV2ZV9ib29sZWFuX2ZhbHNlKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUp OwotIAotIHN0YXRpYyBjb25zdCBzdl9yZXRyaWV2ZV90IHN2X3JldHJpZXZlW10gPSB7Ci0gICAg IDAsCQkJCQkvKiBTWF9PQkpFQ1QgLS0gZW50cnkgdW51c2VkIGR5bmFtaWNhbGx5ICovCi1AQCAt MTUxMyw2ICsxNTE0LDggQEAgc3RhdGljIGNvbnN0IHN2X3JldHJpZXZlX3Qgc3ZfcmV0cmlldmVb XSA9IHsKLSAgICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfc3Z1bmRlZl9lbGVtLC8qIFNYX1NW VU5ERUZfRUxFTSAqLwotICAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9yZWdleHAsCS8qIFNY X1JFR0VYUCAqLwotICAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9sb2JqZWN0LAkvKiBTWF9M T0JKRUNUICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2Jvb2xlYW5fdHJ1ZSwJLyog U1hfQk9PTEVBTl9UUlVFICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2Jvb2xlYW5f ZmFsc2UsCS8qIFNYX0JPT0xFQU5fRkFMU0UgKi8KLSAgICAgKHN2X3JldHJpZXZlX3QpcmV0cmll dmVfb3RoZXIsICAJLyogU1hfTEFTVCAqLwotIH07Ci0gCi1AQCAtMjE4Nyw3ICsyMTkwLDcgQEAg c3RhdGljIEFWICphcnJheV9jYWxsKHBUSFhfCi0gICAgIFhQVVNIcyhzdl8ybW9ydGFsKG5ld1NW aXYoY2xvbmluZykpKTsJLyogQ2xvbmluZyBmbGFnICovCi0gICAgIFBVVEJBQ0s7Ci0gCi0tICAg IGNvdW50ID0gY2FsbF9zdihob29rLCBHX0FSUkFZKTsJLyogR28gYmFjayB0byBQZXJsIGNvZGUg Ki8KLSsgICAgY291bnQgPSBjYWxsX3N2KGhvb2ssIEdfTElTVCk7CS8qIEdvIGJhY2sgdG8gUGVy bCBjb2RlICovCi0gCi0gICAgIFNQQUdBSU47Ci0gCi1AQCAtMjQ1NCw2ICsyNDU3LDE2IEBAIHN0 YXRpYyBpbnQgc3RvcmVfc2NhbGFyKHBUSFhfIHN0Y3h0X3QgKmN4dCwgU1YgKnN2KQotICAgICAg ICAgICAgIHB2ID0gU3ZQVihzdiwgbGVuKTsJCS8qIFdlIGtub3cgaXQncyBTdlBPSyAqLwotICAg ICAgICAgICAgIGdvdG8gc3RyaW5nOwkJCS8qIFNoYXJlIGNvZGUgYmVsb3cgKi8KLSAgICAgICAg IH0KLSsjaWZkZWYgU3ZJc0JPT0wKLSsgICAgfSBlbHNlIGlmIChTdklzQk9PTChzdikpIHsKLSsg ICAgICAgIFRSQUNFTUUoKCJtb3J0YWwgYm9vbGVhbiIpKTsKLSsgICAgICAgIGlmIChTdlRSVUVf bm9tZ19OTihzdikpIHsKLSsgICAgICAgICAgICBQVVRNQVJLKFNYX0JPT0xFQU5fVFJVRSk7Ci0r ICAgICAgICB9Ci0rICAgICAgICBlbHNlIHsKLSsgICAgICAgICAgICBQVVRNQVJLKFNYX0JPT0xF QU5fRkFMU0UpOwotKyAgICAgICAgfQotKyNlbmRpZgotICAgICB9IGVsc2UgaWYgKGZsYWdzICYg U1ZmX1BPSykgewotICAgICAgICAgLyogcHVibGljIHN0cmluZyAtIGdvIGRpcmVjdCB0byBzdHJp bmcgcmVhZC4gICovCi0gICAgICAgICBnb3RvIHN0cmluZ19yZWFkbGVuOwotQEAgLTMyNTAsNiAr MzI2Myw3IEBAIHN0YXRpYyBpbnQgc3RvcmVfY29kZShwVEhYXyBzdGN4dF90ICpjeHQsIENWICpj dikKLSAgICAgICAgIENST0FLKCgiVW5leHBlY3RlZCByZXR1cm4gdmFsdWUgZnJvbSBCOjpEZXBh cnNlOjpjb2RlcmVmMnRleHRcbiIpKTsKLSAKLSAgICAgdGV4dCA9IFBPUHM7Ci0rICAgIFBVVEJB Q0s7Ci0gICAgIGxlbiA9IFN2Q1VSKHRleHQpOwotICAgICByZWFsbGVuID0gc3RybGVuKFN2UFZf bm9sZW4odGV4dCkpOwotIAotQEAgLTMzMTgsNyArMzMzMiw3IEBAIHN0YXRpYyBpbnQgZ2V0X3Jl Z2V4cChwVEhYXyBzdGN4dF90ICpjeHQsIFNWKiBzdiwgU1YgKipyZSwgU1YgKipmbGFncykgewot ICAgICBYUFVTSHMocnYpOwotICAgICBQVVRCQUNLOwotICAgICAvKiBvcHRpbWl6ZSB0byBjYWxs IHRoZSBYUyBkaXJlY3RseSBsYXRlciAqLwotLSAgICBjb3VudCA9IGNhbGxfc3YoKFNWKiljdiwg R19BUlJBWSk7Ci0rICAgIGNvdW50ID0gY2FsbF9zdigoU1YqKWN2LCBHX0xJU1QpOwotICAgICBT UEFHQUlOOwotICAgICBpZiAoY291bnQgPCAyKQotICAgICAgIENST0FLKCgicmU6OnJlZ2V4cF9w YXR0ZXJuIHJldHVybmVkIG9ubHkgJWQgcmVzdWx0cyIsIChpbnQpY291bnQpKTsKLUBAIC0zNTY3 LDcgKzM1ODEsMTAgQEAgc3RhdGljIGludCBzdG9yZV9ob29rKAotICAgICBpbnQgbmVlZF9sYXJn ZV9vaWRzID0gMDsKLSAjZW5kaWYKLSAKLS0gICAgVFJBQ0VNRSgoInN0b3JlX2hvb2ssIGNsYXNz bmFtZSBcIiVzXCIsIHRhZ2dlZCAjJWQiLCBIdk5BTUVfZ2V0KHBrZyksIChpbnQpY3h0LT50YWdu dW0pKTsKLSsgICAgY2xhc3NuYW1lID0gSHZOQU1FX2dldChwa2cpOwotKyAgICBsZW4gPSBzdHJs ZW4oY2xhc3NuYW1lKTsKLSsKLSsgICAgVFJBQ0VNRSgoInN0b3JlX2hvb2ssIGNsYXNzbmFtZSBc IiVzXCIsIHRhZ2dlZCAjJWQiLCBjbGFzc25hbWUsIChpbnQpY3h0LT50YWdudW0pKTsKLSAKLSAg ICAgLyoKLSAgICAgICogRGV0ZXJtaW5lIG9iamVjdCB0eXBlIG9uIDIgYml0cy4KLUBAIC0zNTc2 LDYgKzM1OTMsNyBAQCBzdGF0aWMgaW50IHN0b3JlX2hvb2soCi0gICAgIHN3aXRjaCAodHlwZSkg ewotICAgICBjYXNlIHN2aXNfUkVGOgotICAgICBjYXNlIHN2aXNfU0NBTEFSOgotKyAgICBjYXNl IHN2aXNfUkVHRVhQOgotICAgICAgICAgb2JqX3R5cGUgPSBTSFRfU0NBTEFSOwotICAgICAgICAg YnJlYWs7Ci0gICAgIGNhc2Ugc3Zpc19BUlJBWToKLUBAIC0zNjE1LDEzICszNjMzLDIwIEBAIHN0 YXRpYyBpbnQgc3RvcmVfaG9vaygKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBk ZWZhdWx0OgotLSAgICAgICAgQ1JPQUsoKCJVbmV4cGVjdGVkIG9iamVjdCB0eXBlICglZCkgaW4g c3RvcmVfaG9vaygpIiwgdHlwZSkpOwotKyAgICAgICAgewotKyAgICAgICAgICAgIC8qIHBrZ19j YW4oKSBhbHdheXMgcmV0dXJucyBhIHJlZiB0byBhIENWIG9uIHN1Y2Nlc3MgKi8KLSsgICAgICAg ICAgICBDViAqY3YgPSAoQ1YqKVN2UlYoaG9vayk7Ci0rICAgICAgICAgICAgY29uc3QgR1YgKiBj b25zdCBndiA9IEN2R1YoY3YpOwotKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmd2bmFtZSA9IEd2 TkFNRShndik7Ci0rICAgICAgICAgICAgY29uc3QgSFYgKiBjb25zdCBzdGFzaCA9IEd2U1RBU0go Z3YpOwotKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmh2bmFtZSA9IHN0YXNoID8gSHZOQU1FKHN0 YXNoKSA6IE5VTEw7Ci0rCi0rICAgICAgICAgICAgQ1JPQUsoKCJVbmV4cGVjdGVkIG9iamVjdCB0 eXBlICglcykgb2YgY2xhc3MgJyVzJyBpbiBzdG9yZV9ob29rKCkgY2FsbGluZyAlczo6JXMiLAot KyAgICAgICAgICAgICAgICAgICBzdl9yZWZ0eXBlKHN2LCBGQUxTRSksIGNsYXNzbmFtZSwgaHZu YW1lLCBndm5hbWUpKTsKLSsgICAgICAgIH0KLSAgICAgfQotICAgICBmbGFncyA9IFNIRl9ORUVE X1JFQ1VSU0UgfCBvYmpfdHlwZTsKLSAKLS0gICAgY2xhc3NuYW1lID0gSHZOQU1FX2dldChwa2cp OwotLSAgICBsZW4gPSBzdHJsZW4oY2xhc3NuYW1lKTsKLS0KLSAgICAgLyoKLSAgICAgICogVG8g Y2FsbCB0aGUgaG9vaywgd2UgbmVlZCB0byBmYWtlIGEgY2FsbCBsaWtlOgotICAgICAgKgotQEAg LTU4ODIsNiArNTkwNyw1MCBAQCBzdGF0aWMgU1YgKnJldHJpZXZlX2ludGVnZXIocFRIWF8gc3Rj eHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkKLSAgICAgcmV0dXJuIHN2OwotIH0KLSAKLSsv KgotKyAqIHJldHJpZXZlX2Jvb2xlYW5fdHJ1ZQotKyAqCi0rICogUmV0cmlldmUgYm9vbGVhbiB0 cnVlIGNvcHkuCi0rICovCi0rc3RhdGljIFNWICpyZXRyaWV2ZV9ib29sZWFuX3RydWUocFRIWF8g c3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkKLSt7Ci0rICAgIFNWICpzdjsKLSsgICAg SFYgKnN0YXNoOwotKwotKyAgICBUUkFDRU1FKCgicmV0cmlldmVfYm9vbGVhbl90cnVlICgjJWQp IiwgKGludCljeHQtPnRhZ251bSkpOwotKwotKyAgICBzdiA9IG5ld1NWc3YoJlBMX3N2X3llcyk7 Ci0rICAgIHN0YXNoID0gY25hbWUgPyBndl9zdGFzaHB2KGNuYW1lLCBHVl9BREQpIDogMDsKLSsg ICAgU0VFTl9OTihzdiwgc3Rhc2gsIDApOyAgLyogQXNzb2NpYXRlIHRoaXMgbmV3IHNjYWxhciB3 aXRoIHRhZyAidGFnbnVtIiAqLwotKwotKyAgICBUUkFDRU1FKCgiYm9vbGVhbiB0cnVlIikpOwot KyAgICBUUkFDRU1FKCgib2sgKHJldHJpZXZlX2Jvb2xlYW5fdHJ1ZSBhdCAweCUiIFVWeGYgIiki LCBQVFIyVVYoc3YpKSk7Ci0rCi0rICAgIHJldHVybiBzdjsKLSt9Ci0rCi0rLyoKLSsgKiByZXRy aWV2ZV9ib29sZWFuX2ZhbHNlCi0rICoKLSsgKiBSZXRyaWV2ZSBib29sZWFuIGZhbHNlIGNvcHku Ci0rICovCi0rc3RhdGljIFNWICpyZXRyaWV2ZV9ib29sZWFuX2ZhbHNlKHBUSFhfIHN0Y3h0X3Qg KmN4dCwgY29uc3QgY2hhciAqY25hbWUpCi0rewotKyAgICBTViAqc3Y7Ci0rICAgIEhWICpzdGFz aDsKLSsKLSsgICAgVFJBQ0VNRSgoInJldHJpZXZlX2Jvb2xlYW5fZmFsc2UgKCMlZCkiLCAoaW50 KWN4dC0+dGFnbnVtKSk7Ci0rCi0rICAgIHN2ID0gbmV3U1ZzdigmUExfc3Zfbm8pOwotKyAgICBz dGFzaCA9IGNuYW1lID8gZ3Zfc3Rhc2hwdihjbmFtZSwgR1ZfQUREKSA6IDA7Ci0rICAgIFNFRU5f Tk4oc3YsIHN0YXNoLCAwKTsgIC8qIEFzc29jaWF0ZSB0aGlzIG5ldyBzY2FsYXIgd2l0aCB0YWcg InRhZ251bSIgKi8KLSsKLSsgICAgVFJBQ0VNRSgoImJvb2xlYW4gZmFsc2UiKSk7Ci0rICAgIFRS QUNFTUUoKCJvayAocmV0cmlldmVfYm9vbGVhbl9mYWxzZSBhdCAweCUiIFVWeGYgIikiLCBQVFIy VVYoc3YpKSk7Ci0rCi0rICAgIHJldHVybiBzdjsKLSt9Ci0rCi0gLyoKLSAgKiByZXRyaWV2ZV9s b2JqZWN0Ci0gICoKLUBAIC03Nzc0LDcgKzc4NDMsNyBAQCBDT0RFOgotICAgICAgICAgYXNzZXJ0 KGN4dCk7Ci0gICAgICAgICByZXN1bHQgPSBjeHQtPmVudHJ5ICYmIChjeHQtPm9wdHlwZSAmIGl4 KSA/IFRSVUUgOiBGQUxTRTsKLSAgICAgfSBlbHNlIHsKLS0gICAgICAgIHJlc3VsdCA9ICEhbGFz dF9vcF9pbl9uZXRvcmRlcihhVEhYKTsKLSsgICAgICAgIHJlc3VsdCA9IGNCT09MKGxhc3Rfb3Bf aW5fbmV0b3JkZXIoYVRIWCkpOwotICAgICB9Ci0gICAgIFNUKDApID0gYm9vbFNWKHJlc3VsdCk7 Ci0gCi1kaWZmIC0tZ2l0IGEvdC9ibGVzc2VkLnQgYi90L2JsZXNzZWQudAotaW5kZXggZDlhNzdi My4uZGVhNTY5YiAxMDA2NDQKLS0tLSBhL3QvYmxlc3NlZC50Ci0rKysgYi90L2JsZXNzZWQudAot QEAgLTQ0LDcgKzQ0LDcgQEAgdXNlIFN0b3JhYmxlIHF3KGZyZWV6ZSB0aGF3IHN0b3JlIHJldHJp ZXZlIGZkX3JldHJpZXZlKTsKLSAgICAnbG9uZyBWU1RSSU5HJyA9PiBcKG15ICRsdnN0cmluZyA9 IGV2YWwgInYiIC4gMCB4IDMwMCksCi0gICAgTFZBTFVFICAgICAgICAgPT4gXChteSAkc3Vic3Ry ICA9IHN1YnN0cigobXkgJHN0ciA9ICJmb28iKSwgMCwgMykpKTsKLSAKLS1teSAkdGVzdCA9IDEz OwotK215ICR0ZXN0ID0gMTg7Ci0gbXkgJHRlc3RzID0gJHRlc3QgKyA0MSArICgyICogNiAqIGtl eXMgJTo6aW1tb3J0YWxzKSArICgzICoga2V5cyAlOjp3ZWlyZF9yZWZzKTsKLSBwbGFuKHRlc3Rz ID0+ICR0ZXN0cyk7Ci0gCi1AQCAtNDE0LDMgKzQxNCw1NCBAQCBpcyhyZWYgJHQsICdTVFJFU1Nf VEhFX1NUQUNLJyk7Ci0gCi0gICAgIHVubGluaygic3RvcmUkJCIpOwotIH0KLSsKLSt7Ci0rICAg ICMgdHJ5aW5nIHRvIGZyZWV6ZSBhIGdsb2IgdmlhIFNUT1JBQkxFX2ZyZWV6ZQotKyAgICB7Ci0r ICAgICAgICBwYWNrYWdlIEdsb2JIb29rZWRCYXNlOwotKwotKyAgICAgICAgc3ViIFNUT1JBQkxF X2ZyZWV6ZSB7Ci0rICAgICAgICAgICAgcmV0dXJuIFwxOwotKyAgICAgICAgfQotKwotKyAgICAg ICAgcGFja2FnZSBHbG9iSG9va2VkOwotKyAgICAgICAgb3VyIEBJU0EgPSAiR2xvYkhvb2tlZEJh c2UiOwotKyAgICB9Ci0rICAgIHVzZSBTeW1ib2wgKCk7Ci0rICAgIG15ICRnbG9iID0gYmxlc3Mg U3ltYm9sOjpnZW5zeW0oKSwgIkdsb2JIb29rZWQiOwotKyAgICBldmFsIHsKLSsgICAgICAgIG15 ICRkYXRhID0gZnJlZXplKCRnbG9iKTsKLSsgICAgfTsKLSsgICAgbXkgJG1zZyA9ICRAOwotKyAg ICBsaWtlKCRtc2csIHFyL1VuZXhwZWN0ZWQgb2JqZWN0IHR5cGUgXChHTE9CXCkgb2YgY2xhc3Mg J0dsb2JIb29rZWQnIGluIHN0b3JlX2hvb2tcKFwpIGNhbGxpbmcgR2xvYkhvb2tlZEJhc2U6OlNU T1JBQkxFX2ZyZWV6ZS8sCi0rICAgICAgICAgImNoZWNrIHdlIGdldCB0aGUgdmVyYm9zZSBtZXNz YWdlIik7Ci0rfQotKwotK1NLSVA6Ci0rewotKyAgICAkXSA8IDUuMDEyCi0rICAgICAgYW5kIHNr aXAgIkNhbid0IGFzc2lnbiByZWdleHBzIGRpcmVjdGx5IGJlZm9yZSA1LjEyIiwgNDsKLSsgICAg bXkgJGhvb2tfY2FsbGVkOwotKyAgICAjIHN0b3JlIHJlZ2V4cCB2aWEgaG9vawotKyAgICB7Ci0r ICAgICAgICBwYWNrYWdlIFJlZ2V4cEhvb2tlZDsKLSsgICAgICAgIHN1YiBTVE9SQUJMRV9mcmVl emUgewotKyAgICAgICAgICAgICsrJGhvb2tfY2FsbGVkOwotKyAgICAgICAgICAgICIkX1swXSI7 Ci0rICAgICAgICB9Ci0rICAgICAgICBzdWIgU1RPUkFCTEVfdGhhdyB7Ci0rICAgICAgICAgICAg bXkgKCRvYmosICRjbG9uaW5nLCAkc2VyaWFsaXplZCkgPSBAXzsKLSsgICAgICAgICAgICArKyRo b29rX2NhbGxlZDsKLSsgICAgICAgICAgICAkJG9iaiA9ICR7IHFyLyRzZXJpYWxpemVkLyB9Owot KyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIG15ICRvYmogPSBibGVzcyBxci9hYmMvLCAiUmVn ZXhwSG9va2VkIjsKLSsgICAgbXkgJGRhdGEgPSBmcmVlemUoJG9iaik7Ci0rICAgIG9rKCRkYXRh LCAiZnJvemUgcmVnZXhwIGJsZXNzZWQgaW50byBob29rZWQgY2xhc3MiKTsKLSsgICAgb2soJGhv b2tfY2FsbGVkLCAiYW5kIHRoZSBob29rIHdhcyBhY3R1YWxseSBjYWxsZWQiKTsKLSsgICAgJGhv b2tfY2FsbGVkID0gMDsKLSsgICAgbXkgJG9ial90aGF3ZWQgPSB0aGF3KCRkYXRhKTsKLSsgICAg b2soJGhvb2tfY2FsbGVkLCAiaG9vayBjYWxsZWQgZm9yIHRoYXciKTsKLSsgICAgbGlrZSgiYWJj IiwgJG9ial90aGF3ZWQsICJjaGVjayB0aGUgcmVnZXhwIik7Ci0rfQotZGlmZiAtLWdpdCBhL3Qv Ym9vbGVhbi50IGIvdC9ib29sZWFuLnQKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi45YmExOWMwCi0tLS0gL2Rldi9udWxsCi0rKysgYi90L2Jvb2xlYW4udAotQEAgLTAsMCAr MSw4NCBAQAotK3VzZSBzdHJpY3Q7Ci0rdXNlIHdhcm5pbmdzOwotKwotK215ICR0cnVlX3JlZjsK LStteSAkZmFsc2VfcmVmOwotK0JFR0lOIHsKLSsgICAgJHRydWVfcmVmID0gXCEhMTsKLSsgICAg JGZhbHNlX3JlZiA9IFwhITA7Ci0rfQotKwotK0JFR0lOIHsKLSsgICAgdW5zaGlmdCBASU5DLCAn dCc7Ci0rICAgIHVuc2hpZnQgQElOQywgJ3QvY29tcGF0JyBpZiAkXSA8IDUuMDA2MDAyOwotKyAg ICByZXF1aXJlIENvbmZpZzsKLSsgICAgaWYgKCRFTlZ7UEVSTF9DT1JFfSBhbmQgJENvbmZpZzo6 Q29uZmlneydleHRlbnNpb25zJ30gIX4gL1xiU3RvcmFibGVcYi8pIHsKLSsgICAgICAgIHByaW50 ICIxLi4wICMgU2tpcDogU3RvcmFibGUgd2FzIG5vdCBidWlsdFxuIjsKLSsgICAgICAgIGV4aXQg MDsKLSsgICAgfQotK30KLSsKLSt1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAxMjsKLSt1c2UgU3Rv cmFibGUgcXcodGhhdyBmcmVlemUpOwotKwotK3VzZSBjb25zdGFudCBDT1JFX0JPT0xTID0+IGRl ZmluZWQgJmJ1aWx0aW46OmlzX2Jvb2w7Ci0rCi0rewotKyAgbXkgJHggPSAkdHJ1ZV9yZWY7Ci0r ICBteSAkeSA9ICR7dGhhdyBmcmVlemUgXCR4fTsKLSsgIGlzKCR5LCAkeCk7Ci0rICBldmFsIHsK LSsgICAgJCR5ID0gMjsKLSsgIH07Ci0rICBpc250ICRALCAnJywKLSsgICAgJ2ltbW9ydGFsIHRy dWUgbWFpbnRhaW5lZCBhcyBpbW1vcnRhbCc7Ci0rfQotKwotK3sKLSsgIG15ICR4ID0gJGZhbHNl X3JlZjsKLSsgIG15ICR5ID0gJHt0aGF3IGZyZWV6ZSBcJHh9OwotKyAgaXMoJHksICR4KTsKLSsg IGV2YWwgewotKyAgICAkJHkgPSAyOwotKyAgfTsKLSsgIGlzbnQgJEAsICcnLAotKyAgICAnaW1t b3J0YWwgZmFsc2UgbWFpbnRhaW5lZCBhcyBpbW1vcnRhbCc7Ci0rfQotKwotK3sKLSsgIG15ICR0 cnVlID0gJCR0cnVlX3JlZjsKLSsgIG15ICR4ID0gXCR0cnVlOwotKyAgbXkgJHkgPSAke3RoYXcg ZnJlZXplIFwkeH07Ci0rICBpcygkJHksICQkeCk7Ci0rICBpcygkJHksICcxJyk7Ci0rICBTS0lQ OiB7Ci0rICAgIHNraXAgInBlcmwgJF0gZG9lcyBub3Qgc3VwcG9ydCB0cmFja2luZyBib29sZWFu IHZhbHVlcyIsIDEKLSsgICAgICB1bmxlc3MgQ09SRV9CT09MUzsKLSsgICAgQkVHSU4geyBDT1JF X0JPT0xTIGFuZCB3YXJuaW5ncy0+dW5pbXBvcnQoJ2V4cGVyaW1lbnRhbDo6YnVpbHRpbicpIH0K LSsgICAgb2sgYnVpbHRpbjo6aXNfYm9vbCgkJHkpOwotKyAgfQotKyAgZXZhbCB7Ci0rICAgICQk eSA9IDI7Ci0rICB9OwotKyAgaXMgJEAsICcnLAotKyAgICAnbW9ydGFsIHRydWUgbWFpbnRhaW5l ZCBhcyBtb3J0YWwnOwotK30KLSsKLSt7Ci0rICBteSAkZmFsc2UgPSAkJGZhbHNlX3JlZjsKLSsg IG15ICR4ID0gXCRmYWxzZTsKLSsgIG15ICR5ID0gJHt0aGF3IGZyZWV6ZSBcJHh9OwotKyAgaXMo JCR5LCAkJHgpOwotKyAgaXMoJCR5LCAnJyk7Ci0rICBTS0lQOiB7Ci0rICAgIHNraXAgInBlcmwg JF0gZG9lcyBub3Qgc3VwcG9ydCB0cmFja2luZyBib29sZWFuIHZhbHVlcyIsIDEKLSsgICAgICB1 bmxlc3MgQ09SRV9CT09MUzsKLSsgICAgQkVHSU4geyBDT1JFX0JPT0xTIGFuZCB3YXJuaW5ncy0+ dW5pbXBvcnQoJ2V4cGVyaW1lbnRhbDo6YnVpbHRpbicpIH0KLSsgICAgb2sgYnVpbHRpbjo6aXNf Ym9vbCgkJHkpOwotKyAgfQotKyAgZXZhbCB7Ci0rICAgICQkeSA9IDI7Ci0rICB9OwotKyAgaXMg JEAsICcnLAotKyAgICAnbW9ydGFsIHRydWUgbWFpbnRhaW5lZCBhcyBtb3J0YWwnOwotK30KLWRp ZmYgLS1naXQgYS90L21hbGljZS50IGIvdC9tYWxpY2UudAotaW5kZXggOGFkYWU5NS4uN2I5MmQz ZCAxMDA2NDQKLS0tLSBhL3QvbWFsaWNlLnQKLSsrKyBiL3QvbWFsaWNlLnQKLUBAIC0zMiw3ICsz Miw3IEBAIG91ciAkZmlsZV9tYWdpY19zdHIgPSAncHN0MCc7Ci0gb3VyICRvdGhlcl9tYWdpYyA9 IDcgKyBsZW5ndGggJGJ5dGVvcmRlcjsKLSBvdXIgJG5ldHdvcmtfbWFnaWMgPSAyOwotIG91ciAk bWFqb3IgPSAyOwotLW91ciAkbWlub3IgPSAxMTsKLStvdXIgJG1pbm9yID0gMTI7Ci0gb3VyICRt aW5vcl93cml0ZSA9ICRdID49IDUuMDE5ID8gMTEgOiAkXSA+IDUuMDA4ID8gOSA6ICRdID4gNS4w MDVfNTAgPyA4IDogNDsKLSAKLSB1c2UgVGVzdDo6TW9yZTsKLUBAIC0yMDYsNyArMjA2LDcgQEAg c3ViIHRlc3RfdGhpbmdzIHsKLSAgICAgJHdoZXJlID0gJGZpbGVfbWFnaWMgKyAkbmV0d29ya19t YWdpYzsKLSAgIH0KLSAKLS0gICMgSnVzdCB0aGUgaGVhZGVyIGFuZCBhIHRhZyAyNTUuIEFzIDMz IGlzIGN1cnJlbnRseSB0aGUgaGlnaGVzdCB0YWcsIHRoaXMKLSsgICMgSnVzdCB0aGUgaGVhZGVy IGFuZCBhIHRhZyAyNTUuIEFzIDM0IGlzIGN1cnJlbnRseSB0aGUgaGlnaGVzdCB0YWcsIHRoaXMK LSAgICMgaXMgInVuZXhwZWN0ZWQiCi0gICAkY29weSA9IHN1YnN0ciAoJGNvbnRlbnRzLCAwLCAk d2hlcmUpIC4gY2hyIDI1NTsKLSAKLUBAIC0yMjYsNyArMjI2LDcgQEAgc3ViIHRlc3RfdGhpbmdz IHsKLSAgICMgbG9jYWwgJFN0b3JhYmxlOjpERUJVR01FID0gMTsKLSAgICMgVGhpcyBpcyB0aGUg ZGVsYXllZCBjcm9hawotICAgdGVzdF9jb3JydXB0ICgkY29weSwgJHN1YiwKLS0gICAgICAgICAg ICAgICAgIi9eU3RvcmFibGUgYmluYXJ5IGltYWdlIHYkaGVhZGVyLT57bWFqb3J9LiRtaW5vcjYg Y29udGFpbnMgZGF0YSBvZiB0eXBlIDI1NS4gVGhpcyBTdG9yYWJsZSBpcyB2JGhlYWRlci0+e21h am9yfS4kbWlub3IgYW5kIGNhbiBvbmx5IGhhbmRsZSBkYXRhIHR5cGVzIHVwIHRvIDMzLyIsCi0r ICAgICAgICAgICAgICAgICIvXlN0b3JhYmxlIGJpbmFyeSBpbWFnZSB2JGhlYWRlci0+e21ham9y fS4kbWlub3I2IGNvbnRhaW5zIGRhdGEgb2YgdHlwZSAyNTUuIFRoaXMgU3RvcmFibGUgaXMgdiRo ZWFkZXItPnttYWpvcn0uJG1pbm9yIGFuZCBjYW4gb25seSBoYW5kbGUgZGF0YSB0eXBlcyB1cCB0 byAzNS8iLAotICAgICAgICAgICAgICAgICAiYm9ndXMgdGFnLCBtaW5vciBwbHVzIDQiKTsKLSAg ICMgQW5kIGNoZWNrIGFnYWluIHRoYXQgdGhpcyBjcm9hayBpcyBub3QgZGVsYXllZDoKLSAgIHsK LS0tIAotMi40MC4xCi0KCmRpZmYgLS1naXQgYS9TdG9yYWJsZS0zLjMyLVVwZ3JhZGUtdG8tMy4z Ny5wYXRjaCBiL1N0b3JhYmxlLTMuMzItVXBncmFkZS10by0zLjM3LnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBlOTZmMmY4Li4wMDAwMDAwCi0tLSBhL1N0b3JhYmxlLTMuMzIt VXBncmFkZS10by0zLjM3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM5NTggKzAsMCBAQAot RnJvbSAwZDY1Zjk4ZGM3NTY2MWIzNjI5Y2Q0NjYwZjVjMWI4NTY1ZjZiMWEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogSml0a2EgUGxlc25pa292YSA8anBsZXNuaWtAcmVkaGF0LmNv bT4KLURhdGU6IFdlZCwgMzAgQXByIDIwMjUgMTg6Mzc6MzAgKzAyMDAKLVN1YmplY3Q6IFtQQVRD SF0gVXBncmFkZSB0byAzLjM3Ci0KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg ICB8IDE4MTAgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSBNQU5JRkVTVCAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDY1IC0tCi0gTUFOSUZFU1QuU0tJUCAgICAgICAgICAgICAg ICAgIHwgICA1OCArCi0gTUVUQS5qc29uICAgICAgICAgICAgICAgICAgICAgIHwgICA1OCAtCi0g TUVUQS55bWwgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMCAtCi0gTWFrZWZpbGUuUEwgICAg ICAgICAgICAgICAgICAgIHwgICA5NSArLQotIFJFQURNRSAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KLSBTdG9yYWJsZS54cyAgICAgICAgICAgICAgICAgICAgfCAxMzg4ICsrKysr KysrKysrKy0tLS0tLS0tLS0tLQotIGhpbnRzL2hwdXgucGwgICAgICAgICAgICAgICAgICB8ICAg IDQgKy0KLSBoaW50cy9saW51eC5wbCAgICAgICAgICAgICAgICAgfCAgICAyICstCi0gU3RvcmFi bGUucG0gPT4gbGliL1N0b3JhYmxlLnBtIHwgIDMzNCArKystLS0KLSBzdGFja3NpemUgICAgICAg ICAgICAgICAgICAgICAgfCAgICA2ICstCi0gdC9DVkUtMjAxNS0xNTkyLnQgICAgICAgICAgICAg IHwgICAgNSArLQotIHQvSEFTX0FUVEFDSC5wbSAgICAgICAgICAgICAgICB8ICAgMTAgLQotIHQv SEFTX0hPT0sucG0gICAgICAgICAgICAgICAgICB8ICAgIDkgLQotIHQvSEFTX09WRVJMT0FELnBt ICAgICAgICAgICAgICB8ICAgMTQgLQotIHQvYXR0YWNoLnQgICAgICAgICAgICAgICAgICAgICB8 ICAgNTUgKy0KLSB0L2F0dGFjaF9lcnJvcnMudCAgICAgICAgICAgICAgfCAgMzgxICsrKystLS0K LSB0L2F0dGFjaF9zaW5nbGV0b24udCAgICAgICAgICAgfCAgIDM5ICstCi0gdC9ibGVzc2VkLnQg ICAgICAgICAgICAgICAgICAgIHwgIDE3MiArLS0KLSB0L2Jvb2xlYW4udCAgICAgICAgICAgICAg ICAgICAgfCAgMTA2ICstCi0gdC9jYW5vbmljYWwudCAgICAgICAgICAgICAgICAgIHwgIDEwMSAr LQotIHQvY2lyY3VsYXJfaG9vay50ICAgICAgICAgICAgICB8ICAgMzcgKy0KLSB0L2NvZGUudCAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTczICsrLQotIHQvY29tcGF0MDEudCAgICAgICAgICAg ICAgICAgICB8ICAgMTggKy0KLSB0L2NvbXBhdDA2LnQgICAgICAgICAgICAgICAgICAgfCAgMTA1 ICstCi0gdC9jcm9hay50ICAgICAgICAgICAgICAgICAgICAgIHwgICAzMCArLQotIHQvZGNsb25l LnQgICAgICAgICAgICAgICAgICAgICB8ICAgNDcgKy0KLSB0L2Rlc3Ryb3kudCAgICAgICAgICAg ICAgICAgICAgfCAgIDE1ICstCi0gdC9kb3duZ3JhZGUudCAgICAgICAgICAgICAgICAgIHwgIDI3 NyArKystLQotIHQvZmlsZV9tYWdpYy50ICAgICAgICAgICAgICAgICB8ICA0NzggKysrKystLS0t Ci0gdC9mbGFncy50ICAgICAgICAgICAgICAgICAgICAgIHwgIDEyNiArLS0KLSB0L2ZvcmdpdmUu dCAgICAgICAgICAgICAgICAgICAgfCAgIDI1ICstCi0gdC9mcmVlemUudCAgICAgICAgICAgICAg ICAgICAgIHwgICA4MyArLQotIHQvaHVnZS50ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDQg Ky0KLSB0L2h1Z2VpZHMudCAgICAgICAgICAgICAgICAgICAgfCAgMzAxICsrKy0tLQotIHQvaW50 ZWdlci50ICAgICAgICAgICAgICAgICAgICB8ICAyMzMgKystLQotIHQvaW50ZXJ3b3JrNTYudCAg ICAgICAgICAgICAgICB8ICAgNDIgKy0KLSB0L2p1c3RfcGxhaW5fbmFzdHkudCAgICAgICAgICAg fCAgIDU2ICstCi0gdC9sZWFrcy50ICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArLQotIHQv bGliL0hBU19IT09LLnBtICAgICAgICAgICAgICB8ICAgMTQgKwotIHQvbGliL0hBU19PVkVSTE9B RC5wbSAgICAgICAgICB8ICAgMTggKwotIHQvbGliL1NURHVtcC5wbSAgICAgICAgICAgICAgICB8 ICAxMzggKysrCi0gdC9saWIvU1RUZXN0TGliLnBtICAgICAgICAgICAgIHwgICAzOSArCi0gdC9s b2NrLnQgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNCArLQotIHQvbWFrZV81Nl9pbnRlcndv cmsucGwgICAgICAgICB8ICAgMjYgKy0KLSB0L21ha2VfZG93bmdyYWRlLnBsICAgICAgICAgICAg fCAgIDI1ICstCi0gdC9tYWtlX292ZXJsb2FkLnBsICAgICAgICAgICAgIHwgICAgMyArLQotIHQv bWFsaWNlLnQgICAgICAgICAgICAgICAgICAgICB8ICAzNzIgKysrLS0tLQotIHQvb3ZlcmxvYWQu dCAgICAgICAgICAgICAgICAgICB8ICAgNjUgKy0KLSB0L3JlY3Vyc2UudCAgICAgICAgICAgICAg ICAgICAgfCAgIDM5ICstCi0gdC9yZWdleHAudCAgICAgICAgICAgICAgICAgICAgIHwgICAyOCAr LQotIHQvcmVzdHJpY3QudCAgICAgICAgICAgICAgICAgICB8ICAxMjAgKy0tCi0gdC9yZXRyaWV2 ZS50ICAgICAgICAgICAgICAgICAgIHwgICAyMiArLQotIHQvcm9idXN0LnQgICAgICAgICAgICAg ICAgICAgICB8ICAgIDUgKy0KLSB0L3NpZ19kaWUudCAgICAgICAgICAgICAgICAgICAgfCAgIDEx ICstCi0gdC9zdC1kdW1wLnBsICAgICAgICAgICAgICAgICAgIHwgIDEzNiAtLS0KLSB0L3N0b3Jl LnQgICAgICAgICAgICAgICAgICAgICAgfCAgIDc3ICstCi0gdC90ZXN0bGliLnBsICAgICAgICAg ICAgICAgICAgIHwgICAzOCAtCi0gdC90aHJlYWRzLnQgICAgICAgICAgICAgICAgICAgIHwgICAx NSArLQotIHQvdGllZC50ICAgICAgICAgICAgICAgICAgICAgICB8ICAxNTAgKystCi0gdC90aWVk X2hvb2sudCAgICAgICAgICAgICAgICAgIHwgIDE5MCArKy0tCi0gdC90aWVkX2l0ZW1zLnQgICAg ICAgICAgICAgICAgIHwgICAyNSArLQotIHQvdGllZF9yZWlmeS50ICAgICAgICAgICAgICAgICB8 ICAgIDggKy0KLSB0L3RpZWRfc3RvcmUudCAgICAgICAgICAgICAgICAgfCAgIDIzICstCi0gdC91 dGY4LnQgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArLQotIHQvdXRmOGhhc2gudCAgICAg ICAgICAgICAgICAgICB8ICAxNzggKystLQotIHQvd2Vhay50ICAgICAgICAgICAgICAgICAgICAg ICB8ICAxODAgKystLQotIDY4IGZpbGVzIGNoYW5nZWQsIDQyOTUgaW5zZXJ0aW9ucygrKSwgNDU2 NCBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgTUFOSUZFU1QKLSBjcmVhdGUgbW9k ZSAxMDA2NDQgTUFOSUZFU1QuU0tJUAotIGRlbGV0ZSBtb2RlIDEwMDY0NCBNRVRBLmpzb24KLSBk ZWxldGUgbW9kZSAxMDA2NDQgTUVUQS55bWwKLSByZW5hbWUgU3RvcmFibGUucG0gPT4gbGliL1N0 b3JhYmxlLnBtICg4NiUpCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHQvSEFTX0FUVEFDSC5wbQotIGRl bGV0ZSBtb2RlIDEwMDY0NCB0L0hBU19IT09LLnBtCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHQvSEFT X09WRVJMT0FELnBtCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHQvbGliL0hBU19IT09LLnBtCi0gY3Jl YXRlIG1vZGUgMTAwNjQ0IHQvbGliL0hBU19PVkVSTE9BRC5wbQotIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0L2xpYi9TVER1bXAucG0KLSBjcmVhdGUgbW9kZSAxMDA2NDQgdC9saWIvU1RUZXN0TGliLnBt Ci0gbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSB0L21ha2VfNTZfaW50ZXJ3b3JrLnBsCi0g bW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSB0L21ha2VfZG93bmdyYWRlLnBsCi0gbW9kZSBj aGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSB0L21ha2Vfb3ZlcmxvYWQucGwKLSBkZWxldGUgbW9kZSAx MDA2NDQgdC9zdC1kdW1wLnBsCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHQvdGVzdGxpYi5wbAotCi1k aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCA2NjE5NTQzLi5lNzQzNTI2 IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDExMjQgKzEs MTE4MiBAQAotLTIwMjMtMDUtMjYgMjE6MzY6MDAgZGVtZXJwaHEKLS0gICAgdmVyc2lvbiAzLjMy Ci0tICAgICAgICAqIFVwZGF0ZSBzZWN1cml0eSBhZHZpc29yeSB0byBiZSBtb3JlIGNsZWFyCi0t Ci0tMjAyMy0wMi0yNiAwMDozMTozMiBkZW1lcnBocQotLSAgICB2ZXJzaW9uIDMuMzEKLS0gICAg ICAgICogRml4dXAgZm9yIHBwcG9ydCBmaXggaW4gMy4zMAotLQotLTIwMjMtMDItMjIgMDk6NTY6 MjcgbGVvbnQKLS0gICAgdmVyc2lvbiAzLjMwCi0tICAgICAgICAqIFVzZSBwcHBvcnQgZm9yIGFs bCBtb2R1bGVzIGluIGRpc3QuCi0tCi0tMjAyMy0wMS0wNCAxNzozMzoyNCBpYWJ5bgotLSAgICB2 ZXJzaW9uIDMuMjkKLS0gICAgICAgICogU3RvcmUgY29kZSBmaXhlcyBpZGVudGlmaWVkIGZyb20g cmVmY291bnRlZCBzdGFjayBwYXRjaAotLQotLTIwMjItMTEtMDggMTA6MTI6NDYgdG9ueQotLSAg ICB2ZXJzaW9uIDMuMjgKLS0gICAgICAgICogU3RvcmUgaG9vayBlcnJvciByZXBvcnRpbmcgaW1w cm92ZW1lbnRzCi0tCSogU3RvcmUgaG9vayBoYW5kbGVzIHJlZ2V4IG9iamVjdHMgcHJvcGVybHku Ci0tCi0tMjAyMi0wNi0yMCAyMDozMjoyOSB0b2RkcgotLSAgICB2ZXJzaW9uIDMuMjcKLS0gICAg ICAgICogVXNlIGNCT09MIGluc3RlYWQgb2YgISEgaW4geHMgY29kZQotLQotLTIwMjItMDQtMTgg MTc6MzY6MDAgdG9kZHIKLS0gICAgdmVyc2lvbiAzLjI2Ci0tICAgICAgICAqIENvbmZvcm0gdG8g cHBwb3J0LmggMy42OCByZWNvbW1lbmRhdGlvbnMKLS0KLS0yMDIxLTA4LTMwIDA3OjQ2OjUyIG53 Y2xhcmsKLS0gICAgdmVyc2lvbiAzLjI1Ci0tICAgICAgICAqIE5vIGNoYW5nZXMgZnJvbSBwcmV2 aW91cyB2ZXJzaW9uCi0tCi0tMjAyMS0wOC0yNSAwODowNToxNiBud2NsYXJrCi0tICAgIHZlcnNp b24gMy4yNF81MAotLSAgICAgICAgKiBSZW1vdmUgY29kZSBhbmQgdGVzdHMgb25seSBwcmVzZW50 IHRvIHN1cHBvcnQgcGVybHMgYmVmb3JlIDUuNi4xCi0tICAgICAgICAgIFN0b3JhYmxlIGltcGxp Y2l0bHkgbmVlZHMgPj0gdjUuNi4xLgotLSAgICAgICAgKiBVc2UgU3ZQVkNMRUFSIGZyb20gcHBw b3J0LmgKLS0gICAgICAgICogUmVtb3ZlIFhTIGNvZGUgImNvbW1lbnRlZCIgb3V0IHdpdGggI2lm IDAKLS0gICAgICAgICogUmVmYWN0b3Igc3RvcmVfbGhhc2goKSB0byByZW1vdmUgc29tZSBjb2Rl IGR1cGxpY2F0aW9uCi0tICAgICAgICAqIEF2b2lkIGNhbGxpbmcgaHZfaXRlcnZhbCgpIHR3aWNl IGZvciBlYWNoIGhhc2ggZW50cnkKLS0gICAgICAgICogRml4IGEgYnVnIGluIHRoZSByZWN1cnNp b24gZGVwdGggY2hlY2sgaW4gc3RvcmVfbGhhc2goKQotLQotLXVucmVsZWFzZWQKLS0gICAgdmVy c2lvbiAzLjI0Ci0tICAgICAgICAqIEZpeCBhIChwb3NzaWJsZSkgdHlwbyBpbiBTbnRvaGwKLS0K LS11bnJlbGVhc2VkCi0tICAgIHZlcnNpb24gMy4yMwotLSAgICAgICAgKiBGaXggdHlwb3MKLS0g ICAgICAgICogYXZvaWQgc3RkZXJyIG5vaXNlIGluIHQvY2Fub25pY2FsLnQKLS0KLS0yMDIwLTA3 LTMxIDE5OjM2OjM3IGF0b29taWMKLS0gICAgdmVyc2lvbiAzLjIyCi0tICAgICAgICAqIHVzZSBQ RVJMX0NPTVBBUkUgbWFjcm9zCi0tCi0tMjAyMC0wNC0yMyAxMzozMzowNSBpbG1hcmkKLS0gICAg dmVyc2lvbiAzLjIxCi0tICAgICAgICAqIGZpeCByZXBlYXRlZC13b3JkIHR5cG9zCi0tICAgICAg ICAqIGZpeCB0L2h1Z2UudCBQRVJMX1RFU1RfTUVNT1JZIGRpYWdub3N0aWMgbWVzc2FnZXMKLS0K LS0yMDIwLTAxLTI3IDEwOjI3OjAwIFRvbnlDCi0tICAgIHZlcnNpb24gMy4yMAotLSAgICAgICAg KiBmaXggYSBmb3JtYXQgc3RyaW5nIGFuZCBhcmd1bWVudHMgZm9yIHNvbWUgZGVidWdnaW5nIHRl eHQKLS0gICAgICAgICogbGlua2lmeSByZWZlcmVuY2VzIHRvIGFsdGVybmF0aXZlcyB0byBTdG9y YWJsZQotLQotLTIwMjAtMDEtMjcgMTE6MDE6MDAgVG9ueUMKLS0gICAgdmVyc2lvbiAzLjE5Ci0t ICAgICAgICAqIGFkZCBjYXN0cyB0byBtYXRjaCBzb21lIEkzMiBwYXJhbWV0ZXJzIHRvICIlZCIg Zm9ybWF0cyAoIzE3MzM5KQotLSAgICAgICAgKiBmaXggZGVwZW5kZW5jaWVzIGluIE1ha2VmaWxl LlBMIC0+IE1FVEEgKCMxNzQyMikKLS0gICAgICAgICogbWFrZSB1c2Ugb2Ygbm90ZSgpIG9wdGlv bmFsLCB0aGlzIHJlcXVpcmVzIGEgbmV3ZXIgdmVyc2lvbiBvZgotLSAgICAgICAgICBUZXN0OjpN b3JlIGFuZCB0aGVyZSdzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGxhdGVyCi0tICAg ICAgICAgIHZlcnNpb25zIG9mIFRlc3Q6Ok1vcmUgYW5kIFN0b3JhYmxlICAoIzE3NDIyKQotLQot LTIwMTktMTEtMTkgMDc6NTk6MzkgVG9ueUMKLS0gICAgdmVyc2lvbiAzLjE4Ci0tICAgICAgICAq IHVwZGF0ZSBidWcgdHJhY2tlciB0byBwb2ludCBhdCBnaXRodWIgKCMxNzI5OCkKLS0gICAgICAg ICogZGlzYWxsb3cgdnN0cmluZyBtYWdpYyBzdHJpbmdzIG92ZXIgMkdCLTEgKCMxNzMwNikKLS0g ICAgICAgICogbWFyayBzb21lIEFTQ0lJIGRlcGVuZGVudCB0ZXN0cyBhcyBBU0NJSSBwbGF0Zm9y bSBvbmx5Ci0tCi0tMjAxOS0wOC0wOCAxMTo0ODowMCBUb255QwotLSAgICB2ZXJzaW9uIDMuMTcK LS0gICAgICAgICogY29ycmVjdCBhIGRhdGEgdHlwZSB0byBlbnN1cmUgdGhlIGNoZWNrIGZvciB0 b28gbGFyZ2UgcmVzdWx0cyBmcm9tCi0tCSAgU1RPUkFCTEVfZnJlZXplKCkgYXJlIGRldGVjdGVk IGNvcnJlY3RseSAoZGV0ZWN0ZWQgYnkgQ292ZXJpdHkpCi0tCSogcmVtb3ZlZCByZW1haW5zIG9m IHN0YWNrIHNpemUgZGV0ZWN0aW9uIGZyb20gdGhlIGJ1aWxkIHByb2Nlc3MuCi0tCSogbW92ZWQg Q0FOX0ZMT0NLIGRldGVjdGlvbiBpbnRvIFhTIHRvIHNpbXBsaWZ5IHRoZSBidWlsZCBwcm9jZXNz LgotLQotLTIwMTktMDYtMTEgMTA6NDM6MDAgVG9ueUMKLS0gICAgdmVyc2lvbiAzLjE2Ci0tICAg ICAgICAqIChwZXJsICMxMzQxNzkpIGZpeCBzZWxmLXJlZmVyZW5jaW5nIHN0cnVjdHVyZXMgdGhh dCBpbmNsdWRlIHJlZ2V4cHMKLS0gICAgICAgICogYmxlc3MgcmVnZXhwcyB0byBwcmVzZXJ2ZSBi bGVzcyBxci8vLCAiRm9vIgotLQotLTIwMTktMDQtMjMgMTY6MDA6MDAgeHNhd3llcngKLS0gICAg dmVyc2lvbiAzLjE1Ci0tICAgICogRml4IGxlYWtpbmcuCi0tCi0tdW5yZWxlYXNlZAotLSAgICB2 ZXJzaW9uIDMuMTQKLS0JKiAocGVybCAjMTMzNzA4KSBkb24ndCBidWlsZC10aW1lIHByb2JlIGZv ciBzdGFjayBsaW1pdHMgYXQgYWxsCi0tCi0tdW5yZWxlYXNlZAotLSAgICB2ZXJzaW9uIDMuMTIK LS0gICAgICAgICogKHBlcmwgIzEzMzQxMSkgZG9uJ3QgcHJvYmUgZm9yIHN0YWNrIGxpbWl0cyB3 aXRoIC1EdXNlY3Jvc3Njb21waWxlCi0tCi0tMjAxOC0wNC0yNyAyMDo0MDowMCB4c2F3eWVyeAot LSAgICB2ZXJzaW9uIDMuMTEKLS0gICAgICAgICogRml4IFN0cmF3YmVycnkgUGVybCBidWlsZCBm YWlsdXJlcy4KLS0KLS0yMDE4LTA0LTIxIDIyOjAwOjAwIHhzYXd5ZXJ4Ci0tICAgIFZlcnNpb24g My4xMAotLSAgICAgICAgKiBGaXggYmluYXJ5IGFydGlmYWN0cyBmcm9tIGRpc3RyaWJ1dGlvbi4K LS0KLS0yMDE4LTA0LTIxIDE2OjQ5OjAwIHhzYXd5ZXJ4Ci0tICAgIFZlcnNpb24gMy4wOQotLSAg ICAgICAgKiBGaXggInByb3ZpZGVzIiBpbiBtZXRhZGF0YSAoTUVUQS55bWwvTUVUQS5qc29uKSB0 byB1c2UgdGhlIFN0b3JhYmxlCi0tICAgICAgICAgIHRlbXBsYXRlIGluc3RlYWQgb2YgYSBzbWFs bCBvdGhlciBmaWxlICh3aGljaCBhbHNvIGRpZG4ndCBleGlzdCkuCi0tCi0tMjAxOC0wNC0yMSAx MToyMzowMCB4c2F3eWVyeAotLSAgICBWZXJzaW9uIDMuMDgKLS0gICAgICAgICogKHBlcmwgIzEz Mjg0OSkgdHJ5IHRvIGRpc2FibGUgY29yZSBmaWxlcyB3aGVuIGRlbGliZXJhdGx5IHNlZ2ZhdWx0 aW5nLgotLSAgICAgICAgKiAocGVybCAjMTI3NzQzKSBkb24ndCBwcm9iZSBTdG9yYWJsZSBsaW1p dHMgc28gbXVjaC4KLS0gICAgICAgICogKHBlcmwgIzEzMjg5MykgZG9uJ3QgcHJvYmUgZm9yIFN0 b3JhYmxlIHJlY3Vyc2lvbiBsaW1pdHMgb24gb2xkIFdpbjMyLgotLSAgICAgICAgKiAocGVybCAj MTMyODcwKSB3b3JrYXJvdW5kIFZDMjAxNyBjb21waWxlciBidWcuCi0tICAgICAgICAqIChwZXJs ICMxMjc3NDMpIHJlLXdvcmsgZm9yIGRlYnVnZ2luZyBidWlsZHMgd2l0aCBNU1ZDLgotLSAgICAg ICAgKiAocGVybCAjMTMzMDM5KSBkb250IGJ1aWxkIGEgU3RvcmFibGUuc28vLmRsbCB3aXRoIGEg c3RhdGljIHBlcmwgYnVpbGQuCi0tCi0tMjAxOC0wMi0wNyAxNTowODowMCB0b255YwotLSAgICBW ZXJzaW9uIDMuMDYKLS0KLS0gICAgICAgICogc3VwcG9ydCBsYXJnZSBvYmplY3QgaWRzLiAgVGhl IGNvZGUgaW4gdGhlb3J5IHN1cHBvcnRlZCBhcnJheXMKLS0gICAgICAgIHdpdGggbW9yZSB0aGFu IDIqKjMyIGVsZW1lbnRzLCBidXQgcmVmZXJlbmNlcyB0byB0aGUgZWxlbWVudHMKLS0gICAgICAg IGVtaXR0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgd2l0aCBiZSByZXRyaWV2ZWQgYXMgcmVm ZXJlbmNlcyB0bwotLSAgICAgICAgdGhlIHdyb25nIGVsZW1lbnRzLgotLSAgICAgICAgKiAzMi1i aXQgb2JqZWN0IGlkcyBvdmVyIDIqKjMxLTEgd2VyZW4ndCBjb3JyZWN0bHkgaGFuZGxlZC4KLS0g ICAgICAgICogaG9vayBvYmplY3QgaWQgZ2VuZXJhdGlvbiBub3cgc3VwcG9ydHMgNjQtYml0IGlk cyB3aGVyZSBuZWVkZWQKLS0gICAgICAgICogd3JpdGluZyA2NC1iaXQgbGVuZ3RocyBpbiBuZXR3 b3JrIG9yZGVyIG5vdyB3b3JrcwotLSAgICAgICAgKiByZWFkaW5nIDY0LWJpdCBsZW5ndGhzIGlu IG5ldHdvcmsgb3JkZXIgbm93IHJlYWRzIHRoZSBjb21wb25lbnRzCi0tICAgICAgICBpbiB0aGUg Y29ycmVjdCBvcmRlci4KLS0gICAgICAgICogcmV0cmlldmluZyBsYXJnZSBvYmplY3QgdGFncyBh cmUgbm93IG9ubHkgaGFuZGxlZCBvbiA2NC1iaXQKLS0gICAgICAgIHBsYXRmb3JtcywgbGFyZ2Ug b2JqZWN0IHRhZ3Mgc2hvdWxkIG9ubHkgYmUgZW1pdHRlZCBmb3Igb2JqZWN0cwotLSAgICAgICAg dGhhdCBhcmUgdG9vIGxhcmdlIGZvciB0aGUgMzItYml0IGFkZHJlc3Mgc3BhY2UsIHNvIGl0IHdh cyBvbmx5Ci0tICAgICAgICB3YXN0ZWQgY29kZS4KLS0gICAgICAgICogcmVhZGluZyAzMi1iaXQg bGVuZ3RocyBmb3IgTFNDQUxBUiBhbmQgTFVURjhTVFIgYXMgdW5zaWduZWQKLS0gICAgICAgIChw ZXJsICMxMzE5OTApCi0tICAgICAgICAqIHJlYWRpbmcgZmxhZ2dlZCBsYXJnZSBvYmplY3QgaGFz aGVzIGRpZG4ndCByZWFkIHRoZSBmbGFncwotLSAgICAgICAgKiB0cmVhdCB0aGUgMzItYml0IHNp emUgb2YgaG9vayBkYXRhIGFzIHVuc2lnbmVkLCB2YWx1ZXMgb3ZlciAyR0IKLS0gICAgICAgIHdl cmUgdHJlYXRlZCBhcyBsYXJnZSAoY2xvc2UgdG8gMioqNjQpIHBhcmFtZXRlcnMgdG8gTkVXU1Yo KS4KLS0gICAgICAgIChwZXJsICMxMzE5OTkpCi0tICAgICAgICAqIGFkZGVkIHN1cHBvcnQgZm9y IGhvb2sgZGF0YSBvdmVyIDRHQiBpbiBzaXplCi0tICAgICAgICAqIHplcm8gbGVuZ3RoIGRhdGEg cmVjZWlldmQgZnJvbSBTVE9SQUJMRV9mcmVlemUoKSBubyBsb25nZXIKLS0gICAgICAgIHJlc3Vs dHMgaW4gYW4gaW52YWxpZCBTViBiZWluZyBwYXNzZWQgdG8gU1RPUkFCTEVfdGhhdy9fYXR0YWNo KCkKLS0gICAgICAgIChwZXJsICMxMTg1NTEpCi0tICAgICAgICAqIHdoZXJlIHByYWN0aWNhbCwg cGFkZGluZyBpcyBub3cgY2xlYXJlZCB3aGVuIGVtaXR0aW5nIGEgbG9uZwotLSAgICAgICAgZG91 YmxlIChwZXJsICMxMzExMzYpCi0tICAgICAgICAqIGNhY2hlIHRoZSB2YWx1ZSBvZiAkU3RvcmFi bGU6OkRFQlVHTUUgKHNpbmNlIGNwZXJsIGVuYWJsZWQKLS0gICAgICAgIFN0b3JhYmxlIFRSQUNF TUUgYnVpbGRzIGZvciBhbGwgLURERUJVR0dJTkcgYnVpbGRzKQotLSAgICAgICAgKiBubyBsb25n ZXIgZGlzY2FyZCBleGNlcHRpb25zIHRocm93biBieQotLSAgICAgICAgU1RPUkFCTEVfZnJlZXpl L190aGF3L2F0dGFjaCgpIChwZXJsICMyNTkzMykKLS0gICAgICAgICogZml4IGRlcGVuZGVuY2ll cyB1c2VkIHRvIGJ1aWxkIFN0b3JhYmxlLnBtIGZyb20gX19TdG9yYWJsZV9fLnBtCi0tICAgICAg ICAqIGFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgZnJlZXppbmcvdGhhd2luZyByZWd1bGFy Ci0tICAgICAgICBleHByZXNzaW9ucyAocGVybCAjNTA2MDgpCi0tICAgICAgICAqIHJlLXdvcmsg cmVjdXJzaW9uIGxpbWl0aW5nIHRvIHN0b3JlIHRoZSBsaW1pdCBpbiBhIHBlcmwgdmFyaWFibGUK LS0gICAgICAgIGluc3RlYWQgb2YgYmFrZWQgaW50byBTdG9yYWJsZS4kc28uICBUaGlzIGFsbG93 cyBzdGF0aWMgU3RvcmFibGUKLS0gICAgICAgIGJ1aWxkcyB0byB3b3JrLCBhbmQgYXZvaWRzIHRo ZSBraW5kIG9mIGNpcmN1bGFyIHJlZmVyZW5jZSBvbgotLSAgICAgICAgU3RvcmFibGUuJHNvLgot LQotLTIwMTctMDctMjQgMTM6NTc6MTMgcnVyYmFuCi0tICAgIFZlcnNpb24gMy4wNV8xMwotLQot LSAgICAgICAgKiBtaW5ndyBmaXg6IHVzZSBzYWZlIGRlZmF1bHRzLCBub3Qgc2VnZmF1bHRpbmcg ZGVmYXVsdHMuCi0tICAgICAgICBtaW5ndyBmYWlscyBvbiB0aGUgc3RhY2tzaXplIGJpbmFyeSBz ZWFyY2gsIGxlYXZpbmcgaXQgZW1wdHkuCi0tCi0tV2VkIEFwciAxOSAwOToxMTowNyAyMDE3ICsw MjAwIFJlaW5pIFVyYmFuIDxydXJiYW5AY3Bhbi5vcmc+Ci0tICAgIFZlcnNpb24gMy4wNV8xMgot LQotLSAgICAgICAgKiBlbmhhbmNlIHN0YWNrIHJlc2VydmUgZnJvbSA4IHRvIDE2Ci0tICAgICAg ICAqIGZpeCBMRF9MSUJSQVJZX1BBVEggdXNhZ2UgZm9yIENPUkUKLS0gICAgICAgICogZml4ZWQg c29tZSBjb3Zlcml0eSB3YXJuaW5ncyBhbmQgbGVha3MKLS0gICAgICAgICogYWRkZWQgYSByZWxl YXNlIG1ha2UgdGFyZ2V0Ci0tCi0tV2VkIE1hciAyOSAyMTowNDoyOCAyMDE3ICswMjAwIFJlaW5p IFVyYmFuIDxydXJiYW5AY3Bhbi5vcmc+Ci0tICAgIFZlcnNpb24gMy4wNV8xMQotLQotLSAgICAg ICAgKiBjcm9hayBvbiBzaXplcyByZWFkID4gSTMyX01BWAotLSAgICAgICAgKiBzaW1wbGlmeSBs YXN0X29wX2luX25ldG9yZGVyCi0tICAgICAgICAqIHByb3RlY3QgZnJvbSBlbXB0eSByZXRyaWV2 ZV92c3RyaW5nCi0tICAgICAgICAqIHByb3RlY3Qgc3RvcmVfb3RoZXIgZXJyb3IgYnVmLCBwb3Rl bnRpYWwgc3RhdGljCi0tICAgICAgICBidWZmZXIgb3ZlcmZsb3cuCi0tCi0tVHVlIE1hciAxNCAw OTo1MjoyMCAyMDE3ICswMTAwIFJlaW5pIFVyYmFuIDxydXJiYW5AY3Bhbi5vcmc+Ci0tICAgIFZl cnNpb24gMy4wNV8xMAotLQotLSAgICAgICAgKiBDT1JFLW9ubHkgaW1wcm92ZW1lbnRzIHRvIHN0 YWNrc2l6ZQotLQotLVRodSBNYXIgOSAxOToyMDoxOSAyMDE3ICswMTAwIFJlaW5pIFVyYmFuIDxy dXJiYW5AY3Bhbi5vcmc+Ci0tICAgIFZlcnNpb24gMy4wNV8wOQotLQotLSAgICAgICAgKiBjb21w dXRlIHRoZSBzdGFja3NpemVzLCBpbXByb3ZlIGNsZWFudXAgd2l0aGluIGNyb2FrCi0tICAgICAg ICBmcm9tIHN0YWNrIGV4aGF1c3Rpb24uCi0tICAgICAgICAqIGFkZGVkIHN0YWNrX2RlcHRoIGFu ZCBzdGFja19kZXB0aF9oYXNoIGdldHRlcnMuCi0tCi0tV2VkIE1hciAgOCAyMTowMzo0MyBDRVQg MjAxNyBSZWluaSBVcmJhbiA8cnVyYmFuQGNwYW4ub3JnPgotLSAgICBWZXJzaW9uIDMuMDVfMDgK LS0KLS0gICAgICAgICogZmluZXR1bmUgdGhlIG1heCBzdGFjayBsaW1pdCwgZm9yIEMrKywgREVC VUdHSU5HIGFuZCAzMmJpdC4KLS0gICAgICAgICogZml4IHQvYmxlc3NlZC50IGZvciBjcGVybDUu MjIKLS0KLS1TdW4gTWFyIDUgMTM6MzY6NDcgMjAxNyArMDEwMCBSZWluaSBVcmJhbiA8cnVyYmFu QGNwYW4ub3JnPgotLSAgICBWZXJzaW9uIDMuMDVfMDcKLS0KLS0gICAgICAgICogRml4ZWQgYSBw b2RjaGVja2VyIGlzc3VlCi0tCi0tU3VuIE1hciA1IDExOjQyOjA0IDIwMTcgKzAxMDAgUmVpbmkg VXJiYW4gPHJ1cmJhbkBjcGFuLm9yZz4KLS0gICAgVmVyc2lvbiAzLjA1XzA2Ci0tCi0tICAgICAg ICAqIEZpeGVkIHdyb25nIHJlY3Vyc2lvbiBkZXB0aCBlcnJvciB3aXRoIGxhcmdlIGFycmF5cyBj b250YWluaW5nCi0tICAgICAgICBhbm90aGVyIGFycmF5LgotLQlMPFtjcGVybCAjMjU3XXxodHRw czovL2dpdGh1Yi5jb20vcGVybDExL2NwZXJsL2lzc3Vlcy8yNTc+Ci0tCi0tVGh1IEZlYiAyIDEy OjQwOjQ0IDIwMTcgKzAxMDAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuZWwubmV0PgotLSAgICBW ZXJzaW9uIDMuMDVfMDUKLS0KLS0gICAgICAgICogQWRkIGxlYWsgdGVzdHMgZm9yIFtjcGFuICM5 NzMxNl0sIFtwZXJsICMxMjE5MjhdCi0tICAgICAgICAqIExpbWl0IHRoZSBtYXggcmVjdXJzaW9u IGRlcHRoIHRvIDEyMDAgb24gMzJiaXQgc3lzdGVtcy4KLS0gICAgICAgIFdlIGhhdmUgbm8gbWF4 X2RlcHRoIG9wdGlvbiB5ZXQsIGFzIGluIEpTT046OlhTLgotLQotLVRodSBGZWIgMiAxMTo1OToy MSAyMDE3ICswMTAwIFJlaW5pIFVyYmFuIDxydXJiYW5AY3BhbmVsLm5ldD4KLS0gICAgVmVyc2lv biAzLjA1XzA0Ci0tCi0tICAgICAgICAqIEZpeCByZXRyaWV2ZV90aWVkX2FycmF5IHdoaWNoIGZh aWxzIHNpbmNlIDUuMTYKLS0gICAgICAgIFtjcGFuICM4NDcwNV0KLS0gICAgICAgICogSW1wcm92 ZSB0L2JsZXNzZWQudCBpbiB0aGUgY3JlYXRpb24gb2Ygc3ZfeWVzL3N2X25vCi0tICAgICAgICB3 aXRoIHRocmVhZGVkIHBlcmxzLgotLQotLVR1ZSBKYW4gMzEgMDI6NTU6MzAgMjAxNyArMDEwMCBS ZWluaSBVcmJhbiA8cnVyYmFuQGNwYW5lbC5uZXQ+Ci0tICAgIFZlcnNpb24gMy4wNV8wMwotLQot LSAgICAgICAgKiBUdW5lIHQvcmVjdXJzZS50IHN0YWNrLW92ZXJmbG93IGxpbWl0IG1vcmUuCi0t Ci0tTW9uIEphbiAzMCAxOTo1MDoyOSAyMDE3ICswMTAwIFJlaW5pIFVyYmFuIDxydXJiYW5AY3Bh bmVsLm5ldD4KLS0gICAgVmVyc2lvbiAzLjA1XzAyCi0tCi0tICAgICAgICAqIFR1bmUgdC9yZWN1 cnNlLnQgc3RhY2stb3ZlcmZsb3cgbGltaXQuIFNtYWxsIDY0Yml0IHN5c3RlbXMgb3ZlcmZsb3cK LS0gICAgICAgIGV2ZW4gd2l0aCBkZXB0aCAzMDAwLCB3aGVyZSAzMmJpdCBhcmUgb2suCi0tCi0t TW9uIEphbiAzMCAxNToxMzozOCAyMDE3ICswMTAwIFJlaW5pIFVyYmFuIDxydXJiYW5AY3BhbmVs Lm5ldD4KLS0gICAgVmVyc2lvbiAzLjA1XzAxCi0rUmVsZWFzZSBoaXN0b3J5IGZvciBTdG9yYWJs ZQotIAotLSAgICAgICAgKiBQcm90ZWN0IGFnYWluc3Qgc3RhY2sgb3ZlcmZsb3dzIHdpdGggbmVz dGVkIGFycmF5cyBhbmQgaGFzaGVzCi0tICAgICAgICBbY3BhbiAjOTc1MjZdLiBUaGlzIGltcG9z ZXMgYSBuZXcgbGltaXQgdG8geW91ciBuZXN0ZWQgc3RydWN0dXJlcywKLS0gICAgICAgIGJ1dCBK U09OOjpYUyBoYXMgYSBsaW1pdCBvZiA1MTIuIFdlIHVzZSBhIG1heF9kZXB0aCBvZiAzMDAwIGZv ciB0aGUKLS0gICAgICAgIHR5cGljYWwgc3RhY2sgbGltaXQgb2YgOGsuCi0rICAtIHJlb3JnYW5p emUgZmlsZXMgdG8gbWF0Y2ggbW9kZXJuIHN0YW5kYXJkcwotKyAgLSB1c2Ugc3RyaWN0IGluIGxp YnJhcnkKLSsgIC0gdXNlIHN0cmljdCBhbmQgd2FybmluZ3MgaW4gdGVzdHMKLSsgIC0gbm9ybWFp emUgd2hpdGVzcGFjZSBpbiBjb2RlCi0rICAtIG90aGVyIG1pbm9yIGNsZWFudXBzCi0gCi0rMy4z MyAtIDIwMjQtMDctMTEgMDA6NDE6MzUKLSAKLS1TdW4gSmFuIDI5IDExOjM2OjQzIDIwMTcgKzAx MDAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuZWwubmV0PgotLSAgICBWZXJzaW9uIDMuMDUKLSsg IC0gYWRkIHNvbWUgdGVzdCBuYW1lcyB0byB0L3V0ZjgudAotIAotLSAgICAgICAgKiBQcm90ZWN0 IGFnYWluc3QgY2xhc3NuYW1lIGxlbiBvdmVyZmxvdyBvbiB0aGUgc3RhY2sKLS0gICAgICAgIGFu ZCAyeCBvbiB0aGUgaGVhcCB3aXRoIHJldHJpZXZlX2JsZXNzIGFuZCByZXRyaWV2ZV9ob29rLgot LSAgICAgICAgQSBzZXJpb3VzIHNlY3VyaXR5IGlzc3VlIHdpdGggbWFsY3JhZnRlZCBzdG9yYWJs ZSBmaWxlcyBvciBidWZmZXJzLAotLSAgICAgICAgYnV0IHA1cCBhY2NlcHRzIG5vIENWRSBvbiBT dG9yYWJsZSBhdHRhY2tzLiBTZWUgUlQgIzEzMDYzNQotLSAgICAgICAgKHJlcG9ydGVkIGJ5IEpE KS4KLS0gICAgICAgICogRml4IE5VTEwgcHRyIFNFR1ZzIHdpdGggcmV0cmlldmVfY29kZSBhbmQg cmV0cmlldmVfb3RoZXIuCi0tICAgICAgICBTZWUgUlQgIzEzMDA5OCAocmVwb3J0ZWQgYW5kIGZp eGVkIGJ5IEpEKQotLSAgICAgICAgKiBGaXggd3JvbmcgaHVnZSBMT0JKRUNUIHN1cHBvcnQsIGJy b2tlbiBzaW5jZSAzLjAwYy4KLS0gICAgICAgIFJlcHJvIHdpdGggYGV4cG9ydCBQRVJMX1RFU1Rf TUVNT1JZPThgCi0tICAgICAgICAqIEZpeCB0aGUgZmV3IHJlbWFpbmluZyAyLWFyZyBvcGVuIGNh bGxzLgotLSAgICAgICAgKiBQb3J0YWJpbGl0eSBhbmQgYmFja3BvcnQgZml4ZXMgYmFjayB0byA1 LjYuMgotKzMuMzIgLSAyMDIzLTA1LTI2IDIxOjM2OjAwIGRlbWVycGhxCi0gCi0tU2F0IEphbiA3 IDA5OjAxOjI5IDIwMTcgKzAxMDAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuZWwubmV0PgotLSAg ICBWZXJzaW9uIDMuMDRjCi0rICAtIFVwZGF0ZSBzZWN1cml0eSBhZHZpc29yeSB0byBiZSBtb3Jl IGNsZWFyCi0gCi0tICAgICAgICAqIGZpeCBwcmludGYgdHlwZXMgYW5kIHdhcm5pbmdzLCBlc3Au IGZvciAzMmJpdCB1c2U2NGJpdGludAotLSAgICAgICAgKiBDaGFuZ2Ugc3Zfc2V0cHZuKOKApiwg IuKApiIsIOKApikgdG8gc3Zfc2V0cHZzKOKApiwgIuKApiIpCi0rMy4zMSAtIDIwMjMtMDItMjYg MDA6MzE6MzIgZGVtZXJwaHEKLSAKLS1UdWUgSnVsIDI2IDExOjQ5OjMzIDIwMTYgKzEwMDAgVG9u eSBDb29rIDx0b255QGRldmVsb3AtaGVscC5jb20+Ci0tICAgIFZlcnNpb24gMy4wM2MKLSsgIC0g Rml4dXAgZm9yIHBwcG9ydCBmaXggaW4gMy4zMAotIAotLSAgICAgICAgKiByZW1vdmUgLiBmcm9t IEBJTkMgd2hlbiBsb2FkaW5nIG9wdGlvbmFsIG1vZHVsZXMKLSszLjMwIC0gMjAyMy0wMi0yMiAw OTo1NjoyNyBsZW9udAotIAotLVN1biBOb3YgMjAgMTg6MDY6NDUgMjAxNiArMDEwMCBSZWluaSBV cmJhbiA8cnVyYmFuQGNwYW5lbC5uZXQ+Ci0tICAgIFZlcnNpb24gMy4wMmMKLSsgIC0gVXNlIHBw cG9ydCBmb3IgYWxsIG1vZHVsZXMgaW4gZGlzdC4KLSAKLS0gICAgICAgICogRml4IC1XYysrMTEt Y29tcGF0IHdhcm5pbmdzLCBmaXggLVdjaGFyLXN1YnNjcmlwdHMKLSszLjI5IC0gMjAyMy0wMS0w NCAxNzozMzoyNCBpYWJ5bgotIAotLUZyaSBTZXAgMTYgMDE6MzI6NTkgMjAxNiArMDIwMCBSZWlu aSBVcmJhbiA8cnVyYmFuQGNwYW5lbC5uZXQ+Ci0tICAgIFZlcnNpb24gMy4wMWMKLSsgIC0gU3Rv cmUgY29kZSBmaXhlcyBpZGVudGlmaWVkIGZyb20gcmVmY291bnRlZCBzdGFjayBwYXRjaAotIAot LSAgICAgICAgKiBBZGRlZCB3YXJuX3NlY3VyaXR5KCJNb3ZhYmxlLVR5cGUgQ1ZFLTIwMTUtMTU5 MiBTdG9yYWJsZSBtZXRhc3Bsb2l0IGF0dGFjayIpCi0tICAgICAgICAgIHdoZW4gZGV0ZWN0aW5n IHRoZSB0aGlyZCBkZXN0cnVjdGl2ZSBtZXRhc3Bsb2l0IHZlY3RvciwKLS0gICAgICAgICAgdGhh d2luZyBibGVzcyBcIm10LWNvbmZpZy5jZ2kiLCAiQ0dJVGVtcEZpbGUiLgotKzMuMjggLSAyMDIy LTExLTA4IDEwOjEyOjQ2IHRvbnkKLSAKLS1UaHUgTWFyIDMxIDE3OjEwOjI3IDIwMTYgKzAyMDAg UmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuZWwubmV0PgotLSAgICBWZXJzaW9uIDMuMDBjCi0rICAt IFN0b3JlIGhvb2sgZXJyb3IgcmVwb3J0aW5nIGltcHJvdmVtZW50cwotIAotLSAgICAgICAgKiBB ZGRlZCBzdXBwb3J0IGZvciB1NjQgc3RyaW5ncywgYXJyYXlzIGFuZCBoYXNoZXMgPjJHCi0tICAg ICAgICAgIHZpYSBhIG5ldyBMT0JKRUNUIHRhZy4gVGhpcyBpcyBmb3IgMzJiaXQgc3lzdGVtcyBh bmQgbGVuZ3RocwotLSAgICAgICAgICBiZXR3ZWVuIDJHQiBhbmQgNEdCIChJMzItVTMyKSwgYW5k IDY0Yml0ICg+STMyKS4KLS0gICAgICAgICogQnVtcGVkIFNUT1JBQkxFX0JJTl9NSU5PUiBhbmQg U1RPUkFCTEVfQklOX1dSSVRFX01JTk9SIGZyb20gMTAgdG8gMTEKLS0gICAgICAgICogZml4IHBh cmFsbGVsIHRlc3RzLCB1c2UgdW5pcXVlIGZpbGVuYW1lcy4KLS0gICAgICAgICogZml4ZWQgMiBp bnN0YW5jZXMgb2YgMmFyZyBvcGVuLAotLSAgICAgICAgKiBhZGRlZCBvcHRpb25hbCBmbGFnIGFy Z3VtZW50cyB0byBza2lwIHRpZSBhbmQgYmxlc3Mgb24gcmV0cmlldmUvdGhhdywKLS0gICAgICAg ICogYWRkZWQgU0VDVVJJVFkgV0FSTklORyBhbmQgTGFyZ2UgZGF0YSBzdXBwb3J0IHRvIGRvY3MK LS0gICAgICAgICogY29tcHV0ZSBDQU5fRkxPQ0sgYXQgY29tcGlsZS10aW1lCi0tICAgICAgICAq IHJlZm9ybWF0IGV2ZXJ5dGhpbmcgY29uc2lzdGVudGx5Ci0tICAgICAgICAqIGVuYWJsZSBERUJV R01FIHRyYWNpbmcgYW5kIGFzc2VydHMgd2l0aCAtRERFQlVHR0lORwotLSAgICAgICAgKiBmaXgg YWxsIDY0IGJpdCBjb21waWxlciB3YXJuaW5ncwotLSAgICAgICAgKiBhZGRlZCBzb21lIGFic3Ry YWN0aW9uIG1ldGhvZHMgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbgotKyAgLSBTdG9yZSBob29r IGhhbmRsZXMgcmVnZXggb2JqZWN0cyBwcm9wZXJseS4KLSAKLS0/Pz8/Pz8gcDVwIDxwZXJsNS1w b3J0ZXJzQHBlcmwub3JnPgotLSAgICBWZXJzaW9uIDIuNjUKLSszLjI3IC0gMjAyMi0wNi0yMCAy MDozMjoyOSB0b2RkcgotIAotLQkqIFJlcGxhY2UgbXVsdGlwbGUgJ3VzZSB2YXJzJyBieSAnb3Vy JwotLQkqIHJlbW92ZSBDb25maWcgZGVwZW5kZW5jeQotKyAgLSBVc2UgY0JPT0wgaW5zdGVhZCBv ZiAhISBpbiB4cyBjb2RlCi0gCi0tV2VkIEp1bCAgMiAxNjoyNToyNSBJU1QgMjAxNCAgIEFiaGlq aXQgTWVub24tU2VuIDxhbXNAdG9yb2lkLm9yZz4KLS0gICAgVmVyc2lvbiAyLjUxCi0rMy4yNiAt IDIwMjItMDQtMTggMTc6MzY6MDAgdG9kZHIKLSAKLS0JKiBbcGVybCAjMTIxOTI4XSBGaXggbWVt b3J5IGxlYWsgZm9yIGRjbG9uZSBpbnNpZGUgZnJlZXplIGhvb2sKLS0JICAoQWxleCBTb2xvdmV5 KQotLQkqIERvIG5vdCBjYWxsIERFU1RST1kgZm9yIGVtcHR5IG9iamVjdHMKLS0JICAoVmxhZGlt aXIgVGltb2ZlZXYpCi0tCSogT3RoZXIgYnVnZml4ZXMKLSsgIC0gQ29uZm9ybSB0byBwcHBvcnQu aCAzLjY4IHJlY29tbWVuZGF0aW9ucwotIAotLVNhdCBKdWwgMTMgMTg6MzQ6MjcgSVNUIDIwMTMg ICBBYmhpaml0IE1lbm9uLVNlbiA8YW1zQHRvcm9pZC5vcmc+Ci0tICAgIFZlcnNpb24gMi40NQot KzMuMjUgLSAyMDIxLTA4LTMwIDA3OjQ2OjUyIG53Y2xhcmsKLSAKLS0gICAgICAgKiBbcGVybCAj MTE4ODI5XSBNZW1vcnkgbGVha3MgaW4gU1RPUkFCTEVfYXR0YWNoCi0tICAgICAgICAgKFZsYWRp bWlyIFRpbW9mZWV2KQotLSAgICAgICAqIFtwZXJsICMxMTgxMzldIERvbid0IFNFR1YgZHVyaW5n IGdsb2JhbCBkZXN0cnVjdGlvbgotLSAgICAgICAgIChOaWNob2xhcyBDbGFyaywgcmVwb3J0L3Rl c3QgZnJvbSBSZWluaSBVcmJhbikKLS0gICAgICAgKiBBZGRlZCBzZWN1cml0eSB3YXJuaW5ncyBz ZWN0aW9uIChTdGVmZmVuIE11ZWxsZXIpCi0tICAgICAgICogVXBkYXRlIElOU1RBTExESVJTIHRv IGZhdm91ciBpbnN0YWxsYXRpb24gaW4gJ3NpdGUnCi0tICAgICAgICAgKEphbWVzIEUgS2VlbmFu KQotKyAgLSBObyBjaGFuZ2VzIGZyb20gcHJldmlvdXMgdmVyc2lvbgotIAotLVR1ZSAxMSBTZXAg MDY6NTE6MTEgSVNUIDIwMTIgICBBYmhpaml0IE1lbm9uLVNlbiA8YW1zQHRvcm9pZC5vcmc+Ci0t ICAgIFZlcnNpb24gMi4zOQotKzMuMjRfNTAgLSAyMDIxLTA4LTI1IDA4OjA1OjE2IG53Y2xhcmsK LSAKLS0JVmFyaW91cyBidWdmaXhlcywgaW5jbHVkaW5nIGNvbXBhdGliaWxpdHkgZml4ZXMgZm9y IG9sZGVyCi0tCXZlcnNpb25zIG9mIFBlcmwgYW5kIHZzdHJpbmcgaGFuZGxpbmcuCi0rICAtIFJl bW92ZSBjb2RlIGFuZCB0ZXN0cyBvbmx5IHByZXNlbnQgdG8gc3VwcG9ydCBwZXJscyBiZWZvcmUg NS42LjEKLSsgICAgU3RvcmFibGUgaW1wbGljaXRseSBuZWVkcyA+PSB2NS42LjEuCi0gCi0tU3Vu ICAzIEp1bCAwOToxMDoxMSBJU1QgMjAxMSAgIEFiaGlqaXQgTWVub24tU2VuIDxhbXNAdG9yb2lk Lm9yZz4KLS0gICAgVmVyc2lvbiAyLjI5Ci0rICAtIFVzZSBTdlBWQ0xFQVIgZnJvbSBwcHBvcnQu aAotIAotLQlWYXJpb3VzIGJ1Z2ZpeGVzLCBub3RhYmx5IGluY2x1ZGluZyBwcmV2ZW50aW5nIG5m cmVlemUgZnJvbQotLQlpbmNvcnJlY3RseSBzdHJpbmdpZnlpbmcgaW50ZWdlcnMuCi0rICAtIFJl bW92ZSBYUyBjb2RlICJjb21tZW50ZWQiIG91dCB3aXRoICNpZiAwCi0gCi0tRnJpICAzIERlYyAx NDoxMjozMiBHTVQgMjAxMCAgIERhdmlkIExlYWRiZWF0ZXIgPGRnbEBkZ2wuY3g+Ci0tICAgIFZl cnNpb24gMi4yNQotKyAgLSBSZWZhY3RvciBzdG9yZV9saGFzaCgpIHRvIHJlbW92ZSBzb21lIGNv ZGUgZHVwbGljYXRpb24KLSAKLS0JU3VwcG9ydCBmb3Igc2VyaWFsaXppbmcgY29kZXJlZnMgY29u dGFpbmluZyBVVEYtOC4KLSsgIC0gQXZvaWQgY2FsbGluZyBodl9pdGVydmFsKCkgdHdpY2UgZm9y IGVhY2ggaGFzaCBlbnRyeQotIAotLUZyaSBOb3YgMTIgMTA6NTI6MTkgSVNUIDIwMTAgICBBYmhp aml0IE1lbm9uLVNlbiA8YW1zQHRvcm9pZC5vcmc+Ci0rICAtIEZpeCBhIGJ1ZyBpbiB0aGUgcmVj dXJzaW9uIGRlcHRoIGNoZWNrIGluIHN0b3JlX2xoYXNoKCkKLSAKLS0gICAgVmVyc2lvbiAyLjI0 Ci0rMy4yNCAtIHVucmVsZWFzZWQKLSAKLS0JUGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgZm9yIG92 ZXJsb2FkZWQgY2xhc3NlcyBmcm9tIEJlbmphbWluCi0tCUhvbHptYW4uCi0rICAtIEZpeCBhIChw b3NzaWJsZSkgdHlwbyBpbiBTbnRvaGwKLSAKLS1GcmkgTm92IDEyIDEwOjM2OjIyIElTVCAyMDEw ICAgQWJoaWppdCBNZW5vbi1TZW4gPGFtc0B0b3JvaWQub3JnPgotKzMuMjMgLSB1bnJlbGVhc2Vk Ci0gCi0tICAgIFZlcnNpb24gMi4yMwotKyAgLSBGaXggdHlwb3MKLSAKLS0JUmVsZWFzZSB0aGUg bGF0ZXN0IHZlcnNpb24gZnJvbSB0aGUgUGVybCByZXBvc2l0b3J5LgotKyAgLSBhdm9pZCBzdGRl cnIgbm9pc2UgaW4gdC9jYW5vbmljYWwudAotIAotLVRodSBBdWcgIDYgMTA6NTU6NTAgSVNUIDIw MDkgICBBYmhpaml0IE1lbm9uLVNlbiA8YW1zQHRvcm9pZC5vcmc+Ci0rMy4yMiAtIDIwMjAtMDct MzEgMTk6MzY6MzcgYXRvb21pYwotIAotLSAgICBWZXJzaW9uIDIuMjEKLSsgIC0gdXNlIFBFUkxf Q09NUEFSRSBtYWNyb3MKLSAKLS0JSW5jbHVkZXMgaGludHMvaHB1eC5wbCB0aGF0IHdhcyBpbmFk dmVydGVudGx5IGxlZnQgb3V0IG9mIDIuMjAuCi0rMy4yMSAtIDIwMjAtMDQtMjMgMTM6MzM6MDUg aWxtYXJpCi0gCi0tTW9uIE1heSAxOCAwOTozODoyMCBJU1QgMjAwOSAgIEFiaGlqaXQgTWVub24t U2VuIDxhbXNAdG9yb2lkLm9yZz4KLSsgIC0gZml4IHJlcGVhdGVkLXdvcmQgdHlwb3MKLSAKLS0g ICAgVmVyc2lvbiAyLjIwCi0rICAtIGZpeCB0L2h1Z2UudCBQRVJMX1RFU1RfTUVNT1JZIGRpYWdu b3N0aWMgbWVzc2FnZXMKLSAKLS0JRml4IGJ1ZyBoYW5kbGluZyBibGVzc2VkIHJlZmVyZW5jZXMg dG8gb3ZlcmxvYWRlZCBvYmplY3RzLCBwbHVzCi0tCW90aGVyIG1pc2NlbGxhbmVvdXMgZml4ZXMu Ci0rMy4yMCAtIDIwMjAtMDEtMjcgMTA6Mjc6MDAgVG9ueUMKLSAKLS0JKFZlcnNpb24gMi4xOSB3 YXMgcmVsZWFzZWQgd2l0aCA1LjguOS4pCi0rICAtIGZpeCBhIGZvcm1hdCBzdHJpbmcgYW5kIGFy Z3VtZW50cyBmb3Igc29tZSBkZWJ1Z2dpbmcgdGV4dAotIAotLVRodSBOb3YgMjIgMTM6MjQ6MTgg SVNUIDIwMDcgICBBYmhpaml0IE1lbm9uLVNlbiA8YW1zQHRvcm9pZC5vcmc+Ci0rICAtIGxpbmtp ZnkgcmVmZXJlbmNlcyB0byBhbHRlcm5hdGl2ZXMgdG8gU3RvcmFibGUKLSAKLS0gICAgVmVyc2lv biAyLjE4Ci0rMy4xOSAtIDIwMjAtMDEtMjcgMTE6MDE6MDAgVG9ueUMKLSAKLS0JQ29tcGlsZSBm aXhlcyBmb3Igb2xkZXIgUGVybHMuIChObyBmdW5jdGlvbmFsIGNoYW5nZXMuKQotKyAgLSBhZGQg Y2FzdHMgdG8gbWF0Y2ggc29tZSBJMzIgcGFyYW1ldGVycyB0byAiJWQiIGZvcm1hdHMgKCMxNzMz OSkKLSAKLS1TYXQgTm92IDE3IDAyOjEyOjEyIElTVCAyMDA3ICAgQWJoaWppdCBNZW5vbi1TZW4g PGFtc0B0b3JvaWQub3JnPgotKyAgLSBmaXggZGVwZW5kZW5jaWVzIGluIE1ha2VmaWxlLlBMIC0+ IE1FVEEgKCMxNzQyMikKLSAKLS0gICAgVmVyc2lvbiAyLjE3Ci0rICAtIG1ha2UgdXNlIG9mIG5v dGUoKSBvcHRpb25hbCwgdGhpcyByZXF1aXJlcyBhIG5ld2VyIHZlcnNpb24gb2YKLSsgICAgVGVz dDo6TW9yZSBhbmQgdGhlcmUncyBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBsYXRlcgot KyAgICB2ZXJzaW9ucyBvZiBUZXN0OjpNb3JlIGFuZCBTdG9yYWJsZSAgKCMxNzQyMikKLSAKLS0J VmFyaW91cyBicm9rZW4gdGVzdHMgZml4ZWQuIChObyBmdW5jdGlvbmFsIGNoYW5nZXMuKQotKzMu MTggLSAyMDE5LTExLTE5IDA3OjU5OjM5IFRvbnlDCi0gCi0tU2F0IE1hciAzMSAwNjoxMTowNiBJ U1QgMjAwNyAgIEFiaGlqaXQgTWVub24tU2VuIDxhbXNAdG9yb2lkLm9yZz4KLSsgIC0gdXBkYXRl IGJ1ZyB0cmFja2VyIHRvIHBvaW50IGF0IGdpdGh1YiAoIzE3Mjk4KQotIAotLSAgICBWZXJzaW9u IDIuMTYKLSsgIC0gZGlzYWxsb3cgdnN0cmluZyBtYWdpYyBzdHJpbmdzIG92ZXIgMkdCLTEgKCMx NzMwNikKLSAKLS0gICAgICAgIDEuIEZpeGVzIHRvIFN0b3JhYmxlOjpkY2xvbmUsIHJlYWRfbWFn aWMsIHJldHJpZXZlX2xzY2FsYXIKLS0gICAgICAgIDIuIFN0b3JhYmxlIDAuMSBjb21wYXRpYmls aXR5Ci0tICAgICAgICAzLiBNaXNjZWxsYW5lb3VzIGNvbXBpbGUvbGVhay90ZXN0L3BvcnRhYmls aXR5IGZpeGVzCi0rICAtIG1hcmsgc29tZSBBU0NJSSBkZXBlbmRlbnQgdGVzdHMgYXMgQVNDSUkg cGxhdGZvcm0gb25seQotIAotLU1vbiBNYXkgMjMgMjI6NDg6NDkgSVNUIDIwMDUgICBBYmhpaml0 IE1lbm9uLVNlbiA8YW1zQHdpdy5vcmc+Ci0rMy4xNyAtIDIwMTktMDgtMDggMTE6NDg6MDAgVG9u eUMKLSAKLS0gICAgVmVyc2lvbiAyLjE1Ci0rICAtIGNvcnJlY3QgYSBkYXRhIHR5cGUgdG8gZW5z dXJlIHRoZSBjaGVjayBmb3IgdG9vIGxhcmdlIHJlc3VsdHMgZnJvbQotKyAgICBTVE9SQUJMRV9m cmVlemUoKSBhcmUgZGV0ZWN0ZWQgY29ycmVjdGx5IChkZXRlY3RlZCBieSBDb3Zlcml0eSkKLSAK LS0gICAgICAgIE1pbm9yIGNoYW5nZXMgdG8gYWRkcmVzcyBhIGNvdXBsZSBvZiBjb21waWxlIHBy b2JsZW1zLgotKyAgLSByZW1vdmVkIHJlbWFpbnMgb2Ygc3RhY2sgc2l6ZSBkZXRlY3Rpb24gZnJv bSB0aGUgYnVpbGQgcHJvY2Vzcy4KLSAKLS1Nb24gQXByIDI1IDA3OjI5OjE0IElTVCAyMDA1ICAg QWJoaWppdCBNZW5vbi1TZW4gPGFtc0B3aXcub3JnPgotKyAgLSBtb3ZlZCBDQU5fRkxPQ0sgZGV0 ZWN0aW9uIGludG8gWFMgdG8gc2ltcGxpZnkgdGhlIGJ1aWxkIHByb2Nlc3MuCi0gCi0tICAgIFZl cnNpb24gMi4xNAotKzMuMTYgLSAyMDE5LTA2LTExIDEwOjQzOjAwIFRvbnlDCi0gCi0tCTEuIFN0 b3JlIHdlYWsgcmVmZXJlbmNlcwotLQkyLiBBZGQgU1RPUkFCTEVfYXR0YWNoIGhvb2suCi0rICAt IChwZXJsICMxMzQxNzkpIGZpeCBzZWxmLXJlZmVyZW5jaW5nIHN0cnVjdHVyZXMgdGhhdCBpbmNs dWRlIHJlZ2V4cHMKLSAKLS1UaHUgSnVuIDE3IDEyOjI2OjQzIEJTVCAyMDA0ICAgTmljaG9sYXMg Q2xhcmsgPG5pY2tAY2NsNC5vcmc+Ci0rICAtIGJsZXNzIHJlZ2V4cHMgdG8gcHJlc2VydmUgYmxl c3MgcXIvLywgIkZvbyIKLSAKLS0gICAgVmVyc2lvbiAyLjEzCi0rMy4xNSAtIDIwMTktMDQtMjMg MTY6MDA6MDAgeHNhd3llcngKLSAKLS0gICAgICAgIDEuIERvbid0IGNoYW5nZSB0aGUgdHlwZSBv ZiB0b3AgbGV2ZWwgb3ZlcmxvYWRlZCByZWZlcmVuY2VzIHRvIFJWIC0KLS0JICAgdGhleSBhcmUg cGVyZmVjdGx5IGNvcnJlY3QgYXMgUFZNRwotLQkyLiBTdG9yYWJsZSBuZWVkcyB0byBjb3BlIHdp dGggaW5jb21pbmcgZnJvemVuIGRhdGEgdGhhdCBoYXBwZW5zIHRvIGJlCi0tCSAgIHV0ZjggZW5j b2RlZC4KLSsgIC0gRml4IGxlYWtpbmcuCi0gCi0tV2VkIE1hciAxNyAxNTo0MDoyOSBHTVQgMjAw NCAgIE5pY2hvbGFzIENsYXJrIDxuaWNrQGNjbDQub3JnPgotKzMuMTQgLSB1bnJlbGVhc2VkCi0g Ci0tICAgIFZlcnNpb24gMi4xMgotKyAgLSAocGVybCAjMTMzNzA4KSBkb24ndCBidWlsZC10aW1l IHByb2JlIGZvciBzdGFjayBsaW1pdHMgYXQgYWxsCi0gCi0tICAgICAgICAxLiBBZGQgcmVncmVz c2lvbiB0ZXN0cyBmb3IgdGhlIGF1dG8tcmVxdWlyZSBvZiBTVE9SQUJMRV90aGF3Ci0tICAgICAg ICAyLiBBZGQgYXV0by1yZXF1aXJlIG9mIG1vZHVsZXMgdG8gcmVzdG9yZSBvdmVybG9hZGluZyAo YW5kIHRlc3RzKQotLSAgICAgICAgMy4gQ2hhbmdlIHRvIG5vIGNvbnRleHQgKHNob3VsZCBnaXZl IHNwZWVkdXAgd2l0aCBpdGhyZWFkcykKLSszLjEyIC0gdW5yZWxlYXNlZAotIAotLVNhdCBNYXIg MTMgMjA6MTE6MDMgR01UIDIwMDQgICBOaWNob2xhcyBDbGFyayA8bmlja0BjY2w0Lm9yZz4KLS0J Ci0tICAgIFZlcnNpb24gMi4xMQotKyAgLSAocGVybCAjMTMzNDExKSBkb24ndCBwcm9iZSBmb3Ig c3RhY2sgbGltaXRzIHdpdGggLUR1c2Vjcm9zc2NvbXBpbGUKLSAKLS0gICAgICAgIDEuIFN0b3Jp bmcgcmVzdHJpY3RlZCBoYXNoZXMgaW4gY2Fub25pY2FsIG9yZGVyIHdvdWxkIFNFR1YuIEZpeGVk LgotLSAgICAgICAgMi4gSXQgd2FzIGltcG9zc2libGUgdG8gcmV0cmlldmUgcmVmZXJlbmNlcyB0 byBQTF9zdl9ubyBhbmQKLS0gICAgICAgICAgIFBMX3N2X3VuZGVmIGZyb20gU1RPUkFCTEVfdGhh dyBob29rcy4KLS0gICAgICAgIDMuIHJlc3RyaWN0LnQgd2FzIGZhaWxpbmcgb24gNS44LjAsIGR1 ZSB0byA1LjguMCdzIHVuaXF1ZQotLSAgICAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgcmVzdHJp Y3RlZCBoYXNoZXMgdXNpbmcgUExfc3ZfdW5kZWYKLS0gICAgICAgIDQuIFRoZXNlIGNoYW5nZXMg YWxsb3cgYSBzcGFjZSBvcHRpbWlzYXRpb24gZm9yIHJlc3RyaWN0ZWQgaGFzaGVzLgotKzMuMTEg LSAyMDE4LTA0LTI3IDIwOjQwOjAwIHhzYXd5ZXJ4Ci0gCi0tU2F0IEphbiAyNCAxNjoyMjozMiBJ U1QgMjAwNCAgIEFiaGlqaXQgTWVub24tU2VuIDxhbXNAd2l3Lm9yZz4KLSsgIC0gRml4IFN0cmF3 YmVycnkgUGVybCBidWlsZCBmYWlsdXJlcy4KLSAKLS0gICAgVmVyc2lvbiAyLjEwCi0rMy4xMCAt IDIwMTgtMDQtMjEgMjI6MDA6MDAgeHNhd3llcngKLSAKLS0gICAgICAgIDEuIFRocmVhZCBzYWZl dHk6IFN0b3JhYmxlOjpDTE9ORS9pbml0X3BlcmxpbnRlcnAoKSBub3cgY3JlYXRlCi0tICAgICAg ICAgICBhIG5ldyBQZXJsIGNvbnRleHQgZm9yIGVhY2ggbmV3IGl0aHJlYWQuCi0tICAgICAgICAg ICAoRnJvbSBTdGFzIEJla21hbiBhbmQgSmFuIER1Ym9pcy4pCi0tICAgICAgICAyLiBGaXggYSB0 YWcgY291bnQgbWlzbWF0Y2ggd2l0aCAkU3RvcmFibGU6OkRlcGFyc2UgdGhhdCBjYXVzZWQKLS0g ICAgICAgICAgIGFsbCBiYWNrLXJlZmVyZW5jZXMgYWZ0ZXIgYSBzdG9yZWQgc3ViIHRvIGJlIG9m Zi1ieS1OICh3aGVyZQotLSAgICAgICAgICAgTiB3YXMgdGhlIG51bWJlciBvZiBjb2RlIHJlZmVy ZW5jZXMgaW4gYmV0d2VlbikuCi0tICAgICAgICAgICAoRnJvbSBTYW0gVmlsYWluLikKLS0gICAg ICAgIDMuIFByZXZlbnQgQ09ERSByZWZlcmVuY2VzIGZyb20gdHVybmluZyBpbnRvIFNDQUxBUiBy ZWZlcmVuY2VzLgotLSAgICAgICAgICAgKEZyb20gU2xhdmVuIFJlemljLikKLSsgIC0gRml4IGJp bmFyeSBhcnRpZmFjdHMgZnJvbSBkaXN0cmlidXRpb24uCi0gCi0tU2F0IEphbiAgMyAxODo0OTox OCBHTVQgMjAwNCAgIE5pY2hvbGFzIENsYXJrIDxuaWNrQGNjbDQub3JnPgotKzMuMDkgLSAyMDE4 LTA0LTIxIDE2OjQ5OjAwIHhzYXd5ZXJ4Ci0gCi0tICAgIFZlcnNpb24gMi4wOQotKyAgLSBGaXgg InByb3ZpZGVzIiBpbiBtZXRhZGF0YSAoTUVUQS55bWwvTUVUQS5qc29uKSB0byB1c2UgdGhlIFN0 b3JhYmxlCi0rICAgIHRlbXBsYXRlIGluc3RlYWQgb2YgYSBzbWFsbCBvdGhlciBmaWxlICh3aGlj aCBhbHNvIGRpZG4ndCBleGlzdCkuCi0gCi0tCUZpeCBtaW5vciBwcm9ibGVtcyB3aXRoIHRoZSBD UEFOIHJlbGVhc2UKLS0JMTogTWFrZSBTdG9yYWJsZS54cyB3b3JrIG9uIDUuOC4yIGFuZCBsYXRl ciAoYWxyZWFkeSBpbiB0aGUgY29yZSkKLS0JMjogU2hpcCB0aGUgbGludXggaGludHMgZmlsZQot LQkzOiBTaGlwIFRlc3Q6Ok1vcmUgZm9yIHRoZSBiZW5lZml0IG9mIFBlcmxzIHByZSA1LjYuMgot LQk0OiBDb3JyZWN0IE1ha2VmaWxlLlBMIHRvIG9ubHkgaW5zdGFsbCBpbiBjb3JlIGZvciA1Ljgu MCBhbmQgbGF0ZXIKLSszLjA4IC0gMjAxOC0wNC0yMSAxMToyMzowMCB4c2F3eWVyeAotIAotLVNh dCBTZXAgIDYgMDE6MDg6MjAgSVNUIDIwMDMgICBBYmhpaml0IE1lbm9uLVNlbiA8YW1zQHdpdy5v cmc+Ci0rICAtIChwZXJsICMxMzI4NDkpIHRyeSB0byBkaXNhYmxlIGNvcmUgZmlsZXMgd2hlbiBk ZWxpYmVyYXRseSBzZWdmYXVsdGluZy4KLSAKLS0gICAgVmVyc2lvbiAyLjA4Ci0rICAtIChwZXJs ICMxMjc3NDMpIGRvbid0IHByb2JlIFN0b3JhYmxlIGxpbWl0cyBzbyBtdWNoLgotIAotLSAgICAg ICAgVGhpcyByZWxlYXNlIHdvcmtzIGFyb3VuZCBhIDUuOC4wIGJ1ZyB3aGljaCBjYXVzZWQgaGFz aGVzIHRvIG5vdAotLSAgICAgICAgYmUgbWFya2VkIGFzIGhhdmluZyBrZXkgZmxhZ3MgZXZlbiB0 aG91Z2ggYW4gSEVLIGhhZCBIRUtfV0FTVVRGOAotLSAgICAgICAgc2V0LiAoTm90ZSB0aGF0IHRo ZSBvbmx5IHJlYXNvbmFibGUgc29sdXRpb24gaXMgdG8gc2lsZW50bHkgZHJvcAotLSAgICAgICAg dGhlIGZsYWcgZnJvbSB0aGUgYWZmZWN0ZWQga2V5LikKLSsgIC0gKHBlcmwgIzEzMjg5MykgZG9u J3QgcHJvYmUgZm9yIFN0b3JhYmxlIHJlY3Vyc2lvbiBsaW1pdHMgb24gb2xkIFdpbjMyLgotIAot LSAgICAgICAgVXNlcnMgb2YgUlQgMyB3aG8gd2VyZSBzZWVpbmcgYXNzZXJ0aW9uIGZhaWx1cmVz IHNob3VsZCB1cGdyYWRlLgotLSAgICAgICAgKFBlcmwgNS44LjEgd2lsbCBoYXZlIHRoZSBidWcg Zml4ZWQuKQotKyAgLSAocGVybCAjMTMyODcwKSB3b3JrYXJvdW5kIFZDMjAxNyBjb21waWxlciBi dWcuCi0gCi0tTW9uIE1heSAgNSAxMDoyNDoxNiBJU1QgMjAwMyAgIEFiaGlqaXQgTWVub24tU2Vu IDxhbXNAd2l3Lm9yZz4KLSsgIC0gKHBlcmwgIzEyNzc0MykgcmUtd29yayBmb3IgZGVidWdnaW5n IGJ1aWxkcyB3aXRoIE1TVkMuCi0gCi0tICAgIFZlcnNpb24gMi4wNwotKyAgLSAocGVybCAjMTMz MDM5KSBkb250IGJ1aWxkIGEgU3RvcmFibGUuc28vLmRsbCB3aXRoIGEgc3RhdGljIHBlcmwgYnVp bGQuCi0gCi0tICAgICAgICBNaW5vciBidWdmaXhlcyAoc2VsZi10aWVkIG9iamVjdHMgYXJlIG5v dyBjb3JyZWN0bHkgc3RvcmVkLCBhcwotLSAgICAgICAgYXJlIHRoZSByZXN1bHRzIG9mIGFkZGl0 aW9ucyBsYXJnZXIgdGhhbiBJTlRfTUFYKS4KLSszLjA2IC0gMjAxOC0wMi0wNyAxNTowODowMCB0 b255YwotIAotLU1vbiBPY3QgIDcgMjE6NTY6MzggQlNUIDIwMDIgICBOaWNob2xhcyBDbGFyayAg PG5pY2tAY2NsNC5vcmc+Ci0rICAtIHN1cHBvcnQgbGFyZ2Ugb2JqZWN0IGlkcy4gIFRoZSBjb2Rl IGluIHRoZW9yeSBzdXBwb3J0ZWQgYXJyYXlzCi0rICAgIHdpdGggbW9yZSB0aGFuIDIqKjMyIGVs ZW1lbnRzLCBidXQgcmVmZXJlbmNlcyB0byB0aGUgZWxlbWVudHMKLSsgICAgZW1pdHRlZCBhdCB0 aGUgZW5kIG9mIHRoZSBhcnJheSB3aXRoIGJlIHJldHJpZXZlZCBhcyByZWZlcmVuY2VzIHRvCi0r ICAgIHRoZSB3cm9uZyBlbGVtZW50cy4KLSAKLS0gICAgVmVyc2lvbiAyLjA2Ci0rICAtIDMyLWJp dCBvYmplY3QgaWRzIG92ZXIgMioqMzEtMSB3ZXJlbid0IGNvcnJlY3RseSBoYW5kbGVkLgotIAot LQlSZW1vdmUgcXIvLyBmcm9tIHQvZG93bmdyYWRlLnQgc28gdGhhdCBpdCB3aWxsIHJ1biBvbiA1 LjAwNAotLQlNZW50aW9uICRGaWxlOjpTcGVjOjpWRVJTSU9OIGEgc2Vjb25kIHRpbWUgaW4gdC9m b3JnaXZlLnQgc28gdGhhdCBpdAotLQlydW5zIHdpdGhvdXQgd2FybmluZ3MgaW4gNS4wMDQgKHRo aXMgbWF5IGJlIGEgNS4wMDQwNSBidWcgSSdtIHdvcmtpbmcKLS0Jcm91bmQpCi0tCUZpeCB0L2lu dGVnZXIudCBpbml0aWFsaXNhdGlvbiB0byBhY3R1YWxseSBnZW5lcmF0ZSA2NCBiaXRzIG9mIDlj Ci0tCUZpeCBjb21wYXJpc29uIHRlc3RzIHRvIHVzZSBldmFsIHRvIGdldCBhcm91bmQgNjQgYml0 IElWIGNvbnZlcnNpb24KLS0JaXNzdWVzIG9uIDUuNi54LCBmb2xsb3dpbmcgbXkgdC9pbnRlZ2Vy LnQgXiBwcmVjZWRlbmNlIGJ1ZyBmb3VuZCBieQotLQlSYWZhZWwgR2FyY2lhLVN1YXJlegotLQlB bHRlciB0L21hbGljZS50IHRvIHdvcmsgd2l0aCBUZXN0L01vcmUucG0gaW4gdC8sIGFuZCBza2lw IGluZGl2aWR1YWwKLS0Jc3VidGVzdHMgdGhhdCB1c2UgJENvbmZpZ3twdHJzaXplfSwgc28gdGhh dCB0aGUgcmVzdCBvZiB0aGUgdGVzdCBjYW4KLS0Jbm93IGJlIHJ1biB3aXRoIDUuMDA0Ci0tCUNo YW5nZSB0L21hbGljZS50IGFuZCB0aGUgZXJyb3IgbWVzc2FnZSBpbiBjaGVja19tYWdpYyBpbiBT dG9yYWJsZS54cwotLQlmcm9tICJQb2ludGVyIGludGVnZXIgc2l6ZSIgdG8gIlBvaW50ZXIgc2l6 ZSIKLS0JUmVtb3ZlIHByZXJlcXVpc2l0ZSBvZiBUZXN0OjpNb3JlIGZyb20gTWFrZWZpbGUuUEwK LS0JU2hpcCBUZXN0OjpCdWlsZGVyLCBUZXN0OjpTaW1wbGUgYW5kIFRlc3Q6Ok1vcmUgaW4gdAot LQotLVRodSBPY3QgIDMgMDg6NTc6MjIgSVNUIDIwMDIgICBBYmhpaml0IE1lbm9uLVNlbiA8YW1z QHdpdy5vcmc+Ci0tCi0tICAgIFZlcnNpb24gMi4wNQotLQotLSAgICAgICAgQWRkcyBzdXBwb3J0 IGZvciBDT0RFIHJlZmVyZW5jZXMgZnJvbSBTbGF2ZW4gUmV6aWMKLS0gICAgICAgIDxzbGF2ZW4u cmV6aWNAYmVybGluLmRlPi4KLS0KLS1GcmkgSnVuICA3IDIzOjU1OjQxIEJTVCAyMDAyICAgTmlj aG9sYXMgQ2xhcmsKLS0KLS0gICAgVmVyc2lvbiAyLjA0Ci0tCi0tCUJ1ZyBmaXggZnJvbSBSYWR1 IEdyZWFiIDxyYWR1QG5ldHNvZnQucm8+IChwbHVzIHJlZ3Jlc3Npb24gdGVzdCkKLS0JdG8gZml4 IGEgcmVjZW50bHkgaW50cm9kdWNlZCBidWcgZGV0ZWN0ZWQgYnkgRGF2ZSBSb2xza3kuCi0tCUJ1 ZyB3YXMgdGhhdCBmb3IgYSBub24gdGhyZWFkZWQgYnVpbGQsIHRoZSBjbGFzcyBpbmZvcm1hdGlv biB3YXMKLS0JYmVpbmcgbG9zdCBhdCBmcmVlemUgdGltZSBvbiB0aGUgZmlyc3Qgb2JqZWN0IHdp dGggYSBTVE9SQUJMRV9mcmVlemUKLS0JaG9vay4gQ29uc2VxdWVudGlhbGx5IHRoZSBvYmplY3Qg d2FzIG5vdCBibGVzc2VkIGF0IGFsbCB3aGVuIHRoYXdlZC4KLS0JKFRoZSBwcmVzZW5jZSAob3Ig bGFjaykgb2YgU1RPUkFCTEVfdGhhdyB3YXMgaXJyZWxldmFudDsgdGhpcyB3YXMKLS0JYSBzdG9y ZS10aW1lIGRhdGEgbG9zdCBidWcsIGNhdXNlZCBieSBmYWlsdXJlIHRvIGluaXRpYWxpemUgaW50 ZXJuYWwKLS0JY29udGV4dCkKLS0JVGhlIGJ1ZyB3YXMgaW50cm9kdWNlZCBhcyBkZXZlbG9wbWVu dCBwZXJsIGNoYW5nZSAxNjQ0MiAob24KLS0JMjAwMi8wNS8wNyksIHNvIGhhcyBiZWVuIHByZXNl bnQgc2luY2UgMi4wMC4KLS0JUGF0Y2hlcyB0byBpbnRyb2R1Y2UgbW9yZSByZWdyZXNzaW9uIHRl c3RzIHRvIHJlZHVjZSB0aGUgY2hhbmNlIG9mCi0tCWEgcmVvY2N1cnJlbmNlIG9mIHRoaXMgc29y dCBvZiBnb29mIGFyZSBhbHdheXMgd2VsY29tZS4KLS0JCi0tVGh1IE1heSAzMCAyMDozMTowOCBC U1QgMjAwMiAgIE5pY2hvbGFzIENsYXJrIDxuaWNrQGNjbDQub3JnPgotLQotLSAgICBWZXJzaW9u IDIuMDMgICAgICAgIEhlYWRlciBjaGFuZ2VzIG9uIDUuNi54IG9uIFVuaXggd2hlcmUgSVYgaXMg bG9uZyBsb25nCi0tCi0tICAgICAgICA1LjYueCBpbnRyb2R1Y2VkIHRoZSBhYmlsaXR5IHRvIGhh dmUgSVZzIGFzIGxvbmcgbG9uZy4gIEhvd2V2ZXIsCi0tICAgICAgICBDb25maWd1cmUgc3RpbGwg ZGVmaW5lZCBCWVRFT1JERVIgYmFzZWQgb24gdGhlIHNpemUgb2YgYSBsb25nLgotLSAgICAgICAg U3RvcmFibGUgdXNlcyB0aGUgQllURU9SREVSIHZhbHVlIGFzIHBhcnQgb2YgdGhlIGhlYWRlciwg YnV0Ci0tICAgICAgICBkb2Vzbid0IGV4cGxpY2l0bHkgc3RvcmUgc2l6ZW9mKElWKSBhbnl3aGVy ZSBpbiB0aGUgaGVhZGVyLgotLSAgICAgICAgSGVuY2Ugb24gNS42LnggYnVpbHQgd2l0aCBJViBh cyBsb25nIGxvbmcgb24gYSBwbGF0Zm9ybSB0aGF0Ci0tICAgICAgICB1c2VzIENvbmZpZ3VyZSAo aWUgbW9zdCB0aGluZ3MgZXhjZXB0IFZNUyBhbmQgV2luZG93cykgaGVhZGVycwotLSAgICAgICAg YXJlIGlkZW50aWNhbCBmb3IgdGhlIGRpZmZlcmVudCBJViBzaXplcywgZGVzcGl0ZSB0aGUgZmls ZXMKLS0gICAgICAgIGNvbnRhaW5pbmcgc29tZSBmaWVsZHMgYmFzZWQgb24gc2l6ZW9mKElWKQot LQotLSAgICAgICAgNS44LjAgaXMgY29uc2lzdGVudDsgYWxsIHBsYXRmb3JtcyBoYXZlIEJZVEVP UkRFUiBpbiBjb25maWcuaAotLSAgICAgICAgYmFzZWQgb24gc2l6ZW9mKElWKSByYXRoZXIgdGhh biBzaXplb2YobG9uZykuICBUaGlzIG1lYW5zIHRoYXQKLS0gICAgICAgIHRoZSB2YWx1ZSBvZiBC WVRFT1JERVIgd2lsbCBjaGFuZ2UgZnJvbSAoc2F5KSA0MzIxIHRvIDg3NjU0MzIxCi0tICAgICAg ICBiZXR3ZWVuIDUuNi4xIGFuZCA1LjguMCBidWlsdCB3aXRoIHRoZSBzYW1lIG9wdGlvbnMgdG8g Q29uZmlndXJlCi0tICAgICAgICBvbiB0aGUgc2FtZSBtYWNoaW5lLiAgVGhpcyBtZWFucyB0aGF0 IHRoZSBTdG9yYWJsZSBoZWFkZXIgd2lsbAotLSAgICAgICAgZGlmZmVyLCBhbmQgdGhlIHR3byB2 ZXJzaW9ucyB3aWxsIHdyb25nbHkgdGhpbmcgdGhhdCB0aGV5IGFyZQotLSAgICAgICAgaW5jb21w YXRpYmxlLgotLQotLSAgICAgICAgRm9yIHRoZSBiZW5lZml0IG9mIGxvbmcgdGVybSBjb25zaXN0 ZW5jeSwgU3RvcmFibGUgbm93Ci0tICAgICAgICBpbXBsZW1lbnRzIHRoZSA1LjguMCBCWVRFT1JE RVIgcG9saWN5IG9uIDUuNi54LiAgVGhpcyBtZWFucyB0aGF0Ci0tICAgICAgICAyLjAzIG9ud2Fy ZHMgZGVmYXVsdCB0byBiZSBpbmNvbXBhdGlibGUgd2l0aCAyLjAyIGFuZCBlYXJsaWVyCi0tICAg ICAgICAoaWUgdGhlIGxhcmdlIDEuMC54IGluc3RhbGxlZCBiYXNlKSBvbiB0aGUgc2FtZSA1LjYu eCBwZXJsLgotLQotLSAgICAgICAgVG8gYWxsb3cgaW50ZXJ3b3JraW5nLCBhIG5ldyB2YXJpYWJs ZQotLSAgICAgICAgJFN0b3JhYmxlOjppbnRlcndvcmtfNTZfNjRiaXQgaXMgaW50cm9kdWNlZC4g SXQgZGVmYXVsdHMgdG8KLS0gICAgICAgIGZhbHNlLiBTZXQgaXQgdG8gdHJ1ZSB0byByZWFkIGFu ZCB3cml0ZSBvbGQgZm9ybWF0IGZpbGVzLiBEb24ndAotLSAgICAgICAgdXNlIGl0IHVubGVzcyB5 b3UgaGF2ZSBleGlzdGluZyBzdG9yZWQgZGF0YSB3cml0dGVuIHdpdGggNS42LngKLS0gICAgICAg IHRoYXQgeW91IGNvdWxkbid0IG90aGVyd2lzZSByZWFkLCBvciB5b3UgbmVlZCB0byBpbnRlcndv cmsgd2l0aAotLSAgICAgICAgYSBtYWNoaW5lIHJ1bm5pbmcgb2xkZXIgU3RvcmFibGUgb24gYSA1 LjYueCB3aXRoIGxvbmcgbG9uZyBJVnMKLS0gICAgICAgIChpLmUuLCB5b3UgcHJvYmFibHkgZG9u J3QgbmVlZCB0byB1c2UgaXQpLgotLQotLVNhdCBNYXkgMjUgMjI6Mzg6MzkgQlNUIDIwMDIgICBO aWNob2xhcyBDbGFyayA8bmlja0BjY2w0Lm9yZz4KLS0KLS0gICAgVmVyc2lvbiAyLjAyCi0tICAg ICAgICAgICAgICAgIAotLSAgICAgICAgUmV3cml0ZSBTdG9yYWJsZS54cyBzbyB0aGF0IHRoZSBm aWxlIGhlYWRlciBzdHJ1Y3R1cmUgZm9yIHdyaXRlX21hZ2ljCi0tICAgICAgICBpcyBidWlsdCBh dCBjb21waWxlIHRpbWUsIGFuZCBjaGVja19tYWdpYyBhdHRlbXB0cyB0byB0aGUgaGVhZGVyIGlu Ci0tICAgICAgICBibG9ja3MgcmF0aGVyIHRoYW4gYnl0ZSBwZXIgYnl0ZS4gVGhlc2UgY2hhbmdl cyBtYWtlIHRoZSBjb21waWxlZAotLSAgICAgICAgZXh0ZW5zaW9uIDIuMjUlIHNtYWxsZXIsIGJ1 dCBhcmUgbm90IHNpZ25pZmljYW50IGVub3VnaCB0byBnaXZlIGEKLS0gICAgICAgIG5vdGljZWFi bGUgc3BlZWQgdXAuCi0tCi0tVGh1IE1heSAyMyAyMjo1MDo0MSBCU1QgMjAwMiAgIE5pY2hvbGFz IENsYXJrIDxuaWNrQGNjbDQub3JnPgotLQotLSAgICBWZXJzaW9uIDIuMDEKLS0KLS0gICAgICAg IC0gTmV3IHJlZ3Jlc3Npb24gdGVzdHMgaW50ZWdlci50Ci0tICAgICAgICAtIEFkZCBjb2RlIHRv IHNhZmVseSBzdG9yZSBsYXJnZSB1bnNpZ25lZCBpbnRlZ2Vycy4KLS0gICAgICAgIC0gQ2hhbmdl IGNvZGUgbm90IHRvIGF0dGVtcHQgdG8gc3RvcmUgbGFyZ2UgaW50ZWdlcnMgKGllID4gMzIgYml0 cykKLS0gICAgICAgICAgaW4gbmV0d29yayBvcmRlciBhcyAzMiBiaXRzLgotLSAgICAgICAgCi0t ICAgICAgICAqTmV2ZXIqIHVuZGVyZXN0aW1hdGUgdGhlIHZhbHVlIG9mIGEgcGF0aG9sb2dpY2Fs IHRlc3Qgc3VpdGUgY2FyZWZ1bGx5Ci0tICAgICAgICBjcmFmdGVkIHdpdGggbWF4aW11bSBtYWxp Y2UgYmVmb3JlIHdyaXRpbmcgYSBsaW5lIG9mIHJlYWwgY29kZS4gSXQKLS0gICAgICAgIHByZXZl bnRzIGNyYWZ0eSBidWdzIGZyb20gc3Rvd2luZyBhd2F5IGluIHlvdXIgcmVsZWFzZWQgY29kZS4K LS0gICAgICAgIEl0J3MgbXVjaCBsZXNzIGVtYmFycmFzc2luZyB0byBmaW5kIHRoZW0gYmVmb3Jl IHlvdSBzaGlwLgotLSAgICAgICAgKFdlbGwsIG5ldmVyIHVuZGVyZXN0aW1hdGUgaXQgaWYgeW91 IGV2ZXIgd2FudCB0byB3b3JrIGZvciBtZSkKLS0gICAgICAgIAotLUZyaSBNYXkgMTcgMjI6NDg6 NTkgQlNUIDIwMDIgICBOaWNob2xhcyBDbGFyayA8bmlja0BjY2w0Lm9yZz4KLS0KLS0gICAgVmVy c2lvbiAyLjAsIGJpbmFyeSBmb3JtYXQgMi41IChidXQgd3JpdGVzIGZvcm1hdCAyLjQgb24gcHJl IDUuNy4zKQotLQotLSAgICAgICAgVGhlIHBlcmw1IHBvcnRlcnMgaGF2ZSBkZWNpZGVkIHRvIG1h a2Ugc3VyZSB0aGF0IFN0b3JhYmxlIHN0aWxsCi0tICAgICAgICBidWlsZHMgb24gcHJlLTUuOCBw ZXJscywgYW5kIG1ha2UgdGhlIDUuOCB2ZXJzaW9uIGF2YWlsYWJsZSBvbiBDUEFOLgotLSAgICAg ICAgVGhlIFZFUlNJT04gaXMgbm93IDIuMCwgYW5kIGl0IHBhc3NlcyBhbGwgdGVzdHMgb24gNS4w MDVfMDMsIDUuNi4xCi0tICAgICAgICBhbmQgNS42LjEgd2l0aCB0aHJlYWRzLiBPbiA1LjYuMCB0 L2Rvd25ncmFkZS50IGZhaWxzIHRlc3RzIDM0IGFuZCAzNywKLS0gICAgICAgIGR1ZSB0byBhIGJ1 ZyBpbiA1LjYuMCAtIHVwZ3JhZGUgdG8gNS42LjEuCi0tCi0tICAgICAgICBKYXJra28gYW5kIEkg aGF2ZSBjb2xsYXRlZCB0aGUgbGlzdCBvZiBjaGFuZ2VzIHRoZSBwZXJsNSBwb3J0ZXJzIGhhdmUK LS0gICAgICAgIGZyb20gdGhlIHBlcmw1IENoYW5nZXMgZmlsZToKLS0KLS0gICAgICAgIC0gZGF0 YSBmZWF0dXJlcyBvZiB1cGNvbWluZyBwZXJsIDUuOC4wIGFyZSBzdXBwb3J0ZWQ6IFVuaWNvZGUg aGFzaAotLSAgICAgICAgICBrZXlzIChVbmljb2RlIGhhc2ggdmFsdWVzIGhhdmUgYmVlbiBzdXBw b3J0ZWQgc2luY2UgU3RvcmFibGUgMS4wLjEpCi0tICAgICAgICAgIGFuZCAicmVzdHJpY3RlZCBo YXNoZXMiIChyZWFkb25seSBoYXNoZXMgYW5kIGhhc2ggZW50cmllcykKLS0gICAgICAgIC0gYSBu ZXdlciB2ZXJzaW9uIG9mIHBlcmwgY2FuIG5vdyBiZSB1c2VkIHRvIHNlcmlhbGl6ZSBkYXRhIHdo aWNoIGlzCi0tICAgICAgICAgIG5vdCBzdXBwb3J0ZWQgaW4gZWFybGllciBwZXJsczogU3RvcmFi bGUgd2lsbCBhdHRlbXB0IHRvIGRvIHRoZQotLSAgICAgICAgICByaWdodCB0aGluZyBmb3IgYXMg bG9uZyBhcyBwb3NzaWJsZSwgY3JvYWtpbmcgb25seSB3aGVuIHNhZmUgZGF0YQotLSAgICAgICAg ICBjb252ZXJzaW9uIHNpbXBseSBpc24ndCBwb3NzaWJsZS4gQWx0ZXJuYXRpdmVseSBlYXJsaWVy IHBlcmxzIGNhbgotLSAgICAgICAgICBvcHQgdG8gaGF2ZSBhIGxvc3N5IGRvd25ncmFkZSBkYXRh IGluc3RlYWQgb2YgY3JvYWtpbmcKLS0gICAgICAgIC0gd2hlbiBidWlsdCB3aXRoIHBlcmxzIHBy ZSA1LjcuMyB0aGlzIFN0b3JhYmxlIHdyaXRlcyBvdXQgZmlsZXMKLS0gICAgICAgICAgd2l0aCBi aW5hcnkgZm9ybWF0IDIuNCwgdGhlIHNhbWUgZm9ybWF0IGFzIFN0b3JhYmxlIDEuMC44IG9ud2Fy ZHMuCi0tICAgICAgICAgIFRoaXMgc2hvdWxkIG1lYW4gdGhhdCB0aGlzIFN0b3JhYmxlIHdpbGwg aW50ZXItb3BlcmF0ZSBzZWFtbGVzc2x5Ci0tICAgICAgICAgIHdpdGggYW55IFN0b3JhYmxlIDEu MC44IG9yIG5ld2VyIG9uIHBlcmxzIHByZSA1LjcuMwotLSAgICAgICAgLSBkY2xvbmUoKSBub3cg d29ya3Mgd2l0aCBlbXB0eSBzdHJpbmcgc2NhbGFyIG9iamVjdHMKLS0gICAgICAgIC0gcmV0cmll dmluZyBvZiBsYXJnZSBoYXNoZXMgaXMgbm93IG1vcmUgZWZmaWNpZW50Ci0tICAgICAgICAtIG1v cmUgcm91dGluZXMgYXV0b3NwbGl0IG91dCBvZiB0aGUgbWFpbiBtb2R1bGUsIHNvIFN0b3JhYmxl IHNob3VsZAotLSAgICAgICAgICBsb2FkIHNsaWdodGx5IG1vcmUgcXVpY2tseQotLSAgICAgICAg LSBiZXR0ZXIgZG9jdW1lbnRhdGlvbgotLSAgICAgICAgLSB0aGUgaW50ZXJuYWwgY29udGV4dCBv YmplY3RzIGFyZSBub3cgZnJlZWQgZXhwbGljaXRseSwgcmF0aGVyIHRoYW4KLS0gICAgICAgICAg cmVseWluZyBvbiB0aHJlYWQgb3IgcHJvY2VzcyBleGl0Ci0tICAgICAgICAtIGJ1Z3MgZml4ZWQg aW4gZGVidWdnaW5nIHRyYWNlIGNvZGUgYWZmZWN0aW5nIGJ1aWxkcyBtYWRlIHdpdGggNjQgYml0 Ci0tICAgICAgICAgIElWcwotLSAgICAgICAgLSBjb2RlIHRpZHktdXBzIHRvIGFsbG93IGNsZWFu IGNvbXBpbGVzIHdpdGggbW9yZSB3YXJuaW5nIG9wdGlvbnMKLS0gICAgICAgICAgdHVybmVkIG9u IGF2b2lkIHByb2JsZW1zIHdpdGggJEAgZ2V0dGluZyBjb3JydXB0ZWQgb24gNS4wMDVfMDMgaWYK LS0gICAgICAgICAgQ2FycCB3YXNuJ3QgYWxyZWFkeSBsb2FkZWQKLS0gICAgICAgIC0gYWRkZWQg JnNob3dfZmlsZV9tYWdpYywgc28geW91IGNhbiBhZGQgdG8gL2V0Yy9tYWdpYyBhbmQgdGVhY2gK LS0gICAgICAgICAgVW5peCdzIGZpbGUgY29tbWFuZCBhYm91dCBTdG9yYWJsZSBmaWxlcwotLQot LSAgICAgICAgV2UgcGxhbiB0byBrZWVwIFN0b3JhYmxlIG9uIENQQU4gaW4gc3luYyB3aXRoIHRo ZSBQZXJsIGNvcmUsIHNvCi0tICAgICAgICBpZiB5b3UgZW5jb3VudGVyIGJ1Z3Mgb3Igb3RoZXIg cHJvYmxlbXMgYnVpbGRpbmcgb3IgdXNpbmcgU3RvcmFibGUsCi0tICAgICAgICBwbGVhc2UgbGV0 IHVzIGtub3cgYXQgcGVybDUtcG9ydGVyc0BwZXJsLm9yZwotLSAgICAgICAgUGF0Y2hlcyB3ZWxj b21lIQotLSAgICAgICAgCi0tU2F0IERlYyAgMSAxNDozNzo1NCBNRVQgMjAwMSAgIFJhcGhhZWwg TWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3guY29tPgotLQotLSAgICAgICAgVGhpcyBp cyB0aGUgTEFTVCBtYWludGVuYW5jZSByZWxlYXNlIG9mIHRoZSBTdG9yYWJsZSBtb2R1bGUuCi0t ICAgICAgICBJbmRlZWQsIFN0b3JhYmxlIGlzIG5vdyBwYXJ0IG9mIHBlcmwgNS44LCBhbmQgd2ls bCBiZSBtYWludGFpbmVkCi0tICAgICAgICBhcyBwYXJ0IG9mIFBlcmwuICBUaGUgQ1BBTiBtb2R1 bGUgd2lsbCByZW1haW4gYXZhaWxhYmxlIHRoZXJlCi0tICAgICAgICBmb3IgcGVvcGxlIHJ1bm5p bmcgcHJlLTUuOCBwZXJscy4KLS0KLS0gICAgICAgIEF2b2lkIHJlcXVpcmluZyBGY250bCB1cGZy b250LCB1c2VmdWwgdG8gZW1iZWRkZWQgcnVudGltZXMuCi0tICAgICAgICBVc2UgYW4gZXZhbCB7 fSBmb3IgdGVzdGluZywgaW5zdGVhZCBvZiBtYWtpbmcgU3RvcmFibGUucG0KLS0gICAgICAgIHNp bXBseSBmYWlsIGl0cyBjb21waWxhdGlvbiBpbiB0aGUgQkVHSU4gYmxvY2suCi0tCi0tICAgICAg ICBzdG9yZV9mZCgpIHdpbGwgbm93IGNvcnJlY3RseSBhdXRvZmx1c2ggZmlsZSBpZiBuZWVkZWQu Ci0rICAtIGhvb2sgb2JqZWN0IGlkIGdlbmVyYXRpb24gbm93IHN1cHBvcnRzIDY0LWJpdCBpZHMg d2hlcmUgbmVlZGVkCi0gCi0tVHVlIEF1ZyAyOCAyMzo1MzoyMCBNRVNUIDIwMDEgICBSYXBoYWVs IE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSsgIC0gd3JpdGluZyA2NC1i aXQgbGVuZ3RocyBpbiBuZXR3b3JrIG9yZGVyIG5vdyB3b3JrcwotIAotLSAgICAgICAgRml4ZWQg dHJ1bmNhdGlvbiByYWNlIHdpdGggbG9ja19yZXRyaWV2ZSgpIGluIGxvY2tfc3RvcmUoKS4KLS0g ICAgICAgIFRoZSBmaWxlIGhhcyB0byBiZSB0cnVuY2F0ZWQgb25seSBvbmNlIHRoZSBleGNsdXNp dmUgbG9jayBpcyBoZWxkLgotKyAgLSByZWFkaW5nIDY0LWJpdCBsZW5ndGhzIGluIG5ldHdvcmsg b3JkZXIgbm93IHJlYWRzIHRoZSBjb21wb25lbnRzCi0rICAgIGluIHRoZSBjb3JyZWN0IG9yZGVy LgotIAotLSAgICAgICAgUmVtb3ZlZCBzcHVyaW91cyBkZWJ1Z2dpbmcgbWVzc2FnZXMgaW4gLnhz IGZpbGUuCi0rICAtIHJldHJpZXZpbmcgbGFyZ2Ugb2JqZWN0IHRhZ3MgYXJlIG5vdyBvbmx5IGhh bmRsZWQgb24gNjQtYml0Ci0rICAgIHBsYXRmb3JtcywgbGFyZ2Ugb2JqZWN0IHRhZ3Mgc2hvdWxk IG9ubHkgYmUgZW1pdHRlZCBmb3Igb2JqZWN0cwotKyAgICB0aGF0IGFyZSB0b28gbGFyZ2UgZm9y IHRoZSAzMi1iaXQgYWRkcmVzcyBzcGFjZSwgc28gaXQgd2FzIG9ubHkKLSsgICAgd2FzdGVkIGNv ZGUuCi0gCi0tU3VuIEp1bCAgMSAxMzoyNzozMiBNRVNUIDIwMDEgICBSYXBoYWVsIE1hbmZyZWRp IDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSsgIC0gcmVhZGluZyAzMi1iaXQgbGVuZ3Ro cyBmb3IgTFNDQUxBUiBhbmQgTFVURjhTVFIgYXMgdW5zaWduZWQKLSsgICAgKHBlcmwgIzEzMTk5 MCkKLSAKLS0gICAgICAgIFN5c3RlbWF0aWNhbGx5IHVzZSAiPW92ZXIgNCIgZm9yIFBPRCBsaW50 ZXJzLgotLSAgICAgICAgQXBwYXJlbnRseSwgUE9EIGxpbnRlcnMgYXJlIG11Y2ggc3RyaWN0ZXIg dGhhbiB3b3VsZAotLSAgICAgICAgb3RoZXJ3aXNlIGJlIG5lZWRlZCwgYnV0IHRoYXQncyBPSy4K LSsgIC0gcmVhZGluZyBmbGFnZ2VkIGxhcmdlIG9iamVjdCBoYXNoZXMgZGlkbid0IHJlYWQgdGhl IGZsYWdzCi0gCi0tICAgICAgICBGaXhlZCBtZW1vcnkgY29ycnVwdGlvbiBvbiBjcm9ha3MgZHVy aW5nIHRoYXcoKS4gIFRoYW5rcwotLSAgICAgICAgdG8gQ2xhdWRpbyBHYXJjaWEgZm9yIHJlcHJv ZHVjaW5nIHRoaXMgYnVnIGFuZCBwcm92aWRpbmcgdGhlCi0tICAgICAgICBjb2RlIHRvIGV4ZXJj aXNlIGl0LiAgQWRkZWQgdGVzdCBjYXNlcyBmb3IgdGhpcyBidWcsIGFkYXB0ZWQKLS0gICAgICAg IGZyb20gQ2xhdWRpbydzIGNvZGUuCi0rICAtIHRyZWF0IHRoZSAzMi1iaXQgc2l6ZSBvZiBob29r IGRhdGEgYXMgdW5zaWduZWQsIHZhbHVlcyBvdmVyIDJHQgotKyAgICB3ZXJlIHRyZWF0ZWQgYXMg bGFyZ2UgKGNsb3NlIHRvIDIqKjY0KSBwYXJhbWV0ZXJzIHRvIE5FV1NWKCkuCi0rICAgIChwZXJs ICMxMzE5OTkpCi0gCi0tICAgICAgICBNYWRlIGNvZGUgY29tcGlsZSBjbGVhbmx5IHdpdGggLVdh bGwgKGZyb20gSmFya2tvIEhpZXRhbmllbWkpLgotKyAgLSBhZGRlZCBzdXBwb3J0IGZvciBob29r IGRhdGEgb3ZlciA0R0IgaW4gc2l6ZQotIAotLSAgICAgICAgQ2hhbmdlZCB0YWdudW0gYW5kIGNs YXNzbnVtIGZyb20gSTMyIHRvIElWIGluIGNvbnRleHQuICBBbHNvCi0tICAgICAgICBmcm9tIEph cmtrby4KLSsgIC0gemVybyBsZW5ndGggZGF0YSByZWNlaWV2ZCBmcm9tIFNUT1JBQkxFX2ZyZWV6 ZSgpIG5vIGxvbmdlcgotKyAgICByZXN1bHRzIGluIGFuIGludmFsaWQgU1YgYmVpbmcgcGFzc2Vk IHRvIFNUT1JBQkxFX3RoYXcvX2F0dGFjaCgpCi0rICAgIChwZXJsICMxMTg1NTEpCi0gCi0tVGh1 IE1hciAxNSAwMToyMjozMiBNRVQgMjAwMSAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFu ZnJlZGlAcG9ib3guY29tPgotKyAgLSB3aGVyZSBwcmFjdGljYWwsIHBhZGRpbmcgaXMgbm93IGNs ZWFyZWQgd2hlbiBlbWl0dGluZyBhIGxvbmcKLSsgICAgZG91YmxlIChwZXJsICMxMzExMzYpCi0g Ci0tICAgICAgICBMYXN0IHZlcnNpb24gd2FzIHdyb25nbHkgY29tcGlsaW5nIHdpdGggYXNzZXJ0 aW9ucyBvbiwgZHVlCi0tICAgICAgICB0byBhbiBlZGl0IGdsaXRjaC4gIFRoYXQgZGlkIG5vdCBj YXVzZSBhbnkgcHJvYmxlbSAoYXBhcnQgZnJvbQotLSAgICAgICAgYSBzbGlnaHQgcGVyZm9ybWFu Y2UgbG9zcykgZXhjZXB0ZWQgb24gV2luKiBwbGF0Zm9ybXMsIHdoZXJlIHRoZQotLSAgICAgICAg YXNzZXJ0aW9uIGNvZGUgZG9lcyBub3QgY29tcGlsZS4KLSsgIC0gY2FjaGUgdGhlIHZhbHVlIG9m ICRTdG9yYWJsZTo6REVCVUdNRSAoc2luY2UgY3BlcmwgZW5hYmxlZAotKyAgICBTdG9yYWJsZSBU UkFDRU1FIGJ1aWxkcyBmb3IgYWxsIC1EREVCVUdHSU5HIGJ1aWxkcykKLSAKLS1TYXQgRmViIDE3 IDEzOjM3OjM3IE1FVCAyMDAxICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBw b2JveC5jb20+Ci0rICAtIG5vIGxvbmdlciBkaXNjYXJkIGV4Y2VwdGlvbnMgdGhyb3duIGJ5Ci0r ICAgIFNUT1JBQkxFX2ZyZWV6ZS9fdGhhdy9hdHRhY2goKSAocGVybCAjMjU5MzMpCi0gCi0tICAg IFZlcnNpb24gMS4wLjEwLgotKyAgLSBmaXggZGVwZW5kZW5jaWVzIHVzZWQgdG8gYnVpbGQgU3Rv cmFibGUucG0gZnJvbSBfX1N0b3JhYmxlX18ucG0KLSAKLS0gICAgICAgIEZvcmdvdCB0byBpbmNy ZWFzZSB2ZXJzaW9uIG51bWJlciBhdCBwcmV2aW91cyBwYXRjaCAodGhlcmUgd2VyZQotLSAgICAg ICAgdHdvIG9mIHRoZW0sIHdoaWNoIGlzIHdoeSB3ZSBqdW1wIGZyb20gMS4wLjggdG8gMS4wLjEw KS4KLSsgIC0gYWRkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBmcmVlemluZy90aGF3aW5nIHJl Z3VsYXIKLSsgICAgZXhwcmVzc2lvbnMgKHBlcmwgIzUwNjA4KQotIAotLVNhdCBGZWIgMTcgMTM6 MzU6MDAgTUVUIDIwMDEgICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQHBvYm94 LmNvbT4KLSsgIC0gcmUtd29yayByZWN1cnNpb24gbGltaXRpbmcgdG8gc3RvcmUgdGhlIGxpbWl0 IGluIGEgcGVybCB2YXJpYWJsZQotKyAgICBpbnN0ZWFkIG9mIGJha2VkIGludG8gU3RvcmFibGUu JHNvLiAgVGhpcyBhbGxvd3Mgc3RhdGljIFN0b3JhYmxlCi0rICAgIGJ1aWxkcyB0byB3b3JrLCBh bmQgYXZvaWRzIHRoZSBraW5kIG9mIGNpcmN1bGFyIHJlZmVyZW5jZSBvbgotKyAgICBTdG9yYWJs ZS4kc28uCi0gCi0tICAgIFZlcnNpb24gMS4wLjgsIGJpbmFyeSBmb3JtYXQgMi40LgotKzMuMDVf MTMgLSAyMDE3LTA3LTI0IDEzOjU3OjEzIHJ1cmJhbgotIAotLSAgICAgICAgRml4ZWQgaW5jb3Jy ZWN0IGVycm9yIG1lc3NhZ2UuCi0rICAtIG1pbmd3IGZpeDogdXNlIHNhZmUgZGVmYXVsdHMsIG5v dCBzZWdmYXVsdGluZyBkZWZhdWx0cy4KLSsgICAgbWluZ3cgZmFpbHMgb24gdGhlIHN0YWNrc2l6 ZSBiaW5hcnkgc2VhcmNoLCBsZWF2aW5nIGl0IGVtcHR5LgotIAotLSAgICAgICAgTm93IGJsZXNz IG9iamVjdHMgQVNBUCBhdCByZXRyaWV2ZSB0aW1lLCB3aGljaCBpcyBtZWFudCB0byBmaXgKLS0g ICAgICAgIHR3byBidWdzOgotKzMuMDVfMTIgLSBXZWQgQXByIDE5IDA5OjExOjA3IDIwMTcgKzAy MDAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuLm9yZz4KLSAKLS0gICAgICAgICogSW5kaXJlY3Qg cmVmZXJlbmNlcyB0byBvdmVybG9hZGVkIG9iamVjdCB3ZXJlIG5vdCBhYmxlIHRvCi0tICAgICAg ICAgIHJlc3RvcmUgb3ZlcmxvYWRpbmcgaWYgdGhlIG9iamVjdCB3YXMgbm90IGJsZXNzZWQgeWV0 LAotLSAgICAgICAgICB3aGljaCB3YXMgcG9zc2libGUgc2luY2UgYmxlc3Npbmcgb2NjdXJyZWQg b25seSBhZnRlciB0aGUKLS0gICAgICAgICAgcmVjdXJzaXZlIHJldHJpZXZhbC4KLSsgIC0gZW5o YW5jZSBzdGFjayByZXNlcnZlIGZyb20gOCB0byAxNgotIAotLSAgICAgICAgKiBTdG9yYWJsZSBo b29rcyBhc2tpbmcgZm9yIHNlcmlhbGl6YXRpb24gb2YgYmxlc3NlZCByZWYgY291bGQKLS0gICAg ICAgICAgZ2V0IHVuLWJsZXNzZWQgcmVmcyBhdCByZXRyaWV2YWwgdGltZSwgZm9yIHRoZSB2ZXJ5 IHNhbWUKLS0gICAgICAgICAgcmVhc29uLgotKyAgLSBmaXggTERfTElCUkFSWV9QQVRIIHVzYWdl IGZvciBDT1JFCi0gCi0tICAgICAgICBUaGUgZml4IGltcGxlbWVudGVkIGhlcmUgd2FzIHN1Z2dl c3RlZCBieSBOaWNrIEluZy1TaW1tb25zLgotKyAgLSBmaXhlZCBzb21lIGNvdmVyaXR5IHdhcm5p bmdzIGFuZCBsZWFrcwotIAotLSAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgYmxlc3NlZCByZWYg dG8gdGllZCBzdHJ1Y3R1cmVzLiAgVGhpcyBpcyB0aGUKLS0gICAgICAgIGNhdXNlIGZvciB0aGUg YmluYXJ5IGZvcm1hdCBjaGFuZ2UuCi0rICAtIGFkZGVkIGEgcmVsZWFzZSBtYWtlIHRhcmdldAot IAotLSAgICAgICAgQWRkZWQgRUJDRElDIHZlcnNpb24gb2YgdGhlIGNvbXBhdGliaWxpdHkgdGVz dCB3aXRoIDAuNi4xMSwKLS0gICAgICAgIGZyb20gUGV0ZXIgUHJ5bW1lcgotKzMuMDVfMTEgLSBX ZWQgTWFyIDI5IDIxOjA0OjI4IDIwMTcgKzAyMDAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuLm9y Zz4KLSAKLS0gICAgICAgIEFkZGVkIHRlc3RzIGZvciB0aGUgbmV3IGZlYXR1cmVzLCBhbmQgdG8g bWFrZSBzdXJlIHRoZSBidWdzIHRoZXkKLS0gICAgICAgIGFyZSBtZWFudCB0byBmaXggYXJlIGlu ZGVlZCBmaXhlZC4KLSsgIC0gY3JvYWsgb24gc2l6ZXMgcmVhZCA+IEkzMl9NQVgKLSAKLS1XZWQg SmFuICAzIDEwOjQzOjE4IE1FVCAyMDAxICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5m cmVkaUBwb2JveC5jb20+Ci0rICAtIHNpbXBsaWZ5IGxhc3Rfb3BfaW5fbmV0b3JkZXIKLSAKLS0g ICAgICAgIFJlbW92ZWQgc3B1cmlvdXMgJ2NsZWFuJyBlbnRyeSBpbiBNYWtlZmlsZS5QTC4KLSsg IC0gcHJvdGVjdCBmcm9tIGVtcHR5IHJldHJpZXZlX3ZzdHJpbmcKLSAKLS0gICAgICAgIEFkZGVk IENBTl9GTE9DSyB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSBjYW4gZmxvY2soKSBvciBub3QsCi0t ICAgICAgICBieSBpbnNwZWN0aW5nIFBlcmwncyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMsIGFz IGRldGVybWluZWQKLS0gICAgICAgIGJ5IENvbmZpZ3VyZS4KLSsgIC0gcHJvdGVjdCBzdG9yZV9v dGhlciBlcnJvciBidWYsIHBvdGVudGlhbCBzdGF0aWMKLSsgICAgYnVmZmVyIG92ZXJmbG93Lgot IAotLSAgICAgICAgVHJhY2Ugb2ZmZW5kaW5nIHBhY2thZ2Ugd2hlbiBvdmVybG9hZGluZyBjYW5u b3QgYmUgcmVzdG9yZWQKLS0gICAgICAgIG9uIGEgc2NhbGFyLgotKzMuMDVfMTAgLSBUdWUgTWFy IDE0IDA5OjUyOjIwIDIwMTcgKzAxMDAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuLm9yZz4KLSAK LS0gICAgICAgIE1hZGUgY29udGV4dCBjbGVhbnVwIHNhZmVyIHRvIGF2b2lkIGR1cCBmcmVlaW5n LCBtb3N0bHkgaW4gdGhlCi0tICAgICAgICBwcmVzZW5jZSBvZiByZXBlYXRlZCBleGNlcHRpb25z IGR1cmluZyBzdG9yZS9yZXRyaWV2ZSAod2hpY2ggY2FuCi0tICAgICAgICBjYXVzZSBtZW1vcnkg bGVha3MgYW55d2F5LCBzbyBpdCdzIGp1c3QgYWRkaXRpb25hbCBzYWZldHksIG5vdCBhCi0tICAg ICAgICBkZWZpbml0ZSBmaXgpLgotKyAgLSBDT1JFLW9ubHkgaW1wcm92ZW1lbnRzIHRvIHN0YWNr c2l6ZQotIAotLVN1biBOb3YgIDUgMTg6MjM6NDggTUVUIDIwMDAgICBSYXBoYWVsIE1hbmZyZWRp IDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSszLjA1XzA5IC0gVGh1IE1hciA5IDE5OjIw OjE5IDIwMTcgKzAxMDAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuLm9yZz4KLSAKLS0gICAgVmVy c2lvbiAxLjAuNi4KLSsgIC0gY29tcHV0ZSB0aGUgc3RhY2tzaXplcywgaW1wcm92ZSBjbGVhbnVw IHdpdGhpbiBjcm9hawotKyAgICBmcm9tIHN0YWNrIGV4aGF1c3Rpb24uCi0gCi0tICAgICAgICBG aXhlZCBzZXZlcmUgIm9iamVjdCBsb3N0IiBidWcgZm9yIFNUT1JBQkxFX2ZyZWV6ZSByZXR1cm5z LAotLSAgICAgICAgd2hlbiByZWZzIHRvIGxleGljYWxzLCB0YWtlbiB3aXRoaW4gdGhlIGhvb2ss IHdlcmUgdG8gYmUKLS0gICAgICAgIHNlcmlhbGl6ZWQgYnkgU3RvcmFibGUuICBFbmhhbmNlZCB0 aGUgdC9yZWN1cnNlLnQgdGVzdCB0bwotLSAgICAgICAgc3RyZXNzIGhvb2sgYSBsaXR0bGUgbW9y ZSB3aXRoIHJlZnMgdG8gbGV4aWNhbHMuCi0rICAtIGFkZGVkIHN0YWNrX2RlcHRoIGFuZCBzdGFj a19kZXB0aF9oYXNoIGdldHRlcnMuCi0gCi0tVGh1IE9jdCAyNiAxOToxNDozOCBNRVNUIDIwMDAg ICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSszLjA1XzA4 IC0gV2VkIE1hciAgOCAyMTowMzo0MyBDRVQgMjAxNyBSZWluaSBVcmJhbiA8cnVyYmFuQGNwYW4u b3JnPgotIAotLSAgICBWZXJzaW9uIDEuMC41LgotKyAgLSBmaW5ldHVuZSB0aGUgbWF4IHN0YWNr IGxpbWl0LCBmb3IgQysrLCBERUJVR0dJTkcgYW5kIDMyYml0LgotIAotLSAgICAgICAgRG9jdW1l bnRlZCB0aGF0IHN0b3JlKCkgYW5kIHJldHJpZXZlKCkgY2FuIHJldHVybiB1bmRlZi4KLS0gICAg ICAgIFRoYXQgaXMsIHRoZSBlcnJvciByZXBvcnRpbmcgaXMgbm90IGFsd2F5cyBtYWRlIHZpYSBl eGNlcHRpb25zLAotLSAgICAgICAgYXMgdGhlIHBhcmFncmFwaCBvbiBlcnJvciByZXBvcnRpbmcg d2FzIGltcGx5aW5nLgotKyAgLSBmaXggdC9ibGVzc2VkLnQgZm9yIGNwZXJsNS4yMgotIAotLSAg ICAgICAgQXV0byByZXF1aXJlcyBtb2R1bGUgb2YgYmxlc3NlZCByZWYgd2hlbiBTVE9SQUJMRV90 aGF3IG1pc3Nlcy4KLS0gICAgICAgIFdoZW4gdGhlIFN0b3JhYmxlIGVuZ2luZSBsb29rcyBmb3Ig dGhlIFNUT1JBQkxFX3RoYXcgaG9vayBhbmQKLS0gICAgICAgIGRvZXMgbm90IGZpbmQgaXQsIGl0 IG5vdyB0cmllcyB0byByZXF1aXJlIHRoZSBwYWNrYWdlIGludG8gd2hpY2gKLS0gICAgICAgIHRo ZSBibGVzc2VkIHJlZmVyZW5jZSBpcy4KLSszLjA1XzA3IC0gU3VuIE1hciA1IDEzOjM2OjQ3IDIw MTcgKzAxMDAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuLm9yZz4KLSAKLS0gICAgICAgIEp1c3Qg Y2hlY2sgJF5PLCBpbiB0L2xvY2sudDogdGhlcmUncyBubyBuZWVkIHRvIHB1bGwgdGhlIHdob2xl Ci0tICAgICAgICBDb25maWcgbW9kdWxlIGZvciB0aGF0LgotKyAgLSBGaXhlZCBhIHBvZGNoZWNr ZXIgaXNzdWUKLSAKLS1Nb24gT2N0IDIzIDIwOjAzOjQ5IE1FU1QgMjAwMCAgIFJhcGhhZWwgTWFu ZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3guY29tPgotKzMuMDVfMDYgLSBTdW4gTWFyIDUg MTE6NDI6MDQgMjAxNyArMDEwMCBSZWluaSBVcmJhbiA8cnVyYmFuQGNwYW4ub3JnPgotIAotLSAg ICBWZXJzaW9uIDEuMC40LgotKyAgLSBGaXhlZCB3cm9uZyByZWN1cnNpb24gZGVwdGggZXJyb3Ig d2l0aCBsYXJnZSBhcnJheXMgY29udGFpbmluZwotKyAgICBhbm90aGVyIGFycmF5LiBMPFtjcGVy bCAjMjU3XXxodHRwczovL2dpdGh1Yi5jb20vcGVybDExL2NwZXJsL2lzc3Vlcy8yNTc+Ci0gCi0t ICAgICAgICBQcm90ZWN0ZWQgY2FsbHMgdG8gZmxvY2soKSBmb3IgRE9TIHBsYXRmb3JtOiBhcHBh cmVudGx5LCB0aGUKLS0gICAgICAgIGZsb2NrL2Zjbmx0IGVtdWxhdGlvbiBpcyByZXBvcnRlZCB0 byBiZSBicm9rZW4gb24gdGhhdAotLSAgICAgICAgcGxhdGZvcm0uCi0rMy4wNV8wNSAtIFRodSBG ZWIgMiAxMjo0MDo0NCAyMDE3ICswMTAwIFJlaW5pIFVyYmFuIDxydXJiYW5AY3BhbmVsLm5ldD4K LSAKLS0gICAgICAgIEFkZGVkIGxvZ2NhcnAgZW11bGF0aW9uIGlmIHRoZXkgZG9uJ3QgaGF2ZSBM b2c6OkFnZW50LCBzaW5jZQotLSAgICAgICAgd2Ugbm93IHVzZSBpdCB0byBjYXJwIHdoZW4gbG9j a19zdG9yZS9sb2NrX3JldHJpZXZlIGlzIHVzZWQKLS0gICAgICAgIG9uIERPUy4KLSsgIC0gQWRk IGxlYWsgdGVzdHMgZm9yIFtjcGFuICM5NzMxNl0sIFtwZXJsICMxMjE5MjhdCi0gCi0tRnJpIFNl cCAyOSAyMTo1MjoyOSBNRVNUIDIwMDAgICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZy ZWRpQHBvYm94LmNvbT4KLSsgIC0gTGltaXQgdGhlIG1heCByZWN1cnNpb24gZGVwdGggdG8gMTIw MCBvbiAzMmJpdCBzeXN0ZW1zLgotKyAgICBXZSBoYXZlIG5vIG1heF9kZXB0aCBvcHRpb24geWV0 LCBhcyBpbiBKU09OOjpYUy4KLSAKLS0gICAgVmVyc2lvbiAxLjAuMy4KLSszLjA1XzA0IC0gVGh1 IEZlYiAyIDExOjU5OjIxIDIwMTcgKzAxMDAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuZWwubmV0 PgotIAotLSAgICAgICAgQXZvaWQgdXNpbmcgInRhaW50ZWQiIGFuZCAiZGlydHkiIHNpbmNlIFBl cmwgcmVtYXBzIHRoZW0gdmlhCi0tICAgICAgICBjcHAgKGkuZS4gI2RlZmluZSkuICBUaGlzIGlz IGRlZXBseSBoYXJtZnVsIHdoZW4gdGhyZWFkaW5nCi0tICAgICAgICBpcyBlbmFibGVkLiAgVGhp cyBjb25jZXJuZWQgYm90aCB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgYW5kCi0tICAgICAgICBsb2Nh bCB2YXJpYWJsZSBhbmQgYXJndW1lbnQgbmFtZXMuICBCcnJyLi4uLCBzY2FyeSEKLSsgIC0gRml4 IHJldHJpZXZlX3RpZWRfYXJyYXkgd2hpY2ggZmFpbHMgc2luY2UgNS4xNgotKyAgICBbY3BhbiAj ODQ3MDVdCi0gCi0tVGh1IFNlcCAyOCAyMzo0NjozOSBNRVNUIDIwMDAgICBSYXBoYWVsIE1hbmZy ZWRpIDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSsgIC0gSW1wcm92ZSB0L2JsZXNzZWQu dCBpbiB0aGUgY3JlYXRpb24gb2Ygc3ZfeWVzL3N2X25vCi0rICAgIHdpdGggdGhyZWFkZWQgcGVy bHMuCi0gCi0tICAgIFZlcnNpb24gMS4wLjIuCi0rMy4wNV8wMyAtIFR1ZSBKYW4gMzEgMDI6NTU6 MzAgMjAxNyArMDEwMCBSZWluaSBVcmJhbiA8cnVyYmFuQGNwYW5lbC5uZXQ+Ci0gCi0tICAgICAg ICBGaXhlZCBzcGVsbGluZyBpbiBSRUFETUUuCi0rICAtIFR1bmUgdC9yZWN1cnNlLnQgc3RhY2st b3ZlcmZsb3cgbGltaXQgbW9yZS4KLSAKLS0gICAgICAgIEFkZGVkIGxvY2tfc3RvcmUsIGxvY2tf bnN0b3JlLCBhbmQgbG9ja19yZXRyaWV2ZSAoYWR2aXNvcnkgbG9ja2luZykKLS0gICAgICAgIGFm dGVyIGEgcHJvcG9zYWwgZnJvbSBFcmlrIEhhdWdhbiA8ZXJpa0Bzb2xib3JzLm5vPi4KLSszLjA1 XzAyIC0gTW9uIEphbiAzMCAxOTo1MDoyOSAyMDE3ICswMTAwIFJlaW5pIFVyYmFuIDxydXJiYW5A Y3BhbmVsLm5ldD4KLSAKLS0gICAgICAgIFBlcmxzIGJlZm9yZSA1LjAwNF8wNCBsYWNrIG5ld1NW cHZuLCBhZGRlZCByZW1hcHBpbmcgaW4gWFMuCi0rICAtIFR1bmUgdC9yZWN1cnNlLnQgc3RhY2st b3ZlcmZsb3cgbGltaXQuIFNtYWxsIDY0Yml0IHN5c3RlbXMgb3ZlcmZsb3cKLSsgICAgZXZlbiB3 aXRoIGRlcHRoIDMwMDAsIHdoZXJlIDMyYml0IGFyZSBvay4KLSAKLS0gICAgICAgIEZpeGVkIHN0 dXBpZCB0eXBvIGluIHRoZSB0L3V0ZjgudCB0ZXN0LgotKzMuMDVfMDEgLSBNb24gSmFuIDMwIDE1 OjEzOjM4IDIwMTcgKzAxMDAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuZWwubmV0PgotIAotLVN1 biBTZXAgMTcgMTg6NTE6MTAgTUVTVCAyMDAwICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9N YW5mcmVkaUBwb2JveC5jb20+Ci0rICAtIFByb3RlY3QgYWdhaW5zdCBzdGFjayBvdmVyZmxvd3Mg d2l0aCBuZXN0ZWQgYXJyYXlzIGFuZCBoYXNoZXMKLSsgICAgW2NwYW4gIzk3NTI2XS4gVGhpcyBp bXBvc2VzIGEgbmV3IGxpbWl0IHRvIHlvdXIgbmVzdGVkIHN0cnVjdHVyZXMsCi0rICAgIGJ1dCBK U09OOjpYUyBoYXMgYSBsaW1pdCBvZiA1MTIuIFdlIHVzZSBhIG1heF9kZXB0aCBvZiAzMDAwIGZv ciB0aGUKLSsgICAgdHlwaWNhbCBzdGFjayBsaW1pdCBvZiA4ay4KLSAKLS0gICAgVmVyc2lvbiAx LjAuMSwgYmluYXJ5IGZvcm1hdCAyLjMuCi0rMy4wNSAtIFN1biBKYW4gMjkgMTE6MzY6NDMgMjAx NyArMDEwMCBSZWluaSBVcmJhbiA8cnVyYmFuQGNwYW5lbC5uZXQ+Ci0gCi0tICAgICAgICBEb2N1 bWVudGVkIHRoYXQgZG91YmxlcyBhcmUgc3RvcmVkIHN0cmluZ2lmaWVkIGJ5IG5zdG9yZSgpLgot KyAgLSBQcm90ZWN0IGFnYWluc3QgY2xhc3NuYW1lIGxlbiBvdmVyZmxvdyBvbiB0aGUgc3RhY2sK LSsgICAgYW5kIDJ4IG9uIHRoZSBoZWFwIHdpdGggcmV0cmlldmVfYmxlc3MgYW5kIHJldHJpZXZl X2hvb2suCi0rICAgIEEgc2VyaW91cyBzZWN1cml0eSBpc3N1ZSB3aXRoIG1hbGNyYWZ0ZWQgc3Rv cmFibGUgZmlsZXMgb3IgYnVmZmVycywKLSsgICAgYnV0IHA1cCBhY2NlcHRzIG5vIENWRSBvbiBT dG9yYWJsZSBhdHRhY2tzLiBTZWUgUlQgIzEzMDYzNQotKyAgICAocmVwb3J0ZWQgYnkgSkQpLgot IAotLSAgICAgICAgQWRkZWQgU2FsdmFkb3IgT3J0aXogR2FyY2lhIGluIENSRURJVFMgc2VjdGlv biwgIEhlIGlkZW50aWZpZWQKLS0gICAgICAgIGEgYnVnIGluIHRoZSBzdG9yZSBob29rcyBhbmQg cHJvcG9zZWQgdGhlIHJpZ2h0IGZpeDogdGhlIGNsYXNzCi0tICAgICAgICBpZCB3YXMgYWxsb2Nh dGVkIHRvbyBzb29uLiAgSGlzIGJ1ZyBjYXNlIHdhcyBhbHNvIGFkZGVkIHRvCi0tICAgICAgICB0 aGUgcmVncmVzc2lvbiB0ZXN0IHN1aXRlLgotKyAgLSBGaXggTlVMTCBwdHIgU0VHVnMgd2l0aCBy ZXRyaWV2ZV9jb2RlIGFuZCByZXRyaWV2ZV9vdGhlci4KLSsgICAgU2VlIFJUICMxMzAwOTggKHJl cG9ydGVkIGFuZCBmaXhlZCBieSBKRCkKLSAKLS0gICAgICAgIE5vdyBvbmx5IHRhaW50IHJldHJp ZXZlZCBkYXRhIHdoZW4gc291cmNlIHdhcyB0YWludGVkLiAgQSBidWcKLS0gICAgICAgIGRpc2Nv dmVyZWQgYnkgTWFyYyBMZWhtYW5uLgotKyAgLSBGaXggd3JvbmcgaHVnZSBMT0JKRUNUIHN1cHBv cnQsIGJyb2tlbiBzaW5jZSAzLjAwYy4KLSsgICAgUmVwcm8gd2l0aCBgZXhwb3J0IFBFUkxfVEVT VF9NRU1PUlk9OGAKLSAKLS0gICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFVURi04IHN0cmluZ3Ms IGEgY29udHJpYnV0aW9uIG9mIE1hcmMgTGVobWFubi4KLS0gICAgICAgIFRoaXMgaXMgbm9ybWFs bHkgb25seSBhY3RpdmF0ZWQgaW4gcG9zdC01LjYgcGVybHMuCi0rICAtIEZpeCB0aGUgZmV3IHJl bWFpbmluZyAyLWFyZyBvcGVuIGNhbGxzLgotIAotLVRodSBBdWcgMzEgMjM6MDY6MDYgTUVTVCAy MDAwICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBwb2JveC5jb20+Ci0rICAt IFBvcnRhYmlsaXR5IGFuZCBiYWNrcG9ydCBmaXhlcyBiYWNrIHRvIDUuNi4yCi0gCi0tICAgICAg ICBGaXJzdCBvZmZpY2lhbCByZWxlYXNlIFN0b3JhYmxlIDEuMCwgZm9yIGluY2x1c2lvbiBpbiBw ZXJsIDUuNy4wLgotLSAgICAgICAgVGhlIGxpY2Vuc2Ugc2NoZW1lIGlzIG5vdyBjb21wYXRpYmxl IHdpdGggUGVybCdzLgotKzMuMDRjIC0gU2F0IEphbiA3IDA5OjAxOjI5IDIwMTcgKzAxMDAgUmVp bmkgVXJiYW4gPHJ1cmJhbkBjcGFuZWwubmV0PgotIAotLVRodSBBdWcgMjQgMDE6MDI6MDIgTUVT VCAyMDAwICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBwb2JveC5jb20+Ci0r ICAtIGZpeCBwcmludGYgdHlwZXMgYW5kIHdhcm5pbmdzLCBlc3AuIGZvciAzMmJpdCB1c2U2NGJp dGludAotIAotLSAgICAgICAgQU5TSS1maWVkIG1vc3Qgb2YgdGhlIGNvZGUsIHByZXBhcmluZyBm b3IgUGVybCBjb3JlIGludGVncmF0aW9uLgotLSAgICAgICAgVGhlIG5leHQgdmVyc2lvbiBvZiBT dG9yYWJsZSB3aWxsIGJlIDAuOCwgYW5kIHdpbGwgYmUgaW50ZWdyYXRlZAotLSAgICAgICAgaW50 byB0aGUgUGVybCBjb3JlIChkZXZlbG9wbWVudCBicmFuY2gpLgotKyAgLSBDaGFuZ2Ugc3Zfc2V0 cHZuKOKApiwgIuKApiIsIOKApikgdG8gc3Zfc2V0cHZzKOKApiwgIuKApiIpCi0gCi0tICAgICAg ICBEaXNwYXRjaCB0YWJsZXMgd2VyZSBtb3ZlZCB1cGZyb250IHRvIHJlbGlldmUgc29tZSBjb21w aWxlcnMsCi0tICAgICAgICBlc3BlY2lhbGx5IG9uIEFJWCBhbmQgV2luZG93cyBwbGF0Zm9ybXMu Ci0rMy4wM2MgLSBUdWUgSnVsIDI2IDExOjQ5OjMzIDIwMTYgKzEwMDAgVG9ueSBDb29rIDx0b255 QGRldmVsb3AtaGVscC5jb20+Ci0gCi0tICAgICAgICBNZXJnZWQgNjQtYml0IGZpeGVzIGZyb20g cGVybDUtcG9ydGVycy4KLSsgIC0gcmVtb3ZlIC4gZnJvbSBASU5DIHdoZW4gbG9hZGluZyBvcHRp b25hbCBtb2R1bGVzCi0gCi0tTW9uIEF1ZyAxNCAwOToyMjowNCBNRVNUIDIwMDAgICBSYXBoYWVs IE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSszLjAyYyAtIFN1biBOb3Yg MjAgMTg6MDY6NDUgMjAxNiArMDEwMCBSZWluaSBVcmJhbiA8cnVyYmFuQGNwYW5lbC5uZXQ+Ci0g Ci0tICAgICAgICBBZGRlZCBhIHJlZmNudCBkZWMgaW4gcmV0cmlldmVfdGllZF9rZXkoKTogc3Zf bWFnaWMoKSBpbmNyZWFzZXMKLS0gICAgICAgIHRoZSByZWZjbnQgb24gdGhlIG1nX3B0ciBhcyB3 ZWxsLgotKyAgLSBGaXggLVdjKysxMS1jb21wYXQgd2FybmluZ3MsIGZpeCAtV2NoYXItc3Vic2Ny aXB0cwotIAotLSAgICAgICAgUmVtb3ZlZCBzcHVyaW91cyBkZXBlbmRlbmN5IHRvIERldmVsOjpQ ZWVrLCB3aGljaCB3YXMgdXNlZCBmb3IKLS0gICAgICAgIHRlc3Rpbmcgb25seSBpbiB0L3RpZWRf aXRlbXMudC4gIFRoYW5rcyB0byBDb25yYWQgSGVpbmV5Ci0tICAgICAgICA8Y29ucmFkQGZyaW5n ZWhlYWQub3JnPiBmb3Igc3BvdHRpbmcgaXQgZmlyc3QuCi0rMy4wMWMgLSBGcmkgU2VwIDE2IDAx OjMyOjU5IDIwMTYgKzAyMDAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBjcGFuZWwubmV0PgotIAotLVN1 biBBdWcgMTMgMjI6MTI6NTkgTUVTVCAyMDAwICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9N YW5mcmVkaUBwb2JveC5jb20+Ci0rICAtIEFkZGVkIHdhcm5fc2VjdXJpdHkoIk1vdmFibGUtVHlw ZSBDVkUtMjAxNS0xNTkyIFN0b3JhYmxlIG1ldGFzcGxvaXQgYXR0YWNrIikKLSsgICAgd2hlbiBk ZXRlY3RpbmcgdGhlIHRoaXJkIGRlc3RydWN0aXZlIG1ldGFzcGxvaXQgdmVjdG9yLAotKyAgICB0 aGF3aW5nIGJsZXNzIFwibXQtY29uZmlnLmNnaSIsICJDR0lUZW1wRmlsZSIuCi0gCi0tICAgICAg ICBNYXJjIExlaG1hbm4ga2luZGx5IGNvbnRyaWJ1dGVkIGNvZGUgdG8gYWRkIG92ZXJsb2FkaW5n IHN1cHBvcnQKLS0gICAgICAgIGFuZCB0byBoYW5kbGUgcmVmZXJlbmNlcyB0byB0aWVkIHZhcmlh Ymxlcy4KLSszLjAwYyAtIFRodSBNYXIgMzEgMTc6MTA6MjcgMjAxNiArMDIwMCBSZWluaSBVcmJh biA8cnVyYmFuQGNwYW5lbC5uZXQ+Ci0gCi0tICAgICAgICBSZXdyb3RlIGxlYWRpbmcgYmx1cmIg YWJvdXQgY29tcGF0aWJpbGl0eSB0byBtYWtlIGl0IGNsZWFyZXIgd2hhdAotLSAgICAgICAgImJh Y2t3YXJkIGNvbXBhdGliaWxpdHkiIGlzIGFib3V0OiB3aGVuIEkgc2F5IDAuNyBpcyBiYWNrd2Fy ZAotLSAgICAgICAgY29tcGF0aWJsZSB3aXRoIDAuNiwgaXQgbWVhbnMgdGhlIHJldmlzaW9uIDAu NyBjYW4gcmVhZCBmaWxlcwotLSAgICAgICAgcHJvZHVjZWQgYnkgMC42LgotKyAgLSBBZGRlZCBz dXBwb3J0IGZvciB1NjQgc3RyaW5ncywgYXJyYXlzIGFuZCBoYXNoZXMgPjJHCi0rICAgIHZpYSBh IG5ldyBMT0JKRUNUIHRhZy4gVGhpcyBpcyBmb3IgMzJiaXQgc3lzdGVtcyBhbmQgbGVuZ3Rocwot KyAgICBiZXR3ZWVuIDJHQiBhbmQgNEdCIChJMzItVTMyKSwgYW5kIDY0Yml0ICg+STMyKS4KLSAK LS0gICAgICAgIE1lbnRpb24gbmV3IENsb25lKDMpIGV4dGVuc2lvbiBpbiBTRUUgQUxTTy4KLSsg IC0gQnVtcGVkIFNUT1JBQkxFX0JJTl9NSU5PUiBhbmQgU1RPUkFCTEVfQklOX1dSSVRFX01JTk9S IGZyb20gMTAgdG8gMTEKLSAKLS0gICAgICAgIFdhcyB3cm9uZ2x5IG9wdGltaXppbmcgZm9yICJ1 bmRlZiIgdmFsdWVzIGluIGhhc2hlcyBieSBub3QKLS0gICAgICAgIGZ1bGx5IHJlY3Vyc2luZzog YXMgYSByZXN1bHQsIHRpZWQgInVuZGVmIiB2YWx1ZXMgd2VyZSBpbmNvcnJlY3RseQotLSAgICAg ICAgc2VyaWFsaXplZC4KLSsgIC0gZml4IHBhcmFsbGVsIHRlc3RzLCB1c2UgdW5pcXVlIGZpbGVu YW1lcy4KLSAKLS1TdW4gSnVsIDMwIDEyOjU5OjE3IE1FU1QgMjAwMCAgIFJhcGhhZWwgTWFuZnJl ZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3guY29tPgotKyAgLSBmaXhlZCAyIGluc3RhbmNlcyBv ZiAyYXJnIG9wZW4sCi0gCi0tICAgIEZpcnN0IHJldmlzaW9uIG9mIFN0b3JhYmxlIDAuNy4KLSsg IC0gYWRkZWQgb3B0aW9uYWwgZmxhZyBhcmd1bWVudHMgdG8gc2tpcCB0aWUgYW5kIGJsZXNzIG9u IHJldHJpZXZlL3RoYXcsCi0gCi0tICAgICAgICBUaGUgc2VyaWFsaXppbmcgZm9ybWF0IGlzIG5l dywga25vd24gYXMgdmVyc2lvbiAyLjAuICBJdCBpcyBmdWxseQotLSAgICAgICAgYmFja3dhcmQg Y29tcGF0aWJsZSB3aXRoIDAuNi4gIEVhcmxpZXIgZm9ybWF0cyBhcmUgZGVwcmVjYXRlZCBhbmQK LS0gICAgICAgIGhhdmUgbm90IGV2ZW4gYmVlbiB0ZXN0ZWQ6IG5leHQgdmVyc2lvbiB3aWxsIGRy b3AgcHJlLTAuNiBmb3JtYXQuCi0rICAtIGFkZGVkIFNFQ1VSSVRZIFdBUk5JTkcgYW5kIExhcmdl IGRhdGEgc3VwcG9ydCB0byBkb2NzCi0gCi0tICAgICAgICBDaGFuZ2VzIHNpbmNlIDAuNkAxMToK LSsgIC0gY29tcHV0ZSBDQU5fRkxPQ0sgYXQgY29tcGlsZS10aW1lCi0gCi0tICAgICAgICAtIE1v dmVkIGludGVyZmFjZSB0byB0aGUgImJldGEiIHN0YXR1cy4gIFNvbWUgdGlueSBwYXJ0cyBhcmUg c3RpbGwKLS0gICAgICAgICAgc3ViamVjdCB0byBjaGFuZ2UsIGJ1dCBub3RoaW5nIGltcG9ydGFu dCBlbm91Z2ggdG8gd2FycmFudCBhbiAiYWxwaGEiCi0tICAgICAgICAgIHN0YXR1cyBhbnkgbG9u Z2VyLgotKyAgLSByZWZvcm1hdCBldmVyeXRoaW5nIGNvbnNpc3RlbnRseQotIAotLSAgICAgICAg LSBTbGlnaHRseSByZWR1Y2VkIHRoZSBzaXplIG9mIHRoZSBTdG9yYWJsZSBpbWFnZSBieSBmYWN0 b3JpemluZwotLSAgICAgICAgICBvYmplY3QgY2xhc3MgbmFtZXMgYW5kIHJlbW92aW5nIGZpbmFs IG9iamVjdCBzdG9yYWdlIG5vdGlmaWNhdGlvbiBkdWUKLS0gICAgICAgICAgdG8gYSByZWRlc2ln biBvZiB0aGUgYmxlc3NlZCBvYmplY3Qgc3RvcmluZy4KLSsgIC0gZW5hYmxlIERFQlVHTUUgdHJh Y2luZyBhbmQgYXNzZXJ0cyB3aXRoIC1EREVCVUdHSU5HCi0gCi0tICAgICAgICAtIENsYXNzZXMg Y2FuIG5vdyByZWRlZmluZSBob3cgdGhleSB3aXNoIHRoZWlyIGluc3RhbmNlcyB0byBiZSBzZXJp YWxpemVkCi0tICAgICAgICAgIGFuZC9vciBkZWVwIGNsb25lZC4gIFNlcmlhbGl6aW5nIGhvb2tz IGFyZSB3cml0dGVuIGluIFBlcmwgY29kZS4KLSsgIC0gZml4IGFsbCA2NCBiaXQgY29tcGlsZXIg d2FybmluZ3MKLSAKLS0gICAgICAgIC0gVGhlIGVuZ2luZSBpcyBub3cgZnVsbHkgcmUtZW50cmFu dC4KLSsgIC0gYWRkZWQgc29tZSBhYnN0cmFjdGlvbiBtZXRob2RzIHRvIGF2b2lkIGNvZGUgZHVw bGljYXRpb24KLSAKLS1TdW4gQXByICAyIDIzOjQ3OjUwIE1FU1QgMjAwMCAgIFJhcGhhZWwgTWFu ZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3guY29tPgotKzIuNjUgLSB1bnJlbGVhc2VkCi0g Ci0tICAgICAgICBBZGRlZCBwcm92aXNpb24gdG8gZGV0ZWN0IG1vcmUgcmVjZW50IGJpbmFyeSBm b3JtYXRzLCBzaW5jZQotLSAgICAgICAgdGhlIG5ldyB1cGNvbWluZyBTdG9yYWJsZS0wLjcgd2ls bCB1c2UgYSBkaWZmZXJlbnQgZm9ybWF0LgotLSAgICAgICAgSW4gb3JkZXIgdG8gcHJldmVudCBh dHRlbXB0aW5nIHRoZSBkZS1zZXJpYWxpemF0aW9uIG9mIG5ld2VyCi0tICAgICAgICBmb3JtYXRz IGJ5IG9sZGVyIHZlcnNpb25zLCBJJ20gYWRkaW5nIHRoaXMgbm93IHRvIHRoZSAwLjYgc2VyaWVz LgotKyAgLSBSZXBsYWNlIG11bHRpcGxlICd1c2UgdmFycycgYnkgJ291cicKLSAKLS0gICAgICAg IEknbSBleHBlY3RpbmcgdGhpcyByZXZpc2lvbiB0byBiZSB0aGUgbGFzdCBvZiB0aGUgMC42IHNl cmllcy4KLS0gICAgICAgIFVubGVzcyBpdCBkb2VzIG5vdCB3b3JrIHdpdGggcGVybCA1LjYsIHdo aWNoIEkgZG9uJ3QgdXNlIHlldCwKLS0gICAgICAgIGFuZCB0aGVyZWZvcmUgYWdhaW5zdCB3aGlj aCBJIGNhbm5vdCB0ZXN0LgotKyAgLSByZW1vdmUgQ29uZmlnIGRlcGVuZGVuY3kKLSAKLS1XZWQg TWFyIDI5IDE5OjU1OjIxIE1FU1QgMjAwMCAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFu ZnJlZGlAcG9ib3guY29tPgotKzIuNTEgLSBXZWQgSnVsICAyIDE2OjI1OjI1IElTVCAyMDE0ICAg QWJoaWppdCBNZW5vbi1TZW4gPGFtc0B0b3JvaWQub3JnPgotIAotLSAgICAgICAgQWRkZWQgbm90 ZSBhYm91dCBmb3JtYXQgaW5jb21wYXRpYmlsaXRpZXMgd2l0aCBvbGQgdmVyc2lvbnMKLS0gICAg ICAgIChpLmUuIHByZSAwLjVAOSBmb3JtYXRzLCB3aGljaCBjYW5ub3QgYmUgdW5kZXJzdG9vZCBh cyB0aGVyZQotLSAgICAgICAgd2FzIG5vIHZlcnNpb25uaW5nIGluZm9ybWF0aW9uIGluIHRoZSBm aWxlIGJ5IHRoZW4pLgotKyAgLSBbcGVybCAjMTIxOTI4XSBGaXggbWVtb3J5IGxlYWsgZm9yIGRj bG9uZSBpbnNpZGUgZnJlZXplIGhvb2sKLSsgICAgKEFsZXggU29sb3ZleSkKLSAKLS0gICAgICAg IFByb3RlY3QgYWxsICRAIHZhcmlhYmxlcyB3aGVuIGV2YWwge30gdXNlZCwgdG8gYXZvaWQgY29y cnVwdGluZwotLSAgICAgICAgaXQgd2hlbiBzdG9yZS9yZXRyaWV2ZSBpcyBjYWxsZWQgd2l0aGlu IGFuIGV4Y2VwdGlvbiBoYW5kbGVyLgotKyAgLSBEbyBub3QgY2FsbCBERVNUUk9ZIGZvciBlbXB0 eSBvYmplY3RzCi0rICAgIChWbGFkaW1pciBUaW1vZmVldikKLSAKLS0gICAgICAgIE1pc3Rha2Vu bHkgaW5jbHVkZWQgInBhdGNobGV2ZWwuaCIgaW5zdGVhZCBvZiA8cGF0Y2hsZXZlbC5oPiwKLS0g ICAgICAgIHByZXZlbnRpbmcgUGVybCdzIHBhdGNobGV2ZWwgZnJvbSBiZWluZyBpbmNsdWRlZCwg d2hpY2ggaXMKLS0gICAgICAgIG5lZWRlZCBzdGFydGluZyBmcm9tIDUuNi4KLSsgIC0gT3RoZXIg YnVnZml4ZXMKLSAKLS1UdWUgTWF5IDEyIDA5OjE1OjE1IE1FVERTVCAxOTk4ICAgUmFwaGFlbCBN YW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2JsZS5ocC5jb20+Ci0rMi40NSAtIFNhdCBK dWwgMTMgMTg6MzQ6MjcgSVNUIDIwMTMgICBBYmhpaml0IE1lbm9uLVNlbiA8YW1zQHRvcm9pZC5v cmc+Ci0gCi0tICAgICAgICBGaXhlZCBzaGFyZWQgInVuZGVmIiBidWcgaW4gaGFzaGVzLCB3aGlj aCBkaWQgbm90IHJlbWFpbiBzaGFyZWQKLS0gICAgICAgIHRocm91Z2ggc3RvcmUvcmV0cmlldmUu Ci0rICAtIFtwZXJsICMxMTg4MjldIE1lbW9yeSBsZWFrcyBpbiBTVE9SQUJMRV9hdHRhY2gKLSsg ICAgKFZsYWRpbWlyIFRpbW9mZWV2KQotIAotLVRodSBGZWIgMTAgMTk6NDg6MTYgTUVUIDIwMDAg ICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSsgIC0gW3Bl cmwgIzExODEzOV0gRG9uJ3QgU0VHViBkdXJpbmcgZ2xvYmFsIGRlc3RydWN0aW9uCi0rICAgIChO aWNob2xhcyBDbGFyaywgcmVwb3J0L3Rlc3QgZnJvbSBSZWluaSBVcmJhbikKLSAKLS0gICAgICAg IGFkZGVkIGxhc3Rfb3BfaW5fbmV0b3JkZXIoKSBwcmVkaWNhdGUKLS0gICAgICAgIGRvY3VtZW50 ZWQgbGFzdF9vcF9pbl9uZXRvcmRlcigpCi0tICAgICAgICBhZGRlZCB0ZXN0cyBmb3IgdGhlIG5l dyBsYXN0X29wX2luX25ldG9yZGVyKCkgcHJlZGljYXRlCi0rICAtIEFkZGVkIHNlY3VyaXR5IHdh cm5pbmdzIHNlY3Rpb24gKFN0ZWZmZW4gTXVlbGxlcikKLSAKLS1XZWQgT2N0IDIwIDE5OjA3OjM2 IE1FU1QgMTk5OSAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3guY29t PgotKyAgLSBVcGRhdGUgSU5TVEFMTERJUlMgdG8gZmF2b3VyIGluc3RhbGxhdGlvbiBpbiAnc2l0 ZScKLSsgICAgKEphbWVzIEUgS2VlbmFuKQotIAotLSAgICAgICAgRm9yZ290IHRvIHVwZGF0ZSBW RVJTSU9OCi0rMi4zOSAtIFR1ZSAxMSBTZXAgMDY6NTE6MTEgSVNUIDIwMTIgICBBYmhpaml0IE1l bm9uLVNlbiA8YW1zQHRvcm9pZC5vcmc+Ci0gCi0tVHVlIE9jdCAxOSAyMToyNTowMiBNRVNUIDE5 OTkgICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSsgIC0g VmFyaW91cyBidWdmaXhlcywgaW5jbHVkaW5nIGNvbXBhdGliaWxpdHkgZml4ZXMgZm9yIG9sZGVy IHZlcnNpb25zIG9mIFBlcmwKLSsgICAgYW5kIHZzdHJpbmcgaGFuZGxpbmcuCi0gCi0tICAgICAg ICBBZGRlZCBtZW50aW9uIG9mIGphcGFuZXNlIHRyYW5zbGF0aW9uIGZvciB0aGUgbWFudWFsIHBh Z2UuCi0rMi4yOSAtIFN1biAgMyBKdWwgMDk6MTA6MTEgSVNUIDIwMTEgICBBYmhpaml0IE1lbm9u LVNlbiA8YW1zQHRvcm9pZC5vcmc+Ci0gCi0tICAgICAgICBGaXhlZCB0eXBvIGluIG1hY3JvIHRo YXQgbWFkZSB0aHJlYWRlZCBjb2RlIG5vdCBjb21waWxhYmxlLAotLSAgICAgICAgZXNwZWNpYWxs eSBvbiBXaW4zMiBwbGF0Zm9ybXMuCi0rICAtIFZhcmlvdXMgYnVnZml4ZXMsIG5vdGFibHkgaW5j bHVkaW5nIHByZXZlbnRpbmcgbmZyZWV6ZSBmcm9tIGluY29ycmVjdGx5Ci0rICAgIHN0cmluZ2lm eWluZyBpbnRlZ2Vycy4KLSAKLS0gICAgICAgIENoYW5nZWQgZGV0ZWN0aW9uIG9mIG9sZGVyIHBl cmxzIChwcmUtNS4wMDUpIGJ5IHRlc3RpbmcgUEFUQ0hMRVZFTAotLSAgICAgICAgZGlyZWN0bHkg aW5zdGVhZCBvZiByZWx5aW5nIG9uIGludGVybmFsIHN5bWJvbHMuCi0rMi4yNSAtIEZyaSAgMyBE ZWMgMTQ6MTI6MzIgR01UIDIwMTAgICBEYXZpZCBMZWFkYmVhdGVyIDxkZ2xAZGdsLmN4PgotIAot LVR1ZSBTZXAgMTQgMjI6MTM6MjggTUVTVCAxOTk5ICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFl bF9NYW5mcmVkaUBwb2JveC5jb20+Ci0rICAtIFN1cHBvcnQgZm9yIHNlcmlhbGl6aW5nIGNvZGVy ZWZzIGNvbnRhaW5pbmcgVVRGLTguCi0gCi0tICAgICAgICBJbnRlZ3JhdGVkICJ0aHJlYWQtc2Fm ZSIgcGF0Y2ggZnJvbSBNdXJyYXkgTmVzYml0dC4KLS0gICAgICAgIE5vdGUgdGhhdCB0aGlzIG1h eSBub3QgYmUgdmVyeSBlZmZpY2llbnQgZm9yIHRocmVhZGVkIGNvZGUsCi0tICAgICAgICBzZWUg Y29tbWVudCBpbiB0aGUgY29kZS4KLSsyLjI0IC0gRnJpIE5vdiAxMiAxMDo1MjoxOSBJU1QgMjAx MCAgIEFiaGlqaXQgTWVub24tU2VuIDxhbXNAdG9yb2lkLm9yZz4KLSAKLS0gICAgICAgIFRyeSB0 byBhdm9pZCBjb21waWxhdGlvbiB3YXJuaW5nIG9uIDY0LWJpdCBDUFVzLiBDYW4ndCB0ZXN0IGl0 LAotLSAgICAgICAgc2luY2UgSSBkb24ndCBoYXZlIGFjY2VzcyB0byBzdWNoIG1hY2hpbmVzLgot KyAgLSBQZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBmb3Igb3ZlcmxvYWRlZCBjbGFzc2VzIGZyb20g QmVuamFtaW4gSG9sem1hbi4KLSAKLS1Nb24gSnVsIDEyIDE0OjM3OjE5IE1FVERTVCAxOTk5ICAg UmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBwb2JveC5jb20+Ci0rMi4yMyAtIEZy aSBOb3YgMTIgMTA6MzY6MjIgSVNUIDIwMTAgICBBYmhpaml0IE1lbm9uLVNlbiA8YW1zQHRvcm9p ZC5vcmc+Ci0gCi0tICAgICAgICBjaGFuZ2VkIG15IGUtbWFpbCB0byBwb2JveC4KLSsgIC0gUmVs ZWFzZSB0aGUgbGF0ZXN0IHZlcnNpb24gZnJvbSB0aGUgUGVybCByZXBvc2l0b3J5LgotIAotLSAg ICAgICAgbWVudGlvbmVkIGl0IGlzIG5vdCB0aHJlYWQtc2FmZS4KLSsyLjIxIC0gVGh1IEF1ZyAg NiAxMDo1NTo1MCBJU1QgMjAwOSAgIEFiaGlqaXQgTWVub24tU2VuIDxhbXNAdG9yb2lkLm9yZz4K LSAKLS0gICAgICAgIHVwZGF0ZWQgdmVyc2lvbiBudW1iZXIuCi0rICAtIEluY2x1ZGVzIGhpbnRz L2hwdXgucGwgdGhhdCB3YXMgaW5hZHZlcnRlbnRseSBsZWZ0IG91dCBvZiAyLjIwLgotIAotLSAg ICAgICAgdXNlcyBuZXcgaW50ZXJuYWwgUExfKiBuYW1pbmcgY29udmVudGlvbi4KLSsyLjIwIC0g TW9uIE1heSAxOCAwOTozODoyMCBJU1QgMjAwOSAgIEFiaGlqaXQgTWVub24tU2VuIDxhbXNAdG9y b2lkLm9yZz4KLSAKLS1GcmkgSnVsICAzIDEzOjM4OjE2IE1FVERTVCAxOTk4ICAgUmFwaGFlbCBN YW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2JsZS5ocC5jb20+Ci0rICAtIEZpeCBidWcg aGFuZGxpbmcgYmxlc3NlZCByZWZlcmVuY2VzIHRvIG92ZXJsb2FkZWQgb2JqZWN0cywgcGx1cyBv dGhlcgotKyAgICBtaXNjZWxsYW5lb3VzIGZpeGVzLgotIAotLSAgICAgICAgVXBkYXRlZCBiZW5j aG1hcmsgZmlndXJlcyBkdWUgdG8gcmVjZW50IG9wdGltaXphdGlvbnMgZG9uZSBpbgotLSAgICAg ICAgc3RvcmUoKTogdGFnbnVtcyBhcmUgbm93IHN0b3JlZCBhcy1pcyBpbiB0aGUgaGFzaCB0YWJs ZSwgc28KLS0gICAgICAgIG5vIHN1cnJvdW5kaW5nIFNWIGlzIGNyZWF0ZWQuIEFuZCB0aGUgInNo YXJlZCBrZXlzIiBtb2RlIGZvcgotLSAgICAgICAgaGFzaCB0YWJsZSB3YXMgdHVybmVkIG9mZi4K LSsyLjE5Ci0gCi0tICAgICAgICBGaXhlZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICh3cnQgMC41 QDkpIGZvciByZXRyaWV2YWwgb2YKLS0gICAgICAgIGJsZXNzZWQgcmVmcy4gVGhhdCBvbGQgdmVy c2lvbiBkaWQgc29tZXRoaW5nIHdyb25nLCBidXQgdGhlCi0tICAgICAgICBidWdmaXggcHJldmVu dGVkIGNvcnJlY3QgcmV0cmlldmFsIG9mIHRoZSBvbGQgZm9ybWF0LgotKyAgLSByZWxlYXNlZCB3 aXRoIHBlcmwgNS44LjkuCi0gCi0tTW9uIEp1biAyMiAxMTowMDo0OCBNRVREU1QgMTk5OCAgIFJh cGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9ibGUuaHAuY29tPgotKzIuMTgg LSBUaHUgTm92IDIyIDEzOjI0OjE4IElTVCAyMDA3ICAgQWJoaWppdCBNZW5vbi1TZW4gPGFtc0B0 b3JvaWQub3JnPgotIAotLSAgICAgICAgQ2hhbmdlZCBiZW5jaG1hcmsgZmlndXJlcy4KLSsgIC0g Q29tcGlsZSBmaXhlcyBmb3Igb2xkZXIgUGVybHMuIChObyBmdW5jdGlvbmFsIGNoYW5nZXMuKQot IAotLSAgICAgICAgQWRqdXN0IHJlZmNudCBvZiB0aWVkIG9iamVjdHMgYWZ0ZXIgY2FsbGluZyBz dl9tYWdpYygpIHRvIGF2b2lkCi0tICAgICAgICBtZW1vcnkgbGVha3MuICBDb250cmlidXRlZCBi eSBKZWZmIEdyZXNoYW0uCi0rMi4xNyAtIFNhdCBOb3YgMTcgMDI6MTI6MTIgSVNUIDIwMDcgICBB Ymhpaml0IE1lbm9uLVNlbiA8YW1zQHRvcm9pZC5vcmc+Ci0gCi0tRnJpIEp1biAxMiAxMTo1MDow NCBNRVREU1QgMTk5OCAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9i bGUuaHAuY29tPgotKyAgLSBWYXJpb3VzIGJyb2tlbiB0ZXN0cyBmaXhlZC4gKE5vIGZ1bmN0aW9u YWwgY2hhbmdlcy4pCi0gCi0tICAgICAgICBBZGRlZCB3b3JrYXJvdW5kIGZvciBwZXJzaXN0ZW50 IExWQUxVRS1uZXNzIGluIHBlcmw1LjAwNC4gQWxsCi0tICAgICAgICBzY2FsYXJzIHRhZ2dlZCBh cyBiZWluZyBhbiBsdmFsdWUgYXJlIGhhbmRsZWQgYXMgaWYgdGhleSB3ZXJlCi0tICAgICAgICBu b3QgYW4gbHZhbHVlIGF0IGFsbC4gIEFkZGVkIHRlc3QgZm9yIHRoYXQgTFZBTFVFIGJ1ZyB3b3Jr YXJvdW5kLgotKzIuMTYgLSBTYXQgTWFyIDMxIDA2OjExOjA2IElTVCAyMDA3ICAgQWJoaWppdCBN ZW5vbi1TZW4gPGFtc0B0b3JvaWQub3JnPgotIAotLSAgICAgICAgTm93IGhhbmRsZXMgUGVybCBp bW1vcnRhbCBzY2FsYXJzIGV4cGxpY2l0bHksIGJ5IHN0b3JpbmcgJnN2X3llcwotLSAgICAgICAg YXMgc3VjaCwgZXhwbGljaXRseS4KLSsgIC0gRml4ZXMgdG8gU3RvcmFibGU6OmRjbG9uZSwgcmVh ZF9tYWdpYywgcmV0cmlldmVfbHNjYWxhcgotIAotLSAgICAgICAgUmV0cmlldmFsIG9mIG5vbi1p bW1vcnRhbCB1bmRlZiBjYW5ub3QgYmUgc2hhcmVkLiBQcmV2aW91cwotLSAgICAgICAgdmVyc2lv biB3YXMgb3Zlci1vcHRpbWl6aW5nIGJ5IG5vdCBjcmVhdGluZyBhIHNlcGFyYXRlIFNWIGZvcgot LSAgICAgICAgYWxsIHVuZGVmaW5lZCBzY2FsYXJzIHNlZW4uCi0rICAtIFN0b3JhYmxlIDAuMSBj b21wYXRpYmlsaXR5Ci0gCi0tVGh1IEp1biAgNCAxNzoyMTo1MSBNRVREU1QgMTk5OCAgIFJhcGhh ZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9ibGUuaHAuY29tPgotKyAgLSBNaXNj ZWxsYW5lb3VzIGNvbXBpbGUvbGVhay90ZXN0L3BvcnRhYmlsaXR5IGZpeGVzCi0gCi0tICAgIEJh c2VsaW5lIGZvciBTdG9yYWJsZS0wLjZAMC4KLSsyLjE1IC0gTW9uIE1heSAyMyAyMjo0ODo0OSBJ U1QgMjAwNSAgIEFiaGlqaXQgTWVub24tU2VuIDxhbXNAd2l3Lm9yZz4KLSAKLS0gICAgICAgIFRo aXMgdmVyc2lvbiBpbnRyb2R1Y2VzIGEgYmluYXJ5IGluY29tcGF0aWJpbGl0eSBpbiB0aGUgZ2Vu ZXJhdGVkCi0tICAgICAgICBiaW5hcnkgaW1hZ2UsIHdoaWNoIGlzIG1vcmUgY29tcGFjdCB0aGFu IG9sZGVyIG9uZXMgYnkgYXBwcm94aW1hdGl2ZWx5Ci0tICAgICAgICAxNSUsIGRlcGVuZGluZyBv biB0aGUgZXhhY3QgZGVncmVlIG9mIHNoYXJpbmcgaW4geW91ciBzdHJ1Y3R1cmVzLgotKyAgLSBN aW5vciBjaGFuZ2VzIHRvIGFkZHJlc3MgYSBjb3VwbGUgb2YgY29tcGlsZSBwcm9ibGVtcy4KLSAK LS0gICAgICAgIFRoZSBnb29kIG5ld3MgaXMgdGhhdCB5b3VyIG9sZGVyIGltYWdlcyBjYW4gc3Rp bGwgYmUgcmV0cmlldmVkIHdpdGgKLS0gICAgICAgIHRoaXMgdmVyc2lvbiwgaS5lLiBiYWNrd2Fy ZCBjb21wYXRpYmlsaXR5IGlzIHByZXNlcnZlZC4gVGhpcyB2ZXJzaW9uCi0tICAgICAgICBvZiBT dG9yYWJsZSBjYW4gb25seSBnZW5lcmF0ZSBuZXcgYmluYXJpZXMgaG93ZXZlci4KLSsyLjE0IC0g TW9uIEFwciAyNSAwNzoyOToxNCBJU1QgMjAwNSAgIEFiaGlqaXQgTWVub24tU2VuIDxhbXNAd2l3 Lm9yZz4KLSAKLS0gICAgICAgIEFub3RoZXIgZ29vZCBuZXdzIGlzIHRoYXQgdGhlIHJldHJpZXZh bCBvZiBkYXRhIHN0cnVjdHVyZSBpcwotLSAgICAgICAgc2lnbmlmaWNhbnRseSBxdWlja2VyIHRo YW4gYmVmb3JlLCBiZWNhdXNlIGEgUGVybCBhcnJheSBpcyB1c2VkCi0tICAgICAgICBpbnN0ZWFk IG9mIGEgaGFzaCB0YWJsZSB0byBrZWVwIHRyYWNrIG9mIHJldHJpZXZlZCBvYmplY3RzLCBhbmQK LS0gICAgICAgIGFsc28gYmVjYXVzZSB0aGUgaW1hZ2UgYmVpbmcgc21hbGxlciwgbGVzcyBJL08g ZnVuY3Rpb24gY2FsbHMgYXJlCi0tICAgICAgICBtYWRlLgotKyAgLSBTdG9yZSB3ZWFrIHJlZmVy ZW5jZXMKLSAKLS1UdWUgTWF5IDEyIDA5OjE1OjE1IE1FVERTVCAxOTk4ICAgUmFwaGFlbCBNYW5m cmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2JsZS5ocC5jb20+Ci0rICAtIEFkZCBTVE9SQUJM RV9hdHRhY2ggaG9vay4KLSAKLS0gICAgICAgIFZlcnNpb24gbnVtYmVyIG5vdyBnb3QgZnJvbSBT dG9yYWJsZS5wbSBkaXJlY3RseS4KLSsyLjEzIC0gVGh1IEp1biAxNyAxMjoyNjo0MyBCU1QgMjAw NCAgIE5pY2hvbGFzIENsYXJrIDxuaWNrQGNjbDQub3JnPgotIAotLSAgICAgICAgRml4ZWQgb3Zl cnplYWxvdXMgc3ZfdHlwZSgpIG9wdGltaXphdGlvbiwgd2hpY2ggd291bGQgbWFrZQotLSAgICAg ICAgU3RvcmFibGUgZmFpbCB3aGVuIGZhY2VkIHdpdGggYW4gInVwZ3JhZGVkIiBTViB0byB0aGUg UFZJVgotLSAgICAgICAgb3IgUFZOViBraW5kIGNvbnRhaW5pbmcgYSByZWZlcmVuY2UuCi0rICAt IERvbid0IGNoYW5nZSB0aGUgdHlwZSBvZiB0b3AgbGV2ZWwgb3ZlcmxvYWRlZCByZWZlcmVuY2Vz IHRvIFJWIC0KLSsgICAgdGhleSBhcmUgcGVyZmVjdGx5IGNvcnJlY3QgYXMgUFZNRwotIAotLVRo dSBBcHIgMzAgMTU6MTE6MzAgTUVURFNUIDE5OTggICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVs X01hbmZyZWRpQGdyZW5vYmxlLmhwLmNvbT4KLSsgIC0gU3RvcmFibGUgbmVlZHMgdG8gY29wZSB3 aXRoIGluY29taW5nIGZyb3plbiBkYXRhIHRoYXQgaGFwcGVucyB0byBiZQotKyAgICB1dGY4IGVu Y29kZWQuCi0gCi0tICAgICAgICBFeHRlbmRlZCB0aGUgU1lOT1BTSVMgc2VjdGlvbiB0byBnaXZl IHF1aWNrIG92ZXJ2aWV3IG9mIHRoZQotLSAgICAgICAgcm91dGluZXMgYW5kIHRoZWlyIHNpZ25h dHVyZS4KLSsyLjEyIC0gV2VkIE1hciAxNyAxNTo0MDoyOSBHTVQgMjAwNCAgIE5pY2hvbGFzIENs YXJrIDxuaWNrQGNjbDQub3JnPgotIAotLSAgICAgICAgT3B0aW1pemVkIHN2X3R5cGUoKSB0byBh dm9pZCBmbGFncyBjaGVja2luZyB3aGVuIG5vdCBuZWVkZWQsIGkuZS4KLS0gICAgICAgIHdoZW4g dGhlaXIgdHlwZSBtYWtlcyBpdCBpbXBvc3NpYmxlIGZvciB0aGVtIHRvIGJlIHJlZnMgb3IgdGll ZC4KLS0gICAgICAgIFRoaXMgc2xpZ2h0bHkgaW5jcmVhc2VzIHRocm91Z2hwdXQgYnkgYSBmZXcg cGVyY2VudHMgd2hlbiByZWZzCi0tICAgICAgICBhbmQgdGllZCB2YXJpYWJsZXMgYXJlIG1hcmdp bmFsIG9jY3VycmVuY2VzIGluIHlvdXIgZGF0YS4KLSsgIC0gQWRkIHJlZ3Jlc3Npb24gdGVzdHMg Zm9yIHRoZSBhdXRvLXJlcXVpcmUgb2YgU1RPUkFCTEVfdGhhdwotIAotLSAgICAgICAgU3R1YnMg Zm9yIFhTIG5vdyB1c2UgT3V0cHV0U3RyZWFtIGFuZCBJbnB1dFN0cmVhbSBmaWxlIHR5cGVzIHRv Ci0tICAgICAgICBtYWtlIGl0IHdvcmsgd2hlbiB0aGUgZ2l2ZW4gZmlsZSBpcyBhY3R1YWxseSBh IHNvY2tldC4gUGVybAotLSAgICAgICAgbWFrZXMgYSBkaXN0aW5jdGlvbiBmb3Igc29ja2V0cyBp biBpdHMgaW50ZXJuYWwgSS9PIHN0cnVjdHVyZXMKLS0gICAgICAgIGJ5IGhhdmluZyBib3RoIGEg cmVhZCBhbmQgYSB3cml0ZSBzdHJ1Y3R1cmUsIHdoZXJlYXMgcGxhaW4gZmlsZXMKLS0gICAgICAg IHNoYXJlIHRoZSBzYW1lIG9uZS4KLSsgIC0gQWRkIGF1dG8tcmVxdWlyZSBvZiBtb2R1bGVzIHRv IHJlc3RvcmUgb3ZlcmxvYWRpbmcgKGFuZCB0ZXN0cykKLSAKLS1UdWUgSnVuICAzIDA5OjQxOjMz IE1FVERTVCAxOTk3ICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2Js ZS5ocC5jb20+Ci0rICAtIENoYW5nZSB0byBubyBjb250ZXh0IChzaG91bGQgZ2l2ZSBzcGVlZHVw IHdpdGggaXRocmVhZHMpCi0gCi0tICAgICAgICBUaGFua3MgdG8gYSBjb250cmlidXRpb24gZnJv bSBCZW5qYW1pbiBBLiBIb2x6bWFuLCBTdG9yYWJsZSBpcyBub3cKLS0gICAgICAgIGFibGUgdG8g Y29ycmVjdGx5IHNlcmlhbGl6ZSB0aWVkIFNWcywgaS5lLiB0aWVkIGFycmF5cywgaGFzaGVzCi0t ICAgICAgICBhbmQgc2NhbGFycy4KLSsyLjExIC0gU2F0IE1hciAxMyAyMDoxMTowMyBHTVQgMjAw NCAgIE5pY2hvbGFzIENsYXJrIDxuaWNrQGNjbDQub3JnPgotIAotLVRodSBBcHIgIDkgMTg6MDc6 NTEgTUVURFNUIDE5OTggICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQGdyZW5v YmxlLmhwLmNvbT4KLSsgIC0gU3RvcmluZyByZXN0cmljdGVkIGhhc2hlcyBpbiBjYW5vbmljYWwg b3JkZXIgd291bGQgU0VHVi4gRml4ZWQuCi0gCi0tICAgICAgICBJIHNhaWQgU3ZQT0soKSBoYWQg Y2hhbmdlZCB0byBTdlBPS3AoKSwgYnV0IHRoYXQgd2FzIGEgbGllLi4uCi0rICAtIEl0IHdhcyBp bXBvc3NpYmxlIHRvIHJldHJpZXZlIHJlZmVyZW5jZXMgdG8gUExfc3Zfbm8gYW5kCi0rICAgIFBM X3N2X3VuZGVmIGZyb20gU1RPUkFCTEVfdGhhdyBob29rcy4KLSAKLS1XZWQgQXByICA4IDEzOjE0 OjI5IE1FVERTVCAxOTk4ICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVu b2JsZS5ocC5jb20+Ci0rICAtIHJlc3RyaWN0LnQgd2FzIGZhaWxpbmcgb24gNS44LjAsIGR1ZSB0 byA1LjguMCdzIHVuaXF1ZQotKyAgICBpbXBsZW1lbnRhdGlvbiBvZiByZXN0cmljdGVkIGhhc2hl cyB1c2luZyBQTF9zdl91bmRlZgotIAotLSAgICAgICAgV3JvdGUgc2l6ZW9mKFNWICopIGluc3Rl YWQgb2Ygc2l6ZW9mKEkzMikgd2hlbiBwb3J0YWJsZSwgd2hpY2gKLS0gICAgICAgIGluIGVmZmVj dCBtYW5nbGVkIHRoZSBvYmplY3QgdGFncyBhbmQgcHJldmVudGVkIHBvcnRhYmlsaXR5Ci0tICAg ICAgICBhY3Jvc3MgMzIvNjQgYml0IGFyY2hpdGVjdHVyZXMhCi0rICAtIFRoZXNlIGNoYW5nZXMg YWxsb3cgYSBzcGFjZSBvcHRpbWlzYXRpb24gZm9yIHJlc3RyaWN0ZWQgaGFzaGVzLgotIAotLVdl ZCBNYXIgMjUgMTQ6NTc6MDIgTUVUIDE5OTggICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01h bmZyZWRpQGdyZW5vYmxlLmhwLmNvbT4KLSsyLjEwIC0gU2F0IEphbiAyNCAxNjoyMjozMiBJU1Qg MjAwNCAgIEFiaGlqaXQgTWVub24tU2VuIDxhbXNAd2l3Lm9yZz4KLSAKLS0gICAgICAgIEFkZGVk IGNvZGUgZXhhbXBsZSBmb3Igc3RvcmVfZmQoKSBhbmQgcmV0cmlldmVfZmQoKSBpbiB0aGUKLS0g ICAgICAgIG1hbiBwYWdlLCB0byBlbXBoYXNpemUgdGhhdCBmaWxlIGRlc2NyaXB0b3JzIG11c3Qg YmUgcGFzc2VkIGFzCi0tICAgICAgICBnbG9icywgbm90IGFzIHBsYWluIHN0cmluZ3MuCi0rICAt IFRocmVhZCBzYWZldHk6IFN0b3JhYmxlOjpDTE9ORS9pbml0X3BlcmxpbnRlcnAoKSBub3cgY3Jl YXRlCi0rICAgIGEgbmV3IFBlcmwgY29udGV4dCBmb3IgZWFjaCBuZXcgaXRocmVhZC4KLSsgICAg KEZyb20gU3RhcyBCZWttYW4gYW5kIEphbiBEdWJvaXMuKQotIAotLSAgICAgICAgQ2Fubm90IHVz ZSBTViBhZGRyZXNzZXMgYXMgdGFnIHdoZW4gdXNpbmcgbnN0b3JlKCkgb24gTFA2NC4gVGhpcwot LSAgICAgICAgd2FzIHRoZSBjYXVzZSBvZiBwcm9ibGVtcyB3aGVuIGNyZWF0aW5nIGEgc3RvcmFi bGUgaW1hZ2Ugb24gYW4KLS0gICAgICAgIExQNjQgbWFjaGluZSBhbmQgcmV0cmlldmluZyBpdCBv biBhbiBJTFAzMiBzeXN0ZW0sIHdoaWNoIGlzCi0tICAgICAgICBleGFjdGx5IHdoYXQgbnN0b3Jl KCkgaXMgbWVhbnQgZm9yLi4uCi0rICAtIEZpeCBhIHRhZyBjb3VudCBtaXNtYXRjaCB3aXRoICRT dG9yYWJsZTo6RGVwYXJzZSB0aGF0IGNhdXNlZAotKyAgICBhbGwgYmFjay1yZWZlcmVuY2VzIGFm dGVyIGEgc3RvcmVkIHN1YiB0byBiZSBvZmYtYnktTiAod2hlcmUKLSsgICAgTiB3YXMgdGhlIG51 bWJlciBvZiBjb2RlIHJlZmVyZW5jZXMgaW4gYmV0d2VlbikuCi0rICAgIChGcm9tIFNhbSBWaWxh aW4uKQotIAotLSAgICAgICAgSG93ZXZlciwgd2UgY29udGludWUgdG8gdXNlIFNWIGFkZHJlc3Nl cyBhcyB0YWdzIGZvciBwbGFpbiBzdG9yZSgpLAotLSAgICAgICAgYmVjYXVzZSBiZW5jaG1hcmtp bmcgc2hvd3MgdGhhdCBpdCBzYXZlcyB1cCB0byA4JSBvZiB0aGUgc3RvcmUKLS0gICAgICAgIHRp bWUsIGFuZCBzdG9yZSgpIGlzIG1lYW50IHRvIGJlIGZhc3QgYXQgdGhlIGV4cGVuc2Ugb2YgbGFj awotLSAgICAgICAgb2YgcG9ydGFiaWxpdHkuCi0rICAtIFByZXZlbnQgQ09ERSByZWZlcmVuY2Vz IGZyb20gdHVybmluZyBpbnRvIFNDQUxBUiByZWZlcmVuY2VzLgotKyAgICAoRnJvbSBTbGF2ZW4g UmV6aWMuKQotIAotLSAgICAgICAgVGhpcyBtZWFucyB0aGVyZSB3aWxsIGJlIGFwcHJveGltYXRl bHkgYW4gOCUgZGVncmFkYXRpb24gb2YKLS0gICAgICAgIHBlcmZvcm1hbmNlIGZvciBuc3RvcmUo KSwgYnV0IGl0J3Mgbm93IHdvcmtpbmcgYXMgZXhwZWN0ZWQuCi0tICAgICAgICBUaGF0IGNvc3Qg bWF5IHZhcnkgb24geW91ciBtYWNoaW5lIG9mIGNvdXJzZSwgc2luY2UgaXQgaXMKLS0gICAgICAg IHNvbGVseSBjYXVzZWQgYnkgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG92ZXJoZWFkIHVzZWQgdG8g Y3JlYXRlCi0tICAgICAgICB1bmlxdWUgU1YgdGFncyBmb3IgZWFjaCBkaXN0aW5jdCBzdG9yZWQg U1YuCi0rMi4wOSAtIFNhdCBKYW4gIDMgMTg6NDk6MTggR01UIDIwMDQgICBOaWNob2xhcyBDbGFy ayA8bmlja0BjY2w0Lm9yZz4KLSAKLS1UdWUgSmFuIDIwIDA5OjIxOjUzIE1FVCAxOTk4ICAgUmFw aGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2JsZS5ocC5jb20+Ci0rICAtIEZp eCBtaW5vciBwcm9ibGVtcyB3aXRoIHRoZSBDUEFOIHJlbGVhc2UKLSAKLS0gICAgICAgIERvbid0 IHVzZSBhbnkgJ18nIGluIHZlcnNpb24gbnVtYmVyLgotKyAgLSBNYWtlIFN0b3JhYmxlLnhzIHdv cmsgb24gNS44LjIgYW5kIGxhdGVyIChhbHJlYWR5IGluIHRoZSBjb3JlKQotIAotLVR1ZSBKYW4g MTMgMTc6NTE6NTAgTUVUIDE5OTggICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRp QGdyZW5vYmxlLmhwLmNvbT4KLSsgIC0gU2hpcCB0aGUgbGludXggaGludHMgZmlsZQotIAotLSAg ICAgICAgVXBkYXRlZCB2ZXJzaW9uIG51bWJlci4KLSsgIC0gU2hpcCBUZXN0OjpNb3JlIGZvciB0 aGUgYmVuZWZpdCBvZiBQZXJscyBwcmUgNS42LjIKLSAKLS0gICAgICAgIGFkZGVkIGJpbm1vZGUo KSBjYWxscyBmb3Igc3lzdGVtcyB3aGVyZSBpdCBtYXR0ZXJzLgotKyAgLSBDb3JyZWN0IE1ha2Vm aWxlLlBMIHRvIG9ubHkgaW5zdGFsbCBpbiBjb3JlIGZvciA1LjguMCBhbmQgbGF0ZXIKLSAKLS0g ICAgICAgIEJlIHN1cmUgdG8gcGFzcyBnbG9icywgbm90IHBsYWluIGZpbGUgc3RyaW5ncywgdG8g QyByb3V0aW5lcywKLS0gICAgICAgIHNvIHRoYXQgU3RvcmFibGUgY2FuIGJlIHVzZWQgdW5kZXIg dGhlIFBlcmwgZGVidWdnZXIuCi0rMi4wOCAtIFNhdCBTZXAgIDYgMDE6MDg6MjAgSVNUIDIwMDMg ICBBYmhpaml0IE1lbm9uLVNlbiA8YW1zQHdpdy5vcmc+Ci0gCi0tV2VkIE5vdiAgNSAxMDo1Mzoy MiBNRVQgMTk5NyAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9ibGUu aHAuY29tPgotKyAgLSBUaGlzIHJlbGVhc2Ugd29ya3MgYXJvdW5kIGEgNS44LjAgYnVnIHdoaWNo IGNhdXNlZCBoYXNoZXMgdG8gbm90Ci0rICAgIGJlIG1hcmtlZCBhcyBoYXZpbmcga2V5IGZsYWdz IGV2ZW4gdGhvdWdoIGFuIEhFSyBoYWQgSEVLX1dBU1VURjgKLSsgICAgc2V0LiAoTm90ZSB0aGF0 IHRoZSBvbmx5IHJlYXNvbmFibGUgc29sdXRpb24gaXMgdG8gc2lsZW50bHkgZHJvcAotKyAgICB0 aGUgZmxhZyBmcm9tIHRoZSBhZmZlY3RlZCBrZXkuKQotIAotLSAgICAgICAgRml4IG1lbW9yeSBs ZWFrcyBvbiBzZWVuIGhhc2ggdGFibGUgYW5kIHJldHVybmVkIFNWIHJlZnMuCi0rICAtIFVzZXJz IG9mIFJUIDMgd2hvIHdlcmUgc2VlaW5nIGFzc2VydGlvbiBmYWlsdXJlcyBzaG91bGQgdXBncmFk ZS4KLSsgICAgKFBlcmwgNS44LjEgd2lsbCBoYXZlIHRoZSBidWcgZml4ZWQuKQotIAotLSAgICAg ICAgU3RvcmFibGUgZGlkIG5vdCB3b3JrIHByb3Blcmx5IHdoZW4gdGFpbnRpbmcgZW5hYmxlZC4K LSsyLjA3IC0gTW9uIE1heSAgNSAxMDoyNDoxNiBJU1QgMjAwMyAgIEFiaGlqaXQgTWVub24tU2Vu IDxhbXNAd2l3Lm9yZz4KLSAKLS0gICAgICAgIEZpeGVkICJBbGxvY2F0aW9uIHRvbyBsYXJnZSIg bWVzc2FnZXMgaW4gZnJlZXplL3RoYXcgYW5kIGFkZGVkLgotLSAgICAgICAgcHJvcGVyIHJlZ3Jl c3Npb24gdGVzdCBpbiB0L2ZyZWV6ZS50LgotKyAgLSBNaW5vciBidWdmaXhlcyAoc2VsZi10aWVk IG9iamVjdHMgYXJlIG5vdyBjb3JyZWN0bHkgc3RvcmVkLCBhcwotKyAgICBhcmUgdGhlIHJlc3Vs dHMgb2YgYWRkaXRpb25zIGxhcmdlciB0aGFuIElOVF9NQVgpLgotIAotLVR1ZSBKdW4gIDMgMDk6 NDE6MzMgTUVURFNUIDE5OTcgICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQGdy ZW5vYmxlLmhwLmNvbT4KLSsyLjA2IC0gTW9uIE9jdCAgNyAyMTo1NjozOCBCU1QgMjAwMiAgIE5p Y2hvbGFzIENsYXJrICA8bmlja0BjY2w0Lm9yZz4KLSAKLS0gICAgICAgIFVwZGF0ZWQgdmVyc2lv biBudW1iZXIKLSsgIC0gUmVtb3ZlIHFyLy8gZnJvbSB0L2Rvd25ncmFkZS50IHNvIHRoYXQgaXQg d2lsbCBydW4gb24gNS4wMDQKLSAKLS0gICAgICAgIEFkZGVkIGZyZWV6ZS90aGF3IGludGVyZmFj ZSBhbmQgZGNsb25lLgotKyAgLSBNZW50aW9uICRGaWxlOjpTcGVjOjpWRVJTSU9OIGEgc2Vjb25k IHRpbWUgaW4gdC9mb3JnaXZlLnQgc28gdGhhdCBpdAotKyAgICBydW5zIHdpdGhvdXQgd2Fybmlu Z3MgaW4gNS4wMDQgKHRoaXMgbWF5IGJlIGEgNS4wMDQwNSBidWcgSSdtIHdvcmtpbmcKLSsgICAg cm91bmQpCi0gCi0tRnJpIE1heSAxNiAxMDo0NTo0NyBNRVREU1QgMTk5NyAgIFJhcGhhZWwgTWFu ZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9ibGUuaHAuY29tPgotKyAgLSBGaXggdC9pbnRl Z2VyLnQgaW5pdGlhbGlzYXRpb24gdG8gYWN0dWFsbHkgZ2VuZXJhdGUgNjQgYml0cyBvZiA5Ywot IAotLSAgICAgICAgRm9yZ290IHRoYXQgQXV0b0xvYWRlciBkb2VzIG5vdCBleHBvcnQgaXRzIG93 biBBVVRPTE9BRC4KLS0gICAgICAgIEkgY291bGQgdXNlCi0rICAtIEZpeCBjb21wYXJpc29uIHRl c3RzIHRvIHVzZSBldmFsIHRvIGdldCBhcm91bmQgNjQgYml0IElWIGNvbnZlcnNpb24KLSsgICAg aXNzdWVzIG9uIDUuNi54LCBmb2xsb3dpbmcgbXkgdC9pbnRlZ2VyLnQgXiBwcmVjZWRlbmNlIGJ1 ZyBmb3VuZCBieQotKyAgICBSYWZhZWwgR2FyY2lhLVN1YXJlegotIAotLSAgICAgICAgICAgICAg ICB1c2UgQXV0b0xvYWRlciAnQVVUT0xPQUQnOwotLSAgICAgICAgCi0tICAgICAgICBidXQgdGhh dCB3b3VsZCBub3QgYmUgYmFja3dhcmQgY29tcGF0aWJsZS4gU28gdGhlIGV4cG9ydCBpcwotLSAg ICAgICAgZG9uZSBieSBoYW5kLi4uCi0rICAtIEFsdGVyIHQvbWFsaWNlLnQgdG8gd29yayB3aXRo IFRlc3QvTW9yZS5wbSBpbiB0LywgYW5kIHNraXAgaW5kaXZpZHVhbAotKyAgICBzdWJ0ZXN0cyB0 aGF0IHVzZSAkQ29uZmlne3B0cnNpemV9LCBzbyB0aGF0IHRoZSByZXN0IG9mIHRoZSB0ZXN0IGNh bgotKyAgICBub3cgYmUgcnVuIHdpdGggNS4wMDQKLSAKLS1UdWUgTWFyIDI1IDExOjIxOjMyIE1F VCAxOTk3ICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2JsZS5ocC5j b20+Ci0rICAtIENoYW5nZSB0L21hbGljZS50IGFuZCB0aGUgZXJyb3IgbWVzc2FnZSBpbiBjaGVj a19tYWdpYyBpbiBTdG9yYWJsZS54cwotKyAgICBmcm9tICJQb2ludGVyIGludGVnZXIgc2l6ZSIg dG8gIlBvaW50ZXIgc2l6ZSIKLSAKLS0gICAgICAgIEVtcHR5IHNjYWxhciBzdHJpbmdzIGFyZSBu b3cgImRlZmluZWQiIGF0IHJldHJpZXZhbCB0aW1lLgotKyAgLSBSZW1vdmUgcHJlcmVxdWlzaXRl IG9mIFRlc3Q6Ok1vcmUgZnJvbSBNYWtlZmlsZS5QTAotIAotLSAgICAgICAgTmV3IHRlc3QgdG8g ZW5zdXJlIGFuIGVtcHR5IHN0cmluZyBpcyBkZWZpbmVkIHdoZW4gcmV0cmlldmVkLgotKyAgLSBT aGlwIFRlc3Q6OkJ1aWxkZXIsIFRlc3Q6OlNpbXBsZSBhbmQgVGVzdDo6TW9yZSBpbiB0Ci0gCi0t VGh1IEZlYiAyNyAxNjozMjo0NCBNRVQgMTk5NyAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxf TWFuZnJlZGlAZ3Jlbm9ibGUuaHAuY29tPgotKzIuMDUgLSBUaHUgT2N0ICAzIDA4OjU3OjIyIElT VCAyMDAyICAgQWJoaWppdCBNZW5vbi1TZW4gPGFtc0B3aXcub3JnPgotIAotLSAgICAgICAgVXBk YXRlZCB2ZXJzaW9uIG51bWJlcgotKyAgLSBBZGRzIHN1cHBvcnQgZm9yIENPREUgcmVmZXJlbmNl cyBmcm9tIFNsYXZlbiBSZXppYwotKyAgICA8c2xhdmVuLnJlemljQGJlcmxpbi5kZT4uCi0gCi0t ICAgICAgICBEZWNsYXJlIFZFUlNJT04gYXMgYmVpbmcgdXNlZAotKzIuMDQgLSBGcmkgSnVuICA3 IDIzOjU1OjQxIEJTVCAyMDAyICAgTmljaG9sYXMgQ2xhcmsKLSAKLS0gICAgICAgIEZpeGVkIGEg dHlwbyBpbiB0aGUgUGVybElPX3B1dGMgcmVtYXBwaW5nLgotLSAgICAgICAgUGVybElPX3JlYWQg YW5kIHBlcmxJT193cml0ZSBpbnZlcnRlZCBzaXplL25iX2l0ZW1zLgotLSAgICAgICAgKG9ubHkg cmVsZXZhbnQgZm9yIHByZS1wZXJsNS4wMDQgdmVyc2lvbnMpCi0rICAtIEJ1ZyBmaXggZnJvbSBS YWR1IEdyZWFiIDxyYWR1QG5ldHNvZnQucm8+IChwbHVzIHJlZ3Jlc3Npb24gdGVzdCkKLSsgICAg dG8gZml4IGEgcmVjZW50bHkgaW50cm9kdWNlZCBidWcgZGV0ZWN0ZWQgYnkgRGF2ZSBSb2xza3ku Ci0rICAgIEJ1ZyB3YXMgdGhhdCBmb3IgYSBub24gdGhyZWFkZWQgYnVpbGQsIHRoZSBjbGFzcyBp bmZvcm1hdGlvbiB3YXMKLSsgICAgYmVpbmcgbG9zdCBhdCBmcmVlemUgdGltZSBvbiB0aGUgZmly c3Qgb2JqZWN0IHdpdGggYSBTVE9SQUJMRV9mcmVlemUKLSsgICAgaG9vay4gQ29uc2VxdWVudGlh bGx5IHRoZSBvYmplY3Qgd2FzIG5vdCBibGVzc2VkIGF0IGFsbCB3aGVuIHRoYXdlZC4KLSsgICAg KFRoZSBwcmVzZW5jZSAob3IgbGFjaykgb2YgU1RPUkFCTEVfdGhhdyB3YXMgaXJyZWxldmFudDsg dGhpcyB3YXMKLSsgICAgYSBzdG9yZS10aW1lIGRhdGEgbG9zdCBidWcsIGNhdXNlZCBieSBmYWls dXJlIHRvIGluaXRpYWxpemUgaW50ZXJuYWwKLSsgICAgY29udGV4dCkKLSsgICAgVGhlIGJ1ZyB3 YXMgaW50cm9kdWNlZCBhcyBkZXZlbG9wbWVudCBwZXJsIGNoYW5nZSAxNjQ0MiAob24KLSsgICAg MjAwMi8wNS8wNyksIHNvIGhhcyBiZWVuIHByZXNlbnQgc2luY2UgMi4wMC4KLSsgICAgUGF0Y2hl cyB0byBpbnRyb2R1Y2UgbW9yZSByZWdyZXNzaW9uIHRlc3RzIHRvIHJlZHVjZSB0aGUgY2hhbmNl IG9mCi0rICAgIGEgcmVvY2N1cnJlbmNlIG9mIHRoaXMgc29ydCBvZiBnb29mIGFyZSBhbHdheXMg d2VsY29tZS4KLSAKLS1UaHUgRmViIDI3IDE1OjU4OjMxIE1FVCAxOTk3ICAgUmFwaGFlbCBNYW5m cmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2JsZS5ocC5jb20+Ci0rMi4wMyAtIFRodSBNYXkg MzAgMjA6MzE6MDggQlNUIDIwMDIgICBOaWNob2xhcyBDbGFyayA8bmlja0BjY2w0Lm9yZz4KLSAK LS0gICAgICAgIFVwZGF0ZWQgdmVyc2lvbiBudW1iZXIKLSsgIC0gSGVhZGVyIGNoYW5nZXMgb24g NS42Lnggb24gVW5peCB3aGVyZSBJViBpcyBsb25nIGxvbmcKLSAKLS0gICAgICAgIEFkZGVkIFZF UlNJT04gaWRlbnRpZmljYXRpb24KLSsgICAgNS42LnggaW50cm9kdWNlZCB0aGUgYWJpbGl0eSB0 byBoYXZlIElWcyBhcyBsb25nIGxvbmcuICBIb3dldmVyLAotKyAgICBDb25maWd1cmUgc3RpbGwg ZGVmaW5lZCBCWVRFT1JERVIgYmFzZWQgb24gdGhlIHNpemUgb2YgYSBsb25nLgotKyAgICBTdG9y YWJsZSB1c2VzIHRoZSBCWVRFT1JERVIgdmFsdWUgYXMgcGFydCBvZiB0aGUgaGVhZGVyLCBidXQK LSsgICAgZG9lc24ndCBleHBsaWNpdGx5IHN0b3JlIHNpemVvZihJVikgYW55d2hlcmUgaW4gdGhl IGhlYWRlci4KLSsgICAgSGVuY2Ugb24gNS42LnggYnVpbHQgd2l0aCBJViBhcyBsb25nIGxvbmcg b24gYSBwbGF0Zm9ybSB0aGF0Ci0rICAgIHVzZXMgQ29uZmlndXJlIChpZSBtb3N0IHRoaW5ncyBl eGNlcHQgVk1TIGFuZCBXaW5kb3dzKSBoZWFkZXJzCi0rICAgIGFyZSBpZGVudGljYWwgZm9yIHRo ZSBkaWZmZXJlbnQgSVYgc2l6ZXMsIGRlc3BpdGUgdGhlIGZpbGVzCi0rICAgIGNvbnRhaW5pbmcg c29tZSBmaWVsZHMgYmFzZWQgb24gc2l6ZW9mKElWKQotIAotLSAgICAgICAgQWxsb3cgYnVpbGQg d2l0aCBwZXJsNS4wMDMsIHdoaWNoIGlzIGFudGUgcGVybElPIHRpbWUKLSsgICAgNS44LjAgaXMg Y29uc2lzdGVudDsgYWxsIHBsYXRmb3JtcyBoYXZlIEJZVEVPUkRFUiBpbiBjb25maWcuaAotKyAg ICBiYXNlZCBvbiBzaXplb2YoSVYpIHJhdGhlciB0aGFuIHNpemVvZihsb25nKS4gIFRoaXMgbWVh bnMgdGhhdAotKyAgICB0aGUgdmFsdWUgb2YgQllURU9SREVSIHdpbGwgY2hhbmdlIGZyb20gKHNh eSkgNDMyMSB0byA4NzY1NDMyMQotKyAgICBiZXR3ZWVuIDUuNi4xIGFuZCA1LjguMCBidWlsdCB3 aXRoIHRoZSBzYW1lIG9wdGlvbnMgdG8gQ29uZmlndXJlCi0rICAgIG9uIHRoZSBzYW1lIG1hY2hp bmUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIFN0b3JhYmxlIGhlYWRlciB3aWxsCi0rICAgIGRpZmZl ciwgYW5kIHRoZSB0d28gdmVyc2lvbnMgd2lsbCB3cm9uZ2x5IHRoaW5nIHRoYXQgdGhleSBhcmUK LSsgICAgaW5jb21wYXRpYmxlLgotIAotLU1vbiBKYW4gMTMgMTc6NTM6MTggTUVUIDE5OTcgICBS YXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQGdyZW5vYmxlLmhwLmNvbT4KLSsgICAg Rm9yIHRoZSBiZW5lZml0IG9mIGxvbmcgdGVybSBjb25zaXN0ZW5jeSwgU3RvcmFibGUgbm93Ci0r ICAgIGltcGxlbWVudHMgdGhlIDUuOC4wIEJZVEVPUkRFUiBwb2xpY3kgb24gNS42LnguICBUaGlz IG1lYW5zIHRoYXQKLSsgICAgMi4wMyBvbndhcmRzIGRlZmF1bHQgdG8gYmUgaW5jb21wYXRpYmxl IHdpdGggMi4wMiBhbmQgZWFybGllcgotKyAgICAoaWUgdGhlIGxhcmdlIDEuMC54IGluc3RhbGxl ZCBiYXNlKSBvbiB0aGUgc2FtZSA1LjYueCBwZXJsLgotIAotLSAgICAgICAgUmFuZG9tIGNvZGUg Zml4ZXMuCi0rICAgIFRvIGFsbG93IGludGVyd29ya2luZywgYSBuZXcgdmFyaWFibGUKLSsgICAg JFN0b3JhYmxlOjppbnRlcndvcmtfNTZfNjRiaXQgaXMgaW50cm9kdWNlZC4gSXQgZGVmYXVsdHMg dG8KLSsgICAgZmFsc2UuIFNldCBpdCB0byB0cnVlIHRvIHJlYWQgYW5kIHdyaXRlIG9sZCBmb3Jt YXQgZmlsZXMuIERvbid0Ci0rICAgIHVzZSBpdCB1bmxlc3MgeW91IGhhdmUgZXhpc3Rpbmcgc3Rv cmVkIGRhdGEgd3JpdHRlbiB3aXRoIDUuNi54Ci0rICAgIHRoYXQgeW91IGNvdWxkbid0IG90aGVy d2lzZSByZWFkLCBvciB5b3UgbmVlZCB0byBpbnRlcndvcmsgd2l0aAotKyAgICBhIG1hY2hpbmUg cnVubmluZyBvbGRlciBTdG9yYWJsZSBvbiBhIDUuNi54IHdpdGggbG9uZyBsb25nIElWcwotKyAg ICAoaS5lLiwgeW91IHByb2JhYmx5IGRvbid0IG5lZWQgdG8gdXNlIGl0KS4KLSAKLS1XZWQgSmFu IDIyIDE1OjE5OjU2IE1FVCAxOTk3ICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVk aUBncmVub2JsZS5ocC5jb20+Ci0rMi4wMiAtIFNhdCBNYXkgMjUgMjI6Mzg6MzkgQlNUIDIwMDIg ICBOaWNob2xhcyBDbGFyayA8bmlja0BjY2w0Lm9yZz4KLSAKLS0gICAgICAgIFVwZGF0ZWQgdmVy c2lvbiBudW1iZXIgaW4gTWFrZWZpbGUuUEwuCi0rICAtIFJld3JpdGUgU3RvcmFibGUueHMgc28g dGhhdCB0aGUgZmlsZSBoZWFkZXIgc3RydWN0dXJlIGZvciB3cml0ZV9tYWdpYwotKyAgICBpcyBi dWlsdCBhdCBjb21waWxlIHRpbWUsIGFuZCBjaGVja19tYWdpYyBhdHRlbXB0cyB0byB0aGUgaGVh ZGVyIGluCi0rICAgIGJsb2NrcyByYXRoZXIgdGhhbiBieXRlIHBlciBieXRlLiBUaGVzZSBjaGFu Z2VzIG1ha2UgdGhlIGNvbXBpbGVkCi0rICAgIGV4dGVuc2lvbiAyLjI1JSBzbWFsbGVyLCBidXQg YXJlIG5vdCBzaWduaWZpY2FudCBlbm91Z2ggdG8gZ2l2ZSBhCi0rICAgIG5vdGljZWFibGUgc3Bl ZWQgdXAuCi0gCi0tICAgICAgICBBZGRlZCAidGhhbmtzIHRvIiBzZWN0aW9uIHRvIFJFQURNRS4K LSsyLjAxIC0gVGh1IE1heSAyMyAyMjo1MDo0MSBCU1QgMjAwMiAgIE5pY2hvbGFzIENsYXJrIDxu aWNrQGNjbDQub3JnPgotIAotLSAgICAgICAgRG9jdW1lbnRlZCBuZXcgZm9yZ2l2ZV9tZSB2YXJp YWJsZS4KLSsgIC0gTmV3IHJlZ3Jlc3Npb24gdGVzdHMgaW50ZWdlci50Ci0gCi0tICAgICAgICBN YWRlIDY0LWJpdCBjbGVhbi4KLSsgIC0gQWRkIGNvZGUgdG8gc2FmZWx5IHN0b3JlIGxhcmdlIHVu c2lnbmVkIGludGVnZXJzLgotIAotLSAgICAgICAgQWRkZWQgZm9yZ2l2ZV9tZSBzdXBwb3J0IHRv IGFsbG93IHN0b3JlKCkgb2YgZGF0YSBzdHJ1Y3R1cmVzCi0tICAgICAgICBjb250YWluaW5nIG5v bi1zdG9yYWJsZSBpdGVtcyBsaWtlIENPREUgcmVmcy4KLSsgIC0gQ2hhbmdlIGNvZGUgbm90IHRv IGF0dGVtcHQgdG8gc3RvcmUgbGFyZ2UgaW50ZWdlcnMgKGllID4gMzIgYml0cykKLSsgICAgaW4g bmV0d29yayBvcmRlciBhcyAzMiBiaXRzLgotKwotKyAgLSAqTmV2ZXIqIHVuZGVyZXN0aW1hdGUg dGhlIHZhbHVlIG9mIGEgcGF0aG9sb2dpY2FsIHRlc3Qgc3VpdGUgY2FyZWZ1bGx5Ci0rICAgIGNy YWZ0ZWQgd2l0aCBtYXhpbXVtIG1hbGljZSBiZWZvcmUgd3JpdGluZyBhIGxpbmUgb2YgcmVhbCBj b2RlLiBJdAotKyAgICBwcmV2ZW50cyBjcmFmdHkgYnVncyBmcm9tIHN0b3dpbmcgYXdheSBpbiB5 b3VyIHJlbGVhc2VkIGNvZGUuCi0rICAgIEl0J3MgbXVjaCBsZXNzIGVtYmFycmFzc2luZyB0byBm aW5kIHRoZW0gYmVmb3JlIHlvdSBzaGlwLgotKyAgICAoV2VsbCwgbmV2ZXIgdW5kZXJlc3RpbWF0 ZSBpdCBpZiB5b3UgZXZlciB3YW50IHRvIHdvcmsgZm9yIG1lKQotKwotKzIuMCAtIEZyaSBNYXkg MTcgMjI6NDg6NTkgQlNUIDIwMDIgICBOaWNob2xhcyBDbGFyayA8bmlja0BjY2w0Lm9yZz4KLSsK LSsgIC0gYmluYXJ5IGZvcm1hdCAyLjUgKGJ1dCB3cml0ZXMgZm9ybWF0IDIuNCBvbiBwcmUgNS43 LjMpCi0rCi0rICAgIFRoZSBwZXJsNSBwb3J0ZXJzIGhhdmUgZGVjaWRlZCB0byBtYWtlIHN1cmUg dGhhdCBTdG9yYWJsZSBzdGlsbAotKyAgICBidWlsZHMgb24gcHJlLTUuOCBwZXJscywgYW5kIG1h a2UgdGhlIDUuOCB2ZXJzaW9uIGF2YWlsYWJsZSBvbiBDUEFOLgotKyAgICBUaGUgVkVSU0lPTiBp cyBub3cgMi4wLCBhbmQgaXQgcGFzc2VzIGFsbCB0ZXN0cyBvbiA1LjAwNV8wMywgNS42LjEKLSsg ICAgYW5kIDUuNi4xIHdpdGggdGhyZWFkcy4gT24gNS42LjAgdC9kb3duZ3JhZGUudCBmYWlscyB0 ZXN0cyAzNCBhbmQgMzcsCi0rICAgIGR1ZSB0byBhIGJ1ZyBpbiA1LjYuMCAtIHVwZ3JhZGUgdG8g NS42LjEuCi0rCi0rICAtIEphcmtrbyBhbmQgSSBoYXZlIGNvbGxhdGVkIHRoZSBsaXN0IG9mIGNo YW5nZXMgdGhlIHBlcmw1IHBvcnRlcnMgaGF2ZQotKyAgICBmcm9tIHRoZSBwZXJsNSBDaGFuZ2Vz IGZpbGU6Ci0rCi0rICAgIC0gZGF0YSBmZWF0dXJlcyBvZiB1cGNvbWluZyBwZXJsIDUuOC4wIGFy ZSBzdXBwb3J0ZWQ6IFVuaWNvZGUgaGFzaAotKyAgICAgIGtleXMgKFVuaWNvZGUgaGFzaCB2YWx1 ZXMgaGF2ZSBiZWVuIHN1cHBvcnRlZCBzaW5jZSBTdG9yYWJsZSAxLjAuMSkKLSsgICAgICBhbmQg InJlc3RyaWN0ZWQgaGFzaGVzIiAocmVhZG9ubHkgaGFzaGVzIGFuZCBoYXNoIGVudHJpZXMpCi0r Ci0rICAgIC0gYSBuZXdlciB2ZXJzaW9uIG9mIHBlcmwgY2FuIG5vdyBiZSB1c2VkIHRvIHNlcmlh bGl6ZSBkYXRhIHdoaWNoIGlzCi0rICAgICAgbm90IHN1cHBvcnRlZCBpbiBlYXJsaWVyIHBlcmxz OiBTdG9yYWJsZSB3aWxsIGF0dGVtcHQgdG8gZG8gdGhlCi0rICAgICAgcmlnaHQgdGhpbmcgZm9y IGFzIGxvbmcgYXMgcG9zc2libGUsIGNyb2FraW5nIG9ubHkgd2hlbiBzYWZlIGRhdGEKLSsgICAg ICBjb252ZXJzaW9uIHNpbXBseSBpc24ndCBwb3NzaWJsZS4gQWx0ZXJuYXRpdmVseSBlYXJsaWVy IHBlcmxzIGNhbgotKyAgICAgIG9wdCB0byBoYXZlIGEgbG9zc3kgZG93bmdyYWRlIGRhdGEgaW5z dGVhZCBvZiBjcm9ha2luZwotKwotKyAgICAtIHdoZW4gYnVpbHQgd2l0aCBwZXJscyBwcmUgNS43 LjMgdGhpcyBTdG9yYWJsZSB3cml0ZXMgb3V0IGZpbGVzCi0rICAgICAgd2l0aCBiaW5hcnkgZm9y bWF0IDIuNCwgdGhlIHNhbWUgZm9ybWF0IGFzIFN0b3JhYmxlIDEuMC44IG9ud2FyZHMuCi0rICAg ICAgVGhpcyBzaG91bGQgbWVhbiB0aGF0IHRoaXMgU3RvcmFibGUgd2lsbCBpbnRlci1vcGVyYXRl IHNlYW1sZXNzbHkKLSsgICAgICB3aXRoIGFueSBTdG9yYWJsZSAxLjAuOCBvciBuZXdlciBvbiBw ZXJscyBwcmUgNS43LjMKLSsKLSsgICAgLSBkY2xvbmUoKSBub3cgd29ya3Mgd2l0aCBlbXB0eSBz dHJpbmcgc2NhbGFyIG9iamVjdHMKLSsKLSsgICAgLSByZXRyaWV2aW5nIG9mIGxhcmdlIGhhc2hl cyBpcyBub3cgbW9yZSBlZmZpY2llbnQKLSsKLSsgICAgLSBtb3JlIHJvdXRpbmVzIGF1dG9zcGxp dCBvdXQgb2YgdGhlIG1haW4gbW9kdWxlLCBzbyBTdG9yYWJsZSBzaG91bGQKLSsgICAgICBsb2Fk IHNsaWdodGx5IG1vcmUgcXVpY2tseQotKwotKyAgICAtIGJldHRlciBkb2N1bWVudGF0aW9uCi0r Ci0rICAgIC0gdGhlIGludGVybmFsIGNvbnRleHQgb2JqZWN0cyBhcmUgbm93IGZyZWVkIGV4cGxp Y2l0bHksIHJhdGhlciB0aGFuCi0rICAgICAgcmVseWluZyBvbiB0aHJlYWQgb3IgcHJvY2VzcyBl eGl0Ci0rCi0rICAgIC0gYnVncyBmaXhlZCBpbiBkZWJ1Z2dpbmcgdHJhY2UgY29kZSBhZmZlY3Rp bmcgYnVpbGRzIG1hZGUgd2l0aCA2NCBiaXQKLSsgICAgICBJVnMKLSsKLSsgICAgLSBjb2RlIHRp ZHktdXBzIHRvIGFsbG93IGNsZWFuIGNvbXBpbGVzIHdpdGggbW9yZSB3YXJuaW5nIG9wdGlvbnMK LSsgICAgICB0dXJuZWQgb24gYXZvaWQgcHJvYmxlbXMgd2l0aCAkQCBnZXR0aW5nIGNvcnJ1cHRl ZCBvbiA1LjAwNV8wMyBpZgotKyAgICAgIENhcnAgd2Fzbid0IGFscmVhZHkgbG9hZGVkCi0rCi0r ICAgIC0gYWRkZWQgJnNob3dfZmlsZV9tYWdpYywgc28geW91IGNhbiBhZGQgdG8gL2V0Yy9tYWdp YyBhbmQgdGVhY2gKLSsgICAgICBVbml4J3MgZmlsZSBjb21tYW5kIGFib3V0IFN0b3JhYmxlIGZp bGVzCi0rCi0rICAtIFdlIHBsYW4gdG8ga2VlcCBTdG9yYWJsZSBvbiBDUEFOIGluIHN5bmMgd2l0 aCB0aGUgUGVybCBjb3JlLCBzbwotKyAgICBpZiB5b3UgZW5jb3VudGVyIGJ1Z3Mgb3Igb3RoZXIg cHJvYmxlbXMgYnVpbGRpbmcgb3IgdXNpbmcgU3RvcmFibGUsCi0rICAgIHBsZWFzZSBsZXQgdXMg a25vdyBhdCBwZXJsNS1wb3J0ZXJzQHBlcmwub3JnCi0rICAgIFBhdGNoZXMgd2VsY29tZSEKLSsK LSsxLjAxNCAtIFNhdCBEZWMgIDEgMTQ6Mzc6NTQgTUVUIDIwMDEgICBSYXBoYWVsIE1hbmZyZWRp IDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSsKLSsgIC0gVGhpcyBpcyB0aGUgTEFTVCBt YWludGVuYW5jZSByZWxlYXNlIG9mIHRoZSBTdG9yYWJsZSBtb2R1bGUuCi0rICAgIEluZGVlZCwg U3RvcmFibGUgaXMgbm93IHBhcnQgb2YgcGVybCA1LjgsIGFuZCB3aWxsIGJlIG1haW50YWluZWQK LSsgICAgYXMgcGFydCBvZiBQZXJsLiAgVGhlIENQQU4gbW9kdWxlIHdpbGwgcmVtYWluIGF2YWls YWJsZSB0aGVyZQotKyAgICBmb3IgcGVvcGxlIHJ1bm5pbmcgcHJlLTUuOCBwZXJscy4KLSsKLSsg IC0gQXZvaWQgcmVxdWlyaW5nIEZjbnRsIHVwZnJvbnQsIHVzZWZ1bCB0byBlbWJlZGRlZCBydW50 aW1lcy4KLSsgICAgVXNlIGFuIGV2YWwge30gZm9yIHRlc3RpbmcsIGluc3RlYWQgb2YgbWFraW5n IFN0b3JhYmxlLnBtCi0rICAgIHNpbXBseSBmYWlsIGl0cyBjb21waWxhdGlvbiBpbiB0aGUgQkVH SU4gYmxvY2suCi0rCi0rICAtIHN0b3JlX2ZkKCkgd2lsbCBub3cgY29ycmVjdGx5IGF1dG9mbHVz aCBmaWxlIGlmIG5lZWRlZC4KLSsKLSsxLjAxMyAtIFR1ZSBBdWcgMjggMjM6NTM6MjAgTUVTVCAy MDAxICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBwb2JveC5jb20+Ci0rCi0r ICAtIEZpeGVkIHRydW5jYXRpb24gcmFjZSB3aXRoIGxvY2tfcmV0cmlldmUoKSBpbiBsb2NrX3N0 b3JlKCkuCi0rICAgIFRoZSBmaWxlIGhhcyB0byBiZSB0cnVuY2F0ZWQgb25seSBvbmNlIHRoZSBl eGNsdXNpdmUgbG9jayBpcyBoZWxkLgotKwotKyAgLSBSZW1vdmVkIHNwdXJpb3VzIGRlYnVnZ2lu ZyBtZXNzYWdlcyBpbiAueHMgZmlsZS4KLSsKLSsxLjAxMiAtIFN1biBKdWwgIDEgMTM6Mjc6MzIg TUVTVCAyMDAxICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBwb2JveC5jb20+ Ci0rCi0rICAtIFN5c3RlbWF0aWNhbGx5IHVzZSAiPW92ZXIgNCIgZm9yIFBPRCBsaW50ZXJzLgot KyAgICBBcHBhcmVudGx5LCBQT0QgbGludGVycyBhcmUgbXVjaCBzdHJpY3RlciB0aGFuIHdvdWxk Ci0rICAgIG90aGVyd2lzZSBiZSBuZWVkZWQsIGJ1dCB0aGF0J3MgT0suCi0rCi0rICAtIEZpeGVk IG1lbW9yeSBjb3JydXB0aW9uIG9uIGNyb2FrcyBkdXJpbmcgdGhhdygpLiAgVGhhbmtzCi0rICAg IHRvIENsYXVkaW8gR2FyY2lhIGZvciByZXByb2R1Y2luZyB0aGlzIGJ1ZyBhbmQgcHJvdmlkaW5n IHRoZQotKyAgICBjb2RlIHRvIGV4ZXJjaXNlIGl0LiAgQWRkZWQgdGVzdCBjYXNlcyBmb3IgdGhp cyBidWcsIGFkYXB0ZWQKLSsgICAgZnJvbSBDbGF1ZGlvJ3MgY29kZS4KLSsKLSsgIC0gTWFkZSBj b2RlIGNvbXBpbGUgY2xlYW5seSB3aXRoIC1XYWxsIChmcm9tIEphcmtrbyBIaWV0YW5pZW1pKS4K LSsKLSsgIC0gQ2hhbmdlZCB0YWdudW0gYW5kIGNsYXNzbnVtIGZyb20gSTMyIHRvIElWIGluIGNv bnRleHQuICBBbHNvCi0rICAgIGZyb20gSmFya2tvLgotKwotKzEuMDExIC0gVGh1IE1hciAxNSAw MToyMjozMiBNRVQgMjAwMSAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9i b3guY29tPgotKwotKyAgLSBMYXN0IHZlcnNpb24gd2FzIHdyb25nbHkgY29tcGlsaW5nIHdpdGgg YXNzZXJ0aW9ucyBvbiwgZHVlCi0rICAgIHRvIGFuIGVkaXQgZ2xpdGNoLiAgVGhhdCBkaWQgbm90 IGNhdXNlIGFueSBwcm9ibGVtIChhcGFydCBmcm9tCi0rICAgIGEgc2xpZ2h0IHBlcmZvcm1hbmNl IGxvc3MpIGV4Y2VwdGVkIG9uIFdpbiogcGxhdGZvcm1zLCB3aGVyZSB0aGUKLSsgICAgYXNzZXJ0 aW9uIGNvZGUgZG9lcyBub3QgY29tcGlsZS4KLSsKLSsxLjAxMCAtIFNhdCBGZWIgMTcgMTM6Mzc6 MzcgTUVUIDIwMDEgICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNv bT4KLSsKLSsgIC0gRm9yZ290IHRvIGluY3JlYXNlIHZlcnNpb24gbnVtYmVyIGF0IHByZXZpb3Vz IHBhdGNoICh0aGVyZSB3ZXJlCi0rICAgIHR3byBvZiB0aGVtLCB3aGljaCBpcyB3aHkgd2UganVt cCBmcm9tIDEuMC44IHRvIDEuMC4xMCkuCi0rCi0rMS4wMDggLSBTYXQgRmViIDE3IDEzOjM1OjAw IE1FVCAyMDAxICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBwb2JveC5jb20+ Ci0rCi0rICAtIGJpbmFyeSBmb3JtYXQgMi40LgotKwotKyAgLSBGaXhlZCBpbmNvcnJlY3QgZXJy b3IgbWVzc2FnZS4KLSsKLSsgIC0gTm93IGJsZXNzIG9iamVjdHMgQVNBUCBhdCByZXRyaWV2ZSB0 aW1lLCB3aGljaCBpcyBtZWFudCB0byBmaXgKLSsgICAgdHdvIGJ1Z3M6Ci0rCi0rICAgICogSW5k aXJlY3QgcmVmZXJlbmNlcyB0byBvdmVybG9hZGVkIG9iamVjdCB3ZXJlIG5vdCBhYmxlIHRvCi0r ICAgICAgcmVzdG9yZSBvdmVybG9hZGluZyBpZiB0aGUgb2JqZWN0IHdhcyBub3QgYmxlc3NlZCB5 ZXQsCi0rICAgICAgd2hpY2ggd2FzIHBvc3NpYmxlIHNpbmNlIGJsZXNzaW5nIG9jY3VycmVkIG9u bHkgYWZ0ZXIgdGhlCi0rICAgICAgcmVjdXJzaXZlIHJldHJpZXZhbC4KLSsKLSsgICAgKiBTdG9y YWJsZSBob29rcyBhc2tpbmcgZm9yIHNlcmlhbGl6YXRpb24gb2YgYmxlc3NlZCByZWYgY291bGQK LSsgICAgICBnZXQgdW4tYmxlc3NlZCByZWZzIGF0IHJldHJpZXZhbCB0aW1lLCBmb3IgdGhlIHZl cnkgc2FtZQotKyAgICAgIHJlYXNvbi4KLSsKLSsgICAgKiBUaGUgZml4IGltcGxlbWVudGVkIGhl cmUgd2FzIHN1Z2dlc3RlZCBieSBOaWNrIEluZy1TaW1tb25zLgotKwotKyAgLSBBZGRlZCBzdXBw b3J0IGZvciBibGVzc2VkIHJlZiB0byB0aWVkIHN0cnVjdHVyZXMuICBUaGlzIGlzIHRoZQotKyAg ICBjYXVzZSBmb3IgdGhlIGJpbmFyeSBmb3JtYXQgY2hhbmdlLgotKwotKyAgLSBBZGRlZCBFQkNE SUMgdmVyc2lvbiBvZiB0aGUgY29tcGF0aWJpbGl0eSB0ZXN0IHdpdGggMC42LjExLAotKyAgICBm cm9tIFBldGVyIFByeW1tZXIKLSsKLSsgIC0gQWRkZWQgdGVzdHMgZm9yIHRoZSBuZXcgZmVhdHVy ZXMsIGFuZCB0byBtYWtlIHN1cmUgdGhlIGJ1Z3MgdGhleQotKyAgICBhcmUgbWVhbnQgdG8gZml4 IGFyZSBpbmRlZWQgZml4ZWQuCi0rCi0rMS4wMDcgLSBXZWQgSmFuICAzIDEwOjQzOjE4IE1FVCAy MDAxICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBwb2JveC5jb20+Ci0rCi0r ICAtIFJlbW92ZWQgc3B1cmlvdXMgJ2NsZWFuJyBlbnRyeSBpbiBNYWtlZmlsZS5QTC4KLSsKLSsg IC0gQWRkZWQgQ0FOX0ZMT0NLIHRvIGRldGVybWluZSB3aGV0aGVyIHdlIGNhbiBmbG9jaygpIG9y IG5vdCwKLSsgICAgYnkgaW5zcGVjdGluZyBQZXJsJ3MgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJz LCBhcyBkZXRlcm1pbmVkCi0rICAgIGJ5IENvbmZpZ3VyZS4KLSsKLSsgIC0gVHJhY2Ugb2ZmZW5k aW5nIHBhY2thZ2Ugd2hlbiBvdmVybG9hZGluZyBjYW5ub3QgYmUgcmVzdG9yZWQKLSsgICAgb24g YSBzY2FsYXIuCi0rCi0rICAtIE1hZGUgY29udGV4dCBjbGVhbnVwIHNhZmVyIHRvIGF2b2lkIGR1 cCBmcmVlaW5nLCBtb3N0bHkgaW4gdGhlCi0rICAgIHByZXNlbmNlIG9mIHJlcGVhdGVkIGV4Y2Vw dGlvbnMgZHVyaW5nIHN0b3JlL3JldHJpZXZlICh3aGljaCBjYW4KLSsgICAgY2F1c2UgbWVtb3J5 IGxlYWtzIGFueXdheSwgc28gaXQncyBqdXN0IGFkZGl0aW9uYWwgc2FmZXR5LCBub3QgYQotKyAg ICBkZWZpbml0ZSBmaXgpLgotKwotKzEuMDA2IC0gU3VuIE5vdiAgNSAxODoyMzo0OCBNRVQgMjAw MCAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3guY29tPgotKwotKyAg LSBGaXhlZCBzZXZlcmUgIm9iamVjdCBsb3N0IiBidWcgZm9yIFNUT1JBQkxFX2ZyZWV6ZSByZXR1 cm5zLAotKyAgICB3aGVuIHJlZnMgdG8gbGV4aWNhbHMsIHRha2VuIHdpdGhpbiB0aGUgaG9vaywg d2VyZSB0byBiZQotKyAgICBzZXJpYWxpemVkIGJ5IFN0b3JhYmxlLiAgRW5oYW5jZWQgdGhlIHQv cmVjdXJzZS50IHRlc3QgdG8KLSsgICAgc3RyZXNzIGhvb2sgYSBsaXR0bGUgbW9yZSB3aXRoIHJl ZnMgdG8gbGV4aWNhbHMuCi0rCi0rMS4wMDUgLSBUaHUgT2N0IDI2IDE5OjE0OjM4IE1FU1QgMjAw MCAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3guY29tPgotKwotKyAg LSBEb2N1bWVudGVkIHRoYXQgc3RvcmUoKSBhbmQgcmV0cmlldmUoKSBjYW4gcmV0dXJuIHVuZGVm LgotKyAgICBUaGF0IGlzLCB0aGUgZXJyb3IgcmVwb3J0aW5nIGlzIG5vdCBhbHdheXMgbWFkZSB2 aWEgZXhjZXB0aW9ucywKLSsgICAgYXMgdGhlIHBhcmFncmFwaCBvbiBlcnJvciByZXBvcnRpbmcg d2FzIGltcGx5aW5nLgotKwotKyAgLSBBdXRvIHJlcXVpcmVzIG1vZHVsZSBvZiBibGVzc2VkIHJl ZiB3aGVuIFNUT1JBQkxFX3RoYXcgbWlzc2VzLgotKyAgICBXaGVuIHRoZSBTdG9yYWJsZSBlbmdp bmUgbG9va3MgZm9yIHRoZSBTVE9SQUJMRV90aGF3IGhvb2sgYW5kCi0rICAgIGRvZXMgbm90IGZp bmQgaXQsIGl0IG5vdyB0cmllcyB0byByZXF1aXJlIHRoZSBwYWNrYWdlIGludG8gd2hpY2gKLSsg ICAgdGhlIGJsZXNzZWQgcmVmZXJlbmNlIGlzLgotKwotKyAgLSBKdXN0IGNoZWNrICReTywgaW4g dC9sb2NrLnQ6IHRoZXJlJ3Mgbm8gbmVlZCB0byBwdWxsIHRoZSB3aG9sZQotKyAgICBDb25maWcg bW9kdWxlIGZvciB0aGF0LgotKwotKzEuMDA0IC0gTW9uIE9jdCAyMyAyMDowMzo0OSBNRVNUIDIw MDAgICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSsKLSsg IC0gUHJvdGVjdGVkIGNhbGxzIHRvIGZsb2NrKCkgZm9yIERPUyBwbGF0Zm9ybTogYXBwYXJlbnRs eSwgdGhlCi0rICAgIGZsb2NrL2Zjbmx0IGVtdWxhdGlvbiBpcyByZXBvcnRlZCB0byBiZSBicm9r ZW4gb24gdGhhdAotKyAgICBwbGF0Zm9ybS4KLSsKLSsgIC0gQWRkZWQgbG9nY2FycCBlbXVsYXRp b24gaWYgdGhleSBkb24ndCBoYXZlIExvZzo6QWdlbnQsIHNpbmNlCi0rICAgIHdlIG5vdyB1c2Ug aXQgdG8gY2FycCB3aGVuIGxvY2tfc3RvcmUvbG9ja19yZXRyaWV2ZSBpcyB1c2VkCi0rICAgIG9u IERPUy4KLSsKLSsxLjAwMyAtIEZyaSBTZXAgMjkgMjE6NTI6MjkgTUVTVCAyMDAwICAgUmFwaGFl bCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBwb2JveC5jb20+Ci0rCi0rICAtIEF2b2lkIHVz aW5nICJ0YWludGVkIiBhbmQgImRpcnR5IiBzaW5jZSBQZXJsIHJlbWFwcyB0aGVtIHZpYQotKyAg ICBjcHAgKGkuZS4gI2RlZmluZSkuICBUaGlzIGlzIGRlZXBseSBoYXJtZnVsIHdoZW4gdGhyZWFk aW5nCi0rICAgIGlzIGVuYWJsZWQuICBUaGlzIGNvbmNlcm5lZCBib3RoIHRoZSBjb250ZXh0IHN0 cnVjdHVyZSBhbmQKLSsgICAgbG9jYWwgdmFyaWFibGUgYW5kIGFyZ3VtZW50IG5hbWVzLiAgQnJy ci4uLiwgc2NhcnkhCi0rCi0rMS4wMDIgLSBUaHUgU2VwIDI4IDIzOjQ2OjM5IE1FU1QgMjAwMCAg IFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3guY29tPgotKwotKyAgLSBG aXhlZCBzcGVsbGluZyBpbiBSRUFETUUuCi0rCi0rICAtIEFkZGVkIGxvY2tfc3RvcmUsIGxvY2tf bnN0b3JlLCBhbmQgbG9ja19yZXRyaWV2ZSAoYWR2aXNvcnkgbG9ja2luZykKLSsgICAgYWZ0ZXIg YSBwcm9wb3NhbCBmcm9tIEVyaWsgSGF1Z2FuIDxlcmlrQHNvbGJvcnMubm8+LgotKwotKyAgLSBQ ZXJscyBiZWZvcmUgNS4wMDRfMDQgbGFjayBuZXdTVnB2biwgYWRkZWQgcmVtYXBwaW5nIGluIFhT LgotKwotKyAgLSBGaXhlZCBzdHVwaWQgdHlwbyBpbiB0aGUgdC91dGY4LnQgdGVzdC4KLSsKLSsx LjAwMSAtIFN1biBTZXAgMTcgMTg6NTE6MTAgTUVTVCAyMDAwICAgUmFwaGFlbCBNYW5mcmVkaSA8 UmFwaGFlbF9NYW5mcmVkaUBwb2JveC5jb20+Ci0rCi0rICAtIGJpbmFyeSBmb3JtYXQgMi4zLgot KwotKyAgLSBEb2N1bWVudGVkIHRoYXQgZG91YmxlcyBhcmUgc3RvcmVkIHN0cmluZ2lmaWVkIGJ5 IG5zdG9yZSgpLgotKwotKyAgLSBBZGRlZCBTYWx2YWRvciBPcnRpeiBHYXJjaWEgaW4gQ1JFRElU UyBzZWN0aW9uLCAgSGUgaWRlbnRpZmllZAotKyAgICBhIGJ1ZyBpbiB0aGUgc3RvcmUgaG9va3Mg YW5kIHByb3Bvc2VkIHRoZSByaWdodCBmaXg6IHRoZSBjbGFzcwotKyAgICBpZCB3YXMgYWxsb2Nh dGVkIHRvbyBzb29uLiAgSGlzIGJ1ZyBjYXNlIHdhcyBhbHNvIGFkZGVkIHRvCi0rICAgIHRoZSBy ZWdyZXNzaW9uIHRlc3Qgc3VpdGUuCi0rCi0rICAtIE5vdyBvbmx5IHRhaW50IHJldHJpZXZlZCBk YXRhIHdoZW4gc291cmNlIHdhcyB0YWludGVkLiAgQSBidWcKLSsgICAgZGlzY292ZXJlZCBieSBN YXJjIExlaG1hbm4uCi0rCi0rICAtIEFkZGVkIHN1cHBvcnQgZm9yIFVURi04IHN0cmluZ3MsIGEg Y29udHJpYnV0aW9uIG9mIE1hcmMgTGVobWFubi4KLSsgICAgVGhpcyBpcyBub3JtYWxseSBvbmx5 IGFjdGl2YXRlZCBpbiBwb3N0LTUuNiBwZXJscy4KLSsKLSsxLjAwMCAtIFRodSBBdWcgMzEgMjM6 MDY6MDYgTUVTVCAyMDAwICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBwb2Jv eC5jb20+Ci0rCi0rICAtIEZpcnN0IG9mZmljaWFsIHJlbGVhc2UgU3RvcmFibGUgMS4wLCBmb3Ig aW5jbHVzaW9uIGluIHBlcmwgNS43LjAuCi0rCi0rICAtIFRoZSBsaWNlbnNlIHNjaGVtZSBpcyBu b3cgY29tcGF0aWJsZSB3aXRoIFBlcmwncy4KLSsKLSswLjcwMyAtIFRodSBBdWcgMjQgMDE6MDI6 MDIgTUVTVCAyMDAwICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBwb2JveC5j b20+Ci0rCi0rICAtIEFOU0ktZmllZCBtb3N0IG9mIHRoZSBjb2RlLCBwcmVwYXJpbmcgZm9yIFBl cmwgY29yZSBpbnRlZ3JhdGlvbi4KLSsgICAgVGhlIG5leHQgdmVyc2lvbiBvZiBTdG9yYWJsZSB3 aWxsIGJlIDAuOCwgYW5kIHdpbGwgYmUgaW50ZWdyYXRlZAotKyAgICBpbnRvIHRoZSBQZXJsIGNv cmUgKGRldmVsb3BtZW50IGJyYW5jaCkuCi0rCi0rICAtIERpc3BhdGNoIHRhYmxlcyB3ZXJlIG1v dmVkIHVwZnJvbnQgdG8gcmVsaWV2ZSBzb21lIGNvbXBpbGVycywKLSsgICAgZXNwZWNpYWxseSBv biBBSVggYW5kIFdpbmRvd3MgcGxhdGZvcm1zLgotKwotKyAgLSBNZXJnZWQgNjQtYml0IGZpeGVz IGZyb20gcGVybDUtcG9ydGVycy4KLSsKLSswLjcwMiAtIE1vbiBBdWcgMTQgMDk6MjI6MDQgTUVT VCAyMDAwICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBwb2JveC5jb20+Ci0r Ci0rICAtIEFkZGVkIGEgcmVmY250IGRlYyBpbiByZXRyaWV2ZV90aWVkX2tleSgpOiBzdl9tYWdp YygpIGluY3JlYXNlcwotKyAgICB0aGUgcmVmY250IG9uIHRoZSBtZ19wdHIgYXMgd2VsbC4KLSsK LSsgIC0gUmVtb3ZlZCBzcHVyaW91cyBkZXBlbmRlbmN5IHRvIERldmVsOjpQZWVrLCB3aGljaCB3 YXMgdXNlZCBmb3IKLSsgICAgdGVzdGluZyBvbmx5IGluIHQvdGllZF9pdGVtcy50LiAgVGhhbmtz IHRvIENvbnJhZCBIZWluZXkKLSsgICAgPGNvbnJhZEBmcmluZ2VoZWFkLm9yZz4gZm9yIHNwb3R0 aW5nIGl0IGZpcnN0LgotKwotKzAuNzAxIC0gU3VuIEF1ZyAxMyAyMjoxMjo1OSBNRVNUIDIwMDAg ICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSsKLSsgIC0g TWFyYyBMZWhtYW5uIGtpbmRseSBjb250cmlidXRlZCBjb2RlIHRvIGFkZCBvdmVybG9hZGluZyBz dXBwb3J0Ci0rICAgIGFuZCB0byBoYW5kbGUgcmVmZXJlbmNlcyB0byB0aWVkIHZhcmlhYmxlcy4K LSsKLSsgIC0gUmV3cm90ZSBsZWFkaW5nIGJsdXJiIGFib3V0IGNvbXBhdGliaWxpdHkgdG8gbWFr ZSBpdCBjbGVhcmVyIHdoYXQKLSsgICAgImJhY2t3YXJkIGNvbXBhdGliaWxpdHkiIGlzIGFib3V0 OiB3aGVuIEkgc2F5IDAuNyBpcyBiYWNrd2FyZAotKyAgICBjb21wYXRpYmxlIHdpdGggMC42LCBp dCBtZWFucyB0aGUgcmV2aXNpb24gMC43IGNhbiByZWFkIGZpbGVzCi0rICAgIHByb2R1Y2VkIGJ5 IDAuNi4KLSsKLSsgIC0gTWVudGlvbiBuZXcgQ2xvbmUoMykgZXh0ZW5zaW9uIGluIFNFRSBBTFNP LgotKwotKyAgLSBXYXMgd3JvbmdseSBvcHRpbWl6aW5nIGZvciAidW5kZWYiIHZhbHVlcyBpbiBo YXNoZXMgYnkgbm90Ci0rICAgIGZ1bGx5IHJlY3Vyc2luZzogYXMgYSByZXN1bHQsIHRpZWQgInVu ZGVmIiB2YWx1ZXMgd2VyZSBpbmNvcnJlY3RseQotKyAgICBzZXJpYWxpemVkLgotKwotKzAuNzAw IC0gU3VuIEp1bCAzMCAxMjo1OToxNyBNRVNUIDIwMDAgICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBo YWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSsKLSsgIC0gVGhlIHNlcmlhbGl6aW5nIGZvcm1hdCBp cyBuZXcsIGtub3duIGFzIHZlcnNpb24gMi4wLiAgSXQgaXMgZnVsbHkKLSsgICAgYmFja3dhcmQg Y29tcGF0aWJsZSB3aXRoIDAuNi4gIEVhcmxpZXIgZm9ybWF0cyBhcmUgZGVwcmVjYXRlZCBhbmQK LSsgICAgaGF2ZSBub3QgZXZlbiBiZWVuIHRlc3RlZDogbmV4dCB2ZXJzaW9uIHdpbGwgZHJvcCBw cmUtMC42IGZvcm1hdC4KLSsKLSsgIC0gTW92ZWQgaW50ZXJmYWNlIHRvIHRoZSAiYmV0YSIgc3Rh dHVzLiAgU29tZSB0aW55IHBhcnRzIGFyZSBzdGlsbAotKyAgICBzdWJqZWN0IHRvIGNoYW5nZSwg YnV0IG5vdGhpbmcgaW1wb3J0YW50IGVub3VnaCB0byB3YXJyYW50IGFuICJhbHBoYSIKLSsgICAg c3RhdHVzIGFueSBsb25nZXIuCi0rCi0rICAtIFNsaWdodGx5IHJlZHVjZWQgdGhlIHNpemUgb2Yg dGhlIFN0b3JhYmxlIGltYWdlIGJ5IGZhY3Rvcml6aW5nCi0rICAgIG9iamVjdCBjbGFzcyBuYW1l cyBhbmQgcmVtb3ZpbmcgZmluYWwgb2JqZWN0IHN0b3JhZ2Ugbm90aWZpY2F0aW9uIGR1ZQotKyAg ICB0byBhIHJlZGVzaWduIG9mIHRoZSBibGVzc2VkIG9iamVjdCBzdG9yaW5nLgotKwotKyAgLSBD bGFzc2VzIGNhbiBub3cgcmVkZWZpbmUgaG93IHRoZXkgd2lzaCB0aGVpciBpbnN0YW5jZXMgdG8g YmUgc2VyaWFsaXplZAotKyAgICBhbmQvb3IgZGVlcCBjbG9uZWQuICBTZXJpYWxpemluZyBob29r cyBhcmUgd3JpdHRlbiBpbiBQZXJsIGNvZGUuCi0rCi0rICAtIFRoZSBlbmdpbmUgaXMgbm93IGZ1 bGx5IHJlLWVudHJhbnQuCi0rCi0rMC42MTEgLSBTdW4gQXByICAyIDIzOjQ3OjUwIE1FU1QgMjAw MCAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3guY29tPgotKwotKyAg LSBBZGRlZCBwcm92aXNpb24gdG8gZGV0ZWN0IG1vcmUgcmVjZW50IGJpbmFyeSBmb3JtYXRzLCBz aW5jZQotKyAgICB0aGUgbmV3IHVwY29taW5nIFN0b3JhYmxlLTAuNyB3aWxsIHVzZSBhIGRpZmZl cmVudCBmb3JtYXQuCi0rICAgIEluIG9yZGVyIHRvIHByZXZlbnQgYXR0ZW1wdGluZyB0aGUgZGUt c2VyaWFsaXphdGlvbiBvZiBuZXdlcgotKyAgICBmb3JtYXRzIGJ5IG9sZGVyIHZlcnNpb25zLCBJ J20gYWRkaW5nIHRoaXMgbm93IHRvIHRoZSAwLjYgc2VyaWVzLgotKwotKyAgLSBJJ20gZXhwZWN0 aW5nIHRoaXMgcmV2aXNpb24gdG8gYmUgdGhlIGxhc3Qgb2YgdGhlIDAuNiBzZXJpZXMuCi0rICAg IFVubGVzcyBpdCBkb2VzIG5vdCB3b3JrIHdpdGggcGVybCA1LjYsIHdoaWNoIEkgZG9uJ3QgdXNl IHlldCwKLSsgICAgYW5kIHRoZXJlZm9yZSBhZ2FpbnN0IHdoaWNoIEkgY2Fubm90IHRlc3QuCi0r Ci0rMC42MTAgLSBXZWQgTWFyIDI5IDE5OjU1OjIxIE1FU1QgMjAwMCAgIFJhcGhhZWwgTWFuZnJl ZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3guY29tPgotKwotKyAgLSBBZGRlZCBub3RlIGFib3V0 IGZvcm1hdCBpbmNvbXBhdGliaWxpdGllcyB3aXRoIG9sZCB2ZXJzaW9ucwotKyAgICAoaS5lLiBw cmUgMC41QDkgZm9ybWF0cywgd2hpY2ggY2Fubm90IGJlIHVuZGVyc3Rvb2QgYXMgdGhlcmUKLSsg ICAgd2FzIG5vIHZlcnNpb25uaW5nIGluZm9ybWF0aW9uIGluIHRoZSBmaWxlIGJ5IHRoZW4pLgot KwotKyAgLSBQcm90ZWN0IGFsbCAkQCB2YXJpYWJsZXMgd2hlbiBldmFsIHt9IHVzZWQsIHRvIGF2 b2lkIGNvcnJ1cHRpbmcKLSsgICAgaXQgd2hlbiBzdG9yZS9yZXRyaWV2ZSBpcyBjYWxsZWQgd2l0 aGluIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLgotKwotKyAgLSBNaXN0YWtlbmx5IGluY2x1ZGVkICJw YXRjaGxldmVsLmgiIGluc3RlYWQgb2YgPHBhdGNobGV2ZWwuaD4sCi0rICAgIHByZXZlbnRpbmcg UGVybCdzIHBhdGNobGV2ZWwgZnJvbSBiZWluZyBpbmNsdWRlZCwgd2hpY2ggaXMKLSsgICAgbmVl ZGVkIHN0YXJ0aW5nIGZyb20gNS42LgotKwotKzAuNjA5IC0gVGh1IEZlYiAxMCAxOTo0ODoxNiBN RVQgMjAwMCAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3guY29tPgot KwotKyAgLSBGaXhlZCBzaGFyZWQgInVuZGVmIiBidWcgaW4gaGFzaGVzLCB3aGljaCBkaWQgbm90 IHJlbWFpbiBzaGFyZWQKLSsgICAgdGhyb3VnaCBzdG9yZS9yZXRyaWV2ZS4KLSsKLSsgIC0gYWRk ZWQgbGFzdF9vcF9pbl9uZXRvcmRlcigpIHByZWRpY2F0ZQotKwotKyAgLSBkb2N1bWVudGVkIGxh c3Rfb3BfaW5fbmV0b3JkZXIoKQotKwotKyAgLSBhZGRlZCB0ZXN0cyBmb3IgdGhlIG5ldyBsYXN0 X29wX2luX25ldG9yZGVyKCkgcHJlZGljYXRlCi0rCi0rMC42MDcgLSBXZWQgT2N0IDIwIDE5OjA3 OjM2IE1FU1QgMTk5OSAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAcG9ib3gu Y29tPgotKwotKyAgLSBGb3Jnb3QgdG8gdXBkYXRlIFZFUlNJT04KLSsKLSswLjYwNiAtIFR1ZSBP Y3QgMTkgMjE6MjU6MDIgTUVTVCAxOTk5ICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5m cmVkaUBwb2JveC5jb20+Ci0rCi0rICAtIEFkZGVkIG1lbnRpb24gb2YgamFwYW5lc2UgdHJhbnNs YXRpb24gZm9yIHRoZSBtYW51YWwgcGFnZS4KLSsKLSsgIC0gRml4ZWQgdHlwbyBpbiBtYWNybyB0 aGF0IG1hZGUgdGhyZWFkZWQgY29kZSBub3QgY29tcGlsYWJsZSwKLSsgICAgZXNwZWNpYWxseSBv biBXaW4zMiBwbGF0Zm9ybXMuCi0rCi0rICAtIENoYW5nZWQgZGV0ZWN0aW9uIG9mIG9sZGVyIHBl cmxzIChwcmUtNS4wMDUpIGJ5IHRlc3RpbmcgUEFUQ0hMRVZFTAotKyAgICBkaXJlY3RseSBpbnN0 ZWFkIG9mIHJlbHlpbmcgb24gaW50ZXJuYWwgc3ltYm9scy4KLSsKLSswLjYwNSAtIFR1ZSBTZXAg MTQgMjI6MTM6MjggTUVTVCAxOTk5ICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVk aUBwb2JveC5jb20+Ci0rCi0rICAtIEludGVncmF0ZWQgInRocmVhZC1zYWZlIiBwYXRjaCBmcm9t IE11cnJheSBOZXNiaXR0LgotKyAgICBOb3RlIHRoYXQgdGhpcyBtYXkgbm90IGJlIHZlcnkgZWZm aWNpZW50IGZvciB0aHJlYWRlZCBjb2RlLAotKyAgICBzZWUgY29tbWVudCBpbiB0aGUgY29kZS4K LSsKLSsgIC0gVHJ5IHRvIGF2b2lkIGNvbXBpbGF0aW9uIHdhcm5pbmcgb24gNjQtYml0IENQVXMu IENhbid0IHRlc3QgaXQsCi0rICAgIHNpbmNlIEkgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gc3VjaCBt YWNoaW5lcy4KLSsKLSswLjYwNCAtIE1vbiBKdWwgMTIgMTQ6Mzc6MTkgTUVURFNUIDE5OTkgICBS YXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQHBvYm94LmNvbT4KLSsKLSsgIC0gY2hh bmdlZCBteSBlLW1haWwgdG8gcG9ib3guCi0rCi0rICAtIG1lbnRpb25lZCBpdCBpcyBub3QgdGhy ZWFkLXNhZmUuCi0rCi0rICAtIHVwZGF0ZWQgdmVyc2lvbiBudW1iZXIuCi0rCi0rICAtIHVzZXMg bmV3IGludGVybmFsIFBMXyogbmFtaW5nIGNvbnZlbnRpb24uCi0rCi0rMC42MDMgLSBGcmkgSnVs ICAzIDEzOjM4OjE2IE1FVERTVCAxOTk4ICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5m cmVkaUBncmVub2JsZS5ocC5jb20+Ci0rCi0rICAtIFVwZGF0ZWQgYmVuY2htYXJrIGZpZ3VyZXMg ZHVlIHRvIHJlY2VudCBvcHRpbWl6YXRpb25zIGRvbmUgaW4KLSsgICAgc3RvcmUoKTogdGFnbnVt cyBhcmUgbm93IHN0b3JlZCBhcy1pcyBpbiB0aGUgaGFzaCB0YWJsZSwgc28KLSsgICAgbm8gc3Vy cm91bmRpbmcgU1YgaXMgY3JlYXRlZC4gQW5kIHRoZSAic2hhcmVkIGtleXMiIG1vZGUgZm9yCi0r ICAgIGhhc2ggdGFibGUgd2FzIHR1cm5lZCBvZmYuCi0rCi0rICAtIEZpeGVkIGJhY2t3YXJkIGNv bXBhdGliaWxpdHkgKHdydCAwLjVAOSkgZm9yIHJldHJpZXZhbCBvZgotKyAgICBibGVzc2VkIHJl ZnMuIFRoYXQgb2xkIHZlcnNpb24gZGlkIHNvbWV0aGluZyB3cm9uZywgYnV0IHRoZQotKyAgICBi dWdmaXggcHJldmVudGVkIGNvcnJlY3QgcmV0cmlldmFsIG9mIHRoZSBvbGQgZm9ybWF0LgotKwot KzAuNjAyIC0gTW9uIEp1biAyMiAxMTowMDo0OCBNRVREU1QgMTk5OCAgIFJhcGhhZWwgTWFuZnJl ZGkgPFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9ibGUuaHAuY29tPgotKwotKyAgLSBDaGFuZ2VkIGJl bmNobWFyayBmaWd1cmVzLgotKwotKyAgLSBBZGp1c3QgcmVmY250IG9mIHRpZWQgb2JqZWN0cyBh ZnRlciBjYWxsaW5nIHN2X21hZ2ljKCkgdG8gYXZvaWQKLSsgICAgbWVtb3J5IGxlYWtzLiAgQ29u dHJpYnV0ZWQgYnkgSmVmZiBHcmVzaGFtLgotKwotKzAuNjAxIC0gRnJpIEp1biAxMiAxMTo1MDow NCBNRVREU1QgMTk5OCAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9i bGUuaHAuY29tPgotKwotKyAgLSBBZGRlZCB3b3JrYXJvdW5kIGZvciBwZXJzaXN0ZW50IExWQUxV RS1uZXNzIGluIHBlcmw1LjAwNC4gQWxsCi0rICAgIHNjYWxhcnMgdGFnZ2VkIGFzIGJlaW5nIGFu IGx2YWx1ZSBhcmUgaGFuZGxlZCBhcyBpZiB0aGV5IHdlcmUKLSsgICAgbm90IGFuIGx2YWx1ZSBh dCBhbGwuICBBZGRlZCB0ZXN0IGZvciB0aGF0IExWQUxVRSBidWcgd29ya2Fyb3VuZC4KLSsKLSsg IC0gTm93IGhhbmRsZXMgUGVybCBpbW1vcnRhbCBzY2FsYXJzIGV4cGxpY2l0bHksIGJ5IHN0b3Jp bmcgJnN2X3llcwotKyAgICBhcyBzdWNoLCBleHBsaWNpdGx5LgotKwotKyAgLSBSZXRyaWV2YWwg b2Ygbm9uLWltbW9ydGFsIHVuZGVmIGNhbm5vdCBiZSBzaGFyZWQuIFByZXZpb3VzCi0rICAgIHZl cnNpb24gd2FzIG92ZXItb3B0aW1pemluZyBieSBub3QgY3JlYXRpbmcgYSBzZXBhcmF0ZSBTViBm b3IKLSsgICAgYWxsIHVuZGVmaW5lZCBzY2FsYXJzIHNlZW4uCi0rCi0rMC42MDAgLSBUaHUgSnVu ICA0IDE3OjIxOjUxIE1FVERTVCAxOTk4ICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5m cmVkaUBncmVub2JsZS5ocC5jb20+Ci0rCi0rICAtIFRoaXMgdmVyc2lvbiBpbnRyb2R1Y2VzIGEg YmluYXJ5IGluY29tcGF0aWJpbGl0eSBpbiB0aGUgZ2VuZXJhdGVkCi0rICAgIGJpbmFyeSBpbWFn ZSwgd2hpY2ggaXMgbW9yZSBjb21wYWN0IHRoYW4gb2xkZXIgb25lcyBieSBhcHByb3hpbWF0aXZl bHkKLSsgICAgMTUlLCBkZXBlbmRpbmcgb24gdGhlIGV4YWN0IGRlZ3JlZSBvZiBzaGFyaW5nIGlu IHlvdXIgc3RydWN0dXJlcy4KLSsKLSsgIC0gVGhlIGdvb2QgbmV3cyBpcyB0aGF0IHlvdXIgb2xk ZXIgaW1hZ2VzIGNhbiBzdGlsbCBiZSByZXRyaWV2ZWQgd2l0aAotKyAgICB0aGlzIHZlcnNpb24s IGkuZS4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpcyBwcmVzZXJ2ZWQuIFRoaXMgdmVyc2lvbgot KyAgICBvZiBTdG9yYWJsZSBjYW4gb25seSBnZW5lcmF0ZSBuZXcgYmluYXJpZXMgaG93ZXZlci4K LSsKLSsgIC0gQW5vdGhlciBnb29kIG5ld3MgaXMgdGhhdCB0aGUgcmV0cmlldmFsIG9mIGRhdGEg c3RydWN0dXJlIGlzCi0rICAgIHNpZ25pZmljYW50bHkgcXVpY2tlciB0aGFuIGJlZm9yZSwgYmVj YXVzZSBhIFBlcmwgYXJyYXkgaXMgdXNlZAotKyAgICBpbnN0ZWFkIG9mIGEgaGFzaCB0YWJsZSB0 byBrZWVwIHRyYWNrIG9mIHJldHJpZXZlZCBvYmplY3RzLCBhbmQKLSsgICAgYWxzbyBiZWNhdXNl IHRoZSBpbWFnZSBiZWluZyBzbWFsbGVyLCBsZXNzIEkvTyBmdW5jdGlvbiBjYWxscyBhcmUKLSsg ICAgbWFkZS4KLSsKLSswLjUwOSAtIFR1ZSBNYXkgMTIgMDk6MTU6MTUgTUVURFNUIDE5OTggICBS YXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQGdyZW5vYmxlLmhwLmNvbT4KLSsKLSsg IC0gVmVyc2lvbiBudW1iZXIgbm93IGdvdCBmcm9tIFN0b3JhYmxlLnBtIGRpcmVjdGx5LgotKwot KyAgLSBGaXhlZCBvdmVyemVhbG91cyBzdl90eXBlKCkgb3B0aW1pemF0aW9uLCB3aGljaCB3b3Vs ZCBtYWtlCi0rICAgIFN0b3JhYmxlIGZhaWwgd2hlbiBmYWNlZCB3aXRoIGFuICJ1cGdyYWRlZCIg U1YgdG8gdGhlIFBWSVYKLSsgICAgb3IgUFZOViBraW5kIGNvbnRhaW5pbmcgYSByZWZlcmVuY2Uu Ci0rCi0rMC41MDggLSBUaHUgQXByIDMwIDE1OjExOjMwIE1FVERTVCAxOTk4ICAgUmFwaGFlbCBN YW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2JsZS5ocC5jb20+Ci0rCi0rICAtIEV4dGVu ZGVkIHRoZSBTWU5PUFNJUyBzZWN0aW9uIHRvIGdpdmUgcXVpY2sgb3ZlcnZpZXcgb2YgdGhlCi0r ICAgIHJvdXRpbmVzIGFuZCB0aGVpciBzaWduYXR1cmUuCi0rCi0rICAtIE9wdGltaXplZCBzdl90 eXBlKCkgdG8gYXZvaWQgZmxhZ3MgY2hlY2tpbmcgd2hlbiBub3QgbmVlZGVkLCBpLmUuCi0rICAg IHdoZW4gdGhlaXIgdHlwZSBtYWtlcyBpdCBpbXBvc3NpYmxlIGZvciB0aGVtIHRvIGJlIHJlZnMg b3IgdGllZC4KLSsgICAgVGhpcyBzbGlnaHRseSBpbmNyZWFzZXMgdGhyb3VnaHB1dCBieSBhIGZl dyBwZXJjZW50cyB3aGVuIHJlZnMKLSsgICAgYW5kIHRpZWQgdmFyaWFibGVzIGFyZSBtYXJnaW5h bCBvY2N1cnJlbmNlcyBpbiB5b3VyIGRhdGEuCi0rCi0rICAtIFN0dWJzIGZvciBYUyBub3cgdXNl IE91dHB1dFN0cmVhbSBhbmQgSW5wdXRTdHJlYW0gZmlsZSB0eXBlcyB0bwotKyAgICBtYWtlIGl0 IHdvcmsgd2hlbiB0aGUgZ2l2ZW4gZmlsZSBpcyBhY3R1YWxseSBhIHNvY2tldC4gUGVybAotKyAg ICBtYWtlcyBhIGRpc3RpbmN0aW9uIGZvciBzb2NrZXRzIGluIGl0cyBpbnRlcm5hbCBJL08gc3Ry dWN0dXJlcwotKyAgICBieSBoYXZpbmcgYm90aCBhIHJlYWQgYW5kIGEgd3JpdGUgc3RydWN0dXJl LCB3aGVyZWFzIHBsYWluIGZpbGVzCi0rICAgIHNoYXJlIHRoZSBzYW1lIG9uZS4KLSsKLSswLjUw NyAtIEZyaSBBcHIgMjQgMTc6Mjk6MjMgTUVURFNUIDE5OTggICBSYXBoYWVsIE1hbmZyZWRpIDxS YXBoYWVsX01hbmZyZWRpQGdyZW5vYmxlLmhwLmNvbT4KLSsKLSsgIC0gVGhhbmtzIHRvIGEgY29u dHJpYnV0aW9uIGZyb20gQmVuamFtaW4gQS4gSG9sem1hbiwgU3RvcmFibGUgaXMgbm93Ci0rICAg IGFibGUgdG8gY29ycmVjdGx5IHNlcmlhbGl6ZSB0aWVkIFNWcywgaS5lLiB0aWVkIGFycmF5cywg aGFzaGVzCi0rICAgIGFuZCBzY2FsYXJzLgotKwotKzAuNTA2IC0gVGh1IEFwciAgOSAxODowNzo1 MSBNRVREU1QgMTk5OCAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9i bGUuaHAuY29tPgotKwotKyAgLSBJIHNhaWQgU3ZQT0soKSBoYWQgY2hhbmdlZCB0byBTdlBPS3Ao KSwgYnV0IHRoYXQgd2FzIGEgbGllLi4uCi0rCi0rMC41MDUgLSBXZWQgQXByICA4IDEzOjE0OjI5 IE1FVERTVCAxOTk4ICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2Js ZS5ocC5jb20+Ci0rCi0rICAtIFdyb3RlIHNpemVvZihTViAqKSBpbnN0ZWFkIG9mIHNpemVvZihJ MzIpIHdoZW4gcG9ydGFibGUsIHdoaWNoCi0rICAgIGluIGVmZmVjdCBtYW5nbGVkIHRoZSBvYmpl Y3QgdGFncyBhbmQgcHJldmVudGVkIHBvcnRhYmlsaXR5Ci0rICAgIGFjcm9zcyAzMi82NCBiaXQg YXJjaGl0ZWN0dXJlcyEKLSsKLSswLjUwNCAtIFdlZCBNYXIgMjUgMTQ6NTc6MDIgTUVUIDE5OTgg ICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQGdyZW5vYmxlLmhwLmNvbT4KLSsK LSsgIC0gQWRkZWQgY29kZSBleGFtcGxlIGZvciBzdG9yZV9mZCgpIGFuZCByZXRyaWV2ZV9mZCgp IGluIHRoZQotKyAgICBtYW4gcGFnZSwgdG8gZW1waGFzaXplIHRoYXQgZmlsZSBkZXNjcmlwdG9y cyBtdXN0IGJlIHBhc3NlZCBhcwotKyAgICBnbG9icywgbm90IGFzIHBsYWluIHN0cmluZ3MuCi0r Ci0rICAtIENhbm5vdCB1c2UgU1YgYWRkcmVzc2VzIGFzIHRhZyB3aGVuIHVzaW5nIG5zdG9yZSgp IG9uIExQNjQuIFRoaXMKLSsgICAgd2FzIHRoZSBjYXVzZSBvZiBwcm9ibGVtcyB3aGVuIGNyZWF0 aW5nIGEgc3RvcmFibGUgaW1hZ2Ugb24gYW4KLSsgICAgTFA2NCBtYWNoaW5lIGFuZCByZXRyaWV2 aW5nIGl0IG9uIGFuIElMUDMyIHN5c3RlbSwgd2hpY2ggaXMKLSsgICAgZXhhY3RseSB3aGF0IG5z dG9yZSgpIGlzIG1lYW50IGZvci4uLgotKwotKyAgLSBIb3dldmVyLCB3ZSBjb250aW51ZSB0byB1 c2UgU1YgYWRkcmVzc2VzIGFzIHRhZ3MgZm9yIHBsYWluIHN0b3JlKCksCi0rICAgIGJlY2F1c2Ug YmVuY2htYXJraW5nIHNob3dzIHRoYXQgaXQgc2F2ZXMgdXAgdG8gOCUgb2YgdGhlIHN0b3JlCi0r ICAgIHRpbWUsIGFuZCBzdG9yZSgpIGlzIG1lYW50IHRvIGJlIGZhc3QgYXQgdGhlIGV4cGVuc2Ug b2YgbGFjawotKyAgICBvZiBwb3J0YWJpbGl0eS4KLSsKLSsgIC0gVGhpcyBtZWFucyB0aGVyZSB3 aWxsIGJlIGFwcHJveGltYXRlbHkgYW4gOCUgZGVncmFkYXRpb24gb2YKLSsgICAgcGVyZm9ybWFu Y2UgZm9yIG5zdG9yZSgpLCBidXQgaXQncyBub3cgd29ya2luZyBhcyBleHBlY3RlZC4KLSsgICAg VGhhdCBjb3N0IG1heSB2YXJ5IG9uIHlvdXIgbWFjaGluZSBvZiBjb3Vyc2UsIHNpbmNlIGl0IGlz Ci0rICAgIHNvbGVseSBjYXVzZWQgYnkgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG92ZXJoZWFkIHVz ZWQgdG8gY3JlYXRlCi0rICAgIHVuaXF1ZSBTViB0YWdzIGZvciBlYWNoIGRpc3RpbmN0IHN0b3Jl ZCBTVi4KLSsKLSswLjUwMyAtIFR1ZSBKYW4gMjAgMDk6MjE6NTMgTUVUIDE5OTggICBSYXBoYWVs IE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQGdyZW5vYmxlLmhwLmNvbT4KLSsKLSsgIC0gRG9u J3QgdXNlIGFueSAnXycgaW4gdmVyc2lvbiBudW1iZXIuCi0rCi0rMC41XzAyIC0gVHVlIEphbiAx MyAxNzo1MTo1MCBNRVQgMTk5OCAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlA Z3Jlbm9ibGUuaHAuY29tPgotKwotKyAgLSBVcGRhdGVkIHZlcnNpb24gbnVtYmVyLgotKwotKyAg LSBhZGRlZCBiaW5tb2RlKCkgY2FsbHMgZm9yIHN5c3RlbXMgd2hlcmUgaXQgbWF0dGVycy4KLSsK LSsgIC0gQmUgc3VyZSB0byBwYXNzIGdsb2JzLCBub3QgcGxhaW4gZmlsZSBzdHJpbmdzLCB0byBD IHJvdXRpbmVzLAotKyAgICBzbyB0aGF0IFN0b3JhYmxlIGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBQ ZXJsIGRlYnVnZ2VyLgotKwotKzAuNV8wMSAtIFdlZCBOb3YgIDUgMTA6NTM6MjIgTUVUIDE5OTcg ICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQGdyZW5vYmxlLmhwLmNvbT4KLSsK LSsgIC0gRml4IG1lbW9yeSBsZWFrcyBvbiBzZWVuIGhhc2ggdGFibGUgYW5kIHJldHVybmVkIFNW IHJlZnMuCi0rCi0rICAtIFN0b3JhYmxlIGRpZCBub3Qgd29yayBwcm9wZXJseSB3aGVuIHRhaW50 aW5nIGVuYWJsZWQuCi0rCi0rICAtIEZpeGVkICJBbGxvY2F0aW9uIHRvbyBsYXJnZSIgbWVzc2Fn ZXMgaW4gZnJlZXplL3RoYXcgYW5kIGFkZGVkLgotKyAgICBwcm9wZXIgcmVncmVzc2lvbiB0ZXN0 IGluIHQvZnJlZXplLnQuCi0rCi0rMC41IC0gVHVlIEp1biAxMCAxODo0Nzo0NyBNRVQgMTk5NyAg IFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9ibGUuaHAuY29tPgotKwot KyAgLSBGaXggc3RvcmluZyBpbiBuZXR3b3JrIG9yZGVyIHdoZXJlIGl0IGlzbid0IG5hdGl2ZQot KwotKyAgLSBGaXggc2l6ZSBjYWxjdWxhdGlvbiB3aGVuIHN0b3JpbmcgdG8gbWVtb3J5IG9yIGNs b25pbmcKLSsKLSswLjRfMDcgLSBUdWUgSnVuICAzIDA5OjQxOjMzIE1FVERTVCAxOTk3ICAgUmFw aGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2JsZS5ocC5jb20+Ci0rCi0rICAt IEFkZGVkIGZyZWV6ZS90aGF3IGludGVyZmFjZSBhbmQgZGNsb25lLgotKwotKzAuNF8wNiAtIEZy aSBNYXkgMTYgMTA6NDU6NDcgTUVURFNUIDE5OTcgICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVs X01hbmZyZWRpQGdyZW5vYmxlLmhwLmNvbT4KLSsKLSsgIC0gRm9yZ290IHRoYXQgQXV0b0xvYWRl ciBkb2VzIG5vdCBleHBvcnQgaXRzIG93biBBVVRPTE9BRC4KLSsgICAgSSBjb3VsZCB1c2UKLSsK LSsgICAgICB1c2UgQXV0b0xvYWRlciAnQVVUT0xPQUQnOwotKwotKyAgICBidXQgdGhhdCB3b3Vs ZCBub3QgYmUgYmFja3dhcmQgY29tcGF0aWJsZS4gU28gdGhlIGV4cG9ydCBpcwotKyAgICBkb25l IGJ5IGhhbmQuLi4KLSsKLSswLjRfMDUgLSBUdWUgTWFyIDI1IDExOjIxOjMyIE1FVCAxOTk3ICAg UmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2JsZS5ocC5jb20+Ci0rCi0r ICAtIEVtcHR5IHNjYWxhciBzdHJpbmdzIGFyZSBub3cgImRlZmluZWQiIGF0IHJldHJpZXZhbCB0 aW1lLgotKwotKyAgLSBOZXcgdGVzdCB0byBlbnN1cmUgYW4gZW1wdHkgc3RyaW5nIGlzIGRlZmlu ZWQgd2hlbiByZXRyaWV2ZWQuCi0rCi0rMC40XzA0IC0gVGh1IEZlYiAyNyAxNjozMjo0NCBNRVQg MTk5NyAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9ibGUuaHAuY29t PgotKwotKyAgLSBEZWNsYXJlIFZFUlNJT04gYXMgYmVpbmcgdXNlZAotKwotKyAgLSBGaXhlZCBh IHR5cG8gaW4gdGhlIFBlcmxJT19wdXRjIHJlbWFwcGluZy4KLSsgICAgUGVybElPX3JlYWQgYW5k IHBlcmxJT193cml0ZSBpbnZlcnRlZCBzaXplL25iX2l0ZW1zLgotKyAgICAob25seSByZWxldmFu dCBmb3IgcHJlLXBlcmw1LjAwNCB2ZXJzaW9ucykKLSsKLSswLjRfMDMgLSBUaHUgRmViIDI3IDE1 OjU4OjMxIE1FVCAxOTk3ICAgUmFwaGFlbCBNYW5mcmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVu b2JsZS5ocC5jb20+Ci0rCi0rICAtIEFkZGVkIFZFUlNJT04gaWRlbnRpZmljYXRpb24KLSsKLSsg IC0gQWxsb3cgYnVpbGQgd2l0aCBwZXJsNS4wMDMsIHdoaWNoIGlzIGFudGUgcGVybElPIHRpbWUK LSsKLSswLjRfMDIgLSBXZWQgSmFuIDIyIDE1OjE5OjU2IE1FVCAxOTk3ICAgUmFwaGFlbCBNYW5m cmVkaSA8UmFwaGFlbF9NYW5mcmVkaUBncmVub2JsZS5ocC5jb20+Ci0rCi0rICAtIEFkZGVkICJ0 aGFua3MgdG8iIHNlY3Rpb24gdG8gUkVBRE1FLgotKwotKyAgLSBEb2N1bWVudGVkIG5ldyBmb3Jn aXZlX21lIHZhcmlhYmxlLgotKwotKyAgLSBNYWRlIDY0LWJpdCBjbGVhbi4KLSsKLSsgIC0gQWRk ZWQgZm9yZ2l2ZV9tZSBzdXBwb3J0IHRvIGFsbG93IHN0b3JlKCkgb2YgZGF0YSBzdHJ1Y3R1cmVz Ci0rICAgIGNvbnRhaW5pbmcgbm9uLXN0b3JhYmxlIGl0ZW1zIGxpa2UgQ09ERSByZWZzLgotKwot KzAuNCAtIFdlZCBKYW4gMTQgMTk6MjU6NTcgTUVUIDE5OTcgICBSYXBoYWVsIE1hbmZyZWRpIDxS YXBoYWVsX01hbmZyZWRpQGdyZW5vYmxlLmhwLmNvbT4KLSsKLSsgIC0gQXZvaWQgY2hhbmdpbmcg ZGlyZWN0b3J5IGluIHRlc3RzCi0rCi0rICAtIEFkZCBhIHNlcGFyYXRlIHR5cGUgZm9yIHN0b3Jp bmcgbG9uZ2VyIHN0cmluZ3MKLSsKLSsgIC0gVXNlIFBlcmxJTyBBUElzCi0rCi0rMC4zIC0gVHVl IEphbiAxMyAxNjoxMjozNiBNRVQgMTk5NyAgIFJhcGhhZWwgTWFuZnJlZGkgPFJhcGhhZWxfTWFu ZnJlZGlAZ3Jlbm9ibGUuaHAuY29tPgotKwotKyAgLSBFbmNvZGUgaW50ZWdlcnMgYXMgaW50ZWdl cnMgZXZlbiBpZiB0aGV5IGhhdmUgTk9LIGZsYWcKLSsKLSsgIC0gQXZvaWQgZXh0cmEgaW5jcmVt ZW50IG9mIHJlZiBjb3VudCB3aGVuIHJldHJlaXZpbmcgc2NhbGFyIHJlZmVyZW5jZXMKLSsKLSsg IC0gRml4IG11dGFiaWxpdHkgb2YgaGFzaCBzbG90cyBkZWNvZGVkIGZyb20gdW5kZWZzCi0rCi0r MC4yXzAyIC0gTW9uIEphbiAxMyAxNzo1MzoxOCBNRVQgMTk5NyAgIFJhcGhhZWwgTWFuZnJlZGkg PFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9ibGUuaHAuY29tPgotKwotKyAgLSBBZGRlZCBNVEcgc3Rh dGlzdGljcy4KLSsKLSsgIC0gVXBkYXRlZCBzdGF0aXN0aWNzIHdpdGggTVRHIHBlcmZvcm1hbmNl ICgxIE1ieXRlL3Mgb24gc3RvcmUpCi0rCi0rICAtIE1pc3NlZCBDaGFuZ2Vsb2cgaW4gTUFOSUZF U1QuCi0rCi0rMC4yIC0gTW9uIEphbiAxMyAxNzoyMDo1NSBNRVQgMTk5NyAgIFJhcGhhZWwgTWFu ZnJlZGkgPFJhcGhhZWxfTWFuZnJlZGlAZ3Jlbm9ibGUuaHAuY29tPgotKwotKyAgLSBDcm9hayBv bmx5IGFmdGVyIGhhdmluZyBjbG9zZWQgdGhlIGZpbGUKLSsKLSsgIC0gUmVtb3ZlZCBlcnJvbmVv dXMgbGluZSBpbiByZXRyaWV2ZV9mZAotKwotKyAgLSBGb3Jnb3QgdG8gdGFrZSBuZXR3b3JrIG9y ZGVyIGludG8gYWNjb3VudCBmb3IgbGVuZ3RocwotKwotKzAuMSAtIE1vbiBPY3QgIDIgMTE6NTA6 MDIgTUVUIDE5OTUgICBSYXBoYWVsIE1hbmZyZWRpIDxSYXBoYWVsX01hbmZyZWRpQGdyZW5vYmxl LmhwLmNvbT4KLSsKLSsgIC0gSW5pdGlhbCByZWxlYXNlCi1kaWZmIC0tZ2l0IGEvTUFOSUZFU1Qg Yi9NQU5JRkVTVAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA1ZTM4MmQ5Li4wMDAw MDAwCi0tLS0gYS9NQU5JRkVTVAotKysrIC9kZXYvbnVsbAotQEAgLTEsNjUgKzAsMCBAQAotLUNo YW5nZUxvZwotLWhpbnRzL2dudWtmcmVlYnNkLnBsCi0taGludHMvZ251a25ldGJzZC5wbAotLWhp bnRzL2hwdXgucGwKLS1oaW50cy9saW51eC5wbAotLU1ha2VmaWxlLlBMCi0tTUFOSUZFU1QJCQlU aGlzIGxpc3Qgb2YgZmlsZXMKLS1NRVRBLmpzb24JCQlNb2R1bGUgSlNPTiBtZXRhLWRhdGEgKGFk ZGVkIGJ5IE1ha2VNYWtlcikKLS1NRVRBLnltbAkJCU1vZHVsZSBtZXRhLWRhdGEgKGFkZGVkIGJ5 IE1ha2VNYWtlcikKLS1wcHBvcnQuaAotLVJFQURNRQotLXN0YWNrc2l6ZQotLVN0b3JhYmxlLnBt Ci0tU3RvcmFibGUueHMKLS10L2F0dGFjaC50Ci0tdC9hdHRhY2hfZXJyb3JzLnQKLS10L2F0dGFj aF9zaW5nbGV0b24udAotLXQvYmxlc3NlZC50Ci0tdC9jYW5vbmljYWwudAotLXQvY2lyY3VsYXJf aG9vay50Ci0tdC9jb2RlLnQKLS10L2NvbXBhdDAxLnQKLS10L2NvbXBhdDA2LnQKLS10L2Nyb2Fr LnQKLS10L0NWRS0yMDE1LTE1OTIudAotLXQvZGNsb25lLnQKLS10L2Rlc3Ryb3kudAotLXQvZG93 bmdyYWRlLnQKLS10L2ZpbGVfbWFnaWMudAotLXQvZmxhZ3MudAotLXQvZm9yZ2l2ZS50Ci0tdC9m cmVlemUudAotLXQvSEFTX0FUVEFDSC5wbQotLXQvSEFTX0hPT0sucG0KLS10L0hBU19PVkVSTE9B RC5wbQotLXQvaHVnZS50Ci0tdC9odWdlaWRzLnQKLS10L2ludGVnZXIudAotLXQvaW50ZXJ3b3Jr NTYudAotLXQvanVzdF9wbGFpbl9uYXN0eS50Ci0tdC9sZWFrcy50Ci0tdC9sb2NrLnQKLS10L21h a2VfNTZfaW50ZXJ3b3JrLnBsCi0tdC9tYWtlX2Rvd25ncmFkZS5wbAotLXQvbWFrZV9vdmVybG9h ZC5wbAotLXQvbWFsaWNlLnQKLS10L292ZXJsb2FkLnQKLS10L3JlY3Vyc2UudAotLXQvcmVnZXhw LnQKLS10L3Jlc3RyaWN0LnQKLS10L3JldHJpZXZlLnQKLS10L3JvYnVzdC50Ci0tdC9zaWdfZGll LnQKLS10L3N0LWR1bXAucGwKLS10L3N0b3JlLnQKLS10L3Rlc3RsaWIucGwKLS10L3RocmVhZHMu dAotLXQvdGllZC50Ci0tdC90aWVkX2hvb2sudAotLXQvdGllZF9pdGVtcy50Ci0tdC90aWVkX3Jl aWZ5LnQKLS10L3RpZWRfc3RvcmUudAotLXQvdXRmOC50Ci0tdC91dGY4aGFzaC50Ci0tdC93ZWFr LnQKLWRpZmYgLS1naXQgYS9NQU5JRkVTVC5TS0lQIGIvTUFOSUZFU1QuU0tJUAotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ2ZWY4YjAKLS0tLSAvZGV2L251bGwKLSsrKyBi L01BTklGRVNULlNLSVAKLUBAIC0wLDAgKzEsNTggQEAKLSsjIEF2b2lkIHZlcnNpb24gY29udHJv bCBmaWxlcy4KLStcYlJDU1xiCi0rXGJDVlNcYgotK1xiU0NDU1xiCi0rLHYkCi0rXEJcLnN2blxi Ci0rXEJcLmdpdFxiCi0rXlwuZ2l0aHViXGIKLStcQlwuZ2l0aWdub3JlXGIKLStcYl9kYXJjc1xi Ci0rXEJcLmN2c2lnbm9yZSQKLStcQlwuYnpyXGIKLStcQlwuYnpyaWdub3JlJAotKwotKyMgQXZv aWQgVk1TIHNwZWNpZmljIE1ha2VNYWtlciBnZW5lcmF0ZWQgZmlsZXMKLStcYkRlc2NyaXAuTU1T JAotK1xiREVTQ1JJUC5NTVMkCi0rXGJkZXNjcmlwLm1tcyQKLSsKLSsjIEF2b2lkIE1ha2VtYWtl ciBnZW5lcmF0ZWQgYW5kIHV0aWxpdHkgZmlsZXMuCi0rXGJNQU5JRkVTVFwuYmFrCi0rXGJNYWtl ZmlsZSQKLStcYmJsaWIvCi0rXGJNYWtlTWFrZXItXGQKLStcYnBtX3RvX2JsaWJcLnRzJAotK1xi cG1fdG9fYmxpYiQKLStcYmJsaWJkaXJzXC50cyQgICAgICAgICAjIDYuMTggdGhyb3VnaCA2LjI1 IGdlbmVyYXRlZCB0aGlzCi0rXGJfZXVtbS8gICAgICAgICAgICAgICAgIyA3LjA1XzA1IGFuZCBh Ym92ZQotKwotKyMgQXZvaWQgdGVtcCBhbmQgYmFja3VwIGZpbGVzLgotK34kCi0rXC5vbGQkCi0r XCMkCi0rXGJcLiMKLStcLmJhayQKLStcLnRtcCQKLStcLiMKLStcLnJlaiQKLStcLi4qXC5zdy4/ JAotK1wuflxkK34kCi0rCi0rXEJcLkRTX1N0b3JlCi0rXEJcLl8KLStcLmlbY0NdbG91ZCQKLSsK LStcYmNvdmVyX2RiXGIKLStcYmNvdmVyZWRcYgotKwotK1xCXC5wcm92ZSQKLSsKLSteTVlNRVRB XC4KLSteTUVUQV9uZXdcLig/Ompzb258eW1sKQotKwotK15TdG9yYWJsZS1bMC05Ll0rCi0rCi0r XC5icyQKLStcLmMkCi0rXC5vJAotZGlmZiAtLWdpdCBhL01FVEEuanNvbiBiL01FVEEuanNvbgot ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBjMTljNmY2Li4wMDAwMDAwCi0tLS0gYS9N RVRBLmpzb24KLSsrKyAvZGV2L251bGwKLUBAIC0xLDU4ICswLDAgQEAKLS17Ci0tICAgImFic3Ry YWN0IiA6ICJwZXJzaXN0ZW5jZSBmb3IgUGVybCBkYXRhIHN0cnVjdHVyZXMiLAotLSAgICJhdXRo b3IiIDogWwotLSAgICAgICJQZXJsIDUgUG9ydGVycyIKLS0gICBdLAotLSAgICJkeW5hbWljX2Nv bmZpZyIgOiAxLAotLSAgICJnZW5lcmF0ZWRfYnkiIDogIkV4dFV0aWxzOjpNYWtlTWFrZXIgdmVy c2lvbiA3LjYyLCBDUEFOOjpNZXRhOjpDb252ZXJ0ZXIgdmVyc2lvbiAyLjE1MDAxMCIsCi0tICAg ImxpY2Vuc2UiIDogWwotLSAgICAgICJwZXJsXzUiCi0tICAgXSwKLS0gICAibWV0YS1zcGVjIiA6 IHsKLS0gICAgICAidXJsIiA6ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL3Blcmxkb2M/Q1BBTjo6 TWV0YTo6U3BlYyIsCi0tICAgICAgInZlcnNpb24iIDogMgotLSAgIH0sCi0tICAgIm5hbWUiIDog IlN0b3JhYmxlIiwKLS0gICAibm9faW5kZXgiIDogewotLSAgICAgICJkaXJlY3RvcnkiIDogWwot LSAgICAgICAgICJ0IiwKLS0gICAgICAgICAiaW5jIgotLSAgICAgIF0KLS0gICB9LAotLSAgICJw cmVyZXFzIiA6IHsKLS0gICAgICAiYnVpbGQiIDogewotLSAgICAgICAgICJyZXF1aXJlcyIgOiB7 Ci0tICAgICAgICAgICAgIkV4dFV0aWxzOjpNYWtlTWFrZXIiIDogIjYuMzEiCi0tICAgICAgICAg fQotLSAgICAgIH0sCi0tICAgICAgImNvbmZpZ3VyZSIgOiB7Ci0tICAgICAgICAgInJlcXVpcmVz IiA6IHsKLS0gICAgICAgICAgICAiRXh0VXRpbHM6Ok1ha2VNYWtlciIgOiAiNi4zMSIKLS0gICAg ICAgICB9Ci0tICAgICAgfSwKLS0gICAgICAicnVudGltZSIgOiB7Ci0tICAgICAgICAgInJlcXVp cmVzIiA6IHsKLS0gICAgICAgICAgICAiWFNMb2FkZXIiIDogIjAiCi0tICAgICAgICAgfQotLSAg ICAgIH0sCi0tICAgICAgInRlc3QiIDogewotLSAgICAgICAgICJyZXF1aXJlcyIgOiB7Ci0tICAg ICAgICAgICAgIlRlc3Q6Ok1vcmUiIDogIjAuNDEiCi0tICAgICAgICAgfQotLSAgICAgIH0KLS0g ICB9LAotLSAgICJwcm92aWRlcyIgOiB7Ci0tICAgICAgIlN0b3JhYmxlIiA6IHsKLS0gICAgICAg ICAiZmlsZSIgOiAiU3RvcmFibGUucG0iLAotLSAgICAgICAgICJ2ZXJzaW9uIiA6ICIzLjI1Igot LSAgICAgIH0KLS0gICB9LAotLSAgICJyZWxlYXNlX3N0YXR1cyIgOiAic3RhYmxlIiwKLS0gICAi cmVzb3VyY2VzIiA6IHsKLS0gICAgICAiYnVndHJhY2tlciIgOiB7Ci0tICAgICAgICAgIndlYiIg OiAiaHR0cHM6Ly9naXRodWIuY29tL1BlcmwvcGVybDUvaXNzdWVzIgotLSAgICAgIH0KLS0gICB9 LAotLSAgICJ2ZXJzaW9uIiA6ICIzLjI1IiwKLS0gICAieF9zZXJpYWxpemF0aW9uX2JhY2tlbmQi IDogIkpTT046OlBQIHZlcnNpb24gNC4wNiIKLS19Ci1kaWZmIC0tZ2l0IGEvTUVUQS55bWwgYi9N RVRBLnltbAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA3YThjYTM1Li4wMDAwMDAw Ci0tLS0gYS9NRVRBLnltbAotKysrIC9kZXYvbnVsbAotQEAgLTEsMzAgKzAsMCBAQAotLS0tLQot LWFic3RyYWN0OiAncGVyc2lzdGVuY2UgZm9yIFBlcmwgZGF0YSBzdHJ1Y3R1cmVzJwotLWF1dGhv cjoKLS0gIC0gJ1BlcmwgNSBQb3J0ZXJzJwotLWJ1aWxkX3JlcXVpcmVzOgotLSAgRXh0VXRpbHM6 Ok1ha2VNYWtlcjogJzYuMzEnCi0tICBUZXN0OjpNb3JlOiAnMC40MScKLS1jb25maWd1cmVfcmVx dWlyZXM6Ci0tICBFeHRVdGlsczo6TWFrZU1ha2VyOiAnNi4zMScKLS1keW5hbWljX2NvbmZpZzog MQotLWdlbmVyYXRlZF9ieTogJ0V4dFV0aWxzOjpNYWtlTWFrZXIgdmVyc2lvbiA3LjYyLCBDUEFO OjpNZXRhOjpDb252ZXJ0ZXIgdmVyc2lvbiAyLjE1MDAxMCcKLS1saWNlbnNlOiBwZXJsCi0tbWV0 YS1zcGVjOgotLSAgdXJsOiBodHRwOi8vbW9kdWxlLWJ1aWxkLnNvdXJjZWZvcmdlLm5ldC9NRVRB LXNwZWMtdjEuNC5odG1sCi0tICB2ZXJzaW9uOiAnMS40JwotLW5hbWU6IFN0b3JhYmxlCi0tbm9f aW5kZXg6Ci0tICBkaXJlY3Rvcnk6Ci0tICAgIC0gdAotLSAgICAtIGluYwotLXByb3ZpZGVzOgot LSAgU3RvcmFibGU6Ci0tICAgIGZpbGU6IFN0b3JhYmxlLnBtCi0tICAgIHZlcnNpb246ICczLjI1 JwotLXJlcXVpcmVzOgotLSAgWFNMb2FkZXI6ICcwJwotLXJlc291cmNlczoKLS0gIGJ1Z3RyYWNr ZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9QZXJsL3Blcmw1L2lzc3VlcwotLXZlcnNpb246ICczLjI1 JwotLXhfc2VyaWFsaXphdGlvbl9iYWNrZW5kOiAnQ1BBTjo6TWV0YTo6WUFNTCB2ZXJzaW9uIDAu MDE4JwotZGlmZiAtLWdpdCBhL01ha2VmaWxlLlBMIGIvTWFrZWZpbGUuUEwKLWluZGV4IGI3MDU2 NTQuLjVkNTMzODQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5QTAotKysrIGIvTWFrZWZpbGUuUEwK LUBAIC0xLDcgKzEsNyBAQAotICMKLSAjICBDb3B5cmlnaHQgKGMpIDE5OTUtMjAwMCwgUmFwaGFl bCBNYW5mcmVkaQotICMgIENvcHlyaWdodCAoYykgMjAxNywgUmVpbmkgVXJiYW4KLS0jICAKLSsj Ci0gIyAgWW91IG1heSByZWRpc3RyaWJ1dGUgb25seSB1bmRlciB0aGUgc2FtZSB0ZXJtcyBhcyBQ ZXJsIDUsIGFzIHNwZWNpZmllZAotICMgIGluIHRoZSBSRUFETUUgZmlsZSB0aGF0IGNvbWVzIHdp dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAjCi1AQCAtMTUsNzIgKzE1LDMzIEBAIFdyaXRlTWFrZWZp bGUoCi0gICAgIE5BTUUgICAgICAgICAgICAgICAgPT4gJ1N0b3JhYmxlJywKLSAgICAgQVVUSE9S ICAgICAgICAgICAgICA9PiAnUGVybCA1IFBvcnRlcnMnLAotICAgICBMSUNFTlNFICAgICAgICAg ICAgID0+ICdwZXJsJywKLS0gICAgRElTVE5BTUUgICAgICAgICAgICA9PiAiU3RvcmFibGUiLAot LSAgICBQUkVSRVFfUE0gICAgICAgICAgID0+Ci0tICAgICAgewotLSAgICAgICAgICBYU0xvYWRl ciA9PiAwLAotLSAgICAgIH0sCi0tICAgICggJEV4dFV0aWxzOjpNYWtlTWFrZXI6OlZFUlNJT04g Pj0gNi42NCA/Ci0tICAgICAgICAoCi0tICAgICAgICAgICAgQ09ORklHVVJFX1JFUVVJUkVTID0+ IHsKLS0gICAgICAgICAgICAgICAgJ0V4dFV0aWxzOjpNYWtlTWFrZXInID0+ICc2LjMxJywKLS0g ICAgICAgICAgICB9LAotLSAgICAgICAgICAgIEJVSUxEX1JFUVVJUkVTID0+IHsKLS0gICAgICAg ICAgICAgICAgJ0V4dFV0aWxzOjpNYWtlTWFrZXInID0+ICc2LjMxJywKLSsgICAgUFJFUkVRX1BN ICAgICAgICAgICA9PiB7Ci0rICAgICAgICBYU0xvYWRlciA9PiAwLAotKyAgICB9LAotKyAgICBJ TlNUQUxMRElSUyAgICAgICAgID0+ICgkXSA+PSA1LjAwNyAmJiAkXSA8IDUuMDEyKSA/ICdwZXJs JyA6ICdzaXRlJywKLSsgICAgVkVSU0lPTl9GUk9NICAgICAgICA9PiAnbGliL1N0b3JhYmxlLnBt JywKLSsgICAgQUJTVFJBQ1RfRlJPTSAgICAgICA9PiAnbGliL1N0b3JhYmxlLnBtJywKLSsgICAg Q09ORklHVVJFX1JFUVVJUkVTICA9PiB7Ci0rICAgICAgICAnRXh0VXRpbHM6Ok1ha2VNYWtlcicg PT4gJzYuMzEnLAotKyAgICB9LAotKyAgICBCVUlMRF9SRVFVSVJFUyAgICAgID0+IHsKLSsgICAg ICAgICdFeHRVdGlsczo6TWFrZU1ha2VyJyA9PiAnNi4zMScsCi0rICAgIH0sCi0rICAgIFRFU1Rf UkVRVUlSRVMgICAgICAgPT4gewotKyAgICAgICAgJ1Rlc3Q6Ok1vcmUnID0+ICcwLjgyJywKLSsg ICAgICAgICdGaWxlOjpUZW1wJyA9PiAnMCcsCi0rICAgIH0sCi0rICAgIE1FVEFfTUVSR0UgICAg ICAgICAgPT4gewotKyAgICAgICAgIm1ldGEtc3BlYyIgPT4geyB2ZXJzaW9uID0+IDIgfSwKLSsg ICAgICAgIHJlc291cmNlcyAgID0+IHsKLSsgICAgICAgICAgICBidWd0cmFja2VyID0+ICdodHRw czovL2dpdGh1Yi5jb20vUGVybC9wZXJsNS9pc3N1ZXMnLAotKyAgICAgICAgfSwKLSsgICAgICAg IHByb3ZpZGVzICAgID0+IHsKLSsgICAgICAgICAgICAnU3RvcmFibGUnICA9PiB7Ci0rICAgICAg ICAgICAgICAgIGZpbGUgICAgICAgID0+ICdsaWIvU3RvcmFibGUucG0nLAotKyAgICAgICAgICAg ICAgICB2ZXJzaW9uICAgICA9PiBNTS0+cGFyc2VfdmVyc2lvbignbGliL1N0b3JhYmxlLnBtJyks Ci0gICAgICAgICAgICAgfSwKLS0gICAgICAgICAgICBURVNUX1JFUVVJUkVTID0+IHsKLS0gICAg ICAgICAgICAgICAgJ1Rlc3Q6Ok1vcmUnID0+ICcwLjgyJywKLS0gICAgICAgICAgICB9LAotLSAg ICAgICAgICAgKQotLSAgICAgICAgOiAoKSApLAotLSAgICBJTlNUQUxMRElSUyA9PiAoJF0gPj0g NS4wMDcgJiYgJF0gPCA1LjAxMikgPyAncGVybCcgOiAnc2l0ZScsCi0tICAgIFZFUlNJT05fRlJP TSAgICA9PiAnU3RvcmFibGUucG0nLAotLSAgICBBQlNUUkFDVF9GUk9NICAgPT4gJ1N0b3JhYmxl LnBtJywKLS0gICAgKCRFeHRVdGlsczo6TWFrZU1ha2VyOjpWRVJTSU9OID4gNi40NSA/Ci0tICAg ICAoTUVUQV9NRVJHRSAgICAgICAgPT4geyByZXNvdXJjZXMgPT4KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyBidWd0cmFja2VyID0+ICdodHRwczovL2dpdGh1Yi5jb20vUGVybC9w ZXJsNS9pc3N1ZXMnIH0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzICAg ID0+IHsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTdG9yYWJsZScgID0+IHsK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlICAgICAgICA9PiAnU3Rv cmFibGUucG0nLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24g ICAgID0+IE1NLT5wYXJzZV92ZXJzaW9uKCdTdG9yYWJsZS5wbScpLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotLSAgICApIDogKCkpLAotLSAgICBkaXN0 ICAgICAgICAgICAgICAgID0+IHsgU1VGRklYID0+ICdneicsIENPTVBSRVNTID0+ICdnemlwIC1m JyB9LAotKyAgICAgICAgfSwKLSsgICAgfSwKLSAgICAgY2xlYW4gICAgICAgICAgICAgICA9PiB7 IEZJTEVTID0+ICdTdG9yYWJsZS0qJyB9LAotICk7Ci0tCi0tbXkgJGl2dHlwZSA9ICRDb25maWd7 aXZ0eXBlfTsKLS0KLS0jIEkgZG9uJ3Qga25vdyBpZiB0aGUgVk1TIGZvbGtzIGV2ZXIgc3VwcG9y dGVkIGxvbmcgbG9uZyBvbiA1LjYueAotLWlmICgkaXZ0eXBlIGFuZCAkaXZ0eXBlIGVxICdsb25n IGxvbmcnIGFuZCAkXk8gIX4gL15NU1dpbi8pIHsKLS0gIHByaW50IDw8J0VPTSc7Ci0tCi0tWW91 IGFwcGVhciB0byBoYXZlIGEgcGVybCBjb25maWd1cmVkIHRvIHVzZSA2NCBiaXQgaW50ZWdlcnMg aW4gaXRzIHNjYWxhcgotLXZhcmlhYmxlcy4gIElmIHlvdSBoYXZlIGV4aXN0aW5nIGRhdGEgd3Jp dHRlbiB3aXRoIGFuIGVhcmxpZXIgdmVyc2lvbiBvZgotLVN0b3JhYmxlIHdoaWNoIHRoaXMgdmVy c2lvbiBvZiBTdG9yYWJsZSByZWZ1c2VzIHRvIGxvYWQgd2l0aCBhCi0tCi0tICAgQnl0ZSBvcmRl ciBpcyBub3QgY29tcGF0aWJsZQotLQotLWVycm9yLCB0aGVuIHBsZWFzZSByZWFkIHRoZSBzZWN0 aW9uICI2NCBiaXQgZGF0YSBpbiBwZXJsIDUuNi4wIGFuZCA1LjYuMSIKLS1pbiB0aGUgU3RvcmFi bGUgZG9jdW1lbnRhdGlvbiBmb3IgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byByZWFkIHlvdXIgZGF0 YS4KLS0KLS0oWW91IGNhbiBmaW5kIHRoZSBkb2N1bWVudGF0aW9uIGF0IHRoZSBlbmQgb2YgU3Rv cmFibGUucG0gaW4gUE9EIGZvcm1hdCkKLS0KLS1FT00KLS19Ci0tCi0tcGFja2FnZSBNWTsKLS0K LS1zdWIgZGVwZW5kIHsKLS0gICAgIgotLQotLXJlbGVhc2UgOiBkaXN0Ci0tCWdpdCB0YWcgXCQo VkVSU0lPTikKLS0JY3Bhbi11cGxvYWQgXCQoRElTVFZOQU1FKS50YXJcJChTVUZGSVgpCi0tCWdp dCBwdXNoCi0tCWdpdCBwdXNoIC0tdGFncwotLSIKLS19Ci1kaWZmIC0tZ2l0IGEvUkVBRE1FIGIv UkVBRE1FCi1pbmRleCBmNjNhY2U5Li44NjIxMmZkIDEwMDY0NAotLS0tIGEvUkVBRE1FCi0rKysg Yi9SRUFETUUKLUBAIC0yNyw3ICsyNyw3IEBAIGNvbXBsZXggYW5kIGNpcmN1bGFyIGl0IGlzLCBw cm92aWRlZCBpdCBjb250YWlucyBvbmx5IFNDQUxBUiwgQVJSQVksCi0gSEFTSCAocG9zc2libHkg dGllZCkgYW5kIHJlZmVyZW5jZXMgKHBvc3NpYmx5IGJsZXNzZWQpIHRvIHRob3NlIGl0ZW1zLgot IAotIEF0IGEgbGF0ZXIgc3RhZ2UsIG9yIGluIGFub3RoZXIgcHJvZ3JhbSwgeW91IG1heSByZXRy aWV2ZSBkYXRhIGZyb20KLS10aGUgc3RvcmVkIGZpbGUgYW5kIHJlY3JlYXRlIHRoZSBzYW1lIGhp ZWFyY2h5IGluIG1lbW9yeS4gSWYgeW91Ci0rdGhlIHN0b3JlZCBmaWxlIGFuZCByZWNyZWF0ZSB0 aGUgc2FtZSBoaWVyYXJjaHkgaW4gbWVtb3J5LiBJZiB5b3UKLSBoYWQgYmxlc3NlZCByZWZlcmVu Y2VzLCB0aGUgcmV0cmlldmVkIHJlZmVyZW5jZXMgYXJlIGJsZXNzZWQgaW50bwotIHRoZSBzYW1l IHBhY2thZ2UsIHNvIHlvdSBtdXN0IG1ha2Ugc3VyZSB5b3UgaGF2ZSBhY2Nlc3MgdG8gdGhlCi0g c2FtZSBwZXJsIGNsYXNzIHRoYW4gdGhlIG9uZSB1c2VkIHRvIGNyZWF0ZSB0aGUgcmVsZXZhbnQg b2JqZWN0cy4KLWRpZmYgLS1naXQgYS9TdG9yYWJsZS54cyBiL1N0b3JhYmxlLnhzCi1pbmRleCBh NTU4ZGQ3Li4zOTMwZGI2IDEwMDY0NAotLS0tIGEvU3RvcmFibGUueHMKLSsrKyBiL1N0b3JhYmxl LnhzCi1AQCAtMjIsNiArMjIsNyBAQAotICNkZWZpbmUgTkVFRF9uZXdDT05TVFNVQgotICNkZWZp bmUgTkVFRF9uZXdTVnB2bl9mbGFncwotICNkZWZpbmUgTkVFRF9uZXdSVl9ub2luYwotKyNkZWZp bmUgTkVFRF9zdl92c3RyaW5nX2dldAotICNpbmNsdWRlICJwcHBvcnQuaCIgICAgICAgICAgICAg LyogaGFuZGxlIG9sZCBwZXJscyAqLwotIAotICNpZmRlZiBERUJVR0dJTkcKLUBAIC0zOSwxMCAr NDAsMTAgQEAKLSAjZW5kaWYKLSAKLSAjaWZuZGVmIEh2UklURVJfc2V0Ci0tIyAgZGVmaW5lIEh2 UklURVJfc2V0KGh2LHIpCShIdlJJVEVSKGh2KSA9IHIpCi0rIyAgZGVmaW5lIEh2UklURVJfc2V0 KGh2LHIpICAgICAoSHZSSVRFUihodikgPSByKQotICNlbmRpZgotICNpZm5kZWYgSHZFSVRFUl9z ZXQKLS0jICBkZWZpbmUgSHZFSVRFUl9zZXQoaHYscikJKEh2RUlURVIoaHYpID0gcikKLSsjICBk ZWZpbmUgSHZFSVRFUl9zZXQoaHYscikgICAgIChIdkVJVEVSKGh2KSA9IHIpCi0gI2VuZGlmCi0g Ci0gI2lmbmRlZiBIdlJJVEVSX2dldAotQEAgLTU3LDE3ICs1OCwxNyBAQAotICNlbmRpZgotIAot ICNpZm5kZWYgSHZUT1RBTEtFWVMKLS0jICBkZWZpbmUgSHZUT1RBTEtFWVMoaHYpCUh2S0VZUyho dikKLSsjICBkZWZpbmUgSHZUT1RBTEtFWVMoaHYpICAgICAgIEh2S0VZUyhodikKLSAjZW5kaWYK LSAvKiA1LjYgKi8KLSAjaWZuZGVmIEh2VVNFREtFWVMKLS0jICBkZWZpbmUgSHZVU0VES0VZUyho dikJSHZLRVlTKGh2KQotKyMgIGRlZmluZSBIdlVTRURLRVlTKGh2KSAgICAgICAgSHZLRVlTKGh2 KQotICNlbmRpZgotIAotICNpZmRlZiBTVmZfSXNDT1cKLS0jICBkZWZpbmUgU3ZUUlVMWVJFQURP TkxZKHN2KQlTdlJFQURPTkxZKHN2KQotKyMgIGRlZmluZSBTdlRSVUxZUkVBRE9OTFkoc3YpICAg U3ZSRUFET05MWShzdikKLSAjZWxzZQotLSMgIGRlZmluZSBTdlRSVUxZUkVBRE9OTFkoc3YpCShT dlJFQURPTkxZKHN2KSAmJiAhU3ZJc0NPVyhzdikpCi0rIyAgZGVmaW5lIFN2VFJVTFlSRUFET05M WShzdikgICAoU3ZSRUFET05MWShzdikgJiYgIVN2SXNDT1coc3YpKQotICNlbmRpZgotIAotICNp Zm5kZWYgc3RyRVFjCi1AQCAtOTYsOCArOTcsOCBAQAotICAqLwotIAotICNkZWZpbmUgVFJBQ0VN RSh4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBT VE1UX1NUQVJUIHsJCQkJCSAgICAgIFwKLS0gICAgICAgIGlmIChjeHQtPnRyYWNlbWUpCQkJCSAg ICAgIFwKLSsgICAgU1RNVF9TVEFSVCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgIGlmIChjeHQtPnRyYWNlbWUpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICB7IFBlcmxJT19zdGRvdXRmIHg7 IFBlcmxJT19zdGRvdXRmKCJcbiIpOyB9ICAgICAgIFwKLSAgICAgfSBTVE1UX0VORAotIAotQEAg LTEwNywxNiArMTA4LDE2IEBACi0gICAgICAgICAgICAgeyBQZXJsSU9fc3Rkb3V0ZiB4OyBQZXJs SU9fc3Rkb3V0ZigiXG4iKTsgfSAgICAgICBcCi0gICAgIH0gU1RNVF9FTkQKLSAKLS0jZGVmaW5l IElOSVRfVFJBQ0VNRQkJCQkJCQlcCi0tICAgIFNUTVRfU1RBUlQgewkJCQkJCQlcCi0tCWN4dC0+ dHJhY2VtZSA9IFN2VFJVRShnZXRfc3YoIlN0b3JhYmxlOjpERUJVR01FIiwgR1ZfQUREKSk7CVwK LSsjZGVmaW5lIElOSVRfVFJBQ0VNRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0rICAgIFNUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgY3h0LT50cmFj ZW1lID0gU3ZUUlVFKGdldF9zdigiU3RvcmFibGU6OkRFQlVHTUUiLCBHVl9BREQpKTsgICAgIFwK LSAgICAgfSBTVE1UX0VORAotIAotICNlbHNlCi0gI2RlZmluZSBUUkFDRU1FKHgpCi0gI2RlZmlu ZSBUUkFDRU1FRCh4KQotICNkZWZpbmUgSU5JVF9UUkFDRU1FCi0tI2VuZGlmCS8qIERFQlVHTUUg Ki8KLSsjZW5kaWYgIC8qIERFQlVHTUUgKi8KLSAKLSAjaWZkZWYgREFTU0VSVAotICNkZWZpbmUg QVNTRVJUKHgseSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotQEAgLTEzNSw3NyArMTM2LDc3IEBACi0gICogVHlwZSBtYXJrZXJzLgotICAqLwotIAotLSNk ZWZpbmUgQyh4KSAoKGNoYXIpICh4KSkJLyogRm9yIG1hcmtlcnMgd2l0aCBkeW5hbWljIHJldHJp ZXZhbCBoYW5kbGluZyAqLwotLQotLSNkZWZpbmUgU1hfT0JKRUNUCUMoMCkJLyogQWxyZWFkeSBz dG9yZWQgb2JqZWN0ICovCi0tI2RlZmluZSBTWF9MU0NBTEFSCUMoMSkJLyogU2NhbGFyIChsYXJn ZSBiaW5hcnkpIGZvbGxvd3MgKGxlbmd0aCwgZGF0YSkgKi8KLS0jZGVmaW5lIFNYX0FSUkFZCUMo MikJLyogQXJyYXkgZm9ydGhjb21pbmcgKHNpemUsIGl0ZW0gbGlzdCkgKi8KLS0jZGVmaW5lIFNY X0hBU0gJCUMoMykJLyogSGFzaCBmb3J0aGNvbWluZyAoc2l6ZSwga2V5L3ZhbHVlIHBhaXIgbGlz dCkgKi8KLS0jZGVmaW5lIFNYX1JFRgkJQyg0KQkvKiBSZWZlcmVuY2UgdG8gb2JqZWN0IGZvcnRo Y29taW5nICovCi0tI2RlZmluZSBTWF9VTkRFRglDKDUpCS8qIFVuZGVmaW5lZCBzY2FsYXIgKi8K LS0jZGVmaW5lIFNYX0lOVEVHRVIJQyg2KQkvKiBJbnRlZ2VyIGZvcnRoY29taW5nICovCi0tI2Rl ZmluZSBTWF9ET1VCTEUJQyg3KQkvKiBEb3VibGUgZm9ydGhjb21pbmcgKi8KLS0jZGVmaW5lIFNY X0JZVEUJCUMoOCkJLyogKHNpZ25lZCkgYnl0ZSBmb3J0aGNvbWluZyAqLwotLSNkZWZpbmUgU1hf TkVUSU5UCUMoOSkJLyogSW50ZWdlciBpbiBuZXR3b3JrIG9yZGVyIGZvcnRoY29taW5nICovCi0t I2RlZmluZSBTWF9TQ0FMQVIJQygxMCkJLyogU2NhbGFyIChiaW5hcnksIHNtYWxsKSBmb2xsb3dz IChsZW5ndGgsIGRhdGEpICovCi0tI2RlZmluZSBTWF9USUVEX0FSUkFZCUMoMTEpCS8qIFRpZWQg YXJyYXkgZm9ydGhjb21pbmcgKi8KLS0jZGVmaW5lIFNYX1RJRURfSEFTSAlDKDEyKQkvKiBUaWVk IGhhc2ggZm9ydGhjb21pbmcgKi8KLS0jZGVmaW5lIFNYX1RJRURfU0NBTEFSCUMoMTMpCS8qIFRp ZWQgc2NhbGFyIGZvcnRoY29taW5nICovCi0tI2RlZmluZSBTWF9TVl9VTkRFRglDKDE0KQkvKiBQ ZXJsJ3MgaW1tb3J0YWwgUExfc3ZfdW5kZWYgKi8KLS0jZGVmaW5lIFNYX1NWX1lFUwlDKDE1KQkv KiBQZXJsJ3MgaW1tb3J0YWwgUExfc3ZfeWVzICovCi0tI2RlZmluZSBTWF9TVl9OTwlDKDE2KQkv KiBQZXJsJ3MgaW1tb3J0YWwgUExfc3Zfbm8gKi8KLS0jZGVmaW5lIFNYX0JMRVNTCUMoMTcpCS8q IE9iamVjdCBpcyBibGVzc2VkICovCi0tI2RlZmluZSBTWF9JWF9CTEVTUwlDKDE4KQkvKiBPYmpl Y3QgaXMgYmxlc3NlZCwgY2xhc3NuYW1lIGdpdmVuIGJ5IGluZGV4ICovCi0tI2RlZmluZSBTWF9I T09LCQlDKDE5KQkvKiBTdG9yZWQgdmlhIGhvb2ssIHVzZXItZGVmaW5lZCAqLwotLSNkZWZpbmUg U1hfT1ZFUkxPQUQJQygyMCkJLyogT3ZlcmxvYWRlZCByZWZlcmVuY2UgKi8KLS0jZGVmaW5lIFNY X1RJRURfS0VZCUMoMjEpCS8qIFRpZWQgbWFnaWMga2V5IGZvcnRoY29taW5nICovCi0tI2RlZmlu ZSBTWF9USUVEX0lEWAlDKDIyKQkvKiBUaWVkIG1hZ2ljIGluZGV4IGZvcnRoY29taW5nICovCi0t I2RlZmluZSBTWF9VVEY4U1RSCUMoMjMpCS8qIFVURi04IHN0cmluZyBmb3J0aGNvbWluZyAoc21h bGwpICovCi0tI2RlZmluZSBTWF9MVVRGOFNUUglDKDI0KQkvKiBVVEYtOCBzdHJpbmcgZm9ydGhj b21pbmcgKGxhcmdlKSAqLwotLSNkZWZpbmUgU1hfRkxBR19IQVNICUMoMjUpCS8qIEhhc2ggd2l0 aCBmbGFncyBmb3J0aGNvbWluZyAoc2l6ZSwgZmxhZ3MsIGtleS9mbGFncy92YWx1ZSB0cmlwbGV0 IGxpc3QpICovCi0rI2RlZmluZSBDKHgpICgoY2hhcikgKHgpKSAgICAgICAvKiBGb3IgbWFya2Vy cyB3aXRoIGR5bmFtaWMgcmV0cmlldmFsIGhhbmRsaW5nICovCi0rCi0rI2RlZmluZSBTWF9PQkpF Q1QgICAgICAgQygwKSAgICAvKiBBbHJlYWR5IHN0b3JlZCBvYmplY3QgKi8KLSsjZGVmaW5lIFNY X0xTQ0FMQVIgICAgICBDKDEpICAgIC8qIFNjYWxhciAobGFyZ2UgYmluYXJ5KSBmb2xsb3dzIChs ZW5ndGgsIGRhdGEpICovCi0rI2RlZmluZSBTWF9BUlJBWSAgICAgICAgQygyKSAgICAvKiBBcnJh eSBmb3J0aGNvbWluZyAoc2l6ZSwgaXRlbSBsaXN0KSAqLwotKyNkZWZpbmUgU1hfSEFTSCAgICAg ICAgIEMoMykgICAgLyogSGFzaCBmb3J0aGNvbWluZyAoc2l6ZSwga2V5L3ZhbHVlIHBhaXIgbGlz dCkgKi8KLSsjZGVmaW5lIFNYX1JFRiAgICAgICAgICBDKDQpICAgIC8qIFJlZmVyZW5jZSB0byBv YmplY3QgZm9ydGhjb21pbmcgKi8KLSsjZGVmaW5lIFNYX1VOREVGICAgICAgICBDKDUpICAgIC8q IFVuZGVmaW5lZCBzY2FsYXIgKi8KLSsjZGVmaW5lIFNYX0lOVEVHRVIgICAgICBDKDYpICAgIC8q IEludGVnZXIgZm9ydGhjb21pbmcgKi8KLSsjZGVmaW5lIFNYX0RPVUJMRSAgICAgICBDKDcpICAg IC8qIERvdWJsZSBmb3J0aGNvbWluZyAqLwotKyNkZWZpbmUgU1hfQllURSAgICAgICAgIEMoOCkg ICAgLyogKHNpZ25lZCkgYnl0ZSBmb3J0aGNvbWluZyAqLwotKyNkZWZpbmUgU1hfTkVUSU5UICAg ICAgIEMoOSkgICAgLyogSW50ZWdlciBpbiBuZXR3b3JrIG9yZGVyIGZvcnRoY29taW5nICovCi0r I2RlZmluZSBTWF9TQ0FMQVIgICAgICAgQygxMCkgICAvKiBTY2FsYXIgKGJpbmFyeSwgc21hbGwp IGZvbGxvd3MgKGxlbmd0aCwgZGF0YSkgKi8KLSsjZGVmaW5lIFNYX1RJRURfQVJSQVkgICBDKDEx KSAgIC8qIFRpZWQgYXJyYXkgZm9ydGhjb21pbmcgKi8KLSsjZGVmaW5lIFNYX1RJRURfSEFTSCAg ICBDKDEyKSAgIC8qIFRpZWQgaGFzaCBmb3J0aGNvbWluZyAqLwotKyNkZWZpbmUgU1hfVElFRF9T Q0FMQVIgIEMoMTMpICAgLyogVGllZCBzY2FsYXIgZm9ydGhjb21pbmcgKi8KLSsjZGVmaW5lIFNY X1NWX1VOREVGICAgICBDKDE0KSAgIC8qIFBlcmwncyBpbW1vcnRhbCBQTF9zdl91bmRlZiAqLwot KyNkZWZpbmUgU1hfU1ZfWUVTICAgICAgIEMoMTUpICAgLyogUGVybCdzIGltbW9ydGFsIFBMX3N2 X3llcyAqLwotKyNkZWZpbmUgU1hfU1ZfTk8gICAgICAgIEMoMTYpICAgLyogUGVybCdzIGltbW9y dGFsIFBMX3N2X25vICovCi0rI2RlZmluZSBTWF9CTEVTUyAgICAgICAgQygxNykgICAvKiBPYmpl Y3QgaXMgYmxlc3NlZCAqLwotKyNkZWZpbmUgU1hfSVhfQkxFU1MgICAgIEMoMTgpICAgLyogT2Jq ZWN0IGlzIGJsZXNzZWQsIGNsYXNzbmFtZSBnaXZlbiBieSBpbmRleCAqLwotKyNkZWZpbmUgU1hf SE9PSyAgICAgICAgIEMoMTkpICAgLyogU3RvcmVkIHZpYSBob29rLCB1c2VyLWRlZmluZWQgKi8K LSsjZGVmaW5lIFNYX09WRVJMT0FEICAgICBDKDIwKSAgIC8qIE92ZXJsb2FkZWQgcmVmZXJlbmNl ICovCi0rI2RlZmluZSBTWF9USUVEX0tFWSAgICAgQygyMSkgICAvKiBUaWVkIG1hZ2ljIGtleSBm b3J0aGNvbWluZyAqLwotKyNkZWZpbmUgU1hfVElFRF9JRFggICAgIEMoMjIpICAgLyogVGllZCBt YWdpYyBpbmRleCBmb3J0aGNvbWluZyAqLwotKyNkZWZpbmUgU1hfVVRGOFNUUiAgICAgIEMoMjMp ICAgLyogVVRGLTggc3RyaW5nIGZvcnRoY29taW5nIChzbWFsbCkgKi8KLSsjZGVmaW5lIFNYX0xV VEY4U1RSICAgICBDKDI0KSAgIC8qIFVURi04IHN0cmluZyBmb3J0aGNvbWluZyAobGFyZ2UpICov Ci0rI2RlZmluZSBTWF9GTEFHX0hBU0ggICAgQygyNSkgICAvKiBIYXNoIHdpdGggZmxhZ3MgZm9y dGhjb21pbmcgKHNpemUsIGZsYWdzLCBrZXkvZmxhZ3MvdmFsdWUgdHJpcGxldCBsaXN0KSAqLwot ICNkZWZpbmUgU1hfQ09ERSAgICAgICAgIEMoMjYpICAgLyogQ29kZSByZWZlcmVuY2VzIGFzIHBl cmwgc291cmNlIGNvZGUgKi8KLS0jZGVmaW5lIFNYX1dFQUtSRUYJQygyNykJLyogV2VhayByZWZl cmVuY2UgdG8gb2JqZWN0IGZvcnRoY29taW5nICovCi0tI2RlZmluZSBTWF9XRUFLT1ZFUkxPQUQJ QygyOCkJLyogT3ZlcmxvYWRlZCB3ZWFrIHJlZmVyZW5jZSAqLwotLSNkZWZpbmUgU1hfVlNUUklO RwlDKDI5KQkvKiB2c3RyaW5nIGZvcnRoY29taW5nIChzbWFsbCkgKi8KLS0jZGVmaW5lIFNYX0xW U1RSSU5HCUMoMzApCS8qIHZzdHJpbmcgZm9ydGhjb21pbmcgKGxhcmdlKSAqLwotLSNkZWZpbmUg U1hfU1ZVTkRFRl9FTEVNCUMoMzEpCS8qIGFycmF5IGVsZW1lbnQgc2V0IHRvICZQTF9zdl91bmRl ZiAqLwotLSNkZWZpbmUgU1hfUkVHRVhQCUMoMzIpCS8qIFJlZ2V4cCAqLwotLSNkZWZpbmUgU1hf TE9CSkVDVAlDKDMzKQkvKiBMYXJnZSBvYmplY3Q6IHN0cmluZywgYXJyYXkgb3IgaGFzaCAoc2l6 ZSA+MkcpICovCi0tI2RlZmluZSBTWF9CT09MRUFOX1RSVUUJQygzNCkJLyogQm9vbGVhbiB0cnVl ICovCi0tI2RlZmluZSBTWF9CT09MRUFOX0ZBTFNFCUMoMzUpCS8qIEJvb2xlYW4gZmFsc2UgKi8K LS0jZGVmaW5lIFNYX0xBU1QJCUMoMzYpCS8qIGludmFsaWQuIG1hcmtlciBvbmx5ICovCi0rI2Rl ZmluZSBTWF9XRUFLUkVGICAgICAgQygyNykgICAvKiBXZWFrIHJlZmVyZW5jZSB0byBvYmplY3Qg Zm9ydGhjb21pbmcgKi8KLSsjZGVmaW5lIFNYX1dFQUtPVkVSTE9BRCBDKDI4KSAgIC8qIE92ZXJs b2FkZWQgd2VhayByZWZlcmVuY2UgKi8KLSsjZGVmaW5lIFNYX1ZTVFJJTkcgICAgICBDKDI5KSAg IC8qIHZzdHJpbmcgZm9ydGhjb21pbmcgKHNtYWxsKSAqLwotKyNkZWZpbmUgU1hfTFZTVFJJTkcg ICAgIEMoMzApICAgLyogdnN0cmluZyBmb3J0aGNvbWluZyAobGFyZ2UpICovCi0rI2RlZmluZSBT WF9TVlVOREVGX0VMRU0gQygzMSkgICAvKiBhcnJheSBlbGVtZW50IHNldCB0byAmUExfc3ZfdW5k ZWYgKi8KLSsjZGVmaW5lIFNYX1JFR0VYUCAgICAgICBDKDMyKSAgIC8qIFJlZ2V4cCAqLwotKyNk ZWZpbmUgU1hfTE9CSkVDVCAgICAgIEMoMzMpICAgLyogTGFyZ2Ugb2JqZWN0OiBzdHJpbmcsIGFy cmF5IG9yIGhhc2ggKHNpemUgPjJHKSAqLwotKyNkZWZpbmUgU1hfQk9PTEVBTl9UUlVFIEMoMzQp ICAgLyogQm9vbGVhbiB0cnVlICovCi0rI2RlZmluZSBTWF9CT09MRUFOX0ZBTFNFICAgICAgICBD KDM1KSAgIC8qIEJvb2xlYW4gZmFsc2UgKi8KLSsjZGVmaW5lIFNYX0xBU1QgICAgICAgICBDKDM2 KSAgIC8qIGludmFsaWQuIG1hcmtlciBvbmx5ICovCi0gCi0gLyoKLSAgKiBUaG9zZSBhcmUgb25s eSB1c2VkIHRvIHJldHJpZXZlICJvbGQiIHByZS0wLjYgYmluYXJ5IGltYWdlcy4KLSAgKi8KLS0j ZGVmaW5lIFNYX0lURU0JCSdpJwkvKiBBbiBhcnJheSBpdGVtIGludHJvZHVjZXIgKi8KLS0jZGVm aW5lIFNYX0lUX1VOREVGCSdJJwkvKiBVbmRlZmluZWQgYXJyYXkgaXRlbSAqLwotLSNkZWZpbmUg U1hfS0VZCQknaycJLyogQSBoYXNoIGtleSBpbnRyb2R1Y2VyICovCi0tI2RlZmluZSBTWF9WQUxV RQkndicJLyogQSBoYXNoIHZhbHVlIGludHJvZHVjZXIgKi8KLS0jZGVmaW5lIFNYX1ZMX1VOREVG CSdWJwkvKiBVbmRlZmluZWQgaGFzaCB2YWx1ZSAqLwotKyNkZWZpbmUgU1hfSVRFTSAgICAgICAg ICdpJyAgICAgLyogQW4gYXJyYXkgaXRlbSBpbnRyb2R1Y2VyICovCi0rI2RlZmluZSBTWF9JVF9V TkRFRiAgICAgJ0knICAgICAvKiBVbmRlZmluZWQgYXJyYXkgaXRlbSAqLwotKyNkZWZpbmUgU1hf S0VZICAgICAgICAgICdrJyAgICAgLyogQSBoYXNoIGtleSBpbnRyb2R1Y2VyICovCi0rI2RlZmlu ZSBTWF9WQUxVRSAgICAgICAgJ3YnICAgICAvKiBBIGhhc2ggdmFsdWUgaW50cm9kdWNlciAqLwot KyNkZWZpbmUgU1hfVkxfVU5ERUYgICAgICdWJyAgICAgLyogVW5kZWZpbmVkIGhhc2ggdmFsdWUg Ki8KLSAKLSAvKgotICAqIFRob3NlIGFyZSBvbmx5IHVzZWQgdG8gcmV0cmlldmUgIm9sZCIgcHJl LTAuNyBiaW5hcnkgaW1hZ2VzCi0gICovCi0gCi0tI2RlZmluZSBTWF9DTEFTUwknYicJLyogT2Jq ZWN0IGlzIGJsZXNzZWQsIGNsYXNzIG5hbWUgbGVuZ3RoIDwyNTUgKi8KLS0jZGVmaW5lIFNYX0xH X0NMQVNTCSdCJwkvKiBPYmplY3QgaXMgYmxlc3NlZCwgY2xhc3MgbmFtZSBsZW5ndGggPjI1NSAq LwotLSNkZWZpbmUgU1hfU1RPUkVECSdYJwkvKiBFbmQgb2Ygb2JqZWN0ICovCi0rI2RlZmluZSBT WF9DTEFTUyAgICAgICAgJ2InICAgICAvKiBPYmplY3QgaXMgYmxlc3NlZCwgY2xhc3MgbmFtZSBs ZW5ndGggPDI1NSAqLwotKyNkZWZpbmUgU1hfTEdfQ0xBU1MgICAgICdCJyAgICAgLyogT2JqZWN0 IGlzIGJsZXNzZWQsIGNsYXNzIG5hbWUgbGVuZ3RoID4yNTUgKi8KLSsjZGVmaW5lIFNYX1NUT1JF RCAgICAgICAnWCcgICAgIC8qIEVuZCBvZiBvYmplY3QgKi8KLSAKLSAvKgotICAqIExpbWl0cyBi ZXR3ZWVuIHNob3J0L2xvbmcgbGVuZ3RoIHJlcHJlc2VudGF0aW9uLgotICAqLwotIAotLSNkZWZp bmUgTEdfU0NBTEFSCTI1NQkvKiBMYXJnZSBzY2FsYXIgbGVuZ3RoIGxpbWl0ICovCi0tI2RlZmlu ZSBMR19CTEVTUwkxMjcJLyogTGFyZ2UgY2xhc3NuYW1lIGJsZXNzIGxpbWl0ICovCi0rI2RlZmlu ZSBMR19TQ0FMQVIgICAgICAgMjU1ICAgICAvKiBMYXJnZSBzY2FsYXIgbGVuZ3RoIGxpbWl0ICov Ci0rI2RlZmluZSBMR19CTEVTUyAgICAgICAgMTI3ICAgICAvKiBMYXJnZSBjbGFzc25hbWUgYmxl c3MgbGltaXQgKi8KLSAKLSAvKgotICAqIE9wZXJhdGlvbiB0eXBlcwotICAqLwotIAotLSNkZWZp bmUgU1RfU1RPUkUJMHgxCS8qIFN0b3JlIG9wZXJhdGlvbiAqLwotLSNkZWZpbmUgU1RfUkVUUklF VkUJMHgyCS8qIFJldHJpZXZhbCBvcGVyYXRpb24gKi8KLS0jZGVmaW5lIFNUX0NMT05FCTB4NAkv KiBEZWVwIGNsb25pbmcgb3BlcmF0aW9uICovCi0rI2RlZmluZSBTVF9TVE9SRSAgICAgICAgMHgx ICAgICAvKiBTdG9yZSBvcGVyYXRpb24gKi8KLSsjZGVmaW5lIFNUX1JFVFJJRVZFICAgICAweDIg ICAgIC8qIFJldHJpZXZhbCBvcGVyYXRpb24gKi8KLSsjZGVmaW5lIFNUX0NMT05FICAgICAgICAw eDQgICAgIC8qIERlZXAgY2xvbmluZyBvcGVyYXRpb24gKi8KLSAKLSAvKgotICAqIFRoZSBmb2xs b3dpbmcgc3RydWN0dXJlIGlzIHVzZWQgZm9yIGhhc2ggdGFibGUga2V5IHJldHJpZXZhbC4gU2lu Y2UsIHdoZW4KLUBAIC0yMTksMTAgKzIyMCwxMCBAQAotICAqIGlzIHJlcXVpcmVkLiBIZW5jZSB0 aGUgYXB0ciBwb2ludGVyLgotICAqLwotIHN0cnVjdCBleHRlbmRhYmxlIHsKLS0gICAgY2hhciAq YXJlbmE7CS8qIFdpbGwgaG9sZCBoYXNoIGtleSBzdHJpbmdzLCByZXNpemVkIGFzIG5lZWRlZCAq LwotLSAgICBTVFJMRU4gYXNpejsJLyogU2l6ZSBvZiBhZm9yZW1lbnRpb25lZCBidWZmZXIgKi8K LS0gICAgY2hhciAqYXB0cjsJCS8qIEFyZW5hIHBvaW50ZXIsIGZvciBpbi1wbGFjZSByZWFkL3dy aXRlIG9wcyAqLwotLSAgICBjaGFyICphZW5kOwkJLyogRmlyc3QgaW52YWxpZCBhZGRyZXNzICov Ci0rICAgIGNoYXIgKmFyZW5hOyAgICAgICAgLyogV2lsbCBob2xkIGhhc2gga2V5IHN0cmluZ3Ms IHJlc2l6ZWQgYXMgbmVlZGVkICovCi0rICAgIFNUUkxFTiBhc2l6OyAgICAgICAgLyogU2l6ZSBv ZiBhZm9yZW1lbnRpb25lZCBidWZmZXIgKi8KLSsgICAgY2hhciAqYXB0cjsgICAgICAgICAvKiBB cmVuYSBwb2ludGVyLCBmb3IgaW4tcGxhY2UgcmVhZC93cml0ZSBvcHMgKi8KLSsgICAgY2hhciAq YWVuZDsgICAgICAgICAvKiBGaXJzdCBpbnZhbGlkIGFkZHJlc3MgKi8KLSB9OwotIAotIC8qCi1A QCAtMjQxLDcgKzI0Miw3IEBAIHN0cnVjdCBleHRlbmRhYmxlIHsKLSAgKiBpbmRleGluZyBieSBh IGhhc2ggYXQgc3RvcmUgdGltZSwgYW5kIHZpYSBhbiBhcnJheSBhdCByZXRyaWV2ZSB0aW1lLgot ICAqLwotIAotLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBzdGFnX3Q7CS8qIFVzZWQgYnkgcHJlLTAu NiBiaW5hcnkgZm9ybWF0ICovCi0rdHlwZWRlZiB1bnNpZ25lZCBsb25nIHN0YWdfdDsgICAvKiBV c2VkIGJ5IHByZS0wLjYgYmluYXJ5IGZvcm1hdCAqLwotIAotIC8qCi0gICogTWFrZSB0aGUgdGFn IHR5cGUgNjQtYml0IG9uIDY0LWJpdCBwbGF0Zm9ybXMuCi1AQCAtMjYwLDcgKzI2MSw3IEBAIHR5 cGVkZWYgU1RSTEVOIG50YWdfdDsKLSAgKiBUaGUgZm9sbG93aW5nICJ0aHJlYWQtc2FmZSIgcmVs YXRlZCBkZWZpbmVzIHdlcmUgY29udHJpYnV0ZWQgYnkKLSAgKiBNdXJyYXkgTmVzYml0dCA8bXVy cmF5QGFjdGl2ZXN0YXRlLmNvbT4gYW5kIGludGVncmF0ZWQgYnkgUkFNLCB3aG8KLSAgKiBvbmx5 IHJlbmFtZWQgdGhpbmdzIGEgbGl0dGxlIGJpdCB0byBlbnN1cmUgY29uc2lzdGVuY3kgd2l0aCBz dXJyb3VuZGluZwotLSAqIGNvZGUuCS0tIFJBTSwgMTQvMDkvMTk5OQotKyAqIGNvZGUuICAgICAg ICAtLSBSQU0sIDE0LzA5LzE5OTkKLSAgKgotICAqIFRoZSBvcmlnaW5hbCBwYXRjaCBzdWZmZXJl ZCBmcm9tIHRoZSBmYWN0IHRoYXQgdGhlIHN0Y3h0X3Qgc3RydWN0dXJlCi0gICogd2FzIGdsb2Jh bC4gIE11cnJheSB0cmllZCB0byBtaW5pbWl6ZSB0aGUgaW1wYWN0IG9uIHRoZSBjb2RlIGFzIG11 Y2ggYXMKLUBAIC0yNzgsNyArMjc5LDcgQEAgdHlwZWRlZiBTVFJMRU4gbnRhZ190OwotICAqIENv bmRpdGlvbmFsIFVURjggc3VwcG9ydC4KLSAgKgotICAqLwotLSNkZWZpbmUgU1RPUkVfVVRGOFNU UihwdiwgbGVuKQlTVE9SRV9QVl9MRU4ocHYsIGxlbiwgU1hfVVRGOFNUUiwgU1hfTFVURjhTVFIp Ci0rI2RlZmluZSBTVE9SRV9VVEY4U1RSKHB2LCBsZW4pICBTVE9SRV9QVl9MRU4ocHYsIGxlbiwg U1hfVVRGOFNUUiwgU1hfTFVURjhTVFIpCi0gI2RlZmluZSBIQVNfVVRGOF9TQ0FMQVJTCi0gI2lm ZGVmIEhlS1VURjgKLSAjZGVmaW5lIEhBU19VVEY4X0hBU0hFUwotQEAgLTI5OSw3ICszMDAsNyBA QCB0eXBlZGVmIFNUUkxFTiBudGFnX3Q7Ci0gI2lmZGVmIEh2UExBQ0VIT0xERVJTCi0gI2RlZmlu ZSBIQVNfUkVTVFJJQ1RFRF9IQVNIRVMKLSAjZWxzZQotLSNkZWZpbmUgSFZoZWtfUExBQ0VIT0xE CTB4MjAwCi0rI2RlZmluZSBIVmhla19QTEFDRUhPTEQgMHgyMDAKLSAjZGVmaW5lIFJFU1RSSUNU RURfSEFTSF9DUk9BSygpIENST0FLKCgiQ2Fubm90IHJldHJpZXZlIHJlc3RyaWN0ZWQgaGFzaCIp KQotICNlbmRpZgotIAotQEAgLTM0MiwxMyArMzQzLDEzIEBAIHR5cGVkZWYgdW5pb24gewotIC8q Ci0gICogRmllbGRzIHNfdGFpbnRlZCBhbmQgc19kaXJ0eSBhcmUgcHJlZml4ZWQgd2l0aCBzXyBi ZWNhdXNlIFBlcmwncyBpbmNsdWRlCi0gICogZmlsZXMgcmVtYXAgdGFpbnRlZCBhbmQgZGlydHkg d2hlbiB0aHJlYWRpbmcgaXMgZW5hYmxlZC4gIFRoYXQncyBiYWQgZm9yCi0tICogcGVybCB0byBy ZW1hcCBzdWNoIGNvbW1vbiB3b3Jkcy4JLS0gUkFNLCAyOS8wOS8wMAotKyAqIHBlcmwgdG8gcmVt YXAgc3VjaCBjb21tb24gd29yZHMuICAgICAtLSBSQU0sIDI5LzA5LzAwCi0gICovCi0gCi0gc3Ry dWN0IHN0Y3h0OwotIHR5cGVkZWYgc3RydWN0IHN0Y3h0IHsKLS0gICAgaW50IGVudHJ5OwkJLyog ZmxhZ3MgcmVjdXJzaW9uICovCi0tICAgIGludCBvcHR5cGU7CQkvKiB0eXBlIG9mIHRyYXZlcnNh bCBvcGVyYXRpb24gKi8KLSsgICAgaW50IGVudHJ5OyAgICAgICAgICAvKiBmbGFncyByZWN1cnNp b24gKi8KLSsgICAgaW50IG9wdHlwZTsgICAgICAgICAvKiB0eXBlIG9mIHRyYXZlcnNhbCBvcGVy YXRpb24gKi8KLSAgICAgLyogd2hpY2ggb2JqZWN0cyBoYXZlIGJlZW4gc2Vlbiwgc3RvcmUgdGlt ZS4KLSAgICAgICAgdGFncyBhcmUgbnVtYmVycywgd2hpY2ggYXJlIGNhc3QgdG8gKFNWICopIGFu ZCBzdG9yZWQgZGlyZWN0bHkgKi8KLSAjaWZkZWYgVVNFX1BUUl9UQUJMRQotQEAgLTM1OSwzOCAr MzYwLDM4IEBAIHR5cGVkZWYgc3RydWN0IHN0Y3h0IHsKLSAgICAgLyogU3RpbGwgbmVlZCBoc2Vl biBmb3IgdGhlIDAuNiBmaWxlIGZvcm1hdCBjb2RlLiAqLwotICNlbmRpZgotICAgICBIViAqaHNl ZW47Ci0tICAgIEFWICpob29rX3NlZW47CQkvKiB3aGljaCBTVnMgd2VyZSByZXR1cm5lZCBieSBT VE9SQUJMRV9mcmVlemUoKSAqLwotLSAgICBBViAqYXNlZW47CQkJLyogd2hpY2ggb2JqZWN0cyBo YXZlIGJlZW4gc2VlbiwgcmV0cmlldmUgdGltZSAqLwotLSAgICBudGFnX3Qgd2hlcmVfaXNfdW5k ZWY7CQkvKiBpbmRleCBpbiBhc2VlbiBvZiBQTF9zdl91bmRlZiAqLwotLSAgICBIViAqaGNsYXNz OwkJCS8qIHdoaWNoIGNsYXNzbmFtZXMgaGF2ZSBiZWVuIHNlZW4sIHN0b3JlIHRpbWUgKi8KLS0g ICAgQVYgKmFjbGFzczsJCQkvKiB3aGljaCBjbGFzc25hbWVzIGhhdmUgYmVlbiBzZWVuLCByZXRy aWV2ZSB0aW1lICovCi0tICAgIEhWICpob29rOwkJCS8qIGNhY2hlIGZvciBob29rIG1ldGhvZHMg cGVyIGNsYXNzIG5hbWUgKi8KLS0gICAgSVYgdGFnbnVtOwkJCS8qIGluY3JlbWVudGVkIGF0IHN0 b3JlIHRpbWUgZm9yIGVhY2ggc2VlbiBvYmplY3QgKi8KLS0gICAgSVYgY2xhc3NudW07CQkvKiBp bmNyZW1lbnRlZCBhdCBzdG9yZSB0aW1lIGZvciBlYWNoIHNlZW4gY2xhc3NuYW1lICovCi0tICAg IGludCBuZXRvcmRlcjsJCS8qIHRydWUgaWYgbmV0d29yayBvcmRlciB1c2VkICovCi0tICAgIGlu dCBzX3RhaW50ZWQ7CQkvKiB0cnVlIGlmIGlucHV0IHNvdXJjZSBpcyB0YWludGVkLCBhdCByZXRy aWV2ZSB0aW1lICovCi0tICAgIGludCBmb3JnaXZlX21lOwkJLyogd2hldGhlciB0byBiZSBmb3Jn aXZpbmcuLi4gKi8KLS0gICAgaW50IGRlcGFyc2U7CQkvKiB3aGV0aGVyIHRvIGRlcGFyc2UgY29k ZSByZWZzICovCi0tICAgIFNWICpldmFsOwkJCS8qIHdoZXRoZXIgdG8gZXZhbCBzb3VyY2UgY29k ZSAqLwotLSAgICBpbnQgY2Fub25pY2FsOwkJLyogd2hldGhlciB0byBzdG9yZSBoYXNoZXMgc29y dGVkIGJ5IGtleSAqLwotKyAgICBBViAqaG9va19zZWVuOyAgICAgICAgICAgICAgLyogd2hpY2gg U1ZzIHdlcmUgcmV0dXJuZWQgYnkgU1RPUkFCTEVfZnJlZXplKCkgKi8KLSsgICAgQVYgKmFzZWVu OyAgICAgICAgICAgICAgICAgIC8qIHdoaWNoIG9iamVjdHMgaGF2ZSBiZWVuIHNlZW4sIHJldHJp ZXZlIHRpbWUgKi8KLSsgICAgbnRhZ190IHdoZXJlX2lzX3VuZGVmOyAgICAgICAgICAgICAgLyog aW5kZXggaW4gYXNlZW4gb2YgUExfc3ZfdW5kZWYgKi8KLSsgICAgSFYgKmhjbGFzczsgICAgICAg ICAgICAgICAgIC8qIHdoaWNoIGNsYXNzbmFtZXMgaGF2ZSBiZWVuIHNlZW4sIHN0b3JlIHRpbWUg Ki8KLSsgICAgQVYgKmFjbGFzczsgICAgICAgICAgICAgICAgIC8qIHdoaWNoIGNsYXNzbmFtZXMg aGF2ZSBiZWVuIHNlZW4sIHJldHJpZXZlIHRpbWUgKi8KLSsgICAgSFYgKmhvb2s7ICAgICAgICAg ICAgICAgICAgIC8qIGNhY2hlIGZvciBob29rIG1ldGhvZHMgcGVyIGNsYXNzIG5hbWUgKi8KLSsg ICAgSVYgdGFnbnVtOyAgICAgICAgICAgICAgICAgIC8qIGluY3JlbWVudGVkIGF0IHN0b3JlIHRp bWUgZm9yIGVhY2ggc2VlbiBvYmplY3QgKi8KLSsgICAgSVYgY2xhc3NudW07ICAgICAgICAgICAg ICAgIC8qIGluY3JlbWVudGVkIGF0IHN0b3JlIHRpbWUgZm9yIGVhY2ggc2VlbiBjbGFzc25hbWUg Ki8KLSsgICAgaW50IG5ldG9yZGVyOyAgICAgICAgICAgICAgIC8qIHRydWUgaWYgbmV0d29yayBv cmRlciB1c2VkICovCi0rICAgIGludCBzX3RhaW50ZWQ7ICAgICAgICAgICAgICAvKiB0cnVlIGlm IGlucHV0IHNvdXJjZSBpcyB0YWludGVkLCBhdCByZXRyaWV2ZSB0aW1lICovCi0rICAgIGludCBm b3JnaXZlX21lOyAgICAgICAgICAgICAvKiB3aGV0aGVyIHRvIGJlIGZvcmdpdmluZy4uLiAqLwot KyAgICBpbnQgZGVwYXJzZTsgICAgICAgICAgICAgICAgLyogd2hldGhlciB0byBkZXBhcnNlIGNv ZGUgcmVmcyAqLwotKyAgICBTViAqZXZhbDsgICAgICAgICAgICAgICAgICAgLyogd2hldGhlciB0 byBldmFsIHNvdXJjZSBjb2RlICovCi0rICAgIGludCBjYW5vbmljYWw7ICAgICAgICAgICAgICAv KiB3aGV0aGVyIHRvIHN0b3JlIGhhc2hlcyBzb3J0ZWQgYnkga2V5ICovCi0gI2lmbmRlZiBIQVNf UkVTVFJJQ1RFRF9IQVNIRVMKLS0gICAgaW50IGRlcmVzdHJpY3Q7CQkvKiB3aGV0aGVyIHRvIGRv d25ncmFkZSByZXN0cmljdGVkIGhhc2hlcyAqLwotKyAgICBpbnQgZGVyZXN0cmljdDsgICAgICAg ICAgICAgLyogd2hldGhlciB0byBkb3duZ3JhZGUgcmVzdHJpY3RlZCBoYXNoZXMgKi8KLSAjZW5k aWYKLSAjaWZuZGVmIEhBU19VVEY4X0FMTAotLSAgICBpbnQgdXNlX2J5dGVzOwkJLyogd2hldGhl ciB0byBieXRlcy1pZnkgdXRmOCAqLwotLSNlbmRpZgotLSAgICBpbnQgYWNjZXB0X2Z1dHVyZV9t aW5vcjsJLyogY3JvYWsgaW1tZWRpYXRlbHkgb24gZnV0dXJlIG1pbm9yIHZlcnNpb25zPyAgKi8K LS0gICAgaW50IHNfZGlydHk7CQkvKiBjb250ZXh0IGlzIGRpcnR5IGR1ZSB0byBDUk9BSygpIC0t IGNhbiBiZSBjbGVhbmVkICovCi0tICAgIGludCBtZW1idWZfcm87CQkvKiB0cnVlIG1lYW5zIG1l bWJ1ZiBpcyByZWFkLW9ubHkgYW5kIG1zYXZlZCBpcyBydyAqLwotLSAgICBzdHJ1Y3QgZXh0ZW5k YWJsZSBrZXlidWY7CS8qIGZvciBoYXNoIGtleSByZXRyaWV2YWwgKi8KLS0gICAgc3RydWN0IGV4 dGVuZGFibGUgbWVtYnVmOwkvKiBmb3IgbWVtb3J5IHN0b3JlL3JldHJpZXZlIG9wZXJhdGlvbnMg Ki8KLS0gICAgc3RydWN0IGV4dGVuZGFibGUgbXNhdmVkOwkvKiB3aGVyZSBwb3RlbnRpYWxseSB2 YWxpZCBtYnVmIGlzIHNhdmVkICovCi0tICAgIFBlcmxJTyAqZmlvOwkJLyogd2hlcmUgSS9PIGFy ZSBwZXJmb3JtZWQsIE5VTEwgZm9yIG1lbW9yeSAqLwotLSAgICBpbnQgdmVyX21ham9yOwkJLyog bWFqb3Igb2YgdmVyc2lvbiBmb3IgcmV0cmlldmVkIG9iamVjdCAqLwotLSAgICBpbnQgdmVyX21p bm9yOwkJLyogbWlub3Igb2YgdmVyc2lvbiBmb3IgcmV0cmlldmVkIG9iamVjdCAqLwotLSAgICBT ViAqKCoqcmV0cmlldmVfdnRibCkocFRIWF8gc3RydWN0IHN0Y3h0ICosIGNvbnN0IGNoYXIgKik7 CS8qIHJldHJpZXZlIGRpc3BhdGNoIHRhYmxlICovCi0tICAgIFNWICpwcmV2OwkJCS8qIGNvbnRl eHRzIGNoYWluZWQgYmFja3dhcmRzIGluIHJlYWwgcmVjdXJzaW9uICovCi0tICAgIFNWICpteV9z djsJCQkvKiB0aGUgYmxlc3NlZCBzY2FsYXIgd2hvJ3MgU3ZQVlgoKSBJIGFtICovCi0rICAgIGlu dCB1c2VfYnl0ZXM7ICAgICAgICAgICAgICAvKiB3aGV0aGVyIHRvIGJ5dGVzLWlmeSB1dGY4ICov Ci0rI2VuZGlmCi0rICAgIGludCBhY2NlcHRfZnV0dXJlX21pbm9yOyAgICAvKiBjcm9hayBpbW1l ZGlhdGVseSBvbiBmdXR1cmUgbWlub3IgdmVyc2lvbnM/ICAqLwotKyAgICBpbnQgc19kaXJ0eTsg ICAgICAgICAgICAgICAgLyogY29udGV4dCBpcyBkaXJ0eSBkdWUgdG8gQ1JPQUsoKSAtLSBjYW4g YmUgY2xlYW5lZCAqLwotKyAgICBpbnQgbWVtYnVmX3JvOyAgICAgICAgICAgICAgLyogdHJ1ZSBt ZWFucyBtZW1idWYgaXMgcmVhZC1vbmx5IGFuZCBtc2F2ZWQgaXMgcncgKi8KLSsgICAgc3RydWN0 IGV4dGVuZGFibGUga2V5YnVmOyAgIC8qIGZvciBoYXNoIGtleSByZXRyaWV2YWwgKi8KLSsgICAg c3RydWN0IGV4dGVuZGFibGUgbWVtYnVmOyAgIC8qIGZvciBtZW1vcnkgc3RvcmUvcmV0cmlldmUg b3BlcmF0aW9ucyAqLwotKyAgICBzdHJ1Y3QgZXh0ZW5kYWJsZSBtc2F2ZWQ7ICAgLyogd2hlcmUg cG90ZW50aWFsbHkgdmFsaWQgbWJ1ZiBpcyBzYXZlZCAqLwotKyAgICBQZXJsSU8gKmZpbzsgICAg ICAgICAgICAgICAgLyogd2hlcmUgSS9PIGFyZSBwZXJmb3JtZWQsIE5VTEwgZm9yIG1lbW9yeSAq LwotKyAgICBpbnQgdmVyX21ham9yOyAgICAgICAgICAgICAgLyogbWFqb3Igb2YgdmVyc2lvbiBm b3IgcmV0cmlldmVkIG9iamVjdCAqLwotKyAgICBpbnQgdmVyX21pbm9yOyAgICAgICAgICAgICAg LyogbWlub3Igb2YgdmVyc2lvbiBmb3IgcmV0cmlldmVkIG9iamVjdCAqLwotKyAgICBTViAqKCoq cmV0cmlldmVfdnRibCkocFRIWF8gc3RydWN0IHN0Y3h0ICosIGNvbnN0IGNoYXIgKik7ICAvKiBy ZXRyaWV2ZSBkaXNwYXRjaCB0YWJsZSAqLwotKyAgICBTViAqcHJldjsgICAgICAgICAgICAgICAg ICAgLyogY29udGV4dHMgY2hhaW5lZCBiYWNrd2FyZHMgaW4gcmVhbCByZWN1cnNpb24gKi8KLSsg ICAgU1YgKm15X3N2OyAgICAgICAgICAgICAgICAgIC8qIHRoZSBibGVzc2VkIHNjYWxhciB3aG8n cyBTdlBWWCgpIEkgYW0gKi8KLSAKLSAgICAgLyogcmVjdXJfc3Y6Ci0gCi1AQCAtNDExLDggKzQx Miw4IEBAIHR5cGVkZWYgc3RydWN0IHN0Y3h0IHsKLSAgICAgICovCi0gICAgIFNWICpyZWN1cl9z djsgICAgICAgICAgICAgICAvKiBjaGVjayBvbmx5IG9uZSByZWN1cnNpdmUgU1YgKi8KLSAgICAg aW50IGluX3JldHJpZXZlX292ZXJsb2FkZWQ7IC8qIHBlcmZvcm1hbmNlIGhhY2sgZm9yIHJldHJp ZXZpbmcgb3ZlcmxvYWRlZCBvYmplY3RzICovCi0tICAgIGludCBmbGFnczsJCQkvKiBjb250cm9s cyB3aGV0aGVyIHRvIGJsZXNzIG9yIHRpZSBvYmplY3RzICovCi0tICAgIElWIHJlY3VyX2RlcHRo OyAgICAgICAgCS8qIGF2b2lkIHN0YWNrIG92ZXJmbG93cyBSVCAjOTc1MjYgKi8KLSsgICAgaW50 IGZsYWdzOyAgICAgICAgICAgICAgICAgIC8qIGNvbnRyb2xzIHdoZXRoZXIgdG8gYmxlc3Mgb3Ig dGllIG9iamVjdHMgKi8KLSsgICAgSVYgcmVjdXJfZGVwdGg7ICAgICAgICAgICAgIC8qIGF2b2lk IHN0YWNrIG92ZXJmbG93cyBSVCAjOTc1MjYgKi8KLSAgICAgSVYgbWF4X3JlY3VyX2RlcHRoOyAg ICAgICAgLyogbGltaXQgZm9yIHJlY3VyX2RlcHRoICovCi0gICAgIElWIG1heF9yZWN1cl9kZXB0 aF9oYXNoOyAgIC8qIGxpbWl0IGZvciByZWN1cl9kZXB0aCBmb3IgaGFzaGVzICovCi0gI2lmZGVm IERFQlVHTUUKLUBAIC00NTUsOCArNDU2LDggQEAgc3RhdGljIE1HVlRCTCB2dGJsX3N0b3JhYmxl ID0gewotICMgZGVmaW5lIHN2X21hZ2ljZXh0KHN2LCBvYmosIHR5cGUsIHZ0YmwsIG5hbWUsIG5h bWxlbikgICAgICAgICBcCi0gICAgIFRIWF9zdl9tYWdpY2V4dChhVEhYXyBzdiwgb2JqLCB0eXBl LCB2dGJsLCBuYW1lLCBuYW1sZW4pCi0gc3RhdGljIE1BR0lDICpUSFhfc3ZfbWFnaWNleHQocFRI WF8KLS0JU1YgKnN2LCBTViAqb2JqLCBpbnQgdHlwZSwKLS0JTUdWVEJMIGNvbnN0ICp2dGJsLCBj aGFyIGNvbnN0ICpuYW1lLCBJMzIgbmFtbGVuKQotKyAgICAgICAgU1YgKnN2LCBTViAqb2JqLCBp bnQgdHlwZSwKLSsgICAgICAgIE1HVlRCTCBjb25zdCAqdnRibCwgY2hhciBjb25zdCAqbmFtZSwg STMyIG5hbWxlbikKLSB7Ci0gICAgIE1BR0lDICptZzsKLSAgICAgaWYgKG9iaiB8fCBuYW1sZW4p Ci1AQCAtNDc2LDggKzQ3Nyw4IEBAIHN0YXRpYyBNQUdJQyAqVEhYX3N2X21hZ2ljZXh0KHBUSFhf Ci0gfQotICNlbmRpZgotIAotLSNkZWZpbmUgTkVXX1NUT1JBQkxFX0NYVF9PQkooY3h0KQkJCQlc Ci0tICAgIFNUTVRfU1RBUlQgewkJCQkJCVwKLSsjZGVmaW5lIE5FV19TVE9SQUJMRV9DWFRfT0JK KGN4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBTVE1UX1NUQVJUIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg ICBTViAqc2VsZiA9IG5ld1NWKHNpemVvZihzdGN4dF90KSAtIDEpOyAgICAgICAgICAgICAgICAg IFwKLSAgICAgICAgIFNWICpteV9zdiA9IG5ld1JWX25vaW5jKHNlbGYpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICAgc3ZfbWFnaWNleHQoc2VsZiwgTlVMTCwgUEVSTF9NQUdJ Q19leHQsICZ2dGJsX3N0b3JhYmxlLCBOVUxMLCAwKTsgXAotQEAgLTQ4OCwyNiArNDg5LDI2IEBA IHN0YXRpYyBNQUdJQyAqVEhYX3N2X21hZ2ljZXh0KHBUSFhfCi0gCi0gI2lmIGRlZmluZWQoTVVM VElQTElDSVRZKSB8fCBkZWZpbmVkKFBFUkxfT0JKRUNUKSB8fCBkZWZpbmVkKFBFUkxfQ0FQSSkK LSAKLS0jZGVmaW5lIGRTVENYVF9TVgkJCQkJCVwKLSsjZGVmaW5lIGRTVENYVF9TViAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBTViAqcGVyaW50 ZXJwX3N2ID0gKmh2X2ZldGNoKFBMX21vZGdsb2JhbCwgICAgICAgICAgICAgICAgICBcCi0tCQkJ CSBNWV9WRVJTSU9OLCBzaXplb2YoTVlfVkVSU0lPTiktMSwgVFJVRSkKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNWV9WRVJTSU9OLCBzaXplb2YoTVlfVkVSU0lPTiktMSwgVFJV RSkKLSAKLS0jZGVmaW5lIGRTVENYVF9QVFIoVCxuYW1lKQkJCQkJXAotKyNkZWZpbmUgZFNUQ1hU X1BUUihULG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg IFQgbmFtZSA9ICgocGVyaW50ZXJwX3N2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgICAgICAmJiBTdklPSyhwZXJpbnRlcnBfc3YpICYmIFN2SVZYKHBl cmludGVycF9zdikgICAgXAotICAgICAgICAgICAgICAgID8gKFQpU3ZQVlgoU3ZSVihJTlQyUFRS KFNWKixTdklWWChwZXJpbnRlcnBfc3YpKSkpIDogKFQpIDApKQotLSNkZWZpbmUgZFNUQ1hUCQkJ CQlcCi0rI2RlZmluZSBkU1RDWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICBkU1RDWFRfU1Y7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg ZFNUQ1hUX1BUUihzdGN4dF90ICosIGN4dCkKLSAKLS0jZGVmaW5lIElOSVRfU1RDWFQJCQkJCVwK LSsjZGVmaW5lIElOSVRfU1RDWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgZFNUQ1hUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgTkVXX1NUT1JBQkxFX0NYVF9PQkooY3h0KTsgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLS0gICAgYXNzZXJ0KHBlcmludGVycF9zdik7CQkJCVwKLSsgICAgYXNzZXJ0KHBl cmludGVycF9zdik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgc3Zfc2V0 aXYocGVyaW50ZXJwX3N2LCBQVFIySVYoY3h0LT5teV9zdikpCi0gCi0tI2RlZmluZSBTRVRfU1RD WFQoeCkJCQkJCVwKLS0gICAgU1RNVF9TVEFSVCB7CQkJCQlcCi0rI2RlZmluZSBTRVRfU1RDWFQo eCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIFNUTVRfU1RBUlQg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBkU1RD WFRfU1Y7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBz dl9zZXRpdihwZXJpbnRlcnBfc3YsIFBUUjJJVih4LT5teV9zdikpOyAgICAgICBcCi0gICAgIH0g U1RNVF9FTkQKLUBAIC01MTUsOSArNTE2LDkgQEAgc3RhdGljIE1BR0lDICpUSFhfc3ZfbWFnaWNl eHQocFRIWF8KLSAjZWxzZSAvKiAhTVVMVElQTElDSVRZICYmICFQRVJMX09CSkVDVCAmJiAhUEVS TF9DQVBJICovCi0gCi0gc3RhdGljIHN0Y3h0X3QgKkNvbnRleHRfcHRyID0gTlVMTDsKLS0jZGVm aW5lIGRTVENYVAkJCXN0Y3h0X3QgKmN4dCA9IENvbnRleHRfcHRyCi0tI2RlZmluZSBTRVRfU1RD WFQoeCkJCUNvbnRleHRfcHRyID0geAotLSNkZWZpbmUgSU5JVF9TVENYVAkJCQlcCi0rI2RlZmlu ZSBkU1RDWFQgICAgICAgICAgICAgICAgICBzdGN4dF90ICpjeHQgPSBDb250ZXh0X3B0cgotKyNk ZWZpbmUgU0VUX1NUQ1hUKHgpICAgICAgICAgICAgQ29udGV4dF9wdHIgPSB4Ci0rI2RlZmluZSBJ TklUX1NUQ1hUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBkU1RDWFQ7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgTkVXX1NUT1JBQkxFX0NY VF9PQkooY3h0KTsgICAgICAgICAgICAgICAgICBcCi0gICAgIFNFVF9TVENYVChjeHQpCi1AQCAt NTQyLDcgKzU0Myw3IEBAIHN0YXRpYyBzdGN4dF90ICpDb250ZXh0X3B0ciA9IE5VTEw7Ci0gICog YnV0IHRoZSB0b3Btb3N0IGNvbnRleHQgc3RhY2tlZC4KLSAgKi8KLSAKLS0jZGVmaW5lIENST0FL KHgpCVNUTVRfU1RBUlQgeyBjeHQtPnNfZGlydHkgPSAxOyBjcm9hayB4OyB9IFNUTVRfRU5ECi0r I2RlZmluZSBDUk9BSyh4KSAgICAgICAgU1RNVF9TVEFSVCB7IGN4dC0+c19kaXJ0eSA9IDE7IGNy b2FrIHg7IH0gU1RNVF9FTkQKLSAKLSAvKgotICAqIEVuZCBvZiAidGhyZWFkLXNhZmUiIHJlbGF0 ZWQgZGVmaW5pdGlvbnMuCi1AQCAtNTU2LDkgKzU1Nyw5IEBAIHN0YXRpYyBzdGN4dF90ICpDb250 ZXh0X3B0ciA9IE5VTEw7Ci0gICovCi0gCi0gI2lmIFBUUlNJWkUgPD0gNAotLSNkZWZpbmUgTE9X XzMyQklUUyh4KQkoKEkzMikgKHgpKQotKyNkZWZpbmUgTE9XXzMyQklUUyh4KSAgICgoSTMyKSAo eCkpCi0gI2Vsc2UKLS0jZGVmaW5lIExPV18zMkJJVFMoeCkJKChJMzIpICgoU1RSTEVOKSAoeCkg JiAweGZmZmZmZmZmVUwpKQotKyNkZWZpbmUgTE9XXzMyQklUUyh4KSAgICgoSTMyKSAoKFNUUkxF TikgKHgpICYgMHhmZmZmZmZmZlVMKSkKLSAjZW5kaWYKLSAKLSAvKgotQEAgLTU3OSwzMyArNTgw LDMzIEBAIHN0YXRpYyBzdGN4dF90ICpDb250ZXh0X3B0ciA9IE5VTEw7Ci0gICovCi0gCi0gI2lm IElOVFNJWkUgPiA0Ci0tI2RlZmluZSBvSSh4KQkoKEkzMiAqKSAoKGNoYXIgKikgKHgpICsgNCkp Ci0tI2RlZmluZSBvUyh4KQkoKHgpIC0gNCkKLS0jZGVmaW5lIG9MKHgpCSh4KQotLSNkZWZpbmUg b0MoeCkJKHggPSAwKQotKyNkZWZpbmUgb0koeCkgICAoKEkzMiAqKSAoKGNoYXIgKikgKHgpICsg NCkpCi0rI2RlZmluZSBvUyh4KSAgICgoeCkgLSA0KQotKyNkZWZpbmUgb0woeCkgICAoeCkKLSsj ZGVmaW5lIG9DKHgpICAgKHggPSAwKQotICNkZWZpbmUgQ1JBWV9IQUNLCi0gI2Vsc2UKLS0jZGVm aW5lIG9JKHgpCSh4KQotLSNkZWZpbmUgb1MoeCkJKHgpCi0tI2RlZmluZSBvTCh4KQkoeCkKLSsj ZGVmaW5lIG9JKHgpICAgKHgpCi0rI2RlZmluZSBvUyh4KSAgICh4KQotKyNkZWZpbmUgb0woeCkg ICAoeCkKLSAjZGVmaW5lIG9DKHgpCi0gI2VuZGlmCi0gCi0gLyoKLSAgKiBrZXkgYnVmZmVyIGhh bmRsaW5nCi0gICovCi0tI2RlZmluZSBrYnVmCShjeHQtPmtleWJ1ZikuYXJlbmEKLS0jZGVmaW5l IGtzaXoJKGN4dC0+a2V5YnVmKS5hc2l6Ci0tI2RlZmluZSBLQlVGSU5JVCgpCQkJCQkJCVwKLS0g ICAgU1RNVF9TVEFSVCB7CQkJCQkJCVwKLSsjZGVmaW5lIGtidWYgICAgKGN4dC0+a2V5YnVmKS5h cmVuYQotKyNkZWZpbmUga3NpeiAgICAoY3h0LT5rZXlidWYpLmFzaXoKLSsjZGVmaW5lIEtCVUZJ TklUKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgIFNUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgaWYgKCFrYnVmKSB7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICBU UkFDRU1FKCgiKiogYWxsb2NhdGluZyBrYnVmIG9mIDEyOCBieXRlcyIpKTsgICAgICAgICAgICAg ICBcCi0gICAgICAgICAgICAgTmV3KDEwMDAzLCBrYnVmLCAxMjgsIGNoYXIpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIGtzaXogPSAxMjg7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIH0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgIH0gU1RNVF9FTkQKLS0jZGVmaW5lIEtCVUZDSEsoeCkJCQkJCQkJXAotLSAgICBT VE1UX1NUQVJUIHsJCQkJCQkJXAotKyNkZWZpbmUgS0JVRkNISyh4KSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgU1RNVF9TVEFSVCB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgICBpZiAoeCA+PSBrc2l6KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIGlmICh4ID49IEkzMl9NQVgpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAg Q1JPQUsoKCJUb28gbGFyZ2Ugc2l6ZSA+IEkzMl9NQVgiKSk7ICAgICAgICAgICAgICAgICAgICBc Ci1AQCAtNjE5LDIzICs2MjAsMjMgQEAgc3RhdGljIHN0Y3h0X3QgKkNvbnRleHRfcHRyID0gTlVM TDsKLSAvKgotICAqIG1lbW9yeSBidWZmZXIgaGFuZGxpbmcKLSAgKi8KLS0jZGVmaW5lIG1iYXNl CShjeHQtPm1lbWJ1ZikuYXJlbmEKLS0jZGVmaW5lIG1zaXoJKGN4dC0+bWVtYnVmKS5hc2l6Ci0t I2RlZmluZSBtcHRyCShjeHQtPm1lbWJ1ZikuYXB0cgotLSNkZWZpbmUgbWVuZAkoY3h0LT5tZW1i dWYpLmFlbmQKLSsjZGVmaW5lIG1iYXNlICAgKGN4dC0+bWVtYnVmKS5hcmVuYQotKyNkZWZpbmUg bXNpeiAgICAoY3h0LT5tZW1idWYpLmFzaXoKLSsjZGVmaW5lIG1wdHIgICAgKGN4dC0+bWVtYnVm KS5hcHRyCi0rI2RlZmluZSBtZW5kICAgIChjeHQtPm1lbWJ1ZikuYWVuZAotIAotLSNkZWZpbmUg TUdST1cJKDEgPDwgMTMpCi0tI2RlZmluZSBNTUFTSwkoTUdST1cgLSAxKQotKyNkZWZpbmUgTUdS T1cgICAoMSA8PCAxMykKLSsjZGVmaW5lIE1NQVNLICAgKE1HUk9XIC0gMSkKLSAKLS0jZGVmaW5l IHJvdW5kX21ncm93KHgpCVwKLSsjZGVmaW5lIHJvdW5kX21ncm93KHgpICBcCi0gICAgICgoU1RS TEVOKSAoKChTVFJMRU4pICh4KSArIE1NQVNLKSAmIH5NTUFTSykpCi0tI2RlZmluZSB0cnVuY19p bnQoeCkJXAotKyNkZWZpbmUgdHJ1bmNfaW50KHgpICAgIFwKLSAgICAgKChTVFJMRU4pICgoU1RS TEVOKSAoeCkgJiB+KHNpemVvZihpbnQpLTEpKSkKLS0jZGVmaW5lIGludF9hbGlnbmVkKHgpCVwK LSsjZGVmaW5lIGludF9hbGlnbmVkKHgpICBcCi0gICAgICgoU1RSTEVOKSh4KSA9PSB0cnVuY19p bnQoeCkpCi0gCi0tI2RlZmluZSBNQlVGX0lOSVQoeCkJCQkJCQkJXAotLSAgICBTVE1UX1NUQVJU IHsJCQkJCQkJXAotKyNkZWZpbmUgTUJVRl9JTklUKHgpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgU1RNVF9TVEFSVCB7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg ICBpZiAoIW1iYXNlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAgICAgICAgIFRSQUNFTUUoKCIqKiBhbGxvY2F0aW5nIG1iYXNlIG9m ICVkIGJ5dGVzIiwgTUdST1cpKTsgICAgICAgIFwKLSAgICAgICAgICAgICBOZXcoMTAwMDMsIG1i YXNlLCAoaW50KU1HUk9XLCBjaGFyKTsgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtNjQ4 LDggKzY0OSw4IEBAIHN0YXRpYyBzdGN4dF90ICpDb250ZXh0X3B0ciA9IE5VTEw7Ci0gICAgICAg ICAgICAgbWVuZCA9IG1iYXNlICsgbXNpejsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICB9IFNUTVRfRU5ECi0gCi0tI2RlZmluZSBNQlVGX1RSVU5DKHgpCW1w dHIgPSBtYmFzZSArIHgKLS0jZGVmaW5lIE1CVUZfU0laRSgpCShtcHRyIC0gbWJhc2UpCi0rI2Rl ZmluZSBNQlVGX1RSVU5DKHgpICAgbXB0ciA9IG1iYXNlICsgeAotKyNkZWZpbmUgTUJVRl9TSVpF KCkgICAgIChtcHRyIC0gbWJhc2UpCi0gCi0gLyoKLSAgKiBNQlVGX1NBVkVfQU5EX0xPQUQKLUBA IC02NTksOCArNjYwLDggQEAgc3RhdGljIHN0Y3h0X3QgKkNvbnRleHRfcHRyID0gTlVMTDsKLSAg KiBidWZmZXIgaW50byBjeHQtPm1zYXZlZCwgYmVmb3JlIE1CVUZfTE9BRCgpIGNhbiBiZSB1c2Vk IHRvIHJldHJpZXZlCi0gICogZGF0YSBmcm9tIGEgc3RyaW5nLgotICAqLwotLSNkZWZpbmUgTUJV Rl9TQVZFX0FORF9MT0FEKGluKQkJCQkJCVwKLS0gICAgU1RNVF9TVEFSVCB7CQkJCQkJCVwKLSsj ZGVmaW5lIE1CVUZfU0FWRV9BTkRfTE9BRChpbikgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICAgIFNUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgQVNTRVJUKCFjeHQt Pm1lbWJ1Zl9ybywgKCJtYmFzZSBub3QgYWxyZWFkeSBzYXZlZCIpKTsgICAgICAgICAgIFwKLSAg ICAgICAgIGN4dC0+bWVtYnVmX3JvID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgICBUUkFDRU1FKCgic2F2aW5nIG1idWYiKSk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTY2OCw4ICs2NjksOCBAQCBz dGF0aWMgc3RjeHRfdCAqQ29udGV4dF9wdHIgPSBOVUxMOwotICAgICAgICAgTUJVRl9MT0FEKGlu KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgfSBTVE1UX0VORAotIAotLSNkZWZpbmUgTUJVRl9SRVNUT1JFKCkJCQkJCQkJXAotLSAgICBT VE1UX1NUQVJUIHsJCQkJCQkJXAotKyNkZWZpbmUgTUJVRl9SRVNUT1JFKCkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgU1RNVF9TVEFSVCB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgICBBU1NFUlQoY3h0LT5tZW1idWZfcm8sICgibWJhc2UgaXMgcmVhZC1vbmx5Iikp OyAgICAgICAgICAgICAgICAgXAotICAgICAgICAgY3h0LT5tZW1idWZfcm8gPSAwOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIFRSQUNFTUUo KCJyZXN0b3JpbmcgbWJ1ZiIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci1AQCAtNjgwLDggKzY4MSw4IEBAIHN0YXRpYyBzdGN4dF90ICpDb250ZXh0X3B0ciA9IE5VTEw7 Ci0gICogVXNlIFN2UE9LcCgpLCBiZWNhdXNlIFN2UE9LKCkgZmFpbHMgb24gdGFpbnRlZCBzY2Fs YXJzLgotICAqIFNlZSBzdG9yZV9zY2FsYXIoKSBmb3Igb3RoZXIgdXNhZ2Ugb2YgdGhpcyB3b3Jr YXJvdW5kLgotICAqLwotLSNkZWZpbmUgTUJVRl9MT0FEKHYpCQkJCQkJXAotLSAgICBTVE1UX1NU QVJUIHsJCQkJCQlcCi0rI2RlZmluZSBNQlVGX0xPQUQodikgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgU1RNVF9TVEFSVCB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgQVNTRVJUKGN4dC0+ bWVtYnVmX3JvLCAoIm1iYXNlIGlzIHJlYWQtb25seSIpKTsgICAgICAgICBcCi0gICAgICAgICBp ZiAoIVN2UE9LcCh2KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgICAgICAgICBDUk9BSygoIk5vdCBhIHNjYWxhciBzdHJpbmciKSk7ICAgICAgICAgICAg ICAgICAgICAgXAotQEAgLTY4OSw4ICs2OTAsOCBAQCBzdGF0aWMgc3RjeHRfdCAqQ29udGV4dF9w dHIgPSBOVUxMOwotICAgICAgICAgbWVuZCA9IG1iYXNlICsgbXNpejsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgIH0gU1RNVF9FTkQKLSAKLS0jZGVmaW5lIE1CVUZf WFRFTkQoeCkJCQkJCQlcCi0tICAgIFNUTVRfU1RBUlQgewkJCQkJCVwKLSsjZGVmaW5lIE1CVUZf WFRFTkQoeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICBTVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgICAgICBTVFJMRU4gbnN6ID0gKFNUUkxFTikgcm91bmRfbWdyb3coKHgpK21z aXopOyAgICAgICAgICAgIFwKLSAgICAgICAgIFNUUkxFTiBvZmZzZXQgPSBtcHRyIC0gbWJhc2U7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgQVNTRVJUKCFjeHQtPm1lbWJ1 Zl9ybywgKCJtYmFzZSBpcyBub3QgcmVhZC1vbmx5IikpOyAgICBcCi1AQCAtNzAyLDE0ICs3MDMs MTQgQEAgc3RhdGljIHN0Y3h0X3QgKkNvbnRleHRfcHRyID0gTlVMTDsKLSAgICAgICAgIG1lbmQg PSBtYmFzZSArIG5zejsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICB9IFNUTVRfRU5ECi0gCi0tI2RlZmluZSBNQlVGX0NISyh4KQkJCQlcCi0tICAgIFNUTVRfU1RB UlQgewkJCQlcCi0rI2RlZmluZSBNQlVGX0NISyh4KSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICBTVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgICAgIGlmICgobXB0ciArICh4KSkgPiBtZW5kKSAgICAgICAgICAgICAgICBcCi0gICAg ICAgICAgICAgTUJVRl9YVEVORCh4KTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB9IFNU TVRfRU5ECi0gCi0tI2RlZmluZSBNQlVGX0dFVEMoeCkJCQkJXAotLSAgICBTVE1UX1NUQVJUIHsJ CQkJXAotKyNkZWZpbmUgTUJVRl9HRVRDKHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgICAgU1RNVF9TVEFSVCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg ICAgICBpZiAobXB0ciA8IG1lbmQpICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAg ICAgIHggPSAoaW50KSAodW5zaWduZWQgY2hhcikgKm1wdHIrKzsgIFwKLSAgICAgICAgIGVsc2Ug ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtNzE3LDggKzcxOCw4IEBA IHN0YXRpYyBzdGN4dF90ICpDb250ZXh0X3B0ciA9IE5VTEw7Ci0gICAgIH0gU1RNVF9FTkQKLSAK LSAjaWZkZWYgQ1JBWV9IQUNLCi0tI2RlZmluZSBNQlVGX0dFVElOVCh4KQkJCQlcCi0tICAgIFNU TVRfU1RBUlQgewkJCQlcCi0rI2RlZmluZSBNQlVGX0dFVElOVCh4KSAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICBTVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgIG9DKHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgICBpZiAoKG1wdHIgKyA0KSA8PSBtZW5kKSB7ICAgICAgICAgICAgICAgXAotICAg ICAgICAgICAgIG1lbWNweShvSSgmeCksIG1wdHIsIDQpOyAgICAgICAgICAgIFwKLUBAIC03Mjcs OCArNzI4LDggQEAgc3RhdGljIHN0Y3h0X3QgKkNvbnRleHRfcHRyID0gTlVMTDsKLSAgICAgICAg ICAgICByZXR1cm4gKFNWICopIDA7ICAgICAgICAgICAgICAgICAgICBcCi0gICAgIH0gU1RNVF9F TkQKLSAjZWxzZQotLSNkZWZpbmUgTUJVRl9HRVRJTlQoeCkJCQkJXAotLSAgICBTVE1UX1NUQVJU IHsJCQkJXAotKyNkZWZpbmUgTUJVRl9HRVRJTlQoeCkgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgU1RNVF9TVEFSVCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICBpZiAoKG1wdHIgKyBzaXplb2YoaW50KSkgPD0gbWVuZCkgeyAgICAgXAotICAgICAg ICAgICAgIGlmIChpbnRfYWxpZ25lZChtcHRyKSkgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg ICAgICAgeCA9ICooaW50ICopIG1wdHI7ICAgICAgICAgICAgICBcCi1AQCAtNzQwLDggKzc0MSw4 IEBAIHN0YXRpYyBzdGN4dF90ICpDb250ZXh0X3B0ciA9IE5VTEw7Ci0gICAgIH0gU1RNVF9FTkQK LSAjZW5kaWYKLSAKLS0jZGVmaW5lIE1CVUZfUkVBRCh4LHMpCQkJCVwKLS0gICAgU1RNVF9TVEFS VCB7CQkJCVwKLSsjZGVmaW5lIE1CVUZfUkVBRCh4LHMpICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgIFNUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICAgICAgaWYgKChtcHRyICsgKHMpKSA8PSBtZW5kKSB7ICAgICAgICAgICAgIFwKLSAgICAg ICAgICAgICBtZW1jcHkoeCwgbXB0ciwgcyk7ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICAgbXB0ciArPSBzOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTc0OSw4ICs3NTAs OCBAQCBzdGF0aWMgc3RjeHRfdCAqQ29udGV4dF9wdHIgPSBOVUxMOwotICAgICAgICAgICAgIHJl dHVybiAoU1YgKikgMDsgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgfSBTVE1UX0VORAotIAot LSNkZWZpbmUgTUJVRl9TQUZFUkVBRCh4LHMseikJCQlcCi0tICAgIFNUTVRfU1RBUlQgewkJCQlc Ci0rI2RlZmluZSBNQlVGX1NBRkVSRUFEKHgscyx6KSAgICAgICAgICAgICAgICAgICAgXAotKyAg ICBTVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg IGlmICgobXB0ciArIChzKSkgPD0gbWVuZCkgeyAgICAgICAgICAgICBcCi0gICAgICAgICAgICAg bWVtY3B5KHgsIG1wdHIsIHMpOyAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIG1wdHIg Kz0gczsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC03NjAsOCArNzYxLDggQEAgc3Rh dGljIHN0Y3h0X3QgKkNvbnRleHRfcHRyID0gTlVMTDsKLSAgICAgICAgIH0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIH0gU1RNVF9FTkQKLSAKLS0jZGVmaW5l IE1CVUZfU0FGRVBWUkVBRCh4LHMseikJCQlcCi0tICAgIFNUTVRfU1RBUlQgewkJCQlcCi0rI2Rl ZmluZSBNQlVGX1NBRkVQVlJFQUQoeCxzLHopICAgICAgICAgICAgICAgICAgXAotKyAgICBTVE1U X1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGlmICgo bXB0ciArIChzKSkgPD0gbWVuZCkgeyAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgbWVtY3B5 KHgsIG1wdHIsIHMpOyAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIG1wdHIgKz0gczsg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC03NzEsOCArNzcyLDggQEAgc3RhdGljIHN0 Y3h0X3QgKkNvbnRleHRfcHRyID0gTlVMTDsKLSAgICAgICAgIH0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgIH0gU1RNVF9FTkQKLSAKLS0jZGVmaW5lIE1CVUZf UFVUQyhjKQkJCQlcCi0tICAgIFNUTVRfU1RBUlQgewkJCQlcCi0rI2RlZmluZSBNQlVGX1BVVEMo YykgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBTVE1UX1NUQVJUIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGlmIChtcHRyIDwgbWVuZCkgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgKm1wdHIrKyA9IChjaGFyKSBjOyAg ICAgICAgICAgICAgICAgXAotICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLUBAIC03ODIsMTUgKzc4MywxNSBAQCBzdGF0aWMgc3RjeHRfdCAqQ29udGV4 dF9wdHIgPSBOVUxMOwotICAgICB9IFNUTVRfRU5ECi0gCi0gI2lmZGVmIENSQVlfSEFDSwotLSNk ZWZpbmUgTUJVRl9QVVRJTlQoaSkJCQkJXAotLSAgICBTVE1UX1NUQVJUIHsJCQkJXAotKyNkZWZp bmUgTUJVRl9QVVRJTlQoaSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgU1RNVF9T VEFSVCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBNQlVGX0NI Syg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgbWVtY3B5KG1wdHIs IG9JKCZpKSwgNCk7ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIG1wdHIgKz0gNDsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIH0gU1RNVF9FTkQKLSAjZWxzZQotLSNkZWZp bmUgTUJVRl9QVVRJTlQoaSkgCQkJCVwKLS0gICAgU1RNVF9TVEFSVCB7CQkJCVwKLSsjZGVmaW5l IE1CVUZfUFVUSU5UKGkpICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIFNUTVRfU1RB UlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgTUJVRl9DSEso c2l6ZW9mKGludCkpOyAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGlmIChpbnRfYWxpZ25l ZChtcHRyKSkgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgKihpbnQgKikgbXB0ciA9 IGk7ICAgICAgICAgICAgICAgICAgXAotQEAgLTgwMCwxNCArODAxLDE0IEBAIHN0YXRpYyBzdGN4 dF90ICpDb250ZXh0X3B0ciA9IE5VTEw7Ci0gICAgIH0gU1RNVF9FTkQKLSAjZW5kaWYKLSAKLS0j ZGVmaW5lIE1CVUZfUFVUTE9ORyhsKQkJCQlcCi0tICAgIFNUTVRfU1RBUlQgewkJCQlcCi0rI2Rl ZmluZSBNQlVGX1BVVExPTkcobCkgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBTVE1U X1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIE1CVUZf Q0hLKDgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBtZW1jcHkobXB0 ciwgJmwsIDgpOyAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgbXB0ciArPSA4OyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgfSBTVE1UX0VORAotLSNkZWZpbmUgTUJV Rl9XUklURSh4LHMpCQkJCVwKLS0gICAgU1RNVF9TVEFSVCB7CQkJCVwKLSsjZGVmaW5lIE1CVUZf V1JJVEUoeCxzKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIFNUTVRfU1RBUlQgeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgTUJVRl9DSEsocyk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIG1lbWNweShtcHRyLCB4LCBzKTsg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBtcHRyICs9IHM7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotQEAgLTgxNyw2MCArODE4LDYwIEBAIHN0YXRpYyBzdGN4dF90ICpD b250ZXh0X3B0ciA9IE5VTEw7Ci0gICogUG9zc2libGUgcmV0dXJuIHZhbHVlcyBmb3Igc3ZfdHlw ZSgpLgotICAqLwotIAotLSNkZWZpbmUgc3Zpc19SRUYJCTAKLS0jZGVmaW5lIHN2aXNfU0NBTEFS CQkxCi0tI2RlZmluZSBzdmlzX0FSUkFZCQkyCi0tI2RlZmluZSBzdmlzX0hBU0gJCTMKLS0jZGVm aW5lIHN2aXNfVElFRAkJNAotLSNkZWZpbmUgc3Zpc19USUVEX0lURU0JCTUKLS0jZGVmaW5lIHN2 aXNfQ09ERQkJNgotLSNkZWZpbmUgc3Zpc19SRUdFWFAJCTcKLS0jZGVmaW5lIHN2aXNfT1RIRVIJ CTgKLSsjZGVmaW5lIHN2aXNfUkVGICAgICAgICAgICAgICAgIDAKLSsjZGVmaW5lIHN2aXNfU0NB TEFSICAgICAgICAgICAgIDEKLSsjZGVmaW5lIHN2aXNfQVJSQVkgICAgICAgICAgICAgIDIKLSsj ZGVmaW5lIHN2aXNfSEFTSCAgICAgICAgICAgICAgIDMKLSsjZGVmaW5lIHN2aXNfVElFRCAgICAg ICAgICAgICAgIDQKLSsjZGVmaW5lIHN2aXNfVElFRF9JVEVNICAgICAgICAgIDUKLSsjZGVmaW5l IHN2aXNfQ09ERSAgICAgICAgICAgICAgIDYKLSsjZGVmaW5lIHN2aXNfUkVHRVhQICAgICAgICAg ICAgIDcKLSsjZGVmaW5lIHN2aXNfT1RIRVIgICAgICAgICAgICAgIDgKLSAKLSAvKgotICAqIEZs YWdzIGZvciBTWF9IT09LLgotICAqLwotIAotLSNkZWZpbmUgU0hGX1RZUEVfTUFTSwkJMHgwMwot LSNkZWZpbmUgU0hGX0xBUkdFX0NMQVNTTEVOCTB4MDQKLS0jZGVmaW5lIFNIRl9MQVJHRV9TVFJM RU4JMHgwOAotLSNkZWZpbmUgU0hGX0xBUkdFX0xJU1RMRU4JMHgxMAotLSNkZWZpbmUgU0hGX0lE WF9DTEFTU05BTUUJMHgyMAotLSNkZWZpbmUgU0hGX05FRURfUkVDVVJTRQkweDQwCi0tI2RlZmlu ZSBTSEZfSEFTX0xJU1QJCTB4ODAKLSsjZGVmaW5lIFNIRl9UWVBFX01BU0sgICAgICAgICAgIDB4 MDMKLSsjZGVmaW5lIFNIRl9MQVJHRV9DTEFTU0xFTiAgICAgIDB4MDQKLSsjZGVmaW5lIFNIRl9M QVJHRV9TVFJMRU4gICAgICAgIDB4MDgKLSsjZGVmaW5lIFNIRl9MQVJHRV9MSVNUTEVOICAgICAg IDB4MTAKLSsjZGVmaW5lIFNIRl9JRFhfQ0xBU1NOQU1FICAgICAgIDB4MjAKLSsjZGVmaW5lIFNI Rl9ORUVEX1JFQ1VSU0UgICAgICAgIDB4NDAKLSsjZGVmaW5lIFNIRl9IQVNfTElTVCAgICAgICAg ICAgIDB4ODAKLSAKLSAvKgotICAqIFR5cGVzIGZvciBTWF9IT09LIChsYXN0IDIgYml0cyBpbiBm bGFncykuCi0gICovCi0gCi0tI2RlZmluZSBTSFRfU0NBTEFSCQkwCi0tI2RlZmluZSBTSFRfQVJS QVkJCTEKLS0jZGVmaW5lIFNIVF9IQVNICQkyCi0tI2RlZmluZSBTSFRfRVhUUkEJCTMJLyogUmVh ZCBleHRyYSBieXRlIGZvciB0eXBlICovCi0rI2RlZmluZSBTSFRfU0NBTEFSICAgICAgICAgICAg ICAwCi0rI2RlZmluZSBTSFRfQVJSQVkgICAgICAgICAgICAgICAxCi0rI2RlZmluZSBTSFRfSEFT SCAgICAgICAgICAgICAgICAyCi0rI2RlZmluZSBTSFRfRVhUUkEgICAgICAgICAgICAgICAzICAg ICAgIC8qIFJlYWQgZXh0cmEgYnl0ZSBmb3IgdHlwZSAqLwotIAotIC8qCi0gICogVGhlIGZvbGxv d2luZyBhcmUgaGVsZCBpbiB0aGUgImV4dHJhIGJ5dGUiLi4uCi0gICovCi0gCi0tI2RlZmluZSBT SFRfVFNDQUxBUgkJNAkvKiA0ICsgMCAtLSB0aWVkIHNjYWxhciAqLwotLSNkZWZpbmUgU0hUX1RB UlJBWQkJNQkvKiA0ICsgMSAtLSB0aWVkIGFycmF5ICovCi0tI2RlZmluZSBTSFRfVEhBU0gJCTYJ LyogNCArIDIgLS0gdGllZCBoYXNoICovCi0rI2RlZmluZSBTSFRfVFNDQUxBUiAgICAgICAgICAg ICA0ICAgICAgIC8qIDQgKyAwIC0tIHRpZWQgc2NhbGFyICovCi0rI2RlZmluZSBTSFRfVEFSUkFZ ICAgICAgICAgICAgICA1ICAgICAgIC8qIDQgKyAxIC0tIHRpZWQgYXJyYXkgKi8KLSsjZGVmaW5l IFNIVF9USEFTSCAgICAgICAgICAgICAgIDYgICAgICAgLyogNCArIDIgLS0gdGllZCBoYXNoICov Ci0gCi0gLyoKLSAgKiBwZXIgaGFzaCBmbGFncyBmb3IgZmxhZ2dlZCBoYXNoZXMKLSAgKi8KLSAK LS0jZGVmaW5lIFNIVl9SRVNUUklDVEVECQkweDAxCi0rI2RlZmluZSBTSFZfUkVTVFJJQ1RFRCAg ICAgICAgICAweDAxCi0gCi0gLyoKLSAgKiBwZXIga2V5IGZsYWdzIGZvciBmbGFnZ2VkIGhhc2hl cwotICAqLwotIAotLSNkZWZpbmUgU0hWX0tfVVRGOAkJMHgwMQotLSNkZWZpbmUgU0hWX0tfV0FT VVRGOAkJMHgwMgotLSNkZWZpbmUgU0hWX0tfTE9DS0VECQkweDA0Ci0tI2RlZmluZSBTSFZfS19J U1NWCQkweDA4Ci0tI2RlZmluZSBTSFZfS19QTEFDRUhPTERFUgkweDEwCi0rI2RlZmluZSBTSFZf S19VVEY4ICAgICAgICAgICAgICAweDAxCi0rI2RlZmluZSBTSFZfS19XQVNVVEY4ICAgICAgICAg ICAweDAyCi0rI2RlZmluZSBTSFZfS19MT0NLRUQgICAgICAgICAgICAweDA0Ci0rI2RlZmluZSBT SFZfS19JU1NWICAgICAgICAgICAgICAweDA4Ci0rI2RlZmluZSBTSFZfS19QTEFDRUhPTERFUiAg ICAgICAweDEwCi0gCi0gLyoKLSAgKiBmbGFncyB0byBhbGxvdyBibGVzc2luZyBhbmQvb3IgdGll aW5nIGRhdGEgdGhlIGRhdGEgd2UgbG9hZAotQEAgLTg4Miw3ICs4ODMsNyBAQCBzdGF0aWMgc3Rj eHRfdCAqQ29udGV4dF9wdHIgPSBOVUxMOwotICAqIEZsYWdzIGZvciBTWF9SRUdFWFAuCi0gICov Ci0gCi0tI2RlZmluZSBTSFJfVTMyX1JFX0xFTgkJMHgwMQotKyNkZWZpbmUgU0hSX1UzMl9SRV9M RU4gICAgICAgICAgMHgwMQotIAotIC8qCi0gICogQmVmb3JlIDAuNiwgdGhlIG1hZ2ljIHN0cmlu ZyB3YXMgInBlcmwtc3RvcmUiIChiaW5hcnkgdmVyc2lvbiBudW1iZXIgMCkuCi1AQCAtODk4LDEw ICs4OTksMTAgQEAgc3RhdGljIHN0Y3h0X3QgKkNvbnRleHRfcHRyID0gTlVMTDsKLSAgKiBzcG90 IGVycm9ycyBpZiBhIGZpbGUgbWFraW5nIHVzZSBvZiAwLjctc3BlY2lmaWMgZXh0ZW5zaW9ucyBp cyBnaXZlbiB0bwotICAqIDAuNiBmb3IgcmV0cmlldmFsLCB0aGUgYmluYXJ5IHZlcnNpb24gd2Fz IG1vdmVkIHRvICIyIi4gIEFuZCBJJ20gaW50cm9kdWNpbmcKLSAgKiBhICJtaW5vciIgdmVyc2lv biwgdG8gYmV0dGVyIHRyYWNrIHRoaXMga2luZCBvZiBldm9sdXRpb24gZnJvbSBub3cgb24uCi0t ICogCi0rICoKLSAgKi8KLSBzdGF0aWMgY29uc3QgY2hhciBvbGRfbWFnaWNzdHJbXSA9ICJwZXJs LXN0b3JlIjsgLyogTWFnaWMgbnVtYmVyIGJlZm9yZSAwLjYgKi8KLS1zdGF0aWMgY29uc3QgY2hh ciBtYWdpY3N0cltdID0gInBzdDAiOwkJIC8qIFVzZWQgYXMgYSBtYWdpYyBudW1iZXIgKi8KLStz dGF0aWMgY29uc3QgY2hhciBtYWdpY3N0cltdID0gInBzdDAiOyAgICAgICAgICAgLyogVXNlZCBh cyBhIG1hZ2ljIG51bWJlciAqLwotIAotICNkZWZpbmUgTUFHSUNTVFJfQllURVMgICdwJywncycs J3QnLCcwJwotICNkZWZpbmUgT0xETUFHSUNTVFJfQllURVMgICdwJywnZScsJ3InLCdsJywnLScs J3MnLCd0JywnbycsJ3InLCdlJwotQEAgLTk3MSwyMCArOTcyLDIwIEBAIHN0YXRpYyBjb25zdCBj aGFyIGJ5dGVvcmRlcnN0cltdID0ge0JZVEVPUkRFUl9CWVRFUywgMH07Ci0gc3RhdGljIGNvbnN0 IGNoYXIgYnl0ZW9yZGVyc3RyXzU2W10gPSB7QllURU9SREVSX0JZVEVTXzU2LCAwfTsKLSAjZW5k aWYKLSAKLS0jZGVmaW5lIFNUT1JBQkxFX0JJTl9NQUpPUgkyCQkvKiBCaW5hcnkgbWFqb3IgInZl cnNpb24iICovCi0tI2RlZmluZSBTVE9SQUJMRV9CSU5fTUlOT1IJMTIJCS8qIEJpbmFyeSBtaW5v ciAidmVyc2lvbiIgKi8KLSsjZGVmaW5lIFNUT1JBQkxFX0JJTl9NQUpPUiAgICAgIDIgICAgICAg ICAgICAgICAvKiBCaW5hcnkgbWFqb3IgInZlcnNpb24iICovCi0rI2RlZmluZSBTVE9SQUJMRV9C SU5fTUlOT1IgICAgICAxMiAgICAgICAgICAgICAgLyogQmluYXJ5IG1pbm9yICJ2ZXJzaW9uIiAq LwotIAotICNpZiAhZGVmaW5lZCAoU3ZWT0spCi0gLyoKLSAgKiBQZXJsIDUuNi4wLTUuOC4wIGNh biBkbyB3ZWFrIHJlZmVyZW5jZXMsIGJ1dCBub3QgdnN0cmluZyBtYWdpYy4KLSAqLwotLSNkZWZp bmUgU1RPUkFCTEVfQklOX1dSSVRFX01JTk9SCTgKLSsjZGVmaW5lIFNUT1JBQkxFX0JJTl9XUklU RV9NSU5PUiAgICAgICAgOAotICNlbGlmIFBFUkxfVkVSU0lPTl9HRSg1LDE5LDApCi0gLyogUGVy bCA1LjE5IHRha2VzIGF3YXkgdGhlIHNwZWNpYWwgbWVhbmluZyBvZiBQTF9zdl91bmRlZiBpbiBh cnJheXMuICovCi0gLyogV2l0aCAzLnggd2UgYWRkZWQgTE9CSkVDVCAqLwotLSNkZWZpbmUgU1RP UkFCTEVfQklOX1dSSVRFX01JTk9SCTExCi0rI2RlZmluZSBTVE9SQUJMRV9CSU5fV1JJVEVfTUlO T1IgICAgICAgIDExCi0gI2Vsc2UKLS0jZGVmaW5lIFNUT1JBQkxFX0JJTl9XUklURV9NSU5PUgk5 Ci0rI2RlZmluZSBTVE9SQUJMRV9CSU5fV1JJVEVfTUlOT1IgICAgICAgIDkKLSAjZW5kaWYKLSAK LSAjaWYgUEVSTF9WRVJTSU9OX0xUKDUsOCwxKQotQEAgLTEwMDIsMTYgKzEwMDMsMTYgQEAgc3Rh dGljIGNvbnN0IGNoYXIgYnl0ZW9yZGVyc3RyXzU2W10gPSB7QllURU9SREVSX0JZVEVTXzU2LCAw fTsKLSAgKiB0YWdudW0gd2l0aCBjeHQtPnRhZ251bSsrIGFsb25nIHdpdGggdGhpcyBtYWNybyEK LSAgKiAgICAgLSBzYW12IDIwSmFuMDQKLSAgKi8KLS0jZGVmaW5lIFBVVE1BUksoeCkgCQkJCQlc Ci0tICAgIFNUTVRfU1RBUlQgewkJCQkJXAotKyNkZWZpbmUgUFVUTUFSSyh4KSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBTVE1UX1NUQVJUIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgaWYgKCFjeHQtPmZpbykg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIE1CVUZfUFVU Qyh4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZWxzZSBpZiAo UGVybElPX3B1dGMoY3h0LT5maW8sIHgpID09IEVPRikgICAgICAgXAotICAgICAgICAgICAgIHJl dHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB9IFNUTVRf RU5ECi0gCi0tI2RlZmluZSBXUklURV9JMzIoeCkJCQkJCQlcCi0tICAgIFNUTVRfU1RBUlQgewkJ CQkJCVwKLSsjZGVmaW5lIFdSSVRFX0kzMih4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICBTVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBBU1NFUlQoc2l6ZW9mKHgpID09 IHNpemVvZihJMzIpLCAoIndyaXRpbmcgYW4gSTMyIikpOyAgIFwKLSAgICAgICAgIGlmICghY3h0 LT5maW8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg ICAgICAgIE1CVUZfUFVUSU5UKHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi1AQCAtMTAyMCw5ICsxMDIxLDkgQEAgc3RhdGljIGNvbnN0IGNoYXIgYnl0ZW9yZGVyc3Ry XzU2W10gPSB7QllURU9SREVSX0JZVEVTXzU2LCAwfTsKLSAgICAgICAgICAgICByZXR1cm4gLTE7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB9IFNUTVRf RU5ECi0gCi0tI2RlZmluZSBXUklURV9VNjQoeCkJCQkJCQkJXAotLSAgICBTVE1UX1NUQVJUIHsJ CQkJCQkJXAotLSAgICAgICAgQVNTRVJUKHNpemVvZih4KSA9PSBzaXplb2YoVVYpLCAoIndyaXRp bmcgYW4gVVYiKSk7CQlcCi0rI2RlZmluZSBXUklURV9VNjQoeCkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBTVE1UX1NUQVJUIHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg ICAgICAgIEFTU0VSVChzaXplb2YoeCkgPT0gc2l6ZW9mKFVWKSwgKCJ3cml0aW5nIGFuIFVWIikp OyAgICAgICAgICAgICBcCi0gICAgICAgICBpZiAoIWN4dC0+ZmlvKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIE1CVUZfUFVU TE9ORyh4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgIGVsc2UgaWYgKFBlcmxJT193cml0ZShjeHQtPmZpbywgb0woJngpLCAgICAgICAgICAg ICAgICAgICAgICAgICBcCi1AQCAtMTAzMiw3ICsxMDMzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIg Ynl0ZW9yZGVyc3RyXzU2W10gPSB7QllURU9SREVSX0JZVEVTXzU2LCAwfTsKLSAKLSAjaWZkZWYg SEFTX0hUT05MCi0gI2RlZmluZSBXTEVOKHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBTVE1UX1NUQVJUIHsJCQkJCQkJXAot KyAgICBTVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIEFTU0VSVChzaXplb2YoeCkgPT0gc2l6ZW9mKGlu dCksICgiV0xFTiB3cml0aW5nIGFuIGludCIpKTsgICAgICBcCi0gICAgICAgICBpZiAoY3h0LT5u ZXRvcmRlcikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICAgICAgICAgIGludCB5ID0gKGludCkgaHRvbmwoeCk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLUBAIC0xMDUxLDExICsxMDUyLDExIEBAIHN0YXRpYyBjb25zdCBj aGFyIGJ5dGVvcmRlcnN0cl81NltdID0ge0JZVEVPUkRFUl9CWVRFU181NiwgMH07Ci0gCi0gIyAg aWZkZWYgSEFTX1U2NAotIAotLSNkZWZpbmUgVzY0TEVOKHgpCQkJCQkJCVwKLS0gICAgU1RNVF9T VEFSVCB7CQkJCQkJCVwKLSsjZGVmaW5lIFc2NExFTih4KSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIFNUTVRfU1RBUlQgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICAgICAgQVNTRVJUKHNpemVvZih4KSA9PSA4LCAoIlc2NExFTiB3cml0aW5nIGEgVTY0IikpOyAg ICAgICAgICAgICAgIFwKLSAgICAgICAgIGlmIChjeHQtPm5ldG9yZGVyKSB7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgVTMyIGJ1Zlsy XTsgICAgICAJCQkJCQlcCi0rICAgICAgICAgICAgVTMyIGJ1ZlsyXTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIGJ1ZlsxXSA9 IGh0b25sKHggJiAweGZmZmZmZmZmVUwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgICAgICBidWZbMF0gPSBodG9ubCh4ID4+IDMyKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgaWYgKCFjeHQtPmZpbykgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTEwNzksNyArMTA4MCw3IEBA IHN0YXRpYyBjb25zdCBjaGFyIGJ5dGVvcmRlcnN0cl81NltdID0ge0JZVEVPUkRFUl9CWVRFU181 NiwgMH07Ci0gIyAgZW5kaWYKLSAKLSAjZWxzZQotLSNkZWZpbmUgV0xFTih4KQlXUklURV9JMzIo eCkKLSsjZGVmaW5lIFdMRU4oeCkgV1JJVEVfSTMyKHgpCi0gI2lmZGVmIEhBU19VNjQKLSAjZGVm aW5lIFc2NExFTih4KSBXUklURV9VNjQoeCkKLSAjZWxzZQotQEAgLTEwODcsMTYgKzEwODgsMTYg QEAgc3RhdGljIGNvbnN0IGNoYXIgYnl0ZW9yZGVyc3RyXzU2W10gPSB7QllURU9SREVSX0JZVEVT XzU2LCAwfTsKLSAjZW5kaWYKLSAjZW5kaWYKLSAKLS0jZGVmaW5lIFdSSVRFKHgseSkgCQkJCQkJ CVwKLS0gICAgU1RNVF9TVEFSVCB7CQkJCQkJCVwKLSsjZGVmaW5lIFdSSVRFKHgseSkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIFNU TVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAgICAgaWYgKCFjeHQtPmZpbykgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICBNQlVGX1dSSVRFKHgs eSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg ICBlbHNlIGlmIChQZXJsSU9fd3JpdGUoY3h0LT5maW8sIHgsIHkpICE9IChTU2l6ZV90KXkpICAg ICAgICAgICAgXAotICAgICAgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgfSBTVE1UX0VORAotIAotLSNkZWZp bmUgU1RPUkVfUFZfTEVOKHB2LCBsZW4sIHNtYWxsLCBsYXJnZSkJCQlcCi0tICAgIFNUTVRfU1RB UlQgewkJCQkJCVwKLSsjZGVmaW5lIFNUT1JFX1BWX0xFTihwdiwgbGVuLCBzbWFsbCwgbGFyZ2Up ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBTVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBpZiAobGVuIDw9IExH X1NDQUxBUikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg ICBpbnQgaWxlbiA9IChpbnQpIGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2xlbiA9ICh1bnNpZ25lZCBjaGFyKSBsZW47ICAg ICAgICAgICBcCi1AQCAtMTExNywxNyArMTExOCwxNyBAQCBzdGF0aWMgY29uc3QgY2hhciBieXRl b3JkZXJzdHJfNTZbXSA9IHtCWVRFT1JERVJfQllURVNfNTYsIDB9OwotICAgICAgICAgfSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg IH0gU1RNVF9FTkQKLSAKLS0jZGVmaW5lIFNUT1JFX1NDQUxBUihwdiwgbGVuKQlTVE9SRV9QVl9M RU4ocHYsIGxlbiwgU1hfU0NBTEFSLCBTWF9MU0NBTEFSKQotKyNkZWZpbmUgU1RPUkVfU0NBTEFS KHB2LCBsZW4pICAgU1RPUkVfUFZfTEVOKHB2LCBsZW4sIFNYX1NDQUxBUiwgU1hfTFNDQUxBUikK LSAKLSAvKgotICAqIFN0b3JlICZQTF9zdl91bmRlZiBpbiBhcnJheXMgd2l0aG91dCByZWN1cnNp bmcgdGhyb3VnaCBzdG9yZSgpLiAgV2UKLSAgKiBhY3R1YWxseSB1c2UgdGhpcyB0byByZXByZXNl bnQgbm9uZXhpc3RlbnQgZWxlbWVudHMsIGZvciBoaXN0b3JpY2FsCi0gICogcmVhc29ucy4KLSAg Ki8KLS0jZGVmaW5lIFNUT1JFX1NWX1VOREVGKCkgCQkJCQlcCi0rI2RlZmluZSBTVE9SRV9TVl9V TkRFRigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgU1RN VF9TVEFSVCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotLQljeHQtPnRhZ251bSsrOwkJCQkJCVwKLS0JUFVUTUFSSyhTWF9TVl9VTkRFRik7CQkJCQlc Ci0rICAgICAgICBjeHQtPnRhZ251bSsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgICAgIFBVVE1BUksoU1hfU1ZfVU5ERUYpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICB9IFNUTVRfRU5ECi0gCi0gLyoKLUBAIC0xMTM4 LDE2ICsxMTM5LDE2IEBAIHN0YXRpYyBjb25zdCBjaGFyIGJ5dGVvcmRlcnN0cl81NltdID0ge0JZ VEVPUkRFUl9CWVRFU181NiwgMH07Ci0gICAgIChjeHQtPmZpbyA/IFBlcmxJT19nZXRjKGN4dC0+ ZmlvKSAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICA6IChtcHRyID49IG1lbmQg PyBFT0YgOiAoaW50KSAqbXB0cisrKSkKLSAKLS0jZGVmaW5lIEdFVE1BUksoeCkJCQkJCQkJXAot LSAgICBTVE1UX1NUQVJUIHsJCQkJCQkJXAotKyNkZWZpbmUgR0VUTUFSSyh4KSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgU1RNVF9T VEFSVCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgICAgICBpZiAoIWN4dC0+ZmlvKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIE1CVUZfR0VUQyh4KTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGVs c2UgaWYgKChpbnQpICh4ID0gUGVybElPX2dldGMoY3h0LT5maW8pKSA9PSBFT0YpICAgICAgICAg ICAgICBcCi0gICAgICAgICAgICAgcmV0dXJuIChTViAqKSAwOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB9IFNUTVRfRU5ECi0gCi0tI2RlZmluZSBS RUFEX0kzMih4KQkJCQkJCQlcCi0tICAgIFNUTVRfU1RBUlQgewkJCQkJCQlcCi0rI2RlZmluZSBS RUFEX0kzMih4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgICBTVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIEFTU0VSVChzaXplb2YoeCkgPT0g c2l6ZW9mKEkzMiksICgicmVhZGluZyBhbiBJMzIiKSk7ICAgICAgICAgICBcCi0gICAgICAgICBv Qyh4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgICAgICAgaWYgKCFjeHQtPmZpbykgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMTU5LDcgKzExNjAsNyBAQCBzdGF0aWMg Y29uc3QgY2hhciBieXRlb3JkZXJzdHJfNTZbXSA9IHtCWVRFT1JERVJfQllURVNfNTYsIDB9Owot IAotICNpZmRlZiBIQVNfTlRPSEwKLSAjZGVmaW5lIFJMRU4oeCkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIFNUTVRfU1RBUlQg ewkJCQkJCQlcCi0rICAgIFNUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgb0MoeCk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg IGlmICghY3h0LT5maW8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgICAgICAgICAgTUJVRl9HRVRJTlQoeCk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTExNzMsMTYgKzExNzQsMTYgQEAgc3Rh dGljIGNvbnN0IGNoYXIgYnl0ZW9yZGVyc3RyXzU2W10gPSB7QllURU9SREVSX0JZVEVTXzU2LCAw fTsKLSAjZGVmaW5lIFJMRU4oeCkgUkVBRF9JMzIoeCkKLSAjZW5kaWYKLSAKLS0jZGVmaW5lIFJF QUQoeCx5KSAJCQkJCQkJXAotLSAgICBTVE1UX1NUQVJUIHsJCQkJCQkJXAotLQlpZiAoIWN4dC0+ ZmlvKQkJCQkJCQlcCi0rI2RlZmluZSBSRUFEKHgseSkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBTVE1UX1NUQVJUIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg ICAgIGlmICghY3h0LT5maW8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgICAgICAgICAgTUJVRl9SRUFEKHgsIHkpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLQllbHNlIGlmIChQZXJsSU9fcmVhZChj eHQtPmZpbywgeCwgeSkgIT0gKFNTaXplX3QpeSkgICAgICAgICAgICAgXAotKyAgICAgICAgZWxz ZSBpZiAoUGVybElPX3JlYWQoY3h0LT5maW8sIHgsIHkpICE9IChTU2l6ZV90KXkpICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgICByZXR1cm4gKFNWICopIDA7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIH0gU1RNVF9FTkQKLSAKLSAjZGVmaW5lIFNB RkVSRUFEKHgseSx6KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0tICAgIFNUTVRfU1RBUlQgewkJCQkJCQlcCi0rICAgIFNUTVRfU1RBUlQgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICAgICAgaWYgKCFjeHQtPmZpbykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICBNQlVGX1NBRkVSRUFEKHgseSx6KTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBlbHNlIGlmIChQZXJs SU9fcmVhZChjeHQtPmZpbywgeCwgeSkgIT0gKFNTaXplX3QpeSkgeyAgICAgICAgICAgXAotQEAg LTExOTEsOCArMTE5Miw4IEBAIHN0YXRpYyBjb25zdCBjaGFyIGJ5dGVvcmRlcnN0cl81NltdID0g e0JZVEVPUkRFUl9CWVRFU181NiwgMH07Ci0gICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB9IFNUTVRf RU5ECi0gCi0tI2RlZmluZSBTQUZFUFZSRUFEKHgseSx6KQkJCQkJXAotLSAgICBTVE1UX1NUQVJU IHsJCQkJCQlcCi0rI2RlZmluZSBTQUZFUFZSRUFEKHgseSx6KSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgU1RNVF9TVEFSVCB7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgaWYgKCFjeHQtPmZpbykg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAg TUJVRl9TQUZFUFZSRUFEKHgseSx6KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgIGVsc2UgaWYgKFBlcmxJT19yZWFkKGN4dC0+ZmlvLCB4LCB5KSAhPSB5KSB7ICAgICAg ICAgICAgXAotQEAgLTEyMTAsMjEgKzEyMTEsMjEgQEAgc3RhdGljIGNvbnN0IGNoYXIgYnl0ZW9y ZGVyc3RyXzU2W10gPSB7QllURU9SREVSX0JZVEVTXzU2LCAwfTsKLSAjICBlbHNlCi0gc3RhdGlj IFUzMiBTbnRvaGwoVTMyIHgpIHsKLSAgICAgcmV0dXJuICgoKFU4KSB4KSA8PCAyNCkgKyAoKHgg JiAweEZGMDApIDw8IDgpCi0tCSsgKCh4ICYgMHhGRjAwMDApID4+IDgpICsgKCh4ICYgMHhGRjAw MDAwMCkgPj4gMjQpOwotKyAgICAgICAgKyAoKHggJiAweEZGMDAwMCkgPj4gOCkgKyAoKHggJiAw eEZGMDAwMDAwKSA+PiAyNCk7Ci0gfQotICMgIGVuZGlmCi0gCi0gIyAgZGVmaW5lIFJFQURfVTY0 KHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgU1RNVF9TVEFSVCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLS0JQVNTRVJUKHNpemVvZih4KSA9PSA4LCAoIlI2NExF TiByZWFkaW5nIGEgVTY0IikpOyAgICAgICAgICAgICAgICAgXAotLQlpZiAoY3h0LT5uZXRvcmRl cikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tCSAg ICBVMzIgYnVmWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLS0JICAgIFJFQUQoKHZvaWQgKilidWYsIHNpemVvZihidWYpKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotLQkgICAgKHgpID0gKChVVilTbnRvaGwoYnVmWzBdKSA8 PCAzMikgKyBTbnRvaGwoYnVmWzFdKTsJCVwKLS0JfSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLQllbHNlIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0t CSAgICBSRUFEKCYoeCksIHNpemVvZih4KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLS0JfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgQVNTRVJUKHNpemVvZih4KSA9PSA4 LCAoIlI2NExFTiByZWFkaW5nIGEgVTY0IikpOyAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg aWYgKGN4dC0+bmV0b3JkZXIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICAgICAgICAgIFUzMiBidWZbMl07ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIFJFQUQoKHZvaWQg KilidWYsIHNpemVvZihidWYpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICAgICAgICAgICh4KSA9ICgoVVYpU250b2hsKGJ1ZlswXSkgPDwgMzIpICsgU250b2hsKGJ1Zlsx XSk7ICAgICAgICAgIFwKLSsgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIGVsc2UgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgICAgICAgICAgICBSRUFEKCYoeCksIHNpemVvZih4KSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgfSBTVE1UX0VO RAotIAotICNlbmRpZgotQEAgLTEyNTMsOCArMTI1NCw4IEBAIHN0YXRpYyBVMzIgU250b2hsKFUz MiB4KSB7Ci0gICoKLSAgKiBUaGUgX05OIHZhcmlhbnRzIGRvbnQgY2hlY2sgZm9yIHkgYmVpbmcg bnVsbAotICAqLwotLSNkZWZpbmUgU0VFTjBfTk4oeSxpKQkJCQkJCQlcCi0tICAgIFNUTVRfU1RB UlQgewkJCQkJCQlcCi0rI2RlZmluZSBTRUVOMF9OTih5LGkpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBTVE1UX1NUQVJUIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg ICAgIGlmIChhdl9zdG9yZShjeHQtPmFzZWVuLCBjeHQtPnRhZ251bSsrLCBpID8gKFNWKikoeSkg ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgOiBTdlJFRkNOVF9pbmMoeSkpID09 IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIHJldHVybiAoU1Yg KikgMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0x MjYzLDIyICsxMjY0LDIyIEBAIHN0YXRpYyBVMzIgU250b2hsKFUzMiB4KSB7Ci0gICAgICAgICAg ICAgICAgICBQVFIyVVYoeSksIChpbnQpU3ZSRUZDTlQoeSktMSkpOyAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgICB9IFNUTVRfRU5ECi0gCi0tI2RlZmluZSBTRUVOMCh5LGkpCQkJCQkJCVwK LS0gICAgU1RNVF9TVEFSVCB7CQkJCQkJCVwKLSsjZGVmaW5lIFNFRU4wKHksaSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIFNUTVRf U1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgICAgICAgaWYgKCF5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICByZXR1cm4gKFNWICopIDA7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBT RUVOMF9OTih5LGkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgICB9IFNUTVRfRU5ECi0gCi0tI2RlZmluZSBTRUVOX05OKHksc3Rhc2gsaSkJ CQkJCQlcCi0tICAgIFNUTVRfU1RBUlQgewkJCQkJCQlcCi0rI2RlZmluZSBTRUVOX05OKHksc3Rh c2gsaSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICBTVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgIFNFRU4wX05OKHksaSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICBpZiAoc3Rhc2gpCQkJ CQkJCVwKLSsgICAgICAgIGlmIChzdGFzaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgQkxFU1MoKFNWICopKHkpLCAo SFYgKikoc3Rhc2gpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB9IFNUTVRf RU5ECi0gCi0tI2RlZmluZSBTRUVOKHksc3Rhc2gsaSkJCQkJCQkJXAotLSAgICBTVE1UX1NUQVJU IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJXAotKyNk ZWZpbmUgU0VFTih5LHN0YXNoLGkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgU1RNVF9TVEFSVCB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBpZiAoIXkpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICAgICAgICAgIHJldHVybiAoU1YgKikgMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgIFNFRU5fTk4oeSxzdGFzaCwgaSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTI4OSw4ICsxMjkwLDggQEAg c3RhdGljIFUzMiBTbnRvaGwoVTMyIHgpIHsKLSAgKiAiQSIgbWFnaWMgaXMgYWRkZWQgYmVmb3Jl IHRoZSBzdl9ibGVzcyBmb3Igb3ZlcmxvYWRlZCBjbGFzc2VzLCB0aGlzIGF2b2lkcwotICAqIGFu IGV4cGVuc2l2ZSBjYWxsIHRvIFNfcmVzZXRfYW1hZ2ljIGluIHN2X2JsZXNzLgotICAqLwotLSNk ZWZpbmUgQkxFU1MocyxzdGFzaCkJCQkJCQkJXAotLSAgICBTVE1UX1NUQVJUIHsJCQkJCQkJXAot KyNkZWZpbmUgQkxFU1MocyxzdGFzaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgICAgU1RNVF9TVEFSVCB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBTViAqcmVmOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICAgICAgaWYgKGN4dC0+ZmxhZ3MgJiBGTEFHX0JMRVNTX09LKSB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICBUUkFDRU1FKCgiYmxlc3NpbmcgMHglIiBV VnhmICIgaW4gJXMiLCBQVFIyVVYocyksICAgICAgICAgICBcCi1AQCAtMTMxOCw3ICsxMzE5LDcg QEAgc3RhdGljIFUzMiBTbnRvaGwoVTMyIHgpIHsKLSAKLSAjaWYgZGVmaW5lZChVU0VfSVRIUkVB RFMpCi0gCi0tI2RlZmluZSBTVE9SRV9IQVNIX1NPUlQJCQkJCQlcCi0rI2RlZmluZSBTVE9SRV9I QVNIX1NPUlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg RU5URVI7IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgICAgICAgUGVybEludGVycHJldGVyICpvcmlnX3BlcmwgPSBQRVJMX0dFVF9DT05U RVhUOyAgICAgICAgICBcCi0gICAgICAgICBTQVZFU1BUUihvcmlnX3BlcmwpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMzI4LDcgKzEzMjksNyBAQCBzdGF0aWMg VTMyIFNudG9obChVMzIgeCkgewotIAotICNlbHNlIC8qICEgVVNFX0lUSFJFQURTICovCi0gCi0t I2RlZmluZSBTVE9SRV9IQVNIX1NPUlQJCQkJCVwKLSsjZGVmaW5lIFNUT1JFX0hBU0hfU09SVCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgcXNvcnQoKGNoYXIgKikgQXZB UlJBWShhdiksIGxlbiwgc2l6ZW9mKFNWICopLCBzb3J0Y21wKTsKLSAKLSAjZW5kaWYgIC8qIFVT RV9JVEhSRUFEUyAqLwotQEAgLTEzNDMsOCArMTM0NCw4IEBAIHN0YXRpYyBVMzIgU250b2hsKFUz MiB4KSB7Ci0gc3RhdGljIGludCBzdG9yZShwVEhYXyBzdGN4dF90ICpjeHQsIFNWICpzdik7Ci0g c3RhdGljIFNWICpyZXRyaWV2ZShwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNuYW1l KTsKLSAKLS0jZGVmaW5lIFVOU0VFKCkJCQlcCi0tICAgIFNUTVRfU1RBUlQgewkJCVwKLSsjZGVm aW5lIFVOU0VFKCkgICAgICAgICAgICAgICAgIFwKLSsgICAgU1RNVF9TVEFSVCB7ICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgICAgICAgYXZfcG9wKGN4dC0+YXNlZW4pOyAgICAgICAgICAg ICBcCi0gICAgICAgICBjeHQtPnRhZ251bS0tOyAgICAgICAgICAgICAgICAgIFwKLSAgICAgfSBT VE1UX0VORAotQEAgLTEzNjcsMTggKzEzNjgsMTggQEAgc3RhdGljIGludCBzdG9yZV9ibGVzc2Vk KHBUSFhfIHN0Y3h0X3QgKmN4dCwgU1YgKnN2LCBpbnQgdHlwZSwgSFYgKnBrZyk7Ci0gdHlwZWRl ZiBpbnQgKCpzdl9zdG9yZV90KShwVEhYXyBzdGN4dF90ICpjeHQsIFNWICpzdik7Ci0gCi0gc3Rh dGljIGNvbnN0IHN2X3N0b3JlX3Qgc3Zfc3RvcmVbXSA9IHsKLS0gICAgKHN2X3N0b3JlX3Qpc3Rv cmVfcmVmLAkvKiBzdmlzX1JFRiAqLwotLSAgICAoc3Zfc3RvcmVfdClzdG9yZV9zY2FsYXIsCS8q IHN2aXNfU0NBTEFSICovCi0tICAgIChzdl9zdG9yZV90KXN0b3JlX2FycmF5LAkvKiBzdmlzX0FS UkFZICovCi0tICAgIChzdl9zdG9yZV90KXN0b3JlX2hhc2gsCS8qIHN2aXNfSEFTSCAqLwotLSAg ICAoc3Zfc3RvcmVfdClzdG9yZV90aWVkLAkvKiBzdmlzX1RJRUQgKi8KLSsgICAgKHN2X3N0b3Jl X3Qpc3RvcmVfcmVmLCAgICAgIC8qIHN2aXNfUkVGICovCi0rICAgIChzdl9zdG9yZV90KXN0b3Jl X3NjYWxhciwgICAvKiBzdmlzX1NDQUxBUiAqLwotKyAgICAoc3Zfc3RvcmVfdClzdG9yZV9hcnJh eSwgICAgLyogc3Zpc19BUlJBWSAqLwotKyAgICAoc3Zfc3RvcmVfdClzdG9yZV9oYXNoLCAgICAg Lyogc3Zpc19IQVNIICovCi0rICAgIChzdl9zdG9yZV90KXN0b3JlX3RpZWQsICAgICAvKiBzdmlz X1RJRUQgKi8KLSAgICAgKHN2X3N0b3JlX3Qpc3RvcmVfdGllZF9pdGVtLC8qIHN2aXNfVElFRF9J VEVNICovCi0tICAgIChzdl9zdG9yZV90KXN0b3JlX2NvZGUsCS8qIHN2aXNfQ09ERSAqLwotLSAg ICAoc3Zfc3RvcmVfdClzdG9yZV9yZWdleHAsCS8qIHN2aXNfUkVHRVhQICovCi0tICAgIChzdl9z dG9yZV90KXN0b3JlX290aGVyLAkvKiBzdmlzX09USEVSICovCi0rICAgIChzdl9zdG9yZV90KXN0 b3JlX2NvZGUsICAgICAvKiBzdmlzX0NPREUgKi8KLSsgICAgKHN2X3N0b3JlX3Qpc3RvcmVfcmVn ZXhwLCAgIC8qIHN2aXNfUkVHRVhQICovCi0rICAgIChzdl9zdG9yZV90KXN0b3JlX290aGVyLCAg ICAvKiBzdmlzX09USEVSICovCi0gfTsKLSAKLS0jZGVmaW5lIFNWX1NUT1JFKHgpCSgqc3Zfc3Rv cmVbeF0pCi0rI2RlZmluZSBTVl9TVE9SRSh4KSAgICAgKCpzdl9zdG9yZVt4XSkKLSAKLSAvKgot ICAqIER5bmFtaWMgZGlzcGF0Y2hpbmcgdGFibGVzIGZvciBTViByZXRyaWV2YWwuCi1AQCAtMTQx Nyw0MyArMTQxOCw0MyBAQCBzdGF0aWMgaW50IHN0b3JlX2hlbnRyeShwVEhYXyBzdGN4dF90ICpj eHQsIEhWKiBodiwgVVYgaSwgSEVLICpoZWssIFNWICp2YWwsCi0gdHlwZWRlZiBTViogKCpzdl9y ZXRyaWV2ZV90KShwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKm5hbWUpOwotIAotIHN0 YXRpYyBjb25zdCBzdl9yZXRyaWV2ZV90IHN2X29sZF9yZXRyaWV2ZVtdID0gewotLSAgICAwLAkJ CQkJLyogU1hfT0JKRUNUIC0tIGVudHJ5IHVudXNlZCBkeW5hbWljYWxseSAqLwotLSAgICAoc3Zf cmV0cmlldmVfdClyZXRyaWV2ZV9sc2NhbGFyLAkvKiBTWF9MU0NBTEFSICovCi0tICAgIChzdl9y ZXRyaWV2ZV90KW9sZF9yZXRyaWV2ZV9hcnJheSwJLyogU1hfQVJSQVkgLS0gZm9yIHByZS0wLjYg YmluYXJpZXMgKi8KLS0gICAgKHN2X3JldHJpZXZlX3Qpb2xkX3JldHJpZXZlX2hhc2gsCS8qIFNY X0hBU0ggLS0gZm9yIHByZS0wLjYgYmluYXJpZXMgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0 cmlldmVfcmVmLAkvKiBTWF9SRUYgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfdW5k ZWYsCS8qIFNYX1VOREVGICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2ludGVnZXIs CS8qIFNYX0lOVEVHRVIgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfZG91YmxlLAkv KiBTWF9ET1VCTEUgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfYnl0ZSwJLyogU1hf QllURSAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9uZXRpbnQsCS8qIFNYX05FVElO VCAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9zY2FsYXIsCS8qIFNYX1NDQUxBUiAq LwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV90aWVkX2FycmF5LAkvKiBTWF9USUVEX0FS UkFZICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX3RpZWRfaGFzaCwJLyogU1hfVElF RF9IQVNIICovCi0rICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNY X09CSkVDVCAtLSBlbnRyeSB1bnVzZWQgZHluYW1pY2FsbHkgKi8KLSsgICAgKHN2X3JldHJpZXZl X3QpcmV0cmlldmVfbHNjYWxhciwgICAgLyogU1hfTFNDQUxBUiAqLwotKyAgICAoc3ZfcmV0cmll dmVfdClvbGRfcmV0cmlldmVfYXJyYXksICAvKiBTWF9BUlJBWSAtLSBmb3IgcHJlLTAuNiBiaW5h cmllcyAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClvbGRfcmV0cmlldmVfaGFzaCwgICAvKiBTWF9I QVNIIC0tIGZvciBwcmUtMC42IGJpbmFyaWVzICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJp ZXZlX3JlZiwgICAgICAgIC8qIFNYX1JFRiAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2 ZV91bmRlZiwgICAgICAvKiBTWF9VTkRFRiAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2 ZV9pbnRlZ2VyLCAgICAvKiBTWF9JTlRFR0VSICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJp ZXZlX2RvdWJsZSwgICAgIC8qIFNYX0RPVUJMRSAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRy aWV2ZV9ieXRlLCAgICAgICAvKiBTWF9CWVRFICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJp ZXZlX25ldGludCwgICAgIC8qIFNYX05FVElOVCAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRy aWV2ZV9zY2FsYXIsICAgICAvKiBTWF9TQ0FMQVIgKi8KLSsgICAgKHN2X3JldHJpZXZlX3QpcmV0 cmlldmVfdGllZF9hcnJheSwgLyogU1hfVElFRF9BUlJBWSAqLwotKyAgICAoc3ZfcmV0cmlldmVf dClyZXRyaWV2ZV90aWVkX2hhc2gsICAvKiBTWF9USUVEX0hBU0ggKi8KLSAgICAgKHN2X3JldHJp ZXZlX3QpcmV0cmlldmVfdGllZF9zY2FsYXIsLyogU1hfVElFRF9TQ0FMQVIgKi8KLS0gICAgKHN2 X3JldHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsCS8qIFNYX1NWX1VOREVGIG5vdCBzdXBwb3J0ZWQg Ki8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsCS8qIFNYX1NWX1lFUyBub3Qg c3VwcG9ydGVkICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLAkvKiBTWF9T Vl9OTyBub3Qgc3VwcG9ydGVkICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVy LAkvKiBTWF9CTEVTUyBub3Qgc3VwcG9ydGVkICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJp ZXZlX290aGVyLAkvKiBTWF9JWF9CTEVTUyBub3Qgc3VwcG9ydGVkICovCi0tICAgIChzdl9yZXRy aWV2ZV90KXJldHJpZXZlX290aGVyLAkvKiBTWF9IT09LIG5vdCBzdXBwb3J0ZWQgKi8KLS0gICAg KHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsCS8qIFNYX09WRVJMT0FERUQgbm90IHN1cHBv cnRlZCAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9vdGhlciwJLyogU1hfVElFRF9L RVkgbm90IHN1cHBvcnRlZCAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9vdGhlciwJ LyogU1hfVElFRF9JRFggbm90IHN1cHBvcnRlZCAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRy aWV2ZV9vdGhlciwJLyogU1hfVVRGOFNUUiBub3Qgc3VwcG9ydGVkICovCi0tICAgIChzdl9yZXRy aWV2ZV90KXJldHJpZXZlX290aGVyLAkvKiBTWF9MVVRGOFNUUiBub3Qgc3VwcG9ydGVkICovCi0t ICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLAkvKiBTWF9GTEFHX0hBU0ggbm90IHN1 cHBvcnRlZCAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9vdGhlciwJLyogU1hfQ09E RSBub3Qgc3VwcG9ydGVkICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLAkv KiBTWF9XRUFLUkVGIG5vdCBzdXBwb3J0ZWQgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmll dmVfb3RoZXIsCS8qIFNYX1dFQUtPVkVSTE9BRCBub3Qgc3VwcG9ydGVkICovCi0tICAgIChzdl9y ZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLAkvKiBTWF9WU1RSSU5HIG5vdCBzdXBwb3J0ZWQgKi8K LS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsCS8qIFNYX0xWU1RSSU5HIG5vdCBz dXBwb3J0ZWQgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsCS8qIFNYX1NW VU5ERUZfRUxFTSBub3Qgc3VwcG9ydGVkICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZl X290aGVyLAkvKiBTWF9SRUdFWFAgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3Ro ZXIsICAJLyogU1hfTE9CSkVDVCBub3Qgc3VwcG9ydGVkICovCi0tICAgIChzdl9yZXRyaWV2ZV90 KXJldHJpZXZlX290aGVyLAkvKiBTWF9CT09MRUFOX1RSVUUgbm90IHN1cHBvcnRlZCAqLwotLSAg ICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9vdGhlciwJLyogU1hfQk9PTEVBTl9GQUxTRSBub3Qg c3VwcG9ydGVkICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLCAgCS8qIFNY X0xBU1QgKi8KLSsgICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsICAgICAgLyogU1hf U1ZfVU5ERUYgbm90IHN1cHBvcnRlZCAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9v dGhlciwgICAgICAvKiBTWF9TVl9ZRVMgbm90IHN1cHBvcnRlZCAqLwotKyAgICAoc3ZfcmV0cmll dmVfdClyZXRyaWV2ZV9vdGhlciwgICAgICAvKiBTWF9TVl9OTyBub3Qgc3VwcG9ydGVkICovCi0r ICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLCAgICAgIC8qIFNYX0JMRVNTIG5vdCBz dXBwb3J0ZWQgKi8KLSsgICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsICAgICAgLyog U1hfSVhfQkxFU1Mgbm90IHN1cHBvcnRlZCAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2 ZV9vdGhlciwgICAgICAvKiBTWF9IT09LIG5vdCBzdXBwb3J0ZWQgKi8KLSsgICAgKHN2X3JldHJp ZXZlX3QpcmV0cmlldmVfb3RoZXIsICAgICAgLyogU1hfT1ZFUkxPQURFRCBub3Qgc3VwcG9ydGVk ICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLCAgICAgIC8qIFNYX1RJRURf S0VZIG5vdCBzdXBwb3J0ZWQgKi8KLSsgICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3RoZXIs ICAgICAgLyogU1hfVElFRF9JRFggbm90IHN1cHBvcnRlZCAqLwotKyAgICAoc3ZfcmV0cmlldmVf dClyZXRyaWV2ZV9vdGhlciwgICAgICAvKiBTWF9VVEY4U1RSIG5vdCBzdXBwb3J0ZWQgKi8KLSsg ICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsICAgICAgLyogU1hfTFVURjhTVFIgbm90 IHN1cHBvcnRlZCAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9vdGhlciwgICAgICAv KiBTWF9GTEFHX0hBU0ggbm90IHN1cHBvcnRlZCAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRy aWV2ZV9vdGhlciwgICAgICAvKiBTWF9DT0RFIG5vdCBzdXBwb3J0ZWQgKi8KLSsgICAgKHN2X3Jl dHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsICAgICAgLyogU1hfV0VBS1JFRiBub3Qgc3VwcG9ydGVk ICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLCAgICAgIC8qIFNYX1dFQUtP VkVSTE9BRCBub3Qgc3VwcG9ydGVkICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290 aGVyLCAgICAgIC8qIFNYX1ZTVFJJTkcgbm90IHN1cHBvcnRlZCAqLwotKyAgICAoc3ZfcmV0cmll dmVfdClyZXRyaWV2ZV9vdGhlciwgICAgICAvKiBTWF9MVlNUUklORyBub3Qgc3VwcG9ydGVkICov Ci0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLCAgICAgIC8qIFNYX1NWVU5ERUZf RUxFTSBub3Qgc3VwcG9ydGVkICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVy LCAgICAgIC8qIFNYX1JFR0VYUCAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9vdGhl ciwgICAgICAvKiBTWF9MT0JKRUNUIG5vdCBzdXBwb3J0ZWQgKi8KLSsgICAgKHN2X3JldHJpZXZl X3QpcmV0cmlldmVfb3RoZXIsICAgICAgLyogU1hfQk9PTEVBTl9UUlVFIG5vdCBzdXBwb3J0ZWQg Ki8KLSsgICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3RoZXIsICAgICAgLyogU1hfQk9PTEVB Tl9GQUxTRSBub3Qgc3VwcG9ydGVkICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290 aGVyLCAgICAgIC8qIFNYX0xBU1QgKi8KLSB9OwotIAotIHN0YXRpYyBTViAqcmV0cmlldmVfaG9v a19jb21tb24ocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSwgaW50IGxhcmdl KTsKLUBAIC0xNDgwLDQzICsxNDgxLDQzIEBAIHN0YXRpYyBTViAqcmV0cmlldmVfYm9vbGVhbl90 cnVlKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUpOwotIHN0YXRpYyBTViAq cmV0cmlldmVfYm9vbGVhbl9mYWxzZShwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNu YW1lKTsKLSAKLSBzdGF0aWMgY29uc3Qgc3ZfcmV0cmlldmVfdCBzdl9yZXRyaWV2ZVtdID0gewot LSAgICAwLAkJCQkJLyogU1hfT0JKRUNUIC0tIGVudHJ5IHVudXNlZCBkeW5hbWljYWxseSAqLwot LSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9sc2NhbGFyLAkvKiBTWF9MU0NBTEFSICovCi0t ICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2FycmF5LAkvKiBTWF9BUlJBWSAqLwotLSAgICAo c3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9oYXNoLAkvKiBTWF9IQVNIICovCi0tICAgIChzdl9yZXRy aWV2ZV90KXJldHJpZXZlX3JlZiwJLyogU1hfUkVGICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJl dHJpZXZlX3VuZGVmLAkvKiBTWF9VTkRFRiAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2 ZV9pbnRlZ2VyLAkvKiBTWF9JTlRFR0VSICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZl X2RvdWJsZSwJLyogU1hfRE9VQkxFICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2J5 dGUsCS8qIFNYX0JZVEUgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfbmV0aW50LAkv KiBTWF9ORVRJTlQgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfc2NhbGFyLAkvKiBT WF9TQ0FMQVIgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfdGllZF9hcnJheSwJLyog U1hfVElFRF9BUlJBWSAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV90aWVkX2hhc2gs CS8qIFNYX1RJRURfSEFTSCAqLwotKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBTWF9PQkpFQ1QgLS0gZW50cnkgdW51c2VkIGR5bmFtaWNhbGx5ICovCi0rICAgIChz dl9yZXRyaWV2ZV90KXJldHJpZXZlX2xzY2FsYXIsICAgIC8qIFNYX0xTQ0FMQVIgKi8KLSsgICAg KHN2X3JldHJpZXZlX3QpcmV0cmlldmVfYXJyYXksICAgICAgLyogU1hfQVJSQVkgKi8KLSsgICAg KHN2X3JldHJpZXZlX3QpcmV0cmlldmVfaGFzaCwgICAgICAgLyogU1hfSEFTSCAqLwotKyAgICAo c3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9yZWYsICAgICAgICAvKiBTWF9SRUYgKi8KLSsgICAgKHN2 X3JldHJpZXZlX3QpcmV0cmlldmVfdW5kZWYsICAgICAgLyogU1hfVU5ERUYgKi8KLSsgICAgKHN2 X3JldHJpZXZlX3QpcmV0cmlldmVfaW50ZWdlciwgICAgLyogU1hfSU5URUdFUiAqLwotKyAgICAo c3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9kb3VibGUsICAgICAvKiBTWF9ET1VCTEUgKi8KLSsgICAg KHN2X3JldHJpZXZlX3QpcmV0cmlldmVfYnl0ZSwgICAgICAgLyogU1hfQllURSAqLwotKyAgICAo c3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9uZXRpbnQsICAgICAvKiBTWF9ORVRJTlQgKi8KLSsgICAg KHN2X3JldHJpZXZlX3QpcmV0cmlldmVfc2NhbGFyLCAgICAgLyogU1hfU0NBTEFSICovCi0rICAg IChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX3RpZWRfYXJyYXksIC8qIFNYX1RJRURfQVJSQVkgKi8K LSsgICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfdGllZF9oYXNoLCAgLyogU1hfVElFRF9IQVNI ICovCi0gICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX3RpZWRfc2NhbGFyLC8qIFNYX1RJRURf U0NBTEFSICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX3N2X3VuZGVmLAkvKiBTWF9T Vl9VTkRFRiAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9zdl95ZXMsCS8qIFNYX1NW X1lFUyAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9zdl9ubywJLyogU1hfU1ZfTk8g Ki8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfYmxlc3NlZCwJLyogU1hfQkxFU1MgKi8K LSsgICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfc3ZfdW5kZWYsICAgLyogU1hfU1ZfVU5ERUYg Ki8KLSsgICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfc3ZfeWVzLCAgICAgLyogU1hfU1ZfWUVT ICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX3N2X25vLCAgICAgIC8qIFNYX1NWX05P ICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2JsZXNzZWQsICAgIC8qIFNYX0JMRVNT ICovCi0gICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2lkeF9ibGVzc2VkLC8qIFNYX0lYX0JM RVNTICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2hvb2ssCS8qIFNYX0hPT0sgKi8K LS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfb3ZlcmxvYWRlZCwJLyogU1hfT1ZFUkxPQUQg Ki8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfdGllZF9rZXksCS8qIFNYX1RJRURfS0VZ ICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX3RpZWRfaWR4LAkvKiBTWF9USUVEX0lE WCAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV91dGY4c3RyLAkvKiBTWF9VVEY4U1RS ICAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9sdXRmOHN0ciwJLyogU1hfTFVURjhT VFIgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfZmxhZ19oYXNoLAkvKiBTWF9IQVNI ICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2NvZGUsCS8qIFNYX0NPREUgKi8KLS0g ICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfd2Vha3JlZiwJLyogU1hfV0VBS1JFRiAqLwotKyAg ICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV9ob29rLCAgICAgICAvKiBTWF9IT09LICovCi0rICAg IChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX292ZXJsb2FkZWQsIC8qIFNYX09WRVJMT0FEICovCi0r ICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX3RpZWRfa2V5LCAgIC8qIFNYX1RJRURfS0VZICov Ci0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX3RpZWRfaWR4LCAgIC8qIFNYX1RJRURfSURY ICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX3V0ZjhzdHIsICAgIC8qIFNYX1VURjhT VFIgICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2x1dGY4c3RyLCAgIC8qIFNYX0xV VEY4U1RSICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2ZsYWdfaGFzaCwgIC8qIFNY X0hBU0ggKi8KLSsgICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfY29kZSwgICAgICAgLyogU1hf Q09ERSAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV93ZWFrcmVmLCAgICAvKiBTWF9X RUFLUkVGICovCi0gICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX3dlYWtvdmVybG9hZGVkLC8q IFNYX1dFQUtPVkVSTE9BRCAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV92c3RyaW5n LAkvKiBTWF9WU1RSSU5HICovCi0tICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2x2c3RyaW5n LAkvKiBTWF9MVlNUUklORyAqLwotKyAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2ZV92c3RyaW5n LCAgICAvKiBTWF9WU1RSSU5HICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX2x2c3Ry aW5nLCAgIC8qIFNYX0xWU1RSSU5HICovCi0gICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX3N2 dW5kZWZfZWxlbSwvKiBTWF9TVlVOREVGX0VMRU0gKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0 cmlldmVfcmVnZXhwLAkvKiBTWF9SRUdFWFAgKi8KLS0gICAgKHN2X3JldHJpZXZlX3QpcmV0cmll dmVfbG9iamVjdCwJLyogU1hfTE9CSkVDVCAqLwotLSAgICAoc3ZfcmV0cmlldmVfdClyZXRyaWV2 ZV9ib29sZWFuX3RydWUsCS8qIFNYX0JPT0xFQU5fVFJVRSAqLwotLSAgICAoc3ZfcmV0cmlldmVf dClyZXRyaWV2ZV9ib29sZWFuX2ZhbHNlLAkvKiBTWF9CT09MRUFOX0ZBTFNFICovCi0tICAgIChz dl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVyLCAgCS8qIFNYX0xBU1QgKi8KLSsgICAgKHN2X3Jl dHJpZXZlX3QpcmV0cmlldmVfcmVnZXhwLCAgICAgLyogU1hfUkVHRVhQICovCi0rICAgIChzdl9y ZXRyaWV2ZV90KXJldHJpZXZlX2xvYmplY3QsICAgIC8qIFNYX0xPQkpFQ1QgKi8KLSsgICAgKHN2 X3JldHJpZXZlX3QpcmV0cmlldmVfYm9vbGVhbl90cnVlLCAgICAgICAvKiBTWF9CT09MRUFOX1RS VUUgKi8KLSsgICAgKHN2X3JldHJpZXZlX3QpcmV0cmlldmVfYm9vbGVhbl9mYWxzZSwgICAgICAv KiBTWF9CT09MRUFOX0ZBTFNFICovCi0rICAgIChzdl9yZXRyaWV2ZV90KXJldHJpZXZlX290aGVy LCAgICAgIC8qIFNYX0xBU1QgKi8KLSB9OwotIAotICNkZWZpbmUgUkVUUklFVkUoYyx4KSAoKHgp ID49IFNYX0xBU1QgPyByZXRyaWV2ZV9vdGhlciA6ICooYyktPnJldHJpZXZlX3Z0YmxbeF0pCi1A QCAtMTUzNiw4ICsxNTM3LDggQEAgc3RhdGljIHZvaWQgaW5pdF9wZXJpbnRlcnAocFRIWCkKLSB7 Ci0gICAgIElOSVRfU1RDWFQ7Ci0gICAgIElOSVRfVFJBQ0VNRTsKLS0gICAgY3h0LT5uZXRvcmRl ciA9IDA7CQkvKiB0cnVlIGlmIG5ldHdvcmsgb3JkZXIgdXNlZCAqLwotLSAgICBjeHQtPmZvcmdp dmVfbWUgPSAtMTsJLyogd2hldGhlciB0byBiZSBmb3JnaXZpbmcuLi4gKi8KLSsgICAgY3h0LT5u ZXRvcmRlciA9IDA7ICAgICAgICAgIC8qIHRydWUgaWYgbmV0d29yayBvcmRlciB1c2VkICovCi0r ICAgIGN4dC0+Zm9yZ2l2ZV9tZSA9IC0xOyAgICAgICAvKiB3aGV0aGVyIHRvIGJlIGZvcmdpdmlu Zy4uLiAqLwotICAgICBjeHQtPmFjY2VwdF9mdXR1cmVfbWlub3IgPSAtMTsgLyogd291bGQgb3Ro ZXJ3aXNlIG9jY3VyIHRvbyBsYXRlICovCi0gfQotIAotQEAgLTE1NTMsNyArMTU1NCw3IEBAIHN0 YXRpYyB2b2lkIHJlc2V0X2NvbnRleHQoc3RjeHRfdCAqY3h0KQotICAgICBjeHQtPnNfZGlydHkg PSAwOwotICAgICBjeHQtPnJlY3VyX3N2ID0gTlVMTDsKLSAgICAgY3h0LT5yZWN1cl9kZXB0aCA9 IDA7Ci0tICAgIGN4dC0+b3B0eXBlICY9IH4oU1RfU1RPUkV8U1RfUkVUUklFVkUpOwkvKiBMZWF2 ZSBTVF9DTE9ORSBhbG9uZSAqLwotKyAgICBjeHQtPm9wdHlwZSAmPSB+KFNUX1NUT1JFfFNUX1JF VFJJRVZFKTsgICAgIC8qIExlYXZlIFNUX0NMT05FIGFsb25lICovCi0gfQotIAotIC8qCi1AQCAt MTU2Miw3ICsxNTYzLDcgQEAgc3RhdGljIHZvaWQgcmVzZXRfY29udGV4dChzdGN4dF90ICpjeHQp Ci0gICogSW5pdGlhbGl6ZSBhIG5ldyBzdG9yZSBjb250ZXh0IGZvciByZWFsIHJlY3Vyc2lvbi4K LSAgKi8KLSBzdGF0aWMgdm9pZCBpbml0X3N0b3JlX2NvbnRleHQocFRIWF8KLS0Jc3RjeHRfdCAq Y3h0LAotKyAgICAgICAgc3RjeHRfdCAqY3h0LAotICAgICAgICAgUGVybElPICpmLAotICAgICAg ICAgaW50IG9wdHlwZSwKLSAgICAgICAgIGludCBuZXR3b3JrX29yZGVyKQotQEAgLTE1NzIsMTUg KzE1NzMsMTUgQEAgc3RhdGljIHZvaWQgaW5pdF9zdG9yZV9jb250ZXh0KHBUSFhfCi0gICAgIFRS QUNFTUUoKCJpbml0X3N0b3JlX2NvbnRleHQiKSk7Ci0gCi0gICAgIGN4dC0+bmV0b3JkZXIgPSBu ZXR3b3JrX29yZGVyOwotLSAgICBjeHQtPmZvcmdpdmVfbWUgPSAtMTsJCS8qIEZldGNoZWQgZnJv bSBwZXJsIGlmIG5lZWRlZCAqLwotLSAgICBjeHQtPmRlcGFyc2UgPSAtMTsJCQkvKiBJZGVtICov Ci0tICAgIGN4dC0+ZXZhbCA9IE5VTEw7CQkJLyogSWRlbSAqLwotLSAgICBjeHQtPmNhbm9uaWNh bCA9IC0xOwkJLyogSWRlbSAqLwotLSAgICBjeHQtPnRhZ251bSA9IC0xOwkJCS8qIFJlc2V0IHRh ZyBudW1iZXJzICovCi0tICAgIGN4dC0+Y2xhc3NudW0gPSAtMTsJCQkvKiBSZXNldCBjbGFzcyBu dW1iZXJzICovCi0tICAgIGN4dC0+ZmlvID0gZjsJCQkvKiBXaGVyZSBJL08gYXJlIHBlcmZvcm1l ZCAqLwotLSAgICBjeHQtPm9wdHlwZSA9IG9wdHlwZTsJCS8qIEEgc3RvcmUsIG9yIGEgZGVlcCBj bG9uZSAqLwotLSAgICBjeHQtPmVudHJ5ID0gMTsJCQkvKiBObyByZWN1cnNpb24geWV0ICovCi0r ICAgIGN4dC0+Zm9yZ2l2ZV9tZSA9IC0xOyAgICAgICAgICAgICAgIC8qIEZldGNoZWQgZnJvbSBw ZXJsIGlmIG5lZWRlZCAqLwotKyAgICBjeHQtPmRlcGFyc2UgPSAtMTsgICAgICAgICAgICAgICAg ICAvKiBJZGVtICovCi0rICAgIGN4dC0+ZXZhbCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgIC8q IElkZW0gKi8KLSsgICAgY3h0LT5jYW5vbmljYWwgPSAtMTsgICAgICAgICAgICAgICAgLyogSWRl bSAqLwotKyAgICBjeHQtPnRhZ251bSA9IC0xOyAgICAgICAgICAgICAgICAgICAvKiBSZXNldCB0 YWcgbnVtYmVycyAqLwotKyAgICBjeHQtPmNsYXNzbnVtID0gLTE7ICAgICAgICAgICAgICAgICAv KiBSZXNldCBjbGFzcyBudW1iZXJzICovCi0rICAgIGN4dC0+ZmlvID0gZjsgICAgICAgICAgICAg ICAgICAgICAgIC8qIFdoZXJlIEkvTyBhcmUgcGVyZm9ybWVkICovCi0rICAgIGN4dC0+b3B0eXBl ID0gb3B0eXBlOyAgICAgICAgICAgICAgIC8qIEEgc3RvcmUsIG9yIGEgZGVlcCBjbG9uZSAqLwot KyAgICBjeHQtPmVudHJ5ID0gMTsgICAgICAgICAgICAgICAgICAgICAvKiBObyByZWN1cnNpb24g eWV0ICovCi0gCi0gICAgIC8qCi0gICAgICAqIFRoZSAnaHNlZW4nIHRhYmxlIGlzIHVzZWQgdG8g a2VlcCB0cmFjayBvZiBlYWNoIFNWIHN0b3JlZCBhbmQgdGhlaXIKLUBAIC0xNTk4LDcgKzE1OTks NyBAQCBzdGF0aWMgdm9pZCBpbml0X3N0b3JlX2NvbnRleHQocFRIWF8KLSAgICAgY3h0LT5wc2Vl biA9IHB0cl90YWJsZV9uZXcoKTsKLSAgICAgY3h0LT5oc2VlbiA9IDA7Ci0gI2Vsc2UKLS0gICAg Y3h0LT5oc2VlbiA9IG5ld0hWKCk7CS8qIFRhYmxlIHdoZXJlIHNlZW4gb2JqZWN0cyBhcmUgc3Rv cmVkICovCi0rICAgIGN4dC0+aHNlZW4gPSBuZXdIVigpOyAgICAgICAvKiBUYWJsZSB3aGVyZSBz ZWVuIG9iamVjdHMgYXJlIHN0b3JlZCAqLwotICAgICBIdlNIQVJFS0VZU19vZmYoY3h0LT5oc2Vl bik7Ci0gI2VuZGlmCi0gICAgIC8qCi1AQCAtMTYxNyw5ICsxNjE4LDkgQEAgc3RhdGljIHZvaWQg aW5pdF9zdG9yZV9jb250ZXh0KHBUSFhfCi0gICAgICAqCi0gICAgICAqIEl0IGlzIHJlcG9ydGVk IGZpeGVkIGluIDUuMDA1LCBoZW5jZSB0aGUgI2lmLgotICAgICAgKi8KLS0jZGVmaW5lIEhCVUNL RVRTCTQwOTYJCS8qIEJ1Y2tldHMgZm9yICVoc2VlbiAqLwotKyNkZWZpbmUgSEJVQ0tFVFMgICAg ICAgIDQwOTYgICAgICAgICAgICAvKiBCdWNrZXRzIGZvciAlaHNlZW4gKi8KLSAjaWZuZGVmIFVT RV9QVFJfVEFCTEUKLS0gICAgSHZNQVgoY3h0LT5oc2VlbikgPSBIQlVDS0VUUyAtIDE7CS8qIGtl eXMgJWhzZWVuID0gJEhCVUNLRVRTOyAqLwotKyAgICBIdk1BWChjeHQtPmhzZWVuKSA9IEhCVUNL RVRTIC0gMTsgICAvKiBrZXlzICVoc2VlbiA9ICRIQlVDS0VUUzsgKi8KLSAjZW5kaWYKLSAKLSAg ICAgLyoKLUBAIC0xNjMwLDkgKzE2MzEsOSBAQCBzdGF0aWMgdm9pZCBpbml0X3N0b3JlX2NvbnRl eHQocFRIWF8KLSAgICAgICogV2UgdHVybiB0aGUgc2hhcmVkIGtleSBvcHRpbWl6YXRpb24gb24u Ci0gICAgICAqLwotIAotLSAgICBjeHQtPmhjbGFzcyA9IG5ld0hWKCk7CQkvKiBXaGVyZSBzZWVu IGNsYXNzbmFtZXMgYXJlIHN0b3JlZCAqLwotKyAgICBjeHQtPmhjbGFzcyA9IG5ld0hWKCk7ICAg ICAgICAgICAgICAvKiBXaGVyZSBzZWVuIGNsYXNzbmFtZXMgYXJlIHN0b3JlZCAqLwotIAotLSAg ICBIdk1BWChjeHQtPmhjbGFzcykgPSBIQlVDS0VUUyAtIDE7CS8qIGtleXMgJWhjbGFzcyA9ICRI QlVDS0VUUzsgKi8KLSsgICAgSHZNQVgoY3h0LT5oY2xhc3MpID0gSEJVQ0tFVFMgLSAxOyAgLyog a2V5cyAlaGNsYXNzID0gJEhCVUNLRVRTOyAqLwotIAotICAgICAvKgotICAgICAgKiBUaGUgJ2hv b2snIGhhc2ggdGFibGUgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSByZWZlcmVuY2VzIG9u Ci1AQCAtMTY0Myw3ICsxNjQ0LDcgQEAgc3RhdGljIHZvaWQgaW5pdF9zdG9yZV9jb250ZXh0KHBU SFhfCi0gICAgICAqIGhvb2tzLgotICAgICAgKi8KLSAKLS0gICAgY3h0LT5ob29rID0gbmV3SFYo KTsJCS8qIFRhYmxlIHdoZXJlIGhvb2tzIGFyZSBjYWNoZWQgKi8KLSsgICAgY3h0LT5ob29rID0g bmV3SFYoKTsgICAgICAgICAgICAgICAgLyogVGFibGUgd2hlcmUgaG9va3MgYXJlIGNhY2hlZCAq LwotIAotICAgICAvKgotICAgICAgKiBUaGUgJ2hvb2tfc2VlbicgYXJyYXkga2VlcHMgdHJhY2sg b2YgYWxsIHRoZSBTVnMgcmV0dXJuZWQgYnkKLUBAIC0xNjc4LDcgKzE2NzksNyBAQCBzdGF0aWMg dm9pZCBjbGVhbl9zdG9yZV9jb250ZXh0KHBUSFhfIHN0Y3h0X3QgKmN4dCkKLSAjaWZuZGVmIFVT RV9QVFJfVEFCTEUKLSAgICAgaWYgKGN4dC0+aHNlZW4pIHsKLSAgICAgICAgIGh2X2l0ZXJpbml0 KGN4dC0+aHNlZW4pOwotLSAgICAgICAgd2hpbGUgKChoZSA9IGh2X2l0ZXJuZXh0KGN4dC0+aHNl ZW4pKSkJLyogRXh0cmEgKCkgZm9yIC1XYWxsICovCi0rICAgICAgICB3aGlsZSAoKGhlID0gaHZf aXRlcm5leHQoY3h0LT5oc2VlbikpKSAgLyogRXh0cmEgKCkgZm9yIC1XYWxsICovCi0gICAgICAg ICAgICAgSGVWQUwoaGUpID0gJlBMX3N2X3VuZGVmOwotICAgICB9Ci0gI2VuZGlmCi1AQCAtMTY5 Niw3ICsxNjk3LDcgQEAgc3RhdGljIHZvaWQgY2xlYW5fc3RvcmVfY29udGV4dChwVEhYXyBzdGN4 dF90ICpjeHQpCi0gICAgICAqIHNvbWUgY2FzZXMgd2hlcmUgdGhpcyByb3V0aW5lIGlzIGNhbGxl ZCBtb3JlIHRoYW4gb25jZSwgZHVyaW5nCi0gICAgICAqIGV4Y2VwdGlvbmFsIGV2ZW50cy4gIFRo aXMgd2FzIHJlcG9ydGVkIGJ5IE1hcmMgTGVobWFubiB3aGVuIFN0b3JhYmxlCi0gICAgICAqIGlz IGV4ZWN1dGVkIGZyb20gbW9kX3BlcmwsIGFuZCB0aGUgZml4IHdhcyBzdWdnZXN0ZWQgYnkgaGlt LgotLSAgICAgKiAJCS0tIFJBTSwgMjAvMTIvMjAwMAotKyAgICAgKiAgICAgICAgICAtLSBSQU0s IDIwLzEyLzIwMDAKLSAgICAgICovCi0gCi0gI2lmZGVmIFVTRV9QVFJfVEFCTEUKLUBAIC0xNzM2 LDEzICsxNzM3LDEzIEBAIHN0YXRpYyB2b2lkIGNsZWFuX3N0b3JlX2NvbnRleHQocFRIWF8gc3Rj eHRfdCAqY3h0KQotICAgICAgICAgc3ZfZnJlZSgoU1YgKikgaG9va19zZWVuKTsKLSAgICAgfQot IAotLSAgICBjeHQtPmZvcmdpdmVfbWUgPSAtMTsJLyogRmV0Y2hlZCBmcm9tIHBlcmwgaWYgbmVl ZGVkICovCi0tICAgIGN4dC0+ZGVwYXJzZSA9IC0xOwkJLyogSWRlbSAqLwotKyAgICBjeHQtPmZv cmdpdmVfbWUgPSAtMTsgICAgICAgLyogRmV0Y2hlZCBmcm9tIHBlcmwgaWYgbmVlZGVkICovCi0r ICAgIGN4dC0+ZGVwYXJzZSA9IC0xOyAgICAgICAgICAvKiBJZGVtICovCi0gICAgIGlmIChjeHQt PmV2YWwpIHsKLSAgICAgICAgIFN2UkVGQ05UX2RlYyhjeHQtPmV2YWwpOwotICAgICB9Ci0tICAg IGN4dC0+ZXZhbCA9IE5VTEw7CQkvKiBJZGVtICovCi0tICAgIGN4dC0+Y2Fub25pY2FsID0gLTE7 CS8qIElkZW0gKi8KLSsgICAgY3h0LT5ldmFsID0gTlVMTDsgICAgICAgICAgIC8qIElkZW0gKi8K LSsgICAgY3h0LT5jYW5vbmljYWwgPSAtMTsgICAgICAgIC8qIElkZW0gKi8KLSAKLSAgICAgcmVz ZXRfY29udGV4dChjeHQpOwotIH0KLUBAIC0xNzUzLDcgKzE3NTQsNyBAQCBzdGF0aWMgdm9pZCBj bGVhbl9zdG9yZV9jb250ZXh0KHBUSFhfIHN0Y3h0X3QgKmN4dCkKLSAgKiBJbml0aWFsaXplIGEg bmV3IHJldHJpZXZlIGNvbnRleHQgZm9yIHJlYWwgcmVjdXJzaW9uLgotICAqLwotIHN0YXRpYyB2 b2lkIGluaXRfcmV0cmlldmVfY29udGV4dChwVEhYXwotLQlzdGN4dF90ICpjeHQsIGludCBvcHR5 cGUsIGludCBpc190YWludGVkKQotKyAgICAgICAgc3RjeHRfdCAqY3h0LCBpbnQgb3B0eXBlLCBp bnQgaXNfdGFpbnRlZCkKLSB7Ci0gICAgIElOSVRfVFJBQ0VNRTsKLSAKLUBAIC0xNzY4LDcgKzE3 NjksNyBAQCBzdGF0aWMgdm9pZCBpbml0X3JldHJpZXZlX2NvbnRleHQocFRIWF8KLSAgICAgICog aG9va3MuCi0gICAgICAqLwotIAotLSAgICBjeHQtPmhvb2sgID0gbmV3SFYoKTsJCQkvKiBDYWNo ZXMgU1RPUkFCTEVfdGhhdyAqLwotKyAgICBjeHQtPmhvb2sgID0gbmV3SFYoKTsgICAgICAgICAg ICAgICAgICAgICAgIC8qIENhY2hlcyBTVE9SQUJMRV90aGF3ICovCi0gCi0gI2lmZGVmIFVTRV9Q VFJfVEFCTEUKLSAgICAgY3h0LT5wc2VlbiA9IDA7Ci1AQCAtMTc4NCwxOSArMTc4NSwxOSBAQCBz dGF0aWMgdm9pZCBpbml0X3JldHJpZXZlX2NvbnRleHQocFRIWF8KLSAgICAgY3h0LT5oc2VlbiA9 ICgoKHZvaWQqKWN4dC0+cmV0cmlldmVfdnRibCA9PSAodm9pZCopc3Zfb2xkX3JldHJpZXZlKQot ICAgICAgICAgICAgICAgICAgID8gbmV3SFYoKSA6IDApOwotIAotLSAgICBjeHQtPmFzZWVuID0g bmV3QVYoKTsJLyogV2hlcmUgcmV0cmlldmVkIG9iamVjdHMgYXJlIGtlcHQgKi8KLS0gICAgY3h0 LT53aGVyZV9pc191bmRlZiA9IFVOU0VUX05UQUdfVDsJLyogU3BlY2lhbCBjYXNlIGZvciBQTF9z dl91bmRlZiAqLwotLSAgICBjeHQtPmFjbGFzcyA9IG5ld0FWKCk7CS8qIFdoZXJlIHNlZW4gY2xh c3NuYW1lcyBhcmUga2VwdCAqLwotLSAgICBjeHQtPnRhZ251bSA9IDA7CQkvKiBIYXZlIHRvIGNv dW50IG9iamVjdHMuLi4gKi8KLS0gICAgY3h0LT5jbGFzc251bSA9IDA7CQkvKiAuLi5hbmQgY2xh c3MgbmFtZXMgYXMgd2VsbCAqLwotKyAgICBjeHQtPmFzZWVuID0gbmV3QVYoKTsgICAgICAgLyog V2hlcmUgcmV0cmlldmVkIG9iamVjdHMgYXJlIGtlcHQgKi8KLSsgICAgY3h0LT53aGVyZV9pc191 bmRlZiA9IFVOU0VUX05UQUdfVDsgLyogU3BlY2lhbCBjYXNlIGZvciBQTF9zdl91bmRlZiAqLwot KyAgICBjeHQtPmFjbGFzcyA9IG5ld0FWKCk7ICAgICAgLyogV2hlcmUgc2VlbiBjbGFzc25hbWVz IGFyZSBrZXB0ICovCi0rICAgIGN4dC0+dGFnbnVtID0gMDsgICAgICAgICAgICAvKiBIYXZlIHRv IGNvdW50IG9iamVjdHMuLi4gKi8KLSsgICAgY3h0LT5jbGFzc251bSA9IDA7ICAgICAgICAgIC8q IC4uLmFuZCBjbGFzcyBuYW1lcyBhcyB3ZWxsICovCi0gICAgIGN4dC0+b3B0eXBlID0gb3B0eXBl OwotICAgICBjeHQtPnNfdGFpbnRlZCA9IGlzX3RhaW50ZWQ7Ci0tICAgIGN4dC0+ZW50cnkgPSAx OwkJLyogTm8gcmVjdXJzaW9uIHlldCAqLwotKyAgICBjeHQtPmVudHJ5ID0gMTsgICAgICAgICAg ICAgLyogTm8gcmVjdXJzaW9uIHlldCAqLwotICNpZm5kZWYgSEFTX1JFU1RSSUNURURfSEFTSEVT Ci0tICAgIGN4dC0+ZGVyZXN0cmljdCA9IC0xOwkvKiBGZXRjaGVkIGZyb20gcGVybCBpZiBuZWVk ZWQgKi8KLSsgICAgY3h0LT5kZXJlc3RyaWN0ID0gLTE7ICAgICAgIC8qIEZldGNoZWQgZnJvbSBw ZXJsIGlmIG5lZWRlZCAqLwotICNlbmRpZgotICNpZm5kZWYgSEFTX1VURjhfQUxMCi0tICAgIGN4 dC0+dXNlX2J5dGVzID0gLTE7CS8qIEZldGNoZWQgZnJvbSBwZXJsIGlmIG5lZWRlZCAqLwotKyAg ICBjeHQtPnVzZV9ieXRlcyA9IC0xOyAgICAgICAgLyogRmV0Y2hlZCBmcm9tIHBlcmwgaWYgbmVl ZGVkICovCi0gI2VuZGlmCi0gICAgIGN4dC0+YWNjZXB0X2Z1dHVyZV9taW5vciA9IC0xOy8qIEZl dGNoZWQgZnJvbSBwZXJsIGlmIG5lZWRlZCAqLwotICAgICBjeHQtPmluX3JldHJpZXZlX292ZXJs b2FkZWQgPSAwOwotQEAgLTE4NDIsMTYgKzE4NDMsMTYgQEAgc3RhdGljIHZvaWQgY2xlYW5fcmV0 cmlldmVfY29udGV4dChwVEhYXyBzdGN4dF90ICpjeHQpCi0gICAgICAgICBIViAqaHNlZW4gPSBj eHQtPmhzZWVuOwotICAgICAgICAgY3h0LT5oc2VlbiA9IDA7Ci0gICAgICAgICBodl91bmRlZiho c2Vlbik7Ci0tICAgICAgICBzdl9mcmVlKChTViAqKSBoc2Vlbik7CS8qIG9wdGlvbmFsIEhWLCBm b3IgYmFja3dhcmQgY29tcGF0LiAqLwotKyAgICAgICAgc3ZfZnJlZSgoU1YgKikgaHNlZW4pOyAg Lyogb3B0aW9uYWwgSFYsIGZvciBiYWNrd2FyZCBjb21wYXQuICovCi0gICAgIH0KLSAKLSAjaWZu ZGVmIEhBU19SRVNUUklDVEVEX0hBU0hFUwotLSAgICBjeHQtPmRlcmVzdHJpY3QgPSAtMTsJCS8q IEZldGNoZWQgZnJvbSBwZXJsIGlmIG5lZWRlZCAqLwotKyAgICBjeHQtPmRlcmVzdHJpY3QgPSAt MTsgICAgICAgICAgICAgICAvKiBGZXRjaGVkIGZyb20gcGVybCBpZiBuZWVkZWQgKi8KLSAjZW5k aWYKLSAjaWZuZGVmIEhBU19VVEY4X0FMTAotLSAgICBjeHQtPnVzZV9ieXRlcyA9IC0xOwkJLyog RmV0Y2hlZCBmcm9tIHBlcmwgaWYgbmVlZGVkICovCi0rICAgIGN4dC0+dXNlX2J5dGVzID0gLTE7 ICAgICAgICAgICAgICAgIC8qIEZldGNoZWQgZnJvbSBwZXJsIGlmIG5lZWRlZCAqLwotICNlbmRp ZgotLSAgICBjeHQtPmFjY2VwdF9mdXR1cmVfbWlub3IgPSAtMTsJLyogRmV0Y2hlZCBmcm9tIHBl cmwgaWYgbmVlZGVkICovCi0rICAgIGN4dC0+YWNjZXB0X2Z1dHVyZV9taW5vciA9IC0xOyAgICAg IC8qIEZldGNoZWQgZnJvbSBwZXJsIGlmIG5lZWRlZCAqLwotIAotICAgICBjeHQtPmluX3JldHJp ZXZlX292ZXJsb2FkZWQgPSAwOwotICAgICByZXNldF9jb250ZXh0KGN4dCk7Ci1AQCAtMTk4OSw5 ICsxOTkwLDkgQEAgc3RhdGljIGludCBsYXN0X29wX2luX25ldG9yZGVyKHBUSFgpCi0gICogbm9y IGl0cyBhbmNlc3RvcnMga25vdyBhYm91dCB0aGUgbWV0aG9kLgotICAqLwotIHN0YXRpYyBTViAq cGtnX2ZldGNobWV0aChwVEhYXwotLQlIViAqY2FjaGUsCi0tCUhWICpwa2csCi0tCWNvbnN0IGNo YXIgKm1ldGhvZCkKLSsgICAgICAgIEhWICpjYWNoZSwKLSsgICAgICAgIEhWICpwa2csCi0rICAg ICAgICBjb25zdCBjaGFyICptZXRob2QpCi0gewotICAgICBHViAqZ3Y7Ci0gICAgIFNWICpzdjsK LUBAIC0yMDMwLDkgKzIwMzEsOSBAQCBzdGF0aWMgU1YgKnBrZ19mZXRjaG1ldGgocFRIWF8KLSAg KiBGb3JjZSBjYWNoZWQgdmFsdWUgdG8gYmUgdW5kZWY6IGhvb2sgaWdub3JlZCBldmVuIGlmIHBy ZXNlbnQuCi0gICovCi0gc3RhdGljIHZvaWQgcGtnX2hpZGUocFRIWF8KLS0JSFYgKmNhY2hlLAot LQlIViAqcGtnLAotLQljb25zdCBjaGFyICptZXRob2QpCi0rICAgICAgICBIViAqY2FjaGUsCi0r ICAgICAgICBIViAqcGtnLAotKyAgICAgICAgY29uc3QgY2hhciAqbWV0aG9kKQotIHsKLSAgICAg Y29uc3QgY2hhciAqaHZuYW1lID0gSHZOQU1FX2dldChwa2cpOwotICAgICBQRVJMX1VOVVNFRF9B UkcobWV0aG9kKTsKLUBAIC0yMDQ2LDkgKzIwNDcsOSBAQCBzdGF0aWMgdm9pZCBwa2dfaGlkZShw VEhYXwotICAqIERpc2NhcmQgY2FjaGVkIHZhbHVlOiBhIHdob2xlIGZldGNoIGxvb3Agd2lsbCBi ZSByZXRyaWVkIGF0IG5leHQgbG9va3VwLgotICAqLwotIHN0YXRpYyB2b2lkIHBrZ191bmNhY2hl KHBUSFhfCi0tCUhWICpjYWNoZSwKLS0JSFYgKnBrZywKLS0JY29uc3QgY2hhciAqbWV0aG9kKQot KyAgICAgICAgSFYgKmNhY2hlLAotKyAgICAgICAgSFYgKnBrZywKLSsgICAgICAgIGNvbnN0IGNo YXIgKm1ldGhvZCkKLSB7Ci0gICAgIGNvbnN0IGNoYXIgKmh2bmFtZSA9IEh2TkFNRV9nZXQocGtn KTsKLSAgICAgUEVSTF9VTlVTRURfQVJHKG1ldGhvZCk7Ci1AQCAtMjA2NCw5ICsyMDY1LDkgQEAg c3RhdGljIHZvaWQgcGtnX3VuY2FjaGUocFRIWF8KLSAgKiBrbm93IGFib3V0IHRoZSBtZXRob2Qu Ci0gICovCi0gc3RhdGljIFNWICpwa2dfY2FuKHBUSFhfCi0tCUhWICpjYWNoZSwKLS0JSFYgKnBr ZywKLS0JY29uc3QgY2hhciAqbWV0aG9kKQotKyAgICAgICAgSFYgKmNhY2hlLAotKyAgICAgICAg SFYgKnBrZywKLSsgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZCkKLSB7Ci0gICAgIFNWICoqc3Zo OwotICAgICBTViAqc3Y7Ci1AQCAtMjA5OSw3ICsyMTAwLDcgQEAgc3RhdGljIFNWICpwa2dfY2Fu KHBUSFhfCi0gICAgIH0KLSAKLSAgICAgVFJBQ0VNRSgoIm5vdCBjYWNoZWQgeWV0IikpOwotLSAg ICByZXR1cm4gcGtnX2ZldGNobWV0aChhVEhYXyBjYWNoZSwgcGtnLCBtZXRob2QpOwkvKiBGZXRj aCBhbmQgY2FjaGUgKi8KLSsgICAgcmV0dXJuIHBrZ19mZXRjaG1ldGgoYVRIWF8gY2FjaGUsIHBr ZywgbWV0aG9kKTsgICAgIC8qIEZldGNoIGFuZCBjYWNoZSAqLwotIH0KLSAKLSAvKgotQEAgLTIx MDksMTEgKzIxMTAsMTEgQEAgc3RhdGljIFNWICpwa2dfY2FuKHBUSFhfCi0gICogUHJvcGFnYXRl cyB0aGUgc2luZ2xlIHJldHVybmVkIHZhbHVlIGlmIG5vdCBjYWxsZWQgaW4gdm9pZCBjb250ZXh0 LgotICAqLwotIHN0YXRpYyBTViAqc2NhbGFyX2NhbGwocFRIWF8KLS0JU1YgKm9iaiwKLS0JU1Yg Kmhvb2ssCi0tCWludCBjbG9uaW5nLAotLQlBViAqYXYsCi0tCUkzMiBmbGFncykKLSsgICAgICAg IFNWICpvYmosCi0rICAgICAgICBTViAqaG9vaywKLSsgICAgICAgIGludCBjbG9uaW5nLAotKyAg ICAgICAgQVYgKmF2LAotKyAgICAgICAgSTMyIGZsYWdzKQotIHsKLSAgICAgZFNQOwotICAgICBp bnQgY291bnQ7Ci1AQCAtMjEyOSwxMiArMjEzMCwxMiBAQCBzdGF0aWMgU1YgKnNjYWxhcl9jYWxs KHBUSFhfCi0gCi0gICAgIFBVU0hNQVJLKHNwKTsKLSAgICAgWFBVU0hzKG9iaik7Ci0tICAgIFhQ VVNIcyhzdl8ybW9ydGFsKG5ld1NWaXYoY2xvbmluZykpKTsJCS8qIENsb25pbmcgZmxhZyAqLwot KyAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVml2KGNsb25pbmcpKSk7ICAgICAgICAgICAgICAg LyogQ2xvbmluZyBmbGFnICovCi0gICAgIGlmIChhdikgewotICAgICAgICAgU1YgKiphcnkgPSBB dkFSUkFZKGF2KTsKLSAgICAgICAgIFNTaXplX3QgY250ID0gQXZGSUxMcChhdikgKyAxOwotICAg ICAgICAgU1NpemVfdCBpOwotLSAgICAgICAgWFBVU0hzKGFyeVswXSk7CQkJCQkvKiBGcm96ZW4g c3RyaW5nICovCi0rICAgICAgICBYUFVTSHMoYXJ5WzBdKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiBGcm96ZW4gc3RyaW5nICovCi0gICAgICAgICBmb3IgKGkgPSAxOyBpIDwg Y250OyBpKyspIHsKLSAgICAgICAgICAgICBUUkFDRU1FKCgicHVzaGluZyBhcmcgIyVkICgweCUi IFVWeGYgIikuLi4iLAotICAgICAgICAgICAgICAgICAgICAgIChpbnQpaSwgUFRSMlVWKGFyeVtp XSkpKTsKLUBAIC0yMTQ0LDcgKzIxNDUsNyBAQCBzdGF0aWMgU1YgKnNjYWxhcl9jYWxsKHBUSFhf Ci0gICAgIFBVVEJBQ0s7Ci0gCi0gICAgIFRSQUNFTUUoKCJjYWxsaW5nLi4uIikpOwotLSAgICBj b3VudCA9IGNhbGxfc3YoaG9vaywgZmxhZ3MpOwkvKiBHbyBiYWNrIHRvIFBlcmwgY29kZSAqLwot KyAgICBjb3VudCA9IGNhbGxfc3YoaG9vaywgZmxhZ3MpOyAgICAgICAvKiBHbyBiYWNrIHRvIFBl cmwgY29kZSAqLwotICAgICBUUkFDRU1FKCgiY291bnQgPSAlZCIsIGNvdW50KSk7Ci0gCi0gICAg IFNQQUdBSU47Ci1AQCAtMjE2OCw5ICsyMTY5LDkgQEAgc3RhdGljIFNWICpzY2FsYXJfY2FsbChw VEhYXwotICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgcmV0dXJuZWQgdmFsdWVzIGluIGFuIGFycmF5 LgotICAqLwotIHN0YXRpYyBBViAqYXJyYXlfY2FsbChwVEhYXwotLQlTViAqb2JqLAotLQlTViAq aG9vaywKLS0JaW50IGNsb25pbmcpCi0rICAgICAgICBTViAqb2JqLAotKyAgICAgICAgU1YgKmhv b2ssCi0rICAgICAgICBpbnQgY2xvbmluZykKLSB7Ci0gICAgIGRTUDsKLSAgICAgaW50IGNvdW50 OwotQEAgLTIxODYsMTEgKzIxODcsMTEgQEAgc3RhdGljIEFWICphcnJheV9jYWxsKHBUSFhfCi0g ICAgIFNBVkVUTVBTOwotIAotICAgICBQVVNITUFSSyhzcCk7Ci0tICAgIFhQVVNIcyhvYmopOwkJ CQkvKiBUYXJnZXQgb2JqZWN0ICovCi0tICAgIFhQVVNIcyhzdl8ybW9ydGFsKG5ld1NWaXYoY2xv bmluZykpKTsJLyogQ2xvbmluZyBmbGFnICovCi0rICAgIFhQVVNIcyhvYmopOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogVGFyZ2V0IG9iamVjdCAqLwotKyAgICBYUFVTSHMoc3Zf Mm1vcnRhbChuZXdTVml2KGNsb25pbmcpKSk7ICAgICAgIC8qIENsb25pbmcgZmxhZyAqLwotICAg ICBQVVRCQUNLOwotIAotLSAgICBjb3VudCA9IGNhbGxfc3YoaG9vaywgR19MSVNUKTsJLyogR28g YmFjayB0byBQZXJsIGNvZGUgKi8KLSsgICAgY291bnQgPSBjYWxsX3N2KGhvb2ssIEdfTElTVCk7 ICAgICAgLyogR28gYmFjayB0byBQZXJsIGNvZGUgKi8KLSAKLSAgICAgU1BBR0FJTjsKLSAKLUBA IC0yMjgxLDEwICsyMjgyLDEwIEBAIGNsZWFudXBfcmVjdXJzaXZlX2RhdGEocFRIWF8gU1YqIHN2 KSB7Ci0gICogUmV0dXJuIHRydWUgaWYgdGhlIGNsYXNzIHdhcyBrbm93biwgZmFsc2UgaWYgdGhl IElEIHdhcyBqdXN0IGdlbmVyYXRlZC4KLSAgKi8KLSBzdGF0aWMgaW50IGtub3duX2NsYXNzKHBU SFhfCi0tCXN0Y3h0X3QgKmN4dCwKLS0JY2hhciAqbmFtZSwJCS8qIENsYXNzIG5hbWUgKi8KLS0J aW50IGxlbiwJCS8qIE5hbWUgbGVuZ3RoICovCi0tCUkzMiAqY2xhc3NudW0pCi0rICAgICAgICBz dGN4dF90ICpjeHQsCi0rICAgICAgICBjaGFyICpuYW1lLCAgICAgICAgICAgICAvKiBDbGFzcyBu YW1lICovCi0rICAgICAgICBpbnQgbGVuLCAgICAgICAgICAgICAgICAvKiBOYW1lIGxlbmd0aCAq LwotKyAgICAgICAgSTMyICpjbGFzc251bSkKLSB7Ci0gICAgIFNWICoqc3ZoOwotICAgICBIViAq aGNsYXNzID0gY3h0LT5oY2xhc3M7Ci1AQCAtMjM5NCw3ICsyMzk1LDcgQEAgc3RhdGljIGludCBz dG9yZV9zY2FsYXIocFRIWF8gc3RjeHRfdCAqY3h0LCBTViAqc3YpCi0gICAgIElWIGl2OwotICAg ICBjaGFyICpwdjsKLSAgICAgU1RSTEVOIGxlbjsKLS0gICAgVTMyIGZsYWdzID0gU3ZGTEFHUyhz dik7CS8qICJjYyAtTyIgbWF5IHB1dCBpdCBpbiByZWdpc3RlciAqLwotKyAgICBVMzIgZmxhZ3Mg PSBTdkZMQUdTKHN2KTsgICAgLyogImNjIC1PIiBtYXkgcHV0IGl0IGluIHJlZ2lzdGVyICovCi0g Ci0gICAgIFRSQUNFTUUoKCJzdG9yZV9zY2FsYXIgKDB4JSIgVVZ4ZiAiKSIsIFBUUjJVVihzdikp KTsKLSAKLUBAIC0yNDA0LDcgKzI0MDUsNyBAQCBzdGF0aWMgaW50IHN0b3JlX3NjYWxhcihwVEhY XyBzdGN4dF90ICpjeHQsIFNWICpzdikKLSAgICAgICogc3YtPnN2X2ZsYWdzIGVhY2ggdGltZSB3 ZSB3aXNoIHRvIGNoZWNrIHRoZSBmbGFncy4KLSAgICAgICovCi0gCi0tICAgIGlmICghKGZsYWdz ICYgU1ZmX09LKSkgewkJCS8qICFTdk9LKHN2KSAqLwotKyAgICBpZiAoIShmbGFncyAmIFNWZl9P SykpIHsgICAgICAgICAgICAgICAgICAgIC8qICFTdk9LKHN2KSAqLwotICAgICAgICAgaWYgKHN2 ID09ICZQTF9zdl91bmRlZikgewotICAgICAgICAgICAgIFRSQUNFTUUoKCJpbW1vcnRhbCB1bmRl ZiIpKTsKLSAgICAgICAgICAgICBQVVRNQVJLKFNYX1NWX1VOREVGKTsKLUBAIC0yNDU0LDggKzI0 NTUsOCBAQCBzdGF0aWMgaW50IHN0b3JlX3NjYWxhcihwVEhYXyBzdGN4dF90ICpjeHQsIFNWICpz dikKLSAgICAgICAgICAgICBUUkFDRU1FKCgiaW1tb3J0YWwgbm8iKSk7Ci0gICAgICAgICAgICAg UFVUTUFSSyhTWF9TVl9OTyk7Ci0gICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgIHB2ID0g U3ZQVihzdiwgbGVuKTsJCS8qIFdlIGtub3cgaXQncyBTdlBPSyAqLwotLSAgICAgICAgICAgIGdv dG8gc3RyaW5nOwkJCS8qIFNoYXJlIGNvZGUgYmVsb3cgKi8KLSsgICAgICAgICAgICBwdiA9IFN2 UFYoc3YsIGxlbik7ICAgICAgICAgLyogV2Uga25vdyBpdCdzIFN2UE9LICovCi0rICAgICAgICAg ICAgZ290byBzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAgICAgLyogU2hhcmUgY29kZSBiZWxv dyAqLwotICAgICAgICAgfQotICNpZmRlZiBTdklzQk9PTAotICAgICB9IGVsc2UgaWYgKFN2SXNC T09MKHN2KSkgewotQEAgLTI0OTEsNyArMjQ5Miw3IEBAIHN0YXRpYyBpbnQgc3RvcmVfc2NhbGFy KHBUSFhfIHN0Y3h0X3QgKmN4dCwgU1YgKnN2KQotICNpZmRlZiBTVmZfSVZpc1VWCi0gICAgICAg ICAvKiBOZWVkIHRvIGRvIHRoaXMgb3V0IGhlcmUsIGVsc2UgMHhGRkZGRkZGRiBiZWNvbWVzIGl2 IG9mIC0xCi0gICAgICAgICAgKiAoZm9yIGV4YW1wbGUpIGFuZCB0aGF0IGVuZHMgdXAgaW4gdGhl IG9wdGltaXNlZCBzbWFsbCBpbnRlZ2VyCi0tICAgICAgICAgKiBjYXNlLiAKLSsgICAgICAgICAq IGNhc2UuCi0gICAgICAgICAgKi8KLSAgICAgICAgIGlmICgoZmxhZ3MgJiBTVmZfSVZpc1VWKSAm JiBTdlVWKHN2KSA+IElWX01BWCkgewotICAgICAgICAgICAgIFRSQUNFTUUoKCJsYXJnZSB1bnNp Z25lZCBpbnRlZ2VyIGFzIHN0cmluZywgdmFsdWUgPSAlIiBVVnVmLAotQEAgLTI1NTYsMjEgKzI1 NTcsMjEgQEAgc3RhdGljIGludCBzdG9yZV9zY2FsYXIocFRIWF8gc3RjeHRfdCAqY3h0LCBTViAq c3YpCi0gICAgICAgICAgKi8KLSAgICAgICAgIGlmIChudi5udiA9PSAoTlYpIChpdiA9IElfVihu di5udikpKSB7Ci0gICAgICAgICAgICAgVFJBQ0VNRSgoImRvdWJsZSAlIiBOVmZmICIgaXMgYWN0 dWFsbHkgaW50ZWdlciAlIiBJVmRmLCBudiwgaXYpKTsKLS0gICAgICAgICAgICBnb3RvIGludGVn ZXI7CQkvKiBTaGFyZSBjb2RlIGFib3ZlICovCi0rICAgICAgICAgICAgZ290byBpbnRlZ2VyOyAg ICAgICAgICAgICAgIC8qIFNoYXJlIGNvZGUgYWJvdmUgKi8KLSAgICAgICAgIH0KLSAjZWxzZQot IAotICAgICAgICAgU3ZJVl9wbGVhc2Uoc3YpOwotICAgICAgICAgaWYgKFN2SU9LX25vdFVWKHN2 KSkgewotICAgICAgICAgICAgIGl2ID0gU3ZJVihzdik7Ci0tICAgICAgICAgICAgZ290byBpbnRl Z2VyOwkJLyogU2hhcmUgY29kZSBhYm92ZSAqLwotKyAgICAgICAgICAgIGdvdG8gaW50ZWdlcjsg ICAgICAgICAgICAgICAvKiBTaGFyZSBjb2RlIGFib3ZlICovCi0gICAgICAgICB9Ci0gICAgICAg ICBudi5udiA9IFN2TlYoc3YpOwotICNlbmRpZgotIAotICAgICAgICAgaWYgKGN4dC0+bmV0b3Jk ZXIpIHsKLSAgICAgICAgICAgICBUUkFDRU1FKCgiZG91YmxlICUiIE5WZmYgIiBzdG9yZWQgYXMg c3RyaW5nIiwgbnYubnYpKTsKLS0gICAgICAgICAgICBnb3RvIHN0cmluZ19yZWFkbGVuOwkJLyog U2hhcmUgY29kZSBiZWxvdyAqLwotKyAgICAgICAgICAgIGdvdG8gc3RyaW5nX3JlYWRsZW47ICAg ICAgICAgICAgICAgIC8qIFNoYXJlIGNvZGUgYmVsb3cgKi8KLSAgICAgICAgIH0KLSAjaWYgTlZf UEFERElORwotICAgICAgICAgWmVybyhudi5ieXRlcyArIE5WU0laRSAtIE5WX1BBRERJTkcsIE5W X1BBRERJTkcsIGNoYXIpOwotQEAgLTI1ODMsNyArMjU4NCw4IEBAIHN0YXRpYyBpbnQgc3RvcmVf c2NhbGFyKHBUSFhfIHN0Y3h0X3QgKmN4dCwgU1YgKnN2KQotIAotICAgICB9IGVsc2UgaWYgKGZs YWdzICYgKFNWcF9QT0sgfCBTVnBfTk9LIHwgU1ZwX0lPSykpIHsKLSAjaWZkZWYgU3ZWT0sKLS0g ICAgICAgIE1BR0lDICptZzsKLSsgICAgICAgIGNvbnN0IGNoYXIgKnZzdHJfcHY7Ci0rICAgICAg ICBTVFJMRU4gdnN0cl9sZW47Ci0gI2VuZGlmCi0gICAgICAgICBVViB3bGVuOyAvKiBGb3IgNjQt Yml0IG1hY2hpbmVzICovCi0gCi1AQCAtMjU5NywxOCArMjU5OSwxNCBAQCBzdGF0aWMgaW50IHN0 b3JlX3NjYWxhcihwVEhYXyBzdGN4dF90ICpjeHQsIFNWICpzdikKLSAgICAgc3RyaW5nOgotIAot ICNpZmRlZiBTdlZPSwotLSAgICAgICAgaWYgKFN2TUFHSUNBTChzdikgJiYgKG1nID0gbWdfZmlu ZChzdiwgJ1YnKSkpIHsKLS0gICAgICAgICAgICAvKiBUaGUgbWFjcm8gcGFzc2VzIHRoaXMgYnkg YWRkcmVzcywgbm90IHZhbHVlLCBhbmQgYSBsb3Qgb2YKLS0gICAgICAgICAgICAgICBjYWxsZWQg Y29kZSBhc3N1bWVzIHRoYXQgaXQncyAzMiBiaXRzIHdpdGhvdXQgY2hlY2tpbmcuICAqLwotLSAg ICAgICAgICAgIGNvbnN0IFNTaXplX3QgbGVuID0gbWctPm1nX2xlbjsKLSsgICAgICAgIGlmICgo dnN0cl9wdiA9IFN2VlNUUklORyhzdiwgdnN0cl9sZW4pKSkgewotICAgICAgICAgICAgIC8qIHdl IG5vIGxvbmdlciBhY2NlcHQgdnN0cmluZ3Mgb3ZlciBJMzJfU0laRS0xLCBzbyBkb24ndCBlbWl0 Ci0gICAgICAgICAgICAgICAgdGhlbSwgYWxzbywgb2xkZXIgU3RvcmFibGVzIGhhbmRsZSB0aGVt IGJhZGx5LgotICAgICAgICAgICAgICovCi0tICAgICAgICAgICAgaWYgKGxlbiA+PSBJMzJfTUFY KSB7Ci0rICAgICAgICAgICAgaWYgKHZzdHJfbGVuID49IEkzMl9NQVgpIHsKLSAgICAgICAgICAg ICAgICAgQ1JPQUsoKCJ2c3RyaW5nIHRvbyBsYXJnZSB0byBmcmVlemUiKSk7Ci0gICAgICAgICAg ICAgfQotLSAgICAgICAgICAgIFNUT1JFX1BWX0xFTigoY29uc3QgY2hhciAqKW1nLT5tZ19wdHIs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiwgU1hfVlNUUklORywgU1hfTFZTVFJJTkcp OwotKyAgICAgICAgICAgIFNUT1JFX1BWX0xFTih2c3RyX3B2LCB2c3RyX2xlbiwgU1hfVlNUUklO RywgU1hfTFZTVFJJTkcpOwotICAgICAgICAgfQotICNlbmRpZgotIAotQEAgLTI2MjUsNyArMjYy Myw3IEBAIHN0YXRpYyBpbnQgc3RvcmVfc2NhbGFyKHBUSFhfIHN0Y3h0X3QgKmN4dCwgU1YgKnN2 KQotICAgICAgICAgICAgICAgIHN2X3JlZnR5cGUoc3YsIEZBTFNFKSwKLSAgICAgICAgICAgICAg ICBQVFIyVVYoc3YpKSk7Ci0gICAgIH0KLS0gICAgcmV0dXJuIDA7CQkvKiBPaywgbm8gcmVjdXJz aW9uIG9uIHNjYWxhcnMgKi8KLSsgICAgcmV0dXJuIDA7ICAgICAgICAgICAvKiBPaywgbm8gcmVj dXJzaW9uIG9uIHNjYWxhcnMgKi8KLSB9Ci0gCi0gLyoKLUBAIC0yNzA0LDcgKzI3MDIsNyBAQCBz dGF0aWMgaW50IHN0b3JlX2FycmF5KHBUSFhfIHN0Y3h0X3QgKmN4dCwgQVYgKmF2KQotICAgICAg ICAgfQotICNlbmRpZgotICAgICAgICAgVFJBQ0VNRSgoIigjJWQpIGl0ZW0iLCAoaW50KWkpKTsK LS0gICAgICAgIGlmICgocmV0ID0gc3RvcmUoYVRIWF8gY3h0LCAqc2F2KSkpCS8qIEV4dHJhICgp IGZvciAtV2FsbCAqLwotKyAgICAgICAgaWYgKChyZXQgPSBzdG9yZShhVEhYXyBjeHQsICpzYXYp KSkgICAgIC8qIEV4dHJhICgpIGZvciAtV2FsbCAqLwotICAgICAgICAgICAgIHJldHVybiByZXQ7 Ci0gICAgIH0KLSAKLUBAIC0yNzc4LDcgKzI3NzYsNyBAQCBzdGF0aWMgaW50IHN0b3JlX2hhc2go cFRIWF8gc3RjeHRfdCAqY3h0LCBIViAqaHYpCi0gICAgIHVuc2lnbmVkIGNoYXIgaGFzaF9mbGFn cyA9IChTdlJFQURPTkxZKGh2KSA/IFNIVl9SRVNUUklDVEVEIDogMCk7Ci0gICAgIFNWICogY29u c3QgcmVjdXJfc3YgPSBjeHQtPnJlY3VyX3N2OwotIAotLSAgICAvKiAKLSsgICAgLyoKLSAgICAg ICogU2lnbmFsIGhhc2ggYnkgZW1pdHRpbmcgU1hfSEFTSCwgZm9sbG93ZWQgYnkgdGhlIHRhYmxl IGxlbmd0aC4KLSAgICAgICogTWF4IG51bWJlciBvZiBrZXlzIHBlciBwZXJsIHZlcnNpb246Ci0g ICAgICAqICAgIElWICAgICAgICAgICAgLSA1LjEyCi1AQCAtMjc4OCw3ICsyNzg2LDcgQEAgc3Rh dGljIGludCBzdG9yZV9oYXNoKHBUSFhfIHN0Y3h0X3QgKmN4dCwgSFYgKmh2KQotICAgICAgKi8K LSAKLSAgICAgaWYgKGxlbiA+IDB4N2ZmZmZmZmZ1KSB7IC8qIGtleXMgPiBJMzJfTUFYICovCi0t ICAgICAgICAvKiAKLSsgICAgICAgIC8qCi0gICAgICAgICAgKiBMYXJnZSBoYXNoOiBTWF9MT0JK RUNUIHR5cGUgaGFzaGZsYWdzPyBVNjQgZGF0YQotICAgICAgICAgICoKLSAgICAgICAgICAqIFN0 dXBpZCBsaW1pdGF0aW9uOgotQEAgLTI4NzAsNyArMjg2OCw3IEBAIHN0YXRpYyBpbnQgc3RvcmVf aGFzaChwVEhYXyBzdGN4dF90ICpjeHQsIEhWICpodikKLSAgICAgICAgICAgICAgICAgJiYgKGN4 dC0+Y2Fub25pY2FsID0KLSAgICAgICAgICAgICAgICAgICAgIChTdlRSVUUoZ2V0X3N2KCJTdG9y YWJsZTo6Y2Fub25pY2FsIiwgR1ZfQUREKSkKLSAgICAgICAgICAgICAgICAgICAgICA/IDEgOiAw KSkpKQotLQkpIHsKLSsgICAgICAgICkgewotICAgICAgICAgLyoKLSAgICAgICAgICAqIFN0b3Jp bmcgaW4gb3JkZXIsIHNvcnRlZCBieSBrZXkuCi0gICAgICAgICAgKiBSdW4gdGhyb3VnaCB0aGUg aGFzaCwgYnVpbGRpbmcgdXAgYW4gYXJyYXkgb2Yga2V5cyBpbiBhCi1AQCAtMjkzOSw3ICsyOTM3 LDcgQEAgc3RhdGljIGludCBzdG9yZV9oYXNoKHBUSFhfIHN0Y3h0X3QgKmN4dCwgSFYgKmh2KQot IAotICAgICAgICAgICAgIFRSQUNFTUUoKCIoIyVkKSB2YWx1ZSAweCUiIFVWeGYsIChpbnQpaSwg UFRSMlVWKHZhbCkpKTsKLSAKLS0gICAgICAgICAgICBpZiAoKHJldCA9IHN0b3JlKGFUSFhfIGN4 dCwgdmFsKSkpCS8qIEV4dHJhICgpIGZvciAtV2FsbCwgZ3JyLi4uICovCi0rICAgICAgICAgICAg aWYgKChyZXQgPSBzdG9yZShhVEhYXyBjeHQsIHZhbCkpKSAgLyogRXh0cmEgKCkgZm9yIC1XYWxs LCBncnIuLi4gKi8KLSAgICAgICAgICAgICAgICAgZ290byBvdXQ7Ci0gCi0gICAgICAgICAgICAg LyoKLUBAIC0zMDA0LDcgKzMwMDIsNyBAQCBzdGF0aWMgaW50IHN0b3JlX2hhc2gocFRIWF8gc3Rj eHRfdCAqY3h0LCBIViAqaHYpCi0gICAgICAgICAgICAgICAgIFNhZmVmcmVlIChrZXl2YWwpOwot ICAgICAgICAgfQotIAotLSAgICAgICAgLyogCi0rICAgICAgICAvKgotICAgICAgICAgICogRnJl ZSB1cCB0aGUgdGVtcG9yYXJ5IGFycmF5Ci0gICAgICAgICAgKi8KLSAKLUBAIC0zMDI3LDcgKzMw MjUsNyBAQCBzdGF0aWMgaW50IHN0b3JlX2hhc2gocFRIWF8gc3RjeHRfdCAqY3h0LCBIViAqaHYp Ci0gICAgICAgICAgICAgU1YgKnZhbCA9IChoZSA/IGh2X2l0ZXJ2YWwoaHYsIGhlKSA6IDApOwot IAotICAgICAgICAgICAgIGlmICh2YWwgPT0gMCkKLS0gICAgICAgICAgICAgICAgcmV0dXJuIDE7 CQkvKiBJbnRlcm5hbCBlcnJvciwgbm90IEkvTyBlcnJvciAqLwotKyAgICAgICAgICAgICAgICBy ZXR1cm4gMTsgICAgICAgICAgICAgICAvKiBJbnRlcm5hbCBlcnJvciwgbm90IEkvTyBlcnJvciAq LwotIAotICAgICAgICAgICAgIGlmICgocmV0ID0gc3RvcmVfaGVudHJ5KGFUSFhfIGN4dCwgaHYs IGksIEhlS0VZX2hlayhoZSksIHZhbCwgaGFzaF9mbGFncykpKQotICAgICAgICAgICAgICAgICBn b3RvIG91dDsKLUBAIC0zMDQyLDE0ICszMDQwLDE0IEBAIHN0YXRpYyBpbnQgc3RvcmVfaGFzaChw VEhYXyBzdGN4dF90ICpjeHQsIEhWICpodikKLSAgICAgaWYgKGN4dC0+bWF4X3JlY3VyX2RlcHRo X2hhc2ggIT0gLTEgJiYgcmVjdXJfc3YgIT0gKFNWKilodiAmJiBjeHQtPnJlY3VyX2RlcHRoID4g MCkgewotICAgICAgICAgLS1jeHQtPnJlY3VyX2RlcHRoOwotICAgICB9Ci0tICAgIEh2UklURVJf c2V0KGh2LCByaXRlcik7CQkvKiBSZXN0b3JlIGhhc2ggaXRlcmF0b3Igc3RhdGUgKi8KLSsgICAg SHZSSVRFUl9zZXQoaHYsIHJpdGVyKTsgICAgICAgICAgICAgLyogUmVzdG9yZSBoYXNoIGl0ZXJh dG9yIHN0YXRlICovCi0gICAgIEh2RUlURVJfc2V0KGh2LCBlaXRlcik7Ci0gCi0gICAgIHJldHVy biByZXQ7Ci0gfQotIAotIHN0YXRpYyBpbnQgc3RvcmVfaGVudHJ5KHBUSFhfCi0tCXN0Y3h0X3Qg KmN4dCwgSFYqIGh2LCBVViBpLCBIRUsgKmhlaywgU1YgKnZhbCwgdW5zaWduZWQgY2hhciBoYXNo X2ZsYWdzKQotKyAgICAgICAgc3RjeHRfdCAqY3h0LCBIViogaHYsIFVWIGksIEhFSyAqaGVrLCBT ViAqdmFsLCB1bnNpZ25lZCBjaGFyIGhhc2hfZmxhZ3MpCi0gewotICAgICBpbnQgcmV0ID0gMDsK LSAgICAgaW50IGZsYWdnZWRfaGFzaCA9ICgoU3ZSRUFET05MWShodikKLUBAIC0zMjIxLDcgKzMy MTksNyBAQCBzdGF0aWMgaW50IHN0b3JlX2NvZGUocFRIWF8gc3RjeHRfdCAqY3h0LCBDViAqY3Yp Ci0gICAgICAgICAoY3h0LT5kZXBhcnNlIDwgMCAmJgotICAgICAgICAgICEoY3h0LT5kZXBhcnNl ID0KLSAgICAgICAgICAgIFN2VFJVRShnZXRfc3YoIlN0b3JhYmxlOjpEZXBhcnNlIiwgR1ZfQURE KSkgPyAxIDogMCkpCi0tCSkgewotKyAgICAgICAgKSB7Ci0gICAgICAgICByZXR1cm4gc3RvcmVf b3RoZXIoYVRIWF8gY3h0LCAoU1YqKWN2KTsKLSAgICAgfQotIAotQEAgLTMyNzYsNyArMzI3NCw3 IEBAIHN0YXRpYyBpbnQgc3RvcmVfY29kZShwVEhYXyBzdGN4dF90ICpjeHQsIENWICpjdikKLSAg ICAgICAgIENST0FLKCgiVGhlIHJlc3VsdCBvZiBCOjpEZXBhcnNlOjpjb2RlcmVmMnRleHQgd2Fz IGVtcHR5IC0gbWF5YmUgeW91J3JlIHRyeWluZyB0byBzZXJpYWxpemUgYW4gWFMgZnVuY3Rpb24/ XG4iKSk7Ci0gICAgIH0KLSAKLS0gICAgLyogCi0rICAgIC8qCi0gICAgICAqIFNpZ25hbCBjb2Rl IGJ5IGVtaXR0aW5nIFNYX0NPREUuCi0gICAgICAqLwotIAotQEAgLTMzNjYsNyArMzM2NCw3IEBA IHN0YXRpYyBpbnQgc3RvcmVfcmVnZXhwKHBUSFhfIHN0Y3h0X3QgKmN4dCwgU1YgKnN2KSB7Ci0g ICAgIGlmIChyZV9sZW4gPiAweEZGKSB7Ci0gICAgICAgb3BfZmxhZ3MgfD0gU0hSX1UzMl9SRV9M RU47Ci0gICAgIH0KLS0gICAgCi0rCi0gICAgIFBVVE1BUksoU1hfUkVHRVhQKTsKLSAgICAgUFVU TUFSSyhvcF9mbGFncyk7Ci0gICAgIGlmIChvcF9mbGFncyAmIFNIUl9VMzJfUkVfTEVOKSB7Ci1A QCAtMzQxMiwxMyArMzQxMCwxMyBAQCBzdGF0aWMgaW50IHN0b3JlX3RpZWQocFRIWF8gc3RjeHRf dCAqY3h0LCBTViAqc3YpCi0gCi0gICAgIGlmIChzdnQgPT0gU1Z0X1BWSFYpIHsKLSAgICAgICAg IFRSQUNFTUUoKCJ0aWVkIGhhc2giKSk7Ci0tICAgICAgICBQVVRNQVJLKFNYX1RJRURfSEFTSCk7 CQkvKiBJbnRyb2R1Y2VzIHRpZWQgaGFzaCAqLwotKyAgICAgICAgUFVUTUFSSyhTWF9USUVEX0hB U0gpOyAgICAgICAgICAvKiBJbnRyb2R1Y2VzIHRpZWQgaGFzaCAqLwotICAgICB9IGVsc2UgaWYg KHN2dCA9PSBTVnRfUFZBVikgewotICAgICAgICAgVFJBQ0VNRSgoInRpZWQgYXJyYXkiKSk7Ci0t ICAgICAgICBQVVRNQVJLKFNYX1RJRURfQVJSQVkpOwkJLyogSW50cm9kdWNlcyB0aWVkIGFycmF5 ICovCi0rICAgICAgICBQVVRNQVJLKFNYX1RJRURfQVJSQVkpOyAgICAgICAgIC8qIEludHJvZHVj ZXMgdGllZCBhcnJheSAqLwotICAgICB9IGVsc2UgewotICAgICAgICAgVFJBQ0VNRSgoInRpZWQg c2NhbGFyIikpOwotLSAgICAgICAgUFVUTUFSSyhTWF9USUVEX1NDQUxBUik7CS8qIEludHJvZHVj ZXMgdGllZCBzY2FsYXIgKi8KLSsgICAgICAgIFBVVE1BUksoU1hfVElFRF9TQ0FMQVIpOyAgICAg ICAgLyogSW50cm9kdWNlcyB0aWVkIHNjYWxhciAqLwotICAgICAgICAgbXR5cGUgPSAncSc7Ci0g ICAgIH0KLSAKLUBAIC0zNDgwLDcgKzM0NzgsNyBAQCBzdGF0aWMgaW50IHN0b3JlX3RpZWRfaXRl bShwVEhYXyBzdGN4dF90ICpjeHQsIFNWICpzdikKLSAgICAgICAgIFBVVE1BUksoU1hfVElFRF9L RVkpOwotICAgICAgICAgVFJBQ0VNRSgoInN0b3JlX3RpZWRfaXRlbTogc3RvcmluZyBPQkogMHgl IiBVVnhmLCBQVFIyVVYobWctPm1nX29iaikpKTsKLSAKLS0gICAgICAgIGlmICgocmV0ID0gc3Rv cmUoYVRIWF8gY3h0LCBtZy0+bWdfb2JqKSkpCS8qIEV4dHJhICgpIGZvciAtV2FsbCwgZ3JyLi4u ICovCi0rICAgICAgICBpZiAoKHJldCA9IHN0b3JlKGFUSFhfIGN4dCwgbWctPm1nX29iaikpKSAg ICAgICAvKiBFeHRyYSAoKSBmb3IgLVdhbGwsIGdyci4uLiAqLwotICAgICAgICAgICAgIHJldHVy biByZXQ7Ci0gCi0gICAgICAgICBUUkFDRU1FKCgic3RvcmVfdGllZF9pdGVtOiBzdG9yaW5nIFBU UiAweCUiIFVWeGYsIFBUUjJVVihtZy0+bWdfcHRyKSkpOwotQEAgLTM0OTQsNyArMzQ5Miw3IEBA IHN0YXRpYyBpbnQgc3RvcmVfdGllZF9pdGVtKHBUSFhfIHN0Y3h0X3QgKmN4dCwgU1YgKnN2KQot ICAgICAgICAgUFVUTUFSSyhTWF9USUVEX0lEWCk7Ci0gICAgICAgICBUUkFDRU1FKCgic3RvcmVf dGllZF9pdGVtOiBzdG9yaW5nIE9CSiAweCUiIFVWeGYsIFBUUjJVVihtZy0+bWdfb2JqKSkpOwot IAotLSAgICAgICAgaWYgKChyZXQgPSBzdG9yZShhVEhYXyBjeHQsIG1nLT5tZ19vYmopKSkJLyog SWRlbSwgZm9yIC1XYWxsICovCi0rICAgICAgICBpZiAoKHJldCA9IHN0b3JlKGFUSFhfIGN4dCwg bWctPm1nX29iaikpKSAgICAgICAvKiBJZGVtLCBmb3IgLVdhbGwgKi8KLSAgICAgICAgICAgICBy ZXR1cm4gcmV0OwotIAotICAgICAgICAgVFJBQ0VNRSgoInN0b3JlX3RpZWRfaXRlbTogc3Rvcmlu ZyBJRFggJWQiLCAoaW50KWlkeCkpOwotQEAgLTM1MDgsNyArMzUwNiw3IEBAIHN0YXRpYyBpbnQg c3RvcmVfdGllZF9pdGVtKHBUSFhfIHN0Y3h0X3QgKmN4dCwgU1YgKnN2KQotIH0KLSAKLSAvKgot LSAqIHN0b3JlX2hvb2sJCS0tIGRpc3BhdGNoZWQgbWFudWFsbHksIG5vdCB2aWEgc3Zfc3RvcmVb XQotKyAqIHN0b3JlX2hvb2sgICAgICAgICAgIC0tIGRpc3BhdGNoZWQgbWFudWFsbHksIG5vdCB2 aWEgc3Zfc3RvcmVbXQotICAqCi0gICogVGhlIGJsZXNzZWQgU1YgaXMgc2VyaWFsaXplZCBieSBh IGhvb2suCi0gICoKLUBAIC0zNTI1LDcgKzM1MjMsNyBAQCBzdGF0aWMgaW50IHN0b3JlX3RpZWRf aXRlbShwVEhYXyBzdGN4dF90ICpjeHQsIFNWICpzdikKLSAgKgotICAqIGFuZCB3aGVuIHRoZSA8 aW5kZXg+IGZvcm0gaXMgdXNlZCAoY2xhc3NuYW1lIGFscmVhZHkgc2VlbiksIHRoZSAibGFyZ2UK LSAgKiBjbGFzc25hbWUiIGJpdCBpbiA8ZmxhZ3M+IGluZGljYXRlcyBob3cgbGFyZ2UgdGhlIDxp bmRleD4gaXMuCi0tICogCi0rICoKLSAgKiBUaGUgc2VyaWFsaXplZCBzdHJpbmcgcmV0dXJuZWQg YnkgdGhlIGhvb2sgaXMgb2YgbGVuZ3RoIDxsZW4yPiBhbmQgY29tZXMKLSAgKiBuZXh0LiAgSXQg aXMgYW4gb3BhcXVlIHN0cmluZyBmb3IgdXMuCi0gICoKLUBAIC0zNTY2LDE2ICszNTY0LDE2IEBA IHN0YXRpYyBpbnQgc3RvcmVfaG9vaygKLSAgICAgU1YgKnJlZjsKLSAgICAgQVYgKmF2OwotICAg ICBTViAqKmFyeTsKLS0gICAgSVYgY291bnQ7CQkJLyogcmVhbGx5IGxlbjMgKyAxICovCi0rICAg IElWIGNvdW50OyAgICAgICAgICAgICAgICAgICAvKiByZWFsbHkgbGVuMyArIDEgKi8KLSAgICAg dW5zaWduZWQgY2hhciBmbGFnczsKLSAgICAgY2hhciAqcHY7Ci0gICAgIGludCBpOwotLSAgICBp bnQgcmVjdXJzZWQgPSAwOwkJLyogY291bnRzIHJlY3Vyc2lvbiAqLwotLSAgICBpbnQgb2JqX3R5 cGU7CQkvKiBvYmplY3QgdHlwZSwgb24gMiBiaXRzICovCi0rICAgIGludCByZWN1cnNlZCA9IDA7 ICAgICAgICAgICAvKiBjb3VudHMgcmVjdXJzaW9uICovCi0rICAgIGludCBvYmpfdHlwZTsgICAg ICAgICAgICAgICAvKiBvYmplY3QgdHlwZSwgb24gMiBiaXRzICovCi0gICAgIEkzMiBjbGFzc251 bTsKLSAgICAgaW50IHJldDsKLSAgICAgaW50IGNsb25lID0gY3h0LT5vcHR5cGUgJiBTVF9DTE9O RTsKLS0gICAgY2hhciBtdHlwZSA9ICdcMCc7CQkvKiBmb3IgYmxlc3NlZCByZWYgdG8gdGllZCBz dHJ1Y3R1cmVzICovCi0rICAgIGNoYXIgbXR5cGUgPSAnXDAnOyAgICAgICAgICAvKiBmb3IgYmxl c3NlZCByZWYgdG8gdGllZCBzdHJ1Y3R1cmVzICovCi0gICAgIHVuc2lnbmVkIGNoYXIgZWZsYWdz ID0gJ1wwJzsgLyogdXNlZCB3aGVuIG9iamVjdCB0eXBlIGlzIFNIVF9FWFRSQSAqLwotICNpZmRl ZiBIQVNfVTY0Ci0gICAgIGludCBuZWVkX2xhcmdlX29pZHMgPSAwOwotQEAgLTM2MDcsOSArMzYw NSw5IEBAIHN0YXRpYyBpbnQgc3RvcmVfaG9vaygKLSAgICAgICAgICAqIFByb2R1Y2VkIGJ5IGEg Ymxlc3NlZCByZWYgdG8gYSB0aWVkIGRhdGEgc3RydWN0dXJlLCAkbyBpbiB0aGUKLSAgICAgICAg ICAqIGZvbGxvd2luZyBQZXJsIGNvZGUuCi0gICAgICAgICAgKgotLSAgICAgICAgICogCW15ICVo OwotKyAgICAgICAgICogICAgICBteSAlaDsKLSAgICAgICAgICAqICB0aWUgJWgsICdGT08nOwot LSAgICAgICAgICoJbXkgJG8gPSBibGVzcyBcJWgsICdCQVInOwotKyAgICAgICAgICogICAgICBt eSAkbyA9IGJsZXNzIFwlaCwgJ0JBUic7Ci0gICAgICAgICAgKgotICAgICAgICAgICogU2lnbmFs IHRoZSB0aWUtaW5nIG1hZ2ljIGJ5IHNldHRpbmcgdGhlIG9iamVjdCB0eXBlIGFzIFNIVF9FWFRS QQotICAgICAgICAgICogKHNpbmNlIHdlIGhhdmUgb25seSAyIGJpdHMgaW4gPGZsYWdzPiB0byBz dG9yZSB0aGUgdHlwZSksIGFuZCBhbgotQEAgLTM2NjIsOSArMzY2MCw5IEBAIHN0YXRpYyBpbnQg c3RvcmVfaG9vaygKLSAKLSAgICAgVFJBQ0VNRSgoImFib3V0IHRvIGNhbGwgU1RPUkFCTEVfZnJl ZXplIG9uIGNsYXNzICVzIiwgY2xhc3NuYW1lKSk7Ci0gCi0tICAgIHJlZiA9IG5ld1JWX2luYyhz dik7CQkvKiBUZW1wb3JhcnkgcmVmZXJlbmNlICovCi0rICAgIHJlZiA9IG5ld1JWX2luYyhzdik7 ICAgICAgICAgICAgICAgIC8qIFRlbXBvcmFyeSByZWZlcmVuY2UgKi8KLSAgICAgYXYgPSBhcnJh eV9jYWxsKGFUSFhfIHJlZiwgaG9vaywgY2xvbmUpOyAvKiBAYSA9ICRvYmplY3QtPlNUT1JBQkxF X2ZyZWV6ZSgkYykgKi8KLS0gICAgU3ZSRUZDTlRfZGVjKHJlZik7CQkJLyogUmVjbGFpbSB0ZW1w b3JhcnkgcmVmZXJlbmNlICovCi0rICAgIFN2UkVGQ05UX2RlYyhyZWYpOyAgICAgICAgICAgICAg ICAgIC8qIFJlY2xhaW0gdGVtcG9yYXJ5IHJlZmVyZW5jZSAqLwotIAotICAgICBjb3VudCA9IEF2 RklMTHAoYXYpICsgMTsKLSAgICAgVFJBQ0VNRSgoInN0b3JlX2hvb2ssIGFycmF5IGhvbGRzICUi IElWZGYgIiBpdGVtcyIsIGNvdW50KSk7Ci1AQCAtMzcwOSw3ICszNzA3LDcgQEAgc3RhdGljIGlu dCBzdG9yZV9ob29rKAotICAgICBwdiA9IFN2UFYoYXJ5WzBdLCBsZW4yKTsKLSAgICAgLyogV2Ug Y2FuJ3QgdXNlIHBrZ19jYW4gaGVyZSBiZWNhdXNlIGl0IG9ubHkgY2FjaGVzIG9uZSBtZXRob2Qg cGVyCi0gICAgICAqIHBhY2thZ2UgKi8KLS0gICAgeyAKLSsgICAgewotICAgICAgICAgR1YqIGd2 ID0gZ3ZfZmV0Y2htZXRob2RfYXV0b2xvYWQocGtnLCAiU1RPUkFCTEVfYXR0YWNoIiwgRkFMU0Up OwotICAgICAgICAgaWYgKGd2ICYmIGlzR1YoZ3YpKSB7Ci0gICAgICAgICAgICAgaWYgKGNvdW50 ID4gMSkKLUBAIC0zNzIwLDcgKzM3MTgsNyBAQCBzdGF0aWMgaW50IHN0b3JlX2hvb2soCi0gCi0g I2lmZGVmIEhBU19VNjQKLSAgICAgaWYgKGNvdW50ID4gSTMyX01BWCkgewotLQlDUk9BSygoIlRv byBtYW55IHJlZmVyZW5jZXMgcmV0dXJuZWQgYnkgU1RPUkFCTEVfZnJlZXplKCkiKSk7Ci0rICAg ICAgICBDUk9BSygoIlRvbyBtYW55IHJlZmVyZW5jZXMgcmV0dXJuZWQgYnkgU1RPUkFCTEVfZnJl ZXplKCkiKSk7Ci0gICAgIH0KLSAjZW5kaWYKLSAKLUBAIC0zNzUxLDcgKzM3NDksNyBAQCBzdGF0 aWMgaW50IHN0b3JlX2hvb2soCi0gICAgICAgICBpZiAoIVN2Uk9LKHJzdikpCi0gICAgICAgICAg ICAgQ1JPQUsoKCJJdGVtICMlZCByZXR1cm5lZCBieSBTVE9SQUJMRV9mcmVlemUgIgotICAgICAg ICAgICAgICAgICAgICAiZm9yICVzIGlzIG5vdCBhIHJlZmVyZW5jZSIsIChpbnQpaSwgY2xhc3Nu YW1lKSk7Ci0tICAgICAgICB4c3YgPSBTdlJWKHJzdik7CS8qIEZvbGxvdyByZWYgdG8ga25vdyB3 aGF0IHRvIGxvb2sgZm9yICovCi0rICAgICAgICB4c3YgPSBTdlJWKHJzdik7ICAgICAgICAvKiBG b2xsb3cgcmVmIHRvIGtub3cgd2hhdCB0byBsb29rIGZvciAqLwotIAotICAgICAgICAgLyoKLSAg ICAgICAgICAqIExvb2sgaW4gaHNlZW4gYW5kIHNlZSBpZiB3ZSBoYXZlIGEgdGFnIGFscmVhZHku Ci1AQCAtMzc2NCwxMCArMzc2MiwxMCBAQCBzdGF0aWMgaW50IHN0b3JlX2hvb2soCi0gICAgICAg ICAgICBzYWZlbHkgc3RvcmUgYSB0YWcgemVyby4gU28gZm9yIHB0cl90YWJsZXMgd2Ugc3RvcmUg dGFnKzEKLSAgICAgICAgICovCi0gICAgICAgICBpZiAoKGZha2VfdGFnID0gKGNoYXIgKilwdHJf dGFibGVfZmV0Y2goY3h0LT5wc2VlbiwgeHN2KSkpCi0tICAgICAgICAgICAgZ290byBzdl9zZWVu OwkvKiBBdm9pZCBtb3ZpbmcgY29kZSB0b28gZmFyIHRvIHRoZSByaWdodCAqLwotKyAgICAgICAg ICAgIGdvdG8gc3Zfc2VlbjsgICAgICAgLyogQXZvaWQgbW92aW5nIGNvZGUgdG9vIGZhciB0byB0 aGUgcmlnaHQgKi8KLSAjZWxzZQotICAgICAgICAgaWYgKChzdmggPSBodl9mZXRjaChjeHQtPmhz ZWVuLCAoY2hhciAqKSAmeHN2LCBzaXplb2YoeHN2KSwgRkFMU0UpKSkKLS0gICAgICAgICAgICBn b3RvIHN2X3NlZW47CS8qIEF2b2lkIG1vdmluZyBjb2RlIHRvbyBmYXIgdG8gdGhlIHJpZ2h0ICov Ci0rICAgICAgICAgICAgZ290byBzdl9zZWVuOyAgICAgICAvKiBBdm9pZCBtb3ZpbmcgY29kZSB0 b28gZmFyIHRvIHRoZSByaWdodCAqLwotICNlbmRpZgotIAotICAgICAgICAgVFJBQ0VNRSgoImxp c3RlZCBvYmplY3QgJWQgYXQgMHglIiBVVnhmICIgaXMgdW5rbm93biIsIGktMSwKLUBAIC0zNzkw LDE0ICszNzg4LDE0IEBAIHN0YXRpYyBpbnQgc3RvcmVfaG9vaygKLSAgICAgICAgICAgICBpZiAo bGVuMiA+IElOVDMyX01BWCkKLSAgICAgICAgICAgICAgICAgUFVUTUFSSyhTWF9MT0JKRUNUKTsK LSAjZW5kaWYKLS0JICAgIFBVVE1BUksoU1hfSE9PSyk7Ci0rICAgICAgICAgICAgUFVUTUFSSyhT WF9IT09LKTsKLSAgICAgICAgICAgICBQVVRNQVJLKGZsYWdzKTsKLSAgICAgICAgICAgICBpZiAo b2JqX3R5cGUgPT0gU0hUX0VYVFJBKQotICAgICAgICAgICAgICAgICBQVVRNQVJLKGVmbGFncyk7 Ci0gICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICBQVVRNQVJLKGZsYWdzKTsKLSAKLS0gICAg ICAgIGlmICgocmV0ID0gc3RvcmUoYVRIWF8gY3h0LCB4c3YpKSkJLyogR2l2ZW4gYnkgaG9vayBm b3IgdXMgdG8gc3RvcmUgKi8KLSsgICAgICAgIGlmICgocmV0ID0gc3RvcmUoYVRIWF8gY3h0LCB4 c3YpKSkgICAgICAvKiBHaXZlbiBieSBob29rIGZvciB1cyB0byBzdG9yZSAqLwotICAgICAgICAg ICAgIHJldHVybiByZXQ7Ci0gCi0gI2lmZGVmIFVTRV9QVFJfVEFCTEUKLUBAIC0zODM0LDcgKzM4 MzIsNyBAQCBzdGF0aWMgaW50IHN0b3JlX2hvb2soCi0gICAgICAgICAgKi8KLSAKLSAgICAgICAg IEFTU0VSVChTdlJFRkNOVCh4c3YpID4gMSwgKCJTViB3aWxsIHN1cnZpdmUgZGlzcG9zYWwgb2Yg aXRzIFJFRiIpKTsKLS0gICAgICAgIFN2UkVGQ05UX2RlYyhyc3YpOwkJLyogRGlzcG9zZSBvZiBy ZWZlcmVuY2UgKi8KLSsgICAgICAgIFN2UkVGQ05UX2RlYyhyc3YpOyAgICAgICAgICAgICAgLyog RGlzcG9zZSBvZiByZWZlcmVuY2UgKi8KLSAKLSAgICAgICAgIC8qCi0gICAgICAgICAgKiBSZXBs YWNlIGVudHJ5IHdpdGggaXRzIHRhZyAobm90IGEgcmVhbCBTViwgc28gbm8gcmVmY250IGluY3Jl bWVudCkKLUBAIC0zODY2LDcgKzM4NjQsNyBAQCBzdGF0aWMgaW50IHN0b3JlX2hvb2soCi0gIGNo ZWNrX2RvbmU6Ci0gICAgIGlmICgha25vd25fY2xhc3MoYVRIWF8gY3h0LCBjbGFzc25hbWUsIGxl biwgJmNsYXNzbnVtKSkgewotICAgICAgICAgVFJBQ0VNRSgoImZpcnN0IHRpbWUgd2Ugc2VlIGNs YXNzICVzLCBJRCA9ICVkIiwgY2xhc3NuYW1lLCAoaW50KWNsYXNzbnVtKSk7Ci0tICAgICAgICBj bGFzc251bSA9IC0xOwkJCS8qIE1hcms6IHdlIG11c3Qgc3RvcmUgY2xhc3NuYW1lICovCi0rICAg ICAgICBjbGFzc251bSA9IC0xOyAgICAgICAgICAgICAgICAgIC8qIE1hcms6IHdlIG11c3Qgc3Rv cmUgY2xhc3NuYW1lICovCi0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBUUkFDRU1FKCgiYWxyZWFk eSBzZWVuIGNsYXNzICVzLCBJRCA9ICVkIiwgY2xhc3NuYW1lLCAoaW50KWNsYXNzbnVtKSk7Ci0g ICAgIH0KLUBAIC0zOTA4LDkgKzM5MDYsOSBAQCBzdGF0aWMgaW50IHN0b3JlX2hvb2soCi0gICAg IGlmICghcmVjdXJzZWQpIHsKLSAjaWZkZWYgSEFTX1U2NAotICAgICAgICAgaWYgKGxlbjIgPiBJ TlQzMl9NQVgpCi0tCSAgICBQVVRNQVJLKFNYX0xPQkpFQ1QpOwotKyAgICAgICAgICAgIFBVVE1B UksoU1hfTE9CSkVDVCk7Ci0gI2VuZGlmCi0tCVBVVE1BUksoU1hfSE9PSyk7Ci0rICAgICAgICBQ VVRNQVJLKFNYX0hPT0spOwotICAgICAgICAgUFVUTUFSSyhmbGFncyk7Ci0gICAgICAgICBpZiAo b2JqX3R5cGUgPT0gU0hUX0VYVFJBKQotICAgICAgICAgICAgIFBVVE1BUksoZWZsYWdzKTsKLUBA IC0zOTMyLDcgKzM5MzAsNyBAQCBzdGF0aWMgaW50IHN0b3JlX2hvb2soCi0gICAgICAgICAgICAg dW5zaWduZWQgY2hhciBjbGVuID0gKHVuc2lnbmVkIGNoYXIpIGxlbjsKLSAgICAgICAgICAgICBQ VVRNQVJLKGNsZW4pOwotICAgICAgICAgfQotLSAgICAgICAgV1JJVEUoY2xhc3NuYW1lLCBsZW4p OwkJLyogRmluYWwgXDAgaXMgb21pdHRlZCAqLwotKyAgICAgICAgV1JJVEUoY2xhc3NuYW1lLCBs ZW4pOyAgICAgICAgICAvKiBGaW5hbCBcMCBpcyBvbWl0dGVkICovCi0gICAgIH0KLSAKLSAgICAg LyogPGxlbjI+IDxmcm96ZW4tc3RyPiAqLwotQEAgLTM5NDMsMjYgKzM5NDEsMjYgQEAgc3RhdGlj IGludCBzdG9yZV9ob29rKAotICAgICBlbHNlCi0gI2VuZGlmCi0gICAgIGlmIChmbGFncyAmIFNI Rl9MQVJHRV9TVFJMRU4pIHsKLS0gICAgICAgIFUzMiB3bGVuMiA9IGxlbjI7CQkvKiBTVFJMRU4g bWlnaHQgYmUgOCBieXRlcyAqLwotLSAgICAgICAgV0xFTih3bGVuMik7CQkJLyogTXVzdCB3cml0 ZSBhbiBJMzIgZm9yIDY0LWJpdCBtYWNoaW5lcyAqLwotKyAgICAgICAgVTMyIHdsZW4yID0gbGVu MjsgICAgICAgICAgICAgICAvKiBTVFJMRU4gbWlnaHQgYmUgOCBieXRlcyAqLwotKyAgICAgICAg V0xFTih3bGVuMik7ICAgICAgICAgICAgICAgICAgICAvKiBNdXN0IHdyaXRlIGFuIEkzMiBmb3Ig NjQtYml0IG1hY2hpbmVzICovCi0gICAgIH0gZWxzZSB7Ci0gICAgICAgICB1bnNpZ25lZCBjaGFy IGNsZW4gPSAodW5zaWduZWQgY2hhcikgbGVuMjsKLSAgICAgICAgIFBVVE1BUksoY2xlbik7Ci0g ICAgIH0KLSAgICAgaWYgKGxlbjIpCi0tICAgICAgICBXUklURShwdiwgKFNTaXplX3QpbGVuMik7 CS8qIEZpbmFsIFwwIGlzIG9taXR0ZWQgKi8KLSsgICAgICAgIFdSSVRFKHB2LCAoU1NpemVfdCls ZW4yKTsgICAgICAgLyogRmluYWwgXDAgaXMgb21pdHRlZCAqLwotIAotICAgICAvKiBbPGxlbjM+ IDxvYmplY3QtSURzPl0gKi8KLSAgICAgaWYgKGZsYWdzICYgU0hGX0hBU19MSVNUKSB7Ci0gICAg ICAgICBpbnQgbGVuMyA9IGNvdW50IC0gMTsKLSAgICAgICAgIGlmIChmbGFncyAmIFNIRl9MQVJH RV9MSVNUTEVOKSB7Ci0gI2lmZGVmIEhBU19VNjQKLS0gIAkgICAgaW50IHRsZW4zID0gbmVlZF9s YXJnZV9vaWRzID8gLWxlbjMgOiBsZW4zOwotLQkgICAgV0xFTih0bGVuMyk7Ci0rICAgICAgICAg ICAgaW50IHRsZW4zID0gbmVlZF9sYXJnZV9vaWRzID8gLWxlbjMgOiBsZW4zOwotKyAgICAgICAg ICAgIFdMRU4odGxlbjMpOwotICNlbHNlCi0gICAgICAgICAgICAgV0xFTihsZW4zKTsKLSAjZW5k aWYKLS0JfQotKyAgICAgICAgfQotICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgdW5zaWdu ZWQgY2hhciBjbGVuID0gKHVuc2lnbmVkIGNoYXIpIGxlbjM7Ci0gICAgICAgICAgICAgUFVUTUFS SyhjbGVuKTsKLUBAIC0zOTk4LDcgKzM5OTYsNyBAQCBzdGF0aWMgaW50IHN0b3JlX2hvb2soCi0g ICAgICAqLwotIAotICAgICBpZiAoY291bnQgPiAxKQotLSAgICAgICAgQXZGSUxMcChhdikgPSAw OwkvKiBDaGVhdCwgbm90aGluZyBhZnRlciAwIGludGVyZXN0cyB1cyAqLwotKyAgICAgICAgQXZG SUxMcChhdikgPSAwOyAgICAgICAgLyogQ2hlYXQsIG5vdGhpbmcgYWZ0ZXIgMCBpbnRlcmVzdHMg dXMgKi8KLSAgICAgYXZfdW5kZWYoYXYpOwotICAgICBzdl9mcmVlKChTViAqKSBhdik7Ci0gCi1A QCAtNDAzMCw3ICs0MDI4LDcgQEAgc3RhdGljIGludCBzdG9yZV9ob29rKAotIH0KLSAKLSAvKgot LSAqIHN0b3JlX2JsZXNzZWQJLS0gZGlzcGF0Y2hlZCBtYW51YWxseSwgbm90IHZpYSBzdl9zdG9y ZVtdCi0rICogc3RvcmVfYmxlc3NlZCAgICAgICAgLS0gZGlzcGF0Y2hlZCBtYW51YWxseSwgbm90 IHZpYSBzdl9zdG9yZVtdCi0gICoKLSAgKiBDaGVjayB3aGV0aGVyIHRoZXJlIGlzIGEgU1RPUkFC TEVfeHh4IGhvb2sgZGVmaW5lZCBpbiB0aGUgY2xhc3Mgb3IgaW4gb25lCi0gICogb2YgaXRzIGFu Y2VzdG9ycy4gIElmIHRoZXJlIGlzLCB0aGVuIHJlZGlzcGF0Y2ggdG8gc3RvcmVfaG9vaygpOwot QEAgLTQxMTQsOSArNDExMiw5IEBAIHN0YXRpYyBpbnQgc3RvcmVfYmxlc3NlZCgKLSAgICAgICAg IH0gZWxzZSB7Ci0gICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFnID0gKHVuc2lnbmVkIGNo YXIpIDB4ODA7Ci0gICAgICAgICAgICAgUFVUTUFSSyhmbGFnKTsKLS0gICAgICAgICAgICBXTEVO KGxlbik7CS8qIERvbid0IEJFUi1lbmNvZGUsIHRoaXMgc2hvdWxkIGJlIHJhcmUgKi8KLSsgICAg ICAgICAgICBXTEVOKGxlbik7ICAvKiBEb24ndCBCRVItZW5jb2RlLCB0aGlzIHNob3VsZCBiZSBy YXJlICovCi0gICAgICAgICB9Ci0tICAgICAgICBXUklURShjbGFzc25hbWUsIGxlbik7CS8qIEZp bmFsIFwwIGlzIG9taXR0ZWQgKi8KLSsgICAgICAgIFdSSVRFKGNsYXNzbmFtZSwgbGVuKTsgIC8q IEZpbmFsIFwwIGlzIG9taXR0ZWQgKi8KLSAgICAgfQotIAotICAgICAvKgotQEAgLTQxNTIsNyAr NDE1MCw3IEBAIHN0YXRpYyBpbnQgc3RvcmVfb3RoZXIocFRIWF8gc3RjeHRfdCAqY3h0LCBTViAq c3YpCi0gICAgICAgICAoY3h0LT5mb3JnaXZlX21lIDwgMCAmJgotICAgICAgICAgICEoY3h0LT5m b3JnaXZlX21lID0gU3ZUUlVFCi0gICAgICAgICAgICAoZ2V0X3N2KCJTdG9yYWJsZTo6Zm9yZ2l2 ZV9tZSIsIEdWX0FERCkpID8gMSA6IDApKQotLQkpCi0rICAgICAgICApCi0gICAgICAgICBDUk9B SygoIkNhbid0IHN0b3JlICVzIGl0ZW1zIiwgc3ZfcmVmdHlwZShzdiwgRkFMU0UpKSk7Ci0gCi0g ICAgIHdhcm4oIkNhbid0IHN0b3JlIGl0ZW0gJXMoMHglIiBVVnhmICIpIiwKLUBAIC00MjE5LDEy ICs0MjE3LDEyIEBAIHN0YXRpYyBpbnQgc3ZfdHlwZShwVEhYXyBTViAqc3YpCi0gICAgIGNhc2Ug U1Z0X1BWTUc6Ci0gI2lmIFBFUkxfVkVSU0lPTl9MVCg1LDExLDApCi0gICAgICAgICBpZiAoKFN2 RkxBR1Moc3YpICYgKFNWc19PQkpFQ1R8U1ZmX09LfFNWc19HTUd8U1ZzX1NNR3xTVnNfUk1HKSkK LS0JICAgICAgICAgID09IChTVnNfT0JKRUNUfEJGRF9TdnNfU01HX09SX1JNRykKLS0JICAgICYm IG1nX2ZpbmQoc3YsIFBFUkxfTUFHSUNfcXIpKSB7Ci0tCSAgICAgIHJldHVybiBzdmlzX1JFR0VY UDsKLS0JfQotKyAgICAgICAgICAgICAgICAgID09IChTVnNfT0JKRUNUfEJGRF9TdnNfU01HX09S X1JNRykKLSsgICAgICAgICAgICAmJiBtZ19maW5kKHN2LCBQRVJMX01BR0lDX3FyKSkgewotKyAg ICAgICAgICAgICAgcmV0dXJuIHN2aXNfUkVHRVhQOwotKyAgICAgICAgfQotICNlbmRpZgotLSAg ICBjYXNlIFNWdF9QVkxWOgkJLyogV29ya2Fyb3VuZCBmb3IgcGVybDUuMDA0XzA0ICJMVkFMVUUi IGJ1ZyAqLwotKyAgICBjYXNlIFNWdF9QVkxWOiAgICAgICAgICAgICAgLyogV29ya2Fyb3VuZCBm b3IgcGVybDUuMDA0XzA0ICJMVkFMVUUiIGJ1ZyAqLwotICAgICAgICAgaWYgKChTdkZMQUdTKHN2 KSAmIChTVnNfR01HfFNWc19TTUd8U1ZzX1JNRykpID09Ci0gICAgICAgICAgICAgKFNWc19HTUd8 U1ZzX1NNR3xTVnNfUk1HKSAmJgotICAgICAgICAgICAgIChtZ19maW5kKHN2LCAncCcpKSkKLUBA IC00MjQ5LDcgKzQyNDcsNyBAQCBzdGF0aWMgaW50IHN2X3R5cGUocFRIWF8gU1YgKnN2KQotICAg ICBjYXNlIFNWdF9QVkNWOgotICAgICAgICAgcmV0dXJuIHN2aXNfQ09ERTsKLSAjaWYgUEVSTF9W RVJTSU9OX0dFKDUsOSwwKQotLQkvKiBjYXNlIFNWdF9JTlZMSVNUOiAqLwotKyAgICAgICAgLyog Y2FzZSBTVnRfSU5WTElTVDogKi8KLSAjZW5kaWYKLSAjaWYgUEVSTF9WRVJTSU9OX0dFKDUsMTEs MCkKLSAgICAgY2FzZSBTVnRfUkVHRVhQOgotQEAgLTQyOTMsNyArNDI5MSw3IEBAIHN0YXRpYyBp bnQgc3RvcmUocFRIWF8gc3RjeHRfdCAqY3h0LCBTViAqc3YpCi0gICAgICAqIHJlYWwgcG9pbnRl ciwgcmF0aGVyIGEgdGFnIG51bWJlciAod2F0Y2ggdGhlIGluc2VydGlvbiBjb2RlIGJlbG93KS4K LSAgICAgICogVGhhdCBtZWFucyBpdCBwcm9iYWJseSBzYWZlIHRvIGFzc3VtZSBpdCBpcyB3ZWxs IHVuZGVyIHRoZSAzMi1iaXQKLSAgICAgICogbGltaXQsIGFuZCBtYWtlcyB0aGUgdHJ1bmNhdGlv biBzYWZlLgotLSAgICAgKgkJLS0gUkFNLCAxNC8wOS8xOTk5Ci0rICAgICAqICAgICAgICAgIC0t IFJBTSwgMTQvMDkvMTk5OQotICAgICAgKi8KLSAKLSAjaWZkZWYgVVNFX1BUUl9UQUJMRQotQEAg LTQzMDIsOCArNDMwMCw4IEBAIHN0YXRpYyBpbnQgc3RvcmUocFRIWF8gc3RjeHRfdCAqY3h0LCBT ViAqc3YpCi0gICAgIHN2aCA9IGh2X2ZldGNoKGhzZWVuLCAoY2hhciAqKSAmc3YsIHNpemVvZihz diksIEZBTFNFKTsKLSAjZW5kaWYKLSAgICAgaWYgKHN2aCkgewotLQludGFnX3QgdGFndmFsOwot LQlpZiAoc3YgPT0gJlBMX3N2X3VuZGVmKSB7Ci0rICAgICAgICBudGFnX3QgdGFndmFsOwotKyAg ICAgICAgaWYgKHN2ID09ICZQTF9zdl91bmRlZikgewotICAgICAgICAgICAgIC8qIFdlIGhhdmUg c2VlbiBQTF9zdl91bmRlZiBiZWZvcmUsIGJ1dCBmYWtlIGl0IGFzCi0gICAgICAgICAgICAgICAg aWYgd2UgaGF2ZSBub3QuCi0gCi1AQCAtNDMzNCw5ICs0MzMyLDkgQEAgc3RhdGljIGludCBzdG9y ZShwVEhYXyBzdGN4dF90ICpjeHQsIFNWICpzdikKLSAgICAgICAgIH0KLSAKLSAjaWZkZWYgVVNF X1BUUl9UQUJMRQotLQl0YWd2YWwgPSBQVFIyVEFHKCgoY2hhciAqKXN2aCktMSk7Ci0rICAgICAg ICB0YWd2YWwgPSBQVFIyVEFHKCgoY2hhciAqKXN2aCktMSk7Ci0gI2Vsc2UKLS0JdGFndmFsID0g UFRSMlRBRygqc3ZoKTsKLSsgICAgICAgIHRhZ3ZhbCA9IFBUUjJUQUcoKnN2aCk7Ci0gI2VuZGlm Ci0gI2lmZGVmIEhBU19VNjQKLSAKLUBAIC00MzQ1LDMwICs0MzQzLDMwIEBAIHN0YXRpYyBpbnQg c3RvcmUocFRIWF8gc3RjeHRfdCAqY3h0LCBTViAqc3YpCi0gICAgICAgICAgIEVuc3VyZSBvbmx5 IGEgbmV3ZXIgU3RvcmFibGUgd2lsbCBiZSBhYmxlIHRvIHBhcnNlIHRoaXMgdGFnIGlkCi0gICAg ICAgICAgIGlmIGl0J3Mgb3ZlciB0aGUgMkcgbWFyay4KLSAgICAgICAgICovCi0tCWlmICh0YWd2 YWwgPiBJMzJfTUFYKSB7Ci0rICAgICAgICBpZiAodGFndmFsID4gSTMyX01BWCkgewotIAotLQkg ICAgVFJBQ0VNRSgoIm9iamVjdCAweCUiIFVWeGYgIiBzZWVuIGFzICMlIiBVVnVmLCBQVFIyVVYo c3YpLAotLQkJICAgICAoVVYpdGFndmFsKSk7Ci0rICAgICAgICAgICAgVFJBQ0VNRSgoIm9iamVj dCAweCUiIFVWeGYgIiBzZWVuIGFzICMlIiBVVnVmLCBQVFIyVVYoc3YpLAotKyAgICAgICAgICAg ICAgICAgICAgIChVVil0YWd2YWwpKTsKLSAKLS0JICAgIFBVVE1BUksoU1hfTE9CSkVDVCk7Ci0t CSAgICBQVVRNQVJLKFNYX09CSkVDVCk7Ci0tCSAgICBXNjRMRU4odGFndmFsKTsKLS0JICAgIHJl dHVybiAwOwotLQl9Ci0tCWVsc2UKLSsgICAgICAgICAgICBQVVRNQVJLKFNYX0xPQkpFQ1QpOwot KyAgICAgICAgICAgIFBVVE1BUksoU1hfT0JKRUNUKTsKLSsgICAgICAgICAgICBXNjRMRU4odGFn dmFsKTsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UK LSAjZW5kaWYKLS0JewotLQkgICAgSTMyIGx0YWd2YWw7Ci0rICAgICAgICB7Ci0rICAgICAgICAg ICAgSTMyIGx0YWd2YWw7Ci0gCi0tCSAgICBsdGFndmFsID0gaHRvbmwoKEkzMil0YWd2YWwpOwot KyAgICAgICAgICAgIGx0YWd2YWwgPSBodG9ubCgoSTMyKXRhZ3ZhbCk7Ci0gCi0tCSAgICBUUkFD RU1FKCgib2JqZWN0IDB4JSIgVVZ4ZiAiIHNlZW4gYXMgIyVkIiwgUFRSMlVWKHN2KSwKLS0JCSAg ICAgbnRvaGwobHRhZ3ZhbCkpKTsKLSsgICAgICAgICAgICBUUkFDRU1FKCgib2JqZWN0IDB4JSIg VVZ4ZiAiIHNlZW4gYXMgIyVkIiwgUFRSMlVWKHN2KSwKLSsgICAgICAgICAgICAgICAgICAgICBu dG9obChsdGFndmFsKSkpOwotIAotLQkgICAgUFVUTUFSSyhTWF9PQkpFQ1QpOwotLQkgICAgV1JJ VEVfSTMyKGx0YWd2YWwpOwotLQkgICAgcmV0dXJuIDA7Ci0tCX0KLSsgICAgICAgICAgICBQVVRN QVJLKFNYX09CSkVDVCk7Ci0rICAgICAgICAgICAgV1JJVEVfSTMyKGx0YWd2YWwpOwotKyAgICAg ICAgICAgIHJldHVybiAwOwotKyAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIC8qCi1AQCAtNDUy Myw3ICs0NTIxLDcgQEAgc3RhdGljIGludCBtYWdpY193cml0ZShwVEhYXyBzdGN4dF90ICpjeHQp Ci0gICogZGNsb25lKCkgYW5kIHN0b3JlKCkgaXMgcGVyZm9ybWVkIHRvIG1lbW9yeS4KLSAgKi8K LSBzdGF0aWMgaW50IGRvX3N0b3JlKHBUSFhfCi0tCVBlcmxJTyAqZiwKLSsgICAgICAgIFBlcmxJ TyAqZiwKLSAgICAgICAgIFNWICpzdiwKLSAgICAgICAgIGludCBvcHR5cGUsCi0gICAgICAgICBp bnQgbmV0d29ya19vcmRlciwKLUBAIC00NTczLDkgKzQ1NzEsOSBAQCBzdGF0aWMgaW50IGRvX3N0 b3JlKHBUSFhfCi0gCi0gICAgIGlmICghU3ZST0soc3YpKQotICAgICAgICAgQ1JPQUsoKCJOb3Qg YSByZWZlcmVuY2UiKSk7Ci0tICAgIHN2ID0gU3ZSVihzdik7CQkvKiBTbyBmb2xsb3cgaXQgdG8g a25vdyB3aGF0IHRvIHN0b3JlICovCi0rICAgIHN2ID0gU3ZSVihzdik7ICAgICAgICAgICAgICAv KiBTbyBmb2xsb3cgaXQgdG8ga25vdyB3aGF0IHRvIHN0b3JlICovCi0gCi0tICAgIC8qIAotKyAg ICAvKgotICAgICAgKiBJZiB3ZSdyZSBnb2luZyB0byBzdG9yZSB0byBtZW1vcnksIHJlc2V0IHRo ZSBidWZmZXIuCi0gICAgICAqLwotIAotQEAgLTQ1ODgsOCArNDU4Niw4IEBAIHN0YXRpYyBpbnQg ZG9fc3RvcmUocFRIWF8KLSAKLSAgICAgaW5pdF9zdG9yZV9jb250ZXh0KGFUSFhfIGN4dCwgZiwg b3B0eXBlLCBuZXR3b3JrX29yZGVyKTsKLSAKLS0gICAgaWYgKC0xID09IG1hZ2ljX3dyaXRlKGFU SFhfIGN4dCkpCS8qIEVtaXQgbWFnaWMgYW5kIElMUCBpbmZvICovCi0tICAgICAgICByZXR1cm4g MDsJCQkvKiBFcnJvciAqLwotKyAgICBpZiAoLTEgPT0gbWFnaWNfd3JpdGUoYVRIWF8gY3h0KSkg ICAvKiBFbWl0IG1hZ2ljIGFuZCBJTFAgaW5mbyAqLwotKyAgICAgICAgcmV0dXJuIDA7ICAgICAg ICAgICAgICAgICAgICAgICAvKiBFcnJvciAqLwotIAotICAgICAvKgotICAgICAgKiBSZWN1cnNp dmVseSBzdG9yZSBvYmplY3QuLi4KLUBAIC00NTk3LDcgKzQ1OTUsNyBAQCBzdGF0aWMgaW50IGRv X3N0b3JlKHBUSFhfCi0gCi0gICAgIEFTU0VSVChpc19zdG9yaW5nKGFUSFgpLCAoIndpdGhpbiBz dG9yZSBvcGVyYXRpb24iKSk7Ci0gCi0tICAgIHN0YXR1cyA9IHN0b3JlKGFUSFhfIGN4dCwgc3Yp OwkvKiBKdXN0IGRvIGl0ISAqLwotKyAgICBzdGF0dXMgPSBzdG9yZShhVEhYXyBjeHQsIHN2KTsg ICAgICAvKiBKdXN0IGRvIGl0ISAqLwotIAotICAgICAvKgotICAgICAgKiBJZiB0aGV5IGFza2Vk IGZvciBhIG1lbW9yeSBzdG9yZSBhbmQgdGhleSBwcm92aWRlZCBhbiBTViBwb2ludGVyLAotQEAg LTQ2NjksNyArNDY2Nyw3IEBAIHN0YXRpYyBTViAqcmV0cmlldmVfb3RoZXIocFRIWF8gc3RjeHRf dCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkKLSAgICAgaWYgKAotICAgICAgICAgY3h0LT52ZXJf bWFqb3IgIT0gU1RPUkFCTEVfQklOX01BSk9SICYmCi0gICAgICAgICBjeHQtPnZlcl9taW5vciAh PSBTVE9SQUJMRV9CSU5fTUlOT1IKLS0JKSB7Ci0rICAgICAgICApIHsKLSAgICAgICAgIENST0FL KCgiQ29ycnVwdGVkIHN0b3JhYmxlICVzIChiaW5hcnkgdiVkLiVkKSwgY3VycmVudCBpcyB2JWQu JWQiLAotICAgICAgICAgICAgICAgIGN4dC0+ZmlvID8gImZpbGUiIDogInN0cmluZyIsCi0gICAg ICAgICAgICAgICAgY3h0LT52ZXJfbWFqb3IsIGN4dC0+dmVyX21pbm9yLAotQEAgLTQ2ODAsNyAr NDY3OCw3IEBAIHN0YXRpYyBTViAqcmV0cmlldmVfb3RoZXIocFRIWF8gc3RjeHRfdCAqY3h0LCBj b25zdCBjaGFyICpjbmFtZSkKLSAgICAgICAgICAgICAgICBjeHQtPnZlcl9tYWpvciwgY3h0LT52 ZXJfbWlub3IpKTsKLSAgICAgfQotIAotLSAgICByZXR1cm4gKFNWICopIDA7CQkvKiBKdXN0IGlu IGNhc2UgKi8KLSsgICAgcmV0dXJuIChTViAqKSAwOyAgICAgICAgICAgIC8qIEp1c3QgaW4gY2Fz ZSAqLwotIH0KLSAKLSAvKgotQEAgLTQ3MDAsNyArNDY5OCw3IEBAIHN0YXRpYyBTViAqcmV0cmll dmVfaWR4X2JsZXNzZWQocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkKLSAg ICAgVFJBQ0VNRSgoInJldHJpZXZlX2lkeF9ibGVzc2VkICgjJWQpIiwgKGludCljeHQtPnRhZ251 bSkpOwotICAgICBBU1NFUlQoIWNuYW1lLCAoIm5vIGJsZXNzLWludG8gY2xhc3MgZ2l2ZW4gaGVy ZSwgZ290ICVzIiwgY25hbWUpKTsKLSAKLS0gICAgR0VUTUFSSyhpZHgpOwkJCS8qIEluZGV4IGNv ZGVkIG9uIGEgc2luZ2xlIGNoYXI/ICovCi0rICAgIEdFVE1BUksoaWR4KTsgICAgICAgICAgICAg ICAgICAgICAgIC8qIEluZGV4IGNvZGVkIG9uIGEgc2luZ2xlIGNoYXI/ICovCi0gICAgIGlmIChp ZHggJiAweDgwKQotICAgICAgICAgUkxFTihpZHgpOwotIAotQEAgLTQ3MTMsNyArNDcxMSw3IEBA IHN0YXRpYyBTViAqcmV0cmlldmVfaWR4X2JsZXNzZWQocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25z dCBjaGFyICpjbmFtZSkKLSAgICAgICAgIENST0FLKCgiQ2xhc3MgbmFtZSAjJSIgSVZkZiAiIHNo b3VsZCBoYXZlIGJlZW4gc2VlbiBhbHJlYWR5IiwKLSAgICAgICAgICAgICAgICAoSVYpIGlkeCkp OwotIAotLSAgICBjbGFzc25hbWUgPSBTdlBWWCgqc3ZhKTsJLyogV2Uga25vdyBpdCdzIGEgUFYs IGJ5IGNvbnN0cnVjdGlvbiAqLwotKyAgICBjbGFzc25hbWUgPSBTdlBWWCgqc3ZhKTsgICAgLyog V2Uga25vdyBpdCdzIGEgUFYsIGJ5IGNvbnN0cnVjdGlvbiAqLwotIAotICAgICBUUkFDRU1FKCgi Y2xhc3MgSUQgJWQgPT4gJXMiLCAoaW50KWlkeCwgY2xhc3NuYW1lKSk7Ci0gCi1AQCAtNDczNyw3 ICs0NzM1LDcgQEAgc3RhdGljIFNWICpyZXRyaWV2ZV9ibGVzc2VkKHBUSFhfIHN0Y3h0X3QgKmN4 dCwgY29uc3QgY2hhciAqY25hbWUpCi0gewotICAgICBVMzIgbGVuOwotICAgICBTViAqc3Y7Ci0t ICAgIGNoYXIgYnVmW0xHX0JMRVNTICsgMV07CQkvKiBBdm9pZCBtYWxsb2MoKSBpZiBwb3NzaWJs ZSAqLwotKyAgICBjaGFyIGJ1ZltMR19CTEVTUyArIDFdOyAgICAgICAgICAgICAvKiBBdm9pZCBt YWxsb2MoKSBpZiBwb3NzaWJsZSAqLwotICAgICBjaGFyICpjbGFzc25hbWUgPSBidWY7Ci0gICAg IGNoYXIgKm1hbGxvY2VkX2NsYXNzbmFtZSA9IE5VTEw7Ci0gCi1AQCAtNDc1Miw3ICs0NzUwLDcg QEAgc3RhdGljIFNWICpyZXRyaWV2ZV9ibGVzc2VkKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3Qg Y2hhciAqY25hbWUpCi0gICAgICAqIHNpbmdsZSBieXRlLCBhbmQgdGhlIHN0cmluZyBjYW4gYmUg cmVhZCBvbiB0aGUgc3RhY2suCi0gICAgICAqLwotIAotLSAgICBHRVRNQVJLKGxlbik7CQkJLyog TGVuZ3RoIGNvZGVkIG9uIGEgc2luZ2xlIGNoYXI/ICovCi0rICAgIEdFVE1BUksobGVuKTsgICAg ICAgICAgICAgICAgICAgICAgIC8qIExlbmd0aCBjb2RlZCBvbiBhIHNpbmdsZSBjaGFyPyAqLwot ICAgICBpZiAobGVuICYgMHg4MCkgewotICAgICAgICAgUkxFTihsZW4pOwotICAgICAgICAgVFJB Q0VNRSgoIioqIGFsbG9jYXRpbmcgJWxkIGJ5dGVzIGZvciBjbGFzcyBuYW1lIiwgKGxvbmcpbGVu KzEpKTsKLUBAIC00NzY3LDcgKzQ3NjUsNyBAQCBzdGF0aWMgU1YgKnJldHJpZXZlX2JsZXNzZWQo cFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkKLSAgICAgICAgIG1hbGxvY2Vk X2NsYXNzbmFtZSA9IGNsYXNzbmFtZTsKLSAgICAgfQotICAgICBTQUZFUFZSRUFEKGNsYXNzbmFt ZSwgKEkzMilsZW4sIG1hbGxvY2VkX2NsYXNzbmFtZSk7Ci0tICAgIGNsYXNzbmFtZVtsZW5dID0g J1wwJzsJCS8qIE1hcmsgc3RyaW5nIGVuZCAqLwotKyAgICBjbGFzc25hbWVbbGVuXSA9ICdcMCc7 ICAgICAgICAgICAgICAvKiBNYXJrIHN0cmluZyBlbmQgKi8KLSAKLSAgICAgLyoKLSAgICAgICog SXQncyBhIG5ldyBjbGFzc25hbWUsIG90aGVyd2lzZSBpdCB3b3VsZCBoYXZlIGJlZW4gYW4gU1hf SVhfQkxFU1MuCi1AQCAtNDgxNSw3ICs0ODEzLDcgQEAgc3RhdGljIFNWICpyZXRyaWV2ZV9ibGVz c2VkKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUpCi0gc3RhdGljIFNWICpy ZXRyaWV2ZV9ob29rX2NvbW1vbihwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNuYW1l LCBpbnQgbGFyZ2UpCi0gewotICAgICBVMzIgbGVuOwotLSAgICBjaGFyIGJ1ZltMR19CTEVTUyAr IDFdOwkJLyogQXZvaWQgbWFsbG9jKCkgaWYgcG9zc2libGUgKi8KLSsgICAgY2hhciBidWZbTEdf QkxFU1MgKyAxXTsgICAgICAgICAgICAgLyogQXZvaWQgbWFsbG9jKCkgaWYgcG9zc2libGUgKi8K LSAgICAgY2hhciAqY2xhc3NuYW1lID0gYnVmOwotICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Ci0g ICAgIFNUUkxFTiBsZW4yOwotQEAgLTQ4OTQsOSArNDg5Miw5IEBAIHN0YXRpYyBTViAqcmV0cmll dmVfaG9va19jb21tb24ocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSwgaW50 IGxhcmdlCi0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgZGVmYXVsdDoKLS0gICAg ICAgIHJldHVybiByZXRyaWV2ZV9vdGhlcihhVEhYXyBjeHQsIDApOwkvKiBMZXQgaXQgY3JvYWsg Ki8KLSsgICAgICAgIHJldHVybiByZXRyaWV2ZV9vdGhlcihhVEhYXyBjeHQsIDApOyAgICAvKiBM ZXQgaXQgY3JvYWsgKi8KLSAgICAgfQotLSAgICBTRUVOMF9OTihzdiwgMCk7CQkJCS8qIERvbid0 IGJsZXNzIHlldCAqLwotKyAgICBTRUVOMF9OTihzdiwgMCk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIERvbid0IGJsZXNzIHlldCAqLwotIAotICAgICAvKgotICAgICAgKiBXaGlsc3Qg ZmxhZ3MgdGVsbCB1cyB0byByZWN1cnNlLCBkbyBzby4KLUBAIC00OTM5LDcgKzQ5MzcsNyBAQCBz dGF0aWMgU1YgKnJldHJpZXZlX2hvb2tfY29tbW9uKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3Qg Y2hhciAqY25hbWUsIGludCBsYXJnZQotICAgICAgICAgICAgIENST0FLKCgiQ2xhc3MgbmFtZSAj JSIgSVZkZiAiIHNob3VsZCBoYXZlIGJlZW4gc2VlbiBhbHJlYWR5IiwKLSAgICAgICAgICAgICAg ICAgICAgKElWKSBpZHgpKTsKLSAKLS0gICAgICAgIGNsYXNzbmFtZSA9IFN2UFZYKCpzdmEpOwkv KiBXZSBrbm93IGl0J3MgYSBQViwgYnkgY29uc3RydWN0aW9uICovCi0rICAgICAgICBjbGFzc25h bWUgPSBTdlBWWCgqc3ZhKTsgICAgICAgIC8qIFdlIGtub3cgaXQncyBhIFBWLCBieSBjb25zdHJ1 Y3Rpb24gKi8KLSAgICAgICAgIFRSQUNFTUUoKCJjbGFzcyBJRCAlZCA9PiAlcyIsIChpbnQpaWR4 LCBjbGFzc25hbWUpKTsKLSAKLSAgICAgfSBlbHNlIHsKLUBAIC00OTcwLDcgKzQ5NjgsNyBAQCBz dGF0aWMgU1YgKnJldHJpZXZlX2hvb2tfY29tbW9uKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3Qg Y2hhciAqY25hbWUsIGludCBsYXJnZQotICAgICAgICAgfQotIAotICAgICAgICAgU0FGRVBWUkVB RChjbGFzc25hbWUsIChJMzIpbGVuLCBtYWxsb2NlZF9jbGFzc25hbWUpOwotLSAgICAgICAgY2xh c3NuYW1lW2xlbl0gPSAnXDAnOwkJLyogTWFyayBzdHJpbmcgZW5kICovCi0rICAgICAgICBjbGFz c25hbWVbbGVuXSA9ICdcMCc7ICAgICAgICAgIC8qIE1hcmsgc3RyaW5nIGVuZCAqLwotIAotICAg ICAgICAgLyoKLSAgICAgICAgICAqIFJlY29yZCBuZXcgY2xhc3NuYW1lLgotQEAgLTUwMTIsOCAr NTAxMCw4IEBAIHN0YXRpYyBTViAqcmV0cmlldmVfaG9va19jb21tb24ocFRIWF8gc3RjeHRfdCAq Y3h0LCBjb25zdCBjaGFyICpjbmFtZSwgaW50IGxhcmdlCi0gICAgIH0KLSAgICAgU3ZDVVJfc2V0 KGZyb3plbiwgbGVuMik7Ci0gICAgICpTdkVORChmcm96ZW4pID0gJ1wwJzsKLS0gICAgKHZvaWQp IFN2UE9LX29ubHkoZnJvemVuKTsJCS8qIFZhbGlkYXRlcyBzdHJpbmcgcG9pbnRlciAqLwotLSAg ICBpZiAoY3h0LT5zX3RhaW50ZWQpCQkJLyogSXMgaW5wdXQgc291cmNlIHRhaW50ZWQ/ICovCi0r ICAgICh2b2lkKSBTdlBPS19vbmx5KGZyb3plbik7ICAgICAgICAgIC8qIFZhbGlkYXRlcyBzdHJp bmcgcG9pbnRlciAqLwotKyAgICBpZiAoY3h0LT5zX3RhaW50ZWQpICAgICAgICAgICAgICAgICAv KiBJcyBpbnB1dCBzb3VyY2UgdGFpbnRlZD8gKi8KLSAgICAgICAgIFN2VEFJTlQoZnJvemVuKTsK LSAKLSAgICAgVFJBQ0VNRSgoImZyb3plbiBzdHJpbmc6ICVkIGJ5dGVzIiwgKGludClsZW4yKSk7 Ci1AQCAtNTAyNSwyMiArNTAyMywyMiBAQCBzdGF0aWMgU1YgKnJldHJpZXZlX2hvb2tfY29tbW9u KHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUsIGludCBsYXJnZQotICAgICBp ZiAoZmxhZ3MgJiBTSEZfSEFTX0xJU1QpIHsKLSAgICAgICAgIGlmIChmbGFncyAmIFNIRl9MQVJH RV9MSVNUTEVOKSB7Ci0gICAgICAgICAgICAgUkxFTihsZW4zKTsKLS0JICAgIGlmIChsZW4zIDwg MCkgewotKyAgICAgICAgICAgIGlmIChsZW4zIDwgMCkgewotICNpZmRlZiBIQVNfVTY0Ci0tCSAg ICAgICAgKytoYXNfbGFyZ2Vfb2lkczsKLS0JCWxlbjMgPSAtbGVuMzsKLSsgICAgICAgICAgICAg ICAgKytoYXNfbGFyZ2Vfb2lkczsKLSsgICAgICAgICAgICAgICAgbGVuMyA9IC1sZW4zOwotICNl bHNlCi0tCQlDUk9BSygoIkxhcmdlIG9iamVjdCBpZHMgaW4gaG9vayBkYXRhIG5vdCBzdXBwb3J0 ZWQgb24gMzItYml0IHBsYXRmb3JtcyIpKTsKLSsgICAgICAgICAgICAgICAgQ1JPQUsoKCJMYXJn ZSBvYmplY3QgaWRzIGluIGhvb2sgZGF0YSBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBwbGF0Zm9y bXMiKSk7Ci0gI2VuZGlmCi0tCSAgICAgICAgCi0tCSAgICB9Ci0tCX0KLS0JZWxzZQotKwotKyAg ICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UKLSAgICAgICAgICAgICBHRVRN QVJLKGxlbjMpOwotICAgICAgICAgaWYgKGxlbjMpIHsKLSAgICAgICAgICAgICBhdiA9IG5ld0FW KCk7Ci0tICAgICAgICAgICAgYXZfZXh0ZW5kKGF2LCBsZW4zICsgMSk7CS8qIExlYXZlIHJvb20g Zm9yIFswXSAqLwotLSAgICAgICAgICAgIEF2RklMTHAoYXYpID0gbGVuMzsJCS8qIEFib3V0IHRv IGJlIGZpbGxlZCBhbnl3YXkgKi8KLSsgICAgICAgICAgICBhdl9leHRlbmQoYXYsIGxlbjMgKyAx KTsgICAgLyogTGVhdmUgcm9vbSBmb3IgWzBdICovCi0rICAgICAgICAgICAgQXZGSUxMcChhdikg PSBsZW4zOyAgICAgICAgIC8qIEFib3V0IHRvIGJlIGZpbGxlZCBhbnl3YXkgKi8KLSAgICAgICAg IH0KLSAgICAgfQotIAotQEAgLTUwNTksMjMgKzUwNTcsMjMgQEAgc3RhdGljIFNWICpyZXRyaWV2 ZV9ob29rX2NvbW1vbihwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNuYW1lLCBpbnQg bGFyZ2UKLSAgICAgaWYgKGF2KSB7Ci0gICAgICAgICBTViAqKmFyeSA9IEF2QVJSQVkoYXYpOwot ICAgICAgICAgaW50IGk7Ci0tICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IGxlbjM7IGkrKykgewkv KiBXZSBsZWF2ZSBbMF0gYWxvbmUgKi8KLSsgICAgICAgIGZvciAoaSA9IDE7IGkgPD0gbGVuMzsg aSsrKSB7ICAgLyogV2UgbGVhdmUgWzBdIGFsb25lICovCi0gICAgICAgICAgICAgbnRhZ190IHRh ZzsKLSAgICAgICAgICAgICBTViAqKnN2aDsKLSAgICAgICAgICAgICBTViAqeHN2OwotIAotICNp ZmRlZiBIQVNfVTY0Ci0tCSAgICBpZiAoaGFzX2xhcmdlX29pZHMpIHsKLS0JCVJFQURfVTY0KHRh Zyk7Ci0tCSAgICB9Ci0tCSAgICBlbHNlIHsKLS0JCVUzMiB0bXA7Ci0tCQlSRUFEX0kzMih0bXAp OwotLQkJdGFnID0gbnRvaGwodG1wKTsKLS0JICAgIH0KLSsgICAgICAgICAgICBpZiAoaGFzX2xh cmdlX29pZHMpIHsKLSsgICAgICAgICAgICAgICAgUkVBRF9VNjQodGFnKTsKLSsgICAgICAgICAg ICB9Ci0rICAgICAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgICAgIFUzMiB0bXA7Ci0rICAg ICAgICAgICAgICAgIFJFQURfSTMyKHRtcCk7Ci0rICAgICAgICAgICAgICAgIHRhZyA9IG50b2hs KHRtcCk7Ci0rICAgICAgICAgICAgfQotICNlbHNlCi0tCSAgICBSRUFEX0kzMih0YWcpOwotLQkg ICAgdGFnID0gbnRvaGwodGFnKTsKLSsgICAgICAgICAgICBSRUFEX0kzMih0YWcpOwotKyAgICAg ICAgICAgIHRhZyA9IG50b2hsKHRhZyk7Ci0gI2VuZGlmCi0gCi0gICAgICAgICAgICAgc3ZoID0g YXZfZmV0Y2goY3h0LT5hc2VlbiwgdGFnLCBGQUxTRSk7Ci1AQCAtNTEzMiw3ICs1MTMwLDcgQEAg c3RhdGljIFNWICpyZXRyaWV2ZV9ob29rX2NvbW1vbihwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0 IGNoYXIgKmNuYW1lLCBpbnQgbGFyZ2UKLSAgICAgICAgIHN2X2ZyZWUoKFNWICopIGF2KTsKLSAg ICAgICAgIFN2UkVGQ05UX2RlYyhhdHRhY2hfaG9vayk7Ci0gICAgICAgICBpZiAoYXR0YWNoZWQg JiYKLS0gICAgICAgICAgICBTdlJPSyhhdHRhY2hlZCkgJiYgCi0rICAgICAgICAgICAgU3ZST0so YXR0YWNoZWQpICYmCi0gICAgICAgICAgICAgc3ZfZGVyaXZlZF9mcm9tKGF0dGFjaGVkLCBjbGFz c25hbWUpCi0gICAgICAgICAgICAgKSB7Ci0gICAgICAgICAgICAgVU5TRUUoKTsKLUBAIC01MjQw LDcgKzUyMzgsNyBAQCBzdGF0aWMgU1YgKnJldHJpZXZlX2hvb2tfY29tbW9uKHBUSFhfIHN0Y3h0 X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUsIGludCBsYXJnZQotIAotICAgICBUUkFDRU1FKCgi cmV0cmlldmluZyBtYWdpYyBvYmplY3QgZm9yIDB4JSIgVVZ4ZiAiLi4uIiwgUFRSMlVWKHN2KSkp OwotIAotLSAgICBydiA9IHJldHJpZXZlKGFUSFhfIGN4dCwgMCk7CS8qIFJldHJpZXZlIDxtYWdp YyBvYmplY3Q+ICovCi0rICAgIHJ2ID0gcmV0cmlldmUoYVRIWF8gY3h0LCAwKTsgICAgICAgIC8q IFJldHJpZXZlIDxtYWdpYyBvYmplY3Q+ICovCi0gCi0gICAgIFRSQUNFTUUoKCJyZXN0b3Jpbmcg dGhlIG1hZ2ljIG9iamVjdCAweCUiIFVWeGYgIiBwYXJ0IG9mIDB4JSIgVVZ4ZiwKLSAgICAgICAg ICAgICAgUFRSMlVWKHJ2KSwgUFRSMlVWKHN2KSkpOwotQEAgLTUyNjYsOSArNTI2NCw5IEBAIHN0 YXRpYyBTViAqcmV0cmlldmVfaG9va19jb21tb24ocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBj aGFyICpjbmFtZSwgaW50IGxhcmdlCi0gICAgICAqIG1lYW5zIHRoZSBob29rIGNhbm5vdCBrbm93 IGl0IGRlYWxzIHdpdGggYW4gb2JqZWN0IHdob3NlIHZhcmlhYmxlIGlzCi0gICAgICAqIHRpZWQu ICBCdXQgdGhpcyBpcyBoYXBwZW5pbmcgd2hlbiByZXRyaWV2aW5nICRvIGluIHRoZSBmb2xsb3dp bmcgY2FzZToKLSAgICAgICoKLS0gICAgICoJbXkgJWg7Ci0rICAgICAqICBteSAlaDsKLSAgICAg ICogIHRpZSAlaCwgJ0ZPTyc7Ci0tICAgICAqCW15ICRvID0gYmxlc3MgXCVoLCAnQkFSJzsKLSsg ICAgICogIG15ICRvID0gYmxlc3MgXCVoLCAnQkFSJzsKLSAgICAgICoKLSAgICAgICogVGhlICdC QVInIGNsYXNzIGlzIE5PVCB0aGUgb25lIHdoZXJlICVoIGlzIHRpZWQgaW50by4gIFRoZXJlZm9y ZSwgYXMKLSAgICAgICogZmFyIGFzIHRoZSAnQkFSJyBjbGFzcyBpcyBjb25jZXJuZWQsIHRoZSBm YWN0IHRoYXQgJWggaXMgbm90IGEgUkVBTAotQEAgLTUyODQsNyArNTI4Miw3IEBAIHN0YXRpYyBT ViAqcmV0cmlldmVfaG9va19jb21tb24ocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpj bmFtZSwgaW50IGxhcmdlCi0gICAgICAqLwotIAotICAgICBzdl9tYWdpYyhzdiwgcnYsIG10eXBl LCAoY2hhciAqKU5VTEwsIDApOwotLSAgICBTdlJFRkNOVF9kZWMocnYpOwkJCS8qIFVuZG8gcmVm Y250IGluYyBmcm9tIHN2X21hZ2ljKCkgKi8KLSsgICAgU3ZSRUZDTlRfZGVjKHJ2KTsgICAgICAg ICAgICAgICAgICAgLyogVW5kbyByZWZjbnQgaW5jIGZyb20gc3ZfbWFnaWMoKSAqLwotIAotICAg ICByZXR1cm4gc3Y7Ci0gfQotQEAgLTUzMjEsMTAgKzUzMTksMTAgQEAgc3RhdGljIFNWICpyZXRy aWV2ZV9yZWYocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkKLSAgICAgICAg IHN0YXNoID0gZ3Zfc3Rhc2hwdihjbmFtZSwgR1ZfQUREKTsKLSAgICAgZWxzZQotICAgICAgICAg c3Rhc2ggPSAwOwotLSAgICBTRUVOX05OKHJ2LCBzdGFzaCwgMCk7CS8qIFdpbGwgcmV0dXJuIGlm IHJ2IGlzIG51bGwgKi8KLSsgICAgU0VFTl9OTihydiwgc3Rhc2gsIDApOyAgICAgIC8qIFdpbGwg cmV0dXJuIGlmIHJ2IGlzIG51bGwgKi8KLSAgICAgc3YgPSByZXRyaWV2ZShhVEhYXyBjeHQsIDAp Oy8qIFJldHJpZXZlIDxvYmplY3Q+ICovCi0gICAgIGlmICghc3YpCi0tICAgICAgICByZXR1cm4g KFNWICopIDA7CS8qIEZhaWxlZCAqLwotKyAgICAgICAgcmV0dXJuIChTViAqKSAwOyAgICAgICAg LyogRmFpbGVkICovCi0gCi0gICAgIC8qCi0gICAgICAqIFdBUk5JTkc6IGJyZWFrcyBSViBlbmNh cHN1bGF0aW9uLgotQEAgLTUzMzUsNyArNTMzMyw3IEBAIHN0YXRpYyBTViAqcmV0cmlldmVfcmVm KHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUpCi0gICAgICAqCi0gICAgICAq IFdlIGRvbid0IHNheToKLSAgICAgICoKLS0gICAgICoJCVN2UlYocnYpID0gU3ZSRUZDTlRfaW5j KHN2KTsKLSsgICAgICogICAgICAgICAgU3ZSVihydikgPSBTdlJFRkNOVF9pbmMoc3YpOwotICAg ICAgKgotICAgICAgKiBoZXJlIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBjb3VudCB3ZSBnb3QgZnJv bSByZXRyaWV2ZSgpIGFib3ZlIGlzCi0gICAgICAqIGFscmVhZHkgY29ycmVjdDogaWYgdGhlIG9i amVjdCB3YXMgcmV0cmlldmVkIGZyb20gdGhlIGZpbGUsIHRoZW4KLUBAIC01MzUwLDcgKzUzNDgs NyBAQCBzdGF0aWMgU1YgKnJldHJpZXZlX3JlZihwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNo YXIgKmNuYW1lKQotICAgICAgICAgc3ZfdXBncmFkZShydiwgU1Z0X1JWKTsKLSAgICAgfQotIAot LSAgICBTdlJWX3NldChydiwgc3YpOwkJLyogJHJ2ID0gXCRzdiAqLwotKyAgICBTdlJWX3NldChy diwgc3YpOyAgICAgICAgICAgLyogJHJ2ID0gXCRzdiAqLwotICAgICBTdlJPS19vbihydik7Ci0g ICAgIC8qaWYgKGN4dC0+ZW50cnkgJiYgKytjeHQtPnJlZl9jbnQgPiBNQVhfUkVGX0NOVCkgewot ICAgICAgICAgQ1JPQUsoKCJNYXguIHJlY3Vyc2lvbiBkZXB0aCB3aXRoIG5lc3RlZCByZWZzIGV4 Y2VlZGVkIikpOwotQEAgLTU0MDQsMTkgKzU0MDIsMTkgQEAgc3RhdGljIFNWICpyZXRyaWV2ZV9v dmVybG9hZGVkKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUpCi0gCi0gICAg IHJ2ID0gTkVXU1YoMTAwMDIsIDApOwotICAgICBzdGFzaCA9IGNuYW1lID8gZ3Zfc3Rhc2hwdihj bmFtZSwgR1ZfQUREKSA6IDA7Ci0tICAgIFNFRU5fTk4ocnYsIHN0YXNoLCAwKTsJICAgICAvKiBX aWxsIHJldHVybiBpZiBydiBpcyBudWxsICovCi0rICAgIFNFRU5fTk4ocnYsIHN0YXNoLCAwKTsg ICAgICAgICAgIC8qIFdpbGwgcmV0dXJuIGlmIHJ2IGlzIG51bGwgKi8KLSAgICAgY3h0LT5pbl9y ZXRyaWV2ZV9vdmVybG9hZGVkID0gMTsgLyogc28gc3ZfYmxlc3MgZG9lc24ndCBjYWxsIFNfcmVz ZXRfYW1hZ2ljICovCi0gICAgIHN2ID0gcmV0cmlldmUoYVRIWF8gY3h0LCAwKTsgICAgIC8qIFJl dHJpZXZlIDxvYmplY3Q+ICovCi0gICAgIGN4dC0+aW5fcmV0cmlldmVfb3ZlcmxvYWRlZCA9IDA7 Ci0gICAgIGlmICghc3YpCi0tICAgICAgICByZXR1cm4gKFNWICopIDA7CS8qIEZhaWxlZCAqLwot KyAgICAgICAgcmV0dXJuIChTViAqKSAwOyAgICAgICAgLyogRmFpbGVkICovCi0gCi0gICAgIC8q Ci0gICAgICAqIFdBUk5JTkc6IGJyZWFrcyBSViBlbmNhcHN1bGF0aW9uLgotICAgICAgKi8KLSAK LSAgICAgU3ZVUEdSQURFKHJ2LCBTVnRfUlYpOwotLSAgICBTdlJWX3NldChydiwgc3YpOwkJLyog JHJ2ID0gXCRzdiAqLwotKyAgICBTdlJWX3NldChydiwgc3YpOyAgICAgICAgICAgLyogJHJ2ID0g XCRzdiAqLwotICAgICBTdlJPS19vbihydik7Ci0gCi0gICAgIC8qCi1AQCAtNTQ5NCwxNCArNTQ5 MiwxNCBAQCBzdGF0aWMgU1YgKnJldHJpZXZlX3RpZWRfYXJyYXkocFRIWF8gc3RjeHRfdCAqY3h0 LCBjb25zdCBjaGFyICpjbmFtZSkKLSAKLSAgICAgdHYgPSBORVdTVigxMDAwMiwgMCk7Ci0gICAg IHN0YXNoID0gY25hbWUgPyBndl9zdGFzaHB2KGNuYW1lLCBHVl9BREQpIDogMDsKLS0gICAgU0VF Tl9OTih0diwgc3Rhc2gsIDApOwkJLyogV2lsbCByZXR1cm4gaWYgdHYgaXMgbnVsbCAqLwotLSAg ICBzdiA9IHJldHJpZXZlKGFUSFhfIGN4dCwgMCk7CS8qIFJldHJpZXZlIDxvYmplY3Q+ICovCi0r ICAgIFNFRU5fTk4odHYsIHN0YXNoLCAwKTsgICAgICAgICAgICAgIC8qIFdpbGwgcmV0dXJuIGlm IHR2IGlzIG51bGwgKi8KLSsgICAgc3YgPSByZXRyaWV2ZShhVEhYXyBjeHQsIDApOyAgICAgICAg LyogUmV0cmlldmUgPG9iamVjdD4gKi8KLSAgICAgaWYgKCFzdikKLS0gICAgICAgIHJldHVybiAo U1YgKikgMDsJCS8qIEZhaWxlZCAqLwotKyAgICAgICAgcmV0dXJuIChTViAqKSAwOyAgICAgICAg ICAgICAgICAvKiBGYWlsZWQgKi8KLSAKLSAgICAgc3ZfdXBncmFkZSh0diwgU1Z0X1BWQVYpOwot ICAgICBzdl9tYWdpYyh0diwgc3YsICdQJywgKGNoYXIgKilOVUxMLCAwKTsKLS0gICAgU3ZSRUZD TlRfZGVjKHN2KTsJCQkvKiBVbmRvIHJlZmNudCBpbmMgZnJvbSBzdl9tYWdpYygpICovCi0rICAg IFN2UkVGQ05UX2RlYyhzdik7ICAgICAgICAgICAgICAgICAgIC8qIFVuZG8gcmVmY250IGluYyBm cm9tIHN2X21hZ2ljKCkgKi8KLSAKLSAgICAgVFJBQ0VNRSgoIm9rIChyZXRyaWV2ZV90aWVkX2Fy cmF5IGF0IDB4JSIgVVZ4ZiAiKSIsIFBUUjJVVih0dikpKTsKLSAKLUBAIC01NTI4LDE0ICs1NTI2 LDE0IEBAIHN0YXRpYyBTViAqcmV0cmlldmVfdGllZF9oYXNoKHBUSFhfIHN0Y3h0X3QgKmN4dCwg Y29uc3QgY2hhciAqY25hbWUpCi0gCi0gICAgIHR2ID0gTkVXU1YoMTAwMDIsIDApOwotICAgICBz dGFzaCA9IGNuYW1lID8gZ3Zfc3Rhc2hwdihjbmFtZSwgR1ZfQUREKSA6IDA7Ci0tICAgIFNFRU5f Tk4odHYsIHN0YXNoLCAwKTsJCS8qIFdpbGwgcmV0dXJuIGlmIHR2IGlzIG51bGwgKi8KLS0gICAg c3YgPSByZXRyaWV2ZShhVEhYXyBjeHQsIDApOwkvKiBSZXRyaWV2ZSA8b2JqZWN0PiAqLwotKyAg ICBTRUVOX05OKHR2LCBzdGFzaCwgMCk7ICAgICAgICAgICAgICAvKiBXaWxsIHJldHVybiBpZiB0 diBpcyBudWxsICovCi0rICAgIHN2ID0gcmV0cmlldmUoYVRIWF8gY3h0LCAwKTsgICAgICAgIC8q IFJldHJpZXZlIDxvYmplY3Q+ICovCi0gICAgIGlmICghc3YpCi0tICAgICAgICByZXR1cm4gKFNW ICopIDA7CQkvKiBGYWlsZWQgKi8KLSsgICAgICAgIHJldHVybiAoU1YgKikgMDsgICAgICAgICAg ICAgICAgLyogRmFpbGVkICovCi0gCi0gICAgIHN2X3VwZ3JhZGUodHYsIFNWdF9QVkhWKTsKLSAg ICAgc3ZfbWFnaWModHYsIHN2LCAnUCcsIChjaGFyICopTlVMTCwgMCk7Ci0tICAgIFN2UkVGQ05U X2RlYyhzdik7CQkJLyogVW5kbyByZWZjbnQgaW5jIGZyb20gc3ZfbWFnaWMoKSAqLwotKyAgICBT dlJFRkNOVF9kZWMoc3YpOyAgICAgICAgICAgICAgICAgICAvKiBVbmRvIHJlZmNudCBpbmMgZnJv bSBzdl9tYWdpYygpICovCi0gCi0gICAgIFRSQUNFTUUoKCJvayAocmV0cmlldmVfdGllZF9oYXNo IGF0IDB4JSIgVVZ4ZiAiKSIsIFBUUjJVVih0dikpKTsKLSAKLUBAIC01NTYyLDEwICs1NTYwLDEw IEBAIHN0YXRpYyBTViAqcmV0cmlldmVfdGllZF9zY2FsYXIocFRIWF8gc3RjeHRfdCAqY3h0LCBj b25zdCBjaGFyICpjbmFtZSkKLSAKLSAgICAgdHYgPSBORVdTVigxMDAwMiwgMCk7Ci0gICAgIHN0 YXNoID0gY25hbWUgPyBndl9zdGFzaHB2KGNuYW1lLCBHVl9BREQpIDogMDsKLS0gICAgU0VFTl9O Tih0diwgc3Rhc2gsIDApOwkJLyogV2lsbCByZXR1cm4gaWYgcnYgaXMgbnVsbCAqLwotLSAgICBz diA9IHJldHJpZXZlKGFUSFhfIGN4dCwgMCk7CS8qIFJldHJpZXZlIDxvYmplY3Q+ICovCi0rICAg IFNFRU5fTk4odHYsIHN0YXNoLCAwKTsgICAgICAgICAgICAgIC8qIFdpbGwgcmV0dXJuIGlmIHJ2 IGlzIG51bGwgKi8KLSsgICAgc3YgPSByZXRyaWV2ZShhVEhYXyBjeHQsIDApOyAgICAgICAgLyog UmV0cmlldmUgPG9iamVjdD4gKi8KLSAgICAgaWYgKCFzdikgewotLSAgICAgICAgcmV0dXJuIChT ViAqKSAwOwkJLyogRmFpbGVkICovCi0rICAgICAgICByZXR1cm4gKFNWICopIDA7ICAgICAgICAg ICAgICAgIC8qIEZhaWxlZCAqLwotICAgICB9Ci0gICAgIGVsc2UgaWYgKFN2VFlQRShzdikgIT0g U1Z0X05VTEwpIHsKLSAgICAgICAgIG9iaiA9IHN2OwotQEAgLTU2MDUsMTkgKzU2MDMsMTkgQEAg c3RhdGljIFNWICpyZXRyaWV2ZV90aWVkX2tleShwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNo YXIgKmNuYW1lKQotIAotICAgICB0diA9IE5FV1NWKDEwMDAyLCAwKTsKLSAgICAgc3Rhc2ggPSBj bmFtZSA/IGd2X3N0YXNocHYoY25hbWUsIEdWX0FERCkgOiAwOwotLSAgICBTRUVOX05OKHR2LCBz dGFzaCwgMCk7CQkvKiBXaWxsIHJldHVybiBpZiB0diBpcyBudWxsICovCi0tICAgIHN2ID0gcmV0 cmlldmUoYVRIWF8gY3h0LCAwKTsJLyogUmV0cmlldmUgPG9iamVjdD4gKi8KLSsgICAgU0VFTl9O Tih0diwgc3Rhc2gsIDApOyAgICAgICAgICAgICAgLyogV2lsbCByZXR1cm4gaWYgdHYgaXMgbnVs bCAqLwotKyAgICBzdiA9IHJldHJpZXZlKGFUSFhfIGN4dCwgMCk7ICAgICAgICAvKiBSZXRyaWV2 ZSA8b2JqZWN0PiAqLwotICAgICBpZiAoIXN2KQotLSAgICAgICAgcmV0dXJuIChTViAqKSAwOwkJ LyogRmFpbGVkICovCi0rICAgICAgICByZXR1cm4gKFNWICopIDA7ICAgICAgICAgICAgICAgIC8q IEZhaWxlZCAqLwotIAotLSAgICBrZXkgPSByZXRyaWV2ZShhVEhYXyBjeHQsIDApOwkvKiBSZXRy aWV2ZSA8a2V5PiAqLwotKyAgICBrZXkgPSByZXRyaWV2ZShhVEhYXyBjeHQsIDApOyAgICAgICAv KiBSZXRyaWV2ZSA8a2V5PiAqLwotICAgICBpZiAoIWtleSkKLS0gICAgICAgIHJldHVybiAoU1Yg KikgMDsJCS8qIEZhaWxlZCAqLwotKyAgICAgICAgcmV0dXJuIChTViAqKSAwOyAgICAgICAgICAg ICAgICAvKiBGYWlsZWQgKi8KLSAKLSAgICAgc3ZfdXBncmFkZSh0diwgU1Z0X1BWTUcpOwotICAg ICBzdl9tYWdpYyh0diwgc3YsICdwJywgKGNoYXIgKilrZXksIEhFZl9TVktFWSk7Ci0tICAgIFN2 UkVGQ05UX2RlYyhrZXkpOwkJCS8qIFVuZG8gcmVmY250IGluYyBmcm9tIHN2X21hZ2ljKCkgKi8K LS0gICAgU3ZSRUZDTlRfZGVjKHN2KTsJCQkvKiBVbmRvIHJlZmNudCBpbmMgZnJvbSBzdl9tYWdp YygpICovCi0rICAgIFN2UkVGQ05UX2RlYyhrZXkpOyAgICAgICAgICAgICAgICAgIC8qIFVuZG8g cmVmY250IGluYyBmcm9tIHN2X21hZ2ljKCkgKi8KLSsgICAgU3ZSRUZDTlRfZGVjKHN2KTsgICAg ICAgICAgICAgICAgICAgLyogVW5kbyByZWZjbnQgaW5jIGZyb20gc3ZfbWFnaWMoKSAqLwotIAot ICAgICByZXR1cm4gdHY7Ci0gfQotQEAgLTU2NDMsMTYgKzU2NDEsMTYgQEAgc3RhdGljIFNWICpy ZXRyaWV2ZV90aWVkX2lkeChwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNuYW1lKQot IAotICAgICB0diA9IE5FV1NWKDEwMDAyLCAwKTsKLSAgICAgc3Rhc2ggPSBjbmFtZSA/IGd2X3N0 YXNocHYoY25hbWUsIEdWX0FERCkgOiAwOwotLSAgICBTRUVOX05OKHR2LCBzdGFzaCwgMCk7CQkv KiBXaWxsIHJldHVybiBpZiB0diBpcyBudWxsICovCi0tICAgIHN2ID0gcmV0cmlldmUoYVRIWF8g Y3h0LCAwKTsJLyogUmV0cmlldmUgPG9iamVjdD4gKi8KLSsgICAgU0VFTl9OTih0diwgc3Rhc2gs IDApOyAgICAgICAgICAgICAgLyogV2lsbCByZXR1cm4gaWYgdHYgaXMgbnVsbCAqLwotKyAgICBz diA9IHJldHJpZXZlKGFUSFhfIGN4dCwgMCk7ICAgICAgICAvKiBSZXRyaWV2ZSA8b2JqZWN0PiAq LwotICAgICBpZiAoIXN2KQotLSAgICAgICAgcmV0dXJuIChTViAqKSAwOwkJLyogRmFpbGVkICov Ci0rICAgICAgICByZXR1cm4gKFNWICopIDA7ICAgICAgICAgICAgICAgIC8qIEZhaWxlZCAqLwot IAotLSAgICBSTEVOKGlkeCk7CQkJCS8qIFJldHJpZXZlIDxpZHg+ICovCi0rICAgIFJMRU4oaWR4 KTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJldHJpZXZlIDxpZHg+ICovCi0gCi0gICAg IHN2X3VwZ3JhZGUodHYsIFNWdF9QVk1HKTsKLSAgICAgc3ZfbWFnaWModHYsIHN2LCAncCcsIChj aGFyICopTlVMTCwgaWR4KTsKLS0gICAgU3ZSRUZDTlRfZGVjKHN2KTsJCQkvKiBVbmRvIHJlZmNu dCBpbmMgZnJvbSBzdl9tYWdpYygpICovCi0rICAgIFN2UkVGQ05UX2RlYyhzdik7ICAgICAgICAg ICAgICAgICAgIC8qIFVuZG8gcmVmY250IGluYyBmcm9tIHN2X21hZ2ljKCkgKi8KLSAKLSAgICAg cmV0dXJuIHR2OwotIH0KLUBAIC01Njc1LDcgKzU2NzMsNyBAQCBzdGF0aWMgU1YgKmdldF9sc3Ry aW5nKHBUSFhfIHN0Y3h0X3QgKmN4dCwgVVYgbGVuLCBpbnQgaXN1dGY4LCBjb25zdCBjaGFyICpj bmFtZQotIAotICAgICBzdiA9IE5FV1NWKDEwMDAyLCBsZW4pOwotICAgICBzdGFzaCA9IGNuYW1l ID8gZ3Zfc3Rhc2hwdihjbmFtZSwgR1ZfQUREKSA6IDA7Ci0tICAgIFNFRU5fTk4oc3YsIHN0YXNo LCAwKTsJLyogQXNzb2NpYXRlIHRoaXMgbmV3IHNjYWxhciB3aXRoIHRhZyAidGFnbnVtIiAqLwot KyAgICBTRUVOX05OKHN2LCBzdGFzaCwgMCk7ICAgICAgLyogQXNzb2NpYXRlIHRoaXMgbmV3IHNj YWxhciB3aXRoIHRhZyAidGFnbnVtIiAqLwotIAotICAgICBpZiAobGVuID09ICAwKSB7Ci0gICAg ICAgICBTdlBWQ0xFQVIoc3YpOwotQEAgLTU2OTIsMTEgKzU2OTAsMTEgQEAgc3RhdGljIFNWICpn ZXRfbHN0cmluZyhwVEhYXyBzdGN4dF90ICpjeHQsIFVWIGxlbiwgaW50IGlzdXRmOCwgY29uc3Qg Y2hhciAqY25hbWUKLSAgICAgICovCi0gCi0gICAgIFNBRkVSRUFEKFN2UFZYKHN2KSwgbGVuLCBz dik7Ci0tICAgIFN2Q1VSX3NldChzdiwgbGVuKTsJCQkvKiBSZWNvcmQgQyBzdHJpbmcgbGVuZ3Ro ICovCi0tICAgICpTdkVORChzdikgPSAnXDAnOwkJCS8qIEVuc3VyZSBpdCdzIG51bGwgdGVybWlu YXRlZCBhbnl3YXkgKi8KLS0gICAgKHZvaWQpIFN2UE9LX29ubHkoc3YpOwkJLyogVmFsaWRhdGUg c3RyaW5nIHBvaW50ZXIgKi8KLS0gICAgaWYgKGN4dC0+c190YWludGVkKQkJCS8qIElzIGlucHV0 IHNvdXJjZSB0YWludGVkPyAqLwotLSAgICAgICAgU3ZUQUlOVChzdik7CQkJLyogRXh0ZXJuYWwg ZGF0YSBjYW5ub3QgYmUgdHJ1c3RlZCAqLwotKyAgICBTdkNVUl9zZXQoc3YsIGxlbik7ICAgICAg ICAgICAgICAgICAvKiBSZWNvcmQgQyBzdHJpbmcgbGVuZ3RoICovCi0rICAgICpTdkVORChzdikg PSAnXDAnOyAgICAgICAgICAgICAgICAgIC8qIEVuc3VyZSBpdCdzIG51bGwgdGVybWluYXRlZCBh bnl3YXkgKi8KLSsgICAgKHZvaWQpIFN2UE9LX29ubHkoc3YpOyAgICAgICAgICAgICAgLyogVmFs aWRhdGUgc3RyaW5nIHBvaW50ZXIgKi8KLSsgICAgaWYgKGN4dC0+c190YWludGVkKSAgICAgICAg ICAgICAgICAgLyogSXMgaW5wdXQgc291cmNlIHRhaW50ZWQ/ICovCi0rICAgICAgICBTdlRBSU5U KHN2KTsgICAgICAgICAgICAgICAgICAgIC8qIEV4dGVybmFsIGRhdGEgY2Fubm90IGJlIHRydXN0 ZWQgKi8KLSAKLSAgICAgLyogQ2hlY2sgZm9yIENWRS0yMTUtMTU5MiAqLwotICAgICBpZiAoY25h bWUgJiYgbGVuID09IDEzICYmIHN0ckVRYyhjbmFtZSwgIkNHSVRlbXBGaWxlIikKLUBAIC01ODI0 LDcgKzU4MjIsNyBAQCBzdGF0aWMgU1YgKnJldHJpZXZlX3ZzdHJpbmcocFRIWF8gc3RjeHRfdCAq Y3h0LCBjb25zdCBjaGFyICpjbmFtZSkKLSAgICAgUkVBRChzLCBsZW4pOwotICAgICBzdiA9IHJl dHJpZXZlKGFUSFhfIGN4dCwgY25hbWUpOwotICAgICBpZiAoIXN2KQotLSAgICAgICAgcmV0dXJu IChTViAqKSAwOwkJLyogRmFpbGVkICovCi0rICAgICAgICByZXR1cm4gKFNWICopIDA7ICAgICAg ICAgICAgICAgIC8qIEZhaWxlZCAqLwotICAgICBzdl9tYWdpYyhzdixOVUxMLFBFUkxfTUFHSUNf dnN0cmluZyxzLGxlbik7Ci0gICAgIC8qIDUuMTAuMCBhbmQgZWFybGllciBzZWVtIHRvIG5lZWQg dGhpcyAqLwotICAgICBTdlJNQUdJQ0FMX29uKHN2KTsKLUBAIC01ODY2LDcgKzU4NjQsNyBAQCBz dGF0aWMgU1YgKnJldHJpZXZlX2x2c3RyaW5nKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hh ciAqY25hbWUpCi0gICAgIHN2ID0gcmV0cmlldmUoYVRIWF8gY3h0LCBjbmFtZSk7Ci0gICAgIGlm ICghc3YpIHsKLSAgICAgICAgIFNhZmVmcmVlKHMpOwotLSAgICAgICAgcmV0dXJuIChTViAqKSAw OwkJLyogRmFpbGVkICovCi0rICAgICAgICByZXR1cm4gKFNWICopIDA7ICAgICAgICAgICAgICAg IC8qIEZhaWxlZCAqLwotICAgICB9Ci0gICAgIHN2X21hZ2ljKHN2LE5VTEwsUEVSTF9NQUdJQ192 c3RyaW5nLHMsbGVuKTsKLSAgICAgLyogNS4xMC4wIGFuZCBlYXJsaWVyIHNlZW0gdG8gbmVlZCB0 aGlzICovCi1AQCAtNTg5OSw3ICs1ODk3LDcgQEAgc3RhdGljIFNWICpyZXRyaWV2ZV9pbnRlZ2Vy KHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUpCi0gICAgIFJFQUQoJml2LCBz aXplb2YoaXYpKTsKLSAgICAgc3YgPSBuZXdTVml2KGl2KTsKLSAgICAgc3Rhc2ggPSBjbmFtZSA/ IGd2X3N0YXNocHYoY25hbWUsIEdWX0FERCkgOiAwOwotLSAgICBTRUVOX05OKHN2LCBzdGFzaCwg MCk7CS8qIEFzc29jaWF0ZSB0aGlzIG5ldyBzY2FsYXIgd2l0aCB0YWcgInRhZ251bSIgKi8KLSsg ICAgU0VFTl9OTihzdiwgc3Rhc2gsIDApOyAgICAgIC8qIEFzc29jaWF0ZSB0aGlzIG5ldyBzY2Fs YXIgd2l0aCB0YWcgInRhZ251bSIgKi8KLSAKLSAgICAgVFJBQ0VNRSgoImludGVnZXIgJSIgSVZk ZiwgaXYpKTsKLSAgICAgVFJBQ0VNRSgoIm9rIChyZXRyaWV2ZV9pbnRlZ2VyIGF0IDB4JSIgVVZ4 ZiAiKSIsIFBUUjJVVihzdikpKTsKLUBAIC01OTczLDEyICs1OTcxLDEyIEBAIHN0YXRpYyBTViAq cmV0cmlldmVfbG9iamVjdChwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNuYW1lKQot ICNpZmRlZiBIQVNfVTY0Ci0gCi0gICAgIGlmICh0eXBlID09IFNYX0ZMQUdfSEFTSCkgewotLQkv KiB3ZSB3cml0ZSB0aGUgZmxhZ3MgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG9wLiAgSSBjb3VsZCBo YXZlCi0tCSAgIGNoYW5nZWQgdGhlIHdyaXRlciwgYnV0IHRoaXMgbWF5IGFsbG93IHNvbWVvbmUg dG8gcmVjb3ZlcgotLQkgICBkYXRhIHRoZXkncmUgYWxyZWFkeSBmcm96ZW4sIHRob3VnaCBzdWNo IGEgdmVyeSBsYXJnZSBoYXNoCi0tCSAgIHNlZW1zIHVubGlrZWx5LgotLQkqLwotLQlHRVRNQVJL KGhhc2hfZmxhZ3MpOwotKyAgICAgICAgLyogd2Ugd3JpdGUgdGhlIGZsYWdzIGltbWVkaWF0ZWx5 IGFmdGVyIHRoZSBvcC4gIEkgY291bGQgaGF2ZQotKyAgICAgICAgICAgY2hhbmdlZCB0aGUgd3Jp dGVyLCBidXQgdGhpcyBtYXkgYWxsb3cgc29tZW9uZSB0byByZWNvdmVyCi0rICAgICAgICAgICBk YXRhIHRoZXkncmUgYWxyZWFkeSBmcm96ZW4sIHRob3VnaCBzdWNoIGEgdmVyeSBsYXJnZSBoYXNo Ci0rICAgICAgICAgICBzZWVtcyB1bmxpa2VseS4KLSsgICAgICAgICovCi0rICAgICAgICBHRVRN QVJLKGhhc2hfZmxhZ3MpOwotICAgICB9Ci0gICAgIGVsc2UgaWYgKHR5cGUgPT0gU1hfSE9PSykg ewotICAgICAgICAgcmV0dXJuIHJldHJpZXZlX2hvb2tfY29tbW9uKGFUSFhfIGN4dCwgY25hbWUs IFRSVUUpOwotQEAgLTYwMjUsNyArNjAyMyw3IEBAIHN0YXRpYyBTViAqcmV0cmlldmVfbG9iamVj dChwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNuYW1lKQotICNlbHNlCi0gICAgIFBF UkxfVU5VU0VEX0FSRyhjbmFtZSk7Ci0gCi0tICAgIC8qIHByZXZpb3VzbHkgdGhpcyAoYnJva2Vu bHkpIGNoZWNrZWQgdGhlIGxlbmd0aCB2YWx1ZSBhbmQgb25seSBmYWlsZWQgaWYgCi0rICAgIC8q IHByZXZpb3VzbHkgdGhpcyAoYnJva2VubHkpIGNoZWNrZWQgdGhlIGxlbmd0aCB2YWx1ZSBhbmQg b25seSBmYWlsZWQgaWYKLSAgICAgICAgdGhlIGxlbmd0aCB3YXMgb3ZlciA0Ry4KLSAgICAgICAg U2luY2UgdGhpcyBvcCBzaG91bGQgb25seSBvY2N1ciB3aXRoIG9iamVjdHMgb3ZlciA0R0IgKG9y IDJHQikgd2UgY2FuIGp1c3QKLSAgICAgICAgcmVqZWN0IGl0LgotQEAgLTYwNTcsNyArNjA1NSw3 IEBAIHN0YXRpYyBTViAqcmV0cmlldmVfbmV0aW50KHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3Qg Y2hhciAqY25hbWUpCi0gICAgIFRSQUNFTUUoKCJuZXR3b3JrIGludGVnZXIgKGFzLWlzKSAlZCIs IGl2KSk7Ci0gI2VuZGlmCi0gICAgIHN0YXNoID0gY25hbWUgPyBndl9zdGFzaHB2KGNuYW1lLCBH Vl9BREQpIDogMDsKLS0gICAgU0VFTl9OTihzdiwgc3Rhc2gsIDApOwkvKiBBc3NvY2lhdGUgdGhp cyBuZXcgc2NhbGFyIHdpdGggdGFnICJ0YWdudW0iICovCi0rICAgIFNFRU5fTk4oc3YsIHN0YXNo LCAwKTsgICAgICAvKiBBc3NvY2lhdGUgdGhpcyBuZXcgc2NhbGFyIHdpdGggdGFnICJ0YWdudW0i ICovCi0gCi0gICAgIFRSQUNFTUUoKCJvayAocmV0cmlldmVfbmV0aW50IGF0IDB4JSIgVVZ4ZiAi KSIsIFBUUjJVVihzdikpKTsKLSAKLUBAIC02MDgxLDcgKzYwNzksNyBAQCBzdGF0aWMgU1YgKnJl dHJpZXZlX2RvdWJsZShwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNuYW1lKQotICAg ICBSRUFEKCZudiwgc2l6ZW9mKG52KSk7Ci0gICAgIHN2ID0gbmV3U1Zudihudik7Ci0gICAgIHN0 YXNoID0gY25hbWUgPyBndl9zdGFzaHB2KGNuYW1lLCBHVl9BREQpIDogMDsKLS0gICAgU0VFTl9O Tihzdiwgc3Rhc2gsIDApOwkvKiBBc3NvY2lhdGUgdGhpcyBuZXcgc2NhbGFyIHdpdGggdGFnICJ0 YWdudW0iICovCi0rICAgIFNFRU5fTk4oc3YsIHN0YXNoLCAwKTsgICAgICAvKiBBc3NvY2lhdGUg dGhpcyBuZXcgc2NhbGFyIHdpdGggdGFnICJ0YWdudW0iICovCi0gCi0gICAgIFRSQUNFTUUoKCJk b3VibGUgJSIgTlZmZiwgbnYpKTsKLSAgICAgVFJBQ0VNRSgoIm9rIChyZXRyaWV2ZV9kb3VibGUg YXQgMHglIiBVVnhmICIpIiwgUFRSMlVWKHN2KSkpOwotQEAgLTYxMDQsNyArNjEwMiw3IEBAIHN0 YXRpYyBTViAqcmV0cmlldmVfYnl0ZShwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNu YW1lKQotICAgICAvKiBNU1ZDIDIwMTcgZG9lc24ndCBoYW5kbGUgdGhlIEFJWCB3b3JrYXJvdW5k IHdlbGwgKi8KLSAgICAgaW50IHRtcDsKLSAjZWxzZQotLSAgICBzaWduZWQgY2hhciB0bXA7CS8q IFdvcmthcm91bmQgZm9yIEFJWCBjYyBidWcgLS1ILk1lcmlqbiBCcmFuZCAqLwotKyAgICBzaWdu ZWQgY2hhciB0bXA7ICAgIC8qIFdvcmthcm91bmQgZm9yIEFJWCBjYyBidWcgLS1ILk1lcmlqbiBC cmFuZCAqLwotICNlbmRpZgotIAotICAgICBUUkFDRU1FKCgicmV0cmlldmVfYnl0ZSAoIyVkKSIs IChpbnQpY3h0LT50YWdudW0pKTsKLUBAIC02MTE0LDcgKzYxMTIsNyBAQCBzdGF0aWMgU1YgKnJl dHJpZXZlX2J5dGUocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkKLSAgICAg dG1wID0gKHVuc2lnbmVkIGNoYXIpIHNpdiAtIDEyODsKLSAgICAgc3YgPSBuZXdTVml2KHRtcCk7 Ci0gICAgIHN0YXNoID0gY25hbWUgPyBndl9zdGFzaHB2KGNuYW1lLCBHVl9BREQpIDogMDsKLS0g ICAgU0VFTl9OTihzdiwgc3Rhc2gsIDApOwkvKiBBc3NvY2lhdGUgdGhpcyBuZXcgc2NhbGFyIHdp dGggdGFnICJ0YWdudW0iICovCi0rICAgIFNFRU5fTk4oc3YsIHN0YXNoLCAwKTsgICAgICAvKiBB c3NvY2lhdGUgdGhpcyBuZXcgc2NhbGFyIHdpdGggdGFnICJ0YWdudW0iICovCi0gCi0gICAgIFRS QUNFTUUoKCJieXRlICVkIiwgdG1wKSk7Ci0gICAgIFRSQUNFTUUoKCJvayAocmV0cmlldmVfYnl0 ZSBhdCAweCUiIFVWeGYgIikiLCBQVFIyVVYoc3YpKSk7Ci1AQCAtNjI0Nyw3ICs2MjQ1LDcgQEAg c3RhdGljIFNWICpyZXRyaWV2ZV9hcnJheShwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIg KmNuYW1lKQotICAgICBpZiAobGVuKQotICAgICAgICAgYXZfZXh0ZW5kKGF2LCBsZW4pOwotICAg ICBlbHNlCi0tICAgICAgICByZXR1cm4gKFNWICopIGF2OwkvKiBObyBkYXRhIGZvbGxvdyBpZiBh cnJheSBpcyBlbXB0eSAqLwotKyAgICAgICAgcmV0dXJuIChTViAqKSBhdjsgICAgICAgLyogTm8g ZGF0YSBmb2xsb3cgaWYgYXJyYXkgaXMgZW1wdHkgKi8KLSAKLSAgICAgLyoKLSAgICAgICogTm93 IGdldCBlYWNoIGl0ZW0gaW4gdHVybi4uLgotQEAgLTYyNTUsNyArNjI1Myw3IEBAIHN0YXRpYyBT ViAqcmV0cmlldmVfYXJyYXkocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkK LSAKLSAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICBUUkFDRU1FKCgi KCMlZCkgaXRlbSIsIChpbnQpaSkpOwotLSAgICAgICAgc3YgPSByZXRyaWV2ZShhVEhYXyBjeHQs IDApOwkvKiBSZXRyaWV2ZSBpdGVtICovCi0rICAgICAgICBzdiA9IHJldHJpZXZlKGFUSFhfIGN4 dCwgMCk7ICAgIC8qIFJldHJpZXZlIGl0ZW0gKi8KLSAgICAgICAgIGlmICghc3YpCi0gICAgICAg ICAgICAgcmV0dXJuIChTViAqKSAwOwotICAgICAgICAgaWYgKHN2ID09ICZQTF9zdl91bmRlZikg ewotQEAgLTYzMDQsNyArNjMwMiw3IEBAIHN0YXRpYyBTViAqZ2V0X2xhcnJheShwVEhYXyBzdGN4 dF90ICpjeHQsIFVWIGxlbiwgY29uc3QgY2hhciAqY25hbWUpCi0gCi0gICAgIGZvciAoaSA9IDA7 IGkgPCBsZW47IGkrKykgewotICAgICAgICAgVFJBQ0VNRSgoIigjJWQpIGl0ZW0iLCAoaW50KWkp KTsKLS0gICAgICAgIHN2ID0gcmV0cmlldmUoYVRIWF8gY3h0LCAwKTsJCS8qIFJldHJpZXZlIGl0 ZW0gKi8KLSsgICAgICAgIHN2ID0gcmV0cmlldmUoYVRIWF8gY3h0LCAwKTsgICAgICAgICAgICAv KiBSZXRyaWV2ZSBpdGVtICovCi0gICAgICAgICBpZiAoIXN2KQotICAgICAgICAgICAgIHJldHVy biAoU1YgKikgMDsKLSAgICAgICAgIGlmIChzdiA9PSAmUExfc3ZfdW5kZWYpIHsKLUBAIC02MzQ1 LDcgKzYzNDMsNyBAQCBzdGF0aWMgU1YgKmdldF9saGFzaChwVEhYXyBzdGN4dF90ICpjeHQsIFVW IGxlbiwgaW50IGhhc2hfZmxhZ3MsIGNvbnN0IGNoYXIgKmNuYQotIAotICNpZmRlZiBIQVNfUkVT VFJJQ1RFRF9IQVNIRVMKLSAgICAgUEVSTF9VTlVTRURfQVJHKGhhc2hfZmxhZ3MpOwotLSNlbHNl ICAgICAgICAKLSsjZWxzZQotICAgICBpZiAoaGFzaF9mbGFncyAmIFNIVl9SRVNUUklDVEVEKSB7 Ci0gICAgICAgICBpZiAoY3h0LT5kZXJlc3RyaWN0IDwgMCkKLSAgICAgICAgICAgICBjeHQtPmRl cmVzdHJpY3QgPSAoU3ZUUlVFCi1AQCAtNjM1OSwxMSArNjM1NywxMSBAQCBzdGF0aWMgU1YgKmdl dF9saGFzaChwVEhYXyBzdGN4dF90ICpjeHQsIFVWIGxlbiwgaW50IGhhc2hfZmxhZ3MsIGNvbnN0 IGNoYXIgKmNuYQotICAgICBUUkFDRU1FKCgic2l6ZSA9ICVsdSIsICh1bnNpZ25lZCBsb25nKWxl bikpOwotICAgICBodiA9IG5ld0hWKCk7Ci0gICAgIHN0YXNoID0gY25hbWUgPyBndl9zdGFzaHB2 KGNuYW1lLCBHVl9BREQpIDogMDsKLS0gICAgU0VFTl9OTihodiwgc3Rhc2gsIDApOwkvKiBXaWxs IHJldHVybiBpZiB0YWJsZSBub3QgYWxsb2NhdGVkIHByb3Blcmx5ICovCi0rICAgIFNFRU5fTk4o aHYsIHN0YXNoLCAwKTsgICAgICAvKiBXaWxsIHJldHVybiBpZiB0YWJsZSBub3QgYWxsb2NhdGVk IHByb3Blcmx5ICovCi0gICAgIGlmIChsZW4gPT0gMCkKLS0gICAgICAgIHJldHVybiAoU1YgKikg aHY7CS8qIE5vIGRhdGEgZm9sbG93IGlmIHRhYmxlIGVtcHR5ICovCi0rICAgICAgICByZXR1cm4g KFNWICopIGh2OyAgICAgICAvKiBObyBkYXRhIGZvbGxvdyBpZiB0YWJsZSBlbXB0eSAqLwotICAg ICBUUkFDRU1FKCgic3BsaXQgJWx1IiwgKHVuc2lnbmVkIGxvbmcpbGVuKzEpKTsKLS0gICAgaHZf a3NwbGl0KGh2LCBsZW4rMSk7CS8qIHByZS1leHRlbmQgaGFzaCB0byBzYXZlIG11bHRpcGxlIHNw bGl0cyAqLwotKyAgICBodl9rc3BsaXQoaHYsIGxlbisxKTsgICAgICAgLyogcHJlLWV4dGVuZCBo YXNoIHRvIHNhdmUgbXVsdGlwbGUgc3BsaXRzICovCi0gCi0gICAgIC8qCi0gICAgICAqIE5vdyBn ZXQgZWFjaCBrZXkvdmFsdWUgcGFpciBpbiB0dXJuLi4uCi1AQCAtNjM4NiwxMSArNjM4NCwxMSBA QCBzdGF0aWMgU1YgKmdldF9saGFzaChwVEhYXyBzdGN4dF90ICpjeHQsIFVWIGxlbiwgaW50IGhh c2hfZmxhZ3MsIGNvbnN0IGNoYXIgKmNuYQotICAgICAgICAgICogSGVuY2UgdGhlIGtleSBjb21l cyBhZnRlciB0aGUgdmFsdWUuCi0gICAgICAgICAgKi8KLSAKLS0gICAgICAgIFJMRU4oc2l6ZSk7 CQkvKiBHZXQga2V5IHNpemUgKi8KLS0gICAgICAgIEtCVUZDSEsoKFNUUkxFTilzaXplKTsJLyog R3JvdyBoYXNoIGtleSByZWFkIHBvb2wgaWYgbmVlZGVkICovCi0rICAgICAgICBSTEVOKHNpemUp OyAgICAgICAgICAgICAvKiBHZXQga2V5IHNpemUgKi8KLSsgICAgICAgIEtCVUZDSEsoKFNUUkxF TilzaXplKTsgIC8qIEdyb3cgaGFzaCBrZXkgcmVhZCBwb29sIGlmIG5lZWRlZCAqLwotICAgICAg ICAgaWYgKHNpemUpCi0gICAgICAgICAgICAgUkVBRChrYnVmLCBzaXplKTsKLS0gICAgICAgIGti dWZbc2l6ZV0gPSAnXDAnOwkvKiBNYXJrIHN0cmluZyBlbmQsIGp1c3QgaW4gY2FzZSAqLwotKyAg ICAgICAga2J1ZltzaXplXSA9ICdcMCc7ICAgICAgLyogTWFyayBzdHJpbmcgZW5kLCBqdXN0IGlu IGNhc2UgKi8KLSAgICAgICAgIFRSQUNFTUUoKCIoIyVkKSBrZXkgJyVzJyIsIChpbnQpaSwga2J1 ZikpOwotIAotICAgICAgICAgLyoKLUBAIC02NDM2LDExICs2NDM0LDExIEBAIHN0YXRpYyBTViAq cmV0cmlldmVfaGFzaChwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNuYW1lKQotICAg ICBUUkFDRU1FKCgic2l6ZSA9ICVkIiwgKGludClsZW4pKTsKLSAgICAgaHYgPSBuZXdIVigpOwot ICAgICBzdGFzaCA9IGNuYW1lID8gZ3Zfc3Rhc2hwdihjbmFtZSwgR1ZfQUREKSA6IDA7Ci0tICAg IFNFRU5fTk4oaHYsIHN0YXNoLCAwKTsJLyogV2lsbCByZXR1cm4gaWYgdGFibGUgbm90IGFsbG9j YXRlZCBwcm9wZXJseSAqLwotKyAgICBTRUVOX05OKGh2LCBzdGFzaCwgMCk7ICAgICAgLyogV2ls bCByZXR1cm4gaWYgdGFibGUgbm90IGFsbG9jYXRlZCBwcm9wZXJseSAqLwotICAgICBpZiAobGVu ID09IDApCi0tICAgICAgICByZXR1cm4gKFNWICopIGh2OwkvKiBObyBkYXRhIGZvbGxvdyBpZiB0 YWJsZSBlbXB0eSAqLwotKyAgICAgICAgcmV0dXJuIChTViAqKSBodjsgICAgICAgLyogTm8gZGF0 YSBmb2xsb3cgaWYgdGFibGUgZW1wdHkgKi8KLSAgICAgVFJBQ0VNRSgoInNwbGl0ICVkIiwgKGlu dClsZW4rMSkpOwotLSAgICBodl9rc3BsaXQoaHYsIGxlbisxKTsJLyogcHJlLWV4dGVuZCBoYXNo IHRvIHNhdmUgbXVsdGlwbGUgc3BsaXRzICovCi0rICAgIGh2X2tzcGxpdChodiwgbGVuKzEpOyAg ICAgICAvKiBwcmUtZXh0ZW5kIGhhc2ggdG8gc2F2ZSBtdWx0aXBsZSBzcGxpdHMgKi8KLSAKLSAg ICAgLyoKLSAgICAgICogTm93IGdldCBlYWNoIGtleS92YWx1ZSBwYWlyIGluIHR1cm4uLi4KLUBA IC02NDYzLDExICs2NDYxLDExIEBAIHN0YXRpYyBTViAqcmV0cmlldmVfaGFzaChwVEhYXyBzdGN4 dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNuYW1lKQotICAgICAgICAgICogSGVuY2UgdGhlIGtleSBj b21lcyBhZnRlciB0aGUgdmFsdWUuCi0gICAgICAgICAgKi8KLSAKLS0gICAgICAgIFJMRU4oc2l6 ZSk7CQkvKiBHZXQga2V5IHNpemUgKi8KLS0gICAgICAgIEtCVUZDSEsoKFNUUkxFTilzaXplKTsJ LyogR3JvdyBoYXNoIGtleSByZWFkIHBvb2wgaWYgbmVlZGVkICovCi0rICAgICAgICBSTEVOKHNp emUpOyAgICAgICAgICAgICAvKiBHZXQga2V5IHNpemUgKi8KLSsgICAgICAgIEtCVUZDSEsoKFNU UkxFTilzaXplKTsgIC8qIEdyb3cgaGFzaCBrZXkgcmVhZCBwb29sIGlmIG5lZWRlZCAqLwotICAg ICAgICAgaWYgKHNpemUpCi0gICAgICAgICAgICAgUkVBRChrYnVmLCBzaXplKTsKLS0gICAgICAg IGtidWZbc2l6ZV0gPSAnXDAnOwkvKiBNYXJrIHN0cmluZyBlbmQsIGp1c3QgaW4gY2FzZSAqLwot KyAgICAgICAga2J1ZltzaXplXSA9ICdcMCc7ICAgICAgLyogTWFyayBzdHJpbmcgZW5kLCBqdXN0 IGluIGNhc2UgKi8KLSAgICAgICAgIFRSQUNFTUUoKCIoIyVkKSBrZXkgJyVzJyIsIChpbnQpaSwg a2J1ZikpOwotIAotICAgICAgICAgLyoKLUBAIC02NTI2LDExICs2NTI0LDExIEBAIHN0YXRpYyBT ViAqcmV0cmlldmVfZmxhZ19oYXNoKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25h bWUpCi0gICAgIFRSQUNFTUUoKCJzaXplID0gJWQsIGZsYWdzID0gJWQiLCAoaW50KWxlbiwgaGFz aF9mbGFncykpOwotICAgICBodiA9IG5ld0hWKCk7Ci0gICAgIHN0YXNoID0gY25hbWUgPyBndl9z dGFzaHB2KGNuYW1lLCBHVl9BREQpIDogMDsKLS0gICAgU0VFTl9OTihodiwgc3Rhc2gsIDApOwkv KiBXaWxsIHJldHVybiBpZiB0YWJsZSBub3QgYWxsb2NhdGVkIHByb3Blcmx5ICovCi0rICAgIFNF RU5fTk4oaHYsIHN0YXNoLCAwKTsgICAgICAvKiBXaWxsIHJldHVybiBpZiB0YWJsZSBub3QgYWxs b2NhdGVkIHByb3Blcmx5ICovCi0gICAgIGlmIChsZW4gPT0gMCkKLS0gICAgICAgIHJldHVybiAo U1YgKikgaHY7CS8qIE5vIGRhdGEgZm9sbG93IGlmIHRhYmxlIGVtcHR5ICovCi0rICAgICAgICBy ZXR1cm4gKFNWICopIGh2OyAgICAgICAvKiBObyBkYXRhIGZvbGxvdyBpZiB0YWJsZSBlbXB0eSAq LwotICAgICBUUkFDRU1FKCgic3BsaXQgJWQiLCAoaW50KWxlbisxKSk7Ci0tICAgIGh2X2tzcGxp dChodiwgbGVuKzEpOwkvKiBwcmUtZXh0ZW5kIGhhc2ggdG8gc2F2ZSBtdWx0aXBsZSBzcGxpdHMg Ki8KLSsgICAgaHZfa3NwbGl0KGh2LCBsZW4rMSk7ICAgICAgIC8qIHByZS1leHRlbmQgaGFzaCB0 byBzYXZlIG11bHRpcGxlIHNwbGl0cyAqLwotIAotICAgICAvKgotICAgICAgKiBOb3cgZ2V0IGVh Y2gga2V5L3ZhbHVlIHBhaXIgaW4gdHVybi4uLgotQEAgLTY1OTcsMTEgKzY1OTUsMTEgQEAgc3Rh dGljIFNWICpyZXRyaWV2ZV9mbGFnX2hhc2gocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFy ICpjbmFtZSkKLSAgICAgICAgICAgICAgICAgc3RvcmVfZmxhZ3MgfD0gSFZoZWtfV0FTVVRGODsK LSAjZW5kaWYKLSAKLS0gICAgICAgICAgICBSTEVOKHNpemUpOwkJLyogR2V0IGtleSBzaXplICov Ci0rICAgICAgICAgICAgUkxFTihzaXplKTsgICAgICAgICAvKiBHZXQga2V5IHNpemUgKi8KLSAg ICAgICAgICAgICBLQlVGQ0hLKChTVFJMRU4pc2l6ZSk7LyogR3JvdyBoYXNoIGtleSByZWFkIHBv b2wgaWYgbmVlZGVkICovCi0gICAgICAgICAgICAgaWYgKHNpemUpCi0gICAgICAgICAgICAgICAg IFJFQUQoa2J1Ziwgc2l6ZSk7Ci0tICAgICAgICAgICAga2J1ZltzaXplXSA9ICdcMCc7CS8qIE1h cmsgc3RyaW5nIGVuZCwganVzdCBpbiBjYXNlICovCi0rICAgICAgICAgICAga2J1ZltzaXplXSA9 ICdcMCc7ICAvKiBNYXJrIHN0cmluZyBlbmQsIGp1c3QgaW4gY2FzZSAqLwotICAgICAgICAgICAg IFRSQUNFTUUoKCIoIyVkKSBrZXkgJyVzJyBmbGFncyAlWCBzdG9yZV9mbGFncyAlWCIsIChpbnQp aSwga2J1ZiwKLSAgICAgICAgICAgICAgICAgICAgICBmbGFncywgc3RvcmVfZmxhZ3MpKTsKLSAK LUBAIC02NzIxLDcgKzY3MTksNyBAQCBzdGF0aWMgU1YgKnJldHJpZXZlX2NvZGUocFRIWF8gc3Rj eHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkKLSAgICAgU0FWRVRNUFM7Ci0gCi0gICAgIGVy cnN2ID0gZ2V0X3N2KCJAIiwgR1ZfQUREKTsKLS0gICAgU3ZQVkNMRUFSKGVycnN2KTsJLyogY2xl YXIgJEAgKi8KLSsgICAgU3ZQVkNMRUFSKGVycnN2KTsgICAvKiBjbGVhciAkQCAqLwotICAgICBp ZiAoU3ZST0soY3h0LT5ldmFsKSAmJiBTdlRZUEUoU3ZSVihjeHQtPmV2YWwpKSA9PSBTVnRfUFZD VikgewotICAgICAgICAgUFVTSE1BUksoc3ApOwotICAgICAgICAgWFBVU0hzKHN2XzJtb3J0YWwo bmV3U1ZzdihzdWIpKSk7Ci1AQCAtNjgyMCw3ICs2ODE4LDcgQEAgc3RhdGljIFNWICpyZXRyaWV2 ZV9yZWdleHAocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkgewotICAgICBT dlJFRkNOVF9pbmMoc3YpOwotICAgICBzdGFzaCA9IGNuYW1lID8gZ3Zfc3Rhc2hwdihjbmFtZSwg R1ZfQUREKSA6IDA7Ci0gICAgIFNFRU5fTk4oc3YsIHN0YXNoLCAwKTsKLS0gICAgCi0rCi0gICAg IEZSRUVUTVBTOwotICAgICBMRUFWRTsKLSAKLUBAIC02ODU4LDExICs2ODU2LDExIEBAIHN0YXRp YyBTViAqb2xkX3JldHJpZXZlX2FycmF5KHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAq Y25hbWUpCi0gICAgIFJMRU4obGVuKTsKLSAgICAgVFJBQ0VNRSgoInNpemUgPSAlZCIsIChpbnQp bGVuKSk7Ci0gICAgIGF2ID0gbmV3QVYoKTsKLS0gICAgU0VFTjBfTk4oYXYsIDApOwkvKiBXaWxs IHJldHVybiBpZiBhcnJheSBub3QgYWxsb2NhdGVkIG5pY2VseSAqLwotKyAgICBTRUVOMF9OTihh diwgMCk7ICAgIC8qIFdpbGwgcmV0dXJuIGlmIGFycmF5IG5vdCBhbGxvY2F0ZWQgbmljZWx5ICov Ci0gICAgIGlmIChsZW4pCi0gICAgICAgICBhdl9leHRlbmQoYXYsIGxlbik7Ci0gICAgIGVsc2UK LS0gICAgICAgIHJldHVybiAoU1YgKikgYXY7CS8qIE5vIGRhdGEgZm9sbG93IGlmIGFycmF5IGlz IGVtcHR5ICovCi0rICAgICAgICByZXR1cm4gKFNWICopIGF2OyAgICAgICAvKiBObyBkYXRhIGZv bGxvdyBpZiBhcnJheSBpcyBlbXB0eSAqLwotIAotICAgICAvKgotICAgICAgKiBOb3cgZ2V0IGVh Y2ggaXRlbSBpbiB0dXJuLi4uCi1AQCAtNjg3MiwxMiArNjg3MCwxMiBAQCBzdGF0aWMgU1YgKm9s ZF9yZXRyaWV2ZV9hcnJheShwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNuYW1lKQot ICAgICAgICAgR0VUTUFSSyhjKTsKLSAgICAgICAgIGlmIChjID09IFNYX0lUX1VOREVGKSB7Ci0g ICAgICAgICAgICAgVFJBQ0VNRSgoIigjJWQpIHVuZGVmIGl0ZW0iLCAoaW50KWkpKTsKLS0gICAg ICAgICAgICBjb250aW51ZTsJCS8qIGF2X2V4dGVuZCgpIGFscmVhZHkgZmlsbGVkIHVzIHdpdGgg dW5kZWYgKi8KLSsgICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgIC8qIGF2X2V4dGVuZCgp IGFscmVhZHkgZmlsbGVkIHVzIHdpdGggdW5kZWYgKi8KLSAgICAgICAgIH0KLSAgICAgICAgIGlm IChjICE9IFNYX0lURU0pCi0gICAgICAgICAgICAgKHZvaWQpIHJldHJpZXZlX290aGVyKGFUSFhf IGN4dCwgMCk7LyogV2lsbCBjcm9hayBvdXQgKi8KLSAgICAgICAgIFRSQUNFTUUoKCIoIyVkKSBp dGVtIiwgKGludClpKSk7Ci0tICAgICAgICBzdiA9IHJldHJpZXZlKGFUSFhfIGN4dCwgMCk7CQkv KiBSZXRyaWV2ZSBpdGVtICovCi0rICAgICAgICBzdiA9IHJldHJpZXZlKGFUSFhfIGN4dCwgMCk7 ICAgICAgICAgICAgLyogUmV0cmlldmUgaXRlbSAqLwotICAgICAgICAgaWYgKCFzdikKLSAgICAg ICAgICAgICByZXR1cm4gKFNWICopIDA7Ci0gICAgICAgICBpZiAoYXZfc3RvcmUoYXYsIGksIHN2 KSA9PSAwKQotQEAgLTY5MDksNyArNjkwNyw3IEBAIHN0YXRpYyBTViAqb2xkX3JldHJpZXZlX2hh c2gocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkKLSAgICAgSFYgKmh2Owot ICAgICBTViAqc3YgPSAoU1YgKikgMDsKLSAgICAgaW50IGM7Ci0tICAgIFNWICpzdl9oX3VuZGVm ID0gKFNWICopIDA7CS8qIGh2X3N0b3JlKCkgYnVnICovCi0rICAgIFNWICpzdl9oX3VuZGVmID0g KFNWICopIDA7ICAvKiBodl9zdG9yZSgpIGJ1ZyAqLwotIAotICAgICBQRVJMX1VOVVNFRF9BUkco Y25hbWUpOwotICAgICBUUkFDRU1FKCgib2xkX3JldHJpZXZlX2hhc2ggKCMlZCkiLCAoaW50KWN4 dC0+dGFnbnVtKSk7Ci1AQCAtNjkyMSwxMSArNjkxOSwxMSBAQCBzdGF0aWMgU1YgKm9sZF9yZXRy aWV2ZV9oYXNoKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUpCi0gICAgIFJM RU4obGVuKTsKLSAgICAgVFJBQ0VNRSgoInNpemUgPSAlZCIsIChpbnQpbGVuKSk7Ci0gICAgIGh2 ID0gbmV3SFYoKTsKLS0gICAgU0VFTjBfTk4oaHYsIDApOwkJLyogV2lsbCByZXR1cm4gaWYgdGFi bGUgbm90IGFsbG9jYXRlZCBwcm9wZXJseSAqLwotKyAgICBTRUVOMF9OTihodiwgMCk7ICAgICAg ICAgICAgLyogV2lsbCByZXR1cm4gaWYgdGFibGUgbm90IGFsbG9jYXRlZCBwcm9wZXJseSAqLwot ICAgICBpZiAobGVuID09IDApCi0tICAgICAgICByZXR1cm4gKFNWICopIGh2OwkvKiBObyBkYXRh IGZvbGxvdyBpZiB0YWJsZSBlbXB0eSAqLwotKyAgICAgICAgcmV0dXJuIChTViAqKSBodjsgICAg ICAgLyogTm8gZGF0YSBmb2xsb3cgaWYgdGFibGUgZW1wdHkgKi8KLSAgICAgVFJBQ0VNRSgoInNw bGl0ICVkIiwgKGludClsZW4rMSkpOwotLSAgICBodl9rc3BsaXQoaHYsIGxlbisxKTsJLyogcHJl LWV4dGVuZCBoYXNoIHRvIHNhdmUgbXVsdGlwbGUgc3BsaXRzICovCi0rICAgIGh2X2tzcGxpdCho diwgbGVuKzEpOyAgICAgICAvKiBwcmUtZXh0ZW5kIGhhc2ggdG8gc2F2ZSBtdWx0aXBsZSBzcGxp dHMgKi8KLSAKLSAgICAgLyoKLSAgICAgICogTm93IGdldCBlYWNoIGtleS92YWx1ZSBwYWlyIGlu IHR1cm4uLi4KLUBAIC02OTY1LDExICs2OTYzLDExIEBAIHN0YXRpYyBTViAqb2xkX3JldHJpZXZl X2hhc2gocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFyICpjbmFtZSkKLSAgICAgICAgIEdF VE1BUksoYyk7Ci0gICAgICAgICBpZiAoYyAhPSBTWF9LRVkpCi0gICAgICAgICAgICAgKHZvaWQp IHJldHJpZXZlX290aGVyKGFUSFhfIGN4dCwgMCk7IC8qIFdpbGwgY3JvYWsgb3V0ICovCi0tICAg ICAgICBSTEVOKHNpemUpOwkJCQkvKiBHZXQga2V5IHNpemUgKi8KLS0gICAgICAgIEtCVUZDSEso KFNUUkxFTilzaXplKTsJCQkvKiBHcm93IGhhc2gga2V5IHJlYWQgcG9vbCBpZiBuZWVkZWQgKi8K LSsgICAgICAgIFJMRU4oc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHZXQg a2V5IHNpemUgKi8KLSsgICAgICAgIEtCVUZDSEsoKFNUUkxFTilzaXplKTsgICAgICAgICAgICAg ICAgICAvKiBHcm93IGhhc2gga2V5IHJlYWQgcG9vbCBpZiBuZWVkZWQgKi8KLSAgICAgICAgIGlm IChzaXplKQotICAgICAgICAgICAgIFJFQUQoa2J1Ziwgc2l6ZSk7Ci0tICAgICAgICBrYnVmW3Np emVdID0gJ1wwJzsJCQkvKiBNYXJrIHN0cmluZyBlbmQsIGp1c3QgaW4gY2FzZSAqLwotKyAgICAg ICAga2J1ZltzaXplXSA9ICdcMCc7ICAgICAgICAgICAgICAgICAgICAgIC8qIE1hcmsgc3RyaW5n IGVuZCwganVzdCBpbiBjYXNlICovCi0gICAgICAgICBUUkFDRU1FKCgiKCMlZCkga2V5ICclcyci LCAoaW50KWksIGtidWYpKTsKLSAKLSAgICAgICAgIC8qCi1AQCAtNzAzMiwxMCArNzAzMCwxMCBA QCBzdGF0aWMgU1YgKm1hZ2ljX2NoZWNrKHBUSFhfIHN0Y3h0X3QgKmN4dCkKLSAgICAgICAgIFNU UkxFTiBsZW4gPSBzaXplb2YobWFnaWNzdHIpOwotICAgICAgICAgU1RSTEVOIG9sZF9sZW47Ci0g Ci0tICAgICAgICBSRUFEKGJ1ZiwgKFNTaXplX3QpKGxlbikpOwkvKiBOb3QgbnVsbC10ZXJtaW5h dGVkICovCi0rICAgICAgICBSRUFEKGJ1ZiwgKFNTaXplX3QpKGxlbikpOyAgICAgIC8qIE5vdCBu dWxsLXRlcm1pbmF0ZWQgKi8KLSAKLSAgICAgICAgIC8qIFBvaW50IGF0IHRoZSBieXRlIGFmdGVy IHRoZSBieXRlIHdlIHJlYWQuICAqLwotLSAgICAgICAgY3VycmVudCA9IGJ1ZiArIC0tbGVuOwkv KiBEbyB0aGUgLS0gb3V0c2lkZSBvZiBtYWNyb3MuICAqLwotKyAgICAgICAgY3VycmVudCA9IGJ1 ZiArIC0tbGVuOyAgLyogRG8gdGhlIC0tIG91dHNpZGUgb2YgbWFjcm9zLiAgKi8KLSAKLSAgICAg ICAgIGlmIChtZW1ORShidWYsIG1hZ2ljc3RyLCBsZW4pKSB7Ci0gICAgICAgICAgICAgLyoKLUBA IC03MTI3LDggKzcxMjUsOCBAQCBzdGF0aWMgU1YgKm1hZ2ljX2NoZWNrKHBUSFhfIHN0Y3h0X3Qg KmN4dCkKLSAgICAgICogaW5mb3JtYXRpb24gdG8gY2hlY2suCi0gICAgICAqLwotIAotLSAgICBp ZiAoKGN4dC0+bmV0b3JkZXIgPSAodXNlX25ldHdvcmtfb3JkZXIgJiAweDEpKSkJLyogRXh0cmEg KCkgZm9yIC1XYWxsICovCi0tICAgICAgICByZXR1cm4gJlBMX3N2X3VuZGVmOwkJCS8qIE5vIGJ5 dGUgb3JkZXJpbmcgaW5mbyAqLwotKyAgICBpZiAoKGN4dC0+bmV0b3JkZXIgPSAodXNlX25ldHdv cmtfb3JkZXIgJiAweDEpKSkgICAgLyogRXh0cmEgKCkgZm9yIC1XYWxsICovCi0rICAgICAgICBy ZXR1cm4gJlBMX3N2X3VuZGVmOyAgICAgICAgICAgICAgICAgICAgLyogTm8gYnl0ZSBvcmRlcmlu ZyBpbmZvICovCi0gCi0gICAgIC8qIEluIEMgdHJ1dGggaXMgMSwgZmFsc2Vob29kIGlzIDAuIFZl cnkgY29udmVuaWVudC4gICovCi0gICAgIHVzZV9OVl9zaXplID0gdmVyc2lvbl9tYWpvciA+PSAy ICYmIHZlcnNpb25fbWlub3IgPj0gMjsKLUBAIC03MTQwLDcgKzcxMzgsNyBAQCBzdGF0aWMgU1Yg Km1hZ2ljX2NoZWNrKHBUSFhfIHN0Y3h0X3QgKmN4dCkKLSAgICAgICAgIGMgPSB1c2VfbmV0d29y a19vcmRlcjsKLSAgICAgfQotICAgICBsZW5ndGggPSBjICsgMyArIHVzZV9OVl9zaXplOwotLSAg ICBSRUFEKGJ1ZiwgbGVuZ3RoKTsJLyogTm90IG51bGwtdGVybWluYXRlZCAqLwotKyAgICBSRUFE KGJ1ZiwgbGVuZ3RoKTsgIC8qIE5vdCBudWxsLXRlcm1pbmF0ZWQgKi8KLSAKLSAgICAgVFJBQ0VN RSgoImJ5dGUgb3JkZXIgJyUuKnMnICVkIiwgYywgYnVmLCBjKSk7Ci0gCi1AQCAtNzE3OSw3ICs3 MTc3LDcgQEAgc3RhdGljIFNWICptYWdpY19jaGVjayhwVEhYXyBzdGN4dF90ICpjeHQpCi0gICAg ICAgICAgICAgQ1JPQUsoKCJEb3VibGUgc2l6ZSBpcyBub3QgY29tcGF0aWJsZSIpKTsKLSAgICAg fQotIAotLSAgICByZXR1cm4gJlBMX3N2X3VuZGVmOwkvKiBPSyAqLwotKyAgICByZXR1cm4gJlBM X3N2X3VuZGVmOyAgICAgICAgLyogT0sgKi8KLSB9Ci0gCi0gLyoKLUBAIC03MjA3LDE0ICs3MjA1 LDE0IEBAIHN0YXRpYyBTViAqcmV0cmlldmUocFRIWF8gc3RjeHRfdCAqY3h0LCBjb25zdCBjaGFy ICpjbmFtZSkKLSAgICAgICogbm8gbG9uZ2VyIHN1cHBvcnRlZCwgaGVuY2UgdGhlIGZpbmFsICJn b3RvIiBpbiB0aGUgImlmIiBibG9jay4KLSAgICAgICovCi0gCi0tICAgIGlmIChjeHQtPmhzZWVu KSB7CQkJLyogUmV0cmlldmluZyBvbGQgYmluYXJ5ICovCi0rICAgIGlmIChjeHQtPmhzZWVuKSB7 ICAgICAgICAgICAgICAgICAgIC8qIFJldHJpZXZpbmcgb2xkIGJpbmFyeSAqLwotICAgICAgICAg c3RhZ190IHRhZzsKLSAgICAgICAgIGlmIChjeHQtPm5ldG9yZGVyKSB7Ci0gICAgICAgICAgICAg STMyIG5ldHRhZzsKLS0gICAgICAgICAgICBSRUFEKCZuZXR0YWcsIHNpemVvZihJMzIpKTsJLyog T3JkZXJlZCBzZXF1ZW5jZSBvZiBJMzIgKi8KLSsgICAgICAgICAgICBSRUFEKCZuZXR0YWcsIHNp emVvZihJMzIpKTsgLyogT3JkZXJlZCBzZXF1ZW5jZSBvZiBJMzIgKi8KLSAgICAgICAgICAgICB0 YWcgPSAoc3RhZ190KSBuZXR0YWc7Ci0gICAgICAgICB9IGVsc2UKLS0gICAgICAgICAgICBSRUFE KCZ0YWcsIHNpemVvZihzdGFnX3QpKTsJLyogT3JpZ2luYWwgYWRkcmVzcyBvZiB0aGUgU1YgKi8K LSsgICAgICAgICAgICBSRUFEKCZ0YWcsIHNpemVvZihzdGFnX3QpKTsgLyogT3JpZ2luYWwgYWRk cmVzcyBvZiB0aGUgU1YgKi8KLSAKLSAgICAgICAgIEdFVE1BUksodHlwZSk7Ci0gICAgICAgICBp ZiAodHlwZSA9PSBTWF9PQkpFQ1QpIHsKLUBAIC03MjIzLDcgKzcyMjEsNyBAQCBzdGF0aWMgU1Yg KnJldHJpZXZlKHBUSFhfIHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUpCi0gICAgICAg ICAgICAgaWYgKCFzdmgpCi0gICAgICAgICAgICAgICAgIENST0FLKCgiT2xkIHRhZyAweCUiIFVW eGYgIiBzaG91bGQgaGF2ZSBiZWVuIG1hcHBlZCBhbHJlYWR5IiwKLSAgICAgICAgICAgICAgICAg ICAgICAgIChVVikgdGFnKSk7Ci0tICAgICAgICAgICAgdGFnbiA9IFN2SVYoKnN2aCk7CS8qIE1h cHBlZCB0YWcgbnVtYmVyIGNvbXB1dGVkIGVhcmxpZXIgYmVsb3cgKi8KLSsgICAgICAgICAgICB0 YWduID0gU3ZJVigqc3ZoKTsgIC8qIE1hcHBlZCB0YWcgbnVtYmVyIGNvbXB1dGVkIGVhcmxpZXIg YmVsb3cgKi8KLSAKLSAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAqIFRoZSBmb2xsb3dp bmcgY29kZSBpcyBjb21tb24gd2l0aCB0aGUgU1hfT0JKRUNUIGNhc2UgYmVsb3cuCi1AQCAtNzIz NSw4ICs3MjMzLDggQEAgc3RhdGljIFNWICpyZXRyaWV2ZShwVEhYXyBzdGN4dF90ICpjeHQsIGNv bnN0IGNoYXIgKmNuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgKElWKSB0YWduKSk7Ci0g ICAgICAgICAgICAgc3YgPSAqc3ZoOwotICAgICAgICAgICAgIFRSQUNFTUUoKCJoYXMgcmV0cmll dmVkICMlZCBhdCAweCUiIFVWeGYsIChpbnQpdGFnbiwgUFRSMlVWKHN2KSkpOwotLSAgICAgICAg ICAgIFN2UkVGQ05UX2luYyhzdik7CS8qIE9uZSBtb3JlIHJlZmVyZW5jZSB0byB0aGlzIHNhbWUg c3YgKi8KLS0gICAgICAgICAgICByZXR1cm4gc3Y7CQkvKiBUaGUgU1YgcG9pbnRlciB3aGVyZSBv YmplY3Qgd2FzIHJldHJpZXZlZCAqLwotKyAgICAgICAgICAgIFN2UkVGQ05UX2luYyhzdik7ICAg LyogT25lIG1vcmUgcmVmZXJlbmNlIHRvIHRoaXMgc2FtZSBzdiAqLwotKyAgICAgICAgICAgIHJl dHVybiBzdjsgICAgICAgICAgLyogVGhlIFNWIHBvaW50ZXIgd2hlcmUgb2JqZWN0IHdhcyByZXRy aWV2ZWQgKi8KLSAgICAgICAgIH0KLSAKLSAgICAgICAgIC8qCi1AQCAtNzI4OCw4ICs3Mjg2LDgg QEAgc3RhdGljIFNWICpyZXRyaWV2ZShwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNu YW1lKQotICAgICAgICAgICAgICAgICAgICAoSVYpIHRhZykpOwotICAgICAgICAgc3YgPSAqc3Zo OwotICAgICAgICAgVFJBQ0VNRSgoImhhZCByZXRyaWV2ZWQgIyVkIGF0IDB4JSIgVVZ4ZiwgKGlu dCl0YWcsIFBUUjJVVihzdikpKTsKLS0gICAgICAgIFN2UkVGQ05UX2luYyhzdik7CS8qIE9uZSBt b3JlIHJlZmVyZW5jZSB0byB0aGlzIHNhbWUgc3YgKi8KLS0gICAgICAgIHJldHVybiBzdjsJCS8q IFRoZSBTViBwb2ludGVyIHdoZXJlIG9iamVjdCB3YXMgcmV0cmlldmVkICovCi0rICAgICAgICBT dlJFRkNOVF9pbmMoc3YpOyAgICAgICAvKiBPbmUgbW9yZSByZWZlcmVuY2UgdG8gdGhpcyBzYW1l IHN2ICovCi0rICAgICAgICByZXR1cm4gc3Y7ICAgICAgICAgICAgICAvKiBUaGUgU1YgcG9pbnRl ciB3aGVyZSBvYmplY3Qgd2FzIHJldHJpZXZlZCAqLwotICAgICB9IGVsc2UgaWYgKHR5cGUgPj0g U1hfTEFTVCAmJiBjeHQtPnZlcl9taW5vciA+IFNUT1JBQkxFX0JJTl9NSU5PUikgewotICAgICAg ICAgaWYgKGN4dC0+YWNjZXB0X2Z1dHVyZV9taW5vciA8IDApCi0gICAgICAgICAgICAgY3h0LT5h Y2NlcHRfZnV0dXJlX21pbm9yCi1AQCAtNzMwNCw3ICs3MzAyLDcgQEAgc3RhdGljIFNWICpyZXRy aWV2ZShwVEhYXyBzdGN4dF90ICpjeHQsIGNvbnN0IGNoYXIgKmNuYW1lKQotICAgICAgICAgfQot ICAgICB9Ci0gCi0tIGZpcnN0X3RpbWU6CS8qIFdpbGwgZGlzYXBwZWFyIHdoZW4gc3VwcG9ydCBm b3Igb2xkIGZvcm1hdCBpcyBkcm9wcGVkICovCi0rIGZpcnN0X3RpbWU6ICAgIC8qIFdpbGwgZGlz YXBwZWFyIHdoZW4gc3VwcG9ydCBmb3Igb2xkIGZvcm1hdCBpcyBkcm9wcGVkICovCi0gCi0gICAg IC8qCi0gICAgICAqIE9rYXksIGZpcnN0IHRpbWUgdGhyb3VnaCBmb3IgdGhpcyBvbmUuCi1AQCAt NzMxMiw3ICs3MzEwLDcgQEAgc3RhdGljIFNWICpyZXRyaWV2ZShwVEhYXyBzdGN4dF90ICpjeHQs IGNvbnN0IGNoYXIgKmNuYW1lKQotIAotICAgICBzdiA9IFJFVFJJRVZFKGN4dCwgdHlwZSkoYVRI WF8gY3h0LCBjbmFtZSk7Ci0gICAgIGlmICghc3YpCi0tICAgICAgICByZXR1cm4gKFNWICopIDA7 CQkvKiBGYWlsZWQgKi8KLSsgICAgICAgIHJldHVybiAoU1YgKikgMDsgICAgICAgICAgICAgICAg LyogRmFpbGVkICovCi0gCi0gICAgIC8qCi0gICAgICAqIE9sZCBiaW5hcnkgZm9ybWF0cyAocHJl LTAuNykuCi1AQCAtNzMzMiwxOSArNzMzMCwxOSBAQCBzdGF0aWMgU1YgKnJldHJpZXZlKHBUSFhf IHN0Y3h0X3QgKmN4dCwgY29uc3QgY2hhciAqY25hbWUpCi0gICAgICAgICAgICAgSFYqIHN0YXNo OwotICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICAgICAgIGNhc2UgU1hfQ0xB U1M6Ci0tICAgICAgICAgICAgICAgIEdFVE1BUksobGVuKTsJCS8qIExlbmd0aCBjb2RlZCBvbiBh IHNpbmdsZSBjaGFyICovCi0rICAgICAgICAgICAgICAgIEdFVE1BUksobGVuKTsgICAgICAgICAg IC8qIExlbmd0aCBjb2RlZCBvbiBhIHNpbmdsZSBjaGFyICovCi0gICAgICAgICAgICAgICAgIGJy ZWFrOwotLSAgICAgICAgICAgIGNhc2UgU1hfTEdfQ0xBU1M6CQkvKiBMZW5ndGggY29kZWQgb24g YSByZWd1bGFyIGludGVnZXIgKi8KLSsgICAgICAgICAgICBjYXNlIFNYX0xHX0NMQVNTOiAgICAg ICAgICAgLyogTGVuZ3RoIGNvZGVkIG9uIGEgcmVndWxhciBpbnRlZ2VyICovCi0gICAgICAgICAg ICAgICAgIFJMRU4obGVuKTsKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg Y2FzZSBFT0Y6Ci0gICAgICAgICAgICAgZGVmYXVsdDoKLS0gICAgICAgICAgICAgICAgcmV0dXJu IChTViAqKSAwOwkvKiBGYWlsZWQgKi8KLSsgICAgICAgICAgICAgICAgcmV0dXJuIChTViAqKSAw OyAgICAgICAgLyogRmFpbGVkICovCi0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIEtCVUZD SEsoKFNUUkxFTilsZW4pOwkvKiBHcm93IGJ1ZmZlciBhcyBuZWNlc3NhcnkgKi8KLSsgICAgICAg ICAgICBLQlVGQ0hLKChTVFJMRU4pbGVuKTsgICAgICAgLyogR3JvdyBidWZmZXIgYXMgbmVjZXNz YXJ5ICovCi0gICAgICAgICAgICAgaWYgKGxlbikKLSAgICAgICAgICAgICAgICAgUkVBRChrYnVm LCBsZW4pOwotLSAgICAgICAgICAgIGtidWZbbGVuXSA9ICdcMCc7CQkvKiBNYXJrIHN0cmluZyBl bmQgKi8KLSsgICAgICAgICAgICBrYnVmW2xlbl0gPSAnXDAnOyAgICAgICAgICAgLyogTWFyayBz dHJpbmcgZW5kICovCi0gICAgICAgICAgICAgc3Rhc2ggPSBndl9zdGFzaHB2bihrYnVmLCBsZW4s IEdWX0FERCk7Ci0gICAgICAgICAgICAgQkxFU1Moc3YsIHN0YXNoKTsKLSAgICAgICAgIH0KLUBA IC03MzUzLDcgKzczNTEsNyBAQCBzdGF0aWMgU1YgKnJldHJpZXZlKHBUSFhfIHN0Y3h0X3QgKmN4 dCwgY29uc3QgY2hhciAqY25hbWUpCi0gICAgIFRSQUNFTUUoKCJvayAocmV0cmlldmVkIDB4JSIg VVZ4ZiAiLCByZWZjbnQ9JWQsICVzKSIsIFBUUjJVVihzdiksCi0gICAgICAgICAgICAgIChpbnQp U3ZSRUZDTlQoc3YpIC0gMSwgc3ZfcmVmdHlwZShzdiwgRkFMU0UpKSk7Ci0gCi0tICAgIHJldHVy biBzdjsJLyogT2sgKi8KLSsgICAgcmV0dXJuIHN2OyAgLyogT2sgKi8KLSB9Ci0gCi0gLyoKLUBA IC03MzcxLDExICs3MzY5LDExIEBAIHN0YXRpYyBTViAqZG9fcmV0cmlldmUoCi0gewotICAgICBk U1RDWFQ7Ci0gICAgIFNWICpzdjsKLS0gICAgaW50IGlzX3RhaW50ZWQ7CQkvKiBJcyBpbnB1dCBz b3VyY2UgdGFpbnRlZD8gKi8KLS0gICAgaW50IHByZV8wNl9mbXQgPSAwOwkJLyogVHJ1ZSB3aXRo IHByZSBTdG9yYWJsZSAwLjYgZm9ybWF0cyAqLwotKyAgICBpbnQgaXNfdGFpbnRlZDsgICAgICAg ICAgICAgLyogSXMgaW5wdXQgc291cmNlIHRhaW50ZWQ/ICovCi0rICAgIGludCBwcmVfMDZfZm10 ID0gMDsgICAgICAgICAvKiBUcnVlIHdpdGggcHJlIFN0b3JhYmxlIDAuNiBmb3JtYXRzICovCi0g Ci0gICAgIFRSQUNFTUVEKCgiZG9fcmV0cmlldmUgKG9wdHlwZSA9IDB4JXgsIGZsYWdzPTB4JXgp IiwKLS0JICAgICAodW5zaWduZWQpb3B0eXBlLCAodW5zaWduZWQpZmxhZ3MpKTsKLSsgICAgICAg ICAgICAgKHVuc2lnbmVkKW9wdHlwZSwgKHVuc2lnbmVkKWZsYWdzKSk7Ci0gCi0gICAgIG9wdHlw ZSB8PSBTVF9SRVRSSUVWRTsKLSAgICAgY3h0LT5mbGFncyA9IGZsYWdzOwotQEAgLTc0MjQsNyAr NzQyMiw3IEBAIHN0YXRpYyBTViAqZG9fcmV0cmlldmUoCi0gICAgICAqIGluIHRoZSBidWZmZXIg KGRjbG9uZSBjYXNlKS4KLSAgICAgICovCi0gCi0tICAgIEtCVUZJTklUKCk7CQkJIC8qIEFsbG9j YXRlIGhhc2gga2V5IHJlYWRpbmcgcG9vbCBvbmNlICovCi0rICAgIEtCVUZJTklUKCk7ICAgICAg ICAgICAgICAgICAgLyogQWxsb2NhdGUgaGFzaCBrZXkgcmVhZGluZyBwb29sIG9uY2UgKi8KLSAK LSAgICAgaWYgKCFmICYmIGluKSB7Ci0gI2lmZGVmIFN2VVRGOF9vbgotQEAgLTc0NzUsNyArNzQ3 Myw3IEBAIHN0YXRpYyBTViAqZG9fcmV0cmlldmUoCi0gICAgICAqIHNvbWUgb2YgdGhlIGluaXRp YWxpemF0aW9ucy4KLSAgICAgICovCi0gCi0tICAgIGN4dC0+ZmlvID0gZjsJCQkvKiBXaGVyZSBJ L08gYXJlIHBlcmZvcm1lZCAqLwotKyAgICBjeHQtPmZpbyA9IGY7ICAgICAgICAgICAgICAgICAg ICAgICAvKiBXaGVyZSBJL08gYXJlIHBlcmZvcm1lZCAqLwotIAotICAgICBpZiAoIW1hZ2ljX2No ZWNrKGFUSFhfIGN4dCkpCi0gICAgICAgICBDUk9BSygoIk1hZ2ljIG51bWJlciBjaGVja2luZyBv biBzdG9yYWJsZSAlcyBmYWlsZWQiLAotQEAgLTc1MDksMTUgKzc1MDcsMTUgQEAgc3RhdGljIFNW ICpkb19yZXRyaWV2ZSgKLSAgICAgaWYgKCFmICYmIGluKQotICAgICAgICAgTUJVRl9SRVNUT1JF KCk7Ci0gCi0tICAgIHByZV8wNl9mbXQgPSBjeHQtPmhzZWVuICE9IE5VTEw7CS8qIEJlZm9yZSB3 ZSBjbGVhbiBjb250ZXh0ICovCi0rICAgIHByZV8wNl9mbXQgPSBjeHQtPmhzZWVuICE9IE5VTEw7 ICAgIC8qIEJlZm9yZSB3ZSBjbGVhbiBjb250ZXh0ICovCi0gCi0gICAgIC8qCi0gICAgICAqIFRo ZSAicm9vdCIgY29udGV4dCBpcyBuZXZlciBmcmVlZC4KLSAgICAgICovCi0gCi0gICAgIGNsZWFu X3JldHJpZXZlX2NvbnRleHQoYVRIWF8gY3h0KTsKLS0gICAgaWYgKGN4dC0+cHJldikJCQkvKiBU aGlzIGNvbnRleHQgd2FzIHN0YWNrZWQgKi8KLS0gICAgICAgIGZyZWVfY29udGV4dChhVEhYXyBj eHQpOwkvKiBJdCB3YXMgbm90IHRoZSAicm9vdCIgY29udGV4dCAqLwotKyAgICBpZiAoY3h0LT5w cmV2KSAgICAgICAgICAgICAgICAgICAgICAvKiBUaGlzIGNvbnRleHQgd2FzIHN0YWNrZWQgKi8K LSsgICAgICAgIGZyZWVfY29udGV4dChhVEhYXyBjeHQpOyAgICAgICAgLyogSXQgd2FzIG5vdCB0 aGUgInJvb3QiIGNvbnRleHQgKi8KLSAKLSAgICAgLyoKLSAgICAgICogUHJlcGFyZSByZXR1cm5l ZCB2YWx1ZS4KLUBAIC03NTI1LDcgKzc1MjMsNyBAQCBzdGF0aWMgU1YgKmRvX3JldHJpZXZlKAot IAotICAgICBpZiAoIXN2KSB7Ci0gICAgICAgICBUUkFDRU1FRCgoInJldHJpZXZlIEVSUk9SIikp OwotLSAgICAgICAgcmV0dXJuICZQTF9zdl91bmRlZjsJCS8qIFNvbWV0aGluZyB3ZW50IHdyb25n LCByZXR1cm4gdW5kZWYgKi8KLSsgICAgICAgIHJldHVybiAmUExfc3ZfdW5kZWY7ICAgICAgICAg ICAgLyogU29tZXRoaW5nIHdlbnQgd3JvbmcsIHJldHVybiB1bmRlZiAqLwotICAgICB9Ci0gCi0g ICAgIFRSQUNFTUVEKCgicmV0cmlldmUgZ290ICVzKDB4JSIgVVZ4ZiAiKSIsCi1AQCAtNzU0MCw3 ICs3NTM4LDcgQEAgc3RhdGljIFNWICpkb19yZXRyaWV2ZSgKLSAgICAgICogYWxyZWFkeSBvbmUg YW5kIG5vdCBhIHNjYWxhciwgZm9yIGNvbnNpc3RlbmN5IHJlYXNvbnMuCi0gICAgICAqLwotIAot LSAgICBpZiAocHJlXzA2X2ZtdCkgewkJCS8qIFdhcyBub3QgaGFuZGxpbmcgb3ZlcmxvYWRpbmcg YnkgdGhlbiAqLwotKyAgICBpZiAocHJlXzA2X2ZtdCkgeyAgICAgICAgICAgICAgICAgICAvKiBX YXMgbm90IGhhbmRsaW5nIG92ZXJsb2FkaW5nIGJ5IHRoZW4gKi8KLSAgICAgICAgIFNWICpydjsK LSAgICAgICAgIFRSQUNFTUVEKCgiZml4aW5nIGZvciBvbGQgZm9ybWF0cyAtLSBwcmUgMC42Iikp OwotICAgICAgICAgaWYgKHN2X3R5cGUoYVRIWF8gc3YpID09IHN2aXNfUkVGICYmIChydiA9IFN2 UlYoc3YpKSAmJiBTdk9CSkVDVChydikpIHsKLUBAIC03NjU1LDE1ICs3NjUzLDE1IEBAIHN0YXRp YyBTViAqZGNsb25lKHBUSFhfIFNWICpzdikKLSAgICAgICovCi0gCi0gICAgIGlmICghZG9fc3Rv cmUoYVRIWF8gKFBlcmxJTyopIDAsIHN2LCBTVF9DTE9ORSwgRkFMU0UsIChTVioqKSAwKSkKLS0g ICAgICAgIHJldHVybiAmUExfc3ZfdW5kZWY7CQkJCS8qIEVycm9yIGR1cmluZyBzdG9yZSAqLwot KyAgICAgICAgcmV0dXJuICZQTF9zdl91bmRlZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogRXJyb3IgZHVyaW5nIHN0b3JlICovCi0gCi0gICAgIC8qCi0gICAgICAqIEJlY2F1c2Ugb2Yg dGhlIGFib3ZlIG9wdGltaXphdGlvbiwgd2UgaGF2ZSB0byByZWZyZXNoIHRoZSBjb250ZXh0LAot ICAgICAgKiBzaW5jZSBhIG5ldyBvbmUgY291bGQgaGF2ZSBiZWVuIGFsbG9jYXRlZCBhbmQgc3Rh Y2tlZCBieSBkb19zdG9yZSgpLgotICAgICAgKi8KLSAKLS0gICAgeyBkU1RDWFQ7IHJlYWxfY29u dGV4dCA9IGN4dDsgfQkJLyogU3ViLWJsb2NrIG5lZWRlZCBmb3IgbWFjcm8gKi8KLS0gICAgY3h0 ID0gcmVhbF9jb250ZXh0OwkJCQkJLyogQW5kIHdlIG5lZWQgdGhpcyB0ZW1wb3JhcnkuLi4gKi8K LSsgICAgeyBkU1RDWFQ7IHJlYWxfY29udGV4dCA9IGN4dDsgfSAgICAgICAgICAgICAvKiBTdWIt YmxvY2sgbmVlZGVkIGZvciBtYWNybyAqLwotKyAgICBjeHQgPSByZWFsX2NvbnRleHQ7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQW5kIHdlIG5lZWQgdGhpcyB0ZW1wb3Jhcnku Li4gKi8KLSAKLSAgICAgLyoKLSAgICAgICogTm93LCAnY3h0JyBtYXkgcmVmZXIgdG8gYSBuZXcg Y29udGV4dC4KLUBAIC03NjgwLDcgKzc2NzgsNyBAQCBzdGF0aWMgU1YgKmRjbG9uZShwVEhYXyBT ViAqc3YpCi0gICAgIC8qCi0gICAgICAqIFNpbmNlIHdlJ3JlIHBhc3NpbmcgZG9fcmV0cmlldmUo KSBib3RoIGEgTlVMTCBmaWxlIGFuZCBzdiwgd2UgbmVlZAotICAgICAgKiB0byBwcmUtY29tcHV0 ZSB0aGUgdGFpbnRlZG5lc3Mgb2YgdGhlIGlucHV0IGJ5IHNldHRpbmcgY3h0LT50YWludGVkCi0t ICAgICAqIHRvIHdoYXRldmVyIHN0YXRlIG91ciBvd24gaW5wdXQgc3RyaW5nIHdhcy4JLS0gUkFN LCAxNS8wOS8yMDAwCi0rICAgICAqIHRvIHdoYXRldmVyIHN0YXRlIG91ciBvd24gaW5wdXQgc3Ry aW5nIHdhcy4gICAgICAtLSBSQU0sIDE1LzA5LzIwMDAKLSAgICAgICoKLSAgICAgICogZG9fcmV0 cmlldmUoKSB3aWxsIGZyZWUgbm9uLXJvb3QgY29udGV4dC4KLSAgICAgICovCi1AQCAtNzcwOCw5 ICs3NzA2LDkgQEAgc3RhdGljIFNWICpkY2xvbmUocFRIWF8gU1YgKnN2KQotICAqLwotIAotICNp Zm5kZWYgT3V0cHV0U3RyZWFtCi0tI2RlZmluZSBPdXRwdXRTdHJlYW0JUGVybElPICoKLS0jZGVm aW5lIElucHV0U3RyZWFtCVBlcmxJTyAqCi0tI2VuZGlmCS8qICFPdXRwdXRTdHJlYW0gKi8KLSsj ZGVmaW5lIE91dHB1dFN0cmVhbSAgICBQZXJsSU8gKgotKyNkZWZpbmUgSW5wdXRTdHJlYW0gICAg IFBlcmxJTyAqCi0rI2VuZGlmICAvKiAhT3V0cHV0U3RyZWFtICovCi0gCi0gc3RhdGljIGludAot IHN0b3JhYmxlX2ZyZWUocFRIWF8gU1YgKnN2LCBNQUdJQyogbWcpIHsKLUBAIC03NzMwLDcgKzc3 MjgsNyBAQCBzdG9yYWJsZV9mcmVlKHBUSFhfIFNWICpzdiwgTUFHSUMqIG1nKSB7Ci0gICAgIHJl dHVybiAwOwotIH0KLSAKLS1NT0RVTEUgPSBTdG9yYWJsZQlQQUNLQUdFID0gU3RvcmFibGUKLStN T0RVTEUgPSBTdG9yYWJsZSAgICAgICBQQUNLQUdFID0gU3RvcmFibGUKLSAKLSBQUk9UT1RZUEVT OiBFTkFCTEUKLSAKLUBAIC03NzcyLDcgKzc3NzAsNyBAQCBDT0RFOgotIFNWICoKLSBwc3RvcmUo ZixvYmopCi0gICAgIE91dHB1dFN0cmVhbSBmCi0tICAgIFNWKgkJb2JqCi0rICAgIFNWKiAgICAg ICAgIG9iagotIEFMSUFTOgotICAgICBuZXRfcHN0b3JlID0gMQotIFBQQ09ERToKLUBAIC03Nzk0 LDcgKzc3OTIsNyBAQCBQUENPREU6Ci0gCi0gU1YgKgotIG1zdG9yZShvYmopCi0tICAgIFNWKglv YmoKLSsgICAgU1YqIG9iagotIEFMSUFTOgotICAgICBuZXRfbXN0b3JlID0gMQotIENPREU6Ci1A QCAtNzgwNiw4ICs3ODA0LDggQEAgT1VUUFVUOgotIAotIFNWICoKLSBwcmV0cmlldmUoZiwgZmxh ZyA9IDYpCi0tICAgIElucHV0U3RyZWFtCWYKLS0gICAgSVYJCWZsYWcKLSsgICAgSW5wdXRTdHJl YW0gZgotKyAgICBJViAgICAgICAgICBmbGFnCi0gQ09ERToKLSAgICAgUkVUVkFMID0gcHJldHJp ZXZlKGFUSFhfIGYsIGZsYWcpOwotIE9VVFBVVDoKLUBAIC03ODE2LDcgKzc4MTQsNyBAQCBPVVRQ VVQ6Ci0gU1YgKgotIG1yZXRyaWV2ZShzdiwgZmxhZyA9IDYpCi0gICAgIFNWKiBzdgotLSAgICBJ VglmbGFnCi0rICAgIElWICBmbGFnCi0gQ09ERToKLSAgICAgUkVUVkFMID0gbXJldHJpZXZlKGFU SFhfIHN2LCBmbGFnKTsKLSBPVVRQVVQ6Ci1AQCAtNzgyNCw3ICs3ODIyLDcgQEAgT1VUUFVUOgot IAotIFNWICoKLSBkY2xvbmUoc3YpCi0tICAgIFNWKglzdgotKyAgICBTViogc3YKLSBDT0RFOgot ICAgICBSRVRWQUwgPSBkY2xvbmUoYVRIWF8gc3YpOwotIE9VVFBVVDoKLWRpZmYgLS1naXQgYS9o aW50cy9ocHV4LnBsIGIvaGludHMvaHB1eC5wbAotaW5kZXggOTU5ZDZmZS4uOTQzNTY1OCAxMDA2 NDQKLS0tLSBhL2hpbnRzL2hwdXgucGwKLSsrKyBiL2hpbnRzL2hwdXgucGwKLUBAIC02LDUgKzYs NSBAQCB1c2UgQ29uZmlnOwotIHVubGVzcyAoJENvbmZpZ3tnY2N2ZXJzaW9ufSkgewotICAgICBt eSAkb3B0aW1pemUgPSAkQ29uZmlne29wdGltaXplfTsKLSAgICAgJG9wdGltaXplID1+IHMvKF58 IClbLStdT1syLTldKCB8JCkvJDErTzEkMi8gYW5kCi0tCSRzZWxmLT57T1BUSU1JWkV9ID0gJG9w dGltaXplOwotLSAgICB9Ci0rICAgICAgICAkc2VsZi0+e09QVElNSVpFfSA9ICRvcHRpbWl6ZTsK LSt9Ci1kaWZmIC0tZ2l0IGEvaGludHMvbGludXgucGwgYi9oaW50cy9saW51eC5wbAotaW5kZXgg ZjZjYzBmYS4uYjU2MzU2NyAxMDA2NDQKLS0tLSBhL2hpbnRzL2xpbnV4LnBsCi0rKysgYi9oaW50 cy9saW51eC5wbAotQEAgLTEwLDcgKzEwLDcgQEAgaWYgKCRDb25maWd7Z2NjdmVyc2lvbn0gYW5k ICEkQ29uZmlne3VzZXRocmVhZHN9KSB7Ci0gICAgIG15ICRvcHRpbWl6ZSA9ICRDb25maWd7b3B0 aW1pemV9OwotICAgICAjIHdvcmtzIGZpbmUgd2l0aCBnY2MgNCBvciBjbGFuZwotICAgICBpZiAo JG9wdGltaXplID1+IHMvKF58ICktT1szLTldKCB8JCkvJDEtTzIkMi8gYW5kICRDb25maWd7Z2Nj dmVyc2lvbn0gPX4gL15bMjNdXC4vKSB7Ci0tCSRzZWxmLT57T1BUSU1JWkV9ID0gJG9wdGltaXpl OwotKyAgICAgICAgJHNlbGYtPntPUFRJTUlaRX0gPSAkb3B0aW1pemU7Ci0gICAgIH0KLSB9Ci0g Ci1kaWZmIC0tZ2l0IGEvU3RvcmFibGUucG0gYi9saWIvU3RvcmFibGUucG0KLXNpbWlsYXJpdHkg aW5kZXggODYlCi1yZW5hbWUgZnJvbSBTdG9yYWJsZS5wbQotcmVuYW1lIHRvIGxpYi9TdG9yYWJs ZS5wbQotaW5kZXggZDUzMWYyYi4uZGNlOTg0MyAxMDA2NDQKLS0tLSBhL1N0b3JhYmxlLnBtCi0r KysgYi9saWIvU3RvcmFibGUucG0KLUBAIC04LDM4ICs4LDQxIEBACi0gIyAgaW4gdGhlIFJFQURN RSBmaWxlIHRoYXQgY29tZXMgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICMKLSAKLS1CRUdJTiB7 IHJlcXVpcmUgWFNMb2FkZXIgfQotLXJlcXVpcmUgRXhwb3J0ZXI7Ci0gcGFja2FnZSBTdG9yYWJs ZTsKLSt1c2Ugc3RyaWN0OwotKwotK3VzZSBYU0xvYWRlciAoKTsKLSt1c2UgRXhwb3J0ZXIgKCk7 Ci0gCi0gb3VyIEBJU0EgPSBxdyhFeHBvcnRlcik7Ci0gb3VyIEBFWFBPUlQgPSBxdyhzdG9yZSBy ZXRyaWV2ZSk7Ci0gb3VyIEBFWFBPUlRfT0sgPSBxdygKLS0JbnN0b3JlIHN0b3JlX2ZkIG5zdG9y ZV9mZCBmZF9yZXRyaWV2ZQotLQlmcmVlemUgbmZyZWV6ZSB0aGF3Ci0tCWRjbG9uZQotLQlyZXRy aWV2ZV9mZAotLQlsb2NrX3N0b3JlIGxvY2tfbnN0b3JlIGxvY2tfcmV0cmlldmUKLS0gICAgICAg IGZpbGVfbWFnaWMgcmVhZF9tYWdpYwotLQlCTEVTU19PSyBUSUVfT0sgRkxBR1NfQ09NUEFUCi0t ICAgICAgICBzdGFja19kZXB0aCBzdGFja19kZXB0aF9oYXNoCi0rICAgIG5zdG9yZSBzdG9yZV9m ZCBuc3RvcmVfZmQgZmRfcmV0cmlldmUKLSsgICAgZnJlZXplIG5mcmVlemUgdGhhdwotKyAgICBk Y2xvbmUKLSsgICAgcmV0cmlldmVfZmQKLSsgICAgbG9ja19zdG9yZSBsb2NrX25zdG9yZSBsb2Nr X3JldHJpZXZlCi0rICAgIGZpbGVfbWFnaWMgcmVhZF9tYWdpYwotKyAgICBCTEVTU19PSyBUSUVf T0sgRkxBR1NfQ09NUEFUCi0rICAgIHN0YWNrX2RlcHRoIHN0YWNrX2RlcHRoX2hhc2gKLSApOwot IAotIG91ciAoJGNhbm9uaWNhbCwgJGZvcmdpdmVfbWUpOwotIAotIEJFR0lOIHsKLS0gIG91ciAk VkVSU0lPTiA9ICczLjMyJzsKLSsgICAgb3VyICRWRVJTSU9OID0gJzMuMzcnOwotIH0KLSAKLSBv dXIgJHJlY3Vyc2lvbl9saW1pdDsKLSBvdXIgJHJlY3Vyc2lvbl9saW1pdF9oYXNoOwotIAotICRy ZWN1cnNpb25fbGltaXQgPSA1MTIKLS0gIHVubGVzcyBkZWZpbmVkICRyZWN1cnNpb25fbGltaXQ7 Ci0rICAgIHVubGVzcyBkZWZpbmVkICRyZWN1cnNpb25fbGltaXQ7Ci0gJHJlY3Vyc2lvbl9saW1p dF9oYXNoID0gMjU2Ci0tICB1bmxlc3MgZGVmaW5lZCAkcmVjdXJzaW9uX2xpbWl0X2hhc2g7Ci0r ICAgIHVubGVzcyBkZWZpbmVkICRyZWN1cnNpb25fbGltaXRfaGFzaDsKLSAKLSB1c2UgQ2FycDsK LSt1c2UgRmNudGwgcXcoTE9DS19TSCBMT0NLX0VYKTsKLSAKLSBCRUdJTiB7Ci0gICAgIGlmIChl dmFsIHsKLUBAIC03NiwyMSArNzksNiBAQCBCRUdJTiB7Ci0gICAgIH0KLSB9Ci0gCi0tIwotLSMg VGhleSBtaWdodCBtaXNzIDpmbG9jayBpbiBGY250bAotLSMKLS0KLS1CRUdJTiB7Ci0tICAgIGlm IChldmFsIHsgcmVxdWlyZSBGY250bDsgMSB9ICYmIGV4aXN0cyAkRmNudGw6OkVYUE9SVF9UQUdT eydmbG9jayd9KSB7Ci0tICAgICAgICBGY250bC0+aW1wb3J0KCc6ZmxvY2snKTsKLS0gICAgfSBl bHNlIHsKLS0gICAgICAgIGV2YWwgcXsKLS0JICAgICAgICAgIHN1YiBMT0NLX1NIICgpIHsgMSB9 Ci0tCQkgIHN1YiBMT0NLX0VYICgpIHsgMiB9Ci0tCSAgICAgIH07Ci0tICAgIH0KLS19Ci0tCi0g c3ViIENMT05FIHsKLSAgICAgIyBjbG9uZSBjb250ZXh0IHVuZGVyIHRocmVhZHMKLSAgICAgU3Rv cmFibGU6OmluaXRfcGVyaW50ZXJwKCk7Ci1AQCAtMTAyLDkgKzkwLDkgQEAgc3ViIEZMQUdTX0NP TVBBVCAoKSB7IEJMRVNTX09LIHwgVElFX09LIH0KLSAKLSAjIEJ5IGRlZmF1bHQgcmVzdHJpY3Rl ZCBoYXNoZXMgYXJlIGRvd25ncmFkZWQgb24gZWFybGllciBwZXJscy4KLSAKLS0kU3RvcmFibGU6 OmZsYWdzID0gRkxBR1NfQ09NUEFUOwotLSRTdG9yYWJsZTo6ZG93bmdyYWRlX3Jlc3RyaWN0ZWQg PSAxOwotLSRTdG9yYWJsZTo6YWNjZXB0X2Z1dHVyZV9taW5vciA9IDE7Ci0rb3VyICRmbGFncyA9 IEZMQUdTX0NPTVBBVDsKLStvdXIgJGRvd25ncmFkZV9yZXN0cmljdGVkID0gMTsKLStvdXIgJGFj Y2VwdF9mdXR1cmVfbWlub3IgPSAxOwotIAotIEJFR0lOIHsgWFNMb2FkZXI6OmxvYWQoJ1N0b3Jh YmxlJykgfTsKLSAKLUBAIC0xMTksMjcgKzEwNywyNCBAQCBzdWIgc2hvd19maWxlX21hZ2ljIHsK LSAjIHRoZSBmb2xsb3dpbmcgbGluZXMgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgbG9jYWwgbWFn aWMoNSkgZmlsZSwKLSAjIHVzdWFsbHkgZWl0aGVyIC91c3Ivc2hhcmUvbWlzYy9tYWdpYyBvciAv ZXRjL21hZ2ljLgotICMKLS0wCXN0cmluZwlwZXJsLXN0b3JlCXBlcmwgU3RvcmFibGUodjAuNikg ZGF0YQotLT40CWJ5dGUJPjAJKG5ldC1vcmRlciAlZCkKLS0+PjQJYnl0ZQkmMDEJKG5ldHdvcmst b3JkZXJlZCkKLS0+PjQJYnl0ZQk9MwkobWFqb3IgMSkKLS0+PjQJYnl0ZQk9MgkobWFqb3IgMSkK LS0KLS0wCXN0cmluZwlwc3QwCXBlcmwgU3RvcmFibGUodjAuNykgZGF0YQotLT40CWJ5dGUJPjAK LS0+PjQJYnl0ZQkmMDEJKG5ldHdvcmstb3JkZXJlZCkKLS0+PjQJYnl0ZQk9NQkobWFqb3IgMikK LS0+PjQJYnl0ZQk9NAkobWFqb3IgMikKLS0+PjUJYnl0ZQk+MAkobWlub3IgJWQpCi0rMCAgICAg ICBzdHJpbmcgIHBlcmwtc3RvcmUgICAgICBwZXJsIFN0b3JhYmxlKHYwLjYpIGRhdGEKLSs+NCAg ICAgIGJ5dGUgICAgPjAgICAgICAgICAgICAgIChuZXQtb3JkZXIgJWQpCi0rPj40ICAgICBieXRl ICAgICYwMSAgICAgICAgICAgICAobmV0d29yay1vcmRlcmVkKQotKz4+NCAgICAgYnl0ZSAgICA9 MyAgICAgICAgICAgICAgKG1ham9yIDEpCi0rPj40ICAgICBieXRlICAgID0yICAgICAgICAgICAg ICAobWFqb3IgMSkKLSsKLSswICAgICAgIHN0cmluZyAgcHN0MCAgICAgICAgICAgIHBlcmwgU3Rv cmFibGUodjAuNykgZGF0YQotKz40ICAgICAgYnl0ZSAgICA+MAotKz4+NCAgICAgYnl0ZSAgICAm MDEgICAgICAgICAgICAgKG5ldHdvcmstb3JkZXJlZCkKLSs+PjQgICAgIGJ5dGUgICAgPTUgICAg ICAgICAgICAgIChtYWpvciAyKQotKz4+NCAgICAgYnl0ZSAgICA9NCAgICAgICAgICAgICAgKG1h am9yIDIpCi0rPj41ICAgICBieXRlICAgID4wICAgICAgICAgICAgICAobWlub3IgJWQpCi0gRU9N Ci0gfQotIAotIHN1YiBmaWxlX21hZ2ljIHsKLS0gICAgcmVxdWlyZSBJTzo6RmlsZTsKLS0KLSAg ICAgbXkgJGZpbGUgPSBzaGlmdDsKLS0gICAgbXkgJGZoID0gSU86OkZpbGUtPm5ldzsKLS0gICAg b3BlbigkZmgsICI8IiwgJGZpbGUpIHx8IGRpZSAiQ2FuJ3Qgb3BlbiAnJGZpbGUnOiAkISI7Ci0r ICAgIG9wZW4obXkgJGZoLCAiPCIsICRmaWxlKSB8fCBkaWUgIkNhbid0IG9wZW4gJyRmaWxlJzog JCEiOwotICAgICBiaW5tb2RlKCRmaCk7Ci0gICAgIGRlZmluZWQoc3lzcmVhZCgkZmgsIG15ICRi dWYsIDMyKSkgfHwgZGllICJDYW4ndCByZWFkIGZyb20gJyRmaWxlJzogJCEiOwotICAgICBjbG9z ZSgkZmgpOwotQEAgLTE1Niw1MyArMTQxLDUzIEBAIHN1YiByZWFkX21hZ2ljIHsKLSAgICAgbXkg JGJ1ZmxlbiA9IGxlbmd0aCgkYnVmKTsKLSAgICAgbXkgJG1hZ2ljOwotICAgICBpZiAoJGJ1ZiA9 fiBzL14ocHN0MHxwZXJsLXN0b3JlKS8vKSB7Ci0tCSRtYWdpYyA9ICQxOwotLQkkaW5mb3tmaWxl fSA9ICRmaWxlIHx8IDE7Ci0rICAgICAgICAkbWFnaWMgPSAkMTsKLSsgICAgICAgICRpbmZve2Zp bGV9ID0gJGZpbGUgfHwgMTsKLSAgICAgfQotICAgICBlbHNlIHsKLS0JcmV0dXJuIHVuZGVmIGlm ICRmaWxlOwotLQkkbWFnaWMgPSAiIjsKLSsgICAgICAgIHJldHVybiB1bmRlZiBpZiAkZmlsZTsK LSsgICAgICAgICRtYWdpYyA9ICIiOwotICAgICB9Ci0gCi0gICAgIHJldHVybiB1bmRlZiB1bmxl c3MgbGVuZ3RoKCRidWYpOwotIAotICAgICBteSAkbmV0X29yZGVyOwotICAgICBpZiAoJG1hZ2lj IGVxICJwZXJsLXN0b3JlIiAmJiBvcmQoc3Vic3RyKCRidWYsIDAsIDEpKSA+IDEpIHsKLS0JJGlu Zm97dmVyc2lvbn0gPSAtMTsKLS0JJG5ldF9vcmRlciA9IDA7Ci0rICAgICAgICAkaW5mb3t2ZXJz aW9ufSA9IC0xOwotKyAgICAgICAgJG5ldF9vcmRlciA9IDA7Ci0gICAgIH0KLSAgICAgZWxzZSB7 Ci0tCSRidWYgPX4gcy8oLikvL3M7Ci0tCW15ICRtYWpvciA9IChvcmQgJDEpID4+IDE7Ci0tCXJl dHVybiB1bmRlZiBpZiAkbWFqb3IgPiA0OyAjIHNhbml0eSAoYXNzdW1pbmcgd2UgbmV2ZXIgZ28g dGhhdCBoaWdoKQotLQkkaW5mb3ttYWpvcn0gPSAkbWFqb3I7Ci0tCSRuZXRfb3JkZXIgPSAob3Jk ICQxKSAmIDB4MDE7Ci0tCWlmICgkbWFqb3IgPiAxKSB7Ci0tCSAgICByZXR1cm4gdW5kZWYgdW5s ZXNzICRidWYgPX4gcy8oLikvL3M7Ci0tCSAgICBteSAkbWlub3IgPSBvcmQgJDE7Ci0tCSAgICAk aW5mb3ttaW5vcn0gPSAkbWlub3I7Ci0tCSAgICAkaW5mb3t2ZXJzaW9ufSA9ICIkbWFqb3IuJG1p bm9yIjsKLS0JICAgICRpbmZve3ZlcnNpb25fbnZ9ID0gc3ByaW50ZiAiJWQuJTAzZCIsICRtYWpv ciwgJG1pbm9yOwotLQl9Ci0tCWVsc2UgewotLQkgICAgJGluZm97dmVyc2lvbn0gPSAkbWFqb3I7 Ci0tCX0KLSsgICAgICAgICRidWYgPX4gcy8oLikvL3M7Ci0rICAgICAgICBteSAkbWFqb3IgPSAo b3JkICQxKSA+PiAxOwotKyAgICAgICAgcmV0dXJuIHVuZGVmIGlmICRtYWpvciA+IDQ7ICMgc2Fu aXR5IChhc3N1bWluZyB3ZSBuZXZlciBnbyB0aGF0IGhpZ2gpCi0rICAgICAgICAkaW5mb3ttYWpv cn0gPSAkbWFqb3I7Ci0rICAgICAgICAkbmV0X29yZGVyID0gKG9yZCAkMSkgJiAweDAxOwotKyAg ICAgICAgaWYgKCRtYWpvciA+IDEpIHsKLSsgICAgICAgICAgICByZXR1cm4gdW5kZWYgdW5sZXNz ICRidWYgPX4gcy8oLikvL3M7Ci0rICAgICAgICAgICAgbXkgJG1pbm9yID0gb3JkICQxOwotKyAg ICAgICAgICAgICRpbmZve21pbm9yfSA9ICRtaW5vcjsKLSsgICAgICAgICAgICAkaW5mb3t2ZXJz aW9ufSA9ICIkbWFqb3IuJG1pbm9yIjsKLSsgICAgICAgICAgICAkaW5mb3t2ZXJzaW9uX252fSA9 IHNwcmludGYgIiVkLiUwM2QiLCAkbWFqb3IsICRtaW5vcjsKLSsgICAgICAgIH0KLSsgICAgICAg IGVsc2UgewotKyAgICAgICAgICAgICRpbmZve3ZlcnNpb259ID0gJG1ham9yOwotKyAgICAgICAg fQotICAgICB9Ci0gICAgICRpbmZve3ZlcnNpb25fbnZ9IHx8PSAkaW5mb3t2ZXJzaW9ufTsKLSAg ICAgJGluZm97bmV0b3JkZXJ9ID0gJG5ldF9vcmRlcjsKLSAKLSAgICAgdW5sZXNzICgkbmV0X29y ZGVyKSB7Ci0tCXJldHVybiB1bmRlZiB1bmxlc3MgJGJ1ZiA9fiBzLyguKS8vczsKLS0JbXkgJGxl biA9IG9yZCAkMTsKLS0JcmV0dXJuIHVuZGVmIHVubGVzcyBsZW5ndGgoJGJ1ZikgPj0gJGxlbjsK LS0JcmV0dXJuIHVuZGVmIHVubGVzcyAkbGVuID09IDQgfHwgJGxlbiA9PSA4OyAgIyBzYW5pdHkK LS0JQGluZm97cXcoYnl0ZW9yZGVyIGludHNpemUgbG9uZ3NpemUgcHRyc2l6ZSl9Ci0tCSAgICA9 IHVucGFjayAiYSR7bGVufUNDQyIsICRidWY7Ci0tCShzdWJzdHIgJGJ1ZiwgMCwgJGxlbiArIDMp ID0gJyc7Ci0tCWlmICgkaW5mb3t2ZXJzaW9uX252fSA+PSAyLjAwMikgewotLQkgICAgcmV0dXJu IHVuZGVmIHVubGVzcyAkYnVmID1+IHMvKC4pLy9zOwotLQkgICAgJGluZm97bnZzaXplfSA9IG9y ZCAkMTsKLS0JfQotKyAgICAgICAgcmV0dXJuIHVuZGVmIHVubGVzcyAkYnVmID1+IHMvKC4pLy9z OwotKyAgICAgICAgbXkgJGxlbiA9IG9yZCAkMTsKLSsgICAgICAgIHJldHVybiB1bmRlZiB1bmxl c3MgbGVuZ3RoKCRidWYpID49ICRsZW47Ci0rICAgICAgICByZXR1cm4gdW5kZWYgdW5sZXNzICRs ZW4gPT0gNCB8fCAkbGVuID09IDg7ICAjIHNhbml0eQotKyAgICAgICAgQGluZm97cXcoYnl0ZW9y ZGVyIGludHNpemUgbG9uZ3NpemUgcHRyc2l6ZSl9Ci0rICAgICAgICAgICAgPSB1bnBhY2sgImEk e2xlbn1DQ0MiLCAkYnVmOwotKyAgICAgICAgKHN1YnN0ciAkYnVmLCAwLCAkbGVuICsgMykgPSAn JzsKLSsgICAgICAgIGlmICgkaW5mb3t2ZXJzaW9uX252fSA+PSAyLjAwMikgewotKyAgICAgICAg ICAgIHJldHVybiB1bmRlZiB1bmxlc3MgJGJ1ZiA9fiBzLyguKS8vczsKLSsgICAgICAgICAgICAk aW5mb3tudnNpemV9ID0gb3JkICQxOwotKyAgICAgICAgfQotICAgICB9Ci0gICAgICRpbmZve2hk cnNpemV9ID0gJGJ1ZmxlbiAtIGxlbmd0aCgkYnVmKTsKLSAKLUBAIC0yNjIsMzQgKzI0NywzNCBA QCBzdWIgX3N0b3JlIHsKLSAgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAgICAgbXkgKCRmaWxlLCAk dXNlX2xvY2tpbmcpID0gQF87Ci0gICAgIGxvZ2Nyb2FrICJub3QgYSByZWZlcmVuY2UiIHVubGVz cyByZWYoJHNlbGYpOwotLSAgICBsb2djcm9hayAid3JvbmcgYXJndW1lbnQgbnVtYmVyIiB1bmxl c3MgQF8gPT0gMjsJIyBObyBAZm9vIGluIGFyZ2xpc3QKLS0gICAgbG9jYWwgKkZJTEU7Ci0rICAg IGxvZ2Nyb2FrICJ3cm9uZyBhcmd1bWVudCBudW1iZXIiIHVubGVzcyBAXyA9PSAyOyAgICAjIE5v IEBmb28gaW4gYXJnbGlzdAotKyAgICBteSAkRklMRTsKLSAgICAgaWYgKCR1c2VfbG9ja2luZykg ewotLSAgICAgICAgb3BlbihGSUxFLCAiPj4iLCAkZmlsZSkgfHwgbG9nY3JvYWsgImNhbid0IHdy aXRlIGludG8gJGZpbGU6ICQhIjsKLSsgICAgICAgIG9wZW4oJEZJTEUsICI+PiIsICRmaWxlKSB8 fCBsb2djcm9hayAiY2FuJ3Qgd3JpdGUgaW50byAkZmlsZTogJCEiOwotICAgICAgICAgdW5sZXNz IChDQU5fRkxPQ0spIHsKLSAgICAgICAgICAgICBsb2djYXJwCi0tICAgICAgICAgICAgICAiU3Rv cmFibGU6OmxvY2tfc3RvcmU6IGZjbnRsL2Zsb2NrIGVtdWxhdGlvbiBicm9rZW4gb24gJF5PIjsK LSsgICAgICAgICAgICAgICAgIlN0b3JhYmxlOjpsb2NrX3N0b3JlOiBmY250bC9mbG9jayBlbXVs YXRpb24gYnJva2VuIG9uICReTyI7Ci0gICAgICAgICAgICAgcmV0dXJuIHVuZGVmOwotICAgICAg ICAgfQotLSAgICAgICAgZmxvY2soRklMRSwgTE9DS19FWCkgfHwKLS0gICAgICAgICAgbG9nY3Jv YWsgImNhbid0IGdldCBleGNsdXNpdmUgbG9jayBvbiAkZmlsZTogJCEiOwotLSAgICAgICAgdHJ1 bmNhdGUgRklMRSwgMDsKLSsgICAgICAgIGZsb2NrKCRGSUxFLCBMT0NLX0VYKSB8fAotKyAgICAg ICAgICAgIGxvZ2Nyb2FrICJjYW4ndCBnZXQgZXhjbHVzaXZlIGxvY2sgb24gJGZpbGU6ICQhIjsK LSsgICAgICAgIHRydW5jYXRlICRGSUxFLCAwOwotICAgICAgICAgIyBVbmxvY2tpbmcgd2lsbCBo YXBwZW4gd2hlbiBGSUxFIGlzIGNsb3NlZAotICAgICB9IGVsc2UgewotLSAgICAgICAgb3BlbihG SUxFLCAiPiIsICRmaWxlKSB8fCBsb2djcm9hayAiY2FuJ3QgY3JlYXRlICRmaWxlOiAkISI7Ci0r ICAgICAgICBvcGVuKCRGSUxFLCAiPiIsICRmaWxlKSB8fCBsb2djcm9hayAiY2FuJ3QgY3JlYXRl ICRmaWxlOiAkISI7Ci0gICAgIH0KLS0gICAgYmlubW9kZSBGSUxFOwkjIEFyY2hhaWMgc3lzdGVt cy4uLgotLSAgICBteSAkZGEgPSAkQDsJIyBEb24ndCBtZXNzIGlmIGNhbGxlZCBmcm9tIGV4Y2Vw dGlvbiBoYW5kbGVyCi0rICAgIGJpbm1vZGUgJEZJTEU7ICAgIyBBcmNoYWljIHN5c3RlbXMuLi4K LSsgICAgbXkgJGRhID0gJEA7ICAgICMgRG9uJ3QgbWVzcyBpZiBjYWxsZWQgZnJvbSBleGNlcHRp b24gaGFuZGxlcgotICAgICBteSAkcmV0OwotICAgICAjIENhbGwgQyByb3V0aW5lIG5zdG9yZSBv ciBwc3RvcmUsIGRlcGVuZGluZyBvbiBuZXR3b3JrIG9yZGVyCi0tICAgIGV2YWwgeyAkcmV0ID0g JiR4c3B0cigqRklMRSwgJHNlbGYpIH07Ci0rICAgIGV2YWwgeyAkcmV0ID0gJiR4c3B0cigkRklM RSwgJHNlbGYpIH07Ci0gICAgICMgY2xvc2Ugd2lsbCByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBz byB0aGUgb3Igc2hvcnQtY2lyY3VpdHMsIHRoZSAoKQotICAgICAjIGV4cHJlc3Npb24gaXMgdHJ1 ZSwgYW5kIGZvciB0aGF0IGNhc2UgdGhlIGJsb2NrIHdpbGwgb25seSBiZSBlbnRlcmVkCi0gICAg ICMgaWYgJEAgaXMgdHJ1ZSAoaWUgZXZhbCBmYWlsZWQpCi0gICAgICMgaWYgY2xvc2UgZmFpbHMs IGl0IHJldHVybnMgZmFsc2UsICRyZXQgaXMgYWx0ZXJlZCwgKnRoYXQqIGlzIChhbHNvKQotICAg ICAjIGZhbHNlLCBzbyB0aGUgKCkgZXhwcmVzc2lvbiBpcyBmYWxzZSwgISgpIGlzIHRydWUsIGFu ZCB0aGUgYmxvY2sgaXMKLSAgICAgIyBlbnRlcmVkLgotLSAgICBpZiAoIShjbG9zZShGSUxFKSBv ciB1bmRlZiAkcmV0KSB8fCAkQCkgewotKyAgICBpZiAoIShjbG9zZSgkRklMRSkgb3IgdW5kZWYg JHJldCkgfHwgJEApIHsKLSAgICAgICAgIHVubGluaygkZmlsZSkgb3Igd2FybiAiQ2FuJ3QgdW5s aW5rICRmaWxlOiAkIVxuIjsKLSAgICAgfQotICAgICBpZiAoJEApIHsKLUBAIC0zMjYsMTUgKzMx MSwyMCBAQCBzdWIgX3N0b3JlX2ZkIHsKLSAgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAgICAgbXkg KCRmaWxlKSA9IEBfOwotICAgICBsb2djcm9hayAibm90IGEgcmVmZXJlbmNlIiB1bmxlc3MgcmVm KCRzZWxmKTsKLS0gICAgbG9nY3JvYWsgInRvbyBtYW55IGFyZ3VtZW50cyIgdW5sZXNzIEBfID09 IDE7CSMgTm8gQGZvbyBpbiBhcmdsaXN0Ci0rICAgIGxvZ2Nyb2FrICJ0b28gbWFueSBhcmd1bWVu dHMiIHVubGVzcyBAXyA9PSAxOyAgICAgICAjIE5vIEBmb28gaW4gYXJnbGlzdAotICAgICBteSAk ZmQgPSBmaWxlbm8oJGZpbGUpOwotICAgICBsb2djcm9hayAibm90IGEgdmFsaWQgZmlsZSBkZXNj cmlwdG9yIiB1bmxlc3MgZGVmaW5lZCAkZmQ7Ci0tICAgIG15ICRkYSA9ICRAOwkJIyBEb24ndCBt ZXNzIGlmIGNhbGxlZCBmcm9tIGV4Y2VwdGlvbiBoYW5kbGVyCi0rICAgICRmaWxlID0gZG8gewot KyAgICAgICAgbm8gc3RyaWN0ICdyZWZzJzsKLSsgICAgICAgIFwqeyAkZmlsZSB9OwotKyAgICB9 OwotKyAgICBteSAkZGEgPSAkQDsgICAgICAgICAgICAgICAgIyBEb24ndCBtZXNzIGlmIGNhbGxl ZCBmcm9tIGV4Y2VwdGlvbiBoYW5kbGVyCi0gICAgIG15ICRyZXQ7Ci0gICAgICMgQ2FsbCBDIHJv dXRpbmUgbnN0b3JlIG9yIHBzdG9yZSwgZGVwZW5kaW5nIG9uIG5ldHdvcmsgb3JkZXIKLSAgICAg ZXZhbCB7ICRyZXQgPSAmJHhzcHRyKCRmaWxlLCAkc2VsZikgfTsKLSAgICAgbG9nY3JvYWsgJEAg aWYgJEAgPX4gcy9cLj9cbiQvLC87Ci0tICAgIGxvY2FsICRcOyBwcmludCAkZmlsZSAnJzsJIyBB dXRvZmx1c2ggdGhlIGZpbGUgaWYgd2FudGVkCi0rICAgIGxvY2FsICRcOwotKyAgICBwcmludCAk ZmlsZSAnJzsgICAgICAgIyBBdXRvZmx1c2ggdGhlIGZpbGUgaWYgd2FudGVkCi0gICAgICRAID0g JGRhOwotICAgICByZXR1cm4gJHJldDsKLSB9Ci1AQCAtMzYzLDggKzM1Myw4IEBAIHN1YiBfZnJl ZXplIHsKLSAgICAgbXkgJHhzcHRyID0gc2hpZnQ7Ci0gICAgIG15ICRzZWxmID0gc2hpZnQ7Ci0g ICAgIGxvZ2Nyb2FrICJub3QgYSByZWZlcmVuY2UiIHVubGVzcyByZWYoJHNlbGYpOwotLSAgICBs b2djcm9hayAidG9vIG1hbnkgYXJndW1lbnRzIiB1bmxlc3MgQF8gPT0gMDsJIyBObyBAZm9vIGlu IGFyZ2xpc3QKLS0gICAgbXkgJGRhID0gJEA7CSAgICAgICAgIyBEb24ndCBtZXNzIGlmIGNhbGxl ZCBmcm9tIGV4Y2VwdGlvbiBoYW5kbGVyCi0rICAgIGxvZ2Nyb2FrICJ0b28gbWFueSBhcmd1bWVu dHMiIHVubGVzcyBAXyA9PSAwOyAgICAgIyBObyBAZm9vIGluIGFyZ2xpc3QKLSsgICAgbXkgJGRh ID0gJEA7ICAgICAgICAgICAgICAgICMgRG9uJ3QgbWVzcyBpZiBjYWxsZWQgZnJvbSBleGNlcHRp b24gaGFuZGxlcgotICAgICBteSAkcmV0OwotICAgICAjIENhbGwgQyByb3V0aW5lIG1zdG9yZSBv ciBuZXRfbXN0b3JlLCBkZXBlbmRpbmcgb24gbmV0d29yayBvcmRlcgotICAgICBldmFsIHsgJHJl dCA9ICYkeHNwdHIoJHNlbGYpIH07Ci1AQCAtNDA2LDE5ICszOTYsMTkgQEAgc3ViIF9yZXRyaWV2 ZSB7Ci0gICAgICRmbGFncyA9ICRTdG9yYWJsZTo6ZmxhZ3MgdW5sZXNzIGRlZmluZWQgJGZsYWdz OwotICAgICBteSAkRklMRTsKLSAgICAgb3BlbigkRklMRSwgIjwiLCAkZmlsZSkgfHwgbG9nY3Jv YWsgImNhbid0IG9wZW4gJGZpbGU6ICQhIjsKLS0gICAgYmlubW9kZSAkRklMRTsJCQkjIEFyY2hh aWMgc3lzdGVtcy4uLgotKyAgICBiaW5tb2RlICRGSUxFOyAgICAgICAgICAgICAgICAgICAgICAj IEFyY2hhaWMgc3lzdGVtcy4uLgotICAgICBteSAkc2VsZjsKLS0gICAgbXkgJGRhID0gJEA7CQkJ IyBDb3VsZCBiZSBmcm9tIGV4Y2VwdGlvbiBoYW5kbGVyCi0rICAgIG15ICRkYSA9ICRAOyAgICAg ICAgICAgICAgICAgICAgICAgICMgQ291bGQgYmUgZnJvbSBleGNlcHRpb24gaGFuZGxlcgotICAg ICBpZiAoJHVzZV9sb2NraW5nKSB7Ci0gICAgICAgICB1bmxlc3MgKENBTl9GTE9DSykgewotICAg ICAgICAgICAgIGxvZ2NhcnAKLS0gICAgICAgICAgICAgICJTdG9yYWJsZTo6bG9ja19zdG9yZTog ZmNudGwvZmxvY2sgZW11bGF0aW9uIGJyb2tlbiBvbiAkXk8iOwotKyAgICAgICAgICAgICAgICAi U3RvcmFibGU6OmxvY2tfc3RvcmU6IGZjbnRsL2Zsb2NrIGVtdWxhdGlvbiBicm9rZW4gb24gJF5P IjsKLSAgICAgICAgICAgICByZXR1cm4gdW5kZWY7Ci0gICAgICAgICB9Ci0gICAgICAgICBmbG9j aygkRklMRSwgTE9DS19TSCkgfHwgbG9nY3JvYWsgImNhbid0IGdldCBzaGFyZWQgbG9jayBvbiAk ZmlsZTogJCEiOwotICAgICAgICAgIyBVbmxvY2tpbmcgd2lsbCBoYXBwZW4gd2hlbiBGSUxFIGlz IGNsb3NlZAotICAgICB9Ci0tICAgIGV2YWwgeyAkc2VsZiA9IHByZXRyaWV2ZSgkRklMRSwgJGZs YWdzKSB9OwkJIyBDYWxsIEMgcm91dGluZQotKyAgICBldmFsIHsgJHNlbGYgPSBwcmV0cmlldmUo JEZJTEUsICRmbGFncykgfTsgICAgICAgICAgIyBDYWxsIEMgcm91dGluZQotICAgICBjbG9zZSgk RklMRSk7Ci0gICAgIGlmICgkQCkgewotICAgICAgICAgJEAgPX4gcy9cLj9cbiQvLC8gdW5sZXNz IHJlZiAkQDsKLUBAIC00MzksOCArNDI5LDggQEAgc3ViIGZkX3JldHJpZXZlIHsKLSAgICAgbXkg JGZkID0gZmlsZW5vKCRmaWxlKTsKLSAgICAgbG9nY3JvYWsgIm5vdCBhIHZhbGlkIGZpbGUgZGVz Y3JpcHRvciIgdW5sZXNzIGRlZmluZWQgJGZkOwotICAgICBteSAkc2VsZjsKLS0gICAgbXkgJGRh ID0gJEA7CQkJCSMgQ291bGQgYmUgZnJvbSBleGNlcHRpb24gaGFuZGxlcgotLSAgICBldmFsIHsg JHNlbGYgPSBwcmV0cmlldmUoJGZpbGUsICRmbGFncykgfTsJIyBDYWxsIEMgcm91dGluZQotKyAg ICBteSAkZGEgPSAkQDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ291bGQgYmUg ZnJvbSBleGNlcHRpb24gaGFuZGxlcgotKyAgICBldmFsIHsgJHNlbGYgPSBwcmV0cmlldmUoJGZp bGUsICRmbGFncykgfTsgICMgQ2FsbCBDIHJvdXRpbmUKLSAgICAgaWYgKCRAKSB7Ci0gICAgICAg ICAkQCA9fiBzL1wuP1xuJC8sLyB1bmxlc3MgcmVmICRAOwotICAgICAgICAgbG9nY3JvYWsgJEA7 Ci1AQCAtNDQ5LDcgKzQzOSw3IEBAIHN1YiBmZF9yZXRyaWV2ZSB7Ci0gICAgIHJldHVybiAkc2Vs ZjsKLSB9Ci0gCi0tc3ViIHJldHJpZXZlX2ZkIHsgJmZkX3JldHJpZXZlIH0JCSMgQmFja3dhcmQg Y29tcGF0aWJpbGl0eQotK3N1YiByZXRyaWV2ZV9mZCB7ICZmZF9yZXRyaWV2ZSB9ICAgICAgICAg ICAgICAgICMgQmFja3dhcmQgY29tcGF0aWJpbGl0eQotIAotICMKLSAjIHRoYXcKLUBAIC00Njcs OCArNDU3LDggQEAgc3ViIHRoYXcgewotICAgICAkZmxhZ3MgPSAkU3RvcmFibGU6OmZsYWdzIHVu bGVzcyBkZWZpbmVkICRmbGFnczsKLSAgICAgcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICRm cm96ZW47Ci0gICAgIG15ICRzZWxmOwotLSAgICBteSAkZGEgPSAkQDsJCQkgICAgICAgICMgQ291 bGQgYmUgZnJvbSBleGNlcHRpb24gaGFuZGxlcgotLSAgICBldmFsIHsgJHNlbGYgPSBtcmV0cmll dmUoJGZyb3plbiwgJGZsYWdzKSB9OyMgQ2FsbCBDIHJvdXRpbmUKLSsgICAgbXkgJGRhID0gJEA7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDb3VsZCBiZSBmcm9tIGV4Y2Vw dGlvbiBoYW5kbGVyCi0rICAgIGV2YWwgeyAkc2VsZiA9IG1yZXRyaWV2ZSgkZnJvemVuLCAkZmxh Z3MpIH07ICAgICMgQ2FsbCBDIHJvdXRpbmUKLSAgICAgaWYgKCRAKSB7Ci0gICAgICAgICAkQCA9 fiBzL1wuP1xuJC8sLyB1bmxlc3MgcmVmICRAOwotICAgICAgICAgbG9nY3JvYWsgJEA7Ci1AQCAt NTIxLDcgKzUxMSw3IEBAIHN1YiBfcmVnZXhwX3BhdHRlcm4gewotIH0KLSAxCi0gRU9TCi0tICAg ICAgb3IgZGllICJDYW5ub3QgZGVmaW5lIF9yZWdleHBfcGF0dGVybjogJEAiOwotKyAgICAgICAg b3IgZGllICJDYW5ub3QgZGVmaW5lIF9yZWdleHBfcGF0dGVybjogJEAiOwotIH0KLSAKLSAxOwot QEAgLTUzMywzNCArNTIzLDM0IEBAIFN0b3JhYmxlIC0gcGVyc2lzdGVuY2UgZm9yIFBlcmwgZGF0 YSBzdHJ1Y3R1cmVzCi0gCi0gPWhlYWQxIFNZTk9QU0lTCi0gCi0tIHVzZSBTdG9yYWJsZTsKLS0g c3RvcmUgXCV0YWJsZSwgJ2ZpbGUnOwotLSAkaGFzaHJlZiA9IHJldHJpZXZlKCdmaWxlJyk7Ci0r ICAgIHVzZSBTdG9yYWJsZTsKLSsgICAgc3RvcmUgXCV0YWJsZSwgJ2ZpbGUnOwotKyAgICAkaGFz aHJlZiA9IHJldHJpZXZlKCdmaWxlJyk7Ci0gCi0tIHVzZSBTdG9yYWJsZSBxdyhuc3RvcmUgc3Rv cmVfZmQgbnN0b3JlX2ZkIGZyZWV6ZSB0aGF3IGRjbG9uZSk7Ci0rICAgIHVzZSBTdG9yYWJsZSBx dyhuc3RvcmUgc3RvcmVfZmQgbnN0b3JlX2ZkIGZyZWV6ZSB0aGF3IGRjbG9uZSk7Ci0gCi0tICMg TmV0d29yayBvcmRlcgotLSBuc3RvcmUgXCV0YWJsZSwgJ2ZpbGUnOwotLSAkaGFzaHJlZiA9IHJl dHJpZXZlKCdmaWxlJyk7CSMgVGhlcmUgaXMgTk8gbnJldHJpZXZlKCkKLSsgICAgIyBOZXR3b3Jr IG9yZGVyCi0rICAgIG5zdG9yZSBcJXRhYmxlLCAnZmlsZSc7Ci0rICAgICRoYXNocmVmID0gcmV0 cmlldmUoJ2ZpbGUnKTsgICAgICAgICMgVGhlcmUgaXMgTk8gbnJldHJpZXZlKCkKLSAKLS0gIyBT dG9yaW5nIHRvIGFuZCByZXRyaWV2aW5nIGZyb20gYW4gYWxyZWFkeSBvcGVuZWQgZmlsZQotLSBz dG9yZV9mZCBcQGFycmF5LCBcKlNURE9VVDsKLS0gbnN0b3JlX2ZkIFwldGFibGUsIFwqU1RET1VU OwotLSAkYXJ5cmVmID0gZmRfcmV0cmlldmUoXCpTT0NLRVQpOwotLSAkaGFzaHJlZiA9IGZkX3Jl dHJpZXZlKFwqU09DS0VUKTsKLSsgICAgIyBTdG9yaW5nIHRvIGFuZCByZXRyaWV2aW5nIGZyb20g YW4gYWxyZWFkeSBvcGVuZWQgZmlsZQotKyAgICBzdG9yZV9mZCBcQGFycmF5LCBcKlNURE9VVDsK LSsgICAgbnN0b3JlX2ZkIFwldGFibGUsIFwqU1RET1VUOwotKyAgICAkYXJ5cmVmID0gZmRfcmV0 cmlldmUoXCpTT0NLRVQpOwotKyAgICAkaGFzaHJlZiA9IGZkX3JldHJpZXZlKFwqU09DS0VUKTsK LSAKLS0gIyBTZXJpYWxpemluZyB0byBtZW1vcnkKLS0gJHNlcmlhbGl6ZWQgPSBmcmVlemUgXCV0 YWJsZTsKLS0gJXRhYmxlX2Nsb25lID0gJXsgdGhhdygkc2VyaWFsaXplZCkgfTsKLSsgICAgIyBT ZXJpYWxpemluZyB0byBtZW1vcnkKLSsgICAgJHNlcmlhbGl6ZWQgPSBmcmVlemUgXCV0YWJsZTsK LSsgICAgJXRhYmxlX2Nsb25lID0gJXsgdGhhdygkc2VyaWFsaXplZCkgfTsKLSAKLS0gIyBEZWVw IChyZWN1cnNpdmUpIGNsb25pbmcKLS0gJGNsb25lcmVmID0gZGNsb25lKCRyZWYpOwotKyAgICAj IERlZXAgKHJlY3Vyc2l2ZSkgY2xvbmluZwotKyAgICAkY2xvbmVyZWYgPSBkY2xvbmUoJHJlZik7 Ci0gCi0tICMgQWR2aXNvcnkgbG9ja2luZwotLSB1c2UgU3RvcmFibGUgcXcobG9ja19zdG9yZSBs b2NrX25zdG9yZSBsb2NrX3JldHJpZXZlKQotLSBsb2NrX3N0b3JlIFwldGFibGUsICdmaWxlJzsK LS0gbG9ja19uc3RvcmUgXCV0YWJsZSwgJ2ZpbGUnOwotLSAkaGFzaHJlZiA9IGxvY2tfcmV0cmll dmUoJ2ZpbGUnKTsKLSsgICAgIyBBZHZpc29yeSBsb2NraW5nCi0rICAgIHVzZSBTdG9yYWJsZSBx dyhsb2NrX3N0b3JlIGxvY2tfbnN0b3JlIGxvY2tfcmV0cmlldmUpCi0rICAgIGxvY2tfc3RvcmUg XCV0YWJsZSwgJ2ZpbGUnOwotKyAgICBsb2NrX25zdG9yZSBcJXRhYmxlLCAnZmlsZSc7Ci0rICAg ICRoYXNocmVmID0gbG9ja19yZXRyaWV2ZSgnZmlsZScpOwotIAotID1oZWFkMSBERVNDUklQVElP TgotIAotQEAgLTU5Myw4ICs1ODMsOCBAQCBzbyB5b3Ugd2lsbCBoYXZlIHRvIGRvIHRoYXQgZXhw bGljaXRseSBpZiB5b3UgbmVlZCB0aG9zZSByb3V0aW5lcy4KLSBUaGUgZmlsZSBkZXNjcmlwdG9y IHlvdSBzdXBwbHkgbXVzdCBiZSBhbHJlYWR5IG9wZW5lZCwgZm9yIHJlYWQKLSBpZiB5b3UncmUg Z29pbmcgdG8gcmV0cmlldmUgYW5kIGZvciB3cml0ZSBpZiB5b3Ugd2lzaCB0byBzdG9yZS4KLSAK LS0Jc3RvcmVfZmQoXCV0YWJsZSwgKlNURE9VVCkgfHwgZGllICJjYW4ndCBzdG9yZSB0byBzdGRv dXRcbiI7Ci0tCSRoYXNocmVmID0gZmRfcmV0cmlldmUoKlNURElOKTsKLSsgICAgc3RvcmVfZmQo XCV0YWJsZSwgKlNURE9VVCkgfHwgZGllICJjYW4ndCBzdG9yZSB0byBzdGRvdXRcbiI7Ci0rICAg ICRoYXNocmVmID0gZmRfcmV0cmlldmUoKlNURElOKTsKLSAKLSBZb3UgY2FuIGFsc28gc3RvcmUg ZGF0YSBpbiBuZXR3b3JrIG9yZGVyIHRvIGFsbG93IGVhc3kgc2hhcmluZyBhY3Jvc3MKLSBtdWx0 aXBsZSBwbGF0Zm9ybXMsIG9yIHdoZW4gc3RvcmluZyBvbiBhIHNvY2tldCBrbm93biB0byBiZSBy ZW1vdGVseQotQEAgLTEwMTgsNyArMTAwOCw3IEBAIHN0YXkgc2hhcmVkLgotIAotIEluIHRoZSBh Ym92ZSBbQSwgQ10gZXhhbXBsZSwgdGhlIEM8U1RPUkFCTEVfZnJlZXplPiBob29rIGNvdWxkIHJl dHVybjoKLSAKLS0JKCJzb21ldGhpbmciLCAkc2VsZi0+e0J9KQotKyAgICAoInNvbWV0aGluZyIs ICRzZWxmLT57Qn0pCi0gCi0gYW5kIHRoZSBCIHBhcnQgd291bGQgYmUgc2VyaWFsaXplZCBieSB0 aGUgZW5naW5lLiAgSW4gQzxTVE9SQUJMRV90aGF3PiwgeW91Ci0gd291bGQgZ2V0IGJhY2sgdGhl IHJlZmVyZW5jZSB0byB0aGUgQicgb2JqZWN0LCBkZXNlcmlhbGl6ZWQgZm9yIHlvdS4KLUBAIC0x MTUyLDQ4ICsxMTQyLDQ4IEBAIHN1Y2guCi0gCi0gSGVyZSBhcmUgc29tZSBjb2RlIHNhbXBsZXMg c2hvd2luZyBhIHBvc3NpYmxlIHVzYWdlIG9mIFN0b3JhYmxlOgotIAotLSB1c2UgU3RvcmFibGUg cXcoc3RvcmUgcmV0cmlldmUgZnJlZXplIHRoYXcgZGNsb25lKTsKLSsgICAgdXNlIFN0b3JhYmxl IHF3KHN0b3JlIHJldHJpZXZlIGZyZWV6ZSB0aGF3IGRjbG9uZSk7Ci0gCi0tICVjb2xvciA9ICgn Qmx1ZScgPT4gMC4xLCAnUmVkJyA9PiAwLjgsICdCbGFjaycgPT4gMCwgJ1doaXRlJyA9PiAxKTsK LSsgICAgJWNvbG9yID0gKCdCbHVlJyA9PiAwLjEsICdSZWQnID0+IDAuOCwgJ0JsYWNrJyA9PiAw LCAnV2hpdGUnID0+IDEpOwotIAotLSBzdG9yZShcJWNvbG9yLCAnbXljb2xvcnMnKSBvciBkaWUg IkNhbid0IHN0b3JlICVhIGluIG15Y29sb3JzIVxuIjsKLSsgICAgc3RvcmUoXCVjb2xvciwgJ215 Y29sb3JzJykgb3IgZGllICJDYW4ndCBzdG9yZSAlYSBpbiBteWNvbG9ycyFcbiI7Ci0gCi0tICRj b2xyZWYgPSByZXRyaWV2ZSgnbXljb2xvcnMnKTsKLS0gZGllICJVbmFibGUgdG8gcmV0cmlldmUg ZnJvbSBteWNvbG9ycyFcbiIgdW5sZXNzIGRlZmluZWQgJGNvbHJlZjsKLS0gcHJpbnRmICJCbHVl IGlzIHN0aWxsICVsZlxuIiwgJGNvbHJlZi0+eydCbHVlJ307Ci0rICAgICRjb2xyZWYgPSByZXRy aWV2ZSgnbXljb2xvcnMnKTsKLSsgICAgZGllICJVbmFibGUgdG8gcmV0cmlldmUgZnJvbSBteWNv bG9ycyFcbiIgdW5sZXNzIGRlZmluZWQgJGNvbHJlZjsKLSsgICAgcHJpbnRmICJCbHVlIGlzIHN0 aWxsICVsZlxuIiwgJGNvbHJlZi0+eydCbHVlJ307Ci0gCi0tICRjb2xyZWYyID0gZGNsb25lKFwl Y29sb3IpOwotKyAgICAkY29scmVmMiA9IGRjbG9uZShcJWNvbG9yKTsKLSAKLS0gJHN0ciA9IGZy ZWV6ZShcJWNvbG9yKTsKLS0gcHJpbnRmICJTZXJpYWxpemF0aW9uIG9mICUlY29sb3IgaXMgJWQg Ynl0ZXMgbG9uZy5cbiIsIGxlbmd0aCgkc3RyKTsKLS0gJGNvbHJlZjMgPSB0aGF3KCRzdHIpOwot KyAgICAkc3RyID0gZnJlZXplKFwlY29sb3IpOwotKyAgICBwcmludGYgIlNlcmlhbGl6YXRpb24g b2YgJSVjb2xvciBpcyAlZCBieXRlcyBsb25nLlxuIiwgbGVuZ3RoKCRzdHIpOwotKyAgICAkY29s cmVmMyA9IHRoYXcoJHN0cik7Ci0gCi0gd2hpY2ggcHJpbnRzIChvbiBteSBtYWNoaW5lKToKLSAK LS0gQmx1ZSBpcyBzdGlsbCAwLjEwMDAwMAotLSBTZXJpYWxpemF0aW9uIG9mICVjb2xvciBpcyAx MDIgYnl0ZXMgbG9uZy4KLSsgICAgQmx1ZSBpcyBzdGlsbCAwLjEwMDAwMAotKyAgICBTZXJpYWxp emF0aW9uIG9mICVjb2xvciBpcyAxMDIgYnl0ZXMgbG9uZy4KLSAKLSBTZXJpYWxpemF0aW9uIG9m IENPREUgcmVmZXJlbmNlcyBhbmQgZGVzZXJpYWxpemF0aW9uIGluIGEgc2FmZQotIGNvbXBhcnRt ZW50OgotIAotID1mb3IgZXhhbXBsZSBiZWdpbgotIAotLSB1c2UgU3RvcmFibGUgcXcoZnJlZXpl IHRoYXcpOwotLSB1c2UgU2FmZTsKLS0gdXNlIHN0cmljdDsKLS0gbXkgJHNhZmUgPSBuZXcgU2Fm ZTsKLS0gICAgICAgICMgYmVjYXVzZSBvZiBvcGNvZGVzIHVzZWQgaW4gInVzZSBzdHJpY3QiOgot LSAkc2FmZS0+cGVybWl0KHF3KDpkZWZhdWx0IHJlcXVpcmUpKTsKLS0gbG9jYWwgJFN0b3JhYmxl OjpEZXBhcnNlID0gMTsKLS0gbG9jYWwgJFN0b3JhYmxlOjpFdmFsID0gc3ViIHsgJHNhZmUtPnJl dmFsKCRfWzBdKSB9OwotLSBteSAkc2VyaWFsaXplZCA9IGZyZWV6ZShzdWIgeyA0MiB9KTsKLS0g bXkgJGNvZGUgPSB0aGF3KCRzZXJpYWxpemVkKTsKLS0gJGNvZGUtPigpID09IDQyOwotKyAgICB1 c2UgU3RvcmFibGUgcXcoZnJlZXplIHRoYXcpOwotKyAgICB1c2UgU2FmZTsKLSsgICAgdXNlIHN0 cmljdDsKLSsgICAgbXkgJHNhZmUgPSBTYWZlLT5uZXc7Ci0rICAgICAgICAgICAgIyBiZWNhdXNl IG9mIG9wY29kZXMgdXNlZCBpbiAidXNlIHN0cmljdCI6Ci0rICAgICRzYWZlLT5wZXJtaXQocXco OmRlZmF1bHQgcmVxdWlyZSkpOwotKyAgICBsb2NhbCAkU3RvcmFibGU6OkRlcGFyc2UgPSAxOwot KyAgICBsb2NhbCAkU3RvcmFibGU6OkV2YWwgPSBzdWIgeyAkc2FmZS0+cmV2YWwoJF9bMF0pIH07 Ci0rICAgIG15ICRzZXJpYWxpemVkID0gZnJlZXplKHN1YiB7IDQyIH0pOwotKyAgICBteSAkY29k ZSA9IHRoYXcoJHNlcmlhbGl6ZWQpOwotKyAgICAkY29kZS0+KCkgPT0gNDI7Ci0gCi0gPWZvciBl eGFtcGxlIGVuZAotIAotID1mb3IgZXhhbXBsZV90ZXN0aW5nCi0tICAgICAgICBpcyggJGNvZGUt PigpLCA0MiApOwotKyAgICBpcyggJGNvZGUtPigpLCA0MiApOwotIAotID1oZWFkMSBTRUNVUklU WSBXQVJOSU5HCi0gCi1AQCAtMTQwMCwyMyArMTM5MCwyMyBAQCByZWFkaW5nIHRoZW0uCi0gCi0g VGhhbmsgeW91IHRvIChpbiBjaHJvbm9sb2dpY2FsIG9yZGVyKToKLSAKLS0JSmFya2tvIEhpZXRh bmllbWkgPGpoaUBpa2kuZmk+Ci0tCVVscmljaCBQZmVpZmVyIDxwZmVpZmVyQGNoYXJseS5pbmZv cm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KLS0JQmVuamFtaW4gQS4gSG9sem1hbiA8YmhvbHptYW5A ZWFydGhsaW5rLm5ldD4KLS0JQW5kcmV3IEZvcmQgPEEuRm9yZEBmb3JkLW1hc29uLmNvLnVrPgot LQlHaXNsZSBBYXMgPGdpc2xlQGFhcy5ubz4KLS0JSmVmZiBHcmVzaGFtIDxncmVzaGFtX2plZmZy ZXlAanBtb3JnYW4uY29tPgotLQlNdXJyYXkgTmVzYml0dCA8bXVycmF5QGFjdGl2ZXN0YXRlLmNv bT4KLS0JTWFyYyBMZWhtYW5uIDxwY2dAb3Blbmdyb3VwLm9yZz4KLS0JSnVzdGluIEJhbmtzIDxq dXN0aW5iQHdhbW5ldC5jb20+Ci0tCUphcmtrbyBIaWV0YW5pZW1pIDxqaGlAaWtpLmZpPiAoQUdB SU4sIGFzIHBlcmwgNS43LjAgUHVtcGtpbiEpCi0tCVNhbHZhZG9yIE9ydGl6IEdhcmNpYSA8c29n QG1zZy5jb20ubXg+Ci0tCURvbWluaWMgRHVubG9wIDxkb21vQGNvbXB1dGVyLm9yZz4KLS0JRXJp ayBIYXVnYW4gPGVyaWtAc29sYm9ycy5ubz4KLS0JQmVuamFtaW4gQS4gSG9sem1hbiA8YmVuLmhv bHptYW5AZ3JhbnRzdHJlZXQuY29tPgotLQlSZWluaSBVcmJhbiA8cnVyYmFuQGNwYW4ub3JnPgot LQlUb2RkIFJpbmFsZG8gPHRvZGRyQGNwYW5lbC5uZXQ+Ci0tCUFhcm9uIENyYW5lIDxhcmNAY3Bh bi5vcmc+Ci0rICAgIEphcmtrbyBIaWV0YW5pZW1pIDxqaGlAaWtpLmZpPgotKyAgICBVbHJpY2gg UGZlaWZlciA8cGZlaWZlckBjaGFybHkuaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+Ci0rICAg IEJlbmphbWluIEEuIEhvbHptYW4gPGJob2x6bWFuQGVhcnRobGluay5uZXQ+Ci0rICAgIEFuZHJl dyBGb3JkIDxBLkZvcmRAZm9yZC1tYXNvbi5jby51az4KLSsgICAgR2lzbGUgQWFzIDxnaXNsZUBh YXMubm8+Ci0rICAgIEplZmYgR3Jlc2hhbSA8Z3Jlc2hhbV9qZWZmcmV5QGpwbW9yZ2FuLmNvbT4K LSsgICAgTXVycmF5IE5lc2JpdHQgPG11cnJheUBhY3RpdmVzdGF0ZS5jb20+Ci0rICAgIE1hcmMg TGVobWFubiA8cGNnQG9wZW5ncm91cC5vcmc+Ci0rICAgIEp1c3RpbiBCYW5rcyA8anVzdGluYkB3 YW1uZXQuY29tPgotKyAgICBKYXJra28gSGlldGFuaWVtaSA8amhpQGlraS5maT4gKEFHQUlOLCBh cyBwZXJsIDUuNy4wIFB1bXBraW4hKQotKyAgICBTYWx2YWRvciBPcnRpeiBHYXJjaWEgPHNvZ0Bt c2cuY29tLm14PgotKyAgICBEb21pbmljIER1bmxvcCA8ZG9tb0Bjb21wdXRlci5vcmc+Ci0rICAg IEVyaWsgSGF1Z2FuIDxlcmlrQHNvbGJvcnMubm8+Ci0rICAgIEJlbmphbWluIEEuIEhvbHptYW4g PGJlbi5ob2x6bWFuQGdyYW50c3RyZWV0LmNvbT4KLSsgICAgUmVpbmkgVXJiYW4gPHJ1cmJhbkBj cGFuLm9yZz4KLSsgICAgVG9kZCBSaW5hbGRvIDx0b2RkckBjcGFuZWwubmV0PgotKyAgICBBYXJv biBDcmFuZSA8YXJjQGNwYW4ub3JnPgotIAotIGZvciB0aGVpciBidWcgcmVwb3J0cywgc3VnZ2Vz dGlvbnMgYW5kIGNvbnRyaWJ1dGlvbnMuCi0gCi1kaWZmIC0tZ2l0IGEvc3RhY2tzaXplIGIvc3Rh Y2tzaXplCi1pbmRleCAyODk2Njg0Li45MDczOWQ0IDEwMDY0NAotLS0tIGEvc3RhY2tzaXplCi0r KysgYi9zdGFja3NpemUKLUBAIC00OCw5ICs0OCw5IEBAIGlmICgkXk8gZXEgIk1TV2luMzIiKSB7 Ci0gICAgIHJlcXVpcmUgV2luMzI7Ci0gICAgIG15ICgkc3RyLCAkbWFqb3IsICRtaW5vcikgPSBX aW4zMjo6R2V0T1NWZXJzaW9uKCk7Ci0gICAgIGlmICgkbWFqb3IgPCA2IHx8ICRtYWpvciA9PSA2 ICYmICRtaW5vciA8IDEpIHsKLS0JcHJpbnQgIiMgVXNpbmcgZGVmYXVsdHMgZm9yIG9sZGVyIFdp bjMyXG4iOwotLQl3cml0ZV9saW1pdHMoNTAwLCAyNTYpOwotLQlleGl0OwotKyAgICAgICAgcHJp bnQgIiMgVXNpbmcgZGVmYXVsdHMgZm9yIG9sZGVyIFdpbjMyXG4iOwotKyAgICAgICAgd3JpdGVf bGltaXRzKDUwMCwgMjU2KTsKLSsgICAgICAgIGV4aXQ7Ci0gICAgIH0KLSB9Ci0gbXkgKCRuLCAk Z29vZCwgJGJhZCwgJGZvdW5kKSA9Ci1kaWZmIC0tZ2l0IGEvdC9DVkUtMjAxNS0xNTkyLnQgYi90 L0NWRS0yMDE1LTE1OTIudAotaW5kZXggYTcxZjQ0Yy4uYzZjZGVhZiAxMDA2NDQKLS0tLSBhL3Qv Q1ZFLTIwMTUtMTU5Mi50Ci0rKysgYi90L0NWRS0yMDE1LTE1OTIudAotQEAgLTEsNyArMSw4IEBA Ci0tIyEvdXNyL2Jpbi9wZXJsCi0rIyEuL3BlcmwKLSAKLSB1c2Ugc3RyaWN0OwotIHVzZSB3YXJu aW5nczsKLSsKLSB1c2UgVGVzdDo6TW9yZTsKLSB1c2UgU3RvcmFibGUgcXcoZnJlZXplIHRoYXcp OwotIHBsYW4gdGVzdHMgPT4gMTsKLUBAIC0xNyw1ICsxOCw1IEBAIG15ICRmcm96ZW4gPSBmcmVl emUoJHgpOwotICAgICBsb2NhbCAkU0lHe19fV0FSTl9ffSA9IHN1YiB7ICR3YXJuaW5ncyAuPSAi QF8iIH07Ci0gICAgIHRoYXcoJGZyb3plbik7Ci0gICAgIGxpa2UoJHdhcm5pbmdzLCBxci9TRUNV UklUWTogTW92YWJsZS1UeXBlIENWRS0yMDE1LTE1OTIgU3RvcmFibGUgbWV0YXNwbG9pdCBhdHRh Y2svLAotLSAgICAgICAgICdEZXRlY3QgQ1ZFLTIwMTUtMTU5MicpOwotKyAgICAgICAgJ0RldGVj dCBDVkUtMjAxNS0xNTkyJyk7Ci0gfQotZGlmZiAtLWdpdCBhL3QvSEFTX0FUVEFDSC5wbSBiL3Qv SEFTX0FUVEFDSC5wbQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA3Mjg1NWFhLi4w MDAwMDAwCi0tLS0gYS90L0hBU19BVFRBQ0gucG0KLSsrKyAvZGV2L251bGwKLUBAIC0xLDEwICsw LDAgQEAKLS1wYWNrYWdlIEhBU19BVFRBQ0g7Ci0tCi0tc3ViIFNUT1JBQkxFX2F0dGFjaCB7Ci0t ICArKyRhdHRhY2hlZF9jb3VudDsKLS0gIHJldHVybiBibGVzcyBbXSwgJ0hBU19BVFRBQ0gnOwot LX0KLS0KLS0rKyRsb2FkZWRfY291bnQ7Ci0tCi0tMTsKLWRpZmYgLS1naXQgYS90L0hBU19IT09L LnBtIGIvdC9IQVNfSE9PSy5wbQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA5Nzlh NmEyLi4wMDAwMDAwCi0tLS0gYS90L0hBU19IT09LLnBtCi0rKysgL2Rldi9udWxsCi1AQCAtMSw5 ICswLDAgQEAKLS1wYWNrYWdlIEhBU19IT09LOwotLQotLXN1YiBTVE9SQUJMRV90aGF3IHsKLS0g ICsrJHRoYXdlZF9jb3VudDsKLS19Ci0tCi0tKyskbG9hZGVkX2NvdW50OwotLQotLTE7Ci1kaWZm IC0tZ2l0IGEvdC9IQVNfT1ZFUkxPQUQucG0gYi90L0hBU19PVkVSTE9BRC5wbQotZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA4YTYyMmE0Li4wMDAwMDAwCi0tLS0gYS90L0hBU19PVkVS TE9BRC5wbQotKysrIC9kZXYvbnVsbAotQEAgLTEsMTQgKzAsMCBAQAotLXBhY2thZ2UgSEFTX09W RVJMT0FEOwotLQotLXVzZSBvdmVybG9hZAotLQknIiInCT0+IHN1YiB7ICR7JF9bMF19IH0sIGZh bGxiYWNrID0+IDE7Ci0tCi0tc3ViIG1ha2UgewotLSAgbXkgJHBhY2thZ2UgPSBzaGlmdDsKLS0g IG15ICR2YWx1ZSA9IHNoaWZ0OwotLSAgYmxlc3MgXCR2YWx1ZSwgJHBhY2thZ2U7Ci0tfQotLQot LSsrJGxvYWRlZF9jb3VudDsKLS0KLS0xOwotZGlmZiAtLWdpdCBhL3QvYXR0YWNoLnQgYi90L2F0 dGFjaC50Ci1pbmRleCA1ZmZkYWU1Li41YWFlMTU2IDEwMDY0NAotLS0tIGEvdC9hdHRhY2gudAot KysrIGIvdC9hdHRhY2gudAotQEAgLTIsNDEgKzIsMzQgQEAKLSAjCi0gIyBUaGlzIGZpbGUgdGVz dHMgdGhhdCBTdG9yYWJsZSBjb3JyZWN0bHkgdXNlcyBTVE9SQUJMRV9hdHRhY2ggaG9va3MKLSAK LS1zdWIgQkVHSU4gewotLQl1bnNoaWZ0IEBJTkMsICd0JzsKLS0JdW5zaGlmdCBASU5DLCAndC9j b21wYXQnIGlmICRdIDwgNS4wMDYwMDI7Ci0tCXJlcXVpcmUgQ29uZmlnOyBpbXBvcnQgQ29uZmln OwotLQlpZiAoJEVOVntQRVJMX0NPUkV9IGFuZCAkQ29uZmlneydleHRlbnNpb25zJ30gIX4gL1xi U3RvcmFibGVcYi8pIHsKLS0JCXByaW50ICIxLi4wICMgU2tpcDogU3RvcmFibGUgd2FzIG5vdCBi dWlsdFxuIjsKLS0JCWV4aXQgMDsKLS0JfQotLX0KLSt1c2Ugc3RyaWN0OwotK3VzZSB3YXJuaW5n czsKLSAKLSB1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAzOwotIHVzZSBTdG9yYWJsZSAoKTsKLSAK LSB7Ci0tCW15ICRkZXN0cnVjdF9jbnQgPSAwOwotLQlteSAkb2JqID0gYmxlc3Mge2RhdGEgPT4g J29rJ30sICdNeTo6V2l0aERlc3RydWN0b3InOwotLQlteSAkdGFyZ2V0ID0gU3RvcmFibGU6OnRo YXcoIFN0b3JhYmxlOjpmcmVlemUoICRvYmogKSApOwotLQlpcyggJHRhcmdldC0+e2RhdGF9LCAn b2snLCAnV2UgZ290IGNvcnJlY3Qgb2JqZWN0IGFmdGVyIGZyZWV6ZS90aGF3JyApOwotLQlpcygg JGRlc3RydWN0X2NudCwgMCwgJ05vIHRtcCBvYmplY3RzIGNyZWF0ZWQgYnkgU3RvcmFibGUnICk7 Ci0tCXVuZGVmICRvYmo7Ci0tCXVuZGVmICR0YXJnZXQ7Ci0tCWlzKCAkZGVzdHJ1Y3RfY250LCAy LCAnT25seSByaWdodCBvYmplY3RzIGRlc3Ryb3llZCBhdCB0aGUgZW5kJyApOwotLQotLQlwYWNr YWdlIE15OjpXaXRoRGVzdHJ1Y3RvcjsKLS0KLS0Jc3ViIFNUT1JBQkxFX2ZyZWV6ZSB7Ci0tCQlt eSAoJHNlbGYsICRjbG9uZSkgPSBAXzsKLS0JCXJldHVybiAkc2VsZi0+e2RhdGF9OwotLQl9Ci0t Ci0tCXN1YiBTVE9SQUJMRV9hdHRhY2ggewotLQkJbXkgKCRjbGFzcywgJGNsb25lLCAkc3RyaW5n KSA9IEBfOwotLQkJcmV0dXJuIGJsZXNzIHtkYXRhID0+ICRzdHJpbmd9LCAnTXk6OldpdGhEZXN0 cnVjdG9yJzsKLS0JfQotLQotLQlzdWIgREVTVFJPWSB7ICRkZXN0cnVjdF9jbnQrKzsgfQotKyAg ICBteSAkZGVzdHJ1Y3RfY250ID0gMDsKLSsgICAgbXkgJG9iaiA9IGJsZXNzIHtkYXRhID0+ICdv ayd9LCAnTXk6OldpdGhEZXN0cnVjdG9yJzsKLSsgICAgbXkgJHRhcmdldCA9IFN0b3JhYmxlOjp0 aGF3KCBTdG9yYWJsZTo6ZnJlZXplKCAkb2JqICkgKTsKLSsgICAgaXMoICR0YXJnZXQtPntkYXRh fSwgJ29rJywgJ1dlIGdvdCBjb3JyZWN0IG9iamVjdCBhZnRlciBmcmVlemUvdGhhdycgKTsKLSsg ICAgaXMoICRkZXN0cnVjdF9jbnQsIDAsICdObyB0bXAgb2JqZWN0cyBjcmVhdGVkIGJ5IFN0b3Jh YmxlJyApOwotKyAgICB1bmRlZiAkb2JqOwotKyAgICB1bmRlZiAkdGFyZ2V0OwotKyAgICBpcygg JGRlc3RydWN0X2NudCwgMiwgJ09ubHkgcmlnaHQgb2JqZWN0cyBkZXN0cm95ZWQgYXQgdGhlIGVu ZCcgKTsKLSsKLSsgICAgcGFja2FnZSBNeTo6V2l0aERlc3RydWN0b3I7Ci0rCi0rICAgIHN1YiBT VE9SQUJMRV9mcmVlemUgewotKyAgICAgICAgbXkgKCRzZWxmLCAkY2xvbmUpID0gQF87Ci0rICAg ICAgICByZXR1cm4gJHNlbGYtPntkYXRhfTsKLSsgICAgfQotKwotKyAgICBzdWIgU1RPUkFCTEVf YXR0YWNoIHsKLSsgICAgICAgIG15ICgkY2xhc3MsICRjbG9uZSwgJHN0cmluZykgPSBAXzsKLSsg ICAgICAgIHJldHVybiBibGVzcyB7ZGF0YSA9PiAkc3RyaW5nfSwgJ015OjpXaXRoRGVzdHJ1Y3Rv cic7Ci0rICAgIH0KLSsKLSsgICAgc3ViIERFU1RST1kgeyAkZGVzdHJ1Y3RfY250Kys7IH0KLSB9 Ci0gCi1kaWZmIC0tZ2l0IGEvdC9hdHRhY2hfZXJyb3JzLnQgYi90L2F0dGFjaF9lcnJvcnMudAot aW5kZXggZTJiZTM5ZC4uZDk5MzY2YyAxMDA2NDQKLS0tLSBhL3QvYXR0YWNoX2Vycm9ycy50Ci0r KysgYi90L2F0dGFjaF9lcnJvcnMudAotQEAgLTEyLDIyICsxMiwxNSBAQAotICMgVGhpcyBmaWxl IHRlc3RzIHNldmVyYWwga25vd24tZXJyb3IgY2FzZXMgcmVsYXRpbmcgdG8gU1RPUkFCTEVfYXR0 YWNoLCBpbgotICMgd2hpY2ggU3RvcmFibGUgc2hvdWxkIChjb3JyZWN0bHkpIHRocm93IGVycm9y cy4KLSAKLS1zdWIgQkVHSU4gewotLSAgICB1bnNoaWZ0IEBJTkMsICd0JzsKLS0gICAgdW5zaGlm dCBASU5DLCAndC9jb21wYXQnIGlmICRdIDwgNS4wMDYwMDI7Ci0tICAgIHJlcXVpcmUgQ29uZmln OyBpbXBvcnQgQ29uZmlnOwotLSAgICBpZiAoJEVOVntQRVJMX0NPUkV9IGFuZCAkQ29uZmlneydl eHRlbnNpb25zJ30gIX4gL1xiU3RvcmFibGVcYi8pIHsKLS0gICAgICAgIHByaW50ICIxLi4wICMg U2tpcDogU3RvcmFibGUgd2FzIG5vdCBidWlsdFxuIjsKLS0gICAgICAgIGV4aXQgMDsKLS0gICAg fQotLX0KLSt1c2Ugc3RyaWN0OwotK3VzZSB3YXJuaW5nczsKLSAKLSB1c2UgVGVzdDo6TW9yZSB0 ZXN0cyA9PiA0MDsKLSB1c2UgU3RvcmFibGUgKCk7Ci0gCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBFcnJv ciAxCi0tIyAKLSsjCi0gIyBDbGFzc2VzIHRoYXQgaW1wbGVtZW50IFNUT1JBQkxFX3RoYXcgX2Nh bm5vdF8gaGF2ZSByZWZlcmVuY2VzCi0gIyByZXR1cm5lZCBieSB0aGVpciBTVE9SQUJMRV9mcmVl emUgbWV0aG9kLiBXaGVuIHRoZXkgZG8sIFN0b3JhYmxlCi0gIyBzaG91bGQgdGhyb3cgYW4gZXhj ZXB0aW9uCi1AQCAtMzYsNTQgKzI5LDU0IEBAIHVzZSBTdG9yYWJsZSAoKTsKLSAKLSAjIEdvb2Qg Q2FzZSAtIHNob3VsZCBub3QgZGllCi0gewotLQlteSAkZ29vZGZyZWV6ZSA9IGJsZXNzIHt9LCAn TXk6Okdvb2RGcmVlemUnOwotLQlteSAkZnJvemVuID0gdW5kZWY7Ci0tCWV2YWwgewotLQkJJGZy b3plbiA9IFN0b3JhYmxlOjpmcmVlemUoICRnb29kZnJlZXplICk7Ci0tCX07Ci0tCW9rKCAhICRA LCAnU3RvcmFibGUgZG9lcyBub3QgZGllIHdoZW4gU1RPUkFCTEVfZnJlZXplIGRvZXMgbm90IHJl dHVybiByZWZlcmVuY2VzJyApOwotLQlvayggJGZyb3plbiwgJ1N0b3JhYmxlIGZyZWV6ZXMgdG8g YSBzdHJpbmcgc3VjY2Vzc2Z1bGx5JyApOwotLQotLQlwYWNrYWdlIE15OjpHb29kRnJlZXplOwot LQotLQlzdWIgU1RPUkFCTEVfZnJlZXplIHsKLS0JCW15ICgkc2VsZiwgJGNsb25lKSA9IEBfOwot LQkJCi0tCQkjIElsbGVnYWxseSBpbmNsdWRlIGEgcmVmZXJlbmNlIGluIHRoaXMgcmV0dXJuCi0t CQlyZXR1cm4gKCcnKTsKLS0JfQotLQotLQlzdWIgU1RPUkFCTEVfYXR0YWNoIHsKLS0JCW15ICgk Y2xhc3MsICRjbG9uZSwgJHN0cmluZykgPSBAXzsKLS0JCXJldHVybiBibGVzcyB7IH0sICdNeTo6 R29vZEZyZWV6ZSc7Ci0tCX0KLSsgICAgbXkgJGdvb2RmcmVlemUgPSBibGVzcyB7fSwgJ015OjpH b29kRnJlZXplJzsKLSsgICAgbXkgJGZyb3plbiA9IHVuZGVmOwotKyAgICBldmFsIHsKLSsgICAg ICAgICRmcm96ZW4gPSBTdG9yYWJsZTo6ZnJlZXplKCAkZ29vZGZyZWV6ZSApOwotKyAgICB9Owot KyAgICBvayggISAkQCwgJ1N0b3JhYmxlIGRvZXMgbm90IGRpZSB3aGVuIFNUT1JBQkxFX2ZyZWV6 ZSBkb2VzIG5vdCByZXR1cm4gcmVmZXJlbmNlcycgKTsKLSsgICAgb2soICRmcm96ZW4sICdTdG9y YWJsZSBmcmVlemVzIHRvIGEgc3RyaW5nIHN1Y2Nlc3NmdWxseScgKTsKLSsKLSsgICAgcGFja2Fn ZSBNeTo6R29vZEZyZWV6ZTsKLSsKLSsgICAgc3ViIFNUT1JBQkxFX2ZyZWV6ZSB7Ci0rICAgICAg ICBteSAoJHNlbGYsICRjbG9uZSkgPSBAXzsKLSsKLSsgICAgICAgICMgSWxsZWdhbGx5IGluY2x1 ZGUgYSByZWZlcmVuY2UgaW4gdGhpcyByZXR1cm4KLSsgICAgICAgIHJldHVybiAoJycpOwotKyAg ICB9Ci0rCi0rICAgIHN1YiBTVE9SQUJMRV9hdHRhY2ggewotKyAgICAgICAgbXkgKCRjbGFzcywg JGNsb25lLCAkc3RyaW5nKSA9IEBfOwotKyAgICAgICAgcmV0dXJuIGJsZXNzIHsgfSwgJ015OjpH b29kRnJlZXplJzsKLSsgICAgfQotIH0KLSAKLSAKLSAKLSAjIEVycm9yIENhc2UgLSBzaG91bGQg ZGllIG9uIGZyZWV6ZQotIHsKLS0JbXkgJGJhZGZyZWV6ZSA9IGJsZXNzIHt9LCAnTXk6OkJhZEZy ZWV6ZSc7Ci0tCWV2YWwgewotLQkJU3RvcmFibGU6OmZyZWV6ZSggJGJhZGZyZWV6ZSApOwotLQl9 OwotLQlvayggJEAsICdTdG9yYWJsZSBkaWVzIGNvcnJlY3RseSB3aGVuIFNUT1JBQkxFX2ZyZWV6 ZSByZXR1cm5zIGEgcmVmZXJlbmNlJyApOwotLQkjIENoZWNrIGZvciBhIHVuaXF1ZSBzdWJzdHJp bmcgb2YgdGhlIGVycm9yIG1lc3NhZ2UKLS0Jb2soICRAID1+IC9jYW5ub3QgcmV0dXJuIHJlZmVy ZW5jZXMvLCAnU3RvcmFibGUgZGllcyB3aXRoIHRoZSBleHBlY3RlZCBlcnJvcicgKTsKLS0KLS0J cGFja2FnZSBNeTo6QmFkRnJlZXplOwotLQotLQlzdWIgU1RPUkFCTEVfZnJlZXplIHsKLS0JCW15 ICgkc2VsZiwgJGNsb25lKSA9IEBfOwotLQkJCi0tCQkjIElsbGVnYWxseSBpbmNsdWRlIGEgcmVm ZXJlbmNlIGluIHRoaXMgcmV0dXJuCi0tCQlyZXR1cm4gKCcnLCBbXSk7Ci0tCX0KLS0KLS0Jc3Vi IFNUT1JBQkxFX2F0dGFjaCB7Ci0tCQlteSAoJGNsYXNzLCAkY2xvbmUsICRzdHJpbmcpID0gQF87 Ci0tCQlyZXR1cm4gYmxlc3MgeyB9LCAnTXk6OkJhZEZyZWV6ZSc7Ci0tCX0KLSsgICAgbXkgJGJh ZGZyZWV6ZSA9IGJsZXNzIHt9LCAnTXk6OkJhZEZyZWV6ZSc7Ci0rICAgIGV2YWwgewotKyAgICAg ICAgU3RvcmFibGU6OmZyZWV6ZSggJGJhZGZyZWV6ZSApOwotKyAgICB9OwotKyAgICBvayggJEAs ICdTdG9yYWJsZSBkaWVzIGNvcnJlY3RseSB3aGVuIFNUT1JBQkxFX2ZyZWV6ZSByZXR1cm5zIGEg cmVmZXJlbmNlJyApOwotKyAgICAjIENoZWNrIGZvciBhIHVuaXF1ZSBzdWJzdHJpbmcgb2YgdGhl IGVycm9yIG1lc3NhZ2UKLSsgICAgb2soICRAID1+IC9jYW5ub3QgcmV0dXJuIHJlZmVyZW5jZXMv LCAnU3RvcmFibGUgZGllcyB3aXRoIHRoZSBleHBlY3RlZCBlcnJvcicgKTsKLSsKLSsgICAgcGFj a2FnZSBNeTo6QmFkRnJlZXplOwotKwotKyAgICBzdWIgU1RPUkFCTEVfZnJlZXplIHsKLSsgICAg ICAgIG15ICgkc2VsZiwgJGNsb25lKSA9IEBfOwotKwotKyAgICAgICAgIyBJbGxlZ2FsbHkgaW5j bHVkZSBhIHJlZmVyZW5jZSBpbiB0aGlzIHJldHVybgotKyAgICAgICAgcmV0dXJuICgnJywgW10p OwotKyAgICB9Ci0rCi0rICAgIHN1YiBTVE9SQUJMRV9hdHRhY2ggewotKyAgICAgICAgbXkgKCRj bGFzcywgJGNsb25lLCAkc3RyaW5nKSA9IEBfOwotKyAgICAgICAgcmV0dXJuIGJsZXNzIHsgfSwg J015OjpCYWRGcmVlemUnOwotKyAgICB9Ci0gfQotIAotIAotQEAgLTEwMCw3MyArOTMsNzMgQEAg dXNlIFN0b3JhYmxlICgpOwotIAotICMgR29vZCBDYXNlIC0gc2hvdWxkIG5vdCBkaWUKLSB7Ci0t CW15ICRnb29kdGhhdyA9IGJsZXNzIHt9LCAnTXk6Okdvb2RUaGF3JzsKLS0JbXkgJGZyb3plbiA9 IHVuZGVmOwotLQlldmFsIHsKLS0JCSRmcm96ZW4gPSBTdG9yYWJsZTo6ZnJlZXplKCAkZ29vZHRo YXcgKTsKLS0JfTsKLS0Jb2soICRmcm96ZW4sICdTdG9yYWJsZSBmcmVlemVzIHRvIGEgc3RyaW5n IGFzIGV4cGVjdGVkJyApOwotLQlteSAkdGhhd2VkID0gZXZhbCB7Ci0tCQlTdG9yYWJsZTo6dGhh dyggJGZyb3plbiApOwotLQl9OwotLQlpc2Ffb2soICR0aGF3ZWQsICdNeTo6R29vZFRoYXcnICk7 Ci0tCWlzKCAkdGhhd2VkLT57Zm9vfSwgJ2JhcicsICdNeTo6R29vZFRoYXcgdGhhd2VkIGNvcnJl Y3RseSBhcyBleHBlY3RlZCcgKTsKLS0KLS0JcGFja2FnZSBNeTo6R29vZFRoYXc7Ci0tCi0tCXN1 YiBTVE9SQUJMRV9mcmVlemUgewotLQkJbXkgKCRzZWxmLCAkY2xvbmUpID0gQF87Ci0tCi0tCQly ZXR1cm4gKCcnKTsKLS0JfQotLQotLQlzdWIgU1RPUkFCTEVfYXR0YWNoIHsKLS0JCW15ICgkY2xh c3MsICRjbG9uZSwgJHN0cmluZykgPSBAXzsKLS0JCXJldHVybiBibGVzcyB7ICdmb28nID0+ICdi YXInIH0sICdNeTo6R29vZFRoYXcnOwotLQl9Ci0rICAgIG15ICRnb29kdGhhdyA9IGJsZXNzIHt9 LCAnTXk6Okdvb2RUaGF3JzsKLSsgICAgbXkgJGZyb3plbiA9IHVuZGVmOwotKyAgICBldmFsIHsK LSsgICAgICAgICRmcm96ZW4gPSBTdG9yYWJsZTo6ZnJlZXplKCAkZ29vZHRoYXcgKTsKLSsgICAg fTsKLSsgICAgb2soICRmcm96ZW4sICdTdG9yYWJsZSBmcmVlemVzIHRvIGEgc3RyaW5nIGFzIGV4 cGVjdGVkJyApOwotKyAgICBteSAkdGhhd2VkID0gZXZhbCB7Ci0rICAgICAgICBTdG9yYWJsZTo6 dGhhdyggJGZyb3plbiApOwotKyAgICB9OwotKyAgICBpc2Ffb2soICR0aGF3ZWQsICdNeTo6R29v ZFRoYXcnICk7Ci0rICAgIGlzKCAkdGhhd2VkLT57Zm9vfSwgJ2JhcicsICdNeTo6R29vZFRoYXcg dGhhd2VkIGNvcnJlY3RseSBhcyBleHBlY3RlZCcgKTsKLSsKLSsgICAgcGFja2FnZSBNeTo6R29v ZFRoYXc7Ci0rCi0rICAgIHN1YiBTVE9SQUJMRV9mcmVlemUgewotKyAgICAgICAgbXkgKCRzZWxm LCAkY2xvbmUpID0gQF87Ci0rCi0rICAgICAgICByZXR1cm4gKCcnKTsKLSsgICAgfQotKwotKyAg ICBzdWIgU1RPUkFCTEVfYXR0YWNoIHsKLSsgICAgICAgIG15ICgkY2xhc3MsICRjbG9uZSwgJHN0 cmluZykgPSBAXzsKLSsgICAgICAgIHJldHVybiBibGVzcyB7ICdmb28nID0+ICdiYXInIH0sICdN eTo6R29vZFRoYXcnOwotKyAgICB9Ci0gfQotIAotIAotIAotICMgQmFkIENhc2UgLSBzaG91bGQg ZGllIG9uIHRoYXcKLSB7Ci0tCSMgQ3JlYXRlIHRoZSBmcm96ZW4gc3RyaW5nIG5vcm1hbGx5Ci0t CW15ICRiYWR0aGF3ID0gYmxlc3MgeyB9LCAnTXk6OkJhZFRoYXcnOwotLQlteSAkZnJvemVuID0g dW5kZWY7Ci0tCWV2YWwgewotLQkJJGZyb3plbiA9IFN0b3JhYmxlOjpmcmVlemUoICRiYWR0aGF3 ICk7Ci0tCX07Ci0tCW9rKCAkZnJvemVuLCAnQmFkVGhhdyB3YXMgZnJvemVuIHdpdGggcmVmZXJl bmNlcyBjb3JyZWN0bHknICk7Ci0tCi0tCSMgU2V0IHVwIHRoZSBlcnJvciBjb25kaXRpb24gYnkg ZGVsZXRpbmcgdGhlIG5vcm1hbCBTVE9SQUJMRV90aGF3LAotLQkjIGFuZCBjcmVhdGluZyBhIFNU T1JBQkxFX2F0dGFjaC4KLS0JKk15OjpCYWRUaGF3OjpTVE9SQUJMRV9hdHRhY2ggPSAqTXk6OkJh ZFRoYXc6OlNUT1JBQkxFX3RoYXc7Ci0tCSpNeTo6QmFkVGhhdzo6U1RPUkFCTEVfYXR0YWNoID0g Kk15OjpCYWRUaGF3OjpTVE9SQUJMRV90aGF3OyAjIFN1cHByZXNzIGEgd2FybmluZwotLQlkZWxl dGUgJHsnTXk6OkJhZFRoYXc6Oid9e1NUT1JBQkxFX3RoYXd9OwotLQotLQkjIFRyaWdnZXIgdGhl IGVycm9yIGNvbmRpdGlvbgotLQlteSAkdGhhd2VkID0gdW5kZWY7Ci0tCWV2YWwgewotLQkJJHRo YXdlZCA9IFN0b3JhYmxlOjp0aGF3KCAkZnJvemVuICk7Ci0tCX07Ci0tCW9rKCAkQCwgJ015OjpC YWRUaGF3IG9iamVjdCBkaWVzIHdoZW4gdGhhd2luZyBhcyBleHBlY3RlZCcgKTsKLS0JIyBDaGVj ayBmb3IgYSBzbmlwcGV0IGZyb20gdGhlIGVycm9yIG1lc3NhZ2UKLS0Jb2soICRAID1+IC91bmV4 cGVjdGVkIHJlZmVyZW5jZXMvLCAnRGllcyB3aXRoIHRoZSBleHBlY3RlZCBlcnJvciBtZXNzYWdl JyApOwotLQotLQlwYWNrYWdlIE15OjpCYWRUaGF3OwotLQotLQlzdWIgU1RPUkFCTEVfZnJlZXpl IHsKLS0JCW15ICgkc2VsZiwgJGNsb25lKSA9IEBfOwotLQotLQkJcmV0dXJuICgnJywgW10pOwot LQl9Ci0tCi0tCSMgU3RhcnQgd2l0aCBubyBTVE9SQUJMRV9hdHRhY2ggbWV0aG9kIHNvIHdlIGNh biBnZXQgYQotLQkjIGZyb3plbiBvYmplY3QtY29udGFpbmluZy1hLXJlZmVyZW5jZSBpbnRvIHRo ZSBmcmVlemUgc3RyaW5nLgotLQlzdWIgU1RPUkFCTEVfdGhhdyB7Ci0tCQlteSAoJGNsYXNzLCAk Y2xvbmUsICRzdHJpbmcpID0gQF87Ci0tCQlyZXR1cm4gYmxlc3MgeyAnZm9vJyA9PiAnYmFyJyB9 LCAnTXk6OkJhZFRoYXcnOwotLQl9Ci0rICAgICMgQ3JlYXRlIHRoZSBmcm96ZW4gc3RyaW5nIG5v cm1hbGx5Ci0rICAgIG15ICRiYWR0aGF3ID0gYmxlc3MgeyB9LCAnTXk6OkJhZFRoYXcnOwotKyAg ICBteSAkZnJvemVuID0gdW5kZWY7Ci0rICAgIGV2YWwgewotKyAgICAgICAgJGZyb3plbiA9IFN0 b3JhYmxlOjpmcmVlemUoICRiYWR0aGF3ICk7Ci0rICAgIH07Ci0rICAgIG9rKCAkZnJvemVuLCAn QmFkVGhhdyB3YXMgZnJvemVuIHdpdGggcmVmZXJlbmNlcyBjb3JyZWN0bHknICk7Ci0rCi0rICAg ICMgU2V0IHVwIHRoZSBlcnJvciBjb25kaXRpb24gYnkgZGVsZXRpbmcgdGhlIG5vcm1hbCBTVE9S QUJMRV90aGF3LAotKyAgICAjIGFuZCBjcmVhdGluZyBhIFNUT1JBQkxFX2F0dGFjaC4KLSsgICAg Kk15OjpCYWRUaGF3OjpTVE9SQUJMRV9hdHRhY2ggPSAqTXk6OkJhZFRoYXc6OlNUT1JBQkxFX3Ro YXc7Ci0rICAgICpNeTo6QmFkVGhhdzo6U1RPUkFCTEVfYXR0YWNoID0gKk15OjpCYWRUaGF3OjpT VE9SQUJMRV90aGF3OyAjIFN1cHByZXNzIGEgd2FybmluZwotKyAgICBkZWxldGUgJE15OjpCYWRU aGF3Ojp7U1RPUkFCTEVfdGhhd307Ci0rCi0rICAgICMgVHJpZ2dlciB0aGUgZXJyb3IgY29uZGl0 aW9uCi0rICAgIG15ICR0aGF3ZWQgPSB1bmRlZjsKLSsgICAgZXZhbCB7Ci0rICAgICAgICAgICAg JHRoYXdlZCA9IFN0b3JhYmxlOjp0aGF3KCAkZnJvemVuICk7Ci0rICAgIH07Ci0rICAgIG9rKCAk QCwgJ015OjpCYWRUaGF3IG9iamVjdCBkaWVzIHdoZW4gdGhhd2luZyBhcyBleHBlY3RlZCcgKTsK LSsgICAgIyBDaGVjayBmb3IgYSBzbmlwcGV0IGZyb20gdGhlIGVycm9yIG1lc3NhZ2UKLSsgICAg b2soICRAID1+IC91bmV4cGVjdGVkIHJlZmVyZW5jZXMvLCAnRGllcyB3aXRoIHRoZSBleHBlY3Rl ZCBlcnJvciBtZXNzYWdlJyApOwotKwotKyAgICBwYWNrYWdlIE15OjpCYWRUaGF3OwotKwotKyAg ICBzdWIgU1RPUkFCTEVfZnJlZXplIHsKLSsgICAgICAgIG15ICgkc2VsZiwgJGNsb25lKSA9IEBf OwotKwotKyAgICAgICAgcmV0dXJuICgnJywgW10pOwotKyAgICB9Ci0rCi0rICAgICMgU3RhcnQg d2l0aCBubyBTVE9SQUJMRV9hdHRhY2ggbWV0aG9kIHNvIHdlIGNhbiBnZXQgYQotKyAgICAjIGZy b3plbiBvYmplY3QtY29udGFpbmluZy1hLXJlZmVyZW5jZSBpbnRvIHRoZSBmcmVlemUgc3RyaW5n LgotKyAgICBzdWIgU1RPUkFCTEVfdGhhdyB7Ci0rICAgICAgICBteSAoJGNsYXNzLCAkY2xvbmUs ICRzdHJpbmcpID0gQF87Ci0rICAgICAgICByZXR1cm4gYmxlc3MgeyAnZm9vJyA9PiAnYmFyJyB9 LCAnTXk6OkJhZFRoYXcnOwotKyAgICB9Ci0gfQotIAotIAotQEAgLTE4MSw1NiArMTc0LDU2IEBA IHVzZSBTdG9yYWJsZSAoKTsKLSAKLSAjIEdvb2QgQ2FzZSAtIHNob3VsZCBub3QgZGllCi0gewot LQlteSAkZ29vZGF0dGFjaCA9IGJsZXNzIHsgfSwgJ015OjpHb29kQXR0YWNoJzsKLS0JbXkgJGZy b3plbiA9IFN0b3JhYmxlOjpmcmVlemUoICRnb29kYXR0YWNoICk7Ci0tCW9rKCAkZnJvemVuLCAn TXk6Okdvb2RBdHRhY2ggcmV0dXJuIGFzIGV4cGVjdGVkJyApOwotLQlteSAkdGhhd2VkID0gZXZh bCB7Ci0tCQlTdG9yYWJsZTo6dGhhdyggJGZyb3plbiApOwotLQl9OwotLQlpc2Ffb2soICR0aGF3 ZWQsICdNeTo6R29vZEF0dGFjaCcgKTsKLS0JaXMoIHJlZigkdGhhd2VkKSwgJ015OjpHb29kQXR0 YWNoOjpTdWJjbGFzcycsCi0tCQknVGhlIHNsaWdodGx5LXRyaWNreSBnb29kICJyZXR1cm5zIGEg c3ViY2xhc3MiIGNhc2UgcmV0dXJucyBhcyBleHBlY3RlZCcgKTsKLS0KLS0JcGFja2FnZSBNeTo6 R29vZEF0dGFjaDsKLS0KLS0Jc3ViIFNUT1JBQkxFX2ZyZWV6ZSB7Ci0tCQlteSAoJHNlbGYsICRj bG9uaW5nKSA9IEBfOwotLQkJcmV0dXJuICgnJyk7Ci0tCX0KLS0KLS0Jc3ViIFNUT1JBQkxFX2F0 dGFjaCB7Ci0tCQlteSAoJGNsYXNzLCAkY2xvbmluZywgJHN0cmluZykgPSBAXzsKLS0KLS0JCXJl dHVybiBibGVzcyB7IH0sICdNeTo6R29vZEF0dGFjaDo6U3ViY2xhc3MnOwotLQl9Ci0tCi0tCXBh Y2thZ2UgTXk6Okdvb2RBdHRhY2g6OlN1YmNsYXNzOwotLQotLQlCRUdJTiB7Ci0tCQlASVNBID0g J015OjpHb29kQXR0YWNoJzsKLS0JfQotKyAgICBteSAkZ29vZGF0dGFjaCA9IGJsZXNzIHsgfSwg J015OjpHb29kQXR0YWNoJzsKLSsgICAgbXkgJGZyb3plbiA9IFN0b3JhYmxlOjpmcmVlemUoICRn b29kYXR0YWNoICk7Ci0rICAgIG9rKCAkZnJvemVuLCAnTXk6Okdvb2RBdHRhY2ggcmV0dXJuIGFz IGV4cGVjdGVkJyApOwotKyAgICBteSAkdGhhd2VkID0gZXZhbCB7Ci0rICAgICAgICBTdG9yYWJs ZTo6dGhhdyggJGZyb3plbiApOwotKyAgICB9OwotKyAgICBpc2Ffb2soICR0aGF3ZWQsICdNeTo6 R29vZEF0dGFjaCcgKTsKLSsgICAgaXMoIHJlZigkdGhhd2VkKSwgJ015OjpHb29kQXR0YWNoOjpT dWJjbGFzcycsCi0rICAgICAgICAnVGhlIHNsaWdodGx5LXRyaWNreSBnb29kICJyZXR1cm5zIGEg c3ViY2xhc3MiIGNhc2UgcmV0dXJucyBhcyBleHBlY3RlZCcgKTsKLSsKLSsgICAgcGFja2FnZSBN eTo6R29vZEF0dGFjaDsKLSsKLSsgICAgc3ViIFNUT1JBQkxFX2ZyZWV6ZSB7Ci0rICAgICAgICBt eSAoJHNlbGYsICRjbG9uaW5nKSA9IEBfOwotKyAgICAgICAgcmV0dXJuICgnJyk7Ci0rICAgIH0K LSsKLSsgICAgc3ViIFNUT1JBQkxFX2F0dGFjaCB7Ci0rICAgICAgICBteSAoJGNsYXNzLCAkY2xv bmluZywgJHN0cmluZykgPSBAXzsKLSsKLSsgICAgICAgIHJldHVybiBibGVzcyB7IH0sICdNeTo6 R29vZEF0dGFjaDo6U3ViY2xhc3MnOwotKyAgICB9Ci0rCi0rICAgIHBhY2thZ2UgTXk6Okdvb2RB dHRhY2g6OlN1YmNsYXNzOwotKwotKyAgICBCRUdJTiB7Ci0rICAgICAgICBvdXIgQElTQSA9ICdN eTo6R29vZEF0dGFjaCc7Ci0rICAgIH0KLSB9Ci0gCi0gIyBHb29kIGNhc2UgLSBtdWx0aXBsZSBy ZWZlcmVuY2VzIHRvIHRoZSBzYW1lIG9iamVjdCBzaG91bGQgYmUgYXR0YWNoZWQgcHJvcGVybHkK LSB7Ci0tCW15ICRvYmogPSBibGVzcyB7IGlkID0+IDExMSB9LCAnTXk6Okdvb2RBdHRhY2g6Ok11 bHRpcGxlUmVmZXJlbmNlcyc7Ci0rICAgIG15ICRvYmogPSBibGVzcyB7IGlkID0+IDExMSB9LCAn TXk6Okdvb2RBdHRhY2g6Ok11bHRpcGxlUmVmZXJlbmNlcyc7Ci0gICAgIG15ICRhcnIgPSBbJG9i al07Ci0gCi0gICAgIHB1c2ggQCRhcnIsICRvYmo7Ci0gCi0tCW15ICRmcm96ZW4gPSBTdG9yYWJs ZTo6ZnJlZXplKCRhcnIpOwotKyAgICBteSAkZnJvemVuID0gU3RvcmFibGU6OmZyZWV6ZSgkYXJy KTsKLSAKLS0Jb2soICRmcm96ZW4sICdNeTo6R29vZEF0dGFjaCByZXR1cm4gYXMgZXhwZWN0ZWQn ICk7Ci0rICAgIG9rKCAkZnJvemVuLCAnTXk6Okdvb2RBdHRhY2ggcmV0dXJuIGFzIGV4cGVjdGVk JyApOwotIAotLQlteSAkdGhhd2VkID0gZXZhbCB7Ci0tCQlTdG9yYWJsZTo6dGhhdyggJGZyb3pl biApOwotLQl9OwotKyAgICBteSAkdGhhd2VkID0gZXZhbCB7Ci0rICAgICAgICAgICAgU3RvcmFi bGU6OnRoYXcoICRmcm96ZW4gKTsKLSsgICAgfTsKLSAKLS0JaXNhX29rKCAkdGhhd2VkLT5bMF0s ICdNeTo6R29vZEF0dGFjaDo6TXVsdGlwbGVSZWZlcmVuY2VzJyApOwotLQlpc2Ffb2soICR0aGF3 ZWQtPlsxXSwgJ015OjpHb29kQXR0YWNoOjpNdWx0aXBsZVJlZmVyZW5jZXMnICk7Ci0rICAgIGlz YV9vayggJHRoYXdlZC0+WzBdLCAnTXk6Okdvb2RBdHRhY2g6Ok11bHRpcGxlUmVmZXJlbmNlcycg KTsKLSsgICAgaXNhX29rKCAkdGhhd2VkLT5bMV0sICdNeTo6R29vZEF0dGFjaDo6TXVsdGlwbGVS ZWZlcmVuY2VzJyApOwotIAotLQlpcygkdGhhd2VkLT5bMF0sICR0aGF3ZWQtPlsxXSwgJ1JlZmVy ZW5jZXMgdG8gdGhlIHNhbWUgb2JqZWN0IGFyZSBhdHRhY2hlZCBwcm9wZXJseScpOwotLQlpcygk dGhhd2VkLT5bMV17aWR9LCAkb2JqLT57aWR9LCAnT2JqZWN0IHdpdGggbXVsdGlwbGUgcmVmZXJl bmNlcyBhdHRhY2hlZCBwcm9wZXJseScpOwotKyAgICBpcygkdGhhd2VkLT5bMF0sICR0aGF3ZWQt PlsxXSwgJ1JlZmVyZW5jZXMgdG8gdGhlIHNhbWUgb2JqZWN0IGFyZSBhdHRhY2hlZCBwcm9wZXJs eScpOwotKyAgICBpcygkdGhhd2VkLT5bMV17aWR9LCAkb2JqLT57aWR9LCAnT2JqZWN0IHdpdGgg bXVsdGlwbGUgcmVmZXJlbmNlcyBhdHRhY2hlZCBwcm9wZXJseScpOwotIAotICAgICBwYWNrYWdl IE15OjpHb29kQXR0YWNoOjpNdWx0aXBsZVJlZmVyZW5jZXM7Ci0gCi1AQCAtMjUwLDQ3ICsyNDMs NDcgQEAgdXNlIFN0b3JhYmxlICgpOwotIAotICMgQmFkIENhc2VzIC0gZGllIG9uIHRoYXcKLSB7 Ci0tCW15ICRyZXR1cm52YWx1ZSA9IHVuZGVmOwotLQotLQkjIENyZWF0ZSBhbmQgZnJlZXplIHRo ZSBvYmplY3QKLS0JbXkgJGJhZGF0dGFjaCA9IGJsZXNzIHsgfSwgJ015OjpCYWRBdHRhY2gnOwot LQlteSAkZnJvemVuID0gU3RvcmFibGU6OmZyZWV6ZSggJGJhZGF0dGFjaCApOwotLQlvayggJGZy b3plbiwgJ0JhZEF0dGFjaCBmcmVlemVzIGFzIGV4cGVjdGVkJyApOwotLQotLQkjIFRyeSBhIG51 bWJlciBvZiBkaWZmZXJlbnQgcmV0dXJuIHZhbHVlcywgYWxsIG9mIHdoaWNoCi0tCSMgc2hvdWxk IGNhdXNlIFN0b3JhYmxlIHRvIGRpZS4KLS0JbXkgQGJhZHRoaW5ncyA9ICgKLS0JCXVuZGVmLAot LQkJJycsCi0tCQkxLAotLQkJW10sCi0tCQl7fSwKLS0JCVwiZm9vIiwKLS0JCShibGVzcyB7IH0s ICdGb28nKSwKLS0JCSk7Ci0tCWZvcmVhY2ggKCBAYmFkdGhpbmdzICkgewotLQkJJHJldHVybnZh bHVlID0gJF87Ci0tCi0tCQlteSAkdGhhd2VkID0gdW5kZWY7Ci0tCQlldmFsIHsKLS0JCQkkdGhh d2VkID0gU3RvcmFibGU6OnRoYXcoICRmcm96ZW4gKTsKLS0JCX07Ci0tCQlvayggJEAsICdCYWRB dHRhY2ggZGllcyBvbiB0aGF3JyApOwotLQkJb2soICRAID1+IC9TVE9SQUJMRV9hdHRhY2ggZGlk IG5vdCByZXR1cm4gYSBNeTo6QmFkQXR0YWNoIG9iamVjdC8sCi0tCQkJJ0JhZEF0dGFjaCBkaWVz IG9uIHRoYXcgd2l0aCB0aGUgZXhwZWN0ZWQgZXJyb3IgbWVzc2FnZScgKTsKLS0JCWlzKCAkdGhh d2VkLCB1bmRlZiwgJ0RvdWJsZSBjaGVja2luZyAkdGhhd2VkIHdhcyBub3Qgc2V0JyApOwotLQl9 Ci0tCQotLQlwYWNrYWdlIE15OjpCYWRBdHRhY2g7Ci0tCi0tCXN1YiBTVE9SQUJMRV9mcmVlemUg ewotLQkJbXkgKCRzZWxmLCAkY2xvbmluZykgPSBAXzsKLS0JCXJldHVybiAoJycpOwotLQl9Ci0t Ci0tCXN1YiBTVE9SQUJMRV9hdHRhY2ggewotLQkJbXkgKCRjbGFzcywgJGNsb25pbmcsICRzdHJp bmcpID0gQF87Ci0tCi0tCQlyZXR1cm4gJHJldHVybnZhbHVlOwotLQl9Ci0rICAgIG15ICRyZXR1 cm52YWx1ZSA9IHVuZGVmOwotKwotKyAgICAjIENyZWF0ZSBhbmQgZnJlZXplIHRoZSBvYmplY3QK LSsgICAgbXkgJGJhZGF0dGFjaCA9IGJsZXNzIHsgfSwgJ015OjpCYWRBdHRhY2gnOwotKyAgICBt eSAkZnJvemVuID0gU3RvcmFibGU6OmZyZWV6ZSggJGJhZGF0dGFjaCApOwotKyAgICBvayggJGZy b3plbiwgJ0JhZEF0dGFjaCBmcmVlemVzIGFzIGV4cGVjdGVkJyApOwotKwotKyAgICAjIFRyeSBh IG51bWJlciBvZiBkaWZmZXJlbnQgcmV0dXJuIHZhbHVlcywgYWxsIG9mIHdoaWNoCi0rICAgICMg c2hvdWxkIGNhdXNlIFN0b3JhYmxlIHRvIGRpZS4KLSsgICAgbXkgQGJhZHRoaW5ncyA9ICgKLSsg ICAgICAgIHVuZGVmLAotKyAgICAgICAgJycsCi0rICAgICAgICAxLAotKyAgICAgICAgW10sCi0r ICAgICAgICB7fSwKLSsgICAgICAgIFwiZm9vIiwKLSsgICAgICAgIChibGVzcyB7IH0sICdGb28n KSwKLSsgICAgKTsKLSsgICAgZm9yZWFjaCAoIEBiYWR0aGluZ3MgKSB7Ci0rICAgICAgICAkcmV0 dXJudmFsdWUgPSAkXzsKLSsKLSsgICAgICAgIG15ICR0aGF3ZWQgPSB1bmRlZjsKLSsgICAgICAg IGV2YWwgewotKyAgICAgICAgICAgICR0aGF3ZWQgPSBTdG9yYWJsZTo6dGhhdyggJGZyb3plbiAp OwotKyAgICAgICAgfTsKLSsgICAgICAgIG9rKCAkQCwgJ0JhZEF0dGFjaCBkaWVzIG9uIHRoYXcn ICk7Ci0rICAgICAgICBvayggJEAgPX4gL1NUT1JBQkxFX2F0dGFjaCBkaWQgbm90IHJldHVybiBh IE15OjpCYWRBdHRhY2ggb2JqZWN0LywKLSsgICAgICAgICAgICAnQmFkQXR0YWNoIGRpZXMgb24g dGhhdyB3aXRoIHRoZSBleHBlY3RlZCBlcnJvciBtZXNzYWdlJyApOwotKyAgICAgICAgaXMoICR0 aGF3ZWQsIHVuZGVmLCAnRG91YmxlIGNoZWNraW5nICR0aGF3ZWQgd2FzIG5vdCBzZXQnICk7Ci0r ICAgIH0KLSsKLSsgICAgcGFja2FnZSBNeTo6QmFkQXR0YWNoOwotKwotKyAgICBzdWIgU1RPUkFC TEVfZnJlZXplIHsKLSsgICAgICAgIG15ICgkc2VsZiwgJGNsb25pbmcpID0gQF87Ci0rICAgICAg ICByZXR1cm4gKCcnKTsKLSsgICAgfQotKwotKyAgICBzdWIgU1RPUkFCTEVfYXR0YWNoIHsKLSsg ICAgICAgIG15ICgkY2xhc3MsICRjbG9uaW5nLCAkc3RyaW5nKSA9IEBfOwotKwotKyAgICAgICAg cmV0dXJuICRyZXR1cm52YWx1ZTsKLSsgICAgfQotIH0KLWRpZmYgLS1naXQgYS90L2F0dGFjaF9z aW5nbGV0b24udCBiL3QvYXR0YWNoX3NpbmdsZXRvbi50Ci1pbmRleCBjNTU1YzVjLi5jYTg4MzNh IDEwMDY0NAotLS0tIGEvdC9hdHRhY2hfc2luZ2xldG9uLnQKLSsrKyBiL3QvYXR0YWNoX3Npbmds ZXRvbi50Ci1AQCAtOSwxNSArOSw4IEBACi0gIyBUZXN0cyBmcmVlemluZy90aGF3aW5nIHN0cnVj dHVyZXMgY29udGFpbmluZyBTaW5nbGV0b24gb2JqZWN0cywKLSAjIHdoaWNoIHNob3VsZCBzZWUg Ym90aCBzdHJ1Y3RzIHBvaW50aW5nIHRvIHRoZSBzYW1lIG9iamVjdC4KLSAKLS1zdWIgQkVHSU4g ewotLSAgICB1bnNoaWZ0IEBJTkMsICd0JzsKLS0gICAgdW5zaGlmdCBASU5DLCAndC9jb21wYXQn IGlmICRdIDwgNS4wMDYwMDI7Ci0tICAgIHJlcXVpcmUgQ29uZmlnOyBpbXBvcnQgQ29uZmlnOwot LSAgICBpZiAoJEVOVntQRVJMX0NPUkV9IGFuZCAkQ29uZmlneydleHRlbnNpb25zJ30gIX4gL1xi U3RvcmFibGVcYi8pIHsKLS0gICAgICAgIHByaW50ICIxLi4wICMgU2tpcDogU3RvcmFibGUgd2Fz IG5vdCBidWlsdFxuIjsKLS0gICAgICAgIGV4aXQgMDsKLS0gICAgfQotLX0KLSt1c2Ugc3RyaWN0 OwotK3VzZSB3YXJuaW5nczsKLSAKLSB1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAxNjsKLSB1c2Ug U3RvcmFibGUgKCk7Ci1AQCAtNjYsMjUgKzU5LDI1IEBAIHBhY2thZ2UgTXk6OlNpbmdsZXRvbjsK LSBteSAkU0lOR0xFVE9OID0gdW5kZWY7Ci0gCi0gc3ViIG5ldyB7Ci0tCSRTSU5HTEVUT04gb3IK LS0JJFNJTkdMRVRPTiA9IGJsZXNzIHsgdmFsdWUgPT4gJ0hlbGxvIFdvcmxkIScgfSwgJF9bMF07 Ci0rICAgICRTSU5HTEVUT04gb3IKLSsgICAgJFNJTkdMRVRPTiA9IGJsZXNzIHsgdmFsdWUgPT4g J0hlbGxvIFdvcmxkIScgfSwgJF9bMF07Ci0gfQotIAotIHN1YiBTVE9SQUJMRV9mcmVlemUgewot LQlteSAkc2VsZiA9IHNoaWZ0OwotKyAgICBteSAkc2VsZiA9IHNoaWZ0OwotIAotLQkjIFdlIGRv bid0IGFjdHVhbGx5IG5lZWQgdG8gcmV0dXJuIGFueXRoaW5nLCBidXQgcHJvdmlkZSBhIG51bGwg c3RyaW5nCi0tCSMgdG8gYXZvaWQgdGhlIG51bGwtbGlzdC1yZXR1cm4gYmVoYXZpb3VyLgotLQly ZXR1cm4gKCdmb28nKTsKLSsgICAgIyBXZSBkb24ndCBhY3R1YWxseSBuZWVkIHRvIHJldHVybiBh bnl0aGluZywgYnV0IHByb3ZpZGUgYSBudWxsIHN0cmluZwotKyAgICAjIHRvIGF2b2lkIHRoZSBu dWxsLWxpc3QtcmV0dXJuIGJlaGF2aW91ci4KLSsgICAgcmV0dXJuICgnZm9vJyk7Ci0gfQotIAot IHN1YiBTVE9SQUJMRV9hdHRhY2ggewotLQlteSAoJGNsYXNzLCAkY2xvbmUsICRzdHJpbmcpID0g QF87Ci0tCVRlc3Q6Ok1vcmU6Om9rKCAhIHJlZiAkY2xhc3MsICdTVE9SQUJMRV9hdHRhY2ggcGFz c2VkIGNsYXNzLCBhbmQgbm90IGFuIG9iamVjdCcgKTsKLS0JVGVzdDo6TW9yZTo6aXMoICRjbGFz cywgJ015OjpTaW5nbGV0b24nLCAnU1RPUkFCTEVfYXR0YWNoIGlzIHBhc3NlZCB0aGUgY29ycmVj dCBjbGFzcyBuYW1lJyApOwotLQlUZXN0OjpNb3JlOjppcyggJGNsb25lLCAwLCAnV2UgYXJlIG5v dCBpbiBhIGRjbG9uZScgKTsKLS0JVGVzdDo6TW9yZTo6aXMoICRzdHJpbmcsICdmb28nLCAnU1RP UkFCTEVfYXR0YWNoIGdldHMgdGhlIHN0cmluZyBiYWNrJyApOwotLQotLQkjIEdldCB0aGUgU2lu Z2xldG9uIG9iamVjdCBhbmQgcmV0dXJuIGl0Ci0tCXJldHVybiAkY2xhc3MtPm5ldzsKLSsgICAg bXkgKCRjbGFzcywgJGNsb25lLCAkc3RyaW5nKSA9IEBfOwotKyAgICBUZXN0OjpNb3JlOjpvaygg ISByZWYgJGNsYXNzLCAnU1RPUkFCTEVfYXR0YWNoIHBhc3NlZCBjbGFzcywgYW5kIG5vdCBhbiBv YmplY3QnICk7Ci0rICAgIFRlc3Q6Ok1vcmU6OmlzKCAkY2xhc3MsICdNeTo6U2luZ2xldG9uJywg J1NUT1JBQkxFX2F0dGFjaCBpcyBwYXNzZWQgdGhlIGNvcnJlY3QgY2xhc3MgbmFtZScgKTsKLSsg ICAgVGVzdDo6TW9yZTo6aXMoICRjbG9uZSwgMCwgJ1dlIGFyZSBub3QgaW4gYSBkY2xvbmUnICk7 Ci0rICAgIFRlc3Q6Ok1vcmU6OmlzKCAkc3RyaW5nLCAnZm9vJywgJ1NUT1JBQkxFX2F0dGFjaCBn ZXRzIHRoZSBzdHJpbmcgYmFjaycgKTsKLSsKLSsgICAgIyBHZXQgdGhlIFNpbmdsZXRvbiBvYmpl Y3QgYW5kIHJldHVybiBpdAotKyAgICByZXR1cm4gJGNsYXNzLT5uZXc7Ci0gfQotZGlmZiAtLWdp dCBhL3QvYmxlc3NlZC50IGIvdC9ibGVzc2VkLnQKLWluZGV4IGRlYTU2OWIuLjM5MzAwNDAgMTAw NjQ0Ci0tLS0gYS90L2JsZXNzZWQudAotKysrIGIvdC9ibGVzc2VkLnQKLUBAIC0xLDUxICsxLDQ4 IEBACi0gIyEuL3BlcmwKLSAjCi0gIyAgQ29weXJpZ2h0IChjKSAxOTk1LTIwMDAsIFJhcGhhZWwg TWFuZnJlZGkKLS0jICAKLSsjCi0gIyAgWW91IG1heSByZWRpc3RyaWJ1dGUgb25seSB1bmRlciB0 aGUgc2FtZSB0ZXJtcyBhcyBQZXJsIDUsIGFzIHNwZWNpZmllZAotICMgIGluIHRoZSBSRUFETUUg ZmlsZSB0aGF0IGNvbWVzIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAjCi0gCi0rbXkgJWltbW9y dGFsczsKLSsKLSBCRUdJTiB7Ci0gICAgICMgRG8gdGhpcyBhcyB0aGUgdmVyeSBmaXJzdCB0aGlu ZywgaW4gb3JkZXIgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCB0aGUKLSAgICAgIyBQQURUTVAgZmxh ZyBvbiBwcmUtNS4xOS4zIHRocmVhZGVkIFBlcmxzLiAgT24gdGhvc2UgUGVybHMsIGNvbXBpbGlu ZwotICAgICAjIGNvZGUgdGhhdCBjb250YWlucyBhIGNvbnN0YW50LWZvbGRlZCBjYW5vbmljYWwg dHJ1dGggdmFsdWUgYnJlYWtzCi0gICAgICMgdGhlIGFiaWxpdHkgdG8gdGFrZSBhIHJlZmVyZW5j ZSB0byB0aGF0IGNhbm9uaWNhbCB0cnV0aCB2YWx1ZSBsYXRlci4KLS0gICAgJDo6ZmFsc2UgPSAw OwotLSAgICAlOjppbW1vcnRhbHMgPSAoCi0tCSd1JyA9PiBcdW5kZWYsCi0tCSd5JyA9PiBcISQ6 OmZhbHNlLAotLQknbicgPT4gXCEhJDo6ZmFsc2UsCi0rICAgIG15ICRmYWxzZSA9IDA7Ci0rICAg ICVpbW1vcnRhbHMgPSAoCi0rICAgICAgICAndScgPT4gXHVuZGVmLAotKyAgICAgICAgJ3knID0+ IFwhJGZhbHNlLAotKyAgICAgICAgJ24nID0+IFwhISRmYWxzZSwKLSAgICAgKTsKLSB9Ci0gCi0t c3ViIEJFR0lOIHsKLS0gICAgaWYgKCRFTlZ7UEVSTF9DT1JFfSkgewotLSAgICAgICAgY2hkaXIg J2Rpc3QvU3RvcmFibGUnIGlmIC1kICdkaXN0L1N0b3JhYmxlJzsKLS0gICAgICAgIEBJTkMgPSAo Jy4uLy4uL2xpYicsICd0Jyk7Ci0tICAgIH0gZWxzZSB7Ci0tICAgICAgICB1bnNoaWZ0IEBJTkMs ICd0JzsKLS0gICAgICAgIHVuc2hpZnQgQElOQywgJ3QvY29tcGF0JyBpZiAkXSA8IDUuMDA2MDAy OwotLSAgICB9Ci0tICAgIHJlcXVpcmUgQ29uZmlnOyBpbXBvcnQgQ29uZmlnOwotLSAgICBpZiAo JEVOVntQRVJMX0NPUkV9IGFuZCAkQ29uZmlneydleHRlbnNpb25zJ30gIX4gL1xiU3RvcmFibGVc Yi8pIHsKLS0gICAgICAgIHByaW50ICIxLi4wICMgU2tpcDogU3RvcmFibGUgd2FzIG5vdCBidWls dFxuIjsKLS0gICAgICAgIGV4aXQgMDsKLS0gICAgfQotK3VzZSBzdHJpY3Q7Ci0rdXNlIHdhcm5p bmdzOwotKwotK0JFR0lOIHsKLSsgICAgdW5zaGlmdCBASU5DLCAndC9saWInOwotIH0KLSAKLSt1 c2UgQ29uZmlnOwotIHVzZSBUZXN0OjpNb3JlOwotK3VzZSBTVFRlc3RMaWIgcXcodGVtcGZpbGVu YW1lKTsKLSAKLSB1c2UgU3RvcmFibGUgcXcoZnJlZXplIHRoYXcgc3RvcmUgcmV0cmlldmUgZmRf cmV0cmlldmUpOwotIAotLSU6OndlaXJkX3JlZnMgPSAKLS0gIChSRUYgICAgICAgICAgICA9PiBc KG15ICRhcmVmICAgID0gW10pLAotLSAgIFZTVFJJTkcgICAgICAgID0+IFwobXkgJHZzdHJpbmcg PSB2MS4yLjMpLAotLSAgICdsb25nIFZTVFJJTkcnID0+IFwobXkgJGx2c3RyaW5nID0gZXZhbCAi diIgLiAwIHggMzAwKSwKLS0gICBMVkFMVUUgICAgICAgICA9PiBcKG15ICRzdWJzdHIgID0gc3Vi c3RyKChteSAkc3RyID0gImZvbyIpLCAwLCAzKSkpOwotK215ICV3ZWlyZF9yZWZzID0gKAotKyAg ICBSRUYgICAgICAgICAgICA9PiBcKG15ICRhcmVmICAgID0gW10pLAotKyAgICBWU1RSSU5HICAg ICAgICA9PiBcKG15ICR2c3RyaW5nID0gdjEuMi4zKSwKLSsgICAgJ2xvbmcgVlNUUklORycgPT4g XChteSAkbHZzdHJpbmcgPSBldmFsICJ2IiAuIDAgeCAzMDApLAotKyAgICBMVkFMVUUgICAgICAg ICA9PiBcKG15ICRzdWJzdHIgID0gc3Vic3RyKChteSAkc3RyID0gImZvbyIpLCAwLCAzKSkKLSsp OwotIAotIG15ICR0ZXN0ID0gMTg7Ci0tbXkgJHRlc3RzID0gJHRlc3QgKyA0MSArICgyICogNiAq IGtleXMgJTo6aW1tb3J0YWxzKSArICgzICoga2V5cyAlOjp3ZWlyZF9yZWZzKTsKLStteSAkdGVz dHMgPSAkdGVzdCArIDQxICsgKDIgKiA2ICoga2V5cyAlaW1tb3J0YWxzKSArICgzICoga2V5cyAl d2VpcmRfcmVmcyk7Ci0gcGxhbih0ZXN0cyA9PiAkdGVzdHMpOwotIAotIHBhY2thZ2UgU0hPUlRf TkFNRTsKLUBAIC01NywzNiArNTQsMzYgQEAgcGFja2FnZSBTSE9SVF9OQU1FX1dJVEhfSE9PSzsK LSBzdWIgbWFrZSB7IGJsZXNzIFtdLCBzaGlmdCB9Ci0gCi0gc3ViIFNUT1JBQkxFX2ZyZWV6ZSB7 Ci0tCW15ICRzZWxmID0gc2hpZnQ7Ci0tCXJldHVybiAoIiIsICRzZWxmKTsKLSsgICAgbXkgJHNl bGYgPSBzaGlmdDsKLSsgICAgcmV0dXJuICgiIiwgJHNlbGYpOwotIH0KLSAKLSBzdWIgU1RPUkFC TEVfdGhhdyB7Ci0tCW15ICRzZWxmID0gc2hpZnQ7Ci0tCW15ICRjbG9uaW5nID0gc2hpZnQ7Ci0t CW15ICgkeCwgJG9iaikgPSBAXzsKLS0JZGllICJTVE9SQUJMRV90aGF3IiB1bmxlc3MgJG9iaiBl cSAkc2VsZjsKLSsgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSsgICAgbXkgJGNsb25pbmcgPSBzaGlm dDsKLSsgICAgbXkgKCR4LCAkb2JqKSA9IEBfOwotKyAgICBkaWUgIlNUT1JBQkxFX3RoYXciIHVu bGVzcyAkb2JqIGVxICRzZWxmOwotIH0KLSAKLSBwYWNrYWdlIG1haW47Ci0gCi0gIyBTdGlsbCBs ZXNzIHRoYW4gMjU2IGJ5dGVzLCBzbyBsb25nIGNsYXNzbmFtZSBsb2dpYyBub3QgZnVsbHkgZXhl cmNpc2VkCi0gIyAgIElkZW50aWZpZXIgdG9vIGxvbmcgLSA1LjAwNAotLSMgICBwYXJzZXIuaDog Y2hhcgl0b2tlbmJ1ZlsyNTZdOiBjcGVybDUuMjQgPT4gMTAyNAotKyMgICBwYXJzZXIuaDogY2hh ciAgICAgIHRva2VuYnVmWzI1Nl06IGNwZXJsNS4yNCA9PiAxMDI0Ci0gbXkgJG0gPSAoJENvbmZp Z3t1c2VjcGVybH0gYW5kICRdID49IDUuMDI0KSA/IDU2IDogMTQ7Ci0gbXkgJGxvbmduYW1lID0g IkxPTkdfTkFNRV8iIC4gKCd4eHh4eHh4eHh4eHh4OjonIHggJG0pIC4gImZpbmFsIjsKLSAKLSBl dmFsIDw8RU9DOwotIHBhY2thZ2UgJGxvbmduYW1lOwotIAotLVxASVNBID0gKCJTSE9SVF9OQU1F Iik7Ci0rb3VyIFxASVNBID0gKCJTSE9SVF9OQU1FIik7Ci0gRU9DCi0gaXMoJEAsICcnKTsKLSAK LSBldmFsIDw8RU9DOwotIHBhY2thZ2UgJHtsb25nbmFtZX1fV0lUSF9IT09LOwotIAotLVxASVNB ID0gKCJTSE9SVF9OQU1FX1dJVEhfSE9PSyIpOwotK291ciBcQElTQSA9ICgiU0hPUlRfTkFNRV9X SVRIX0hPT0siKTsKLSBFT0MKLSBpcygkQCwgJycpOwotIAotQEAgLTEzNiw3ICsxMzMsNyBAQCBz dWIgU1RPUkFCTEVfZnJlZXplIHsKLSAgICAgIyBTb21lIHJlZmVyZW5jZSBzb21lIG51bWJlciBv ZiB0aW1lcy4KLSAgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAgICAgbXkgKCR3aGF0LCAkdGltZXMp ID0gQCRzZWxmOwotLSAgICByZXR1cm4gKCIkd2hhdCR0aW1lcyIsICgkOjppbW1vcnRhbHN7JHdo YXR9KSB4ICR0aW1lcyk7Ci0rICAgIHJldHVybiAoIiR3aGF0JHRpbWVzIiwgKCRpbW1vcnRhbHN7 JHdoYXR9KSB4ICR0aW1lcyk7Ci0gfQotIAotIHN1YiBTVE9SQUJMRV90aGF3IHsKLUBAIC0xNDYs NyArMTQzLDcgQEAgc3ViIFNUT1JBQkxFX3RoYXcgewotICAgICBteSAoJHdoYXQsICR0aW1lcykg PSAkeCA9fiAvKC4pKFxkKykvOwotICAgICBkaWUgIickeCcgZGlkbid0IG1hdGNoIiB1bmxlc3Mg ZGVmaW5lZCAkdGltZXM7Ci0gICAgIG1haW46OmlzKHNjYWxhciBAcmVmcywgJHRpbWVzKTsKLS0g ICAgbXkgJGV4cGVjdCA9ICQ6OmltbW9ydGFsc3skd2hhdH07Ci0rICAgIG15ICRleHBlY3QgPSAk aW1tb3J0YWxzeyR3aGF0fTsKLSAgICAgZGllICInJHgnIGRpZCBub3QgZ2l2ZSBhIHJlZmVyZW5j ZSIgdW5sZXNzIHJlZiAkZXhwZWN0OwotICAgICBteSAkZmFpbDsKLSAgICAgZm9yZWFjaCAoQHJl ZnMpIHsKLUBAIC0xNjIsMzcgKzE1OSwzNyBAQCBwYWNrYWdlIG1haW47Ci0gIyAkU3RvcmFibGU6 OkRFQlVHTUUgPSAxOwotIG15ICRjb3VudDsKLSBmb3JlYWNoICRjb3VudCAoMS4uMykgewotLSAg bXkgJGltbW9ydGFsOwotLSAgZm9yZWFjaCAkaW1tb3J0YWwgKGtleXMgJTo6aW1tb3J0YWxzKSB7 Ci0tICAgIHByaW50ICIjICRpbW1vcnRhbCB4ICRjb3VudFxuIjsKLS0gICAgbXkgJGkgPSAgUkVU VVJOU19JTU1PUlRBTFMtPm1ha2UgKCRpbW1vcnRhbCwgJGNvdW50KTsKLS0KLS0gICAgbXkgJGYg PSBmcmVlemUgKCRpKTsKLS0gIFRPRE86IHsKLS0gICAgICAjIHJlZiBzdl90cnVlIGlzIG5vdCBh bHdheXMgc3ZfdHJ1ZSwgYXQgbGVhc3QgaW4gb2xkZXIgdGhyZWFkZWQgcGVybHMuCi0tICAgICAg bG9jYWwgJFRPRE8gPSAiU29tZSA1LjEwLzEyIGRvIG5vdCBwcmVzZXJ2ZSByZWYgaWRlbnRpdHkg d2l0aCBmcmVlemUgXFwoMSA9PSAxKSIKLS0gICAgICAgIGlmICFkZWZpbmVkKCRmKSBhbmQgJF0g PCA1LjAxMyBhbmQgJF0gPiA1LjAwOSBhbmQgJGltbW9ydGFsIGVxICd5JzsKLS0gICAgICBpc250 KCRmLCB1bmRlZik7Ci0rICAgIG15ICRpbW1vcnRhbDsKLSsgICAgZm9yZWFjaCAkaW1tb3J0YWwg KGtleXMgJWltbW9ydGFscykgewotKyAgICAgICAgcHJpbnQgIiMgJGltbW9ydGFsIHggJGNvdW50 XG4iOwotKyAgICAgICAgbXkgJGkgPSAgUkVUVVJOU19JTU1PUlRBTFMtPm1ha2UgKCRpbW1vcnRh bCwgJGNvdW50KTsKLSsKLSsgICAgICAgIG15ICRmID0gZnJlZXplICgkaSk7Ci0rICAgICAgICBU T0RPOiB7Ci0rICAgICAgICAgICAgIyByZWYgc3ZfdHJ1ZSBpcyBub3QgYWx3YXlzIHN2X3RydWUs IGF0IGxlYXN0IGluIG9sZGVyIHRocmVhZGVkIHBlcmxzLgotKyAgICAgICAgICAgIGxvY2FsICRU T0RPID0gIlNvbWUgNS4xMC8xMiBkbyBub3QgcHJlc2VydmUgcmVmIGlkZW50aXR5IHdpdGggZnJl ZXplIFxcKDEgPT0gMSkiCi0rICAgICAgICAgICAgICAgIGlmICFkZWZpbmVkKCRmKSBhbmQgJF0g PCA1LjAxMyBhbmQgJF0gPiA1LjAwOSBhbmQgJGltbW9ydGFsIGVxICd5JzsKLSsgICAgICAgICAg ICBpc250KCRmLCB1bmRlZik7Ci0rICAgICAgICB9Ci0rICAgICAgICBteSAkdCA9IHRoYXcgJGY7 Ci0rICAgICAgICBwYXNzKCJ0aGF3IGRpZG4ndCBjcmFzaCIpOwotICAgICB9Ci0tICAgIG15ICR0 ID0gdGhhdyAkZjsKLS0gICAgcGFzcygidGhhdyBkaWRuJ3QgY3Jhc2giKTsKLS0gIH0KLSB9Ci0g Ci0gIyBUZXN0IGF1dG9tYXRpYyByZXF1aXJlIG9mIHBhY2thZ2VzIHRvIGZpbmQgdGhhdyBob29r LgotIAotIHBhY2thZ2UgSEFTX0hPT0s7Ci0gCi0tJGxvYWRlZF9jb3VudCA9IDA7Ci0tJHRoYXdl ZF9jb3VudCA9IDA7Ci0rb3VyICRsb2FkZWRfY291bnQgPSAwOwotK291ciAkdGhhd2VkX2NvdW50 ID0gMDsKLSAKLSBzdWIgbWFrZSB7Ci0tICBibGVzcyBbXTsKLSsgICAgYmxlc3MgW107Ci0gfQot IAotIHN1YiBTVE9SQUJMRV9mcmVlemUgewotLSAgbXkgJHNlbGYgPSBzaGlmdDsKLS0gIHJldHVy biAnJzsKLSsgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSsgICAgcmV0dXJuICcnOwotIH0KLSAKLSBw YWNrYWdlIG1haW47Ci1AQCAtMjIwLDI2ICsyMTcsMjkgQEAgaXMocmVmICR0LCAnSEFTX0hPT0sn KTsKLSB7Ci0gICAgIHBhY2thZ2UgU1RSRVNTX1RIRV9TVEFDSzsKLSAKLSsgICAgb3VyICRmcmVl emVfY291bnQgPSAwOwotKyAgICBvdXIgJHRoYXdfY291bnQgPSAwOwotKwotICAgICBteSAkc3Ry ZXNzOwotICAgICBzdWIgbWFrZSB7Ci0tCWJsZXNzIFtdOwotKyAgICAgICAgYmxlc3MgW107Ci0g ICAgIH0KLSAKLSAgICAgc3ViIG5vX29wIHsKLS0JMDsKLSsgICAgICAgIDA7Ci0gICAgIH0KLSAK LSAgICAgc3ViIFNUT1JBQkxFX2ZyZWV6ZSB7Ci0tCW15ICRzZWxmID0gc2hpZnQ7Ci0tCSsrJGZy ZWV6ZV9jb3VudDsKLS0JcmV0dXJuIG5vX29wKDEuLigrKyRzdHJlc3MgKiAyMDAwKSkgPyBkaWUg ImNhbid0IGhhcHBlbiIgOiAnJzsKLSsgICAgICAgIG15ICRzZWxmID0gc2hpZnQ7Ci0rICAgICAg ICArKyRmcmVlemVfY291bnQ7Ci0rICAgICAgICByZXR1cm4gbm9fb3AoMS4uKCsrJHN0cmVzcyAq IDIwMDApKSA/IGRpZSAiY2FuJ3QgaGFwcGVuIiA6ICcnOwotICAgICB9Ci0gCi0gICAgIHN1YiBT VE9SQUJMRV90aGF3IHsKLS0JbXkgJHNlbGYgPSBzaGlmdDsKLS0JKyskdGhhd19jb3VudDsKLS0J bm9fb3AoMS4uKCsrJHN0cmVzcyAqIDIwMDApKSAmJiBkaWUgImNhbid0IGhhcHBlbiI7Ci0tCXJl dHVybjsKLSsgICAgICAgIG15ICRzZWxmID0gc2hpZnQ7Ci0rICAgICAgICArKyR0aGF3X2NvdW50 OwotKyAgICAgICAgbm9fb3AoMS4uKCsrJHN0cmVzcyAqIDIwMDApKSAmJiBkaWUgImNhbid0IGhh cHBlbiI7Ci0rICAgICAgICByZXR1cm47Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMjU3LDEwICsyNTcs NyBAQCBpcygkU1RSRVNTX1RIRV9TVEFDSzo6dGhhd19jb3VudCwgMSk7Ci0gaXNudCgkdCwgdW5k ZWYpOwotIGlzKHJlZiAkdCwgJ1NUUkVTU19USEVfU1RBQ0snKTsKLSAKLS1teSAkZmlsZSA9ICJz dG9yYWJsZS10ZXN0ZmlsZS4kJCI7Ci0tZGllICJUZW1wb3JhcnkgZmlsZSAnJGZpbGUnIGFscmVh ZHkgZXhpc3RzIiBpZiAtZSAkZmlsZTsKLS0KLS1FTkQgeyB3aGlsZSAoLWYgJGZpbGUpIHt1bmxp bmsgJGZpbGUgb3IgZGllICJDYW4ndCB1bmxpbmsgJyRmaWxlJzogJCEiIH19Ci0rbXkgJGZpbGUg PSB0ZW1wZmlsZW5hbWUoKTsKLSAKLSAkU1RSRVNTX1RIRV9TVEFDSzo6ZnJlZXplX2NvdW50ID0g MDsKLSAkU1RSRVNTX1RIRV9TVEFDSzo6dGhhd19jb3VudCA9IDA7Ci1AQCAtMjgyLDcgKzI3OSw3 IEBAIGlzKHJlZiAkdCwgJ1NUUkVTU19USEVfU1RBQ0snKTsKLSAgICAgbXkgJG89IHtzdHI9PmJs ZXNzIHt9fTsKLSAgICAgbXkgJGY9IDo6ZnJlZXplKCRvKTsKLSAgICAgOjppcyByZWYgJG8tPntz dHJ9LCBfX1BBQ0tBR0VfXywKLS0JJ2Fzc2lnbm1lbnQgdG8gJF9bMF0gaW4gU1RPUkFCTEVfZnJl ZXplIGRvZXMgbm90IGNvcnJ1cHQgdGhpbmdzJzsKLSsgICAgICAgICdhc3NpZ25tZW50IHRvICRf WzBdIGluIFNUT1JBQkxFX2ZyZWV6ZSBkb2VzIG5vdCBjb3JydXB0IHRoaW5ncyc7Ci0gfQotIAot ICMgW3BlcmwgIzExMzg4MF0KLUBAIC0zMDcsMTUgKzMwNCwxOCBAQCBpcyhyZWYgJHQsICdTVFJF U1NfVEhFX1NUQUNLJyk7Ci0gICAgICAgICAgICAgIyBJdCBpcyBub3QganVzdCBTdG9yYWJsZSB0 aGF0IGRpZCBub3Qgc3VwcG9ydCB2c3RyaW5ncy4gOi0pCi0gICAgICAgICAgICAgIyBTZWUgaHR0 cHM6Ly9ydC5jcGFuLm9yZy9UaWNrZXQvRGlzcGxheS5odG1sP2lkPTc4Njc4Ci0gICAgICAgICAg ICAgbXkgJG5ld3ZlciA9ICJ2ZXJzaW9uIi0+Y2FuKCJuZXciKQotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgID8gc3ViIHsgInZlcnNpb24iLT5uZXcoc2hpZnQpIH0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICA6IHN1YiB7ICIiIH07Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ID8gc3ViIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubyB3YXJuaW5nczsKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiItPm5ldyhzaGlmdCkKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 IHN1YiB7ICIiIH07Ci0gICAgICAgICAgICAgaWYgKCFvawotLSAgICAgICAgICAgICAgICAgICQk dGhhd24gZXEgJCRvYmogJiYgJiRuZXd2ZXIoJCR0aGF3bikgZXEgJiRuZXd2ZXIoJCRvYmopLAot LSAgICAgICAgICAgICAgICAgImdldCB0aGUgcmlnaHQgdmFsdWUgYmFjayIKLSsgICAgICAgICAg ICAgICAgJCR0aGF3biBlcSAkJG9iaiAmJiAmJG5ld3ZlcigkJHRoYXduKSBlcSAmJG5ld3Zlcigk JG9iaiksCi0rICAgICAgICAgICAgICAgICJnZXQgdGhlIHJpZ2h0IHZhbHVlIGJhY2siCi0gICAg ICAgICAgICAgKSB7Ci0gICAgICAgICAgICAgICAgIGRpYWcgIiQkdGhhd24gdnMgJCRvYmoiOwot ICAgICAgICAgICAgICAgICBkaWFnICYkbmV3dmVyKCQkdGhhd24pIGVxICYkbmV3dmVyKCQkb2Jq KSBpZiAmJG5ld3ZlcigxKTsKLS0gICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSAgICAg ICAgIH0KLSAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgIGlzX2RlZXBseSgkdGhhd24sICRv YmosICJnZXQgdGhlIHJpZ2h0IHZhbHVlIGJhY2siKTsKLUBAIC0zNjUsMTYgKzM2NSwxNiBAQCBp cyhyZWYgJHQsICdTVFJFU1NfVEhFX1NUQUNLJyk7Ci0gICAgICAgICAgICAgZGllICR7JF9bMF19 Ci0gICAgICAgICB9Ci0gCi0tCXBhY2thZ2UgVGhhd0hvb2tEaWVzOwotLQlzdWIgU1RPUkFCTEVf ZnJlZXplIHsKLS0JICAgIG15ICgkc2VsZiwgJGNsb25pbmcpID0gQF87Ci0tCSAgICBteSAkdG1w ID0gJCRzZWxmOwotLQkgICAgcmV0dXJuICJhIiwgXCR0bXA7Ci0tCX0KLS0Jc3ViIFNUT1JBQkxF X3RoYXcgewotLQkgICAgbXkgKCRzZWxmLCAkY2xvbmluZywgJHN0ciwgJG9iaikgPSBAXzsKLS0J ICAgIGRpZSAkJG9iajsKLS0JfQotKyAgICAgICAgcGFja2FnZSBUaGF3SG9va0RpZXM7Ci0rICAg ICAgICBzdWIgU1RPUkFCTEVfZnJlZXplIHsKLSsgICAgICAgICAgICBteSAoJHNlbGYsICRjbG9u aW5nKSA9IEBfOwotKyAgICAgICAgICAgIG15ICR0bXAgPSAkJHNlbGY7Ci0rICAgICAgICAgICAg cmV0dXJuICJhIiwgXCR0bXA7Ci0rICAgICAgICB9Ci0rICAgICAgICBzdWIgU1RPUkFCTEVfdGhh dyB7Ci0rICAgICAgICAgICAgbXkgKCRzZWxmLCAkY2xvbmluZywgJHN0ciwgJG9iaikgPSBAXzsK LSsgICAgICAgICAgICBkaWUgJCRvYmo7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAgICAgbXkgJHgg PSBibGVzcyBcKG15ICR0bXB4ID0gIkZvbyIpLCAiRnJlZXplSG9va0RpZXMiOwotICAgICBteSAk eSA9IGJsZXNzIFwobXkgJHRtcHkgPSBbXSksICJGcmVlemVIb29rRGllcyI7Ci1AQCAtNDM0LDEz ICs0MzQsMTMgQEAgaXMocmVmICR0LCAnU1RSRVNTX1RIRV9TVEFDSycpOwotICAgICB9OwotICAg ICBteSAkbXNnID0gJEA7Ci0gICAgIGxpa2UoJG1zZywgcXIvVW5leHBlY3RlZCBvYmplY3QgdHlw ZSBcKEdMT0JcKSBvZiBjbGFzcyAnR2xvYkhvb2tlZCcgaW4gc3RvcmVfaG9va1woXCkgY2FsbGlu ZyBHbG9iSG9va2VkQmFzZTo6U1RPUkFCTEVfZnJlZXplLywKLS0gICAgICAgICAiY2hlY2sgd2Ug Z2V0IHRoZSB2ZXJib3NlIG1lc3NhZ2UiKTsKLSsgICAgICAgICJjaGVjayB3ZSBnZXQgdGhlIHZl cmJvc2UgbWVzc2FnZSIpOwotIH0KLSAKLSBTS0lQOgotIHsKLSAgICAgJF0gPCA1LjAxMgotLSAg ICAgIGFuZCBza2lwICJDYW4ndCBhc3NpZ24gcmVnZXhwcyBkaXJlY3RseSBiZWZvcmUgNS4xMiIs IDQ7Ci0rICAgICAgICBhbmQgc2tpcCAiQ2FuJ3QgYXNzaWduIHJlZ2V4cHMgZGlyZWN0bHkgYmVm b3JlIDUuMTIiLCA0OwotICAgICBteSAkaG9va19jYWxsZWQ7Ci0gICAgICMgc3RvcmUgcmVnZXhw IHZpYSBob29rCi0gICAgIHsKLWRpZmYgLS1naXQgYS90L2Jvb2xlYW4udCBiL3QvYm9vbGVhbi50 Ci1pbmRleCA5YmExOWMwLi43MGI2NWE0IDEwMDY0NAotLS0tIGEvdC9ib29sZWFuLnQKLSsrKyBi L3QvYm9vbGVhbi50Ci1AQCAtOCw3NyArOCw2NyBAQCBCRUdJTiB7Ci0gICAgICRmYWxzZV9yZWYg PSBcISEwOwotIH0KLSAKLS1CRUdJTiB7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QnOwotLSAgICB1 bnNoaWZ0IEBJTkMsICd0L2NvbXBhdCcgaWYgJF0gPCA1LjAwNjAwMjsKLS0gICAgcmVxdWlyZSBD b25maWc7Ci0tICAgIGlmICgkRU5We1BFUkxfQ09SRX0gYW5kICRDb25maWc6OkNvbmZpZ3snZXh0 ZW5zaW9ucyd9ICF+IC9cYlN0b3JhYmxlXGIvKSB7Ci0tICAgICAgICBwcmludCAiMS4uMCAjIFNr aXA6IFN0b3JhYmxlIHdhcyBub3QgYnVpbHRcbiI7Ci0tICAgICAgICBleGl0IDA7Ci0tICAgIH0K LS19Ci0tCi0gdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMTI7Ci0gdXNlIFN0b3JhYmxlIHF3KHRo YXcgZnJlZXplKTsKLSAKLSB1c2UgY29uc3RhbnQgQ09SRV9CT09MUyA9PiBkZWZpbmVkICZidWls dGluOjppc19ib29sOwotIAotIHsKLS0gIG15ICR4ID0gJHRydWVfcmVmOwotLSAgbXkgJHkgPSAk e3RoYXcgZnJlZXplIFwkeH07Ci0tICBpcygkeSwgJHgpOwotLSAgZXZhbCB7Ci0tICAgICQkeSA9 IDI7Ci0tICB9OwotLSAgaXNudCAkQCwgJycsCi0tICAgICdpbW1vcnRhbCB0cnVlIG1haW50YWlu ZWQgYXMgaW1tb3J0YWwnOwotKyAgICBteSAkeCA9ICR0cnVlX3JlZjsKLSsgICAgbXkgJHkgPSAk e3RoYXcgZnJlZXplIFwkeH07Ci0rICAgIGlzKCR5LCAkeCk7Ci0rICAgIGV2YWwgewotKyAgICAg ICAgJCR5ID0gMjsKLSsgICAgfTsKLSsgICAgaXNudCAkQCwgJycsCi0rICAgICAgICAnaW1tb3J0 YWwgdHJ1ZSBtYWludGFpbmVkIGFzIGltbW9ydGFsJzsKLSB9Ci0gCi0gewotLSAgbXkgJHggPSAk ZmFsc2VfcmVmOwotLSAgbXkgJHkgPSAke3RoYXcgZnJlZXplIFwkeH07Ci0tICBpcygkeSwgJHgp OwotLSAgZXZhbCB7Ci0tICAgICQkeSA9IDI7Ci0tICB9OwotLSAgaXNudCAkQCwgJycsCi0tICAg ICdpbW1vcnRhbCBmYWxzZSBtYWludGFpbmVkIGFzIGltbW9ydGFsJzsKLSsgICAgbXkgJHggPSAk ZmFsc2VfcmVmOwotKyAgICBteSAkeSA9ICR7dGhhdyBmcmVlemUgXCR4fTsKLSsgICAgaXMoJHks ICR4KTsKLSsgICAgZXZhbCB7Ci0rICAgICAgICAkJHkgPSAyOwotKyAgICB9OwotKyAgICBpc250 ICRALCAnJywKLSsgICAgICAgICdpbW1vcnRhbCBmYWxzZSBtYWludGFpbmVkIGFzIGltbW9ydGFs JzsKLSB9Ci0gCi0gewotLSAgbXkgJHRydWUgPSAkJHRydWVfcmVmOwotLSAgbXkgJHggPSBcJHRy dWU7Ci0tICBteSAkeSA9ICR7dGhhdyBmcmVlemUgXCR4fTsKLS0gIGlzKCQkeSwgJCR4KTsKLS0g IGlzKCQkeSwgJzEnKTsKLS0gIFNLSVA6IHsKLS0gICAgc2tpcCAicGVybCAkXSBkb2VzIG5vdCBz dXBwb3J0IHRyYWNraW5nIGJvb2xlYW4gdmFsdWVzIiwgMQotLSAgICAgIHVubGVzcyBDT1JFX0JP T0xTOwotLSAgICBCRUdJTiB7IENPUkVfQk9PTFMgYW5kIHdhcm5pbmdzLT51bmltcG9ydCgnZXhw ZXJpbWVudGFsOjpidWlsdGluJykgfQotLSAgICBvayBidWlsdGluOjppc19ib29sKCQkeSk7Ci0t ICB9Ci0tICBldmFsIHsKLS0gICAgJCR5ID0gMjsKLS0gIH07Ci0tICBpcyAkQCwgJycsCi0tICAg ICdtb3J0YWwgdHJ1ZSBtYWludGFpbmVkIGFzIG1vcnRhbCc7Ci0rICAgIG15ICR0cnVlID0gJCR0 cnVlX3JlZjsKLSsgICAgbXkgJHggPSBcJHRydWU7Ci0rICAgIG15ICR5ID0gJHt0aGF3IGZyZWV6 ZSBcJHh9OwotKyAgICBpcygkJHksICQkeCk7Ci0rICAgIGlzKCQkeSwgJzEnKTsKLSsgICAgU0tJ UDogewotKyAgICAgICAgc2tpcCAicGVybCAkXSBkb2VzIG5vdCBzdXBwb3J0IHRyYWNraW5nIGJv b2xlYW4gdmFsdWVzIiwgMQotKyAgICAgICAgICAgIHVubGVzcyBDT1JFX0JPT0xTOwotKyAgICAg ICAgQkVHSU4geyBDT1JFX0JPT0xTIGFuZCB3YXJuaW5ncy0+dW5pbXBvcnQoJ2V4cGVyaW1lbnRh bDo6YnVpbHRpbicpIH0KLSsgICAgICAgIG9rIGJ1aWx0aW46OmlzX2Jvb2woJCR5KTsKLSsgICAg fQotKyAgICBldmFsIHsKLSsgICAgICAgICQkeSA9IDI7Ci0rICAgIH07Ci0rICAgIGlzICRALCAn JywKLSsgICAgICAgICdtb3J0YWwgdHJ1ZSBtYWludGFpbmVkIGFzIG1vcnRhbCc7Ci0gfQotIAot IHsKLS0gIG15ICRmYWxzZSA9ICQkZmFsc2VfcmVmOwotLSAgbXkgJHggPSBcJGZhbHNlOwotLSAg bXkgJHkgPSAke3RoYXcgZnJlZXplIFwkeH07Ci0tICBpcygkJHksICQkeCk7Ci0tICBpcygkJHks ICcnKTsKLS0gIFNLSVA6IHsKLS0gICAgc2tpcCAicGVybCAkXSBkb2VzIG5vdCBzdXBwb3J0IHRy YWNraW5nIGJvb2xlYW4gdmFsdWVzIiwgMQotLSAgICAgIHVubGVzcyBDT1JFX0JPT0xTOwotLSAg ICBCRUdJTiB7IENPUkVfQk9PTFMgYW5kIHdhcm5pbmdzLT51bmltcG9ydCgnZXhwZXJpbWVudGFs OjpidWlsdGluJykgfQotLSAgICBvayBidWlsdGluOjppc19ib29sKCQkeSk7Ci0tICB9Ci0tICBl dmFsIHsKLS0gICAgJCR5ID0gMjsKLS0gIH07Ci0tICBpcyAkQCwgJycsCi0tICAgICdtb3J0YWwg dHJ1ZSBtYWludGFpbmVkIGFzIG1vcnRhbCc7Ci0rICAgIG15ICRmYWxzZSA9ICQkZmFsc2VfcmVm OwotKyAgICBteSAkeCA9IFwkZmFsc2U7Ci0rICAgIG15ICR5ID0gJHt0aGF3IGZyZWV6ZSBcJHh9 OwotKyAgICBpcygkJHksICQkeCk7Ci0rICAgIGlzKCQkeSwgJycpOwotKyAgICBTS0lQOiB7Ci0r ICAgICAgICBza2lwICJwZXJsICRdIGRvZXMgbm90IHN1cHBvcnQgdHJhY2tpbmcgYm9vbGVhbiB2 YWx1ZXMiLCAxCi0rICAgICAgICAgICAgdW5sZXNzIENPUkVfQk9PTFM7Ci0rICAgICAgICBCRUdJ TiB7IENPUkVfQk9PTFMgYW5kIHdhcm5pbmdzLT51bmltcG9ydCgnZXhwZXJpbWVudGFsOjpidWls dGluJykgfQotKyAgICAgICAgb2sgYnVpbHRpbjo6aXNfYm9vbCgkJHkpOwotKyAgICB9Ci0rICAg IGV2YWwgewotKyAgICAgICAgJCR5ID0gMjsKLSsgICAgfTsKLSsgICAgaXMgJEAsICcnLAotKyAg ICAgICAgJ21vcnRhbCB0cnVlIG1haW50YWluZWQgYXMgbW9ydGFsJzsKLSB9Ci1kaWZmIC0tZ2l0 IGEvdC9jYW5vbmljYWwudCBiL3QvY2Fub25pY2FsLnQKLWluZGV4IDNiOTMwYWEuLjYyMzdkYjYg MTAwNjQ0Ci0tLS0gYS90L2Nhbm9uaWNhbC50Ci0rKysgYi90L2Nhbm9uaWNhbC50Ci1AQCAtMSwy MSArMSwxMyBAQAotICMhLi9wZXJsCi0gIwotICMgIENvcHlyaWdodCAoYykgMTk5NS0yMDAwLCBS YXBoYWVsIE1hbmZyZWRpCi0tIyAgCi0rIwotICMgIFlvdSBtYXkgcmVkaXN0cmlidXRlIG9ubHkg dW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCA1LCBhcyBzcGVjaWZpZWQKLSAjICBpbiB0aGUg UkVBRE1FIGZpbGUgdGhhdCBjb21lcyB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0tIyAgCi0tCi0t c3ViIEJFR0lOIHsKLS0gICAgdW5zaGlmdCBASU5DLCAndCc7Ci0tICAgIHVuc2hpZnQgQElOQywg J3QvY29tcGF0JyBpZiAkXSA8IDUuMDA2MDAyOwotLSAgICByZXF1aXJlIENvbmZpZzsgaW1wb3J0 IENvbmZpZzsKLS0gICAgaWYgKCRFTlZ7UEVSTF9DT1JFfSBhbmQgJENvbmZpZ3snZXh0ZW5zaW9u cyd9ICF+IC9cYlN0b3JhYmxlXGIvKSB7Ci0tICAgICAgICBwcmludCAiMS4uMCAjIFNraXA6IFN0 b3JhYmxlIHdhcyBub3QgYnVpbHRcbiI7Ci0tICAgICAgICBleGl0IDA7Ci0tICAgIH0KLS19Ci0r IwotIAotK3VzZSBzdHJpY3Q7Ci0rdXNlIHdhcm5pbmdzOwotIAotIHVzZSBTdG9yYWJsZSBxdyhm cmVlemUgdGhhdyBkY2xvbmUpOwotIG91ciAoJGRlYnVnZ2luZywgJHZlcmJvc2UpOwotQEAgLTI2 LDU2ICsxOCw2MSBAQCB1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiA4OwotICMgKHlvdSBtYXkgd2Fu dCB0byByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGhhc2hlcyB0b28pCi0gIyAkZGVidWdnaW5nID0g MTsKLSAKLS0kaGFzaHNpemUgPSAxMDA7Ci0tJG1heGhhc2gyc2l6ZSA9IDEwMDsKLS0kbWF4YXJy YXlzaXplID0gMTAwOwotK215ICRoYXNoc2l6ZSA9IDEwMDsKLStteSAkbWF4aGFzaDJzaXplID0g MTAwOwotK215ICRtYXhhcnJheXNpemUgPSAxMDA7Ci0gCi0gIyBVc2UgRGlnZXN0OjpNRDUgaWYg aXRzIGF2YWlsYWJsZSB0byBtYWtlIHJhbmRvbSBzdHJpbmcga2V5cwotIAotIGV2YWwgeyByZXF1 aXJlIERpZ2VzdDo6TUQ1OyB9OwotLSRnb3RtZDUgPSAhJEA7Ci0rbXkgJGdvdG1kNSA9ICEkQDsK LSBub3RlICJXaWxsIHVzZSBEaWdlc3Q6Ok1ENSIgaWYgJGdvdG1kNTsKLSAKLSAjIFVzZSBEYXRh OjpEdW1wZXIgaWYgZGVidWdnaW5nIGFuZCBpdCBpcyBhdmFpbGFibGUgdG8gY3JlYXRlIGFuIEFT Q0lJIGR1bXAKLSAKLStteSAkZ290ZGQ7Ci0gaWYgKCRkZWJ1Z2dpbmcpIHsKLSAgICAgZXZhbCB7 IHJlcXVpcmUgIkRhdGEvRHVtcGVyLnBtIiB9OwotICAgICAkZ290ZGQgID0gISRAOwotIH0KLSAK LS1AZml4ZWRfc3RyaW5ncyA9ICgiSmFudWFyeSIsICJGZWJydWFyeSIsICJNYXJjaCIsICJBcHJp bCIsICJNYXkiLCAiSnVuZSIsCi0tCQkgICJKdWx5IiwgIkF1Z3VzdCIsICJTZXB0ZW1iZXIiLCAi T2N0b2JlciIsICJOb3ZlbWJlciIsICJEZWNlbWJlciIgKTsKLStteSBAZml4ZWRfc3RyaW5ncyA9 ICgKLSsgICAgIkphbnVhcnkiLCAiRmVicnVhcnkiLCAiTWFyY2giLCAiQXByaWwiLCAiTWF5Iiwg Ikp1bmUiLAotKyAgICAiSnVseSIsICJBdWd1c3QiLCAiU2VwdGVtYmVyIiwgIk9jdG9iZXIiLCAi Tm92ZW1iZXIiLCAiRGVjZW1iZXIiCi0rKTsKLSAKLSAjIEJ1aWxkIHNvbWUgYXJiaXRyYXJpbHkg Y29tcGxleCBkYXRhIHN0cnVjdHVyZSBzdGFydGluZyB3aXRoIGEgdG9wIGxldmVsIGhhc2gKLSAj IChkZWVwZXIgbGV2ZWxzIGNvbnRhaW4gc2NhbGFycywgcmVmZXJlbmNlcyB0byBoYXNoZXMgb3Ig cmVmZXJlbmNlcyB0byBhcnJheXMpOwotIAotK215ICVhMTsKLSsKLSBmb3IgKG15ICRpID0gMDsg JGkgPCAkaGFzaHNpemU7ICRpKyspIHsKLS0JbXkoJGspID0gaW50KHJhbmQoMV8wMDBfMDAwKSk7 Ci0tCSRrID0gRGlnZXN0OjpNRDU6Om1kNV9oZXgoJGspIGlmICRnb3RtZDUgYW5kIGludChyYW5k KDIpKTsKLS0JJGExeyRrfSA9IHsga2V5ID0+ICIkayIsICJ2YWx1ZSIgPT4gJGkgfTsKLS0KLS0J IyBBIHRoaXJkIG9mIHRoZSBlbGVtZW50cyBhcmUgcmVmZXJlbmNlcyB0byBmdXJ0aGVyIGhhc2hl cwotLQotLQlpZiAoaW50KHJhbmQoMS41KSkpIHsKLS0JCW15KCRoYXNoMikgPSB7fTsKLS0JCW15 KCRoYXNoMnNpemUpID0gaW50KHJhbmQoJG1heGhhc2gyc2l6ZSkpOwotLQkJd2hpbGUgKCRoYXNo MnNpemUtLSkgewotLQkJCW15KCRrMikgPSAkayAuICRpIC4gaW50KHJhbmQoMTAwKSk7Ci0tCQkJ JGhhc2gyLT57JGsyfSA9ICRmaXhlZF9zdHJpbmdzW3JhbmQoaW50KEBmaXhlZF9zdHJpbmdzKSld OwotLQkJfQotLQkJJGExeyRrfS0+e3ZhbHVlfSA9ICRoYXNoMjsKLS0JfQotLQotLQkjIEEgZnVy dGhlciB0aGlyZCBhcmUgcmVmZXJlbmNlcyB0byBhcnJheXMKLS0KLS0JZWxzaWYgKGludChyYW5k KDIpKSkgewotLQkJbXkoJGFycl9yZWYpID0gW107Ci0tCQlteSgkYXJyYXlzaXplKSA9IGludChy YW5kKCRtYXhhcnJheXNpemUpKTsKLS0JCXdoaWxlICgkYXJyYXlzaXplLS0pIHsKLS0JCQlwdXNo KEAkYXJyX3JlZiwgJGZpeGVkX3N0cmluZ3NbcmFuZChpbnQoQGZpeGVkX3N0cmluZ3MpKV0pOwot LQkJfQotLQkJJGExeyRrfS0+e3ZhbHVlfSA9ICRhcnJfcmVmOwotLQl9CQotKyAgICBteSgkaykg PSBpbnQocmFuZCgxXzAwMF8wMDApKTsKLSsgICAgJGsgPSBEaWdlc3Q6Ok1ENTo6bWQ1X2hleCgk aykgaWYgJGdvdG1kNSBhbmQgaW50KHJhbmQoMikpOwotKyAgICAkYTF7JGt9ID0geyBrZXkgPT4g IiRrIiwgInZhbHVlIiA9PiAkaSB9OwotKwotKyAgICAjIEEgdGhpcmQgb2YgdGhlIGVsZW1lbnRz IGFyZSByZWZlcmVuY2VzIHRvIGZ1cnRoZXIgaGFzaGVzCi0rCi0rICAgIGlmIChpbnQocmFuZCgx LjUpKSkgewotKyAgICAgICAgbXkoJGhhc2gyKSA9IHt9OwotKyAgICAgICAgbXkoJGhhc2gyc2l6 ZSkgPSBpbnQocmFuZCgkbWF4aGFzaDJzaXplKSk7Ci0rICAgICAgICB3aGlsZSAoJGhhc2gyc2l6 ZS0tKSB7Ci0rICAgICAgICAgICAgbXkoJGsyKSA9ICRrIC4gJGkgLiBpbnQocmFuZCgxMDApKTsK LSsgICAgICAgICAgICAkaGFzaDItPnskazJ9ID0gJGZpeGVkX3N0cmluZ3NbcmFuZChpbnQoQGZp eGVkX3N0cmluZ3MpKV07Ci0rICAgICAgICB9Ci0rICAgICAgICAkYTF7JGt9LT57dmFsdWV9ID0g JGhhc2gyOwotKyAgICB9Ci0rCi0rICAgICMgQSBmdXJ0aGVyIHRoaXJkIGFyZSByZWZlcmVuY2Vz IHRvIGFycmF5cwotKwotKyAgICBlbHNpZiAoaW50KHJhbmQoMikpKSB7Ci0rICAgICAgICBteSgk YXJyX3JlZikgPSBbXTsKLSsgICAgICAgIG15KCRhcnJheXNpemUpID0gaW50KHJhbmQoJG1heGFy cmF5c2l6ZSkpOwotKyAgICAgICAgd2hpbGUgKCRhcnJheXNpemUtLSkgewotKyAgICAgICAgICAg IHB1c2goQCRhcnJfcmVmLCAkZml4ZWRfc3RyaW5nc1tyYW5kKGludChAZml4ZWRfc3RyaW5ncykp XSk7Ci0rICAgICAgICB9Ci0rICAgICAgICAkYTF7JGt9LT57dmFsdWV9ID0gJGFycl9yZWY7Ci0r ICAgIH0KLSB9Ci0gCi0gCi1AQCAtODQsMjUgKzgxLDI3IEBAIHByaW50IFNUREVSUiBEYXRhOjpE dW1wZXI6OkR1bXBlcihcJWExKSBpZiAoJHZlcmJvc2UgYW5kICRnb3RkZCk7Ci0gCi0gIyBDb3B5 IHRoZSBoYXNoLCBlbGVtZW50IGJ5IGVsZW1lbnQgaW4gb3JkZXIgb2YgdGhlIGtleXMKLSAKLS1m b3JlYWNoICRrIChzb3J0IGtleXMgJWExKSB7Ci0rbXkgJWEyOwotKwotK2ZvcmVhY2ggbXkgJGsg KHNvcnQga2V5cyAlYTEpIHsKLSAgICAgJGEyeyRrfSA9IHsga2V5ID0+ICIkayIsICJ2YWx1ZSIg PT4gJGExeyRrfS0+e3ZhbHVlfSB9OwotIH0KLSAKLSAjIERlZXAgY2xvbmUgdGhlIGhhc2gKLSAK LS0kYTMgPSBkY2xvbmUoXCVhMSk7Ci0rbXkgJGEzID0gZGNsb25lKFwlYTEpOwotIAotICMgSW4g Y2Fub25pY2FsIG1vZGUgdGhlIGZyb3plbiByZXByZXNlbnRhdGlvbiBvZiBlYWNoIG9mIHRoZSBo YXNoZXMKLSAjIHNob3VsZCBiZSBpZGVudGljYWwKLSAKLSAkU3RvcmFibGU6OmNhbm9uaWNhbCA9 IDE7Ci0gCi0tJHgxID0gZnJlZXplKFwlYTEpOwotLSR4MiA9IGZyZWV6ZShcJWEyKTsKLS0keDMg PSBmcmVlemUoJGEzKTsKLStteSAkeDEgPSBmcmVlemUoXCVhMSk7Ci0rbXkgJHgyID0gZnJlZXpl KFwlYTIpOwotK215ICR4MyA9IGZyZWV6ZSgkYTMpOwotIAotLWNtcF9vayhsZW5ndGggJHgxLCAn PicsICRoYXNoc2l6ZSk7CSMgc2FuaXR5IGNoZWNrCi0taXMobGVuZ3RoICR4MSwgbGVuZ3RoICR4 Mik7CQkjIGlkZW0KLStjbXBfb2sobGVuZ3RoICR4MSwgJz4nLCAkaGFzaHNpemUpOyAgICAgIyBz YW5pdHkgY2hlY2sKLStpcyhsZW5ndGggJHgxLCBsZW5ndGggJHgyKTsgICAgICAgICAgICAgIyBp ZGVtCi0gaXMoJHgxLCAkeDIpOwotIGlzKCR4MSwgJHgzKTsKLSAKLWRpZmYgLS1naXQgYS90L2Np cmN1bGFyX2hvb2sudCBiL3QvY2lyY3VsYXJfaG9vay50Ci1pbmRleCBmZDYzNWMwLi42NmY5YWZl IDEwMDY0NAotLS0tIGEvdC9jaXJjdWxhcl9ob29rLnQKLSsrKyBiL3QvY2lyY3VsYXJfaG9vay50 Ci1AQCAtMTIsMTUgKzEyLDggQEAKLSAjIFRoaXMgZmlsZSB0ZXN0cyBzZXZlcmFsIGtub3duLWVy cm9yIGNhc2VzIHJlbGF0aW5nIHRvIFNUT1JBQkxFX2F0dGFjaCwgaW4KLSAjIHdoaWNoIFN0b3Jh YmxlIHNob3VsZCAoY29ycmVjdGx5KSB0aHJvdyBlcnJvcnMuCi0gCi0tc3ViIEJFR0lOIHsKLS0g ICAgdW5zaGlmdCBASU5DLCAndCc7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QvY29tcGF0JyBpZiAk XSA8IDUuMDA2MDAyOwotLSAgICByZXF1aXJlIENvbmZpZzsgaW1wb3J0IENvbmZpZzsKLS0gICAg aWYgKCRFTlZ7UEVSTF9DT1JFfSBhbmQgJENvbmZpZ3snZXh0ZW5zaW9ucyd9ICF+IC9cYlN0b3Jh YmxlXGIvKSB7Ci0tICAgICAgICBwcmludCAiMS4uMCAjIFNraXA6IFN0b3JhYmxlIHdhcyBub3Qg YnVpbHRcbiI7Ci0tICAgICAgICBleGl0IDA7Ci0tICAgIH0KLS19Ci0rdXNlIHN0cmljdDsKLSt1 c2Ugd2FybmluZ3M7Ci0gCi0gdXNlIFN0b3JhYmxlICgpOwotIHVzZSBUZXN0OjpNb3JlIHRlc3Rz ID0+IDk7Ci1AQCAtNTQsMzQgKzQ3LDM0IEBAIGlzX2RlZXBseSggXEBGb286Om9yZGVyLCBbICdC YXInLCAnRm9vJyBdLCAndGhhdyBvcmRlciBpcyBjb3JyZWN0IChkZXB0aCBmaXJzdCknCi0gCi0g cGFja2FnZSBGb287Ci0gCi0tQG9yZGVyID0gKCk7Ci0rb3VyIEBvcmRlciA9ICgpOwotIAotIHN1 YiBTVE9SQUJMRV9mcmVlemUgewotLQlteSAoJHNlbGYsICRjbG9uZSkgPSBAXzsKLS0JbXkgJGNs YXNzID0gcmVmICRzZWxmOwotLQkKLS0JIyBwcmludCAiIyBGcmVlemluZyAkY2xhc3NcbiI7Ci0r ICAgIG15ICgkc2VsZiwgJGNsb25lKSA9IEBfOwotKyAgICBteSAkY2xhc3MgPSByZWYgJHNlbGY7 Ci0rCi0rICAgICMgcHJpbnQgIiMgRnJlZXppbmcgJGNsYXNzXG4iOwotIAotLQlyZXR1cm4gKCRj bGFzcywgJHNlbGYtPnskY2xhc3N9KTsKLSsgICAgcmV0dXJuICgkY2xhc3MsICRzZWxmLT57JGNs YXNzfSk7Ci0gfQotIAotIHN1YiBTVE9SQUJMRV90aGF3IHsKLS0JbXkgKCRzZWxmLCAkY2xvbmUs ICRzdHJpbmcsIEByZWZzKSA9IEBfOwotLQlteSAkY2xhc3MgPSByZWYgJHNlbGY7Ci0rICAgIG15 ICgkc2VsZiwgJGNsb25lLCAkc3RyaW5nLCBAcmVmcykgPSBAXzsKLSsgICAgbXkgJGNsYXNzID0g cmVmICRzZWxmOwotIAotLQkjIHByaW50ICIjIFRoYXdpbmcgJGNsYXNzXG4iOwotKyAgICAjIHBy aW50ICIjIFRoYXdpbmcgJGNsYXNzXG4iOwotIAotLQkkc2VsZi0+eyRjbGFzc30gPSBzaGlmdCBA cmVmczsKLSsgICAgJHNlbGYtPnskY2xhc3N9ID0gc2hpZnQgQHJlZnM7Ci0gCi0tCXB1c2ggQG9y ZGVyLCAkY2xhc3M7Ci0rICAgIHB1c2ggQG9yZGVyLCAkY2xhc3M7Ci0gCi0tIAlyZXR1cm47Ci0r ICAgIHJldHVybjsKLSB9Ci0gCi0gcGFja2FnZSBCYXI7Ci0gCi0gQkVHSU4gewotLUBJU0EgPSAn Rm9vJzsKLStvdXIgQElTQSA9ICdGb28nOwotIH0KLSAKLSAxOwotZGlmZiAtLWdpdCBhL3QvY29k ZS50IGIvdC9jb2RlLnQKLWluZGV4IGI0ZTcwODEuLmE4NmIyOTYgMTAwNjQ0Ci0tLS0gYS90L2Nv ZGUudAotKysrIGIvdC9jb2RlLnQKLUBAIC02LDM0ICs2LDI2IEBACi0gIyAgaW4gdGhlIFJFQURN RSBmaWxlIHRoYXQgY29tZXMgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICMKLSAKLS1zdWIgQkVH SU4gewotLSAgICB1bnNoaWZ0IEBJTkMsICd0JzsKLS0gICAgdW5zaGlmdCBASU5DLCAndC9jb21w YXQnIGlmICRdIDwgNS4wMDYwMDI7Ci0tICAgIHJlcXVpcmUgQ29uZmlnOyBpbXBvcnQgQ29uZmln OwotLSAgICBpZiAoJEVOVntQRVJMX0NPUkV9IGFuZCAkQ29uZmlneydleHRlbnNpb25zJ30gIX4g L1xiU3RvcmFibGVcYi8pIHsKLS0gICAgICAgIHByaW50ICIxLi4wICMgU2tpcDogU3RvcmFibGUg d2FzIG5vdCBidWlsdFxuIjsKLS0gICAgICAgIGV4aXQgMDsKLS0gICAgfQotLX0KLSsjIGJlZm9y ZSBzdHJpY3Qvd2FybmluZ3MgdG8gbWFrZSB0aGUgbGlmZSBmb3IgU2FmZS0+cmV2YWwgZWFzaWVy Ci0rc3ViIGNvZGUgeyAiSkFQSCIgfQotK215ICRjb2RlcmVmID0gc3ViIHsgNio3IH07Ci0gCi0g dXNlIHN0cmljdDsKLSt1c2Ugd2FybmluZ3M7Ci0rCi0gQkVHSU4gewotICAgICBpZiAoIWV2YWwg cXsKLS0JdXNlIFRlc3Q6Ok1vcmU7Ci0tCXVzZSBCOjpEZXBhcnNlIDAuNjE7Ci0tCXVzZSA1LjAw NjsKLS0JMTsKLSsgICAgICAgIHVzZSBCOjpEZXBhcnNlIDAuNjE7Ci0rICAgICAgICAxOwotICAg ICB9KSB7Ci0tCXByaW50ICIxLi4wICMgc2tpcDogdGVzdHMgb25seSB3b3JrIHdpdGggQjo6RGVw YXJzZSAwLjYxIGFuZCBhdCBsZWFzdCBwZXJsIDUuNi4wXG4iOwotLQlleGl0OwotLSAgICB9Ci0t ICAgIHJlcXVpcmUgRmlsZTo6U3BlYzsKLS0gICAgaWYgKCRGaWxlOjpTcGVjOjpWRVJTSU9OIDwg MC44KSB7Ci0tCXByaW50ICIxLi4wICMgU2tpcDogbmV3ZXIgRmlsZTo6U3BlYyBuZWVkZWRcbiI7 Ci0tCWV4aXQgMDsKLSsgICAgICAgIHByaW50ICIxLi4wICMgc2tpcDogdGVzdHMgb25seSB3b3Jr IHdpdGggQjo6RGVwYXJzZSAwLjYxXG4iOwotKyAgICAgICAgZXhpdDsKLSAgICAgfQotIH0KLSAK LSt1c2UgVGVzdDo6TW9yZTsKLSt1c2UgRmlsZTo6U3BlYzsKLSsKLSBCRUdJTiB7IHBsYW4gdGVz dHMgPT4gNjMgfQotIAotIHVzZSBTdG9yYWJsZSBxdyhyZXRyaWV2ZSBzdG9yZSBuc3RvcmUgZnJl ZXplIG5mcmVlemUgdGhhdyBkY2xvbmUpOwotQEAgLTQ2LDMzICszOCwyOSBAQCBvdXIgKCRmcmVl emVkLCAkdGhhd2VkLCBAb2JqLCBAcmVzLCAkYmxlc3NlZF9jb2RlKTsKLSAkYmxlc3NlZF9jb2Rl ID0gYmxlc3Mgc3ViIHsgImJsZXNzZWQiIH0sICJTb21lOjpQYWNrYWdlIjsKLSB7IHBhY2thZ2Ug QW5vdGhlcjo6UGFja2FnZTsgc3ViIGZvbyB7IF9fUEFDS0FHRV9fIH0gfQotIAotLXsKLS0gICAg bm8gc3RyaWN0OyAjIHRvIG1ha2UgdGhlIGxpZmUgZm9yIFNhZmUtPnJldmFsIGVhc2llcgotLSAg ICBzdWIgY29kZSB7ICJKQVBIIiB9Ci0tfQotLQotIGxvY2FsICpGT087Ci0gCi0tQG9iaiA9Ci0t ICAgIChbXCZjb2RlLCAgICAgICAgICAgICAgICAgICAjIGNvZGUgcmVmZXJlbmNlCi0tICAgICAg c3ViIHsgNio3IH0sCi0tICAgICAgJGJsZXNzZWRfY29kZSwgICAgICAgICAgICAjIGJsZXNzZWQg Y29kZSByZWZlcmVuY2UKLS0gICAgICBcJkFub3RoZXI6OlBhY2thZ2U6OmZvbywgICMgY29kZSBp biBhbm90aGVyIHBhY2thZ2UKLS0gICAgICBzdWIgKCQkOyQpIHsgMCB9LCAgICAgICAgICMgcHJv dG90eXBlcwotLSAgICAgIHN1YiB7IHByaW50ICJ0ZXN0XG4iIH0sCi0tICAgICAgXCZTdG9yYWJs ZTo6X3N0b3JlLCAgICAgICAjIGxhcmdlIHNjYWxhcgotLSAgICAgXSwKLStAb2JqID0gKAotKyAg ICBbCi0rICAgICAgICBcJmNvZGUsICAgICAgICAgICAgICAgICAgICMgY29kZSByZWZlcmVuY2UK LSsgICAgICAgICRjb2RlcmVmLAotKyAgICAgICAgJGJsZXNzZWRfY29kZSwgICAgICAgICAgICAj IGJsZXNzZWQgY29kZSByZWZlcmVuY2UKLSsgICAgICAgIFwmQW5vdGhlcjo6UGFja2FnZTo6Zm9v LCAgIyBjb2RlIGluIGFub3RoZXIgcGFja2FnZQotKyAgICAgICAgc3ViICgkJDskKSB7IDAgfSwg ICAgICAgICAjIHByb3RvdHlwZXMKLSsgICAgICAgIHN1YiB7IHByaW50ICJ0ZXN0XG4iIH0sCi0r ICAgICAgICBcJlN0b3JhYmxlOjpfc3RvcmUsICAgICAgICMgbGFyZ2Ugc2NhbGFyCi0rICAgIF0s Ci0gCi0tICAgICB7ImEiID0+IHN1YiB7ICJzcnQiIH0sICJiIiA9PiBcJmNvZGV9LAotKyAgICB7 ImEiID0+IHN1YiB7ICJzcnQiIH0sICJiIiA9PiBcJmNvZGV9LAotIAotLSAgICAgc3ViIHsgb3Jk KCJhIiktb3JkKCI3IikgfSwKLSsgICAgc3ViIHsgb3JkKCJhIiktb3JkKCI3IikgfSwKLSAKLS0g ICAgIFwmY29kZSwKLSsgICAgXCZjb2RlLAotIAotLSAgICAgXCZkY2xvbmUsICAgICAgICAgICAg ICAgICAjIFhTIGZ1bmN0aW9uCi0rICAgIFwmZGNsb25lLCAgICAgICAgICAgICAgICAgIyBYUyBm dW5jdGlvbgotIAotLSAgICAgc3ViIHsgb3BlbiBGT08sICc8JywgIi8iIH0sCi0tICAgICk7Ci0r ICAgIHN1YiB7IG9wZW4gRk9PLCAnPCcsICIvIiB9LAotKyk7Ci0gCi0gJFN0b3JhYmxlOjpEZXBh cnNlID0gMTsKLSAkU3RvcmFibGU6OkV2YWwgICAgPSAxOwotQEAgLTE1NiwxMCArMTQ0LDEwIEBA IGlzKHByb3RvdHlwZSgkdGhhd2VkLT5bNF0pLCBwcm90b3R5cGUoJG9ialswXS0+WzRdKSk7Ci0g ICAgIGxvY2FsICRTdG9yYWJsZTo6RXZhbCA9IDA7Ci0gCi0gICAgIGZvciBteSAkaSAoMCAuLiAx KSB7Ci0tCSRmcmVlemVkID0gZnJlZXplICRvYmpbJGldOwotLQkkQCA9ICIiOwotLQlldmFsIHsg JHRoYXdlZCAgPSB0aGF3ICRmcmVlemVkIH07Ci0tCWxpa2UoJEAsIHFyL0NhblwndCBldmFsLyk7 Ci0rICAgICAgICAkZnJlZXplZCA9IGZyZWV6ZSAkb2JqWyRpXTsKLSsgICAgICAgICRAID0gIiI7 Ci0rICAgICAgICBldmFsIHsgJHRoYXdlZCAgPSB0aGF3ICRmcmVlemVkIH07Ci0rICAgICAgICBs aWtlKCRALCBxci9DYW5cJ3QgZXZhbC8pOwotICAgICB9Ci0gfQotIAotQEAgLTE2Nyw5ICsxNTUs OSBAQCBpcyhwcm90b3R5cGUoJHRoYXdlZC0+WzRdKSwgcHJvdG90eXBlKCRvYmpbMF0tPls0XSkp OwotIAotICAgICBsb2NhbCAkU3RvcmFibGU6OkRlcGFyc2UgPSAwOwotICAgICBmb3IgbXkgJGkg KDAgLi4gMSkgewotLQkkQCA9ICIiOwotLQlldmFsIHsgJGZyZWV6ZWQgPSBmcmVlemUgJG9ialsk aV0gfTsKLS0JbGlrZSgkQCwgcXIvQ2FuXCd0IHN0b3JlIENPREUgaXRlbXMvKTsKLSsgICAgICAg ICRAID0gIiI7Ci0rICAgICAgICBldmFsIHsgJGZyZWV6ZWQgPSBmcmVlemUgJG9ialskaV0gfTsK LSsgICAgICAgIGxpa2UoJEAsIHFyL0NhblwndCBzdG9yZSBDT0RFIGl0ZW1zLyk7Ci0gICAgIH0K LSB9Ci0gCi1AQCAtMTc3LDExICsxNjUsMTEgQEAgaXMocHJvdG90eXBlKCR0aGF3ZWQtPls0XSks IHByb3RvdHlwZSgkb2JqWzBdLT5bNF0pKTsKLSAgICAgbG9jYWwgJFN0b3JhYmxlOjpFdmFsID0g MDsKLSAgICAgbG9jYWwgJFN0b3JhYmxlOjpmb3JnaXZlX21lID0gMTsKLSAgICAgZm9yIG15ICRp ICgwIC4uIDQpIHsKLS0JJGZyZWV6ZWQgPSBmcmVlemUgJG9ialswXS0+WyRpXTsKLS0JJEAgPSAi IjsKLS0JZXZhbCB7ICR0aGF3ZWQgID0gdGhhdyAkZnJlZXplZCB9OwotLQlpcygkQCwgIiIpOwot LQlsaWtlKCQkdGhhd2VkLCBxci9ec3ViLyk7Ci0rICAgICAgICAkZnJlZXplZCA9IGZyZWV6ZSAk b2JqWzBdLT5bJGldOwotKyAgICAgICAgJEAgPSAiIjsKLSsgICAgICAgIGV2YWwgeyAkdGhhd2Vk ICA9IHRoYXcgJGZyZWV6ZWQgfTsKLSsgICAgICAgIGlzKCRALCAiIik7Ci0rICAgICAgICBsaWtl KCQkdGhhd2VkLCBxci9ec3ViLyk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTkzLDcgKzE4MSw3IEBA IGlzKHByb3RvdHlwZSgkdGhhd2VkLT5bNF0pLCBwcm90b3R5cGUoJG9ialswXS0+WzRdKSk7Ci0g Ci0gICAgIG9wZW4oU0FWRUVSUiwgIj4mU1RERVJSIik7Ci0gICAgIG9wZW4oU1RERVJSLCAnPics ICRkZXZudWxsKSBvcgotLQkoIHByaW50IFNBVkVFUlIgIlVuYWJsZSB0byByZWRpcmVjdCBTVERF UlI6ICQhXG4iIGFuZCBleGl0KDEpICk7Ci0rICAgICAgICAoIHByaW50IFNBVkVFUlIgIlVuYWJs ZSB0byByZWRpcmVjdCBTVERFUlI6ICQhXG4iIGFuZCBleGl0KDEpICk7Ci0gCi0gICAgIGV2YWwg eyAkZnJlZXplZCA9IGZyZWV6ZSAkb2JqWzBdLT5bMF0gfTsKLSAKLUBAIC0yMDQsNyArMTkyLDcg QEAgaXMocHJvdG90eXBlKCR0aGF3ZWQtPls0XSksIHByb3RvdHlwZSgkb2JqWzBdLT5bNF0pKTsK LSB9Ci0gCi0gewotLSAgICBteSAkc2FmZSA9IG5ldyBTYWZlOwotKyAgICBteSAkc2FmZSA9IFNh ZmUtPm5ldzsKLSAgICAgbG9jYWwgJFN0b3JhYmxlOjpFdmFsID0gc3ViIHsgJHNhZmUtPnJldmFs KHNoaWZ0KSB9OwotIAotICAgICAkZnJlZXplZCA9IGZyZWV6ZSAkb2JqWzBdLT5bMF07Ci1AQCAt MjE5LDI1ICsyMDcsMjUgQEAgaXMocHJvdG90eXBlKCR0aGF3ZWQtPls0XSksIHByb3RvdHlwZSgk b2JqWzBdLT5bNF0pKTsKLSAgICAgbGlrZSgkQCwgcXIvKHRyYXBwZWR8Q29kZSBzdWIpLyk7Ci0g Ci0gICAgIGlmICgwKSB7Ci0tCSMgRGlzYWJsZSBvciBmaXggdGhpcyB0ZXN0IGlmIHRoZSBpbnRl cm5hbCByZXByZXNlbnRhdGlvbiBvZiBTdG9yYWJsZQotLQkjIGNoYW5nZXMuCi0tCXNraXAoIm5v IG1hbGljaW91cyBzdG9yYWJsZSBmaWxlIGNoZWNrIiwgMSk7Ci0rICAgICAgICAjIERpc2FibGUg b3IgZml4IHRoaXMgdGVzdCBpZiB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgU3RvcmFi bGUKLSsgICAgICAgICMgY2hhbmdlcy4KLSsgICAgICAgIHNraXAoIm5vIG1hbGljaW91cyBzdG9y YWJsZSBmaWxlIGNoZWNrIiwgMSk7Ci0gICAgIH0gZWxzZSB7Ci0tCSMgQ29uc3RydWN0IG1hbGlj aW91cyBzdG9yYWJsZSBjb2RlCi0tCSRmcmVlemVkID0gbmZyZWV6ZSAkb2JqWzBdLT5bMF07Ci0t CW15ICRiYWRfY29kZSA9ICc7b3BlbiBGT08sICIvYmFkZmlsZSInOwotLQkjIDV0aCBieXRlIGlz IChzaG9ydCkgbGVuZ3RoIG9mIHNjYWxhcgotLQlteSAkbGVuID0gb3JkKHN1YnN0cigkZnJlZXpl ZCwgNCwgMSkpOwotLQlzdWJzdHIoJGZyZWV6ZWQsIDQsIDEsIGNocigkbGVuK2xlbmd0aCgkYmFk X2NvZGUpKSk7Ci0tCXN1YnN0cigkZnJlZXplZCwgLTEsIDAsICRiYWRfY29kZSk7Ci0tCSRAID0g IiI7Ci0tCWV2YWwgeyAkdGhhd2VkID0gdGhhdyAkZnJlZXplZCB9OwotLQlsaWtlKCRALCBxci8o dHJhcHBlZHxDb2RlIHN1YikvKTsKLSsgICAgICAgICMgQ29uc3RydWN0IG1hbGljaW91cyBzdG9y YWJsZSBjb2RlCi0rICAgICAgICAkZnJlZXplZCA9IG5mcmVlemUgJG9ialswXS0+WzBdOwotKyAg ICAgICAgbXkgJGJhZF9jb2RlID0gJztvcGVuIEZPTywgIi9iYWRmaWxlIic7Ci0rICAgICAgICAj IDV0aCBieXRlIGlzIChzaG9ydCkgbGVuZ3RoIG9mIHNjYWxhcgotKyAgICAgICAgbXkgJGxlbiA9 IG9yZChzdWJzdHIoJGZyZWV6ZWQsIDQsIDEpKTsKLSsgICAgICAgIHN1YnN0cigkZnJlZXplZCwg NCwgMSwgY2hyKCRsZW4rbGVuZ3RoKCRiYWRfY29kZSkpKTsKLSsgICAgICAgIHN1YnN0cigkZnJl ZXplZCwgLTEsIDAsICRiYWRfY29kZSk7Ci0rICAgICAgICAkQCA9ICIiOwotKyAgICAgICAgZXZh bCB7ICR0aGF3ZWQgPSB0aGF3ICRmcmVlemVkIH07Ci0rICAgICAgICBsaWtlKCRALCBxci8odHJh cHBlZHxDb2RlIHN1YikvKTsKLSAgICAgfQotIH0KLSAKLSB7Ci0tICAgIG15ICRzYWZlID0gbmV3 IFNhZmU7Ci0rICAgIG15ICRzYWZlID0gU2FmZS0+bmV3OwotICAgICAjIGJlY2F1c2Ugb2Ygb3Bj b2RlcyB1c2VkIGluICJ1c2Ugc3RyaWN0IjoKLSAgICAgJHNhZmUtPnBlcm1pdChxdyg6ZGVmYXVs dCByZXF1aXJlIGNhbGxlcikpOwotICAgICBsb2NhbCAkU3RvcmFibGU6OkV2YWwgPSBzdWIgeyAk c2FmZS0+cmV2YWwoc2hpZnQpIH07Ci1AQCAtMjUxLDE4ICsyMzksMTkgQEAgaXMocHJvdG90eXBl KCR0aGF3ZWQtPls0XSksIHByb3RvdHlwZSgkb2JqWzBdLT5bNF0pKTsKLSAKLSB7Ci0gICAgIHsK LS0JcGFja2FnZSBNeVNhZmU7Ci0tCXN1YiBuZXcgeyBibGVzcyB7fSwgc2hpZnQgfQotLQlzdWIg cmV2YWwgewotLQkgICAgbXkgJHNvdXJjZSA9ICRfWzFdOwotLQkgICAgIyBIZXJlIHlvdSBjYW4g YXBwbHkgc29tZSBuaWZ0eSByZWdleHBlcyB0byBlbnN1cmUgdGhlCi0tCSAgICAjIHNhZmVuZXNz IG9mIHRoZSBzb3VyY2UgY29kZS4KLS0JICAgIG15ICRjb2RlcmVmID0gZXZhbCAkc291cmNlOwot LQkgICAgJGNvZGVyZWY7Ci0tCX0KLSsgICAgICAgIHBhY2thZ2UgTXlTYWZlOwotKyAgICAgICAg c3ViIG5ldyB7IGJsZXNzIHt9LCBzaGlmdCB9Ci0rICAgICAgICBzdWIgcmV2YWwgewotKyAgICAg ICAgICAgIG15ICRzb3VyY2UgPSAkX1sxXTsKLSsgICAgICAgICAgICAjIEhlcmUgeW91IGNhbiBh cHBseSBzb21lIG5pZnR5IHJlZ2V4cGVzIHRvIGVuc3VyZSB0aGUKLSsgICAgICAgICAgICAjIHNh ZmVuZXNzIG9mIHRoZSBzb3VyY2UgY29kZS4KLSsgICAgICAgICAgICBubyB3YXJuaW5nczsKLSsg ICAgICAgICAgICBteSAkY29kZXJlZiA9IGV2YWwgJHNvdXJjZTsKLSsgICAgICAgICAgICAkY29k ZXJlZjsKLSsgICAgICAgIH0KLSAgICAgfQotIAotLSAgICBteSAkc2FmZSA9IG5ldyBNeVNhZmU7 Ci0rICAgIG15ICRzYWZlID0gTXlTYWZlLT5uZXc7Ci0gICAgIGxvY2FsICRTdG9yYWJsZTo6RXZh bCA9IHN1YiB7ICRzYWZlLT5yZXZhbCgkX1swXSkgfTsKLSAKLSAgICAgJGZyZWV6ZWQgPSBmcmVl emUgJG9ialswXTsKLUBAIC0yNzIsMTEgKzI2MSwxMSBAQCBpcyhwcm90b3R5cGUoJHRoYXdlZC0+ WzRdKSwgcHJvdG90eXBlKCRvYmpbMF0tPls0XSkpOwotICAgICBpZiAoJEAgbmUgIiIpIHsKLSAg ICAgICAgIGZhaWwoKSBmb3IgKDEuLjUpOwotICAgICB9IGVsc2UgewotLQlpcygkdGhhd2VkLT5b MF0tPigpLCAiSkFQSCIpOwotLQlpcygkdGhhd2VkLT5bMV0tPigpLCA0Mik7Ci0tCWlzKCR0aGF3 ZWQtPlsyXS0+KCksICJibGVzc2VkIik7Ci0tCWlzKCR0aGF3ZWQtPlszXS0+KCksICJBbm90aGVy OjpQYWNrYWdlIik7Ci0tCWlzKHByb3RvdHlwZSgkdGhhd2VkLT5bNF0pLCBwcm90b3R5cGUoJG9i alswXS0+WzRdKSk7Ci0rICAgICAgICBpcygkdGhhd2VkLT5bMF0tPigpLCAiSkFQSCIpOwotKyAg ICAgICAgaXMoJHRoYXdlZC0+WzFdLT4oKSwgNDIpOwotKyAgICAgICAgaXMoJHRoYXdlZC0+WzJd LT4oKSwgImJsZXNzZWQiKTsKLSsgICAgICAgIGlzKCR0aGF3ZWQtPlszXS0+KCksICJBbm90aGVy OjpQYWNrYWdlIik7Ci0rICAgICAgICBpcyhwcm90b3R5cGUoJHRoYXdlZC0+WzRdKSwgcHJvdG90 eXBlKCRvYmpbMF0tPls0XSkpOwotICAgICB9Ci0gfQotIAotQEAgLTI5MiwxOCArMjgxLDE4IEBA IGlzKHByb3RvdHlwZSgkdGhhd2VkLT5bNF0pLCBwcm90b3R5cGUoJG9ialswXS0+WzRdKSk7Ci0g ICAgIGxvY2FsICRTdG9yYWJsZTo6RXZhbCAgICA9IDE7Ci0gCi0gICAgIGZvciBteSAkc3ViICgk c2hvcnRfc3ViLCAkbG9uZ19zdWIpIHsKLS0JbXkgJHJlczsKLSsgICAgICAgIG15ICRyZXM7Ci0g Ci0tCSRyZXMgPSB0aGF3IGZyZWV6ZSBbJHN1YiwgJHN1Yl07Ci0tCWlzKGludCgkcmVzLT5bMF0p LCBpbnQoJHJlcy0+WzFdKSk7Ci0rICAgICAgICAkcmVzID0gdGhhdyBmcmVlemUgWyRzdWIsICRz dWJdOwotKyAgICAgICAgaXMoaW50KCRyZXMtPlswXSksIGludCgkcmVzLT5bMV0pKTsKLSAKLS0J JHJlcyA9IHRoYXcgZnJlZXplIFskc2NsciwgJHN1YiwgJHN1YiwgJHNjbHJdOwotLQlpcyhpbnQo JHJlcy0+WzBdKSwgaW50KCRyZXMtPlszXSkpOwotLQlpcyhpbnQoJHJlcy0+WzFdKSwgaW50KCRy ZXMtPlsyXSkpOwotKyAgICAgICAgJHJlcyA9IHRoYXcgZnJlZXplIFskc2NsciwgJHN1YiwgJHN1 YiwgJHNjbHJdOwotKyAgICAgICAgaXMoaW50KCRyZXMtPlswXSksIGludCgkcmVzLT5bM10pKTsK LSsgICAgICAgIGlzKGludCgkcmVzLT5bMV0pLCBpbnQoJHJlcy0+WzJdKSk7Ci0gCi0tCSRyZXMg PSB0aGF3IGZyZWV6ZSBbJHN1YiwgJHN1YiwgJHNjbHIsICRzY2xyXTsKLS0JaXMoaW50KCRyZXMt PlswXSksIGludCgkcmVzLT5bMV0pKTsKLS0JaXMoaW50KCRyZXMtPlsyXSksIGludCgkcmVzLT5b M10pKTsKLSsgICAgICAgICRyZXMgPSB0aGF3IGZyZWV6ZSBbJHN1YiwgJHN1YiwgJHNjbHIsICRz Y2xyXTsKLSsgICAgICAgIGlzKGludCgkcmVzLT5bMF0pLCBpbnQoJHJlcy0+WzFdKSk7Ci0rICAg ICAgICBpcyhpbnQoJHJlcy0+WzJdKSwgaW50KCRyZXMtPlszXSkpOwotICAgICB9Ci0gCi0gfQot ZGlmZiAtLWdpdCBhL3QvY29tcGF0MDEudCBiL3QvY29tcGF0MDEudAotaW5kZXggNTZkN2RmNi4u MWI1ZmM0MCAxMDA2NDQKLS0tLSBhL3QvY29tcGF0MDEudAotKysrIGIvdC9jb21wYXQwMS50Ci1A QCAtMSwyMiArMSwxNiBAQAotICMhcGVybCAtdwotIAotLUJFR0lOIHsKLS0gICAgdW5zaGlmdCBA SU5DLCAndCc7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QvY29tcGF0JyBpZiAkXSA8IDUuMDA2MDAy OwotLSAgICByZXF1aXJlIENvbmZpZzsgaW1wb3J0IENvbmZpZzsKLS0gICAgaWYgKCRFTlZ7UEVS TF9DT1JFfSBhbmQgJENvbmZpZ3snZXh0ZW5zaW9ucyd9ICF+IC9cYlN0b3JhYmxlXGIvKSB7Ci0t ICAgICAgICBwcmludCAiMS4uMCAjIFNraXA6IFN0b3JhYmxlIHdhcyBub3QgYnVpbHRcbiI7Ci0t ICAgICAgICBleGl0IDA7Ci0tICAgIH0KLSt1c2Ugc3RyaWN0OwotK3VzZSB3YXJuaW5nczsKLSAK LS0gICAgdXNlIENvbmZpZzsKLSt1c2UgQ29uZmlnOwotK0JFR0lOIHsKLSAgICAgaWYgKCRDb25m aWd7Ynl0ZW9yZGVyfSBuZSAiMTIzNCIpIHsKLS0JcHJpbnQgIjEuLjAgIyBTa2lwOiBUZXN0IG9u bHkgd29ya3MgZm9yIDMyIGJpdCBsaXR0bGUtZW5kaW5nIG1hY2hpbmVzXG4iOwotLQlleGl0IDA7 Ci0rICAgICAgICBwcmludCAiMS4uMCAjIFNraXA6IFRlc3Qgb25seSB3b3JrcyBmb3IgMzIgYml0 IGxpdHRsZS1lbmRpbmcgbWFjaGluZXNcbiI7Ci0rICAgICAgICBleGl0IDA7Ci0gICAgIH0KLSB9 Ci0gCi0tdXNlIHN0cmljdDsKLSB1c2UgU3RvcmFibGUgcXcocmV0cmlldmUpOwotIHVzZSBUZXN0 OjpNb3JlOwotIAotZGlmZiAtLWdpdCBhL3QvY29tcGF0MDYudCBiL3QvY29tcGF0MDYudAotaW5k ZXggZjg0NDZlZS4uYjgyZWUyZiAxMDA2NDQKLS0tLSBhL3QvY29tcGF0MDYudAotKysrIGIvdC9j b21wYXQwNi50Ci1AQCAtMSwyMCArMSwxMyBAQAotICMhLi9wZXJsCi0gIwotICMgIENvcHlyaWdo dCAoYykgMTk5NS0yMDAwLCBSYXBoYWVsIE1hbmZyZWRpCi0tIyAgCi0rIwotICMgIFlvdSBtYXkg cmVkaXN0cmlidXRlIG9ubHkgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCA1LCBhcyBzcGVj aWZpZWQKLSAjICBpbiB0aGUgUkVBRE1FIGZpbGUgdGhhdCBjb21lcyB3aXRoIHRoZSBkaXN0cmli dXRpb24uCi0gIwotIAotLUJFR0lOIHsKLS0gICAgdW5zaGlmdCBASU5DLCAndCc7Ci0tICAgIHVu c2hpZnQgQElOQywgJ3QvY29tcGF0JyBpZiAkXSA8IDUuMDA2MDAyOwotLSAgICByZXF1aXJlIENv bmZpZzsgaW1wb3J0IENvbmZpZzsKLS0gICAgaWYgKCRFTlZ7UEVSTF9DT1JFfSBhbmQgJENvbmZp Z3snZXh0ZW5zaW9ucyd9ICF+IC9cYlN0b3JhYmxlXGIvKSB7Ci0tICAgICAgICBwcmludCAiMS4u MCAjIFNraXA6IFN0b3JhYmxlIHdhcyBub3QgYnVpbHRcbiI7Ci0tICAgICAgICBleGl0IDA7Ci0t ICAgIH0KLS19Ci0rdXNlIHN0cmljdDsKLSt1c2Ugd2FybmluZ3M7Ci0gCi0gdXNlIFRlc3Q6Ok1v cmUgdGVzdHMgPT4gODsKLSAKLUBAIC0yMiw1MSArMTUsNTMgQEAgdXNlIFN0b3JhYmxlIHF3KGZy ZWV6ZSBuZnJlZXplIHRoYXcpOwotIAotIHBhY2thZ2UgVElFRF9IQVNIOwotIAotK291ciAkaGFz aF9mZXRjaDsKLSsKLSBzdWIgVElFSEFTSCB7Ci0tCW15ICRzZWxmID0gYmxlc3Mge30sIHNoaWZ0 OwotLQlyZXR1cm4gJHNlbGY7Ci0rICAgIG15ICRzZWxmID0gYmxlc3Mge30sIHNoaWZ0OwotKyAg ICByZXR1cm4gJHNlbGY7Ci0gfQotIAotIHN1YiBGRVRDSCB7Ci0tCW15ICRzZWxmID0gc2hpZnQ7 Ci0tCW15ICgka2V5KSA9IEBfOwotLQkkbWFpbjo6aGFzaF9mZXRjaCsrOwotLQlyZXR1cm4gJHNl bGYtPnska2V5fTsKLSsgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSsgICAgbXkgKCRrZXkpID0gQF87 Ci0rICAgICRoYXNoX2ZldGNoKys7Ci0rICAgIHJldHVybiAkc2VsZi0+eyRrZXl9OwotIH0KLSAK LSBzdWIgU1RPUkUgewotLQlteSAkc2VsZiA9IHNoaWZ0OwotLQlteSAoJGtleSwgJHZhbCkgPSBA XzsKLS0JJHNlbGYtPnska2V5fSA9ICR2YWw7Ci0rICAgIG15ICRzZWxmID0gc2hpZnQ7Ci0rICAg IG15ICgka2V5LCAkdmFsKSA9IEBfOwotKyAgICAkc2VsZi0+eyRrZXl9ID0gJHZhbDsKLSB9Ci0g Ci0gcGFja2FnZSBTSU1QTEU7Ci0gCi0gc3ViIG1ha2UgewotLQlteSAkc2VsZiA9IGJsZXNzIFtd LCBzaGlmdDsKLS0JbXkgKCR4KSA9IEBfOwotLQkkc2VsZi0+WzBdID0gJHg7Ci0tCXJldHVybiAk c2VsZjsKLSsgICAgbXkgJHNlbGYgPSBibGVzcyBbXSwgc2hpZnQ7Ci0rICAgIG15ICgkeCkgPSBA XzsKLSsgICAgJHNlbGYtPlswXSA9ICR4OwotKyAgICByZXR1cm4gJHNlbGY7Ci0gfQotIAotIHBh Y2thZ2UgUk9PVDsKLSAKLSBzdWIgbWFrZSB7Ci0tCW15ICRzZWxmID0gYmxlc3Mge30sIHNoaWZ0 OwotLQlteSAkaCA9IHRpZSAlaGFzaCwgVElFRF9IQVNIOwotLQkkc2VsZi0+e2h9ID0gJGg7Ci0t CSRzZWxmLT57cmVmfSA9IFwlaGFzaDsKLS0JbXkgQHBvb2w7Ci0tCWZvciAobXkgJGkgPSAwOyAk aSA8IDU7ICRpKyspIHsKLS0JCXB1c2goQHBvb2wsIFNJTVBMRS0+bWFrZSgkaSkpOwotLQl9Ci0t CSRzZWxmLT57b2JqfSA9IFxAcG9vbDsKLS0JbXkgQGEgPSAoJ3N0cmluZycsICRoLCAkc2VsZik7 Ci0tCSRzZWxmLT57YX0gPSBcQGE7Ci0tCSRzZWxmLT57bnVtfSA9IFsxLCAwLCAtMywgLTMuMTQx NTksIDQ1NiwgNC41XTsKLS0JJGgtPntrZXkxfSA9ICd2YWwxJzsKLS0JJGgtPntrZXkyfSA9ICd2 YWwyJzsKLS0JcmV0dXJuICRzZWxmOwotKyAgICBteSAkc2VsZiA9IGJsZXNzIHt9LCBzaGlmdDsK LSsgICAgbXkgJGggPSB0aWUgbXkgJWhhc2gsICdUSUVEX0hBU0gnOwotKyAgICAkc2VsZi0+e2h9 ID0gJGg7Ci0rICAgICRzZWxmLT57cmVmfSA9IFwlaGFzaDsKLSsgICAgbXkgQHBvb2w7Ci0rICAg IGZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKyspIHsKLSsgICAgICAgIHB1c2goQHBvb2wsIFNJ TVBMRS0+bWFrZSgkaSkpOwotKyAgICB9Ci0rICAgICRzZWxmLT57b2JqfSA9IFxAcG9vbDsKLSsg ICAgbXkgQGEgPSAoJ3N0cmluZycsICRoLCAkc2VsZik7Ci0rICAgICRzZWxmLT57YX0gPSBcQGE7 Ci0rICAgICRzZWxmLT57bnVtfSA9IFsxLCAwLCAtMywgLTMuMTQxNTksIDQ1NiwgNC41XTsKLSsg ICAgJGgtPntrZXkxfSA9ICd2YWwxJzsKLSsgICAgJGgtPntrZXkyfSA9ICd2YWwyJzsKLSsgICAg cmV0dXJuICRzZWxmOwotIH07Ci0gCi0gc3ViIG51bSB7ICRfWzBdLT57bnVtfSB9Ci1AQCAtNzcs MzMgKzcyLDMzIEBAIHN1YiBvYmogeyAkX1swXS0+e29ian0gfQotIHBhY2thZ2UgbWFpbjsKLSAK LSBteSAkaXNfRUJDRElDID0gKG9yZCgnQScpID09IDE5MykgPyAxIDogMDsKLS0gCi0rCi0gbXkg JHIgPSBST09ULT5tYWtlOwotIAotIG15ICRkYXRhID0gJyc7Ci0taWYgKCEkaXNfRUJDRElDKSB7 CQkJIyBBU0NJSSBtYWNoaW5lCi0tCXdoaWxlICg8REFUQT4pIHsKLS0JCW5leHQgaWYgL14jLzsK LS0JICAgICRkYXRhIC49IHVucGFjaygidSIsICRfKTsKLS0JfQotK2lmICghJGlzX0VCQ0RJQykg eyAgICAgICAgICAgICAgICAgICAgICAjIEFTQ0lJIG1hY2hpbmUKLSsgICAgd2hpbGUgKDxEQVRB PikgewotKyAgICAgICAgbmV4dCBpZiAvXiMvOwotKyAgICAgICAgJGRhdGEgLj0gdW5wYWNrKCJ1 IiwgJF8pOwotKyAgICB9Ci0gfSBlbHNlIHsKLS0Jd2hpbGUgKDxEQVRBPikgewotLQkJbmV4dCBp ZiAvXiMkLzsJCSMgc2tpcCBjb21tZW50cwotLQkJbmV4dCBpZiAvXiNccysvOwkjIHNraXAgY29t bWVudHMKLS0JCW5leHQgaWYgL15bXiNdLzsJIyBza2lwIHV1ZW5jb2RpbmcgZm9yIEFTQ0lJIG1h Y2hpbmVzCi0tCQlzL14jLy87CQkJCSMgcHJlcGFyZSB1dWVuY29kZWQgZGF0YSBmb3IgRUJDRElD IG1hY2hpbmVzCi0tCQkkZGF0YSAuPSB1bnBhY2soInUiLCAkXyk7Ci0tCX0KLSsgICAgd2hpbGUg KDxEQVRBPikgewotKyAgICAgICAgbmV4dCBpZiAvXiMkLzsgICAgICAgICAgIyBza2lwIGNvbW1l bnRzCi0rICAgICAgICBuZXh0IGlmIC9eI1xzKy87ICAgICAgICAjIHNraXAgY29tbWVudHMKLSsg ICAgICAgIG5leHQgaWYgL15bXiNdLzsgICAgICAgICMgc2tpcCB1dWVuY29kaW5nIGZvciBBU0NJ SSBtYWNoaW5lcwotKyAgICAgICAgcy9eIy8vOyAgICAgICAgICAgICAgICAgIyBwcmVwYXJlIHV1 ZW5jb2RlZCBkYXRhIGZvciBFQkNESUMgbWFjaGluZXMKLSsgICAgICAgICRkYXRhIC49IHVucGFj aygidSIsICRfKTsKLSsgICAgfQotIH0KLSAKLSBteSAkZXhwZWN0ZWRfbGVuZ3RoID0gJGlzX0VC Q0RJQyA/IDIxNyA6IDI3ODsKLSBpcyhsZW5ndGggJGRhdGEsICRleHBlY3RlZF9sZW5ndGgpOwot LSAgCi0rCi0gbXkgJHkgPSB0aGF3KCRkYXRhKTsKLSBpc250KCR5LCB1bmRlZik7Ci0gaXMocmVm ICR5LCAnUk9PVCcpOwotIAotLSRTdG9yYWJsZTo6Y2Fub25pY2FsID0gMTsJCSMgUHJldmVudCAi dXNlZCBvbmNlIiB3YXJuaW5nCi0rJFN0b3JhYmxlOjpjYW5vbmljYWwgPSAxOyAgICAgICAgICAg ICAgICMgUHJldmVudCAidXNlZCBvbmNlIiB3YXJuaW5nCi0gJFN0b3JhYmxlOjpjYW5vbmljYWwg PSAxOwotICMgQWxsb3cgZm9yIGxvbmcgZG91YmxlIHN0cmluZyBjb252ZXJzaW9ucy4KLSAkeS0+ e251bX0tPlszXSArPSAwOwotQEAgLTExMiwxMiArMTA3LDEyIEBAIGlzKG5mcmVlemUoJHkpLCBu ZnJlZXplKCRyKSk7Ci0gCi0gaXMoJHktPnJlZi0+e2tleTF9LCAndmFsMScpOwotIGlzKCR5LT5y ZWYtPntrZXkyfSwgJ3ZhbDInKTsKLS1pcygkaGFzaF9mZXRjaCwgMik7Ci0raXMoJFRJRURfSEFT SDo6aGFzaF9mZXRjaCwgMik7Ci0gCi0gbXkgJG51bSA9ICRyLT5udW07Ci0gbXkgJG9rID0gMTsK LSBmb3IgKG15ICRpID0gMDsgJGkgPCBAJG51bTsgJGkrKykgewotLQlkbyB7ICRvayA9IDA7IGxh c3QgfSB1bmxlc3MgJG51bS0+WyRpXSA9PSAkeS0+bnVtLT5bJGldOwotKyAgICBkbyB7ICRvayA9 IDA7IGxhc3QgfSB1bmxlc3MgJG51bS0+WyRpXSA9PSAkeS0+bnVtLT5bJGldOwotIH0KLSBpcygk b2ssIDEpOwotIAotZGlmZiAtLWdpdCBhL3QvY3JvYWsudCBiL3QvY3JvYWsudAotaW5kZXggZWNk MmJmOC4uNGJjMjI5ZiAxMDA2NDQKLS0tLSBhL3QvY3JvYWsudAotKysrIGIvdC9jcm9hay50Ci1A QCAtNSwzNCArNSwyNCBAQAotICMgd2l0aCA1LjAwNV8wMy4gVGhpcyB0ZXN0IHNob3dzIGl0IHVw LCB3aGVyZWFzIG1hbGljZS50IGRvZXMgbm90LgotICMgSW4gcGFydGljdWxhciwgZG9uJ3QgdXNl IFRlc3Q7IGFzIHRoaXMgY292ZXJzIHVwIHRoZSBwcm9ibGVtLgotIAotLXN1YiBCRUdJTiB7Ci0t ICAgIGlmICgkRU5We1BFUkxfQ09SRX0pIHsKLS0JcmVxdWlyZSBDb25maWc7IGltcG9ydCBDb25m aWc7Ci0tCSVDb25maWc9JUNvbmZpZyBpZiAwOyAjIGNlYXNlIC13Ci0tCWlmICgkQ29uZmlneydl eHRlbnNpb25zJ30gIX4gL1xiU3RvcmFibGVcYi8pIHsKLS0JICAgIHByaW50ICIxLi4wICMgU2tp cDogU3RvcmFibGUgd2FzIG5vdCBidWlsdFxuIjsKLS0JICAgIGV4aXQgMDsKLS0JfQotLSAgICB9 Ci0tfQotLQotIHVzZSBzdHJpY3Q7Ci0rI3VzZSB3YXJuaW5nczsgICMgYW5jaWVudCB3YXJuaW5n cyB3aWxsIGxvYWQgQ2FycAotIAotIEJFR0lOIHsKLS0gIGRpZSAiT2khIE5vISBEb24ndCBjaGFu Z2UgdGhpcyB0ZXN0IHNvIHRoYXQgQ2FycCBpcyB1c2VkIGJlZm9yZSBTdG9yYWJsZSIKLS0gICAg aWYgZGVmaW5lZCAmQ2FycDo6Y2FycDsKLSsgICAgZGllICJPaSEgTm8hIERvbid0IGNoYW5nZSB0 aGlzIHRlc3Qgc28gdGhhdCBDYXJwIGlzIHVzZWQgYmVmb3JlIFN0b3JhYmxlIgotKyAgICAgICAg aWYgZGVmaW5lZCAmQ2FycDo6Y2FycDsKLSB9Ci0gdXNlIFN0b3JhYmxlIHF3KGZyZWV6ZSB0aGF3 KTsKLSAKLSBwcmludCAiMS4uMlxuIjsKLSAKLSBmb3IgbXkgJHRlc3QgKDEsMikgewotLSAgZXZh bCB7dGhhdyAiXHhGRlx4RkYifTsKLS0gIGlmICgkQCA9fiAvU3RvcmFibGUgYmluYXJ5IGltYWdl IHYxMjcuMjU1IG1vcmUgcmVjZW50IHRoYW4gSSBhbSBcKHYyXC5cZCtcKS8pCi0tICAgIHsKLS0g ICAgICBwcmludCAib2sgJHRlc3RcbiI7Ci0tICAgIH0gZWxzZSB7Ci0tICAgICAgY2hvbXAgJEA7 Ci0tICAgICAgcHJpbnQgIm5vdCBvayAkdGVzdCAjIEV4cGVjdGVkIGEgbWVhbmluZ2Z1bCBjcm9h ay4gR290ICckQCdcbiI7Ci0rICAgIGV2YWwge3RoYXcgIlx4RkZceEZGIn07Ci0rICAgIGlmICgk QCA9fiAvU3RvcmFibGUgYmluYXJ5IGltYWdlIHYxMjcuMjU1IG1vcmUgcmVjZW50IHRoYW4gSSBh bSBcKHYyXC5cZCtcKS8pIHsKLSsgICAgICAgIHByaW50ICJvayAkdGVzdFxuIjsKLSsgICAgfQot KyAgICBlbHNlIHsKLSsgICAgICAgIGNob21wICRAOwotKyAgICAgICAgcHJpbnQgIm5vdCBvayAk dGVzdCAjIEV4cGVjdGVkIGEgbWVhbmluZ2Z1bCBjcm9hay4gR290ICckQCdcbiI7Ci0gICAgIH0K LSB9Ci1kaWZmIC0tZ2l0IGEvdC9kY2xvbmUudCBiL3QvZGNsb25lLnQKLWluZGV4IGNlNmM3NTYu LmFjN2U5M2MgMTAwNjQ0Ci0tLS0gYS90L2RjbG9uZS50Ci0rKysgYi90L2RjbG9uZS50Ci1AQCAt MSw2MSArMSw1OCBAQAotICMhLi9wZXJsCi0gIwotICMgIENvcHlyaWdodCAoYykgMTk5NS0yMDAw LCBSYXBoYWVsIE1hbmZyZWRpCi0tIyAgCi0rIwotICMgIFlvdSBtYXkgcmVkaXN0cmlidXRlIG9u bHkgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCA1LCBhcyBzcGVjaWZpZWQKLSAjICBpbiB0 aGUgUkVBRE1FIGZpbGUgdGhhdCBjb21lcyB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gIwotIAot K3VzZSBzdHJpY3Q7Ci0rdXNlIHdhcm5pbmdzOwotKwotIHN1YiBCRUdJTiB7Ci0tICAgIHVuc2hp ZnQgQElOQywgJ3QnOwotLSAgICB1bnNoaWZ0IEBJTkMsICd0L2NvbXBhdCcgaWYgJF0gPCA1LjAw NjAwMjsKLS0gICAgcmVxdWlyZSBDb25maWc7IGltcG9ydCBDb25maWc7Ci0tICAgIGlmICgkRU5W e1BFUkxfQ09SRX0gYW5kICRDb25maWd7J2V4dGVuc2lvbnMnfSAhfiAvXGJTdG9yYWJsZVxiLykg ewotLSAgICAgICAgcHJpbnQgIjEuLjAgIyBTa2lwOiBTdG9yYWJsZSB3YXMgbm90IGJ1aWx0XG4i OwotLSAgICAgICAgZXhpdCAwOwotLSAgICB9Ci0tICAgIHJlcXVpcmUgJ3N0LWR1bXAucGwnOwot KyAgICB1bnNoaWZ0IEBJTkMsICd0L2xpYic7Ci0gfQotIAotK3VzZSBTVER1bXA7Ci0gCi0gdXNl IFN0b3JhYmxlIHF3KGRjbG9uZSk7Ci0gCi0gdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMTQ7Ci0g Ci0tJGEgPSAndG90byc7Ci0tJGIgPSBcJGE7Ci0tJGMgPSBibGVzcyB7fSwgQ0xBU1M7Ci0rbXkg JGEgPSAndG90byc7Ci0rbXkgJGIgPSBcJGE7Ci0rbXkgJGMgPSBibGVzcyB7fSwgJ0NMQVNTJzsK LSAkYy0+e2F0dHJpYnV0ZX0gPSAnYXR0cnZhbCc7Ci0tJWEgPSAoJ2tleScsICd2YWx1ZScsIDEs IDAsICRhLCAkYiwgJ2N2YXInLCBcJGMpOwotLUBhID0gKCdmaXJzdCcsIHVuZGVmLCAzLCAtNCwg LTMuMTQxNTksIDQ1NiwgNC41LAotLQkkYiwgXCRhLCAkYSwgJGMsIFwkYywgXCVhKTsKLStteSAl YSA9ICgna2V5JywgJ3ZhbHVlJywgMSwgMCwgJGEsICRiLCAnY3ZhcicsIFwkYyk7Ci0rbXkgQGEg PSAoJ2ZpcnN0JywgdW5kZWYsIDMsIC00LCAtMy4xNDE1OSwgNDU2LCA0LjUsCi0rICAgICRiLCBc JGEsICRhLCAkYywgXCRjLCBcJWEpOwotIAotIG15ICRhcmVmID0gZGNsb25lKFxAYSk7Ci0gaXNu dCgkYXJlZiwgdW5kZWYpOwotIAotLSRkdW1wZWQgPSAmZHVtcChcQGEpOwotK215ICRkdW1wZWQg PSBzdGR1bXAoXEBhKTsKLSBpc250KCRkdW1wZWQsIHVuZGVmKTsKLSAKLS0kZ290ID0gJmR1bXAo JGFyZWYpOwotK215ICRnb3QgPSBzdGR1bXAoJGFyZWYpOwotIGlzbnQoJGdvdCwgdW5kZWYpOwot IAotIGlzKCRnb3QsICRkdW1wZWQpOwotIAotLXBhY2thZ2UgRk9POyBASVNBID0gcXcoU3RvcmFi bGUpOwotK3BhY2thZ2UgRk9POyBvdXIgQElTQSA9IHF3KFN0b3JhYmxlKTsKLSAKLSBzdWIgbWFr ZSB7Ci0tCW15ICRzZWxmID0gYmxlc3Mge307Ci0tCSRzZWxmLT57a2V5fSA9IFwlbWFpbjo6YTsK LS0JcmV0dXJuICRzZWxmOwotKyAgICBteSAkc2VsZiA9IGJsZXNzIHt9OwotKyAgICAkc2VsZi0+ e2tleX0gPSBcJWE7Ci0rICAgIHJldHVybiAkc2VsZjsKLSB9OwotIAotIHBhY2thZ2UgbWFpbjsK LSAKLS0kZm9vID0gRk9PLT5tYWtlOwotK215ICRmb28gPSBGT08tPm1ha2U7Ci0gbXkgJHIgPSAk Zm9vLT5kY2xvbmU7Ci0gaXNudCgkciwgdW5kZWYpOwotIAotLWlzKCZkdW1wKCRmb28pLCAmZHVt cCgkcikpOwotK2lzKHN0ZHVtcCgkZm9vKSwgc3RkdW1wKCRyKSk7Ci0gCi0gIyBFbnN1cmUgcmVm cyB0byAidW5kZWYiIHZhbHVlcyBhcmUgcHJvcGVybHkgc2hhcmVkIGR1cmluZyBjbG9uaW5nCi0g bXkgJGhhc2g7Ci1AQCAtODYsOSArODMsOSBAQCBpcygkJGNsb25lLCAnJyk7Ci0gU0tJUDogewot ICMgRG8gbm90IGZhaWwgaWYgVGllOjpIYXNoIGFuZC9vciBUaWU6OlN0ZEhhc2ggaXMgbm90IGF2 YWlsYWJsZQotICAgICBza2lwICdObyBUaWU6OlN0ZEhhc2ggYXZhaWxhYmxlJywgMgotLQl1bmxl c3MgZXZhbCB7IHJlcXVpcmUgVGllOjpIYXNoOyBzY2FsYXIga2V5cyAlVGllOjpTdGRIYXNoOjog fTsKLSsgICAgICAgIHVubGVzcyBldmFsIHsgcmVxdWlyZSBUaWU6Okhhc2g7IHNjYWxhciBrZXlz ICVUaWU6OlN0ZEhhc2g6OiB9OwotICAgICBza2lwICdUaGlzIHZlcnNpb24gb2YgcGVybCBoYXMg cHJvYmxlbXMgd2l0aCBUaWU6OlN0ZEhhc2gnLCAyCi0tCWlmICRdIGVxICI1LjAwOCI7Ci0rICAg ICAgICBpZiAkXSBlcSAiNS4wMDgiOwotICAgICB0aWUgbXkgJXRpZSwgIlRpZTo6U3RkSGFzaCIg b3IgZGllICQhOwotICAgICAkdGlle2FycmF5fSA9IFsxLDIsMyw0XTsKLSAgICAgJHRpZXtoYXNo fSA9IHsxLDIsMyw0fTsKLWRpZmYgLS1naXQgYS90L2Rlc3Ryb3kudCBiL3QvZGVzdHJveS50Ci1p bmRleCBkY2MzNjAwLi5iNDhiMjJkIDEwMDY0NAotLS0tIGEvdC9kZXN0cm95LnQKLSsrKyBiL3Qv ZGVzdHJveS50Ci1AQCAtMSwyMCArMSwyMyBAQAotICMgW3BlcmwgIzExODEzOV0gY3Jhc2ggaW4g Z2xvYmFsIGRlc3RydWN0aW9uIHdoZW4gYWNjZXNzaW5nIHRoZSBmcmVlZCBjeHQuCi0rdXNlIHN0 cmljdDsKLSt1c2Ugd2FybmluZ3M7Ci0rCi0gdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMTsKLSB1 c2UgU3RvcmFibGU7Ci0gQkVHSU4gewotLSAgc3RvcmUge30sICJmb28iOwotKyAgICBzdG9yZSB7 fSwgImZvbyI7Ci0gfQotIHBhY2thZ2UgZm9vOwotIHN1YiBuZXcgeyByZXR1cm4gYmxlc3Mge30g fQotIERFU1RST1kgewotLSAgb3BlbiBGSCwgJzwnLCAiZm9vIiBvciBkaWUgJCE7Ci0tICBldmFs IHsgU3RvcmFibGU6OnByZXRyaWV2ZSgqRkgpOyB9OwotLSAgY2xvc2UgRkggb3IgZGllICQhOwot LSAgdW5saW5rICJmb28iOwotKyAgICBvcGVuIEZILCAnPCcsICJmb28iIG9yIGRpZSAkITsKLSsg ICAgZXZhbCB7IFN0b3JhYmxlOjpwcmV0cmlldmUoKkZIKTsgfTsKLSsgICAgY2xvc2UgRkggb3Ig ZGllICQhOwotKyAgICB1bmxpbmsgImZvbyI7Ci0gfQotIAotIHBhY2thZ2UgbWFpbjsKLSAjIHBy aW50ICIjICReWFxuIjsKLS0keCA9IGZvby0+bmV3KCk7Ci0rbXkgJHggPSBmb28tPm5ldygpOwot IAotIG9rKDEpOwotZGlmZiAtLWdpdCBhL3QvZG93bmdyYWRlLnQgYi90L2Rvd25ncmFkZS50Ci1p bmRleCA0M2EzMmVkLi5iZjQwYTBjIDEwMDY0NAotLS0tIGEvdC9kb3duZ3JhZGUudAotKysrIGIv dC9kb3duZ3JhZGUudAotQEAgLTYsNTIgKzYsNDIgQEAKLSAjICBpbiB0aGUgUkVBRE1FIGZpbGUg dGhhdCBjb21lcyB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gIwotIAotLSMgSSBvdWdodCB0byBr ZWVwIHRoaXMgdGVzdCBlYXNpbHkgYmFja3dhcmRzIGNvbXBhdGlibGUgdG8gNS4wMDQsIHNvIG5v Ci0tIyBxci8vOwotLQotICMgVGhpcyB0ZXN0IGNoZWNrcyBkb3duZ3JhZGUgYmVoYXZpb3VyIG9u IHByZS01LjggcGVybHMgd2hlbiBuZXcgNS44IGZlYXR1cmVzCi0gIyBhcmUgZW5jb3VudGVyZWQu Ci0gCi0tc3ViIEJFR0lOIHsKLS0gICAgdW5zaGlmdCBASU5DLCAndCc7Ci0tICAgIHVuc2hpZnQg QElOQywgJ3QvY29tcGF0JyBpZiAkXSA8IDUuMDA2MDAyOwotLSAgICByZXF1aXJlIENvbmZpZzsg aW1wb3J0IENvbmZpZzsKLS0gICAgaWYgKCRFTlZ7UEVSTF9DT1JFfSBhbmQgJENvbmZpZ3snZXh0 ZW5zaW9ucyd9ICF+IC9cYlN0b3JhYmxlXGIvKSB7Ci0tICAgICAgICBwcmludCAiMS4uMCAjIFNr aXA6IFN0b3JhYmxlIHdhcyBub3QgYnVpbHRcbiI7Ci0tICAgICAgICBleGl0IDA7Ci0tICAgIH0K LS19Ci0rdXNlIHN0cmljdDsKLSt1c2Ugd2FybmluZ3M7Ci0gCi0gdXNlIFRlc3Q6Ok1vcmU7Ci0g dXNlIFN0b3JhYmxlICd0aGF3JzsKLSAKLS11c2Ugc3RyaWN0OwotIG91ciAoJVVfSEFTSCwgJFVU RjhfQ1JPQUssICRSRVNUUklDVEVEX0NST0FLKTsKLSAKLS1vdXIgQFJFU1RSSUNUX1RFU1RTID0g KCdMb2NrZWQgaGFzaCcsICdMb2NrZWQgaGFzaCBwbGFjZWhvbGRlcicsCi0tICAgICAgICAgICAg ICAgICAgICdMb2NrZWQga2V5cycsICdMb2NrZWQga2V5cyBwbGFjZWhvbGRlcicsCi0tICAgICAg ICAgICAgICAgICAgKTsKLStvdXIgQFJFU1RSSUNUX1RFU1RTID0gKAotKyAgICAnTG9ja2VkIGhh c2gnLCAnTG9ja2VkIGhhc2ggcGxhY2Vob2xkZXInLAotKyAgICAnTG9ja2VkIGtleXMnLCAnTG9j a2VkIGtleXMgcGxhY2Vob2xkZXInLAotKyk7Ci0gb3VyICVSX0hBU0ggPSAocGVybCA9PiAncnVs ZXMnKTsKLSAKLSBpZiAoJF0gPiA1LjAwNzAwMikgewotLSAgIyBUaGlzIGlzIGNoZWF0aW5nLiAi XHhkZiIgaW4gTGF0aW4gMSBpcyBiZXRhIFMsIHNvIHdpbGwgbWF0Y2ggXHcgaWYgaXQKLS0gICMg aXMgc3RvcmVkIGluIHV0ZjgsIG5vdCBieXRlcy4KLS0gICMgIlx4ZGYiIGlzIHkgZGlhcmVzaXMg aW4gRUJDRElDIChleGNlcHQgZm9yIGNwODc1LCBidXQgc28gZmFyIG5vLW9uZSBzZWVtcwotLSAg IyB0byB1c2UgdGhhdCkgd2hpY2ggaGFzIGV4YWN0bHkgdGhlIHNhbWUgcHJvcGVydGllcyBmb3Ig XHcKLS0gICMgU28gdGhlIHRlc3RzIGhhcHBlbiB0byBwYXNzLgotLSAgbXkgJHV0ZjggPSAiU2No bG9ceGRmIiAuIGNociAyNTY7Ci0tICBjaG9wICR1dGY4OwotLQotLSAgIyBceGU1IGlzIFYgaW4g RUJDRElDLiBUaGF0IGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIHcuci50LiBcdyBh cwotLSAgIyBhbiBhIGNpcmN1bWZsZXgsIHNvIHdlIG5lZWQgdG8gYmUgZXhwbGljaXQuCi0tCi0t ICAjIGFuZCBpdHMgdGhlc2UgdmVyeSBwcm9wZXJ0aWVzIHdlJ3JlIHRyeWluZyB0byB0ZXN0IC0g YW4gZWRnZSBjYXNlCi0tICAjIGludm9sdmluZyB3aGV0aGVyIHNjYWxhcnMgYXJlIGJlaW5nIHN0 b3JlZCBpbiBieXRlcyBvciBpbiB1dGY4LgotLSAgbXkgJGFfY2lyY3VtZmxleCA9IChvcmQgKCdB JykgPT0gMTkzID8gIlx4NDciIDogIlx4ZTUiKTsKLS0gICVVX0hBU0ggPSAobWFwIHskXywgJF99 ICdjYXN0bGUnLCAiY2gke2FfY2lyY3VtZmxleH10ZWF1IiwgJHV0ZjgsIGNociAweDU3Q0UpOwot LSAgcGxhbiB0ZXN0cyA9PiAxNjk7Ci0rICAgICMgVGhpcyBpcyBjaGVhdGluZy4gIlx4ZGYiIGlu IExhdGluIDEgaXMgYmV0YSBTLCBzbyB3aWxsIG1hdGNoIFx3IGlmIGl0Ci0rICAgICMgaXMgc3Rv cmVkIGluIHV0ZjgsIG5vdCBieXRlcy4KLSsgICAgIyAiXHhkZiIgaXMgeSBkaWFyZXNpcyBpbiBF QkNESUMgKGV4Y2VwdCBmb3IgY3A4NzUsIGJ1dCBzbyBmYXIgbm8tb25lIHNlZW1zCi0rICAgICMg dG8gdXNlIHRoYXQpIHdoaWNoIGhhcyBleGFjdGx5IHRoZSBzYW1lIHByb3BlcnRpZXMgZm9yIFx3 Ci0rICAgICMgU28gdGhlIHRlc3RzIGhhcHBlbiB0byBwYXNzLgotKyAgICBteSAkdXRmOCA9ICJT Y2hsb1x4ZGYiIC4gY2hyIDI1NjsKLSsgICAgY2hvcCAkdXRmODsKLSsKLSsgICAgIyBceGU1IGlz IFYgaW4gRUJDRElDLiBUaGF0IGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIHcuci50 LiBcdyBhcwotKyAgICAjIGFuIGEgY2lyY3VtZmxleCwgc28gd2UgbmVlZCB0byBiZSBleHBsaWNp dC4KLSsKLSsgICAgIyBhbmQgaXRzIHRoZXNlIHZlcnkgcHJvcGVydGllcyB3ZSdyZSB0cnlpbmcg dG8gdGVzdCAtIGFuIGVkZ2UgY2FzZQotKyAgICAjIGludm9sdmluZyB3aGV0aGVyIHNjYWxhcnMg YXJlIGJlaW5nIHN0b3JlZCBpbiBieXRlcyBvciBpbiB1dGY4LgotKyAgICBteSAkYV9jaXJjdW1m bGV4ID0gKG9yZCAoJ0EnKSA9PSAxOTMgPyAiXHg0NyIgOiAiXHhlNSIpOwotKyAgICAlVV9IQVNI ID0gKG1hcCB7JF8sICRffSAnY2FzdGxlJywgImNoJHthX2NpcmN1bWZsZXh9dGVhdSIsICR1dGY4 LCBjaHIgMHg1N0NFKTsKLSsgICAgcGxhbiB0ZXN0cyA9PiAxNjk7Ci0gfSBlbHNlIHsKLS0gIHBs YW4gdGVzdHMgPT4gNTk7Ci0rICAgIHBsYW4gdGVzdHMgPT4gNTk7Ci0gfQotIAotICRVVEY4X0NS T0FLID0gIi9eQ2Fubm90IHJldHJpZXZlIFVURjggZGF0YSBpbiBub24tVVRGOCBwZXJsLyI7Ci1A QCAtNTksMTIyICs0OSwxMjIgQEAgJFJFU1RSSUNURURfQ1JPQUsgPSAiL15DYW5ub3QgcmV0cmll dmUgcmVzdHJpY3RlZCBoYXNoLyI7Ci0gCi0gbXkgJXRlc3RzOwotIHsKLS0gIGxvY2FsICQvID0g IlxuXG5lbmRcbiI7Ci0tICB3aGlsZSAoPERBVEE+KSB7Ci0tICAgIG5leHQgdW5sZXNzIC9cUy9z OwotLSAgICB1bmxlc3MgKC9iZWdpbiAoWzAtN117M30pIChbXlxuXSopXG4oLiopJC9zKSB7Ci0t ICAgICAgcy9cbi4qLy9zOwotLSAgICAgIHdhcm4gIkRvZGd5IGRhdGEgaW4gc2VjdGlvbiBzdGFy dGluZyAnJF8nIjsKLS0gICAgICBuZXh0OwotKyAgICBsb2NhbCAkLyA9ICJcblxuZW5kXG4iOwot KyAgICB3aGlsZSAoPERBVEE+KSB7Ci0rICAgICAgICBuZXh0IHVubGVzcyAvXFMvczsKLSsgICAg ICAgIHVubGVzcyAoL2JlZ2luIChbMC03XXszfSkgKFteXG5dKilcbiguKikkL3MpIHsKLSsgICAg ICAgICAgICBzL1xuLiovL3M7Ci0rICAgICAgICAgICAgd2FybiAiRG9kZ3kgZGF0YSBpbiBzZWN0 aW9uIHN0YXJ0aW5nICckXyciOwotKyAgICAgICAgICAgIG5leHQ7Ci0rICAgICAgICB9Ci0rICAg ICAgICBuZXh0IHVubGVzcyBvY3QgJDEgPT0gb3JkICdBJzsgIyBTa2lwIEFTQ0lJIG9uIEVCQ0RJ QywgYW5kIHZpY2UgdmVyc2EKLSsgICAgICAgIG15ICRkYXRhID0gdW5wYWNrICd1JywgJDM7Ci0r ICAgICAgICAkdGVzdHN7JDJ9ID0gJGRhdGE7Ci0gICAgIH0KLS0gICAgbmV4dCB1bmxlc3Mgb2N0 ICQxID09IG9yZCAnQSc7ICMgU2tpcCBBU0NJSSBvbiBFQkNESUMsIGFuZCB2aWNlIHZlcnNhCi0t ICAgIG15ICRkYXRhID0gdW5wYWNrICd1JywgJDM7Ci0tICAgICR0ZXN0c3skMn0gPSAkZGF0YTsK LS0gIH0KLSB9Ci0gCi0gIyB1c2UgRGF0YTo6RHVtcGVyOyAkRGF0YTo6RHVtcGVyOjpVc2VxcSA9 IDE7IHByaW50IER1bXBlciBcJXRlc3RzOwotIHN1YiB0aGF3X2hhc2ggewotLSAgbXkgKCRuYW1l LCAkZXhwZWN0ZWQpID0gQF87Ci0tICBteSAkaGFzaCA9IGV2YWwge3RoYXcgJHRlc3RzeyRuYW1l fX07Ci0tICBpcyAoJEAsICcnLCAiVGhhd2VkICRuYW1lIHdpdGhvdXQgZXJyb3I/Iik7Ci0tICBp c2Ffb2sgKCRoYXNoLCAnSEFTSCcpOwotLSAgb2sgKGRlZmluZWQgJGhhc2ggJiYgZXFfaGFzaCgk aGFzaCwgJGV4cGVjdGVkKSwKLS0gICAgICAiQW5kIGl0IGlzIHRoZSBoYXNoIHdlIGV4cGVjdGVk PyIpOwotLSAgJGhhc2g7Ci0rICAgIG15ICgkbmFtZSwgJGV4cGVjdGVkKSA9IEBfOwotKyAgICBt eSAkaGFzaCA9IGV2YWwge3RoYXcgJHRlc3RzeyRuYW1lfX07Ci0rICAgIGlzICgkQCwgJycsICJU aGF3ZWQgJG5hbWUgd2l0aG91dCBlcnJvcj8iKTsKLSsgICAgaXNhX29rICgkaGFzaCwgJ0hBU0gn KTsKLSsgICAgb2sgKGRlZmluZWQgJGhhc2ggJiYgZXFfaGFzaCgkaGFzaCwgJGV4cGVjdGVkKSwK LSsgICAgICAgICJBbmQgaXQgaXMgdGhlIGhhc2ggd2UgZXhwZWN0ZWQ/Iik7Ci0rICAgICRoYXNo OwotIH0KLSAKLSBzdWIgdGhhd19zY2FsYXIgewotLSAgbXkgKCRuYW1lLCAkZXhwZWN0ZWQsICRi dWcpID0gQF87Ci0tICBteSAkc2NhbGFyID0gZXZhbCB7dGhhdyAkdGVzdHN7JG5hbWV9fTsKLS0g IGlzICgkQCwgJycsICJUaGF3ZWQgJG5hbWUgd2l0aG91dCBlcnJvcj8iKTsKLS0gIGlzYV9vayAo JHNjYWxhciwgJ1NDQUxBUicsICJUaGF3ZWQgJG5hbWU/Iik7Ci0tICBpcyAoJCRzY2FsYXIsICRl eHBlY3RlZCwgIkFuZCBpdCBpcyB0aGUgZGF0YSB3ZSBleHBlY3RlZD8iKTsKLS0gICRzY2FsYXI7 Ci0rICAgIG15ICgkbmFtZSwgJGV4cGVjdGVkLCAkYnVnKSA9IEBfOwotKyAgICBteSAkc2NhbGFy ID0gZXZhbCB7dGhhdyAkdGVzdHN7JG5hbWV9fTsKLSsgICAgaXMgKCRALCAnJywgIlRoYXdlZCAk bmFtZSB3aXRob3V0IGVycm9yPyIpOwotKyAgICBpc2Ffb2sgKCRzY2FsYXIsICdTQ0FMQVInLCAi VGhhd2VkICRuYW1lPyIpOwotKyAgICBpcyAoJCRzY2FsYXIsICRleHBlY3RlZCwgIkFuZCBpdCBp cyB0aGUgZGF0YSB3ZSBleHBlY3RlZD8iKTsKLSsgICAgJHNjYWxhcjsKLSB9Ci0gCi0gc3ViIHRo YXdfZmFpbCB7Ci0tICBteSAoJG5hbWUsICRleHBlY3RlZCkgPSBAXzsKLS0gIG15ICR0aGluZyA9 IGV2YWwge3RoYXcgJHRlc3RzeyRuYW1lfX07Ci0tICBpcyAoJHRoaW5nLCB1bmRlZiwgIlRoYXdl ZCAkbmFtZSBmYWlsZWQgYXMgZXhwZWN0ZWQ/Iik7Ci0tICBsaWtlICgkQCwgJGV4cGVjdGVkLCAi RXJyb3IgYXMgcHJlZGljdGVkPyIpOwotKyAgICBteSAoJG5hbWUsICRleHBlY3RlZCkgPSBAXzsK LSsgICAgbXkgJHRoaW5nID0gZXZhbCB7dGhhdyAkdGVzdHN7JG5hbWV9fTsKLSsgICAgaXMgKCR0 aGluZywgdW5kZWYsICJUaGF3ZWQgJG5hbWUgZmFpbGVkIGFzIGV4cGVjdGVkPyIpOwotKyAgICBs aWtlICgkQCwgJGV4cGVjdGVkLCAiRXJyb3IgYXMgcHJlZGljdGVkPyIpOwotIH0KLSAKLSBzdWIg dGVzdF9sb2NrZWRfaGFzaCB7Ci0tICBteSAkaGFzaCA9IHNoaWZ0OwotLSAgbXkgQGtleXMgPSBr ZXlzICUkaGFzaDsKLS0gIG15ICgka2V5LCAkdmFsdWUpID0gZWFjaCAlJGhhc2g7Ci0tICBldmFs IHskaGFzaC0+eyRrZXl9ID0gcmV2ZXJzZSAkdmFsdWV9OwotLSAgbGlrZSggJEAsICIvXk1vZGlm aWNhdGlvbiBvZiBhIHJlYWQtb25seSB2YWx1ZSBhdHRlbXB0ZWQvIiwKLSsgICAgbXkgJGhhc2gg PSBzaGlmdDsKLSsgICAgbXkgQGtleXMgPSBrZXlzICUkaGFzaDsKLSsgICAgbXkgKCRrZXksICR2 YWx1ZSkgPSBlYWNoICUkaGFzaDsKLSsgICAgZXZhbCB7JGhhc2gtPnska2V5fSA9IHJldmVyc2Ug JHZhbHVlfTsKLSsgICAgbGlrZSggJEAsICIvXk1vZGlmaWNhdGlvbiBvZiBhIHJlYWQtb25seSB2 YWx1ZSBhdHRlbXB0ZWQvIiwKLSAgICAgICAgICd0cnlpbmcgdG8gY2hhbmdlIGEgbG9ja2VkIGtl eScgKTsKLS0gIGlzICgkaGFzaC0+eyRrZXl9LCAkdmFsdWUsICJoYXNoIHNob3VsZCBub3QgY2hh bmdlPyIpOwotLSAgZXZhbCB7JGhhc2gtPnt1c2V9ID0gJ3BlcmwnfTsKLS0gIGxpa2UoICRALCAi L15BdHRlbXB0IHRvIGFjY2VzcyBkaXNhbGxvd2VkIGtleSAndXNlJyBpbiBhIHJlc3RyaWN0ZWQg aGFzaC8iLAotKyAgICBpcyAoJGhhc2gtPnska2V5fSwgJHZhbHVlLCAiaGFzaCBzaG91bGQgbm90 IGNoYW5nZT8iKTsKLSsgICAgZXZhbCB7JGhhc2gtPnt1c2V9ID0gJ3BlcmwnfTsKLSsgICAgbGlr ZSggJEAsICIvXkF0dGVtcHQgdG8gYWNjZXNzIGRpc2FsbG93ZWQga2V5ICd1c2UnIGluIGEgcmVz dHJpY3RlZCBoYXNoLyIsCi0gICAgICAgICAndHJ5aW5nIHRvIGFkZCBhbm90aGVyIGtleScgKTsK LS0gIG9rIChlcV9hcnJheShba2V5cyAlJGhhc2hdLCBcQGtleXMpLCAiU3RpbGwgdGhlIHNhbWUg a2V5cz8iKTsKLSsgICAgb2sgKGVxX2FycmF5KFtrZXlzICUkaGFzaF0sIFxAa2V5cyksICJTdGls bCB0aGUgc2FtZSBrZXlzPyIpOwotIH0KLSAKLSBzdWIgdGVzdF9yZXN0cmljdGVkX2hhc2ggewot LSAgbXkgJGhhc2ggPSBzaGlmdDsKLS0gIG15IEBrZXlzID0ga2V5cyAlJGhhc2g7Ci0tICBteSAo JGtleSwgJHZhbHVlKSA9IGVhY2ggJSRoYXNoOwotLSAgZXZhbCB7JGhhc2gtPnska2V5fSA9IHJl dmVyc2UgJHZhbHVlfTsKLS0gIGlzKCAkQCwgJycsCi0rICAgIG15ICRoYXNoID0gc2hpZnQ7Ci0r ICAgIG15IEBrZXlzID0ga2V5cyAlJGhhc2g7Ci0rICAgIG15ICgka2V5LCAkdmFsdWUpID0gZWFj aCAlJGhhc2g7Ci0rICAgIGV2YWwgeyRoYXNoLT57JGtleX0gPSByZXZlcnNlICR2YWx1ZX07Ci0r ICAgIGlzKCAkQCwgJycsCi0gICAgICAgICAndHJ5aW5nIHRvIGNoYW5nZSBhIHJlc3RyaWN0ZWQg a2V5JyApOwotLSAgaXMgKCRoYXNoLT57JGtleX0sIHJldmVyc2UgKCR2YWx1ZSksICJoYXNoIHNo b3VsZCBjaGFuZ2UiKTsKLS0gIGV2YWwgeyRoYXNoLT57dXNlfSA9ICdwZXJsJ307Ci0tICBsaWtl KCAkQCwgIi9eQXR0ZW1wdCB0byBhY2Nlc3MgZGlzYWxsb3dlZCBrZXkgJ3VzZScgaW4gYSByZXN0 cmljdGVkIGhhc2gvIiwKLSsgICAgaXMgKCRoYXNoLT57JGtleX0sIHJldmVyc2UgKCR2YWx1ZSks ICJoYXNoIHNob3VsZCBjaGFuZ2UiKTsKLSsgICAgZXZhbCB7JGhhc2gtPnt1c2V9ID0gJ3Blcmwn fTsKLSsgICAgbGlrZSggJEAsICIvXkF0dGVtcHQgdG8gYWNjZXNzIGRpc2FsbG93ZWQga2V5ICd1 c2UnIGluIGEgcmVzdHJpY3RlZCBoYXNoLyIsCi0gICAgICAgICAndHJ5aW5nIHRvIGFkZCBhbm90 aGVyIGtleScgKTsKLS0gIG9rIChlcV9hcnJheShba2V5cyAlJGhhc2hdLCBcQGtleXMpLCAiU3Rp bGwgdGhlIHNhbWUga2V5cz8iKTsKLSsgICAgb2sgKGVxX2FycmF5KFtrZXlzICUkaGFzaF0sIFxA a2V5cyksICJTdGlsbCB0aGUgc2FtZSBrZXlzPyIpOwotIH0KLSAKLSBzdWIgdGVzdF9wbGFjZWhv bGRlciB7Ci0tICBteSAkaGFzaCA9IHNoaWZ0OwotLSAgZXZhbCB7JGhhc2gtPntydWxlc30gPSA0 Mn07Ci0tICBpcyAoJEAsICcnLCAnTm8gZXJyb3JzJyk7Ci0tICBpcyAoJGhhc2gtPntydWxlc30s IDQyLCAiTmV3IHZhbHVlIGFkZGVkIik7Ci0rICAgIG15ICRoYXNoID0gc2hpZnQ7Ci0rICAgIGV2 YWwgeyRoYXNoLT57cnVsZXN9ID0gNDJ9OwotKyAgICBpcyAoJEAsICcnLCAnTm8gZXJyb3JzJyk7 Ci0rICAgIGlzICgkaGFzaC0+e3J1bGVzfSwgNDIsICJOZXcgdmFsdWUgYWRkZWQiKTsKLSB9Ci0g Ci0gc3ViIHRlc3RfbmV3a2V5IHsKLS0gIG15ICRoYXNoID0gc2hpZnQ7Ci0tICBldmFsIHskaGFz aC0+e25tc30gPSAiaHR0cDovL25tcy1jZ2kuc291cmNlZm9yZ2UubmV0LyJ9OwotLSAgaXMgKCRA LCAnJywgJ05vIGVycm9ycycpOwotLSAgaXMgKCRoYXNoLT57bm1zfSwgImh0dHA6Ly9ubXMtY2dp LnNvdXJjZWZvcmdlLm5ldC8iLCAiTmV3IHZhbHVlIGFkZGVkIik7Ci0rICAgIG15ICRoYXNoID0g c2hpZnQ7Ci0rICAgIGV2YWwgeyRoYXNoLT57bm1zfSA9ICJodHRwOi8vbm1zLWNnaS5zb3VyY2Vm b3JnZS5uZXQvIn07Ci0rICAgIGlzICgkQCwgJycsICdObyBlcnJvcnMnKTsKLSsgICAgaXMgKCRo YXNoLT57bm1zfSwgImh0dHA6Ly9ubXMtY2dpLnNvdXJjZWZvcmdlLm5ldC8iLCAiTmV3IHZhbHVl IGFkZGVkIik7Ci0gfQotIAotICMgJFN0b3JhYmxlOjpERUJVR01FID0gMTsKLSB0aGF3X2hhc2gg KCdIYXNoIHdpdGggdXRmOCBmbGFnIGJ1dCBubyB1dGY4IGtleXMnLCBcJVJfSEFTSCk7Ci0gCi0g aWYgKGV2YWwgInVzZSBIYXNoOjpVdGlsOyAxIikgewotLSAgcHJpbnQgIiMgV2UgaGF2ZSBIYXNo OjpVdGlsLCBzbyB0ZXN0IHRoYXQgdGhlIHJlc3RyaWN0ZWQgaGFzaGVzIGluIDxEQVRBPiBhcmUg dmFsaWRcbiI7Ci0tICBmb3IgJFN0b3JhYmxlOjpkb3duZ3JhZGVfcmVzdHJpY3RlZCAoMCwgMSwg dW5kZWYsICJjaGVlc2UiKSB7Ci0rICAgIHByaW50ICIjIFdlIGhhdmUgSGFzaDo6VXRpbCwgc28g dGVzdCB0aGF0IHRoZSByZXN0cmljdGVkIGhhc2hlcyBpbiA8REFUQT4gYXJlIHZhbGlkXG4iOwot KyAgICBmb3IgJFN0b3JhYmxlOjpkb3duZ3JhZGVfcmVzdHJpY3RlZCAoMCwgMSwgdW5kZWYsICJj aGVlc2UiKSB7Ci0rICAgICAgICBteSAkaGFzaCA9IHRoYXdfaGFzaCAoJ0xvY2tlZCBoYXNoJywg XCVSX0hBU0gpOwotKyAgICAgICAgdGVzdF9sb2NrZWRfaGFzaCAoJGhhc2gpOwotKyAgICAgICAg JGhhc2ggPSB0aGF3X2hhc2ggKCdMb2NrZWQgaGFzaCBwbGFjZWhvbGRlcicsIFwlUl9IQVNIKTsK LSsgICAgICAgIHRlc3RfbG9ja2VkX2hhc2ggKCRoYXNoKTsKLSsgICAgICAgIHRlc3RfcGxhY2Vo b2xkZXIgKCRoYXNoKTsKLSsKLSsgICAgICAgICRoYXNoID0gdGhhd19oYXNoICgnTG9ja2VkIGtl eXMnLCBcJVJfSEFTSCk7Ci0rICAgICAgICB0ZXN0X3Jlc3RyaWN0ZWRfaGFzaCAoJGhhc2gpOwot KyAgICAgICAgJGhhc2ggPSB0aGF3X2hhc2ggKCdMb2NrZWQga2V5cyBwbGFjZWhvbGRlcicsIFwl Ul9IQVNIKTsKLSsgICAgICAgIHRlc3RfcmVzdHJpY3RlZF9oYXNoICgkaGFzaCk7Ci0rICAgICAg ICB0ZXN0X3BsYWNlaG9sZGVyICgkaGFzaCk7Ci0rICAgIH0KLSt9IGVsc2UgewotKyAgICBwcmlu dCAiIyBXZSBkb24ndCBoYXZlIEhhc2g6OlV0aWwsIHNvIHRlc3QgdGhhdCB0aGUgcmVzdHJpY3Rl ZCBoYXNoZXMgZG93bmdyYWRlXG4iOwotICAgICBteSAkaGFzaCA9IHRoYXdfaGFzaCAoJ0xvY2tl ZCBoYXNoJywgXCVSX0hBU0gpOwotLSAgICB0ZXN0X2xvY2tlZF9oYXNoICgkaGFzaCk7Ci0rICAg IHRlc3RfbmV3a2V5ICgkaGFzaCk7Ci0gICAgICRoYXNoID0gdGhhd19oYXNoICgnTG9ja2VkIGhh c2ggcGxhY2Vob2xkZXInLCBcJVJfSEFTSCk7Ci0tICAgIHRlc3RfbG9ja2VkX2hhc2ggKCRoYXNo KTsKLS0gICAgdGVzdF9wbGFjZWhvbGRlciAoJGhhc2gpOwotLQotKyAgICB0ZXN0X25ld2tleSAo JGhhc2gpOwotICAgICAkaGFzaCA9IHRoYXdfaGFzaCAoJ0xvY2tlZCBrZXlzJywgXCVSX0hBU0gp OwotLSAgICB0ZXN0X3Jlc3RyaWN0ZWRfaGFzaCAoJGhhc2gpOwotKyAgICB0ZXN0X25ld2tleSAo JGhhc2gpOwotICAgICAkaGFzaCA9IHRoYXdfaGFzaCAoJ0xvY2tlZCBrZXlzIHBsYWNlaG9sZGVy JywgXCVSX0hBU0gpOwotLSAgICB0ZXN0X3Jlc3RyaWN0ZWRfaGFzaCAoJGhhc2gpOwotLSAgICB0 ZXN0X3BsYWNlaG9sZGVyICgkaGFzaCk7Ci0tICB9Ci0tfSBlbHNlIHsKLS0gIHByaW50ICIjIFdl IGRvbid0IGhhdmUgSGFzaDo6VXRpbCwgc28gdGVzdCB0aGF0IHRoZSByZXN0cmljdGVkIGhhc2hl cyBkb3duZ3JhZGVcbiI7Ci0tICBteSAkaGFzaCA9IHRoYXdfaGFzaCAoJ0xvY2tlZCBoYXNoJywg XCVSX0hBU0gpOwotLSAgdGVzdF9uZXdrZXkgKCRoYXNoKTsKLS0gICRoYXNoID0gdGhhd19oYXNo ICgnTG9ja2VkIGhhc2ggcGxhY2Vob2xkZXInLCBcJVJfSEFTSCk7Ci0tICB0ZXN0X25ld2tleSAo JGhhc2gpOwotLSAgJGhhc2ggPSB0aGF3X2hhc2ggKCdMb2NrZWQga2V5cycsIFwlUl9IQVNIKTsK LS0gIHRlc3RfbmV3a2V5ICgkaGFzaCk7Ci0tICAkaGFzaCA9IHRoYXdfaGFzaCAoJ0xvY2tlZCBr ZXlzIHBsYWNlaG9sZGVyJywgXCVSX0hBU0gpOwotLSAgdGVzdF9uZXdrZXkgKCRoYXNoKTsKLS0g IGxvY2FsICRTdG9yYWJsZTo6ZG93bmdyYWRlX3Jlc3RyaWN0ZWQgPSAwOwotLSAgdGhhd19mYWls ICgnTG9ja2VkIGhhc2gnLCAkUkVTVFJJQ1RFRF9DUk9BSyk7Ci0tICB0aGF3X2ZhaWwgKCdMb2Nr ZWQgaGFzaCBwbGFjZWhvbGRlcicsICRSRVNUUklDVEVEX0NST0FLKTsKLS0gIHRoYXdfZmFpbCAo J0xvY2tlZCBrZXlzJywgJFJFU1RSSUNURURfQ1JPQUspOwotLSAgdGhhd19mYWlsICgnTG9ja2Vk IGtleXMgcGxhY2Vob2xkZXInLCAkUkVTVFJJQ1RFRF9DUk9BSyk7Ci0rICAgIHRlc3RfbmV3a2V5 ICgkaGFzaCk7Ci0rICAgIGxvY2FsICRTdG9yYWJsZTo6ZG93bmdyYWRlX3Jlc3RyaWN0ZWQgPSAw OwotKyAgICB0aGF3X2ZhaWwgKCdMb2NrZWQgaGFzaCcsICRSRVNUUklDVEVEX0NST0FLKTsKLSsg ICAgdGhhd19mYWlsICgnTG9ja2VkIGhhc2ggcGxhY2Vob2xkZXInLCAkUkVTVFJJQ1RFRF9DUk9B Syk7Ci0rICAgIHRoYXdfZmFpbCAoJ0xvY2tlZCBrZXlzJywgJFJFU1RSSUNURURfQ1JPQUspOwot KyAgICB0aGF3X2ZhaWwgKCdMb2NrZWQga2V5cyBwbGFjZWhvbGRlcicsICRSRVNUUklDVEVEX0NS T0FLKTsKLSB9Ci0gCi0gcHJpbnQgIiMgV2UgaGF2ZSB1dGY4IHNjYWxhcnMsIHNvIHRlc3QgdGhh dCB0aGUgdXRmOCBzY2FsYXJzIGluIDxEQVRBPiBhcmUgdmFsaWRcbiI7Ci1AQCAtMTg0LDQ0ICsx NzQsMzYgQEAgdGhhd19zY2FsYXIgKCdTaG9ydCAyNCBiaXQgdXRmOCBkYXRhJywgY2hyIDB4QzBG RkVFKTsKLSB0aGF3X3NjYWxhciAoJ0xvbmcgMjQgYml0IHV0ZjggZGF0YScsIGNociAoMHhDMEZG RUUpIHggMjU2KTsKLSAKLSBpZiAoJF0gPiA1LjAwNzAwMikgewotLSAgcHJpbnQgIiMgV2UgaGF2 ZSB1dGY4IGhhc2hlcywgc28gdGVzdCB0aGF0IHRoZSB1dGY4IGhhc2hlcyBpbiA8REFUQT4gYXJl IHZhbGlkXG4iOwotLSAgbXkgJGhhc2ggPSB0aGF3X2hhc2ggKCdIYXNoIHdpdGggdXRmOCBrZXlz JywgXCVVX0hBU0gpOwotLSAgbXkgJGFfY2lyY3VtZmxleCA9IChvcmQgKCdBJykgPT0gMTkzID8g Ilx4NDciIDogIlx4ZTUiKTsKLS0gIGZvciAoa2V5cyAlJGhhc2gpIHsKLS0gICAgbXkgJGwgPSAw ICsgL15cdyskLzsKLS0gICAgbXkgJHIgPSAwICsgJGhhc2gtPnskX30gPX4gL15cdyskLzsKLS0g ICAgY21wX29rICgkbCwgJz09JywgJHIsIHNwcmludGYgImtleSBsZW5ndGggJWQiLCBsZW5ndGgg JF8pOwotLSAgICBjbXBfb2sgKCRsLCAnPT0nLCAkXyBlcSAiY2gke2FfY2lyY3VtZmxleH10ZWF1 IiA/IDAgOiAxKTsKLS0gIH0KLS0gIGlmIChldmFsICJ1c2UgSGFzaDo6VXRpbDsgMSIpIHsKLS0g ICAgcHJpbnQgIiMgV2UgaGF2ZSBIYXNoOjpVdGlsLCBzbyB0ZXN0IHRoYXQgdGhlIHJlc3RyaWN0 ZWQgdXRmOCBoYXNoIGlzIHZhbGlkXG4iOwotLSAgbXkgJGhhc2ggPSB0aGF3X2hhc2ggKCdMb2Nr ZWQgaGFzaCB3aXRoIHV0Zjgga2V5cycsIFwlVV9IQVNIKTsKLSsgICAgcHJpbnQgIiMgV2UgaGF2 ZSB1dGY4IGhhc2hlcywgc28gdGVzdCB0aGF0IHRoZSB1dGY4IGhhc2hlcyBpbiA8REFUQT4gYXJl IHZhbGlkXG4iOwotKyAgICBteSAkaGFzaCA9IHRoYXdfaGFzaCAoJ0hhc2ggd2l0aCB1dGY4IGtl eXMnLCBcJVVfSEFTSCk7Ci0rICAgIG15ICRhX2NpcmN1bWZsZXggPSAob3JkICgnQScpID09IDE5 MyA/ICJceDQ3IiA6ICJceGU1Iik7Ci0gICAgIGZvciAoa2V5cyAlJGhhc2gpIHsKLS0gICAgICBt eSAkbCA9IDAgKyAvXlx3KyQvOwotLSAgICAgIG15ICRyID0gMCArICRoYXNoLT57JF99ID1+IC9e XHcrJC87Ci0tICAgICAgY21wX29rICgkbCwgJz09JywgJHIsIHNwcmludGYgImtleSBsZW5ndGgg JWQiLCBsZW5ndGggJF8pOwotLSAgICAgIGNtcF9vayAoJGwsICc9PScsICRfIGVxICJjaCR7YV9j aXJjdW1mbGV4fXRlYXUiID8gMCA6IDEpOwotKyAgICAgICAgbXkgJGwgPSAwICsgL15cdyskLzsK LSsgICAgICAgIG15ICRyID0gMCArICRoYXNoLT57JF99ID1+IC9eXHcrJC87Ci0rICAgICAgICBj bXBfb2sgKCRsLCAnPT0nLCAkciwgc3ByaW50ZiAia2V5IGxlbmd0aCAlZCIsIGxlbmd0aCAkXyk7 Ci0rICAgICAgICBjbXBfb2sgKCRsLCAnPT0nLCAkXyBlcSAiY2gke2FfY2lyY3VtZmxleH10ZWF1 IiA/IDAgOiAxKTsKLSsgICAgfQotKyAgICB7Ci0rICAgICAgICByZXF1aXJlIEhhc2g6OlV0aWw7 Ci0rICAgICAgICBwcmludCAiIyBXZSBoYXZlIEhhc2g6OlV0aWwsIHNvIHRlc3QgdGhhdCB0aGUg cmVzdHJpY3RlZCB1dGY4IGhhc2ggaXMgdmFsaWRcbiI7Ci0rICAgICAgICBteSAkaGFzaCA9IHRo YXdfaGFzaCAoJ0xvY2tlZCBoYXNoIHdpdGggdXRmOCBrZXlzJywgXCVVX0hBU0gpOwotKyAgICAg ICAgZm9yIChrZXlzICUkaGFzaCkgewotKyAgICAgICAgICAgIG15ICRsID0gMCArIC9eXHcrJC87 Ci0rICAgICAgICAgICAgbXkgJHIgPSAwICsgJGhhc2gtPnskX30gPX4gL15cdyskLzsKLSsgICAg ICAgICAgICBjbXBfb2sgKCRsLCAnPT0nLCAkciwgc3ByaW50ZiAia2V5IGxlbmd0aCAlZCIsIGxl bmd0aCAkXyk7Ci0rICAgICAgICAgICAgY21wX29rICgkbCwgJz09JywgJF8gZXEgImNoJHthX2Np cmN1bWZsZXh9dGVhdSIgPyAwIDogMSk7Ci0rICAgICAgICB9Ci0rICAgICAgICB0ZXN0X2xvY2tl ZF9oYXNoICgkaGFzaCk7Ci0gICAgIH0KLS0gICAgdGVzdF9sb2NrZWRfaGFzaCAoJGhhc2gpOwot LSAgfSBlbHNlIHsKLS0gICAgcHJpbnQgIiMgV2UgZG9uJ3QgaGF2ZSBIYXNoOjpVdGlsLCBzbyB0 ZXN0IHRoYXQgdGhlIHV0ZjggaGFzaCBkb3duZ3JhZGVzXG4iOwotLSAgICBmYWlsICgiWW91IGNh bid0IGdldCBoZXJlIFtwZXJsIHZlcnNpb24gJF1dLiBUaGlzIGlzIGEgYnVnIGluIHRoZSB0ZXN0 LgotLSMgUGxlYXNlIHNlbmQgdGhlIG91dHB1dCBvZiBwZXJsIC1WIHRvIHBlcmxidWdcQHBlcmwu b3JnIik7Ci0tICB9Ci0gfSBlbHNlIHsKLS0gIHByaW50ICIjIFdlIGRvbid0IGhhdmUgdXRmOCBo YXNoZXMsIHNvIHRlc3QgdGhhdCB0aGUgdXRmOCBoYXNoZXMgZG93bmdyYWRlXG4iOwotLSAgdGhh d19mYWlsICgnSGFzaCB3aXRoIHV0Zjgga2V5cycsICRVVEY4X0NST0FLKTsKLS0gIHRoYXdfZmFp bCAoJ0xvY2tlZCBoYXNoIHdpdGggdXRmOCBrZXlzJywgJFVURjhfQ1JPQUspOwotLSAgbG9jYWwg JFN0b3JhYmxlOjpkcm9wX3V0ZjggPSAxOwotLSAgbXkgJGV4cGVjdCA9IHRoYXcgJHRlc3RzeyJI YXNoIHdpdGggdXRmOCBrZXlzIGZvciA1LjYifTsKLS0gIHRoYXdfaGFzaCAoJ0hhc2ggd2l0aCB1 dGY4IGtleXMnLCAkZXhwZWN0KTsKLS0gICNmb3JlYWNoIChrZXlzICUkZXhwZWN0KSB7IHByaW50 ICInJF8nOlx0JyRleHBlY3QtPnskX30nXG4iOyB9Ci0tICAjZm9yZWFjaCAoa2V5cyAlJGdvdCkg eyBwcmludCAiJyRfJzpcdCckZ290LT57JF99J1xuIjsgfQotLSAgaWYgKGV2YWwgInVzZSBIYXNo OjpVdGlsOyAxIikgewotLSAgICBwcmludCAiIyBXZSBoYXZlIEhhc2g6OlV0aWwsIHNvIHRlc3Qg dGhhdCB0aGUgcmVzdHJpY3RlZCBoYXNoZXMgaW4gPERBVEE+IGFyZSB2YWxpZFxuIjsKLS0gICAg ZmFpbCAoIllvdSBjYW4ndCBnZXQgaGVyZSBbcGVybCB2ZXJzaW9uICRdXS4gVGhpcyBpcyBhIGJ1 ZyBpbiB0aGUgdGVzdC4KLS0jIFBsZWFzZSBzZW5kIHRoZSBvdXRwdXQgb2YgcGVybCAtViB0byBw ZXJsYnVnXEBwZXJsLm9yZyIpOwotLSAgfSBlbHNlIHsKLSsgICAgcHJpbnQgIiMgV2UgZG9uJ3Qg aGF2ZSB1dGY4IGhhc2hlcywgc28gdGVzdCB0aGF0IHRoZSB1dGY4IGhhc2hlcyBkb3duZ3JhZGVc biI7Ci0rICAgIHRoYXdfZmFpbCAoJ0hhc2ggd2l0aCB1dGY4IGtleXMnLCAkVVRGOF9DUk9BSyk7 Ci0rICAgIHRoYXdfZmFpbCAoJ0xvY2tlZCBoYXNoIHdpdGggdXRmOCBrZXlzJywgJFVURjhfQ1JP QUspOwotKyAgICBsb2NhbCAkU3RvcmFibGU6OmRyb3BfdXRmOCA9IDE7Ci0rICAgIG15ICRleHBl Y3QgPSB0aGF3ICR0ZXN0c3siSGFzaCB3aXRoIHV0Zjgga2V5cyBmb3IgNS42In07Ci0rICAgIHRo YXdfaGFzaCAoJ0hhc2ggd2l0aCB1dGY4IGtleXMnLCAkZXhwZWN0KTsKLSsgICAgI2ZvcmVhY2gg KGtleXMgJSRleHBlY3QpIHsgcHJpbnQgIickXyc6XHQnJGV4cGVjdC0+eyRffSdcbiI7IH0KLSsg ICAgI2ZvcmVhY2ggKGtleXMgJSRnb3QpIHsgcHJpbnQgIickXyc6XHQnJGdvdC0+eyRffSdcbiI7 IH0KLSAgICAgcHJpbnQgIiMgV2UgZG9uJ3QgaGF2ZSBIYXNoOjpVdGlsLCBzbyB0ZXN0IHRoYXQg dGhlIHJlc3RyaWN0ZWQgaGFzaGVzIGRvd25ncmFkZVxuIjsKLSAgICAgbXkgJGhhc2ggPSB0aGF3 X2hhc2ggKCdMb2NrZWQgaGFzaCB3aXRoIHV0Zjgga2V5cycsICRleHBlY3QpOwotICAgICB0ZXN0 X25ld2tleSAoJGhhc2gpOwotQEAgLTIzMCw3ICsyMTIsNiBAQCBpZiAoJF0gPiA1LjAwNzAwMikg ewotICAgICAjIFdoaWNoIGNyb2FrIGNvbWVzIGZpcnN0IGlzIGEgYml0IG9mIGFuIGltcGxlbWVu dGF0aW9uIGlzc3VlIDotKQotICAgICBsb2NhbCAkU3RvcmFibGU6OmRyb3BfdXRmOCA9IDA7Ci0g ICAgIHRoYXdfZmFpbCAoJ0xvY2tlZCBoYXNoIHdpdGggdXRmOCBrZXlzJywgJFJFU1RSSUNURURf Q1JPQUspOwotLSAgfQotIH0KLSBfX0VORF9fCi0gIyBBIHdob2xlIHJ1biBvZiAyLnggbmZyZWV6 ZSBkYXRhLCB1dWVuY29kZWQuIFRoZSAibW9kZSBiaXRzIiBhcmUgdGhlIG9jdGFsCi1kaWZmIC0t Z2l0IGEvdC9maWxlX21hZ2ljLnQgYi90L2ZpbGVfbWFnaWMudAotaW5kZXggYTY4NjY1ZC4uOGMz ZjdjYSAxMDA2NDQKLS0tLSBhL3QvZmlsZV9tYWdpYy50Ci0rKysgYi90L2ZpbGVfbWFnaWMudAot QEAgLTEsMTAgKzEsOCBAQAotICMhcGVybCAtdwotIAotLUJFR0lOIHsKLS0gICAgdW5zaGlmdCBA SU5DLCAndC9jb21wYXQnIGlmICRdIDwgNS4wMDYwMDI7Ci0tfTsKLS0KLSB1c2Ugc3RyaWN0Owot K3VzZSB3YXJuaW5nczsKLSsKLSB1c2UgVGVzdDo6TW9yZTsKLSB1c2UgU3RvcmFibGUgcXcoc3Rv cmUgbnN0b3JlKTsKLSB1c2UgQ29uZmlnIHF3KCVDb25maWcpOwotQEAgLTMyLDM1NCArMzAsMzU0 IEBAIG15IEB0ZXN0cyA9ICgKLSAgICAgWwotICAgICAgICAgInBlcmwtc3RvcmVceDA0MTIzNFw0 XDRcNFx4RDRceEMyXDMyXGJcM1wxM1wwXDBcMHZcYlx4QzVcMzJcYi4uLiIsCi0gICAgICAgICB7 Ci0tICAgICAgICAgIGJ5dGVvcmRlciAgPT4gMTIzNCwKLS0gICAgICAgICAgZmlsZSAgICAgICA9 PiAiZGF0YV9wZXJsLTUuMDA2MDAxX2k2ODYtbGludXgtdGhyZWFkLW11bHRpX1N0b3JhYmxlLTAu MS5sZTMyIiwKLS0gICAgICAgICAgaGRyc2l6ZSAgICA9PiAxOCwKLS0gICAgICAgICAgaW50c2l6 ZSAgICA9PiA0LAotLSAgICAgICAgICBsb25nc2l6ZSAgID0+IDQsCi0tICAgICAgICAgIG5ldG9y ZGVyICAgPT4gMCwKLS0gICAgICAgICAgcHRyc2l6ZSAgICA9PiA0LAotLSAgICAgICAgICB2ZXJz aW9uICAgID0+IC0xLAotLSAgICAgICAgICB2ZXJzaW9uX252ID0+IC0xLAotKyAgICAgICAgICAg IGJ5dGVvcmRlciAgPT4gMTIzNCwKLSsgICAgICAgICAgICBmaWxlICAgICAgID0+ICJkYXRhX3Bl cmwtNS4wMDYwMDFfaTY4Ni1saW51eC10aHJlYWQtbXVsdGlfU3RvcmFibGUtMC4xLmxlMzIiLAot KyAgICAgICAgICAgIGhkcnNpemUgICAgPT4gMTgsCi0rICAgICAgICAgICAgaW50c2l6ZSAgICA9 PiA0LAotKyAgICAgICAgICAgIGxvbmdzaXplICAgPT4gNCwKLSsgICAgICAgICAgICBuZXRvcmRl ciAgID0+IDAsCi0rICAgICAgICAgICAgcHRyc2l6ZSAgICA9PiA0LAotKyAgICAgICAgICAgIHZl cnNpb24gICAgPT4gLTEsCi0rICAgICAgICAgICAgdmVyc2lvbl9udiA9PiAtMSwKLSAgICAgICAg IH0sCi0gICAgIF0sCi0gICAgIFsKLSAgICAgICAgICJwZXJsLXN0b3JlXDBceDA0MTIzNFw0XDRc NFx4OENvXDM0XGJcM1wxM1wwXDBcMHZceDk0dlwzNC4uLiIsCi0gICAgICAgICB7Ci0tICAgICAg ICAgIGJ5dGVvcmRlciAgPT4gMTIzNCwKLS0gICAgICAgICAgZmlsZSAgICAgICA9PiAiZGF0YV9w ZXJsLTUuMDA2MDAxX2k2ODYtbGludXgtdGhyZWFkLW11bHRpX1N0b3JhYmxlLTAuNF8wNy5sZTMy IiwKLS0gICAgICAgICAgaGRyc2l6ZSAgICA9PiAxOSwKLS0gICAgICAgICAgaW50c2l6ZSAgICA9 PiA0LAotLSAgICAgICAgICBsb25nc2l6ZSAgID0+IDQsCi0tICAgICAgICAgIG1ham9yICAgICAg PT4gMCwKLS0gICAgICAgICAgbmV0b3JkZXIgICA9PiAwLAotLSAgICAgICAgICBwdHJzaXplICAg ID0+IDQsCi0tICAgICAgICAgIHZlcnNpb24gICAgPT4gMCwKLS0gICAgICAgICAgdmVyc2lvbl9u diA9PiAwLAotKyAgICAgICAgICAgIGJ5dGVvcmRlciAgPT4gMTIzNCwKLSsgICAgICAgICAgICBm aWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDYwMDFfaTY4Ni1saW51eC10aHJlYWQtbXVsdGlf U3RvcmFibGUtMC40XzA3LmxlMzIiLAotKyAgICAgICAgICAgIGhkcnNpemUgICAgPT4gMTksCi0r ICAgICAgICAgICAgaW50c2l6ZSAgICA9PiA0LAotKyAgICAgICAgICAgIGxvbmdzaXplICAgPT4g NCwKLSsgICAgICAgICAgICBtYWpvciAgICAgID0+IDAsCi0rICAgICAgICAgICAgbmV0b3JkZXIg ICA9PiAwLAotKyAgICAgICAgICAgIHB0cnNpemUgICAgPT4gNCwKLSsgICAgICAgICAgICB2ZXJz aW9uICAgID0+IDAsCi0rICAgICAgICAgICAgdmVyc2lvbl9udiA9PiAwLAotICAgICAgICAgfSwK LSAgICAgXSwKLSAgICAgWwotICAgICAgICAgInBlcmwtc3RvcmVcMVx4OENvXDM0XGJcM1wwXDBc MFwxM3ZceDk0dlwzNFxiXDFcMFwwXDRcMFwwXDAuLi4iLAotICAgICAgICAgewotLSAgICAgICAg ICBmaWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDYwMDFfaTY4Ni1saW51eC10aHJlYWQtbXVs dGlfU3RvcmFibGUtMC40XzA3Lm5ldXRyYWwiLAotLSAgICAgICAgICBoZHJzaXplICAgID0+IDEx LAotLSAgICAgICAgICBtYWpvciAgICAgID0+IDAsCi0tICAgICAgICAgIG5ldG9yZGVyICAgPT4g MSwKLS0gICAgICAgICAgdmVyc2lvbiAgICA9PiAwLAotLSAgICAgICAgICB2ZXJzaW9uX252ID0+ IDAsCi0rICAgICAgICAgICAgZmlsZSAgICAgICA9PiAiZGF0YV9wZXJsLTUuMDA2MDAxX2k2ODYt bGludXgtdGhyZWFkLW11bHRpX1N0b3JhYmxlLTAuNF8wNy5uZXV0cmFsIiwKLSsgICAgICAgICAg ICBoZHJzaXplICAgID0+IDExLAotKyAgICAgICAgICAgIG1ham9yICAgICAgPT4gMCwKLSsgICAg ICAgICAgICBuZXRvcmRlciAgID0+IDEsCi0rICAgICAgICAgICAgdmVyc2lvbiAgICA9PiAwLAot KyAgICAgICAgICAgIHZlcnNpb25fbnYgPT4gMCwKLSAgICAgICAgIH0sCi0gICAgIF0sCi0gICAg IFsKLSAgICAgICAgICJwc3QwXDJceDA0MTIzNFw0XDRcNFwzXDEzXDBcMFwwXDFcMFw0XDBcMFww XDBcMFwwXDBcMFwwXDBcMC4uLiIsCi0gICAgICAgICB7Ci0tICAgICAgICAgIGJ5dGVvcmRlciAg PT4gMTIzNCwKLS0gICAgICAgICAgZmlsZSAgICAgICA9PiAiZGF0YV9wZXJsLTUuMDA2MDAxX2k2 ODYtbGludXgtdGhyZWFkLW11bHRpX1N0b3JhYmxlLTAuNjA0LmxlMzIiLAotLSAgICAgICAgICBo ZHJzaXplICAgID0+IDEzLAotLSAgICAgICAgICBpbnRzaXplICAgID0+IDQsCi0tICAgICAgICAg IGxvbmdzaXplICAgPT4gNCwKLS0gICAgICAgICAgbWFqb3IgICAgICA9PiAxLAotLSAgICAgICAg ICBuZXRvcmRlciAgID0+IDAsCi0tICAgICAgICAgIHB0cnNpemUgICAgPT4gNCwKLS0gICAgICAg ICAgdmVyc2lvbiAgICA9PiAxLAotLSAgICAgICAgICB2ZXJzaW9uX252ID0+IDEsCi0rICAgICAg ICAgICAgYnl0ZW9yZGVyICA9PiAxMjM0LAotKyAgICAgICAgICAgIGZpbGUgICAgICAgPT4gImRh dGFfcGVybC01LjAwNjAwMV9pNjg2LWxpbnV4LXRocmVhZC1tdWx0aV9TdG9yYWJsZS0wLjYwNC5s ZTMyIiwKLSsgICAgICAgICAgICBoZHJzaXplICAgID0+IDEzLAotKyAgICAgICAgICAgIGludHNp emUgICAgPT4gNCwKLSsgICAgICAgICAgICBsb25nc2l6ZSAgID0+IDQsCi0rICAgICAgICAgICAg bWFqb3IgICAgICA9PiAxLAotKyAgICAgICAgICAgIG5ldG9yZGVyICAgPT4gMCwKLSsgICAgICAg ICAgICBwdHJzaXplICAgID0+IDQsCi0rICAgICAgICAgICAgdmVyc2lvbiAgICA9PiAxLAotKyAg ICAgICAgICAgIHZlcnNpb25fbnYgPT4gMSwKLSAgICAgICAgIH0sCi0gICAgIF0sCi0gICAgIFsK LSAgICAgICAgICJwc3QwXDNcM1wwXDBcMFwxM1wxXDBcMFw0XDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwLi4uIiwKLSAgICAgICAgIHsKLS0gICAgICAgICAgZmlsZSAgICAgICA9 PiAiZGF0YV9wZXJsLTUuMDA2MDAxX2k2ODYtbGludXgtdGhyZWFkLW11bHRpX1N0b3JhYmxlLTAu NjA0Lm5ldXRyYWwiLAotLSAgICAgICAgICBoZHJzaXplICAgID0+IDUsCi0tICAgICAgICAgIG1h am9yICAgICAgPT4gMSwKLS0gICAgICAgICAgbmV0b3JkZXIgICA9PiAxLAotLSAgICAgICAgICB2 ZXJzaW9uICAgID0+IDEsCi0tICAgICAgICAgIHZlcnNpb25fbnYgPT4gMSwKLSsgICAgICAgICAg ICBmaWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDYwMDFfaTY4Ni1saW51eC10aHJlYWQtbXVs dGlfU3RvcmFibGUtMC42MDQubmV1dHJhbCIsCi0rICAgICAgICAgICAgaGRyc2l6ZSAgICA9PiA1 LAotKyAgICAgICAgICAgIG1ham9yICAgICAgPT4gMSwKLSsgICAgICAgICAgICBuZXRvcmRlciAg ID0+IDEsCi0rICAgICAgICAgICAgdmVyc2lvbiAgICA9PiAxLAotKyAgICAgICAgICAgIHZlcnNp b25fbnYgPT4gMSwKLSAgICAgICAgIH0sCi0gICAgIF0sCi0gICAgIFsKLSAgICAgICAgICJwc3Qw XDRcMFx4MDQxMjM0XDRcNFw0XDNcMTNcMFwwXDBcMVwwXDRcMFwwXDBcMFwwXDBcMFwwXDBcMC4u LiIsCi0gICAgICAgICB7Ci0tICAgICAgICAgIGJ5dGVvcmRlciAgPT4gMTIzNCwKLS0gICAgICAg ICAgZmlsZSAgICAgICA9PiAiZGF0YV9wZXJsLTUuMDA2MDAxX2k2ODYtbGludXgtdGhyZWFkLW11 bHRpX1N0b3JhYmxlLTAuNzAwLmxlMzIiLAotLSAgICAgICAgICBoZHJzaXplICAgID0+IDE0LAot LSAgICAgICAgICBpbnRzaXplICAgID0+IDQsCi0tICAgICAgICAgIGxvbmdzaXplICAgPT4gNCwK LS0gICAgICAgICAgbWFqb3IgICAgICA9PiAyLAotLSAgICAgICAgICBtaW5vciAgICAgID0+IDAs Ci0tICAgICAgICAgIG5ldG9yZGVyICAgPT4gMCwKLS0gICAgICAgICAgcHRyc2l6ZSAgICA9PiA0 LAotLSAgICAgICAgICB2ZXJzaW9uICAgID0+ICIyLjAiLAotLSAgICAgICAgICB2ZXJzaW9uX252 ID0+ICIyLjAwMCIsCi0rICAgICAgICAgICAgYnl0ZW9yZGVyICA9PiAxMjM0LAotKyAgICAgICAg ICAgIGZpbGUgICAgICAgPT4gImRhdGFfcGVybC01LjAwNjAwMV9pNjg2LWxpbnV4LXRocmVhZC1t dWx0aV9TdG9yYWJsZS0wLjcwMC5sZTMyIiwKLSsgICAgICAgICAgICBoZHJzaXplICAgID0+IDE0 LAotKyAgICAgICAgICAgIGludHNpemUgICAgPT4gNCwKLSsgICAgICAgICAgICBsb25nc2l6ZSAg ID0+IDQsCi0rICAgICAgICAgICAgbWFqb3IgICAgICA9PiAyLAotKyAgICAgICAgICAgIG1pbm9y ICAgICAgPT4gMCwKLSsgICAgICAgICAgICBuZXRvcmRlciAgID0+IDAsCi0rICAgICAgICAgICAg cHRyc2l6ZSAgICA9PiA0LAotKyAgICAgICAgICAgIHZlcnNpb24gICAgPT4gIjIuMCIsCi0rICAg ICAgICAgICAgdmVyc2lvbl9udiA9PiAiMi4wMDAiLAotICAgICAgICAgfSwKLSAgICAgXSwKLSAg ICAgWwotICAgICAgICAgInBzdDBcNVwwXDNcMFwwXDBcMTNcMVwwXDBcNFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDAuLi4iLAotICAgICAgICAgewotLSAgICAgICAgICBmaWxlICAg ICAgID0+ICJkYXRhX3BlcmwtNS4wMDYwMDFfaTY4Ni1saW51eC10aHJlYWQtbXVsdGlfU3RvcmFi bGUtMC43MDAubmV1dHJhbCIsCi0tICAgICAgICAgIGhkcnNpemUgICAgPT4gNiwKLS0gICAgICAg ICAgbWFqb3IgICAgICA9PiAyLAotLSAgICAgICAgICBtaW5vciAgICAgID0+IDAsCi0tICAgICAg ICAgIG5ldG9yZGVyICAgPT4gMSwKLS0gICAgICAgICAgdmVyc2lvbiAgICA9PiAiMi4wIiwKLS0g ICAgICAgICAgdmVyc2lvbl9udiA9PiAiMi4wMDAiLAotKyAgICAgICAgICAgIGZpbGUgICAgICAg PT4gImRhdGFfcGVybC01LjAwNjAwMV9pNjg2LWxpbnV4LXRocmVhZC1tdWx0aV9TdG9yYWJsZS0w LjcwMC5uZXV0cmFsIiwKLSsgICAgICAgICAgICBoZHJzaXplICAgID0+IDYsCi0rICAgICAgICAg ICAgbWFqb3IgICAgICA9PiAyLAotKyAgICAgICAgICAgIG1pbm9yICAgICAgPT4gMCwKLSsgICAg ICAgICAgICBuZXRvcmRlciAgID0+IDEsCi0rICAgICAgICAgICAgdmVyc2lvbiAgICA9PiAiMi4w IiwKLSsgICAgICAgICAgICB2ZXJzaW9uX252ID0+ICIyLjAwMCIsCi0gICAgICAgICB9LAotICAg ICBdLAotICAgICBbCi0gICAgICAgICAicHN0MFw0XDRceDA0MTIzNFw0XDRcNFx4MDhcM1wxM1ww XDBcMFwxXDBcNFwwXDBcMFwwXDBcMFwwXDBcMC4uLiIsCi0gICAgICAgICB7Ci0tICAgICAgICAg IGJ5dGVvcmRlciAgPT4gMTIzNCwKLS0gICAgICAgICAgZmlsZSAgICAgICA9PiAiZGF0YV9wZXJs LTUuMDA2MDAxX2k2ODYtbGludXgtdGhyZWFkLW11bHRpX1N0b3JhYmxlLTEuMDEyLmxlMzIiLAot LSAgICAgICAgICBoZHJzaXplICAgID0+IDE1LAotLSAgICAgICAgICBpbnRzaXplICAgID0+IDQs Ci0tICAgICAgICAgIGxvbmdzaXplICAgPT4gNCwKLS0gICAgICAgICAgbWFqb3IgICAgICA9PiAy LAotLSAgICAgICAgICBtaW5vciAgICAgID0+IDQsCi0tICAgICAgICAgIG5ldG9yZGVyICAgPT4g MCwKLS0gICAgICAgICAgbnZzaXplICAgICA9PiA4LAotLSAgICAgICAgICBwdHJzaXplICAgID0+ IDQsCi0tICAgICAgICAgIHZlcnNpb24gICAgPT4gIjIuNCIsCi0tICAgICAgICAgIHZlcnNpb25f bnYgPT4gIjIuMDA0IiwKLSsgICAgICAgICAgICBieXRlb3JkZXIgID0+IDEyMzQsCi0rICAgICAg ICAgICAgZmlsZSAgICAgICA9PiAiZGF0YV9wZXJsLTUuMDA2MDAxX2k2ODYtbGludXgtdGhyZWFk LW11bHRpX1N0b3JhYmxlLTEuMDEyLmxlMzIiLAotKyAgICAgICAgICAgIGhkcnNpemUgICAgPT4g MTUsCi0rICAgICAgICAgICAgaW50c2l6ZSAgICA9PiA0LAotKyAgICAgICAgICAgIGxvbmdzaXpl ICAgPT4gNCwKLSsgICAgICAgICAgICBtYWpvciAgICAgID0+IDIsCi0rICAgICAgICAgICAgbWlu b3IgICAgICA9PiA0LAotKyAgICAgICAgICAgIG5ldG9yZGVyICAgPT4gMCwKLSsgICAgICAgICAg ICBudnNpemUgICAgID0+IDgsCi0rICAgICAgICAgICAgcHRyc2l6ZSAgICA9PiA0LAotKyAgICAg ICAgICAgIHZlcnNpb24gICAgPT4gIjIuNCIsCi0rICAgICAgICAgICAgdmVyc2lvbl9udiA9PiAi Mi4wMDQiLAotICAgICAgICAgfSwKLSAgICAgXSwKLSAgICAgWwotICAgICAgICAgInBzdDBcNFwz XHgwNDQzMjFcNFw0XDRceDA4XDNcMFwwXDBcMTNcMVwwXDBcNFwwXDBcMFwwXDBcMFwwXDAuLi4i LAotICAgICAgICAgewotLSAgICAgICAgICBieXRlb3JkZXIgID0+IDQzMjEsCi0tICAgICAgICAg IGZpbGUgICAgICAgPT4gImRhdGFfcGVybC01LjAwNjAwMV9JQTY0LkFSQ0hSRVZfMC10aHJlYWQt bXVsdGlfU3RvcmFibGUtMS4wMDYuYmUzMiIsCi0tICAgICAgICAgIGhkcnNpemUgICAgPT4gMTUs Ci0tICAgICAgICAgIGludHNpemUgICAgPT4gNCwKLS0gICAgICAgICAgbG9uZ3NpemUgICA9PiA0 LAotLSAgICAgICAgICBtYWpvciAgICAgID0+IDIsCi0tICAgICAgICAgIG1pbm9yICAgICAgPT4g MywKLS0gICAgICAgICAgbmV0b3JkZXIgICA9PiAwLAotLSAgICAgICAgICBudnNpemUgICAgID0+ IDgsCi0tICAgICAgICAgIHB0cnNpemUgICAgPT4gNCwKLS0gICAgICAgICAgdmVyc2lvbiAgICA9 PiAiMi4zIiwKLS0gICAgICAgICAgdmVyc2lvbl9udiA9PiAiMi4wMDMiLAotKyAgICAgICAgICAg IGJ5dGVvcmRlciAgPT4gNDMyMSwKLSsgICAgICAgICAgICBmaWxlICAgICAgID0+ICJkYXRhX3Bl cmwtNS4wMDYwMDFfSUE2NC5BUkNIUkVWXzAtdGhyZWFkLW11bHRpX1N0b3JhYmxlLTEuMDA2LmJl MzIiLAotKyAgICAgICAgICAgIGhkcnNpemUgICAgPT4gMTUsCi0rICAgICAgICAgICAgaW50c2l6 ZSAgICA9PiA0LAotKyAgICAgICAgICAgIGxvbmdzaXplICAgPT4gNCwKLSsgICAgICAgICAgICBt YWpvciAgICAgID0+IDIsCi0rICAgICAgICAgICAgbWlub3IgICAgICA9PiAzLAotKyAgICAgICAg ICAgIG5ldG9yZGVyICAgPT4gMCwKLSsgICAgICAgICAgICBudnNpemUgICAgID0+IDgsCi0rICAg ICAgICAgICAgcHRyc2l6ZSAgICA9PiA0LAotKyAgICAgICAgICAgIHZlcnNpb24gICAgPT4gIjIu MyIsCi0rICAgICAgICAgICAgdmVyc2lvbl9udiA9PiAiMi4wMDMiLAotICAgICAgICAgfSwKLSAg ICAgXSwKLSAgICAgWwotICAgICAgICAgInBzdDBcNVwzXDNcMFwwXDBcMTNcMVwwXDBcNFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAuLi4iLAotICAgICAgICAgewotLSAgICAgICAg ICBmaWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDYwMDFfSUE2NC5BUkNIUkVWXzAtdGhyZWFk LW11bHRpX1N0b3JhYmxlLTEuMDA2Lm5ldXRyYWwiLAotLSAgICAgICAgICBoZHJzaXplICAgID0+ IDYsCi0tICAgICAgICAgIG1ham9yICAgICAgPT4gMiwKLS0gICAgICAgICAgbWlub3IgICAgICA9 PiAzLAotLSAgICAgICAgICBuZXRvcmRlciAgID0+IDEsCi0tICAgICAgICAgIHZlcnNpb24gICAg PT4gIjIuMyIsCi0tICAgICAgICAgIHZlcnNpb25fbnYgPT4gIjIuMDAzIiwKLSsgICAgICAgICAg ICBmaWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDYwMDFfSUE2NC5BUkNIUkVWXzAtdGhyZWFk LW11bHRpX1N0b3JhYmxlLTEuMDA2Lm5ldXRyYWwiLAotKyAgICAgICAgICAgIGhkcnNpemUgICAg PT4gNiwKLSsgICAgICAgICAgICBtYWpvciAgICAgID0+IDIsCi0rICAgICAgICAgICAgbWlub3Ig ICAgICA9PiAzLAotKyAgICAgICAgICAgIG5ldG9yZGVyICAgPT4gMSwKLSsgICAgICAgICAgICB2 ZXJzaW9uICAgID0+ICIyLjMiLAotKyAgICAgICAgICAgIHZlcnNpb25fbnYgPT4gIjIuMDAzIiwK LSAgICAgICAgIH0sCi0gICAgIF0sCi0gICAgIFsKLSAgICAgICAgICJwc3QwXDRcNFx4MDQ0MzIx XDRcNFw0XHgwOFwzXDBcMFwwXDEzXDFcMFwwXDRcMFwwXDBcMFwwXDBcMFwwLi4uIiwKLSAgICAg ICAgIHsKLS0gICAgICAgICAgYnl0ZW9yZGVyICA9PiA0MzIxLAotLSAgICAgICAgICBmaWxlICAg ICAgID0+ICJkYXRhX3BlcmwtNS4wMDYwMDFfSUE2NC5BUkNIUkVWXzAtdGhyZWFkLW11bHRpX1N0 b3JhYmxlLTEuMDEyLmJlMzIiLAotLSAgICAgICAgICBoZHJzaXplICAgID0+IDE1LAotLSAgICAg ICAgICBpbnRzaXplICAgID0+IDQsCi0tICAgICAgICAgIGxvbmdzaXplICAgPT4gNCwKLS0gICAg ICAgICAgbWFqb3IgICAgICA9PiAyLAotLSAgICAgICAgICBtaW5vciAgICAgID0+IDQsCi0tICAg ICAgICAgIG5ldG9yZGVyICAgPT4gMCwKLS0gICAgICAgICAgbnZzaXplICAgICA9PiA4LAotLSAg ICAgICAgICBwdHJzaXplICAgID0+IDQsCi0tICAgICAgICAgIHZlcnNpb24gICAgPT4gIjIuNCIs Ci0tICAgICAgICAgIHZlcnNpb25fbnYgPT4gIjIuMDA0IiwKLSsgICAgICAgICAgICBieXRlb3Jk ZXIgID0+IDQzMjEsCi0rICAgICAgICAgICAgZmlsZSAgICAgICA9PiAiZGF0YV9wZXJsLTUuMDA2 MDAxX0lBNjQuQVJDSFJFVl8wLXRocmVhZC1tdWx0aV9TdG9yYWJsZS0xLjAxMi5iZTMyIiwKLSsg ICAgICAgICAgICBoZHJzaXplICAgID0+IDE1LAotKyAgICAgICAgICAgIGludHNpemUgICAgPT4g NCwKLSsgICAgICAgICAgICBsb25nc2l6ZSAgID0+IDQsCi0rICAgICAgICAgICAgbWFqb3IgICAg ICA9PiAyLAotKyAgICAgICAgICAgIG1pbm9yICAgICAgPT4gNCwKLSsgICAgICAgICAgICBuZXRv cmRlciAgID0+IDAsCi0rICAgICAgICAgICAgbnZzaXplICAgICA9PiA4LAotKyAgICAgICAgICAg IHB0cnNpemUgICAgPT4gNCwKLSsgICAgICAgICAgICB2ZXJzaW9uICAgID0+ICIyLjQiLAotKyAg ICAgICAgICAgIHZlcnNpb25fbnYgPT4gIjIuMDA0IiwKLSAgICAgICAgIH0sCi0gICAgIF0sCi0g ICAgIFsKLSAgICAgICAgICJwc3QwXDVcNFwzXDBcMFwwXDEzXDFcMFwwXDRcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwLi4uIiwKLSAgICAgICAgIHsKLS0gICAgICAgICAgZmlsZSAg ICAgICA9PiAiZGF0YV9wZXJsLTUuMDA2MDAxX0lBNjQuQVJDSFJFVl8wLXRocmVhZC1tdWx0aV9T dG9yYWJsZS0xLjAxMi5uZXV0cmFsIiwKLS0gICAgICAgICAgaGRyc2l6ZSAgICA9PiA2LAotLSAg ICAgICAgICBtYWpvciAgICAgID0+IDIsCi0tICAgICAgICAgIG1pbm9yICAgICAgPT4gNCwKLS0g ICAgICAgICAgbmV0b3JkZXIgICA9PiAxLAotLSAgICAgICAgICB2ZXJzaW9uICAgID0+ICIyLjQi LAotLSAgICAgICAgICB2ZXJzaW9uX252ID0+ICIyLjAwNCIsCi0rICAgICAgICAgICAgZmlsZSAg ICAgICA9PiAiZGF0YV9wZXJsLTUuMDA2MDAxX0lBNjQuQVJDSFJFVl8wLXRocmVhZC1tdWx0aV9T dG9yYWJsZS0xLjAxMi5uZXV0cmFsIiwKLSsgICAgICAgICAgICBoZHJzaXplICAgID0+IDYsCi0r ICAgICAgICAgICAgbWFqb3IgICAgICA9PiAyLAotKyAgICAgICAgICAgIG1pbm9yICAgICAgPT4g NCwKLSsgICAgICAgICAgICBuZXRvcmRlciAgID0+IDEsCi0rICAgICAgICAgICAgdmVyc2lvbiAg ICA9PiAiMi40IiwKLSsgICAgICAgICAgICB2ZXJzaW9uX252ID0+ICIyLjAwNCIsCi0gICAgICAg ICB9LAotICAgICBdLAotICAgICBbCi0gICAgICAgICAicHN0MFw0XDZceDA0NDMyMVw0XDRcNFx4 MDhcM1wwXDBcMFwxM1xuXG40Mjk0OTY3Mjk2Li4uIiwKLSAgICAgICAgIHsKLS0gICAgICAgICAg Ynl0ZW9yZGVyICA9PiA0MzIxLAotLSAgICAgICAgICBmaWxlICAgICAgID0+ICJkYXRhX3Blcmwt NS4wMDgwMDFfZGFyd2luLXRocmVhZC1tdWx0aS0ybGV2ZWxfU3RvcmFibGUtMi4wOC5iZTMyIiwK LS0gICAgICAgICAgaGRyc2l6ZSAgICA9PiAxNSwKLS0gICAgICAgICAgaW50c2l6ZSAgICA9PiA0 LAotLSAgICAgICAgICBsb25nc2l6ZSAgID0+IDQsCi0tICAgICAgICAgIG1ham9yICAgICAgPT4g MiwKLS0gICAgICAgICAgbWlub3IgICAgICA9PiA2LAotLSAgICAgICAgICBuZXRvcmRlciAgID0+ IDAsCi0tICAgICAgICAgIG52c2l6ZSAgICAgPT4gOCwKLS0gICAgICAgICAgcHRyc2l6ZSAgICA9 PiA0LAotLSAgICAgICAgICB2ZXJzaW9uICAgID0+ICIyLjYiLAotLSAgICAgICAgICB2ZXJzaW9u X252ID0+ICIyLjAwNiIsCi0rICAgICAgICAgICAgYnl0ZW9yZGVyICA9PiA0MzIxLAotKyAgICAg ICAgICAgIGZpbGUgICAgICAgPT4gImRhdGFfcGVybC01LjAwODAwMV9kYXJ3aW4tdGhyZWFkLW11 bHRpLTJsZXZlbF9TdG9yYWJsZS0yLjA4LmJlMzIiLAotKyAgICAgICAgICAgIGhkcnNpemUgICAg PT4gMTUsCi0rICAgICAgICAgICAgaW50c2l6ZSAgICA9PiA0LAotKyAgICAgICAgICAgIGxvbmdz aXplICAgPT4gNCwKLSsgICAgICAgICAgICBtYWpvciAgICAgID0+IDIsCi0rICAgICAgICAgICAg bWlub3IgICAgICA9PiA2LAotKyAgICAgICAgICAgIG5ldG9yZGVyICAgPT4gMCwKLSsgICAgICAg ICAgICBudnNpemUgICAgID0+IDgsCi0rICAgICAgICAgICAgcHRyc2l6ZSAgICA9PiA0LAotKyAg ICAgICAgICAgIHZlcnNpb24gICAgPT4gIjIuNiIsCi0rICAgICAgICAgICAgdmVyc2lvbl9udiA9 PiAiMi4wMDYiLAotICAgICAgICAgfSwKLSAgICAgXSwKLSAgICAgWwotICAgICAgICAgInBzdDBc NVw2XDNcMFwwXDBcMTNcblxuNDI5NDk2NzI5NlwwXDBcMFxiZm91cl8uLi4iLAotICAgICAgICAg ewotLSAgICAgICAgICBmaWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDgwMDFfZGFyd2luLXRo cmVhZC1tdWx0aS0ybGV2ZWxfU3RvcmFibGUtMi4wOC5uZXV0cmFsIiwKLS0gICAgICAgICAgaGRy c2l6ZSAgICA9PiA2LAotLSAgICAgICAgICBtYWpvciAgICAgID0+IDIsCi0tICAgICAgICAgIG1p bm9yICAgICAgPT4gNiwKLS0gICAgICAgICAgbmV0b3JkZXIgICA9PiAxLAotLSAgICAgICAgICB2 ZXJzaW9uICAgID0+ICIyLjYiLAotLSAgICAgICAgICB2ZXJzaW9uX252ID0+ICIyLjAwNiIsCi0r ICAgICAgICAgICAgZmlsZSAgICAgICA9PiAiZGF0YV9wZXJsLTUuMDA4MDAxX2Rhcndpbi10aHJl YWQtbXVsdGktMmxldmVsX1N0b3JhYmxlLTIuMDgubmV1dHJhbCIsCi0rICAgICAgICAgICAgaGRy c2l6ZSAgICA9PiA2LAotKyAgICAgICAgICAgIG1ham9yICAgICAgPT4gMiwKLSsgICAgICAgICAg ICBtaW5vciAgICAgID0+IDYsCi0rICAgICAgICAgICAgbmV0b3JkZXIgICA9PiAxLAotKyAgICAg ICAgICAgIHZlcnNpb24gICAgPT4gIjIuNiIsCi0rICAgICAgICAgICAgdmVyc2lvbl9udiA9PiAi Mi4wMDYiLAotICAgICAgICAgfSwKLSAgICAgXSwKLSAgICAgWwotICAgICAgICAgInBzdDBcNFw2 XHgwNDQzMjFcNFw0XDRceDA4XDNcMFwwXDBcMTNcNFwzXDBcMFwwXDBcMFwwXDBcbmVtLi4uIiwK LSAgICAgICAgIHsKLS0gICAgICAgICAgYnl0ZW9yZGVyICA9PiA0MzIxLAotLSAgICAgICAgICBm aWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDgwMDNfUEEtUklTQzEuMS10aHJlYWQtbXVsdGlf U3RvcmFibGUtMi4wOS5iZTMyIiwKLS0gICAgICAgICAgaGRyc2l6ZSAgICA9PiAxNSwKLS0gICAg ICAgICAgaW50c2l6ZSAgICA9PiA0LAotLSAgICAgICAgICBsb25nc2l6ZSAgID0+IDQsCi0tICAg ICAgICAgIG1ham9yICAgICAgPT4gMiwKLS0gICAgICAgICAgbWlub3IgICAgICA9PiA2LAotLSAg ICAgICAgICBuZXRvcmRlciAgID0+IDAsCi0tICAgICAgICAgIG52c2l6ZSAgICAgPT4gOCwKLS0g ICAgICAgICAgcHRyc2l6ZSAgICA9PiA0LAotLSAgICAgICAgICB2ZXJzaW9uICAgID0+ICIyLjYi LAotLSAgICAgICAgICB2ZXJzaW9uX252ID0+ICIyLjAwNiIsCi0rICAgICAgICAgICAgYnl0ZW9y ZGVyICA9PiA0MzIxLAotKyAgICAgICAgICAgIGZpbGUgICAgICAgPT4gImRhdGFfcGVybC01LjAw ODAwM19QQS1SSVNDMS4xLXRocmVhZC1tdWx0aV9TdG9yYWJsZS0yLjA5LmJlMzIiLAotKyAgICAg ICAgICAgIGhkcnNpemUgICAgPT4gMTUsCi0rICAgICAgICAgICAgaW50c2l6ZSAgICA9PiA0LAot KyAgICAgICAgICAgIGxvbmdzaXplICAgPT4gNCwKLSsgICAgICAgICAgICBtYWpvciAgICAgID0+ IDIsCi0rICAgICAgICAgICAgbWlub3IgICAgICA9PiA2LAotKyAgICAgICAgICAgIG5ldG9yZGVy ICAgPT4gMCwKLSsgICAgICAgICAgICBudnNpemUgICAgID0+IDgsCi0rICAgICAgICAgICAgcHRy c2l6ZSAgICA9PiA0LAotKyAgICAgICAgICAgIHZlcnNpb24gICAgPT4gIjIuNiIsCi0rICAgICAg ICAgICAgdmVyc2lvbl9udiA9PiAiMi4wMDYiLAotICAgICAgICAgfSwKLSAgICAgXSwKLSAgICAg WwotICAgICAgICAgInBzdDBcNVw2XDNcMFwwXDBcMTNcNFwzXDBcMFwwXDBcMFwwXDBcbmVtcHR5 X2hhc2hcbi4uLiIsCi0gICAgICAgICB7Ci0tICAgICAgICAgIGZpbGUgICAgICAgPT4gImRhdGFf cGVybC01LjAwODAwM19QQS1SSVNDMS4xLXRocmVhZC1tdWx0aV9TdG9yYWJsZS0yLjA5Lm5ldXRy YWwiLAotLSAgICAgICAgICBoZHJzaXplICAgID0+IDYsCi0tICAgICAgICAgIG1ham9yICAgICAg PT4gMiwKLS0gICAgICAgICAgbWlub3IgICAgICA9PiA2LAotLSAgICAgICAgICBuZXRvcmRlciAg ID0+IDEsCi0tICAgICAgICAgIHZlcnNpb24gICAgPT4gIjIuNiIsCi0tICAgICAgICAgIHZlcnNp b25fbnYgPT4gIjIuMDA2IiwKLSsgICAgICAgICAgICBmaWxlICAgICAgID0+ICJkYXRhX3Blcmwt NS4wMDgwMDNfUEEtUklTQzEuMS10aHJlYWQtbXVsdGlfU3RvcmFibGUtMi4wOS5uZXV0cmFsIiwK LSsgICAgICAgICAgICBoZHJzaXplICAgID0+IDYsCi0rICAgICAgICAgICAgbWFqb3IgICAgICA9 PiAyLAotKyAgICAgICAgICAgIG1pbm9yICAgICAgPT4gNiwKLSsgICAgICAgICAgICBuZXRvcmRl ciAgID0+IDEsCi0rICAgICAgICAgICAgdmVyc2lvbiAgICA9PiAiMi42IiwKLSsgICAgICAgICAg ICB2ZXJzaW9uX252ID0+ICIyLjAwNiIsCi0gICAgICAgICB9LAotICAgICBdLAotICAgICBbCi0g ICAgICAgICAicHN0MFw0XDZceDA4MTIzNDU2NzhcNFw0XDRceDA4XDNcMTNcMFwwXDBcNFwzXDBc MFwwXDBcblwwLi4uIiwKLSAgICAgICAgIHsKLS0gICAgICAgICAgYnl0ZW9yZGVyICA9PiAxMl8z NDVfNjc4LAotLSAgICAgICAgICBmaWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDgwMDRfaTg2 cGMtc29sYXJpcy02NGludF9TdG9yYWJsZS0yLjEyLmxlNjQiLAotLSAgICAgICAgICBoZHJzaXpl ICAgID0+IDE5LAotLSAgICAgICAgICBpbnRzaXplICAgID0+IDQsCi0tICAgICAgICAgIGxvbmdz aXplICAgPT4gNCwKLS0gICAgICAgICAgbWFqb3IgICAgICA9PiAyLAotLSAgICAgICAgICBtaW5v ciAgICAgID0+IDYsCi0tICAgICAgICAgIG5ldG9yZGVyICAgPT4gMCwKLS0gICAgICAgICAgbnZz aXplICAgICA9PiA4LAotLSAgICAgICAgICBwdHJzaXplICAgID0+IDQsCi0tICAgICAgICAgIHZl cnNpb24gICAgPT4gIjIuNiIsCi0tICAgICAgICAgIHZlcnNpb25fbnYgPT4gIjIuMDA2IiwKLSsg ICAgICAgICAgICBieXRlb3JkZXIgID0+IDEyXzM0NV82NzgsCi0rICAgICAgICAgICAgZmlsZSAg ICAgICA9PiAiZGF0YV9wZXJsLTUuMDA4MDA0X2k4NnBjLXNvbGFyaXMtNjRpbnRfU3RvcmFibGUt Mi4xMi5sZTY0IiwKLSsgICAgICAgICAgICBoZHJzaXplICAgID0+IDE5LAotKyAgICAgICAgICAg IGludHNpemUgICAgPT4gNCwKLSsgICAgICAgICAgICBsb25nc2l6ZSAgID0+IDQsCi0rICAgICAg ICAgICAgbWFqb3IgICAgICA9PiAyLAotKyAgICAgICAgICAgIG1pbm9yICAgICAgPT4gNiwKLSsg ICAgICAgICAgICBuZXRvcmRlciAgID0+IDAsCi0rICAgICAgICAgICAgbnZzaXplICAgICA9PiA4 LAotKyAgICAgICAgICAgIHB0cnNpemUgICAgPT4gNCwKLSsgICAgICAgICAgICB2ZXJzaW9uICAg ID0+ICIyLjYiLAotKyAgICAgICAgICAgIHZlcnNpb25fbnYgPT4gIjIuMDA2IiwKLSAgICAgICAg IH0sCi0gICAgIF0sCi0gICAgIFsKLSAgICAgICAgICJwc3QwXDRcNlx4MDQxMjM0XDRcNFw0XHgw OFwzXDEzXDBcMFwwXDRcM1wwXDBcMFwwXG5cMFwwXDBlbS4uLiIsCi0gICAgICAgICB7Ci0tICAg ICAgICAgIGJ5dGVvcmRlciAgPT4gMTIzNCwKLS0gICAgICAgICAgZmlsZSAgICAgICA9PiAiZGF0 YV9wZXJsLTUuMDA4MDA2X2k2ODYtbGludXgtdGhyZWFkLW11bHRpX1N0b3JhYmxlLTIuMTMubGUz MiIsCi0tICAgICAgICAgIGhkcnNpemUgICAgPT4gMTUsCi0tICAgICAgICAgIGludHNpemUgICAg PT4gNCwKLS0gICAgICAgICAgbG9uZ3NpemUgICA9PiA0LAotLSAgICAgICAgICBtYWpvciAgICAg ID0+IDIsCi0tICAgICAgICAgIG1pbm9yICAgICAgPT4gNiwKLS0gICAgICAgICAgbmV0b3JkZXIg ICA9PiAwLAotLSAgICAgICAgICBudnNpemUgICAgID0+IDgsCi0tICAgICAgICAgIHB0cnNpemUg ICAgPT4gNCwKLS0gICAgICAgICAgdmVyc2lvbiAgICA9PiAiMi42IiwKLS0gICAgICAgICAgdmVy c2lvbl9udiA9PiAiMi4wMDYiLAotKyAgICAgICAgICAgIGJ5dGVvcmRlciAgPT4gMTIzNCwKLSsg ICAgICAgICAgICBmaWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDgwMDZfaTY4Ni1saW51eC10 aHJlYWQtbXVsdGlfU3RvcmFibGUtMi4xMy5sZTMyIiwKLSsgICAgICAgICAgICBoZHJzaXplICAg ID0+IDE1LAotKyAgICAgICAgICAgIGludHNpemUgICAgPT4gNCwKLSsgICAgICAgICAgICBsb25n c2l6ZSAgID0+IDQsCi0rICAgICAgICAgICAgbWFqb3IgICAgICA9PiAyLAotKyAgICAgICAgICAg IG1pbm9yICAgICAgPT4gNiwKLSsgICAgICAgICAgICBuZXRvcmRlciAgID0+IDAsCi0rICAgICAg ICAgICAgbnZzaXplICAgICA9PiA4LAotKyAgICAgICAgICAgIHB0cnNpemUgICAgPT4gNCwKLSsg ICAgICAgICAgICB2ZXJzaW9uICAgID0+ICIyLjYiLAotKyAgICAgICAgICAgIHZlcnNpb25fbnYg PT4gIjIuMDA2IiwKLSAgICAgICAgIH0sCi0gICAgIF0sCi0gICAgIFsKLSAgICAgICAgICJwc3Qw XDRcNlx4MDg4NzY1NDMyMVw0XHgwOFx4MDhceDA4XDNcMFwwXDBcMTNcNFwzXDBcMFwwXDBcMFww Li4uIiwKLSAgICAgICAgIHsKLS0gICAgICAgICAgYnl0ZW9yZGVyICA9PiA4N182NTRfMzIxLAot LSAgICAgICAgICBmaWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDgwMDdfSUE2NC5BUkNIUkVW XzAtdGhyZWFkLW11bHRpLUxQNjRfU3RvcmFibGUtMi4xMy5iZTY0IiwKLS0gICAgICAgICAgaGRy c2l6ZSAgICA9PiAxOSwKLS0gICAgICAgICAgaW50c2l6ZSAgICA9PiA0LAotLSAgICAgICAgICBs b25nc2l6ZSAgID0+IDgsCi0tICAgICAgICAgIG1ham9yICAgICAgPT4gMiwKLS0gICAgICAgICAg bWlub3IgICAgICA9PiA2LAotLSAgICAgICAgICBuZXRvcmRlciAgID0+IDAsCi0tICAgICAgICAg IG52c2l6ZSAgICAgPT4gOCwKLS0gICAgICAgICAgcHRyc2l6ZSAgICA9PiA4LAotLSAgICAgICAg ICB2ZXJzaW9uICAgID0+ICIyLjYiLAotLSAgICAgICAgICB2ZXJzaW9uX252ID0+ICIyLjAwNiIs Ci0rICAgICAgICAgICAgYnl0ZW9yZGVyICA9PiA4N182NTRfMzIxLAotKyAgICAgICAgICAgIGZp bGUgICAgICAgPT4gImRhdGFfcGVybC01LjAwODAwN19JQTY0LkFSQ0hSRVZfMC10aHJlYWQtbXVs dGktTFA2NF9TdG9yYWJsZS0yLjEzLmJlNjQiLAotKyAgICAgICAgICAgIGhkcnNpemUgICAgPT4g MTksCi0rICAgICAgICAgICAgaW50c2l6ZSAgICA9PiA0LAotKyAgICAgICAgICAgIGxvbmdzaXpl ICAgPT4gOCwKLSsgICAgICAgICAgICBtYWpvciAgICAgID0+IDIsCi0rICAgICAgICAgICAgbWlu b3IgICAgICA9PiA2LAotKyAgICAgICAgICAgIG5ldG9yZGVyICAgPT4gMCwKLSsgICAgICAgICAg ICBudnNpemUgICAgID0+IDgsCi0rICAgICAgICAgICAgcHRyc2l6ZSAgICA9PiA4LAotKyAgICAg ICAgICAgIHZlcnNpb24gICAgPT4gIjIuNiIsCi0rICAgICAgICAgICAgdmVyc2lvbl9udiA9PiAi Mi4wMDYiLAotICAgICAgICAgfSwKLSAgICAgXSwKLSAgICAgWwotICAgICAgICAgInBzdDBcNFx4 MDdceDA4MTIzNDU2NzhcNFx4MDhceDA4XHgwOFwzXDEzXDBcMFwwXDRcM1wwXDBcMFwwXG5cMC4u LiIsCi0gICAgICAgICB7Ci0tICAgICAgICAgIGJ5dGVvcmRlciAgPT4gMTJfMzQ1XzY3OCwKLS0g ICAgICAgICAgZmlsZSAgICAgICA9PiAiZGF0YV9wZXJsLTUuMDA4MDA3X3g4Ni1zb2xhcmlzLXRo cmVhZC1tdWx0aS02NF9TdG9yYWJsZS0yLjE1LmxlNjQiLAotLSAgICAgICAgICBoZHJzaXplICAg ID0+IDE5LAotLSAgICAgICAgICBpbnRzaXplICAgID0+IDQsCi0tICAgICAgICAgIGxvbmdzaXpl ICAgPT4gOCwKLS0gICAgICAgICAgbWFqb3IgICAgICA9PiAyLAotLSAgICAgICAgICBtaW5vciAg ICAgID0+IDcsCi0tICAgICAgICAgIG5ldG9yZGVyICAgPT4gMCwKLS0gICAgICAgICAgbnZzaXpl ICAgICA9PiA4LAotLSAgICAgICAgICBwdHJzaXplICAgID0+IDgsCi0tICAgICAgICAgIHZlcnNp b24gICAgPT4gIjIuNyIsCi0tICAgICAgICAgIHZlcnNpb25fbnYgPT4gIjIuMDA3IiwKLSsgICAg ICAgICAgICBieXRlb3JkZXIgID0+IDEyXzM0NV82NzgsCi0rICAgICAgICAgICAgZmlsZSAgICAg ICA9PiAiZGF0YV9wZXJsLTUuMDA4MDA3X3g4Ni1zb2xhcmlzLXRocmVhZC1tdWx0aS02NF9TdG9y YWJsZS0yLjE1LmxlNjQiLAotKyAgICAgICAgICAgIGhkcnNpemUgICAgPT4gMTksCi0rICAgICAg ICAgICAgaW50c2l6ZSAgICA9PiA0LAotKyAgICAgICAgICAgIGxvbmdzaXplICAgPT4gOCwKLSsg ICAgICAgICAgICBtYWpvciAgICAgID0+IDIsCi0rICAgICAgICAgICAgbWlub3IgICAgICA9PiA3 LAotKyAgICAgICAgICAgIG5ldG9yZGVyICAgPT4gMCwKLSsgICAgICAgICAgICBudnNpemUgICAg ID0+IDgsCi0rICAgICAgICAgICAgcHRyc2l6ZSAgICA9PiA4LAotKyAgICAgICAgICAgIHZlcnNp b24gICAgPT4gIjIuNyIsCi0rICAgICAgICAgICAgdmVyc2lvbl9udiA9PiAiMi4wMDciLAotICAg ICAgICAgfSwKLSAgICAgXSwKLSAgICAgWwotICAgICAgICAgInBzdDBcNVx4MDdcM1wwXDBcMFwx M1w0XDNcMFwwXDBcMFwwXDBcMFxuZW1wdHlfaGFzaFxuLi4uIiwKLSAgICAgICAgIHsKLS0gICAg ICAgICAgZmlsZSAgICAgICA9PiAiZGF0YV9wZXJsLTUuMDA4MDA3X3g4Ni1zb2xhcmlzLXRocmVh ZC1tdWx0aS02NF9TdG9yYWJsZS0yLjE1Lm5ldXRyYWwiLAotLSAgICAgICAgICBoZHJzaXplICAg ID0+IDYsCi0tICAgICAgICAgIG1ham9yICAgICAgPT4gMiwKLS0gICAgICAgICAgbWlub3IgICAg ICA9PiA3LAotLSAgICAgICAgICBuZXRvcmRlciAgID0+IDEsCi0tICAgICAgICAgIHZlcnNpb24g ICAgPT4gIjIuNyIsCi0tICAgICAgICAgIHZlcnNpb25fbnYgPT4gIjIuMDA3IiwKLSsgICAgICAg ICAgICBmaWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDgwMDdfeDg2LXNvbGFyaXMtdGhyZWFk LW11bHRpLTY0X1N0b3JhYmxlLTIuMTUubmV1dHJhbCIsCi0rICAgICAgICAgICAgaGRyc2l6ZSAg ICA9PiA2LAotKyAgICAgICAgICAgIG1ham9yICAgICAgPT4gMiwKLSsgICAgICAgICAgICBtaW5v ciAgICAgID0+IDcsCi0rICAgICAgICAgICAgbmV0b3JkZXIgICA9PiAxLAotKyAgICAgICAgICAg IHZlcnNpb24gICAgPT4gIjIuNyIsCi0rICAgICAgICAgICAgdmVyc2lvbl9udiA9PiAiMi4wMDci LAotICAgICAgICAgfSwKLSAgICAgXSwKLSAgICAgWwotICAgICAgICAgInBzdDBcNFw1XHgwNDEy MzRcNFw0XDRceDA4XDNcMTNcMFwwXDBcNFwzXDBcMFwwXDBcblwwXDBcMGVtLi4uIiwKLSAgICAg ICAgIHsKLS0gICAgICAgICAgYnl0ZW9yZGVyICA9PiAxMjM0LAotLSAgICAgICAgICBmaWxlICAg ICAgID0+ICJkYXRhX3BlcmwtNS4wMDhfaTY4Ni1saW51eC10aHJlYWQtbXVsdGlfU3RvcmFibGUt Mi4wNC5sZTMyIiwKLS0gICAgICAgICAgaGRyc2l6ZSAgICA9PiAxNSwKLS0gICAgICAgICAgaW50 c2l6ZSAgICA9PiA0LAotLSAgICAgICAgICBsb25nc2l6ZSAgID0+IDQsCi0tICAgICAgICAgIG1h am9yICAgICAgPT4gMiwKLS0gICAgICAgICAgbWlub3IgICAgICA9PiA1LAotLSAgICAgICAgICBu ZXRvcmRlciAgID0+IDAsCi0tICAgICAgICAgIG52c2l6ZSAgICAgPT4gOCwKLS0gICAgICAgICAg cHRyc2l6ZSAgICA9PiA0LAotLSAgICAgICAgICB2ZXJzaW9uICAgID0+ICIyLjUiLAotLSAgICAg ICAgICB2ZXJzaW9uX252ID0+ICIyLjAwNSIsCi0rICAgICAgICAgICAgYnl0ZW9yZGVyICA9PiAx MjM0LAotKyAgICAgICAgICAgIGZpbGUgICAgICAgPT4gImRhdGFfcGVybC01LjAwOF9pNjg2LWxp bnV4LXRocmVhZC1tdWx0aV9TdG9yYWJsZS0yLjA0LmxlMzIiLAotKyAgICAgICAgICAgIGhkcnNp emUgICAgPT4gMTUsCi0rICAgICAgICAgICAgaW50c2l6ZSAgICA9PiA0LAotKyAgICAgICAgICAg IGxvbmdzaXplICAgPT4gNCwKLSsgICAgICAgICAgICBtYWpvciAgICAgID0+IDIsCi0rICAgICAg ICAgICAgbWlub3IgICAgICA9PiA1LAotKyAgICAgICAgICAgIG5ldG9yZGVyICAgPT4gMCwKLSsg ICAgICAgICAgICBudnNpemUgICAgID0+IDgsCi0rICAgICAgICAgICAgcHRyc2l6ZSAgICA9PiA0 LAotKyAgICAgICAgICAgIHZlcnNpb24gICAgPT4gIjIuNSIsCi0rICAgICAgICAgICAgdmVyc2lv bl9udiA9PiAiMi4wMDUiLAotICAgICAgICAgfSwKLSAgICAgXSwKLSAgICAgWwotICAgICAgICAg InBzdDBcNVw1XDNcMFwwXDBcMTNcNFwzXDBcMFwwXDBcMFwwXDBcbmVtcHR5X2hhc2hcbi4uLiIs Ci0gICAgICAgICB7Ci0tICAgICAgICAgIGZpbGUgICAgICAgPT4gImRhdGFfcGVybC01LjAwOF9p Njg2LWxpbnV4LXRocmVhZC1tdWx0aV9TdG9yYWJsZS0yLjA0Lm5ldXRyYWwiLAotLSAgICAgICAg ICBoZHJzaXplICAgID0+IDYsCi0tICAgICAgICAgIG1ham9yICAgICAgPT4gMiwKLS0gICAgICAg ICAgbWlub3IgICAgICA9PiA1LAotLSAgICAgICAgICBuZXRvcmRlciAgID0+IDEsCi0tICAgICAg ICAgIHZlcnNpb24gICAgPT4gIjIuNSIsCi0tICAgICAgICAgIHZlcnNpb25fbnYgPT4gIjIuMDA1 IiwKLSsgICAgICAgICAgICBmaWxlICAgICAgID0+ICJkYXRhX3BlcmwtNS4wMDhfaTY4Ni1saW51 eC10aHJlYWQtbXVsdGlfU3RvcmFibGUtMi4wNC5uZXV0cmFsIiwKLSsgICAgICAgICAgICBoZHJz aXplICAgID0+IDYsCi0rICAgICAgICAgICAgbWFqb3IgICAgICA9PiAyLAotKyAgICAgICAgICAg IG1pbm9yICAgICAgPT4gNSwKLSsgICAgICAgICAgICBuZXRvcmRlciAgID0+IDEsCi0rICAgICAg ICAgICAgdmVyc2lvbiAgICA9PiAiMi41IiwKLSsgICAgICAgICAgICB2ZXJzaW9uX252ID0+ICIy LjAwNSIsCi0gICAgICAgICB9LAotICAgICBdLAotICAgICBbCi0gICAgICAgICAicHN0MFw0XHgw N1x4MDQxMjM0XDRcNFw0XHgwOFwzXDEzXDBcMFwwXDRcM1wwXDBcMFwwXG5cMFwwXDBlbS4uLiIs Ci0gICAgICAgICB7Ci0tICAgICAgICAgIGJ5dGVvcmRlciAgPT4gMTIzNCwKLS0gICAgICAgICAg ZmlsZSAgICAgICA9PiAiZGF0YV9wZXJsLTUuMDA5MDAzX2k2ODYtbGludXhfU3RvcmFibGUtMi4x NS5sZTMyIiwKLS0gICAgICAgICAgaGRyc2l6ZSAgICA9PiAxNSwKLS0gICAgICAgICAgaW50c2l6 ZSAgICA9PiA0LAotLSAgICAgICAgICBsb25nc2l6ZSAgID0+IDQsCi0tICAgICAgICAgIG1ham9y ICAgICAgPT4gMiwKLS0gICAgICAgICAgbWlub3IgICAgICA9PiA3LAotLSAgICAgICAgICBuZXRv cmRlciAgID0+IDAsCi0tICAgICAgICAgIG52c2l6ZSAgICAgPT4gOCwKLS0gICAgICAgICAgcHRy c2l6ZSAgICA9PiA0LAotLSAgICAgICAgICB2ZXJzaW9uICAgID0+ICIyLjciLAotLSAgICAgICAg ICB2ZXJzaW9uX252ID0+ICIyLjAwNyIsCi0rICAgICAgICAgICAgYnl0ZW9yZGVyICA9PiAxMjM0 LAotKyAgICAgICAgICAgIGZpbGUgICAgICAgPT4gImRhdGFfcGVybC01LjAwOTAwM19pNjg2LWxp bnV4X1N0b3JhYmxlLTIuMTUubGUzMiIsCi0rICAgICAgICAgICAgaGRyc2l6ZSAgICA9PiAxNSwK LSsgICAgICAgICAgICBpbnRzaXplICAgID0+IDQsCi0rICAgICAgICAgICAgbG9uZ3NpemUgICA9 PiA0LAotKyAgICAgICAgICAgIG1ham9yICAgICAgPT4gMiwKLSsgICAgICAgICAgICBtaW5vciAg ICAgID0+IDcsCi0rICAgICAgICAgICAgbmV0b3JkZXIgICA9PiAwLAotKyAgICAgICAgICAgIG52 c2l6ZSAgICAgPT4gOCwKLSsgICAgICAgICAgICBwdHJzaXplICAgID0+IDQsCi0rICAgICAgICAg ICAgdmVyc2lvbiAgICA9PiAiMi43IiwKLSsgICAgICAgICAgICB2ZXJzaW9uX252ID0+ICIyLjAw NyIsCi0gICAgICAgICB9LAotICAgICBdLAotICk7Ci1AQCAtNDA4LDggKzQwNiw4IEBAIHN0b3Jl KHt9LCAkZmlsZSk7Ci0gICAgIG9rKCEkaW5mby0+e25ldG9yZGVyfSwgIm5vIG5ldG9yZGVyIik7 Ci0gCi0gICAgIG15ICVhdHRycyA9ICgKLS0gICAgICAgIG52c2l6ZSAgPT4gNS4wMDYsIAotLSAg ICAgICAgcHRyc2l6ZSA9PiA1LjAwNSwgCi0rICAgICAgICBudnNpemUgID0+IDUuMDA2LAotKyAg ICAgICAgcHRyc2l6ZSA9PiA1LjAwNSwKLSAgICAgICAgIG1hcCB7JF8gPT4gNS4wMDR9IHF3KGJ5 dGVvcmRlciBpbnRzaXplIGxvbmdzaXplKQotICAgICApOwotICAgICBmb3IgbXkgJGF0dHIgKGtl eXMgJWF0dHJzKSB7Ci1AQCAtNDM1LDcgKzQzMyw3IEBAIG5zdG9yZSh7fSwgJGZpbGUpOwotIAot ICAgICBvaygkaW5mby0+e25ldG9yZGVyfSwgIm5vIG5ldG9yZGVyIik7Ci0gICAgIGZvciAocXco Ynl0ZW9yZGVyIGludHNpemUgbG9uZ3NpemUgcHRyc2l6ZSBudnNpemUpKSB7Ci0tCW9rKCFleGlz dHMgJGluZm8tPnskX30sICJubyAkXyIpOwotKyAgICAgICAgb2soIWV4aXN0cyAkaW5mby0+eyRf fSwgIm5vICRfIik7Ci0gICAgIH0KLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvdC9mbGFncy50IGIvdC9m bGFncy50Ci1pbmRleCBlNjQ4ZjdhLi5lZDM3NmQxIDEwMDY0NAotLS0tIGEvdC9mbGFncy50Ci0r KysgYi90L2ZsYWdzLnQKLUBAIC0xLDEwMyArMSwxMDMgQEAKLSAjIS4vcGVybAotIAotK3VzZSBz dHJpY3Q7Ci0rdXNlIHdhcm5pbmdzOwotKwotIHVzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDE2Owot IAotIHVzZSBTdG9yYWJsZSAoKTsKLSAKLS11c2Ugd2FybmluZ3M7Ci0tdXNlIHN0cmljdDsKLS0K LSBwYWNrYWdlIFRFU1Q7Ci0gCi0gc3ViIG1ha2UgewotLQlteSAkcGtnID0gc2hpZnQ7Ci0tCXJl dHVybiBibGVzcyB7IGEgPT4gMSwgYiA9PiAyIH0sICRwa2c7Ci0rICAgIG15ICRwa2cgPSBzaGlm dDsKLSsgICAgcmV0dXJuIGJsZXNzIHsgYSA9PiAxLCBiID0+IDIgfSwgJHBrZzsKLSB9Ci0gCi0g cGFja2FnZSBUSUVEX0hBU0g7Ci0gCi0gc3ViIFRJRUhBU0ggewotLQlteSAkcGtnID0gc2hpZnQ7 Ci0tCXJldHVybiBibGVzcyB7IGEgPT4gMSwgYiA9PiAyIH0sICRwa2c7Ci0rICAgIG15ICRwa2cg PSBzaGlmdDsKLSsgICAgcmV0dXJuIGJsZXNzIHsgYSA9PiAxLCBiID0+IDIgfSwgJHBrZzsKLSB9 Ci0gCi0gc3ViIEZFVENIIHsKLS0JbXkgKCRzZWxmLCAka2V5KSA9IEBfOwotLQlyZXR1cm4gJHNl bGYtPnska2V5fTsKLSsgICAgbXkgKCRzZWxmLCAka2V5KSA9IEBfOwotKyAgICByZXR1cm4gJHNl bGYtPnska2V5fTsKLSB9Ci0gCi0gc3ViIFNUT1JFIHsKLS0JbXkgKCRzZWxmLCAka2V5LCAkdmFs dWUpID0gQF87Ci0tCSRzZWxmLT57JGtleX0gPSAkdmFsdWU7Ci0rICAgIG15ICgkc2VsZiwgJGtl eSwgJHZhbHVlKSA9IEBfOwotKyAgICAkc2VsZi0+eyRrZXl9ID0gJHZhbHVlOwotIH0KLSAKLSBz dWIgRklSU1RLRVkgewotLQlteSAkc2VsZiA9IHNoaWZ0OwotLQlrZXlzICUkc2VsZjsKLS0JcmV0 dXJuIGVhY2ggJSRzZWxmOwotKyAgICBteSAkc2VsZiA9IHNoaWZ0OwotKyAgICBrZXlzICUkc2Vs ZjsKLSsgICAgcmV0dXJuIGVhY2ggJSRzZWxmOwotIH0KLSAKLSBzdWIgTkVYVEtFWSB7Ci0tCW15 ICRzZWxmID0gc2hpZnQ7Ci0tCXJldHVybiBlYWNoICV7JHNlbGZ9OwotKyAgICBteSAkc2VsZiA9 IHNoaWZ0OwotKyAgICByZXR1cm4gZWFjaCAleyRzZWxmfTsKLSB9Ci0gCi0gc3ViIEVYSVNUUyB7 Ci0tCW15ICgkc2VsZiwgJGtleSkgPSBAXzsKLS0JcmV0dXJuIGV4aXN0cyAkc2VsZi0+eyRrZXl9 OwotKyAgICBteSAoJHNlbGYsICRrZXkpID0gQF87Ci0rICAgIHJldHVybiBleGlzdHMgJHNlbGYt Pnska2V5fTsKLSB9Ci0gCi0gcGFja2FnZSBtYWluOwotIAotIHsKLS0JbXkgJG9iaiA9IFRFU1Qt Pm1ha2U7Ci0tCi0tCWlzX2RlZXBseSgkb2JqLCB7IGEgPT4gMSwgYiA9PiAyIH0sICJvYmplY3Qg Y29udGFpbnMgY29ycmVjdCBkYXRhIik7Ci0tCi0tCW15ICRmcm96ZW4gPSBTdG9yYWJsZTo6ZnJl ZXplKCRvYmopOwotLQlteSAoJHQxLCAkdDIpID0gU3RvcmFibGU6OnRoYXcoJGZyb3plbik7Ci0t Ci0tCXsKLS0JCW5vIHdhcm5pbmdzICdvbmNlJzsKLS0JCWxvY2FsICRTdG9yYWJsZTo6ZmxhZ3Mg PSBTdG9yYWJsZTo6RkxBR1NfQ09NUEFUKCk7Ci0tCQkkdDIgPSBTdG9yYWJsZTo6dGhhdygkZnJv emVuKTsKLS0JfQotLQotLQlpc19kZWVwbHkoJHQxLCAkdDIsICJvYmplY3RzIGNvbnRhaW4gbWF0 Y2hpbmcgZGF0YSIpOwotLQlpcyhyZWYgJHQxLCAnVEVTVCcsICJkZWZhdWx0IG9iamVjdCBpcyBi bGVzc2VkIik7Ci0tCWlzKHJlZiAkdDIsICdURVNUJywgImNvbXBhdCBvYmplY3QgaXMgYmxlc3Nl ZCBpbnRvIGNvcnJlY3QgY2xhc3MiKTsKLS0KLS0JbXkgJHQzID0gU3RvcmFibGU6OnRoYXcoJGZy b3plbiwgU3RvcmFibGU6OkZMQUdTX0NPTVBBVCgpKTsKLS0JaXNfZGVlcGx5KCR0MiwgJHQzLCAi b2JqZWN0cyBjb250YWluIG1hdGNoaW5nIGRhdGEgKGV4cGxpY2l0IHRlc3QpIik7Ci0tCWlzKHJl ZiAkdDMsICdURVNUJywgImNvbXBhdCBvYmplY3QgaXMgYmxlc3NlZCBpbnRvIGNvcnJlY3QgY2xh c3MgKGV4cGxpY2l0IHRlc3QpIik7Ci0tCi0tCW15ICR0NCA9IFN0b3JhYmxlOjp0aGF3KCRmcm96 ZW4sIFN0b3JhYmxlOjpCTEVTU19PSygpKTsKLS0JaXNfZGVlcGx5KCR0MiwgJHQzLCAib2JqZWN0 cyBjb250YWluIG1hdGNoaW5nIGRhdGEgKGV4cGxpY2l0IHRlc3QgZm9yIGJsZXNzKSIpOwotLQlp cyhyZWYgJHQzLCAnVEVTVCcsICJjb21wYXQgb2JqZWN0IGlzIGJsZXNzZWQgaW50byBjb3JyZWN0 IGNsYXNzIChleHBsaWNpdCB0ZXN0IGZvciBibGVzcykiKTsKLS0KLS0JewotLQkJbm8gd2Fybmlu Z3MgJ29uY2UnOwotLQkJbG9jYWwgJFN0b3JhYmxlOjpmbGFncyA9IFN0b3JhYmxlOjpGTEFHU19D T01QQVQoKTsKLS0JCW15ICR0NSA9IFN0b3JhYmxlOjp0aGF3KCRmcm96ZW4sIDApOwotLQkJbXkg JHQ2ID0gU3RvcmFibGU6OnRoYXcoJGZyb3plbiwgU3RvcmFibGU6OlRJRV9PSygpKTsKLS0KLS0J CWlzX2RlZXBseSgkdDEsICR0NSwgIm9iamVjdHMgY29udGFpbiBtYXRjaGluZyBkYXRhIik7Ci0t CQlpc19kZWVwbHkoJHQxLCAkdDYsICJvYmplY3RzIGNvbnRhaW4gbWF0Y2hpbmcgZGF0YSBmb3Ig VElFX09LIik7Ci0tCQlpcyhyZWYgJHQ1LCAnSEFTSCcsICJkZWZhdWx0IG9iamVjdCBpcyB1bmJs ZXNzZWQiKTsKLS0JCWlzKHJlZiAkdDYsICdIQVNIJywgIlRJRV9PSyBvYmplY3QgaXMgdW5ibGVz c2VkIik7Ci0tCX0KLSsgICAgbXkgJG9iaiA9IFRFU1QtPm1ha2U7Ci0rCi0rICAgIGlzX2RlZXBs eSgkb2JqLCB7IGEgPT4gMSwgYiA9PiAyIH0sICJvYmplY3QgY29udGFpbnMgY29ycmVjdCBkYXRh Iik7Ci0rCi0rICAgIG15ICRmcm96ZW4gPSBTdG9yYWJsZTo6ZnJlZXplKCRvYmopOwotKyAgICBt eSAoJHQxLCAkdDIpID0gU3RvcmFibGU6OnRoYXcoJGZyb3plbik7Ci0rCi0rICAgIHsKLSsgICAg ICAgIG5vIHdhcm5pbmdzICdvbmNlJzsKLSsgICAgICAgIGxvY2FsICRTdG9yYWJsZTo6ZmxhZ3Mg PSBTdG9yYWJsZTo6RkxBR1NfQ09NUEFUKCk7Ci0rICAgICAgICAkdDIgPSBTdG9yYWJsZTo6dGhh dygkZnJvemVuKTsKLSsgICAgfQotKwotKyAgICBpc19kZWVwbHkoJHQxLCAkdDIsICJvYmplY3Rz IGNvbnRhaW4gbWF0Y2hpbmcgZGF0YSIpOwotKyAgICBpcyhyZWYgJHQxLCAnVEVTVCcsICJkZWZh dWx0IG9iamVjdCBpcyBibGVzc2VkIik7Ci0rICAgIGlzKHJlZiAkdDIsICdURVNUJywgImNvbXBh dCBvYmplY3QgaXMgYmxlc3NlZCBpbnRvIGNvcnJlY3QgY2xhc3MiKTsKLSsKLSsgICAgbXkgJHQz ID0gU3RvcmFibGU6OnRoYXcoJGZyb3plbiwgU3RvcmFibGU6OkZMQUdTX0NPTVBBVCgpKTsKLSsg ICAgaXNfZGVlcGx5KCR0MiwgJHQzLCAib2JqZWN0cyBjb250YWluIG1hdGNoaW5nIGRhdGEgKGV4 cGxpY2l0IHRlc3QpIik7Ci0rICAgIGlzKHJlZiAkdDMsICdURVNUJywgImNvbXBhdCBvYmplY3Qg aXMgYmxlc3NlZCBpbnRvIGNvcnJlY3QgY2xhc3MgKGV4cGxpY2l0IHRlc3QpIik7Ci0rCi0rICAg IG15ICR0NCA9IFN0b3JhYmxlOjp0aGF3KCRmcm96ZW4sIFN0b3JhYmxlOjpCTEVTU19PSygpKTsK LSsgICAgaXNfZGVlcGx5KCR0MiwgJHQzLCAib2JqZWN0cyBjb250YWluIG1hdGNoaW5nIGRhdGEg KGV4cGxpY2l0IHRlc3QgZm9yIGJsZXNzKSIpOwotKyAgICBpcyhyZWYgJHQzLCAnVEVTVCcsICJj b21wYXQgb2JqZWN0IGlzIGJsZXNzZWQgaW50byBjb3JyZWN0IGNsYXNzIChleHBsaWNpdCB0ZXN0 IGZvciBibGVzcykiKTsKLSsKLSsgICAgewotKyAgICAgICAgbm8gd2FybmluZ3MgJ29uY2UnOwot KyAgICAgICAgbG9jYWwgJFN0b3JhYmxlOjpmbGFncyA9IFN0b3JhYmxlOjpGTEFHU19DT01QQVQo KTsKLSsgICAgICAgIG15ICR0NSA9IFN0b3JhYmxlOjp0aGF3KCRmcm96ZW4sIDApOwotKyAgICAg ICAgbXkgJHQ2ID0gU3RvcmFibGU6OnRoYXcoJGZyb3plbiwgU3RvcmFibGU6OlRJRV9PSygpKTsK LSsKLSsgICAgICAgIGlzX2RlZXBseSgkdDEsICR0NSwgIm9iamVjdHMgY29udGFpbiBtYXRjaGlu ZyBkYXRhIik7Ci0rICAgICAgICBpc19kZWVwbHkoJHQxLCAkdDYsICJvYmplY3RzIGNvbnRhaW4g bWF0Y2hpbmcgZGF0YSBmb3IgVElFX09LIik7Ci0rICAgICAgICBpcyhyZWYgJHQ1LCAnSEFTSCcs ICJkZWZhdWx0IG9iamVjdCBpcyB1bmJsZXNzZWQiKTsKLSsgICAgICAgIGlzKHJlZiAkdDYsICdI QVNIJywgIlRJRV9PSyBvYmplY3QgaXMgdW5ibGVzc2VkIik7Ci0rICAgIH0KLSB9Ci0gCi0gewot LQl0aWUgbXkgJWhhc2gsICdUSUVEX0hBU0gnOwotLQlvayh0aWVkICVoYXNoLCAiaGFzaCBpcyB0 aWVkIik7Ci0tCW15ICRvYmogPSB7IGJvdyA9PiBcJWhhc2ggfTsKLSsgICAgdGllIG15ICVoYXNo LCAnVElFRF9IQVNIJzsKLSsgICAgb2sodGllZCAlaGFzaCwgImhhc2ggaXMgdGllZCIpOwotKyAg ICBteSAkb2JqID0geyBib3cgPT4gXCVoYXNoIH07Ci0gCi0tCW15ICRmcm96ZW4gPSBTdG9yYWJs ZTo6ZnJlZXplKCRvYmopOwotLQlteSAkdDEgPSBTdG9yYWJsZTo6dGhhdygkZnJvemVuLCBTdG9y YWJsZTo6RkxBR1NfQ09NUEFUKCkpOwotLQlteSAkdDIgPSBldmFsIHsgU3RvcmFibGU6OnRoYXco JGZyb3plbik7IH07Ci0rICAgIG15ICRmcm96ZW4gPSBTdG9yYWJsZTo6ZnJlZXplKCRvYmopOwot KyAgICBteSAkdDEgPSBTdG9yYWJsZTo6dGhhdygkZnJvemVuLCBTdG9yYWJsZTo6RkxBR1NfQ09N UEFUKCkpOwotKyAgICBteSAkdDIgPSBldmFsIHsgU3RvcmFibGU6OnRoYXcoJGZyb3plbik7IH07 Ci0gCi0tCW9rKCEkQCwgInRyeWluZyB0byB0aGF3IGEgdGllZCB2YWx1ZSBzdWNjZWVkcyIpOwot LQlvayh0aWVkICV7JHQxLT57Ym93fX0sICJjb21wYXQgb2JqZWN0IGlzIHRpZWQiKTsKLS0JaXMo cmVmIHRpZWQgJXskdDEtPntib3d9fSwgJ1RJRURfSEFTSCcsICJjb21wYXQgb2JqZWN0IGlzIHRp ZWQgaW50byBjb3JyZWN0IGNsYXNzIik7Ci0rICAgIG9rKCEkQCwgInRyeWluZyB0byB0aGF3IGEg dGllZCB2YWx1ZSBzdWNjZWVkcyIpOwotKyAgICBvayh0aWVkICV7JHQxLT57Ym93fX0sICJjb21w YXQgb2JqZWN0IGlzIHRpZWQiKTsKLSsgICAgaXMocmVmIHRpZWQgJXskdDEtPntib3d9fSwgJ1RJ RURfSEFTSCcsICJjb21wYXQgb2JqZWN0IGlzIHRpZWQgaW50byBjb3JyZWN0IGNsYXNzIik7Ci0g fQotZGlmZiAtLWdpdCBhL3QvZm9yZ2l2ZS50IGIvdC9mb3JnaXZlLnQKLWluZGV4IDE4MzNhMjYu LmIzNzc1ZWQgMTAwNjQ0Ci0tLS0gYS90L2ZvcmdpdmUudAotKysrIGIvdC9mb3JnaXZlLnQKLUBA IC0xLDcgKzEsNyBAQAotICMhLi9wZXJsCi0gIwotICMgIENvcHlyaWdodCAoYykgMTk5NS0yMDAw LCBSYXBoYWVsIE1hbmZyZWRpCi0tIyAgCi0rIwotICMgIFlvdSBtYXkgcmVkaXN0cmlidXRlIG9u bHkgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCA1LCBhcyBzcGVjaWZpZWQKLSAjICBpbiB0 aGUgUkVBRE1FIGZpbGUgdGhhdCBjb21lcyB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gIwotQEAg LTksMjYgKzksMTMgQEAKLSAjIChDKSBDb3B5cmlnaHQgMTk5NywgVW5pdmVyc2l0YXQgRG9ydG11 bmQsIGFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gIwotIAotLXN1YiBCRUdJTiB7Ci0tICAgIHVuc2hp ZnQgQElOQywgJ3QnOwotLSAgICB1bnNoaWZ0IEBJTkMsICd0L2NvbXBhdCcgaWYgJF0gPCA1LjAw NjAwMjsKLS0gICAgcmVxdWlyZSBDb25maWc7IGltcG9ydCBDb25maWc7Ci0tICAgIGlmICgkRU5W e1BFUkxfQ09SRX0gYW5kICRDb25maWd7J2V4dGVuc2lvbnMnfSAhfiAvXGJTdG9yYWJsZVxiLykg ewotLSAgICAgICAgcHJpbnQgIjEuLjAgIyBTa2lwOiBTdG9yYWJsZSB3YXMgbm90IGJ1aWx0XG4i OwotLSAgICAgICAgZXhpdCAwOwotLSAgICB9Ci0tfQotK3VzZSBzdHJpY3Q7Ci0rdXNlIHdhcm5p bmdzOwotIAotIHVzZSBTdG9yYWJsZSBxdyhzdG9yZSByZXRyaWV2ZSk7Ci0gdXNlIFRlc3Q6Ok1v cmU7Ci0gCi0tIyBwcm9ibGVtcyB3aXRoIDUuMDA0MDQgd2hlbiBpbiBhbiBCRUdJTiBibG9jaywg c28gdGhpcyBpcyBkZWZpbmVkIGhlcmUKLS1pZiAoIWV2YWwgeyByZXF1aXJlIEZpbGU6OlNwZWM7 IDEgfSB8fCAkRmlsZTo6U3BlYzo6VkVSU0lPTiA8IDAuOCkgewotLSAgICBwbGFuKHNraXBfYWxs ID0+ICJGaWxlOjpTcGVjIDAuOCBuZWVkZWQiKTsKLS0gICAgIyBNZW50aW9uICRGaWxlOjpTcGVj OjpWRVJTSU9OIGFnYWluLCBhcyA1LjAwNTAzJ3MgaGFybmVzcyBzZWVtcyB0byBoYXZlCi0tICAg ICMgd2FybmluZ3Mgb24uCi0tICAgIGV4aXQgJEZpbGU6OlNwZWM6OlZFUlNJT047Ci0tfQotK3Vz ZSBGaWxlOjpTcGVjOwotIAotIHBsYW4odGVzdHMgPT4gOCk7Ci0gCi1AQCAtNDUsOCArMzIsOCBA QCAkU3RvcmFibGU6OmZvcmdpdmVfbWU9MTsKLSBteSAkZGV2bnVsbCA9IEZpbGU6OlNwZWMtPmRl dm51bGw7Ci0gCi0gb3BlbihTQVZFRVJSLCAiPiZTVERFUlIiKTsKLS1vcGVuKFNUREVSUiwgJz4n LCAkZGV2bnVsbCkgb3IgCi0tICAoIHByaW50IFNBVkVFUlIgIlVuYWJsZSB0byByZWRpcmVjdCBT VERFUlI6ICQhXG4iIGFuZCBleGl0KDEpICk7Ci0rb3BlbihTVERFUlIsICc+JywgJGRldm51bGwp IG9yCi0rICAgICggcHJpbnQgU0FWRUVSUiAiVW5hYmxlIHRvIHJlZGlyZWN0IFNUREVSUjogJCFc biIgYW5kIGV4aXQoMSkgKTsKLSAKLSBldmFsIHskcmVzdWx0ID0gc3RvcmUgKCRiYWQgLCAic3Rv cmUkJCIpfTsKLSAKLWRpZmYgLS1naXQgYS90L2ZyZWV6ZS50IGIvdC9mcmVlemUudAotaW5kZXgg MWRiYWMwYy4uNTJhNWRhNyAxMDA2NDQKLS0tLSBhL3QvZnJlZXplLnQKLSsrKyBiL3QvZnJlZXpl LnQKLUBAIC0xLDk3ICsxLDk0IEBACi0gIyEuL3BlcmwKLSAjCi0gIyAgQ29weXJpZ2h0IChjKSAx OTk1LTIwMDAsIFJhcGhhZWwgTWFuZnJlZGkKLS0jICAKLSsjCi0gIyAgWW91IG1heSByZWRpc3Ry aWJ1dGUgb25seSB1bmRlciB0aGUgc2FtZSB0ZXJtcyBhcyBQZXJsIDUsIGFzIHNwZWNpZmllZAot ICMgIGluIHRoZSBSRUFETUUgZmlsZSB0aGF0IGNvbWVzIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K LSAjCi0gCi0rdXNlIHN0cmljdDsKLSt1c2Ugd2FybmluZ3M7Ci0rCi0gc3ViIEJFR0lOIHsKLS0g ICAgdW5zaGlmdCBASU5DLCAndCc7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QvY29tcGF0JyBpZiAk XSA8IDUuMDA2MDAyOwotLSAgICByZXF1aXJlIENvbmZpZzsgaW1wb3J0IENvbmZpZzsKLS0gICAg aWYgKCRFTlZ7UEVSTF9DT1JFfSBhbmQgJENvbmZpZ3snZXh0ZW5zaW9ucyd9ICF+IC9cYlN0b3Jh YmxlXGIvKSB7Ci0tICAgICAgICBwcmludCAiMS4uMCAjIFNraXA6IFN0b3JhYmxlIHdhcyBub3Qg YnVpbHRcbiI7Ci0tICAgICAgICBleGl0IDA7Ci0tICAgIH0KLS0gICAgcmVxdWlyZSAnc3QtZHVt cC5wbCc7Ci0rICAgIHVuc2hpZnQgQElOQywgJ3QvbGliJzsKLSB9Ci0gCi0rdXNlIFNURHVtcDsK LSB1c2UgU3RvcmFibGUgcXcoZnJlZXplIG5mcmVlemUgdGhhdyk7Ci0gCi0gJFN0b3JhYmxlOjpm bGFncyA9IFN0b3JhYmxlOjpGTEFHU19DT01QQVQ7Ci0gCi0gdXNlIFRlc3Q6Ok1vcmUgdGVzdHMg PT4gMjE7Ci0gCi0tJGEgPSAndG90byc7Ci0tJGIgPSBcJGE7Ci0tJGMgPSBibGVzcyB7fSwgQ0xB U1M7Ci0rbXkgJGEgPSAndG90byc7Ci0rbXkgJGIgPSBcJGE7Ci0rbXkgJGMgPSBibGVzcyB7fSwg J0NMQVNTJzsKLSAkYy0+e2F0dHJpYnV0ZX0gPSAkYjsKLS0kZCA9IHt9OwotLSRlID0gW107Ci0r bXkgJGQgPSB7fTsKLStteSAkZSA9IFtdOwotICRkLT57J2EnfSA9ICRlOwotICRlLT5bMF0gPSAk ZDsKLS0lYSA9ICgna2V5JywgJ3ZhbHVlJywgMSwgMCwgJGEsICRiLCAnY3ZhcicsIFwkYyk7Ci0t QGEgPSAoJ2ZpcnN0JywgdW5kZWYsIDMsIC00LCAtMy4xNDE1OSwgNDU2LCA0LjUsICRkLCBcJGQs IFwkZSwgJGUsCi0tCSRiLCBcJGEsICRhLCAkYywgXCRjLCBcJWEpOwotK215ICVhID0gKCdrZXkn LCAndmFsdWUnLCAxLCAwLCAkYSwgJGIsICdjdmFyJywgXCRjKTsKLStteSBAYSA9ICgnZmlyc3Qn LCB1bmRlZiwgMywgLTQsIC0zLjE0MTU5LCA0NTYsIDQuNSwgJGQsIFwkZCwgXCRlLCAkZSwKLSsg ICAgJGIsIFwkYSwgJGEsICRjLCBcJGMsIFwlYSk7Ci0gCi0gbXkgJGYxID0gZnJlZXplKFxAYSk7 Ci0gaXNudCgkZjEsIHVuZGVmKTsKLSAKLS0kZHVtcGVkID0gJmR1bXAoXEBhKTsKLStteSAkZHVt cGVkID0gc3RkdW1wKFxAYSk7Ci0gaXNudCgkZHVtcGVkLCB1bmRlZik7Ci0gCi0tJHJvb3QgPSB0 aGF3KCRmMSk7Ci0rbXkgJHJvb3QgPSB0aGF3KCRmMSk7Ci0gaXNudCgkcm9vdCwgdW5kZWYpOwot IAotLSRnb3QgPSAmZHVtcCgkcm9vdCk7Ci0rbXkgJGdvdCA9IHN0ZHVtcCgkcm9vdCk7Ci0gaXNu dCgkZ290LCB1bmRlZik7Ci0gCi0gaXMoJGdvdCwgJGR1bXBlZCk7Ci0gCi0tcGFja2FnZSBGT087 IEBJU0EgPSBxdyhTdG9yYWJsZSk7Ci0rcGFja2FnZSBGT087IG91ciBASVNBID0gcXcoU3RvcmFi bGUpOwotIAotIHN1YiBtYWtlIHsKLS0JbXkgJHNlbGYgPSBibGVzcyB7fTsKLS0JJHNlbGYtPntr ZXl9ID0gXCVtYWluOjphOwotLQlyZXR1cm4gJHNlbGY7Ci0rICAgIG15ICRzZWxmID0gYmxlc3Mg e307Ci0rICAgICRzZWxmLT57a2V5fSA9IFwlYTsKLSsgICAgcmV0dXJuICRzZWxmOwotIH07Ci0g Ci0gcGFja2FnZSBtYWluOwotIAotLSRmb28gPSBGT08tPm1ha2U7Ci0rbXkgJGZvbyA9IEZPTy0+ bWFrZTsKLSBteSAkZjIgPSAkZm9vLT5mcmVlemU7Ci0gaXNudCgkZjIsIHVuZGVmKTsKLSAKLSBt eSAkZjMgPSAkZm9vLT5uZnJlZXplOwotIGlzbnQoJGYzLCB1bmRlZik7Ci0gCi0tJHJvb3QzID0g dGhhdygkZjMpOwotK215ICRyb290MyA9IHRoYXcoJGYzKTsKLSBpc250KCRyb290MywgdW5kZWYp OwotIAotLWlzKCZkdW1wKCRmb28pLCAmZHVtcCgkcm9vdDMpKTsKLStpcyhzdGR1bXAoJGZvbyks IHN0ZHVtcCgkcm9vdDMpKTsKLSAKLSAkcm9vdCA9IHRoYXcoJGYyKTsKLS1pcygmZHVtcCgkZm9v KSwgJmR1bXAoJHJvb3QpKTsKLStpcyhzdGR1bXAoJGZvbyksIHN0ZHVtcCgkcm9vdCkpOwotIAot LWlzKCZkdW1wKCRyb290MyksICZkdW1wKCRyb290KSk7Ci0raXMoc3RkdW1wKCRyb290MyksIHN0 ZHVtcCgkcm9vdCkpOwotIAotLSRvdGhlciA9IGZyZWV6ZSgkcm9vdCk7Ci0rbXkgJG90aGVyID0g ZnJlZXplKCRyb290KTsKLSBpcyhsZW5ndGgkb3RoZXIsIGxlbmd0aCAkZjIpOwotIAotLSRyb290 MiA9IHRoYXcoJG90aGVyKTsKLS1pcygmZHVtcCgkcm9vdDIpLCAmZHVtcCgkcm9vdCkpOwotK215 ICRyb290MiA9IHRoYXcoJG90aGVyKTsKLStpcyhzdGR1bXAoJHJvb3QyKSwgc3RkdW1wKCRyb290 KSk7Ci0gCi0tJFZBUjEgPSBbCi0tCSdtZXRob2QnLAotLQkxLAotLQkncHJlcGFyZScsCi0tCSdT RUxFQ1QgdGFibGVfbmFtZSwgdGFibGVfb3duZXIsIG51bV9yb3dzIEZST00gaWl0YWJsZXMKLS0g ICAgICAgICAgICAgICAgICB3aGVyZSB0YWJsZV9vd25lciAhPSBcJyRpbmdyZXNcJyBhbmQgdGFi bGVfb3duZXIgIT0gXCdEQkFcJycKLStteSAkVkFSMSA9IFsKLSsgICAgJ21ldGhvZCcsCi0rICAg IDEsCi0rICAgICdwcmVwYXJlJywKLSsgICAgJ1NFTEVDVCB0YWJsZV9uYW1lLCB0YWJsZV9vd25l ciwgbnVtX3Jvd3MgRlJPTSBpaXRhYmxlcwotKyAgICAgICAgd2hlcmUgdGFibGVfb3duZXIgIT0g XCckaW5ncmVzXCcgYW5kIHRhYmxlX293bmVyICE9IFwnREJBXCcnCi0gXTsKLSAKLS0keCA9IG5m cmVlemUoJFZBUjEpOwotLSRWQVIyID0gdGhhdygkeCk7Ci0rbXkgJHggPSBuZnJlZXplKCRWQVIx KTsKLStteSAkVkFSMiA9IHRoYXcoJHgpOwotIGlzKCRWQVIyLT5bM10sICRWQVIxLT5bM10pOwot IAotICMgVGVzdCB0aGUgd29ya2Fyb3VuZCBmb3IgTFZBTFVFIGJ1ZyBpbiBwZXJsIDUuMDA0XzA0 IC0tIGZyb20gR2lzbGUgQWFzCi1AQCAtMTA1LDE0ICsxMDIsMTQgQEAgaXMoJEAsICcnKTsKLSBt eSAkdGhhd19tZSA9ICdhc2Rhc2Rhc2Rhc2QnOwotIAotIGV2YWwgewotLQlteSAkdGhhd2VkID0g dGhhdyAkdGhhd19tZTsKLSsgICAgbXkgJHRoYXdlZCA9IHRoYXcgJHRoYXdfbWU7Ci0gfTsKLSBp c250KCRALCAnJyk7Ci0gCi0gbXkgJXRvX2JlX2Zyb3plbiA9IChmb28gPT4gJ2JhcicpOwotIG15 ICRmcm96ZW47Ci0gZXZhbCB7Ci0tCSRmcm96ZW4gPSBmcmVlemUgXCV0b19iZV9mcm96ZW47Ci0r ICAgICRmcm96ZW4gPSBmcmVlemUgXCV0b19iZV9mcm96ZW47Ci0gfTsKLSBpcygkQCwgJycpOwot IAotQEAgLTEyMSw3ICsxMTgsNyBAQCBldmFsIHsgdGhhdyAkdGhhd19tZSB9OwotIGV2YWwgeyAk ZnJvemVuID0gZnJlZXplIHsgZm9vID0+IHt9IH0gfTsKLSBpcygkQCwgJycpOwotIAotLXRoYXcg JGZyb3plbjsJCQkjIHVzZWQgdG8gc2VnZmF1bHQgaGVyZQotK3RoYXcgJGZyb3plbjsgICAgICAg ICAgICAgICAgICAgIyB1c2VkIHRvIHNlZ2ZhdWx0IGhlcmUKLSBwYXNzKCJEaWRuJ3Qgc2VnZmF1 bHQiKTsKLSAKLSBTS0lQOiB7Ci1kaWZmIC0tZ2l0IGEvdC9odWdlLnQgYi90L2h1Z2UudAotaW5k ZXggMDliMTczZS4uZDJiYmYxNSAxMDA2NDQKLS0tLSBhL3QvaHVnZS50Ci0rKysgYi90L2h1Z2Uu dAotQEAgLTgsOCArOCw2IEBAIHVzZSBTdG9yYWJsZSBxdyhkY2xvbmUpOwotIHVzZSBUZXN0OjpN b3JlOwotIAotIEJFR0lOIHsKLS0gICAgcGxhbiBza2lwX2FsbCA9PiAnU3RvcmFibGUgd2FzIG5v dCBidWlsdCcKLS0gICAgICAgIGlmICRFTlZ7UEVSTF9DT1JFfSAmJiAkQ29uZmlneydleHRlbnNp b25zJ30gIX4gL1xiIFN0b3JhYmxlIFxiL3g7Ci0gICAgIHBsYW4gc2tpcF9hbGwgPT4gJ05lZWQg NjQtYml0IHBvaW50ZXJzIGZvciB0aGlzIHRlc3QnCi0gICAgICAgICBpZiAkQ29uZmlne3B0cnNp emV9IDwgOCBhbmQgJF0gPiA1LjAxMzsKLSAgICAgcGxhbiBza2lwX2FsbCA9PiAnTmVlZCA2NC1i aXQgaW50IGZvciB0aGlzIHRlc3Qgb24gb2xkZXIgdmVyc2lvbnMnCi1AQCAtMjMsOCArMjEsOCBA QCBteSAkaHVnZSA9IGludCgyICoqIDMxKTsKLSAjIHY1LjI0LjFjL3Y1LjI1LjFjIHN3aXRjaGVk IHRvIGRpZSBlYXJsaWVyIHdpdGggIlRvbyBtYW55IGVsZW1lbnRzIiwKLSAjIHdoaWNoIGlzIG11 Y2ggc2FmZXIuCi0gbXkgJGhhc190b29fbWFueSA9ICgkQ29uZmlne3VzZWNwZXJsfSBhbmQKLS0g ICAgICAoKCRdID49IDUuMDI0MDAxIGFuZCAkXSA8IDUuMDI1MDAwKQotLSAgICAgICBvciAkXSA+ PSA1LjAyNTAwMSkpID8gMSA6IDA7Ci0rICAgICgoJF0gPj0gNS4wMjQwMDEgYW5kICRdIDwgNS4w MjUwMDApCi0rICAgIG9yICRdID49IDUuMDI1MDAxKSkgPyAxIDogMDsKLSAKLSAjIFRoZXNlIG92 ZXJsYXJnZSBzaXplcyBhcmUgZW5hYmxlZCBvbmx5IHNpbmNlIFN0b3JhYmxlIDMuMDAgYW5kIHNv bWUKLSAjIGNhc2VzIG5lZWQgY3Blcmwgc3VwcG9ydC4gUGVybDUgKGFzIG9mIDUuMjQpIGhhcyBz b21lIGludGVybmFsCi1AQCAtNDAsMjggKzM4LDM1IEBAIG15ICRoYXNfdG9vX21hbnkgPSAoJENv bmZpZ3t1c2VjcGVybH0gYW5kCi0gIyAgICBVMzIgICAgIDUuMjVjIC0KLSAjIGhhc2gga2V5OiBJ MzIKLSAKLS1teSBAY2FzZXMgPSAoCi0tICAgIFsnaHVnZSBzdHJpbmcnLAotLSAgICAgc3ViIHsg bXkgJHMgPSAneCcgeCAkaHVnZTsgXCRzIH1dLAotK215IEBjYXNlczsKLSsgICAgWwotKyAgICAg ICAgJ2h1Z2Ugc3RyaW5nJywKLSsgICAgICAgIHN1YiB7IG15ICRzID0gJ3gnIHggJGh1Z2U7IFwk cyB9Ci0rICAgIF0sCi0gCi0tICAgIFsnYXJyYXkgd2l0aCBodWdlIGVsZW1lbnQnLAotLSAgICAg c3ViIHsgbXkgJHMgPSAneCcgeCAkaHVnZTsgWyRzXSB9XSwKLSsgICAgWwotKyAgICAgICAgJ2Fy cmF5IHdpdGggaHVnZSBlbGVtZW50JywKLSsgICAgICAgIHN1YiB7IG15ICRzID0gJ3gnIHggJGh1 Z2U7IFskc10gfQotKyAgICBdLAotIAotLSAgICBbJ2hhc2ggd2l0aCBodWdlIHZhbHVlJywKLS0g ICAgIHN1YiB7IG15ICRzID0gJ3gnIHggJGh1Z2U7ICt7IGZvbyA9PiAkcyB9IH1dLAotKyAgICBb Ci0rICAgICAgICAnaGFzaCB3aXRoIGh1Z2UgdmFsdWUnLAotKyAgICAgICAgc3ViIHsgbXkgJHMg PSAneCcgeCAkaHVnZTsgK3sgZm9vID0+ICRzIH0gfQotKyAgICBdLAotIAotICAgICAjIFRoZXJl J3Mgbm8gaHVnZSBrZXksIGxpbWl0ZWQgdG8gSTMyLgotLSAgKSBpZiAkQ29uZmlne3B0cnNpemV9 ID4gNDsKLSspIGlmICRDb25maWd7cHRyc2l6ZX0gPiA0OwotIAotIAotICMgQW4gYXJyYXkgd2l0 aCBhIGh1Z2UgbnVtYmVyIG9mIGVsZW1lbnRzIHJlcXVpcmVzIHNldmVyYWwgZ2lnYWJ5dGVzIG9m Ci0gIyB2aXJ0dWFsIG1lbW9yeS4gT24gZGFyd2luIGl0IGlzIGV2dGwga2lsbGVkLgotIGlmICgk Q29uZmlne3B0cnNpemV9ID4gNCBhbmQgISRoYXNfdG9vX21hbnkpIHsKLS0gICAgIyBuZWVkcyAy MC01NUcgdmlydHVhbCBtZW1vcnksIDQuNk0gaGVhcCBhbmQgc2V2ZXJhbCBtaW51dGVzIG9uIGEg ZmFzdCBtYWNoaW5lIAotKyAgICAjIG5lZWRzIDIwLTU1RyB2aXJ0dWFsIG1lbW9yeSwgNC42TSBo ZWFwIGFuZCBzZXZlcmFsIG1pbnV0ZXMgb24gYSBmYXN0IG1hY2hpbmUKLSAgICAgaWYgKCRFTlZ7 UEVSTF9URVNUX01FTU9SWX0gPj0gNTUpIHsKLS0gICAgICAgIHB1c2ggQGNhc2VzLAotLSAgICAg ICAgICBbICdodWdlIGFycmF5JywKLS0gICAgICAgICAgICBzdWIgeyBteSBAeDsgJHhbJGh1Z2Vd ID0gdW5kZWY7IFxAeCB9IF07Ci0rICAgICAgICBwdXNoIEBjYXNlcywgWwotKyAgICAgICAgICAg ICdodWdlIGFycmF5JywKLSsgICAgICAgICAgICBzdWIgeyBteSBAeDsgJHhbJGh1Z2VdID0gdW5k ZWY7IFxAeCB9Ci0rICAgICAgICBdOwotICAgICB9IGVsc2UgewotICAgICAgICAgZGlhZyAic2tp cCBodWdlIGFycmF5LCBuZWVkIFBFUkxfVEVTVF9NRU1PUlkgPj0gNTUiOwotICAgICB9Ci1AQCAt NzQsOSArNzksMTAgQEAgaWYgKCEkaGFzX3Rvb19tYW55KSB7Ci0gICAgICMgbmVlZHMgPjkwRyB2 aXJ0dWFsIG1lbSwgYW5kIGlzIGV2dGwuIGtpbGxlZAotICAgICBpZiAoJEVOVntQRVJMX1RFU1Rf TUVNT1JZfSA+PSA5NikgewotICAgICAgICAgIyBudW1iZXIgb2Yga2V5cyA+STMyLiBpbXBvc3Np YmxlIHRvIGhhbmRsZSB3aXRoIHBlcmw1LCBidXQgU3RvcmFibGUgY2FuLgotLSAgICAgICAgcHVz aCBAY2FzZXMsCi0tICAgICAgICAgIFsnaHVnZSBoYXNoJywKLS0gICAgICAgICAgIHN1YiB7IG15 ICV4ID0gKDAgLi4gJGh1Z2UpOyBcJXggfSBdOwotKyAgICAgICAgcHVzaCBAY2FzZXMsIFsKLSsg ICAgICAgICAgICAnaHVnZSBoYXNoJywKLSsgICAgICAgICAgICBzdWIgeyBteSAleCA9ICgwIC4u ICRodWdlKTsgXCV4IH0KLSsgICAgICAgIF07Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBkaWFn ICJza2lwIGh1Z2UgaGFzaCwgbmVlZCBQRVJMX1RFU1RfTUVNT1JZID49IDk2IjsKLSAgICAgfQot ZGlmZiAtLWdpdCBhL3QvaHVnZWlkcy50IGIvdC9odWdlaWRzLnQKLWluZGV4IGMwZTE5YWUuLmZk ODY2M2UgMTAwNjQ0Ci0tLS0gYS90L2h1Z2VpZHMudAotKysrIGIvdC9odWdlaWRzLnQKLUBAIC0x NSw4ICsxNSw2IEBAIHVzZSBGaWxlOjpUZW1wIHF3KHRlbXBmaWxlKTsKLSB1c2UgRmlsZTo6U3Bl YzsKLSAKLSBCRUdJTiB7Ci0tICAgIHBsYW4gc2tpcF9hbGwgPT4gJ1N0b3JhYmxlIHdhcyBub3Qg YnVpbHQnCi0tICAgICAgICBpZiAkRU5We1BFUkxfQ09SRX0gJiYgJENvbmZpZ3snZXh0ZW5zaW9u cyd9ICF+IC9cYiBTdG9yYWJsZSBcYi94OwotICAgICBwbGFuIHNraXBfYWxsID0+ICdOZWVkIDY0 LWJpdCBwb2ludGVycyBmb3IgdGhpcyB0ZXN0JwotICAgICAgICAgaWYgJENvbmZpZ3twdHJzaXpl fSA8IDggYW5kICRdID4gNS4wMTM7Ci0gICAgIHBsYW4gc2tpcF9hbGwgPT4gJ05lZWQgNjQtYml0 IGludCBmb3IgdGhpcyB0ZXN0IG9uIG9sZGVyIHZlcnNpb25zJwotQEAgLTM5LDE4NSArMzcsMTc4 IEBAIHBsYW4gdGVzdHMgPT4gMTI7Ci0gbXkgJHNraXBzID0gJEVOVntQRVJMX1NUT1JBQkxFX1NL SVBfSURfVEVTVH0gfHwgJyc7Ci0gbXkgJGtlZXBzID0gJEVOVntQRVJMX1NUT1JBQkxFX0tFRVBf SURfVEVTVH07Ci0gCi0tZnJlZXplX3RoYXdfdGVzdAotLSAgKAotLSAgIG5hbWUgPT4gIm9iamVj dCBpZHMgYmV0d2VlbiAyRyBhbmQgNEciLAotLSAgIGZyZWV6ZSA9PiBcJm1ha2VfMmdfZGF0YSwK LS0gICB0aGF3ID0+IFwmY2hlY2tfMmdfZGF0YSwKLS0gICBpZCA9PiAiMmciLAotLSAgIG1lbW9y eSA9PiAzNCwKLS0gICk7Ci0tCi0tZnJlZXplX3RoYXdfdGVzdAotLSAgKAotLSAgIG5hbWUgPT4g Im9iamVjdCBpZHMgb3ZlciA0RyIsCi0tICAgZnJlZXplID0+IFwmbWFrZV80Z19kYXRhLAotLSAg IHRoYXcgPT4gXCZjaGVja180Z19kYXRhLAotLSAgIGlkID0+ICI0ZyIsCi0tICAgbWVtb3J5ID0+ IDcwLAotLSAgKTsKLS0KLS1mcmVlemVfdGhhd190ZXN0Ci0tICAoCi0tICAgbmFtZSA9PiAiaG9v ayBvYmplY3QgaWRzIG92ZXIgNEciLAotLSAgIGZyZWV6ZSA9PiBcJm1ha2VfaG9va19kYXRhLAot LSAgIHRoYXcgPT4gXCZjaGVja19ob29rX2RhdGEsCi0tICAgaWQgPT4gImhvb2s0ZyIsCi0tICAg bWVtb3J5ID0+IDcwLAotLSAgKTsKLStmcmVlemVfdGhhd190ZXN0KAotKyAgICBuYW1lID0+ICJv YmplY3QgaWRzIGJldHdlZW4gMkcgYW5kIDRHIiwKLSsgICAgZnJlZXplID0+IFwmbWFrZV8yZ19k YXRhLAotKyAgICB0aGF3ID0+IFwmY2hlY2tfMmdfZGF0YSwKLSsgICAgaWQgPT4gIjJnIiwKLSsg ICAgbWVtb3J5ID0+IDM0LAotKyk7Ci0rCi0rZnJlZXplX3RoYXdfdGVzdCgKLSsgICAgbmFtZSA9 PiAib2JqZWN0IGlkcyBvdmVyIDRHIiwKLSsgICAgZnJlZXplID0+IFwmbWFrZV80Z19kYXRhLAot KyAgICB0aGF3ID0+IFwmY2hlY2tfNGdfZGF0YSwKLSsgICAgaWQgPT4gIjRnIiwKLSsgICAgbWVt b3J5ID0+IDcwLAotKyk7Ci0rCi0rZnJlZXplX3RoYXdfdGVzdCgKLSsgICAgbmFtZSA9PiAiaG9v ayBvYmplY3QgaWRzIG92ZXIgNEciLAotKyAgICBmcmVlemUgPT4gXCZtYWtlX2hvb2tfZGF0YSwK LSsgICAgdGhhdyA9PiBcJmNoZWNrX2hvb2tfZGF0YSwKLSsgICAgaWQgPT4gImhvb2s0ZyIsCi0r ICAgIG1lbW9yeSA9PiA3MCwKLSspOwotIAotICMgbm90IHJlYWxseSBhbiBpZCB0ZXN0LCBidXQg dGhlIGluZnJhc3RydWN0dXJlIGhlcmUgbWFrZXMgdGVzdHMKLSAjIGVhc2llcgotLWZyZWV6ZV90 aGF3X3Rlc3QKLS0gICgKLS0gICBuYW1lID0+ICJuZXR3b3JrIHN0b3JlIGxhcmdlIFBWIiwKLS0g ICBmcmVlemUgPT4gXCZtYWtlX25ldF9sYXJnZV9wdiwKLS0gICB0aGF3ID0+IFwmY2hlY2tfbmV0 X2xhcmdlX3B2LAotLSAgIGlkID0+ICJuZXRsYXJnZXB2IiwKLS0gICBtZW1vcnkgPT4gOCwKLS0g ICk7Ci0tCi0tZnJlZXplX3RoYXdfdGVzdAotLSAgICAoCi0tICAgICBuYW1lID0+ICJob29rIHN0 b3JlIHdpdGggMmcgZGF0YSIsCi0tICAgICBmcmVlemUgPT4gXCZtYWtlXzJnX2hvb2tfZGF0YSwK LS0gICAgIHRoYXcgPT4gXCZjaGVja18yZ19ob29rX2RhdGEsCi0tICAgICBpZCA9PiAiaG9vazJn ZGF0YSIsCi0tICAgICBtZW1vcnkgPT4gNCwKLS0gICAgKTsKLS0KLS1mcmVlemVfdGhhd190ZXN0 Ci0tICAgICgKLS0gICAgIG5hbWUgPT4gImhvb2sgc3RvcmUgd2l0aCA0ZyBkYXRhIiwKLS0gICAg IGZyZWV6ZSA9PiBcJm1ha2VfNGdfaG9va19kYXRhLAotLSAgICAgdGhhdyA9PiBcJmNoZWNrXzRn X2hvb2tfZGF0YSwKLS0gICAgIGlkID0+ICJob29rNGdkYXRhIiwKLS0gICAgIG1lbW9yeSA9PiA4 LAotLSAgICApOwotK2ZyZWV6ZV90aGF3X3Rlc3QoCi0rICAgIG5hbWUgPT4gIm5ldHdvcmsgc3Rv cmUgbGFyZ2UgUFYiLAotKyAgICBmcmVlemUgPT4gXCZtYWtlX25ldF9sYXJnZV9wdiwKLSsgICAg dGhhdyA9PiBcJmNoZWNrX25ldF9sYXJnZV9wdiwKLSsgICAgaWQgPT4gIm5ldGxhcmdlcHYiLAot KyAgICBtZW1vcnkgPT4gOCwKLSspOwotKwotK2ZyZWV6ZV90aGF3X3Rlc3QoCi0rICAgIG5hbWUg PT4gImhvb2sgc3RvcmUgd2l0aCAyZyBkYXRhIiwKLSsgICAgZnJlZXplID0+IFwmbWFrZV8yZ19o b29rX2RhdGEsCi0rICAgIHRoYXcgPT4gXCZjaGVja18yZ19ob29rX2RhdGEsCi0rICAgIGlkID0+ ICJob29rMmdkYXRhIiwKLSsgICAgbWVtb3J5ID0+IDQsCi0rKTsKLSsKLStmcmVlemVfdGhhd190 ZXN0KAotKyAgICBuYW1lID0+ICJob29rIHN0b3JlIHdpdGggNGcgZGF0YSIsCi0rICAgIGZyZWV6 ZSA9PiBcJm1ha2VfNGdfaG9va19kYXRhLAotKyAgICB0aGF3ID0+IFwmY2hlY2tfNGdfaG9va19k YXRhLAotKyAgICBpZCA9PiAiaG9vazRnZGF0YSIsCi0rICAgIG1lbW9yeSA9PiA4LAotKyk7Ci0g Ci0gc3ViIGZyZWV6ZV90aGF3X3Rlc3QgewotICAgICBteSAlb3B0cyA9IEBfOwotIAotICAgICBt eSAkZnJlZXplID0gJG9wdHN7ZnJlZXplfQotLSAgICAgIG9yIGRpZSAiTWlzc2luZyBmcmVlemUi OwotKyAgICAgICAgb3IgZGllICJNaXNzaW5nIGZyZWV6ZSI7Ci0gICAgIG15ICR0aGF3ID0gJG9w dHN7dGhhd30KLS0gICAgICBvciBkaWUgIk1pc3NpbmcgdGhhdyI7Ci0rICAgICAgICBvciBkaWUg Ik1pc3NpbmcgdGhhdyI7Ci0gICAgIG15ICRpZCA9ICRvcHRze2lkfQotLSAgICAgIG9yIGRpZSAi TWlzc2luZyBpZCI7Ci0rICAgICAgICBvciBkaWUgIk1pc3NpbmcgaWQiOwotICAgICBteSAkbmFt ZSA9ICRvcHRze25hbWV9Ci0tICAgICAgb3IgZGllICJNaXNzaW5nIG5hbWUiOwotKyAgICAgICAg b3IgZGllICJNaXNzaW5nIG5hbWUiOwotICAgICBteSAkbWVtb3J5ID0gJG9wdHN7bWVtb3J5fQot LSAgICAgIG9yIGRpZSAiTWlzc2luZyBtZW1vcnkiOwotKyAgICAgICAgb3IgZGllICJNaXNzaW5n IG1lbW9yeSI7Ci0gICAgIG15ICR0b2RvX3RoYXcgPSAkb3B0c3t0b2RvX3RoYXd9IHx8ICIiOwot IAotLSAgU0tJUDoKLS0gICAgewotLQkjIElQQzo6UnVuIHdvdWxkIGJlIGhhbmR5IGhlcmUKLSsg ICAgU0tJUDogewotKyAgICAgICAgIyBJUEM6OlJ1biB3b3VsZCBiZSBoYW5keSBoZXJlCi0gCi0t CSRFTlZ7UEVSTF9URVNUX01FTU9SWX0gPj0gJG1lbW9yeQotLQkgIG9yIHNraXAgIk5vdCBlbm91 Z2ggbWVtb3J5IHRvIHRlc3QgJG5hbWUiLCAyOwotLQkkc2tpcHMgPX4gL1xiXFEkaWRcRVxiLwot LQkgIGFuZCBza2lwICJZb3UgcmVxdWVzdGVkIHRlc3QgJG5hbWUgKCRpZCkgYmUgc2tpcHBlZCIs IDI7Ci0rICAgICAgICAkRU5We1BFUkxfVEVTVF9NRU1PUll9ID49ICRtZW1vcnkKLSsgICAgICAg ICAgICBvciBza2lwICJOb3QgZW5vdWdoIG1lbW9yeSB0byB0ZXN0ICRuYW1lIiwgMjsKLSsgICAg ICAgICRza2lwcyA9fiAvXGJcUSRpZFxFXGIvCi0rICAgICAgICAgICAgYW5kIHNraXAgIllvdSBy ZXF1ZXN0ZWQgdGVzdCAkbmFtZSAoJGlkKSBiZSBza2lwcGVkIiwgMjsKLSAgICAgICAgIGRlZmlu ZWQgJGtlZXBzICYmICRrZWVwcyAhfiAvXGJcUSRpZFxFXGIvCi0gICAgICAgICAgICAgYW5kIHNr aXAgIllvdSBkaWRuJ3QgcmVxdWVzdCB0ZXN0ICRuYW1lICgkaWQpIiwgMjsKLS0JbXkgJHN0b3Jl ZDsKLS0JaWYgKGRlZmluZWQobXkgJHBpZCA9IG9wZW4obXkgJGZoLCAiLXwiKSkpIHsKLS0JICAg IHVubGVzcyAoJHBpZCkgewotLQkJIyBjaGlsZAotLQkJb3BlbiBteSAkY2ZoLCAifC0iLCAiZ3pp cCIKLS0JCSAgb3IgZGllICJDYW5ub3QgcGlwZSB0byBnemlwOiAkISI7Ci0tCQliaW5tb2RlICRj Zmg7Ci0tCQkkZnJlZXplLT4oJGNmaCk7Ci0tCQlleGl0OwotLQkgICAgfQotLQkgICAgIyBwYXJl bnQKLS0JICAgICRzdG9yZWQgPSBkbyB7IGxvY2FsICQvOyA8JGZoPiB9OwotLQkgICAgY2xvc2Ug JGZoOwotLQl9Ci0tCWVsc2UgewotLQkgICAgc2tpcCAiJG5hbWU6IENhbm5vdCBmb3JrIGZvciBm cmVlemUiLCAyOwotLQl9Ci0tCW9rKCRzdG9yZWQsICIkbmFtZTogd2UgZ290IG91dHB1dCBkYXRh IikKLS0JICBvciBza2lwICIkbmFtZTogc2tpcHBpbmcgdGhhdyB0ZXN0IiwgMTsKLS0KLS0JbXkg KCR0ZmgsICR0bmFtZSkgPSB0ZW1wZmlsZSgpOwotLQotLQkjbXkgJHRuYW1lID0gIiRpZC5zdG9y ZS5neiI7Ci0tCSNvcGVuIG15ICR0ZmgsICI+IiwgJHRuYW1lIG9yIGRpZTsKLS0JI2Jpbm1vZGUg JHRmaDsKLS0KLS0JcHJpbnQgJHRmaCAkc3RvcmVkOwotLQljbG9zZSAkdGZoOwotLSAgICAKLS0J aWYgKGRlZmluZWQobXkgJHBpZCA9IG9wZW4obXkgJGZoLCAiLXwiKSkpIHsKLS0JICAgIHVubGVz cyAoJHBpZCkgewotLQkJIyBjaGlsZAotLQkJb3BlbiBteSAkYmZoLCAiLXwiLCAiZ3VuemlwIDwk dG5hbWUiCi0tCQkgIG9yIGRpZSAiQ2Fubm90IHBpcGUgZnJvbSBndW56aXA6ICQhIjsKLS0JCWJp bm1vZGUgJGJmaDsKLS0JCSR0aGF3LT4oJGJmaCk7Ci0tCQlleGl0OwotLQkgICAgfQotLQkgICAg bXkgJG91dCA9IGRvIHsgbG9jYWwgJC87IDwkZmg+IH07Ci0tCSAgICBjaG9tcCAkb3V0OwotLQkg ICAgbG9jYWwgJFRPRE8gPSAkdG9kb190aGF3OwotLQkgICAgaXMoJG91dCwgIk9LIiwgIiRuYW1l OiBjaGVjayByZXN1bHQiKTsKLS0JfQotLQllbHNlIHsKLS0JICAgIHNraXAgIiRuYW1lOiBDYW5u b3QgZm9yayBmb3IgdGhhdyIsIDE7Ci0tCX0KLSsgICAgICAgIG15ICRzdG9yZWQ7Ci0rICAgICAg ICBpZiAoZGVmaW5lZChteSAkcGlkID0gb3BlbihteSAkZmgsICItfCIpKSkgewotKyAgICAgICAg ICAgIHVubGVzcyAoJHBpZCkgewotKyAgICAgICAgICAgICAgICAjIGNoaWxkCi0rICAgICAgICAg ICAgICAgIG9wZW4gbXkgJGNmaCwgInwtIiwgImd6aXAiCi0rICAgICAgICAgICAgICAgICAgICBv ciBkaWUgIkNhbm5vdCBwaXBlIHRvIGd6aXA6ICQhIjsKLSsgICAgICAgICAgICAgICAgYmlubW9k ZSAkY2ZoOwotKyAgICAgICAgICAgICAgICAkZnJlZXplLT4oJGNmaCk7Ci0rICAgICAgICAgICAg ICAgIGV4aXQ7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgICMgcGFyZW50Ci0rICAgICAg ICAgICAgJHN0b3JlZCA9IGRvIHsgbG9jYWwgJC87IDwkZmg+IH07Ci0rICAgICAgICAgICAgY2xv c2UgJGZoOwotKyAgICAgICAgfQotKyAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgc2tpcCAi JG5hbWU6IENhbm5vdCBmb3JrIGZvciBmcmVlemUiLCAyOwotKyAgICAgICAgfQotKyAgICAgICAg b2soJHN0b3JlZCwgIiRuYW1lOiB3ZSBnb3Qgb3V0cHV0IGRhdGEiKQotKyAgICAgICAgICAgIG9y IHNraXAgIiRuYW1lOiBza2lwcGluZyB0aGF3IHRlc3QiLCAxOwotKwotKyAgICAgICAgbXkgKCR0 ZmgsICR0bmFtZSkgPSB0ZW1wZmlsZSgpOwotKwotKyAgICAgICAgI215ICR0bmFtZSA9ICIkaWQu c3RvcmUuZ3oiOwotKyAgICAgICAgI29wZW4gbXkgJHRmaCwgIj4iLCAkdG5hbWUgb3IgZGllOwot KyAgICAgICAgI2Jpbm1vZGUgJHRmaDsKLSsKLSsgICAgICAgIHByaW50ICR0ZmggJHN0b3JlZDsK LSsgICAgICAgIGNsb3NlICR0Zmg7Ci0rCi0rICAgICAgICBpZiAoZGVmaW5lZChteSAkcGlkID0g b3BlbihteSAkZmgsICItfCIpKSkgewotKyAgICAgICAgICAgIHVubGVzcyAoJHBpZCkgewotKyAg ICAgICAgICAgICAgICAjIGNoaWxkCi0rICAgICAgICAgICAgICAgIG9wZW4gbXkgJGJmaCwgIi18 IiwgImd1bnppcCA8JHRuYW1lIgotKyAgICAgICAgICAgICAgICAgICAgb3IgZGllICJDYW5ub3Qg cGlwZSBmcm9tIGd1bnppcDogJCEiOwotKyAgICAgICAgICAgICAgICBiaW5tb2RlICRiZmg7Ci0r ICAgICAgICAgICAgICAgICR0aGF3LT4oJGJmaCk7Ci0rICAgICAgICAgICAgICAgIGV4aXQ7Ci0r ICAgICAgICAgICAgfQotKyAgICAgICAgICAgIG15ICRvdXQgPSBkbyB7IGxvY2FsICQvOyA8JGZo PiB9OwotKyAgICAgICAgICAgIGNob21wICRvdXQ7Ci0rICAgICAgICAgICAgbG9jYWwgJFRPRE8g PSAkdG9kb190aGF3OwotKyAgICAgICAgICAgIGlzKCRvdXQsICJPSyIsICIkbmFtZTogY2hlY2sg cmVzdWx0Iik7Ci0rICAgICAgICB9Ci0rICAgICAgICBlbHNlIHsKLSsgICAgICAgICAgICBza2lw ICIkbmFtZTogQ2Fubm90IGZvcmsgZm9yIHRoYXciLCAxOwotKyAgICAgICAgfQotICAgICB9Ci0g fQotIAotIAotIHN1YiBtYWtlXzJnX2RhdGEgewotLSAgbXkgKCRmaCkgPSBAXzsKLS0gIG15IEB4 OwotLSAgbXkgJHkgPSAxOwotLSAgbXkgJHogPSAyOwotLSAgbXkgJGcyID0gMHg4MDAwMDAwMDsK LS0gICR4WzBdID0gXCR5OwotLSAgJHhbJGcyXSA9IFwkeTsKLS0gICR4WyRnMisxXSA9IFwkejsK LS0gICR4WyRnMisyXSA9IFwkejsKLS0gIHN0b3JlX2ZkKFxAeCwgJGZoKTsKLSsgICAgbXkgKCRm aCkgPSBAXzsKLSsgICAgbXkgQHg7Ci0rICAgIG15ICR5ID0gMTsKLSsgICAgbXkgJHogPSAyOwot KyAgICBteSAkZzIgPSAweDgwMDAwMDAwOwotKyAgICAkeFswXSA9IFwkeTsKLSsgICAgJHhbJGcy XSA9IFwkeTsKLSsgICAgJHhbJGcyKzFdID0gXCR6OwotKyAgICAkeFskZzIrMl0gPSBcJHo7Ci0r ICAgIHN0b3JlX2ZkKFxAeCwgJGZoKTsKLSB9Ci0gCi0gc3ViIGNoZWNrXzJnX2RhdGEgewotLSAg bXkgKCRmaCkgPSBAXzsKLS0gIG15ICR4ID0gcmV0cmlldmVfZmQoJGZoKTsKLS0gIG15ICRnMiA9 IDB4ODAwMDAwMDA7Ci0tICAkeC0+WzBdID09ICR4LT5bJGcyXQotLSAgICBvciBkaWUgIkZpcnN0 IGVudHJ5IG1pc21hdGNoIjsKLS0gICR4LT5bJGcyKzFdID09ICR4LT5bJGcyKzJdCi0tICAgIG9y IGRpZSAiMkcrIGVudHJ5IG1pc21hdGNoIjsKLS0gIHByaW50ICJPSyI7Ci0rICAgIG15ICgkZmgp ID0gQF87Ci0rICAgIG15ICR4ID0gcmV0cmlldmVfZmQoJGZoKTsKLSsgICAgbXkgJGcyID0gMHg4 MDAwMDAwMDsKLSsgICAgJHgtPlswXSA9PSAkeC0+WyRnMl0KLSsgICAgICAgIG9yIGRpZSAiRmly c3QgZW50cnkgbWlzbWF0Y2giOwotKyAgICAkeC0+WyRnMisxXSA9PSAkeC0+WyRnMisyXQotKyAg ICAgICAgb3IgZGllICIyRysgZW50cnkgbWlzbWF0Y2giOwotKyAgICBwcmludCAiT0siOwotIH0K LSAKLSBzdWIgbWFrZV80Z19kYXRhIHsKLS0gIG15ICgkZmgpID0gQF87Ci0tICBteSBAeDsKLS0g IG15ICR5ID0gMTsKLS0gIG15ICR6ID0gMjsKLS0gIG15ICRnNCA9IDIqMHg4MDAwMDAwMDsKLS0g ICR4WzBdID0gXCR5OwotLSAgJHhbJGc0XSA9IFwkeTsKLS0gICR4WyRnNCsxXSA9IFwkejsKLS0g ICR4WyRnNCsyXSA9IFwkejsKLS0gIHN0b3JlX2ZkKFxAeCwgJGZoKTsKLSsgICAgbXkgKCRmaCkg PSBAXzsKLSsgICAgbXkgQHg7Ci0rICAgIG15ICR5ID0gMTsKLSsgICAgbXkgJHogPSAyOwotKyAg ICBteSAkZzQgPSAyKjB4ODAwMDAwMDA7Ci0rICAgICR4WzBdID0gXCR5OwotKyAgICAkeFskZzRd ID0gXCR5OwotKyAgICAkeFskZzQrMV0gPSBcJHo7Ci0rICAgICR4WyRnNCsyXSA9IFwkejsKLSsg ICAgc3RvcmVfZmQoXEB4LCAkZmgpOwotIH0KLSAKLSBzdWIgY2hlY2tfNGdfZGF0YSB7Ci0tICBt eSAoJGZoKSA9IEBfOwotLSAgbXkgJHggPSByZXRyaWV2ZV9mZCgkZmgpOwotLSAgbXkgJGc0ID0g MioweDgwMDAwMDAwOwotLSAgJHgtPlswXSA9PSAkeC0+WyRnNF0KLS0gICAgb3IgZGllICJGaXJz dCBlbnRyeSBtaXNtYXRjaCI7Ci0tICAkeC0+WyRnNCsxXSA9PSAkeC0+WyRnNCsyXQotLSAgICBv ciBkaWUgIjRHKyBlbnRyeSBtaXNtYXRjaCI7Ci0tICAkeyR4LT5bJGc0KzFdfSA9PSAyCi0tICAg IG9yIGRpZSAiSW5jb3JyZWN0IHZhbHVlIGluIDRHKyBlbnRyeSI7Ci0tICBwcmludCAiT0siOwot KyAgICBteSAoJGZoKSA9IEBfOwotKyAgICBteSAkeCA9IHJldHJpZXZlX2ZkKCRmaCk7Ci0rICAg IG15ICRnNCA9IDIqMHg4MDAwMDAwMDsKLSsgICAgJHgtPlswXSA9PSAkeC0+WyRnNF0KLSsgICAg ICAgIG9yIGRpZSAiRmlyc3QgZW50cnkgbWlzbWF0Y2giOwotKyAgICAkeC0+WyRnNCsxXSA9PSAk eC0+WyRnNCsyXQotKyAgICAgICAgb3IgZGllICI0RysgZW50cnkgbWlzbWF0Y2giOwotKyAgICAk eyR4LT5bJGc0KzFdfSA9PSAyCi0rICAgICAgICBvciBkaWUgIkluY29ycmVjdCB2YWx1ZSBpbiA0 RysgZW50cnkiOwotKyAgICBwcmludCAiT0siOwotIH0KLSAKLSBzdWIgbWFrZV9ob29rX2RhdGEg ewotQEAgLTI0MCwxMSArMjMxLDExIEBAIHN1YiBjaGVja19ob29rX2RhdGEgewotICAgICBteSAk eSA9ICR4LT5bJGc0KzFdOwotICAgICAkeSA9ICR4LT5bJGc0KzFdOwotICAgICAkeS0+aWQgPT0g MjAxCi0tICAgICAgb3IgZGllICJJbmNvcnJlY3QgaWQgaW4gNEcrIG9iamVjdCI7Ci0rICAgICAg ICBvciBkaWUgIkluY29ycmVjdCBpZCBpbiA0Rysgb2JqZWN0IjsKLSAgICAgcmVmKCR5LT5kYXRh KSBlcSAnSEFTSCcKLS0gICAgICBvciBkaWUgImRhdGEgaXNuJ3QgYSByZWYiOwotKyAgICAgICAg b3IgZGllICJkYXRhIGlzbid0IGEgcmVmIjsKLSAgICAgJHktPmRhdGEtPntuYW1lfSBlcSAidHdv IgotLSAgICAgIG9yIGRpZSAiZGF0YSBuYW1lIG5vdCAnb25lJyI7Ci0rICAgICAgICBvciBkaWUg ImRhdGEgbmFtZSBub3QgJ29uZSciOwotICAgICBwcmludCAiT0siOwotIH0KLSAKLUBAIC0yNjEs MTAgKzI1MiwxMCBAQCBzdWIgY2hlY2tfbmV0X2xhcmdlX3B2IHsKLSAgICAgbXkgJHggPSByZXRy aWV2ZV9mZCgkZmgpOwotICAgICBteSAkZzQgPSAyKjB4ODAwMDAwMDA7Ci0gICAgIHJlZiAkeCAm JiByZWYoJHgpIGVxICJTQ0FMQVIiCi0tICAgICAgb3IgZGllICJOb3QgYSBzY2FsYXIgcmVmICIs IHJlZiAkeDsKLSsgICAgICAgIG9yIGRpZSAiTm90IGEgc2NhbGFyIHJlZiAiLCByZWYgJHg7Ci0g Ci0gICAgIGxlbmd0aCgkJHgpID09ICRnNCs1Ci0tICAgICAgb3IgZGllICJJbmNvcmVjdCBsZW5n dGgiOwotKyAgICAgICAgb3IgZGllICJJbmNvcmVjdCBsZW5ndGgiOwotICAgICBwcmludCAiT0si OwotIH0KLSAKLWRpZmYgLS1naXQgYS90L2ludGVnZXIudCBiL3QvaW50ZWdlci50Ci1pbmRleCBi NmQ5ZjkwLi42MWNhZTg5IDEwMDY0NAotLS0tIGEvdC9pbnRlZ2VyLnQKLSsrKyBiL3QvaW50ZWdl ci50Ci1AQCAtNiwyNSArNiwxNCBAQAotICMgIGluIHRoZSBSRUFETUUgZmlsZSB0aGF0IGNvbWVz IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAjCi0gCi0tIyBJIG91Z2h0IHRvIGtlZXAgdGhpcyB0 ZXN0IGVhc2lseSBiYWNrd2FyZHMgY29tcGF0aWJsZSB0byA1LjAwNCwgc28gbm8KLS0jIHFyLy87 Ci0tCi0gIyBUaGlzIHRlc3QgY2hlY2tzIGRvd25ncmFkZSBiZWhhdmlvdXIgb24gcHJlLTUuOCBw ZXJscyB3aGVuIG5ldyA1LjggZmVhdHVyZXMKLSAjIGFyZSBlbmNvdW50ZXJlZC4KLSAKLS1zdWIg QkVHSU4gewotLSAgICB1bnNoaWZ0IEBJTkMsICd0JzsKLS0gICAgdW5zaGlmdCBASU5DLCAndC9j b21wYXQnIGlmICRdIDwgNS4wMDYwMDI7Ci0tICAgIHJlcXVpcmUgQ29uZmlnOyBpbXBvcnQgQ29u ZmlnOwotLSAgICBpZiAoJEVOVntQRVJMX0NPUkV9IGFuZCAkQ29uZmlneydleHRlbnNpb25zJ30g IX4gL1xiU3RvcmFibGVcYi8pIHsKLS0gICAgICAgIHByaW50ICIxLi4wICMgU2tpcDogU3RvcmFi bGUgd2FzIG5vdCBidWlsdFxuIjsKLS0gICAgICAgIGV4aXQgMDsKLS0gICAgfQotLX0KLSt1c2Ug c3RyaWN0OwotK3VzZSB3YXJuaW5nczsKLSAKLSB1c2UgVGVzdDo6TW9yZTsKLSB1c2UgU3RvcmFi bGUgcXcgKGRjbG9uZSBzdG9yZSByZXRyaWV2ZSBmcmVlemUgdGhhdyBuc3RvcmUgbmZyZWV6ZSk7 Ci0tdXNlIHN0cmljdDsKLSAKLSBteSAkbWF4X3V2ID0gfjA7Ci0gbXkgJG1heF91dl9tMSA9IH4w IF4gMTsKLUBAIC0zMywzNiArMjIsMzggQEAgbXkgJG1heF91dl9tMSA9IH4wIF4gMTsKLSAjIHVz ZSBpbnRlZ2VyLgotIG15ICRtYXhfaXZfcDEgPSAkbWF4X3V2IF4gKCRtYXhfdXYgPj4gMSk7Ci0g bXkgJGxvdHNfb2ZfOUMgPSBkbyB7Ci0tICBteSAkdGVtcCA9IHNwcmludGYgIiUjeCIsIH4wOwot LSAgJHRlbXAgPX4gcy9mZi85Yy9nOwotLSAgbG9jYWwgJF5XOwotLSAgZXZhbCAkdGVtcDsKLSsg ICAgbXkgJHRlbXAgPSBzcHJpbnRmICIlI3giLCB+MDsKLSsgICAgJHRlbXAgPX4gcy9mZi85Yy9n OwotKyAgICBsb2NhbCAkXlc7Ci0rICAgIG5vIHdhcm5pbmdzICdwb3J0YWJsZSc7Ci0rICAgIGV2 YWwgJHRlbXA7Ci0gfTsKLSAKLSBteSAkbWF4X2l2ID0gfjAgPj4gMTsKLSBteSAkbWluX2l2ID0g ZG8ge3VzZSBpbnRlZ2VyOyAtJG1heF9pdi0xfTsgIyAycyBjb21wbGVtZW50IGFzc3VtcHRpb24K LSAKLS1teSBAcHJvY2Vzc2VzID0gKFsiZGNsb25lIiwgXCZkb19jbG9uZV0sCi0tICAgICAgICAg ICAgICAgICBbImZyZWV6ZS90aGF3IiwgXCZmcmVlemVfYW5kX3RoYXddLAotLSAgICAgICAgICAg ICAgICAgWyJuZnJlZXplL3RoYXciLCBcJm5mcmVlemVfYW5kX3RoYXddLAotLSAgICAgICAgICAg ICAgICAgWyJzdG9yZS9yZXRyaWV2ZSIsIFwmc3RvcmVfYW5kX3JldHJpZXZlXSwKLS0gICAgICAg ICAgICAgICAgIFsibnN0b3JlL3JldHJpZXZlIiwgXCZuc3RvcmVfYW5kX3JldHJpZXZlXSwKLS0g ICAgICAgICAgICAgICAgKTsKLS1teSBAbnVtYmVycyA9Ci0tICAoIyBJViBib3VuZHMgb2YgOCBi aXRzCi0tICAgLTEsIDAsIDEsIC0xMjcsIC0xMjgsIC0xMjksIDQyLCAxMjYsIDEyNywgMTI4LCAx MjksIDI1NCwgMjU1LCAyNTYsIDI1NywKLS0gICAjIElWIGJvdW5kcyBvZiAzMiBiaXRzCi0tICAg LTIxNDc0ODM2NDcsIC0yMTQ3NDgzNjQ4LCAtMjE0NzQ4MzY0OSwgMjE0NzQ4MzY0NiwgMjE0NzQ4 MzY0NywgMjE0NzQ4MzY0OCwKLS0gICAjIElWIGJvdW5kcwotLSAgICRtaW5faXYsIGRvIHt1c2Ug aW50ZWdlcjsgJG1pbl9pdiArIDF9LCBkbyB7dXNlIGludGVnZXI7ICRtYXhfaXYgLSAxfSwKLS0g ICAkbWF4X2l2LAotLSAgICMgVVYgYm91bmRzIGF0IDMyIGJpdHMKLS0gICAweDdGRkZGRkZGLCAw eDgwMDAwMDAwLCAweDgwMDAwMDAxLCAweEZGRkZGRkZGLCAweERFQURCRUVGLAotLSAgICMgVVYg Ym91bmRzCi0tICAgJG1heF9pdl9wMSwgJG1heF91dl9tMSwgJG1heF91diwgJGxvdHNfb2ZfOUMs Ci0tICAgIyBOVi1VViBjb252ZXJzaW9uCi0tICAgMjU1OTgzMTkyMi4wLAotLSAgKTsKLStteSBA cHJvY2Vzc2VzID0gKAotKyAgICBbImRjbG9uZSIsIFwmZG9fY2xvbmVdLAotKyAgICBbImZyZWV6 ZS90aGF3IiwgXCZmcmVlemVfYW5kX3RoYXddLAotKyAgICBbIm5mcmVlemUvdGhhdyIsIFwmbmZy ZWV6ZV9hbmRfdGhhd10sCi0rICAgIFsic3RvcmUvcmV0cmlldmUiLCBcJnN0b3JlX2FuZF9yZXRy aWV2ZV0sCi0rICAgIFsibnN0b3JlL3JldHJpZXZlIiwgXCZuc3RvcmVfYW5kX3JldHJpZXZlXSwK LSspOwotK215IEBudW1iZXJzID0gKAotKyAgICAjIElWIGJvdW5kcyBvZiA4IGJpdHMKLSsgICAg LTEsIDAsIDEsIC0xMjcsIC0xMjgsIC0xMjksIDQyLCAxMjYsIDEyNywgMTI4LCAxMjksIDI1NCwg MjU1LCAyNTYsIDI1NywKLSsgICAgIyBJViBib3VuZHMgb2YgMzIgYml0cwotKyAgICAtMjE0NzQ4 MzY0NywgLTIxNDc0ODM2NDgsIC0yMTQ3NDgzNjQ5LCAyMTQ3NDgzNjQ2LCAyMTQ3NDgzNjQ3LCAy MTQ3NDgzNjQ4LAotKyAgICAjIElWIGJvdW5kcwotKyAgICAkbWluX2l2LCBkbyB7dXNlIGludGVn ZXI7ICRtaW5faXYgKyAxfSwgZG8ge3VzZSBpbnRlZ2VyOyAkbWF4X2l2IC0gMX0sCi0rICAgICRt YXhfaXYsCi0rICAgICMgVVYgYm91bmRzIGF0IDMyIGJpdHMKLSsgICAgMHg3RkZGRkZGRiwgMHg4 MDAwMDAwMCwgMHg4MDAwMDAwMSwgMHhGRkZGRkZGRiwgMHhERUFEQkVFRiwKLSsgICAgIyBVViBi b3VuZHMKLSsgICAgJG1heF9pdl9wMSwgJG1heF91dl9tMSwgJG1heF91diwgJGxvdHNfb2ZfOUMs Ci0rICAgICMgTlYtVVYgY29udmVyc2lvbgotKyAgICAyNTU5ODMxOTIyLjAsCi0rKTsKLSAKLSBw bGFuIHRlc3RzID0+IEBwcm9jZXNzZXMgKiBAbnVtYmVycyAqIDU7Ci0gCi1AQCAtNzIsMTAyICs2 MywxMDQgQEAgZGllICJUZW1wb3JhcnkgZmlsZSAnJGZpbGUnIGFscmVhZHkgZXhpc3RzIiBpZiAt ZSAkZmlsZTsKLSBFTkQgeyB3aGlsZSAoLWYgJGZpbGUpIHt1bmxpbmsgJGZpbGUgb3IgZGllICJD YW4ndCB1bmxpbmsgJyRmaWxlJzogJCEiIH19Ci0gCi0gc3ViIGRvX2Nsb25lIHsKLS0gIG15ICRk YXRhID0gc2hpZnQ7Ci0tICBteSAkY29weSA9IGV2YWwge2RjbG9uZSAkZGF0YX07Ci0tICBpcyAo JEAsICcnLCAnU2hvdWxkIGJlIG5vIGVycm9yIGRjbG9uaW5nJyk7Ci0tICBvayAoMSwgImRsY29u ZSBpcyBvbmx5IDEgcHJvY2Vzcywgbm90IDIiKTsKLS0gIHJldHVybiAkY29weTsKLSsgICAgbXkg JGRhdGEgPSBzaGlmdDsKLSsgICAgbXkgJGNvcHkgPSBldmFsIHtkY2xvbmUgJGRhdGF9OwotKyAg ICBpcyAoJEAsICcnLCAnU2hvdWxkIGJlIG5vIGVycm9yIGRjbG9uaW5nJyk7Ci0rICAgIG9rICgx LCAiZGxjb25lIGlzIG9ubHkgMSBwcm9jZXNzLCBub3QgMiIpOwotKyAgICByZXR1cm4gJGNvcHk7 Ci0gfQotIAotIHN1YiBmcmVlemVfYW5kX3RoYXcgewotLSAgbXkgJGRhdGEgPSBzaGlmdDsKLS0g IG15ICRmcm96ZW4gPSBldmFsIHtmcmVlemUgJGRhdGF9OwotLSAgaXMgKCRALCAnJywgJ1Nob3Vs ZCBiZSBubyBlcnJvciBmcmVlemluZycpOwotLSAgbXkgJGNvcHkgPSBldmFsIHt0aGF3ICRmcm96 ZW59OwotLSAgaXMgKCRALCAnJywgJ1Nob3VsZCBiZSBubyBlcnJvciB0aGF3aW5nJyk7Ci0tICBy ZXR1cm4gJGNvcHk7Ci0rICAgIG15ICRkYXRhID0gc2hpZnQ7Ci0rICAgIG15ICRmcm96ZW4gPSBl dmFsIHtmcmVlemUgJGRhdGF9OwotKyAgICBpcyAoJEAsICcnLCAnU2hvdWxkIGJlIG5vIGVycm9y IGZyZWV6aW5nJyk7Ci0rICAgIG15ICRjb3B5ID0gZXZhbCB7dGhhdyAkZnJvemVufTsKLSsgICAg aXMgKCRALCAnJywgJ1Nob3VsZCBiZSBubyBlcnJvciB0aGF3aW5nJyk7Ci0rICAgIHJldHVybiAk Y29weTsKLSB9Ci0gCi0gc3ViIG5mcmVlemVfYW5kX3RoYXcgewotLSAgbXkgJGRhdGEgPSBzaGlm dDsKLS0gIG15ICRmcm96ZW4gPSBldmFsIHtuZnJlZXplICRkYXRhfTsKLS0gIGlzICgkQCwgJycs ICdTaG91bGQgYmUgbm8gZXJyb3IgbmZyZWV6aW5nJyk7Ci0tICBteSAkY29weSA9IGV2YWwge3Ro YXcgJGZyb3plbn07Ci0tICBpcyAoJEAsICcnLCAnU2hvdWxkIGJlIG5vIGVycm9yIHRoYXdpbmcn KTsKLS0gIHJldHVybiAkY29weTsKLSsgICAgbXkgJGRhdGEgPSBzaGlmdDsKLSsgICAgbXkgJGZy b3plbiA9IGV2YWwge25mcmVlemUgJGRhdGF9OwotKyAgICBpcyAoJEAsICcnLCAnU2hvdWxkIGJl IG5vIGVycm9yIG5mcmVlemluZycpOwotKyAgICBteSAkY29weSA9IGV2YWwge3RoYXcgJGZyb3pl bn07Ci0rICAgIGlzICgkQCwgJycsICdTaG91bGQgYmUgbm8gZXJyb3IgdGhhd2luZycpOwotKyAg ICByZXR1cm4gJGNvcHk7Ci0gfQotIAotIHN1YiBzdG9yZV9hbmRfcmV0cmlldmUgewotLSAgbXkg JGRhdGEgPSBzaGlmdDsKLS0gIG15ICRmcm96ZW4gPSBldmFsIHtzdG9yZSAkZGF0YSwgJGZpbGV9 OwotLSAgaXMgKCRALCAnJywgJ1Nob3VsZCBiZSBubyBlcnJvciBzdG9yaW5nJyk7Ci0tICBteSAk Y29weSA9IGV2YWwge3JldHJpZXZlICRmaWxlfTsKLS0gIGlzICgkQCwgJycsICdTaG91bGQgYmUg bm8gZXJyb3IgcmV0cmlldmluZycpOwotLSAgcmV0dXJuICRjb3B5OwotKyAgICBteSAkZGF0YSA9 IHNoaWZ0OwotKyAgICBteSAkZnJvemVuID0gZXZhbCB7c3RvcmUgJGRhdGEsICRmaWxlfTsKLSsg ICAgaXMgKCRALCAnJywgJ1Nob3VsZCBiZSBubyBlcnJvciBzdG9yaW5nJyk7Ci0rICAgIG15ICRj b3B5ID0gZXZhbCB7cmV0cmlldmUgJGZpbGV9OwotKyAgICBpcyAoJEAsICcnLCAnU2hvdWxkIGJl IG5vIGVycm9yIHJldHJpZXZpbmcnKTsKLSsgICAgcmV0dXJuICRjb3B5OwotIH0KLSAKLSBzdWIg bnN0b3JlX2FuZF9yZXRyaWV2ZSB7Ci0tICBteSAkZGF0YSA9IHNoaWZ0OwotLSAgbXkgJGZyb3pl biA9IGV2YWwge25zdG9yZSAkZGF0YSwgJGZpbGV9OwotLSAgaXMgKCRALCAnJywgJ1Nob3VsZCBi ZSBubyBlcnJvciBzdG9yaW5nJyk7Ci0tICBteSAkY29weSA9IGV2YWwge3JldHJpZXZlICRmaWxl fTsKLS0gIGlzICgkQCwgJycsICdTaG91bGQgYmUgbm8gZXJyb3IgcmV0cmlldmluZycpOwotLSAg cmV0dXJuICRjb3B5OwotKyAgICBteSAkZGF0YSA9IHNoaWZ0OwotKyAgICBteSAkZnJvemVuID0g ZXZhbCB7bnN0b3JlICRkYXRhLCAkZmlsZX07Ci0rICAgIGlzICgkQCwgJycsICdTaG91bGQgYmUg bm8gZXJyb3Igc3RvcmluZycpOwotKyAgICBteSAkY29weSA9IGV2YWwge3JldHJpZXZlICRmaWxl fTsKLSsgICAgaXMgKCRALCAnJywgJ1Nob3VsZCBiZSBubyBlcnJvciByZXRyaWV2aW5nJyk7Ci0r ICAgIHJldHVybiAkY29weTsKLSB9Ci0gCi0gZm9yZWFjaCAoQHByb2Nlc3NlcykgewotLSAgbXkg KCRwcm9jZXNzLCAkc3ViKSA9IEAkXzsKLS0gIGZvcmVhY2ggbXkgJG51bWJlciAoQG51bWJlcnMp IHsKLS0gICAgIyBhcyAkbnVtYmVyIGlzIGFuIGFsaWFzIGludG8gQG51bWJlcnMsIHdlIGRvbid0 IHdhbnQgYW55IHNpZGUgZWZmZWN0cyBvZgotLSAgICAjIGNvbnZlcnNpb24gbWFjcm9zIGFmZmVj dGluZyBsYXRlciBydW5zLCBzbyBwYXNzIGEgY29weSB0byBTdG9yYWJsZToKLS0gICAgbXkgJGNv cHkxID0gbXkgJGNvcHkyID0gbXkgJGNvcHkwID0gJG51bWJlcjsKLS0gICAgbXkgJGNvcHlfcyA9 ICYkc3ViIChcJGNvcHkwKTsKLS0gICAgaWYgKGlzIChyZWYgJGNvcHlfcywgIlNDQUxBUiIsICJn b3QgYmFjayBhIHNjYWxhciByZWY/IikpIHsKLS0gICAgICAjIFRlc3QgaW5zaWRlIHVzZSBpbnRl Z2VyIHRvIHNlZSBpZiB0aGUgYml0IHBhdHRlcm4gaXMgaWRlbnRpY2FsCi0tICAgICAgIyBhbmQg b3V0c2lkZSB0byBzZWUgaWYgdGhlIHNpZ24gaXMgcmlnaHQuCi0tICAgICAgIyBPbiA1Ljggd2Ug ZG9uJ3QgbmVlZCB0aGlzIHRyaWNrZXJ5IGFueW1vcmUuCi0tICAgICAgIyBXZSByZWFsbHkgZG8g bmVlZCAyIGNvcGllcyBoZXJlLCBhcyBjb252ZXJzaW9uIG1heSBoYXZlIHNpZGUgZWZmZWN0Ci0t ICAgICAgIyBidWdzLiBJbiBwYXJ0aWN1bGFyLCBJIGtub3cgdGhhdCB0aGlzIGhhcHBlbnM6Ci0t ICAgICAgIyBwZXJsNS4wMDUwMyAtbGUgJyRhID0gIi0yMTQ3NDgzNjQ5IjsgJGEgJiAwOyBwcmlu dCAkYTsgcHJpbnQgJGErMScKLS0gICAgICAjIC0yMTQ3NDgzNjQ5Ci0tICAgICAgIyAyMTQ3NDgz NjQ4Ci0tCi0tICAgICAgbXkgJGNvcHlfczEgPSBteSAkY29weV9zMiA9ICQkY29weV9zOwotLSAg ICAgICMgT24gNS44IGNhbiBkbyB0aGlzIHdpdGggYSBzdHJhaWdodCA9PSwgZHVlIHRvIHRoZSBp bnRlZ2VyL2Zsb2F0IG1hdGhzCi0tICAgICAgIyBvbiA1LjYgY2FuJ3QgZG8gdGhpcyB3aXRoCi0t ICAgICAgIyBteSAkZXEgPSBkbyB7dXNlIGludGVnZXI7ICRjb3B5X3MxID09ICRjb3B5MX0gJiYg JGNvcHlfczEgPT0gJGNvcHkxOwotLSAgICAgICMgYmVjYXVzZSBvbiBidWlsZHMgd2l0aCBJViBh cyBsb25nIGxvbmcgaXQgdGlja2xlcyBidWdzLgotLSAgICAgICMgKFVuY29tbWVudCBpdCBhbmQg dGhlIERldmVsOjpQZWVrIGxpbmUgYmVsb3cgdG8gc2VlIHRoZSBtZXNzZWQgdXAKLS0gICAgICAj IHN0YXRlIG9mIHRoZSBzY2FsYXIsIHdpdGggUFYgc2hvd2luZyB0aGUgY29ycmVjdCBzdHJpbmcg Zm9yIHRoZQotLSAgICAgICMgbnVtYmVyLCBhbmQgSVYgaG9sZGluZyBhIGJvZ3VzIHZhbHVlIHdo aWNoIGhhcyBiZWVuIHRydW5jYXRlZCB0byAzMiBiaXRzCi0tCi0tICAgICAgIyBTbywgY2hlY2sg dGhlIGJpdCBwYXR0ZXJucyBhcmUgaWRlbnRpY2FsLCBhbmQgY2hlY2sgdGhhdCB0aGUgc2lnbiBp cyB0aGUKLS0gICAgICAjIHNhbWUuIFRoaXMgd29ya3Mgb24gYWxsIHRoZSB2ZXJzaW9ucyBpbiBh bGwgdGhlIHNpemVzLgotLSAgICAgICMgJGVxID0gICYmICgoJGNvcHlfczEgPD0+IDApID09ICgk Y29weTEgPD0+IDApKTsKLS0gICAgICAjIFNwbGl0IHRoaXMgaW50byAyIHRlc3RzLCB0byBjYXRl ciBmb3IgNS4wMDVfMDMKLS0KLS0gICAgICAjIEFhcmdoLiBFdmVuIHRoaXMgZG9lc24ndCB3b3Jr IGJlY2F1c2UgNS42Lnggc2VuZHMgdmFsdWVzIHdpdGggKHNhbWUKLS0gICAgICAjIG51bWJlciBv ZiBkZWNpbWFsIGRpZ2l0cyBhcyB+MCArIDEpIHZpYSBhdG9mLiBTbyBeIGlzIGdldHRpbmcgc3Ry aW5ncwotLSAgICAgICMgY2FzdCB0byBkb3VibGVzIGNhc3QgdG8gaW50ZWdlcnMuIEFuZCB0aGF0 IHRydW5jYXRlcyBsb3cgb3JkZXIgYml0cy4KLS0gICAgICAjIG15ICRiaXQgPSBvayAoKCRjb3B5 X3MxIF4gJGNvcHkxKSA9PSAwLCAiJHByb2Nlc3MgJGNvcHkxIChiaXRwYXR0ZXJuKSIpOwotLQot LSAgICAgICMgT2ggd2VsbDsgYXQgbGVhc3QgdGhlIHBhcnNlciBnZXRzIGl0IHJpZ2h0LiA6LSkK LS0gICAgICBteSAkY29weV9zMyA9IGV2YWwgJGNvcHlfczE7Ci0tICAgICAgZGllICJXYXMgc3Vw cG9zZWQgdG8gaGF2ZSBudW1iZXIgJGNvcHlfczMsIGdvdCBlcnJvciAkQCIKLS0JdW5sZXNzIGRl ZmluZWQgJGNvcHlfczM7Ci0tICAgICAgbXkgJGJpdCA9IG9rICgoJGNvcHlfczMgXiAkY29weTEp ID09IDAsICIkcHJvY2VzcyAkY29weTEgKGJpdHBhdHRlcm4pIik7Ci0tICAgICAgbXkgJHNpZ24g PSBvayAoKCRjb3B5X3MyIDw9PiAwKSA9PSAoJGNvcHkyIDw9PiAwKSwKLS0gICAgICAgICAgICAg ICAgICAgICAiJHByb2Nlc3MgJGNvcHkxIChzaWduKSIpOwotLQotLSAgICAgIHVubGVzcyAoJGJp dCBhbmQgJHNpZ24pIHsKLS0gICAgICAgIHByaW50ZiAiIyBQYXNzZWQgaW4gJXMgICglI3gsICVp KVxuIyBnb3QgYmFjayAnJXMnICglI3gsICVpKVxuIiwKLS0gICAgICAgICAgJGNvcHkxLCAkY29w eTEsICRjb3B5MSwgJGNvcHlfczEsICRjb3B5X3MxLCAkY29weV9zMTsKLS0gICAgICAgICMgdXNl IERldmVsOjpQZWVrOyBEdW1wICRudW1iZXI7IER1bXAgJGNvcHkxOyBEdW1wICRjb3B5X3MxOwot LSAgICAgIH0KLS0gICAgICAjIHVubGVzcyAoJGJpdCkgeyB1c2UgRGV2ZWw6OlBlZWs7IER1bXAg JGNvcHlfczE7IER1bXAgJCRjb3B5X3M7IH0KLS0gICAgfSBlbHNlIHsKLS0gICAgICBmYWlsICgi JHByb2Nlc3MgJGNvcHkxIik7Ci0tICAgICAgZmFpbCAoIiRwcm9jZXNzICRjb3B5MSIpOwotKyAg ICBteSAoJHByb2Nlc3MsICRzdWIpID0gQCRfOwotKyAgICBmb3JlYWNoIG15ICRudW1iZXIgKEBu dW1iZXJzKSB7Ci0rICAgICAgICAjIGFzICRudW1iZXIgaXMgYW4gYWxpYXMgaW50byBAbnVtYmVy cywgd2UgZG9uJ3Qgd2FudCBhbnkgc2lkZSBlZmZlY3RzIG9mCi0rICAgICAgICAjIGNvbnZlcnNp b24gbWFjcm9zIGFmZmVjdGluZyBsYXRlciBydW5zLCBzbyBwYXNzIGEgY29weSB0byBTdG9yYWJs ZToKLSsgICAgICAgIG15ICRjb3B5MSA9IG15ICRjb3B5MiA9IG15ICRjb3B5MCA9ICRudW1iZXI7 Ci0rICAgICAgICBteSAkY29weV9zID0gJiRzdWIgKFwkY29weTApOwotKyAgICAgICAgaWYgKGlz IChyZWYgJGNvcHlfcywgIlNDQUxBUiIsICJnb3QgYmFjayBhIHNjYWxhciByZWY/IikpIHsKLSsg ICAgICAgICAgICAjIFRlc3QgaW5zaWRlIHVzZSBpbnRlZ2VyIHRvIHNlZSBpZiB0aGUgYml0IHBh dHRlcm4gaXMgaWRlbnRpY2FsCi0rICAgICAgICAgICAgIyBhbmQgb3V0c2lkZSB0byBzZWUgaWYg dGhlIHNpZ24gaXMgcmlnaHQuCi0rICAgICAgICAgICAgIyBPbiA1Ljggd2UgZG9uJ3QgbmVlZCB0 aGlzIHRyaWNrZXJ5IGFueW1vcmUuCi0rICAgICAgICAgICAgIyBXZSByZWFsbHkgZG8gbmVlZCAy IGNvcGllcyBoZXJlLCBhcyBjb252ZXJzaW9uIG1heSBoYXZlIHNpZGUgZWZmZWN0Ci0rICAgICAg ICAgICAgIyBidWdzLiBJbiBwYXJ0aWN1bGFyLCBJIGtub3cgdGhhdCB0aGlzIGhhcHBlbnM6Ci0r ICAgICAgICAgICAgIyBwZXJsNS4wMDUwMyAtbGUgJyRhID0gIi0yMTQ3NDgzNjQ5IjsgJGEgJiAw OyBwcmludCAkYTsgcHJpbnQgJGErMScKLSsgICAgICAgICAgICAjIC0yMTQ3NDgzNjQ5Ci0rICAg ICAgICAgICAgIyAyMTQ3NDgzNjQ4Ci0rCi0rICAgICAgICAgICAgbXkgJGNvcHlfczEgPSBteSAk Y29weV9zMiA9ICQkY29weV9zOwotKyAgICAgICAgICAgICMgT24gNS44IGNhbiBkbyB0aGlzIHdp dGggYSBzdHJhaWdodCA9PSwgZHVlIHRvIHRoZSBpbnRlZ2VyL2Zsb2F0IG1hdGhzCi0rICAgICAg ICAgICAgIyBvbiA1LjYgY2FuJ3QgZG8gdGhpcyB3aXRoCi0rICAgICAgICAgICAgIyBteSAkZXEg PSBkbyB7dXNlIGludGVnZXI7ICRjb3B5X3MxID09ICRjb3B5MX0gJiYgJGNvcHlfczEgPT0gJGNv cHkxOwotKyAgICAgICAgICAgICMgYmVjYXVzZSBvbiBidWlsZHMgd2l0aCBJViBhcyBsb25nIGxv bmcgaXQgdGlja2xlcyBidWdzLgotKyAgICAgICAgICAgICMgKFVuY29tbWVudCBpdCBhbmQgdGhl IERldmVsOjpQZWVrIGxpbmUgYmVsb3cgdG8gc2VlIHRoZSBtZXNzZWQgdXAKLSsgICAgICAgICAg ICAjIHN0YXRlIG9mIHRoZSBzY2FsYXIsIHdpdGggUFYgc2hvd2luZyB0aGUgY29ycmVjdCBzdHJp bmcgZm9yIHRoZQotKyAgICAgICAgICAgICMgbnVtYmVyLCBhbmQgSVYgaG9sZGluZyBhIGJvZ3Vz IHZhbHVlIHdoaWNoIGhhcyBiZWVuIHRydW5jYXRlZCB0byAzMiBiaXRzCi0rCi0rICAgICAgICAg ICAgIyBTbywgY2hlY2sgdGhlIGJpdCBwYXR0ZXJucyBhcmUgaWRlbnRpY2FsLCBhbmQgY2hlY2sg dGhhdCB0aGUgc2lnbiBpcyB0aGUKLSsgICAgICAgICAgICAjIHNhbWUuIFRoaXMgd29ya3Mgb24g YWxsIHRoZSB2ZXJzaW9ucyBpbiBhbGwgdGhlIHNpemVzLgotKyAgICAgICAgICAgICMgJGVxID0g ICYmICgoJGNvcHlfczEgPD0+IDApID09ICgkY29weTEgPD0+IDApKTsKLSsgICAgICAgICAgICAj IFNwbGl0IHRoaXMgaW50byAyIHRlc3RzLCB0byBjYXRlciBmb3IgNS4wMDVfMDMKLSsKLSsgICAg ICAgICAgICAjIEFhcmdoLiBFdmVuIHRoaXMgZG9lc24ndCB3b3JrIGJlY2F1c2UgNS42Lnggc2Vu ZHMgdmFsdWVzIHdpdGggKHNhbWUKLSsgICAgICAgICAgICAjIG51bWJlciBvZiBkZWNpbWFsIGRp Z2l0cyBhcyB+MCArIDEpIHZpYSBhdG9mLiBTbyBeIGlzIGdldHRpbmcgc3RyaW5ncwotKyAgICAg ICAgICAgICMgY2FzdCB0byBkb3VibGVzIGNhc3QgdG8gaW50ZWdlcnMuIEFuZCB0aGF0IHRydW5j YXRlcyBsb3cgb3JkZXIgYml0cy4KLSsgICAgICAgICAgICAjIG15ICRiaXQgPSBvayAoKCRjb3B5 X3MxIF4gJGNvcHkxKSA9PSAwLCAiJHByb2Nlc3MgJGNvcHkxIChiaXRwYXR0ZXJuKSIpOwotKwot KyAgICAgICAgICAgICMgT2ggd2VsbDsgYXQgbGVhc3QgdGhlIHBhcnNlciBnZXRzIGl0IHJpZ2h0 LiA6LSkKLSsgICAgICAgICAgICBteSAkY29weV9zMyA9IGV2YWwgJGNvcHlfczE7Ci0rICAgICAg ICAgICAgZGllICJXYXMgc3VwcG9zZWQgdG8gaGF2ZSBudW1iZXIgJGNvcHlfczMsIGdvdCBlcnJv ciAkQCIKLSsgICAgICAgICAgICAgICAgdW5sZXNzIGRlZmluZWQgJGNvcHlfczM7Ci0rICAgICAg ICAgICAgbXkgJGJpdCA9IG9rICgoJGNvcHlfczMgXiAkY29weTEpID09IDAsICIkcHJvY2VzcyAk Y29weTEgKGJpdHBhdHRlcm4pIik7Ci0rICAgICAgICAgICAgbXkgJHNpZ24gPSBvayAoCi0rICAg ICAgICAgICAgICAgICgkY29weV9zMiA8PT4gMCkgPT0gKCRjb3B5MiA8PT4gMCksCi0rICAgICAg ICAgICAgICAgICIkcHJvY2VzcyAkY29weTEgKHNpZ24pIgotKyAgICAgICAgICAgICk7Ci0rCi0r ICAgICAgICAgICAgdW5sZXNzICgkYml0IGFuZCAkc2lnbikgewotKyAgICAgICAgICAgICAgICBw cmludGYgIiMgUGFzc2VkIGluICVzICAoJSN4LCAlaSlcbiMgZ290IGJhY2sgJyVzJyAoJSN4LCAl aSlcbiIsCi0rICAgICAgICAgICAgICAgICAgICAkY29weTEsICRjb3B5MSwgJGNvcHkxLCAkY29w eV9zMSwgJGNvcHlfczEsICRjb3B5X3MxOwotKyAgICAgICAgICAgICAgICAjIHVzZSBEZXZlbDo6 UGVlazsgRHVtcCAkbnVtYmVyOyBEdW1wICRjb3B5MTsgRHVtcCAkY29weV9zMTsKLSsgICAgICAg ICAgICB9Ci0rICAgICAgICAgICAgIyB1bmxlc3MgKCRiaXQpIHsgdXNlIERldmVsOjpQZWVrOyBE dW1wICRjb3B5X3MxOyBEdW1wICQkY29weV9zOyB9Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAg ICAgICAgIGZhaWwgKCIkcHJvY2VzcyAkY29weTEiKTsKLSsgICAgICAgICAgICBmYWlsICgiJHBy b2Nlc3MgJGNvcHkxIik7Ci0rICAgICAgICB9Ci0gICAgIH0KLS0gIH0KLSB9Ci1kaWZmIC0tZ2l0 IGEvdC9pbnRlcndvcms1Ni50IGIvdC9pbnRlcndvcms1Ni50Ci1pbmRleCAyMzljOGMxLi40OWFl NDRmIDEwMDY0NAotLS0tIGEvdC9pbnRlcndvcms1Ni50Ci0rKysgYi90L2ludGVyd29yazU2LnQK LUBAIC02LDIwICs2LDE1IEBACi0gIyAgaW4gdGhlIFJFQURNRSBmaWxlIHRoYXQgY29tZXMgd2l0 aCB0aGUgZGlzdHJpYnV0aW9uLgotICMKLSAKLS0jIEkgb3VnaHQgdG8ga2VlcCB0aGlzIHRlc3Qg ZWFzaWx5IGJhY2t3YXJkcyBjb21wYXRpYmxlIHRvIDUuMDA0LCBzbyBubwotLSMgcXIvLzsKLS0K LSAjIFRoaXMgdGVzdCBjaGVja3Mgd2hldGhlciB0aGUga2x1ZGdlIHRvIGludGVyd29yayB3aXRo IDUuNiBTdG9yYWJsZXMgY29tcGlsZWQKLSAjIG9uIFVuaXggc3lzdGVtcyB3aXRoIElWIGFzIGxv bmcgbG9uZyB3b3Jrcy4KLSAKLSt1c2Ugc3RyaWN0OwotK3VzZSB3YXJuaW5nczsKLSsKLSt1c2Ug Q29uZmlnOwotIHN1YiBCRUdJTiB7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QnOwotLSAgICB1bnNo aWZ0IEBJTkMsICd0L2NvbXBhdCcgaWYgJF0gPCA1LjAwNjAwMjsKLS0gICAgcmVxdWlyZSBDb25m aWc7IGltcG9ydCBDb25maWc7Ci0tICAgIGlmICgkRU5We1BFUkxfQ09SRX0gYW5kICRDb25maWd7 J2V4dGVuc2lvbnMnfSAhfiAvXGJTdG9yYWJsZVxiLykgewotLSAgICAgICAgcHJpbnQgIjEuLjAg IyBTa2lwOiBTdG9yYWJsZSB3YXMgbm90IGJ1aWx0XG4iOwotLSAgICAgICAgZXhpdCAwOwotLSAg ICB9Ci0rICAgIHVuc2hpZnQgQElOQywgJ3QvbGliJzsKLSAgICAgdW5sZXNzICgkQ29uZmlne2l2 c2l6ZX0gYW5kICRDb25maWd7aXZzaXplfSA+ICRDb25maWd7bG9uZ3NpemV9KSB7Ci0gICAgICAg ICBwcmludCAiMS4uMCAjIFNraXA6IFlvdXIgSVZzIGFyZSBubyBsYXJnZXIgdGhhbiB5b3VyIGxv bmdzXG4iOwotICAgICAgICAgZXhpdCAwOwotQEAgLTI3LDcgKzIyLDYgQEAgc3ViIEJFR0lOIHsK LSB9Ci0gCi0gdXNlIFN0b3JhYmxlIHF3KGZyZWV6ZSB0aGF3KTsKLS11c2Ugc3RyaWN0OwotIHVz ZSBUZXN0OjpNb3JlIHRlc3RzPT4zMDsKLSAKLSBvdXIgKCV0ZXN0cyk7Ci1AQCAtNzAsMTUgKzY0 LDE1IEBAIFNLSVA6IHsKLSAgICAgICAgIHByaW50IDw8ICJFT00iOwotICMgTm8gdGVzdCBkYXRh IGZvciBTdG9yYWJsZSAxLnggZm9yOgotICMKLS0jIGJ5dGVvcmRlcgkgJyRDb25maWd7Ynl0ZW9y ZGVyfScKLS0jIHNpemVvZihpbnQpCSAkJGhlYWRlcntpbnRzaXplfQotLSMgc2l6ZW9mKGxvbmcp CSAkJGhlYWRlcntsb25nc2l6ZX0KLS0jIHNpemVvZihjaGFyICopICQkaGVhZGVye3B0cnNpemV9 Ci0tIyBzaXplb2YoTlYpCSAkJGhlYWRlcntudnNpemV9Ci0rIyBieXRlb3JkZXIgICAgICAgICAn JENvbmZpZ3tieXRlb3JkZXJ9JwotKyMgc2l6ZW9mKGludCkgICAgICAgJCRoZWFkZXJ7aW50c2l6 ZX0KLSsjIHNpemVvZihsb25nKSAgICAgICQkaGVhZGVye2xvbmdzaXplfQotKyMgc2l6ZW9mKGNo YXIgKikgICAgJCRoZWFkZXJ7cHRyc2l6ZX0KLSsjIHNpemVvZihOVikgICAgICAgICQkaGVhZGVy e252c2l6ZX0KLSAKLSAjIElmIHlvdSBoYXZlIFN0b3JhYmxlIDEueCBidWlsdCB3aXRoIHBlcmwg NS42Lnggb24gdGhpcyBwbGF0Zm9ybSwgcGxlYXNlCi0gIyBtYWtlXzU2X2ludGVyd29yay5wbCB0 byBnZW5lcmF0ZSB0ZXN0IGRhdGEsIGFuZCBhcHBlbmQgdGhlIHRlc3QgZGF0YSB0bwotLSMgdGhp cyB0ZXN0LiAKLSsjIHRoaXMgdGVzdC4KLSAjIFlvdSBtYXkgZmluZCB0aGF0IG1ha2VfNTZfaW50 ZXJ3b3JrLnBsIHJlcG9ydHMgdGhhdCB5b3VyIHBsYXRmb3JtIGhhcyBubwotICMgaW50ZXJ3b3Jr aW5nIHByb2JsZW1zLCBpbiB3aGljaCBjYXNlIHlvdSBuZWVkIGRvIG5vdGhpbmcuCi0gRU9NCi1A QCAtODcsNyArODEsNyBAQCBFT00KLSAgICAgbXkgJHJlc3VsdCA9IGV2YWwge3RoYXcgJHJlYWxf dGhpbmd9OwotICAgICBpcyAoJHJlc3VsdCwgdW5kZWYsICJCeSBkZWZhdWx0IHNob3VsZCBub3Qg YmUgYWJsZSB0byB0aGF3Iik7Ci0gICAgIGxpa2UgKCRALCBxci9CeXRlIG9yZGVyIGlzIG5vdCBj b21wYXRpYmxlLywKLS0gICAgICAgICAgImJlY2F1c2UgdGhlIGhlYWRlciBieXRlIG9yZGVyIHN0 cmluZ3MgZGlmZmVyIik7Ci0rICAgICAgICAiYmVjYXVzZSB0aGUgaGVhZGVyIGJ5dGUgb3JkZXIg c3RyaW5ncyBkaWZmZXIiKTsKLSAgICAgbG9jYWwgJFN0b3JhYmxlOjppbnRlcndvcmtfNTZfNjRi aXQgPSAxOwotICAgICAkcmVzdWx0ID0gZXZhbCB7dGhhdyAkcmVhbF90aGluZ307Ci0gICAgIGlz YV9vayAoJHJlc3VsdCwgJ0FSUkFZJywgIldpdGggZmxhZyBzaG91bGQgbm93IHRoYXciKTsKLUBA IC05OSw4ICs5Myw4IEBAIEVPTQotIAotICAgICBpcyAoQCRyZXN1bHQsIDQsICI0IGVsZW1lbnRz IGluIGFycmF5Iik7Ci0gICAgIGxpa2UgKCQkcmVzdWx0WzBdLAotLSAgICAgICAgICBxci9eVGhp cyBmaWxlIHdhcyB3cml0dGVuIHdpdGggWzAtOS5dKyBvbiBwZXJsIFswLTkuXStcei8sCi0tICAg ICAgICAgIjFzdCBlbGVtZW50Iik7Ci0rICAgICAgICBxci9eVGhpcyBmaWxlIHdhcyB3cml0dGVu IHdpdGggWzAtOS5dKyBvbiBwZXJsIFswLTkuXStcei8sCi0rICAgICAgICAiMXN0IGVsZW1lbnQi KTsKLSAgICAgaXMgKCQkcmVzdWx0WzFdLCAiJGtpbmdkb20gd2FzIGNvcnJlY3QiLCAiMm5kIGVs ZW1lbnQiKTsKLSAgICAgY21wX29rICgkJHJlc3VsdFsyXSBeICR2YWx1ZSwgJz09JywgMCwgIjNy ZCBlbGVtZW50Iikgb3IKLSAgICAgICAgIHByaW50ZiAiIyBleHBlY3RlZCAlI1gsIGdvdCAlI1hc biIsICR2YWx1ZSwgJCRyZXN1bHRbMl07Ci1AQCAtMTIxLDEyICsxMTUsMTIgQEAgbXkgJHRlc3Rf a2x1ZGdlOwotIG15ICRoZWFkZXJfa2x1ZGdlID0gU3RvcmFibGU6OnJlYWRfbWFnaWMgKCR0ZXN0 X2tsdWRnZSk7Ci0gCi0gY21wX29rIChsZW5ndGggKCRoZWFkZXJfa2x1ZGdlLT57Ynl0ZW9yZGVy fSksICc9PScsICRDb25maWd7bG9uZ3NpemV9LAotLSAgICAgICAgIldpdGggNS42IGludGVyd29y ayBrbHVkZ2UgYnl0ZW9yZGVyIHN0cmluZyBzaG91bGQgYmUgc2FtZSBzaXplIGFzIGxvbmciCi0t ICAgICAgICk7Ci0rICAgICJXaXRoIDUuNiBpbnRlcndvcmsga2x1ZGdlIGJ5dGVvcmRlciBzdHJp bmcgc2hvdWxkIGJlIHNhbWUgc2l6ZSBhcyBsb25nIgotKyk7Ci0gJHJlc3VsdCA9IGV2YWwge3Ro YXcgJHRlc3Rfa2x1ZGdlfTsKLSBpcyAoJHJlc3VsdCwgdW5kZWYsICJCeSBkZWZhdWx0IHNob3Vs ZCBub3QgYmUgYWJsZSB0byB0aGF3Iik7Ci0gbGlrZSAoJEAsIHFyL0J5dGUgb3JkZXIgaXMgbm90 IGNvbXBhdGlibGUvLAotLSAgICAgICJiZWNhdXNlIHRoZSBoZWFkZXIgYnl0ZSBvcmRlciBzdHJp bmdzIGRpZmZlciIpOwotKyAgICAiYmVjYXVzZSB0aGUgaGVhZGVyIGJ5dGUgb3JkZXIgc3RyaW5n cyBkaWZmZXIiKTsKLSAKLSAkcmVzdWx0ID0gZXZhbCB7dGhhdyAkdGVzdH07Ci0gaXNhX29rICgk cmVzdWx0LCAnU0NBTEFSJywgIkNIT1JVUzogY2hlY2sgdGhhd2luZyB0ZXN0IGRhdGEiKTsKLUBA IC0xNDQsNyArMTM4LDcgQEAgaXMgKCQkcmVzdWx0LCAnSGVsbCcsICIgICAgICAgIGFuZCBnaXZl cyB0aGUgZXhwZWN0ZWQgZGF0YSIpOwotICAgICAkcmVzdWx0ID0gZXZhbCB7dGhhdyAkdGVzdH07 Ci0gICAgIGlzICgkcmVzdWx0LCB1bmRlZiwgIkJ1dCBub3cgY2FuJ3QgdGhhdyByZWFsIGRhdGEi KTsKLSAgICAgbGlrZSAoJEAsIHFyL0J5dGUgb3JkZXIgaXMgbm90IGNvbXBhdGlibGUvLAotLSAg ICAgICAgICAiYmVjYXVzZSB0aGUgaGVhZGVyIGJ5dGUgb3JkZXIgc3RyaW5ncyBkaWZmZXIiKTsK LSsgICAgICAgICJiZWNhdXNlIHRoZSBoZWFkZXIgYnl0ZSBvcmRlciBzdHJpbmdzIGRpZmZlciIp OwotIH0KLSAKLSAjICBBbGwgdG9nZXRoZXIgbm93OgotZGlmZiAtLWdpdCBhL3QvanVzdF9wbGFp bl9uYXN0eS50IGIvdC9qdXN0X3BsYWluX25hc3R5LnQKLWluZGV4IDU0MjM3MTkuLmVkOTkwNjgg MTAwNjQ0Ci0tLS0gYS90L2p1c3RfcGxhaW5fbmFzdHkudAotKysrIGIvdC9qdXN0X3BsYWluX25h c3R5LnQKLUBAIC0xLDM2ICsxLDI0IEBACi0tIyEvdXNyL2Jpbi9wZXJsCi0rIyEuL3BlcmwKLSAK LSAjIFRoaXMgaXMgYSB0ZXN0IHN1aXRlIHRvIGNvdmVyIGFsbCB0aGUgbmFzdHkgYW5kIGhvcnJp YmxlIGRhdGEKLSAjIHN0cnVjdHVyZXMgdGhhdCBjYXVzZSBiaXphcnJlIGNvcm5lciBjYXNlcy4K LSAKLSAjICBFdmVyeW9uZSdzIGludml0ZWQhIDotRAotIAotLXN1YiBCRUdJTiB7Ci0tICAgIHVu c2hpZnQgQElOQywgJ3QnOwotLSAgICB1bnNoaWZ0IEBJTkMsICd0L2NvbXBhdCcgaWYgJF0gPCA1 LjAwNjAwMjsKLS0gICAgcmVxdWlyZSBDb25maWc7IGltcG9ydCBDb25maWc7Ci0tICAgIGlmICgk RU5We1BFUkxfQ09SRX0gYW5kICRDb25maWd7J2V4dGVuc2lvbnMnfSAhfiAvXGJTdG9yYWJsZVxi LykgewotLSAgICAgICAgcHJpbnQgIjEuLjAgIyBTa2lwOiBTdG9yYWJsZSB3YXMgbm90IGJ1aWx0 XG4iOwotLSAgICAgICAgZXhpdCAwOwotLSAgICB9Ci0tfQotLQotIHVzZSBzdHJpY3Q7Ci0rdXNl IHdhcm5pbmdzOwotKwotK3VzZSBUZXN0OjpNb3JlOwotK3VzZSBGaWxlOjpTcGVjOwotKwotIEJF R0lOIHsKLSAgICAgaWYgKCFldmFsIHF7Ci0tICAgICAgICB1c2UgVGVzdDo6TW9yZTsKLSAgICAg ICAgIHVzZSBCOjpEZXBhcnNlIDAuNjE7Ci0tICAgICAgICB1c2UgNS4wMDY7Ci0gICAgICAgICAx OwotICAgICB9KSB7Ci0tICAgICAgICBwcmludCAiMS4uMCAjIHNraXA6IHRlc3RzIG9ubHkgd29y ayB3aXRoIEI6OkRlcGFyc2UgMC42MSBhbmQgYXQgbGVhc3QgcGVybCA1LjYuMFxuIjsKLSsgICAg ICAgIHByaW50ICIxLi4wICMgc2tpcDogdGVzdHMgb25seSB3b3JrIHdpdGggQjo6RGVwYXJzZSAw LjYxXG4iOwotICAgICAgICAgZXhpdDsKLSAgICAgfQotLSAgICByZXF1aXJlIEZpbGU6OlNwZWM7 Ci0tICAgIGlmICgkRmlsZTo6U3BlYzo6VkVSU0lPTiA8IDAuOCkgewotLSAgICAgICAgcHJpbnQg IjEuLjAgIyBTa2lwOiBuZXdlciBGaWxlOjpTcGVjIG5lZWRlZFxuIjsKLS0gICAgICAgIGV4aXQg MDsKLS0gICAgfQotIH0KLSAKLSB1c2UgU3RvcmFibGUgcXcoZnJlZXplIHRoYXcpOwotQEAgLTQ0 LDExICszMiwxMSBAQCBCRUdJTiB7Ci0gCi0gewotICAgICBwYWNrYWdlIEJhbmFuYTsKLS0gICAg dXNlIG92ZXJsb2FkICAgCi0tCSc8PT4nID0+IFwmY29tcGFyZSwKLS0JICAgICc9PScgPT4gXCZl cXVhbCwKLS0JCSciIicgPT4gXCZyZWFsLAotLQkJZmFsbGJhY2sgPT4gMTsKLSsgICAgdXNlIG92 ZXJsb2FkCi0rICAgICAgICAnPD0+JyA9PiBcJmNvbXBhcmUsCi0rICAgICAgICAnPT0nID0+IFwm ZXF1YWwsCi0rICAgICAgICAnIiInID0+IFwmcmVhbCwKLSsgICAgICAgIGZhbGxiYWNrID0+IDE7 Ci0gICAgIHN1YiBjb21wYXJlIHsgcmV0dXJuIGludChyYW5kKDMpKS0xIH07Ci0gICAgIHN1YiBl cXVhbCB7IHJldHVybiAxIGlmIHJhbmQoMSkgPiAwLjUgfQotICAgICBzdWIgcmVhbCB7IHJldHVy biAia2VlcCBpdCBzbyIgfQotQEAgLTU2LDE0ICs0NCwxNCBAQCBCRUdJTiB7Ci0gCi0gbXkgKEBh KTsKLSAKLS1mb3IgbXkgJGRidW4gKDEsIDApIHsgICMgZGJ1biAtIGRvbid0IGJlIHV0dGVybHkg bmFzdHkgLSBiZWluZyB1dHRlcmx5Ci0tICAgICAgICAgICAgICAgICAgICAgICAjIG5hc3R5IG1l YW5zIGhhdmluZyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0Ci0tICAgICAgICAgICAgICAgICAg ICAgICAjIGRpcmVjdGx5IHdpdGhpbiBpdHNlbGYuIG90aGVyd2lzZSBpdCdzIGluIHRoZQotLSAg ICAgICAgICAgICAgICAgICAgICAgIyBzZWNvbmQgYXJyYXkuCi0rZm9yIG15ICRkYnVuICgxLCAw KSB7ICAgIyBkYnVuIC0gZG9uJ3QgYmUgdXR0ZXJseSBuYXN0eSAtIGJlaW5nIHV0dGVybHkKLSsg ICAgICAgICAgICAgICAgICAgICAgICAjIG5hc3R5IG1lYW5zIGhhdmluZyBhIHJlZmVyZW5jZSB0 byB0aGUgb2JqZWN0Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIyBkaXJlY3RseSB3aXRoaW4g aXRzZWxmLiBvdGhlcndpc2UgaXQncyBpbiB0aGUKLSsgICAgICAgICAgICAgICAgICAgICAgICAj IHNlY29uZCBhcnJheS4KLSAgICAgbXkgJG5hc3R5ID0gWwotLQkJICgkYVswXSA9IGJsZXNzIFsg XSwgIkJhbmFuYSIpLAotLQkJICgkYVsxXSA9IFsgXSksCi0tCQldOwotKyAgICAgICAgKCRhWzBd ID0gYmxlc3MgWyBdLCAiQmFuYW5hIiksCi0rICAgICAgICAoJGFbMV0gPSBbIF0pLAotKyAgICBd OwotIAotICAgICAkYVskZGJ1bl0tPlswXSA9ICRhWzBdOwotIAotQEAgLTEzNSw4ICsxMjMsOCBA QCBmb3IgbXkgJGRidW4gKDEsIDApIHsgICMgZGJ1biAtIGRvbid0IGJlIHV0dGVybHkgbmFzdHkg LSBiZWluZyB1dHRlcmx5Ci0gCi0gc3ViIGhlYWRpdCB7Ci0gCi0tICAgIHJldHVybjsgICMgY29t bWVudCBvdXQgdG8gZ2V0IGhlYWRpbmdzIC0gdXNlZnVsIGZvciBzY2FubmluZwotLSAgICAgICAg ICAgICAjIG91dHB1dCB3aXRoICRTdG9yYWJsZTo6REVCVUdNRSA9IDEKLSsgICAgcmV0dXJuOyAg ICAgIyBjb21tZW50IG91dCB0byBnZXQgaGVhZGluZ3MgLSB1c2VmdWwgZm9yIHNjYW5uaW5nCi0r ICAgICAgICAgICAgICAgICMgb3V0cHV0IHdpdGggJFN0b3JhYmxlOjpERUJVR01FID0gMQotIAot ICAgICBteSAkdGl0bGUgPSBzaGlmdDsKLSAKLUBAIC0xNDQsNiArMTMyLDYgQEAgc3ViIGhlYWRp dCB7Ci0gICAgIG15ICRzaXplX3JpZ2h0ID0gKDY3IC0gbGVuZ3RoKCR0aXRsZSkpID4+IDE7Ci0g Ci0gICAgIHByaW50ICIjICIuKCItIiB4ICRzaXplX2xlZnQpLiAiICR0aXRsZSAiCi0tCS4oIi0i IHggJHNpemVfcmlnaHQpLiJcbiI7Ci0rICAgICAgICAuKCItIiB4ICRzaXplX3JpZ2h0KS4iXG4i OwotIH0KLSAKLWRpZmYgLS1naXQgYS90L2xlYWtzLnQgYi90L2xlYWtzLnQKLWluZGV4IGViMTUx YTEuLjIwNGQ2MzEgMTAwNjQ0Ci0tLS0gYS90L2xlYWtzLnQKLSsrKyBiL3QvbGVha3MudAotQEAg LTEsMTAgKzEsMTMgQEAKLSAjIS4vcGVybAotIAotK3VzZSBzdHJpY3Q7Ci0rdXNlIHdhcm5pbmdz OwotKwotIHVzZSBUZXN0OjpNb3JlOwotIHVzZSBTdG9yYWJsZSAoKTsKLSBCRUdJTiB7Ci0tZXZh bCAidXNlIFRlc3Q6OkxlYWtUcmFjZSI7Ci0tcGxhbiAnc2tpcF9hbGwnID0+ICdUZXN0OjpMZWFr VHJhY2UgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdHMnIGlmICRAOwotKyAgICBldmFsICJ1c2UgVGVz dDo6TGVha1RyYWNlIjsKLSsgICAgcGxhbiAnc2tpcF9hbGwnID0+ICdUZXN0OjpMZWFrVHJhY2Ug cmVxdWlyZWQgZm9yIHRoaXMgdGVzdHMnIGlmICRAOwotIH0KLSBwbGFuICd0ZXN0cycgPT4gMTsK LSAKLUBAIC0zMywxNyArMzYsMTcgQEAgcGxhbiAndGVzdHMnID0+IDE7Ci0gfQotIAotIHsgIyBb Y3BhbiAjOTczMTZdCi0tICBwYWNrYWdlIFRlc3RDbGFzczsKLSsgICAgcGFja2FnZSBUZXN0Q2xh c3M7Ci0gCi0tICBzdWIgbmV3IHsKLS0gICAgbXkgJGNsYXNzID0gc2hpZnQ7Ci0tICAgIHJldHVy biBibGVzcyh7fSwgJGNsYXNzKTsKLS0gIH0KLS0gIHN1YiBTVE9SQUJMRV9mcmVlemUgewotLSAg ICBkaWU7Ci0tICB9Ci0rICAgIHN1YiBuZXcgewotKyAgICAgICAgbXkgJGNsYXNzID0gc2hpZnQ7 Ci0rICAgICAgICByZXR1cm4gYmxlc3Moe30sICRjbGFzcyk7Ci0rICAgIH0KLSsgICAgc3ViIFNU T1JBQkxFX2ZyZWV6ZSB7Ci0rICAgICAgICBkaWU7Ci0rICAgIH0KLSAKLS0gIHBhY2thZ2UgbWFp bjsKLS0gIG15ICRvYmogPSBUZXN0Q2xhc3MtPm5ldzsKLS0gIGV2YWwgeyBmcmVlemUoJG9iaik7 IH07Ci0rICAgIHBhY2thZ2UgbWFpbjsKLSsgICAgbXkgJG9iaiA9IFRlc3RDbGFzcy0+bmV3Owot KyAgICBldmFsIHsgZnJlZXplKCRvYmopOyB9OwotIH0KLWRpZmYgLS1naXQgYS90L2xpYi9IQVNf SE9PSy5wbSBiL3QvbGliL0hBU19IT09LLnBtCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uMzAxMzAxNQotLS0tIC9kZXYvbnVsbAotKysrIGIvdC9saWIvSEFTX0hPT0sucG0K LUBAIC0wLDAgKzEsMTQgQEAKLStwYWNrYWdlIEhBU19IT09LOwotK3VzZSBzdHJpY3Q7Ci0rdXNl IHdhcm5pbmdzOwotKwotK291ciAkdGhhd2VkX2NvdW50OwotK291ciAkbG9hZGVkX2NvdW50Owot KwotK3N1YiBTVE9SQUJMRV90aGF3IHsKLSsgICAgKyskdGhhd2VkX2NvdW50OwotK30KLSsKLSsr KyRsb2FkZWRfY291bnQ7Ci0rCi0rMTsKLWRpZmYgLS1naXQgYS90L2xpYi9IQVNfT1ZFUkxPQUQu cG0gYi90L2xpYi9IQVNfT1ZFUkxPQUQucG0KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwLi5kNmYwMjQxCi0tLS0gL2Rldi9udWxsCi0rKysgYi90L2xpYi9IQVNfT1ZFUkxPQUQu cG0KLUBAIC0wLDAgKzEsMTggQEAKLStwYWNrYWdlIEhBU19PVkVSTE9BRDsKLSt1c2Ugc3RyaWN0 OwotK3VzZSB3YXJuaW5nczsKLSsKLStvdXIgJGxvYWRlZF9jb3VudDsKLSsKLSt1c2Ugb3Zlcmxv YWQKLSsgICAgJyIiJyAgICAgICAgPT4gc3ViIHsgJHskX1swXX0gfSwgZmFsbGJhY2sgPT4gMTsK LSsKLStzdWIgbWFrZSB7Ci0rICAgIG15ICRwYWNrYWdlID0gc2hpZnQ7Ci0rICAgIG15ICR2YWx1 ZSA9IHNoaWZ0OwotKyAgICBibGVzcyBcJHZhbHVlLCAkcGFja2FnZTsKLSt9Ci0rCi0rKyskbG9h ZGVkX2NvdW50OwotKwotKzE7Ci1kaWZmIC0tZ2l0IGEvdC9saWIvU1REdW1wLnBtIGIvdC9saWIv U1REdW1wLnBtCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDdmYTg4Ngot LS0tIC9kZXYvbnVsbAotKysrIGIvdC9saWIvU1REdW1wLnBtCi1AQCAtMCwwICsxLDEzOCBAQAot KyMKLSsjICBDb3B5cmlnaHQgKGMpIDE5OTUtMjAwMCwgUmFwaGFlbCBNYW5mcmVkaQotKyMKLSsj ICBZb3UgbWF5IHJlZGlzdHJpYnV0ZSBvbmx5IHVuZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFBlcmwg NSwgYXMgc3BlY2lmaWVkCi0rIyAgaW4gdGhlIFJFQURNRSBmaWxlIHRoYXQgY29tZXMgd2l0aCB0 aGUgZGlzdHJpYnV0aW9uLgotKyMKLSsKLStwYWNrYWdlIFNURHVtcDsKLSt1c2Ugc3RyaWN0Owot K3VzZSB3YXJuaW5nczsKLSt1c2UgQ2FycDsKLSt1c2UgRXhwb3J0ZXI7Ci0rKmltcG9ydCA9IFwm RXhwb3J0ZXI6OmltcG9ydDsKLSsKLStvdXIgQEVYUE9SVCA9IHF3KHN0ZHVtcCk7Ci0rCi0rbXkg JWR1bXAgPSAoCi0rICAgICdTQ0FMQVInICAgICAgICA9PiBcJmR1bXBfc2NhbGFyLAotKyAgICAn TFZBTFVFJyAgICAgICAgPT4gXCZkdW1wX3NjYWxhciwKLSsgICAgJ0FSUkFZJyAgICAgICAgID0+ IFwmZHVtcF9hcnJheSwKLSsgICAgJ0hBU0gnICAgICAgICAgID0+IFwmZHVtcF9oYXNoLAotKyAg ICAnUkVGJyAgICAgICAgICAgPT4gXCZkdW1wX3JlZiwKLSspOwotKwotKyMgR2l2ZW4gYW4gb2Jq ZWN0LCBkdW1wIGl0cyB0cmFuc2l0aXZlIGRhdGEgY2xvc3VyZQotK3N1YiBzdGR1bXAgewotKyAg ICBteSAoJG9iamVjdCkgPSBAXzsKLSsgICAgY3JvYWsgIk5vdCBhIHJlZmVyZW5jZSEiIHVubGVz cyByZWYoJG9iamVjdCk7Ci0rICAgIG15ICRjdHggPSB7Ci0rICAgICAgICBkdW1wZWQgPT4ge30s Ci0rICAgICAgICBvYmplY3QgPT4ge30sCi0rICAgICAgICBjb3VudCA9PiAwLAotKyAgICAgICAg ZHVtcCA9PiAnJywKLSsgICAgfTsKLSsgICAgcmVjdXJzaXZlX2R1bXAoJG9iamVjdCwgMSwgJGN0 eCk7Ci0rICAgIHJldHVybiAkY3R4LT57ZHVtcH07Ci0rfQotKwotKyMgVGhpcyBpcyB0aGUgcm9v dCByZWN1cnNpdmUgZHVtcGluZyByb3V0aW5lIHRoYXQgbWF5IGluZGlyZWN0bHkgYmUKLSsjIGNh bGxlZCBieSBvbmUgb2YgdGhlIHJvdXRpbmUgaXQgY2FsbHMuLi4KLSsjIFRoZSBsaW5rIHBhcmFt ZXRlciBpcyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgcmVmZXJlbmNlIHBhc3NlZCB0bwotKyMgdGhl IHJvdXRpbmUgaXMgYW4gaW50ZXJuYWwgdGVtcG9yYXJ5IHZhcmlhYmxlLCBpbXBseWluZyB0aGUg b2JqZWN0J3MKLSsjIGFkZHJlc3MgaXMgbm90IHRvIGJlIGR1bXBlZCBpbiB0aGUgJWR1bXBlZCB0 YWJsZSBzaW5jZSBpdCdzIG5vdCBhCi0rIyB1c2VyLXZpc2libGUgb2JqZWN0LgotK3N1YiByZWN1 cnNpdmVfZHVtcCB7Ci0rICAgIG15ICgkb2JqZWN0LCAkbGluaywgJGN0eCkgPSBAXzsKLSsKLSsg ICAgIyBHZXQgc29tZXRoaW5nIGxpa2UgU0NBTEFSKDB4Li4uKSBvciBUWVBFPVNDQUxBUigweC4u LikuCi0rICAgICMgVGhlbiBleHRyYWN0IHRoZSBibGVzcywgcmVmIGFuZCBhZGRyZXNzIHBhcnRz IG9mIHRoYXQgc3RyaW5nLgotKwotKyAgICBteSAkd2hhdCA9ICIkb2JqZWN0IjsgICAgICAgICAg ICAgICAjIFN0cmluZ2lmeQotKyAgICBteSAoJGJsZXNzLCAkcmVmLCAkYWRkcikgPSAkd2hhdCA9 fiAvXihcdyspPShcdyspXCgoMHguKilcKSQvOwotKyAgICAoJHJlZiwgJGFkZHIpID0gJHdoYXQg PX4gL14oXHcrKVwoKDB4LiopXCkkLyB1bmxlc3MgJGJsZXNzOwotKwotKyAgICAjIFNwZWNpYWwg Y2FzZSBmb3IgcmVmZXJlbmNlcyB0byByZWZlcmVuY2VzLiBXaGVuIHN0cmluZ2lmaWVkLAotKyAg ICAjIHRoZXkgYXBwZWFyIGFzIGJlaW5nIHNjYWxhcnMuIEhvd2V2ZXIsIHJlZigpIGNvcnJlY3Rs eSBwaW5wb2ludHMKLSsgICAgIyB0aGVtIGFzIGJlaW5nIHJlZmVyZW5jZXMgaW5kaXJlY3Rpb25z LiBBbmQgdGhhdCdzIGl0LgotKwotKyAgICAkcmVmID0gJ1JFRicgaWYgcmVmKCRvYmplY3QpIGVx ICdSRUYnOwotKwotKyAgICAjIE1ha2Ugc3VyZSB0aGUgb2JqZWN0IGhhcyBub3QgYmVlbiBhbHJl YWR5IGR1bXBlZCBiZWZvcmUuCi0rICAgICMgV2UgZG9uJ3Qgd2FudCB0byBkdXBsaWNhdGUgZGF0 YS4gUmV0cmlldmFsIHdpbGwga25vdyBob3cgdG8KLSsgICAgIyByZWxpbmsgZnJvbSB0aGUgcHJl dmlvdXNseSBzZWVuIG9iamVjdC4KLSsKLSsgICAgaWYgKCRsaW5rICYmICRjdHgtPntkdW1wZWR9 eyRhZGRyfSsrKSB7Ci0rICAgICAgICBteSAkbnVtID0gJGN0eC0+e29iamVjdH17JGFkZHJ9Owot KyAgICAgICAgJGN0eC0+e2R1bXB9IC49ICJPQkpFQ1QgIyRudW0gc2VlblxuIjsKLSsgICAgICAg IHJldHVybjsKLSsgICAgfQotKwotKyAgICBteSAkb2JqY291bnQgPSAkY3R4LT57Y291bnR9Kys7 Ci0rICAgICRjdHgtPntvYmplY3R9eyRhZGRyfSA9ICRvYmpjb3VudDsKLSsKLSsgICAgIyBDYWxs IHRoZSBhcHByb3ByaWF0ZSBkdW1waW5nIHJvdXRpbmUgYmFzZWQgb24gdGhlIHJlZmVyZW5jZSB0 eXBlLgotKyAgICAjIElmIHRoZSByZWZlcmVuY2VkIHdhcyBibGVzc2VkLCB3ZSBibGVzcyBpdCBv bmNlIHRoZSBvYmplY3QgaXMgZHVtcGVkLgotKyAgICAjIFRoZSByZXRyaWV2YWwgY29kZSB3aWxs IHBlcmZvcm0gdGhlIHNhbWUgb24gdGhlIGxhc3Qgb2JqZWN0IHJldHJpZXZlZC4KLSsKLSsgICAg Y3JvYWsgIlVua25vd24gc2ltcGxlIHR5cGUgJyRyZWYnIiB1bmxlc3MgZGVmaW5lZCAkZHVtcHsk cmVmfTsKLSsKLSsgICAgJGR1bXB7JHJlZn0tPigkb2JqZWN0LCAkY3R4KTsgICAgIyBEdW1wIG9i amVjdAotKyAgICAkY3R4LT57ZHVtcH0gLj0gIkJMRVNTICRibGVzc1xuIiBpZiAkYmxlc3M7ICAj IE1hcmsgaXQgYXMgYmxlc3NlZCwgaWYgbmVjZXNzYXJ5Ci0rCi0rICAgICRjdHgtPntkdW1wfSAu PSAiT0JKRUNUICRvYmpjb3VudFxuIjsKLSt9Ci0rCi0rIyBEdW1wIHNpbmdsZSBzY2FsYXIKLStz dWIgZHVtcF9zY2FsYXIgewotKyAgICBteSAoJHNyZWYsICRjdHgpID0gQF87Ci0rICAgIG15ICRz Y2FsYXIgPSAkJHNyZWY7Ci0rICAgIHVubGVzcyAoZGVmaW5lZCAkc2NhbGFyKSB7Ci0rICAgICAg ICAkY3R4LT57ZHVtcH0gLj0gIlVOREVGXG4iOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0r ICAgIG15ICRsZW4gPSBsZW5ndGgoJHNjYWxhcik7Ci0rICAgICRjdHgtPntkdW1wfSAuPSAiU0NB TEFSIGxlbj0kbGVuICRzY2FsYXJcbiI7Ci0rfQotKwotKyMgRHVtcCBhcnJheQotK3N1YiBkdW1w X2FycmF5IHsKLSsgICAgbXkgKCRhcmVmLCAkY3R4KSA9IEBfOwotKyAgICBteSAkaXRlbXMgPSAw ICsgQHskYXJlZn07Ci0rICAgICRjdHgtPntkdW1wfSAuPSAiQVJSQVkgaXRlbXM9JGl0ZW1zXG4i OwotKyAgICBmb3JlYWNoIG15ICRpdGVtIChAeyRhcmVmfSkgewotKyAgICAgICAgdW5sZXNzIChk ZWZpbmVkICRpdGVtKSB7Ci0rICAgICAgICAgICAgJGN0eC0+e2R1bXB9IC49ICdJVEVNX1VOREVG JyAuICJcbiI7Ci0rICAgICAgICAgICAgbmV4dDsKLSsgICAgICAgIH0KLSsgICAgICAgICRjdHgt PntkdW1wfSAuPSAnSVRFTSAnOwotKyAgICAgICAgcmVjdXJzaXZlX2R1bXAoXCRpdGVtLCAxLCAk Y3R4KTsKLSsgICAgfQotK30KLSsKLSsjIER1bXAgaGFzaCB0YWJsZQotK3N1YiBkdW1wX2hhc2gg ewotKyAgICBteSAoJGhyZWYsICRjdHgpID0gQF87Ci0rICAgIG15ICRpdGVtcyA9IHNjYWxhcihr ZXlzICV7JGhyZWZ9KTsKLSsgICAgJGN0eC0+e2R1bXB9IC49ICJIQVNIIGl0ZW1zPSRpdGVtc1xu IjsKLSsgICAgZm9yZWFjaCBteSAka2V5IChzb3J0IGtleXMgJXskaHJlZn0pIHsKLSsgICAgICAg ICRjdHgtPntkdW1wfSAuPSAnS0VZICc7Ci0rICAgICAgICByZWN1cnNpdmVfZHVtcChcJGtleSwg dW5kZWYsICRjdHgpOwotKyAgICAgICAgdW5sZXNzIChkZWZpbmVkICRocmVmLT57JGtleX0pIHsK LSsgICAgICAgICAgICAkY3R4LT57ZHVtcH0gLj0gJ1ZBTFVFX1VOREVGJyAuICJcbiI7Ci0rICAg ICAgICAgICAgbmV4dDsKLSsgICAgICAgIH0KLSsgICAgICAgICRjdHgtPntkdW1wfSAuPSAnVkFM VUUgJzsKLSsgICAgICAgIHJlY3Vyc2l2ZV9kdW1wKFwkaHJlZi0+eyRrZXl9LCAxLCAkY3R4KTsK LSsgICAgfQotK30KLSsKLSsjIER1bXAgcmVmZXJlbmNlIHRvIHJlZmVyZW5jZQotK3N1YiBkdW1w X3JlZiB7Ci0rICAgIG15ICgkcnJlZiwgJGN0eCkgPSBAXzsKLSsgICAgbXkgJGRlcmVmID0gJCRy cmVmOyAgICAgICAgICAgICAgICAgIyBGb2xsb3cgcmVmZXJlbmNlIHRvIHJlZmVyZW5jZQotKyAg ICAkY3R4LT57ZHVtcH0gLj0gJ1JFRiAnOwotKyAgICByZWN1cnNpdmVfZHVtcCgkZGVyZWYsIDEs ICRjdHgpOyAgICAgICAgICMgJGRyZWYgaXMgYSByZWZlcmVuY2UKLSt9Ci0rCi0rMTsKLWRpZmYg LS1naXQgYS90L2xpYi9TVFRlc3RMaWIucG0gYi90L2xpYi9TVFRlc3RMaWIucG0KLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hMzcwMzM0Ci0tLS0gL2Rldi9udWxsCi0rKysg Yi90L2xpYi9TVFRlc3RMaWIucG0KLUBAIC0wLDAgKzEsMzkgQEAKLStwYWNrYWdlIFNUVGVzdExp YjsKLSt1c2Ugc3RyaWN0OwotK3VzZSB3YXJuaW5nczsKLSsKLSt1c2UgRXhwb3J0ZXI7Ci0rKmlt cG9ydCA9IFwmRXhwb3J0ZXI6OmltcG9ydDsKLSsKLStvdXIgQEVYUE9SVF9PSyA9IHF3KHNsdXJw IHdyaXRlX2FuZF9yZXRyaWV2ZSB0ZW1wZmlsZW5hbWUpOwotKwotK3VzZSBTdG9yYWJsZSBxdyhy ZXRyaWV2ZSk7Ci0rdXNlIEZpbGU6OlRlbXAgcXcodGVtcGZpbGUpOwotKwotK3N1YiBzbHVycCB7 Ci0rICAgIG15ICRmaWxlID0gc2hpZnQ7Ci0rICAgIG9wZW4gbXkgJGZoLCAiPCIsICRmaWxlIG9y IGRpZSAiQ2FuJ3Qgb3BlbiAnJGZpbGUnOiAkISI7Ci0rICAgIGJpbm1vZGUgJGZoOwotKyAgICBt eSAkY29udGVudHMgPSBkbyB7IGxvY2FsICQvOyA8JGZoPiB9OwotKyAgICBkaWUgIkNhbid0IHJl YWQgJGZpbGU6ICQhIiB1bmxlc3MgZGVmaW5lZCAkY29udGVudHM7Ci0rICAgIHJldHVybiAkY29u dGVudHM7Ci0rfQotKwotK3N1YiB3cml0ZV9hbmRfcmV0cmlldmUgewotKyAgICBteSAkZGF0YSA9 IHNoaWZ0OwotKwotKyAgICBteSAoJGZoLCAkZmlsZW5hbWUpID0gdGVtcGZpbGUoJ3N0b3JhYmxl LXRlc3RmaWxlLVhYWFhYJywgVE1QRElSID0+IDEsIFVOTElOSyA9PiAxKTsKLSsgICAgYmlubW9k ZSAkZmg7Ci0rICAgIHByaW50ICRmaCAkZGF0YSBvciBkaWUgIkNhbid0IHByaW50IHRvICckZmls ZW5hbWUnOiAkISI7Ci0rICAgIGNsb3NlICRmaCBvciBkaWUgIkNhbid0IGNsb3NlICckZmlsZW5h bWUnOiAkISI7Ci0rCi0rICAgIHJldHVybiBldmFsIHsgcmV0cmlldmUgJGZpbGVuYW1lIH07Ci0r fQotKwotK3N1YiB0ZW1wZmlsZW5hbWUgewotKyAgICBsb2NhbCAkXlc7Ci0rICAgIG15ICh1bmRl ZiwgJGZpbGUpID0gdGVtcGZpbGUoJ3N0b3JhYmxlLXRlc3RmaWxlLVhYWFhYJywgVE1QRElSID0+ IDEsIFVOTElOSyA9PiAxKTsKLSsgICAgcmV0dXJuICRmaWxlOwotK30KLSsKLSsxOwotZGlmZiAt LWdpdCBhL3QvbG9jay50IGIvdC9sb2NrLnQKLWluZGV4IDhjMWZjNTcuLmFlYTgxNDYgMTAwNjQ0 Ci0tLS0gYS90L2xvY2sudAotKysrIGIvdC9sb2NrLnQKLUBAIC0xLDIzICsxLDE5IEBACi0gIyEu L3BlcmwKLSAjCi0gIyAgQ29weXJpZ2h0IChjKSAxOTk1LTIwMDAsIFJhcGhhZWwgTWFuZnJlZGkK LS0jICAKLSsjCi0gIyAgWW91IG1heSByZWRpc3RyaWJ1dGUgb25seSB1bmRlciB0aGUgc2FtZSB0 ZXJtcyBhcyBQZXJsIDUsIGFzIHNwZWNpZmllZAotICMgIGluIHRoZSBSRUFETUUgZmlsZSB0aGF0 IGNvbWVzIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAjCi0gCi0rdXNlIHN0cmljdDsKLSt1c2Ug d2FybmluZ3M7Ci0rCi0gc3ViIEJFR0lOIHsKLS0gICAgdW5zaGlmdCBASU5DLCAndCc7Ci0tICAg IHVuc2hpZnQgQElOQywgJ3QvY29tcGF0JyBpZiAkXSA8IDUuMDA2MDAyOwotLSAgICByZXF1aXJl IENvbmZpZzsgaW1wb3J0IENvbmZpZzsKLS0gICAgaWYgKCRFTlZ7UEVSTF9DT1JFfSBhbmQgJENv bmZpZ3snZXh0ZW5zaW9ucyd9ICF+IC9cYlN0b3JhYmxlXGIvKSB7Ci0tICAgICAgICBwcmludCAi MS4uMCAjIFNraXA6IFN0b3JhYmxlIHdhcyBub3QgYnVpbHRcbiI7Ci0tICAgICAgICBleGl0IDA7 Ci0tICAgIH0KLS0KLS0gICAgcmVxdWlyZSAnc3QtZHVtcC5wbCc7Ci0rICAgIHVuc2hpZnQgQElO QywgJ3QvbGliJzsKLSB9Ci0gCi0rdXNlIFNURHVtcDsKLSB1c2UgVGVzdDo6TW9yZTsKLSB1c2Ug U3RvcmFibGUgcXcobG9ja19zdG9yZSBsb2NrX3JldHJpZXZlKTsKLSAKLUBAIC0yNywyMCArMjMs MjAgQEAgdW5sZXNzICgmU3RvcmFibGU6OkNBTl9GTE9DSykgewotIAotIHBsYW4odGVzdHMgPT4g NSk7Ci0gCi0tQGEgPSAoJ2ZpcnN0JywgdW5kZWYsIDMsIC00LCAtMy4xNDE1OSwgNDU2LCA0LjUp OwotK215IEBhID0gKCdmaXJzdCcsIHVuZGVmLCAzLCAtNCwgLTMuMTQxNTksIDQ1NiwgNC41KTsK LSAKLSAjCi0gIyBXZSdyZSBqdXN0IGVuc3VyaW5nIHRoaW5ncyB3b3JrLCB3ZSdyZSBub3QgdmFs aWRhdGluZyBsb2NraW5nLgotICMKLSAKLSBpc250KGxvY2tfc3RvcmUoXEBhLCAic3RvcmUkJCIp LCB1bmRlZik7Ci0tbXkgJGR1bXBlZCA9ICZkdW1wKFxAYSk7Ci0rbXkgJGR1bXBlZCA9IHN0ZHVt cChcQGEpOwotIGlzbnQoJGR1bXBlZCwgdW5kZWYpOwotIAotLSRyb290ID0gbG9ja19yZXRyaWV2 ZSgic3RvcmUkJCIpOwotK215ICRyb290ID0gbG9ja19yZXRyaWV2ZSgic3RvcmUkJCIpOwotIGlz KHJlZiAkcm9vdCwgJ0FSUkFZJyk7Ci0gaXMoc2NhbGFyIEBhLCBzY2FsYXIgQCRyb290KTsKLS1p cygmZHVtcCgkcm9vdCksICRkdW1wZWQpOwotK2lzKHN0ZHVtcCgkcm9vdCksICRkdW1wZWQpOwot IAotIEVORCB7IDEgd2hpbGUgdW5saW5rICJzdG9yZSQkIiB9Ci0gCi1kaWZmIC0tZ2l0IGEvdC9t YWtlXzU2X2ludGVyd29yay5wbCBiL3QvbWFrZV81Nl9pbnRlcndvcmsucGwKLW9sZCBtb2RlIDEw MDY0NAotbmV3IG1vZGUgMTAwNzU1Ci1pbmRleCBjNzNlOWI2Li43ZTZkMDcyCi0tLS0gYS90L21h a2VfNTZfaW50ZXJ3b3JrLnBsCi0rKysgYi90L21ha2VfNTZfaW50ZXJ3b3JrLnBsCi1AQCAtMSw1 ICsxLDYgQEAKLS0jIS91c3IvYmluL3BlcmwgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gdXNl IHN0cmljdDsKLSt1c2Ugd2FybmluZ3M7Ci0gCi0gdXNlIENvbmZpZzsKLSB1c2UgU3RvcmFibGUg cXcoZnJlZXplIHRoYXcpOwotQEAgLTgsMTAgKzksMTEgQEAgdXNlIFN0b3JhYmxlIHF3KGZyZWV6 ZSB0aGF3KTsKLSAjIEJlbGZ1c2N1IHdlbGNvbWVkIHRoZSByZWJlbHMgd2hvIHdhbnRlZCB0byBl YXQgYmlnIGVuZCBmaXJzdC4KLSBteSAka2luZ2RvbSA9ICRDb25maWd7Ynl0ZW9yZGVyfSA9fiAv MjMvID8gIkxpbGxwdXQiIDogIkJlbGZ1c2N1IjsKLSAKLS1teSAkZnJvemVuID0gZnJlZXplCi0t ICBbIlRoaXMgZmlsZSB3YXMgd3JpdHRlbiB3aXRoICRTdG9yYWJsZTo6VkVSU0lPTiBvbiBwZXJs ICRdIiwKLS0gICAiJGtpbmdkb20gd2FzIGNvcnJlY3QiLCAofjAgXiAofjAgPj4gMSkgXiAyKSwK LS0gICAiVGhlIEVuZCJdOwotK215ICRmcm96ZW4gPSBmcmVlemUgWwotKyAgICAiVGhpcyBmaWxl IHdhcyB3cml0dGVuIHdpdGggJFN0b3JhYmxlOjpWRVJTSU9OIG9uIHBlcmwgJF0iLAotKyAgICAi JGtpbmdkb20gd2FzIGNvcnJlY3QiLCAofjAgXiAofjAgPj4gMSkgXiAyKSwKLSsgICAgIlRoZSBF bmQiCi0rXTsKLSAKLSBteSAkaXZzaXplID0gJENvbmZpZ3tpdnNpemV9IHx8ICRDb25maWd7bG9u Z3NpemV9OwotIAotQEAgLTE5LDggKzIxLDggQEAgbXkgJHN0b3Jlc2l6ZSA9IHVucGFjayAneHhD JywgJGZyb3plbjsKLSBteSAkc3RvcmVieXRlb3JkZXIgPSB1bnBhY2sgInh4eEEkc3RvcmVzaXpl IiwgJGZyb3plbjsKLSAKLSBpZiAoJENvbmZpZ3tieXRlb3JkZXJ9IGVxICRzdG9yZWJ5dGVvcmRl cikgewotLSAgbXkgJGl2dHlwZSA9ICRDb25maWd7aXZ0eXBlfSB8fCAnbG9uZyc7Ci0tICBwcmlu dCA8PCJFT00iOwotKyAgICBteSAkaXZ0eXBlID0gJENvbmZpZ3tpdnR5cGV9IHx8ICdsb25nJzsK LSsgICAgcHJpbnQgPDwiRU9NIjsKLSBZb3Ugb25seSBuZWVkIHRvIHJ1biB0aGlzIGdlbmVyYXRv ciBwcm9ncmFtIHdoZXJlIENvbmZpZy5wbSdzIGJ5dGVvcmRlciBzdHJpbmcKLSBpcyBub3QgdGhl IHNhbWUgbGVuZ3RoIGFzIHRoZSBzaXplIG9mIElWcy4KLSAKLUBAIC0zMSwxNyArMzMsMTcgQEAg TVMgV2luZG93cykKLSBUaGlzIGlzIHBlcmwgJF0sIHNpemVvZihsb25nKSBpcyAkQ29uZmlne2xv bmdzaXplfSwgSVZzIGFyZSAnJGl2dHlwZScsIHNpemVvZihJVikgaXMgJGl2c2l6ZSwKLSBieXRl b3JkZXIgaXMgJyRDb25maWd7Ynl0ZW9yZGVyfScsIFN0b3JhYmxlICRTdG9yYWJsZTo6VkVSU0lP TiB3cml0ZXMgYSBieXRlb3JkZXIgb2YgJyRzdG9yZWJ5dGVvcmRlcicKLSBFT00KLS0gIGV4aXQ7 ICMgR3JyICcKLSsgICAgZXhpdDsgIyBHcnIgJwotIH0KLSAKLSBteSAoJGksICRsLCAkcCwgJG4p ID0gdW5wYWNrICJ4eHh4JHtzdG9yZXNpemV9Q0NDQyIsICRmcm96ZW47Ci0gCi0gcHJpbnQgPDwi RU9NIjsKLS0jIGJ5dGVvcmRlcgkgJyRzdG9yZWJ5dGVvcmRlcicKLS0jIHNpemVvZihpbnQpCSAk aQotLSMgc2l6ZW9mKGxvbmcpCSAkbAotKyMgYnl0ZW9yZGVyICAgICAgJyRzdG9yZWJ5dGVvcmRl cicKLSsjIHNpemVvZihpbnQpICAgICRpCi0rIyBzaXplb2YobG9uZykgICAkbAotICMgc2l6ZW9m KGNoYXIgKikgJHAKLS0jIHNpemVvZihOVikJICRuCi0rIyBzaXplb2YoTlYpICAgICAkbgotIEVP TQotIAotIG15ICR1dSA9IHBhY2sgJ3UnLCAkZnJvemVuOwotZGlmZiAtLWdpdCBhL3QvbWFrZV9k b3duZ3JhZGUucGwgYi90L21ha2VfZG93bmdyYWRlLnBsCi1vbGQgbW9kZSAxMDA2NDQKLW5ldyBt b2RlIDEwMDc1NQotaW5kZXggNjAzNzVkYi4uYTU1M2NkOQotLS0tIGEvdC9tYWtlX2Rvd25ncmFk ZS5wbAotKysrIGIvdC9tYWtlX2Rvd25ncmFkZS5wbAotQEAgLTEsNSArMSw2IEBACi0tIyEvdXNy L2xvY2FsL2Jpbi9wZXJsIC13Ci0rIyEvdXNyL2Jpbi9lbnYgcGVybAotIHVzZSBzdHJpY3Q7Ci0r dXNlIHdhcm5pbmdzOwotIAotIHVzZSA1LjAwNzAwMzsKLSB1c2UgSGFzaDo6VXRpbCBxdyhsb2Nr X2hhc2ggdW5sb2NrX2hhc2ggbG9ja19rZXlzKTsKLUBAIC03LDE0ICs4LDE0IEBAIHVzZSBTdG9y YWJsZSBxdyhuZnJlZXplKTsKLSAKLSAjIElmIHRoaXMgbG9va3MgbGlrZSBhIGhhY2ssIGl0J3Mg cHJvYmFibHkgYmVjYXVzZSBpdCBpcyA6LSkKLSBzdWIgdXVlbmNvZGVfaXQgewotLSAgbXkgKCRk YXRhLCAkbmFtZSkgPSBAXzsKLS0gIG15ICRmcm96ZW4gPSBuZnJlZXplICRkYXRhOwotKyAgICBt eSAoJGRhdGEsICRuYW1lKSA9IEBfOwotKyAgICBteSAkZnJvemVuID0gbmZyZWV6ZSAkZGF0YTsK LSAKLS0gIG15ICR1dSA9IHBhY2sgJ3UnLCAkZnJvemVuOwotKyAgICBteSAkdXUgPSBwYWNrICd1 JywgJGZyb3plbjsKLSAKLS0gIHByaW50ZiAiYmVnaW4gJTNvICRuYW1lXG4iLCBvcmQgJ0EnOwot LSAgcHJpbnQgJHV1OwotLSAgcHJpbnQgIlxuZW5kXG5cbiI7Ci0rICAgIHByaW50ZiAiYmVnaW4g JTNvICRuYW1lXG4iLCBvcmQgJ0EnOwotKyAgICBwcmludCAkdXU7Ci0rICAgIHByaW50ICJcbmVu ZFxuXG4iOwotIH0KLSAKLSAKLUBAIC05MywxMSArOTQsMTEgQEAgdXVlbmNvZGVfaXQgKFwldWhh c2gsICJMb2NrZWQgaGFzaCB3aXRoIHV0Zjgga2V5cyIpOwotIG15ICVwcmU1ODsKLSAKLSB3aGls ZSAobXkgKCRrZXksICR2YWwpID0gZWFjaCAldWhhc2gpIHsKLS0gICMgaGFzaCBrZXlzIGFyZSBh bHdheXMgc3RvcmVkIGRvd25ncmFkZWQgdG8gYnl0ZXMgaWYgcG9zc2libGUsIHdpdGggYSBmbGFn Ci0tICAjIHRvIHNheSAicHJvbW90ZSBiYWNrIHRvIHV0ZjgiCi0tICAjIFdoZXJlYXMgc2NhbGFy cyBhcmUgc3RvcmVkIGFzIGlzLgotLSAgdXRmODo6ZW5jb2RlICgka2V5KSBpZiBvcmQgJGtleSA+ IDI1NjsKLS0gICRwcmU1OHska2V5fSA9ICR2YWw7Ci0rICAgICMgaGFzaCBrZXlzIGFyZSBhbHdh eXMgc3RvcmVkIGRvd25ncmFkZWQgdG8gYnl0ZXMgaWYgcG9zc2libGUsIHdpdGggYSBmbGFnCi0r ICAgICMgdG8gc2F5ICJwcm9tb3RlIGJhY2sgdG8gdXRmOCIKLSsgICAgIyBXaGVyZWFzIHNjYWxh cnMgYXJlIHN0b3JlZCBhcyBpcy4KLSsgICAgdXRmODo6ZW5jb2RlICgka2V5KSBpZiBvcmQgJGtl eSA+IDI1NjsKLSsgICAgJHByZTU4eyRrZXl9ID0gJHZhbDsKLSAKLSB9Ci0gdXVlbmNvZGVfaXQg KFwlcHJlNTgsICJIYXNoIHdpdGggdXRmOCBrZXlzIGZvciA1LjYiKTsKLWRpZmYgLS1naXQgYS90 L21ha2Vfb3ZlcmxvYWQucGwgYi90L21ha2Vfb3ZlcmxvYWQucGwKLW9sZCBtb2RlIDEwMDY0NAot bmV3IG1vZGUgMTAwNzU1Ci1pbmRleCBiZDIyNGY1Li4zMTgyMjY0Ci0tLS0gYS90L21ha2Vfb3Zl cmxvYWQucGwKLSsrKyBiL3QvbWFrZV9vdmVybG9hZC5wbAotQEAgLTEsNSArMSw2IEBACi0tIyEv dXNyL2xvY2FsL2Jpbi9wZXJsIC13Ci0rIyEvdXNyL2Jpbi9lbnYgcGVybAotIHVzZSBzdHJpY3Q7 Ci0rdXNlIHdhcm5pbmdzOwotIAotIHVzZSBTdG9yYWJsZSBxdyhuZnJlZXplKTsKLSB1c2UgSEFT X09WRVJMT0FEOwotZGlmZiAtLWdpdCBhL3QvbWFsaWNlLnQgYi90L21hbGljZS50Ci1pbmRleCA3 YjkyZDNkLi5mNzJlNDVmIDEwMDY0NAotLS0tIGEvdC9tYWxpY2UudAotKysrIGIvdC9tYWxpY2Uu dAotQEAgLTYsMjUgKzYsMTggQEAKLSAjICBpbiB0aGUgUkVBRE1FIGZpbGUgdGhhdCBjb21lcyB3 aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gIwotIAotLSMgSSdtIHRyeWluZyB0byBrZWVwIHRoaXMg dGVzdCBlYXNpbHkgYmFja3dhcmRzIGNvbXBhdGlibGUgdG8gNS4wMDQsIHNvIG5vCi0tIyBxci8v OwotLQotICMgVGhpcyB0ZXN0IHRyaWVzIHRvIGNyYWZ0IG1hbGljaW91cyBkYXRhIHRvIHRlc3Qg b3V0IGFzIG1hbnkgZGlmZmVyZW50Ci0gIyBlcnJvciB0cmFwcyBpbiBTdG9yYWJsZSBhcyBwb3Nz aWJsZQotICMgSXQgYWxzbyBhY3RzIGFzIGEgdGVzdCBmb3IgcmVhZF9oZWFkZXIKLSAKLS1zdWIg QkVHSU4gewotLSAgICAjIFRoaXMgbGV0cyB1cyBkaXN0cmlidXRlIFRlc3Q6Ok1vcmUgaW4gdC8K LS0gICAgdW5zaGlmdCBASU5DLCAndCc7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QvY29tcGF0JyBp ZiAkXSA8IDUuMDA2MDAyOwotLSAgICByZXF1aXJlIENvbmZpZzsgaW1wb3J0IENvbmZpZzsKLS0g ICAgaWYgKCRFTlZ7UEVSTF9DT1JFfSBhbmQgJENvbmZpZ3snZXh0ZW5zaW9ucyd9ICF+IC9cYlN0 b3JhYmxlXGIvKSB7Ci0tICAgICAgICBwcmludCAiMS4uMCAjIFNraXA6IFN0b3JhYmxlIHdhcyBu b3QgYnVpbHRcbiI7Ci0tICAgICAgICBleGl0IDA7Ci0tICAgIH0KLS19Ci0tCi0gdXNlIHN0cmlj dDsKLSt1c2Ugd2FybmluZ3M7Ci0rCi0rdXNlIENvbmZpZzsKLSsKLStCRUdJTiB7Ci0rICAgIHVu c2hpZnQgQElOQywgJ3QvbGliJzsKLSt9Ci0gCi0gb3VyICRieXRlb3JkZXIgPSAkQ29uZmlne2J5 dGVvcmRlcn07Ci0gCi1AQCAtMzUsNiArMjgsNyBAQCBvdXIgJG1ham9yID0gMjsKLSBvdXIgJG1p bm9yID0gMTI7Ci0gb3VyICRtaW5vcl93cml0ZSA9ICRdID49IDUuMDE5ID8gMTEgOiAkXSA+IDUu MDA4ID8gOSA6ICRdID4gNS4wMDVfNTAgPyA4IDogNDsKLSAKLSt1c2UgU1RUZXN0TGliIHF3KHNs dXJwIHdyaXRlX2FuZF9yZXRyaWV2ZSB0ZW1wZmlsZW5hbWUpOwotIHVzZSBUZXN0OjpNb3JlOwot IAotICMgSWYgaXQncyA1LjcuMyBvciBsYXRlciB0aGUgaGFzaCB3aWxsIGJlIHN0b3JlZCB3aXRo IGZsYWdzLCB3aGljaCBpcwotQEAgLTQ4LDggKzQyLDYgQEAgb3VyICRmYW5jeSA9ICgkXSA+IDUu MDA3ID8gMiA6IDApOwotIHBsYW4gdGVzdHMgPT4gMzcyICsgbGVuZ3RoICgkYnl0ZW9yZGVyKSAq IDQgKyAkZmFuY3kgKiA4OwotIAotIHVzZSBTdG9yYWJsZSBxdyAoc3RvcmUgcmV0cmlldmUgZnJl ZXplIHRoYXcgbnN0b3JlIG5mcmVlemUpOwotLXJlcXVpcmUgJ3Rlc3RsaWIucGwnOwotLW91ciAk ZmlsZTsKLSAKLSAjIFRoZSBjaHIgMjU2IGlzIGEgaGFjayB0byBmb3JjZSB0aGUgaGFzaCB0byBh bHdheXMgaGF2ZSB0aGUgdXRmOCBrZXlzIGZsYWcKLSAjIHNldCBvbiA1LjcuMyBhbmQgbGF0ZXIu IE90aGVyd2lzZSB0aGUgdGVzdCBmYWlscyBpZiBydW4gd2l0aCAtTXV0ZjggYmVjYXVzZQotQEAg LTU5LDE5NSArNTEsMjIwIEBAIG15ICVoYXNoID0gKHBlcmwgPT4gJ3J1bGVzJywgY2hyIDI1Niwg JycpOwotIGRlbGV0ZSAkaGFzaHtjaHIgMjU2fTsKLSAKLSBzdWIgdGVzdF9oYXNoIHsKLS0gIG15 ICRjbG9uZSA9IHNoaWZ0OwotLSAgaXMgKHJlZiAkY2xvbmUsICJIQVNIIiwgIkdldCBoYXNoIGJh Y2siKTsKLS0gIGlzIChzY2FsYXIga2V5cyAlJGNsb25lLCAxLCAid2l0aCAxIGtleSIpOwotLSAg aXMgKChrZXlzICUkY2xvbmUpWzBdLCAicGVybCIsICJ3aGljaCBpcyBjb3JyZWN0Iik7Ci0tICBp cyAoJGNsb25lLT57cGVybH0sICJydWxlcyIsICJHb3QgZXhwZWN0ZWQgdmFsdWUgd2hlbiBsb29r aW5nIHVwIGtleSBpbiBjbG9uZSIpOwotKyAgICBteSAkY2xvbmUgPSBzaGlmdDsKLSsgICAgaXMg KHJlZiAkY2xvbmUsICJIQVNIIiwgIkdldCBoYXNoIGJhY2siKTsKLSsgICAgaXMgKHNjYWxhciBr ZXlzICUkY2xvbmUsIDEsICJ3aXRoIDEga2V5Iik7Ci0rICAgIGlzICgoa2V5cyAlJGNsb25lKVsw XSwgInBlcmwiLCAid2hpY2ggaXMgY29ycmVjdCIpOwotKyAgICBpcyAoJGNsb25lLT57cGVybH0s ICJydWxlcyIsICJHb3QgZXhwZWN0ZWQgdmFsdWUgd2hlbiBsb29raW5nIHVwIGtleSBpbiBjbG9u ZSIpOwotIH0KLSAKLSBzdWIgdGVzdF9oZWFkZXIgewotLSAgbXkgKCRoZWFkZXIsICRpc2ZpbGUs ICRpc25ldG9yZGVyKSA9IEBfOwotLSAgaXMgKCEhJGhlYWRlci0+e2ZpbGV9LCAhISRpc2ZpbGUs ICJpcyBmaWxlIik7Ci0tICBpcyAoJGhlYWRlci0+e21ham9yfSwgJG1ham9yLCAibWFqb3IgbnVt YmVyIik7Ci0tICBpcyAoJGhlYWRlci0+e21pbm9yfSwgJG1pbm9yX3dyaXRlLCAibWlub3IgbnVt YmVyIik7Ci0tICBpcyAoISEkaGVhZGVyLT57bmV0b3JkZXJ9LCAhISRpc25ldG9yZGVyLCAiaXMg bmV0d29yayBvcmRlciIpOwotLSAgaWYgKCRpc25ldG9yZGVyKSB7Ci0tICAgICMgTmV0d29yayBv cmRlciBoZWFkZXIgaGFzIG5vIHNpemVzCi0tICB9IGVsc2UgewotLSAgICBpcyAoJGhlYWRlci0+ e2J5dGVvcmRlcn0sICRieXRlb3JkZXIsICJieXRlIG9yZGVyIik7Ci0tICAgIGlzICgkaGVhZGVy LT57aW50c2l6ZX0sICRDb25maWd7aW50c2l6ZX0sICJpbnQgc2l6ZSIpOwotLSAgICBpcyAoJGhl YWRlci0+e2xvbmdzaXplfSwgJENvbmZpZ3tsb25nc2l6ZX0sICJsb25nIHNpemUiKTsKLS0gU0tJ UDogewotLQlza2lwICgiTm8gXCRDb25maWd7cHJ0c2l6ZX0gb24gdGhpcyBwZXJsIHZlcnNpb24g KCRdKSIsIDEpCi0tCSAgICB1bmxlc3MgZGVmaW5lZCAkQ29uZmlne3B0cnNpemV9OwotLQlpcyAo JGhlYWRlci0+e3B0cnNpemV9LCAkQ29uZmlne3B0cnNpemV9LCAibG9uZyBzaXplIik7Ci0rICAg IG15ICgkaGVhZGVyLCAkaXNmaWxlLCAkaXNuZXRvcmRlcikgPSBAXzsKLSsgICAgaXMgKCEhJGhl YWRlci0+e2ZpbGV9LCAhISRpc2ZpbGUsICJpcyBmaWxlIik7Ci0rICAgIGlzICgkaGVhZGVyLT57 bWFqb3J9LCAkbWFqb3IsICJtYWpvciBudW1iZXIiKTsKLSsgICAgaXMgKCRoZWFkZXItPnttaW5v cn0sICRtaW5vcl93cml0ZSwgIm1pbm9yIG51bWJlciIpOwotKyAgICBpcyAoISEkaGVhZGVyLT57 bmV0b3JkZXJ9LCAhISRpc25ldG9yZGVyLCAiaXMgbmV0d29yayBvcmRlciIpOwotKyAgICBpZiAo JGlzbmV0b3JkZXIpIHsKLSsgICAgICAgICMgTmV0d29yayBvcmRlciBoZWFkZXIgaGFzIG5vIHNp emVzCi0rICAgIH0KLSsgICAgZWxzZSB7Ci0rICAgICAgICBpcyAoJGhlYWRlci0+e2J5dGVvcmRl cn0sICRieXRlb3JkZXIsICJieXRlIG9yZGVyIik7Ci0rICAgICAgICBpcyAoJGhlYWRlci0+e2lu dHNpemV9LCAkQ29uZmlne2ludHNpemV9LCAiaW50IHNpemUiKTsKLSsgICAgICAgIGlzICgkaGVh ZGVyLT57bG9uZ3NpemV9LCAkQ29uZmlne2xvbmdzaXplfSwgImxvbmcgc2l6ZSIpOwotKyAgICAg ICAgU0tJUDogewotKyAgICAgICAgICAgIHNraXAgKCJObyBcJENvbmZpZ3twcnRzaXplfSBvbiB0 aGlzIHBlcmwgdmVyc2lvbiAoJF0pIiwgMSkKLSsgICAgICAgICAgICAgICAgdW5sZXNzIGRlZmlu ZWQgJENvbmZpZ3twdHJzaXplfTsKLSsgICAgICAgICAgICBpcyAoJGhlYWRlci0+e3B0cnNpemV9 LCAkQ29uZmlne3B0cnNpemV9LCAibG9uZyBzaXplIik7Ci0rICAgICAgICB9Ci0rICAgICAgICBp cyAoJGhlYWRlci0+e252c2l6ZX0sICRDb25maWd7bnZzaXplfSB8fCAkQ29uZmlne2RvdWJsZXNp emV9IHx8IDgsCi0rICAgICAgICAgICAgIm52IHNpemUiKTsgIyA1LjAwNDA1IGRvZXNuJ3QgZXZl biBoYXZlIGRvdWJsZXNpemUgaW4gY29uZmlnLgotICAgICB9Ci0tICAgIGlzICgkaGVhZGVyLT57 bnZzaXplfSwgJENvbmZpZ3tudnNpemV9IHx8ICRDb25maWd7ZG91Ymxlc2l6ZX0gfHwgOCwKLS0g ICAgICAgICJudiBzaXplIik7ICMgNS4wMDQwNSBkb2Vzbid0IGV2ZW4gaGF2ZSBkb3VibGVzaXpl IGluIGNvbmZpZy4KLS0gIH0KLSB9Ci0gCi0gc3ViIHRlc3RfdHJ1bmNhdGVkIHsKLS0gIG15ICgk ZGF0YSwgJHN1YiwgJG1hZ2ljX2xlbiwgJHdoYXQpID0gQF87Ci0tICBmb3IgbXkgJGkgKDAgLi4g bGVuZ3RoICgkZGF0YSkgLSAxKSB7Ci0tICAgIG15ICRzaG9ydCA9IHN1YnN0ciAkZGF0YSwgMCwg JGk7Ci0tCi0tICAgICMgbG9jYWwgJFN0b3JhYmxlOjpERUJVR01FID0gMTsKLS0gICAgbXkgJGNs b25lID0gJiRzdWIoJHNob3J0KTsKLS0gICAgaXMgKGRlZmluZWQgKCRjbG9uZSksICcnLCAidHJ1 bmNhdGVkICR3aGF0IHRvICRpIHNob3VsZCBmYWlsIik7Ci0tICAgIGlmICgkaSA8ICRtYWdpY19s ZW4pIHsKLS0gICAgICBsaWtlICgkQCwgIi9eTWFnaWMgbnVtYmVyIGNoZWNraW5nIG9uIHN0b3Jh YmxlICR3aGF0IGZhaWxlZC8iLAotLSAgICAgICAgICAiU2hvdWxkIGNyb2FrIHdpdGggbWFnaWMg bnVtYmVyIHdhcm5pbmciKTsKLS0gICAgfSBlbHNlIHsKLS0gICAgICBpcyAoJEAsICIiLCAiU2hv dWxkIG5vdCBzZXQgXCRcQCIpOwotKyAgICBteSAoJGRhdGEsICRzdWIsICRtYWdpY19sZW4sICR3 aGF0KSA9IEBfOwotKyAgICBmb3IgbXkgJGkgKDAgLi4gbGVuZ3RoICgkZGF0YSkgLSAxKSB7Ci0r ICAgICAgICBteSAkc2hvcnQgPSBzdWJzdHIgJGRhdGEsIDAsICRpOwotKwotKyAgICAgICAgIyBs b2NhbCAkU3RvcmFibGU6OkRFQlVHTUUgPSAxOwotKyAgICAgICAgbXkgJGNsb25lID0gJiRzdWIo JHNob3J0KTsKLSsgICAgICAgIGlzIChkZWZpbmVkICgkY2xvbmUpLCAnJywgInRydW5jYXRlZCAk d2hhdCB0byAkaSBzaG91bGQgZmFpbCIpOwotKyAgICAgICAgaWYgKCRpIDwgJG1hZ2ljX2xlbikg ewotKyAgICAgICAgICAgIGxpa2UgKCRALCAiL15NYWdpYyBudW1iZXIgY2hlY2tpbmcgb24gc3Rv cmFibGUgJHdoYXQgZmFpbGVkLyIsCi0rICAgICAgICAgICAgICAgICJTaG91bGQgY3JvYWsgd2l0 aCBtYWdpYyBudW1iZXIgd2FybmluZyIpOwotKyAgICAgICAgfQotKyAgICAgICAgZWxzZSB7Ci0r ICAgICAgICAgICAgaXMgKCRALCAiIiwgIlNob3VsZCBub3Qgc2V0IFwkXEAiKTsKLSsgICAgICAg IH0KLSAgICAgfQotLSAgfQotIH0KLSAKLSBzdWIgdGVzdF9jb3JydXB0IHsKLS0gIG15ICgkZGF0 YSwgJHN1YiwgJHdoYXQsICRuYW1lKSA9IEBfOwotKyAgICBteSAoJGRhdGEsICRzdWIsICR3aGF0 LCAkbmFtZSkgPSBAXzsKLSAKLS0gIG15ICRjbG9uZSA9ICYkc3ViKCRkYXRhKTsKLS0gIGxvY2Fs ICRUZXN0OjpCdWlsZGVyOjpMZXZlbCA9ICRUZXN0OjpCdWlsZGVyOjpMZXZlbCArIDE7Ci0tICBp cyAoZGVmaW5lZCAoJGNsb25lKSwgJycsICIkbmFtZSAkd2hhdCBzaG91bGQgZmFpbCIpOwotLSAg bGlrZSAoJEAsICR3aGF0LCAkbmFtZSk7Ci0rICAgIG15ICRjbG9uZSA9ICYkc3ViKCRkYXRhKTsK LSsgICAgbG9jYWwgJFRlc3Q6OkJ1aWxkZXI6OkxldmVsID0gJFRlc3Q6OkJ1aWxkZXI6OkxldmVs ICsgMTsKLSsgICAgaXMgKGRlZmluZWQgKCRjbG9uZSksICcnLCAiJG5hbWUgJHdoYXQgc2hvdWxk IGZhaWwiKTsKLSsgICAgbGlrZSAoJEAsICR3aGF0LCAkbmFtZSk7Ci0gfQotIAotIHN1YiB0ZXN0 X3RoaW5ncyB7Ci0tICBteSAoJGNvbnRlbnRzLCAkc3ViLCAkd2hhdCwgJGlzbmV0d29yaykgPSBA XzsKLS0gIG15ICRpc2ZpbGUgPSAkd2hhdCBlcSAnZmlsZSc7Ci0tICBteSAkZmlsZV9tYWdpYyA9 ICRpc2ZpbGUgPyBsZW5ndGggJGZpbGVfbWFnaWNfc3RyIDogMDsKLSsgICAgbXkgKCRjb250ZW50 cywgJHN1YiwgJHdoYXQsICRpc25ldHdvcmspID0gQF87Ci0rICAgIG15ICRpc2ZpbGUgPSAkd2hh dCBlcSAnZmlsZSc7Ci0rICAgIG15ICRmaWxlX21hZ2ljID0gJGlzZmlsZSA/IGxlbmd0aCAkZmls ZV9tYWdpY19zdHIgOiAwOwotIAotLSAgbXkgJGhlYWRlciA9IFN0b3JhYmxlOjpyZWFkX21hZ2lj ICgkY29udGVudHMpOwotLSAgdGVzdF9oZWFkZXIgKCRoZWFkZXIsICRpc2ZpbGUsICRpc25ldHdv cmspOwotKyAgICBteSAkaGVhZGVyID0gU3RvcmFibGU6OnJlYWRfbWFnaWMgKCRjb250ZW50cyk7 Ci0rICAgIHRlc3RfaGVhZGVyICgkaGVhZGVyLCAkaXNmaWxlLCAkaXNuZXR3b3JrKTsKLSAKLS0g ICMgVGVzdCB0aGF0IGlmIHdlIHJlLXdyaXRlIGl0LCBldmVyeXRoaW5nIHN0aWxsIHdvcmtzOgot LSAgbXkgJGNsb25lID0gJiRzdWIgKCRjb250ZW50cyk7Ci0rICAgICMgVGVzdCB0aGF0IGlmIHdl IHJlLXdyaXRlIGl0LCBldmVyeXRoaW5nIHN0aWxsIHdvcmtzOgotKyAgICBteSAkY2xvbmUgPSAm JHN1YiAoJGNvbnRlbnRzKTsKLSAKLS0gIGlzICgkQCwgIiIsICJUaGVyZSBzaG91bGQgYmUgbm8g ZXJyb3IiKTsKLSsgICAgaXMgKCRALCAiIiwgIlRoZXJlIHNob3VsZCBiZSBubyBlcnJvciIpOwot IAotLSAgdGVzdF9oYXNoICgkY2xvbmUpOwotKyAgICB0ZXN0X2hhc2ggKCRjbG9uZSk7Ci0gCi0t ICAjIE5vdyBsZXRzIGNoZWNrIHRoZSBzaG9ydCB2ZXJzaW9uOgotLSAgdGVzdF90cnVuY2F0ZWQg KCRjb250ZW50cywgJHN1YiwgJGZpbGVfbWFnaWMKLS0gICAgICAgICAgICAgICAgICArICgkaXNu ZXR3b3JrID8gJG5ldHdvcmtfbWFnaWMgOiAkb3RoZXJfbWFnaWMpLCAkd2hhdCk7Ci0rICAgICMg Tm93IGxldHMgY2hlY2sgdGhlIHNob3J0IHZlcnNpb246Ci0rICAgIHRlc3RfdHJ1bmNhdGVkICgk Y29udGVudHMsICRzdWIsICRmaWxlX21hZ2ljCi0rICAgICAgICAgICAgICAgICAgICArICgkaXNu ZXR3b3JrID8gJG5ldHdvcmtfbWFnaWMgOiAkb3RoZXJfbWFnaWMpLCAkd2hhdCk7Ci0rCi0rICAg IG15ICRjb3B5OwotKyAgICBpZiAoJGlzZmlsZSkgewotKyAgICAgICAgJGNvcHkgPSAkY29udGVu dHM7Ci0rICAgICAgICBzdWJzdHIgKCRjb3B5LCAwLCA0KSA9ICdpcm9uJzsKLSsgICAgICAgIHRl c3RfY29ycnVwdCgKLSsgICAgICAgICAgICAkY29weSwgJHN1YiwgIi9eRmlsZSBpcyBub3QgYSBw ZXJsIHN0b3JhYmxlLyIsCi0rICAgICAgICAgICAgIm1hZ2ljIG51bWJlciIKLSsgICAgICAgICk7 Ci0rICAgIH0KLSAKLS0gIG15ICRjb3B5OwotLSAgaWYgKCRpc2ZpbGUpIHsKLSAgICAgJGNvcHkg PSAkY29udGVudHM7Ci0tICAgIHN1YnN0ciAoJGNvcHksIDAsIDQpID0gJ2lyb24nOwotLSAgICB0 ZXN0X2NvcnJ1cHQgKCRjb3B5LCAkc3ViLCAiL15GaWxlIGlzIG5vdCBhIHBlcmwgc3RvcmFibGUv IiwKLS0gICAgICAgICAgICAgICAgICAibWFnaWMgbnVtYmVyIik7Ci0tICB9Ci0tCi0tICAkY29w eSA9ICRjb250ZW50czsKLS0gICMgTmVlZHMgdG8gYmUgbW9yZSB0aGFuIDEsIGFzIHdlJ3JlIGFs cmVhZHkgY29kaW5nIGEgc3ByZWFkIG9mIDEgbWlub3IgdmVyc2lvbgotLSAgIyBudW1iZXIgb24g d3JpdGVzICgyLjUsIDIuNCkuIE1heSBpbmNyZWFzZSB0byAyIGlmIHdlIGZpZ3VyZSB3ZSBjYW4g ZG8gMi4zCi0tICAjIG9uIDUuMDA1XzAzIChObyB1dGY4KS4KLS0gICMgNCBhbGxvd3MgZm9yIGEg c21hbGwgc2FmZXR5IG1hcmdpbgotLSAgIyBXaGljaCB3ZSd2ZSBub3cgZXhoYXVzdGVkIGdpdmVu IHRoYXQgU3RvcmFibGUgMi4yNSBpcyB3cml0aW5nIDIuOAotLSAgIyAoSm9rZToKLS0gICMgUXVl c3Rpb246IFdoYXQgaXMgdGhlIHZhbHVlIG9mIHBpPwotLSAgIyBNYXRoZW1hdGljaWFuIGFuc3dl cnMgIkl0J3MgcGksIGlzbid0IGl0IgotLSAgIyBQaHlzaWNpc3QgYW5zd2VycyAiMy4xLCB3aXRo aW4gZXhwZXJpbWVudGFsIGVycm9yIgotLSAgIyBFbmdpbmVlciBhbnN3ZXJzICJXZWxsLCBhbGxv d2luZyBmb3IgYSBzbWFsbCBzYWZldHkgbWFyZ2luLCAgIDE4IgotLSAgIyApCi0tICBteSAkbWlu b3I2ID0gJGhlYWRlci0+e21pbm9yfSArIDY7Ci0tICBzdWJzdHIgKCRjb3B5LCAkZmlsZV9tYWdp YyArIDEsIDEpID0gY2hyICRtaW5vcjY7Ci0tICB7Ci0tICAgICMgTm93IGJ5IGRlZmF1bHQgbmV3 ZXIgbWlub3IgdmVyc2lvbiBudW1iZXJzIGFyZSBub3QgYSBwYWluLgotLSAgICAkY2xvbmUgPSAm JHN1YigkY29weSk7Ci0tICAgIGlzICgkQCwgIiIsICJieSBkZWZhdWx0IG5vIGVycm9yIG9uIGhp Z2hlciBtaW5vciIpOwotLSAgICB0ZXN0X2hhc2ggKCRjbG9uZSk7Ci0rICAgICMgTmVlZHMgdG8g YmUgbW9yZSB0aGFuIDEsIGFzIHdlJ3JlIGFscmVhZHkgY29kaW5nIGEgc3ByZWFkIG9mIDEgbWlu b3IgdmVyc2lvbgotKyAgICAjIG51bWJlciBvbiB3cml0ZXMgKDIuNSwgMi40KS4gTWF5IGluY3Jl YXNlIHRvIDIgaWYgd2UgZmlndXJlIHdlIGNhbiBkbyAyLjMKLSsgICAgIyBvbiA1LjAwNV8wMyAo Tm8gdXRmOCkuCi0rICAgICMgNCBhbGxvd3MgZm9yIGEgc21hbGwgc2FmZXR5IG1hcmdpbgotKyAg ICAjIFdoaWNoIHdlJ3ZlIG5vdyBleGhhdXN0ZWQgZ2l2ZW4gdGhhdCBTdG9yYWJsZSAyLjI1IGlz IHdyaXRpbmcgMi44Ci0rICAgICMgKEpva2U6Ci0rICAgICMgUXVlc3Rpb246IFdoYXQgaXMgdGhl IHZhbHVlIG9mIHBpPwotKyAgICAjIE1hdGhlbWF0aWNpYW4gYW5zd2VycyAiSXQncyBwaSwgaXNu J3QgaXQiCi0rICAgICMgUGh5c2ljaXN0IGFuc3dlcnMgIjMuMSwgd2l0aGluIGV4cGVyaW1lbnRh bCBlcnJvciIKLSsgICAgIyBFbmdpbmVlciBhbnN3ZXJzICJXZWxsLCBhbGxvd2luZyBmb3IgYSBz bWFsbCBzYWZldHkgbWFyZ2luLCAgIDE4IgotKyAgICAjICkKLSsgICAgbXkgJG1pbm9yNiA9ICRo ZWFkZXItPnttaW5vcn0gKyA2OwotKyAgICBzdWJzdHIgKCRjb3B5LCAkZmlsZV9tYWdpYyArIDEs IDEpID0gY2hyICRtaW5vcjY7Ci0rICAgIHsKLSsgICAgICAgICMgTm93IGJ5IGRlZmF1bHQgbmV3 ZXIgbWlub3IgdmVyc2lvbiBudW1iZXJzIGFyZSBub3QgYSBwYWluLgotKyAgICAgICAgJGNsb25l ID0gJiRzdWIoJGNvcHkpOwotKyAgICAgICAgaXMgKCRALCAiIiwgImJ5IGRlZmF1bHQgbm8gZXJy b3Igb24gaGlnaGVyIG1pbm9yIik7Ci0rICAgICAgICB0ZXN0X2hhc2ggKCRjbG9uZSk7Ci0rCi0r ICAgICAgICBsb2NhbCAkU3RvcmFibGU6OmFjY2VwdF9mdXR1cmVfbWlub3IgPSAwOwotKyAgICAg ICAgdGVzdF9jb3JydXB0KAotKyAgICAgICAgICAgICRjb3B5LCAkc3ViLAotKyAgICAgICAgICAg ICIvXlN0b3JhYmxlIGJpbmFyeSBpbWFnZSB2JGhlYWRlci0+e21ham9yfVwuJG1pbm9yNiBtb3Jl IHJlY2VudCB0aGFuIEkgYW0gXFwodiRoZWFkZXItPnttYWpvcn1cLiRtaW5vclxcKS8iLAotKyAg ICAgICAgICAgICJoaWdoZXIgbWlub3IiCi0rICAgICAgICApOwotKyAgICB9Ci0gCi0tICAgIGxv Y2FsICRTdG9yYWJsZTo6YWNjZXB0X2Z1dHVyZV9taW5vciA9IDA7Ci0tICAgIHRlc3RfY29ycnVw dCAoJGNvcHksICRzdWIsCi0tICAgICAgICAgICAgICAgICAgIi9eU3RvcmFibGUgYmluYXJ5IGlt YWdlIHYkaGVhZGVyLT57bWFqb3J9XC4kbWlub3I2IG1vcmUgcmVjZW50IHRoYW4gSSBhbSBcXCh2 JGhlYWRlci0+e21ham9yfVwuJG1pbm9yXFwpLyIsCi0tICAgICAgICAgICAgICAgICAgImhpZ2hl ciBtaW5vciIpOwotLSAgfQotLQotLSAgJGNvcHkgPSAkY29udGVudHM7Ci0tICBteSAkbWFqb3Ix ID0gJGhlYWRlci0+e21ham9yfSArIDE7Ci0tICBzdWJzdHIgKCRjb3B5LCAkZmlsZV9tYWdpYywg MSkgPSBjaHIgMiokbWFqb3IxOwotLSAgdGVzdF9jb3JydXB0ICgkY29weSwgJHN1YiwKLS0gICAg ICAgICAgICAgICAgIi9eU3RvcmFibGUgYmluYXJ5IGltYWdlIHYkbWFqb3IxXC4kaGVhZGVyLT57 bWlub3J9IG1vcmUgcmVjZW50IHRoYW4gSSBhbSBcXCh2JGhlYWRlci0+e21ham9yfVwuJG1pbm9y XFwpLyIsCi0tICAgICAgICAgICAgICAgICJoaWdoZXIgbWFqb3IiKTsKLS0KLS0gICMgQ29udGlu dWUgbWVzc2luZyB3aXRoIHRoZSBwcmV2aW91cyBjb3B5Ci0tICBteSAkbWlub3IxID0gJGhlYWRl ci0+e21pbm9yfSAtIDE7Ci0tICBzdWJzdHIgKCRjb3B5LCAkZmlsZV9tYWdpYyArIDEsIDEpID0g Y2hyICRtaW5vcjE7Ci0tICB0ZXN0X2NvcnJ1cHQgKCRjb3B5LCAkc3ViLAotLSAgICAgICAgICAg ICAgICAiL15TdG9yYWJsZSBiaW5hcnkgaW1hZ2UgdiRtYWpvcjFcLiRtaW5vcjEgbW9yZSByZWNl bnQgdGhhbiBJIGFtIFxcKHYkaGVhZGVyLT57bWFqb3J9XC4kbWlub3JcXCkvIiwKLS0gICAgICAg ICAgICAgICJoaWdoZXIgbWFqb3IsIGxvd2VyIG1pbm9yIik7Ci0tCi0tICBteSAkd2hlcmU7Ci0t ICBpZiAoISRpc25ldHdvcmspIHsKLS0gICAgIyBBbGwgdGhlc2UgYXJlIG9taXR0ZWQgZnJvbSB0 aGUgbmV0d29yayBvcmRlciBoZWFkZXIuCi0tICAgICMgSSdtIG5vdCBzdXJlIGlmIGl0J3MgY29y cmVjdCB0byBvbWl0IHRoZSBieXRlIHNpemUgc3R1ZmYuCi0gICAgICRjb3B5ID0gJGNvbnRlbnRz OwotLSAgICBzdWJzdHIgKCRjb3B5LCAkZmlsZV9tYWdpYyArIDMsIGxlbmd0aCAkaGVhZGVyLT57 Ynl0ZW9yZGVyfSkKLS0gICAgICA9IHJldmVyc2UgJGhlYWRlci0+e2J5dGVvcmRlcn07Ci0tCi0t ICAgIHRlc3RfY29ycnVwdCAoJGNvcHksICRzdWIsICIvXkJ5dGUgb3JkZXIgaXMgbm90IGNvbXBh dGlibGUvIiwKLS0gICAgICAgICAgICAgICAgICAiYnl0ZSBvcmRlciIpOwotLSAgICAkd2hlcmUg PSAkZmlsZV9tYWdpYyArIDMgKyBsZW5ndGggJGhlYWRlci0+e2J5dGVvcmRlcn07Ci0tICAgIGZv cmVhY2ggKFsnaW50c2l6ZScsICJJbnRlZ2VyIl0sCi0tICAgICAgICAgICAgIFsnbG9uZ3NpemUn LCAiTG9uZyBpbnRlZ2VyIl0sCi0tICAgICAgICAgICAgIFsncHRyc2l6ZScsICJQb2ludGVyIl0s Ci0tICAgICAgICAgICAgIFsnbnZzaXplJywgIkRvdWJsZSJdKSB7Ci0tICAgICAgbXkgKCRrZXks ICRuYW1lKSA9IEAkXzsKLS0gICAgICAkY29weSA9ICRjb250ZW50czsKLS0gICAgICBzdWJzdHIg KCRjb3B5LCAkd2hlcmUrKywgMSkgPSBjaHIgMDsKLS0gICAgICB0ZXN0X2NvcnJ1cHQgKCRjb3B5 LCAkc3ViLCAiL14kbmFtZSBzaXplIGlzIG5vdCBjb21wYXRpYmxlLyIsCi0tICAgICAgICAgICAg ICAgICAgICAiJG5hbWUgc2l6ZSIpOwotKyAgICBteSAkbWFqb3IxID0gJGhlYWRlci0+e21ham9y fSArIDE7Ci0rICAgIHN1YnN0ciAoJGNvcHksICRmaWxlX21hZ2ljLCAxKSA9IGNociAyKiRtYWpv cjE7Ci0rICAgIHRlc3RfY29ycnVwdCgKLSsgICAgICAgICRjb3B5LCAkc3ViLAotKyAgICAgICAg Ii9eU3RvcmFibGUgYmluYXJ5IGltYWdlIHYkbWFqb3IxXC4kaGVhZGVyLT57bWlub3J9IG1vcmUg cmVjZW50IHRoYW4gSSBhbSBcXCh2JGhlYWRlci0+e21ham9yfVwuJG1pbm9yXFwpLyIsCi0rICAg ICAgICAiaGlnaGVyIG1ham9yIgotKyAgICApOwotKwotKyAgICAjIENvbnRpbnVlIG1lc3Npbmcg d2l0aCB0aGUgcHJldmlvdXMgY29weQotKyAgICBteSAkbWlub3IxID0gJGhlYWRlci0+e21pbm9y fSAtIDE7Ci0rICAgIHN1YnN0ciAoJGNvcHksICRmaWxlX21hZ2ljICsgMSwgMSkgPSBjaHIgJG1p bm9yMTsKLSsgICAgdGVzdF9jb3JydXB0KAotKyAgICAgICAgJGNvcHksICRzdWIsCi0rICAgICAg ICAiL15TdG9yYWJsZSBiaW5hcnkgaW1hZ2UgdiRtYWpvcjFcLiRtaW5vcjEgbW9yZSByZWNlbnQg dGhhbiBJIGFtIFxcKHYkaGVhZGVyLT57bWFqb3J9XC4kbWlub3JcXCkvIiwKLSsgICAgICAgICJo aWdoZXIgbWFqb3IsIGxvd2VyIG1pbm9yIgotKyAgICApOwotKwotKyAgICBteSAkd2hlcmU7Ci0r ICAgIGlmICghJGlzbmV0d29yaykgewotKyAgICAgICAgIyBBbGwgdGhlc2UgYXJlIG9taXR0ZWQg ZnJvbSB0aGUgbmV0d29yayBvcmRlciBoZWFkZXIuCi0rICAgICAgICAjIEknbSBub3Qgc3VyZSBp ZiBpdCdzIGNvcnJlY3QgdG8gb21pdCB0aGUgYnl0ZSBzaXplIHN0dWZmLgotKyAgICAgICAgJGNv cHkgPSAkY29udGVudHM7Ci0rICAgICAgICBzdWJzdHIgKCRjb3B5LCAkZmlsZV9tYWdpYyArIDMs IGxlbmd0aCAkaGVhZGVyLT57Ynl0ZW9yZGVyfSkKLSsgICAgICAgICAgICA9IHJldmVyc2UgJGhl YWRlci0+e2J5dGVvcmRlcn07Ci0rCi0rICAgICAgICB0ZXN0X2NvcnJ1cHQoCi0rICAgICAgICAg ICAgJGNvcHksICRzdWIsICIvXkJ5dGUgb3JkZXIgaXMgbm90IGNvbXBhdGlibGUvIiwKLSsgICAg ICAgICAgICAiYnl0ZSBvcmRlciIKLSsgICAgICAgICk7Ci0rICAgICAgICAkd2hlcmUgPSAkZmls ZV9tYWdpYyArIDMgKyBsZW5ndGggJGhlYWRlci0+e2J5dGVvcmRlcn07Ci0rICAgICAgICBmb3Jl YWNoICgKLSsgICAgICAgICAgICBbJ2ludHNpemUnLCAiSW50ZWdlciJdLAotKyAgICAgICAgICAg IFsnbG9uZ3NpemUnLCAiTG9uZyBpbnRlZ2VyIl0sCi0rICAgICAgICAgICAgWydwdHJzaXplJywg IlBvaW50ZXIiXSwKLSsgICAgICAgICAgICBbJ252c2l6ZScsICJEb3VibGUiXQotKyAgICAgICAg KSB7Ci0rICAgICAgICAgICAgbXkgKCRrZXksICRuYW1lKSA9IEAkXzsKLSsgICAgICAgICAgICAk Y29weSA9ICRjb250ZW50czsKLSsgICAgICAgICAgICBzdWJzdHIgKCRjb3B5LCAkd2hlcmUrKywg MSkgPSBjaHIgMDsKLSsgICAgICAgICAgICB0ZXN0X2NvcnJ1cHQoCi0rICAgICAgICAgICAgICAg ICRjb3B5LCAkc3ViLCAiL14kbmFtZSBzaXplIGlzIG5vdCBjb21wYXRpYmxlLyIsCi0rICAgICAg ICAgICAgICAgICIkbmFtZSBzaXplIgotKyAgICAgICAgICAgICk7Ci0rICAgICAgICB9Ci0rICAg IH0gZWxzZSB7Ci0rICAgICAgICAkd2hlcmUgPSAkZmlsZV9tYWdpYyArICRuZXR3b3JrX21hZ2lj OwotICAgICB9Ci0tICB9IGVsc2UgewotLSAgICAkd2hlcmUgPSAkZmlsZV9tYWdpYyArICRuZXR3 b3JrX21hZ2ljOwotLSAgfQotLQotLSAgIyBKdXN0IHRoZSBoZWFkZXIgYW5kIGEgdGFnIDI1NS4g QXMgMzQgaXMgY3VycmVudGx5IHRoZSBoaWdoZXN0IHRhZywgdGhpcwotLSAgIyBpcyAidW5leHBl Y3RlZCIKLS0gICRjb3B5ID0gc3Vic3RyICgkY29udGVudHMsIDAsICR3aGVyZSkgLiBjaHIgMjU1 OwotLQotLSAgdGVzdF9jb3JydXB0ICgkY29weSwgJHN1YiwKLS0gICAgICAgICAgICAgICAgIi9e Q29ycnVwdGVkIHN0b3JhYmxlICR3aGF0IFxcKGJpbmFyeSB2JGhlYWRlci0+e21ham9yfS4kaGVh ZGVyLT57bWlub3J9XFwpLyIsCi0tICAgICAgICAgICAgICAgICJib2d1cyB0YWciKTsKLS0KLS0g ICMgTm93IGRyb3AgdGhlIG1pbm9yIHZlcnNpb24gbnVtYmVyCi0tICBzdWJzdHIgKCRjb3B5LCAk ZmlsZV9tYWdpYyArIDEsIDEpID0gY2hyICRtaW5vcjE7Ci0tCi0tICB0ZXN0X2NvcnJ1cHQgKCRj b3B5LCAkc3ViLAotLSAgICAgICAgICAgICAgICAiL15Db3JydXB0ZWQgc3RvcmFibGUgJHdoYXQg XFwoYmluYXJ5IHYkaGVhZGVyLT57bWFqb3J9LiRtaW5vcjFcXCkvIiwKLS0gICAgICAgICAgICAg ICAgImJvZ3VzIHRhZywgbWlub3IgbGVzcyAxIik7Ci0tICAjIE5vdyBpbmNyZWFzZSB0aGUgbWlu b3IgdmVyc2lvbiBudW1iZXIKLS0gIHN1YnN0ciAoJGNvcHksICRmaWxlX21hZ2ljICsgMSwgMSkg PSBjaHIgJG1pbm9yNjsKLS0KLS0gICMgbG9jYWwgJFN0b3JhYmxlOjpERUJVR01FID0gMTsKLS0g ICMgVGhpcyBpcyB0aGUgZGVsYXllZCBjcm9hawotLSAgdGVzdF9jb3JydXB0ICgkY29weSwgJHN1 YiwKLS0gICAgICAgICAgICAgICAgIi9eU3RvcmFibGUgYmluYXJ5IGltYWdlIHYkaGVhZGVyLT57 bWFqb3J9LiRtaW5vcjYgY29udGFpbnMgZGF0YSBvZiB0eXBlIDI1NS4gVGhpcyBTdG9yYWJsZSBp cyB2JGhlYWRlci0+e21ham9yfS4kbWlub3IgYW5kIGNhbiBvbmx5IGhhbmRsZSBkYXRhIHR5cGVz IHVwIHRvIDM1LyIsCi0tICAgICAgICAgICAgICAgICJib2d1cyB0YWcsIG1pbm9yIHBsdXMgNCIp OwotLSAgIyBBbmQgY2hlY2sgYWdhaW4gdGhhdCB0aGlzIGNyb2FrIGlzIG5vdCBkZWxheWVkOgot LSAgewotKwotKyAgICAjIEp1c3QgdGhlIGhlYWRlciBhbmQgYSB0YWcgMjU1LiBBcyAzNCBpcyBj dXJyZW50bHkgdGhlIGhpZ2hlc3QgdGFnLCB0aGlzCi0rICAgICMgaXMgInVuZXhwZWN0ZWQiCi0r ICAgICRjb3B5ID0gc3Vic3RyICgkY29udGVudHMsIDAsICR3aGVyZSkgLiBjaHIgMjU1OwotKwot KyAgICB0ZXN0X2NvcnJ1cHQoCi0rICAgICAgICAkY29weSwgJHN1YiwKLSsgICAgICAgICIvXkNv cnJ1cHRlZCBzdG9yYWJsZSAkd2hhdCBcXChiaW5hcnkgdiRoZWFkZXItPnttYWpvcn0uJGhlYWRl ci0+e21pbm9yfVxcKS8iLAotKyAgICAgICAgImJvZ3VzIHRhZyIKLSsgICAgKTsKLSsKLSsgICAg IyBOb3cgZHJvcCB0aGUgbWlub3IgdmVyc2lvbiBudW1iZXIKLSsgICAgc3Vic3RyICgkY29weSwg JGZpbGVfbWFnaWMgKyAxLCAxKSA9IGNociAkbWlub3IxOwotKwotKyAgICB0ZXN0X2NvcnJ1cHQo Ci0rICAgICAgICAkY29weSwgJHN1YiwKLSsgICAgICAgICIvXkNvcnJ1cHRlZCBzdG9yYWJsZSAk d2hhdCBcXChiaW5hcnkgdiRoZWFkZXItPnttYWpvcn0uJG1pbm9yMVxcKS8iLAotKyAgICAgICAg ImJvZ3VzIHRhZywgbWlub3IgbGVzcyAxIgotKyAgICApOwotKyAgICAjIE5vdyBpbmNyZWFzZSB0 aGUgbWlub3IgdmVyc2lvbiBudW1iZXIKLSsgICAgc3Vic3RyICgkY29weSwgJGZpbGVfbWFnaWMg KyAxLCAxKSA9IGNociAkbWlub3I2OwotKwotICAgICAjIGxvY2FsICRTdG9yYWJsZTo6REVCVUdN RSA9IDE7Ci0tICAgIGxvY2FsICRTdG9yYWJsZTo6YWNjZXB0X2Z1dHVyZV9taW5vciA9IDA7Ci0t ICAgIHRlc3RfY29ycnVwdCAoJGNvcHksICRzdWIsCi0tICAgICAgICAgICAgICAgICAgIi9eU3Rv cmFibGUgYmluYXJ5IGltYWdlIHYkaGVhZGVyLT57bWFqb3J9XC4kbWlub3I2IG1vcmUgcmVjZW50 IHRoYW4gSSBhbSBcXCh2JGhlYWRlci0+e21ham9yfVwuJG1pbm9yXFwpLyIsCi0tICAgICAgICAg ICAgICAgICAgImhpZ2hlciBtaW5vciIpOwotLSAgfQotKyAgICAjIFRoaXMgaXMgdGhlIGRlbGF5 ZWQgY3JvYWsKLSsgICAgdGVzdF9jb3JydXB0KAotKyAgICAgICAgJGNvcHksICRzdWIsCi0rICAg ICAgICAiL15TdG9yYWJsZSBiaW5hcnkgaW1hZ2UgdiRoZWFkZXItPnttYWpvcn0uJG1pbm9yNiBj b250YWlucyBkYXRhIG9mIHR5cGUgMjU1LiBUaGlzIFN0b3JhYmxlIGlzIHYkaGVhZGVyLT57bWFq b3J9LiRtaW5vciBhbmQgY2FuIG9ubHkgaGFuZGxlIGRhdGEgdHlwZXMgdXAgdG8gMzUvIiwKLSsg ICAgICAgICJib2d1cyB0YWcsIG1pbm9yIHBsdXMgNCIKLSsgICAgKTsKLSsgICAgIyBBbmQgY2hl Y2sgYWdhaW4gdGhhdCB0aGlzIGNyb2FrIGlzIG5vdCBkZWxheWVkOgotKyAgICB7Ci0rICAgICAg ICAjIGxvY2FsICRTdG9yYWJsZTo6REVCVUdNRSA9IDE7Ci0rICAgICAgICBsb2NhbCAkU3RvcmFi bGU6OmFjY2VwdF9mdXR1cmVfbWlub3IgPSAwOwotKyAgICAgICAgdGVzdF9jb3JydXB0KAotKyAg ICAgICAgICAgICRjb3B5LCAkc3ViLAotKyAgICAgICAgICAgICIvXlN0b3JhYmxlIGJpbmFyeSBp bWFnZSB2JGhlYWRlci0+e21ham9yfVwuJG1pbm9yNiBtb3JlIHJlY2VudCB0aGFuIEkgYW0gXFwo diRoZWFkZXItPnttYWpvcn1cLiRtaW5vclxcKS8iLAotKyAgICAgICAgICAgICJoaWdoZXIgbWlu b3IiCi0rICAgICAgICApOwotKyAgICB9Ci0gfQotIAotK215ICRmaWxlID0gdGVtcGZpbGVuYW1l KCk7Ci0gb2sgKGRlZmluZWQgc3RvcmUoXCVoYXNoLCAkZmlsZSksICJzdG9yZSgpIHJldHVybmVk IGRlZmluZWQgdmFsdWUiKTsKLSAKLSBteSAkZXhwZWN0ZWQgPSAyMCArIGxlbmd0aCAoJGZpbGVf bWFnaWNfc3RyKSArICRvdGhlcl9tYWdpYyArICRmYW5jeTsKLSBteSAkbGVuZ3RoID0gLXMgJGZp bGU7Ci0gCi0gZGllICJEb24ndCBzZWVtIHRvIGhhdmUgd3JpdHRlbiBmaWxlICckZmlsZScgYXMg SSBjYW4ndCBnZXQgaXRzIGxlbmd0aDogJCEiCi0tICB1bmxlc3MgZGVmaW5lZCAkZmlsZTsKLSsg ICAgdW5sZXNzIGRlZmluZWQgJGZpbGU7Ci0gCi0gZGllICJFeHBlY3RlZCBmaWxlIHRvIGJlICRl eHBlY3RlZCBieXRlcyAoc2l6ZW9mIGxvbmcgaXMgJENvbmZpZ3tsb25nc2l6ZX0pIGJ1dCBpdCBp cyAkbGVuZ3RoIgotLSAgdW5sZXNzICRsZW5ndGggPT0gJGV4cGVjdGVkOwotKyAgICB1bmxlc3Mg JGxlbmd0aCA9PSAkZXhwZWN0ZWQ7Ci0gCi0gIyBSZWFkIHRoZSBjb250ZW50cyBpbnRvIG1lbW9y eToKLSBteSAkY29udGVudHMgPSBzbHVycCAoJGZpbGUpOwotQEAgLTI1NywxNCArMjc0LDExIEBA IG15ICRjbG9uZSA9IHJldHJpZXZlICRmaWxlOwotIHRlc3RfaGFzaCAoJGNsb25lKTsKLSAKLSAj IFRoZW4gdGVzdCBpdC4KLS10ZXN0X3RoaW5ncygkY29udGVudHMsIFwmc3RvcmVfYW5kX3JldHJp ZXZlLCAnZmlsZScpOwotK3Rlc3RfdGhpbmdzKCRjb250ZW50cywgXCZ3cml0ZV9hbmRfcmV0cmll dmUsICdmaWxlJyk7Ci0gCi0gIyBBbmQgbm93IHRyeSBhbG1vc3QgZXZlcnl0aGluZyBhZ2FpbiB3 aXRoIGEgU3RvcmFibGUgc3RyaW5nCi0gbXkgJHN0b3JlZCA9IGZyZWV6ZSBcJWhhc2g7Ci0tdGVz dF90aGluZ3MoJHN0b3JlZCwgXCZmcmVlemVfYW5kX3RoYXcsICdzdHJpbmcnKTsKLS0KLS0jIE5l dHdvcmsgb3JkZXIuCi0tdW5saW5rICRmaWxlIG9yIGRpZSAiQ2FuJ3QgdW5saW5rICckZmlsZSc6 ICQhIjsKLSt0ZXN0X3RoaW5ncygkc3RvcmVkLCBzdWIgeyBldmFsIHsgdGhhdyAkX1swXSB9IH0s ICdzdHJpbmcnKTsKLSAKLSBvayAoZGVmaW5lZCBuc3RvcmUoXCVoYXNoLCAkZmlsZSksICJuc3Rv cmUoKSByZXR1cm5lZCBkZWZpbmVkIHZhbHVlIik7Ci0gCi1AQCAtMjcyLDEwICsyODYsMTAgQEAg JGV4cGVjdGVkID0gMjAgKyBsZW5ndGggKCRmaWxlX21hZ2ljX3N0cikgKyAkbmV0d29ya19tYWdp YyArICRmYW5jeTsKLSAkbGVuZ3RoID0gLXMgJGZpbGU7Ci0gCi0gZGllICJEb24ndCBzZWVtIHRv IGhhdmUgd3JpdHRlbiBmaWxlICckZmlsZScgYXMgSSBjYW4ndCBnZXQgaXRzIGxlbmd0aDogJCEi Ci0tICB1bmxlc3MgZGVmaW5lZCAkZmlsZTsKLSsgICAgdW5sZXNzIGRlZmluZWQgJGZpbGU7Ci0g Ci0gZGllICJFeHBlY3RlZCBmaWxlIHRvIGJlICRleHBlY3RlZCBieXRlcyAoc2l6ZW9mIGxvbmcg aXMgJENvbmZpZ3tsb25nc2l6ZX0pIGJ1dCBpdCBpcyAkbGVuZ3RoIgotLSAgdW5sZXNzICRsZW5n dGggPT0gJGV4cGVjdGVkOwotKyAgICB1bmxlc3MgJGxlbmd0aCA9PSAkZXhwZWN0ZWQ7Ci0gCi0g IyBSZWFkIHRoZSBjb250ZW50cyBpbnRvIG1lbW9yeToKLSAkY29udGVudHMgPSBzbHVycCAoJGZp bGUpOwotQEAgLTI4NSwxMSArMjk5LDExIEBAICRjbG9uZSA9IHJldHJpZXZlICRmaWxlOwotIHRl c3RfaGFzaCAoJGNsb25lKTsKLSAKLSAjIFRoZW4gdGVzdCBpdC4KLS10ZXN0X3RoaW5ncygkY29u dGVudHMsIFwmc3RvcmVfYW5kX3JldHJpZXZlLCAnZmlsZScsIDEpOwotK3Rlc3RfdGhpbmdzKCRj b250ZW50cywgXCZ3cml0ZV9hbmRfcmV0cmlldmUsICdmaWxlJywgMSk7Ci0gCi0gIyBBbmQgbm93 IHRyeSBhbG1vc3QgZXZlcnl0aGluZyBhZ2FpbiB3aXRoIGEgU3RvcmFibGUgc3RyaW5nCi0gJHN0 b3JlZCA9IG5mcmVlemUgXCVoYXNoOwotLXRlc3RfdGhpbmdzKCRzdG9yZWQsIFwmZnJlZXplX2Fu ZF90aGF3LCAnc3RyaW5nJywgMSk7Ci0rdGVzdF90aGluZ3MoJHN0b3JlZCwgc3ViIHsgZXZhbCB7 IHRoYXcgJF9bMF0gfSB9LCAnc3RyaW5nJywgMSk7Ci0gCi0gIyBUZXN0IHRoYXQgdGhlIGJ1ZyBm aXhlZCBieSAjMjA1ODcgZG9lc24ndCBhZmZlY3QgdXMgdW5kZXIgc29tZSBvbGRlcgotICMgUGVy bC4gQU1TIDIwMDMwOTAxCi1AQCAtMzA0LDcgKzMxOCw3IEBAIHRlc3RfdGhpbmdzKCRzdG9yZWQs IFwmZnJlZXplX2FuZF90aGF3LCAnc3RyaW5nJywgMSk7Ci0gfQotIAotICMgVW51c3VhbCBpbiB0 aGF0IHRoZSBlbXB0eSBzdHJpbmcgaXMgc3RvcmVkIHdpdGggYW4gU1hfTFNDQUxBUiBtYXJrZXIK LS1teSAkaGFzaCA9IHN0b3JlX2FuZF9yZXRyaWV2ZSgicHN0MFw1XDZcM1wwXDBcMFwxXDFcMFww XDBcMFwwXDBcMFw1ZW1wdHkiKTsKLStteSAkaGFzaCA9IHdyaXRlX2FuZF9yZXRyaWV2ZSgicHN0 MFw1XDZcM1wwXDBcMFwxXDFcMFwwXDBcMFwwXDBcMFw1ZW1wdHkiKTsKLSBvayghJEAsICJubyBl eGNlcHRpb24iKTsKLSBpcyhyZWYoJGhhc2gpLCAiSEFTSCIsICJnb3QgYSBoYXNoIik7Ci0gaXMo JGhhc2gtPntlbXB0eX0sICIiLCAiZ290IGVtcHR5IGVsZW1lbnQiKTsKLWRpZmYgLS1naXQgYS90 L292ZXJsb2FkLnQgYi90L292ZXJsb2FkLnQKLWluZGV4IDY0YzA5ZTQuLjMwNWE5MmUgMTAwNjQ0 Ci0tLS0gYS90L292ZXJsb2FkLnQKLSsrKyBiL3Qvb3ZlcmxvYWQudAotQEAgLTEsMTkgKzEsMTYg QEAKLSAjIS4vcGVybAotICMKLSAjICBDb3B5cmlnaHQgKGMpIDE5OTUtMjAwMCwgUmFwaGFlbCBN YW5mcmVkaQotLSMgIAotKyMKLSAjICBZb3UgbWF5IHJlZGlzdHJpYnV0ZSBvbmx5IHVuZGVyIHRo ZSBzYW1lIHRlcm1zIGFzIFBlcmwgNSwgYXMgc3BlY2lmaWVkCi0gIyAgaW4gdGhlIFJFQURNRSBm aWxlIHRoYXQgY29tZXMgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLSMgIAotLQotLXN1YiBCRUdJ TiB7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QnOwotLSAgICB1bnNoaWZ0IEBJTkMsICd0L2NvbXBh dCcgaWYgJF0gPCA1LjAwNjAwMjsKLS0gICAgcmVxdWlyZSBDb25maWc7IGltcG9ydCBDb25maWc7 Ci0tICAgIGlmICgkRU5We1BFUkxfQ09SRX0gYW5kICRDb25maWd7J2V4dGVuc2lvbnMnfSAhfiAv XGJTdG9yYWJsZVxiLykgewotLSAgICAgICAgcHJpbnQgIjEuLjAgIyBTa2lwOiBTdG9yYWJsZSB3 YXMgbm90IGJ1aWx0XG4iOwotLSAgICAgICAgZXhpdCAwOwotLSAgICB9Ci0rIwotKwotK3VzZSBz dHJpY3Q7Ci0rdXNlIHdhcm5pbmdzOwotKwotK0JFR0lOIHsKLSsgICAgdW5zaGlmdCBASU5DLCAn dC9saWInOwotIH0KLSAKLSB1c2UgU3RvcmFibGUgcXcoZnJlZXplIHRoYXcpOwotQEAgLTI1LDIy ICsyMiwyMiBAQCB1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAxOTsKLSBwYWNrYWdlIE9WRVJMT0FE RUQ7Ci0gCi0gdXNlIG92ZXJsb2FkCi0tCSciIicgPT4gc3ViIHsgJF9bMF1bMF0gfTsKLSsgICAg JyIiJyA9PiBzdWIgeyAkX1swXVswXSB9OwotIAotIHBhY2thZ2UgbWFpbjsKLSAKLS0kYSA9IGJs ZXNzIFs3N10sIE9WRVJMT0FERUQ7Ci0rbXkgJGEgPSBibGVzcyBbNzddLCAnT1ZFUkxPQURFRCc7 Ci0gCi0tJGIgPSB0aGF3IGZyZWV6ZSAkYTsKLStteSAkYiA9IHRoYXcgZnJlZXplICRhOwotIGlz KHJlZiAkYiwgJ09WRVJMT0FERUQnKTsKLSBpcygiJGIiLCAiNzciKTsKLSAKLS0kYyA9IHRoYXcg ZnJlZXplIFwkYTsKLStteSAkYyA9IHRoYXcgZnJlZXplIFwkYTsKLSBpcyhyZWYgJGMsICdSRUYn KTsKLSBpcyhyZWYgJCRjLCAnT1ZFUkxPQURFRCcpOwotIGlzKCIkJGMiLCAiNzciKTsKLSAKLS0k ZCA9IHRoYXcgZnJlZXplIFskYSwgJGFdOwotK215ICRkID0gdGhhdyBmcmVlemUgWyRhLCAkYV07 Ci0gaXMoIiRkLT5bMF0iLCAiNzciKTsKLSAkZC0+WzBdWzBdKys7Ci0gaXMoIiRkLT5bMV0iLCAi NzgiKTsKLUBAIC00OCwyNyArNDUsMjcgQEAgaXMoIiRkLT5bMV0iLCAiNzgiKTsKLSBwYWNrYWdl IFJFRl9UT19PVkVSOwotIAotIHN1YiBtYWtlIHsKLS0JbXkgJHNlbGYgPSBibGVzcyB7fSwgc2hp ZnQ7Ci0tCW15ICgkb3ZlcikgPSBAXzsKLS0JJHNlbGYtPntvdmVyfSA9ICRvdmVyOwotLQlyZXR1 cm4gJHNlbGY7Ci0rICAgIG15ICRzZWxmID0gYmxlc3Mge30sIHNoaWZ0OwotKyAgICBteSAoJG92 ZXIpID0gQF87Ci0rICAgICRzZWxmLT57b3Zlcn0gPSAkb3ZlcjsKLSsgICAgcmV0dXJuICRzZWxm OwotIH0KLSAKLSBwYWNrYWdlIE9WRVI7Ci0gCi0gdXNlIG92ZXJsb2FkCi0tCScrJwkJPT4gXCZw bHVzLAotLQknIiInCT0+IHN1YiB7IHJlZiAkX1swXSB9OwotKyAgICAnKycgICAgID0+IFwmcGx1 cywKLSsgICAgJyIiJyAgICA9PiBzdWIgeyByZWYgJF9bMF0gfTsKLSAKLSBzdWIgcGx1cyB7Ci0t CXJldHVybiAzMTQ7Ci0rICAgIHJldHVybiAzMTQ7Ci0gfQotIAotIHN1YiBtYWtlIHsKLS0JbXkg JHNlbGYgPSBibGVzcyB7fSwgc2hpZnQ7Ci0tCW15ICRyZWYgPSBSRUZfVE9fT1ZFUi0+bWFrZSgk c2VsZik7Ci0tCSRzZWxmLT57cmVmfSA9ICRyZWY7Ci0tCXJldHVybiAkc2VsZjsKLSsgICAgbXkg JHNlbGYgPSBibGVzcyB7fSwgc2hpZnQ7Ci0rICAgIG15ICRyZWYgPSBSRUZfVE9fT1ZFUi0+bWFr ZSgkc2VsZik7Ci0rICAgICRzZWxmLT57cmVmfSA9ICRyZWY7Ci0rICAgIHJldHVybiAkc2VsZjsK LSB9Ci0gCi0gcGFja2FnZSBtYWluOwotQEAgLTg2LDcgKzgzLDggQEAgaXMoJGIgKyAkYiwgMzE0 KTsKLSBteSAkZiA9ICcnOwotIGlmIChvcmQgKCdBJykgPT0gMTkzKSB7ICMgRUJDRElDLgotICAg ICAkZiA9IHVucGFjayAndScsIHF7NyEwODQkMFMoUD4pTVVONyVWPS82UDwwKiEqKjVFSjhgfTsK LS19ZWxzZSB7Ci0rfQotK2Vsc2UgewotICAgICAkZiA9IHVucGFjayAndScsIHF7NyEwODQkMFEo MDUtPzNVOSU0RFEvMDQwKiEnLU47VzxgfTsKLSB9Ci0gCi1AQCAtMTAzLDEyICsxMDEsMTEgQEAg aXMoJCQkdCwgJ3Nub3cnKTsKLSAjLS0tCi0gIyBibGVzc2VkIHJlZmVyZW5jZSB0byBvdmVybG9h ZGVkIG9iamVjdC4KLSB7Ci0tICBteSAkYSA9IGJsZXNzIFs4OF0sICdPVkVSTE9BREVEJzsKLS0g IG15ICRjID0gdGhhdyBmcmVlemUgYmxlc3MgXCRhLCAnbWFpbic7Ci0tICBpcyhyZWYgJGMsICdt YWluJyk7Ci0tICBpcyhyZWYgJCRjLCAnT1ZFUkxPQURFRCcpOwotLSAgaXMoIiQkYyIsICI4OCIp OwotLQotKyAgICBteSAkYSA9IGJsZXNzIFs4OF0sICdPVkVSTE9BREVEJzsKLSsgICAgbXkgJGMg PSB0aGF3IGZyZWV6ZSBibGVzcyBcJGEsICdtYWluJzsKLSsgICAgaXMocmVmICRjLCAnbWFpbicp OwotKyAgICBpcyhyZWYgJCRjLCAnT1ZFUkxPQURFRCcpOwotKyAgICBpcygiJCRjIiwgIjg4Iik7 Ci0gfQotIAotIDE7Ci1kaWZmIC0tZ2l0IGEvdC9yZWN1cnNlLnQgYi90L3JlY3Vyc2UudAotaW5k ZXggNmY4MjE2OS4uZjFkMzMwYSAxMDA2NDQKLS0tLSBhL3QvcmVjdXJzZS50Ci0rKysgYi90L3Jl Y3Vyc2UudAotQEAgLTEsMjAgKzEsMTMgQEAKLSAjIS4vcGVybAotICMKLSAjICBDb3B5cmlnaHQg KGMpIDE5OTUtMjAwMCwgUmFwaGFlbCBNYW5mcmVkaQotLSMgIAotKyMKLSAjICBZb3UgbWF5IHJl ZGlzdHJpYnV0ZSBvbmx5IHVuZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFBlcmwgNSwgYXMgc3BlY2lm aWVkCi0gIyAgaW4gdGhlIFJFQURNRSBmaWxlIHRoYXQgY29tZXMgd2l0aCB0aGUgZGlzdHJpYnV0 aW9uLgotLSMgIAotLXVzZSBDb25maWc7Ci0tCi0tc3ViIEJFR0lOIHsKLS0gICAgdW5zaGlmdCBA SU5DLCAndCc7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QvY29tcGF0JyBpZiAkXSA8IDUuMDA2MDAy OwotLSAgICBpZiAoJEVOVntQRVJMX0NPUkV9IGFuZCAkQ29uZmlneydleHRlbnNpb25zJ30gIX4g L1xiU3RvcmFibGVcYi8pIHsKLS0gICAgICAgIHByaW50ICIxLi4wICMgU2tpcDogU3RvcmFibGUg d2FzIG5vdCBidWlsdFxuIjsKLS0gICAgICAgIGV4aXQgMDsKLS0gICAgfQotLX0KLSsjCi0rCi0r dXNlIHN0cmljdDsKLSt1c2Ugd2FybmluZ3M7Ci0gCi0gdXNlIFN0b3JhYmxlIHF3KGZyZWV6ZSB0 aGF3IGRjbG9uZSk7Ci0gCi1AQCAtMjYsNyArMTksNyBAQCBwYWNrYWdlIE9CSl9SRUFMOwotIAot IHVzZSBTdG9yYWJsZSBxdyhmcmVlemUgdGhhdyk7Ci0gCi0tQHggPSAoJ2EnLCAxKTsKLStteSBA eCA9ICgnYScsIDEpOwotIAotIHN1YiBtYWtlIHsgYmxlc3MgW10sIHNoaWZ0IH0KLSAKLUBAIC0x MDYsOSArOTksOSBAQCBwYWNrYWdlIE9CSl9SRUFMMjsKLSAKLSB1c2UgU3RvcmFibGUgcXcoZnJl ZXplIHRoYXcpOwotIAotLSRNQVggPSAyMDsKLS0kcmVjdXJzZWQgPSAwOwotLSRob29rX2NhbGxl ZCA9IDA7Ci0rb3VyICRNQVggPSAyMDsKLStvdXIgJHJlY3Vyc2VkID0gMDsKLStvdXIgJGhvb2tf Y2FsbGVkID0gMDsKLSAKLSBzdWIgbWFrZSB7IGJsZXNzIFtdLCBzaGlmdCB9Ci0gCi1AQCAtMTk2 LDEwICsxODksMTAgQEAgc3ViIG5ldyB7Ci0gICAgIG15ICRjbGFzcyA9IHNoaWZ0OwotICAgICBy ZXR1cm4gYmxlc3MgewotICAgICAgICAgYSA9PiAnZHVtbXknLAotLSAgICAgICAgYiA9PiBbIAot KyAgICAgICAgYiA9PiBbCi0gICAgICAgICAgICAgRm9vLT5uZXcoMSksCi0tICAgICAgICAgICAg Rm9vLT5uZXcoMiksICMgU2Vjb25kIGluc3RhbmNlIG9mIGEgRm9vIAotLSAgICAgICAgICBdCi0r ICAgICAgICAgICAgRm9vLT5uZXcoMiksICMgU2Vjb25kIGluc3RhbmNlIG9mIGEgRm9vCi0rICAg ICAgICBdCi0gICAgIH0sICRjbGFzczsKLSB9Ci0gCi1AQCAtMjE2LDcgKzIwOSw3IEBAIHN1YiBT VE9SQUJMRV90aGF3IHsKLSAKLSBwYWNrYWdlIG1haW47Ci0gCi0tbXkgJGJhciA9IG5ldyBCYXI7 Ci0rbXkgJGJhciA9IEJhci0+bmV3OwotIG15ICRiYXIyID0gdGhhdyBmcmVlemUgJGJhcjsKLSAK LSBpcyhyZWYoJGJhcjIpLCAnQmFyJyk7Ci1AQCAtMzUxLDcgKzM0NCw3IEBAIGV2YWwgewotICAg ICBkY2xvbmUgJHQ7Ci0gfTsKLSBsaWtlICRALCBxci9NYXhcLiByZWN1cnNpb24gZGVwdGggd2l0 aCBuZXN0ZWQgc3RydWN0dXJlcyBleGNlZWRlZC8sCi0tICAgICAgJ0NhdWdodCBhcmVmIHN0YWNr IG92ZXJmbG93ICcuTUFYX0RFUFRIKjI7Ci0rICAgICdDYXVnaHQgYXJlZiBzdGFjayBvdmVyZmxv dyAnLk1BWF9ERVBUSCoyOwotIAotIGlmICgkRU5We0FQUFZFWU9SfSBhbmQgbGVuZ3RoKHBhY2sg InAiLCAiIikgPj0gOCkgewotICAgICAjIFRPRE86IG5lZWQgdG8gcmVwcm8gdGhpcyBmYWlsIG9u IGEgc21hbGwgbWFjaGluZS4KLUBAIC0zNjYsNyArMzU5LDcgQEAgZWxzZSB7Ci0gICAgICAgICBk Y2xvbmUgJHQ7Ci0gICAgIH07Ci0gICAgIGxpa2UgJEAsIHFyL01heFwuIHJlY3Vyc2lvbiBkZXB0 aCB3aXRoIG5lc3RlZCBzdHJ1Y3R1cmVzIGV4Y2VlZGVkLywKLS0gICAgICAnQ2F1Z2h0IGhyZWYg c3RhY2sgb3ZlcmZsb3cgJy5NQVhfREVQVEhfSEFTSCoyOwotKyAgICAgICAgJ0NhdWdodCBocmVm IHN0YWNrIG92ZXJmbG93ICcuTUFYX0RFUFRIX0hBU0gqMjsKLSB9Ci0gCi0gewotQEAgLTM3OCw1 ICszNzEsNSBAQCBlbHNlIHsKLSAgICAgICAgIHB1c2ggQHR0LCAkdDsKLSAgICAgfQotICAgICBv ayhldmFsIHsgZGNsb25lIFxAdHQ7IDEgfSwKLS0gICAgICAgImxvdyBkZXB0aCBzdHJ1Y3R1cmUg c2hvdWxkbid0IGJlIHRyZWF0ZWQgYXMgbmVzdGVkIik7Ci0rICAgICAgICAibG93IGRlcHRoIHN0 cnVjdHVyZSBzaG91bGRuJ3QgYmUgdHJlYXRlZCBhcyBuZXN0ZWQiKTsKLSB9Ci1kaWZmIC0tZ2l0 IGEvdC9yZWdleHAudCBiL3QvcmVnZXhwLnQKLWluZGV4IDZjNmIxZDUuLmU0YmZmNjAgMTAwNjQ0 Ci0tLS0gYS90L3JlZ2V4cC50Ci0rKysgYi90L3JlZ2V4cC50Ci1AQCAtMSw0ICsxLDQgQEAKLS0j IXBlcmwgLXcKLSsjIS4vcGVybCAtdwotIHVzZSBzdHJpY3Q7Ci0gdXNlIFN0b3JhYmxlICJkY2xv bmUiOwotIHVzZSBUZXN0OjpNb3JlOwotQEAgLTYsNyArNiw3IEBAIHVzZSBUZXN0OjpNb3JlOwot IG15ICR2ZXJzaW9uID0gaW50KCgkXS01KSoxMDAwKTsKLSAKLSAkdmVyc2lvbiA+PSA4Ci0tICBv ciBwbGFuIHNraXBfYWxsID0+ICJyZWdleHBzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIDUuOCI7Ci0r ICAgIG9yIHBsYW4gc2tpcF9hbGwgPT4gInJlZ2V4cHMgbm90IHN1cHBvcnRlZCBiZWZvcmUgNS44 IjsKLSAKLSBteSBAdGVzdHM7Ci0gd2hpbGUgKDxEQVRBPikgewotQEAgLTMwLDkgKzMwLDkgQEAg d2hpbGUgKDxEQVRBPikgewotICAgICB9Ci0gICAgIG15IEBtYXRjaCA9IHNwbGl0IC9ccyosXHMq LywgJG1hdGNoOwotICAgICBmb3IgbXkgJG0gKEBtYXRjaCkgewotLQlteSAkbm90ID0gJG0gPX4g cy9eIS8vOwotLQlteSAkY21hdGNoID0gZXZhbCAkbTsKLS0JZGllIGlmICRAOwotKyAgICAgICAg bXkgJG5vdCA9ICRtID1+IHMvXiEvLzsKLSsgICAgICAgIG15ICRjbWF0Y2ggPSBldmFsICRtOwot KyAgICAgICAgZGllIGlmICRAOwotICAgICAgICAgcHVzaCBAdGVzdHMsIFsgJGNvZGUsICRub3Qs ICRjbWF0Y2gsICRtLCAkbmFtZSBdOwotICAgICB9Ci0gfQotQEAgLTQyLDcgKzQyLDcgQEAgcGxh biB0ZXN0cyA9PiAxMCArIDMqc2NhbGFyKEB0ZXN0cyk7Ci0gU0tJUDoKLSB7Ci0gICAgICR2ZXJz aW9uID49IDE0ICYmICR2ZXJzaW9uIDwgMjAKLS0gICAgICBvciBza2lwICJwIGludHJvZHVjZWQg aW4gNS4xNCwgcG9pbnRsZXNzIGZyb20gNS4yMCIsIDQ7Ci0rICAgICAgICBvciBza2lwICJwIGlu dHJvZHVjZWQgaW4gNS4xNCwgcG9pbnRsZXNzIGZyb20gNS4yMCIsIDQ7Ci0gICAgIG15ICRxMSA9 IGV2YWwgInFyL2IvcCI7Ci0gICAgIG15ICRxMiA9IGV2YWwgInFyL2IvIjsKLSAgICAgbXkgJGMx ID0gZGNsb25lKCRxMSk7Ci1AQCAtNTYsNyArNTYsNyBAQCBTS0lQOgotIFNLSVA6Ci0gewotICAg ICAkdmVyc2lvbiA+PSAyNAotLSAgICAgIG9yIHNraXAgIm4gaW50cm9kdWNlZCBpbiA1LjIyIiwg NDsKLSsgICAgICAgIG9yIHNraXAgIm4gaW50cm9kdWNlZCBpbiA1LjIyIiwgNDsKLSAgICAgbXkg JGMxID0gZGNsb25lKGV2YWwgInFyLyhcXHcpLyIpOwotICAgICBteSAkYzIgPSBkY2xvbmUoZXZh bCAicXIvKFxcdykvbiIpOwotICAgICBvaygiYSIgPX4gJGMxLCAiYSBtYXRjaGVzICRjMSIpOwot QEAgLTY4LDcgKzY4LDcgQEAgU0tJUDoKLSBTS0lQOgotIHsKLSAgICAgJHZlcnNpb24gPj0gOAot LSAgICAgIG9yIHNraXAgIkNhbm5vdCByZXRyaWV2ZSBiZWZvcmUgNS44IiwgMTsKLSsgICAgICAg IG9yIHNraXAgIkNhbm5vdCByZXRyaWV2ZSBiZWZvcmUgNS44IiwgMTsKLSAgICAgbXkgJHg7Ci0g ICAgIG15ICRyZSA9IHFyL2EoP3sgJHggPSAxIH0pLzsKLSAgICAgdXNlIHJlICdldmFsJzsKLUBA IC04MiwyNyArODIsMjcgQEAgZm9yIG15ICR0ZXN0IChAdGVzdHMpIHsKLSAgICAgbXkgJHFyID0g ZXZhbCAkY29kZTsKLSAgICAgZGllICJDb3VsZCBub3QgY29tcGlsZSAkY29kZTogJEAiIGlmICRA OwotICAgICBpZiAoJG5vdCkgewotLQl1bmxpa2UoJG1hdGNoLCAkcXIsICIkbmFtZTogcHJlKG5v dCkgbWF0Y2ggJG1hdGNoYyIpOwotKyAgICAgICAgdW5saWtlKCRtYXRjaCwgJHFyLCAiJG5hbWU6 IHByZShub3QpIG1hdGNoICRtYXRjaGMiKTsKLSAgICAgfQotICAgICBlbHNlIHsKLS0JbGlrZSgk bWF0Y2gsICRxciwgIiRuYW1lOiBwcmVtYXRjaCAkbWF0Y2hjIik7Ci0rICAgICAgICBsaWtlKCRt YXRjaCwgJHFyLCAiJG5hbWU6IHByZW1hdGNoICRtYXRjaGMiKTsKLSAgICAgfQotICAgICBteSAk cXIyID0gZGNsb25lKCRxcik7Ci0gICAgIGlmICgkbm90KSB7Ci0tCXVubGlrZSgkbWF0Y2gsICRx cjIsICIkbmFtZTogKG5vdCkgbWF0Y2ggJG1hdGNoYyIpOwotKyAgICAgICAgdW5saWtlKCRtYXRj aCwgJHFyMiwgIiRuYW1lOiAobm90KSBtYXRjaCAkbWF0Y2hjIik7Ci0gICAgIH0KLSAgICAgZWxz ZSB7Ci0tCWxpa2UoJG1hdGNoLCAkcXIyLCAiJG5hbWU6IG1hdGNoICRtYXRjaGMiKTsKLSsgICAg ICAgIGxpa2UoJG1hdGNoLCAkcXIyLCAiJG5hbWU6IG1hdGNoICRtYXRjaGMiKTsKLSAgICAgfQot IAotICAgICAjIHRoaXMgaXMgdW5saWtlbHkgdG8gYmUgYSBwcm9ibGVtLCBidXQgbWFrZSBzdXJl IHJlZ2V4cHMgYXJlIGZyb3plbiBzYW5lbHkKLSAgICAgIyBhcyBwYXJ0IG9mIGEgZGF0YSBzdHJ1 Y3R1cmUKLSAgICAgbXkgJGEyID0gZGNsb25lKFsgJHFyIF0pOwotICAgICBpZiAoJG5vdCkgewot LQl1bmxpa2UoJG1hdGNoLCAkYTItPlswXSwgIiRuYW1lOiAobm90KSBtYXRjaCAkbWF0Y2hjIChh cnJheSkiKTsKLSsgICAgICAgIHVubGlrZSgkbWF0Y2gsICRhMi0+WzBdLCAiJG5hbWU6IChub3Qp IG1hdGNoICRtYXRjaGMgKGFycmF5KSIpOwotICAgICB9Ci0gICAgIGVsc2UgewotLQlsaWtlKCRt YXRjaCwgJGEyLT5bMF0sICIkbmFtZTogbWF0Y2ggJG1hdGNoYyAoYXJyYXkpIik7Ci0rICAgICAg ICBsaWtlKCRtYXRjaCwgJGEyLT5bMF0sICIkbmFtZTogbWF0Y2ggJG1hdGNoYyAoYXJyYXkpIik7 Ci0gICAgIH0KLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvdC9yZXN0cmljdC50IGIvdC9yZXN0cmljdC50 Ci1pbmRleCAzNmE5MTc5Li4wMjZkNjM1IDEwMDY0NAotLS0tIGEvdC9yZXN0cmljdC50Ci0rKysg Yi90L3Jlc3RyaWN0LnQKLUBAIC0xLDMwICsxLDIyIEBACi0gIyEuL3BlcmwgLXcKLSAjCi0gIyAg Q29weXJpZ2h0IDIwMDIsIExhcnJ5IFdhbGwuCi0tIyAgCi0rIwotICMgIFlvdSBtYXkgcmVkaXN0 cmlidXRlIG9ubHkgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCA1LCBhcyBzcGVjaWZpZWQK LSAjICBpbiB0aGUgUkVBRE1FIGZpbGUgdGhhdCBjb21lcyB3aXRoIHRoZSBkaXN0cmlidXRpb24u Ci0gIwotIAotK3VzZSBzdHJpY3Q7Ci0rdXNlIHdhcm5pbmdzOwotKwotIHN1YiBCRUdJTiB7Ci0t ICAgIHVuc2hpZnQgQElOQywgJ3QnOwotLSAgICB1bnNoaWZ0IEBJTkMsICd0L2NvbXBhdCcgaWYg JF0gPCA1LjAwNjAwMjsKLS0gICAgaWYgKCRFTlZ7UEVSTF9DT1JFfSl7Ci0tICAgICAgICByZXF1 aXJlIENvbmZpZzsKLS0gICAgICAgIGlmICgkQ29uZmlnOjpDb25maWd7J2V4dGVuc2lvbnMnfSAh fiAvXGJTdG9yYWJsZVxiLykgewotLSAgICAgICAgICAgIHByaW50ICIxLi4wICMgU2tpcDogU3Rv cmFibGUgd2FzIG5vdCBidWlsdFxuIjsKLSsgICAgaWYgKCFldmFsICJyZXF1aXJlIEhhc2g6OlV0 aWwiKSB7Ci0rICAgICAgICBpZiAoJEAgPX4gL0NhblwndCBsb2NhdGUgSGFzaFwvVXRpbFwucG0g aW4gXEBJTkMvcykgewotKyAgICAgICAgICAgIHByaW50ICIxLi4wICMgU2tpcDogTm8gSGFzaDo6 VXRpbDpcbiI7Ci0gICAgICAgICAgICAgZXhpdCAwOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAg ICAgICAgICBkaWU7Ci0gICAgICAgICB9Ci0tICAgIH0gZWxzZSB7Ci0tCWlmICghZXZhbCAicmVx dWlyZSBIYXNoOjpVdGlsIikgewotLSAgICAgICAgICAgIGlmICgkQCA9fiAvQ2FuXCd0IGxvY2F0 ZSBIYXNoXC9VdGlsXC5wbSBpbiBcQElOQy9zKSB7Ci0tICAgICAgICAgICAgICAgIHByaW50ICIx Li4wICMgU2tpcDogTm8gSGFzaDo6VXRpbDpcbiI7Ci0tICAgICAgICAgICAgICAgIGV4aXQgMDsK LS0gICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICBkaWU7Ci0tICAgICAgICAg ICAgfQotLSAgICAgICAgfQotLQl1bnNoaWZ0IEBJTkMsICd0JzsKLSAgICAgfQotIH0KLSAKLUBA IC00Niw4MSArMzgsODEgQEAgbXkgJHRlc3Q7Ci0gcGFja2FnZSBSZXN0cmljdF9UZXN0OwotIAot IHN1YiBtZV9zZWNvbmQgewotLSAgcmV0dXJuICh1bmRlZiwgJF9bMF0pOwotKyAgICByZXR1cm4g KHVuZGVmLCAkX1swXSk7Ci0gfQotIAotIHBhY2thZ2UgbWFpbjsKLSAKLSBzdWIgZnJlZXplX3Ro YXcgewotLSAgbXkgJHRlbXAgPSBmcmVlemUgJF9bMF07Ci0tICByZXR1cm4gdGhhdyAkdGVtcDsK LSsgICAgbXkgJHRlbXAgPSBmcmVlemUgJF9bMF07Ci0rICAgIHJldHVybiB0aGF3ICR0ZW1wOwot IH0KLSAKLSBzdWIgdGVzdGl0IHsKLS0gIG15ICRoYXNoID0gc2hpZnQ7Ci0tICBteSAkY2xvbmVy ID0gc2hpZnQ7Ci0tICBteSAkY29weSA9ICYkY2xvbmVyKCRoYXNoKTsKLSsgICAgbXkgJGhhc2gg PSBzaGlmdDsKLSsgICAgbXkgJGNsb25lciA9IHNoaWZ0OwotKyAgICBteSAkY29weSA9ICYkY2xv bmVyKCRoYXNoKTsKLSAKLS0gIG15IEBpbl9rZXlzID0gc29ydCBrZXlzICUkaGFzaDsKLS0gIG15 IEBvdXRfa2V5cyA9IHNvcnQga2V5cyAlJGNvcHk7Ci0tICBpcygiQGluX2tleXMiLCAiQG91dF9r ZXlzIiwgImtleXMgbWF0Y2ggYWZ0ZXIgZGVlcCBjbG9uZSIpOwotKyAgICBteSBAaW5fa2V5cyA9 IHNvcnQga2V5cyAlJGhhc2g7Ci0rICAgIG15IEBvdXRfa2V5cyA9IHNvcnQga2V5cyAlJGNvcHk7 Ci0rICAgIGlzKCJAaW5fa2V5cyIsICJAb3V0X2tleXMiLCAia2V5cyBtYXRjaCBhZnRlciBkZWVw IGNsb25lIik7Ci0gCi0tICAjICRjb3B5ID0gJGhhc2g7CSMgdXNlZCBpbiBpbml0aWFsIGRlYnVn IG9mIHRoZSB0ZXN0cwotKyAgICAjICRjb3B5ID0gJGhhc2g7ICAgICMgdXNlZCBpbiBpbml0aWFs IGRlYnVnIG9mIHRoZSB0ZXN0cwotIAotLSAgaXMoSW50ZXJuYWxzOjpTdlJFQURPTkxZKCUkY29w eSksIDEsICJjbG9uZWQgaGFzaCByZXN0cmljdGVkPyIpOwotKyAgICBpcyhJbnRlcm5hbHM6OlN2 UkVBRE9OTFkoJSRjb3B5KSwgMSwgImNsb25lZCBoYXNoIHJlc3RyaWN0ZWQ/Iik7Ci0gCi0tICBp cyhJbnRlcm5hbHM6OlN2UkVBRE9OTFkoJGNvcHktPntxdWVzdGlvbn0pLCAxLAotLSAgICAgImtl eSAncXVlc3Rpb24nIG5vdCBsb2NrZWQgaW4gY29weT8iKTsKLSsgICAgaXMoSW50ZXJuYWxzOjpT dlJFQURPTkxZKCRjb3B5LT57cXVlc3Rpb259KSwgMSwKLSsgICAgICAgICJrZXkgJ3F1ZXN0aW9u JyBub3QgbG9ja2VkIGluIGNvcHk/Iik7Ci0gCi0tICBpcyhJbnRlcm5hbHM6OlN2UkVBRE9OTFko JGNvcHktPnthbnN3ZXJ9KSwgJycsCi0tICAgICAia2V5ICdhbnN3ZXInIG5vdCBsb2NrZWQgaW4g Y29weT8iKTsKLSsgICAgaXMoSW50ZXJuYWxzOjpTdlJFQURPTkxZKCRjb3B5LT57YW5zd2VyfSks ICcnLAotKyAgICAgICAgImtleSAnYW5zd2VyJyBub3QgbG9ja2VkIGluIGNvcHk/Iik7Ci0gCi0t ICBldmFsIHsgJGNvcHktPntleHRyYX0gPSAxNSB9IDsKLS0gIGlzKCRALCAnJywgIkNhbiBhc3Np Z24gdG8gcmVzZXJ2ZWQga2V5ICdleHRyYSc/Iik7Ci0rICAgIGV2YWwgeyAkY29weS0+e2V4dHJh fSA9IDE1IH0gOwotKyAgICBpcygkQCwgJycsICJDYW4gYXNzaWduIHRvIHJlc2VydmVkIGtleSAn ZXh0cmEnPyIpOwotIAotLSAgZXZhbCB7ICRjb3B5LT57bm9ub30gPSA3IH0gOwotLSAgaXNudCgk QCwgJycsICJDYW4gbm90IGFzc2lnbiB0byBpbnZhbGlkIGtleSAnbm9ubyc/Iik7Ci0rICAgIGV2 YWwgeyAkY29weS0+e25vbm99ID0gNyB9IDsKLSsgICAgaXNudCgkQCwgJycsICJDYW4gbm90IGFz c2lnbiB0byBpbnZhbGlkIGtleSAnbm9ubyc/Iik7Ci0gCi0tICBpcyhleGlzdHMgJGNvcHktPnt1 bmRlZn0sIDEsICJrZXkgJ3VuZGVmJyBleGlzdHMiKTsKLSsgICAgaXMoZXhpc3RzICRjb3B5LT57 dW5kZWZ9LCAxLCAia2V5ICd1bmRlZicgZXhpc3RzIik7Ci0gCi0tICBpcygkY29weS0+e3VuZGVm fSwgdW5kZWYsICJ2YWx1ZSBmb3Iga2V5ICd1bmRlZicgaXMgdW5kZWZpbmVkIik7Ci0rICAgIGlz KCRjb3B5LT57dW5kZWZ9LCB1bmRlZiwgInZhbHVlIGZvciBrZXkgJ3VuZGVmJyBpcyB1bmRlZmlu ZWQiKTsKLSB9Ci0gCi0gZm9yICRTdG9yYWJsZTo6Y2Fub25pY2FsICgwLCAxKSB7Ci0tICBmb3Ig bXkgJGNsb25lciAoXCZkY2xvbmUsIFwmZnJlZXplX3RoYXcpIHsKLS0gICAgcHJpbnQgIiMgXCRT dG9yYWJsZTo6Y2Fub25pY2FsID0gJFN0b3JhYmxlOjpjYW5vbmljYWxcbiI7Ci0tICAgIHRlc3Rp dCAoXCVoYXNoLCAkY2xvbmVyKTsKLS0gICAgbXkgJG9iamVjdCA9IFwlaGFzaDsKLS0gICAgIyBi bGVzcyB7fSwgIlJlc3RyaWN0X1Rlc3QiOwotLQotLSAgICBteSAlaGFzaDI7Ci0tICAgICRoYXNo MnsiayRfIn0gPSAidiRfIiBmb3IgMC4uMTY7Ci0tICAgIGxvY2tfaGFzaCAlaGFzaDI7Ci0tICAg IGZvciAoMC4uMTYpIHsKLS0gICAgICB1bmxvY2tfdmFsdWUgJWhhc2gyLCAiayRfIjsKLS0gICAg ICBkZWxldGUgJGhhc2gyeyJrJF8ifTsKLS0gICAgfQotLSAgICBteSAkY29weSA9ICYkY2xvbmVy KFwlaGFzaDIpOwotKyAgICBmb3IgbXkgJGNsb25lciAoXCZkY2xvbmUsIFwmZnJlZXplX3RoYXcp IHsKLSsgICAgICAgIHByaW50ICIjIFwkU3RvcmFibGU6OmNhbm9uaWNhbCA9ICRTdG9yYWJsZTo6 Y2Fub25pY2FsXG4iOwotKyAgICAgICAgdGVzdGl0IChcJWhhc2gsICRjbG9uZXIpOwotKyAgICAg ICAgbXkgJG9iamVjdCA9IFwlaGFzaDsKLSsgICAgICAgICMgYmxlc3Mge30sICJSZXN0cmljdF9U ZXN0IjsKLSsKLSsgICAgICAgIG15ICVoYXNoMjsKLSsgICAgICAgICRoYXNoMnsiayRfIn0gPSAi diRfIiBmb3IgMC4uMTY7Ci0rICAgICAgICBsb2NrX2hhc2ggJWhhc2gyOwotKyAgICAgICAgZm9y ICgwLi4xNikgewotKyAgICAgICAgICAgIHVubG9ja192YWx1ZSAlaGFzaDIsICJrJF8iOwotKyAg ICAgICAgICAgIGRlbGV0ZSAkaGFzaDJ7ImskXyJ9OwotKyAgICAgICAgfQotKyAgICAgICAgbXkg JGNvcHkgPSAmJGNsb25lcihcJWhhc2gyKTsKLSAKLS0gICAgZm9yICgwLi4xNikgewotLSAgICAg IG15ICRrID0gImskXyI7Ci0tICAgICAgZXZhbCB7ICRjb3B5LT57JGt9ID0gdW5kZWYgfSA7Ci0t ICAgICAgaXMoJEAsICcnLCAiQ2FuIGFzc2lnbiB0byByZXNlcnZlZCBrZXkgJyRrJz8iKTsKLS0g ICAgfQotKyAgICAgICAgZm9yICgwLi4xNikgewotKyAgICAgICAgICAgIG15ICRrID0gImskXyI7 Ci0rICAgICAgICAgICAgZXZhbCB7ICRjb3B5LT57JGt9ID0gdW5kZWYgfSA7Ci0rICAgICAgICAg ICAgaXMoJEAsICcnLCAiQ2FuIGFzc2lnbiB0byByZXNlcnZlZCBrZXkgJyRrJz8iKTsKLSsgICAg ICAgIH0KLSAKLS0gICAgbXkgJWh2OwotLSAgICAkaHZ7YX0gPSBfX1BBQ0tBR0VfXzsKLS0gICAg bG9ja19rZXlzICVodjsKLS0gICAgbXkgJGh2MiA9ICYkY2xvbmVyKFwlaHYpOwotLSAgICBvayBl dmFsIHsgJCRodjJ7YX0gPSA3MCB9LCAnQ09XcyBkbyBub3QgYmVjb21lIHJlYWQtb25seSc7Ci0t ICB9Ci0rICAgICAgICBteSAlaHY7Ci0rICAgICAgICAkaHZ7YX0gPSBfX1BBQ0tBR0VfXzsKLSsg ICAgICAgIGxvY2tfa2V5cyAlaHY7Ci0rICAgICAgICBteSAkaHYyID0gJiRjbG9uZXIoXCVodik7 Ci0rICAgICAgICBvayBldmFsIHsgJCRodjJ7YX0gPSA3MCB9LCAnQ09XcyBkbyBub3QgYmVjb21l IHJlYWQtb25seSc7Ci0rICAgIH0KLSB9Ci0gCi0gIyBbcGVybCAjNzM5NzJdCi0gIyBicm9rZW4g YWdhaW4gd2l0aCBjcGVybCBQRVJMX1BFUlRVUkJfS0VZU19UT1AuCi0gU0tJUDogewotICAgICBz a2lwICJUT0RPIHJlc3RyaWN0ZWQgU3RvcmFibGUgaGFzaGVzIGJyb2tlbiB3aXRoIFBFUkxfUEVS VFVSQl9LRVlTX1RPUCIsIDEKLS0gICAgICAgICBpZiAhJFN0b3JhYmxlOjpERUJVR01FICYmICRD b25maWd7dXNlY3Blcmx9OwotKyAgICAgICAgaWYgISRTdG9yYWJsZTo6REVCVUdNRSAmJiAkQ29u Zmlne3VzZWNwZXJsfTsKLSAgICAgZm9yIG15ICRuICgxLi4xMDApIHsKLSAgICAgICAgIG15IEBr ZXlzID0gbWFwIHsgIkZPTyRfIiB9ICgxLi4kbik7Ci0gCi1kaWZmIC0tZ2l0IGEvdC9yZXRyaWV2 ZS50IGIvdC9yZXRyaWV2ZS50Ci1pbmRleCAwNDEyNzcyLi43ZTU3NzUzIDEwMDY0NAotLS0tIGEv dC9yZXRyaWV2ZS50Ci0rKysgYi90L3JldHJpZXZlLnQKLUBAIC0yLDI0ICsyLDE2IEBACi0gIwot ICMgIENvcHlyaWdodCAoYykgMTk5NS0yMDAwLCBSYXBoYWVsIE1hbmZyZWRpCi0gIyAgQ29weXJp Z2h0IChjKSAyMDE3LCBjUGFuZWwgSW5jCi0tIyAgCi0rIwotICMgIFlvdSBtYXkgcmVkaXN0cmli dXRlIG9ubHkgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCA1LCBhcyBzcGVjaWZpZWQKLSAj ICBpbiB0aGUgUkVBRE1FIGZpbGUgdGhhdCBjb21lcyB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g IwotIAotIHN1YiBCRUdJTiB7Ci0tICAgIHVuc2hpZnQgQElOQywgJ2Rpc3QvU3RvcmFibGUvdCcg aWYgJEVOVntQRVJMX0NPUkV9IGFuZCAtZCAnZGlzdC9TdG9yYWJsZS90JzsKLS0gICAgdW5zaGlm dCBASU5DLCAndCc7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QvY29tcGF0JyBpZiAkXSA8IDUuMDA2 MDAyOwotLSAgICByZXF1aXJlIENvbmZpZzsgaW1wb3J0IENvbmZpZzsKLS0gICAgaWYgKCRFTlZ7 UEVSTF9DT1JFfSBhbmQgJENvbmZpZ3snZXh0ZW5zaW9ucyd9ICF+IC9cYlN0b3JhYmxlXGIvKSB7 Ci0tICAgICAgICBwcmludCAiMS4uMCAjIFNraXA6IFN0b3JhYmxlIHdhcyBub3QgYnVpbHRcbiI7 Ci0tICAgICAgICBleGl0IDA7Ci0tICAgIH0KLS0gICAgcmVxdWlyZSAnc3QtZHVtcC5wbCc7Ci0r ICAgIHVuc2hpZnQgQElOQywgJ3QvbGliJzsKLSB9Ci0gCi0tCi0rdXNlIFNURHVtcDsKLSB1c2Ug U3RvcmFibGUgcXcoc3RvcmUgcmV0cmlldmUgbnN0b3JlKTsKLSB1c2UgVGVzdDo6TW9yZSB0ZXN0 cyA9PiAyMDsKLSAKLUBAIC0yOSw3ICsyMSw3IEBAICRjID0gYmxlc3Mge30sIENMQVNTOwotICRj LT57YXR0cmlidXRlfSA9ICdhdHRydmFsJzsKLSAlYSA9ICgna2V5JywgJ3ZhbHVlJywgMSwgMCwg JGEsICRiLCAnY3ZhcicsIFwkYyk7Ci0gQGEgPSAoJ2ZpcnN0JywgJycsIHVuZGVmLCAzLCAtNCwg LTMuMTQxNTksIDQ1NiwgNC41LAotLQkkYiwgXCRhLCAkYSwgJGMsIFwkYywgXCVhKTsKLSsgICAg JGIsIFwkYSwgJGEsICRjLCBcJGMsIFwlYSk7Ci0gCi0gaXNudChzdG9yZShcQGEsICJzdG9yZSQk IiksIHVuZGVmKTsKLSBpcyhTdG9yYWJsZTo6bGFzdF9vcF9pbl9uZXRvcmRlcigpLCAnJyk7Ci1A QCAtNDUsOSArMzcsOSBAQCAkbnJvb3QgPSByZXRyaWV2ZSgnbnN0b3JlJyk7Ci0gaXNudCgkcm9v dCwgdW5kZWYpOwotIGlzKFN0b3JhYmxlOjpsYXN0X29wX2luX25ldG9yZGVyKCksIDEpOwotIAot LSRkMSA9ICZkdW1wKCRyb290KTsKLSskZDEgPSBzdGR1bXAoJHJvb3QpOwotIGlzbnQoJGQxLCB1 bmRlZik7Ci0tJGQyID0gJmR1bXAoJG5yb290KTsKLSskZDIgPSBzdGR1bXAoJG5yb290KTsKLSBp c250KCRkMiwgdW5kZWYpOwotIAotIGlzKCRkMSwgJGQyKTsKLUBAIC04MSw3ICs3Myw3IEBAIFNL SVA6Ci0gICAgICMgdGhlIHRlc3QgYWxsb2NhdGVzIDJHQiwgYnV0IG90aGVyIG1lbW9yeSBpcyBh bGxvY2F0ZWQgdG9vLCBzbyB3ZSB3YW50Ci0gICAgICMgYXQgbGVhc3QgMwotICAgICAkRU5We1BF UkxfVEVTVF9NRU1PUll9ICYmICRFTlZ7UEVSTF9URVNUX01FTU9SWX0gPj0gMwotLSAgICAgIG9y IHNraXAgIm92ZXIgMkdCIG1lbW9yeSBuZWVkZWQgZm9yIHRoaXMgdGVzdCIsIDI7Ci0rICAgICAg ICBvciBza2lwICJvdmVyIDJHQiBtZW1vcnkgbmVlZGVkIGZvciB0aGlzIHRlc3QiLCAyOwotICAg ICAjIGxlbjxJMzIsIGxlbj4xMjc6IHN0YWNrIG92ZXJmbG93Ci0gICAgIG15ICRyZXRyaWV2ZV9o b29rID0gIlx4MDRceDBhXHgwOFx4MzFceDMyXHgzM1x4MzRceDM1XHgzNlx4MzdceDM4XHgwNFx4 MDhceDA4XHgwOFx4MTNceDA0XHg0OVx4ZmVceGY0XHg3Zlx4NzJceDZlXHg2MVx4NmNceDczXHgw Mlx4MDBceDAwXHgwMFx4MDAiOwotICAgICBteSAkeCA9IGV2YWwgeyBTdG9yYWJsZTo6bXJldHJp ZXZlKCRyZXRyaWV2ZV9ob29rKTsgfTsKLWRpZmYgLS1naXQgYS90L3JvYnVzdC50IGIvdC9yb2J1 c3QudAotaW5kZXggMjdmNWZjMC4uNjM5ZmRmYyAxMDA2NDQKLS0tLSBhL3Qvcm9idXN0LnQKLSsr KyBiL3Qvcm9idXN0LnQKLUBAIC0xLDkgKzEsMTIgQEAKLS0jIS91c3IvYmluL3BlcmwKLSsjIS4v cGVybAotIAotICMgVGhpcyB0ZXN0IHNjcmlwdCBjaGVja3MgdGhhdCBTdG9yYWJsZSB3aWxsIGxv YWQgcHJvcGVybHkgaWYgc29tZW9uZQotICMgaXMgaW5jb3JyZWN0bHkgbWVzc2luZyB3aXRoICVJ TkMgdG8gaGlkZSBMb2c6OkFnZW50LiAgTm8sIG5vLW9uZSBzaG91bGQKLSAjIHJlYWxseSBiZSBk b2luZyB0aGlzLCBidXQsIHRoZW4sIGl0ICp1c2VkKiB0byB3b3JrIQotIAotK3VzZSBzdHJpY3Q7 Ci0rdXNlIHdhcm5pbmdzOwotKwotIHVzZSBUZXN0OjpNb3JlOwotIHBsYW4gdGVzdHMgPT4gMTsK LSAKLWRpZmYgLS1naXQgYS90L3NpZ19kaWUudCBiL3Qvc2lnX2RpZS50Ci1pbmRleCAzZWEyZGY0 Li4zYzE1MGE4IDEwMDY0NAotLS0tIGEvdC9zaWdfZGllLnQKLSsrKyBiL3Qvc2lnX2RpZS50Ci1A QCAtNiwxNyArNiw4IEBACi0gIyAgaW4gdGhlIFJFQURNRSBmaWxlIHRoYXQgY29tZXMgd2l0aCB0 aGUgZGlzdHJpYnV0aW9uLgotICMKLSAKLS1zdWIgQkVHSU4gewotLSAgICB1bnNoaWZ0IEBJTkMs ICd0JzsKLS0gICAgdW5zaGlmdCBASU5DLCAndC9jb21wYXQnIGlmICRdIDwgNS4wMDYwMDI7Ci0t ICAgIHJlcXVpcmUgQ29uZmlnOyBpbXBvcnQgQ29uZmlnOwotLSAgICBpZiAoJEVOVntQRVJMX0NP UkV9IGFuZCAkQ29uZmlneydleHRlbnNpb25zJ30gIX4gL1xiU3RvcmFibGVcYi8pIHsKLS0gICAg ICAgIHByaW50ICIxLi4wICMgU2tpcDogU3RvcmFibGUgd2FzIG5vdCBidWlsdFxuIjsKLS0gICAg ICAgIGV4aXQgMDsKLS0gICAgfQotLX0KLS0KLSB1c2Ugc3RyaWN0OwotK3VzZSB3YXJuaW5nczsK LSB1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAxOwotIAotIG15IEB3YXJuczsKLWRpZmYgLS1naXQg YS90L3N0LWR1bXAucGwgYi90L3N0LWR1bXAucGwKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggNTBkODcxMi4uMDAwMDAwMAotLS0tIGEvdC9zdC1kdW1wLnBsCi0rKysgL2Rldi9udWxs Ci1AQCAtMSwxMzYgKzAsMCBAQAotLSMKLS0jICBDb3B5cmlnaHQgKGMpIDE5OTUtMjAwMCwgUmFw aGFlbCBNYW5mcmVkaQotLSMgIAotLSMgIFlvdSBtYXkgcmVkaXN0cmlidXRlIG9ubHkgdW5kZXIg dGhlIHNhbWUgdGVybXMgYXMgUGVybCA1LCBhcyBzcGVjaWZpZWQKLS0jICBpbiB0aGUgUkVBRE1F IGZpbGUgdGhhdCBjb21lcyB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0tIwotLQotLXBhY2thZ2Ug ZHVtcDsKLS11c2UgQ2FycDsKLS0KLS0lZHVtcCA9ICgKLS0JJ1NDQUxBUicJPT4gJ2R1bXBfc2Nh bGFyJywKLS0JJ0xWQUxVRScJPT4gJ2R1bXBfc2NhbGFyJywKLS0JJ0FSUkFZJwkJPT4gJ2R1bXBf YXJyYXknLAotLQknSEFTSCcJCT0+ICdkdW1wX2hhc2gnLAotLQknUkVGJwkJPT4gJ2R1bXBfcmVm JywKLS0pOwotLQotLSMgR2l2ZW4gYW4gb2JqZWN0LCBkdW1wIGl0cyB0cmFuc2l0aXZlIGRhdGEg Y2xvc3VyZQotLXN1YiBtYWluOjpkdW1wIHsKLS0JbXkgKCRvYmplY3QpID0gQF87Ci0tCWNyb2Fr ICJOb3QgYSByZWZlcmVuY2UhIiB1bmxlc3MgcmVmKCRvYmplY3QpOwotLQlsb2NhbCAlZHVtcGVk OwotLQlsb2NhbCAlb2JqZWN0OwotLQlsb2NhbCAkY291bnQgPSAwOwotLQlsb2NhbCAkZHVtcGVk ID0gJyc7Ci0tCSZyZWN1cnNpdmVfZHVtcCgkb2JqZWN0LCAxKTsKLS0JcmV0dXJuICRkdW1wZWQ7 Ci0tfQotLQotLSMgVGhpcyBpcyB0aGUgcm9vdCByZWN1cnNpdmUgZHVtcGluZyByb3V0aW5lIHRo YXQgbWF5IGluZGlyZWN0bHkgYmUKLS0jIGNhbGxlZCBieSBvbmUgb2YgdGhlIHJvdXRpbmUgaXQg Y2FsbHMuLi4KLS0jIFRoZSBsaW5rIHBhcmFtZXRlciBpcyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUg cmVmZXJlbmNlIHBhc3NlZCB0bwotLSMgdGhlIHJvdXRpbmUgaXMgYW4gaW50ZXJuYWwgdGVtcG9y YXJ5IHZhcmlhYmxlLCBpbXBseWluZyB0aGUgb2JqZWN0J3MKLS0jIGFkZHJlc3MgaXMgbm90IHRv IGJlIGR1bXBlZCBpbiB0aGUgJWR1bXBlZCB0YWJsZSBzaW5jZSBpdCdzIG5vdCBhCi0tIyB1c2Vy LXZpc2libGUgb2JqZWN0LgotLXN1YiByZWN1cnNpdmVfZHVtcCB7Ci0tCW15ICgkb2JqZWN0LCAk bGluaykgPSBAXzsKLS0KLS0JIyBHZXQgc29tZXRoaW5nIGxpa2UgU0NBTEFSKDB4Li4uKSBvciBU WVBFPVNDQUxBUigweC4uLikuCi0tCSMgVGhlbiBleHRyYWN0IHRoZSBibGVzcywgcmVmIGFuZCBh ZGRyZXNzIHBhcnRzIG9mIHRoYXQgc3RyaW5nLgotLQotLQlteSAkd2hhdCA9ICIkb2JqZWN0IjsJ CSMgU3RyaW5naWZ5Ci0tCW15ICgkYmxlc3MsICRyZWYsICRhZGRyKSA9ICR3aGF0ID1+IC9eKFx3 Kyk9KFx3KylcKCgweC4qKVwpJC87Ci0tCSgkcmVmLCAkYWRkcikgPSAkd2hhdCA9fiAvXihcdysp XCgoMHguKilcKSQvIHVubGVzcyAkYmxlc3M7Ci0tCi0tCSMgU3BlY2lhbCBjYXNlIGZvciByZWZl cmVuY2VzIHRvIHJlZmVyZW5jZXMuIFdoZW4gc3RyaW5naWZpZWQsCi0tCSMgdGhleSBhcHBlYXIg YXMgYmVpbmcgc2NhbGFycy4gSG93ZXZlciwgcmVmKCkgY29ycmVjdGx5IHBpbnBvaW50cwotLQkj IHRoZW0gYXMgYmVpbmcgcmVmZXJlbmNlcyBpbmRpcmVjdGlvbnMuIEFuZCB0aGF0J3MgaXQuCi0t Ci0tCSRyZWYgPSAnUkVGJyBpZiByZWYoJG9iamVjdCkgZXEgJ1JFRic7Ci0tCi0tCSMgTWFrZSBz dXJlIHRoZSBvYmplY3QgaGFzIG5vdCBiZWVuIGFscmVhZHkgZHVtcGVkIGJlZm9yZS4KLS0JIyBX ZSBkb24ndCB3YW50IHRvIGR1cGxpY2F0ZSBkYXRhLiBSZXRyaWV2YWwgd2lsbCBrbm93IGhvdyB0 bwotLQkjIHJlbGluayBmcm9tIHRoZSBwcmV2aW91c2x5IHNlZW4gb2JqZWN0LgotLQotLQlpZiAo JGxpbmsgJiYgJGR1bXBlZHskYWRkcn0rKykgewotLQkJbXkgJG51bSA9ICRvYmplY3R7JGFkZHJ9 OwotLQkJJGR1bXBlZCAuPSAiT0JKRUNUICMkbnVtIHNlZW5cbiI7Ci0tCQlyZXR1cm47Ci0tCX0K LS0KLS0JbXkgJG9iamNvdW50ID0gJGNvdW50Kys7Ci0tCSRvYmplY3R7JGFkZHJ9ID0gJG9iamNv dW50OwotLQotLQkjIENhbGwgdGhlIGFwcHJvcHJpYXRlIGR1bXBpbmcgcm91dGluZSBiYXNlZCBv biB0aGUgcmVmZXJlbmNlIHR5cGUuCi0tCSMgSWYgdGhlIHJlZmVyZW5jZWQgd2FzIGJsZXNzZWQs IHdlIGJsZXNzIGl0IG9uY2UgdGhlIG9iamVjdCBpcyBkdW1wZWQuCi0tCSMgVGhlIHJldHJpZXZh bCBjb2RlIHdpbGwgcGVyZm9ybSB0aGUgc2FtZSBvbiB0aGUgbGFzdCBvYmplY3QgcmV0cmlldmVk LgotLQotLQljcm9hayAiVW5rbm93biBzaW1wbGUgdHlwZSAnJHJlZiciIHVubGVzcyBkZWZpbmVk ICRkdW1weyRyZWZ9OwotLQotLQkmeyRkdW1weyRyZWZ9fSgkb2JqZWN0KTsJIyBEdW1wIG9iamVj dAotLQkmYmxlc3MoJGJsZXNzKSBpZiAkYmxlc3M7CSMgTWFyayBpdCBhcyBibGVzc2VkLCBpZiBu ZWNlc3NhcnkKLS0KLS0JJGR1bXBlZCAuPSAiT0JKRUNUICRvYmpjb3VudFxuIjsKLS19Ci0tCi0t IyBJbmRpY2F0ZSB0aGF0IGN1cnJlbnQgb2JqZWN0IGlzIGJsZXNzZWQKLS1zdWIgYmxlc3Mgewot LQlteSAoJGNsYXNzKSA9IEBfOwotLQkkZHVtcGVkIC49ICJCTEVTUyAkY2xhc3NcbiI7Ci0tfQot LQotLSMgRHVtcCBzaW5nbGUgc2NhbGFyCi0tc3ViIGR1bXBfc2NhbGFyIHsKLS0JbXkgKCRzcmVm KSA9IEBfOwotLQlteSAkc2NhbGFyID0gJCRzcmVmOwotLQl1bmxlc3MgKGRlZmluZWQgJHNjYWxh cikgewotLQkJJGR1bXBlZCAuPSAiVU5ERUZcbiI7Ci0tCQlyZXR1cm47Ci0tCX0KLS0JbXkgJGxl biA9IGxlbmd0aCgkc2NhbGFyKTsKLS0JJGR1bXBlZCAuPSAiU0NBTEFSIGxlbj0kbGVuICRzY2Fs YXJcbiI7Ci0tfQotLQotLSMgRHVtcCBhcnJheQotLXN1YiBkdW1wX2FycmF5IHsKLS0JbXkgKCRh cmVmKSA9IEBfOwotLQlteSAkaXRlbXMgPSAwICsgQHskYXJlZn07Ci0tCSRkdW1wZWQgLj0gIkFS UkFZIGl0ZW1zPSRpdGVtc1xuIjsKLS0JZm9yZWFjaCAkaXRlbSAoQHskYXJlZn0pIHsKLS0JCXVu bGVzcyAoZGVmaW5lZCAkaXRlbSkgewotLQkJCSRkdW1wZWQgLj0gJ0lURU1fVU5ERUYnIC4gIlxu IjsKLS0JCQluZXh0OwotLQkJfQotLQkJJGR1bXBlZCAuPSAnSVRFTSAnOwotLQkJJnJlY3Vyc2l2 ZV9kdW1wKFwkaXRlbSwgMSk7Ci0tCX0KLS19Ci0tCi0tIyBEdW1wIGhhc2ggdGFibGUKLS1zdWIg ZHVtcF9oYXNoIHsKLS0JbXkgKCRocmVmKSA9IEBfOwotLQlteSAkaXRlbXMgPSBzY2FsYXIoa2V5 cyAleyRocmVmfSk7Ci0tCSRkdW1wZWQgLj0gIkhBU0ggaXRlbXM9JGl0ZW1zXG4iOwotLQlmb3Jl YWNoICRrZXkgKHNvcnQga2V5cyAleyRocmVmfSkgewotLQkJJGR1bXBlZCAuPSAnS0VZICc7Ci0t CQkmcmVjdXJzaXZlX2R1bXAoXCRrZXksIHVuZGVmKTsKLS0JCXVubGVzcyAoZGVmaW5lZCAkaHJl Zi0+eyRrZXl9KSB7Ci0tCQkJJGR1bXBlZCAuPSAnVkFMVUVfVU5ERUYnIC4gIlxuIjsKLS0JCQlu ZXh0OwotLQkJfQotLQkJJGR1bXBlZCAuPSAnVkFMVUUgJzsKLS0JCSZyZWN1cnNpdmVfZHVtcChc JGhyZWYtPnska2V5fSwgMSk7Ci0tCX0KLS19Ci0tCi0tIyBEdW1wIHJlZmVyZW5jZSB0byByZWZl cmVuY2UKLS1zdWIgZHVtcF9yZWYgewotLQlteSAoJHJyZWYpID0gQF87Ci0tCW15ICRkZXJlZiA9 ICQkcnJlZjsJCQkJIyBGb2xsb3cgcmVmZXJlbmNlIHRvIHJlZmVyZW5jZQotLQkkZHVtcGVkIC49 ICdSRUYgJzsKLS0JJnJlY3Vyc2l2ZV9kdW1wKCRkZXJlZiwgMSk7CQkjICRkcmVmIGlzIGEgcmVm ZXJlbmNlCi0tfQotLQotLTE7Ci1kaWZmIC0tZ2l0IGEvdC9zdG9yZS50IGIvdC9zdG9yZS50Ci1p bmRleCA0NWFmMGIyLi5lOGNhMTY3IDEwMDY0NAotLS0tIGEvdC9zdG9yZS50Ci0rKysgYi90L3N0 b3JlLnQKLUBAIC02LDg2ICs2LDgzIEBACi0gIyAgaW4gdGhlIFJFQURNRSBmaWxlIHRoYXQgY29t ZXMgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICMKLSAKLSt1c2Ugc3RyaWN0OwotK3VzZSB3YXJu aW5nczsKLSsKLSBzdWIgQkVHSU4gewotLSAgICB1bnNoaWZ0IEBJTkMsICd0JzsKLS0gICAgdW5z aGlmdCBASU5DLCAndC9jb21wYXQnIGlmICRdIDwgNS4wMDYwMDI7Ci0tICAgIHJlcXVpcmUgQ29u ZmlnOyBpbXBvcnQgQ29uZmlnOwotLSAgICBpZiAoJEVOVntQRVJMX0NPUkV9IGFuZCAkQ29uZmln eydleHRlbnNpb25zJ30gIX4gL1xiU3RvcmFibGVcYi8pIHsKLS0gICAgICAgIHByaW50ICIxLi4w ICMgU2tpcDogU3RvcmFibGUgd2FzIG5vdCBidWlsdFxuIjsKLS0gICAgICAgIGV4aXQgMDsKLS0g ICAgfQotLSAgICByZXF1aXJlICdzdC1kdW1wLnBsJzsKLSsgICAgdW5zaGlmdCBASU5DLCAndC9s aWInOwotIH0KLSAKLSt1c2UgU1REdW1wOwotICMgJFN0b3JhYmxlOjpERUJVR01FID0gMTsKLSB1 c2UgU3RvcmFibGUgcXcoc3RvcmUgcmV0cmlldmUgc3RvcmVfZmQgbnN0b3JlX2ZkIGZkX3JldHJp ZXZlKTsKLSAKLSB1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAyNTsKLSAKLS0kYSA9ICd0b3RvJzsK LS0kYiA9IFwkYTsKLS0kYyA9IGJsZXNzIHt9LCBDTEFTUzsKLStteSAkYSA9ICd0b3RvJzsKLStt eSAkYiA9IFwkYTsKLStteSAkYyA9IGJsZXNzIHt9LCAnQ0xBU1MnOwotICRjLT57YXR0cmlidXRl fSA9ICdhdHRydmFsJzsKLS0lYSA9ICgna2V5JywgJ3ZhbHVlJywgMSwgMCwgJGEsICRiLCAnY3Zh cicsIFwkYyk7Ci0tQGEgPSAoJ2ZpcnN0JywgdW5kZWYsIDMsIC00LCAtMy4xNDE1OSwgNDU2LCA0 LjUsCi0tCSRiLCBcJGEsICRhLCAkYywgXCRjLCBcJWEpOwotK215ICVhID0gKCdrZXknLCAndmFs dWUnLCAxLCAwLCAkYSwgJGIsICdjdmFyJywgXCRjKTsKLStteSBAYSA9ICgnZmlyc3QnLCB1bmRl ZiwgMywgLTQsIC0zLjE0MTU5LCA0NTYsIDQuNSwKLSsgICAgJGIsIFwkYSwgJGEsICRjLCBcJGMs IFwlYSk7Ci0gCi0gaXNudChzdG9yZShcQGEsICJzdG9yZSQkIiksIHVuZGVmKTsKLSAKLS0kZHVt cGVkID0gJmR1bXAoXEBhKTsKLStteSAkZHVtcGVkID0gc3RkdW1wKFxAYSk7Ci0gaXNudCgkZHVt cGVkLCB1bmRlZik7Ci0gCi0tJHJvb3QgPSByZXRyaWV2ZSgic3RvcmUkJCIpOwotK215ICRyb290 ID0gcmV0cmlldmUoInN0b3JlJCQiKTsKLSBpc250KCRyb290LCB1bmRlZik7Ci0gCi0tJGdvdCA9 ICZkdW1wKCRyb290KTsKLStteSAkZ290ID0gc3RkdW1wKCRyb290KTsKLSBpc250KCRnb3QsIHVu ZGVmKTsKLSAKLSBpcygkZ290LCAkZHVtcGVkKTsKLSAKLSAxIHdoaWxlIHVubGluayAic3RvcmUk JCI7Ci0gCi0tcGFja2FnZSBGT087IEBJU0EgPSBxdyhTdG9yYWJsZSk7Ci0rcGFja2FnZSBGT087 IG91ciBASVNBID0gcXcoU3RvcmFibGUpOwotIAotIHN1YiBtYWtlIHsKLS0JbXkgJHNlbGYgPSBi bGVzcyB7fTsKLS0JJHNlbGYtPntrZXl9ID0gXCVtYWluOjphOwotLQlyZXR1cm4gJHNlbGY7Ci0r ICAgIG15ICRzZWxmID0gYmxlc3Mge307Ci0rICAgICRzZWxmLT57a2V5fSA9IFwlYTsKLSsgICAg cmV0dXJuICRzZWxmOwotIH07Ci0gCi0gcGFja2FnZSBtYWluOwotIAotLSRmb28gPSBGT08tPm1h a2U7Ci0rbXkgJGZvbyA9IEZPTy0+bWFrZTsKLSBpc250KCRmb28tPnN0b3JlKCJzdG9yZSQkIiks IHVuZGVmKTsKLSAKLS1pc250KG9wZW4oT1VULCAnPj4nLCAic3RvcmUkJCIpLCB1bmRlZik7Ci0t YmlubW9kZSBPVVQ7Ci0raXNudChvcGVuKG15ICRPVVQsICc+PicsICJzdG9yZSQkIiksIHVuZGVm KTsKLStiaW5tb2RlICRPVVQ7Ci0gCi0taXNudChzdG9yZV9mZChcQGEsIDo6T1VUKSwgdW5kZWYp OwotLWlzbnQobnN0b3JlX2ZkKCRmb28sIDo6T1VUKSwgdW5kZWYpOwotLWlzbnQobnN0b3JlX2Zk KFwlYSwgOjpPVVQpLCB1bmRlZik7Ci0raXNudChzdG9yZV9mZChcQGEsICRPVVQpLCB1bmRlZik7 Ci0raXNudChuc3RvcmVfZmQoJGZvbywgJE9VVCksIHVuZGVmKTsKLStpc250KG5zdG9yZV9mZChc JWEsICRPVVQpLCB1bmRlZik7Ci0gCi0taXNudChjbG9zZShPVVQpLCB1bmRlZik7Ci0raXNudChj bG9zZSgkT1VUKSwgdW5kZWYpOwotIAotLWlzbnQob3BlbihPVVQsICJzdG9yZSQkIiksIHVuZGVm KTsKLStpc250KG9wZW4oJE9VVCwgJzwnLCAic3RvcmUkJCIpLCB1bmRlZik7Ci0gCi0tJHIgPSBm ZF9yZXRyaWV2ZSg6Ok9VVCk7Ci0rbXkgJHIgPSBmZF9yZXRyaWV2ZSgkT1VUKTsKLSBpc250KCRy LCB1bmRlZik7Ci0taXMoJmR1bXAoJHIpLCAmZHVtcCgkZm9vKSk7Ci0raXMoc3RkdW1wKCRyKSwg c3RkdW1wKCRmb28pKTsKLSAKLS0kciA9IGZkX3JldHJpZXZlKDo6T1VUKTsKLSskciA9IGZkX3Jl dHJpZXZlKCRPVVQpOwotIGlzbnQoJHIsIHVuZGVmKTsKLS1pcygmZHVtcCgkciksICZkdW1wKFxA YSkpOwotK2lzKHN0ZHVtcCgkciksIHN0ZHVtcChcQGEpKTsKLSAKLS0kciA9IGZkX3JldHJpZXZl KG1haW46Ok9VVCk7Ci0rJHIgPSBmZF9yZXRyaWV2ZSgkT1VUKTsKLSBpc250KCRyLCB1bmRlZik7 Ci0taXMoJmR1bXAoJHIpLCAmZHVtcCgkZm9vKSk7Ci0raXMoc3RkdW1wKCRyKSwgc3RkdW1wKCRm b28pKTsKLSAKLS0kciA9IGZkX3JldHJpZXZlKDo6T1VUKTsKLSskciA9IGZkX3JldHJpZXZlKCRP VVQpOwotIGlzbnQoJHIsIHVuZGVmKTsKLS1pcygmZHVtcCgkciksICZkdW1wKFwlYSkpOwotK2lz KHN0ZHVtcCgkciksIHN0ZHVtcChcJWEpKTsKLSAKLS1ldmFsIHsgJHIgPSBmZF9yZXRyaWV2ZSg6 Ok9VVCk7IH07Ci0rZXZhbCB7ICRyID0gZmRfcmV0cmlldmUoJE9VVCk7IH07Ci0gaXNudCgkQCwg JycpOwotIAotIHsKLUBAIC0xMDUsMTIgKzEwMiwxMiBAQCBpc250KCRALCAnJyk7Ci0gewotIAot ICAgICBteSAkZnJvemVuID0KLS0gICAgICAiXHg3MFx4NzNceDc0XHgzMFx4MDRceDBhXHgwOFx4 MzFceDMyXHgzM1x4MzRceDM1XHgzNlx4MzdceDM4XHgwNFx4MDhceDA4XHgwOFx4MDNceGZmXHgw MFx4MDBceDAwXHgxOVx4MDhceGZmXHgwMFx4MDBceDAwXHgwOFx4MDhceGY5XHgxNlx4MTZceDEz XHgxNlx4MTBceDEwXHgxMFx4ZmZceDE1XHgxNlx4MTZceDE2XHgxZVx4MTZceDE2XHgxNlx4MTZc eDE2XHgxNlx4MTZceDE2XHgxNlx4MTZceDEzXHhmMFx4MTZceDE2XHgxNlx4ZmVceDE2XHg0MVx4 NDFceDQxXHg0MVx4ZThceDAzXHg0MVx4NDFceDQxXHg0MVx4NDFceDQxXHg0MVx4NDFceDUxXHg0 MVx4YTlceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFj XHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YjhceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNc eGFjXHhhY1x4OWFceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceDkzXHhhY1x4 YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhh Y1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHgwMFx4NjRceGFjXHhhOFx4YWNceGFj XHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHgyY1x4YWNceDQxXHg0MVx4NDFc eDQxXHg0MVx4NDFceDQxXHg0MVx4NDFceDAwXHg4MFx4NDFceDgwXHg0MVx4NDFceDQxXHg0MVx4 NDFceDQxXHg1MVx4NDFceGFjXHhhY1x4YWMiOwotKyAgICAgICAgIlx4NzBceDczXHg3NFx4MzBc eDA0XHgwYVx4MDhceDMxXHgzMlx4MzNceDM0XHgzNVx4MzZceDM3XHgzOFx4MDRceDA4XHgwOFx4 MDhceDAzXHhmZlx4MDBceDAwXHgwMFx4MTlceDA4XHhmZlx4MDBceDAwXHgwMFx4MDhceDA4XHhm OVx4MTZceDE2XHgxM1x4MTZceDEwXHgxMFx4MTBceGZmXHgxNVx4MTZceDE2XHgxNlx4MWVceDE2 XHgxNlx4MTZceDE2XHgxNlx4MTZceDE2XHgxNlx4MTZceDE2XHgxM1x4ZjBceDE2XHgxNlx4MTZc eGZlXHgxNlx4NDFceDQxXHg0MVx4NDFceGU4XHgwM1x4NDFceDQxXHg0MVx4NDFceDQxXHg0MVx4 NDFceDQxXHg1MVx4NDFceGE5XHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhh Y1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGI4XHhhY1x4YWNceGFj XHhhY1x4YWNceGFjXHhhY1x4YWNceDlhXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNc eGFjXHg5M1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4 YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4MDBceDY0XHhh Y1x4YThceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4YWNceGFjXHhhY1x4MmNceGFj XHg0MVx4NDFceDQxXHg0MVx4NDFceDQxXHg0MVx4NDFceDQxXHgwMFx4ODBceDQxXHg4MFx4NDFc eDQxXHg0MVx4NDFceDQxXHg0MVx4NTFceDQxXHhhY1x4YWNceGFjIjsKLSAgICAgb3BlbiBteSAk ZmgsICc8JywgXCRmcm96ZW47Ci0gICAgIGV2YWwgeyBTdG9yYWJsZTo6ZmRfcmV0cmlldmUoJGZo KTsgfTsKLSAgICAgcGFzcygnUlQgMTMwNjM1OiAgbm8gc3RhY2sgc21hc2hpbmcgZXJyb3Igd2hl biByZXRyaWV2aW5nIGhvb2snKTsKLSAKLSB9Ci0gCi0tY2xvc2UgT1VUIG9yIGRpZSAiQ291bGQg bm90IGNsb3NlOiAkISI7Ci0rY2xvc2UgJE9VVCBvciBkaWUgIkNvdWxkIG5vdCBjbG9zZTogJCEi OwotIEVORCB7IDEgd2hpbGUgdW5saW5rICJzdG9yZSQkIiB9Ci1kaWZmIC0tZ2l0IGEvdC90ZXN0 bGliLnBsIGIvdC90ZXN0bGliLnBsCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGE0 NGMzMzguLjAwMDAwMDAKLS0tLSBhL3QvdGVzdGxpYi5wbAotKysrIC9kZXYvbnVsbAotQEAgLTEs MzggKzAsMCBAQAotLSMhcGVybCAtdwotLXVzZSBzdHJpY3Q7Ci0tCi0tb3VyICRmaWxlID0gInN0 b3JhYmxlLXRlc3RmaWxlLiQkIjsKLS1kaWUgIlRlbXBvcmFyeSBmaWxlICckZmlsZScgYWxyZWFk eSBleGlzdHMiIGlmIC1lICRmaWxlOwotLQotLUVORCB7IHdoaWxlICgtZiAkZmlsZSkge3VubGlu ayAkZmlsZSBvciBkaWUgIkNhbid0IHVubGluayAnJGZpbGUnOiAkISIgfX0KLS0KLS11c2UgU3Rv cmFibGUgcXcgKHN0b3JlIHJldHJpZXZlIGZyZWV6ZSB0aGF3IG5zdG9yZSBuZnJlZXplKTsKLS0K LS1zdWIgc2x1cnAgewotLSAgbXkgJGZpbGUgPSBzaGlmdDsKLS0gIGxvY2FsICgqRkgsICQvKTsK LS0gIG9wZW4gRkgsICI8IiwgJGZpbGUgb3IgZGllICJDYW4ndCBvcGVuICckZmlsZSc6ICQhIjsK LS0gIGJpbm1vZGUgRkg7Ci0tICBteSAkY29udGVudHMgPSA8Rkg+OwotLSAgZGllICJDYW4ndCBy ZWFkICRmaWxlOiAkISIgdW5sZXNzIGRlZmluZWQgJGNvbnRlbnRzOwotLSAgcmV0dXJuICRjb250 ZW50czsKLS19Ci0tCi0tc3ViIHN0b3JlX2FuZF9yZXRyaWV2ZSB7Ci0tICBteSAkZGF0YSA9IHNo aWZ0OwotLSAgdW5saW5rICRmaWxlIG9yIGRpZSAiQ2FuJ3QgdW5saW5rICckZmlsZSc6ICQhIjsK LS0gIGxvY2FsICpGSDsKLS0gIG9wZW4gRkgsICI+IiwgJGZpbGUgb3IgZGllICJDYW4ndCBvcGVu ICckZmlsZSc6ICQhIjsKLS0gIGJpbm1vZGUgRkg7Ci0tICBwcmludCBGSCAkZGF0YSBvciBkaWUg IkNhbid0IHByaW50IHRvICckZmlsZSc6ICQhIjsKLS0gIGNsb3NlIEZIIG9yIGRpZSAiQ2FuJ3Qg Y2xvc2UgJyRmaWxlJzogJCEiOwotLQotLSAgcmV0dXJuIGV2YWwge3JldHJpZXZlICRmaWxlfTsK LS19Ci0tCi0tc3ViIGZyZWV6ZV9hbmRfdGhhdyB7Ci0tICBteSAkZGF0YSA9IHNoaWZ0OwotLSAg cmV0dXJuIGV2YWwge3RoYXcgJGRhdGF9OwotLX0KLS0KLS0xOwotZGlmZiAtLWdpdCBhL3QvdGhy ZWFkcy50IGIvdC90aHJlYWRzLnQKLWluZGV4IDBiMzQzMzQuLjY0NjM1N2EgMTAwNjQ0Ci0tLS0g YS90L3RocmVhZHMudAotKysrIGIvdC90aHJlYWRzLnQKLUBAIC0xNiwxNCArMTYsMTEgQEAKLSAj IFN0b3JhYmxlOjppbml0X3BlcmludGVycCgpIHRvIGNyZWF0ZSBhIG5ldyBjb250ZXh0IGZvciBl YWNoIG5ldwotICMgdGhyZWFkIHdoZW4gaXQgc3RhcnRzCi0gCi0rdXNlIHN0cmljdDsKLSt1c2Ug d2FybmluZ3M7Ci0rCi0rdXNlIENvbmZpZzsKLSBzdWIgQkVHSU4gewotLSAgICB1bnNoaWZ0IEBJ TkMsICd0JzsKLS0gICAgdW5zaGlmdCBASU5DLCAndC9jb21wYXQnIGlmICRdIDwgNS4wMDYwMDI7 Ci0tICAgIHJlcXVpcmUgQ29uZmlnOyBpbXBvcnQgQ29uZmlnOwotLSAgICBpZiAoJEVOVntQRVJM X0NPUkV9IGFuZCAkQ29uZmlneydleHRlbnNpb25zJ30gIX4gL1xiU3RvcmFibGVcYi8pIHsKLS0g ICAgICAgIHByaW50ICIxLi4wICMgU2tpcDogU3RvcmFibGUgd2FzIG5vdCBidWlsdFxuIjsKLS0g ICAgICAgIGV4aXQgMDsKLS0gICAgfQotICAgICB1bmxlc3MgKCRDb25maWd7J3VzZWl0aHJlYWRz J30gYW5kIGV2YWwgeyByZXF1aXJlIHRocmVhZHM7IDEgfSkgewotICAgICAgICAgcHJpbnQgIjEu LjAgIyBTa2lwOiBubyB0aHJlYWRzXG4iOwotICAgICAgICAgZXhpdCAwOwotQEAgLTM1LDcgKzMy LDcgQEAgc3ViIEJFR0lOIHsKLSAgICAgIyAtIGlzIFxXLCBzbyBjYW4ndCB1c2UgXGIgYXQgc3Rh cnQuIE5lZ2F0aXZlIGxvb2sgYWhlYWQgYW5kIGxvb2sgYmVoaW5kCi0gICAgICMgd29ya3MgYXQg c3RhcnQvZW5kIG9mIHN0cmluZywgb3Igd2hlcmUgcHJlY2VkZWQvZm9sbG93ZWQgYnkgc3BhY2Vz Ci0gICAgIGlmICgkXSA9PSA1LjAwODAwMiBhbmQgZXZhbCBxeyAkQ29uZmlneydjY2ZsYWdzJ30g PX4gLyg/PCFcUyktRERFQlVHR0lORyg/IVxTKS8gfSkgewotLQkjIEJ1ZyBjYXVzZWQgYnkgY2hh bmdlIDIxNjEwLCBmaXhlZCBieSBjaGFuZ2UgMjE4NDkKLSsgICAgICAgICMgQnVnIGNhdXNlZCBi eSBjaGFuZ2UgMjE2MTAsIGZpeGVkIGJ5IGNoYW5nZSAyMTg0OQotICAgICAgICAgcHJpbnQgIjEu LjAgIyBTa2lwOiB0aWNrbGVzIGJ1ZyBpbiB0aHJlYWRzIGNvbWJpbmVkIHdpdGggLURERUJVR0dJ Tkcgb24gNS44LjJcbiI7Ci0gICAgICAgICBleGl0IDA7Ci0gICAgIH0KLUBAIC00Myw4ICs0MCw2 IEBAIHN1YiBCRUdJTiB7Ci0gCi0gdXNlIFRlc3Q6Ok1vcmU7Ci0gCi0tdXNlIHN0cmljdDsKLS0K LSB1c2UgdGhyZWFkczsKLSB1c2UgU3RvcmFibGUgcXcobmZyZWV6ZSk7Ci0gCi1kaWZmIC0tZ2l0 IGEvdC90aWVkLnQgYi90L3RpZWQudAotaW5kZXggZThiZTM5ZS4uNTY3ZmI5ZSAxMDA2NDQKLS0t LSBhL3QvdGllZC50Ci0rKysgYi90L3RpZWQudAotQEAgLTEsMTMwICsxLDEyNiBAQAotICMhLi9w ZXJsCi0gIwotICMgIENvcHlyaWdodCAoYykgMTk5NS0yMDAwLCBSYXBoYWVsIE1hbmZyZWRpCi0t IyAgCi0rIwotICMgIFlvdSBtYXkgcmVkaXN0cmlidXRlIG9ubHkgdW5kZXIgdGhlIHNhbWUgdGVy bXMgYXMgUGVybCA1LCBhcyBzcGVjaWZpZWQKLSAjICBpbiB0aGUgUkVBRE1FIGZpbGUgdGhhdCBj b21lcyB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gIwotIAotK3VzZSBzdHJpY3Q7Ci0rdXNlIHdh cm5pbmdzOwotKwotIHN1YiBCRUdJTiB7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QnOwotLSAgICB1 bnNoaWZ0IEBJTkMsICd0L2NvbXBhdCcgaWYgJF0gPCA1LjAwNjAwMjsKLS0gICAgcmVxdWlyZSBD b25maWc7IGltcG9ydCBDb25maWc7Ci0tICAgIGlmICgkRU5We1BFUkxfQ09SRX0gYW5kICRDb25m aWd7J2V4dGVuc2lvbnMnfSAhfiAvXGJTdG9yYWJsZVxiLykgewotLSAgICAgICAgcHJpbnQgIjEu LjAgIyBTa2lwOiBTdG9yYWJsZSB3YXMgbm90IGJ1aWx0XG4iOwotLSAgICAgICAgZXhpdCAwOwot LSAgICB9Ci0tICAgIHJlcXVpcmUgJ3N0LWR1bXAucGwnOwotKyAgICB1bnNoaWZ0IEBJTkMsICd0 L2xpYic7Ci0gfQotLQotK3VzZSBTVER1bXA7Ci0gdXNlIFN0b3JhYmxlIHF3KGZyZWV6ZSB0aGF3 KTsKLSAkU3RvcmFibGU6OmZsYWdzID0gU3RvcmFibGU6OkZMQUdTX0NPTVBBVDsKLSAKLSB1c2Ug VGVzdDo6TW9yZSB0ZXN0cyA9PiAyNTsKLSAKLS0oJHNjYWxhcl9mZXRjaCwgJGFycmF5X2ZldGNo LCAkaGFzaF9mZXRjaCkgPSAoMCwgMCwgMCk7Ci0rbXkgKCRzY2FsYXJfZmV0Y2gsICRhcnJheV9m ZXRjaCwgJGhhc2hfZmV0Y2gpID0gKDAsIDAsIDApOwotIAotIHBhY2thZ2UgVElFRF9IQVNIOwot IAotIHN1YiBUSUVIQVNIIHsKLS0JbXkgJHNlbGYgPSBibGVzcyB7fSwgc2hpZnQ7Ci0tCXJldHVy biAkc2VsZjsKLSsgICAgbXkgJHNlbGYgPSBibGVzcyB7fSwgc2hpZnQ7Ci0rICAgIHJldHVybiAk c2VsZjsKLSB9Ci0gCi0gc3ViIEZFVENIIHsKLS0JbXkgJHNlbGYgPSBzaGlmdDsKLS0JbXkgKCRr ZXkpID0gQF87Ci0tCSRtYWluOjpoYXNoX2ZldGNoKys7Ci0tCXJldHVybiAkc2VsZi0+eyRrZXl9 OwotKyAgICBteSAkc2VsZiA9IHNoaWZ0OwotKyAgICBteSAoJGtleSkgPSBAXzsKLSsgICAgJGhh c2hfZmV0Y2grKzsKLSsgICAgcmV0dXJuICRzZWxmLT57JGtleX07Ci0gfQotIAotIHN1YiBTVE9S RSB7Ci0tCW15ICRzZWxmID0gc2hpZnQ7Ci0tCW15ICgka2V5LCAkdmFsdWUpID0gQF87Ci0tCSRz ZWxmLT57JGtleX0gPSAkdmFsdWU7Ci0rICAgIG15ICRzZWxmID0gc2hpZnQ7Ci0rICAgIG15ICgk a2V5LCAkdmFsdWUpID0gQF87Ci0rICAgICRzZWxmLT57JGtleX0gPSAkdmFsdWU7Ci0gfQotIAot IHN1YiBGSVJTVEtFWSB7Ci0tCW15ICRzZWxmID0gc2hpZnQ7Ci0tCXNjYWxhciBrZXlzICV7JHNl bGZ9OwotLQlyZXR1cm4gZWFjaCAleyRzZWxmfTsKLSsgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSsg ICAgc2NhbGFyIGtleXMgJXskc2VsZn07Ci0rICAgIHJldHVybiBlYWNoICV7JHNlbGZ9OwotIH0K LSAKLSBzdWIgTkVYVEtFWSB7Ci0tCW15ICRzZWxmID0gc2hpZnQ7Ci0tCXJldHVybiBlYWNoICV7 JHNlbGZ9OwotKyAgICBteSAkc2VsZiA9IHNoaWZ0OwotKyAgICByZXR1cm4gZWFjaCAleyRzZWxm fTsKLSB9Ci0gCi0gcGFja2FnZSBUSUVEX0FSUkFZOwotIAotIHN1YiBUSUVBUlJBWSB7Ci0tCW15 ICRzZWxmID0gYmxlc3MgW10sIHNoaWZ0OwotLQlyZXR1cm4gJHNlbGY7Ci0rICAgIG15ICRzZWxm ID0gYmxlc3MgW10sIHNoaWZ0OwotKyAgICByZXR1cm4gJHNlbGY7Ci0gfQotIAotIHN1YiBGRVRD SCB7Ci0tCW15ICRzZWxmID0gc2hpZnQ7Ci0tCW15ICgkaWR4KSA9IEBfOwotLQkkbWFpbjo6YXJy YXlfZmV0Y2grKzsKLS0JcmV0dXJuICRzZWxmLT5bJGlkeF07Ci0rICAgIG15ICRzZWxmID0gc2hp ZnQ7Ci0rICAgIG15ICgkaWR4KSA9IEBfOwotKyAgICAkYXJyYXlfZmV0Y2grKzsKLSsgICAgcmV0 dXJuICRzZWxmLT5bJGlkeF07Ci0gfQotIAotIHN1YiBTVE9SRSB7Ci0tCW15ICRzZWxmID0gc2hp ZnQ7Ci0tCW15ICgkaWR4LCAkdmFsdWUpID0gQF87Ci0tCSRzZWxmLT5bJGlkeF0gPSAkdmFsdWU7 Ci0rICAgIG15ICRzZWxmID0gc2hpZnQ7Ci0rICAgIG15ICgkaWR4LCAkdmFsdWUpID0gQF87Ci0r ICAgICRzZWxmLT5bJGlkeF0gPSAkdmFsdWU7Ci0gfQotIAotIHN1YiBGRVRDSFNJWkUgewotLQlt eSAkc2VsZiA9IHNoaWZ0OwotLQlyZXR1cm4gQHskc2VsZn07Ci0rICAgIG15ICRzZWxmID0gc2hp ZnQ7Ci0rICAgIHJldHVybiBAeyRzZWxmfTsKLSB9Ci0gCi0gcGFja2FnZSBUSUVEX1NDQUxBUjsK LSAKLSBzdWIgVElFU0NBTEFSIHsKLS0JbXkgJHNjYWxhcjsKLS0JbXkgJHNlbGYgPSBibGVzcyBc JHNjYWxhciwgc2hpZnQ7Ci0tCXJldHVybiAkc2VsZjsKLSsgICAgbXkgJHNjYWxhcjsKLSsgICAg bXkgJHNlbGYgPSBibGVzcyBcJHNjYWxhciwgc2hpZnQ7Ci0rICAgIHJldHVybiAkc2VsZjsKLSB9 Ci0gCi0gc3ViIEZFVENIIHsKLS0JbXkgJHNlbGYgPSBzaGlmdDsKLS0JJG1haW46OnNjYWxhcl9m ZXRjaCsrOwotLQlyZXR1cm4gJCRzZWxmOwotKyAgICBteSAkc2VsZiA9IHNoaWZ0OwotKyAgICAk c2NhbGFyX2ZldGNoKys7Ci0rICAgIHJldHVybiAkJHNlbGY7Ci0gfQotIAotIHN1YiBTVE9SRSB7 Ci0tCW15ICRzZWxmID0gc2hpZnQ7Ci0tCW15ICgkdmFsdWUpID0gQF87Ci0tCSQkc2VsZiA9ICR2 YWx1ZTsKLSsgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSsgICAgbXkgKCR2YWx1ZSkgPSBAXzsKLSsg ICAgJCRzZWxmID0gJHZhbHVlOwotIH0KLSAKLSBwYWNrYWdlIEZBVUxUOwotIAotLSRmYXVsdCA9 IDA7Ci0rb3VyICRmYXVsdCA9IDA7Ci0gCi0gc3ViIFRJRVNDQUxBUiB7Ci0tCW15ICRwa2cgPSBz aGlmdDsKLS0JcmV0dXJuIGJsZXNzIFtAX10sICRwa2c7Ci0rICAgIG15ICRwa2cgPSBzaGlmdDsK LSsgICAgcmV0dXJuIGJsZXNzIFtAX10sICRwa2c7Ci0gfQotIAotIHN1YiBGRVRDSCB7Ci0tCW15 ICRzZWxmID0gc2hpZnQ7Ci0tCW15ICgkaHJlZiwgJGtleSkgPSBAJHNlbGY7Ci0tCSRmYXVsdCsr OwotLQl1bnRpZSAkaHJlZi0+eyRrZXl9OwotLQlyZXR1cm4gJGhyZWYtPnska2V5fSA9IDE7Ci0r ICAgIG15ICRzZWxmID0gc2hpZnQ7Ci0rICAgIG15ICgkaHJlZiwgJGtleSkgPSBAJHNlbGY7Ci0r ICAgICRmYXVsdCsrOwotKyAgICB1bnRpZSAkaHJlZi0+eyRrZXl9OwotKyAgICByZXR1cm4gJGhy ZWYtPnska2V5fSA9IDE7Ci0gfQotIAotIHBhY2thZ2UgbWFpbjsKLSAKLS0kYSA9ICd0b3RvJzsK LS0kYiA9IFwkYTsKLStteSAkYSA9ICd0b3RvJzsKLStteSAkYiA9IFwkYTsKLSAKLS0kYyA9IHRp ZSAlaGFzaCwgVElFRF9IQVNIOwotLSRkID0gdGllIEBhcnJheSwgVElFRF9BUlJBWTsKLS10aWUg JHNjYWxhciwgVElFRF9TQ0FMQVI7Ci0rbXkgJGMgPSB0aWUgbXkgJWhhc2gsICdUSUVEX0hBU0gn OwotK215ICRkID0gdGllIG15IEBhcnJheSwgJ1RJRURfQVJSQVknOwotK3RpZSBteSAkc2NhbGFy LCAnVElFRF9TQ0FMQVInOwotIAotICMkc2NhbGFyID0gJ2Zvbyc7Ci0gIyRoYXNoeydhdHRyaWJ1 dGUnfSA9IFwkZDsKLUBAIC0xMzMsMzAgKzEyOSwzMCBAQCB0aWUgJHNjYWxhciwgVElFRF9TQ0FM QVI7Ci0gCi0gIyMjIElmIEkgc2F5Ci0gIyMjICAgJGhhc2h7J2F0dHJpYnV0ZSd9ID0gJGQ7Ci0t IyMjIGJlbG93LCB0aGVuIGR1bXAoKSBpbmNvcnJlY3RseSBkdW1wcyB0aGUgaGFzaCB2YWx1ZSBh cyBhIHN0cmluZyB0aGUgc2Vjb25kCi0rIyMjIGJlbG93LCB0aGVuIHN0ZHVtcCgpIGluY29ycmVj dGx5IGR1bXBzIHRoZSBoYXNoIHZhbHVlIGFzIGEgc3RyaW5nIHRoZSBzZWNvbmQKLSAjIyMgdGlt ZSBpdCBpcyByZWFjaGVkLiBJIGhhdmUgbm90IGludmVzdGlnYXRlZCBlbm91Z2ggdG8gdGVsbCB3 aGV0aGVyIGl0J3MKLS0jIyMgYSBidWcgaW4gbXkgZHVtcCgpIHJvdXRpbmUgb3IgaW4gdGhlIFBl cmwgdGllaW5nIG1lY2hhbmlzbS4KLSsjIyMgYSBidWcgaW4gbXkgc3RkdW1wKCkgcm91dGluZSBv ciBpbiB0aGUgUGVybCB0aWVpbmcgbWVjaGFuaXNtLgotICRzY2FsYXIgPSAnZm9vJzsKLSAkaGFz aHsnYXR0cmlidXRlJ30gPSAncGxhaW4gdmFsdWUnOwotICRhcnJheVswXSA9IFwkc2NhbGFyOwot ICRhcnJheVsxXSA9ICRjOwotICRhcnJheVsyXSA9IFxAYXJyYXk7Ci0gCi0tQHRpZWQgPSAoXCRz Y2FsYXIsIFxAYXJyYXksIFwlaGFzaCk7Ci0tJWEgPSAoJ2tleScsICd2YWx1ZScsIDEsIDAsICRh LCAkYiwgJ2N2YXInLCBcJGEsICdzY2FsYXJyZWYnLCBcJHNjYWxhcik7Ci0tQGEgPSAoJ2ZpcnN0 JywgMywgLTQsIC0zLjE0MTU5LCA0NTYsIDQuNSwgJGQsIFwkZCwKLS0JJGIsIFwkYSwgJGEsICRj LCBcJGMsIFwlYSwgXEBhcnJheSwgXCVoYXNoLCBcQHRpZWQpOwotK215IEB0aWVkID0gKFwkc2Nh bGFyLCBcQGFycmF5LCBcJWhhc2gpOwotK215ICVhID0gKCdrZXknLCAndmFsdWUnLCAxLCAwLCAk YSwgJGIsICdjdmFyJywgXCRhLCAnc2NhbGFycmVmJywgXCRzY2FsYXIpOwotK215IEBhID0gKCdm aXJzdCcsIDMsIC00LCAtMy4xNDE1OSwgNDU2LCA0LjUsICRkLCBcJGQsCi0rICAgICRiLCBcJGEs ICRhLCAkYywgXCRjLCBcJWEsIFxAYXJyYXksIFwlaGFzaCwgXEB0aWVkKTsKLSAKLSBteSAkZiA9 IGZyZWV6ZShcQGEpOwotIGlzbnQoJGYsIHVuZGVmKTsKLSAKLS0kZHVtcGVkID0gJmR1bXAoXEBh KTsKLStteSAkZHVtcGVkID0gc3RkdW1wKFxAYSk7Ci0gaXNudCgkZHVtcGVkLCB1bmRlZik7Ci0g Ci0tJHJvb3QgPSB0aGF3KCRmKTsKLStteSAkcm9vdCA9IHRoYXcoJGYpOwotIGlzbnQoJHJvb3Qs IHVuZGVmKTsKLSAKLS0kZ290ID0gJmR1bXAoJHJvb3QpOwotK215ICRnb3QgPSBzdGR1bXAoJHJv b3QpOwotIGlzbnQoJGdvdCwgdW5kZWYpOwotIAotICMjIyBVc2VkIHRvIHNlZSB0aGUgbWFuaWZl c3RhdGlvbiBvZiB0aGUgYnVnIGRvY3VtZW50ZWQgYWJvdmUuCi1AQCAtMTY3LDI1ICsxNjMsMjUg QEAgaXNudCgkZ290LCB1bmRlZik7Ci0gCi0gaXMoJGdvdCwgJGR1bXBlZCk7Ci0gCi0tJGcgPSBm cmVlemUoJHJvb3QpOwotK215ICRnID0gZnJlZXplKCRyb290KTsKLSBpcyhsZW5ndGggJGYsIGxl bmd0aCAkZyk7Ci0gCi0gIyBFbnN1cmUgdGhlIHRpZWQgaXRlbXMgaW4gdGhlIHJldHJpZXZlZCBp bWFnZSB3b3JrCi0tQG9sZCA9ICgkc2NhbGFyX2ZldGNoLCAkYXJyYXlfZmV0Y2gsICRoYXNoX2Zl dGNoKTsKLS1AdGllZCA9ICgkdHNjYWxhciwgJHRhcnJheSwgJHRoYXNoKSA9IEB7JHJvb3QtPlsk I3skcm9vdH1dfTsKLS1AdHlwZSA9IHF3KFNDQUxBUiAgQVJSQVkgIEhBU0gpOwotK215IEBvbGQg PSAoJHNjYWxhcl9mZXRjaCwgJGFycmF5X2ZldGNoLCAkaGFzaF9mZXRjaCk7Ci0rQHRpZWQgPSBt eSAoJHRzY2FsYXIsICR0YXJyYXksICR0aGFzaCkgPSBAeyRyb290LT5bJCN7JHJvb3R9XX07Ci0r bXkgQHR5cGUgPSBxdyhTQ0FMQVIgIEFSUkFZICBIQVNIKTsKLSAKLSBpcyhyZWYgdGllZCAkJHRz Y2FsYXIsICdUSUVEX1NDQUxBUicpOwotIGlzKHJlZiB0aWVkIEAkdGFycmF5LCAnVElFRF9BUlJB WScpOwotIGlzKHJlZiB0aWVkICUkdGhhc2gsICdUSUVEX0hBU0gnKTsKLSAKLS1AbmV3ID0gKCQk dHNjYWxhciwgJHRhcnJheS0+WzBdLCAkdGhhc2gtPnsnYXR0cmlidXRlJ30pOwotK215IEBuZXcg PSAoJCR0c2NhbGFyLCAkdGFycmF5LT5bMF0sICR0aGFzaC0+eydhdHRyaWJ1dGUnfSk7Ci0gQG5l dyA9ICgkc2NhbGFyX2ZldGNoLCAkYXJyYXlfZmV0Y2gsICRoYXNoX2ZldGNoKTsKLSAKLSAjIFRl c3RzIDEwLi4xNQotLWZvciAoJGkgPSAwOyAkaSA8IEBuZXc7ICRpKyspIHsKLS0JaXMoJG5ld1sk aV0sICRvbGRbJGldICsgMSk7Ci0tCWlzKHJlZiAkdGllZFskaV0sICR0eXBlWyRpXSk7Ci0rZm9y IChteSAkaSA9IDA7ICRpIDwgQG5ldzsgJGkrKykgewotKyAgICBpcygkbmV3WyRpXSwgJG9sZFsk aV0gKyAxKTsKLSsgICAgaXMocmVmICR0aWVkWyRpXSwgJHR5cGVbJGldKTsKLSB9Ci0gCi0gIyBD aGVjayB1bmRlZiB0aWVzCi1AQCAtMjA4LDE0ICsyMDQsMTQgQEAgaXMoJEZBVUxUOjpmYXVsdCwg Mik7Ci0gICAgIG91ciAoJGEsICRiKTsKLSAgICAgJGIgPSAibm90IG9rICI7Ci0gICAgIHN1YiBU SUVTQ0FMQVIgeyBibGVzcyBcJGEgfSBzdWIgRkVUQ0ggeyAib2sgIiB9Ci0tICAgIHRpZSAkYSwg UDsgbXkgJHIgPSB0aGF3IGZyZWV6ZSBcJGE7ICRiID0gJCRyOwotKyAgICB0aWUgJGEsICdQJzsg bXkgJHIgPSB0aGF3IGZyZWV6ZSBcJGE7ICRiID0gJCRyOwotICAgICBtYWluOjppcygkYiwgIm9r ICIpOwotIH0KLSAKLSB7Ci0gICAgICMgYmxlc3NlZCByZWYgdG8gdGllZCBvYmplY3Qgc2hvdWxk IGJlIHRoYXdlZCBibGVzc2VkCi0gICAgIG15IEBhOwotLSAgICB0aWUgQGEsIFRJRURfQVJSQVk7 Ci0rICAgIHRpZSBAYSwgJ1RJRURfQVJSQVknOwotICAgICBteSAkciA9IGJsZXNzIFxAYSwgJ0ZP Tzk5JzsKLSAgICAgbXkgJGYgPSBmcmVlemUoJHIpOwotICAgICBteSAkdCA9IHRoYXcoJGYpOwot ZGlmZiAtLWdpdCBhL3QvdGllZF9ob29rLnQgYi90L3RpZWRfaG9vay50Ci1pbmRleCA3ZjJiYzk4 Li5lZTNiNmYyIDEwMDY0NAotLS0tIGEvdC90aWVkX2hvb2sudAotKysrIGIvdC90aWVkX2hvb2su dAotQEAgLTEsMTU1ICsxLDE1NyBAQAotICMhLi9wZXJsCi0gIwotICMgIENvcHlyaWdodCAoYykg MTk5NS0yMDAwLCBSYXBoYWVsIE1hbmZyZWRpCi0tIyAgCi0rIwotICMgIFlvdSBtYXkgcmVkaXN0 cmlidXRlIG9ubHkgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCA1LCBhcyBzcGVjaWZpZWQK LSAjICBpbiB0aGUgUkVBRE1FIGZpbGUgdGhhdCBjb21lcyB3aXRoIHRoZSBkaXN0cmlidXRpb24u Ci0gIwotIAotK3VzZSBzdHJpY3Q7Ci0rdXNlIHdhcm5pbmdzOwotKwotIHN1YiBCRUdJTiB7Ci0t ICAgIHVuc2hpZnQgQElOQywgJ3QnOwotLSAgICB1bnNoaWZ0IEBJTkMsICd0L2NvbXBhdCcgaWYg JF0gPCA1LjAwNjAwMjsKLS0gICAgcmVxdWlyZSBDb25maWc7IGltcG9ydCBDb25maWc7Ci0tICAg IGlmICgkRU5We1BFUkxfQ09SRX0gYW5kICRDb25maWd7J2V4dGVuc2lvbnMnfSAhfiAvXGJTdG9y YWJsZVxiLykgewotLSAgICAgICAgcHJpbnQgIjEuLjAgIyBTa2lwOiBTdG9yYWJsZSB3YXMgbm90 IGJ1aWx0XG4iOwotLSAgICAgICAgZXhpdCAwOwotLSAgICB9Ci0tICAgIHJlcXVpcmUgJ3N0LWR1 bXAucGwnOwotKyAgICB1bnNoaWZ0IEBJTkMsICd0L2xpYic7Ci0gfQotIAotK3VzZSBTVER1bXA7 Ci0rCi0gdXNlIFN0b3JhYmxlIHF3KGZyZWV6ZSB0aGF3KTsKLSAKLSAkU3RvcmFibGU6OmZsYWdz ID0gU3RvcmFibGU6OkZMQUdTX0NPTVBBVDsKLSAKLSB1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAy ODsKLSAKLS0oJHNjYWxhcl9mZXRjaCwgJGFycmF5X2ZldGNoLCAkaGFzaF9mZXRjaCkgPSAoMCwg MCwgMCk7Ci0rbXkgKAotKyAgJHNjYWxhcl9mZXRjaCwgJHNjYWxhcl9ob29rMSwgJHNjYWxhcl9o b29rMiwKLSsgICRhcnJheV9mZXRjaCwgJGFycmF5X2hvb2sxLCAkYXJyYXlfaG9vazIsCi0rICAk aGFzaF9mZXRjaCwgJGhhc2hfaG9vazEsICRoYXNoX2hvb2syLAotKykgPSAoMCkgeCA5OwotIAot IHBhY2thZ2UgVElFRF9IQVNIOwotIAotIHN1YiBUSUVIQVNIIHsKLS0JbXkgJHNlbGYgPSBibGVz cyB7fSwgc2hpZnQ7Ci0tCXJldHVybiAkc2VsZjsKLSsgICAgbXkgJHNlbGYgPSBibGVzcyB7fSwg c2hpZnQ7Ci0rICAgIHJldHVybiAkc2VsZjsKLSB9Ci0gCi0gc3ViIEZFVENIIHsKLS0JbXkgJHNl bGYgPSBzaGlmdDsKLS0JbXkgKCRrZXkpID0gQF87Ci0tCSRtYWluOjpoYXNoX2ZldGNoKys7Ci0t CXJldHVybiAkc2VsZi0+eyRrZXl9OwotKyAgICBteSAkc2VsZiA9IHNoaWZ0OwotKyAgICBteSAo JGtleSkgPSBAXzsKLSsgICAgJGhhc2hfZmV0Y2grKzsKLSsgICAgcmV0dXJuICRzZWxmLT57JGtl eX07Ci0gfQotIAotIHN1YiBTVE9SRSB7Ci0tCW15ICRzZWxmID0gc2hpZnQ7Ci0tCW15ICgka2V5 LCAkdmFsdWUpID0gQF87Ci0tCSRzZWxmLT57JGtleX0gPSAkdmFsdWU7Ci0rICAgIG15ICRzZWxm ID0gc2hpZnQ7Ci0rICAgIG15ICgka2V5LCAkdmFsdWUpID0gQF87Ci0rICAgICRzZWxmLT57JGtl eX0gPSAkdmFsdWU7Ci0gfQotIAotIHN1YiBGSVJTVEtFWSB7Ci0tCW15ICRzZWxmID0gc2hpZnQ7 Ci0tCXNjYWxhciBrZXlzICV7JHNlbGZ9OwotLQlyZXR1cm4gZWFjaCAleyRzZWxmfTsKLSsgICAg bXkgJHNlbGYgPSBzaGlmdDsKLSsgICAgc2NhbGFyIGtleXMgJXskc2VsZn07Ci0rICAgIHJldHVy biBlYWNoICV7JHNlbGZ9OwotIH0KLSAKLSBzdWIgTkVYVEtFWSB7Ci0tCW15ICRzZWxmID0gc2hp ZnQ7Ci0tCXJldHVybiBlYWNoICV7JHNlbGZ9OwotKyAgICBteSAkc2VsZiA9IHNoaWZ0OwotKyAg ICByZXR1cm4gZWFjaCAleyRzZWxmfTsKLSB9Ci0gCi0gc3ViIFNUT1JBQkxFX2ZyZWV6ZSB7Ci0t CW15ICRzZWxmID0gc2hpZnQ7Ci0tCSRtYWluOjpoYXNoX2hvb2sxKys7Ci0tCXJldHVybiBqb2lu KCI6Iiwga2V5cyAlJHNlbGYpIC4gIjsiIC4gam9pbigiOiIsIHZhbHVlcyAlJHNlbGYpOwotKyAg ICBteSAkc2VsZiA9IHNoaWZ0OwotKyAgICAkaGFzaF9ob29rMSsrOwotKyAgICByZXR1cm4gam9p bigiOiIsIGtleXMgJSRzZWxmKSAuICI7IiAuIGpvaW4oIjoiLCB2YWx1ZXMgJSRzZWxmKTsKLSB9 Ci0gCi0gc3ViIFNUT1JBQkxFX3RoYXcgewotLQlteSAoJHNlbGYsICRjbG9uaW5nLCAkZnJvemVu KSA9IEBfOwotLQlteSAoJGtleXMsICR2YWx1ZXMpID0gc3BsaXQoLzsvLCAkZnJvemVuKTsKLS0J bXkgQGtleXMgPSBzcGxpdCgvOi8sICRrZXlzKTsKLS0JbXkgQHZhbHVlcyA9IHNwbGl0KC86Lywg JHZhbHVlcyk7Ci0tCWZvciAobXkgJGkgPSAwOyAkaSA8IEBrZXlzOyAkaSsrKSB7Ci0tCQkkc2Vs Zi0+eyRrZXlzWyRpXX0gPSAkdmFsdWVzWyRpXTsKLS0JfQotLQkkbWFpbjo6aGFzaF9ob29rMisr OwotKyAgICBteSAoJHNlbGYsICRjbG9uaW5nLCAkZnJvemVuKSA9IEBfOwotKyAgICBteSAoJGtl eXMsICR2YWx1ZXMpID0gc3BsaXQoLzsvLCAkZnJvemVuKTsKLSsgICAgbXkgQGtleXMgPSBzcGxp dCgvOi8sICRrZXlzKTsKLSsgICAgbXkgQHZhbHVlcyA9IHNwbGl0KC86LywgJHZhbHVlcyk7Ci0r ICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBrZXlzOyAkaSsrKSB7Ci0rICAgICAgICAkc2VsZi0+ eyRrZXlzWyRpXX0gPSAkdmFsdWVzWyRpXTsKLSsgICAgfQotKyAgICAkaGFzaF9ob29rMisrOwot IH0KLSAKLSBwYWNrYWdlIFRJRURfQVJSQVk7Ci0gCi0gc3ViIFRJRUFSUkFZIHsKLS0JbXkgJHNl bGYgPSBibGVzcyBbXSwgc2hpZnQ7Ci0tCXJldHVybiAkc2VsZjsKLSsgICAgbXkgJHNlbGYgPSBi bGVzcyBbXSwgc2hpZnQ7Ci0rICAgIHJldHVybiAkc2VsZjsKLSB9Ci0gCi0gc3ViIEZFVENIIHsK LS0JbXkgJHNlbGYgPSBzaGlmdDsKLS0JbXkgKCRpZHgpID0gQF87Ci0tCSRtYWluOjphcnJheV9m ZXRjaCsrOwotLQlyZXR1cm4gJHNlbGYtPlskaWR4XTsKLSsgICAgbXkgJHNlbGYgPSBzaGlmdDsK LSsgICAgbXkgKCRpZHgpID0gQF87Ci0rICAgICRhcnJheV9mZXRjaCsrOwotKyAgICByZXR1cm4g JHNlbGYtPlskaWR4XTsKLSB9Ci0gCi0gc3ViIFNUT1JFIHsKLS0JbXkgJHNlbGYgPSBzaGlmdDsK LS0JbXkgKCRpZHgsICR2YWx1ZSkgPSBAXzsKLS0JJHNlbGYtPlskaWR4XSA9ICR2YWx1ZTsKLSsg ICAgbXkgJHNlbGYgPSBzaGlmdDsKLSsgICAgbXkgKCRpZHgsICR2YWx1ZSkgPSBAXzsKLSsgICAg JHNlbGYtPlskaWR4XSA9ICR2YWx1ZTsKLSB9Ci0gCi0gc3ViIEZFVENIU0laRSB7Ci0tCW15ICRz ZWxmID0gc2hpZnQ7Ci0tCXJldHVybiBAeyRzZWxmfTsKLSsgICAgbXkgJHNlbGYgPSBzaGlmdDsK LSsgICAgcmV0dXJuIEB7JHNlbGZ9OwotIH0KLSAKLSBzdWIgU1RPUkFCTEVfZnJlZXplIHsKLS0J bXkgJHNlbGYgPSBzaGlmdDsKLS0JJG1haW46OmFycmF5X2hvb2sxKys7Ci0tCXJldHVybiBqb2lu KCI6IiwgQCRzZWxmKTsKLSsgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSsgICAgJGFycmF5X2hvb2sx Kys7Ci0rICAgIHJldHVybiBqb2luKCI6IiwgQCRzZWxmKTsKLSB9Ci0gCi0gc3ViIFNUT1JBQkxF X3RoYXcgewotLQlteSAoJHNlbGYsICRjbG9uaW5nLCAkZnJvemVuKSA9IEBfOwotLQlAJHNlbGYg PSBzcGxpdCgvOi8sICRmcm96ZW4pOwotLQkkbWFpbjo6YXJyYXlfaG9vazIrKzsKLSsgICAgbXkg KCRzZWxmLCAkY2xvbmluZywgJGZyb3plbikgPSBAXzsKLSsgICAgQCRzZWxmID0gc3BsaXQoLzov LCAkZnJvemVuKTsKLSsgICAgJGFycmF5X2hvb2syKys7Ci0gfQotIAotIHBhY2thZ2UgVElFRF9T Q0FMQVI7Ci0gCi0gc3ViIFRJRVNDQUxBUiB7Ci0tCW15ICRzY2FsYXI7Ci0tCW15ICRzZWxmID0g Ymxlc3MgXCRzY2FsYXIsIHNoaWZ0OwotLQlyZXR1cm4gJHNlbGY7Ci0rICAgIG15ICRzY2FsYXI7 Ci0rICAgIG15ICRzZWxmID0gYmxlc3MgXCRzY2FsYXIsIHNoaWZ0OwotKyAgICByZXR1cm4gJHNl bGY7Ci0gfQotIAotIHN1YiBGRVRDSCB7Ci0tCW15ICRzZWxmID0gc2hpZnQ7Ci0tCSRtYWluOjpz Y2FsYXJfZmV0Y2grKzsKLS0JcmV0dXJuICQkc2VsZjsKLSsgICAgbXkgJHNlbGYgPSBzaGlmdDsK LSsgICAgJHNjYWxhcl9mZXRjaCsrOwotKyAgICByZXR1cm4gJCRzZWxmOwotIH0KLSAKLSBzdWIg U1RPUkUgewotLQlteSAkc2VsZiA9IHNoaWZ0OwotLQlteSAoJHZhbHVlKSA9IEBfOwotLQkkJHNl bGYgPSAkdmFsdWU7Ci0rICAgIG15ICRzZWxmID0gc2hpZnQ7Ci0rICAgIG15ICgkdmFsdWUpID0g QF87Ci0rICAgICQkc2VsZiA9ICR2YWx1ZTsKLSB9Ci0gCi0gc3ViIFNUT1JBQkxFX2ZyZWV6ZSB7 Ci0tCW15ICRzZWxmID0gc2hpZnQ7Ci0tCSRtYWluOjpzY2FsYXJfaG9vazErKzsKLS0JcmV0dXJu ICQkc2VsZjsKLSsgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSsgICAgJHNjYWxhcl9ob29rMSsrOwot KyAgICByZXR1cm4gJCRzZWxmOwotIH0KLSAKLSBzdWIgU1RPUkFCTEVfdGhhdyB7Ci0tCW15ICgk c2VsZiwgJGNsb25pbmcsICRmcm96ZW4pID0gQF87Ci0tCSQkc2VsZiA9ICRmcm96ZW47Ci0tCSRt YWluOjpzY2FsYXJfaG9vazIrKzsKLSsgICAgbXkgKCRzZWxmLCAkY2xvbmluZywgJGZyb3plbikg PSBAXzsKLSsgICAgJCRzZWxmID0gJGZyb3plbjsKLSsgICAgJHNjYWxhcl9ob29rMisrOwotIH0K LSAKLSBwYWNrYWdlIG1haW47Ci0gCi0tJGEgPSAndG90byc7Ci0tJGIgPSBcJGE7Ci0rbXkgJGEg PSAndG90byc7Ci0rbXkgJGIgPSBcJGE7Ci0gCi0tJGMgPSB0aWUgJWhhc2gsIFRJRURfSEFTSDsK LS0kZCA9IHRpZSBAYXJyYXksIFRJRURfQVJSQVk7Ci0tdGllICRzY2FsYXIsIFRJRURfU0NBTEFS OwotK215ICRjID0gdGllIG15ICVoYXNoLCAnVElFRF9IQVNIJzsKLStteSAkZCA9IHRpZSBteSBA YXJyYXksICdUSUVEX0FSUkFZJzsKLSt0aWUgbXkgJHNjYWxhciwgJ1RJRURfU0NBTEFSJzsKLSAK LSAkc2NhbGFyID0gJ2Zvbyc7Ci0gJGhhc2h7J2F0dHJpYnV0ZSd9ID0gJ3BsYWluIHZhbHVlJzsK LUBAIC0xNTgsNDMgKzE2MCw0MyBAQCAkYXJyYXlbMV0gPSAkYzsKLSAkYXJyYXlbMl0gPSBcQGFy cmF5OwotICRhcnJheVszXSA9ICJwbGFpbmUgc2NhbGFpcmUiOwotIAotLUB0aWVkID0gKFwkc2Nh bGFyLCBcQGFycmF5LCBcJWhhc2gpOwotLSVhID0gKCdrZXknLCAndmFsdWUnLCAxLCAwLCAkYSwg JGIsICdjdmFyJywgXCRhLCAnc2NhbGFycmVmJywgXCRzY2FsYXIpOwotLUBhID0gKCdmaXJzdCcs IDMsIC00LCAtMy4xNDE1OSwgNDU2LCA0LjUsICRkLCBcJGQsCi0tCSRiLCBcJGEsICRhLCAkYywg XCRjLCBcJWEsIFxAYXJyYXksIFwlaGFzaCwgXEB0aWVkKTsKLStteSBAdGllZCA9IChcJHNjYWxh ciwgXEBhcnJheSwgXCVoYXNoKTsKLStteSAlYSA9ICgna2V5JywgJ3ZhbHVlJywgMSwgMCwgJGEs ICRiLCAnY3ZhcicsIFwkYSwgJ3NjYWxhcnJlZicsIFwkc2NhbGFyKTsKLStteSBAYSA9ICgnZmly c3QnLCAzLCAtNCwgLTMuMTQxNTksIDQ1NiwgNC41LCAkZCwgXCRkLAotKyAgICAkYiwgXCRhLCAk YSwgJGMsIFwkYywgXCVhLCBcQGFycmF5LCBcJWhhc2gsIFxAdGllZCk7Ci0gCi0gbXkgJGYgPSBm cmVlemUoXEBhKTsKLSBpc250KCRmLCB1bmRlZik7Ci0tJGR1bXBlZCA9ICZkdW1wKFxAYSk7Ci0r bXkgJGR1bXBlZCA9IHN0ZHVtcChcQGEpOwotIGlzbnQoJGR1bXBlZCwgdW5kZWYpOwotIAotLSRy b290ID0gdGhhdygkZik7Ci0rbXkgJHJvb3QgPSB0aGF3KCRmKTsKLSBpc250KCRyb290LCB1bmRl Zik7Ci0gCi0tJGdvdCA9ICZkdW1wKCRyb290KTsKLStteSAkZ290ID0gc3RkdW1wKCRyb290KTsK LSBpc250KCRnb3QsIHVuZGVmKTsKLSAKLS1pc250KCRnb3QsICRkdW1wZWQpOwkJIyBvdXIgaG9v a3MgZGlkIG5vdCBoYW5kbGUgcmVmcyBpbiBhcnJheQotK2lzbnQoJGdvdCwgJGR1bXBlZCk7ICAg ICAgICAgICAgIyBvdXIgaG9va3MgZGlkIG5vdCBoYW5kbGUgcmVmcyBpbiBhcnJheQotIAotLSRn ID0gZnJlZXplKCRyb290KTsKLStteSAkZyA9IGZyZWV6ZSgkcm9vdCk7Ci0gaXMobGVuZ3RoICRm LCBsZW5ndGggJGcpOwotIAotICMgRW5zdXJlIHRoZSB0aWVkIGl0ZW1zIGluIHRoZSByZXRyaWV2 ZWQgaW1hZ2Ugd29yawotLUBvbGQgPSAoJHNjYWxhcl9mZXRjaCwgJGFycmF5X2ZldGNoLCAkaGFz aF9mZXRjaCk7Ci0tQHRpZWQgPSAoJHRzY2FsYXIsICR0YXJyYXksICR0aGFzaCkgPSBAeyRyb290 LT5bJCN7JHJvb3R9XX07Ci0tQHR5cGUgPSBxdyhTQ0FMQVIgIEFSUkFZICBIQVNIKTsKLStteSBA b2xkID0gKCRzY2FsYXJfZmV0Y2gsICRhcnJheV9mZXRjaCwgJGhhc2hfZmV0Y2gpOwotK0B0aWVk ID0gbXkgKCR0c2NhbGFyLCAkdGFycmF5LCAkdGhhc2gpID0gQHskcm9vdC0+WyQjeyRyb290fV19 OwotK215IEB0eXBlID0gcXcoU0NBTEFSICBBUlJBWSAgSEFTSCk7Ci0gCi0gaXMocmVmIHRpZWQg JCR0c2NhbGFyLCAnVElFRF9TQ0FMQVInKTsKLSBpcyhyZWYgdGllZCBAJHRhcnJheSwgJ1RJRURf QVJSQVknKTsKLSBpcyhyZWYgdGllZCAlJHRoYXNoLCAnVElFRF9IQVNIJyk7Ci0gCi0tQG5ldyA9 ICgkJHRzY2FsYXIsICR0YXJyYXktPlswXSwgJHRoYXNoLT57J2F0dHJpYnV0ZSd9KTsKLStteSBA bmV3ID0gKCQkdHNjYWxhciwgJHRhcnJheS0+WzBdLCAkdGhhc2gtPnsnYXR0cmlidXRlJ30pOwot IEBuZXcgPSAoJHNjYWxhcl9mZXRjaCwgJGFycmF5X2ZldGNoLCAkaGFzaF9mZXRjaCk7Ci0gCi0g IyBUZXN0cyAxMC4uMTUKLS1mb3IgKCRpID0gMDsgJGkgPCBAbmV3OyAkaSsrKSB7Ci0tICAgIGlz KCRuZXdbJGldLCAkb2xkWyRpXSArIDEpOwkJIyBUZXN0cyAxMCwxMiwxNAotLSAgICBpcyhyZWYg JHRpZWRbJGldLCAkdHlwZVskaV0pOwkjIFRlc3RzIDExLDEzLDE1Ci0rZm9yIChteSAkaSA9IDA7 ICRpIDwgQG5ldzsgJGkrKykgewotKyAgICBpcygkbmV3WyRpXSwgJG9sZFskaV0gKyAxKTsgICAg ICAgICAjIFRlc3RzIDEwLDEyLDE0Ci0rICAgIGlzKHJlZiAkdGllZFskaV0sICR0eXBlWyRpXSk7 ICAgICAgICMgVGVzdHMgMTEsMTMsMTUKLSB9Ci0gCi0gaXMoJCR0c2NhbGFyLCAnZm9vJyk7Ci1A QCAtMjEzLDcgKzIxNSw3IEBAIGlzKCRoYXNoX2hvb2syLCAxKTsKLSAjIEFuZCBub3cgZm9yIHRo ZSAiYmxlc3NlZCByZWYgdG8gdGllZCBoYXNoIiB3aXRoICJzdG9yZSBob29rIiB0ZXN0Li4uCi0g IwotIAotLW15ICRiYyA9IGJsZXNzIFwlaGFzaCwgJ0ZPTyc7CQkjIEZPTyBkb2VzIG5vdCBleGlz dCAtPiBubyBob29rCi0rbXkgJGJjID0gYmxlc3MgXCVoYXNoLCAnRk9PJzsgICAgICAgICAgICMg Rk9PIGRvZXMgbm90IGV4aXN0IC0+IG5vIGhvb2sKLSBteSAkYnggPSB0aGF3IGZyZWV6ZSAkYmM7 Ci0gCi0gaXMocmVmICRieCwgJ0ZPTycpOwotQEAgLTIyNSwxNCArMjI3LDE0IEBAIHBhY2thZ2Ug VElFRF9IQVNIX1JFRjsKLSAKLSAKLSBzdWIgU1RPUkFCTEVfZnJlZXplIHsKLS0gICAgICAgIG15 ICgkc2VsZiwgJGNsb25pbmcpID0gQF87Ci0tICAgICAgICByZXR1cm4gaWYgJGNsb25pbmc7Ci0t ICAgICAgICByZXR1cm4oJ3JlZiBsb3N0Jyk7Ci0rICAgIG15ICgkc2VsZiwgJGNsb25pbmcpID0g QF87Ci0rICAgIHJldHVybiBpZiAkY2xvbmluZzsKLSsgICAgcmV0dXJuKCdyZWYgbG9zdCcpOwot IH0KLSAKLSBzdWIgU1RPUkFCTEVfdGhhdyB7Ci0tICAgICAgICBteSAoJHNlbGYsICRjbG9uaW5n LCAkZGF0YSkgPSBAXzsKLS0gICAgICAgIHJldHVybiBpZiAkY2xvbmluZzsKLSsgICAgbXkgKCRz ZWxmLCAkY2xvbmluZywgJGRhdGEpID0gQF87Ci0rICAgIHJldHVybiBpZiAkY2xvbmluZzsKLSB9 Ci0gCi0gcGFja2FnZSBtYWluOwotZGlmZiAtLWdpdCBhL3QvdGllZF9pdGVtcy50IGIvdC90aWVk X2l0ZW1zLnQKLWluZGV4IDNkMTM5NzEuLjM2MTcyN2YgMTAwNjQ0Ci0tLS0gYS90L3RpZWRfaXRl bXMudAotKysrIGIvdC90aWVkX2l0ZW1zLnQKLUBAIC0xLDcgKzEsNyBAQAotICMhLi9wZXJsCi0g IwotICMgIENvcHlyaWdodCAoYykgMTk5NS0yMDAwLCBSYXBoYWVsIE1hbmZyZWRpCi0tIyAgCi0r IwotICMgIFlvdSBtYXkgcmVkaXN0cmlidXRlIG9ubHkgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMg UGVybCA1LCBhcyBzcGVjaWZpZWQKLSAjICBpbiB0aGUgUkVBRE1FIGZpbGUgdGhhdCBjb21lcyB3 aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gIwotQEAgLTEwLDE1ICsxMCw4IEBACi0gIyBUZXN0cyBy ZWYgdG8gaXRlbXMgaW4gdGllZCBoYXNoL2FycmF5IHN0cnVjdHVyZXMuCi0gIwotIAotLXN1YiBC RUdJTiB7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QnOwotLSAgICB1bnNoaWZ0IEBJTkMsICd0L2Nv bXBhdCcgaWYgJF0gPCA1LjAwNjAwMjsKLS0gICAgcmVxdWlyZSBDb25maWc7IGltcG9ydCBDb25m aWc7Ci0tICAgIGlmICgkRU5We1BFUkxfQ09SRX0gYW5kICRDb25maWd7J2V4dGVuc2lvbnMnfSAh fiAvXGJTdG9yYWJsZVxiLykgewotLSAgICAgICAgcHJpbnQgIjEuLjAgIyBTa2lwOiBTdG9yYWJs ZSB3YXMgbm90IGJ1aWx0XG4iOwotLSAgICAgICAgZXhpdCAwOwotLSAgICB9Ci0tfQotK3VzZSBz dHJpY3Q7Ci0rdXNlIHdhcm5pbmdzOwotIAotICReVyA9IDA7Ci0gCi1AQCAtMjcsMjcgKzIwLDI3 IEBAIHVzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDg7Ci0gCi0gJFN0b3JhYmxlOjpmbGFncyA9IFN0 b3JhYmxlOjpGTEFHU19DT01QQVQ7Ci0gCi0tJGhfZmV0Y2hlcyA9IDA7Ci0rbXkgJGhfZmV0Y2hl cyA9IDA7Ci0gCi0gc3ViIEg6OlRJRUhBU0ggeyBibGVzcyBcKG15ICR4KSwgIkgiIH0KLSBzdWIg SDo6RkVUQ0ggeyAkaF9mZXRjaGVzKys7ICRfWzFdIC0gNzAgfQotIAotLXRpZSAlaCwgIkgiOwot K3RpZSBteSAlaCwgIkgiOwotIAotLSRyZWYgPSBcJGh7Nzd9OwotLSRyZWYyID0gZGNsb25lICRy ZWY7Ci0rbXkgJHJlZiA9IFwkaHs3N307Ci0rbXkgJHJlZjIgPSBkY2xvbmUgJHJlZjsKLSAKLSBp cygkaF9mZXRjaGVzLCAwKTsKLSBpcygkJHJlZjIsICQkcmVmKTsKLSBpcygkJHJlZjIsIDcpOwot IGlzKCRoX2ZldGNoZXMsIDIpOwotIAotLSRhX2ZldGNoZXMgPSAwOwotK215ICRhX2ZldGNoZXMg PSAwOwotIAotIHN1YiBBOjpUSUVBUlJBWSB7IGJsZXNzIFwobXkgJHgpLCAiQSIgfQotIHN1YiBB OjpGRVRDSCB7ICRhX2ZldGNoZXMrKzsgJF9bMV0gLSA3MCB9Ci0gCi0tdGllIEBhLCAiQSI7Ci0r dGllIG15IEBhLCAiQSI7Ci0gCi0gJHJlZiA9IFwkYVs3OF07Ci0gJHJlZjIgPSBkY2xvbmUgJHJl ZjsKLWRpZmYgLS1naXQgYS90L3RpZWRfcmVpZnkudCBiL3QvdGllZF9yZWlmeS50Ci1pbmRleCA0 NGU4NjM3Li40MGI2YTk2IDEwMDY0NAotLS0tIGEvdC90aWVkX3JlaWZ5LnQKLSsrKyBiL3QvdGll ZF9yZWlmeS50Ci1AQCAtMSw4ICsxLDExIEBACi0rIyEuL3BlcmwKLSt1c2Ugc3RyaWN0OwotK3Vz ZSB3YXJuaW5nczsKLSsKLSB1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiAxOwotLSAKLSsKLSBwYWNr YWdlIGR1bWJfdGhpbmc7Ci0gCi0tdXNlIHN0cmljdDsgdXNlIHdhcm5pbmdzOwotIHVzZSBUaWU6 OkFycmF5OwotIHVzZSBDYXJwOwotIHVzZSBiYXNlICdUaWU6OlN0ZEFycmF5JzsKLUBAIC0xOSw3 ICsyMiw2IEBAIHN1YiBUSUVBUlJBWSB7Ci0gCi0gcGFja2FnZSBtYWluOwotIAotLXVzZSBzdHJp Y3Q7IHVzZSB3YXJuaW5nczsKLSB1c2UgU3RvcmFibGUgcXcoZnJlZXplIHRoYXcpOwotIAotIG15 ICR4ID0gWzEsMiwzLDRdOwotZGlmZiAtLWdpdCBhL3QvdGllZF9zdG9yZS50IGIvdC90aWVkX3N0 b3JlLnQKLWluZGV4IGM2NTdmOTUuLjc3MWE2MTMgMTAwNjQ0Ci0tLS0gYS90L3RpZWRfc3RvcmUu dAotKysrIGIvdC90aWVkX3N0b3JlLnQKLUBAIC0xLDE0ICsxLDcgQEAKLSAjIS4vcGVybAotIAot LXN1YiBCRUdJTiB7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QnOwotLSAgICB1bnNoaWZ0IEBJTkMs ICd0L2NvbXBhdCcgaWYgJF0gPCA1LjAwNjAwMjsKLS0gICAgcmVxdWlyZSBDb25maWc7IGltcG9y dCBDb25maWc7Ci0tICAgIGlmICgkRU5We1BFUkxfQ09SRX0gYW5kICRDb25maWd7J2V4dGVuc2lv bnMnfSAhfiAvXGJTdG9yYWJsZVxiLykgewotLSAgICAgICAgcHJpbnQgIjEuLjAgIyBTa2lwOiBT dG9yYWJsZSB3YXMgbm90IGJ1aWx0XG4iOwotLSAgICAgICAgZXhpdCAwOwotLSAgICB9Ci0tfQot K3VzZSBzdHJpY3Q7Ci0rdXNlIHdhcm5pbmdzOwotIAotIHVzZSBTdG9yYWJsZSAoKTsKLSB1c2Ug VGVzdDo6TW9yZSB0ZXN0cyA9PiAzOwotQEAgLTIwLDggKzEzLDggQEAgcGFja2FnZSBUSUVEX0hB U0g7Ci0gc3ViIFRJRUhBU0ggeyBibGVzcyh7fSwgJF9bMF0pIH0KLSAKLSBzdWIgU1RPUkUgewot LQkkZiA9IFN0b3JhYmxlOjpmcmVlemUoXCRfWzJdKTsKLS0JMTsKLSsgICAgJGYgPSBTdG9yYWJs ZTo6ZnJlZXplKFwkX1syXSk7Ci0rICAgIDE7Ci0gfQotIAotIHBhY2thZ2UgVElFRF9BUlJBWTsK LUBAIC0yOSw4ICsyMiw4IEBAIHBhY2thZ2UgVElFRF9BUlJBWTsKLSBzdWIgVElFQVJSQVkgeyBi bGVzcyh7fSwgJF9bMF0pIH0KLSAKLSBzdWIgU1RPUkUgewotLQkkZiA9IFN0b3JhYmxlOjpmcmVl emUoXCRfWzJdKTsKLS0JMTsKLSsgICAgJGYgPSBTdG9yYWJsZTo6ZnJlZXplKFwkX1syXSk7Ci0r ICAgIDE7Ci0gfQotIAotIHBhY2thZ2UgVElFRF9TQ0FMQVI7Ci1AQCAtMzgsOCArMzEsOCBAQCBw YWNrYWdlIFRJRURfU0NBTEFSOwotIHN1YiBUSUVTQ0FMQVIgeyBibGVzcyh7fSwgJF9bMF0pIH0K LSAKLSBzdWIgU1RPUkUgewotLQkkZiA9IFN0b3JhYmxlOjpmcmVlemUoXCRfWzFdKTsKLS0JMTsK LSsgICAgJGYgPSBTdG9yYWJsZTo6ZnJlZXplKFwkX1sxXSk7Ci0rICAgIDE7Ci0gfQotIAotIHBh Y2thZ2UgbWFpbjsKLWRpZmYgLS1naXQgYS90L3V0ZjgudCBiL3QvdXRmOC50Ci1pbmRleCAwZjU0 NmYwLi42NzA2M2U3IDEwMDY0NAotLS0tIGEvdC91dGY4LnQKLSsrKyBiL3QvdXRmOC50Ci1AQCAt MSw1MyArMSw0NCBAQAotICMhLi9wZXJsIC13Ci0gIwotICMgIENvcHlyaWdodCAoYykgMTk5NS0y MDAwLCBSYXBoYWVsIE1hbmZyZWRpCi0tIyAgCi0rIwotICMgIFlvdSBtYXkgcmVkaXN0cmlidXRl IG9ubHkgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCA1LCBhcyBzcGVjaWZpZWQKLSAjICBp biB0aGUgUkVBRE1FIGZpbGUgdGhhdCBjb21lcyB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gIwot IAotLXN1YiBCRUdJTiB7Ci0tICAgIHVuc2hpZnQgQElOQywgJ3QnOwotLSAgICB1bnNoaWZ0IEBJ TkMsICd0L2NvbXBhdCcgaWYgJF0gPCA1LjAwNjAwMjsKLS0gICAgcmVxdWlyZSBDb25maWc7IGlt cG9ydCBDb25maWc7Ci0tICAgIGlmICgkRU5We1BFUkxfQ09SRX0gYW5kICRDb25maWd7J2V4dGVu c2lvbnMnfSAhfiAvXGJTdG9yYWJsZVxiLykgewotLSAgICAgICAgcHJpbnQgIjEuLjAgIyBTa2lw OiBTdG9yYWJsZSB3YXMgbm90IGJ1aWx0XG4iOwotLSAgICAgICAgZXhpdCAwOwotLSAgICB9Ci0t fQotLQotIHVzZSBzdHJpY3Q7Ci0rdXNlIHdhcm5pbmdzOwotIAotIHVzZSBTdG9yYWJsZSBxdyh0 aGF3IGZyZWV6ZSk7Ci0gdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gNjsKLSAKLSBteSAkeCA9IGNo cigxMjM0KTsKLS1pcygkeCwgJHt0aGF3IGZyZWV6ZSBcJHh9KTsKLStpcygkeCwgJHt0aGF3IGZy ZWV6ZSBcJHh9LCAicm91bmQgdHJpcCBvbmUgdW5pY29kZSBjaGFyYWN0ZXIiKTsKLSAKLSAjIExv bmcgc2NhbGFyCi0gJHggPSBqb2luICcnLCBtYXAge2NociAkX30gKDAuLjEwMjMpOwotLWlzKCR4 LCAke3RoYXcgZnJlZXplIFwkeH0pOwotK2lzKCR4LCAke3RoYXcgZnJlZXplIFwkeH0sICJyb3Vu ZCB0cmlwIFVuaWNvZGUgc3RyaW5nIik7Ci0gCi0gIyBDaGFyIGluIHRoZSByYW5nZSAxMjctMjU1 IChwcm9iYWJseSkgaW4gdXRmOC4gIFRoaXMganVzdCB3b24ndCB3b3JrIGZvcgotICMgRUJDRElD IGZvciBlYXJseSBQZXJscy4KLSAkeCA9ICgkXSBsdCA1LjAwN18wMDMpID8gY2hyKDE3NSkgOiBj aHIodXRmODo6dW5pY29kZV90b19uYXRpdmUoMTc1KSkKLS0gICAuIGNociAoMjU2KTsKLSsgICAg LiBjaHIgKDI1Nik7Ci0gY2hvcCAkeDsKLS1pcygkeCwgJHt0aGF3IGZyZWV6ZSBcJHh9KTsKLStp cygkeCwgJHt0aGF3IGZyZWV6ZSBcJHh9LCAicm91bmQgc3RyaXAgYSAxMjgtMjU1IGNoYXJhY3Rl ciIpOwotIAotICMgU3RvcmFibGUgbmVlZHMgdG8gY29wZSBpZiBhIGZyb3plbiBzdHJpbmcgaGFw cGVucyB0byBiZSBpbnRlcm5hbCB1dGY4Ci0gIyBlbmNvZGVkCi0gCi0gJHggPSBjaHIgMjU2Owot IG15ICRkYXRhID0gZnJlZXplIFwkeDsKLS1pcygkeCwgJHt0aGF3ICRkYXRhfSk7Ci0raXMoJHgs ICR7dGhhdyAkZGF0YX0sICJzYW5pdHkgY2hlY2sgZm9yIHVwZ3JhZGVkIGZyb3plbiBkYXRhIik7 Ci0gCi0gJGRhdGEgLj0gY2hyIDI1NjsKLSBjaG9wICRkYXRhOwotLWlzKCR4LCAke3RoYXcgJGRh dGF9KTsKLStpcygkeCwgJHt0aGF3ICRkYXRhfSwgInRlc3QgZm9yIHVwZ3JhZGVkIGZyb3plbiBk YXRhIik7Ci0gCi0gCi0gJGRhdGEgLj0gY2hyIDI1NjsKLSAjIFRoaXMgZGVmaW5pdGVseSBpc24n dCB2YWxpZAotIGV2YWwge3RoYXcgJGRhdGF9OwotLWxpa2UoJEAsIHFyL2NvcnJ1cHQuKmNoYXJh Y3RlcnMgb3V0c2lkZS8pOwotK2xpa2UoJEAsIHFyL2NvcnJ1cHQuKmNoYXJhY3RlcnMgb3V0c2lk ZS8sICJjaGVjayBlcnJvciBoYW5kbGluZyBmb3IgYWRkZWQgMjU2IGNvZGUgcG9pbnQiKTsKLWRp ZmYgLS1naXQgYS90L3V0ZjhoYXNoLnQgYi90L3V0ZjhoYXNoLnQKLWluZGV4IGEyYTg3MjUuLjYz ODA3NmEgMTAwNjQ0Ci0tLS0gYS90L3V0ZjhoYXNoLnQKLSsrKyBiL3QvdXRmOGhhc2gudAotQEAg LTEsMjEgKzEsMTUgQEAKLSAjIS4vcGVybAotIAotK3VzZSBzdHJpY3Q7Ci0rdXNlIHdhcm5pbmdz OwotKwotIHN1YiBCRUdJTiB7Ci0gICAgIGlmICgkXSA8IDUuMDA3KSB7Ci0tCXByaW50ICIxLi4w ICMgU2tpcDogbm8gdXRmOCBoYXNoIGtleSBzdXBwb3J0XG4iOwotLQlleGl0IDA7Ci0tICAgIH0K LS0gICAgdW5zaGlmdCBASU5DLCAndCc7Ci0tICAgIHJlcXVpcmUgQ29uZmlnOyBpbXBvcnQgQ29u ZmlnOwotLSAgICBpZiAoJEVOVntQRVJMX0NPUkV9KXsKLS0JaWYoJENvbmZpZ3snZXh0ZW5zaW9u cyd9ICF+IC9cYlN0b3JhYmxlXGIvKSB7Ci0tCSAgICBwcmludCAiMS4uMCAjIFNraXA6IFN0b3Jh YmxlIHdhcyBub3QgYnVpbHRcbiI7Ci0tCSAgICBleGl0IDA7Ci0tCX0KLSsgICAgICAgIHByaW50 ICIxLi4wICMgU2tpcDogbm8gdXRmOCBoYXNoIGtleSBzdXBwb3J0XG4iOwotKyAgICAgICAgZXhp dCAwOwotICAgICB9Ci0gfQotIAotLXVzZSBzdHJpY3Q7Ci0gb3VyICRERUJVR01FID0gc2hpZnQg fHwgMDsKLSB1c2UgU3RvcmFibGUgcXcoc3RvcmUgbnN0b3JlIHJldHJpZXZlIHRoYXcgZnJlZXpl KTsKLSB7Ci1AQCAtNDEsOSArMzUsOSBAQCBubyB1dGY4OyAjIHdlIGhhdmUgYSBuYWtlZCA4LWJp dCBieXRlIGJlbG93IChpbiBMYXRpbiAxLCBhbnl3YXkpCi0gIyBJbiBMYXRpbiAxIC1lc2UgdGhl IGJlbG93IG9yZCgpIHNob3VsZCBlbmQgdXAgMHhjMCAoMTkyKSwKLSAjIGluIEVCQ0RJQyAweDY0 ICgxMDApLiAgQm90aCBzaG91bGQgZW5kIHVwIGJlaW5nIFVURi04L1VURi1FQkNESUMuCi0gbXkg QG9yZHMgPSAoCi0tCSAgICBvcmQoIu+/vSIpLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lU SCBHUkFWRQotLQkgICAgMHgzMDAwLCAjSURFT0dSQVBISUMgU1BBQ0UKLS0JICAgKTsKLSsgICAg b3JkKCLvv70iKSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKLSsgICAgMHgz MDAwLCAjSURFT0dSQVBISUMgU1BBQ0UKLSspOwotIAotIGZvcmVhY2ggbXkgJGkgKEBvcmRzKXsK LSAgICAgbXkgJHUgPSBjaHIoJGkpOyB1dGY4Ojp1cGdyYWRlKCR1KTsKLUBAIC01OCwyMCArNTIs MjAgQEAgZm9yZWFjaCBteSAkaSAoQG9yZHMpewotIAotIHN1YiBua2V5cygkKXsKLSAgICAgbXkg JGhyZWYgPSBzaGlmdDsKLS0gICAgcmV0dXJuIHNjYWxhciBrZXlzICUkaHJlZjsgCi0rICAgIHJl dHVybiBzY2FsYXIga2V5cyAlJGhyZWY7Ci0gfQotIAotIG15ICRuazsKLS1pcygkbmsgPSBua2V5 cyhcJXV0ZjhoYXNoKSwgc2NhbGFyKEBvcmRzKSoyLCAKLS0gICAibmFzdHkgaGFzaCBnZW5lcmF0 ZWQgKG5rZXlzPSRuaykiKTsKLStpcygkbmsgPSBua2V5cyhcJXV0ZjhoYXNoKSwgc2NhbGFyKEBv cmRzKSoyLAotKyAgICAibmFzdHkgaGFzaCBnZW5lcmF0ZWQgKG5rZXlzPSRuaykiKTsKLSAKLSAj IG5vdyBsZXQgdGhlIHNob3cgYmVnaW4hCi0gCi0gbXkgJHRoYXdlZCA9IHRoYXcoZnJlZXplKFwl dXRmOGhhc2gpKTsKLSAKLSBpcygkbmsgPSBua2V5cygkdGhhd2VkKSwKLS0gICBua2V5cyhcJXV0 ZjhoYXNoKSwKLS0gICAic2NhbGFyIGtleXMgXCV7XCR0aGF3ZWR9IChua2V5cz0kbmspIik7Ci0r ICAgIG5rZXlzKFwldXRmOGhhc2gpLAotKyAgICAic2NhbGFyIGtleXMgXCV7XCR0aGF3ZWR9IChu a2V5cz0kbmspIik7Ci0gZm9yIG15ICRrIChzb3J0IGtleXMgJSR0aGF3ZWQpewotICAgICBpcygk dXRmOGhhc2h7JGt9LCAkdGhhd2VkLT57JGt9LCAiZnJvemVuIGl0ZW0gY2hyKCR1dGY4aGFzaHsk a30pIik7Ci0gfQotQEAgLTgzLDggKzc3LDggQEAgb2soKG5zdG9yZSBcJXV0ZjhoYXNoLCAkc3Rv cmFnZSksICJuc3RvcmUgdG8gJHN0b3JhZ2UiKTsKLSBvaygoJHJldHJpZXZlZCA9IHJldHJpZXZl KCRzdG9yYWdlKSksICJyZXRyaWV2ZSBmcm9tICRzdG9yYWdlIik7Ci0gCi0gaXMoJG5rID0gbmtl eXMoJHJldHJpZXZlZCksCi0tICAgbmtleXMoXCV1dGY4aGFzaCksCi0tICAgInNjYWxhciBrZXlz IFwle1wkcmV0cmlldmVkfSAobmtleXM9JG5rKSIpOwotKyAgICBua2V5cyhcJXV0ZjhoYXNoKSwK LSsgICAgInNjYWxhciBrZXlzIFwle1wkcmV0cmlldmVkfSAobmtleXM9JG5rKSIpOwotIGZvciBt eSAkayAoc29ydCBrZXlzICUkcmV0cmlldmVkKXsKLSAgICAgaXMoJHV0ZjhoYXNoeyRrfSwgJHJl dHJpZXZlZC0+eyRrfSwgIm5zdG9yZWQgaXRlbSBjaHIoJHV0ZjhoYXNoeyRrfSkiKTsKLSB9Ci1A QCAtOTQsOCArODgsOCBAQCB1bmxpbmsgJHN0b3JhZ2U7Ci0gb2soKHN0b3JlIFwldXRmOGhhc2gs ICRzdG9yYWdlKSwgInN0b3JlIHRvICRzdG9yYWdlIik7Ci0gb2soKCRyZXRyaWV2ZWQgPSByZXRy aWV2ZSgkc3RvcmFnZSkpLCAicmV0cmlldmUgZnJvbSAkc3RvcmFnZSIpOwotIGlzKCRuayA9IG5r ZXlzKCRyZXRyaWV2ZWQpLAotLSAgIG5rZXlzKFwldXRmOGhhc2gpLAotLSAgICJzY2FsYXIga2V5 cyBcJXtcJHJldHJpZXZlZH0gKG5rZXlzPSRuaykiKTsKLSsgICAgbmtleXMoXCV1dGY4aGFzaCks Ci0rICAgICJzY2FsYXIga2V5cyBcJXtcJHJldHJpZXZlZH0gKG5rZXlzPSRuaykiKTsKLSBmb3Ig bXkgJGsgKHNvcnQga2V5cyAlJHJldHJpZXZlZCl7Ci0gICAgIGlzKCR1dGY4aGFzaHska30sICRy ZXRyaWV2ZWQtPnska30sICJzdG9yZWQgaXRlbSBjaHIoJHV0ZjhoYXNoeyRrfSkiKTsKLSB9Ci1A QCAtMTA2LDcgKzEwMCw3IEBAICRERUJVR01FIG9yIHVubGluayAkc3RvcmFnZTsKLSBwYWNrYWdl IEhhc2hfVGVzdDsKLSAKLSBzdWIgbWVfc2Vjb25kIHsKLS0gIHJldHVybiAodW5kZWYsICRfWzBd KTsKLSsgICAgcmV0dXJuICh1bmRlZiwgJF9bMF0pOwotIH0KLSAKLSBwYWNrYWdlIG1haW47Ci1A QCAtMTE4LDE1ICsxMTIsMTUgQEAgY2hvcCAkdXRmODsKLSBteSAkYnlwYXNzID0gMDsKLSAKLSBz dWIgY2xhc3NfdGVzdCB7Ci0tICBteSAoJG9iamVjdCwgJHBhY2thZ2UpID0gQF87Ci0tICB1bmxl c3MgKCRwYWNrYWdlKSB7Ci0tICAgIGlzIHJlZiAkb2JqZWN0LCAnSEFTSCcsICIkb2JqZWN0IGlz IHVuYmxlc3NlZCI7Ci0tICAgIHJldHVybjsKLS0gIH0KLS0gIGlzYV9vayAoJG9iamVjdCwgJHBh Y2thZ2UpOwotLSAgbXkgKCRnYXJiYWdlLCAkY29weSkgPSBldmFsIHskb2JqZWN0LT5tZV9zZWNv bmR9OwotLSAgaXMgJEAsICIiLCAiY2hlY2sgaXQgaGFzIGNvcnJlY3QgbWV0aG9kIjsKLS0gIGNt cF9vayAkY29weSwgJz09JywgJG9iamVjdCwgImFuZCB0aGF0IGl0IHJldHVybnMgdGhlIHNhbWUg b2JqZWN0IjsKLSsgICAgbXkgKCRvYmplY3QsICRwYWNrYWdlKSA9IEBfOwotKyAgICB1bmxlc3Mg KCRwYWNrYWdlKSB7Ci0rICAgICAgICBpcyByZWYgJG9iamVjdCwgJ0hBU0gnLCAiJG9iamVjdCBp cyB1bmJsZXNzZWQiOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rICAgIGlzYV9vayAoJG9i amVjdCwgJHBhY2thZ2UpOwotKyAgICBteSAoJGdhcmJhZ2UsICRjb3B5KSA9IGV2YWwgeyRvYmpl Y3QtPm1lX3NlY29uZH07Ci0rICAgIGlzICRALCAiIiwgImNoZWNrIGl0IGhhcyBjb3JyZWN0IG1l dGhvZCI7Ci0rICAgIGNtcF9vayAkY29weSwgJz09JywgJG9iamVjdCwgImFuZCB0aGF0IGl0IHJl dHVybnMgdGhlIHNhbWUgb2JqZWN0IjsKLSB9Ci0gCi0gIyBUaGFua3MgdG8gRGFuIEtvZ2FpIGZv ciB0aGUgS2FuamkgZm9yICJjYXN0bGUiICh3aGljaCBoZSBpbmZvcm1zIG1lIGFsc28KLUBAIC0x MzQsNjUgKzEyOCw2NSBAQCBzdWIgY2xhc3NfdGVzdCB7Ci0gbXkgJWhhc2ggPSAobWFwIHskXywg JF99ICdjYXN0bGUnLCAiY2hceGU1dGVhdSIsICR1dGY4LCAiXHh7NTdDRX0iKTsKLSAKLSBmb3Ig bXkgJHBhY2thZ2UgKCcnLCAnSGFzaF9UZXN0JykgewotLSAgIyBSdW4gdGhyb3VnaCBhbmQgc2Fu aXR5IGNoZWNrIHRoZXNlLgotLSAgaWYgKCRwYWNrYWdlKSB7Ci0tICAgIGJsZXNzIFwlaGFzaCwg JHBhY2thZ2U7Ci0tICB9Ci0tICBmb3IgKGtleXMgJWhhc2gpIHsKLS0gICAgbXkgJGwgPSAwICsg L15cdyskLzsKLS0gICAgbXkgJHIgPSAwICsgJGhhc2h7JF99ID1+IC9eXHcrJC87Ci0tICAgIGNt cF9vayAoJGwsICc9PScsICRyKTsKLS0gIH0KLS0KLS0gICMgR3JyLiBUaGlzIGNwZXJsIG1vZGUg dGhpbmtzIHRoYXQgJHsgaXMgYSBwdW5jdHVhdGlvbiB2YXJpYWJsZS4KLS0gICMgSSBwcmVzdW1l IGl0J3MgcHVuaXNobWVudCBmb3IgdXNpbmcgeGVtYWNzIHJhdGhlciB0aGFuIGVtYWNzLiBPciBP Uy8yIDotKQotLSAgbXkgJGNvcHkgPSAkYnlwYXNzID8gXCVoYXNoIDogJHt0aGF3IGZyZWV6ZSBc XCVoYXNofTsKLS0gIGNsYXNzX3Rlc3QgKCRjb3B5LCAkcGFja2FnZSk7Ci0tCi0tICBmb3IgKGtl eXMgJSRjb3B5KSB7Ci0tICAgIG15ICRsID0gMCArIC9eXHcrJC87Ci0tICAgIG15ICRyID0gMCAr ICRjb3B5LT57JF99ID1+IC9eXHcrJC87Ci0tICAgIGNtcF9vayAoJGwsICc9PScsICRyLCBzcHJp bnRmICJrZXkgbGVuZ3RoICVkIiwgbGVuZ3RoICRfKTsKLS0gIH0KLS0KLS0KLS0gIG15ICRieXRl cyA9IG15ICRjaGFyID0gY2hyIDI3MTgyOwotLSAgdXRmODo6ZW5jb2RlICgkYnl0ZXMpOwotLQot LSAgbXkgJG9yaWcgPSB7JGNoYXIgPT4gMX07Ci0tICBpZiAoJHBhY2thZ2UpIHsKLS0gICAgYmxl c3MgJG9yaWcsICRwYWNrYWdlOwotLSAgfQotLSAgbXkgJGp1c3RfdXRmOCA9ICRieXBhc3MgPyAk b3JpZyA6ICR7dGhhdyBmcmVlemUgXCRvcmlnfTsKLS0gIGNsYXNzX3Rlc3QgKCRqdXN0X3V0Zjgs ICRwYWNrYWdlKTsKLS0gIGNtcF9vayAoc2NhbGFyIGtleXMgJSRqdXN0X3V0ZjgsICc9PScsIDEs ICIxIGtleSBpbiB1dGY4PyIpOwotLSAgY21wX29rICgkanVzdF91dGY4LT57JGNoYXJ9LCAnPT0n LCAxLCAidXRmOCBrZXkgcHJlc2VudD8iKTsKLS0gIG9rICghZXhpc3RzICRqdXN0X3V0ZjgtPnsk Ynl0ZXN9LCAiYnl0ZXMga2V5IGFic2VudD8iKTsKLS0KLS0gICRvcmlnID0geyRieXRlcyA9PiAx fTsKLS0gIGlmICgkcGFja2FnZSkgewotLSAgICBibGVzcyAkb3JpZywgJHBhY2thZ2U7Ci0tICB9 Ci0tICBteSAkanVzdF9ieXRlcyA9ICRieXBhc3MgPyAkb3JpZyA6ICR7dGhhdyBmcmVlemUgXCRv cmlnfTsKLS0gIGNsYXNzX3Rlc3QgKCRqdXN0X2J5dGVzLCAkcGFja2FnZSk7Ci0tCi0tICBjbXBf b2sgKHNjYWxhciBrZXlzICUkanVzdF9ieXRlcywgJz09JywgMSwgIjEga2V5IGluIGJ5dGVzPyIp OwotLSAgY21wX29rICgkanVzdF9ieXRlcy0+eyRieXRlc30sICc9PScsIDEsICJieXRlcyBrZXkg cHJlc2VudD8iKTsKLS0gIG9rICghZXhpc3RzICRqdXN0X2J5dGVzLT57JGNoYXJ9LCAidXRmOCBr ZXkgYWJzZW50PyIpOwotLQotLSAgZGllIHNwcmludGYgIkJvdGggaGF2ZSBsZW5ndGggJWQsIHdo aWNoIGlzIGNyYXp5IiwgbGVuZ3RoICRjaGFyCi0tICAgIGlmIGxlbmd0aCAkY2hhciA9PSBsZW5n dGggJGJ5dGVzOwotLQotLSAgJG9yaWcgPSB7JGJ5dGVzID0+IGxlbmd0aCAkYnl0ZXMsICRjaGFy ID0+IGxlbmd0aCAkY2hhcn07Ci0tICBpZiAoJHBhY2thZ2UpIHsKLS0gICAgYmxlc3MgJG9yaWcs ICRwYWNrYWdlOwotLSAgfQotLSAgbXkgJGJvdGggPSAkYnlwYXNzID8gJG9yaWcgOiAke3RoYXcg ZnJlZXplIFwkb3JpZ307Ci0tICBjbGFzc190ZXN0ICgkYm90aCwgJHBhY2thZ2UpOwotLQotLSAg Y21wX29rIChzY2FsYXIga2V5cyAlJGJvdGgsICc9PScsIDIsICIyIGtleXM/Iik7Ci0tICBjbXBf b2sgKCRib3RoLT57JGJ5dGVzfSwgJz09JywgbGVuZ3RoICRieXRlcywgImJ5dGVzIGtleSBwcmVz ZW50PyIpOwotLSAgY21wX29rICgkYm90aC0+eyRjaGFyfSwgJz09JywgbGVuZ3RoICRjaGFyLCAi dXRmOCBrZXkgcHJlc2VudD8iKTsKLSsgICAgIyBSdW4gdGhyb3VnaCBhbmQgc2FuaXR5IGNoZWNr IHRoZXNlLgotKyAgICBpZiAoJHBhY2thZ2UpIHsKLSsgICAgICAgIGJsZXNzIFwlaGFzaCwgJHBh Y2thZ2U7Ci0rICAgIH0KLSsgICAgZm9yIChrZXlzICVoYXNoKSB7Ci0rICAgICAgICBteSAkbCA9 IDAgKyAvXlx3KyQvOwotKyAgICAgICAgbXkgJHIgPSAwICsgJGhhc2h7JF99ID1+IC9eXHcrJC87 Ci0rICAgICAgICBjbXBfb2sgKCRsLCAnPT0nLCAkcik7Ci0rICAgIH0KLSsKLSsgICAgIyBHcnIu IFRoaXMgY3BlcmwgbW9kZSB0aGlua3MgdGhhdCAkeyBpcyBhIHB1bmN0dWF0aW9uIHZhcmlhYmxl LgotKyAgICAjIEkgcHJlc3VtZSBpdCdzIHB1bmlzaG1lbnQgZm9yIHVzaW5nIHhlbWFjcyByYXRo ZXIgdGhhbiBlbWFjcy4gT3IgT1MvMiA6LSkKLSsgICAgbXkgJGNvcHkgPSAkYnlwYXNzID8gXCVo YXNoIDogJHt0aGF3IGZyZWV6ZSBcXCVoYXNofTsKLSsgICAgY2xhc3NfdGVzdCAoJGNvcHksICRw YWNrYWdlKTsKLSsKLSsgICAgZm9yIChrZXlzICUkY29weSkgewotKyAgICAgICAgbXkgJGwgPSAw ICsgL15cdyskLzsKLSsgICAgICAgIG15ICRyID0gMCArICRjb3B5LT57JF99ID1+IC9eXHcrJC87 Ci0rICAgICAgICBjbXBfb2sgKCRsLCAnPT0nLCAkciwgc3ByaW50ZiAia2V5IGxlbmd0aCAlZCIs IGxlbmd0aCAkXyk7Ci0rICAgIH0KLSsKLSsKLSsgICAgbXkgJGJ5dGVzID0gbXkgJGNoYXIgPSBj aHIgMjcxODI7Ci0rICAgIHV0Zjg6OmVuY29kZSAoJGJ5dGVzKTsKLSsKLSsgICAgbXkgJG9yaWcg PSB7JGNoYXIgPT4gMX07Ci0rICAgIGlmICgkcGFja2FnZSkgewotKyAgICAgICAgYmxlc3MgJG9y aWcsICRwYWNrYWdlOwotKyAgICB9Ci0rICAgIG15ICRqdXN0X3V0ZjggPSAkYnlwYXNzID8gJG9y aWcgOiAke3RoYXcgZnJlZXplIFwkb3JpZ307Ci0rICAgIGNsYXNzX3Rlc3QgKCRqdXN0X3V0Zjgs ICRwYWNrYWdlKTsKLSsgICAgY21wX29rIChzY2FsYXIga2V5cyAlJGp1c3RfdXRmOCwgJz09Jywg MSwgIjEga2V5IGluIHV0Zjg/Iik7Ci0rICAgIGNtcF9vayAoJGp1c3RfdXRmOC0+eyRjaGFyfSwg Jz09JywgMSwgInV0Zjgga2V5IHByZXNlbnQ/Iik7Ci0rICAgIG9rICghZXhpc3RzICRqdXN0X3V0 ZjgtPnskYnl0ZXN9LCAiYnl0ZXMga2V5IGFic2VudD8iKTsKLSsKLSsgICAgJG9yaWcgPSB7JGJ5 dGVzID0+IDF9OwotKyAgICBpZiAoJHBhY2thZ2UpIHsKLSsgICAgICAgIGJsZXNzICRvcmlnLCAk cGFja2FnZTsKLSsgICAgfQotKyAgICBteSAkanVzdF9ieXRlcyA9ICRieXBhc3MgPyAkb3JpZyA6 ICR7dGhhdyBmcmVlemUgXCRvcmlnfTsKLSsgICAgY2xhc3NfdGVzdCAoJGp1c3RfYnl0ZXMsICRw YWNrYWdlKTsKLSsKLSsgICAgY21wX29rIChzY2FsYXIga2V5cyAlJGp1c3RfYnl0ZXMsICc9PScs IDEsICIxIGtleSBpbiBieXRlcz8iKTsKLSsgICAgY21wX29rICgkanVzdF9ieXRlcy0+eyRieXRl c30sICc9PScsIDEsICJieXRlcyBrZXkgcHJlc2VudD8iKTsKLSsgICAgb2sgKCFleGlzdHMgJGp1 c3RfYnl0ZXMtPnskY2hhcn0sICJ1dGY4IGtleSBhYnNlbnQ/Iik7Ci0rCi0rICAgIGRpZSBzcHJp bnRmICJCb3RoIGhhdmUgbGVuZ3RoICVkLCB3aGljaCBpcyBjcmF6eSIsIGxlbmd0aCAkY2hhcgot KyAgICAgICAgaWYgbGVuZ3RoICRjaGFyID09IGxlbmd0aCAkYnl0ZXM7Ci0rCi0rICAgICRvcmln ID0geyRieXRlcyA9PiBsZW5ndGggJGJ5dGVzLCAkY2hhciA9PiBsZW5ndGggJGNoYXJ9OwotKyAg ICBpZiAoJHBhY2thZ2UpIHsKLSsgICAgICAgIGJsZXNzICRvcmlnLCAkcGFja2FnZTsKLSsgICAg fQotKyAgICBteSAkYm90aCA9ICRieXBhc3MgPyAkb3JpZyA6ICR7dGhhdyBmcmVlemUgXCRvcmln fTsKLSsgICAgY2xhc3NfdGVzdCAoJGJvdGgsICRwYWNrYWdlKTsKLSsKLSsgICAgY21wX29rIChz Y2FsYXIga2V5cyAlJGJvdGgsICc9PScsIDIsICIyIGtleXM/Iik7Ci0rICAgIGNtcF9vayAoJGJv dGgtPnskYnl0ZXN9LCAnPT0nLCBsZW5ndGggJGJ5dGVzLCAiYnl0ZXMga2V5IHByZXNlbnQ/Iik7 Ci0rICAgIGNtcF9vayAoJGJvdGgtPnskY2hhcn0sICc9PScsIGxlbmd0aCAkY2hhciwgInV0Zjgg a2V5IHByZXNlbnQ/Iik7Ci0gfQotIAotIH0KLWRpZmYgLS1naXQgYS90L3dlYWsudCBiL3Qvd2Vh ay50Ci1pbmRleCA0ODc1MmZiLi5lNmNkZTY1IDEwMDY0NAotLS0tIGEvdC93ZWFrLnQKLSsrKyBi L3Qvd2Vhay50Ci1AQCAtNiw0MiArNiw0MCBAQAotICMgIGluIHRoZSBSRUFETUUgZmlsZSB0aGF0 IGNvbWVzIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAjCi0gCi0rdXNlIHN0cmljdDsKLSt1c2Ug d2FybmluZ3M7Ci0rCi0rdXNlIENvbmZpZzsKLSBzdWIgQkVHSU4gewotLSAgIyBUaGlzIGxldHMg dXMgZGlzdHJpYnV0ZSBUZXN0OjpNb3JlIGluIHQvCi0tICB1bnNoaWZ0IEBJTkMsICd0JzsKLS0g IHVuc2hpZnQgQElOQywgJ3QvY29tcGF0JyBpZiAkXSA8IDUuMDA2MDAyOwotLSAgcmVxdWlyZSBD b25maWc7IGltcG9ydCBDb25maWc7Ci0tICBpZiAoJEVOVntQRVJMX0NPUkV9IGFuZCAkQ29uZmln eydleHRlbnNpb25zJ30gIX4gL1xiU3RvcmFibGVcYi8pIHsKLS0gICAgcHJpbnQgIjEuLjAgIyBT a2lwOiBTdG9yYWJsZSB3YXMgbm90IGJ1aWx0XG4iOwotLSAgICBleGl0IDA7Ci0tICB9Ci0tICBp ZiAoJENvbmZpZ3tleHRlbnNpb25zfSAhfiAvXGJMaXN0XC9VdGlsXGIvKSB7Ci0tICAgIHByaW50 ICIxLi4wICMgU2tpcDogTGlzdDo6VXRpbCB3YXMgbm90IGJ1aWx0XG4iOwotLSAgICBleGl0IDA7 Ci0tICB9Ci0tCi0tICByZXF1aXJlIFNjYWxhcjo6VXRpbDsKLS0gIFNjYWxhcjo6VXRpbC0+aW1w b3J0KHF3KHdlYWtlbiBpc3dlYWspKTsKLS0gIGlmIChncmVwIHsgL3dlYWtlbi8gfSBAU2NhbGFy OjpVdGlsOjpFWFBPUlRfRkFJTCkgewotLSAgICBwcmludCgiMS4uMCAjIFNraXA6IE5vIHN1cHBv cnQgZm9yIHdlYWtlbiBpbiBTY2FsYXI6OlV0aWxcbiIpOwotLSAgICBleGl0IDA7Ci0tICB9Ci0r ICAgIGlmICgkQ29uZmlne2V4dGVuc2lvbnN9ICF+IC9cYkxpc3RcL1V0aWxcYi8pIHsKLSsgICAg ICAgIHByaW50ICIxLi4wICMgU2tpcDogTGlzdDo6VXRpbCB3YXMgbm90IGJ1aWx0XG4iOwotKyAg ICAgICAgZXhpdCAwOwotKyAgICB9Ci0rCi0rICAgIHJlcXVpcmUgU2NhbGFyOjpVdGlsOwotKyAg ICBTY2FsYXI6OlV0aWwtPmltcG9ydChxdyh3ZWFrZW4gaXN3ZWFrKSk7Ci0rICAgIGlmIChncmVw IHsgL3dlYWtlbi8gfSBAU2NhbGFyOjpVdGlsOjpFWFBPUlRfRkFJTCkgewotKyAgICAgICAgcHJp bnQoIjEuLjAgIyBTa2lwOiBObyBzdXBwb3J0IGZvciB3ZWFrZW4gaW4gU2NhbGFyOjpVdGlsXG4i KTsKLSsgICAgICAgIGV4aXQgMDsKLSsgICAgfQotK30KLSsKLStCRUdJTiB7Ci0rICAgIHVuc2hp ZnQgQElOQywgJ3QvbGliJzsKLSB9Ci0gCi0gdXNlIFRlc3Q6Ok1vcmUgJ25vX3BsYW4nOwotIHVz ZSBTdG9yYWJsZSBxdyAoc3RvcmUgcmV0cmlldmUgZnJlZXplIHRoYXcgbnN0b3JlIG5mcmVlemUg ZGNsb25lKTsKLS1yZXF1aXJlICd0ZXN0bGliLnBsJzsKLS1vdXIgJGZpbGU7Ci0tdXNlIHN0cmlj dDsKLSt1c2UgU1RUZXN0TGliIHF3KHdyaXRlX2FuZF9yZXRyaWV2ZSB0ZW1wZmlsZW5hbWUgc2x1 cnApOwotIAotICMgJFN0b3JhYmxlOjpmbGFncyA9IFN0b3JhYmxlOjpGTEFHU19DT01QQVQ7Ci0g Ci0gc3ViIHRlc3RlciB7Ci0tICBteSAoJGNvbnRlbnRzLCAkc3ViLCAkdGVzdGVyc3ViLCAkd2hh dCkgPSBAXzsKLS0gICMgVGVzdCB0aGF0IGlmIHdlIHJlLXdyaXRlIGl0LCBldmVyeXRoaW5nIHN0 aWxsIHdvcmtzOgotLSAgbXkgJGNsb25lID0gJiRzdWIgKCRjb250ZW50cyk7Ci0tICBpcyAoJEAs ICIiLCAiVGhlcmUgc2hvdWxkIGJlIG5vIGVycm9yIGV4dHJhY3RpbmcgZm9yICR3aGF0Iik7Ci0t ICAmJHRlc3RlcnN1YiAoJGNsb25lLCAkd2hhdCk7Ci0rICAgIG15ICgkY29udGVudHMsICRzdWIs ICR0ZXN0ZXJzdWIsICR3aGF0KSA9IEBfOwotKyAgICAjIFRlc3QgdGhhdCBpZiB3ZSByZS13cml0 ZSBpdCwgZXZlcnl0aGluZyBzdGlsbCB3b3JrczoKLSsgICAgbXkgJGNsb25lID0gJiRzdWIgKCRj b250ZW50cyk7Ci0rICAgIGlzICgkQCwgIiIsICJUaGVyZSBzaG91bGQgYmUgbm8gZXJyb3IgZXh0 cmFjdGluZyBmb3IgJHdoYXQiKTsKLSsgICAgJiR0ZXN0ZXJzdWIgKCRjbG9uZSwgJHdoYXQpOwot IH0KLSAKLSBteSAkciA9IHt9OwotQEAgLTYwLDcgKzU4LDcgQEAgb2sgKGlzd2Vhaygkdy0+WzBd KSwgImVsZW1lbnQgMCBpcyBhIHdlYWsgcmVmZXJlbmNlIik7Ci0gcGFja2FnZSBPVkVSTE9BREVE OwotIAotIHVzZSBvdmVybG9hZAotLQknIiInID0+IHN1YiB7ICRfWzBdWzBdIH07Ci0rICAgICci IicgPT4gc3ViIHsgJF9bMF1bMF0gfTsKLSAKLSBwYWNrYWdlIG1haW47Ci0gCi1AQCAtNzEsNzcg KzY5LDgzIEBAIHdlYWtlbiAkby0+WzBdOwotIG9rIChpc3dlYWsoJG8tPlswXSksICJlbGVtZW50 IDAgaXMgYSB3ZWFrIHJlZmVyZW5jZSIpOwotIAotIG15IEB0ZXN0cyA9ICgKLS1bJHMxLAotLSBz dWIgIHsKLS0gIG15ICgkY2xvbmUsICR3aGF0KSA9IEBfOwotLSAgaXNhX29rKCRjbG9uZSwnQVJS QVknKTsKLS0gIGlzYV9vaygkY2xvbmUtPlswXSwnSEFTSCcpOwotLSAgaXNhX29rKCRjbG9uZS0+ WzFdLCdIQVNIJyk7Ci0tICBvayghaXN3ZWFrICRjbG9uZS0+WzBdLCAiRWxlbWVudCAwIGlzbid0 IHdlYWsiKTsKLS0gIG9rKGlzd2VhayAkY2xvbmUtPlsxXSwgIkVsZW1lbnQgMSBpcyB3ZWFrIik7 Ci0tfQotLV0sCi0tIyBUaGUgd2VhayByZWZlcmVuY2UgbmVlZHMgdG8gaGFuZyBhcm91bmQgbG9u ZyBlbm91Z2ggZm9yIG90aGVyIHN0dWZmIHRvCi0tIyBiZSBhYmxlIHRvIG1ha2UgcmVmZXJlbmNl cyB0byBpdC4gU28gdHJ5IGl0IHNlY29uZC4KLS1bJHMwLAotLSBzdWIgIHsKLS0gIG15ICgkY2xv bmUsICR3aGF0KSA9IEBfOwotLSAgaXNhX29rKCRjbG9uZSwnQVJSQVknKTsKLS0gIGlzYV9vaygk Y2xvbmUtPlswXSwnSEFTSCcpOwotLSAgaXNhX29rKCRjbG9uZS0+WzFdLCdIQVNIJyk7Ci0tICBv ayhpc3dlYWsgJGNsb25lLT5bMF0sICJFbGVtZW50IDAgaXMgd2VhayIpOwotLSAgb2soIWlzd2Vh ayAkY2xvbmUtPlsxXSwgIkVsZW1lbnQgMSBpc24ndCB3ZWFrIik7Ci0tfQotLV0sCi0tWyR3LAot LSBzdWIgIHsKLS0gIG15ICgkY2xvbmUsICR3aGF0KSA9IEBfOwotLSAgaXNhX29rKCRjbG9uZSwn QVJSQVknKTsKLS0gIGlmICgkd2hhdCBlcSAnbm90aGluZycpIHsKLS0gICAgIyBXZSdyZSB0aGUg b3JpZ2luYWwsIHNvIHdlJ3JlIHN0aWxsIGEgd2Vha3JlZiB0byBhIGhhc2gKLS0gICAgaXNhX29r KCRjbG9uZS0+WzBdLCdIQVNIJyk7Ci0tICAgIG9rKGlzd2VhayAkY2xvbmUtPlswXSwgIkVsZW1l bnQgMCBpcyB3ZWFrIik7Ci0tICB9IGVsc2UgewotLSAgICBpcygkY2xvbmUtPlswXSx1bmRlZik7 Ci0tICB9Ci0tfQotLV0sCi0tWyRvLAotLXN1YiB7Ci0tICBteSAoJGNsb25lLCAkd2hhdCkgPSBA XzsKLS0gIGlzYV9vaygkY2xvbmUsJ0FSUkFZJyk7Ci0tICBpc2Ffb2soJGNsb25lLT5bMF0sJ09W RVJMT0FERUQnKTsKLS0gIGlzYV9vaygkY2xvbmUtPlsxXSwnT1ZFUkxPQURFRCcpOwotLSAgb2so aXN3ZWFrICRjbG9uZS0+WzBdLCAiRWxlbWVudCAwIGlzIHdlYWsiKTsKLS0gIG9rKCFpc3dlYWsg JGNsb25lLT5bMV0sICJFbGVtZW50IDEgaXNuJ3Qgd2VhayIpOwotLSAgaXMgKCIkY2xvbmUtPlsw XSIsIDc3LCAiRWxlbWVudCAwIHN0cmluZ2lmaWVzIHRvIDc3Iik7Ci0tICBpcyAoIiRjbG9uZS0+ WzFdIiwgNzcsICJFbGVtZW50IDEgc3RyaW5naWZpZXMgdG8gNzciKTsKLS19Ci0tXSwKLSsgICAg WwotKyAgICAgICAgJHMxLAotKyAgICAgICAgc3ViIHsKLSsgICAgICAgICAgICBteSAoJGNsb25l LCAkd2hhdCkgPSBAXzsKLSsgICAgICAgICAgICBpc2Ffb2soJGNsb25lLCdBUlJBWScpOwotKyAg ICAgICAgICAgIGlzYV9vaygkY2xvbmUtPlswXSwnSEFTSCcpOwotKyAgICAgICAgICAgIGlzYV9v aygkY2xvbmUtPlsxXSwnSEFTSCcpOwotKyAgICAgICAgICAgIG9rKCFpc3dlYWsgJGNsb25lLT5b MF0sICJFbGVtZW50IDAgaXNuJ3Qgd2VhayIpOwotKyAgICAgICAgICAgIG9rKGlzd2VhayAkY2xv bmUtPlsxXSwgIkVsZW1lbnQgMSBpcyB3ZWFrIik7Ci0rICAgICAgICB9Ci0rICAgIF0sCi0rICAg ICMgVGhlIHdlYWsgcmVmZXJlbmNlIG5lZWRzIHRvIGhhbmcgYXJvdW5kIGxvbmcgZW5vdWdoIGZv ciBvdGhlciBzdHVmZiB0bwotKyAgICAjIGJlIGFibGUgdG8gbWFrZSByZWZlcmVuY2VzIHRvIGl0 LiBTbyB0cnkgaXQgc2Vjb25kLgotKyAgICBbCi0rICAgICAgICAkczAsCi0rICAgICAgICBzdWIg ewotKyAgICAgICAgICAgIG15ICgkY2xvbmUsICR3aGF0KSA9IEBfOwotKyAgICAgICAgICAgIGlz YV9vaygkY2xvbmUsJ0FSUkFZJyk7Ci0rICAgICAgICAgICAgaXNhX29rKCRjbG9uZS0+WzBdLCdI QVNIJyk7Ci0rICAgICAgICAgICAgaXNhX29rKCRjbG9uZS0+WzFdLCdIQVNIJyk7Ci0rICAgICAg ICAgICAgb2soaXN3ZWFrICRjbG9uZS0+WzBdLCAiRWxlbWVudCAwIGlzIHdlYWsiKTsKLSsgICAg ICAgICAgICBvayghaXN3ZWFrICRjbG9uZS0+WzFdLCAiRWxlbWVudCAxIGlzbid0IHdlYWsiKTsK LSsgICAgICAgIH0KLSsgICAgXSwKLSsgICAgWwotKyAgICAgICAgJHcsCi0rICAgICAgICBzdWIg ewotKyAgICAgICAgICAgIG15ICgkY2xvbmUsICR3aGF0KSA9IEBfOwotKyAgICAgICAgICAgIGlz YV9vaygkY2xvbmUsJ0FSUkFZJyk7Ci0rICAgICAgICAgICAgaWYgKCR3aGF0IGVxICdub3RoaW5n JykgewotKyAgICAgICAgICAgICAgICAjIFdlJ3JlIHRoZSBvcmlnaW5hbCwgc28gd2UncmUgc3Rp bGwgYSB3ZWFrcmVmIHRvIGEgaGFzaAotKyAgICAgICAgICAgICAgICBpc2Ffb2soJGNsb25lLT5b MF0sJ0hBU0gnKTsKLSsgICAgICAgICAgICAgICAgb2soaXN3ZWFrICRjbG9uZS0+WzBdLCAiRWxl bWVudCAwIGlzIHdlYWsiKTsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAg ICBpcygkY2xvbmUtPlswXSx1bmRlZik7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAg ICBdLAotKyAgICBbCi0rICAgICAgICAkbywKLSsgICAgICAgIHN1YiB7Ci0rICAgICAgICAgICAg bXkgKCRjbG9uZSwgJHdoYXQpID0gQF87Ci0rICAgICAgICAgICAgaXNhX29rKCRjbG9uZSwnQVJS QVknKTsKLSsgICAgICAgICAgICBpc2Ffb2soJGNsb25lLT5bMF0sJ09WRVJMT0FERUQnKTsKLSsg ICAgICAgICAgICBpc2Ffb2soJGNsb25lLT5bMV0sJ09WRVJMT0FERUQnKTsKLSsgICAgICAgICAg ICBvayhpc3dlYWsgJGNsb25lLT5bMF0sICJFbGVtZW50IDAgaXMgd2VhayIpOwotKyAgICAgICAg ICAgIG9rKCFpc3dlYWsgJGNsb25lLT5bMV0sICJFbGVtZW50IDEgaXNuJ3Qgd2VhayIpOwotKyAg ICAgICAgICAgIGlzICgiJGNsb25lLT5bMF0iLCA3NywgIkVsZW1lbnQgMCBzdHJpbmdpZmllcyB0 byA3NyIpOwotKyAgICAgICAgICAgIGlzICgiJGNsb25lLT5bMV0iLCA3NywgIkVsZW1lbnQgMSBz dHJpbmdpZmllcyB0byA3NyIpOwotKyAgICAgICAgfQotKyAgICBdLAotICk7Ci0gCi0gZm9yZWFj aCAoQHRlc3RzKSB7Ci0tICBteSAoJGlucHV0LCAkdGVzdHN1YikgPSBAJF87Ci0rICAgIG15ICgk aW5wdXQsICR0ZXN0c3ViKSA9IEAkXzsKLSsKLSsgICAgdGVzdGVyKCRpbnB1dCwgc3ViIHtyZXR1 cm4gc2hpZnR9LCAkdGVzdHN1YiwgJ25vdGhpbmcnKTsKLSAKLS0gIHRlc3RlcigkaW5wdXQsIHN1 YiB7cmV0dXJuIHNoaWZ0fSwgJHRlc3RzdWIsICdub3RoaW5nJyk7Ci0rICAgIG15ICRmaWxlID0g dGVtcGZpbGVuYW1lKCk7Ci0gCi0tICBvayAoZGVmaW5lZCBzdG9yZSgkaW5wdXQsICRmaWxlKSk7 Ci0rICAgIG9rIChkZWZpbmVkIHN0b3JlKCRpbnB1dCwgJGZpbGUpKTsKLSAKLS0gICMgUmVhZCB0 aGUgY29udGVudHMgaW50byBtZW1vcnk6Ci0tICBteSAkY29udGVudHMgPSBzbHVycCAoJGZpbGUp OwotKyAgICAjIFJlYWQgdGhlIGNvbnRlbnRzIGludG8gbWVtb3J5OgotKyAgICBteSAkY29udGVu dHMgPSBzbHVycCAoJGZpbGUpOwotIAotLSAgdGVzdGVyKCRjb250ZW50cywgXCZzdG9yZV9hbmRf cmV0cmlldmUsICR0ZXN0c3ViLCAnZmlsZScpOwotKyAgICB0ZXN0ZXIoJGNvbnRlbnRzLCBcJndy aXRlX2FuZF9yZXRyaWV2ZSwgJHRlc3RzdWIsICdmaWxlJyk7Ci0gCi0tICAjIEFuZCBub3cgdHJ5 IGFsbW9zdCBldmVyeXRoaW5nIGFnYWluIHdpdGggYSBTdG9yYWJsZSBzdHJpbmcKLS0gIG15ICRz dG9yZWQgPSBmcmVlemUgJGlucHV0OwotLSAgdGVzdGVyKCRzdG9yZWQsIFwmZnJlZXplX2FuZF90 aGF3LCAkdGVzdHN1YiwgJ3N0cmluZycpOwotKyAgICAjIEFuZCBub3cgdHJ5IGFsbW9zdCBldmVy eXRoaW5nIGFnYWluIHdpdGggYSBTdG9yYWJsZSBzdHJpbmcKLSsgICAgbXkgJHN0b3JlZCA9IGZy ZWV6ZSAkaW5wdXQ7Ci0rICAgIHRlc3Rlcigkc3RvcmVkLCBzdWIgeyBldmFsIHsgdGhhdyAkX1sw XSB9IH0sICR0ZXN0c3ViLCAnc3RyaW5nJyk7Ci0gCi0tICBvayAoZGVmaW5lZCBuc3RvcmUoJGlu cHV0LCAkZmlsZSkpOwotKyAgICBvayAoZGVmaW5lZCBuc3RvcmUoJGlucHV0LCAkZmlsZSkpOwot IAotLSAgdGVzdGVyKCRjb250ZW50cywgXCZzdG9yZV9hbmRfcmV0cmlldmUsICR0ZXN0c3ViLCAn bmV0d29yayBmaWxlJyk7Ci0rICAgIHRlc3RlcigkY29udGVudHMsIFwmd3JpdGVfYW5kX3JldHJp ZXZlLCAkdGVzdHN1YiwgJ25ldHdvcmsgZmlsZScpOwotIAotLSAgJHN0b3JlZCA9IG5mcmVlemUg JGlucHV0OwotLSAgdGVzdGVyKCRzdG9yZWQsIFwmZnJlZXplX2FuZF90aGF3LCAkdGVzdHN1Yiwg J25ldHdvcmsgc3RyaW5nJyk7Ci0rICAgICRzdG9yZWQgPSBuZnJlZXplICRpbnB1dDsKLSsgICAg dGVzdGVyKCRzdG9yZWQsIHN1YiB7IGV2YWwgeyB0aGF3ICRfWzBdIH0gfSwgJHRlc3RzdWIsICdu ZXR3b3JrIHN0cmluZycpOwotIH0KLSAKLSB7Ci0tLSAKLTIuNDkuMAotCgpkaWZmIC0tZ2l0IGEv cGVybC1TdG9yYWJsZS5zcGVjIGIvcGVybC1TdG9yYWJsZS5zcGVjCmluZGV4IDU5ZjUxYzAuLjMx NTJiYTEgMTAwNjQ0Ci0tLSBhL3BlcmwtU3RvcmFibGUuc3BlYworKysgYi9wZXJsLVN0b3JhYmxl LnNwZWMKQEAgLTEsMTcgKzEsMTMgQEAKLSVnbG9iYWwgYmFzZV92ZXJzaW9uIDMuMjUKKyVnbG9i YWwgYmFzZV92ZXJzaW9uIDMuNDEKIE5hbWU6ICAgICAgICAgICBwZXJsLVN0b3JhYmxlCiBFcG9j aDogICAgICAgICAgMQotVmVyc2lvbjogICAgICAgIDMuMzcKLVJlbGVhc2U6ICAgICAgICA1MjIl ez9kaXN0fQorVmVyc2lvbjogICAgICAgIDMuNDEKK1JlbGVhc2U6ICAgICAgICAxJXs/ZGlzdH0K IFN1bW1hcnk6ICAgICAgICBQZXJzaXN0ZW5jZSBmb3IgUGVybCBkYXRhIHN0cnVjdHVyZXMKICMg U3RvcmFibGUucG06ICBHUEwrIG9yIEFydGlzdGljCiBMaWNlbnNlOiAgICAgICAgR1BMLTEuMC1v ci1sYXRlciBPUiBBcnRpc3RpYy0xLjAtUGVybAogVVJMOiAgICAgICAgICAgIGh0dHBzOi8vbWV0 YWNwYW4ub3JnL3JlbGVhc2UvU3RvcmFibGUKLVNvdXJjZTA6ICAgICAgICBodHRwczovL2NwYW4u bWV0YWNwYW4ub3JnL2F1dGhvcnMvaWQvTi9OVy9OV0NMQVJLL1N0b3JhYmxlLSV7YmFzZV92ZXJz aW9ufS50YXIuZ3oKLSMgVW5idW5kbGVkIGZyb20gcGVybCA1LjM3LjEyCi1QYXRjaDA6ICAgICAg ICAgU3RvcmFibGUtMy4yNS1VcGdyYWRlLXRvLTMuMzIucGF0Y2gKLSMgVW5idW5kbGVkIGZyb20g cGVybCA1LjQyLjAKLVBhdGNoMTogICAgICAgICBTdG9yYWJsZS0zLjMyLVVwZ3JhZGUtdG8tMy4z Ny5wYXRjaAorU291cmNlMDogICAgICAgIGh0dHBzOi8vY3Bhbi5tZXRhY3Bhbi5vcmcvYXV0aG9y cy9pZC9IL0hBL0hBQVJHL1N0b3JhYmxlLSV7YmFzZV92ZXJzaW9ufS50YXIuZ3oKIEJ1aWxkUmVx dWlyZXM6ICBjb3JldXRpbHMKIEJ1aWxkUmVxdWlyZXM6ICBnY2MKIEJ1aWxkUmVxdWlyZXM6ICBt YWtlCkBAIC0xNDUsNiArMTQxLDkgQEAgbWFrZSB0ZXN0CiAle19saWJleGVjZGlyfS8le25hbWV9 CiAKICVjaGFuZ2Vsb2cKKyogTW9uIEp1biAwOCAyMDI2IEppdGthIFBsZXNuaWtvdmEgPGpwbGVz bmlrQHJlZGhhdC5jb20+IC0gMTozLjQxLTEKKy0gMy40MSBidW1wIChyaGJ6IzI0ODU2NjUpCisK ICogU2F0IEphbiAxNyAyMDI2IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVk b3JhcHJvamVjdC5vcmc+IC0gMTozLjM3LTUyMgogLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9y YXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQ0X01hc3NfUmVidWlsZAogCgpkaWZmIC0tZ2l0IGEv c291cmNlcyBiL3NvdXJjZXMKaW5kZXggYzFmZTJjYi4uMDUxMDc5ZSAxMDA2NDQKLS0tIGEvc291 cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBACi1TSEE1MTIgKFN0b3JhYmxlLTMuMjUudGFy Lmd6KSA9IGExZTAzNDIwNjFiYzNmYmUwNGUxMDQxYzk0MDA0YzZkYzJmYmVlMTBhYjQ5OTM5ZmU5 M2ZhODQ2OTY4MjlhYTMyODk2ZTZhZjIzNGEzMzc0M2M2ZWNkOWU1YjBjMmUyYzYyMzQyODIwN2Uw ZjA0ZGMwMWIzMWNhYTg3ZjhkNzNjCitTSEE1MTIgKFN0b3JhYmxlLTMuNDEudGFyLmd6KSA9IDkz MmQyMWY1MTI2OWEwMzViZGI5M2FkMTMyNDkyMTRkNGVlNTAwMTA3ODhiNzFmM2VmYTY1MTFjYWRl NTMyNzZiN2QwNTAxZjE1ZjFjMDE2YjhkNTM5ODQzNTQyMmI1MmZiMzBmZjlkYTMxNDA1NzQxNzZj OWI4ZGFlNzQwZGI1Cg==