From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from loongson.cn (loongson.cn [114.242.206.163]) by mx.groups.io with SMTP id smtpd.web08.6872.1662869844822151146 for ; Sat, 10 Sep 2022 21:17:27 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: loongson.cn, ip: 114.242.206.163, mailfrom: lichao@loongson.cn) Received: from lichao$loongson.cn ( [111.192.2.114] ) by ajax-webmail-localhost.localdomain (Coremail) ; Sun, 11 Sep 2022 12:17:23 +0800 (GMT+08:00) X-Originating-IP: [111.192.2.114] Date: Sun, 11 Sep 2022 12:17:23 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: "Chao Li" To: devel@edk2.groups.io, michael.d.kinney@intel.com Cc: "Gao, Liming" , "Liu, Zhiguang" , "Baoqi Zhang" Subject: Re: [edk2-devel] [PATCH v1 23/34] MdePkg/BaseLib: BaseLib for LOONGARCH64 architecture. X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.14 build 20220411(feba7c69) Copyright (c) 2002-2022 www.mailtech.cn .loongson.cn In-Reply-To: References: <20220908045140.1191676-1-lichao@loongson.cn> X-CM-CTRLDATA: 5332RmZvb3Rlcl90eHQ9Mjc5OTc6NjEy MIME-Version: 1.0 Message-ID: <5c19d4cd.7b89.1832ac42cef.Coremail.lichao@loongson.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID: AQAAf8Dxw+FTYR1jIKMWAA--.5009W X-CM-SenderInfo: xolfxt3r6o00pqjv00gofq/1tbiAQAGCGMcflwDGgACsJ X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWxJw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 SGkgTWlrZSwKSSB3aWxsIGNoZWNrIGFuZCB0cnkgaXQuCgpUaGFua3MsCkNoYW8KCgo+IC0tLS0t 5Y6f5aeL6YKu5Lu2LS0tLS0KPiDlj5Hku7bkuro6ICJNaWNoYWVsIEQgS2lubmV5IiA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+Cj4g5Y+R6YCB5pe26Ze0OjIwMjItMDktMTAgMDE6MjA6Mzcg KOaYn+acn+WFrSkKPiDmlLbku7bkuro6ICJDaGFvIExpIiA8bGljaGFvQGxvb25nc29uLmNuPiwg ImRldmVsQGVkazIuZ3JvdXBzLmlvIiA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+LCAiS2lubmV5LCBN aWNoYWVsIEQiIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4KPiDmioTpgIE6ICJHYW8sIExp bWluZyIgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4sICJMaXUsIFpoaWd1YW5nIiA8emhpZ3Vh bmcubGl1QGludGVsLmNvbT4sICJCYW9xaSBaaGFuZyIgPHpoYW5nYmFvcWlAbG9vbmdzb24uY24+ Cj4g5Li76aKYOiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2MSAyMy8zNF0gTWRlUGtnL0Jhc2VM aWI6IEJhc2VMaWIgZm9yIExPT05HQVJDSDY0IGFyY2hpdGVjdHVyZS4KPiAKPiBGb3IgdW5hbGln bmVkIHJlYWQvd3JpdGUgZnVuY3Rpb25zLCBjYW4geW91IHVzZSBvbmUgb2YgdGhlIG90aGVyIEJh c2VMaWIgc291cmNlIGZpbGVzCj4gdGhhdCBhbHJlYWR5IHByb3ZpZGVzIGEgZ2VuZXJpYyBpbXBs ZW1lbnRhdGlvbj8KPiAKPiBNaWtlCj4gCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ ID4gRnJvbTogQ2hhbyBMaSA8bGljaGFvQGxvb25nc29uLmNuPgo+ID4gU2VudDogV2VkbmVzZGF5 LCBTZXB0ZW1iZXIgNywgMjAyMiA5OjUyIFBNCj4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8K PiA+IENjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBH YW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LCBaaGlndWFuZwo+ID4g PHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+OyBCYW9xaSBaaGFuZyA8emhhbmdiYW9xaUBsb29uZ3Nv bi5jbj4KPiA+IFN1YmplY3Q6IFtQQVRDSCB2MSAyMy8zNF0gTWRlUGtnL0Jhc2VMaWI6IEJhc2VM aWIgZm9yIExPT05HQVJDSDY0IGFyY2hpdGVjdHVyZS4KPiA+IAo+ID4gQWRkIExvb25nQXJjaCBM T09OR0FSQ0g2NCBCYXNlTGliIGZ1bmN0aW9ucy4KPiA+IAo+ID4gQ2M6IE1pY2hhZWwgRCBLaW5u ZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPgo+ID4gQ2M6IExpbWluZyBHYW8gPGdhb2xp bWluZ0BieW9zb2Z0LmNvbS5jbj4KPiA+IENjOiBaaGlndWFuZyBMaXUgPHpoaWd1YW5nLmxpdUBp bnRlbC5jb20+Cj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IENoYW8gTGkgPGxpY2hhb0Bsb29uZ3Nv bi5jbj4KPiA+IENvLWF1dGhvcmVkLWJ5OiBCYW9xaSBaaGFuZyA8emhhbmdiYW9xaUBsb29uZ3Nv bi5jbj4KPiA+IC0tLQo+ID4gIE1kZVBrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUxpYi5oICAgICAg ICAgICAgICB8ICAyNCArKwo+ID4gIE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvQmFzZUxpYi5pbmYg ICAgICAgICAgICB8ICAxMyArCj4gPiAgLi4uL0Jhc2VMaWIvTG9vbmdBcmNoNjQvQ3B1QnJlYWtw b2ludC5TICAgICAgIHwgIDI0ICsrCj4gPiAgTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Mb29uZ0Fy Y2g2NC9DcHVQYXVzZS5TIHwgIDMxICsrKwo+ID4gIC4uLi9CYXNlTGliL0xvb25nQXJjaDY0L0Rp c2FibGVJbnRlcnJ1cHRzLlMgICB8ICAyMSArKwo+ID4gIC4uLi9CYXNlTGliL0xvb25nQXJjaDY0 L0VuYWJsZUludGVycnVwdHMuUyAgICB8ICAyMSArKwo+ID4gIC4uLi9CYXNlTGliL0xvb25nQXJj aDY0L0dldEludGVycnVwdFN0YXRlLlMgICB8ICAzNSArKysKPiA+ICAuLi4vQmFzZUxpYi9Mb29u Z0FyY2g2NC9JbnRlcm5hbFN3aXRjaFN0YWNrLmMgfCAgNTggKysrKysKPiA+ICAuLi4vTGlicmFy eS9CYXNlTGliL0xvb25nQXJjaDY0L01lbW9yeUZlbmNlLlMgfCAgMTkgKysKPiA+ICAuLi4vQmFz ZUxpYi9Mb29uZ0FyY2g2NC9TZXRKdW1wTG9uZ0p1bXAuUyAgICAgfCAgNDkgKysrKwo+ID4gIC4u Li9MaWJyYXJ5L0Jhc2VMaWIvTG9vbmdBcmNoNjQvU3dpdGNoU3RhY2suUyB8ICAzOSArKysKPiA+ ICAuLi4vTGlicmFyeS9CYXNlTGliL0xvb25nQXJjaDY0L1VuYWxpZ25lZC5jICAgfCAyNDIgKysr KysrKysrKysrKysrKysrCj4gPiAgMTIgZmlsZXMgY2hhbmdlZCwgNTc2IGluc2VydGlvbnMoKykK PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Mb29uZ0FyY2g2 NC9DcHVCcmVha3BvaW50LlMKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkv QmFzZUxpYi9Mb29uZ0FyY2g2NC9DcHVQYXVzZS5TCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1k ZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvTG9vbmdBcmNoNjQvRGlzYWJsZUludGVycnVwdHMuUwo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBNZGVQa2cvTGlicmFyeS9CYXNlTGliL0xvb25nQXJjaDY0L0Vu YWJsZUludGVycnVwdHMuUwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBNZGVQa2cvTGlicmFyeS9C YXNlTGliL0xvb25nQXJjaDY0L0dldEludGVycnVwdFN0YXRlLlMKPiA+ICBjcmVhdGUgbW9kZSAx MDA2NDQgTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Mb29uZ0FyY2g2NC9JbnRlcm5hbFN3aXRjaFN0 YWNrLmMKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Mb29u Z0FyY2g2NC9NZW1vcnlGZW5jZS5TCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1kZVBrZy9MaWJy YXJ5L0Jhc2VMaWIvTG9vbmdBcmNoNjQvU2V0SnVtcExvbmdKdW1wLlMKPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Mb29uZ0FyY2g2NC9Td2l0Y2hTdGFjay5T Cj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvTG9vbmdBcmNo NjQvVW5hbGlnbmVkLmMKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9JbmNsdWRlL0xpYnJh cnkvQmFzZUxpYi5oIGIvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlTGliLmgKPiA+IGluZGV4 IGE2ZjlhMTk0ZWYuLmYzZjU5ZjIxYzIgMTAwNjQ0Cj4gPiAtLS0gYS9NZGVQa2cvSW5jbHVkZS9M aWJyYXJ5L0Jhc2VMaWIuaAo+ID4gKysrIGIvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9CYXNlTGli LmgKPiA+IEBAIC02LDYgKzYsNyBAQCBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDIxLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+Cj4gPiAgUG9ydGlvbnMgY29weXJp Z2h0IChjKSAyMDA4IC0gMjAwOSwgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4K PiA+IAo+ID4gIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLjxCUj4KPiA+IAo+ ID4gIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAyMCwgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJp c2UgRGV2ZWxvcG1lbnQgTFAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPgo+ID4gCj4gPiArUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAyMDIyLCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9u IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPgo+ID4gCj4gPiAKPiA+IAo+ID4gIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50Cj4gPiAKPiA+IAo+ID4g Cj4gPiBAQCAtMTUyLDYgKzE1MywyOSBAQCB0eXBlZGVmIHN0cnVjdCB7Cj4gPiAKPiA+IAo+ID4g ICNlbmRpZiAvLyBkZWZpbmVkIChNREVfQ1BVX1JJU0NWNjQpCj4gPiAKPiA+IAo+ID4gCj4gPiAr I2lmIGRlZmluZWQgKE1ERV9DUFVfTE9PTkdBUkNINjQpCj4gPiAKPiA+ICsvLy8KPiA+IAo+ID4g Ky8vLyBUaGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSBjb250ZXh0IGJ1ZmZlciB1c2VkIGJ5IFNl dEp1bXAoKSBhbmQgTG9uZ0p1bXAoKQo+ID4gCj4gPiArLy8vCj4gPiAKPiA+ICt0eXBlZGVmIHN0 cnVjdCB7Cj4gPiAKPiA+ICsgIFVJTlQ2NCAgICBTMDsKPiA+IAo+ID4gKyAgVUlOVDY0ICAgIFMx Owo+ID4gCj4gPiArICBVSU5UNjQgICAgUzI7Cj4gPiAKPiA+ICsgIFVJTlQ2NCAgICBTMzsKPiA+ IAo+ID4gKyAgVUlOVDY0ICAgIFM0Owo+ID4gCj4gPiArICBVSU5UNjQgICAgUzU7Cj4gPiAKPiA+ ICsgIFVJTlQ2NCAgICBTNjsKPiA+IAo+ID4gKyAgVUlOVDY0ICAgIFM3Owo+ID4gCj4gPiArICBV SU5UNjQgICAgUzg7Cj4gPiAKPiA+ICsgIFVJTlQ2NCAgICBTUDsKPiA+IAo+ID4gKyAgVUlOVDY0 ICAgIEZQOwo+ID4gCj4gPiArICBVSU5UNjQgICAgUkE7Cj4gPiAKPiA+ICt9IEJBU0VfTElCUkFS WV9KVU1QX0JVRkZFUjsKPiA+IAo+ID4gKwo+ID4gCj4gPiArI2RlZmluZSBCQVNFX0xJQlJBUllf SlVNUF9CVUZGRVJfQUxJR05NRU5UICA4Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKyNlbmRpZiAvLyBk ZWZpbmVkIChNREVfQ1BVX0xPT05HQVJDSDY0KQo+ID4gCj4gPiArCj4gPiAKPiA+ICAvLwo+ID4g Cj4gPiAgLy8gU3RyaW5nIFNlcnZpY2VzCj4gPiAKPiA+ICAvLwo+ID4gCj4gPiBkaWZmIC0tZ2l0 IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9CYXNlTGliLmluZiBiL01kZVBrZy9MaWJyYXJ5L0Jh c2VMaWIvQmFzZUxpYi5pbmYKPiA+IGluZGV4IDZiZTViZTk0MjguLjg2ZGUzYWU3Y2QgMTAwNjQ0 Cj4gPiAtLS0gYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0Jhc2VMaWIuaW5mCj4gPiArKysgYi9N ZGVQa2cvTGlicmFyeS9CYXNlTGliL0Jhc2VMaWIuaW5mCj4gPiBAQCAtNDAyLDYgKzQwMiwxOSBA QAo+ID4gICAgUmlzY1Y2NC9SaXNjVkludGVycnVwdC5TICAgICAgICAgIHwgR0NDCj4gPiAKPiA+ ICAgIFJpc2NWNjQvRmx1c2hDYWNoZS5TICAgICAgICAgICAgICB8IEdDQwo+ID4gCj4gPiAKPiA+ IAo+ID4gK1tTb3VyY2VzLkxPT05HQVJDSDY0XQo+ID4gCj4gPiArICBNYXRoNjQuYwo+ID4gCj4g PiArICBMb29uZ0FyY2g2NC9VbmFsaWduZWQuYwo+ID4gCj4gPiArICBMb29uZ0FyY2g2NC9JbnRl cm5hbFN3aXRjaFN0YWNrLmMKPiA+IAo+ID4gKyAgTG9vbmdBcmNoNjQvR2V0SW50ZXJydXB0U3Rh dGUuUyAgIHwgR0NDCj4gPiAKPiA+ICsgIExvb25nQXJjaDY0L0VuYWJsZUludGVycnVwdHMuUyAg ICB8IEdDQwo+ID4gCj4gPiArICBMb29uZ0FyY2g2NC9EaXNhYmxlSW50ZXJydXB0cy5TICAgfCBH Q0MKPiA+IAo+ID4gKyAgTG9vbmdBcmNoNjQvTWVtb3J5RmVuY2UuUyAgICAgICAgIHwgR0NDCj4g PiAKPiA+ICsgIExvb25nQXJjaDY0L0NwdUJyZWFrcG9pbnQuUyAgICAgICB8IEdDQwo+ID4gCj4g PiArICBMb29uZ0FyY2g2NC9DcHVQYXVzZS5TICAgICAgICAgICAgfCBHQ0MKPiA+IAo+ID4gKyAg TG9vbmdBcmNoNjQvU2V0SnVtcExvbmdKdW1wLlMgICAgIHwgR0NDCj4gPiAKPiA+ICsgIExvb25n QXJjaDY0L1N3aXRjaFN0YWNrLlMgICAgICAgICB8IEdDQwo+ID4gCj4gPiArCj4gPiAKPiA+ICBb UGFja2FnZXNdCj4gPiAKPiA+ICAgIE1kZVBrZy9NZGVQa2cuZGVjCj4gPiAKPiA+IAo+ID4gCj4g PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Mb29uZ0FyY2g2NC9DcHVCcmVh a3BvaW50LlMgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0xvb25nQXJjaDY0L0NwdUJyZWFrcG9p bnQuUwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAuLjRlMDIy ZTliYjUKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIv TG9vbmdBcmNoNjQvQ3B1QnJlYWtwb2ludC5TCj4gPiBAQCAtMCwwICsxLDI0IEBACj4gPiArIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gCj4gPiArIwo+ID4gCj4gPiArIyBDcHVCcmVha3BvaW50 IGZvciBMb29uZ0FyY2gKPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDIy LCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPgo+ID4gCj4gPiArIwo+ID4gCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudAo+ID4gCj4gPiArIwo+ID4gCj4gPiArIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+ID4gCj4gPiArCj4gPiAKPiA+ICtBU01fR0xPQkFMIEFTTV9QRlgoQ3B1QnJl YWtwb2ludCkKPiA+IAo+ID4gKwo+ID4gCj4gPiArIy8qKgo+ID4gCj4gPiArIyAgR2VuZXJhdGVz IGEgYnJlYWtwb2ludCBvbiB0aGUgQ1BVLgo+ID4gCj4gPiArIwo+ID4gCj4gPiArIyAgR2VuZXJh dGVzIGEgYnJlYWtwb2ludCBvbiB0aGUgQ1BVLiBUaGUgYnJlYWtwb2ludCBtdXN0IGJlIGltcGxl bWVudGVkIHN1Y2gKPiA+IAo+ID4gKyMgIHRoYXQgY29kZSBjYW4gcmVzdW1lIG5vcm1hbCBleGVj dXRpb24gYWZ0ZXIgdGhlIGJyZWFrcG9pbnQuCj4gPiAKPiA+ICsjCj4gPiAKPiA+ICsjKiovCj4g PiAKPiA+ICsKPiA+IAo+ID4gK0FTTV9QRlgoQ3B1QnJlYWtwb2ludCk6Cj4gPiAKPiA+ICsgIGJy ZWFrIDMKPiA+IAo+ID4gKyAgamlybCAgJHplcm8sICRyYSwgMAo+ID4gCj4gPiArICAuZW5kCj4g PiAKPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0xvb25nQXJjaDY0L0Nw dVBhdXNlLlMgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0xvb25nQXJjaDY0L0NwdVBhdXNlLlMK PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi5lOTE0MGU4NzQy Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0xvb25n QXJjaDY0L0NwdVBhdXNlLlMKPiA+IEBAIC0wLDAgKzEsMzEgQEAKPiA+ICsjLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gPiAKPiA+ICsjCj4gPiAKPiA+ICsjIENwdVBhdXNlIGZvciBMb29uZ0FyY2gK PiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBMb29uZ3NvbiBUZWNo bm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPgo+ID4g Cj4gPiArIwo+ID4gCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudAo+ID4gCj4gPiArIwo+ID4gCj4gPiArIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4g Cj4gPiArCj4gPiAKPiA+ICtBU01fR0xPQkFMIEFTTV9QRlgoQ3B1UGF1c2UpCj4gPiAKPiA+ICsK PiA+IAo+ID4gKyMvKioKPiA+IAo+ID4gKyMgIFJlcXVlc3RzIENQVSB0byBwYXVzZSBmb3IgYSBz aG9ydCBwZXJpb2Qgb2YgdGltZS4KPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgIFJlcXVlc3RzIENQ VSB0byBwYXVzZSBmb3IgYSBzaG9ydCBwZXJpb2Qgb2YgdGltZS4gVHlwaWNhbGx5IHVzZWQgaW4g TVAKPiA+IAo+ID4gKyMgIHN5c3RlbXMgdG8gcHJldmVudCBtZW1vcnkgc3RhcnZhdGlvbiB3aGls ZSB3YWl0aW5nIGZvciBhIHNwaW4gbG9jay4KPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMqKi8KPiA+ IAo+ID4gKwo+ID4gCj4gPiArQVNNX1BGWChDcHVQYXVzZSk6Cj4gPiAKPiA+ICsgIG5vcAo+ID4g Cj4gPiArICBub3AKPiA+IAo+ID4gKyAgbm9wCj4gPiAKPiA+ICsgIG5vcAo+ID4gCj4gPiArICBu b3AKPiA+IAo+ID4gKyAgbm9wCj4gPiAKPiA+ICsgIG5vcAo+ID4gCj4gPiArICBub3AKPiA+IAo+ ID4gKyAgamlybCAkemVybywgJHJhLCAwCj4gPiAKPiA+ICsgIC5lbmQKPiA+IAo+ID4gZGlmZiAt LWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvTG9vbmdBcmNoNjQvRGlzYWJsZUludGVycnVw dHMuUyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvTG9vbmdBcmNoNjQvRGlzYWJsZUludGVycnVw dHMuUwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAuLjBmMjI4 MzM5YWYKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIv TG9vbmdBcmNoNjQvRGlzYWJsZUludGVycnVwdHMuUwo+ID4gQEAgLTAsMCArMSwyMSBAQAo+ID4g KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgTG9vbmdBcmNo IGludGVycnVwdCBkaXNhYmxlCj4gPiAKPiA+ICsjCj4gPiAKPiA+ICsjIENvcHlyaWdodCAoYykg MjAyMiwgTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4KPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQKPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiA+IAo+ID4gKwo+ID4gCj4gPiArQVNNX0dMT0JBTCBBU01fUEZYKERp c2FibGVJbnRlcnJ1cHRzKQo+ID4gCj4gPiArCj4gPiAKPiA+ICsjLyoqCj4gPiAKPiA+ICsjICBE aXNhYmxlcyBDUFUgaW50ZXJydXB0cy4KPiA+IAo+ID4gKyMqKi8KPiA+IAo+ID4gKwo+ID4gCj4g PiArQVNNX1BGWChEaXNhYmxlSW50ZXJydXB0cyk6Cj4gPiAKPiA+ICsgIGxpLncgICAgJHQwLCAw eDQKPiA+IAo+ID4gKyAgY3NyeGNoZyAkemVybywgJHQwLCAweDAKPiA+IAo+ID4gKyAgamlybCAg ICAkemVybywgJHJhLCAwCj4gPiAKPiA+ICsgIC5lbmQKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL01k ZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvTG9vbmdBcmNoNjQvRW5hYmxlSW50ZXJydXB0cy5TIGIvTWRl UGtnL0xpYnJhcnkvQmFzZUxpYi9Mb29uZ0FyY2g2NC9FbmFibGVJbnRlcnJ1cHRzLlMKPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi4zYzM0ZmIyY2RkCj4gPiAt LS0gL2Rldi9udWxsCj4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0xvb25nQXJjaDY0 L0VuYWJsZUludGVycnVwdHMuUwo+ID4gQEAgLTAsMCArMSwyMSBAQAo+ID4gKyMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgTG9vbmdBcmNoIGludGVycnVwdCBl bmFibGUKPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBMb29uZ3Nv biBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pgo+ID4gCj4gPiArIwo+ID4gCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudAo+ID4gCj4gPiArIwo+ID4gCj4gPiArIy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+ID4gCj4gPiArCj4gPiAKPiA+ICtBU01fR0xPQkFMIEFTTV9QRlgoRW5hYmxlSW50ZXJydXB0 cykKPiA+IAo+ID4gKwo+ID4gCj4gPiArIy8qKgo+ID4gCj4gPiArIyAgRW5hYmxlcyBDUFUgaW50 ZXJydXB0cy4KPiA+IAo+ID4gKyMqKi8KPiA+IAo+ID4gKwo+ID4gCj4gPiArQVNNX1BGWChFbmFi bGVJbnRlcnJ1cHRzKToKPiA+IAo+ID4gKyAgbGkudyAgICAkdDAsIDB4NAo+ID4gCj4gPiArICBj c3J4Y2hnICR0MCwgJHQwLCAweDAKPiA+IAo+ID4gKyAgamlybCAgICAkemVybywgJHJhLCAwCj4g PiAKPiA+ICsgIC5lbmQKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VM aWIvTG9vbmdBcmNoNjQvR2V0SW50ZXJydXB0U3RhdGUuUyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VM aWIvTG9vbmdBcmNoNjQvR2V0SW50ZXJydXB0U3RhdGUuUwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAuLmJmZDFmMmQ1ZjcKPiA+IC0tLSAvZGV2L251bGwKPiA+ ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvTG9vbmdBcmNoNjQvR2V0SW50ZXJydXB0U3Rh dGUuUwo+ID4gQEAgLTAsMCArMSwzNSBAQAo+ID4gKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ IAo+ID4gKyMKPiA+IAo+ID4gKyMgR2V0IExvb25nQXJjaCBpbnRlcnJ1cHQgc3RhdHVzCj4gPiAK PiA+ICsjCj4gPiAKPiA+ICsjIENvcHlyaWdodCAoYykgMjAyMiwgTG9vbmdzb24gVGVjaG5vbG9n eSBDb3Jwb3JhdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4KPiA+IAo+ID4g KyMKPiA+IAo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQKPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+IAo+ID4g Kwo+ID4gCj4gPiArQVNNX0dMT0JBTCBBU01fUEZYKEdldEludGVycnVwdFN0YXRlKQo+ID4gCj4g PiArCj4gPiAKPiA+ICsjLyoqCj4gPiAKPiA+ICsjICBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgQ1BV IGludGVycnVwdCBzdGF0ZS4KPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgIFJldHVybnMgVFJVRSBt ZWFucyBpbnRlcnJ1cHRzIGFyZSBjdXJyZW50bHkgZW5hYmxlZC4gT3RoZXJ3aXNlLAo+ID4gCj4g PiArIyAgcmV0dXJucyBGQUxTRS4KPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgIEByZXR2YWwgVFJV RSAgQ1BVIGludGVycnVwdHMgYXJlIGVuYWJsZWQuCj4gPiAKPiA+ICsjICBAcmV0dmFsIEZBTFNF IENQVSBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZC4KPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMqKi8K PiA+IAo+ID4gKwo+ID4gCj4gPiArQVNNX1BGWChHZXRJbnRlcnJ1cHRTdGF0ZSk6Cj4gPiAKPiA+ ICsgIGxpLncgICR0MSwgMHg0Cj4gPiAKPiA+ICsgIGNzcnJkICR0MCwgMHgwCj4gPiAKPiA+ICsg IGFuZCAgICR0MCwgJHQwLCAkdDEKPiA+IAo+ID4gKyAgYmVxeiAgJHQwLCAxZgo+ID4gCj4gPiAr ICBsaS53ICAkYTAsIDB4MQo+ID4gCj4gPiArICBiICAgICAyZgo+ID4gCj4gPiArMToKPiA+IAo+ ID4gKyAgbGkudyAgJGEwLCAweDAKPiA+IAo+ID4gKzI6Cj4gPiAKPiA+ICsgIGppcmwgICR6ZXJv LCAkcmEsIDAKPiA+IAo+ID4gKyAgLmVuZAo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xp YnJhcnkvQmFzZUxpYi9Mb29uZ0FyY2g2NC9JbnRlcm5hbFN3aXRjaFN0YWNrLmMKPiA+IGIvTWRl UGtnL0xpYnJhcnkvQmFzZUxpYi9Mb29uZ0FyY2g2NC9JbnRlcm5hbFN3aXRjaFN0YWNrLmMKPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi44NTliYzk2MzI5Cj4g PiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0xvb25nQXJj aDY0L0ludGVybmFsU3dpdGNoU3RhY2suYwo+ID4gQEAgLTAsMCArMSw1OCBAQAo+ID4gKy8qKiBA ZmlsZQo+ID4gCj4gPiArICBTd2l0Y2hTdGFjaygpIGZ1bmN0aW9uIGZvciBMb29uZ0FyY2guCj4g PiAKPiA+ICsKPiA+IAo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIyLCBMb29uZ3NvbiBUZWNobm9s b2d5IENvcnBvcmF0aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPgo+ID4gCj4g PiArCj4gPiAKPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50Cj4gPiAKPiA+ICsqKi8KPiA+IAo+ID4gKwo+ID4gCj4gPiArI2luY2x1ZGUgIkJhc2VMaWJJ bnRlcm5hbHMuaCIKPiA+IAo+ID4gKwo+ID4gCj4gPiArVUlOVE4KPiA+IAo+ID4gK0VGSUFQSQo+ ID4gCj4gPiArSW50ZXJuYWxTd2l0Y2hTdGFja0FzbSAoCj4gPiAKPiA+ICsgIElOICAgICBCQVNF X0xJQlJBUllfSlVNUF9CVUZGRVIgICpKdW1wQnVmZmVyCj4gPiAKPiA+ICsgICk7Cj4gPiAKPiA+ ICsKPiA+IAo+ID4gKy8qKgo+ID4gCj4gPiArICBUcmFuc2ZlcnMgY29udHJvbCB0byBhIGZ1bmN0 aW9uIHN0YXJ0aW5nIHdpdGggYSBuZXcgc3RhY2suCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgVHJh bnNmZXJzIGNvbnRyb2wgdG8gdGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieSBFbnRyeVBvaW50IHVz aW5nIHRoZQo+ID4gCj4gPiArICBuZXcgc3RhY2sgc3BlY2lmaWVkIGJ5IE5ld1N0YWNrIGFuZCBw YXNzaW5nIGluIHRoZSBwYXJhbWV0ZXJzIHNwZWNpZmllZAo+ID4gCj4gPiArICBieSBDb250ZXh0 MSBhbmQgQ29udGV4dDIuICBDb250ZXh0MSBhbmQgQ29udGV4dDIgYXJlIG9wdGlvbmFsIGFuZCBt YXkKPiA+IAo+ID4gKyAgYmUgTlVMTC4gIFRoZSBmdW5jdGlvbiBFbnRyeVBvaW50IG11c3QgbmV2 ZXIgcmV0dXJuLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIElmIEVudHJ5UG9pbnQgaXMgTlVMTCwg dGhlbiBBU1NFUlQoKS4KPiA+IAo+ID4gKyAgSWYgTmV3U3RhY2sgaXMgTlVMTCwgdGhlbiBBU1NF UlQoKS4KPiA+IAo+ID4gKwo+ID4gCj4gPiArICBAcGFyYW1baW5dICBFbnRyeVBvaW50ICBBIHBv aW50ZXIgdG8gZnVuY3Rpb24gdG8gY2FsbCB3aXRoIHRoZSBuZXcgc3RhY2suCj4gPiAKPiA+ICsg IEBwYXJhbVtpbl0gIENvbnRleHQxICAgIEEgcG9pbnRlciB0byB0aGUgY29udGV4dCB0byBwYXNz IGludG8gdGhlIEVudHJ5UG9pbnQKPiA+IAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBmdW5j dGlvbi4KPiA+IAo+ID4gKyAgQHBhcmFtW2luXSAgQ29udGV4dDIgICAgQSBwb2ludGVyIHRvIHRo ZSBjb250ZXh0IHRvIHBhc3MgaW50byB0aGUgRW50cnlQb2ludAo+ID4gCj4gPiArICAgICAgICAg ICAgICAgICAgICAgIGZ1bmN0aW9uLgo+ID4gCj4gPiArICBAcGFyYW1baW5dICBOZXdTdGFjayAg ICBBIHBvaW50ZXIgdG8gdGhlIG5ldyBzdGFjayB0byB1c2UgZm9yIHRoZSBFbnRyeVBvaW50Cj4g PiAKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24uCj4gPiAKPiA+ICsgIEBwYXJh bVtpbl0gIE1hcmtlciAgICAgIFZBX0xJU1QgbWFya2VyIGZvciB0aGUgdmFyaWFibGUgYXJndW1l bnQgbGlzdC4KPiA+IAo+ID4gKwo+ID4gCj4gPiArKiovCj4gPiAKPiA+ICtWT0lECj4gPiAKPiA+ ICtFRklBUEkKPiA+IAo+ID4gK0ludGVybmFsU3dpdGNoU3RhY2sgKAo+ID4gCj4gPiArICBJTiAg ICAgIFNXSVRDSF9TVEFDS19FTlRSWV9QT0lOVCAgRW50cnlQb2ludCwKPiA+IAo+ID4gKyAgSU4g ICAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICpDb250ZXh0MSAgIE9QVElPTkFMLAo+ID4g Cj4gPiArICBJTiAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQyICAgT1BU SU9OQUwsCj4gPiAKPiA+ICsgIElOICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAqTmV3 U3RhY2ssCj4gPiAKPiA+ICsgIElOICAgICAgVkFfTElTVCAgICAgICAgICAgICAgICAgICBNYXJr ZXIKPiA+IAo+ID4gKyAgKQo+ID4gCj4gPiArCj4gPiAKPiA+ICt7Cj4gPiAKPiA+ICsgIEJBU0Vf TElCUkFSWV9KVU1QX0JVRkZFUiAgSnVtcEJ1ZmZlcjsKPiA+IAo+ID4gKwo+ID4gCj4gPiArICBK dW1wQnVmZmVyLlJBICAgICAgICAgICAgICAgICAgICAgID0gKFVJTlROKUVudHJ5UG9pbnQ7Cj4g PiAKPiA+ICsgIEp1bXBCdWZmZXIuU1AgICAgICAgICAgICAgICAgICAgICAgPSAoVUlOVE4pTmV3 U3RhY2sgLSBzaXplb2YgKFZPSUQgKik7Cj4gPiAKPiA+ICsgIEp1bXBCdWZmZXIuU1AgICAgICAg ICAgICAgICAgICAgICAtPSBzaXplb2YgKENvbnRleHQxKSArIHNpemVvZiAoQ29udGV4dDIpOwo+ ID4gCj4gPiArICAoKFZPSUQgKiopKFVJTlROKUp1bXBCdWZmZXIuU1ApWzBdID0gQ29udGV4dDE7 Cj4gPiAKPiA+ICsgICgoVk9JRCAqKikoVUlOVE4pSnVtcEJ1ZmZlci5TUClbMV0gPSBDb250ZXh0 MjsKPiA+IAo+ID4gKwo+ID4gCj4gPiArICBJbnRlcm5hbFN3aXRjaFN0YWNrQXNtICgmSnVtcEJ1 ZmZlcik7Cj4gPiAKPiA+ICt9Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9C YXNlTGliL0xvb25nQXJjaDY0L01lbW9yeUZlbmNlLlMgYi9NZGVQa2cvTGlicmFyeS9CYXNlTGli L0xvb25nQXJjaDY0L01lbW9yeUZlbmNlLlMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBp bmRleCAwMDAwMDAwMDAwLi4wZDhkYzEwOTE0Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9N ZGVQa2cvTGlicmFyeS9CYXNlTGliL0xvb25nQXJjaDY0L01lbW9yeUZlbmNlLlMKPiA+IEBAIC0w LDAgKzEsMTkgQEAKPiA+ICsjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAKPiA+ICsjCj4gPiAK PiA+ICsjIE1lbW9yeUZlbmNlKCkgZm9yIExvb25nQXJjaDY0Cj4gPiAKPiA+ICsjCj4gPiAKPiA+ ICsjIENvcHlyaWdodCAoYykgMjAyMiwgTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBM aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4KPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQKPiA+IAo+ID4gKyMK PiA+IAo+ID4gKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+IAo+ID4gKwo+ID4gCj4gPiArQVNN X0dMT0JBTCBBU01fUEZYKE1lbW9yeUZlbmNlKQo+ID4gCj4gPiArCj4gPiAKPiA+ICsjCj4gPiAK PiA+ICsjIE1lbW9yeSBmZW5jZSBmb3IgTG9vbmdBcmNoNjQKPiA+IAo+ID4gKyMKPiA+IAo+ID4g K0FTTV9QRlgoTWVtb3J5RmVuY2UpOgo+ID4gCj4gPiArICBkYmFyIDAKPiA+IAo+ID4gKyAgamly bCAkemVybywgJHJhLCAwCj4gPiAKPiA+ICsgIC5lbmQKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL01k ZVBrZy9MaWJyYXJ5L0Jhc2VMaWIvTG9vbmdBcmNoNjQvU2V0SnVtcExvbmdKdW1wLlMgYi9NZGVQ a2cvTGlicmFyeS9CYXNlTGliL0xvb25nQXJjaDY0L1NldEp1bXBMb25nSnVtcC5TCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMWM2ZWU1NGI2Zgo+ID4gLS0t IC9kZXYvbnVsbAo+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Mb29uZ0FyY2g2NC9T ZXRKdW1wTG9uZ0p1bXAuUwo+ID4gQEAgLTAsMCArMSw0OSBAQAo+ID4gKyMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgU2V0L0xvbmcganVtcCBmb3IgTG9vbmdB cmNoCj4gPiAKPiA+ICsjCj4gPiAKPiA+ICsjIENvcHlyaWdodCAoYykgMjAyMiwgTG9vbmdzb24g VGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4K PiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQKPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K PiA+IAo+ID4gKwo+ID4gCj4gPiArI2RlZmluZSBTVE9SRSAgIHN0LmQgICAgLyogNjQgYml0IG1v ZGUgcmVnc2F2ZSBpbnN0cnVjdGlvbiAqLwo+ID4gCj4gPiArI2RlZmluZSBMT0FEICAgIGxkLmQg ICAgLyogNjQgYml0IG1vZGUgcmVnbG9hZCBpbnN0cnVjdGlvbiAqLwo+ID4gCj4gPiArI2RlZmlu ZSBSU0laRSAgIDggICAgICAgLyogNjQgYml0IG1vZGUgcmVnaXN0ZXIgc2l6ZSAqLwo+ID4gCj4g PiArCj4gPiAKPiA+ICtBU01fR0xPQkFMIEFTTV9QRlgoU2V0SnVtcCkKPiA+IAo+ID4gK0FTTV9H TE9CQUwgQVNNX1BGWChJbnRlcm5hbExvbmdKdW1wKQo+ID4gCj4gPiArCj4gPiAKPiA+ICtBU01f UEZYKFNldEp1bXApOgo+ID4gCj4gPiArICBTVE9SRSAgICRzMCwgJGEwLCBSU0laRSAqIDAKPiA+ IAo+ID4gKyAgU1RPUkUgICAkczEsICRhMCwgUlNJWkUgKiAxCj4gPiAKPiA+ICsgIFNUT1JFICAg JHMyLCAkYTAsIFJTSVpFICogMgo+ID4gCj4gPiArICBTVE9SRSAgICRzMywgJGEwLCBSU0laRSAq IDMKPiA+IAo+ID4gKyAgU1RPUkUgICAkczQsICRhMCwgUlNJWkUgKiA0Cj4gPiAKPiA+ICsgIFNU T1JFICAgJHM1LCAkYTAsIFJTSVpFICogNQo+ID4gCj4gPiArICBTVE9SRSAgICRzNiwgJGEwLCBS U0laRSAqIDYKPiA+IAo+ID4gKyAgU1RPUkUgICAkczcsICRhMCwgUlNJWkUgKiA3Cj4gPiAKPiA+ ICsgIFNUT1JFICAgJHM4LCAkYTAsIFJTSVpFICogOAo+ID4gCj4gPiArICBTVE9SRSAgICRzcCwg JGEwLCBSU0laRSAqIDkKPiA+IAo+ID4gKyAgU1RPUkUgICAkZnAsICRhMCwgUlNJWkUgKiAxMAo+ ID4gCj4gPiArICBTVE9SRSAgICRyYSwgJGEwLCBSU0laRSAqIDExCj4gPiAKPiA+ICsgIGxpLncg ICAgJGEwLCAwICAgICAgICAgICAgICAgICAgICAjIFNldGptcCByZXR1cm4KPiA+IAo+ID4gKyAg amlybCAgICAkemVybywgJHJhLCAwCj4gPiAKPiA+ICsKPiA+IAo+ID4gK0FTTV9QRlgoSW50ZXJu YWxMb25nSnVtcCk6Cj4gPiAKPiA+ICsgIExPQUQgICAgJHJhLCAkYTAsIFJTSVpFICogMTEKPiA+ IAo+ID4gKyAgTE9BRCAgICAkczAsICRhMCwgUlNJWkUgKiAwCj4gPiAKPiA+ICsgIExPQUQgICAg JHMxLCAkYTAsIFJTSVpFICogMQo+ID4gCj4gPiArICBMT0FEICAgICRzMiwgJGEwLCBSU0laRSAq IDIKPiA+IAo+ID4gKyAgTE9BRCAgICAkczMsICRhMCwgUlNJWkUgKiAzCj4gPiAKPiA+ICsgIExP QUQgICAgJHM0LCAkYTAsIFJTSVpFICogNAo+ID4gCj4gPiArICBMT0FEICAgICRzNSwgJGEwLCBS U0laRSAqIDUKPiA+IAo+ID4gKyAgTE9BRCAgICAkczYsICRhMCwgUlNJWkUgKiA2Cj4gPiAKPiA+ ICsgIExPQUQgICAgJHM3LCAkYTAsIFJTSVpFICogNwo+ID4gCj4gPiArICBMT0FEICAgICRzOCwg JGEwLCBSU0laRSAqIDgKPiA+IAo+ID4gKyAgTE9BRCAgICAkc3AsICRhMCwgUlNJWkUgKiA5Cj4g PiAKPiA+ICsgIExPQUQgICAgJGZwLCAkYTAsIFJTSVpFICogMTAKPiA+IAo+ID4gKyAgbW92ZSAg ICAkYTAsICRhMQo+ID4gCj4gPiArICBqaXJsICAgICR6ZXJvLCAkcmEsIDAKPiA+IAo+ID4gKyAg LmVuZAo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Mb29uZ0Fy Y2g2NC9Td2l0Y2hTdGFjay5TIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9Mb29uZ0FyY2g2NC9T d2l0Y2hTdGFjay5TCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAw MC4uYWQ5YWE4YjM0Mwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkv QmFzZUxpYi9Mb29uZ0FyY2g2NC9Td2l0Y2hTdGFjay5TCj4gPiBAQCAtMCwwICsxLDM5IEBACj4g PiArIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gCj4gPiArIwo+ID4gCj4gPiArIyBJbnRlcm5h bFN3aXRjaFN0YWNrQXNtIGZvciBMb29uZ0FyY2gKPiA+IAo+ID4gKyMKPiA+IAo+ID4gKyMgQ29w eXJpZ2h0IChjKSAyMDIyLCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQu IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPgo+ID4gCj4gPiArIwo+ID4gCj4gPiArIyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudAo+ID4gCj4gPiArIwo+ID4gCj4g PiArIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gCj4gPiArCj4gPiAKPiA+ICsjZGVmaW5lIFNU T1JFICAgc3QuZCAgICAvKiA2NCBiaXQgbW9kZSByZWdzYXZlIGluc3RydWN0aW9uICovCj4gPiAK PiA+ICsjZGVmaW5lIExPQUQgICAgbGQuZCAgICAvKiA2NCBiaXQgbW9kZSByZWdsb2FkIGluc3Ry dWN0aW9uICovCj4gPiAKPiA+ICsjZGVmaW5lIFJTSVpFICAgOCAgICAgICAvKiA2NCBiaXQgbW9k ZSByZWdpc3RlciBzaXplICovCj4gPiAKPiA+ICsKPiA+IAo+ID4gK0FTTV9HTE9CQUwgQVNNX1BG WChJbnRlcm5hbFN3aXRjaFN0YWNrQXNtKQo+ID4gCj4gPiArCj4gPiAKPiA+ICsvKioKPiA+IAo+ ID4gKyAgVGhpcyBhbGxvd3MgdGhlIGNhbGxlciB0byBzd2l0Y2ggdGhlIHN0YWNrIGFuZCBnb2Vz IHRvIHRoZSBuZXcgZW50cnkgcG9pbnQKPiA+IAo+ID4gKwo+ID4gCj4gPiArICBAcGFyYW0gIEp1 bXBCdWZmZXIgICAgQSBwb2ludGVyIHRvIENQVSBjb250ZXh0IGJ1ZmZlci4KPiA+IAo+ID4gKyoq Lwo+ID4gCj4gPiArCj4gPiAKPiA+ICtBU01fUEZYKEludGVybmFsU3dpdGNoU3RhY2tBc20pOgo+ ID4gCj4gPiArICBMT0FEICAgICRyYSwgJGEwLCBSU0laRSAqIDExCj4gPiAKPiA+ICsgIExPQUQg ICAgJHMwLCAkYTAsIFJTSVpFICogMAo+ID4gCj4gPiArICBMT0FEICAgICRzMSwgJGEwLCBSU0la RSAqIDEKPiA+IAo+ID4gKyAgTE9BRCAgICAkczIsICRhMCwgUlNJWkUgKiAyCj4gPiAKPiA+ICsg IExPQUQgICAgJHMzLCAkYTAsIFJTSVpFICogMwo+ID4gCj4gPiArICBMT0FEICAgICRzNCwgJGEw LCBSU0laRSAqIDQKPiA+IAo+ID4gKyAgTE9BRCAgICAkczUsICRhMCwgUlNJWkUgKiA1Cj4gPiAK PiA+ICsgIExPQUQgICAgJHM2LCAkYTAsIFJTSVpFICogNgo+ID4gCj4gPiArICBMT0FEICAgICRz NywgJGEwLCBSU0laRSAqIDcKPiA+IAo+ID4gKyAgTE9BRCAgICAkczgsICRhMCwgUlNJWkUgKiA4 Cj4gPiAKPiA+ICsgIExPQUQgICAgJHNwLCAkYTAsIFJTSVpFICogOQo+ID4gCj4gPiArICBMT0FE ICAgICRmcCwgJGEwLCBSU0laRSAqIDEwCj4gPiAKPiA+ICsgIExPQUQgICAgJGEwLCAkc3AsIDAK PiA+IAo+ID4gKyAgTE9BRCAgICAkYTEsICRzcCwgOAo+ID4gCj4gPiArICBqaXJsICAgICR6ZXJv LCAkcmEsIDAKPiA+IAo+ID4gKyAgLmVuZAo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xp YnJhcnkvQmFzZUxpYi9Mb29uZ0FyY2g2NC9VbmFsaWduZWQuYyBiL01kZVBrZy9MaWJyYXJ5L0Jh c2VMaWIvTG9vbmdBcmNoNjQvVW5hbGlnbmVkLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g PiBpbmRleCAwMDAwMDAwMDAwLi4zMzUzNzllY2IxCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysg Yi9NZGVQa2cvTGlicmFyeS9CYXNlTGliL0xvb25nQXJjaDY0L1VuYWxpZ25lZC5jCj4gPiBAQCAt MCwwICsxLDI0MiBAQAo+ID4gKy8qKiBAZmlsZQo+ID4gCj4gPiArICBVbmFsaWduZWQgYWNjZXNz IGZ1bmN0aW9ucyBvZiBCYXNlTGliIGZvciBMb29uZ0FyY2guCj4gPiAKPiA+ICsKPiA+IAo+ID4g KyAgQ29weXJpZ2h0IChjKSAyMDIyLCBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExp bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50Cj4gPiAKPiA+ICsKPiA+ IAo+ID4gKyoqLwo+ID4gCj4gPiArCj4gPiAKPiA+ICsjaW5jbHVkZSAiQmFzZUxpYkludGVybmFs cy5oIgo+ID4gCj4gPiArCj4gPiAKPiA+ICsvKioKPiA+IAo+ID4gKyAgUmVhZHMgYSAxNi1iaXQg dmFsdWUgZnJvbSBtZW1vcnkgdGhhdCBtYXkgYmUgdW5hbGlnbmVkLgo+ID4gCj4gPiArCj4gPiAK PiA+ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgMTYtYml0IHZhbHVlIHBvaW50ZWQgdG8g YnkgQnVmZmVyLiBUaGUgZnVuY3Rpb24KPiA+IAo+ID4gKyAgZ3VhcmFudGVlcyB0aGF0IHRoZSBy ZWFkIG9wZXJhdGlvbiBkb2VzIG5vdCBwcm9kdWNlIGFuIGFsaWdubWVudCBmYXVsdC4KPiA+IAo+ ID4gKwo+ID4gCj4gPiArICBJZiB0aGUgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuCj4g PiAKPiA+ICsKPiA+IAo+ID4gKyAgQHBhcmFtW2luXSAgQnVmZmVyICBUaGUgcG9pbnRlciB0byBh IDE2LWJpdCB2YWx1ZSB0aGF0IG1heSBiZSB1bmFsaWduZWQuCj4gPiAKPiA+ICsKPiA+IAo+ID4g KyAgQHJldHVybiBUaGUgMTYtYml0IHZhbHVlIHJlYWQgZnJvbSBCdWZmZXIuCj4gPiAKPiA+ICsK PiA+IAo+ID4gKyoqLwo+ID4gCj4gPiArVUlOVDE2Cj4gPiAKPiA+ICtFRklBUEkKPiA+IAo+ID4g K1JlYWRVbmFsaWduZWQxNiAoCj4gPiAKPiA+ICsgIElOICAgICAgQ09OU1QgVUlOVDE2ICAqQnVm ZmVyCj4gPiAKPiA+ICsgICkKPiA+IAo+ID4gK3sKPiA+IAo+ID4gKyAgdm9sYXRpbGUgVUlOVDgg IExvd2VyQnl0ZTsKPiA+IAo+ID4gKyAgdm9sYXRpbGUgVUlOVDggIEhpZ2hlckJ5dGU7Cj4gPiAK PiA+ICsKPiA+IAo+ID4gKyAgQVNTRVJUIChCdWZmZXIgIT0gTlVMTCk7Cj4gPiAKPiA+ICsKPiA+ IAo+ID4gKyAgTG93ZXJCeXRlICA9ICgoVUlOVDggKilCdWZmZXIpWzBdOwo+ID4gCj4gPiArICBI aWdoZXJCeXRlID0gKChVSU5UOCAqKUJ1ZmZlcilbMV07Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAg cmV0dXJuIChVSU5UMTYpKExvd2VyQnl0ZSB8IChIaWdoZXJCeXRlIDw8IDgpKTsKPiA+IAo+ID4g K30KPiA+IAo+ID4gKwo+ID4gCj4gPiArLyoqCj4gPiAKPiA+ICsgIFdyaXRlcyBhIDE2LWJpdCB2 YWx1ZSB0byBtZW1vcnkgdGhhdCBtYXkgYmUgdW5hbGlnbmVkLgo+ID4gCj4gPiArCj4gPiAKPiA+ ICsgIFRoaXMgZnVuY3Rpb24gd3JpdGVzIHRoZSAxNi1iaXQgdmFsdWUgc3BlY2lmaWVkIGJ5IFZh bHVlIHRvIEJ1ZmZlci4gVmFsdWUgaXMKPiA+IAo+ID4gKyAgcmV0dXJuZWQuIFRoZSBmdW5jdGlv biBndWFyYW50ZWVzIHRoYXQgdGhlIHdyaXRlIG9wZXJhdGlvbiBkb2VzIG5vdCBwcm9kdWNlCj4g PiAKPiA+ICsgIGFuIGFsaWdubWVudCBmYXVsdC4KPiA+IAo+ID4gKwo+ID4gCj4gPiArICBJZiB0 aGUgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAg QHBhcmFtW291dF0gIEJ1ZmZlciAgVGhlIHBvaW50ZXIgdG8gYSAxNi1iaXQgdmFsdWUgdGhhdCBt YXkgYmUgdW5hbGlnbmVkLgo+ID4gCj4gPiArICBAcGFyYW1baW5dICAgVmFsdWUgICAxNi1iaXQg dmFsdWUgdG8gd3JpdGUgdG8gQnVmZmVyLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIEByZXR1cm4g VGhlIDE2LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBCdWZmZXIuCj4gPiAKPiA+ICsKPiA+IAo+ID4g KyoqLwo+ID4gCj4gPiArVUlOVDE2Cj4gPiAKPiA+ICtFRklBUEkKPiA+IAo+ID4gK1dyaXRlVW5h bGlnbmVkMTYgKAo+ID4gCj4gPiArICBPVVQgICAgICBVSU5UMTYgICpCdWZmZXIsCj4gPiAKPiA+ ICsgIElOICAgICAgIFVJTlQxNiAgVmFsdWUKPiA+IAo+ID4gKyAgKQo+ID4gCj4gPiArewo+ID4g Cj4gPiArICBBU1NFUlQgKEJ1ZmZlciAhPSBOVUxMKTsKPiA+IAo+ID4gKwo+ID4gCj4gPiArICAo KHZvbGF0aWxlIFVJTlQ4ICopQnVmZmVyKVswXSA9IChVSU5UOClWYWx1ZTsKPiA+IAo+ID4gKyAg KCh2b2xhdGlsZSBVSU5UOCAqKUJ1ZmZlcilbMV0gPSAoVUlOVDgpKFZhbHVlID4+IDgpOwo+ID4g Cj4gPiArCj4gPiAKPiA+ICsgIHJldHVybiBWYWx1ZTsKPiA+IAo+ID4gK30KPiA+IAo+ID4gKwo+ ID4gCj4gPiArLyoqCj4gPiAKPiA+ICsgIFJlYWRzIGEgMjQtYml0IHZhbHVlIGZyb20gbWVtb3J5 IHRoYXQgbWF5IGJlIHVuYWxpZ25lZC4KPiA+IAo+ID4gKwo+ID4gCj4gPiArICBUaGlzIGZ1bmN0 aW9uIHJldHVybnMgdGhlIDI0LWJpdCB2YWx1ZSBwb2ludGVkIHRvIGJ5IEJ1ZmZlci4gVGhlIGZ1 bmN0aW9uCj4gPiAKPiA+ICsgIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVhZCBvcGVyYXRpb24gZG9l cyBub3QgcHJvZHVjZSBhbiBhbGlnbm1lbnQgZmF1bHQuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAg SWYgdGhlIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLgo+ID4gCj4gPiArCj4gPiAKPiA+ ICsgIEBwYXJhbVtpbl0gIEJ1ZmZlciAgVGhlIHBvaW50ZXIgdG8gYSAyNC1iaXQgdmFsdWUgdGhh dCBtYXkgYmUgdW5hbGlnbmVkLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIEByZXR1cm4gVGhlIDI0 LWJpdCB2YWx1ZSByZWFkIGZyb20gQnVmZmVyLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsqKi8KPiA+ IAo+ID4gK1VJTlQzMgo+ID4gCj4gPiArRUZJQVBJCj4gPiAKPiA+ICtSZWFkVW5hbGlnbmVkMjQg KAo+ID4gCj4gPiArICBJTiAgICAgIENPTlNUIFVJTlQzMiAgKkJ1ZmZlcgo+ID4gCj4gPiArICAp Cj4gPiAKPiA+ICt7Cj4gPiAKPiA+ICsgIEFTU0VSVCAoQnVmZmVyICE9IE5VTEwpOwo+ID4gCj4g PiArCj4gPiAKPiA+ICsgIHJldHVybiAoVUlOVDMyKShSZWFkVW5hbGlnbmVkMTYgKChVSU5UMTYg KilCdWZmZXIpIHwKPiA+IAo+ID4gKyAgICAgICAgICAgICAgICAgICgoKFVJTlQ4ICopQnVmZmVy KVsyXSA8PCAxNikpOwo+ID4gCj4gPiArfQo+ID4gCj4gPiArCj4gPiAKPiA+ICsvKioKPiA+IAo+ ID4gKyAgV3JpdGVzIGEgMjQtYml0IHZhbHVlIHRvIG1lbW9yeSB0aGF0IG1heSBiZSB1bmFsaWdu ZWQuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgVGhpcyBmdW5jdGlvbiB3cml0ZXMgdGhlIDI0LWJp dCB2YWx1ZSBzcGVjaWZpZWQgYnkgVmFsdWUgdG8gQnVmZmVyLiBWYWx1ZSBpcwo+ID4gCj4gPiAr ICByZXR1cm5lZC4gVGhlIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdGhhdCB0aGUgd3JpdGUgb3BlcmF0 aW9uIGRvZXMgbm90IHByb2R1Y2UKPiA+IAo+ID4gKyAgYW4gYWxpZ25tZW50IGZhdWx0Lgo+ID4g Cj4gPiArCj4gPiAKPiA+ICsgIElmIHRoZSBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4K PiA+IAo+ID4gKwo+ID4gCj4gPiArICBAcGFyYW1bb3V0XSAgQnVmZmVyICBUaGUgcG9pbnRlciB0 byBhIDI0LWJpdCB2YWx1ZSB0aGF0IG1heSBiZSB1bmFsaWduZWQuCj4gPiAKPiA+ICsgIEBwYXJh bVtpbl0gICBWYWx1ZSAgIDI0LWJpdCB2YWx1ZSB0byB3cml0ZSB0byBCdWZmZXIuCj4gPiAKPiA+ ICsKPiA+IAo+ID4gKyAgQHJldHVybiBUaGUgMjQtYml0IHZhbHVlIHRvIHdyaXRlIHRvIEJ1ZmZl ci4KPiA+IAo+ID4gKwo+ID4gCj4gPiArKiovCj4gPiAKPiA+ICtVSU5UMzIKPiA+IAo+ID4gK0VG SUFQSQo+ID4gCj4gPiArV3JpdGVVbmFsaWduZWQyNCAoCj4gPiAKPiA+ICsgIE9VVCAgICAgIFVJ TlQzMiAgKkJ1ZmZlciwKPiA+IAo+ID4gKyAgSU4gICAgICAgVUlOVDMyICBWYWx1ZQo+ID4gCj4g PiArICApCj4gPiAKPiA+ICt7Cj4gPiAKPiA+ICsgIEFTU0VSVCAoQnVmZmVyICE9IE5VTEwpOwo+ ID4gCj4gPiArCj4gPiAKPiA+ICsgIFdyaXRlVW5hbGlnbmVkMTYgKChVSU5UMTYgKilCdWZmZXIs IChVSU5UMTYpVmFsdWUpOwo+ID4gCj4gPiArICAqKFVJTlQ4ICopKChVSU5UMTYgKilCdWZmZXIg KyAxKSA9IChVSU5UOCkoVmFsdWUgPj4gMTYpOwo+ID4gCj4gPiArICByZXR1cm4gVmFsdWU7Cj4g PiAKPiA+ICt9Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKy8qKgo+ID4gCj4gPiArICBSZWFkcyBhIDMy LWJpdCB2YWx1ZSBmcm9tIG1lbW9yeSB0aGF0IG1heSBiZSB1bmFsaWduZWQuCj4gPiAKPiA+ICsK PiA+IAo+ID4gKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSAzMi1iaXQgdmFsdWUgcG9pbnRl ZCB0byBieSBCdWZmZXIuIFRoZSBmdW5jdGlvbgo+ID4gCj4gPiArICBndWFyYW50ZWVzIHRoYXQg dGhlIHJlYWQgb3BlcmF0aW9uIGRvZXMgbm90IHByb2R1Y2UgYW4gYWxpZ25tZW50IGZhdWx0Lgo+ ID4gCj4gPiArCj4gPiAKPiA+ICsgIElmIHRoZSBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NFUlQo KS4KPiA+IAo+ID4gKwo+ID4gCj4gPiArICBAcGFyYW1baW5dICBCdWZmZXIgIFRoZSBwb2ludGVy IHRvIGEgMzItYml0IHZhbHVlIHRoYXQgbWF5IGJlIHVuYWxpZ25lZC4KPiA+IAo+ID4gKwo+ID4g Cj4gPiArICBAcmV0dXJuIFRoZSAzMi1iaXQgdmFsdWUgcmVhZCBmcm9tIEJ1ZmZlci4KPiA+IAo+ ID4gKwo+ID4gCj4gPiArKiovCj4gPiAKPiA+ICtVSU5UMzIKPiA+IAo+ID4gK0VGSUFQSQo+ID4g Cj4gPiArUmVhZFVuYWxpZ25lZDMyICgKPiA+IAo+ID4gKyAgSU4gICAgICBDT05TVCBVSU5UMzIg ICpCdWZmZXIKPiA+IAo+ID4gKyAgKQo+ID4gCj4gPiArewo+ID4gCj4gPiArICBVSU5UMTYgIExv d2VyQnl0ZXM7Cj4gPiAKPiA+ICsgIFVJTlQxNiAgSGlnaGVyQnl0ZXM7Cj4gPiAKPiA+ICsKPiA+ IAo+ID4gKyAgQVNTRVJUIChCdWZmZXIgIT0gTlVMTCk7Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAg TG93ZXJCeXRlcyAgPSBSZWFkVW5hbGlnbmVkMTYgKChVSU5UMTYgKilCdWZmZXIpOwo+ID4gCj4g PiArICBIaWdoZXJCeXRlcyA9IFJlYWRVbmFsaWduZWQxNiAoKFVJTlQxNiAqKUJ1ZmZlciArIDEp Owo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIHJldHVybiAoVUlOVDMyKShMb3dlckJ5dGVzIHwgKEhp Z2hlckJ5dGVzIDw8IDE2KSk7Cj4gPiAKPiA+ICt9Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKy8qKgo+ ID4gCj4gPiArICBXcml0ZXMgYSAzMi1iaXQgdmFsdWUgdG8gbWVtb3J5IHRoYXQgbWF5IGJlIHVu YWxpZ25lZC4KPiA+IAo+ID4gKwo+ID4gCj4gPiArICBUaGlzIGZ1bmN0aW9uIHdyaXRlcyB0aGUg MzItYml0IHZhbHVlIHNwZWNpZmllZCBieSBWYWx1ZSB0byBCdWZmZXIuIFZhbHVlIGlzCj4gPiAK PiA+ICsgIHJldHVybmVkLiBUaGUgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IHRoZSB3cml0ZSBv cGVyYXRpb24gZG9lcyBub3QgcHJvZHVjZQo+ID4gCj4gPiArICBhbiBhbGlnbm1lbnQgZmF1bHQu Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgSWYgdGhlIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VS VCgpLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIEBwYXJhbVtvdXRdICBCdWZmZXIgIFRoZSBwb2lu dGVyIHRvIGEgMzItYml0IHZhbHVlIHRoYXQgbWF5IGJlIHVuYWxpZ25lZC4KPiA+IAo+ID4gKyAg QHBhcmFtW2luXSAgIFZhbHVlICAgMzItYml0IHZhbHVlIHRvIHdyaXRlIHRvIEJ1ZmZlci4KPiA+ IAo+ID4gKwo+ID4gCj4gPiArICBAcmV0dXJuIFRoZSAzMi1iaXQgdmFsdWUgdG8gd3JpdGUgdG8g QnVmZmVyLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsqKi8KPiA+IAo+ID4gK1VJTlQzMgo+ID4gCj4g PiArRUZJQVBJCj4gPiAKPiA+ICtXcml0ZVVuYWxpZ25lZDMyICgKPiA+IAo+ID4gKyAgT1VUICAg ICAgVUlOVDMyICAqQnVmZmVyLAo+ID4gCj4gPiArICBJTiAgICAgICBVSU5UMzIgIFZhbHVlCj4g PiAKPiA+ICsgICkKPiA+IAo+ID4gK3sKPiA+IAo+ID4gKyAgQVNTRVJUIChCdWZmZXIgIT0gTlVM TCk7Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgV3JpdGVVbmFsaWduZWQxNiAoKFVJTlQxNiAqKUJ1 ZmZlciwgKFVJTlQxNilWYWx1ZSk7Cj4gPiAKPiA+ICsgIFdyaXRlVW5hbGlnbmVkMTYgKChVSU5U MTYgKilCdWZmZXIgKyAxLCAoVUlOVDE2KShWYWx1ZSA+PiAxNikpOwo+ID4gCj4gPiArICByZXR1 cm4gVmFsdWU7Cj4gPiAKPiA+ICt9Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKy8qKgo+ID4gCj4gPiAr ICBSZWFkcyBhIDY0LWJpdCB2YWx1ZSBmcm9tIG1lbW9yeSB0aGF0IG1heSBiZSB1bmFsaWduZWQu Cj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSA2NC1iaXQg dmFsdWUgcG9pbnRlZCB0byBieSBCdWZmZXIuIFRoZSBmdW5jdGlvbgo+ID4gCj4gPiArICBndWFy YW50ZWVzIHRoYXQgdGhlIHJlYWQgb3BlcmF0aW9uIGRvZXMgbm90IHByb2R1Y2UgYW4gYWxpZ25t ZW50IGZhdWx0Lgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIElmIHRoZSBCdWZmZXIgaXMgTlVMTCwg dGhlbiBBU1NFUlQoKS4KPiA+IAo+ID4gKwo+ID4gCj4gPiArICBAcGFyYW1baW5dICBCdWZmZXIg IFRoZSBwb2ludGVyIHRvIGEgNjQtYml0IHZhbHVlIHRoYXQgbWF5IGJlIHVuYWxpZ25lZC4KPiA+ IAo+ID4gKwo+ID4gCj4gPiArICBAcmV0dXJuIFRoZSA2NC1iaXQgdmFsdWUgcmVhZCBmcm9tIEJ1 ZmZlci4KPiA+IAo+ID4gKwo+ID4gCj4gPiArKiovCj4gPiAKPiA+ICtVSU5UNjQKPiA+IAo+ID4g K0VGSUFQSQo+ID4gCj4gPiArUmVhZFVuYWxpZ25lZDY0ICgKPiA+IAo+ID4gKyAgSU4gICAgICBD T05TVCBVSU5UNjQgICpCdWZmZXIKPiA+IAo+ID4gKyAgKQo+ID4gCj4gPiArewo+ID4gCj4gPiAr ICBVSU5UMzIgIExvd2VyQnl0ZXM7Cj4gPiAKPiA+ICsgIFVJTlQzMiAgSGlnaGVyQnl0ZXM7Cj4g PiAKPiA+ICsKPiA+IAo+ID4gKyAgQVNTRVJUIChCdWZmZXIgIT0gTlVMTCk7Cj4gPiAKPiA+ICsK PiA+IAo+ID4gKyAgTG93ZXJCeXRlcyAgPSBSZWFkVW5hbGlnbmVkMzIgKChVSU5UMzIgKilCdWZm ZXIpOwo+ID4gCj4gPiArICBIaWdoZXJCeXRlcyA9IFJlYWRVbmFsaWduZWQzMiAoKFVJTlQzMiAq KUJ1ZmZlciArIDEpOwo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIHJldHVybiAoVUlOVDY0KShMb3dl ckJ5dGVzIHwgTFNoaWZ0VTY0IChIaWdoZXJCeXRlcywgMzIpKTsKPiA+IAo+ID4gK30KPiA+IAo+ ID4gKwo+ID4gCj4gPiArLyoqCj4gPiAKPiA+ICsgIFdyaXRlcyBhIDY0LWJpdCB2YWx1ZSB0byBt ZW1vcnkgdGhhdCBtYXkgYmUgdW5hbGlnbmVkLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIFRoaXMg ZnVuY3Rpb24gd3JpdGVzIHRoZSA2NC1iaXQgdmFsdWUgc3BlY2lmaWVkIGJ5IFZhbHVlIHRvIEJ1 ZmZlci4gVmFsdWUgaXMKPiA+IAo+ID4gKyAgcmV0dXJuZWQuIFRoZSBmdW5jdGlvbiBndWFyYW50 ZWVzIHRoYXQgdGhlIHdyaXRlIG9wZXJhdGlvbiBkb2VzIG5vdCBwcm9kdWNlCj4gPiAKPiA+ICsg IGFuIGFsaWdubWVudCBmYXVsdC4KPiA+IAo+ID4gKwo+ID4gCj4gPiArICBJZiB0aGUgQnVmZmVy IGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyAgQHBhcmFtW291 dF0gIEJ1ZmZlciAgVGhlIHBvaW50ZXIgdG8gYSA2NC1iaXQgdmFsdWUgdGhhdCBtYXkgYmUgdW5h bGlnbmVkLgo+ID4gCj4gPiArICBAcGFyYW1baW5dICAgVmFsdWUgICA2NC1iaXQgdmFsdWUgdG8g d3JpdGUgdG8gQnVmZmVyLgo+ID4gCj4gPiArCj4gPiAKPiA+ICsgIEByZXR1cm4gVGhlIDY0LWJp dCB2YWx1ZSB0byB3cml0ZSB0byBCdWZmZXIuCj4gPiAKPiA+ICsKPiA+IAo+ID4gKyoqLwo+ID4g Cj4gPiArVUlOVDY0Cj4gPiAKPiA+ICtFRklBUEkKPiA+IAo+ID4gK1dyaXRlVW5hbGlnbmVkNjQg KAo+ID4gCj4gPiArICBPVVQgICAgICBVSU5UNjQgICpCdWZmZXIsCj4gPiAKPiA+ICsgIElOICAg ICAgIFVJTlQ2NCAgVmFsdWUKPiA+IAo+ID4gKyAgKQo+ID4gCj4gPiArewo+ID4gCj4gPiArICBB U1NFUlQgKEJ1ZmZlciAhPSBOVUxMKTsKPiA+IAo+ID4gKwo+ID4gCj4gPiArICBXcml0ZVVuYWxp Z25lZDMyICgoVUlOVDMyICopQnVmZmVyLCAoVUlOVDMyKVZhbHVlKTsKPiA+IAo+ID4gKyAgV3Jp dGVVbmFsaWduZWQzMiAoKFVJTlQzMiAqKUJ1ZmZlciArIDEsIChVSU5UMzIpUlNoaWZ0VTY0IChW YWx1ZSwgMzIpKTsKPiA+IAo+ID4gKyAgcmV0dXJuIFZhbHVlOwo+ID4gCj4gPiArfQo+ID4gCj4g PiAtLQo+ID4gMi4yNy4wCj4gCj4gCj4gCj4gCj4gCj4gCg0KDQrmnKzpgq7ku7blj4rlhbbpmYTk u7blkKvmnInpvpnoiq/kuK3np5HnmoTllYbkuJrnp5jlr4bkv6Hmga/vvIzku4XpmZDkuo7lj5Hp gIHnu5nkuIrpnaLlnLDlnYDkuK3liJflh7rnmoTkuKrkurrmiJbnvqTnu4TjgILnpoHmraLku7vk vZXlhbbku5bkurrku6Xku7vkvZXlvaLlvI/kvb/nlKjvvIjljIXmi6zkvYbkuI3pmZDkuo7lhajp g6jmiJbpg6jliIblnLDms4TpnLLjgIHlpI3liLbmiJbmlaPlj5HvvInmnKzpgq7ku7blj4rlhbbp mYTku7bkuK3nmoTkv6Hmga/jgILlpoLmnpzmgqjplJnmlLbmnKzpgq7ku7bvvIzor7fmgqjnq4vl jbPnlLXor53miJbpgq7ku7bpgJrnn6Xlj5Hku7bkurrlubbliKDpmaTmnKzpgq7ku7bjgIIgDQpU aGlzIGVtYWlsIGFuZCBpdHMgYXR0YWNobWVudHMgY29udGFpbiBjb25maWRlbnRpYWwgaW5mb3Jt YXRpb24gZnJvbSBMb29uZ3NvbiBUZWNobm9sb2d5ICwgd2hpY2ggaXMgaW50ZW5kZWQgb25seSBm b3IgdGhlIHBlcnNvbiBvciBlbnRpdHkgd2hvc2UgYWRkcmVzcyBpcyBsaXN0ZWQgYWJvdmUuIEFu eSB1c2Ugb2YgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBoZXJlaW4gaW4gYW55IHdheSAoaW5j bHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8sIHRvdGFsIG9yIHBhcnRpYWwgZGlzY2xvc3VyZSwg cmVwcm9kdWN0aW9uIG9yIGRpc3NlbWluYXRpb24pIGJ5IHBlcnNvbnMgb3RoZXIgdGhhbiB0aGUg aW50ZW5kZWQgcmVjaXBpZW50KHMpIGlzIHByb2hpYml0ZWQuIElmIHlvdSByZWNlaXZlIHRoaXMg ZW1haWwgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBieSBwaG9uZSBvciBlbWFp bCBpbW1lZGlhdGVseSBhbmQgZGVsZXRlIGl0LiA=